From d3a98cf6cbc3bd0b9efc570f58e8812c03931c18 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 16 Oct 2018 10:08:48 +0200 Subject: Original 5.40 --- hacks/glx/Makefile.in | 3473 + hacks/glx/README | 10 + hacks/glx/antinspect.c | 704 + hacks/glx/antinspect.man | 56 + hacks/glx/antmaze.c | 1613 + hacks/glx/antmaze.man | 52 + hacks/glx/ants.h | 45 + hacks/glx/antspotlight.c | 799 + hacks/glx/antspotlight.man | 56 + hacks/glx/atlantis.c | 577 + hacks/glx/atlantis.h | 133 + hacks/glx/atlantis.man | 78 + hacks/glx/atunnel.c | 317 + hacks/glx/atunnel.man | 83 + hacks/glx/b_draw.c | 239 + hacks/glx/b_lockglue.c | 240 + hacks/glx/b_sphere.c | 219 + hacks/glx/blinkbox.c | 608 + hacks/glx/blinkbox.man | 73 + hacks/glx/blocktube.c | 457 + hacks/glx/blocktube.man | 73 + hacks/glx/boing.c | 658 + hacks/glx/boing.man | 105 + hacks/glx/bouncingcow.c | 519 + hacks/glx/bouncingcow.man | 73 + hacks/glx/boxed.c | 1370 + hacks/glx/boxed.h | 4116 + hacks/glx/boxed.man | 56 + hacks/glx/bubble3d.c | 281 + hacks/glx/bubble3d.h | 100 + hacks/glx/bubble3d.man | 62 + hacks/glx/buildlwo.c | 96 + hacks/glx/buildlwo.h | 43 + hacks/glx/cage.c | 480 + hacks/glx/cage.man | 61 + hacks/glx/carousel.c | 941 + hacks/glx/carousel.man | 109 + hacks/glx/chessgames.h | 343 + hacks/glx/chessmodels.c | 1738 + hacks/glx/chessmodels.h | 44 + hacks/glx/circuit.c | 2094 + hacks/glx/circuit.man | 72 + hacks/glx/cityflow.c | 545 + hacks/glx/cityflow.man | 77 + hacks/glx/companion.c | 592 + hacks/glx/companion_disc.c | 9593 ++ hacks/glx/companion_heart.c | 653 + hacks/glx/companion_quad.c | 389 + hacks/glx/companioncube.man | 85 + hacks/glx/cow_face.c | 341 + hacks/glx/cow_hide.c | 13055 +++ hacks/glx/cow_hoofs.c | 1037 + hacks/glx/cow_horns.c | 1025 + hacks/glx/cow_tail.c | 464 + hacks/glx/cow_udder.c | 1520 + hacks/glx/crackberg.c | 1468 + hacks/glx/crackberg.man | 123 + hacks/glx/crumbler.c | 875 + hacks/glx/crumbler.man | 77 + hacks/glx/cube21.c | 941 + hacks/glx/cube21.man | 147 + hacks/glx/cubenetic.c | 598 + hacks/glx/cubenetic.man | 89 + hacks/glx/cubestack.c | 462 + hacks/glx/cubestack.man | 72 + hacks/glx/cubestorm.c | 469 + hacks/glx/cubestorm.man | 77 + hacks/glx/cubetwist.c | 595 + hacks/glx/cubetwist.man | 80 + hacks/glx/cubicgrid.c | 269 + hacks/glx/cubicgrid.man | 83 + hacks/glx/curlicue.h | 261 + hacks/glx/dangerball.c | 364 + hacks/glx/dangerball.man | 72 + hacks/glx/discoball.c | 707 + hacks/glx/discoball.man | 72 + hacks/glx/dnalogo.c | 3639 + hacks/glx/dnapizza.h | 122 + hacks/glx/dolphin.c | 2061 + hacks/glx/dropshadow.c | 181 + hacks/glx/dropshadow.h | 40 + hacks/glx/dxf2gl.pl | 729 + hacks/glx/dymaxionmap-coords.c | 685 + hacks/glx/dymaxionmap-coords.h | 6 + hacks/glx/dymaxionmap.c | 1654 + hacks/glx/dymaxionmap.man | 117 + hacks/glx/e_textures.h | 1478 + hacks/glx/endgame.c | 971 + hacks/glx/endgame.man | 72 + hacks/glx/energystream.c | 534 + hacks/glx/energystream.man | 56 + hacks/glx/engine.c | 1006 + hacks/glx/engine.man | 80 + hacks/glx/erase-gl.c | 38 + hacks/glx/esper.c | 2412 + hacks/glx/esper.man | 68 + hacks/glx/extrusion-helix2.c | 47 + hacks/glx/extrusion-helix3.c | 46 + hacks/glx/extrusion-helix4.c | 63 + hacks/glx/extrusion-joinoffset.c | 148 + hacks/glx/extrusion-screw.c | 114 + hacks/glx/extrusion-taper.c | 218 + hacks/glx/extrusion-twistoid.c | 215 + hacks/glx/extrusion.c | 556 + hacks/glx/extrusion.h | 55 + hacks/glx/extrusion.man | 71 + hacks/glx/flipflop.c | 859 + hacks/glx/flipflop.man | 95 + hacks/glx/flipscreen3d.c | 518 + hacks/glx/flipscreen3d.man | 61 + hacks/glx/fliptext.c | 1001 + hacks/glx/fliptext.man | 114 + hacks/glx/flurry-smoke.c | 1441 + hacks/glx/flurry-spark.c | 285 + hacks/glx/flurry-star.c | 106 + hacks/glx/flurry-texture.c | 224 + hacks/glx/flurry.c | 549 + hacks/glx/flurry.h | 299 + hacks/glx/flurry.man | 73 + hacks/glx/flyingtoasters.c | 868 + hacks/glx/flyingtoasters.man | 86 + hacks/glx/fps-gl.c | 98 + hacks/glx/gears.c | 938 + hacks/glx/gears.man | 79 + hacks/glx/geodesic.c | 816 + hacks/glx/geodesic.man | 79 + hacks/glx/geodesicgears.c | 1803 + hacks/glx/geodesicgears.man | 78 + hacks/glx/gflux.c | 803 + hacks/glx/gflux.man | 111 + hacks/glx/glblur.c | 610 + hacks/glx/glblur.man | 76 + hacks/glx/glcells.c | 1388 + hacks/glx/glcells.man | 97 + hacks/glx/gleidescope.c | 1624 + hacks/glx/gleidescope.man | 77 + hacks/glx/glforestfire.c | 1097 + hacks/glx/glforestfire.man | 130 + hacks/glx/glhanoi.c | 2086 + hacks/glx/glhanoi.man | 83 + hacks/glx/glknots.c | 445 + hacks/glx/glknots.man | 81 + hacks/glx/gllist.c | 127 + hacks/glx/gllist.h | 44 + hacks/glx/glmatrix.c | 1068 + hacks/glx/glmatrix.man | 116 + hacks/glx/glplanet.c | 847 + hacks/glx/glplanet.man | 75 + hacks/glx/glschool.c | 216 + hacks/glx/glschool.h | 17 + hacks/glx/glschool.man | 126 + hacks/glx/glschool_alg.c | 364 + hacks/glx/glschool_alg.h | 126 + hacks/glx/glschool_gl.c | 274 + hacks/glx/glschool_gl.h | 51 + hacks/glx/glslideshow.c | 1222 + hacks/glx/glslideshow.man | 131 + hacks/glx/glsnake.c | 2694 + hacks/glx/glsnake.man | 98 + hacks/glx/gltext.c | 660 + hacks/glx/gltext.man | 152 + hacks/glx/gltrackball.c | 337 + hacks/glx/gltrackball.h | 72 + hacks/glx/glut_mroman.h | 2456 + hacks/glx/glut_roman.h | 2455 + hacks/glx/glut_stroke.c | 66 + hacks/glx/glut_swidth.c | 77 + hacks/glx/glutstroke.h | 47 + hacks/glx/grab-ximage.c | 813 + hacks/glx/grab-ximage.h | 76 + hacks/glx/hexstrut.c | 509 + hacks/glx/hexstrut.man | 77 + hacks/glx/hilbert.c | 1144 + hacks/glx/hilbert.man | 103 + hacks/glx/hydrostat.c | 809 + hacks/glx/hydrostat.man | 103 + hacks/glx/hypertorus.c | 1016 + hacks/glx/hypertorus.man | 188 + hacks/glx/hypnowheel.c | 322 + hacks/glx/hypnowheel.man | 80 + hacks/glx/involute.c | 998 + hacks/glx/involute.h | 78 + hacks/glx/jigglypuff.c | 1076 + hacks/glx/jigglypuff.man | 121 + hacks/glx/jigsaw.c | 1509 + hacks/glx/jigsaw.man | 90 + hacks/glx/juggler3d.c | 3022 + hacks/glx/juggler3d.man | 183 + hacks/glx/kaleidocycle.c | 574 + hacks/glx/kaleidocycle.man | 96 + hacks/glx/klein.c | 2099 + hacks/glx/klein.man | 308 + hacks/glx/lament.c | 1786 + hacks/glx/lament.dxf | 163404 ++++++++++++++++++++++++++++ hacks/glx/lament.man | 68 + hacks/glx/lament_model.c | 16258 +++ hacks/glx/lavalite.c | 1539 + hacks/glx/lavalite.man | 160 + hacks/glx/lockward.c | 970 + hacks/glx/lockward.man | 79 + hacks/glx/marching.c | 645 + hacks/glx/marching.h | 48 + hacks/glx/maze3d.c | 1955 + hacks/glx/maze3d.man | 116 + hacks/glx/menger.c | 562 + hacks/glx/menger.man | 78 + hacks/glx/mirrorblob.c | 1841 + hacks/glx/mirrorblob.man | 107 + hacks/glx/moebius.c | 788 + hacks/glx/moebius.man | 65 + hacks/glx/moebiusgears.c | 437 + hacks/glx/moebiusgears.man | 86 + hacks/glx/molecule.c | 1682 + hacks/glx/molecule.man | 160 + hacks/glx/molecules.sh | 23 + hacks/glx/morph3d.c | 837 + hacks/glx/morph3d.man | 57 + hacks/glx/noof.c | 519 + hacks/glx/noof.man | 52 + hacks/glx/normals.c | 52 + hacks/glx/normals.h | 48 + hacks/glx/peepers.c | 1455 + hacks/glx/peepers.man | 80 + hacks/glx/photopile.c | 833 + hacks/glx/photopile.man | 113 + hacks/glx/pinion.c | 1470 + hacks/glx/pinion.man | 82 + hacks/glx/pipeobjs.c | 3262 + hacks/glx/pipes.c | 1220 + hacks/glx/pipes.man | 85 + hacks/glx/polyhedra-gl.c | 683 + hacks/glx/polyhedra.c | 2457 + hacks/glx/polyhedra.h | 52 + hacks/glx/polyhedra.man | 124 + hacks/glx/polytopes.c | 3189 + hacks/glx/polytopes.man | 207 + hacks/glx/projectiveplane.c | 1550 + hacks/glx/projectiveplane.man | 400 + hacks/glx/providence.c | 799 + hacks/glx/providence.man | 66 + hacks/glx/pulsar.c | 515 + hacks/glx/pulsar.man | 102 + hacks/glx/quasicrystal.c | 478 + hacks/glx/quasicrystal.man | 83 + hacks/glx/queens.c | 610 + hacks/glx/queens.man | 66 + hacks/glx/quickhull.c | 1368 + hacks/glx/quickhull.h | 56 + hacks/glx/raverhoop.c | 767 + hacks/glx/raverhoop.man | 83 + hacks/glx/razzledazzle.c | 725 + hacks/glx/razzledazzle.man | 76 + hacks/glx/robot-wireframe.c | 154 + hacks/glx/robot-wireframe.dxf | 1160 + hacks/glx/robot.c | 18539 ++++ hacks/glx/robot.dxf | 185616 ++++++++++++++++++++++++++++++++ hacks/glx/romanboy.c | 1552 + hacks/glx/romanboy.man | 390 + hacks/glx/rotator.c | 274 + hacks/glx/rotator.h | 60 + hacks/glx/rubik.c | 2140 + hacks/glx/rubik.man | 69 + hacks/glx/rubikblocks.c | 633 + hacks/glx/rubikblocks.man | 117 + hacks/glx/s1_1.c | 1733 + hacks/glx/s1_2.c | 1733 + hacks/glx/s1_3.c | 1733 + hacks/glx/s1_4.c | 1733 + hacks/glx/s1_5.c | 1733 + hacks/glx/s1_6.c | 1733 + hacks/glx/s1_b.c | 505 + hacks/glx/sballs.c | 823 + hacks/glx/sballs.man | 125 + hacks/glx/seccam.c | 1388 + hacks/glx/seccam.dxf | 13606 +++ hacks/glx/shark.c | 1395 + hacks/glx/ships.c | 4976 + hacks/glx/ships.dxf | 49148 +++++++++ hacks/glx/sierpinski3d.c | 581 + hacks/glx/sierpinski3d.man | 67 + hacks/glx/skytentacles.c | 1103 + hacks/glx/skytentacles.man | 102 + hacks/glx/sonar-icmp.c | 1703 + hacks/glx/sonar-sim.c | 112 + hacks/glx/sonar.c | 1258 + hacks/glx/sonar.h | 71 + hacks/glx/sonar.man | 169 + hacks/glx/sphere.c | 155 + hacks/glx/sphere.h | 24 + hacks/glx/spheremonics.c | 882 + hacks/glx/spheremonics.man | 92 + hacks/glx/splitflap.c | 1408 + hacks/glx/splitflap.dxf | 1658 + hacks/glx/splitflap.man | 98 + hacks/glx/splitflap_obj.c | 200 + hacks/glx/splodesic.c | 640 + hacks/glx/splodesic.man | 69 + hacks/glx/sproingies.c | 906 + hacks/glx/sproingies.h | 43 + hacks/glx/sproingies.man | 68 + hacks/glx/sproingiewrap.c | 231 + hacks/glx/stairs.c | 589 + hacks/glx/stairs.man | 56 + hacks/glx/starwars.c | 1075 + hacks/glx/starwars.h | 363 + hacks/glx/starwars.man | 181 + hacks/glx/starwars.txt | 415 + hacks/glx/stonerview-move.c | 147 + hacks/glx/stonerview-move.h | 32 + hacks/glx/stonerview-osc.c | 341 + hacks/glx/stonerview-osc.h | 175 + hacks/glx/stonerview-view.c | 134 + hacks/glx/stonerview.c | 154 + hacks/glx/stonerview.h | 59 + hacks/glx/stonerview.man | 53 + hacks/glx/superquadrics.c | 807 + hacks/glx/superquadrics.man | 70 + hacks/glx/surfaces.c | 648 + hacks/glx/surfaces.man | 127 + hacks/glx/swim.c | 232 + hacks/glx/tangram.c | 1067 + hacks/glx/tangram.man | 67 + hacks/glx/tangram_shapes.c | 240 + hacks/glx/tangram_shapes.h | 15 + hacks/glx/teapot.c | 285 + hacks/glx/teapot.h | 7 + hacks/glx/teapot2.h | 6330 ++ hacks/glx/texfont.c | 961 + hacks/glx/texfont.h | 72 + hacks/glx/timetunnel.c | 1240 + hacks/glx/timetunnel.man | 105 + hacks/glx/toast.c | 190 + hacks/glx/toast.dxf | 1814 + hacks/glx/toast2.c | 214 + hacks/glx/toast2.dxf | 2054 + hacks/glx/toaster.c | 376 + hacks/glx/toaster.dxf | 3674 + hacks/glx/toaster_base.c | 130 + hacks/glx/toaster_base.dxf | 1214 + hacks/glx/toaster_handle.c | 64 + hacks/glx/toaster_handle.dxf | 554 + hacks/glx/toaster_handle2.c | 40 + hacks/glx/toaster_handle2.dxf | 314 + hacks/glx/toaster_jet.c | 178 + hacks/glx/toaster_jet.dxf | 1694 + hacks/glx/toaster_knob.c | 76 + hacks/glx/toaster_knob.dxf | 674 + hacks/glx/toaster_slots.c | 106 + hacks/glx/toaster_slots.dxf | 974 + hacks/glx/toaster_wing.c | 43 + hacks/glx/toaster_wing.dxf | 344 + hacks/glx/topblock.c | 883 + hacks/glx/topblock.h | 45 + hacks/glx/topblock.man | 170 + hacks/glx/trackball.c | 331 + hacks/glx/trackball.h | 82 + hacks/glx/tronbit.c | 536 + hacks/glx/tronbit.man | 79 + hacks/glx/tronbit_idle1.c | 247 + hacks/glx/tronbit_idle2.c | 175 + hacks/glx/tronbit_no.c | 1087 + hacks/glx/tronbit_yes.c | 31 + hacks/glx/tube.c | 403 + hacks/glx/tube.h | 32 + hacks/glx/tunnel_draw.c | 512 + hacks/glx/tunnel_draw.h | 11 + hacks/glx/unicrud.c | 961 + hacks/glx/unicrud.man | 74 + hacks/glx/unknownpleasures.c | 486 + hacks/glx/unknownpleasures.man | 74 + hacks/glx/vigilance.c | 1150 + hacks/glx/vigilance.man | 57 + hacks/glx/voronoi.c | 543 + hacks/glx/voronoi.man | 88 + hacks/glx/vrml2gl.pl | 361 + hacks/glx/wfront2gl.pl | 361 + hacks/glx/whale.c | 1887 + hacks/glx/winduprobot.c | 2483 + hacks/glx/winduprobot.man | 85 + hacks/glx/xlock-gl-utils.c | 230 + hacks/glx/xscreensaver-gl-helper.c | 74 + hacks/glx/xscreensaver-gl-helper.man | 33 + hacks/glx/zalgo.txt | 30 + 383 files changed, 693076 insertions(+) create mode 100644 hacks/glx/Makefile.in create mode 100644 hacks/glx/README create mode 100644 hacks/glx/antinspect.c create mode 100644 hacks/glx/antinspect.man create mode 100644 hacks/glx/antmaze.c create mode 100644 hacks/glx/antmaze.man create mode 100644 hacks/glx/ants.h create mode 100644 hacks/glx/antspotlight.c create mode 100644 hacks/glx/antspotlight.man create mode 100644 hacks/glx/atlantis.c create mode 100644 hacks/glx/atlantis.h create mode 100644 hacks/glx/atlantis.man create mode 100644 hacks/glx/atunnel.c create mode 100644 hacks/glx/atunnel.man create mode 100644 hacks/glx/b_draw.c create mode 100644 hacks/glx/b_lockglue.c create mode 100644 hacks/glx/b_sphere.c create mode 100644 hacks/glx/blinkbox.c create mode 100644 hacks/glx/blinkbox.man create mode 100644 hacks/glx/blocktube.c create mode 100644 hacks/glx/blocktube.man create mode 100644 hacks/glx/boing.c create mode 100644 hacks/glx/boing.man create mode 100644 hacks/glx/bouncingcow.c create mode 100644 hacks/glx/bouncingcow.man create mode 100644 hacks/glx/boxed.c create mode 100644 hacks/glx/boxed.h create mode 100644 hacks/glx/boxed.man create mode 100644 hacks/glx/bubble3d.c create mode 100644 hacks/glx/bubble3d.h create mode 100644 hacks/glx/bubble3d.man create mode 100644 hacks/glx/buildlwo.c create mode 100644 hacks/glx/buildlwo.h create mode 100644 hacks/glx/cage.c create mode 100644 hacks/glx/cage.man create mode 100644 hacks/glx/carousel.c create mode 100644 hacks/glx/carousel.man create mode 100644 hacks/glx/chessgames.h create mode 100644 hacks/glx/chessmodels.c create mode 100644 hacks/glx/chessmodels.h create mode 100644 hacks/glx/circuit.c create mode 100644 hacks/glx/circuit.man create mode 100644 hacks/glx/cityflow.c create mode 100644 hacks/glx/cityflow.man create mode 100644 hacks/glx/companion.c create mode 100644 hacks/glx/companion_disc.c create mode 100644 hacks/glx/companion_heart.c create mode 100644 hacks/glx/companion_quad.c create mode 100644 hacks/glx/companioncube.man create mode 100644 hacks/glx/cow_face.c create mode 100644 hacks/glx/cow_hide.c create mode 100644 hacks/glx/cow_hoofs.c create mode 100644 hacks/glx/cow_horns.c create mode 100644 hacks/glx/cow_tail.c create mode 100644 hacks/glx/cow_udder.c create mode 100644 hacks/glx/crackberg.c create mode 100644 hacks/glx/crackberg.man create mode 100644 hacks/glx/crumbler.c create mode 100644 hacks/glx/crumbler.man create mode 100644 hacks/glx/cube21.c create mode 100644 hacks/glx/cube21.man create mode 100644 hacks/glx/cubenetic.c create mode 100644 hacks/glx/cubenetic.man create mode 100644 hacks/glx/cubestack.c create mode 100644 hacks/glx/cubestack.man create mode 100644 hacks/glx/cubestorm.c create mode 100644 hacks/glx/cubestorm.man create mode 100644 hacks/glx/cubetwist.c create mode 100644 hacks/glx/cubetwist.man create mode 100644 hacks/glx/cubicgrid.c create mode 100644 hacks/glx/cubicgrid.man create mode 100644 hacks/glx/curlicue.h create mode 100644 hacks/glx/dangerball.c create mode 100644 hacks/glx/dangerball.man create mode 100644 hacks/glx/discoball.c create mode 100644 hacks/glx/discoball.man create mode 100644 hacks/glx/dnalogo.c create mode 100644 hacks/glx/dnapizza.h create mode 100644 hacks/glx/dolphin.c create mode 100644 hacks/glx/dropshadow.c create mode 100644 hacks/glx/dropshadow.h create mode 100755 hacks/glx/dxf2gl.pl create mode 100644 hacks/glx/dymaxionmap-coords.c create mode 100644 hacks/glx/dymaxionmap-coords.h create mode 100644 hacks/glx/dymaxionmap.c create mode 100644 hacks/glx/dymaxionmap.man create mode 100644 hacks/glx/e_textures.h create mode 100644 hacks/glx/endgame.c create mode 100644 hacks/glx/endgame.man create mode 100644 hacks/glx/energystream.c create mode 100644 hacks/glx/energystream.man create mode 100644 hacks/glx/engine.c create mode 100644 hacks/glx/engine.man create mode 100644 hacks/glx/erase-gl.c create mode 100644 hacks/glx/esper.c create mode 100644 hacks/glx/esper.man create mode 100644 hacks/glx/extrusion-helix2.c create mode 100644 hacks/glx/extrusion-helix3.c create mode 100644 hacks/glx/extrusion-helix4.c create mode 100644 hacks/glx/extrusion-joinoffset.c create mode 100644 hacks/glx/extrusion-screw.c create mode 100644 hacks/glx/extrusion-taper.c create mode 100644 hacks/glx/extrusion-twistoid.c create mode 100644 hacks/glx/extrusion.c create mode 100644 hacks/glx/extrusion.h create mode 100644 hacks/glx/extrusion.man create mode 100644 hacks/glx/flipflop.c create mode 100644 hacks/glx/flipflop.man create mode 100644 hacks/glx/flipscreen3d.c create mode 100644 hacks/glx/flipscreen3d.man create mode 100644 hacks/glx/fliptext.c create mode 100644 hacks/glx/fliptext.man create mode 100644 hacks/glx/flurry-smoke.c create mode 100644 hacks/glx/flurry-spark.c create mode 100644 hacks/glx/flurry-star.c create mode 100644 hacks/glx/flurry-texture.c create mode 100644 hacks/glx/flurry.c create mode 100644 hacks/glx/flurry.h create mode 100644 hacks/glx/flurry.man create mode 100644 hacks/glx/flyingtoasters.c create mode 100644 hacks/glx/flyingtoasters.man create mode 100644 hacks/glx/fps-gl.c create mode 100644 hacks/glx/gears.c create mode 100644 hacks/glx/gears.man create mode 100644 hacks/glx/geodesic.c create mode 100644 hacks/glx/geodesic.man create mode 100644 hacks/glx/geodesicgears.c create mode 100644 hacks/glx/geodesicgears.man create mode 100644 hacks/glx/gflux.c create mode 100644 hacks/glx/gflux.man create mode 100644 hacks/glx/glblur.c create mode 100644 hacks/glx/glblur.man create mode 100644 hacks/glx/glcells.c create mode 100644 hacks/glx/glcells.man create mode 100644 hacks/glx/gleidescope.c create mode 100644 hacks/glx/gleidescope.man create mode 100644 hacks/glx/glforestfire.c create mode 100644 hacks/glx/glforestfire.man create mode 100644 hacks/glx/glhanoi.c create mode 100644 hacks/glx/glhanoi.man create mode 100644 hacks/glx/glknots.c create mode 100644 hacks/glx/glknots.man create mode 100644 hacks/glx/gllist.c create mode 100644 hacks/glx/gllist.h create mode 100644 hacks/glx/glmatrix.c create mode 100644 hacks/glx/glmatrix.man create mode 100644 hacks/glx/glplanet.c create mode 100644 hacks/glx/glplanet.man create mode 100644 hacks/glx/glschool.c create mode 100644 hacks/glx/glschool.h create mode 100644 hacks/glx/glschool.man create mode 100644 hacks/glx/glschool_alg.c create mode 100644 hacks/glx/glschool_alg.h create mode 100644 hacks/glx/glschool_gl.c create mode 100644 hacks/glx/glschool_gl.h create mode 100644 hacks/glx/glslideshow.c create mode 100644 hacks/glx/glslideshow.man create mode 100644 hacks/glx/glsnake.c create mode 100644 hacks/glx/glsnake.man create mode 100644 hacks/glx/gltext.c create mode 100644 hacks/glx/gltext.man create mode 100644 hacks/glx/gltrackball.c create mode 100644 hacks/glx/gltrackball.h create mode 100644 hacks/glx/glut_mroman.h create mode 100644 hacks/glx/glut_roman.h create mode 100644 hacks/glx/glut_stroke.c create mode 100644 hacks/glx/glut_swidth.c create mode 100644 hacks/glx/glutstroke.h create mode 100644 hacks/glx/grab-ximage.c create mode 100644 hacks/glx/grab-ximage.h create mode 100644 hacks/glx/hexstrut.c create mode 100644 hacks/glx/hexstrut.man create mode 100644 hacks/glx/hilbert.c create mode 100644 hacks/glx/hilbert.man create mode 100644 hacks/glx/hydrostat.c create mode 100644 hacks/glx/hydrostat.man create mode 100644 hacks/glx/hypertorus.c create mode 100644 hacks/glx/hypertorus.man create mode 100644 hacks/glx/hypnowheel.c create mode 100644 hacks/glx/hypnowheel.man create mode 100644 hacks/glx/involute.c create mode 100644 hacks/glx/involute.h create mode 100644 hacks/glx/jigglypuff.c create mode 100644 hacks/glx/jigglypuff.man create mode 100644 hacks/glx/jigsaw.c create mode 100644 hacks/glx/jigsaw.man create mode 100644 hacks/glx/juggler3d.c create mode 100644 hacks/glx/juggler3d.man create mode 100644 hacks/glx/kaleidocycle.c create mode 100644 hacks/glx/kaleidocycle.man create mode 100644 hacks/glx/klein.c create mode 100644 hacks/glx/klein.man create mode 100644 hacks/glx/lament.c create mode 100644 hacks/glx/lament.dxf create mode 100644 hacks/glx/lament.man create mode 100644 hacks/glx/lament_model.c create mode 100644 hacks/glx/lavalite.c create mode 100644 hacks/glx/lavalite.man create mode 100644 hacks/glx/lockward.c create mode 100644 hacks/glx/lockward.man create mode 100644 hacks/glx/marching.c create mode 100644 hacks/glx/marching.h create mode 100755 hacks/glx/maze3d.c create mode 100755 hacks/glx/maze3d.man create mode 100644 hacks/glx/menger.c create mode 100644 hacks/glx/menger.man create mode 100644 hacks/glx/mirrorblob.c create mode 100644 hacks/glx/mirrorblob.man create mode 100644 hacks/glx/moebius.c create mode 100644 hacks/glx/moebius.man create mode 100644 hacks/glx/moebiusgears.c create mode 100644 hacks/glx/moebiusgears.man create mode 100644 hacks/glx/molecule.c create mode 100644 hacks/glx/molecule.man create mode 100755 hacks/glx/molecules.sh create mode 100644 hacks/glx/morph3d.c create mode 100644 hacks/glx/morph3d.man create mode 100644 hacks/glx/noof.c create mode 100644 hacks/glx/noof.man create mode 100644 hacks/glx/normals.c create mode 100644 hacks/glx/normals.h create mode 100644 hacks/glx/peepers.c create mode 100644 hacks/glx/peepers.man create mode 100644 hacks/glx/photopile.c create mode 100644 hacks/glx/photopile.man create mode 100644 hacks/glx/pinion.c create mode 100644 hacks/glx/pinion.man create mode 100644 hacks/glx/pipeobjs.c create mode 100644 hacks/glx/pipes.c create mode 100644 hacks/glx/pipes.man create mode 100644 hacks/glx/polyhedra-gl.c create mode 100644 hacks/glx/polyhedra.c create mode 100644 hacks/glx/polyhedra.h create mode 100644 hacks/glx/polyhedra.man create mode 100644 hacks/glx/polytopes.c create mode 100644 hacks/glx/polytopes.man create mode 100644 hacks/glx/projectiveplane.c create mode 100644 hacks/glx/projectiveplane.man create mode 100644 hacks/glx/providence.c create mode 100644 hacks/glx/providence.man create mode 100644 hacks/glx/pulsar.c create mode 100644 hacks/glx/pulsar.man create mode 100644 hacks/glx/quasicrystal.c create mode 100644 hacks/glx/quasicrystal.man create mode 100644 hacks/glx/queens.c create mode 100644 hacks/glx/queens.man create mode 100644 hacks/glx/quickhull.c create mode 100644 hacks/glx/quickhull.h create mode 100644 hacks/glx/raverhoop.c create mode 100644 hacks/glx/raverhoop.man create mode 100644 hacks/glx/razzledazzle.c create mode 100644 hacks/glx/razzledazzle.man create mode 100644 hacks/glx/robot-wireframe.c create mode 100644 hacks/glx/robot-wireframe.dxf create mode 100644 hacks/glx/robot.c create mode 100644 hacks/glx/robot.dxf create mode 100644 hacks/glx/romanboy.c create mode 100644 hacks/glx/romanboy.man create mode 100644 hacks/glx/rotator.c create mode 100644 hacks/glx/rotator.h create mode 100644 hacks/glx/rubik.c create mode 100644 hacks/glx/rubik.man create mode 100644 hacks/glx/rubikblocks.c create mode 100644 hacks/glx/rubikblocks.man create mode 100644 hacks/glx/s1_1.c create mode 100644 hacks/glx/s1_2.c create mode 100644 hacks/glx/s1_3.c create mode 100644 hacks/glx/s1_4.c create mode 100644 hacks/glx/s1_5.c create mode 100644 hacks/glx/s1_6.c create mode 100644 hacks/glx/s1_b.c create mode 100644 hacks/glx/sballs.c create mode 100644 hacks/glx/sballs.man create mode 100644 hacks/glx/seccam.c create mode 100644 hacks/glx/seccam.dxf create mode 100644 hacks/glx/shark.c create mode 100644 hacks/glx/ships.c create mode 100644 hacks/glx/ships.dxf create mode 100644 hacks/glx/sierpinski3d.c create mode 100644 hacks/glx/sierpinski3d.man create mode 100644 hacks/glx/skytentacles.c create mode 100644 hacks/glx/skytentacles.man create mode 100644 hacks/glx/sonar-icmp.c create mode 100644 hacks/glx/sonar-sim.c create mode 100644 hacks/glx/sonar.c create mode 100644 hacks/glx/sonar.h create mode 100644 hacks/glx/sonar.man create mode 100644 hacks/glx/sphere.c create mode 100644 hacks/glx/sphere.h create mode 100644 hacks/glx/spheremonics.c create mode 100644 hacks/glx/spheremonics.man create mode 100644 hacks/glx/splitflap.c create mode 100644 hacks/glx/splitflap.dxf create mode 100644 hacks/glx/splitflap.man create mode 100644 hacks/glx/splitflap_obj.c create mode 100644 hacks/glx/splodesic.c create mode 100644 hacks/glx/splodesic.man create mode 100644 hacks/glx/sproingies.c create mode 100644 hacks/glx/sproingies.h create mode 100644 hacks/glx/sproingies.man create mode 100644 hacks/glx/sproingiewrap.c create mode 100644 hacks/glx/stairs.c create mode 100644 hacks/glx/stairs.man create mode 100644 hacks/glx/starwars.c create mode 100644 hacks/glx/starwars.h create mode 100644 hacks/glx/starwars.man create mode 100644 hacks/glx/starwars.txt create mode 100644 hacks/glx/stonerview-move.c create mode 100644 hacks/glx/stonerview-move.h create mode 100644 hacks/glx/stonerview-osc.c create mode 100644 hacks/glx/stonerview-osc.h create mode 100644 hacks/glx/stonerview-view.c create mode 100644 hacks/glx/stonerview.c create mode 100644 hacks/glx/stonerview.h create mode 100644 hacks/glx/stonerview.man create mode 100644 hacks/glx/superquadrics.c create mode 100644 hacks/glx/superquadrics.man create mode 100644 hacks/glx/surfaces.c create mode 100644 hacks/glx/surfaces.man create mode 100644 hacks/glx/swim.c create mode 100644 hacks/glx/tangram.c create mode 100644 hacks/glx/tangram.man create mode 100644 hacks/glx/tangram_shapes.c create mode 100644 hacks/glx/tangram_shapes.h create mode 100644 hacks/glx/teapot.c create mode 100644 hacks/glx/teapot.h create mode 100644 hacks/glx/teapot2.h create mode 100644 hacks/glx/texfont.c create mode 100644 hacks/glx/texfont.h create mode 100644 hacks/glx/timetunnel.c create mode 100644 hacks/glx/timetunnel.man create mode 100644 hacks/glx/toast.c create mode 100644 hacks/glx/toast.dxf create mode 100644 hacks/glx/toast2.c create mode 100644 hacks/glx/toast2.dxf create mode 100644 hacks/glx/toaster.c create mode 100644 hacks/glx/toaster.dxf create mode 100644 hacks/glx/toaster_base.c create mode 100644 hacks/glx/toaster_base.dxf create mode 100644 hacks/glx/toaster_handle.c create mode 100644 hacks/glx/toaster_handle.dxf create mode 100644 hacks/glx/toaster_handle2.c create mode 100644 hacks/glx/toaster_handle2.dxf create mode 100644 hacks/glx/toaster_jet.c create mode 100644 hacks/glx/toaster_jet.dxf create mode 100644 hacks/glx/toaster_knob.c create mode 100644 hacks/glx/toaster_knob.dxf create mode 100644 hacks/glx/toaster_slots.c create mode 100644 hacks/glx/toaster_slots.dxf create mode 100644 hacks/glx/toaster_wing.c create mode 100644 hacks/glx/toaster_wing.dxf create mode 100644 hacks/glx/topblock.c create mode 100644 hacks/glx/topblock.h create mode 100644 hacks/glx/topblock.man create mode 100644 hacks/glx/trackball.c create mode 100644 hacks/glx/trackball.h create mode 100644 hacks/glx/tronbit.c create mode 100644 hacks/glx/tronbit.man create mode 100644 hacks/glx/tronbit_idle1.c create mode 100644 hacks/glx/tronbit_idle2.c create mode 100644 hacks/glx/tronbit_no.c create mode 100644 hacks/glx/tronbit_yes.c create mode 100644 hacks/glx/tube.c create mode 100644 hacks/glx/tube.h create mode 100644 hacks/glx/tunnel_draw.c create mode 100644 hacks/glx/tunnel_draw.h create mode 100644 hacks/glx/unicrud.c create mode 100644 hacks/glx/unicrud.man create mode 100644 hacks/glx/unknownpleasures.c create mode 100644 hacks/glx/unknownpleasures.man create mode 100644 hacks/glx/vigilance.c create mode 100644 hacks/glx/vigilance.man create mode 100644 hacks/glx/voronoi.c create mode 100644 hacks/glx/voronoi.man create mode 100755 hacks/glx/vrml2gl.pl create mode 100755 hacks/glx/wfront2gl.pl create mode 100644 hacks/glx/whale.c create mode 100644 hacks/glx/winduprobot.c create mode 100644 hacks/glx/winduprobot.man create mode 100644 hacks/glx/xlock-gl-utils.c create mode 100644 hacks/glx/xscreensaver-gl-helper.c create mode 100644 hacks/glx/xscreensaver-gl-helper.man create mode 100644 hacks/glx/zalgo.txt (limited to 'hacks/glx') diff --git a/hacks/glx/Makefile.in b/hacks/glx/Makefile.in new file mode 100644 index 0000000..e3fa617 --- /dev/null +++ b/hacks/glx/Makefile.in @@ -0,0 +1,3473 @@ +# hacks/glx/Makefile.in --- xscreensaver, Copyright (c) 1999-2018 +# by Jamie Zawinski. +# the `../../configure' script generates `hacks/glx/Makefile' from this file. + +@SET_MAKE@ +.SUFFIXES: +.SUFFIXES: .c .o + +srcdir = @srcdir@ +VPATH = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. + +install_prefix = +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +mandir = @mandir@ +libexecdir = @libexecdir@ +mansuffix = 6 +manNdir = $(mandir)/man$(mansuffix) + +HACKDIR = @HACKDIR@ +HACK_CONF_DIR = @HACK_CONF_DIR@ + +CC = @CC@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ +DEFS = -DSTANDALONE -DUSE_GL @DEFS@ +LIBS = @LIBS@ +PERL = @PERL@ + +DEPEND = @DEPEND@ +DEPEND_FLAGS = @DEPEND_FLAGS@ +DEPEND_DEFINES = @DEPEND_DEFINES@ + +SHELL = /bin/sh +INSTALL = @INSTALL@ +SUID_FLAGS = -o root -m 4755 +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SETUID = @INSTALL_SETUID@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_DIRS = @INSTALL_DIRS@ + +X_CFLAGS = @X_CFLAGS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +XMU_LIBS = @XMU_LIBS@ +XFT_LIBS = @XFT_LIBS@ + +# Note: see comment in ../../driver/Makefile.in for explanation of X_LIBS, etc. +# +HACK_PRE = $(LIBS) $(X_LIBS) +HACK_POST = $(X_PRE_LIBS) $(XFT_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS) -lm +HACK_POST2 = @GL_LIBS@ @HACK_LIBS@ $(HACK_POST) +HACK_LIBS = $(HACK_PRE) @ANIM_LIBS@ $(HACK_POST2) +PNG_LIBS = $(HACK_PRE) @PNG_LIBS@ $(HACK_POST2) +GLE_LIBS = $(HACK_PRE) @GLE_LIBS@ @PNG_LIBS@ $(HACK_POST2) +TEXT_LIBS = @PTY_LIBS@ + +HACK_SRC = $(srcdir)/.. +HACK_BIN = .. +UTILS_SRC = $(HACK_SRC)/../utils +JWXYZ_SRC = $(HACK_SRC)/../jwxyz +UTILS_BIN = $(HACK_BIN)/../utils +JWXYZ_BIN = $(HACK_BIN)/../jwxyz + +INCLUDES_1 = -I. -I$(srcdir) -I$(UTILS_SRC) -I$(JWXYZ_SRC) -I$(HACK_SRC) -I$(HACK_BIN) -I../.. +INCLUDES = $(INCLUDES_1) @INCLUDES@ + +UTILDIR_OBJS = $(UTILS_BIN)/colors.o $(UTILS_BIN)/grabclient.o \ + $(UTILS_BIN)/hsv.o $(UTILS_BIN)/resources.o \ + $(UTILS_BIN)/usleep.o $(UTILS_BIN)/visual.o \ + $(UTILS_BIN)/xmu.o $(UTILS_BIN)/xft.o \ + $(UTILS_BIN)/utf8wc.o $(UTILS_BIN)/logo.o \ + $(UTILS_BIN)/visual-gl.o \ + $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/xshm.o \ + $(UTILS_BIN)/textclient.o $(UTILS_BIN)/async_netdb.o \ + $(UTILS_BIN)/aligned_malloc.o $(UTILS_BIN)/thread_util.o \ + $(UTILS_BIN)/spline.o $(UTILS_BIN)/pow2.o \ + $(UTILS_SRC)/font-retry.c +JWXYZ_OBJS = $(JWXYZ_BIN)/jwzgles.o +HACKDIR_OBJS = $(HACK_BIN)/screenhack.o $(HACK_BIN)/xlockmore.o \ + $(HACK_BIN)/fps.o $(HACK_BIN)/ximage-loader.o +PNG = $(HACK_BIN)/ximage-loader.o + +SRCS = xscreensaver-gl-helper.c normals.c erase-gl.c fps-gl.c \ + atlantis.c b_draw.c b_lockglue.c b_sphere.c bubble3d.c \ + buildlwo.c cage.c dolphin.c gears.c lament.c lament_model.c \ + moebius.c morph3d.c pipeobjs.c pipes.c rubik.c s1_1.c s1_2.c \ + s1_3.c s1_4.c s1_5.c s1_6.c s1_b.c shark.c sproingies.c \ + sproingiewrap.c stairs.c superquadrics.c swim.c whale.c \ + xlock-gl-utils.c glplanet.c pulsar.c \ + extrusion.c extrusion-helix2.c extrusion-helix3.c \ + extrusion-helix4.c extrusion-joinoffset.c extrusion-screw.c \ + extrusion-taper.c extrusion-twistoid.c sierpinski3d.c \ + gflux.c stonerview.c stonerview-move.c stonerview-osc.c \ + stonerview-view.c starwars.c glut_stroke.c glut_swidth.c \ + gltext.c molecule.c dangerball.c sphere.c tube.c circuit.c \ + menger.c engine.c flipscreen3d.c dnalogo.c \ + grab-ximage.c glsnake.c boxed.c glforestfire.c sballs.c \ + cubenetic.c spheremonics.c marching.c lavalite.c rotator.c \ + trackball.c gltrackball.c queens.c endgame.c chessmodels.c \ + glblur.c gllist.c flurry.c flurry-smoke.c flurry-spark.c \ + flurry-star.c flurry-texture.c atunnel.c tunnel_draw.c \ + flyingtoasters.c toaster.c toaster_base.c toaster_handle.c \ + toaster_handle2.c toaster_jet.c toaster_knob.c \ + toaster_slots.c toaster_wing.c toast.c toast2.c \ + bouncingcow.c cow_face.c cow_hide.c cow_hoofs.c cow_horns.c \ + cow_tail.c cow_udder.c glslideshow.c jigglypuff.c klein.c \ + hypertorus.c glmatrix.c cubestorm.c glknots.c blocktube.c \ + flipflop.c antspotlight.c polytopes.c gleidescope.c \ + mirrorblob.c blinkbox.c noof.c polyhedra.c polyhedra-gl.c \ + antinspect.c providence.c pinion.c involute.c boing.c \ + texfont.c carousel.c fliptext.c antmaze.c tangram.c \ + tangram_shapes.c crackberg.c glhanoi.c cube21.c \ + timetunnel.c juggler3d.c topblock.c glschool.c \ + glschool_gl.c glschool_alg.c glcells.c voronoi.c \ + moebiusgears.c lockward.c cubicgrid.c hypnowheel.c \ + skytentacles.c teapot.c sonar.c sonar-sim.c sonar-icmp.c \ + jigsaw.c photopile.c dropshadow.c rubikblocks.c surfaces.c \ + hilbert.c companion.c companion_quad.c companion_disc.c \ + companion_heart.c tronbit.c tronbit_idle1.c tronbit_idle2.c \ + tronbit_no.c tronbit_yes.c kaleidocycle.c \ + quasicrystal.c unknownpleasures.c geodesic.c geodesicgears.c \ + projectiveplane.c winduprobot.c robot.c robot-wireframe.c \ + cityflow.c romanboy.c splitflap.c splitflap_obj.c \ + dymaxionmap.c dymaxionmap-coords.c unicrud.c energystream.c \ + raverhoop.c hydrostat.c discoball.c cubetwist.c cubestack.c \ + splodesic.c hexstrut.c vigilance.c seccam.c esper.c \ + razzledazzle.c ships.c peepers.c crumbler.c quickhull.c \ + maze3d.c + +OBJS = xscreensaver-gl-helper.o normals.o erase-gl.o fps-gl.o \ + atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \ + buildlwo.o cage.o dolphin.o gears.o lament.o lament_model.o \ + moebius.o morph3d.o pipeobjs.o pipes.o rubik.o s1_1.o s1_2.o \ + s1_3.o s1_4.o s1_5.o s1_6.o s1_b.o shark.o sproingies.o \ + sproingiewrap.o stairs.o superquadrics.o swim.o whale.o \ + xlock-gl-utils.o glplanet.o pulsar.o \ + extrusion.o extrusion-helix2.o extrusion-helix3.o \ + extrusion-helix4.o extrusion-joinoffset.o extrusion-screw.o \ + extrusion-taper.o extrusion-twistoid.o sierpinski3d.o \ + gflux.o stonerview.o stonerview-move.o stonerview-osc.o \ + stonerview-view.o starwars.o glut_stroke.o glut_swidth.o \ + gltext.o molecule.o dangerball.o sphere.o tube.o circuit.o \ + menger.o engine.o flipscreen3d.o dnalogo.o \ + grab-ximage.o glsnake.o boxed.o glforestfire.o sballs.o \ + cubenetic.o spheremonics.o marching.o lavalite.o rotator.o \ + trackball.o gltrackball.o queens.o endgame.o chessmodels.o \ + glblur.o gllist.o flurry.o flurry-smoke.o flurry-spark.o \ + flurry-star.o flurry-texture.o atunnel.o tunnel_draw.o \ + flyingtoasters.o toaster.o toaster_base.o toaster_handle.o \ + toaster_handle2.o toaster_jet.o toaster_knob.o \ + toaster_slots.o toaster_wing.o toast.o toast2.o \ + bouncingcow.o cow_face.o cow_hide.o cow_hoofs.o cow_horns.o \ + cow_tail.o cow_udder.o glslideshow.o jigglypuff.o klein.o \ + hypertorus.o glmatrix.o cubestorm.o glknots.o blocktube.o \ + flipflop.o antspotlight.o polytopes.o gleidescope.o \ + mirrorblob.o blinkbox.o noof.o polyhedra.o polyhedra-gl.o \ + antinspect.o providence.o pinion.o involute.o boing.o \ + texfont.o carousel.o fliptext.o antmaze.o tangram.o \ + tangram_shapes.o crackberg.o glhanoi.o cube21.o \ + timetunnel.o juggler3d.o topblock.o glschool.o \ + glschool_gl.o glschool_alg.o glcells.o voronoi.o \ + moebiusgears.o lockward.o cubicgrid.o hypnowheel.o \ + skytentacles.o teapot.o sonar.o sonar-sim.o sonar-icmp.o \ + jigsaw.o photopile.o dropshadow.o rubikblocks.o surfaces.o \ + hilbert.o companion.o companion_quad.o companion_disc.o \ + companion_heart.o tronbit.o tronbit_idle1.o tronbit_idle2.o \ + tronbit_no.o tronbit_yes.o kaleidocycle.o \ + quasicrystal.o unknownpleasures.o geodesic.o geodesicgears.o \ + projectiveplane.o winduprobot.o robot.o robot-wireframe.o \ + cityflow.o romanboy.o splitflap.o splitflap_obj.o \ + dymaxionmap.o dymaxionmap-coords.o unicrud.o energystream.o \ + raverhoop.o hydrostat.o discoball.o cubetwist.o cubestack.o \ + splodesic.o hexstrut.o vigilance.o seccam.o esper.o \ + razzledazzle.o ships.o peepers.o crumbler.o quickhull.o \ + maze3d.o + +GL_EXES = cage gears moebius pipes sproingies stairs superquadrics \ + morph3d rubik atlantis lament bubble3d glplanet pulsar \ + sierpinski3d gflux stonerview starwars gltext molecule \ + dangerball circuit menger engine flipscreen3d glsnake boxed \ + sballs cubenetic spheremonics lavalite queens \ + endgame glblur flurry atunnel flyingtoasters bouncingcow \ + glslideshow jigglypuff klein hypertorus glmatrix cubestorm \ + glknots blocktube flipflop antspotlight polytopes \ + gleidescope mirrorblob blinkbox noof polyhedra \ + antinspect providence pinion boing carousel fliptext \ + antmaze tangram crackberg glhanoi cube21 timetunnel \ + juggler3d topblock glschool glcells voronoi moebiusgears \ + lockward cubicgrid hypnowheel skytentacles jigsaw photopile \ + rubikblocks surfaces hilbert companioncube tronbit \ + kaleidocycle quasicrystal unknownpleasures geodesic \ + geodesicgears projectiveplane winduprobot cityflow romanboy \ + splitflap dymaxionmap unicrud energystream raverhoop \ + hydrostat discoball cubetwist cubestack splodesic \ + hexstrut vigilance esper razzledazzle peepers crumbler \ + maze3d +GLE_EXES = extrusion +SUID_EXES = sonar +GL_UTIL_EXES = xscreensaver-gl-helper +JWZGLES_OBJS = @JWZGLES_OBJS@ +HACK_EXES_1 = @GL_EXES@ @GLE_EXES@ +HACK_EXES = $(HACK_EXES_1) @SUID_EXES@ +XSHM_OBJS = $(UTILS_BIN)/xshm.o +GRAB_OBJS = $(UTILS_BIN)/grabclient.o grab-ximage.o $(XSHM_OBJS) +ANIM_OBJS = recanim-gl.o +ANIM_LIBS = @PNG_LIBS@ +EXES = @GL_UTIL_EXES@ $(HACK_EXES) + +RETIRED_EXES = @RETIRED_GL_EXES@ +RETIRED_GL_EXES = glforestfire + +FPS_OBJS = texfont.o $(HACK_BIN)/fps.o fps-gl.o @XFT_OBJS@ +HACK_OBJS = $(JWZGLES_OBJS) $(HACK_BIN)/screenhack.o @ANIM_OBJS@ \ + $(HACK_BIN)/xlockmore.o xlock-gl-utils.o erase-gl.o \ + ${FPS_OBJS} $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \ + $(UTILS_BIN)/visual-gl.o $(UTILS_BIN)/usleep.o \ + $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/hsv.o \ + $(UTILS_BIN)/colors.o $(UTILS_BIN)/async_netdb.o \ + $(UTILS_BIN)/aligned_malloc.o $(UTILS_BIN)/thread_util.o \ + $(UTILS_BIN)/utf8wc.o $(UTILS_BIN)/pow2.o \ + $(UTILS_BIN)/font-retry-xft.o + +HDRS = atlantis.h bubble3d.h buildlwo.h e_textures.h \ + grab-ximage.h tube.h sphere.h boxed.h \ + stonerview.h stonerview-move.h stonerview-osc.h \ + glutstroke.h glut_roman.h glut_mroman.h marching.h \ + rotator.h trackball.h gltrackball.h chessmodels.h \ + chessgames.h gllist.h flurry.h tunnel_draw.h ants.h \ + polyhedra.h normals.h texfont.h tangram_shapes.h \ + sproingies.h extrusion.h glschool.h glschool_gl.h \ + glschool_alg.h topblock.h involute.h teapot.h sonar.h \ + dropshadow.h starwars.h teapot2.h dnapizza.h curlicue.h \ + quickhull.h dymaxionmap-coords.h +GL_MEN = atlantis.man boxed.man bubble3d.man cage.man circuit.man \ + cubenetic.man dangerball.man engine.man extrusion.man \ + flipscreen3d.man gears.man gflux.man \ + glplanet.man glsnake.man gltext.man lament.man lavalite.man \ + menger.man moebius.man molecule.man morph3d.man pipes.man \ + pulsar.man queens.man rubik.man sballs.man sierpinski3d.man \ + spheremonics.man sproingies.man stairs.man starwars.man \ + stonerview.man superquadrics.man xscreensaver-gl-helper.man \ + endgame.man flurry.man glblur.man atunnel.man \ + flyingtoasters.man bouncingcow.man glslideshow.man \ + jigglypuff.man klein.man hypertorus.man glmatrix.man \ + cubestorm.man glknots.man blocktube.man flipflop.man \ + antspotlight.man polytopes.man gleidescope.man \ + mirrorblob.man blinkbox.man noof.man polyhedra.man \ + antinspect.man providence.man pinion.man boing.man \ + carousel.man fliptext.man antmaze.man tangram.man \ + crackberg.man glhanoi.man cube21.man timetunnel.man \ + juggler3d.man topblock.man glschool.man glcells.man \ + voronoi.man moebiusgears.man lockward.man cubicgrid.man \ + hypnowheel.man skytentacles.man sonar.man jigsaw.man \ + photopile.man rubikblocks.man surfaces.man hilbert.man \ + companioncube.man tronbit.man kaleidocycle.man \ + quasicrystal.man unknownpleasures.man geodesic.man \ + geodesicgears.man projectiveplane.man winduprobot.man \ + cityflow.man romanboy.man splitflap.man dymaxionmap.man \ + unicrud.man energystream.man raverhoop.man hydrostat.man \ + discoball.man cubetwist.man cubestack.man splodesic.man \ + hexstrut.man vigilance.man esper.man razzledazzle.man \ + peepers.man crumbler.man maze3d.man +MEN = @GL_MEN@ +RETIRED_MEN = glforestfire.man +EXTRAS = README Makefile.in dxf2gl.pl vrml2gl.pl wfront2gl.pl \ + molecules.sh starwars.txt zalgo.txt *.dxf + +TARFILES = $(SRCS) $(HDRS) $(GL_MEN) $(RETIRED_MEN) $(EXTRAS) + + +default: all +all: $(EXES) $(RETIRED_EXES) + +install: install-program install-xml install-man +uninstall: uninstall-program uninstall-xml uninstall-man + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install + +# the hacks, in $HACKDIR +install-program:: $(EXES) + @exes="$(HACK_EXES_1)" ; \ + idir="$(install_prefix)$(HACKDIR)" ; \ + if [ "$$exes" != "" ]; then \ + if [ ! -d $$idir ]; then \ + $(INSTALL_DIRS) $$idir ; \ + fi ; \ + for program in $$exes; do \ + echo $(INSTALL_PROGRAM) $$program $$idir/$$program ; \ + $(INSTALL_PROGRAM) $$program $$idir/$$program ; \ + done ; \ + \ + exes="$(SUID_EXES)" ; \ + if [ @SETUID_HACKS@ = yes ]; then \ + sinst="$(INSTALL_SETUID)" ; \ + else \ + sinst="$(INSTALL_PROGRAM)" ; \ + fi ; \ + for program in $$exes; do \ + echo $$sinst $$program $$idir/$$program ; \ + if $$sinst $$program $$idir/$$program ; then \ + true ; \ + elif [ @SETUID_HACKS@ = yes ]; then \ + echo $(INSTALL_PROGRAM) $$program $$idir/$$program ; \ + if $(INSTALL_PROGRAM) $$program $$idir/$$program ; then\ + echo "" ; \ + echo "WARNING: unable to install $$program setuid:" \ + "installed non-setuid instead." ; \ + echo "" ; \ + else \ + exit 1 ; \ + fi ; \ + else \ + exit 1 ; \ + fi ; \ + done ; \ + fi + + +# the xscreensaver-gl-helper program, in $bindir +install-program:: $(EXES) + @exes="@GL_UTIL_EXES@" ; \ + idir="$(install_prefix)$(bindir)" ; \ + if [ "$$exes" != "" ]; then \ + if [ ! -d $$idir ]; then \ + $(INSTALL_DIRS) $$idir ; \ + fi ; \ + for program in $$exes; do \ + echo $(INSTALL_PROGRAM) $$program $$idir/$$program ; \ + $(INSTALL_PROGRAM) $$program $$idir/$$program ; \ + done ; \ + fi + +# When installing man pages, we install "foo.man" as "foo.N" and update +# the .TH line in the installed file with one like +# +# .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11" +# +# where N is the manual section suffix. +# +install-man: $(MEN) + @men="$(MEN)" ; \ + U=$(UTILS_SRC)/version.h ; \ + V=`sed -n 's/.*xscreensaver \([0-9]\.[^)]*)\).*/\1/p' < $$U` ; \ + T=/tmp/xs$$$$.$(mansuffix) ; \ + TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ; \ + echo "installing man pages: $$TH" ; \ + \ + if [ ! -d $(install_prefix)$(manNdir) ]; then \ + $(INSTALL_DIRS) $(install_prefix)$(manNdir) ; \ + fi ; \ + \ + for man in $$men; do \ + instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ; \ + manbase=`echo $$man | sed 's/\.man$$//'` ; \ + TH=".TH $$manbase $(mansuffix) \"$$V\" \"X Version 11\" \"XScreenSaver manual\"" ; \ + sed -e "s/^\.TH.*/$$TH/" \ + -e 's@(MANSUFFIX)@($(mansuffix))@g' \ + < $(srcdir)/$$man > $$T ; \ + echo $(INSTALL_DATA) $(srcdir)/$$man \ + $(install_prefix)$(manNdir)/$$instname ; \ + $(INSTALL_DATA) $$T \ + $(install_prefix)$(manNdir)/$$instname ; \ + done ; \ + rm -f $$T + +install-xml: + @dest=$(install_prefix)$(HACK_CONF_DIR) ; \ + if [ ! -d $$dest ]; then \ + $(INSTALL_DIRS) $$dest ; \ + fi ; \ + src=$(srcdir)/../config ; \ + for file in $(EXES) $(SCRIPTS) ; do \ + if [ -f $$src/$$file.xml ]; then \ + echo $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ; \ + $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ; \ + fi ; \ + done + +# the hacks, in $HACKDIR +uninstall-program:: + @exes="$(HACK_EXES) $(RETIRED_EXES)" ; \ + idir="$(install_prefix)$(HACKDIR)" ; \ + for program in $$exes; do \ + echo rm -f $$idir/$$program ; \ + rm -f $$idir/$$program ; \ + done + +# the xscreensaver-gl-helper program, in $bindir +uninstall-program:: + @exes="$(GL_UTIL_EXES)" ; \ + idir="$(install_prefix)$(bindir)" ; \ + for program in $$exes; do \ + echo rm -f $$idir/$$program ; \ + rm -f $$idir/$$program ; \ + done + +uninstall-man: + @men="$(MEN) $(RETIRED_MEN)" ; \ + for man in $$men; do \ + instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ; \ + echo rm -f $(install_prefix)$(manNdir)/$$instname* ; \ + rm -f $(install_prefix)$(manNdir)/$$instname* ; \ + done + +uninstall-xml: + @dest=$(install_prefix)$(HACK_CONF_DIR) ; \ + for file in $(EXES) $(RETIRED_EXES) $(SCRIPTS) ; do \ + echo rm -f $$dest/$$file.xml ; \ + rm -f $$dest/$$file.xml ; \ + done + +clean:: + -rm -f *.o a.out core $(EXES) $(RETIRED_EXES) molecules.h + +distclean: clean + -rm -f Makefile TAGS *~ "#"* + +# Adds all current dependencies to Makefile +depend: + $(DEPEND) -s '# DO NOT DELETE: updated by make depend' \ + $(DEPEND_FLAGS) -- \ + $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) -- \ + $(SRCS) + +# Adds some dependencies to Makefile.in -- not totally accurate, but pretty +# close. This excludes dependencies on files in /usr/include, etc. It tries +# to include only dependencies on files which are themselves a part of this +# package. +distdepend:: molecules.h + @echo updating dependencies in `pwd`/Makefile.in... ; \ + $(DEPEND) -w 0 -f - \ + -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \ + $(INCLUDES_1) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) -- \ + $(SRCS) 2>/dev/null | \ + sort -d | \ + ( \ + awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \ + sed -e '/^#.*/d' \ + -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d' \ + -e 's@\.\./\.\./utils@$$(UTILS_SRC)@g' \ + -e 's@\.\./\.\./jwxyz@$$(JWXYZ_SRC)@g' \ + -e 's@\.\./glx/@@g' \ + -e 's@ \.\./@ $$(HACK_SRC)/@g' \ + -e 's@ \([^$$]\)@ $$(srcdir)/\1@g' \ + -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g' \ + -e 's@ $$(HACK_SRC)/\(.*config.h\)@ ../\1@g' \ + -e 's@ $$(srcdir)/\(.*molecules.h\)@ \1@g' ; \ + echo '' \ + ) > /tmp/distdepend.$$$$ && \ + mv /tmp/distdepend.$$$$ Makefile.in + + +TAGS: tags +tags: + find $(srcdir) -name '*.[chly]' -print | xargs etags -a + +echo_tarfiles: + @echo $(TARFILES) + +check_men: + @badmen="" ; \ + for exe in $(EXES); do \ + if ! [ -f $(srcdir)/$$exe.man ]; then \ + badmen="$$badmen $$exe" ; \ + fi ; \ + done ; \ + if [ -n "$$badmen" ]; then \ + echo "" ; \ + echo "Warning: The following programs have no manuals:" ; \ + echo "" ; \ + for m in $$badmen ; do \ + echo " $$m" ; \ + done ; \ + fi + +validate_xml: + @echo "Validating XML..." ; \ + cd $(HACK_SRC) ; ./check-configs.pl $(GL_EXES) $(GLE_EXES) $(SUID_EXES) + +distdepend:: check_men validate_xml + + + +# Rules for noticing when the objects from the utils and hacks +# directories are out of date with respect to their sources, and going +# and building them according to the rules in their own Makefile... +# +$(UTILS_BIN)/colors.o: $(UTILS_SRC)/colors.c +$(UTILS_BIN)/grabclient.o: $(UTILS_SRC)/grabclient.c +$(UTILS_BIN)/hsv.o: $(UTILS_SRC)/hsv.c +$(UTILS_BIN)/resources.o: $(UTILS_SRC)/resources.c +$(UTILS_BIN)/usleep.o: $(UTILS_SRC)/usleep.c +$(UTILS_BIN)/visual.o: $(UTILS_SRC)/visual.c +$(UTILS_BIN)/xmu.o: $(UTILS_SRC)/xmu.c +$(UTILS_BIN)/xft.o: $(UTILS_SRC)/xft.c +$(UTILS_BIN)/utf8wc.o: $(UTILS_SRC)/utf8wc.c +$(UTILS_BIN)/logo.o: $(UTILS_SRC)/logo.c +$(UTILS_BIN)/visual-gl.o: $(UTILS_SRC)/visual-gl.c +$(UTILS_BIN)/yarandom.o: $(UTILS_SRC)/yarandom.c +$(UTILS_BIN)/xshm.o: $(UTILS_SRC)/xshm.c +$(UTILS_BIN)/textclient.o: $(UTILS_SRC)/textclient.c +$(UTILS_BIN)/async_netdb.o: $(UTILS_SRC)/async_netdb.c +$(UTILS_BIN)/aligned_malloc.o: $(UTILS_SRC)/aligned_malloc.c +$(UTILS_BIN)/thread_util.o: $(UTILS_SRC)/thread_util.c +$(UTILS_BIN)/spline.o: $(UTILS_SRC)/spline.c +$(UTILS_BIN)/pow2.o: $(UTILS_SRC)/pow2.c +$(UTILS_BIN)/font-retry-xft.o: $(UTILS_SRC)/font-retry.c +$(HACK_BIN)/screenhack.o: $(HACK_SRC)/screenhack.c +$(HACK_BIN)/xlockmore.o: $(HACK_SRC)/xlockmore.c +$(HACK_BIN)/fps.o: $(HACK_SRC)/fps.c + +$(UTILDIR_OBJS): + cd $(UTILS_BIN) ; $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" +$(JWXYZ_OBJS): + cd $(JWXYZ_BIN) ; $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" +$(HACKDIR_OBJS): + cd $(HACK_BIN) ; $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" + + +# How we build object files in this directory. +.c.o: + $(CC) -c $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) $< + +# Make sure the images have been packaged. This is the first one hit: +../images/gen/wood_png.h: + cd ../images && $(MAKE) + +# How to build the "xscreensaver-gl-helper" program, that lets the daemon +# know which visual is the right one for GL programs. +# +HELPER_OBJS = xscreensaver-gl-helper.o $(UTILS_BIN)/visual-gl.o \ + $(UTILS_BIN)/visual.o $(UTILS_BIN)/resources.o +xscreensaver-gl-helper: $(HELPER_OBJS) + $(CC) $(LDFLAGS) -o $@ $(HELPER_OBJS) $(LIBS) $(X_LIBS) $(HACK_POST2) + + +# These hacks use a slightly-differently-compiled variant of recanim.c. +# This is how to make the the other .o file from it. +# +XLM_CFLAGS=-DUSE_GL $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) +recanim-gl.o: $(HACK_SRC)/recanim.c + $(CC) -o $@ -c $(XLM_CFLAGS) $(HACK_SRC)/recanim.c + +CC_HACK = $(CC) $(LDFLAGS) + + +TRACK_OBJS=rotator.o trackball.o gltrackball.o +HACK_TRACK_OBJS=$(HACK_OBJS) $(TRACK_OBJS) +HACK_GRAB_OBJS=$(HACK_OBJS) $(GRAB_OBJS) +HACK_TRACK_GRAB_OBJS=$(HACK_TRACK_OBJS) $(GRAB_OBJS) +TEXT=$(UTILS_BIN)/textclient.o + +ATLANTIS_OBJS = $(HACK_OBJS) dolphin.o shark.o swim.o whale.o $(PNG) +atlantis: atlantis.o $(ATLANTIS_OBJS) + $(CC_HACK) -o $@ $@.o $(ATLANTIS_OBJS) $(PNG_LIBS) + +ATUNNEL_OBJS = $(HACK_OBJS) tunnel_draw.o $(PNG) +atunnel: atunnel.o $(ATUNNEL_OBJS) + $(CC_HACK) -o $@ $@.o $(ATUNNEL_OBJS) $(PNG_LIBS) + +cage: cage.o $(PNG) $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_OBJS) $(PNG_LIBS) + +FLURRY_OBJS_1 = flurry-smoke.o flurry-spark.o flurry-star.o flurry-texture.o +FLURRY_OBJS = $(FLURRY_OBJS_1) $(HACK_OBJS) + +flurry: flurry.o $(FLURRY_OBJS) + $(CC_HACK) -o $@ $@.o $(FLURRY_OBJS) $(HACK_LIBS) -lm + +GEARS_OBJS_1=normals.o involute.o +GEARS_OBJS=$(GEARS_OBJS_1) $(HACK_TRACK_OBJS) +gears: gears.o tube.o $(GEARS_OBJS) + $(CC_HACK) -o $@ $@.o tube.o $(GEARS_OBJS) $(HACK_LIBS) + +MOEBIUS_OBJS=sphere.o tube.o $(PNG) $(HACK_TRACK_OBJS) +moebius: moebius.o $(MOEBIUS_OBJS) + $(CC_HACK) -o $@ $@.o $(MOEBIUS_OBJS) $(HACK_LIBS) $(PNG_LIBS) + +PIPE_OBJS=pipeobjs.o buildlwo.o sphere.o teapot.o normals.o +pipes: pipes.o $(PIPE_OBJS) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PIPE_OBJS) $(HACK_TRACK_OBJS) $(HACK_LIBS) + +superquadrics: superquadrics.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +morph3d: morph3d.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +rubik: rubik.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +stairs: stairs.o sphere.o $(PNG) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o sphere.o $(PNG) $(HACK_TRACK_OBJS) \ + $(HACK_LIBS) $(PNG_LIBS) + +SPROINGIES = sproingiewrap.o gllist.o \ + s1_1.o s1_2.o s1_3.o s1_4.o s1_5.o s1_6.o s1_b.o +sproingies: sproingies.o $(HACK_OBJS) $(SPROINGIES) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(SPROINGIES) $(HACK_LIBS) + +LAMENTOBJS = gllist.o lament_model.o $(HACK_TRACK_OBJS) $(PNG) normals.o +lament: lament.o $(LAMENTOBJS) + $(CC_HACK) -o $@ $@.o $(LAMENTOBJS) $(PNG_LIBS) + +lament_dxf:: + ./dxf2gl.pl --smooth --layers lament.dxf lament_model.c + + +B3D_OBJS = b_sphere.o b_draw.o b_lockglue.o $(HACK_OBJS) +bubble3d: bubble3d.o $(B3D_OBJS) + $(CC_HACK) -o $@ $@.o $(B3D_OBJS) $(HACK_LIBS) + +PLANET_OBJS=sphere.o $(PNG) $(HACK_TRACK_OBJS) +glplanet: glplanet.o $(PLANET_OBJS) + $(CC_HACK) -o $@ $@.o $(PLANET_OBJS) $(PNG_LIBS) + +DYMAXIOBJS=dymaxionmap-coords.o normals.o $(PLANET_OBJS) +dymaxionmap: dymaxionmap.o $(DYMAXIOBJS) + $(CC_HACK) -o $@ $@.o $(DYMAXIOBJS) $(PNG_LIBS) + +pulsar: pulsar.o $(HACK_OBJS) $(PNG) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(PNG) $(PNG_LIBS) + +EXTRUSION_OBJS=extrusion.o extrusion-helix2.o extrusion-helix3.o \ + extrusion-helix4.o extrusion-joinoffset.o extrusion-screw.o \ + extrusion-taper.o extrusion-twistoid.o $(PNG) \ + $(HACK_TRACK_OBJS) +extrusion: $(EXTRUSION_OBJS) + $(CC_HACK) -o $@ $(EXTRUSION_OBJS) $(GLE_LIBS) + +sierpinski3d: sierpinski3d.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +gflux: gflux.o $(HACK_TRACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS) + +SW_OBJS=starwars.o glut_stroke.o glut_swidth.o $(TEXT) $(HACK_OBJS) +starwars: $(SW_OBJS) + $(CC_HACK) -o $@ $(SW_OBJS) $(HACK_LIBS) $(TEXT_LIBS) + +GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o sphere.o \ + $(TEXT) $(HACK_TRACK_OBJS) +gltext: $(GLT_OBJS) + $(CC_HACK) -o $@ $(GLT_OBJS) $(HACK_LIBS) $(TEXT_LIBS) + +DB_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS) +dangerball: dangerball.o $(DB_OBJS) + $(CC_HACK) -o $@ $@.o $(DB_OBJS) $(HACK_LIBS) + +circuit: circuit.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +menger: menger.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +engine: engine.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +flipscreen3d: flipscreen3d.o $(HACK_TRACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS) + +glsnake: glsnake.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +boxed: boxed.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +glforestfire: glforestfire.o $(PNG) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_TRACK_OBJS) $(PNG_LIBS) + +sballs: sballs.o $(PNG) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_TRACK_OBJS) $(PNG_LIBS) + +cubenetic: cubenetic.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +spheremonics: spheremonics.o normals.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +LL_OBJS=marching.o $(PNG) normals.o $(HACK_TRACK_OBJS) +lavalite: lavalite.o $(LL_OBJS) + $(CC_HACK) -o $@ $@.o $(LL_OBJS) $(PNG_LIBS) + +queens: queens.o chessmodels.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o chessmodels.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +endgame: endgame.o chessmodels.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o chessmodels.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +glblur: glblur.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +TOAST_OBJS=\ + toaster.o toaster_base.o toaster_handle.o toaster_handle2.o \ + toaster_jet.o toaster_knob.o toaster_slots.o toaster_wing.o \ + toast.o toast2.o \ + flyingtoasters.o gllist.o $(PNG) $(HACK_TRACK_OBJS) +flyingtoasters: $(TOAST_OBJS) + $(CC_HACK) -o $@ $(TOAST_OBJS) $(PNG_LIBS) + +toaster_dxf:: + @set -e ; \ + for f in \ + toaster.dxf \ + toaster_base.dxf \ + toaster_handle.dxf \ + toaster_handle2.dxf \ + toaster_jet.dxf \ + toaster_knob.dxf \ + toaster_slots.dxf \ + toaster_wing.dxf \ + toast.dxf \ + toast2.dxf \ + ; do \ + f2=`echo $$f | sed 's/dxf$$/c/'` ; \ + ./dxf2gl.pl --normalize --smooth $$f $$f2 ; \ + done ; \ + +COW_OBJS=\ + cow_face.o cow_hide.o cow_hoofs.o cow_horns.o cow_tail.o cow_udder.o \ + bouncingcow.o gllist.o $(PNG) $(HACK_TRACK_OBJS) +bouncingcow: $(COW_OBJS) + $(CC_HACK) -o $@ $(COW_OBJS) $(PNG_LIBS) + +ROBO_OBJS=\ + robot.o robot-wireframe.o gllist.o $(PNG) sphere.o \ + winduprobot.o $(GEARS_OBJS_1) $(TEXT) $(HACK_TRACK_OBJS) +winduprobot: $(ROBO_OBJS) + $(CC_HACK) -o $@ $(ROBO_OBJS) $(PNG_LIBS) $(TEXT_LIBS) + +winduprobot_dxf:: + ./dxf2gl.pl --smooth --layers robot.dxf robot.c + ./dxf2gl.pl --wireframe robot-wireframe.dxf robot-wireframe.c + +CAM_OBJS=seccam.o gllist.o vigilance.o $(HACK_TRACK_OBJS) +vigilance: $(CAM_OBJS) + $(CC_HACK) -o $@ $(CAM_OBJS) $(HACK_LIBS) + +seccam_dxf:: + ./dxf2gl.pl --smooth --layers seccam.dxf seccam.c + +glslideshow: glslideshow.o $(HACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_GRAB_OBJS) $(HACK_LIBS) + +jigglypuff: jigglypuff.o $(PNG) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_TRACK_OBJS) $(PNG_LIBS) + +klein: klein.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +surfaces: surfaces.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +hypertorus: hypertorus.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +projectiveplane: projectiveplane.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +romanboy: romanboy.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +glmatrix: glmatrix.o $(PNG) $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_OBJS) $(PNG_LIBS) + +cubestorm: cubestorm.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +glknots: glknots.o tube.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o tube.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +blocktube: blocktube.o $(PNG) $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_OBJS) $(PNG_LIBS) + +flipflop: flipflop.o $(HACK_TRACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS) + +antspotlight: antspotlight.o sphere.o $(HACK_TRACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o sphere.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS) + +polytopes: polytopes.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +STONER_OBJS=stonerview-move.o stonerview-osc.o stonerview-view.o +stonerview: stonerview.o $(STONER_OBJS) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(STONER_OBJS) $(HACK_TRACK_OBJS) $(HACK_LIBS) + +molecules.h: + @echo "building molecules.h from $(HACK_SRC)/images/molecules/*.pdb"; \ + UTILS_SRC="$(UTILS_SRC)" \ + $(srcdir)/molecules.sh molecules.h $(HACK_SRC)/images/molecules/*.pdb + +MOLECULE_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS) +molecule.o: molecules.h +molecule: molecule.o $(MOLECULE_OBJS) + $(CC_HACK) -o $@ $@.o $(MOLECULE_OBJS) $(HACK_LIBS) + +gleidescope: gleidescope.o $(PNG) $(HACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_GRAB_OBJS) $(PNG_LIBS) + +mirrorblob: mirrorblob.o $(HACK_TRACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(PNG_LIBS) + +blinkbox: blinkbox.o sphere.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o sphere.o $(HACK_OBJS) $(HACK_LIBS) + +noof: noof.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +PH_OBJS=polyhedra-gl.o normals.o teapot.o $(HACK_TRACK_OBJS) +polyhedra: polyhedra.o $(PH_OBJS) + $(CC_HACK) -o $@ $@.o $(PH_OBJS) $(HACK_LIBS) + +antinspect: antinspect.o sphere.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o sphere.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +providence: providence.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +pinion: pinion.o $(GEARS_OBJS) + $(CC_HACK) -o $@ $@.o $(GEARS_OBJS) $(HACK_LIBS) + +moebiusgears: moebiusgears.o $(GEARS_OBJS) + $(CC_HACK) -o $@ $@.o $(GEARS_OBJS) $(HACK_LIBS) + +boing: boing.o normals.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +carousel: carousel.o $(HACK_TRACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS) + +fliptext: fliptext.o $(TEXT) $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(TEXT) $(HACK_OBJS) $(HACK_LIBS) $(TEXT_LIBS) + +antmaze: antmaze.o sphere.o tube.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o sphere.o tube.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +TANGRAM_OBJS=tangram_shapes.o $(HACK_OBJS) +tangram: tangram.o $(TANGRAM_OBJS) + $(CC_HACK) -o $@ $@.o $(TANGRAM_OBJS) $(HACK_LIBS) + +crackberg: crackberg.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +glhanoi: glhanoi.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +cube21: cube21.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +TIMETUNNEL_OBJS = $(PNG) $(HACK_TRACK_OBJS) +timetunnel: timetunnel.o $(TIMETUNNEL_OBJS) + $(CC_HACK) -o $@ $@.o $(TIMETUNNEL_OBJS) $(PNG_LIBS) + +JUGG_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS) +juggler3d: juggler3d.o $(JUGG_OBJS) + $(CC_HACK) -o $@ $@.o $(JUGG_OBJS) $(HACK_LIBS) + +dnalogo: dnalogo.o tube.o sphere.o normals.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o tube.o sphere.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +topblock: topblock.o sphere.o tube.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o sphere.o tube.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +SCHOOL_OBJS=glschool.o glschool_alg.o glschool_gl.o \ + sphere.o tube.o normals.o $(HACK_OBJS) +glschool: $(SCHOOL_OBJS) + $(CC_HACK) -o $@ $(SCHOOL_OBJS) $(HACK_LIBS) + +glcells: glcells.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +voronoi: voronoi.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +lockward: lockward.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + +cubicgrid: cubicgrid.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +hypnowheel: hypnowheel.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +TENTACLE_OBJS=normals.o $(PNG) $(HACK_TRACK_OBJS) +skytentacles: skytentacles.o $(TENTACLE_OBJS) + $(CC_HACK) -o $@ $@.o $(TENTACLE_OBJS) $(PNG_LIBS) + +SONAR_OBJS=sonar-sim.o sonar-icmp.o $(HACK_TRACK_OBJS) +sonar: sonar.o $(SONAR_OBJS) + $(CC_HACK) -o $@ $@.o $(SONAR_OBJS) $(HACK_LIBS) + +JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o $(HACK_TRACK_GRAB_OBJS) +jigsaw: jigsaw.o $(JIGSAW_OBJS) + $(CC_HACK) -o $@ $@.o $(JIGSAW_OBJS) $(HACK_LIBS) + +PHOTOPILE_OBJS=dropshadow.o $(HACK_GRAB_OBJS) +photopile: photopile.o $(PHOTOPILE_OBJS) + $(CC_HACK) -o $@ $@.o $(PHOTOPILE_OBJS) $(HACK_LIBS) + +rubikblocks: rubikblocks.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +HILB_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS) +hilbert: hilbert.o $(HILB_OBJS) + $(CC_HACK) -o $@ $@.o $(HILB_OBJS) $(HACK_LIBS) + +CCUBE_OBJS=companion.o companion_quad.o companion_disc.o companion_heart.o \ + gllist.o $(HACK_TRACK_OBJS) +companioncube: $(CCUBE_OBJS) + $(CC_HACK) -o $@ $(CCUBE_OBJS) $(HACK_LIBS) + +TBIT_OBJS=tronbit.o tronbit_idle1.o tronbit_idle2.o tronbit_no.o tronbit_yes.o\ + gllist.o $(HACK_TRACK_OBJS) +tronbit: $(TBIT_OBJS) + $(CC_HACK) -o $@ $(TBIT_OBJS) $(HACK_LIBS) + +KALEIDOCYCLE_OBJS=kaleidocycle.o normals.o $(HACK_TRACK_OBJS) +kaleidocycle: $(KALEIDOCYCLE_OBJS) + $(CC_HACK) -o $@ $(KALEIDOCYCLE_OBJS) $(HACK_LIBS) + +quasicrystal: quasicrystal.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +unknownpleasures: unknownpleasures.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +geodesic: geodesic.o normals.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +geodesicgears: geodesicgears.o $(GEARS_OBJS) + $(CC_HACK) -o $@ $@.o $(GEARS_OBJS) $(HACK_LIBS) + +cityflow: cityflow.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +splitflap_dxf:: + ./dxf2gl.pl --normalize --smooth --layers splitflap.dxf splitflap_obj.c + +FLAP_OBJS=splitflap_obj.o gllist.o splitflap.o $(TEXT) $(HACK_TRACK_OBJS) +splitflap: $(FLAP_OBJS) + $(CC_HACK) -o $@ $(FLAP_OBJS) $(PNG_LIBS) $(TEXT_LIBS) + +unicrud: unicrud.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +ES_OBJS=$(PNG) $(HACK_TRACK_OBJS) +energystream: energystream.o $(ES_OBJS) + $(CC_HACK) -o $@ $@.o $(ES_OBJS) $(PNG_LIBS) $(HACK_LIBS) + +raverhoop: raverhoop.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +HSTAT_OBJS=sphere.o normals.o $(HACK_TRACK_OBJS) +hydrostat: hydrostat.o $(HSTAT_OBJS) + $(CC_HACK) -o $@ $@.o $(HSTAT_OBJS) $(HACK_LIBS) + +discoball: discoball.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +cubetwist: cubetwist.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +cubestack: cubestack.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +splodesic: splodesic.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +hexstrut: hexstrut.o normals.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +esper: esper.o $(HACK_GRAB_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_GRAB_OBJS) $(HACK_LIBS) + +ships_dxf:: + ./dxf2gl.pl --normalize --layers ships.dxf ships.c + +DAZ_OBJS=ships.o gllist.o $(HACK_TRACK_OBJS) +razzledazzle: razzledazzle.o $(DAZ_OBJS) + $(CC_HACK) -o $@ $@.o $(DAZ_OBJS) $(HACK_LIBS) + +peepers: peepers.o normals.o $(PNG) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o normals.o $(PNG) $(PNG_LIBS) $(HACK_TRACK_OBJS) $(HACK_LIBS) + +crumbler: crumbler.o quickhull.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o quickhull.o $(HACK_TRACK_OBJS) $(HACK_LIBS) + +maze3d: maze3d.o $(PNG) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PNG) $(PNG_LIBS) $(HACK_TRACK_OBJS) $(HACK_LIBS) + +############################################################################## +# +# DO NOT DELETE: updated by make distdepend + +antinspect.o: ../../config.h +antinspect.o: $(HACK_SRC)/fps.h +antinspect.o: $(srcdir)/gltrackball.h +antinspect.o: $(HACK_SRC)/recanim.h +antinspect.o: $(HACK_SRC)/screenhackI.h +antinspect.o: $(srcdir)/sphere.h +antinspect.o: $(UTILS_SRC)/colors.h +antinspect.o: $(UTILS_SRC)/erase.h +antinspect.o: $(UTILS_SRC)/font-retry.h +antinspect.o: $(UTILS_SRC)/grabscreen.h +antinspect.o: $(UTILS_SRC)/hsv.h +antinspect.o: $(UTILS_SRC)/resources.h +antinspect.o: $(UTILS_SRC)/usleep.h +antinspect.o: $(UTILS_SRC)/visual.h +antinspect.o: $(UTILS_SRC)/yarandom.h +antinspect.o: $(HACK_SRC)/xlockmoreI.h +antinspect.o: $(HACK_SRC)/xlockmore.h +antmaze.o: $(srcdir)/ants.h +antmaze.o: ../../config.h +antmaze.o: $(HACK_SRC)/fps.h +antmaze.o: $(srcdir)/gltrackball.h +antmaze.o: $(HACK_SRC)/recanim.h +antmaze.o: $(srcdir)/rotator.h +antmaze.o: $(HACK_SRC)/screenhackI.h +antmaze.o: $(srcdir)/sphere.h +antmaze.o: $(srcdir)/tube.h +antmaze.o: $(UTILS_SRC)/colors.h +antmaze.o: $(UTILS_SRC)/erase.h +antmaze.o: $(UTILS_SRC)/font-retry.h +antmaze.o: $(UTILS_SRC)/grabscreen.h +antmaze.o: $(UTILS_SRC)/hsv.h +antmaze.o: $(UTILS_SRC)/resources.h +antmaze.o: $(UTILS_SRC)/usleep.h +antmaze.o: $(UTILS_SRC)/visual.h +antmaze.o: $(UTILS_SRC)/yarandom.h +antmaze.o: $(HACK_SRC)/xlockmoreI.h +antmaze.o: $(HACK_SRC)/xlockmore.h +antspotlight.o: $(srcdir)/ants.h +antspotlight.o: ../../config.h +antspotlight.o: $(HACK_SRC)/fps.h +antspotlight.o: $(srcdir)/gltrackball.h +antspotlight.o: $(srcdir)/grab-ximage.h +antspotlight.o: $(HACK_SRC)/recanim.h +antspotlight.o: $(srcdir)/rotator.h +antspotlight.o: $(HACK_SRC)/screenhackI.h +antspotlight.o: $(srcdir)/sphere.h +antspotlight.o: $(srcdir)/tube.h +antspotlight.o: $(UTILS_SRC)/colors.h +antspotlight.o: $(UTILS_SRC)/erase.h +antspotlight.o: $(UTILS_SRC)/font-retry.h +antspotlight.o: $(UTILS_SRC)/grabscreen.h +antspotlight.o: $(UTILS_SRC)/hsv.h +antspotlight.o: $(UTILS_SRC)/resources.h +antspotlight.o: $(UTILS_SRC)/usleep.h +antspotlight.o: $(UTILS_SRC)/visual.h +antspotlight.o: $(UTILS_SRC)/yarandom.h +antspotlight.o: $(HACK_SRC)/xlockmoreI.h +antspotlight.o: $(HACK_SRC)/xlockmore.h +atlantis.o: $(srcdir)/atlantis.h +atlantis.o: ../../config.h +atlantis.o: $(HACK_SRC)/fps.h +atlantis.o: $(HACK_SRC)/images/gen/sea-texture_png.h +atlantis.o: $(HACK_SRC)/recanim.h +atlantis.o: $(HACK_SRC)/screenhackI.h +atlantis.o: $(UTILS_SRC)/colors.h +atlantis.o: $(UTILS_SRC)/erase.h +atlantis.o: $(UTILS_SRC)/font-retry.h +atlantis.o: $(UTILS_SRC)/grabscreen.h +atlantis.o: $(UTILS_SRC)/hsv.h +atlantis.o: $(UTILS_SRC)/resources.h +atlantis.o: $(UTILS_SRC)/usleep.h +atlantis.o: $(UTILS_SRC)/visual.h +atlantis.o: $(UTILS_SRC)/yarandom.h +atlantis.o: $(HACK_SRC)/ximage-loader.h +atlantis.o: $(HACK_SRC)/xlockmoreI.h +atlantis.o: $(HACK_SRC)/xlockmore.h +atunnel.o: ../../config.h +atunnel.o: $(HACK_SRC)/fps.h +atunnel.o: $(HACK_SRC)/images/gen/tunnel0_png.h +atunnel.o: $(HACK_SRC)/images/gen/tunnel1_png.h +atunnel.o: $(HACK_SRC)/images/gen/tunnel2_png.h +atunnel.o: $(HACK_SRC)/images/gen/tunnel3_png.h +atunnel.o: $(HACK_SRC)/images/gen/tunnel4_png.h +atunnel.o: $(HACK_SRC)/images/gen/tunnel5_png.h +atunnel.o: $(HACK_SRC)/recanim.h +atunnel.o: $(HACK_SRC)/screenhackI.h +atunnel.o: $(srcdir)/tunnel_draw.h +atunnel.o: $(UTILS_SRC)/colors.h +atunnel.o: $(UTILS_SRC)/erase.h +atunnel.o: $(UTILS_SRC)/font-retry.h +atunnel.o: $(UTILS_SRC)/grabscreen.h +atunnel.o: $(UTILS_SRC)/hsv.h +atunnel.o: $(UTILS_SRC)/resources.h +atunnel.o: $(UTILS_SRC)/usleep.h +atunnel.o: $(UTILS_SRC)/visual.h +atunnel.o: $(UTILS_SRC)/yarandom.h +atunnel.o: $(HACK_SRC)/ximage-loader.h +atunnel.o: $(HACK_SRC)/xlockmoreI.h +atunnel.o: $(HACK_SRC)/xlockmore.h +b_draw.o: $(srcdir)/bubble3d.h +b_draw.o: ../../config.h +b_draw.o: $(HACK_SRC)/fps.h +b_draw.o: $(HACK_SRC)/recanim.h +b_draw.o: $(HACK_SRC)/screenhackI.h +b_draw.o: $(UTILS_SRC)/colors.h +b_draw.o: $(UTILS_SRC)/erase.h +b_draw.o: $(UTILS_SRC)/font-retry.h +b_draw.o: $(UTILS_SRC)/grabscreen.h +b_draw.o: $(UTILS_SRC)/hsv.h +b_draw.o: $(UTILS_SRC)/resources.h +b_draw.o: $(UTILS_SRC)/usleep.h +b_draw.o: $(UTILS_SRC)/visual.h +b_draw.o: $(UTILS_SRC)/yarandom.h +b_draw.o: $(HACK_SRC)/xlockmoreI.h +blinkbox.o: ../../config.h +blinkbox.o: $(HACK_SRC)/fps.h +blinkbox.o: $(HACK_SRC)/recanim.h +blinkbox.o: $(HACK_SRC)/screenhackI.h +blinkbox.o: $(srcdir)/sphere.h +blinkbox.o: $(UTILS_SRC)/colors.h +blinkbox.o: $(UTILS_SRC)/erase.h +blinkbox.o: $(UTILS_SRC)/font-retry.h +blinkbox.o: $(UTILS_SRC)/grabscreen.h +blinkbox.o: $(UTILS_SRC)/hsv.h +blinkbox.o: $(UTILS_SRC)/resources.h +blinkbox.o: $(UTILS_SRC)/usleep.h +blinkbox.o: $(UTILS_SRC)/visual.h +blinkbox.o: $(UTILS_SRC)/yarandom.h +blinkbox.o: $(HACK_SRC)/xlockmoreI.h +blinkbox.o: $(HACK_SRC)/xlockmore.h +b_lockglue.o: $(srcdir)/bubble3d.h +b_lockglue.o: ../../config.h +b_lockglue.o: $(HACK_SRC)/fps.h +b_lockglue.o: $(HACK_SRC)/recanim.h +b_lockglue.o: $(HACK_SRC)/screenhackI.h +b_lockglue.o: $(UTILS_SRC)/colors.h +b_lockglue.o: $(UTILS_SRC)/erase.h +b_lockglue.o: $(UTILS_SRC)/font-retry.h +b_lockglue.o: $(UTILS_SRC)/grabscreen.h +b_lockglue.o: $(UTILS_SRC)/hsv.h +b_lockglue.o: $(UTILS_SRC)/resources.h +b_lockglue.o: $(UTILS_SRC)/usleep.h +b_lockglue.o: $(UTILS_SRC)/visual.h +b_lockglue.o: $(UTILS_SRC)/yarandom.h +b_lockglue.o: $(HACK_SRC)/xlockmoreI.h +b_lockglue.o: $(HACK_SRC)/xlockmore.h +blocktube.o: ../../config.h +blocktube.o: $(HACK_SRC)/fps.h +blocktube.o: $(HACK_SRC)/images/gen/blocktube_png.h +blocktube.o: $(HACK_SRC)/recanim.h +blocktube.o: $(HACK_SRC)/screenhackI.h +blocktube.o: $(UTILS_SRC)/colors.h +blocktube.o: $(UTILS_SRC)/erase.h +blocktube.o: $(UTILS_SRC)/font-retry.h +blocktube.o: $(UTILS_SRC)/grabscreen.h +blocktube.o: $(UTILS_SRC)/hsv.h +blocktube.o: $(UTILS_SRC)/resources.h +blocktube.o: $(UTILS_SRC)/usleep.h +blocktube.o: $(UTILS_SRC)/visual.h +blocktube.o: $(UTILS_SRC)/yarandom.h +blocktube.o: $(HACK_SRC)/ximage-loader.h +blocktube.o: $(HACK_SRC)/xlockmoreI.h +blocktube.o: $(HACK_SRC)/xlockmore.h +boing.o: ../../config.h +boing.o: $(HACK_SRC)/fps.h +boing.o: $(srcdir)/gltrackball.h +boing.o: $(HACK_SRC)/recanim.h +boing.o: $(HACK_SRC)/screenhackI.h +boing.o: $(UTILS_SRC)/colors.h +boing.o: $(UTILS_SRC)/erase.h +boing.o: $(UTILS_SRC)/font-retry.h +boing.o: $(UTILS_SRC)/grabscreen.h +boing.o: $(UTILS_SRC)/hsv.h +boing.o: $(UTILS_SRC)/resources.h +boing.o: $(UTILS_SRC)/usleep.h +boing.o: $(UTILS_SRC)/visual.h +boing.o: $(UTILS_SRC)/yarandom.h +boing.o: $(HACK_SRC)/xlockmoreI.h +boing.o: $(HACK_SRC)/xlockmore.h +bouncingcow.o: ../../config.h +bouncingcow.o: $(HACK_SRC)/fps.h +bouncingcow.o: $(srcdir)/gllist.h +bouncingcow.o: $(srcdir)/gltrackball.h +bouncingcow.o: $(HACK_SRC)/recanim.h +bouncingcow.o: $(srcdir)/rotator.h +bouncingcow.o: $(HACK_SRC)/screenhackI.h +bouncingcow.o: $(UTILS_SRC)/colors.h +bouncingcow.o: $(UTILS_SRC)/erase.h +bouncingcow.o: $(UTILS_SRC)/font-retry.h +bouncingcow.o: $(UTILS_SRC)/grabscreen.h +bouncingcow.o: $(UTILS_SRC)/hsv.h +bouncingcow.o: $(UTILS_SRC)/resources.h +bouncingcow.o: $(UTILS_SRC)/usleep.h +bouncingcow.o: $(UTILS_SRC)/visual.h +bouncingcow.o: $(UTILS_SRC)/yarandom.h +bouncingcow.o: $(HACK_SRC)/ximage-loader.h +bouncingcow.o: $(HACK_SRC)/xlockmoreI.h +bouncingcow.o: $(HACK_SRC)/xlockmore.h +boxed.o: $(srcdir)/boxed.h +boxed.o: ../../config.h +boxed.o: $(HACK_SRC)/fps.h +boxed.o: $(HACK_SRC)/recanim.h +boxed.o: $(HACK_SRC)/screenhackI.h +boxed.o: $(UTILS_SRC)/colors.h +boxed.o: $(UTILS_SRC)/erase.h +boxed.o: $(UTILS_SRC)/font-retry.h +boxed.o: $(UTILS_SRC)/grabscreen.h +boxed.o: $(UTILS_SRC)/hsv.h +boxed.o: $(UTILS_SRC)/resources.h +boxed.o: $(UTILS_SRC)/usleep.h +boxed.o: $(UTILS_SRC)/visual.h +boxed.o: $(UTILS_SRC)/yarandom.h +boxed.o: $(HACK_SRC)/xlockmoreI.h +boxed.o: $(HACK_SRC)/xlockmore.h +b_sphere.o: $(srcdir)/bubble3d.h +b_sphere.o: ../../config.h +b_sphere.o: $(HACK_SRC)/fps.h +b_sphere.o: $(HACK_SRC)/recanim.h +b_sphere.o: $(HACK_SRC)/screenhackI.h +b_sphere.o: $(UTILS_SRC)/colors.h +b_sphere.o: $(UTILS_SRC)/erase.h +b_sphere.o: $(UTILS_SRC)/font-retry.h +b_sphere.o: $(UTILS_SRC)/grabscreen.h +b_sphere.o: $(UTILS_SRC)/hsv.h +b_sphere.o: $(UTILS_SRC)/resources.h +b_sphere.o: $(UTILS_SRC)/usleep.h +b_sphere.o: $(UTILS_SRC)/visual.h +b_sphere.o: $(UTILS_SRC)/yarandom.h +b_sphere.o: $(HACK_SRC)/xlockmoreI.h +bubble3d.o: $(srcdir)/bubble3d.h +bubble3d.o: ../../config.h +bubble3d.o: $(HACK_SRC)/fps.h +bubble3d.o: $(HACK_SRC)/recanim.h +bubble3d.o: $(HACK_SRC)/screenhackI.h +bubble3d.o: $(UTILS_SRC)/colors.h +bubble3d.o: $(UTILS_SRC)/erase.h +bubble3d.o: $(UTILS_SRC)/font-retry.h +bubble3d.o: $(UTILS_SRC)/grabscreen.h +bubble3d.o: $(UTILS_SRC)/hsv.h +bubble3d.o: $(UTILS_SRC)/resources.h +bubble3d.o: $(UTILS_SRC)/usleep.h +bubble3d.o: $(UTILS_SRC)/visual.h +bubble3d.o: $(UTILS_SRC)/yarandom.h +bubble3d.o: $(HACK_SRC)/xlockmoreI.h +buildlwo.o: $(srcdir)/buildlwo.h +buildlwo.o: ../../config.h +cage.o: ../../config.h +cage.o: $(HACK_SRC)/fps.h +cage.o: $(HACK_SRC)/images/gen/wood_png.h +cage.o: $(HACK_SRC)/recanim.h +cage.o: $(HACK_SRC)/screenhackI.h +cage.o: $(UTILS_SRC)/colors.h +cage.o: $(UTILS_SRC)/erase.h +cage.o: $(UTILS_SRC)/font-retry.h +cage.o: $(UTILS_SRC)/grabscreen.h +cage.o: $(UTILS_SRC)/hsv.h +cage.o: $(UTILS_SRC)/resources.h +cage.o: $(UTILS_SRC)/usleep.h +cage.o: $(UTILS_SRC)/visual.h +cage.o: $(UTILS_SRC)/yarandom.h +cage.o: $(HACK_SRC)/ximage-loader.h +cage.o: $(HACK_SRC)/xlockmoreI.h +cage.o: $(HACK_SRC)/xlockmore.h +carousel.o: ../../config.h +carousel.o: $(HACK_SRC)/fps.h +carousel.o: $(srcdir)/gltrackball.h +carousel.o: $(srcdir)/grab-ximage.h +carousel.o: $(HACK_SRC)/recanim.h +carousel.o: $(srcdir)/rotator.h +carousel.o: $(HACK_SRC)/screenhackI.h +carousel.o: $(srcdir)/texfont.h +carousel.o: $(UTILS_SRC)/colors.h +carousel.o: $(UTILS_SRC)/erase.h +carousel.o: $(UTILS_SRC)/font-retry.h +carousel.o: $(UTILS_SRC)/grabscreen.h +carousel.o: $(UTILS_SRC)/hsv.h +carousel.o: $(UTILS_SRC)/resources.h +carousel.o: $(UTILS_SRC)/usleep.h +carousel.o: $(UTILS_SRC)/visual.h +carousel.o: $(UTILS_SRC)/yarandom.h +carousel.o: $(HACK_SRC)/xlockmoreI.h +carousel.o: $(HACK_SRC)/xlockmore.h +chessmodels.o: $(srcdir)/chessmodels.h +chessmodels.o: ../../config.h +circuit.o: ../../config.h +circuit.o: $(HACK_SRC)/fps.h +circuit.o: $(HACK_SRC)/recanim.h +circuit.o: $(HACK_SRC)/screenhackI.h +circuit.o: $(srcdir)/texfont.h +circuit.o: $(UTILS_SRC)/colors.h +circuit.o: $(UTILS_SRC)/erase.h +circuit.o: $(UTILS_SRC)/font-retry.h +circuit.o: $(UTILS_SRC)/grabscreen.h +circuit.o: $(UTILS_SRC)/hsv.h +circuit.o: $(UTILS_SRC)/resources.h +circuit.o: $(UTILS_SRC)/usleep.h +circuit.o: $(UTILS_SRC)/visual.h +circuit.o: $(UTILS_SRC)/yarandom.h +circuit.o: $(HACK_SRC)/xlockmoreI.h +circuit.o: $(HACK_SRC)/xlockmore.h +cityflow.o: ../../config.h +cityflow.o: $(HACK_SRC)/fps.h +cityflow.o: $(srcdir)/gltrackball.h +cityflow.o: $(HACK_SRC)/recanim.h +cityflow.o: $(HACK_SRC)/screenhackI.h +cityflow.o: $(UTILS_SRC)/colors.h +cityflow.o: $(UTILS_SRC)/erase.h +cityflow.o: $(UTILS_SRC)/font-retry.h +cityflow.o: $(UTILS_SRC)/grabscreen.h +cityflow.o: $(UTILS_SRC)/hsv.h +cityflow.o: $(UTILS_SRC)/resources.h +cityflow.o: $(UTILS_SRC)/usleep.h +cityflow.o: $(UTILS_SRC)/visual.h +cityflow.o: $(UTILS_SRC)/yarandom.h +cityflow.o: $(HACK_SRC)/xlockmoreI.h +cityflow.o: $(HACK_SRC)/xlockmore.h +companion_disc.o: ../../config.h +companion_disc.o: $(srcdir)/gllist.h +companion_heart.o: ../../config.h +companion_heart.o: $(srcdir)/gllist.h +companion.o: ../../config.h +companion.o: $(HACK_SRC)/fps.h +companion.o: $(srcdir)/gllist.h +companion.o: $(srcdir)/gltrackball.h +companion.o: $(HACK_SRC)/recanim.h +companion.o: $(srcdir)/rotator.h +companion.o: $(HACK_SRC)/screenhackI.h +companion.o: $(UTILS_SRC)/colors.h +companion.o: $(UTILS_SRC)/erase.h +companion.o: $(UTILS_SRC)/font-retry.h +companion.o: $(UTILS_SRC)/grabscreen.h +companion.o: $(UTILS_SRC)/hsv.h +companion.o: $(UTILS_SRC)/resources.h +companion.o: $(UTILS_SRC)/usleep.h +companion.o: $(UTILS_SRC)/visual.h +companion.o: $(UTILS_SRC)/yarandom.h +companion.o: $(HACK_SRC)/ximage-loader.h +companion.o: $(HACK_SRC)/xlockmoreI.h +companion.o: $(HACK_SRC)/xlockmore.h +companion_quad.o: ../../config.h +companion_quad.o: $(srcdir)/gllist.h +cow_face.o: ../../config.h +cow_face.o: $(srcdir)/gllist.h +cow_hide.o: ../../config.h +cow_hide.o: $(srcdir)/gllist.h +cow_hoofs.o: ../../config.h +cow_hoofs.o: $(srcdir)/gllist.h +cow_horns.o: ../../config.h +cow_horns.o: $(srcdir)/gllist.h +cow_tail.o: ../../config.h +cow_tail.o: $(srcdir)/gllist.h +cow_udder.o: ../../config.h +cow_udder.o: $(srcdir)/gllist.h +crackberg.o: ../../config.h +crackberg.o: $(HACK_SRC)/fps.h +crackberg.o: $(HACK_SRC)/recanim.h +crackberg.o: $(HACK_SRC)/screenhackI.h +crackberg.o: $(UTILS_SRC)/colors.h +crackberg.o: $(UTILS_SRC)/erase.h +crackberg.o: $(UTILS_SRC)/font-retry.h +crackberg.o: $(UTILS_SRC)/grabscreen.h +crackberg.o: $(UTILS_SRC)/hsv.h +crackberg.o: $(UTILS_SRC)/resources.h +crackberg.o: $(UTILS_SRC)/usleep.h +crackberg.o: $(UTILS_SRC)/visual.h +crackberg.o: $(UTILS_SRC)/yarandom.h +crackberg.o: $(HACK_SRC)/xlockmoreI.h +crackberg.o: $(HACK_SRC)/xlockmore.h +crumbler.o: ../../config.h +crumbler.o: $(HACK_SRC)/fps.h +crumbler.o: $(srcdir)/gltrackball.h +crumbler.o: $(srcdir)/quickhull.h +crumbler.o: $(HACK_SRC)/recanim.h +crumbler.o: $(srcdir)/rotator.h +crumbler.o: $(HACK_SRC)/screenhackI.h +crumbler.o: $(UTILS_SRC)/colors.h +crumbler.o: $(UTILS_SRC)/erase.h +crumbler.o: $(UTILS_SRC)/font-retry.h +crumbler.o: $(UTILS_SRC)/grabscreen.h +crumbler.o: $(UTILS_SRC)/hsv.h +crumbler.o: $(UTILS_SRC)/resources.h +crumbler.o: $(UTILS_SRC)/usleep.h +crumbler.o: $(UTILS_SRC)/visual.h +crumbler.o: $(UTILS_SRC)/yarandom.h +crumbler.o: $(HACK_SRC)/xlockmoreI.h +crumbler.o: $(HACK_SRC)/xlockmore.h +cube21.o: ../../config.h +cube21.o: $(HACK_SRC)/fps.h +cube21.o: $(srcdir)/gltrackball.h +cube21.o: $(HACK_SRC)/recanim.h +cube21.o: $(HACK_SRC)/screenhackI.h +cube21.o: $(UTILS_SRC)/colors.h +cube21.o: $(UTILS_SRC)/erase.h +cube21.o: $(UTILS_SRC)/font-retry.h +cube21.o: $(UTILS_SRC)/grabscreen.h +cube21.o: $(UTILS_SRC)/hsv.h +cube21.o: $(UTILS_SRC)/resources.h +cube21.o: $(UTILS_SRC)/usleep.h +cube21.o: $(UTILS_SRC)/visual.h +cube21.o: $(UTILS_SRC)/yarandom.h +cube21.o: $(HACK_SRC)/xlockmoreI.h +cube21.o: $(HACK_SRC)/xlockmore.h +cubenetic.o: ../../config.h +cubenetic.o: $(HACK_SRC)/fps.h +cubenetic.o: $(srcdir)/gltrackball.h +cubenetic.o: $(HACK_SRC)/recanim.h +cubenetic.o: $(srcdir)/rotator.h +cubenetic.o: $(HACK_SRC)/screenhackI.h +cubenetic.o: $(UTILS_SRC)/colors.h +cubenetic.o: $(UTILS_SRC)/erase.h +cubenetic.o: $(UTILS_SRC)/font-retry.h +cubenetic.o: $(UTILS_SRC)/grabscreen.h +cubenetic.o: $(UTILS_SRC)/hsv.h +cubenetic.o: $(UTILS_SRC)/resources.h +cubenetic.o: $(UTILS_SRC)/usleep.h +cubenetic.o: $(UTILS_SRC)/visual.h +cubenetic.o: $(UTILS_SRC)/yarandom.h +cubenetic.o: $(HACK_SRC)/xlockmoreI.h +cubenetic.o: $(HACK_SRC)/xlockmore.h +cubestack.o: ../../config.h +cubestack.o: $(HACK_SRC)/fps.h +cubestack.o: $(srcdir)/gltrackball.h +cubestack.o: $(HACK_SRC)/recanim.h +cubestack.o: $(srcdir)/rotator.h +cubestack.o: $(HACK_SRC)/screenhackI.h +cubestack.o: $(UTILS_SRC)/colors.h +cubestack.o: $(UTILS_SRC)/erase.h +cubestack.o: $(UTILS_SRC)/font-retry.h +cubestack.o: $(UTILS_SRC)/grabscreen.h +cubestack.o: $(UTILS_SRC)/hsv.h +cubestack.o: $(UTILS_SRC)/resources.h +cubestack.o: $(UTILS_SRC)/usleep.h +cubestack.o: $(UTILS_SRC)/visual.h +cubestack.o: $(UTILS_SRC)/yarandom.h +cubestack.o: $(HACK_SRC)/xlockmoreI.h +cubestack.o: $(HACK_SRC)/xlockmore.h +cubestorm.o: ../../config.h +cubestorm.o: $(HACK_SRC)/fps.h +cubestorm.o: $(srcdir)/gltrackball.h +cubestorm.o: $(HACK_SRC)/recanim.h +cubestorm.o: $(srcdir)/rotator.h +cubestorm.o: $(HACK_SRC)/screenhackI.h +cubestorm.o: $(UTILS_SRC)/colors.h +cubestorm.o: $(UTILS_SRC)/erase.h +cubestorm.o: $(UTILS_SRC)/font-retry.h +cubestorm.o: $(UTILS_SRC)/grabscreen.h +cubestorm.o: $(UTILS_SRC)/hsv.h +cubestorm.o: $(UTILS_SRC)/resources.h +cubestorm.o: $(UTILS_SRC)/usleep.h +cubestorm.o: $(UTILS_SRC)/visual.h +cubestorm.o: $(UTILS_SRC)/yarandom.h +cubestorm.o: $(HACK_SRC)/xlockmoreI.h +cubestorm.o: $(HACK_SRC)/xlockmore.h +cubetwist.o: ../../config.h +cubetwist.o: $(HACK_SRC)/fps.h +cubetwist.o: $(srcdir)/gltrackball.h +cubetwist.o: $(srcdir)/normals.h +cubetwist.o: $(HACK_SRC)/recanim.h +cubetwist.o: $(srcdir)/rotator.h +cubetwist.o: $(HACK_SRC)/screenhackI.h +cubetwist.o: $(UTILS_SRC)/colors.h +cubetwist.o: $(UTILS_SRC)/erase.h +cubetwist.o: $(UTILS_SRC)/font-retry.h +cubetwist.o: $(UTILS_SRC)/grabscreen.h +cubetwist.o: $(UTILS_SRC)/hsv.h +cubetwist.o: $(UTILS_SRC)/resources.h +cubetwist.o: $(UTILS_SRC)/usleep.h +cubetwist.o: $(UTILS_SRC)/visual.h +cubetwist.o: $(UTILS_SRC)/yarandom.h +cubetwist.o: $(HACK_SRC)/xlockmoreI.h +cubetwist.o: $(HACK_SRC)/xlockmore.h +cubicgrid.o: ../../config.h +cubicgrid.o: $(HACK_SRC)/fps.h +cubicgrid.o: $(srcdir)/gltrackball.h +cubicgrid.o: $(HACK_SRC)/recanim.h +cubicgrid.o: $(srcdir)/rotator.h +cubicgrid.o: $(HACK_SRC)/screenhackI.h +cubicgrid.o: $(UTILS_SRC)/colors.h +cubicgrid.o: $(UTILS_SRC)/erase.h +cubicgrid.o: $(UTILS_SRC)/font-retry.h +cubicgrid.o: $(UTILS_SRC)/grabscreen.h +cubicgrid.o: $(UTILS_SRC)/hsv.h +cubicgrid.o: $(UTILS_SRC)/resources.h +cubicgrid.o: $(UTILS_SRC)/usleep.h +cubicgrid.o: $(UTILS_SRC)/visual.h +cubicgrid.o: $(UTILS_SRC)/yarandom.h +cubicgrid.o: $(HACK_SRC)/xlockmoreI.h +cubicgrid.o: $(HACK_SRC)/xlockmore.h +dangerball.o: ../../config.h +dangerball.o: $(HACK_SRC)/fps.h +dangerball.o: $(srcdir)/gltrackball.h +dangerball.o: $(HACK_SRC)/recanim.h +dangerball.o: $(srcdir)/rotator.h +dangerball.o: $(HACK_SRC)/screenhackI.h +dangerball.o: $(srcdir)/sphere.h +dangerball.o: $(srcdir)/tube.h +dangerball.o: $(UTILS_SRC)/colors.h +dangerball.o: $(UTILS_SRC)/erase.h +dangerball.o: $(UTILS_SRC)/font-retry.h +dangerball.o: $(UTILS_SRC)/grabscreen.h +dangerball.o: $(UTILS_SRC)/hsv.h +dangerball.o: $(UTILS_SRC)/resources.h +dangerball.o: $(UTILS_SRC)/usleep.h +dangerball.o: $(UTILS_SRC)/visual.h +dangerball.o: $(UTILS_SRC)/yarandom.h +dangerball.o: $(HACK_SRC)/xlockmoreI.h +dangerball.o: $(HACK_SRC)/xlockmore.h +discoball.o: ../../config.h +discoball.o: $(HACK_SRC)/fps.h +discoball.o: $(srcdir)/gltrackball.h +discoball.o: $(srcdir)/normals.h +discoball.o: $(HACK_SRC)/recanim.h +discoball.o: $(srcdir)/rotator.h +discoball.o: $(HACK_SRC)/screenhackI.h +discoball.o: $(UTILS_SRC)/colors.h +discoball.o: $(UTILS_SRC)/erase.h +discoball.o: $(UTILS_SRC)/font-retry.h +discoball.o: $(UTILS_SRC)/grabscreen.h +discoball.o: $(UTILS_SRC)/hsv.h +discoball.o: $(UTILS_SRC)/resources.h +discoball.o: $(UTILS_SRC)/usleep.h +discoball.o: $(UTILS_SRC)/visual.h +discoball.o: $(UTILS_SRC)/yarandom.h +discoball.o: $(HACK_SRC)/xlockmoreI.h +discoball.o: $(HACK_SRC)/xlockmore.h +dnalogo.o: ../../config.h +dnalogo.o: $(HACK_SRC)/fps.h +dnalogo.o: $(srcdir)/gltrackball.h +dnalogo.o: $(srcdir)/normals.h +dnalogo.o: $(HACK_SRC)/recanim.h +dnalogo.o: $(srcdir)/rotator.h +dnalogo.o: $(HACK_SRC)/screenhackI.h +dnalogo.o: $(srcdir)/sphere.h +dnalogo.o: $(srcdir)/texfont.h +dnalogo.o: $(srcdir)/tube.h +dnalogo.o: $(UTILS_SRC)/colors.h +dnalogo.o: $(UTILS_SRC)/erase.h +dnalogo.o: $(UTILS_SRC)/font-retry.h +dnalogo.o: $(UTILS_SRC)/grabscreen.h +dnalogo.o: $(UTILS_SRC)/hsv.h +dnalogo.o: $(UTILS_SRC)/resources.h +dnalogo.o: $(UTILS_SRC)/usleep.h +dnalogo.o: $(UTILS_SRC)/utf8wc.h +dnalogo.o: $(UTILS_SRC)/visual.h +dnalogo.o: $(UTILS_SRC)/yarandom.h +dnalogo.o: $(HACK_SRC)/xlockmoreI.h +dnalogo.o: $(HACK_SRC)/xlockmore.h +dolphin.o: $(srcdir)/atlantis.h +dolphin.o: ../../config.h +dolphin.o: $(HACK_SRC)/fps.h +dolphin.o: $(HACK_SRC)/recanim.h +dolphin.o: $(HACK_SRC)/screenhackI.h +dolphin.o: $(UTILS_SRC)/colors.h +dolphin.o: $(UTILS_SRC)/font-retry.h +dolphin.o: $(UTILS_SRC)/grabscreen.h +dolphin.o: $(UTILS_SRC)/hsv.h +dolphin.o: $(UTILS_SRC)/resources.h +dolphin.o: $(UTILS_SRC)/usleep.h +dolphin.o: $(UTILS_SRC)/visual.h +dolphin.o: $(UTILS_SRC)/yarandom.h +dropshadow.o: ../../config.h +dropshadow.o: $(srcdir)/dropshadow.h +dropshadow.o: $(HACK_SRC)/fps.h +dropshadow.o: $(HACK_SRC)/recanim.h +dropshadow.o: $(HACK_SRC)/screenhackI.h +dropshadow.o: $(UTILS_SRC)/colors.h +dropshadow.o: $(UTILS_SRC)/erase.h +dropshadow.o: $(UTILS_SRC)/font-retry.h +dropshadow.o: $(UTILS_SRC)/grabscreen.h +dropshadow.o: $(UTILS_SRC)/hsv.h +dropshadow.o: $(UTILS_SRC)/resources.h +dropshadow.o: $(UTILS_SRC)/usleep.h +dropshadow.o: $(UTILS_SRC)/visual.h +dropshadow.o: $(UTILS_SRC)/yarandom.h +dropshadow.o: $(HACK_SRC)/xlockmoreI.h +dymaxionmap-coords.o: ../../config.h +dymaxionmap-coords.o: $(srcdir)/dymaxionmap-coords.h +dymaxionmap.o: ../../config.h +dymaxionmap.o: $(srcdir)/dymaxionmap-coords.h +dymaxionmap.o: $(HACK_SRC)/fps.h +dymaxionmap.o: $(srcdir)/gltrackball.h +dymaxionmap.o: $(HACK_SRC)/images/gen/earth_flat_png.h +dymaxionmap.o: $(HACK_SRC)/images/gen/earth_night_png.h +dymaxionmap.o: $(HACK_SRC)/images/gen/earth_png.h +dymaxionmap.o: $(HACK_SRC)/images/gen/ground_png.h +dymaxionmap.o: $(srcdir)/normals.h +dymaxionmap.o: $(HACK_SRC)/recanim.h +dymaxionmap.o: $(srcdir)/rotator.h +dymaxionmap.o: $(HACK_SRC)/screenhackI.h +dymaxionmap.o: $(srcdir)/sphere.h +dymaxionmap.o: $(srcdir)/texfont.h +dymaxionmap.o: $(UTILS_SRC)/colors.h +dymaxionmap.o: $(UTILS_SRC)/erase.h +dymaxionmap.o: $(UTILS_SRC)/font-retry.h +dymaxionmap.o: $(UTILS_SRC)/grabscreen.h +dymaxionmap.o: $(UTILS_SRC)/hsv.h +dymaxionmap.o: $(UTILS_SRC)/resources.h +dymaxionmap.o: $(UTILS_SRC)/usleep.h +dymaxionmap.o: $(UTILS_SRC)/visual.h +dymaxionmap.o: $(UTILS_SRC)/yarandom.h +dymaxionmap.o: $(HACK_SRC)/ximage-loader.h +dymaxionmap.o: $(HACK_SRC)/xlockmoreI.h +dymaxionmap.o: $(HACK_SRC)/xlockmore.h +endgame.o: $(srcdir)/chessgames.h +endgame.o: $(srcdir)/chessmodels.h +endgame.o: ../../config.h +endgame.o: $(HACK_SRC)/fps.h +endgame.o: $(srcdir)/gltrackball.h +endgame.o: $(HACK_SRC)/recanim.h +endgame.o: $(HACK_SRC)/screenhackI.h +endgame.o: $(UTILS_SRC)/colors.h +endgame.o: $(UTILS_SRC)/erase.h +endgame.o: $(UTILS_SRC)/font-retry.h +endgame.o: $(UTILS_SRC)/grabscreen.h +endgame.o: $(UTILS_SRC)/hsv.h +endgame.o: $(UTILS_SRC)/resources.h +endgame.o: $(UTILS_SRC)/usleep.h +endgame.o: $(UTILS_SRC)/visual.h +endgame.o: $(UTILS_SRC)/yarandom.h +endgame.o: $(HACK_SRC)/xlockmoreI.h +endgame.o: $(HACK_SRC)/xlockmore.h +energystream.o: ../../config.h +energystream.o: $(HACK_SRC)/fps.h +energystream.o: $(srcdir)/gltrackball.h +energystream.o: $(HACK_SRC)/recanim.h +energystream.o: $(srcdir)/rotator.h +energystream.o: $(HACK_SRC)/screenhackI.h +energystream.o: $(UTILS_SRC)/colors.h +energystream.o: $(UTILS_SRC)/erase.h +energystream.o: $(UTILS_SRC)/font-retry.h +energystream.o: $(UTILS_SRC)/grabscreen.h +energystream.o: $(UTILS_SRC)/hsv.h +energystream.o: $(UTILS_SRC)/resources.h +energystream.o: $(UTILS_SRC)/usleep.h +energystream.o: $(UTILS_SRC)/visual.h +energystream.o: $(UTILS_SRC)/yarandom.h +energystream.o: $(HACK_SRC)/xlockmoreI.h +energystream.o: $(HACK_SRC)/xlockmore.h +engine.o: ../../config.h +engine.o: $(HACK_SRC)/fps.h +engine.o: $(srcdir)/gltrackball.h +engine.o: $(HACK_SRC)/recanim.h +engine.o: $(srcdir)/rotator.h +engine.o: $(HACK_SRC)/screenhackI.h +engine.o: $(srcdir)/texfont.h +engine.o: $(UTILS_SRC)/colors.h +engine.o: $(UTILS_SRC)/erase.h +engine.o: $(UTILS_SRC)/font-retry.h +engine.o: $(UTILS_SRC)/grabscreen.h +engine.o: $(UTILS_SRC)/hsv.h +engine.o: $(UTILS_SRC)/resources.h +engine.o: $(UTILS_SRC)/usleep.h +engine.o: $(UTILS_SRC)/visual.h +engine.o: $(UTILS_SRC)/yarandom.h +engine.o: $(HACK_SRC)/xlockmoreI.h +engine.o: $(HACK_SRC)/xlockmore.h +erase-gl.o: ../../config.h +erase-gl.o: $(UTILS_SRC)/erase.h +erase-gl.o: $(UTILS_SRC)/utils.h +esper.o: ../../config.h +esper.o: $(HACK_SRC)/fps.h +esper.o: $(srcdir)/grab-ximage.h +esper.o: $(HACK_SRC)/recanim.h +esper.o: $(HACK_SRC)/screenhackI.h +esper.o: $(srcdir)/texfont.h +esper.o: $(UTILS_SRC)/colors.h +esper.o: $(UTILS_SRC)/erase.h +esper.o: $(UTILS_SRC)/font-retry.h +esper.o: $(UTILS_SRC)/grabscreen.h +esper.o: $(UTILS_SRC)/hsv.h +esper.o: $(UTILS_SRC)/resources.h +esper.o: $(UTILS_SRC)/usleep.h +esper.o: $(UTILS_SRC)/visual.h +esper.o: $(UTILS_SRC)/xshm.h +esper.o: $(UTILS_SRC)/yarandom.h +esper.o: $(HACK_SRC)/xlockmoreI.h +esper.o: $(HACK_SRC)/xlockmore.h +extrusion-helix2.o: ../../config.h +extrusion-helix2.o: $(srcdir)/extrusion.h +extrusion-helix3.o: ../../config.h +extrusion-helix3.o: $(srcdir)/extrusion.h +extrusion-helix4.o: ../../config.h +extrusion-helix4.o: $(srcdir)/extrusion.h +extrusion-joinoffset.o: ../../config.h +extrusion-joinoffset.o: $(srcdir)/extrusion.h +extrusion.o: ../../config.h +extrusion.o: $(srcdir)/extrusion.h +extrusion.o: $(HACK_SRC)/fps.h +extrusion.o: $(srcdir)/gltrackball.h +extrusion.o: $(HACK_SRC)/recanim.h +extrusion.o: $(srcdir)/rotator.h +extrusion.o: $(HACK_SRC)/screenhackI.h +extrusion.o: $(UTILS_SRC)/colors.h +extrusion.o: $(UTILS_SRC)/erase.h +extrusion.o: $(UTILS_SRC)/font-retry.h +extrusion.o: $(UTILS_SRC)/grabscreen.h +extrusion.o: $(UTILS_SRC)/hsv.h +extrusion.o: $(UTILS_SRC)/resources.h +extrusion.o: $(UTILS_SRC)/usleep.h +extrusion.o: $(UTILS_SRC)/visual.h +extrusion.o: $(UTILS_SRC)/yarandom.h +extrusion.o: $(HACK_SRC)/ximage-loader.h +extrusion.o: $(HACK_SRC)/xlockmoreI.h +extrusion.o: $(HACK_SRC)/xlockmore.h +extrusion-screw.o: ../../config.h +extrusion-screw.o: $(srcdir)/extrusion.h +extrusion-taper.o: ../../config.h +extrusion-taper.o: $(srcdir)/extrusion.h +extrusion-twistoid.o: ../../config.h +extrusion-twistoid.o: $(srcdir)/extrusion.h +flipflop.o: ../../config.h +flipflop.o: $(HACK_SRC)/fps.h +flipflop.o: $(srcdir)/gltrackball.h +flipflop.o: $(srcdir)/grab-ximage.h +flipflop.o: $(HACK_SRC)/recanim.h +flipflop.o: $(HACK_SRC)/screenhackI.h +flipflop.o: $(UTILS_SRC)/colors.h +flipflop.o: $(UTILS_SRC)/erase.h +flipflop.o: $(UTILS_SRC)/font-retry.h +flipflop.o: $(UTILS_SRC)/grabscreen.h +flipflop.o: $(UTILS_SRC)/hsv.h +flipflop.o: $(UTILS_SRC)/resources.h +flipflop.o: $(UTILS_SRC)/usleep.h +flipflop.o: $(UTILS_SRC)/visual.h +flipflop.o: $(UTILS_SRC)/yarandom.h +flipflop.o: $(HACK_SRC)/xlockmoreI.h +flipflop.o: $(HACK_SRC)/xlockmore.h +flipscreen3d.o: ../../config.h +flipscreen3d.o: $(HACK_SRC)/fps.h +flipscreen3d.o: $(srcdir)/gltrackball.h +flipscreen3d.o: $(srcdir)/grab-ximage.h +flipscreen3d.o: $(HACK_SRC)/recanim.h +flipscreen3d.o: $(HACK_SRC)/screenhackI.h +flipscreen3d.o: $(UTILS_SRC)/colors.h +flipscreen3d.o: $(UTILS_SRC)/erase.h +flipscreen3d.o: $(UTILS_SRC)/font-retry.h +flipscreen3d.o: $(UTILS_SRC)/grabscreen.h +flipscreen3d.o: $(UTILS_SRC)/hsv.h +flipscreen3d.o: $(UTILS_SRC)/resources.h +flipscreen3d.o: $(UTILS_SRC)/usleep.h +flipscreen3d.o: $(UTILS_SRC)/visual.h +flipscreen3d.o: $(UTILS_SRC)/yarandom.h +flipscreen3d.o: $(HACK_SRC)/xlockmoreI.h +flipscreen3d.o: $(HACK_SRC)/xlockmore.h +fliptext.o: ../../config.h +fliptext.o: $(HACK_SRC)/fps.h +fliptext.o: $(HACK_SRC)/recanim.h +fliptext.o: $(HACK_SRC)/screenhackI.h +fliptext.o: $(srcdir)/texfont.h +fliptext.o: $(UTILS_SRC)/colors.h +fliptext.o: $(UTILS_SRC)/erase.h +fliptext.o: $(UTILS_SRC)/font-retry.h +fliptext.o: $(UTILS_SRC)/grabscreen.h +fliptext.o: $(UTILS_SRC)/hsv.h +fliptext.o: $(UTILS_SRC)/resources.h +fliptext.o: $(UTILS_SRC)/textclient.h +fliptext.o: $(UTILS_SRC)/usleep.h +fliptext.o: $(UTILS_SRC)/visual.h +fliptext.o: $(UTILS_SRC)/yarandom.h +fliptext.o: $(HACK_SRC)/xlockmoreI.h +fliptext.o: $(HACK_SRC)/xlockmore.h +flurry.o: ../../config.h +flurry.o: $(srcdir)/flurry.h +flurry.o: $(HACK_SRC)/fps.h +flurry.o: $(srcdir)/gltrackball.h +flurry.o: $(HACK_SRC)/recanim.h +flurry.o: $(srcdir)/rotator.h +flurry.o: $(HACK_SRC)/screenhackI.h +flurry.o: $(UTILS_SRC)/colors.h +flurry.o: $(UTILS_SRC)/erase.h +flurry.o: $(UTILS_SRC)/font-retry.h +flurry.o: $(UTILS_SRC)/grabscreen.h +flurry.o: $(UTILS_SRC)/hsv.h +flurry.o: $(UTILS_SRC)/resources.h +flurry.o: $(UTILS_SRC)/usleep.h +flurry.o: $(UTILS_SRC)/visual.h +flurry.o: $(UTILS_SRC)/yarandom.h +flurry.o: $(HACK_SRC)/xlockmoreI.h +flurry.o: $(HACK_SRC)/xlockmore.h +flurry-smoke.o: ../../config.h +flurry-smoke.o: $(srcdir)/flurry.h +flurry-smoke.o: $(srcdir)/gltrackball.h +flurry-smoke.o: $(srcdir)/rotator.h +flurry-smoke.o: $(UTILS_SRC)/yarandom.h +flurry-spark.o: ../../config.h +flurry-spark.o: $(srcdir)/flurry.h +flurry-spark.o: $(srcdir)/gltrackball.h +flurry-spark.o: $(srcdir)/rotator.h +flurry-spark.o: $(UTILS_SRC)/yarandom.h +flurry-star.o: ../../config.h +flurry-star.o: $(srcdir)/flurry.h +flurry-star.o: $(srcdir)/gltrackball.h +flurry-star.o: $(srcdir)/rotator.h +flurry-star.o: $(UTILS_SRC)/yarandom.h +flurry-texture.o: ../../config.h +flurry-texture.o: $(srcdir)/flurry.h +flurry-texture.o: $(srcdir)/gltrackball.h +flurry-texture.o: $(srcdir)/rotator.h +flurry-texture.o: $(UTILS_SRC)/yarandom.h +flyingtoasters.o: ../../config.h +flyingtoasters.o: $(HACK_SRC)/fps.h +flyingtoasters.o: $(srcdir)/gllist.h +flyingtoasters.o: $(srcdir)/gltrackball.h +flyingtoasters.o: $(HACK_SRC)/images/gen/chromesphere_png.h +flyingtoasters.o: $(HACK_SRC)/images/gen/toast_png.h +flyingtoasters.o: $(HACK_SRC)/recanim.h +flyingtoasters.o: $(HACK_SRC)/screenhackI.h +flyingtoasters.o: $(UTILS_SRC)/colors.h +flyingtoasters.o: $(UTILS_SRC)/erase.h +flyingtoasters.o: $(UTILS_SRC)/font-retry.h +flyingtoasters.o: $(UTILS_SRC)/grabscreen.h +flyingtoasters.o: $(UTILS_SRC)/hsv.h +flyingtoasters.o: $(UTILS_SRC)/resources.h +flyingtoasters.o: $(UTILS_SRC)/usleep.h +flyingtoasters.o: $(UTILS_SRC)/visual.h +flyingtoasters.o: $(UTILS_SRC)/yarandom.h +flyingtoasters.o: $(HACK_SRC)/ximage-loader.h +flyingtoasters.o: $(HACK_SRC)/xlockmoreI.h +flyingtoasters.o: $(HACK_SRC)/xlockmore.h +fps-gl.o: ../../config.h +fps-gl.o: $(HACK_SRC)/fpsI.h +fps-gl.o: $(HACK_SRC)/fps.h +fps-gl.o: $(HACK_SRC)/recanim.h +fps-gl.o: $(HACK_SRC)/screenhackI.h +fps-gl.o: $(srcdir)/texfont.h +fps-gl.o: $(UTILS_SRC)/colors.h +fps-gl.o: $(UTILS_SRC)/erase.h +fps-gl.o: $(UTILS_SRC)/font-retry.h +fps-gl.o: $(UTILS_SRC)/grabscreen.h +fps-gl.o: $(UTILS_SRC)/hsv.h +fps-gl.o: $(UTILS_SRC)/resources.h +fps-gl.o: $(UTILS_SRC)/usleep.h +fps-gl.o: $(UTILS_SRC)/visual.h +fps-gl.o: $(UTILS_SRC)/yarandom.h +fps-gl.o: $(HACK_SRC)/xlockmoreI.h +gears.o: ../../config.h +gears.o: $(HACK_SRC)/fps.h +gears.o: $(srcdir)/gltrackball.h +gears.o: $(srcdir)/involute.h +gears.o: $(srcdir)/normals.h +gears.o: $(HACK_SRC)/recanim.h +gears.o: $(srcdir)/rotator.h +gears.o: $(HACK_SRC)/screenhackI.h +gears.o: $(srcdir)/tube.h +gears.o: $(UTILS_SRC)/colors.h +gears.o: $(UTILS_SRC)/erase.h +gears.o: $(UTILS_SRC)/font-retry.h +gears.o: $(UTILS_SRC)/grabscreen.h +gears.o: $(UTILS_SRC)/hsv.h +gears.o: $(UTILS_SRC)/resources.h +gears.o: $(UTILS_SRC)/usleep.h +gears.o: $(UTILS_SRC)/visual.h +gears.o: $(UTILS_SRC)/yarandom.h +gears.o: $(HACK_SRC)/xlockmoreI.h +gears.o: $(HACK_SRC)/xlockmore.h +geodesicgears.o: ../../config.h +geodesicgears.o: $(HACK_SRC)/fps.h +geodesicgears.o: $(srcdir)/gllist.h +geodesicgears.o: $(srcdir)/gltrackball.h +geodesicgears.o: $(srcdir)/involute.h +geodesicgears.o: $(srcdir)/normals.h +geodesicgears.o: $(HACK_SRC)/recanim.h +geodesicgears.o: $(srcdir)/rotator.h +geodesicgears.o: $(HACK_SRC)/screenhackI.h +geodesicgears.o: $(srcdir)/texfont.h +geodesicgears.o: $(UTILS_SRC)/colors.h +geodesicgears.o: $(UTILS_SRC)/erase.h +geodesicgears.o: $(UTILS_SRC)/font-retry.h +geodesicgears.o: $(UTILS_SRC)/grabscreen.h +geodesicgears.o: $(UTILS_SRC)/hsv.h +geodesicgears.o: $(UTILS_SRC)/resources.h +geodesicgears.o: $(UTILS_SRC)/usleep.h +geodesicgears.o: $(UTILS_SRC)/visual.h +geodesicgears.o: $(UTILS_SRC)/yarandom.h +geodesicgears.o: $(HACK_SRC)/xlockmoreI.h +geodesicgears.o: $(HACK_SRC)/xlockmore.h +geodesic.o: ../../config.h +geodesic.o: $(HACK_SRC)/fps.h +geodesic.o: $(srcdir)/gllist.h +geodesic.o: $(srcdir)/gltrackball.h +geodesic.o: $(srcdir)/normals.h +geodesic.o: $(HACK_SRC)/recanim.h +geodesic.o: $(srcdir)/rotator.h +geodesic.o: $(HACK_SRC)/screenhackI.h +geodesic.o: $(UTILS_SRC)/colors.h +geodesic.o: $(UTILS_SRC)/erase.h +geodesic.o: $(UTILS_SRC)/font-retry.h +geodesic.o: $(UTILS_SRC)/grabscreen.h +geodesic.o: $(UTILS_SRC)/hsv.h +geodesic.o: $(UTILS_SRC)/resources.h +geodesic.o: $(UTILS_SRC)/usleep.h +geodesic.o: $(UTILS_SRC)/visual.h +geodesic.o: $(UTILS_SRC)/yarandom.h +geodesic.o: $(HACK_SRC)/xlockmoreI.h +geodesic.o: $(HACK_SRC)/xlockmore.h +gflux.o: ../../config.h +gflux.o: $(HACK_SRC)/fps.h +gflux.o: $(srcdir)/gltrackball.h +gflux.o: $(srcdir)/grab-ximage.h +gflux.o: $(HACK_SRC)/recanim.h +gflux.o: $(HACK_SRC)/screenhackI.h +gflux.o: $(UTILS_SRC)/colors.h +gflux.o: $(UTILS_SRC)/erase.h +gflux.o: $(UTILS_SRC)/font-retry.h +gflux.o: $(UTILS_SRC)/grabscreen.h +gflux.o: $(UTILS_SRC)/hsv.h +gflux.o: $(UTILS_SRC)/resources.h +gflux.o: $(UTILS_SRC)/usleep.h +gflux.o: $(UTILS_SRC)/visual.h +gflux.o: $(UTILS_SRC)/yarandom.h +gflux.o: $(HACK_SRC)/xlockmoreI.h +gflux.o: $(HACK_SRC)/xlockmore.h +glblur.o: ../../config.h +glblur.o: $(HACK_SRC)/fps.h +glblur.o: $(srcdir)/gltrackball.h +glblur.o: $(HACK_SRC)/recanim.h +glblur.o: $(srcdir)/rotator.h +glblur.o: $(HACK_SRC)/screenhackI.h +glblur.o: $(UTILS_SRC)/colors.h +glblur.o: $(UTILS_SRC)/erase.h +glblur.o: $(UTILS_SRC)/font-retry.h +glblur.o: $(UTILS_SRC)/grabscreen.h +glblur.o: $(UTILS_SRC)/hsv.h +glblur.o: $(UTILS_SRC)/resources.h +glblur.o: $(UTILS_SRC)/usleep.h +glblur.o: $(UTILS_SRC)/visual.h +glblur.o: $(UTILS_SRC)/yarandom.h +glblur.o: $(HACK_SRC)/xlockmoreI.h +glblur.o: $(HACK_SRC)/xlockmore.h +glcells.o: ../../config.h +glcells.o: $(HACK_SRC)/fps.h +glcells.o: $(HACK_SRC)/recanim.h +glcells.o: $(HACK_SRC)/screenhackI.h +glcells.o: $(UTILS_SRC)/colors.h +glcells.o: $(UTILS_SRC)/erase.h +glcells.o: $(UTILS_SRC)/font-retry.h +glcells.o: $(UTILS_SRC)/grabscreen.h +glcells.o: $(UTILS_SRC)/hsv.h +glcells.o: $(UTILS_SRC)/resources.h +glcells.o: $(UTILS_SRC)/usleep.h +glcells.o: $(UTILS_SRC)/visual.h +glcells.o: $(UTILS_SRC)/yarandom.h +glcells.o: $(HACK_SRC)/xlockmoreI.h +glcells.o: $(HACK_SRC)/xlockmore.h +gleidescope.o: ../../config.h +gleidescope.o: $(HACK_SRC)/fps.h +gleidescope.o: $(srcdir)/grab-ximage.h +gleidescope.o: $(HACK_SRC)/recanim.h +gleidescope.o: $(HACK_SRC)/screenhackI.h +gleidescope.o: $(UTILS_SRC)/colors.h +gleidescope.o: $(UTILS_SRC)/erase.h +gleidescope.o: $(UTILS_SRC)/font-retry.h +gleidescope.o: $(UTILS_SRC)/grabscreen.h +gleidescope.o: $(UTILS_SRC)/hsv.h +gleidescope.o: $(UTILS_SRC)/resources.h +gleidescope.o: $(UTILS_SRC)/usleep.h +gleidescope.o: $(UTILS_SRC)/visual.h +gleidescope.o: $(UTILS_SRC)/yarandom.h +gleidescope.o: $(HACK_SRC)/ximage-loader.h +gleidescope.o: $(HACK_SRC)/xlockmoreI.h +gleidescope.o: $(HACK_SRC)/xlockmore.h +glforestfire.o: ../../config.h +glforestfire.o: $(HACK_SRC)/fps.h +glforestfire.o: $(srcdir)/gltrackball.h +glforestfire.o: $(HACK_SRC)/images/gen/ground_png.h +glforestfire.o: $(HACK_SRC)/images/gen/tree_png.h +glforestfire.o: $(HACK_SRC)/recanim.h +glforestfire.o: $(HACK_SRC)/screenhackI.h +glforestfire.o: $(UTILS_SRC)/colors.h +glforestfire.o: $(UTILS_SRC)/erase.h +glforestfire.o: $(UTILS_SRC)/font-retry.h +glforestfire.o: $(UTILS_SRC)/grabscreen.h +glforestfire.o: $(UTILS_SRC)/hsv.h +glforestfire.o: $(UTILS_SRC)/resources.h +glforestfire.o: $(UTILS_SRC)/usleep.h +glforestfire.o: $(UTILS_SRC)/visual.h +glforestfire.o: $(UTILS_SRC)/yarandom.h +glforestfire.o: $(HACK_SRC)/ximage-loader.h +glforestfire.o: $(HACK_SRC)/xlockmoreI.h +glforestfire.o: $(HACK_SRC)/xlockmore.h +glhanoi.o: ../../config.h +glhanoi.o: $(HACK_SRC)/fps.h +glhanoi.o: $(HACK_SRC)/recanim.h +glhanoi.o: $(srcdir)/rotator.h +glhanoi.o: $(HACK_SRC)/screenhackI.h +glhanoi.o: $(UTILS_SRC)/colors.h +glhanoi.o: $(UTILS_SRC)/erase.h +glhanoi.o: $(UTILS_SRC)/font-retry.h +glhanoi.o: $(UTILS_SRC)/grabscreen.h +glhanoi.o: $(UTILS_SRC)/hsv.h +glhanoi.o: $(UTILS_SRC)/resources.h +glhanoi.o: $(UTILS_SRC)/usleep.h +glhanoi.o: $(UTILS_SRC)/visual.h +glhanoi.o: $(UTILS_SRC)/yarandom.h +glhanoi.o: $(HACK_SRC)/xlockmoreI.h +glhanoi.o: $(HACK_SRC)/xlockmore.h +glknots.o: ../../config.h +glknots.o: $(HACK_SRC)/fps.h +glknots.o: $(srcdir)/gltrackball.h +glknots.o: $(HACK_SRC)/recanim.h +glknots.o: $(srcdir)/rotator.h +glknots.o: $(HACK_SRC)/screenhackI.h +glknots.o: $(srcdir)/tube.h +glknots.o: $(UTILS_SRC)/colors.h +glknots.o: $(UTILS_SRC)/erase.h +glknots.o: $(UTILS_SRC)/font-retry.h +glknots.o: $(UTILS_SRC)/grabscreen.h +glknots.o: $(UTILS_SRC)/hsv.h +glknots.o: $(UTILS_SRC)/resources.h +glknots.o: $(UTILS_SRC)/usleep.h +glknots.o: $(UTILS_SRC)/visual.h +glknots.o: $(UTILS_SRC)/yarandom.h +glknots.o: $(HACK_SRC)/xlockmoreI.h +glknots.o: $(HACK_SRC)/xlockmore.h +gllist.o: ../../config.h +gllist.o: $(srcdir)/gllist.h +glmatrix.o: ../../config.h +glmatrix.o: $(HACK_SRC)/fps.h +glmatrix.o: $(HACK_SRC)/images/gen/matrix3_png.h +glmatrix.o: $(HACK_SRC)/recanim.h +glmatrix.o: $(HACK_SRC)/screenhackI.h +glmatrix.o: $(UTILS_SRC)/colors.h +glmatrix.o: $(UTILS_SRC)/erase.h +glmatrix.o: $(UTILS_SRC)/font-retry.h +glmatrix.o: $(UTILS_SRC)/grabscreen.h +glmatrix.o: $(UTILS_SRC)/hsv.h +glmatrix.o: $(UTILS_SRC)/resources.h +glmatrix.o: $(UTILS_SRC)/usleep.h +glmatrix.o: $(UTILS_SRC)/visual.h +glmatrix.o: $(UTILS_SRC)/yarandom.h +glmatrix.o: $(HACK_SRC)/ximage-loader.h +glmatrix.o: $(HACK_SRC)/xlockmoreI.h +glmatrix.o: $(HACK_SRC)/xlockmore.h +glplanet.o: ../../config.h +glplanet.o: $(HACK_SRC)/fps.h +glplanet.o: $(srcdir)/gltrackball.h +glplanet.o: $(HACK_SRC)/images/gen/earth_night_png.h +glplanet.o: $(HACK_SRC)/images/gen/earth_png.h +glplanet.o: $(HACK_SRC)/recanim.h +glplanet.o: $(srcdir)/rotator.h +glplanet.o: $(HACK_SRC)/screenhackI.h +glplanet.o: $(srcdir)/sphere.h +glplanet.o: $(UTILS_SRC)/colors.h +glplanet.o: $(UTILS_SRC)/erase.h +glplanet.o: $(UTILS_SRC)/font-retry.h +glplanet.o: $(UTILS_SRC)/grabscreen.h +glplanet.o: $(UTILS_SRC)/hsv.h +glplanet.o: $(UTILS_SRC)/resources.h +glplanet.o: $(UTILS_SRC)/usleep.h +glplanet.o: $(UTILS_SRC)/visual.h +glplanet.o: $(UTILS_SRC)/yarandom.h +glplanet.o: $(HACK_SRC)/ximage-loader.h +glplanet.o: $(HACK_SRC)/xlockmoreI.h +glplanet.o: $(HACK_SRC)/xlockmore.h +glschool_alg.o: ../../config.h +glschool_alg.o: $(srcdir)/glschool_alg.h +glschool_alg.o: $(UTILS_SRC)/yarandom.h +glschool_gl.o: ../../config.h +glschool_gl.o: $(srcdir)/glschool_alg.h +glschool_gl.o: $(srcdir)/glschool_gl.h +glschool_gl.o: $(srcdir)/sphere.h +glschool_gl.o: $(srcdir)/tube.h +glschool.o: ../../config.h +glschool.o: $(HACK_SRC)/fps.h +glschool.o: $(srcdir)/glschool_alg.h +glschool.o: $(srcdir)/glschool_gl.h +glschool.o: $(srcdir)/glschool.h +glschool.o: $(HACK_SRC)/recanim.h +glschool.o: $(HACK_SRC)/screenhackI.h +glschool.o: $(UTILS_SRC)/colors.h +glschool.o: $(UTILS_SRC)/erase.h +glschool.o: $(UTILS_SRC)/font-retry.h +glschool.o: $(UTILS_SRC)/grabscreen.h +glschool.o: $(UTILS_SRC)/hsv.h +glschool.o: $(UTILS_SRC)/resources.h +glschool.o: $(UTILS_SRC)/usleep.h +glschool.o: $(UTILS_SRC)/visual.h +glschool.o: $(UTILS_SRC)/yarandom.h +glschool.o: $(HACK_SRC)/xlockmoreI.h +glschool.o: $(HACK_SRC)/xlockmore.h +glslideshow.o: ../../config.h +glslideshow.o: $(HACK_SRC)/fps.h +glslideshow.o: $(srcdir)/grab-ximage.h +glslideshow.o: $(HACK_SRC)/recanim.h +glslideshow.o: $(HACK_SRC)/screenhackI.h +glslideshow.o: $(srcdir)/texfont.h +glslideshow.o: $(UTILS_SRC)/colors.h +glslideshow.o: $(UTILS_SRC)/erase.h +glslideshow.o: $(UTILS_SRC)/font-retry.h +glslideshow.o: $(UTILS_SRC)/grabscreen.h +glslideshow.o: $(UTILS_SRC)/hsv.h +glslideshow.o: $(UTILS_SRC)/resources.h +glslideshow.o: $(UTILS_SRC)/usleep.h +glslideshow.o: $(UTILS_SRC)/visual.h +glslideshow.o: $(UTILS_SRC)/yarandom.h +glslideshow.o: $(HACK_SRC)/xlockmoreI.h +glslideshow.o: $(HACK_SRC)/xlockmore.h +glsnake.o: ../../config.h +glsnake.o: $(HACK_SRC)/fps.h +glsnake.o: $(HACK_SRC)/recanim.h +glsnake.o: $(HACK_SRC)/screenhackI.h +glsnake.o: $(srcdir)/texfont.h +glsnake.o: $(UTILS_SRC)/colors.h +glsnake.o: $(UTILS_SRC)/erase.h +glsnake.o: $(UTILS_SRC)/font-retry.h +glsnake.o: $(UTILS_SRC)/grabscreen.h +glsnake.o: $(UTILS_SRC)/hsv.h +glsnake.o: $(UTILS_SRC)/resources.h +glsnake.o: $(UTILS_SRC)/usleep.h +glsnake.o: $(UTILS_SRC)/visual.h +glsnake.o: $(UTILS_SRC)/yarandom.h +glsnake.o: $(HACK_SRC)/xlockmoreI.h +glsnake.o: $(HACK_SRC)/xlockmore.h +gltext.o: ../../config.h +gltext.o: $(HACK_SRC)/fps.h +gltext.o: $(srcdir)/gltrackball.h +gltext.o: $(srcdir)/glut_mroman.h +gltext.o: $(srcdir)/glut_roman.h +gltext.o: $(srcdir)/glutstroke.h +gltext.o: $(HACK_SRC)/recanim.h +gltext.o: $(srcdir)/rotator.h +gltext.o: $(HACK_SRC)/screenhackI.h +gltext.o: $(srcdir)/sphere.h +gltext.o: $(srcdir)/tube.h +gltext.o: $(UTILS_SRC)/colors.h +gltext.o: $(UTILS_SRC)/erase.h +gltext.o: $(UTILS_SRC)/font-retry.h +gltext.o: $(UTILS_SRC)/grabscreen.h +gltext.o: $(UTILS_SRC)/hsv.h +gltext.o: $(UTILS_SRC)/resources.h +gltext.o: $(UTILS_SRC)/textclient.h +gltext.o: $(UTILS_SRC)/usleep.h +gltext.o: $(UTILS_SRC)/utf8wc.h +gltext.o: $(UTILS_SRC)/visual.h +gltext.o: $(UTILS_SRC)/yarandom.h +gltext.o: $(HACK_SRC)/xlockmoreI.h +gltext.o: $(HACK_SRC)/xlockmore.h +gltrackball.o: ../../config.h +gltrackball.o: $(srcdir)/gltrackball.h +gltrackball.o: $(srcdir)/trackball.h +glut_stroke.o: ../../config.h +glut_stroke.o: $(srcdir)/glutstroke.h +glut_swidth.o: ../../config.h +glut_swidth.o: $(srcdir)/glutstroke.h +grab-ximage.o: ../../config.h +grab-ximage.o: $(srcdir)/grab-ximage.h +grab-ximage.o: $(UTILS_SRC)/grabscreen.h +grab-ximage.o: $(UTILS_SRC)/pow2.h +grab-ximage.o: $(UTILS_SRC)/visual.h +grab-ximage.o: $(UTILS_SRC)/xshm.h +hexstrut.o: ../../config.h +hexstrut.o: $(HACK_SRC)/fps.h +hexstrut.o: $(srcdir)/gltrackball.h +hexstrut.o: $(srcdir)/normals.h +hexstrut.o: $(HACK_SRC)/recanim.h +hexstrut.o: $(srcdir)/rotator.h +hexstrut.o: $(HACK_SRC)/screenhackI.h +hexstrut.o: $(UTILS_SRC)/colors.h +hexstrut.o: $(UTILS_SRC)/erase.h +hexstrut.o: $(UTILS_SRC)/font-retry.h +hexstrut.o: $(UTILS_SRC)/grabscreen.h +hexstrut.o: $(UTILS_SRC)/hsv.h +hexstrut.o: $(UTILS_SRC)/resources.h +hexstrut.o: $(UTILS_SRC)/usleep.h +hexstrut.o: $(UTILS_SRC)/visual.h +hexstrut.o: $(UTILS_SRC)/yarandom.h +hexstrut.o: $(HACK_SRC)/xlockmoreI.h +hexstrut.o: $(HACK_SRC)/xlockmore.h +hilbert.o: ../../config.h +hilbert.o: $(HACK_SRC)/fps.h +hilbert.o: $(srcdir)/gltrackball.h +hilbert.o: $(HACK_SRC)/recanim.h +hilbert.o: $(srcdir)/rotator.h +hilbert.o: $(HACK_SRC)/screenhackI.h +hilbert.o: $(srcdir)/sphere.h +hilbert.o: $(srcdir)/tube.h +hilbert.o: $(UTILS_SRC)/colors.h +hilbert.o: $(UTILS_SRC)/erase.h +hilbert.o: $(UTILS_SRC)/font-retry.h +hilbert.o: $(UTILS_SRC)/grabscreen.h +hilbert.o: $(UTILS_SRC)/hsv.h +hilbert.o: $(UTILS_SRC)/resources.h +hilbert.o: $(UTILS_SRC)/usleep.h +hilbert.o: $(UTILS_SRC)/visual.h +hilbert.o: $(UTILS_SRC)/yarandom.h +hilbert.o: $(HACK_SRC)/xlockmoreI.h +hilbert.o: $(HACK_SRC)/xlockmore.h +hydrostat.o: ../../config.h +hydrostat.o: $(HACK_SRC)/fps.h +hydrostat.o: $(srcdir)/gltrackball.h +hydrostat.o: $(srcdir)/normals.h +hydrostat.o: $(HACK_SRC)/recanim.h +hydrostat.o: $(HACK_SRC)/screenhackI.h +hydrostat.o: $(srcdir)/sphere.h +hydrostat.o: $(UTILS_SRC)/colors.h +hydrostat.o: $(UTILS_SRC)/erase.h +hydrostat.o: $(UTILS_SRC)/font-retry.h +hydrostat.o: $(UTILS_SRC)/grabscreen.h +hydrostat.o: $(UTILS_SRC)/hsv.h +hydrostat.o: $(UTILS_SRC)/resources.h +hydrostat.o: $(UTILS_SRC)/usleep.h +hydrostat.o: $(UTILS_SRC)/visual.h +hydrostat.o: $(UTILS_SRC)/yarandom.h +hydrostat.o: $(HACK_SRC)/xlockmoreI.h +hydrostat.o: $(HACK_SRC)/xlockmore.h +hypertorus.o: ../../config.h +hypertorus.o: $(HACK_SRC)/fps.h +hypertorus.o: $(srcdir)/gltrackball.h +hypertorus.o: $(HACK_SRC)/recanim.h +hypertorus.o: $(HACK_SRC)/screenhackI.h +hypertorus.o: $(UTILS_SRC)/colors.h +hypertorus.o: $(UTILS_SRC)/erase.h +hypertorus.o: $(UTILS_SRC)/font-retry.h +hypertorus.o: $(UTILS_SRC)/grabscreen.h +hypertorus.o: $(UTILS_SRC)/hsv.h +hypertorus.o: $(UTILS_SRC)/resources.h +hypertorus.o: $(UTILS_SRC)/usleep.h +hypertorus.o: $(UTILS_SRC)/visual.h +hypertorus.o: $(UTILS_SRC)/yarandom.h +hypertorus.o: $(HACK_SRC)/xlockmoreI.h +hypertorus.o: $(HACK_SRC)/xlockmore.h +hypnowheel.o: ../../config.h +hypnowheel.o: $(HACK_SRC)/fps.h +hypnowheel.o: $(HACK_SRC)/recanim.h +hypnowheel.o: $(srcdir)/rotator.h +hypnowheel.o: $(HACK_SRC)/screenhackI.h +hypnowheel.o: $(UTILS_SRC)/colors.h +hypnowheel.o: $(UTILS_SRC)/erase.h +hypnowheel.o: $(UTILS_SRC)/font-retry.h +hypnowheel.o: $(UTILS_SRC)/grabscreen.h +hypnowheel.o: $(UTILS_SRC)/hsv.h +hypnowheel.o: $(UTILS_SRC)/resources.h +hypnowheel.o: $(UTILS_SRC)/usleep.h +hypnowheel.o: $(UTILS_SRC)/visual.h +hypnowheel.o: $(UTILS_SRC)/yarandom.h +hypnowheel.o: $(HACK_SRC)/xlockmoreI.h +hypnowheel.o: $(HACK_SRC)/xlockmore.h +involute.o: ../../config.h +involute.o: $(HACK_SRC)/fps.h +involute.o: $(srcdir)/involute.h +involute.o: $(srcdir)/normals.h +involute.o: $(HACK_SRC)/recanim.h +involute.o: $(HACK_SRC)/screenhackI.h +involute.o: $(UTILS_SRC)/colors.h +involute.o: $(UTILS_SRC)/font-retry.h +involute.o: $(UTILS_SRC)/grabscreen.h +involute.o: $(UTILS_SRC)/hsv.h +involute.o: $(UTILS_SRC)/resources.h +involute.o: $(UTILS_SRC)/usleep.h +involute.o: $(UTILS_SRC)/visual.h +involute.o: $(UTILS_SRC)/yarandom.h +jigglypuff.o: ../../config.h +jigglypuff.o: $(HACK_SRC)/fps.h +jigglypuff.o: $(srcdir)/gltrackball.h +jigglypuff.o: $(HACK_SRC)/images/gen/jigglymap_png.h +jigglypuff.o: $(HACK_SRC)/recanim.h +jigglypuff.o: $(HACK_SRC)/screenhackI.h +jigglypuff.o: $(UTILS_SRC)/colors.h +jigglypuff.o: $(UTILS_SRC)/erase.h +jigglypuff.o: $(UTILS_SRC)/font-retry.h +jigglypuff.o: $(UTILS_SRC)/grabscreen.h +jigglypuff.o: $(UTILS_SRC)/hsv.h +jigglypuff.o: $(UTILS_SRC)/resources.h +jigglypuff.o: $(UTILS_SRC)/usleep.h +jigglypuff.o: $(UTILS_SRC)/visual.h +jigglypuff.o: $(UTILS_SRC)/yarandom.h +jigglypuff.o: $(HACK_SRC)/ximage-loader.h +jigglypuff.o: $(HACK_SRC)/xlockmoreI.h +jigglypuff.o: $(HACK_SRC)/xlockmore.h +jigsaw.o: ../../config.h +jigsaw.o: $(HACK_SRC)/fps.h +jigsaw.o: $(srcdir)/gltrackball.h +jigsaw.o: $(srcdir)/grab-ximage.h +jigsaw.o: $(srcdir)/normals.h +jigsaw.o: $(HACK_SRC)/recanim.h +jigsaw.o: $(srcdir)/rotator.h +jigsaw.o: $(HACK_SRC)/screenhackI.h +jigsaw.o: $(srcdir)/texfont.h +jigsaw.o: $(UTILS_SRC)/colors.h +jigsaw.o: $(UTILS_SRC)/erase.h +jigsaw.o: $(UTILS_SRC)/font-retry.h +jigsaw.o: $(UTILS_SRC)/grabscreen.h +jigsaw.o: $(UTILS_SRC)/hsv.h +jigsaw.o: $(UTILS_SRC)/resources.h +jigsaw.o: $(UTILS_SRC)/spline.h +jigsaw.o: $(UTILS_SRC)/usleep.h +jigsaw.o: $(UTILS_SRC)/visual.h +jigsaw.o: $(UTILS_SRC)/yarandom.h +jigsaw.o: $(HACK_SRC)/xlockmoreI.h +jigsaw.o: $(HACK_SRC)/xlockmore.h +juggler3d.o: ../../config.h +juggler3d.o: $(HACK_SRC)/fps.h +juggler3d.o: $(srcdir)/gltrackball.h +juggler3d.o: $(HACK_SRC)/recanim.h +juggler3d.o: $(srcdir)/rotator.h +juggler3d.o: $(HACK_SRC)/screenhackI.h +juggler3d.o: $(srcdir)/sphere.h +juggler3d.o: $(srcdir)/texfont.h +juggler3d.o: $(srcdir)/tube.h +juggler3d.o: $(UTILS_SRC)/colors.h +juggler3d.o: $(UTILS_SRC)/erase.h +juggler3d.o: $(UTILS_SRC)/font-retry.h +juggler3d.o: $(UTILS_SRC)/grabscreen.h +juggler3d.o: $(UTILS_SRC)/hsv.h +juggler3d.o: $(UTILS_SRC)/resources.h +juggler3d.o: $(UTILS_SRC)/usleep.h +juggler3d.o: $(UTILS_SRC)/visual.h +juggler3d.o: $(UTILS_SRC)/yarandom.h +juggler3d.o: $(HACK_SRC)/xlockmoreI.h +juggler3d.o: $(HACK_SRC)/xlockmore.h +kaleidocycle.o: ../../config.h +kaleidocycle.o: $(HACK_SRC)/fps.h +kaleidocycle.o: $(srcdir)/gltrackball.h +kaleidocycle.o: $(srcdir)/normals.h +kaleidocycle.o: $(HACK_SRC)/recanim.h +kaleidocycle.o: $(srcdir)/rotator.h +kaleidocycle.o: $(HACK_SRC)/screenhackI.h +kaleidocycle.o: $(UTILS_SRC)/colors.h +kaleidocycle.o: $(UTILS_SRC)/erase.h +kaleidocycle.o: $(UTILS_SRC)/font-retry.h +kaleidocycle.o: $(UTILS_SRC)/grabscreen.h +kaleidocycle.o: $(UTILS_SRC)/hsv.h +kaleidocycle.o: $(UTILS_SRC)/resources.h +kaleidocycle.o: $(UTILS_SRC)/usleep.h +kaleidocycle.o: $(UTILS_SRC)/visual.h +kaleidocycle.o: $(UTILS_SRC)/yarandom.h +kaleidocycle.o: $(HACK_SRC)/xlockmoreI.h +kaleidocycle.o: $(HACK_SRC)/xlockmore.h +klein.o: ../../config.h +klein.o: $(srcdir)/curlicue.h +klein.o: $(HACK_SRC)/fps.h +klein.o: $(srcdir)/gltrackball.h +klein.o: $(HACK_SRC)/recanim.h +klein.o: $(HACK_SRC)/screenhackI.h +klein.o: $(UTILS_SRC)/colors.h +klein.o: $(UTILS_SRC)/erase.h +klein.o: $(UTILS_SRC)/font-retry.h +klein.o: $(UTILS_SRC)/grabscreen.h +klein.o: $(UTILS_SRC)/hsv.h +klein.o: $(UTILS_SRC)/resources.h +klein.o: $(UTILS_SRC)/usleep.h +klein.o: $(UTILS_SRC)/visual.h +klein.o: $(UTILS_SRC)/yarandom.h +klein.o: $(HACK_SRC)/xlockmoreI.h +klein.o: $(HACK_SRC)/xlockmore.h +lament_model.o: ../../config.h +lament_model.o: $(srcdir)/gllist.h +lament.o: ../../config.h +lament.o: $(HACK_SRC)/fps.h +lament.o: $(srcdir)/gllist.h +lament.o: $(srcdir)/gltrackball.h +lament.o: $(HACK_SRC)/images/gen/lament512_png.h +lament.o: $(srcdir)/normals.h +lament.o: $(HACK_SRC)/recanim.h +lament.o: $(srcdir)/rotator.h +lament.o: $(HACK_SRC)/screenhackI.h +lament.o: $(UTILS_SRC)/colors.h +lament.o: $(UTILS_SRC)/erase.h +lament.o: $(UTILS_SRC)/font-retry.h +lament.o: $(UTILS_SRC)/grabscreen.h +lament.o: $(UTILS_SRC)/hsv.h +lament.o: $(UTILS_SRC)/resources.h +lament.o: $(UTILS_SRC)/usleep.h +lament.o: $(UTILS_SRC)/visual.h +lament.o: $(UTILS_SRC)/yarandom.h +lament.o: $(HACK_SRC)/ximage-loader.h +lament.o: $(HACK_SRC)/xlockmoreI.h +lament.o: $(HACK_SRC)/xlockmore.h +lavalite.o: ../../config.h +lavalite.o: $(HACK_SRC)/fps.h +lavalite.o: $(srcdir)/gltrackball.h +lavalite.o: $(srcdir)/marching.h +lavalite.o: $(HACK_SRC)/recanim.h +lavalite.o: $(srcdir)/rotator.h +lavalite.o: $(HACK_SRC)/screenhackI.h +lavalite.o: $(UTILS_SRC)/colors.h +lavalite.o: $(UTILS_SRC)/erase.h +lavalite.o: $(UTILS_SRC)/font-retry.h +lavalite.o: $(UTILS_SRC)/grabscreen.h +lavalite.o: $(UTILS_SRC)/hsv.h +lavalite.o: $(UTILS_SRC)/resources.h +lavalite.o: $(UTILS_SRC)/usleep.h +lavalite.o: $(UTILS_SRC)/visual.h +lavalite.o: $(UTILS_SRC)/yarandom.h +lavalite.o: $(HACK_SRC)/ximage-loader.h +lavalite.o: $(HACK_SRC)/xlockmoreI.h +lavalite.o: $(HACK_SRC)/xlockmore.h +lockward.o: ../../config.h +lockward.o: $(HACK_SRC)/fps.h +lockward.o: $(HACK_SRC)/recanim.h +lockward.o: $(HACK_SRC)/screenhackI.h +lockward.o: $(UTILS_SRC)/colors.h +lockward.o: $(UTILS_SRC)/erase.h +lockward.o: $(UTILS_SRC)/font-retry.h +lockward.o: $(UTILS_SRC)/grabscreen.h +lockward.o: $(UTILS_SRC)/hsv.h +lockward.o: $(UTILS_SRC)/resources.h +lockward.o: $(UTILS_SRC)/usleep.h +lockward.o: $(UTILS_SRC)/visual.h +lockward.o: $(UTILS_SRC)/yarandom.h +lockward.o: $(HACK_SRC)/xlockmoreI.h +lockward.o: $(HACK_SRC)/xlockmore.h +marching.o: ../../config.h +marching.o: $(srcdir)/marching.h +marching.o: $(srcdir)/normals.h +maze3d.o: ../../config.h +maze3d.o: $(HACK_SRC)/fps.h +maze3d.o: $(HACK_SRC)/images/gen/bob_png.h +maze3d.o: $(HACK_SRC)/images/gen/brick1_png.h +maze3d.o: $(HACK_SRC)/images/gen/brick2_png.h +maze3d.o: $(HACK_SRC)/images/gen/logo-32_png.h +maze3d.o: $(HACK_SRC)/images/gen/start_png.h +maze3d.o: $(HACK_SRC)/images/gen/wood2_png.h +maze3d.o: $(HACK_SRC)/recanim.h +maze3d.o: $(HACK_SRC)/screenhackI.h +maze3d.o: $(UTILS_SRC)/colors.h +maze3d.o: $(UTILS_SRC)/erase.h +maze3d.o: $(UTILS_SRC)/font-retry.h +maze3d.o: $(UTILS_SRC)/grabscreen.h +maze3d.o: $(UTILS_SRC)/hsv.h +maze3d.o: $(UTILS_SRC)/resources.h +maze3d.o: $(UTILS_SRC)/usleep.h +maze3d.o: $(UTILS_SRC)/visual.h +maze3d.o: $(UTILS_SRC)/yarandom.h +maze3d.o: $(HACK_SRC)/ximage-loader.h +maze3d.o: $(HACK_SRC)/xlockmoreI.h +maze3d.o: $(HACK_SRC)/xlockmore.h +menger.o: ../../config.h +menger.o: $(HACK_SRC)/fps.h +menger.o: $(srcdir)/gltrackball.h +menger.o: $(HACK_SRC)/recanim.h +menger.o: $(srcdir)/rotator.h +menger.o: $(HACK_SRC)/screenhackI.h +menger.o: $(UTILS_SRC)/colors.h +menger.o: $(UTILS_SRC)/erase.h +menger.o: $(UTILS_SRC)/font-retry.h +menger.o: $(UTILS_SRC)/grabscreen.h +menger.o: $(UTILS_SRC)/hsv.h +menger.o: $(UTILS_SRC)/resources.h +menger.o: $(UTILS_SRC)/usleep.h +menger.o: $(UTILS_SRC)/visual.h +menger.o: $(UTILS_SRC)/yarandom.h +menger.o: $(HACK_SRC)/xlockmoreI.h +menger.o: $(HACK_SRC)/xlockmore.h +mirrorblob.o: ../../config.h +mirrorblob.o: $(HACK_SRC)/fps.h +mirrorblob.o: $(srcdir)/gltrackball.h +mirrorblob.o: $(srcdir)/grab-ximage.h +mirrorblob.o: $(HACK_SRC)/recanim.h +mirrorblob.o: $(HACK_SRC)/screenhackI.h +mirrorblob.o: $(UTILS_SRC)/colors.h +mirrorblob.o: $(UTILS_SRC)/erase.h +mirrorblob.o: $(UTILS_SRC)/font-retry.h +mirrorblob.o: $(UTILS_SRC)/grabscreen.h +mirrorblob.o: $(UTILS_SRC)/hsv.h +mirrorblob.o: $(UTILS_SRC)/resources.h +mirrorblob.o: $(UTILS_SRC)/usleep.h +mirrorblob.o: $(UTILS_SRC)/visual.h +mirrorblob.o: $(UTILS_SRC)/yarandom.h +mirrorblob.o: $(HACK_SRC)/xlockmoreI.h +mirrorblob.o: $(HACK_SRC)/xlockmore.h +moebiusgears.o: ../../config.h +moebiusgears.o: $(HACK_SRC)/fps.h +moebiusgears.o: $(srcdir)/gltrackball.h +moebiusgears.o: $(srcdir)/involute.h +moebiusgears.o: $(srcdir)/normals.h +moebiusgears.o: $(HACK_SRC)/recanim.h +moebiusgears.o: $(srcdir)/rotator.h +moebiusgears.o: $(HACK_SRC)/screenhackI.h +moebiusgears.o: $(UTILS_SRC)/colors.h +moebiusgears.o: $(UTILS_SRC)/erase.h +moebiusgears.o: $(UTILS_SRC)/font-retry.h +moebiusgears.o: $(UTILS_SRC)/grabscreen.h +moebiusgears.o: $(UTILS_SRC)/hsv.h +moebiusgears.o: $(UTILS_SRC)/resources.h +moebiusgears.o: $(UTILS_SRC)/usleep.h +moebiusgears.o: $(UTILS_SRC)/visual.h +moebiusgears.o: $(UTILS_SRC)/yarandom.h +moebiusgears.o: $(HACK_SRC)/xlockmoreI.h +moebiusgears.o: $(HACK_SRC)/xlockmore.h +moebius.o: ../../config.h +moebius.o: $(HACK_SRC)/fps.h +moebius.o: $(srcdir)/gltrackball.h +moebius.o: $(HACK_SRC)/recanim.h +moebius.o: $(srcdir)/rotator.h +moebius.o: $(HACK_SRC)/screenhackI.h +moebius.o: $(srcdir)/sphere.h +moebius.o: $(srcdir)/tube.h +moebius.o: $(UTILS_SRC)/colors.h +moebius.o: $(UTILS_SRC)/erase.h +moebius.o: $(UTILS_SRC)/font-retry.h +moebius.o: $(UTILS_SRC)/grabscreen.h +moebius.o: $(UTILS_SRC)/hsv.h +moebius.o: $(UTILS_SRC)/resources.h +moebius.o: $(UTILS_SRC)/usleep.h +moebius.o: $(UTILS_SRC)/visual.h +moebius.o: $(UTILS_SRC)/yarandom.h +moebius.o: $(HACK_SRC)/xlockmoreI.h +moebius.o: $(HACK_SRC)/xlockmore.h +molecule.o: ../../config.h +molecule.o: $(HACK_SRC)/fps.h +molecule.o: $(srcdir)/gltrackball.h +molecule.o: molecules.h +molecule.o: $(HACK_SRC)/recanim.h +molecule.o: $(srcdir)/rotator.h +molecule.o: $(HACK_SRC)/screenhackI.h +molecule.o: $(srcdir)/sphere.h +molecule.o: $(srcdir)/texfont.h +molecule.o: $(srcdir)/tube.h +molecule.o: $(UTILS_SRC)/colors.h +molecule.o: $(UTILS_SRC)/erase.h +molecule.o: $(UTILS_SRC)/font-retry.h +molecule.o: $(UTILS_SRC)/grabscreen.h +molecule.o: $(UTILS_SRC)/hsv.h +molecule.o: $(UTILS_SRC)/resources.h +molecule.o: $(UTILS_SRC)/usleep.h +molecule.o: $(UTILS_SRC)/visual.h +molecule.o: $(UTILS_SRC)/yarandom.h +molecule.o: $(HACK_SRC)/xlockmoreI.h +molecule.o: $(HACK_SRC)/xlockmore.h +morph3d.o: ../../config.h +morph3d.o: $(HACK_SRC)/fps.h +morph3d.o: $(HACK_SRC)/recanim.h +morph3d.o: $(HACK_SRC)/screenhackI.h +morph3d.o: $(UTILS_SRC)/colors.h +morph3d.o: $(UTILS_SRC)/erase.h +morph3d.o: $(UTILS_SRC)/font-retry.h +morph3d.o: $(UTILS_SRC)/grabscreen.h +morph3d.o: $(UTILS_SRC)/hsv.h +morph3d.o: $(UTILS_SRC)/resources.h +morph3d.o: $(UTILS_SRC)/usleep.h +morph3d.o: $(UTILS_SRC)/visual.h +morph3d.o: $(UTILS_SRC)/yarandom.h +morph3d.o: $(HACK_SRC)/xlockmoreI.h +morph3d.o: $(HACK_SRC)/xlockmore.h +noof.o: ../../config.h +noof.o: $(HACK_SRC)/fps.h +noof.o: $(HACK_SRC)/recanim.h +noof.o: $(HACK_SRC)/screenhackI.h +noof.o: $(UTILS_SRC)/colors.h +noof.o: $(UTILS_SRC)/erase.h +noof.o: $(UTILS_SRC)/font-retry.h +noof.o: $(UTILS_SRC)/grabscreen.h +noof.o: $(UTILS_SRC)/hsv.h +noof.o: $(UTILS_SRC)/pow2.h +noof.o: $(UTILS_SRC)/resources.h +noof.o: $(UTILS_SRC)/usleep.h +noof.o: $(UTILS_SRC)/visual.h +noof.o: $(UTILS_SRC)/yarandom.h +noof.o: $(HACK_SRC)/xlockmoreI.h +noof.o: $(HACK_SRC)/xlockmore.h +normals.o: ../../config.h +normals.o: $(srcdir)/normals.h +peepers.o: ../../config.h +peepers.o: $(HACK_SRC)/fps.h +peepers.o: $(srcdir)/gltrackball.h +peepers.o: $(HACK_SRC)/images/gen/iris_png.h +peepers.o: $(HACK_SRC)/images/gen/sclera_png.h +peepers.o: $(srcdir)/normals.h +peepers.o: $(HACK_SRC)/recanim.h +peepers.o: $(srcdir)/rotator.h +peepers.o: $(HACK_SRC)/screenhackI.h +peepers.o: $(UTILS_SRC)/colors.h +peepers.o: $(UTILS_SRC)/erase.h +peepers.o: $(UTILS_SRC)/font-retry.h +peepers.o: $(UTILS_SRC)/grabscreen.h +peepers.o: $(UTILS_SRC)/hsv.h +peepers.o: $(UTILS_SRC)/resources.h +peepers.o: $(UTILS_SRC)/usleep.h +peepers.o: $(UTILS_SRC)/visual.h +peepers.o: $(UTILS_SRC)/yarandom.h +peepers.o: $(HACK_SRC)/ximage-loader.h +peepers.o: $(HACK_SRC)/xlockmoreI.h +peepers.o: $(HACK_SRC)/xlockmore.h +photopile.o: ../../config.h +photopile.o: $(srcdir)/dropshadow.h +photopile.o: $(HACK_SRC)/fps.h +photopile.o: $(srcdir)/grab-ximage.h +photopile.o: $(HACK_SRC)/recanim.h +photopile.o: $(HACK_SRC)/screenhackI.h +photopile.o: $(srcdir)/texfont.h +photopile.o: $(UTILS_SRC)/colors.h +photopile.o: $(UTILS_SRC)/erase.h +photopile.o: $(UTILS_SRC)/font-retry.h +photopile.o: $(UTILS_SRC)/grabscreen.h +photopile.o: $(UTILS_SRC)/hsv.h +photopile.o: $(UTILS_SRC)/resources.h +photopile.o: $(UTILS_SRC)/usleep.h +photopile.o: $(UTILS_SRC)/visual.h +photopile.o: $(UTILS_SRC)/yarandom.h +photopile.o: $(HACK_SRC)/xlockmoreI.h +photopile.o: $(HACK_SRC)/xlockmore.h +pinion.o: ../../config.h +pinion.o: $(HACK_SRC)/fps.h +pinion.o: $(srcdir)/gltrackball.h +pinion.o: $(srcdir)/involute.h +pinion.o: $(srcdir)/normals.h +pinion.o: $(HACK_SRC)/recanim.h +pinion.o: $(HACK_SRC)/screenhackI.h +pinion.o: $(srcdir)/texfont.h +pinion.o: $(UTILS_SRC)/colors.h +pinion.o: $(UTILS_SRC)/erase.h +pinion.o: $(UTILS_SRC)/font-retry.h +pinion.o: $(UTILS_SRC)/grabscreen.h +pinion.o: $(UTILS_SRC)/hsv.h +pinion.o: $(UTILS_SRC)/resources.h +pinion.o: $(UTILS_SRC)/usleep.h +pinion.o: $(UTILS_SRC)/visual.h +pinion.o: $(UTILS_SRC)/yarandom.h +pinion.o: $(HACK_SRC)/xlockmoreI.h +pinion.o: $(HACK_SRC)/xlockmore.h +pipeobjs.o: $(srcdir)/buildlwo.h +pipeobjs.o: ../../config.h +pipes.o: $(srcdir)/buildlwo.h +pipes.o: ../../config.h +pipes.o: $(HACK_SRC)/fps.h +pipes.o: $(srcdir)/gltrackball.h +pipes.o: $(HACK_SRC)/recanim.h +pipes.o: $(HACK_SRC)/screenhackI.h +pipes.o: $(srcdir)/sphere.h +pipes.o: $(srcdir)/teapot.h +pipes.o: $(UTILS_SRC)/colors.h +pipes.o: $(UTILS_SRC)/erase.h +pipes.o: $(UTILS_SRC)/font-retry.h +pipes.o: $(UTILS_SRC)/grabscreen.h +pipes.o: $(UTILS_SRC)/hsv.h +pipes.o: $(UTILS_SRC)/resources.h +pipes.o: $(UTILS_SRC)/usleep.h +pipes.o: $(UTILS_SRC)/visual.h +pipes.o: $(UTILS_SRC)/yarandom.h +pipes.o: $(HACK_SRC)/xlockmoreI.h +pipes.o: $(HACK_SRC)/xlockmore.h +polyhedra-gl.o: ../../config.h +polyhedra-gl.o: $(HACK_SRC)/fps.h +polyhedra-gl.o: $(srcdir)/gltrackball.h +polyhedra-gl.o: $(srcdir)/normals.h +polyhedra-gl.o: $(srcdir)/polyhedra.h +polyhedra-gl.o: $(HACK_SRC)/recanim.h +polyhedra-gl.o: $(srcdir)/rotator.h +polyhedra-gl.o: $(HACK_SRC)/screenhackI.h +polyhedra-gl.o: $(srcdir)/teapot.h +polyhedra-gl.o: $(srcdir)/texfont.h +polyhedra-gl.o: $(UTILS_SRC)/colors.h +polyhedra-gl.o: $(UTILS_SRC)/erase.h +polyhedra-gl.o: $(UTILS_SRC)/font-retry.h +polyhedra-gl.o: $(UTILS_SRC)/grabscreen.h +polyhedra-gl.o: $(UTILS_SRC)/hsv.h +polyhedra-gl.o: $(UTILS_SRC)/resources.h +polyhedra-gl.o: $(UTILS_SRC)/usleep.h +polyhedra-gl.o: $(UTILS_SRC)/visual.h +polyhedra-gl.o: $(UTILS_SRC)/yarandom.h +polyhedra-gl.o: $(HACK_SRC)/xlockmoreI.h +polyhedra-gl.o: $(HACK_SRC)/xlockmore.h +polyhedra.o: ../../config.h +polyhedra.o: $(srcdir)/polyhedra.h +polytopes.o: ../../config.h +polytopes.o: $(HACK_SRC)/fps.h +polytopes.o: $(srcdir)/gltrackball.h +polytopes.o: $(HACK_SRC)/recanim.h +polytopes.o: $(HACK_SRC)/screenhackI.h +polytopes.o: $(UTILS_SRC)/colors.h +polytopes.o: $(UTILS_SRC)/erase.h +polytopes.o: $(UTILS_SRC)/font-retry.h +polytopes.o: $(UTILS_SRC)/grabscreen.h +polytopes.o: $(UTILS_SRC)/hsv.h +polytopes.o: $(UTILS_SRC)/resources.h +polytopes.o: $(UTILS_SRC)/usleep.h +polytopes.o: $(UTILS_SRC)/visual.h +polytopes.o: $(UTILS_SRC)/yarandom.h +polytopes.o: $(HACK_SRC)/xlockmoreI.h +polytopes.o: $(HACK_SRC)/xlockmore.h +projectiveplane.o: ../../config.h +projectiveplane.o: $(srcdir)/curlicue.h +projectiveplane.o: $(HACK_SRC)/fps.h +projectiveplane.o: $(srcdir)/gltrackball.h +projectiveplane.o: $(HACK_SRC)/recanim.h +projectiveplane.o: $(HACK_SRC)/screenhackI.h +projectiveplane.o: $(UTILS_SRC)/colors.h +projectiveplane.o: $(UTILS_SRC)/erase.h +projectiveplane.o: $(UTILS_SRC)/font-retry.h +projectiveplane.o: $(UTILS_SRC)/grabscreen.h +projectiveplane.o: $(UTILS_SRC)/hsv.h +projectiveplane.o: $(UTILS_SRC)/resources.h +projectiveplane.o: $(UTILS_SRC)/usleep.h +projectiveplane.o: $(UTILS_SRC)/visual.h +projectiveplane.o: $(UTILS_SRC)/yarandom.h +projectiveplane.o: $(HACK_SRC)/xlockmoreI.h +projectiveplane.o: $(HACK_SRC)/xlockmore.h +providence.o: ../../config.h +providence.o: $(HACK_SRC)/fps.h +providence.o: $(srcdir)/gltrackball.h +providence.o: $(HACK_SRC)/recanim.h +providence.o: $(HACK_SRC)/screenhackI.h +providence.o: $(UTILS_SRC)/colors.h +providence.o: $(UTILS_SRC)/erase.h +providence.o: $(UTILS_SRC)/font-retry.h +providence.o: $(UTILS_SRC)/grabscreen.h +providence.o: $(UTILS_SRC)/hsv.h +providence.o: $(UTILS_SRC)/resources.h +providence.o: $(UTILS_SRC)/usleep.h +providence.o: $(UTILS_SRC)/visual.h +providence.o: $(UTILS_SRC)/yarandom.h +providence.o: $(HACK_SRC)/xlockmoreI.h +providence.o: $(HACK_SRC)/xlockmore.h +pulsar.o: ../../config.h +pulsar.o: $(HACK_SRC)/fps.h +pulsar.o: $(HACK_SRC)/recanim.h +pulsar.o: $(HACK_SRC)/screenhackI.h +pulsar.o: $(UTILS_SRC)/colors.h +pulsar.o: $(UTILS_SRC)/erase.h +pulsar.o: $(UTILS_SRC)/font-retry.h +pulsar.o: $(UTILS_SRC)/grabscreen.h +pulsar.o: $(UTILS_SRC)/hsv.h +pulsar.o: $(UTILS_SRC)/resources.h +pulsar.o: $(UTILS_SRC)/usleep.h +pulsar.o: $(UTILS_SRC)/visual.h +pulsar.o: $(UTILS_SRC)/yarandom.h +pulsar.o: $(HACK_SRC)/ximage-loader.h +pulsar.o: $(HACK_SRC)/xlockmoreI.h +pulsar.o: $(HACK_SRC)/xlockmore.h +quasicrystal.o: ../../config.h +quasicrystal.o: $(HACK_SRC)/fps.h +quasicrystal.o: $(HACK_SRC)/recanim.h +quasicrystal.o: $(srcdir)/rotator.h +quasicrystal.o: $(HACK_SRC)/screenhackI.h +quasicrystal.o: $(UTILS_SRC)/colors.h +quasicrystal.o: $(UTILS_SRC)/erase.h +quasicrystal.o: $(UTILS_SRC)/font-retry.h +quasicrystal.o: $(UTILS_SRC)/grabscreen.h +quasicrystal.o: $(UTILS_SRC)/hsv.h +quasicrystal.o: $(UTILS_SRC)/resources.h +quasicrystal.o: $(UTILS_SRC)/usleep.h +quasicrystal.o: $(UTILS_SRC)/visual.h +quasicrystal.o: $(UTILS_SRC)/yarandom.h +quasicrystal.o: $(HACK_SRC)/xlockmoreI.h +quasicrystal.o: $(HACK_SRC)/xlockmore.h +queens.o: $(srcdir)/chessmodels.h +queens.o: ../../config.h +queens.o: $(HACK_SRC)/fps.h +queens.o: $(srcdir)/gltrackball.h +queens.o: $(HACK_SRC)/recanim.h +queens.o: $(HACK_SRC)/screenhackI.h +queens.o: $(UTILS_SRC)/colors.h +queens.o: $(UTILS_SRC)/erase.h +queens.o: $(UTILS_SRC)/font-retry.h +queens.o: $(UTILS_SRC)/grabscreen.h +queens.o: $(UTILS_SRC)/hsv.h +queens.o: $(UTILS_SRC)/resources.h +queens.o: $(UTILS_SRC)/usleep.h +queens.o: $(UTILS_SRC)/visual.h +queens.o: $(UTILS_SRC)/yarandom.h +queens.o: $(HACK_SRC)/xlockmoreI.h +queens.o: $(HACK_SRC)/xlockmore.h +quickhull.o: ../../config.h +quickhull.o: $(HACK_SRC)/fps.h +quickhull.o: $(srcdir)/quickhull.h +quickhull.o: $(HACK_SRC)/recanim.h +quickhull.o: $(HACK_SRC)/screenhackI.h +quickhull.o: $(UTILS_SRC)/colors.h +quickhull.o: $(UTILS_SRC)/font-retry.h +quickhull.o: $(UTILS_SRC)/grabscreen.h +quickhull.o: $(UTILS_SRC)/hsv.h +quickhull.o: $(UTILS_SRC)/resources.h +quickhull.o: $(UTILS_SRC)/usleep.h +quickhull.o: $(UTILS_SRC)/visual.h +quickhull.o: $(UTILS_SRC)/yarandom.h +raverhoop.o: ../../config.h +raverhoop.o: $(HACK_SRC)/fps.h +raverhoop.o: $(srcdir)/gltrackball.h +raverhoop.o: $(HACK_SRC)/recanim.h +raverhoop.o: $(srcdir)/rotator.h +raverhoop.o: $(HACK_SRC)/screenhackI.h +raverhoop.o: $(UTILS_SRC)/colors.h +raverhoop.o: $(UTILS_SRC)/erase.h +raverhoop.o: $(UTILS_SRC)/font-retry.h +raverhoop.o: $(UTILS_SRC)/grabscreen.h +raverhoop.o: $(UTILS_SRC)/hsv.h +raverhoop.o: $(UTILS_SRC)/resources.h +raverhoop.o: $(UTILS_SRC)/usleep.h +raverhoop.o: $(UTILS_SRC)/visual.h +raverhoop.o: $(UTILS_SRC)/yarandom.h +raverhoop.o: $(HACK_SRC)/xlockmoreI.h +raverhoop.o: $(HACK_SRC)/xlockmore.h +razzledazzle.o: ../../config.h +razzledazzle.o: $(HACK_SRC)/fps.h +razzledazzle.o: $(srcdir)/gllist.h +razzledazzle.o: $(srcdir)/normals.h +razzledazzle.o: $(HACK_SRC)/recanim.h +razzledazzle.o: $(HACK_SRC)/screenhackI.h +razzledazzle.o: $(UTILS_SRC)/colors.h +razzledazzle.o: $(UTILS_SRC)/erase.h +razzledazzle.o: $(UTILS_SRC)/font-retry.h +razzledazzle.o: $(UTILS_SRC)/grabscreen.h +razzledazzle.o: $(UTILS_SRC)/hsv.h +razzledazzle.o: $(UTILS_SRC)/resources.h +razzledazzle.o: $(UTILS_SRC)/usleep.h +razzledazzle.o: $(UTILS_SRC)/visual.h +razzledazzle.o: $(UTILS_SRC)/yarandom.h +razzledazzle.o: $(HACK_SRC)/xlockmoreI.h +razzledazzle.o: $(HACK_SRC)/xlockmore.h +robot.o: ../../config.h +robot.o: $(srcdir)/gllist.h +robot-wireframe.o: ../../config.h +robot-wireframe.o: $(srcdir)/gllist.h +romanboy.o: ../../config.h +romanboy.o: $(srcdir)/curlicue.h +romanboy.o: $(HACK_SRC)/fps.h +romanboy.o: $(srcdir)/gltrackball.h +romanboy.o: $(HACK_SRC)/recanim.h +romanboy.o: $(HACK_SRC)/screenhackI.h +romanboy.o: $(UTILS_SRC)/colors.h +romanboy.o: $(UTILS_SRC)/erase.h +romanboy.o: $(UTILS_SRC)/font-retry.h +romanboy.o: $(UTILS_SRC)/grabscreen.h +romanboy.o: $(UTILS_SRC)/hsv.h +romanboy.o: $(UTILS_SRC)/resources.h +romanboy.o: $(UTILS_SRC)/usleep.h +romanboy.o: $(UTILS_SRC)/visual.h +romanboy.o: $(UTILS_SRC)/yarandom.h +romanboy.o: $(HACK_SRC)/xlockmoreI.h +romanboy.o: $(HACK_SRC)/xlockmore.h +rotator.o: ../../config.h +rotator.o: $(srcdir)/rotator.h +rotator.o: $(UTILS_SRC)/yarandom.h +rubikblocks.o: ../../config.h +rubikblocks.o: $(HACK_SRC)/fps.h +rubikblocks.o: $(srcdir)/gltrackball.h +rubikblocks.o: $(HACK_SRC)/recanim.h +rubikblocks.o: $(srcdir)/rotator.h +rubikblocks.o: $(HACK_SRC)/screenhackI.h +rubikblocks.o: $(UTILS_SRC)/colors.h +rubikblocks.o: $(UTILS_SRC)/erase.h +rubikblocks.o: $(UTILS_SRC)/font-retry.h +rubikblocks.o: $(UTILS_SRC)/grabscreen.h +rubikblocks.o: $(UTILS_SRC)/hsv.h +rubikblocks.o: $(UTILS_SRC)/resources.h +rubikblocks.o: $(UTILS_SRC)/usleep.h +rubikblocks.o: $(UTILS_SRC)/visual.h +rubikblocks.o: $(UTILS_SRC)/yarandom.h +rubikblocks.o: $(HACK_SRC)/xlockmoreI.h +rubikblocks.o: $(HACK_SRC)/xlockmore.h +rubik.o: ../../config.h +rubik.o: $(HACK_SRC)/fps.h +rubik.o: $(srcdir)/gltrackball.h +rubik.o: $(HACK_SRC)/recanim.h +rubik.o: $(HACK_SRC)/screenhackI.h +rubik.o: $(UTILS_SRC)/colors.h +rubik.o: $(UTILS_SRC)/erase.h +rubik.o: $(UTILS_SRC)/font-retry.h +rubik.o: $(UTILS_SRC)/grabscreen.h +rubik.o: $(UTILS_SRC)/hsv.h +rubik.o: $(UTILS_SRC)/resources.h +rubik.o: $(UTILS_SRC)/usleep.h +rubik.o: $(UTILS_SRC)/visual.h +rubik.o: $(UTILS_SRC)/yarandom.h +rubik.o: $(HACK_SRC)/xlockmoreI.h +rubik.o: $(HACK_SRC)/xlockmore.h +s1_1.o: ../../config.h +s1_1.o: $(srcdir)/gllist.h +s1_2.o: ../../config.h +s1_2.o: $(srcdir)/gllist.h +s1_3.o: ../../config.h +s1_3.o: $(srcdir)/gllist.h +s1_4.o: ../../config.h +s1_4.o: $(srcdir)/gllist.h +s1_5.o: ../../config.h +s1_5.o: $(srcdir)/gllist.h +s1_6.o: ../../config.h +s1_6.o: $(srcdir)/gllist.h +s1_b.o: ../../config.h +s1_b.o: $(srcdir)/gllist.h +sballs.o: ../../config.h +sballs.o: $(HACK_SRC)/fps.h +sballs.o: $(srcdir)/gltrackball.h +sballs.o: $(HACK_SRC)/images/gen/sball-bg_png.h +sballs.o: $(HACK_SRC)/images/gen/sball_png.h +sballs.o: $(HACK_SRC)/recanim.h +sballs.o: $(HACK_SRC)/screenhackI.h +sballs.o: $(UTILS_SRC)/colors.h +sballs.o: $(UTILS_SRC)/erase.h +sballs.o: $(UTILS_SRC)/font-retry.h +sballs.o: $(UTILS_SRC)/grabscreen.h +sballs.o: $(UTILS_SRC)/hsv.h +sballs.o: $(UTILS_SRC)/resources.h +sballs.o: $(UTILS_SRC)/usleep.h +sballs.o: $(UTILS_SRC)/visual.h +sballs.o: $(UTILS_SRC)/yarandom.h +sballs.o: $(HACK_SRC)/ximage-loader.h +sballs.o: $(HACK_SRC)/xlockmoreI.h +sballs.o: $(HACK_SRC)/xlockmore.h +seccam.o: ../../config.h +seccam.o: $(srcdir)/gllist.h +shark.o: $(srcdir)/atlantis.h +shark.o: ../../config.h +shark.o: $(HACK_SRC)/fps.h +shark.o: $(HACK_SRC)/recanim.h +shark.o: $(HACK_SRC)/screenhackI.h +shark.o: $(UTILS_SRC)/colors.h +shark.o: $(UTILS_SRC)/font-retry.h +shark.o: $(UTILS_SRC)/grabscreen.h +shark.o: $(UTILS_SRC)/hsv.h +shark.o: $(UTILS_SRC)/resources.h +shark.o: $(UTILS_SRC)/usleep.h +shark.o: $(UTILS_SRC)/visual.h +shark.o: $(UTILS_SRC)/yarandom.h +ships.o: ../../config.h +ships.o: $(srcdir)/gllist.h +sierpinski3d.o: ../../config.h +sierpinski3d.o: $(HACK_SRC)/fps.h +sierpinski3d.o: $(srcdir)/gltrackball.h +sierpinski3d.o: $(HACK_SRC)/recanim.h +sierpinski3d.o: $(srcdir)/rotator.h +sierpinski3d.o: $(HACK_SRC)/screenhackI.h +sierpinski3d.o: $(UTILS_SRC)/colors.h +sierpinski3d.o: $(UTILS_SRC)/erase.h +sierpinski3d.o: $(UTILS_SRC)/font-retry.h +sierpinski3d.o: $(UTILS_SRC)/grabscreen.h +sierpinski3d.o: $(UTILS_SRC)/hsv.h +sierpinski3d.o: $(UTILS_SRC)/resources.h +sierpinski3d.o: $(UTILS_SRC)/usleep.h +sierpinski3d.o: $(UTILS_SRC)/visual.h +sierpinski3d.o: $(UTILS_SRC)/yarandom.h +sierpinski3d.o: $(HACK_SRC)/xlockmoreI.h +sierpinski3d.o: $(HACK_SRC)/xlockmore.h +skytentacles.o: ../../config.h +skytentacles.o: $(HACK_SRC)/fps.h +skytentacles.o: $(srcdir)/gltrackball.h +skytentacles.o: $(HACK_SRC)/images/gen/scales_png.h +skytentacles.o: $(srcdir)/normals.h +skytentacles.o: $(HACK_SRC)/recanim.h +skytentacles.o: $(srcdir)/rotator.h +skytentacles.o: $(HACK_SRC)/screenhackI.h +skytentacles.o: $(UTILS_SRC)/colors.h +skytentacles.o: $(UTILS_SRC)/erase.h +skytentacles.o: $(UTILS_SRC)/font-retry.h +skytentacles.o: $(UTILS_SRC)/grabscreen.h +skytentacles.o: $(UTILS_SRC)/hsv.h +skytentacles.o: $(UTILS_SRC)/resources.h +skytentacles.o: $(UTILS_SRC)/usleep.h +skytentacles.o: $(UTILS_SRC)/visual.h +skytentacles.o: $(UTILS_SRC)/yarandom.h +skytentacles.o: $(HACK_SRC)/ximage-loader.h +skytentacles.o: $(HACK_SRC)/xlockmoreI.h +skytentacles.o: $(HACK_SRC)/xlockmore.h +sonar-icmp.o: ../../config.h +sonar-icmp.o: $(HACK_SRC)/fps.h +sonar-icmp.o: $(HACK_SRC)/recanim.h +sonar-icmp.o: $(HACK_SRC)/screenhackI.h +sonar-icmp.o: $(srcdir)/sonar.h +sonar-icmp.o: $(UTILS_SRC)/aligned_malloc.h +sonar-icmp.o: $(UTILS_SRC)/async_netdb.h +sonar-icmp.o: $(UTILS_SRC)/colors.h +sonar-icmp.o: $(UTILS_SRC)/font-retry.h +sonar-icmp.o: $(UTILS_SRC)/grabscreen.h +sonar-icmp.o: $(UTILS_SRC)/hsv.h +sonar-icmp.o: $(UTILS_SRC)/resources.h +sonar-icmp.o: $(UTILS_SRC)/thread_util.h +sonar-icmp.o: $(UTILS_SRC)/usleep.h +sonar-icmp.o: $(UTILS_SRC)/version.h +sonar-icmp.o: $(UTILS_SRC)/visual.h +sonar-icmp.o: $(UTILS_SRC)/yarandom.h +sonar.o: ../../config.h +sonar.o: $(HACK_SRC)/fps.h +sonar.o: $(srcdir)/gltrackball.h +sonar.o: $(HACK_SRC)/recanim.h +sonar.o: $(srcdir)/rotator.h +sonar.o: $(HACK_SRC)/screenhackI.h +sonar.o: $(srcdir)/sonar.h +sonar.o: $(srcdir)/texfont.h +sonar.o: $(UTILS_SRC)/aligned_malloc.h +sonar.o: $(UTILS_SRC)/colors.h +sonar.o: $(UTILS_SRC)/erase.h +sonar.o: $(UTILS_SRC)/font-retry.h +sonar.o: $(UTILS_SRC)/grabscreen.h +sonar.o: $(UTILS_SRC)/hsv.h +sonar.o: $(UTILS_SRC)/resources.h +sonar.o: $(UTILS_SRC)/thread_util.h +sonar.o: $(UTILS_SRC)/usleep.h +sonar.o: $(UTILS_SRC)/visual.h +sonar.o: $(UTILS_SRC)/yarandom.h +sonar.o: $(HACK_SRC)/xlockmoreI.h +sonar.o: $(HACK_SRC)/xlockmore.h +sonar-sim.o: ../../config.h +sonar-sim.o: $(HACK_SRC)/fps.h +sonar-sim.o: $(HACK_SRC)/recanim.h +sonar-sim.o: $(HACK_SRC)/screenhackI.h +sonar-sim.o: $(srcdir)/sonar.h +sonar-sim.o: $(UTILS_SRC)/colors.h +sonar-sim.o: $(UTILS_SRC)/font-retry.h +sonar-sim.o: $(UTILS_SRC)/grabscreen.h +sonar-sim.o: $(UTILS_SRC)/hsv.h +sonar-sim.o: $(UTILS_SRC)/resources.h +sonar-sim.o: $(UTILS_SRC)/usleep.h +sonar-sim.o: $(UTILS_SRC)/visual.h +sonar-sim.o: $(UTILS_SRC)/yarandom.h +spheremonics.o: ../../config.h +spheremonics.o: $(HACK_SRC)/fps.h +spheremonics.o: $(srcdir)/gltrackball.h +spheremonics.o: $(srcdir)/normals.h +spheremonics.o: $(HACK_SRC)/recanim.h +spheremonics.o: $(srcdir)/rotator.h +spheremonics.o: $(HACK_SRC)/screenhackI.h +spheremonics.o: $(srcdir)/texfont.h +spheremonics.o: $(UTILS_SRC)/colors.h +spheremonics.o: $(UTILS_SRC)/erase.h +spheremonics.o: $(UTILS_SRC)/font-retry.h +spheremonics.o: $(UTILS_SRC)/grabscreen.h +spheremonics.o: $(UTILS_SRC)/hsv.h +spheremonics.o: $(UTILS_SRC)/resources.h +spheremonics.o: $(UTILS_SRC)/usleep.h +spheremonics.o: $(UTILS_SRC)/visual.h +spheremonics.o: $(UTILS_SRC)/yarandom.h +spheremonics.o: $(HACK_SRC)/xlockmoreI.h +spheremonics.o: $(HACK_SRC)/xlockmore.h +sphere.o: ../../config.h +sphere.o: $(srcdir)/sphere.h +splitflap.o: ../../config.h +splitflap.o: $(HACK_SRC)/fps.h +splitflap.o: $(srcdir)/gllist.h +splitflap.o: $(srcdir)/gltrackball.h +splitflap.o: $(HACK_SRC)/recanim.h +splitflap.o: $(srcdir)/rotator.h +splitflap.o: $(HACK_SRC)/screenhackI.h +splitflap.o: $(srcdir)/texfont.h +splitflap.o: $(UTILS_SRC)/colors.h +splitflap.o: $(UTILS_SRC)/erase.h +splitflap.o: $(UTILS_SRC)/font-retry.h +splitflap.o: $(UTILS_SRC)/grabscreen.h +splitflap.o: $(UTILS_SRC)/hsv.h +splitflap.o: $(UTILS_SRC)/resources.h +splitflap.o: $(UTILS_SRC)/textclient.h +splitflap.o: $(UTILS_SRC)/usleep.h +splitflap.o: $(UTILS_SRC)/utf8wc.h +splitflap.o: $(UTILS_SRC)/visual.h +splitflap.o: $(UTILS_SRC)/yarandom.h +splitflap.o: $(HACK_SRC)/ximage-loader.h +splitflap.o: $(HACK_SRC)/xlockmoreI.h +splitflap.o: $(HACK_SRC)/xlockmore.h +splitflap_obj.o: ../../config.h +splitflap_obj.o: $(srcdir)/gllist.h +splodesic.o: ../../config.h +splodesic.o: $(HACK_SRC)/fps.h +splodesic.o: $(srcdir)/gltrackball.h +splodesic.o: $(srcdir)/normals.h +splodesic.o: $(HACK_SRC)/recanim.h +splodesic.o: $(srcdir)/rotator.h +splodesic.o: $(HACK_SRC)/screenhackI.h +splodesic.o: $(UTILS_SRC)/colors.h +splodesic.o: $(UTILS_SRC)/erase.h +splodesic.o: $(UTILS_SRC)/font-retry.h +splodesic.o: $(UTILS_SRC)/grabscreen.h +splodesic.o: $(UTILS_SRC)/hsv.h +splodesic.o: $(UTILS_SRC)/resources.h +splodesic.o: $(UTILS_SRC)/usleep.h +splodesic.o: $(UTILS_SRC)/visual.h +splodesic.o: $(UTILS_SRC)/yarandom.h +splodesic.o: $(HACK_SRC)/xlockmoreI.h +splodesic.o: $(HACK_SRC)/xlockmore.h +sproingies.o: ../../config.h +sproingies.o: $(HACK_SRC)/fps.h +sproingies.o: $(srcdir)/gllist.h +sproingies.o: $(HACK_SRC)/recanim.h +sproingies.o: $(HACK_SRC)/screenhackI.h +sproingies.o: $(srcdir)/sproingies.h +sproingies.o: $(UTILS_SRC)/colors.h +sproingies.o: $(UTILS_SRC)/erase.h +sproingies.o: $(UTILS_SRC)/font-retry.h +sproingies.o: $(UTILS_SRC)/grabscreen.h +sproingies.o: $(UTILS_SRC)/hsv.h +sproingies.o: $(UTILS_SRC)/resources.h +sproingies.o: $(UTILS_SRC)/usleep.h +sproingies.o: $(UTILS_SRC)/visual.h +sproingies.o: $(UTILS_SRC)/yarandom.h +sproingies.o: $(HACK_SRC)/xlockmoreI.h +sproingiewrap.o: ../../config.h +sproingiewrap.o: $(HACK_SRC)/fps.h +sproingiewrap.o: $(HACK_SRC)/recanim.h +sproingiewrap.o: $(HACK_SRC)/screenhackI.h +sproingiewrap.o: $(srcdir)/sproingies.h +sproingiewrap.o: $(UTILS_SRC)/colors.h +sproingiewrap.o: $(UTILS_SRC)/erase.h +sproingiewrap.o: $(UTILS_SRC)/font-retry.h +sproingiewrap.o: $(UTILS_SRC)/grabscreen.h +sproingiewrap.o: $(UTILS_SRC)/hsv.h +sproingiewrap.o: $(UTILS_SRC)/resources.h +sproingiewrap.o: $(UTILS_SRC)/usleep.h +sproingiewrap.o: $(UTILS_SRC)/visual.h +sproingiewrap.o: $(UTILS_SRC)/yarandom.h +sproingiewrap.o: $(HACK_SRC)/xlockmoreI.h +sproingiewrap.o: $(HACK_SRC)/xlockmore.h +stairs.o: ../../config.h +stairs.o: $(HACK_SRC)/fps.h +stairs.o: $(srcdir)/gltrackball.h +stairs.o: $(HACK_SRC)/images/gen/wood_png.h +stairs.o: $(HACK_SRC)/recanim.h +stairs.o: $(HACK_SRC)/screenhackI.h +stairs.o: $(srcdir)/sphere.h +stairs.o: $(UTILS_SRC)/colors.h +stairs.o: $(UTILS_SRC)/erase.h +stairs.o: $(UTILS_SRC)/font-retry.h +stairs.o: $(UTILS_SRC)/grabscreen.h +stairs.o: $(UTILS_SRC)/hsv.h +stairs.o: $(UTILS_SRC)/resources.h +stairs.o: $(UTILS_SRC)/usleep.h +stairs.o: $(UTILS_SRC)/visual.h +stairs.o: $(UTILS_SRC)/yarandom.h +stairs.o: $(HACK_SRC)/ximage-loader.h +stairs.o: $(HACK_SRC)/xlockmoreI.h +stairs.o: $(HACK_SRC)/xlockmore.h +starwars.o: ../../config.h +starwars.o: $(HACK_SRC)/fps.h +starwars.o: $(srcdir)/glut_roman.h +starwars.o: $(srcdir)/glutstroke.h +starwars.o: $(HACK_SRC)/recanim.h +starwars.o: $(HACK_SRC)/screenhackI.h +starwars.o: $(srcdir)/starwars.h +starwars.o: $(srcdir)/texfont.h +starwars.o: $(UTILS_SRC)/colors.h +starwars.o: $(UTILS_SRC)/erase.h +starwars.o: $(UTILS_SRC)/font-retry.h +starwars.o: $(UTILS_SRC)/grabscreen.h +starwars.o: $(UTILS_SRC)/hsv.h +starwars.o: $(UTILS_SRC)/resources.h +starwars.o: $(UTILS_SRC)/textclient.h +starwars.o: $(UTILS_SRC)/usleep.h +starwars.o: $(UTILS_SRC)/utf8wc.h +starwars.o: $(UTILS_SRC)/visual.h +starwars.o: $(UTILS_SRC)/yarandom.h +starwars.o: $(HACK_SRC)/xlockmoreI.h +starwars.o: $(HACK_SRC)/xlockmore.h +stonerview-move.o: ../../config.h +stonerview-move.o: $(srcdir)/stonerview.h +stonerview-move.o: $(srcdir)/stonerview-move.h +stonerview-move.o: $(srcdir)/stonerview-osc.h +stonerview-move.o: $(UTILS_SRC)/yarandom.h +stonerview.o: ../../config.h +stonerview.o: $(HACK_SRC)/fps.h +stonerview.o: $(srcdir)/gltrackball.h +stonerview.o: $(HACK_SRC)/recanim.h +stonerview.o: $(HACK_SRC)/screenhackI.h +stonerview.o: $(srcdir)/stonerview.h +stonerview.o: $(srcdir)/stonerview-move.h +stonerview.o: $(srcdir)/stonerview-osc.h +stonerview.o: $(UTILS_SRC)/colors.h +stonerview.o: $(UTILS_SRC)/erase.h +stonerview.o: $(UTILS_SRC)/font-retry.h +stonerview.o: $(UTILS_SRC)/grabscreen.h +stonerview.o: $(UTILS_SRC)/hsv.h +stonerview.o: $(UTILS_SRC)/resources.h +stonerview.o: $(UTILS_SRC)/usleep.h +stonerview.o: $(UTILS_SRC)/visual.h +stonerview.o: $(UTILS_SRC)/yarandom.h +stonerview.o: $(HACK_SRC)/xlockmoreI.h +stonerview.o: $(HACK_SRC)/xlockmore.h +stonerview-osc.o: ../../config.h +stonerview-osc.o: $(srcdir)/stonerview.h +stonerview-osc.o: $(srcdir)/stonerview-move.h +stonerview-osc.o: $(srcdir)/stonerview-osc.h +stonerview-osc.o: $(UTILS_SRC)/yarandom.h +stonerview-view.o: ../../config.h +stonerview-view.o: $(srcdir)/stonerview.h +stonerview-view.o: $(srcdir)/stonerview-move.h +stonerview-view.o: $(srcdir)/stonerview-osc.h +superquadrics.o: ../../config.h +superquadrics.o: $(HACK_SRC)/fps.h +superquadrics.o: $(HACK_SRC)/recanim.h +superquadrics.o: $(HACK_SRC)/screenhackI.h +superquadrics.o: $(UTILS_SRC)/colors.h +superquadrics.o: $(UTILS_SRC)/erase.h +superquadrics.o: $(UTILS_SRC)/font-retry.h +superquadrics.o: $(UTILS_SRC)/grabscreen.h +superquadrics.o: $(UTILS_SRC)/hsv.h +superquadrics.o: $(UTILS_SRC)/resources.h +superquadrics.o: $(UTILS_SRC)/usleep.h +superquadrics.o: $(UTILS_SRC)/visual.h +superquadrics.o: $(UTILS_SRC)/yarandom.h +superquadrics.o: $(HACK_SRC)/xlockmoreI.h +superquadrics.o: $(HACK_SRC)/xlockmore.h +surfaces.o: ../../config.h +surfaces.o: $(HACK_SRC)/fps.h +surfaces.o: $(srcdir)/gltrackball.h +surfaces.o: $(HACK_SRC)/recanim.h +surfaces.o: $(srcdir)/rotator.h +surfaces.o: $(HACK_SRC)/screenhackI.h +surfaces.o: $(UTILS_SRC)/colors.h +surfaces.o: $(UTILS_SRC)/erase.h +surfaces.o: $(UTILS_SRC)/font-retry.h +surfaces.o: $(UTILS_SRC)/grabscreen.h +surfaces.o: $(UTILS_SRC)/hsv.h +surfaces.o: $(UTILS_SRC)/resources.h +surfaces.o: $(UTILS_SRC)/usleep.h +surfaces.o: $(UTILS_SRC)/visual.h +surfaces.o: $(UTILS_SRC)/yarandom.h +surfaces.o: $(HACK_SRC)/xlockmoreI.h +surfaces.o: $(HACK_SRC)/xlockmore.h +swim.o: $(srcdir)/atlantis.h +swim.o: ../../config.h +swim.o: $(HACK_SRC)/fps.h +swim.o: $(HACK_SRC)/recanim.h +swim.o: $(HACK_SRC)/screenhackI.h +swim.o: $(UTILS_SRC)/colors.h +swim.o: $(UTILS_SRC)/erase.h +swim.o: $(UTILS_SRC)/font-retry.h +swim.o: $(UTILS_SRC)/grabscreen.h +swim.o: $(UTILS_SRC)/hsv.h +swim.o: $(UTILS_SRC)/resources.h +swim.o: $(UTILS_SRC)/usleep.h +swim.o: $(UTILS_SRC)/visual.h +swim.o: $(UTILS_SRC)/yarandom.h +swim.o: $(HACK_SRC)/xlockmoreI.h +tangram.o: ../../config.h +tangram.o: $(HACK_SRC)/fps.h +tangram.o: $(HACK_SRC)/recanim.h +tangram.o: $(HACK_SRC)/screenhackI.h +tangram.o: $(srcdir)/tangram_shapes.h +tangram.o: $(srcdir)/texfont.h +tangram.o: $(UTILS_SRC)/colors.h +tangram.o: $(UTILS_SRC)/erase.h +tangram.o: $(UTILS_SRC)/font-retry.h +tangram.o: $(UTILS_SRC)/grabscreen.h +tangram.o: $(UTILS_SRC)/hsv.h +tangram.o: $(UTILS_SRC)/resources.h +tangram.o: $(UTILS_SRC)/usleep.h +tangram.o: $(UTILS_SRC)/visual.h +tangram.o: $(UTILS_SRC)/yarandom.h +tangram.o: $(HACK_SRC)/xlockmoreI.h +tangram.o: $(HACK_SRC)/xlockmore.h +tangram_shapes.o: ../../config.h +tangram_shapes.o: $(srcdir)/tangram_shapes.h +teapot.o: ../../config.h +teapot.o: $(srcdir)/teapot.h +texfont.o: ../../config.h +texfont.o: $(HACK_SRC)/fps.h +texfont.o: $(srcdir)/texfont.h +texfont.o: $(UTILS_SRC)/pow2.h +texfont.o: $(UTILS_SRC)/resources.h +texfont.o: $(UTILS_SRC)/xft.h +texfont.o: $(UTILS_SRC)/xshm.h +timetunnel.o: ../../config.h +timetunnel.o: $(HACK_SRC)/fps.h +timetunnel.o: $(srcdir)/gltrackball.h +timetunnel.o: $(HACK_SRC)/images/gen/logo-180_png.h +timetunnel.o: $(HACK_SRC)/images/gen/timetunnel0_png.h +timetunnel.o: $(HACK_SRC)/images/gen/timetunnel1_png.h +timetunnel.o: $(HACK_SRC)/images/gen/timetunnel2_png.h +timetunnel.o: $(HACK_SRC)/images/gen/tunnelstar_png.h +timetunnel.o: $(HACK_SRC)/recanim.h +timetunnel.o: $(srcdir)/rotator.h +timetunnel.o: $(HACK_SRC)/screenhackI.h +timetunnel.o: $(UTILS_SRC)/colors.h +timetunnel.o: $(UTILS_SRC)/erase.h +timetunnel.o: $(UTILS_SRC)/font-retry.h +timetunnel.o: $(UTILS_SRC)/grabscreen.h +timetunnel.o: $(UTILS_SRC)/hsv.h +timetunnel.o: $(UTILS_SRC)/resources.h +timetunnel.o: $(UTILS_SRC)/usleep.h +timetunnel.o: $(UTILS_SRC)/visual.h +timetunnel.o: $(UTILS_SRC)/yarandom.h +timetunnel.o: $(HACK_SRC)/ximage-loader.h +timetunnel.o: $(HACK_SRC)/xlockmoreI.h +timetunnel.o: $(HACK_SRC)/xlockmore.h +toast2.o: ../../config.h +toast2.o: $(srcdir)/gllist.h +toaster_base.o: ../../config.h +toaster_base.o: $(srcdir)/gllist.h +toaster_handle2.o: ../../config.h +toaster_handle2.o: $(srcdir)/gllist.h +toaster_handle.o: ../../config.h +toaster_handle.o: $(srcdir)/gllist.h +toaster_jet.o: ../../config.h +toaster_jet.o: $(srcdir)/gllist.h +toaster_knob.o: ../../config.h +toaster_knob.o: $(srcdir)/gllist.h +toaster.o: ../../config.h +toaster.o: $(srcdir)/gllist.h +toaster_slots.o: ../../config.h +toaster_slots.o: $(srcdir)/gllist.h +toaster_wing.o: ../../config.h +toaster_wing.o: $(srcdir)/gllist.h +toast.o: ../../config.h +toast.o: $(srcdir)/gllist.h +topblock.o: ../../config.h +topblock.o: $(HACK_SRC)/fps.h +topblock.o: $(srcdir)/gltrackball.h +topblock.o: $(HACK_SRC)/recanim.h +topblock.o: $(HACK_SRC)/screenhackI.h +topblock.o: $(srcdir)/sphere.h +topblock.o: $(srcdir)/topblock.h +topblock.o: $(srcdir)/tube.h +topblock.o: $(UTILS_SRC)/colors.h +topblock.o: $(UTILS_SRC)/erase.h +topblock.o: $(UTILS_SRC)/font-retry.h +topblock.o: $(UTILS_SRC)/grabscreen.h +topblock.o: $(UTILS_SRC)/hsv.h +topblock.o: $(UTILS_SRC)/resources.h +topblock.o: $(UTILS_SRC)/usleep.h +topblock.o: $(UTILS_SRC)/visual.h +topblock.o: $(UTILS_SRC)/yarandom.h +topblock.o: $(HACK_SRC)/xlockmoreI.h +topblock.o: $(HACK_SRC)/xlockmore.h +trackball.o: ../../config.h +trackball.o: $(srcdir)/trackball.h +tronbit_idle1.o: ../../config.h +tronbit_idle1.o: $(srcdir)/gllist.h +tronbit_idle2.o: ../../config.h +tronbit_idle2.o: $(srcdir)/gllist.h +tronbit_no.o: ../../config.h +tronbit_no.o: $(srcdir)/gllist.h +tronbit.o: ../../config.h +tronbit.o: $(HACK_SRC)/fps.h +tronbit.o: $(srcdir)/gllist.h +tronbit.o: $(srcdir)/gltrackball.h +tronbit.o: $(HACK_SRC)/recanim.h +tronbit.o: $(srcdir)/rotator.h +tronbit.o: $(HACK_SRC)/screenhackI.h +tronbit.o: $(srcdir)/sphere.h +tronbit.o: $(UTILS_SRC)/colors.h +tronbit.o: $(UTILS_SRC)/erase.h +tronbit.o: $(UTILS_SRC)/font-retry.h +tronbit.o: $(UTILS_SRC)/grabscreen.h +tronbit.o: $(UTILS_SRC)/hsv.h +tronbit.o: $(UTILS_SRC)/resources.h +tronbit.o: $(UTILS_SRC)/usleep.h +tronbit.o: $(UTILS_SRC)/visual.h +tronbit.o: $(UTILS_SRC)/yarandom.h +tronbit.o: $(HACK_SRC)/xlockmoreI.h +tronbit.o: $(HACK_SRC)/xlockmore.h +tronbit_yes.o: ../../config.h +tronbit_yes.o: $(srcdir)/gllist.h +tube.o: ../../config.h +tube.o: $(srcdir)/tube.h +tunnel_draw.o: ../../config.h +tunnel_draw.o: $(HACK_SRC)/fps.h +tunnel_draw.o: $(HACK_SRC)/recanim.h +tunnel_draw.o: $(HACK_SRC)/screenhackI.h +tunnel_draw.o: $(srcdir)/tunnel_draw.h +tunnel_draw.o: $(UTILS_SRC)/colors.h +tunnel_draw.o: $(UTILS_SRC)/erase.h +tunnel_draw.o: $(UTILS_SRC)/font-retry.h +tunnel_draw.o: $(UTILS_SRC)/grabscreen.h +tunnel_draw.o: $(UTILS_SRC)/hsv.h +tunnel_draw.o: $(UTILS_SRC)/resources.h +tunnel_draw.o: $(UTILS_SRC)/usleep.h +tunnel_draw.o: $(UTILS_SRC)/visual.h +tunnel_draw.o: $(UTILS_SRC)/yarandom.h +tunnel_draw.o: $(HACK_SRC)/xlockmoreI.h +unicrud.o: ../../config.h +unicrud.o: $(HACK_SRC)/fps.h +unicrud.o: $(srcdir)/gltrackball.h +unicrud.o: $(HACK_SRC)/recanim.h +unicrud.o: $(srcdir)/rotator.h +unicrud.o: $(HACK_SRC)/screenhackI.h +unicrud.o: $(srcdir)/texfont.h +unicrud.o: $(UTILS_SRC)/colors.h +unicrud.o: $(UTILS_SRC)/erase.h +unicrud.o: $(UTILS_SRC)/font-retry.h +unicrud.o: $(UTILS_SRC)/grabscreen.h +unicrud.o: $(UTILS_SRC)/hsv.h +unicrud.o: $(UTILS_SRC)/resources.h +unicrud.o: $(UTILS_SRC)/usleep.h +unicrud.o: $(UTILS_SRC)/utf8wc.h +unicrud.o: $(UTILS_SRC)/visual.h +unicrud.o: $(UTILS_SRC)/yarandom.h +unicrud.o: $(HACK_SRC)/xlockmoreI.h +unicrud.o: $(HACK_SRC)/xlockmore.h +unknownpleasures.o: ../../config.h +unknownpleasures.o: $(HACK_SRC)/fps.h +unknownpleasures.o: $(srcdir)/gltrackball.h +unknownpleasures.o: $(HACK_SRC)/recanim.h +unknownpleasures.o: $(HACK_SRC)/screenhackI.h +unknownpleasures.o: $(UTILS_SRC)/colors.h +unknownpleasures.o: $(UTILS_SRC)/erase.h +unknownpleasures.o: $(UTILS_SRC)/font-retry.h +unknownpleasures.o: $(UTILS_SRC)/grabscreen.h +unknownpleasures.o: $(UTILS_SRC)/hsv.h +unknownpleasures.o: $(UTILS_SRC)/resources.h +unknownpleasures.o: $(UTILS_SRC)/usleep.h +unknownpleasures.o: $(UTILS_SRC)/visual.h +unknownpleasures.o: $(UTILS_SRC)/yarandom.h +unknownpleasures.o: $(HACK_SRC)/xlockmoreI.h +unknownpleasures.o: $(HACK_SRC)/xlockmore.h +vigilance.o: ../../config.h +vigilance.o: $(HACK_SRC)/fps.h +vigilance.o: $(srcdir)/gllist.h +vigilance.o: $(srcdir)/gltrackball.h +vigilance.o: $(srcdir)/normals.h +vigilance.o: $(HACK_SRC)/recanim.h +vigilance.o: $(HACK_SRC)/screenhackI.h +vigilance.o: $(UTILS_SRC)/colors.h +vigilance.o: $(UTILS_SRC)/erase.h +vigilance.o: $(UTILS_SRC)/font-retry.h +vigilance.o: $(UTILS_SRC)/grabscreen.h +vigilance.o: $(UTILS_SRC)/hsv.h +vigilance.o: $(UTILS_SRC)/resources.h +vigilance.o: $(UTILS_SRC)/usleep.h +vigilance.o: $(UTILS_SRC)/visual.h +vigilance.o: $(UTILS_SRC)/yarandom.h +vigilance.o: $(HACK_SRC)/ximage-loader.h +vigilance.o: $(HACK_SRC)/xlockmoreI.h +vigilance.o: $(HACK_SRC)/xlockmore.h +voronoi.o: ../../config.h +voronoi.o: $(HACK_SRC)/fps.h +voronoi.o: $(HACK_SRC)/recanim.h +voronoi.o: $(HACK_SRC)/screenhackI.h +voronoi.o: $(UTILS_SRC)/colors.h +voronoi.o: $(UTILS_SRC)/erase.h +voronoi.o: $(UTILS_SRC)/font-retry.h +voronoi.o: $(UTILS_SRC)/grabscreen.h +voronoi.o: $(UTILS_SRC)/hsv.h +voronoi.o: $(UTILS_SRC)/resources.h +voronoi.o: $(UTILS_SRC)/usleep.h +voronoi.o: $(UTILS_SRC)/visual.h +voronoi.o: $(UTILS_SRC)/yarandom.h +voronoi.o: $(HACK_SRC)/xlockmoreI.h +voronoi.o: $(HACK_SRC)/xlockmore.h +whale.o: $(srcdir)/atlantis.h +whale.o: ../../config.h +whale.o: $(HACK_SRC)/fps.h +whale.o: $(HACK_SRC)/recanim.h +whale.o: $(HACK_SRC)/screenhackI.h +whale.o: $(UTILS_SRC)/colors.h +whale.o: $(UTILS_SRC)/font-retry.h +whale.o: $(UTILS_SRC)/grabscreen.h +whale.o: $(UTILS_SRC)/hsv.h +whale.o: $(UTILS_SRC)/resources.h +whale.o: $(UTILS_SRC)/usleep.h +whale.o: $(UTILS_SRC)/visual.h +whale.o: $(UTILS_SRC)/yarandom.h +winduprobot.o: ../../config.h +winduprobot.o: $(HACK_SRC)/fps.h +winduprobot.o: $(srcdir)/gllist.h +winduprobot.o: $(srcdir)/gltrackball.h +winduprobot.o: $(HACK_SRC)/images/gen/chromesphere_png.h +winduprobot.o: $(srcdir)/involute.h +winduprobot.o: $(HACK_SRC)/recanim.h +winduprobot.o: $(HACK_SRC)/screenhackI.h +winduprobot.o: $(srcdir)/sphere.h +winduprobot.o: $(srcdir)/texfont.h +winduprobot.o: $(UTILS_SRC)/colors.h +winduprobot.o: $(UTILS_SRC)/erase.h +winduprobot.o: $(UTILS_SRC)/font-retry.h +winduprobot.o: $(UTILS_SRC)/grabscreen.h +winduprobot.o: $(UTILS_SRC)/hsv.h +winduprobot.o: $(UTILS_SRC)/resources.h +winduprobot.o: $(UTILS_SRC)/textclient.h +winduprobot.o: $(UTILS_SRC)/usleep.h +winduprobot.o: $(UTILS_SRC)/visual.h +winduprobot.o: $(UTILS_SRC)/yarandom.h +winduprobot.o: $(HACK_SRC)/ximage-loader.h +winduprobot.o: $(HACK_SRC)/xlockmoreI.h +winduprobot.o: $(HACK_SRC)/xlockmore.h +xlock-gl-utils.o: ../../config.h +xlock-gl-utils.o: $(HACK_SRC)/fps.h +xlock-gl-utils.o: $(HACK_SRC)/recanim.h +xlock-gl-utils.o: $(HACK_SRC)/screenhackI.h +xlock-gl-utils.o: $(srcdir)/texfont.h +xlock-gl-utils.o: $(UTILS_SRC)/colors.h +xlock-gl-utils.o: $(UTILS_SRC)/erase.h +xlock-gl-utils.o: $(UTILS_SRC)/font-retry.h +xlock-gl-utils.o: $(UTILS_SRC)/grabscreen.h +xlock-gl-utils.o: $(UTILS_SRC)/hsv.h +xlock-gl-utils.o: $(UTILS_SRC)/resources.h +xlock-gl-utils.o: $(UTILS_SRC)/usleep.h +xlock-gl-utils.o: $(UTILS_SRC)/visual.h +xlock-gl-utils.o: $(UTILS_SRC)/yarandom.h +xlock-gl-utils.o: $(HACK_SRC)/xlockmoreI.h +xscreensaver-gl-helper.o: ../../config.h +xscreensaver-gl-helper.o: $(UTILS_SRC)/utils.h +xscreensaver-gl-helper.o: $(UTILS_SRC)/visual.h + diff --git a/hacks/glx/README b/hacks/glx/README new file mode 100644 index 0000000..5142503 --- /dev/null +++ b/hacks/glx/README @@ -0,0 +1,10 @@ + +This directory contains various graphics hacks that requre OpenGL. These are +independent from the xscreensaver program (in the ../../driver/ directory) +but some of them use the utility functions found in the ../../utils/ directory. + +If you have compilation problems, check the parameters in ../../config.h. + +If you're looking for a free implementation of the OpenGL library, +check out . For general OpenGL info, see +. diff --git a/hacks/glx/antinspect.c b/hacks/glx/antinspect.c new file mode 100644 index 0000000..ad3bef5 --- /dev/null +++ b/hacks/glx/antinspect.c @@ -0,0 +1,704 @@ +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Copyright 2004 Blair Tennessy + * tennessy@cs.ubc.ca + */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" + +# define free_antinspect 0 +# define release_antinspect 0 +#include "xlockmore.h" +#else +#include "xlock.h" +#endif + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "sphere.h" +#include "gltrackball.h" + +#define DEF_SHADOWS "True" + +static int shadows; + +static XrmOptionDescRec opts[] = { + {"-shadows", ".antinspect.shadows", XrmoptionNoArg, "on"}, + {"+shadows", ".antinspect.shadows", XrmoptionNoArg, "off"} +}; + +static argtype vars[] = { + {&shadows, "shadows", "Shadows", DEF_SHADOWS, t_Bool} +}; + +static OptionStruct desc[] = { + {"-/+shadows", "turn on/off ant shadows"} +}; + +ENTRYPOINT ModeSpecOpt antinspect_opts = {sizeof opts / sizeof opts[0], + opts, + sizeof vars / sizeof vars[0], + vars, + desc}; + +#ifdef USE_MODULES +ModStruct antinspect_description = + {"antinspect", "init_antinspect", "draw_antinspect", (char *) NULL, + "draw_antinspect", "change_antinspect", (char *) NULL, &antinspect_opts, + 1000, 1, 1, 1, 4, 1.0, "", + "draws some ants", 0, NULL}; +#endif + +#define Scale4Window 0.3 +#define Scale4Iconic 0.4 + +#define sqr(A) ((A)*(A)) + +#ifndef Pi +#define Pi M_PI +#endif + +#define ObjAntinspectStrip 0 +#define ObjAntBody 1 +#define MaxObj 2 + +/*************************************************************************/ + +typedef struct { + GLint WindH, WindW; + GLfloat step; + GLfloat ant_position; + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + int linewidth; + float ant_step; + +} antinspectstruct; + +static const float front_shininess[] = {60.0}; +static const float front_specular[] = {0.7, 0.7, 0.7, 1.0}; +static const float ambient[] = {0.0, 0.0, 0.0, 1.0}; +static const float diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static float position0[] = {0.0, 3.0, 0.0, 1.0}; +static const float position1[] = {-1.0, -3.0, 1.0, 0.0}; +static const float lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0}; +static const float lmodel_twoside[] = {GL_TRUE}; + +static const float MaterialRed[] = {0.6, 0.0, 0.0, 1.0}; +static const float MaterialOrange[] = {1.0, 0.69, 0.00, 1.0}; +static const float MaterialGray[] = {0.2, 0.2, 0.2, 1.0}; +static const float MaterialBlack[] = {0.1, 0.1, 0.1, 0.4}; +static const float MaterialShadow[] = {0.3, 0.3, 0.3, 0.3}; +static const float MaterialGray5[] = {0.5, 0.5, 0.5, 0.3}; +static const float MaterialGray6[] = {0.6, 0.6, 0.6, 1.0}; + +static antinspectstruct *antinspect = (antinspectstruct *) NULL; + +#define NUM_SCENES 2 + +enum {X, Y, Z, W}; +enum {A, B, C, D}; + +/* create a matrix that will project the desired shadow */ +static void shadowmatrix(GLfloat shadowMat[4][4], + const GLfloat groundplane[4], + const GLfloat lightpos[4]) +{ + GLfloat dot; + + /* find dot product between light position vector and ground plane normal */ + dot = groundplane[X] * lightpos[X] + + groundplane[Y] * lightpos[Y] + + groundplane[Z] * lightpos[Z] + + groundplane[W] * lightpos[W]; + + shadowMat[0][0] = dot - lightpos[X] * groundplane[X]; + shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y]; + shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z]; + shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W]; + + shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X]; + shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y]; + shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z]; + shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W]; + + shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X]; + shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y]; + shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z]; + shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W]; + + shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X]; + shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y]; + shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z]; + shadowMat[3][3] = dot - lightpos[W] * groundplane[W]; +} + +static const GLfloat ground[4] = {0.0, 1.0, 0.0, -0.00001}; + +/* simple filled sphere */ +static Bool mySphere(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); + gluSphere(quadObj, radius, 16, 16); + gluDeleteQuadric(quadObj); +#else + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (16, 16, False); + glPopMatrix(); +#endif + return True; +} + +/* caged sphere */ +static Bool mySphere2(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_LINE);/*GLU_SILHOUETTE);*/ + gluSphere(quadObj, radius, 16, 8); + gluDeleteQuadric(quadObj); +#else + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (16, 8, True); + glPopMatrix(); +#endif + + return True; +} + +/* null cone */ +static Bool myCone2(float radius) +{ + return True; +} + +/* draw an ant */ +static Bool draw_antinspect_ant(ModeInfo *mi, antinspectstruct * mp, + const float *Material, int mono, + Bool (*sphere)(float), Bool (*cone)(float)) +{ + float cos1 = cos(mp->ant_step); + float cos2 = cos(mp->ant_step + 2 * Pi / 3); + float cos3 = cos(mp->ant_step + 4 * Pi / 3); + float sin1 = sin(mp->ant_step); + float sin2 = sin(mp->ant_step + 2 * Pi / 3); + float sin3 = sin(mp->ant_step + 4 * Pi / 3); + + if (mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray5); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Material); + glEnable(GL_CULL_FACE); + glPushMatrix(); + glScalef(1, 1.3, 1); + if (!((*sphere)(0.18))) + return False; + glScalef(1, 1 / 1.3, 1); + glTranslatef(0.00, 0.30, 0.00); + if (!((*sphere)(0.2))) + return False; + + glTranslatef(-0.05, 0.17, 0.05); + glRotatef(-90, 1, 0, 0); + glRotatef(-25, 0, 1, 0); + if (!((*cone)(0.05))) + return False; + glTranslatef(0.00, 0.10, 0.00); + if (!((*cone)(0.05))) + return False; + glRotatef(25, 0, 1, 0); + glRotatef(90, 1, 0, 0); + + glScalef(1, 1.3, 1); + glTranslatef(0.15, -0.65, 0.05); + if (!((*sphere)(0.25))) + return False; + glScalef(1, 1 / 1.3, 1); + glPopMatrix(); + glDisable(GL_CULL_FACE); + + glDisable(GL_LIGHTING); + + /* ANTENNAS */ + glBegin(GL_LINES); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.30, 0.00); + glColor3fv(MaterialGray); + glVertex3f(0.40, 0.70, 0.40); + mi->polygon_count++; + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.30, 0.00); + glColor3fv(MaterialGray); + glVertex3f(0.40, 0.70, -0.40); + mi->polygon_count++; + glEnd(); + glBegin(GL_POINTS); + if (mono) + glColor3fv(MaterialGray6); + else + glColor3fv(Material); + glVertex3f(0.40, 0.70, 0.40); + mi->polygon_count++; + glVertex3f(0.40, 0.70, -0.40); + mi->polygon_count++; + glEnd(); + + /* LEFT-FRONT ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.05, 0.18); + glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45); + mi->polygon_count++; + glEnd(); + + /* LEFT-CENTER ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.00, 0.18); + glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45); + mi->polygon_count++; + glEnd(); + mi->polygon_count++; + + /* LEFT-BACK ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, -0.05, 0.18); + glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-FRONT ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.05, -0.18); + glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-CENTER ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.00, -0.18); + glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-BACK ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, -0.05, -0.18); + glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45); + mi->polygon_count++; + glEnd(); + + glEnable(GL_LIGHTING); + + return True; +} + +/* only works with 3 right now */ +#define ANTCOUNT 3 + +static const float MaterialBen[4] = {0.25, 0.30, 0.46, 1.0}; + +static const float* antmaterial[ANTCOUNT] = + {MaterialRed, MaterialBen, MaterialOrange}; +static double antposition[ANTCOUNT] = {0.0, 120.0, 240.0}; +static const double antvelocity[ANTCOUNT] = {0.3, 0.3, 0.3}; +static const double antsphere[ANTCOUNT] = {1.2, 1.2, 1.2}; + +/* permutations */ +static const double antorder[6][ANTCOUNT] = {{0, 1, 2}, + {0, 2, 1}, + {2, 0, 1}, + {2, 1, 0}, + {1, 2, 0}, + {1, 0, 2}}; + +/* draw the scene */ +static Bool draw_antinspect_strip(ModeInfo * mi) +{ + antinspectstruct *mp = &antinspect[MI_SCREEN(mi)]; + int i, j; + int mono = MI_IS_MONO(mi); + + int ro = (((int)antposition[1])/(360/(2*ANTCOUNT))) % (2*ANTCOUNT); + + glEnable(GL_TEXTURE_2D); + position0[1] = 9.6; + glLightfv(GL_LIGHT0, GL_POSITION, position0); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray5); + glRotatef(-30.0, 0.0, 1.0, 0.0); + + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + + /* render ground plane */ + glBegin(GL_TRIANGLES); + glColor4fv(MaterialShadow); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialBlack); + glNormal3f(0.0, 1.0, 0.0); + + /* middle tri */ + glVertex3f(0.0, 0.0, -1.0); + glVertex3f(-sqrt(3.0)/2.0, 0.0, 0.5); + glVertex3f(sqrt(3.0)/2.0, 0.0, 0.5); + mi->polygon_count++; + glEnd(); + + /* rotate */ + for(i = 0; i < 3; ++i) { + glRotatef(120.0, 0.0, 1.0, 0.0); + glBegin(GL_TRIANGLES); + glVertex3f(0.0, 0.0, 1.0 + 3.0); + glVertex3f(sqrt(3.0)/2.0, 0.0, -0.5 + 3.0); + glVertex3f(-sqrt(3.0)/2.0, 0.0, -0.5 + 3.0); + mi->polygon_count++; + glEnd(); + } + + /* first render shadows -- no depth required */ + if(shadows) { + GLfloat m[4][4]; + shadowmatrix(m, ground, position0); + + glColor4fv(MaterialShadow); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow); + + glDisable(GL_BLEND); + glDisable(GL_LIGHTING); + + /* display ant shadow */ + glPushMatrix(); + glTranslatef(0.0, 0.001, 0.0); + glMultMatrixf(m[0]); + + for(i = 0; i < ANTCOUNT; ++i) { + + /* draw ant */ + glPushMatrix(); + + /* center */ + glRotatef(antposition[i], 0.0, 1.0, 0.0); + glTranslatef(2.4, 0.0, 0.0); + glTranslatef(0.0, antsphere[i], 0.0); + glRotatef(90.0, 0.0, 1.0, 0.0); + + /* orient ant */ + glRotatef(10.0, 0.0, 1.0, 0.0); + glRotatef(40.0, 0.0, 0.0, 1.0); + glTranslatef(0.0, -0.8, 0.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + glRotatef(90.0, 0.0, 0.0, 1.0); + + /* set colour */ + glColor4fv(MaterialShadow); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow); + + if(antposition[i] > 360.0) + antposition[i] = 0.0; + draw_antinspect_ant(mi, mp, MaterialShadow, mono, mySphere2, myCone2); + + glDisable(GL_BLEND); + glDisable(GL_LIGHTING); + + /* draw sphere */ + glRotatef(-20.0, 1.0, 0.0, 0.0); + glRotatef(-mp->ant_step*2, 0.0, 0.0, 1.0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow); + mySphere2(1.2); + + glPopMatrix(); + } + + glPopMatrix(); + } + + glEnable(GL_LIGHTING); + + /* truants */ + for(j = 0; j < ANTCOUNT; ++j) { + /* determine rendering order */ + i = antorder[ro][j]; + + glPushMatrix(); + + /* center */ + glRotatef(antposition[i], 0.0, 1.0, 0.0); + glTranslatef(2.4, 0.0, 0.0); + glTranslatef(0.0, antsphere[i], 0.0); + glRotatef(90.0, 0.0, 1.0, 0.0); + + /* draw ant */ + glPushMatrix(); + glRotatef(10.0, 0.0, 1.0, 0.0); + glRotatef(40.0, 0.0, 0.0, 1.0); + glTranslatef(0.0, -0.8, 0.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + glRotatef(90.0, 0.0, 0.0, 1.0); + if(antposition[i] > 360.0) + antposition[i] = 0.0; + glEnable(GL_BLEND); + draw_antinspect_ant(mi, mp, antmaterial[i], mono, mySphere2, myCone2); + glDisable(GL_BLEND); + glPopMatrix(); + + /* draw sphere */ + glRotatef(-20.0, 1.0, 0.0, 0.0); + glRotatef(-mp->ant_step*2, 0.0, 0.0, 1.0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mono ? MaterialGray5 : antmaterial[i]); + mySphere2(1.2); + glEnable(GL_BLEND); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialBlack); + mySphere(1.16); + glDisable(GL_BLEND); + + glPopMatrix(); + + /* finally, evolve */ + antposition[i] += antvelocity[i]; + } + + /* but the step size is the same! */ + mp->ant_step += 0.2; + + mp->ant_position += 1; + return True; +} + +ENTRYPOINT void reshape_antinspect(ModeInfo * mi, int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + antinspectstruct *mp = &antinspect[MI_SCREEN(mi)]; + mp->linewidth = (width / 512) + 1; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, mp->WindW = (GLint) width, mp->WindH = (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45, 1/h, 7.0, 20.0); + + glMatrixMode(GL_MODELVIEW); + glLineWidth(mp->linewidth); + glPointSize(mp->linewidth); +} + +static void pinit(void) +{ + glClearDepth(1.0); + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_NORMALIZE); + glFrontFace(GL_CCW); + + /* antinspect */ + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glDisable(GL_TEXTURE_2D); + + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); +} + +ENTRYPOINT Bool antinspect_handle_event (ModeInfo *mi, XEvent *event) +{ + antinspectstruct *mp = &antinspect[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, mp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &mp->button_down_p)) + return True; + + return False; +} + +ENTRYPOINT void init_antinspect(ModeInfo * mi) +{ + antinspectstruct *mp; + + MI_INIT(mi, antinspect); + mp = &antinspect[MI_SCREEN(mi)]; + mp->step = NRAND(90); + mp->ant_position = NRAND(90); + mp->trackball = gltrackball_init (False); + + if ((mp->glx_context = init_GL(mi)) != NULL) { + reshape_antinspect(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + pinit(); + } + else + MI_CLEARWINDOW(mi); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +} + +ENTRYPOINT void draw_antinspect(ModeInfo * mi) +{ + antinspectstruct *mp; + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if(!antinspect) + return; + mp = &antinspect[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + + if(!mp->glx_context) + return; + + glXMakeCurrent(display, window, *(mp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + mi->polygon_count = 0; + + /* position camera --- this works well, we can peer inside + the antbubble */ + glTranslatef(0.0, 0.0, -10.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + glRotatef(o, 0, 0, 1); + } +# endif + + gltrackball_rotate(mp->trackball); + glRotatef((15.0/2.0 + 15.0*sin(mp->ant_step/100.0)), 1.0, 0.0, 0.0); + glRotatef(30.0, 1.0, 0.0, 0.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + + if (!draw_antinspect_strip(mi)) { + MI_ABORT(mi); + return; + } + + glPopMatrix(); + + if (MI_IS_FPS(mi)) do_fps (mi); + glFlush(); + + glXSwapBuffers(display, window); + + mp->step += 0.025; +} + +#ifndef STANDALONE +ENTRYPOINT void change_antinspect(ModeInfo * mi) +{ + antinspectstruct *mp = &antinspect[MI_SCREEN(mi)]; + + if (!mp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context)); + pinit(); +} +#endif /* !STANDALONE */ + + +XSCREENSAVER_MODULE ("AntInspect", antinspect) diff --git a/hacks/glx/antinspect.man b/hacks/glx/antinspect.man new file mode 100644 index 0000000..804d7a4 --- /dev/null +++ b/hacks/glx/antinspect.man @@ -0,0 +1,56 @@ +.TH XScreenSaver 1 "March 2004" +.SH NAME +antinspect \- ant model inspection screenhack +.SH SYNOPSIS +.B antinspect +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps] +.SH DESCRIPTION +The \fIantinspect\fP code displays three ant-powered balls churning in a +circle. +.SH OPTIONS +.I antinspect +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-shadows +Draw shadows on ground +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 2004 by Blair Tennessy. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Blair Tennessy , 15-March-2004. + diff --git a/hacks/glx/antmaze.c b/hacks/glx/antmaze.c new file mode 100644 index 0000000..79b7e0b --- /dev/null +++ b/hacks/glx/antmaze.c @@ -0,0 +1,1613 @@ +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Copyright 2004 Blair Tennessy + * tennessy@cs.ubc.ca + */ + +#if 0 +static const char sccsid[] = "@(#)antmaze.c 5.01 2001/03/01 xlockmore"; +#endif + +#ifdef STANDALONE +# define MODE_antmaze +# define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" + +# define free_antmaze 0 +# define release_antmaze 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#ifdef MODE_antmaze + + +#include "sphere.h" +#include "tube.h" +#include "rotator.h" +#include "gltrackball.h" + +#define DEF_SOLIDANTMAZE "False" +#define DEF_NOANTS "False" + +static int solidantmaze; +static int noants; + +static XrmOptionDescRec opts[] = +{ + {"-solidantmaze", ".antmaze.solidantmaze", XrmoptionNoArg, "on"}, + {"+solidantmaze", ".antmaze.solidantmaze", XrmoptionNoArg, "off"}, + {"-noants", ".antmaze.noants", XrmoptionNoArg, "on"}, + {"+noants", ".antmaze.noants", XrmoptionNoArg, "off"} +}; +static argtype vars[] = +{ + {&solidantmaze, "solidantmaze", "Solidantmaze", DEF_SOLIDANTMAZE, t_Bool}, + {&noants, "noants", "Noants", DEF_NOANTS, t_Bool} +}; + +static OptionStruct desc[] = +{ + {"-/+solidantmaze", "select between a SOLID or a NET Antmaze Strip"}, + {"-/+noants", "turn on/off walking ants"} +}; + +ENTRYPOINT ModeSpecOpt antmaze_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + +#ifdef USE_MODULES +ModStruct antmaze_description = +{"antmaze", "init_antmaze", "draw_antmaze", NULL, + "draw_antmaze", "change_antmaze", NULL, &antmaze_opts, + 1000, 1, 1, 1, 4, 1.0, "", + "draws some ants", 0, NULL}; + +#endif + +#define Scale4Window 0.3 +#define Scale4Iconic 0.4 + +#define sqr(A) ((A)*(A)) + +#ifndef Pi +#define Pi M_PI +#endif + +#define ObjAntmazeStrip 0 +#define ObjAntBody 1 +#define MaxObj 2 + +/*************************************************************************/ + +#include "ants.h" + +#define ANTCOUNT 5 +#define PI 3.14157 + +#define EPSILON 0.01 +#define BOARDSIZE 10 +#define BOARDCOUNT 2 +#define PARTS 20 + +#define checkImageWidth 64 +#define checkImageHeight 64 + +typedef struct { + GLint WindH, WindW; + GLfloat step; + GLfloat ant_position; + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int focus; + int currentboard; + + double antdirection[ANTCOUNT]; + double antposition[ANTCOUNT][3]; + int anton[ANTCOUNT]; + + double antvelocity[ANTCOUNT]; + double antsize[ANTCOUNT]; + int bposition[ANTCOUNT][2]; + int board[BOARDCOUNT][10][10]; + + int part[ANTCOUNT]; + double antpath[ANTCOUNT][PARTS][2]; + int antpathlength[ANTCOUNT]; + + GLubyte checkers[checkImageWidth][checkImageHeight][3]; + + GLuint checktexture, brushedtexture; + double elevator; + + double ant_step; + double first_ant_step; + int started; + int introduced; + int entroducing; + + double fadeout; + double fadeoutspeed; + + int mag; + +} antmazestruct; + +static antmazestruct *antmaze = (antmazestruct *) NULL; + + +static const GLfloat MaterialRed[] = {0.6, 0.0, 0.0, 1.0}; +/*static const GLfloat MaterialMagenta[] = {0.6, 0.2, 0.5, 1.0};*/ +static const GLfloat MaterialGray8[] = {0.8, 0.8, 0.8, 1.0}; +static const GLfloat MaterialGray35[] = {0.30, 0.30, 0.30, 1.0}; +static const GLfloat MaterialGray4[] = {0.40, 0.40, 0.40, 1.0}; +static const GLfloat MaterialOrange[] = {1.0, 0.69, 0.00, 1.0}; +static const GLfloat MaterialGreen[] = {0.1, 0.4, 0.2, 1.0}; + +/* lighting variables */ +static const GLfloat front_shininess[] = {60.0}; +static const GLfloat front_specular[] = {0.8, 0.8, 0.8, 1.0}; +static const GLfloat ambient[] = {0.1, 0.1, 0.1, 1.0}; +/*static const GLfloat ambient2[] = {0.0, 0.0, 0.0, 0.0};*/ +static const GLfloat diffuse[] = {0.8, 0.8, 0.8, 1.0}; +static const GLfloat position0[] = {1.0, 5.0, 1.0, 1.0}; +static const GLfloat position1[] = {-1.0, -5.0, 1.0, 1.0}; +/*static const GLfloat lmodel_ambient[] = {0.8, 0.8, 0.8, 1.0};*/ +/*static const GLfloat lmodel_twoside[] = {GL_TRUE};*/ +/*static const GLfloat spotlight_ambient[] = { 0.0, 0.0, 0.0, 1.0 };*/ +/*static const GLfloat spotlight_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };*/ + +#define NUM_SCENES 2 + +/* filled sphere */ +static Bool mySphere(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); + gluSphere(quadObj, radius, 16, 16); + gluDeleteQuadric(quadObj); +#else + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (16, 16, False); + glPopMatrix(); +#endif + return True; +} + +#if 0 +/* silhouette sphere */ +static Bool mySphere2(float radius) +{ + GLUquadricObj *quadObj; + + if((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_SILHOUETTE); + gluSphere(quadObj, radius, 16, 8); + gluDeleteQuadric(quadObj); + + return True; +} +#endif + +/* textured sphere */ +static Bool mySphereTex(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); + gluQuadricTexture(quadObj, GL_TRUE); + gluQuadricNormals(quadObj, GLU_SMOOTH); + gluSphere(quadObj, radius, 32, 16); + gluDeleteQuadric(quadObj); +#else + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (32, 16, False); + glPopMatrix(); +#endif + + return True; +} + +/* filled cone */ +static Bool myCone(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if ((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); + gluCylinder(quadObj, radius, 0, radius * 2, 8, 1); + gluDeleteQuadric(quadObj); +#else + cone (0, 0, 0, + 0, 0, radius * 2, + radius, 0, + 8, True, True, False); +#endif + return True; +} + +/* no cone */ +static Bool myCone2(float radius) { return True; } + +#define MATERIALS 4 +static const float *antmaterial[ANTCOUNT] = + {MaterialRed, MaterialGray35, MaterialGray4, MaterialOrange, MaterialGreen}; + +static const float *materials[MATERIALS] = + {MaterialRed, MaterialGray35, MaterialGray4, MaterialOrange}; + + +static void makeCheckImage(antmazestruct *mp) +{ + int i, j; + + for (i = 0; i < checkImageWidth; i++) { + for (j = 0; j < checkImageHeight; j++) { + if(((((i&0x8)==0)^((j&0x8)))==0)) { + int c = 102 + random()%32; + mp->checkers[i][j][0] = c; + mp->checkers[i][j][1] = c; + mp->checkers[i][j][2] = c; + } + else { + int c = 153 + random()%32; + mp->checkers[i][j][0] = c;/*153;*/ + mp->checkers[i][j][1] = c;/*c;*//*0;*/ + mp->checkers[i][j][2] = c;/*c;*//*0;*/ + } + } + } + + glGenTextures(1, &mp->checktexture); + glBindTexture(GL_TEXTURE_2D, mp->checktexture); + + 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_REPEAT); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, + checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, + &mp->checkers[0][0]); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); +} + +static void makeBrushedImage(antmazestruct *mp) +{ + int i, j, c; + + for(i = 0; i < checkImageWidth; ++i) + for(j = 0; j < checkImageHeight; ++j) { + + c = 102+102*fabs(sin(2.0*i / Pi)*sin(2.0*j/Pi)) + random()%51; + +/* c = (i+j)%8==0 || (i+j+5)%8==0 ? 153 : 102; */ + + mp->checkers[i][j][0] = c; + mp->checkers[i][j][1] = c; + mp->checkers[i][j][2] = c; + } + +/* for (i = 0; i < checkImageWidth; i++) { */ +/* for (j = 0; j < checkImageHeight; j++) { */ +/* int c = 102 + pow((random()%1000)/1000.0, 4)*103; */ +/* checkers[i][j][0] = c; */ +/* checkers[i][j][1] = c; */ +/* checkers[i][j][2] = c; */ +/* } */ +/* } */ + +/* /\* smooth *\/ */ +/* for (i = 0; i < checkImageWidth; i++) { */ +/* for (j = 0; j < checkImageHeight; j++) { */ +/* int a = checkers[(i+checkImageWidth+1)%checkImageWidth][j][0] + */ +/* 4*checkers[i][j][0] + checkers[(i+1)%checkImageWidth][j][0]; */ +/* a /= 6; */ +/* checkers[i][j][0] = a; */ +/* checkers[i][j][1] = a; */ +/* checkers[i][j][2] = a; */ +/* } */ +/* } */ + + glGenTextures(1, &mp->brushedtexture); + glBindTexture(GL_TEXTURE_2D, mp->brushedtexture); + + 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_REPEAT); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, + checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, + &mp->checkers[0][0]); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); +} + +#if 0 +static void draw_wall(ModeInfo *mi, double x1, double z1, double x2, double z2) +{ + float x = fabs(x2 - x1)/2.0; + + glBegin(GL_QUADS); + + /* draw top */ + glNormal3f(0.0, 1.0, 0.0); + glTexCoord2f(0.0, 0.0); + glVertex3f(x1, 1.0, z1+0.25); + glTexCoord2f(x, 0.0); + glVertex3f(x2, 1.0, z2+0.25); + glTexCoord2f(x, 0.25); + glVertex3f(x2, 1.0, z2-0.25); + glTexCoord2f(0.0, 0.25); + glVertex3f(x1, 1.0, z1-0.25); + mi->polygon_count++; + + /* draw sides */ + glNormal3f(0.0, 0.0, 1.0); + glTexCoord2f(0.0, 0.0); + glVertex3f(x1, 0.0, z1+0.25); + glTexCoord2f(x, 0.0); + glVertex3f(x2, 0.0, z2+0.25); + glTexCoord2f(x, 0.5); + glVertex3f(x2, 1.0, z2+0.25); + glTexCoord2f(0.0, 0.5); + glVertex3f(x1, 1.0, z1+0.25); + mi->polygon_count++; + + glNormal3f(0.0, 0.0, -1.0); + glTexCoord2f(0.0, 0.0); + glVertex3f(x1, 0.0, z1-0.25); + glTexCoord2f(x, 0.0); + glVertex3f(x2, 0.0, z2-0.25); + glTexCoord2f(x, 0.5); + glVertex3f(x2, 1.0, z2-0.25); + glTexCoord2f(0.0, 0.5); + glVertex3f(x1, 1.0, z1-0.25); + mi->polygon_count++; + + /* draw ends */ + glNormal3f(1.0, 0.0, 0.0); + glTexCoord2f(0.0, 0.0); + glVertex3f(x2, 0.0, z2+0.25); + glTexCoord2f(0.25, 0.0); + glVertex3f(x2, 0.0, z2-0.25); + glTexCoord2f(0.25, 0.5); + glVertex3f(x2, 1.0, z2-0.25); + glTexCoord2f(0.0, 0.5); + glVertex3f(x2, 1.0, z2+0.25); + mi->polygon_count++; + + glNormal3f(-1.0, 0.0, 0.0); + glTexCoord2f(0.0, 0.0); + glVertex3f(x1, 0.0, z1-0.25); + glTexCoord2f(0.25, 0.0); + glVertex3f(x1, 0.0, z1+0.25); + glTexCoord2f(0.25, 0.5); + glVertex3f(x1, 1.0, z1+0.25); + glTexCoord2f(0.0, 0.5); + glVertex3f(x1, 1.0, z1-0.25); + mi->polygon_count++; + + glEnd(); +} +#endif + +static void draw_board(ModeInfo *mi, antmazestruct *mp) +{ + + int i, j; + double h = 0.5; + double stf = 0.0625; + + glBindTexture(GL_TEXTURE_2D, mp->checktexture); + + glBegin(GL_QUADS); + + for(i = 0; i < BOARDSIZE; ++i) + for(j = 0; j < BOARDSIZE; ++j) { + if(mp->board[mp->currentboard][j][i]) { + +/* /\* draw top *\/ */ +/* glNormal3f(0.0, 1.0, 0.0); */ +/* glTexCoord2f(0.0 + stf, 0.0 + stf); */ +/* glVertex3f(i-0.5, h, j+0.5); */ +/* glTexCoord2f(1.0 + stf, 0.0 + stf); */ +/* glVertex3f(i+0.5, h, j+0.5); */ +/* glTexCoord2f(1.0 + stf, 1.0 + stf); */ +/* glVertex3f(i+0.5, h, j-0.5); */ +/* glTexCoord2f(0.0 + stf, 1.0 + stf); */ +/* glVertex3f(i-0.5, h, j-0.5); */ + + /* draw top */ + glNormal3f(0.0, 1.0, 0.0); + glTexCoord2f(0.0 + stf, 0.0 + stf); + glVertex3f(i-0.5, h, j+0.5); + glTexCoord2f(1.0 + stf, 0.0 + stf); + glVertex3f(i+0.5, h, j+0.5); + glTexCoord2f(1.0 + stf, 1.0 + stf); + glVertex3f(i+0.5, h, j-0.5); + glTexCoord2f(0.0 + stf, 1.0 + stf); + glVertex3f(i-0.5, h, j-0.5); + mi->polygon_count++; + + /* draw south face */ + if(j == 9 || !mp->board[mp->currentboard][j+1][i]) { + glNormal3f(0.0, 0.0, 1.0); + glTexCoord2f(0.0 + stf, 0.0 + stf); + glVertex3f(i-0.5, 0.0, j+0.5); + glTexCoord2f(1.0 + stf, 0.0 + stf); + glVertex3f(i+0.5, 0.0, j+0.5); + glTexCoord2f(1.0 + stf, h + stf); + glVertex3f(i+0.5, h, j+0.5); + glTexCoord2f(0.0 + stf, h + stf); + glVertex3f(i-0.5, h, j+0.5); + mi->polygon_count++; + } + + /* draw north face */ + if(j == 0 || !mp->board[mp->currentboard][j-1][i]) { + glNormal3f(0.0, 0.0, -1.0); + glTexCoord2f(0.0 + stf, 0.0 + stf); + glVertex3f(i+0.5, 0.0, j-0.5); + glTexCoord2f(1.0 + stf, 0.0 + stf); + glVertex3f(i-0.5, 0.0, j-0.5); + glTexCoord2f(1.0 + stf, h + stf); + glVertex3f(i-0.5, h, j-0.5); + glTexCoord2f(0.0 + stf, h + stf); + glVertex3f(i+0.5, h, j-0.5); + mi->polygon_count++; + } + + /* draw east face */ + if(i == 9 || !mp->board[mp->currentboard][j][i+1]) { + glNormal3f(1.0, 0.0, 0.0); + glTexCoord2f(0.0 + stf, 0.0 + stf); + glVertex3f(i+0.5, 0.0, j+0.5); + glTexCoord2f(1.0 + stf, 0.0 + stf); + glVertex3f(i+0.5, 0.0, j-0.5); + glTexCoord2f(1.0 + stf, h + stf); + glVertex3f(i+0.5, h, j-0.5); + glTexCoord2f(0.0 + stf, h + stf); + glVertex3f(i+0.5, h, j+0.5); + mi->polygon_count++; + } + + /* draw west face */ + if(i == 0 || !mp->board[mp->currentboard][j][i-1]) { + glNormal3f(-1.0, 0.0, 0.0); + glTexCoord2f(0.0 + stf, 0.0 + stf); + glVertex3f(i-0.5, 0.0, j-0.5); + glTexCoord2f(1.0 + stf, 0.0 + stf); + glVertex3f(i-0.5, 0.0, j+0.5); + glTexCoord2f(1.0 + stf, h + stf); + glVertex3f(i-0.5, h, j+0.5); + glTexCoord2f(0.0 + stf, h + stf); + glVertex3f(i-0.5, h, j-0.5); + mi->polygon_count++; + } + } + else { + double tx = 2.0; + glNormal3f(0.0, 1.0, 0.0); + glTexCoord2f(0.0, 0.0); + glVertex3f(i-0.5, 0.0, j+0.5); + glTexCoord2f(tx, 0.0); + glVertex3f(i+0.5, 0.0, j+0.5); + glTexCoord2f(tx, tx); + glVertex3f(i+0.5, 0.0, j-0.5); + glTexCoord2f(0.0, tx); + glVertex3f(i-0.5, 0.0, j-0.5); + mi->polygon_count++; + } + } + glEnd(); + +/* /\* draw elevator *\/ */ +/* glBindTexture(GL_TEXTURE_2D, brushedtexture); */ + +/* glBegin(GL_QUADS); */ + +/* glNormal3f(0.0, 1.0, 0.0); */ + +/* if(pastfirst) { */ +/* /\* source *\/ */ +/* glTexCoord2f(0.0, 0.0); */ +/* glVertex3f(0.5, 0.0, BOARDSIZE - 0.5 + 0.2); */ +/* glTexCoord2f(1.0, 0.0); */ +/* glVertex3f(1.5, 0.0, BOARDSIZE - 0.5 + 0.2); */ +/* glTexCoord2f(1.0, 1.5); */ +/* glVertex3f(1.5, 0.0, BOARDSIZE + 1.0 + 0.2); */ +/* glTexCoord2f(0.0, 1.5); */ +/* glVertex3f(0.5, 0.0, BOARDSIZE + 1.0 + 0.2); */ +/* mi->polygon_count++; */ +/* } */ + +/* /\* destination *\/ */ +/* glTexCoord2f(0.0, 0.0); */ +/* glVertex3f(BOARDSIZE - 2.5, elevator, -2.0 - 0.2); */ +/* glTexCoord2f(1.0, 0.0); */ +/* glVertex3f(BOARDSIZE - 1.5, elevator, -2.0 - 0.2); */ +/* glTexCoord2f(1.0, 1.5); */ +/* glVertex3f(BOARDSIZE - 1.5, elevator, -0.5 - 0.2); */ +/* glTexCoord2f(0.0, 1.5); */ +/* glVertex3f(BOARDSIZE - 2.5, elevator, -0.5 - 0.2); */ +/* mi->polygon_count++; */ + +/* glEnd(); */ + +/* for(i = 0; i < BOARDSIZE; ++i) */ +/* for(j = 0; j < BOARDSIZE; ++j) { */ +/* if(board[j][i]) { */ + +/* /\* draw brushed boxtop *\/ */ +/* glNormal3f(0.0, 1.0, 0.0); */ +/* glTexCoord2f(0.0 + stf, 0.0 + stf); */ +/* glVertex3f(i-0.5 + stf, h+0.001, j+0.5 - stf); */ +/* glTexCoord2f(1.0 + stf, 0.0 + stf); */ +/* glVertex3f(i+0.5 - stf, h+0.001, j+0.5 - stf); */ +/* glTexCoord2f(1.0 + stf, 1.0 + stf); */ +/* glVertex3f(i+0.5 - stf, h+0.001, j-0.5 + stf); */ +/* glTexCoord2f(0.0 + stf, 1.0 + stf); */ +/* glVertex3f(i-0.5 + stf, h+0.001, j-0.5 + stf); */ +/* mi->polygon_count++; */ +/* } */ +/* } */ + +/* glEnd(); */ +} + +static void build_board(antmazestruct *mp, int b) +{ + int i, j; + + for(i = 0; i < BOARDSIZE; ++i) + for(j = 0; j < BOARDSIZE; ++j) + mp->board[b][i][j] = 1; + +/* for(i = 0; i < BOARDSIZE; ++i) { */ +/* board[0][i] = 1; */ +/* board[i][0] = 1; */ +/* board[BOARDSIZE-1][BOARDSIZE-i] = 1; */ +/* board[BOARDSIZE-i][BOARDSIZE-1] = 1; */ +/* } */ + +/* board[0][BOARDSIZE-2] = 0; */ +/* board[BOARDSIZE-1][1] = 0; */ + + + mp->board[b][BOARDSIZE-1][1] = 0; + mp->board[b][0][BOARDSIZE-2] = 0; + + /* build the ant paths */ + if(mp->currentboard == b) { + for(i = 0; i < ANTCOUNT; ++i) { + int sx = BOARDSIZE-2; + int sy = 1; + + for(j = 0; ; ++j) { + mp->board[b][sx][sy] = 0; + mp->antpath[i][j][0] = sy - 5.0; + mp->antpath[i][j][1] = sx - 5.0; + + if(random()%2) { + if(sx > 1) + sx -= 1; + else if(sy < BOARDSIZE-2) + sy += 1; + else + break; + } + else { + if(sy < BOARDSIZE-2) + sy += 1; + else if(sx > 1) + sx -= 1; + else + break; + } + } + + ++j; + mp->antpath[i][j][0] = BOARDSIZE-7.0; + mp->antpath[i][j][1] = -7.0; + mp->antpathlength[i] = j; + } + } + +/* for(i = 0; i < 20; ++i) { */ +/* int x = 1 + random()%(BOARDSIZE-2); */ +/* int y = 1 + random()%(BOARDSIZE-2); */ +/* board[x][y] = 1; */ +/* } */ +} + +/* compute nearness */ +static int near(double a[2], double b[2]) +{ + return fabs(a[0] - b[0]) < 0.5 && fabs(a[1] - b[1]) < 0.5; +} + +static double sign(double d) +{ + return d < 0.0 ? -1.0 : 1.0; +} + +static double min(double a, double b) +{ + return a < b ? a : b; +} + +/* draw method for ant */ +static Bool draw_ant(ModeInfo *mi, antmazestruct *mp, + const float *Material, int mono, int shadow, + float ant_step, Bool (*sphere)(float), Bool (*cone)(float)) +{ + + float cos1 = cos(mp->ant_step); + float cos2 = cos(mp->ant_step + 2 * Pi / 3); + float cos3 = cos(mp->ant_step + 4 * Pi / 3); + float sin1 = sin(mp->ant_step); + float sin2 = sin(mp->ant_step + 2 * Pi / 3); + float sin3 = sin(mp->ant_step + 4 * Pi / 3); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mono ? MaterialGray5 : Material); + +/* glEnable(GL_CULL_FACE); */ + + glPushMatrix(); + glScalef(1, 1.3, 1); + if(!((*sphere)(0.18))) + return False; + glScalef(1, 1 / 1.3, 1); + glTranslatef(0.00, 0.30, 0.00); + if(!((*sphere)(0.2))) + return False; + + glTranslatef(-0.05, 0.17, 0.05); + glRotatef(-90, 1, 0, 0); + glRotatef(-25, 0, 1, 0); + if(!((*cone)(0.05))) + return False; + glTranslatef(0.00, 0.10, 0.00); + if(!((*cone)(0.05))) + return False; + glRotatef(25, 0, 1, 0); + glRotatef(90, 1, 0, 0); + + glScalef(1, 1.3, 1); + glTranslatef(0.15, -0.65, 0.05); + if(!((*sphere)(0.25))) + return False; + glScalef(1, 1 / 1.3, 1); + glPopMatrix(); + +/* glDisable(GL_CULL_FACE); */ + + glDisable(GL_LIGHTING); + + /* ANTENNAS */ + glBegin(GL_LINES); + glColor3fv(mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.30, 0.00); + glColor3fv(MaterialGray); + glVertex3f(0.40, 0.70, 0.40); + mi->polygon_count++; + glColor3fv(mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.30, 0.00); + glColor3fv(MaterialGray); + glVertex3f(0.40, 0.70, -0.40); + mi->polygon_count++; + glEnd(); + + if(!shadow) { + glBegin(GL_POINTS); + glColor3fv(mono ? MaterialGray6 : MaterialRed); + glVertex3f(0.40, 0.70, 0.40); + mi->polygon_count++; + glVertex3f(0.40, 0.70, -0.40); + mi->polygon_count++; + glEnd(); + } + + /* LEFT-FRONT ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.05, 0.18); + glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45); + mi->polygon_count++; + glEnd(); + + /* LEFT-CENTER ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.00, 0.18); + glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45); + mi->polygon_count++; + glEnd(); + + /* LEFT-BACK ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mono ? MaterialGray5 : Material); + glVertex3f(0.00, -0.05, 0.18); + glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-FRONT ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.05, -0.18); + glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-CENTER ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.00, -0.18); + glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-BACK ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mono ? MaterialGray5 : Material); + glVertex3f(0.00, -0.05, -0.18); + glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45); + mi->polygon_count++; + glEnd(); + + if(!shadow) { + glBegin(GL_POINTS); + glColor3fv(mono ? MaterialGray8 : MaterialGray35); + glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45); + glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45); + glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45); + glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45); + glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45); + glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45); + mi->polygon_count += 6; + glEnd(); + } + + glEnable(GL_LIGHTING); + + return True; +} + +static Bool draw_antmaze_strip(ModeInfo * mi) +{ + antmazestruct *mp = &antmaze[MI_SCREEN(mi)]; + int i; + int mono = MI_IS_MONO(mi); + +/* glMatrixMode(GL_MODELVIEW); */ +/* glLoadIdentity(); */ +/* glPushMatrix(); */ + + glEnable(GL_LIGHTING); +/* glDisable(GL_BLEND); */ + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + + /* set light */ +/* double l1 = 1.0 - (elevator < 1.0 ? elevator : 2.0 - elevator); */ +/* GLfloat df[4] = {0.8*l1, 0.8*l1, 0.8*l1, 1.0}; */ +/* glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */ +/* glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */ + + /* draw board */ + if(mp->elevator < 1.0) { + glEnable(GL_TEXTURE_2D); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6); + glTranslatef(-(BOARDSIZE-1)/2.0, 0.0, -(BOARDSIZE-1)/2.0); + draw_board(mi, mp); + glTranslatef(BOARDSIZE/2.0, 0.0, BOARDSIZE/2.0); + glDisable(GL_TEXTURE_2D); + } + + mp->introduced--; + + glTranslatef(0.0, -0.1, 0.0); + + for(i = 0; i < ANTCOUNT; ++i) { + +/* glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */ +/* glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */ + + if(!mp->anton[i]) { continue; } + + /* determine location, move to goal */ + glPushMatrix(); + glTranslatef(0.0, 0.01, 0.0); + glTranslatef(mp->antposition[i][0], mp->antposition[i][2], mp->antposition[i][1]); +/* glScalef(1.0, 0.01, 1.0); */ + glScalef(0.6, 0.01, 0.6); + glRotatef(180.0 + mp->antdirection[i]*180.0/PI, 0.0, 1.0, 0.0); + glRotatef(90.0, 0.0, 0.0, 1.0); + glDisable(GL_LIGHTING); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glColor4fv(MaterialGrayB); + + glScalef(mp->antsize[i], mp->antsize[i], mp->antsize[i]); + + /* slow down first ant */ + if(i == 0 && mp->part[i] == mp->antpathlength[i]) + draw_ant(mi, mp, MaterialGrayB, mono, 1, mp->first_ant_step, mySphere, myCone); + else + draw_ant(mi, mp, MaterialGrayB, mono, 1, mp->ant_step, mySphere, myCone); + + glPopMatrix(); + + glDisable(GL_BLEND); + glEnable(GL_LIGHTING); + + glPushMatrix(); +/* glTranslatef(0.0, 0.18, 0.0); */ + glTranslatef(0.0, 0.12, 0.0); + glTranslatef(mp->antposition[i][0], mp->antposition[i][2], mp->antposition[i][1]); + glRotatef(180.0 + mp->antdirection[i]*180.0/PI, 0.0, 1.0, 0.0); + glRotatef(90.0, 0.0, 0.0, 1.0); + glScalef(0.6, 0.6, 0.6); + + glScalef(mp->antsize[i], mp->antsize[i], mp->antsize[i]); + +/* glEnable(GL_TEXTURE_2D); */ +/* glBindTexture(GL_TEXTURE_2D, brushedtexture); */ + +/* glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed); */ + + /* slow down first ant */ + if(i == 0 && mp->part[i] == mp->antpathlength[i] && mp->elevator > 0.0) { + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + draw_ant(mi, mp, antmaterial[i], mono, 1, mp->first_ant_step, mySphere, myCone); + } + else { +/* glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */ +/* glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */ + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, mp->brushedtexture); + draw_ant(mi, mp, antmaterial[i], mono, 1, mp->ant_step, mySphereTex, myCone); + glDisable(GL_TEXTURE_2D); + } + + +/* draw_ant(mi, antmaterial[i], mono, 0, ant_step, mySphereTex, myCone); */ +/* glDisable(GL_TEXTURE_2D); */ + glPopMatrix(); + } + +/* glPopMatrix(); */ + +/* /\* now draw overlay *\/ */ +/* glDisable(GL_LIGHTING); */ +/* glDisable(GL_BLEND); */ + +/* /\* go to ortho mode *\/ */ +/* glMatrixMode(GL_PROJECTION); */ +/* glPushMatrix(); */ +/* glLoadIdentity(); */ +/* glOrtho(-4.0, 4.0, -3.0, 3.0, -100.0, 100.0); */ + +/* /\* translate to corner *\/ */ +/* glTranslatef(4.0-1.2, 3.0-1.2, 0.0); */ + +/* glDisable(GL_LIGHTING); */ +/* glEnable(GL_BLEND); */ + +/* /\* draw the 2d board *\/ */ +/* glBegin(GL_QUADS); */ +/* { */ +/* int i, j; */ +/* double sz = 1.0; */ +/* for(i = 0; i < BOARDSIZE; ++i) */ +/* for(j = 0; j < BOARDSIZE; ++j) { */ +/* int par = board[i][j]; */ +/* glColor4f(par ? 0.4 : 0.6, */ +/* par ? 0.4 : 0.6, */ +/* par ? 0.4 : 0.6, */ +/* 0.5); */ +/* glNormal3f(0.0, 0.0, 1.0); */ +/* glVertex3f((sz*(i+1))/BOARDSIZE, (sz*(j+1))/BOARDSIZE, 0.0); */ +/* glVertex3f((sz*i)/BOARDSIZE, (sz*(j+1))/BOARDSIZE, 0.0); */ +/* glVertex3f((sz*i)/BOARDSIZE, (sz*j)/BOARDSIZE, 0.0); */ +/* glVertex3f((sz*(i+1))/BOARDSIZE, (sz*j)/BOARDSIZE, 0.0); */ +/* mi->polygon_count++; */ +/* } */ +/* } */ +/* glEnd(); */ + +/* glPopMatrix(); */ + + + /* but the step size is the same! */ + mp->ant_step += 0.18; +/* if(ant_step > 2*Pi) { */ +/* ant_step = 0.0; */ +/* } */ + + if(mp->ant_step > 5*Pi) + mp->started = 1; + + mp->ant_position += 1; + return True; +} +#undef AntmazeDivisions +#undef AntmazeTransversals + +ENTRYPOINT void reshape_antmaze(ModeInfo * mi, int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + int size = (width / 512) + 1; + antmazestruct *mp = &antmaze[MI_SCREEN(mi)]; + + glViewport(0, 0, mp->WindW = (GLint) width, mp->WindH = (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45, 1/h, 1, 25.0); + + glMatrixMode(GL_MODELVIEW); +/* glLineWidth(3.0); */ + glLineWidth(size); + glPointSize(size); +} + +static void update_ants(antmazestruct *mp) +{ + int i; + GLfloat df[4]; + df[0] = df[1] = df[2] = 0.8*mp->fadeout; + df[3] = 1.0; + + /* fade out */ + if(mp->fadeoutspeed < -0.00001) { + + if(mp->fadeout <= 0.0) { + /* switch boards: rebuild old board, increment current */ + mp->currentboard = (mp->currentboard+1)%BOARDCOUNT; + build_board(mp, mp->currentboard); + mp->fadeoutspeed = 0.02; + } + + mp->fadeout += mp->fadeoutspeed; + + glLightfv(GL_LIGHT0, GL_DIFFUSE, df); + glLightfv(GL_LIGHT1, GL_DIFFUSE, df); + } + + /* fade in */ + if(mp->fadeoutspeed > 0.0001) { + mp->fadeout += mp->fadeoutspeed; + if(mp->fadeout >= 1.0) { + mp->fadeout = 1.0; + mp->fadeoutspeed = 0.0; + mp->entroducing = 12; + } + glLightfv(GL_LIGHT0, GL_DIFFUSE, df); + glLightfv(GL_LIGHT1, GL_DIFFUSE, df); + } + + for(i = 0; i < ANTCOUNT; ++i) { + + if(!mp->anton[i] && mp->elevator < 1.0) { + + /* turn on ant */ + if(mp->entroducing > 0 && mp->introduced <= 0 && random()%100 == 0) { + mp->anton[i] = 1; + mp->part[i] = 0; + mp->antsize[i] = 0.0; + mp->antposition[i][0] = -4.0; + mp->antposition[i][1] = 5.0; + mp->antdirection[i] = PI/2.0; + mp->bposition[i][0] = 0; + mp->bposition[i][1] = 8; + mp->introduced = 300; + mp->entroducing--; + } + + continue; + } + + if(mp->part[i] == 0 && mp->antsize[i] < 1.0) { + mp->antsize[i] += 0.02; + continue; + } + + if(mp->part[i] > mp->antpathlength[i] && mp->antsize[i] > 0.0) { + mp->antsize[i] -= 0.02; + if(mp->antvelocity[i] > 0.0) { + mp->antvelocity[i] -= 0.02; + } + else { mp->antvelocity[i] = 0.0; } + + continue; + } + + if(mp->part[i] > mp->antpathlength[i] && mp->antsize[i] <= 0.0) { + mp->antvelocity[i] = 0.02; + + /* if(i != 0) { */ + antmaterial[i] = materials[random()%MATERIALS]; + /* } */ + + mp->antdirection[i] = PI/2.0; + mp->bposition[i][0] = 0; + mp->bposition[i][1] = 8; + mp->part[i] = 0; + + mp->antsize[i] = 0.0; + + mp->anton[i] = 0; + + mp->antposition[i][0] = -4.0; + mp->antposition[i][1] = 5.0; + + /* /\* reset camera *\/ */ + /* if(i == focus) { */ + /* started = 0; */ + /* ant_step = 0.0; */ + /* } */ + + /* check for the end */ + if(mp->entroducing <= 0) { + int ao = 0, z = 0; + for(z = 0; z < ANTCOUNT; ++z) { + if(mp->anton[z]) { ao = 1; break; } + } + + if(ao == 0) { + mp->fadeoutspeed = -0.02; + } + } + + } + + /* near goal, bend path towards next step */ + if(near(mp->antposition[i], mp->antpath[i][mp->part[i]])) { + + ++mp->part[i]; + +/* /\* special first ant *\/ */ +/* if(i == 0 && part[i] > antpathlength[i]) { */ +/* if(fir) */ +/* first_ant_step = ant_step; */ + +/* antvelocity[i] = 0.0; */ +/* /\* antposition[i][2] += 0.025; *\/ */ +/* elevator += 0.025; */ + +/* /\* set light *\/ */ +/* double l1 = 1.0 - (elevator < 1.0 ? elevator : 2.0 - elevator); */ +/* GLfloat df[4] = {0.8*l1, 0.8*l1, 0.8*l1, 1.0}; */ +/* glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */ +/* glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */ + +/* /\* draw next board *\/ */ +/* if(elevator > 1.0) { */ + +/* if(makenew == 1) { */ +/* int re; */ + +/* /\* switch boards: rebuild old board, increment current *\/ */ +/* currentboard = (currentboard+1)%BOARDCOUNT; */ +/* build_board(currentboard); */ + +/* for(re = 1; re < ANTCOUNT; ++re) { */ +/* anton[re] = 0; */ +/* antmaterial[re] = materials[random()%MATERIALS]; */ +/* } */ + +/* makenew = 0; */ + +/* } */ + +/* /\* draw the other board *\/ */ +/* glEnable(GL_TEXTURE_2D); */ +/* glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6); */ + +/* glPushMatrix(); */ +/* glTranslatef(-(-(BOARDSIZE-3.5)+(BOARDSIZE-1)/2.0), 0.0, */ +/* -(2.4+BOARDSIZE+(BOARDSIZE-1)/2.0)); */ +/* draw_board(mi, mp); */ +/* glPopMatrix(); */ +/* glDisable(GL_TEXTURE_2D); */ +/* } */ +/* /\* reset *\/ */ +/* if(elevator > 2.0) { */ +/* antposition[i][0] = -4.0;/\*-= -(-(BOARDSIZE-3.5)+(BOARDSIZE-1)/2.0);*\//\*= -4.0;*\/ */ +/* antposition[i][1] = 5.5;/\*-(2.4+BOARDSIZE+(BOARDSIZE-1)/2.0);*\/ */ +/* /\* antposition[i][2] = 0.15; *\/ */ +/* antdirection[i] = PI/2.0; */ +/* bposition[i][0] = 0; */ +/* bposition[i][1] = 8; */ +/* part[i] = 0; */ +/* antvelocity[i] = 0.02; */ +/* fir = 0; */ +/* antmaterial[i] = MaterialRed; */ + +/* makenew = 1; */ + +/* elevator = 0.0; */ +/* introduced = 200; */ +/* } */ +/* else { */ +/* part[i]--; */ +/* } */ +/* } */ + + } + + /* move toward goal, correct ant direction if required */ + else { + + /* difference */ + double dx = mp->antpath[i][mp->part[i]][0] - mp->antposition[i][0]; + double dz = - mp->antpath[i][mp->part[i]][1] + mp->antposition[i][1]; + double theta, ideal; + + if(dz > EPSILON) + theta = atan(dz/dx); + else + theta = dx > EPSILON ? 0.0 : PI; + + ideal = theta - mp->antdirection[i]; + if(ideal < -Pi/2.0) + ideal += Pi; + + /* compute correction */ + { + double dt = sign(ideal) * min(fabs(ideal), PI/90.0); + mp->antdirection[i] += dt; + if(mp->antdirection[i] > 2.0*PI) + mp->antdirection[i] = 0.0; + } + } + + mp->antposition[i][0] += mp->antvelocity[i] * cos(mp->antdirection[i]); + mp->antposition[i][1] += mp->antvelocity[i] * sin(-mp->antdirection[i]); + } +} + +static void pinit(antmazestruct *mp) +{ + glClearDepth(1.0); + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + + glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); + glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.001); + glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); + + glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.05); + glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.001); + glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0.1); + + +/* glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); */ +/* glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); */ + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_NORMALIZE); + glFrontFace(GL_CCW); + glCullFace(GL_BACK); + + /* antmaze */ + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); + + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glDisable(GL_TEXTURE_2D); + + /* setup textures */ + makeCheckImage(mp); + makeBrushedImage(mp); + + build_board(mp, 0); + build_board(mp, 1); + +/* makeCheckImage(); */ +/* glPixelStorei(GL_UNPACK_ALIGNMENT, 1); */ +/* glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, */ +/* checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, checkers); */ +/* glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); */ +/* glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); */ + +/* glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); */ +/* glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); */ +/* glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); */ + glEnable(GL_TEXTURE_2D); + +/* glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); */ +/* glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); */ +} + +#define MAX_MAGNIFICATION 10 +#define max(a, b) a < b ? b : a +#define min(a, b) a < b ? a : b + +ENTRYPOINT Bool antmaze_handle_event (ModeInfo *mi, XEvent *event) +{ + antmazestruct *mp = &antmaze[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, mp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &mp->button_down_p)) + return True; + + if (event->xany.type == ButtonPress) + { + switch(event->xbutton.button) { + + case Button3: + mp->focus = (mp->focus + 1) % ANTCOUNT; + return True; + + case Button4: + mp->mag = max(mp->mag-1, 1); + return True; + + case Button5: + mp->mag = min(mp->mag+1, MAX_MAGNIFICATION); + return True; + } + } + + return False; +} + +ENTRYPOINT void init_antmaze(ModeInfo * mi) +{ + double rot_speed = 0.3; + int i; + + antmazestruct *mp; + + MI_INIT(mi, antmaze); + mp = &antmaze[MI_SCREEN(mi)]; + mp->step = NRAND(90); + mp->ant_position = NRAND(90); + + + mp->antdirection[0] = PI/2.0; + mp->antdirection[1] = PI/2.0; + mp->antdirection[2] = 0; + mp->antdirection[3] = PI/2.0; + mp->antdirection[4] = PI/2.0; + + mp->antposition[0][0] = -4.0; + mp->antposition[0][1] = 5.0; + mp->antposition[0][1] = 0.15; + + mp->antposition[1][0] = -4.0; + mp->antposition[1][1] = 3.0; + mp->antposition[1][1] = 0.15; + + mp->antposition[2][0] = -1.0; + mp->antposition[2][1] = -2.0; + mp->antposition[2][1] = 0.15; + + mp->antposition[3][0] = -3.9; + mp->antposition[3][1] = 6.0; + mp->antposition[3][1] = 0.15; + + mp->antposition[4][0] = 2.0; + mp->antposition[4][1] = -2.0; + mp->antposition[4][1] = 0.15; + + + + for (i = 0; i < ANTCOUNT; i++) { + mp->antvelocity[i] = 0.02; + mp->antsize[i] = 1.0; + mp->anton[i] = 0; + } + + mp->bposition[0][0] = 0; + mp->bposition[0][1] = 8; + + mp->bposition[1][0] = 9; + mp->bposition[1][1] = 1; + + mp->bposition[2][0] = 1; + mp->bposition[2][1] = 1; + + mp->bposition[3][0] = 4; + mp->bposition[3][1] = 8; + + mp->bposition[4][0] = 2; + mp->bposition[4][1] = 1; + + mp->part[0] = 0; + mp->part[1] = 1; + mp->part[2] = 5; + mp->part[3] = 1; + mp->part[4] = 3; + + mp->introduced = 0; + mp->entroducing = 12; + mp->fadeout = 1.0; + mp->mag = 4.0; + + mp->rot = make_rotator (rot_speed, rot_speed, rot_speed, 1, 0, True); + mp->trackball = gltrackball_init (False); + + if ((mp->glx_context = init_GL(mi)) != NULL) { + reshape_antmaze(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + pinit(mp); + } + else + MI_CLEARWINDOW(mi); +} + +static void +device_rotate(ModeInfo *mi) +{ +#if 0 + GLfloat rot = current_device_rotation(); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + glScalef (1/s, s, 1); + } +#endif +} + + +ENTRYPOINT void draw_antmaze(ModeInfo * mi) +{ + double h = (GLfloat) MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + + antmazestruct *mp; + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if(!antmaze) + return; + mp = &antmaze[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + + if(!mp->glx_context) + return; + + mi->polygon_count = 0; + glXMakeCurrent(display, window, *(mp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + /* first panel */ + glPushMatrix(); +/* h = ((GLfloat) MI_HEIGHT(mi)/2) / (3*(GLfloat)MI_WIDTH(mi)/4); */ + glViewport(MI_WIDTH(mi)/32, MI_HEIGHT(mi)/8, (9*MI_WIDTH(mi))/16, 3*MI_HEIGHT(mi)/4); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + +/* h = (3*MI_HEIGHT(mi)/4) / (3*MI_WIDTH(mi)/4); */ + gluPerspective(45, 1/h, 1, 25.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + device_rotate(mi); + + glPushMatrix(); + + /* follow focused ant */ + glTranslatef(0.0, 0.0, -mp->mag - 5.0); + glRotatef(20.0+5.0*sin(mp->ant_step/40.0), 1.0, 0.0, 0.0); +/* glTranslatef(0.0, */ +/* started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0)), */ +/* started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0))); */ + + gltrackball_rotate(mp->trackball); + + glRotatef(mp->ant_step*0.6, 0.0, 1.0, 0.0); + +/* glRotatef(90.0, 0.0, 0.0, 1.0); */ + +/* glTranslatef(-antposition[0][0]-0.5, 0.0, -antposition[focus][1]); */ + /*-elevator*/ + + /* sync */ + if(!draw_antmaze_strip(mi)) { + MI_ABORT(mi); + return; + } + + glPopMatrix(); + glPopMatrix(); + + h = (GLfloat) (3*MI_HEIGHT(mi)/8) / (GLfloat) (MI_WIDTH(mi)/2); + + /* draw overhead */ + glPushMatrix(); + glViewport((17*MI_WIDTH(mi))/32, MI_HEIGHT(mi)/2, MI_WIDTH(mi)/2, 3*MI_HEIGHT(mi)/8); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + device_rotate(mi); + gluPerspective(45, 1/h, 1, 25.0); + glMatrixMode(GL_MODELVIEW); + + /* twist scene */ + glTranslatef(0.0, 0.0, -16.0); + glRotatef(60.0, 1.0, 0.0, 0.0); + glRotatef(-15.0 + mp->ant_step/10.0, 0.0, 1.0, 0.0); + gltrackball_rotate(mp->trackball); + + /* sync */ + if(!draw_antmaze_strip(mi)) { + MI_ABORT(mi); + return; + } + + glPopMatrix(); + + /* draw ant display */ + glPushMatrix(); + glViewport((5*MI_WIDTH(mi))/8, MI_HEIGHT(mi)/8, (11*MI_WIDTH(mi))/32, 3*MI_HEIGHT(mi)/8); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + device_rotate(mi); + gluPerspective(45, 1/h, 1, 25.0); + glMatrixMode(GL_MODELVIEW); + + /* twist scene */ + glTranslatef(0.0, 0.0, -1.6); + glRotatef(30.0, 1.0, 0.0, 0.0); + glRotatef(mp->ant_step, 0.0, 1.0, 0.0); + glRotatef(90.0, 0.0, 0.0, 1.0); + +/* /\* draw ant shadow *\/ */ +/* glPushMatrix(); */ +/* glScalef(1.0, 0.01, 1.0); */ +/* glRotatef(90.0, 0.0, 0.0, 1.0); */ +/* glRotatef(90.0, 0.0, 1.0, 0.0); */ +/* glDisable(GL_LIGHTING); */ +/* glColor4fv(MaterialGray6); */ + +/* /\* slow down first ant *\/ */ +/* draw_ant(MaterialGrayB, 0, 1, first_ant_step, mySphere, myCone); */ +/* glPopMatrix(); */ + + /* draw ant body */ + glEnable(GL_TEXTURE_2D); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glBindTexture(GL_TEXTURE_2D, mp->brushedtexture); + draw_ant(mi, mp, MaterialGray35, 0, 1, mp->ant_step/2.0, mySphereTex, myCone2); + glDisable(GL_TEXTURE_2D); + + glPopMatrix(); + +/* /\* draw overlay *\/ */ +/* glPushMatrix(); */ + +/* /\* go to ortho mode *\/ */ +/* glViewport(MI_WIDTH(mi)/2, MI_HEIGHT(mi)/8, MI_WIDTH(mi)/2, 3*MI_HEIGHT(mi)/8); */ + +/* glMatrixMode(GL_PROJECTION); */ +/* glLoadIdentity(); */ + +/* glPushMatrix (); */ +/* glOrtho(-4.0, 4.0, -3.0, 3.0, -100.0, 100.0); */ + +/* glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGrayB); */ +/* glColor4fv(MaterialGrayB); */ + +/* glDisable(GL_LIGHTING); */ +/* glEnable(GL_BLEND); */ + +/* glBegin(GL_QUADS); */ +/* glNormal3f(0.0, 0.0, 1.0); */ +/* glVertex3f(4.0, 3.0, 0.0); */ +/* glVertex3f(2.0, 3.0, 0.0); */ +/* glVertex3f(2.0, -3.0, 0.0); */ +/* glVertex3f(4.0, -3.0, 0.0); */ +/* mi->polygon_count++; */ +/* glEnd(); */ + +/* glEnable(GL_LIGHTING); */ +/* glDisable(GL_BLEND); */ + +/* glPopMatrix(); */ +/* glPopMatrix(); */ + + if (MI_IS_FPS(mi)) { + glViewport(0, 0, MI_WIDTH(mi), MI_HEIGHT(mi)); + do_fps (mi); + } + glFlush(); + + glXSwapBuffers(display, window); + + update_ants(mp); + + mp->step += 0.025; +} + +#ifndef STANDALONE +ENTRYPOINT void change_antmaze(ModeInfo * mi) +{ + antmazestruct *mp = &antmaze[MI_SCREEN(mi)]; + + if (!mp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context)); + pinit(); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("AntMaze", antmaze) + +#endif diff --git a/hacks/glx/antmaze.man b/hacks/glx/antmaze.man new file mode 100644 index 0000000..4c4bec8 --- /dev/null +++ b/hacks/glx/antmaze.man @@ -0,0 +1,52 @@ +.TH XScreenSaver 1 "May 2005" +.SH NAME +antmaze \- ant maze walker +.SH SYNOPSIS +.B antmaze +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps] +.SH DESCRIPTION +The \fIantmaze\fP code displays ants finding their way through a maze. +.SH OPTIONS +.I antmaze +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 2005 by Blair Tennessy. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Blair Tennessy , 8-May-2005. + diff --git a/hacks/glx/ants.h b/hacks/glx/ants.h new file mode 100644 index 0000000..d0bef7e --- /dev/null +++ b/hacks/glx/ants.h @@ -0,0 +1,45 @@ +/* ants.h -- header file containing common ant parameters + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Copyright 2003 Blair Tennessy +*/ + +/* static const GLfloat MaterialRed[] = {0.6, 0.0, 0.0, 1.0}; */ +/*static const GLfloat MaterialPurple[] = {0.6, 0.2, 0.5, 1.0};*/ +/*static const GLfloat MaterialOrange[] = {1.0, 0.69, 0.00, 1.0};*/ +/*static const GLfloat MaterialGreen[] = {0.1, 0.5, 0.2, 0.2};*/ +/*static const GLfloat MaterialBlue[] = {0.4, 0.4, 0.8, 1.0};*/ +/*static const GLfloat MaterialCyan[] = {0.2, 0.5, 0.7, 1.0};*/ +/*static const GLfloat MaterialYellow[] = {0.7, 0.7, 0.0, 1.0};*/ +/* static const GLfloat MaterialMagenta[] = {0.6, 0.2, 0.5, 1.0}; */ +/*static const GLfloat MaterialWhite[] = {0.7, 0.7, 0.7, 1.0};*/ +static const GLfloat MaterialGray[] = {0.2, 0.2, 0.2, 1.0}; +static const GLfloat MaterialGrayB[] = {0.1, 0.1, 0.1, 0.5}; +/*static const GLfloat MaterialGray35[] = {0.30, 0.30, 0.30, 1.0};*/ + +static const GLfloat MaterialGray5[] = {0.5, 0.5, 0.5, 1.0}; +static const GLfloat MaterialGray6[] = {0.6, 0.6, 0.6, 1.0}; +/* static const GLfloat MaterialGray8[] = {0.8, 0.8, 0.8, 1.0};*/ + +typedef struct { + + double position[3]; + double goal[3]; + double velocity; + double direction; + double step; + + const GLfloat *material; + +} Ant; diff --git a/hacks/glx/antspotlight.c b/hacks/glx/antspotlight.c new file mode 100644 index 0000000..55bb80c --- /dev/null +++ b/hacks/glx/antspotlight.c @@ -0,0 +1,799 @@ +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Copyright 2003 Blair Tennessy + */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*useSHM: True \n" + +# define free_antspotlight 0 +# define release_antspotlight 0 +#include "xlockmore.h" +#else +#include "xlock.h" +#endif + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "sphere.h" +#include "tube.h" +#include "rotator.h" +#include "gltrackball.h" + +ENTRYPOINT ModeSpecOpt antspotlight_opts = { + 0, NULL, 0, NULL, NULL +}; + +#ifdef USE_MODULES +ModStruct antspotlight_description = { + "antspotlight", "init_antspotlight", "draw_antspotlight", + (char *) NULL, "draw_antspotlight", "change_antspotlight", + (char *) NULL, &antspotlight_opts, 1000, 1, 1, 1, 4, 1.0, "", + "draws an ant scoping the screen", 0, NULL +}; +#endif + +#define Scale4Window 0.3 +#define Scale4Iconic 0.4 + +#define sqr(A) ((A)*(A)) + +#ifndef Pi +#define Pi M_PI +#endif + +#include "ants.h" +#include "grab-ximage.h" + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + GLfloat max_tx, max_ty; + int mono, wire, ticks; + GLuint screentexture; + + Ant *ant; + double boardsize; + GLfloat spot_direction[3]; + int mag; + + Bool mipmap_p; + Bool waiting_for_image_p; + +} antspotlightstruct; + +static antspotlightstruct *antspotlight = (antspotlightstruct *) NULL; + +#define NUM_SCENES 2 + +/* draw method for ant */ +static Bool draw_ant(ModeInfo *mi, antspotlightstruct *mp, + const GLfloat *Material, int mono, int shadow, + float ant_step, Bool (*sphere)(float), Bool (*cone)(float)) +{ + + float cos1 = cos(ant_step); + float cos2 = cos(ant_step + 2 * Pi / 3); + float cos3 = cos(ant_step + 4 * Pi / 3); + float sin1 = sin(ant_step); + float sin2 = sin(ant_step + 2 * Pi / 3); + float sin3 = sin(ant_step + 4 * Pi / 3); + +/* Apparently this is a performance killer on many systems... + glEnable(GL_POLYGON_SMOOTH); + */ + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->mono ? MaterialGray5 : Material); + glEnable(GL_CULL_FACE); + glPushMatrix(); + glScalef(1, 1.3, 1); + if(!((*sphere)(0.18))) + return False; + glScalef(1, 1 / 1.3, 1); + glTranslatef(0.00, 0.30, 0.00); + if(!((*sphere)(0.2))) + return False; + + glTranslatef(-0.05, 0.17, 0.05); + glRotatef(-90, 1, 0, 0); + glRotatef(-25, 0, 1, 0); + if(!((*cone)(0.05))) + return False; + glTranslatef(0.00, 0.10, 0.00); + if(!((*cone)(0.05))) + return False; + glRotatef(25, 0, 1, 0); + glRotatef(90, 1, 0, 0); + + glScalef(1, 1.3, 1); + glTranslatef(0.15, -0.65, 0.05); + if(!((*sphere)(0.25))) + return False; + glScalef(1, 1 / 1.3, 1); + glPopMatrix(); + glDisable(GL_CULL_FACE); + + glDisable(GL_LIGHTING); + + /* ANTENNAS */ + glEnable(GL_LINE_SMOOTH); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glBegin(GL_LINES); + glColor3fv(mp->mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.30, 0.00); + glColor3fv(MaterialGray); + glVertex3f(0.40, 0.70, 0.40); + mi->polygon_count++; + glColor3fv(mp->mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.30, 0.00); + glColor3fv(MaterialGray); + glVertex3f(0.40, 0.70, -0.40); + mi->polygon_count++; + glEnd(); + + if(!shadow) { + glBegin(GL_POINTS); + glColor3fv(mp->mono ? MaterialGray6 : MaterialGray5); + glVertex3f(0.40, 0.70, 0.40); + mi->polygon_count++; + glVertex3f(0.40, 0.70, -0.40); + mi->polygon_count++; + glEnd(); + } + + /* LEFT-FRONT ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mp->mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.05, 0.18); + glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45); + mi->polygon_count++; + glEnd(); + + /* LEFT-CENTER ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mp->mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.00, 0.18); + glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45); + mi->polygon_count++; + glEnd(); + + /* LEFT-BACK ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mp->mono ? MaterialGray5 : Material); + glVertex3f(0.00, -0.05, 0.18); + glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-FRONT ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mp->mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.05, -0.18); + glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-CENTER ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mp->mono ? MaterialGray5 : Material); + glVertex3f(0.00, 0.00, -0.18); + glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45); + mi->polygon_count++; + glEnd(); + + /* RIGHT-BACK ARM */ + glBegin(GL_LINE_STRIP); + glColor3fv(mp->mono ? MaterialGray5 : Material); + glVertex3f(0.00, -0.05, -0.18); + glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25); + mi->polygon_count++; + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45); + mi->polygon_count++; + glEnd(); + + if(!shadow) { + glBegin(GL_POINTS); + glColor3fv(MaterialGray5); + glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45); + glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45); + glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45); + glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45); + glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45); + glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45); + mi->polygon_count += 6; + glEnd(); + } + + glEnable(GL_LIGHTING); + + return True; +} + +/* filled sphere */ +static Bool mySphere(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if((quadObj = gluNewQuadric()) == 0) + return False; + + gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); + gluSphere(quadObj, radius, 16, 16); + gluDeleteQuadric(quadObj); +#else + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (16, 16, False); + glPopMatrix(); +#endif + return True; +} + +/* silhouette sphere */ +static Bool mySphere2(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_LINE); + gluSphere(quadObj, radius, 16, 8); + gluDeleteQuadric(quadObj); +#else + /* #### no GLU_LINE */ + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (16, 16, True); + glPopMatrix(); +#endif + return True; +} + +/* no cone */ +static Bool myCone2(float radius) { return True; } + +static void draw_board(ModeInfo *mi, antspotlightstruct *mp) +{ + int i, j; + double cutoff = Pi/3.0; + double center[3]; + double centertex[2]; + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, mp->screentexture); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6); + + /* draw mesh */ + + /* center is roughly spotlight position */ + center[0] = mp->ant->position[0];/* + cos(ant->direction); */ + center[1] = 0.0; + center[2] = mp->ant->position[2];/* - 0.7*sin(ant->direction);*/ + + centertex[0] = (mp->boardsize/2.0+center[0]) * mp->max_tx / mp->boardsize; + centertex[1] = mp->max_ty - ((mp->boardsize/2.0+center[2]) * mp->max_ty / mp->boardsize); + +/* glPolygonMode(GL_FRONT, GL_LINE); */ +/* glDisable(GL_TEXTURE_2D); */ + + /* + the vertices determined here should correspond to the illuminated + board. ideally the code adapts vertex distribution to the + intensity and shape of the light. + + i should be finding the intersection of the cone of light and + the board-plane. + */ + for(i = -12; i < 12; ++i) { + + double theta1, theta2; + + glBegin(GL_TRIANGLE_STRIP); + glNormal3f(0.0, 1.0, 0.0); + + glTexCoord2f(centertex[0], centertex[1]); + glVertex3f(center[0], 0.01, center[2]); + + /* watch those constants */ + theta1 = mp->ant->direction + i*(cutoff/8); + theta2 = mp->ant->direction + (i+1)*(cutoff/8); + + for(j = 1; j <= 64; ++j) { + double point[3], tex[2]; + /* double fj = pow(1.05, j) - 1.0;*/ + double fj = j / 6.0; + point[0] = center[0] + fj*cos(theta1); + point[1] = 0.0; + point[2] = center[2] - fj*sin(theta1); + + tex[0] = (mp->boardsize/2.0+point[0]) * mp->max_tx / mp->boardsize; + tex[1] = (mp->boardsize/2.0+point[2]) * mp->max_ty / mp->boardsize; + + glTexCoord2f(tex[0], tex[1]); + glVertex3f(point[0], point[1], point[2]); + + point[0] = center[0] + fj*cos(theta2); + point[1] = 0.0; + point[2] = center[2] - fj*sin(theta2); + + tex[0] = (mp->boardsize/2.0+point[0]) * mp->max_tx / mp->boardsize; + tex[1] = (mp->boardsize/2.0+point[2]) * mp->max_ty / mp->boardsize; + + glTexCoord2f(tex[0], tex[1]); + glVertex3f(point[0], point[1], point[2]); + mi->polygon_count++; + } + + glEnd(); + } + + glDisable(GL_TEXTURE_2D); +} + +/* return euclidean distance between two points */ +static double distance(double x[3], double y[3]) +{ + double dx = x[0] - y[0]; + double dz = x[2] - y[2]; + return sqrt(dx*dx + dz*dz); +} + +/* determine a new goal */ +static void find_goal(antspotlightstruct *mp) +{ + do { + mp->ant->goal[0] = random()%((int)(mp->boardsize+0.5)-2) - mp->boardsize/2.0 + 1.0; + mp->ant->goal[1] = 0.0; + mp->ant->goal[2] = random()%((int)(mp->boardsize+0.5)-2) - mp->boardsize/2.0 + 1.0; + } + while(distance(mp->ant->position, mp->ant->goal) < 2.0); +} + +/* construct our ant */ +static void build_ant(antspotlightstruct *mp) +{ + mp->ant = (Ant *) malloc(sizeof (Ant)); + mp->ant->position[0] = 0.0; + mp->ant->position[1] = 0.0; + mp->ant->position[2] = 0.0; + mp->ant->direction = 0.0; + mp->ant->velocity = 0.02; + mp->ant->material = MaterialGray5; + mp->ant->step = 0; + find_goal(mp); +} + +#define EPSILON 0.01 + +static double sign(double d) +{ + return d < 0.0 ? -1.0 : 1.0; +} + +static double min(double a, double b) +{ + return a < b ? a : b; +} + +/* +static double max(double a, double b) +{ + return a > b ? a : b; +} +*/ + +/* find a new goal and reset steps */ +static void reset_ant(antspotlightstruct *mp) +{ + find_goal(mp); +} + +/* draw ant composed of skeleton and glass */ +static void show_ant(ModeInfo *mi, antspotlightstruct *mp) +{ + + glPushMatrix(); + + /* move into position */ + glTranslatef(mp->ant->position[0], 0.33, mp->ant->position[2]); + glRotatef(180.0 + mp->ant->direction*180.0/Pi, 0.0, 1.0, 0.0); + glRotatef(90.0, 0.0, 0.0, 1.0); + + /* draw skeleton */ + draw_ant(mi, mp, mp->ant->material, mp->mono, 0, mp->ant->step, mySphere2, myCone2); + + /* draw glass */ + if(!mp->wire && !mp->mono) { + glEnable(GL_BLEND); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGrayB); + glColor4fv(MaterialGrayB); + draw_ant(mi, mp, MaterialGrayB, mp->mono, 0, mp->ant->step, mySphere, myCone2); + glDisable(GL_BLEND); + } + + glPopMatrix(); +} + +static void draw_antspotlight_strip(ModeInfo *mi) +{ + antspotlightstruct *mp = &antspotlight[MI_SCREEN(mi)]; + + /* compute spotlight position and direction */ + GLfloat light1_position[4]; + + light1_position[0] = mp->ant->position[0] + 0.7*cos(mp->ant->direction); + light1_position[1] = 0.5; + light1_position[2] = mp->ant->position[2] - 0.7*sin(mp->ant->direction); + light1_position[3] = 1.0; + + mp->spot_direction[0] = cos(mp->ant->direction); + mp->spot_direction[1] = -0.5; + mp->spot_direction[2] = -sin(mp->ant->direction); + + glLightfv(GL_LIGHT2, GL_POSITION, light1_position); + glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, mp->spot_direction); + + glEnable(GL_LIGHT2); + glDisable(GL_LIGHT0); + glDisable(GL_LIGHT1); + + /* draw board */ + if(mp->wire) + ; + else + draw_board(mi, mp); + + glDisable(GL_LIGHT2); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + + /* now modify ant */ + show_ant(mi, mp); + + /* near goal, bend path towards next step */ + if(distance(mp->ant->position, mp->ant->goal) < 0.2) { + reset_ant(mp); + } + + if(random()%100 == 0) { + reset_ant(mp); + } + + + /* move toward goal, correct ant direction if required */ + else { + + /* difference */ + double dx = mp->ant->goal[0] - mp->ant->position[0]; + double dz = -(mp->ant->goal[2] - mp->ant->position[2]); + double theta, ideal, dt; + + if(fabs(dx) > EPSILON) { + theta = atan(dz/dx); + if(dx < 0.0) + theta += Pi; + } + else + theta = dz > 0.0 ? (1.0/2.0)*Pi : (3.0/2.0)*Pi; + + if(theta < 0.0) + theta += 2*Pi; + + ideal = theta - mp->ant->direction; + if(ideal > Pi) + ideal -= 2*Pi; + + /* compute correction */ + dt = sign(ideal) * min(fabs(ideal), Pi/100.0); + mp->ant->direction += dt; + while(mp->ant->direction < 0.0) + mp->ant->direction += 2*Pi; + while(mp->ant->direction > 2*Pi) + mp->ant->direction -= 2*Pi; + } + + mp->ant->position[0] += mp->ant->velocity * cos(mp->ant->direction); + mp->ant->position[2] += mp->ant->velocity * sin(-mp->ant->direction); + mp->ant->step += 10*mp->ant->velocity; + while(mp->ant->step > 2*Pi) + mp->ant->step -= 2*Pi; +} + +ENTRYPOINT void reshape_antspotlight(ModeInfo * mi, int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + int size = 2; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45, 1/h, 1.0, 25.0); + + glMatrixMode(GL_MODELVIEW); + glLineWidth(size); + glPointSize(size); +} + +/* lighting variables */ +static const GLfloat front_shininess[] = {60.0}; +static const GLfloat front_specular[] = {0.8, 0.8, 0.8, 1.0}; +static const GLfloat ambient[] = {0.4, 0.4, 0.4, 1.0}; +/*static const GLfloat ambient2[] = {0.0, 0.0, 0.0, 0.0};*/ +static const GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const GLfloat position0[] = {1.0, 5.0, 1.0, 0.0}; +static const GLfloat position1[] = {-1.0, -5.0, 1.0, 0.0}; +/*static const GLfloat lmodel_ambient[] = {0.8, 0.8, 0.8, 1.0};*/ +static const GLfloat lmodel_twoside[] = {GL_TRUE}; +static const GLfloat spotlight_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; +static const GLfloat spotlight_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; + +static void pinit(void) +{ + glClearDepth(1.0); + + /* setup twoside lighting */ + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, spotlight_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + + /* setup spotlight */ + glLightfv(GL_LIGHT2, GL_AMBIENT, spotlight_ambient); + glLightfv(GL_LIGHT2, GL_DIFFUSE, spotlight_diffuse); + glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 0.1); + glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.05); + glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.0); + glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 60.0); + glLightf(GL_LIGHT2, GL_SPOT_EXPONENT, 3.0); + + glEnable(GL_NORMALIZE); + glFrontFace(GL_CCW); + glCullFace(GL_BACK); + + /* setup material properties */ + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glShadeModel(GL_SMOOTH); +/* glShadeModel(GL_FLAT); */ + glEnable(GL_DEPTH_TEST); +} + +#define MAX_MAGNIFICATION 10 +#define max(a, b) a < b ? b : a +#define min(a, b) a < b ? a : b + +/* event handling */ +ENTRYPOINT Bool antspotlight_handle_event(ModeInfo *mi, XEvent *event) +{ + antspotlightstruct *mp = &antspotlight[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, mp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &mp->button_down_p)) + return True; + + if (event->xany.type == ButtonPress) + { + switch(event->xbutton.button) { + + case Button1: + mp->button_down_p = True; + gltrackball_start(mp->trackball, + event->xbutton.x, event->xbutton.y, + MI_WIDTH (mi), MI_HEIGHT (mi)); + return True; + + case Button4: + mp->mag = max(mp->mag-1, 1); + return True; + + case Button5: + mp->mag = min(mp->mag+1, MAX_MAGNIFICATION); + return True; + } + } + + return False; +} + +static void +image_loaded_cb (const char *filename, XRectangle *geometry, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + antspotlightstruct *mp = (antspotlightstruct *) closure; + + mp->max_tx = (GLfloat) image_width / texture_width; + mp->max_ty = (GLfloat) image_height / texture_height; + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + (mp->mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); + + mp->waiting_for_image_p = False; +} + + +/* get screenshot */ +static void get_snapshot(ModeInfo *modeinfo) +{ + antspotlightstruct *mp = &antspotlight[MI_SCREEN(modeinfo)]; + + if (MI_IS_WIREFRAME(modeinfo)) + return; + + mp->waiting_for_image_p = True; + mp->mipmap_p = True; + load_texture_async (modeinfo->xgwa.screen, modeinfo->window, + *mp->glx_context, 0, 0, mp->mipmap_p, + mp->screentexture, image_loaded_cb, mp); +} + + +ENTRYPOINT void init_antspotlight(ModeInfo *mi) +{ + double rot_speed = 0.3; + + antspotlightstruct *mp; + + MI_INIT(mi, antspotlight); + mp = &antspotlight[MI_SCREEN(mi)]; + mp->rot = make_rotator (rot_speed, rot_speed, rot_speed, 1, 0, True); + mp->trackball = gltrackball_init (False); + + if((mp->glx_context = init_GL(mi)) != NULL) { + reshape_antspotlight(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + pinit(); + } + else + MI_CLEARWINDOW(mi); + + glGenTextures(1, &mp->screentexture); + glBindTexture(GL_TEXTURE_2D, mp->screentexture); + get_snapshot(mi); + + build_ant(mp); + mp->mono = MI_IS_MONO(mi); + mp->wire = MI_IS_WIREFRAME(mi); + mp->boardsize = 8.0; + mp->mag = 1; +} + +ENTRYPOINT void draw_antspotlight(ModeInfo * mi) +{ + antspotlightstruct *mp; + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if(!antspotlight) + return; + mp = &antspotlight[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + + if(!mp->glx_context) + return; + + mi->polygon_count = 0; + + /* Just keep running before the texture has come in. */ + /* if (mp->waiting_for_image_p) return; */ + + glXMakeCurrent(display, window, *(mp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glRotatef(current_device_rotation(), 0, 0, 1); + + /* position camera */ + + /* follow focused ant */ + glTranslatef(0.0, 0.0, -6.0 - mp->mag); + glRotatef(35.0, 1.0, 0.0, 0.0); + gltrackball_rotate(mp->trackball); + glTranslatef(-mp->ant->position[0], mp->ant->position[1], -mp->ant->position[2]); + + /* stable position */ +/* glTranslatef(0.0, 0.0, -10.0 - mag); */ +/* gltrackball_rotate(mp->trackball); */ +/* glRotatef(40.0, 1.0, 0.0, 0.0); */ +/* glRotatef(20.0, 0.0, 1.0, 0.0); */ + + draw_antspotlight_strip(mi); + + ++mp->ticks; + + glPopMatrix(); + + if (MI_IS_FPS(mi)) do_fps (mi); + glFlush(); + + glXSwapBuffers(display, window); +} + +#ifndef STANDALONE +ENTRYPOINT void change_antspotlight(ModeInfo * mi) +{ + antspotlightstruct *mp = &antspotlight[MI_SCREEN(mi)]; + + if (!mp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context)); + pinit(); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("AntSpotlight", antspotlight) diff --git a/hacks/glx/antspotlight.man b/hacks/glx/antspotlight.man new file mode 100644 index 0000000..c5f8ed7 --- /dev/null +++ b/hacks/glx/antspotlight.man @@ -0,0 +1,56 @@ +.TH XScreenSaver 1 "July 2003" +.SH NAME +antspotlight \- ant spotlight screenhack +.SH SYNOPSIS +.B antspotlight +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps] +.SH DESCRIPTION +The \fIantspotlight\fP code displays a single ant spotting out a screenshot. +.SH OPTIONS +.I antspotlight +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-delay \fImicroseconds\fP +Per-frame delay. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 2003 by Blair Tennessy. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Blair Tennessy , 20-July-2003. + diff --git a/hacks/glx/atlantis.c b/hacks/glx/atlantis.c new file mode 100644 index 0000000..04bde12 --- /dev/null +++ b/hacks/glx/atlantis.c @@ -0,0 +1,577 @@ +/* atlantis --- Shows moving 3D sea animals */ + +#if 0 +static const char sccsid[] = "@(#)atlantis.c 5.08 2003/04/09 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 1998. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Mark J. Kilgard + * as a demo for openGL programming. + * + * Porting it to xlock was possible by comparing the original Mesa's morph3d + * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna + * (look at morph3d.c) for his indirect help. + * + * Thanks goes also to Brian Paul for making it possible and inexpensive + * to use OpenGL at home. + * + * My e-mail address is lassauge@users.sourceforge.net + * + * Eric Lassauge (May-13-1998) + * + * REVISION HISTORY: + * + * Jamie Zawinski, 2-Apr-01: - The fishies were inside out! The back faces + * were being drawn, not the front faces. + * - Added a texture to simulate light from the + * surface, like in the SGI version. + * + * David A. Bagley - 98/06/17 : Add whalespeed option. Global options to + * initialize local variables are now: + * XLock.atlantis.cycles: 100 ! SharkSpeed + * XLock.atlantis.batchcount: 4 ! SharkNum + * XLock.atlantis.whalespeed: 250 ! WhaleSpeed + * XLock.atlantis.size: 6000 ! SharkSize + * Add random direction for whales/dolphins + * + * E.Lassauge - 98/06/16: Use the following global options to initialize + * local variables : + * XLock.atlantis.delay: 100 ! SharkSpeed + * XLock.atlantis.batchcount: 4 ! SharkNum + * XLock.atlantis.cycles: 250 ! WhaleSpeed + * XLock.atlantis.size: 6000 ! SharkSize + * Add support for -/+ wireframe (t'was so easy to do!) + * + * TODO : + * - better handling of sizes and speeds + * - test standalone and module modes + * - purify it (!) + */ + +/* Copyright (c) Mark J. Kilgard, 1994. */ + +/** + * (c) Copyright 1993, 1994, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(TM) is a trademark of Silicon Graphics, Inc. + */ + +#define DEF_TEXTURE "True" +#define DEF_GRADIENT "True" +#define DEF_WHALESPEED "250" + +#ifdef STANDALONE +# define DEFAULTS "*delay: 25000 \n" \ + "*count: 4 \n" \ + "*showFPS: False \n" \ + "*cycles: 100 \n" \ + "*size: 6000 \n" \ + "*wireframe: False \n" +# define release_atlantis 0 +# define atlantis_handle_event xlockmore_no_events +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +# include "vis.h" +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#include "atlantis.h" + + +static int whalespeed; +static int do_texture; +static int do_gradient; +static XrmOptionDescRec opts[] = +{ + {"-whalespeed", ".atlantis.whalespeed", XrmoptionSepArg, 0}, + {"-texture", ".atlantis.texture", XrmoptionNoArg, "true"}, + {"+texture", ".atlantis.texture", XrmoptionNoArg, "false"}, + {"-gradient", ".atlantis.gradient", XrmoptionNoArg, "true"}, + {"+gradient", ".atlantis.gradient", XrmoptionNoArg, "false"}, +}; + +static argtype vars[] = +{ + {&whalespeed, "whalespeed", "WhaleSpeed", DEF_WHALESPEED, t_Int}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_gradient, "gradient", "Gradient", DEF_GRADIENT, t_Bool}, +}; + +static OptionStruct desc[] = +{ + {"-whalespeed num", "speed of whales and the dolphin"}, + {"-texture", "whether to introduce water-like distortion"}, + {"-gradient", "whether to introduce gradient-filled background"}, +}; + +ENTRYPOINT ModeSpecOpt atlantis_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + +#ifdef USE_MODULES +ModStruct atlantis_description = +{"atlantis", "init_atlantis", "draw_atlantis", NULL, + "refresh_atlantis", "change_atlantis", "free_atlantis", &atlantis_opts, + 1000, NUM_SHARKS, SHARKSPEED, SHARKSIZE, 64, 1.0, "", + "Shows moving sharks/whales/dolphin", 0, NULL}; + +#endif + +static atlantisstruct *atlantis = NULL; + +#include "ximage-loader.h" + +#include "images/gen/sea-texture_png.h" + + +static void +parse_image_data(ModeInfo *mi) +{ + atlantisstruct *ap = &atlantis[MI_SCREEN(mi)]; + ap->texture = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + sea_texture_png, + sizeof(sea_texture_png)); +} + +static void +InitFishs(atlantisstruct * ap) +{ + int i; + + for (i = 0; i < ap->num_sharks; i++) { + ap->sharks[i].x = 70000.0 + NRAND(ap->sharksize); + ap->sharks[i].y = NRAND(ap->sharksize); + ap->sharks[i].z = NRAND(ap->sharksize); + ap->sharks[i].psi = NRAND(360) - 180.0; + ap->sharks[i].v = 1.0; + } + + /* Random whale direction */ + ap->whaledir = LRAND() & 1; + + ap->dolph.x = 30000.0; + ap->dolph.y = 0.0; + ap->dolph.z = (float) (ap->sharksize); + ap->dolph.psi = (ap->whaledir) ? 90.0 : -90.0; + ap->dolph.theta = 0.0; + ap->dolph.v = 6.0; + + ap->momWhale.x = 70000.0; + ap->momWhale.y = 0.0; + ap->momWhale.z = 0.0; + ap->momWhale.psi = (ap->whaledir) ? 90.0 : -90.0; + ap->momWhale.theta = 0.0; + ap->momWhale.v = 3.0; + + ap->babyWhale.x = 60000.0; + ap->babyWhale.y = -2000.0; + ap->babyWhale.z = -2000.0; + ap->babyWhale.psi = (ap->whaledir) ? 90.0 : -90.0; + ap->babyWhale.theta = 0.0; + ap->babyWhale.v = 3.0; +} + +static void +Init(ModeInfo *mi) +{ + atlantisstruct *ap = &atlantis[MI_SCREEN(mi)]; + + static const float ambient[] = {0.1, 0.1, 0.1, 1.0}; + static const float diffuse[] = {1.0, 1.0, 1.0, 1.0}; + static const float position[] = {0.0, 1.0, 0.0, 0.0}; + static const float mat_shininess[] = {90.0}; + static const float mat_specular[] = {0.8, 0.8, 0.8, 1.0}; + static const float mat_diffuse[] = {0.46, 0.66, 0.795, 1.0}; + static const float mat_ambient[] = {0.0, 0.1, 0.2, 1.0}; + static const float lmodel_ambient[] = {0.4, 0.4, 0.4, 1.0}; + static const float lmodel_localviewer[] = {0.0}; + + float fblue = 0.0, fgreen; + + glFrontFace(GL_CCW); + + if (ap->wire) + { + glDisable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); + glDisable(GL_LIGHTING); + glDisable(GL_NORMALIZE); + } + else + { + glDepthFunc(GL_LEQUAL); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glEnable(GL_NORMALIZE); + glShadeModel(GL_SMOOTH); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_localviewer); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient); + } + + if (ap->wire || !do_texture) + { + glDisable(GL_TEXTURE_2D); + } + else + { + GLfloat scale = 0.0005; + + if (!ap->texture) + parse_image_data (mi); + + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + ap->texture->width, ap->texture->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, + ap->texture->data); + check_gl_error("texture"); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + +# ifndef HAVE_JWZGLES + { + GLfloat s_plane[] = { 1, 0, 0, 0 }; + GLfloat t_plane[] = { 0, 0, 1, 0 }; + glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); + glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); + glTexGenfv(GL_S, GL_EYE_PLANE, s_plane); + glTexGenfv(GL_T, GL_EYE_PLANE, t_plane); + glEnable(GL_TEXTURE_GEN_S); + glEnable(GL_TEXTURE_GEN_T); + } +# endif + glEnable(GL_TEXTURE_2D); + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glScalef(scale, scale, 1); + glMatrixMode(GL_MODELVIEW); + } + + InitFishs(ap); + + /* Add a little randomness */ + fblue = ((float) (NRAND(30)) / 100.0) + 0.70; + fgreen = fblue * 0.56; + glClearColor(0.0, fgreen, fblue, 1.0); +} + +ENTRYPOINT void +reshape_atlantis(ModeInfo * mi, int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + atlantisstruct *ap = &atlantis[MI_SCREEN(mi)]; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, ap->WinW = (GLint) width, ap->WinH = (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(400.0, 1/h, 1.0, 2000000.0); + glMatrixMode(GL_MODELVIEW); +} + + +/* Fill the background with a gradient -- thanks to + Phil Carrig for figuring out + how to do this more efficiently! + */ +static void +clear_tank (atlantisstruct * ap) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (do_gradient && !ap->wire) + { + GLfloat top[4] = { 0.00, 0.40, 0.70, }; + GLfloat bot[4] = { 0.00, 0.05, 0.18, }; + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + { + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + { + glLoadIdentity(); + /* glRotatef(current_device_rotation(), 0, 0, 1); */ + +# ifndef HAVE_JWZGLES + glShadeModel (GL_SMOOTH); +# endif + glDisable (GL_LIGHTING); + glBegin (GL_QUADS); + glColor3fv (bot); + glVertex3f (-1, -1, 1); glVertex3f ( 1, -1, 1); + glColor3fv (top); + glVertex3f ( 1, 1, 1); glVertex3f (-1, 1, 1); + glEnd(); + glEnable (GL_LIGHTING); + + /* Need to reset this because jwzgles conflates color and material */ + glColor3f (0.0, 0.1, 0.2); + } + glPopMatrix(); + } + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + } +} + + +static void +Animate(atlantisstruct * ap) +{ + int i; + + for (i = 0; i < ap->num_sharks; i++) { + SharkPilot(&(ap->sharks[i]), ap->sharkspeed); + SharkMiss(ap, i); + } + WhalePilot(&(ap->dolph), ap->whalespeed, ap->whaledir); + ap->dolph.phi++; + WhalePilot(&(ap->momWhale), ap->whalespeed, ap->whaledir); + ap->momWhale.phi++; + WhalePilot(&(ap->babyWhale), ap->whalespeed, ap->whaledir); + ap->babyWhale.phi++; +} + +static void +AllDisplay(atlantisstruct * ap) +{ + int i; + + clear_tank(ap); + + for (i = 0; i < ap->num_sharks; i++) { + glPushMatrix(); + FishTransform(&(ap->sharks[i])); + DrawShark(&(ap->sharks[i]), ap->wire); + glPopMatrix(); + } + + glPushMatrix(); + FishTransform(&(ap->dolph)); + DrawDolphin(&(ap->dolph), ap->wire); + glPopMatrix(); + + glPushMatrix(); + FishTransform(&(ap->momWhale)); + DrawWhale(&(ap->momWhale), ap->wire); + glPopMatrix(); + + glPushMatrix(); + FishTransform(&(ap->babyWhale)); + glScalef(0.45, 0.45, 0.3); + DrawWhale(&(ap->babyWhale), ap->wire); + glPopMatrix(); +} + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Xlock hooks. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +/* + *----------------------------------------------------------------------------- + * Initialize atlantis. Called each time the window changes. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void +init_atlantis(ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + atlantisstruct *ap; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + MI_INIT(mi, atlantis); + ap = &atlantis[screen]; + ap->num_sharks = MI_COUNT(mi); + if (ap->sharks == NULL) { + if ((ap->sharks = (fishRec *) calloc(ap->num_sharks, + sizeof (fishRec))) == NULL) { + /* free everything up to now */ + (void) free((void *) atlantis); + atlantis = NULL; + return; + } + } + ap->sharkspeed = MI_CYCLES(mi); /* has influence on the "width" + of the movement */ + ap->sharksize = MI_SIZE(mi); /* has influence on the "distance" + of the sharks */ + ap->whalespeed = whalespeed; + ap->wire = MI_IS_WIREFRAME(mi); + + if (MI_IS_DEBUG(mi)) { + (void) fprintf(stderr, + "%s:\n\tnum_sharks=%d\n\tsharkspeed=%.1f\n\tsharksize=%d\n\twhalespeed=%.1f\n\twireframe=%s\n", + MI_NAME(mi), + ap->num_sharks, + ap->sharkspeed, + ap->sharksize, + ap->whalespeed, + ap->wire ? "yes" : "no" + ); + } + if ((ap->glx_context = init_GL(mi)) != NULL) { + + reshape_atlantis(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + Init(mi); + AllDisplay(ap); + glXSwapBuffers(display, window); + + } else { + MI_CLEARWINDOW(mi); + } +} + +/* + *----------------------------------------------------------------------------- + * Called by the mainline code periodically to update the display. + *----------------------------------------------------------------------------- + */ +ENTRYPOINT void +draw_atlantis(ModeInfo * mi) +{ + atlantisstruct *ap = &atlantis[MI_SCREEN(mi)]; + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + MI_IS_DRAWN(mi) = True; + + if (!ap->glx_context) + return; + + glXMakeCurrent(display, window, *(ap->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glRotatef(current_device_rotation(), 0, 0, 1); + AllDisplay(ap); + Animate(ap); + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glXSwapBuffers(display, window); +} + + +/* + *----------------------------------------------------------------------------- + * The display is being taken away from us. Free up malloc'ed + * memory and X resources that we've alloc'ed. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void +free_atlantis(ModeInfo * mi) +{ +#if 0 + atlantisstruct *ap = &atlantis[screen]; + + if (ap->sharks) + (void) free((void *) ap->sharks); +#endif +} + +#ifndef STANDALONE +ENTRYPOINT void +refresh_atlantis(ModeInfo * mi) +{ +} + +ENTRYPOINT void +change_atlantis(ModeInfo * mi) +{ + atlantisstruct *ap = &atlantis[MI_SCREEN(mi)]; + + if (!ap->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ap->glx_context)); + Init(mi); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("Atlantis", atlantis) + +#endif /* USE_GL */ diff --git a/hacks/glx/atlantis.h b/hacks/glx/atlantis.h new file mode 100644 index 0000000..3b24bfa --- /dev/null +++ b/hacks/glx/atlantis.h @@ -0,0 +1,133 @@ +/* atlantis --- Shows moving 3D sea animals */ + +/* Copyright (c) E. Lassauge, 1998. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Mark J. Kilgard + * as a demo for openGL programming. + * + * Porting it to xlock was possible by comparing the original Mesa's morph3d + * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna + * (look at morph3d.c) for his indirect help. + * + * Thanks goes also to Brian Paul for making it possible and inexpensive + * to use OpenGL at home. + * + * My e-mail address is lassauge@users.sourceforge.net + * + * Eric Lassauge (May-13-1998) + * + */ + +/** + * (c) Copyright 1993, 1994, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(TM) is a trademark of Silicon Graphics, Inc. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifdef STANDALONE +# include +# include "screenhackI.h" +# ifndef HAVE_JWXYZ +# include +# include +# endif +#else +# include "xlock.h" +#endif +#ifdef HAVE_ANDROID +#include +#endif + + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#define RAD 57.295 +#define RRAD 0.01745 + +/* default values */ +#define NUM_SHARKS 4 +#define SHARKSPEED 100 +#define SHARKSIZE 6000 + +typedef struct _fishRec { + float x, y, z, phi, theta, psi, v; + float xt, yt, zt; + float htail, vtail; + float dtheta; + int spurt, attack; + int sign; +} fishRec; + +typedef struct { + GLint WinH, WinW; + GLXContext *glx_context; + int num_sharks; + float sharkspeed, whalespeed; + int sharksize; + int wire; + Bool whaledir; + fishRec *sharks; + fishRec momWhale; + fishRec babyWhale; + fishRec dolph; + + XImage *texture; /* water distortion overlay bits */ +} atlantisstruct; + +extern void FishTransform(fishRec *); +extern void WhalePilot(fishRec *, float, Bool); +extern void SharkPilot(fishRec *, float); +extern void SharkMiss(atlantisstruct *, int); +extern void DrawWhale(fishRec *, int); +extern void DrawShark(fishRec *, int); +extern void DrawDolphin(fishRec *, int); diff --git a/hacks/glx/atlantis.man b/hacks/glx/atlantis.man new file mode 100644 index 0000000..0c2df5a --- /dev/null +++ b/hacks/glx/atlantis.man @@ -0,0 +1,78 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +atlantis - draw swimming sharks, whales, and dolphins. +.SH SYNOPSIS +.B atlantis +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-whalespeed \fInumber\fP] +[\-delay \fInumber\fP] +[\-size \fInumber\fP] +[\-count \fInumber\fP] +[\-no-texture] +[\-gradient] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +This is xfishtank writ large: a GL animation of a number of sharks, +dolphins, and whales. The swimming motions are great. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-whalespeed \fInumber\fP +Whale Speed. 0 - 1000. Default: 250. +.TP 8 +.B \-cycles \fInumber\fP +Shark Speed. Default: 100. +.TP 8 +.B \-size \fInumber\fP +Shark Proximity. 100 - 10000. Default: 6000. +.TP 8 +.B \-count \fInumber\fP +Number of Sharks. 0 - 20. Default: 4. +.TP 8 +.B \-texture | \-no-texture +Whether to show shimmering water. +.TP 8 +.B \-gradient +Whether to draw a gradient on the background, making it darker at the bottom. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Mark Kilgard. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Mark Kilgard. + diff --git a/hacks/glx/atunnel.c b/hacks/glx/atunnel.c new file mode 100644 index 0000000..f21d04f --- /dev/null +++ b/hacks/glx/atunnel.c @@ -0,0 +1,317 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* atunnel --- OpenGL Advanced Tunnel Screensaver */ + +#if 0 +static const char sccsid[] = "@(#)atunnel.c 5.13 2004/05/25 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 2003-2004. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Roman Podobedov + * Email: romka@ut.ee + * WEB: http://romka.demonews.com + * + * Eric Lassauge (May-25-2004) + * http://lassauge.free.fr/linux.html + * + * REVISION HISTORY: + * + * E.Lassauge - 25-May-2004: + * - added more texture ! + * E.Lassauge - 16-Mar-2002: + * - created based on the Roman demo. + * - deleted all external file stuff to use xpm textures and + * hardcoded path point values. + * + */ + +#ifdef STANDALONE /* xscreensaver mode */ +#define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_atunnel 0 +# define atunnel_handle_event 0 +#define MODE_atunnel +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef MODE_atunnel /* whole file */ + +#include +#include +#include +#include "tunnel_draw.h" + +#if defined( USE_XPM ) || defined( USE_XPMINC ) || defined(STANDALONE) +/* USE_XPM & USE_XPMINC in xlock mode ; STANDALONE in xscreensaver mode */ +#include "ximage-loader.h" +#define I_HAVE_XPM + +#include "images/gen/tunnel0_png.h" +#include "images/gen/tunnel1_png.h" +#include "images/gen/tunnel2_png.h" +#include "images/gen/tunnel3_png.h" +#include "images/gen/tunnel4_png.h" +#include "images/gen/tunnel5_png.h" +#endif /* HAVE_XPM */ + + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define DEF_LIGHT "True" +#define DEF_WIRE "False" +#define DEF_TEXTURE "True" + +static Bool do_light; +static Bool do_wire; +static Bool do_texture; + +static XrmOptionDescRec opts[] = { + {"-light", ".atunnel.light", XrmoptionNoArg, "true" }, + {"+light", ".atunnel.light", XrmoptionNoArg, "false" }, + {"-wireframe",".atunnel.wire", XrmoptionNoArg, "true" }, + {"+wireframe",".atunnel.wire", XrmoptionNoArg, "false" }, + {"-texture", ".atunnel.texture", XrmoptionNoArg, "true" }, + {"+texture", ".atunnel.texture", XrmoptionNoArg, "false" }, +}; + +static argtype vars[] = { + {&do_light, "light", "Light", DEF_LIGHT, t_Bool}, + {&do_wire, "wire", "Wire", DEF_WIRE, t_Bool}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, +}; + +static OptionStruct desc[] = +{ + {"-/+ light", "whether to do enable lighting (slower)"}, + {"-/+ wire", "whether to do use wireframe instead of filled (faster)"}, + {"-/+ texture", "whether to apply a texture (slower)"}, +}; + +ENTRYPOINT ModeSpecOpt atunnel_opts = {countof(opts), opts, countof(vars), vars, desc}; + +#ifdef USE_MODULES +ModStruct atunnel_description = +{"atunnel", "init_atunnel", "draw_atunnel", NULL, + "draw_atunnel", "init_atunnel", "free_atunnel", &atunnel_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "OpenGL advanced tunnel screensaver", 0, NULL}; +#endif + +/* structure for holding the screensaver data */ +typedef struct { + int screen_width, screen_height; + GLXContext *glx_context; + Window window; + struct tunnel_state *ts; + GLuint texture[MAX_TEXTURE]; /* texture id: GL world */ +} atunnelstruct; + +static atunnelstruct *Atunnel = NULL; + +/*=================== Load Texture =========================================*/ +static void LoadTexture(ModeInfo * mi, + const unsigned char *data, unsigned long size, + int t_num) +{ +#if defined( I_HAVE_XPM ) + atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)]; + XImage *teximage; /* Texture data */ + + if ((teximage = image_data_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi), + data, size)) + == None) { + (void) fprintf(stderr, "Error reading the texture.\n"); + glDeleteTextures(1, &sa->texture[t_num]); + do_texture = False; +#ifdef STANDALONE + exit(0); +#else + return; +#endif + } + +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D, sa->texture[t_num]); +#endif /* HAVE_GLBINDTEXTURE */ + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, teximage->width, teximage->height, + 0, GL_RGBA, GL_UNSIGNED_BYTE, teximage->data); + check_gl_error("texture"); + + /* Texture parameters, LINEAR scaling for better texture quality */ + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + XDestroyImage(teximage); +#else /* !I_HAVE_XPM */ + do_texture = False; +#endif /* !I_HAVE_XPM */ +} + +/*=================== Main Initialization ==================================*/ +static void Init(ModeInfo * mi) +{ + atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)]; + GLfloat light_ambient[] = {1.0, 1.0, 1.0, 1.0}; + GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0}; + GLfloat light_specular[] = {1.0, 1.0, 1.0, 1.0}; + GLfloat light_position[] = {0.0, 0.0, 1.0, 0.0}; + GLfloat fogColor[4] = {0.8, 0.8, 0.8, 1.0}; + + if (do_texture) + { + glGenTextures(MAX_TEXTURE, sa->texture); + LoadTexture(mi, tunnel0_png, sizeof(tunnel0_png),0); + LoadTexture(mi, tunnel1_png, sizeof(tunnel1_png),1); + LoadTexture(mi, tunnel2_png, sizeof(tunnel2_png),2); + LoadTexture(mi, tunnel3_png, sizeof(tunnel3_png),3); + LoadTexture(mi, tunnel4_png, sizeof(tunnel4_png),4); + LoadTexture(mi, tunnel5_png, sizeof(tunnel5_png),5); + glEnable(GL_TEXTURE_2D); + } + sa->ts = atunnel_InitTunnel(); + + /* Set lighting parameters */ + if (do_light) + { + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + + /* Enable light 0 */ + glEnable(GL_LIGHT0); + glDepthFunc(GL_LESS); + + glEnable(GL_LIGHTING); + } + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + do_wire = 0; +# endif + + if (do_wire) { + glDisable(GL_NORMALIZE); + glDisable(GL_CULL_FACE); + glDisable(GL_DEPTH_TEST); + glDisable(GL_TEXTURE_2D); + glPolygonMode(GL_FRONT,GL_LINE); + glPolygonMode(GL_BACK,GL_LINE); + } + else + { + glEnable(GL_DEPTH_TEST); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + /* Enable fog */ + glFogi(GL_FOG_MODE, GL_EXP); + glFogfv(GL_FOG_COLOR, fogColor); + glFogf(GL_FOG_DENSITY, 0.3); + glEnable(GL_FOG); + + /* Cull face */ + glCullFace(GL_FRONT); + glEnable(GL_CULL_FACE); + } + + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); +} + + +/* Standard reshape function */ +ENTRYPOINT void +reshape_atunnel(ModeInfo *mi, int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 2) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-0.1*(1/h), 0.1*(1/h), -0.1, 0.1, 0.1, 10); + glMatrixMode(GL_MODELVIEW); +} + +/* draw the screensaver once */ +ENTRYPOINT void draw_atunnel(ModeInfo * mi) +{ + atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!sa->glx_context) + return; + + glXMakeCurrent(display, window, *(sa->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glLoadIdentity(); + + atunnel_DrawTunnel(sa->ts, do_texture, do_light, sa->texture); + atunnel_SplashScreen(sa->ts, do_wire, do_texture, do_light); + + glFlush(); + /* manage framerate display */ + if (MI_IS_FPS(mi)) do_fps (mi); + glXSwapBuffers(display, window); + +} + + +/* xscreensaver initialization routine */ +ENTRYPOINT void init_atunnel(ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + atunnelstruct *sa; + + MI_INIT(mi, Atunnel); + sa = &Atunnel[screen]; + + sa->window = MI_WINDOW(mi); + if ((sa->glx_context = init_GL(mi)) != NULL) { + reshape_atunnel(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + Init(mi); + } else { + MI_CLEARWINDOW(mi); + } + +} + +/* all sorts of nice cleanup code should go here! */ +ENTRYPOINT void free_atunnel(ModeInfo * mi) +{ +#if 0 + atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)]; + FreeTunnel(sa->ts); +#endif +} + +XSCREENSAVER_MODULE ("Atunnel", atunnel) + +#endif diff --git a/hacks/glx/atunnel.man b/hacks/glx/atunnel.man new file mode 100644 index 0000000..dc19582 --- /dev/null +++ b/hacks/glx/atunnel.man @@ -0,0 +1,83 @@ +.de EX \"Begin example +.ne 5 +.if n .sp 1 +.if t .sp .5 +.nf +.in +.5i +.. +.de EE +.fi +.in -.5i +.if n .sp 1 +.if t .sp .5 +.. +.TH XScreenSaver 1 "12-Feb-03" "X Version 11" +.SH NAME +atunnel - hypnotic GL tunnel journey +.SH SYNOPSIS +.B sballs +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] +[\-light] [\-no-light] +[\-wire] [\-no-wire] +[\-texture] [\-no-texture] +[\-fps] +.SH DESCRIPTION +The \fIatunnel\fP program draws an animation of a journey in a GL tunnel. +.SH OPTIONS +.I sballs +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-texture +Show a textured tunnel. This is the default. +.TP 8 +.B \-no\-texture +Disables texturing the animation. +.TP 8 +.B \-wire +Draw a wireframe rendition of the tunnel. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Eric Lassauge. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +The original code for this mode was written by +Roman Podobedov +and can be found at http://romka.demonews.com + +.SH AUTHOR +Roman Podobedov +Eric Lassauge diff --git a/hacks/glx/b_draw.c b/hacks/glx/b_draw.c new file mode 100644 index 0000000..977efbe --- /dev/null +++ b/hacks/glx/b_draw.c @@ -0,0 +1,239 @@ +#if 0 +static const char sccsid[] = "@(#)b_draw.c 4.11 98/06/16 xlockmore"; +#endif + +/*- + * BUBBLE3D (C) 1998 Richard W.M. Jones. + * b_draw.c: This code creates new bubbles, manages them and controls + * them as they are drawn on the screen. + */ + +#include "bubble3d.h" + +typedef struct draw_context { + /* The list of bubbles currently on the screen. */ + void **bubble_list; + int nr_bubbles; + + /* When was the last time we created a new bubble? */ + int bubble_count; + + glb_data *d; + +} draw_context; + +void * +glb_draw_init(void) +{ + draw_context *c; + + GLfloat mat_specular[] = + {1, 1, 1, 1}; + GLfloat mat_emission[] = + {0, 0, 0, 1}; + GLfloat mat_shininess[] = + {100}; + GLfloat ambient[] = + {0.5, 0.5, 0.5, 1.0}; + GLfloat light_position[][4] = + { + {0, -1, 0, 0}, + {1, 1, 0, 0}, + {-1, 0, 1, 0}}; + GLfloat light_diffuse[][4] = + { + {1, 1, 1, 1}, + {1, 1, 1, 1}, + {1, 1, 1, 1}}; + GLfloat light_specular[][4] = + { + {1, 1, 1, 1}, + {1, 1, 1, 1}, + {1, 1, 1, 1}}; + + /* Initialize the context. */ + c = (struct draw_context *) malloc(sizeof (struct draw_context)); + + if (c == 0) + return 0; + c->bubble_list = 0; + c->nr_bubbles = 0; + c->bubble_count = glb_config.create_bubbles_every; + + /* Do some GL initialization. */ + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, glb_config.bubble_colour); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, mat_emission); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess); + + if (glb_config.transparent_p) + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_LIGHT2); + + if (glb_config.transparent_p) + glEnable(GL_BLEND); + else + glEnable(GL_DEPTH_TEST); + + glEnable(GL_AUTO_NORMAL); + glEnable(GL_NORMALIZE); + + if (glb_config.transparent_p) + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); + + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_POSITION, light_position[0]); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse[0]); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular[0]); + glLightfv(GL_LIGHT1, GL_POSITION, light_position[1]); + glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse[1]); + glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular[1]); + glLightfv(GL_LIGHT2, GL_POSITION, light_position[2]); + glLightfv(GL_LIGHT2, GL_DIFFUSE, light_diffuse[2]); + glLightfv(GL_LIGHT2, GL_SPECULAR, light_specular[2]); + + c->d = glb_sphere_init(); + + return c; +} + +static void +delete_bubble(draw_context * c, int j) +{ + int i; + + glb_bubble_delete(c->bubble_list[j]); + + for (i = j; i < c->nr_bubbles - 1; ++i) + c->bubble_list[i] = c->bubble_list[i + 1]; + + c->nr_bubbles--; +} + +void +glb_draw_end(void *cc) +{ + draw_context *c = (draw_context *) cc; + int i; + + for (i = 0; i < c->nr_bubbles; ++i) { + delete_bubble(c, i); + i--; + } + + glb_sphere_end (c->d); + + (void) free((void *) c->bubble_list); + (void) free((void *) c); +} + +static int +create_new_bubbles(draw_context * c) +{ + int n, i; + double r = glb_drand(); + GLfloat size, speed, scale_incr, x, y, z; + void *b[4]; + void **old_bubble_list; + + /* How many bubbles to make? */ + if (r < glb_config.p_bubble_group[0]) + n = 1; + else if (r < glb_config.p_bubble_group[1]) + n = 2; + else if (r < glb_config.p_bubble_group[2]) + n = 3; + else + n = 4; + + /* Initial position of top-most bubble in group. */ + x = glb_drand() * 4 - 2; + y = glb_config.screen_bottom; + z = glb_drand() * 2 - 2; + + /* What size? */ + size = glb_config.min_size + + glb_drand() * (glb_config.max_size - glb_config.min_size); + + /* What speed? */ + speed = glb_config.min_speed + + glb_drand() * (glb_config.max_speed - glb_config.min_speed); + + /* Work out the scaling increment. Bubbles should increase by scale_factor + * as they go from bottom to top of screen. + */ + scale_incr = (size * glb_config.scale_factor - size) + / ((glb_config.screen_top - glb_config.screen_bottom) / speed); + + /* Create the bubble(s). */ + for (i = 0; i < n; ++i) { + if ((b[i] = glb_bubble_new(c->d, x, y, z, size, speed, scale_incr)) == 0) { + /* Out of memory - recover. */ + i--; + while (i >= 0) + glb_bubble_delete(b[i]); + return 0; + } + /* Create the next bubble below the last bubble. */ + y -= size * 3; + } + + /* Add the bubbles to the list. */ + c->nr_bubbles += n; + old_bubble_list = c->bubble_list; + if (c->bubble_list == 0) { + c->bubble_list = (void **) malloc(c->nr_bubbles * sizeof (void *)); + } else { + c->bubble_list = (void **) realloc(c->bubble_list, + c->nr_bubbles * sizeof (void *)); + } + + if (c->bubble_list == 0) { + /* Out of memory - recover. */ + for (i = 0; i < n; ++i) + glb_bubble_delete(b[i]); + c->bubble_list = old_bubble_list; + c->nr_bubbles -= n; + return 0; + } + for (i = 0; i < n; ++i) + c->bubble_list[c->nr_bubbles - i - 1] = b[i]; + + return 1; +} + +void +glb_draw_step(void *cc) +{ + draw_context *c = (draw_context *) cc; + int i; + + /* Consider creating a new bubble or bubbles. */ + if (c->nr_bubbles < glb_config.max_bubbles && + c->bubble_count++ > glb_config.create_bubbles_every) { + if (create_new_bubbles(c)) + c->bubble_count = 0; + } + /* Clear the display. */ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + /* XXX Draw the background here ... */ + + /* Draw all the bubbles on the display. */ + for (i = 0; i < c->nr_bubbles; ++i) { + void *b = c->bubble_list[i]; + + glb_bubble_step(b); + glb_bubble_draw(c->d, b); + + /* Has the bubble reached the top of the screen? */ + if (glb_bubble_get_y(b) >= glb_config.screen_top) { + delete_bubble(c, i); + i--; + } + } +} diff --git a/hacks/glx/b_lockglue.c b/hacks/glx/b_lockglue.c new file mode 100644 index 0000000..1bb1e67 --- /dev/null +++ b/hacks/glx/b_lockglue.c @@ -0,0 +1,240 @@ +#if 0 +static const char sccsid[] = "@(#)b_lockglue.c 4.11 98/06/16 xlockmore"; +#endif + +/*- + * BUBBLE3D (C) 1998 Richard W.M. Jones. + * b_lockglue.c: Glue to make this all work with xlockmore. + */ + +#include "bubble3d.h" + +/* XXX This lot should eventually be made configurable using the + * options stuff below. + */ +struct glb_config glb_config = +{ + 0, /* transparent_p */ +#if GLB_SLOW_GL + 2, /* subdivision_depth */ +#else + 3, /* subdivision_depth */ +#endif + 5, /* nr_nudge_axes */ + 0.01, /* nudge_angle_factor */ + 0.20, /* nudge_factor */ + 0.1, /* rotation_factor */ + 8, /* create_bubbles_every */ + 8, /* max_bubbles */ + {0.7, 0.8, 0.9, 1.0}, /* p_bubble_group */ + 0.5, /* max_size */ + 0.1, /* min_size */ + 0.03, /* max_speed */ + 0.005, /* min_speed */ + 1.5, /* scale_factor */ + -4, /* screen_bottom */ + 4, /* screen_top */ + {0.0, 0.0, 0.7, 0.3} /* bubble_colour */ +}; + +#ifdef STANDALONE +# define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" + +# define release_bubble3d 0 +# define bubble3d_handle_event xlockmore_no_events +#include "xlockmore.h" +#else +#include "xlock.h" +#include "vis.h" +#endif + +#ifdef USE_GL + + +#define DEF_TRANSPARENT "True" +#define DEF_BUBBLECOLOR "random" + +static Bool transparent_p; +static char *bubble_color_str; + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +static XrmOptionDescRec opts[] = { + { "-transparent", ".transparent", XrmoptionNoArg, "True" }, + { "+transparent", ".transparent", XrmoptionNoArg, "False" }, + { "-color", ".bubblecolor", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&transparent_p, "transparent", "Transparent", DEF_TRANSPARENT, t_Bool}, + {&bubble_color_str, "bubblecolor", "BubbleColor", DEF_BUBBLECOLOR, t_String}, +}; + +ENTRYPOINT ModeSpecOpt bubble3d_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct bubbles3d_description = +{"bubbles3d", + "init_bubble3d", + "draw_bubble3d", + NULL, + "change_bubble3d", + "init_bubble3d", + "free_bubble3d", + &bubble3d_opts, + 1000, 1, 2, 1, 64, 1.0, "", + "Richard Jones's GL bubbles", + 0, + NULL +}; + +#endif /* USE_MODULES */ + +struct context { + GLXContext *glx_context; + void *draw_context; +}; + +static struct context *contexts = 0; + +static void +parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a) +{ + XColor c; + + if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c)) + { + fprintf (stderr, "%s: can't parse %s color %s", progname, name, s); + exit (1); + } + a[0] = c.red / 65536.0; + a[1] = c.green / 65536.0; + a[2] = c.blue / 65536.0; +} + +static void +init_colors(ModeInfo *mi) +{ + if (strncasecmp(bubble_color_str, "auto", strlen("auto")) == 0) { + glb_config.bubble_colour[0] = ((float) (NRAND(100)) / 100.0); + glb_config.bubble_colour[1] = ((float) (NRAND(100)) / 100.0); + /* I keep more blue */ + glb_config.bubble_colour[2] = ((float) (NRAND(50)) / 100.0) + 0.50; + } else if (strncasecmp(bubble_color_str, "random", strlen("random")) == 0) { + glb_config.bubble_colour[0] = -1.0; + } else { + parse_color(mi, "bubble", bubble_color_str, glb_config.bubble_colour); + } +} + +static void +init(struct context *c) +{ + glb_config.transparent_p = transparent_p; + glb_sphere_init(); + c->draw_context = glb_draw_init(); +} + +ENTRYPOINT void +reshape_bubble3d(ModeInfo *mi, int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + h = height / (GLfloat) width; + } + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45, 1/h, 3, 8); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0, 0, -5); +} + +static void +do_display(struct context *c) +{ + glb_draw_step(c->draw_context); +} + +ENTRYPOINT void +init_bubble3d(ModeInfo * mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int screen = MI_SCREEN(mi); + struct context *c; + + MI_INIT (mi, contexts); + c = &contexts[screen]; + c->glx_context = init_GL(mi); + init_colors(mi); + if (c->glx_context != 0) { + init(c); + reshape_bubble3d(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + do_display(c); + glFinish(); + glXSwapBuffers(display, window); + } else + MI_CLEARWINDOW(mi); +} + +ENTRYPOINT void +draw_bubble3d(ModeInfo * mi) +{ + struct context *c = &contexts[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + MI_IS_DRAWN(mi) = True; + + if (!c->glx_context) + return; + + glXMakeCurrent(display, window, *(c->glx_context)); + + glb_config.polygon_count = 0; + glPushMatrix(); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + glRotatef(o, 0, 0, 1); + } +# endif + + do_display(c); + glPopMatrix(); + mi->polygon_count = glb_config.polygon_count; + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(display, window); +} + +#ifndef STANDALONE +ENTRYPOINT void +change_bubble3d(ModeInfo * mi) +{ + /* nothing */ +} +#endif /* !STANDALONE */ + +ENTRYPOINT void +free_bubble3d(ModeInfo * mi) +{ + struct context *c = &contexts[MI_SCREEN(mi)]; + if (c->draw_context) + glb_draw_end(c->draw_context); +} + +XSCREENSAVER_MODULE ("Bubble3D", bubble3d) + +#endif /* USE_GL */ diff --git a/hacks/glx/b_sphere.c b/hacks/glx/b_sphere.c new file mode 100644 index 0000000..78be392 --- /dev/null +++ b/hacks/glx/b_sphere.c @@ -0,0 +1,219 @@ +#if 0 +static const char sccsid[] = "@(#)b_sphere.c 4.11 98/06/16 xlockmore"; +#endif + +/*- + * BUBBLE3D (C) 1998 Richard W.M. Jones. + * b_sphere.c: Create a list of vertices and triangles in a + * normalized sphere, which is then later used as the basic shape + * for all bubbles. This code is run once when the program starts + * up. + */ + +#include "bubble3d.h" + +typedef glb_vertex vertex; +typedef glb_triangle triangle; + +struct glb_data { + + /* The list of vertices created. */ + vertex *vertices; + int nr_vertices, nr_vertices_allocated; + + /* The list of triangles created. */ + triangle *triangles; + int nr_triangles, nr_triangles_allocated; +}; + + +#define EPSILON GLB_VERTICES_EPSILON + +/* Should be taken care of already... but just in case */ +#if !defined( __GNUC__ ) && !defined(__cplusplus) && !defined(c_plusplus) +#undef inline +#define inline /* */ +#endif +static inline int +close_enough(const GLfloat * v1, const GLfloat * v2) +{ + return fabs((double) (v1[0] - v2[0])) <= EPSILON && + fabs((double) (v1[1] - v2[1])) <= EPSILON && + fabs((double) (v1[2] - v2[2])) <= EPSILON; +} + +#define INCR(n) ((n == 0) ? (n = 1) : (n *= 2)) +#define INCR_ALLOCATION(a, n, t) (a = (t *) realloc (a, INCR (n) * sizeof (t))) + +static inline GLuint +save_vertex(glb_data *d, const GLfloat * v) +{ + int i; + + /* Inefficient, but we only do this a few times. Check to see if there's + * an existing vertex which is `close enough' to this one. + */ + for (i = 0; i < d->nr_vertices; ++i) + if (close_enough(v, d->vertices[i])) + return i; + + if (d->nr_vertices_allocated <= d->nr_vertices) { + if (d->vertices == 0) { + d->vertices = (vertex *) malloc(INCR(d->nr_vertices_allocated) * sizeof (vertex)); + } else { + INCR_ALLOCATION(d->vertices, d->nr_vertices_allocated, vertex); + } + } + d->vertices[d->nr_vertices][0] = v[0]; + d->vertices[d->nr_vertices][1] = v[1]; + d->vertices[d->nr_vertices][2] = v[2]; + return d->nr_vertices++; +} + +static inline GLuint +save_triangle(glb_data *d, GLuint v1, GLuint v2, GLuint v3) +{ + if (d->nr_triangles_allocated <= d->nr_triangles) { + if (d->triangles == 0) { + d->triangles = (triangle *) malloc(INCR(d->nr_triangles_allocated) * sizeof (triangle)); + } else { + INCR_ALLOCATION(d->triangles, d->nr_triangles_allocated, triangle); + } + } + d->triangles[d->nr_triangles][0] = v1; + d->triangles[d->nr_triangles][1] = v2; + d->triangles[d->nr_triangles][2] = v3; + return d->nr_triangles++; +} + +static inline void +normalize(GLfloat v[3]) +{ + GLfloat d = (GLfloat) sqrt((double) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2])); + + if (d != 0) { + v[0] /= d; + v[1] /= d; + v[2] /= d; + } else { + v[0] = v[1] = v[2] = 0; + } +} + +static void +subdivide(glb_data *d, + const GLfloat * v1, GLuint vi1, + const GLfloat * v2, GLuint vi2, + const GLfloat * v3, GLuint vi3, + int depth) +{ + int i; + + if (depth == 0) { + save_triangle(d, vi1, vi2, vi3); + } else { + GLuint vi12, vi23, vi31; + GLfloat v12[3], v23[3], v31[3]; + + for (i = 0; i < 3; ++i) { + v12[i] = v1[i] + v2[i]; + v23[i] = v2[i] + v3[i]; + v31[i] = v3[i] + v1[i]; + } + normalize(v12); + vi12 = save_vertex(d, v12); + normalize(v23); + vi23 = save_vertex(d, v23); + normalize(v31); + vi31 = save_vertex(d, v31); + subdivide(d, v1, vi1, v12, vi12, v31, vi31, depth - 1); + subdivide(d, v2, vi2, v23, vi23, v12, vi12, depth - 1); + subdivide(d, v3, vi3, v31, vi31, v23, vi23, depth - 1); + subdivide(d, v12, vi12, v23, vi23, v31, vi31, depth - 1); + } +} + +#define ICO_X 0.525731112119133606 +#define ICO_Z 0.850650808352039932 + +static const GLfloat vdata[12][3] = +{ + {-ICO_X, 0, ICO_Z}, + {ICO_X, 0, ICO_Z}, + {-ICO_X, 0, -ICO_Z}, + {ICO_X, 0, -ICO_Z}, + {0, ICO_Z, ICO_X}, + {0, ICO_Z, -ICO_X}, + {0, -ICO_Z, ICO_X}, + {0, -ICO_Z, -ICO_X}, + {ICO_Z, ICO_X, 0}, + {-ICO_Z, ICO_X, 0}, + {ICO_Z, -ICO_X, 0}, + {-ICO_Z, -ICO_X, 0} +}; + +static const GLuint tindices[20][3] = +{ + {0, 4, 1}, + {0, 9, 4}, + {9, 5, 4}, + {4, 5, 8}, + {4, 8, 1}, + {8, 10, 1}, + {8, 3, 10}, + {5, 3, 8}, + {5, 2, 3}, + {2, 7, 3}, + {7, 10, 3}, + {7, 6, 10}, + {7, 11, 6}, + {11, 0, 6}, + {0, 1, 6}, + {6, 1, 10}, + {9, 0, 11}, + {9, 11, 2}, + {9, 2, 5}, + {7, 2, 11} +}; + +/* Public interface: Create the sphere. */ +glb_data * +glb_sphere_init(void) +{ + glb_data *d = (glb_data *) calloc (1, sizeof (*d)); + int i; + + for (i = 0; i < 20; ++i) { + subdivide(d, vdata[tindices[i][0]], save_vertex(d, vdata[tindices[i][0]]), + vdata[tindices[i][1]], save_vertex(d, vdata[tindices[i][1]]), + vdata[tindices[i][2]], save_vertex(d, vdata[tindices[i][2]]), + glb_config.subdivision_depth); + } + + return d; +} + +/* Return the vertices list. */ +glb_vertex * +glb_sphere_get_vertices(glb_data *d, int *nr_vertices_ptr) +{ + *nr_vertices_ptr = d->nr_vertices; + return d->vertices; +} + +/* Return the triangles list. */ +glb_triangle * +glb_sphere_get_triangles(glb_data *d, int *nr_triangles_ptr) +{ + *nr_triangles_ptr = d->nr_triangles; + return d->triangles; +} + +/* Free up memory. */ +void +glb_sphere_end(glb_data *d) +{ + (void) free((void *) d->vertices); + (void) free((void *) d->triangles); + free (d); +} diff --git a/hacks/glx/blinkbox.c b/hacks/glx/blinkbox.c new file mode 100644 index 0000000..f777371 --- /dev/null +++ b/hacks/glx/blinkbox.c @@ -0,0 +1,608 @@ +/* blinkbox, Copyright (c) 2003 Jeremy English + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* motion blur added March 2005 by John Boero + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_ball 0 +# define release_ball 0 +# define ball_handle_event xlockmore_no_events +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "sphere.h" +#include + +#ifdef USE_GL /* whole file */ + +#define MAX_COUNT 20 +#define ALPHA_AMT 0.05 + +/* this should be between 1 and 8 */ +#define DEF_BOXSIZE "2" +#define DEF_DISSOLVE "False" +#define DEF_FADE "True" +#define DEF_BLUR "True" + + +typedef struct{ + GLfloat x,y,z; +} Tdpos; + +typedef struct{ + int hit; + Tdpos pos; + int counter; + GLfloat color[3]; + GLfloat rot[4]; + int des_count; + int alpha_count; +}Side; + +struct Bounding_box { + Tdpos top; + Tdpos bottom; +}; + +struct Ball { + GLfloat x; + GLfloat y; + GLfloat z; + int d; +}; + +struct bscale { + GLfloat wh; /*width Height*/ + GLfloat d; /*depth*/ +}; + +static const struct Bounding_box bbox = {{14,14,20},{-14,-14,-20}}; + +typedef struct { + GLXContext *glx_context; + + struct Ball ball; + + struct bscale bscale; + + Tdpos mo; /*motion*/ + Tdpos moh; /*hold motion value*/ + + Tdpos bpos; + + GLuint ballList; + GLuint boxList; + GLfloat des_amt; + + /*sides*/ + Side lside;/*Red*/ + Side rside;/*Green*/ + Side tside;/*Blue*/ + Side bside;/*Orange*/ + Side fside;/*Yellow*/ + Side aside;/*Purple*/ + Side *sp; + +} blinkboxstruct; + +static blinkboxstruct *blinkbox = (blinkboxstruct *) NULL; + + +/* lights */ +static const float LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; +static const float LightPosition[]= { 20.0f, 100.0f, 20.0f, 1.0f }; + +static Bool do_dissolve; +static Bool do_fade; +static Bool do_blur; +static float bscale_wh; + +static XrmOptionDescRec opts[] = { + { "-boxsize", ".boxsize", XrmoptionSepArg, 0 }, + { "-dissolve", ".dissolve", XrmoptionNoArg, "True" }, + { "+dissolve", ".dissolve", XrmoptionNoArg, "False" }, + { "-fade", ".fade", XrmoptionNoArg, "True" }, + { "+fade", ".fade", XrmoptionNoArg, "False" }, + { "-blur", ".blur", XrmoptionNoArg, "True" }, + { "+blur", ".blur", XrmoptionNoArg, "False" } + +}; + +static argtype vars[] = { + {&bscale_wh, "boxsize", "Boxsize", DEF_BOXSIZE, t_Float}, + {&do_dissolve, "dissolve", "Dissolve", DEF_DISSOLVE, t_Bool}, + {&do_fade, "fade", "Fade", DEF_FADE, t_Bool}, + {&do_blur, "blur", "Blur", DEF_BLUR, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt ball_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +static void +swap(GLfloat *a, GLfloat *b) +{ + GLfloat t = *a; + *a = *b; + *b = t; +} + +static float +get_rand(void) +{ + GLfloat j = 1+(random() % 2); + return (j); +} + +static void +swap_mov(GLfloat *a, GLfloat *b) +{ + int j; + swap(a,b); + j = get_rand(); + if (*a < 0) + *a = j * -1; + else + *a = j; +} + +static void +cp_b_pos(blinkboxstruct *bp, Tdpos *s_pos) +{ + s_pos->x = bp->ball.x; + s_pos->y = bp->ball.y; + s_pos->z = bp->ball.z; +} + +static void +hit_side(blinkboxstruct *bp) +{ + if ((bp->ball.x - bp->ball.d) <= bbox.bottom.x){ + bp->lside.hit = 1; + bp->lside.counter = MAX_COUNT; + bp->lside.des_count = 1; + bp->lside.alpha_count = 0; + cp_b_pos(bp, &bp->lside.pos); + swap_mov(&bp->mo.x,&bp->moh.x); + }else + if ((bp->ball.x + bp->ball.d) >= bbox.top.x){ + bp->rside.hit = 1; + bp->rside.counter = MAX_COUNT; + bp->rside.des_count = 1; + bp->rside.alpha_count = 0; + cp_b_pos(bp, &bp->rside.pos); + swap_mov(&bp->mo.x,&bp->moh.x); + } +} + +static void +hit_top_bottom(blinkboxstruct *bp) +{ + if ((bp->ball.y - bp->ball.d) <= bbox.bottom.y){ + bp->bside.hit = 1; + bp->bside.counter = MAX_COUNT; + bp->bside.des_count = 1; + bp->bside.alpha_count = 0; + cp_b_pos(bp, &bp->bside.pos); + swap_mov(&bp->mo.y,&bp->moh.y); + }else + if ((bp->ball.y + bp->ball.d) >= bbox.top.y){ + bp->tside.hit = 1; + bp->tside.counter = MAX_COUNT; + bp->tside.des_count = 1; + bp->tside.alpha_count = 0; + cp_b_pos(bp, &bp->tside.pos); + swap_mov(&bp->mo.y,&bp->moh.y); + } +} + +static void +hit_front_back(blinkboxstruct *bp) +{ + if ((bp->ball.z - bp->ball.d) <= bbox.bottom.z){ + bp->aside.hit = 1; + bp->aside.counter = MAX_COUNT; + bp->aside.des_count = 1; + bp->aside.alpha_count = 0; + cp_b_pos(bp, &bp->aside.pos); + swap_mov(&bp->mo.z,&bp->moh.z); + }else + if((bp->ball.z + bp->ball.d) >= bbox.top.z){ + bp->fside.hit = 1; + bp->fside.counter = MAX_COUNT; + bp->fside.des_count = 1; + bp->fside.alpha_count = 0; + cp_b_pos(bp, &bp->fside.pos); + swap_mov(&bp->mo.z,&bp->moh.z); + } +} + +ENTRYPOINT void +reshape_ball (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 40.0, + 0.0, 0.0, 0.0, + 0.0, 2.0, 10.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif +} + +static void +unit_cube(int wire) +{ + glBegin((wire)?GL_LINE_LOOP:GL_QUADS); + glNormal3f( 0.0f, -1.0f, 0.0f); + glVertex3f(-1.0f, -1.0f, -1.0f); + glVertex3f( 1.0f, -1.0f, -1.0f); + glVertex3f( 1.0f, -1.0f, 1.0f); + glVertex3f(-1.0f, -1.0f, 1.0f); + glNormal3f( 0.0f, 0.0f, 1.0f); + glVertex3f(-1.0f, -1.0f, 1.0f); + glVertex3f( 1.0f, -1.0f, 1.0f); + glVertex3f( 1.0f, 1.0f, 1.0f); + glVertex3f(-1.0f, 1.0f, 1.0f); + glNormal3f( 0.0f, 0.0f, -1.0f); + glVertex3f(-1.0f, -1.0f, -1.0f); + glVertex3f(-1.0f, 1.0f, -1.0f); + glVertex3f( 1.0f, 1.0f, -1.0f); + glVertex3f( 1.0f, -1.0f, -1.0f); + glNormal3f( 1.0f, 0.0f, 0.0f); + glVertex3f( 1.0f, -1.0f, -1.0f); + glVertex3f( 1.0f, 1.0f, -1.0f); + glVertex3f( 1.0f, 1.0f, 1.0f); + glVertex3f( 1.0f, -1.0f, 1.0f); + glNormal3f( -1.0f, 0.0f, 0.0f); + glVertex3f(-1.0f, -1.0f, -1.0f); + glVertex3f(-1.0f, -1.0f, 1.0f); + glVertex3f(-1.0f, 1.0f, 1.0f); + glVertex3f(-1.0f, 1.0f, -1.0f); + glNormal3f( 1.0f, 1.0f, 0.0f); + glVertex3f(-1.0f, 1.0f, -1.0f); + glVertex3f(-1.0f, 1.0f, 1.0f); + glVertex3f( 1.0f, 1.0f, 1.0f); + glVertex3f( 1.0f, 1.0f, -1.0f); + glEnd(); +} + +ENTRYPOINT void +init_ball (ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + blinkboxstruct *bp; + + MI_INIT (mi, blinkbox); + bp = &blinkbox[MI_SCREEN(mi)]; + + if ((bp->glx_context = init_GL(mi)) != NULL) { + reshape_ball(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + } + else + MI_CLEARWINDOW(mi); + + bp->ball.d = 1; + bp->bscale.wh = bscale_wh; + bp->bscale.d = 0.25; + + bp->mo.x = 1; + bp->mo.y = 1; + bp->mo.z = 1; + + bp->moh.x = -1.0; + bp->moh.y = -1.5; + bp->moh.z = -1.5; + + bp->bpos.x = 1; + bp->bpos.y = 1; + bp->bpos.z = 1; + + bp->des_amt = 1; + + bp->lside.counter = MAX_COUNT; + bp->rside.counter = MAX_COUNT; + bp->tside.counter = MAX_COUNT; + bp->bside.counter = MAX_COUNT; + bp->fside.counter = MAX_COUNT; + bp->aside.counter = MAX_COUNT; + + bp->lside.color[0] = 1; + bp->rside.color[1] = 1; + bp->tside.color[2] = 1; + + bp->bside.color[0] = 1; + bp->bside.color[1] = 0.5; + + bp->fside.color[0] = 1; + bp->fside.color[1] = 1; + + bp->aside.color[0] = 0.5; + bp->aside.color[2] = 1; + + bp->lside.rot[0] = 90; + bp->rside.rot[0] = 90; + bp->tside.rot[0] = 90; + bp->bside.rot[0] = 90; + bp->fside.rot[0] = 90; + bp->aside.rot[0] = 90; + + bp->lside.rot[2] = 1; + bp->rside.rot[2] = 1; + bp->tside.rot[1] = 1; + bp->bside.rot[1] = 1; + bp->fside.rot[3] = 1; + bp->aside.rot[3] = 1; + + bp->lside.des_count = 1; + bp->rside.des_count = 1; + bp->tside.des_count = 1; + bp->bside.des_count = 1; + bp->fside.des_count = 1; + bp->aside.des_count = 1; + + bp->lside.alpha_count = 1; + bp->rside.alpha_count = 1; + bp->tside.alpha_count = 1; + bp->bside.alpha_count = 1; + bp->fside.alpha_count = 1; + bp->aside.alpha_count = 1; + + +#define SPHERE_SLICES 12 /* how densely to render spheres */ +#define SPHERE_STACKS 16 + + bp->sp = malloc(sizeof(*bp->sp)); + if(bp->sp == NULL){ + fprintf(stderr,"Could not allocate memory\n"); + exit(1); + } + if( (bp->bscale.wh < 1) || + (bp->bscale.wh > 8) ) { + fprintf(stderr,"Boxsize out of range. Using default\n"); + bp->bscale.wh = 2; + } + if (do_dissolve){ + bp->des_amt = bp->bscale.wh / MAX_COUNT; + } + + reshape_ball(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + bp->ballList = glGenLists(1); + glNewList(bp->ballList, GL_COMPILE); + unit_sphere (SPHERE_STACKS, SPHERE_SLICES, wire); + glEndList (); + + bp->boxList = glGenLists(1); + glNewList(bp->boxList, GL_COMPILE); + unit_cube(wire); + glEndList(); + + if (wire) return; + + glEnable(GL_COLOR_MATERIAL); + glShadeModel(GL_SMOOTH); + glClearDepth(1.0f); + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LEQUAL); + glEnable(GL_LIGHTING); + glClearDepth(1); + glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); + glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); + glEnable(GL_LIGHT1); + if (do_fade || do_blur) { + glEnable(GL_BLEND); + glDisable(GL_DEPTH_TEST); + } +} + +static void +CheckBoxPos(blinkboxstruct *bp, + GLfloat bot_x, GLfloat top_x, GLfloat bot_y, GLfloat top_y) +{ + /*Make sure it's inside of the bounding box*/ + bp->bpos.x = ((bp->bpos.x - bp->bscale.wh) < bot_x) ? bot_x + bp->bscale.wh : bp->bpos.x; + bp->bpos.x = ((bp->bpos.x + bp->bscale.wh) > top_x) ? top_x - bp->bscale.wh : bp->bpos.x; + bp->bpos.y = ((bp->bpos.y - bp->bscale.wh) < bot_y) ? bot_y + bp->bscale.wh : bp->bpos.y; + bp->bpos.y = ((bp->bpos.y + bp->bscale.wh) > top_y) ? top_y - bp->bscale.wh : bp->bpos.y; +} + +ENTRYPOINT void +draw_ball (ModeInfo *mi) +{ + blinkboxstruct *bp = &blinkbox[MI_SCREEN(mi)]; + + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i = 0; + + if (! bp->glx_context) + return; + mi->polygon_count = 0; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + hit_top_bottom(bp); + hit_front_back(bp); + hit_side(bp); + + glRotated(0.25,0,0,1); + glRotated(0.25,0,1,0); + glRotated(0.25,1,0,0); + + + glPushMatrix(); + glScalef(0.5,0.5,0.5); + + glColor3f(1,1,1); + glPushMatrix(); + + if (!do_blur || MI_IS_WIREFRAME(mi)) { + glTranslatef(bp->ball.x += bp->mo.x, + bp->ball.y += bp->mo.y, + bp->ball.z += bp->mo.z); + + glScalef(2,2,2); + glCallList(bp->ballList); + mi->polygon_count += SPHERE_SLICES*SPHERE_STACKS; + + } else { + +# define blur_detail 24.0 + float ball_alpha = 1 / blur_detail; + + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + glTranslatef(bp->ball.x, bp->ball.y, bp->ball.z); + + for (i = 0; i < blur_detail; ++i) { + glTranslatef(bp->mo.x / blur_detail, + bp->mo.y / blur_detail, + bp->mo.z / blur_detail); + + /* comment the following line for quick but boring linear blur */ + ball_alpha = sin((M_PI / blur_detail) * i) / blur_detail; + + glColor4f(1, 1, 1, ball_alpha); + + glScalef(2, 2, 2); + glCallList(bp->ballList); + mi->polygon_count += SPHERE_SLICES*SPHERE_STACKS; + glScalef(.5, .5, .5); + } + i = 0; + + bp->ball.x += bp->mo.x; + bp->ball.y += bp->mo.y; + bp->ball.z += bp->mo.z; + } + + glPopMatrix(); + + while(i < 6){ + switch(i){ + case 0:{ + bp->sp = &bp->lside; + bp->bpos.x = bp->lside.pos.z*-1; + bp->bpos.y = bp->lside.pos.y; + bp->bpos.z = bbox.bottom.x - bp->bscale.d; + if (bp->sp->hit) + CheckBoxPos(bp, bbox.bottom.z,bbox.top.z,bbox.bottom.y,bbox.top.y); + break; + } + case 1:{ + bp->sp = &bp->rside; + bp->bpos.x = bp->rside.pos.z*-1; + bp->bpos.y = bp->rside.pos.y; + bp->bpos.z = bbox.top.x + bp->bscale.d; + if (bp->sp->hit) + CheckBoxPos(bp, bbox.bottom.z,bbox.top.z,bbox.bottom.y,bbox.top.y); + break; + } + case 2:{ + bp->sp = &bp->tside; + bp->bpos.x = bp->tside.pos.x; + bp->bpos.y = bp->tside.pos.z; + bp->bpos.z = bbox.bottom.y - bp->bscale.d; + if (bp->sp->hit) + CheckBoxPos(bp, bbox.bottom.x,bbox.top.x,bbox.bottom.z,bbox.top.z); + break; + } + case 3:{ + bp->sp = &bp->bside; + bp->bpos.x = bp->bside.pos.x; + bp->bpos.y = bp->bside.pos.z; + bp->bpos.z = bbox.top.y + bp->bscale.d; + if (bp->sp->hit) + CheckBoxPos(bp, bbox.bottom.x,bbox.top.x,bbox.bottom.z,bbox.top.z); + break; + } + case 4:{ + bp->sp = &bp->fside; + bp->bpos.x = bp->fside.pos.y; + bp->bpos.y = bp->fside.pos.x*-1; + bp->bpos.z = bbox.top.z + bp->bscale.d; + if (bp->sp->hit) + CheckBoxPos(bp, bbox.bottom.y,bbox.top.y,bbox.bottom.x,bbox.top.x); + break; + } + case 5:{ + bp->sp = &bp->aside; + bp->bpos.x = bp->aside.pos.y; + bp->bpos.y = bp->aside.pos.x*-1; + bp->bpos.z = bbox.bottom.z + bp->bscale.d; + if (bp->sp->hit) + CheckBoxPos(bp, bbox.bottom.y,bbox.top.y,bbox.bottom.x,bbox.top.x); + break; + } + } + if(bp->sp->hit){ + if(do_fade){ + glColor4f(bp->sp->color[0],bp->sp->color[1],bp->sp->color[2],1-(ALPHA_AMT * bp->sp->alpha_count)); + }else{ + glColor3fv(bp->sp->color); + } + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + glPushMatrix(); + glRotatef(bp->sp->rot[0],bp->sp->rot[1],bp->sp->rot[2],bp->sp->rot[3]); + glTranslatef(bp->bpos.x,bp->bpos.y,bp->bpos.z); + if (do_dissolve) { + glScalef(bp->bscale.wh-(bp->des_amt*bp->sp->des_count),bp->bscale.wh-(bp->des_amt*bp->sp->des_count),bp->bscale.d); + }else{ + glScalef(bp->bscale.wh,bp->bscale.wh,bp->bscale.d); + } + glCallList(bp->boxList); + mi->polygon_count += 6; + glPopMatrix(); + bp->sp->counter--; + bp->sp->des_count++; + bp->sp->alpha_count++; + if(!bp->sp->counter) + { + bp->sp->hit = 0; + } + } + i++; + } + + + glPopMatrix(); + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(dpy, window); + +} + +XSCREENSAVER_MODULE_2 ("BlinkBox", blinkbox, ball) + +#endif /* USE_GL */ diff --git a/hacks/glx/blinkbox.man b/hacks/glx/blinkbox.man new file mode 100644 index 0000000..0dc2a3f --- /dev/null +++ b/hacks/glx/blinkbox.man @@ -0,0 +1,73 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +blinkbox \- shows a ball inside a box. +.SH SYNOPSIS +.B blinkbox +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-wireframe] +[\-boxsize \fInumber\fP] +[\-dissolve] +[\-fade] +[\-no\-blur] +[\-fps] +.SH DESCRIPTION +Shows a ball contained inside of a bounding box. Colored blocks blink in +when the ball hits the edges. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-boxsize +Sets the size of the colored boxes. Should be between 1 and 8. Default: 2 +.TP 8 +.B \-dissolve | \-no-dissolve +Boxes shrink instead of just vanishing. +.TP 8 +.B \-fade | \-no-fade +Boxes fade to transparency instead of just vanishing. +.TP 8 +.B \-blur | \-no-blur +Enable or disable motion blur on the ball. Default: blurry. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Jeremy English. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jeremy English. Motion blur by John Boero. diff --git a/hacks/glx/blocktube.c b/hacks/glx/blocktube.c new file mode 100644 index 0000000..d4a402e --- /dev/null +++ b/hacks/glx/blocktube.c @@ -0,0 +1,457 @@ +/* blocktube, Copyright (c) 2003 Lars Damerow + * + * Based on Jamie Zawinski's original dangerball code. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEBUG 1 + +#define DEFAULTS "*delay: 40000 \n" \ + "*wireframe: False \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_blocktube 0 +# define blocktube_handle_event xlockmore_no_events +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_HOLDTIME "1000" +#define DEF_CHANGETIME "200" +#define MAX_ENTITIES 1000 +#define DEF_TEXTURE "True" +#define DEF_FOG "True" + +#if defined(USE_XPM) || defined(USE_XPMINC) || defined(STANDALONE) +/* USE_XPM & USE_XPMINC in xlock mode ; HAVE_XPM in xscreensaver mode */ +#include "ximage-loader.h" +#define I_HAVE_XPM + +#include "images/gen/blocktube_png.h" +#endif /* HAVE_XPM */ + +typedef struct { + int id, r, g, b; + GLfloat tVal; + int age; + int lifetime; + GLfloat position[3]; + GLfloat angle; + GLfloat angularVelocity; +} entity; + +typedef struct { + GLXContext *glx_context; + GLuint block_dlist; + int nextID; + + entity entities[MAX_ENTITIES]; + float targetR, targetG, targetB, + currentR, currentG, currentB, + deltaR, deltaG, deltaB; + int counter; + int changing; + GLfloat zoom; + GLfloat tilt; + GLuint envTexture; + XImage *texti; + + GLfloat tunnelLength; + GLfloat tunnelWidth; + int polys; + +} blocktube_configuration; + +static blocktube_configuration *lps = NULL; + +static GLint holdtime; +static GLint changetime; +static int do_texture; +static int do_fog; + +static XrmOptionDescRec opts[] = { + { "-holdtime", ".holdtime", XrmoptionSepArg, 0 }, + { "-changetime", ".changetime", XrmoptionSepArg, 0 }, + {"-texture", ".texture", XrmoptionNoArg, "True" }, + {"+texture", ".texture", XrmoptionNoArg, "False" }, + {"-fog", ".fog", XrmoptionNoArg, "True" }, + {"+fog", ".fog", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&holdtime, "holdtime", "Hold Time", DEF_HOLDTIME, t_Int}, + {&changetime, "changetime", "Change Time", DEF_CHANGETIME, \ + t_Int}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_fog, "fog", "Fog", DEF_FOG, t_Bool}, +}; + +static OptionStruct desc[] = { + {"-holdtime", "how long to stay on the same color"}, + {"-changetime", "how long it takes to fade to a new color"}, +}; + +ENTRYPOINT ModeSpecOpt blocktube_opts = {countof(opts), opts, countof(vars), vars, desc}; + +#ifdef USE_MODULES +ModStruct blocktube_description = + {"blocktube", "init_blocktube", "draw_blocktube", (char *)NULL, + "draw_blocktube", "init_blocktube", "free_blocktube", &blocktube_opts, + 40000, 30, 1, 1, 64, 1.0, "", + "A shifting tunnel of reflective blocks", 0, NULL}; +#endif /* USE_MODULES */ + +#if defined( I_HAVE_XPM ) +static Bool LoadGLTextures(ModeInfo *mi) +{ + blocktube_configuration *lp = &lps[MI_SCREEN(mi)]; + Bool status; + + status = True; + glGenTextures(1, &lp->envTexture); + glBindTexture(GL_TEXTURE_2D, lp->envTexture); + lp->texti = image_data_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi), + blocktube_png, sizeof(blocktube_png)); + if (!lp->texti) { + status = False; + } else { + glPixelStorei(GL_UNPACK_ALIGNMENT,1); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, lp->texti->width, lp->texti->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, lp->texti->data); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); +# ifndef HAVE_JWZGLES /* #### Sphere maps unimplemented */ + glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); + glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); +# endif + } + return status; +} +#endif + +static void newTargetColor(blocktube_configuration *lp) +{ + int luminance = 0; + + while (luminance <= 150) { + lp->targetR = random() % 256; + lp->targetG = random() % 256; + lp->targetB = random() % 256; + lp->deltaR = (lp->targetR - lp->currentR) / changetime; + lp->deltaG = (lp->targetG - lp->currentG) / changetime; + lp->deltaB = (lp->targetB - lp->currentB) / changetime; + luminance = 0.3 * lp->targetR + 0.59 * lp->targetG + 0.11 * lp->targetB; + } +} + +static void randomize_entity (blocktube_configuration *lp, entity *ent) +{ + ent->id = lp->nextID++; + ent->tVal = 1 - ((float)random() / RAND_MAX / 1.5); + ent->age = 0; + ent->lifetime = 100; + ent->angle = random() % 360; + ent->angularVelocity = 0.5-((float)(random()) / RAND_MAX); + ent->position[0] = (float)(random()) / RAND_MAX + lp->tunnelWidth; + ent->position[1] = (float)(random()) / RAND_MAX * 2; + ent->position[2] = -(float)(random()) / RAND_MAX * lp->tunnelLength; +} + +static void entityTick(blocktube_configuration *lp, entity *ent) +{ + ent->angle += ent->angularVelocity; + ent->position[2] += 0.1; + if (ent->position[2] > lp->zoom) { + ent->position[2] = -lp->tunnelLength + ((float)(random()) / RAND_MAX) * 20; + } + ent->age += 0.1; +} + +static void tick(blocktube_configuration *lp) +{ + lp->counter--; + if (!lp->counter) { + if (!lp->changing) { + newTargetColor(lp); + lp->counter = changetime; + } else { + lp->counter = holdtime; + } + lp->changing = (!lp->changing); + } else { + if (lp->changing) { + lp->currentR += lp->deltaR; + lp->currentG += lp->deltaG; + lp->currentB += lp->deltaB; + } + } +} + +static int cube_vertices(float x, float y, float z, int wire); + +ENTRYPOINT void reshape_blocktube (ModeInfo *mi, int width, int height); + +ENTRYPOINT void init_blocktube (ModeInfo *mi) +{ + int loop; + GLfloat fogColor[4] = {0,0,0,1}; + blocktube_configuration *lp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT(mi, lps); + + lp = &lps[MI_SCREEN(mi)]; + lp->glx_context = init_GL(mi); + + lp->zoom = 30; + lp->tilt = 4.5; + lp->tunnelLength = 200; + lp->tunnelWidth = 5; + + if (wire) { + do_fog = False; + do_texture = False; + glLineWidth(2); + } + + lp->block_dlist = glGenLists (1); + glNewList (lp->block_dlist, GL_COMPILE); + lp->polys = cube_vertices(0.15, 1.2, 5.25, wire); + glEndList (); + +#if defined( I_HAVE_XPM ) + if (do_texture) { + if (!LoadGLTextures(mi)) { + fprintf(stderr, "%s: can't load textures!\n", progname); + exit(1); + } + glEnable(GL_TEXTURE_2D); + } +#endif + + /* kick on the fog machine */ + if (do_fog) { + glEnable(GL_FOG); + glFogi(GL_FOG_MODE, GL_LINEAR); + glHint(GL_FOG_HINT, GL_NICEST); + glFogf(GL_FOG_START, 0); + glFogf(GL_FOG_END, lp->tunnelLength/1.8); + glFogfv(GL_FOG_COLOR, fogColor); + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + } + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glClearDepth(1.0f); + + if (!do_texture && !wire) { + /* If there is no texture, the boxes don't show up without a light. + Though I don't understand why all the blocks come out gray. + */ + GLfloat pos[4] = {0.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + } + + lp->counter = holdtime; + lp->currentR = random() % 256; + lp->currentG = random() % 256; + lp->currentB = random() % 256; + newTargetColor(lp); + for (loop = 0; loop < MAX_ENTITIES; loop++) + { + randomize_entity(lp, &lp->entities[loop]); + } + reshape_blocktube(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glFlush(); +} + +ENTRYPOINT void free_blocktube (ModeInfo *mi) +{ + blocktube_configuration *lp = &lps[MI_SCREEN(mi)]; +# if defined ( I_HAVE_XPM ) + if (lp->glx_context) { + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context)); + + if (lp->envTexture) + glDeleteTextures(1, &lp->envTexture); + if (lp->texti) + XDestroyImage(lp->texti); + } +# endif +} + +ENTRYPOINT void reshape_blocktube (ModeInfo *mi, int width, int height) +{ + blocktube_configuration *lp = &lps[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context)); + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45.0, 1/h, 1.0, 100.0); + glMatrixMode(GL_MODELVIEW); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif +} + +static int cube_vertices(float x, float y, float z, int wire) +{ + int polygon_count = 0; + float x2, y2, z2, nv = 0.7; + x2 = x/2; + y2 = y/2; + z2 = z/2; + + glFrontFace(GL_CW); + + glNormal3f(0, 0, nv); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(0.0, 0.0); glVertex3f(-x2, y2, z2); + glTexCoord2f(1.0, 0.0); glVertex3f( x2, y2, z2); + glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, z2); + glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2); + polygon_count++; + glEnd(); + + glNormal3f(0, 0, -nv); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(1.0, 0.0); glVertex3f(-x2, -y2, -z2); + glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, -z2); + glTexCoord2f(0.0, 1.0); glVertex3f( x2, y2, -z2); + glTexCoord2f(0.0, 0.0); glVertex3f(-x2, y2, -z2); + polygon_count++; + glEnd(); + + glNormal3f(0, nv, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(0.0, 1.0); glVertex3f(-x2, y2, -z2); + glTexCoord2f(0.0, 0.0); glVertex3f( x2, y2, -z2); + glTexCoord2f(1.0, 0.0); glVertex3f( x2, y2, z2); + glTexCoord2f(1.0, 1.0); glVertex3f(-x2, y2, z2); + polygon_count++; + glEnd(); + + glNormal3f(0, -nv, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(1.0, 1.0); glVertex3f(-x2, -y2, -z2); + glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2); + glTexCoord2f(0.0, 0.0); glVertex3f( x2, -y2, z2); + glTexCoord2f(1.0, 0.0); glVertex3f( x2, -y2, -z2); + polygon_count++; + glEnd(); + + if (wire) return polygon_count; + + glNormal3f(nv, 0, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(1.0, 0.0); glVertex3f( x2, -y2, -z2); + glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, z2); + glTexCoord2f(0.0, 1.0); glVertex3f( x2, y2, z2); + glTexCoord2f(0.0, 0.0); glVertex3f( x2, y2, -z2); + polygon_count++; + glEnd(); + + glNormal3f(-nv, 0, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(0.0, 0.0); glVertex3f(-x2, -y2, -z2); + glTexCoord2f(1.0, 0.0); glVertex3f(-x2, y2, -z2); + glTexCoord2f(1.0, 1.0); glVertex3f(-x2, y2, z2); + glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2); + polygon_count++; + glEnd(); + + return polygon_count; +} + +static void draw_block(ModeInfo *mi, entity *ent) +{ + blocktube_configuration *lp = &lps[MI_SCREEN(mi)]; + glCallList (lp->block_dlist); + mi->polygon_count += lp->polys; +} + +ENTRYPOINT void +draw_blocktube (ModeInfo *mi) +{ + blocktube_configuration *lp = &lps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + entity *cEnt = NULL; + int loop = 0; + + if (!lp->glx_context) + return; + + mi->polygon_count = 0; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (do_texture) { + glEnable(GL_TEXTURE_GEN_S); + glEnable(GL_TEXTURE_GEN_T); + glBindTexture(GL_TEXTURE_2D, lp->envTexture); + } + + for (loop = 0; loop < MAX_ENTITIES; loop++) { + cEnt = &lp->entities[loop]; + + glLoadIdentity(); + glTranslatef(0.0f, 0.0f, lp->zoom); + glRotatef(lp->tilt, 1.0f, 0.0f, 0.0f); + glRotatef(cEnt->angle, 0.0f, 0.0f, 1.0f); + glTranslatef(cEnt->position[0], cEnt->position[1], cEnt->position[2]); + glColor4ub((int)(lp->currentR * cEnt->tVal), + (int)(lp->currentG * cEnt->tVal), + (int)(lp->currentB * cEnt->tVal), 255); + draw_block(mi, cEnt); + entityTick(lp, cEnt); + } + tick(lp); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("BlockTube", blocktube) + +#endif /* USE_GL */ diff --git a/hacks/glx/blocktube.man b/hacks/glx/blocktube.man new file mode 100644 index 0000000..5d016e0 --- /dev/null +++ b/hacks/glx/blocktube.man @@ -0,0 +1,73 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +blocktube - draws a swirling, falling tunnel of reflective slabs +.SH SYNOPSIS +.B blocktube +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-holdtime \fInumber\fP] +[\-changetime \fInumber\fP] +[\-no-texture] +[\-no-fog] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Blocktube draws a swirling, falling tunnel of reflective slabs. They fade +from hue to hue. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.). +.TP 8 +.B \-holdtime \fInumber\fP +How long to stay on the same color. Default: 1000 frames. +.TP 8 +.B \-changetime \fInumber\fP +How long it takes to fade to a new color. Default: 200 frames. +.TP 8 +.B \-no-texture +Draw solid blocks intstead of reflective blocks. +.TP 8 +.B \-no-fog +Do not make blocks in the distance be darker. +.TP 8 +.B \-wireframe +Only draw outlines. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Lars Damerow. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Lars Damerow diff --git a/hacks/glx/boing.c b/hacks/glx/boing.c new file mode 100644 index 0000000..55a05f3 --- /dev/null +++ b/hacks/glx/boing.c @@ -0,0 +1,658 @@ +/* boing, Copyright (c) 2005-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * A clone of the Amiga 1000 "Boing" demo. This was the first graphics demo + * for the Amiga, written by Dale Luck and RJ Mical during a break at the 1984 + * Consumer Electronics Show (or so the legend goes.) The boing ball was + * briefly the official logo of Amiga Inc., until they were bought by + * Commodore later that year. + * + * With no arguments, this program looks a lot like the original Amiga demo. + * With "-smooth -lighting", it looks... less old. + * + * The amiga version made noise when the ball hit the walls. This version + * does not, obviously. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_boing 0 +# define release_boing 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "True" +#define DEF_LIGHTING "False" +#define DEF_SMOOTH "False" +#define DEF_SCANLINES "True" +#define DEF_SPEED "1.0" +#define DEF_BALL_SIZE "0.5" +#define DEF_ANGLE "15" +#define DEF_MERIDIANS "16" +#define DEF_PARALLELS "8" +#define DEF_TILES "12" +#define DEF_THICKNESS "0.05" + +#define DEF_BALL_COLOR1 "#CC1919" +#define DEF_BALL_COLOR2 "#F2F2F2" +#define DEF_GRID_COLOR "#991999" +#define DEF_SHADOW_COLOR "#303030" +#define DEF_BACKGROUND "#8C8C8C" + +typedef struct { GLfloat x, y, z; } XYZ; + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + + GLfloat speed; + + GLuint ball_list; + double ball_x, ball_y, ball_z, ball_th; + double ball_dx, ball_dy, ball_dz, ball_dth; + double ball_ddx, ball_ddy, ball_ddz; + + GLfloat ball_color1[4], ball_color2[4], grid_color[4]; + GLfloat bg_color[4], shadow_color[4]; + GLfloat lightpos[4]; + +} boing_configuration; + +static boing_configuration *bps = NULL; + +static Bool spin; +static Bool lighting_p; +static Bool smooth_p; +static Bool scanlines_p; +static GLfloat speed; +static int angle; +static GLfloat ball_size; +static unsigned int meridians; +static unsigned int parallels; +static unsigned int tiles; +static GLfloat thickness; +static char *ball_color1_str, *ball_color2_str, *grid_color_str, + *shadow_str, *bg_str; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-lighting", ".lighting", XrmoptionNoArg, "True" }, + { "+lighting", ".lighting", XrmoptionNoArg, "False" }, + { "-smooth", ".smooth", XrmoptionNoArg, "True" }, + { "+smooth", ".smooth", XrmoptionNoArg, "False" }, + { "-scanlines", ".scanlines", XrmoptionNoArg, "True" }, + { "+scanlines", ".scanlines", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-angle", ".angle", XrmoptionSepArg, 0 }, + { "-size", ".ballSize", XrmoptionSepArg, 0 }, + { "-meridians", ".meridians", XrmoptionSepArg, 0 }, + { "-parallels", ".parallels", XrmoptionSepArg, 0 }, + { "-tiles", ".tiles", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-ball-color1",".ballColor1",XrmoptionSepArg, 0 }, + { "-ball-color2",".ballColor2",XrmoptionSepArg, 0 }, + { "-grid-color", ".gridColor", XrmoptionSepArg, 0 }, + { "-shadow-color",".shadowColor",XrmoptionSepArg, 0 }, + { "-background", ".boingBackground",XrmoptionSepArg, 0 }, + { "-bg", ".boingBackground",XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&lighting_p,"lighting", "Lighting", DEF_LIGHTING, t_Bool}, + {&smooth_p, "smooth", "Smooth", DEF_SMOOTH, t_Bool}, + {&scanlines_p,"scanlines","Scanlines", DEF_SCANLINES, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&angle, "angle", "Angle", DEF_ANGLE, t_Int}, + {&ball_size, "ballSize", "BallSize", DEF_BALL_SIZE, t_Float}, + {&meridians, "meridians", "meridians", DEF_MERIDIANS, t_Int}, + {¶llels, "parallels", "parallels", DEF_PARALLELS, t_Int}, + {&tiles, "tiles", "Tiles", DEF_TILES, t_Int}, + {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float}, + {&ball_color1_str, "ballColor1", "BallColor1", DEF_BALL_COLOR1, t_String}, + {&ball_color2_str, "ballColor2", "BallColor2", DEF_BALL_COLOR2, t_String}, + {&grid_color_str, "gridColor", "GridColor", DEF_GRID_COLOR, t_String}, + {&shadow_str, "shadowColor","ShadowColor",DEF_SHADOW_COLOR,t_String}, + /* dammit, -background is too magic... */ + {&bg_str, "boingBackground", "Background", DEF_BACKGROUND, t_String}, +}; + +ENTRYPOINT ModeSpecOpt boing_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +static void +parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a) +{ + XColor c; + a[3] = 1.0; /* alpha */ + + if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c)) + { + fprintf (stderr, "%s: can't parse %s color %s", progname, name, s); + exit (1); + } + a[0] = c.red / 65536.0; + a[1] = c.green / 65536.0; + a[2] = c.blue / 65536.0; +} + + +static void +draw_grid (ModeInfo *mi) +{ + boing_configuration *bp = &bps[MI_SCREEN(mi)]; + int x, y; + GLfloat t2 = (GLfloat) tiles / 2; + GLfloat s = 1.0 / (tiles + thickness); + GLfloat z = 0; + + GLfloat lw = MI_HEIGHT(mi) * 0.06 * thickness; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bp->grid_color); + glColor3fv (bp->grid_color); + + glPushMatrix(); + glScalef(s, s, s); + glTranslatef (-t2, -t2, 0); + + glLineWidth (lw); + glBegin (GL_LINES); + for (y = 0; y <= tiles; y++) + { + glVertex3f (0, y, z); + glVertex3f (tiles, y, z); + /*mi->polygon_count++;*/ + } + for (x = 0; x <= tiles; x++) + { + glVertex3f (x, tiles, z); + glVertex3f (x, 0, z); + /*mi->polygon_count++;*/ + } + + glEnd(); + glPopMatrix(); +} + + +static void +draw_box (ModeInfo *mi) +{ + /* boing_configuration *bp = &bps[MI_SCREEN(mi)]; */ + glPushMatrix(); + glTranslatef (0, 0, -0.5); +/* glFrontFace (GL_CCW);*/ + draw_grid (mi); + glPopMatrix(); + + glPushMatrix(); + glRotatef (90, 1, 0, 0); + glTranslatef (0, 0, 0.5); +/* glFrontFace (GL_CW);*/ + draw_grid (mi); + glPopMatrix(); +} + + +static void +draw_ball (ModeInfo *mi) +{ + boing_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int x, y; + int xx = meridians; + int yy = parallels; + int scale = (smooth_p ? 5 : 1); + + if (lighting_p && !wire) + glEnable (GL_LIGHTING); + + if (parallels < 3) + scale *= 2; + + xx *= scale; + yy *= scale; + + glFrontFace (GL_CW); + + glPushMatrix(); + glTranslatef (bp->ball_x, bp->ball_y, bp->ball_z); + glScalef (ball_size, ball_size, ball_size); + glRotatef (-angle, 0, 0, 1); + glRotatef (bp->ball_th, 0, 1, 0); + + for (y = 0; y < yy; y++) + { + GLfloat thy0 = y * (M_PI * 2) / (yy * 2) + M_PI_2; + GLfloat thy1 = (y+1) * (M_PI * 2) / (yy * 2) + M_PI_2; + + for (x = 0; x < xx; x++) + { + GLfloat thx0 = x * (M_PI * 2) / xx; + GLfloat thx1 = (x+1) * (M_PI * 2) / xx; + XYZ p; + Bool bgp = ((x/scale) & 1) ^ ((y/scale) & 1); + + if (wire && bgp) continue; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, + (bgp ? bp->ball_color2 : bp->ball_color1)); + glColor3fv (bgp ? bp->ball_color2 : bp->ball_color1); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + + if (!smooth_p) + { + p.x = cos((thy0+thy1)/2) * cos((thx0+thx1)/2); + p.y = sin((thy0+thy1)/2); + p.z = cos((thy0+thy1)/2) * sin((thx0+thx1)/2); + glNormal3f (-p.x, -p.y, -p.z); + } + + p.x = cos(thy0) * cos(thx0) / 2; + p.y = sin(thy0) / 2; + p.z = cos(thy0) * sin(thx0) / 2; + if (smooth_p) + glNormal3f (-p.x, -p.y, -p.z); + glVertex3f (p.x, p.y, p.z); + + p.x = cos(thy1) * cos(thx0) / 2; + p.y = sin(thy1) / 2; + p.z = cos(thy1) * sin(thx0) / 2; + if (smooth_p) + glNormal3f (-p.x, -p.y, -p.z); + glVertex3f (p.x, p.y, p.z); + + p.x = cos(thy1) * cos(thx1) / 2; + p.y = sin(thy1) / 2; + p.z = cos(thy1) * sin(thx1) / 2; + if (smooth_p) + glNormal3f (-p.x, -p.y, -p.z); + glVertex3f (p.x, p.y, p.z); + + p.x = cos(thy0) * cos(thx1) / 2; + p.y = sin(thy0) / 2; + p.z = cos(thy0) * sin(thx1) / 2; + if (smooth_p) + glNormal3f (-p.x, -p.y, -p.z); + glVertex3f (p.x, p.y, p.z); + + glEnd (); + mi->polygon_count++; + } + } + + glPopMatrix(); + + if (lighting_p && !wire) + glDisable(GL_LIGHTING); +} + + +static void +draw_shadow (ModeInfo *mi) +{ + boing_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + GLfloat xoff = 0.14; + GLfloat yoff = 0.07; + int y; + int yy = parallels; + int scale = (smooth_p ? 5 : 1); + + if (lighting_p && !wire) + glEnable (GL_BLEND); + + if (parallels < 3) + scale *= 2; + + yy *= scale; + + glPushMatrix(); + glTranslatef (bp->ball_x + xoff, bp->ball_y + yoff, -0.49); + glScalef (ball_size, ball_size, ball_size); + glRotatef (-angle, 0, 0, 1); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bp->shadow_color); + glColor4fv (bp->shadow_color); + + glFrontFace (GL_CCW); + glNormal3f (0, 0, 1); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN); + if (!wire) glVertex3f (0, 0, 0); + + for (y = 0; y < yy*2+1; y++) + { + GLfloat thy0 = y * (M_PI * 2) / (yy * 2) + M_PI_2; + glVertex3f (cos(thy0) / 2, sin(thy0) / 2, 0); + mi->polygon_count++; + } + + glEnd (); + + glPopMatrix(); + + if (lighting_p && !wire) + glDisable (GL_BLEND); +} + + +static void +draw_scanlines (ModeInfo *mi) +{ + /* boing_configuration *bp = &bps[MI_SCREEN(mi)]; */ + int wire = MI_IS_WIREFRAME(mi); + int w = MI_WIDTH(mi); + int h = MI_HEIGHT(mi); + + if (h <= 300) return; + + if (!wire) + { + glEnable (GL_BLEND); + glDisable (GL_DEPTH_TEST); + } + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + { + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + { + int lh, ls; + int y; + glLoadIdentity(); + glOrtho (0, w, 0, h, -1, 1); + + if (h > 500) lh = 4, ls = 4; + else if (h > 300) lh = 2, ls = 1; + else lh = 1, ls = 1; + + if (lh == 1) + glDisable (GL_BLEND); + + glLineWidth (lh); + glColor4f (0, 0, 0, 0.3); + + glBegin(GL_LINES); + for (y = 0; y < h; y += lh + ls) + { + glVertex3f (0, y, 0); + glVertex3f (w, y, 0); + } + glEnd(); + } + glPopMatrix(); + } + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + + if (!wire) + { + glDisable (GL_BLEND); + glEnable (GL_DEPTH_TEST); + } +} + + + +static void +tick_physics (ModeInfo *mi) +{ + boing_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat s2 = ball_size / 2; + GLfloat max = 0.5 - s2; + GLfloat min = -max; + + bp->ball_th += bp->ball_dth; + while (bp->ball_th > 360) bp->ball_th -= 360; + while (bp->ball_th < 0) bp->ball_th += 360; + + bp->ball_dx += bp->ball_ddx; + bp->ball_x += bp->ball_dx; + if (bp->ball_x < min) bp->ball_x = min, bp->ball_dx = -bp->ball_dx, + bp->ball_dth = -bp->ball_dth, + bp->ball_dx += (frand(bp->speed/2) - bp->speed); + else if (bp->ball_x > max) bp->ball_x = max, bp->ball_dx = -bp->ball_dx, + bp->ball_dth = -bp->ball_dth, + bp->ball_dx += (frand(bp->speed/2) - bp->speed); + + bp->ball_dy += bp->ball_ddy; + bp->ball_y += bp->ball_dy; + if (bp->ball_y < min) bp->ball_y = min, bp->ball_dy = -bp->ball_dy; + else if (bp->ball_y > max) bp->ball_y = max, bp->ball_dy = -bp->ball_dy; + + bp->ball_dz += bp->ball_ddz; + bp->ball_z += bp->ball_dz; + if (bp->ball_z < min) bp->ball_z = min, bp->ball_dz = -bp->ball_dz; + else if (bp->ball_z > max) bp->ball_z = max, bp->ball_dz = -bp->ball_dz; +} + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_boing (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + h *= 4.0 / 3.0; /* Back in the caveman days we couldn't even afford + square pixels! */ + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 3/4; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + if (height > width) + { + GLfloat s = width / (GLfloat) height; + glScalef (s, s, s); + } + + gluPerspective (8.0, 1/h, 1.0, 10.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt (0.0, 0.0, 8.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +boing_handle_event (ModeInfo *mi, XEvent *event) +{ + boing_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_boing (ModeInfo *mi) +{ + boing_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + if (tiles < 1) tiles = 1; + + if (smooth_p) + { + if (meridians < 1) meridians = 1; + if (parallels < 1) parallels = 1; + } + else + { + if (meridians < 3) meridians = 3; + if (parallels < 2) parallels = 2; + } + + if (meridians > 1 && meridians & 1) meridians++; /* odd numbers look bad */ + + + if (thickness <= 0) thickness = 0.001; + else if (thickness > 1) thickness = 1; + + reshape_boing (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + parse_color (mi, "ballColor1", ball_color1_str, bp->ball_color1); + parse_color (mi, "ballColor2", ball_color2_str, bp->ball_color2); + parse_color (mi, "gridColor", grid_color_str, bp->grid_color); + parse_color (mi, "shadowColor", shadow_str, bp->shadow_color); + parse_color (mi, "background", bg_str, bp->bg_color); + + bp->shadow_color[3] = 0.9; + + glClearColor (bp->bg_color[0], bp->bg_color[1], bp->bg_color[2], 1); + + if (!wire) + { + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + } + + bp->lightpos[0] = 0.5; + bp->lightpos[1] = 0.5; + bp->lightpos[2] = -1; + bp->lightpos[3] = 0; + + if (lighting_p && !wire) + { + GLfloat amb[4] = {0, 0, 0, 1}; + GLfloat dif[4] = {1, 1, 1, 1}; + GLfloat spc[4] = {1, 1, 1, 1}; + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + bp->speed = speed / 800.0; + + bp->ball_dth = (spin ? -bp->speed * 7 * 360 : 0); + + bp->ball_x = 0.5 - ((ball_size/2) + frand(1-ball_size)); + bp->ball_y = 0.2; + bp->ball_dx = bp->speed * 6 + frand(bp->speed); + bp->ball_ddy = -bp->speed; + + bp->ball_dz = bp->speed * 6 + frand(bp->speed); + + bp->trackball = gltrackball_init (False); +} + + +ENTRYPOINT void +draw_boing (ModeInfo *mi) +{ + boing_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + mi->polygon_count = 0; + + glShadeModel(GL_SMOOTH); + + glEnable(GL_NORMALIZE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (! bp->button_down_p) + tick_physics (mi); + + glPushMatrix (); + + { + double rot = current_device_rotation(); + glRotatef(rot, 0, 0, 1); +/* + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (1/s, s, 1); + } +*/ + } + + gltrackball_rotate (bp->trackball); + + glLightfv (GL_LIGHT0, GL_POSITION, bp->lightpos); + + glDisable (GL_CULL_FACE); + glDisable (GL_DEPTH_TEST); + + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_BLEND); + + draw_box (mi); + draw_shadow (mi); + + glEnable (GL_CULL_FACE); + glEnable (GL_DEPTH_TEST); + + draw_ball (mi); + if (scanlines_p) + draw_scanlines (mi); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Boing", boing) + +#endif /* USE_GL */ diff --git a/hacks/glx/boing.man b/hacks/glx/boing.man new file mode 100644 index 0000000..1f00d72 --- /dev/null +++ b/hacks/glx/boing.man @@ -0,0 +1,105 @@ +.TH XScreenSaver 1 "30-Oct-99" "X Version 11" +.SH NAME +boing - draws a bouncing ball like the ancient Amiga demo +.SH SYNOPSIS +.B boing +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] +[\-delay \fIusecs\fP] +[\-smooth] +[\-lighting] +[\-scanlines] +[\-speed] +[\-no\-spin] +[\-angle \fIdegrees\fP] +[\-size \fIratio\fP] +[\-parallels \fIn\fP] +[\-meridians \fIn\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIboing\fP program draws a bouncing checkered ball on a grid. + +This is a clone of the first graphics demo for the Amiga 1000, which +was written by Dale Luck and RJ Mical during a break at the 1984 +Consumer Electronics Show (or so the legend goes.) The boing ball was +briefly the official logo of Amiga Inc., until they were bought by +Commodore later that year. + +With no arguments, this program looks a lot like the original Amiga +demo. With "-smooth -lighting", it looks... less old. +.SH OPTIONS +.I boing +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fIusecs\fP +The delay between frames of the animation, in microseconds: default 15000. +.TP 8 +.B \-smooth +Draw a smooth sphere instead of a faceted polyhedron. +.TP 8 +.B \-lighting +Do shaded lighting instead of flat colors. +.TP 8 +.B \-scanlines +If the window is large enough, draw horizontal lines to simulate the +scanlines on a low resolution monitor. +.TP 8 +.B \-speed \fIratio\fP +Change the animation speed; 0.5 to go half as fast, 2.0 to go twice as fast. +.TP 8 +.B \-no\-spin +Don't rotate the ball. +.TP 8 +.B \-angle \fIdegrees\fP +The jaunty angle at which the ball sits. Default 15 degrees. +.TP 8 +.B \-size \fIratio\fP +How big the ball is; default 0.5 meaning about half the size of the window. +.TP 8 +.B \-parallels \fIn\fP +.B \-meridians \fIn\fP +The pattern of rectangles on the ball. Default 8x16. +.TP 8 +.B \-wireframe +Look crummy. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR bsod (MANSUFFIX), +.BR pong (MANSUFFIX), +.BR xscreensaver (1), +.BR X (1) +.SH COPYRIGHT +Copyright \(co 2005 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski , 19-Feb-2005. diff --git a/hacks/glx/bouncingcow.c b/hacks/glx/bouncingcow.c new file mode 100644 index 0000000..6f9b45d --- /dev/null +++ b/hacks/glx/bouncingcow.c @@ -0,0 +1,519 @@ +/* bouncingcow, Copyright (c) 2003-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Boing, boing, boing. Cow, cow, cow. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 1 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_cow 0 +# define release_cow 0 +#define DEF_SPEED "1.0" +#define DEF_TEXTURE "(none)" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +#include "xlockmore.h" +#include "rotator.h" +#include "gltrackball.h" +#include "ximage-loader.h" +#include + +#ifdef USE_GL /* whole file */ + +#include "gllist.h" + +extern struct gllist + *cow_face, *cow_hide, *cow_hoofs, *cow_horns, *cow_tail, *cow_udder; + +static struct gllist **all_objs[] = { + &cow_face, &cow_hide, &cow_hoofs, &cow_horns, &cow_tail, &cow_udder +}; + +#define FACE 0 +#define HIDE 1 +#define HOOFS 2 +#define HORNS 3 +#define TAIL 4 +#define UDDER 5 + +typedef struct { + GLfloat x, y, z; + GLfloat ix, iy, iz; + GLfloat dx, dy, dz; + GLfloat ddx, ddy, ddz; + rotator *rot; + Bool spinner_p; +} floater; + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + + GLuint *dlists; + GLuint texture; + + int nfloaters; + floater *floaters; + +} cow_configuration; + +static cow_configuration *bps = NULL; + +static GLfloat speed; +static const char *do_texture; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + {"-texture", ".texture", XrmoptionSepArg, 0 }, + {"+texture", ".texture", XrmoptionNoArg, "(none)" }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_String}, +}; + +ENTRYPOINT ModeSpecOpt cow_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +#define BOTTOM 28.0 + +static void +reset_floater (ModeInfo *mi, floater *f) +{ + cow_configuration *bp = &bps[MI_SCREEN(mi)]; + + f->y = -BOTTOM; + f->x = f->ix; + f->z = f->iz; + + /* Yes, I know I'm varying the force of gravity instead of varying the + launch velocity. That's intentional: empirical studies indicate + that it's way, way funnier that way. */ + + f->dy = 5.0; + f->dx = 0; + f->dz = 0; + + /* -0.18 max -0.3 top -0.4 middle -0.6 bottom */ + f->ddy = speed * (-0.6 + BELLRAND(0.45)); + f->ddx = 0; + f->ddz = 0; + + f->spinner_p = !(random() % (12 * bp->nfloaters)); + + if (! (random() % (30 * bp->nfloaters))) + { + f->dx = BELLRAND(1.8) * RANDSIGN(); + f->dz = BELLRAND(1.8) * RANDSIGN(); + } +} + + +static void +tick_floater (ModeInfo *mi, floater *f) +{ + cow_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (bp->button_down_p) return; + + f->dx += f->ddx; + f->dy += f->ddy; + f->dz += f->ddz; + + f->x += f->dx * speed; + f->y += f->dy * speed; + f->z += f->dz * speed; + + if (f->y < -BOTTOM || + f->x < -BOTTOM*8 || f->x > BOTTOM*8 || + f->z < -BOTTOM*8 || f->z > BOTTOM*8) + reset_floater (mi, f); +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_cow (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +cow_handle_event (ModeInfo *mi, XEvent *event) +{ + cow_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +/* Textures + */ + +static Bool +load_texture (ModeInfo *mi, const char *filename) +{ + Display *dpy = mi->dpy; + Visual *visual = mi->xgwa.visual; + char buf[1024]; + XImage *image; + + if (MI_IS_WIREFRAME(mi)) + return False; + + if (!filename || + !*filename || + !strcasecmp (filename, "(none)")) + { + glDisable (GL_TEXTURE_2D); + return False; + } + + image = file_to_ximage (dpy, visual, filename); + if (!image) return False; + + clear_gl_error(); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + image->width, image->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image->data); + sprintf (buf, "texture: %.100s (%dx%d)", + filename, image->width, image->height); + check_gl_error(buf); + + glPixelStorei (GL_UNPACK_ALIGNMENT, 4); + glPixelStorei (GL_UNPACK_ROW_LENGTH, image->width); + + return True; +} + + +ENTRYPOINT void +init_cow (ModeInfo *mi) +{ + cow_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + Bool tex_p = False; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_cow (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (!wire) + { + GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0}; +/* GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};*/ + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + bp->trackball = gltrackball_init (False); + + bp->dlists = (GLuint *) calloc (countof(all_objs)+1, sizeof(GLuint)); + for (i = 0; i < countof(all_objs); i++) + bp->dlists[i] = glGenLists (1); + + tex_p = load_texture (mi, do_texture); + if (tex_p) + glBindTexture (GL_TEXTURE_2D, bp->texture); + + for (i = 0; i < countof(all_objs); i++) + { + GLfloat black[4] = {0, 0, 0, 1}; + const struct gllist *gll = *all_objs[i]; + + glNewList (bp->dlists[i], GL_COMPILE); + + glDisable (GL_TEXTURE_2D); + + if (i == HIDE) + { + GLfloat color[4] = {0.63, 0.43, 0.36, 1.00}; + if (tex_p) + { + /* if we have a texture, make the base color be white. */ + color[0] = color[1] = color[2] = 1.0; + + glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); + glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glEnable(GL_TEXTURE_GEN_S); + glEnable(GL_TEXTURE_GEN_T); + glEnable(GL_TEXTURE_2D); + + /* approximately line it up with ../images/earth.png */ + glMatrixMode (GL_TEXTURE); + glLoadIdentity(); + glTranslatef (0.45, 0.58, 0); + glScalef (0.08, 0.16, 1); + glRotatef (-5, 0, 0, 1); + glMatrixMode (GL_MODELVIEW); + } + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, black); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 128); + } + else if (i == TAIL) + { + GLfloat color[4] = {0.63, 0.43, 0.36, 1.00}; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, black); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 128); + } + else if (i == UDDER) + { + GLfloat color[4] = {1.00, 0.53, 0.53, 1.00}; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, black); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 128); + } + else if (i == HOOFS || i == HORNS) + { + GLfloat color[4] = {0.20, 0.20, 0.20, 1.00}; + GLfloat spec[4] = {0.30, 0.30, 0.30, 1.00}; + GLfloat shiny = 8.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + else if (i == FACE) + { + GLfloat color[4] = {0.10, 0.10, 0.10, 1.00}; + GLfloat spec[4] = {0.10, 0.10, 0.10, 1.00}; + GLfloat shiny = 8.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + else + { + GLfloat color[4] = {1.00, 1.00, 1.00, 1.00}; + GLfloat spec[4] = {1.00, 1.00, 1.00, 1.00}; + GLfloat shiny = 128.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + + renderList (gll, wire); + + glEndList (); + } + + bp->nfloaters = MI_COUNT (mi); + bp->floaters = (floater *) calloc (bp->nfloaters, sizeof (floater)); + + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + f->rot = make_rotator (10.0, 0, 0, + 4, 0.05 * speed, + True); + if (bp->nfloaters == 2) + { + f->x = (i ? 6 : -6); + } + else if (i != 0) + { + double th = (i - 1) * M_PI*2 / (bp->nfloaters-1); + double r = 10; + f->x = r * cos(th); + f->z = r * sin(th); + } + + f->ix = f->x; + f->iy = f->y; + f->iz = f->z; + reset_floater (mi, f); + } +} + + +static void +draw_floater (ModeInfo *mi, floater *f) +{ + cow_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat n; + double x, y, z; + + get_position (f->rot, &x, &y, &z, !bp->button_down_p); + + glPushMatrix(); + glTranslatef (f->x, f->y, f->z); + + gltrackball_rotate (bp->trackball); + + glRotatef (y * 360, 0.0, 1.0, 0.0); + if (f->spinner_p) + { + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + n = 1.5; + if (bp->nfloaters > 99) n *= 0.05; + else if (bp->nfloaters > 25) n *= 0.18; + else if (bp->nfloaters > 9) n *= 0.3; + else if (bp->nfloaters > 1) n *= 0.7; + glScalef(n, n, n); + + glCallList (bp->dlists[FACE]); + mi->polygon_count += (*all_objs[FACE])->points / 3; + + glCallList (bp->dlists[HIDE]); + mi->polygon_count += (*all_objs[HIDE])->points / 3; + + glCallList (bp->dlists[HOOFS]); + mi->polygon_count += (*all_objs[HOOFS])->points / 3; + + glCallList (bp->dlists[HORNS]); + mi->polygon_count += (*all_objs[HORNS])->points / 3; + + glCallList (bp->dlists[TAIL]); + mi->polygon_count += (*all_objs[TAIL])->points / 3; + + glCallList (bp->dlists[UDDER]); + mi->polygon_count += (*all_objs[UDDER])->points / 3; + + glPopMatrix(); +} + + + +ENTRYPOINT void +draw_cow (ModeInfo *mi) +{ + cow_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + glRotatef(o, 0, 0, 1); + } +# endif + + glScalef (0.5, 0.5, 0.5); + + mi->polygon_count = 0; + +# if 0 + { + floater F; + F.x = F.y = F.z = 0; + F.dx = F.dy = F.dz = 0; + F.ddx = F.ddy = F.ddz = 0; + F.rot = make_rotator (0, 0, 0, 1, 0, False); + glScalef(2,2,2); + draw_floater (mi, &F); + } +# else + for (i = 0; i < bp->nfloaters; i++) + { + /* "Don't kid yourself, Jimmy. If a cow ever got the chance, + he'd eat you and everyone you care about!" + -- Troy McClure in "Meat and You: Partners in Freedom" + */ + floater *f = &bp->floaters[i]; + draw_floater (mi, f); + tick_floater (mi, f); + } +# endif + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("BouncingCow", bouncingcow, cow) + +#endif /* USE_GL */ diff --git a/hacks/glx/bouncingcow.man b/hacks/glx/bouncingcow.man new file mode 100644 index 0000000..516d1de --- /dev/null +++ b/hacks/glx/bouncingcow.man @@ -0,0 +1,73 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +bouncingcow - a happy cow on a trampoline in 3D. Moo. +.SH SYNOPSIS +.B bouncingcow +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +[\-texture \fIfilename\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +It's very silly. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +How fast the cow bounces. Larger for faster. Default: 1.0. +.TP 8 +.B \-count \fInumber\fP +How many cows! Default 1. +.TP 8 +.B \-texture \fIfilename\fP +An image file to paint on the cow's hide. + +Note that on most systems, GL textures must have dimensions that are a +power of two. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Jamie Zawinski. Moo. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +Moo. No representations are made about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. Moo. +.SH AUTHOR +Jamie Zawinski + diff --git a/hacks/glx/boxed.c b/hacks/glx/boxed.c new file mode 100644 index 0000000..136d468 --- /dev/null +++ b/hacks/glx/boxed.c @@ -0,0 +1,1370 @@ +/* boxed --- 3D bouncing balls that explode */ + +#if 0 +static const char sccsid[] = "@(#)boxed.c 0.9 01/09/26 xlockmore"; +#endif + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * + * 2001: Written by Sander van Grieken + * as an OpenGL screensaver for the xscreensaver package. + * Lots of hardcoded values still in place. Also, there are some + * copy/paste leftovers from the gears hack. opts don't work. + * + * 2005: opts work. added options -balls, -ballsize, -explosion + * + * 2006: opts work. added option -decay + * + * 2008: opts work. added option -momentum + * + */ + +#include "boxed.h" + +/* +**---------------------------------------------------------------------------- +** Defines +**---------------------------------------------------------------------------- +*/ + +#ifdef STANDALONE +# define DEFAULTS "*delay: 15000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" + +# define release_boxed 0 +# define boxed_handle_event xlockmore_no_events +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +# define DEF_SPEED "0.5" +# define DEF_BALLS "20" +# define DEF_BALLSIZE "3.0" +# define DEF_EXPLOSION "15.0" +# define DEF_DECAY "0.07" +# define DEF_MOMENTUM "0.6" + +#undef countof +#define countof(x) (int)(sizeof((x))/sizeof((*x))) +#undef rnd +#define rnd() (frand(1.0)) + +static GLfloat speed; /* jwz -- overall speed factor applied to all motion */ +static int cfg_balls; +static GLfloat cfg_ballsize; +static GLfloat cfg_explosion; +static GLfloat cfg_decay; +static GLfloat cfg_momentum; + + +static XrmOptionDescRec opts[] = { + {"-speed", ".boxed.speed", XrmoptionSepArg, 0}, + {"-balls", ".boxed.balls", XrmoptionSepArg, 0}, + {"-ballsize", ".boxed.ballsize", XrmoptionSepArg, 0}, + {"-explosion", ".boxed.explosion", XrmoptionSepArg, 0}, + {"-decay", ".boxed.decay", XrmoptionSepArg, 0}, + {"-momentum", ".boxed.momentum", XrmoptionSepArg, 0}, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&cfg_balls, "balls", "Balls", DEF_BALLS, t_Int}, + {&cfg_ballsize, "ballsize", "Ball Size", DEF_BALLSIZE, t_Float}, + {&cfg_explosion, "explosion", "Explosion", DEF_EXPLOSION, t_Float}, + {&cfg_decay, "decay", "Explosion Decay", DEF_DECAY, t_Float}, + {&cfg_momentum, "momentum", "Explosion Momentum", DEF_MOMENTUM, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt boxed_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES + +ModStruct boxed_description = { + "boxed", "init_boxed", "draw_boxed", NULL, + "draw_boxed", "init_boxed", "free_boxed", &boxed_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Shows GL's boxed balls", 0, NULL}; + +#endif + +#define BOOL int +#define TRUE 1 +#define FALSE 0 + +/* camera */ +#define CAM_HEIGHT 80.0f +#define CAMDISTANCE_MIN 35.0 +#define CAMDISTANCE_MAX 150.0 +#define CAMDISTANCE_SPEED 1.5 +#define LOOKAT_R 30.0 + +/* rendering the sphere */ +#define MESH_SIZE 10 +#define SPHERE_VERTICES (2+MESH_SIZE*MESH_SIZE*2) +#define SPHERE_INDICES ((MESH_SIZE*4 + MESH_SIZE*4*(MESH_SIZE-1))*3) + +/* +**----------------------------------------------------------------------------- +** Typedefs +**----------------------------------------------------------------------------- +*/ + +typedef struct { + GLfloat x; + GLfloat y; + GLfloat z; +} vectorf; + +typedef struct { + vectorf loc; + vectorf dir; + vectorf color; + float radius; + BOOL bounced; + int offside; + BOOL justcreated; +} ball; + +typedef struct { + int num_balls; + float ballsize; + float explosion; + ball *balls; +} ballman; + +typedef struct { + vectorf loc; + vectorf dir; + BOOL far; + int gone; +} tri; + +typedef struct { + int num_tri; + int lifetime; + float scalefac; + float explosion; + float decay; + float momentum; + vectorf color; + tri *tris; + GLint *indices; + vectorf *normals; + vectorf *vertices; +} triman; + +typedef struct { + int numballs; + float ballsize; + float explosion; + float decay; + float momentum; + BOOL textures; + BOOL transparent; + float camspeed; +} boxed_config; + + +typedef struct { + float cam_x_speed, cam_z_speed, cam_y_speed; + boxed_config config; + float tic; + float camtic; + vectorf spherev[SPHERE_VERTICES]; + GLint spherei[SPHERE_INDICES]; + ballman bman; + triman *tman; + GLXContext *glx_context; + GLuint listobjects; + GLuint gllists[3]; + int list_polys[3]; + Window window; + BOOL stop; + char *tex1; +} boxedstruct; + +#define GLL_PATTERN 0 +#define GLL_BALL 1 +#define GLL_BOX 2 + +/* +**---------------------------------------------------------------------------- +** Local Variables +**---------------------------------------------------------------------------- +*/ + +static boxedstruct *boxed = NULL; + + +/* +**---------------------------------------------------------------------------- +** Functions +**---------------------------------------------------------------------------- +*/ + +/* + * Add 2 vectors + */ +static inline void addvectors(vectorf *dest, vectorf *s1, vectorf *s2) +{ + dest->x = s1->x + s2->x; + dest->y = s1->y + s2->y; + dest->z = s1->z + s2->z; +} + +/* + * Sub 2 vectors + */ +static inline void subvectors(vectorf *dest, vectorf* s1, vectorf *s2) +{ + dest->x = s1->x - s2->x; + dest->y = s1->y - s2->y; + dest->z = s1->z - s2->z; +} + +/* + * Multiply vector with scalar (scale vector) + */ +static inline void scalevector(vectorf *dest, vectorf *source, GLfloat sc) +{ + dest->x = source->x * sc; + dest->y = source->y * sc; + dest->z = source->z * sc; +} + +/* + * Copy vector + */ +static inline void copyvector(vectorf *dest, vectorf* source) +{ + dest->x = source->x; + dest->y = source->y; + dest->z = source->z; +} + + +static inline GLfloat +dotproduct(vectorf * v1, vectorf * v2) +{ + return v1->x * v2->x + v1->y * v2->y + v1->z * v2->z; +} + +static inline GLfloat +squaremagnitude(vectorf * v) +{ + return v->x * v->x + v->y * v->y + v->z * v->z; +} + +static inline GLfloat +squaremagnitudehorz(vectorf * v) +{ + return v->x * v->x + v->z * v->z; +} + + + +/* + * Generate the Sphere data + * + * Input: + */ + +static void generatesphere(boxedstruct *gp) +{ + float dj = M_PI/(MESH_SIZE+1.0f); + float di = M_PI/MESH_SIZE; + int v; /* vertex offset */ + int ind; /* indices offset */ + int i,j,si; + GLfloat r_y_plane, h_y_plane; + vectorf *spherev; + GLint *spherei; + + /* + * generate the sphere data + * vertices 0 and 1 are the north and south poles + */ + + spherei = gp->spherei; + spherev = gp->spherev; + + spherev[0].x = 0.0f; spherev[0].y =1.0f; spherev[0].z = 0.0f; + spherev[1].x = 0.0f; spherev[1].y =-1.0f; spherev[1].z = 0.0f; + + for (j=0; jloc.x = 5-10*rnd(); + newball->loc.y = 35+20*rnd(); + newball->loc.z = 5-10*rnd(); + newball->dir.x = (0.5f-rnd()) * speed; + newball->dir.y = 0.0; + newball->dir.z = (0.5-rnd()) * speed; + newball->offside = 0; + newball->bounced = FALSE; + newball->radius = cfg_ballsize; + while (r+g+b < 1.8f ) { + newball->color.x = r=rnd(); + newball->color.y = g=rnd(); + newball->color.z = b=rnd(); + } + newball->justcreated = TRUE; +} + +/* Update position of each ball */ + +static void updateballs(ballman *bman) +{ + register int b,j; + vectorf dvect,richting,relspeed,influence; + GLfloat squaredist; + + for (b=0;bnum_balls;b++) { + + GLfloat gravity = 0.30f * speed; + + /* apply gravity */ + bman->balls[b].dir.y -= gravity; + /* apply movement */ + addvectors(&bman->balls[b].loc,&bman->balls[b].loc,&bman->balls[b].dir); + /* boundary check */ + if (bman->balls[b].loc.y < bman->balls[b].radius) { /* ball onder bodem? (bodem @ y=0) */ + if ((bman->balls[b].loc.x < -95.0) || + (bman->balls[b].loc.x > 95.0) || + (bman->balls[b].loc.z < -95.0) || + (bman->balls[b].loc.z > 95.0)) { + if (bman->balls[b].loc.y < -2000.0) + createball(&bman->balls[b]); + } else { + bman->balls[b].loc.y = bman->balls[b].radius + (bman->balls[b].radius - bman->balls[b].loc.y); + bman->balls[b].dir.y = -bman->balls[b].dir.y; + if (bman->balls[b].offside) { + bman->balls[b].bounced = TRUE; /* temporary disable painting ball */ + scalevector(&bman->balls[b].dir,&bman->balls[b].dir,0.80f); + if (squaremagnitude(&bman->balls[b].dir) < 0.08f) { + createball(&bman->balls[b]); + } + if (squaremagnitudehorz(&bman->balls[b].dir) < 0.005f) { + createball(&bman->balls[b]); + } + } + } + + } + if (!bman->balls[b].offside) { + if (bman->balls[b].loc.x - bman->balls[b].radius < -20.0f) { /* x ondergrens */ + if (bman->balls[b].loc.y > 41+bman->balls[b].radius) bman->balls[b].offside=1; + else { + bman->balls[b].dir.x = -bman->balls[b].dir.x; + bman->balls[b].loc.x = -20.0f + bman->balls[b].radius; + } + } + if (bman->balls[b].loc.x + bman->balls[b].radius > 20.0f) { /* x bovengrens */ + if (bman->balls[b].loc.y > 41+bman->balls[b].radius) bman->balls[b].offside=1; + else { + bman->balls[b].dir.x = -bman->balls[b].dir.x; + bman->balls[b].loc.x = 20.0f - bman->balls[b].radius; + } + } + if (bman->balls[b].loc.z - bman->balls[b].radius < -20.0f) { /* z ondergrens */ + if (bman->balls[b].loc.y > 41+bman->balls[b].radius) bman->balls[b].offside=1; + else { + bman->balls[b].dir.z = -bman->balls[b].dir.z; + bman->balls[b].loc.z = -20.0f + bman->balls[b].radius; + } + } + if (bman->balls[b].loc.z + bman->balls[b].radius > 20.0f) { /* z bovengrens */ + if (bman->balls[b].loc.y > 41+bman->balls[b].radius) bman->balls[b].offside=1; + else { + bman->balls[b].dir.z = -bman->balls[b].dir.z; + bman->balls[b].loc.z = 20.0f - bman->balls[b].radius; + } + } + } /* end if !offside */ + + /* check voor stuiteren */ + for (j=b+1;jnum_balls;j++) { + squaredist = (bman->balls[b].radius * bman->balls[b].radius) + (bman->balls[j].radius * bman->balls[j].radius); + subvectors(&dvect,&bman->balls[b].loc,&bman->balls[j].loc); + if ( squaremagnitude(&dvect) < squaredist ) { /* balls b and j touch */ + subvectors(&richting,&bman->balls[j].loc,&bman->balls[b].loc); + subvectors(&relspeed,&bman->balls[b].dir,&bman->balls[j].dir); + /* calc mutual influence direction and magnitude */ + scalevector(&influence,&richting,(dotproduct(&richting,&relspeed)/squaremagnitude(&richting))); + + subvectors(&bman->balls[b].dir,&bman->balls[b].dir,&influence); + addvectors(&bman->balls[j].dir,&bman->balls[j].dir,&influence); + addvectors(&bman->balls[b].loc,&bman->balls[b].loc,&bman->balls[b].dir); + addvectors(&bman->balls[j].loc,&bman->balls[j].loc,&bman->balls[j].dir); + + subvectors(&dvect,&bman->balls[b].loc,&bman->balls[j].loc); + while (squaremagnitude(&dvect) < squaredist) { + addvectors(&bman->balls[b].loc,&bman->balls[b].loc,&bman->balls[b].dir); + addvectors(&bman->balls[j].loc,&bman->balls[j].loc,&bman->balls[j].dir); + subvectors(&dvect,&bman->balls[b].loc,&bman->balls[j].loc); + } + } + } /* end for j */ + } /* end for b */ +} + + +/* +* explode ball into triangles +*/ + +static void createtrisfromball(triman* tman, vectorf *spherev, GLint *spherei, int ind_num, ball *b) +{ + int pos; + float explosion; + float momentum; + float scale; + register int i; + vectorf avgdir,dvect,mvect; + + tman->scalefac = b->radius; + copyvector(&tman->color,&b->color); + explosion = 1.0f + tman->explosion * 2.0 * rnd(); + momentum = tman->momentum; + + tman->num_tri = ind_num/3; + + /* reserveer geheugen voor de poly's in een bal */ + + tman->tris = (tri *)malloc(tman->num_tri * sizeof(tri)); + tman->vertices = (vectorf *)malloc(ind_num * sizeof(vectorf)); + tman->normals = (vectorf *)malloc(ind_num/3 * sizeof(vectorf)); + + for (i=0; i<(tman->num_tri); i++) { + tman->tris[i].far = FALSE; + tman->tris[i].gone = 0; + pos = i * 3; + /* kopieer elke poly apart naar een tri structure */ + copyvector(&tman->vertices[pos+0],&spherev[spherei[pos+0]]); + copyvector(&tman->vertices[pos+1],&spherev[spherei[pos+1]]); + copyvector(&tman->vertices[pos+2],&spherev[spherei[pos+2]]); + /* Calculate average direction of shrapnel */ + addvectors(&avgdir,&tman->vertices[pos+0],&tman->vertices[pos+1]); + addvectors(&avgdir,&avgdir,&tman->vertices[pos+2]); + scalevector(&avgdir,&avgdir,0.33333); + + /* should normalize first, NYI */ + copyvector(&tman->normals[i],&avgdir); + + /* copy de lokatie */ + addvectors(&tman->tris[i].loc,&b->loc,&avgdir); + /* en translate alle triangles terug naar hun eigen oorsprong */ + tman->vertices[pos+0].x -= avgdir.x; + tman->vertices[pos+0].y -= avgdir.y; + tman->vertices[pos+0].z -= avgdir.z; + tman->vertices[pos+1].x -= avgdir.x; + tman->vertices[pos+1].y -= avgdir.y; + tman->vertices[pos+1].z -= avgdir.z; + tman->vertices[pos+2].x -= avgdir.x; + tman->vertices[pos+2].y -= avgdir.y; + tman->vertices[pos+2].z -= avgdir.z; + /* alwaar opschaling plaatsvindt */ + scale = b->radius * 2; + scalevector(&tman->vertices[pos+0],&tman->vertices[pos+0],scale); + scalevector(&tman->vertices[pos+1],&tman->vertices[pos+1],scale); + scalevector(&tman->vertices[pos+2],&tman->vertices[pos+2],scale); + + tman->vertices[pos+0].x += avgdir.x; + tman->vertices[pos+0].y += avgdir.y; + tman->vertices[pos+0].z += avgdir.z; + tman->vertices[pos+1].x += avgdir.x; + tman->vertices[pos+1].y += avgdir.y; + tman->vertices[pos+1].z += avgdir.z; + tman->vertices[pos+2].x += avgdir.x; + tman->vertices[pos+2].y += avgdir.y; + tman->vertices[pos+2].z += avgdir.z; + + /* bereken nieuwe richting */ + scalevector(&tman->tris[i].dir,&avgdir,explosion); + dvect.x = (0.1f - 0.2f*rnd()); + dvect.y = (0.15f - 0.3f*rnd()); + dvect.z = (0.1f - 0.2f*rnd()); + addvectors(&tman->tris[i].dir,&tman->tris[i].dir,&dvect); + + /* add ball's momentum to each piece of the exploded ball */ + mvect.x = b->dir.x * momentum; + mvect.y = 0; + mvect.z = b->dir.z * momentum; + addvectors(&tman->tris[i].dir,&tman->tris[i].dir,&mvect); + } +} + + +/* +* update position of each tri +*/ + +static void updatetris(triman *t) +{ + int b; + GLfloat xd,zd; + + for (b=0;bnum_tri;b++) { + /* the exploded triangles disappear over time */ + if (rnd() < t->decay) { + if (t->tris[b].gone == 0) + t->tris[b].gone = 1; + } + /* apply gravity */ + t->tris[b].dir.y -= (0.1f * speed); + /* apply movement */ + addvectors(&t->tris[b].loc,&t->tris[b].loc,&t->tris[b].dir); + /* boundary check */ + if (t->tris[b].far) continue; + if (t->tris[b].loc.y < 0) { /* onder bodem ? */ + if ((t->tris[b].loc.x > -95.0f) & + (t->tris[b].loc.x < 95.0f) & + (t->tris[b].loc.z > -95.0f) & + (t->tris[b].loc.z < 95.0f)) { /* in veld */ + t->tris[b].dir.y = -(t->tris[b].dir.y); + t->tris[b].loc.y = -t->tris[b].loc.y; + scalevector(&t->tris[b].dir,&t->tris[b].dir,0.80f); /* dampening */ + } + else { + t->tris[b].far = TRUE; + continue; + } + } + + if ((t->tris[b].loc.x > -21.0f) & + (t->tris[b].loc.x < 21.0f) & + (t->tris[b].loc.z > -21.0f) & + (t->tris[b].loc.z < 21.0f)) { /* in box? */ + + xd = zd = 999.0f; /* big */ + if ((t->tris[b].loc.x > -21.0f) & + (t->tris[b].loc.x < 0)) { + xd = t->tris[b].loc.x + 21.0f; + } + if ((t->tris[b].loc.x < 21.0f) & + (t->tris[b].loc.x > 0)) { + xd = 21.0f - t->tris[b].loc.x; + } + if ((t->tris[b].loc.z > -21.0f) & + (t->tris[b].loc.z < 0)) { + zd = t->tris[b].loc.z + 21.0f; + } + if ((t->tris[b].loc.z < 21.0f) & + (t->tris[b].loc.z > 0)) { + zd = 21.0f - t->tris[b].loc.z; + } + if (xd < zd) { + /* bounce x */ + if (t->tris[b].dir.x < 0) + t->tris[b].loc.x += (21.0f - t->tris[b].loc.x); + else + t->tris[b].loc.x += (-21.0f - t->tris[b].loc.x); + t->tris[b].dir.x = -t->tris[b].dir.x; + } else { + /* bounce z */ + if (t->tris[b].dir.z < 0) + t->tris[b].loc.z += (21.0f - t->tris[b].loc.z); + else + t->tris[b].loc.z += (-21.0f - t->tris[b].loc.z); + t->tris[b].dir.z = -t->tris[b].dir.z; + } + + } + } /* end for b */ +} + + +/* + * free memory allocated by a tri manager + */ +static void freetris(triman *t) +{ + if (!t) return; + if (t->tris) free(t->tris); + if (t->vertices) free(t->vertices); + if (t->normals) free(t->normals); + t->tris = NULL; + t->vertices = NULL; + t->normals = NULL; + t->num_tri = 0; + t->lifetime = 0; +} + + +/* + *load defaults in config structure + */ +static void setdefaultconfig(boxed_config *config) +{ + cfg_balls = MAX(3,MIN(40,cfg_balls)); + cfg_ballsize = MAX(1.0f,MIN(5.0f,cfg_ballsize)); + cfg_explosion = MAX(0.0f,MIN(50.0f,cfg_explosion)); + cfg_decay = MAX(0.02f,MIN(0.90f,cfg_decay)); + cfg_momentum = MAX(0.0f,MIN(1.0f,cfg_momentum)); + + config->numballs = cfg_balls; + config->textures = TRUE; + config->transparent = FALSE; + config->explosion = cfg_explosion; + config->decay = cfg_decay; + config->momentum = cfg_momentum; + config->ballsize = cfg_ballsize; + config->camspeed = 35.0f; +} + + +/* + * draw bottom + */ +static int drawfilledbox(boxedstruct *boxed, int wire) +{ + /* draws texture filled box, + top is drawn using the entire texture, + the sides are drawn using the edge of the texture + */ + int polys = 0; + + /* front */ + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(0,1); + glVertex3f(-1.0,1.0,1.0); + glTexCoord2f(1,1); + glVertex3f(1.0,1.0,1.0); + glTexCoord2f(1,1); + glVertex3f(1.0,-1.0,1.0); + glTexCoord2f(0,1); + glVertex3f(-1.0,-1.0,1.0); + polys++; + /* rear */ + glTexCoord2f(0,1); + glVertex3f(1.0,1.0,-1.0); + glTexCoord2f(1,1); + glVertex3f(-1.0,1.0,-1.0); + glTexCoord2f(1,1); + glVertex3f(-1.0,-1.0,-1.0); + glTexCoord2f(0,1); + glVertex3f(1.0,-1.0,-1.0); + polys++; + /* left */ + glTexCoord2f(1,1); + glVertex3f(-1.0,1.0,1.0); + glTexCoord2f(1,1); + glVertex3f(-1.0,-1.0,1.0); + glTexCoord2f(0,1); + glVertex3f(-1.0,-1.0,-1.0); + glTexCoord2f(0,1); + glVertex3f(-1.0,1.0,-1.0); + polys++; + /* right */ + glTexCoord2f(0,1); + glVertex3f(1.0,1.0,1.0); + glTexCoord2f(1,1); + glVertex3f(1.0,1.0,-1.0); + glTexCoord2f(1,1); + glVertex3f(1.0,-1.0,-1.0); + glTexCoord2f(0,1); + glVertex3f(1.0,-1.0,1.0); + polys++; + /* top */ + glTexCoord2f(0.0,0.0); + glVertex3f(-1.0,1.0,1.0); + glTexCoord2f(0.0,1.0); + glVertex3f(-1.0,1.0,-1.0); + glTexCoord2f(1.0,1.0); + glVertex3f(1.0,1.0,-1.0); + glTexCoord2f(1.0,0.0); + glVertex3f(1.0,1.0,1.0); + polys++; + /* bottom */ + glTexCoord2f(0,0); + glVertex3f(-1.0,-1.0,1.0); + glTexCoord2f(0,1); + glVertex3f(-1.0,-1.0,-1.0); + glTexCoord2f(1,1); + glVertex3f(1.0,-1.0,-1.0); + glTexCoord2f(1,0); + glVertex3f(1.0,-1.0,1.0); + polys++; + glEnd(); + + return polys; +} + + +/* + * Draw a box made of lines + */ +static int drawbox(boxedstruct *boxed) +{ + int polys = 0; + /* top */ + glBegin(GL_LINE_STRIP); + glVertex3f(-1.0,1.0,1.0); + glVertex3f(-1.0,1.0,-1.0); polys++; + glVertex3f(1.0,1.0,-1.0); polys++; + glVertex3f(1.0,1.0,1.0); polys++; + glVertex3f(-1.0,1.0,1.0); polys++; + glEnd(); + /* bottom */ + glBegin(GL_LINE_STRIP); + glVertex3f(-1.0,-1.0,1.0); + glVertex3f(1.0,-1.0,1.0); polys++; + glVertex3f(1.0,-1.0,-1.0); polys++; + glVertex3f(-1.0,-1.0,-1.0); polys++; + glVertex3f(-1.0,-1.0,1.0); polys++; + glEnd(); + /* connect top & bottom */ + glBegin(GL_LINES); + glVertex3f(-1.0,1.0,1.0); + glVertex3f(-1.0,-1.0,1.0); polys++; + glVertex3f(1.0,1.0,1.0); + glVertex3f(1.0,-1.0,1.0); polys++; + glVertex3f(1.0,1.0,-1.0); + glVertex3f(1.0,-1.0,-1.0); polys++; + glVertex3f(-1.0,1.0,-1.0); + glVertex3f(-1.0,-1.0,-1.0); polys++; + glEnd(); + return polys; +} + + + +/* + * Draw ball + */ +static int drawball(boxedstruct *gp, ball *b, int wire) +{ + int polys = 0; + int i,pos,cnt; + GLint *spherei = gp->spherei; + vectorf *spherev = gp->spherev; + GLfloat col[3]; + + glPushMatrix(); + + glTranslatef(b->loc.x,b->loc.y,b->loc.z); + glScalef(b->radius,b->radius,b->radius); + glColor3f(b->color.x,b->color.y,b->color.z); + col[0] = b->color.x; + col[1] = b->color.y; + col[2] = b->color.z; + glMaterialfv(GL_FRONT, GL_DIFFUSE, col); + col[0] *= 0.5; + col[1] *= 0.5; + col[2] *= 0.5; + glMaterialfv(GL_FRONT, GL_EMISSION,col); + + if (!gp->gllists[GLL_BALL]) { + glNewList(gp->listobjects + GLL_BALL,GL_COMPILE); + glBegin(wire ? GL_LINES : GL_TRIANGLES); + cnt = SPHERE_INDICES/3; + for (i=0; ilist_polys[GLL_BALL]++; + glVertex3f(spherev[spherei[pos+1]].x,spherev[spherei[pos+1]].y,spherev[spherei[pos+1]].z); + if (wire) + glVertex3f(spherev[spherei[pos+1]].x,spherev[spherei[pos+1]].y,spherev[spherei[pos+1]].z); + glNormal3f(spherev[spherei[pos+2]].x,spherev[spherei[pos+2]].y,spherev[spherei[pos+2]].z); + glVertex3f(spherev[spherei[pos+2]].x,spherev[spherei[pos+2]].y,spherev[spherei[pos+2]].z); + gp->list_polys[GLL_BALL]++; + } + glEnd(); + glEndList(); + gp->gllists[GLL_BALL] = 1; + } else { + glCallList(gp->listobjects + GLL_BALL); + polys += gp->list_polys[GLL_BALL]; + } + + glPopMatrix(); + return polys; +} + + +/* + * Draw a single triangle + */ +static void drawtri(triman *t, int wire, int i) +{ + const vectorf *spherev = t->vertices + i*3; + const vectorf *loc = &t->tris[i].loc; + + glNormal3f(t->normals[i].x,t->normals[i].y,t->normals[i].z); + glVertex3f(spherev[0].x+loc->x,spherev[0].y+loc->y,spherev[0].z+loc->z); + glVertex3f(spherev[1].x+loc->x,spherev[1].y+loc->y,spherev[1].z+loc->z); + if (wire) + glVertex3f(spherev[1].x+loc->x,spherev[1].y+loc->y,spherev[1].z+loc->z); + glVertex3f(spherev[2].x+loc->x,spherev[2].y+loc->y,spherev[2].z+loc->z); + if (wire) { + glVertex3f(spherev[2].x+loc->x,spherev[2].y+loc->y,spherev[2].z+loc->z); + glVertex3f(spherev[0].x+loc->x,spherev[0].y+loc->y,spherev[0].z+loc->z); + } +} + + +/* + * Draw all triangles in triman + */ +static int drawtriman(triman *t, int wire) +{ + int polys = 0; + int i; + GLfloat col[3]; + + glPushMatrix(); + glColor3f(t->color.x,t->color.y,t->color.z); + col[0] = t->color.x; + col[1] = t->color.y; + col[2] = t->color.z; + glMaterialfv(GL_FRONT, GL_DIFFUSE, col); + col[0] *= 0.3; + col[1] *= 0.3; + col[2] *= 0.3; + glMaterialfv(GL_FRONT, GL_EMISSION,col); + glBegin(wire ? GL_LINES : GL_TRIANGLES); + + for (i=0; inum_tri; i++) { + if (t->tris[i].gone > 3) { continue; } + if (t->tris[i].gone > 0) { + glColor3f(t->color.x,t->color.y,t->color.z); + col[0] = 1.0f; + col[1] = 1.0f; + col[2] = 1.0f; + glMaterialfv(GL_FRONT, GL_DIFFUSE, col); + col[0] *= 0.8; + col[1] *= 0.8; + col[2] *= 0.8; + glMaterialfv(GL_FRONT, GL_EMISSION,col); + + drawtri(t, wire, i); + polys++; + + glColor3f(t->color.x,t->color.y,t->color.z); + col[0] = t->color.x; + col[1] = t->color.y; + col[2] = t->color.z; + glMaterialfv(GL_FRONT, GL_DIFFUSE, col); + col[0] *= 0.3; + col[1] *= 0.3; + col[2] *= 0.3; + glMaterialfv(GL_FRONT, GL_EMISSION,col); + + t->tris[i].gone++; + continue; + } + + drawtri(t, wire, i); + polys++; + } + glEnd(); + glPopMatrix(); + return polys; +} + +/* + * draw floor pattern + */ +static int drawpattern(boxedstruct *gp) +{ + int polys = 0; + if (!gp->gllists[GLL_PATTERN]) { + glNewList(gp->listobjects + GLL_PATTERN, GL_COMPILE); + + glBegin(GL_LINE_STRIP); + glVertex3f(-25.0f, 0.0f, 35.0f); + glVertex3f(-15.0f, 0.0f, 35.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-5.0f, 0.0f, 25.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(5.0f, 0.0f, 25.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(15.0f, 0.0f, 35.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(25.0f, 0.0f, 35.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(35.0f, 0.0f, 25.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(35.0f, 0.0f, 15.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(25.0f, 0.0f, 5.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(25.0f, 0.0f, -5.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(35.0f, 0.0f, -15.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(35.0f, 0.0f, -25.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(25.0f, 0.0f, -35.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(15.0f, 0.0f,-35.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(5.0f, 0.0f, -25.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-5.0f, 0.0f, -25.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-15.0f, 0.0f,-35.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-25.0f, 0.0f,-35.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-35.0f, 0.0f, -25.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-35.0f, 0.0f, -15.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-25.0f, 0.0f, -5.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-25.0f, 0.0f, 5.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-35.0f, 0.0f, 15.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-35.0f, 0.0f, 25.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-25.0f, 0.0f, 35.0f); gp->list_polys[GLL_PATTERN]++; + glEnd(); + + glBegin(GL_LINE_STRIP); + glVertex3f(-5.0f, 0.0f, 15.0f); + glVertex3f(5.0f, 0.0f, 15.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(15.0f, 0.0f, 5.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(15.0f, 0.0f, -5.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(5.0f, 0.0f, -15.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-5.0f, 0.0f, -15.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-15.0f, 0.0f, -5.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-15.0f, 0.0f, 5.0f); gp->list_polys[GLL_PATTERN]++; + glVertex3f(-5.0f, 0.0f, 15.0f); gp->list_polys[GLL_PATTERN]++; + glEnd(); + + glEndList(); + gp->gllists[GLL_PATTERN] = 1; + } else { + glCallList(gp->listobjects + GLL_PATTERN); + polys += gp->list_polys[GLL_PATTERN]; + } + + return polys; +} + + +/* + * main rendering loop + */ +static void draw(ModeInfo * mi) +{ + boxedstruct *gp = &boxed[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME (mi); + vectorf v1,v2; + GLfloat r; + int dx, dz; + int i; + + GLfloat dgray[4] = {0.3f, 0.3f, 0.3f, 1.0f}; + GLfloat black[4] = {0.0f, 0.0f, 0.0f, 1.0f}; + GLfloat lblue[4] = {0.4f,0.6f,1.0f }; + + GLfloat l0_ambient[] = {0.0, 0.0, 0.0, 1.0}; + GLfloat l0_specular[] = {1.0, 1.0, 1.0, 1.0}; + GLfloat l0_diffuse[] = {1.0, 1.0, 1.0, 1.0}; + GLfloat l0_position[] = {0.0, 0.0, 0.0, 1.0}; /* w != 0 -> positional light */ + GLfloat l1_ambient[] = {0.0, 0.0, 0.0, 1.0}; + GLfloat l1_specular[] = {1.0, 1.0, 1.0, 1.0}; + GLfloat l1_diffuse[] = {0.5, 0.5, 0.5, 1.0}; + GLfloat l1_position[] = {0.0, 1.0, 0.0, 0.0}; /* w = 0 -> directional light */ + + mi->polygon_count = 0; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + glRotatef(o, 0, 0, 1); + } +# endif + + gp->tic += 0.01f; + gp->camtic += 0.01f + 0.01f * sin(gp->tic * speed); + + /* rotate camera around (0,0,0), looking at (0,0,0), up is (0,1,0) */ + r = CAMDISTANCE_MIN + (CAMDISTANCE_MAX - CAMDISTANCE_MIN) + (CAMDISTANCE_MAX - CAMDISTANCE_MIN)*cos((gp->camtic/CAMDISTANCE_SPEED) * speed); + v1.x = r * sin((gp->camtic/gp->cam_x_speed) * speed); + v1.z = r * cos((gp->camtic/gp->cam_x_speed) * speed); + v1.y = CAM_HEIGHT * sin((gp->camtic/gp->cam_y_speed) * speed) + 1.02 * CAM_HEIGHT; + + v2.x = LOOKAT_R * sin((gp->camtic/(gp->cam_x_speed * 5.0f)) * speed); + v2.z = LOOKAT_R * cos((gp->camtic/(gp->cam_x_speed * 5.0f)) * speed); + v2.y = (CAM_HEIGHT * sin((gp->camtic/gp->cam_y_speed) * speed) + 1.02 * CAM_HEIGHT)/10.0; + + gluLookAt(v1.x,v1.y,v1.z,v2.x,v2.y,v2.x,0.0,1.0,0.0); + + if (!wire) { + glLightfv(GL_LIGHT0, GL_AMBIENT, l0_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, l0_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, l0_specular); + glLightfv(GL_LIGHT0, GL_POSITION, l0_position); + glLightfv(GL_LIGHT1, GL_AMBIENT, l1_ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, l1_diffuse); + glLightfv(GL_LIGHT1, GL_SPECULAR, l1_specular); + glLightfv(GL_LIGHT1, GL_POSITION, l1_position); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + + glFrontFace(GL_CW); + + glMaterialfv(GL_FRONT, GL_SPECULAR, black); + glMaterialfv(GL_FRONT, GL_EMISSION, lblue); + glMaterialfv(GL_FRONT,GL_AMBIENT,black); + glMaterialf(GL_FRONT, GL_SHININESS, 5.0); + } + + + /* draw ground grid */ + /* glDisable(GL_DEPTH_TEST); */ + glDisable(GL_LIGHTING); + + glColor3f(0.1,0.1,0.6); + for (dx= -2; dx<3; dx++) { + for (dz= -2; dz<3; dz++) { + glPushMatrix(); + glTranslatef(dx*30.0f, 0.0f, dz*30.0f); + drawpattern(gp); + glPopMatrix(); + } + } + + /* Set drawing mode for the boxes */ + glEnable(GL_DEPTH_TEST); + if (!wire) glEnable(GL_TEXTURE_2D); + glPushMatrix(); + glColor3f(1.0,1.0,1.0); + glScalef(20.0,0.25,20.0); + glTranslatef(0.0,2.0,0.0); + mi->polygon_count += drawfilledbox(gp, wire); + glPopMatrix(); + glDisable(GL_TEXTURE_2D); + + glPushMatrix(); + glColor3f(0.2,0.5,0.2); + glScalef(20.0,20.0,0.25); + glTranslatef(0.0,1.0,81.0); + mi->polygon_count += drawbox(gp); + glPopMatrix(); + + glPushMatrix(); + glColor3f(0.2,0.5,0.2); + glScalef(20.0,20.0,0.25); + glTranslatef(0.0,1.0,-81.0); + mi->polygon_count += drawbox(gp); + glPopMatrix(); + + glPushMatrix(); + glColor3f(0.2,0.5,0.2); + glScalef(.25,20.0,20.0); + glTranslatef(-81.0,1.0,0.0); + mi->polygon_count += drawbox(gp); + glPopMatrix(); + + glPushMatrix(); + glColor3f(0.2,0.5,0.2); + glScalef(.25,20.0,20.0); + glTranslatef(81.0,1.0,0.0); + mi->polygon_count += drawbox(gp); + glPopMatrix(); + + if (!wire) { + glEnable(GL_LIGHTING); + + glMaterialfv(GL_FRONT, GL_DIFFUSE, dgray); + glMaterialfv(GL_FRONT, GL_EMISSION, black); /* turn it off before painting the balls */ + } + + /* move the balls and shrapnel */ + updateballs(&gp->bman); + + glFrontFace(GL_CCW); + for (i=0;ibman.num_balls;i++) { + if (gp->bman.balls[i].justcreated) { + gp->bman.balls[i].justcreated = FALSE; + freetris(&gp->tman[i]); + } + if (gp->bman.balls[i].bounced) { + if (gp->tman[i].vertices == NULL) { + createtrisfromball(&gp->tman[i],gp->spherev,gp->spherei,SPHERE_INDICES,&gp->bman.balls[i]); + } else { + updatetris(&gp->tman[i]); + } + glDisable(GL_CULL_FACE); + mi->polygon_count += drawtriman(&gp->tman[i], wire); + if (!wire) glEnable(GL_CULL_FACE); + } else { + mi->polygon_count += drawball(gp, &gp->bman.balls[i], wire); + } + } + + glFlush(); +} + + + +/* + * new window size or exposure + */ +ENTRYPOINT void reshape_boxed(ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(50.0,1/h,2.0,1000.0); + glMatrixMode (GL_MODELVIEW); + + glLineWidth(1); + glPointSize(1); +} + + +static void +pinit(ModeInfo * mi) +{ + boxedstruct *gp = &boxed[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME (mi); + ballman *bman; + int i,texpixels; + char *texpixeldata; + char *texpixeltarget; + + glShadeModel(GL_SMOOTH); + glClearDepth(1.0); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + /* Load configuration */ + setdefaultconfig(&gp->config); + + /* give the decay parameter a better curve */ + if (gp->config.decay <= 0.8182) { gp->config.decay = gp->config.decay / 3; } + else { gp->config.decay = (gp->config.decay - 0.75) * 4; } + + bman = &gp->bman; + + bman->balls = (ball *)malloc(gp->config.numballs * sizeof(ball)); + bman->num_balls = gp->config.numballs; + bman->ballsize = gp->config.ballsize; + bman->explosion = gp->config.explosion; + + gp->tman = (triman *)malloc(bman->num_balls * sizeof(triman)); + memset(gp->tman,0,bman->num_balls * sizeof(triman)); + + for(i=0;inum_balls;i++) { + gp->tman[i].explosion = (float) (((int)gp->config.explosion) / 15.0f ); + gp->tman[i].decay = gp->config.decay; + gp->tman[i].momentum = gp->config.momentum; + gp->tman[i].vertices = NULL; + gp->tman[i].normals = NULL; + gp->tman[i].tris = NULL; + createball(&bman->balls[i]); + bman->balls[i].loc.y *= rnd(); + } + + generatesphere(gp); + + if (!wire) { + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + } + + /* define cam path */ + gp->cam_x_speed = 1.0f/((float)gp->config.camspeed/50.0 + rnd()*((float)gp->config.camspeed/50.0)); + gp->cam_z_speed = 1.0f/((float)gp->config.camspeed/50.0 + rnd()*((float)gp->config.camspeed/50.0)); + gp->cam_y_speed = 1.0f/((float)gp->config.camspeed/250.0 + rnd()*((float)gp->config.camspeed/250.0)); + if (rnd() < 0.5f) gp->cam_x_speed = -gp->cam_x_speed; + if (rnd() < 0.5f) gp->cam_z_speed = -gp->cam_z_speed; + + /* define initial cam position */ + gp->tic = gp->camtic = rnd() * 100.0f; + + /* define tex1 (bottom plate) */ + gp->tex1 = (char *)malloc(3*width*height*sizeof(GLuint)); + texpixels = 256*256; /*width*height;*/ + texpixeldata = header_data; + texpixeltarget = gp->tex1; + for (i=0; i < texpixels; i++) { + HEADER_PIXEL(texpixeldata,texpixeltarget); + texpixeltarget += 3; + } + + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + clear_gl_error(); +#if 0 + i = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 256, 256, + GL_RGB, GL_UNSIGNED_BYTE, gp->tex1); + if (i) + { + const char *s = (char *) gluErrorString (i); + fprintf (stderr, "%s: error mipmapping texture: %s\n", + progname, (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); +#else + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 0, + GL_RGB, GL_UNSIGNED_BYTE, + gp->tex1); + check_gl_error("texture"); +#endif + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + +} + + + +ENTRYPOINT void +init_boxed(ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + + /* Colormap cmap; */ + /* Boolean rgba, doublebuffer, cmap_installed; */ + boxedstruct *gp; + + MI_INIT(mi, boxed); + gp = &boxed[screen]; + gp->window = MI_WINDOW(mi); + + if ((gp->glx_context = init_GL(mi)) != NULL) { + reshape_boxed(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + if (!glIsList(gp->listobjects)) { + gp->listobjects = glGenLists(3); + gp->gllists[0] = 0; + gp->gllists[1] = 0; + gp->gllists[2] = 0; + } + pinit(mi); + } else { + MI_CLEARWINDOW(mi); + } +} + + +ENTRYPOINT void +draw_boxed(ModeInfo * mi) +{ + boxedstruct *gp = &boxed[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!gp->glx_context) + return; + + glDrawBuffer(GL_BACK); + + glXMakeCurrent(display, window, *(gp->glx_context)); + draw(mi); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(display, window); +} + +ENTRYPOINT void +free_boxed(ModeInfo * mi) +{ + boxedstruct *gp = &boxed[MI_SCREEN(mi)]; + int i; + + if (gp->glx_context) { + /* Display lists MUST be freed while their glXContext is current. */ + glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context)); + + if (glIsList(gp->listobjects)) + glDeleteLists(gp->listobjects, 3); + + for (i=0;ibman.num_balls;i++) { + if (gp->bman.balls[i].bounced) freetris(&gp->tman[i]); + } + free (gp->bman.balls); + free (gp->tman); + free (gp->tex1); + + + } +} + + +XSCREENSAVER_MODULE ("Boxed", boxed) + +/*********************************************************/ + +#endif diff --git a/hacks/glx/boxed.h b/hacks/glx/boxed.h new file mode 100644 index 0000000..fd9b5e1 --- /dev/null +++ b/hacks/glx/boxed.h @@ -0,0 +1,4116 @@ +/* GIMP header image file format (RGB-only): /home/shag/build/xscreensaver-3.33/hacks/glx/thebox.h */ + +static unsigned int width = 256; +static unsigned int height = 256; + +/* Call this macro repeatedly. After each use, the pixel data can be extracted */ + +#define HEADER_PIXEL(data,pixel) \ + pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \ + pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \ + pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \ + data += 4; + +# ifdef __GNUC__ + __extension__ /* don't warn about "string length is greater than the length + ISO C89 compilers are required to support" when including + the following constant data... */ +# endif +static char *header_data = + "!FY'\"&Q#!&M!!VM-!6Y(!&M##6Q&\"69%\"FU'!FE!!VM$!VI$!&M!!FM#!VU&!'!!" + "\"&M%#&M!\"6Q$\"')#!FY#\"FY%\"6Y\"\"&Y#\"6]$\"&U!\"G%!\"7%&!G)!!'-!!')!\"'=!" + "!G!##G5\"\"75$\"W9#!G5#!G9!!WA$#'=\"!GE#\"'A%#GI$!GI!#'A!!'E##GQ&%7Q#" + "#WU%#W=%\"W]#\"GY\"%WQ)%7Y\"\"H-!\"W]&\"8!$%8%#$8-&\"8%!#81%$85)#H!##H-&" + "$H1(#H)#\"X5#$XA%\"X9##H9#\"89#\"89!\"HA\"\"8A!\"8A!\"X=#$8E&#(I!\"8I&$HM!" + "#8I%\"8M!!HM#!HM!!HU!$(M($8Q)!H])!XQ!\"8Y!$(]'$(Y'$8Q(\"XY%#XQ#\"I!$" + "\"XY\"#Y)##)%#%(]%$Y!!#I%\"\")!%#Y!$#9%!#8]!#I%\"$)%$%HY%#HU\"$91($9-(" + "$))$#95!%8]&!9-\"$X](\")!#!)%!%)-\"#9-$#)-&#I5\"$Y%!#)-)\"I-!#91!\"Y-\"" + "\"(]\"$I-'#IA\"\"I-!#Y-&#)-##Y-##)1#!I-##)-#\"H]!#)5#\"Y-\"!)-!\"Y!&$)-!" + "#)1#\"Y%##(]!$9-)\"I)!#)1#$Y%'\"XY\"\"91#!)1!#I)\"$)%%%(]&#HY\"#(]!#I)\"" + "&8]%!(]!\"Y!##H]%#X]!#)%##(Y&\"I)!$X]!#Y!#\"(Y\"\"HY!#Y%'\"8Y!%(]+#XQ&" + "\"8M#!XQ$\"Y%%\"8M!#XU!#HI\"$XQ$#XI&\"HI!#8A\"$8E\"#(5!#8A$$(A%\"8=#$(5(" + "#X='$89##H=\"#(=!\"XA#\"(-#\"H1\"\"81!\"8-!!(5!\"X-##8!#\"H1%$(!&%X1$" + "#(%$\"G]\"!8%\"\"7M!\"7U!#'Y$\"7M!#7Y##GI$#WI%!'M#\"7A!\"GI\"!G9!!GI&!GE!" + "\"GE%!W=\"!'E#\"W!\"!G%%!W5&!G9!!W)\"\"'-#!7-'\"V]&!W1\"\"'%\"\"'%#\"&]\"!'1%" + "\"&Y##FQ%!&U!\"FU!\"&Q#!&I!!FU#!&Y!!6M\"!FM%!FI!!&M!!VM\"!VM\"!FI%\"6Q$" + "!&E#!VQ&!&E!\"FM!\"FM#!&Q!\"&I%#&I%\"&M*\"VM(!6U\"!6A\"!&I'!FM#!FM!\"6M\"" + "!FE##FU%#V]$\"&Y#\"FY!\"F]%!F]!!V]\"!G1!\"7%\"#75(!G%!\"71$\"'-#\"'1!!G5&" + "!W5$!G=!\"7)\"\"G=%\"7M#\"GM'!WA\"!'A!#7A*\"7I!#7Q&#X!*$'I!#'I\"$'U(\"7U!" + "#7Y%!GY!#GY&\"7]!!H)!$H!+\"WY##X!'#X%'\"H1!\"()#\"H=\"\"X1(%X-(!H1!#X5!" + "\"H5\"$8-&%X5'\"8-!#X-'\"XE%#H= '#XA$\"XE#\"XE#\"H=!#HE%\"XI\"!HM##(I'" + "\"8A!#H=#\"H]!#(Q#\"8Q##(Y#!HE#\"HU!\"))%$(Y$#(Q#$H]&#X]!#X]#\"HU!!)%!" + "\"Y!\"#I!&$)%%$)%$#Y-#$XQ*#95!#9)!&9%($)1'!Y)!\"Y-\"#9)$%I%'#)-#\"I-!" + "$9)(!YA'&)-*!I%#!Y5!#Y)#%I-$$I5#\"Y1%#I)%#YA&$I1)#))#!Y5!#9-$#)1#" + "\"I1!\"I1!!)1$\"I-!#I1%\"Y!#\"H]!#I)%#9)!#))#$9) -$$)='#Y1##I9\"!Y1$" + "$)-'#Y)##I-%#99$!)-!#)-&!)-'$Y-+!9-\"%9)#\"X]\"$))'\"9=#$Y)!#Y%#$Y%(" + "!I%&#Y!##(]!$I!'#9!!%I)!!Y!\"$H]#\"9!##8I(#8]$$(Y'\"I-!$8U##(Q##8I$" + "$(U'!HU#$HU!#(Q!%(I)#H](#HU\"$(E(\"XM\"\"HI!\"XA#\"HE!\"(I%&(A(#HE%#XI!" + "#H9##8=!\"HA$$8=#!H1##(=!%(1&\"H1!#85%\"X1#\"8-!$(-#\"8-!\"X-\"\"X%#\"X%!" + "!H!#!H!!#8-%!'I!\"8%!\"GY%$7M)\"GM\"!'M!\"GU\"\"WU#\"WM!\"'I#\"8!!!75\"\"'I#" + "\"79+\"G5\"\"'5!!GA#\"'-\"#'=\"!G%!#')'\"'=,!W5$\"'-#\"G!#\"')#\"'%#\"6U#!W!\"" + "\"6]#\"G!%#'!$!VU\"!&Q!\"&Q#\"6]$!FM!!&]##&Q'!&Q!!6M$!6M&!&I!!69\"!G!#" + "\"6I$!&E!!6Y\"!FI#!6M&!&M!!F='!&Q&!&M!!VE$!VI$\"&I'!6M\"\"&I#!FE!\"6E&" + "#&Y%\"W)(!VU\"\"G!)!FU!#V]&!G9!!79&\"G-\"\"7)$!G1!\"G-$!W5\"\"71$\"'5#\"'5!" + "!71\"\"'1\"!G9!!7A%\"'A#!G1&\"GI$\"'A!#7I%\"'E'#H!&\"WY#\"WM&$GU%\"']\"!GY!" + "!WY!$H!+#W]'\"8!!\"X!#\"'Y#\"W]!!H)##X1'#H-##(5##89\"#H-!\"81!\"89##H1&" + "%HE%\"8=!$(9%\"X9\"!X9!\"XA#\"HI$\"XE(#(I#$(Y*$8I(\"8I!#85!#XM!!HM!$8M&" + "#(Y##(Q!#XQ!#XY##8Q$#(Q#$9%%#HY%\"X]\"$H]&!H]!\"8Y!!Y5!$I!)'I!'$)!!" + "#9%!\"9!$%95#\"9%&#I1(#9)$\"9-#!Y%!\"Y!#\"))\"!HQ!\"I)!$91\"\"I-!#9!!$9))" + "!)-'\"I-!$I5##)9#\"I5$#8]!#Y)##)1##)1#\"I9!$I-##9=!\"YA%$9-%\")5%\"I)!" + "\"I5!$)-'$)1!\"9=#$Y5!\"Y)\"#Y5&!)A!\"Y-\"#I=!#91$#I%\"#)-#%I5!#)5##9)$" + "#)1&!9-\"#91$\"I1!\"I1$\"Y9\"#I)%!I-#!I-##)-#\"I-!\"Y5\"#I)\"!))$\"))\"!)%!" + "!X]!$)!(\"Y%#$9%\"#I%\"#I)\"$Y-'#I%#\"I!!#Y-##I%)!Y%!\"8]!#I-%#)%#$(Y'" + "$)%%#XY#\"I!!\"8]!#(U#\"HA$#HU\"&HQ)&(Q*\"HU!#8M$\"8M!#8Q$#8Q$$(E(\"8E#" + "#(A#\"HA!%85'#(=!%(=#\"H5\"#H9\"\"89!\"85!\"H-'!H5#\"8=!$85$\"8-!!X)!#'U$" + "\"8%!\"8!!$H!$#(1!\"(%#!GU#!WY!\"WU#\"7U!$GU#\"7Q!#GI$\"7M!\"7M#\"GI%\"GI\"" + "#WE*\"'E#\"WA&#'A'\"'I\"!')!\"G9\"\"W5$#W-#\"'1#\"'-#!7-\"\"&Y%\"G5\"\"'!#!'%#" + "\"'%#\"F]'\"VY&!&Q!#&Y\"\"&U!\"&Q#!FQ!\"FQ%$VU*!&E!!FM%!VM&!VM$\"F9)\"&U)" + "!&M#!&Q!!&I!!&M!!6Q\"\"6]&!&A!!FQ#!VQ$!6=\"!6Y&!6M\"$6M&#FM)!FQ!\"&Q#" + "\"6M,\"6Y$#&]$\"V]*#FY)!F]!!G!!!&]!\"')\"!W)!\"7-&!G5!!'-!\"75#!G5!!G9!" + "\"'A#!G5!!GA#\"WA#\"GA)!'E!#'A\"#GU!#WM%#7M%\"7M!#WY'#7Y%\"7Y!\"GM\"#7]%" + "\"X)##']$\"8%!#8%$%(=&\"8%!\"8)$$X)#$()#$8%)\"8-!&X1(\"X=\"$H='$(=\"%H1&" + "!HE#\"X=#\"89!!X5'$8A##XI&\"8A&#(I!&(Y##HI(#(]#\"8M!#8Q$!HQ!\"HQ!$(Y'" + "\"XU\"#9!$$X](\"XM%#HU%\"XQ(#XU&\"8Y!#9-!#8Y$\"8Y!#I!\"\"9)#\"H]!\"8]!#8U!" + "$9%##X]!\"X]\"\"I%!$Y!*!I)##9-$$914\")1(#I-%#)-#!))$$)5$$Y1*#91$\"Y1%" + "$9=\"!Y9!\"9-#$9%)\"Y5\"&)-&$)5'\"Y%#\"I5!\"I='#)9##99$#)=##I9%\"YI!#)9#" + "#)9#%I9.\"II!#Y9#\")=\"\"I9!%)1($Y9$\")E\"#Y9#\"Y9\"!YA$$I9)\"I5!#95$\")5(" + "$)1'#Y=##Y9&$I5##Y9&\")9\"#Y5##)9##9=$#9-$!Y9!$)A'\"Y-\"&9-+!)-!\"Y-\"" + "\"I)!\"I-!#91'#))##9)$\"XY\"#9)$#9%!$H]#!I)#%I)!&I%&$9!%%I1!!X]!\"8]!" + "\"8]!\"I!\"$HU'!XY!\"XU\"#(Q##(U#%(U)$XE%#8I$!(U#\"8M#\"HU$#(Q!\"HM!#HU\"" + "!XE$\"8M!\"85!!H9!\"XA\"#(=$\"X=##HI%$89##X5&\"89#!H=&#(1&\"85!\"(5\"#H-%" + "$(!&#H)%#(5#\"()#\"8)$!G]#\"']\"#W]'#8!##WY'$X!)#7U#\"WQ#\"7Q!\"WM##'Q!" + "\"7I!\"WI#\"G=\"$7E$#W5*\"'=#!G=!$75,#W='\"'5\"!79\"#71(!W%\"\"G%#\"')#\"'%#" + "#G%$\"7)$!'!!\"'!#\"G%\"\"&Y#!VU\"!6M\"!FQ!\"6]&!6=\"!F]#!VM$!&U#\"FQ#\"&E#" + "!&M#!VI$!VU*\"VU&!6M(!6Q\"\"FQ%#6M$!FQ#!FI#!VMM(\"&M#\"&U#\"&M#!F]&" + "!FY(\"6Y$!7)\"#6U\"\"W)&!G!!\"G%##G)'!W)\"!'9!\"7-$#W5#\"'-#\"'9%!W-\"\"'=\"" + "!'=!\"G9%#7Q##'E$\"GI#%'I'!GE#\"WQ!\"'Q\"\"WM##GY$#WY)\"7Y##8!%#X%!\"X%#" + "#H)$\"H%\"%(5!#'Y!$8))#7]%#H-#$81$\"H5\"#89$#(=!#85!$(5($H-$#XMY\"" + "$(E%!(M!#89\"$HM'\"(E\"\"HM!!(I!\"8I!!(I$#8]$#(E#%(Q)$HQ)#XQ'$(U'#8A$" + "\"HI!#XY#\"8Y!#(]##9!!#8]$$)!(#Y%$$9%%$9%#%(]\"#9!!\"Y%##Y)##I-\"#8Y-" + "\"I1!$9-\"$)5'\"I1!#))#\"I1!!))!#9%$!I)#\"I1!%)5\"\"95##91!$)5$$I5)#95!" + "$9=%\"I1!\"YI\"\"I9!#99$\"I9!\"Y5\"#I=%$)9!$I=#$)='!YI!\"I9!%I='!)5!#Y9#" + "$I=#!)A$\"I=!#I=%#9=$\"YQ!#)=##)A#\"YA\"\"I5!#I=(#Y9&\"II!!IA#\"9=##Y5#" + "#)9#\"I1!\"IE!#Y9&\"YI\"#Y-&\"Y=\"\"I=!#I9%#)9##I9\"$Y1'&9A&#I1%\"I!'#)1#" + "\"91#\"Y1\"#Y1&$))$$I5#!I%(\"I!$\"I)!#))#$Y)!#I1\"#I%##8]$#(]!$8Y\"#Y-#" + "#HQ(\"XY\"\"I!!#(Y#\"Y1\"#8Y$$(Y(\"HU!\"XM\"#8U$%(I#\"XQ\"\"XY\"#(M!!HI&\"(I\"" + "#HE#!HI!#HM(#8=$\"X=\"#XE'!(9&\"XE#$X=&#(A'\"81!\"H1!#8=$\"81$$81&#(-$" + "#H-%\"8%!#H))$H)\"\"8%!\"X%!#8)%\"']%#(!!\"7U!\"'E#\"WU#!GM!\"GQ\"\"7Q!#WI%" + "!WM$\"GA$\"WA!\"WE#!'A!\"'A#!7A\"#GA$!G5!\"G5$\"W5#!G5!!'1!\"W)$\"G5\"#&Y#" + "\"'%#\"'%#\"F]##6M!!F]!#6](!G!!\"FU#\"6I$!VQ\"\"FM)!&Q!!&Y!!FM#!&=#\"FM%" + "!6U\"!6M$!6M\"!FQ##&E%\"&M*!VM$!6Q\"\"6U(\"6M$\"6Q$\"6E\"!VM\"!FY#!VU$\"&]\"" + "\"FI%!&U&\"'%#\"'!\"!W!\"!G!!\"W%#\"71$\"'-#\"7%$!G-!!F]!!G=!\"'-\"#GI#\"7A#" + "\"7=$!WI\"\"GU\"!GE#\"GU\"#'Q$\"7Y&!'Q#\"W=$#7Y%$GY#\"GY%!G]#\"H)\"\"H!\"\"(!\"" + "\"7Y!$(%%\"8)$$H-%\"X-\"\"X%#$(-(#H1##81%\"85!#(A#\"89!#(9##H=%#(=!!H=#" + "\"XA%\"HE$#H=%!HI!$XQ+#(I#\"8E!#(Q#\"8M#\"XQ\"\"HI$#I%%%9%*#8Y$#(U#%)%\"" + "\"X]%\"Y-\"\"8Y!\"I!!!Y!$#(U!\"I!!$))!!Y-!%I-+%9%&\"I)!\"I!!\"I-!$)-$#I1\"" + "\"Y!%#)1#!91\"\"I-!#HY%\"I1!$Y-+#95!$I5&#Y=&#IA%\"I9!#Y9&#I=%\"I9!\"I9!" + "#9E#$)M&\"I=!!9=\"$I=#\"Y9%#Y5)$)A!$)=$#I=\"%99\"%II&#Y9##YA#$IA##Y9&" + "!)E!\"I5!#9A$$Y=!$9A$\"YM!#IA\"$YI&$IA%#I9\"$YA'#Y=#$)9$#9E!$9=%\"IE!" + "\"Y5\"\"I9!\"IQ!#I=%%9I%\"I=!#)M#\"99&!)=!#YE%#99'$I9#$Y5'#)9##)9##)1#" + "$I=#\")-%\"Y)\"!I1)'))'\"I-!\"I)!$9-%$)-!#H]%#9)!$I)#\"Y)\"#I!#\"I-!$)!$" + "#I%\"#8Y$$8U##(Q#!X]!\"X]%%H]-\"(Y\"\"H]!\"XQ\"#XQ$#(Q&%(Q)#(Q#!HQ!\"8U#" + "\"HQ!#XY&\"8Y!!HI&\"X=##(M#!(=!#8E%\"H9\"!H9#$()##8I$%(5&#()!#H9&!(-!" + "#8-%#H-%#H9##']$\"8)!\"(%##X%!\"81!!(!$$H)(!(!$\"GY)#WQ'#7U#\"7Y#!GY#" + "!'Q!\"WM#!'Q!\"W9#\"'E#!WE!\"GA%\"G=%\"'=#\"G9$!G1!!W5\"!7-\"#71(!W1'\"'%#" + "\"F]%!7%'\"&]#!6Y$\"W-&#&]'!FY!\"&Q#\"&M#\"FI%$VY%!6M*\"VM&!&M!!&M#!FM#" + "!&Q!!&U%!FM#!6M\"\"6M$!&I!\"&M%!&M!#&U%#&M'!7%$!FQ!\"VY&#&U%\"6Y&!W!$" + "!6M$!FY!!&]#\"'%%\"'1\"!G1#\"V]\"\"W1&\"W5(!G9!!G9!!79\"!'5#!'=!\"GA\"!GA#" + "!GE!#79\"\"WI!\"'I!#WE#\"GQ\"$'Q##7U#!GQ!\"X)\"\"7Y!\"'Y\"$'Y%!H!!\"8)!#(%$" + "$H-%\"(%#%(!$#X-'\"X%#\"H%!#X1$#(5#\"89#\"X9\"#XQ&\"X=#\"89!#X=!#(E#\"HE$" + "#HA##(E&#(M#\"XM%$(M!\"HI!$XM(#HQ%#HY%$H]&#)!#$9!+#H]\"%Y!#$(]$%I!+" + "\"8]!#9!!#9%!!Y)$#9-!#9-!\")%\"\"I!\"#9-$\"I-!\"I-!\"Y9\"&)9##8]!$91%#)1#" + "#9=$\"Y1\"#I9%#Y5##Y5&\"I5!$)='!Y1!#I1($9=(#)9#\"Y9\"\")=\"!YI!!Y=!!Y=!" + "#Y%$$YA&#YA\"%9E%#9=!#95!#YA##99!$)5$%Y9%$YA&%9I)$)E$%9E)#)5##9E$" + "#YM\"$IE%$YI$#9A!%)E!#9E!#9=!#Y=#$95%&)M\"$I5##I=!$)I$$YA&$IA%$9M!" + "#Y5##YA\"$9=\"#YI#$)A$#)A#$)5$&9A.$IA($)1$#9E#\"I=!!I9##)A#!95\"\"II!" + "\"99##Y1&!)9!\"Y!##Y=#$Y5.#))#\"(]\"\"I1!\"I5!\"9)#!Y-!$Y%*$))$\"I)$\"I)!" + "$)%!$I)##9!!#9!\"$HE!$(]$#8]$\"8Y!#(]##HY%\"8U#!HY!#XU&\"XU\"\"HY!\"89!" + "\"8M!#HI##XM'#XAQ$\"XI\"!H5##(9#\"XA#!H5#$X=%\"H9%$X9#%(=#$X5&#(5&" + "$H1*%X%'#(-!$(-%#8)%#H-&\"8%!#()$$(!#\"8%!#X%!$']&\"WU#\"W]#\"7U!$'U#" + "\"WQ!!GU!#'I$!'I#\"GI\"!GM!\"'I#!'E#\"WM#!W)!#'9&!G9!#'5\"!G5#!')!!7%&" + "\"G-%\"W)&!79%\"')#\"7)$\"7-$#&]&\"&U!$6Y%!FQ!!W%!\"FY%!VM\"#6E\"!V]\"\"6M&" + "!FU#!&M#!&Q!\"6M(!6M\"!&=#!VM$\"VE(\"VM$!V]\"\"&Q#\"&U#!6U$!FM!!&Y##'%%" + "!G%!!W%!\"7%$!')#!')!\"G-%#'1&$'I!!G9#\"79+!75\"\"W9&\"71$\"W-&#'U\"\"7E#" + "!WM$!'E#!GU##7I#\"WM(!G]!\"7U!#'A\"\"X!#$7]*#X!'\"8!!\"WI##(!$#H%&!H!#" + "$8)$\"X)%#8-'#(5#!H5!!(=!%XE)\"89#!X9$\"H=!\"X=%#H5&\"HE!#(M#%8I'#HE#" + "$HY)%(E+\"8]!\"8M!#(Q#\"XY\"!HI&!8I\"$8Y&\"8I!\"HI'\"XU\"#HY%#(])#8Y$#I!#" + "#9!!#H]\"#I%\"\"Y-\"!))!$))!$9=%$9-)#I)\"#9-$\"I1'\"I1!%Y=(#))&$95\"#)5#" + "$I9)#)5)$I9)&91'\"I5!%Y=$!)='\"Y-\"$Y-!#95!%9=)$IA\"$9=%%)A(#9A!#91!" + "$)E#\"IA$#9E!#IE\"\"II!$9E$%)A%%)E$&IE.#)=#$)='$IA\"$)A!#9E!%IM&$)E$" + "$)Q#$9I\"$)=!$IA#&9I'#9I$$9I$#9I!$9M!%)A+#IE$\"IE!$IA%%9=\"$9=%$Y=$" + "$)I#!)E!#YQ##9E!#YE#&)A(!YA$%)A(#YA#&)A\"&9I&#IE\"$Y=!$9=(\"IA!\"Y1\"" + "$9)\"!YA!#I9%#)%$#Y%#%95\"\"I)!$)5'\"I1!\"9%$\"I1$#Y)&#)-#$91(\"Y-%%)-%" + "\"8]!#99'#)%#%Y%,\"I-!$)!!#9-!#9!\"!Y!!$HY##(U#\"I!$#(Y##(Y#%(]%#XU#" + "#(Q#!XQ!#(Q##8I$#HQ%#8Q!#HQ\"\"XE#\"8I!#XE&\"XQ%#X9$\"XA0\"X5#$8-)!H9!" + "#(=!\"XE#\"X=#$(1#\"7]#!X1!#8%\"#H)$!(%!#H%&\"H!\"\"X%#$8-'\"H%\"\"7Y!$(!(" + "\"GQ$\"7E!!H%!#WM'\"7M!#7M#!GI#!WY$\"GA#!WE!!GE!#7I(\"W=!\"G9%\"')(#71$" + "#G%\"!'%!\"'A'\"G1\"!G%#!'!!!G!#\"G1#!FU#!FY)#&U%!&U#!VY\"\"VQ$\"FQ%!FM*" + "!VM$\"FI'\"&Q#\"&M#$&M)\"6M$!VM$\"&M##&M!\"&U##VU,\"&U!\"&U#\"FU%\"&]#!FY&" + "#')%\"G)%!FY!$7-%\"')\"\"G1%!W1(!G5%\"G9$!'9!!G=!\"'=#!G1!!W=\"!GA!\"7I!" + "\"7M!$'M(\"7M!\"7I!#WQ%\"WY#$GY%$'U#!7Y\"#W]$\"X!#\"X%#$(%%\"8)!#()!!X-$" + "\"X-#&H9'\"H5'!H5!#H)&$8=##89$\"X9#\"X=#\"8A!%8A-#(9#\"HM!#XE##HA&\"(A\"" + "\"8M!\"HA!!HI!#HQ%#HM&!XQ$$8U##XI#\"8Y!#XY##9%!#Y)&#HY%#9%!!X]$$9!&" + "$I%'#)%$%)9%$I!*$Y%!!)-!#Y1#$8](#)9#$I5,\"Y1%#I5%#95!\"I1$$95(%II&" + "$)A!\"I9!!)=!\"I=!\"Y5\"$9=%$IA#%9E\"#Y9#$9=+$)=$$)A$!Y=!$YI&#YA\"$Y=#" + "$IQ%%IE$&)I,$)I#%9I%#YM#\"II!#YI\"#)Q\"#9I!#YM\"$)I#%IQ)&)I,$9Y!%II#" + "#9M!#9M!%IA*%YA$%YQ!$)I#\"YM!#)=#\"IM!#9A!#YM#$9U$#IM\"%)I(%)M!#9E!" + "#)I&#)M##Y9#'YI*#II\"#9E!#Y=\"$)E#&9E#%YE+%YE+#9I!#9A!%IQ#%9A\"$)=!" + "#99!#Y1#!9=%#)9#%9=\"$)5!\"Y=\"\"Y=\"#I=%\"Y-\"!I%##)1#\"I1!%)=$#))&!(]#" + "\"Y1%!I-##9)$#Y-&$91(#Y))#Y)##H]\"$I)#%I!!$X]*#9)!\"X]\"!8U%$8Y\"$(Y$" + "\"8U!%HI%!XM!$(Q(\"8M##Y!'#(M&#(I'#(E$\"(U\"!(E!\"HE!!HI!$HA'!H=!\"8-!" + "$89#\"HA!#89%#(9#\"81!\"(1\"\"(-\"#(5#$8).$()(\"8%!#7U%\"8!!\"GY$\"7]!#GY&" + "\"GY\"\"WU##GQ&!GM#!GI#\"GM\"\"GI\"#7I%\"GE$!WA!\"'A%%'9#\"7=#$'A&\"'9#!W5\"" + "\"79&!W-\"!G1!!W)!\"G)%!'%##G%\"\"&Y#!VY\"!&]!\"6Y$!FU!!VU\"\"&Q##6]#!FM%" + "!FQ!!6Q$!6M$!6Q\"!6E\"\"W!&\"VM$!&I!!VM\"\"VQ##FQ)\"6Y#!W%\"\"7!\"#7)##'!%" + "\"'%\"\"'1#\"G%##G-)\"71(\"W1!\"G-%\"79$!W9\"!G9!\"W=##7A#$'E(!'I!\"GU\"\"G=%" + "\"W=#\"7=$!GE(\"WU##'U$#'I!#8%%$W](%8)(#'Y&!(!!\"']#\"(-#%'Y$#H-##X-'" + "\"X9#\"(5\"#X=#\"8)(\"X=##X5'#X=!\"8=$\"8A!!HE!$XE%!HA!\"8I!$8I)$HE*#8M$" + "#8Q2#8Y$$XQ*$HU&\"HM!$(]'\"(U\"#(]#\"H]!\"8]!$Y!!#9%!\"I!!#)1#\"9%$$))%" + "#9-!#(]!#))#\"8Q!$9A(\"I5!$99($I-##)I##YE&!I1&$99(#IE$\"I9!$I9\"\"I5!" + "\"IQ!\"IE$#9=$#9A!%IE$!YA!$)-$$II%$IE&$YA&$IQ\"$)I!\"IM!#YI#\"II$#9A!" + "\"I9!#YM#%9M)#9I#\"II!#9I!#IM\"$I=##)Y#$9I!#IE\"#IM+#YU)#Y=##9Q!#9M!" + "#9M!#9I!\"9U#$)Q'%)U'%)Q*$)A!$YU#%9M)#9Q!%IE##9M!#9E$$IQ&$)M#%YE$" + "#)M%#IM!!YM$$II##YM#\"IU!$)E#%)A!$)Q$$)I'$II##9I!$IE#$9A!$II&$IE%" + "$9A%#YA##IE!$YE*#9=!!)A!#9A'#9=!\"I9!%99#\"95#\")1%\"I-!!Y5!#Y%'$I5)" + "$(Y'#91$#9)!$9-%!)!!\"95##9)!\"8Y&%9-#$)!%%)%&\"Y!\"#(]!#(]#\"9!#\"H]$" + "$(M%#8M$#(M#$(Q(!XQ!#(Q#\"8U!\"9!##8M$!(=!#8E%\"XI\"#(I##(='\"XA\"\"8=#" + "\"8A#!(=!$(9\"\"X=\"$(=\"$(1(\"X%#!8-(#H-&!H%%$8%$\"8-!\"W]#\"8%!#7Q&\"W]#" + "#7Y#\"WY!&'E$#7U##'Q$\"7M!\"WQ#\"'A!#7M%!WE\"!WQ\"\"79\"#G=$\"GA%\"G)!!W9\"" + "\"GM$%7)'#'-&!'-!\"7!$!W-!\"'%#!FU!\"&U#!F]!!W!\"\"&U#\"&Q#!FU#\"FU!\"&I)" + "!FM!!6M\"!&]!!&=!!&M!#6M\"\"6]$$&Q'#6Y(!&U!\"&M#!F]!\"6Y#\"6Y$#'!'\"'1#" + "!G)!!')$!'-#\"G-%#G5'!G5#!GE!\"'=##G9\"\"W=%!GA%\"7A!!'M#\"WM!\"GA#\"GU\"" + "$GY*\"7Y!\"WY!#7Q\"#8!%\"7]!#']!!WY&\"7U!\"7U!$(-%\"X!##H)#$(!*#H9&$X-\"" + "#X-!#85\"#H)&\"X9#\"H5!#(='\"8E!!H9!$8A##(Q#$8M##XI&\"8=!!)!$#HI#!XQ!" + "$HU$\"(Y%\"XU\"!X]!#(U!$I1##I!&#)!&$))$#8]!$9%#'I%'\"I)$!I-##9)!$I9#" + "!Y)!!Y-!\"I1!\"I1!#))#$I5&\"I5!!I5#%I9#\"Y9%#)=&#Y9&\"II!\"I=!$I1&$YE#" + "$9I%')5*#9E!!YE!$IE&$IE%&YQ($IE#$YM#%)I/$9M!$YA$$IE##YM##YU\"%)U'" + "\"IM$$IQ)#II!%YM.#9Q!$)Y##IM!$IQ&$IU\"$)U##9Q!$IQ&#YQ##9Q!$)U#$)Q#" + "\"IU!$YQ##YQ#$9Q!\"II!$)M$')Q*$9I!$)M#$II%#YQ#'9I(#IU!$YY&\"Z!\"#9U!" + "#YQ#!YE!$)U#\"IU##9I!$YI$$9M$#9M!%IQ'$IM\"#YI#%)5!#9M!#II\"#YI#%9E)" + "#YE#\"IE!%9M)%9=*$99%#YI#\"YA\"$Y1!#Y=##99!#9=$\"9I&$9=%$Y5*#)9#\"Y=\"" + "%9E)#)1#&)5##I1%$)5*%Y)\"$9-(#X]&!Y)!#(Y&#I!\"$I)'$))!$9!%#I%\"\"8]!" + "\"X]\"\"I%!$I!##(U&\"HU!#(U#!XY$#8U$#9!$\"8E!\"(Y.#XI'$(I!#(A!#(M!\"XE#" + "#(A##8=$%(=)\"X9##X9!$(1&#(5#\"89!#(1$$()%\"()%#8)%%8%#\"H!\"\"8!!$'Y%" + "#7]%$(-#\"7Y!#(%$#7U##WU\"#7M%#'E+\"GE\"\"GE\"!GE!\"'E#\"'9!$'=&\"'9\"#'9+" + "\"'E#\"W5#\"'1'\"71&!71$\"&U#\"'-!\"&Y#\"W%$\"G%!!F]!\"F]#!&]#!FU!\"&U#!6Q'" + "!VQ$!VM\"\"VQ*!&Q!\"6M$\"&U#\"&I!\"&U#!G!!\"&]'!V]\"\"W!&!G!!!71\"!')!!')!" + "\"'-\"\"'-!\"'-#!'!%\"W1##GI#!'5!!GI!!'E!\"G=%!WE)\"7=$#7I!!WM\"#'M$\"'M\"" + "$7Y$\"GE#!X%$\"GY\"\"7]!\"8!!\"89!\"(!%#(%'\"H)\"\"8)#$X1&#X%$\"X1#\"(-($(1#" + "#X5!\"89##89%#85%!8=\"\"H5\"$HA!#8=$%8]#\"XE\"\"XI\"\"(I\"#XE!#(Q##HI%!HU!" + "\"HQ!\"8Y)!HM#\"8]!\"8U!\"X]\"$9%%%Y9!\"Y!\"$)%%$Y!'\"Y=\"$))!#Y-#$I-)\"I-!" + "$Y1*\"Y1\"\"95#$)1'\"I5$#95$#95$\"I9!#)9#\"I=!%)=(\"I9$#IE\"!Y-$#9A!#9I!" + "#I9\"#IE%\"I5!#)I#\"IM$$II&$9U$#)A#$IQ&&IM(%)M!%9E Q!#YQ#$YQ'%)Q!" + "%9Q($YY#%9Y\"&)Q(&IM$%)Y'!YU$#YM#%)U($9U($9U$%9Q($9U!&YY%%)Y$$9U$" + "\"IU'\"9M#%YE!#)]#!YQ!$YM##I]!&Y]$#)Y&\"YU$$)Y##II\"#9Q!%IU&\"9Y##IY!" + "&9M-#YQ&$Y]&$YQ'$YQ##9Q!\"YQ!#9U!#9Q!\"YQ\"$IM&$)A-#YI\"#9Q!$II%#IM$" + "\")A%\"YM\"#9I!$Y=!$9E\"$)5$#YA#%)9%!YA!#9=!#9A!#99!#)A#%IY*\"I9!\"Y9\"" + "!Y-!\"I9!&)=&!)1!!91+\"I1!#91$#I5\"#I-%$H]##9)!#))#\"I1!\"Y-\"$9%&\"I)!" + "$8U\"#(]#!(]!\"I%!#8U$\"8Y!#XU&#HE#$HQ&#HQ%#(Q##(M#$HI'#(I##(U##(E$" + "\"X=#$XA(\"8=##(9#\"(9%\"X5\"!H5#\"X5\"#89%#85$$(!(#8-*!G]#!X!$\"X%\"#8)%" + "\"X!#\"GY'!'U!\"7U!\"7U!!']#\"WQ#!WQ!$'U##7I!\"7E!!GE!#WA%\"'A*\"'A#!79\"" + "\"75(\"W9#\"G5%!W5$!G=%\"7-$#')'!G)!#7)&!G-%$7!#\"&Q#\"7%$\"FY%#FU\"#FA#" + "!&M!!&M!!VI$#&M#\"FQ!!&M!!G%!!6U$!FU!\"&Y#\"&]#\"'!\"!F]!!G!!!W)\"#W!!" + "\"'-##'1&!'1!!G9!!G5!\"7A!!GI!\"7A$\"7Q#\"7A$\"W9!#7Q%\"7Q!#'U$$'Q&\"GQ\"" + "!'M!\"7Y!\"7Y!\"7]$\"7]!\"'Y##'Y$!X%!\"X)-%$(9(#8-%#H9#!(I$#85%#(E$" + "#89$#H=%!HA##(I#\"XA%#(A#$89!\"(I\"\"HI$!(I)\"Y!#$8Q(#HQ&&HM*#(Q#!HM!" + "$(Y!!Y!'#)!##X]&\"9)#$9)\"#XU#!Y%$!Y)!$)1'!X]'$91%\"I-!$Y1!\")-\"\"9%#" + "\")5\"$I1)#IE%#Y-&$I=)#)9#\"Y5%#Y9#\"IE$%)A%&91$#IA!#YE\"#9E!#)E##9M!" + "\"II!#)I#\"9E##IM\"$YE*\"9I#%YQ'#I]!$)U##9Q!#9I!#I]!#9U!%)Q$%IY)#Y=\"" + "%IQ*%9Q($)Y#%I=#%)U'$)U#\"IY!$)Y##9U$#9U!%I]#'J!'$)Y#$9Y$$*%&$IY&" + "!YY!$)Q#$Z!##Z%)$I]%$YY##YY\"\"YM\"$IY&%YI!#IU\"\"IY!$)M$$9Y$\":!#'9]+" + "%9Y(&YU$#YI#')Q%$IU%$IU%$)U##J)!\"9E##9U#$J%%!YQ!$9E\"$IY\"$)I#\"9M#" + "\")I\"#9I!$YE U!$9A$$I]\"#99!#YI##9E!#IE!#YA#\"IE!#9A!#Y9##I9\"!)5!" + "\")E%#)9##Y=&$)1'#)5##)5##))#\"I1!\"Y1\"%)I!\"I-$\"I-$$)%'#9)$\"Y%#$))$" + "$Y%%$I)##X]!'I%*&(]&%HY$#8Y$#(Q#\"HM$#8U$#(]&\"H]!\"(=\"#XQ##(I#\"8Y#" + "$(A(!(A!#8A$\"H%!#X='#H=##(9!#X=$#H5&\"X-#!(9!\"H)\"$H-*\"8!!\"8A!\"8%!" + "!H!#\"(!#!GY#\"W]!#WY$\"7U#\"7Q!\"WU#\"7Q!\"WM#\"G9\"\"WY##7]%\"'I#!7A$!'9!" + "\"'=##'I$\"75$!G5!!71\"\"'-#\"'-#!'!!\"7-$!G!!#'!%\"VU#\"&]#!FE!!F]!\"&U!" + "!&I!!FM#!VE&\"6Y&\"&Q#\"6=(\"'!#!F]!\"&]##'%'#6]$!W%$!7)%!G)!\"G-%\"W1#" + "\"'1##'5\"\"75$!'9!!G1%!G=!\"'1#$79%!GE!\"WQ#!7E\"%GU&!GE&\"'=!#X)'\"7U#" + "\"GQ\"#'Y$\"WQ#\"8!!\"W]#\"X1#\"(%*\"()*\"8%!#81%$X-+#H!!%(=)!85\"#H=%#(=!" + "#XI'#8A$!HA#\"X=\"\"8E!\"XQ\"$HM*\"XQ%\"8A!#H]\"\"8Q##XQ#\"XE#\"8U!\"8Y!\"Y-\"" + "$H]&\"I-!#(Y!\")!##9)!#9%$\"9)&\")1\"#I)&$9)(\"Y1(#)9##))##91!!Y5!#I5\"" + "\"I9!!Y9!\"I9!!Y=!\"II!#Y=##YA##Y9#$IA#&I=(&IE$%)E(#IA!'9E+%II##99!" + "!)Q!#9M!#9=!'9M'$)M$#YQ#%II#$)Q$#IM\"#J!!%YE!$)Y##IY!#IQ!$9Y$$I]&" + "&IY.$:)!%YM.%)M($Z!&\"Z!\"%9])$:!$$I]&$J%&%)]($:-#&)Y!$:!$#I]!$:)!" + "#I]!$9]$%IY*#J)!#J)!%YU!$IQ%#IY!&*!$%*-'!I]#$9U$#Y]\"#YU\"\")M%\"I]'" + "$)Y##Y]\"#IY!#9U!#9Y#\"YY!$9]$')Y\"$)Y#\"YQ!#9I!#9U!\"IE$%)M!#IY!$IQ&" + "#9Q!#)Y&#YQ#%)M($9Y$%9I%$9E%#YI#\"YM\"!9I\"#IA\"%9E\"#Y=\"$)A!\"9E[!" + "#9A!&9=&%Y=!\"I=!\"IE!#Y5##I9\"\"I9!#Y=\"#I-%\"Y-\"#91$#9%$!)5!!Y)!\"I)!" + "\"8U!$Y-(!Y%!$)!$\"I!!\"H]!!Y!!#XY!&HY)#)!##8U$#8Q$!(Q!#XI##HQ%#HY%" + "#8I$#8M(\"XI\"#XA!!8E\"#(A!#85%#X5'\"89&\"85#!(5#%(1$\"(1##H5&$8!)!(5!" + "#(%$#85\"\"8-!\"WQ#\"7Q!#GU$\"X%\"\"WU##WU%\"WY#$'M!#'Y$#WQ'\"WM#!G=!\"'A#" + "#'I'!W=\"#G1$\"79&!71\"!W%$!W1&!'-!#')\"!79\"!W%\"\"'5#!W)(#F]'\"&Y!!FU!" + "!7!%!FY#\"VI&!FU##&Q#!6U\"\"6Y#!F]!!F]!!6]\"\"&]\"!G%!\"'5\"#G-)!'9%\"'%#" + "\"G1#\"75,!W9\"!G1!!W5\"!W5\"!GQ!!GE!#7Q#\"'Q##8%*\"7U!\"WQ#\"WU#\"GY\"!WM)" + "\"W]#!G]!#()$\"'Q\"#(%&$(%(#H))\"(1\"\"H-!!X)!\"HA\"\"85!\"85!\"XA#\"X=##(E$" + "\"X=#!HA!\"8A!\"HE!\"(I%#HE%%8M'#HQM$#(U#!)!!$)%!#(I##XY&#(]#&)%*" + "#8]$#91!$Y%!$I!$$I%'$Y)(!Y%!#I-\"#I-%#)9##I%%#)-#%I9.#)9##)A&$I9#" + "\"I=!\"I9!!YE!!Y9!$YU'#9M!$IE##9=!!IA&#YM&$)I$%)E!%)A$$9A%$9M!%)Q$" + "%)M(%YQ$!YU!#YM)$YI*$)] Q!#IY!#IU!$Y]&$9U!$)]#%*%'#IY!$IY\"#:!#" + "#Z!\"#Y]\"#I]!$Z!\"%)]$$9Y$$*%##J%!$Y]'$:!$%J)*&*%!$J%&&*!($9U($I]%" + "$:%$%*-'#YY\"#J%!$*!#$9Q!#J%!\"YQ!\"J%!$:-$#IY!%*1##J!!!*!!\"J!!$J!%" + "%)](#9]$#I]!$9U$%)Q!!YQ!#J)$$YM#$)Y#$9U$$IY\"%)Y!#9M!&)](#9I!$)U#" + "$9M!&)U$#)U##9Q#$*%##J%!\")M,$IU%$)M##YM&$YI&\")E\"\"II$$YE##YE#%)-(" + "%)E$#IA!&9M&\"I1!\"YM\"\"I=!\"99#!)9*#9-!\"I1!#95!\"I9!#))##I)_$\"I)*" + "#(Y!!Y-!!)-!#I%##I%##I!#%)1(\"I)!$8]\"#8Q!#(U#!(U!!8U(!XQ!\"8Q!!HE#" + "\"8E!$HI$\"8I!\"XE(#XY#!XA!#H5&#(I##(5$!(9!#(5$$85&#H)#$X1#$8-&\"X-\"" + "#85'!WQ'\"8!!\"X!#\"WY!#GY!\"X!#\"(%%#']$#'U'\"WM##WA'\"WM!!GQ%#'I$!GE#" + "$'A&\"7A$\"'=!!W%\"!G=!!WA!#W=%!G1!\"7%$!'E%!G)!!FY!!F]!\"6Y$!F]!\"6Q$" + "!&M'!FM!!FY!\"&U#\"&U#\"&Y\"!FU!!V]$!'!!#&]'!'%##7-#\"75&!G-!#7)#!G1!" + "#'5&!G-!\"GE#!WA!#7A(!GM!\"7I##GM&$'Y(\"WA!\"WQ%!GQ!!WQ$#7Y%!W]!\"7]!" + "!'U!#W]%\"X-##85%#()$\"85!\"(%#\"8!!#(1!$(9(!H-!\"89!\"X)#$(E'\"(=\"#XA'" + "\"8A#\"X=#\"HE!#XY#\"XM\"\"H9!#(I#\"(I%\"8U!#9!!#8I\"$XU$\"(]\"\"Y%##XI!%)))" + "#9)!$)-$$Y-$\"I-!\"Y%##)1##Y5##9=!\"I5!\"Y1\"!Y-$\")5\"$I1&#Y)&$9I%\"I9$" + "#)5##YI##99!#)E##IE\"#IE%!YI!$9A$#9E!$9M!\"YM\"#9U!$)A$#YQ##9A!#9U!" + "$9I$#)U#$9]!#II\"$99%#9]##J!!%9Q)&9Y\"$Y]'$9]$\"I]#$:!$%YI!#9U!#Z)\"" + "\"9]\"$J!%$JA!#J!!#YY\"#Z!%$:!!\"Z%$\"YY$!Z-!$Z)##J-!$IY&#J!!%)]!%Y]'" + "$J!&$*%##J1!%*!#%J-%!*%!%)I%!*-$$I]\"#Y]\"#9U!$*-#\"J%!#J)!\"YY\"$*!#" + "$*!#$*%##J!!!YY!#J!!!YQ!$*%#$J!%$)]##J!$#J)!#)]#$)]#&:!&#IU!#YY\"" + "%Z%+%9U\"$9U$#IU\"#IM%\"J%$#9Q#&II($9]'$9Q!$YM#$YU#$II%#9Q!#YE\"#9I!" + "$)=$$)A!$II&#)A&$YA$$IA\"\"I=!$YE&\"I1!#))##)9#\"))\"\"I5!\"Y-\"\"XY\"!Y-!" + "\"91##)-##))#\"Y-\"#)5##Y)##(Y!#9!!&Y!.\"X]\"\"I!!\"HY!#8]'$(Y'#XI'!8U%" + "#XQ&\"8Q!!H]!\"8Q!&(M!#H5#!HE!!8M%\"HA!#H9&\"H=\"#81%#X5'#(5!\"X-\"#8-\"" + "$(-(\"8%!$(5&#H%&!H!#\"8!!$GY#$(!%#'U$\"WU#\"GA#\"GQ\"\"7M!#7M%\"7]!#7I%" + "!WU\"#'5'\"'E#!G=!\"'9\"#'9$\"'5#\"7-$#71%\"G5$\"'-!!G)!!G%!\"G%#\"FM#!FY!" + "\"'!##&Q$#&U'!FU!!&]!\"&Y\"!F]!!G!!\"'!#\"'-#!')#\"W)\"#7)#!G1#\"'1\"!G=!" + "!W9\"\"7M#\"'=#\"'Q#\"W=%#GM(\"GI#\"'E#\"WQ#!'Q!#'Q$!'E%\"7U!!'Y#\"W]#\"W]!" + "\"WU#!X%$\"8%!#X%'#81%%(-'#X1&\"81!$(5(%(=&#(=!\"H9!#(=##HA\"\"XQ\"%8=$" + "\"8E!!HM!\"8E!!89\"#(M#!XM!#(U##(Q#\"XU\"%8Y&%)!+!HY!#(E$$XU%%)!##Y1#" + "#)%#\"Y)\"\"X]\"!)1!#I5%$)9$\"Y1\"#Y9#!Y5!#YE%#Y5##I=%$9=%\"IM!#YQ)$)A#" + "#YE#%9Q)%9A\"!YA'#YI##YQ%$)U#$YA$#YM\"#YQ)%)=!'9M+$9Y!#9U!#IY!#)Y#" + "\"IM!!IY#%YU*#YY\"$*%'\"J!!#)]##I]!%9])#9Q!$*%#$Z!#$:!$'Z!%!J!##Z!\"" + "#Z%&#J%!#Z%\"#J%!!Z%!%IM&$J1%#J!$\"J%!$*)#%:1!$J)\"#J1!$Z!\"#Z!\"$Z!#" + "#:1##I]!%Z)##J)!#Z)\"\"J!!%J)\"%Z-#$J%!#Z-\"$:-$#*5\"$:%$#J-!#I]!$*!'" + "%*%##J5!$:%$$:%$$*1#\"Z-!#)]##Z!\"$)]#$*%#$9U!$*5#$Z%&$)]#$)Y#$)]#" + "$I]%$)]#\"YU\"$9Y!$I]&%9Q(%*!!\"IQ!$IE%$9Q!%9Q($Z%#$9Q%%IQ##9I!#9I#" + "%II*#9=!$)I!$95%$9U!#Y5#$IA%%99##Y=#%9A#!9I)\"Y1\"$Y5*\"9M#\"I5!\")5%" + "#I5\"$I-'#)5#\"Y-\"#Y)&\"I%%%9!&$I) !!#Y!#&(Q'\"I!!#HU%#8U$#(M##8M$" + "\"8Q!#8U$#XI'\"XM\"#(I#!HI!\"XA#\"XE\"!HE!#(A$#(I#\"XA#!(9'#X5Q\"\"(1#" + "\"X1#!8-\"#H)%#H)%%'U\"!GI!#7Y\"\"G]\"\"W]#\"'Y%\"WU##7Q&!WE$\"7U#\"7E!$'M&" + "$7M&\"'M#\"'9\"!7A$#'5&\"G9\"\"71&\"W5+\"'1!!'-!\"G-\"!G-#!G)'\"'%!\"7%$#VY$" + "!&Q!\"W%#\"&U%\"F])!VU\"\"F]%!V]&$FU)!G%%#7)%!W1\"!G)!\"71#!G%'!W5\"\"G=#" + "\"G-$\"'E!!G9!\"'A#!WA\"\"'A!#GM$$'M!\"8%!#7Q(#GU&!GY!#'Y$!WU$\"7Q&$H!\"" + "#(%$$X%#!X!!\"8)!!8-%#(5#\"89!!(5!\"X5##XI##(=#\"H=!#8A!$(=%\"XE#!(9#" + "\"XY%#(U##XM!\"X]\"$9!($(]!\"8M!\"HM!!HM#\")!##(]#\"I!!#Y%$$I!'!Y!!#I!%" + "\"I)!\"9-#$Y1!#I)\"\")=%$I1#\"Y5\"$)9!#95$%I-$#9A$#Y=#\"IE!$)I#\"I=!$9M$" + "\"Y=\"%)I%$9Q!#9Q!')I*\"YQ$\"9M&&)I\"#YQ\"\")Q\"$9I\"#I]!%)E$$YY#$)U#%)Y!" + "$)Y#%)I%#IY!$)]#%I]*$I]%$J%!$9]$#Z!\"#Y]\"#J)!$Z%&#Z%\"#Z)\"#YU\"%:)%" + "%*-#%:)($*-*#Z!\"#Z)\"$*)#!:)\"#J-!#Z-\"#Z-\"%*-'$:-!\"Z1!$:-!#Z1\"\"J-!" + "&*-'#*)\"%Z5-#J1!$:-#$:-!$*%##Z5\"$Z1&#J!!#J%!%Z-#!*-!\"*)%#Z1\"&:%%" + "%*)'!:-%#J)!&:5)!Z)!$Z%&#J)!#J!!%:%!#J%!#J=!#J%!$:!!#:5#$Z%&$:!$" + "$*%#$J!%#9U!#9]$$*!##IQ\"\"9I&$YU'%IY&#)A##IQ!$9]$%)U(#YM#&)]($)U#" + "#9U!%9=)\"I-!#YI#\"YQ\"$IE#!YE!#YI&\"9I#%YQ!#Y=#\")=\"\"Y=\"$)9!#)9#!)1!" + "#)-#$I9##I1%#)-##I-%#))#\"Y)\"\"I)!$9%%$I5&#I!%#(]##XQ'!Y%!!9-\"#X]&" + "\"XM\"#X]&$8I#%8M*#(M#\"HY!%(I#\"89#$8E&#(A#$(E$#H9#!H=+%HA##X1'$X5+" + "!H1#$(-%#GY#\"8)!#X-'\"8!!\"X!#\"7]!!G]!\"7Q!\"WU#\"GY\"\"7U$!'Q##7Q%%7I(" + "!GM#\"WA#\"'Q\"\"7A##'9$\"7=!!GA!\"'9!\"'-!\"79$\"GA%\"71$\"6]$#&]\"#7!&\"&Y#" + "!FE!\"&M#!6Y\"#&Y#!F]!!F]!\"7!$!VQ\"!G!!#7)'\"'-#\"G1\"!'5$!G5#!G9!!WQ$" + "\"'=#\"GA##'9'\"GU\"\"GU$\"'I!!'M&\"'A!!WQ!#7U%\"W]##8!%!7U\"\"WU#\"X)#\"H-\"" + "\"8!!!H-!\"(!##(5#\"X-##(5$#H5&\"HE!#(5&$HE*#8Q$#(I#\"8A!\"8E#!(A#$(U!" + "#HM&%(Q##(Q#\"8M##(U##(U#\"Y%#\"XE\"#XY&$))!#9%!#(U!!9)\"#XQ#$))$#9%$" + "\"I1!\"8]#$Y%'$)1$#95$#I5\"$I=&#Y9#\"IE!\"9A#%)M!$Y=#%)A(#9E!$9E%#9I!" + "!YE!#II!#9M!$YU M!$IQ\"$)U#$IQ%%*!$$IY%$IQ&$:!!%)Y'\"IY$#Y]\"!9]&" + "!9U\"$9U!#J!!%:!$$J!&#Z!\"%:%!\"IY$&J%&$J))%*5#$*%##Z1\"%Z)'$Z1&\"Z)\"" + "#Z%\"!:-)#J-!')]&$:%$#J%!!:1\"#Z)\"#J-!!Z-!'J1*$*)#$Z1&$:!!$Z-#&:1%" + "$J5!$:1##J5!\"*5\"%Z1&$:1!#J1!#J-$&:--$:1$#J!!&*-!\"J!!!Z-!%J-\"#Z)\"" + "%:%!#J9!%J-\"#Z-\"#Z!\"$:%$#Z)\"#YY\"$I]\"$:1##J)!$:)!#Z%\"!*!!#Z%\"$)U'" + "$YU#%)Q$#Z!\"#Z%&$J%%$)]##Y]\"$9Y$$)M##:!#$*!#%)Y+&)I\"#I]!%*)$#Y=\"" + "%)Q!$9Y$$)A#$*)#$)Q##YI##IQ%#YE#$)E$%9M%$YE'#YE\"#9-!\"IA!$95(#Y5#" + "$)9!!Y1!\"I9!\"Y1\"#)=#!Y=!#)-##)%$$))$%9%*$)!!#Y-##I!%#)%##(]#$8U\"" + "&)%*#XQ!\"8Y!\"(Q%#I)%!H]!#XE&\"I!!#XE&\"8E!#89!#(I$#89%#(A##(9!#XA!" + "#(5!\"X)#\"81!\"X-#!H1!#H%(\"X)#$X5%\"H%!$'U#\"8!!!GY!!X%'\"GY\"$'U#\"7U!" + "#WI%\"7I!\"GI#\"'9#\"GE%!G9!\"G=%\"'5\"\"W9(!G1!\"G1%\"7-$#'-%#'!'#W)##'!'" + "!G)!!&Q!\"F]#\"&U!\"7!\"\"6](\"'!#!W)\"!G1!\"'!!!'5#!71\"\"'5!!G9!\"G9\"#'-'" + "#G))!'=!\"GA$\"7Q&#WE%\"WM#\"WQ##7E(\"WU!\"7U!#G]!!WQ$\"(!#\"H!!#(!$#G]!" + "\"8!!\"8M!\"X1#\"85+!X=&\"X=#\"X5\"$H9$\"XE\"\"XI\"#(5$#(E##XM$\"HI!$(I%#8M$" + "#8E$#)!#\"(I\"\"8Q#$(Y(!HY#\"HY$#X]##)!'$XU!$8]\"!Y)!#I%\"#I)%#)-#$)1!" + "#Y1##I5%$)5'\"I5$!9E\"#)5#\"Y-($)5!$9=\"#)M#\"9=#$YE&&9A-%YE!!IE)#9A!" + "#IM\"$9E\"#YA##YQ\"#YE#%YM$$)U#$)U#$9U!#IY!#YM%$:%$%Y]-#I]!%Y]#%YU(" + "$)]#&*!!%:!!%:-(#J)!#I]!'*-!#Z9\"$:)$$J1%&J-'%J%&$9]!#J1!&*-+$*%#" + "#Z1%$:)$$:1##J1!$J1!\"Z1!$Z=&#:1##Z1\"%J1\"$J5%#J1!#J9!$:E##Z5\"%*5'" + "#J1!$*5\"%Z5&!:5\"#J5!#J5!#*9\"$:5#%*5##J-!!ZI!%:5(#J9!$Z1\"\"J1##Z-\"" + "#J1!$Z1\"#J%!%*1##Z5\"\"J1!#Z-\"$:-!#J-!$*-'#Z5\"#Z-\"$*-#%:)!#I]!$Z%\"" + "\"J)!#J-!$J5!&Z)+#:-#$J-\"\"J%!':-*$)]##YQ\"#J!!\"YY$$IY%$*!##9U!%IQ'" + "%9Q)#9Q!%I9!#YQ##IE(!YY$#9I!&)I,$9M!#YE\"!YI!#9E!%I1'&)E&#I=!#Y=#" + "!I9)#95$\")5\"%9-'#Y9#$9-%#)5#\"I-!#)-##))#!Y-$%)%)%I%!#I-\"\"I!!\"Y1%" + "\"XU\"\"HQ!$9!#\"HU!!8U\"#8U$#(U#\"XM\"!(E!#(I#$8E)#HE#\"HE!\"85!#H=\"\"X9#" + "!()!\"X5\"\"8)!!8-\"#H-#\"81!#8)%\"X%\"\"GY\"\"7]!\"8%##'Y$\"'Y#!W]!\"W]#\"WQ#" + "\"WQ##GQ!!GE#\"G=\"!7Y%\"GE%\"W=#\"'9\"#W1%!W9&\"G9%#'1&!W5\"\"7%\"#'!'\"G)%" + "!FI!!VY\"!G!!\"&Y!!W!$!G%!!G)!!'9#\"G-%\"G1#!W1\"!W5$!W9!\"'I!!G1!#79'" + "\"WA%\"'E##GI&#'A$\"7M!\"GQ\"#'Q$\"WU#\"WY##7],#(!$#X!!#8!\"#(!$\"8)!#(9!" + "\"8)!\"X-\"\"8-!\"(5%#X-$\"X-\"$HA$$H-$#8A%!8=\"\"(=(#HM)#8Q$\"X]\"#XU##(Q!" + "#(Q##(]##XY#\"8]!$XI%$(]'#H]%$X]$'9%/#I!#\"I)!\"I)!!95\"#9-!$)1'\"I5!" + "!Y9!#95$$9)%$99\"!Y1$\"YE\"$)I$$95\"$)A$$YA$$)E#&9E##9I$$9Q!#9M!%)E(" + "#YQ\"&)Y,%)Q$$YY&$IU%%)I($IY%!YY!$IY(%I]*$IY)$I]\"$I]\"\"9Q#$*!#&*)!" + "%J%\"$:%$%J)\"$J)%%*5'%:%!#Z%\"#J)!#J5!$:-#!*-!#Z-\"$*5\"%:1)#JA!\"J1!" + "'J-'%J9\"#JA!#J9!$J)%$J5!#)]#%:5!$*A#%Z=#$J5!\"Z5!%J9)$JE%#JA!#J9!" + "$*=##*9\"\"Z%\"#Z9\"\"*1\"#J9!\"Z9!%*=#\"*1\"#JA!%:E(&*9+\"Z5!$:)!\"J%!%:1!" + "!:-\"#J1!!9Y%#J)!#Z5!#Z9!!Z!!#Z%\"$J1($*5##Z!\"\"Z1!!*-%%:)!#J-%!:-\"" + "%Z5#%*)##J)!!Z)!#J-!#Z-\"#J%!$J%)#I]!#Z!\"':)&%J))$I]\"$Z!##9Y'$)Y#" + "#9M!#YM\"#9U!#I]!#IQ+$9M%#)Q\"%)Q!$)I##IE!$II##9Q!!IA)%IE$!)A!&)-#" + "#Y9#!)=!!)1$\"I-!!)1!#)-#\"Y5\"$Y5$\"Y1\"#)-#%)!\"#Y)&$Y%+$)9!\"I%!#9)!" + "\"I)!\"8Y!$(]$#8]!#(I$#8]$#HU%\"HQ!#(M!\"8M##HI%\"XE\"!HA!\"HE!#HE\"%8=%" + "\"85!!H=!!(5!#85\"$H1*#H-#$(-##81\"\"H!\"$H%(\"8)!#(!$\"7]!$H!*\"8!!\"7U!" + "#GM&#WU'#8%$!GI!\"GI\"\"'E!!7A\"\"GA.\"G-'\"'9\"\"G9\"$79$\"'=\"\"71$\"79#\"7!&" + "\"&Y!\"&Y#!&U!\"W!(\"&Y!\"'%#!'1!!W-!$'-(\"G)'\"G9$!79\"!W=\"\"7I$#'A%\"'A#" + "!GA!\"'9!#7I%\"7Q!\"GI#$GQ\"%'Y'$'Q!$7Y'\"GQ\"$7]$#W]%!H1!\"8%!#(%$\"(-\"" + "#8-%#(5!\"X5#\"85!\"8=!\"X=##(9!\"XA#\"XE\"\"89!\"(I\"\"8A!#(I##HM%!XU$$(U%" + "\"8Q!$I!'#HU%#(U#\"I!!$(U'&)5&\"H]!$)!!!Y)!\"9-##I-%$9-+#9-!\"I-!!Y9$" + "#)5##99$$99%#)1##)A##9A!$IA&\")E\"%IE*#9M!$IU\"#YM#$YM&$YU'$9Q%#99!" + "$)Q$#9Q!$IE&%9U%#)Y\"%)U!%IY'!YM!$9]!$*!#%:)($*1#$*1#$*%#%:%(#J1!" + "$Z%##J)!#Z)&%:-!%YY$#Z-\"%:-!%*='!Z5!%*5'\":5\"%:5+(*9!#J5!#J)!#J1!" + "$*A&#JA!#J9!#Z9\"$JA!#Z5\"':1\"\"JI$$Z9\"!*9$$*M\"#ZA%\":E\"#ZA\"$J%&$J=%" + "$:=$&*E(#J=!\"Z=!#J9%\"Z=!&:=,#J9%$ZA\"\"ZU!#Z9\"%JM)\":5*$J9!%:=!$JA!" + "$J9!%:5(\":5\"!*%!%ZM\"#J5!$J5!#:5##J5!$Z5\"#Z-\"#J1!\"J1!!Z9!!*5!\"Z%!" + "#Z-\"#J1%\"Z-!#J-!#Z)\"&Z%!$IU\"$J)\"$J-!%*)'#Z%\"$J!&#*!&$)U#%9Y%#I]!" + "$)]#\"IY!!)Y!#9Q!$9]$%)U!%IQ##YE#$)E#$IM\"\"IM!#9M$$)9!$)E#\"9E#$IA#" + "#IA!#YE#$I=c$#9)$#)9)#I-(\"Y5\"%91&\"Y=+\"I-!\"I!!#9%%\"Y!#$Y%$#))#" + "$I)&\"H]!\"8]!$)%!!HQ!\"8Q!#(]##(Q#\"HQ!#(A!\"X=#\"8I!#HI%#8E%$(A($8A)" + "\"8A!\"X1#$H5*#(1$\"81!#81%#81\"\"H)%#H)##8%%$H%'#H!&#H!$#X%'\"GM\"\"WU!" + "#WQ'\"GQ\"\"WQ%#7E%!'Q#\"GI\"#7A%!'A!#'E'!G%!\"WM&\"'-\"\"W5%\"'1#\"'1'!W-!" + "\"'!#\"V]&\"G%\"!W)\"\"7)$\"7%(\"W-(\"71#!V]\"!G-#\"75(#W9\"#7=&\"7=$\"7A$!G9!" + "!GI!#7M%#WM'\"WU#\"WQ#\"7Y$#7Y%\"7Y!#'Q\"$WU!%!H!!\"8)!#85%$8-!\"85!" + "\"81!\"X5\"\"85!!(9!#81\"\"XA#$H9%!HA&\"8E!$XI%#(I!#(M&!Y!$!HQ&\"(Q%!HE&" + "!HY!$8Y\"\"8]!\"Y%#$)1!#9%%#I!#\"I%!#))#\")-(#Y1##)1##)-#$I5#\"Y1\"\"Y%\"" + "%)9(\"Y=\"#9M$$)A$#I=!#9A!#YE##IE$$YI'%99)#IE!$9E$#9Q$%)Q!$)I!$YI#" + "%YU*#J!!$)Y##9]$$IY&!YM!%YU#\"Y]$%Z5\"\"Z!%\"J!!&J)*#Z)\"#J1!#Z)\"$*)#" + "$Z1&#J)!#J-!\"*-\"\"J)!%*1#$:!!#*9\"$*5#&:9($J5!$:E#$J5!#Z)\"$*9##ZA!" + "#*=\"#ZE\"$J9!#J=!#JA!#JA!$Z=%#ZI\"%*9'%:=$$:9#$J=!$*A#$ZA&&Z5#&:E!" + "%*A'!:A\"$JE$$JI$$*A#(:9.%ZQ%$JQ!&*=($JA$&Z=.\"Z9!#J9!#Z=\"#Z=\"#Z9\"" + "#Z=\"%ZE\"#JA!$J-\"$*=#%:=($*5\"#J=!#J1(#JE!#J=!#*9\"#Z5!$:5$#ZA!\"Z-!" + "$:9#\"J1!#:-##JE!#J1!#*-\"%J))%:)!$IQ&$J1\"%*1+%J!\"#J%$%:!\"$9Y$$IY%" + "\")Q\"$9]!$Z%\"#)Y-$)Y#$YM'$)]#$9Q$$IU\"#YQ#$)Q$\"J)!#9Q!#9A!$)I$$IA&" + "$I9#$9=%$I=#$)9$!I5#$9=%#9-$%)A\"\"I5!#Y5&%)1(#9)$\"I-!\"9-##H]\"\"I!!" + "#9)!#)-##I!\"#XY!%(M)#8Y!!8U\"#(]#\"9!#\"XQ\"%XE##8M$#(M##XM!!HI&$8=(" + "!HA!\"X=#\"8=##(5#!(9$#H5&$(%(\"WY!#X-$#(-$\"X)#!H%!!H!!$'Y!\"8!!\"7Y!" + "#'E$\"WU!#']$#7I##WM\"\"7Q!\"WI#\"'E#\"7I)!G=(\"W9!\"G5%\"79&\"WI#\"')\"!G1!" + "!6]\"\"6]&\"'%#!7!\"#'))\"W-%*\"'1!\"'5##W1*!W9!!W=!\"GA%\"'9\"\"GE\"!GM!" + "$'Y&\"WY#\"GI#$'M#\"7U!\"WY%$GM#\"'Y%#GY$\"WY#\"7]##X=$!(%!#()!\"81!#(1#" + "#H-##H5#!HA&\"8E!\"X=##(A##XE!%8E$!(E!\"XI\"!XI!#(I$\"HQ!#XU!#(I#%(Y\"" + "!HU!#H]\"\"Y!##9-!\")!#&)%'#9)'!Y)$#9-!#9-!$9-%$Y=*#91$%I9$$95\"\"I9!" + "#9=$#Y=#%I9.$9E$\"IM!#YQ\"#YI##9=!$9M!#YM#%IQ*$YU##YI#$YY'$)U#$YY'" + "$)Y##YY\"#I]!#YE#&:!*\"J!$$Z!'$*%##J%!%J-\"$J-\"\"Z)%#*%#$J-%#*-\"$J-\"" + "$*)#$:-#\"J1!#Z5\"$J9%#Z)\"%J5)#J5!#J9!&:9%#:5#\"*=\"%J1\"#J9!$JA!!:E\"" + "$Z1&#Z=\"!Z%!#Z5\"$JE!&JA-#JA!\"ZI!#JA!#JA!$ZA\"$*=)#Z=\"%*I#$*Q\"%JE(" + "!ZM$#ZI\"$ZI&\"ZE!#*A\"#ZQ!%ZE\"\"ZM!#ZI\"#*A\"#J=!$ZM!#ZA!#ZA!$JQ!$JQ%" + "#JA!#J=!$*A##ZA!#J5!&JE)#J=!$JA!#ZE\"#J1!#J9!$:!$%:E$#J9!\"Z9!#Z5!" + "#Z-\"!:%\"%:9!$J1\"\"Z1!$*!##Z-\"!:-%#Z-\"$:-!%Z-&&:))$:)$$:%$%*!($9]$" + "#)]\"&J!#%J!&$J-%$*)#$9Y!$9Y$%YM!$)U##YU\"\")Q\"!9M%#9M!$)]#%IA'#9M-" + "#YM\"\"9I#$YU#%)=(#9E!#Y=&\"9=##)A##9A!!9-\"#)5#\"I!!!91%\"I-!$9E%!Y)$" + "&)9\"#HQ\"#I!#$9!##)!##(M##9!*$(I'#I-%$(M%\"XU\"#(U&!(=!\"HQ!!8E%$(E%" + "!HM#!HI#\"X=\"\"X=\"\"(!##85%$8=##(=!#H-#!(9!\"H)\"\"X!!#(%$!X!$$H!%\"W]#" + "\"7U!\"WY!!GU!\"7Y!\"WU#!WE$\"'I!\"GE\"!GQ%\"G1$!GA!!'A$\"7M!!G)#\"W1(!G1!" + "\"'!%!6]%\"'%#!W)\"\"G5\"!G-#!W-!#75%#'5%\"G5%!W=$\"GA%\"'E#!'A$#'E$\"7]!" + "!GM#!W]\"#'E$\"WU##WY\"#W]'#7M#\"X%#$(%(#X1&!X)\"#H)#\"89!$H1'\"X)#!HA!" + "#(9$\"8=!$8=##8-%#H=%\"XE\"\"8E!#HI\"\"HI!$XM+$8Q)\"HI!#HU%#HU%$(Y'#I)%" + "\"I!!#I)\"#9)!\"I)!#9!!$9)+\"I1!#Y%$#Y)'#Y)#\"Y5\"#Y%'#Y5#\"I9!\")A%$9=!" + "$)E#$)I!\"9E#$)A#$)A!%IA*%YI!#9=!#IE\"#IY!!YU!$9M!$*!##YY\"#Z%\"#9Q!" + "\"IY!$YU#$:!$$*!##)U#\"Z%!%I]*$*)##J-!$J%!!J-#\"Z9!%JA%$9]!#Z!\"$J1!" + "#J1!#Z1\"&JE)%*9#%*I'#JA!$:9$!Z-!&J9\"#Z9\"#JI!#J=!$:E$#J5!\"ZA!#*A\"" + "#ZA\"#ZQ!#JA!$:)$\"J1!#ZI\"#JE!$JE!$ZE&#JE!#JE$\"ZE!$JI$':E%$*I\"%:U'" + "$ZI&%*I#\"*Q\"#*]\"%:I$%*Q'$J=!#ZI\"#JM!%JE)$ZE\"#JE!\"ZE!$:Q##JA!\"ZI!" + "#*M\"#JE!$ZE\"%*M\"#J=!%:A(#JE!#*=\"&:E!$*=\"$:=##JA!#Z=\"%*9&#JE!#*9\"" + "!Z9!!ZA!#J5!$Z-&\"ZE!&*)(\":1##J9!!:9\"%:1!#Z)\"$Z!\"#*-\"%:)!#J1!!YU!" + "#J%!#J%!\"J!!$Z!'$*%#%9U)$Y] ]##Y]\"#IY$\"IU#$IU%#IQ$#IU!#)Q#))U," + "$9I\"%YI+$9A$\"I5!\"IA!#II!#9A!#)=##)A#\"YA\"\"I9!$9)(\"I5!\"Y1\"%Y=,!9-\"" + "!Y9!#HQ%#91!#Y%##Y-&\"9%#$(U$#X]##X]&#(Q#!8Q\"$8Q\"\"HQ!\"XQ\"$XI+\"HM!" + "\"XE%\"89!!8E%\"X1#$8E&#H9&\"HI!\"(5\"#X1'#(=!!X-!\"8)!$85)\"H%!\"H!'!()!" + "$7M$\"W]##7U%#(%&\"WQ!$WQ+#GM&#'E$#GE&\"'A#!7A$\"GA#!GA!!75'\"G1)\"'E%" + "!G)!#G%\"#W%#\"71#!G-!\"71$\"W5#\"'5\"\"'I)\"'E#\"WA!!G5!!GM!\"'E!#7A!!GQ!" + "\"WU!\"GU\"\"7U#!7]$!GM%\"8!$\"GU\"\"X)%#X%$!H)#$89(#HE\"\"X5\"#85'\"X5#\"89!" + "\"(1##8I$\"XA\"\"(I%$8M#\"(A\"#HM##(M#!XM$#(A$\"8U!#95!#I%%!HY!\"X]\"#XY&" + "$HQ##I!\"'9%%#I%\"#9-!#91!!Y)!$)1'!I=##)5##95!%9A&#)5#$Y9'%9E\"\"I=!" + "\"YU$\"IE$#)9#$9U$#Y9##9Q'$IM&$IQ\"#9Q!#9U!%IY##9U!$)Y#\"IY!$Y]'#*!#" + "\"J%!$*!#%)]!$:!'(:%+\"Z)!#J)!#J)!$9Y!$J-%$J-!%J%\"$J5%#J1!$:5##J5!" + "\"Z9%\"ZE!&:9,$J5%$J=!!Z9!$*9\"\"ZE!$*9\"$:I$#ZA\"#ZI\"#ZA\"$ZE%$ZE&$*E\"" + "%:E!#J=!!:E&\"Z=!\"ZI!#JI!$ZI%$:I##ZM!#JE!\"Z]$&:Y,#:A#$ZI!$JI!#JA!" + "#JE!$Z9&!ZA!!*Q!!ZI!%*9&#ZU!#ZQ!#:A##ZE!&*E($*9##:U\"#ZM!%:I'&JI!" + "$JE!':E1#:U#$*E\"'*U#\"Z5%#JM!$J=!#JE!#J=!#J=!\"Z=!$ZI\"#JA!#:=&\"Z-!" + "\"ZE!$*I\"#JE!#J5!#Z9!#Z9\"$J5%#Z5\"#J!!$JI$#J1!\"*1%#J-!#J-!$*-#!:-\"" + "#J1!#J%!#J%!&:-)#J!!$*!##J!!$9Q!$I]&#Y]\"\"IY!%)Y!#)]#$)Y##9Q!$YQ#" + "$)U#$)I#$9A$#IU\"#YE\"$9I!#Y=#&)A,$)A$#)M#\"IE!\")=\"!Y)!%Y1+\"I)!\")9\"" + "\"I-!#Y5&$)-$\"8U!#9!!#(Q!%91)!)!!$(]$\"(M\"#I!)\"HU$$HM*#(E$\"8]!!8M\"" + "!XI!\"8Q!%8E'#8I$%XE#\"81!\"85!\"89$\"X)\"!(1!$X5%#85%!H9(\"H-\"#X%'!G]!" + "%']'#W]'!GU#$'Y(#7Q%\"7Q!\"'Q#\"7M!#'I%#7I%\"GA$\"GE%!W=$!G=#!'-#\"G5%" + "!W%\"!W%\"!7)\"!G)#\"W5%#'5$#G5&!'=!!G9!\"'=#!GI!\"'E##'A$\"'E!\"7U!#7A#" + "\"7Q!!GU!\"7Y!$GE#\"WY##GU&!G]!\"G]\"#(%$\"8)#$7])#(I$\"81!#8A\"#(A#$H9*" + "#X-'!H=!#8A%#85\"!HA!!8I\"$8Q(\"(M\"\"8Q!$HM)\"XU\"#XY#\"XY\"#(]#\"8]!$I)'" + "%Y! %!\")!##))#\"I-!\"Y5\"$I)#\"I5!$I-&#)=##Y9&#IQ$$Y9$!YA!#9E!#YQ#" + "$IE&$)E$#IE\"#9U!#9M!&)Q(&9M.$)U#$IQ&$9Y$%)]!&9Y&%)]!$I]%%:!$%Z%*" + "$*)#$:1!#J1!#J)!&J-'\"I]!%J5%'Z-('*9%#J1!$:1#%:=!#Z=!\"J5##J9!#Z-\"" + "\"*9\"#*5\"#ZE\"#*=\"%*9&%JA%&:A!#JI!#Z9!%:A!#JM!#ZE!%ZE*$ZE\"#ZE\"%*I#" + "#*I\"$:I#&:E$%JQ!':9\"#JM!$:E#%*M&#JM!#JA!%JI)#Z]!$J]$%*Q*$JM$#JA!" + "\"ZM!#ZM!(:M*#:M\"$:M$#:I#%JI!#ZY!#JM!#JM!'JI&#JM!$ZI&#ZE\"$JI$#JM!" + "#JM!#JI!$JI!#JE!%JY(%*E'$ZA\"%ZM*#JE!\"*A!\"*I\"%*A+#J=!&*9+$:A##ZA!" + "#:A##JE!':Q(#J1!%:E!#Z-\"$Z9&&*1!#Z9\"\"Z5!%J1-#J1!\"J)!#I]!#J%!$J-%" + "!Z5!#*!##J)!%Z9*\"9]&$*!'#Z%%$*!#%IY'$)Q$$IY%&IY$$IY%!Z!!#YQ##YQ#" + "\"II$$9M!$9M(#9Q!$IM%#YE\"!9Q\"%9E%#9A!&IE($)1!#9I#\"IE!#)9#$)='#)5#" + "$I9)\"Y1\"&9-*#Y%$#9%%\"I%!$9%##(Y!!)%$#(Y##XU'#Y!&\"8Y!\"8M!#8U$!HM!" + "$(M'\"XA#\"XU\"\"8I#\"8A!\"(5\"\"XI\"\"H9\"\"X=\"\"H)\"\"(1\"!X%'\"8-!$()(\"7]!#7Y\"" + "#H)%$(%##H%##()$#G]!\"7Y!\"G]\"\"7Q!\"'Q#\"WI!#7Q'\"'E#\"G=%\"'A#\"G9\"!'1%" + "\"G-%\"'%#\"G-$!G-!\"G1$\"WM&!GE!!7A\"#'5$!WE!!WM!!7I\"\"7I!#GY!$'I)\"GA\"" + "\"H%\"\"G]%\"W]#\"G]\"#GY##H!&%8%#\"8%!\"(-#$(9%\"81!\"X%\"#(9##X='\"8)!\"8=!" + "!8A\"$8A(\"81!#(I#\"(M\"#HM\"\"XU\"%8U*#8]!$8U%\"8Y#%I%+\"8]#\"HY$#9-!\"8]!" + "$)%%$Y)+#99$#Y)'#91!#)9#!Y5!#99$#9Q#$)M&\"I5$#9E!&)A%$Y=!#9A!$YM#" + "%)9(#9M!\"YI!$IU%#YQ#%*!#!YU$$)Y##IY!#IU\"#YQ#%)]'$*%#%9U)&*%!&J%#" + "#J%!$:%$$Z9\"$:%$(Z-&$:-##J1!#*1\"$J5!#Z9\"$J9!#ZE\"#J5!#Z9!$*=&!*=!" + "#J9!&*-+#JA!%:1(%JU!$JA!#Z=\"#JE!#JE!$*5##JI!#JE!#ZI!$JM%$*U\"#JM!" + "$:E$$JM!\"ZM!\"ZM!#J=!#ZQ!%JQ(#ZQ!#ZQ!$JQ!#ZQ!$ZI%#JM!$:U##ZY!!ZQ!" + "#JM!&:Q($JE%\"ZQ!&JU%\"*Q\"\":Q\"%*I#&*Q#!Z]!$:Q#%JQ)$+)\"$*Q)#ZU!\"*Q\"" + "$:Q#%JM)$JM!$*U\"$[!&':M!%JQ!&ZM+%ZM&&:I%#ZE\"$J5!#ZY!%:E!\"Z=!\"ZE!" + "$*M\"$ZA%\"*A!%:A($*9\"#J9!!:=%#J-!#JE!%:9%#Z-\"$J5!$J=!#Z)\"#J=!\"Z)\"" + "%*1''*9)#Z9!$:-$\"Z!\"\"Z)!$*%#!Z)!%:)($*!#%Z!'#J!!$IU%$YU'!Z%!#9U!" + "\"IU!%)Q'\"9Q##YQ##9I!#9M!$IA##IQ!$)E&!)E!#Y9##Y=#\"IM!\"I-!!I5&$Y5$" + "#9A!#9=*%I1$#)-##91!#91!$9!%#9!!#9!!!Y!!#8]!\"(U\"\"I!!#(Y#\"8I#\"XQ\"" + "!(9$\"HI!\"XM\"#(I#\"HE$#(M##(=$!HE!#X1%#89%#(=!!()!$HA*#()'\"81!$(%&" + "\"X%!#']&\"8!!#8!$#GY$#'Y$!GU#\"GQ%\"7Q!#7M#$7I'\"'E\"!'Q#!7A%\"75#\"'E#" + "#')%!'-!#'5'\"W5&!G5&\"75$\"7=$\"'=#!GM!\"WE%\"'E#\"WE##7Y%\"GI#\"GQ\"#7Y#" + "\"X%##GY!\"7]!\"H%$$8%%\"\"WY#\"H)!!X-!#H1&\"H1\"\"89!%89%\"85!\"HQ$#H=\"" + "\"8E!!HE&$HI'\"XE#!(A!\"XE#\"HQ'\"8U!#XUY$#HI#\")!(%9%,$8]%#9%!!)-!" + "#))&!Y9!\"I-!$Y)(\"I!!$I5#\")5\"\"I9!!9I%$Y=!#I9\"$)I$#YE%&)E)$9I%#9I!" + "$IM%$*)##J!!%YQ'#*!&$IU%%9Y(%IY\"\"I]!#I]!#J%!$I]\"#J)!%:1($Z!&%:%!" + "%)]!#J-%%J-\"%:1(%*=+#J1!#Z)\"#Z5!$J9!#JA!#J5!#J5!#*5\"&*A+#ZA%%*A&" + "$Z-\"$Z9&#JA!$JI(%:E!#JE!#Z9!#ZI\"$JM!\"ZI!!*M!#JI!\"ZM!#ZU!\"*M\"%Z])" + "&:I!$JM!%JM!$*Q\"#JA!%*U\"#ZQ!!ZM!#Z]!#ZU!#ZU!\"ZU!**U)$*]&#ZY!\"[!!" + "%JQ!$[!!#ZU!#JI!%ZU)#JI!$J]!$ZQ%#ZU!#[)!'*U#$JI!$*]\"$Z]%%+)\"\"[!!" + "$JU!#JM!%*M\"%:Q$!*Q$%JQ!#ZU!#Z]!#:M##JM!#JM$&ZU\"$ZM\"!:Q\"#ZE!#JI!" + "%*I\"&:A,$J9!#JI!$Z=\"$*=#$JQ!\"ZA!#J5!#*=\"%Z1&#J9!$J9!#Z9%!*5!#J5!" + "#J%!#J=!#*9\"#JA!#J-!%*1'%Z)+#Z-\"\"J!!%:%(#:%##Y]\"$*!#!)]!%:%!%9Y," + "#IU!#IU\"$)]#%9U%#9U!&IM$\"YM\"$9I$$YI&&Y9/#IE(#9A!$IA%%9=%\"I=!!I=#" + "\"I1!\"(]%$9-(#9A$#9)!\"I-!$))%#))#%I%$%)!%\"8]#$X]$\"Y%##)%##))##8Y$" + "$(]$%(M##8M$\"H-*!HQ!\"XI\"#(A##8A%%H=&#(E!\"8M#\"8=!\"X1\"\"X9#\"8)!\"8)!" + "\"X=%$()(\"X!#$8%)#']$\"H!!\"WQ#!'M!\"7Q!\"GM\"\"GY\"#7I%#7I%!W1\"!GE%!WA&" + "!G-!\"7=#\"G1$#'9'#'5\"\"'5#!W9&\"79#\"W1&$7E$\"GM\"#']$#WA#!GU##7Y#$8)&" + "$'Y#\"G]!\"W]##(!$\"(!#\"8)!\"H)!\"X-#\"X-#$(9%#(9!#H1!#X5&&(=%%(E##(A$" + "!HE#!XI$#(M!#8M!\"XE#$(Q!#(U#%8Q$#(Y!#(]##HU\"#XU&#(]!#I5\"\"I1!\"I5!" + "\"I)!#))##9-$$Y1'!)1$#I=%\"I9!#9A!%Y=(%)E!#)A#\"IE!$)E#\"IA!$9U!#YM\"" + "%YM$#YM#$IU\"!9Q\"$)U#$*!#$:!!&)]$#Z!\"\"J%!\"Z%\"%Z%'%*%'$J-\"#Z!\"#J-!" + "!Z-!#*9\"'*1%#J1!#J5!$J5!!Z1!$Z9\"$:9##J=!$Z5\"#Z=!#J=!%:E!#JA!#Z=\"" + "&:I,\"JM#\"ZE!$JM$!ZY!%*I\"$:Y#%ZQ&$ZM\"$*U\"#:Q##;%&#ZQ!#ZQ!$J]!$*Y\"" + "%*I\"#:U#$JU$#*]\"%:U$$J]!#ZU!\"ZU%#[)!#[%!$*U\"$ZY%$*Y\"$*Y\"#[)!$JU$" + "$;%\"\"Z]!&[%\"\"JY#\"[!!$ZU%(J].#ZU!#*]\"%JY)\"*Y\"\"ZM!$ZY)\"ZQ!$ZY%$:Q#" + "#ZU!$JQ!#ZI!$+!\"$*U\"#JM!$*U\"\":]\"#*Q\"$*M\"!ZM!#ZQ!#:]\"%ZE*$JA%%ZU)" + "$:I#$*I\"$J9%(JI#\"*E!#ZA\"#JE!$JM!$*A\"\"JM#%JA)#ZA%#ZQ!\"*9!#:5##Z=\"" + "\"Z5!&:5!#J9!$*%##J)!%J-\"%J5\"\"J%!%:-!$:1!$:)!#*%#%J!*$:!!#J%!&9Y&" + "%YY$$)Y#$)Y##IU!#YU\"#YQ#%9U%#9U!#9A!#YI##)M#$IU%$YI'$)A!$)=$#)5#" + "#I=!#9=$\"Y=\"!Y5$%Y5%\"9-##9!*\"H]!#Y9##)%##Y-#%Y1($)%%$(]'!HY!#(E!" + "#XU##8Q$\"8Q+#8M$#HQ\"#(I#\"HU$%(E#\"XA\"!(I!\"85!\"8=#\"H=!\"8=#\"8-!\"X%#" + "!H)!\"(!%#8%$#(!$\"8)!\"(%%#WY$!7U\"!GQ#$7M'\"7Q$\"GM%#7M&!GE!\"'9##GI$" + "\"7=$#'-'!W1!!79\"\"G1'\"7=#!WA$#7A##'A'#'E$\"WQ##'E'\"WQ&\"GU\"#GU!\"W]#" + "#']$!GU!#H!&$(%(#H)!$8%)\"X)##(A$#(1 $\"(9\"$(=!$XA&#(I##(A$#XI!" + "!XI$#HI#\"8Y!\"8M##XQ&#(U##(U!\"XY\"#H]%$I)##9!!!8Y\"%I!(\"I)!\"I)!$Y1$" + "$H]#$)5'\"I1$#I1%$I9 I##I1%#IA%#)A##IA\"#9E!$)Y##)U\"\"IU!#YQ#$9Q!" + "#YE%$)U#$IQ\"$J! Q!#9]'%:!\"\"IU!#J)!$J%)$*%#%9])$J)%&*-($Z-&\"J-!" + "#Z-\"'Z1)$J5!$J9!%*A#$J9!$J9!#J)!#J5$#J=!%:5(#JA!%J9\"%JE(#JM!#ZA!" + "#J9!&ZM\"\"ZI!%*Q\"#JE!#JM!&ZI\"$JQ$!K!#'+!#![!$$JU$#ZQ!#[%!#[)!#JI!" + "%:M(#[)!$[%%#[-!#ZY!#[!!$*Y\"$[)!$ZU%$J]$#Z]!\"*]!$:]*$[%!#[-!#ZQ!" + "\"ZM!$:M$%J]%&;!#$[%!#;!#&ZY.#JM!#*]\"';!,$*]\"#Z]$#Z]!\"+!\"#ZY!%Z]\"" + "%ZU\"$*U\"'*Q+#*Q\"#JE!%K)(#*Y\"$J]!%*U'$JE$$JM!&J]!#ZQ!#J9!!ZY!$JQ$" + "%ZM\"$:M$\"JM$%ZE\"$:I$$:I$#J=!#J=!\"*E%$:E##JM!$JM!$*I\"#*A&#J1!$:=$" + "#*9\"#J9!\"J9#%:5!$JA$$J!\"%J1\"#Z-\"%J5)$:-!#J)!#J-!#Z%\"#J!!'*!0&J-\"" + "#IU\"#J)%#IY+$IY%#YQ##J)!$9Y!#9Q!#9M!#)M#%YI(%I5!#YA#$9E(#9I!$)A#" + "#)A#!Y9!&99*%)5%!Y5$$Y-'\"I5!#)%#!Y1!\"I1!$9%&$(]$\"8Y!\"Y)\"\"8U##(I'" + "!8M($(U$#(=$\"HQ!$(E(\"8I#\"8I!#HE##(=$\"HE$\"8E!$X5,#8=%$H5\"\"8-!$(-#" + "#8-%!(-!\"(5'#X%'\"8!!\"8-!\"H!!\"WY!$'Y)#7]%\"7Q!\"7M!\"7M!\"7I##'E+!G=!" + "\"7)$\"G-$\"'1\"!'1$\"'5%#79!\"'I##'E'!7U\"$7E*\"WM##7Q#\"GY\"!7Q\"!GM!\"X!#" + "$H!'$X!)#(%!\"8-!\"8%!#85\"\"H1!\"81$\"(9\"$81!#(1!#8=$!HI!$8I&\"(E\"\"8I!" + "!HE!$8M&\"(Q\"\"XE\"#)!$\"X]\"$(Y!#H]%$(]*#H]\"#Y)#$))$#I-\"\"9-##I)&$)!(" + "!)1$#)5#$95%!Y=!!Y=!\"I=!$YA&#IA\"$IA A!#YI\"#YY\"%IQ'%)Q$#IU\"%)Y$" + "$YU'#IM\"#J!!\"I]$$Y]&$*!#$9]$!J%#$)Y#$:)!&*!(#Z-\"\"J!!\"Z9!$:%$$:5$" + "#J1!#J9!%J-\"#J=!#J9!\"J=##JE!#J5!%ZE)&:M(\"ZM!$ZM%#ZE\"$JQ(#ZI!#ZU!" + "%JM!&:A$&*=+%*M&&*I'$ZQ%#ZY!#[!!$JU!$+%\"$:U$#ZU!$ZM\"$:Y'#Z]!&*Y*" + "$Z]%$K%(\"ZY!!Z]!#;%#%K!)#*]!#Z]!%;)+#[!!#[%!$Z]%#[%!$*U\"$ZY%%;!'" + "&K%!!+!$$K!$#*Y%\"[!!\"[1!#[!!#+)&$:Y*$+-\"$+!\"#ZY!#[9!$;!##[!!#[)!" + "%K)$$ZU%\"*]!$JY!#ZU!%J],$:Y#![!!\"JQ$$*U\"':I%#ZU!\"ZU!%*I'%:]#%K!)" + "$ZQ%!ZU!$*Q\"&JY!%JQ$$*M\"#*M\"$JI!#JE!%*E'\"*Q!#JE!$*E\"$Z=\"\"*I\"\"ZA%" + "#J=$#J5!$:9##Z9\"$*1&#J1!$J5!\"J1!$*-##J=!\":-\"$:)!#*1\"$:!$$J5%$:)$" + "\"J!!#Z!&\"IU!$:%!#)M%&)Y%!IQ##YQ&$)Q$#)Q#$YU#\"IM$$YI&%Y1%#9E!%)5\"" + "&)I\"!95\"#9=$#I5%#99$#)9##I9\"#Y9#!Y-!\"Y-\"$I-)#9%!#Y%$$9!&\"I1$\"8]!" + "\"(Y\"\"8Y!\"(]%\"HQ$#(]#!XU!#XI!#(I#\"8A!$XE\"\"8A!\"X=#%(1'\"X9\"#()!\"85!" + "\"89&!()#\"X!#\"G]\"\"X%#$WY!\"(%#!']!#X!\"#7Q#$'M##GQ&\"GM\"$'E!\"'E\"!W=\"" + "!71'\"'%#!'=#!W5!\"G=\"!WQ\"!WE\"$'U($GI&\"GM'\"7M!#7M&\"GQ\"\"WY##7Q%!WY$" + "!(!#$8%$\"X%##(!$&(-+\"8-!$(A\"\"(%#\"HE$#85$\"X-#!HA!#8A$\"(5%#89$#8]$" + "\"8I!\"8A!!HQ!#(Q#\"XY\"$8M#\"X]\"\"I!!%Y!#%XY\"!Y!!#Y%&$))$#Y-&!Y1!\"91#" + "#9I$$I9&#)5&#Y5 =!#)=#!YE!\"II!#)A##9I!!YM!#9Q!%9Y%$9U$#)]##IM\"" + "#)Y#&)Y!#Y]\"$YY&$)Q$%:%+!Z)!$J!%&*-!&J-\"$:-#&*-+$:1!$Z1&$Z5\"#*5%" + "%:1%#J9!#J=!#J=!#Z=\"#JA!$*A\"%*M&%*E\"&:Q,&*E$!*I$#JE!%*M*#JM!$:E#" + "!ZM!#Z]!$*M\"\"*Q!#ZU!$*M\"$:]##[!!$*I\"'JY*\"ZU$$*Y&#[%!&+)\"&:M!%:U$" + "$[!!#[!!$;%\"%[!)#;!\"$+!\"%[!&%[%)$[!&$[%!%+%&$K%$#[%!\"ZU!$+!\"$*U\"" + "#[%)#[%!$;%\"$+)\"#[%!!ZY!$K%$$[%!$[1!%+%&#[%!$+%\"#ZU!$K1$#*]!$K%$" + "\";5&%;%'%JY!#[!!![!!&:]+#[!!#:]\"%;!$%ZY\"$[!&%*Y*%:Y#$*M\"%JY($K!$" + "&;)'&JU)&JQ%$*U\"$:M$$*M\"$:Q$$*M\"%*M&%JM!%*I'$:M'%JI!\"ZM!#ZA\"#JA!" + "#JA!#JA!$:=$$*9)%*='$J%&$Z-&$JI!#J9!#J1$$:1!#Z-\"%:-%!Z%!$Z)\"#J=!" + "%9]!#J%!#YQ##Z!(#9Q!#J1!$)]#$)]#$)U#$)Q$$IQ&\"IQ!#IQ\"#YE%#Y]\"&9=$" + "#9A!#9E!#I5\"%Y=,#YA\"\"Y9\"\"I5!\"I=!\")9%$)5'#Y%'$I% %!$I%'#XU##(Q!" + "\"X]\"\"XI\"\"8Y##9!!#(E!\"HM!#XA#\"8I!\"8E#\"X=#!X=!\"8A!\"81!\"89!\"H9!#HM&" + "#']$#85%$X1#\"X)##(!'#8-%\"G]\"\"WY#&(%)#'Q$!GU!#7]%\"GE\"\"7Y!#7=%#'I\"" + "$'5&#G1$!G=%!G=!!W1&\"'E#!WE\"\"GA\"\"WM#\"7=!\"'Q#\"8%!$GY*!G]%#W]'\"7]!" + "\"X)##8!\"!(%!$H1%#(1!\"81!\"X5%\"W]##8=$%(5#\"XE#\"H-$#8E%#(I#\"XU\"\"8Q!" + "\"HU!\"I!\"\"XU\"\"XE\"!X]$!XY$\"I!!$Y!'%I-!\"XY\"\"8Y!$)5!\"I)!$Y1*\"IA!#)1#" + "#)-#!YA!\"IE!$)-$$)I$$YE$#IE!\"9I##9Q'#)]##9I!#99!\"YU!#IY!#YU\"$)Y#" + "#Z!\"$)Y#%*%'\":!\"!Z!!$9Y!%Y]'#Z%\"$Z1&&*%(#J-!$:1!#J5!#JI!\":A#%*9'" + "#JE!%:=(%:=$$ZE&%*=&$J5!&:I,$:Q#%:M$#JI!#*E\"$JY!$*M\"#ZI!#Z]!$:I#" + "#ZQ!\"*Q\"%:Q$%*Q##[!!%ZY\"%*Y\"#ZQ!$+!\"$;!#$[!!$*]\"&:],%K!)%;!#\"[)!" + "&;)#![%!#[%!\"K!$#JY$$[)!\"+!\"&+%\"$[%!\"ZQ!$[)%\"K)#'[)\"$+1\"#[1!#[)!" + "\"Z]$#+)\"%;)+$+)!$+!\"$+)\"%+).#+!\"#;)\"$[)!#[%!#[)!%+-&$[%!![1!\"[%!" + "$+!\"$;)\"#Z]!#[%!#[%!#[1!$;)'#ZY!%K!!'K%,%Z])!*]!#JI!#Z]!#Z]!%:M'" + "$:]##+%!$JU!$:Q#&:Q$$ZU\"#ZE\"$JQ!$JQ($ZE%$ZM%#ZY!$JQ!#JI!#Z5\"&:E%" + "\"ZM!#JE!%*=*$*A#$Z=\"#Z=!#JE!#ZA\"#Z5!#*5\"&*1!!*5$%Z1#$Z9&#J-!\"J)!" + "#J1!#J-!#I]!$:!$#IU\"$Y]#$)U##IY!#IU!$:!!#9]$#)Y#\"I]!#9I$$)U##)9#" + "!YE!#YE\"#9A!#II\"!I1#\"I9!#)-#\"Y5\"\"IE!#Y!'#9-$!Y5!\"(Y($HY$#I%\"#I%\"" + "!Y1!\"XM\"\"HY!#HM%\"8Y!!I%##XA$#(M!#8M$$8M\"#XE&\"XA\"#(A$#(A!!H9##H9#" + "$81)!H=!#(-!#(!$\"85!\"H)!\"W]#%8%%!7]\"\"7]#\"X!#!WQ$#WQ'\"WU#\"7]!#7I\"" + "\"'=##79!#7=(\"'=%\"W=%\"75&\"7I!\"7M!#'Q$#WQ'\"7U!\"7U!#']$#7Y%!']!!X)$" + "!H)!#H)#$H-*!XA!#X-'!H5!#X!(!H9!!X1!#(I!\"HI'\"8=!\"HA!#8Q!\"8M!$(Q(" + "%(U,#I!%#XY&#XU&#(]##9%!$9!&$X](#9%!\"I)!!)9!\"9%#!Y=!#)=&#Y-#\"I=!" + "#I9%\"I=$$9=%$Y9'$9E%$)E#$9I\"#9M!%)I!$IQ&&)]($)]##YY\"$IY&%9Y!$9U$" + "$Z!##9U$#I]!&*!!#Z1\"&J)*#Z1\"#J-$$*9\"#J1!$Z5\"#Z5\"#ZE\"#J9!#J5!%:=!" + "%*=##Z9\"$*A##ZE\"!ZI!!ZQ!#ZQ!#JI!#J=!\"ZU!!ZI$!ZQ!%*Q'':Q!\"ZU!':U%" + "!:U\"\"ZU!#ZY!#ZY!&*Y#%ZY\"(*](\";%\"%ZU)%K%!\"[!!\"[!!#[!!#[!!!:Q\"#*M\"" + "$[)!$+-\"#K)$$K9#$[)!$;!#%+)\"$+-\"$+)\"&[-.\";-&\"+1%$+-\"%+!\"$K5$$;1#" + "$[-$&;-+$;-\"%[)!$+5\"%+9&$+-!$+1\"$+)\"$*Y\"$[)!#[I!%;-'$+)\"%+)&\"[1$" + "\"[!!$+1\"#K)#%[)%\"[5!#[!!#[!$#:]\"$*]\"$+)\"#JM!%[-&$JU!%K%!#JM!$+-&" + "\":]&$Z]!$J]!%:Y$\"ZY!#Z]!&ZU*%ZU\"#;%'$:I$#ZQ!$*M\"%:M$#ZY!$J]!#JM!" + "#ZU!#JM!$ZA%%ZA&$ZE)#:=##J9!%:=(%:=($J=!$J5!$JE%$J!%$Z1&#Z9\"$J%&" + "\":)#%JA)\":%#$*%#$:-#&*!!#Y]&%*%+$9Y!'YQ*#IU!$)U##)Q##IY!\"9Q##IQ!" + "#9Q!#YE%$IE#$YA!#)9##)A#\"IA!\"95##95$\"I5!#)5##)9##I5\"#I)&#Y-##Y!$" + "#9%$\"Y!#\"X]\"#8Y$#XY!!XU'#(Q#$XQ*$(Q!\"8I!#XM#$X=+\"(E\"$8A&$H=!\"85!" + "#85!\"X5##(1&!H%#\"(-#&()(#(%&\"X%\"\"']#\"8!!#'Y$#'Y$#7U\"\"WM#\"WQ&\"WE!" + "!79%\"'9!\"'E\"\"7I!#GM!\"W=(\"WM#$'Q!\"7Q!!GU!\"7Y!\"7Y!\"G]\"#7Q##W]'#GU#" + "#(!$#H)&\"(9\"\"X5##X5&#(5)%(=##8I%$8A '\"HE!\"8Q!!(=!\"8M#\"XM\"\"XM\"" + "#HQ&\"Y%#\"I!$#(]##9-$#Y!$$I!&$))!#)1#$)A!#)1##Y1&!Y=!#)5##Y-##9=$" + "\"I=!#IA%')I\"$)E#!)U!$)I$$9M!$YM#!IQ#$YU&$IQ&$)U##II\"#Y]\"#9Q!%YU(" + "#Z!\"!*%!$J)\"!Z1!\"J1!#J-!\"*1\"#J!$#J5!#J5!$*5#$J=!'*5(#J1!%Z9##JA!" + "%Z1#\"*A\"%JE(!:E\"#*I\"$JI%$*Y\"$*M\"!ZM!#JA!#Z]!#Z]!#ZQ!&*U*#ZU!$;!\"" + "$*Y\"'JQ%$JY!#[%!#[)$#ZQ!%[!&#;!#%+!\"%Z]*#JY(&+%*%;!'#[=!&;)'#[-!" + "%JY%#[%!#[)!%+-&%K-$$+)!#[-!#ZY!#[-!$+-!#[-!$[-!%;E\"%+5!#[=!#+1!" + "#[1!\"K)#$+M!#[5!$+1\"#+1\"#[-!%K1($+1\"#[-!!;=\"$J]!'[1-%+1&%+-\"$;-&" + "$[5$#[%!$[)%\"[1!$K)$%;-\"&K)!&+)\"$+)!$[)%%[%&\"ZU!%:Y$#;%*$[!!%ZY\"" + "\"Z]!%Z])'*]+$:Q#$:]#$:Q$#ZY!%;%'#*U\"$*Q\"#*Y\"#ZQ!$*Q\"$*Y\"\"ZM!!ZY!" + "%:I'!:I%#JI!'JA\"#JE$%:M$$*A\"!*9!#J9!#Z%&#Z5\"$J1%\"Z5+#J5$#Z-\"$:9#" + "#Z%\"%:1!#J9!#Z5\"\"J%!$J!\"$YY#&J!#$)]&$*%#$Y]&$9M!#IU$$9M%%YI!$)A#" + "$9M!#YE\"#YI\"$9E\"$)A#$)=!!YA!#9Q#$)=!\"I5$$91(#I1%\"Y1\"\"I-$\"I-!\"Y)\"" + "\"Y)%#I-\"#)%#\"I-!#(Y##(A$$8Y%\"HU!\"8Q!!HM!#(9##(Y!\"8M!\"X=#\"81!\"8-!" + "#89%#X5$\"81!#()$$(9(\"7]!$X)&$8%)\"8%!\"WY%\"WI#\"WY#\"X-##WU!\"WU%\"WQ!" + "!W5\"\"W=*#'9$\"'A\"#'E$#G9$!GM!\"WQ##'I$#7U%#7Y%#H!$$(!+\"7]!\"W]#\"8!$" + "#()$$(-(#(5##(=!#H-%%H9,#85$\"H=\"#(A#\"H=!$(Q'\"8M!\"(M\"!(Q!!HQ#\"8Q!" + "#(Y#$(Q%!H]!\"8]!#9!!%I%'\"Y)\"$)%!#I)%\"I%!\"I-!\"99&\"I9$#99$#)I##Y=#" + "$)=$$)A#%)9($9Q!#YQ\"$9U$$)M##YQ#\"IU!#J%!%)E%#IY!$*!#$9]$&:)-!Z%!" + "$Z)#$*)&#*1\"%J-\"&*5,$:A#$ZI!$:5##J=!#J9!#JI!#Z5\"&:9!$J5!%JA)&:A!" + "#ZE!&JE)':I!!*A$$*M\"!*U!#JM!$*Q\"$:M#\":A\"$ZU\"#ZU!%[!&$*Y\"\"ZE!$J]!" + "#ZY!#Z]!#[%!$J]!\"K!'#[)!$+%\"#[%!%K%)#[)!#[-!$[5!$;-\"$+!\"#+-\"$;-\"" + "!+)!&+1\"#;)\"&[1&#[1!\"[1!#[1!$;1\"%+9\"#K1$$[9!#[1!$+9\"#[1!&K5$\"[%!" + "$;A\"\";5&$;5\"$;5\"#[5!$K9#\";5\"%+5!$;-\"%+9&$[5!\"[1!#[1!$[-!$+1\"$+1\"" + "#[1!$[%!$;9\"#[)!#[%!#[-!$[!!$;)\"'K-!#[5!$+)\"#[9!&K5,#[)!$+)&#+)\"" + "$K9'\"ZQ$#ZY!![%!$JU!#Z]!#Z]!#[!!%*M'$*]\"#[%!$ZU%%*U&$JY!%*U'$:Q$" + "$*M\"\"ZM!#ZM!#JM!%ZI'%:I$&:E!%:A(%ZA\"$JE$!Z5!#JA!$*9#\"Z=!&*=+#J9!" + "$Z1\"$*-'#Z-\"$:-!#:)'$J)%#J%!$*%#$J%%&J%&$)]##9U!\"J%!#I]!#9U!#YQ%" + "$9I$%)A'%)I!#YI&$YA&#IA\"\"IA!\"9A&$91\"$)5'#Y5&\"I=!$Y1*!)-$#I!##))#" + "$9)%#8]'#H]\"%)!)\"I!!\"I!!%(U##(U#!(Y!#8M$\"XM\"#(I##(E#\"8=!\"H9\"\"8A#" + "!81\"#X=)$85)#HA+\"(5#\"8)$\"(%\"#(9!\"()\"\"8!!!X!!\"']#\"WU##WY\"\"(!%\"7Q#" + "#'A$!G9#\"'I!%WM+#GI'#'I%#'I&\"7E#\"'E!\"7Q$\"GQ\"#']$\"X%#\"X!#\"(%\"$()#" + "\"89##(1#$H9'#H1&#(9!!H=##HA='\"8M!#81\"#8I%$XU+\"HQ!$HM!\"XU\"%(M#" + "#8U!\"9!$%9!*$))!$9!&\"I)!\"Y-($I-)#)1##I9+#I1\"#Y=\"%)Q*$)9'#YE#$)A!" + "#9M!#YE##9A!%)=$%)Q!#IQ!#9Q!$)Y##YI\"$)Y##9Q!%*!!$:!!#IY!&Z%$%:%!" + "$J)%$I]&#*)\"\"J)!$J5!#J1!#Z=!'*5%%J9)%:5!\":=\"&*=+#JA!#:A'#*A\"#JM!" + "\"ZE!$JQ$$:M$$JM(#ZM!#ZQ!#JQ$$*U\"\"Z]!$JU!'[-)%*Y&#Z]!#;5\"%*]&$[%%" + "$;-##ZU!$:U#$[)!#[)!$J]!#[)!$+5!%:]+%[))\"[1!#K5$$;)#$[-$%JY)&;)+" + "%[-)%+)&$+!\"$+1\"\"[%!$+9\"%;1+$+%&$[5!&[5!![1!$;)\"$+-\"#[=!%+=!%+)\"" + "%[A%%+=%%;9\"%[9!#K5'$[-!%+9\"&;9\"%K9$$[9!'+1+'[1!&[1)%;5\"&[9!$[=$" + "#[5!\"[5!#[-!$[5$\";1\"#[-!#[-!$;1\"#+1\"\";-\"$K-(![-$#+-\"$[)!%K)(%Z]%" + "$[1$$[%!$*]\"#[%!%K!$%;-\"%K!)%K!$#Z]!$*]\"$*]\"#ZY!$ZY%$ZU%%*U\"$*U\"" + "&:Q$#JM$&JE-$*M\"#ZI!\"ZM!#JI!%:E!#Z9\"%ZE\"#J=!\"JE$%J5)#J9!#Z5!#J1!" + "#*9\"%J5%#J1!#J-!\"J-!\"Z)%#J)!$:%!$*!##I]!%IQ)$)]&%I]&$:!!\")Y\"$)Q$" + "\"J!!#IY!#YM#\"YI\"!Y=!$Y9'#95!#)E##95!#95$\"I9!!IA#\"I9!\"91#!8]%#9%!" + "$I%)#I%#$HY&#(Q!!I%&#(U##XY##(Y##XU!\"HU!#XQ!!HQ!!HI!#HI&&H9*\"HA%" + "\"81$$(A(#(9##89%\"XE(!H=!\"X)##H!&#H))\"8%!\"X!#\"7]!!W]!\"WY#\"7U!#H!$" + "\"'E#%WI(!GM##'I$#GM$\"WQ&\"GQ\"#'I$!(!#%H1&\"7]!\"()##8%$#8)%\"85!$H9!" + "$X1(#XE!#(5$#X=!#H=#\"89!#8A!$(M'$HQ'\"8I!%HIA%%HQ!!HU!%)!($HE!" + "\"H]!#Y)'!H]!\"Y%##))#$)-'#Y-##I)%\"9A#\"I=!\"I9!\"IA!\"I='%YE!$)M'\")E\"" + "#YE#$IA%&9A M!\"IU$#YQ\"%)U'$YY&#J5$$I]&$Z)&\")]\"\"J!!#*%#%J)\"$*)#" + "$*-##J)!%*%'\"J1!#*5\"#Z9\"$9]$%*='#ZI\"#Z5\"!:=\"$Z=)#JE!#*E\"#JI!#JI!" + "#ZE\"$K!$%*M'$:Q$$*Q\"!ZQ!$ZU\"\"Z]!!*U(#ZY!$;!#\";-\"$JY$#[!!%+!\"#[)!" + "$*Y\"#[!!\"+)%#[-!$+)\"#[-!#+)\"\"[-!#[!!$[)!$+1\"#[)!#[%!\";1\"%K=##+5\"" + "$+9\"%;9''+5\"#[5!%+=\"#[9!$[9!%K9$%;=\"\"[9!$[9!$[9!%;-\"&;I&$[9!&[5*" + "%+=!'[E!'+1&$[A!%+5\"%+=%$[I!%+M!#[5!%;5#&[=!#[9!%;9\"$[1%$[9!%+1\"" + "$[A!%+1!$[E!&[=)#[9!'[5&\"[5!&K1$%;%#%+9!$+-!\"[5!#[%!\";)\"$+9!&+-&" + "!;5)$+5\"$K-$$K!$%;%'#[!!$+-\"$[!!%J](%;!#$*Y\"#Z]!#[%!%JY!':U)#Z]!" + "\"ZU!#ZQ!#ZU!$*I\"#JM!#JM!$*M\"#JM!$ZI%%JI(\"ZE!$ZI\"$ZA&\"Z)!$J-)#J9!" + "#*9\"#J1!#:1'\"Z9!%ZE)#Z)\"&*)!#Z-\"%:5(%Z5#$9]$%9Y(%)U+$YM'$)Y##Z!&" + "#9Q!#)Y&#YQ)$IM%')M)#YQ##I9\"#YE\"'Y=#$Y=$\"I=!#)9##YE#\"I5!!)1!$Y1'" + "#)-##Y%'$I)##9%!\"Y%\"\"9%##8]$#(]##(I$#8U!#(Y!#8M!#(E$#8=%\"X=#!8E\"" + "#(A#\"85#$(=(\"X=##85%\"X1##X-$!H1##X-'!8%\"!W]\"#8%(\"W]##7Y%\"WQ#!GU#" + "!7M%!WE\"\"7M!#WM'$WQ)$X%&\"7U!#'Q!\"G]$\"'I!\"GU\"\"8%&!(!$!H)!\"X-#\"8!!" + "!(%!!H9!#(1$\"H-\"\"H9!!HM!\"8M!\"8I!!8M\"$(E(#(Y!!HM!\"8U#\"HU!#(U#\"8]!" + "!Y%!#9-!$9-%$I%'#HY%\"I1!%)1(%91&#I5%\"I9!!99\"#I=%#9=!#9=!#YE#$YI'" + "$YY##9U!$)U#&IE+\")M\"$IU(#J%!$)U#%Z!+\"YY!#Z%\"$:%!%Z%'#Z%\"$J%%\":)\"" + "$J5%\"*1\"!Z5!%Z9&$J9!$:-#$ZE\"$J=!%JA%#Z9\"$ZE%!ZI!!:E\"#JM!$:M##JM$" + "\"*M!#ZU!$:]##ZY!#ZU!$*Y\"#[!!#ZY!#:]\"%J]!&ZQ*#[!$%+!\"%[!\"#K%$#[1!" + "#[1!'+)+#ZY!#[)!$+-&$+-\"&;A&\"[1!%+9&$KE##[1!$+1\"#[=!$K=$#[5!%+M!" + "$[E!$[=!%[=!#[9!%[9%%[E!$[=!%[5%'KI$%[9%%;9\"![=!%;E\"%[=!\"[=!$[5!" + "%;5#%K1$&KA$$[A!#+1\"$[=!!+E!\"[9!&KA(&[=!%;I\"%+=\"![I!&K9((+1\"%[-%" + "$[A!$[=!'+9\"'+9&%KE$%+=\"&[5!#[9!%+5\"$[1!$+E!#[5!#+1%$K1(%[1!$;%#" + "#;!'%+)&#[-!\"K!#$+)\"\"[)!!*]!#ZQ!\"[%!$+)\"&+!+$JU!$J]$\";)&#ZY!(ZY+" + "\"ZY!%ZY\"&:Q$#ZY!&:M+$:Y##ZU!!ZM!#*=%#JE$$JI!$JA$\"Z=!\"*A\"&:A%%*='" + "$J-%&:5%$:9##J5!$*5\"$:=$%J-\"#J%$$Z)#$J!)$Z%#\"YY\"\"YY!#J!!\"IY!#9M!" + "$YQ##YU\"&)Y)$)M$%IM##YM##9I!$9M!#9I!#Y=\"#9A!#)1##99!\"I5!\"I5!\"Y1\"" + "!)1!#I)\"#I!#\"Y%\"$9%#!(U!\"(Y%$(]'$8M#\"8M!$HU-#XQ#$(9'#HA\"\"HI!\"89!" + "#HM%\"HA\"\"8=!$(9'\"(9\"!H5!#H1U$$X-%\"X-##H-&#H-&\"7U!$W](!GQ!\"7Y!" + "#G1'#'E\"\"WQ#\"'M\"#7M%\"7U!#7E#$'Y(#(!$#8!$#(!M#!X)\"#X)\"#H-!\"85!" + "%HE\"#(=$\"(5%$(A%$8A(%HA\"$(E'#(I!\"(M\"#(I#\"(M\"$)%'\"8U#$8Y)#(]#$(]'" + "#I!#$)%$!Y)!%9))\"9%#\"9-##)%$\"9A#\"I9!\"I-!$)5$$)E$#IA!$)E!#9Q!\")E\"" + "#9M!#YM#$)U##IU\"$YY&$J%%#IY!#YY&#YY\"%J!##J%!#9U!!ZA!$J)\"&*-+#J1!" + "\"*5\"%J1)%:9($*9\"\":9#%J=\"$Z9\"#J1!%JA\"\"ZE!!ZA!$ZI&%J=%%JM!$ZM\"$*Q\"" + "&ZQ*#ZQ!$ZA&#JI!#ZY!%:U(%*]&%Z]!$*Q\"(;!-$K!$$J]'$;%#\"Z]$\";)\"$+)-" + "%[5!$+-\"![-!$;-\"$+1!$K=#\";1\"\";1\"$[-%&;5'\"[5!%+9\"#+9!$[=!$[9!%[1!" + "$[=!)[=*&;A\"'[A!$[-!(+=\"%+M!%[=!$[=!'KE,#;A\"(+A&$;M\"%KA$\"[A!$[A!" + "%+A!&[A)%+E!%[A%$[=!%+9\"%KA$%+U!';1,&[=$#;E\"%K-$&+A!$[A!%K=$'+A*" + "\";5\"$+E!';=\"&[9!\"[A!&[=!%+I!#[9!%[=%&;E\"%+=\"&K1$&+=\"$;=\"'K-!%[5!" + "#K1#$[1$%;1'&K=,#+-\"$K-$\"[-!#[%!$*]\"$;%\"#[%!&+-&%+%\"$*U\"&J]!#+!\"" + "$*U\"$JM!#*Y\"$;!\"$[%%$[!!%*Q'%JM%%JI((ZU/#JI!%*9&&JY%#:E#%:A!#JA!" + "!*5!%ZI*#J9!$J9!\"*5\"#J5!#J5!$:1$#J5!#J)!#Z%\"$*1\"$*-#&*!$#:)#\"J!!" + "')])$IQ\"')I\"\"YU%#9Q!$)9*$YM##II\"$Y=!#YA#&)=-#I5%\"Y=\"\"Y%#\"YE\"\"Y-\"" + "\"Y5\"#)-#!91+!))'%9) %!#9%!!)-$$I!&\"Y%%%)!)#(U!\"XQ%$(Q!#(U#$HI$" + "#89%\"XA##8A%#XE!$(5%\"H5\"\"(5#$H1$\"X1#\"H-'$8)!$8%)\"H!!\"8!!\"G]\"\"WY!" + "#GE)\"7M!\"8!!!H!!\"GE\"\"7]!\"WU#&'Y&\"G]!&(!,#X%\"#8%$#H%&#(-!!(9!!(9#" + "\"(%%\"89!\"85!$HE$\"HE$#HI&\"XM\"#(I$\"XY\"#(Q##XU&\"8A!&8Y(#(Y!\"Y%\"%I%'" + "&I%)#HU\"\"I)!$Y-!#I5%!Y5!#)5##))##)A#&91'$IE)#9=!$9E%#YE\"#9M!$IQ%" + "#YA#&)Q(#IQ\"#9U!$J!&$)Y#$YU*$Z%*%IU)$IY%$*%#\"Z)!\"J-!%J-\"#Z-\"%*1'" + "%Z)'%*5'%:A!#J5$!ZA!#JA!#JA!%:9$#ZM!'ZI'\"ZA!'*M'!*Y$'*Y,%:M$#ZU!" + "%JY!#ZU!#ZY!$+)!!ZQ!&JU%#Z]!$*Y\"#+%&$[%!\"[%!$JY!#[)!#ZQ!%+)\"#[9!" + "%[-&&;9+%+1\"$[9$#[1!&;5#%;5#&+5\"#;9\"%+)\"$[9!#K=#)K11%+M!![I!$[E!" + "%+9\"%KA$&;=&%[9!%;=\"%;A&%;M\"&;E'&[9)$[I!(+5\"$+U!'[A!&+E!';M/&;I\"" + "![E!%+M!%;A\"$[A!%;A\"$[I!$[E!&[E%$[I!$[E$%KE#%;M\"$[I!![A!$;I&%+9\"" + "$;E\"%;A\"#+A)'+E*&+9*$[A!&+A\"%;=\"&;A'$+=!%;='%+U!#[9!'+9\"%;I\"%[9!" + "!+1!#[1!$;=\"#[%!'+-\"%[-)&;-$$[1!#[-!#[%!%[1)%;-\"#[)!\"[)!$+)\"';-," + "%[!\"#ZQ!&+)&$:Q$%*U'#ZQ!#ZY!#ZY!#ZQ!&JQ-$JI!$JM!#ZE\"#JI!!ZE!#Z=\"" + "#ZQ!%:=(#:=#\"Z=%\"Z9!\"Z)\"#J5!$J1($Z5&&Z!$$*1#%:)!#J-$!*)!%:!(#YI&" + "$IM%#IY!\"I]!$IQ&#IU\"#9I!#IY!#J!!%)I$#IQ!\"9M##9A!!YM!!)9!#)1#$I5&" + "!95\"\"Y1\"#91!#)-#!))!!I!##9)!%)%&\"8M##8]$\"8I##HU\"#(M#\"Y%\"#XI#$(I$" + "#8=\"#8I$$HE*!(I!#(=$#X=$\"X%#\"H5\"\"X1#\"8-!!H%##H)!#7U%\"W]#\"7Q!\"(%%" + "%7A$$WM$\"7U!#H-!\"WI%#7Y#!()!#8!\"#7]##H!&$H-$!H1!#X-!\"8=!\"H1\"%H-$" + "#8=$\"8=!$X=+\"XI\"\"8I!\"8A!#(M#$HM#%HI%#(Y##HQ%\"8U!%XQ&#Y% )!#I)\"" + "#9%!#I-%#I%)#)1#\"I1!#)5##)9#\"9=#!)9!$)E!$9I%\"I9$%)I!#)I&%Y=+&99'" + "#I]!#YU\"#9M!$Z-&!YY!#J)!#J!!%Y]$#J%!#J)!$Z)&$:A#\":%##Z5\"\"Z%\"#Z=\"" + "$*9\"\":1#$J=!%J9!#ZE\"#ZI!%*E'#J1!$JQ%$ZI\"#:M\"$*M\"$JI!$*I\"$*Q\"#ZU!" + "&JY,#ZI\"%K!$#Z]!$ZY\"%+%\"#[%!%[9$';%$#[-!$;)#%+)\"%[-&#K-$$+9\"$;1+" + "%K1('[9&$[5$%+5\"\";=\"$[=!%[)&\";5\"'+=*%KI#%[=!$[A!&KA(%;A\"&;U\"'+A\"" + "%;5\"'KE($[E!%;A\"%;E\"%;E\"&;I&&[M)%+Y!$[E$%;E\"%+Y!);E($;I\"$[I!%;I\"" + "$[I!$[E!#[E!%[I$&+I%%;M\"%;1\"$+U!%;E\"%KI#%[=$$+Q!$[9!%+I%$[E!%[I!" + "%[I$$[E!&KE(&KA(%+I&$;E\"%[A$$;A\"%+U!#[A!$[=!%;A\"&[=!&[=$%+1\"%[9%" + "&[9!$+9\"#+1\"%[5!#+-\"\"[9!$[=)$;1#\"[1!%;1'$ZU!%+!\"$;-\"#[%!%[%)\"[%!" + "#[-!$[-$$+%&$;%#!JU##*]\"&:Y$$*]\"#JY$\"*E\"$*Q\"\"Z=!\"JU$%J9\"$JM$$JA!" + "#ZQ!$*M\"!ZA!&:9!%J5\"#*!#$:=$%J1&!Z1!%Z%*%*='\"ZE!$J)%#J1!$J%%#*%#" + "':!\"%9]\"\"I]!$IU%#YM&#Y]\"$Y]##9Q!$)Q$\"9Q##IE\"#9E#$)E##IA!$)9*$9=%" + "#Y=##I1%#95$&Y1-\"Y1\"#9!\"#I!#$Y%!#Y!$#(]##(]#\"XY\"#8U$$8Q(\"I!!\"XM\"" + "$(E(!(I$\"HE!!(E!\"X=(#8E%#85\"\"H1\"\"HA%\"X!!\"X%#!(-!#8)'#X!!#7Y%!']!" + "#GM$\"7E!!'U!!'U!#X%'\"7U!#H!$\"8%!#X%'#(-!\"X!##(-$!H1#\"8=#\"(-#%(9&" + "#8I$#X='\"XA!%HI%\"8I##8M$\"XQ\"$HM#!HU#%(M#%)!\"!H]!!)!$%9)&%9%*" + "\"8]!#)-#$)-'\")A%%I1$!YA$$)5!\"I5!%IA*$9U!$)=$%)E$#YI##YQ#$)I$$YY#" + "&)U!!)Q!#9U$&I]*$IY&$:!!$YY&$*%#%*!!\"Z)\"#Z-\"\"J--#J1!\"Z5!$J5!#Z=\"" + "#J1!#J=!#J=!%:Q$#ZQ!$:I#&:=%$:E$$JM%%JQ$#ZQ!$JA%&JY,$*U\"$*Y\"&*]&" + "&JY!\"ZY!$K!$#[!!%*Y&(;5($;%\"%JY(%;1#$[-%#;-\"%K-(\";=\"#+1\"%+1!$;I\"" + "&[5!\";9&$[5!%+1\"\"[5!&+=&%+A!%KE$$+E!&+A\"&;Q'&+9\"'[E!%;I\"$;E\"%;A\"" + "'KE,&[M$%;I\"';A+$[I!&+Q%%KM#$+Q!$[U%%+M%$KQ#%[5)&[]$#[M$$+M!%+M!" + "$;M\"$[M$$+M!!+Y)#+Q!$+M!&;A/#[A!%+M%#+Q!\";]\"#[E!$+U%#[I!%+M!(,!)" + "%;I\"%[E!$[A!%;M\"%;Q&$[E!%+E)'[E)&;E'$[=!$+Q!%+M!%[A$$[A!$[9!%+=!" + "$KI#$;5&%[9$%+5\"$[9!&*Y'$[1!$;-#%+1!$+1\"%+1!$;-#$;%\"%+=&#ZU!%K1$" + "\"ZM!&;!,#ZY!';5#$:U#\"+%!$J]!&J]!&*U+$:U#!ZQ!':A%$*M\"\"*A\"#JE$$ZM%" + "#*I\"%ZI\"$ZI&!ZQ!#Z=!)*%'#Z9!#ZA!%Z5\"$*5\"#JE!#Z-\"%J-%!:-&#J!!$J%\"" + "%*%'%*!$\"*!%!YU!#I]!$9U!#9U!%IQ&$9M%&9M#$)E!#9E!#9E!\")E\"\"Y=%!Y5!" + "$Y1*!)9!%95,$)1'#I-%%9-)#))&#Y%#$)!!#)5#%8]#!H]##XY#\"HU!\"HQ$#(U#" + "%X])!H1#\"8I#$8E#\"81!!(=!$(E(#X9'\"(A\"$81&#H1&$8-)\"X)#\"X%!\"X)##'Q$" + "#7M#\"'I!\"7U!#GY#\"GU\"\"WM#\"GU\"\"G]!\"H%\"\"H%'#7]%#8=%\"H5\"#(5#\"(1##89$" + "#8Q$\"8M!\"XE#!HM&!HI!!XQ!\"XM\"%HQ(!XU$#8Y$\"8Y!#Y%*#X]&$Y%!#I%#\"Y%%" + "#I-%\"I)!\"I1!!Y-$#)5#!Y9!\"IA$%)E'#Y=#$)A##9Q!#9E!#9I!%IY\"$IM\"%YY(" + "\"YU\"\"J%!$9]'&I]#$*!#\")Q\"\"J)##I]!$*!1\"Z-%\"J1!$:1!#J-!#J1!%*9&#ZA\"" + "%*9'$JE%$*A\"\"*Q\"#ZQ!\"ZE!%:I'$*E\"%:E$%JQ!$JI%#ZQ!&JY,#ZU!\"ZY!#ZU!" + "$J]!#[)%$JY!%+5\"$+%\"%+)\"$;5\"%;-#!+1$#[!!#[1!%+1&&;E\"%;5#\"[)!#[5!" + "&[)\"&K9$'+=*$[5!#[=!$[I!&;I\"%[A!%[=$&;I&&;E\"%[E$$;=&%+I%&+A&$+A%" + "%;M\"$[E$#;Q\"%+E!$;Q\"%;M&$KY#$+Q!\"+U!$+I!$+Q!$;M##[=!&[M%$+U!#;Q\"" + "&;Y\"%+M%%;U'$<%\"$+Q!$+U!$+U%$+M!%;U&&+Q%$;I\"&[],$+]!&+=!$[U$$;U\"" + "%+M%&+M!$KE#%[M1$;Q\"$KE##+I!'+=\"$KY'&[I$![A!&;A&#[A!#+I!%[E!$[A!" + "%KA$$;M\"%[9$%;A&%[E$$[9!%[=!$[A!%;=\"#[5!&K)($Z]%$[E$$[)!$;1#&+%'" + "';!$#Z]!!+%!$[)!#[-%&;!#$*Y&\"*U\"$:Y#&*Y\"#[!!$+!\"#ZE\"#*]\"$JE!\"ZM!" + "%:I'#ZA\"%*E'#JE$#JA!#Z=\"$J=!#*9\"%*9&#JE!$:5$%:-!%:-($*)#$J%\"$*)#" + "$:1!#J%$#IY!\"IY#$9Y!!9Y\"\"IE!$IY%#)M\"#II$$IM&!YU!'9E+#)A#$IA%#9A!" + "!I=&!Y9!\"Y5(#Y=&!)=$!Y)!#I9\"\"I)!$I%'$I1##I!#\"Y!##XYc$$HQ'\"XU\"" + "\"8Q##(I##8M$#(A$#(E#\"H=!!H=!!X-)\"81!\"(9\"#(9!$!8-\"\"H%'\"7U#\"7]!" + "#7Q#$7M%!'Q!\"8!!#']!#H)&#()$\"81!!(5!\"X)\"#G]!\"X-\"#(5$!H5%#85$$85&" + "#HA%\"8A!!(M!\"8I!$8M(#(M##8Q$!(U!#HY%!XY*#9)!\"8Y!#9!!$)%$#9)$\"IA!" + "$)-$#91$\"91#$IA)$Y1'!Y=!\"I=!\")=\"#)E#$9I\"!IE##IY!$YM##IY!#9Q!#Z!," + "\"IE!$9Y!$J%\"$Z!#$:1!#Y]\"%:-(':%#\"J-!%*1#%Z1#\"J1!#J5!!Z9!#ZA!!ZM!" + "%:-!\":A\"#ZI\"\"ZI!#JA!$+)\"\"*Y!%ZQ\"!ZU!\":U\"#JM!$[!!#[%!#[!!#ZU!$+%\"" + "%+!\"#;)\"(K%*%ZU\"#[!!$[-!$K-($[-!#+%\"#K9$!+5$#[%!'KI#%;I\"%[=(%+1\"" + "%[I!$[A!$[A!\"[5!$[A!%+A!$+Q!$+M!$[E!$+M!&[I!#;I\"$KI#%+M!#+M!$+M!" + "$;M\"\"+U!$;M\"$KI'$+U!$;Y\"%+Q!$;E\"&[])%[U%%+U!\"[I$'+M!$KY#%+Q!&;I\"" + "$;Y\"%[Y$*;I'%KQ#$[U%$+M!'+Q*%;U\"%KY#&[U%&;E\"([I!#K]#%K]#&KU#$[Q$" + "&[Q$$;M'$+Q!&;I+%;Q+\"[Q%%+M%\"[E!%+=&%+Q!%KM#%[I!#KE#![I!&[E)%[E!" + "#;E\"#;=&%;A\"&+9\"&;A\"'[=!%+I%$[9!$[9!&;9#%;1#![5!#[1!$[5(#*]\"$[%!" + "$J]$#[-!%+)&%[5%!+)$$ZY\"#ZU!$:]##[%!!:]*#ZY!#Z]!#ZU!\"ZY!\"ZQ!$*Q\"" + "(JM.#JM!$JM!$ZA%#ZQ!&:I!$ZA&#J9!#Z9\"$:1!\"J-!#:1#$Z1\"#Z1\"%:-%!*-!" + "#J%!#J%!#J%!$)M$()]*!)U$$II##9U!$9U$%)Q$#YE#&IQ(\")I\"$IE%$9E$#Y=\"" + "$9A$#9M$&9-.\"Y)\"#)-#\"I1!$)%!&9%.\"Y-%$)9$#H]%\"Y!#$))!\"8Y!#(Y#$(Q'" + "#HU%$8E##(Q#\"HM$$(E$\"H9\"\"XA\"!(=!\"X=#\"X5#$(!#\"8)!$8-#\"H%\"\"GU%\"7Y$" + "\"WU!!GQ%#8-%\"7Y$\"GI\"#G])#()!#8%$\"8!!!H-&#(1##85$!H9!$XM%\"X=#\"H9\"" + "#XM!$HE*\"H5\"#(M)#XM!$8E&#(U##HU\"!(Y!#HU-#(]!\"9-##X]!$Y5*\"9A#\"9)#" + "$)1$#Y5##95$$IA&#)-#\"I9!#)I##9I!%YU#$)U#%II##9U!#9E!\")U%#I]!&*%$" + "#YU\"#9]##Z!&$*!##IY!%J1&#JA!&:-)%:1!$Z1\"\":5\"%:5!\"*5\"$J-%!Z5!#ZE!" + "$Z5&$JE$#*M\"#JI!$JI$$JM%#:Q\"$JQ%$ZU\"$JY$$*Y\"#[%!\"*]\"%[!&$;)\"\"K!#" + "!Z]!%+1&$[)%%K%!$+-\"%+-&$[1!%K)$&[5!$+9\"%[5!$[9!\"[9!$;=\"$[=!#;=\"" + "%;M\"![9!$[A!%K5$%+M!'KI,$[I!%;E\"%[Q(#[M%$[I!\"KM'%;M&$KQ#&+M&(+Q%" + "\"+Q!$;I\"&KM#%+U!%+Y%&KU,%+U!%KU#%+Q!&[E%#+Q!%KY#\"+M!%+U!%+Y!%;]!" + "%;Y\"%[Y$\"KU#$;Y&%KY#%\\)($+Y!'KY+(+Y!%+]!%+Y!$+Y!%+Y!'%#&]A&$]Y!%]Y!'=U(&-U!$MY!" + "%]Y!'MY#%^!!%^%%%]]!%]Y!(-Y+%N)%%^!!&-Y!$MU!%]U!$>%%(-Q+%]U!$MU!" + "%]M!#MY!%]M!&]M!#=E!%]Q!(=I,%M=!&N!$%]Q!&]E!&]E!&=A$#MA!&-A\"'-=\"" + "(=1(&M9%$=9!&]1!%]=!%M1!&=1$']-!'M)%%]9!&M)!'M%$%]%\"$=!!%!!%^%!%]]!" + "'-]!&]Q!&N!$&MU$&=]#%]M!%]]!(-]%$N%!%]]!(-Y+%]Y!%^%!)]Y(\"-Y!(-Q!" + "%]U+%]Y!%]]!&=Q#&-Q\"'-U!)-U%%]Q!&]M!*=M+&M=$'=A($ME!%]Q!&]E!#]E#" + "'-E!$MA!'==(*=5+(]=$$]5\"&-=#)-E+&]I!']-*%]5!\"M1\"&M1%(])/%M1!&-!#" + "%<]!%%(%^-!(=Y!" + "&-]!$^!!'-M''>)''.!%$N!!'.!!'.!+&>%#&-Y\"&-]!%]]!#]]\"$N%!%^!!%^%!" + "%=Y$'-Y!%]M!%]Q!$M]!'-U&(>%!&]A!\"-Q!%=E$%]I!%ME!%M=!%=I$)=I!'-1'" + "%M9!%MA!%]-\"#=9!(M=$&]9&%]9!'-5'&]A!%]1\"%M%*(M-$'\\]&%])\"$=)!%<]!" + "%M5!')!!^!)%^)!&.!!'-]!&-U\"'N-\"%^!!" + "&.!!%^-!'.%!%]Y!$N)!'-Y!$N!!$N!!)]U)%]]!&]]%#>!!%^-!%^!!'^-$$MY!" + "%]Y!#=Y!%]Y!%^!!%]M!'.!!%]Y!%]Y!$M]!*MY!%]Q!%]Q!$=9!$MQ!&]E!&]I!" + "%]Y!&-=#'=E\"#]9#%M5!&=9$#=A!&=9)\"=9!)--!\"-)!#=)!#M%\"(M%$#=5!\"-)!" + "%=!$&M!%&M!!&\\Y'&LY&%,U#$,M)%!-%^!!(M]'%^!!%^%!!.-&%^)!%^%!#>%!&^%%" + "&.9!%^!!$N-%%^%!$N%!%.9\"$M]!%^!!'.%!%]]!%^%!%^%!'N%('.%&%]Y!$>1$" + "*^!!%]]!']])%.!(&-U!(=]!%^%!)>!*)-U*%]Q!%]M!&=U#%]Q!%^!!%]M!$MM!" + "%]I!%ME!'-=!']E$\"-E!'=A(&-E\")=9!%M-!&])&%M5!%M%!%]1\"(-1+%]!\"&=)$" + "'1!'-]!%^!+%]Y!%]Q!!.5!&>!#(>%!*^!!&.=!%^!!'.)!%^)!%^)!&>)\"%^!!" + "&.5!%^5&$^5!%^-!#>%!%^)!%^-!%^)!,N)**.%)'.%&%^!!#^)\"&.)&*.%#%]U&" + "&N!$\"-]!&>1\"%^)!%]Y!%]]!&.5!%]]!#MY+%MY%*-Y)%^%!&=Q(%]U!%]Q!%]I!" + "&-9\"%]M!&]A!&]E!\"-A!(-=!(]A)%]I!&-=\"*-I4&M5$%M5!&-E\"%\\]&']-!$]!'" + "'-)\"%]%\"$=!!&=!$)-!\"(\\Y!%!%&=]#'-Y!#=]!&M]$$N%!" + "%^!!%]]!'-Y!(>)!'^!)'.-!%^-!&N1#%]]!&>1\"%^)!)>-%'.!!%^1!&.9!$N-!" + "&.=!'>)'%^-!%^)!&.-!'-]!'>5&(=]!%^!!'>-!'>9!%^1!&N1$&N)#%^%!'>5!" + "$N)!(>%!%^%!'-Y!$N!!%^%!'.-!%]Y!'-]!%]]!'-Y!%]]!%]Q!&-U\"%^!!#]1#" + "(]I$%]M!\"-U!%MM%(-I!&]E!&]A!%MA!$MQ!&]=!%-5#%]=+&M5$(MA$&M-!\"M5\"" + "'=%)$]5\"'M%*%M!!#\\](%LU!%]!\"&LM!$!!$N!!%^!!" + "%.%\"'^)$'-U!%^)!&.%!'.)!'.)!%^-!%]]!%^)!'.1!&^5%'^1)'>1!#>-!%^1!" + "&>1($N-!(.9*'.1!).1#)^9,&>%#(.1%(^--'>1'&^5*&.5!#>!!#N-!(^)#$N1!" + "(^-#'.)!\".!!#N)&&^)%'>9!'.!!'.)%%]]!(>%+%^!!&]]%'.!!'N%#&-U!$ME!" + "&=Q#$MQ!$MQ!&]Q%%]I!%]Q!&-=\"$MI!#=I!(-A!$]-\"&M9$$-1$&]1!)=-\"$]1#" + ")--&%M-!&=)$'M)$(\\Y!'-!,&=)$%\\Y#&=%$*%!$]Y!&N%$" + "%^%!(>)!'.)!%^-!%^-!%^%!&.9!$N1!%^)!'.%!&N1$$^5!&>)\"'>5!%^-!&.5!" + "'^E#%]]!)^5&&.5!(N9!&.9!$^A!,^1*%^1!'.)&&>5\"&>1\"$^5!&>=\"&N)$%^1!" + "'>1!%^-!%^-%&.9!%^)!'.)!%>)$'^1$&^!%&>!#$N!!$N!!%]Y!#=]!$MY!&>!#" + "&]M%&-Y\"'-U&'=E((-Q%%]M!&-I\"&]E+'ME(%MA!%]5\"&MA$&=1)(=9#%]%'&-1#" + "%MA!&M-!%M%!&=5((M!%$<]!&M!!'L]!%-#'.)%" + "%^-!%^)!(>-!&.9!%^1!&.9!%^!!&.5!&N-#\">5!&>5-&.=!&.9!).9)&.9!&.9!" + "$^E!&.A!%.=\"&.9!%^1!&N9#&NA#'>9!&N-##N9!%^1!'^9)%^)!&.9!*NI$'.-!" + "'>5!%^-!(>)&&^-%%^-!%^-!(N9!&>%#%^1!(^)\"%]]!)=M,%^)!)=Y%%]]!&N!$" + "\"^!#%]M!%^%!%]M!'-U!%MA!(-M!(=I!%]M!(=U!%MA!\"-=*'M5$%==$%ME!%]5'" + "%M1!%M1!%M-!%=%$%M)!%=-$$-!)&M%%(,Y,%\\Y\"&LU!%!!&^-%)N%!%^-!)N%&&^-%$.!$(>-%" + "(^)($^!!%^1!'.%!\".-!&.5!$^5!&.I!(>-!&.5!&.9!&.5!&.=!%^)!&.=!&.=!" + "$^E!&.M!'.1!&.=!'.1%&.5!#N=!&.=!&.9!&.=!%N9$&.9!'>M&#NA!$^5&*.9\"" + "&.9!(.9%(^-(%^-!%^1!&N-#$^5!'.-!+.A,&>)\"%^%!%^%!%]M!%^-!'N)('-U!" + "(=]!'MY-%^!!(MY\"%]Y!%]I!+-M#(-M+(=U&(-=!&]M!(MQ,&MA$'ME(']=/%M1!" + "'M5*(-1'']5&'--\"&M=$$=1!%M)!%])\"$<]!%!!%]Q!#=Q!%]Y!%]]!#>-!%^)!!>-\"$N)%#>)!(=Y!(>-!'>1&%^-!&N%$" + "'N9(&.9!%^1!&.=!&.5!&.9!)^Q&&>5\"(NA,)>=/&.=!&.5!$^=!$^A!&.A!(NA!" + "&.A!&.A!'N=\"\">A!&.=!&^A$&.U!&.=!(N5!'NI'&^A$%N=$&.A!(N=!%>-$$^9!" + "&.9!$^5!&.I!+N9*&.5!&>5\"&.5!$>1$%^)!%^-!%^-!(N!!$N%!%^%!%^%!&.!!" + "!.!%'=]\")M]!'-Y!%]U!$MU!&MQ$(-M!%]M!%]M!%]I!(]E.$MA!'M=$#=5!%MA!" + "&M=)#=5!%M1!%]5\"'M-*(-)\"&M%%$=1!(\\]!%\\]\"&,]#&L]!%!!#M]!(-Q!" + "(-U*&-Y\"%^)!(=]!$M]!%^!!)=U0&>!\"%^%!%^-!%^)!'M](%^-!(N1!(.-*%^1!" + ").9)'>9!'^9#'>5&(>%!(N=!'NM'&N9#*.A''NA''>A!'>9!(NM!&.E!&>E\"(^='" + "'>E&#^M'&.9!).E#*.M!&.Q!'>A!&.E!\">M!&.E!&.]!&>A!&.=!#^A\"&.A!&.E!" + "&.=!#>=%&>=\"&.9!(>1!&.=!&.5!'>9!&.5!(>1%&>-')N10%^%!&N)$&.)!#>1!" + ")>)%%>%#(-U!(=Y&$MQ!(=U'%^%!%]Q!$MM!&MQ$%M1&)=M!*-=$&]E!%M9*$]E\"" + "%=9$#=A!%M9!$<]!%]-\"(=5-#=1!$=%!(M%$%LU!'--\"&]!!%LM\"%\\U\"%!&%^!&%^%!%^)!'.)!%^1!$N%!*^!!'.1!%^1!$^=!%^1!" + "$^E!&.E&&.=!&.5!#NA!'>9!'>E!&.5!%>U\")NQ0%^A*&NQ\"'.I%(^M'(NI!'.=%" + "(>I+&.I&&.A!&.M!&^I)&.E!)^E!&.A!'>I,'>A!&.=!$^E!&.E!&>I!%.Q'(NI&" + "'>A!&.A!&.=!&.=!$^E&&.9!#^5\"'N9'#>-!%^)!$N1!%^-!&>!\"%^)!)N)&'.%!" + "$N!!'.)!%ME!$]M!$MY!)-Y)$M]!(=Y!%]Q!']Y))-A+$MQ!&]=!'ME)$ME!(-=!" + "$MA!*=9!%M9%#M9\"&M%!%]-\"%M)!%]=!&-%$']%!%-%$'=!)%\\]\"%1'$^I!&.5!&.A!$>)$" + "(.5*&.=!&>E'&.A!&NA#'>E!'NA''>=!'^I\"(^A\"'.I%#NI!&.I!+^M#'NM'$^M!" + "%^M%*.A'&.M!'>M!&.I!&.M!&.M!&^I$\">M!'>E!'>I!&.M!&NI()^I,$^E!(^E'" + "&>E!#NI!\">E!)^A!'>E!%^1!&.=!&>5\"#N5!'>5!%N5$&.9!(.A*'^5)#^1'&.)!" + "'>-'%^1!$N%!'N!)'.!!$M]!&-Y'*MY&&]M%#ME\"%]I!%]I!%]I!%M=!'-Y&$MI!" + "&-=#'-5\"%M9!%M5!\"M=#']-*%]9&$=)!'-%#&M-%&\\Y&&L]&$\\]#$=!!&\\U&%!0&]Y%%^%!%>%#(>1!'>1,%^)!*N-%&.5!%^)!'.1!+.5'#^9\"&^9%$.A#'.=%" + "'>Q!&^A$&>=\"'.A&(>A+&.M!%.9\"&.=&&.M!#NM!&.I!&.Q!&.I&&.Q!$_)!\"^Q#" + ").Q-&?!!(NM!'>Q!&^I$'^U\"'>M!&.]!#^Q!'>U!).I.(N=!&.M!'>I&)^I!'>I!" + "&^I$(NA!)^A!&.M&&^9$'^9#&.A!&.I!$^=!'>5!'>5!'>9!%N-%&.5!&.5!&>1\"" + "'>-&'-Y&#^)\"$^!&'.!!'.!&&-]\"&]=!'=Y'&-Y\"%]Q!&=M#%]Q!%ME!$MA!%ME!" + "%]M!%]E!&M9$%M9!(-E!'-1'&=1$%M-&'])!%M%!&M)!%])\"&L]!$=!!),]!%\\U\"" + "%LM!%%!%]Q!'M])" + "%^!!%]U!\"^!#$N1!'-]+$>)$'.-!'.1!&>1\"&.%!&^9%)^=!(.5$$^=!&.A!&.Q!" + "$^E!&.E!$^Q!&.Q!(^Q!'^I#&.A!(>M*$^M!'^E#+NY.\">U!'NM''>Q!(N]&(>U$" + "(>U%&.U&&.Y!'.]$(/)().I#(>Y*(^U'&.U!'>I!&.Q!(>U/&.Q!&.I!)^I!&.M!" + "&>I!$^A!*.M!#>=%&>I!&NM#$.A#*^E%'>9!(NA!'.=%&.9!(NA!&.=&&>-\"&N1$" + "(.1*#^-\"&.-!%]]!)>)*'^!)%^1!#>1!%]Q!%]Y!(-M!&]I!'-A!#=M!$MM!%M=!" + ",]E!']9+$MM!#M5\")-9!%M5!(]5$)--!'=-$&]-'%M)!%-9#%M)!&]!'%]%\"(LU%" + "'LU!&,U#$LM\"(%/%]]!*^%!" + "!-M!&.%!$N1!$^9&(>)!'>)'%^1!&.1!\"N1'(N9+$^9!(^1-(>5+&.A!'NE''.I%" + "&NE#&NI\"&^=$&.Q!&>Y!&>Y!&NQ\"*.Q'&^U)$^Y!'^]\"&^Y#'NM!'>=!&.U!'NY'" + "'NY!(^U!*.Y'&.U!&.Q!'^Y\"&.Y!%/!!+>U'!.U!'>E&&>Q!).U''.Q%&.E!$^M!" + "'>M!(^Q!&NI#(>M%'.Q%&.A!#^E\"&.A!$^5!)^Q&$^=!'>-&$^A!$N)!'>5!&^5%" + "&.5!%^1!).-$'.)%%^)!%^-!'N5(%^!!%-]#$MQ!'-Y!'-U!'-M&'-M!%ME!'-M'" + "%]A!%]I!&-M\"%MA!%M=!%M5&\"-1%&-=#%M-!'\\M'$=)!&<]$%M!!(,U#%!%" + "%^%!).1$'>)'%^-!&>!##N=!$^5!'>1&(.9*#NI!%N=$&.9!$^A!#N9!&>E!*NM4" + "&.A!&.Q!&.M!#^=\"$^Q!#NE!(^Q!)O%#$^Q!&^U#&.Y!'NY!'^Y\"&.Y!&.Y!*>]-" + "'_)(*.]!&.]!&.]!&?%!*?!(&.U!&?!!$^U!\"^Y#&.Y!*?!!&.U!&.]!&N]\"&.I&" + "&.]!&.Q!'>U!&.M!&.M!'>I&%.Q!'>A!&.I!&NI\"&>A!&.A!(NA!%^)!&.A!'N-\"" + "#>-!$N%!%>-$&N-#%^%!&.5!%]]!%^!!$N!!']])%]Y!%]M!)-]%#=Q!%]]!&MY$" + "%-=($MI!$M9!&-A\"%]5\"&-A\"&-A#%M-!%]1\"'--#$]%\"%M%!'\\M\"%M)!$,Y$'L]%" + "%LU!&\\Q&%!!%]]!%^-!%]]!" + "(>!!$>)%%N5%'^-)'>1&!.9!$N1!'>9&(.=$&.I!&.=!%^A&&.I!&.E!&.E!&.E!" + "(NM,'>=&&NQ\"(>A+&?!!)^U,&.U!&?1!*^Y$$.Q#-_-+$^]!&?!!&.]!&.]!&.]!" + "&?!!$_!!'O-!&^Y#&?-!(_%!'O-!&?!!'^]'%^]%$_!!%N]$*.]!&.Y!&?!!&.Y!" + "(^U!$^U!(^Y!'NQ'*NQ##.Q)*.M!&.I&(.E)*NA0&.I!&.=!$^9!(^-\"%^1!&^9%" + "&.=!&.9!#N9!$N1!%.9\"+^)+%^)!&.%!%^!!&N-)'.!%&=]#$MQ!&-]!(-U!&=E$" + "'-A'%]I!(]A$%MA!&-=\"#=-!&-E\"$]9'']1*#=A!%]-\"%-1$#M%\"%!$'.1!&N-$" + "%^%!#^!\"&.5!$N1!)>5*&>E\"&.A!&.=!%^1!'.=%$^M!&NA#).I\"&.M!&.U!)^M1" + "'>Q+'>Q&(.U)&.M!&.Q!$_%!&>]!&.Y!&N]\"&.Y!'O!!&_!)&?!!(_!!&?-!#O1!" + "'_)(&O!\"'N]!'?%%&_9\"&O%\"&?!!&.]!&_!#%O!#$.Y#'/!*%_%$&.Q!'N]!&.]!" + ").]-+NU'*.U!&.Y&&.Y!%>Q#$^Y!&_!#'NI!'>I!&NI\")NA%&.E!'^)*(.A$(.=$" + "&.9!&N-#'>9!&^1%%^)!#>-!&>)\"\">!!%^)!%]]!%]]!%.!\"%]Y!(-U%(=Y!%]]!" + "%ME!%]I!+M5'%M9!#M9!(==\"&-5#%M5!&-9\"%]I!&]=!%M%!,M=&'LM!(]!!&\\]&" + "&9!'^=(+NE4$.I#&.E&'^M\"'^=(!>I''>M&#^Q\"'NY!" + "&.Y!&.]!$_!!&.Y!&.]!'^U(&^Y#&NU\"'O!'!/!!&.]!&?!!%/-!(_)!&?%!*>Y3" + "&?%!&?%!$_)!'O)!*_%#%_%%&?)!'/)$&/9%&?)!'O1!'O)!&?!!&O!\"&?!!&^]#" + "%/-!&.]!'>Q!&.Q!'NY!*.U!*^M**.M2)?!('NE!#NE!&.I!$^A!'^E\"#NA!&N=#" + ")>=/'.=&$^9!'.!!#>1!%>-$'>-!&N%$$N)!%^-!$^%!%^!!%]Y!%]M!%]Q!%]Q!" + "'MM.%]M!&-I\"#=E!&]A%%M9!&-=\"$]9\"&-A\"(=1#\"M-#(])&&=9$%M%!'\\Y!%M%!" + "%\\]\"$L]\"%LQ!&LM&%,]#%!!'=U''^%)'.%!%^%!" + "%^-!'>)'%^-!(^)(&.)'&.=!&.5!\"N5\"\">I!$^A!$^I!$^E!&>A')NY$&.Q!+NU!" + "\">U!)>Y)%^A&).U-(_%!&.]!'/5$&.Q!$_%!&?)!&?%!&O-!&?!!#O-!&?)!$_)!" + "(_%!&_)#&?-!#O!!&?)!&?)!&?%!(/A!*?)!'O),(_)!(>Y*'_%((^U!#O%!+>Q!" + "(O!%(_%!%?%\"&.]!&.]!&?!!'.M%&>U!$^U!'NM'\">M!*NM)'>I!(^Q!&.E!-NA&" + "%>=(&.A!&.9!%N5%&>5\"%^1!$>-$%^)!%^-!'.!!#>)!,>!)&=]#$]Y!&=E#$MM!" + "(=Y&&=U#\"MU\"#=I!'-I&&]=!&-A\"(]A$%]5!%M5!%]5\"(--'&=)$\"-%!(LQ!%]!\"" + "&LY!&5&&.Q!&.Y!&.M!&.Q!+>A'$^Q!&.U!" + "(^Y!)^U,'>U!&?)!'N]'#N]!(_%!$_)!&NU\"&.]!'O)'&?%!&?5!&?1!'/9$%/5!" + "&_-#$^]!%/5!'_A''O-!&?1!'/1$'/5$*_1)+O-!&?-!%/-!'O)!&?)!)?5\")?%(" + "$O!%*O!/&?%!&.]!'O!!%/!!$^Y!'>U!'.Y$'NY!(^Q!&.M!$^M!&>1\"&.E!+>M!" + "&>A\"&.9!&.9!&>=\"&.5!&.-!&.9!&N-)(.1*'.-!&>%\"&]]%%]Y!%]]!'>!')^!(" + "(-M!%]Q!$]M!%]I!\"-E!#MA!'-1'%M=!%M9!%=-$&=1$(=1('=!)%]%\"%M%!'=%(" + "']!!%LU!%M!!*1#" + "&.5!&N5#&.9!'.I/&.A!&.=!%.I!&.E!%NI$#^M!&.E!'NU!&.Y!&^A$&.Y!#>Y%" + "'N]''^]!&.M!%O%#&?%!$O5$%/-!&?)!(_!!%/-!)/5-%/-!&?1!'O)!#O1!&?1!" + "$?1#*_-)&?-!&_1#(?))'_1!&O-\"*?1'&?!!*?5''O1!&?9!(O9$&?%!'?)%&?)!" + "'/)$#NY!&?5!&?!!&.U!,/)/'O%!'/!$&.Y!&.Q!&.M!(NQ&&.M!'O!!(.E)&^E)" + "&.=!&.A!&N=#&.=!'^5#&.5!(^1-%^1!$.-#$N)!&MU$&]]%%.!\")M]!%]]!(=]," + "#=Q!%MQ$%]Q!\"-Q!%ME!%MA!%ME!$M=!%M9!&-=\"%]=!$]=\"%]5!#=)!'])+#]%#" + "&M!%(]%!)\\Y!&LQ!%LM\"%\\Q\"$%\"'.%&'N-('>1''.1!" + "%^)!)^9&&>9\"\">=!'>=!'>E!&.E!#^5\"&^Q#\">Y!'.Y%#NM!->Y*'^Y\"#NY!&.U!" + "$_%!&?!!%/5!&?1!#O)!&?)!&.Y!&/)&'_-(&?-!)/1!(?1$&_5\")/1!(/=\"(O5*" + "&O%\"&?A+%/1'%/5!&?9!&?5!)?5(&O)\"&?5!&?A!&?5!&?9!&?9!#O)!&?)!)/-!" + "&?)!)/)''/!$&?-!'NY!(_%!&?!!)/!-'>Q!$^Y&&.M!&?!!&.U!).A#'NM'(NI!" + "&.A!&.I!%N=$+>9((N5!'.A%&.5!%.-\"'.1%%^-!&>%#&=Y#%^%!*^!''-]!%]I!" + "%]Q!'>%'&-Q\"$MM!%]M!&M5%$=9!%]I!&-9\"&-E\"'=5(&-)#&-A\"%M5!&]5!%]-\"" + "&-%#']%&%%&$^1!$N%!%^1!\">5!" + "\"N)\"&.5!&>9\"&.A!&.I!$^E!&.Q!&.Q!&.I!'NY!$^U!&^U$(^U!(^Y!(_)!&.]!" + "#NU!&N]\"&.]!&O1!%/5!&?-!*/!!&?=!%?1\"%/1!'O9&%_9*&?1!*?9!&?9!%/-!" + "&O1!%/=!)O9\"'/-$&O5!'_5'&_9\"&?E!&_M\"#OA!&_5#&?-!,_5&&?!!'O1!)_A*" + "&?5!(_-+'O)!&?)!%O)#'?-%&?!!%_!$\">]!&?)!&.Y!#NU!'>U!&.M!'>I&&.M!" + "&.I!'.E+&.A!&.A!&.9!&.A!$N1!#N=!'.1!%^-!'^))'.)!\"-Q!&>%#%]]!&.!!" + "$MU!\".%!'-A\"%]Q!%-M#']=%'-E''=A(%M=!&-9\"$]1\"%M5!(])/+M%3%M%!%]!\"" + ")=='%]!\"\",M!%\\E##\\U#$\\E#%U!#NU!(>]$$_%!'?!%'.]/#O%!" + "&?-!&?)!&O)!#O1!\"?9!&?=!&O1(&?1!'?=%&_5\"&O=')/E!&?5!&?5!(/M!&?=!" + "%/=!&?A!'?=%&O=!'O=&&?=!&?9!)/A,&?=!)?=(%/9!&?9!&_9)(OA+'/1$&?)!" + "&?1!&?=!)/-!#O-!(?))%/-!$/%-&?%!&.U!#O)!#O!!(^]!&.I!'.Q*(.Q$&.U!" + "&.I!&.I!&>E!'.-%&.=!&.9!(N9!%^-!'NA!$>5)*N)%%]Y!'.-!(>%!)M]!%^!!" + "'MY#$]]&%]U!&=Q#%]M!$=E$\"-I!#=A!%]A!%M=!+M=!%]I!(-1+'-)\"'])+'--'" + "%]-!%M!&\"<]\"',Q#$\\I#'<=!$\\I#%LQ!\",I!%LI\"%\\A#%L=\"$,=!&<1!%L5'&LA\"" + "%,!!%\\)##<1\"#+Y!&+]!'+Y!&L!'%[E!$[E!%+]%%;E\"%[E$'KE($[=!$[5!&[M-" + "#[1!%;5\"%+%\"$;5\"%[%%%;!$#[%!#[!!$:Q$#JI!\"JM##ZA\"%ZI*\"ZE!%*=&$JE(" + "\"Z9!$J9!$J5!#J%!$*!##J1!%I]\"#J!!%:%(#)M#%9]%#9Q!$9M%#YM##IE\"#I=!" + "%I)(\"Y1\"%I5*%)-%&9A*$Y=#\"II!%IA##9A!#II!#YI#%9U%$)Y##IY!$:-#$IU\"" + "$:5$#J-!$J1%#Z)\"#J-!#J%!\"Z9!#Z=\"\"ZA!%ZQ&%*Q'$ZM\"$:I$'ZU\"!:A\"#[!!" + "\"Z]!#[!!#[%!#[%!![9!$+=!$+5!%[9!&+M%%+A%&;A&![I!$[I!'+M!$K]#';U+" + "%KM#&+]!&\\%#$,%!%<9!$<)\"',5-%\\9#%LM\"'<5*&LA\"%\\A##,5!$LA\"$LA\"&\\Q&" + "%)'%^%!%^!!%^1!\">-!(>%!\".1!" + "&^9$&.I!&NE#%^I%'>E&&.M!&>M!$^Q!%>]\"%>U((.Y)'O!!&.U!&.]!&?)!&?-!" + "&?-!#O)!&?)!$_!!)/%!)/E!&?5!%/9!#O=!&?9!&?E!&?=!&_E\"&?=!%/E!&_M(" + "&_A\"&OE!'_A!'/U#&?5!'?E$(O9$)_A#&?9!&?A!&_A\"&?=!)?-.&?9!&?=!&?5!" + "&_%#'?5%&?1!(/1)&?1!'O)!&?)!&O%\"$.Y##/1$&.]!'>E!$^Y!&.U!)NU/\">]!" + "*.M!&.Q!&.I!&^I$&.M!(.A*(^-.&.A!'N5'&.=!&>%(&.-!\".%!%^!!&-]\")]](" + "$MY!']Y%&-U\"'-U!']M*%]I!&-I\"%ME!%ME!$]-\"%M=!#=5!%]5\"'M-.%]1\"&M%!" + "%]!\"'-!'%L]!%M%!'M!*$A!'.)&&.5!$^9!&.9!" + "&.9!(^A!)^E!&.I!&.U!&.A!&^U#'.Y$#^I\"&?!!'NY!'.]%%/-!&?)!'O%''O)!" + "'O-!(_)!&?-!)?1))?5!'_9!&?E!)?I!&?=!#O1!&/E%'/A##OA!)?E'*OA!*_U(" + "&OI')_A*'_E!)/9!#OA!(/A!+_E!'_I!)/A!*O=!'_A!&_=\"%/=!&?=!&?-!'/9$" + "#O9!'?5*%?5\",_1&&_1)'>Y&'/-$&O-!&.Y!&?)!$_%!'>]&$^M!$^]!&.U!+.Q," + "&.U!(NI!)^I&&.Y!&.E!(.A)&.9!&.9!'>1&'N%\"%^1!$N)!%N-%'.%!\".1!'.!!" + "&=M$%^-!&]Q%'-]!%]U!#=E!(-M%&=E#$ME!)MA-(=I,%M9!'=9('=1-$=-!']5!" + "%-=#%M)!'-!(%<]!&LY&$-$&N=#'N5').5/*^A%(>5+" + "(^A-(^E-$>1*&.=!&^M$#^E\"&.Q!(NU&(N]+&NY'\"NU!*_!#&.]!&?-!&_)#&?-!" + "(_1,&O1!&?-!&?=!&?=!&O9!&?=+%?A!%/=!&?E!'_A!*_Y!'_A!*O=!*_E(&OI!" + "&_I\"+_=!'?I$&?E!%/]!&OI!'_I!&OU!)/E!&?A!*OE!'_E!-?I!#O=!'_A!'_A!" + "#O=!&O-\"&OQ!&/Q$)/5!&?=!&?)!&?E!%/)!%/%!$_!!&.]!&.]!&?%!(/)('>U!" + "(^Q!'_!(*>U\"&.M!&>E!)^E!(>A&'.5&'>=&'.I*(N5,&.5!%^%!$>)*%^)!'^%)" + "\".!!'.!!%^!!\"-U!&]M!%]Q!&=Q(#=I!$=9!%MA!$M=!$]9\"'-9\"%]M!$]1\"']-!" + "%M%!'M)$*-!!$L]\"&,Y(%-%$%\\U\"%\\Y\"%LM\"&!!&N5#%^-!%^)!#N=!$^E!&.A!&.I&" + "(NE&'^A('NM''^Y('^U(&.Q!(NA,'N]!&?-!'O!!&?1!&?-!&?1!&N]\"&_%#)/=!" + "&?5!!O9#$_%!&?9!%/9!)/5!&?=!%/Q!*OA!*/E%*/E+*OM!,_E+#OE!&OI!%O=#" + "&OM!'_Q!&OM!'_M'(_E+(/Q!&_=\"'OM%\"?E!'/M#&?E!'_I!)/9!)/E!'_I!'_I&" + "&_I\")/=,(?9)&_9\"\"OE!'_5'&O)!(/=(&?-!'_!!)O%#$_%!$_!&&N]\"&>]!&.U!" + "'NY!&.Q!&.M!$>Q$&.M!(NM!%^1!%^-!%^%!&N9#&>-\"'N1('^-#%^5&).-$%^!!" + "'-U!&]]%$MY!'=Y((=Y!%]U!!-I!%]I!!-E!'=U\"&]=!!]A$']5!%M5!'-%#\"--!" + "(])&&-%$%M!!&\\]&&-!($!%$MQ!&MY$%]U!$MU!&-Q'-N%.&M]$'.-!$N1!&>5\")^9'&.9!)>5%&.M!" + "&.E!(.M)&.M!&.Q!&.U!&.U!$^M!(NI!'N]'(?!)&?%!&?%!'?)%&?-!'/-$+O1'" + "(?5#&?5!&?A!'O5!&?=!'/E#+OI%+_E!&_E(%/I!&OM!&OQ!&OI!&O]!)?M!&OQ!" + "&OI!%/E!&OU!!/Q!*OM''_U!&OU!&OQ!&OM!)OM\")OM((_I+&OI!'_E!'_A!\"?5!" + "*?E&&?9!&OM!&?=!'?9%!/5!&?%!&?)!&?-!&?E!#O)!'?-%'_-'&.]!(/)(&.Y!" + "'^U(&.Q!&.Q!'>M!(NE!&.I!&>-\"+NQ-\">I!(^='(.=$$^A!+>E!(>-&#>)!)>%+" + "#^!\"&-]!&>!\"'MQ#%]Q!&]M!%]M!%ME!)=I!$=9!%ME!&-9#$M=!&M)!%<])&M-!" + "%M)!&]5!',Q#%=%$%\\]\"%\\]\"(-!-'LI+&%!%^)!$^9!$N-!'^9#&.9!$^9!&.=!$^A!&.E!" + "&.M!&.U!$^M!&^Q#&.M!&?1&&.M!&N]\"&?!!&?!!&?)'&?)!'O%!'O-&&?%!,O9%" + "'O)!#O9!(_=%'OA&#OA!'_=!&OM!&?E!%/E!&OI!&OM!'?]$'_M!%_U#&_U\"&OI!" + "#_M!-/Y,&OM!&OY!'/U)&_U\"(OM$%_M#(?Q)&/U$'_Q!&OY!&OI!#_Q!%/=!*_A\"" + "'_E!(/A\"$/Q\"&?=!&OE!&?9!&?9!'?-%%/1!&?5!,?A\"'O)&'O%!$_)!._!1&.Y!" + "#.U)&.Q!$^Q!&.Q!%^M%&.Q!&.A!&^=$&NM\"(N=!%^1!(>5&'.-*$]U''.-!&=]#" + "$N-!%]U!'-Y!%]Y!'-U!%^!!&-U\"%]M!%]I!']E$%]A!&M=$&M9%(]%*$M5!%M-!" + "(M1)%]-!&=-$&\\]!%5!&N)$%^-!%^1!&>1\"&.9!'>9&'>A!&^Q#'>I!" + "%.I!&.M!&.E!+>U!&.E!&.U!(_!&&.U!'_!\"\"N]!$^]!#O%!'O1!&?1!'O1!)/5!" + "&?5!'_E!'_=!)?M!'_E!'_A!)_I*'_Q!&OI!%/E!'/9#+_Q&&?E!\"OM!&OU!)_Q#" + "!/]!&P-!&OY!&P)!(/]!)?I!'_Y!)/M,(/]!&OU!&OU!(_Q$&OY!(_U+'_M!(?=)" + "%/=!-/M&)/=!&OA!%?=!'O=&&OI!'O1!'O%!'/5$(O9*&?1!(/-)&?!!&?%!&.Q!" + "&.Q!'^Y'(NE!$^Q!&.M!%.Q!+^M)&NI#'NA'&.=!'>9!&^9$&^5%(>A+%^-!%^)!" + "$^%!%^!!%]]!&]U*&N)#&-U'%=I$'-U!%M9!*=A&#=A!&]A&(=9,'M5)&M5%'M5)" + "%]%\"%]!\")-1&'-%\"$!!'>9!'>5!'^-#'N1\"'>5+&NE#$^I!&.A!'>A&'^E#" + "&.I!#^E!%>M\"*NY\"(NA,&.U!'O!!$^]!&?%!&?%!'O)!&?9!&?1&'_A''O5!)?9!" + ")/=!'?=$)/A!*OM!&?5!#/I#(OI$)/E!)?M!&OI!$/U(&_U!&OU!'_Y!%_Y#'_U!" + "&OI!+?]*&P!!%/]!%0!!(/]!&O]!&_Y!'/]\"(OY*(/Q')?U!$/U\"#_M!\"_I\")OQ\"" + "'_U!(?E)%/I!'_E!&OM!&?=!+OA7$_Q%*O=!'?-+(?1#&?1!$/1\"&?=!&?%!'O)!" + "(^M-&?!!#NU!&.U!&.]!(>I+'>U!(NI!&>I!&>E\"%^)!&.!!&.I!%^-!%^!!'.)!" + "(>!!'.%!$N1!%]Y!)-]*%]Y!']Q$%]Q!&]M!%]U!%ME!'-=\"%M=!&-5#%-5#&=12" + "(M)$%M)!$M-!(]%!%-!$&-%$%L]!'LQ!%1&'^1)(N5!'>A!&>A\"%.I\"&.I!&.]!" + "(NI!%>I()NQ*(>I%$^Y!(_!,&/!&&.]!)/-(&?)!$_%!'/1$'^]!%/5!'O1!'O9&" + ")_A/)/A!-?1)+/E#&OI!&OM!$/Y!'OU%&_Q\"&P!!\"?U!#_]!'?Y$&OU!(/]!#_]!" + ")/],(_Y$'@!#%`1\"&P)!%0!!&P%!&O]!&OU!'/]/'/Y#&OU!&OY!&OU!'P!%(/]'" + "#_M!%/]!'_E!(/I!'_=!&?=!%/A!&?A!'O1!&?5!&?1!&?A!%/-!&?)!&?%!'>Q&" + "%NM$+N]'(NM!'>A!'>Q!'>M!&.E!&>Q!'>E&+^=+&.=!%N1$%N9$(>-!&N-#$^9!" + "&^)%'>!\"%^!!%]U!$MY!%]U!$MY!%]Q!%]Q!%]I!%ME!%]I!#]E#%M1*%M5!']-*" + "'-9'']-!'])+%M1!'=))'%!%]U!#MM!%]]!&-U!%^%!)N)1(>)!'.%!&.=!&.9!&.=!'>E!&>A!&.Q!$^I!" + "&NA##NY!,.]$&.M!&.U!&.U!&?)!$_%!'O)!&_1\"&?1!'O1!(/9(%?9\")/=!&?=!" + "&OI!'_E!*_E\"%/M!'OI%(_Q$'OM%&_U\")/U,&OU!&OY!&_]!&O]!&OY!)P-!(@!\"" + ",@%!&OQ!(0!!'`!,-`1!(?]\"'_U!'0-\")@!!(O]))OU.&`%'&_Y!'@!$&_U!&/Q%" + "'_Q!&_M\"#_E!%/M!,/E!'_9!&?1!\"?1!%/9!&?9!&_5#)/1!&O)!&?-!$_)!&?%!" + "&O!\"&.Y!*?%!&.Q!&^U$\">Y!$^M!'^Q\"&>M!$^=!&>A!&.9!(NI!$^5!*.-.&.)'" + "%]Y!&^-%%^!!$M]!\".%!%]A!%]U!$MQ!%]M!&]I%%M5!%]I!'==#&-A\"%-=$(-A!" + "'-1'#M-\"$=%!$]%#&,]#%<]!%LQ!%\\Q\"&)!%]Y!'N-(#>)!'>5!$N1!'^-#'N9'&.9!%^1!&.E!#NU!&.M!" + "&NI#%>Q\"#NY!*.U!(^]1!/%!(?!$&?5!&_1\"&?1!&_1\"'_5'&?=!&?-!+_=!(?9)" + "'O-!'_A!*/M$%OE#(OM$(?M\"'_Y!)?Y!(@!\"&OU!-0-#%O]\")@-&(0)!*`)!,@-'" + ")`%)&P%!(0!!'_U!(@%!)P-!(/]!(0%!(OQ#,@!!)@!!&O]!&P1!&O]!%/Y!&OU'" + "%/]!&/Q%&OM!)?M'&OI!,?E/'_E!\"?Q!'_=!&?A!&O1!*O=-%?1\"%?!($_)!(/1)" + "&O!\"&.]!&.]!$^Y!&NU\",NQ!&.]!'N]!'>M!&.E!\">A!&.5!%^-!%^)!&.-!%^)!" + "%>1#$N)!&.%!&.)!'-Y!%]U!)=Y&%^!!&]A!$MI!']9%'-U!$MA!%M=%%M9!&M5%" + "'-9,&-A\"%]-!#=%!&,M#%M!!%<]!&,Y#',Y##LI\"%-!%^)!(>1+*^1%&>5\").93#NA!'^A(&.Y!$^I!)^E!" + "'NQ'%NY$*.Q!$^Y!&.]!(NQ&%?%\",O),'/-$&?!!&_5\"'_E!(?%*)/5!'_5'&?=!" + "&?E!(/9(&OI!)/Q&&OM!&_Y!(/Q-)_Y.)?]!&P!!(0!!,?Y4(09!'_I!(@!\"(09!" + "(0-!(0)!+0-!(@)!-`)!)@!!(0)!(P9\"(0-!)0%%)P)!(@!\"%0!!&OY!&O]!&OY!" + "(_Q+-OY!&OI!$?M#$OE$(/E!*OI!'?=%'_I&%OM\"&O9!#OA!&?1!(/=((/%#'_)!" + "$^Y!&.Q!&?%!$^U!'>U!&.Q!&NQ\"'>M!&.9!&^Q$$^A!&>=\"%.9\"&.5!&>5\"%^1!" + ",.%-&N1##>!!\".!!&-]'&-]!&]U%'-]!&-M\"&=I#'=I('=E\"&]A!%M=!&M9$%M-!" + "&]1!&]1+%M%!%M%!*-%&%M)!)-!,%)!%^%!'N5(%^-!%^-!(>)!&.=!&^9%'^=#&.5!&NM\"&.=!&.U!" + "&.I!+>U!&^Q#&.]!#^]!&_)(&?)!$O1$'O)!&?1!'/=#'O5!(/5((?=#*OA!'_I!" + "(?I#%?I!)?I!'_Q!%/]!'_Q!%@%!(?M\"'P%$(/]!(0)!$0)!(0)!\"@!!)@!!(09!" + "(0-!/?Y)(@A!(0-!(0%!+@-),@-!)01%)@!!)P)!+@-/#`%!*?Y,'_Y!'?U$(_]+" + "&O]!)O].)?Y'\"?Q!&OI!&OI!'_Q!)?Q!&?A!&?=!&?-!&?-!%_5$&?1!&O-\"'_)!" + "&?5&&?!!&.]!&.I!\">]!$^Q!&.Q!&.M!'.=%'>U&&.=!$^=!\"N=\"&.9!%^-!&>5\"" + "&.5!%>-$%^!!$N%!&]]%%]Q!$MY!(=U!!-Q!&]M!%ME!)-=!&]A!&]A&&-E\"$=A$" + "%M1!%M-!%]5\"$<]!$=%!%\\]\"%\\Q\"%LY!&\\]&'LI*%!$%^%!%^-!$N%!'.)!%^-!&.9!$^I!'NE!(>E%'>A&)^I!&.I!" + "&.U!&>I!'^Y'*.Y!&?!!'O!!$_)!&O)!(O5%'/-)*?5,&?9!'_=!*OI!!/A!)/A'" + "(?E#&OI!&OQ!(_9%!/U!%OY('`!&&P!!(0!!(`!$(0!!(@!!(05!(0-!-0)1&01$" + "#`1!\"@1!'01\"(01!(01!(/]!(P)\"*`%!&`-!*0-**P-,'0)\"(_U%(@%!+/]!)@!!" + "&O]!*/U+(/Y'%/U!&OQ!'_]&&?=!'_M!%/I!#_I!&_A\"&?9!&?5!&?1!&?1!#O-!" + "+_)(\"?%&$_!!'N]!&^U#'NU'&>I!&>M!#NI!&.E!$^E!&.A!'.A&)^9!)N1!#N9!" + "%^)!'.-!%^%!&.%!$N!!$M]!$]M\"%]U!'MI)(-E&%M5!%]M!&MA$&-=\"$=9!%]5\"" + ")MA(']1/%M1!%M5!#M%\"&,]#%-!$&L]&$\\Q#$LA\"')\"(^)(%^%%'^-#$^5!%^-!(>1!&.=!)^9''>A!&.I!&.M!%.Q!" + "*^U5'.Y$(^Y!#NY!%/%!)?!#(?-#&?-!%/1!&_1##/5$&?9!&?=!)/A!&?9!&OQ!" + "&?E!&OM!&?9!'/Y\"&OM!&OQ!+0!!*0)0#?]$&P%!'@1#&P-!(09!&`9!(01!)`-(" + "&P1!)@A%'`-%#`5!%`5#&`5!%@%!)@A%+01!(0-!)P-!,@9&+0!!%@1!%@%!(0!!" + "%?]!(0!!*OY&&_U!&P!!&?A!)_I*&?E!'_=!)OA.(_5&&?5!&?%!&O1('_A!&N]\"" + "*/!2\"?=!*>]''O%!&.Y!(/%('^Y\"#NQ!$N=%-.E0#NA!&>=\"(.%*&.A!&.9!'>5!" + "&^!%&N)#%^)!&.5!%]Y!$]Y!&]Y*&-U!(-Q%%]M!%]Q!&=A($MA!(]A/%]='(-9'" + "'-5'$]1\"%M-!%M1!(M%$&-%#&M!%'LY!&,U#%LQ!$5&&N5#&.9&!.=!(NA&)>A$&.E!&.Q!(NM!" + "'>Q!'.U%'^]\"&.U!'O!!(_%&&O-!'_-!&?9!#_9!\"?=!#_-!*_9))?I!)?E')?M'" + "&?E!'/U#&P!!-?E'(/]!\"_]((/]!+@)/)0%%(@)!(09!)@1&+`11&01$)P1!'P5$" + "+P90(05!&`9!'@A)(09!&`5!&`9!%P5!'05\"#`5!,P5!)01%&P-!(0%!)P)!(0%!" + "(0!!(0-&&OU!&OU!&OU!'_I!&_I\"\"?Q!%/U!'_A!#OA!&O=!&O9!%/5!'/1$)_)*" + ")/5!'^]\"#O!!'N]!'.]%'?%&*>E)&.Y!&.I!&NI\"&.=!\"^A#(N=!&.A!&.5!&^9$" + "&.5!&N1#(>)+).-)%^!!%^!!(-M+'=I(#]U#%]M!%=A$)-9+)=M!&-A\"(MI-!==\"" + ")\\]%#=1!%M)!%LY!\"=!\"%,Y,',U#$L]\"%]&'O!'$^]!$_)!&?-!&?5!(/A('?E$&?=!'_=!(?I#&/E%&OI'" + "&OM!+/Y)\"OU''OY%)/Y&&O]!(0%!'P)$(0!!.@A/&P%!*0-#&P-!$`A$&`9!'01\"" + "%@9!&`9!\"P-'&`5!(05!&`5!!0=!(`9#&`9!&`9!&`5!)`5((0-!&P!!(0)!'_U!" + ",/]!&O]!&_]!)?]'%/U!&OQ!'?I$&OI!'_E!'_E!%/9!&?=!&?9!(_)!&?-!&?%!" + "$^]!'/%$%/5!(^]!#NU!(NY&&.]!'O!!\">Q!&.]!&.A!&NA#&N=#&>=')^9!&.5!" + "(.5*%>-(&>-\"&.!!\"-]!(>!,$MY!&MU$%]U!&=M#&-Q\"'MA$$MI!'M=$&-E\"&-9\"" + "%M-!*=1,$]1\"%=)%%]%''=%$$<]!()!%^-!%^)!)>-%&.9!'.M%*.U!%^1!$^E!&.I!&.U!%.Q!" + "'>U!&>A!$?!#$^]&&?%!'?!&%NY#&?-!&?)'&?5!&?5!&?9!&?E!)/E!#`!!!/M!" + "(/Q('?M$&OU!'/Y#(/]!&OU!(0!!(`!$)0%%)_]))P5!(0)!'P1$'01\")P=!&`A!" + "(@=!(@A!+0A')`A!*@A*(PI!&`-!&`=')0=*'@1#(P5\"(@1!&P1!(0)!)@!!(P)\"" + ")`%\"(_Y$%/U!(0!!'_U!&OM!$/U\"&OQ!&?A!'_=!&?A!&?9!'O5!(O5$&?-!&?1!" + "&O-!&?!!&.Y!%>]($_%!&?%!%NQ))>Q#(NM!&.M!$^9!'>I!$^A&(.=$(.9*%^%!" + "%^1!&>%#(^92&>1\"%^%!(>!!(-M0+-U#(>!!%M=!%]M!&=I#%-=#$]=\"$M=!%MA!" + "&-=\"'-A\"&-=#)M!.*-%!'-%\"'-!'\"5\"&.5!&.9!&.I!&.Q!&NI().U\"&>E!(N=!&.Y!" + ")O!*(N]+&^]#&.Y!\"?)!$_!!'O1&&?5!&O)!&?9!'_9!&O=!(OE$)?Q!%/M&&OM!" + "*OQ!&OU!(/Q!%/]!'?]#)/]%(0!!(09!-`9'*@1+(`5#'P1$)P1-%@=!(@=!(@=!" + "&`A!'`I%(@Q!(@E!*PM*)@E%&`A!)`Q!(@A!&`Y!&`=!'PA*(01!)`%)(01!(`=#" + "(0)!'_Y!#_Q!)/Y&#_I!(?]('_Y&&OM!#_M!(?M\"&?A!(_=&#/9)&?9!&?5!&?1&" + "'O-!%/-!&?%!'NY'&NY\"*?!!*>U\"'.U%$^E!&.I!(.E)'>A!&.A!$N1!(>9+(^-#" + "#N!!$N-!'.)!(>!!&^!%$M]!&=I#%]Y!%^!!$=U%%]M!%]I!*]Q!'=E(\"])$$=5!" + "&-9\"%]1!&LY!$M9!'M%%%=%%&=!$%M%!&M!%%]'&?5!(_)!'O)'&?!!%O-#&?9!(?9*%/E&)OE\"'_E!(?I\"'_=!" + "%/U!(`%*%/]!+`)%&P)!(0)!+P96,@)!+0-!(0--'P5$)`9.'05\",P=!(@=!(`I\"" + "+@E')`A!&`Q!+@A!)0I$#0U#&`9!(@E!(@I!+01!&`9!&`A!#`5!+`%2(0-!(/]!" + "(0)!)P%!&P%!(/]!#_]!#`%!$?Q#&OI!&?A!'_E!*?9&(_I%&OA!'O5&*?5!'/1$" + "&?-!).U\"&?%!'/!$#N]!%NY.&.]&$^Q!'>Q&#NI!&.A!'>E!&>A!&^1%&.5!'>9!" + "%^%!%^-!$>)%%.)\").!%'^%*)M]!%]I!%-U#&]M!&]M%']I$&MQ$&]A&*-=%$]9\"" + "%M9+(-%,$]1\"']%!&]-&#\\]#&\\Q\"$\\E#'\\Y+',U#&A!&.E!'>A!&.M&'^U($^A!" + "$^U!&.]!$>]$&.Y!&?=!&?)!&O-!'O9&)/A&'O1!&?E!&?A!+?=+&_I\"&OM!#OE!" + "&P!!%_U)'O]%)P)'#`%!(0%!&P%!+@-\"&P1!#`1!,P5!(`1#(@=!(@A!+@]!(`A#" + "(@E!*PM$)`M!&`E!%@M&(@I!'P9*'0E((@E!*PE+&`9!*@9#%@A!,@-!(P-)(0-!" + "+P)1,@)!(0!!'_]&(/E!&OM!%_U)&_M\"&?A!'_Q&'_E!&_A\"&O=!'O=&#O5!%/5!" + "\"?9!#O!!)_%%*O-!(^U!$_!!&.Q!%>Q($^=!&.E!$^Y!(NE!&N-$&.A!&.I!'.5&" + "$N%!%^)!)>-*)>%0(-U+&N!$%^%!%^!!'=Q\"#]Q##=M!%]I!'=A#&M=%'-5'$=5!" + "%M5+%M1!&=-$$=-!%])\"$=5!'<])&])&%M!!$1\"*^-!$^5!&.I!&.=!&.9!*.I-#^I\"&.M!'>Q!).U\"" + "&.]!'O!')/!-&.Q!'/9##O-!'O-!'O1&&.]!'_9!&?A!&?E!(?M\"&OM!$/Y\"%OQ\"" + "&P-!%/9!%/Y&&_]!*@!$(0-!(0%!)P9!(01!&`9!(09&)`9(+P5*(09!)`I!(@I!" + "&`M!)`E!*0]!'@Y\",@M%(@I!%@M!(@A!#`9!(@Q!+@=/&`M!(`A#&`9!(@1!(0-!" + "*0)))@%&%/]!'_Q!+?Y#)OU!&OU!&OQ!&_M\"&OE!&OE!&?A!)/='$OE$*/1+)/9!" + "&?5!$O1%'/%$)/%!&?!!$^]!&?)!#O!!%.U!&.Q!$^E!).I.$^A!&N1#&N1$%N1$" + "&.%!$^I!&.)!&.9!'.%!'.!%%]Q!$MU!&-U!%]U!'=M\"'-Y!)-9&(-A!'=5##M9\"" + "%])\"&M1%#=-!&]-!%M)!%]%\"%]!\"%M!!&\\Y!#)+(>A%&.5!%.A!'>5!'>9&#NA!*>I\"&.M!$^I!(^U!" + "(_%!&?!!)/!($_%+'O%'&?9!&_1\")/5!'?-%&?1!\"?=!&?9!'_E!'OM%&OM!&OQ!" + ")_Y\"&OY!&_]!&P)!(0!!*_Y!%@)!\"@-!(0-!%@5!&`9!&`I!,0E$)PI&&`A!(@E!" + "(@M!)0I$+0Q,(@]!&`Q!+`Q\"(@]!*@I)(@M!&09#&`M!+PM/(05!(P1)(01!(@-!" + ".P)$'_Y!(/]!&OQ!&OY!(?]/&OQ!&OQ!'_M!)_E/+_E,&?A!&?=!&?5!'O!!&_5#" + ")/-!'/)$(/%((_!!&O%\"&?!!'>Q!&.I!&^M)&.U!'>E&'>M!&.A!&.I!'NA'&>5\"" + "(N1,'.-*(>-!*>%*,.%-%]Q!%^!!'=U\"'-U!(-U*(=Y!'=I()=E1$MA!'-=!&M9$" + "'M5$$]A\"&]1&&M-!&]-!'M%%\"-%!'-%''LY%),Q'#,M!&,I#%\\A#$LA\"&,I$&\\9(" + "%L=\"%\\=#%<5!%,1!$,5!%+Q!%,)!%9!%^)!'-]!%^!!&>1\"&.5!&N9#&>-\"#N=!&.=!%>=#(NQ,'^Q(#NU!" + "$.Y#$^]!&?!!&O)\")O!)(/)(&?-!%/9!&?=!&?9!&?5!$_5*+?5+&OI!*_M(*@!%" + "\"?U!&OY!&P)!&`-!/0!!)P%!(0%!&P-!(/]!(`=#(`9#%@=!(@I!(@E!,@U+&`U!" + "*0U!*`Q+(@Q!)0Y#)`Q!+@I!/`Q!(`E\"(@I!)@E%*PY*(P-\"&`9!%@9!(01!(`-$" + ")?]&(@)!(O]#&P-!&P%!&P%!&O]!&?U%&/E%'_M!'_E!&/A%#O9!*OA!)?=('O1!" + ")_-%%/1!'_1''?!&+O!!(/%\"%^I%\">Q!$^U!'>E!$^I!%.E\"'NA'$^=!&.=!#>1!" + "$^-!&^-%%^-!%^%!#>%!$N!!%]]!(>-!%]U!'-Q&(-M!%=I$'ME$(-=!'-5'$=-%" + "%M-!&=5$%M1!%])\"&M-!&=)$',U##,U!*\\Y*$!*'.-!&^5$(>)!$^1&(.1*'.-!&^5%'>A!&.A!'^E\"&.A!&.Q!'>U!'NU," + "&.Y!&?!!(?!)&?)!%/1'#O)!#_1!\"?-!'/!$&?9!%/=!&?E!%/A!&OI!'OM%)OI)" + "#_U!'O]%)?]!$P%#(/]!(0-!(0)!(05!+01!&`5!,P9!%@5!&`A!(PI!*0I\"(@M!" + ")PQ&(@U!+@Y!+P]!(@]!)PY%-@]\")`M!)`E')`I!&`=!%@A!%@9!#`9!)01$(01!" + "(P)\")P%!(0!!(/]!+@!0&OY!&OU!*OM!#OE!)_Q)&OM!'_=!'/=#'_9!+O1!\"?1!" + "(>]*)?)()_-1'/9$&?%!&_!)&.Y!'?)%&NY\"&.M!)^E!$^I!'^=)(N5!'>=!&.=!" + "%N5%&.5!%^!!%N5%'.%!%^!!%]]!#-Y$)-=!'-M&#]M(&=E$&]E&&M=%'-E'%M9!" + "&M%&&M5*%M%!']-!%M)!%1\"&>!\"%^-!(^M'(.9$'>A!'N='*N5+&.I!'NM''>Q!%^U%" + "+>Y-'O!!&O-\"%_!$(/%#(_!!'/1$(/1\"&?9!$?1#&OI!)_A#'_M!(_I%&OM!&P!!" + "(OY*&P-!%?]'*_]!(0)!%0!!,@)!)@5&%@-!(05!%@=!&`E!(09!(@E!'@I\")`A!" + "(@I!)`U!&`U!*@E)(@M!.@]!*`]+(@M!/P=!&`M!,`A!(@=!)P=!&`5!+05!)P-'" + "(P)\"*P%,*`!-&P!!&O]!&OY!%OU\"&?E!&OM!*OM!(_Q$./A%&OA!&?9!&?9!&?1!" + "&?1!&O)!*O)($_!!)?%.&>]!'NY!&>U'&.Q!&^Q$&.I!(.U##N=!$^=!&.A!(N1'" + "#NA!%^1!%^-!$MY!(=Y!%^!!%]]!%-Y\")=Q!(=M'%ME!)=I!&M=$%MA!&-=#(=9," + "&]5&%]5!+])4*-1%%]-\")=%\"$=!!&\\Y!%!#(=Y!" + "&MU%%]M!\">5!'>)!&^-%%^)!&.9!'.)!&.9!'^=#$^=!'>E&'>I!&.A!'.U*&N]\"" + "%O!)&.]!%O-#+O%!&.Q!'O%!&_5\"&?-!(O5*%/-!&?=!&?9!#OE!&OM!&OM!)?Q'" + ")?Y!&OY!*@)+'?Y$&OY!&OQ!(/]!(P-\"&`5!&`5!%`)#&`A!(@A!(@I!&`E!(@I!" + "(@A!(@Q!*0U!)0M#(@E!)`M!&`Q!%@Q!(@E!)P5')0E$&`=!,@1-&`5!#`!!(@)(" + "(0!!(0%!&OY!(P))%@)!&P!!&OM!&O]!\"_U\"%/A!(/M!&OA!%/=!'_9'*O5-%/1!" + "&?)!(_-&$_%!&?%!&.Y!&>Y!&?%!&?!!$^Q!)>M.#^M\"&.M!&.=!$^=!%N=$&.5!" + "&.9!'^%)(.-%%>1#%^!!)M]!%]Y!$M]!&]]%%]U!%]Y!'-A\"%ME!$ME!#=9!$=1!" + "%,]#&M5*']5!#,]!%M1!&-!$&=%$&,]#$!\"$^)!*>!%%^)!&.=!'.-!'.-!'>E!'>=!%^1!&.=!'^I-'.I%'.Q%#NU!&.U!" + "&^Y#*.]1$_!!&O1!&.Y!(_%'&O-\")/-!&?5!!/5!&?A!'?9*'_E!%/I!&OM!)?Q-" + "'?M*&?E!&/M%%/Q!(0)!(`)$,@-!)P)!'P1$%`1\"&`9!&`I!(@=!(PA!+0I-(@E!" + ")`M!(@M!+@Q'(@Q!(PQ!(@Q!(@M!&`=!)PQ&#`9!$@9\"&`=!(09!%@5!&P1!\"`-\"" + "(0%!(0%!(`%$&OY!&OM!&OU!*/U+&OQ!&O]!&?=!)?E(&?A!&?E!#/9#%O5#&?)!" + "'_-'%/-!&.Y!\"NY!$_!!,/%#%NY#&.U!#^Q!&.I!).A($^E!%.Q!(NA,&N9#'>=!" + "(^!)$N!!%^)!%^1!&-U!%]Y!%^!!%]U!'-Q'(MQ\"%]I!&]Q!%ME!%M=%&]A!*-=/" + "&=5$(M1.%]5\"&=-$%M)!%]%\"%-!$^5!%^%!'>-&$N-!'^5)%^=&'>9!$^E!#^I\"#NM!(NE!+^U4" + "*NI$(.Q#$>Y$&^Q##O!!(_-,&?-!#O-!%/-'&?A!&?=!#OE!'_I!'/I#'OU%%/A!" + "(/M(&OU!&OY!'_U!(0%!(P)\"(@)!-0)2)P9&(01!'`5%(@1'&`9!)P9!(@M!(@=!" + "(@U!)`I!*0M((`M\"*@I#(@E!&`E!)`E'#`M!,0A2+@1)'@5#&`A!)@!!)P1'(0-!" + "'`)&+/U\"&P!!'P-$)?]!*_M4'_M!&OM!'OE&)?M-(_9%&OA!'_9!%/1!&?)!)/A!" + "&?5!&?)!\"?)!#O%!#N]!&?!!&.Y!&^M$&.Q!'>M+&^E$'.E%&.9!'>=!&^9$$^5!" + "%^-!*^)!'>)!\"-]!&^5$'.!!(=]!'-Q&%]M!$MI!&]=!#=I!)-E+#]I\"'=E\"%M=!" + "$=9!(=9\"%]!\"%M%!']-!&M)!&]!\"%M!!'<]$(,Y#$A&&NM\"&NI\"$^Y!$^Q!&.U!" + "$NU%(^Y!'O%'&?!!#O%!&?)!'O5!*O-(+_9!%/1!%/I!#?A%)OA\"&/=%'?M$&_M\"" + "&OU!&_Y!&P1!&`%!(/]!)@)&)P%!)0)%(0)!)P1!&`5!%@I!)`A!)`=')@5%(@E!" + "(@E!(PI!(@U!(@I!(@A'*0=)(01!(@E!'P5$(09!%@A!'09!&P1!(@1((P-\")01$" + "(0-!,@%!)P!'&O]!%OI\"&OU!,OQ*&OM!%/I!)?I'&?=&'_I!*O=3&O=!)/5!&_1#" + "$_)!(/)#%/1!'/!$&.Q!'NY!$^U!'>U!%^Q%&.M!(>M+'.A%&.I!'.9&'>9!$^=!" + "%^-!#N=!%]]!(>)!'-Y!(N!-%]]!%]Y!(=Y,*MQ,&MY$&-I\"$-A$&]I!&]5&%M9!" + "'M5*#]-#&M5$)\\Y!(=5''-)\"&=1.%<]!&\\Y+&LU!(,U(*-!!$\\I#)!\"%^%!%^)!%>-#'>5!&.5!%^-!(NA!'>9!'>I!%.I!&.M!'^U'&.Q!" + "'_!('.]*(^],$^U!(O-*&_=\"&O-\"&?1!#OA!(_1+)/A!&?9!#OA!'_I!&OU!&OY!" + "'_Q!&OM!#_Y!&P%!&OQ!)/Y%(0!!(01!'@1#(01!(P%\"%@-!'0=!%@=!(09!$@E\"" + "&`5!(@E!(@E!*PE+(@A!)`M!(@=!(@A'\"@A!&`=!'@=#+05!)P-!(05!(0-!)@%&" + "&OU!/0!!)0%%%/]!&OU!&OU!(_U%#_]!)?I!)/A!*_5)&_Q\"'_9!&O5!'?5%&/-%" + "'O5!'?)%'O1!&?%!&.M!&.A!&.Q!#^Q!$^M!$^M!#NI!&>M!'>E!&.=!&>=\"(>Q%" + "&.)!%^)!%^%!'.-!%^!!'N%()M]!%]Y!%]Q!&-U!%MA!&]E!']5!%MA!'M-*)==!" + "%]1\"%M-!$]1\"%M%!#,Y!&-%#']-*(,Y,%M!!%\\U#%LM!#1\"'N1()^91&.E!)>E$&.E!&.I!'>9!&.M!&.U!" + "$^E!&.Y!&.]!&?5!(?-)&?-!$_)!%/1!$?1#&?=!$_)!&?E!%_E$+OA%%/Q!'/Q#" + "(_Q%&OQ!'_U&&O]!(/]!(0!!&`)!(@%!)P)!)0-%)P5!&`5!(P5)'/Y\")PA&&`9!" + "&`=!(`A#(@9'#`A!(@=!(@A!(P=\"&`=!(09!#`9!)@9%(05!&`=!(05!(0%!+01!" + "(0%!)@!&&OY!&P-!&OU!(OQ*)?Q!*OM!)/I,'_5!%/9!(/=\"*?9!(/5(%/1!&?1!" + "&?A!#NQ!&.U!'O!'&.U!(.Y)$_!!$^I!%>A#$^I!'>E&&>E!&.A!$^5!&.1!$>-$" + "#>1!'.1!%N)*%^-!#=Y!%]]!$MU!'-U!\"MU''=U'&N-$#=I!)=5\"&-A(%]I!$]A\"" + "&M)!%MA!%MA!%=)$%M)!%]!\"#=)!%<]!%)!'N-\"%^1!$N1!&.9!'>=!&>=\"$^E!&>E\"&.]!&.M!$_!!" + "'>M!$.Y\"&.]!'NY!&?!!&?!!%?5\"#O-!&?=!&?5!$?=#)/=!&?A!'_A!)OI('_I'" + "*OM!%/Q!&?E!&_Y!(/]!%?]!(@!!'_Y!)P)!)0-%+P5*)@1&&P)!*P)2(P9\"*050" + "&`9!(P=\"%@9!&`9!&`A!(`9#&`E!(`5#&`9!!0A!(@-!&P1!)P%!)P-!%@%!(0%!" + "&P!!&O]!&OM!)_Y\")?U!&OU!%/M!#_M!)/E!*OI!'OE&'_=!(O9*%/5!$_)!#_-!" + "%/1!&_%(#O-!#O%!(/!(&^Q#$^Y!+NY'&^U$+NQ(&.=!#NI!&.9!&.=!&^E$&.-!" + "'>1!%^!!'.=&&-]!&.!!$N)!%]Q!'=I(%]Q!%]M!%]M&&]M+$MA!&-E\"$=1!&M9$" + "(-)'%])\"%M-!%M1!$])#&M!&&,]#%])\"'\\Y!%A!#NA!&N5#$^9!&.=!&.E!&>I!$^Q!&^M$\">Q!" + "'_%!'O%!(O!%#^E\"&?!!*?)!&?)!)/%((O)*&?9!&/1%%?1\"&OI!'_E!)/E!(OE$" + "&OM!#_Q!#_Y!&P!!%?U!&O]!)@!!'_Y!)P).&P1!&P1!(0-!)01$(05!'@-#%@=!" + "(09!#`9!&0E#&P1!&`9!(09!)P5!(`5#*`)!(P1\"+01!,`-)*P%%)P)!-`%!+0)(" + "(0%!&P%!(OY*(O]#&OU!'_I'&O5(&?E!'_E!\"?9!'/E)&?=!(?A)&?9!)?5.$_-&" + "#O-!&?!!$_%!&.Y!\"NY\"$.Y\"*>M((.Q)&.I!&NI#&.M!'>E&#NI!)^A!%^1!#>-!" + "\".1!%^)!%N-%'N)#&^%%!]]$%]U!%]Y!&MQ$&=M#)]]\"#=E!%MA!%=A$']=%&-A\"" + "&M-!%M=!%=!*'])!&M%&%M!!&E!&.Q!" + "'>Q&'>U!&?!!&.U!\"?!!)?!\"&?)!&?1!&?1!&?9!&?-!$O)$'_=!'_E!%?A!$/U(" + "&_U!&O]!'_M!&OU!'/Y#'_Q!&O]!'0!\"(/]!(0!!(`-$(01!)/Y&&P%!,@1!(0-!" + "&`9!&`5!(0-'#0-#&P1!(P5)&@1%+P=0(01!)PE&(`-$*`)!*`)!&P%!(@1'*_Y!" + "%/]!&OU!'/]\"&OI!&OQ!\"?U!&?9!)?I!'?I$)/A!'_=!&_A\"\"?5!&^]#&?-!&.Y!" + "(/=.#O%!'O%!&_-#(.Y)&NU\"&.Q!$^M!&>Q!%NI$'>E!&.A!'>9!'^9#)>5%&.9!" + "$^A!$M]!#N)!\".%!'>!\"(M]'%^-!&MU$%^!!']M*%ME!#=E!%MA!&]=!%-=#%M9!" + "&]5!%]1\"%M1!(--+*M%$']!!*-%!(\\Y&%\\Y#'\\Q+%%!%]Y!#=]!$N%!&N1#%^-!&.1!$.9#)N%!&.=!%^=%'>E!$^I!$.U\"$^M!" + "'NU'$^U!'.Y%$^]!'O!!&O%\")/-!&O)\"'O-&#O5!'/!$(O9*$/9\"(O=**O=!)/E!" + "'?I$#_Y!&P!!%/Q!\"_U\"(/U'&`!!(/]!+05!(0%!'@)#)P)!*`%!)P1!(@-!&P1!" + ",@-!(P)#*@1++01!%@1!%`1)(0-!(01!(`-#(P5\"&OY!(01!(`%$(P-\")?U!&OQ!" + "&O]!&O]!&_U!&OQ!%/Q!&OM!)OA)*_M-(OA$&?E!%/9'&O-\"'O5!(O9$#O-!&?)!" + "$_%!&.Y!&?!!)?%('NE!'>A!$^U!&.M!&.E!(.I$'>E!&.Q!&.=!(>A+(>1!&.9!" + "*N-%%^-!&.%!\".-!%^!&%]Y!$MY!(]U#&>!#']E*&-I0%MA!%M-!'M5$&=9$%-9$" + ")]93%M-!%M%!$=%!&,]#%M!!%!!'>%'&.)!'.-!'>)''-]&&.5!&N=#&.=!&.A!%^=&'NI''>M!" + "&.Q!&.I!&?!!&>Y!&?%!)O!$&?%!$_)!%?-\"%/1!&?9!&?5!'_M&(/=(&?A!)/E!" + ",?E\")_U\"*_Y!'OI%&_U!)?U!&?E!'?]#&OY!(0%!&OY!+01!,`)#)`-\"$`-%,@-!" + "&`5!)P)!&`=!+@5('`1,.@-6(@-!,0-&'@)#(0)!*P)%'_U!+O]$(0!!\"?Q!(P!)" + "!/E!'0!\"&OQ!&OU!%/M!%O]\"\"_E\"'OE&'?I$'?=$&?9!%/5!%O5#&O1!'O)&&.]!" + "&?%!(?!$(^]!&_!#%.Y!&.Y!'NQ'&.Y!#NE!&^A$&.A!$^=!(>A+&.9!&.9!#NA!" + "'.)!'.%&$N)!(=],&-Y!'-Y&&-]\"'=U(%]Q!%^!!%]I!&=I$\"]A#'-='%M9!%M-!" + "'=%(&-)#'=5$*-)!%M%!&=!$%,U)&<]$%LM&%\\Q#',M#$LI\"&,I#\"<1\"\"L=#'<=%" + "%<9!&<5!%\\1#%,%!%K]#%,%%%<)!%;]&#,!!%;U\"$+U!\"[I(\";=\"%[A%%[E!\";A\"" + "%KA#$K=$%+1\"&+1*'+-/%[))$[-$#ZY!#J]$&JY!$*U\"#ZU!$*I&$ZA\"$K!$#J9!" + "\"ZA!%Z=#%Z9\"$J5%&:1!%:-(\"J!!#J%!%J-&#J!!%*%$%YY#$)M##YU\"#9A!&9I*" + "#Y-#\"I5!$)='\")%\"#9=!!IA##Y=#\"II$$9I$\"IQ!#)]&#IM%$9]$%:!$$Z-&#J%!" + "#*%\"#J-!%J5\"#J9!#JE!$*=\"#JI!#:M#$JM%\"ZQ!#[!!%:]'#*Y\"$[!)\"Z]!\"ZU!" + "![1!#K5#%K1$&+%'%K9($[=!%;A\"%K=#&[I!';I\"\"KQ#$+M!$+Q!'L!#$;Y\"%+U!" + "'[Q-%<%\"&,%)&L1&&\\1(&<5%#<1!%\\%,&<=!%\\A#%LI\"&,Q#&\\M\"%%%%^%!$N%!%^)!'^-$&N1#&.)!&^5%&^%%&.=!'NM'(>E+'>I!&NI(" + "(^Q!(>I%&.Y!&.Y!(^Y!'_!!&?!!'/))%^Y%'_A!#O1!&?=!&?=&&O=!(?=**/5+" + "(/E!#_M!&OE'&OQ!)?I!&OQ!'OM%&OU!&O]!%?]!)@%&*_Y!%@%!*`%!)P-!(0)!" + "*@1$(/]!\"@9!&P-!*`1&,@)!(0-!&P!!)P%!*`%!&/]$(/]!*@!%&_I\"(/]!#_Y'" + "\"?]!%/U!&OQ!*_Q(&_I\"%/I!'/E*(_A%&?A!&?=!&?9!'O5!&?1!)/-!(?-)\"?)!" + "'/%$*/!!&.U!&>]!&.Q!'NY'&>Q!'.M%&>Y!&.E!#NI!&.9!'>9!&.%!&.=!'>-!" + "%^-!'.%%'.%%$N!!%]Y!%]E!&MU$$MM!(-U*+-I)$MI!%ME!%ME!#=5!%-5$&-1#" + "&-=\"&M5%%=)%#=%!(-)\"%M!!'-!(%\\Q\"#LE\"&LQ&$!!%N%%\".%!&-U!'.!!&^1%&NE#&.9!'.=&&.A!&.E!)^E&(.Q$" + "+>M!'NQ!&.M!&NY\"&?!!#N]!&?!!'/-$(_)!'O-&%O1#+/%%&?5!#O=!$/E\"*OA!" + "'_A!(?U\"&?E!'_E!&OU!&OQ!%/U!#_M!$@!\"'_Y!&O]!\"@%&&`-!&P)&#_]!(0!!" + "(0%!(0%!(0!!&/U$&P1!*0%*(0!!)P%!(01!+/]((0%!&`!!(/]!&OY&%?]!!/]!" + "&OY!$OU$&_M\"&OQ!%/E!)/A!+/A#%O9#&_9)&?5!&?-!&?5!&/-&$_%!&O)(&?%!" + "(/!.&.Q!&.]!&>Y!&.]!&.Q!&.M!).I\"'>I!&.I!&.A!#N=!).=#$N1!#>)!&.=!" + "'>9!%^%!%^%!&]]%%]Q!%]U!#]]\"$MQ!$]E,#=U!&]A!$MQ!%ME!%M5!#-9$%M)!" + "%M1!$]9')M)2&=)$#=)!&<]$%<]!&,I#&!#&N-$%^-%\".%!&.=!&.5!%N=$&^=$&.E!" + "&.Q!&.Q!).]-'^U().Y!(^]!$^]!&?!!&?%!&?-!&_-#&O1!'O%!'_5''O-!%O-#" + "&_A\"*/U+&?E!&OI!'OE&&OQ!(/]!%/]!&_U!&OU!&OY!&OQ!&OY!*0!#)?]!&OY!" + ")`!))@!!)?]!(/]!)P%!%`%#)?]')@!!(_Y$&O]!,P!0*?Y1&_Y!&OY!&_Q!(/Y'" + "&OU!&OI!\"?I!&OQ!'_9''_9!&?E!%/=!&_1\"&_5#+?1%&^]#&?-!&?)!*?1!&?%!" + "'.]%'O%!'NY!*N]\"'.Y%&.M!(^Q!$.M##NE!&.A!'>A!#NE!&.5!&>E\"'^-#%^)!" + "%^1!%.1')M],%]]!#^!\"(=Y!&]M!%]I!%]M!$MI!&]E!)-Q*%M1!%M5!)-5&%]5!" + "#=1!$=-!'-1''])!'-!(%<]!%\\]\"&LU!%%#)^)!%.)\"$^9!%^1!%N5%&>E\"(NA!&.A!&.E!\"^E#" + "'>M!$^M!&.Q!'>M!*NU.\"_)\"*.]!(^U!,/%/'?)%'_-(%/=!&?5!'/9#&?9!&?9!" + "*OA!&?A!%/E!&?A!&OM!)OU.'OE%'?M$#_I!,?Q\"'_U!&P!!\"?Y!\"?Y!*/]#&O]!" + "(O]*(?](&P!!(0%!(0!!'@!#*OM!)P!!&O]!'P%$*OU2&OY!&OY!&OU!'@!##_Q!" + "*OQ&&OI!%OM\")/A!(/E!&_Q!#OA!'O5!'/A#*?)!&?-!&O-\"&>Y!&?%!&_1\"(/!(" + "(_%!%.Q!'NY!&^M$(NQ+(>I*(NM!&NI#)^E!%^1!)N%!%^)!&.5!(>%!&>5''>-'" + ")=Y!'.)!%^!!&.%!'MU#$]M!%]U!%]U!&-I\"%]I!&-E\"'-A!$M=!%MA!&=5$'M=$" + "%]5\"&=-)$<]!%M9!%)!$N-!(>)%%^1!'>5!'>-'&.A!'>I!)^A!$^=!" + "&.Q!&.M!&.M!&?!!&.Q!&?%!&?!!#O!!&?!!'?1*#O-!&?)!#/5$)/5!'?1*&O9'" + "(_M0(/=\"&?A!)?E!)_9*'/I#&OI!&_M\"#_Q!(/]!*_U!'_Y!)?U-&P!!(0-'(/]!" + "'?Q$$?]\"&O]!'P)$(/]!'@!$+OU+&OY!&O]!'OQ%&O]!&OY!'_U!)?I!&OQ!(OM*" + "+/I)+OA+&?=!)?E('_E!%/=!&_=\"%_=$*/5%&?1!'?)%&?-!(O)0'O!!&?)!'.]$" + "&>]!&N]\"&^U#$^M!$^Q!&NE#'O!!*.E2&.Y!'>A!'N=,%^-!&.5!%^1!'.1!).)*" + "%.!\"(^-#']Y$%]]!%^%!'-U!%]Q!&=Q#&]A!'MI))-A+%=A$(==\"$=5!%]-\"%]1\"" + "$=1!&-5#%-)(\"])$&M!%$L]\"%%!(N!()N%!%^)!'N%.(.1*%^1!'>9!(NA!$^I!'>E&%>E#" + "$^I&(.M)&^Y#(NU&(NQ+#>I%*?1!&^]#&?!!&.]!&?1!&N]\"%/=!'?)%&?5!'O)'" + "&?5!*?9')/=!&?A!'_A!'_E!*O],&?=!'_Q!'_I!)/Q,&OI!%?Q!(0-!&OY!'/M#" + "!0!!)?U!,OY*&OU!'_Y!(_Q+(?Q\"$/U!%/U!&OY!&_I\"&OQ!&OQ!$OE$'_I&#_9!" + "%/=!'_I!'_M!-/A'&OA'(/A!&?9!&_5\"&?9!&?1!&?-!&?-!&.]!$_!!&O!\"$^Y!" + "$^]!'?%&&>Q'&^U$'.M%$^M!)>M#(NI!)^E&&.A!&.=!(N9&&.5!&.9!%^)!&N%$" + "&N1#%^!!&-]!&M])%]Y!(>!!+=U*%]I!#]I#%]I!%MA!'-A!&-=#$]9\"$M1!%M)!" + "&M)%$=1!&-%$%-!&N-$'.)!'>9!(^=!$^5!'^A(" + "'>A!&.E!$^Q!%>Y\"(^Q!'>U!&>Y!&.]!'O!!#_!!$_)!#O9!&O)!&?)!)O9#&?1!" + "&?9!&?5!%OM\"'/=#&?E!)/=!'_E!'_A!(O=$*OI!%?M!'?M$%/=!'?Y$&OQ!(/Q(" + "(_U+&OU!&_U\"#OY%&OI'&?A!&_U!#`!&(_Q%&OQ!&OQ!&OM!&OI!'_I!%_I*)/E!" + "&?E!%OA#)?9!&?=!\"?Q!+/5*&?5!#O5!&?1!&?-!(?-/'O)&&?)!&?!!&?!!&.]!" + "'.]$(.U#&.Q!(^Q'&.M!&.I!&NI#&^U)&NI#&.=!$^9!'N9'&.5!%^-!&>-\"$N!!" + "+.)(&>!\"$N%!%]]!%]U!%]U!(-Q%&-Y\"%ME!\"]E#$MA!%]1\"(=9\"'M=$&=5$%]A!" + "'--#%M!!&-%$'<]$$\\U((LY*',Y#%\\Q\"*,U&%LM\"%!!*.!$'.%!&N1$\"^)#)>9/&.9!$^=!&.A!" + "&^=$&^I$%N]#&N=#(^U!$^Y!'>M!&.Y!$^]!$_)!&_)#&O!\"&?)!$/!\"%/-!'_A!" + "(/5)#OA&'_9!'_=!'?=$#OA!(O9$&?=!'_E!*_E)&?9!&OQ!)?M!&?E!*/M+&OM'" + "%/I!'_Q!%/U!'OQ%'0%)&OQ!&_U\"(/E(&OU!&OY!&OM!\"_I\"(?I#'/E#'_E!'_E!" + ")/A&&?A!'?E$&?=!&?9!&?E!&?9!&/A%&?1!%/=!&?)!%/1!&>Q!$_!!&.]!'>M&" + "&^Y#&.U!&.Q!'O)!&.E!&.I!'NE!$^M!'^9)'^1#&.9!%.5\"%^1!(N-!%^)!%]]!" + ")=Q,%^!!&=]#&]Q!%]Q!\"=Q!%]M!(]I$(M9)$MA!%M=!&]=!%M9!%M)!&=1$%M)!" + "(-)\"'=-)\"M-\"),]\"%L]&#,Q!$I/%^9&&.A!" + "&.A!&.E!*^Q+&.U!&.Q!&.M!$^=!&.Y!'.U%&.]!&_!#$_%!(?%*'O-!&?-''?%&" + "+?5+(O5*&?A!&?5!(/%(&?A!&?=!'?E$'_A!&/E%(/I!'_E'&OQ!)OE\"&_9.&OM!" + "&OM!&OI!&OM!%/U!&OQ!%OM)&_U\"%/M!'_I!$?I#&OU!&?E!%?E!&?A!'_E!)OM\"" + "%/=!'_A!%/A&&?1!&?5!'O5!%/-!$_)!&?1!%_-$#O!!'/!$&?!!&?%!&.M!$_%!" + "\"_%#(.M)&.Q!'>M!'^E#'.Q%'>A!&>A\"&NA#&^=$&.A!&.5!(>-&&>)\"'>5!'.A&" + "%^!!%>%#&-Y!&]Y%(=I'%]I!%]I!*MI!%]I!&]E%%]5!%M=!'M5$&-1#%M1!&]5!" + "(=9'%M%&%M1!']!&%L]!%\\U\"%-%&.9!%^-!(N=!" + "&.A!&.Q!&^=$)^Y+&.M!%.E\"&.M!%>A#'.Y%'NY!'N]!'?!%&?%!)?%(&O)!'O-!" + "-_),*/1+&_=\"&?5!$?9#'_=!'_=!'_=!&?=!'OA&%OA#)?E'\"_E\",?E6)?I!)?U!" + "&/I0'_9!&OI!&OM!(/]!&OM!'_M&)/I,'_M!*O=!&OQ!*OE!#O1!&?A!&?A!&?1!" + "'_=!(_5&*?=&&?1!&?-!$/-\"&?-!'?9%&.]!&?%!)O%$#O!!(.U)&.]!&.U!$^U!" + "&.U!#NU!&.Q!&.E!'>9!$^M!(>A+&.=!(>A+&.9!'.E%%^1!$N!!'.)!(>)!%^%!" + "'.!!#-])#>-!&MU%$MQ!&=E$%-]#%]M!']E*(-A!'-='&]9!&=1$&]1!%]5\"$=-!" + "%]%\"(M9.!=5\"%9!%^)!" + "$^5!%.E\"&.A!'>A!(.Q#&^Q$&^U#'.Y%&^U#%NY#&.M!&.]!(>U*'O)&(.])&/)&" + ")O-#'O!!%O1#&?)!'O5!'?1%'_=!)/9!&_5#&?9!&?E!#O-!'_9!'_E!-/A&)/E!" + "'_E!(_U$'_I!'_E!&OM!*OE!(OE$'_=!'O1!+/A0&OI!&O9!&?=!%/-!(_9%&?9!" + "%/1!)_5$+/5$'O)!(?1$)/1-*_1\"'O%'&?!!$_)!*.]2'N]!'>Q&&.Q!(_)!&.Q!" + "&.M!&NQ\"(NI!'NE''>E&&NA#$^=!\"^=#&.9!\"NA\"'.1!'.)!%^1!'-]!$N%!%^%!" + "%]Y!%]U!\">!!%]Q!%]Q!%]Q!$MA!&]E!(-=!&]A%)-5!']9*&=5$%M)!%M!!$])\"" + "%]1\"%\\]\")\\]!',Y#'!\"%^)!%]U!'.)!&^-*'N)\"'.-!&.=!'N5(" + "&.=!'.1%(NA!'N='&>A\"$^M!&.A!&.Q!&.Y!'^U(#NQ!&.]!#^]!'_1('O%!)_)0" + "$_)!&/1%&?-!'O1!&?5!\"?=!&/5*'?=$)?A!&?9!&?=!%/A!&O5!&?=!&?E!'OA&" + "%/M!&_A\"'?Q$&?A!#OA!&?=!%/A!)/A!'?=$\"?=!&?=!(?=)'/E#&O9!&?9!&?5!" + "&?5!%/A!&_1\"&?1!(O-*'?)%'?%%'O%!'_)!(O!+&?!!*N])'.]$$^U!&^U$&.]!" + "'>A!$^Q!&.=!&.E!'>I!'.I%&.9!&.I!$N1!&.1!'N1('>9!$M]!$N%!&>!\"(N!-" + "\"]Y#%]U!&>%#\"-Q!%]M!&-9#&]]%)-A&%MA!%]=!&-9\"&=9$%]5!(-E!&\\Y\"%5!%^)!'.1!&N5(&.9!" + "'>9!(^=!'>=!&.E!&^A$&.E!(NE!&.M!&.U!&.U!$_%!'>M!&?!!(?!$&?!!(_%!" + "&?%!'/)$-/5!%/-!&?-!+?-+'_9!'?-%&?1!&?-!&_9\"'_A!&?5!&?-!!/)!+_=!" + "&_5#'_)((?=*&?=!(OA0'?A%(_=+*_=\"*/A1)/5!&?9!(?9*&?=!&_9\"#O1!'O5!" + "'?)%&?9!'/%$\"?-!&?%!\"?)!(?%)'O%!)?!(&.Y!(_!!&.]!'>A!$^Y!(>U%&.Y!" + "&^U#&.I!&.I!$>M)&.A!(>=&&>9\"'.-!&^1%'.1!'-]&$N1!%N5$(N5!%^!!%^!!" + "$N!!%]]!%]I!%]Y!%]M!'MQ$&=E#&]A!)-A+&MQ$%M9!#MA&&-9\"%M-!\"M!'%])\"" + "%\\Y#$]1\"#=!!&,U#%!\"&>)\"%^!!(>!!&.=!$N-!'>5!%^1!" + "&.M!'>9+&.=!'>=+$^E!%.Q!(^A2&NM\"(NM!&.Q!&.M!%/!!(^]!&.M!(>]*&.Y!" + "&.U!&?9!%/1!)/1!$_)!&?-!#^U!$_)!&_9\"'O1!&?5!)?5.&?-!&?A!#O9!'_E!" + "%/-!#O9!(?9#&?1!'_9!#O9!&_5\"(?A#%O9)'_1''_=!'?%&'_1'%/I!&?1!'/5$" + "&?-!)?-\"(?))'O)!&_%#'?-%)_!0&O%\"'N]!#O!!$_!!&>U!*^U*&?!!&NM#'^M(" + "$^M!'^E(!.E!&.A!$^9!%N5%%^)%$N%!#>!!(>-!$N-!%^%!(.-*(N!!%^%!'-]!" + "%^!!%-U#%]Q!'-Q&&]M!&-I\"%ME!$MA!&-A\"%M9!'-9'#M5\"%M1!'])+%]-\"(--!" + ")=%\"'=!)%<]!$%!%^%!$N%!%^-!(>)!&>1\"" + "'>9!$^5!'^=((^=\"(N=!\">E!&.M!&.I!&.9!&.M!&.M!&>Q!#NU!+.Y1%NY)$^]!" + "$_!!'O)&#O)!\">]!'O1&&?-!#O)!&.Y!)/-!&?=!&?%!'_I!'O1!%/5!(O5$'O1!" + "&?1!'_5!*O5-%/A!&?5!%/5!'O5&%/5!'_9!'O5&%/-!&?1!$_5&&?1!%/9!&?%!" + ")/%(&?1!$_)!&?)!#N]!'/!$&.M!&?!!&.Q!'>]&$^Q!).Y!'>U!(.E$&.A!'>Q!" + "+>=\"&.A!&.=!&.A!'NI'&.9!&^9%&>)('.)!&N9#&.-!%^%!$N%!'>)!\"-]!'MM(" + "'=U\"%]U!%]Q!\"-I!'MM(%]U!%ME!']=*$M=!%]5!$=-!&]9&'-1''M-$%M9!%M!!" + "%M-!']!+%L]!'%%)M]!$M]!&M]$!-]*%^%!&>-\"%.-\"&^5$" + "&N1#&.E!)>9*(>-!&.9!&.I!!>E\"&.=!&>I!'>I!(^Y!&.I!'NY'$^Y!(_!'&.Q!" + "$NU%$_!!&>U!$_!!$_)!%O)#'O-&#O)!&?-!&?-!&?-!&?9!'_1('/-)(_!!&?-!" + "'O1!%/5!'O-&&?-'%/-!'O5&\"O9!'_1!&_1#&?)!)/%(&?1!&O)\"'NY!'_-'&?%!" + "'_1(&?!!&?%!&?)!&O1!'N]!&.]!&.U!(?!)&>U!).Y!(>U*)^I!&NM\"'^U'+NI(" + "$^E!(NA!(N=!&.9!$^9!&.9!&.5!&>1\"%^-!'>)'%]Q!%^1!'M])%^!!%.9\"#>!!" + "'-U!%ME!#]I\"&]M!)M9#'ME.&]A!%M1!\"-1!%M9!%]5\"'-1'%]5!&=)$#=)!&M%!" + "%M%!'-)'(,Y,&,Y#(,Q1#,I%%%\"&.5!#N5!$^E!&.=!!.9!&^A$'>I!&.=!&.M!&.U&&NM\"&.]!&?!!&.Q!&.]!" + "&.U!'>U!\"O%!$_!!$/%\"'O%!&O-\"&?-!\"?)!'_!('O!!'O)!&?1!+?!1&?-!$O5)" + "$_)!)/1!&?A!(?5/'O-!#O5!%/5!*?)!'O)!'>Q!*_-))/5!&?)!'?)%'O)''O%!" + "&?5!(^Q!&.Y!'^Y''>U!&?!!'>Q!,.Y5&.U!%^M**>Q\"&.M!#^M\"&.M!'N='&.I!" + "'.1!&NE##NE!&.9!&.5!$^9!%^1!$N!!$N-!(>!&'.%%$N)!%^!!*>!)'=Y\"%]U!" + "%]M!&-U!&-I\"\"MI+%]Q!%M1%(]9.$-Q$%M9!&]5&\"-)!%]1\"&]-'%9+!.9!&.9!&.E!&NE#+.E,&.E!&.M!&.Q!&>Q!&.Y!" + "&^U$$_!!&?)!&?)!&?-!&.U!$_!!&?!!&.Q!&.M!&^])'O-!&O)!'O9&'O)!'O)!" + "'O)!#NU&&?5!(_)!(?))&?!!&?1!&O1!&?=!&?%!(?-#&?%!&?%!'.]*)?)\"'?!&" + "'.Y$#O%!$_!!&?!!'.U%&.Y!$NI%&.Y!&.Y!$^Y!'>M!'>M!'^I#&>E'(NE&&.E!" + "$^A!'>=!&.E!&>E\"%^%!(>1%'>-&'.-!'>)'(>)&%]U!$.)#%^!!%]Y!'MM$'-]!" + "&-A\"'-I'%]Q!%]I!&=A$(-A!$]='&-9#(-A+)]E#&M%!&=)$%M)!%M%!',],%<]!" + "&M-!(1\"" + "'.-!%^=%&.5!#N5!#>)!%^)!'N1(&.A!&.9!&.M!#NE!&>E\"(^M!&.I!'>U!'.Q%" + "&>I!&.U!).U'(_%!'NY!\">Y!).Y'&?%!&?)!&N]\"&.Y!&O%\"\"?)!+/%+&?%!*O%." + "'O)''O)!\"_1\"+O!!&?)!%/-!&?%!)/-!'O1!&?-!)/%-%?%\"'^Y(%/-!&O)\"(_!!" + "(?!)\"O%!&.Y!'NY!'_!!&.Q!*.Q!&.U!'.E%&>M''NY!'^=('>E!$^E!&.I!%^)!" + "\">=!$^9!'>9!&.5!%^1!&^!%&>-\"(.9%#>!!'.!!+-]\"%]]!%]Y!(=]!'-Y!%ME!" + "%]M!%]Q!(]I)%M=!&]M!']5%&]=!$]9\"']9%%M1!%]1\"&M-%%]!\"%M%!%M!!%<]!" + ")-)0%\\Q\"$A!" + "&.U!&.E!(?!)'>U&\">Q!&.U!'NY!&?%!%.M!*>]'&>Y!&.]!#O!!&?)!%O)#'.]$" + "&?!!'O)''O%!'O!!&_%#)^U,'^]!&?!!&/)&$.Y##NY!&O%\"%O%#\">Q!,.]*\"N]!" + "&?!!'/1$&.]!(_)!$.U\"$^Q!'>U&$^M!&.U!&.E!&^M$#NI!&.9!&.A!&.=!$^=!" + "#N9!$^9!&.5!'.-!*.))%^1!'>9!%^%!$>5$%.!\"$MY!$M]!$M]!%]U!(-Q!&]Q!" + "'-U!%M9!$ME!&=I(%MA!%]1!%]-\"%]1\"#\\](&M%*'--\"%]%\"']%*%]%\"&L]&%M!!" + "%M!!&Y!&.Y!*.Y,&.]!&?!!'O!').].#NU!&.]!" + "#_!!'_!(&?1!(^Y''O%!(_!&&?!!&_!#&N]\"*.],'N]!&.Y!#N]!'.Q%&>Y!'.Y%" + "'>U!'>U!'NQ!&.Q!)>Y)&>A\"&.M!&.I!$^I!&.E!(^E-&.A!&>E!&N5#(>=%'.=%" + "'.%!&.5!$^E!$N1!%^-!%^)!%^%!$N%!$^!!$M]!%]]!']Y)'-U!&]]%%]U!%M5!" + "&-A#%]I!%ME!)]Q-$-=$%M=!'-9'%M5!&-1'&M5%&=9$&=-$(=%(&]!\"%M%&(,Y(" + "(!\"" + "(N),%^%!$N%!$^9!'N-\"$^5!*.=('>5!'.-!&>)\"&.=!&.A!)^Q,(NM!#N=!&.I!" + "#NA!'>=!&.U!&.A!(>M+'>E!(NU+'^U\"&>Q!'>U!(?!$&.Y!'O%!)>Y##NY!\"?-!" + "'O)&&>U!&.Y!$^]!&?%!&?!!#N]!'>]&(^Y!'^Y'&.U!(>U%&.U!'NY-+>M3'>I!" + "%>Y\"&.I&&^Q#\">I!&.Q!&.]!&.I!&.U!'NM!&.M!&.5!&.5!(>M+&.5!'>9!\">5!" + "&.5!&.=!%^-!$^9!'.)!'.)!$N%!%^%!(-Y*'-]!$ME!'-U&&]Y*%]]!']M$%M=!" + "(=I!#]E#'-A!&]I%&MA$&=-$%M5!$=%%%M9!\"--!%!!&.5!$N1!'.9&$^9!&.=!$N)!&.I!&.E!&.=!" + "&.M!&>1\"&>I!&.Q!!.M!'/!$(N=!'>U!&.]!'>Q&'>Q!&>]!#NM!&.Q!&NM#'^Y'" + "&.]!&.]!(^Y!(>Q*(NQ+(^Y!&O)!*NY#'>M!&>M!&.Q!&.M!&^U#*^Y*'>Q&&.A!" + "&.Q!&.Q!\">U!&.I!&^-%'.I%#^E!&.I!'>5!%^1!'.9&'>5!\">E!(>)&&N5#$^5!" + "&N)$&.=!&^-%'>9!&.5!#>%!).)*#>%!%^!!&^%%%]Y!'-U!&-Q\"$MQ!%]Q!%-=$" + "$ME!$M-!)-A&&-=\"%]9!&=A$%M!!)=A0&=-$%!!%^%!#^5\"%^%!\".)!%^%!&^-%'>1'$N1!%N5%&N=#%^-!%^1!(NA!#NA!$^=!" + "&.5!&.A!'>E!&>E!'>I!&.M!&>I!&.M!'>M!(_)!)NQ%&.U!&^Q##NQ!&.U!&.Y!" + "'.Y%'.]$&.I!&.I!&.U!#O%!&.U!&_%#,>I&&.I!&.Q!&.Q!(.Q$&>Q!&.Q!)^Q&" + "#NM!(NI&&.=!(.M)#NI!&^Q#&NA#!N9#)^A!#N9!&>9\"%.9\")^=!'N)('N5(&.1!" + "&N-)&^-%%^)!%^%!%^!!$N!!+>%)&>!#*-Y$&-]\"'.!!\"-Q!%=M$%]M!%ME!']A*" + "&-9#%MA!&-A#%]5\"&]9!(=9'$=1!%]!'$])\"#=%!$<]!$M!\"()!(^-.'>1&%^-!&.9!)^=!&.5!&.5!" + "$^I!$^A!'>A!#^E!&.Q!&.Q!)NU%'>I&$^I!&.M!%NM$%.M'&.M!'>Q!&.E!&.M!" + "'>Q!&^=$&^M)&.E!&>Q!&NQ\"$^Q!#NQ!&.Y!(NI!'>M+*.M!&.M!'NQ'%.Q!$^M!" + "\">E!'>I!(^E-(^I'&.I!'^=)&.A!$^=!&^=*%^-!&.9!&.5!'>5!*^5&$N)!%^-!" + "(.9*&MY$%^1!'N!#(MY(%]U!%]]!$MQ!%]Y!&MY$$MU!&-]!%]M!'-Y!%ME!$ME!" + "%MA!%M=!$M1*)=I!%]5!&])&&=9$']1!%M)!%]-!'=%)%\\U\"%M-!%<=!',I(&LU!" + "&\\Q\"%!!$N%!'.-!&-]!&>!\"%>-#%>)$)>9%%^1!%.5\"#N9!&.=!&>A\"" + "&.9!&.A,&NA#&>A\"'NI'&.9!&>Q!#NE!&NI\"'>I!'>I!#NE!)>I$&.Q!&.M!&>I'" + "&.]!)^I!(.M$(.I)&.M!)>M$&.A!'^Q\"&>Q!&.M!&NI\"&N5#&.I!(.I$&NI\"'.A%" + ").M3&.E!#>A%#NA!&>=\"%^-!*^A&)>9%&.9!'.-!#N1&$N1!&^5$%^)!%^-!\">)!" + "(N)'&.%!%^%!$N!!#=]!%^!!$MU!%]U!)=]%%]Q!%]E!$=9!&-A\"&]I%%MA!%M=!" + "&M9%']I$(-50&]5!'=5($-1$%M-!'-)#$M)!'M%%&M%&%]!\"%<]!%])\"&]5!$LQ\"" + "$L=\"%LQ!&LE&%LE\"%!!$N%!%^%!%^-!(>%!#>!!%^)!&.5!%^)!'>A!%^%!'>A&" + "%.5\"&.=!&.A!(>I+&.=!&.=!'NA\"(NA!#NI!&^I)$^E!&^E$%.E!*>I\"&.Q!&>E\"" + "&.U!&.I!&.I!&.Y!(^U!#>I%&.I!#.M)*NA*&.I!%^1!&.E!&.A!%NE$$^E!'NA\"" + "&>E!*N9+&.=!(>E+%^=&'N='&.5!&>1\"&.=!&.5!$^9!'N1((>-!&.-!(>!,\".)!" + "%N%*&.%!#>-!$M]!%]]!%]]!%]Y!'-U!$MM!%]Q!&]M+$MI!%ME!%]I!%MA!%MA!" + "(=E\"%M9%&M1%'-5'%M-!&]1!%M!!%])''-%''=!$%M%!%!%(N!\"%^)!%^1!(]]-%^!!(>%!%]]!'.1!%^-!&.)!&.5!" + "(.E)&N9#'>9!&.9!&.A!'>A!)N10'.=%&.U!&>E!'^E\"&.I!&>E\"&.M!'^5#&.I!" + "$^=!&.E!&NI#(NE!&.E!(.E*(NM!'N=!&.E!&.M!(^M-'>A!'>E,#NA!(.A$&N=#" + "(N=,(N=!(>=&&.=!(>1!&.5!'>A!&.5!%.1\"&.5!&.-!&.9!%]Y!%^-!%.-\"'.%!" + "(=]!&>!\"'-Y!%]Q!)=Q0(N-'(-M!'=Q\"'-E!&=I$%]E!'MI(%M=!'-9\"\"ME\"$]9\"" + "&-9\"$=5!&M5%$=1!&-%#$M=!'=)(%]!'\"=)!'=!$\"]-$%M%!\"L]#&,]#'LQ&*,U!" + "%A!(^).(N9!&.A!%>%#&.5!'>E&&.9!)>=$%N5%$^5!&.M!" + "%^A*&.A!&.=!&.=!&.A!\">=!&.=!'NA\"'>A!+>A(&^A$$^=!'^=($^E!&.=!%^9+" + "*>=#'.1!(>5+$^5!*.=('.-!%^-!%^1!%.1\"$>!%'>-&\".1!%^%!%^!!%.%\"$M]!" + "(.%%&=]#'.%!'=Y(%]M!&]Q!'-U!%]I!'MI)%]I!&=M$#=M!&-A#%]5!$==%#=A!" + "%M9!&-%$)]1*%]-\"%M5&%M%!(-)\"(=-('-%#&M!&%)!(>%!%^-!(.-*&.-!" + "&.=!*.E'\">5!%^1!&N1#'.1!&.1!%^-!&>9\"&.A!&^=$'>E!&.9!(>A+$^M!(NA!" + "$^5!&.A!'>9!'>9!&.9!%^%!$N9&$^=!'>5!$^=!&.=!&.A!'.=%&.9!&.9!&^I$" + "#N5!&.5!%N1*%^1!$N-!'>)'\".-!&N-#&.E!(>)+&^)%%^%!&N%$%^!!&^!%%]]!" + "'-]&%]Y!&-Y!&-Y!'-U!(-Q!$MM!%]I!#=I!&]M!&M9%&ME$&M9%&]I%'-9'%]=!" + "%]5!$M=!)-1&%M-!&=!$#=!!%M%!%=!%%L]!'<]#$)#$=U%).%$'.-!&>)(" + "%^)!%^)!&.9!$^9!)>9%'.-%'.)%$N5%#>1!(N9!(N5!&.E!&^9$&.=!'NI''>9!" + "'N5()>1*$^=!&>9\"#N5!%N9$&.5!(N9!,>A,'>5!&.9!&.A!(N5!#N5!\"^1#\".1!" + "&>5\"&.A!%^%!%N1$(NA!(^-#$^%!'^)*)N%&#M]!)>%*&.-!\"N!\"(MU-%]]!%]Q!" + "&-Y!%]U!%]U!%]Q!%]Q!$MI!&MU$\"-I!(MQ($MI!$MQ!&]Q%%=A$%]5\"'-9'&M=$" + "$-1$&M-!%]5\"&-%$(])!%M)!&-!(&LU!%<]!%%\"&>%\"%^%!%.%\"" + "\".!!%^1!$^9!(N9!'>1'#>)!&N1#'.9&'.1!&N1#*.93%^)!$N1!%^1!'.1*'>5!" + "%^1!&N-$&.5!&>I!#N1!&.5!&^9$&.A!&.5!&.5!(N-'&.5!'>1''.1!).1)'.1!" + "%^-!%^)!%.1\"(N5,&N5))N!!&.5!$N%!%^%!&>%#(]]-'M])%]]!%]]!&-Y!(]Q(" + "&^%%%ME!(]I)$MY!'=]!'MA$%M1!%ME!(-A!%MA!&-9\"&-9\"'M1*%M9!%ME*$M5!" + "%M=!&]-&%<]!%M-!'=%)\"\\E$+-!+'LQ!#=!!%\\]\"&LU!#LQ#'%#&>)\"&^5%%^-!&>-\"%^-!&N-#'^!$(>1!'^-#'.)!\".1!" + "%^1!'NA''^)*'>5!&.5!%^1!&N)#'.1!$N1%%^)!$^5!&.9!\">E!$N-!-N-(&.5!" + "%^1!#^)\"'.)&&N-$'.-%%^)!%^1!(N!'\"-]!!.%!%]Q!&-]!$MY!)MI,$MY!%^!!" + "&-]\"#MA!$MM!%]M!%]M!&-I\"%]M!&=I$$MU!'-A\"'M=)&-9\"%]E!&-1,'=)($=-!" + "'M-$&M!&%M)!%]5\"#=%!%<]!(=%$%M!!%<]!%\\U#&LU!&LM*'<9!%!\"%^!!%.)\"$>-$)>!%%^-!(>!!'.)!#^%\"'.%!%^1!'>=!(^%(%^)!%^-!$^%!" + "(N%,%^%!&>1\"%^1!&N)$&.9!(>-!%^)!$N1!&N)#*^1!).1$%^-!#>-!&.)!(>)%" + "%^%!,>9'(^%#'-Y!).%$$.%#%^!!(>!!&-Y!%]]!(=U!%]Y!&MY$$]U&%^)!'.!&" + "&=I($MI!%]M!$ME!#=U!&]E!%M=!$MA!$-=$']5!%M9!'=Q\"%]5\"%M-!%M1!$]9\"" + "$])\"#=%!%<]!%!!%^)!(^%#'.%!$N)!%^-!%^)!'>-'%^-!&^)%$N-!&.5!" + "#>)!&.)'&.5!%^%!$N!!$N)!%^%!'^-$%^-!$N-!%^-!$N)!&N5(%]]!%]U!%^1!" + "%^)!'.%!'.!&*^!!'>!''.)!%]U!$]Q!&-Y!%M]%*.!)&]Y%'.%&%]Q!'-Q'%]I!" + "\"-I!#=E!%]A!$M=!$ME!%M9!%-A('M1)$-A$']9!*-5&%M5!#=)%\"-1!%--$%]%\"" + "'=)$%]%\"$=-!',]'&LQ&&\\Q&%M-!%\\U#$,M)%LM\"&LQ!%LQ!%,A$%)!$N%!'.%!&>-\"%^%!%^%!%^%!" + "%^1!%^-!&^!%'N='%^%!#^)\"(^))$N%!&N)#'.!!(>)!+>%)'.)%(N5!%-]\"%^-!" + "(N!(&>!#'-]!%]Q!)M]2'.!%%]Q!&MY$(=Y!%=Y)$]M!'=I((-Q!+-M('=M#(-M!" + "%]U!\"MQ\"(]E/%ME!%MA!%MA!%M=!(MA.%M1!&]5!$--$&--#%M)!'=%$%]-''--#" + "%\\Y\"%-5#%M!!%M!!'!'" + "%^1!%]Q!%^%!&MY)%^%!$N%!%^%!%^)!(^!#(.!%%]U!)MU'&.)!(.%%%]Y!%]Y!" + "&=]#(=]!%]]!%]Y!$M]!%]U!$]]!&=U#&]Q!%]Q!%]U!&=M$$MU!%]M!'=A#$MI!" + "\"-Y!$MI!&]M!&]E!$ME!&MA$$=9!&-E\"%M1!'=1#&-5#&=)$*M1'%M)!%]!\"%--$" + "$M!\"'L]!'<]$$,]$%<]!&)!%]U!%]U!%]U!&-Y!&.!'%]]!%]U!$MU!'-Y!(=]!%^!!%]]!$M]!'N)#%>)$" + "'N!)#>!!'^-#'-]!&>!#%^!!%^)!'>!\"&^!%'>!''.!!%]]!%]M!%=]$)-]%#=]!" + "%^!!)]]-%]]!'-Y&(-Q!!-]%&=I#%]Q!%]Q!'=Q(&=I#(-Q!#=I!&=M#']M)&]E!" + "%MA!(-E!&]9!&-9#&]9!%]E!%]1\"&-9#$]1\"%]-!'M-*$MI!%M%!(-)!&M-!%M%!" + "%\\]\"(L]%$-!$$)!%^!!$]]!#=Q!%]]!'-Q!%]Y!$MY!&]Y%'.!!&=Y#" + "'-U!%]M!%]U!%=Y$%]Q!$]Q'%]M!'=Y'&-M,&-M\"%ME!%-I#']A%#=I!$MI/&ME$" + "&MA$#=A!(=5,&=E#'-9'&]E!'-5''-=!!=1\"(M1$&])&%M)!'M%%$=%!%M!!'--#" + "#,]!%!\"']Q$%]I!(-Q!#=Q%" + "$MM!%]Q!$MQ!&MU%&]Q!'-]!#=E!%]M!&]Q!(-Q%$MY!&MI$(=M!%]I!#=]!&]E%" + "%]Q!\"-U!*>!4'=I(&]Q!$MA!%]M!)=A+%]5\"(-E!&=M$&-1#(=9-%-5(%]9!'==(" + "'=5#%]5\"%]1!*-1*%]%\"(]5$$=)!%]-\"#M%\"%M!!%M-!&L]!&LQ&(,],'-)'&LY!" + "'M%$%LE\"&\\Q'& b ? a : b; +} + +/* Create a new bubble. */ +void * +glb_bubble_new(glb_data *d, GLfloat x, GLfloat y, GLfloat z, GLfloat scale, + GLfloat y_incr, GLfloat scale_incr) +{ + int i, j; + + /* GLfloat axes [glb_config.nr_nudge_axes][3]; */ + GLfloat axes[5][3]; /* HARD CODED for SunCC */ + int nr_vertices; + glb_vertex *vertices = glb_sphere_get_vertices(d, &nr_vertices); + + bubble *b = (bubble *) malloc(sizeof *b); + + if (b == 0) + return 0; + + if (glb_config.bubble_colour[0] == -1.0) { + b->color[0] = ((float) (NRAND(100)) / 100.0); + b->color[1] = ((float) (NRAND(100)) / 100.0); + b->color[2] = ((float) (NRAND(100)) / 100.0); + } else { + b->color[0] = glb_config.bubble_colour[0]; + b->color[1] = glb_config.bubble_colour[1]; + b->color[2] = glb_config.bubble_colour[2]; + } + b->color[3] = glb_config.bubble_colour[3]; + + + b->contributions = (GLfloat *) malloc(sizeof (GLfloat) * nr_vertices * + glb_config.nr_nudge_axes); + if (b->contributions == 0) { + (void) free((void *) b); + return 0; + } + b->nudge_angle = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes); + if (b->nudge_angle == 0) { + (void) free((void *) b->contributions); + (void) free((void *) b); + return 0; + } + b->nudge_angle_incr = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes); + if (b->nudge_angle_incr == 0) { + (void) free((void *) b->nudge_angle); + (void) free((void *) b->contributions); + (void) free((void *) b); + return 0; + } + /* Initialize primitive elements. */ + b->x = x; + b->y = y; + b->z = z; + b->scale = scale; + b->y_incr = y_incr; + b->scale_incr = scale_incr; + b->rotx = b->roty = b->rotz = 0; + b->rotx_incr = glb_drand() * glb_config.rotation_factor * 2 + - glb_config.rotation_factor; + b->roty_incr = glb_drand() * glb_config.rotation_factor * 2 + - glb_config.rotation_factor; + b->rotz_incr = glb_drand() * glb_config.rotation_factor * 2 + - glb_config.rotation_factor; + + /* Initialize the nudge angle arrays. */ + for (i = 0; i < glb_config.nr_nudge_axes; ++i) { + b->nudge_angle[i] = 0; + b->nudge_angle_incr[i] = glb_drand() * glb_config.nudge_angle_factor; + } + + /* Choose some random nudge axes. */ + for (i = 0; i < glb_config.nr_nudge_axes; ++i) { + axes[i][0] = glb_drand() * 2 - 1; + axes[i][1] = glb_drand() * 2 - 1; + axes[i][2] = glb_drand() * 2 - 1; + normalize(axes[i]); + } + + /* Calculate the contribution that each nudge axis has on each vertex. */ + for (i = 0; i < nr_vertices; ++i) + for (j = 0; j < glb_config.nr_nudge_axes; ++j) + b->contributions[i * glb_config.nr_nudge_axes + j] + = max(0, dotprod(vertices[i], axes[j])); + + return (void *) b; +} + +/* Delete a bubble and free up all memory. */ +void +glb_bubble_delete(void *bb) +{ + bubble *b = (bubble *) bb; + + if (b != NULL) { + if (b->nudge_angle_incr) { + (void) free((void *) b->nudge_angle_incr); + b->nudge_angle_incr = NULL; + } + if (b->nudge_angle) { + (void) free((void *) b->nudge_angle); + b->nudge_angle = NULL; + } + if (b->contributions) { + (void) free((void *) b->contributions); + b->contributions = NULL; + } + (void) free((void *) b); + b = NULL; + } +} + +/* Rotate and wobble a bubble by a single step. */ +void +glb_bubble_step(void *bb) +{ + int i; + bubble *b = (bubble *) bb; + + /* Update the rotation. */ + b->rotx += b->rotx_incr; + b->roty += b->roty_incr; + b->rotz += b->rotz_incr; + + /* Update the nudge angles. */ + for (i = 0; i < glb_config.nr_nudge_axes; ++i) + b->nudge_angle[i] += b->nudge_angle_incr[i]; + + /* Move it upwards & outwards. */ + b->y += b->y_incr; + b->scale += b->scale_incr; +} + +/* Draw a bubble. */ +void +glb_bubble_draw(glb_data *d, void *bb) +{ + int i, j; + bubble *b = (bubble *) bb; + int nr_vertices; + glb_vertex *vertices = glb_sphere_get_vertices(d, &nr_vertices); + int nr_triangles; + glb_triangle *triangles = glb_sphere_get_triangles(d, &nr_triangles); + glb_vertex *new_vertices; + + new_vertices = (glb_vertex *) malloc(sizeof (glb_vertex) * nr_vertices); + /* Calculate the vertices of this bubble, factoring in each nudge axis. */ + for (i = 0; i < nr_vertices; ++i) { + GLfloat s = 0; + + for (j = 0; j < glb_config.nr_nudge_axes; ++j) + s += ((GLfloat) cos((double) (b->nudge_angle[j])) * + glb_config.nudge_factor - glb_config.nudge_factor / 2) * + b->contributions[i * glb_config.nr_nudge_axes + j]; + + new_vertices[i][0] = vertices[i][0] * (s + 1); + new_vertices[i][1] = vertices[i][1] * (s + 1); + new_vertices[i][2] = vertices[i][2] * (s + 1); + } + + glPushMatrix(); + + /* Apply translation, rotation and scalings. */ + glTranslatef(b->x, b->y, b->z); + + glRotatef(b->rotx, 1, 0, 0); + glRotatef(b->roty, 0, 1, 0); + glRotatef(b->rotz, 0, 0, 1); + + glScalef(b->scale, b->scale, b->scale); + + /* Draw the bubble. */ + glFrontFace(GL_CW); + glBegin(GL_TRIANGLES); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, b->color); + + for (i = 0; i < nr_triangles; ++i) { + glNormal3fv(new_vertices[triangles[i][0]]); + glVertex3fv(new_vertices[triangles[i][0]]); + glNormal3fv(new_vertices[triangles[i][1]]); + glVertex3fv(new_vertices[triangles[i][1]]); + glNormal3fv(new_vertices[triangles[i][2]]); + glVertex3fv(new_vertices[triangles[i][2]]); + } + glEnd(); + glPopMatrix(); + (void) free((void *) new_vertices); + glb_config.polygon_count += nr_triangles; +} + +/* Return y value. */ +GLfloat +glb_bubble_get_y(void *bb) +{ + bubble *b = (bubble *) bb; + + return b->y; +} diff --git a/hacks/glx/bubble3d.h b/hacks/glx/bubble3d.h new file mode 100644 index 0000000..92ccbbd --- /dev/null +++ b/hacks/glx/bubble3d.h @@ -0,0 +1,100 @@ +/* GLBUBBLES (C) 1998 Richard W.M. Jones. */ + +#ifndef __bubbles3d_h__ +#define __bubbles3d_h__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifdef STANDALONE +# include +# include "xlockmoreI.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#if !defined(HAVE_JWXYZ) && !defined(HAVE_JWZGLES) +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +/* Static configuration. */ +#define GLB_SLOW_GL 0 /* Set this if you have a slow GL + * implementation. If you have an accelerated + * graphics card, set this to 0. + */ +#define GLB_VERTICES_EPSILON 0.0005 /* How close are identical vertices? */ + +/* Configuration structure. */ +struct glb_config { + int transparent_p; /* Whether to use alpha blending */ + + int subdivision_depth; /* Controls how many triangles are in + * each bubble. 2 and 3 are good values. + */ + int nr_nudge_axes; /* Number of directions in which each + * bubble gets stretched. Values between + * 3 and 7 seem to produce good results. + */ + GLfloat nudge_angle_factor; /* Max. amount of rotation in nudge angles. + * Controls the amount of `wobble' we see, + * and 0.3 seems to work well. + */ + GLfloat nudge_factor; /* Max. displacement of any single nudge. + * Controls the amount of the wobble. Depends + * on NR_NUDGE_AXES, and must not exceed + * 1 / NR_NUDGE_AXES. 0.1 is good. + */ + GLfloat rotation_factor; /* Max. amount by which bubbles rotate. */ + int create_bubbles_every; /* How often to create new bubbles. */ + int max_bubbles; /* Max. number of bubbles to create. */ + double p_bubble_group[4]; /* Probabilities of creating 1, 2, 3, 4 + * bubbles in a group. Cumulative. + */ + GLfloat max_size; /* Max. size. */ + GLfloat min_size; /* Min. size of bubbles. */ + GLfloat max_speed; /* Max. speed. */ + GLfloat min_speed; /* Min. speed of bubbles. */ + GLfloat scale_factor; /* Factor by which bubbles scale from bottom + * of screen to top. 1.5 - 2.0 are OK. + */ + GLfloat screen_bottom; /* Bottom of screen. */ + GLfloat screen_top; /* Top of screen. */ + GLfloat bubble_colour[4]; /* Colour of the bubbles. */ + + int polygon_count; +}; + +extern struct glb_config glb_config; + +#define glb_drand() ((double)LRAND() / (double)MAXRAND) + +/*-- From glb_sphere.c. --*/ +typedef struct glb_data glb_data; +typedef GLfloat glb_vertex[3]; +typedef GLuint glb_triangle[3]; +extern glb_data * glb_sphere_init(void); +extern glb_vertex *glb_sphere_get_vertices(glb_data *, int *nr_vertices); +extern glb_triangle *glb_sphere_get_triangles(glb_data *, int *nr_triangles); +extern void glb_sphere_end(glb_data *); + +/*-- From glb_bubble.c. --*/ +extern void *glb_bubble_new(glb_data *d, + GLfloat x, GLfloat y, GLfloat z, GLfloat scale, + GLfloat y_incr, GLfloat scale_incr); +extern void glb_bubble_delete(void *); +extern void glb_bubble_step(void *); +extern void glb_bubble_draw(glb_data *d, void *); +extern GLfloat glb_bubble_get_y(void *); + +/*-- From glb_draw.c. --*/ +extern void *glb_draw_init(void); +extern void glb_draw_step(void *); +extern void glb_draw_end(void *); + +#endif /* __bubbles3d_h__ */ diff --git a/hacks/glx/bubble3d.man b/hacks/glx/bubble3d.man new file mode 100644 index 0000000..f847e12 --- /dev/null +++ b/hacks/glx/bubble3d.man @@ -0,0 +1,62 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +bubble3d - 3d rising bubbles. +.SH SYNOPSIS +.B bubble3d +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-transparent] +[\-color \fIcolor\fP] +[\-fps] +.SH DESCRIPTION +Draws a stream of rising, undulating 3D bubbles, rising toward the top of +the screen, with nice specular reflections. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-transparent +Draw transparent bubbles instead of solid ones. +.TP 8 +.B \-color \fIcolor\fP +Draw bubbles of the specified color. "Random" means a different color +for each bubble. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 15000 (0.015 seconds.). +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Richard Jones. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Richard Jones. diff --git a/hacks/glx/buildlwo.c b/hacks/glx/buildlwo.c new file mode 100644 index 0000000..c20c9e2 --- /dev/null +++ b/hacks/glx/buildlwo.c @@ -0,0 +1,96 @@ + +#if 0 +static const char sccsid[] = "@(#)buildlwo.c 4.02 97/04/20 xlockmore"; +#endif + +/*- + * buildlwo.c: Lightwave Object Display List Builder for OpenGL + * + * This module can be called by any GL mode wishing to use + * objects created in NewTek's Lightwave 3D. The objects must + * first be converted to C source with my converter "lw2ogl". + * If other people are interested in this, I will put up a + * web page for it at http://www.netaxs.com/~emackey/lw2ogl/ + * + * by Ed Mackey, 4/19/97 + * + */ + +#ifndef STANDALONE +#include "xlock.h" +#endif + +#ifdef USE_GL + +#include "buildlwo.h" + +GLuint +BuildLWO(int wireframe, const struct lwo *object) +{ + GLuint dl_num; + const GLfloat *pnts, *normals, *grab; + const unsigned short int *pols; + GLfloat three[3]; + int p, num_pnts = 0; + + dl_num = glGenLists(1); + if (!dl_num) + return (0); + + pnts = object->pnts; + normals = object->normals; + pols = object->pols; + + glNewList(dl_num, GL_COMPILE); + + if (!pols) { + num_pnts = object->num_pnts; + glBegin(GL_POINTS); + for (p = 0; p < num_pnts; ++p) { + three[0] = *(pnts++); + three[1] = *(pnts++); + three[2] = *(pnts++); + glVertex3fv(three); + } + glEnd(); + } else + for (;;) { + if (num_pnts <= 0) { + num_pnts = *pols + 2; + if (num_pnts < 3) + break; + if (num_pnts == 3) { + glBegin(GL_POINTS); + } else if (num_pnts == 4) { + glBegin(GL_LINES); + } else { + three[0] = *(normals++); + three[1] = *(normals++); + three[2] = *(normals++); + glNormal3fv(three); + if (wireframe) + glBegin(GL_LINE_LOOP); + else + glBegin(GL_POLYGON); + } + } else if (num_pnts == 1) { + glEnd(); + } else { + grab = pnts + ((int) (*pols) * 3); + three[0] = *(grab++); + three[1] = *(grab++); + three[2] = *(grab); + glVertex3fv(three); + } + --num_pnts; + ++pols; + } + + glEndList(); + + return (dl_num); +} + +#endif /* USE_GL */ + +/* End of buildlwo.c */ diff --git a/hacks/glx/buildlwo.h b/hacks/glx/buildlwo.h new file mode 100644 index 0000000..b7fbbd9 --- /dev/null +++ b/hacks/glx/buildlwo.h @@ -0,0 +1,43 @@ +/*- + * buildlwo.h: Header file for Lightwave Object Display List Builder + * for OpenGL + * + * by Ed Mackey, 4/19/97 + * + */ + +#ifndef __BUILD_LWO_H__ +#define __BUILD_LWO_H__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifdef STANDALONE +# ifndef HAVE_JWXYZ +# include +# endif +#endif + +#ifdef HAVE_ANDROID +# include +#endif + + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +struct lwo { + int num_pnts; + const GLfloat *pnts; + const GLfloat *normals; + const unsigned short int *pols; + const GLfloat *smoothnormals; +}; + +GLuint BuildLWO(int wireframe, const struct lwo *object); + +#endif + +/* End of buildlwo.h */ diff --git a/hacks/glx/cage.c b/hacks/glx/cage.c new file mode 100644 index 0000000..66f48aa --- /dev/null +++ b/hacks/glx/cage.c @@ -0,0 +1,480 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* cage --- the Impossible Cage, an Escher like scene. */ + +#if 0 +static const char sccsid[] = "@(#)cage.c 5.01 2001/03/01 xlockmore"; +#endif + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The RotateAroundU() routine was adapted from the book + * "Computer Graphics Principles and Practice + * Foley - vanDam - Feiner - Hughes + * Second Edition" Pag. 227, exercise 5.15. + * + * This mode shows some interesting scenes that are impossible OR very + * wierd to build in the real universe. Much of the scenes are inspirated + * on Mauritz Cornelis Escher's works which derivated the mode's name. + * M.C. Escher (1898-1972) was a dutch artist and many people prefer to + * say he was a mathematician. + * + * Thanks goes to Brian Paul for making it possible and inexpensive to use + * OpenGL at home. + * + * Since I'm not a native English speaker, my apologies for any grammatical + * mistakes. + * + * My e-mail address is + * mfvianna@centroin.com.br + * + * Marcelo F. Vianna (Jun-01-1997) + * + * Revision History: + * 05-Apr-2002: Removed all gllist uses (fix some bug with nvidia driver) + * 01-Mar-2001: Added FPS stuff E.Lassauge + * 01-Nov-2000: Allocation checks + * 01-Jan-1998: Mode separated from escher and renamed + * 08-Jun-1997: New scene implemented: "Impossible Cage" based in a M.C. + * Escher's painting with the same name (quite similar). The + * first GL mode to use texture mapping. + * The "Impossible Cage" scene doesn't use DEPTH BUFFER, the + * wood planks are drawn consistently using GL_CULL_FACE, and + * the painter's algorithm is used to sort the planks. + * Marcelo F. Vianna. + * 07-Jun-1997: Speed ups in Moebius Strip using GL_CULL_FACE. + * Marcelo F. Vianna. + * 03-Jun-1997: Initial Release (Only one scene: "Moebius Strip") + * The Moebius Strip scene was inspirated in a M.C. Escher's + * painting named Moebius Strip II in wich ants walk across a + * Moebius Strip path, sometimes meeting each other and sometimes + * being in "opposite faces" (note that the moebius strip has + * only one face and one edge). + * Marcelo F. Vianna. + */ + +/*- + * Texture mapping is only available on RGBA contexts, Mono and color index + * visuals DO NOT support texture mapping in OpenGL. + * + * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture + * mapping shuld work on PseudoColor, DirectColor, TrueColor using Mesa. Mono + * is not officially supported for both OpenGL and Mesa, but seems to not crash + * Mesa. + * + * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know). + */ + +#ifdef STANDALONE +# define MODE_cage +# define DEFAULTS "*delay: 25000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_cage 0 +# define release_cage 0 +# define cage_handle_event xlockmore_no_events +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef MODE_cage + +#if 0 +#include "e_textures.h" +#else +#include "ximage-loader.h" +#include "images/gen/wood_png.h" +#endif + +ENTRYPOINT ModeSpecOpt cage_opts = +{0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL}; + +#ifdef USE_MODULES +ModStruct cage_description = +{"cage", "init_cage", "draw_cage", NULL, + "draw_cage", "change_cage", (char *) NULL, &cage_opts, + 25000, 1, 1, 1, 1.0, 4, "", + "Shows the Impossible Cage, an Escher-like GL scene", 0, NULL}; + +#endif + +#define Scale4Window 0.3 +#define Scale4Iconic 0.4 + +#define sqr(A) ((A)*(A)) + +#ifndef Pi +#define Pi M_PI +#endif + +#define ObjWoodPlank 0 +#define MaxObj 1 + +/*************************************************************************/ + +typedef struct { + GLint WindH, WindW; + GLfloat step; + GLXContext *glx_context; +} cagestruct; + +static const float front_shininess[] = {60.0}; +static const float front_specular[] = {0.7, 0.7, 0.7, 1.0}; +static const float ambient[] = {0.0, 0.0, 0.0, 1.0}; +static const float diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const float position0[] = {1.0, 1.0, 1.0, 0.0}; +static const float position1[] = {-1.0, -1.0, 1.0, 0.0}; +static const float lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0}; +static const float lmodel_twoside[] = {GL_TRUE}; + +static const float MaterialWhite[] = {0.7, 0.7, 0.7, 1.0}; + +static cagestruct *cage = (cagestruct *) NULL; + +#define PlankWidth 3.0 +#define PlankHeight 0.35 +#define PlankThickness 0.15 + +static Bool +draw_woodplank(ModeInfo *mi, cagestruct * cp, int wire) +{ + glBegin(wire ? GL_LINES : GL_QUADS); + glNormal3f(0, 0, 1); + glTexCoord2f(0, 0); + glVertex3f(-PlankWidth, -PlankHeight, PlankThickness); + glTexCoord2f(1, 0); + glVertex3f(PlankWidth, -PlankHeight, PlankThickness); + glTexCoord2f(1, 1); + glVertex3f(PlankWidth, PlankHeight, PlankThickness); + glTexCoord2f(0, 1); + glVertex3f(-PlankWidth, PlankHeight, PlankThickness); + mi->polygon_count++; + glNormal3f(0, 0, -1); + glTexCoord2f(0, 0); + glVertex3f(-PlankWidth, PlankHeight, -PlankThickness); + glTexCoord2f(1, 0); + glVertex3f(PlankWidth, PlankHeight, -PlankThickness); + glTexCoord2f(1, 1); + glVertex3f(PlankWidth, -PlankHeight, -PlankThickness); + glTexCoord2f(0, 1); + glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness); + mi->polygon_count++; + glNormal3f(0, 1, 0); + glTexCoord2f(0, 0); + glVertex3f(-PlankWidth, PlankHeight, PlankThickness); + glTexCoord2f(1, 0); + glVertex3f(PlankWidth, PlankHeight, PlankThickness); + glTexCoord2f(1, 1); + glVertex3f(PlankWidth, PlankHeight, -PlankThickness); + glTexCoord2f(0, 1); + glVertex3f(-PlankWidth, PlankHeight, -PlankThickness); + mi->polygon_count++; + glNormal3f(0, -1, 0); + glTexCoord2f(0, 0); + glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness); + glTexCoord2f(1, 0); + glVertex3f(PlankWidth, -PlankHeight, -PlankThickness); + glTexCoord2f(1, 1); + glVertex3f(PlankWidth, -PlankHeight, PlankThickness); + glTexCoord2f(0, 1); + glVertex3f(-PlankWidth, -PlankHeight, PlankThickness); + mi->polygon_count++; + glNormal3f(1, 0, 0); + glTexCoord2f(0, 0); + glVertex3f(PlankWidth, -PlankHeight, PlankThickness); + glTexCoord2f(1, 0); + glVertex3f(PlankWidth, -PlankHeight, -PlankThickness); + glTexCoord2f(1, 1); + glVertex3f(PlankWidth, PlankHeight, -PlankThickness); + glTexCoord2f(0, 1); + glVertex3f(PlankWidth, PlankHeight, PlankThickness); + mi->polygon_count++; + glNormal3f(-1, 0, 0); + glTexCoord2f(0, 0); + glVertex3f(-PlankWidth, PlankHeight, PlankThickness); + glTexCoord2f(1, 0); + glVertex3f(-PlankWidth, PlankHeight, -PlankThickness); + glTexCoord2f(1, 1); + glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness); + glTexCoord2f(0, 1); + glVertex3f(-PlankWidth, -PlankHeight, PlankThickness); + mi->polygon_count++; + glEnd(); + + return True; +} + +static Bool +draw_impossiblecage(ModeInfo *mi, cagestruct * cp, int wire) +{ + glPushMatrix(); + glRotatef(90, 0, 1, 0); + glTranslatef(0.0, PlankHeight - PlankWidth, -PlankThickness - PlankWidth); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glRotatef(90, 0, 0, 1); + glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - PlankThickness); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glRotatef(90, 0, 1, 0); + glTranslatef(0.0, PlankWidth - PlankHeight, -PlankThickness - PlankWidth); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glTranslatef(0.0, PlankWidth - PlankHeight, 3 * PlankThickness - PlankWidth); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glRotatef(90, 0, 0, 1); + glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - PlankThickness); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - 3 * PlankThickness); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glTranslatef(0.0, PlankHeight - PlankWidth, 3 * PlankThickness - PlankWidth); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glRotatef(90, 0, 0, 1); + glTranslatef(0.0, PlankHeight - PlankWidth, PlankThickness - PlankWidth); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - 3 * PlankThickness); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glRotatef(90, 0, 1, 0); + glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth + PlankThickness); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glRotatef(90, 0, 0, 1); + glTranslatef(0.0, PlankWidth - PlankHeight, PlankThickness - PlankWidth); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + glPushMatrix(); + glRotatef(90, 0, 1, 0); + glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth + PlankThickness); + if (!draw_woodplank(mi, cp, wire)) + return False; + glPopMatrix(); + return True; +} + +static void +reshape_cage(ModeInfo * mi, int width, int height) +{ + cagestruct *cp = &cage[MI_SCREEN(mi)]; + int i; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + } + + glViewport(0, y, cp->WindW = (GLint) width, cp->WindH = (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); + glMatrixMode(GL_MODELVIEW); + i = width / 512 + 1; + glLineWidth(i); + glPointSize(i); +} + +static void +pinit(ModeInfo *mi) +{ + /* int status; */ + + if (MI_IS_WIREFRAME(mi)) + return; + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_NORMALIZE); + glFrontFace(GL_CCW); + glCullFace(GL_BACK); + + /* cage */ + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite); + glShadeModel(GL_FLAT); + glDisable(GL_DEPTH_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_CULL_FACE); + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + +#if 0 + clear_gl_error(); + if (MI_IS_MONO(mi)) + status = 0; + else + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, + WoodTextureWidth, WoodTextureHeight, + GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + if (status) + { + const char *s = (char *) gluErrorString (status); + fprintf (stderr, "%s: error mipmapping texture: %s\n", + progname, (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); +#else + { + XImage *img = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + wood_png, sizeof(wood_png)); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + img->width, img->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, img->data); + check_gl_error("texture"); + XDestroyImage (img); + } +#endif + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); +} + +ENTRYPOINT void +init_cage (ModeInfo * mi) +{ + cagestruct *cp; + + MI_INIT (mi, cage); + cp = &cage[MI_SCREEN(mi)]; + + cp->step = NRAND(90); + if ((cp->glx_context = init_GL(mi)) != NULL) { + + reshape_cage(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + pinit(mi); + } else { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void +draw_cage (ModeInfo * mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + cagestruct *cp; + + if (cage == NULL) + return; + cp = &cage[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + if (!cp->glx_context) + return; + + mi->polygon_count = 0; + glXMakeCurrent(display, window, *(cp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glTranslatef(0.0, 0.0, -10.0); + + if (!MI_IS_ICONIC(mi)) { + glScalef(Scale4Window * cp->WindH / cp->WindW, Scale4Window, Scale4Window); + } else { + glScalef(Scale4Iconic * cp->WindH / cp->WindW, Scale4Iconic, Scale4Iconic); + } + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + if (o != 0 && o != 180 && o != -180) { + glScalef (1/h, h, 1/h); /* #### not quite right */ + h = 1.7; + glScalef (h, h, h); + } + } +# endif + + /* cage */ + glRotatef(cp->step * 100, 0, 0, 1); + glRotatef(25 + cos(cp->step * 5) * 6, 1, 0, 0); + glRotatef(204.5 - sin(cp->step * 5) * 8, 0, 1, 0); + if (!draw_impossiblecage(mi, cp, MI_IS_WIREFRAME(mi))) { + MI_ABORT(mi); + return; + } + + glPopMatrix(); + if (MI_IS_FPS(mi)) do_fps (mi); + glFlush(); + + glXSwapBuffers(display, window); + + cp->step += 0.025; +} + +#ifndef STANDALONE +ENTRYPOINT void +change_cage (ModeInfo * mi) +{ + cagestruct *cp = &cage[MI_SCREEN(mi)]; + + if (!cp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context)); + pinit(mi); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("Cage", cage) + +#endif diff --git a/hacks/glx/cage.man b/hacks/glx/cage.man new file mode 100644 index 0000000..dc5595b --- /dev/null +++ b/hacks/glx/cage.man @@ -0,0 +1,61 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +cage - Escher's impossible cage, for xscreensaver. +.SH SYNOPSIS +.B cage +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-mono] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +This draws Escher's "Impossible Cage", a 3d analog of a moebius strip, +and rotates it in three dimensions. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 25000 (0.03 seconds.). +.TP 8 +.B \-mono +Render solid instead of textured. +.TP 8 +.B \-wireframe +Render in wireframe instead of textured. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Marcelo Vianna. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Marcelo Vianna. diff --git a/hacks/glx/carousel.c b/hacks/glx/carousel.c new file mode 100644 index 0000000..863b1a5 --- /dev/null +++ b/hacks/glx/carousel.c @@ -0,0 +1,941 @@ +/* carousel, Copyright (c) 2005-2018 Jamie Zawinski + * Loads a sequence of images and rotates them around. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Created: 21-Feb-2005 + */ + +#if defined(HAVE_COCOA) || defined(HAVE_ANDROID) +# define DEF_FONT "OCR A Std 48, Lucida Console 48, Monaco 48" +#elif 0 /* real X11, XQueryFont() */ +# define DEF_FONT "-*-helvetica-bold-r-normal-*-*-480-*-*-*-*-*-*" +#else /* real X11, load_font_retry() */ +# define DEF_FONT "-*-ocr a std-medium-r-*-*-*-480-*-*-m-*-*-*" +#endif + +#define DEF_TITLE_FONT "-*-helvetica-bold-r-normal-*-*-480-*-*-*-*-*-*" + +#define DEFAULTS "*count: 7 \n" \ + "*delay: 10000 \n" \ + "*wireframe: False \n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" \ + "*useSHM: True \n" \ + "*font: " DEF_FONT "\n" \ + "*titleFont: " DEF_TITLE_FONT "\n" \ + "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \ + "*grabDesktopImages: False \n" \ + "*chooseRandomImages: True \n" + +# define free_carousel 0 +# define release_carousel 0 +# include "xlockmore.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#ifdef USE_GL + +# define DEF_SPEED "1.0" +# define DEF_DURATION "20" +# define DEF_TITLES "True" +# define DEF_ZOOM "True" +# define DEF_TILT "XY" +# define DEF_MIPMAP "True" +# define DEF_DEBUG "False" + +#include "rotator.h" +#include "gltrackball.h" +#include "grab-ximage.h" +#include "texfont.h" + +# ifndef HAVE_JWXYZ +# include /* for XrmDatabase in -debug mode */ +# endif + +/* Should be in */ +# ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT +# define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +# endif +# ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT +# define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +# endif + +typedef struct { + double x, y, w, h; +} rect; + +typedef enum { EARLY, NORMAL, LOADING, OUT, IN, DEAD } fade_mode; +static int fade_ticks = 60; + +typedef struct { + char *title; /* the filename of this image */ + int w, h; /* size in pixels of the image */ + int tw, th; /* size in pixels of the texture */ + XRectangle geom; /* where in the image the bits are */ + GLuint texid; +} image; + +typedef struct { + ModeInfo *mi; + image current, loading; + GLfloat r, theta; /* radius and rotation on the tube */ + rotator *rot; /* for zoomery */ + Bool from_top_p; /* whether this image drops in or rises up */ + time_t expires; /* when this image should be replaced */ + fade_mode mode; /* in/out animation state */ + int mode_tick; + Bool loaded_p; /* whether background load is done */ +} image_frame; + + +typedef struct { + GLXContext *glx_context; + GLfloat anisotropic; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + time_t button_down_time; + + int nframes; /* how many frames are loaded */ + int frames_size; + image_frame **frames; /* pointers to the frames */ + + Bool awaiting_first_images_p; + int loads_in_progress; + + texture_font_data *texfont, *titlefont; + + fade_mode mode; + int mode_tick; + + int loading_sw, loading_sh; + + time_t last_time, now; + int draw_tick; + +} carousel_state; + +static carousel_state *sss = NULL; + + +/* Command-line arguments + */ +static GLfloat speed; /* animation speed scale factor */ +static int duration; /* reload images after this long */ +static Bool mipmap_p; /* Use mipmaps instead of single textures. */ +static Bool titles_p; /* Display image titles. */ +static Bool zoom_p; /* Throb the images in and out as they spin. */ +static char *tilt_str; +static Bool tilt_x_p; /* Tilt axis towards the viewer */ +static Bool tilt_y_p; /* Tilt axis side to side */ +static Bool debug_p; /* Be loud and do weird things. */ + + +static XrmOptionDescRec opts[] = { + {"-zoom", ".zoom", XrmoptionNoArg, "True" }, + {"-no-zoom", ".zoom", XrmoptionNoArg, "False" }, + {"-tilt", ".tilt", XrmoptionSepArg, 0 }, + {"-no-tilt", ".tilt", XrmoptionNoArg, "" }, + {"-titles", ".titles", XrmoptionNoArg, "True" }, + {"-no-titles", ".titles", XrmoptionNoArg, "False" }, + {"-mipmaps", ".mipmap", XrmoptionNoArg, "True" }, + {"-no-mipmaps", ".mipmap", XrmoptionNoArg, "False" }, + {"-duration", ".duration", XrmoptionSepArg, 0 }, + {"-debug", ".debug", XrmoptionNoArg, "True" }, + {"-font", ".font", XrmoptionSepArg, 0 }, + {"-speed", ".speed", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + { &mipmap_p, "mipmap", "Mipmap", DEF_MIPMAP, t_Bool}, + { &debug_p, "debug", "Debug", DEF_DEBUG, t_Bool}, + { &titles_p, "titles", "Titles", DEF_TITLES, t_Bool}, + { &zoom_p, "zoom", "Zoom", DEF_ZOOM, t_Bool}, + { &tilt_str, "tilt", "Tilt", DEF_TILT, t_String}, + { &speed, "speed", "Speed", DEF_SPEED, t_Float}, + { &duration, "duration", "Duration", DEF_DURATION, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt carousel_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Allocates a frame structure and stores it in the list. + */ +static image_frame * +alloc_frame (ModeInfo *mi) +{ + carousel_state *ss = &sss[MI_SCREEN(mi)]; + image_frame *frame = (image_frame *) calloc (1, sizeof (*frame)); + + frame->mi = mi; + frame->mode = EARLY; + frame->rot = make_rotator (0, 0, 0, 0, 0.04 * frand(1.0) * speed, False); + + glGenTextures (1, &frame->current.texid); + glGenTextures (1, &frame->loading.texid); + if (frame->current.texid <= 0) abort(); + if (frame->loading.texid <= 0) abort(); + + if (ss->frames_size <= ss->nframes) + { + ss->frames_size = (ss->frames_size * 1.2) + ss->nframes; + ss->frames = (image_frame **) + realloc (ss->frames, ss->frames_size * sizeof(*ss->frames)); + if (! ss->frames) + { + fprintf (stderr, "%s: out of memory (%d images)\n", + progname, ss->frames_size); + exit (1); + } + } + + ss->frames[ss->nframes++] = frame; + + return frame; +} + + +static void image_loaded_cb (const char *filename, XRectangle *geom, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure); + + +/* Load a new file into the given image struct. + */ +static void +load_image (ModeInfo *mi, image_frame *frame) +{ + carousel_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + + if (debug_p && !wire && frame->current.w != 0) + fprintf (stderr, "%s: dropped %4d x %-4d %4d x %-4d \"%s\"\n", + progname, + frame->current.geom.width, + frame->current.geom.height, + frame->current.tw, frame->current.th, + (frame->current.title ? frame->current.title : "(null)")); + + switch (frame->mode) + { + case EARLY: break; + case NORMAL: frame->mode = LOADING; break; + default: abort(); + } + + ss->loads_in_progress++; + + if (wire) + image_loaded_cb (0, 0, 0, 0, 0, 0, frame); + else + { + int w = (MI_WIDTH(mi) / 2) - 1; + int h = (MI_HEIGHT(mi) / 2) - 1; + if (w <= 10) w = 10; + if (h <= 10) h = 10; + + if (w > h * 5) { /* tiny window: use 16:9 boxes */ + h = w * 9/16; + } + + load_texture_async (mi->xgwa.screen, mi->window, *ss->glx_context, w, h, + mipmap_p, frame->loading.texid, + image_loaded_cb, frame); + } +} + + +/* Callback that tells us that the texture has been loaded. + */ +static void +image_loaded_cb (const char *filename, XRectangle *geom, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + image_frame *frame = (image_frame *) closure; + ModeInfo *mi = frame->mi; + carousel_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + + if (wire) + { + frame->loading.w = MI_WIDTH (mi) * (0.5 + frand (1.0)); + frame->loading.h = MI_HEIGHT (mi); + frame->loading.geom.width = frame->loading.w; + frame->loading.geom.height = frame->loading.h; + goto DONE; + } + + if (image_width == 0 || image_height == 0) + exit (1); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR); + + if (ss->anisotropic >= 1.0) + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, + ss->anisotropic); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + frame->loading.w = image_width; + frame->loading.h = image_height; + frame->loading.tw = texture_width; + frame->loading.th = texture_height; + frame->loading.geom = *geom; + + if (frame->loading.title) + free (frame->loading.title); + frame->loading.title = (filename ? strdup (filename) : 0); + + /* xscreensaver-getimage returns paths relative to the image directory + now, so leave the sub-directory part in. Unless it's an absolute path. + */ + if (frame->loading.title && frame->loading.title[0] == '/') + { /* strip filename to part after last /. */ + char *s = strrchr (frame->loading.title, '/'); + if (s) strcpy (frame->loading.title, s+1); + } + + if (debug_p) + fprintf (stderr, "%s: loaded %4d x %-4d %4d x %-4d \"%s\"\n", + progname, + frame->loading.geom.width, + frame->loading.geom.height, + frame->loading.tw, frame->loading.th, + (frame->loading.title ? frame->loading.title : "(null)")); + + DONE: + + frame->loaded_p = True; + + if (ss->loads_in_progress <= 0) abort(); + ss->loads_in_progress--; + + /* This image expires N seconds after it finished loading. */ + frame->expires = time((time_t *) 0) + (duration * MI_COUNT(mi)); + + switch (frame->mode) + { + case EARLY: /* part of the initial batch of images */ + { + image swap = frame->current; + frame->current = frame->loading; + frame->loading = swap; + } + break; + case LOADING: /* start dropping the old image out */ + { + frame->mode = OUT; + frame->mode_tick = fade_ticks / speed; + frame->from_top_p = random() & 1; + } + break; + default: + abort(); + } +} + + +static void loading_msg (ModeInfo *mi, int n); + +static Bool +load_initial_images (ModeInfo *mi) +{ + carousel_state *ss = &sss[MI_SCREEN(mi)]; + int i; + Bool all_loaded_p = True; + for (i = 0; i < ss->nframes; i++) + if (! ss->frames[i]->loaded_p) + all_loaded_p = False; + + if (all_loaded_p) + { + if (ss->nframes < MI_COUNT (mi)) + { + /* The frames currently on the list are fully loaded. + Start the next one loading. (We run the image loader + asynchronously, but we load them one at a time.) + */ + load_image (mi, alloc_frame (mi)); + } + else + { + /* The first batch of images are now all loaded! + Stagger the expire times so that they don't all drop out at once. + */ + time_t now = time((time_t *) 0); + int i; + + for (i = 0; i < ss->nframes; i++) + { + image_frame *frame = ss->frames[i]; + frame->r = 1.0; + frame->theta = i * 360.0 / ss->nframes; + frame->expires = now + (duration * (i + 1)); + frame->mode = NORMAL; + } + + /* Instead of always going clockwise, shuffle the expire times + of the frames so that they drop out in a random order. + */ + for (i = 0; i < ss->nframes; i++) + { + image_frame *frame1 = ss->frames[i]; + image_frame *frame2 = ss->frames[random() % ss->nframes]; + time_t swap = frame1->expires; + frame1->expires = frame2->expires; + frame2->expires = swap; + } + + ss->awaiting_first_images_p = False; + } + } + + loading_msg (mi, ss->nframes-1); + + return !ss->awaiting_first_images_p; +} + + +ENTRYPOINT void +reshape_carousel (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (60.0, 1/h, 1.0, 8.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 2.6, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +carousel_handle_event (ModeInfo *mi, XEvent *event) +{ + carousel_state *ss = &sss[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + if (! ss->button_down_p) + ss->button_down_time = time((time_t *) 0); + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + if (ss->button_down_p) + { + /* Add the time the mouse was held to the expire times of all + frames, so that mouse-dragging doesn't count against + image expiration. + */ + int secs = time((time_t *) 0) - ss->button_down_time; + int i; + for (i = 0; i < ss->nframes; i++) + ss->frames[i]->expires += secs; + } + } + + if (gltrackball_event_handler (event, ss->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &ss->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + int i = random() % ss->nframes; + ss->frames[i]->expires = 0; + return True; + } + + return False; +} + + +/* Kludge to add "-v" to invocation of "xscreensaver-getimage" in -debug mode + */ +static void +hack_resources (Display *dpy) +{ +# ifndef HAVE_JWXYZ + char *res = "desktopGrabber"; + char *val = get_string_resource (dpy, res, "DesktopGrabber"); + char buf1[255]; + char buf2[255]; + XrmValue value; + XrmDatabase db = XtDatabase (dpy); + sprintf (buf1, "%.100s.%.100s", progname, res); + sprintf (buf2, "%.200s -v", val); + value.addr = buf2; + value.size = strlen(buf2); + XrmPutResource (&db, buf1, "String", &value); +# endif /* !HAVE_JWXYZ */ +} + + +static void +loading_msg (ModeInfo *mi, int n) +{ + carousel_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + char text[100]; + + if (wire) return; + + if (n == 0) + sprintf (text, "Loading images..."); + else + sprintf (text, "Loading images... (%d%%)", + (int) (n * 100 / MI_COUNT(mi))); + + if (ss->loading_sw == 0) + { + /* only do this once, so that the string doesn't move. */ + XCharStruct e; + texture_string_metrics (ss->titlefont, text, &e, 0, 0); + ss->loading_sw = e.width; + ss->loading_sh = e.ascent + e.descent; + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + +/* + { + double rot = current_device_rotation(); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (s, 1/s, 1); + } + } +*/ + +# ifdef HAVE_MOBILE + if (MI_WIDTH(mi) < MI_HEIGHT(mi)) /* portrait orientation */ + { + GLfloat s = (MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi)); + glScalef (s, s, s); + glTranslatef(-s/2, 0, 0); + } +# endif + + glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1); + glTranslatef ((MI_WIDTH(mi) - ss->loading_sw) / 2, + (MI_HEIGHT(mi) - ss->loading_sh) / 2, + 0); + glColor3f (1, 1, 0); + glEnable (GL_TEXTURE_2D); + glDisable (GL_DEPTH_TEST); + print_texture_string (ss->titlefont, text); + glEnable (GL_DEPTH_TEST); + glPopMatrix(); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + + glFinish(); + glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi)); +} + + +ENTRYPOINT void +init_carousel (ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + carousel_state *ss; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, sss); + ss = &sss[screen]; + + if ((ss->glx_context = init_GL(mi)) != NULL) { + reshape_carousel (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + } else { + MI_CLEARWINDOW(mi); + } + + if (!tilt_str || !*tilt_str) + ; + else if (!strcasecmp (tilt_str, "0")) + ; + else if (!strcasecmp (tilt_str, "X")) + tilt_x_p = 1; + else if (!strcasecmp (tilt_str, "Y")) + tilt_y_p = 1; + else if (!strcasecmp (tilt_str, "XY")) + tilt_x_p = tilt_y_p = 1; + else + { + fprintf (stderr, "%s: tilt must be 'X', 'Y', 'XY' or '', not '%s'\n", + progname, tilt_str); + exit (1); + } + + { + double spin_speed = speed * 0.2; /* rotation of tube around axis */ + double spin_accel = speed * 0.1; + double wander_speed = speed * 0.001; /* tilting of axis */ + + spin_speed *= 0.9 + frand(0.2); + wander_speed *= 0.9 + frand(0.2); + + ss->rot = make_rotator (spin_speed, spin_speed, spin_speed, + spin_accel, wander_speed, True); + + ss->trackball = gltrackball_init (False); + } + + if (strstr ((char *) glGetString(GL_EXTENSIONS), + "GL_EXT_texture_filter_anisotropic")) + glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &ss->anisotropic); + else + ss->anisotropic = 0.0; + + glDisable (GL_LIGHTING); + glEnable (GL_DEPTH_TEST); + glDisable (GL_CULL_FACE); + + if (! wire) + { + glShadeModel (GL_SMOOTH); + glEnable (GL_LINE_SMOOTH); + /* This gives us a transparent diagonal slice through each image! */ + /* glEnable (GL_POLYGON_SMOOTH); */ + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_ALPHA_TEST); + + glEnable (GL_POLYGON_OFFSET_FILL); + glPolygonOffset (1.0, 1.0); + + } + + ss->texfont = load_texture_font (MI_DISPLAY(mi), "font"); + ss->titlefont = load_texture_font (MI_DISPLAY(mi), "titleFont"); + + if (debug_p) + hack_resources (MI_DISPLAY (mi)); + + ss->nframes = 0; + ss->frames_size = 10; + ss->frames = (image_frame **) + calloc (1, ss->frames_size * sizeof(*ss->frames)); + + ss->mode = IN; + ss->mode_tick = fade_ticks / speed; + + ss->awaiting_first_images_p = True; +} + + +static void +draw_frame (ModeInfo *mi, image_frame *frame, time_t now, Bool body_p) +{ + carousel_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + + GLfloat texw = frame->current.geom.width / (GLfloat) frame->current.tw; + GLfloat texh = frame->current.geom.height / (GLfloat) frame->current.th; + GLfloat texx1 = frame->current.geom.x / (GLfloat) frame->current.tw; + GLfloat texy1 = frame->current.geom.y / (GLfloat) frame->current.th; + GLfloat texx2 = texx1 + texw; + GLfloat texy2 = texy1 + texh; + GLfloat aspect = ((GLfloat) frame->current.geom.height / + (GLfloat) frame->current.geom.width); + + glBindTexture (GL_TEXTURE_2D, frame->current.texid); + + glPushMatrix(); + + /* Position this image on the wheel. + */ + glRotatef (frame->theta, 0, 1, 0); + glTranslatef (0, 0, frame->r); + + /* Scale down the image so that all N frames fit on the wheel + without bumping in to each other. + */ + { + GLfloat t, s; + switch (ss->nframes) + { + case 1: t = -1.0; s = 1.7; break; + case 2: t = -0.8; s = 1.6; break; + case 3: t = -0.4; s = 1.5; break; + case 4: t = -0.2; s = 1.3; break; + default: t = 0.0; s = 6.0 / ss->nframes; break; + } + glTranslatef (0, 0, t); + glScalef (s, s, s); + } + + /* Center this image on the wheel plane. + */ + glTranslatef (-0.5, -(aspect/2), 0); + + /* Move as per the "zoom in and out" setting. + */ + if (zoom_p) + { + double x, y, z; + /* Only use the Z component of the rotator for in/out position. */ + get_position (frame->rot, &x, &y, &z, !ss->button_down_p); + glTranslatef (0, 0, z/2); + } + + /* Compute the "drop in and out" state. + */ + switch (frame->mode) + { + case EARLY: + abort(); + break; + case NORMAL: + if (!ss->button_down_p && + now >= frame->expires && + ss->loads_in_progress == 0) /* only load one at a time */ + load_image (mi, frame); + break; + case LOADING: + break; + case OUT: + if (--frame->mode_tick <= 0) { + image swap = frame->current; + frame->current = frame->loading; + frame->loading = swap; + + frame->mode = IN; + frame->mode_tick = fade_ticks / speed; + } + break; + case IN: + if (--frame->mode_tick <= 0) + frame->mode = NORMAL; + break; + default: + abort(); + } + + /* Now translate for current in/out state. + */ + if (frame->mode == OUT || frame->mode == IN) + { + GLfloat t = (frame->mode == OUT + ? frame->mode_tick / (fade_ticks / speed) + : (((fade_ticks / speed) - frame->mode_tick + 1) / + (fade_ticks / speed))); + t = 5 * (1 - t); + if (frame->from_top_p) t = -t; + glTranslatef (0, t, 0); + } + + if (body_p) /* Draw the image quad. */ + { + if (! wire) + { + glColor3f (1, 1, 1); + glNormal3f (0, 0, 1); + glEnable (GL_TEXTURE_2D); + glBegin (GL_QUADS); + glNormal3f (0, 0, 1); + glTexCoord2f (texx1, texy2); glVertex3f (0, 0, 0); + glTexCoord2f (texx2, texy2); glVertex3f (1, 0, 0); + glTexCoord2f (texx2, texy1); glVertex3f (1, aspect, 0); + glTexCoord2f (texx1, texy1); glVertex3f (0, aspect, 0); + glEnd(); + } + + /* Draw a box around it. + */ + glLineWidth (2.0); + glColor3f (0.5, 0.5, 0.5); + glDisable (GL_TEXTURE_2D); + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (1, 0, 0); + glVertex3f (1, aspect, 0); + glVertex3f (0, aspect, 0); + glEnd(); + + } + else /* Draw a title under the image. */ + { + XCharStruct e; + int sw, sh; + GLfloat scale = 0.05; + char *title = frame->current.title ? frame->current.title : "(untitled)"; + texture_string_metrics (ss->texfont, title, &e, 0, 0); + sw = e.width; + sh = e.ascent + e.descent; + + glTranslatef (0, -scale, 0); + + scale /= sh; + glScalef (scale, scale, scale); + + glTranslatef (((1/scale) - sw) / 2, 0, 0); + glColor3f (1, 1, 1); + + if (!wire) + { + glEnable (GL_TEXTURE_2D); + print_texture_string (ss->texfont, title); + } + else + { + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (sw, 0, 0); + glVertex3f (sw, sh, 0); + glVertex3f (0, sh, 0); + glEnd(); + } + } + + glPopMatrix(); +} + + +ENTRYPOINT void +draw_carousel (ModeInfo *mi) +{ + carousel_state *ss = &sss[MI_SCREEN(mi)]; + int i; + + if (!ss->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context)); + + if (ss->awaiting_first_images_p) + if (!load_initial_images (mi)) + return; + + /* Only check the wall clock every 10 frames */ + { + if (ss->now == 0 || ss->draw_tick++ > 10) + { + ss->now = time((time_t *) 0); + if (ss->last_time == 0) ss->last_time = ss->now; + ss->draw_tick = 0; + } + } + + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + glRotatef(current_device_rotation(), 0, 0, 1); + + + /* Run the startup "un-shrink" animation. + */ + switch (ss->mode) + { + case IN: + if (--ss->mode_tick <= 0) + { + ss->mode = NORMAL; + ss->last_time = time((time_t *) 0); + } + break; + case NORMAL: + break; + default: + abort(); + } + + + /* Scale as per the startup "un-shrink" animation. + */ + if (ss->mode != NORMAL) + { + GLfloat s = (ss->mode == OUT + ? ss->mode_tick / (fade_ticks / speed) + : (((fade_ticks / speed) - ss->mode_tick + 1) / + (fade_ticks / speed))); + glScalef (s, s, s); + } + + /* Rotate and tilt as per the user, and the motion modeller. + */ + { + double x, y, z; + gltrackball_rotate (ss->trackball); + + /* Tilt the tube up or down by up to 30 degrees */ + get_position (ss->rot, &x, &y, &z, !ss->button_down_p); + if (tilt_x_p) + glRotatef (15 - (x * 30), 1, 0, 0); + if (tilt_y_p) + glRotatef (7 - (y * 14), 0, 0, 1); + + /* Only use the Y component of the rotator. */ + get_rotation (ss->rot, &x, &y, &z, !ss->button_down_p); + glRotatef (y * 360, 0, 1, 0); + } + + /* First draw each image, then draw the titles. GL insists that you + draw back-to-front in order to make alpha blending work properly, + so we need to draw all of the 100% opaque images before drawing + any of the not-100%-opaque titles. + */ + for (i = 0; i < ss->nframes; i++) + draw_frame (mi, ss->frames[i], ss->now, True); + if (titles_p) + for (i = 0; i < ss->nframes; i++) + draw_frame (mi, ss->frames[i], ss->now, False); + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi)); +} + +XSCREENSAVER_MODULE ("Carousel", carousel) + +#endif /* USE_GL */ diff --git a/hacks/glx/carousel.man b/hacks/glx/carousel.man new file mode 100644 index 0000000..d5c9e43 --- /dev/null +++ b/hacks/glx/carousel.man @@ -0,0 +1,109 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +carousel - displays multiple images rotating in a circular formation +.SH SYNOPSIS +.B carousel +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-count \fIint\fP] +[\-zoom | \-no\-zoom] +[\-tilt \fIXY\fP] +[\-titles | \-no\-titles] +[\-font \fIfont\fP] +[\-speed \fIratio\fP] +[\-duration \fIseconds\fP] +[\-fps] +[\-debug] +[\-wireframe] +.SH DESCRIPTION +Loads several random images, and displays them flying in a circular +formation. The circle changes speed and direction randomly, tilts on +its axis, and the images move in and out. + +This program requires a good video card capable of supporting large +textures. + +To specify the directory that images are loaded from, run +.BR xscreensaver-demo (1) +and click on the "Advanced" tab. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-count \fIint\fP +How many images to display. Default 7. +.TP 8 +.B \-zoom \fB| \-no\-zoom\fP +Whether the images should move in and out (toward and away from the +axis of rotation). Default true. +.TP 8 +.B \-tilt \fIXY\fP \fB| \-no\-tilt\fP +Whether the axis of rotation should tilt, and how. \fB-tilt X\fP +means that it will tilt toward and away from the viewer. +\fB-tilt Y\fP means that it will tilt to the left and right of the +screen. \fB-tilt XY\fP (the default) means it will do both. +.TP 8 +.B \-titles \fB| \-no\-titles\fP +Whether to display the file names of the images beneath them. Default: yes. +.TP 8 +.B \-font \fIfont-name\fP +The font to use for titles. Note that the size of the font affects +the clarity of the characters, not their size (it is auto-scaled.) +.TP 8 +.B \-duration \fIseconds\fP +Every \fIduration\fP seconds, one of the images will be replaced +with a new one. Default 20 seconds. +.TP 8 +.B \-speed \fIratio\fP +Speed up or slow down the animation. 0.5 means half as fast as the +default; 2.0 means twice as fast. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-debug +Prints debugging info to stderr. +.TP 8 +.B \-wireframe +Another debug mode. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver-demo (1) +.BR xscreensaver-getimage (1) +.BR xscreensaver (1) +.BR glslideshow (MANSUFFIX) +.BR photopile (MANSUFFIX) +.SH COPYRIGHT +Copyright \(co 2005 by Jamie Zawinski. + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/chessgames.h b/hacks/glx/chessgames.h new file mode 100644 index 0000000..28f5c57 --- /dev/null +++ b/hacks/glx/chessgames.h @@ -0,0 +1,343 @@ +/* + * endgame -- plays through a chess game ending. enjoy. + * + * Copyright (C) 2002 Blair Tennessy (tennessy@cs.ubc.ca) + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __CHESSGAMES_H__ +#define __CHESSGAMES_H__ + +/** structure for a chess game */ +typedef struct { + + /** original board configuration */ + int board[BOARDSIZE][BOARDSIZE]; + + /** total moves */ + int movecount; + + /** + moves in game. this is a slight hack: moves are encoded in + integer pairs (x,y). the first pair, _from_, determines the + piece to move. the second pair, _to_, determines where to move. + + in case _to_ is held by another piece, that piece is taken. + (see drawTakePiece(), draw_chess()) + + in case the move promotes a pawn, we assume a queening. + (see drawMovingPiece()) + + what's lacking? + castling, en passant, under-promotions. + */ + int moves[40][4]; +} ChessGame; + +#define GAMES 7 +static ChessGame games[GAMES] = { + + /** + game 1: + + E. N. Somov-Nasimovitsch + White to play and win. + + "Zadachi I Etiudi" + 1928 + */ + { + { + { 0, 0, 0, 0, 0, BKING, 0, 0}, + { BPAWN, 0, BPAWN, 0, BPAWN, 0, 0, 0}, + { 0, 0, BPAWN, 0, BPAWN, 0, 0, KNIGHT}, + { PAWN, 0, ROOK, 0, 0, 0, 0, 0}, + { PAWN, 0, 0, 0, KING, PAWN, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { BPAWN, 0, 0, 0, 0, 0, 0, PAWN}, + { BBISHOP,0, 0, 0, 0, 0, 0, 0}, + }, + + 24, + + { + {3, 2, 6, 2}, + {7, 0, 6, 1}, + {6, 2, 6, 6}, + {0, 5, 0, 4}, + {6, 6, 0, 6}, + {0, 4, 1, 3}, + {2, 7, 1, 5}, + {2, 2, 3, 2}, + {0, 6, 0, 3}, + {1, 3, 2, 2}, + {0, 3, 6, 3}, + {3, 2, 4, 2}, /* pawn to bishop 5 */ + {1, 5, 0, 3}, /* check */ + {2, 2, 3, 2}, + {0, 3, 2, 4}, /* takes pawn */ + {3, 2, 2, 2}, + {2, 4, 0, 3}, + {2, 2, 3, 2}, + {6, 3, 6, 1}, /* rook takes bishop */ + {6, 0, 7, 0}, + {6, 1, 3, 1}, + {3, 2, 2, 3}, + {3, 1, 3, 3}, + {0, 0, 2, 3}, + } + }, + + /** + game 2: + + K. A. L. Kubbel + White to play and win. + + "Chess in the USSR" + 1936 + */ + { + { + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, BPAWN}, + { 0, 0, 0, 0, BPAWN, KING, 0, BKING}, + { 0, 0, 0, 0, 0, ROOK, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0,BBISHOP, 0, 0, BROOK, 0, PAWN, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0,BISHOP, 0, 0}, + }, + + 10, + + { + {3, 5, 6, 5}, + {5, 1, 7, 3}, + {6, 5, 6, 7}, /* check */ + {7, 3, 3, 7}, + {7, 5, 6, 4}, + {5, 4, 6, 4}, + {5, 6, 4, 6}, /* ! */ + {6, 4, 6, 7}, + {4, 6, 3, 6}, + {0, 0, 2, 7} + } + }, + + /** + game 3: + + J. Hasek + White to play and win. + + "Le Strategie" + 1929 + */ + { + { + { 0, 0, 0, KNIGHT, 0, 0, 0, KNIGHT}, + { 0, KING, BPAWN, BPAWN, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, BKING, 0, 0, 0, 0, 0, 0}, + { 0, PAWN, 0, 0, 0, BPAWN, 0, 0}, + { PAWN, 0, PAWN, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + }, + + 11, + + { + {0, 3, 2, 2}, + {1, 3, 2, 2}, + {0, 7, 2, 6}, + {4, 5, 5, 5}, + {2, 6, 3, 4}, + {5, 5, 6, 5}, + {3, 4, 5, 3}, /* ! */ + {6, 5, 7, 5}, + {5, 3, 6, 1}, + {0, 0, 0, 0}, /* mull it over... */ + {0, 0, 3, 1} + } + }, + + /** + game 4: + + M.B. Newman + White to play and win. + + "Chess Amateur" + 1913 + */ + { + { + { 0, 0, 0, 0, BQUEEN, 0, 0, 0}, + {BKNIGHT, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, PAWN}, + { BKING, 0, BISHOP, 0, KNIGHT, 0, 0, 0}, + { PAWN, 0, 0, 0, KNIGHT, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { KING, 0, 0, 0, 0, 0, 0, 0}, + }, + + 15, + + { + {4, 2, 3, 1}, + {0, 4, 3, 1}, /* queen wins bishop */ + {4, 4, 5, 2}, + {4, 0, 5, 0}, /* king takes pawn */ + {5, 2, 3, 1}, /* knight takes queen, check */ + {1, 0, 3, 1}, /* knight takes knight */ + {3, 7, 2, 7}, /* pawn advances */ + {3, 1, 2, 3}, + {5, 4, 4, 2}, + {2, 3, 4, 2}, + {2, 7, 1, 7}, /* pawn advances */ + {4, 2, 2, 3}, + {1, 7, 0, 7}, + {0, 0, 0, 0}, + {0, 0, 5, 0} + } + }, + + /** + game 5: + + V.A. Korolikov + White to play and win + + First Prize - "Truda" + 1935 + */ + { + { + { 0, 0, BISHOP, 0, 0, 0, 0, 0}, + { BPAWN, ROOK, 0, 0, 0, 0, 0, 0}, + { 0, 0, BPAWN, PAWN, 0, BKING, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, KING, BBISHOP}, + { 0, 0, 0, 0, BPAWN, 0, PAWN, 0}, + { 0, 0, 0, 0, 0, BPAWN, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + }, + + 21, + + { + {2, 3, 1, 3}, /* pawn to q7 */ + {2, 5, 1, 4}, /* cover with king */ + {1, 1, 0, 1}, + {4, 7, 5, 6}, /* bishop takes pawn */ + {0, 1, 0, 0}, /* r - r8 */ + {6, 5, 7, 5}, /* queened */ + {1, 3, 0, 3}, /* white pawn promoted */ + {1, 4, 0, 3}, /* king takes queen */ + {0, 2, 2, 0}, /* discovered check */ + {5, 6, 0, 1}, /* pull back bishop */ + {2, 0, 7, 5}, /* bishop takes queen */ + {0, 3, 1, 2}, + {7, 5, 2, 0}, /* save rook */ + {5, 4, 6, 4}, + {2, 0, 6, 4}, /* bishop takes pawn */ + {1, 2, 1, 1}, /* king moves in */ + {6, 4, 5, 5}, + {1, 1, 0, 0}, + {5, 5, 2, 2}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + } + }, + + /** + game 6: + + T.B. Gorgiev + White to play and win + + First Prize - "64" + 1929 + */ + { + { + { 0, 0, 0, 0, 0, 0, KNIGHT, 0}, + { BKNIGHT, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, BKING, BKNIGHT, 0, 0, 0}, + { KING, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, KNIGHT, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, BISHOP, 0, 0, 0}, + }, + + 13, + + { + {3, 0, 2, 1}, /* king on move */ + {1, 0, 0, 2}, /* check */ + {2, 1, 1, 1}, + {0, 2, 1, 4}, /* knight moves on */ + {7, 4, 5, 6}, /* bishop puts king in check */ + {2, 3, 1, 3}, /* king moves back */ + {0, 6, 2, 5}, /* knight moves in, check */ + {1, 3, 0, 3}, /* king moves back queen */ + {5, 6, 1, 2}, /* bishop - b7 ch!! */ + {2, 4, 1, 2}, /* black knight takes bishop */ + {4, 6, 3, 4}, /* knight to k5 */ + {0, 0, 0, 0}, /* mate */ + {0, 0, 0, 0} + } + }, + + /** + game 7: + + K. A. L. Kubbel + White to play and win + + "Schachmatny Listok" + 1922 + */ + { + { + { 0, KNIGHT, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + { KING, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, BKING, 0, 0, 0, 0}, + { 0, 0, 0, BPAWN, 0, 0, 0, BISHOP}, + { BPAWN, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, PAWN, PAWN, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0}, + }, + + 12, + + { + {0, 1, 2, 2}, /* kt-b6 */ + {3, 3, 2, 2}, /* k x kt */ + {4, 7, 2, 5}, /* b-b6 */ + {2, 2, 3, 3}, /* king back to original position */ + {6, 3, 5, 3}, /* p-q3! */ + {5, 0, 6, 0}, /* p-r7 */ + {6, 2, 4, 2}, /* p-b4ch */ + {3, 3, 3, 2}, /* king moves, black cannot capture in passing */ + {2, 0, 1, 1}, /* k-kt7! */ + {6, 0, 7, 0}, /* promo */ + {2, 5, 1, 4}, /* mate */ + {0, 0, 3, 2}, + } + }, +}; + +#endif /* __CHESSGAMES_H__ */ diff --git a/hacks/glx/chessmodels.c b/hacks/glx/chessmodels.c new file mode 100644 index 0000000..7dd7eca --- /dev/null +++ b/hacks/glx/chessmodels.c @@ -0,0 +1,1738 @@ +/* + * models for the xss chess screensavers + * hacked from: + * + * glChess - A 3D chess interface + * + * Copyright (C) 2006 John-Paul Gignac + * + * Copyright (C) 2002 Robert Ancell + * Michael Duelli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* chessmodels.c: Contains the code for piece model creation */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include +#include + +#ifndef HAVE_JWXYZ +# include +# include +#endif + +#ifdef HAVE_ANDROID +#include +#define Bool int +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "chessmodels.h" + +/* End of Data */ +#define ENDOFDATA 65535 + +/* Section headers */ +#define SPIN 65534 +#define VERTICES 65533 +#define QUADS 65532 +#define TRIANGLES 65531 +#define POLARQUADSTRIP 65530 +#define QUADSTRIP 65529 + +/* Special spin-related commands */ +#define SEAM 65528 +#define PATTERN 65527 +#define STEPUP 65526 +#define STEPDOWN 65525 +#define SETBACKREF 65524 +#define BACKREF 65523 + +static unsigned short classic_pawn_data[] = { + SPIN,16, + 350,0,SEAM,350,200,SEAM,250,300,SEAM,250,400,SEAM,150,600,SEAM,100,880, + SEAM,180,880,SEAM,100,920,SEAM,200,1160,SEAM,100,1340,0,1340, + ENDOFDATA +}; + +static unsigned short classic_rook_data[] = { + SPIN,16, + 380,0,SEAM,380,200,SEAM,260,500,SEAM,200,1020,SEAM,280,1020,SEAM,280,1360,SEAM,220,1360,SEAM,220,1300,0,1300, + ENDOFDATA +}; + +static unsigned short classic_knight_data[] = { + SPIN,16, + 410,0,SEAM,410,200,SEAM,200,360,SEAM,200,480,260,580, + + VERTICES, + 260,580,260, -260,580,260, -260,580,-80, 260,580,-80, 80,1620,400, + 100,1680,340, -100,1680,340, -80,1620,400, 100,1680,340, 100,1680,300, + -100,1680,300, -100,1680,340, 100,1680,300, 50,1680,160, -50,1680,160, + -100,1680,300, 50,1680,160, 100,1680,20, -100,1680,20, -50,1680,160, + 100,1680,20, 100,1680,-20, -100,1680,-20, -100,1680,20, 100,1680,-20, + 40,1680,-110, -40,1680,-110, -100,1680,-20, 40,1680,-110, + 100,1680,-200, -100,1680,-200, -40,1680,-110, 100,1680,-200, + 100,1680,-440, -100,1680,-440, -100,1680,-200, -100,1680,-440, + 100,1680,-440, 100,1500,-440, -100,1500,-440, -100,1500,-440, + 100,1500,-440, 55,1480,-280, -55,1480,-280, -100,1680,300, -50,1680,160, + -100,1400,130, -120,1380,240, -50,1680,160, -80,1680,20, -120,1380,20, + -100,1400,130, -83,1660,20, -80,1680,20, -100,1680,-20, -100,1660,-38, + -120,1380,20, -88,1620,20, -100,1620,-74, -120,1360,-20, -120,1360,-20, + -100,1620,-74, -100,1580,-110, -60,1400,-140, -100,1680,-200, + -55,1480,-280, -60,1400,-140, -100,1580,-110, -100,1680,-200, + -100,1680,-440, -100,1500,-440, -55,1480,-280, 100,1680,300, + 120,1380,240, 100,1400,130, 50,1680,160, 50,1680,160, 100,1400,130, + 120,1380,20, 80,1680,20, 83,1660,20, 100,1660,-38, 100,1680,-20, + 80,1680,20, 120,1380,20, 120,1360,-20, 100,1620,-74, 88,1620,20, + 120,1360,-20, 60,1400,-140, 100,1580,-110, 100,1620,-74, 100,1680,-200, + 100,1580,-110, 60,1400,-140, 55,1480,-280, 100,1680,-200, 55,1480,-280, + 100,1500,-440, 100,1680,-440, 88,1620,20, 100,1620,-74, 80,1640,-56, + 61,1640,20, 61,1640,20, 80,1640,-56, 100,1660,-38, 83,1660,20, + -88,1620,20, -61,1640,20, -80,1640,-56, -100,1620,-74, -61,1640,20, + -83,1660,20, -100,1660,-38, -80,1640,-56, 35,1780,-80, 35,1780,-440, + -35,1780,-440, -35,1780,-80, 35,1780,-80, 35,1680,-80, 35,1680,-440, + 35,1780,-440, -35,1780,-80, -35,1780,-440, -35,1680,-440, -35,1680,-80, + 35,1780,-80, -35,1780,-80, -35,1680,-80, 35,1680,-80, 35,1780,-440, + 35,1680,-440, -35,1680,-440, -35,1780,-440, -100,1400,130, -120,1380,20, + 120,1380,20, 100,1400,130, -100,1400,130, 100,1400,130, 120,1380,240, + -120,1380,240, -260,580,-80, -55,1480,-280, 0,1500,-360, 0,780,-400, + 260,580,-80, 0,780,-400, 0,1500,-360, 55,1480,-280, -50,1380,40, + -200,880,400, 200,880,400, 50,1380,40, -200,880,400, -260,580,260, + 260,580,260, 200,880,400, -50,1380,40, -140,1220,-40, -260,580,260, + -200,880,400, -140,1220,-40, -114,1220,-222, -260,580,-80, -260,580,260, + -55,1480,-280, -114,1220,-222, -140,1220,-40, -60,1400,-140, + 50,1380,40, 200,880,400, 260,580,260, 140,1220,-40, 140,1220,-40, + 260,580,260, 260,580,-80, 114,1220,-222, 55,1480,-280, 60,1400,-140, + 140,1220,-40, 114,1220,-222, 260,580,-80, 144,580,-260, 0,780,-400, + 144,580,-260, -144,580,-260, 0,780,-400, -260,580,-80, 0,780,-400, + -144,580,-260, 0,1400,400, 80,1620,400, -80,1620,400, 0,1400,400, + -80,1620,400, -120,1380,240, -120,1380,240, -80,1620,400, -100,1680,340, + -120,1380,240, -100,1680,340, -100,1680,300, 0,1400,400, 120,1380,240, + 80,1620,400, 120,1380,240, 100,1680,340, 80,1620,400, 120,1380,240, + 100,1680,300, 100,1680,340, 0,1400,400, -120,1380,240, 120,1380,240, + -60,1400,-140, -140,1220,-40, -45,1380,-20, -45,1380,-20, -140,1220,-40, + -50,1380,40, 60,1400,-140, 45,1380,-20, 140,1220,-40, 45,1380,-20, + 50,1380,40, 140,1220,-40, 60,1400,-140, 120,1360,-20, 45,1380,-20, + 50,1380,40, 45,1380,-20, 120,1360,-20, 50,1380,40, 120,1360,-20, + 120,1380,20, -60,1400,-140, -45,1380,-20, -120,1360,-20, -50,1380,40, + -120,1360,-20, -45,1380,-20, -50,1380,40, -120,1380,20, -120,1360,-20, + 88,1620,20, 61,1640,20, 83,1660,20, 100,1620,-74, 100,1660,-38, + 80,1640,-56, -88,1620,20, -83,1660,20, -61,1640,20, -100,1620,-74, + -80,1640,-56, -100,1660,-38, -40,1680,-110, -100,1680,-200, + -100,1580,-110, -100,1680,-20, -40,1680,-110, -100,1580,-110, + 40,1680,-110, 100,1580,-110, 100,1680,-200, 100,1680,-20, 100,1580,-110, + 40,1680,-110, + + QUADS, 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15, 16,17,18,19, + 20,21,22,23, 24,25,26,27, 28,29,30,31, 32,33,34,35, 36,37,38,39, + 40,41,42,43, 44,45,46,47, 48,49,50,51, 52,53,54,55, 56,57,58,59, + 60,61,62,63, 64,65,66,67, 68,69,70,71, 72,73,74,75, 76,77,78,79, + 80,81,82,83, 84,85,86,87, 88,89,90,91, 92,93,94,95, 96,97,98,99, + 100,101,102,103, 104,105,106,107, 108,109,110,111, 112,113,114,115, + 116,117,118,119, 120,121,122,123, 124,125,126,127, 128,129,130,131, + 132,133,134,135, 136,137,138,139, 140,141,142,143, 144,145,146,147, + 148,149,150,151, 152,153,154,155, 156,157,158,159, 160,161,162,163, + 164,165,166,167, 168,169,170,171, 172,173,174,175, 176,177,178,179, + 180,181,182,183, + + TRIANGLES, 184,185,186, 187,188,189, 190,191,192, 193,194,195, + 196,197,198, 199,200,201, 202,203,204, 205,206,207, 208,209,210, + 211,212,213, 214,215,216, 217,218,219, 220,221,222, 223,224,225, + 226,227,228, 229,230,231, 232,233,234, 235,236,237, 238,239,240, + 241,242,243, 244,245,246, 247,248,249, 250,251,252, 253,254,255, + 256,257,258, 259,260,261, 262,263,264, 265,266,267, 268,269,270, + + ENDOFDATA +}; + +static unsigned short classic_bishop_data[] = { + SPIN,16, + 400,0,SEAM,400,200,SEAM,250,300,SEAM,250,400,SEAM,150,700,SEAM,120,940, + SEAM,250,940,SEAM,170,1100,SEAM,170,1220,SEAM,220,1320,SEAM,220,1480, + SEAM,100,1600,SEAM,80,1700,SEAM,120,1770,SEAM,80,1840,0,1840, + ENDOFDATA +}; + +static unsigned short classic_queen_data[] = { + SPIN,16, + 480,0,SEAM,480,220,SEAM,340,400,SEAM,340,500,SEAM,180,800,SEAM,140,1180, + SEAM,290,1180,SEAM,180,1360,SEAM,180,1520,SEAM,200,1780,SEAM,270,1920, + SEAM,240,2000,SEAM,170,2000,SEAM,95,2080,SEAM,70,2080,SEAM,90,2140, + SEAM,70,2200,0,2200, + ENDOFDATA +}; + +static unsigned short classic_king_data[] = { + SPIN,16, + 500,0,SEAM,500,200,SEAM,350,300,SEAM,350,460,SEAM,200,760,SEAM,140,1260, + SEAM,300,1260,SEAM,200,1460,SEAM,200,1560,SEAM,280,1910,SEAM,160,1970, + SEAM,160,2010,0,2010, + + VERTICES, + -30,2010,35, 30,2010,35, 30,2310,35, -30,2310,35, -90,2110,35, + -30,2110,35, -30,2210,35, -90,2210,35, 90,2110,35, 90,2210,35, + 30,2210,35, 30,2110,35, 30,2010,-35, -30,2010,-35, -30,2310,-35, + 30,2310,-35, -30,2110,-35, -90,2110,-35, -90,2210,-35, -30,2210,-35, + 30,2110,-35, 30,2210,-35, 90,2210,-35, 90,2110,-35, -90,2110,35, + -90,2210,35, -90,2210,-35, -90,2110,-35, -30,2010,35, -30,2110,35, + -30,2110,-35, -30,2010,-35, -30,2210,30, -30,2310,30, -30,2310,-30, + -30,2210,-30, 90,2110,-35, 90,2210,-35, 90,2210,35, 90,2110,35, + 30,2010,-35, 30,2110,-35, 30,2110,35, 30,2010,35, 30,2210,-35, + 30,2310,-35, 30,2310,35, 30,2210,35, -90,2210,-35, -90,2210,35, + -30,2210,35, -30,2210,-35, 30,2210,-35, 30,2210,35, 90,2210,35, + 90,2210,-35, -30,2310,-35, -30,2310,35, 30,2310,35, 30,2310,-35, + + QUADS, 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15, 16,17,18,19, + 20,21,22,23, 24,25,26,27, 28,29,30,31, 32,33,34,35, 36,37,38,39, + 40,41,42,43, 44,45,46,47, 48,49,50,51, 52,53,54,55, 56,57,58,59, + + ENDOFDATA +}; + +static unsigned short knight_data[] = { + VERTICES, SETBACKREF,0, 7910,8863,0, 7790,8863,1326, 7433,8863,2611, + 6850,8863,3817, 6059,8863,4907, 5084,8863,5847, 3955,8863,6611, + 2705,8863,7173, 1373,8863,7517, 0,8863,7633, -1373,8863,7517, + -2705,8863,7173, -3955,8863,6611, -5084,8863,5847, -6059,8863,4907, + -6850,8863,3817, -7433,8863,2611, -7790,8863,1326, -7910,8863,0, + -7790,8863,-1326, -7433,8863,-2611, -6850,8863,-3817, + -6059,8863,-4907, -5066,8863,-5896, -3955,8863,-6611, + -2705,8863,-7173, -1373,8863,-7517, 0,8863,-7633, 1373,8863,-7517, + 2705,8863,-7173, 3955,8863,-6611, 5066,8863,-5896, 6059,8863,-4907, + 6850,8863,-3817, 7433,8863,-2611, 7790,8863,-1326, -1183,11744,7939, + -1183,12003,7939, -1183,14019,6547, -1183,16307,5288, + -1183,16555,5281, -1183,20128,2191, -1134,20304,2131, + -1183,20516,2156, -1417,21874,1842, -1417,23109,2185, + -1417,23961,3121, -1417,24001,4252, 0,23917,5637, -1418,23893,5418, + -1151,23389,6664, -1151,23501,6906, -1151,23806,6987, + -1151,24102,6987, -1151,24209,7189, -1151,24371,7513, + -1151,24605,7715, -1151,24939,7674, -1313,25568,7149, + -1313,25695,7149, -1598,26707,7610, 0,26837,7841, 0,27354,8076, + -1598,27262,7839, -1598,27842,7723, 0,27919,7998, 0,28449,7606, + -1598,28309,7303, -1302,28414,6723, 0,28544,6980, 0,28540,6197, + -1187,28523,5990, -1304,28447,4204, -1158,28789,1627, + -561,28931,-1220, -357,29608,-1244, -357,30527,-1441, + -357,31249,-1837, -357,31511,-2627, -357,31511,-3484, + -357,31118,-4143, -357,30264,-4538, -436,29406,-5256, 0,29409,-5243, + -2207,29018,-6763, -914,28658,-6964, 0,26292,-7237, -1305,26324,-7143, + -806,23401,-6784, -812,20723,-6228, -796,16757,-6210, + -1559,24934,7435, -1566,24633,7460, -1531,24429,7334, + -1475,24293,7131, -1440,24203,7004, -1372,23935,7015, + -1364,23606,6868, -1389,23515,6705, -1687,28010,6952, + -1687,27926,7343, -1687,27629,7491, -1687,27324,7552, + -1687,27032,7432, -1687,26791,7148, -1642,27135,7165, + -1642,27254,7304, -1642,27397,7364, -1642,27546,7334, + -1642,27693,7261, -1642,27737,7088, -1611,10591,8159, + -888,9327,-8560, -4491,13292,1032, -3840,15084,786, -3412,17397,397, + -2937,20005,-35, -5108,11669,1240, -6344,10251,1395, -6345,10246,1248, + -5109,11664,1092, -2964,20022,-132, -3413,17393,250, -3841,15079,638, + -4491,13288,885, -3743,13207,-535, -3085,15092,-710, -2727,17642,-878, + -2569,20636,-797, -4348,11575,-324, -5584,10108,-169, + -5403,10079,-1732, -4167,11644,-1888, -2465,20842,-2651, + -2522,18130,-2392, -2905,15407,-2077, -3562,13227,-1951, + -3901,13568,-3294, -3243,15993,-3519, -2861,18863,-3735, + -2776,22447,-4309, -4486,11792,-3132, -5783,9930,-2931, + -5783,9930,-3054, -4486,11792,-3255, -2776,22438,-4430, + -2861,18863,-3858, -3243,15993,-3641, -3901,13568,-3417, + -6199,9466,4558, -5766,10642,5726, -5228,11829,6090, -4801,12891,6048, + -4155,14560,5246, -3546,16847,3719, -3334,17643,2937, + -2860,20062,1230, -4822,12054,7102, -5325,10909,7208, + -5732,9938,6026, -4026,14701,5522, -2852,20170,1447, -3319,17801,3175, + -3538,16955,3935, -4090,13256,1679, -2874,20073,676, -3706,15083,1464, + -3301,17348,1117, -5931,10206,1996, -4695,11624,1840, + -4445,11658,2844, -5681,10240,3000, -3074,17398,2202, + -3456,15117,2468, -3840,13290,2683, -4642,13358,4019, + -4257,15194,3908, -6017,10188,3746, -5237,11714,4039, + -5621,11218,5077, -5026,12862,5058, -5134,10861,-3154, + -4193,12680,-3336, -2832,20609,-4118, -3052,17428,-3750, + -3572,14780,-3529, -3579,14774,-3623, -3059,17422,-3843, + -2839,20596,-4211, -4200,12674,-3429, -5141,10855,-3248, + -3908,13562,-3510, -3250,15987,-3735, -2868,18857,-3952, + -4492,11786,-3348, -5789,9924,-3148, -4817,11321,-3298, + -5465,10389,-3198, -4054,13118,-3470, -4346,12230,-3389, + -2853,19681,-4056, -2825,21511,-4367, -3155,16705,-3789, + -2963,18140,-3897, -3744,14168,-3567, -3415,15381,-3679, + -845,13482,-6604, -945,10997,-7893, -981,11110,-7735, + -859,13469,-6526, -899,9307,-8439, -813,16486,-6146, -832,20681,-6100, + -826,23358,-6656, -882,10149,-8148, -913,12323,-7139, + -822,14910,-6353, -817,18235,-6210, -827,21937,-6382, + -846,21937,-6341, -841,14912,-6313, -931,12326,-7098, + -901,10152,-8107, -844,23359,-6615, -851,20681,-6059, + -831,16487,-6105, -919,9307,-8399, -869,13482,-6492, -999,11113,-7694, + -860,9726,-8255, -942,10578,-7958, -962,11715,-7413, -900,12896,-6796, + -863,14065,-6404, -818,15760,-6221, -828,17367,-6171, + -854,19800,-5994, -848,21309,-6200, -843,22566,-6482, + -3407,15409,-3785, -3736,14196,-3673, -2911,18365,-4048, + -3147,16733,-3895, -2726,21608,-4455, -2808,19905,-4191, + -4338,12259,-3495, -4046,13146,-3576, -5457,10418,-3304, + -4809,11349,-3404, -4484,11815,-3454, -2715,22288,-4534, + -2832,19035,-4066, -3242,16015,-3841, -3900,13590,-3616, + -5133,10883,-3354, -4171,12742,-3524, -2803,20773,-4339, + -3051,17450,-3949, -3571,14803,-3729, -4979,11072,-3368, + -5619,10185,-3279, -4119,12924,-3556, -4411,12037,-3475, + -2801,20363,-4269, -2721,21826,-4489, -3099,17092,-3922, + -2887,18618,-4038, -3653,14499,-3701, -3325,15712,-3813, + -3489,15106,-3757, -3818,13893,-3645, -3011,17758,-3971, + -3194,16374,-3868, -2755,21085,-4385, -2815,19494,-4139, + -4265,12481,-3515, -3973,13368,-3596, -5304,10595,-3318, + -4664,11477,-3407, -5441,10207,-3361, -5350,10338,-3375, + -5139,10672,-3428, -5058,10742,-3431, -4831,11101,-3457, + -4742,11228,-3470, -4516,11559,-3504, -4423,11693,-3518, + -4277,12079,-3558, -4232,12180,-3571, -4138,12522,-3597, + -4094,12603,-3609, -3979,12935,-3675, -3943,13043,-3671, + -3852,13383,-3699, -3813,13496,-3705, -3692,13947,-3767, + -3653,14073,-3790, -3506,14587,-3772, -3467,14685,-3777, + -3349,15192,-3888, -3308,15317,-3887, -3162,15800,-3957, + -3119,15954,-3961, -3009,16528,-3946, -3002,16637,-3937, + -2914,17260,-4014, -2909,17347,-4006, -2834,17893,-4049, + -2813,18060,-4060, -2760,18849,-4232, -2746,18968,-4242, + -850,22569,-6438, -855,21313,-6156, -861,19804,-5949, + -834,17371,-6127, -824,15765,-6176, -869,14070,-6360, + -906,12901,-6751, -968,11720,-7368, -948,10645,-7895, -865,9731,-8211, + -1006,11164,-7630, -875,13487,-6447, -926,9310,-8354, + -837,16490,-6061, -857,20684,-6015, -867,23379,-6515, + -907,10157,-8062, -937,12331,-7053, -847,14917,-6268, + -842,18236,-6111, -852,21941,-6297, -885,9891,-8156, -985,10905,-7724, + -947,11969,-7255, -885,13125,-6649, -858,14493,-6314, + -839,16049,-6111, -836,17735,-6083, -859,20244,-5982, + -891,21559,-6157, -848,22883,-6508, -851,22255,-6367, + -856,20999,-6085, -867,19042,-6000, -836,16930,-6094, + -835,15341,-6222, -880,13646,-6405, -916,12540,-6953, + -981,11337,-7564, -927,10370,-7988, -932,9518,-8285, -931,9583,-8174, + -863,9671,-8145, -892,9982,-8037, -903,10075,-7996, -952,10454,-7865, + -961,10550,-7832, -1008,10963,-7617, -1018,11105,-7567, + -996,11458,-7405, -992,11582,-7342, -972,12080,-7057, + -968,12210,-6984, -935,12620,-6792, -931,12759,-6714, + -914,13199,-6441, -910,13346,-6359, -915,13767,-6194, + -910,13941,-6175, -890,14633,-6107, -886,14783,-6091, + -864,15476,-6035, -859,15645,-6017, -870,16062,-5957, + -873,16231,-5936, -853,17048,-5965, -861,17185,-5974, + -879,17812,-5997, -885,17961,-5997, -851,18486,-6138, + -865,18526,-5933, -872,18761,-5875, -870,19337,-5971, + -864,19470,-5784, -937,19590,-5786, -833,19023,-6126, + -851,20344,-5894, -851,20576,-5912, -855,21086,-5973, + -854,21224,-6003, -871,21651,-6070, -852,21853,-6116, + -850,22332,-6224, -849,22490,-6259, -831,22924,-6338, + -834,23240,-6364, -2743,19661,-4287, -2740,19863,-4312, + -2723,20501,-4469, -2705,20711,-4503, -2661,21262,-4565, + -2658,21427,-4593, -2687,22088,-4631, -2695,22209,-4643, + -2774,23170,-4392, -2633,23103,-4527, -2681,22439,-4516, + -2656,22665,-4573, -2552,22727,-4653, -2534,23015,-4628, + -2607,23397,-4556, -2759,23681,-4398, -2740,24136,-4370, + -2610,24100,-4580, -2412,24481,-5089, -2671,24389,-4569, + -2397,24935,-5652, -2562,25022,-5528, -939,23708,-6566, + -1009,24359,-6776, -1095,24912,-6886, -1049,24117,-6493, + -990,23894,-6415, -2290,23837,-4814, -2312,23612,-4723, + -2183,24804,-5574, -2191,24632,-5391, -1156,24771,-6650, + -1154,24624,-6586, -1104,24526,-6656, -1281,9161,-8432, + -2524,9161,-8046, -3691,9161,-7572, -4745,9161,-6945, + -5662,9127,-6096, -3697,9192,-7581, -2531,9192,-8056, + -4753,9183,-6951, -5664,9161,-6101, -5664,9185,-6101, + -4753,9207,-6951, -2531,9216,-8055, -3697,9216,-7581, + -3684,9232,-7560, -2518,9232,-8034, -4740,9223,-6930, + -5651,9200,-6080, -2828,20259,1366, -2798,20256,1187, -2820,20237,692, + -2843,20292,-25, -2874,20473,735, -2975,20508,90, -2474,20772,-759, + -2660,20879,-691, -2471,21553,-1445, -2498,22175,-1940, + -2471,24346,-2830, -2556,22373,-1903, -2528,21595,-1351, + -2493,24314,-2936, -2576,22239,-2123, -2548,21461,-1571, + -2823,20635,1307, -2741,20503,1328, -1490,23972,5392, + -1489,24080,4226, -1489,24040,3095, -1489,23188,2159, + -1489,21953,1816, -2479,22156,182, -1515,23830,2117, -1605,24415,3131, + -1599,24460,4263, -1580,24357,5431, -1448,23885,6743, + -1252,24770,5442, -1271,24873,4274, -1277,24828,3142, + -1389,24618,2016, -1479,24733,1993, -1301,25010,3165, + -1295,25055,4297, -1391,24890,5460, -1512,25216,5507, + -1602,25353,4317, -1608,25308,3186, -1979,23458,-29, -1320,25312,1928, + -1495,25055,546, -2438,25790,-488, -1605,25585,5599, -1583,26793,6150, + -1850,26272,4298, -1578,27435,7117, -1658,27625,6884, + -1671,27398,6846, -1678,27176,6937, -1715,27784,6626, + -1744,27323,6551, -1753,26904,6776, -1884,28809,-1688, + -1555,28655,1620, -1658,28252,4204, -1581,28263,5997, + -1567,28312,6790, -1935,27827,4220, -1818,28249,1603, + -1570,27742,6195, -1532,27288,6120, -2038,27074,4245, -1418,28416,228, + -413,30264,-4539, -424,31094,-4152, -418,31478,-3497, + -410,31453,-2653, -410,31190,-1863, -410,30468,-1467, + -410,29550,-1270, -411,31041,-1902, -448,31253,-2696, + -449,31323,-3466, -425,31182,-3496, -411,31060,-2738, + -387,30899,-1932, -316,30806,-1957, -335,30952,-2766, + -353,31089,-3521, -322,31007,-3540, -303,30871,-2786, + -284,30725,-1976, -304,30630,-1993, -323,30776,-2802, + -342,30912,-3557, -396,30843,-3565, -378,30707,-2811, + -358,30561,-2001, -414,30477,-2013, -433,30623,-2822, + -452,30759,-3576, -474,30560,-3616, -456,30424,-2861, + -436,30278,-2052, -349,30194,-2077, -368,30340,-2886, + -386,30477,-3641, -309,30389,-3665, -291,30253,-2911, + -271,30107,-2102, -267,29996,-2124, -286,30142,-2933, + -305,30278,-3688, -376,30179,-3700, -357,30043,-2945, + -338,29897,-2136, -420,29789,-2150, -439,29935,-2959, + -458,30071,-3713, -500,29883,-3751, -463,29601,-2187, + -470,30974,-4049, -462,30153,-4391, -466,30563,-4220, + -410,30009,-1368, -725,29372,-3225, -677,29335,-5130, + -908,29205,-3300, -632,29533,-4803, -2587,28768,-3408, + -2730,28611,-3456, -2404,28568,-6916, -2413,28849,-6612, + -1904,26715,1801, -1394,25919,831, -2224,27270,-3994, + -2730,28438,-3011, -2587,28570,-2864, -2826,28152,-3163, + -2476,28668,-6523, -2476,28433,-6776, -2787,28338,-3507, + -2216,27658,-3972, -2207,27950,-5907, -2311,28216,-6128, + -2320,27876,-3971, -2311,28118,-6301, -2311,27845,-6252, + -2320,27703,-3749, -2320,27084,-3798, -2320,26986,-4070, + -2698,26705,-4014, -2557,26974,-3547, -2557,27739,-3485, + -2572,27738,-6362, -2436,28204,-6533, -2436,28421,-6303, + -2556,28092,-3822, -2431,28142,-6975, -2544,27863,-6726, + -2266,28229,-1686, -1939,28156,-1065, -2569,27943,-2270, + -2381,27545,-1682, -2799,27594,-3104, -2750,27866,-2738, + -2539,27578,-6309, -2720,26853,-3133, -2788,26461,-3776, + -1061,27543,-7078, -1780,27941,135, -1859,27747,-527, -1756,27784,691, + -1855,27001,736, -1950,26711,19, -1964,27006,-630, -2342,26955,-1898, + -2595,25515,-3113, -2147,27855,132, -2126,27722,601, -2213,27691,-428, + -2210,27061,639, -2290,26816,34, -2302,27065,-515, -2347,27680,100, + -2335,27602,376, -2386,27584,-229, -2385,27213,398, -2432,27069,42, + -2439,27215,-281, -2481,27452,103, -1786,24263,399, -2278,24851,-562, + -2372,25143,-1163, 7383,9172,0, 7270,9172,-1487, 6937,9172,-2929, + 6393,9172,-4281, 1282,9172,-8433, 0,9172,-8563, 1301,9439,8159, + 2371,9313,7844, 3857,9286,7355, 4477,9172,6559, 5704,9174,5179, + 6393,9172,4281, 6937,9172,2929, 7270,9172,1487, -7270,9172,-1487, + -6937,9172,-2929, -6393,9172,-4281, -1282,9172,-8433, 0,9339,8274, + -1301,9439,8159, -2371,9313,7844, -3857,9286,7355, -4477,9172,6559, + -5704,9174,5179, -6393,9172,4281, -6937,9172,2929, -7270,9172,1487, + -796,9467,8260, 0,9503,8356, 0,9667,8438, -796,9666,8325, + -807,10584,8327, -7383,9172,0, 796,9467,8260, 796,9666,8325, + 807,10584,8327, 0,10584,8457, 0,11744,8130, 1183,11744,7939, + 1183,12003,7939, 0,12003,8130, 0,14019,6737, 1183,14019,6547, + 1183,16307,5288, 0,16307,5479, 0,16555,5472, 1183,16555,5281, + 1183,20128,2191, 0,20128,2382, 0,20304,2322, 1134,20304,2131, + 1183,20516,2156, 0,20516,2346, 0,21898,2060, 1417,21874,1842, + 1417,23109,2185, 0,23133,2404, 0,23985,3339, 1417,23961,3121, + 1417,24001,4252, 0,24025,4470, 1418,23893,5418, 1151,23389,6664, + 0,23394,6882, 0,23506,7125, 1151,23501,6906, 1151,23806,6987, + 0,23811,7205, 0,24107,7205, 1151,24102,6987, 1151,24209,7189, + 0,24213,7407, 0,24376,7731, 1151,24371,7513, 1151,24605,7715, + 0,24610,7933, 0,24944,7892, 1151,24939,7674, 1313,25568,7149, + 0,25562,7367, 0,25689,7367, 1313,25695,7149, 1598,26707,7610, + 1598,27262,7839, 1598,27842,7723, 1598,28309,7303, 1302,28414,6723, + 1187,28523,5990, 1304,28447,4204, 0,28469,4435, 0,28654,1893, + 1158,28789,1627, 561,28931,-1220, 0,29310,-864, 0,29574,-1062, + 357,29608,-1244, 357,30527,-1441, 0,30496,-1259, 0,31221,-1655, + 357,31249,-1837, 357,31511,-2627, 0,31485,-2445, 0,31485,-3302, + 357,31511,-3484, 357,31118,-4143, 0,31089,-3961, 0,30233,-4356, + 357,30264,-4538, 436,29406,-5256, 0,29018,-6407, 2207,29018,-6763, + 914,28658,-6964, 0,28472,-7040, 1305,26324,-7143, 806,23401,-6784, + 0,23246,-6890, 0,20735,-6319, 812,20723,-6228, 796,16757,-6210, + 0,17171,-6133, 1559,24934,7435, 1566,24633,7460, 1531,24429,7334, + 1475,24293,7131, 1440,24203,7004, 1372,23935,7015, 1364,23606,6868, + 1389,23515,6705, 1687,28010,6952, 1687,27926,7343, 1687,27629,7491, + 1687,27324,7552, 1687,27032,7432, 1687,26791,7148, 1642,27135,7165, + 1642,27254,7304, 1642,27397,7364, 1642,27546,7334, 1642,27693,7261, + 1642,27737,7088, 1611,10591,8159, 888,9327,-8560, 4491,13292,1032, + 3840,15084,786, 3412,17397,397, 2937,20005,-35, 5108,11669,1240, + 6344,10251,1395, 6345,10246,1248, 5109,11664,1092, 2964,20022,-132, + 3413,17393,250, 3841,15079,638, 4491,13288,885, 3743,13207,-535, + 3085,15092,-710, 2727,17642,-878, 2569,20636,-797, 4348,11575,-324, + 5584,10108,-169, 5403,10079,-1732, 4167,11644,-1888, + 2465,20842,-2651, 2522,18130,-2392, 2905,15407,-2077, + 3562,13227,-1951, 3901,13568,-3294, 3243,15993,-3519, + 2861,18863,-3735, 2776,22447,-4309, 4486,11792,-3132, 5783,9930,-2931, + 5783,9930,-3054, 4486,11792,-3255, 2776,22438,-4430, 2861,18863,-3858, + 3243,15993,-3641, 3901,13568,-3417, 6199,9466,4558, 5766,10642,5726, + 5228,11829,6090, 4801,12891,6048, 4155,14560,5246, 3546,16847,3719, + 3334,17643,2937, 2860,20062,1230, 4822,12054,7102, 5325,10909,7208, + 5732,9938,6026, 4026,14701,5522, 2852,20170,1447, 3319,17801,3175, + 3538,16955,3935, 4090,13256,1679, 2874,20073,676, 3706,15083,1464, + 3301,17348,1117, 5931,10206,1996, 4695,11624,1840, 4445,11658,2844, + 5681,10240,3000, 3074,17398,2202, 3456,15117,2468, 3840,13290,2683, + 4642,13358,4019, 4257,15194,3908, 6017,10188,3746, 5237,11714,4039, + 5621,11218,5077, 5026,12862,5058, 5134,10861,-3154, 4193,12680,-3336, + 2832,20609,-4118, 3052,17428,-3750, 3572,14780,-3529, + 3579,14774,-3623, 3059,17422,-3843, 2839,20596,-4211, + 4200,12674,-3429, 5141,10855,-3248, 3908,13562,-3510, + 3250,15987,-3735, 2868,18857,-3952, 4492,11786,-3348, 5789,9924,-3148, + 4817,11321,-3298, 5465,10389,-3198, 4054,13118,-3470, + 4346,12230,-3389, 2853,19681,-4056, 2825,21511,-4367, + 3155,16705,-3789, 2963,18140,-3897, 3744,14168,-3567, + 3415,15381,-3679, 0,14037,-6616, 845,13482,-6604, 945,10997,-7893, + 0,11066,-7866, 981,11110,-7735, 859,13469,-6526, 899,9307,-8439, + 813,16486,-6146, 832,20681,-6100, 826,23358,-6656, 882,10149,-8148, + 913,12323,-7139, 822,14910,-6353, 817,18235,-6210, 827,21937,-6382, + 846,21937,-6341, 841,14912,-6313, 931,12326,-7098, 901,10152,-8107, + 844,23359,-6615, 851,20681,-6059, 831,16487,-6105, 919,9307,-8399, + 869,13482,-6492, 999,11113,-7694, 860,9726,-8255, 942,10578,-7958, + 962,11715,-7413, 900,12896,-6796, 863,14065,-6404, 818,15760,-6221, + 828,17367,-6171, 854,19800,-5994, 848,21309,-6200, 843,22566,-6482, + 3407,15409,-3785, 3736,14196,-3673, 2911,18365,-4048, + 3147,16733,-3895, 2726,21608,-4455, 2808,19905,-4191, + 4338,12259,-3495, 4046,13146,-3576, 5457,10418,-3304, + 4809,11349,-3404, 4484,11815,-3454, 2715,22288,-4534, + 2832,19035,-4066, 3242,16015,-3841, 3900,13590,-3616, + 5133,10883,-3354, 4171,12742,-3524, 2803,20773,-4339, + 3051,17450,-3949, 3571,14803,-3729, 4979,11072,-3368, + 5619,10185,-3279, 4119,12924,-3556, 4411,12037,-3475, + 2801,20363,-4269, 2721,21826,-4489, 3099,17092,-3922, + 2887,18618,-4038, 3653,14499,-3701, 3325,15712,-3813, + 3489,15106,-3757, 3818,13893,-3645, 3011,17758,-3971, + 3194,16374,-3868, 2755,21085,-4385, 2815,19494,-4139, + 4265,12481,-3515, 3973,13368,-3596, 5304,10595,-3318, + 4664,11477,-3407, 5441,10207,-3361, 5350,10338,-3375, + 5139,10672,-3428, 5058,10742,-3431, 4831,11101,-3457, + 4742,11228,-3470, 4516,11559,-3504, 4423,11693,-3518, + 4277,12079,-3558, 4232,12180,-3571, 4138,12522,-3597, + 4094,12603,-3609, 3979,12935,-3675, 3943,13043,-3671, + 3852,13383,-3699, 3813,13496,-3705, 3692,13947,-3767, + 3653,14073,-3790, 3506,14587,-3772, 3467,14685,-3777, + 3349,15192,-3888, 3308,15317,-3887, 3162,15800,-3957, + 3119,15954,-3961, 3009,16528,-3946, 3002,16637,-3937, + 2914,17260,-4014, 2909,17347,-4006, 2834,17893,-4049, + 2813,18060,-4060, 2760,18849,-4232, 2746,18968,-4242, 850,22569,-6438, + 855,21313,-6156, 860,19804,-5949, 834,17371,-6127, 824,15765,-6176, + 869,14070,-6360, 906,12901,-6751, 968,11720,-7368, 948,10645,-7895, + 865,9731,-8211, 1006,11164,-7630, 875,13487,-6447, 926,9310,-8354, + 837,16490,-6061, 857,20684,-6015, 867,23379,-6515, 907,10157,-8062, + 937,12331,-7053, 847,14917,-6268, 842,18236,-6111, 852,21941,-6297, + 885,9891,-8156, 985,10905,-7724, 947,11969,-7255, 885,13125,-6649, + 858,14493,-6314, 839,16049,-6111, 836,17735,-6083, 859,20244,-5982, + 891,21559,-6157, 848,22883,-6508, 851,22255,-6367, 856,20999,-6085, + 867,19042,-6000, 836,16930,-6094, 835,15341,-6222, 880,13646,-6405, + 916,12540,-6953, 981,11337,-7564, 927,10370,-7988, 932,9518,-8285, + 931,9583,-8174, 863,9671,-8145, 892,9982,-8037, 903,10075,-7996, + 952,10454,-7865, 961,10550,-7832, 1008,10963,-7617, 1018,11105,-7567, + 996,11458,-7405, 992,11582,-7342, 972,12080,-7057, 968,12210,-6984, + 935,12620,-6792, 931,12759,-6714, 914,13199,-6441, 910,13346,-6359, + 915,13767,-6194, 910,13941,-6175, 890,14633,-6107, 886,14783,-6091, + 864,15476,-6035, 859,15645,-6017, 870,16062,-5957, 873,16231,-5936, + 853,17048,-5965, 861,17185,-5974, 879,17812,-5997, 885,17961,-5997, + 851,18486,-6138, 865,18526,-5933, 872,18761,-5875, 870,19337,-5971, + 864,19470,-5784, 937,19590,-5786, 833,19023,-6126, 851,20344,-5894, + 851,20576,-5912, 855,21086,-5973, 854,21224,-6003, 871,21651,-6070, + 852,21853,-6116, 850,22332,-6224, 849,22490,-6259, 831,22924,-6338, + 834,23240,-6364, 2743,19661,-4287, 2740,19863,-4312, 2723,20501,-4469, + 2705,20711,-4503, 2661,21262,-4565, 2658,21427,-4593, + 2687,22088,-4631, 2695,22209,-4643, 2774,23170,-4392, + 2633,23103,-4527, 2681,22439,-4516, 2656,22665,-4573, + 2552,22727,-4653, 2534,23015,-4628, 2607,23397,-4556, + 2759,23681,-4398, 2740,24136,-4370, 2610,24100,-4580, + 2412,24481,-5089, 2671,24389,-4569, 2397,24935,-5652, + 2562,25022,-5528, 939,23708,-6566, 1009,24359,-6776, 1095,24912,-6886, + 1049,24117,-6493, 990,23894,-6415, 2290,23837,-4814, 2312,23612,-4723, + 2183,24804,-5574, 2191,24632,-5391, 1156,24771,-6650, + 1154,24624,-6586, 1104,24526,-6656, 0,9161,-8562, 1281,9161,-8432, + 2524,9161,-8046, 3691,9161,-7572, 4745,9161,-6945, 5662,9127,-6096, + 3697,9192,-7581, 2531,9192,-8056, 4753,9183,-6951, 5664,9161,-6101, + 5664,9185,-6101, 4753,9207,-6951, 2531,9216,-8055, 3697,9216,-7581, + 3684,9232,-7560, 2518,9232,-8034, 4740,9223,-6930, 5651,9200,-6080, + 2828,20259,1366, 2798,20256,1187, 2820,20237,692, 2843,20292,-25, + 2874,20473,735, 2975,20508,90, 2474,20772,-759, 2660,20879,-691, + 2471,21553,-1445, 2498,22175,-1940, 2471,24346,-2830, + 2556,22373,-1903, 2528,21595,-1351, 2493,24314,-2936, + 2576,22239,-2123, 2548,21461,-1571, 2823,20635,1307, 2741,20503,1328, + 1490,23972,5392, 1489,24080,4226, 1489,24040,3095, 1489,23188,2159, + 1489,21953,1816, 2479,22156,182, 1515,23830,2117, 1605,24415,3131, + 1599,24460,4263, 1580,24357,5431, 1448,23885,6743, 1252,24770,5442, + 1271,24873,4274, 1277,24828,3142, 1389,24618,2016, 1479,24733,1993, + 1301,25010,3165, 1295,25055,4297, 1391,24890,5460, 1512,25216,5507, + 1602,25353,4317, 1608,25308,3186, 1979,23458,-29, 1320,25312,1928, + 1495,25055,546, 2438,25790,-488, 1605,25585,5599, 1583,26793,6150, + 1850,26272,4298, 1578,27435,7117, 1658,27625,6884, 1671,27398,6846, + 1678,27176,6937, 1715,27784,6626, 1744,27323,6551, 1753,26904,6776, + 1884,28809,-1688, 1555,28655,1620, 1658,28252,4204, 1581,28263,5997, + 1567,28312,6790, 1935,27827,4220, 1818,28249,1603, 1570,27742,6195, + 1532,27288,6120, 2038,27074,4245, 1418,28416,228, 413,30264,-4539, + 424,31094,-4152, 418,31478,-3497, 410,31453,-2653, 410,31190,-1863, + 410,30468,-1467, 410,29550,-1270, 411,31041,-1902, 448,31253,-2696, + 449,31323,-3466, 425,31182,-3496, 411,31060,-2738, 387,30899,-1932, + 316,30806,-1957, 335,30952,-2766, 353,31089,-3521, 322,31007,-3540, + 303,30871,-2786, 284,30725,-1976, 304,30630,-1993, 323,30776,-2802, + 342,30912,-3557, 396,30843,-3565, 378,30707,-2811, 358,30561,-2001, + 414,30477,-2013, 433,30623,-2822, 452,30759,-3576, 474,30560,-3616, + 456,30424,-2861, 436,30278,-2052, 349,30194,-2077, 368,30340,-2886, + 386,30477,-3641, 309,30389,-3665, 291,30253,-2911, 271,30107,-2102, + 267,29996,-2124, 286,30142,-2933, 305,30278,-3688, 376,30179,-3700, + 357,30043,-2945, 338,29897,-2136, 420,29789,-2150, 439,29935,-2959, + 458,30071,-3713, 500,29883,-3751, 463,29601,-2187, 470,30974,-4049, + 462,30153,-4391, 466,30563,-4220, 410,30009,-1368, 725,29372,-3225, + 677,29335,-5130, 908,29205,-3300, 632,29533,-4803, 2587,28768,-3408, + 2730,28611,-3456, 2404,28568,-6916, 2413,28849,-6612, + 1904,26715,1801, 1394,25919,831, 2224,27270,-3994, 2730,28438,-3011, + 2587,28570,-2864, 2826,28152,-3163, 2476,28668,-6523, + 2476,28433,-6776, 2787,28338,-3507, 2216,27658,-3972, + 2207,27950,-5907, 2311,28216,-6128, 2320,27876,-3971, + 2311,28118,-6301, 2311,27845,-6252, 2320,27703,-3749, + 2320,27084,-3798, 2320,26986,-4070, 2698,26705,-4014, + 2557,26974,-3547, 2557,27739,-3485, 2572,27738,-6362, + 2436,28204,-6533, 2436,28421,-6303, 2556,28092,-3822, + 2431,28142,-6975, 2544,27863,-6726, 2266,28229,-1686, + 1939,28156,-1065, 2569,27943,-2270, 2381,27545,-1682, + 2799,27594,-3104, 2750,27866,-2738, 2539,27578,-6309, + 2720,26853,-3133, 2788,26461,-3776, 1061,27543,-7078, 1780,27941,135, + 1859,27747,-527, 1756,27784,691, 1855,27001,736, 1950,26711,19, + 1964,27006,-630, 2342,26955,-1898, 2595,25515,-3113, 2147,27855,132, + 2126,27722,601, 2213,27691,-428, 2210,27061,639, 2290,26816,34, + 2302,27065,-515, 2347,27680,100, 2335,27602,376, 2386,27584,-229, + 2385,27213,398, 2432,27069,42, 2439,27215,-281, 2481,27452,103, + 1786,24263,399, 2278,24851,-562, 2372,25143,-1163, -2567,23141,-2607, + -2513,23156,-2494, 2513,23156,-2494, 2567,23141,-2607, + + TRIANGLES, 657,656,159, 100,506,99, 1003,900,995, 1048,1009,901, + 1051,901,1009, 1070,1073,1071, 1070,803,808, 1071,1077,1070, + 1072,1006,1073, 1072,808,915, 1073,808,1072, 1077,1071,1076, + 1078,1283,1127, 1081,1078,1079, 1081,1079,1080, 1083,1082,1086, + 1083,747,1274, 1084,888,1085, 1085,878,1086, 1085,1086,1095, + 1086,747,1083, 1093,1095,1086, 1094,1095,1093, 658,657,149, + 1101,637,32, 1103,638,1108, 1105,637,1101, 1106,637,1105, + 1108,638,1111, 111,36,158, 111,653,665, 111,665,36, 1110,858,1112, + 1111,988,1110, 1111,638,891, 1111,891,988, 1112,858,1113, + 1113,637,1106, 1117,779,784, 112,214,207, 112,651,210, 1124,1297,1154, + 1125,1123,1128, 1125,1302,1154, 1127,1077,1078, 1129,791,796, + 1130,1118,1137, 1136,1130,1137, 1137,1118,1119, 1137,1119,1121, + 1137,1121,1126, 1142,758,759, 1142,759,760, 1142,760,761, + 1147,1146,1154, 1150,755,756, 1150,756,757, 1154,1302,1124, + 1155,1147,1154, 1155,1297,1156, 1155,1154,1297, 1156,1240,1155, + 1156,1298,1157, 1157,1240,1156, 1157,1299,1273, 1157,1282,1281, + 1158,1151,1152, 1161,768,1164, 1162,773,1161, 1162,1161,1163, + 1163,1161,1164, 1165,1172,762, 1168,726,1178, 1168,1267,1266, + 1169,1178,725, 1171,1172,1165, 1171,720,1172, 1171,1165,1175, + 1178,1169,1174, 1178,1174,1278, 1179,1229,1228, 118,660,168, + 1180,1229,1179, 1185,726,1226, 1186,1183,1184, 1186,1184,1191, + 119,660,118, 1191,1184,1192, 1192,1184,1197, 1197,1184,1198, + 1198,1184,1203, 1203,1184,1204, 121,116,451, 1210,1209,1230, + 1215,1210,1230, 1216,1215,1230, 1221,1216,1230, 1222,1185,1226, + 1222,1221,1230, 1223,1222,1226, 1224,1223,1225, 1225,1223,1226, + 1226,726,1231, 1227,1188,1189, 1227,1189,1194, 1227,1194,1195, + 1227,1195,1200, 1227,1200,1201, 1227,1201,1206, 1228,1224,1225, + 1228,1225,1234, 1229,1207,1212, 1229,1212,1213, 1229,1213,1218, + 1229,1218,1219, 1229,1219,1224, 1229,1180,1227, 1229,1224,1228, + 1230,729,1185, 1230,1185,1222, 1231,1225,1226, 1232,1179,1234, + 1233,744,1232, 1234,1179,1228, 1234,1225,1231, 1235,744,1233, + 1237,744,1238, 1239,1155,1240, 1240,1157,1239, 1243,1168,1266, + 1248,1241,1249, 1250,1249,1252, 1252,1249,1253, 1254,1248,1251, + 1256,1241,1255, 1259,1244,1270, 1264,745,1237, 1265,1260,1272, + 1267,1168,1178, 1267,1178,1277, 1269,1282,1270, 1270,1282,1273, + 1271,1268,1269, 1271,1269,1270, 1273,1283,1274, 1274,1078,1081, + 1274,1081,1083, 1274,747,1275, 1275,745,1264, 1275,1264,1265, + 1275,1265,1272, 1275,1272,1274, 1276,1178,1278, 1277,1178,1276, + 1280,1157,1281, 1281,1269,1277, 1282,1157,1273, 1282,1269,1281, + 1283,1078,1274, 1292,1290,1296, 1295,1292,1296, 1296,1290,1291, + 1296,1291,1293, 1296,1293,1294, 1296,1294,1295, 1297,1298,1156, + 1297,1124,1298, 1298,1124,1299, 1299,1124,1273, 1299,1157,1298, + 660,659,168, 133,128,463, 137,182,141, 138,185,137, 139,184,138, + 140,183,139, 141,181,142, 141,182,144, 142,181,143, 143,649,142, + 143,197,195, 144,196,181, 144,199,194, 145,183,140, 145,201,183, + 145,140,405, 146,184,139, 146,139,183, 146,203,184, 147,185,138, + 147,138,184, 147,205,185, 148,198,182, 148,137,185, 149,657,159, + 150,149,159, 151,150,157, 152,151,157, 153,152,157, 157,150,158, + 157,38,160, 157,37,38, 158,150,159, 160,153,157, 160,39,163, + 160,38,39, 162,41,161, 163,39,40, 168,659,171, 172,155,156, + 176,153,154, 176,154,155, 177,658,149, 179,149,150, 179,150,151, + 180,152,153, 181,197,143, 181,141,144, 181,196,190, 182,199,144, + 182,137,148, 182,198,189, 183,200,146, 184,202,147, 185,204,148, + 186,204,185, 186,267,204, 186,185,205, 187,202,184, 187,265,202, + 187,184,203, 188,200,183, 188,263,200, 188,183,201, 189,275,199, + 189,261,255, 190,277,197, 190,259,254, 191,276,198, 191,148,204, + 192,205,147, 192,147,202, 192,268,205, 193,203,146, 193,146,200, + 193,266,203, 194,278,196, 194,262,249, 196,259,190, 196,144,194, + 196,278,248, 197,181,190, 197,260,195, 197,277,247, 198,261,189, + 198,148,191, 198,276,246, 199,182,189, 199,262,194, 199,275,245, + 200,274,193, 201,273,188, 202,272,192, 203,271,187, 204,270,191, + 205,269,186, 206,215,209, 206,216,90, 207,215,206, 207,214,208, + 208,231,215, 208,230,228, 209,233,216, 209,232,227, 210,229,214, + 210,651,226, 211,235,217, 211,234,225, 212,237,218, 212,236,224, + 212,386,236, 213,238,223, 213,421,88, 214,230,208, 214,112,210, + 214,229,222, 215,207,208, 215,232,209, 215,231,221, 216,206,209, + 216,234,211, 216,233,220, 217,90,211, 217,386,212, 218,89,212, + 218,238,213, 218,237,219, 219,342,238, 219,340,331, 220,346,234, + 220,336,329, 221,348,232, 221,334,328, 222,350,230, 222,332,327, + 223,341,326, 224,343,237, 224,339,325, 225,345,235, 225,337,324, + 226,351,229, 226,651,445, 227,347,233, 227,335,322, 228,349,231, + 228,333,321, 229,332,222, 229,210,226, 229,351,320, 230,214,222, + 230,333,228, 230,350,319, 231,334,221, 231,208,228, 231,349,318, + 232,215,221, 232,335,227, 232,348,317, 233,336,220, 233,209,227, + 233,347,316, 234,216,220, 234,337,225, 234,346,315, 235,211,225, + 235,345,314, 236,339,224, 236,383,313, 236,344,383, 237,340,219, + 237,212,224, 237,343,312, 238,218,219, 238,341,223, 238,342,311, + 239,269,205, 239,205,268, 240,270,204, 240,204,267, 241,271,203, + 241,203,266, 242,272,202, 242,202,265, 243,273,201, 243,201,264, + 244,274,200, 244,200,263, 250,145,407, 251,266,193, 251,193,274, + 252,268,192, 252,192,272, 253,191,270, 256,263,188, 256,188,273, + 257,265,187, 257,187,271, 258,267,186, 258,186,269, 259,196,248, + 22,650,435, 260,197,247, 261,198,246, 262,199,245, 21,650,22, + 275,189,255, 276,191,253, 277,190,254, 278,194,249, 323,226,445, + 330,217,235, 330,235,338, 332,229,320, 333,230,319, 334,231,318, + 335,232,317, 336,233,316, 337,234,315, 338,235,314, 339,236,313, + 664,653,661, 340,237,312, 341,238,311, 342,219,331, 343,224,325, + 344,236,386, 345,225,324, 346,220,329, 347,227,322, 348,221,328, + 349,228,321, 665,653,664, 350,222,327, 351,226,323, 380,217,330, + 405,408,145, 405,412,406, 406,408,405, 407,145,408, 408,341,407, + 411,406,412, 413,412,461, 414,413,416, 415,414,416, 416,413,608, + 418,87,421, 418,416,608, 419,223,326, 420,213,223, 420,223,419, + 421,417,418, 421,213,420, 421,430,428, 421,87,88, 428,430,429, + 430,421,420, 435,650,439, 439,650,440, 440,650,447, 442,651,437, + 444,195,323, 444,323,445, 445,651,442, 446,195,444, 447,650,195, + 447,195,446, 453,452,471, 455,453,471, 460,455,471, 461,617,413, + 462,457,459, 465,43,44, 471,452,464, 471,464,470, 486,485,492, + 488,458,1301, 488,631,458, 488,1301,459, 488,480,481, 488,481,489, + 489,574,490, 490,631,489, 490,574,491, 490,632,631, 491,632,490, + 495,105,106, 495,106,107, 495,107,108, 495,108,109, 495,109,110, + 495,110,496, 497,495,496, 498,105,495, 498,495,497, 499,506,505, + 505,68,71, 506,68,505, 506,67,68, 508,503,512, 509,499,505, + 512,74,502, 512,502,601, 513,563,514, 518,517,520, 518,564,76, + 519,75,564, 519,74,75, 523,522,561, 525,518,520, 526,518,525, + 528,523,561, 529,528,561, 531,518,526, 532,518,531, 534,529,561, + 535,534,561, 537,518,532, 538,518,537, 540,535,561, 546,541,563, + 547,546,563, 552,547,563, 553,552,563, 556,519,564, 558,553,563, + 559,557,558, 559,558,562, 560,74,519, 560,519,556, 560,556,557, + 560,557,559, 560,559,565, 561,514,563, 562,563,513, 562,558,563, + 562,513,568, 564,543,544, 564,544,549, 564,549,550, 564,550,555, + 564,555,556, 565,74,560, 565,559,568, 566,84,567, 567,84,569, + 568,559,562, 568,513,566, 571,85,598, 571,84,85, 572,84,571, + 573,491,574, 574,489,573, 583,575,582, 585,582,588, 586,583,584, + 587,583,586, 589,575,590, 598,85,609, 599,598,609, 653,111,654, + 600,601,502, 600,502,577, 603,602,605, 604,578,593, 604,616,603, + 604,603,605, 606,594,599, 606,599,609, 607,633,491, 607,616,604, + 607,491,616, 607,458,633, 608,87,418, 608,617,607, 608,606,609, + 608,413,617, 609,87,608, 609,86,87, 610,512,611, 611,512,601, + 611,603,615, 612,508,512, 612,512,610, 615,616,491, 615,491,614, + 615,603,616, 625,624,630, 627,625,630, 628,627,630, 629,628,630, + 630,624,626, 630,626,629, 631,488,489, 632,458,631, 632,491,633, + 633,458,632, 639,651,112, 641,774,640, 32,637,33, 667,640,668, + 668,640,669, 669,640,774, 67,506,100, 672,669,774, 676,673,820, + 677,676,823, 680,677,826, 688,685,1131, 712,711,754, 720,719,1172, + 721,720,1171, 725,1178,726, 729,726,1185, 729,1230,730, 73,512,503, + 730,1230,1184, 74,512,73, 743,82,83, 745,744,1237, 745,743,744, + 745,1275,746, 746,85,743, 746,743,745, 746,609,85, 746,1275,86, + 747,86,1275, 748,747,1086, 748,883,751, 748,1086,878, 751,882,752, + 752,881,870, 76,564,75, 762,1172,763, 763,1172,719, 769,768,1161, + 770,769,1161, 771,770,1161, 772,771,1161, 773,772,1161, 774,641,642, + 775,638,639, 781,647,782, 655,654,111, 800,848,801, 801,847,802, + 801,848,810, 802,846,803, 802,847,809, 803,846,808, 804,845,800, + 805,844,804, 805,636,806, 806,844,805, 806,860,844, 807,845,804, + 807,804,844, 807,862,845, 808,1073,1070, 809,863,846, 809,866,856, + 810,865,847, 810,868,855, 811,800,845, 811,867,848, 812,644,645, + 812,645,840, 813,812,842, 814,813,842, 816,815,843, 817,816,839, + 818,817,839, 819,818,835, 820,813,814, 820,814,815, 820,815,816, + 820,816,823, 821,672,774, 821,813,820, 822,642,643, 822,643,644, + 822,644,812, 822,812,813, 822,813,821, 823,676,820, 824,681,825, + 826,677,823, 83,742,743, 831,646,647, 831,647,781, 834,646,831, + 844,859,807, 845,861,811, 846,864,808, 846,802,809, 846,863,851, + 847,866,809, 847,801,810, 847,865,850, 848,868,810, 848,800,811, + 848,867,849, 849,934,868, 849,932,923, 85,84,743, 850,936,866, + 850,930,922, 851,938,864, 851,928,921, 852,861,845, 852,926,861, + 852,845,862, 853,859,844, 853,924,859, 853,844,860, 854,811,861, + 854,935,867, 855,937,865, 855,933,917, 856,939,863, 856,931,916, + 857,862,807, 857,807,859, 857,927,862, 858,637,1113, 858,860,806, + 858,925,860, 859,943,857, 86,609,746, 860,942,853, 861,941,854, + 862,940,852, 863,928,851, 863,809,856, 863,939,909, 864,846,851, + 864,938,908, 865,930,850, 865,810,855, 865,937,907, 866,847,850, + 866,931,856, 866,936,906, 867,932,849, 867,811,854, 867,935,905, + 868,848,849, 868,933,855, 868,934,904, 870,880,871, 871,879,775, + 873,879,871, 873,895,879, 873,871,880, 874,880,870, 874,897,880, + 874,870,881, 875,638,775, 875,775,879, 876,881,752, 876,899,881, + 876,752,882, 877,882,751, 877,1051,882, 877,751,883, 878,883,748, + 878,903,883, 879,894,875, 88,218,213, 880,896,873, 881,898,874, + 882,900,876, 883,902,877, 884,902,883, 884,1005,902, 884,883,903, + 885,898,881, 885,1001,898, 885,881,899, 886,896,880, 886,999,896, + 886,880,897, 887,894,879, 887,997,894, 887,879,895, 888,878,1085, + 888,903,878, 888,1006,903, 889,901,877, 889,1004,901, 889,877,902, + 89,217,212, 89,218,88, 890,899,876, 890,1002,899, 890,876,900, + 891,638,875, 891,875,894, 892,897,874, 892,1000,897, 892,874,898, + 893,895,873, 893,998,895, 893,873,896, 894,1016,891, 895,1015,887, + 896,1014,893, 897,1013,886, 898,1012,892, 899,1011,885, 656,655,159, + 90,216,211, 90,217,89, 900,1010,890, 900,882,995, 901,1051,877, + 902,1008,889, 903,1007,884, 91,57,58, 910,940,862, 910,862,927, + 911,941,861, 911,861,926, 912,942,860, 912,860,925, 913,943,859, + 913,859,924, 914,927,857, 914,857,943, 918,854,941, 919,924,853, + 919,853,942, 920,926,852, 920,852,940, 928,863,909, 929,864,908, + 93,92,484, 930,865,907, 931,866,906, 932,867,905, 933,868,904, + 934,849,923, 935,854,918, 936,850,922, 937,855,917, 938,851,921, + 939,856,916, 94,93,484, 96,95,476, 97,96,476, 976,903,1006, + 976,1007,903, 977,902,1005, 977,1008,902, 978,901,1004, 978,1048,901, + 979,900,1003, 979,1010,900, 98,97,476, 980,899,1002, 980,1011,899, + 981,898,1001, 981,1012,898, 982,897,1000, 982,1013,897, 983,1014,896, + 983,896,999, 984,1015,895, 984,895,998, 985,1016,894, 985,894,997, + 986,893,1014, 986,998,893, 987,892,1012, 987,1000,892, 988,891,1016, + 988,858,1110, 989,890,1010, 989,1002,890, 99,506,499, 990,889,1008, + 990,1004,889, 991,888,1084, 991,1006,888, 992,887,1015, 992,997,887, + 993,886,1013, 993,999,886, 994,885,1011, 994,1001,885, 995,882,1045, + 996,884,1007, 996,1005,884, + + QUADS, 648,666,130,131, 648,649,20,19, 657,658,15,14, + 1000,987,1032,1031, 1001,994,1036,1035, 1002,989,1040,1039, + 1003,995,1044,1043, 1004,990,1053,1052, 1005,996,1057,1056, + 1006,991,1061,1060, 1007,976,1059,1058, 1008,977,1055,1054, + 1009,906,973,1047, 101,64,67,100, 1010,979,1042,1041, + 1011,980,1038,1037, 1012,981,1034,1033, 1013,982,1030,1029, + 1014,983,1026,1025, 1015,984,1022,1021, 1016,985,1018,1017, + 102,63,64,101, 103,60,63,102, 104,59,60,103, 1045,882,1051,1009, + 1045,1009,1047,1046, 1048,978,1050,1049, 105,104,103,106, + 106,103,102,107, 1061,991,1071,1075, 1062,939,1004,1052, + 1062,1052,1053,1063, 1063,909,939,1062, 1064,928,1008,1054, + 1064,1054,1055,1065, 1065,921,928,1064, 1066,938,1005,1056, + 1066,1056,1057,1067, 1067,908,938,1066, 1068,929,1007,1058, + 1068,1058,1059,1069, 1069,915,929,1068, 107,102,101,108, + 1071,991,1084,1076, 1072,915,976,1006, 1073,1006,1060,1074, + 1074,1060,1061,1075, 1075,1071,1073,1074, 1078,1077,1076,1079, + 108,101,100,109, 1080,1079,1085,1095, 1081,1080,1082,1083, + 1082,1080,1092,1091, 1084,1085,1087,1088, 1085,1079,1089,1087, + 1086,1082,1091,1093, 1088,1087,1089,1090, 1089,1079,1076,1090, + 109,100,99,110, 1090,1076,1084,1088, 1092,1080,1095,1094, + 1093,1091,1092,1094, 1096,27,26,431, 1097,638,1103,1098, + 658,659,16,15, 110,99,499,496, 1100,1099,1102,1104, + 1101,1100,1104,1105, 1102,1099,1098,1103, 1106,1105,1104,1107, + 1107,1104,1102,1109, 1109,1102,1103,1108, 1110,1109,1108,1111, + 1112,1107,1109,1110, 1113,1106,1107,1112, 1115,819,828,1116, + 1117,784,791,1120, 1118,1116,1117,1119, 1119,1117,1120,1121, + 1120,791,1129,1122, 1121,1120,1122,1126, 1122,1123,1125,1126, + 1126,1125,1154,1137, 1127,1124,1302,1303, 1128,1123,1122,1129, + 1128,803,1070,1303, 1129,796,803,1128, 113,114,123,124, + 1130,1115,1116,1118, 1131,1114,1115,1130, 1132,1133,1140,1141, + 1133,1134,1139,1140, 1134,1135,1138,1139, 1136,688,1131,1130, + 1138,1135,1136,1137, 1138,1137,1154,1146, 1139,1138,1146,1145, + 114,115,122,123, 1140,1139,1145,1144, 1141,1140,1144,1143, + 1142,761,1132,1141, 1143,758,1142,1141, 1143,1144,1149,1150, + 1144,1145,1148,1149, 1145,1146,1147,1148, 1148,1147,1155,1153, + 1149,1148,1153,1152, 115,116,121,122, 115,114,166,167, + 1150,757,758,1143, 1150,1149,1152,1151, 1151,754,755,1150, + 1158,712,754,1151, 1158,1152,1160,1159, 1160,1152,1153,1155, + 1160,1155,1239,1177, 1165,762,773,1162, 1165,1162,1163,1166, + 1166,1163,1164,1167, 1167,1159,1176,1166, 1169,1170,1173,1174, + 1173,1170,1171,1175, 1174,1173,1177,1239, 1175,1165,1166,1176, + 1176,1159,1160,1177, 1177,1173,1175,1176, 1182,1183,1186,1187, + 1187,1186,1191,1190, 1188,1181,1182,1187, 1189,1188,1187,1190, + 119,118,117,120, 1190,1191,1192,1193, 1193,1192,1197,1196, + 1194,1189,1190,1193, 1195,1194,1193,1196, 1196,1197,1198,1199, + 1199,1198,1203,1202, 659,660,17,16, 659,658,177,171, 120,117,113,124, + 1200,1195,1196,1199, 1201,1200,1199,1202, 1202,1203,1204,1205, + 1204,1184,1230,1209, 1205,1204,1209,1208, 1206,1201,1202,1205, + 1207,1206,1205,1208, 1208,1209,1210,1211, 1211,1210,1215,1214, + 1212,1207,1208,1211, 1213,1212,1211,1214, 1214,1215,1216,1217, + 1217,1216,1221,1220, 1218,1213,1214,1217, 1219,1218,1217,1220, + 122,121,128,127, 1220,1221,1222,1223, 1224,1219,1220,1223, + 1227,1180,1181,1188, 1227,1206,1207,1229, 123,122,127,126, + 1231,726,1168,1233, 1233,1168,1243,1235, 1234,1231,1233,1232, + 1236,1235,1243,1242, 1236,1242,1244,1247, 1237,1238,1245,1246, + 1238,744,1235,1236, 1239,1157,1280,1279, 124,123,126,125, + 1244,1242,1271,1270, 1245,1238,1236,1247, 1246,1245,1262,1261, + 1247,1244,1259,1263, 1249,1241,1256,1253, 125,126,135,136, + 1251,1248,1249,1250, 1251,1250,1262,1263, 1254,1251,1263,1259, + 1255,1241,1248,1254, 1257,1256,1255,1258, 1258,1255,1254,1259, + 126,127,134,135, 1260,1253,1256,1257, 1261,1252,1253,1260, + 1262,1250,1252,1261, 1262,1245,1247,1263, 1264,1237,1246,1265, + 1265,1246,1261,1260, 1268,1243,1266,1269, 1269,1266,1267,1277, + 127,128,133,134, 1271,1242,1243,1268, 1272,1260,1257,1274, + 1273,1258,1259,1270, 1273,1124,1127,1283, 1274,1257,1258,1273, + 1278,1174,1239,1279, 128,121,451,454, 1284,1276,1278,1285, + 1285,1278,1279,1287, 1286,1277,1276,1284, 1287,1279,1280,1288, + 1288,1280,1281,1289, 1289,1281,1277,1286, 129,120,124,125, + 1290,1284,1285,1291, 1291,1285,1287,1293, 1292,1286,1284,1290, + 1293,1287,1288,1294, 1294,1288,1289,1295, 1295,1289,1286,1292, + 660,666,18,17, 130,666,660,119, 130,119,120,129, 1301,458,461,1300, + 1301,1300,462,459, 1303,1070,1077,1127, 1303,1302,1125,1128, + 131,130,129,132, 132,129,125,136, 134,133,140,139, 135,134,139,138, + 136,135,138,137, 140,133,463,462, 141,132,136,137, 142,131,132,141, + 154,153,160,163, 158,36,37,157, 159,655,111,158, 161,156,155,162, + 161,41,42,448, 162,155,154,163, 163,40,41,162, 164,113,117,169, + 164,169,170,174, 165,116,115,167, 165,156,449,450, 166,114,113,164, + 167,166,173,172, 169,117,118,168, 170,169,168,171, 172,156,165,167, + 173,166,164,174, 174,170,178,175, 175,178,179,180, 176,155,172,173, + 176,173,174,175, 177,149,179,178, 178,170,171,177, 179,151,152,180, + 180,153,176,175, 649,648,131,142, 649,650,21,20, 201,145,250,264, + 206,90,753,869, 207,206,869,872, 263,256,400,399, 264,250,404,403, + 265,257,306,305, 266,251,310,309, 267,258,298,297, 268,252,302,301, + 269,239,300,299, 270,240,296,295, 271,241,308,307, 272,242,304,303, + 273,243,402,401, 274,244,398,397, 279,260,247,280, 280,247,320,353, + 281,277,254,282, 282,254,327,355, 283,259,248,284, 284,248,319,357, + 285,278,249,286, 286,249,321,359, 287,262,245,288, 288,245,318,361, + 289,275,255,290, 19,18,666,648, 290,255,328,363, 291,261,246,292, + 292,246,317,365, 293,276,253,294, 294,253,322,367, 296,240,316,369, + 298,258,329,371, 650,649,143,195, 300,239,315,373, 302,252,324,375, + 304,242,314,377, 306,257,330,379, 308,241,344,382, 661,653,652,662, + 310,251,313,385, 311,250,407,341, 312,256,273,340, 313,251,274,339, + 314,242,265,338, 315,239,268,337, 316,240,267,336, 317,246,276,335, + 318,245,275,334, 319,248,278,333, 662,667,668,663, 320,247,277,332, + 321,249,262,349, 322,253,270,347, 323,195,260,351, 324,252,272,345, + 325,244,263,343, 327,254,259,350, 328,255,261,348, 329,258,269,346, + 663,668,669,670, 330,257,271,380, 331,243,264,342, 332,277,281,354, + 333,278,285,358, 334,275,289,362, 335,276,293,366, 336,267,297,370, + 337,268,301,374, 338,265,305,378, 339,274,397,387, 664,661,662,663, + 340,273,401,391, 342,264,403,393, 343,263,399,389, 344,241,266,383, + 345,272,303,376, 346,269,299,372, 347,270,295,368, 348,261,291,364, + 349,262,287,360, 665,664,663,670, 350,259,283,356, 351,260,279,352, + 352,279,280,353, 353,320,351,352, 354,281,282,355, 355,327,332,354, + 356,283,284,357, 357,319,350,356, 358,285,286,359, 359,321,333,358, + 36,665,670,671, 360,287,288,361, 361,318,349,360, 362,289,290,363, + 363,328,334,362, 364,291,292,365, 365,317,348,364, 366,293,294,367, + 367,322,335,366, 368,295,296,369, 369,316,347,368, 37,36,671,674, + 370,297,298,371, 371,329,336,370, 372,299,300,373, 373,315,346,372, + 374,301,302,375, 375,324,337,374, 376,303,304,377, 377,314,345,376, + 378,305,306,379, 379,330,338,378, 38,37,674,675, 380,271,307,381, + 381,307,308,382, 382,344,380,381, 383,266,309,384, 384,309,310,385, + 385,313,383,384, 386,217,380,344, 388,325,339,387, 388,387,397,398, + 39,38,675,678, 390,312,343,389, 390,389,399,400, 392,331,340,391, + 392,391,401,402, 394,311,342,393, 394,393,403,404, 395,341,408,409, + 396,326,341,395, 396,395,409,410, 398,244,325,388, 40,39,678,679, + 400,256,312,390, 402,243,331,392, 404,250,311,394, 405,140,462,1300, + 406,326,396,410, 408,406,410,409, 41,40,679,682, 411,412,413,414, + 411,414,424,425, 412,405,1300,461, 417,415,416,418, 419,326,406,411, + 419,411,425,423, 42,41,682,683, 420,414,415,430, 422,420,419,423, + 424,414,420,422, 424,422,423,425, 426,417,421,428, 427,415,417,426, + 427,426,428,429, 43,42,683,686, 430,415,427,429, 431,651,639,1096, + 431,26,25,432, 432,25,24,433, 432,433,436,437, 433,24,23,434, + 434,23,22,435, 436,433,434,438, 436,438,441,443, 437,651,431,432, + 437,436,443,442, 438,434,435,439, 438,439,440,441, 44,43,686,687, + 441,440,447,446, 442,443,444,445, 443,441,446,444, 448,42,43,465, + 449,156,161,448, 449,448,465,464, 45,44,687,690, 450,449,464,452, + 451,116,165,450, 451,450,452,453, 454,451,453,455, 456,454,455,460, + 456,457,462,463, 459,457,456,460, 46,45,690,691, 461,458,607,617, + 463,128,454,456, 465,44,470,464, 466,98,476,475, 466,49,50,98, + 467,47,49,466, 468,46,47,467, 469,45,46,468, 47,46,691,694, + 470,44,45,469, 470,469,472,471, 472,469,468,473, 473,468,467,474, + 474,467,466,475, 476,95,477,475, 478,474,475,477, 479,473,474,478, + 48,695,696,697, 480,472,473,479, 481,480,479,482, 482,479,478,483, + 483,478,477,484, 486,483,484,485, 487,482,483,486, 487,486,494,489, + 488,459,460,471, 488,471,472,480, 489,481,482,487, 49,47,694,48, + 492,58,59,493, 493,59,104,501, 494,486,492,493, 494,493,510,511, + 497,496,499,500, 498,497,500,501, 652,640,667,662, 652,653,10,9, + 50,49,48,697, 500,499,509,510, 501,104,105,498, 502,74,565,567, + 504,72,73,503, 505,71,72,504, 505,504,507,509, 507,504,503,508, + 509,507,511,510, 51,50,697,698, 510,493,501,500, 511,507,508,573, + 513,81,82,566, 514,80,81,513, 515,79,80,514, 515,514,561,522, + 516,78,79,515, 516,515,522,521, 517,77,78,516, 518,76,77,517, + 52,51,698,701, 520,517,516,521, 521,522,523,524, 524,523,528,527, + 525,520,521,524, 526,525,524,527, 527,528,529,530, 53,52,701,702, + 530,529,534,533, 531,526,527,530, 532,531,530,533, 533,534,535,536, + 536,535,540,539, 537,532,533,536, 538,537,536,539, 539,540,541,542, + 54,53,702,705, 541,540,561,563, 542,541,546,545, 543,538,539,542, + 544,543,542,545, 545,546,547,548, 548,547,552,551, 549,544,545,548, + 55,54,705,706, 550,549,548,551, 551,552,553,554, 554,553,558,557, + 555,550,551,554, 556,555,554,557, 56,55,706,709, 564,518,538,543, + 566,82,743,84, 567,565,568,566, 569,84,572,570, 57,56,709,710, + 570,572,579,581, 573,489,494,511, 573,508,612,613, 577,502,567,569, + 577,569,570,576, 577,576,605,602, 578,576,570,581, 579,572,571,580, + 58,57,710,713, 580,571,598,599, 581,579,596,597, 582,575,589,588, + 583,582,585,584, 586,584,596,595, 587,586,595,594, 588,589,592,593, + 589,590,591,592, 59,58,713,714, 590,575,583,587, 590,587,594,591, + 591,594,606,608, 592,591,608,607, 593,578,581,597, 593,592,607,604, + 595,580,599,594, 596,579,580,595, 596,584,585,597, 597,585,588,593, + 653,654,11,10, 60,59,714,61, 600,577,602,603, 601,600,603,611, + 605,576,578,604, 61,716,717,62, 610,611,620,618, 611,615,623,620, + 612,610,618,619, 613,612,619,621, 614,491,573,613, 614,613,621,622, + 615,614,622,623, 618,620,626,624, 619,618,624,625, 62,717,718,65, + 620,623,629,626, 621,619,625,627, 622,621,627,628, 623,622,628,629, + 63,60,61,62, 639,638,1097,1096, 64,63,62,65, 647,634,793,782, + 1,647,646,2, 2,646,645,3, 65,718,719,66, 3,645,644,4, 4,644,643,5, + 5,643,642,6, 6,642,641,7, 7,641,640,8, 8,640,652,9, 28,27,1096,1097, + 29,28,1097,1098, 66,719,720,69, 30,29,1098,1099, 31,30,1099,1100, + 32,31,1100,1101, 33,637,636,34, 34,636,635,35, 35,635,634,0, + 0,634,647,1, 67,64,65,66, 670,669,672,671, 671,672,673,674, + 673,672,821,820, 674,673,676,675, 675,676,677,678, 678,677,680,679, + 679,680,681,682, 68,67,66,69, 681,680,826,825, 682,681,684,683, + 683,684,685,686, 684,681,824,1114, 685,684,1114,1131, + 686,685,688,687, 687,688,689,690, 689,688,1136,1135, 69,720,721,70, + 690,689,692,691, 691,692,693,694, 692,689,1135,1134, + 693,692,1134,1133, 694,693,695,48, 695,693,1133,1132, + 696,695,1132,761, 697,696,699,698, 698,699,700,701, 699,696,761,760, + 654,655,12,11, 70,721,722,723, 700,699,760,759, 701,700,703,702, + 702,703,704,705, 703,700,759,758, 704,703,758,757, 705,704,707,706, + 706,707,708,709, 707,704,757,756, 708,707,756,755, 709,708,711,710, + 71,68,69,70, 710,711,712,713, 711,708,755,754, 713,712,715,714, + 714,715,716,61, 715,712,1158,1159, 716,715,767,766, 717,716,766,765, + 718,717,765,764, 719,718,764,763, 72,71,70,723, 722,721,1171,1170, + 723,722,725,724, 724,725,726,727, 725,722,1170,1169, 727,726,729,728, + 728,729,730,731, 73,72,723,724, 731,730,733,732, 732,733,734,735, + 733,730,1184,1183, 734,733,1183,1182, 735,734,737,736, + 736,737,738,739, 737,734,1182,1181, 738,737,1181,1180, + 739,738,741,740, 74,73,724,727, 740,741,742,83, 741,738,1180,1179, + 742,741,1179,1232, 743,742,1232,744, 749,748,751,750, 75,74,727,728, + 750,751,752,753, 753,752,870,869, 76,75,728,731, 762,763,772,773, + 763,764,771,772, 764,765,770,771, 765,766,769,770, 766,767,768,769, + 767,715,1159,1167, 768,767,1167,1164, 77,76,731,732, 774,642,822,821, + 775,639,872,871, 776,780,783,787, 776,777,829,827, 778,779,828,830, + 78,77,732,735, 780,781,782,783, 780,776,827,832, 781,780,832,831, + 783,782,793,792, 784,779,778,785, 785,778,777,786, 786,777,776,787, + 787,783,792,788, 788,792,795,799, 789,786,787,788, 79,78,735,736, + 790,785,786,789, 791,784,785,790, 792,793,794,795, 793,634,635,794, + 794,635,636,805, 795,794,805,804, 796,791,790,797, 797,790,789,798, + 798,789,788,799, 799,795,804,800, 655,656,13,12, 80,79,736,739, + 801,798,799,800, 802,797,798,801, 803,796,797,802, 806,636,637,858, + 81,80,739,740, 815,814,842,843, 817,818,825,826, 818,819,824,825, + 82,81,740,83, 823,816,817,826, 824,819,1115,1114, 827,829,836,837, + 828,779,1117,1116, 828,819,835,830, 829,777,778,830, 831,832,833,834, + 833,832,827,837, 834,833,841,840, 835,818,839,836, 836,829,830,835, + 837,836,839,838, 839,816,843,838, 840,645,646,834, 841,833,837,838, + 842,812,840,841, 842,841,838,843, 86,747,748,749, 869,870,871,872, + 872,639,112,207, 88,87,86,749, 89,88,749,750, 656,657,14,13, + 90,89,750,753, 91,58,492,485, 910,927,952,953, 911,926,956,957, + 912,925,944,945, 913,924,948,949, 914,943,950,951, 915,808,864,929, + 918,941,958,959, 919,942,946,947, 92,91,485,484, 92,56,57,91, + 920,940,954,955, 924,919,992,1015, 925,858,988,1016, 926,920,993,1013, + 927,914,986,1014, 928,909,990,1008, 929,908,996,1007, 93,55,56,92, + 930,907,979,1003, 931,906,1009,1048, 932,905,981,1001, + 933,904,980,1002, 934,923,994,1011, 935,918,987,1012, + 936,922,995,1045, 937,917,989,1010, 938,921,977,1005, + 939,916,978,1004, 94,54,55,93, 940,910,983,999, 941,911,982,1000, + 942,912,985,997, 943,913,984,998, 944,925,1016,1017, + 945,944,1017,1018, 946,942,997,1019, 947,946,1019,1020, + 948,924,1015,1021, 949,948,1021,1022, 95,94,484,477, 95,53,54,94, + 950,943,998,1023, 951,950,1023,1024, 952,927,1014,1025, + 953,952,1025,1026, 954,940,999,1027, 955,954,1027,1028, + 956,926,1013,1029, 957,956,1029,1030, 958,941,1000,1031, + 959,958,1031,1032, 96,52,53,95, 960,935,1012,1033, 961,960,1033,1034, + 961,905,935,960, 962,932,1001,1035, 963,962,1035,1036, + 963,923,932,962, 964,934,1011,1037, 965,964,1037,1038, + 965,904,934,964, 966,933,1002,1039, 967,966,1039,1040, + 967,917,933,966, 968,937,1010,1041, 969,968,1041,1042, + 969,907,937,968, 97,51,52,96, 970,930,1003,1043, 971,970,1043,1044, + 971,922,930,970, 972,936,1045,1046, 973,972,1046,1047, + 973,906,936,972, 974,931,1048,1049, 975,974,1049,1050, + 975,916,931,974, 976,915,1069,1059, 977,921,1065,1055, + 978,916,975,1050, 979,907,969,1042, 98,50,51,97, 980,904,965,1038, + 981,905,961,1034, 982,911,957,1030, 983,910,953,1026, + 984,913,949,1022, 985,912,945,1018, 986,914,951,1024, + 987,918,959,1032, 989,917,967,1040, 990,909,1063,1053, + 992,919,947,1020, 993,920,955,1028, 994,923,963,1036, + 995,922,971,1044, 996,908,1067,1057, 997,992,1020,1019, + 998,986,1024,1023, 999,993,1028,1027, + + /* The base of the knight */ + SPIN,18, + 9510,0, 9510,756, SEAM, 9134,1129, 9447,1487, + 9447,1951, 9103,2371, STEPDOWN, 8211,3083, + 7167,4242, 6662,5664, 7040,7142, STEPUP, SEAM, 7935,8560, + STEPUP, BACKREF,0, + + ENDOFDATA +}; + +static unsigned short bishop_data[] = { + VERTICES, SETBACKREF,0, 5233,26960,0, 5154,26960,909, 4918,26960,1790, + 4532,26960,2617, 4009,26960,3364, 3364,26960,4009, 2617,26960,4532, + 1790,26960,4918, 909,26960,5154, 0,26833,5233, -909,26960,5154, + -1790,26960,4918, -2617,26960,4532, -3364,26960,4009, + -4009,26960,3364, -4532,26960,2617, -4918,26960,1790, + -5154,26960,909, -5233,26960,0, -5154,26960,-909, -4918,26960,-1790, + -4532,26960,-2617, -4009,26960,-3364, -3364,26960,-4009, + -2617,26960,-4532, -1790,26960,-4918, -909,26960,-5154, 0,26833,-5233, + 909,26960,-5154, 1790,26960,-4918, 2617,26960,-4532, 3364,26960,-4009, + 4009,26960,-3364, 4532,26960,-2617, 4918,26960,-1790, 5154,26960,-909, + SETBACKREF,1, 3812,31178,0, 3765,31144,729, 3624,31040,1435, + 3395,30872,2153, 3084,30642,2820, 2701,30360,3389, 2076,29899,4102, + 1492,30015,4340, 845,30033,4442, 0,30044,4511, -657,30063,4443, + -1481,30081,4214, -2190,30081,3884, -2830,30081,3435, + -3383,30081,2883, -3831,30081,2242, -4162,30081,1534, + -4364,30081,779, -4432,30081,0, -4364,30081,-779, -4162,30081,-1534, + -3831,30081,-2242, -3383,30081,-2883, -2830,30081,-3435, + -2190,30081,-3884, -1481,30081,-4214, -657,30063,-4443, 0,30044,-4511, + 845,30033,-4442, 1492,30015,-4340, 2076,29899,-4102, 2701,30360,-3388, + 3084,30642,-2820, 3395,30872,-2153, 3624,31040,-1435, 3765,31144,-729, + 240,28546,-4957, 884,29021,-4784, 1490,29467,-4537, 2076,29899,-4102, + 2701,30360,-3388, 3084,30642,-2820, 3395,30872,-2153, + 3624,31040,-1435, 3765,31144,-729, 2177,28477,4637, 1021,27605,5037, + 1021,27605,-5042, 2170,28478,-4644, 0,26833,-5233, 0,26833,5233, + -3153,28619,-3758, 240,28546,4957, 884,29021,4784, 2076,29899,4102, + 2701,30360,3389, 3084,30642,2820, 3395,30872,2153, 3624,31040,1435, + 3765,31144,729, -719,28582,4883, 4863,28569,977, 4560,28569,1925, + 4064,28569,2815, 3465,28569,3723, 2622,28569,4448, 2621,28583,-4401, + 3473,28588,-3691, 4064,28569,-2815, 4560,28569,-1925, 4863,28569,-977, + 4965,28569,0, -1678,28619,4610, -3153,28619,3758, -2453,28619,4248, + -4248,28619,2453, -3758,28619,3153, -4831,28619,852, -4906,28619,0, + -4831,28619,-852, -4610,28619,-1678, -4248,28619,-2453, + -3758,28619,-3153, -1678,28619,-4610, -2453,28619,-4248, + -644,27895,5037, -644,27895,-5037, -4610,28619,1678, -719,28582,-4883, + 2170,28478,-4644, 1021,27605,-5042, 1021,27605,5037, 2177,28477,4637, + 0,26833,-5233, 0,26833,5233, -644,27895,-5037, -644,27895,5037, + -644,27895,5037, -644,27895,-5037, 1490,29467,-4537, 884,29021,-4784, + 240,28546,-4957, 240,28546,4957, 884,29021,4784, 3812,31178,0, + 4349,30116,-867, 4197,30001,-1705, 3948,29813,-2492, 3610,29558,-3203, + 3193,29244,-3817, 2711,28880,-4315, 4349,30116,-867, 4197,30001,-1705, + 3948,29813,-2492, 3610,29558,-3203, 3193,29244,-3817, + 2711,28880,-4315, 1608,28047,-4906, 1608,28047,4901, 2711,28880,4310, + 3193,29244,3812, 3610,29558,3198, 3948,29813,2487, 4197,30001,1701, + 4349,30116,862, 4401,30155,-176, 1490,29467,4537, 1490,29467,4537, + 4401,30155,-176, 4349,30116,862, 4197,30001,1701, 3948,29813,2487, + 3610,29558,3198, 3193,29244,3812, 2711,28880,4310, 1608,28047,4901, + 1608,28047,-4906, + + TRIANGLES, 8,127,9, 7,128,154, 2,98,3, 121,96,10, 121,10,9, 121,138,96, + 122,27,26, 27,126,28, 66,135,65, 162,42,43, 165,164,141, 80,140,95, + 103,151,150, 102,125,152, 101,155,128, 100,157,156, 124,137,122, + 33,105,34, 29,153,125, 26,124,122, + + QUADS, 22,118,87,23, 21,117,118,22, 20,116,117,21, 19,115,116,20, + 18,114,115,19, 17,113,114,18, 16,123,113,17, 15,111,123,16, 14,112,111,15, + 13,109,112,14, 12,110,109,13, 11,108,110,12, 7,154,127,8, 110,108,47,48, + 135,136,64,65, 136,137,63,64, 138,139,44,45, 139,162,43,44, 109,110,48,49, + 147,161,107,106, 166,165,141,142, 167,166,142,143, 168,167,143,144, + 169,168,144,145, 112,109,49,50, 170,169,145,146, 171,81,84,172, + 111,112,50,51, 72,88,133,134, 73,89,88,72, 74,163,89,73, 75,90,163,74, + 76,91,90,75, 77,92,91,76, 78,93,92,77, 79,94,93,78, 80,95,94,79, + 81,170,146,84, 82,171,172,83, 86,82,83,85, 130,129,131,132, 123,111,51,52, + 113,123,52,53, 114,113,53,54, 115,114,54,55, 116,115,55,56, 117,116,56,57, + 118,117,57,58, 87,118,58,59, 120,87,59,60, 119,120,60,61, 107,161,160,97, + 106,107,0,35, 105,148,147,106, 105,106,35,34, 104,149,148,105, + 104,105,33,32, 103,150,149,104, 103,104,32,31, 102,152,151,103, + 102,103,31,30, 101,128,7,6, 100,101,6,5, 100,156,155,101, 99,100,5,4, + 99,158,157,100, 98,99,4,3, 98,159,158,99, 97,98,2,1, 97,160,159,98, + 96,108,11,10, 96,138,45,46, 124,119,61,62, 47,108,96,46, 63,137,124,62, + 0,107,97,1, 29,125,102,30, 28,126,153,29, 25,119,124,26, 24,120,119,25, + 23,87,120,24, + + /* Everything above the slit */ + SPIN,18, + 8870,0,8870,731,SEAM,8519,1091,8811,1438,8811,1886,8626,2292, + STEPDOWN,6989,2980,5927,4133,5548,5735, + STEPUP,5388,7642,5228,7807,STEPDOWN,4427,8149,4057,8434, + 3493,9185,2816,13524,SEAM,2690,18532,5301,18690, + STEPUP,6810,19005,6861,19277,6804,19625,STEPDOWN,6502,19845, + SEAM,4305,20394,STEPUP,4796,20522,4924,20759,4778,20979, + STEPDOWN,SEAM,3727,21207,SEAM,3726,22181,STEPUP,SEAM,4546,22705, + SEAM,3846,23385,4718,24227,5226,25516,STEPUP,BACKREF,0, + + /* Everything below the slit */ + SPIN,36, + BACKREF,1,STEPDOWN,3548,31590,STEPDOWN,2724,32633,SEAM,1581,33500, + 2013,33901,STEPUP,2281,34500,2281,34936,STEPDOWN,1947,35372, + STEPDOWN,1233,35734,STEPDOWN,0,35891, + + ENDOFDATA +}; + +static unsigned short king_data[] = { + SPIN,20, + 11378,0,11378,856,SEAM,10928,1152, + 11302,1684,11302,2209,11065,2684, + STEPDOWN,8964,3490,7603,4841,7116,6717, + STEPUP,6911,8950,6705,9144,STEPDOWN,5678,9545,5204,9878, + 4481,10758,3696,14808,SEAM,3065,26979, + 5813,27155,STEPUP,7145,27507,7424,27812,7352,28288,7131,28533, + 5477,28882,5397,29010,5406,29363,4903,29934, + STEPDOWN,SEAM,3944,30227, + SEAM,3974,31478,4703,31849,STEPUP,4832,32092,4756,32370, + SEAM,3975,32620,6899,39055,6877,39351,2833,39514, + 2786,39612,2786,39807,2734,39856,STEPDOWN,STEPDOWN,2590,39905,0,39969, + /* The cross */ + SETBACKREF,0, + QUADSTRIP,-1613,39866,0,-1543,39866,702,-1651,40481,0,-1580,40590,702, + -1531,40917,0,-1465,41008,702, + QUADSTRIP,-1531,40917,0,-1465,41008,702,-2956,41104,0,-2829,41187,702, + -3075,41520,0,-2943,41585,702,-3075,43849,0,-2943,43805,702, + -2862,44347,0,-2739,44282,702,-1116,44636,0,-1068,44554,702, + QUADSTRIP,-1116,44636,0,-1068,44554,702,-1102,45692,0,-1054,45576,702, + -973,45829,0,-973,45747,702,973,45829,0,973,45747,702,1102,45692,0, + 1054,45576,702,1116,44636,0,1068,44554,702, + QUADSTRIP,1116,44636,0,1068,44554,702,2862,44347,0,2739,44282,702, + 3075,43849,0,2943,43805,702,3075,41520,0,2943,41585,702,2956,41104,0, + 2829,41187,702,1531,40917,0,1465,41008,702, + QUADSTRIP,1531,40917,0,1465,41008,702,1651,40481,0,1580,40590,702, + 1613,39866,0,1543,39866,702, + QUADSTRIP,-1543,39866,702,1543,39866,702,-1580,40590,702, + 1580,40590,702,-1465,41008,702,1465,41008,702,-2829,41187,702, + 2829,41187,702,-2943,41585,702,2943,41585,702,-2943,43805,702, + 2943,43805,702,-2739,44282,702,2739,44282,702,-1068,44554,702, + 1068,44554,702,-1054,45576,702,1054,45576,702,-973,45747,702, + 973,45747,702, + QUADSTRIP,-1543,39866,-702,BACKREF,0,0,-1580,40590,-702,BACKREF,0,2, + -1465,41008,-702,BACKREF,0,4, + QUADSTRIP,-1465,41008,-702,BACKREF,0,6,-2829,41187,-702,BACKREF,0,8, + -2943,41585,-702,BACKREF,0,10,-2943,43805,-702,BACKREF,0,12, + -2739,44282,-702,BACKREF,0,14,-1068,44554,-702,BACKREF,0,16, + QUADSTRIP,-1068,44554,-702,BACKREF,0,18,-1054,45576,-702, + BACKREF,0,20,-973,45747,-702,BACKREF,0,22,973,45747,-702,BACKREF,0,24, + 1054,45576,-702,BACKREF,0,26,1068,44554,-702,BACKREF,0,28, + QUADSTRIP,1068,44554,-702,BACKREF,0,30,2739,44282,-702, + BACKREF,0,32,2943,43805,-702,BACKREF,0,34,2943,41585,-702,BACKREF,0,36, + 2829,41187,-702,BACKREF,0,38,1465,41008,-702,BACKREF,0,40, + QUADSTRIP,1465,41008,-702,BACKREF,0,42,1580,40590,-702, + BACKREF,0,44,1543,39866,-702,BACKREF,0,46, + QUADSTRIP,1543,39866,-702,-1543,39866,-702,1580,40590,-702, + -1580,40590,-702,1465,41008,-702,-1465,41008,-702,2829,41187,-702, + -2829,41187,-702,2943,41585,-702,-2943,41585,-702,2943,43805,-702, + -2943,43805,-702,2739,44282,-702,-2739,44282,-702,1068,44554,-702, + -1068,44554,-702,1054,45576,-702,-1054,45576,-702,973,45747,-702, + -973,45747,-702, + ENDOFDATA +}; + +static unsigned short queen_data[] = { + SPIN,24, + 11092,0,11092,914,SEAM,10653,1284, + 11018,1798,11018,2358,10787,2866, + STEPDOWN,8739,3726,7412,5168,6937,7171, + STEPUP,6737,9556,6537,9762,STEPDOWN,5536,10191,5073,10546, + 4368,11485,3678,15137,SEAM,3259,26879, + 5966,27091,STEPUP,7332,27515,7619,27882,7545,28455,7317,28751, + 5654,29177,5538,29326,5542,29982,5377,30278, + STEPDOWN,SEAM,4194,30585, + SEAM,4226,31822,5002,32218,STEPUP,5139,32477,5058,32774, + SEAM,4227,33040,STEPDOWN,4421,34778,5042,36612,5874,38429, + STEPUP,SEAM,PATTERN,3,6018,39660,6018,39660,6804,39977, + SEAM,PATTERN,3,5015,41139,5015,41139,5673,41460, + SEAM,4349,40044, + STEPDOWN,SEAM,1381,41188, + 1396,42332,STEPDOWN,1082,43072,481,43476,0,43543, + ENDOFDATA +}; + +static unsigned short pawn_data[] = { + SPIN,16, + 7395,0,7395,609, + SEAM,7102,910,7345,1199,7345,1572,7191,1910, + STEPDOWN,5826,2484,4941,3446,4625,4781, + STEPUP,4492,6371,4358,6508, + STEPDOWN,3691,6794,2912,7657,2473,10091, + SEAM,2100,15344, + STEPUP,4518,15697,4695,15900,4649,16218,4509,16382, + STEPDOWN,SEAM,3150,16755,STEPUP,3858,17678,4303,18752,4455,19905, + 4303,21058,3858,22132, + STEPDOWN,3150,23055,2227,23763,STEPDOWN,1153,24208,0,24360, + ENDOFDATA +}; + +static unsigned short rook_data[] = { + SPIN,20, + 9374,0,9374,756,SEAM,9003,1062,9311,1487, + 9311,1951,9116,2371,8521,3083,6701,5807,SEAM,6009,7595, + 6167,7812,6138,8066,5926,8460,5216,12608, + SEAM,4883,21434, + SEAM,5140,21608, + SEAM,5176,22792, + SEAM,5953,23030, +/* SEAM,PATTERN,5,6103,26819,6143,27971,6143,27971,6143,27971,6103,26819, */ +/* SEAM,PATTERN,5, 5020,26819,5053,27971,5053,27971,5053,27971, 5020,26819, */ + SETBACKREF,0, + 6103,26819, + + SETBACKREF,1, + SPIN,20, + 5020,26819,5020,26114,4906,25858,0,25666, + + POLARQUADSTRIP,20,BACKREF,0,1,1,6143,27971,BACKREF,0,2,2,6143,27971, + BACKREF,0,3,3,6143,27971,BACKREF,0,4,4,6143,27971, + POLARQUADSTRIP,20,BACKREF,0,6,6,6143,27971,BACKREF,0,7,7,6143,27971, + BACKREF,0,8,8,6143,27971,BACKREF,0,9,9,6143,27971, + POLARQUADSTRIP,20,BACKREF,0,11,11,6143,27971,BACKREF,0,12,12,6143,27971, + BACKREF,0,13,13,6143,27971,BACKREF,0,14,14,6143,27971, + POLARQUADSTRIP,20,BACKREF,0,16,16,6143,27971,BACKREF,0,17,17,6143,27971, + BACKREF,0,18,18,6143,27971,BACKREF,0,19,19,6143,27971, + + POLARQUADSTRIP,20,1,5053,27971,BACKREF,1,1,2,5053,27971,BACKREF,1,2, + 3,5053,27971,BACKREF,1,3,4,5053,27971,BACKREF,1,4, + POLARQUADSTRIP,20,6,5053,27971,BACKREF,1,6,7,5053,27971,BACKREF,1,7, + 8,5053,27971,BACKREF,1,8,9,5053,27971,BACKREF,1,9, + POLARQUADSTRIP,20,11,5053,27971,BACKREF,1,11,12,5053,27971,BACKREF,1,12, + 13,5053,27971,BACKREF,1,13,14,5053,27971,BACKREF,1,14, + POLARQUADSTRIP,20,16,5053,27971,BACKREF,1,16,17,5053,27971,BACKREF,1,17, + 18,5053,27971,BACKREF,1,18,19,5053,27971,BACKREF,1,19, + + POLARQUADSTRIP,20,1,5020,26819,1,6103,26819, + 0,5020,26819,0,6103,26819,19,5020,26819,19,6103,26819, + POLARQUADSTRIP,20,6,5020,26819,6,6103,26819, + 5,5020,26819,5,6103,26819,4,5020,26819,4,6103,26819, + POLARQUADSTRIP,20,11,5020,26819,11,6103,26819, + 10,5020,26819,10,6103,26819,9,5020,26819,9,6103,26819, + POLARQUADSTRIP,20,16,5020,26819,16,6103,26819, + 15,5020,26819,15,6103,26819,14,5020,26819,14,6103,26819, + + POLARQUADSTRIP,20,1,5053,27971,1,6143,27971,1,5020,26819,1,6103,26819, + POLARQUADSTRIP,20,4,5020,26819,4,6103,26819,4,5053,27971,4,6143,27971, + POLARQUADSTRIP,20,6,5053,27971,6,6143,27971,6,5020,26819,6,6103,26819, + POLARQUADSTRIP,20,9,5020,26819,9,6103,26819,9,5053,27971,9,6143,27971, + POLARQUADSTRIP,20,11,5053,27971,11,6143,27971,11,5020,26819,11,6103,26819, + POLARQUADSTRIP,20,14,5020,26819,14,6103,26819,14,5053,27971,14,6143,27971, + POLARQUADSTRIP,20,16,5053,27971,16,6143,27971,16,5020,26819,16,6103,26819, + POLARQUADSTRIP,20,19,5020,26819,19,6103,26819,19,5053,27971,19,6143,27971, + + POLARQUADSTRIP,20,1,6143,27971,1,5053,27971,2,6143,27971,2,5053,27971, + 3,6143,27971,3,5053,27971,4,6143,27971,4,5053,27971, + POLARQUADSTRIP,20,6,6143,27971,6,5053,27971,7,6143,27971,7,5053,27971, + 8,6143,27971,8,5053,27971,9,6143,27971,9,5053,27971, + POLARQUADSTRIP,20,11,6143,27971,11,5053,27971,12,6143,27971,12,5053,27971, + 13,6143,27971,13,5053,27971,14,6143,27971,14,5053,27971, + POLARQUADSTRIP,20,16,6143,27971,16,5053,27971,17,6143,27971,17,5053,27971, + 18,6143,27971,18,5053,27971,19,6143,27971,19,5053,27971, + + ENDOFDATA +}; + +static double piece_size; + +static int +enumerate_ring_vertices( int steps, unsigned short *data, void *h, + void (*process_vertex)(void *h,double x,double y,double z)) +{ + int patlen = 1,i; + unsigned short *pts = data; + double dtheta = M_PI * 2 / steps; + + if( data[0] == PATTERN) { + patlen = data[1]; + pts += 2; + } + + if( pts[0] == 0) steps = 1; + + for( i=0; i < steps; i++) { + double r = pts[(i % patlen)*2] * piece_size; + double y = pts[(i % patlen)*2+1] * piece_size; + double theta = dtheta * i; + + process_vertex( h, r * cos(theta), y, r * sin(theta)); + } + + return pts + patlen * 2 - data; +} + +static void +enumerate_vertices( unsigned short *data, void *h, + void (*process_vertex)(void *h,double x,double y,double z)) +{ + while(1) { + if( data[0] == SPIN) { + int steps; + steps = data[1]; + data += 2; + + while(data[0] <= SEAM) { + if( data[0] == SETBACKREF || data[0] == BACKREF) { + data += 2; + continue; + } else if( data[0] == STEPUP) { + steps *= 2; + data++; + continue; + } else if( data[0] == STEPDOWN) { + steps /= 2; + data++; + continue; + } else if( data[0] == SEAM) { + data ++; + /* Visit seam vertices twice */ + enumerate_ring_vertices( steps, data, + h, process_vertex); + data += enumerate_ring_vertices( steps, data, + h, process_vertex); + } else { + data += enumerate_ring_vertices( steps, data, + h, process_vertex); + } + } + } else if( data[0] == POLARQUADSTRIP) { + int steps = data[1]; + double dtheta; + data += 2; + + dtheta = M_PI * 2 / steps; + + while(data[0] <= SEAM) { + if( data[0] != BACKREF) { + double theta = dtheta * data[0]; + double r = data[1] * piece_size; + double y = data[2] * piece_size; + process_vertex( h, r * cos(theta), y, r * sin(theta)); + } + data += 3; + } + } else if( data[0] == QUADSTRIP || data[0] == VERTICES) { + data ++; + + while(data[0] <= SEAM) { + if( data[0] == SETBACKREF) { + data += 2; + continue; + } + + if( data[0] != BACKREF) { + double x = (signed short)data[0] * piece_size; + double y = data[1] * piece_size; + double z = (signed short)data[2] * piece_size; + process_vertex( h, x, y, z); + } + data += 3; + } + } else if( data[0] == QUADS || data[0] == TRIANGLES) { + data ++; + while( data[0] <= SEAM) data++; + } else { + break; + } + } +} + +static void +enumerate_ring_faces( int basevertex, int steps, + int prevbase, int prevsteps, void *h, int *count_ret, + void (*process_face)(void *h,int v1,int v2,int v3,int v4)) +{ + int i,j; + + if( steps == 1) { + for( i=0; i < prevsteps; i++) { + process_face( h, + basevertex, + prevbase + i, + prevbase + (i ? i-1 : prevsteps-1), + -1); + if (count_ret) (*count_ret)++; + } + } else if( steps == prevsteps) { + for( i=0; i < steps; i++) { + process_face( h, + basevertex + i, + prevbase + i, + prevbase + (i ? i-1 : steps-1), + basevertex + (i ? i-1 : steps-1)); + if (count_ret) (*count_ret)++; + } + } else { + j = 0; + for( i=0;; i++) { + while( j < prevsteps && steps*(1+2*j) < prevsteps*(1+2*i)) { + process_face( h, + basevertex + (i%steps), + prevbase + ((j+1)%prevsteps), + prevbase + j, + -1); + if (count_ret) (*count_ret)++; + j++; + } + if( i == steps) break; + process_face( h, + basevertex + i, + basevertex + ((i+1)%steps), + prevbase + (j%prevsteps), + -1); + if (count_ret) (*count_ret)++; + } + } +} + +static void +enumerate_faces( unsigned short *data, void *h, int *count_ret, + void (*process_face)(void *h,int v1,int v2,int v3,int v4)) +{ + int basevertex = 0, startofvertices = 0; + int backrefs[5]; + + while(1) { + if( data[0] == SPIN) { + int steps; + int prevsteps = -1,prevbase = 0; + + steps = data[1]; + data += 2; + + while( data[0] <= SEAM) { + if( data[0] == SETBACKREF) { + backrefs[data[1]] = basevertex; + data += 2; + continue; + } + + if( data[0] == STEPUP) { + steps *= 2; + data++; + continue; + } else if( data[0] == STEPDOWN) { + steps /= 2; + data++; + continue; + } + + if( data[0] == BACKREF) { + if( prevsteps != -1) { + enumerate_ring_faces( backrefs[data[1]], steps, + prevbase, prevsteps, h, + count_ret, process_face); + } + + prevbase = backrefs[data[1]]; + data += 2; + } else { + int isseam = 0; + if( data[0] == SEAM) { + isseam = 1; + data++; + } + + if( data[0] == PATTERN) { + data += 2 + data[1]*2; + } else { + if( data[0] == 0) steps = 1; + data += 2; + } + + if( prevsteps != -1) { + enumerate_ring_faces( basevertex, steps, + prevbase, prevsteps, h, + count_ret, process_face); + } + + if( isseam) basevertex += steps; + prevbase = basevertex; + basevertex += steps; + } + + prevsteps = steps; + } + } else if( data[0] == POLARQUADSTRIP || data[0] == QUADSTRIP) { + int v0=-1,v1=0,v2,v3; + if( data[0] == POLARQUADSTRIP) data += 2; + else data ++; + while(data[0] <= SEAM) { + if( data[0] == BACKREF) { + v2 = backrefs[data[1]]+data[2]; + } else { + v2 = basevertex; + basevertex++; + } + if( data[3] == BACKREF) { + v3 = backrefs[data[4]]+data[5]; + } else { + v3 = basevertex; + basevertex++; + } + data += 6; + if( v0 != -1) { + process_face( h, v0, v1, v3, v2); + if (count_ret) (*count_ret)++; + } + v0 = v2; + v1 = v3; + } + } else if( data[0] == VERTICES) { + data ++; + startofvertices = basevertex; + while( data[0] <= SEAM) { + if( data[0] == SETBACKREF) { + backrefs[data[1]] = basevertex; + data += 2; + continue; + } + data += 3; + basevertex ++; + } + } else if( data[0] == QUADS) { + data ++; + while( data[0] <= SEAM) { + process_face( h, + data[0] + startofvertices, + data[1] + startofvertices, + data[2] + startofvertices, + data[3] + startofvertices); + if (count_ret) (*count_ret)++; + data += 4; + } + } else if( data[0] == TRIANGLES) { + data ++; + while( data[0] <= SEAM) { + process_face( h, + data[0] + startofvertices, + data[1] + startofvertices, + data[2] + startofvertices, -1); + if (count_ret) (*count_ret)++; + data += 3; + } + } else { + break; + } + } +} + +static void +normalize( float v[3]) { + float d = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]); + + if( d == 0.0) { + /* The direction is undefined - normalize it anyway */ + v[0] = 1.0; + v[1] = 0.0; + v[2] = 0.0; + return; + } + + v[0] /= d; + v[1] /= d; + v[2] /= d; +} + +static void +normcrossprod( float v1[3], float v2[3], float out[3]) +{ + out[0] = v1[1] * v2[2] - v1[2] * v2[1]; + out[1] = v1[2] * v2[0] - v1[0] * v2[2]; + out[2] = v1[0] * v2[1] - v1[1] * v2[0]; + normalize( out); +} + +#define vectordiff(v1,v2,out) \ + ((out)[0] = (v1)[0] - (v2)[0], \ + (out)[1] = (v1)[1] - (v2)[1], \ + (out)[2] = (v1)[2] - (v2)[2]) + +#define vectoradd(v1,v2) \ + ((v1)[0] += (v2)[0], \ + (v1)[1] += (v2)[1], \ + (v1)[2] += (v2)[2]) + +static int numverts; +static float *vertices; +static float *normals; + +static void +count_vertex( void *dummy, double x, double y, double z) +{ + numverts++; +} + +static void +add_normal( void *dummy, int v1, int v2, int v3, int v4) +{ + float surfnormal[3],d1[3],d2[3]; + + if( v4 == -1) { + vectordiff( vertices + 3 * v2, vertices + 3 * v1, d1); + vectordiff( vertices + 3 * v3, vertices + 3 * v1, d2); + normcrossprod( d1, d2, surfnormal); + vectoradd( normals + 3 * v1, surfnormal); + vectoradd( normals + 3 * v2, surfnormal); + vectoradd( normals + 3 * v3, surfnormal); + } else { + vectordiff( vertices + 3 * v2, vertices + 3 * v1, d1); + vectordiff( vertices + 3 * v4, vertices + 3 * v1, d2); + normcrossprod( d1, d2, surfnormal); + vectoradd( normals + 3 * v1, surfnormal); + vectordiff( vertices + 3 * v3, vertices + 3 * v2, d1); + vectordiff( vertices + 3 * v1, vertices + 3 * v2, d2); + normcrossprod( d1, d2, surfnormal); + vectoradd( normals + 3 * v2, surfnormal); + vectordiff( vertices + 3 * v4, vertices + 3 * v3, d1); + vectordiff( vertices + 3 * v2, vertices + 3 * v3, d2); + normcrossprod( d1, d2, surfnormal); + vectoradd( normals + 3 * v3, surfnormal); + vectordiff( vertices + 3 * v1, vertices + 3 * v4, d1); + vectordiff( vertices + 3 * v3, vertices + 3 * v4, d2); + normcrossprod( d1, d2, surfnormal); + vectoradd( normals + 3 * v4, surfnormal); + } +} + +static void +collect_vertex( void *curvert, double x, double y, double z) +{ + (*(float**)curvert)[0] = x; + (*(float**)curvert)[1] = y; + (*(float**)curvert)[2] = z; + (*(float**)curvert) += 3; +} + +static void +draw_face( void *dummy, int v1, int v2, int v3, int v4) +{ + glBegin( v4 == -1 ? GL_TRIANGLES : GL_QUADS); + glNormal3f( normals[v1*3], normals[v1*3+1], normals[v1*3+2]); + glVertex3f( vertices[v1*3], vertices[v1*3+1], vertices[v1*3+2]); + glNormal3f( normals[v2*3], normals[v2*3+1], normals[v2*3+2]); + glVertex3f( vertices[v2*3], vertices[v2*3+1], vertices[v2*3+2]); + glNormal3f( normals[v3*3], normals[v3*3+1], normals[v3*3+2]); + glVertex3f( vertices[v3*3], vertices[v3*3+1], vertices[v3*3+2]); + if( v4 != -1) { + glNormal3f( normals[v4*3], normals[v4*3+1], normals[v4*3+2]); + glVertex3f( vertices[v4*3], vertices[v4*3+1], vertices[v4*3+2]); + } + glEnd(); +} + +static int +draw_piece( unsigned short *piece_data) +{ + int i; + float *curvert; + int count = 0; + + /* Count how many vertices this piece has */ + enumerate_vertices( piece_data, NULL, count_vertex); + + /* Allocate memory for the vertices and for the vertex normals */ + vertices = malloc( sizeof(float) * 3 * numverts); + normals = malloc( sizeof(float) * 3 * numverts); + if( !vertices || !normals) exit(1); + + /* Collect the vertex coordinates */ + curvert = vertices; + enumerate_vertices( piece_data, &curvert, collect_vertex); + + /* Zero out the normals */ + for( i=0; i < numverts * 3; i++) { + normals[i] = 0.0; + } + + /* Add up all the face normals at each vertex */ + enumerate_faces( piece_data, NULL, NULL, add_normal); + + /* Normalize the vertex normals */ + for( i=0; i < numverts; i++) { + normalize( normals + i * 3); + } + + /* Now draw the faces */ + enumerate_faces( piece_data, NULL, &count, draw_face); + + free( normals); + free( vertices); + + if (count <= 1) abort(); + return count; +} + +void chessmodels_gen_lists( int classic, int poly_count[PIECES]) { + + Bool queen_only_p = classic < 0; + if (classic < 0) classic = 0; + + piece_size = classic ? 0.095 / 100 : 0.3 / 8192; + + glGenLists (20); /* this is horrible! List numbers are hardcoded! */ + + glNewList(QUEEN, GL_COMPILE); + poly_count[QUEEN] = draw_piece( classic ? classic_queen_data : queen_data); + glEndList(); + + if (queen_only_p) return; + + glNewList(KING, GL_COMPILE); + poly_count[KING] = draw_piece( classic ? classic_king_data : king_data); + glEndList(); + + glNewList(BISHOP, GL_COMPILE); + poly_count[BISHOP] = draw_piece( classic ? classic_bishop_data : bishop_data); + glEndList(); + + glNewList(KNIGHT, GL_COMPILE); + poly_count[KNIGHT] = draw_piece( classic ? classic_knight_data : knight_data); + glEndList(); + + glNewList(ROOK, GL_COMPILE); + poly_count[ROOK] = draw_piece( classic ? classic_rook_data : rook_data); + glEndList(); + + glNewList(PAWN, GL_COMPILE); + poly_count[PAWN] = draw_piece( classic ? classic_pawn_data : pawn_data); + glEndList(); +} diff --git a/hacks/glx/chessmodels.h b/hacks/glx/chessmodels.h new file mode 100644 index 0000000..6e41e22 --- /dev/null +++ b/hacks/glx/chessmodels.h @@ -0,0 +1,44 @@ +/* + * models for the xss chess screensavers + * hacked from: + * + * glChess - A 3D chess interface + * + * Copyright (C) 2006 John-Paul Gignac + * + * Copyright (C) 2002 Robert Ancell + * Michael Duelli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* ugggggggly */ +#define PIECES 7 +#define NONE 0 +#define KING 1 +#define QUEEN 2 +#define BISHOP 3 +#define KNIGHT 4 +#define ROOK 5 +#define PAWN 6 +#define BKING 8 +#define BQUEEN 9 +#define BBISHOP 10 +#define BKNIGHT 11 +#define BROOK 12 +#define BPAWN 13 + +extern void chessmodels_gen_lists( int classic, int poly_count[PIECES]); + diff --git a/hacks/glx/circuit.c b/hacks/glx/circuit.c new file mode 100644 index 0000000..744e4b6 --- /dev/null +++ b/hacks/glx/circuit.c @@ -0,0 +1,2094 @@ +/* + * circuit - Random electronic components floating around + * + * version 1.4 + * + * Since version 1.1: added to-220 transistor, added fuse + * Since version 1.2: random display digits, LED improvements (flickering) + * Since version 1.3: ICs look better, font textures, improved normals to + * eliminate segmenting on curved surfaces, speedups + * Since version 1.4: Added RCA connector, 3.5mm connector, slide switch, + * surface mount, to-92 markings. Fixed ~5min crash. + * Better LED illumination. Other minor changes. + * + * Copyright (C) 2001-2015 Ben Buxton (bb@cactii.net) + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* Written over a few days in a (successful) bid to learn GL coding + * + * -seven option is dedicated to all the Slarkeners + * + * This hack uses lookup tables for sin, cos and tan - it can do a lot + */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + "*componentFont: -*-courier-bold-r-normal-*-*-140-*-*-*-*-*-*" + +# define release_circuit 0 +# define circuit_handle_event xlockmore_no_events +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#define DEF_SPIN "True" +#define DEF_SEVEN "False" +#define DEF_PARTS "10" +#define DEF_ROTATESPEED "1" +#define DEF_LIGHT "True" + +/* lifted from lament.c */ +#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n)))) +#define RANDSIGN() ((random() & 1) ? 1 : -1) + + +#ifdef USE_GL + +#include "texfont.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +static int maxparts; +static int rotatespeed; +static int spin; +static int uselight; +static int seven; + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +static XrmOptionDescRec opts[] = { + {"-parts", ".circuit.parts", XrmoptionSepArg, 0 }, + {"-rotate-speed", ".circuit.rotatespeed", XrmoptionSepArg, 0 }, + {"+spin", ".circuit.spin", XrmoptionNoArg, "false" }, + {"-spin", ".circuit.spin", XrmoptionNoArg, "true" }, + {"+light", ".circuit.light", XrmoptionNoArg, "false" }, + {"-light", ".circuit.light", XrmoptionNoArg, "true" }, + {"+seven", ".circuit.seven", XrmoptionNoArg, "false" }, + {"-seven", ".circuit.seven", XrmoptionNoArg, "true" }, +}; + +static argtype vars[] = { + {&maxparts, "parts", "Parts", DEF_PARTS, t_Int}, + {&rotatespeed, "rotatespeed", "Rotatespeed", DEF_ROTATESPEED, t_Int}, + {&spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&uselight, "light", "Light", DEF_LIGHT, t_Bool}, + {&seven, "seven", "Seven", DEF_SEVEN, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt circuit_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct circuit_description = +{"circuit", "init_circuit", "draw_circuit", NULL, + "draw_circuit", "init_circuit", "free_circuit", &circuit_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Flying electronic components", 0, NULL}; + +#endif + +#define MAX_COMPONENTS 400 +#define MOVE_MULT 0.02 + +static float f_rand(void) +{ + return ((float)RAND(10000)/(float)10000); +} + +#define RAND_RANGE(min, max) ((min) + (max - min) * f_rand()) + +/* Represents a band on a resistor/diode/etc */ +typedef struct { + float pos; /* relative position from start/previous band */ + GLfloat r, g, b; /* colour of the band */ + float len; /* length as a fraction of total length */ +} Band; + +typedef struct { + Band *b1, *b2, *b3, *b4; /* bands */ + int b[4]; +} Resistor; + +typedef struct { + Band *band; + GLfloat r, g, b; /* body colour */ +} Diode; + +static const char * const transistortypes[] = { + "TIP2955", + "TIP32C", + "LM 350T", + "IRF730", + "ULN2577", + "7805T", + "7912T", + "TIP120", + "2N6401", + "BD239", + "2SC1590", + "MRF485", + "SC141D" +}; + +static const char * const to92types[] = { + "C\n548", + "C\n848", + "74\nL05", + "C\n858", + "BC\n212L", + "BC\n640", + "BC\n337", + "BC\n338", + "S817", + "78\nL12", + "TL\n431", + "LM\n35DZ", +}; + +static const char * const smctypes[] = { + "1M-", + "1K", + "1F", + "B10", + "S14", + "Q3", + "4A" +}; + +typedef struct { + int type; /* package type. 0 = to-92, 1 = to-220 */ + const char *text; +} Transistor; + +typedef struct { + GLfloat r,g,b; /* LED colour */ + int light; /* are we the light source? */ +} LED; + +typedef struct { + int type; /* 0 = electro, 1 = ceramic */ + float width; /* width of an electro/ceramic */ + float length; /* length of an electro */ +} Capacitor; + +/* 3.5 mm plug */ +typedef struct { + int blah; +} ThreeFive; + +/* slide switch */ +typedef struct { + int position; +} Switch; + +typedef struct { + int pins; + const char *val; +} ICTypes; + +static const ICTypes ictypes[] = { + {8, "NE 555"}, + {8, "LM 386N"}, + {8, "ADC0831"}, + {8, "LM 383T"}, + {8, "TL071"}, + {8, "LM 311"}, + {8, "LM393"}, + {8, "LM 3909"}, + + {14, "LM 380N"}, + {14, "NE 556"}, + {14, "TL074"}, + {14, "LM324"}, + {14, "LM339"}, + {14, "MC1488"}, + {14, "MC1489"}, + {14, "LM1877-9"}, + {14, "4011"}, + {14, "4017"}, + {14, "4013"}, + {14, "4024"}, + {14, "4066"}, + + {16, "4076"}, + {16, "4049"}, + {16, "4094"}, + {16, "4043"}, + {16, "4510"}, + {16, "4511"}, + {16, "4035"}, + {16, "RS232"}, + {16, "MC1800"}, + {16, "ULN2081"}, + {16, "UDN2953"}, + + {24, "ISD1416P"}, + {24, "4515"}, + {24, "TMS6264L"}, + {24, "MC146818"} +}; + +typedef struct { + int type; /* 0 = DIL, 1 = flat square */ + int pins; + char text[100]; +} IC; + +/* 7 segment display */ + +typedef struct { + int value; /* displayed number */ +} Disp; + +typedef struct { + GLfloat l, w; +} Fuse; + +typedef struct { + GLfloat l, w; + int col; +} RCA; + +typedef struct { + GLfloat x, y, z; /* current co-ordinates */ + GLfloat dx, dy, dz; /* current direction */ + GLfloat rotx, roty, rotz; /* rotation vector */ + GLfloat drot; /* rotation velocity (degrees per frame) */ + int norm; /* Normalize this component (for shine) */ + int rdeg; /* current rotation degrees */ + int angle; /* angle about the z axis */ + int alpha; /* 0 if not a transparent component */ + int type; /* 0 = resistor, 1 = diode, 2 = transistor, 3 = LED, 4 = cap, 5=IC, + 6 = 7 seg disp */ + void * c; /* pointer to the component */ +} Component; + +/* standard colour codes */ + +static const GLfloat colorcodes [12][3] = { + {0.0,0.0,0.0}, /* black 0 */ + {0.49,0.25,0.08}, /* brown 1 */ + {1.0,0.0,0.0}, /* red 2 */ + {1.0,0.5,0.0}, /* orange 3 */ + {1.0,1.0,0.0}, /* yellow 4 */ + {0.0,1.0,0.0}, /* green 5 */ + {0.0,0.5,1.0}, /* blue 6 */ + {0.7,0.2,1.0}, /* violet 7 */ + {0.5,0.5,0.5}, /* grey 8 */ + {1.0,1.0,1.0}, /* white 9 */ + {0.66,0.56,0.2}, /* gold 10 */ + {0.8,0.8,0.8}, /* silver 11 */ +}; + +/* base values for components - we can multiply by 0 - 1M */ +static const int values [9][2] = { + {1,0}, + {2,2}, + {3,3}, + {4,7}, + {5,6}, + {6,8}, + {7,5}, + {8,2}, + {9,1} +}; + +typedef struct { + GLXContext *glx_context; + Window window; + + int XMAX, YMAX; + int win_w, win_h; + + /* one lucky led gets to be a light source , unless -no-light*/ + int light; + int lighton; + + /* stores refs to textures */ + int s_refs[50]; + + GLfloat viewer[3]; + GLfloat lightpos[4]; + + float sin_table[720]; + float cos_table[720]; + float tan_table[720]; + + Component *components[MAX_COMPONENTS]; + int band_list[12]; + int band_list_polys[12]; + + GLfloat grid_col[3], grid_col2[3]; + + int display_i; + GLfloat rotate_angle; + + texture_font_data *font; + char *font_strings[50]; /* max of 40 textures */ + int font_w[50], font_h[50]; + int font_init; + + GLfloat draw_sx, draw_sy; /* bright spot co-ords */ + int draw_sdir; /* 0 = left-right, 1 = right-left, 2 = up->dn, 3 = dn->up */ + int draw_s; /* if spot is enabled */ + float draw_ds; /* speed of spot */ + +} Circuit; + +static Circuit *circuit = NULL; + + +static int DrawResistor(Circuit *, Resistor *); +static int DrawDiode(Circuit *, Diode *); +static int DrawTransistor(Circuit *, Transistor *); +static int DrawLED(Circuit *, LED *); +static int DrawIC(Circuit *, IC *); +static int DrawCapacitor(Circuit *, Capacitor *); +static int DrawDisp(Circuit *, Disp *); +static int DrawFuse(Circuit *, Fuse *); +static int DrawRCA(Circuit *, RCA *); +static int DrawThreeFive(Circuit *, ThreeFive *); +static int DrawSwitch(Circuit *, Switch *); + +static void reorder(Component *[]); +static int circle(Circuit *, float, int,int); +static int bandedCylinder(Circuit *, + float, float , GLfloat, GLfloat , GLfloat, + Band **, int); +static int Rect(GLfloat , GLfloat , GLfloat, GLfloat , GLfloat ,GLfloat); +static int ICLeg(GLfloat, GLfloat, GLfloat, int); +static int HoledRectangle(Circuit *ci, + GLfloat, GLfloat, GLfloat, GLfloat, int); +static Resistor *NewResistor(void); +static Diode *NewDiode(void); +static Transistor *NewTransistor(ModeInfo *); +static LED * NewLED(Circuit *); +static Capacitor *NewCapacitor(Circuit *); +static IC* NewIC(ModeInfo *); +static Disp* NewDisp(Circuit *); +static Fuse *NewFuse(Circuit *); +static RCA *NewRCA(Circuit *); +static ThreeFive *NewThreeFive(Circuit *); +static Switch *NewSwitch(Circuit *); + +/* we use trig tables to speed things up - 200 calls to sin() + in one frame can be a bit harsh.. +*/ + +static void make_tables(Circuit *ci) +{ +int i; +float f; + + f = 360 / (M_PI * 2); + for (i = 0 ; i < 720 ; i++) { + ci->sin_table[i] = sin(i/f); + } + for (i = 0 ; i < 720 ; i++) { + ci->cos_table[i] = cos(i/f); + } + for (i = 0 ; i < 720 ; i++) { + ci->tan_table[i] = tan(i/f); + } +} + + +static int createCylinder (Circuit *ci, + float length, float radius, int endcaps, int half) +{ + int polys = 0; + int a; /* current angle around cylinder */ + int angle, norm; + float z1, y1, z2, y2,ex; + int nsegs; + + glPushMatrix(); + nsegs = radius*MAX(ci->win_w, ci->win_h)/20; + nsegs = MAX(nsegs, 4); + if (nsegs % 2) + nsegs += 1; + angle = (half) ? (180 - 90/nsegs) : 374; + z1 = radius; y1 = 0; + glBegin(GL_QUADS); + for (a = 0 ; a <= angle ; a+= angle/nsegs) { + y2=radius*(float)ci->sin_table[(int)a]; + z2=radius*(float)ci->cos_table[(int)a]; + glNormal3f(0, y1, z1); + glVertex3f(0,y1,z1); + glVertex3f(length,y1,z1); + glNormal3f(0, y2, z2); + glVertex3f(length,y2,z2); + glVertex3f(0,y2,z2); + polys++; + z1=z2; + y1=y2; + } + glEnd(); + if (half) { + glBegin(GL_POLYGON); + glNormal3f(0, 1, 0); + glVertex3f(0, 0, radius); + glVertex3f(length, 0, radius); + glVertex3f(length, 0, 0 - radius); + glVertex3f(0, 0, 0 - radius); + polys++; + glEnd(); + } + if (endcaps) { + for(ex = 0 ; ex <= length ; ex += length) { + z1 = radius; y1 = 0; + norm = (ex == length) ? 1 : -1; + glBegin(GL_TRIANGLES); + glNormal3f(norm, 0, 0); + for (a = 0 ; a <= angle ; a+= angle/nsegs) { + y2=radius*(float)ci->sin_table[(int)a]; + z2=radius*(float)ci->cos_table[(int)a]; + glVertex3f(ex,0, 0); + glVertex3f(ex,y1,z1); + glVertex3f(ex,y2,z2); + polys++; + z1=z2; + y1=y2; + } + glEnd(); + } + } + glPopMatrix(); + return polys; +} + +static int circle(Circuit *ci, float radius, int segments, int half) +{ + int polys = 0; + float x1 = 0, x2 = 0; + float y1 = 0, y2 = 0; + int i, t, s; + + if (half) { + t = 270; s = 90; + x1 = radius, y1 = 0; + } else { + t = 360, s = 0; + } + glBegin(GL_TRIANGLES); + glNormal3f(1, 0, 0); + for(i=s;i<=t;i+=10) + { + float angle=i; + x2=radius*(float)ci->cos_table[(int)angle]; + y2=radius*(float)ci->sin_table[(int)angle]; + glVertex3f(0,0,0); + glVertex3f(0,y1,x1); + glVertex3f(0,y2,x2); + polys++; + x1=x2; + y1=y2; + } + glEnd(); + return polys; +} + +static int wire(Circuit *ci, float len) +{ + int polys = 0; + GLfloat col[] = {0.3, 0.3, 0.3, 1.0}; + GLfloat spec[] = {0.9, 0.9, 0.9, 1.0}; + GLfloat nospec[] = {0.4, 0.4, 0.4, 1.0}; + GLfloat shin = 30; + int n; + + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glMaterialfv(GL_FRONT, GL_SHININESS, &shin); + n = glIsEnabled(GL_NORMALIZE); + if (!n) glEnable(GL_NORMALIZE); + polys += createCylinder(ci, len, 0.05, 1, 0); + if (!n) glDisable(GL_NORMALIZE); + glMaterialfv(GL_FRONT, GL_SPECULAR, nospec); + return polys; +} + +static int sphere(Circuit *ci, GLfloat r, float stacks, float slices, + int startstack, int endstack, int startslice, + int endslice) +{ + int polys = 0; + GLfloat d, d1, dr, dr1, Dr, Dr1, D, D1, z1, z2, y1, y2, Y1, Z1, Y2, Z2; + int a, a1, b, b1, c0, c1; + GLfloat step, sstep; + + step = 180/stacks; + sstep = 360/slices; + a1 = startstack * step; + b1 = startslice * sstep; + y1 = z1 = Y1 = Z1 = 0; + c0 = (endslice / slices) * 360; + c1 = (endstack/stacks)*180; + glBegin(GL_QUADS); + for (a = startstack * step ; a <= c1 ; a+= step) { + d=ci->sin_table[a]; + d1=ci->sin_table[a1]; + D=ci->cos_table[a]; + D1=ci->cos_table[a1]; + dr = d * r; + dr1 = d1 * r; + Dr = D * r; + Dr1 = D1 * r; + for (b = b1 ; b <= c0 ; b+= sstep) { + y2=dr*ci->sin_table[b]; + z2=dr*ci->cos_table[b]; + Y2=dr1*ci->sin_table[b]; + Z2=dr1*ci->cos_table[b]; + glNormal3f(Dr, y1, z1); + glVertex3f(Dr,y1,z1); + glNormal3f(Dr, y2, z2); + glVertex3f(Dr,y2,z2); + glNormal3f(Dr1, Y2, Z2); + glVertex3f(Dr1,Y2,Z2); + glNormal3f(Dr1, Y1, Z1); + glVertex3f(Dr1,Y1,Z1); + polys++; + z1=z2; + y1=y2; + Z1=Z2; + Y1=Y2; + } + a1 = a; + } + glEnd(); + return polys; +} + +static int DrawComponent(Circuit *ci, Component *c, unsigned long *polysP) +{ + int polys = *polysP; + int ret = 0; /* return 1 if component is freed */ + + glPushMatrix(); + glTranslatef(c->x, c->y, c->z); + if (c->angle > 0) { + glRotatef(c->angle, c->rotx, c->roty, c->rotz); + } + if (spin) { + glRotatef(c->rdeg, c->rotx, c->roty, c->rotz); + c->rdeg += c->drot; + } + + if (c->norm) + glEnable(GL_NORMALIZE); + else + glDisable(GL_NORMALIZE); + + /* call object draw routine here */ + if (c->type == 0) { + polys += DrawResistor(ci, c->c); + } else if (c->type == 1) { + polys += DrawDiode(ci, c->c); + } else if (c->type == 2) { + polys += DrawTransistor(ci, c->c); + } else if (c->type == 3) { + if (((LED *)c->c)->light && ci->light) { + GLfloat lp[] = {0.1, 0, 0, 1}; + glEnable(GL_LIGHT1); + glLightfv(GL_LIGHT1, GL_POSITION, lp); + } + polys += DrawLED(ci, c->c); + } else if (c->type == 4) { + polys += DrawCapacitor(ci, c->c); + } else if (c->type == 5) { + polys += DrawIC(ci, c->c); + } else if (c->type == 6) { + polys += DrawDisp(ci, c->c); + } else if (c->type == 7) { + polys += DrawFuse(ci, c->c); + } else if (c->type == 8) { + polys += DrawRCA(ci, c->c); + } else if (c->type == 9) { + polys += DrawThreeFive(ci, c->c); + } else if (c->type == 10) { + polys += DrawSwitch(ci, c->c); + } + c->x += c->dx * MOVE_MULT; + c->y += c->dy * MOVE_MULT; + if (c->x > ci->XMAX/2 || c->x < 0 - ci->XMAX/2 || + c->y > ci->YMAX/2 || c->y < 0 - ci->YMAX/2) { + if (c->type == 3 && ((LED *)c->c)->light && ci->light) { + glDisable(GL_LIGHT1); + ci->light = 0; ci->lighton = 0; + } + if (c->type == 1) + free(((Diode *)c->c)->band); /* remember to free diode band */ + free(c->c); + ret = 1; + } + + glPopMatrix(); + glDisable(GL_NORMALIZE); + *polysP = polys; + return ret; +} + +/* draw a resistor */ + +static int DrawResistor(Circuit *ci, Resistor *r) +{ + int polys = 0; + int i; + GLfloat col[] = {0.74, 0.62, 0.46, 1.0}; + GLfloat spec[] = {0.8, 0.8, 0.8, 1.0}; + GLfloat shine = 30; + + glTranslatef(-4, 0, 0); + polys += wire(ci, 3); + glTranslatef(3, 0, 0); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glMaterialfv(GL_FRONT, GL_SHININESS, &shine); + polys += createCylinder(ci, 1.8, 0.4, 1, 0); + glPushMatrix(); + for (i = 0 ; i < 4 ; i++) { + glTranslatef(0.35, 0, 0); + glCallList(ci->band_list[r->b[i]]); + polys += ci->band_list_polys[r->b[i]]; + } + glPopMatrix(); + glTranslatef(1.8, 0, 0); + polys += wire(ci, 3); + return polys; +} + +static int DrawRCA(Circuit *ci, RCA *rca) +{ + int polys = 0; + GLfloat col[] = {0.6, 0.6, 0.6, 1.0}; /* metal */ + GLfloat red[] = {1.0, 0.0, 0.0, 1.0}; /* red */ + GLfloat white[] = {1.0, 1.0, 1.0, 1.0}; /* white */ + GLfloat spec[] = {1, 1, 1, 1}; /* glass */ + + glPushMatrix(); + glTranslatef(0.3, 0, 0); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMateriali(GL_FRONT, GL_SHININESS, 40); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + polys += createCylinder(ci, 0.7, 0.45, 0, 0); + glTranslatef(0.4, 0, 0); + polys += createCylinder(ci, 0.9, 0.15, 1, 0); + glTranslatef(-1.9, 0, 0); + glMateriali(GL_FRONT, GL_SHININESS, 20); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, rca->col ? white : red); + polys += createCylinder(ci, 1.5, 0.6, 1, 0); + glTranslatef(-0.9, 0, 0); + polys += createCylinder(ci, 0.9, 0.25, 0, 0); + glTranslatef(0.1, 0, 0); + polys += createCylinder(ci, 0.2, 0.3, 0, 0); + glTranslatef(0.3, 0, 0); + polys += createCylinder(ci, 0.2, 0.3, 1, 0); + glTranslatef(0.3, 0, 0); + polys += createCylinder(ci, 0.2, 0.3, 1, 0); + glPopMatrix(); + return polys; +} + +static int DrawSwitch(Circuit *ci, Switch *f) +{ + int polys = 0; + GLfloat col[] = {0.6, 0.6, 0.6, 0}; /* metal */ + GLfloat dark[] = {0.1, 0.1, 0.1, 1.0}; /* dark */ + GLfloat brown[] = {0.69, 0.32, 0, 1.0}; /* brown */ + GLfloat spec[] = {0.9, 0.9, 0.9, 1}; /* shiny */ + + glPushMatrix(); + glMaterialfv(GL_FRONT, GL_DIFFUSE, col); + glMaterialfv(GL_FRONT, GL_AMBIENT, dark); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glMateriali(GL_FRONT, GL_SHININESS, 90); + polys += Rect(-0.25, 0, 0, 1.5, 0.5, 0.75); +/* polys += Rect(-0.5, 0.5, 0, 2, 0.1, 0.75); */ + glPushMatrix(); + glRotatef(90, 1, 0, 0); + glTranslatef(-0.5, -0.4, -0.4); + polys += HoledRectangle(ci, 0.5, 0.75, 0.1, 0.15, 8); + glTranslatef(2, 0, 0); + polys += HoledRectangle(ci, 0.5, 0.75, 0.1, 0.15, 8); + glPopMatrix(); + polys += Rect(0.1, -0.4, -0.25, 0.1, 0.4, 0.05); + polys += Rect(0.5, -0.4, -0.25, 0.1, 0.4, 0.05); + polys += Rect(0.9, -0.4, -0.25, 0.1, 0.4, 0.05); + polys += Rect(0.1, -0.4, -0.5, 0.1, 0.4, 0.05); + polys += Rect(0.5, -0.4, -0.5, 0.1, 0.4, 0.05); + polys += Rect(0.9, -0.4, -0.5, 0.1, 0.4, 0.05); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, dark); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + polys += Rect(0, 0.5, -0.1, 1, 0.05, 0.5); + polys += Rect(0, 0.6, -0.1, 0.5, 0.6, 0.5); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, brown); + polys += Rect(-0.2, -0.01, -0.1, 1.4, 0.1, 0.55); + glPopMatrix(); + return polys; +} + + +static int DrawFuse(Circuit *ci, Fuse *f) +{ + int polys = 0; + GLfloat col[] = {0.5, 0.5, 0.5, 1.0}; /* endcaps */ + GLfloat glass[] = {0.4, 0.4, 0.4, 0.3}; /* glass */ + GLfloat spec[] = {1, 1, 1, 1}; /* glass */ + + glPushMatrix(); + glTranslatef(-1.8, 0, 0); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glMateriali(GL_FRONT, GL_SHININESS, 40); + polys += createCylinder(ci, 0.8, 0.45, 1, 0); + glTranslatef(0.8, 0, 0); + glEnable(GL_BLEND); + glDepthMask(GL_FALSE); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, glass); + glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 40); + polys += createCylinder(ci, 2, 0.4, 0, 0); + polys += createCylinder(ci, 2, 0.3, 0, 0); + glDisable(GL_BLEND); + glDepthMask(GL_TRUE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMateriali(GL_FRONT, GL_SHININESS, 40); + glBegin(GL_LINES); + glVertex3f(0, 0, 0); + glVertex3f(2, 0. ,0); + glEnd(); + glTranslatef(2, 0, 0); + polys += createCylinder(ci, 0.8, 0.45, 1, 0); + glPopMatrix(); + return polys; +} + + +static int DrawCapacitor(Circuit *ci, Capacitor *c) +{ + int polys = 0; + GLfloat col[] = {0, 0, 0, 0}; + GLfloat spec[] = {0.8, 0.8, 0.8, 0}; + GLfloat brown[] = {0.84, 0.5, 0}; + GLfloat shine = 40; + + glPushMatrix(); + if (c->type) { + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, brown); + polys += sphere(ci, c->width, 15, 15, 0, 4 ,0, 15); + glTranslatef(1.35*c->width, 0, 0); + polys += sphere(ci, c->width, 15, 15, 11, 15, 0, 15); + glRotatef(90, 0, 0, 1); + glTranslatef(0, 0.7*c->width, 0.3*c->width); + polys += wire(ci, 3*c->width); + glTranslatef(0, 0, -0.6*c->width); + polys += wire(ci, 3*c->width); + } else { + glTranslatef(0-c->length*2, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, &shine); + glBegin(GL_POLYGON); + glVertex3f(0, 0.82*c->width, -0.1); + glVertex3f(3*c->length, 0.82*c->width, -0.1); + glVertex3f(3*c->length, 0.82*c->width, 0.1); + glVertex3f(0, 0.82*c->width, 0.1); + glEnd(); + col[0] = 0.0; + col[1] = 0.2; + col[2] = 0.9; + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col); + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0, 1.0); + polys += createCylinder(ci, 3.0*c->length, 0.8*c->width, 1, 0); + glDisable(GL_POLYGON_OFFSET_FILL); + col[0] = 0.7; + col[1] = 0.7; + col[2] = 0.7; + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col); + polys += circle(ci, 0.6*c->width, 30, 0); + col[0] = 0; + col[1] = 0; + col[2] = 0; + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col); + glTranslatef(3.0*c->length, 0.0, 0); + polys += circle(ci, 0.6*c->width, 30, 0); + glTranslatef(0, 0.4*c->width, 0); + polys += wire(ci, 3*c->length); + glTranslatef(0.0, -0.8*c->width, 0); + polys += wire(ci, 3.3*c->length); + } + glPopMatrix(); + return polys; +} + +static int DrawLED(Circuit *ci, LED *l) +{ + int polys = 0; + GLfloat col[] = {0, 0, 0, 0.6}; + GLfloat black[] = {0, 0, 0, 0.6}; + + col[0] = l->r; col[1] = l->g; col[2] = l->b; + if (l->light && ci->light) { + GLfloat dir[] = {-1, 0, 0}; + glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, dir); + if (!ci->lighton) { + glLightfv(GL_LIGHT1, GL_SPECULAR, col); + glLightfv(GL_LIGHT1, GL_AMBIENT, black); + col[0] /= 1.5; col[1] /= 1.5; col[2] /= 1.5; + glLightfv(GL_LIGHT1, GL_DIFFUSE, col); + glLighti(GL_LIGHT1, GL_SPOT_CUTOFF, (GLint) 90); + glLighti(GL_LIGHT1, GL_CONSTANT_ATTENUATION, (GLfloat)1); + glLighti(GL_LIGHT1, GL_LINEAR_ATTENUATION, (GLfloat)0); + glLighti(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, (GLfloat)0); + glLighti(GL_LIGHT1, GL_SPOT_EXPONENT, (GLint) 20); + ci->lighton = 1; + } + } + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col); + /* no transparency when LED is lit */ + if (!l->light) { + glEnable(GL_BLEND); + glDepthMask(GL_FALSE); + glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); + } + glTranslatef(-0.9, 0, 0); + polys += createCylinder(ci, 1.2, 0.3, 0, 0); + if (l->light && ci->light) { + glDisable(GL_LIGHTING); + glColor3fv(col); + } + polys += sphere(ci, 0.3, 7, 7, 3, 7, 0, 7); + if (l->light && ci->light) { + glEnable(GL_LIGHTING); + } else { + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + } + + glTranslatef(1.2, 0, 0); + polys += createCylinder(ci, 0.1, 0.38, 1, 0); + glTranslatef(-0.3, 0.15, 0); + polys += wire(ci, 3); + glTranslatef(0, -0.3, 0); + polys += wire(ci, 3.3); + if (random() % 50 == 25) { + if (l->light) { + l->light = 0; ci->light = 0; ci->lighton = 0; + glDisable(GL_LIGHT1); + } else if (!ci->light) { + l->light = 1; + ci->light = 1; + } + } + return polys; +} + + +static int DrawThreeFive(Circuit *ci, ThreeFive *d) +{ + int polys = 0; + GLfloat shine = 40; + GLfloat const dark[] = {0.3, 0.3, 0.3, 0}; + GLfloat const light[] = {0.6, 0.6, 0.6, 0}; + GLfloat const cream[] = {0.8, 0.8, 0.6, 0}; + GLfloat const spec[] = {0.7, 0.7, 0.7, 0}; + + glPushMatrix(); + glMaterialfv(GL_FRONT, GL_SHININESS, &shine); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cream); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + + glTranslatef(-2.0, 0, 0); + polys += createCylinder(ci, 0.7, 0.2, 0, 0); + glTranslatef(0.7, 0, 0); + polys += createCylinder(ci, 1.3, 0.4, 1, 0); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, light); + glTranslatef(1.3, 0, 0); + polys += createCylinder(ci, 1.3, 0.2, 0, 0); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, dark); + glTranslatef(0.65, 0, 0); + polys += createCylinder(ci, 0.15, 0.21, 0, 0); + glTranslatef(0.3, 0, 0); + polys += createCylinder(ci, 0.15, 0.21, 0, 0); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, light); + glTranslatef(0.4, 0, 0); + polys += sphere(ci, 0.23, 7, 7, 0, 5, 0, 7); + + glPopMatrix(); + return polys; +} + +static int DrawDiode(Circuit *ci, Diode *d) +{ + int polys = 0; + GLfloat shine = 40; + GLfloat col[] = {0.3, 0.3, 0.3, 0}; + GLfloat spec[] = {0.7, 0.7, 0.7, 0}; + + glPushMatrix(); + glMaterialfv(GL_FRONT, GL_SHININESS, &shine); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glTranslatef(-4, 0, 0); + polys += wire(ci, 3); + glTranslatef(3, 0, 0); + polys += bandedCylinder(ci, 0.3, 1.5, d->r, d->g, d->b, &(d->band), 1); + glTranslatef(1.5, 0, 0); + polys += wire(ci, 3); + glPopMatrix(); + return polys; +} + +static int Rect(GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h, + GLfloat t) +{ + int polys = 0; + GLfloat yh; + GLfloat xw; + GLfloat zt; + + yh = y+h; xw = x+w; zt = z - t; + + glBegin(GL_QUADS); /* front */ + glNormal3f(0, 0, 1); + glVertex3f(x, y, z); + glVertex3f(x, yh, z); + glVertex3f(xw, yh, z); + glVertex3f(xw, y, z); + polys++; + /* back */ + glNormal3f(0, 0, -1); + glVertex3f(x, y, zt); + glVertex3f(x, yh, zt); + glVertex3f(xw, yh, zt); + glVertex3f(xw, y, zt); + polys++; + /* top */ + glNormal3f(0, 1, 0); + glVertex3f(x, yh, z); + glVertex3f(x, yh, zt); + glVertex3f(xw, yh, zt); + glVertex3f(xw, yh, z); + polys++; + /* bottom */ + glNormal3f(0, -1, 0); + glVertex3f(x, y, z); + glVertex3f(x, y, zt); + glVertex3f(xw, y, zt); + glVertex3f(xw, y, z); + polys++; + /* left */ + glNormal3f(-1, 0, 0); + glVertex3f(x, y, z); + glVertex3f(x, y, zt); + glVertex3f(x, yh, zt); + glVertex3f(x, yh, z); + polys++; + /* right */ + glNormal3f(1, 0, 0); + glVertex3f(xw, y, z); + glVertex3f(xw, y, zt); + glVertex3f(xw, yh, zt); + glVertex3f(xw, yh, z); + polys++; + glEnd(); + return polys; +} + +/* IC pins */ + +static int ICLeg(GLfloat x, GLfloat y, GLfloat z, int dir) +{ + int polys = 0; + if (dir) { + polys += Rect(x-0.1, y, z, 0.1, 0.1, 0.02); + polys += Rect(x-0.1, y, z, 0.02, 0.1, 0.1); + polys += Rect(x-0.1, y+0.03, z-0.1, 0.02, 0.05, 0.3); + } else { + polys += Rect(x, y, z, 0.1, 0.1, 0.02); + polys += Rect(x+0.8*0.1, y, z, 0.02, 0.1, 0.1); + polys += Rect(x+0.8*0.1, y+0.03, z-0.1, 0.02, 0.05, 0.3); + } + return polys; +} + + +static int DrawIC(Circuit *ci, IC *c) +{ + int polys = 0; + GLfloat w, h, d; + int z; + GLfloat col[] = {0.1, 0.1, 0.1, 0}; + GLfloat col2[] = {0.2, 0.2, 0.2, 0}; + GLfloat spec[] = {0.6, 0.6, 0.6, 0}; + GLfloat shine = 40; + GLfloat lspec[] = {0.6, 0.6, 0.6, 0}; + GLfloat lcol[] = {0.4, 0.4, 0.4, 0}; + GLfloat lshine = 40; + + glPushMatrix(); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glMaterialfv(GL_FRONT, GL_SHININESS, &shine); + switch(c->pins) { + case 8: + w = 1.0; h = 1.5; + break; + case 14: + w = 1.0; h = 3; + break; + case 16: + w = 1.0; h = 3; + break; + case 24: + default: + w = 1.5; h = 3.5; + break; + } + w = w/2; h = h/2; + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0, 1.0); + glBegin(GL_QUADS); + glNormal3f(0, 0, 1); + glVertex3f(w, h, 0.1); + glVertex3f(w, -h, 0.1); + glVertex3f(-w, -h, 0.1); + glVertex3f(-w, h, 0.1); + polys++; + glNormal3f(0, 0, -1); + glVertex3f(w, h, -0.1); + glVertex3f(w, -h, -0.1); + glVertex3f(-w, -h, -0.1); + glVertex3f(-w, h, -0.1); + polys++; + glNormal3f(1, 0, 0); + glVertex3f(w, h, -0.1); + glVertex3f(w, -h, -0.1); + glVertex3f(w, -h, 0.1); + glVertex3f(w, h, 0.1); + polys++; + glNormal3f(0, -1, 0); + glVertex3f(w, -h, -0.1); + glVertex3f(w, -h, 0.1); + glVertex3f(-w, -h, 0.1); + glVertex3f(-w, -h, -0.1); + polys++; + glNormal3f(-1, 0, 0); + glVertex3f(-w, h, -0.1); + glVertex3f(-w, h, 0.1); + glVertex3f(-w, -h, 0.1); + glVertex3f(-w, -h, -0.1); + polys++; + glNormal3f(0, -1, 0); + glVertex3f(-w, h, -0.1); + glVertex3f(w, h, -0.1); + glVertex3f(w, h, 0.1); + glVertex3f(-w, h, 0.1); + polys++; + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + + { + GLfloat texfg[] = {0.7, 0.7, 0.7, 1.0}; + GLfloat s = 0.015; + XCharStruct e; + texture_string_metrics (ci->font, c->text, &e, 0, 0); + + glPushMatrix(); + glTranslatef (0, 0, 0.1); + glRotatef (90, 0, 0, 1); + glScalef (s, s, s); + glTranslatef (-w/2, 0, 0); + glColor4fv (texfg); + print_texture_string (ci->font, c->text); + glPopMatrix(); + } + + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + d = (h*2-0.1) / c->pins; + d*=2; + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, lcol); + glMaterialfv(GL_FRONT, GL_SPECULAR, lspec); + glMaterialfv(GL_FRONT, GL_SHININESS, &lshine); + for (z = 0 ; z < c->pins/2 ; z++) { + polys += ICLeg(w, -h + z*d + d/2, 0, 0); + } + for (z = 0 ; z < c->pins/2 ; z++) { + polys += ICLeg(-w, -h + z*d + d/2, 0, 1); + } + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col2); + glTranslatef(-w+0.3, h-0.3, 0.1); + glRotatef(90, 0, 1, 0); + polys += circle(ci, 0.1, 7, 0); + glPopMatrix(); + return polys; +} + +static int DrawDisp(Circuit *ci, Disp *d) +{ + int polys = 0; + GLfloat col[] = {0.8, 0.8, 0.8, 1.0}; /* body colour */ + GLfloat front[] = {0.2, 0.2, 0.2, 1.0}; /* front colour */ + GLfloat on[] = {0.9, 0, 0, 1}; /* 'on' segment */ + GLfloat off[] = {0.3, 0, 0, 1}; /* 'off' segment */ + int i, j, k; + GLfloat x, y; /* for the pins */ + GLfloat spec[] = {0.6, 0.6, 0.6, 0}; + GLfloat lcol[] = {0.4, 0.4, 0.4, 0}; + GLfloat shine = 40; + static const GLfloat vdata_h[6][2] = { + {0, 0}, + {0.1, 0.1}, + {0.9, 0.1}, + {1, 0}, + {0.9, -0.1}, + {0.1, -0.1} + }; + static const GLfloat vdata_v[6][2] = { + {0.27, 0}, + {0.35, -0.1}, + {0.2, -0.9}, + {0.1, -1}, + {0, -0.9}, + {0.15, -0.15} + }; + + static const GLfloat seg_start[7][2] = { + {0.55, 2.26}, + {1.35, 2.26}, + {1.2, 1.27}, + {0.25, 0.25}, + {0.06, 1.25}, + {0.25, 2.25}, + {0.39, 1.24} + }; + + static const int nums[10][7] = { + {1, 1, 1, 1, 1, 1, 0}, /* 0 */ + {0, 1, 1, 0, 0, 0, 0}, /* 1 */ + {1, 1, 0, 1, 1, 0, 1}, /* 2 */ + {1, 1, 1, 1, 0, 0, 1}, /* 3 */ + {0, 1, 1, 0, 0, 1, 1}, /* 4 */ + {1, 0, 1, 1, 0, 1, 1}, /* 5 */ + {1, 0, 1, 1, 1, 1, 1}, /* 6 */ + {1, 1, 1, 0, 0, 0, 0}, /* 7 */ + {1, 1, 1, 1, 1, 1, 1}, /* 8 */ + {1, 1, 1, 0, 0, 1, 1} /* 9 */ + }; + + glTranslatef(-0.9, -1.8, 0); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + polys += Rect(0, 0, -0.01, 1.8, 2.6, 0.7); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, front); + glBegin(GL_QUADS); + glVertex2f(-0.05, -0.05); + glVertex2f(-0.05, 2.65); + glVertex2f(1.85, 2.65); + glVertex2f(1.85, -0.05); + polys++; + glEnd(); + glDisable(GL_LIGHTING); /* lit segments dont need light */ + if (!seven && (random() % 30) == 19) { /* randomly change value */ + d->value = random() % 10; + } + for (j = 0 ; j < 7 ; j++) { /* draw the segments */ + GLfloat xx[6], yy[6]; + if (nums[d->value][j]) + glColor3fv(on); + else + glColor3fv(off); + for (k = 0 ; k < 6 ; k++) { + if (j == 0 || j == 3 || j == 6) { + xx[k] = seg_start[j][0] + vdata_h[k][0]; + yy[k] = seg_start[j][1] + vdata_h[k][1]; + } else { + xx[k] = seg_start[j][0] + vdata_v[k][0]; + yy[k] = seg_start[j][1] + vdata_v[k][1]; + } + } + glBegin(GL_POLYGON); + for(i = 0 ; i < 6 ; i++) { + glVertex3f(xx[i], yy[i], 0.01); + } + polys++; + glEnd(); + } + glColor3fv(on); + glPointSize(4); + glBegin(GL_POINTS); + glVertex3f(1.5, 0.2, 0.01); + polys++; + glEnd(); + glEnable(GL_LIGHTING); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, lcol); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glMaterialfv(GL_FRONT, GL_SHININESS, &shine); + for (x = 0.35 ; x <= 1.5 ; x+= 1.15) { + for ( y = 0.2 ; y <= 2.4 ; y += 0.3) { + polys += ICLeg(x, y, -0.7, 1); + } + } + return polys; +} + +static int HoledRectangle(Circuit *ci, + GLfloat w, GLfloat h, GLfloat d, GLfloat radius, + int p) +{ + int polys = 0; + int step, a; + GLfloat x1, y1, x2, y2; + GLfloat yr, yr1, xr, xr1, side, side1; + GLfloat nx, ny; + + step = 360 / p; + x1 = radius; y1 = 0; + xr1 = w/2; yr1 = 0; + side = w/2; + side1 = h/2; + glBegin(GL_QUADS); + for (a = 0 ; a <= 360 ; a+= step) { + y2=radius*(float)ci->sin_table[(int)a]; + x2=radius*(float)ci->cos_table[(int)a]; + + if (a < 45 || a > 315) { + xr = side; + yr = side1 * ci->tan_table[a]; + nx = 1; ny = 0; + } else if (a <= 135 || a >= 225) { + xr = side/ci->tan_table[a]; + if (a >= 225) { + yr = -side1; + xr = 0 - xr; + nx = 0; ny = -1; + } else { + yr = side1; + nx = 0; ny = 1; + } + } else { + xr = -side; + yr = -side1 * ci->tan_table[a]; + nx = -1; ny = 0; + } + + glNormal3f(-x1, -y1, 0); /* cylinder */ + glVertex3f(x1,y1,0); + glVertex3f(x1,y1,-d); + glVertex3f(x2,y2,-d); + glVertex3f(x2,y2,0); + polys++; + + glNormal3f(0, 0, 1); /* front face */ + glVertex3f(x1,y1,0); + glVertex3f(xr1, yr1, 0); + glVertex3f(xr, yr, 0); + glVertex3f(x2, y2, 0); + polys++; + + glNormal3f(nx, ny, 0); /* side */ + glVertex3f(xr, yr, 0); + glVertex3f(xr, yr, -d); + glVertex3f(xr1, yr1, -d); + glVertex3f(xr1, yr1, 0); + polys++; + + glNormal3f(0, 0, -1); /* back */ + glVertex3f(xr, yr, -d); + glVertex3f(x2, y2, -d); + glVertex3f(x1, y1, -d); + glVertex3f(xr1, yr1, -d); + polys++; + + x1=x2; + y1=y2; + xr1 = xr; yr1 = yr; + } + glEnd(); + return polys; +} + +static int DrawTransistor(Circuit *ci, Transistor *t) +{ + int polys = 0; + GLfloat col[] = {0.3, 0.3, 0.3, 1.0}; + GLfloat spec[] = {0.9, 0.9, 0.9, 1.0}; + GLfloat nospec[] = {0.4, 0.4, 0.4, 1.0}; + GLfloat shin = 30; + + glPushMatrix(); + glMaterialfv(GL_FRONT, GL_SHININESS, &shin); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + if (t->type == 1) { /* TO-92 style */ + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col); + glRotatef(90, 0, 1, 0); + glRotatef(90, 0, 0, 1); + polys += createCylinder(ci, 1.0, 0.4, 1, 1); + polys += Rect(0, -0.2, 0.4, 1, 0.2, 0.8); +/* Draw the markings */ + + { + GLfloat texfg[] = {0.7, 0.7, 0.7, 1.0}; + GLfloat s = 0.015; + XCharStruct e; + int w; + texture_string_metrics (ci->font, t->text, &e, 0, 0); + w = e.width; + glPushMatrix(); + glRotatef (90, 1, 0, 0); + glTranslatef (0.5, -0.05, 0.21); + glScalef (s, s, s); + glTranslatef (-w/2, 0, 0); + glColor4fv (texfg); + print_texture_string (ci->font, t->text); + glPopMatrix(); + } + + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + glDepthMask(GL_TRUE); + glTranslatef(-2, 0, -0.2); + polys += wire(ci, 2); + glTranslatef(0, 0, 0.2); + polys += wire(ci, 2); + glTranslatef(0, 0, 0.2); + polys += wire(ci, 2); + } else if (t->type == 0) { /* TO-220 Style */ + polys += Rect(0, 0, 0, 1.5, 1.5, 0.5); + { + GLfloat texfg[] = {0.7, 0.7, 0.7, 1.0}; + GLfloat s = 0.015; + XCharStruct e; + int w; + texture_string_metrics (ci->font, t->text, &e, 0, 0); + w = e.width; + glPushMatrix(); + glTranslatef (0.75, 0.75, 0.01); + glScalef (s, s, s); + glTranslatef (-w/2, 0, 0); + glColor4fv (texfg); + print_texture_string (ci->font, t->text); + glPopMatrix(); + } + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + glDepthMask(GL_TRUE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glMaterialfv(GL_FRONT, GL_SHININESS, &shin); + polys += Rect(0, 0, -0.5, 1.5, 1.5, 0.30); + if (!glIsEnabled(GL_NORMALIZE)) glEnable(GL_NORMALIZE); + glTranslatef(0.75, 1.875, -0.55); + polys += HoledRectangle(ci, 1.5, 0.75, 0.25, 0.2, 8); + glMaterialfv(GL_FRONT, GL_SPECULAR, nospec); + glTranslatef(-0.375, -1.875, 0); + glRotatef(90, 0, 0, -1); + polys += wire(ci, 2); + glTranslatef(0, 0.375, 0); + polys += wire(ci, 2); + glTranslatef(0, 0.375, 0); + polys += wire(ci, 2); + } else { /* SMC transistor */ +/* Draw the body */ + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col); + glTranslatef(-0.5, -0.25, 0.1); + polys += Rect(0, 0, 0, 1, 0.5, 0.2); +/* Draw the markings */ + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glDepthMask(GL_FALSE); + glBegin (GL_QUADS); + glNormal3f(0, 0, 1); + glTexCoord2f(0, 1); + glVertex3f(0.2, 0, 0.01); + glTexCoord2f(1, 1); + glVertex3f(0.8, 0, 0.01); + glTexCoord2f(1, 0); + glVertex3f(0.8, 0.5, 0.01); + glTexCoord2f(0, 0); + glVertex3f(0.2, 0.5, 0.01); + polys++; + glEnd(); + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + glDepthMask(GL_TRUE); +/* Now draw the legs */ + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT, GL_SPECULAR, spec); + glMaterialfv(GL_FRONT, GL_SHININESS, &shin); + polys += Rect(0.25, -0.1, -0.05, 0.1, 0.1, 0.2); + polys += Rect(0.75, -0.1, -0.05, 0.1, 0.1, 0.2); + polys += Rect(0.5, 0.5, -0.05, 0.1, 0.1, 0.2); + polys += Rect(0.25, -0.2, -0.2, 0.1, 0.15, 0.1); + polys += Rect(0.75, -0.2, -0.2, 0.1, 0.15, 0.1); + polys += Rect(0.5, 0.5, -0.2, 0.1, 0.15, 0.1); + } + glPopMatrix(); + return polys; +} + +static Component * NewComponent(ModeInfo *mi) +{ + Circuit *ci = &circuit[MI_SCREEN(mi)]; + Component *c; + float rnd; + + c = malloc(sizeof(Component)); + c->angle = RAND_RANGE(0,360); + rnd = f_rand(); + if (rnd < 0.25) { /* come from the top */ + c->y = ci->YMAX/2; + c->x = RAND_RANGE(0, ci->XMAX) - ci->XMAX/2; + if (c->x > 0) + c->dx = 0 - RAND_RANGE(0.5, 2); + else + c->dx = RAND_RANGE(0.5, 2); + c->dy = 0 - RAND_RANGE(0.5, 2); + } else if (rnd < 0.5) { /* come from the bottom */ + c->y = 0 - ci->YMAX/2; + c->x = RAND_RANGE(0, ci->XMAX) - ci->XMAX/2; + if (c->x > 0) + c->dx = 0 - RAND_RANGE(0.5, 2); + else + c->dx = RAND_RANGE(0.5, 2); + c->dy = RAND_RANGE(0.5, 2); + } else if (rnd < 0.75) { /* come from the left */ + c->x = 0 - ci->XMAX/2; + c->y = RAND_RANGE(0, ci->YMAX) - ci->YMAX/2; + c->dx = RAND_RANGE(0.5, 2); + if (c->y > 0) + c->dy = 0 - RAND_RANGE(0.5, 2); + else + c->dy = RAND_RANGE(0.5, 2); + } else { /* come from the right */ + c->x = ci->XMAX/2; + c->y = RAND_RANGE(0, ci->YMAX) - ci->YMAX/2; + c->dx = 0 - RAND_RANGE(0.5, 2); + if (c->y > 0) + c->dy = 0 - RAND_RANGE(0.5, 2); + else + c->dy = RAND_RANGE(0.5, 2); + } + c->z = RAND_RANGE(0, 7) - 9; + c->rotx = f_rand(); + c->roty = f_rand(); + c->rotz = f_rand(); + c->drot = f_rand() * 3; + c->rdeg = 0; + c->dz = f_rand()*2 - 1; + c->norm = 0; + c->alpha = 0; /* explicitly set to 1 later */ + rnd = random() % 11; + if (rnd < 1) { + c->c = NewResistor(); + c->type = 0; + if (f_rand() < 0.4) + c->norm = 1; /* some resistors shine */ + } else if (rnd < 2) { + c->c = NewDiode(); + if (f_rand() < 0.4) + c->norm = 1; /* some diodes shine */ + c->type = 1; + } else if (rnd < 3) { + c->c = NewTransistor(mi); + c->norm = 1; + c->type = 2; + } else if (rnd < 4) { + c->c = NewCapacitor(ci); + c->norm = 1; + c->type = 4; + } else if (rnd < 5) { + c->c = NewIC(mi); + c->type = 5; + c->norm = 1; + } else if (rnd < 6) { + c->c = NewLED(ci); + c->type = 3; + c->norm = 1; + c->alpha = 1; + } else if (rnd < 7) { + c->c = NewFuse(ci); + c->norm = 1; + c->type = 7; + c->alpha = 1; + } else if (rnd < 8) { + c->c = NewRCA(ci); + c->norm = 1; + c->type = 8; + } else if (rnd < 9) { + c->c = NewThreeFive(ci); + c->norm = 1; + c->type = 9; + } else if (rnd < 10) { + c->c = NewSwitch(ci); + c->norm = 1; + c->type = 10; + } else { + c->c = NewDisp(ci); + c->type = 6; + } + return c; +} + +static Transistor *NewTransistor(ModeInfo *mi) +{ + Transistor *t; + + t = malloc(sizeof(Transistor)); + t->type = (random() % 3); + if (t->type == 0) { + t->text = transistortypes[random() % countof(transistortypes)]; + } else if (t->type == 2) { + t->text = smctypes[random() % countof(smctypes)]; + } else if (t->type == 1) { + t->text = to92types[random() % countof(to92types)]; + } + return t; +} + +static Capacitor *NewCapacitor(Circuit *ci) +{ + Capacitor *c; + + c = malloc(sizeof(Capacitor)); + c->type = (f_rand() < 0.5); + if (!c->type) { + c->length = RAND_RANGE(0.5, 1); + c->width = RAND_RANGE(0.5, 1); + } else { + c->width = RAND_RANGE(0.3, 1); + } + return c; +} + +/* 7 segment display */ + +static Disp *NewDisp(Circuit *ci) +{ + Disp *d; + + d = malloc(sizeof(Disp)); + if (seven) + d->value = 7; + else + d->value = RAND_RANGE(0, 10); + return d; +} + + +static IC *NewIC(ModeInfo *mi) +{ + IC *c; + int pins; + const char *val; + int types[countof(ictypes)], i, n = 0; + + c = malloc(sizeof(IC)); + c->type = 0; + switch((int)RAND_RANGE(0,4)) { + case 0: + pins = 8; + break; + case 1: + pins = 14; + break; + case 2: + pins = 16; + break; + case 3: + default: + pins = 24; + break; + } + for (i = 0 ; i < countof(ictypes) ; i++) { + if (ictypes[i].pins == pins) { + types[n] = i; + n++; + } + } + + if (n > countof(types)) abort(); + val = ictypes[types[random() % n]].val; + sprintf(c->text, "%s\n%02d%02d", val, + (int)RAND_RANGE(80, 100), (int)RAND_RANGE(1,53)); + c->pins = pins; + return c; +} + +static LED *NewLED(Circuit *ci) +{ + LED *l; + float r; + + l = malloc(sizeof(LED)); + r = f_rand(); + l->light = 0; + if (!ci->light && (f_rand() < 0.4)) { + ci->light = 1; + l->light = 1; + } + if (r < 0.2) { + l->r = 0.9; l->g = 0; l->b = 0; + } else if (r < 0.4) { + l->r = 0.3; l->g = 0.9; l->b = 0; + } else if (r < 0.6) { + l->r = 0.8; l->g = 0.9; l->b = 0; + } else if (r < 0.8) { + l->r = 0.0; l->g = 0.2; l->b = 0.8; + } else { + l->r = 0.9, l->g = 0.55, l->b = 0; + } + return l; +} + +static Fuse *NewFuse(Circuit *ci) +{ + Fuse *f; + + f = malloc(sizeof(Fuse)); + return f; +} + +static RCA *NewRCA(Circuit *ci) +{ + RCA *r; + + r = malloc(sizeof(RCA)); + r->col = (random() % 10 < 5); + return r; +} + +static ThreeFive *NewThreeFive(Circuit *ci) +{ + ThreeFive *r; + + r = malloc(sizeof(ThreeFive)); + return r; +} + +static Switch *NewSwitch(Circuit *ci) +{ + Switch *s; + + s = malloc(sizeof(Switch)); + s->position = 0; + return s; +} + +static Diode *NewDiode(void) +{ + Band *b; + Diode *ret; + + ret = malloc(sizeof(Diode)); + b = malloc(sizeof(Band)); + b->pos = 0.8; + b->len = 0.1; + if (f_rand() < 0.5) { + b->r = 1; + b->g = 1; + b->b = 1; + ret->r = 0.7; ret->g = 0.1 ; ret->b = 0.1; + } else { + b->r = 1; + b->g = 1; + b->b = 1; + ret->r = 0.2; ret->g = 0.2 ; ret->b = 0.2; + } + ret->band = b; + return ret; +} + + +static Resistor * NewResistor(void) +{ + int v, m, t; /* value, multiplier, tolerance */ + Resistor *ret; + + v = RAND(9); + m = RAND(5); + t = (RAND(10) < 5) ? 10 : 11; + ret = malloc(sizeof(Resistor)); + + if (seven) { + ret->b[0] = ret->b[1] = ret->b[2] = 7; + } else { + ret->b[0] = values[v][0]; + ret->b[1] = values[v][1]; + ret->b[2] = m; + } + ret->b[3] = t; + + return ret; +} + +static void makebandlist(Circuit *ci) +{ + int i; + GLfloat col[] = {0,0,0,0}; + GLfloat spec[] = {0.8,0.8,0.8,0}; + GLfloat shine = 40; + + for (i = 0 ; i < 12 ; i++) { + ci->band_list[i] = glGenLists(1); + glNewList(ci->band_list[i], GL_COMPILE); + col[0] = colorcodes[i][0]; + col[1] = colorcodes[i][1]; + col[2] = colorcodes[i][2]; + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, &shine); + ci->band_list_polys[i] = createCylinder(ci, 0.1, 0.42, 0, 0); + glEndList(); + } +} + + +static int bandedCylinder(Circuit *ci, + float radius, float l, + GLfloat r, GLfloat g, GLfloat bl, + Band **b, int nbands) +{ + int polys = 0; + int n; /* band number */ + GLfloat col[] = {0,0,0,0}; + + col[0] = r; col[1] = g; col[2] = bl; + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + polys += createCylinder(ci, l, radius, 1, 0); /* body */ + for (n = 0 ; n < nbands ; n++) { + glPushMatrix(); + glTranslatef(b[n]->pos*l, 0, 0); + col[0] = b[n]->r; col[1] = b[n]->g; col[2] = b[n]->b; + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col); + polys += createCylinder(ci, b[n]->len*l, radius*1.05, 0, 0); /* band */ + glPopMatrix(); + } + return polys; +} + +static int drawgrid(Circuit *ci) +{ + int polys = 0; + GLfloat x, y; + GLfloat col3[] = {0, 0.8, 0}; + + if (!ci->draw_s) { + if (f_rand() < ((rotatespeed > 0) ? 0.05 : 0.01)) { + ci->draw_sdir = RAND_RANGE(0, 4); + ci->draw_ds = RAND_RANGE(0.4, 0.8); + switch (ci->draw_sdir) { + case 0: + ci->draw_sx = -ci->XMAX/2; + ci->draw_sy = ((int)RAND_RANGE(0, ci->YMAX/2))*2 - ci->YMAX/2; + break; + case 1: + ci->draw_sx = ci->XMAX/2; + ci->draw_sy = ((int)RAND_RANGE(0, ci->YMAX/2))*2 - ci->YMAX/2; + break; + case 2: + ci->draw_sy = ci->YMAX/2; + ci->draw_sx = ((int)RAND_RANGE(0, ci->XMAX/2))*2 - ci->XMAX/2; + break; + case 3: + ci->draw_sy = -ci->YMAX/2; + ci->draw_sx = ((int)RAND_RANGE(0, ci->XMAX/2))*2 - ci->XMAX/2; + break; + } + ci->draw_s = 1; + } + } else if (rotatespeed <= 0) { + if (ci->grid_col[1] < 0.25) { + ci->grid_col[1] += 0.025; ci->grid_col[2] += 0.005; + ci->grid_col2[1] += 0.015 ; ci->grid_col2[2] += 0.005; + } + } + + glDisable(GL_LIGHTING); + if (ci->draw_s) { + glColor3fv(col3); + glPushMatrix(); + glTranslatef(ci->draw_sx, ci->draw_sy, -10); + polys += sphere(ci, 0.1, 10, 10, 0, 10, 0, 10); + if (ci->draw_sdir == 0) + glTranslatef(-ci->draw_ds, 0, 0); + if (ci->draw_sdir == 1) + glTranslatef(ci->draw_ds, 0, 0); + if (ci->draw_sdir == 2) + glTranslatef(0, ci->draw_ds, 0); + if (ci->draw_sdir == 3) + glTranslatef(0, -ci->draw_ds, 0); + polys += sphere(ci, 0.05, 10, 10, 0, 10, 0, 10); + glPopMatrix(); + if (ci->draw_sdir == 0) { + ci->draw_sx += ci->draw_ds; + if (ci->draw_sx > ci->XMAX/2) + ci->draw_s = 0; + } + if (ci->draw_sdir == 1) { + ci->draw_sx -= ci->draw_ds; + if (ci->draw_sx < -ci->XMAX/2) + ci->draw_s = 0; + } + if (ci->draw_sdir == 2) { + ci->draw_sy -= ci->draw_ds; + if (ci->draw_sy < ci->YMAX/2) + ci->draw_s = 0; + } + if (ci->draw_sdir == 3) { + ci->draw_sy += ci->draw_ds; + if (ci->draw_sy > ci->YMAX/2) + ci->draw_s = 0; + } + } else if (rotatespeed <= 0) { + if (ci->grid_col[1] > 0) { + ci->grid_col[1] -= 0.0025; ci->grid_col[2] -= 0.0005; + ci->grid_col2[1] -= 0.0015 ; ci->grid_col2[2] -= 0.0005; + } + } + for (x = -ci->XMAX/2 ; x <= ci->XMAX/2 ; x+= 2) { + glColor3fv(ci->grid_col); + glBegin(GL_LINES); + glVertex3f(x, ci->YMAX/2, -10); + glVertex3f(x, -ci->YMAX/2, -10); + glColor3fv(ci->grid_col2); + glVertex3f(x-0.02, ci->YMAX/2, -10); + glVertex3f(x-0.02, -ci->YMAX/2, -10); + glVertex3f(x+0.02, ci->YMAX/2, -10); + glVertex3f(x+0.02, -ci->YMAX/2, -10); + glEnd(); + } + for (y = -ci->YMAX/2 ; y <= ci->YMAX/2 ; y+= 2) { + glColor3fv(ci->grid_col); + glBegin(GL_LINES); + glVertex3f(-ci->XMAX/2, y, -10); + glVertex3f(ci->XMAX/2, y, -10); + glColor3fv(ci->grid_col2); + glVertex3f(-ci->XMAX/2, y-0.02, -10); + glVertex3f(ci->XMAX/2, y-0.02, -10); + glVertex3f(-ci->XMAX/2, y+0.02, -10); + glVertex3f(ci->XMAX/2, y+0.02, -10); + glEnd(); + } + glEnable(GL_LIGHTING); + return polys; +} + +static void display(ModeInfo *mi) +{ + Circuit *ci = &circuit[MI_SCREEN(mi)]; + GLfloat light_sp[] = {0.8, 0.8, 0.8, 1.0}; + GLfloat black[] = {0, 0, 0, 1.0}; + int j; + + mi->polygon_count = 0; + + if (ci->display_i == 0) { + for (ci->display_i = 0 ; ci->display_i < maxparts ; ci->display_i++) { + ci->components[ci->display_i] = NULL; + } + } + glEnable(GL_LIGHTING); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + gluLookAt(ci->viewer[0], ci->viewer[1], ci->viewer[2], + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + glPushMatrix(); + glRotatef(ci->rotate_angle, 0, 0, 1); + ci->rotate_angle += 0.01 * (float)rotatespeed; + if (ci->rotate_angle >= 360) ci->rotate_angle = 0; + + glLightfv(GL_LIGHT0, GL_POSITION, ci->lightpos); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_sp); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_sp); + glLighti(GL_LIGHT0, GL_CONSTANT_ATTENUATION, (GLfloat)1); + glLighti(GL_LIGHT0, GL_LINEAR_ATTENUATION, (GLfloat)0.5); + glLighti(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, (GLfloat)0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (h, h, h); + h = 2; + glScalef (h, h, h); + } +# endif + + mi->polygon_count += drawgrid(ci); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, light_sp); + if (f_rand() < 0.05) { + for (j = 0 ; j < maxparts ; j++) { + if (ci->components[j] == NULL) { + ci->components[j] = NewComponent(mi); + j = maxparts; + } + } + reorder(&ci->components[0]); + } + for (j = 0 ; j < maxparts ; j++) { + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, black); + glMaterialfv(GL_FRONT, GL_EMISSION, black); + glMaterialfv(GL_FRONT, GL_SPECULAR, black); + if (ci->components[j] != NULL) { + if (DrawComponent(ci, ci->components[j], &mi->polygon_count)) { + free(ci->components[j]); ci->components[j] = NULL; + } + } + } + glPopMatrix(); + glFlush(); +} + +/* ensure transparent components are at the end */ +static void reorder(Component *c[]) +{ + int i, j, k; + Component *c1[MAX_COMPONENTS]; + Component *c2[MAX_COMPONENTS]; + + j = 0; + for (i = 0 ; i < maxparts ; i++) { /* clear old matrix */ + c1[i] = NULL; + c2[i] = NULL; + } + for (i = 0 ; i < maxparts ; i++) { + if (c[i] == NULL) continue; + if (c[i]->alpha) { /* transparent parts go to c1 */ + c1[j] = c[i]; + j++; + } else { /* opaque parts go to c2 */ + c2[i] = c[i]; + } + } + for (i = 0 ; i < maxparts ; i++) { /* clear old matrix */ + c[i] = NULL; + } + k = 0; + for (i = 0 ; i < maxparts ; i++) { /* insert opaque part */ + if (c2[i] != NULL) { + c[k] = c2[i]; + k++; + } + } + for (i = 0 ; i < j ; i++) { /* insert transparent parts */ + c[k] = c1[i]; + k++; + } +} + +ENTRYPOINT void reshape_circuit(ModeInfo *mi, int width, int height) +{ + Circuit *ci = &circuit[MI_SCREEN(mi)]; + int y = 0; + GLfloat h = (GLfloat) height / (GLfloat) width; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0,y,(GLint)width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0,1.0,-h,h,1.5,35.0); + glMatrixMode(GL_MODELVIEW); + ci->win_h = height; + ci->win_w = width; + ci->YMAX = ci->XMAX * h; +} + + +ENTRYPOINT void init_circuit(ModeInfo *mi) +{ +int screen = MI_SCREEN(mi); +Circuit *ci; + + MI_INIT(mi, circuit); + ci = &circuit[screen]; + ci->window = MI_WINDOW(mi); + + ci->XMAX = ci->YMAX = 50; + ci->viewer[2] = 14; + ci->lightpos[0] = 7; + ci->lightpos[1] = 7; + ci->lightpos[2] = 15; + ci->lightpos[3] = 1; + + ci->grid_col[1] = 0.25; + ci->grid_col[2] = 0.05; + ci->grid_col2[1] = 0.125; + ci->grid_col2[2] = 0.05; + + ci->font = load_texture_font (MI_DISPLAY(mi), "componentFont"); + + if (maxparts >= MAX_COMPONENTS) + maxparts = MAX_COMPONENTS-1; + + if ((ci->glx_context = init_GL(mi)) != NULL) { + reshape_circuit(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } + if (uselight == 0) + ci->light = 1; + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glEnable(GL_DEPTH_TEST); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + make_tables(ci); + makebandlist(ci); + +} + +ENTRYPOINT void draw_circuit(ModeInfo *mi) +{ + Circuit *ci = &circuit[MI_SCREEN(mi)]; + Window w = MI_WINDOW(mi); + Display *disp = MI_DISPLAY(mi); + + if (!ci->glx_context) + return; + + glXMakeCurrent(disp, w, *(ci->glx_context)); + + display(mi); + + if(mi->fps_p) do_fps(mi); + glFinish(); + glXSwapBuffers(disp, w); +} + +ENTRYPOINT void free_circuit(ModeInfo *mi) +{ + Circuit *ci = &circuit[MI_SCREEN(mi)]; + if (ci->font) + free_texture_font (ci->font); + FreeAllGL(mi); +} + +XSCREENSAVER_MODULE ("Circuit", circuit) + +#endif diff --git a/hacks/glx/circuit.man b/hacks/glx/circuit.man new file mode 100644 index 0000000..794f97b --- /dev/null +++ b/hacks/glx/circuit.man @@ -0,0 +1,72 @@ +.TH XScreenSaver 1 "5-May-2004" "X Version 11" +.SH NAME +circuit - animates a number of 3D electronic components. +.SH SYNOPSIS +.B circuit +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-parts \fInumber\fP] +[\-no-spin] +[\-rotate] +[\-speed \fInumber\fP] +[\-no-light] +[\-fps] +.SH DESCRIPTION +Animates a number of 3D electronic components. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-parts \fInumber\fP +Number of parts. Default: 10. +.TP 8 +.B \-spin | \-no-spin +Whether the objects should spin. +.TP 8 +.B \-rotate | \-no-rotate +Whether the scene should spin. +.TP 8 +.B \-speed \fInumber\fP +Rotation speed, 0 - 100. Default: 1. +.TP 8 +.B \-light | \-no-light +Whether to us lighting, or flat coloring. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Ben Buxton. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Ben Buxton. diff --git a/hacks/glx/cityflow.c b/hacks/glx/cityflow.c new file mode 100644 index 0000000..2b3bd4f --- /dev/null +++ b/hacks/glx/cityflow.c @@ -0,0 +1,545 @@ +/* cityflow, Copyright (c) 2014-2017 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*count: 800 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_cube 0 +# define release_cube 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SKEW "12" + +#define DEF_WAVES "6" +#define DEF_WAVE_SPEED "25" +#define DEF_WAVE_RADIUS "256" +static int texture_size = 512; + +typedef struct { + GLfloat x, y, z; + GLfloat w, h, d; + GLfloat cth, sth; +} cube; + +typedef struct { + int x, y; + double xth, yth; +} wave_src; + +typedef struct { + int nwaves; + int radius; + int speed; + wave_src *srcs; + int *heights; +} waves; + + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + GLuint cube_list; + int cube_polys; + int ncubes; + cube *cubes; + waves *waves; + GLfloat min_x, max_x, min_y, max_y; + int texture_width, texture_height; + int ncolors; + XColor *colors; + +} cube_configuration; + +static cube_configuration *ccs = NULL; + +static int wave_count; +static int wave_speed; +static int wave_radius; +static int skew; + +static XrmOptionDescRec opts[] = { + {"-waves", ".waves", XrmoptionSepArg, 0 }, + {"-wave-speed", ".waveSpeed", XrmoptionSepArg, 0 }, + {"-wave-radius", ".waveRadius", XrmoptionSepArg, 0 }, + {"-skew", ".skew", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&wave_count, "waves", "Waves", DEF_WAVES, t_Int}, + {&wave_speed, "waveSpeed", "WaveSpeed", DEF_WAVE_SPEED, t_Int}, + {&wave_radius,"waveRadius","WaveRadius", DEF_WAVE_RADIUS,t_Int}, + {&skew, "skew", "Skew", DEF_SKEW,t_Int}, +}; + +ENTRYPOINT ModeSpecOpt cube_opts = { + countof(opts), opts, countof(vars), vars, NULL}; + + +ENTRYPOINT void +reshape_cube (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 2) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + /* For this one it's really important to minimize the distance between + near and far. */ + gluPerspective (30, 1/h, 10, 50); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +reset_colors (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + make_smooth_colormap (0, 0, 0, + cc->colors, &cc->ncolors, + False, 0, False); + if (! MI_IS_WIREFRAME(mi)) + glClearColor (cc->colors[0].red / 65536.0, + cc->colors[0].green / 65536.0, + cc->colors[0].blue / 65536.0, + 1); +} + + +static void +tweak_cubes (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + int i; + for (i = 0; i < cc->ncubes; i++) + { + cube *cube = &cc->cubes[i]; + cube->x += (frand(2)-1)*0.01; + cube->y += (frand(2)-1)*0.01; + cube->z += (frand(2)-1)*0.01; + } +} + + +ENTRYPOINT Bool +cube_handle_event (ModeInfo *mi, XEvent *event) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + + /* Neutralize any vertical motion */ + GLfloat rot = current_device_rotation(); + Bool rotp = ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)); + + if (event->xany.type == ButtonPress || + event->xany.type == ButtonRelease) + { + if (rotp) + event->xbutton.x = MI_WIDTH(mi) / 2; + else + event->xbutton.y = MI_HEIGHT(mi) / 2; + } + else if (event->xany.type == MotionNotify) + { + if (rotp) + event->xmotion.x = MI_WIDTH(mi) / 2; + else + event->xmotion.y = MI_HEIGHT(mi) / 2; + } + + if (gltrackball_event_handler (event, cc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &cc->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + reset_colors (mi); + tweak_cubes (mi); + gltrackball_reset (cc->trackball, 0, 0); + return True; + } + + return False; +} + + +/* Waves. + Adapted from ../hacks/interference.c by Hannu Mallat. + */ + +static void +init_wave (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + waves *ww; + int i; + cc->waves = ww = (waves *) calloc (sizeof(*cc->waves), 1); + ww->nwaves = wave_count; + ww->radius = wave_radius; + ww->speed = wave_speed; + ww->heights = (int *) calloc (sizeof(*ww->heights), ww->radius); + ww->srcs = (wave_src *) calloc (sizeof(*ww->srcs), ww->nwaves); + + for (i = 0; i < ww->radius; i++) + { + float max = (cc->ncolors * (ww->radius - i) / (float) ww->radius); + ww->heights[i] = ((max + max * cos(i / 50.0)) / 2.0); + } + + for (i = 0; i < ww->nwaves; i++) + { + ww->srcs[i].xth = frand(2.0) * M_PI; + ww->srcs[i].yth = frand(2.0) * M_PI; + } + + cc->texture_width = texture_size; + cc->texture_height = texture_size; +} + + +static int +interference_point (cube_configuration *cc, int x, int y) +{ + /* Compute the effect of the waves on a pixel. */ + + waves *ww = cc->waves; + int result = 0; + int i; + for (i = 0; i < ww->nwaves; i++) + { + int dx = x - ww->srcs[i].x; + int dy = y - ww->srcs[i].y; + int dist = sqrt (dx*dx + dy*dy); + result += (dist >= ww->radius ? 0 : ww->heights[dist]); + } + result *= 0.4; + if (result > 255) result = 255; + return result; +} + + +static void +interference (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + waves *ww = cc->waves; + int i; + + /* Move the wave origins around + */ + for (i = 0; i < ww->nwaves; i++) + { + ww->srcs[i].xth += (ww->speed / 1000.0); + if (ww->srcs[i].xth > 2*M_PI) + ww->srcs[i].xth -= 2*M_PI; + ww->srcs[i].yth += (ww->speed / 1000.0); + if (ww->srcs[i].yth > 2*M_PI) + ww->srcs[i].yth -= 2*M_PI; + + ww->srcs[i].x = (cc->texture_width/2 + + (cos (ww->srcs[i].xth) * + cc->texture_width / 2)); + ww->srcs[i].y = (cc->texture_height/2 + + (cos (ww->srcs[i].yth) * + cc->texture_height / 2)); + } +} + + +/* qsort comparator for sorting cubes by y position */ +static int +cmp_cubes (const void *aa, const void *bb) +{ + const cube *a = (cube *) aa; + const cube *b = (cube *) bb; + return ((int) (b->y * 10000) - + (int) (a->y * 10000)); +} + + +ENTRYPOINT void +init_cube (ModeInfo *mi) +{ + int i; + cube_configuration *cc; + + MI_INIT (mi, ccs); + + cc = &ccs[MI_SCREEN(mi)]; + + if ((cc->glx_context = init_GL(mi)) != NULL) { + reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + cc->trackball = gltrackball_init (False); + + cc->ncolors = 256; + cc->colors = (XColor *) calloc(cc->ncolors, sizeof(XColor)); + + reset_colors (mi); + init_wave (mi); + + cc->ncubes = MI_COUNT (mi); + + if (cc->ncubes < 1) cc->ncubes = 1; + + cc->cubes = (cube *) calloc (sizeof(cube), cc->ncubes); + for (i = 0; i < cc->ncubes; i++) + { + /* Set the size to roughly cover a 2x2 square on average. */ + GLfloat scale = 1.8 / sqrt (cc->ncubes); + cube *cube = &cc->cubes[i]; + double th = -(skew ? frand(skew) : 0) * M_PI / 180; + + cube->x = (frand(1)-0.5); + cube->y = (frand(1)-0.5); + + cube->z = frand(0.12); + cube->cth = cos(th); + cube->sth = sin(th); + + cube->w = scale * (frand(1) + 0.2); + cube->d = scale * (frand(1) + 0.2); + + if (cube->x < cc->min_x) cc->min_x = cube->x; + if (cube->y < cc->min_y) cc->min_y = cube->y; + if (cube->x > cc->max_x) cc->max_x = cube->x; + if (cube->y > cc->max_y) cc->max_y = cube->y; + } + + /* Sorting by depth improves frame rate slightly. With 6000 polygons we get: + 3.9 FPS unsorted; + 3.1 FPS back to front; + 4.3 FPS front to back. + */ + qsort (cc->cubes, cc->ncubes, sizeof(*cc->cubes), cmp_cubes); +} + + +static void +animate_cubes (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + int i; + for (i = 0; i < cc->ncubes; i++) + { + cube *cube = &cc->cubes[i]; + GLfloat fx = (cube->x - cc->min_x) / (cc->max_x - cc->min_x); + GLfloat fy = (cube->y - cc->min_y) / (cc->max_y - cc->min_y); + int x = (int) (cc->texture_width * fx) % cc->texture_width; + int y = (int) (cc->texture_height * fy) % cc->texture_height; + unsigned char v = interference_point (cc, x, y); + cube->h = cube->z + (v / 256.0 / 2.5) + 0.1; + } +} + + +ENTRYPOINT void +draw_cube (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!cc->glx_context) + return; + + mi->polygon_count = 0; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context)); + + interference (mi); + animate_cubes (mi); + + glShadeModel(GL_FLAT); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + /* glEnable (GL_POLYGON_OFFSET_FILL); */ + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glRotatef(current_device_rotation(), 0, 0, 1); + gltrackball_rotate (cc->trackball); + glRotatef (-180, 1, 0, 0); + + { + GLfloat s = 15; + glScalef (s, s, s); + } + glRotatef (-90, 1, 0, 0); + + glTranslatef (-0.18, 0, -0.18); + glRotatef (37, 1, 0, 0); + glRotatef (20, 0, 0, 1); + + glScalef (2.1, 2.1, 2.1); + + /* Position lights after device rotation. */ + if (!wire) + { + static const GLfloat pos[4] = {0.0, 0.25, -1.0, 0.0}; + static const GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + static const GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + } + + glBegin (wire ? GL_LINES : GL_QUADS); + + for (i = 0; i < cc->ncubes; i++) + { + cube *cube = &cc->cubes[i]; + GLfloat cth = cube->cth; + GLfloat sth = cube->sth; + GLfloat x = cth*cube->x + sth*cube->y; + GLfloat y = -sth*cube->x + cth*cube->y; + GLfloat w = cube->w/2; + GLfloat h = cube->h/2; + GLfloat d = cube->d/2; + GLfloat bottom = 5; + + GLfloat xw = cth*w, xd = sth*d; + GLfloat yw = -sth*w, yd = cth*d; + + GLfloat color[4]; + int c = cube->h * cc->ncolors * 0.7; + c %= cc->ncolors; + + color[0] = cc->colors[c].red / 65536.0; + color[1] = cc->colors[c].green / 65536.0; + color[2] = cc->colors[c].blue / 65536.0; + color[3] = 1.0; + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + + /* Putting this in a display list makes no performance difference. */ + + if (! wire) + { + glNormal3f (0, 0, -1); /* top */ + glVertex3f (x+xw+xd, y+yw+yd, -h); + glVertex3f (x+xw-xd, y+yw-yd, -h); + glVertex3f (x-xw-xd, y-yw-yd, -h); + glVertex3f (x-xw+xd, y-yw+yd, -h); + mi->polygon_count++; + + glNormal3f (sth, cth, 0); /* front */ + glVertex3f (x+xw+xd, y+yw+yd, bottom); + glVertex3f (x+xw+xd, y+yw+yd, -h); + glVertex3f (x-xw+xd, y-yw+yd, -h); + glVertex3f (x-xw+xd, y-yw+yd, bottom); + mi->polygon_count++; + + glNormal3f (cth, -sth, 0); /* right */ + glVertex3f (x+xw-xd, y+yw-yd, -h); + glVertex3f (x+xw+xd, y+yw+yd, -h); + glVertex3f (x+xw+xd, y+yw+yd, bottom); + glVertex3f (x+xw-xd, y+yw-yd, bottom); + mi->polygon_count++; + +# if 0 /* Omitting these makes no performance difference. */ + + glNormal3f (-cth, sth, 0); /* left */ + glVertex3f (x-xw+xd, y-yw+yd, -h); + glVertex3f (x-xw-xd, y-yw-yd, -h); + glVertex3f (x-xw-xd, y-yw-yd, bottom); + glVertex3f (x-xw+xd, y-yw+yd, bottom); + mi->polygon_count++; + + glNormal3f (-sth, -cth, 0); /* back */ + glVertex3f (x-xw-xd, y-yw-yd, bottom); + glVertex3f (x-xw-xd, y-yw-yd, -h); + glVertex3f (x+xw-xd, y+yw-yd, -h); + glVertex3f (x+xw-xd, y+yw-yd, bottom); + mi->polygon_count++; +# endif + } + else + { + glNormal3f (0, 0, -1); /* top */ + glVertex3f (x+xw+xd, y+yw+yd, -h); + glVertex3f (x+xw-xd, y+yw-yd, -h); + + glVertex3f (x+xw-xd, y+yw-yd, -h); + glVertex3f (x-xw-xd, y-yw-yd, -h); + + glVertex3f (x-xw-xd, y-yw-yd, -h); + glVertex3f (x-xw+xd, y-yw+yd, -h); + + glVertex3f (x-xw+xd, y-yw+yd, -h); + glVertex3f (x+xw+xd, y+yw+yd, -h); + mi->polygon_count++; + } + } + glEnd(); + + glPolygonOffset (0, 0); + +# if 0 + glDisable(GL_DEPTH_TEST); /* Outline the playfield */ + glColor3f(1,1,1); + glBegin(GL_LINE_LOOP); + glVertex3f (-0.5, -0.5, 0); + glVertex3f (-0.5, 0.5, 0); + glVertex3f ( 0.5, 0.5, 0); + glVertex3f ( 0.5, -0.5, 0); + glEnd(); +# endif + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + + +XSCREENSAVER_MODULE_2 ("Cityflow", cityflow, cube) + +#endif /* USE_GL */ diff --git a/hacks/glx/cityflow.man b/hacks/glx/cityflow.man new file mode 100644 index 0000000..eabcdc2 --- /dev/null +++ b/hacks/glx/cityflow.man @@ -0,0 +1,77 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +cityflow - waves of boxes. +.SH SYNOPSIS +.B cityflow +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-count \fInumber\fP] +[\-wave-speed \fInumber\fP] +[\-wave-radius \fInumber\fP] +[\-waves \fInumber\fP] +[\-skew \fInumber\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Waves move across a sea of boxes. The city swells. The walls are closing +in. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-count \fInumber\fP +Boxes. 50 - 4000. Default: 800. +.TP 8 +.B \-wave-speed \fInumber\fP +Wave speed. 5 - 150. Default: 25. +.TP 8 +.B \-wave-radius \fInumber\fP +Wave overlap. 5 - 512. Default: 256. +.TP 8 +.B \-waves \fInumber\fP +Wave complexity. 1 - 20. Default: 6. +.TP 8 +.B \-skew \fInumber\fP +Skew. 0 - 45. Default: 12. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2012 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/companion.c b/hacks/glx/companion.c new file mode 100644 index 0000000..3c004a5 --- /dev/null +++ b/hacks/glx/companion.c @@ -0,0 +1,592 @@ +/* companioncube, Copyright (c) 2011-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* The symptoms most commonly produced by Enrichment Center testing are + superstition, perceiving inanimate objects as alive, and hallucinations. + The Enrichment Center reminds you that the weighted companion cube will + never threaten to stab you and, in fact, cannot speak. In the event that + the Weighted Companion Cube does speak, the Enrichment Center urges you to + disregard its advice. + */ + + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*count: 3 \n" \ + "*wireframe: False \n" \ + +/* #define DEBUG */ + + +# define free_cube 0 +# define release_cube 0 +#define DEF_SPEED "1.0" +#define DEF_SPIN "False" +#define DEF_WANDER "False" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +#include "xlockmore.h" +#include "rotator.h" +#include "gltrackball.h" +#include "ximage-loader.h" +#include + +#ifdef USE_GL /* whole file */ + +#include "gllist.h" + +extern const struct gllist *companion_quad, *companion_disc, *companion_heart; +static const struct gllist * const *all_objs[] = { + &companion_quad, &companion_disc, &companion_heart +}; +#define BASE_QUAD 0 +#define BASE_DISC 1 +#define BASE_HEART 2 +#define FULL_CUBE 3 + +#define SPEED_SCALE 0.2 + +typedef struct { + GLfloat x, y, z; + GLfloat ix, iy, iz; + GLfloat dx, dy, dz; + GLfloat ddx, ddy, ddz; + GLfloat zr; + rotator *rot; + Bool spinner_p; +} floater; + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + + GLuint *dlists; + int cube_polys; + + int nfloaters; + floater *floaters; + +} cube_configuration; + +static cube_configuration *bps = NULL; + +static GLfloat speed; +static Bool do_spin; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +#define BOTTOM 28.0 + +static void +reset_floater (ModeInfo *mi, floater *f) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + + f->y = -BOTTOM; + f->x = f->ix; + f->z = f->iz; + + /* Yes, I know I'm varying the force of gravity instead of varying the + launch velocity. That's intentional: empirical studies indicate + that it's way, way funnier that way. */ + + f->dy = 5.0; + f->dx = 0; + f->dz = 0; + + /* -0.18 max -0.3 top -0.4 middle -0.6 bottom */ + f->ddy = speed * SPEED_SCALE * (-0.6 + BELLRAND(0.45)); + f->ddx = 0; + f->ddz = 0; + + if (do_spin || do_wander) + f->spinner_p = 0; + else + f->spinner_p = !(random() % (3 * bp->nfloaters)); + + if (! (random() % (30 * bp->nfloaters))) + { + f->dx = BELLRAND(1.8) * RANDSIGN(); + f->dz = BELLRAND(1.8) * RANDSIGN(); + } + + f->zr = frand(180); + if (do_spin || do_wander) + { + f->y = 0; + if (bp->nfloaters > 2) + f->y += frand(3.0) * RANDSIGN(); + } +} + + +static void +tick_floater (ModeInfo *mi, floater *f) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (bp->button_down_p) return; + + if (do_spin || do_wander) return; + + f->dx += f->ddx; + f->dy += f->ddy; + f->dz += f->ddz; + + f->x += f->dx * speed * SPEED_SCALE; + f->y += f->dy * speed * SPEED_SCALE; + f->z += f->dz * speed * SPEED_SCALE; + + if (f->y < -BOTTOM || + f->x < -BOTTOM*8 || f->x > BOTTOM*8 || + f->z < -BOTTOM*8 || f->z > BOTTOM*8) + reset_floater (mi, f); +} + + + + + +static int +build_corner (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat s; + const struct gllist *gll = *all_objs[BASE_QUAD]; + + glPushMatrix(); + glTranslatef (-0.5, -0.5, -0.5); + s = 0.659; + glScalef (s, s, s); + + glRotatef (180, 0, 1, 0); + glRotatef (180, 0, 0, 1); + glTranslatef (-0.12, -1.64, 0.12); + glCallList (bp->dlists[BASE_QUAD]); + glPopMatrix(); + + return gll->points / 3; +} + + +static int +build_face (ModeInfo *mi) +{ + int polys = 0; + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + GLfloat s; + const struct gllist *gll; + + GLfloat base_color[4] = {0.53, 0.60, 0.66, 1.00}; + GLfloat heart_color[4] = {0.92, 0.67, 1.00, 1.00}; + GLfloat disc_color[4] = {0.75, 0.92, 1.00, 1.00}; + GLfloat corner_color[4] = {0.75, 0.92, 1.00, 1.00}; + + if (!wire) + { + GLfloat w = 0.010; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, base_color); + glPushMatrix(); + glNormal3f (0, 0, -1); + glTranslatef (-0.5, -0.5, -0.5); + + glBegin(GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, 0.5-w, 0); + glVertex3f (0.5-w, 0.5-w, 0); + glVertex3f (0.5-w, 0, 0); + + glVertex3f (0.5+w, 0, 0); + glVertex3f (0.5+w, 0.5-w, 0); + glVertex3f (1, 0.5-w, 0); + glVertex3f (1, 0, 0); + + glVertex3f (0, 0.5+w, 0); + glVertex3f (0, 1, 0); + glVertex3f (0.5-w, 1, 0); + glVertex3f (0.5-w, 0.5+w, 0); + + glVertex3f (0.5+w, 0.5+w, 0); + glVertex3f (0.5+w, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0.5+w, 0); + glEnd(); + + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, heart_color); + + glNormal3f (0, -1, 0); + glBegin(GL_QUADS); + glVertex3f (0, 0.5+w, 0); + glVertex3f (1, 0.5+w, 0); + glVertex3f (1, 0.5+w, w); + glVertex3f (0, 0.5+w, w); + glEnd(); + + glNormal3f (0, 1, 0); + glBegin(GL_QUADS); + glVertex3f (0, 0.5-w, w); + glVertex3f (1, 0.5-w, w); + glVertex3f (1, 0.5-w, 0); + glVertex3f (0, 0.5-w, 0); + glEnd(); + + glNormal3f (-1, 0, 0); + glBegin(GL_QUADS); + glVertex3f (0.5+w, 0, w); + glVertex3f (0.5+w, 1, w); + glVertex3f (0.5+w, 1, 0); + glVertex3f (0.5+w, 0, 0); + glEnd(); + + glNormal3f (1, 0, 0); + glBegin(GL_QUADS); + glVertex3f (0.5-w, 0, 0); + glVertex3f (0.5-w, 1, 0); + glVertex3f (0.5-w, 1, w); + glVertex3f (0.5-w, 0, w); + glEnd(); + + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, heart_color); + + glNormal3f (0, 0, -1); + glTranslatef (0, 0, w); + glBegin(GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); + glEnd(); + + glPopMatrix(); + } + + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, corner_color); + + glPushMatrix(); + polys += build_corner (mi); glRotatef (90, 0, 0, 1); + polys += build_corner (mi); glRotatef (90, 0, 0, 1); + polys += build_corner (mi); glRotatef (90, 0, 0, 1); + polys += build_corner (mi); + + glRotatef (90, 0, 0, 1); + glTranslatef (0.585, -0.585, -0.5655); + + s = 10.5; + glScalef (s, s, s); + glRotatef (180, 0, 1, 0); + + if (! wire) + { + gll = *all_objs[BASE_HEART]; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, heart_color); + glCallList (bp->dlists[BASE_HEART]); + polys += gll->points / 3; + } + + gll = *all_objs[BASE_DISC]; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, disc_color); + glCallList (bp->dlists[BASE_DISC]); + polys += gll->points / 3; + + glPopMatrix(); + return polys; +} + + +static int +build_cube (ModeInfo *mi) +{ + int polys = 0; + glPushMatrix(); + polys += build_face (mi); glRotatef (90, 0, 1, 0); + polys += build_face (mi); glRotatef (90, 0, 1, 0); + polys += build_face (mi); glRotatef (90, 0, 1, 0); + polys += build_face (mi); glRotatef (90, 1, 0, 0); + polys += build_face (mi); glRotatef (180,1, 0, 0); + polys += build_face (mi); + glPopMatrix(); + return polys; +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_cube (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +cube_handle_event (ModeInfo *mi, XEvent *event) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_cube (ModeInfo *mi) +{ + cube_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (!wire) + { + GLfloat pos[4] = {0.7, 0.2, 0.4, 0.0}; +/* GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};*/ + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + bp->trackball = gltrackball_init (False); + + bp->dlists = (GLuint *) calloc (countof(all_objs)+2, sizeof(GLuint)); + for (i = 0; i < countof(all_objs)+1; i++) + bp->dlists[i] = glGenLists (1); + + for (i = 0; i < countof(all_objs); i++) + { + const struct gllist *gll = *all_objs[i]; + glNewList (bp->dlists[i], GL_COMPILE); + renderList (gll, wire); + glEndList (); + } + + glNewList (bp->dlists[i], GL_COMPILE); + bp->cube_polys = build_cube (mi); + glEndList (); + + + bp->nfloaters = MI_COUNT (mi); + bp->floaters = (floater *) calloc (bp->nfloaters, sizeof (floater)); + + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + double spin_speed = do_spin ? 0.7 : 10; + double wander_speed = do_wander ? 0.02 : 0.05 * speed * SPEED_SCALE; + double spin_accel = 0.5; + f->rot = make_rotator (spin_speed, spin_speed, spin_speed, + spin_accel, + wander_speed, + True); + if (bp->nfloaters == 2) + { + f->x = (i ? 2 : -2); + } + else if (i != 0) + { + double th = (i - 1) * M_PI*2 / (bp->nfloaters-1); + double r = 3; + f->x = r * cos(th); + f->z = r * sin(th); + } + + f->ix = f->x; + f->iy = f->y; + f->iz = f->z; + reset_floater (mi, f); + } +} + + +static void +draw_floater (ModeInfo *mi, floater *f) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat n; + double x, y, z; + + get_position (f->rot, &x, &y, &z, !bp->button_down_p); + + glPushMatrix(); + glTranslatef (f->x, f->y, f->z); + + if (do_wander) + glTranslatef (x, y, z); + + if (do_spin) + get_rotation (f->rot, &x, &y, &z, !bp->button_down_p); + + if (do_spin || f->spinner_p) + { + glRotatef (x * 360, 1, 0, 0); + glRotatef (y * 360, 0, 1, 0); + glRotatef (z * 360, 0, 0, 1); + } + else + { + glRotatef (f->zr * 360, 0, 1, 0); + } + + n = 1.5; + if (bp->nfloaters > 99) n *= 0.05; + else if (bp->nfloaters > 25) n *= 0.18; + else if (bp->nfloaters > 9) n *= 0.3; + else if (bp->nfloaters > 1) n *= 0.7; + + n *= 2; + + if ((do_spin || do_wander) && bp->nfloaters > 1) + n *= 0.7; + + glScalef(n, n, n); + + glCallList (bp->dlists[FULL_CUBE]); + mi->polygon_count += bp->cube_polys; +/* build_cube (mi);*/ + + glPopMatrix(); +} + + + +ENTRYPOINT void +draw_cube (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + gltrackball_rotate (bp->trackball); + + glScalef (2, 2, 2); + + mi->polygon_count = 0; + +# if 0 + { + floater F; + F.x = F.y = F.z = 0; + F.dx = F.dy = F.dz = 0; + F.ddx = F.ddy = F.ddz = 0; + F.rot = make_rotator (0, 0, 0, 1, 0, False); + glRotatef (45, 0, 1, 0); + draw_floater (mi, &F); + } +# else + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + draw_floater (mi, f); + tick_floater (mi, f); + } +# endif + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("CompanionCube", companioncube, cube) + +#endif /* USE_GL */ diff --git a/hacks/glx/companion_disc.c b/hacks/glx/companion_disc.c new file mode 100644 index 0000000..b2f1830 --- /dev/null +++ b/hacks/glx/companion_disc.c @@ -0,0 +1,9593 @@ +#include "gllist.h" +static const float data[]={ + -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167, + -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013, + -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013, + -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167, + -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013, + -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167, + -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167, + -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013, + -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013, + -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167, + -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013, + -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167, + -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167, + -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013, + -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013, + -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167, + -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013, + -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167, + -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167, + -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013, + -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013, + -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167, + -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013, + -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167, + -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167, + -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013, + -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013, + -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167, + -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013, + -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167, + -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167, + -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013, + -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013, + -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167, + -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013, + -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167, + -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167, + -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013, + -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013, + -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167, + -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013, + -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167, + -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167, + -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013, + -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013, + -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167, + -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013, + -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167, + -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167, + -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013, + -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013, + -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167, + -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013, + -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167, + -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167, + -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013, + -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013, + -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167, + -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013, + -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167, + -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167, + -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013, + -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013, + -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167, + -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013, + -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167, + -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167, + -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013, + -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013, + -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167, + -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013, + -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167, + -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167, + -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013, + -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013, + -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167, + -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013, + -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167, + -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167, + -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013, + -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013, + -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167, + -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013, + -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167, + -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167, + -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013, + -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013, + -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167, + -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013, + -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167, + -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167, + -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013, + -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013, + -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167, + -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013, + -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167, + -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167, + -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013, + -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013, + -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167, + -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013, + -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167, + -0.07324,-0.997287,0.007402,0.054796,0.038576,-0.006167, + -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013, + -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013, + -0.07324,-0.997287,0.007402,0.054796,0.038576,-0.006167, + -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013, + -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167, + 0,-0.999938,0.011104,0.055885,0.038542,-0.006167, + 0,-0.997504,0.070606,0.055885,0.038543,-0.006013, + -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013, + 0,-0.999938,0.011104,0.055885,0.038542,-0.006167, + -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013, + -0.07324,-0.997287,0.007402,0.054796,0.038576,-0.006167, + 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167, + 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013, + 0,-0.997504,0.070606,0.055885,0.038543,-0.006013, + 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167, + 0,-0.997504,0.070606,0.055885,0.038543,-0.006013, + 0,-0.999938,0.011104,0.055885,0.038542,-0.006167, + 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167, + 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013, + 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013, + 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167, + 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013, + 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167, + 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167, + 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013, + 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013, + 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167, + 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013, + 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167, + 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167, + 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013, + 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013, + 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167, + 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013, + 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167, + 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167, + 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013, + 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013, + 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167, + 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013, + 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167, + 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167, + 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013, + 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013, + 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167, + 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013, + 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167, + 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167, + 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013, + 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013, + 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167, + 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013, + 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167, + 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167, + 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013, + 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013, + 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167, + 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013, + 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167, + 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167, + 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013, + 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013, + 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167, + 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013, + 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167, + 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167, + 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013, + 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013, + 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167, + 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013, + 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167, + 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167, + 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013, + 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013, + 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167, + 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013, + 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167, + 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167, + 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013, + 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013, + 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167, + 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013, + 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167, + 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167, + 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013, + 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013, + 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167, + 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013, + 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167, + 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167, + 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013, + 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013, + 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167, + 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013, + 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167, + 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167, + 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013, + 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013, + 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167, + 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013, + 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167, + 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167, + 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013, + 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013, + 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167, + 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013, + 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167, + 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167, + 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013, + 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013, + 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167, + 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013, + 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167, + 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167, + 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013, + 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013, + 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167, + 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013, + 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167, + 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167, + 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013, + 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013, + 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167, + 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013, + 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167, + 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167, + 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013, + 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013, + 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167, + 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013, + 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167, + 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167, + 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013, + 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013, + 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167, + 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013, + 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167, + 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167, + 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013, + 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013, + 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167, + 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013, + 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167, + 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167, + 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013, + 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013, + 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167, + 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013, + 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167, + 0.997287,-0.07324,0.007402,0.073195,0.054796,-0.006167, + 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013, + 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013, + 0.997287,-0.07324,0.007402,0.073195,0.054796,-0.006167, + 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013, + 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167, + 0.999938,0,0.011104,0.073229,0.055885,-0.006167, + 0.997504,0,0.070606,0.073227,0.055885,-0.006013, + 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013, + 0.999938,0,0.011104,0.073229,0.055885,-0.006167, + 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013, + 0.997287,-0.07324,0.007402,0.073195,0.054796,-0.006167, + 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167, + 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013, + 0.997504,0,0.070606,0.073227,0.055885,-0.006013, + 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167, + 0.997504,0,0.070606,0.073227,0.055885,-0.006013, + 0.999938,0,0.011104,0.073229,0.055885,-0.006167, + 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167, + 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013, + 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013, + 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167, + 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013, + 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167, + 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167, + 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013, + 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013, + 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167, + 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013, + 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167, + 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167, + 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013, + 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013, + 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167, + 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013, + 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167, + 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167, + 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013, + 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013, + 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167, + 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013, + 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167, + 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167, + 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013, + 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013, + 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167, + 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013, + 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167, + 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167, + 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013, + 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013, + 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167, + 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013, + 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167, + 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167, + 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013, + 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013, + 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167, + 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013, + 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167, + 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167, + 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013, + 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013, + 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167, + 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013, + 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167, + 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167, + 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013, + 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013, + 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167, + 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013, + 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167, + 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167, + 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013, + 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013, + 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167, + 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013, + 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167, + 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167, + 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013, + 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013, + 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167, + 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013, + 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167, + 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167, + 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013, + 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013, + 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167, + 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013, + 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167, + 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167, + 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013, + 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013, + 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167, + 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013, + 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167, + 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167, + 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013, + 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013, + 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167, + 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013, + 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167, + 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167, + 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013, + 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013, + 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167, + 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013, + 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167, + 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167, + 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013, + 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013, + 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167, + 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013, + 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167, + 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167, + 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013, + 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013, + 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167, + 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013, + 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167, + 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167, + 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013, + 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013, + 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167, + 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013, + 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167, + 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167, + 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013, + 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013, + 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167, + 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013, + 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167, + 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167, + 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013, + 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013, + 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167, + 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013, + 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167, + 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167, + 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013, + 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013, + 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167, + 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013, + 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167, + 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167, + 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013, + 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013, + 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167, + 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013, + 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167, + 0.07324,0.997287,0.007402,0.056974,0.073195,-0.006167, + 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013, + 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013, + 0.07324,0.997287,0.007402,0.056974,0.073195,-0.006167, + 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013, + 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167, + 0,0.999938,0.011104,0.055885,0.073229,-0.006167, + 0,0.997504,0.070606,0.055885,0.073227,-0.006013, + 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013, + 0,0.999938,0.011104,0.055885,0.073229,-0.006167, + 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013, + 0.07324,0.997287,0.007402,0.056974,0.073195,-0.006167, + -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167, + -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013, + 0,0.997504,0.070606,0.055885,0.073227,-0.006013, + -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167, + 0,0.997504,0.070606,0.055885,0.073227,-0.006013, + 0,0.999938,0.011104,0.055885,0.073229,-0.006167, + -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167, + -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013, + -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013, + -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167, + -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013, + -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167, + -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167, + -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013, + -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013, + -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167, + -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013, + -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167, + -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167, + -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013, + -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013, + -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167, + -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013, + -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167, + -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167, + -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013, + -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013, + -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167, + -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013, + -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167, + -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167, + -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013, + -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013, + -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167, + -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013, + -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167, + -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167, + -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013, + -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013, + -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167, + -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013, + -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167, + -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167, + -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013, + -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013, + -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167, + -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013, + -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167, + -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167, + -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013, + -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013, + -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167, + -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013, + -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167, + -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167, + -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013, + -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013, + -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167, + -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013, + -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167, + -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167, + -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013, + -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013, + -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167, + -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013, + -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167, + -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167, + -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013, + -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013, + -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167, + -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013, + -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167, + -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167, + -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013, + -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013, + -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167, + -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013, + -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167, + -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167, + -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013, + -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013, + -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167, + -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013, + -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167, + -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167, + -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013, + -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013, + -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167, + -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013, + -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167, + -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167, + -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013, + -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013, + -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167, + -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013, + -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167, + -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167, + -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013, + -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013, + -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167, + -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013, + -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167, + -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167, + -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013, + -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013, + -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167, + -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013, + -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167, + -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167, + -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013, + -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013, + -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167, + -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013, + -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167, + -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167, + -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013, + -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013, + -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167, + -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013, + -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167, + -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167, + -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013, + -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013, + -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167, + -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013, + -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167, + -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167, + -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013, + -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013, + -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167, + -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013, + -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167, + -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167, + -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013, + -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013, + -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167, + -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013, + -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167, + -0.997287,0.07324,0.007402,0.038576,0.056974,-0.006167, + -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013, + -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013, + -0.997287,0.07324,0.007402,0.038576,0.056974,-0.006167, + -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013, + -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167, + -0.999938,0,0.011104,0.038542,0.055885,-0.006167, + -0.997504,0,0.070606,0.038543,0.055885,-0.006013, + -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013, + -0.999938,0,0.011104,0.038542,0.055885,-0.006167, + -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013, + -0.997287,0.07324,0.007402,0.038576,0.056974,-0.006167, + -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167, + -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013, + -0.997504,0,0.070606,0.038543,0.055885,-0.006013, + -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167, + -0.997504,0,0.070606,0.038543,0.055885,-0.006013, + -0.999938,0,0.011104,0.038542,0.055885,-0.006167, + -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167, + -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013, + -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013, + -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167, + -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013, + -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167, + -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167, + -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013, + -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013, + -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167, + -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013, + -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167, + -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167, + -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013, + -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013, + -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167, + -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013, + -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167, + -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167, + -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013, + -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013, + -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167, + -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013, + -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167, + -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167, + -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013, + -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013, + -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167, + -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013, + -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167, + -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013, + -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861, + -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861, + -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013, + -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861, + -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013, + -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013, + -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861, + -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861, + -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013, + -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861, + -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013, + -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013, + -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861, + -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861, + -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013, + -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861, + -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013, + -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013, + -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861, + -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861, + -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013, + -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861, + -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013, + -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013, + -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861, + -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861, + -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013, + -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861, + -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013, + -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013, + -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861, + -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861, + -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013, + -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861, + -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013, + -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013, + -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861, + -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861, + -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013, + -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861, + -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013, + -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013, + -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861, + -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861, + -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013, + -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861, + -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013, + -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013, + -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861, + -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861, + -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013, + -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861, + -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013, + -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013, + -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861, + -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861, + -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013, + -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861, + -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013, + -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013, + -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861, + -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861, + -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013, + -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861, + -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013, + -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013, + -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861, + -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861, + -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013, + -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861, + -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013, + -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013, + -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861, + -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861, + -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013, + -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861, + -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013, + -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013, + -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861, + -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861, + -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013, + -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861, + -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013, + -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013, + -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861, + -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861, + -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013, + -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861, + -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013, + -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013, + -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861, + -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861, + -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013, + -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861, + -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013, + -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013, + -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861, + -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861, + -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013, + -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861, + -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013, + -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013, + -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861, + -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861, + -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013, + -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861, + -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013, + -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013, + -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861, + -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861, + -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013, + -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861, + -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013, + 0,-0.997504,0.070606,0.055885,0.038543,-0.006013, + 0,-0.982044,0.18865,0.055885,0.038563,-0.005861, + -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861, + 0,-0.997504,0.070606,0.055885,0.038543,-0.006013, + -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861, + -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013, + 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013, + 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861, + 0,-0.982044,0.18865,0.055885,0.038563,-0.005861, + 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013, + 0,-0.982044,0.18865,0.055885,0.038563,-0.005861, + 0,-0.997504,0.070606,0.055885,0.038543,-0.006013, + 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013, + 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861, + 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861, + 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013, + 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861, + 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013, + 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013, + 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861, + 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861, + 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013, + 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861, + 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013, + 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013, + 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861, + 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861, + 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013, + 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861, + 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013, + 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013, + 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861, + 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861, + 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013, + 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861, + 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013, + 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013, + 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861, + 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861, + 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013, + 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861, + 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013, + 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013, + 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861, + 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861, + 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013, + 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861, + 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013, + 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013, + 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861, + 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861, + 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013, + 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861, + 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013, + 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013, + 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861, + 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861, + 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013, + 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861, + 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013, + 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013, + 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861, + 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861, + 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013, + 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861, + 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013, + 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013, + 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861, + 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861, + 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013, + 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861, + 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013, + 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013, + 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861, + 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861, + 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013, + 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861, + 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013, + 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013, + 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861, + 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861, + 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013, + 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861, + 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013, + 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013, + 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861, + 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861, + 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013, + 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861, + 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013, + 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013, + 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861, + 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861, + 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013, + 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861, + 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013, + 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013, + 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861, + 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861, + 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013, + 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861, + 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013, + 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013, + 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861, + 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861, + 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013, + 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861, + 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013, + 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013, + 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861, + 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861, + 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013, + 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861, + 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013, + 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013, + 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861, + 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861, + 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013, + 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861, + 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013, + 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013, + 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861, + 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861, + 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013, + 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861, + 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013, + 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013, + 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861, + 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861, + 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013, + 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861, + 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013, + 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013, + 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861, + 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861, + 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013, + 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861, + 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013, + 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013, + 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861, + 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861, + 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013, + 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861, + 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013, + 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013, + 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861, + 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861, + 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013, + 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861, + 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013, + 0.997504,0,0.070606,0.073227,0.055885,-0.006013, + 0.982044,0,0.18865,0.073207,0.055885,-0.005861, + 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861, + 0.997504,0,0.070606,0.073227,0.055885,-0.006013, + 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861, + 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013, + 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013, + 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861, + 0.982044,0,0.18865,0.073207,0.055885,-0.005861, + 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013, + 0.982044,0,0.18865,0.073207,0.055885,-0.005861, + 0.997504,0,0.070606,0.073227,0.055885,-0.006013, + 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013, + 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861, + 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861, + 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013, + 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861, + 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013, + 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013, + 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861, + 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861, + 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013, + 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861, + 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013, + 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013, + 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861, + 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861, + 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013, + 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861, + 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013, + 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013, + 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861, + 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861, + 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013, + 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861, + 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013, + 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013, + 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861, + 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861, + 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013, + 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861, + 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013, + 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013, + 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861, + 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861, + 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013, + 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861, + 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013, + 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013, + 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861, + 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861, + 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013, + 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861, + 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013, + 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013, + 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861, + 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861, + 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013, + 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861, + 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013, + 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013, + 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861, + 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861, + 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013, + 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861, + 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013, + 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013, + 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861, + 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861, + 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013, + 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861, + 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013, + 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013, + 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861, + 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861, + 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013, + 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861, + 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013, + 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013, + 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861, + 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861, + 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013, + 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861, + 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013, + 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013, + 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861, + 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861, + 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013, + 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861, + 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013, + 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013, + 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861, + 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861, + 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013, + 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861, + 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013, + 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013, + 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861, + 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861, + 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013, + 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861, + 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013, + 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013, + 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861, + 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861, + 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013, + 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861, + 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013, + 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013, + 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861, + 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861, + 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013, + 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861, + 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013, + 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013, + 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861, + 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861, + 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013, + 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861, + 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013, + 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013, + 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861, + 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861, + 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013, + 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861, + 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013, + 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013, + 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861, + 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861, + 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013, + 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861, + 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013, + 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013, + 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861, + 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861, + 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013, + 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861, + 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013, + 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013, + 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861, + 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861, + 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013, + 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861, + 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013, + 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013, + 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861, + 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861, + 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013, + 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861, + 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013, + 0,0.997504,0.070606,0.055885,0.073227,-0.006013, + 0,0.982044,0.18865,0.055885,0.073207,-0.005861, + 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861, + 0,0.997504,0.070606,0.055885,0.073227,-0.006013, + 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861, + 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013, + -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013, + -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861, + 0,0.982044,0.18865,0.055885,0.073207,-0.005861, + -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013, + 0,0.982044,0.18865,0.055885,0.073207,-0.005861, + 0,0.997504,0.070606,0.055885,0.073227,-0.006013, + -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013, + -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861, + -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861, + -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013, + -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861, + -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013, + -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013, + -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861, + -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861, + -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013, + -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861, + -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013, + -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013, + -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861, + -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861, + -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013, + -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861, + -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013, + -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013, + -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861, + -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861, + -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013, + -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861, + -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013, + -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013, + -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861, + -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861, + -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013, + -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861, + -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013, + -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013, + -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861, + -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861, + -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013, + -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861, + -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013, + -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013, + -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861, + -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861, + -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013, + -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861, + -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013, + -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013, + -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861, + -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861, + -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013, + -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861, + -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013, + -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013, + -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861, + -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861, + -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013, + -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861, + -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013, + -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013, + -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861, + -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861, + -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013, + -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861, + -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013, + -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013, + -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861, + -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861, + -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013, + -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861, + -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013, + -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013, + -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861, + -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861, + -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013, + -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861, + -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013, + -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013, + -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861, + -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861, + -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013, + -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861, + -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013, + -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013, + -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861, + -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861, + -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013, + -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861, + -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013, + -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013, + -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861, + -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861, + -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013, + -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861, + -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013, + -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013, + -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861, + -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861, + -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013, + -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861, + -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013, + -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013, + -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861, + -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861, + -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013, + -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861, + -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013, + -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013, + -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861, + -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861, + -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013, + -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861, + -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013, + -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013, + -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861, + -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861, + -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013, + -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861, + -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013, + -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013, + -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861, + -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861, + -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013, + -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861, + -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013, + -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013, + -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861, + -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861, + -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013, + -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861, + -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013, + -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013, + -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861, + -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861, + -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013, + -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861, + -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013, + -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013, + -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861, + -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861, + -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013, + -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861, + -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013, + -0.997504,0,0.070606,0.038543,0.055885,-0.006013, + -0.982044,0,0.18865,0.038563,0.055885,-0.005861, + -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861, + -0.997504,0,0.070606,0.038543,0.055885,-0.006013, + -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861, + -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013, + -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013, + -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861, + -0.982044,0,0.18865,0.038563,0.055885,-0.005861, + -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013, + -0.982044,0,0.18865,0.038563,0.055885,-0.005861, + -0.997504,0,0.070606,0.038543,0.055885,-0.006013, + -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013, + -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861, + -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861, + -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013, + -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861, + -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013, + -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013, + -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861, + -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861, + -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013, + -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861, + -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013, + -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013, + -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861, + -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861, + -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013, + -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861, + -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013, + -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013, + -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861, + -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861, + -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013, + -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861, + -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013, + -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861, + -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713, + -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713, + -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861, + -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713, + -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861, + -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861, + -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713, + -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713, + -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861, + -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713, + -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861, + -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861, + -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713, + -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713, + -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861, + -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713, + -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861, + -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861, + -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713, + -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713, + -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861, + -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713, + -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861, + -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861, + -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713, + -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713, + -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861, + -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713, + -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861, + -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861, + -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713, + -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713, + -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861, + -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713, + -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861, + -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861, + -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713, + -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713, + -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861, + -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713, + -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861, + -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861, + -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713, + -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713, + -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861, + -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713, + -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861, + -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861, + -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713, + -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713, + -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861, + -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713, + -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861, + -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861, + -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713, + -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713, + -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861, + -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713, + -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861, + -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861, + -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713, + -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713, + -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861, + -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713, + -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861, + -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861, + -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713, + -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713, + -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861, + -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713, + -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861, + -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861, + -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713, + -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713, + -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861, + -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713, + -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861, + -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861, + -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713, + -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713, + -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861, + -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713, + -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861, + -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861, + -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713, + -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713, + -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861, + -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713, + -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861, + -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861, + -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713, + -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713, + -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861, + -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713, + -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861, + -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861, + -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713, + -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713, + -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861, + -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713, + -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861, + -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861, + -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713, + -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713, + -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861, + -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713, + -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861, + -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861, + -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713, + -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713, + -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861, + -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713, + -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861, + -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861, + -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713, + -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713, + -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861, + -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713, + -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861, + 0,-0.982044,0.18865,0.055885,0.038563,-0.005861, + 0,-0.952665,0.304021,0.055885,0.038601,-0.005713, + -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713, + 0,-0.982044,0.18865,0.055885,0.038563,-0.005861, + -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713, + -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861, + 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861, + 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713, + 0,-0.952665,0.304021,0.055885,0.038601,-0.005713, + 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861, + 0,-0.952665,0.304021,0.055885,0.038601,-0.005713, + 0,-0.982044,0.18865,0.055885,0.038563,-0.005861, + 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861, + 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713, + 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713, + 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861, + 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713, + 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861, + 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861, + 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713, + 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713, + 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861, + 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713, + 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861, + 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861, + 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713, + 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713, + 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861, + 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713, + 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861, + 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861, + 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713, + 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713, + 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861, + 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713, + 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861, + 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861, + 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713, + 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713, + 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861, + 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713, + 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861, + 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861, + 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713, + 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713, + 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861, + 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713, + 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861, + 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861, + 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713, + 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713, + 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861, + 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713, + 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861, + 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861, + 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713, + 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713, + 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861, + 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713, + 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861, + 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861, + 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713, + 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713, + 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861, + 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713, + 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861, + 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861, + 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713, + 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713, + 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861, + 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713, + 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861, + 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861, + 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713, + 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713, + 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861, + 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713, + 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861, + 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861, + 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713, + 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713, + 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861, + 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713, + 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861, + 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861, + 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713, + 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713, + 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861, + 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713, + 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861, + 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861, + 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713, + 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713, + 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861, + 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713, + 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861, + 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861, + 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713, + 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713, + 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861, + 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713, + 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861, + 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861, + 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713, + 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713, + 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861, + 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713, + 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861, + 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861, + 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713, + 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713, + 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861, + 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713, + 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861, + 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861, + 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713, + 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713, + 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861, + 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713, + 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861, + 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861, + 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713, + 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713, + 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861, + 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713, + 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861, + 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861, + 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713, + 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713, + 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861, + 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713, + 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861, + 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861, + 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713, + 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713, + 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861, + 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713, + 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861, + 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861, + 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713, + 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713, + 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861, + 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713, + 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861, + 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861, + 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713, + 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713, + 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861, + 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713, + 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861, + 0.982044,0,0.18865,0.073207,0.055885,-0.005861, + 0.952665,0,0.304021,0.073169,0.055885,-0.005713, + 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713, + 0.982044,0,0.18865,0.073207,0.055885,-0.005861, + 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713, + 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861, + 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861, + 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713, + 0.952665,0,0.304021,0.073169,0.055885,-0.005713, + 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861, + 0.952665,0,0.304021,0.073169,0.055885,-0.005713, + 0.982044,0,0.18865,0.073207,0.055885,-0.005861, + 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861, + 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713, + 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713, + 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861, + 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713, + 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861, + 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861, + 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713, + 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713, + 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861, + 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713, + 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861, + 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861, + 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713, + 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713, + 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861, + 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713, + 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861, + 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861, + 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713, + 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713, + 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861, + 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713, + 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861, + 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861, + 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713, + 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713, + 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861, + 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713, + 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861, + 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861, + 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713, + 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713, + 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861, + 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713, + 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861, + 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861, + 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713, + 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713, + 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861, + 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713, + 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861, + 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861, + 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713, + 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713, + 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861, + 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713, + 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861, + 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861, + 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713, + 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713, + 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861, + 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713, + 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861, + 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861, + 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713, + 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713, + 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861, + 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713, + 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861, + 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861, + 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713, + 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713, + 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861, + 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713, + 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861, + 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861, + 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713, + 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713, + 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861, + 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713, + 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861, + 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861, + 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713, + 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713, + 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861, + 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713, + 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861, + 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861, + 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713, + 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713, + 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861, + 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713, + 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861, + 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861, + 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713, + 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713, + 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861, + 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713, + 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861, + 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861, + 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713, + 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713, + 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861, + 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713, + 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861, + 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861, + 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713, + 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713, + 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861, + 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713, + 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861, + 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861, + 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713, + 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713, + 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861, + 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713, + 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861, + 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861, + 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713, + 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713, + 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861, + 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713, + 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861, + 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861, + 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713, + 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713, + 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861, + 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713, + 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861, + 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861, + 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713, + 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713, + 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861, + 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713, + 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861, + 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861, + 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713, + 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713, + 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861, + 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713, + 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861, + 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861, + 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713, + 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713, + 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861, + 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713, + 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861, + 0,0.982044,0.18865,0.055885,0.073207,-0.005861, + 0,0.952665,0.304021,0.055885,0.073169,-0.005713, + 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713, + 0,0.982044,0.18865,0.055885,0.073207,-0.005861, + 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713, + 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861, + -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861, + -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713, + 0,0.952665,0.304021,0.055885,0.073169,-0.005713, + -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861, + 0,0.952665,0.304021,0.055885,0.073169,-0.005713, + 0,0.982044,0.18865,0.055885,0.073207,-0.005861, + -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861, + -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713, + -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713, + -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861, + -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713, + -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861, + -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861, + -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713, + -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713, + -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861, + -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713, + -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861, + -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861, + -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713, + -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713, + -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861, + -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713, + -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861, + -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861, + -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713, + -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713, + -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861, + -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713, + -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861, + -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861, + -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713, + -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713, + -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861, + -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713, + -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861, + -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861, + -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713, + -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713, + -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861, + -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713, + -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861, + -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861, + -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713, + -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713, + -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861, + -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713, + -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861, + -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861, + -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713, + -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713, + -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861, + -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713, + -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861, + -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861, + -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713, + -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713, + -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861, + -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713, + -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861, + -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861, + -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713, + -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713, + -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861, + -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713, + -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861, + -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861, + -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713, + -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713, + -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861, + -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713, + -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861, + -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861, + -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713, + -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713, + -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861, + -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713, + -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861, + -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861, + -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713, + -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713, + -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861, + -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713, + -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861, + -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861, + -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713, + -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713, + -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861, + -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713, + -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861, + -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861, + -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713, + -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713, + -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861, + -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713, + -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861, + -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861, + -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713, + -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713, + -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861, + -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713, + -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861, + -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861, + -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713, + -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713, + -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861, + -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713, + -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861, + -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861, + -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713, + -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713, + -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861, + -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713, + -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861, + -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861, + -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713, + -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713, + -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861, + -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713, + -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861, + -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861, + -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713, + -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713, + -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861, + -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713, + -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861, + -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861, + -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713, + -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713, + -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861, + -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713, + -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861, + -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861, + -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713, + -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713, + -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861, + -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713, + -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861, + -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861, + -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713, + -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713, + -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861, + -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713, + -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861, + -0.982044,0,0.18865,0.038563,0.055885,-0.005861, + -0.952665,0,0.304021,0.038601,0.055885,-0.005713, + -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713, + -0.982044,0,0.18865,0.038563,0.055885,-0.005861, + -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713, + -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861, + -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861, + -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713, + -0.952665,0,0.304021,0.038601,0.055885,-0.005713, + -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861, + -0.952665,0,0.304021,0.038601,0.055885,-0.005713, + -0.982044,0,0.18865,0.038563,0.055885,-0.005861, + -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861, + -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713, + -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713, + -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861, + -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713, + -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861, + -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861, + -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713, + -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713, + -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861, + -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713, + -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861, + -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861, + -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713, + -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713, + -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861, + -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713, + -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861, + -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713, + -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557, + -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557, + -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713, + -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557, + -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713, + -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713, + -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557, + -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557, + -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713, + -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557, + -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713, + -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713, + -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557, + -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557, + -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713, + -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557, + -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713, + -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713, + -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557, + -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557, + -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713, + -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557, + -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713, + -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713, + -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557, + -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557, + -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713, + -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557, + -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713, + -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713, + -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557, + -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557, + -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713, + -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557, + -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713, + -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713, + -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557, + -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557, + -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713, + -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557, + -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713, + -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713, + -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557, + -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557, + -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713, + -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557, + -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713, + -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713, + -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557, + -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557, + -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713, + -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557, + -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713, + -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713, + -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557, + -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557, + -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713, + -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557, + -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713, + -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713, + -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557, + -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557, + -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713, + -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557, + -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713, + -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713, + -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557, + -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557, + -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713, + -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557, + -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713, + -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713, + -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557, + -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557, + -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713, + -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557, + -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713, + -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713, + -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557, + -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557, + -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713, + -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557, + -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713, + -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713, + -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557, + -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557, + -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713, + -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557, + -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713, + -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713, + -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557, + -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557, + -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713, + -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557, + -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713, + -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713, + -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557, + -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557, + -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713, + -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557, + -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713, + -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713, + -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557, + -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557, + -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713, + -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557, + -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713, + -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713, + -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557, + -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557, + -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713, + -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557, + -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713, + -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713, + -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557, + -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557, + -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713, + -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557, + -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713, + -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713, + -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557, + -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557, + -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713, + -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557, + -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713, + 0,-0.952665,0.304021,0.055885,0.038601,-0.005713, + 0,-0.909784,0.415082,0.055885,0.038656,-0.00557, + -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557, + 0,-0.952665,0.304021,0.055885,0.038601,-0.005713, + -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557, + -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713, + 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713, + 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557, + 0,-0.909784,0.415082,0.055885,0.038656,-0.00557, + 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713, + 0,-0.909784,0.415082,0.055885,0.038656,-0.00557, + 0,-0.952665,0.304021,0.055885,0.038601,-0.005713, + 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713, + 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557, + 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557, + 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713, + 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557, + 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713, + 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713, + 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557, + 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557, + 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713, + 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557, + 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713, + 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713, + 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557, + 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557, + 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713, + 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557, + 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713, + 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713, + 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557, + 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557, + 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713, + 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557, + 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713, + 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713, + 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557, + 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557, + 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713, + 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557, + 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713, + 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713, + 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557, + 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557, + 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713, + 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557, + 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713, + 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713, + 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557, + 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557, + 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713, + 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557, + 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713, + 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713, + 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557, + 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557, + 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713, + 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557, + 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713, + 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713, + 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557, + 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557, + 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713, + 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557, + 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713, + 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713, + 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557, + 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557, + 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713, + 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557, + 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713, + 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713, + 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557, + 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557, + 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713, + 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557, + 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713, + 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713, + 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557, + 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557, + 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713, + 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557, + 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713, + 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713, + 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557, + 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557, + 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713, + 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557, + 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713, + 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713, + 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557, + 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557, + 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713, + 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557, + 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713, + 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713, + 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557, + 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557, + 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713, + 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557, + 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713, + 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713, + 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557, + 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557, + 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713, + 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557, + 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713, + 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713, + 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557, + 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557, + 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713, + 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557, + 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713, + 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713, + 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557, + 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557, + 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713, + 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557, + 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713, + 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713, + 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557, + 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557, + 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713, + 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557, + 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713, + 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713, + 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557, + 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557, + 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713, + 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557, + 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713, + 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713, + 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557, + 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557, + 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713, + 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557, + 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713, + 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713, + 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557, + 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557, + 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713, + 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557, + 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713, + 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713, + 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557, + 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557, + 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713, + 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557, + 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713, + 0.952665,0,0.304021,0.073169,0.055885,-0.005713, + 0.909784,0,0.415082,0.073114,0.055885,-0.00557, + 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557, + 0.952665,0,0.304021,0.073169,0.055885,-0.005713, + 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557, + 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713, + 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713, + 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557, + 0.909784,0,0.415082,0.073114,0.055885,-0.00557, + 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713, + 0.909784,0,0.415082,0.073114,0.055885,-0.00557, + 0.952665,0,0.304021,0.073169,0.055885,-0.005713, + 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713, + 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557, + 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557, + 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713, + 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557, + 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713, + 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713, + 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557, + 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557, + 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713, + 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557, + 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713, + 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713, + 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557, + 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557, + 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713, + 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557, + 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713, + 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713, + 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557, + 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557, + 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713, + 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557, + 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713, + 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713, + 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557, + 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557, + 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713, + 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557, + 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713, + 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713, + 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557, + 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557, + 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713, + 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557, + 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713, + 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713, + 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557, + 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557, + 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713, + 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557, + 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713, + 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713, + 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557, + 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557, + 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713, + 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557, + 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713, + 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713, + 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557, + 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557, + 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713, + 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557, + 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713, + 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713, + 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557, + 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557, + 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713, + 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557, + 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713, + 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713, + 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557, + 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557, + 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713, + 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557, + 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713, + 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713, + 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557, + 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557, + 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713, + 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557, + 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713, + 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713, + 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557, + 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557, + 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713, + 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557, + 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713, + 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713, + 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557, + 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557, + 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713, + 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557, + 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713, + 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713, + 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557, + 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557, + 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713, + 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557, + 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713, + 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713, + 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557, + 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557, + 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713, + 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557, + 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713, + 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713, + 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557, + 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557, + 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713, + 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557, + 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713, + 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713, + 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557, + 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557, + 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713, + 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557, + 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713, + 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713, + 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557, + 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557, + 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713, + 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557, + 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713, + 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713, + 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557, + 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557, + 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713, + 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557, + 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713, + 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713, + 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557, + 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557, + 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713, + 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557, + 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713, + 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713, + 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557, + 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557, + 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713, + 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557, + 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713, + 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713, + 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557, + 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557, + 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713, + 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557, + 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713, + 0,0.952665,0.304021,0.055885,0.073169,-0.005713, + 0,0.909784,0.415082,0.055885,0.073114,-0.00557, + 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557, + 0,0.952665,0.304021,0.055885,0.073169,-0.005713, + 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557, + 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713, + -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713, + -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557, + 0,0.909784,0.415082,0.055885,0.073114,-0.00557, + -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713, + 0,0.909784,0.415082,0.055885,0.073114,-0.00557, + 0,0.952665,0.304021,0.055885,0.073169,-0.005713, + -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713, + -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557, + -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557, + -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713, + -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557, + -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713, + -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713, + -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557, + -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557, + -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713, + -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557, + -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713, + -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713, + -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557, + -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557, + -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713, + -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557, + -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713, + -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713, + -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557, + -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557, + -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713, + -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557, + -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713, + -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713, + -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557, + -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557, + -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713, + -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557, + -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713, + -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713, + -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557, + -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557, + -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713, + -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557, + -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713, + -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713, + -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557, + -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557, + -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713, + -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557, + -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713, + -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713, + -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557, + -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557, + -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713, + -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557, + -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713, + -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713, + -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557, + -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557, + -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713, + -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557, + -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713, + -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713, + -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557, + -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557, + -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713, + -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557, + -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713, + -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713, + -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557, + -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557, + -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713, + -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557, + -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713, + -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713, + -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557, + -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557, + -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713, + -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557, + -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713, + -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713, + -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557, + -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557, + -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713, + -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557, + -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713, + -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713, + -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557, + -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557, + -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713, + -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557, + -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713, + -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713, + -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557, + -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557, + -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713, + -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557, + -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713, + -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713, + -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557, + -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557, + -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713, + -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557, + -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713, + -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713, + -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557, + -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557, + -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713, + -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557, + -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713, + -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713, + -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557, + -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557, + -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713, + -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557, + -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713, + -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713, + -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557, + -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557, + -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713, + -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557, + -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713, + -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713, + -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557, + -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557, + -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713, + -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557, + -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713, + -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713, + -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557, + -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557, + -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713, + -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557, + -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713, + -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713, + -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557, + -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557, + -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713, + -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557, + -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713, + -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713, + -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557, + -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557, + -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713, + -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557, + -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713, + -0.952665,0,0.304021,0.038601,0.055885,-0.005713, + -0.909784,0,0.415082,0.038656,0.055885,-0.00557, + -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557, + -0.952665,0,0.304021,0.038601,0.055885,-0.005713, + -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557, + -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713, + -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713, + -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557, + -0.909784,0,0.415082,0.038656,0.055885,-0.00557, + -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713, + -0.909784,0,0.415082,0.038656,0.055885,-0.00557, + -0.952665,0,0.304021,0.038601,0.055885,-0.005713, + -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713, + -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557, + -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557, + -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713, + -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557, + -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713, + -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713, + -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557, + -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557, + -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713, + -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557, + -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713, + -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557, + -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434, + -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434, + -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557, + -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434, + -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557, + -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557, + -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434, + -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434, + -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557, + -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434, + -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557, + -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557, + -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434, + -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434, + -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557, + -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434, + -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557, + -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557, + -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434, + -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434, + -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557, + -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434, + -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557, + -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557, + -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434, + -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434, + -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557, + -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434, + -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557, + -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557, + -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434, + -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434, + -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557, + -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434, + -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557, + -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557, + -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434, + -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434, + -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557, + -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434, + -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557, + -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557, + -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434, + -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434, + -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557, + -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434, + -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557, + -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557, + -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434, + -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434, + -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557, + -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434, + -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557, + -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557, + -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434, + -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434, + -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557, + -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434, + -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557, + -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557, + -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434, + -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434, + -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557, + -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434, + -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557, + -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557, + -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434, + -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434, + -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557, + -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434, + -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557, + -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557, + -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434, + -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434, + -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557, + -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434, + -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557, + -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557, + -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434, + -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434, + -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557, + -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434, + -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557, + -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557, + -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434, + -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434, + -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557, + -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434, + -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557, + -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557, + -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434, + -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434, + -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557, + -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434, + -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557, + -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557, + -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434, + -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434, + -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557, + -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434, + -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557, + -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557, + -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434, + -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434, + -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557, + -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434, + -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557, + -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557, + -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434, + -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434, + -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557, + -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434, + -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557, + -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557, + -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434, + -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434, + -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557, + -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434, + -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557, + -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557, + -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434, + -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434, + -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557, + -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434, + -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557, + -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557, + -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434, + -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434, + -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557, + -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434, + -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557, + 0,-0.909784,0.415082,0.055885,0.038656,-0.00557, + 0,-0.854008,0.52026,0.055885,0.038728,-0.005434, + -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434, + 0,-0.909784,0.415082,0.055885,0.038656,-0.00557, + -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434, + -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557, + 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557, + 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434, + 0,-0.854008,0.52026,0.055885,0.038728,-0.005434, + 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557, + 0,-0.854008,0.52026,0.055885,0.038728,-0.005434, + 0,-0.909784,0.415082,0.055885,0.038656,-0.00557, + 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557, + 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434, + 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434, + 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557, + 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434, + 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557, + 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557, + 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434, + 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434, + 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557, + 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434, + 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557, + 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557, + 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434, + 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434, + 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557, + 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434, + 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557, + 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557, + 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434, + 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434, + 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557, + 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434, + 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557, + 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557, + 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434, + 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434, + 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557, + 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434, + 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557, + 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557, + 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434, + 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434, + 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557, + 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434, + 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557, + 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557, + 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434, + 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434, + 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557, + 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434, + 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557, + 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557, + 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434, + 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434, + 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557, + 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434, + 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557, + 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557, + 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434, + 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434, + 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557, + 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434, + 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557, + 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557, + 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434, + 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434, + 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557, + 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434, + 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557, + 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557, + 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434, + 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434, + 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557, + 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434, + 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557, + 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557, + 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434, + 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434, + 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557, + 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434, + 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557, + 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557, + 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434, + 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434, + 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557, + 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434, + 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557, + 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557, + 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434, + 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434, + 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557, + 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434, + 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557, + 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557, + 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434, + 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434, + 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557, + 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434, + 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557, + 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557, + 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434, + 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434, + 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557, + 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434, + 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557, + 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557, + 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434, + 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434, + 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557, + 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434, + 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557, + 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557, + 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434, + 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434, + 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557, + 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434, + 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557, + 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557, + 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434, + 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434, + 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557, + 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434, + 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557, + 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557, + 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434, + 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434, + 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557, + 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434, + 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557, + 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557, + 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434, + 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434, + 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557, + 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434, + 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557, + 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557, + 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434, + 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434, + 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557, + 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434, + 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557, + 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557, + 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434, + 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434, + 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557, + 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434, + 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557, + 0.909784,0,0.415082,0.073114,0.055885,-0.00557, + 0.854008,0,0.52026,0.073042,0.055885,-0.005434, + 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434, + 0.909784,0,0.415082,0.073114,0.055885,-0.00557, + 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434, + 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557, + 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557, + 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434, + 0.854008,0,0.52026,0.073042,0.055885,-0.005434, + 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557, + 0.854008,0,0.52026,0.073042,0.055885,-0.005434, + 0.909784,0,0.415082,0.073114,0.055885,-0.00557, + 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557, + 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434, + 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434, + 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557, + 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434, + 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557, + 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557, + 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434, + 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434, + 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557, + 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434, + 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557, + 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557, + 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434, + 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434, + 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557, + 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434, + 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557, + 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557, + 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434, + 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434, + 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557, + 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434, + 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557, + 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557, + 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434, + 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434, + 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557, + 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434, + 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557, + 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557, + 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434, + 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434, + 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557, + 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434, + 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557, + 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557, + 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434, + 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434, + 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557, + 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434, + 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557, + 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557, + 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434, + 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434, + 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557, + 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434, + 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557, + 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557, + 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434, + 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434, + 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557, + 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434, + 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557, + 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557, + 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434, + 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434, + 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557, + 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434, + 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557, + 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557, + 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434, + 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434, + 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557, + 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434, + 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557, + 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557, + 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434, + 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434, + 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557, + 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434, + 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557, + 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557, + 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434, + 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434, + 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557, + 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434, + 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557, + 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557, + 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434, + 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434, + 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557, + 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434, + 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557, + 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557, + 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434, + 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434, + 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557, + 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434, + 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557, + 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557, + 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434, + 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434, + 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557, + 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434, + 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557, + 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557, + 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434, + 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434, + 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557, + 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434, + 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557, + 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557, + 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434, + 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434, + 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557, + 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434, + 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557, + 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557, + 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434, + 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434, + 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557, + 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434, + 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557, + 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557, + 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434, + 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434, + 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557, + 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434, + 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557, + 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557, + 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434, + 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434, + 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557, + 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434, + 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557, + 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557, + 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434, + 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434, + 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557, + 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434, + 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557, + 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557, + 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434, + 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434, + 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557, + 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434, + 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557, + 0,0.909784,0.415082,0.055885,0.073114,-0.00557, + 0,0.854008,0.52026,0.055885,0.073042,-0.005434, + 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434, + 0,0.909784,0.415082,0.055885,0.073114,-0.00557, + 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434, + 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557, + -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557, + -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434, + 0,0.854008,0.52026,0.055885,0.073042,-0.005434, + -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557, + 0,0.854008,0.52026,0.055885,0.073042,-0.005434, + 0,0.909784,0.415082,0.055885,0.073114,-0.00557, + -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557, + -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434, + -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434, + -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557, + -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434, + -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557, + -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557, + -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434, + -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434, + -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557, + -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434, + -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557, + -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557, + -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434, + -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434, + -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557, + -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434, + -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557, + -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557, + -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434, + -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434, + -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557, + -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434, + -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557, + -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557, + -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434, + -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434, + -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557, + -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434, + -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557, + -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557, + -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434, + -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434, + -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557, + -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434, + -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557, + -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557, + -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434, + -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434, + -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557, + -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434, + -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557, + -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557, + -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434, + -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434, + -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557, + -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434, + -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557, + -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557, + -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434, + -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434, + -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557, + -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434, + -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557, + -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557, + -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434, + -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434, + -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557, + -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434, + -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557, + -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557, + -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434, + -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434, + -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557, + -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434, + -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557, + -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557, + -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434, + -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434, + -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557, + -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434, + -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557, + -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557, + -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434, + -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434, + -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557, + -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434, + -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557, + -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557, + -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434, + -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434, + -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557, + -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434, + -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557, + -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557, + -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434, + -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434, + -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557, + -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434, + -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557, + -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557, + -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434, + -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434, + -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557, + -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434, + -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557, + -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557, + -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434, + -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434, + -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557, + -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434, + -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557, + -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557, + -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434, + -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434, + -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557, + -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434, + -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557, + -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557, + -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434, + -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434, + -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557, + -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434, + -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557, + -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557, + -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434, + -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434, + -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557, + -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434, + -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557, + -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557, + -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434, + -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434, + -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557, + -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434, + -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557, + -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557, + -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434, + -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434, + -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557, + -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434, + -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557, + -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557, + -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434, + -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434, + -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557, + -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434, + -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557, + -0.909784,0,0.415082,0.038656,0.055885,-0.00557, + -0.854008,0,0.52026,0.038728,0.055885,-0.005434, + -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434, + -0.909784,0,0.415082,0.038656,0.055885,-0.00557, + -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434, + -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557, + -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557, + -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434, + -0.854008,0,0.52026,0.038728,0.055885,-0.005434, + -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557, + -0.854008,0,0.52026,0.038728,0.055885,-0.005434, + -0.909784,0,0.415082,0.038656,0.055885,-0.00557, + -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557, + -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434, + -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434, + -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557, + -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434, + -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557, + -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434, + -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308, + -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308, + -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434, + -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308, + -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434, + -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434, + -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308, + -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308, + -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434, + -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308, + -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434, + -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434, + -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308, + -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308, + -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434, + -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308, + -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434, + -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434, + -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308, + -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308, + -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434, + -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308, + -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434, + -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434, + -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308, + -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308, + -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434, + -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308, + -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434, + -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434, + -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308, + -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308, + -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434, + -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308, + -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434, + -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434, + -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308, + -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308, + -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434, + -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308, + -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434, + -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434, + -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308, + -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308, + -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434, + -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308, + -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434, + -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434, + -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308, + -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308, + -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434, + -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308, + -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434, + -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434, + -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308, + -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308, + -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434, + -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308, + -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434, + -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434, + -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308, + -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308, + -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434, + -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308, + -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434, + -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434, + -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308, + -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308, + -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434, + -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308, + -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434, + -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434, + -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308, + -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308, + -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434, + -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308, + -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434, + -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434, + -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308, + -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308, + -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434, + -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308, + -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434, + -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434, + -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308, + -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308, + -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434, + -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308, + -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434, + -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434, + -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308, + -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308, + -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434, + -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308, + -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434, + -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434, + -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308, + -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308, + -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434, + -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308, + -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434, + -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434, + -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308, + -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308, + -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434, + -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308, + -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434, + -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434, + -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308, + -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308, + -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434, + -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308, + -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434, + -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434, + -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308, + -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308, + -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434, + -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308, + -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434, + -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434, + -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308, + -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308, + -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434, + -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308, + -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434, + -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434, + -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308, + -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308, + -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434, + -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308, + -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434, + -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434, + -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308, + -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308, + -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434, + -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308, + -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434, + 0,-0.854008,0.52026,0.055885,0.038728,-0.005434, + 0,-0.786128,0.618064,0.055885,0.038816,-0.005308, + -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308, + 0,-0.854008,0.52026,0.055885,0.038728,-0.005434, + -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308, + -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434, + 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434, + 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308, + 0,-0.786128,0.618064,0.055885,0.038816,-0.005308, + 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434, + 0,-0.786128,0.618064,0.055885,0.038816,-0.005308, + 0,-0.854008,0.52026,0.055885,0.038728,-0.005434, + 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434, + 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308, + 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308, + 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434, + 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308, + 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434, + 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434, + 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308, + 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308, + 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434, + 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308, + 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434, + 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434, + 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308, + 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308, + 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434, + 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308, + 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434, + 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434, + 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308, + 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308, + 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434, + 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308, + 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434, + 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434, + 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308, + 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308, + 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434, + 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308, + 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434, + 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434, + 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308, + 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308, + 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434, + 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308, + 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434, + 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434, + 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308, + 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308, + 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434, + 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308, + 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434, + 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434, + 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308, + 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308, + 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434, + 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308, + 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434, + 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434, + 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308, + 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308, + 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434, + 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308, + 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434, + 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434, + 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308, + 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308, + 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434, + 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308, + 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434, + 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434, + 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308, + 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308, + 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434, + 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308, + 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434, + 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434, + 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308, + 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308, + 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434, + 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308, + 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434, + 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434, + 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308, + 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308, + 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434, + 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308, + 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434, + 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434, + 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308, + 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308, + 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434, + 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308, + 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434, + 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434, + 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308, + 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308, + 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434, + 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308, + 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434, + 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434, + 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308, + 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308, + 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434, + 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308, + 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434, + 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434, + 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308, + 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308, + 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434, + 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308, + 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434, + 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434, + 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308, + 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308, + 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434, + 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308, + 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434, + 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434, + 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308, + 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308, + 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434, + 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308, + 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434, + 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434, + 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308, + 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308, + 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434, + 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308, + 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434, + 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434, + 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308, + 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308, + 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434, + 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308, + 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434, + 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434, + 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308, + 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308, + 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434, + 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308, + 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434, + 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434, + 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308, + 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308, + 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434, + 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308, + 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434, + 0.854008,0,0.52026,0.073042,0.055885,-0.005434, + 0.786128,0,0.618064,0.072955,0.055885,-0.005308, + 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308, + 0.854008,0,0.52026,0.073042,0.055885,-0.005434, + 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308, + 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434, + 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434, + 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308, + 0.786128,0,0.618064,0.072955,0.055885,-0.005308, + 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434, + 0.786128,0,0.618064,0.072955,0.055885,-0.005308, + 0.854008,0,0.52026,0.073042,0.055885,-0.005434, + 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434, + 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308, + 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308, + 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434, + 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308, + 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434, + 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434, + 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308, + 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308, + 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434, + 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308, + 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434, + 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434, + 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308, + 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308, + 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434, + 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308, + 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434, + 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434, + 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308, + 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308, + 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434, + 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308, + 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434, + 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434, + 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308, + 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308, + 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434, + 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308, + 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434, + 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434, + 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308, + 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308, + 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434, + 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308, + 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434, + 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434, + 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308, + 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308, + 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434, + 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308, + 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434, + 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434, + 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308, + 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308, + 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434, + 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308, + 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434, + 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434, + 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308, + 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308, + 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434, + 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308, + 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434, + 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434, + 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308, + 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308, + 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434, + 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308, + 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434, + 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434, + 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308, + 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308, + 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434, + 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308, + 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434, + 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434, + 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308, + 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308, + 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434, + 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308, + 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434, + 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434, + 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308, + 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308, + 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434, + 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308, + 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434, + 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434, + 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308, + 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308, + 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434, + 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308, + 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434, + 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434, + 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308, + 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308, + 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434, + 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308, + 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434, + 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434, + 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308, + 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308, + 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434, + 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308, + 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434, + 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434, + 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308, + 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308, + 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434, + 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308, + 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434, + 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434, + 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308, + 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308, + 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434, + 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308, + 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434, + 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434, + 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308, + 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308, + 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434, + 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308, + 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434, + 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434, + 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308, + 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308, + 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434, + 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308, + 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434, + 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434, + 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308, + 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308, + 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434, + 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308, + 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434, + 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434, + 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308, + 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308, + 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434, + 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308, + 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434, + 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434, + 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308, + 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308, + 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434, + 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308, + 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434, + 0,0.854008,0.52026,0.055885,0.073042,-0.005434, + 0,0.786128,0.618064,0.055885,0.072955,-0.005308, + 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308, + 0,0.854008,0.52026,0.055885,0.073042,-0.005434, + 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308, + 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434, + -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434, + -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308, + 0,0.786128,0.618064,0.055885,0.072955,-0.005308, + -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434, + 0,0.786128,0.618064,0.055885,0.072955,-0.005308, + 0,0.854008,0.52026,0.055885,0.073042,-0.005434, + -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434, + -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308, + -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308, + -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434, + -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308, + -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434, + -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434, + -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308, + -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308, + -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434, + -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308, + -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434, + -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434, + -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308, + -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308, + -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434, + -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308, + -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434, + -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434, + -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308, + -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308, + -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434, + -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308, + -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434, + -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434, + -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308, + -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308, + -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434, + -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308, + -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434, + -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434, + -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308, + -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308, + -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434, + -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308, + -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434, + -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434, + -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308, + -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308, + -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434, + -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308, + -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434, + -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434, + -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308, + -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308, + -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434, + -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308, + -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434, + -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434, + -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308, + -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308, + -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434, + -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308, + -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434, + -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434, + -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308, + -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308, + -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434, + -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308, + -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434, + -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434, + -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308, + -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308, + -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434, + -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308, + -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434, + -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434, + -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308, + -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308, + -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434, + -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308, + -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434, + -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434, + -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308, + -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308, + -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434, + -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308, + -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434, + -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434, + -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308, + -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308, + -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434, + -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308, + -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434, + -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434, + -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308, + -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308, + -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434, + -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308, + -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434, + -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434, + -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308, + -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308, + -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434, + -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308, + -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434, + -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434, + -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308, + -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308, + -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434, + -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308, + -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434, + -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434, + -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308, + -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308, + -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434, + -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308, + -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434, + -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434, + -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308, + -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308, + -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434, + -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308, + -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434, + -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434, + -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308, + -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308, + -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434, + -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308, + -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434, + -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434, + -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308, + -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308, + -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434, + -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308, + -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434, + -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434, + -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308, + -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308, + -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434, + -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308, + -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434, + -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434, + -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308, + -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308, + -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434, + -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308, + -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434, + -0.854008,0,0.52026,0.038728,0.055885,-0.005434, + -0.786128,0,0.618064,0.038816,0.055885,-0.005308, + -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308, + -0.854008,0,0.52026,0.038728,0.055885,-0.005434, + -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308, + -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434, + -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434, + -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308, + -0.786128,0,0.618064,0.038816,0.055885,-0.005308, + -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434, + -0.786128,0,0.618064,0.038816,0.055885,-0.005308, + -0.854008,0,0.52026,0.038728,0.055885,-0.005434, + -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308, + -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193, + -0.707106,0,0.707108,0.038917,0.055885,-0.005193, + -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308, + -0.707106,0,0.707108,0.038917,0.055885,-0.005193, + -0.786128,0,0.618064,0.038816,0.055885,-0.005308, + -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308, + -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193, + -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193, + -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308, + -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193, + -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308, + -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308, + -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193, + -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193, + -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308, + -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193, + -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308, + -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308, + -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193, + -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193, + -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308, + -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193, + -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308, + -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308, + -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193, + -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193, + -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308, + -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193, + -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308, + -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308, + -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193, + -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193, + -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308, + -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193, + -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308, + -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308, + -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193, + -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193, + -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308, + -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193, + -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308, + -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308, + -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193, + -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193, + -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308, + -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193, + -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308, + -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308, + -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193, + -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193, + -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308, + -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193, + -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308, + -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308, + -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193, + -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193, + -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308, + -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193, + -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308, + -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308, + -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193, + -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193, + -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308, + -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193, + -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308, + -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308, + -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193, + -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193, + -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308, + -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193, + -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308, + -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308, + -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193, + -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193, + -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308, + -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193, + -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308, + -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308, + -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193, + -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193, + -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308, + -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193, + -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308, + -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308, + -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193, + -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193, + -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308, + -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193, + -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308, + -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308, + -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193, + -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193, + -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308, + -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193, + -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308, + -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308, + -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193, + -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193, + -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308, + -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193, + -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308, + -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308, + -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193, + -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193, + -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308, + -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193, + -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308, + -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308, + -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193, + -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193, + -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308, + -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193, + -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308, + -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308, + -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193, + -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193, + -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308, + -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193, + -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308, + -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308, + -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193, + -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193, + -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308, + -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193, + -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308, + -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308, + -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193, + -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193, + -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308, + -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193, + -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308, + -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308, + -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193, + -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193, + -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308, + -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193, + -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308, + -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308, + -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193, + -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193, + -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308, + -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193, + -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308, + 0,-0.786128,0.618064,0.055885,0.038816,-0.005308, + 0,-0.707106,0.707108,0.055885,0.038917,-0.005193, + -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193, + 0,-0.786128,0.618064,0.055885,0.038816,-0.005308, + -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193, + -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308, + 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308, + 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193, + 0,-0.707106,0.707108,0.055885,0.038917,-0.005193, + 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308, + 0,-0.707106,0.707108,0.055885,0.038917,-0.005193, + 0,-0.786128,0.618064,0.055885,0.038816,-0.005308, + 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308, + 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193, + 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193, + 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308, + 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193, + 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308, + 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308, + 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193, + 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193, + 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308, + 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193, + 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308, + 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308, + 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193, + 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193, + 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308, + 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193, + 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308, + 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308, + 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193, + 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193, + 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308, + 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193, + 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308, + 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308, + 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193, + 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193, + 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308, + 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193, + 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308, + 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308, + 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193, + 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193, + 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308, + 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193, + 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308, + 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308, + 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193, + 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193, + 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308, + 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193, + 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308, + 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308, + 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193, + 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193, + 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308, + 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193, + 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308, + 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308, + 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193, + 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193, + 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308, + 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193, + 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308, + 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308, + 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193, + 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193, + 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308, + 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193, + 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308, + 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308, + 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193, + 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193, + 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308, + 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193, + 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308, + 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308, + 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193, + 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193, + 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308, + 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193, + 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308, + 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308, + 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193, + 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193, + 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308, + 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193, + 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308, + 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308, + 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193, + 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193, + 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308, + 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193, + 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308, + 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308, + 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193, + 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193, + 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308, + 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193, + 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308, + 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308, + 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193, + 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193, + 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308, + 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193, + 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308, + 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308, + 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193, + 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193, + 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308, + 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193, + 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308, + 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308, + 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193, + 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193, + 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308, + 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193, + 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308, + 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308, + 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193, + 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193, + 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308, + 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193, + 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308, + 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308, + 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193, + 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193, + 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308, + 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193, + 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308, + 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308, + 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193, + 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193, + 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308, + 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193, + 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308, + 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308, + 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193, + 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193, + 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308, + 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193, + 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308, + 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308, + 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193, + 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193, + 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308, + 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193, + 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308, + 0.786128,0,0.618064,0.072955,0.055885,-0.005308, + 0.707106,0,0.707108,0.072853,0.055885,-0.005193, + 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193, + 0.786128,0,0.618064,0.072955,0.055885,-0.005308, + 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193, + 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308, + 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308, + 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193, + 0.707106,0,0.707108,0.072853,0.055885,-0.005193, + 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308, + 0.707106,0,0.707108,0.072853,0.055885,-0.005193, + 0.786128,0,0.618064,0.072955,0.055885,-0.005308, + 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308, + 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193, + 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193, + 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308, + 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193, + 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308, + 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308, + 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193, + 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193, + 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308, + 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193, + 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308, + 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308, + 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193, + 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193, + 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308, + 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193, + 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308, + 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308, + 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193, + 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193, + 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308, + 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193, + 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308, + 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308, + 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193, + 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193, + 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308, + 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193, + 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308, + 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308, + 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193, + 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193, + 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308, + 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193, + 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308, + 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308, + 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193, + 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193, + 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308, + 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193, + 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308, + 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308, + 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193, + 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193, + 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308, + 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193, + 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308, + 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308, + 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193, + 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193, + 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308, + 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193, + 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308, + 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308, + 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193, + 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193, + 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308, + 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193, + 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308, + 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308, + 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193, + 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193, + 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308, + 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193, + 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308, + 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308, + 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193, + 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193, + 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308, + 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193, + 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308, + 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308, + 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193, + 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193, + 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308, + 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193, + 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308, + 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308, + 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193, + 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193, + 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308, + 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193, + 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308, + 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308, + 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193, + 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193, + 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308, + 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193, + 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308, + 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308, + 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193, + 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193, + 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308, + 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193, + 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308, + 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308, + 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193, + 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193, + 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308, + 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193, + 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308, + 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308, + 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193, + 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193, + 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308, + 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193, + 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308, + 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308, + 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193, + 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193, + 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308, + 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193, + 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308, + 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308, + 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193, + 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193, + 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308, + 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193, + 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308, + 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308, + 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193, + 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193, + 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308, + 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193, + 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308, + 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308, + 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193, + 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193, + 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308, + 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193, + 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308, + 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308, + 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193, + 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193, + 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308, + 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193, + 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308, + 0,0.786128,0.618064,0.055885,0.072955,-0.005308, + 0,0.707106,0.707108,0.055885,0.072853,-0.005193, + 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193, + 0,0.786128,0.618064,0.055885,0.072955,-0.005308, + 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193, + 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308, + -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308, + -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193, + 0,0.707106,0.707108,0.055885,0.072853,-0.005193, + -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308, + 0,0.707106,0.707108,0.055885,0.072853,-0.005193, + 0,0.786128,0.618064,0.055885,0.072955,-0.005308, + -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308, + -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193, + -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193, + -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308, + -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193, + -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308, + -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308, + -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193, + -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193, + -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308, + -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193, + -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308, + -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308, + -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193, + -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193, + -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308, + -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193, + -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308, + -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308, + -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193, + -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193, + -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308, + -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193, + -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308, + -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308, + -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193, + -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193, + -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308, + -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193, + -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308, + -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308, + -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193, + -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193, + -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308, + -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193, + -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308, + -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308, + -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193, + -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193, + -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308, + -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193, + -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308, + -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308, + -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193, + -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193, + -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308, + -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193, + -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308, + -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308, + -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193, + -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193, + -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308, + -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193, + -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308, + -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308, + -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193, + -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193, + -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308, + -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193, + -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308, + -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308, + -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193, + -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193, + -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308, + -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193, + -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308, + -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308, + -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193, + -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193, + -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308, + -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193, + -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308, + -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308, + -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193, + -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193, + -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308, + -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193, + -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308, + -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308, + -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193, + -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193, + -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308, + -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193, + -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308, + -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308, + -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193, + -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193, + -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308, + -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193, + -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308, + -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308, + -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193, + -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193, + -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308, + -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193, + -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308, + -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308, + -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193, + -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193, + -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308, + -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193, + -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308, + -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308, + -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193, + -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193, + -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308, + -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193, + -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308, + -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308, + -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193, + -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193, + -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308, + -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193, + -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308, + -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308, + -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193, + -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193, + -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308, + -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193, + -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308, + -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308, + -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193, + -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193, + -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308, + -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193, + -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308, + -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308, + -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193, + -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193, + -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308, + -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193, + -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308, + -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308, + -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193, + -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193, + -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308, + -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193, + -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308, + -0.786128,0,0.618064,0.038816,0.055885,-0.005308, + -0.707106,0,0.707108,0.038917,0.055885,-0.005193, + -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193, + -0.786128,0,0.618064,0.038816,0.055885,-0.005308, + -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193, + -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308, + -0.707106,0,0.707108,0.038917,0.055885,-0.005193, + -0.618061,0,0.78613,0.039032,0.055885,-0.005092, + -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092, + -0.707106,0,0.707108,0.038917,0.055885,-0.005193, + -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092, + -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193, + -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193, + -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092, + -0.618061,0,0.78613,0.039032,0.055885,-0.005092, + -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193, + -0.618061,0,0.78613,0.039032,0.055885,-0.005092, + -0.707106,0,0.707108,0.038917,0.055885,-0.005193, + -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193, + -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092, + -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092, + -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193, + -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092, + -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193, + -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193, + -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092, + -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092, + -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193, + -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092, + -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193, + -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193, + -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092, + -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092, + -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193, + -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092, + -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193, + -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193, + -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092, + -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092, + -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193, + -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092, + -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193, + -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193, + -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092, + -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092, + -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193, + -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092, + -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193, + -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193, + -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092, + -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092, + -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193, + -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092, + -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193, + -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193, + -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092, + -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092, + -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193, + -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092, + -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193, + -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193, + -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092, + -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092, + -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193, + -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092, + -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193, + -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193, + -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092, + -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092, + -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193, + -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092, + -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193, + -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193, + -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092, + -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092, + -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193, + -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092, + -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193, + -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193, + -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092, + -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092, + -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193, + -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092, + -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193, + -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193, + -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092, + -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092, + -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193, + -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092, + -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193, + -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193, + -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092, + -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092, + -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193, + -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092, + -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193, + -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193, + -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092, + -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092, + -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193, + -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092, + -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193, + -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193, + -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092, + -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092, + -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193, + -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092, + -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193, + -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193, + -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092, + -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092, + -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193, + -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092, + -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193, + -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193, + -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092, + -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092, + -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193, + -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092, + -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193, + -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193, + -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092, + -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092, + -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193, + -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092, + -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193, + -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193, + -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092, + -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092, + -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193, + -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092, + -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193, + -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193, + -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092, + -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092, + -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193, + -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092, + -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193, + -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193, + -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092, + -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092, + -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193, + -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092, + -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193, + -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193, + -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092, + -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092, + -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193, + -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092, + -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193, + -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193, + -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092, + -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092, + -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193, + -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092, + -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193, + 0,-0.707106,0.707108,0.055885,0.038917,-0.005193, + 0,-0.618061,0.78613,0.055885,0.039032,-0.005092, + -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092, + 0,-0.707106,0.707108,0.055885,0.038917,-0.005193, + -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092, + -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193, + 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193, + 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092, + 0,-0.618061,0.78613,0.055885,0.039032,-0.005092, + 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193, + 0,-0.618061,0.78613,0.055885,0.039032,-0.005092, + 0,-0.707106,0.707108,0.055885,0.038917,-0.005193, + 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193, + 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092, + 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092, + 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193, + 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092, + 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193, + 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193, + 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092, + 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092, + 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193, + 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092, + 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193, + 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193, + 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092, + 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092, + 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193, + 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092, + 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193, + 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193, + 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092, + 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092, + 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193, + 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092, + 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193, + 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193, + 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092, + 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092, + 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193, + 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092, + 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193, + 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193, + 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092, + 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092, + 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193, + 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092, + 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193, + 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193, + 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092, + 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092, + 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193, + 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092, + 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193, + 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193, + 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092, + 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092, + 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193, + 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092, + 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193, + 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193, + 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092, + 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092, + 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193, + 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092, + 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193, + 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193, + 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092, + 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092, + 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193, + 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092, + 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193, + 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193, + 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092, + 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092, + 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193, + 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092, + 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193, + 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193, + 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092, + 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092, + 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193, + 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092, + 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193, + 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193, + 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092, + 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092, + 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193, + 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092, + 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193, + 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193, + 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092, + 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092, + 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193, + 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092, + 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193, + 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193, + 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092, + 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092, + 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193, + 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092, + 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193, + 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193, + 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092, + 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092, + 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193, + 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092, + 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193, + 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193, + 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092, + 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092, + 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193, + 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092, + 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193, + 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193, + 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092, + 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092, + 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193, + 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092, + 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193, + 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193, + 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092, + 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092, + 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193, + 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092, + 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193, + 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193, + 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092, + 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092, + 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193, + 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092, + 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193, + 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193, + 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092, + 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092, + 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193, + 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092, + 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193, + 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193, + 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092, + 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092, + 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193, + 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092, + 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193, + 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193, + 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092, + 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092, + 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193, + 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092, + 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193, + 0.707106,0,0.707108,0.072853,0.055885,-0.005193, + 0.618061,0,0.78613,0.072739,0.055885,-0.005092, + 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092, + 0.707106,0,0.707108,0.072853,0.055885,-0.005193, + 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092, + 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193, + 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193, + 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092, + 0.618061,0,0.78613,0.072739,0.055885,-0.005092, + 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193, + 0.618061,0,0.78613,0.072739,0.055885,-0.005092, + 0.707106,0,0.707108,0.072853,0.055885,-0.005193, + 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193, + 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092, + 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092, + 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193, + 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092, + 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193, + 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193, + 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092, + 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092, + 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193, + 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092, + 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193, + 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193, + 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092, + 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092, + 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193, + 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092, + 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193, + 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193, + 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092, + 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092, + 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193, + 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092, + 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193, + 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193, + 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092, + 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092, + 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193, + 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092, + 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193, + 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193, + 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092, + 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092, + 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193, + 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092, + 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193, + 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193, + 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092, + 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092, + 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193, + 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092, + 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193, + 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193, + 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092, + 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092, + 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193, + 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092, + 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193, + 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193, + 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092, + 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092, + 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193, + 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092, + 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193, + 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193, + 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092, + 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092, + 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193, + 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092, + 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193, + 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193, + 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092, + 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092, + 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193, + 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092, + 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193, + 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193, + 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092, + 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092, + 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193, + 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092, + 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193, + 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193, + 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092, + 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092, + 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193, + 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092, + 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193, + 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193, + 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092, + 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092, + 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193, + 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092, + 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193, + 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193, + 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092, + 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092, + 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193, + 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092, + 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193, + 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193, + 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092, + 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092, + 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193, + 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092, + 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193, + 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193, + 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092, + 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092, + 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193, + 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092, + 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193, + 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193, + 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092, + 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092, + 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193, + 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092, + 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193, + 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193, + 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092, + 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092, + 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193, + 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092, + 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193, + 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193, + 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092, + 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092, + 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193, + 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092, + 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193, + 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193, + 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092, + 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092, + 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193, + 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092, + 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193, + 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193, + 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092, + 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092, + 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193, + 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092, + 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193, + 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193, + 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092, + 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092, + 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193, + 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092, + 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193, + 0,0.707106,0.707108,0.055885,0.072853,-0.005193, + 0,0.618061,0.78613,0.055885,0.072739,-0.005092, + 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092, + 0,0.707106,0.707108,0.055885,0.072853,-0.005193, + 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092, + 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193, + -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193, + -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092, + 0,0.618061,0.78613,0.055885,0.072739,-0.005092, + -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193, + 0,0.618061,0.78613,0.055885,0.072739,-0.005092, + 0,0.707106,0.707108,0.055885,0.072853,-0.005193, + -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193, + -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092, + -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092, + -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193, + -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092, + -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193, + -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193, + -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092, + -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092, + -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193, + -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092, + -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193, + -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193, + -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092, + -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092, + -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193, + -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092, + -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193, + -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193, + -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092, + -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092, + -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193, + -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092, + -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193, + -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193, + -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092, + -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092, + -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193, + -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092, + -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193, + -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193, + -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092, + -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092, + -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193, + -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092, + -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193, + -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193, + -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092, + -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092, + -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193, + -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092, + -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193, + -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193, + -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092, + -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092, + -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193, + -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092, + -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193, + -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193, + -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092, + -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092, + -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193, + -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092, + -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193, + -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193, + -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092, + -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092, + -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193, + -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092, + -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193, + -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193, + -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092, + -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092, + -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193, + -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092, + -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193, + -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193, + -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092, + -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092, + -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193, + -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092, + -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193, + -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193, + -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092, + -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092, + -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193, + -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092, + -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193, + -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193, + -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092, + -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092, + -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193, + -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092, + -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193, + -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193, + -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092, + -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092, + -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193, + -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092, + -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193, + -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193, + -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092, + -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092, + -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193, + -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092, + -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193, + -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193, + -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092, + -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092, + -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193, + -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092, + -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193, + -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193, + -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092, + -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092, + -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193, + -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092, + -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193, + -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193, + -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092, + -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092, + -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193, + -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092, + -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193, + -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193, + -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092, + -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092, + -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193, + -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092, + -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193, + -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193, + -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092, + -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092, + -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193, + -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092, + -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193, + -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193, + -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092, + -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092, + -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193, + -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092, + -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193, + -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193, + -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092, + -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092, + -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193, + -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092, + -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193, + -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092, + -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004, + -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004, + -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092, + -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004, + -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092, + -0.618061,0,0.78613,0.039032,0.055885,-0.005092, + -0.520257,0,0.85401,0.039158,0.055885,-0.005004, + -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004, + -0.618061,0,0.78613,0.039032,0.055885,-0.005092, + -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004, + -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092, + -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092, + -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004, + -0.520257,0,0.85401,0.039158,0.055885,-0.005004, + -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092, + -0.520257,0,0.85401,0.039158,0.055885,-0.005004, + -0.618061,0,0.78613,0.039032,0.055885,-0.005092, + -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092, + -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004, + -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004, + -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092, + -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004, + -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092, + -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092, + -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004, + -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004, + -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092, + -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004, + -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092, + -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092, + -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004, + -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004, + -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092, + -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004, + -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092, + -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092, + -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004, + -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004, + -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092, + -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004, + -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092, + -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092, + -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004, + -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004, + -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092, + -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004, + -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092, + -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092, + -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004, + -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004, + -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092, + -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004, + -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092, + -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092, + -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004, + -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004, + -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092, + -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004, + -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092, + -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092, + -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004, + -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004, + -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092, + -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004, + -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092, + -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092, + -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004, + -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004, + -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092, + -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004, + -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092, + -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092, + -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004, + -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004, + -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092, + -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004, + -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092, + -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092, + -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004, + -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004, + -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092, + -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004, + -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092, + -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092, + -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004, + -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004, + -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092, + -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004, + -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092, + -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092, + -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004, + -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004, + -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092, + -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004, + -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092, + -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092, + -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004, + -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004, + -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092, + -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004, + -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092, + -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092, + -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004, + -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004, + -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092, + -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004, + -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092, + -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092, + -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004, + -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004, + -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092, + -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004, + -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092, + -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092, + -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004, + -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004, + -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092, + -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004, + -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092, + -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092, + -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004, + -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004, + -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092, + -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004, + -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092, + -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092, + -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004, + -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004, + -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092, + -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004, + -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092, + -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092, + -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004, + -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004, + -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092, + -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004, + -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092, + -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092, + -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004, + -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004, + -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092, + -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004, + -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092, + -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092, + -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004, + -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004, + -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092, + -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004, + -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092, + -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092, + -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004, + -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004, + -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092, + -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004, + -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092, + 0,-0.618061,0.78613,0.055885,0.039032,-0.005092, + 0,-0.520257,0.85401,0.055885,0.039158,-0.005004, + -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004, + 0,-0.618061,0.78613,0.055885,0.039032,-0.005092, + -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004, + -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092, + 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092, + 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004, + 0,-0.520257,0.85401,0.055885,0.039158,-0.005004, + 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092, + 0,-0.520257,0.85401,0.055885,0.039158,-0.005004, + 0,-0.618061,0.78613,0.055885,0.039032,-0.005092, + 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092, + 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004, + 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004, + 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092, + 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004, + 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092, + 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092, + 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004, + 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004, + 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092, + 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004, + 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092, + 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092, + 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004, + 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004, + 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092, + 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004, + 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092, + 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092, + 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004, + 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004, + 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092, + 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004, + 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092, + 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092, + 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004, + 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004, + 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092, + 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004, + 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092, + 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092, + 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004, + 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004, + 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092, + 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004, + 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092, + 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092, + 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004, + 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004, + 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092, + 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004, + 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092, + 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092, + 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004, + 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004, + 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092, + 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004, + 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092, + 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092, + 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004, + 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004, + 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092, + 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004, + 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092, + 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092, + 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004, + 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004, + 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092, + 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004, + 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092, + 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092, + 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004, + 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004, + 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092, + 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004, + 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092, + 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092, + 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004, + 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004, + 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092, + 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004, + 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092, + 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092, + 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004, + 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004, + 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092, + 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004, + 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092, + 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092, + 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004, + 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004, + 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092, + 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004, + 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092, + 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092, + 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004, + 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004, + 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092, + 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004, + 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092, + 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092, + 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004, + 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004, + 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092, + 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004, + 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092, + 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092, + 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004, + 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004, + 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092, + 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004, + 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092, + 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092, + 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004, + 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004, + 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092, + 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004, + 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092, + 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092, + 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004, + 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004, + 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092, + 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004, + 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092, + 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092, + 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004, + 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004, + 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092, + 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004, + 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092, + 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092, + 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004, + 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004, + 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092, + 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004, + 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092, + 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092, + 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004, + 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004, + 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092, + 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004, + 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092, + 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092, + 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004, + 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004, + 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092, + 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004, + 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092, + 0.618061,0,0.78613,0.072739,0.055885,-0.005092, + 0.520257,0,0.85401,0.072613,0.055885,-0.005004, + 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004, + 0.618061,0,0.78613,0.072739,0.055885,-0.005092, + 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004, + 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092, + 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092, + 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004, + 0.520257,0,0.85401,0.072613,0.055885,-0.005004, + 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092, + 0.520257,0,0.85401,0.072613,0.055885,-0.005004, + 0.618061,0,0.78613,0.072739,0.055885,-0.005092, + 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092, + 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004, + 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004, + 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092, + 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004, + 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092, + 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092, + 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004, + 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004, + 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092, + 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004, + 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092, + 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092, + 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004, + 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004, + 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092, + 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004, + 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092, + 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092, + 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004, + 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004, + 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092, + 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004, + 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092, + 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092, + 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004, + 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004, + 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092, + 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004, + 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092, + 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092, + 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004, + 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004, + 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092, + 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004, + 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092, + 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092, + 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004, + 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004, + 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092, + 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004, + 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092, + 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092, + 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004, + 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004, + 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092, + 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004, + 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092, + 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092, + 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004, + 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004, + 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092, + 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004, + 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092, + 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092, + 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004, + 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004, + 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092, + 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004, + 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092, + 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092, + 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004, + 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004, + 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092, + 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004, + 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092, + 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092, + 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004, + 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004, + 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092, + 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004, + 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092, + 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092, + 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004, + 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004, + 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092, + 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004, + 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092, + 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092, + 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004, + 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004, + 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092, + 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004, + 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092, + 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092, + 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004, + 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004, + 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092, + 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004, + 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092, + 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092, + 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004, + 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004, + 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092, + 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004, + 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092, + 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092, + 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004, + 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004, + 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092, + 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004, + 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092, + 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092, + 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004, + 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004, + 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092, + 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004, + 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092, + 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092, + 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004, + 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004, + 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092, + 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004, + 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092, + 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092, + 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004, + 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004, + 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092, + 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004, + 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092, + 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092, + 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004, + 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004, + 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092, + 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004, + 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092, + 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092, + 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004, + 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004, + 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092, + 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004, + 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092, + 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092, + 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004, + 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004, + 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092, + 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004, + 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092, + 0,0.618061,0.78613,0.055885,0.072739,-0.005092, + 0,0.520257,0.85401,0.055885,0.072613,-0.005004, + 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004, + 0,0.618061,0.78613,0.055885,0.072739,-0.005092, + 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004, + 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092, + -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092, + -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004, + 0,0.520257,0.85401,0.055885,0.072613,-0.005004, + -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092, + 0,0.520257,0.85401,0.055885,0.072613,-0.005004, + 0,0.618061,0.78613,0.055885,0.072739,-0.005092, + -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092, + -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004, + -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004, + -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092, + -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004, + -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092, + -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092, + -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004, + -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004, + -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092, + -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004, + -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092, + -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092, + -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004, + -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004, + -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092, + -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004, + -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092, + -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092, + -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004, + -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004, + -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092, + -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004, + -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092, + -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092, + -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004, + -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004, + -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092, + -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004, + -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092, + -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092, + -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004, + -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004, + -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092, + -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004, + -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092, + -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092, + -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004, + -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004, + -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092, + -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004, + -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092, + -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092, + -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004, + -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004, + -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092, + -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004, + -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092, + -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092, + -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004, + -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004, + -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092, + -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004, + -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092, + -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092, + -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004, + -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004, + -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092, + -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004, + -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092, + -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092, + -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004, + -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004, + -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092, + -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004, + -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092, + -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092, + -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004, + -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004, + -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092, + -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004, + -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092, + -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092, + -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004, + -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004, + -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092, + -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004, + -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092, + -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092, + -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004, + -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004, + -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092, + -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004, + -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092, + -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092, + -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004, + -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004, + -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092, + -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004, + -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092, + -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092, + -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004, + -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004, + -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092, + -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004, + -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092, + -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092, + -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004, + -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004, + -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092, + -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004, + -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092, + -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092, + -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004, + -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004, + -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092, + -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004, + -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092, + -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092, + -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004, + -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004, + -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092, + -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004, + -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092, + -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092, + -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004, + -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004, + -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092, + -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004, + -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092, + -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092, + -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004, + -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004, + -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092, + -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004, + -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092, + -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092, + -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004, + -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004, + -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092, + -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004, + -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092, + -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004, + -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932, + -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932, + -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004, + -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932, + -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004, + -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004, + -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932, + -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932, + -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004, + -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932, + -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004, + -0.520257,0,0.85401,0.039158,0.055885,-0.005004, + -0.415079,0,0.909785,0.039294,0.055885,-0.004932, + -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932, + -0.520257,0,0.85401,0.039158,0.055885,-0.005004, + -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932, + -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004, + -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004, + -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932, + -0.415079,0,0.909785,0.039294,0.055885,-0.004932, + -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004, + -0.415079,0,0.909785,0.039294,0.055885,-0.004932, + -0.520257,0,0.85401,0.039158,0.055885,-0.005004, + -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004, + -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932, + -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932, + -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004, + -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932, + -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004, + -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004, + -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932, + -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932, + -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004, + -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932, + -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004, + -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004, + -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932, + -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932, + -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004, + -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932, + -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004, + -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004, + -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932, + -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932, + -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004, + -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932, + -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004, + -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004, + -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932, + -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932, + -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004, + -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932, + -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004, + -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004, + -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932, + -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932, + -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004, + -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932, + -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004, + -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004, + -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932, + -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932, + -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004, + -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932, + -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004, + -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004, + -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932, + -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932, + -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004, + -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932, + -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004, + -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004, + -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932, + -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932, + -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004, + -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932, + -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004, + -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004, + -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932, + -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932, + -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004, + -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932, + -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004, + -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004, + -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932, + -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932, + -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004, + -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932, + -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004, + -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004, + -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932, + -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932, + -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004, + -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932, + -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004, + -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004, + -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932, + -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932, + -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004, + -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932, + -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004, + -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004, + -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932, + -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932, + -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004, + -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932, + -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004, + -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004, + -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932, + -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932, + -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004, + -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932, + -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004, + -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004, + -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932, + -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932, + -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004, + -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932, + -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004, + -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004, + -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932, + -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932, + -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004, + -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932, + -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004, + -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004, + -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932, + -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932, + -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004, + -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932, + -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004, + -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004, + -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932, + -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932, + -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004, + -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932, + -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004, + -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004, + -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932, + -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932, + -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004, + -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932, + -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004, + -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004, + -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932, + -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932, + -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004, + -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932, + -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004, + -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004, + -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932, + -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932, + -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004, + -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932, + -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004, + -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004, + -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932, + -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932, + -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004, + -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932, + -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004, + 0,-0.520257,0.85401,0.055885,0.039158,-0.005004, + 0,-0.415079,0.909785,0.055885,0.039294,-0.004932, + -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932, + 0,-0.520257,0.85401,0.055885,0.039158,-0.005004, + -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932, + -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004, + 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004, + 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932, + 0,-0.415079,0.909785,0.055885,0.039294,-0.004932, + 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004, + 0,-0.415079,0.909785,0.055885,0.039294,-0.004932, + 0,-0.520257,0.85401,0.055885,0.039158,-0.005004, + 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004, + 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932, + 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932, + 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004, + 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932, + 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004, + 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004, + 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932, + 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932, + 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004, + 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932, + 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004, + 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004, + 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932, + 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932, + 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004, + 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932, + 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004, + 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004, + 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932, + 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932, + 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004, + 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932, + 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004, + 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004, + 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932, + 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932, + 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004, + 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932, + 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004, + 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004, + 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932, + 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932, + 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004, + 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932, + 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004, + 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004, + 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932, + 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932, + 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004, + 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932, + 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004, + 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004, + 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932, + 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932, + 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004, + 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932, + 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004, + 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004, + 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932, + 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932, + 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004, + 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932, + 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004, + 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004, + 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932, + 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932, + 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004, + 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932, + 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004, + 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004, + 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932, + 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932, + 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004, + 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932, + 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004, + 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004, + 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932, + 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932, + 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004, + 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932, + 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004, + 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004, + 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932, + 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932, + 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004, + 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932, + 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004, + 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004, + 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932, + 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932, + 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004, + 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932, + 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004, + 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004, + 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932, + 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932, + 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004, + 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932, + 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004, + 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004, + 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932, + 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932, + 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004, + 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932, + 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004, + 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004, + 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932, + 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932, + 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004, + 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932, + 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004, + 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004, + 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932, + 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932, + 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004, + 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932, + 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004, + 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004, + 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932, + 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932, + 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004, + 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932, + 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004, + 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004, + 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932, + 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932, + 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004, + 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932, + 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004, + 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004, + 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932, + 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932, + 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004, + 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932, + 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004, + 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004, + 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932, + 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932, + 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004, + 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932, + 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004, + 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004, + 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932, + 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932, + 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004, + 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932, + 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004, + 0.520257,0,0.85401,0.072613,0.055885,-0.005004, + 0.415079,0,0.909785,0.072477,0.055885,-0.004932, + 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932, + 0.520257,0,0.85401,0.072613,0.055885,-0.005004, + 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932, + 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004, + 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004, + 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932, + 0.415079,0,0.909785,0.072477,0.055885,-0.004932, + 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004, + 0.415079,0,0.909785,0.072477,0.055885,-0.004932, + 0.520257,0,0.85401,0.072613,0.055885,-0.005004, + 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004, + 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932, + 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932, + 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004, + 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932, + 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004, + 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004, + 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932, + 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932, + 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004, + 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932, + 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004, + 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004, + 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932, + 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932, + 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004, + 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932, + 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004, + 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004, + 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932, + 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932, + 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004, + 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932, + 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004, + 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004, + 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932, + 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932, + 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004, + 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932, + 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004, + 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004, + 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932, + 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932, + 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004, + 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932, + 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004, + 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004, + 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932, + 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932, + 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004, + 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932, + 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004, + 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004, + 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932, + 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932, + 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004, + 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932, + 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004, + 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004, + 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932, + 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932, + 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004, + 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932, + 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004, + 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004, + 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932, + 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932, + 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004, + 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932, + 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004, + 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004, + 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932, + 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932, + 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004, + 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932, + 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004, + 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004, + 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932, + 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932, + 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004, + 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932, + 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004, + 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004, + 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932, + 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932, + 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004, + 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932, + 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004, + 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004, + 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932, + 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932, + 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004, + 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932, + 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004, + 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004, + 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932, + 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932, + 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004, + 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932, + 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004, + 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004, + 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932, + 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932, + 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004, + 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932, + 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004, + 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004, + 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932, + 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932, + 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004, + 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932, + 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004, + 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004, + 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932, + 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932, + 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004, + 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932, + 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004, + 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004, + 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932, + 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932, + 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004, + 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932, + 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004, + 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004, + 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932, + 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932, + 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004, + 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932, + 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004, + 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004, + 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932, + 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932, + 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004, + 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932, + 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004, + 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004, + 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932, + 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932, + 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004, + 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932, + 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004, + 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004, + 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932, + 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932, + 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004, + 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932, + 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004, + 0,0.520257,0.85401,0.055885,0.072613,-0.005004, + 0,0.415079,0.909785,0.055885,0.072477,-0.004932, + 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932, + 0,0.520257,0.85401,0.055885,0.072613,-0.005004, + 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932, + 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004, + -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004, + -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932, + 0,0.415079,0.909785,0.055885,0.072477,-0.004932, + -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004, + 0,0.415079,0.909785,0.055885,0.072477,-0.004932, + 0,0.520257,0.85401,0.055885,0.072613,-0.005004, + -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004, + -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932, + -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932, + -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004, + -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932, + -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004, + -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004, + -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932, + -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932, + -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004, + -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932, + -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004, + -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004, + -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932, + -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932, + -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004, + -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932, + -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004, + -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004, + -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932, + -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932, + -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004, + -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932, + -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004, + -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004, + -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932, + -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932, + -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004, + -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932, + -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004, + -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004, + -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932, + -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932, + -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004, + -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932, + -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004, + -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004, + -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932, + -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932, + -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004, + -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932, + -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004, + -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004, + -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932, + -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932, + -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004, + -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932, + -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004, + -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004, + -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932, + -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932, + -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004, + -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932, + -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004, + -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004, + -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932, + -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932, + -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004, + -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932, + -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004, + -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004, + -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932, + -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932, + -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004, + -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932, + -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004, + -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004, + -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932, + -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932, + -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004, + -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932, + -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004, + -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004, + -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932, + -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932, + -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004, + -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932, + -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004, + -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004, + -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932, + -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932, + -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004, + -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932, + -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004, + -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004, + -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932, + -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932, + -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004, + -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932, + -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004, + -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004, + -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932, + -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932, + -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004, + -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932, + -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004, + -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004, + -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932, + -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932, + -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004, + -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932, + -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004, + -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004, + -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932, + -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932, + -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004, + -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932, + -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004, + -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004, + -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932, + -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932, + -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004, + -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932, + -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004, + -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004, + -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932, + -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932, + -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004, + -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932, + -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004, + -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004, + -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932, + -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932, + -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004, + -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932, + -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004, + -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932, + -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877, + -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877, + -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932, + -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877, + -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932, + -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932, + -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877, + -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877, + -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932, + -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877, + -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932, + -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932, + -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877, + -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877, + -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932, + -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877, + -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932, + -0.415079,0,0.909785,0.039294,0.055885,-0.004932, + -0.304019,0,0.952666,0.039437,0.055885,-0.004877, + -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877, + -0.415079,0,0.909785,0.039294,0.055885,-0.004932, + -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877, + -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932, + -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932, + -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877, + -0.304019,0,0.952666,0.039437,0.055885,-0.004877, + -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932, + -0.304019,0,0.952666,0.039437,0.055885,-0.004877, + -0.415079,0,0.909785,0.039294,0.055885,-0.004932, + -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932, + -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877, + -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877, + -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932, + -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877, + -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932, + -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932, + -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877, + -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877, + -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932, + -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877, + -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932, + -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932, + -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877, + -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877, + -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932, + -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877, + -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932, + -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932, + -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877, + -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877, + -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932, + -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877, + -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932, + -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932, + -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877, + -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877, + -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932, + -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877, + -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932, + -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932, + -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877, + -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877, + -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932, + -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877, + -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932, + -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932, + -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877, + -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877, + -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932, + -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877, + -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932, + -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932, + -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877, + -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877, + -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932, + -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877, + -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932, + -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932, + -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877, + -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877, + -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932, + -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877, + -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932, + -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932, + -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877, + -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877, + -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932, + -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877, + -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932, + -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932, + -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877, + -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877, + -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932, + -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877, + -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932, + -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932, + -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877, + -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877, + -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932, + -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877, + -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932, + -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932, + -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877, + -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877, + -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932, + -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877, + -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932, + -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932, + -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877, + -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877, + -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932, + -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877, + -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932, + -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932, + -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877, + -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877, + -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932, + -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877, + -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932, + -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932, + -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877, + -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877, + -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932, + -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877, + -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932, + -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932, + -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877, + -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877, + -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932, + -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877, + -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932, + -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932, + -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877, + -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877, + -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932, + -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877, + -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932, + -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932, + -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877, + -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877, + -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932, + -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877, + -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932, + -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932, + -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877, + -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877, + -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932, + -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877, + -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932, + -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932, + -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877, + -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877, + -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932, + -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877, + -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932, + -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932, + -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877, + -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877, + -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932, + -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877, + -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932, + -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932, + -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877, + -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877, + -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932, + -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877, + -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932, + 0,-0.415079,0.909785,0.055885,0.039294,-0.004932, + 0,-0.304019,0.952666,0.055885,0.039437,-0.004877, + -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877, + 0,-0.415079,0.909785,0.055885,0.039294,-0.004932, + -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877, + -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932, + 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932, + 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877, + 0,-0.304019,0.952666,0.055885,0.039437,-0.004877, + 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932, + 0,-0.304019,0.952666,0.055885,0.039437,-0.004877, + 0,-0.415079,0.909785,0.055885,0.039294,-0.004932, + 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932, + 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877, + 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877, + 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932, + 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877, + 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932, + 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932, + 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877, + 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877, + 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932, + 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877, + 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932, + 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932, + 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877, + 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877, + 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932, + 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877, + 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932, + 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932, + 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877, + 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877, + 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932, + 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877, + 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932, + 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932, + 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877, + 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877, + 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932, + 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877, + 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932, + 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932, + 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877, + 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877, + 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932, + 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877, + 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932, + 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932, + 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877, + 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877, + 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932, + 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877, + 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932, + 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932, + 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877, + 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877, + 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932, + 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877, + 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932, + 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932, + 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877, + 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877, + 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932, + 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877, + 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932, + 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932, + 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877, + 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877, + 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932, + 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877, + 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932, + 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932, + 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877, + 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877, + 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932, + 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877, + 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932, + 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932, + 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877, + 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877, + 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932, + 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877, + 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932, + 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932, + 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877, + 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877, + 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932, + 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877, + 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932, + 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932, + 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877, + 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877, + 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932, + 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877, + 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932, + 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932, + 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877, + 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877, + 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932, + 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877, + 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932, + 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932, + 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877, + 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877, + 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932, + 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877, + 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932, + 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932, + 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877, + 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877, + 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932, + 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877, + 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932, + 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932, + 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877, + 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877, + 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932, + 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877, + 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932, + 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932, + 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877, + 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877, + 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932, + 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877, + 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932, + 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932, + 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877, + 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877, + 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932, + 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877, + 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932, + 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932, + 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877, + 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877, + 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932, + 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877, + 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932, + 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932, + 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877, + 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877, + 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932, + 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877, + 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932, + 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932, + 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877, + 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877, + 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932, + 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877, + 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932, + 0.415079,0,0.909785,0.072477,0.055885,-0.004932, + 0.304019,0,0.952666,0.072334,0.055885,-0.004877, + 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877, + 0.415079,0,0.909785,0.072477,0.055885,-0.004932, + 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877, + 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932, + 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932, + 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877, + 0.304019,0,0.952666,0.072334,0.055885,-0.004877, + 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932, + 0.304019,0,0.952666,0.072334,0.055885,-0.004877, + 0.415079,0,0.909785,0.072477,0.055885,-0.004932, + 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932, + 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877, + 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877, + 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932, + 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877, + 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932, + 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932, + 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877, + 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877, + 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932, + 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877, + 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932, + 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932, + 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877, + 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877, + 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932, + 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877, + 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932, + 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932, + 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877, + 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877, + 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932, + 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877, + 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932, + 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932, + 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877, + 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877, + 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932, + 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877, + 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932, + 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932, + 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877, + 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877, + 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932, + 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877, + 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932, + 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932, + 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877, + 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877, + 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932, + 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877, + 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932, + 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932, + 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877, + 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877, + 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932, + 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877, + 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932, + 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932, + 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877, + 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877, + 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932, + 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877, + 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932, + 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932, + 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877, + 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877, + 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932, + 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877, + 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932, + 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932, + 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877, + 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877, + 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932, + 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877, + 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932, + 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932, + 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877, + 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877, + 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932, + 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877, + 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932, + 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932, + 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877, + 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877, + 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932, + 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877, + 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932, + 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932, + 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877, + 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877, + 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932, + 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877, + 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932, + 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932, + 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877, + 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877, + 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932, + 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877, + 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932, + 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932, + 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877, + 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877, + 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932, + 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877, + 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932, + 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932, + 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877, + 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877, + 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932, + 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877, + 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932, + 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932, + 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877, + 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877, + 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932, + 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877, + 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932, + 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932, + 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877, + 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877, + 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932, + 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877, + 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932, + 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932, + 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877, + 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877, + 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932, + 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877, + 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932, + 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932, + 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877, + 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877, + 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932, + 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877, + 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932, + 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932, + 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877, + 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877, + 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932, + 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877, + 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932, + 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932, + 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877, + 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877, + 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932, + 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877, + 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932, + 0,0.415079,0.909785,0.055885,0.072477,-0.004932, + 0,0.304019,0.952666,0.055885,0.072334,-0.004877, + 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877, + 0,0.415079,0.909785,0.055885,0.072477,-0.004932, + 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877, + 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932, + -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932, + -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877, + 0,0.304019,0.952666,0.055885,0.072334,-0.004877, + -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932, + 0,0.304019,0.952666,0.055885,0.072334,-0.004877, + 0,0.415079,0.909785,0.055885,0.072477,-0.004932, + -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932, + -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877, + -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877, + -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932, + -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877, + -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932, + -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932, + -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877, + -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877, + -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932, + -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877, + -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932, + -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932, + -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877, + -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877, + -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932, + -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877, + -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932, + -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932, + -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877, + -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877, + -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932, + -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877, + -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932, + -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932, + -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877, + -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877, + -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932, + -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877, + -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932, + -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932, + -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877, + -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877, + -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932, + -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877, + -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932, + -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932, + -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877, + -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877, + -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932, + -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877, + -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932, + -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932, + -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877, + -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877, + -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932, + -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877, + -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932, + -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932, + -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877, + -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877, + -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932, + -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877, + -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932, + -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932, + -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877, + -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877, + -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932, + -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877, + -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932, + -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932, + -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877, + -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877, + -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932, + -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877, + -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932, + -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932, + -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877, + -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877, + -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932, + -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877, + -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932, + -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932, + -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877, + -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877, + -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932, + -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877, + -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932, + -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932, + -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877, + -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877, + -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932, + -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877, + -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932, + -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932, + -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877, + -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877, + -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932, + -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877, + -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932, + -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932, + -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877, + -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877, + -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932, + -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877, + -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932, + -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932, + -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877, + -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877, + -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932, + -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877, + -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932, + -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932, + -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877, + -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877, + -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932, + -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877, + -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932, + -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932, + -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877, + -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877, + -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932, + -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877, + -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932, + -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932, + -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877, + -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877, + -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932, + -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877, + -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932, + -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877, + -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839, + -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839, + -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877, + -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839, + -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877, + -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877, + -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839, + -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839, + -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877, + -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839, + -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877, + -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877, + -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839, + -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839, + -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877, + -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839, + -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877, + -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877, + -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839, + -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839, + -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877, + -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839, + -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877, + -0.304019,0,0.952666,0.039437,0.055885,-0.004877, + -0.188649,0,0.982045,0.039585,0.055885,-0.004839, + -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839, + -0.304019,0,0.952666,0.039437,0.055885,-0.004877, + -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839, + -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877, + -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877, + -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839, + -0.188649,0,0.982045,0.039585,0.055885,-0.004839, + -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877, + -0.188649,0,0.982045,0.039585,0.055885,-0.004839, + -0.304019,0,0.952666,0.039437,0.055885,-0.004877, + -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877, + -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839, + -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839, + -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877, + -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839, + -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877, + -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877, + -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839, + -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839, + -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877, + -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839, + -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877, + -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877, + -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839, + -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839, + -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877, + -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839, + -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877, + -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877, + -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839, + -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839, + -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877, + -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839, + -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877, + -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877, + -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839, + -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839, + -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877, + -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839, + -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877, + -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877, + -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839, + -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839, + -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877, + -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839, + -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877, + -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877, + -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839, + -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839, + -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877, + -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839, + -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877, + -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877, + -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839, + -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839, + -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877, + -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839, + -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877, + -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877, + -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839, + -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839, + -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877, + -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839, + -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877, + -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877, + -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839, + -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839, + -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877, + -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839, + -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877, + -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877, + -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839, + -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839, + -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877, + -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839, + -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877, + -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877, + -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839, + -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839, + -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877, + -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839, + -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877, + -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877, + -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839, + -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839, + -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877, + -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839, + -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877, + -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877, + -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839, + -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839, + -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877, + -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839, + -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877, + -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877, + -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839, + -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839, + -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877, + -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839, + -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877, + -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877, + -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839, + -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839, + -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877, + -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839, + -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877, + -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877, + -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839, + -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839, + -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877, + -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839, + -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877, + -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877, + -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839, + -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839, + -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877, + -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839, + -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877, + -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877, + -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839, + -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839, + -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877, + -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839, + -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877, + -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877, + -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839, + -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839, + -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877, + -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839, + -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877, + -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877, + -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839, + -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839, + -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877, + -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839, + -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877, + -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877, + -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839, + -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839, + -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877, + -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839, + -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877, + -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877, + -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839, + -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839, + -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877, + -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839, + -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877, + 0,-0.304019,0.952666,0.055885,0.039437,-0.004877, + 0,-0.188649,0.982045,0.055885,0.039585,-0.004839, + -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839, + 0,-0.304019,0.952666,0.055885,0.039437,-0.004877, + -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839, + -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877, + 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877, + 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839, + 0,-0.188649,0.982045,0.055885,0.039585,-0.004839, + 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877, + 0,-0.188649,0.982045,0.055885,0.039585,-0.004839, + 0,-0.304019,0.952666,0.055885,0.039437,-0.004877, + 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877, + 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839, + 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839, + 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877, + 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839, + 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877, + 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877, + 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839, + 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839, + 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877, + 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839, + 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877, + 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877, + 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839, + 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839, + 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877, + 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839, + 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877, + 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877, + 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839, + 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839, + 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877, + 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839, + 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877, + 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877, + 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839, + 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839, + 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877, + 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839, + 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877, + 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877, + 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839, + 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839, + 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877, + 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839, + 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877, + 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877, + 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839, + 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839, + 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877, + 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839, + 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877, + 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877, + 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839, + 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839, + 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877, + 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839, + 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877, + 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877, + 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839, + 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839, + 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877, + 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839, + 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877, + 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877, + 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839, + 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839, + 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877, + 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839, + 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877, + 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877, + 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839, + 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839, + 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877, + 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839, + 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877, + 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877, + 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839, + 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839, + 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877, + 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839, + 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877, + 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877, + 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839, + 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839, + 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877, + 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839, + 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877, + 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877, + 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839, + 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839, + 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877, + 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839, + 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877, + 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877, + 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839, + 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839, + 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877, + 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839, + 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877, + 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877, + 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839, + 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839, + 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877, + 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839, + 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877, + 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877, + 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839, + 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839, + 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877, + 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839, + 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877, + 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877, + 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839, + 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839, + 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877, + 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839, + 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877, + 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877, + 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839, + 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839, + 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877, + 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839, + 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877, + 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877, + 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839, + 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839, + 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877, + 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839, + 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877, + 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877, + 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839, + 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839, + 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877, + 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839, + 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877, + 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877, + 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839, + 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839, + 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877, + 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839, + 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877, + 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877, + 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839, + 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839, + 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877, + 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839, + 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877, + 0.304019,0,0.952666,0.072334,0.055885,-0.004877, + 0.188649,0,0.982045,0.072186,0.055885,-0.004839, + 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839, + 0.304019,0,0.952666,0.072334,0.055885,-0.004877, + 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839, + 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877, + 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877, + 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839, + 0.188649,0,0.982045,0.072186,0.055885,-0.004839, + 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877, + 0.188649,0,0.982045,0.072186,0.055885,-0.004839, + 0.304019,0,0.952666,0.072334,0.055885,-0.004877, + 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877, + 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839, + 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839, + 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877, + 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839, + 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877, + 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877, + 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839, + 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839, + 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877, + 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839, + 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877, + 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877, + 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839, + 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839, + 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877, + 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839, + 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877, + 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877, + 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839, + 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839, + 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877, + 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839, + 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877, + 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877, + 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839, + 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839, + 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877, + 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839, + 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877, + 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877, + 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839, + 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839, + 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877, + 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839, + 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877, + 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877, + 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839, + 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839, + 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877, + 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839, + 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877, + 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877, + 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839, + 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839, + 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877, + 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839, + 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877, + 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877, + 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839, + 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839, + 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877, + 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839, + 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877, + 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877, + 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839, + 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839, + 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877, + 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839, + 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877, + 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877, + 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839, + 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839, + 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877, + 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839, + 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877, + 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877, + 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839, + 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839, + 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877, + 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839, + 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877, + 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877, + 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839, + 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839, + 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877, + 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839, + 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877, + 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877, + 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839, + 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839, + 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877, + 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839, + 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877, + 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877, + 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839, + 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839, + 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877, + 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839, + 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877, + 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877, + 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839, + 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839, + 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877, + 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839, + 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877, + 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877, + 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839, + 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839, + 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877, + 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839, + 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877, + 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877, + 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839, + 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839, + 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877, + 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839, + 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877, + 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877, + 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839, + 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839, + 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877, + 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839, + 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877, + 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877, + 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839, + 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839, + 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877, + 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839, + 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877, + 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877, + 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839, + 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839, + 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877, + 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839, + 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877, + 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877, + 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839, + 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839, + 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877, + 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839, + 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877, + 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877, + 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839, + 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839, + 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877, + 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839, + 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877, + 0,0.304019,0.952666,0.055885,0.072334,-0.004877, + 0,0.188649,0.982045,0.055885,0.072186,-0.004839, + 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839, + 0,0.304019,0.952666,0.055885,0.072334,-0.004877, + 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839, + 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877, + -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877, + -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839, + 0,0.188649,0.982045,0.055885,0.072186,-0.004839, + -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877, + 0,0.188649,0.982045,0.055885,0.072186,-0.004839, + 0,0.304019,0.952666,0.055885,0.072334,-0.004877, + -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877, + -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839, + -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839, + -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877, + -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839, + -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877, + -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877, + -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839, + -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839, + -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877, + -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839, + -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877, + -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877, + -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839, + -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839, + -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877, + -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839, + -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877, + -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877, + -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839, + -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839, + -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877, + -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839, + -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877, + -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877, + -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839, + -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839, + -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877, + -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839, + -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877, + -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877, + -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839, + -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839, + -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877, + -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839, + -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877, + -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877, + -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839, + -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839, + -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877, + -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839, + -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877, + -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877, + -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839, + -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839, + -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877, + -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839, + -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877, + -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877, + -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839, + -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839, + -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877, + -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839, + -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877, + -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877, + -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839, + -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839, + -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877, + -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839, + -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877, + -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877, + -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839, + -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839, + -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877, + -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839, + -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877, + -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877, + -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839, + -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839, + -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877, + -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839, + -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877, + -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877, + -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839, + -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839, + -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877, + -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839, + -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877, + -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877, + -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839, + -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839, + -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877, + -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839, + -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877, + -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877, + -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839, + -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839, + -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877, + -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839, + -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877, + -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877, + -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839, + -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839, + -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877, + -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839, + -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877, + -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877, + -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839, + -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839, + -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877, + -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839, + -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877, + -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877, + -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839, + -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839, + -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877, + -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839, + -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877, + -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877, + -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839, + -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839, + -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877, + -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839, + -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877, + -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839, + -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819, + -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819, + -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839, + -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819, + -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839, + -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839, + -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819, + -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819, + -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839, + -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819, + -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839, + -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839, + -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819, + -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819, + -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839, + -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819, + -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839, + -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839, + -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819, + -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819, + -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839, + -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819, + -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839, + -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839, + -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819, + -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819, + -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839, + -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819, + -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839, + -0.188649,0,0.982045,0.039585,0.055885,-0.004839, + -0.070606,0,0.997504,0.039737,0.055885,-0.004819, + -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819, + -0.188649,0,0.982045,0.039585,0.055885,-0.004839, + -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819, + -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839, + -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839, + -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819, + -0.070606,0,0.997504,0.039737,0.055885,-0.004819, + -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839, + -0.070606,0,0.997504,0.039737,0.055885,-0.004819, + -0.188649,0,0.982045,0.039585,0.055885,-0.004839, + -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839, + -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819, + -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819, + -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839, + -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819, + -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839, + -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839, + -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819, + -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819, + -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839, + -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819, + -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839, + -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839, + -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819, + -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819, + -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839, + -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819, + -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839, + -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839, + -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819, + -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819, + -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839, + -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819, + -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839, + -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839, + -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819, + -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819, + -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839, + -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819, + -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839, + -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839, + -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819, + -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819, + -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839, + -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819, + -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839, + -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839, + -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819, + -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819, + -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839, + -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819, + -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839, + -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839, + -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819, + -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819, + -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839, + -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819, + -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839, + -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839, + -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819, + -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819, + -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839, + -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819, + -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839, + -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839, + -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819, + -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819, + -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839, + -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819, + -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839, + -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839, + -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819, + -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819, + -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839, + -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819, + -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839, + -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839, + -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819, + -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819, + -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839, + -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819, + -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839, + -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839, + -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819, + -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819, + -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839, + -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819, + -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839, + -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839, + -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819, + -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819, + -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839, + -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819, + -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839, + -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839, + -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819, + -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819, + -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839, + -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819, + -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839, + -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839, + -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819, + -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819, + -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839, + -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819, + -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839, + -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839, + -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819, + -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819, + -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839, + -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819, + -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839, + -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839, + -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819, + -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819, + -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839, + -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819, + -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839, + -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839, + -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819, + -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819, + -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839, + -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819, + -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839, + -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839, + -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819, + -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819, + -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839, + -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819, + -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839, + -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839, + -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819, + -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819, + -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839, + -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819, + -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839, + -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839, + -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819, + -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819, + -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839, + -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819, + -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839, + -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839, + -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819, + -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819, + -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839, + -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819, + -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839, + 0,-0.188649,0.982045,0.055885,0.039585,-0.004839, + 0,-0.070606,0.997504,0.055885,0.039737,-0.004819, + -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819, + 0,-0.188649,0.982045,0.055885,0.039585,-0.004839, + -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819, + -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839, + 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839, + 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819, + 0,-0.070606,0.997504,0.055885,0.039737,-0.004819, + 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839, + 0,-0.070606,0.997504,0.055885,0.039737,-0.004819, + 0,-0.188649,0.982045,0.055885,0.039585,-0.004839, + 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839, + 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819, + 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819, + 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839, + 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819, + 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839, + 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839, + 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819, + 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819, + 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839, + 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819, + 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839, + 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839, + 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819, + 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819, + 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839, + 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819, + 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839, + 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839, + 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819, + 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819, + 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839, + 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819, + 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839, + 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839, + 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819, + 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819, + 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839, + 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819, + 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839, + 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839, + 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819, + 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819, + 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839, + 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819, + 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839, + 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839, + 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819, + 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819, + 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839, + 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819, + 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839, + 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839, + 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819, + 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819, + 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839, + 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819, + 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839, + 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839, + 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819, + 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819, + 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839, + 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819, + 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839, + 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839, + 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819, + 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819, + 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839, + 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819, + 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839, + 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839, + 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819, + 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819, + 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839, + 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819, + 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839, + 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839, + 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819, + 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819, + 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839, + 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819, + 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839, + 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839, + 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819, + 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819, + 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839, + 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819, + 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839, + 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839, + 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819, + 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819, + 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839, + 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819, + 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839, + 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839, + 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819, + 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819, + 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839, + 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819, + 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839, + 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839, + 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819, + 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819, + 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839, + 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819, + 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839, + 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839, + 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819, + 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819, + 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839, + 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819, + 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839, + 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839, + 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819, + 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819, + 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839, + 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819, + 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839, + 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839, + 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819, + 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819, + 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839, + 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819, + 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839, + 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839, + 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819, + 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819, + 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839, + 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819, + 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839, + 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839, + 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819, + 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819, + 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839, + 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819, + 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839, + 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839, + 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819, + 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819, + 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839, + 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819, + 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839, + 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839, + 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819, + 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819, + 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839, + 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819, + 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839, + 0.188649,0,0.982045,0.072186,0.055885,-0.004839, + 0.070606,0,0.997504,0.072033,0.055885,-0.004819, + 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819, + 0.188649,0,0.982045,0.072186,0.055885,-0.004839, + 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819, + 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839, + 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839, + 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819, + 0.070606,0,0.997504,0.072033,0.055885,-0.004819, + 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839, + 0.070606,0,0.997504,0.072033,0.055885,-0.004819, + 0.188649,0,0.982045,0.072186,0.055885,-0.004839, + 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839, + 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819, + 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819, + 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839, + 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819, + 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839, + 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839, + 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819, + 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819, + 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839, + 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819, + 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839, + 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839, + 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819, + 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819, + 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839, + 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819, + 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839, + 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839, + 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819, + 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819, + 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839, + 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819, + 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839, + 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839, + 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819, + 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819, + 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839, + 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819, + 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839, + 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839, + 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819, + 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819, + 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839, + 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819, + 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839, + 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839, + 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819, + 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819, + 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839, + 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819, + 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839, + 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839, + 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819, + 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819, + 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839, + 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819, + 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839, + 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839, + 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819, + 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819, + 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839, + 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819, + 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839, + 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839, + 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819, + 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819, + 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839, + 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819, + 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839, + 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839, + 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819, + 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819, + 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839, + 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819, + 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839, + 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839, + 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819, + 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819, + 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839, + 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819, + 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839, + 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839, + 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819, + 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819, + 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839, + 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819, + 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839, + 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839, + 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819, + 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819, + 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839, + 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819, + 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839, + 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839, + 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819, + 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819, + 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839, + 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819, + 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839, + 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839, + 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819, + 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819, + 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839, + 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819, + 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839, + 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839, + 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819, + 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819, + 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839, + 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819, + 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839, + 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839, + 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819, + 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819, + 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839, + 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819, + 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839, + 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839, + 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819, + 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819, + 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839, + 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819, + 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839, + 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839, + 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819, + 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819, + 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839, + 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819, + 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839, + 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839, + 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819, + 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819, + 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839, + 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819, + 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839, + 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839, + 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819, + 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819, + 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839, + 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819, + 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839, + 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839, + 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819, + 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819, + 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839, + 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819, + 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839, + 0,0.188649,0.982045,0.055885,0.072186,-0.004839, + 0,0.070606,0.997504,0.055885,0.072033,-0.004819, + 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819, + 0,0.188649,0.982045,0.055885,0.072186,-0.004839, + 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819, + 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839, + -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839, + -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819, + 0,0.070606,0.997504,0.055885,0.072033,-0.004819, + -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839, + 0,0.070606,0.997504,0.055885,0.072033,-0.004819, + 0,0.188649,0.982045,0.055885,0.072186,-0.004839, + -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839, + -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819, + -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819, + -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839, + -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819, + -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839, + -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839, + -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819, + -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819, + -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839, + -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819, + -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839, + -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839, + -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819, + -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819, + -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839, + -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819, + -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839, + -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839, + -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819, + -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819, + -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839, + -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819, + -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839, + -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839, + -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819, + -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819, + -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839, + -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819, + -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839, + -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839, + -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819, + -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819, + -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839, + -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819, + -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839, + -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839, + -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819, + -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819, + -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839, + -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819, + -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839, + -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839, + -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819, + -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819, + -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839, + -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819, + -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839, + -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839, + -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819, + -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819, + -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839, + -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819, + -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839, + -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839, + -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819, + -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819, + -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839, + -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819, + -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839, + -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839, + -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819, + -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819, + -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839, + -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819, + -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839, + -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839, + -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819, + -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819, + -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839, + -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819, + -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839, + -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839, + -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819, + -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819, + -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839, + -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819, + -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839, + -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839, + -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819, + -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819, + -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839, + -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819, + -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839, + -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839, + -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819, + -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819, + -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839, + -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819, + -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839, + -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839, + -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819, + -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819, + -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839, + -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819, + -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839, + -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839, + -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819, + -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819, + -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839, + -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819, + -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839, + -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839, + -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819, + -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819, + -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839, + -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819, + -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839, + -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819, + -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818, + -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818, + -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819, + -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818, + -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819, + -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819, + -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818, + -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818, + -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819, + -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818, + -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819, + -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819, + -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818, + -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818, + -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819, + -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818, + -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819, + -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819, + -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818, + -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818, + -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819, + -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818, + -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819, + -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819, + -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818, + -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818, + -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819, + -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818, + -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819, + -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819, + -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818, + -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818, + -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819, + -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818, + -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819, + -0.070606,0,0.997504,0.039737,0.055885,-0.004819, + -0.007402,0,0.999973,0.039891,0.055885,-0.004818, + -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818, + -0.070606,0,0.997504,0.039737,0.055885,-0.004819, + -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818, + -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819, + -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819, + -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818, + -0.007402,0,0.999973,0.039891,0.055885,-0.004818, + -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819, + -0.007402,0,0.999973,0.039891,0.055885,-0.004818, + -0.070606,0,0.997504,0.039737,0.055885,-0.004819, + -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819, + -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818, + -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818, + -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819, + -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818, + -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819, + -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819, + -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818, + -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818, + -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819, + -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818, + -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819, + -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819, + -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818, + -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818, + -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819, + -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818, + -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819, + -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819, + -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818, + -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818, + -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819, + -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818, + -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819, + -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819, + -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818, + -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818, + -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819, + -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818, + -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819, + -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819, + -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818, + -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818, + -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819, + -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818, + -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819, + -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819, + -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818, + -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818, + -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819, + -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818, + -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819, + -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819, + -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818, + -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818, + -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819, + -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818, + -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819, + -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819, + -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818, + -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818, + -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819, + -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818, + -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819, + -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819, + -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818, + -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818, + -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819, + -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818, + -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819, + -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819, + -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818, + -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818, + -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819, + -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818, + -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819, + -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819, + -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818, + -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818, + -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819, + -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818, + -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819, + -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819, + -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818, + -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818, + -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819, + -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818, + -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819, + -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819, + -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818, + -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818, + -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819, + -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818, + -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819, + -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819, + -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818, + -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818, + -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819, + -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818, + -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819, + -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819, + -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818, + -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818, + -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819, + -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818, + -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819, + -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819, + -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818, + -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818, + -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819, + -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818, + -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819, + -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819, + -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818, + -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818, + -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819, + -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818, + -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819, + -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819, + -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818, + -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818, + -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819, + -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818, + -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819, + -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819, + -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818, + -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818, + -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819, + -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818, + -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819, + -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819, + -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818, + -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818, + -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819, + -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818, + -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819, + -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819, + -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818, + -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818, + -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819, + -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818, + -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819, + -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819, + -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818, + -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818, + -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819, + -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818, + -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819, + 0,-0.070606,0.997504,0.055885,0.039737,-0.004819, + 0,-0.007402,0.999973,0.055885,0.039891,-0.004818, + -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818, + 0,-0.070606,0.997504,0.055885,0.039737,-0.004819, + -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818, + -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819, + 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819, + 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818, + 0,-0.007402,0.999973,0.055885,0.039891,-0.004818, + 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819, + 0,-0.007402,0.999973,0.055885,0.039891,-0.004818, + 0,-0.070606,0.997504,0.055885,0.039737,-0.004819, + 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819, + 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818, + 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818, + 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819, + 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818, + 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819, + 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819, + 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818, + 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818, + 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819, + 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818, + 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819, + 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819, + 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818, + 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818, + 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819, + 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818, + 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819, + 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819, + 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818, + 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818, + 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819, + 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818, + 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819, + 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819, + 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818, + 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818, + 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819, + 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818, + 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819, + 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819, + 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818, + 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818, + 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819, + 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818, + 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819, + 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819, + 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818, + 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818, + 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819, + 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818, + 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819, + 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819, + 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818, + 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818, + 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819, + 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818, + 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819, + 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819, + 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818, + 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818, + 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819, + 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818, + 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819, + 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819, + 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818, + 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818, + 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819, + 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818, + 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819, + 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819, + 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818, + 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818, + 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819, + 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818, + 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819, + 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819, + 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818, + 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818, + 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819, + 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818, + 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819, + 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819, + 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818, + 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818, + 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819, + 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818, + 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819, + 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819, + 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818, + 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818, + 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819, + 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818, + 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819, + 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819, + 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818, + 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818, + 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819, + 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818, + 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819, + 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819, + 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818, + 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818, + 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819, + 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818, + 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819, + 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819, + 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818, + 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818, + 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819, + 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818, + 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819, + 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819, + 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818, + 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818, + 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819, + 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818, + 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819, + 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819, + 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818, + 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818, + 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819, + 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818, + 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819, + 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819, + 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818, + 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818, + 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819, + 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818, + 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819, + 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819, + 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818, + 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818, + 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819, + 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818, + 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819, + 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819, + 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818, + 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818, + 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819, + 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818, + 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819, + 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819, + 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818, + 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818, + 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819, + 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818, + 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819, + 0.070606,0,0.997504,0.072033,0.055885,-0.004819, + 0.007402,0,0.999973,0.07188,0.055885,-0.004818, + 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818, + 0.070606,0,0.997504,0.072033,0.055885,-0.004819, + 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818, + 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819, + 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819, + 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818, + 0.007402,0,0.999973,0.07188,0.055885,-0.004818, + 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819, + 0.007402,0,0.999973,0.07188,0.055885,-0.004818, + 0.070606,0,0.997504,0.072033,0.055885,-0.004819, + 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819, + 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818, + 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818, + 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819, + 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818, + 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819, + 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819, + 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818, + 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818, + 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819, + 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818, + 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819, + 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819, + 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818, + 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818, + 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819, + 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818, + 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819, + 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819, + 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818, + 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818, + 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819, + 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818, + 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819, + 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819, + 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818, + 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818, + 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819, + 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818, + 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819, + 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819, + 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818, + 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818, + 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819, + 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818, + 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819, + 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819, + 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818, + 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818, + 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819, + 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818, + 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819, + 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819, + 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818, + 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818, + 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819, + 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818, + 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819, + 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819, + 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818, + 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818, + 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819, + 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818, + 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819, + 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819, + 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818, + 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818, + 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819, + 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818, + 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819, + 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819, + 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818, + 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818, + 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819, + 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818, + 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819, + 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819, + 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818, + 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818, + 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819, + 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818, + 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819, + 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819, + 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818, + 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818, + 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819, + 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818, + 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819, + 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819, + 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818, + 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818, + 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819, + 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818, + 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819, + 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819, + 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818, + 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818, + 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819, + 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818, + 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819, + 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819, + 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818, + 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818, + 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819, + 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818, + 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819, + 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819, + 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818, + 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818, + 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819, + 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818, + 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819, + 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819, + 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818, + 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818, + 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819, + 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818, + 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819, + 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819, + 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818, + 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818, + 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819, + 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818, + 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819, + 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819, + 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818, + 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818, + 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819, + 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818, + 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819, + 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819, + 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818, + 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818, + 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819, + 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818, + 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819, + 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819, + 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818, + 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818, + 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819, + 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818, + 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819, + 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819, + 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818, + 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818, + 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819, + 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818, + 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819, + 0,0.070606,0.997504,0.055885,0.072033,-0.004819, + 0,0.007402,0.999973,0.055885,0.07188,-0.004818, + 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818, + 0,0.070606,0.997504,0.055885,0.072033,-0.004819, + 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818, + 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819, + -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819, + -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818, + 0,0.007402,0.999973,0.055885,0.07188,-0.004818, + -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819, + 0,0.007402,0.999973,0.055885,0.07188,-0.004818, + 0,0.070606,0.997504,0.055885,0.072033,-0.004819, + -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819, + -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818, + -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818, + -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819, + -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818, + -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819, + -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819, + -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818, + -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818, + -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819, + -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818, + -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819, + -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819, + -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818, + -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818, + -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819, + -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818, + -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819, + -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819, + -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818, + -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818, + -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819, + -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818, + -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819, + -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819, + -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818, + -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818, + -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819, + -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818, + -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819, + -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819, + -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818, + -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818, + -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819, + -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818, + -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819, + -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819, + -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818, + -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818, + -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819, + -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818, + -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819, + -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819, + -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818, + -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818, + -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819, + -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818, + -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819, + -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819, + -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818, + -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818, + -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819, + -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818, + -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819, + -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819, + -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818, + -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818, + -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819, + -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818, + -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819, + -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819, + -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818, + -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818, + -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819, + -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818, + -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819, + -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819, + -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818, + -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818, + -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819, + -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818, + -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819, + -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819, + -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818, + -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818, + -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819, + -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818, + -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819, + -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819, + -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818, + -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818, + -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819, + -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818, + -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819, + -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819, + -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818, + -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818, + -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819, + -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818, + -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819, + -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819, + -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818, + -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818, + -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819, + -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818, + -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819, + -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819, + -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818, + -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818, + -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819, + -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818, + -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819, + -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818, + 0,0,1,0.044613,0.063997,-0.004818, + -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818, + -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818, + 0,0,1,0.043898,0.062655,-0.004818, + 0,0,1,0.044613,0.063997,-0.004818, + -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818, + 0,0,1,0.043898,0.062655,-0.004818, + -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818, + -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818, + 0,0,1,0.043489,0.061186,-0.004818, + 0,0,1,0.043898,0.062655,-0.004818, + -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818, + 0,0,1,0.043489,0.061186,-0.004818, + -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818, + -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818, + 0,0,1,0.043489,0.061186,-0.004818, + -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818, + -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818, + 0,0,1,0.043409,0.05966,-0.004818, + 0,0,1,0.043489,0.061186,-0.004818, + -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818, + 0,0,1,0.043409,0.05966,-0.004818, + -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818, + -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818, + 0,0,1,0.043472,0.058741,-0.004818, + 0,0,1,0.043409,0.05966,-0.004818, + -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818, + 0,0,1,0.043472,0.058741,-0.004818, + -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818, + -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818, + 0,0,1,0.04361,0.057831,-0.004818, + 0,0,1,0.043472,0.058741,-0.004818, + -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818, + 0,0,1,0.043821,0.056936,-0.004818, + 0,0,1,0.04361,0.057831,-0.004818, + -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818, + 0,0,1,0.043821,0.056936,-0.004818, + -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818, + -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818, + 0,0,1,0.044105,0.056061,-0.004818, + 0,0,1,0.043821,0.056936,-0.004818, + -0.007402,0,0.999973,0.039891,0.055885,-0.004818, + 0,0,1,0.044105,0.056061,-0.004818, + -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818, + -0.007402,0,0.999973,0.039891,0.055885,-0.004818, + 0,0,1,0.044458,0.055214,-0.004818, + 0,0,1,0.044105,0.056061,-0.004818, + -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818, + 0,0,1,0.044458,0.055214,-0.004818, + -0.007402,0,0.999973,0.039891,0.055885,-0.004818, + -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818, + 0,0,1,0.044879,0.054399,-0.004818, + 0,0,1,0.044458,0.055214,-0.004818, + -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818, + 0,0,1,0.044879,0.054399,-0.004818, + -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818, + -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818, + 0,0,1,0.045365,0.053623,-0.004818, + 0,0,1,0.044879,0.054399,-0.004818, + -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818, + 0,0,1,0.045912,0.05289,-0.004818, + 0,0,1,0.045365,0.053623,-0.004818, + -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818, + 0,0,1,0.045912,0.05289,-0.004818, + -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818, + -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818, + 0,0,1,0.046517,0.052206,-0.004818, + 0,0,1,0.045912,0.05289,-0.004818, + -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818, + 0,0,1,0.046517,0.052206,-0.004818, + -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818, + -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818, + 0,0,1,0.047175,0.051576,-0.004818, + 0,0,1,0.046517,0.052206,-0.004818, + -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818, + 0,0,1,0.047882,0.051003,-0.004818, + 0,0,1,0.047175,0.051576,-0.004818, + -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818, + 0,0,1,0.047882,0.051003,-0.004818, + -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818, + -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818, + 0,0,1,0.048634,0.050493,-0.004818, + 0,0,1,0.047882,0.051003,-0.004818, + -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818, + 0,0,1,0.049354,0.050026,-0.004818, + 0,0,1,0.048634,0.050493,-0.004818, + -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818, + 0,0,1,0.049354,0.050026,-0.004818, + -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818, + -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818, + 0,0,1,0.050057,0.049532,-0.004818, + 0,0,1,0.049354,0.050026,-0.004818, + -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818, + 0,0,1,0.050057,0.049532,-0.004818, + -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818, + -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818, + 0,0,1,0.050741,0.049011,-0.004818, + 0,0,1,0.050057,0.049532,-0.004818, + -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818, + 0,0,1,0.051404,0.048464,-0.004818, + 0,0,1,0.050741,0.049011,-0.004818, + -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818, + 0,0,1,0.051404,0.048464,-0.004818, + -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818, + -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818, + 0,0,1,0.052047,0.047891,-0.004818, + 0,0,1,0.051404,0.048464,-0.004818, + -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818, + 0,0,1,0.052047,0.047891,-0.004818, + -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818, + -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818, + 0,0,1,0.052668,0.047293,-0.004818, + 0,0,1,0.052047,0.047891,-0.004818, + -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818, + 0,0,1,0.053266,0.046673,-0.004818, + 0,0,1,0.052668,0.047293,-0.004818, + -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818, + 0,0,1,0.053266,0.046673,-0.004818, + -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818, + -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818, + 0,0,1,0.05384,0.046029,-0.004818, + 0,0,1,0.053266,0.046673,-0.004818, + -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818, + 0,0,1,0.05384,0.046029,-0.004818, + -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818, + -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818, + 0,0,1,0.05439,0.045363,-0.004818, + 0,0,1,0.05384,0.046029,-0.004818, + -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818, + 0,0,1,0.05439,0.045363,-0.004818, + -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818, + -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818, + 0,0,1,0.054915,0.044676,-0.004818, + 0,0,1,0.05439,0.045363,-0.004818, + -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818, + 0,0,1,0.054915,0.044676,-0.004818, + -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818, + -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818, + 0,0,1,0.055414,0.04397,-0.004818, + 0,0,1,0.054915,0.044676,-0.004818, + -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818, + 0,0,1,0.055414,0.04397,-0.004818, + -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818, + -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818, + 0,0,1,0.055885,0.043244,-0.004818, + 0,0,1,0.055414,0.04397,-0.004818, + -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818, + 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818, + 0,0,1,0.055885,0.043244,-0.004818, + -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818, + 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818, + -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818, + -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818, + 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818, + 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818, + -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818, + 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818, + -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818, + -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818, + 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818, + 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818, + -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818, + 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818, + -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818, + -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818, + 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818, + 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818, + -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818, + 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818, + -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818, + -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818, + 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818, + 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818, + -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818, + 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818, + -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818, + -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818, + 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818, + 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818, + -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818, + 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818, + -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818, + -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818, + 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818, + 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818, + -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818, + 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818, + -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818, + -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818, + 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818, + 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818, + -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818, + 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818, + -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818, + -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818, + 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818, + 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818, + -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818, + 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818, + -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818, + -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818, + 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818, + 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818, + -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818, + 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818, + -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818, + 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818, + -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818, + 0,-0.007402,0.999973,0.055885,0.039891,-0.004818, + 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818, + 0,0,1,0.055885,0.043244,-0.004818, + 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818, + 0,0,1,0.055885,0.043244,-0.004818, + 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818, + 0,0,1,0.056357,0.04397,-0.004818, + 0,0,1,0.056357,0.04397,-0.004818, + 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818, + 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818, + 0,0,1,0.056357,0.04397,-0.004818, + 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818, + 0,0,1,0.056856,0.044676,-0.004818, + 0,0,1,0.056856,0.044676,-0.004818, + 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818, + 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818, + 0,0,1,0.056856,0.044676,-0.004818, + 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818, + 0,0,1,0.05738,0.045363,-0.004818, + 0,0,1,0.05738,0.045363,-0.004818, + 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818, + 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818, + 0,0,1,0.05738,0.045363,-0.004818, + 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818, + 0,0,1,0.05793,0.046029,-0.004818, + 0,0,1,0.05793,0.046029,-0.004818, + 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818, + 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818, + 0,0,1,0.05793,0.046029,-0.004818, + 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818, + 0,0,1,0.058505,0.046673,-0.004818, + 0,0,1,0.058505,0.046673,-0.004818, + 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818, + 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818, + 0,0,1,0.058505,0.046673,-0.004818, + 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818, + 0,0,1,0.059103,0.047293,-0.004818, + 0,0,1,0.059103,0.047293,-0.004818, + 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818, + 0,0,1,0.059724,0.047891,-0.004818, + 0,0,1,0.059724,0.047891,-0.004818, + 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818, + 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818, + 0,0,1,0.059724,0.047891,-0.004818, + 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818, + 0,0,1,0.060366,0.048464,-0.004818, + 0,0,1,0.060366,0.048464,-0.004818, + 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818, + 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818, + 0,0,1,0.060366,0.048464,-0.004818, + 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818, + 0,0,1,0.06103,0.049011,-0.004818, + 0,0,1,0.06103,0.049011,-0.004818, + 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818, + 0,0,1,0.061714,0.049532,-0.004818, + 0,0,1,0.061714,0.049532,-0.004818, + 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818, + 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818, + 0,0,1,0.061714,0.049532,-0.004818, + 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818, + 0,0,1,0.062416,0.050026,-0.004818, + 0,0,1,0.062416,0.050026,-0.004818, + 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818, + 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818, + 0,0,1,0.062416,0.050026,-0.004818, + 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818, + 0,0,1,0.063137,0.050493,-0.004818, + 0,0,1,0.063137,0.050493,-0.004818, + 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818, + 0,0,1,0.063888,0.051003,-0.004818, + 0,0,1,0.063888,0.051003,-0.004818, + 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818, + 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818, + 0,0,1,0.063888,0.051003,-0.004818, + 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818, + 0,0,1,0.064596,0.051576,-0.004818, + 0,0,1,0.064596,0.051576,-0.004818, + 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818, + 0,0,1,0.065254,0.052206,-0.004818, + 0,0,1,0.065254,0.052206,-0.004818, + 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818, + 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818, + 0,0,1,0.065254,0.052206,-0.004818, + 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818, + 0,0,1,0.065859,0.05289,-0.004818, + 0,0,1,0.065859,0.05289,-0.004818, + 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818, + 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818, + 0,0,1,0.065859,0.05289,-0.004818, + 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818, + 0,0,1,0.066406,0.053623,-0.004818, + 0,0,1,0.066406,0.053623,-0.004818, + 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818, + 0,0,1,0.066892,0.054399,-0.004818, + 0,0,1,0.066892,0.054399,-0.004818, + 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818, + 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818, + 0,0,1,0.066892,0.054399,-0.004818, + 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818, + 0,0,1,0.067313,0.055214,-0.004818, + 0,0,1,0.067313,0.055214,-0.004818, + 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818, + 0.007402,0,0.999973,0.07188,0.055885,-0.004818, + 0,0,1,0.067313,0.055214,-0.004818, + 0.007402,0,0.999973,0.07188,0.055885,-0.004818, + 0,0,1,0.067666,0.056061,-0.004818, + 0,0,1,0.067666,0.056061,-0.004818, + 0.007402,0,0.999973,0.07188,0.055885,-0.004818, + 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818, + 0,0,1,0.067666,0.056061,-0.004818, + 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818, + 0,0,1,0.067949,0.056936,-0.004818, + 0,0,1,0.067949,0.056936,-0.004818, + 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818, + 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818, + 0,0,1,0.067949,0.056936,-0.004818, + 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818, + 0,0,1,0.068161,0.057831,-0.004818, + 0,0,1,0.068161,0.057831,-0.004818, + 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818, + 0,0,1,0.068298,0.058741,-0.004818, + 0,0,1,0.068298,0.058741,-0.004818, + 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818, + 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818, + 0,0,1,0.068298,0.058741,-0.004818, + 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818, + 0,0,1,0.068362,0.05966,-0.004818, + 0,0,1,0.068362,0.05966,-0.004818, + 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818, + 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818, + 0,0,1,0.068362,0.05966,-0.004818, + 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818, + 0,0,1,0.068281,0.061186,-0.004818, + 0,0,1,0.068281,0.061186,-0.004818, + 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818, + 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818, + 0,0,1,0.068281,0.061186,-0.004818, + 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818, + 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818, + 0,0,1,0.068281,0.061186,-0.004818, + 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818, + 0,0,1,0.067873,0.062655,-0.004818, + 0,0,1,0.067873,0.062655,-0.004818, + 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818, + 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818, + 0,0,1,0.067873,0.062655,-0.004818, + 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818, + 0,0,1,0.067158,0.063997,-0.004818, + 0,0,1,0.067158,0.063997,-0.004818, + 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818, + 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818, + 0,0,1,0.067158,0.063997,-0.004818, + 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818, + 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818, + 0,0,1,0.067158,0.063997,-0.004818, + 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818, + 0,0,1,0.06617,0.065145,-0.004818, + 0,0,1,0.06617,0.065145,-0.004818, + 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818, + 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818, + 0,0,1,0.06617,0.065145,-0.004818, + 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818, + 0,0,1,0.064959,0.066043,-0.004818, + 0,0,1,0.064959,0.066043,-0.004818, + 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818, + 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818, + 0,0,1,0.064959,0.066043,-0.004818, + 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818, + 0,0,1,0.063583,0.066646,-0.004818, + 0,0,1,0.063583,0.066646,-0.004818, + 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818, + 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818, + 0,0,1,0.063583,0.066646,-0.004818, + 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818, + 0,0,1,0.06211,0.066926,-0.004818, + 0,0,1,0.06211,0.066926,-0.004818, + 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818, + 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818, + 0,0,1,0.06211,0.066926,-0.004818, + 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818, + -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818, + -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818, + 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818, + -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818, + -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818, + 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818, + 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818, + -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818, + 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818, + -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818, + -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818, + 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818, + 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818, + -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818, + 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818, + -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818, + -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818, + 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818, + 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818, + -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818, + 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818, + -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818, + -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818, + 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818, + 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818, + -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818, + 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818, + 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818, + -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818, + 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818, + -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818, + -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818, + 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818, + -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818, + -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818, + 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818, + 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818, + -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818, + 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818, + -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818, + -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818, + 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818, + 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818, + -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818, + 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818, + -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818, + -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818, + 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818, + 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818, + -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818, + 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818, + 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818, + -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818, + 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818, + -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818, + -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818, + 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818, + -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818, + -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818, + 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818, + 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818, + -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818, + 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818, + -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818, + -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818, + 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818, + 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818, + -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818, + 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818, + 0,0.007402,0.999973,0.055885,0.07188,-0.004818, + -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818, + 0,0,1,0.04966,0.066926,-0.004818, + 0,0,1,0.06211,0.066926,-0.004818, + -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818, + 0,0,1,0.04966,0.066926,-0.004818, + -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818, + -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818, + 0,0,1,0.048188,0.066646,-0.004818, + 0,0,1,0.04966,0.066926,-0.004818, + -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818, + 0,0,1,0.048188,0.066646,-0.004818, + -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818, + -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818, + 0,0,1,0.046812,0.066043,-0.004818, + 0,0,1,0.048188,0.066646,-0.004818, + -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818, + 0,0,1,0.046812,0.066043,-0.004818, + -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818, + -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818, + 0,0,1,0.0456,0.065145,-0.004818, + 0,0,1,0.046812,0.066043,-0.004818, + -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818, + 0,0,1,0.0456,0.065145,-0.004818, + -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818, + -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818, + 0,0,1,0.044613,0.063997,-0.004818, + 0,0,1,0.0456,0.065145,-0.004818, + -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818, + 0,0,1,0.044613,0.063997,-0.004818, + -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818, + 0,0,1,0.04966,0.066926,-0.004818, + 0,0,1,0.060613,0.066867,-0.004818, + 0,0,1,0.06211,0.066926,-0.004818, + 0,0,1,0.051157,0.066867,-0.004818, + 0,0,1,0.060613,0.066867,-0.004818, + 0,0,1,0.04966,0.066926,-0.004818, + 0,0,1,0.051157,0.066867,-0.004818, + 0,0,1,0.059165,0.066474,-0.004818, + 0,0,1,0.060613,0.066867,-0.004818, + 0,0,1,0.052605,0.066474,-0.004818, + 0,0,1,0.059165,0.066474,-0.004818, + 0,0,1,0.051157,0.066867,-0.004818, + 0,0,1,0.052605,0.066474,-0.004818, + 0,0,1,0.057837,0.065766,-0.004818, + 0,0,1,0.059165,0.066474,-0.004818, + 0,0,1,0.053934,0.065766,-0.004818, + 0,0,1,0.057837,0.065766,-0.004818, + 0,0,1,0.052605,0.066474,-0.004818, + 0,0,1,0.053934,0.065766,-0.004818, + 0,0,1,0.056739,0.064761,-0.004818, + 0,0,1,0.057837,0.065766,-0.004818, + 0,0,1,0.055031,0.064761,-0.004818, + 0,0,1,0.056739,0.064761,-0.004818, + 0,0,1,0.053934,0.065766,-0.004818, + 0,0,1,0.056739,0.064761,-0.004818, + 0,0,1,0.055031,0.064761,-0.004818, + 0,0,1,0.055885,0.063727,-0.004818, + -0.929776,-0.368125,0,0.03976,0.049501,-0.007708, + -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167, + -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167, + -0.929776,-0.368125,0,0.03976,0.049501,-0.007708, + -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167, + -0.951057,-0.309017,0,0.03939,0.050526,-0.007708, + -0.904827,-0.425779,0,0.040192,0.048501,-0.007708, + -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167, + -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167, + -0.904827,-0.425779,0,0.040192,0.048501,-0.007708, + -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167, + -0.929776,-0.368125,0,0.03976,0.049501,-0.007708, + -0.876307,-0.481754,0,0.040687,0.04753,-0.007708, + -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167, + -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167, + -0.876307,-0.481754,0,0.040687,0.04753,-0.007708, + -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167, + -0.904827,-0.425779,0,0.040192,0.048501,-0.007708, + -0.844328,-0.535827,0,0.041241,0.046592,-0.007708, + -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167, + -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167, + -0.844328,-0.535827,0,0.041241,0.046592,-0.007708, + -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167, + -0.876307,-0.481754,0,0.040687,0.04753,-0.007708, + -0.844328,-0.535827,0,0.041241,0.046592,-0.007708, + -0.876307,-0.481754,0,0.040687,0.04753,-0.007708, + -0.860742,-0.509041,0,0.040845,0.047263,-0.007708, + -0.844328,-0.535827,0,0.041241,0.046592,-0.007708, + -0.860742,-0.509041,0,0.040845,0.047263,-0.007708, + -0.860742,-0.509041,0,0.040904,0.047163,-0.007708, + -0.809017,-0.587785,0,0.041854,0.045691,-0.007708, + -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167, + -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167, + -0.809017,-0.587785,0,0.041854,0.045691,-0.007708, + -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167, + -0.844328,-0.535827,0,0.041241,0.046592,-0.007708, + -0.770513,-0.637424,0,0.042522,0.04483,-0.007708, + -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167, + -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167, + -0.770513,-0.637424,0,0.042522,0.04483,-0.007708, + -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167, + -0.809017,-0.587785,0,0.041854,0.045691,-0.007708, + -0.728969,-0.684547,0,0.043242,0.044013,-0.007708, + -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167, + -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167, + -0.728969,-0.684547,0,0.043242,0.044013,-0.007708, + -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167, + -0.770513,-0.637424,0,0.042522,0.04483,-0.007708, + -0.684547,-0.728969,0,0.044013,0.043242,-0.007708, + -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167, + -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167, + -0.684547,-0.728969,0,0.044013,0.043242,-0.007708, + -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167, + -0.728969,-0.684547,0,0.043242,0.044013,-0.007708, + -0.684547,-0.728969,0,0.044013,0.043242,-0.007708, + -0.728969,-0.684547,0,0.043242,0.044013,-0.007708, + -0.707107,-0.707107,0,0.043581,0.043673,-0.007708, + -0.684547,-0.728969,0,0.044013,0.043242,-0.007708, + -0.707107,-0.707107,0,0.043581,0.043673,-0.007708, + -0.707107,-0.707107,0,0.043673,0.043581,-0.007708, + -0.637424,-0.770513,0,0.04483,0.042522,-0.007708, + -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167, + -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167, + -0.637424,-0.770513,0,0.04483,0.042522,-0.007708, + -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167, + -0.684547,-0.728969,0,0.044013,0.043242,-0.007708, + -0.587785,-0.809017,0,0.045691,0.041854,-0.007708, + -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167, + -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167, + -0.587785,-0.809017,0,0.045691,0.041854,-0.007708, + -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167, + -0.637424,-0.770513,0,0.04483,0.042522,-0.007708, + -0.535827,-0.844328,0,0.046592,0.041241,-0.007708, + -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167, + -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167, + -0.535827,-0.844328,0,0.046592,0.041241,-0.007708, + -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167, + -0.587785,-0.809017,0,0.045691,0.041854,-0.007708, + -0.481754,-0.876307,0,0.04753,0.040687,-0.007708, + -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167, + -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167, + -0.481754,-0.876307,0,0.04753,0.040687,-0.007708, + -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167, + -0.535827,-0.844328,0,0.046592,0.041241,-0.007708, + -0.481754,-0.876307,0,0.04753,0.040687,-0.007708, + -0.535827,-0.844328,0,0.046592,0.041241,-0.007708, + -0.509041,-0.860742,0,0.047163,0.040904,-0.007708, + -0.481754,-0.876307,0,0.04753,0.040687,-0.007708, + -0.509041,-0.860742,0,0.047163,0.040904,-0.007708, + -0.509041,-0.860742,0,0.047263,0.040845,-0.007708, + -0.425779,-0.904827,0,0.048501,0.040192,-0.007708, + -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167, + -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167, + -0.425779,-0.904827,0,0.048501,0.040192,-0.007708, + -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167, + -0.481754,-0.876307,0,0.04753,0.040687,-0.007708, + -0.368125,-0.929776,0,0.049501,0.03976,-0.007708, + -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167, + -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167, + -0.368125,-0.929776,0,0.049501,0.03976,-0.007708, + -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167, + -0.425779,-0.904827,0,0.048501,0.040192,-0.007708, + -0.309017,-0.951057,0,0.050526,0.03939,-0.007708, + -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167, + -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167, + -0.309017,-0.951057,0,0.050526,0.03939,-0.007708, + -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167, + -0.368125,-0.929776,0,0.049501,0.03976,-0.007708, + -0.24869,-0.968583,0,0.051572,0.039087,-0.007708, + -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167, + -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167, + -0.24869,-0.968583,0,0.051572,0.039087,-0.007708, + -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167, + -0.309017,-0.951057,0,0.050526,0.03939,-0.007708, + -0.24869,-0.968583,0,0.051572,0.039087,-0.007708, + -0.309017,-0.951057,0,0.050526,0.03939,-0.007708, + -0.278991,-0.960294,0,0.051356,0.039149,-0.007708, + -0.24869,-0.968583,0,0.051572,0.039087,-0.007708, + -0.278991,-0.960294,0,0.051356,0.039149,-0.007708, + -0.278991,-0.960294,0,0.051428,0.039128,-0.007708, + -0.187381,-0.982287,0,0.052635,0.038849,-0.007708, + -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167, + -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167, + -0.187381,-0.982287,0,0.052635,0.038849,-0.007708, + -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167, + -0.24869,-0.968583,0,0.051572,0.039087,-0.007708, + -0.125333,-0.992115,0,0.053712,0.038678,-0.007708, + -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167, + -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167, + -0.125333,-0.992115,0,0.053712,0.038678,-0.007708, + -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167, + -0.187381,-0.982287,0,0.052635,0.038849,-0.007708, + -0.094108,-0.995562,0,0.054796,0.038576,-0.007708, + -0.07324,-0.997287,0.007402,0.054796,0.038576,-0.006167, + -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167, + -0.094108,-0.995562,0,0.054796,0.038576,-0.007708, + -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167, + -0.125333,-0.992115,0,0.053712,0.038678,-0.007708, + -0.951057,-0.309017,0,0.03939,0.050526,-0.007708, + -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167, + -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167, + -0.951057,-0.309017,0,0.03939,0.050526,-0.007708, + -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167, + -0.968583,-0.24869,0,0.039087,0.051572,-0.007708, + -0.951057,-0.309017,0,0.03939,0.050526,-0.007708, + -0.968583,-0.24869,0,0.039087,0.051572,-0.007708, + -0.960294,-0.278991,0,0.039128,0.051428,-0.007708, + -0.951057,-0.309017,0,0.03939,0.050526,-0.007708, + -0.960294,-0.278991,0,0.039128,0.051428,-0.007708, + -0.960294,-0.278991,0,0.039149,0.051356,-0.007708, + -0.968583,-0.24869,0,0.039087,0.051572,-0.007708, + -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167, + -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167, + -0.968583,-0.24869,0,0.039087,0.051572,-0.007708, + -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167, + -0.982287,-0.187381,0,0.038849,0.052635,-0.007708, + -0.982287,-0.187381,0,0.038849,0.052635,-0.007708, + -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167, + -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167, + -0.982287,-0.187381,0,0.038849,0.052635,-0.007708, + -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167, + -0.992115,-0.125333,0,0.038678,0.053712,-0.007708, + -0.992115,-0.125333,0,0.038678,0.053712,-0.007708, + -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167, + -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167, + -0.992115,-0.125333,0,0.038678,0.053712,-0.007708, + -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167, + -0.995562,-0.094108,0,0.038576,0.054796,-0.007708, + -0.995562,0.094108,0,0.038576,0.056974,-0.007708, + -0.997287,0.07324,0.007402,0.038576,0.056974,-0.006167, + -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167, + -0.995562,0.094108,0,0.038576,0.056974,-0.007708, + -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167, + -0.992115,0.125333,0,0.038678,0.058059,-0.007708, + -0.992115,0.125333,0,0.038678,0.058059,-0.007708, + -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167, + -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167, + -0.992115,0.125333,0,0.038678,0.058059,-0.007708, + -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167, + -0.982287,0.187381,0,0.038849,0.059135,-0.007708, + -0.982287,0.187381,0,0.038849,0.059135,-0.007708, + -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167, + -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167, + -0.982287,0.187381,0,0.038849,0.059135,-0.007708, + -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167, + -0.968583,0.24869,0,0.039087,0.060198,-0.007708, + -0.968583,0.24869,0,0.039087,0.060198,-0.007708, + -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167, + -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167, + -0.968583,0.24869,0,0.039087,0.060198,-0.007708, + -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167, + -0.951057,0.309017,0,0.03939,0.061245,-0.007708, + -0.968583,0.24869,0,0.039087,0.060198,-0.007708, + -0.951057,0.309017,0,0.03939,0.061245,-0.007708, + -0.960294,0.278991,0,0.039149,0.060414,-0.007708, + -0.968583,0.24869,0,0.039087,0.060198,-0.007708, + -0.960294,0.278991,0,0.039149,0.060414,-0.007708, + -0.960294,0.278991,0,0.039128,0.060343,-0.007708, + -0.951057,0.309017,0,0.03939,0.061245,-0.007708, + -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167, + -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167, + -0.951057,0.309017,0,0.03939,0.061245,-0.007708, + -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167, + -0.929776,0.368125,0,0.03976,0.06227,-0.007708, + -0.929776,0.368125,0,0.03976,0.06227,-0.007708, + -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167, + -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167, + -0.929776,0.368125,0,0.03976,0.06227,-0.007708, + -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167, + -0.904827,0.425779,0,0.040192,0.06327,-0.007708, + -0.904827,0.425779,0,0.040192,0.06327,-0.007708, + -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167, + -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167, + -0.904827,0.425779,0,0.040192,0.06327,-0.007708, + -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167, + -0.876307,0.481754,0,0.040687,0.064241,-0.007708, + -0.876307,0.481754,0,0.040687,0.064241,-0.007708, + -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167, + -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167, + -0.876307,0.481754,0,0.040687,0.064241,-0.007708, + -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167, + -0.844328,0.535827,0,0.041241,0.065178,-0.007708, + -0.876307,0.481754,0,0.040687,0.064241,-0.007708, + -0.844328,0.535827,0,0.041241,0.065178,-0.007708, + -0.860742,0.509041,0,0.040904,0.064607,-0.007708, + -0.876307,0.481754,0,0.040687,0.064241,-0.007708, + -0.860742,0.509041,0,0.040904,0.064607,-0.007708, + -0.860742,0.509041,0,0.040845,0.064507,-0.007708, + -0.844328,0.535827,0,0.041241,0.065178,-0.007708, + -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167, + -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167, + -0.844328,0.535827,0,0.041241,0.065178,-0.007708, + -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167, + -0.809017,0.587785,0,0.041854,0.06608,-0.007708, + -0.809017,0.587785,0,0.041854,0.06608,-0.007708, + -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167, + -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167, + -0.809017,0.587785,0,0.041854,0.06608,-0.007708, + -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167, + -0.770513,0.637424,0,0.042522,0.066941,-0.007708, + -0.770513,0.637424,0,0.042522,0.066941,-0.007708, + -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167, + -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167, + -0.770513,0.637424,0,0.042522,0.066941,-0.007708, + -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167, + -0.728969,0.684547,0,0.043242,0.067758,-0.007708, + -0.728969,0.684547,0,0.043242,0.067758,-0.007708, + -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167, + -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167, + -0.728969,0.684547,0,0.043242,0.067758,-0.007708, + -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167, + -0.684547,0.728969,0,0.044013,0.068528,-0.007708, + -0.728969,0.684547,0,0.043242,0.067758,-0.007708, + -0.684547,0.728969,0,0.044013,0.068528,-0.007708, + -0.707107,0.707107,0,0.043673,0.068189,-0.007708, + -0.728969,0.684547,0,0.043242,0.067758,-0.007708, + -0.707107,0.707107,0,0.043673,0.068189,-0.007708, + -0.707107,0.707107,0,0.043581,0.068097,-0.007708, + -0.684547,0.728969,0,0.044013,0.068528,-0.007708, + -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167, + -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167, + -0.684547,0.728969,0,0.044013,0.068528,-0.007708, + -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167, + -0.637424,0.770513,0,0.04483,0.069249,-0.007708, + -0.637424,0.770513,0,0.04483,0.069249,-0.007708, + -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167, + -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167, + -0.637424,0.770513,0,0.04483,0.069249,-0.007708, + -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167, + -0.587785,0.809017,0,0.045691,0.069917,-0.007708, + -0.587785,0.809017,0,0.045691,0.069917,-0.007708, + -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167, + -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167, + -0.587785,0.809017,0,0.045691,0.069917,-0.007708, + -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167, + -0.535827,0.844328,0,0.046592,0.070529,-0.007708, + -0.535827,0.844328,0,0.046592,0.070529,-0.007708, + -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167, + -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167, + -0.535827,0.844328,0,0.046592,0.070529,-0.007708, + -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167, + -0.481754,0.876307,0,0.04753,0.071084,-0.007708, + -0.535827,0.844328,0,0.046592,0.070529,-0.007708, + -0.481754,0.876307,0,0.04753,0.071084,-0.007708, + -0.509041,0.860742,0,0.047263,0.070926,-0.007708, + -0.535827,0.844328,0,0.046592,0.070529,-0.007708, + -0.509041,0.860742,0,0.047263,0.070926,-0.007708, + -0.509041,0.860742,0,0.047163,0.070867,-0.007708, + -0.481754,0.876307,0,0.04753,0.071084,-0.007708, + -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167, + -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167, + -0.481754,0.876307,0,0.04753,0.071084,-0.007708, + -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167, + -0.425779,0.904827,0,0.048501,0.071578,-0.007708, + -0.425779,0.904827,0,0.048501,0.071578,-0.007708, + -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167, + -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167, + -0.425779,0.904827,0,0.048501,0.071578,-0.007708, + -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167, + -0.368125,0.929776,0,0.049501,0.072011,-0.007708, + -0.368125,0.929776,0,0.049501,0.072011,-0.007708, + -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167, + -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167, + -0.368125,0.929776,0,0.049501,0.072011,-0.007708, + -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167, + -0.309017,0.951057,0,0.050526,0.07238,-0.007708, + -0.309017,0.951057,0,0.050526,0.07238,-0.007708, + -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167, + -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167, + -0.309017,0.951057,0,0.050526,0.07238,-0.007708, + -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167, + -0.24869,0.968583,0,0.051572,0.072684,-0.007708, + -0.309017,0.951057,0,0.050526,0.07238,-0.007708, + -0.24869,0.968583,0,0.051572,0.072684,-0.007708, + -0.278991,0.960294,0,0.051428,0.072642,-0.007708, + -0.309017,0.951057,0,0.050526,0.07238,-0.007708, + -0.278991,0.960294,0,0.051428,0.072642,-0.007708, + -0.278991,0.960294,0,0.051356,0.072621,-0.007708, + -0.24869,0.968583,0,0.051572,0.072684,-0.007708, + -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167, + -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167, + -0.24869,0.968583,0,0.051572,0.072684,-0.007708, + -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167, + -0.187381,0.982287,0,0.052635,0.072922,-0.007708, + -0.187381,0.982287,0,0.052635,0.072922,-0.007708, + -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167, + -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167, + -0.187381,0.982287,0,0.052635,0.072922,-0.007708, + -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167, + -0.125333,0.992115,0,0.053712,0.073092,-0.007708, + -0.125333,0.992115,0,0.053712,0.073092,-0.007708, + -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167, + -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167, + -0.125333,0.992115,0,0.053712,0.073092,-0.007708, + -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167, + -0.094108,0.995562,0,0.054796,0.073195,-0.007708, + 0.094108,0.995562,0,0.056974,0.073195,-0.007708, + 0.07324,0.997287,0.007402,0.056974,0.073195,-0.006167, + 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167, + 0.094108,0.995562,0,0.056974,0.073195,-0.007708, + 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167, + 0.125333,0.992115,0,0.058059,0.073092,-0.007708, + 0.125333,0.992115,0,0.058059,0.073092,-0.007708, + 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167, + 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167, + 0.125333,0.992115,0,0.058059,0.073092,-0.007708, + 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167, + 0.187381,0.982287,0,0.059135,0.072922,-0.007708, + 0.187381,0.982287,0,0.059135,0.072922,-0.007708, + 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167, + 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167, + 0.187381,0.982287,0,0.059135,0.072922,-0.007708, + 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167, + 0.24869,0.968583,0,0.060198,0.072684,-0.007708, + 0.24869,0.968583,0,0.060198,0.072684,-0.007708, + 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167, + 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167, + 0.24869,0.968583,0,0.060198,0.072684,-0.007708, + 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167, + 0.309017,0.951057,0,0.061245,0.07238,-0.007708, + 0.24869,0.968583,0,0.060198,0.072684,-0.007708, + 0.309017,0.951057,0,0.061245,0.07238,-0.007708, + 0.278991,0.960294,0,0.060414,0.072621,-0.007708, + 0.24869,0.968583,0,0.060198,0.072684,-0.007708, + 0.278991,0.960294,0,0.060414,0.072621,-0.007708, + 0.278991,0.960294,0,0.060343,0.072642,-0.007708, + 0.309017,0.951057,0,0.061245,0.07238,-0.007708, + 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167, + 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167, + 0.309017,0.951057,0,0.061245,0.07238,-0.007708, + 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167, + 0.368125,0.929776,0,0.06227,0.072011,-0.007708, + 0.368125,0.929776,0,0.06227,0.072011,-0.007708, + 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167, + 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167, + 0.368125,0.929776,0,0.06227,0.072011,-0.007708, + 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167, + 0.425779,0.904827,0,0.06327,0.071578,-0.007708, + 0.425779,0.904827,0,0.06327,0.071578,-0.007708, + 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167, + 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167, + 0.425779,0.904827,0,0.06327,0.071578,-0.007708, + 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167, + 0.481754,0.876307,0,0.064241,0.071084,-0.007708, + 0.481754,0.876307,0,0.064241,0.071084,-0.007708, + 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167, + 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167, + 0.481754,0.876307,0,0.064241,0.071084,-0.007708, + 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167, + 0.535827,0.844328,0,0.065178,0.070529,-0.007708, + 0.481754,0.876307,0,0.064241,0.071084,-0.007708, + 0.535827,0.844328,0,0.065178,0.070529,-0.007708, + 0.509041,0.860742,0,0.064607,0.070867,-0.007708, + 0.481754,0.876307,0,0.064241,0.071084,-0.007708, + 0.509041,0.860742,0,0.064607,0.070867,-0.007708, + 0.509041,0.860742,0,0.064507,0.070926,-0.007708, + 0.535827,0.844328,0,0.065178,0.070529,-0.007708, + 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167, + 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167, + 0.535827,0.844328,0,0.065178,0.070529,-0.007708, + 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167, + 0.587785,0.809017,0,0.06608,0.069917,-0.007708, + 0.587785,0.809017,0,0.06608,0.069917,-0.007708, + 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167, + 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167, + 0.587785,0.809017,0,0.06608,0.069917,-0.007708, + 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167, + 0.637424,0.770513,0,0.066941,0.069249,-0.007708, + 0.637424,0.770513,0,0.066941,0.069249,-0.007708, + 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167, + 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167, + 0.637424,0.770513,0,0.066941,0.069249,-0.007708, + 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167, + 0.684547,0.728969,0,0.067758,0.068528,-0.007708, + 0.684547,0.728969,0,0.067758,0.068528,-0.007708, + 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167, + 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167, + 0.684547,0.728969,0,0.067758,0.068528,-0.007708, + 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167, + 0.728969,0.684547,0,0.068528,0.067758,-0.007708, + 0.684547,0.728969,0,0.067758,0.068528,-0.007708, + 0.728969,0.684547,0,0.068528,0.067758,-0.007708, + 0.707107,0.707107,0,0.068189,0.068097,-0.007708, + 0.684547,0.728969,0,0.067758,0.068528,-0.007708, + 0.707107,0.707107,0,0.068189,0.068097,-0.007708, + 0.707107,0.707107,0,0.068097,0.068189,-0.007708, + 0.728969,0.684547,0,0.068528,0.067758,-0.007708, + 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167, + 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167, + 0.728969,0.684547,0,0.068528,0.067758,-0.007708, + 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167, + 0.770513,0.637424,0,0.069249,0.066941,-0.007708, + 0.770513,0.637424,0,0.069249,0.066941,-0.007708, + 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167, + 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167, + 0.770513,0.637424,0,0.069249,0.066941,-0.007708, + 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167, + 0.809017,0.587785,0,0.069917,0.06608,-0.007708, + 0.809017,0.587785,0,0.069917,0.06608,-0.007708, + 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167, + 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167, + 0.809017,0.587785,0,0.069917,0.06608,-0.007708, + 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167, + 0.844328,0.535827,0,0.070529,0.065178,-0.007708, + 0.844328,0.535827,0,0.070529,0.065178,-0.007708, + 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167, + 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167, + 0.844328,0.535827,0,0.070529,0.065178,-0.007708, + 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167, + 0.876307,0.481754,0,0.071084,0.064241,-0.007708, + 0.844328,0.535827,0,0.070529,0.065178,-0.007708, + 0.876307,0.481754,0,0.071084,0.064241,-0.007708, + 0.860742,0.509041,0,0.070926,0.064507,-0.007708, + 0.844328,0.535827,0,0.070529,0.065178,-0.007708, + 0.860742,0.509041,0,0.070926,0.064507,-0.007708, + 0.860742,0.509041,0,0.070867,0.064607,-0.007708, + 0.876307,0.481754,0,0.071084,0.064241,-0.007708, + 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167, + 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167, + 0.876307,0.481754,0,0.071084,0.064241,-0.007708, + 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167, + 0.904827,0.425779,0,0.071578,0.06327,-0.007708, + 0.904827,0.425779,0,0.071578,0.06327,-0.007708, + 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167, + 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167, + 0.904827,0.425779,0,0.071578,0.06327,-0.007708, + 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167, + 0.929776,0.368125,0,0.072011,0.06227,-0.007708, + 0.929776,0.368125,0,0.072011,0.06227,-0.007708, + 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167, + 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167, + 0.929776,0.368125,0,0.072011,0.06227,-0.007708, + 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167, + 0.951057,0.309017,0,0.07238,0.061245,-0.007708, + 0.951057,0.309017,0,0.07238,0.061245,-0.007708, + 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167, + 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167, + 0.951057,0.309017,0,0.07238,0.061245,-0.007708, + 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167, + 0.968583,0.24869,0,0.072684,0.060198,-0.007708, + 0.951057,0.309017,0,0.07238,0.061245,-0.007708, + 0.968583,0.24869,0,0.072684,0.060198,-0.007708, + 0.960294,0.278991,0,0.072642,0.060343,-0.007708, + 0.951057,0.309017,0,0.07238,0.061245,-0.007708, + 0.960294,0.278991,0,0.072642,0.060343,-0.007708, + 0.960294,0.278991,0,0.072621,0.060414,-0.007708, + 0.968583,0.24869,0,0.072684,0.060198,-0.007708, + 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167, + 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167, + 0.968583,0.24869,0,0.072684,0.060198,-0.007708, + 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167, + 0.982287,0.187381,0,0.072922,0.059135,-0.007708, + 0.982287,0.187381,0,0.072922,0.059135,-0.007708, + 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167, + 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167, + 0.982287,0.187381,0,0.072922,0.059135,-0.007708, + 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167, + 0.992115,0.125333,0,0.073092,0.058059,-0.007708, + 0.992115,0.125333,0,0.073092,0.058059,-0.007708, + 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167, + 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167, + 0.992115,0.125333,0,0.073092,0.058059,-0.007708, + 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167, + 0.995562,0.094108,0,0.073195,0.056974,-0.007708, + 0.995562,-0.094108,0,0.073195,0.054796,-0.007708, + 0.997287,-0.07324,0.007402,0.073195,0.054796,-0.006167, + 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167, + 0.995562,-0.094108,0,0.073195,0.054796,-0.007708, + 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167, + 0.992115,-0.125333,0,0.073092,0.053712,-0.007708, + 0.992115,-0.125333,0,0.073092,0.053712,-0.007708, + 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167, + 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167, + 0.992115,-0.125333,0,0.073092,0.053712,-0.007708, + 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167, + 0.982287,-0.187381,0,0.072922,0.052635,-0.007708, + 0.982287,-0.187381,0,0.072922,0.052635,-0.007708, + 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167, + 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167, + 0.982287,-0.187381,0,0.072922,0.052635,-0.007708, + 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167, + 0.968583,-0.24869,0,0.072684,0.051572,-0.007708, + 0.968583,-0.24869,0,0.072684,0.051572,-0.007708, + 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167, + 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167, + 0.968583,-0.24869,0,0.072684,0.051572,-0.007708, + 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167, + 0.951057,-0.309017,0,0.07238,0.050526,-0.007708, + 0.968583,-0.24869,0,0.072684,0.051572,-0.007708, + 0.951057,-0.309017,0,0.07238,0.050526,-0.007708, + 0.960294,-0.278991,0,0.072621,0.051356,-0.007708, + 0.968583,-0.24869,0,0.072684,0.051572,-0.007708, + 0.960294,-0.278991,0,0.072621,0.051356,-0.007708, + 0.960294,-0.278991,0,0.072642,0.051428,-0.007708, + 0.951057,-0.309017,0,0.07238,0.050526,-0.007708, + 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167, + 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167, + 0.951057,-0.309017,0,0.07238,0.050526,-0.007708, + 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167, + 0.929776,-0.368125,0,0.072011,0.049501,-0.007708, + 0.929776,-0.368125,0,0.072011,0.049501,-0.007708, + 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167, + 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167, + 0.929776,-0.368125,0,0.072011,0.049501,-0.007708, + 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167, + 0.904827,-0.425779,0,0.071578,0.048501,-0.007708, + 0.904827,-0.425779,0,0.071578,0.048501,-0.007708, + 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167, + 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167, + 0.904827,-0.425779,0,0.071578,0.048501,-0.007708, + 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167, + 0.876307,-0.481754,0,0.071084,0.04753,-0.007708, + 0.876307,-0.481754,0,0.071084,0.04753,-0.007708, + 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167, + 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167, + 0.876307,-0.481754,0,0.071084,0.04753,-0.007708, + 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167, + 0.844328,-0.535827,0,0.070529,0.046592,-0.007708, + 0.876307,-0.481754,0,0.071084,0.04753,-0.007708, + 0.844328,-0.535827,0,0.070529,0.046592,-0.007708, + 0.860742,-0.509041,0,0.070867,0.047163,-0.007708, + 0.876307,-0.481754,0,0.071084,0.04753,-0.007708, + 0.860742,-0.509041,0,0.070867,0.047163,-0.007708, + 0.860742,-0.509041,0,0.070926,0.047263,-0.007708, + 0.844328,-0.535827,0,0.070529,0.046592,-0.007708, + 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167, + 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167, + 0.844328,-0.535827,0,0.070529,0.046592,-0.007708, + 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167, + 0.809017,-0.587785,0,0.069917,0.045691,-0.007708, + 0.809017,-0.587785,0,0.069917,0.045691,-0.007708, + 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167, + 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167, + 0.809017,-0.587785,0,0.069917,0.045691,-0.007708, + 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167, + 0.770513,-0.637424,0,0.069249,0.04483,-0.007708, + 0.770513,-0.637424,0,0.069249,0.04483,-0.007708, + 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167, + 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167, + 0.770513,-0.637424,0,0.069249,0.04483,-0.007708, + 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167, + 0.728969,-0.684547,0,0.068528,0.044013,-0.007708, + 0.728969,-0.684547,0,0.068528,0.044013,-0.007708, + 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167, + 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167, + 0.728969,-0.684547,0,0.068528,0.044013,-0.007708, + 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167, + 0.684547,-0.728969,0,0.067758,0.043242,-0.007708, + 0.728969,-0.684547,0,0.068528,0.044013,-0.007708, + 0.684547,-0.728969,0,0.067758,0.043242,-0.007708, + 0.707107,-0.707107,0,0.068097,0.043581,-0.007708, + 0.728969,-0.684547,0,0.068528,0.044013,-0.007708, + 0.707107,-0.707107,0,0.068097,0.043581,-0.007708, + 0.707107,-0.707107,0,0.068189,0.043673,-0.007708, + 0.684547,-0.728969,0,0.067758,0.043242,-0.007708, + 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167, + 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167, + 0.684547,-0.728969,0,0.067758,0.043242,-0.007708, + 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167, + 0.637424,-0.770513,0,0.066941,0.042522,-0.007708, + 0.637424,-0.770513,0,0.066941,0.042522,-0.007708, + 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167, + 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167, + 0.637424,-0.770513,0,0.066941,0.042522,-0.007708, + 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167, + 0.587785,-0.809017,0,0.06608,0.041854,-0.007708, + 0.587785,-0.809017,0,0.06608,0.041854,-0.007708, + 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167, + 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167, + 0.587785,-0.809017,0,0.06608,0.041854,-0.007708, + 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167, + 0.535827,-0.844328,0,0.065178,0.041241,-0.007708, + 0.535827,-0.844328,0,0.065178,0.041241,-0.007708, + 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167, + 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167, + 0.535827,-0.844328,0,0.065178,0.041241,-0.007708, + 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167, + 0.481754,-0.876307,0,0.064241,0.040687,-0.007708, + 0.535827,-0.844328,0,0.065178,0.041241,-0.007708, + 0.481754,-0.876307,0,0.064241,0.040687,-0.007708, + 0.509041,-0.860742,0,0.064507,0.040845,-0.007708, + 0.535827,-0.844328,0,0.065178,0.041241,-0.007708, + 0.509041,-0.860742,0,0.064507,0.040845,-0.007708, + 0.509041,-0.860742,0,0.064607,0.040904,-0.007708, + 0.481754,-0.876307,0,0.064241,0.040687,-0.007708, + 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167, + 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167, + 0.481754,-0.876307,0,0.064241,0.040687,-0.007708, + 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167, + 0.425779,-0.904827,0,0.06327,0.040192,-0.007708, + 0.425779,-0.904827,0,0.06327,0.040192,-0.007708, + 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167, + 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167, + 0.425779,-0.904827,0,0.06327,0.040192,-0.007708, + 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167, + 0.368125,-0.929776,0,0.06227,0.03976,-0.007708, + 0.368125,-0.929776,0,0.06227,0.03976,-0.007708, + 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167, + 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167, + 0.368125,-0.929776,0,0.06227,0.03976,-0.007708, + 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167, + 0.309017,-0.951057,0,0.061245,0.03939,-0.007708, + 0.309017,-0.951057,0,0.061245,0.03939,-0.007708, + 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167, + 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167, + 0.309017,-0.951057,0,0.061245,0.03939,-0.007708, + 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167, + 0.24869,-0.968583,0,0.060198,0.039087,-0.007708, + 0.309017,-0.951057,0,0.061245,0.03939,-0.007708, + 0.24869,-0.968583,0,0.060198,0.039087,-0.007708, + 0.278991,-0.960294,0,0.060343,0.039128,-0.007708, + 0.309017,-0.951057,0,0.061245,0.03939,-0.007708, + 0.278991,-0.960294,0,0.060343,0.039128,-0.007708, + 0.278991,-0.960294,0,0.060414,0.039149,-0.007708, + 0.24869,-0.968583,0,0.060198,0.039087,-0.007708, + 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167, + 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167, + 0.24869,-0.968583,0,0.060198,0.039087,-0.007708, + 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167, + 0.187381,-0.982287,0,0.059135,0.038849,-0.007708, + 0.187381,-0.982287,0,0.059135,0.038849,-0.007708, + 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167, + 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167, + 0.187381,-0.982287,0,0.059135,0.038849,-0.007708, + 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167, + 0.125333,-0.992115,0,0.058059,0.038678,-0.007708, + 0.125333,-0.992115,0,0.058059,0.038678,-0.007708, + 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167, + 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167, + 0.125333,-0.992115,0,0.058059,0.038678,-0.007708, + 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167, + 0.094108,-0.995562,0,0.056974,0.038576,-0.007708 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,9588,data,NULL}; +const struct gllist *companion_disc=&frame; diff --git a/hacks/glx/companion_heart.c b/hacks/glx/companion_heart.c new file mode 100644 index 0000000..1786a62 --- /dev/null +++ b/hacks/glx/companion_heart.c @@ -0,0 +1,653 @@ +#include "gllist.h" +static const float data[]={ + -0.126112,-0.516835,0.846745,0.062716,0.065295,-0.005781, + -0.233173,-0.466563,0.853199,0.063951,0.064804,-0.005781, + -0.169323,-0.502195,0.848015,0.063583,0.066646,-0.004818, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.055116,0.063504,-0.005781, + 0,0,1,0.054127,0.064391,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.054127,0.064391,-0.005781, + 0,0,1,0.052967,0.065039,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.052967,0.065039,-0.005781, + 0,0,1,0.051693,0.065415,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.051693,0.065415,-0.005781, + 0,0,1,0.050367,0.065502,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.050367,0.065502,-0.005781, + 0,0,1,0.049054,0.065295,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.049054,0.065295,-0.005781, + 0,0,1,0.04782,0.064804,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.04782,0.064804,-0.005781, + 0,0,1,0.046724,0.064053,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.046724,0.064053,-0.005781, + 0,0,1,0.04582,0.063079,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.04582,0.063079,-0.005781, + 0,0,1,0.045152,0.06193,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.045152,0.06193,-0.005781, + 0,0,1,0.044754,0.060662,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.044754,0.060662,-0.005781, + 0,0,1,0.044645,0.059338,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.044645,0.059338,-0.005781, + 0,0,1,0.044702,0.058527,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.044702,0.058527,-0.005781, + 0,0,1,0.044827,0.057723,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.044827,0.057723,-0.005781, + 0,0,1,0.045017,0.056932,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.045017,0.056932,-0.005781, + 0,0,1,0.045272,0.05616,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.045272,0.05616,-0.005781, + 0,0,1,0.04559,0.055411,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.04559,0.055411,-0.005781, + 0,0,1,0.04597,0.054691,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.04597,0.054691,-0.005781, + 0,0,1,0.046407,0.054006,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.046407,0.054006,-0.005781, + 0,0,1,0.0469,0.053359,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.0469,0.053359,-0.005781, + 0,0,1,0.047445,0.052755,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.047445,0.052755,-0.005781, + 0,0,1,0.048038,0.052198,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.048038,0.052198,-0.005781, + 0,0,1,0.048675,0.051693,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.048675,0.051693,-0.005781, + 0,0,1,0.049352,0.051241,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.049352,0.051241,-0.005781, + 0,0,1,0.050001,0.050829,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.050001,0.050829,-0.005781, + 0,0,1,0.050634,0.050393,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.050634,0.050393,-0.005781, + 0,0,1,0.05125,0.049933,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.05125,0.049933,-0.005781, + 0,0,1,0.051848,0.049449,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.051848,0.049449,-0.005781, + 0,0,1,0.052427,0.048943,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.052427,0.048943,-0.005781, + 0,0,1,0.052987,0.048416,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.052987,0.048416,-0.005781, + 0,0,1,0.053525,0.047867,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.053525,0.047867,-0.005781, + 0,0,1,0.054043,0.047299,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.054043,0.047299,-0.005781, + 0,0,1,0.054538,0.046711,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.054538,0.046711,-0.005781, + 0,0,1,0.055011,0.046104,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.055011,0.046104,-0.005781, + 0,0,1,0.05546,0.04548,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.05546,0.04548,-0.005781, + 0,0,1,0.055885,0.044839,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.055885,0.044839,-0.005781, + 0,0,1,0.05631,0.04548,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.05631,0.04548,-0.005781, + 0,0,1,0.05676,0.046104,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.05676,0.046104,-0.005781, + 0,0,1,0.057232,0.046711,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.057232,0.046711,-0.005781, + 0,0,1,0.057728,0.047299,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.057728,0.047299,-0.005781, + 0,0,1,0.058245,0.047867,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.058245,0.047867,-0.005781, + 0,0,1,0.058784,0.048416,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.058784,0.048416,-0.005781, + 0,0,1,0.059343,0.048943,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.059343,0.048943,-0.005781, + 0,0,1,0.059922,0.049449,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.059922,0.049449,-0.005781, + 0,0,1,0.06052,0.049933,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.06052,0.049933,-0.005781, + 0,0,1,0.061136,0.050393,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.061136,0.050393,-0.005781, + 0,0,1,0.061769,0.050829,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.061769,0.050829,-0.005781, + 0,0,1,0.062418,0.051241,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.062418,0.051241,-0.005781, + 0,0,1,0.063095,0.051693,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.063095,0.051693,-0.005781, + 0,0,1,0.063732,0.052198,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.063732,0.052198,-0.005781, + 0,0,1,0.064326,0.052755,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.064326,0.052755,-0.005781, + 0,0,1,0.06487,0.053359,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.06487,0.053359,-0.005781, + 0,0,1,0.065363,0.054006,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.065363,0.054006,-0.005781, + 0,0,1,0.065801,0.054691,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.065801,0.054691,-0.005781, + 0,0,1,0.06618,0.055411,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.06618,0.055411,-0.005781, + 0,0,1,0.066498,0.05616,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.066498,0.05616,-0.005781, + 0,0,1,0.066754,0.056932,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.066754,0.056932,-0.005781, + 0,0,1,0.066944,0.057723,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.066944,0.057723,-0.005781, + 0,0,1,0.067068,0.058527,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.067068,0.058527,-0.005781, + 0,0,1,0.067125,0.059338,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.067125,0.059338,-0.005781, + 0,0,1,0.067016,0.060662,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.067016,0.060662,-0.005781, + 0,0,1,0.066618,0.06193,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.066618,0.06193,-0.005781, + 0,0,1,0.065951,0.063079,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.065951,0.063079,-0.005781, + 0,0,1,0.065047,0.064053,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.065047,0.064053,-0.005781, + 0,0,1,0.063951,0.064804,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.063951,0.064804,-0.005781, + 0,0,1,0.062716,0.065295,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.062716,0.065295,-0.005781, + 0,0,1,0.061404,0.065502,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.061404,0.065502,-0.005781, + 0,0,1,0.060078,0.065415,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.060078,0.065415,-0.005781, + 0,0,1,0.058804,0.065039,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.058804,0.065039,-0.005781, + 0,0,1,0.057644,0.064391,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.057644,0.064391,-0.005781, + 0,0,1,0.056655,0.063504,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.056655,0.063504,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.055885,0.06242,-0.005781, + 0,0,1,0.055116,0.063504,-0.005781, + 0.600355,0.41774,0.681958,0.05546,0.04548,-0.005781, + 0.611328,0.411243,0.676134,0.055414,0.04397,-0.004818, + 0.619748,0.407106,0.670953,0.055885,0.044839,-0.005781, + 0.611328,0.411243,0.676134,0.055414,0.04397,-0.004818, + 0.600355,0.41774,0.681958,0.05546,0.04548,-0.005781, + 0.583861,0.425853,0.691199,0.054915,0.044676,-0.004818, + 0.573435,0.432324,0.695894,0.055011,0.046104,-0.005781, + 0.583861,0.425853,0.691199,0.054915,0.044676,-0.004818, + 0.600355,0.41774,0.681958,0.05546,0.04548,-0.005781, + 0.583861,0.425853,0.691199,0.054915,0.044676,-0.004818, + 0.573435,0.432324,0.695894,0.055011,0.046104,-0.005781, + 0.557839,0.440321,0.703515,0.05439,0.045363,-0.004818, + 0.547914,0.446817,0.707209,0.054538,0.046711,-0.005781, + 0.557839,0.440321,0.703515,0.05439,0.045363,-0.004818, + 0.573435,0.432324,0.695894,0.055011,0.046104,-0.005781, + 0.557839,0.440321,0.703515,0.05439,0.045363,-0.004818, + 0.547914,0.446817,0.707209,0.054538,0.046711,-0.005781, + 0.528358,0.458036,0.714871,0.05384,0.046029,-0.004818, + 0.525024,0.459644,0.716294,0.054043,0.047299,-0.005781, + 0.528358,0.458036,0.714871,0.05384,0.046029,-0.004818, + 0.547914,0.446817,0.707209,0.054538,0.046711,-0.005781, + 0.525024,0.459644,0.716294,0.054043,0.047299,-0.005781, + 0.507344,0.470385,0.722039,0.053525,0.047867,-0.005781, + 0.528358,0.458036,0.714871,0.05384,0.046029,-0.004818, + 0.502587,0.474851,0.722443,0.053266,0.046673,-0.004818, + 0.528358,0.458036,0.714871,0.05384,0.046029,-0.004818, + 0.507344,0.470385,0.722039,0.053525,0.047867,-0.005781, + 0.507344,0.470385,0.722039,0.053525,0.047867,-0.005781, + 0.484849,0.48521,0.727662,0.052987,0.048416,-0.005781, + 0.502587,0.474851,0.722443,0.053266,0.046673,-0.004818, + 0.480277,0.489774,0.727637,0.052668,0.047293,-0.004818, + 0.502587,0.474851,0.722443,0.053266,0.046673,-0.004818, + 0.484849,0.48521,0.727662,0.052987,0.048416,-0.005781, + 0.484849,0.48521,0.727662,0.052987,0.048416,-0.005781, + 0.463202,0.500363,0.731492,0.052427,0.048943,-0.005781, + 0.480277,0.489774,0.727637,0.052668,0.047293,-0.004818, + 0.458764,0.50505,0.731068,0.052047,0.047891,-0.004818, + 0.480277,0.489774,0.727637,0.052668,0.047293,-0.004818, + 0.463202,0.500363,0.731492,0.052427,0.048943,-0.005781, + 0.463202,0.500363,0.731492,0.052427,0.048943,-0.005781, + 0.442255,0.515933,0.733637,0.051848,0.049449,-0.005781, + 0.458764,0.50505,0.731068,0.052047,0.047891,-0.004818, + 0.437903,0.520767,0.732832,0.051404,0.048464,-0.004818, + 0.458764,0.50505,0.731068,0.052047,0.047891,-0.004818, + 0.442255,0.515933,0.733637,0.051848,0.049449,-0.005781, + 0.442255,0.515933,0.733637,0.051848,0.049449,-0.005781, + 0.419718,0.534563,0.733539,0.05125,0.049933,-0.005781, + 0.437903,0.520767,0.732832,0.051404,0.048464,-0.004818, + 0.42249,0.532759,0.73326,0.050741,0.049011,-0.004818, + 0.437903,0.520767,0.732832,0.051404,0.048464,-0.004818, + 0.419718,0.534563,0.733539,0.05125,0.049933,-0.005781, + 0.42249,0.532759,0.73326,0.050741,0.049011,-0.004818, + 0.419718,0.534563,0.733539,0.05125,0.049933,-0.005781, + 0.403677,0.547538,0.732971,0.050057,0.049532,-0.004818, + 0.395847,0.555175,0.731496,0.050634,0.050393,-0.005781, + 0.403677,0.547538,0.732971,0.050057,0.049532,-0.004818, + 0.419718,0.534563,0.733539,0.05125,0.049933,-0.005781, + 0.403677,0.547538,0.732971,0.050057,0.049532,-0.004818, + 0.395847,0.555175,0.731496,0.050634,0.050393,-0.005781, + 0.38391,0.564835,0.730462,0.049354,0.050026,-0.004818, + 0.376177,0.572732,0.728333,0.050001,0.050829,-0.005781, + 0.38391,0.564835,0.730462,0.049354,0.050026,-0.004818, + 0.395847,0.555175,0.731496,0.050634,0.050393,-0.005781, + 0.38391,0.564835,0.730462,0.049354,0.050026,-0.004818, + 0.376177,0.572732,0.728333,0.050001,0.050829,-0.005781, + 0.375296,0.574093,0.727715,0.048634,0.050493,-0.004818, + 0.378691,0.573667,0.726291,0.049352,0.051241,-0.005781, + 0.375296,0.574093,0.727715,0.048634,0.050493,-0.004818, + 0.376177,0.572732,0.728333,0.050001,0.050829,-0.005781, + 0.375296,0.574093,0.727715,0.048634,0.050493,-0.004818, + 0.378691,0.573667,0.726291,0.049352,0.051241,-0.005781, + 0.405711,0.551851,0.728601,0.047882,0.051003,-0.004818, + 0.403275,0.554082,0.72826,0.048675,0.051693,-0.005781, + 0.405711,0.551851,0.728601,0.047882,0.051003,-0.004818, + 0.378691,0.573667,0.726291,0.049352,0.051241,-0.005781, + 0.403275,0.554082,0.72826,0.048675,0.051693,-0.005781, + 0.439698,0.520339,0.732061,0.048038,0.052198,-0.005781, + 0.405711,0.551851,0.728601,0.047882,0.051003,-0.004818, + 0.455156,0.505988,0.732672,0.047175,0.051576,-0.004818, + 0.405711,0.551851,0.728601,0.047882,0.051003,-0.004818, + 0.439698,0.520339,0.732061,0.048038,0.052198,-0.005781, + 0.439698,0.520339,0.732061,0.048038,0.052198,-0.005781, + 0.478388,0.479119,0.735928,0.047445,0.052755,-0.005781, + 0.455156,0.505988,0.732672,0.047175,0.051576,-0.004818, + 0.492434,0.463571,0.736621,0.046517,0.052206,-0.004818, + 0.455156,0.505988,0.732672,0.047175,0.051576,-0.004818, + 0.478388,0.479119,0.735928,0.047445,0.052755,-0.005781, + 0.478388,0.479119,0.735928,0.047445,0.052755,-0.005781, + 0.513034,0.434953,0.740008,0.0469,0.053359,-0.005781, + 0.492434,0.463571,0.736621,0.046517,0.052206,-0.004818, + 0.525496,0.418365,0.740827,0.045912,0.05289,-0.004818, + 0.492434,0.463571,0.736621,0.046517,0.052206,-0.004818, + 0.513034,0.434953,0.740008,0.0469,0.053359,-0.005781, + 0.513034,0.434953,0.740008,0.0469,0.053359,-0.005781, + 0.543337,0.388194,0.744372,0.046407,0.054006,-0.005781, + 0.525496,0.418365,0.740827,0.045912,0.05289,-0.004818, + 0.554068,0.370754,0.745352,0.045365,0.053623,-0.004818, + 0.525496,0.418365,0.740827,0.045912,0.05289,-0.004818, + 0.543337,0.388194,0.744372,0.046407,0.054006,-0.005781, + 0.543337,0.388194,0.744372,0.046407,0.054006,-0.005781, + 0.569031,0.339242,0.749078,0.04597,0.054691,-0.005781, + 0.554068,0.370754,0.745352,0.045365,0.053623,-0.004818, + 0.577912,0.321162,0.750248,0.044879,0.054399,-0.004818, + 0.554068,0.370754,0.745352,0.045365,0.053623,-0.004818, + 0.569031,0.339242,0.749078,0.04597,0.054691,-0.005781, + 0.569031,0.339242,0.749078,0.04597,0.054691,-0.005781, + 0.589896,0.288542,0.754166,0.04559,0.055411,-0.005781, + 0.577912,0.321162,0.750248,0.044879,0.054399,-0.004818, + 0.596848,0.270049,0.755544,0.044458,0.055214,-0.004818, + 0.577912,0.321162,0.750248,0.044879,0.054399,-0.004818, + 0.589896,0.288542,0.754166,0.04559,0.055411,-0.005781, + 0.589896,0.288542,0.754166,0.04559,0.055411,-0.005781, + 0.60577,0.236571,0.759656,0.045272,0.05616,-0.005781, + 0.596848,0.270049,0.755544,0.044458,0.055214,-0.004818, + 0.610753,0.217903,0.761249,0.044105,0.056061,-0.004818, + 0.596848,0.270049,0.755544,0.044458,0.055214,-0.004818, + 0.60577,0.236571,0.759656,0.045272,0.05616,-0.005781, + 0.60577,0.236571,0.759656,0.045272,0.05616,-0.005781, + 0.616557,0.183837,0.765546,0.045017,0.056932,-0.005781, + 0.610753,0.217903,0.761249,0.044105,0.056061,-0.004818, + 0.619574,0.165232,0.767351,0.043821,0.056936,-0.004818, + 0.610753,0.217903,0.761249,0.044105,0.056061,-0.004818, + 0.616557,0.183837,0.765546,0.045017,0.056932,-0.005781, + 0.616557,0.183837,0.765546,0.045017,0.056932,-0.005781, + 0.622238,0.13086,0.771813,0.044827,0.057723,-0.005781, + 0.619574,0.165232,0.767351,0.043821,0.056936,-0.004818, + 0.623333,0.112547,0.773815,0.04361,0.057831,-0.004818, + 0.619574,0.165232,0.767351,0.043821,0.056936,-0.004818, + 0.622238,0.13086,0.771813,0.044827,0.057723,-0.005781, + 0.622238,0.13086,0.771813,0.044827,0.057723,-0.005781, + 0.622921,0.078006,0.778386,0.044702,0.058527,-0.005781, + 0.623333,0.112547,0.773815,0.04361,0.057831,-0.004818, + 0.622674,0.06887,0.779444,0.043472,0.058741,-0.004818, + 0.623333,0.112547,0.773815,0.04361,0.057831,-0.004818, + 0.622921,0.078006,0.778386,0.044702,0.058527,-0.005781, + 0.615482,0.005518,0.788132,0.043409,0.05966,-0.004818, + 0.622674,0.06887,0.779444,0.043472,0.058741,-0.004818, + 0.622921,0.078006,0.778386,0.044702,0.058527,-0.005781, + 0.615482,0.005518,0.788132,0.043409,0.05966,-0.004818, + 0.622921,0.078006,0.778386,0.044702,0.058527,-0.005781, + 0.608032,-0.012608,0.793813,0.044645,0.059338,-0.005781, + 0.615482,0.005518,0.788132,0.043409,0.05966,-0.004818, + 0.608032,-0.012608,0.793813,0.044645,0.059338,-0.005781, + 0.587334,-0.078712,0.805508,0.043489,0.061186,-0.004818, + 0.563271,-0.124273,0.816873,0.044754,0.060662,-0.005781, + 0.587334,-0.078712,0.805508,0.043489,0.061186,-0.004818, + 0.608032,-0.012608,0.793813,0.044645,0.059338,-0.005781, + 0.587334,-0.078712,0.805508,0.043489,0.061186,-0.004818, + 0.563271,-0.124273,0.816873,0.044754,0.060662,-0.005781, + 0.528554,-0.194938,0.826214,0.043898,0.062655,-0.004818, + 0.498136,-0.2337,0.835012,0.045152,0.06193,-0.005781, + 0.528554,-0.194938,0.826214,0.043898,0.062655,-0.004818, + 0.563271,-0.124273,0.816873,0.044754,0.060662,-0.005781, + 0.528554,-0.194938,0.826214,0.043898,0.062655,-0.004818, + 0.498136,-0.2337,0.835012,0.045152,0.06193,-0.005781, + 0.454671,-0.294294,0.840634,0.044613,0.063997,-0.004818, + 0.419714,-0.3263,0.846976,0.04582,0.063079,-0.005781, + 0.454671,-0.294294,0.840634,0.044613,0.063997,-0.004818, + 0.498136,-0.2337,0.835012,0.045152,0.06193,-0.005781, + 0.454671,-0.294294,0.840634,0.044613,0.063997,-0.004818, + 0.419714,-0.3263,0.846976,0.04582,0.063079,-0.005781, + 0.369159,-0.377727,0.849143,0.0456,0.065145,-0.004818, + 0.33096,-0.403408,0.853069,0.046724,0.064053,-0.005781, + 0.369159,-0.377727,0.849143,0.0456,0.065145,-0.004818, + 0.419714,-0.3263,0.846976,0.04582,0.063079,-0.005781, + 0.369159,-0.377727,0.849143,0.0456,0.065145,-0.004818, + 0.33096,-0.403408,0.853069,0.046724,0.064053,-0.005781, + 0.273921,-0.44663,0.851756,0.046812,0.066043,-0.004818, + 0.233173,-0.466563,0.853199,0.04782,0.064804,-0.005781, + 0.273921,-0.44663,0.851756,0.046812,0.066043,-0.004818, + 0.33096,-0.403408,0.853069,0.046724,0.064053,-0.005781, + 0.273921,-0.44663,0.851756,0.046812,0.066043,-0.004818, + 0.233173,-0.466563,0.853199,0.04782,0.064804,-0.005781, + 0.169323,-0.502195,0.848015,0.048188,0.066646,-0.004818, + 0.126112,-0.516835,0.846745,0.049054,0.065295,-0.005781, + 0.169323,-0.502195,0.848015,0.048188,0.066646,-0.004818, + 0.233173,-0.466563,0.853199,0.04782,0.064804,-0.005781, + 0.169323,-0.502195,0.848015,0.048188,0.066646,-0.004818, + 0.126112,-0.516835,0.846745,0.049054,0.065295,-0.005781, + 0.054393,-0.544766,0.836822,0.04966,0.066926,-0.004818, + 0.00829,-0.554159,0.832369,0.050367,0.065502,-0.005781, + 0.054393,-0.544766,0.836822,0.04966,0.066926,-0.004818, + 0.126112,-0.516835,0.846745,0.049054,0.065295,-0.005781, + 0.054393,-0.544766,0.836822,0.04966,0.066926,-0.004818, + 0.00829,-0.554159,0.832369,0.050367,0.065502,-0.005781, + -0.072758,-0.573144,0.816219,0.051157,0.066867,-0.004818, + -0.12248,-0.576612,0.807785,0.051693,0.065415,-0.005781, + -0.072758,-0.573144,0.816219,0.051157,0.066867,-0.004818, + 0.00829,-0.554159,0.832369,0.050367,0.065502,-0.005781, + -0.072758,-0.573144,0.816219,0.051157,0.066867,-0.004818, + -0.12248,-0.576612,0.807785,0.051693,0.065415,-0.005781, + -0.241161,-0.582165,0.776482,0.052605,0.066474,-0.004818, + -0.248853,-0.582215,0.774014,0.052967,0.065039,-0.005781, + -0.241161,-0.582165,0.776482,0.052605,0.066474,-0.004818, + -0.12248,-0.576612,0.807785,0.051693,0.065415,-0.005781, + -0.248853,-0.582215,0.774014,0.052967,0.065039,-0.005781, + -0.375277,-0.56983,0.731068,0.054127,0.064391,-0.005781, + -0.241161,-0.582165,0.776482,0.052605,0.066474,-0.004818, + -0.434459,-0.558606,0.706544,0.053934,0.065766,-0.004818, + -0.241161,-0.582165,0.776482,0.052605,0.066474,-0.004818, + -0.375277,-0.56983,0.731068,0.054127,0.064391,-0.005781, + -0.375277,-0.56983,0.731068,0.054127,0.064391,-0.005781, + -0.563066,-0.515371,0.646025,0.055116,0.063504,-0.005781, + -0.434459,-0.558606,0.706544,0.053934,0.065766,-0.004818, + -0.558162,-0.527957,0.640091,0.055031,0.064761,-0.004818, + -0.434459,-0.558606,0.706544,0.053934,0.065766,-0.004818, + -0.563066,-0.515371,0.646025,0.055116,0.063504,-0.005781, + -0.558162,-0.527957,0.640091,0.055031,0.064761,-0.004818, + -0.563066,-0.515371,0.646025,0.055116,0.063504,-0.005781, + -0.627283,-0.480953,0.612536,0.055885,0.063727,-0.004818, + -0.641198,-0.455323,0.617694,0.055885,0.06242,-0.005781, + -0.627283,-0.480953,0.612536,0.055885,0.063727,-0.004818, + -0.563066,-0.515371,0.646025,0.055116,0.063504,-0.005781, + 0.641198,-0.455323,0.617694,0.055885,0.06242,-0.005781, + 0.584317,-0.505368,0.634963,0.056655,0.063504,-0.005781, + 0.627283,-0.480953,0.612536,0.055885,0.063727,-0.004818, + 0.53575,-0.534369,0.653775,0.056739,0.064761,-0.004818, + 0.627283,-0.480953,0.612536,0.055885,0.063727,-0.004818, + 0.584317,-0.505368,0.634963,0.056655,0.063504,-0.005781, + 0.584317,-0.505368,0.634963,0.056655,0.063504,-0.005781, + 0.438876,-0.557947,0.704332,0.057644,0.064391,-0.005781, + 0.53575,-0.534369,0.653775,0.056739,0.064761,-0.004818, + 0.377865,-0.569077,0.730322,0.057837,0.065766,-0.004818, + 0.53575,-0.534369,0.653775,0.056739,0.064761,-0.004818, + 0.438876,-0.557947,0.704332,0.057644,0.064391,-0.005781, + 0.438876,-0.557947,0.704332,0.057644,0.064391,-0.005781, + 0.267975,-0.579599,0.769581,0.058804,0.065039,-0.005781, + 0.377865,-0.569077,0.730322,0.057837,0.065766,-0.004818, + 0.214084,-0.583805,0.78316,0.059165,0.066474,-0.004818, + 0.377865,-0.569077,0.730322,0.057837,0.065766,-0.004818, + 0.267975,-0.579599,0.769581,0.058804,0.065039,-0.005781, + 0.267975,-0.579599,0.769581,0.058804,0.065039,-0.005781, + 0.12248,-0.576612,0.807785,0.060078,0.065415,-0.005781, + 0.214084,-0.583805,0.78316,0.059165,0.066474,-0.004818, + 0.072758,-0.573144,0.816219,0.060613,0.066867,-0.004818, + 0.214084,-0.583805,0.78316,0.059165,0.066474,-0.004818, + 0.12248,-0.576612,0.807785,0.060078,0.065415,-0.005781, + 0.12248,-0.576612,0.807785,0.060078,0.065415,-0.005781, + -0.00829,-0.554159,0.832369,0.061404,0.065502,-0.005781, + 0.072758,-0.573144,0.816219,0.060613,0.066867,-0.004818, + -0.054393,-0.544766,0.836822,0.06211,0.066926,-0.004818, + 0.072758,-0.573144,0.816219,0.060613,0.066867,-0.004818, + -0.00829,-0.554159,0.832369,0.061404,0.065502,-0.005781, + -0.00829,-0.554159,0.832369,0.061404,0.065502,-0.005781, + -0.126112,-0.516835,0.846745,0.062716,0.065295,-0.005781, + -0.054393,-0.544766,0.836822,0.06211,0.066926,-0.004818, + -0.169323,-0.502195,0.848015,0.063583,0.066646,-0.004818, + -0.054393,-0.544766,0.836822,0.06211,0.066926,-0.004818, + -0.126112,-0.516835,0.846745,0.062716,0.065295,-0.005781, + 0.622274,0.404734,0.670049,0.055885,0.043244,-0.004818, + 0.619748,0.407106,0.670953,0.055885,0.044839,-0.005781, + 0.611328,0.411243,0.676134,0.055414,0.04397,-0.004818, + -0.622274,0.404734,0.670049,0.055885,0.043244,-0.004818, + -0.611328,0.411243,0.676134,0.056357,0.04397,-0.004818, + -0.619748,0.407106,0.670953,0.055885,0.044839,-0.005781, + -0.600355,0.41774,0.681958,0.05631,0.04548,-0.005781, + -0.619748,0.407106,0.670953,0.055885,0.044839,-0.005781, + -0.611328,0.411243,0.676134,0.056357,0.04397,-0.004818, + -0.611328,0.411243,0.676134,0.056357,0.04397,-0.004818, + -0.583861,0.425853,0.691199,0.056856,0.044676,-0.004818, + -0.600355,0.41774,0.681958,0.05631,0.04548,-0.005781, + -0.573435,0.432324,0.695894,0.05676,0.046104,-0.005781, + -0.600355,0.41774,0.681958,0.05631,0.04548,-0.005781, + -0.583861,0.425853,0.691199,0.056856,0.044676,-0.004818, + -0.583861,0.425853,0.691199,0.056856,0.044676,-0.004818, + -0.557839,0.440321,0.703515,0.05738,0.045363,-0.004818, + -0.573435,0.432324,0.695894,0.05676,0.046104,-0.005781, + -0.547914,0.446817,0.707209,0.057232,0.046711,-0.005781, + -0.573435,0.432324,0.695894,0.05676,0.046104,-0.005781, + -0.557839,0.440321,0.703515,0.05738,0.045363,-0.004818, + -0.557839,0.440321,0.703515,0.05738,0.045363,-0.004818, + -0.528358,0.458036,0.714871,0.05793,0.046029,-0.004818, + -0.547914,0.446817,0.707209,0.057232,0.046711,-0.005781, + -0.525024,0.459644,0.716294,0.057728,0.047299,-0.005781, + -0.547914,0.446817,0.707209,0.057232,0.046711,-0.005781, + -0.528358,0.458036,0.714871,0.05793,0.046029,-0.004818, + -0.525024,0.459644,0.716294,0.057728,0.047299,-0.005781, + -0.528358,0.458036,0.714871,0.05793,0.046029,-0.004818, + -0.507344,0.470385,0.722039,0.058245,0.047867,-0.005781, + -0.502587,0.474851,0.722443,0.058505,0.046673,-0.004818, + -0.507344,0.470385,0.722039,0.058245,0.047867,-0.005781, + -0.528358,0.458036,0.714871,0.05793,0.046029,-0.004818, + -0.507344,0.470385,0.722039,0.058245,0.047867,-0.005781, + -0.502587,0.474851,0.722443,0.058505,0.046673,-0.004818, + -0.484849,0.48521,0.727662,0.058784,0.048416,-0.005781, + -0.480277,0.489774,0.727637,0.059103,0.047293,-0.004818, + -0.484849,0.48521,0.727662,0.058784,0.048416,-0.005781, + -0.502587,0.474851,0.722443,0.058505,0.046673,-0.004818, + -0.484849,0.48521,0.727662,0.058784,0.048416,-0.005781, + -0.480277,0.489774,0.727637,0.059103,0.047293,-0.004818, + -0.463202,0.500363,0.731492,0.059343,0.048943,-0.005781, + -0.458764,0.50505,0.731068,0.059724,0.047891,-0.004818, + -0.463202,0.500363,0.731492,0.059343,0.048943,-0.005781, + -0.480277,0.489774,0.727637,0.059103,0.047293,-0.004818, + -0.463202,0.500363,0.731492,0.059343,0.048943,-0.005781, + -0.458764,0.50505,0.731068,0.059724,0.047891,-0.004818, + -0.442255,0.515933,0.733637,0.059922,0.049449,-0.005781, + -0.437903,0.520767,0.732832,0.060366,0.048464,-0.004818, + -0.442255,0.515933,0.733637,0.059922,0.049449,-0.005781, + -0.458764,0.50505,0.731068,0.059724,0.047891,-0.004818, + -0.442255,0.515933,0.733637,0.059922,0.049449,-0.005781, + -0.437903,0.520767,0.732832,0.060366,0.048464,-0.004818, + -0.421867,0.532005,0.734165,0.06052,0.049933,-0.005781, + -0.417553,0.537009,0.732987,0.06103,0.049011,-0.004818, + -0.421867,0.532005,0.734165,0.06052,0.049933,-0.005781, + -0.437903,0.520767,0.732832,0.060366,0.048464,-0.004818, + -0.421867,0.532005,0.734165,0.06052,0.049933,-0.005781, + -0.417553,0.537009,0.732987,0.06103,0.049011,-0.004818, + -0.401898,0.548661,0.73311,0.061136,0.050393,-0.005781, + -0.397577,0.553859,0.731555,0.061714,0.049532,-0.004818, + -0.401898,0.548661,0.73311,0.061136,0.050393,-0.005781, + -0.417553,0.537009,0.732987,0.06103,0.049011,-0.004818, + -0.401898,0.548661,0.73311,0.061136,0.050393,-0.005781, + -0.397577,0.553859,0.731555,0.061714,0.049532,-0.004818, + -0.382209,0.565977,0.730469,0.061769,0.050829,-0.005781, + -0.377837,0.571394,0.728525,0.062416,0.050026,-0.004818, + -0.382209,0.565977,0.730469,0.061769,0.050829,-0.005781, + -0.397577,0.553859,0.731555,0.061714,0.049532,-0.004818, + -0.382209,0.565977,0.730469,0.061769,0.050829,-0.005781, + -0.377837,0.571394,0.728525,0.062416,0.050026,-0.004818, + -0.37698,0.573856,0.727032,0.062418,0.051241,-0.005781, + -0.379372,0.571846,0.727371,0.063137,0.050493,-0.004818, + -0.37698,0.573856,0.727032,0.062418,0.051241,-0.005781, + -0.377837,0.571394,0.728525,0.062416,0.050026,-0.004818, + -0.379372,0.571846,0.727371,0.063137,0.050493,-0.004818, + -0.405711,0.551851,0.728601,0.063888,0.051003,-0.004818, + -0.37698,0.573856,0.727032,0.062418,0.051241,-0.005781, + -0.403275,0.554082,0.72826,0.063095,0.051693,-0.005781, + -0.37698,0.573856,0.727032,0.062418,0.051241,-0.005781, + -0.405711,0.551851,0.728601,0.063888,0.051003,-0.004818, + -0.403275,0.554082,0.72826,0.063095,0.051693,-0.005781, + -0.405711,0.551851,0.728601,0.063888,0.051003,-0.004818, + -0.439698,0.520339,0.732061,0.063732,0.052198,-0.005781, + -0.455156,0.505988,0.732672,0.064596,0.051576,-0.004818, + -0.439698,0.520339,0.732061,0.063732,0.052198,-0.005781, + -0.405711,0.551851,0.728601,0.063888,0.051003,-0.004818, + -0.439698,0.520339,0.732061,0.063732,0.052198,-0.005781, + -0.455156,0.505988,0.732672,0.064596,0.051576,-0.004818, + -0.478388,0.479119,0.735928,0.064326,0.052755,-0.005781, + -0.492434,0.463571,0.736621,0.065254,0.052206,-0.004818, + -0.478388,0.479119,0.735928,0.064326,0.052755,-0.005781, + -0.455156,0.505988,0.732672,0.064596,0.051576,-0.004818, + -0.478388,0.479119,0.735928,0.064326,0.052755,-0.005781, + -0.492434,0.463571,0.736621,0.065254,0.052206,-0.004818, + -0.513034,0.434953,0.740008,0.06487,0.053359,-0.005781, + -0.525496,0.418365,0.740827,0.065859,0.05289,-0.004818, + -0.513034,0.434953,0.740008,0.06487,0.053359,-0.005781, + -0.492434,0.463571,0.736621,0.065254,0.052206,-0.004818, + -0.513034,0.434953,0.740008,0.06487,0.053359,-0.005781, + -0.525496,0.418365,0.740827,0.065859,0.05289,-0.004818, + -0.543337,0.388194,0.744372,0.065363,0.054006,-0.005781, + -0.554068,0.370754,0.745352,0.066406,0.053623,-0.004818, + -0.543337,0.388194,0.744372,0.065363,0.054006,-0.005781, + -0.525496,0.418365,0.740827,0.065859,0.05289,-0.004818, + -0.543337,0.388194,0.744372,0.065363,0.054006,-0.005781, + -0.554068,0.370754,0.745352,0.066406,0.053623,-0.004818, + -0.569031,0.339242,0.749078,0.065801,0.054691,-0.005781, + -0.577912,0.321162,0.750248,0.066892,0.054399,-0.004818, + -0.569031,0.339242,0.749078,0.065801,0.054691,-0.005781, + -0.554068,0.370754,0.745352,0.066406,0.053623,-0.004818, + -0.569031,0.339242,0.749078,0.065801,0.054691,-0.005781, + -0.577912,0.321162,0.750248,0.066892,0.054399,-0.004818, + -0.589896,0.288542,0.754166,0.06618,0.055411,-0.005781, + -0.596848,0.270049,0.755544,0.067313,0.055214,-0.004818, + -0.589896,0.288542,0.754166,0.06618,0.055411,-0.005781, + -0.577912,0.321162,0.750248,0.066892,0.054399,-0.004818, + -0.589896,0.288542,0.754166,0.06618,0.055411,-0.005781, + -0.596848,0.270049,0.755544,0.067313,0.055214,-0.004818, + -0.60577,0.236571,0.759656,0.066498,0.05616,-0.005781, + -0.610753,0.217903,0.761249,0.067666,0.056061,-0.004818, + -0.60577,0.236571,0.759656,0.066498,0.05616,-0.005781, + -0.596848,0.270049,0.755544,0.067313,0.055214,-0.004818, + -0.60577,0.236571,0.759656,0.066498,0.05616,-0.005781, + -0.610753,0.217903,0.761249,0.067666,0.056061,-0.004818, + -0.616557,0.183837,0.765546,0.066754,0.056932,-0.005781, + -0.619574,0.165232,0.767351,0.067949,0.056936,-0.004818, + -0.616557,0.183837,0.765546,0.066754,0.056932,-0.005781, + -0.610753,0.217903,0.761249,0.067666,0.056061,-0.004818, + -0.616557,0.183837,0.765546,0.066754,0.056932,-0.005781, + -0.619574,0.165232,0.767351,0.067949,0.056936,-0.004818, + -0.622238,0.13086,0.771813,0.066944,0.057723,-0.005781, + -0.623333,0.112547,0.773815,0.068161,0.057831,-0.004818, + -0.622238,0.13086,0.771813,0.066944,0.057723,-0.005781, + -0.619574,0.165232,0.767351,0.067949,0.056936,-0.004818, + -0.622238,0.13086,0.771813,0.066944,0.057723,-0.005781, + -0.623333,0.112547,0.773815,0.068161,0.057831,-0.004818, + -0.622921,0.078006,0.778386,0.067068,0.058527,-0.005781, + -0.622674,0.06887,0.779444,0.068298,0.058741,-0.004818, + -0.622921,0.078006,0.778386,0.067068,0.058527,-0.005781, + -0.623333,0.112547,0.773815,0.068161,0.057831,-0.004818, + -0.622921,0.078006,0.778386,0.067068,0.058527,-0.005781, + -0.622674,0.06887,0.779444,0.068298,0.058741,-0.004818, + -0.615482,0.005518,0.788132,0.068362,0.05966,-0.004818, + -0.622921,0.078006,0.778386,0.067068,0.058527,-0.005781, + -0.615482,0.005518,0.788132,0.068362,0.05966,-0.004818, + -0.608032,-0.012608,0.793813,0.067125,0.059338,-0.005781, + -0.615482,0.005518,0.788132,0.068362,0.05966,-0.004818, + -0.587334,-0.078712,0.805508,0.068281,0.061186,-0.004818, + -0.608032,-0.012608,0.793813,0.067125,0.059338,-0.005781, + -0.563271,-0.124273,0.816873,0.067016,0.060662,-0.005781, + -0.608032,-0.012608,0.793813,0.067125,0.059338,-0.005781, + -0.587334,-0.078712,0.805508,0.068281,0.061186,-0.004818, + -0.587334,-0.078712,0.805508,0.068281,0.061186,-0.004818, + -0.528554,-0.194938,0.826214,0.067873,0.062655,-0.004818, + -0.563271,-0.124273,0.816873,0.067016,0.060662,-0.005781, + -0.498136,-0.2337,0.835012,0.066618,0.06193,-0.005781, + -0.563271,-0.124273,0.816873,0.067016,0.060662,-0.005781, + -0.528554,-0.194938,0.826214,0.067873,0.062655,-0.004818, + -0.528554,-0.194938,0.826214,0.067873,0.062655,-0.004818, + -0.454671,-0.294294,0.840634,0.067158,0.063997,-0.004818, + -0.498136,-0.2337,0.835012,0.066618,0.06193,-0.005781, + -0.419714,-0.3263,0.846976,0.065951,0.063079,-0.005781, + -0.498136,-0.2337,0.835012,0.066618,0.06193,-0.005781, + -0.454671,-0.294294,0.840634,0.067158,0.063997,-0.004818, + -0.454671,-0.294294,0.840634,0.067158,0.063997,-0.004818, + -0.369159,-0.377727,0.849143,0.06617,0.065145,-0.004818, + -0.419714,-0.3263,0.846976,0.065951,0.063079,-0.005781, + -0.33096,-0.403408,0.853069,0.065047,0.064053,-0.005781, + -0.419714,-0.3263,0.846976,0.065951,0.063079,-0.005781, + -0.369159,-0.377727,0.849143,0.06617,0.065145,-0.004818, + -0.369159,-0.377727,0.849143,0.06617,0.065145,-0.004818, + -0.273921,-0.44663,0.851756,0.064959,0.066043,-0.004818, + -0.33096,-0.403408,0.853069,0.065047,0.064053,-0.005781, + -0.233173,-0.466563,0.853199,0.063951,0.064804,-0.005781, + -0.33096,-0.403408,0.853069,0.065047,0.064053,-0.005781, + -0.273921,-0.44663,0.851756,0.064959,0.066043,-0.004818, + -0.273921,-0.44663,0.851756,0.064959,0.066043,-0.004818, + -0.169323,-0.502195,0.848015,0.063583,0.066646,-0.004818, + -0.233173,-0.466563,0.853199,0.063951,0.064804,-0.005781 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,648,data,NULL}; +const struct gllist *companion_heart=&frame; diff --git a/hacks/glx/companion_quad.c b/hacks/glx/companion_quad.c new file mode 100644 index 0000000..3cfd230 --- /dev/null +++ b/hacks/glx/companion_quad.c @@ -0,0 +1,389 @@ +#include "gllist.h" +static const float data[]={ + 0.11097,0.464834,-0.878416,0.79903,1.636364,-0.247442, + 0.138522,0.464654,-0.87459,0.773415,1.636364,-0.251499, + 0.138522,0.464654,-0.87459,0.775033,1.681818,-0.227094, + 0.11097,0.464834,-0.878416,0.79903,1.636364,-0.247442, + 0.138522,0.464654,-0.87459,0.775033,1.681818,-0.227094, + 0.11097,0.464834,-0.878416,0.796039,1.681818,-0.223767, + -0.917485,0.21303,-0.335916,0.757576,1.636364,-0.208242, + -0.917485,0.21303,-0.335916,0.757576,1.681818,-0.179415, + -0.917485,0.21303,-0.335916,0.775033,1.681818,-0.227094, + -0.917485,0.21303,-0.335916,0.757576,1.636364,-0.208242, + -0.917485,0.21303,-0.335916,0.775033,1.681818,-0.227094, + -0.917485,0.21303,-0.335916,0.773415,1.636364,-0.251499, + -1,0,0,0.757576,1.636364,-0.208242, + -1,0,0,0.757576,1.636364,-0.121212, + -1,0,0,0.757576,1.549333,-0.121212, + -1,0,0,0.757576,1.636364,-0.208242, + -1,0,0,0.757576,1.549333,-0.121212, + -1,0,0,0.757576,1.578161,-0.075758, + -1,0,0,0.757576,1.636364,-0.208242, + -1,0,0,0.757576,1.578161,-0.075758, + -1,0,0,0.757576,1.636364,-0.075758, + -1,0,0,0.757576,1.636364,-0.208242, + -1,0,0,0.757576,1.636364,-0.075758, + -1,0,0,0.757576,1.681818,-0.121212, + -1,0,0,0.757576,1.636364,-0.208242, + -1,0,0,0.757576,1.681818,-0.121212, + -1,0,0,0.757576,1.681818,-0.179415, + -0.917485,-0.335916,0.21303,0.757576,1.578161,-0.075758, + -0.917485,-0.335916,0.21303,0.757576,1.549333,-0.121212, + -0.917485,-0.335916,0.21303,0.773415,1.506076,-0.121212, + -0.917485,-0.335916,0.21303,0.757576,1.578161,-0.075758, + -0.917485,-0.335916,0.21303,0.773415,1.506076,-0.121212, + -0.917485,-0.335916,0.21303,0.775033,1.530482,-0.075758, + 0.138522,-0.87459,0.464654,0.773415,1.506076,-0.121212, + 0.11097,-0.878416,0.464834,0.79903,1.510133,-0.121212, + 0.11097,-0.878416,0.464834,0.796039,1.533809,-0.075758, + 0.138522,-0.87459,0.464654,0.773415,1.506076,-0.121212, + 0.11097,-0.878416,0.464834,0.796039,1.533809,-0.075758, + 0.138522,-0.87459,0.464654,0.775033,1.530482,-0.075758, + 0.11097,-0.878416,0.464834,0.796039,1.533809,-0.075758, + 0.11097,-0.878416,0.464834,0.79903,1.510133,-0.121212, + 0.055595,-0.883651,0.464834,0.83883,1.513897,-0.121212, + 0.11097,-0.878416,0.464834,0.796039,1.533809,-0.075758, + 0.055595,-0.883651,0.464834,0.83883,1.513897,-0.121212, + 0.055595,-0.883651,0.464834,0.837333,1.537712,-0.075758, + 0.055595,-0.883651,0.464834,0.837333,1.537712,-0.075758, + 0.055595,-0.883651,0.464834,0.83883,1.513897,-0.121212, + 0,-0.885398,0.464834,0.878788,1.515152,-0.121212, + 0.055595,-0.883651,0.464834,0.837333,1.537712,-0.075758, + 0,-0.885398,0.464834,0.878788,1.515152,-0.121212, + 0,-0.885398,0.464834,0.878788,1.539015,-0.075758, + -0.055595,-0.883651,0.464834,0.918745,1.513897,-0.121212, + -0.055595,-0.883651,0.464834,0.920242,1.537712,-0.075758, + 0,-0.885398,0.464834,0.878788,1.539015,-0.075758, + -0.055595,-0.883651,0.464834,0.918745,1.513897,-0.121212, + 0,-0.885398,0.464834,0.878788,1.539015,-0.075758, + 0,-0.885398,0.464834,0.878788,1.515152,-0.121212, + -0.11097,-0.878416,0.464834,0.958545,1.510133,-0.121212, + -0.11097,-0.878416,0.464834,0.961536,1.533809,-0.075758, + -0.055595,-0.883651,0.464834,0.920242,1.537712,-0.075758, + -0.11097,-0.878416,0.464834,0.958545,1.510133,-0.121212, + -0.055595,-0.883651,0.464834,0.920242,1.537712,-0.075758, + -0.055595,-0.883651,0.464834,0.918745,1.513897,-0.121212, + -0.11097,-0.878416,0.464834,0.958545,1.510133,-0.121212, + -0.138522,-0.87459,0.464654,0.984161,1.506076,-0.121212, + -0.138522,-0.87459,0.464654,0.982542,1.530482,-0.075758, + -0.11097,-0.878416,0.464834,0.958545,1.510133,-0.121212, + -0.138522,-0.87459,0.464654,0.982542,1.530482,-0.075758, + -0.11097,-0.878416,0.464834,0.961536,1.533809,-0.075758, + 0.917485,-0.335916,0.21303,1,1.549333,-0.121212, + 0.917485,-0.335916,0.21303,1,1.578161,-0.075758, + 0.917485,-0.335916,0.21303,0.982542,1.530482,-0.075758, + 0.917485,-0.335916,0.21303,1,1.549333,-0.121212, + 0.917485,-0.335916,0.21303,0.982542,1.530482,-0.075758, + 0.917485,-0.335916,0.21303,0.984161,1.506076,-0.121212, + 1,0,0,1,1.636364,-0.121212, + 1,0,0,1,1.636364,-0.208242, + 1,0,0,1,1.681818,-0.179415, + 1,0,0,1,1.636364,-0.121212, + 1,0,0,1,1.681818,-0.179415, + 1,0,0,1,1.681818,-0.121212, + 1,0,0,1,1.636364,-0.121212, + 1,0,0,1,1.681818,-0.121212, + 1,0,0,1,1.636364,-0.075758, + 1,0,0,1,1.636364,-0.121212, + 1,0,0,1,1.636364,-0.075758, + 1,0,0,1,1.578161,-0.075758, + 1,0,0,1,1.636364,-0.121212, + 1,0,0,1,1.578161,-0.075758, + 1,0,0,1,1.549333,-0.121212, + 0.917485,0.21303,-0.335916,1,1.681818,-0.179415, + 0.917485,0.21303,-0.335916,1,1.636364,-0.208242, + 0.917485,0.21303,-0.335916,0.984161,1.636364,-0.251499, + 0.917485,0.21303,-0.335916,1,1.681818,-0.179415, + 0.917485,0.21303,-0.335916,0.984161,1.636364,-0.251499, + 0.917485,0.21303,-0.335916,0.982542,1.681818,-0.227094, + -0.138522,0.464654,-0.87459,0.984161,1.636364,-0.251499, + -0.11097,0.464834,-0.878416,0.958545,1.636364,-0.247442, + -0.11097,0.464834,-0.878416,0.961536,1.681818,-0.223767, + -0.138522,0.464654,-0.87459,0.984161,1.636364,-0.251499, + -0.11097,0.464834,-0.878416,0.961536,1.681818,-0.223767, + -0.138522,0.464654,-0.87459,0.982542,1.681818,-0.227094, + -0.11097,0.464834,-0.878416,0.961536,1.681818,-0.223767, + -0.11097,0.464834,-0.878416,0.958545,1.636364,-0.247442, + -0.055595,0.464834,-0.883651,0.918745,1.636364,-0.24368, + -0.11097,0.464834,-0.878416,0.961536,1.681818,-0.223767, + -0.055595,0.464834,-0.883651,0.918745,1.636364,-0.24368, + -0.055595,0.464834,-0.883651,0.920242,1.681818,-0.219863, + -0.055595,0.464834,-0.883651,0.920242,1.681818,-0.219863, + -0.055595,0.464834,-0.883651,0.918745,1.636364,-0.24368, + 0,0.464834,-0.885398,0.878788,1.636364,-0.242424, + -0.055595,0.464834,-0.883651,0.920242,1.681818,-0.219863, + 0,0.464834,-0.885398,0.878788,1.636364,-0.242424, + 0,0.464834,-0.885398,0.878788,1.681818,-0.218561, + 0.055595,0.464834,-0.883651,0.83883,1.636364,-0.24368, + 0.055595,0.464834,-0.883651,0.837333,1.681818,-0.219863, + 0,0.464834,-0.885398,0.878788,1.681818,-0.218561, + 0.055595,0.464834,-0.883651,0.83883,1.636364,-0.24368, + 0,0.464834,-0.885398,0.878788,1.681818,-0.218561, + 0,0.464834,-0.885398,0.878788,1.636364,-0.242424, + 0.11097,0.464834,-0.878416,0.79903,1.636364,-0.247442, + 0.11097,0.464834,-0.878416,0.796039,1.681818,-0.223767, + 0.055595,0.464834,-0.883651,0.837333,1.681818,-0.219863, + 0.11097,0.464834,-0.878416,0.79903,1.636364,-0.247442, + 0.055595,0.464834,-0.883651,0.837333,1.681818,-0.219863, + 0.055595,0.464834,-0.883651,0.83883,1.636364,-0.24368, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,0.878788,1.681818,-0.218561, + 0,1,0,0.837333,1.681818,-0.219863, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,0.837333,1.681818,-0.219863, + 0,1,0,0.796039,1.681818,-0.223767, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,0.796039,1.681818,-0.223767, + 0,1,0,0.775033,1.681818,-0.227094, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,0.775033,1.681818,-0.227094, + 0,1,0,0.757576,1.681818,-0.179415, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,0.757576,1.681818,-0.179415, + 0,1,0,0.757576,1.681818,-0.121212, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,0.757576,1.681818,-0.121212, + 0,1,0,1,1.681818,-0.121212, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,1,1.681818,-0.121212, + 0,1,0,1,1.681818,-0.179415, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,1,1.681818,-0.179415, + 0,1,0,0.982542,1.681818,-0.227094, + 0,1,0,0.920242,1.681818,-0.219863, + 0,1,0,0.982542,1.681818,-0.227094, + 0,1,0,0.961536,1.681818,-0.223767, + 0,0.707107,0.707107,0.757576,1.681818,-0.121212, + 0,0.707107,0.707107,0.757576,1.636364,-0.075758, + 0,0.707107,0.707107,1,1.636364,-0.075758, + 0,0.707107,0.707107,0.757576,1.681818,-0.121212, + 0,0.707107,0.707107,1,1.636364,-0.075758, + 0,0.707107,0.707107,1,1.681818,-0.121212, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,1,1.636364,-0.075758, + 0,0,1,0.757576,1.636364,-0.075758, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,0.757576,1.636364,-0.075758, + 0,0,1,0.757576,1.578161,-0.075758, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,0.757576,1.578161,-0.075758, + 0,0,1,0.775033,1.530482,-0.075758, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,0.775033,1.530482,-0.075758, + 0,0,1,0.796039,1.533809,-0.075758, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,0.796039,1.533809,-0.075758, + 0,0,1,0.837333,1.537712,-0.075758, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,0.837333,1.537712,-0.075758, + 0,0,1,0.878788,1.539015,-0.075758, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,0.878788,1.539015,-0.075758, + 0,0,1,0.920242,1.537712,-0.075758, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,0.920242,1.537712,-0.075758, + 0,0,1,0.961536,1.533809,-0.075758, + 0,0,1,1,1.578161,-0.075758, + 0,0,1,0.961536,1.533809,-0.075758, + 0,0,1,0.982542,1.530482,-0.075758, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.121212,1.125055,0, + 0,0,1,0.223833,1.125055,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.223833,1.125055,0, + 0,0,1,0.227944,1.136476,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.227944,1.136476,0, + 0,0,1,0.245409,1.176833,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.245409,1.176833,0, + 0,0,1,0.265373,1.216015,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.265373,1.216015,0, + 0,0,1,0.287758,1.253867,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.287758,1.253867,0, + 0,0,1,0.312476,1.290236,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.312476,1.290236,0, + 0,0,1,0.339427,1.324985,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.339427,1.324985,0, + 0,0,1,0.368509,1.35797,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.368509,1.35797,0, + 0,0,1,0.399606,1.389067,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.399606,1.389067,0, + 0,0,1,0.432591,1.418148,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.432591,1.418148,0, + 0,0,1,0.467339,1.4451,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.467339,1.4451,0, + 0,0,1,0.503709,1.469818,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.503709,1.469818,0, + 0,0,1,0.541561,1.492203,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.541561,1.492203,0, + 0,0,1,0.580742,1.512167,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.580742,1.512167,0, + 0,0,1,0.6211,1.52963,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.6211,1.52963,0, + 0,0,1,0.632521,1.533742,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.632521,1.533742,0, + 0,0,1,0.632521,1.636364,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.632521,1.636364,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.121212,1.636364,0, + 0,0,1,0.121212,1.125055,0, + 0.645427,-0.606097,0.464834,0.4149,1.314409,-0.121212, + 0.645427,-0.606097,0.464834,0.368509,1.35797,0, + 0.682211,-0.564374,0.464834,0.339427,1.324985,0, + 0.645427,-0.606097,0.464834,0.4149,1.314409,-0.121212, + 0.682211,-0.564374,0.464834,0.339427,1.324985,0, + 0.682211,-0.564374,0.464834,0.388461,1.284421,-0.121212, + 0.645427,-0.606097,0.464834,0.368509,1.35797,0, + 0.645427,-0.606097,0.464834,0.4149,1.314409,-0.121212, + 0.606097,-0.645427,0.464834,0.443167,1.342676,-0.121212, + 0.645427,-0.606097,0.464834,0.368509,1.35797,0, + 0.606097,-0.645427,0.464834,0.443167,1.342676,-0.121212, + 0.606097,-0.645427,0.464834,0.399606,1.389067,0, + 0.606097,-0.645427,0.464834,0.399606,1.389067,0, + 0.606097,-0.645427,0.464834,0.443167,1.342676,-0.121212, + 0.564374,-0.682211,0.464834,0.473155,1.369115,-0.121212, + 0.606097,-0.645427,0.464834,0.399606,1.389067,0, + 0.564374,-0.682211,0.464834,0.473155,1.369115,-0.121212, + 0.564374,-0.682211,0.464834,0.432591,1.418148,0, + 0.564374,-0.682211,0.464834,0.432591,1.418148,0, + 0.564374,-0.682211,0.464834,0.473155,1.369115,-0.121212, + 0.520424,-0.716302,0.464834,0.504742,1.393618,-0.121212, + 0.564374,-0.682211,0.464834,0.432591,1.418148,0, + 0.520424,-0.716302,0.464834,0.504742,1.393618,-0.121212, + 0.520424,-0.716302,0.464834,0.467339,1.4451,0, + 0.520424,-0.716302,0.464834,0.467339,1.4451,0, + 0.520424,-0.716302,0.464834,0.504742,1.393618,-0.121212, + 0.47442,-0.747566,0.464834,0.537806,1.416088,-0.121212, + 0.520424,-0.716302,0.464834,0.467339,1.4451,0, + 0.47442,-0.747566,0.464834,0.537806,1.416088,-0.121212, + 0.47442,-0.747566,0.464834,0.503709,1.469818,0, + 0.47442,-0.747566,0.464834,0.503709,1.469818,0, + 0.47442,-0.747566,0.464834,0.537806,1.416088,-0.121212, + 0.426544,-0.77588,0.464834,0.572218,1.436436,-0.121212, + 0.47442,-0.747566,0.464834,0.503709,1.469818,0, + 0.426544,-0.77588,0.464834,0.572218,1.436436,-0.121212, + 0.426544,-0.77588,0.464834,0.541561,1.492203,0, + 0.426544,-0.77588,0.464834,0.541561,1.492203,0, + 0.426544,-0.77588,0.464834,0.572218,1.436436,-0.121212, + 0.376984,-0.801132,0.464834,0.607836,1.454588,-0.121212, + 0.426544,-0.77588,0.464834,0.541561,1.492203,0, + 0.376984,-0.801132,0.464834,0.607836,1.454588,-0.121212, + 0.376984,-0.801132,0.464834,0.580742,1.512167,0, + 0.376984,-0.801132,0.464834,0.580742,1.512167,0, + 0.376984,-0.801132,0.464834,0.607836,1.454588,-0.121212, + 0.325937,-0.823222,0.464834,0.644527,1.470464,-0.121212, + 0.376984,-0.801132,0.464834,0.580742,1.512167,0, + 0.325937,-0.823222,0.464834,0.644527,1.470464,-0.121212, + 0.325937,-0.823222,0.464834,0.6211,1.52963,0, + 0.29995,-0.833143,0.464654,0.632521,1.533742,0, + 0.325937,-0.823222,0.464834,0.6211,1.52963,0, + 0.325937,-0.823222,0.464834,0.644527,1.470464,-0.121212, + 0.29995,-0.833143,0.464654,0.632521,1.533742,0, + 0.325937,-0.823222,0.464834,0.644527,1.470464,-0.121212, + 0.273603,-0.842063,0.464834,0.682139,1.484006,-0.121212, + 0.29995,-0.833143,0.464654,0.632521,1.533742,0, + 0.273603,-0.842063,0.464834,0.682139,1.484006,-0.121212, + 0.273603,-0.842063,0.464834,0.67563,1.504045,-0.081077, + 0.273603,-0.842063,0.464834,0.67563,1.504045,-0.081077, + 0.273603,-0.842063,0.464834,0.682139,1.484006,-0.121212, + 0.247044,-0.850333,0.464654,0.69697,1.488315,-0.121212, + 0.882948,0,0.469472,0.632521,1.636364,0, + 0.882948,0,0.469472,0.632521,1.533742,0, + 0.882948,0,0.469472,0.67563,1.504045,-0.081077, + 0.882948,0,0.469472,0.632521,1.636364,0, + 0.882948,0,0.469472,0.67563,1.504045,-0.081077, + 0.882948,0,0.469472,0.69697,1.488315,-0.121212, + 0.882948,0,0.469472,0.632521,1.636364,0, + 0.882948,0,0.469472,0.69697,1.488315,-0.121212, + 0.882948,0,0.469472,0.69697,1.636364,-0.121212, + 0.799251,0.424969,0.424969,0.69697,1.636364,-0.121212, + 0.799251,0.424969,0.424969,0.632521,1.757576,-0.121212, + 0.799251,0.424969,0.424969,0.632521,1.636364,0, + 0,0.707107,0.707107,0.632521,1.757576,-0.121212, + 0,0.707107,0.707107,0.121212,1.757576,-0.121212, + 0,0.707107,0.707107,0.121212,1.636364,0, + 0,0.707107,0.707107,0.632521,1.757576,-0.121212, + 0,0.707107,0.707107,0.121212,1.636364,0, + 0,0.707107,0.707107,0.632521,1.636364,0, + -0.57735,0.57735,0.57735,0.121212,1.757576,-0.121212, + -0.57735,0.57735,0.57735,0,1.636364,-0.121212, + -0.57735,0.57735,0.57735,0.121212,1.636364,0, + -0.707107,0,0.707107,0,1.636364,-0.121212, + -0.707107,0,0.707107,0,1.125055,-0.121212, + -0.707107,0,0.707107,0.121212,1.125055,0, + -0.707107,0,0.707107,0,1.636364,-0.121212, + -0.707107,0,0.707107,0.121212,1.125055,0, + -0.707107,0,0.707107,0.121212,1.636364,0, + -0.424969,-0.799251,0.424969,0,1.125055,-0.121212, + -0.424969,-0.799251,0.424969,0.121212,1.060606,-0.121212, + -0.424969,-0.799251,0.424969,0.121212,1.125055,0, + 0,-0.882948,0.469472,0.223833,1.125055,0, + 0,-0.882948,0.469472,0.121212,1.125055,0, + 0,-0.882948,0.469472,0.121212,1.060606,-0.121212, + 0,-0.882948,0.469472,0.223833,1.125055,0, + 0,-0.882948,0.469472,0.121212,1.060606,-0.121212, + 0,-0.882948,0.469472,0.269262,1.060606,-0.121212, + 0,-0.882948,0.469472,0.223833,1.125055,0, + 0,-0.882948,0.469472,0.269262,1.060606,-0.121212, + 0,-0.882948,0.469472,0.25353,1.081945,-0.081077, + 0.842063,-0.273603,0.464834,0.27357,1.075436,-0.121212, + 0.842063,-0.273603,0.464834,0.25353,1.081945,-0.081077, + 0.850333,-0.247044,0.464654,0.269262,1.060606,-0.121212, + 0.823222,-0.325937,0.464834,0.227944,1.136476,0, + 0.833143,-0.29995,0.464654,0.223833,1.125055,0, + 0.842063,-0.273603,0.464834,0.25353,1.081945,-0.081077, + 0.823222,-0.325937,0.464834,0.227944,1.136476,0, + 0.842063,-0.273603,0.464834,0.25353,1.081945,-0.081077, + 0.842063,-0.273603,0.464834,0.27357,1.075436,-0.121212, + 0.823222,-0.325937,0.464834,0.227944,1.136476,0, + 0.842063,-0.273603,0.464834,0.27357,1.075436,-0.121212, + 0.823222,-0.325937,0.464834,0.287112,1.113048,-0.121212, + 0.801132,-0.376984,0.464834,0.302989,1.149739,-0.121212, + 0.801132,-0.376984,0.464834,0.245409,1.176833,0, + 0.823222,-0.325937,0.464834,0.227944,1.136476,0, + 0.801132,-0.376984,0.464834,0.302989,1.149739,-0.121212, + 0.823222,-0.325937,0.464834,0.227944,1.136476,0, + 0.823222,-0.325937,0.464834,0.287112,1.113048,-0.121212, + 0.77588,-0.426544,0.464834,0.321139,1.185358,-0.121212, + 0.77588,-0.426544,0.464834,0.265373,1.216015,0, + 0.801132,-0.376984,0.464834,0.245409,1.176833,0, + 0.77588,-0.426544,0.464834,0.321139,1.185358,-0.121212, + 0.801132,-0.376984,0.464834,0.245409,1.176833,0, + 0.801132,-0.376984,0.464834,0.302989,1.149739,-0.121212, + 0.747566,-0.47442,0.464834,0.341488,1.21977,-0.121212, + 0.747566,-0.47442,0.464834,0.287758,1.253867,0, + 0.77588,-0.426544,0.464834,0.265373,1.216015,0, + 0.747566,-0.47442,0.464834,0.341488,1.21977,-0.121212, + 0.77588,-0.426544,0.464834,0.265373,1.216015,0, + 0.77588,-0.426544,0.464834,0.321139,1.185358,-0.121212, + 0.716302,-0.520424,0.464834,0.363958,1.252833,-0.121212, + 0.716302,-0.520424,0.464834,0.312476,1.290236,0, + 0.747566,-0.47442,0.464834,0.287758,1.253867,0, + 0.716302,-0.520424,0.464834,0.363958,1.252833,-0.121212, + 0.747566,-0.47442,0.464834,0.287758,1.253867,0, + 0.747566,-0.47442,0.464834,0.341488,1.21977,-0.121212, + 0.682211,-0.564374,0.464834,0.388461,1.284421,-0.121212, + 0.682211,-0.564374,0.464834,0.339427,1.324985,0, + 0.716302,-0.520424,0.464834,0.312476,1.290236,0, + 0.682211,-0.564374,0.464834,0.388461,1.284421,-0.121212, + 0.716302,-0.520424,0.464834,0.312476,1.290236,0, + 0.716302,-0.520424,0.464834,0.363958,1.252833,-0.121212 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,384,data,NULL}; +const struct gllist *companion_quad=&frame; diff --git a/hacks/glx/companioncube.man b/hacks/glx/companioncube.man new file mode 100644 index 0000000..e15b15e --- /dev/null +++ b/hacks/glx/companioncube.man @@ -0,0 +1,85 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +companioncube - a vital aparatus. +.SH SYNOPSIS +.B companioncube +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fIratio\fP] +[\-spin] +[\-wander] +[\-count \fInumber\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The symptoms most commonly produced by Enrichment Center testing are +superstition, perceiving inanimate objects as alive, and hallucinations. +The Enrichment Center reminds you that the weighted companion cube will +never threaten to stab you and, in fact, cannot speak. In the event that +the Weighted Companion Cube does speak, the Enrichment Center urges you to +disregard its advice. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +How fast the animation should run. +Less than 1 for slower, greater than 1 for faster. +.TP 8 +.B \-count \fInumber\fP +How many cubes. Default 3. +.TP 8 +.B \-spin +.B \-no\-spin +Instead of bouncing, float and spin. +.TP 8 +.B \-wander +.B \-no\-wander +Instead of bouncing, float and drift. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR tronbit (1), +.BR lament (1), +.BR dangerball (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2011 by Jamie Zawinski. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Jamie Zawinski, with apologies to the fine folks at Valve Software +and Aperture Science. diff --git a/hacks/glx/cow_face.c b/hacks/glx/cow_face.c new file mode 100644 index 0000000..e57d2bb --- /dev/null +++ b/hacks/glx/cow_face.c @@ -0,0 +1,341 @@ +#include "gllist.h" +static const float data[]={ + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.133638,0.26732,-0.954296,4.925394,1.955229,-0.618837, + 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256, + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256, + 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026, + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026, + 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609, + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609, + 0.546619,0.025491,-0.836994,4.925499,1.917814,-0.613413, + 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466, + 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724, + 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026, + 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466, + 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026, + 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256, + 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026, + 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724, + 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619, + 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026, + 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619, + 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609, + 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609, + 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619, + 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137, + 0.546619,0.025491,-0.836994,4.925499,1.917814,-0.613413, + 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609, + 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137, + 0.546619,0.025491,-0.836994,4.925499,1.917814,-0.613413, + 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137, + 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031, + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.546619,0.025491,-0.836994,4.925499,1.917814,-0.613413, + 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031, + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031, + 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358, + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358, + 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913, + 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857, + 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466, + 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256, + 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857, + 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256, + 0.133638,0.26732,-0.954296,4.925394,1.955229,-0.618837, + 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121, + 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102, + -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583, + 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121, + -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583, + 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039, + 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039, + -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583, + -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292, + 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039, + -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292, + 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084, + 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084, + -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292, + 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732, + 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084, + 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732, + 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768, + 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505, + 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768, + 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732, + 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505, + 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732, + 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796, + 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705, + 0.223936,-0.919046,-0.324355,5.959462,1.157227,-0.187097, + 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197, + 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047, + 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705, + 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197, + 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047, + 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197, + 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184, + -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002, + 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128, + 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025, + -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002, + 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025, + 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562, + -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002, + 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562, + 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459, + -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002, + 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459, + 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476, + -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002, + 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476, + 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613, + -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002, + 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613, + 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128, + 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128, + 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613, + 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047, + 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705, + 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613, + 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705, + 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047, + 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778, + 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505, + 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796, + 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778, + 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796, + -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886, + 0.148862,-0.934725,-0.322692,5.580727,0.99933,-0.349867, + 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778, + -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886, + 0.148862,-0.934725,-0.322692,5.580727,0.99933,-0.349867, + -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886, + 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257, + -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886, + 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796, + -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548, + -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886, + -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548, + -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782, + 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796, + 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732, + -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099, + 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796, + -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099, + -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548, + -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292, + -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362, + -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099, + -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292, + -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099, + 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732, + 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102, + 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092, + -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583, + -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583, + 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092, + -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362, + -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583, + -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362, + -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.223936,-0.919046,-0.324355,5.959462,1.157227,-0.187097, + 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705, + 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184, + 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025, + 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128, + 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184, + 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128, + 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047, + 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257, + -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886, + -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782, + 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257, + -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782, + 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248, + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913, + 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857, + 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057, + 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857, + 0.133638,0.26732,-0.954296,4.925394,1.955229,-0.618837, + 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413, + 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609, + 0.444094,0.036127,0.895251,4.971872,1.924079,0.586026, + 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413, + 0.444094,0.036127,0.895251,4.971872,1.924079,0.586026, + 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256, + 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413, + 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256, + 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837, + 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413, + 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837, + 0.561013,0.750789,0.348684,4.897808,1.946794,0.628057, + 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256, + 0.444094,0.036127,0.895251,4.971872,1.924079,0.586026, + 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724, + 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256, + 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724, + 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466, + 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609, + 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619, + 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724, + 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609, + 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724, + 0.444094,0.036127,0.895251,4.971872,1.924079,0.586026, + 0.332757,0.286207,0.898531,4.926194,1.859813,0.582137, + 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619, + 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609, + 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031, + 0.332757,0.286207,0.898531,4.926194,1.859813,0.582137, + 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609, + 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031, + 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609, + 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413, + 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358, + 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031, + 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413, + 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358, + 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413, + 0.561013,0.750789,0.348684,4.897808,1.946794,0.628057, + 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913, + 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358, + 0.561013,0.750789,0.348684,4.897808,1.946794,0.628057, + 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837, + 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256, + 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466, + 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837, + 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466, + 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857, + 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039, + 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583, + 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102, + 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039, + 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102, + 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121, + 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084, + 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292, + 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583, + 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084, + 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583, + 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039, + -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768, + 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732, + 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292, + -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768, + 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292, + 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084, + 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796, + 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732, + -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768, + 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796, + -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768, + 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505, + 0.811896,0.498733,0.303464,5.912147,1.117911,0.254197, + 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097, + 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705, + 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184, + 0.811896,0.498733,0.303464,5.912147,1.117911,0.254197, + 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705, + 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184, + 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705, + 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047, + 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562, + 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025, + -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128, + 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562, + -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128, + -0.026478,0.945923,-0.323309,5.803425,1.260787,0.210002, + -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459, + 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562, + -0.026478,0.945923,-0.323309,5.803425,1.260787,0.210002, + 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476, + -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459, + -0.026478,0.945923,-0.323309,5.803425,1.260787,0.210002, + -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128, + 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613, + 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476, + -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128, + 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476, + -0.026478,0.945923,-0.323309,5.803425,1.260787,0.210002, + 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047, + 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613, + -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128, + 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047, + 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705, + 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334, + 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047, + 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334, + 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613, + -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886, + 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796, + 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505, + -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886, + 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505, + -0.011269,-0.268801,-0.96313,5.672385,1.007694,0.341778, + -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886, + -0.011269,-0.268801,-0.96313,5.672385,1.007694,0.341778, + -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867, + -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257, + -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886, + -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867, + 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782, + 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548, + 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796, + 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782, + 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796, + -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886, + 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548, + 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099, + 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732, + 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548, + 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732, + 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796, + 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732, + 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099, + 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362, + 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732, + 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362, + 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292, + 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583, + 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092, + 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102, + 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292, + 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362, + 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092, + 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292, + 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092, + 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583, + 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705, + 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097, + 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334, + 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047, + -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128, + 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025, + 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047, + 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025, + 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184, + 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248, + 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782, + -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886, + 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248, + -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886, + -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257, + 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837, + 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857, + 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913, + 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837, + 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913, + 0.561013,0.750789,0.348684,4.897808,1.946794,0.628057 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,336,data,NULL}; +const struct gllist *cow_face=&frame; diff --git a/hacks/glx/cow_hide.c b/hacks/glx/cow_hide.c new file mode 100644 index 0000000..3728eef --- /dev/null +++ b/hacks/glx/cow_hide.c @@ -0,0 +1,13055 @@ +#include "gllist.h" +static const float data[]={ + -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826, + -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824, + 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105, + -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826, + 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105, + -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091, + -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091, + 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105, + 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475, + -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091, + 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475, + 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445, + 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445, + 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475, + 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039, + 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039, + 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166, + 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614, + 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039, + 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614, + 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445, + 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445, + 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614, + 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367, + 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445, + 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367, + -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091, + -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091, + 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367, + 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812, + -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091, + 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812, + -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826, + 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812, + 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367, + 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189, + 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812, + 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189, + 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941, + 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941, + 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189, + 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863, + 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941, + 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863, + 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011, + 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011, + 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863, + 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366, + 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366, + 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863, + 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822, + 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366, + 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822, + 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866, + 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866, + 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822, + 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156, + 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156, + 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822, + 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238, + 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238, + 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822, + 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057, + 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238, + 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057, + 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018, + 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057, + 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822, + 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863, + 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057, + 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863, + 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189, + 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189, + 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367, + 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614, + 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189, + 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614, + 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057, + 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057, + 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614, + 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166, + 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057, + 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166, + 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018, + 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166, + 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039, + 0.430574,-0.353967,-0.830249,2.710721,-0.830091,-0.532493, + 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684, + 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684, + 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238, + 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018, + 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684, + 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301, + 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328, + 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684, + 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328, + 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238, + 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301, + 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238, + 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328, + 0.655995,-0.105886,-0.747301,2.740886,-1.339225,-0.463604, + 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238, + 0.655995,-0.105886,-0.747301,2.740886,-1.339225,-0.463604, + 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149, + 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238, + 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149, + 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156, + 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156, + 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149, + 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275, + 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156, + 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275, + 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866, + 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866, + 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275, + 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169, + 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866, + 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169, + 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127, + 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866, + 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127, + 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366, + 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366, + 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127, + 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997, + 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366, + 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997, + 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743, + 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054, + 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301, + 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301, + 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054, + 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049, + 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301, + 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049, + 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328, + 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328, + 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049, + 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013, + 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328, + 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013, + 0.655995,-0.105886,-0.747301,2.740886,-1.339225,-0.463604, + 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013, + 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378, + 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149, + 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149, + 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378, + 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631, + 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149, + 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631, + 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275, + 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275, + 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631, + 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972, + 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275, + 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972, + 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169, + 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169, + 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972, + 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143, + 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169, + 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143, + 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127, + 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127, + 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143, + 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832, + 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127, + 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832, + 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997, + 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743, + -0.334515,0.94239,0,2.970902,-0.959664,0, + 0.820584,-0.571526,0,2.931756,-1.129655,0, + 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743, + 0.820584,-0.571526,0,2.931756,-1.129655,0, + 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054, + 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054, + 0.820584,-0.571526,0,2.931756,-1.129655,0, + -0.255632,0.966774,0,2.896234,-1.31956,0, + 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054, + -0.255632,0.966774,0,2.896234,-1.31956,0, + 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049, + 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049, + -0.255632,0.966774,0,2.896234,-1.31956,0, + 0.826305,-0.563222,0,2.821376,-1.431534,0, + 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049, + 0.826305,-0.563222,0,2.821376,-1.431534,0, + 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013, + 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013, + 0.826305,-0.563222,0,2.821376,-1.431534,0, + -0.133012,0.991114,0,2.706963,-1.528854,0, + 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013, + -0.133012,0.991114,0,2.706963,-1.528854,0, + 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378, + 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378, + -0.133012,0.991114,0,2.706963,-1.528854,0, + 0.815341,-0.578981,0,2.534227,-1.617078,0, + 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378, + 0.815341,-0.578981,0,2.534227,-1.617078,0, + 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631, + 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631, + 0.815341,-0.578981,0,2.534227,-1.617078,0, + -0.144073,0.989567,0,2.348182,-1.624595,0, + 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631, + -0.144073,0.989567,0,2.348182,-1.624595,0, + 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972, + 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972, + -0.144073,0.989567,0,2.348182,-1.624595,0, + -0.073566,0.99729,0,2.167167,-1.596326,0, + 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972, + -0.073566,0.99729,0,2.167167,-1.596326,0, + 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143, + 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143, + -0.073566,0.99729,0,2.167167,-1.596326,0, + -0.034649,0.9994,0,1.920432,-1.567396,0, + 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143, + -0.034649,0.9994,0,1.920432,-1.567396,0, + 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832, + 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968, + 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345, + 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789, + 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789, + 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964, + 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968, + 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968, + 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964, + 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191, + 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191, + 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597, + 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968, + 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968, + 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597, + 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975, + 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039, + 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475, + 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485, + 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485, + 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475, + 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491, + 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491, + 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975, + 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485, + 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039, + 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597, + 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191, + 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039, + 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191, + 0.430574,-0.353967,-0.830249,2.710721,-0.830091,-0.532493, + 0.430574,-0.353967,-0.830249,2.710721,-0.830091,-0.532493, + 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191, + 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596, + 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596, + 0.667276,-0.159228,-0.727591,3.045715,-0.767786,-0.261741, + 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743, + 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596, + 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743, + 0.667276,-0.159228,-0.727591,3.045715,-0.767786,-0.261741, + 0.942695,-0.333657,0,3.065544,-0.788768,0, + 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743, + 0.942695,-0.333657,0,3.065544,-0.788768,0, + -0.334515,0.94239,0,2.970902,-0.959664,0, + 0.942695,-0.333657,0,3.065544,-0.788768,0, + 0.667276,-0.159228,-0.727591,3.045715,-0.767786,-0.261741, + 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602, + 0.942695,-0.333657,0,3.065544,-0.788768,0, + 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602, + -0.476715,0.879058,0,3.118124,-0.703925,0, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018, + 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166, + 0.430574,-0.353967,-0.830249,2.710721,-0.830091,-0.532493, + 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195, + 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166, + 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485, + 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975, + 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597, + 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039, + 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485, + 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597, + 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964, + 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931, + 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596, + 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964, + 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596, + 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191, + 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596, + 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931, + 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602, + 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596, + 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602, + 0.667276,-0.159228,-0.727591,3.045715,-0.767786,-0.261741, + -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918, + -0.11636,-0.749063,-0.6522,-1.091175,-1.70712,-0.727242, + 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343, + -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918, + 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343, + 0.215155,-0.464575,-0.858999,-1.200688,-1.577575,-0.799188, + 0.215155,-0.464575,-0.858999,-1.200688,-1.577575,-0.799188, + 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343, + -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954, + 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343, + -0.11636,-0.749063,-0.6522,-1.091175,-1.70712,-0.727242, + -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154, + 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343, + -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154, + -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922, + -0.11636,-0.749063,-0.6522,-1.091175,-1.70712,-0.727242, + -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918, + -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857, + -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857, + -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918, + -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511, + -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511, + -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918, + 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556, + -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511, + 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556, + -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908, + -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908, + 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556, + 0.100949,-0.548551,-0.830001,-0.564074,-1.789401,-0.803191, + 0.100949,-0.548551,-0.830001,-0.564074,-1.789401,-0.803191, + 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556, + -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423, + -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423, + 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556, + 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082, + -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423, + 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082, + 0.327725,-0.489439,-0.808112,-0.07847,-1.688266,-0.80023, + -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423, + 0.327725,-0.489439,-0.808112,-0.07847,-1.688266,-0.80023, + 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924, + -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423, + 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924, + 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825, + 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825, + 0.100949,-0.548551,-0.830001,-0.564074,-1.789401,-0.803191, + -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423, + 0.100949,-0.548551,-0.830001,-0.564074,-1.789401,-0.803191, + 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825, + -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908, + -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908, + 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511, + -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154, + -0.11636,-0.749063,-0.6522,-1.091175,-1.70712,-0.727242, + -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857, + -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922, + -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + -0.176655,-0.950799,-0.254508,-1.108758,-1.770749,-0.473033, + -0.176655,-0.950799,-0.254508,-1.108758,-1.770749,-0.473033, + -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423, + -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922, + -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922, + -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954, + 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343, + -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954, + -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922, + -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541, + -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823, + -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399, + -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423, + -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823, + -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423, + -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649, + -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825, + -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649, + 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825, + 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007, + 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007, + 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825, + 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924, + 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007, + 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924, + 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324, + 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324, + 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924, + 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392, + 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324, + 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392, + 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961, + 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961, + 0.226963,-0.973903,0,0.44655,-1.67295,0, + -0.084764,-0.996401,0,-0.155114,-1.828285,0, + 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961, + -0.084764,-0.996401,0,-0.155114,-1.828285,0, + 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324, + 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324, + -0.084764,-0.996401,0,-0.155114,-1.828285,0, + 0.854132,-0.520056,0,-0.530369,-1.860806,0, + 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324, + 0.854132,-0.520056,0,-0.530369,-1.860806,0, + 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007, + 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007, + 0.854132,-0.520056,0,-0.530369,-1.860806,0, + 0.113474,-0.993541,0,-0.956007,-1.825728,0, + 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007, + 0.113474,-0.993541,0,-0.956007,-1.825728,0, + -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649, + -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649, + 0.113474,-0.993541,0,-0.956007,-1.825728,0, + 0.011286,0.999936,0,-1.395728,-1.723811,0, + -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649, + 0.011286,0.999936,0,-1.395728,-1.723811,0, + -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823, + -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154, + -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857, + -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396, + -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796, + -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461, + -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396, + -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461, + -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058, + -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117, + 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902, + 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089, + -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117, + 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089, + 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561, + 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561, + 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089, + -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553, + 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561, + -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553, + -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225, + -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396, + -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058, + -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751, + -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751, + 0.57446,0.218241,-0.788902,1.802387,-3.089615,-0.961851, + 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111, + 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111, + 0.57446,0.218241,-0.788902,1.802387,-3.089615,-0.961851, + 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096, + 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561, + -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225, + 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648, + 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561, + 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648, + -0.541077,0.245809,-0.804247,2.091539,-3.032437,-0.947029, + -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117, + -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966, + -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313, + -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117, + -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313, + 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902, + -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058, + -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461, + -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313, + -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058, + -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313, + -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966, + -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263, + -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751, + 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111, + -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263, + 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111, + -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794, + -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794, + 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111, + 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096, + -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794, + 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096, + -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455, + -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705, + -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794, + -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455, + -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705, + -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455, + -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621, + -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263, + -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794, + -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705, + -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263, + -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705, + -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575, + -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575, + 0.056398,-0.684481,0.726846,1.736425,-2.743683,-0.736866, + 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425, + -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575, + 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425, + -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263, + 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561, + -0.541077,0.245809,-0.804247,2.091539,-3.032437,-0.947029, + 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237, + 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561, + 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237, + -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117, + 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237, + -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338, + -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966, + 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237, + -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966, + -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117, + -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966, + -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338, + 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129, + -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966, + 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129, + -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058, + 0.57446,0.218241,-0.788902,1.802387,-3.089615,-0.961851, + 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129, + 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096, + -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751, + -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058, + 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129, + -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751, + 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129, + 0.57446,0.218241,-0.788902,1.802387,-3.089615,-0.961851, + -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751, + -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263, + -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396, + 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648, + -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225, + -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517, + 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648, + -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517, + -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654, + -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705, + -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621, + 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988, + -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705, + 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988, + -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575, + -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621, + 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855, + 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118, + -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621, + 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118, + 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988, + 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855, + -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654, + -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517, + 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855, + -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517, + 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118, + 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988, + 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118, + 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999, + 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988, + 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999, + 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009, + 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999, + 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118, + -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517, + 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999, + -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517, + -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496, + -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575, + 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988, + 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009, + -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575, + 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009, + 0.056398,-0.684481,0.726846,1.736425,-2.743683,-0.736866, + 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547, + 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581, + 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563, + 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547, + 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563, + 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048, + 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048, + 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563, + 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659, + 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048, + 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659, + -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313, + -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313, + 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659, + 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351, + -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313, + 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351, + -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139, + -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139, + 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351, + 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034, + -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139, + 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034, + 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812, + 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812, + 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034, + 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832, + 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812, + 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832, + -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926, + -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076, + -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104, + -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472, + -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076, + -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472, + -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861, + -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861, + -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459, + -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015, + -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861, + -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015, + -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076, + -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834, + -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409, + -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758, + -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834, + -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758, + -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507, + -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507, + -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758, + 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796, + -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507, + 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796, + 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497, + 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497, + 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796, + 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034, + 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497, + 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034, + 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351, + -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758, + -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366, + 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796, + 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796, + -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366, + 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832, + 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796, + 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832, + 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034, + -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409, + 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627, + -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878, + -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409, + -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878, + -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758, + -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758, + -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878, + 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328, + -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758, + 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328, + -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366, + -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366, + 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328, + 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625, + -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366, + 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625, + 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832, + 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627, + -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211, + -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348, + 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627, + -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348, + -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878, + -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878, + -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348, + -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974, + -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878, + -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974, + 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328, + 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328, + -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974, + -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104, + 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328, + -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104, + 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625, + -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148, + -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834, + -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507, + -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148, + -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507, + -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279, + -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279, + -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507, + 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497, + -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279, + 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497, + -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836, + -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836, + 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497, + 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351, + -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836, + 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351, + 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659, + -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812, + 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659, + 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563, + 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659, + -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812, + 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353, + 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659, + 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353, + -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836, + -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836, + 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353, + 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433, + -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836, + 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433, + -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279, + -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279, + 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433, + 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772, + -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279, + 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772, + -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148, + -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812, + 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572, + 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208, + -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812, + 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208, + 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353, + 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353, + 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208, + 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433, + 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433, + 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208, + 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432, + 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433, + 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432, + 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994, + 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572, + 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516, + 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432, + 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572, + 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432, + 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208, + 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516, + 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723, + 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713, + 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516, + 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713, + 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432, + 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432, + 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713, + 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588, + 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432, + 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588, + 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994, + 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994, + 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588, + -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262, + 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994, + -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262, + -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639, + 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445, + -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861, + -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472, + 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445, + -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472, + -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034, + -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034, + 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723, + -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546, + -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034, + -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546, + 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445, + 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723, + -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034, + -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898, + 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723, + -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898, + 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713, + 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713, + -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898, + -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572, + 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713, + -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572, + 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588, + 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588, + -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572, + 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657, + 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588, + 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657, + -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262, + -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034, + -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472, + -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667, + -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034, + -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667, + -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898, + -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898, + -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667, + -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813, + -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898, + -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813, + -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572, + -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572, + -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813, + -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785, + -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572, + -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785, + 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657, + -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667, + -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974, + -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348, + -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667, + -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348, + -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813, + -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813, + -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348, + -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211, + -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813, + -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211, + -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785, + -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472, + -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104, + -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974, + -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472, + -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974, + -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667, + 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625, + -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104, + -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076, + 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625, + -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076, + -0.032036,-0.072305,-0.996868,-3.342096,-1.533989,-0.921628, + -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594, + 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743, + 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145, + -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594, + 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145, + -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284, + -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284, + 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145, + 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043, + -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284, + 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043, + -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712, + -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712, + 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043, + -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093, + -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712, + -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093, + 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853, + 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853, + -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093, + 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151, + 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853, + 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151, + 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957, + -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745, + -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334, + -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461, + -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745, + -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461, + -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796, + -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365, + 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296, + -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334, + -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365, + -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334, + -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745, + -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391, + 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354, + 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296, + -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391, + 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296, + -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365, + -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823, + -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092, + 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354, + -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823, + 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354, + -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391, + -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419, + -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347, + -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092, + -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419, + -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092, + -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823, + -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969, + -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365, + -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745, + -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969, + -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745, + -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269, + -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353, + -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391, + -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365, + -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353, + -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365, + -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969, + -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359, + -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823, + -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391, + -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359, + -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391, + -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353, + -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447, + -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419, + -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823, + -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447, + -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823, + -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359, + -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696, + -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969, + -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269, + -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696, + -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269, + -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773, + -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432, + -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353, + -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969, + -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432, + -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969, + -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696, + -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576, + -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359, + -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353, + -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576, + -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353, + -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432, + -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758, + -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447, + -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359, + -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758, + -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359, + -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576, + -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318, + -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696, + -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773, + -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318, + -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773, + -0.887036,-0.210048,0.411154,1.756349,-2.446399,-0.705428, + -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565, + -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432, + -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696, + -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565, + -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696, + -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318, + 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655, + -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576, + -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432, + 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655, + -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432, + -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565, + -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185, + -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758, + -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576, + -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185, + -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576, + 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655, + 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743, + -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594, + -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553, + 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743, + -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553, + 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089, + 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601, + 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743, + 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089, + 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601, + 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089, + 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902, + 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454, + 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843, + 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151, + 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454, + 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151, + -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093, + 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275, + 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454, + -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093, + 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275, + -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093, + 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043, + 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887, + 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145, + 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743, + 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887, + 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743, + 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601, + 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887, + 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275, + 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043, + 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887, + 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043, + 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145, + -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461, + -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334, + 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593, + -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461, + 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593, + -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313, + 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593, + 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601, + 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902, + 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593, + 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902, + -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313, + -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092, + -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347, + 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198, + -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092, + 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198, + 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593, + 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354, + -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092, + 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593, + 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354, + 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593, + 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351, + 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296, + 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354, + 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351, + 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296, + 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351, + 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652, + -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334, + 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296, + 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652, + -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334, + 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652, + 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593, + 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593, + 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198, + 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843, + 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593, + 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843, + 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454, + 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351, + 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593, + 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454, + 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351, + 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454, + 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275, + 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652, + 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351, + 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275, + 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652, + 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275, + 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887, + 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593, + 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652, + 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887, + 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593, + 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887, + 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601, + 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009, + -0.887036,-0.210048,0.411154,1.756349,-2.446399,-0.705428, + -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773, + 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009, + -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773, + 0.056398,-0.684481,0.726846,1.736425,-2.743683,-0.736866, + -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098, + -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932, + -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185, + -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098, + -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185, + 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655, + -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841, + -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098, + 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655, + -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841, + 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655, + -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565, + -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494, + -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841, + -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565, + -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494, + -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565, + -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318, + -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773, + -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269, + 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425, + -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773, + 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425, + 0.056398,-0.684481,0.726846,1.736425,-2.743683,-0.736866, + -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225, + -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553, + -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496, + -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225, + -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496, + -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517, + 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347, + 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999, + -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496, + 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347, + -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496, + -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587, + -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494, + 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347, + -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587, + -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494, + -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587, + -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678, + 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347, + -0.887036,-0.210048,0.411154,1.756349,-2.446399,-0.705428, + 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009, + 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347, + 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009, + 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999, + 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347, + -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494, + -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318, + 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347, + -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318, + -0.887036,-0.210048,0.411154,1.756349,-2.446399,-0.705428, + -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594, + -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587, + -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496, + -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594, + -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496, + -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553, + -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277, + -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861, + -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932, + -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277, + -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932, + -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098, + -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724, + -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277, + -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098, + -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724, + -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098, + -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841, + 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853, + 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957, + -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861, + 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853, + -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861, + -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277, + -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712, + 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853, + -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277, + -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712, + -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277, + -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724, + -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284, + -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712, + -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724, + -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284, + -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724, + -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678, + -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594, + -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284, + -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678, + -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594, + -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678, + -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587, + -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657, + -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254, + 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941, + -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657, + 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941, + 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011, + -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192, + -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763, + -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254, + -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192, + -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254, + -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657, + -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951, + -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716, + -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763, + -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951, + -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763, + -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192, + -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277, + -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317, + -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716, + -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277, + -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716, + -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951, + 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731, + 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142, + -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317, + 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731, + -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317, + -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277, + 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516, + 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258, + 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142, + 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516, + 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142, + 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731, + 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569, + 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924, + 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258, + 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569, + 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258, + 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516, + 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733, + 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204, + 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924, + 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733, + 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924, + 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569, + -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254, + -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416, + 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812, + -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254, + 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812, + 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941, + -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763, + -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541, + -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416, + -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763, + -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416, + -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254, + -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716, + -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465, + -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541, + -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716, + -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541, + -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763, + -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317, + -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408, + -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465, + -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317, + -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465, + -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716, + 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142, + 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773, + -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408, + 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142, + -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408, + -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317, + 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258, + 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248, + 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773, + 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258, + 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773, + 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142, + 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924, + 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069, + 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248, + 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924, + 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248, + 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258, + 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204, + 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838, + 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069, + 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204, + 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069, + 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924, + 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957, + 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997, + 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832, + 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957, + 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832, + -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861, + 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198, + -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347, + 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731, + 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198, + 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731, + -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277, + 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843, + 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198, + -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277, + 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843, + -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277, + -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951, + 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151, + 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843, + -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951, + 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151, + -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951, + -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192, + 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957, + 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151, + -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192, + 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957, + -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192, + -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657, + 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957, + -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657, + 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011, + 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957, + 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011, + 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997, + 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812, + -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416, + -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137, + 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812, + -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137, + -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826, + -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408, + 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773, + 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968, + -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408, + 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968, + -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933, + -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465, + -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408, + -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933, + -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465, + -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933, + -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518, + -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541, + -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465, + -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518, + -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541, + -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518, + -0.809154,0.004832,-0.587577,2.158585,-0.955809,-1.113647, + -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416, + -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541, + -0.809154,0.004832,-0.587577,2.158585,-0.955809,-1.113647, + -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416, + -0.809154,0.004832,-0.587577,2.158585,-0.955809,-1.113647, + -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137, + 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733, + 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569, + -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447, + 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733, + -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447, + -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758, + 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299, + 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905, + 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069, + 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299, + 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069, + 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838, + 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516, + 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731, + -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347, + 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516, + -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347, + -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419, + 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569, + 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516, + -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419, + 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569, + -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419, + -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447, + 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597, + 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968, + 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773, + 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597, + 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773, + 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248, + 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905, + 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597, + 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248, + 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905, + 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248, + 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069, + 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431, + 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422, + 0.889638,-0.392482,0.233458,2.985371,1.982663,0, + 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431, + 0.889638,-0.392482,0.233458,2.985371,1.982663,0, + -0.861251,0.383698,-0.333202,3.247406,2.073333,0, + 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215, + 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838, + 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422, + 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215, + 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422, + 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431, + 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266, + 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337, + 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838, + 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266, + 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838, + 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215, + 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021, + 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863, + 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337, + 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021, + 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337, + 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266, + -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781, + -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228, + 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863, + -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781, + 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863, + 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021, + -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658, + -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438, + -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228, + -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658, + -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228, + -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781, + -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443, + -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122, + -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438, + -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443, + -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438, + -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658, + -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535, + -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434, + -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122, + -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535, + -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122, + -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443, + -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742, + -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575, + -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434, + -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742, + -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434, + -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535, + -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198, + -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685, + -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575, + -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198, + -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575, + -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742, + -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784, + 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362, + -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685, + -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784, + -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685, + -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198, + 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762, + 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015, + 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362, + 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762, + 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362, + -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784, + 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819, + 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589, + 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015, + 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819, + 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015, + 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762, + -0.910859,-0.100368,-0.400327,3.731689,0.186391,0, + 0.431966,-0.771434,0.46722,3.486028,-0.141683,0, + 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589, + -0.910859,-0.100368,-0.400327,3.731689,0.186391,0, + 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589, + 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819, + 0.431966,-0.771434,-0.46722,3.71636,2.343387,0, + -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049, + 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662, + 0.431966,-0.771434,-0.46722,3.71636,2.343387,0, + 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662, + 0.694153,-0.467999,0.546926,3.454971,2.169877,0, + -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461, + -0.926486,-0.356041,-0.121897,4.126565,0.642027,0, + 0.338485,-0.103202,-0.935295,3.929251,0.411689,0, + -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461, + 0.338485,-0.103202,-0.935295,3.929251,0.411689,0, + 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586, + -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461, + 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586, + -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365, + -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001, + -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461, + -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365, + -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001, + -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365, + -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961, + -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813, + -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001, + -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961, + -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813, + -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961, + -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198, + -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922, + -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813, + -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198, + -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922, + -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198, + -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519, + -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537, + -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922, + -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519, + -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537, + -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519, + -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662, + -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483, + -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537, + -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662, + -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483, + -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662, + -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617, + -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337, + -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483, + -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617, + -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337, + -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617, + -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994, + -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443, + -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337, + -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994, + -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443, + -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994, + 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366, + -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051, + -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443, + 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366, + -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051, + 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366, + 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478, + -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193, + -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051, + 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478, + -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193, + 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478, + 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368, + -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049, + -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193, + 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368, + -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049, + 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368, + 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662, + -0.476715,0.879058,0,3.118124,-0.703925,0, + 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602, + 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349, + -0.476715,0.879058,0,3.118124,-0.703925,0, + 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349, + -0.560204,0.828355,-0.00034,3.33521,-0.375755,0, + 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595, + 0.536218,-0.84408,0.000006,2.339597,1.807702,0, + -0.926486,-0.356041,0.121897,2.723503,1.898839,0, + 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595, + -0.926486,-0.356041,0.121897,2.723503,1.898839,0, + 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709, + 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479, + 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595, + 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709, + 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479, + 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709, + 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046, + 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962, + 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479, + 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046, + 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962, + 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046, + 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829, + 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335, + 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962, + 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829, + 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335, + 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829, + 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399, + -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611, + 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335, + 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399, + -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611, + 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399, + -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465, + 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674, + -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611, + -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465, + 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674, + -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465, + -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058, + 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443, + 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674, + -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058, + 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443, + -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058, + 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193, + 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298, + 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443, + 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193, + 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246, + 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298, + 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193, + 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246, + 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193, + 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896, + 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499, + 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246, + 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896, + 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499, + 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896, + 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261, + 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964, + 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499, + 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261, + 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964, + 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261, + 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015, + 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931, + 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964, + 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015, + 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931, + 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015, + 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331, + 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602, + 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931, + 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331, + 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602, + 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331, + 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349, + 0.694153,-0.467999,0.546926,3.454971,2.169877,0, + 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662, + 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431, + 0.694153,-0.467999,0.546926,3.454971,2.169877,0, + 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431, + -0.861251,0.383698,-0.333202,3.247406,2.073333,0, + -0.560204,0.828355,-0.00034,3.33521,-0.375755,0, + 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349, + 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589, + -0.560204,0.828355,-0.00034,3.33521,-0.375755,0, + 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589, + 0.431966,-0.771434,0.46722,3.486028,-0.141683,0, + -0.926486,-0.356041,0.121897,2.723503,1.898839,0, + 0.889638,-0.392482,0.233458,2.985371,1.982663,0, + 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422, + 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709, + -0.926486,-0.356041,0.121897,2.723503,1.898839,0, + 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422, + 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709, + 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422, + 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838, + 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046, + 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709, + 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838, + 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046, + 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838, + 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337, + 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829, + 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046, + 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337, + 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829, + 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337, + 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863, + 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399, + 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829, + 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863, + 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399, + 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863, + -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228, + -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465, + 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399, + -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228, + -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465, + -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228, + -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438, + -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058, + -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465, + -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438, + -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058, + -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438, + -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122, + 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193, + -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058, + -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122, + 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193, + -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122, + -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434, + 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896, + 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193, + -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434, + 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896, + -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434, + -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575, + 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261, + 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896, + -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575, + 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261, + -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575, + -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685, + 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015, + 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261, + -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685, + 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015, + -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685, + 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362, + 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331, + 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015, + 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362, + 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331, + 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362, + 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015, + 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349, + 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331, + 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015, + 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349, + 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015, + 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589, + 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586, + 0.338485,-0.103202,-0.935295,3.929251,0.411689,0, + -0.910859,-0.100368,-0.400327,3.731689,0.186391,0, + 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586, + -0.910859,-0.100368,-0.400327,3.731689,0.186391,0, + 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819, + -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365, + 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586, + 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819, + -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365, + 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819, + 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762, + -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961, + -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365, + 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762, + -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961, + 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762, + -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784, + -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961, + -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784, + -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198, + -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198, + -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961, + -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198, + -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198, + -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198, + -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742, + -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519, + -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198, + -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742, + -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519, + -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742, + -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535, + -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662, + -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519, + -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535, + -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662, + -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535, + -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443, + -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617, + -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662, + -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443, + -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617, + -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443, + -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658, + -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994, + -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617, + -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658, + -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994, + -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658, + -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781, + 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366, + -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994, + -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781, + 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366, + -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781, + 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021, + 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478, + 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366, + 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021, + 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478, + 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021, + 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266, + 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368, + 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478, + 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266, + 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368, + 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266, + 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215, + 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662, + 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368, + 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215, + 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662, + 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215, + 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431, + 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964, + 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789, + 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499, + 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141, + 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573, + 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674, + 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141, + 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674, + 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443, + 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263, + 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141, + 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443, + 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263, + 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443, + 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298, + 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488, + 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263, + 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298, + 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488, + 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298, + 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246, + 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789, + 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345, + 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277, + 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277, + 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246, + 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499, + 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277, + 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499, + 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789, + 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277, + 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488, + 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246, + 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527, + 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425, + 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722, + 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491, + 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475, + 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105, + 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491, + 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105, + 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182, + 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343, + 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491, + 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182, + 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343, + 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182, + 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263, + 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611, + 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343, + 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263, + 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611, + 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263, + 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218, + 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581, + 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611, + 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218, + 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581, + 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218, + 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796, + 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585, + 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581, + 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796, + 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585, + 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796, + 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371, + 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582, + 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585, + 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371, + 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582, + 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371, + 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748, + 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671, + 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582, + 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748, + 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671, + 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748, + 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405, + 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527, + 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671, + 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405, + 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527, + 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405, + 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425, + 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491, + 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343, + 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345, + 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491, + 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345, + 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975, + 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527, + 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722, + -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592, + 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671, + 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527, + -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592, + 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671, + -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592, + 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573, + 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582, + 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671, + 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573, + 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582, + 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573, + 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141, + 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585, + 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582, + 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141, + 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585, + 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141, + 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263, + 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581, + 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585, + 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263, + 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581, + 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263, + 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488, + 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611, + 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581, + 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488, + 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611, + 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488, + 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277, + 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343, + 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611, + 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277, + 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343, + 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277, + 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345, + 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573, + -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592, + -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611, + 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573, + -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611, + 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674, + 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271, + 0.756976,-0.653442,0,2.128139,1.788397,0, + 0.536218,-0.84408,0.000006,2.339597,1.807702,0, + 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271, + 0.536218,-0.84408,0.000006,2.339597,1.807702,0, + 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595, + 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767, + 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271, + 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595, + 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767, + 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595, + 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479, + 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015, + 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767, + 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479, + 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015, + 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479, + 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962, + 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722, + 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015, + 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962, + 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722, + 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962, + 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335, + -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592, + 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722, + 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335, + -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592, + 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335, + -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611, + -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824, + 0.561574,-0.148323,-0.814024,2.245624,-0.864372,-0.995778, + 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296, + -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824, + 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296, + 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105, + 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681, + 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746, + 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271, + 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681, + 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271, + 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767, + 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501, + 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681, + 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767, + 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501, + 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767, + 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015, + 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332, + 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501, + 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015, + 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332, + 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015, + 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722, + 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763, + 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332, + 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722, + 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763, + 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722, + 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425, + 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279, + 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763, + 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425, + 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279, + 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425, + 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405, + 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335, + 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279, + 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405, + 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335, + 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405, + 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748, + 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081, + 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335, + 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748, + 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081, + 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748, + 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371, + 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179, + 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081, + 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371, + 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179, + 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371, + 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796, + 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797, + 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179, + 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796, + 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797, + 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796, + 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218, + 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324, + 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797, + 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218, + 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324, + 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218, + 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263, + 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058, + 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324, + 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263, + 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058, + 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263, + 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182, + 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296, + 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058, + 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182, + 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296, + 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182, + 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105, + -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824, + -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826, + -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137, + -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824, + -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137, + 0.561574,-0.148323,-0.814024,2.245624,-0.864372,-0.995778, + 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296, + 0.561574,-0.148323,-0.814024,2.245624,-0.864372,-0.995778, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058, + 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691, + -0.385788,0.922588,0,2.042206,1.777154,0, + 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746, + 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627, + -0.385788,0.922588,0,2.042206,1.777154,0, + 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627, + -0.720176,-0.693792,0,1.794465,1.787719,0, + 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324, + 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058, + 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691, + 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324, + 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691, + 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057, + 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797, + 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324, + 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057, + 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179, + 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797, + 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057, + 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179, + 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057, + 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565, + 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081, + 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179, + 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565, + 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081, + 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565, + 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461, + 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335, + 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081, + 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461, + 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335, + 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461, + 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399, + 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279, + 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335, + 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399, + 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279, + 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399, + 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423, + 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763, + 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279, + 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423, + 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763, + 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423, + 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813, + 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332, + 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763, + 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813, + 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332, + 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813, + 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222, + 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501, + 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332, + 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222, + 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501, + 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222, + 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751, + 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681, + 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501, + 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751, + 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681, + 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751, + 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352, + 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746, + 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681, + 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352, + 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746, + 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352, + 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627, + 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713, + -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743, + 0.566114,-0.824327,0,0.234527,1.730117,0, + 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713, + 0.566114,-0.824327,0,0.234527,1.730117,0, + 0.981421,-0.191868,0,0.733818,1.740873,0, + 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804, + -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672, + -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743, + 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804, + -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743, + 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713, + 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545, + -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055, + -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672, + 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545, + -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672, + 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804, + 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029, + -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719, + -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055, + 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029, + -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055, + 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545, + -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933, + 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993, + -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719, + -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933, + -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719, + 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029, + -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872, + 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626, + 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993, + -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872, + 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993, + -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933, + -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043, + 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493, + 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626, + -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043, + 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626, + -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872, + -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188, + 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014, + 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493, + -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188, + 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493, + -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043, + 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771, + 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627, + 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014, + 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771, + 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014, + -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188, + 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133, + 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375, + 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627, + 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133, + 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627, + 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771, + 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353, + 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244, + 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375, + 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353, + 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375, + 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133, + 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958, + 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311, + 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244, + 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958, + 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244, + 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353, + 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809, + 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811, + 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311, + 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809, + 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311, + 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958, + 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063, + 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902, + 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811, + 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063, + 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811, + 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809, + 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196, + 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842, + 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902, + 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196, + 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902, + 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063, + 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307, + 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911, + 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842, + 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307, + 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842, + 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196, + 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185, + 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392, + 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911, + 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185, + 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911, + 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307, + 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547, + 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961, + 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392, + 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547, + 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392, + 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185, + 0.92802,-0.37253,0,0.927497,-1.558489,0, + 0.226963,-0.973903,0,0.44655,-1.67295,0, + 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961, + 0.92802,-0.37253,0,0.927497,-1.558489,0, + 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961, + 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547, + 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403, + 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107, + -0.009814,-0.999952,0,-0.547248,1.742126,0, + 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403, + -0.009814,-0.999952,0,-0.547248,1.742126,0, + -0.039092,-0.999236,0,-0.228904,1.734267,0, + 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577, + 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462, + 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107, + 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577, + 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107, + 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403, + 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142, + 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136, + 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462, + 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142, + 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462, + 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577, + 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513, + 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047, + 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136, + 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513, + 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136, + 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142, + 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008, + 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059, + 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047, + 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008, + 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047, + 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513, + 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088, + 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774, + 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059, + 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088, + 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059, + 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008, + 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197, + 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223, + 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774, + 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197, + 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774, + 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088, + 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265, + 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349, + 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223, + 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265, + 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223, + 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197, + 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199, + 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316, + 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349, + 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199, + 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349, + 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265, + 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949, + 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232, + 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316, + 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949, + 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316, + 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199, + 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297, + 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405, + 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232, + 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297, + 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232, + 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949, + 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548, + 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612, + 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405, + 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548, + 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405, + 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297, + 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176, + 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026, + 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612, + 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176, + 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612, + 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548, + 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379, + 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019, + 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026, + 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379, + 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026, + 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176, + 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397, + 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736, + 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019, + 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397, + 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019, + 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379, + 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082, + 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556, + 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736, + 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082, + 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736, + 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397, + 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911, + -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494, + -0.065586,-0.997847,0,-1.179474,1.786649,0, + 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911, + -0.065586,-0.997847,0,-1.179474,1.786649,0, + -0.098179,0.995169,0,-0.866132,1.75467,0, + 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034, + -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029, + -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494, + 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034, + -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494, + 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911, + 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965, + -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403, + -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029, + 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965, + -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029, + 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034, + 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106, + -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441, + -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403, + 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106, + -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403, + 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965, + 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623, + 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827, + -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441, + 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623, + -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441, + 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106, + 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843, + 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193, + 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827, + 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843, + 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827, + 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623, + 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391, + 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104, + 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193, + 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391, + 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193, + 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843, + 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191, + 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858, + 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104, + 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191, + 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104, + 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391, + 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699, + 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181, + 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858, + 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699, + 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858, + 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191, + 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393, + 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042, + 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181, + 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393, + 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181, + 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699, + 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245, + 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987, + 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042, + 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245, + 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042, + 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393, + 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144, + -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257, + 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987, + 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144, + 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987, + 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245, + -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623, + -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608, + -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257, + -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623, + -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257, + 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144, + -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338, + -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055, + -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608, + -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338, + -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608, + -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623, + -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865, + -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293, + -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055, + -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865, + -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055, + -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338, + -0.031021,0.098798,-0.994624,1.644178,-0.857872,-1.208494, + -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394, + 0.779025,-0.626993,0,1.456656,1.785879,0, + -0.720176,-0.693792,0,1.794465,1.787719,0, + 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394, + -0.720176,-0.693792,0,1.794465,1.787719,0, + 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627, + 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781, + 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394, + 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627, + 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781, + 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627, + 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352, + 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108, + 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781, + 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352, + 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108, + 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352, + 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751, + 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976, + 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108, + 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751, + 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976, + 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751, + 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222, + -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076, + 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976, + 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222, + -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076, + 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222, + 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813, + -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108, + -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076, + 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813, + -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108, + 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813, + 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423, + -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818, + -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108, + 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423, + -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369, + -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818, + 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423, + -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369, + 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423, + 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399, + -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969, + -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369, + 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399, + -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969, + 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399, + 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461, + -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002, + -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969, + 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461, + -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002, + 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461, + 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565, + -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729, + -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002, + 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565, + -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729, + 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565, + 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057, + -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177, + -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729, + 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057, + -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177, + 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057, + 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691, + -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804, + -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177, + 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691, + -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804, + 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137, + -0.809154,0.004832,-0.587577,2.158585,-0.955809,-1.113647, + -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518, + -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137, + -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + 0.561574,-0.148323,-0.814024,2.245624,-0.864372,-0.995778, + -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968, + -0.031021,0.098798,-0.994624,1.644178,-0.857872,-1.208494, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933, + 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518, + -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933, + 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491, + -0.560667,-0.828041,0,1.604939,-1.556997,0, + -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932, + -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861, + -0.560667,-0.828041,0,1.604939,-1.556997,0, + -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861, + -0.034649,0.9994,0,1.920432,-1.567396,0, + -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841, + -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707, + 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733, + -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841, + 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733, + -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758, + -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522, + -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841, + -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758, + -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522, + -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758, + -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185, + -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861, + 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832, + -0.034649,0.9994,0,1.920432,-1.567396,0, + -0.560667,-0.828041,0,1.604939,-1.556997,0, + 0.770209,-0.637792,0,1.289448,-1.546597,0, + -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522, + -0.560667,-0.828041,0,1.604939,-1.556997,0, + -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522, + -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185, + -0.560667,-0.828041,0,1.604939,-1.556997,0, + -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185, + -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932, + -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707, + 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029, + 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204, + -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707, + 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204, + 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733, + 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643, + 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245, + 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299, + 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543, + 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643, + 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299, + 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543, + 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299, + 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838, + 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029, + 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543, + 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838, + 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029, + 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838, + 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204, + -0.031021,0.098798,-0.994624,1.644178,-0.857872,-1.208494, + 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968, + 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597, + -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804, + -0.031021,0.098798,-0.994624,1.644178,-0.857872,-1.208494, + 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597, + -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804, + 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597, + 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905, + 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245, + -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177, + -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804, + 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245, + -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804, + 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905, + 0.779025,-0.626993,0,1.456656,1.785879,0, + 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394, + 0.981421,-0.191868,0,0.733818,1.740873,0, + -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522, + 0.770209,-0.637792,0,1.289448,-1.546597,0, + 0.92802,-0.37253,0,0.927497,-1.558489,0, + -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522, + 0.92802,-0.37253,0,0.927497,-1.558489,0, + 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547, + -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841, + -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522, + 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547, + -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841, + 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547, + 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185, + -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707, + -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841, + 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185, + -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707, + 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185, + 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307, + 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029, + -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707, + 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307, + 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029, + 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307, + 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196, + 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543, + 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029, + 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196, + 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543, + 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196, + 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063, + 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643, + 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543, + 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063, + 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643, + 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063, + 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809, + 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245, + 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643, + 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809, + 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245, + 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809, + 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958, + 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245, + 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958, + 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353, + -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177, + 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245, + 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353, + -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177, + 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353, + 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133, + -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729, + -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177, + 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133, + -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729, + 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133, + 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771, + -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002, + -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729, + 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771, + -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002, + 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771, + -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188, + -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969, + -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002, + -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188, + -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969, + -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188, + -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043, + -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369, + -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969, + -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043, + -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369, + -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043, + -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872, + -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818, + -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369, + -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872, + -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818, + -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872, + -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933, + -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108, + -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818, + -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933, + -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108, + -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933, + 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029, + -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108, + 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029, + 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545, + -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076, + -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108, + 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545, + -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076, + 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545, + 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804, + 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976, + -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076, + 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804, + 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976, + 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804, + 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713, + 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108, + 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976, + 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713, + 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781, + 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108, + 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713, + 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781, + 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713, + 0.981421,-0.191868,0,0.733818,1.740873,0, + 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394, + 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781, + 0.981421,-0.191868,0,0.733818,1.740873,0, + -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743, + 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403, + -0.039092,-0.999236,0,-0.228904,1.734267,0, + -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743, + -0.039092,-0.999236,0,-0.228904,1.734267,0, + 0.566114,-0.824327,0,0.234527,1.730117,0, + -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672, + 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577, + 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403, + -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672, + 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403, + -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743, + -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055, + 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142, + 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577, + -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055, + 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577, + -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672, + -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719, + 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513, + 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142, + -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719, + 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142, + -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055, + 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993, + 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008, + 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513, + 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993, + 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513, + -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719, + 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626, + 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088, + 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008, + 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626, + 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008, + 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993, + 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493, + 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197, + 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088, + 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493, + 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088, + 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626, + 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014, + 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265, + 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197, + 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014, + 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197, + 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493, + 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627, + 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199, + 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265, + 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627, + 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265, + 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014, + 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375, + 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949, + 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199, + 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375, + 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199, + 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627, + 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244, + 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297, + 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949, + 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244, + 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949, + 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375, + 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311, + 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548, + 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297, + 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311, + 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297, + 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244, + 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811, + 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176, + 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548, + 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811, + 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548, + 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311, + 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902, + 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379, + 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176, + 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902, + 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176, + 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811, + 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842, + 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397, + 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379, + 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842, + 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379, + 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902, + 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911, + 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082, + 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397, + 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911, + 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397, + 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842, + 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392, + 0.327725,-0.489439,-0.808112,-0.07847,-1.688266,-0.80023, + 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082, + 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392, + 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082, + 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911, + 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392, + 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924, + 0.327725,-0.489439,-0.808112,-0.07847,-1.688266,-0.80023, + 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107, + 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911, + -0.098179,0.995169,0,-0.866132,1.75467,0, + 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107, + -0.098179,0.995169,0,-0.866132,1.75467,0, + -0.009814,-0.999952,0,-0.547248,1.742126,0, + 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462, + 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034, + 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911, + 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462, + 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911, + 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107, + 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136, + 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965, + 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034, + 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136, + 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034, + 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462, + 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047, + 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106, + 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965, + 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047, + 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965, + 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136, + 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059, + 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623, + 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106, + 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059, + 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106, + 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047, + 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774, + 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843, + 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623, + 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774, + 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623, + 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059, + 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223, + 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391, + 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843, + 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223, + 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843, + 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774, + 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349, + 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191, + 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391, + 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349, + 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391, + 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223, + 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316, + 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699, + 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191, + 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316, + 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191, + 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349, + 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232, + 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393, + 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699, + 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232, + 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699, + 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316, + 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405, + 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245, + 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393, + 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405, + 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393, + 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232, + 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612, + 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144, + 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245, + 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612, + 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245, + 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405, + 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026, + -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623, + 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144, + 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026, + 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144, + 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612, + 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019, + -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338, + -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623, + 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019, + -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623, + 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026, + 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736, + -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865, + -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338, + 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736, + -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338, + 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019, + 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556, + -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918, + -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865, + 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556, + -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865, + 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736, + 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975, + 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345, + 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968, + 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149, + 0.655995,-0.105886,-0.747301,2.740886,-1.339225,-0.463604, + 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013, + 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245, + 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905, + 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299, + -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494, + -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901, + 0.262234,-0.965004,0,-1.35095,1.807009,0, + -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494, + 0.262234,-0.965004,0,-1.35095,1.807009,0, + -0.065586,-0.997847,0,-1.179474,1.786649,0, + -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029, + -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642, + -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901, + -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029, + -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901, + -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494, + -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403, + -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265, + -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642, + -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403, + -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642, + -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029, + -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441, + -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125, + -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265, + -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441, + -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265, + -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403, + 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827, + 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349, + -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125, + 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827, + -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125, + -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441, + 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193, + 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307, + 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349, + 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193, + 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349, + 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827, + 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104, + 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489, + 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307, + 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104, + 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307, + 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193, + 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858, + 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422, + 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489, + 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858, + 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489, + 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104, + 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181, + 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643, + 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422, + 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181, + 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422, + 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858, + 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042, + 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257, + 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643, + 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042, + 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643, + 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181, + 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987, + -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116, + 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257, + 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987, + 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257, + 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042, + -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257, + -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315, + -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116, + -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257, + -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116, + 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987, + -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608, + -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851, + -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315, + -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608, + -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315, + -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257, + -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055, + -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619, + -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851, + -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055, + -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851, + -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608, + -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293, + -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832, + -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619, + -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293, + -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619, + -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055, + -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901, + -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501, + 0.021487,0.999769,0,-1.67651,1.826886,0, + -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901, + 0.021487,0.999769,0,-1.67651,1.826886,0, + 0.262234,-0.965004,0,-1.35095,1.807009,0, + -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642, + -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594, + -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501, + -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642, + -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501, + -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901, + -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265, + -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807, + -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594, + -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265, + -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594, + -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642, + -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125, + -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639, + -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807, + -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125, + -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807, + -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265, + 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349, + 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104, + -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639, + 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349, + -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639, + -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125, + 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307, + 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196, + 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104, + 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307, + 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104, + 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349, + 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489, + 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827, + 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196, + 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489, + 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196, + 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307, + 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422, + -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762, + 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827, + 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422, + 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827, + 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489, + 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643, + -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679, + -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762, + 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643, + -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762, + 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422, + 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257, + -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589, + -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679, + 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257, + -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679, + 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643, + -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116, + -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798, + -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589, + -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116, + -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589, + 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257, + -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315, + 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028, + -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798, + -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315, + -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798, + -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116, + -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851, + 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639, + 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028, + -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851, + 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028, + -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315, + -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619, + 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167, + 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639, + -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619, + 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639, + -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851, + -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832, + 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879, + 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167, + -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832, + 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167, + -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619, + -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381, + 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422, + 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879, + -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381, + 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879, + -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832, + 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435, + -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293, + -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865, + 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435, + -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865, + -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918, + 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424, + -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381, + -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832, + 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424, + -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832, + -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293, + -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567, + 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424, + -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293, + 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435, + -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567, + -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293, + -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501, + 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375, + 0.181762,-0.983343,0,-2.057387,1.841308,0, + -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501, + 0.181762,-0.983343,0,-2.057387,1.841308,0, + 0.021487,0.999769,0,-1.67651,1.826886,0, + -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594, + 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245, + 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375, + -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594, + 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375, + -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501, + -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807, + 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142, + 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245, + -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807, + 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245, + -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594, + -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639, + 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318, + 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142, + -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639, + 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142, + -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807, + 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104, + 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662, + 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318, + 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104, + 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318, + -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639, + 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196, + 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139, + 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662, + 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196, + 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662, + 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104, + 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827, + 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884, + 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139, + 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827, + 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139, + 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196, + -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762, + 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301, + 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884, + -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762, + 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884, + 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827, + -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679, + -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962, + 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301, + -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679, + 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301, + -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762, + -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589, + 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106, + -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962, + -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589, + -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962, + -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679, + -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798, + 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866, + 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106, + -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798, + 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106, + -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589, + 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028, + 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902, + 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866, + 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028, + 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866, + -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798, + 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639, + 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026, + 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902, + 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639, + 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902, + 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028, + 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167, + 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136, + 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026, + 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167, + 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026, + 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639, + 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879, + 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687, + 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136, + 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879, + 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136, + 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167, + 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422, + 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238, + 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687, + 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422, + 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687, + 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879, + 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375, + 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168, + 0.03611,0.999348,0,-2.629466,1.918204,0, + 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375, + 0.03611,0.999348,0,-2.629466,1.918204,0, + 0.181762,-0.983343,0,-2.057387,1.841308,0, + 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245, + 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796, + 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168, + 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245, + 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168, + 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375, + 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142, + 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127, + 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796, + 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142, + 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796, + 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245, + 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318, + 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653, + 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127, + 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318, + 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127, + 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142, + 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662, + 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971, + 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653, + 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662, + 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653, + 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318, + 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139, + 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049, + 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971, + 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139, + 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971, + 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662, + 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884, + 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192, + 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049, + 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884, + 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049, + 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139, + 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301, + 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661, + 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192, + 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301, + 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192, + 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884, + -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962, + -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617, + 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661, + -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962, + 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661, + 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301, + 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106, + -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695, + -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617, + 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106, + -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617, + -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962, + 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866, + -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269, + -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695, + 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866, + -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695, + 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106, + 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902, + -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384, + -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269, + 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902, + -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269, + 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866, + 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026, + -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045, + -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384, + 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026, + -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384, + 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902, + 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136, + -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486, + -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045, + 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136, + -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045, + 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026, + 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486, + 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687, + -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486, + 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136, + 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168, + 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104, + 0.012502,-0.999922,0,-3.037562,2.001526,0, + 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168, + 0.012502,-0.999922,0,-3.037562,2.001526,0, + 0.03611,0.999348,0,-2.629466,1.918204,0, + 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796, + 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368, + 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104, + 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796, + 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104, + 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168, + 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127, + 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149, + 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368, + 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127, + 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368, + 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796, + 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653, + 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323, + 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149, + 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653, + 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149, + 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127, + 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971, + 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479, + 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323, + 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971, + 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323, + 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653, + 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049, + -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324, + 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479, + 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049, + 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479, + 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971, + 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192, + -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876, + -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324, + 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192, + -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324, + 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049, + 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661, + -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042, + -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876, + 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661, + -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876, + 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192, + -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617, + -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273, + -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042, + -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617, + -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042, + 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661, + -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695, + -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352, + -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273, + -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695, + -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273, + -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617, + -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269, + -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565, + -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352, + -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269, + -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352, + -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695, + -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384, + -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644, + -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565, + -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384, + -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565, + -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269, + -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045, + -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133, + -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644, + -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045, + -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644, + -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384, + -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486, + -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176, + -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133, + -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486, + -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133, + -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384, + -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176, + -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486, + -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313, + -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139, + -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384, + -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313, + -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095, + -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.072535,0.997366,0,-3.392806,1.769365,0, + -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477, + -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679, + -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713, + -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477, + -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713, + -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095, + -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636, + -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386, + -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679, + -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636, + -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679, + -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477, + 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958, + -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766, + -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386, + 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958, + -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386, + -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636, + -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945, + -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934, + -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766, + -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945, + -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766, + 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958, + -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913, + -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996, + -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934, + -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913, + -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934, + -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945, + -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816, + -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762, + -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996, + -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816, + -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996, + -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913, + -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934, + -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445, + -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762, + -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934, + -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762, + -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816, + -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971, + -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626, + -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445, + -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971, + -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445, + -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934, + -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557, + -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409, + -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626, + -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557, + -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626, + -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971, + -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058, + -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081, + -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409, + -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058, + -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409, + -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557, + -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413, + -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015, + -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081, + -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413, + -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081, + -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058, + -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596, + -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021, + -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015, + -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596, + -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015, + -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413, + -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926, + -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611, + -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021, + -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926, + -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021, + -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596, + -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713, + -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202, + -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0, + -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713, + -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679, + -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432, + -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202, + -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679, + -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202, + -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713, + -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386, + -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428, + -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432, + -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386, + -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432, + -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679, + -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766, + -0.846545,0.532317,0,-3.655148,1.190938,-0.573692, + -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428, + -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766, + -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428, + -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386, + -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934, + -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203, + -0.846545,0.532317,0,-3.655148,1.190938,-0.573692, + -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934, + -0.846545,0.532317,0,-3.655148,1.190938,-0.573692, + -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766, + -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996, + -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787, + -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203, + -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996, + -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203, + -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934, + -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762, + -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066, + -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787, + -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762, + -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787, + -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996, + -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445, + -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279, + -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066, + -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445, + -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066, + -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762, + -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626, + -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524, + -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279, + -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626, + -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279, + -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445, + -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409, + -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153, + -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524, + -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409, + -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524, + -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626, + -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081, + -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512, + -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153, + -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081, + -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153, + -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409, + -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015, + -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631, + -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512, + -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015, + -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512, + -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081, + -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021, + -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153, + -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631, + -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021, + -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631, + -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015, + -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611, + -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015, + -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153, + -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611, + -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153, + -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021, + -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202, + -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745, + -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0, + -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202, + -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0, + -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0, + -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432, + -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469, + -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745, + -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432, + -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745, + -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202, + -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428, + -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829, + -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469, + -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428, + -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469, + -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432, + -0.846545,0.532317,0,-3.655148,1.190938,-0.573692, + -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991, + -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829, + -0.846545,0.532317,0,-3.655148,1.190938,-0.573692, + -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829, + -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428, + -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203, + -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749, + -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991, + -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203, + -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991, + -0.846545,0.532317,0,-3.655148,1.190938,-0.573692, + -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787, + -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276, + -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749, + -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787, + -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749, + -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203, + -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066, + -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448, + -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276, + -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066, + -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276, + -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787, + -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279, + -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561, + -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448, + -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279, + -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448, + -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066, + -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524, + -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712, + -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561, + -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524, + -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561, + -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279, + -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153, + -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456, + -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712, + -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153, + -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712, + -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524, + -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512, + -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898, + -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456, + -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512, + -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456, + -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153, + -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176, + -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384, + -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596, + -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176, + -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596, + -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413, + -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133, + -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176, + -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413, + -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133, + -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413, + -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058, + -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644, + -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133, + -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058, + -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644, + -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058, + -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557, + -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565, + -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644, + -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557, + -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565, + -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557, + -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971, + -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352, + -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565, + -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971, + -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352, + -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971, + -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934, + -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273, + -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352, + -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934, + -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273, + -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934, + -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816, + -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042, + -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273, + -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816, + -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042, + -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816, + -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913, + -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876, + -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042, + -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913, + -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876, + -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913, + -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945, + -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324, + -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876, + -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945, + -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324, + -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945, + 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958, + 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479, + -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324, + 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958, + 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479, + 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958, + -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636, + 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323, + 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479, + -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636, + 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323, + -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636, + -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477, + 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149, + 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323, + -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477, + 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149, + -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477, + -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095, + -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687, + 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238, + -0.955382,-0.23808,-0.174826,-2.462835,-1.3055,-0.966395, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + -0.955382,-0.23808,-0.174826,-2.462835,-1.3055,-0.966395, + 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547, + -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101, + 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547, + 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048, + -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678, + -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724, + -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841, + -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678, + -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841, + -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494, + 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746, + -0.385788,0.922588,0,2.042206,1.777154,0, + 0.756976,-0.653442,0,2.128139,1.788397,0, + 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746, + 0.756976,-0.653442,0,2.128139,1.788397,0, + 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271, + 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812, + -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384, + -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139, + 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832, + 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625, + -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611, + 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832, + -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611, + -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926, + 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812, + -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926, + -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596, + 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812, + -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596, + -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384, + -0.032036,-0.072305,-0.996868,-3.342096,-1.533989,-0.921628, + -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076, + -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015, + -0.032036,-0.072305,-0.996868,-3.342096,-1.533989,-0.921628, + -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015, + -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611, + 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625, + -0.032036,-0.072305,-0.996868,-3.342096,-1.533989,-0.921628, + -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611, + -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812, + 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581, + 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737, + -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812, + 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737, + 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572, + -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812, + 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563, + 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581, + 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433, + 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994, + -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639, + 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433, + -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639, + 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772, + 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514, + -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914, + 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218, + 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514, + 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218, + 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176, + -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235, + -0.753891,0.130682,-0.643872,-3.141072,-2.785287,-1.032318, + -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008, + -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235, + -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008, + -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679, + -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679, + -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008, + 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671, + -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679, + 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671, + 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343, + 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514, + 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176, + 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869, + 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869, + 0.913315,0.39776,0.087427,-3.227676,-3.14166,-1.103969, + 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229, + 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229, + 0.913315,0.39776,0.087427,-3.227676,-3.14166,-1.103969, + 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214, + -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679, + 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343, + 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766, + -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679, + 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766, + 0.637284,0.689194,-0.344791,-2.90901,-3.084482,-1.089147, + -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235, + -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084, + -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431, + -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235, + -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431, + -0.753891,0.130682,-0.643872,-3.141072,-2.785287,-1.032318, + 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176, + 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218, + -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431, + 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176, + -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431, + -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084, + 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748, + 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869, + 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229, + 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748, + 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229, + -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058, + -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058, + 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229, + 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214, + -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058, + 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214, + 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573, + -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823, + -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058, + 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573, + -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823, + 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573, + -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739, + 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748, + -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058, + -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823, + 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748, + -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823, + -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693, + -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693, + -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984, + -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368, + -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693, + -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368, + 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748, + -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679, + 0.637284,0.689194,-0.344791,-2.90901,-3.084482,-1.089147, + 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355, + -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679, + 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355, + -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235, + 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355, + -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456, + -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084, + 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355, + -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084, + -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235, + -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084, + -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456, + -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247, + -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084, + -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247, + 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176, + 0.913315,0.39776,0.087427,-3.227676,-3.14166,-1.103969, + -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247, + 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214, + 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869, + 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176, + -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247, + 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869, + -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247, + 0.913315,0.39776,0.087427,-3.227676,-3.14166,-1.103969, + 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869, + 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748, + 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514, + -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368, + -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914, + 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514, + -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368, + 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514, + 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748, + 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766, + 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343, + 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635, + 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766, + 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635, + 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772, + -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823, + -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739, + -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106, + -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823, + -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106, + -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693, + -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739, + 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973, + 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236, + -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739, + 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236, + -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106, + 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973, + 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772, + 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635, + 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973, + 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635, + 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236, + -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106, + 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236, + 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117, + -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106, + 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117, + -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127, + 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117, + 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236, + 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635, + 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117, + 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635, + 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614, + -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693, + -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106, + -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127, + -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693, + -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127, + -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984, + 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343, + 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671, + 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614, + 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343, + 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614, + 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635, + -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008, + -0.753891,0.130682,-0.643872,-3.141072,-2.785287,-1.032318, + -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409, + -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008, + -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409, + -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834, + -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914, + -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368, + -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785, + -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914, + -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785, + -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211, + 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218, + -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914, + -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211, + 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218, + -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211, + 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627, + -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431, + 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218, + 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627, + -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431, + 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627, + -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409, + -0.753891,0.130682,-0.643872,-3.141072,-2.785287,-1.032318, + -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431, + -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409, + -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834, + -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148, + 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671, + -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834, + 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671, + -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008, + 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657, + -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785, + -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368, + 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657, + -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368, + -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984, + -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262, + 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657, + -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984, + -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262, + -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984, + -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127, + -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639, + -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262, + -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127, + -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639, + -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127, + 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117, + 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772, + -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639, + 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117, + 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772, + 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117, + 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614, + -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148, + 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772, + 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614, + -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148, + 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614, + 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671, + -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602, + -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153, + -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015, + -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602, + -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015, + -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459, + -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868, + -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898, + -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512, + -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868, + -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512, + -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631, + -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602, + -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868, + -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631, + -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602, + -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631, + -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153, + -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045, + -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456, + -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898, + -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063, + -0.43302,-0.02622,-0.901003,-3.57817,0.837714,-0.288502, + -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749, + -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063, + -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749, + -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276, + -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322, + -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063, + -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276, + -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322, + -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276, + -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448, + -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359, + -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322, + -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448, + -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359, + -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448, + -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561, + -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398, + -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359, + -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561, + -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398, + -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561, + -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712, + -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045, + -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398, + -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712, + -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045, + -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712, + -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456, + -0.996668,0.081567,0,-3.623861,0.911561,0, + -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749, + -0.43302,-0.02622,-0.901003,-3.57817,0.837714,-0.288502, + -0.996668,0.081567,0,-3.623861,0.911561,0, + -0.43302,-0.02622,-0.901003,-3.57817,0.837714,-0.288502, + -0.989171,0.146765,0,-3.599077,0.796217,0, + -0.844095,-0.536194,0,-3.601668,1.293049,0, + -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0, + -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745, + -0.844095,-0.536194,0,-3.601668,1.293049,0, + -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745, + -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469, + -0.946116,-0.323827,0,-3.608593,1.163581,0, + -0.844095,-0.536194,0,-3.601668,1.293049,0, + -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469, + -0.946116,-0.323827,0,-3.608593,1.163581,0, + -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469, + -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829, + -0.997181,-0.075036,0,-3.622326,1.005378,0, + -0.946116,-0.323827,0,-3.608593,1.163581,0, + -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829, + -0.997181,-0.075036,0,-3.622326,1.005378,0, + -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829, + -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991, + -0.996668,0.081567,0,-3.623861,0.911561,0, + -0.997181,-0.075036,0,-3.622326,1.005378,0, + -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991, + -0.996668,0.081567,0,-3.623861,0.911561,0, + -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991, + -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749, + -0.999862,-0.016634,0,-3.900566,1.002504,0, + -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635, + -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132, + -0.999862,-0.016634,0,-3.900566,1.002504,0, + -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132, + -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0, + -0.964752,0.26316,0,-3.87514,1.480358,0, + -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137, + -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635, + -0.964752,0.26316,0,-3.87514,1.480358,0, + -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635, + -0.999862,-0.016634,0,-3.900566,1.002504,0, + -0.766357,0.642415,0,-3.712832,1.794492,0, + -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664, + -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137, + -0.766357,0.642415,0,-3.712832,1.794492,0, + -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137, + -0.964752,0.26316,0,-3.87514,1.480358,0, + -0.410619,0.911807,0,-3.47843,1.975409,0, + -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141, + -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664, + -0.410619,0.911807,0,-3.47843,1.975409,0, + -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664, + -0.766357,0.642415,0,-3.712832,1.794492,0, + -0.433128,-0.901332,0,-3.242148,2.021387,0, + 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645, + -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141, + -0.433128,-0.901332,0,-3.242148,2.021387,0, + -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141, + -0.410619,0.911807,0,-3.47843,1.975409,0, + -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635, + -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831, + -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033, + -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635, + -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033, + -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132, + -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137, + -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631, + -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831, + -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137, + -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831, + -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635, + -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664, + -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431, + -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631, + -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664, + -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631, + -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137, + -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141, + -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229, + -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431, + -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141, + -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431, + -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664, + 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645, + 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029, + -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229, + 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645, + -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229, + -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141, + -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831, + 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288, + 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281, + -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831, + 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281, + -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033, + -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631, + -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295, + 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288, + -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631, + 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288, + -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831, + -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431, + -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304, + -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295, + -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431, + -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295, + -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631, + -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304, + -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229, + -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304, + -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431, + 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229, + 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288, + 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865, + 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064, + 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288, + 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064, + 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281, + -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295, + 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668, + 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865, + -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295, + 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865, + 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288, + -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304, + 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547, + 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668, + -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304, + 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668, + -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273, + 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547, + -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304, + 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865, + 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693, + 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185, + 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865, + 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185, + 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064, + 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668, + 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201, + 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693, + 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668, + 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693, + 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865, + 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547, + 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709, + 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201, + 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547, + 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201, + 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668, + 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273, + 0.389161,-0.829175,-0.401277,-3.357009,1.781675,-0.071216, + 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709, + 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273, + 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709, + 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547, + 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693, + 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069, + 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063, + 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693, + 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063, + 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185, + 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201, + 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074, + 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069, + 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201, + 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069, + 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693, + 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074, + 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709, + 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074, + 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201, + 0.389161,-0.829175,-0.401277,-3.357009,1.781675,-0.071216, + 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.389161,-0.829175,-0.401277,-3.357009,1.781675,-0.071216, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709, + 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029, + 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645, + -0.433128,-0.901332,0,-3.242148,2.021387,0, + 0.012502,-0.999922,0,-3.037562,2.001526,0, + 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645, + 0.012502,-0.999922,0,-3.037562,2.001526,0, + 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104, + 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029, + 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645, + 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104, + 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029, + 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104, + 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368, + 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368, + -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368, + 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149, + -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358, + 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031, + 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095, + 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913, + 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025, + 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853, + 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913, + 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853, + 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857, + 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206, + 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724, + 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466, + 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137, + 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374, + 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095, + 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137, + 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095, + 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031, + 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137, + 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619, + 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761, + 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137, + 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761, + 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374, + 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095, + 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374, + 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882, + 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095, + 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882, + 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105, + 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374, + 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761, + 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515, + 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374, + 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515, + 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882, + 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761, + 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779, + 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515, + 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779, + 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713, + 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903, + 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206, + 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713, + 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206, + 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853, + 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903, + 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978, + 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206, + 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206, + 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025, + 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083, + 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949, + 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025, + 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949, + 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853, + 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083, + 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.813293,0.022433,-0.581422,4.788476,2.028047,-0.608619, + 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134, + 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085, + 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083, + 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134, + 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083, + 0.813293,0.022433,-0.581422,4.788476,2.028047,-0.608619, + 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085, + 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891, + 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949, + 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085, + 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949, + 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083, + 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891, + -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579, + 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713, + 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891, + 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713, + 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949, + -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579, + -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233, + 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903, + -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579, + 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903, + 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713, + -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233, + 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974, + 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978, + -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233, + 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978, + 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903, + 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974, + 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978, + 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793, + 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803, + 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386, + 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779, + 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779, + 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386, + 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276, + 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779, + 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276, + 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515, + 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882, + 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515, + 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276, + 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882, + 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276, + -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326, + 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105, + 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882, + -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326, + 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105, + -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326, + -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105, + -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026, + 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793, + 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516, + -0.222902,0.035918,-0.974179,5.085813,1.888503,-0.408327, + 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793, + -0.222902,0.035918,-0.974179,5.085813,1.888503,-0.408327, + 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387, + 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793, + 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387, + 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803, + 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803, + 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387, + 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562, + 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803, + 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562, + 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386, + 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386, + 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562, + 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201, + 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386, + 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201, + 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276, + -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326, + 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276, + 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201, + -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326, + 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201, + 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155, + -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026, + -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326, + 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155, + -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026, + 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155, + 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026, + 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296, + 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663, + -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233, + -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329, + 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291, + -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233, + 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291, + 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974, + 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939, + -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329, + -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233, + 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939, + -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233, + -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579, + 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288, + 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939, + -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579, + 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288, + -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579, + 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891, + 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288, + 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891, + 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085, + 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288, + 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085, + 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393, + 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393, + 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085, + 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134, + 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393, + 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134, + 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307, + 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165, + 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307, + 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134, + 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165, + 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663, + 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057, + 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393, + 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307, + 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057, + 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307, + 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518, + 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057, + 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332, + 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288, + 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057, + 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288, + 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393, + 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332, + 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713, + 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939, + 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332, + 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939, + 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288, + 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713, + 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534, + -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329, + 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713, + -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329, + 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939, + 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534, + 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324, + 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291, + 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534, + 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291, + -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329, + 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324, + 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795, + 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516, + 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324, + 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516, + 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291, + 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516, + 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795, + 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113, + 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516, + 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113, + -0.222902,0.035918,-0.974179,5.085813,1.888503,-0.408327, + -0.222902,0.035918,-0.974179,5.085813,1.888503,-0.408327, + 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113, + 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387, + -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048, + 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165, + 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663, + 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332, + -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987, + 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787, + 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332, + 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787, + 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713, + 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787, + -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781, + 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534, + 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787, + 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534, + 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713, + -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781, + 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228, + 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324, + -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781, + 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324, + 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534, + 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228, + 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214, + 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795, + 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228, + 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795, + 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324, + 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214, + 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042, + 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113, + 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214, + 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113, + 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795, + 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113, + 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042, + 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258, + 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113, + 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258, + 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387, + 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387, + 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258, + 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275, + 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387, + 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275, + 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562, + 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562, + 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275, + 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606, + 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562, + 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606, + 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201, + 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155, + 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201, + 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606, + 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155, + 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606, + 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327, + 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155, + 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327, + 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618, + 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296, + 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155, + 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618, + 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296, + 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618, + 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339, + 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663, + 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296, + 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339, + 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663, + 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339, + 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768, + -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048, + 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663, + 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768, + -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048, + 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768, + -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428, + 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191, + 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518, + -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048, + 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191, + -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048, + -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428, + 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975, + 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518, + 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191, + 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997, + 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057, + 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518, + 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997, + 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518, + 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248, + 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248, + 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518, + 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975, + -0.989689,-0.143234,0,4.912303,2.162645,-0.00009, + -0.941169,-0.337937,0,5.04969,2.032731,0.000071, + 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228, + -0.989689,-0.143234,0,4.912303,2.162645,-0.00009, + 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228, + -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781, + -0.941169,-0.337937,0,5.04969,2.032731,0.000071, + 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993, + 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214, + -0.941169,-0.337937,0,5.04969,2.032731,0.000071, + 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214, + 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228, + 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042, + 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993, + 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042, + 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797, + 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258, + 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042, + 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258, + 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797, + 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988, + 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258, + 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988, + 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275, + 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768, + 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339, + 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658, + 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768, + 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658, + 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982, + 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768, + 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982, + 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333, + -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428, + 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768, + 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333, + -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428, + 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333, + 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407, + 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191, + -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428, + 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407, + 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191, + 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407, + 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185, + 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888, + 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975, + 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191, + 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888, + 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191, + 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185, + 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794, + 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248, + 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975, + 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794, + 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975, + 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888, + 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117, + -0.965284,-0.261201,0,4.747988,2.300163,-0.000276, + 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787, + 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117, + 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787, + -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987, + 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196, + 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117, + -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987, + 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196, + -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987, + 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997, + 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764, + 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196, + 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997, + 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764, + 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997, + 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248, + 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764, + 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248, + 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332, + 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332, + 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248, + 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794, + 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275, + 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988, + 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069, + 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275, + 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069, + 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606, + 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606, + 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069, + 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043, + 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606, + 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043, + 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327, + 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327, + 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043, + -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523, + 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327, + -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523, + 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618, + 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618, + -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523, + 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137, + 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618, + 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137, + 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339, + 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339, + 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137, + 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658, + -0.998597,-0.052951,0,5.177545,1.932323,0.000214, + 0.243507,0.533327,-0.810103,5.321136,1.795562,-0.119606, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + -0.998597,-0.052951,0,5.177545,1.932323,0.000214, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993, + -0.998597,-0.052951,0,5.177545,1.932323,0.000214, + -0.99798,-0.063521,0,5.378289,1.768448,0.000441, + 0.243507,0.533327,-0.810103,5.321136,1.795562,-0.119606, + -0.99798,-0.063521,0,5.378289,1.768448,0.000441, + -0.925873,-0.377836,0,5.424281,1.721152,0.000496, + 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555, + -0.99798,-0.063521,0,5.378289,1.768448,0.000441, + 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555, + 0.243507,0.533327,-0.810103,5.321136,1.795562,-0.119606, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + 0.243507,0.533327,-0.810103,5.321136,1.795562,-0.119606, + 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555, + 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452, + 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712, + 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306, + 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712, + 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797, + 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797, + 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712, + 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639, + 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797, + 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639, + 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988, + 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988, + 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639, + 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984, + 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988, + 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984, + 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069, + 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069, + 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984, + 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062, + 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069, + 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062, + 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043, + 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043, + 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062, + 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234, + 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043, + 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234, + 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149, + 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043, + 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149, + -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523, + 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137, + -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523, + 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149, + 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137, + 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149, + 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883, + 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658, + 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137, + 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883, + 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658, + 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883, + -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034, + 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982, + 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658, + -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034, + 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982, + -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034, + 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892, + 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333, + 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982, + 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892, + 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333, + 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892, + -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888, + 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407, + 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333, + -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888, + 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407, + -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888, + -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661, + 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666, + 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185, + 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407, + 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666, + 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407, + -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661, + 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743, + 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888, + 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185, + 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743, + 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185, + 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666, + -0.925873,-0.377836,0,5.424281,1.721152,0.000496, + 0.027992,0.999608,0,5.588763,1.573846,0.000686, + 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773, + -0.925873,-0.377836,0,5.424281,1.721152,0.000496, + 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773, + 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555, + 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555, + 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773, + 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905, + 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555, + 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905, + 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452, + 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452, + 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905, + 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666, + 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452, + 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666, + 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712, + 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712, + 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666, + 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899, + 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712, + 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899, + 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639, + 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639, + 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899, + 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687, + 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639, + 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687, + 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984, + 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984, + 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687, + 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802, + 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984, + 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802, + 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062, + 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062, + 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802, + 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883, + 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062, + 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883, + 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234, + 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765, + 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891, + 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848, + 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765, + 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848, + 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749, + 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072, + 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719, + 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833, + 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719, + 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072, + 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871, + 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719, + 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871, + 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238, + 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238, + 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871, + 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408, + 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238, + 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408, + 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054, + -0.026558,-0.999647,0,5.680007,1.510009,0.000786, + 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765, + 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773, + -0.026558,-0.999647,0,5.680007,1.510009,0.000786, + 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773, + 0.027992,0.999608,0,5.588763,1.573846,0.000686, + 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773, + 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765, + 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749, + 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773, + 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749, + 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905, + 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749, + 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833, + 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666, + 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749, + 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666, + 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905, + 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666, + 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833, + 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719, + 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666, + 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719, + 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899, + 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899, + 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719, + 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238, + 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899, + 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238, + 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687, + 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687, + 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238, + 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054, + 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687, + 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054, + 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802, + 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802, + 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054, + 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188, + 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802, + 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188, + 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883, + 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724, + 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682, + 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365, + 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724, + 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365, + 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261, + -0.016213,0.999869,0,5.908842,1.388968,0.001026, + 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098, + 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337, + -0.016213,0.999869,0,5.908842,1.388968,0.001026, + 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337, + 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682, + 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682, + 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337, + 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936, + 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682, + 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936, + 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365, + 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851, + 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946, + 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724, + 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851, + 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724, + 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891, + 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891, + 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724, + 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261, + 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891, + 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261, + 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848, + 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848, + 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261, + 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459, + 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848, + 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459, + 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072, + 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261, + 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365, + 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476, + 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261, + 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476, + 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459, + 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365, + 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936, + 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613, + 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365, + 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613, + 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476, + 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936, + 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098, + 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337, + 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121, + 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118, + -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324, + 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118, + 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121, + 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039, + 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118, + 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039, + -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324, + -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324, + 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039, + 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084, + -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324, + 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084, + 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648, + 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945, + 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545, + 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768, + 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945, + 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768, + 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505, + 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945, + 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505, + 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641, + 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197, + 0.223936,-0.919046,-0.324355,5.959462,1.157227,-0.187097, + 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648, + 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197, + 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648, + 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545, + 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545, + 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648, + 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084, + 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545, + 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084, + 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768, + 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945, + 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184, + 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197, + 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945, + 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197, + 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545, + 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408, + 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025, + 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184, + 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408, + 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184, + 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945, + 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871, + 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562, + 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025, + 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871, + 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025, + 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408, + 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072, + 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459, + 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562, + 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072, + 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562, + 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871, + 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085, + 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641, + 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586, + 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408, + 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945, + 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641, + 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408, + 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641, + 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085, + 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054, + 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408, + 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085, + 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054, + 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085, + 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994, + 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054, + 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994, + 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188, + 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188, + 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994, + 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371, + 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994, + 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085, + 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586, + 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994, + 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586, + 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696, + 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696, + 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586, + 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778, + 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696, + 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778, + 0.148862,-0.934725,-0.322692,5.580727,0.99933,-0.349867, + 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696, + 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371, + 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994, + 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696, + 0.148862,-0.934725,-0.322692,5.580727,0.99933,-0.349867, + 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257, + 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696, + 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257, + 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371, + 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883, + 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188, + 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371, + 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883, + 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371, + 0.114701,-0.691524,-0.713188,5.425352,1.035967,-0.34272, + 0.114701,-0.691524,-0.713188,5.425352,1.035967,-0.34272, + 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371, + 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823, + 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371, + 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257, + 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823, + 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257, + 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248, + 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823, + 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883, + 0.114701,-0.691524,-0.713188,5.425352,1.035967,-0.34272, + 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748, + 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748, + 0.114701,-0.691524,-0.713188,5.425352,1.035967,-0.34272, + 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823, + 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748, + 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823, + 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432, + 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823, + 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248, + 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884, + 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432, + 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823, + 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884, + 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248, + -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782, + 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613, + 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248, + 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613, + 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884, + -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782, + -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548, + -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335, + -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782, + -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335, + 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613, + -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548, + -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099, + 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813, + -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548, + 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813, + -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335, + 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234, + 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883, + 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748, + 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234, + 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748, + 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965, + 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965, + 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748, + 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432, + 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965, + 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432, + 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117, + 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432, + 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884, + 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177, + 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117, + 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432, + 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177, + 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117, + 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177, + -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473, + 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092, + 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059, + -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306, + 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092, + -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306, + -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362, + -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362, + -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306, + 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813, + -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362, + 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813, + -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099, + -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306, + 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059, + 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985, + -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306, + 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985, + -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139, + -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306, + -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139, + 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813, + 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985, + 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896, + -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139, + 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813, + -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139, + -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909, + 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813, + -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909, + -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335, + -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546, + 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565, + 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048, + -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546, + 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048, + -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842, + -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335, + -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909, + -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324, + -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335, + -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324, + 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613, + 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613, + -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324, + -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694, + 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613, + -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694, + 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884, + 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066, + 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565, + -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546, + -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139, + 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896, + -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798, + -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139, + -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798, + -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909, + -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909, + -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798, + 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066, + -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909, + 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066, + -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546, + -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324, + -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909, + -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546, + -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324, + -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546, + -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694, + 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177, + 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884, + -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694, + -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473, + 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177, + -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694, + -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473, + -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694, + -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348, + -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694, + -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546, + -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842, + -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694, + -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842, + -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348, + -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842, + 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048, + 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318, + -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842, + 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318, + -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344, + -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348, + -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842, + -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344, + -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348, + -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344, + -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771, + -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393, + -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771, + -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344, + -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393, + -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344, + -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296, + -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344, + 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318, + 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098, + -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344, + 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098, + -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296, + -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273, + -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473, + -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348, + -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273, + -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348, + -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771, + -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801, + -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273, + -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771, + -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801, + -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771, + -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393, + 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562, + 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965, + 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117, + 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562, + 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117, + 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567, + 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117, + -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473, + -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273, + 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117, + -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273, + 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567, + 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883, + 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149, + 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562, + 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883, + 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562, + 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421, + 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421, + 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562, + 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567, + 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421, + 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567, + 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082, + 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082, + 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567, + -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273, + 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082, + -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273, + -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801, + -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034, + 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883, + 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421, + -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034, + 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421, + 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484, + 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484, + 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421, + 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082, + 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484, + 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082, + 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491, + 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491, + 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082, + -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801, + 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491, + -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801, + -0.062739,0.996071,-0.062495,4.416475,0.921264,-0.458839, + -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517, + -0.062739,0.996071,-0.062495,4.416475,0.921264,-0.458839, + -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855, + -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517, + -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855, + -0.081906,0.996619,0.006487,4.297891,0.911506,-0.447987, + -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296, + 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098, + 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013, + -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296, + 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013, + 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651, + -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393, + -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296, + 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651, + -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393, + 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651, + 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212, + -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855, + -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393, + 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212, + -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855, + 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212, + -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873, + -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855, + -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873, + -0.081906,0.996619,0.006487,4.297891,0.911506,-0.447987, + -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855, + -0.062739,0.996071,-0.062495,4.416475,0.921264,-0.458839, + -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801, + -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855, + -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801, + -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393, + 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431, + 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484, + 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491, + 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431, + 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491, + 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581, + 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342, + -0.081906,0.996619,0.006487,4.297891,0.911506,-0.447987, + -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873, + 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342, + 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819, + -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517, + 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342, + -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517, + -0.081906,0.996619,0.006487,4.297891,0.911506,-0.447987, + 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406, + 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988, + 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819, + 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406, + 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819, + 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342, + -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517, + 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491, + -0.062739,0.996071,-0.062495,4.416475,0.921264,-0.458839, + 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819, + 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581, + 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491, + 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819, + 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491, + -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517, + 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988, + 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596, + 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581, + 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988, + 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581, + 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819, + 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596, + 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485, + 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431, + 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596, + 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431, + 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581, + 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485, + -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888, + 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892, + 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485, + 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892, + 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431, + 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944, + -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661, + -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888, + 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944, + -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888, + 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485, + 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388, + 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666, + -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661, + 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388, + -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661, + 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944, + 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242, + 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743, + 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666, + 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242, + 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666, + 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388, + -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946, + 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388, + 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944, + -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946, + 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944, + 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409, + 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409, + 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944, + 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485, + 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409, + 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485, + 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596, + 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188, + 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409, + 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596, + 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188, + 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596, + 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988, + 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997, + 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188, + 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988, + 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997, + 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988, + 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406, + 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765, + -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946, + 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409, + 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765, + 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409, + 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188, + 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436, + 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765, + 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188, + 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436, + 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188, + 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997, + -0.965284,-0.261201,0,4.747988,2.300163,-0.000276, + -0.989689,-0.143234,0,4.912303,2.162645,-0.00009, + -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781, + -0.965284,-0.261201,0,4.747988,2.300163,-0.000276, + -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781, + 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787, + -0.941169,-0.337937,0,5.04969,2.032731,0.000071, + -0.998597,-0.052951,0,5.177545,1.932323,0.000214, + 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993, + -0.026558,-0.999647,0,5.680007,1.510009,0.000786, + 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851, + 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891, + -0.026558,-0.999647,0,5.680007,1.510009,0.000786, + 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891, + 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765, + 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946, + -0.016213,0.999869,0,5.908842,1.388968,0.001026, + 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682, + 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946, + 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682, + 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724, + 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317, + -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745, + 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603, + 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317, + 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603, + 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255, + 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917, + 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317, + 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255, + 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917, + 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255, + 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164, + 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891, + 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917, + 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164, + 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891, + 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164, + 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894, + -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844, + 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863, + -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745, + -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844, + -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745, + 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317, + -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164, + -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844, + 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317, + -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164, + 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317, + 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917, + -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011, + -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164, + 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917, + -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011, + 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917, + 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891, + -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597, + -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011, + 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891, + -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597, + 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891, + -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892, + -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892, + 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891, + 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894, + -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892, + 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894, + -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972, + 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521, + -0.965284,-0.261201,0,4.747988,2.300163,-0.000276, + 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117, + 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255, + 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603, + 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521, + 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255, + 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521, + 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117, + 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255, + 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117, + 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196, + 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164, + 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255, + 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196, + 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894, + 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164, + 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196, + 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347, + -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972, + 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894, + 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347, + 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894, + 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196, + 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347, + 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196, + 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764, + -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987, + -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793, + -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193, + -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987, + -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193, + -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392, + -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282, + -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987, + -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392, + -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282, + -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392, + -0.877603,-0.025307,-0.47872,4.035753,2.399538,-0.343957, + -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844, + 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168, + 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951, + -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844, + 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951, + 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863, + -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164, + -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856, + 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168, + -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164, + 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168, + -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844, + -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011, + -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396, + -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856, + -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011, + -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856, + -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164, + -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597, + -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845, + -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396, + -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597, + -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396, + -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011, + -0.877603,-0.025307,-0.47872,4.035753,2.399538,-0.343957, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385, + -0.877603,-0.025307,-0.47872,4.035753,2.399538,-0.343957, + -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385, + -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282, + 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987, + -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008, + 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987, + 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951, + 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168, + 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987, + 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168, + -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385, + -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385, + 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168, + -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856, + -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385, + -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856, + -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282, + -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282, + -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856, + -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396, + -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282, + -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396, + -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987, + -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987, + -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396, + -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845, + -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987, + -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845, + -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793, + 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159, + -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + -0.877603,-0.025307,-0.47872,4.035753,2.399538,-0.343957, + -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392, + -0.981668,0.173926,0.077954,4.025364,2.3593,-0.402597, + -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254, + -0.981668,0.173926,0.077954,4.025364,2.3593,-0.402597, + -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747, + -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747, + -0.981668,0.173926,0.077954,4.025364,2.3593,-0.402597, + -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338, + -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747, + -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338, + -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747, + -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643, + -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468, + -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067, + -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356, + -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392, + -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193, + -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471, + -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392, + -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471, + -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338, + -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392, + -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338, + -0.981668,0.173926,0.077954,4.025364,2.3593,-0.402597, + -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338, + -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955, + -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149, + -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338, + -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149, + -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643, + -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643, + -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149, + -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683, + -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643, + -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683, + -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468, + -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468, + -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683, + -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589, + -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468, + -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589, + -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067, + -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955, + -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372, + -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209, + -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955, + -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209, + -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149, + -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683, + -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149, + -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209, + -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683, + -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209, + -0.916648,-0.2944,-0.270344,3.990744,2.205448,-0.710795, + -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683, + -0.916648,-0.2944,-0.270344,3.990744,2.205448,-0.710795, + -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536, + -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683, + -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536, + -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589, + -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113, + -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338, + -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471, + -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113, + -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338, + -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113, + -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955, + -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113, + -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927, + -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372, + -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113, + -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372, + -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955, + -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927, + -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749, + -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972, + -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927, + -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972, + -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372, + -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372, + -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972, + -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501, + -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372, + -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501, + -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209, + -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209, + -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501, + -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219, + -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209, + -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219, + -0.916648,-0.2944,-0.270344,3.990744,2.205448,-0.710795, + -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749, + -0.841909,-0.49598,-0.212588,4.273005,2.310529,-0.762172, + 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764, + -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749, + 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764, + -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972, + -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972, + 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764, + 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735, + -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972, + 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735, + -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501, + -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501, + 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735, + 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152, + -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501, + 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152, + -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219, + 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382, + 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862, + -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196, + 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382, + -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196, + -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986, + 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735, + 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764, + -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471, + 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735, + -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471, + 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862, + 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862, + -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471, + -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196, + 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764, + -0.841909,-0.49598,-0.212588,4.273005,2.310529,-0.762172, + -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202, + 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764, + -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202, + -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799, + 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764, + -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799, + -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471, + -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471, + -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799, + -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575, + -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471, + -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575, + -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196, + -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196, + -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575, + -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846, + -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196, + -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846, + -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986, + -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986, + -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846, + -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032, + -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986, + -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032, + -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054, + -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054, + -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032, + 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253, + 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152, + 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735, + 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862, + 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152, + 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862, + 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108, + 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108, + 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862, + 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382, + -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536, + -0.916648,-0.2944,-0.270344,3.990744,2.205448,-0.710795, + -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219, + -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536, + -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219, + 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086, + 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086, + -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219, + 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152, + 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086, + 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152, + 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284, + 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284, + 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152, + 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108, + 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284, + 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108, + -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365, + -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365, + 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108, + 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382, + 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382, + -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986, + -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054, + 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561, + -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365, + 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382, + 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561, + 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382, + 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099, + 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099, + 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382, + -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054, + -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054, + 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253, + 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093, + -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737, + 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099, + -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054, + -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737, + -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054, + 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093, + 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099, + -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737, + -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002, + 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099, + -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002, + 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561, + 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846, + 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561, + -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002, + 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846, + -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002, + -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512, + 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846, + 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284, + -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365, + 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846, + -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365, + 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561, + 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563, + -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356, + -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067, + 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563, + -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067, + -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291, + -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291, + -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067, + -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589, + -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291, + -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589, + -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809, + 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563, + -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087, + -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291, + -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086, + 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284, + 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846, + 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086, + 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846, + -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654, + -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654, + -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536, + 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086, + -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809, + -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589, + -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536, + -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809, + -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536, + -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654, + -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809, + -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654, + -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654, + 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846, + -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512, + -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654, + -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512, + -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764, + 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332, + -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065, + 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332, + 0.159882,0.223439,0.961516,4.3427,2.112281,-0.516692, + -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065, + 0.159882,0.223439,0.961516,4.3427,2.112281,-0.516692, + 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407, + -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332, + 0.159882,0.223439,0.961516,4.3427,2.112281,-0.516692, + 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332, + 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794, + 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407, + 0.159882,0.223439,0.961516,4.3427,2.112281,-0.516692, + 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794, + 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253, + -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032, + 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879, + 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253, + 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879, + 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163, + 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693, + 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031, + 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196, + 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693, + 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196, + 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259, + 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031, + 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534, + 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196, + -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032, + -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846, + 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646, + -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032, + 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646, + 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879, + 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879, + 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646, + 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043, + 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879, + 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043, + 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693, + 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043, + 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454, + 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031, + 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043, + 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031, + 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693, + 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065, + 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075, + -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065, + -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494, + -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016, + 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075, + -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494, + -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016, + -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494, + -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258, + -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927, + -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749, + -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075, + -0.841909,-0.49598,-0.212588,4.273005,2.310529,-0.762172, + -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749, + 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075, + -0.841909,-0.49598,-0.212588,4.273005,2.310529,-0.762172, + 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075, + -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202, + -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494, + -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065, + 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407, + -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202, + 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075, + -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016, + -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202, + -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016, + 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894, + 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413, + -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799, + -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202, + 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413, + -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202, + 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894, + 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312, + -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575, + -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799, + 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312, + -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799, + 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413, + 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312, + 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646, + -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846, + 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312, + -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846, + -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575, + 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043, + 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646, + 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312, + 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043, + 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312, + 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444, + 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444, + 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312, + 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413, + 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444, + 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413, + 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464, + 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413, + 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894, + -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459, + 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413, + -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459, + 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464, + 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894, + -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016, + -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693, + 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894, + -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693, + -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459, + 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454, + 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043, + 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444, + 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454, + 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444, + 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464, + 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454, + 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464, + 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137, + -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258, + -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494, + 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407, + -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258, + 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407, + -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351, + -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693, + -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016, + -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258, + -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693, + -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258, + -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019, + 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137, + 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464, + -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459, + 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137, + -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459, + 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752, + 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752, + -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459, + -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693, + 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752, + -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693, + 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433, + 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433, + -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693, + -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019, + 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433, + -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019, + 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668, + 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759, + 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433, + 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668, + 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567, + 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752, + 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433, + 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567, + 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433, + 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759, + 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552, + 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137, + 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752, + 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552, + 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752, + 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567, + 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046, + 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454, + 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137, + 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046, + 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137, + 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552, + 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534, + 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031, + 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454, + 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534, + 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454, + 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046, + 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856, + 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759, + 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668, + 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178, + 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567, + 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759, + 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178, + 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759, + 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856, + 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252, + 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552, + 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567, + 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252, + 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567, + 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178, + 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323, + 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046, + 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552, + 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323, + 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552, + 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252, + 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323, + 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534, + 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046, + 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024, + 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178, + 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856, + 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024, + 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856, + 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197, + -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386, + 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252, + 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178, + -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386, + 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178, + 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024, + -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135, + 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323, + 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252, + -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135, + 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252, + -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386, + 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908, + 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534, + 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323, + 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908, + 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323, + -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135, + 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949, + 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196, + 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534, + 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949, + 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534, + 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908, + 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949, + 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259, + 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196, + -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351, + 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242, + 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362, + -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946, + 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362, + 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242, + -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946, + 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242, + 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388, + 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242, + -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351, + 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407, + 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242, + 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407, + 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743, + 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743, + 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407, + 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794, + 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743, + 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794, + 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888, + 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362, + 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765, + 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362, + -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946, + -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019, + -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258, + -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787, + -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258, + -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851, + -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787, + -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787, + -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851, + -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641, + 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668, + -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019, + -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787, + 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856, + 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668, + -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787, + 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856, + -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787, + 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197, + -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851, + -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258, + -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351, + -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851, + -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351, + 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362, + -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851, + 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362, + -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641, + 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197, + -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787, + -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324, + 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648, + -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334, + 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648, + 0.223936,-0.919046,-0.324355,5.959462,1.157227,-0.187097, + 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778, + 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586, + 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641, + 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778, + 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641, + 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505, + 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833, + 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749, + 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848, + 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833, + 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848, + 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072, + 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234, + 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965, + 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562, + 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234, + 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562, + 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149, + 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484, + 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431, + 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892, + 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484, + 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892, + -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034, + -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048, + 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518, + 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307, + -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048, + 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307, + 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165, + 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025, + 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913, + 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358, + 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025, + 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095, + 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105, + 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857, + 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853, + 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206, + 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857, + 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206, + 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466, + 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134, + 0.813293,0.022433,-0.581422,4.788476,2.028047,-0.608619, + 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312, + 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619, + 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761, + 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206, + 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205, + 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724, + 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949, + 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713, + 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853, + 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997, + -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987, + 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332, + 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997, + 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332, + 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057, + 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974, + 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291, + 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516, + 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974, + 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516, + 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793, + 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093, + 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253, + 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163, + 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093, + 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163, + 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259, + 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093, + 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259, + 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949, + 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197, + -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046, + 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024, + 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197, + -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046, + 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024, + -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046, + -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512, + -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386, + 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024, + -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512, + -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386, + -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512, + -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002, + -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135, + -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386, + -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002, + -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135, + -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002, + -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737, + 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908, + -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135, + -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737, + 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908, + -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737, + 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093, + 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949, + 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908, + 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093, + -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765, + -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087, + 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765, + 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436, + -0.926486,-0.356041,-0.121897,4.126565,0.642027,0, + -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461, + 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651, + -0.926486,-0.356041,-0.121897,4.126565,0.642027,0, + 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651, + 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013, + -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337, + -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087, + 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436, + -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483, + -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337, + 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436, + -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483, + 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436, + 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997, + -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537, + -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483, + 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997, + -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537, + 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997, + 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406, + -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922, + -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537, + 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406, + -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922, + 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406, + 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342, + -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813, + -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922, + 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342, + -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813, + 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342, + -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873, + -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001, + -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813, + -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873, + -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001, + -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873, + 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212, + -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461, + -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001, + 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212, + -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461, + 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212, + 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651, + -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193, + -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051, + -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049, + 0.431966,-0.771434,-0.46722,3.71636,2.343387,0, + 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159, + -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049, + 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159, + -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341, + -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193, + -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049, + -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341, + 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563, + -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087, + -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337, + 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563, + -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337, + -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443, + -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356, + 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563, + -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443, + -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356, + -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443, + -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051, + -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964, + -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356, + -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051, + -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641, + 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362, + -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435, + -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269, + -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745, + -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796, + -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269, + -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796, + 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425, + -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796, + -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396, + -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263, + -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796, + -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263, + 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425, + -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423, + -0.176655,-0.950799,-0.254508,-1.108758,-1.770749,-0.473033, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423, + -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747, + -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649, + -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399, + -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541, + -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922, + -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399, + -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922, + -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423, + 0.072535,0.997366,0,-3.392806,1.769365,0, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095, + 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085, + 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085, + -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309, + 0.072535,0.997366,0,-3.392806,1.769365,0, + 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693, + 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259, + 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163, + 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693, + 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163, + 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879, + 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737, + 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672, + 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516, + 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737, + 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516, + 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572, + 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672, + -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546, + 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723, + 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672, + 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723, + 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516, + 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091, + 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105, + 0.09853,0.626571,0.773111,2.292449,-0.871852,0.8824, + 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091, + 0.09853,0.626571,0.773111,2.292449,-0.871852,0.8824, + 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826, + 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445, + 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475, + 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105, + 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445, + 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105, + 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091, + 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039, + 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475, + 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445, + 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445, + 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614, + 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166, + 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445, + 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166, + 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039, + 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091, + 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367, + 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614, + 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091, + 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614, + 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445, + 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826, + 0.424286,-0.254348,0.869073,2.180012,-1.130557,0.821812, + 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367, + 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826, + 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367, + 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091, + 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941, + 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189, + 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367, + 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941, + 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367, + 0.424286,-0.254348,0.869073,2.180012,-1.130557,0.821812, + 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011, + 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863, + 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189, + 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011, + 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189, + 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941, + 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366, + 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863, + 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011, + 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866, + 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822, + 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863, + 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866, + 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863, + 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366, + 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156, + 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822, + 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866, + 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238, + 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822, + 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156, + 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018, + 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057, + 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822, + 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018, + 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822, + 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238, + 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189, + 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863, + 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822, + 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189, + 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822, + 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057, + 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057, + 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614, + 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367, + 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057, + 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367, + 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189, + 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018, + 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166, + 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614, + 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018, + 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614, + 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057, + 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493, + 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039, + 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166, + 0.206788,0.399922,0.892917,2.757946,-1.099958,0.471684, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018, + 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018, + 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238, + 0.206788,0.399922,0.892917,2.757946,-1.099958,0.471684, + 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238, + 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328, + 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301, + 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238, + 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301, + 0.206788,0.399922,0.892917,2.757946,-1.099958,0.471684, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.206788,0.399922,0.892917,2.757946,-1.099958,0.471684, + 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301, + 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604, + 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328, + 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238, + 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156, + 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149, + 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604, + 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156, + 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604, + 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238, + 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866, + 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275, + 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149, + 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866, + 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149, + 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156, + 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169, + 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275, + 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866, + 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366, + 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127, + 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169, + 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366, + 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169, + 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866, + 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011, + 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997, + 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127, + 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011, + 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127, + 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366, + 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301, + 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054, + 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743, + 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301, + 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328, + 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049, + 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054, + 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328, + 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054, + 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301, + 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604, + 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013, + 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049, + 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604, + 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049, + 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328, + 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149, + 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378, + 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013, + 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275, + 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631, + 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378, + 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275, + 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378, + 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149, + 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169, + 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972, + 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631, + 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169, + 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631, + 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275, + 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127, + 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143, + 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972, + 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127, + 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972, + 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169, + 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997, + 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832, + 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143, + 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997, + 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143, + 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127, + 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054, + 0.820584,-0.571526,0,2.931756,-1.129655,0, + -0.334515,0.94239,0,2.970902,-0.959664,0, + 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054, + -0.334515,0.94239,0,2.970902,-0.959664,0, + 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743, + 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049, + -0.255632,0.966774,0,2.896234,-1.31956,0, + 0.820584,-0.571526,0,2.931756,-1.129655,0, + 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049, + 0.820584,-0.571526,0,2.931756,-1.129655,0, + 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054, + 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013, + 0.826305,-0.563222,0,2.821376,-1.431534,0, + -0.255632,0.966774,0,2.896234,-1.31956,0, + 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013, + -0.255632,0.966774,0,2.896234,-1.31956,0, + 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049, + 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378, + -0.133012,0.991114,0,2.706963,-1.528854,0, + 0.826305,-0.563222,0,2.821376,-1.431534,0, + 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378, + 0.826305,-0.563222,0,2.821376,-1.431534,0, + 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013, + 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631, + 0.815341,-0.578981,0,2.534227,-1.617078,0, + -0.133012,0.991114,0,2.706963,-1.528854,0, + 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631, + -0.133012,0.991114,0,2.706963,-1.528854,0, + 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378, + 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972, + -0.144073,0.989567,0,2.348182,-1.624595,0, + 0.815341,-0.578981,0,2.534227,-1.617078,0, + 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972, + 0.815341,-0.578981,0,2.534227,-1.617078,0, + 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631, + 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143, + -0.073566,0.99729,0,2.167167,-1.596326,0, + -0.144073,0.989567,0,2.348182,-1.624595,0, + 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143, + -0.144073,0.989567,0,2.348182,-1.624595,0, + 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972, + 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832, + -0.034649,0.9994,0,1.920432,-1.567396,0, + -0.073566,0.99729,0,2.167167,-1.596326,0, + 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832, + -0.073566,0.99729,0,2.167167,-1.596326,0, + 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143, + 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789, + 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345, + 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968, + 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968, + 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964, + 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789, + 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191, + 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964, + 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968, + 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968, + 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597, + 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191, + 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975, + 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597, + 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968, + 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485, + 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475, + 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039, + 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491, + 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475, + 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485, + 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485, + 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975, + 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491, + 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493, + 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191, + 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597, + 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493, + 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597, + 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191, + 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493, + 0.097816,-0.016117,0.995074,2.993075,-0.708434,0.342596, + 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743, + 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741, + 0.097816,-0.016117,0.995074,2.993075,-0.708434,0.342596, + -0.334515,0.94239,0,2.970902,-0.959664,0, + 0.942695,-0.333657,0,3.065544,-0.788768,0, + 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741, + -0.334515,0.94239,0,2.970902,-0.959664,0, + 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741, + 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743, + -0.476715,0.879058,0,3.118124,-0.703925,0, + 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602, + 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741, + -0.476715,0.879058,0,3.118124,-0.703925,0, + 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741, + 0.942695,-0.333657,0,3.065544,-0.788768,0, + 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166, + 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166, + 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195, + 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493, + 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597, + 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975, + 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485, + 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597, + 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485, + 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039, + 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191, + 0.097816,-0.016117,0.995074,2.993075,-0.708434,0.342596, + 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931, + 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191, + 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931, + 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964, + 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741, + 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602, + 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931, + 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741, + 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931, + 0.097816,-0.016117,0.995074,2.993075,-0.708434,0.342596, + -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188, + -0.942755,-0.29871,-0.148273,-1.226563,-1.655159,0.687343, + -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242, + -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188, + -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954, + -0.942755,-0.29871,-0.148273,-1.226563,-1.655159,0.687343, + -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188, + 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922, + 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154, + -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242, + 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922, + -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242, + -0.942755,-0.29871,-0.148273,-1.226563,-1.655159,0.687343, + -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242, + 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857, + 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908, + 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511, + 0.031476,0.864418,0.501787,-0.564074,-1.789401,0.803191, + 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556, + 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908, + -0.019419,-0.11596,0.993064,-0.422877,-1.7512,0.823423, + 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556, + 0.031476,0.864418,0.501787,-0.564074,-1.789401,0.803191, + 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023, + -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082, + 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556, + 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023, + 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556, + -0.019419,-0.11596,0.993064,-0.422877,-1.7512,0.823423, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924, + 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023, + -0.019419,-0.11596,0.993064,-0.422877,-1.7512,0.823423, + -0.019419,-0.11596,0.993064,-0.422877,-1.7512,0.823423, + 0.031476,0.864418,0.501787,-0.564074,-1.789401,0.803191, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + 0.031476,0.864418,0.501787,-0.564074,-1.789401,0.803191, + 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511, + -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908, + -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857, + -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242, + 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154, + -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033, + -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747, + 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154, + -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033, + 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154, + 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922, + 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922, + -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423, + -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033, + -0.942755,-0.29871,-0.148273,-1.226563,-1.655159,0.687343, + -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954, + 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922, + -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541, + 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922, + -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954, + -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423, + 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399, + -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823, + -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649, + -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423, + -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823, + 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747, + 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007, + -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747, + -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649, + 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324, + 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324, + -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825, + 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007, + -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961, + -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392, + 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924, + -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961, + 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924, + 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324, + 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324, + -0.084764,-0.996401,0,-0.155114,-1.828285,0, + 0.226963,-0.973903,0,0.44655,-1.67295,0, + 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324, + 0.226963,-0.973903,0,0.44655,-1.67295,0, + -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961, + 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007, + 0.854132,-0.520056,0,-0.530369,-1.860806,0, + -0.084764,-0.996401,0,-0.155114,-1.828285,0, + 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007, + -0.084764,-0.996401,0,-0.155114,-1.828285,0, + 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324, + -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649, + 0.113474,-0.993541,0,-0.956007,-1.825728,0, + 0.854132,-0.520056,0,-0.530369,-1.860806,0, + -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649, + 0.854132,-0.520056,0,-0.530369,-1.860806,0, + 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007, + -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823, + 0.011286,0.999936,0,-1.395728,-1.723811,0, + 0.113474,-0.993541,0,-0.956007,-1.825728,0, + -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823, + 0.113474,-0.993541,0,-0.956007,-1.825728,0, + -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649, + -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747, + -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857, + 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154, + -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857, + -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747, + 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511, + -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058, + -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461, + 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796, + -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058, + 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796, + -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396, + -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561, + -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089, + -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902, + -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561, + -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902, + -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117, + -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225, + 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553, + -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089, + -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225, + -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089, + -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561, + -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751, + -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058, + -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396, + 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111, + 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851, + -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751, + -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096, + 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851, + 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111, + 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029, + 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648, + -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225, + 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029, + -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225, + -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561, + -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902, + -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313, + 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966, + -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902, + 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966, + -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117, + 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966, + -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313, + -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461, + 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966, + -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461, + -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058, + -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794, + 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111, + -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751, + -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794, + -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751, + -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263, + -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455, + -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096, + 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111, + -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455, + 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111, + -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794, + -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621, + -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455, + -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794, + -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621, + -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794, + -0.326843,-0.236651,-0.91497,1.741854,-3.114181,0.700705, + 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575, + -0.326843,-0.236651,-0.91497,1.741854,-3.114181,0.700705, + -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794, + 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575, + -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794, + -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263, + -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263, + -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425, + 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866, + -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263, + 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866, + 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575, + -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117, + -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237, + 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029, + -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117, + 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029, + -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561, + -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117, + 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966, + 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338, + -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117, + 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338, + -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237, + -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058, + 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129, + 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338, + -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058, + 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338, + 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966, + -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096, + 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129, + 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851, + 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851, + 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129, + -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058, + 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851, + -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058, + -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751, + -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396, + -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263, + -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751, + -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654, + -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517, + -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225, + -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654, + -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225, + 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648, + -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988, + -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621, + -0.326843,-0.236651,-0.91497,1.741854,-3.114181,0.700705, + 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575, + -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988, + -0.326843,-0.236651,-0.91497,1.741854,-3.114181,0.700705, + -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988, + 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118, + -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855, + -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988, + -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855, + -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621, + 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118, + -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517, + -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654, + 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118, + -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654, + -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855, + 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009, + -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999, + 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118, + 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009, + 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118, + -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988, + -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496, + -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517, + 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118, + -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496, + 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118, + -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999, + 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866, + 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009, + -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988, + 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866, + -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988, + 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575, + 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048, + -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547, + 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313, + 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659, + -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563, + 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313, + -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563, + 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048, + -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139, + 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351, + 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659, + -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139, + 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659, + 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313, + -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812, + 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034, + 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351, + -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812, + 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351, + -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139, + -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926, + -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832, + 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034, + -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926, + 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034, + -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472, + 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104, + 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076, + 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076, + 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015, + -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459, + 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076, + -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507, + 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758, + 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409, + -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507, + 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409, + 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834, + -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497, + -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796, + 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758, + -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497, + 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758, + -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507, + 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351, + 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034, + -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796, + 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351, + -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796, + -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497, + -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796, + 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366, + 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758, + 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034, + -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832, + 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366, + 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034, + 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366, + -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796, + 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758, + 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878, + 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627, + 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758, + 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627, + 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409, + 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366, + -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328, + 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878, + 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366, + 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878, + 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758, + -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832, + -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625, + -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328, + -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832, + -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328, + 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366, + 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878, + -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348, + -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211, + 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878, + -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211, + 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627, + -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328, + -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974, + -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348, + -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328, + -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348, + 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878, + -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625, + 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104, + -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974, + -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625, + -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974, + -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328, + -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279, + -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507, + 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834, + -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279, + 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834, + -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148, + -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836, + -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497, + -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507, + -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836, + -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507, + -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279, + 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659, + 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351, + -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497, + 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659, + -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497, + -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836, + -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563, + 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659, + -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812, + -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836, + 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353, + -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812, + -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836, + -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812, + 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659, + -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279, + 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433, + 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353, + -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279, + 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353, + -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836, + -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148, + -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772, + 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433, + -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148, + 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433, + -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279, + 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353, + -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208, + -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572, + 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353, + -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572, + -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812, + 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433, + -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208, + 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353, + -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994, + -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432, + -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208, + -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994, + -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208, + 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433, + -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208, + -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432, + -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516, + -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208, + -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516, + -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572, + -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432, + 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713, + 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723, + -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432, + 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723, + -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516, + -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994, + 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588, + 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713, + -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994, + 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713, + -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432, + 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639, + 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262, + 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588, + 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639, + 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588, + -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994, + 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034, + 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445, + 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445, + 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546, + 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723, + 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445, + 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723, + 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034, + 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713, + 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898, + 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034, + 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713, + 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034, + 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723, + 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588, + 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572, + 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898, + 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588, + 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898, + 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713, + 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262, + 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657, + 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572, + 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262, + 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572, + 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588, + 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898, + -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667, + 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472, + 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898, + 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472, + 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034, + 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572, + 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813, + -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667, + 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572, + -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667, + 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898, + 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657, + 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785, + 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813, + 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657, + 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813, + 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572, + 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813, + -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348, + -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974, + 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813, + -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974, + -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667, + 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785, + -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211, + -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348, + 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785, + -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348, + 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813, + -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667, + -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974, + 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104, + -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667, + 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104, + 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472, + -0.508357,0.250892,0.823787,-3.342096,-1.533989,0.921628, + 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076, + 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104, + -0.508357,0.250892,0.823787,-3.342096,-1.533989,0.921628, + 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104, + -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625, + -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284, + 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145, + 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743, + -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284, + 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743, + 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594, + -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712, + 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043, + 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145, + -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712, + 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145, + -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284, + -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853, + 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093, + 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043, + -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853, + 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043, + -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712, + -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957, + 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151, + 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093, + -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957, + 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093, + -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853, + 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796, + -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461, + -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334, + 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796, + -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334, + 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745, + 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745, + -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334, + -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296, + 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745, + -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296, + -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365, + -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365, + -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296, + -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354, + -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365, + -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354, + -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391, + -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391, + -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354, + -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092, + -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391, + -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092, + -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823, + -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823, + -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092, + 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347, + -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823, + 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347, + -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419, + 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269, + 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745, + -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365, + 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269, + -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365, + 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969, + 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969, + -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365, + -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391, + 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969, + -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391, + 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353, + 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353, + -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391, + -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823, + 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353, + -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823, + 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359, + 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359, + -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823, + -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419, + 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359, + -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419, + 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447, + 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773, + 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269, + 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969, + 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773, + 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969, + 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696, + 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696, + 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969, + 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353, + 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696, + 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353, + 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432, + 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432, + 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353, + 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359, + 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432, + 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359, + 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576, + 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576, + 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359, + 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447, + 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576, + 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447, + 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758, + 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428, + 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773, + 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696, + 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428, + 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696, + 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318, + 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318, + 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696, + 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432, + 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318, + 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432, + 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565, + 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565, + 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432, + 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576, + 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565, + 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576, + 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655, + 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655, + 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576, + 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758, + 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655, + 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758, + 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185, + -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089, + 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553, + 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594, + -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089, + 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594, + 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743, + -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902, + -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089, + 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743, + -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902, + 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743, + -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601, + 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093, + 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151, + -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843, + 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093, + -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843, + -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454, + 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043, + 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093, + -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454, + 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043, + -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454, + 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275, + -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601, + 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743, + 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145, + -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601, + 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145, + -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887, + 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145, + 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043, + 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275, + 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145, + 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275, + -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887, + -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313, + -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593, + -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334, + -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313, + -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334, + -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461, + -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313, + -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902, + -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601, + -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313, + -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601, + -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593, + -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593, + -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198, + 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347, + -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593, + 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347, + -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092, + -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351, + -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593, + -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092, + -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351, + -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092, + -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354, + -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652, + -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351, + -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354, + -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652, + -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354, + -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296, + -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593, + -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652, + -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296, + -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593, + -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296, + -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334, + -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454, + -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843, + -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198, + -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454, + -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198, + -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593, + 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275, + -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454, + -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593, + 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275, + -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593, + -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351, + -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887, + 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275, + -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351, + -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887, + -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351, + -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652, + -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601, + -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887, + -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652, + -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601, + -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652, + -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593, + 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866, + 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773, + 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428, + 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866, + 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428, + 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009, + 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655, + 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185, + 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932, + 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655, + 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932, + 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098, + 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565, + 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655, + 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098, + 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565, + 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098, + 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841, + 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318, + 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565, + 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841, + 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318, + 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841, + 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494, + 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866, + -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425, + 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269, + 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866, + 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269, + 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773, + -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517, + -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496, + 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553, + -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517, + 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553, + -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225, + 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587, + -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496, + -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999, + 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587, + -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999, + 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347, + -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678, + 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587, + 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347, + -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678, + 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347, + 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494, + -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999, + 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009, + 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428, + -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999, + 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428, + 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347, + 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428, + 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318, + 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494, + 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428, + 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494, + 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347, + 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553, + -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496, + 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587, + 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553, + 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587, + 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594, + 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098, + 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932, + -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861, + 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098, + -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861, + 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277, + 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841, + 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098, + 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277, + 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841, + 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277, + 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724, + 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277, + -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861, + -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957, + 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277, + -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957, + -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853, + 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724, + 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277, + -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853, + 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724, + -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853, + -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712, + -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678, + 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724, + -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712, + -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678, + -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712, + -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284, + 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587, + -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678, + -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284, + 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587, + -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284, + 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594, + 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011, + 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941, + -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254, + 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011, + -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254, + -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657, + -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657, + -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254, + -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763, + -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657, + -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763, + 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192, + 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192, + -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763, + 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716, + 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192, + 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716, + -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951, + -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951, + 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716, + 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317, + -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951, + 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317, + 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277, + 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277, + 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317, + 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142, + 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277, + 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142, + 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731, + 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731, + 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142, + -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258, + 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731, + -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258, + -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516, + -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516, + -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258, + 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924, + -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516, + 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924, + 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569, + 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569, + 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924, + -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204, + 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569, + -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204, + 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733, + 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941, + 0.424286,-0.254348,0.869073,2.180012,-1.130557,0.821812, + -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416, + 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941, + -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416, + -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254, + -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254, + -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416, + -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541, + -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254, + -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541, + -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763, + -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763, + -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541, + -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465, + -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763, + -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465, + 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716, + 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716, + -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465, + -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408, + 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716, + -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408, + 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317, + 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317, + -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408, + -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773, + 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317, + -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773, + 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142, + 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142, + -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773, + -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248, + 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142, + -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248, + -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258, + -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258, + -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248, + 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069, + -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258, + 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069, + 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924, + 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924, + 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069, + 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838, + 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924, + 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838, + -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204, + -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861, + 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832, + 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997, + -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861, + 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997, + -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957, + 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277, + 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731, + 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347, + 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277, + 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347, + -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198, + -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951, + 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277, + -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198, + -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951, + -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198, + -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843, + 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192, + -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951, + -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843, + 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192, + -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843, + 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151, + -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657, + 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192, + 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151, + -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657, + 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151, + -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957, + 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997, + 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011, + -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657, + 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997, + -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657, + -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957, + 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826, + -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137, + -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416, + 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826, + -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416, + 0.424286,-0.254348,0.869073,2.180012,-1.130557,0.821812, + 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933, + -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968, + -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773, + 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933, + -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773, + -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408, + -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518, + 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933, + -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408, + -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518, + -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408, + -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465, + -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647, + -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518, + -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465, + -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647, + -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465, + -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541, + -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137, + -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647, + -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541, + -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137, + -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541, + -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416, + 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758, + 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447, + 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569, + 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758, + 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569, + 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733, + 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838, + 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069, + -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905, + 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838, + -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905, + -0.382074,-0.25681,-0.887732,1.337875,-0.945716,1.021299, + -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419, + 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347, + 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731, + -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419, + 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731, + -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516, + 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447, + -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419, + -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516, + 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447, + -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516, + 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569, + -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248, + -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773, + -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968, + -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248, + -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968, + -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597, + 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069, + -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248, + -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597, + 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069, + -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597, + -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905, + -0.861251,0.383698,-0.333202,3.247406,2.073333,0, + 0.889638,-0.392482,0.233458,2.985371,1.982663,0, + 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422, + -0.861251,0.383698,-0.333202,3.247406,2.073333,0, + 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422, + 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431, + 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431, + 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422, + 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838, + 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431, + 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838, + 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215, + 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215, + 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838, + 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337, + 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215, + 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337, + 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266, + 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266, + 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337, + 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863, + 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266, + 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863, + 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021, + 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021, + 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863, + 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228, + 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021, + 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228, + 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781, + 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781, + 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228, + 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438, + 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781, + 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438, + 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658, + 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658, + 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438, + 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122, + 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658, + 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122, + 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443, + 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443, + 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122, + 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434, + 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443, + 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434, + 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535, + 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535, + 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434, + 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575, + 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535, + 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575, + 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742, + 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742, + 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575, + 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685, + 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742, + 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685, + 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198, + 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198, + 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685, + 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362, + 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198, + 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362, + 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784, + 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784, + 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362, + 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015, + 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784, + 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015, + 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762, + 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762, + 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015, + 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589, + 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762, + 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589, + 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819, + 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819, + 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589, + 0.431966,-0.771434,0.46722,3.486028,-0.141683,0, + 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819, + 0.431966,-0.771434,0.46722,3.486028,-0.141683,0, + -0.910859,-0.100368,-0.400327,3.731689,0.186391,0, + 0.694153,-0.467999,0.546926,3.454971,2.169877,0, + 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662, + -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049, + 0.694153,-0.467999,0.546926,3.454971,2.169877,0, + -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049, + 0.431966,-0.771434,-0.46722,3.71636,2.343387,0, + 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586, + 0.338485,-0.103202,-0.935295,3.929251,0.411689,0, + -0.926486,-0.356041,-0.121897,4.126565,0.642027,0, + 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586, + -0.926486,-0.356041,-0.121897,4.126565,0.642027,0, + 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461, + 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365, + 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586, + 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461, + 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961, + 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365, + 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461, + 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961, + 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461, + 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001, + 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198, + 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961, + 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001, + 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198, + 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001, + 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813, + 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519, + 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198, + 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813, + 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519, + 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813, + 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922, + 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662, + 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519, + 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922, + 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662, + 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922, + 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537, + 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617, + 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662, + 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537, + 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617, + 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537, + 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483, + 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994, + 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617, + 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483, + 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994, + 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483, + 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337, + 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366, + 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994, + 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337, + 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366, + 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337, + 0.462789,0.48004,0.745243,3.814876,1.968416,0.443, + 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478, + 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366, + 0.462789,0.48004,0.745243,3.814876,1.968416,0.443, + 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478, + 0.462789,0.48004,0.745243,3.814876,1.968416,0.443, + 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051, + 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368, + 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478, + 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051, + 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368, + 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051, + 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193, + 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662, + 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368, + 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193, + 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662, + 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193, + -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049, + -0.560204,0.828355,-0.00034,3.33521,-0.375755,0, + -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349, + 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602, + -0.560204,0.828355,-0.00034,3.33521,-0.375755,0, + 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602, + -0.476715,0.879058,0,3.118124,-0.703925,0, + 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709, + -0.926486,-0.356041,0.121897,2.723503,1.898839,0, + 0.536218,-0.84408,0.000006,2.339597,1.807702,0, + 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709, + 0.536218,-0.84408,0.000006,2.339597,1.807702,0, + -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595, + 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046, + 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709, + -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595, + 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046, + -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595, + -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479, + 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829, + 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046, + -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479, + 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829, + -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479, + -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962, + 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399, + 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829, + -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962, + 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399, + -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962, + -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335, + 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465, + 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399, + -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335, + 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465, + -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335, + -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611, + 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058, + 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465, + -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611, + 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058, + -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611, + -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674, + 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193, + 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058, + -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674, + 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193, + -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674, + -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443, + 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193, + -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443, + -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298, + -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896, + 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193, + -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298, + -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896, + -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298, + 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246, + -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261, + -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896, + 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246, + -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261, + 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246, + 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499, + -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015, + -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261, + 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499, + -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015, + 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499, + 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964, + -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331, + -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015, + 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964, + -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331, + 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964, + 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931, + -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349, + -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331, + 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931, + -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349, + 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931, + 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602, + -0.861251,0.383698,-0.333202,3.247406,2.073333,0, + 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431, + 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662, + -0.861251,0.383698,-0.333202,3.247406,2.073333,0, + 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662, + 0.694153,-0.467999,0.546926,3.454971,2.169877,0, + 0.431966,-0.771434,0.46722,3.486028,-0.141683,0, + 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589, + -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349, + 0.431966,-0.771434,0.46722,3.486028,-0.141683,0, + -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349, + -0.560204,0.828355,-0.00034,3.33521,-0.375755,0, + 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422, + 0.889638,-0.392482,0.233458,2.985371,1.982663,0, + -0.926486,-0.356041,0.121897,2.723503,1.898839,0, + 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838, + 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422, + -0.926486,-0.356041,0.121897,2.723503,1.898839,0, + 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838, + -0.926486,-0.356041,0.121897,2.723503,1.898839,0, + 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709, + 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337, + 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838, + 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709, + 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337, + 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709, + 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046, + 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863, + 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337, + 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046, + 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863, + 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046, + 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829, + 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228, + 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863, + 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829, + 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228, + 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829, + 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399, + 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438, + 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228, + 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399, + 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438, + 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399, + 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465, + 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122, + 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438, + 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465, + 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122, + 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465, + 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058, + 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434, + 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122, + 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058, + 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434, + 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058, + 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193, + 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575, + 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434, + 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193, + 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575, + 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193, + -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896, + 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685, + 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575, + -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896, + 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685, + -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896, + -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261, + 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362, + 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685, + -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261, + 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362, + -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261, + -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015, + 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015, + 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362, + -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015, + 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015, + -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015, + -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331, + 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589, + 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015, + -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331, + 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589, + -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331, + -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349, + 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819, + -0.910859,-0.100368,-0.400327,3.731689,0.186391,0, + 0.338485,-0.103202,-0.935295,3.929251,0.411689,0, + 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819, + 0.338485,-0.103202,-0.935295,3.929251,0.411689,0, + 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586, + 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762, + 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819, + 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586, + 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762, + 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586, + 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365, + 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784, + 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762, + 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365, + 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784, + 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365, + 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961, + 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198, + 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784, + 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961, + 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742, + 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198, + 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961, + 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742, + 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961, + 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198, + 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535, + 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742, + 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198, + 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535, + 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198, + 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519, + 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443, + 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535, + 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519, + 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443, + 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519, + 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662, + 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658, + 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443, + 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662, + 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658, + 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662, + 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617, + 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781, + 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658, + 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617, + 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781, + 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617, + 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994, + 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021, + 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781, + 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994, + 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021, + 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994, + 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366, + 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266, + 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021, + 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366, + 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266, + 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366, + 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478, + 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215, + 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266, + 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478, + 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215, + 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478, + 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368, + 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431, + 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215, + 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368, + 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431, + 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368, + 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662, + 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499, + 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789, + 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964, + -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443, + -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674, + 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573, + -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443, + 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573, + 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141, + -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298, + -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443, + 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141, + -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298, + 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141, + 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263, + 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246, + -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298, + 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263, + 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246, + 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263, + 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488, + 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277, + 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345, + 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789, + 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789, + 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499, + 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246, + 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789, + 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246, + 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277, + 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246, + 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488, + 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277, + 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722, + 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425, + 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527, + 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182, + 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105, + 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475, + 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182, + 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475, + 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491, + 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263, + 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182, + 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491, + 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263, + 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491, + 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343, + 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218, + 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263, + 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343, + 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218, + 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343, + 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611, + 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796, + 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218, + 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611, + 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796, + 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611, + 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581, + 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371, + 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796, + 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581, + 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371, + 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581, + 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585, + 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748, + 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371, + 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585, + 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748, + 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585, + 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582, + 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405, + 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748, + 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582, + 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405, + 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582, + 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671, + 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425, + 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405, + 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671, + 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425, + 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671, + 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527, + 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975, + 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345, + 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343, + 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975, + 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343, + 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491, + 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592, + 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722, + 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527, + 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573, + 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592, + 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527, + 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573, + 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527, + 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671, + 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141, + 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573, + 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671, + 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141, + 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671, + 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582, + 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263, + 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141, + 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582, + 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263, + 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582, + 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585, + 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488, + 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263, + 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585, + 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488, + 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585, + 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581, + 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277, + 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488, + 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581, + 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277, + 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581, + 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611, + 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345, + 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277, + 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611, + 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345, + 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611, + 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343, + -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674, + -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611, + 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592, + -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674, + 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592, + 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573, + -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595, + 0.536218,-0.84408,0.000006,2.339597,1.807702,0, + 0.756976,-0.653442,0,2.128139,1.788397,0, + -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595, + 0.756976,-0.653442,0,2.128139,1.788397,0, + 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271, + -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479, + -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595, + 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271, + -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479, + 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271, + 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767, + -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962, + -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479, + 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767, + -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962, + 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767, + 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015, + -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335, + -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962, + 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015, + -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335, + 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015, + 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722, + -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611, + -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335, + 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722, + -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611, + 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722, + 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592, + 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105, + -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296, + -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778, + 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105, + -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778, + 0.09853,0.626571,0.773111,2.292449,-0.871852,0.8824, + 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767, + 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271, + 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746, + 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767, + 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746, + 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681, + 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015, + 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767, + 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681, + 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015, + 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681, + 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501, + 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722, + 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015, + 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501, + 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722, + 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501, + 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332, + 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425, + 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722, + 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332, + 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425, + 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332, + 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763, + 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405, + 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425, + 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763, + 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405, + 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763, + 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279, + 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748, + 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405, + 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279, + 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748, + 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279, + 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335, + 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371, + 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748, + 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335, + 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371, + 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335, + 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081, + 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796, + 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371, + 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081, + 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796, + 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081, + 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179, + 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218, + 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796, + 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179, + 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218, + 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179, + 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797, + 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263, + 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218, + 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797, + 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263, + 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797, + 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324, + 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182, + 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263, + 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324, + 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182, + 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324, + 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058, + 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105, + 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182, + 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058, + 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105, + 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058, + -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296, + -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778, + -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137, + 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826, + -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778, + 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826, + 0.09853,0.626571,0.773111,2.292449,-0.871852,0.8824, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778, + -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296, + 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296, + 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691, + -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296, + 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058, + -0.720176,-0.693792,0,1.794465,1.787719,0, + -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627, + 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746, + -0.720176,-0.693792,0,1.794465,1.787719,0, + 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746, + -0.385788,0.922588,0,2.042206,1.777154,0, + 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057, + 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691, + 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058, + 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057, + 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058, + 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324, + 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057, + 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324, + 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797, + 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565, + 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057, + 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797, + 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565, + 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797, + 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179, + 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461, + 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565, + 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179, + 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461, + 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179, + 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081, + 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399, + 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461, + 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081, + 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399, + 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081, + 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335, + 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423, + 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399, + 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335, + 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423, + 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335, + 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279, + 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813, + 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423, + 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279, + 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813, + 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279, + 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763, + 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222, + 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813, + 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763, + 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222, + 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763, + 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332, + 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751, + 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222, + 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332, + 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751, + 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332, + 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501, + -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352, + 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751, + 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501, + -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352, + 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501, + 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681, + -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627, + -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352, + 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681, + -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627, + 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681, + 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746, + 0.981421,-0.191868,0,0.733818,1.740873,0, + 0.566114,-0.824327,0,0.234527,1.730117,0, + 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743, + 0.981421,-0.191868,0,0.733818,1.740873,0, + 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743, + 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713, + 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713, + 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743, + 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672, + 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713, + 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672, + 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804, + 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804, + 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672, + 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055, + 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804, + 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055, + 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545, + 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545, + 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055, + 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719, + 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545, + 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719, + 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029, + 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029, + 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719, + 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993, + 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029, + 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993, + 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933, + 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933, + 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993, + 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626, + 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933, + 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626, + 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872, + 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872, + 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626, + 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493, + 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872, + 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493, + 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043, + 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043, + 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493, + -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014, + 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043, + -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014, + 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188, + 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188, + -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014, + -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627, + 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188, + -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627, + 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771, + 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771, + -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627, + -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375, + 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771, + -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375, + 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133, + 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133, + -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375, + -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244, + 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133, + -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244, + 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353, + 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353, + -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244, + -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311, + 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353, + -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311, + 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958, + 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958, + -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311, + -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811, + 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958, + -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811, + 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809, + 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809, + -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811, + -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902, + 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809, + -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902, + 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063, + 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063, + -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902, + -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842, + 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063, + -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842, + 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196, + 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196, + -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842, + -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911, + 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196, + -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911, + -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307, + -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307, + -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911, + -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392, + -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307, + -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392, + -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185, + -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185, + -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392, + -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961, + -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185, + -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961, + -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547, + -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547, + -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961, + 0.226963,-0.973903,0,0.44655,-1.67295,0, + -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547, + 0.226963,-0.973903,0,0.44655,-1.67295,0, + 0.92802,-0.37253,0,0.927497,-1.558489,0, + -0.039092,-0.999236,0,-0.228904,1.734267,0, + -0.009814,-0.999952,0,-0.547248,1.742126,0, + -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107, + -0.039092,-0.999236,0,-0.228904,1.734267,0, + -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107, + 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403, + 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403, + -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107, + -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462, + 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403, + -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462, + 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577, + 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577, + -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462, + -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136, + 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577, + -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136, + 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142, + 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142, + -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136, + -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047, + 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142, + -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047, + 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513, + 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513, + -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047, + 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059, + 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513, + 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059, + 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008, + 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008, + 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059, + 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774, + 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008, + 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774, + 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088, + 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088, + 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774, + 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223, + 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088, + 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223, + -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197, + -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197, + 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223, + 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349, + -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197, + 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349, + -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265, + -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265, + 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349, + 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316, + -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265, + 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316, + -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199, + -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199, + 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316, + 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232, + -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199, + 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232, + -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949, + -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949, + 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232, + 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405, + -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949, + 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405, + -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297, + -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297, + 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405, + 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612, + -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297, + 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612, + -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548, + -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548, + 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612, + 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026, + -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548, + 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026, + -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176, + -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176, + 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026, + 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019, + -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176, + 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019, + -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379, + -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379, + 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019, + 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736, + -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379, + 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736, + -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397, + -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397, + 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736, + 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556, + -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397, + 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556, + -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082, + -0.098179,0.995169,0,-0.866132,1.75467,0, + -0.065586,-0.997847,0,-1.179474,1.786649,0, + -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494, + -0.098179,0.995169,0,-0.866132,1.75467,0, + -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494, + 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911, + 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911, + -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494, + -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029, + 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911, + -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029, + 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034, + 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034, + -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029, + -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403, + 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034, + -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403, + 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965, + 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965, + -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403, + 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441, + 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965, + 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441, + 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106, + 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106, + 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441, + 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827, + 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106, + 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827, + 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623, + 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623, + 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827, + 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193, + 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623, + 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193, + 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843, + 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843, + 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193, + 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104, + 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843, + 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104, + 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391, + 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391, + 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104, + 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858, + 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391, + 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858, + 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191, + 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191, + 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858, + -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181, + 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191, + -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181, + 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699, + 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699, + -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181, + -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042, + 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699, + -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042, + 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393, + 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393, + -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042, + -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987, + 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393, + -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987, + 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245, + 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245, + -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987, + -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257, + 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245, + -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257, + 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144, + 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144, + -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257, + -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608, + 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144, + -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608, + 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623, + 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623, + -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608, + -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055, + 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623, + -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055, + -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338, + -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338, + -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804, + 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494, + -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627, + -0.720176,-0.693792,0,1.794465,1.787719,0, + 0.779025,-0.626993,0,1.456656,1.785879,0, + -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627, + 0.779025,-0.626993,0,1.456656,1.785879,0, + 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394, + -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352, + -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627, + 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394, + -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352, + 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394, + 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781, + 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751, + -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352, + 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781, + 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751, + 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781, + 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108, + 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222, + 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751, + 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108, + 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222, + 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108, + 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976, + 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813, + 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222, + 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976, + 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813, + 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976, + -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076, + 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423, + 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813, + -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076, + 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423, + -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076, + -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108, + 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423, + -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108, + -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818, + 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399, + 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423, + -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818, + 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399, + -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818, + -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369, + 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461, + 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399, + -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369, + 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461, + -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369, + -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969, + 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565, + 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461, + -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969, + 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565, + -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969, + -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002, + 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057, + 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565, + -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002, + 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057, + -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002, + -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729, + 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691, + 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057, + -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729, + 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691, + -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729, + 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691, + 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177, + 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518, + -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647, + -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137, + -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494, + -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968, + 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933, + 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491, + 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933, + -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518, + -0.034649,0.9994,0,1.920432,-1.567396,0, + -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861, + 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932, + -0.034649,0.9994,0,1.920432,-1.567396,0, + 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932, + -0.560667,-0.828041,0,1.604939,-1.556997,0, + 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758, + 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733, + -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707, + 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758, + -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707, + -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841, + 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185, + 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758, + -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841, + 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185, + -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841, + -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522, + -0.034649,0.9994,0,1.920432,-1.567396,0, + 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832, + -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861, + 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185, + -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522, + 0.770209,-0.637792,0,1.289448,-1.546597,0, + 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185, + 0.770209,-0.637792,0,1.289448,-1.546597,0, + -0.560667,-0.828041,0,1.604939,-1.556997,0, + 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932, + 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185, + -0.560667,-0.828041,0,1.604939,-1.556997,0, + 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733, + -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204, + -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029, + 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733, + -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029, + -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707, + -0.382074,-0.25681,-0.887732,1.337875,-0.945716,1.021299, + -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245, + -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643, + 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838, + -0.382074,-0.25681,-0.887732,1.337875,-0.945716,1.021299, + -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643, + 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838, + -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643, + -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543, + -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204, + 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838, + -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543, + -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204, + -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543, + -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029, + -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597, + -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968, + 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494, + -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905, + -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597, + 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494, + -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905, + 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494, + 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804, + 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804, + 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177, + -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245, + -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905, + 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804, + -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245, + 0.981421,-0.191868,0,0.733818,1.740873,0, + 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394, + 0.779025,-0.626993,0,1.456656,1.785879,0, + -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547, + 0.92802,-0.37253,0,0.927497,-1.558489,0, + 0.770209,-0.637792,0,1.289448,-1.546597,0, + -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547, + 0.770209,-0.637792,0,1.289448,-1.546597,0, + -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522, + -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185, + -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547, + -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522, + -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185, + -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522, + -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841, + -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307, + -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185, + -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841, + -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307, + -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841, + -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707, + 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196, + -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307, + -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707, + 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196, + -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707, + -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029, + 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063, + 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196, + -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029, + 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063, + -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029, + -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543, + 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809, + 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063, + -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543, + 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809, + -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543, + -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643, + 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958, + 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809, + -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643, + 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958, + -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643, + -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245, + 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353, + 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958, + -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245, + 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133, + 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353, + -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245, + 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133, + -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245, + 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177, + 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771, + 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133, + 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177, + 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771, + 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177, + -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729, + 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188, + 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771, + -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729, + 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188, + -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729, + -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002, + 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043, + 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188, + -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002, + 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043, + -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002, + -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969, + 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872, + 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043, + -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969, + 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872, + -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969, + -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369, + 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933, + 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872, + -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369, + 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933, + -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369, + -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818, + 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029, + 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933, + -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818, + 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029, + -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818, + -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108, + 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545, + 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029, + -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108, + 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804, + 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545, + -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108, + 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804, + -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108, + -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076, + 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713, + 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804, + -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076, + 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713, + -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076, + 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976, + 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713, + 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976, + 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108, + 0.981421,-0.191868,0,0.733818,1.740873,0, + 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713, + 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108, + 0.981421,-0.191868,0,0.733818,1.740873,0, + 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108, + 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781, + 0.981421,-0.191868,0,0.733818,1.740873,0, + 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781, + 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394, + 0.566114,-0.824327,0,0.234527,1.730117,0, + -0.039092,-0.999236,0,-0.228904,1.734267,0, + 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403, + 0.566114,-0.824327,0,0.234527,1.730117,0, + 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403, + 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743, + 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743, + 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403, + 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577, + 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743, + 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577, + 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672, + 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672, + 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577, + 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142, + 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672, + 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142, + 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055, + 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055, + 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142, + 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513, + 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055, + 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513, + 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719, + 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719, + 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513, + 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008, + 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719, + 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008, + 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993, + 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993, + 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008, + 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088, + 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993, + 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088, + 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626, + 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626, + 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088, + -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197, + 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626, + -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197, + 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493, + 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493, + -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197, + -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265, + 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493, + -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265, + -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014, + -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014, + -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265, + -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199, + -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014, + -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199, + -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627, + -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627, + -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199, + -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949, + -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627, + -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949, + -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375, + -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375, + -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949, + -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297, + -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375, + -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297, + -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244, + -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244, + -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297, + -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548, + -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244, + -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548, + -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311, + -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311, + -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548, + -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176, + -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311, + -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176, + -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811, + -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811, + -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176, + -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379, + -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811, + -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379, + -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902, + -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902, + -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379, + -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397, + -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902, + -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397, + -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842, + -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842, + -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397, + -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082, + -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842, + -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082, + -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911, + -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911, + -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082, + 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023, + -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911, + 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023, + -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392, + 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023, + 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924, + -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392, + -0.009814,-0.999952,0,-0.547248,1.742126,0, + -0.098179,0.995169,0,-0.866132,1.75467,0, + 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911, + -0.009814,-0.999952,0,-0.547248,1.742126,0, + 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911, + -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107, + -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107, + 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911, + 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034, + -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107, + 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034, + -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462, + -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462, + 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034, + 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965, + -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462, + 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965, + -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136, + -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136, + 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965, + 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106, + -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136, + 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106, + -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047, + -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047, + 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106, + 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623, + -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047, + 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623, + 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059, + 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059, + 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623, + 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843, + 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059, + 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843, + 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774, + 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774, + 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843, + 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391, + 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774, + 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391, + 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223, + 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223, + 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391, + 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191, + 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223, + 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191, + 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349, + 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349, + 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191, + 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699, + 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349, + 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699, + 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316, + 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316, + 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699, + 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393, + 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316, + 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393, + 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232, + 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232, + 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393, + 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245, + 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232, + 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245, + 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405, + 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405, + 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245, + 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144, + 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405, + 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144, + 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612, + 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612, + 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144, + 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623, + 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612, + 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623, + 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026, + 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026, + 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623, + -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338, + 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026, + -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338, + 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019, + 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019, + -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338, + -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865, + 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019, + -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865, + 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736, + 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736, + -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556, + 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968, + 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345, + 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975, + 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013, + 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604, + 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149, + -0.382074,-0.25681,-0.887732,1.337875,-0.945716,1.021299, + -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905, + -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245, + -0.065586,-0.997847,0,-1.179474,1.786649,0, + 0.262234,-0.965004,0,-1.35095,1.807009,0, + -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901, + -0.065586,-0.997847,0,-1.179474,1.786649,0, + -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901, + -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494, + -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494, + -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901, + -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642, + -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494, + -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642, + -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029, + -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029, + -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642, + -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265, + -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029, + -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265, + -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403, + -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403, + -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265, + -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125, + -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403, + -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125, + 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441, + 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441, + -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125, + 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349, + 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441, + 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349, + 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827, + 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827, + 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349, + -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307, + 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827, + -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307, + 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193, + 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193, + -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307, + -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489, + 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193, + -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489, + 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104, + 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104, + -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489, + -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422, + 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104, + -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422, + 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858, + 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858, + -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422, + -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643, + 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858, + -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643, + -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181, + -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181, + -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643, + -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257, + -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181, + -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257, + -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042, + -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042, + -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257, + -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116, + -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042, + -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116, + -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987, + -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987, + -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116, + -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315, + -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987, + -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315, + -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257, + -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257, + -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315, + -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851, + -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257, + -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851, + -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608, + -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608, + -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851, + -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619, + -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608, + -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619, + -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055, + -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055, + -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619, + -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832, + -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055, + -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + 0.262234,-0.965004,0,-1.35095,1.807009,0, + 0.021487,0.999769,0,-1.67651,1.826886,0, + -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501, + 0.262234,-0.965004,0,-1.35095,1.807009,0, + -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501, + -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901, + -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901, + -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501, + -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594, + -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901, + -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594, + -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642, + -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642, + -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594, + -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807, + -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642, + -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807, + -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265, + -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265, + -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807, + -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639, + -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265, + -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639, + -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125, + -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125, + -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639, + -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104, + -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125, + -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104, + 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349, + 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349, + -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104, + -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196, + 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349, + -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196, + -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307, + -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307, + -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196, + -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827, + -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307, + -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827, + -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489, + -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489, + -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827, + -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762, + -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489, + -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762, + -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422, + -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422, + -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762, + -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679, + -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422, + -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679, + -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643, + -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643, + -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679, + -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589, + -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643, + -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589, + -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257, + -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257, + -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589, + -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798, + -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257, + -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798, + -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116, + -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116, + -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798, + -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028, + -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116, + -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028, + -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315, + -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315, + -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028, + -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639, + -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315, + -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639, + -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851, + -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851, + -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639, + -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167, + -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851, + -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167, + -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619, + -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619, + -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167, + -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879, + -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619, + -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879, + -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832, + -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832, + -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879, + -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422, + -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832, + -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422, + -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + -0.742985,0.015712,0.669123,-1.198513,-1.456102,0.885435, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832, + -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381, + -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424, + -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567, + -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293, + -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567, + -0.742985,0.015712,0.669123,-1.198513,-1.456102,0.885435, + 0.021487,0.999769,0,-1.67651,1.826886,0, + 0.181762,-0.983343,0,-2.057387,1.841308,0, + -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375, + 0.021487,0.999769,0,-1.67651,1.826886,0, + -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375, + -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501, + -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501, + -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375, + -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245, + -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501, + -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245, + -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594, + -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594, + -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245, + -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142, + -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594, + -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142, + -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807, + -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807, + -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142, + -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318, + -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807, + -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318, + -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639, + -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639, + -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318, + -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662, + -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639, + -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662, + -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104, + -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104, + -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662, + -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139, + -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104, + -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139, + -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196, + -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196, + -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139, + -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884, + -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196, + -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884, + -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827, + -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827, + -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884, + -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301, + -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827, + -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301, + -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762, + -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762, + -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301, + -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962, + -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762, + -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962, + -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679, + -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679, + -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962, + -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106, + -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679, + -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106, + -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589, + -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589, + -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106, + -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866, + -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589, + -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866, + -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798, + -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798, + -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866, + -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902, + -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798, + -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902, + -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028, + -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028, + -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902, + -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026, + -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028, + -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026, + -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639, + -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639, + -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026, + -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136, + -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639, + -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136, + -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167, + -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167, + -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136, + 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687, + -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167, + 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687, + -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879, + -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879, + 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687, + -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238, + -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879, + -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238, + -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422, + 0.181762,-0.983343,0,-2.057387,1.841308,0, + 0.03611,0.999348,0,-2.629466,1.918204,0, + -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168, + 0.181762,-0.983343,0,-2.057387,1.841308,0, + -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168, + -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375, + -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375, + -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168, + -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796, + -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375, + -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796, + -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245, + -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245, + -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796, + -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127, + -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245, + -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127, + -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142, + -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142, + -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127, + -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653, + -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142, + -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653, + -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318, + -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318, + -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653, + -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971, + -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318, + -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971, + -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662, + -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662, + -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971, + -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049, + -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662, + -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049, + -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139, + -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139, + -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049, + -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192, + -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139, + -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192, + -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884, + -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884, + -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192, + -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661, + -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884, + -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661, + -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301, + -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301, + -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661, + -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617, + -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301, + -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617, + -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962, + -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962, + -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617, + -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695, + -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962, + -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695, + -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106, + -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106, + -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695, + -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269, + -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106, + -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269, + -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866, + -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866, + -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269, + 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384, + -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866, + 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384, + -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902, + -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902, + 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384, + 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045, + -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902, + 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045, + -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026, + -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026, + 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045, + 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486, + -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026, + 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486, + -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136, + -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136, + 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486, + -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101, + -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136, + -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101, + 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687, + 0.03611,0.999348,0,-2.629466,1.918204,0, + 0.012502,-0.999922,0,-3.037562,2.001526,0, + 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104, + 0.03611,0.999348,0,-2.629466,1.918204,0, + 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104, + -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168, + -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168, + 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104, + 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368, + -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168, + 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368, + -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796, + -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796, + 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368, + 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149, + -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796, + 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149, + -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127, + -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127, + 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149, + -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323, + -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127, + -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323, + -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653, + -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653, + -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323, + 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479, + -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653, + 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479, + -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971, + -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971, + 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479, + 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324, + -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971, + 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324, + -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049, + -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049, + 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324, + 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876, + -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049, + 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876, + -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192, + -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192, + 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876, + 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042, + -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192, + 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042, + -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661, + -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661, + 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042, + 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273, + -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661, + 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273, + -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617, + -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617, + 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273, + 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352, + -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617, + 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352, + -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695, + -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695, + 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352, + 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565, + -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695, + 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565, + -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269, + -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269, + 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565, + 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644, + -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269, + 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644, + 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384, + 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384, + 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644, + -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133, + 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384, + -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133, + 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045, + 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045, + -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133, + 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176, + 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045, + 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176, + 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486, + 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486, + 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176, + -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384, + 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486, + -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384, + -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101, + -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101, + -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384, + -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139, + -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101, + -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139, + 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313, + 0.072535,0.997366,0,-3.392806,1.769365,0, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713, + 0.072535,0.997366,0,-3.392806,1.769365,0, + 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713, + -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095, + -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095, + 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713, + -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679, + -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095, + -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679, + -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477, + -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477, + -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679, + 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386, + -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477, + 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386, + -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636, + -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636, + 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386, + 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766, + -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636, + 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766, + -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958, + -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958, + 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766, + 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934, + -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958, + 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934, + -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945, + -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945, + 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934, + 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996, + -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945, + 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996, + -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913, + -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913, + 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996, + 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762, + -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913, + 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762, + 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816, + 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816, + 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762, + 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445, + 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816, + 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445, + -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934, + -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934, + 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445, + 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626, + -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934, + 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626, + -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971, + -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971, + 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626, + 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409, + -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971, + 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409, + -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557, + -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557, + 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409, + 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081, + -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557, + 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081, + -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058, + -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058, + 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081, + 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015, + -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058, + 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015, + -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413, + -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413, + 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015, + -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021, + -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413, + -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021, + -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596, + -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596, + -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021, + 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611, + -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596, + 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611, + -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0, + 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202, + 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713, + 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713, + 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202, + 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432, + 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713, + 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432, + -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679, + -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679, + 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432, + 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428, + -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679, + 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428, + 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386, + 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386, + 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428, + -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692, + 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386, + -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692, + 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766, + 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766, + -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692, + -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203, + 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766, + -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203, + 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934, + 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934, + -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203, + 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787, + 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934, + 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787, + 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996, + 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996, + 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787, + -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066, + 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996, + -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066, + 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762, + 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762, + -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066, + -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279, + 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762, + -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279, + 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445, + 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445, + -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279, + -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524, + 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445, + -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524, + 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626, + 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626, + -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524, + -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153, + 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626, + -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153, + 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409, + 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409, + -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153, + 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512, + 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409, + 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512, + 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081, + 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081, + 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512, + -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631, + 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081, + -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631, + 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015, + 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015, + -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631, + 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153, + 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015, + 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153, + -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021, + -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021, + 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153, + 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015, + -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021, + 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015, + 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611, + -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0, + -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0, + -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745, + -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0, + -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745, + 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202, + 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202, + -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745, + -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469, + 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202, + -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469, + 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432, + 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432, + -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469, + -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829, + 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432, + -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829, + 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428, + 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428, + -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829, + -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991, + 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428, + -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991, + -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692, + -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692, + -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991, + -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749, + -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692, + -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749, + -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203, + -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203, + -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749, + -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276, + -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203, + -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276, + 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787, + 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787, + -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276, + -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448, + 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787, + -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448, + -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066, + -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066, + -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448, + -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561, + -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066, + -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561, + -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279, + -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279, + -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561, + -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712, + -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279, + -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712, + -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524, + -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524, + -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712, + -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456, + -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524, + -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456, + -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153, + -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153, + -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456, + -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898, + -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153, + -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898, + 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512, + -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413, + -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596, + -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384, + -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413, + -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384, + 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176, + -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058, + -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413, + 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176, + -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058, + 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176, + -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133, + -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557, + -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058, + -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133, + -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557, + -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133, + 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644, + -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971, + -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557, + 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644, + -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971, + 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644, + 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565, + -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934, + -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971, + 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565, + -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934, + 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565, + 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352, + 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816, + -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934, + 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352, + 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816, + 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352, + 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273, + -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913, + 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816, + 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273, + -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913, + 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273, + 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042, + -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945, + -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913, + 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042, + -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945, + 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042, + 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876, + -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958, + -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945, + 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876, + -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958, + 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876, + 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324, + -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636, + -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958, + 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324, + -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636, + 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324, + 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479, + -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477, + -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636, + 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479, + -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477, + 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479, + -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323, + -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095, + -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477, + -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323, + -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095, + -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323, + 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149, + 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048, + -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101, + 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313, + -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395, + -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238, + 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687, + -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395, + 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687, + -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101, + 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048, + -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547, + -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395, + 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048, + -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395, + -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101, + 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494, + 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841, + 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724, + 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494, + 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724, + -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678, + 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271, + 0.756976,-0.653442,0,2.128139,1.788397,0, + -0.385788,0.922588,0,2.042206,1.777154,0, + 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271, + -0.385788,0.922588,0,2.042206,1.777154,0, + 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746, + -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139, + -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384, + -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812, + -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926, + 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611, + -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625, + -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926, + -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625, + -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832, + -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384, + -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596, + -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926, + -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384, + -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926, + -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812, + 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611, + 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015, + 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076, + 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611, + 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076, + -0.508357,0.250892,0.823787,-3.342096,-1.533989,0.921628, + 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611, + -0.508357,0.250892,0.823787,-3.342096,-1.533989,0.921628, + -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625, + -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572, + -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563, + -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812, + -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772, + 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639, + -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994, + -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772, + -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994, + 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433, + 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176, + 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218, + 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914, + 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176, + 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914, + 0.788485,-0.288832,0.543017,-3.302419,-3.017921,1.128514, + 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679, + 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008, + -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318, + 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679, + -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318, + 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235, + 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343, + 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671, + 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008, + 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343, + 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008, + 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679, + 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869, + 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176, + 0.788485,-0.288832,0.543017,-3.302419,-3.017921,1.128514, + 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229, + -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969, + 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869, + 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214, + -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969, + 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229, + 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147, + -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766, + 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343, + 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147, + 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343, + 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679, + -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318, + -0.347185,0.293858,0.890567,-3.196508,-2.788166,1.045431, + -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084, + -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318, + -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084, + 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235, + -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084, + -0.347185,0.293858,0.890567,-3.196508,-2.788166,1.045431, + 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218, + -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084, + 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218, + 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176, + -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058, + 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229, + 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869, + -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058, + 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869, + -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748, + -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573, + 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214, + 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229, + -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573, + 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229, + -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058, + -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739, + -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573, + -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058, + -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739, + -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058, + -0.190279,0.223108,-0.956042,-3.294389,-3.166225,0.842823, + -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693, + -0.190279,0.223108,-0.956042,-3.294389,-3.166225,0.842823, + -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058, + -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693, + -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058, + -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748, + -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748, + -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368, + -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984, + -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748, + -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984, + -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693, + 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235, + -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355, + 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147, + 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235, + 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147, + 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679, + 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235, + -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084, + -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456, + 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235, + -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456, + -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355, + 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176, + 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247, + -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456, + 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176, + -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456, + -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084, + 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214, + 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247, + -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969, + -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969, + 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247, + 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176, + -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969, + 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176, + 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869, + 0.788485,-0.288832,0.543017,-3.302419,-3.017921,1.128514, + -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748, + 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869, + -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748, + 0.788485,-0.288832,0.543017,-3.302419,-3.017921,1.128514, + 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914, + -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748, + 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914, + -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368, + 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772, + 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635, + 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343, + 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772, + 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343, + -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766, + -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106, + -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739, + -0.190279,0.223108,-0.956042,-3.294389,-3.166225,0.842823, + -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693, + -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106, + -0.190279,0.223108,-0.956042,-3.294389,-3.166225,0.842823, + -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106, + -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236, + -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973, + -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106, + -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973, + -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739, + -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236, + 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635, + 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772, + -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236, + 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772, + -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973, + -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127, + -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117, + -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236, + -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127, + -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236, + -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106, + 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614, + 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635, + -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236, + 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614, + -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236, + -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117, + -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984, + -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127, + -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106, + -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984, + -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106, + -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693, + 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635, + 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614, + 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671, + 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635, + 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671, + 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343, + 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834, + 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409, + -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318, + 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834, + -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318, + 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008, + -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211, + 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785, + -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368, + -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211, + -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368, + 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914, + 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627, + -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211, + 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914, + 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627, + 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914, + 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218, + 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409, + 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627, + 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218, + 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409, + 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218, + -0.347185,0.293858,0.890567,-3.196508,-2.788166,1.045431, + 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409, + -0.347185,0.293858,0.890567,-3.196508,-2.788166,1.045431, + -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318, + 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008, + 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671, + -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148, + 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008, + -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148, + 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834, + -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984, + -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368, + 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785, + -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984, + 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785, + 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657, + -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127, + -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984, + 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657, + -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127, + 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657, + 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262, + -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117, + -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127, + 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262, + -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117, + 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262, + 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639, + 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614, + -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117, + 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639, + 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614, + 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639, + -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772, + 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671, + 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614, + -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772, + 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671, + -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772, + -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148, + -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459, + 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015, + 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153, + -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459, + 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153, + -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602, + -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631, + 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512, + -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898, + -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631, + -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898, + -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868, + 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153, + -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631, + -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868, + 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153, + -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868, + -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602, + -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898, + -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456, + -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045, + -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276, + -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749, + -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502, + -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276, + -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502, + -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063, + -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448, + -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276, + -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063, + -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448, + -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063, + -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322, + -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561, + -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448, + -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322, + -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561, + -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322, + -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359, + -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712, + -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561, + -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359, + -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712, + -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359, + -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398, + -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456, + -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712, + -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398, + -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456, + -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398, + -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045, + -0.989171,0.146765,0,-3.599077,0.796217,0, + -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502, + -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749, + -0.989171,0.146765,0,-3.599077,0.796217,0, + -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749, + -0.996668,0.081567,0,-3.623861,0.911561,0, + -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745, + -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0, + -0.844095,-0.536194,0,-3.601668,1.293049,0, + -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469, + -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745, + -0.844095,-0.536194,0,-3.601668,1.293049,0, + -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829, + -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469, + -0.844095,-0.536194,0,-3.601668,1.293049,0, + -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829, + -0.844095,-0.536194,0,-3.601668,1.293049,0, + -0.946116,-0.323827,0,-3.608593,1.163581,0, + -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991, + -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829, + -0.946116,-0.323827,0,-3.608593,1.163581,0, + -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991, + -0.946116,-0.323827,0,-3.608593,1.163581,0, + -0.997181,-0.075036,0,-3.622326,1.005378,0, + -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749, + -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991, + -0.997181,-0.075036,0,-3.622326,1.005378,0, + -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749, + -0.997181,-0.075036,0,-3.622326,1.005378,0, + -0.996668,0.081567,0,-3.623861,0.911561,0, + 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962, + 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164, + 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629, + 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962, + 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629, + 0.054863,-0.132814,0.989621,-3.828633,0.149083,0, + 0.054863,-0.132814,0.989621,-3.828633,0.149083,0, + 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629, + 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132, + 0.054863,-0.132814,0.989621,-3.828633,0.149083,0, + 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132, + -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0, + -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0, + 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132, + 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635, + -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0, + 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635, + -0.999862,-0.016634,0,-3.900566,1.002504,0, + -0.999862,-0.016634,0,-3.900566,1.002504,0, + 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635, + 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137, + -0.999862,-0.016634,0,-3.900566,1.002504,0, + 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137, + -0.964752,0.26316,0,-3.87514,1.480358,0, + -0.964752,0.26316,0,-3.87514,1.480358,0, + 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137, + 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664, + -0.964752,0.26316,0,-3.87514,1.480358,0, + 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664, + -0.766357,0.642415,0,-3.712832,1.794492,0, + -0.766357,0.642415,0,-3.712832,1.794492,0, + 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664, + 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141, + -0.766357,0.642415,0,-3.712832,1.794492,0, + 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141, + -0.410619,0.911807,0,-3.47843,1.975409,0, + -0.410619,0.911807,0,-3.47843,1.975409,0, + 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141, + 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645, + -0.410619,0.911807,0,-3.47843,1.975409,0, + 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645, + -0.433128,-0.901332,0,-3.242148,2.021387,0, + 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164, + 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472, + 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233, + 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164, + 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233, + 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629, + 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629, + 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233, + 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033, + 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629, + 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033, + 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132, + 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132, + 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033, + 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831, + 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132, + 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831, + 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635, + 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635, + 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831, + 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631, + 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635, + 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631, + 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137, + 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137, + 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631, + 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431, + 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137, + 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431, + 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664, + 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664, + 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431, + 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229, + 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664, + 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229, + 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141, + 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141, + 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229, + 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029, + 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141, + 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029, + 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645, + 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472, + 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305, + 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274, + 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472, + 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274, + 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233, + 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233, + 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274, + 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281, + 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233, + 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281, + 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033, + 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033, + 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281, + 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288, + 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033, + 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288, + 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831, + 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831, + 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288, + 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295, + 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831, + 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295, + 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631, + 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631, + 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295, + 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304, + 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631, + 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304, + 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431, + 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431, + 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304, + 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309, + 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431, + 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309, + 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229, + 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229, + 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309, + 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029, + 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305, + 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497, + 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262, + 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305, + 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262, + 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274, + 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274, + 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262, + 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064, + 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274, + 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064, + 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281, + 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281, + 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064, + 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865, + 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281, + 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865, + 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288, + 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288, + 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865, + 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668, + 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288, + 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668, + 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295, + 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295, + 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668, + 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547, + 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295, + 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547, + 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304, + 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304, + 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547, + 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273, + 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304, + 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273, + 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309, + 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497, + 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209, + 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678, + 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497, + 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678, + 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262, + 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262, + 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678, + 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185, + 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262, + 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185, + 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064, + 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064, + 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185, + 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693, + 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064, + 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693, + 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865, + 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865, + 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693, + 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201, + 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865, + 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201, + 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668, + 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668, + 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201, + 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709, + 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668, + 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709, + 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547, + 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547, + 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709, + 0.490646,-0.178294,0.852923,-3.357009,1.781675,0.071216, + 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547, + 0.490646,-0.178294,0.852923,-3.357009,1.781675,0.071216, + 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273, + 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209, + 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909, + -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058, + 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209, + -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058, + 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678, + 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678, + -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058, + 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063, + 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678, + 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063, + 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185, + 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185, + 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063, + 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069, + 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185, + 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069, + 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693, + 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693, + 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069, + 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074, + 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693, + 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074, + 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201, + 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201, + 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709, + 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709, + -0.153783,-0.988105,0,-3.507689,1.700214,0, + 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085, + 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709, + 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085, + 0.490646,-0.178294,0.852923,-3.357009,1.781675,0.071216, + 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909, + -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044, + 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579, + 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909, + 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579, + -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058, + -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058, + 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579, + 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185, + -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058, + 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185, + 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063, + -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044, + 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369, + 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205, + -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044, + 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205, + 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579, + 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579, + 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205, + 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064, + 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579, + 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064, + 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185, + 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369, + 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323, + 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274, + 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369, + 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274, + 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205, + 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205, + 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274, + 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281, + 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205, + 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281, + 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064, + 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323, + -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447, + -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291, + 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323, + -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291, + 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274, + 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274, + -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291, + -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033, + 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274, + -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033, + 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281, + -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447, + 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918, + -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728, + -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447, + -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728, + -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291, + -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291, + -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728, + -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132, + -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291, + -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132, + -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033, + 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918, + 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962, + 0.054863,-0.132814,0.989621,-3.828633,0.149083,0, + 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918, + 0.054863,-0.132814,0.989621,-3.828633,0.149083,0, + -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728, + -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728, + 0.054863,-0.132814,0.989621,-3.828633,0.149083,0, + -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0, + -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728, + -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0, + -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132, + 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309, + 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368, + 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029, + 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104, + 0.012502,-0.999922,0,-3.037562,2.001526,0, + -0.433128,-0.901332,0,-3.242148,2.021387,0, + 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104, + -0.433128,-0.901332,0,-3.242148,2.021387,0, + 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645, + 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104, + 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645, + 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029, + 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368, + 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104, + 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029, + 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309, + -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095, + 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368, + -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095, + 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149, + 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368, + 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095, + 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031, + 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358, + 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095, + 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857, + 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853, + 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025, + 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857, + 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025, + 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913, + 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466, + 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724, + 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206, + 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031, + 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095, + -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374, + 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031, + -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374, + 0.332757,0.286207,0.898531,4.926194,1.859813,0.582137, + -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374, + 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761, + 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619, + -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374, + 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619, + 0.332757,0.286207,0.898531,4.926194,1.859813,0.582137, + 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105, + 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882, + -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374, + 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105, + -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374, + 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095, + 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882, + 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515, + 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761, + 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882, + 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761, + -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374, + 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515, + 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779, + 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761, + 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779, + 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205, + 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761, + 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853, + 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206, + 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903, + 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853, + 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903, + 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713, + 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206, + 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978, + 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903, + 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205, + 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978, + 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206, + 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853, + 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949, + 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083, + 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853, + 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083, + 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025, + 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025, + 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619, + 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025, + 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083, + 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619, + 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083, + 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085, + 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619, + 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085, + -0.026366,0.234118,0.971851,4.751519,2.039658,0.634134, + 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083, + 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949, + -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891, + 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083, + -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891, + 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085, + 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949, + 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713, + -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579, + 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949, + -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579, + -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891, + 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713, + 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903, + 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233, + 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713, + 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233, + -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579, + 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903, + 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978, + 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974, + 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903, + 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974, + 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233, + 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978, + 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205, + 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793, + 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978, + 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793, + 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974, + 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205, + 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803, + 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793, + 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779, + 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386, + 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803, + 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779, + 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803, + 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205, + 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515, + 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276, + 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386, + 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515, + 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386, + 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779, + 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326, + 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276, + 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515, + 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326, + 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515, + 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882, + 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026, + 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326, + 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882, + 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026, + 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882, + 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105, + 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026, + 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327, + 0.72603,0.248277,0.641279,5.095375,1.961238,0.401516, + 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793, + 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803, + 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387, + 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327, + 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803, + 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327, + 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793, + 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386, + 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562, + 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387, + 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386, + 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387, + 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803, + 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276, + 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201, + 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562, + 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276, + 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562, + 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386, + 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155, + 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201, + 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276, + 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155, + 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276, + 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326, + 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296, + 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155, + 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326, + 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296, + 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326, + 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026, + 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663, + 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296, + 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026, + 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663, + 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974, + 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291, + 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329, + 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974, + 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329, + 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233, + -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579, + 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233, + 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329, + -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579, + 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329, + 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939, + -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891, + -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579, + 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939, + -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891, + 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939, + 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288, + 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393, + 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085, + -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891, + 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393, + -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891, + 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288, + 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307, + -0.026366,0.234118,0.971851,4.751519,2.039658,0.634134, + 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085, + 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307, + 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085, + 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + -0.026366,0.234118,0.971851,4.751519,2.039658,0.634134, + 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307, + 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165, + 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307, + 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393, + 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057, + 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393, + 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288, + 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332, + 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393, + 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332, + 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057, + 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288, + 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939, + 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713, + 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288, + 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713, + 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332, + 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939, + 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329, + 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534, + 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939, + 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534, + 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713, + 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329, + 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291, + 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324, + 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329, + 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324, + 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534, + 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291, + 0.72603,0.248277,0.641279,5.095375,1.961238,0.401516, + 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795, + 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291, + 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795, + 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324, + 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327, + 0.154813,-0.698608,0.698556,5.105589,1.864086,0.347113, + 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795, + 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327, + 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795, + 0.72603,0.248277,0.641279,5.095375,1.961238,0.401516, + 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387, + 0.154813,-0.698608,0.698556,5.105589,1.864086,0.347113, + 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327, + 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663, + 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165, + 0.152967,-0.640193,0.752831,4.697024,1.862575,0.604048, + 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713, + 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787, + 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987, + 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713, + 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987, + 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332, + 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713, + 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534, + -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781, + 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713, + -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781, + 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787, + 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534, + 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324, + -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228, + 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534, + -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228, + -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781, + 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324, + 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795, + 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214, + 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324, + 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214, + -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228, + 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795, + 0.154813,-0.698608,0.698556,5.105589,1.864086,0.347113, + -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042, + 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795, + -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042, + 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214, + 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387, + -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258, + -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042, + 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387, + -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042, + 0.154813,-0.698608,0.698556,5.105589,1.864086,0.347113, + 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562, + 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275, + -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258, + 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562, + -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258, + 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387, + 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201, + 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606, + 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275, + 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201, + 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275, + 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562, + 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327, + 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606, + 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201, + 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327, + 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201, + 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155, + 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618, + 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327, + 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155, + 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339, + 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618, + 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155, + 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339, + 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155, + 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296, + 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768, + 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339, + 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296, + 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768, + 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296, + 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663, + 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428, + 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768, + 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663, + 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428, + 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663, + 0.152967,-0.640193,0.752831,4.697024,1.862575,0.604048, + 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428, + 0.152967,-0.640193,0.752831,4.697024,1.862575,0.604048, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.025716,-0.894111,0.447106,4.551484,1.841749,0.575191, + 0.025716,-0.894111,0.447106,4.551484,1.841749,0.575191, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975, + 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057, + 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248, + 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057, + 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997, + 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248, + -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781, + -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228, + -0.941169,-0.337937,0,5.04969,2.032731,0.000071, + -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781, + -0.941169,-0.337937,0,5.04969,2.032731,0.000071, + -0.989689,-0.143234,0,4.912303,2.162645,-0.00009, + -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228, + 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214, + 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993, + -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228, + 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993, + -0.941169,-0.337937,0,5.04969,2.032731,0.000071, + 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214, + -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042, + 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306, + 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214, + 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306, + 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993, + -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042, + -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258, + 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797, + -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042, + 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797, + 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306, + 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988, + 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797, + -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258, + 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275, + 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988, + -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258, + 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982, + 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658, + 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339, + 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982, + 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339, + 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768, + -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333, + 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982, + 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768, + 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407, + -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333, + 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768, + 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407, + 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768, + 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428, + 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185, + 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407, + 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428, + 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185, + 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428, + 0.025716,-0.894111,0.447106,4.551484,1.841749,0.575191, + 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185, + 0.025716,-0.894111,0.447106,4.551484,1.841749,0.575191, + 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975, + 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185, + 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975, + 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888, + 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888, + 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975, + 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248, + 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888, + 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248, + 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794, + 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987, + 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787, + -0.965284,-0.261201,0,4.747988,2.300163,-0.000276, + 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987, + -0.965284,-0.261201,0,4.747988,2.300163,-0.000276, + 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117, + 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997, + 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987, + 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117, + 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997, + 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764, + 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332, + 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248, + 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997, + 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332, + 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997, + 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764, + 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794, + 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248, + 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332, + 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606, + 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069, + 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988, + 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606, + 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988, + 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275, + 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327, + 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043, + 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069, + 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327, + 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069, + 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606, + 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618, + 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523, + 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043, + 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618, + 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043, + 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327, + 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339, + 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137, + 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523, + 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339, + 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523, + 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618, + 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658, + 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137, + 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339, + 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993, + 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306, + 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606, + 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993, + 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606, + -0.998597,-0.052951,0,5.177545,1.932323,0.000214, + 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606, + -0.99798,-0.063521,0,5.378289,1.768448,0.000441, + -0.998597,-0.052951,0,5.177545,1.932323,0.000214, + 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606, + 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555, + -0.925873,-0.377836,0,5.424281,1.721152,0.000496, + 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606, + -0.925873,-0.377836,0,5.424281,1.721152,0.000496, + -0.99798,-0.063521,0,5.378289,1.768448,0.000441, + 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452, + 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555, + 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606, + 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452, + 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606, + 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306, + 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797, + 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712, + 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452, + 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797, + 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452, + 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306, + 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988, + -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639, + 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712, + 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988, + 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712, + 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797, + 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069, + -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984, + -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639, + 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069, + -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639, + 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988, + 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043, + -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062, + -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984, + 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043, + -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984, + 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069, + 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234, + -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062, + 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043, + 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523, + -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149, + 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234, + 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523, + 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234, + 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043, + 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883, + -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149, + 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523, + 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883, + 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523, + 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137, + 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034, + 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883, + 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137, + 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034, + 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137, + 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658, + 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892, + 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034, + 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658, + 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892, + 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658, + 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982, + 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888, + 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892, + 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982, + 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888, + 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982, + -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333, + -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661, + 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888, + -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333, + -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661, + -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333, + 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407, + -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661, + 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407, + 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185, + -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661, + 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185, + -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666, + -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666, + 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185, + 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888, + -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666, + 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888, + -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743, + 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555, + -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773, + 0.027992,0.999608,0,5.588763,1.573846,0.000686, + 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555, + 0.027992,0.999608,0,5.588763,1.573846,0.000686, + -0.925873,-0.377836,0,5.424281,1.721152,0.000496, + 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452, + -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905, + -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773, + 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452, + -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773, + 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555, + 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712, + -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666, + -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905, + 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712, + -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905, + 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452, + -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639, + -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899, + -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666, + -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639, + -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666, + 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712, + -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984, + -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687, + -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899, + -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984, + -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899, + -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639, + -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062, + -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802, + -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687, + -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062, + -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687, + -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984, + 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234, + -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883, + -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802, + 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234, + -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802, + -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062, + -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749, + -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848, + -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891, + -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749, + -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891, + -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765, + -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833, + 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719, + -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072, + 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238, + 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871, + -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072, + 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238, + -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072, + 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719, + 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054, + 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408, + 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871, + 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054, + 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871, + 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238, + 0.027992,0.999608,0,5.588763,1.573846,0.000686, + -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773, + -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765, + 0.027992,0.999608,0,5.588763,1.573846,0.000686, + -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765, + -0.026558,-0.999647,0,5.680007,1.510009,0.000786, + -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905, + -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749, + -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765, + -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905, + -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765, + -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773, + -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905, + -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666, + -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833, + -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905, + -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833, + -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749, + -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899, + 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719, + -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833, + -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899, + -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833, + -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666, + -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687, + 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238, + 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719, + -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687, + 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719, + -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899, + -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802, + 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054, + 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238, + -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802, + 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238, + -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687, + -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883, + 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188, + 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054, + -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883, + 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054, + -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802, + -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261, + -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365, + -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682, + -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261, + -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682, + -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724, + -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682, + 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337, + 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098, + -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682, + 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098, + -0.016213,0.999869,0,5.908842,1.388968,0.001026, + -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365, + 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936, + 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337, + -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365, + 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337, + -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682, + -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891, + -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724, + 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946, + -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891, + 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946, + 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851, + -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848, + -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261, + -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724, + -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848, + -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724, + -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891, + -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072, + -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459, + -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261, + -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072, + -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261, + -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848, + -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459, + 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476, + -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365, + -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459, + -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365, + -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261, + 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476, + 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613, + 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936, + 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476, + 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936, + -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365, + 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936, + 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334, + 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337, + 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337, + 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334, + 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121, + 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337, + 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121, + 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098, + 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613, + 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334, + 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936, + 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324, + 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118, + 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121, + 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324, + 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121, + 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334, + 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324, + 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039, + 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121, + 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324, + 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121, + 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118, + 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648, + 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084, + 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039, + 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648, + 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039, + 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324, + 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641, + 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505, + -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768, + 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641, + -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768, + 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545, + 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641, + 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545, + 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945, + 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545, + 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648, + 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097, + 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545, + 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097, + 0.811896,0.498733,0.303464,5.912147,1.117911,0.254197, + -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768, + 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084, + 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648, + -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768, + 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648, + 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545, + 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545, + 0.811896,0.498733,0.303464,5.912147,1.117911,0.254197, + 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184, + 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545, + 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184, + 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945, + 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945, + 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184, + 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025, + 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945, + 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025, + 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408, + 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408, + 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025, + 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562, + 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408, + 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562, + 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871, + 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871, + 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562, + -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459, + 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871, + -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459, + -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072, + -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586, + 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641, + -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085, + -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085, + 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641, + 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945, + -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085, + 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945, + 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408, + -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994, + -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085, + 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408, + -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994, + 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408, + 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054, + 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188, + -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994, + 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054, + 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371, + -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994, + 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188, + 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696, + -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586, + -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085, + 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696, + -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085, + -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994, + -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867, + -0.011269,-0.268801,-0.96313,5.672385,1.007694,0.341778, + -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586, + -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867, + -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586, + 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696, + -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994, + 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371, + 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696, + 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371, + -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257, + -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867, + 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371, + -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867, + 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696, + 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272, + 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371, + 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188, + 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272, + 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188, + -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883, + 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823, + 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371, + 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272, + 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823, + -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257, + 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371, + 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823, + 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248, + -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257, + 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748, + 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272, + -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883, + 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432, + 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823, + 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272, + 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432, + 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272, + 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748, + 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884, + 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248, + 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823, + 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884, + 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823, + 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432, + 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884, + 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613, + 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782, + 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884, + 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782, + 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248, + 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613, + 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335, + 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548, + 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613, + 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548, + 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782, + 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335, + 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813, + 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099, + 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335, + 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099, + 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548, + 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965, + 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748, + -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883, + 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965, + -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883, + 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234, + 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117, + 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432, + 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748, + 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117, + 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748, + 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965, + 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177, + 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884, + 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432, + 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473, + 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177, + 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432, + 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473, + 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432, + 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117, + 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362, + -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306, + 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059, + 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362, + 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059, + 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092, + 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099, + 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813, + -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306, + 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099, + -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306, + 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362, + 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985, + 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059, + -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306, + 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813, + 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139, + 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985, + 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813, + 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985, + -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306, + 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139, + 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896, + 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985, + 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335, + 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909, + 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139, + 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335, + 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139, + 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813, + -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842, + 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048, + 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565, + -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842, + 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565, + -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546, + 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613, + -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324, + 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909, + 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613, + 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909, + 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335, + 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884, + -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694, + -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324, + 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884, + -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324, + 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613, + -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546, + 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565, + 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066, + 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909, + -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798, + 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896, + 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909, + 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896, + 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139, + -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546, + 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066, + -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798, + -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546, + -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798, + 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909, + -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546, + 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909, + -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324, + -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694, + -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546, + -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324, + -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694, + 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884, + 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177, + -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348, + -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694, + 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177, + -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348, + 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177, + 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473, + -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348, + -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842, + -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546, + -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348, + -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546, + -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694, + -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344, + 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318, + 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048, + -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344, + 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048, + -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842, + -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771, + -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344, + -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842, + -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771, + -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842, + -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348, + -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296, + -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344, + -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771, + -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296, + -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771, + -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393, + -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296, + 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098, + 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318, + -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296, + 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318, + -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344, + -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771, + -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348, + 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473, + -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771, + 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473, + -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273, + -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393, + -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771, + -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273, + -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393, + -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273, + -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801, + -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567, + 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117, + 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965, + -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567, + 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965, + -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562, + -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567, + -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273, + 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473, + -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567, + 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473, + 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117, + -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421, + -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562, + -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149, + -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421, + -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149, + 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883, + -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082, + -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567, + -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562, + -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082, + -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562, + -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421, + -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801, + -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273, + -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567, + -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801, + -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567, + -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082, + -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484, + -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421, + 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883, + -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484, + 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883, + 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034, + -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491, + -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082, + -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421, + -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491, + -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421, + -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484, + -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839, + -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801, + -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082, + -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839, + -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082, + -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491, + -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987, + -0.821562,0.369566,0.434117,4.399629,0.850459,0.391855, + -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839, + -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987, + -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839, + -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517, + -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651, + 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013, + 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098, + -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651, + 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098, + -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296, + 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212, + -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651, + -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296, + 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212, + -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296, + -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393, + 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212, + -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393, + -0.821562,0.369566,0.434117,4.399629,0.850459,0.391855, + -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987, + 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873, + 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212, + -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987, + 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212, + -0.821562,0.369566,0.434117,4.399629,0.850459,0.391855, + -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393, + -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801, + -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839, + -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393, + -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839, + -0.821562,0.369566,0.434117,4.399629,0.850459,0.391855, + -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581, + -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491, + -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484, + -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581, + -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484, + -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431, + 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873, + -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987, + -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342, + -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987, + -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517, + -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819, + -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987, + -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819, + -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342, + -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342, + -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819, + -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988, + -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342, + -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988, + -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406, + -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839, + -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491, + -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517, + -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517, + -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491, + -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581, + -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517, + -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581, + -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819, + -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819, + -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581, + -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596, + -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819, + -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596, + -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988, + -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581, + -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431, + -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485, + -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581, + -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485, + -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596, + -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431, + 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892, + 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888, + -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431, + 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888, + -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485, + -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485, + 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888, + -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661, + -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485, + -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661, + -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944, + -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944, + -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661, + -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666, + -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944, + -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666, + -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388, + -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388, + -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666, + -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743, + -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388, + -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743, + -0.536419,0.710997,0.454685,4.304562,1.906537,0.572242, + 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409, + -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944, + -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388, + 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409, + -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388, + -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946, + -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596, + -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485, + -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944, + -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596, + -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944, + 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409, + -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988, + -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596, + 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409, + -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988, + 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409, + 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188, + -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406, + -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988, + 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188, + -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406, + 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188, + -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997, + 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188, + 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409, + -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946, + 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188, + -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946, + -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765, + -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997, + 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188, + -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765, + -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997, + -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765, + -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436, + 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787, + -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781, + -0.989689,-0.143234,0,4.912303,2.162645,-0.00009, + 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787, + -0.989689,-0.143234,0,4.912303,2.162645,-0.00009, + -0.965284,-0.261201,0,4.747988,2.300163,-0.000276, + 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993, + -0.998597,-0.052951,0,5.177545,1.932323,0.000214, + -0.941169,-0.337937,0,5.04969,2.032731,0.000071, + -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765, + -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891, + 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851, + -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765, + 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851, + -0.026558,-0.999647,0,5.680007,1.510009,0.000786, + -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724, + -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682, + -0.016213,0.999869,0,5.908842,1.388968,0.001026, + -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724, + -0.016213,0.999869,0,5.908842,1.388968,0.001026, + 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946, + -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255, + 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603, + -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745, + -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255, + -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745, + -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317, + -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164, + -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255, + -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317, + -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164, + -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317, + -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917, + -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894, + -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164, + -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917, + -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894, + -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917, + -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891, + -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317, + -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745, + 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863, + -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317, + 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863, + -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844, + -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917, + -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317, + -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844, + -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917, + -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844, + -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164, + -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891, + -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917, + -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164, + -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891, + -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164, + -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011, + -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892, + -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891, + -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011, + -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892, + -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011, + -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597, + -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972, + -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894, + -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891, + -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972, + -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891, + -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892, + 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117, + -0.965284,-0.261201,0,4.747988,2.300163,-0.000276, + 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117, + 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521, + 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603, + -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255, + -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164, + -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894, + -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894, + -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972, + -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894, + -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347, + 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764, + 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196, + -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347, + 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392, + -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193, + 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793, + 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392, + 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793, + 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987, + 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957, + 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392, + 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987, + 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957, + 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987, + 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282, + 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863, + 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951, + 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168, + 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863, + 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168, + -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844, + -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844, + 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168, + 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856, + -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844, + 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856, + -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164, + -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164, + 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856, + 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396, + -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164, + 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396, + -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011, + -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011, + 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396, + 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845, + -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011, + 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845, + -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597, + 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282, + 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385, + 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254, + 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282, + 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254, + 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957, + -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008, + 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254, + 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385, + -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008, + 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385, + 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987, + 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385, + 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168, + 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951, + 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385, + 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951, + 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987, + 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282, + 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856, + 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168, + 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282, + 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168, + 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385, + 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987, + 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396, + 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856, + 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987, + 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856, + 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282, + 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793, + 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845, + 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396, + 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793, + 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396, + 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254, + -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008, + 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964, + -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747, + 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254, + -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597, + 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392, + 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957, + -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597, + 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957, + 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254, + -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747, + -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597, + 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254, + -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643, + -0.749946,-0.01864,-0.661236,4.077563,2.305187,0.510338, + -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597, + -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643, + -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597, + -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747, + -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468, + -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643, + -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747, + -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468, + -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747, + -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964, + -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356, + -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067, + -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468, + -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356, + -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468, + -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964, + -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471, + -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193, + 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392, + -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597, + -0.749946,-0.01864,-0.661236,4.077563,2.305187,0.510338, + -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471, + -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597, + -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471, + 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392, + -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643, + -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149, + -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955, + -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643, + -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955, + -0.749946,-0.01864,-0.661236,4.077563,2.305187,0.510338, + -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468, + -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683, + -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149, + -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468, + -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149, + -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643, + -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067, + -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589, + -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683, + -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067, + -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683, + -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468, + -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149, + -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209, + -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372, + -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149, + -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372, + -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955, + -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795, + -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209, + -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149, + -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795, + -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149, + -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683, + -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589, + -0.936127,0.049437,0.348169,3.945464,2.1301,0.689536, + -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795, + -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589, + -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795, + -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683, + 0.73986,-0.312403,0.595828,4.212974,2.303184,0.587113, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471, + -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955, + 0.73986,-0.312403,0.595828,4.212974,2.303184,0.587113, + -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471, + -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955, + -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471, + -0.749946,-0.01864,-0.661236,4.077563,2.305187,0.510338, + -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955, + -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372, + -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927, + -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955, + -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927, + 0.73986,-0.312403,0.595828,4.212974,2.303184,0.587113, + -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372, + -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972, + -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749, + -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372, + -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749, + -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927, + -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209, + -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501, + -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972, + -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209, + -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972, + -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372, + -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795, + 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219, + -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501, + -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795, + -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501, + -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209, + -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972, + -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764, + 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172, + -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972, + 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172, + -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749, + -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501, + -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735, + -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764, + -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501, + -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764, + -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972, + 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219, + -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152, + -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735, + 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219, + -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735, + -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501, + 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986, + 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196, + 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862, + 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986, + 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862, + -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382, + 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862, + -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471, + -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764, + 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862, + -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764, + -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735, + 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196, + -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471, + 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862, + -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202, + 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172, + -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764, + -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471, + -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799, + -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202, + -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471, + -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202, + -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764, + 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196, + -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575, + -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799, + 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196, + -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799, + -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471, + 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986, + 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846, + -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575, + 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986, + -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575, + 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196, + -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054, + 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032, + 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846, + -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054, + 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846, + 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986, + -0.570564,0.630958,-0.525689,4.046673,2.341349,1.45253, + 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032, + -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054, + -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108, + 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862, + -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735, + -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108, + -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735, + -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152, + -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382, + 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862, + -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108, + -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086, + 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219, + -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795, + -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086, + -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795, + -0.936127,0.049437,0.348169,3.945464,2.1301,0.689536, + -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284, + -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152, + 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219, + -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284, + 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219, + -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086, + -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365, + -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108, + -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152, + -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365, + -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152, + -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284, + -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382, + -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108, + -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365, + -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054, + 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986, + -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382, + 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099, + -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382, + -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365, + 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099, + -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365, + 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561, + -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054, + -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382, + 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099, + 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093, + -0.570564,0.630958,-0.525689,4.046673,2.341349,1.45253, + -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054, + 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093, + -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054, + 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099, + 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093, + 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099, + 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737, + 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561, + 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002, + 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737, + 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561, + 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737, + 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099, + -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512, + 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002, + 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561, + -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512, + 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561, + -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846, + 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561, + -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365, + -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284, + 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561, + -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284, + -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846, + 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291, + -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067, + -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356, + 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291, + -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356, + -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563, + 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809, + -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589, + -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067, + 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809, + -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067, + 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291, + -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291, + -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087, + 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291, + -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809, + 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291, + 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654, + -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846, + -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284, + 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654, + -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284, + -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086, + -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086, + -0.936127,0.049437,0.348169,3.945464,2.1301,0.689536, + 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654, + 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654, + -0.936127,0.049437,0.348169,3.945464,2.1301,0.689536, + -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589, + 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654, + -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589, + 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654, + 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046, + 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654, + -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046, + -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512, + -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846, + -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046, + -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846, + 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654, + 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332, + 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + 0.424214,0.855079,-0.298131,4.3427,2.112281,0.516692, + 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332, + 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065, + 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407, + 0.424214,0.855079,-0.298131,4.3427,2.112281,0.516692, + 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065, + 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065, + 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794, + 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332, + 0.424214,0.855079,-0.298131,4.3427,2.112281,0.516692, + 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794, + 0.424214,0.855079,-0.298131,4.3427,2.112281,0.516692, + 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407, + 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163, + -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879, + 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032, + 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163, + 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032, + -0.570564,0.630958,-0.525689,4.046673,2.341349,1.45253, + 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259, + 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196, + 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031, + 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259, + 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031, + 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693, + 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196, + 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534, + 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031, + -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879, + -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646, + 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846, + -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879, + 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846, + 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032, + 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693, + 0.498956,0.866627,0.000639,4.197516,2.349135,1.253043, + -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646, + 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693, + -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646, + -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879, + 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693, + 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031, + 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454, + 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693, + 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454, + 0.498956,0.866627,0.000639,4.197516,2.349135,1.253043, + -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494, + 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075, + -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258, + -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494, + 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075, + -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258, + 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075, + -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016, + -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + 0.73986,-0.312403,0.595828,4.212974,2.303184,0.587113, + -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927, + 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749, + 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075, + -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749, + 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172, + -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202, + 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075, + 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172, + 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407, + 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065, + -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494, + -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894, + -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016, + 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075, + -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894, + 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075, + -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202, + -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894, + -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202, + -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799, + -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894, + -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799, + 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413, + 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413, + -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799, + -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575, + 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413, + -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575, + 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312, + -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575, + 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846, + -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646, + -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575, + -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646, + 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312, + 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444, + 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312, + -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646, + 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444, + -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646, + 0.498956,0.866627,0.000639,4.197516,2.349135,1.253043, + 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464, + 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413, + 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312, + 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464, + 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312, + 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444, + 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464, + 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459, + -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894, + 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464, + -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894, + 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413, + 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459, + 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693, + -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016, + 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459, + -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016, + -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894, + 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444, + 0.498956,0.866627,0.000639,4.197516,2.349135,1.253043, + 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454, + 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137, + 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464, + 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444, + 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137, + 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444, + 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454, + 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351, + 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407, + -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494, + 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351, + -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494, + -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258, + 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019, + -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258, + -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016, + 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019, + -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016, + 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693, + 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752, + 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459, + 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464, + 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752, + 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464, + 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137, + 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433, + 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693, + 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459, + 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433, + 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459, + 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752, + 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668, + 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019, + 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693, + 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668, + 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693, + 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433, + 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668, + 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433, + 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759, + 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759, + 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433, + 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752, + 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759, + 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752, + 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567, + 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567, + 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752, + 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137, + 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567, + 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137, + 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552, + 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552, + 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137, + 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454, + 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552, + 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454, + 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046, + 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046, + 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454, + 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031, + 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046, + 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031, + 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534, + 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668, + 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759, + 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856, + 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856, + 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759, + 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567, + 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856, + 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567, + 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178, + 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178, + 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567, + 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552, + 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178, + 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552, + 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252, + 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252, + 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552, + 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046, + 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252, + 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046, + 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323, + 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046, + 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534, + 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323, + 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197, + 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856, + 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178, + 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197, + 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178, + 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024, + 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024, + 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178, + 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252, + 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024, + 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252, + 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386, + 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386, + 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252, + 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323, + 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386, + 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323, + 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135, + 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135, + 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323, + 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534, + 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135, + 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534, + 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908, + 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908, + 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534, + 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196, + 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908, + 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196, + 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949, + 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196, + 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259, + 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949, + 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362, + -0.536419,0.710997,0.454685,4.304562,1.906537,0.572242, + 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351, + -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388, + -0.536419,0.710997,0.454685,4.304562,1.906537,0.572242, + 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362, + -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388, + 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362, + -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946, + -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743, + 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407, + 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351, + -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743, + 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351, + -0.536419,0.710997,0.454685,4.304562,1.906537,0.572242, + 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888, + 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794, + 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407, + 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888, + 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407, + -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743, + -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946, + 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765, + 0.391878,0.915416,0.091898,4.281287,2.055751,0.787, + -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258, + 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019, + 0.391878,0.915416,0.091898,4.281287,2.055751,0.787, + -0.121207,0.426739,0.896216,4.354941,2.064161,0.778851, + -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258, + -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641, + -0.121207,0.426739,0.896216,4.354941,2.064161,0.778851, + 0.391878,0.915416,0.091898,4.281287,2.055751,0.787, + 0.391878,0.915416,0.091898,4.281287,2.055751,0.787, + 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019, + 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668, + 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197, + 0.391878,0.915416,0.091898,4.281287,2.055751,0.787, + 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668, + 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197, + 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668, + 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856, + 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351, + -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258, + -0.121207,0.426739,0.896216,4.354941,2.064161,0.778851, + -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641, + 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362, + 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351, + -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641, + 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351, + -0.121207,0.426739,0.896216,4.354941,2.064161,0.778851, + -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641, + 0.391878,0.915416,0.091898,4.281287,2.055751,0.787, + 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197, + 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097, + 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648, + 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324, + 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097, + 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324, + 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334, + 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505, + 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641, + -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586, + 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505, + -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586, + -0.011269,-0.268801,-0.96313,5.672385,1.007694,0.341778, + -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072, + -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848, + -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749, + -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072, + -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749, + -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833, + -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149, + -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562, + 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965, + -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149, + 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965, + 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234, + 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034, + 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892, + -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431, + 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034, + -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431, + -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484, + 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165, + 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165, + 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518, + 0.152967,-0.640193,0.752831,4.697024,1.862575,0.604048, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358, + 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913, + 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025, + 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105, + 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466, + 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206, + 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853, + 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466, + 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853, + 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857, + 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312, + 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619, + -0.026366,0.234118,0.971851,4.751519,2.039658,0.634134, + 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761, + 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205, + 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724, + 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761, + 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724, + 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619, + 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724, + 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205, + 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206, + 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853, + 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713, + 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949, + 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057, + 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332, + 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987, + 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057, + 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987, + 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997, + 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793, + 0.72603,0.248277,0.641279,5.095375,1.961238,0.401516, + 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291, + 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793, + 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291, + 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974, + 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163, + -0.570564,0.630958,-0.525689,4.046673,2.341349,1.45253, + 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093, + 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949, + 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259, + 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163, + 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949, + 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163, + 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093, + -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641, + -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046, + -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641, + 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197, + -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512, + -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046, + 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197, + -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512, + 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197, + 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024, + 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002, + -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512, + 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024, + 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002, + 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024, + 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386, + 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737, + 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002, + 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386, + 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737, + 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386, + 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135, + 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093, + 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737, + 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135, + 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093, + 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135, + 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908, + 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093, + 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908, + 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949, + -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436, + -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087, + 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013, + -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651, + 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461, + 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013, + 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461, + -0.926486,-0.356041,-0.121897,4.126565,0.642027,0, + -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436, + -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087, + 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337, + -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997, + -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436, + 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337, + -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997, + 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337, + 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483, + -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406, + -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997, + 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483, + -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406, + 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483, + 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537, + -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342, + -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406, + 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537, + -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342, + 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537, + 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922, + 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873, + -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342, + 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922, + 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873, + 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922, + 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813, + 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212, + 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873, + 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813, + 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212, + 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813, + 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001, + -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651, + 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212, + 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001, + -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651, + 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001, + 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461, + 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051, + -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159, + 0.431966,-0.771434,-0.46722,3.71636,2.343387,0, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + 0.431966,-0.771434,-0.46722,3.71636,2.343387,0, + -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049, + -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341, + -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049, + 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193, + 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337, + -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087, + -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563, + 0.462789,0.48004,0.745243,3.814876,1.968416,0.443, + 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337, + -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563, + 0.462789,0.48004,0.745243,3.814876,1.968416,0.443, + -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563, + -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356, + 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051, + 0.462789,0.48004,0.745243,3.814876,1.968416,0.443, + -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356, + 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051, + -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356, + -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964, + -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435, + 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362, + -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641, + -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425, + 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796, + 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745, + -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425, + 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745, + 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269, + -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425, + -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263, + -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396, + -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425, + -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396, + 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796, + -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649, + -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747, + -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033, + -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649, + -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033, + -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423, + -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423, + 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922, + -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541, + -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423, + -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541, + 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399, + -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095, + 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309, + 0.072535,0.997366,0,-3.392806,1.769365,0, + 0.072535,0.997366,0,-3.392806,1.769365,0, + 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309, + 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273, + 0.072535,0.997366,0,-3.392806,1.769365,0, + 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273, + 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085, + -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879, + 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163, + 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259, + -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879, + 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259, + 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693, + -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572, + -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516, + 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672, + -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572, + 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672, + -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737, + -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516, + 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723, + 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546, + -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516, + 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546, + 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672, + 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273, + 0.490646,-0.178294,0.852923,-3.357009,1.781675,0.071216, + 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085, + 0.389161,-0.829175,-0.401277,-3.357009,1.781675,-0.071216, + 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273, + 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,13050,data,NULL}; +const struct gllist *cow_hide=&frame; diff --git a/hacks/glx/cow_hoofs.c b/hacks/glx/cow_hoofs.c new file mode 100644 index 0000000..b66ef88 --- /dev/null +++ b/hacks/glx/cow_hoofs.c @@ -0,0 +1,1037 @@ +#include "gllist.h" +static const float data[]={ + 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178, + -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816, + -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203, + 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178, + -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203, + 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122, + 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122, + -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203, + -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459, + 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122, + -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459, + 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726, + 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726, + -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459, + 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262, + 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726, + 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262, + -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118, + -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118, + 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841, + 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532, + -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118, + 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532, + 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726, + 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726, + 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532, + 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746, + 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726, + 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746, + 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122, + 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122, + 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746, + 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318, + 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122, + 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318, + 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178, + -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475, + -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459, + -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203, + -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475, + -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203, + -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503, + -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503, + -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203, + -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816, + -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503, + -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816, + -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866, + -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866, + -0.541077,0.245809,-0.804247,2.091539,-3.032437,-0.947029, + 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648, + -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866, + 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648, + 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927, + 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774, + 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318, + 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746, + 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774, + 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746, + 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981, + 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869, + 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981, + 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746, + 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869, + 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746, + 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532, + 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532, + 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841, + 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869, + 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237, + -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866, + -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816, + -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455, + 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096, + 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774, + -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455, + 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774, + 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078, + -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438, + 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869, + 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841, + -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438, + 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841, + -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088, + 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078, + 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774, + 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981, + 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078, + 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981, + -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488, + -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488, + 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981, + 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869, + -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488, + 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869, + -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438, + 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078, + -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538, + -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621, + 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078, + -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621, + -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455, + 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078, + -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488, + -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314, + 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078, + -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314, + -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538, + -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314, + -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488, + -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438, + -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314, + -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438, + -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103, + -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103, + -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438, + -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088, + -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103, + -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088, + -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005, + -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005, + -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088, + -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437, + -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005, + -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437, + -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888, + -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338, + 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237, + -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816, + -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338, + -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816, + 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178, + 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129, + -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338, + 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178, + 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129, + 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178, + 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318, + 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096, + 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129, + 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318, + 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096, + 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318, + 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774, + 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927, + 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648, + -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654, + 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927, + -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654, + -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285, + -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866, + 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927, + -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203, + -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866, + -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203, + -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503, + -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459, + -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475, + 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648, + -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459, + 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648, + 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262, + 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648, + -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475, + 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234, + 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648, + 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234, + 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417, + 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234, + -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475, + -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503, + 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234, + -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503, + -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203, + 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417, + 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234, + 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508, + 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417, + 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508, + 0.874983,0.217676,-0.43246,2.377814,-3.484109,-0.800332, + 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508, + 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234, + -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203, + 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508, + -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203, + 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955, + 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955, + -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203, + 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927, + 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955, + 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927, + -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285, + -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621, + -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538, + 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936, + -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621, + 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936, + 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855, + 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855, + 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936, + -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285, + 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855, + -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285, + -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654, + -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538, + -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936, + 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955, + 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936, + 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955, + -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314, + -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103, + -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103, + 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508, + -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005, + -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + 0.874983,0.217676,-0.43246,2.377814,-3.484109,-0.800332, + 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + 0.874983,0.217676,-0.43246,2.377814,-3.484109,-0.800332, + 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007, + -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888, + 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417, + 0.874983,0.217676,-0.43246,2.377814,-3.484109,-0.800332, + -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888, + 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417, + -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888, + -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437, + -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088, + 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841, + -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118, + -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088, + -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118, + -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437, + 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237, + -0.541077,0.245809,-0.804247,2.091539,-3.032437,-0.947029, + -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866, + -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437, + -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118, + 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262, + -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437, + 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262, + 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648, + -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437, + 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648, + 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417, + -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296, + 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934, + -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321, + -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296, + -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321, + -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324, + -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324, + -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321, + 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577, + -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324, + 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577, + -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844, + -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844, + 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577, + -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738, + -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844, + -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738, + 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236, + 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236, + 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959, + 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265, + 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236, + 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265, + -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844, + -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844, + 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265, + 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864, + -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844, + 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864, + -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324, + -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324, + 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864, + 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436, + -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324, + 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436, + -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296, + -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593, + 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577, + -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321, + -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593, + -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321, + -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621, + -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621, + -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321, + 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934, + -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621, + 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934, + -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984, + -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984, + 0.637284,0.689194,-0.344791,-2.90901,-3.084482,-1.089147, + 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766, + -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984, + 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766, + -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045, + 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892, + 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436, + 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864, + 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892, + 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864, + 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099, + 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987, + 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099, + 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864, + 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987, + 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864, + 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265, + 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265, + 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959, + 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987, + 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355, + -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984, + 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934, + 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573, + 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214, + 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892, + 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573, + 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892, + 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196, + -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556, + 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987, + 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959, + -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556, + 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959, + -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206, + 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196, + 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892, + 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099, + 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196, + 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099, + -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606, + -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606, + 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099, + 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987, + -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606, + 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987, + -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556, + 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196, + -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656, + -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739, + 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196, + -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739, + 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573, + 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196, + -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606, + -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432, + 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196, + -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432, + -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656, + -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432, + -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606, + -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556, + -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432, + -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556, + -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221, + -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221, + -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556, + -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206, + -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221, + -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206, + -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123, + -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123, + -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206, + 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555, + -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123, + 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555, + 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006, + -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456, + 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355, + 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934, + -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456, + 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934, + -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296, + -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247, + -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456, + -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296, + -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247, + -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296, + 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436, + 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214, + -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247, + 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436, + 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214, + 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436, + 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892, + -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045, + 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766, + 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772, + -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045, + 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772, + 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403, + -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984, + -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045, + 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148, + -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984, + 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148, + -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621, + 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577, + -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593, + 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598, + 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577, + 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598, + -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738, + 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598, + -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593, + 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352, + 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598, + 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352, + 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535, + 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352, + -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593, + -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621, + 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352, + -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621, + 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148, + 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535, + 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352, + 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626, + 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535, + 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626, + 0.712283,0.385667,0.586441,-2.593513,-3.536154,-0.94245, + 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626, + 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352, + 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148, + 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626, + 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148, + 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073, + 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073, + 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148, + -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045, + 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073, + -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045, + 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403, + -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739, + -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656, + 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054, + -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739, + 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054, + 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973, + 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973, + 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054, + 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403, + 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973, + 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403, + 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772, + -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656, + -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054, + 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073, + 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054, + 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073, + 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432, + -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221, + -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221, + 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626, + -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123, + 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + 0.712283,0.385667,0.586441,-2.593513,-3.536154,-0.94245, + 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + 0.712283,0.385667,0.586441,-2.593513,-3.536154,-0.94245, + 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125, + 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006, + 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535, + 0.712283,0.385667,0.586441,-2.593513,-3.536154,-0.94245, + 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006, + 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535, + 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006, + 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555, + -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206, + 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959, + 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236, + -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206, + 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236, + 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555, + 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355, + 0.637284,0.689194,-0.344791,-2.90901,-3.084482,-1.089147, + -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984, + 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555, + 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236, + -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738, + 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555, + -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738, + 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598, + 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555, + 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598, + 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535, + -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122, + -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203, + 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816, + -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122, + 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816, + -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178, + -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726, + -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459, + -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203, + -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726, + -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203, + -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122, + -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118, + -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262, + -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459, + -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118, + -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459, + -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726, + -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726, + 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532, + -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841, + -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726, + -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841, + -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118, + -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122, + 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746, + 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532, + -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122, + 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532, + -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726, + -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178, + 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318, + 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746, + -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178, + 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746, + -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122, + 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503, + -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203, + -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459, + 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503, + -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459, + 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475, + 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866, + 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816, + -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203, + 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866, + -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203, + 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503, + 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927, + 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648, + 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029, + 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927, + 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029, + 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866, + 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981, + 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746, + 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318, + 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981, + 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318, + 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774, + 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532, + 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746, + 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981, + 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532, + 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981, + 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869, + 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869, + -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841, + 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532, + 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816, + 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866, + -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237, + -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078, + 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774, + -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096, + -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078, + -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096, + -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455, + -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088, + -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841, + 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869, + -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088, + 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869, + 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438, + -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488, + 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981, + 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774, + -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488, + 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774, + -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078, + 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438, + 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869, + 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981, + 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438, + 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981, + -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488, + -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455, + -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621, + -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538, + -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455, + -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538, + -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078, + -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538, + -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314, + -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488, + -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538, + -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488, + -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078, + -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103, + 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438, + -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488, + -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103, + -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488, + -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314, + 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005, + -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088, + 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438, + 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005, + 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438, + -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103, + 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888, + 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437, + -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088, + 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888, + -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088, + 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005, + -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178, + 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816, + -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237, + -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178, + -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237, + 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338, + 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318, + -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178, + 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338, + 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318, + 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338, + 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129, + 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774, + 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318, + 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129, + 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774, + 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129, + -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096, + -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285, + -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654, + 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648, + -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285, + 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648, + 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927, + 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503, + -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203, + 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927, + 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503, + 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927, + 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866, + -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262, + 0.507452,0.36284,0.781562,2.386827,-3.462222,1.13648, + 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475, + -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262, + 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475, + -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459, + 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417, + 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234, + 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475, + 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417, + 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475, + 0.507452,0.36284,0.781562,2.386827,-3.462222,1.13648, + -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203, + 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503, + 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475, + -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203, + 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475, + 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234, + 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332, + 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508, + 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234, + 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332, + 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234, + 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417, + 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955, + -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203, + 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234, + 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955, + 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234, + 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508, + -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285, + 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927, + -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203, + -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285, + -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203, + 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955, + -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855, + 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936, + -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538, + -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855, + -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538, + -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621, + -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654, + -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285, + 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936, + -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654, + 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936, + -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855, + 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936, + 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007, + -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314, + 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936, + -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314, + -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538, + -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285, + 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955, + 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007, + -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285, + 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007, + 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936, + -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103, + -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314, + 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007, + -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103, + 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007, + 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005, + 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508, + 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007, + 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955, + 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007, + 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888, + 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005, + 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888, + 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007, + 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508, + 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888, + 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508, + 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332, + 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437, + 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888, + 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332, + 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437, + 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332, + 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417, + 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437, + -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118, + -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841, + 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437, + -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841, + -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088, + 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866, + 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029, + -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237, + 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417, + 0.507452,0.36284,0.781562,2.386827,-3.462222,1.13648, + -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262, + 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417, + -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262, + -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118, + 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417, + -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118, + 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437, + 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324, + 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321, + 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934, + 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324, + 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934, + 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296, + 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844, + 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577, + 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321, + 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844, + 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321, + 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324, + -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236, + -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738, + 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577, + -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236, + 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577, + 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844, + 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844, + -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265, + -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959, + 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844, + -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959, + -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236, + 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324, + 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864, + -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265, + 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324, + -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265, + 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844, + 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296, + 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436, + 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864, + 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296, + 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864, + 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324, + 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621, + 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321, + 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577, + 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621, + 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577, + -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593, + -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984, + 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934, + 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321, + -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984, + 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321, + 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621, + -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045, + -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766, + 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147, + -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045, + 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147, + -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984, + -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099, + 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864, + 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436, + -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099, + 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436, + -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892, + -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265, + 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864, + -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099, + -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265, + -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099, + -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987, + -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987, + -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959, + -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265, + 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934, + -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984, + -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355, + -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196, + -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892, + 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214, + -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196, + 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214, + -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573, + -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206, + -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959, + -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987, + -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206, + -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987, + -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556, + -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606, + -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099, + -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892, + -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606, + -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892, + -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196, + -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556, + -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987, + -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099, + -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556, + -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099, + -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606, + -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573, + -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739, + -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656, + -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573, + -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656, + -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196, + -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656, + -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432, + -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606, + -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656, + -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606, + -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196, + -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221, + -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556, + -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606, + -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221, + -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606, + -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432, + -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123, + -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206, + -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556, + -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123, + -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556, + -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221, + 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006, + 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555, + -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206, + 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006, + -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206, + -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123, + 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296, + 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934, + -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355, + 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296, + -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355, + -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456, + 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436, + 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296, + -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456, + 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436, + -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456, + 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247, + -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892, + 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436, + 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247, + -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892, + 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247, + 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214, + 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403, + 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772, + -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766, + 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403, + -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766, + -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045, + 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621, + 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148, + -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045, + 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621, + -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045, + -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984, + -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738, + 0.35124,-0.91474,-0.199704,-2.58358,-3.514267,1.278598, + -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593, + -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738, + -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593, + 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577, + 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535, + -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352, + -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593, + 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535, + -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593, + 0.35124,-0.91474,-0.199704,-2.58358,-3.514267,1.278598, + 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148, + 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621, + -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593, + 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148, + -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593, + -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352, + -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245, + -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626, + -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352, + -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245, + -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352, + 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535, + -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073, + 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148, + -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352, + -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073, + -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352, + -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626, + 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403, + -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045, + 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148, + 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403, + 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148, + -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073, + -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973, + -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054, + -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656, + -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973, + -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656, + -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739, + 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772, + 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403, + -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054, + 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772, + -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054, + -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973, + -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054, + -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125, + -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432, + -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054, + -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432, + -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656, + 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403, + -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073, + -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125, + 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403, + -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125, + -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054, + -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221, + -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432, + -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125, + -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221, + -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125, + -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123, + -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626, + -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125, + -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073, + -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125, + 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006, + -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123, + 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006, + -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125, + -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626, + 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006, + -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626, + -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245, + 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555, + 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006, + -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245, + 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555, + -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245, + 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535, + 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555, + -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236, + -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959, + 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555, + -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959, + -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206, + -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984, + 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147, + -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355, + 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535, + 0.35124,-0.91474,-0.199704,-2.58358,-3.514267,1.278598, + -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738, + 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535, + -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738, + -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236, + 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535, + -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236, + 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1032,data,NULL}; +const struct gllist *cow_hoofs=&frame; diff --git a/hacks/glx/cow_horns.c b/hacks/glx/cow_horns.c new file mode 100644 index 0000000..2d5dbe9 --- /dev/null +++ b/hacks/glx/cow_horns.c @@ -0,0 +1,1025 @@ +#include "gllist.h" +static const float data[]={ + -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916, + -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597, + -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892, + -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916, + -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892, + -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949, + -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949, + -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892, + -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972, + -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949, + -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972, + -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692, + 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369, + -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916, + -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949, + 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369, + -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949, + 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817, + 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817, + -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949, + -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692, + 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817, + -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692, + 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562, + 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905, + 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369, + 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817, + 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905, + 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817, + 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132, + 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132, + 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817, + 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562, + 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132, + 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562, + 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301, + 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531, + 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905, + 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132, + 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531, + 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132, + 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267, + 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132, + 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301, + 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542, + 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132, + 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542, + 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267, + 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972, + 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531, + 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267, + 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972, + 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267, + 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378, + 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267, + 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542, + 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363, + 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267, + 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363, + 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378, + -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692, + -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972, + 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347, + -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692, + 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347, + 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432, + 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562, + -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692, + 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432, + 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562, + 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432, + 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287, + 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301, + 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562, + 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287, + 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301, + 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287, + 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888, + 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542, + 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301, + 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888, + 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542, + 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888, + 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427, + 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363, + 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542, + 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427, + 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363, + 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427, + 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452, + 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684, + 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363, + 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452, + 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684, + 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452, + -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006, + 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295, + 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378, + 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363, + 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295, + 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363, + 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684, + 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859, + 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972, + 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378, + 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859, + 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378, + 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295, + -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044, + 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684, + -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006, + -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044, + -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006, + -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513, + -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625, + 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295, + 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684, + -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625, + 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684, + -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044, + -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965, + 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859, + 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295, + -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965, + 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295, + -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625, + -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887, + -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044, + -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513, + -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887, + -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513, + -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636, + -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406, + -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625, + -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044, + -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406, + -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044, + -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887, + -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965, + -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625, + -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406, + -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965, + -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406, + -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918, + -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406, + -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887, + -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636, + -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322, + 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432, + 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347, + -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322, + 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347, + 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764, + -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128, + 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287, + 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432, + -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128, + 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432, + -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322, + 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888, + 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287, + -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128, + 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888, + -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128, + -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189, + -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128, + -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322, + -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751, + -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128, + -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751, + -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583, + -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751, + -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322, + 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764, + -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751, + 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189, + -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128, + -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583, + -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189, + -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583, + -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757, + 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427, + 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888, + -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189, + 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427, + -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189, + -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566, + -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566, + -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189, + -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757, + -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566, + -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757, + -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515, + 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452, + 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427, + -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566, + 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452, + -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566, + -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193, + -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193, + -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566, + -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515, + -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193, + -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515, + -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571, + -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006, + 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452, + -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193, + -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006, + -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193, + -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927, + -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927, + -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193, + -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571, + -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927, + -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571, + -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235, + 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389, + -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927, + -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235, + 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389, + -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235, + 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311, + -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827, + 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389, + 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311, + -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827, + 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311, + -0.476949,0.871028,-0.117606,4.856249,2.593812,-0.867067, + -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513, + -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006, + -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927, + -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513, + -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927, + 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389, + -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636, + -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513, + 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389, + -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636, + 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389, + -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827, + -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618, + -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235, + -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571, + -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618, + -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571, + -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659, + -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235, + -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618, + -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248, + -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235, + -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248, + 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311, + -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163, + -0.476949,0.871028,-0.117606,4.856249,2.593812,-0.867067, + 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311, + -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163, + 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311, + -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248, + -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571, + -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515, + -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532, + -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571, + -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532, + -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659, + -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532, + -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515, + -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757, + -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532, + -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757, + -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316, + -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316, + -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757, + -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583, + -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316, + -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583, + -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016, + -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016, + -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583, + -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751, + -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016, + -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751, + -0.557881,0.828586,0.047047,4.193959,2.370476,-0.616705, + -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471, + -0.557881,0.828586,0.047047,4.193959,2.370476,-0.616705, + -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751, + -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471, + -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751, + -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796, + -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.476949,0.871028,-0.117606,4.856249,2.593812,-0.867067, + -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248, + -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089, + 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431, + -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248, + 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431, + -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163, + -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618, + 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986, + -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089, + -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618, + -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089, + -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248, + -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659, + -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002, + 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986, + -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659, + 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986, + -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618, + -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532, + -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106, + -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002, + -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532, + -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002, + -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659, + -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316, + -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726, + -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106, + -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316, + -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106, + -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532, + -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016, + -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311, + -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726, + -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016, + -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726, + -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316, + -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163, + 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029, + -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311, + -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016, + -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029, + -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016, + -0.557881,0.828586,0.047047,4.193959,2.370476,-0.616705, + -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029, + -0.557881,0.828586,0.047047,4.193959,2.370476,-0.616705, + -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471, + -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029, + -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471, + -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193, + -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726, + -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613, + -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347, + -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726, + -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347, + -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106, + -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106, + -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347, + -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972, + -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106, + -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972, + -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002, + -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002, + -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972, + -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445, + -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002, + -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445, + 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986, + -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311, + -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651, + -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613, + -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311, + -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613, + -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726, + -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437, + -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651, + -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311, + -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437, + -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311, + -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029, + -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793, + -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437, + -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029, + -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793, + -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029, + -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193, + -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445, + 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279, + -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089, + -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445, + -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089, + 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986, + -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089, + 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279, + 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666, + -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089, + 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666, + 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431, + -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916, + -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606, + -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845, + -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916, + -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845, + -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597, + 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859, + -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333, + -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675, + 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859, + -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675, + 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972, + 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972, + -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675, + -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545, + 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972, + -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545, + 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531, + 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531, + -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545, + -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674, + 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531, + -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674, + 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905, + -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606, + -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916, + 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369, + -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606, + 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369, + -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384, + -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793, + -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845, + -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606, + -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793, + -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606, + -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437, + -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384, + 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369, + 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905, + -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384, + 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905, + -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674, + -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437, + -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606, + -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384, + -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437, + -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384, + -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651, + -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651, + -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384, + -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674, + -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651, + -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674, + -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613, + -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613, + -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674, + -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545, + -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613, + -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545, + -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347, + -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347, + -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545, + -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675, + -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347, + -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675, + -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972, + 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859, + -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965, + -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329, + 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859, + -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329, + -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333, + -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918, + -0.145585,0.915338,0.375448,4.827733,2.75439,-0.905049, + -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329, + -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918, + -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329, + -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965, + -0.145585,0.915338,0.375448,4.827733,2.75439,-0.905049, + -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675, + -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333, + -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445, + -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675, + -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445, + -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972, + -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333, + -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329, + 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279, + -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333, + 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279, + -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445, + 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666, + 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279, + -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329, + 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666, + -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329, + -0.145585,0.915338,0.375448,4.827733,2.75439,-0.905049, + 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666, + -0.145585,0.915338,0.375448,4.827733,2.75439,-0.905049, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431, + 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636, + -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827, + -0.476949,0.871028,-0.117606,4.856249,2.593812,-0.867067, + -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729, + -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949, + -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892, + -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597, + -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949, + -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597, + -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916, + 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692, + -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972, + -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892, + 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692, + -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892, + -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949, + 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817, + -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949, + -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916, + 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817, + -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916, + 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369, + -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562, + 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692, + -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949, + -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562, + -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949, + 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817, + -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132, + 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817, + 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369, + -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132, + 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369, + -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905, + -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301, + -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562, + 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817, + -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301, + 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817, + -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132, + -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267, + -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132, + -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905, + -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267, + -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905, + -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531, + -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267, + -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542, + -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301, + -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267, + -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301, + -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132, + -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378, + -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267, + -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531, + -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378, + -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531, + -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972, + -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378, + -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363, + -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542, + -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378, + -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542, + -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267, + -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432, + -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347, + -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972, + -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432, + -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972, + 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692, + -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287, + -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432, + 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692, + -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287, + 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692, + -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562, + -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888, + -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287, + -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562, + -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888, + -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562, + -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301, + -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427, + -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888, + -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301, + -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427, + -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301, + -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542, + -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452, + -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427, + -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542, + -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452, + -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542, + -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363, + -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006, + -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452, + -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363, + -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006, + -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363, + -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684, + -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684, + -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363, + -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378, + -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684, + -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378, + -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295, + -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295, + -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378, + -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972, + -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295, + -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972, + -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859, + -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513, + -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006, + -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684, + -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513, + -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684, + -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044, + -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044, + -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684, + -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295, + -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044, + -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295, + -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625, + -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625, + -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295, + -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859, + -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625, + -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859, + -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965, + -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636, + -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513, + -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044, + -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636, + -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044, + -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887, + -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887, + -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044, + -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625, + -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887, + -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625, + -0.832539,-0.5495,0.070196,4.811798,2.72868,0.815406, + -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918, + -0.832539,-0.5495,0.070196,4.811798,2.72868,0.815406, + -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625, + -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918, + -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625, + -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965, + -0.832539,-0.5495,0.070196,4.811798,2.72868,0.815406, + -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887, + -0.832539,-0.5495,0.070196,4.811798,2.72868,0.815406, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636, + -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764, + -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347, + -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432, + 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764, + -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432, + -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322, + -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322, + -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432, + -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287, + -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322, + -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287, + -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128, + -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189, + -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128, + -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287, + -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189, + -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287, + -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888, + -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583, + -0.938303,-0.3372,0.076703,4.314039,2.32946,0.57751, + -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322, + -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583, + -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322, + -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764, + -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322, + -0.938303,-0.3372,0.076703,4.314039,2.32946,0.57751, + -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757, + -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583, + -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128, + -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757, + -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128, + -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189, + -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566, + -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189, + -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888, + -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566, + -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888, + -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427, + 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515, + -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757, + -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189, + 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515, + -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189, + -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566, + 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193, + -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566, + -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427, + 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193, + -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427, + -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452, + 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571, + 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515, + -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566, + 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571, + -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566, + 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193, + 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927, + 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193, + -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452, + 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927, + -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452, + -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006, + 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235, + 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571, + 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193, + 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235, + 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193, + 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927, + -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311, + 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235, + 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927, + -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311, + 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927, + -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389, + -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067, + -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311, + -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389, + -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067, + -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389, + -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827, + -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389, + 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927, + -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006, + -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389, + -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006, + -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513, + -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827, + -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389, + -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513, + -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827, + -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513, + -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636, + -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659, + 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571, + 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235, + -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659, + 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235, + -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618, + -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311, + -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248, + -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618, + -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311, + -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618, + 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235, + -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248, + -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311, + -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067, + -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248, + -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067, + -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163, + -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659, + -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532, + 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515, + -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659, + 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515, + 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571, + -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316, + -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757, + 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515, + -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316, + 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515, + -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532, + -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016, + -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583, + -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757, + -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016, + -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757, + -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316, + -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705, + -0.938303,-0.3372,0.076703,4.314039,2.32946,0.57751, + -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583, + -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705, + -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583, + -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + -0.938303,-0.3372,0.076703,4.314039,2.32946,0.57751, + -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705, + -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796, + -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705, + -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471, + -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163, + -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163, + 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431, + -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089, + -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163, + -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089, + -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248, + -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248, + -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089, + 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986, + -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248, + 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986, + -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618, + -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618, + 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986, + -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002, + -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618, + -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002, + -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659, + -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659, + -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002, + -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106, + -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659, + -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106, + -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532, + -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532, + -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106, + -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726, + -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532, + -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726, + -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316, + -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316, + -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726, + -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311, + -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316, + -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311, + -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431, + -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163, + -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705, + -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016, + -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311, + -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705, + -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311, + -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029, + -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193, + -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471, + -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705, + -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193, + -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705, + -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029, + -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106, + -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347, + -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613, + -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106, + -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613, + -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726, + -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002, + -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972, + -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347, + -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002, + -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347, + -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106, + 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986, + -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445, + -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972, + 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986, + -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972, + -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002, + -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726, + -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613, + -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651, + -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726, + -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651, + -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311, + -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029, + -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311, + -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651, + -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029, + -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651, + -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437, + -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193, + -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029, + -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437, + -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193, + -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437, + 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793, + 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986, + -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089, + 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279, + 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986, + 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279, + -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445, + 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431, + 0.728229,-0.106722,-0.676973,4.863709,2.722151,0.93666, + 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279, + 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431, + 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279, + -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089, + -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597, + 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845, + 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606, + -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597, + 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606, + -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916, + -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972, + -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675, + 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333, + -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972, + 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333, + -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859, + -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531, + -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545, + -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675, + -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531, + -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675, + -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972, + -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905, + -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674, + -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545, + -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905, + -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545, + -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531, + 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384, + 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369, + -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916, + 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384, + -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916, + 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606, + -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437, + 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606, + 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845, + -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437, + 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845, + 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793, + -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674, + -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905, + 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369, + -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674, + 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369, + 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384, + -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651, + 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384, + 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606, + -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651, + 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606, + -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437, + -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613, + -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674, + 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384, + -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613, + 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384, + -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651, + -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347, + -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545, + -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674, + -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347, + -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674, + -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613, + -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972, + -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675, + -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545, + -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972, + -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545, + -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347, + 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333, + 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329, + -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965, + 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333, + -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965, + -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859, + -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965, + 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329, + -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049, + -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965, + -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049, + -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918, + -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049, + -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972, + -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445, + 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333, + -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972, + 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333, + -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675, + -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445, + 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279, + 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329, + -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445, + 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329, + 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333, + -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049, + 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329, + 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279, + -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049, + 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279, + 0.728229,-0.106722,-0.676973,4.863709,2.722151,0.93666, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049, + 0.728229,-0.106722,-0.676973,4.863709,2.722151,0.93666, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + 0.728229,-0.106722,-0.676973,4.863709,2.722151,0.93666, + 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827, + -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636, + -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729, + -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067, + -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1020,data,NULL}; +const struct gllist *cow_horns=&frame; diff --git a/hacks/glx/cow_tail.c b/hacks/glx/cow_tail.c new file mode 100644 index 0000000..895f05c --- /dev/null +++ b/hacks/glx/cow_tail.c @@ -0,0 +1,464 @@ +#include "gllist.h" +static const float data[]={ + -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574, + 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478, + 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946, + -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574, + 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946, + -0.548359,-0.017804,0.836053,-3.699784,-0.759901,0.088664, + -0.548359,-0.017804,0.836053,-3.699784,-0.759901,0.088664, + 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946, + -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793, + -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793, + 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946, + -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139, + -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793, + -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139, + -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261, + -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261, + -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139, + -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951, + -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261, + -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951, + -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719, + -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719, + -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951, + -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533, + -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719, + -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533, + 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371, + 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371, + -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533, + -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233, + -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233, + -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533, + 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612, + -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233, + 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612, + 0.002322,-0.058071,0.99831,-3.828485,-1.786559,-0.114095, + 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478, + 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258, + 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946, + 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258, + 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237, + 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946, + 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946, + 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237, + -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139, + 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237, + 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282, + -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139, + 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282, + 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322, + -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139, + -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139, + 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322, + -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951, + 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322, + 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147, + -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951, + -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951, + 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147, + -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533, + 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147, + 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331, + -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533, + -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533, + 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331, + 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612, + 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331, + 0.791625,0.052579,0.608741,-4.107191,-1.83652,0.120149, + 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612, + 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258, + 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572, + 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579, + 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258, + 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579, + 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237, + 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237, + 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579, + 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806, + 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237, + 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806, + 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282, + 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282, + 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806, + 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243, + 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282, + 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243, + 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322, + 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322, + 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243, + 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149, + 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322, + 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149, + 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147, + 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147, + 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149, + 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852, + 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147, + 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852, + 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331, + 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331, + 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852, + 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104, + 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331, + 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104, + 0.791625,0.052579,0.608741,-4.107191,-1.83652,0.120149, + 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572, + 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883, + 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928, + 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572, + 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928, + 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579, + 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579, + 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928, + 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305, + 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579, + 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305, + 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806, + 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806, + 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305, + 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243, + 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243, + 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305, + 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745, + 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243, + 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745, + 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149, + 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149, + 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745, + 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191, + 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149, + 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191, + 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852, + 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852, + 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191, + 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707, + 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852, + 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707, + 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104, + 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883, + 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354, + -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554, + 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883, + -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554, + 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928, + 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928, + -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554, + -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894, + 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928, + -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894, + 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305, + 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305, + -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894, + -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156, + 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305, + -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156, + 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745, + 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745, + -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156, + -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329, + 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745, + -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329, + 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191, + 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191, + -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329, + 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978, + 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191, + 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978, + 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707, + 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354, + 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407, + 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326, + 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354, + 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326, + -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554, + -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554, + 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326, + 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074, + -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554, + 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074, + -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894, + -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894, + 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074, + 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938, + -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894, + 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938, + -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156, + -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156, + 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938, + 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839, + -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156, + 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839, + -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329, + -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329, + 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839, + 0.129519,-0.132707,0.982656,-4.445835,-2.015127,0.189702, + -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329, + 0.129519,-0.132707,0.982656,-4.445835,-2.015127,0.189702, + 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978, + 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407, + -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307, + -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968, + 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407, + -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968, + 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326, + 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326, + -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968, + 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034, + 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326, + 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034, + 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074, + 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074, + 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034, + 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562, + 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074, + 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562, + 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938, + 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938, + 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562, + 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593, + 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938, + 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593, + 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839, + 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839, + 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593, + 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602, + 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839, + 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602, + 0.129519,-0.132707,0.982656,-4.445835,-2.015127,0.189702, + -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307, + 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159, + -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649, + -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307, + -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649, + -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968, + -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968, + -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649, + -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716, + -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968, + -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716, + 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034, + 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034, + -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716, + -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859, + 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034, + -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859, + 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562, + 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562, + -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859, + -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878, + 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562, + -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878, + 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593, + 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593, + -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878, + -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502, + 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593, + -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502, + 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602, + 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159, + 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169, + 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171, + 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159, + 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171, + -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649, + -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649, + 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171, + -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641, + -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649, + -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641, + -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716, + -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716, + -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641, + 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382, + -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716, + 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382, + -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859, + -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859, + 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382, + 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659, + -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859, + 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659, + -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878, + -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878, + 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659, + 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072, + -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878, + 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072, + -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502, + 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169, + 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361, + 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171, + 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361, + 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495, + 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171, + 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171, + 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495, + -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641, + 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495, + 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807, + -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641, + 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807, + 0.794828,0.083383,0.601079,-4.000019,-1.567512,-0.27535, + -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641, + -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641, + 0.794828,0.083383,0.601079,-4.000019,-1.567512,-0.27535, + 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382, + 0.794828,0.083383,0.601079,-4.000019,-1.567512,-0.27535, + 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909, + 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382, + 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382, + 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909, + 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659, + 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909, + 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324, + 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659, + 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659, + 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324, + 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072, + 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324, + 0.506864,-0.193038,0.840134,-4.192486,-1.953852,0.017313, + 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072, + 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209, + 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497, + 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478, + 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209, + 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478, + -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574, + 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472, + 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407, + 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354, + 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472, + 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354, + 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883, + 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472, + 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883, + 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572, + 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305, + 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472, + 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572, + 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305, + 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572, + 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258, + 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497, + 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258, + 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478, + 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164, + 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962, + 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407, + 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369, + 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361, + 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169, + 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323, + 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369, + 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169, + -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447, + 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323, + 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169, + -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447, + 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169, + 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159, + -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447, + 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159, + -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307, + 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918, + -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447, + -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307, + 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962, + -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307, + 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407, + 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361, + -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044, + 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909, + 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361, + 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369, + -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044, + 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209, + -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574, + 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893, + 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893, + 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361, + 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909, + -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574, + -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793, + -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261, + 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807, + 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495, + 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371, + 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893, + -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574, + -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261, + 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893, + -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261, + -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719, + 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893, + -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719, + 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371, + 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361, + 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893, + 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371, + 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495, + 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361, + 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371, + 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909, + 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612, + 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324, + 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909, + 0.794828,0.083383,0.601079,-4.000019,-1.567512,-0.27535, + 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807, + 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807, + 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371, + -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233, + 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807, + -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233, + 0.002322,-0.058071,0.99831,-3.828485,-1.786559,-0.114095, + 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807, + 0.002322,-0.058071,0.99831,-3.828485,-1.786559,-0.114095, + 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612, + 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909, + 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807, + 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612, + 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612, + 0.791625,0.052579,0.608741,-4.107191,-1.83652,0.120149, + 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324, + 0.791625,0.052579,0.608741,-4.107191,-1.83652,0.120149, + 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104, + 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324, + 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978, + 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602, + 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707, + 0.506864,-0.193038,0.840134,-4.192486,-1.953852,0.017313, + 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324, + 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104, + 0.506864,-0.193038,0.840134,-4.192486,-1.953852,0.017313, + 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104, + 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707, + 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072, + 0.506864,-0.193038,0.840134,-4.192486,-1.953852,0.017313, + 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707, + -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502, + 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072, + 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707, + 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602, + -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502, + 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707, + 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978, + 0.129519,-0.132707,0.982656,-4.445835,-2.015127,0.189702, + 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602, + 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497, + 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305, + 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258, + 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472, + 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164, + 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407, + 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962, + 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918, + -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307, + 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893, + 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909, + 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,459,data,NULL}; +const struct gllist *cow_tail=&frame; diff --git a/hacks/glx/cow_udder.c b/hacks/glx/cow_udder.c new file mode 100644 index 0000000..46df87c --- /dev/null +++ b/hacks/glx/cow_udder.c @@ -0,0 +1,1520 @@ +#include "gllist.h" +static const float data[]={ + 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422, + -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096, + 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238, + -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096, + 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422, + -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701, + -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701, + 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422, + -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381, + -0.955382,-0.23808,-0.174826,-2.462835,-1.3055,-0.966395, + 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238, + -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761, + -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761, + 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238, + -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096, + -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761, + -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096, + 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465, + 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465, + -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096, + -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701, + 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465, + -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701, + 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911, + 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911, + -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701, + -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381, + 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911, + -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381, + 0.335613,-0.388493,-0.858159,-1.776785,-1.275107,-0.914703, + 0.335613,-0.388493,-0.858159,-1.776785,-1.275107,-0.914703, + -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381, + -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427, + -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427, + -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381, + 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424, + 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547, + -0.955382,-0.23808,-0.174826,-2.462835,-1.3055,-0.966395, + -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761, + 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547, + -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761, + 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222, + 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222, + -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761, + 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465, + 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222, + 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465, + 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926, + 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926, + 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465, + 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911, + 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926, + 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911, + -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319, + -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319, + 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911, + 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827, + -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319, + 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827, + 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454, + 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827, + 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911, + 0.335613,-0.388493,-0.858159,-1.776785,-1.275107,-0.914703, + 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827, + 0.335613,-0.388493,-0.858159,-1.776785,-1.275107,-0.914703, + -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427, + 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827, + -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427, + 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373, + 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373, + -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427, + 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424, + 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373, + 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424, + 0.155794,-0.590112,-0.792146,-1.592146,-1.408592,-0.838483, + 0.155794,-0.590112,-0.792146,-1.592146,-1.408592,-0.838483, + 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424, + 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708, + 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708, + 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181, + 0.155794,-0.590112,-0.792146,-1.592146,-1.408592,-0.838483, + 0.155794,-0.590112,-0.792146,-1.592146,-1.408592,-0.838483, + 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181, + 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373, + 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373, + 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181, + 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454, + 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373, + 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454, + 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827, + 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708, + 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424, + -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567, + 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708, + -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567, + -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954, + -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954, + -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567, + 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435, + -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954, + 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435, + 0.215155,-0.464575,-0.858999,-1.200688,-1.577575,-0.799188, + 0.215155,-0.464575,-0.858999,-1.200688,-1.577575,-0.799188, + 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435, + -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918, + -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541, + 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638, + -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954, + -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954, + 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638, + 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708, + 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708, + 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638, + -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607, + -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607, + 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638, + -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741, + -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741, + 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638, + -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541, + -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741, + -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541, + -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399, + -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607, + -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741, + -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146, + -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146, + -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741, + -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399, + -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146, + -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399, + -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823, + -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823, + 0.011286,0.999936,0,-1.395728,-1.723811,0, + 0.106808,0.99428,0,-1.610025,-1.711571,0, + -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823, + 0.106808,0.99428,0,-1.610025,-1.711571,0, + -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146, + -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146, + 0.106808,0.99428,0,-1.610025,-1.711571,0, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586, + -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586, + -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634, + -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607, + -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586, + -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607, + -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146, + -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607, + -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634, + 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454, + 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454, + 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181, + -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607, + -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607, + 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181, + 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708, + 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581, + 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547, + 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222, + 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581, + 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222, + -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675, + -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675, + 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222, + 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926, + -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675, + 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926, + -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319, + 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787, + 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787, + -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319, + 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454, + 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787, + 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454, + -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634, + -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634, + -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586, + 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567, + -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634, + 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567, + 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916, + 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916, + 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232, + 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787, + 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916, + 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787, + -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634, + 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787, + 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232, + 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895, + 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787, + 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895, + 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782, + 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587, + 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587, + 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411, + 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461, + 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587, + 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461, + -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321, + 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106, + -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321, + -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675, + -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675, + -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321, + 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347, + -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675, + 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347, + 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581, + 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581, + 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347, + 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007, + 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581, + 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007, + 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737, + -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574, + 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775, + -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388, + -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574, + -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388, + 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925, + 0.058013,0.998316,0,-2.656867,-1.853045,0, + 0.058013,0.998316,0,-2.656867,-1.853045,0, + 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925, + -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456, + 0.058013,0.998316,0,-2.656867,-1.853045,0, + -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456, + 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411, + 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587, + 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587, + 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782, + -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462, + 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587, + -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462, + -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336, + 0.149455,0.988769,0,-2.092921,-1.839622,0, + 0.149455,0.988769,0,-2.092921,-1.839622,0, + -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336, + -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251, + 0.149455,0.988769,0,-2.092921,-1.839622,0, + -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251, + 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567, + -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586, + -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546, + 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829, + 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626, + -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546, + 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626, + 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445, + 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445, + 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626, + -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377, + 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445, + -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377, + -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861, + -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861, + -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377, + -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803, + -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861, + -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803, + -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246, + -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246, + -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803, + -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338, + -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246, + -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338, + -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561, + -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561, + -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338, + -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349, + -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561, + -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349, + -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702, + -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702, + -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349, + -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724, + -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702, + -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724, + -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286, + -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286, + -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724, + -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492, + -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286, + -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492, + -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453, + -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453, + -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492, + -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854, + -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453, + -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854, + -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217, + -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217, + -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854, + -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478, + -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217, + -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478, + -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359, + -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359, + -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478, + -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322, + -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322, + -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478, + 0.170833,0.9853,0,-3.55232,0.219613,0, + -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322, + 0.170833,0.9853,0,-3.55232,0.219613,0, + -0.57342,0.819261,0,-3.544507,0.467147,0, + 0.170833,0.9853,0,-3.55232,0.219613,0, + -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478, + -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854, + 0.170833,0.9853,0,-3.55232,0.219613,0, + -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854, + 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0, + 0.098463,-0.995141,0,-3.637643,-0.356271,0, + -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492, + -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724, + 0.098463,-0.995141,0,-3.637643,-0.356271,0, + -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724, + 0.353735,-0.935346,0,-3.673607,-0.720796,0, + 0.353735,-0.935346,0,-3.673607,-0.720796,0, + -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724, + -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349, + 0.353735,-0.935346,0,-3.673607,-0.720796,0, + -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349, + -0.34926,-0.937026,0,-3.678793,-0.926816,0, + -0.34926,-0.937026,0,-3.678793,-0.926816,0, + -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349, + -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338, + -0.34926,-0.937026,0,-3.678793,-0.926816,0, + -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338, + -0.164,-0.98646,0,-3.650579,-1.142448,0, + -0.164,-0.98646,0,-3.650579,-1.142448,0, + -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338, + -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803, + -0.164,-0.98646,0,-3.650579,-1.142448,0, + -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803, + 0.030921,-0.999522,0,-3.522115,-1.366623,0, + 0.030921,-0.999522,0,-3.522115,-1.366623,0, + -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803, + -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377, + 0.030921,-0.999522,0,-3.522115,-1.366623,0, + -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377, + 0.183204,-0.983075,0,-3.417689,-1.494416,0, + 0.183204,-0.983075,0,-3.417689,-1.494416,0, + -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377, + 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626, + 0.183204,-0.983075,0,-3.417689,-1.494416,0, + 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626, + -0.997516,0.070442,0,-3.271035,-1.609292,0, + -0.997516,0.070442,0,-3.271035,-1.609292,0, + 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626, + 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829, + -0.997516,0.070442,0,-3.271035,-1.609292,0, + 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829, + -0.99928,-0.037933,0,-3.1103,-1.69172,0, + -0.99928,-0.037933,0,-3.1103,-1.69172,0, + 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829, + -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574, + -0.99928,-0.037933,0,-3.1103,-1.69172,0, + -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0, + -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854, + -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492, + 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0, + -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492, + 0.098463,-0.995141,0,-3.637643,-0.356271,0, + -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359, + -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398, + -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217, + -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217, + -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398, + -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837, + -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217, + -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837, + -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453, + -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453, + -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837, + -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435, + -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453, + -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435, + -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286, + -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286, + -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435, + -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228, + -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286, + -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228, + -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702, + -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702, + -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228, + -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282, + -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702, + -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282, + -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561, + -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561, + -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282, + -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459, + -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561, + -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459, + -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246, + -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246, + -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459, + -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861, + -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045, + -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898, + -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141, + -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398, + -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045, + -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837, + -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837, + -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045, + -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141, + -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837, + -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141, + -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435, + -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435, + -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141, + -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213, + -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435, + -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213, + -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228, + -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228, + -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213, + -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602, + -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228, + -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602, + -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282, + -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282, + -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602, + -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459, + -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602, + -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213, + -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868, + -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322, + -0.57342,0.819261,0,-3.544507,0.467147,0, + -0.989276,0.146061,0,-3.566995,0.656967,0, + -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322, + -0.989276,0.146061,0,-3.566995,0.656967,0, + -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063, + -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063, + -0.989276,0.146061,0,-3.566995,0.656967,0, + -0.989171,0.146765,0,-3.599077,0.796217,0, + -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063, + -0.989171,0.146765,0,-3.599077,0.796217,0, + -0.43302,-0.02622,-0.901003,-3.57817,0.837714,-0.288502, + -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868, + -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213, + -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141, + -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868, + -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141, + -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898, + 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567, + 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902, + 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845, + 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567, + 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845, + 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916, + 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916, + 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845, + 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873, + 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916, + 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873, + 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232, + 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232, + 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873, + 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759, + 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232, + 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759, + 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895, + 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895, + 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759, + 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257, + 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895, + 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257, + 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782, + 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782, + 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257, + 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171, + 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782, + 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171, + -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462, + -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462, + 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171, + -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079, + -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462, + -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079, + -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336, + -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336, + -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079, + -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257, + -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336, + -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257, + -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251, + -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251, + -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257, + 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902, + -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251, + 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902, + 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567, + 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411, + 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529, + 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673, + 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411, + 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673, + 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461, + 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461, + 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673, + 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623, + 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461, + 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623, + -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321, + -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321, + 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623, + 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611, + -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321, + 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611, + 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347, + 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347, + 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611, + 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395, + 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347, + 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395, + 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007, + 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007, + 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395, + -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928, + 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007, + -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928, + 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775, + 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775, + -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928, + -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396, + 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775, + -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396, + -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388, + -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388, + -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396, + -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284, + -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388, + -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284, + 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925, + 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925, + -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284, + -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098, + 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925, + -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098, + -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456, + -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456, + -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098, + 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529, + -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456, + 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529, + 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411, + -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079, + 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872, + -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256, + -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079, + -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256, + -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257, + 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171, + 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853, + 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872, + 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171, + 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872, + -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079, + 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257, + -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489, + 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853, + 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257, + 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853, + 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171, + 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759, + 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997, + -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489, + 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759, + -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489, + 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257, + 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873, + 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201, + 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997, + 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873, + 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997, + 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759, + 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845, + 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327, + 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201, + 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845, + 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201, + 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873, + 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902, + 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904, + 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327, + 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902, + 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327, + 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845, + -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257, + -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256, + 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904, + -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257, + 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904, + 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902, + -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098, + 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579, + 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792, + -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098, + 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792, + 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529, + -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284, + 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227, + 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579, + -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284, + 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579, + -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098, + -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396, + 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656, + 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227, + -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396, + 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227, + -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284, + -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928, + 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064, + 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656, + -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928, + 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656, + -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396, + 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395, + 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465, + 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064, + 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395, + 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064, + -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928, + 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611, + 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258, + 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465, + 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611, + 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465, + 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395, + 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623, + 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616, + 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258, + 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623, + 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258, + 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611, + 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673, + 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735, + 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616, + 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673, + 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616, + 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623, + 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529, + 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792, + 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735, + 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529, + 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735, + 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673, + 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327, + 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904, + 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843, + 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201, + 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327, + 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843, + 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997, + 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201, + 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843, + -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489, + 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997, + 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843, + 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853, + -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489, + 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843, + 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872, + 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853, + 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843, + -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256, + 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872, + 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843, + 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904, + -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256, + 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843, + 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735, + 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616, + 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258, + 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465, + 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064, + 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656, + 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227, + 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579, + 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792, + 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579, + 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638, + -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546, + 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672, + -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574, + -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546, + -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574, + 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829, + 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672, + 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775, + -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574, + 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672, + 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737, + 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007, + 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672, + 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007, + 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775, + -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238, + -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096, + -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422, + -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701, + -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422, + -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096, + -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381, + -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422, + -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701, + -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761, + -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238, + -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395, + -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465, + -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096, + -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238, + -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465, + -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238, + -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761, + -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911, + -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701, + -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096, + -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911, + -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096, + -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465, + -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703, + -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381, + -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701, + -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703, + -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701, + -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911, + -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427, + -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381, + -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703, + -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424, + -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381, + -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427, + -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222, + -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761, + -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395, + -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222, + -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395, + -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547, + -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926, + -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465, + -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761, + -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926, + -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761, + -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222, + -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319, + -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911, + -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465, + -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319, + -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465, + -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926, + -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454, + -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827, + -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911, + -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454, + -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911, + -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319, + -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703, + -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911, + -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827, + -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373, + -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427, + -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703, + -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373, + -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703, + -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827, + -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483, + -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424, + -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427, + -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483, + -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427, + -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373, + -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708, + -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424, + -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483, + -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483, + -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181, + -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708, + -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373, + -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181, + -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483, + -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827, + -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454, + -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181, + -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827, + -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181, + -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373, + -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954, + -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567, + -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424, + -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954, + -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424, + -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708, + -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188, + -0.742985,0.015712,0.669123,-1.198513,-1.456102,0.885435, + -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567, + -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188, + -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567, + -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954, + -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918, + -0.742985,0.015712,0.669123,-1.198513,-1.456102,0.885435, + -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188, + -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954, + 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638, + -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541, + -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708, + 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638, + -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954, + 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607, + 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638, + -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708, + 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741, + 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638, + 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607, + 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399, + -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541, + 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638, + 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399, + 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638, + 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741, + -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146, + 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741, + 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607, + -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823, + 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399, + 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741, + -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823, + 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741, + -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146, + -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146, + 0.106808,0.99428,0,-1.610025,-1.711571,0, + 0.011286,0.999936,0,-1.395728,-1.723811,0, + -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146, + 0.011286,0.999936,0,-1.395728,-1.723811,0, + -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823, + -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + 0.106808,0.99428,0,-1.610025,-1.711571,0, + -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586, + 0.106808,0.99428,0,-1.610025,-1.711571,0, + -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146, + -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146, + 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607, + -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634, + -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146, + -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634, + -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586, + -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454, + -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634, + 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607, + 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607, + -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181, + -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454, + -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708, + -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181, + 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607, + 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675, + -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222, + -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547, + 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675, + -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926, + -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222, + 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675, + 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787, + -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319, + -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926, + 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787, + -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634, + -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454, + -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319, + -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634, + -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319, + 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787, + -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916, + -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567, + -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586, + -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916, + -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586, + -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634, + -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634, + 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787, + -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232, + -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634, + -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232, + -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895, + -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232, + 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787, + 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587, + 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782, + -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895, + 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587, + -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461, + 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411, + 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587, + 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675, + -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321, + 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461, + 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675, + 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461, + 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347, + -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321, + 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675, + -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737, + -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007, + -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347, + -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737, + -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347, + 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388, + 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775, + 0.999491,-0.02584,0.01873,-2.941731,-1.787431,0.442574, + 0.058013,0.998316,0,-2.656867,-1.853045,0, + 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925, + 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388, + 0.058013,0.998316,0,-2.656867,-1.853045,0, + 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456, + 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925, + 0.058013,0.998316,0,-2.656867,-1.853045,0, + 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587, + 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411, + 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456, + 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587, + 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462, + 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782, + 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587, + 0.149455,0.988769,0,-2.092921,-1.839622,0, + -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336, + 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462, + 0.149455,0.988769,0,-2.092921,-1.839622,0, + 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462, + 0.093777,0.995593,0,-2.348005,-1.869142,0, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251, + -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336, + 0.149455,0.988769,0,-2.092921,-1.839622,0, + -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586, + -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567, + 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251, + -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586, + 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251, + -0.160087,-0.987103,0,-1.799827,-1.753136,0, + 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445, + 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626, + 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829, + 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445, + 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829, + 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377, + 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626, + 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445, + 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246, + 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803, + 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377, + 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246, + 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561, + 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338, + 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803, + 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561, + 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803, + 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246, + -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702, + 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349, + 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338, + -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702, + 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338, + 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561, + 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286, + -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724, + 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349, + 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286, + 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349, + -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702, + -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453, + 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492, + -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724, + -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453, + -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724, + 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286, + -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217, + -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854, + 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492, + -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217, + 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492, + -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453, + -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359, + -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478, + -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854, + -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359, + -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854, + -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217, + -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322, + -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478, + -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359, + -0.57342,0.819261,0,-3.544507,0.467147,0, + 0.170833,0.9853,0,-3.55232,0.219613,0, + -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478, + -0.57342,0.819261,0,-3.544507,0.467147,0, + -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478, + -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322, + 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0, + -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854, + -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478, + 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0, + -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478, + 0.170833,0.9853,0,-3.55232,0.219613,0, + 0.353735,-0.935346,0,-3.673607,-0.720796,0, + -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724, + 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492, + 0.353735,-0.935346,0,-3.673607,-0.720796,0, + 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492, + 0.098463,-0.995141,0,-3.637643,-0.356271,0, + -0.34926,-0.937026,0,-3.678793,-0.926816,0, + 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349, + -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724, + -0.34926,-0.937026,0,-3.678793,-0.926816,0, + -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724, + 0.353735,-0.935346,0,-3.673607,-0.720796,0, + -0.164,-0.98646,0,-3.650579,-1.142448,0, + 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338, + 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349, + -0.164,-0.98646,0,-3.650579,-1.142448,0, + 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349, + -0.34926,-0.937026,0,-3.678793,-0.926816,0, + 0.030921,-0.999522,0,-3.522115,-1.366623,0, + 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803, + 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338, + 0.030921,-0.999522,0,-3.522115,-1.366623,0, + 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338, + -0.164,-0.98646,0,-3.650579,-1.142448,0, + 0.183204,-0.983075,0,-3.417689,-1.494416,0, + 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377, + 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803, + 0.183204,-0.983075,0,-3.417689,-1.494416,0, + 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803, + 0.030921,-0.999522,0,-3.522115,-1.366623,0, + -0.997516,0.070442,0,-3.271035,-1.609292,0, + 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626, + 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377, + -0.997516,0.070442,0,-3.271035,-1.609292,0, + 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377, + 0.183204,-0.983075,0,-3.417689,-1.494416,0, + -0.99928,-0.037933,0,-3.1103,-1.69172,0, + 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829, + 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626, + -0.99928,-0.037933,0,-3.1103,-1.69172,0, + 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626, + -0.997516,0.070442,0,-3.271035,-1.609292,0, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + 0.999491,-0.02584,0.01873,-2.941731,-1.787431,0.442574, + 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829, + 0.0787,0.996898,0,-2.892162,-1.781087,0, + 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829, + -0.99928,-0.037933,0,-3.1103,-1.69172,0, + 0.098463,-0.995141,0,-3.637643,-0.356271,0, + 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492, + -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854, + 0.098463,-0.995141,0,-3.637643,-0.356271,0, + -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854, + 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0, + -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217, + -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398, + -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359, + -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453, + -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837, + -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398, + -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453, + -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398, + -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217, + 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286, + -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435, + -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837, + 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286, + -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837, + -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453, + -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702, + -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228, + -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435, + -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702, + -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435, + 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286, + 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561, + -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282, + -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228, + 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561, + -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228, + -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702, + 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246, + -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459, + -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282, + 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246, + -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282, + 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561, + 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861, + -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459, + 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246, + -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141, + -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898, + -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045, + -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837, + -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045, + -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398, + -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435, + -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141, + -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045, + -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435, + -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045, + -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837, + -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228, + -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213, + -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141, + -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228, + -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141, + -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435, + -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282, + -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602, + -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213, + -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282, + -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213, + -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228, + -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459, + -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602, + -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282, + -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868, + -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213, + -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602, + -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063, + -0.989276,0.146061,0,-3.566995,0.656967,0, + -0.57342,0.819261,0,-3.544507,0.467147,0, + -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063, + -0.57342,0.819261,0,-3.544507,0.467147,0, + -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322, + -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502, + -0.989171,0.146765,0,-3.599077,0.796217,0, + -0.989276,0.146061,0,-3.566995,0.656967,0, + -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502, + -0.989276,0.146061,0,-3.566995,0.656967,0, + -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063, + -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898, + -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141, + -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213, + -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898, + -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213, + -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868, + -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916, + 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845, + 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902, + -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916, + 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902, + -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567, + -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232, + 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873, + 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845, + -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232, + 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845, + -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916, + -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895, + 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759, + 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873, + -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895, + 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873, + -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232, + 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782, + 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257, + 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759, + 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782, + 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759, + -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895, + 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462, + -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171, + 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257, + 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462, + 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257, + 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782, + -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336, + 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079, + -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171, + -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336, + -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171, + 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462, + 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251, + 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257, + 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079, + 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251, + 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079, + -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336, + -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567, + 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902, + 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257, + -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567, + 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257, + 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251, + 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461, + 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673, + 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529, + 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461, + 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529, + 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411, + -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321, + 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623, + 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673, + -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321, + 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673, + 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461, + -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347, + 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611, + 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623, + -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347, + 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623, + -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321, + -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007, + 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395, + 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611, + -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007, + 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611, + -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347, + 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775, + 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928, + 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395, + 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775, + 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395, + -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007, + 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388, + 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396, + 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928, + 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388, + 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928, + 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775, + 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925, + 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284, + 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396, + 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925, + 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396, + 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388, + 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456, + 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098, + 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284, + 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456, + 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284, + 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925, + 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411, + 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529, + 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098, + 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411, + 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098, + 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456, + 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257, + 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256, + 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872, + 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257, + 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872, + 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079, + 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079, + 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872, + 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853, + 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079, + 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853, + -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171, + -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171, + 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853, + -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489, + -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171, + -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489, + 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257, + 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257, + -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489, + -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997, + 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257, + -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997, + 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759, + 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759, + -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997, + 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201, + 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759, + 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201, + 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873, + 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873, + 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201, + -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327, + 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873, + -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327, + 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845, + 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845, + -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327, + 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904, + 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845, + 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904, + 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902, + 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902, + 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904, + 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256, + 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902, + 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256, + 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257, + 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529, + 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792, + 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579, + 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529, + 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579, + 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098, + 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098, + 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579, + 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227, + 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098, + 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227, + 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284, + 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284, + 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227, + 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656, + 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284, + 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656, + 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396, + 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396, + 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656, + 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064, + 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396, + 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064, + 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928, + 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928, + 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064, + 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465, + 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928, + 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465, + 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395, + 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395, + 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465, + 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258, + 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395, + 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258, + 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611, + 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611, + 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258, + 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616, + 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611, + 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616, + 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623, + 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623, + 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616, + 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735, + 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623, + 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735, + 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673, + 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673, + 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735, + 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792, + 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673, + 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792, + 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529, + -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843, + 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904, + -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327, + -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843, + -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327, + 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201, + -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843, + 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201, + -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997, + -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843, + -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997, + -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489, + -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843, + -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489, + 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853, + -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843, + 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853, + 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872, + -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843, + 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872, + 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256, + -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843, + 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256, + 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792, + 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735, + 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616, + 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258, + 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465, + 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064, + 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656, + 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227, + 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579, + 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638, + 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579, + 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792, + 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829, + 0.999491,-0.02584,0.01873,-2.941731,-1.787431,0.442574, + 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672, + 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829, + 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672, + 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546, + 0.999491,-0.02584,0.01873,-2.941731,-1.787431,0.442574, + 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775, + 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672, + 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775, + -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007, + -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737, + 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775, + -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737, + 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672, + -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793, + -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574, + -0.548359,-0.017804,0.836053,-3.699784,-0.759901,0.088664 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1515,data,NULL}; +const struct gllist *cow_udder=&frame; diff --git a/hacks/glx/crackberg.c b/hacks/glx/crackberg.c new file mode 100644 index 0000000..74c6915 --- /dev/null +++ b/hacks/glx/crackberg.c @@ -0,0 +1,1468 @@ +/*************************** + ** crackberg; Matus Telgarsky [ catachresis@cmu.edu ] 2005 + ** */ +#ifndef HAVE_JWXYZ +# define XK_MISCELLANY +# include +#endif + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define release_crackberg 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#ifdef USE_GL /* whole file */ + +#define DEF_NSUBDIVS "4" +#define DEF_BORING "False" +#define DEF_CRACK "True" +#define DEF_WATER "True" +#define DEF_FLAT "True" +#define DEF_COLOR "random" +#define DEF_LIT "True" +#define DEF_VISIBILITY "0.6" +#define DEF_LETTERBOX "False" + + +/*************************** + ** macros + ** */ + +#define M_RAD7_4 0.661437827766148 +#define M_SQRT3_2 0.866025403784439 +#define M_PI_180 0.0174532925199433 +#define M_180_PI 57.2957795130823 +#define MSPEED_SCALE 1.1 +#define AVE3(a,b,c) ( ((a) + (b) + (c)) / 3.0 ) +#define MAX_ZDELTA 0.35 +#define DISPLACE(h,d) (h+(random()/(double)RAND_MAX-0.5)*2*MAX_ZDELTA/(1<heights[(cberg->epoints * (y) - ((y)-1)*(y)/2 + (x))]) +#define sNCOORD(x,y,p) (cberg->norms[3 * (cberg->epoints * (y) - ((y)-1)*(y)/2 + (x)) + (p)]) +#define SET_sNCOORD(x,y, down, a,b,c,d,e,f) \ + sNCOORD(x,y,0) = AVE3(a-d, 0.5 * (b-e), -0.5 * (c-f)); \ + sNCOORD(x,y,1) = ((down) ? -1 : +1) * AVE3(0.0, M_SQRT3_2 * (b-e), M_SQRT3_2 * (c-f)); \ + sNCOORD(x,y,2) = (2*dx) +#define fNCOORD(x,y,w,p) \ + (cberg->norms[3 * (2*(y)*cberg->epoints-((y)+1)*((y)+1) + 1 + 2 * ((x)-1) + (w)) + (p)]) +#define SET_fNCOORDa(x,y, down, dz00,dz01) \ + fNCOORD(x,y,0,0) = (down) * (dy) * (dz01); \ + fNCOORD(x,y,0,1) = (down) * ((dz01) * (dx) / 2 - (dx) * (dz00)); \ + fNCOORD(x,y,0,2) = (down) * (dx) * (dy) +#define SET_fNCOORDb(x,y, down, dz10,dz11) \ + fNCOORD(x,y,1,0) = (down) * (dy) * (dz10); \ + fNCOORD(x,y,1,1) = (down) * ((dz11) * (dx) - (dx) * (dz10) / 2); \ + fNCOORD(x,y,1,2) = (down) * (dx) * (dy) + + +/*************************** + ** types + ** */ + + +typedef struct _cberg_state cberg_state; +typedef struct _Trile Trile; + +typedef struct { + void (*init)(Trile *); + void (*free)(Trile *); + void (*draw)(Trile *); + void (*init_iter)(Trile *, cberg_state *); + void (*dying_iter)(Trile *, cberg_state *); +} Morph; + +typedef struct { + char *id; + void (*land)(cberg_state *, double); + void (*water)(cberg_state *, double); + double bg[4]; +} Color; + +enum { TRILE_NEW, TRILE_INIT, TRILE_STABLE, TRILE_DYING, TRILE_DELETE }; + +struct _Trile { + int x,y; /*center coords; points up if (x+y)%2 == 0, else down*/ + short state; + short visible; + double *l,*r,*v; /*only edges need saving*/ + GLuint call_list; + + void *morph_data; + const Morph *morph; + + struct _Trile *left, *right, *parent; /* for bst, NOT spatial */ + struct _Trile *next_free; /* for memory allocation */ +}; + +enum { MOTION_AUTO = 0, MOTION_MANUAL = 1, MOTION_LROT= 2, MOTION_RROT = 4, + MOTION_FORW = 8, MOTION_BACK = 16, MOTION_DEC = 32, MOTION_INC = 64, + MOTION_LEFT = 128, MOTION_RIGHT = 256 }; + +struct _cberg_state { + GLXContext *glx_context; + Trile *trile_head; + + double x,y,z, yaw,roll,pitch, dx,dy,dz, dyaw,droll,dpitch, elapsed; + double prev_frame; + int motion_state; + double mspeed; + + double fovy, aspect, zNear, zFar; + + const Color *color; + + int count; + + unsigned int epoints, /*number of points to one edge*/ + tpoints, /*number points total*/ + ntris, /*number triangles per trile*/ + tnorms; /*number of normals*/ + + double *heights, *norms; + Trile *free_head; /* for trile_[alloc|free] */ + + double draw_elapsed; + + double dx0; + + double vs0r,vs0g,vs0b, vs1r, vs1g, vs1b, + vf0r,vf0g,vf0b, vf1r, vf1g, vf1b; + + Bool button_down_p; + int mouse_x, mouse_y; + struct timeval paused; +}; + + + +/*************************** + ** globals + ** */ + +static unsigned int nsubdivs; +static Bool crack, boring, do_water, flat, lit, letterbox; +static float visibility; +static char *color; + +static cberg_state *cbergs = NULL; + +static XrmOptionDescRec opts[] = { + {"-nsubdivs", ".nsubdivs", XrmoptionSepArg, 0}, + {"-boring", ".boring", XrmoptionNoArg, "True"}, + {"-crack", ".crack", XrmoptionNoArg, "True"}, + {"-no-crack", ".crack", XrmoptionNoArg, "False"}, + {"-water", ".water", XrmoptionNoArg, "True"}, + {"-no-water", ".water", XrmoptionNoArg, "False"}, + {"-flat", ".flat", XrmoptionNoArg, "True"}, + {"-no-flat", ".flat", XrmoptionNoArg, "False"}, + {"-color", ".color", XrmoptionSepArg, 0}, + {"-lit", ".lit", XrmoptionNoArg, "True"}, + {"-no-lit", ".lit", XrmoptionNoArg, "False"}, + {"-visibility", ".visibility", XrmoptionSepArg, 0}, + {"-letterbox", ".letterbox", XrmoptionNoArg, "True"} +}; + +static argtype vars[] = { + {&nsubdivs, "nsubdivs", "nsubdivs", DEF_NSUBDIVS, t_Int}, + {&boring, "boring", "boring", DEF_BORING, t_Bool}, + {&crack, "crack", "crack", DEF_CRACK, t_Bool}, + {&do_water, "water", "water", DEF_WATER, t_Bool}, + {&flat, "flat", "flat", DEF_FLAT, t_Bool}, + {&color, "color", "color", DEF_COLOR, t_String}, + {&lit, "lit", "lit", DEF_LIT, t_Bool}, + {&visibility, "visibility", "visibility", DEF_VISIBILITY, t_Float}, + {&letterbox, "letterbox", "letterbox", DEF_LETTERBOX, t_Bool} +}; + +ENTRYPOINT ModeSpecOpt crackberg_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/*************************** + ** Trile functions. + ** first come all are regular trile functions + ** */ + + +/* forward decls for trile_new */ +static Trile *triles_find(Trile *tr, int x, int y); +static Trile *trile_alloc(cberg_state *cberg); +static const Morph *select_morph(void); +static const Color *select_color(cberg_state *); + +static void trile_calc_sides(cberg_state *cberg, + Trile *new, int x, int y, Trile *root) +{ + unsigned int i,j,k; + int dv = ( (x + y) % 2 ? +1 : -1); /* we are pointing down or up*/ + Trile *l, *r, *v; /* v_ertical */ + + + if (root) { + l = triles_find(root, x-1, y); + r = triles_find(root, x+1, y); + v = triles_find(root, x,y+dv); + } else + l = r = v = NULL; + + if (v) { + for (i = 0; i != cberg->epoints; ++i) + new->v[i] = v->v[i]; + } else { + if (l) new->v[0] = l->l[0]; + else if (!root) new->v[0] = DISPLACE(0,0); + else { + Trile *tr; /* all of these tests needed.. */ + if ( (tr = triles_find(root, x-1, y + dv)) ) + new->v[0] = tr->l[0]; + else if ( (tr = triles_find(root, x-2, y)) ) + new->v[0] = tr->r[0]; + else if ( (tr = triles_find(root, x-2, y + dv)) ) + new->v[0] = tr->r[0]; + else + new->v[0] = DISPLACE(0,0); + } + + if (r) new->v[cberg->epoints-1] = r->l[0]; + else if (!root) new->v[cberg->epoints-1] = DISPLACE(0,0); + else { + Trile *tr; + if ( (tr = triles_find(root, x+1, y + dv)) ) + new->v[cberg->epoints-1] = tr->l[0]; + else if ( (tr = triles_find(root, x+2, y)) ) + new->v[cberg->epoints-1] = tr->v[0]; + else if ( (tr = triles_find(root, x+2, y + dv)) ) + new->v[cberg->epoints-1] = tr->v[0]; + else + new->v[cberg->epoints-1] = DISPLACE(0,0); + } + + for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k) + for (j = i; j < cberg->epoints; j += i * 2) + new->v[j] = DISPLACE(MEAN(new->v[j-i], new->v[j+i]), k); + } + + if (l) { + for (i = 0; i != cberg->epoints; ++i) + new->l[i] = l->r[i]; + } else { + if (r) new->l[0] = r->v[0]; + else if (!root) new->l[0] = DISPLACE(0,0); + else { + Trile *tr; + if ( (tr = triles_find(root, x-1, y-dv)) ) + new->l[0] = tr->r[0]; + else if ( (tr = triles_find(root, x+1, y-dv)) ) + new->l[0] = tr->v[0]; + else if ( (tr = triles_find(root, x, y-dv)) ) + new->l[0] = tr->l[0]; + else + new->l[0] = DISPLACE(0,0); + } + + new->l[cberg->epoints - 1] = new->v[0]; + + for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k) + for (j = i; j < cberg->epoints; j += i * 2) + new->l[j] = DISPLACE(MEAN(new->l[j-i], new->l[j+i]), k); + } + + if (r) { + for (i = 0; i != cberg->epoints; ++i) + new->r[i] = r->l[i]; + } else { + new->r[0] = new->v[cberg->epoints - 1]; + new->r[cberg->epoints - 1] = new->l[0]; + + for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k) + for (j = i; j < cberg->epoints; j += i * 2) + new->r[j] = DISPLACE(MEAN(new->r[j-i], new->r[j+i]), k); + } +} + +static void trile_calc_heights(cberg_state *cberg, Trile *new) +{ + unsigned int i, j, k, h; + + for (i = 0; i < cberg->epoints - 1; ++i) { /* copy in sides */ + TCOORD(i,0) = new->v[i]; + TCOORD(cberg->epoints - 1 - i, i) = new->r[i]; + TCOORD(0, cberg->epoints - 1 - i) = new->l[i]; + } + + for (i = ((1 << nsubdivs) >> 2), k =1; i; i >>= 1, ++k) + for (j = 1; j < (1 << k); ++j) + for (h = 1; h <= (1<x + new->y) % 2) ? -1 : +1); + double dz00,dz01,dz10,dz11, a,b,c,d; + double dy = down * M_SQRT3_2 / (1 << nsubdivs); + double dx = cberg->dx0; + + for (y = 0; y < cberg->epoints - 1; ++y) { + a = TCOORD(0,y); + b = TCOORD(0,y+1); + for (x = 1; x < cberg->epoints - 1 - y; ++x) { + c = TCOORD(x,y); + d = TCOORD(x,y+1); + + dz00 = b-c; + dz01 = a-c; + dz10 = b-d; + dz11 = c-d; + + SET_fNCOORDa(x,y, down, dz00,dz01); + SET_fNCOORDb(x,y, down, dz10,dz11); + + a = c; + b = d; + } + + c = TCOORD(x,y); + dz00 = b-c; + dz01 = a-c; + SET_fNCOORDa(x,y, down, dz00, dz01); + } +} + +static void trile_calc_smooth_norms(cberg_state *cberg, Trile *new) +{ + unsigned int i,j, down = (new->x + new->y) % 2; + double prev, cur, next; + double dx = cberg->dx0; + + /** corners -- assume level (bah) **/ + cur = TCOORD(0,0); + SET_sNCOORD(0,0, down, + cur,cur,TCOORD(0,1),TCOORD(1,0),cur,cur); + cur = TCOORD(cberg->epoints-1,0); + SET_sNCOORD(cberg->epoints-1,0, down, + TCOORD(cberg->epoints-2,0),TCOORD(cberg->epoints-2,1),cur,cur,cur,cur); + cur = TCOORD(0,cberg->epoints-1); + SET_sNCOORD(0,cberg->epoints-1, down, + cur,cur,cur,cur,TCOORD(1,cberg->epoints-2),TCOORD(0,cberg->epoints-2)); + + + /** sides **/ + /* vert */ + prev = TCOORD(0,0); + cur = TCOORD(1,0); + for (i = 1; i < cberg->epoints - 1; ++i) { + next = TCOORD(i+1,0); + SET_sNCOORD(i,0, down, prev,TCOORD(i-1,1),TCOORD(i,1), next,cur,cur); + prev = cur; + cur = next; + } + + /* right */ + prev = TCOORD(cberg->epoints-1,0); + cur = TCOORD(cberg->epoints-2,0); + for (i = 1; i < cberg->epoints - 1; ++i) { + next = TCOORD(cberg->epoints-i-2,i+1); + SET_sNCOORD(cberg->epoints-i-1,i, down, TCOORD(cberg->epoints-i-2,i),next,cur, + cur,prev,TCOORD(cberg->epoints-i-1,i-1)); + prev = cur; + cur = next; + } + + /* left */ + prev = TCOORD(0,0); + cur = TCOORD(0,1); + for (i = 1; i < cberg->epoints - 1; ++i) { + next = TCOORD(0,i+1); + SET_sNCOORD(0,i, down, cur,cur,next,TCOORD(1,i),TCOORD(1,i-1),prev); + prev = cur; + cur = next; + } + + + /** fill in **/ + for (i = 1; i < cberg->epoints - 2; ++i) { + prev = TCOORD(0,i); + cur = TCOORD(1,i); + for (j = 1; j < cberg->epoints - i - 1; ++j) { + next = TCOORD(j+1,i); + SET_sNCOORD(j,i, down, prev,TCOORD(j-1,i+1),TCOORD(j,i+1), + next,TCOORD(j+1,i-1),TCOORD(j,i-1)); + prev = cur; + cur = next; + } + } +} + +static inline void trile_light(cberg_state *cberg, + unsigned int x, unsigned int y, + unsigned int which) +{ + if (flat) { + if (x) { + glNormal3d(fNCOORD(x,y,which,0), + fNCOORD(x,y,which,1), + fNCOORD(x,y,which,2)); + } else { /* I get mesa errors and bizarre glitches without this!! */ + glNormal3d(fNCOORD(1,y,0,0), + fNCOORD(1,y,0,1), + fNCOORD(1,y,0,2)); + } + } else { + glNormal3d(sNCOORD(x,y+which,0), + sNCOORD(x,y+which,1), + sNCOORD(x,y+which,2)); + } +} + +static inline void trile_draw_vertex(cberg_state *cberg, unsigned int ix, + unsigned int iy, unsigned int which, double x,double y, + double zcur, double z1, double z2) +{ + glColor3d(0.0, 0.0, 0.0); /* don't ask. my card breaks otherwise. */ + + if (do_water && zcur <= 0.0) { + cberg->color->water(cberg, zcur); /* XXX use average-of-3 for color when flat?*/ + if (lit) glNormal3d(0.0,0.0,1.0); + glVertex3d(x, y, 0.0); + } else { + cberg->color->land(cberg, zcur); + if (lit) trile_light(cberg,ix,iy,which); + glVertex3d(x, y, zcur); + } +} + +static void trile_render(cberg_state *cberg, Trile *new) +{ + double cornerx = 0.5 * new->x - 0.5, cornery; + double dy = M_SQRT3_2 / (1 << nsubdivs); + double z0,z1,z2; + int x,y; + + new->call_list = glGenLists(1); + glNewList(new->call_list, GL_COMPILE); + + if ((new->x + new->y) % 2) { /*point down*/ + cornery = (new->y + 0.5)*M_SQRT3_2; + glFrontFace(GL_CW); + dy = -dy; + } else + cornery = (new->y - 0.5) * M_SQRT3_2; + + for (y = 0; y < cberg->epoints - 1; ++y) { + double dx = cberg->dx0; + glBegin(GL_TRIANGLE_STRIP); + /* first three points all part of the same triangle.. */ + z0 = TCOORD(0,y); + z1 = TCOORD(0,y+1); + z2 = TCOORD(1,y); + trile_draw_vertex(cberg, 0,y,0, + cornerx,cornery, z0, z1, z2); + trile_draw_vertex(cberg, 0,y,1, + cornerx+0.5*dx,cornery+dy, z1, z0, z2); + + for (x = 1; x < cberg->epoints - 1 - y; ++x) { + trile_draw_vertex(cberg, x,y,0, + cornerx+x*dx,cornery, z2, z1, z0); + + z0 = TCOORD(x, y+1); + + trile_draw_vertex(cberg, x,y,1, + cornerx+(x+0.5)*dx,cornery+dy, z0, z2, z1); + + z1 = z0; + z0 = z2; + z2 = TCOORD(x+1,y); + } + trile_draw_vertex(cberg, x,y,0, + cornerx + x*dx, cornery, z2, z1, z0); + glEnd(); + + cornerx += dx/2; + cornery += dy; + } + + if ((new->x + new->y) % 2) /*point down*/ + glFrontFace(GL_CCW); + glEndList(); +} + +static Trile *trile_new(cberg_state *cberg, int x,int y,Trile *parent,Trile *root) +{ + Trile *new; + + new = trile_alloc(cberg); + + new->x = x; + new->y = y; + new->state = TRILE_NEW; + new->parent = parent; + new->left = new->right = NULL; + new->visible = 1; + + new->morph = select_morph(); + new->morph->init(new); + + trile_calc_sides(cberg, new, x, y, root); + trile_calc_heights(cberg, new); + + if (lit) { + if (flat) trile_calc_flat_norms(cberg, new); + else trile_calc_smooth_norms(cberg, new); + } + + trile_render(cberg, new); + return new; +} + +static Trile *trile_alloc(cberg_state *cberg) +{ + Trile *new; + + if (cberg->free_head) { + new = cberg->free_head; + cberg->free_head = cberg->free_head->next_free; + } else { + ++cberg->count; + if (!(new = malloc(sizeof(Trile))) + || !(new->l = (double *) malloc(sizeof(double) * cberg->epoints * 3))) { + perror(progname); + exit(1); + } + new->r = new->l + cberg->epoints; + new->v = new->r + cberg->epoints; +#ifdef DEBUG + printf("needed to alloc; [%d]\n", cberg->count); +#endif + } + return new; +} + +static void trile_free(cberg_state *cberg, Trile *tr) +{ + glDeleteLists(tr->call_list, 1); + tr->morph->free(tr); + tr->next_free = cberg->free_head; + cberg->free_head = tr; +} + + +static void trile_draw_vanilla(Trile *tr) +{ glCallList(tr->call_list); } + +static void trile_draw(Trile *tr, void *ignore) +{ + if (tr->state == TRILE_STABLE) + trile_draw_vanilla(tr); + else + tr->morph->draw(tr); +} + + +/*************************** + ** Trile morph functions. + ** select function at bottom (forward decls sucls) + ** */ + + +/*** first the basic growing morph */ + +static void grow_init(Trile *tr) +{ + tr->morph_data = (void *) malloc(sizeof(double)); + *((double *)tr->morph_data) = 0.02; /* not 0; avoid normals crapping */ +} + +static void grow_free(Trile *tr) +{ + free(tr->morph_data); +} + +static void grow_draw(Trile *tr) +{ + glPushMatrix(); + glScaled(1.0,1.0, *((double *)tr->morph_data)); + trile_draw_vanilla(tr); + glPopMatrix(); +} + +static void grow_init_iter(Trile *tr, cberg_state *cberg) +{ + *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed; + if (*((double *)tr->morph_data) >= 1.0) + tr->state = TRILE_STABLE; +} + +static void grow_dying_iter(Trile *tr, cberg_state *cberg) +{ + *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed; + if (*((double *)tr->morph_data) <= 0.02) /* XXX avoid fast del/cons? */ + tr->state = TRILE_DELETE; +} + +/**** falling morph ****/ + +static void fall_init(Trile *tr) +{ + tr->morph_data = (void *) malloc(sizeof(double)); + *((double *)tr->morph_data) = 0.0; +} + +static void fall_free(Trile *tr) +{ + free(tr->morph_data); +} + +static void fall_draw(Trile *tr) +{ + glPushMatrix(); + glTranslated(0.0,0.0,(0.5 - *((double *)tr->morph_data)) * 8); + trile_draw_vanilla(tr); + glPopMatrix(); +} + +static void fall_init_iter(Trile *tr, cberg_state *cberg) +{ + *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed; + if (*((double *)tr->morph_data) >= 0.5) + tr->state = TRILE_STABLE; +} + +static void fall_dying_iter(Trile *tr, cberg_state *cberg) +{ + *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed; + if (*((double *)tr->morph_data) <= 0.0) /* XXX avoid fast del/cons? */ + tr->state = TRILE_DELETE; +} + +/**** yeast morph ****/ + +static void yeast_init(Trile *tr) +{ + tr->morph_data = (void *) malloc(sizeof(double)); + *((double *)tr->morph_data) = 0.02; +} + +static void yeast_free(Trile *tr) +{ + free(tr->morph_data); +} + +static void yeast_draw(Trile *tr) +{ + double x = tr->x * 0.5, + y = tr->y * M_SQRT3_2, + z = *((double *)tr->morph_data); + + glPushMatrix(); + glTranslated(x, y, 0); + glRotated(z*360, 0,0,1); + glScaled(z,z,z); + glTranslated(-x, -y, 0); + trile_draw_vanilla(tr); + glPopMatrix(); +} + +static void yeast_init_iter(Trile *tr, cberg_state *cberg) +{ + *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed; + if (*((double *)tr->morph_data) >= 1.0) + tr->state = TRILE_STABLE; +} + +static void yeast_dying_iter(Trile *tr, cberg_state *cberg) +{ + *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed; + if (*((double *)tr->morph_data) <= 0.02) /* XXX avoid fast del/cons? */ + tr->state = TRILE_DELETE; +} + +/**** identity morph ****/ + +static void identity_init(Trile *tr) +{ tr->state = TRILE_STABLE; } + +static void identity_free(Trile *tr) +{} + +static void identity_draw(Trile *tr) +{ trile_draw_vanilla(tr); } + +static void identity_init_iter(Trile *tr, cberg_state *cberg) +{} + +static void identity_dying_iter(Trile *tr, cberg_state *cberg) +{ tr->state = TRILE_DELETE; } + +/** now to handle selection **/ + +static const Morph morphs[] = { + {grow_init, grow_free, grow_draw, grow_init_iter, grow_dying_iter}, + {fall_init, fall_free, fall_draw, fall_init_iter, fall_dying_iter}, + {yeast_init, yeast_free, yeast_draw, yeast_init_iter, yeast_dying_iter}, + {identity_init, /*always put identity last to skip it..*/ + identity_free, identity_draw, identity_init_iter, identity_dying_iter} +}; + +static const Morph *select_morph() +{ + int nmorphs = countof(morphs); + if (crack) + return &morphs[random() % (nmorphs-1)]; + else if (boring) + return &morphs[nmorphs-1]; + else + return morphs; +} + + +/*************************** + ** Trile superstructure functions. + ** */ + + +static void triles_set_visible(cberg_state *cberg, Trile **root, int x, int y) +{ + Trile *parent = NULL, + *iter = *root; + int goleft=0; + + while (iter != NULL) { + parent = iter; + goleft = (iter->x > x || (iter->x == x && iter->y > y)); + if (goleft) + iter = iter->left; + else if (iter->x == x && iter->y == y) { + iter->visible = 1; + return; + } else + iter = iter->right; + } + + if (parent == NULL) + *root = trile_new(cberg, x,y, NULL, NULL); + else if (goleft) + parent->left = trile_new(cberg, x,y, parent, *root); + else + parent->right = trile_new(cberg, x,y, parent, *root); +} + +static unsigned int triles_foreach(Trile *root, void (*f)(Trile *, void *), + void *data) +{ + if (root == NULL) + return 0; + + f(root, data); + return 1 + triles_foreach(root->left, f, data) + + triles_foreach(root->right, f, data); +} + +static void triles_update_state(Trile **root, cberg_state *cberg) +{ + int process_current = 1; + if (*root == NULL) + return; + + while (process_current) { + if ( (*root)->visible ) { + if ( (*root)->state == TRILE_INIT ) + (*root)->morph->init_iter(*root, cberg); + else if ( (*root)->state == TRILE_DYING ) { + (*root)->state = TRILE_INIT; + (*root)->morph->init_iter(*root, cberg); + } else if ( (*root)->state == TRILE_NEW ) + (*root)->state = TRILE_INIT; + + (*root)->visible = 0; + } else { + if ( (*root)->state == TRILE_STABLE ) + (*root)->state = TRILE_DYING; + else if ( (*root)->state == TRILE_INIT ) { + (*root)->state = TRILE_DYING; + (*root)->morph->dying_iter(*root, cberg); + } else if ( (*root)->state == TRILE_DYING ) + (*root)->morph->dying_iter(*root, cberg); + } + + if ( (*root)->state == TRILE_DELETE ) { + Trile *splice_me; + process_current = 1; + + if ((*root)->left == NULL) { + splice_me = (*root)->right; + if (splice_me) + splice_me->parent = (*root)->parent; + else + process_current = 0; + } else if ((*root)->right == NULL) { + splice_me = (*root)->left; + splice_me->parent = (*root)->parent; + } else { + Trile *tmp; + for (splice_me = (*root)->right; splice_me->left != NULL; ) + splice_me = splice_me->left; + tmp = splice_me->right; + + if (tmp) tmp->parent = splice_me->parent; + + if (splice_me == splice_me->parent->left) + splice_me->parent->left = tmp; + else + splice_me->parent->right = tmp; + + splice_me->parent = (*root)->parent; + splice_me->left = (*root)->left; + (*root)->left->parent = splice_me; + splice_me->right = (*root)->right; + if ((*root)->right) + (*root)->right->parent = splice_me; + } + trile_free(cberg, *root); + *root = splice_me; + } else + process_current = 0; + } + + if (*root) { + triles_update_state(&((*root)->left), cberg); + triles_update_state(&((*root)->right), cberg); + } +} + +static Trile *triles_find(Trile *tr, int x, int y) +{ + while (tr && !(tr->x == x && tr->y == y)) + if (x < tr->x || (x == tr->x && y < tr->y)) + tr = tr->left; + else + tr = tr->right; + return tr; +} + + +/*************************** + ** Trile superstructure visibility functions. + ** strategy fine, implementation lazy&retarded =/ + ** */ + +#ifdef DEBUG +static double x_shit, y_shit; +#endif + +static void calc_points(cberg_state *cberg, double *x1,double *y1, + double *x2,double *y2, double *x3,double *y3, double *x4,double *y4) +{ + double zNear, x_nearcenter, y_nearcenter, nhalfwidth, x_center, y_center; + + + /* could cache these.. bahhhhhhhhhhhhhh */ + double halfheight = tan(cberg->fovy / 2 * M_PI_180) * cberg->zNear; + double fovx_2 = atan(halfheight * cberg->aspect / cberg->zNear) * M_180_PI; + double zFar = cberg->zFar + M_RAD7_4; + double fhalfwidth = zFar * tan(fovx_2 * M_PI_180) + + M_RAD7_4 / cos(fovx_2 * M_PI_180); + double x_farcenter = cberg->x + zFar * cos(cberg->yaw * M_PI_180); + double y_farcenter = cberg->y + zFar * sin(cberg->yaw * M_PI_180); + *x1 = x_farcenter + fhalfwidth * cos((cberg->yaw - 90) * M_PI_180); + *y1 = y_farcenter + fhalfwidth * sin((cberg->yaw - 90) * M_PI_180); + *x2 = x_farcenter - fhalfwidth * cos((cberg->yaw - 90) * M_PI_180); + *y2 = y_farcenter - fhalfwidth * sin((cberg->yaw - 90) * M_PI_180); + +#ifdef DEBUG + printf("pos (%.3f,%.3f) @ %.3f || fovx: %f || fovy: %f\n", + cberg->x, cberg->y, cberg->yaw, fovx_2 * 2, cberg->fovy); + printf("\tfarcenter: (%.3f,%.3f) || fhalfwidth: %.3f \n" + "\tp1: (%.3f,%.3f) || p2: (%.3f,%.3f)\n", + x_farcenter, y_farcenter, fhalfwidth, *x1, *y1, *x2, *y2); +#endif + + if (cberg->z - halfheight <= 0) /* near view plane hits xy */ + zNear = cberg->zNear - M_RAD7_4; + else /* use bottom of frustum */ + zNear = cberg->z / tan(cberg->fovy / 2 * M_PI_180) - M_RAD7_4; + nhalfwidth = zNear * tan(fovx_2 * M_PI_180) + + M_RAD7_4 / cos(fovx_2 * M_PI_180); + x_nearcenter = cberg->x + zNear * cos(cberg->yaw * M_PI_180); + y_nearcenter = cberg->y + zNear * sin(cberg->yaw * M_PI_180); + *x3 = x_nearcenter - nhalfwidth * cos((cberg->yaw - 90) * M_PI_180); + *y3 = y_nearcenter - nhalfwidth * sin((cberg->yaw - 90) * M_PI_180); + *x4 = x_nearcenter + nhalfwidth * cos((cberg->yaw - 90) * M_PI_180); + *y4 = y_nearcenter + nhalfwidth * sin((cberg->yaw - 90) * M_PI_180); + +#ifdef DEBUG + printf("\tnearcenter: (%.3f,%.3f) || nhalfwidth: %.3f\n" + "\tp3: (%.3f,%.3f) || p4: (%.3f,%.3f)\n", + x_nearcenter, y_nearcenter, nhalfwidth, *x3, *y3, *x4, *y4); +#endif + + + /* center can be average or the intersection of diagonals.. */ +#if 0 + { + double c = nhalfwidth * (zFar -zNear) / (fhalfwidth + nhalfwidth); + x_center = x_nearcenter + c * cos(cberg->yaw * M_PI_180); + y_center = y_nearcenter + c * sin(cberg->yaw * M_PI_180); + } +#else + x_center = (x_nearcenter + x_farcenter) / 2; + y_center = (y_nearcenter + y_farcenter) / 2; +#endif +#ifdef DEBUG + x_shit = x_center; + y_shit = y_center; +#endif + +#define VSCALE(p) *x##p = visibility * *x##p + (1-visibility) * x_center; \ + *y##p = visibility * *y##p + (1-visibility) * y_center + + VSCALE(1); + VSCALE(2); + VSCALE(3); + VSCALE(4); +#undef VSCALE +} + +/* this is pretty stupid.. */ +static inline void minmax4(double a, double b, double c, double d, + double *min, double *max) +{ + *min = *max = a; + + if (b > *max) *max = b; + else if (b < *min) *min = b; + if (c > *max) *max = c; + else if (c < *min) *min = c; + if (d > *max) *max = d; + else if (d < *min) *min = d; +} + +typedef struct { + double min, max, start, dx; +} LS; + +#define check_line(a, b) \ + if (fabs(y##a-y##b) > 0.001) { \ + ls[count].dx = (x##b-x##a)/(y##b-y##a); \ + if (y##b > y##a) { \ + ls[count].start = x##a; \ + ls[count].min = y##a; \ + ls[count].max = y##b; \ + } else { \ + ls[count].start = x##b; \ + ls[count].min = y##b; \ + ls[count].max = y##a; \ + } \ + ++count; \ + } + +static unsigned int build_ls(cberg_state *cberg, + double x1, double y1, double x2, double y2, + double x3, double y3, double x4, double y4, LS *ls, + double *trough, double *peak) +{ + unsigned int count = 0; + + check_line(1, 2); + check_line(2, 3); + check_line(3, 4); + check_line(4, 1); + + minmax4(y1, y2, y3, y4, trough, peak); + return count; +} + +#undef check_line + +/*needs bullshit to avoid double counts on corners.*/ +static void find_bounds(double y, double *left, double *right, LS *ls, + unsigned int nls) +{ + double x; + unsigned int i, set = 0; + + for (i = 0; i != nls; ++i) + if (ls[i].min <= y && ls[i].max >= y) { + x = (y - ls[i].min) * ls[i].dx + ls[i].start; + if (!set) { + *left = x; + ++set; + } else if (fabs(x - *left) > 0.001) { + if (*left < x) + *right = x; + else { + *right = *left; + *left = x; + } + return; + } + } + + /* just in case we somehow blew up */ + *left = 3.0; + *right = -3.0; +} + +static void mark_visible(cberg_state *cberg) +{ + double trough, peak, yval, left=0, right=0; + double x1,y1, x2,y2, x3,y3, x4,y4; + int start, stop, x, y; + LS ls[4]; + unsigned int nls; + + calc_points(cberg, &x1,&y1, &x2,&y2, &x3,&y3, &x4,&y4); + nls = build_ls(cberg, x1,y1, x2,y2, x3,y3, x4,y4, ls, &trough, &peak); + + start = (int) ceil(trough / M_SQRT3_2); + stop = (int) floor(peak / M_SQRT3_2); + + for (y = start; y <= stop; ++y) { + yval = y * M_SQRT3_2; + find_bounds(yval, &left, &right, ls, nls); + for (x = (int) ceil(left*2-1); x <= (int) floor(right*2); ++x) + triles_set_visible(cberg, &(cberg->trile_head), x, y); + } +} + + +/*************************** + ** color schemes + ** */ + +static void plain_land(cberg_state *cberg, double z) +{ glColor3f(pow((z/0.35),4), z/0.35, pow((z/0.35),4)); } +static void plain_water(cberg_state *cberg, double z) +{ glColor3f(0.0, (z+0.35)*1.6, 0.8); } + +static void ice_land(cberg_state *cberg, double z) +{ glColor3f((0.35 - z)/0.35, (0.35 - z)/0.35, 1.0); } +static void ice_water(cberg_state *cberg, double z) +{ glColor3f(0.0, (z+0.35)*1.6, 0.8); } + + +static void magma_land(cberg_state *cberg, double z) +{ glColor3f(z/0.35, z/0.2,0); } +static void magma_lava(cberg_state *cberg, double z) +{ glColor3f((z+0.35)*1.6, (z+0.35), 0.0); } + +static void vomit_solid(cberg_state *cberg, double z) +{ + double norm = fabs(z) / 0.35; + glColor3f( + (1-norm) * cberg->vs0r + norm * cberg->vs1r, + (1-norm) * cberg->vs0g + norm * cberg->vs1g, + (1-norm) * cberg->vs0b + norm * cberg->vs1b + ); +} +static void vomit_fluid(cberg_state *cberg, double z) +{ + double norm = z / -0.35; + glColor3f( + (1-norm) * cberg->vf0r + norm * cberg->vf1r, + (1-norm) * cberg->vf0g + norm * cberg->vf1g, + (1-norm) * cberg->vf0b + norm * cberg->vf1b + ); +} + + +static const Color colors[] = { + {"plain", plain_land, plain_water, {0.0, 0.0, 0.0, 1.0}}, + {"ice", ice_land, ice_water, {0.0, 0.0, 0.0, 1.0}}, + {"magma", magma_land, magma_lava, {0.3, 0.3, 0.0, 1.0}}, + {"vomit", vomit_solid, vomit_fluid, {0.3, 0.3, 0.0, 1.0}}, /* no error! */ +}; + +static const Color *select_color(cberg_state *cberg) +{ + unsigned int ncolors = countof(colors); + int idx = -1; + if ( ! strcmp(color, "random") ) + idx = random() % ncolors; + else { + unsigned int i; + for (i = 0; i != ncolors; ++i) + if ( ! strcmp(colors[i].id, color) ) { + idx = i; + break; + } + + if (idx == -1) { + printf("invalid color scheme selected; valid choices are:\n"); + for (i = 0; i != ncolors; ++i) + printf("\t%s\n", colors[i].id); + printf("\t%s\n", "random"); + idx = 0; + } + } + + if ( ! strcmp(colors[idx].id, "vomit") ) { /* need to create it (ghetto) */ + cberg->vs0r = random()/(double)RAND_MAX; + cberg->vs0g = random()/(double)RAND_MAX; + cberg->vs0b = random()/(double)RAND_MAX; + cberg->vs1r = random()/(double)RAND_MAX; + cberg->vs1g = random()/(double)RAND_MAX; + cberg->vs1b = random()/(double)RAND_MAX; + cberg->vf0r = random()/(double)RAND_MAX; + cberg->vf0g = random()/(double)RAND_MAX; + cberg->vf0b = random()/(double)RAND_MAX; + cberg->vf1r = random()/(double)RAND_MAX; + cberg->vf1g = random()/(double)RAND_MAX; + cberg->vf1b = random()/(double)RAND_MAX; + + glClearColor(random()/(double)RAND_MAX, + random()/(double)RAND_MAX, + random()/(double)RAND_MAX, + 1.0); + } else { + glClearColor(colors[idx].bg[0], + colors[idx].bg[1], + colors[idx].bg[2], + colors[idx].bg[3]); + } + return colors + idx; +} + + +/*************************** + ** misc helper functions + ** */ + + +/* simple one for now.. */ +static inline double drunken_rando(double cur_val, double max, double width) +{ + double r = random() / (double) RAND_MAX * 2; + if (cur_val > 0) + if (r >= 1) + return cur_val + (r-1) * width * (1-cur_val/max); + else + return cur_val - r * width; + else + if (r >= 1) + return cur_val - (r-1) * width * (1+cur_val/max); + else + return cur_val + r * width; +} + + +/*************************** + ** core crackberg routines + ** */ + +ENTRYPOINT void reshape_crackberg (ModeInfo *mi, int w, int h); + +ENTRYPOINT void init_crackberg (ModeInfo *mi) +{ + cberg_state *cberg; + + nsubdivs %= 16; /* just in case.. */ + + MI_INIT(mi, cbergs); + + if (visibility > 1.0 || visibility < 0.2) { + printf("visibility must be in range [0.2 .. 1.0]\n"); + visibility = 1.0; + } + + cberg = &cbergs[MI_SCREEN(mi)]; + + cberg->epoints = 1 + (1 << nsubdivs); + cberg->tpoints = cberg->epoints * (cberg->epoints + 1) / 2; + cberg->ntris = (1 << (nsubdivs << 1)); + cberg->tnorms = ( (flat) ? cberg->ntris : cberg->tpoints); + cberg->dx0 = 1.0 / (1 << nsubdivs); + + cberg->heights = malloc(cberg->tpoints * sizeof(double)); + cberg->norms = malloc(3 * cberg->tnorms * sizeof(double)); + + cberg->glx_context = init_GL(mi); + cberg->motion_state = MOTION_AUTO; + cberg->mspeed = 1.0; + cberg->z = 0.5; + + cberg->fovy = 60.0; + cberg->zNear = 0.5; + cberg->zFar = 5.0; + + cberg->draw_elapsed = 1.0; + + glEnable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glShadeModel((flat) ? GL_FLAT : GL_SMOOTH); +# ifndef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + glPolygonMode(GL_FRONT_AND_BACK, (MI_IS_WIREFRAME(mi)) ? GL_LINE : GL_FILL); +# endif + + if (lit) { + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_COLOR_MATERIAL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); + glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); + glEnable(GL_NORMALIZE); + glEnable(GL_RESCALE_NORMAL); + } + + cberg->color = select_color(cberg); + + reshape_crackberg(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); +} + +ENTRYPOINT void reshape_crackberg (ModeInfo *mi, int w, int h) +{ + int h2; + cberg_state *cberg = &cbergs[MI_SCREEN(mi)]; + + if (letterbox && (h2 = w * 9 / 16) < h) { + glViewport(0, (h-h2)/2, w, h2); + cberg->aspect = w/(double)h2; + } else { + glViewport (0, 0, w, h); + cberg->aspect = w/(double)h; + } + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(cberg->fovy, cberg->aspect, cberg->zNear, cberg->zFar); + glMatrixMode(GL_MODELVIEW); +} + +ENTRYPOINT Bool crackberg_handle_event (ModeInfo *mi, XEvent *ev) +{ + cberg_state *cberg = &cbergs[MI_SCREEN(mi)]; + KeySym keysym = 0; + char c = 0; + if (ev->xany.type == KeyPress || ev->xany.type == KeyRelease) + XLookupString (&ev->xkey, &c, 1, &keysym, 0); + + if (ev->xany.type == KeyPress) { + switch (keysym) { + case XK_Left: cberg->motion_state |= MOTION_LROT; break; + case XK_Prior: cberg->motion_state |= MOTION_LROT; break; + case XK_Right: cberg->motion_state |= MOTION_RROT; break; + case XK_Next: cberg->motion_state |= MOTION_RROT; break; + case XK_Down: cberg->motion_state |= MOTION_BACK; break; + case XK_Up: cberg->motion_state |= MOTION_FORW; break; + case '1': cberg->motion_state |= MOTION_DEC; break; + case '2': cberg->motion_state |= MOTION_INC; break; + case 'a': cberg->motion_state |= MOTION_LEFT; break; + case 'd': cberg->motion_state |= MOTION_RIGHT; break; + case 's': cberg->motion_state |= MOTION_BACK; break; + case 'w': cberg->motion_state |= MOTION_FORW; break; + default: return False; + } + cberg->motion_state |= MOTION_MANUAL; + } else if (ev->xany.type == KeyRelease) { +#if 0 + XEvent peek_ev; + if (XPending(mi->dpy)) { + XPeekEvent(mi->dpy, &peek_ev); + if (peek_ev.type == KeyPress + && peek_ev.xkey.keycode == ev->xkey.keycode + && peek_ev.xkey.time - ev->xkey.time < 2) { + XNextEvent(mi->dpy, &peek_ev); /* drop bullshit repeat events */ + return False; + } + } +#endif + + switch (keysym) { + case XK_Left: cberg->motion_state &= ~MOTION_LROT; break; + case XK_Prior: cberg->motion_state &= ~MOTION_LROT; break; + case XK_Right: cberg->motion_state &= ~MOTION_RROT; break; + case XK_Next: cberg->motion_state &= ~MOTION_RROT; break; + case XK_Down: cberg->motion_state &= ~MOTION_BACK; break; + case XK_Up: cberg->motion_state &= ~MOTION_FORW; break; + case '1': cberg->motion_state &= ~MOTION_DEC; break; + case '2': cberg->motion_state &= ~MOTION_INC; break; + case 'a': cberg->motion_state &= ~MOTION_LEFT; break; + case 'd': cberg->motion_state &= ~MOTION_RIGHT; break; + case 's': cberg->motion_state &= ~MOTION_BACK; break; + case 'w': cberg->motion_state &= ~MOTION_FORW; break; + case ' ': + if (cberg->motion_state == MOTION_MANUAL) + cberg->motion_state = MOTION_AUTO; + break; + default: return False; + } + } else if (ev->xany.type == ButtonPress && + ev->xbutton.button == Button1) { + cberg->button_down_p = True; + cberg->mouse_x = ev->xbutton.x; + cberg->mouse_y = ev->xbutton.y; + cberg->motion_state = MOTION_MANUAL; + cberg->paused.tv_sec = 0; + } else if (ev->xany.type == ButtonRelease && + ev->xbutton.button == Button1) { + cberg->button_down_p = False; + cberg->motion_state = MOTION_AUTO; + /* After mouse-up, don't go back into auto-motion mode for a second, so + that repeated click-and-drag gestures don't fight with auto-motion. */ + gettimeofday(&cberg->paused, NULL); + } else if (ev->xany.type == MotionNotify && + cberg->button_down_p) { + int dx = ev->xmotion.x - cberg->mouse_x; + int dy = ev->xmotion.y - cberg->mouse_y; + cberg->mouse_x = ev->xmotion.x; + cberg->mouse_y = ev->xmotion.y; + cberg->motion_state = MOTION_MANUAL; + + /* Take the larger dimension, since motion_state doesn't scale */ + if (dx > 0 && dx > dy) dy = 0; + if (dx < 0 && dx < dy) dy = 0; + if (dy > 0 && dy > dx) dx = 0; + if (dy < 0 && dy < dx) dx = 0; + + { + int rot = current_device_rotation(); + int swap; + while (rot <= -180) rot += 360; + while (rot > 180) rot -= 360; + if (rot > 135 || rot < -135) /* 180 */ + dx = -dx, dy = -dy; + else if (rot > 45) /* 90 */ + swap = dx, dx = -dy, dy = swap; + else if (rot < -45) /* 270 */ + swap = dx, dx = dy, dy = -swap; + } + + if (dx > 0) cberg->motion_state |= MOTION_LEFT; + else if (dx < 0) cberg->motion_state |= MOTION_RIGHT; + else if (dy > 0) cberg->motion_state |= MOTION_FORW; + else if (dy < 0) cberg->motion_state |= MOTION_BACK; + } else + return False; + return True; +} + +ENTRYPOINT void draw_crackberg (ModeInfo *mi) +{ + cberg_state *cberg = &cbergs[MI_SCREEN(mi)]; + struct timeval cur_frame_t; + double cur_frame; + static const float lpos[] = {2.0,0.0,-0.3,0.0}; + + if (!cberg->glx_context) /*XXX does this get externally tweaked? it kinda*/ + return; /*XXX can't.. check it in crackberg_init*/ + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cberg->glx_context)); + + gettimeofday(&cur_frame_t, NULL); + cur_frame = cur_frame_t.tv_sec + cur_frame_t.tv_usec / 1.0E6; + if ( cberg->prev_frame ) { /*not first run */ + + cberg->elapsed = cur_frame - cberg->prev_frame; + + if (cberg->motion_state == MOTION_AUTO && + cberg->paused.tv_sec < cur_frame_t.tv_sec) { + cberg->x += cberg->dx * cberg->elapsed; + cberg->y += cberg->dy * cberg->elapsed; + /* cberg->z */ + /* cberg->pitch */ + /* cberg->roll */ + cberg->yaw += cberg->dyaw * cberg->elapsed; + + cberg->draw_elapsed += cberg->elapsed; + if (cberg->draw_elapsed >= 0.8) { + cberg->draw_elapsed = 0.0; + cberg->dx = drunken_rando(cberg->dx, 2.5, 0.8); + cberg->dy = drunken_rando(cberg->dy, 2.5, 0.8); + /* cberg->dz */ + /* cberg->dpitch */ + /* cberg->droll */ + cberg->dyaw = drunken_rando(cberg->dyaw, 40.0, 8.0); + } + } else { + double scale = cberg->elapsed * cberg->mspeed; + if (cberg->motion_state & MOTION_BACK) { + cberg->x -= cos(cberg->yaw * M_PI_180) * scale; + cberg->y -= sin(cberg->yaw * M_PI_180) * scale; + } + if (cberg->motion_state & MOTION_FORW) { + cberg->x += cos(cberg->yaw * M_PI_180) * scale; + cberg->y += sin(cberg->yaw * M_PI_180) * scale; + } + + if (cberg->motion_state & MOTION_LEFT) { + cberg->x -= sin(cberg->yaw * M_PI_180) * scale; + cberg->y += cos(cberg->yaw * M_PI_180) * scale; + } + if (cberg->motion_state & MOTION_RIGHT) { + cberg->x += sin(cberg->yaw * M_PI_180) * scale; + cberg->y -= cos(cberg->yaw * M_PI_180) * scale; + } + + if (cberg->motion_state & MOTION_LROT) + cberg->yaw += 45 * scale; + if (cberg->motion_state & MOTION_RROT) + cberg->yaw -= 45 * scale; + + if (cberg->motion_state & MOTION_DEC) + cberg->mspeed /= pow(MSPEED_SCALE, cberg->draw_elapsed); + if (cberg->motion_state & MOTION_INC) + cberg->mspeed *= pow(MSPEED_SCALE, cberg->draw_elapsed); + + } + } + cberg->prev_frame = cur_frame; + + mark_visible(cberg); + triles_update_state(&(cberg->trile_head), cberg); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + glRotatef(current_device_rotation(), 0, 0, 1); + gluLookAt(0,0,0, 1,0,0, 0,0,1); + glLightfv(GL_LIGHT0, GL_POSITION, lpos); + /*glRotated(cberg->roll, 1,0,0); / * XXX blah broken and unused for now..* / + glRotated(cberg->pitch, 0,1,0); */ + glRotated(-cberg->yaw, 0,0,1); /* camera sees ->yaw over */ + glTranslated(-cberg->x, -cberg->y, -cberg->z); + + mi->polygon_count = cberg->ntris * + triles_foreach(cberg->trile_head, trile_draw,(void *) cberg); + + if (mi->fps_p) + do_fps(mi); + +#ifdef DEBUG + glBegin(GL_LINES); + glColor3f(1.0,0.0,0.0); + glVertex3d(x_shit, y_shit, 0.0); + glVertex3d(x_shit, y_shit, 1.0); + glEnd(); +#endif + + glFinish(); + glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi)); +} + +/* uh */ +ENTRYPOINT void free_crackberg (ModeInfo *mi) +{ + cberg_state *cberg = &cbergs[MI_SCREEN(mi)]; + if (cberg->norms) + free(cberg->norms); + free(cberg->heights); +} + +XSCREENSAVER_MODULE ("Crackberg", crackberg) + +#endif /* USE_GL */ diff --git a/hacks/glx/crackberg.man b/hacks/glx/crackberg.man new file mode 100644 index 0000000..5183baa --- /dev/null +++ b/hacks/glx/crackberg.man @@ -0,0 +1,123 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +crackberg - Lose your way wandering some height fields, and enjoy candy. +.SH SYNOPSIS +.B crackberg +[\-root] +[\-window] +[\-install] +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window-id \fIid\fP] +[\-delay \fIusecs\fP] +[\-fps] +[\-crack] +[\-lit] +[\-boring] +[\-letterbox] +[\-flat] +[\-wire] +[\-nowater] +[\-visibility \fIfloat\fP] +[\-color \fIstring\fP] +[\-nsubdivs \fIinteger\fP] +.SH DESCRIPTION +Flies through height maps, optionally animating the instantiation and +destruction of generated tiles; by default, tiles 'grow' into place (height +gradually increased up to correct value). In windowed mode the following key +controls are available: +.TP 8 +.B left, right +Turn left and right. +.TP 8 +.B a,w,s,d +Move left, forwards, backwards, and to the right, respectively. +.TP 8 +.B 1,2 +Decrease and increase manual speed, respectively. +.TP 8 +.B Spacebar +Return to automatic control. +.SH OPTIONS +.I crackberg +accepts the following options: +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual +class, or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +Delay between frames; default 20000 (1/50th of a second). +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-crack +Use all possible methods to animate tile instantiation. +.TP 8 +.B \-boring +Do not animate instatiation at all; use this to get standard landscape +generator behavior. +.TP 8 +.B \-letterbox +Drawable window region has a 16:9 aspect ratio, regardless of actual +window size. +.TP 8 +.B \-lit +Enable lighting. +.TP 8 +.B \-flat +Flat shading (OpenGL will use one color per primitive, rather than +interpolating betwixt vertices). +.TP 8 +.B \-wire +Wireframe. +.TP 8 +.B \-nowater +Do not display 'water' (forces negative values to zero, and selects a +different coloring method). +.TP 8 +.B \-visibility \fIfloat\fP +Value in range [0.2,1.0] (default 0.6) specifying proportion of viewable +XY plane which is to be drawn upon. +.TP 8 +.B \-color \fIstring\fP +Selects color scheme. Use with no or bogus argument for current list. +.TP 8 +.B \-nsubdivs \fIinteger\fP +Number of times to recursively subdivide each triangular tile. Each +increment increases total triangles by a factor of 4; for instance the default +setting 4 results in 256 triangles per tile. + +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2005 by Matus Telgarsky. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Matus Telgarsky , 2005. diff --git a/hacks/glx/crumbler.c b/hacks/glx/crumbler.c new file mode 100644 index 0000000..8e783db --- /dev/null +++ b/hacks/glx/crumbler.c @@ -0,0 +1,875 @@ +/* crumbler, Copyright (c) 2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_crumbler 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include "quickhull.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_DENSITY "1.0" +#define DEF_FRACTURE "0" + +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +typedef struct { + qh_vertex_t *verts; /* interior point cloud */ + int nverts, onverts; + qh_vertex_t min, max; /* enclosing box */ + qh_vertex_t mid, vec; + int polygon_count; + GLuint dlist; + int color; + int color_shift; +} chunk; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + enum { IDLE, SPLIT, PAUSE, FLEE, ZOOM } state; + GLfloat tick; + Bool button_down_p; + int nchunks; + chunk **chunks; + chunk *ghost; + + int ncolors; + XColor *colors; +} crumbler_configuration; + +static crumbler_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static GLfloat density; +static int fracture; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-density", ".density", XrmoptionSepArg, 0 }, + { "-fracture",".fracture",XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" } +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&density, "density", "Density", DEF_DENSITY, t_Float}, + {&fracture, "fracture","Fracture",DEF_FRACTURE,t_Int}, +}; + +ENTRYPOINT ModeSpecOpt crumbler_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Create a roughly spherical cloud of N random points. + */ +static void +make_point_cloud (qh_vertex_t *verts, int nverts) +{ + int i = 0; + while (i < nverts) + { + verts[i].x = (0.5 - frand(1.0)); + verts[i].y = (0.5 - frand(1.0)); + verts[i].z = (0.5 - frand(1.0)); + if ((verts[i].x * verts[i].x + + verts[i].y * verts[i].y + + verts[i].z * verts[i].z) + < 0.25) + i++; + } +} + + +static chunk * +make_chunk (void) +{ + chunk *c = (chunk *) calloc (1, sizeof(*c)); + c->dlist = glGenLists (1); + c->color_shift = 1 + (random() % 3) * RANDSIGN(); + return c; +} + +static void +render_chunk (ModeInfo *mi, chunk *c) +{ + int wire = MI_IS_WIREFRAME(mi); + int i, j; + qh_mesh_t m; + GLfloat d; + + if (c->nverts <= 3) + { + fprintf (stderr, "%s: nverts %d\n", progname, c->nverts); + abort(); + } + + c->polygon_count = 0; + c->min.x = c->min.y = c->min.z = 999999; + c->max.x = c->max.y = c->max.z = -999999; + + for (i = 0; i < c->nverts; i++) + { + if (c->verts[i].x < c->min.x) c->min.x = c->verts[i].x; + if (c->verts[i].y < c->min.y) c->min.y = c->verts[i].y; + if (c->verts[i].z < c->min.z) c->min.z = c->verts[i].z; + if (c->verts[i].x > c->max.x) c->max.x = c->verts[i].x; + if (c->verts[i].y > c->max.y) c->max.y = c->verts[i].y; + if (c->verts[i].z > c->max.z) c->max.z = c->verts[i].z; + } + + c->mid.x = (c->max.x + c->min.x) / 2; + c->mid.y = (c->max.y + c->min.y) / 2; + c->mid.z = (c->max.z + c->min.z) / 2; + + /* midpoint as normalized vector from origin */ + d = sqrt (c->mid.x * c->mid.x + + c->mid.y * c->mid.y + + c->mid.z * c->mid.z); + c->vec.x = c->mid.x / d; + c->vec.y = c->mid.y / d; + c->vec.z = c->mid.z / d; + + if (c->nverts <= 3) + { + fprintf (stderr, "%s: nverts %d\n", progname, c->nverts); + abort(); + } + + m = qh_quickhull3d (c->verts, c->nverts); + + glNewList (c->dlist, GL_COMPILE); + if (! wire) glBegin (GL_TRIANGLES); + for (i = 0, j = 0; i < m.nindices; i += 3, j++) + { + qh_vertex_t *v0 = &m.vertices[m.indices[i+0]]; + qh_vertex_t *v1 = &m.vertices[m.indices[i+1]]; + qh_vertex_t *v2 = &m.vertices[m.indices[i+2]]; + qh_vec3_t *n = &m.normals[m.normalindices[j]]; + + if (i+2 >= m.nindices) abort(); + if (j >= m.nnormals) abort(); + + glNormal3f (n->x, n->y, n->z); + if (wire) glBegin(GL_LINE_LOOP); + glVertex3f (v0->x, v0->y, v0->z); + glVertex3f (v1->x, v1->y, v1->z); + glVertex3f (v2->x, v2->y, v2->z); + if (wire) glEnd(); + c->polygon_count++; + } + if (! wire) glEnd(); + + if (wire) + { + glPointSize (1); + glColor3f (0, 1, 0); + glBegin (GL_POINTS); + for (i = 0; i < c->nverts; i++) + { + if (i > 0 && i == c->onverts) + { + glEnd(); + glColor3f (1, 0, 0); + glBegin (GL_POINTS); + } + glVertex3f (c->verts[i].x, c->verts[i].y, c->verts[i].z); + } + glEnd(); + } + + glEndList(); + + qh_free_mesh (m); +} + + +static void +free_chunk (chunk *c) +{ + if (c->dlist) + glDeleteLists (c->dlist, 1); + free (c->verts); + free (c); +} + + +/* Make sure the chunk contains at least N points. + As we subdivide, the number of points is reduced. + This adds new points to the interior that do not + affect the shape of the outer hull. + */ +static void +pad_chunk (chunk *c, int min) +{ + /* Allocate a new array of size N + Copy the old points into it + while size < N + pick two random points + add a point that is somewhere along the line between them + (that point will still be inside the old hull) + */ + qh_vertex_t *verts; + int i; + if (c->nverts >= min) return; + if (c->nverts <= 3) abort(); + verts = (qh_vertex_t *) calloc (min, sizeof(*verts)); + if (!verts) abort(); + memcpy (verts, c->verts, c->nverts * sizeof(*verts)); + i = c->nverts; + while (i < min) + { + qh_vertex_t v; + int j0, j1; + GLfloat r; + j0 = random() % c->nverts; + do { + j1 = random() % c->nverts; + } while (j0 == j1); + + r = 0.2 + frand(0.6); +# undef R +# define R(F) v.F = c->verts[j0].F + \ + r * (fabs (c->verts[j1].F - c->verts[j0].F)) \ + * (c->verts[j0].F > c->verts[j1].F ? -1 : 1) + R(x); + R(y); + R(z); +# undef R + + /* Sometimes quickhull.c is giving us concave and un-closed polygons. + Maybe it gets confused if there are duplicate points? So reject + this point if it is within epsilon of any earlier point. + */ +# if 0 /* Nope, that's not it. */ + { + Bool ok = True; + int j; + for (j = 0; j < i; j++) + { + + double X = c->verts[j].x - v.x; + double Y = c->verts[j].y - v.y; + double Z = c->verts[j].z - v.z; + double d2 = X*X + Y*Y + Z*Z; + if (d2 < 0.0001) + { + /* fprintf (stderr, "## REJ %f\n",d2); */ + ok = False; + break; + } + } + if (! ok) continue; + } +# endif + + verts[i++] = v; + } + +#if 0 + fprintf (stdout, " int n = %d;\n", min); + fprintf (stdout, " qh_vertex_t v[] = {"); + for (i = 0; i < min; i++) + fprintf(stdout,"{%f,%f,%f},", verts[i].x, verts[i].y, verts[i].z); + fprintf (stdout, "};\n\n"); +#endif + + free (c->verts); + c->verts = verts; + c->onverts = c->nverts; + c->nverts = min; + +#if 0 + qh_vertex_t *verts2 = (qh_vertex_t *) calloc (n, sizeof(*verts2)); + memcpy (verts2, v, n * sizeof(*verts2)); + free (c->verts); + c->verts = verts2; + c->onverts = 0; + c->nverts = n; +#endif +} + + +/* Returns a list of N new chunks. + */ +static chunk ** +split_chunk (ModeInfo *mi, chunk *c, int nchunks) +{ + /* Pick N key-points from the cloud. + Create N new chunks. + For each old point: + It goes in chunk N if it is closest to key-point N. + Free old chunk. + for each new chunk + render_chunk + */ + crumbler_configuration *bp = &bps[MI_SCREEN(mi)]; + chunk **chunks; + int *keys; + int i, j; + int retries = 0; + + RETRY: + chunks = (chunk **) calloc (nchunks, sizeof(*chunks)); + keys = (int *) calloc (nchunks, sizeof(*keys)); + + for (i = 0; i < nchunks; i++) + { + /* Fill keys with random numbers that are not duplicates. */ + Bool ok = True; + chunk *c2 = 0; + if (nchunks >= c->nverts) + { + fprintf (stderr, "%s: nverts %d nchunks %d\n", progname, + c->nverts, nchunks); + abort(); + } + do { + keys[i] = random() % c->nverts; + ok = True; + for (j = 0; j < i; j++) + if (keys[i] == keys[j]) + { + ok = False; + break; + } + } while (!ok); + + c2 = make_chunk(); + chunks[i] = c2; + chunks[i]->nverts = 0; + c2->verts = (qh_vertex_t *) calloc (c->nverts, sizeof(*c2->verts)); + c2->color = (c->color + (random() % (1 + (bp->ncolors / 3)))) + % bp->ncolors; + } + + /* Add the verts to the approprate chunks + */ + for (i = 0; i < c->nverts; i++) + { + qh_vertex_t *v0 = &c->verts[i]; + int target_chunk = -1; + double target_d2 = 9999999; + chunk *c2 = 0; + + for (j = 0; j < nchunks; j++) + { + qh_vertex_t *v1 = &c->verts[keys[j]]; + double X = v1->x - v0->x; + double Y = v1->y - v0->y; + double Z = v1->z - v0->z; + double d2 = X*X + Y*Y + Z*Z; + if (d2 < target_d2) + { + target_d2 = d2; + target_chunk = j; + } + } + if (target_chunk == -1) abort(); + + c2 = chunks[target_chunk]; + c2->verts[c2->nverts++] = *v0; + if (c2->nverts > c->nverts) abort(); + } + + free (keys); + keys = 0; + + for (i = 0; i < nchunks; i++) + { + chunk *c2 = chunks[i]; + + /* It is possible that the keys we have chosen have resulted in one or + more cells that have 3 or fewer points in them. If that's the case, + re-randomize. + */ + if (c2->nverts <= 3) + { + for (j = 0; j < nchunks; j++) + free_chunk (chunks[j]); + free (chunks); + chunks = 0; + if (retries++ > 100) + { + fprintf(stderr, "%s: unsplittable\n", progname); + abort(); + } + goto RETRY; + } + + if (i == 0) /* The one we're gonna keep */ + pad_chunk (c2, c->nverts); + render_chunk (mi, c2); + } + + return chunks; +} + + +static void +tick_crumbler (ModeInfo *mi) +{ + crumbler_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat ts; + + if (bp->button_down_p) return; + + switch (bp->state) { + case IDLE: ts = 0.02; break; + case SPLIT: ts = 0.01; break; + case PAUSE: ts = 0.008; break; + case FLEE: ts = 0.005; break; + case ZOOM: ts = 0.03; break; + default: abort(); break; + } + + bp->tick += ts * speed; + + if (bp->tick < 1) return; + + bp->tick = 0; + bp->state = (bp->state + 1) % (ZOOM + 1); + + switch (bp->state) { + case IDLE: + { + chunk *c = bp->chunks[0]; + int i; + + /* We already animated it zooming to full size. Now make it real. */ + GLfloat X = (c->max.x - c->min.x); + GLfloat Y = (c->max.y - c->min.y); + GLfloat Z = (c->max.z - c->min.z); + GLfloat s = 1 / MAX(X, MAX(Y, Z)); + + for (i = 0; i < c->nverts; i++) + { + c->verts[i].x *= s; + c->verts[i].y *= s; + c->verts[i].z *= s; + } + + /* Re-render it to move the verts in the display list too. + This also recomputes min, max and mid. + */ + render_chunk (mi, c); + break; + } + + case SPLIT: + { + chunk *c = bp->chunks[0]; + int frac = (fracture >= 2 ? fracture : 2 + (2 * (random() % 5))); + chunk **chunks = split_chunk (mi, c, frac); + if (bp->nchunks != 1) abort(); + if (bp->ghost) abort(); + bp->ghost = c; + free (bp->chunks); + bp->chunks = chunks; + bp->nchunks = frac; + break; + } + + case PAUSE: + break; + + case FLEE: + if (bp->ghost) free_chunk (bp->ghost); + bp->ghost = 0; + break; + + case ZOOM: + { + chunk *c = bp->chunks[0]; + int i; + for (i = 1; i < bp->nchunks; i++) + free_chunk (bp->chunks[i]); + bp->nchunks = 1; + + /* We already animated the remaining chunk moving toward the origin. + Make it real. + */ + for (i = 0; i < c->nverts; i++) + { + c->verts[i].x -= c->mid.x; + c->verts[i].y -= c->mid.y; + c->verts[i].z -= c->mid.z; + } + + /* Re-render it to move the verts in the display list too. + This also recomputes min, max and mid (now 0). + */ + render_chunk (mi, c); + break; + } + + default: abort(); break; + } +} + + +static GLfloat +ease_fn (GLfloat r) +{ + return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */ +} + + +static GLfloat +ease_ratio (GLfloat r) +{ + GLfloat ease = 0.35; + if (r <= 0) return 0; + else if (r >= 1) return 1; + else if (r <= ease) return ease * ease_fn (r / ease); + else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease); + else return r; +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_crumbler (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +crumbler_handle_event (ModeInfo *mi, XEvent *event) +{ + crumbler_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_crumbler (ModeInfo *mi) +{ + crumbler_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_crumbler (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + { + double spin_speed = 0.5 * speed; + double spin_accel = 0.3; + double wander_speed = 0.01 * speed; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + bp->trackball = gltrackball_init (True); + } + + bp->ncolors = 1024; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + + /* brighter colors, please... */ + for (i = 0; i < bp->ncolors; i++) + { +# undef R +# define R(F) F = 65535 * (0.3 + 0.7 * ((F) / 65535.0)) + R (bp->colors[i].red); + R (bp->colors[i].green); + R (bp->colors[i].blue); +# undef R + } + +# ifdef HAVE_MOBILE +# ifdef USE_IPHONE + density *= 0.5; /* iPhone 6s runs out of memory at 4500 nverts. */ +# else + density *= 0.3; /* Android Nexus_5_8.1 emulator runs out earlier. */ +# endif +# endif + + { + chunk *c; + bp->nchunks = 1; + bp->chunks = (chunk **) calloc (bp->nchunks, sizeof(*bp->chunks)); + c = make_chunk(); + bp->chunks[0] = c; + c->nverts = 4500 * density; + c->verts = (qh_vertex_t *) calloc (c->nverts, sizeof(*c->verts)); + make_point_cloud (c->verts, c->nverts); + + /* Let's shrink it to a point then zoom in. */ + bp->state = ZOOM; + bp->tick = 0; + for (i = 0; i < c->nverts; i++) + { + c->verts[i].x /= 500; + c->verts[i].y /= 500; + c->verts[i].z /= 500; + } + + render_chunk (mi, c); + } +} + + +static void +draw_chunk (ModeInfo *mi, chunk *c, GLfloat alpha) +{ + crumbler_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat color[4]; + + color[0] = bp->colors[c->color].red / 65536.0; + color[1] = bp->colors[c->color].green / 65536.0; + color[2] = bp->colors[c->color].blue / 65536.0; + color[3] = alpha; + glColor4fv (color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + + c->color += c->color_shift; + while (c->color < 0) c->color += bp->ncolors; + while (c->color >= bp->ncolors) c->color -= bp->ncolors; + + glCallList (c->dlist); + mi->polygon_count += c->polygon_count; +} + + +ENTRYPOINT void +draw_crumbler (ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + crumbler_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + GLfloat alpha = 1; + int i; + + static const GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat bshiny = 128.0; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + tick_crumbler (mi); + + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 15); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glMaterialfv (GL_FRONT, GL_SPECULAR, bspec); + glMateriali (GL_FRONT, GL_SHININESS, bshiny); + + if (do_wander) + glScalef (10, 10, 10); + else + glScalef (13, 13, 13); + + alpha = 1; + for (i = 0; i < bp->nchunks; i++) + { + chunk *c = bp->chunks[i]; + + glPushMatrix(); + + switch (bp->state) { + case FLEE: + { + GLfloat r = ease_ratio (bp->tick); + /* Move everybody toward the origin, so that chunk #0 ends up + centered there. */ + glTranslatef (-r * c->mid.x, + -r * c->mid.y, + -r * c->mid.z); + if (i != 0) + { + /* Move this chunk away from the center, along a vector from + the origin to its midpoint. */ + GLfloat d2 = r * 6; + glTranslatef (c->vec.x * d2, c->vec.y * d2, c->vec.z * d2); + alpha = 1 - r; + } + } + break; + + case ZOOM: + { + chunk *c = bp->chunks[0]; + GLfloat X = (c->max.x - c->min.x); + GLfloat Y = (c->max.y - c->min.y); + GLfloat Z = (c->max.z - c->min.z); + GLfloat size0 = MAX(X, MAX(Y, Z)); + GLfloat size1 = 1.0; + GLfloat r = 1 - ease_ratio (bp->tick); + GLfloat s = 1 / (size0 + r * (size1 - size0)); + glScalef (s, s, s); + } + break; + + default: + break; + } + + draw_chunk (mi, c, alpha); + glPopMatrix(); + } + + /* Draw the old one, fading out. */ + if (!wire && bp->state == SPLIT && bp->ghost) + { + GLfloat s; + /* alpha = 1 - bp->tick; */ + alpha = 1; + /* s = 0.7 + (0.3 * ease_ratio (1-bp->tick)); */ + s = 2 * ease_ratio ((1-bp->tick) / 2); + s *= 1.01; + glScalef (s, s, s); + draw_chunk (mi, bp->ghost, alpha); + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + + +ENTRYPOINT void +free_crumbler (ModeInfo *mi) +{ + crumbler_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + free (bp->trackball); + free (bp->rot); + free (bp->colors); + for (i = 0; i < bp->nchunks; i++) + free_chunk (bp->chunks[i]); + free (bp->chunks); +} + + +XSCREENSAVER_MODULE ("Crumbler", crumbler) + +#endif /* USE_GL */ diff --git a/hacks/glx/crumbler.man b/hacks/glx/crumbler.man new file mode 100644 index 0000000..a608d9d --- /dev/null +++ b/hacks/glx/crumbler.man @@ -0,0 +1,77 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +crumbler - voronoi divisions of a sphere. +.SH SYNOPSIS +.B crumbler +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-density \fInumber\fP] +[\-fracture \fInumber\fP] +[\-no-wander] +[\-no-spin] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Randomly subdivides a ball into voronoi chunks, then further subdivides one +of the remaining pieces. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-density \fInumber\fP +Density of the polygons mesh. 2.0 means twice as dense, 0.5 means half. +.TP 8 +.B \-fracture \fInumber\fP +How many times to fracture each object. 0 means random. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the object should spin. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2018 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/cube21.c b/hacks/glx/cube21.c new file mode 100644 index 0000000..451a523 --- /dev/null +++ b/hacks/glx/cube21.c @@ -0,0 +1,941 @@ +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Cube 21 - a Rubik-like puzzle. It changes its shape and has more than + * 200 configurations. It is known better as Square-1, but it is called + * Cube 21 in the Czech republic, where it was invented in 1992. + * + * This file is derived from cage.c, + * "cage --- the Impossible Cage, an Escher like scene", + * by Marcelo F. Vienna, + * parts from gltext.c by Jamie Zawinski + * + * Vaclav (Vasek) Potocek + * vasek.potocek@post.cz + */ + +/* TODO: + * some simple "solve mode" + * use rotator + */ + +/*- + * Texture mapping is only available on RGBA contexts, Mono and color index + * visuals DO NOT support texture mapping in OpenGL. + * + * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture + * mapping should work on PseudoColor, DirectColor, TrueColor using Mesa. Mono + * is not officially supported for both OpenGL and Mesa, but seems to not crash + * Mesa. + * + * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know). + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" + +# define free_cube21 0 +# define release_cube21 0 +#include "xlockmore.h" + +#include "gltrackball.h" + +#ifdef USE_GL + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_TEXTURE "True" +#define DEF_RANDOMIZE "True" +#define DEF_SPINSPEED "1.0" +#define DEF_ROTSPEED "3.0" +#define DEF_WANDERSPEED "0.02" +#define DEF_WAIT "40.0" +#define DEF_CUBESIZE "0.7" +#define DEF_COLORMODE "six" + +#ifdef Pi +#undef Pi +#endif +#define Pi M_PI + +#define SHUFFLE 100 + +#define COS15 0.9659258263 +#define SIN15 0.2588190451 +#define COS30 0.8660254038 +#define SIN30 0.5000000000 + +#define TEX_WIDTH 128 +#define TEX_HEIGHT 128 +#define TEX_GRAY 0.7, 0.7 +#define BORDER 3 +#define BORDER2 9 + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define rnd01() (random()%2) +#define rndcolor() (frand(0.5)+0.3) + +/*************************************************************************/ + +static Bool spin, wander, rndstart, tex; +static float spinspeed, tspeed, wspeed, twait, size; +static char *colmode_s; +static int colmode; + +static argtype vars[] = { + { &spin, "spin", "Spin", DEF_SPIN, t_Bool}, + { &wander, "wander", "Wander", DEF_WANDER, t_Bool}, + { &rndstart, "randomize", "Randomize", DEF_RANDOMIZE, t_Bool}, + { &tex, "texture", "Texture", DEF_TEXTURE, t_Bool}, + { &spinspeed, "spinspeed", "SpinSpeed", DEF_SPINSPEED, t_Float}, + { &tspeed, "rotspeed", "RotSpeed", DEF_ROTSPEED, t_Float}, + { &wspeed, "wanderspeed", "WanderSpeed", DEF_WANDERSPEED, t_Float}, + { &twait, "wait", "Wait", DEF_WAIT, t_Float}, + { &size, "cubesize", "CubeSize", DEF_CUBESIZE, t_Float}, + { &colmode_s, "colormode", "ColorMode", DEF_COLORMODE, t_String} +}; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-randomize", ".randomize", XrmoptionNoArg, "True" }, + { "+randomize", ".randomize", XrmoptionNoArg, "False" }, + { "-texture", ".texture", XrmoptionNoArg, "True" }, + { "+texture", ".texture", XrmoptionNoArg, "False" }, + { "-spinspeed", ".spinspeed", XrmoptionSepArg, 0 }, + { "-wanderspeed", ".wanderspeed", XrmoptionSepArg, 0 }, + { "-rotspeed", ".rotspeed", XrmoptionSepArg, 0 }, + { "-wait", ".wait", XrmoptionSepArg, 0 }, + { "-cubesize", ".cubesize", XrmoptionSepArg, 0 }, + { "-colormode", ".colormode", XrmoptionSepArg, 0 } +}; + +ENTRYPOINT ModeSpecOpt cube21_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct cube21_description = +{ "cube21", "init_cube21", "draw_cube21", NULL, + "draw_cube21", "change_cube21", NULL, &cube21_opts, + 25000, 1, 1, 1, 1.0, 4, "", + "Shows randomly shuffling Cube 21", 0, NULL +}; +#endif + +typedef enum { + CUBE21_STATE_BASIC, + CUBE21_PAUSE1 = CUBE21_STATE_BASIC, + CUBE21_ROT_BASE, + CUBE21_ROT_TOP = CUBE21_ROT_BASE, + CUBE21_ROT_BOTTOM, + CUBE21_PAUSE2, + CUBE21_HALF_BASE, + CUBE21_HALF1 = CUBE21_HALF_BASE, + CUBE21_HALF2 +} cube21_state; + +typedef enum { + CUBE21_COLOR_WHITE, + CUBE21_COLOR_RANDOM, + CUBE21_COLOR_SILVER, + CUBE21_COLOR_TWORND, + CUBE21_COLOR_CLASSIC, + CUBE21_COLOR_SIXRND +} cube21_cmode; + +typedef int pieces_t[2][13]; +typedef int cind_t[5][12]; +typedef GLfloat col_t[6][3]; + +typedef struct { + GLXContext *glx_context; + GLfloat ratio; + cube21_state state; /* type of "rotation" - shuffling */ + GLfloat xrot, yrot; /* "spin" - object rotation around axis */ + GLfloat posarg; /* position argument (for sine function) */ + GLfloat t, tmax; /* rotation clock */ + int hf[2], fr[2]; /* half flipped / face rotated flags */ + int rface, ramount; /* selected face and amount of rotation in multiplies of 30deg */ + int pieces[2][13]; /* locations of "narrow" and "wide" pieces */ + int cind[5][12]; /* color indices */ + GLfloat colors[6][3]; /* color map */ + + Bool wire, cmat; + unsigned char texture[TEX_HEIGHT][TEX_WIDTH]; + + GLfloat texp, texq, posc[6]; + GLfloat color_inner[4]; + + Bool button_down_p; + trackball_state *trackball; + +} cube21_conf; + +static cube21_conf *cube21 = NULL; + +static const GLfloat shininess = 20.0; +static const GLfloat ambient[] = {0.0, 0.0, 0.0, 1.0}; +static const GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const GLfloat position0[] = {1.0, 1.0, 1.0, 0.0}; +static const GLfloat position1[] = {-1.0, -1.0, 1.0, 0.0}; +static const GLfloat lmodel_ambient[] = {0.1, 0.1, 0.1, 1.0}; +static const GLfloat material_ambient[] = {0.7, 0.7, 0.7, 1.0}; +static const GLfloat material_diffuse[] = {0.7, 0.7, 0.7, 1.0}; +static const GLfloat material_specular[] = {0.2, 0.2, 0.2, 1.0}; +static const GLfloat zpos = -18.0; + +/*************************************************************************/ + +static void find_matches(pieces_t pieces, int matches[12], int s) +{ + int i, j = 1; + for(i = 1; i<6; i++) { + if(pieces[s][i] && pieces[s][i+6]) { + matches[j++] = i; + } + } + matches[0] = j; + for(i = 1; ipieces, matches, s); + j = matches[0]-1; + j = random()%j; + j = matches[j+1]; + rot_face(cp->pieces, cp->cind, s, j); + s = rnd01(); + rot_halves(cp->pieces, cp->cind, cp->hf, s); + } +} + +static void finish(cube21_conf *cp) +{ + int j, s; + int matches[12]; + switch(cp->state) { + case CUBE21_PAUSE1: + s = rnd01(); + find_matches(cp->pieces, matches, s); + j = matches[0]-1; + j = random()%j; + j = matches[j+1]; + if(j==6 && rnd01()) j = -6; + cp->state = CUBE21_ROT_BASE+s; + cp->tmax = 30.0*abs(j); + cp->fr[0] = cp->fr[1] = 0; + cp->rface = s; + cp->ramount = j; + break; + case CUBE21_ROT_TOP: + case CUBE21_ROT_BOTTOM: + rot_face(cp->pieces, cp->cind, s = cp->rface, cp->ramount); + cp->fr[s] = 1; + s ^= 1; + if(!cp->fr[s] && rnd01()) { + find_matches(cp->pieces, matches, s); + j = matches[0]-1; + j = random()%j; + j = matches[j+1]; + if(j==6 && rnd01()) j = -6; + cp->state = CUBE21_ROT_BASE+s; + cp->tmax = 30.0*abs(j); + cp->rface = s; + cp->ramount = j; + break; + } else { + cp->state = CUBE21_PAUSE2; + cp->tmax = twait; + break; + } + case CUBE21_PAUSE2: + s = rnd01(); + cp->ramount = -rnd01(); /* 0 or -1, only sign is significant in this case */ + cp->state = CUBE21_HALF_BASE+s; + cp->tmax = 180.0; + cp->rface = s; + break; + case CUBE21_HALF1: + case CUBE21_HALF2: + rot_halves(cp->pieces, cp->cind, cp->hf, cp->rface); + cp->state = CUBE21_PAUSE1; + cp->tmax = twait; + break; + } + cp->t = 0; +} + +static void draw_narrow_piece(ModeInfo *mi, cube21_conf *cp, GLfloat s, int c1, int c2, col_t colors) +{ + GLfloat s1 = cp->posc[0]*s; + glBegin(GL_TRIANGLES); + glNormal3f(0.0, 0.0, s); + if(cp->cmat) glColor3fv(colors[c1]); + glTexCoord2f(0.5, 0.5); glVertex3f(0.0, 0.0, s); + glTexCoord2f(cp->texq, 0.0); glVertex3f(cp->posc[1], 0.0, s); + glTexCoord2f(cp->texp, 0.0); glVertex3f(cp->posc[2], cp->posc[3], s); + mi->polygon_count++; + glNormal3f(0.0, 0.0, -s); + if(cp->cmat) glColor3fv(cp->color_inner); + glTexCoord2f(TEX_GRAY); + glVertex3f(0.0, 0.0, s1); + glVertex3f(cp->posc[1], 0.0, s1); + glVertex3f(cp->posc[2], cp->posc[3], s1); + mi->polygon_count++; + glEnd(); + glBegin(GL_QUADS); + glNormal3f(0.0, -1.0, 0.0); + if(cp->cmat) glColor3fv(cp->color_inner); + glTexCoord2f(TEX_GRAY); + glVertex3f(0.0, 0.0, s); + glVertex3f(cp->posc[1], 0.0, s); + glVertex3f(cp->posc[1], 0.0, s1); + glVertex3f(0.0, 0.0, s1); + mi->polygon_count++; + glNormal3f(COS15, SIN15, 0.0); + if(cp->cmat) glColor3fv(colors[c2]); + glTexCoord2f(cp->texq, cp->texq); glVertex3f(cp->posc[1], 0.0, s); + glTexCoord2f(cp->texq, cp->texp); glVertex3f(cp->posc[2], cp->posc[3], s); + glTexCoord2f(1.0, cp->texp); glVertex3f(cp->posc[2], cp->posc[3], s1); + glTexCoord2f(1.0, cp->texq); glVertex3f(cp->posc[1], 0.0, s1); + mi->polygon_count++; + glNormal3f(-SIN30, COS30, 0.0); + if(cp->cmat) glColor3fv(cp->color_inner); + glTexCoord2f(TEX_GRAY); + glVertex3f(0.0, 0.0, s); + glVertex3f(cp->posc[2], cp->posc[3], s); + glVertex3f(cp->posc[2], cp->posc[3], s1); + glVertex3f(0.0, 0.0, s1); + mi->polygon_count++; + glEnd(); + glRotatef(30.0, 0.0, 0.0, 1.0); +} + +static void draw_wide_piece(ModeInfo *mi, cube21_conf *cp, GLfloat s, int c1, int c2, int c3, col_t colors) +{ + GLfloat s1 = cp->posc[0]*s; + glBegin(GL_TRIANGLES); + glNormal3f(0.0, 0.0, s); + if(cp->cmat) glColor3fv(colors[c1]); + glTexCoord2f(0.5, 0.5); glVertex3f(0.0, 0.0, s); + glTexCoord2f(cp->texp, 0.0); glVertex3f(cp->posc[1], 0.0, s); + glTexCoord2f(0.0, 0.0); glVertex3f(cp->posc[4], cp->posc[5], s); + glTexCoord2f(0.0, 0.0); glVertex3f(cp->posc[4], cp->posc[5], s); + glTexCoord2f(0.0, cp->texp); glVertex3f(cp->posc[3], cp->posc[2], s); + glTexCoord2f(0.5, 0.5); glVertex3f(0.0, 0.0, s); + glNormal3f(0.0, 0.0, -s); + if(cp->cmat) glColor3fv(cp->color_inner); + glTexCoord2f(TEX_GRAY); + glVertex3f(0.0, 0.0, s1); + glVertex3f(cp->posc[1], 0.0, s1); + glVertex3f(cp->posc[4], cp->posc[5], s1); + glVertex3f(cp->posc[4], cp->posc[5], s1); + glVertex3f(cp->posc[3], cp->posc[2], s1); + glVertex3f(0.0, 0.0, s1); + glEnd(); + glBegin(GL_QUADS); + glNormal3f(0.0, -1.0, 0); + if(cp->cmat) glColor3fv(cp->color_inner); + glTexCoord2f(TEX_GRAY); + glVertex3f(0.0, 0.0, s); + glVertex3f(cp->posc[1], 0.0, s); + glVertex3f(cp->posc[1], 0.0, s1); + glVertex3f(0.0, 0.0, s1); + glNormal3f(COS15, -SIN15, 0.0); + if(cp->cmat) glColor3fv(colors[c2]); + glTexCoord2f(cp->texq, cp->texp); glVertex3f(cp->posc[1], 0.0, s); + glTexCoord2f(cp->texq, 0.0); glVertex3f(cp->posc[4], cp->posc[5], s); + glTexCoord2f(1.0, 0.0); glVertex3f(cp->posc[4], cp->posc[5], s1); + glTexCoord2f(1.0, cp->texp); glVertex3f(cp->posc[1], 0.0, s1); + glNormal3f(SIN15, COS15, 0.0); + if(cp->cmat) glColor3fv(colors[c3]); + glTexCoord2f(cp->texq, cp->texp); glVertex3f(cp->posc[4], cp->posc[5], s); + glTexCoord2f(cp->texq, 0.0); glVertex3f(cp->posc[3], cp->posc[2], s); + glTexCoord2f(1.0, 0.0); glVertex3f(cp->posc[3], cp->posc[2], s1); + glTexCoord2f(1.0, cp->texp); glVertex3f(cp->posc[4], cp->posc[5], s1); + glNormal3f(-COS30, SIN30, 0.0); + if(cp->cmat) glColor3fv(cp->color_inner); + glTexCoord2f(TEX_GRAY); + glVertex3f(0.0, 0.0, s); + glVertex3f(cp->posc[3], cp->posc[2], s); + glVertex3f(cp->posc[3], cp->posc[2], s1); + glVertex3f(0.0, 0.0, s1); + glEnd(); + glRotatef(60.0, 0.0, 0.0, 1.0); +} + +static void draw_middle_piece(cube21_conf *cp, int s, cind_t cind, col_t colors) +{ + s *= 6; + glBegin(GL_QUADS); + if(cp->cmat) glColor3fv(cp->color_inner); + glNormal3f(0.0, 0.0, 1.0); + glTexCoord2f(TEX_GRAY); + glVertex3f(cp->posc[1], 0.0, cp->posc[0]); + glVertex3f(cp->posc[4], cp->posc[5], cp->posc[0]); + glVertex3f(-cp->posc[5], cp->posc[4], cp->posc[0]); + glVertex3f(-cp->posc[1], 0.0, cp->posc[0]); + glNormal3f(0.0, 0.0, -1.0); + glTexCoord2f(TEX_GRAY); + glVertex3f(cp->posc[1], 0.0, -cp->posc[0]); + glVertex3f(cp->posc[4], cp->posc[5], -cp->posc[0]); + glVertex3f(-cp->posc[5], cp->posc[4], -cp->posc[0]); + glVertex3f(-cp->posc[1], 0.0, -cp->posc[0]); + glNormal3f(0.0, -1.0, 0.0); + glTexCoord2f(TEX_GRAY); + glVertex3f(-cp->posc[1], 0.0, cp->posc[0]); + glVertex3f(cp->posc[1], 0.0, cp->posc[0]); + glVertex3f(cp->posc[1], 0.0, -cp->posc[0]); + glVertex3f(-cp->posc[1], 0.0, -cp->posc[0]); + glNormal3f(COS15, -SIN15, 0.0); + if(cp->cmat) glColor3fv(colors[cind[4][s]]); + glTexCoord2f(cp->texq, cp->texp); glVertex3f(cp->posc[1], 0.0, cp->posc[0]); + glTexCoord2f(1.0, cp->texp); glVertex3f(cp->posc[4], cp->posc[5], cp->posc[0]); + glTexCoord2f(1.0, cp->texq); glVertex3f(cp->posc[4], cp->posc[5], -cp->posc[0]); + glTexCoord2f(cp->texq, cp->texq); glVertex3f(cp->posc[1], 0.0, -cp->posc[0]); + glNormal3f(SIN15, COS15, 0.0); + if(cp->cmat) glColor3fv(colors[cind[4][s+1]]); + glTexCoord2f(0.0, 0.5); glVertex3f(cp->posc[4], cp->posc[5], cp->posc[0]); + glTexCoord2f(cp->texq, 0.5); glVertex3f(-cp->posc[5], cp->posc[4], cp->posc[0]); + glTexCoord2f(cp->texq, 0.75); glVertex3f(-cp->posc[5], cp->posc[4], -cp->posc[0]); + glTexCoord2f(0.0, 0.75); glVertex3f(cp->posc[4], cp->posc[5], -cp->posc[0]); + glNormal3f(-COS15, SIN15, 0.0); + if(cp->cmat) glColor3fv(colors[cind[4][s+4]]); + glTexCoord2f(0.0, 0.75); glVertex3f(-cp->posc[5], cp->posc[4], cp->posc[0]); + glTexCoord2f(1.0, 0.75); glVertex3f(-cp->posc[1], 0.0, cp->posc[0]); + glTexCoord2f(1.0, 1.0); glVertex3f(-cp->posc[1], 0.0, -cp->posc[0]); + glTexCoord2f(0.0, 1.0); glVertex3f(-cp->posc[5], cp->posc[4], -cp->posc[0]); + glEnd(); +} + +static void draw_middle(cube21_conf *cp) +{ + if(cp->hf[0]) glRotatef(180.0, 0.0, 1.0, 0.0); + draw_middle_piece(cp, 0, cp->cind, cp->colors); + if(cp->hf[0]) glRotatef(180.0, 0.0, 1.0, 0.0); + glRotatef(180.0, 0.0, 0.0, 1.0); + if(cp->hf[1]) glRotatef(180.0, 0.0, 1.0, 0.0); + draw_middle_piece(cp, 1, cp->cind, cp->colors); + if(cp->hf[1]) glRotatef(180.0, 0.0, 1.0, 0.0); +} + +static void draw_half_face(ModeInfo *mi, cube21_conf *cp, int s, int o) +{ + int i, s1 = 1-s*2, s2 = s*2; + for(i = o; ipieces[s][i+1]) + draw_narrow_piece(mi, cp, s1, cp->cind[s2][i], cp->cind[s2+1][i], cp->colors); + else { + draw_wide_piece(mi, cp, s1, cp->cind[s2][i], cp->cind[s2+1][i], cp->cind[s2+1][i+1], cp->colors); + i++; + } + } +} + +static void draw_top_face(ModeInfo *mi, cube21_conf *cp) +{ + draw_half_face(mi, cp, 0, 0); + draw_half_face(mi, cp, 0, 6); +} + +static void draw_bottom_face(ModeInfo *mi, cube21_conf *cp) +{ + draw_half_face(mi, cp, 1, 0); + draw_half_face(mi, cp, 1, 6); +} + +static Bool draw_main(ModeInfo *mi, cube21_conf *cp) +{ + GLfloat theta = cp->ramount<0?cp->t:-cp->t; + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + if(wander) + glTranslatef(3.0*cp->ratio*sin(13.0*cp->posarg), 3.0*sin(17.0*cp->posarg), zpos); + else + glTranslatef(0, 0, zpos); + glScalef(size, size, size); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glRotatef(cp->xrot, 1.0, 0.0, 0.0); + glRotatef(cp->yrot, 0.0, 1.0, 0.0); + + gltrackball_rotate (cp->trackball); + + if(cp->wire) glColor3f(0.7, 0.7, 0.7); + switch(cp->state) { + case CUBE21_PAUSE1: + case CUBE21_PAUSE2: + draw_top_face(mi, cp); + draw_bottom_face(mi, cp); + draw_middle(cp); + break; + case CUBE21_ROT_TOP: + glRotatef(theta, 0.0, 0.0, 1.0); + draw_top_face(mi, cp); + glRotatef(-theta, 0.0, 0.0, 1.0); + draw_bottom_face(mi, cp); + draw_middle(cp); + break; + case CUBE21_ROT_BOTTOM: + draw_top_face(mi, cp); + glRotatef(theta, 0.0, 0.0, 1.0); + draw_bottom_face(mi, cp); + glRotatef(-theta, 0.0, 0.0, 1.0); + draw_middle(cp); + break; + case CUBE21_HALF1: + glRotatef(theta, 0.0, 1.0, 0.0); + case CUBE21_HALF2: + draw_half_face(mi, cp, 0, 0); + glRotatef(-180.0, 0.0, 0.0, 1.0); + draw_half_face(mi, cp, 1, 0); + glRotatef(-180.0, 0.0, 0.0, 1.0); + if(cp->hf[0]) glRotatef(180.0, 0.0, 1.0, 0.0); + draw_middle_piece(cp, 0, cp->cind, cp->colors); + if(cp->hf[0]) glRotatef(180.0, 0.0, 1.0, 0.0); + if(cp->state==CUBE21_HALF1) + glRotatef(-theta, 0.0, 1.0, 0.0); + else + glRotatef(theta, 0.0, 1.0, 0.0); + glRotatef(180.0, 0.0, 0.0, 1.0); + draw_half_face(mi, cp, 0, 6); + glRotatef(-180.0, 0.0, 0.0, 1.0); + draw_half_face(mi, cp, 1, 6); + glRotatef(-180.0, 0.0, 0.0, 1.0); + if(cp->hf[1]) glRotatef(180.0, 0.0, 1.0, 0.0); + draw_middle_piece(cp, 1, cp->cind, cp->colors); + break; + } + if(spin) { + if((cp->xrot += spinspeed)>360.0) cp->xrot -= 360.0; + if((cp->yrot += spinspeed)>360.0) cp->yrot -= 360.0; + } + if(wander) + if((cp->posarg += wspeed/1000.0)>360.0) cp->posarg -= 360.0; + if((cp->t += tspeed)>cp->tmax) finish(cp); + return True; +} + +static void parse_colmode(void) +{ + if(!colmode_s) { + colmode = CUBE21_COLOR_WHITE; + return; + } + if(strstr(colmode_s, "se") || strstr(colmode_s, "sil")) colmode = CUBE21_COLOR_SILVER; + else if(strstr(colmode_s, "ce") || strstr(colmode_s, "cla")) colmode = CUBE21_COLOR_CLASSIC; + else if(strstr(colmode_s, "2") || strstr(colmode_s, "two")) colmode = CUBE21_COLOR_TWORND; + else if(strstr(colmode_s, "6") || strstr(colmode_s, "six")) colmode = CUBE21_COLOR_SIXRND; + else if(strstr(colmode_s, "1") || strstr(colmode_s, "ran") || strstr(colmode_s, "rnd")) colmode = CUBE21_COLOR_RANDOM; + else colmode = CUBE21_COLOR_WHITE; +} + +static void init_posc(cube21_conf *cp) +{ + cp->texp = (1.0-tan(Pi/12.0))/2.0; + cp->texq = 1.0-cp->texp; + /* Some significant non-trivial coordinates + * of the object. We need them exactly at GLfloat precision + * for the edges to line up perfectly. */ + cp->posc[0] = tan(Pi/12); /* 0.268 */ + cp->posc[1] = 1.0/cos(Pi/12); /* 1.035 */ + cp->posc[2] = cos(Pi/6)/cos(Pi/12); /* 0.897 */ + cp->posc[3] = sin(Pi/6)/cos(Pi/12); /* 0.518 */ + cp->posc[4] = sqrt(2)*cos(Pi/6); /* 1.225 */ + cp->posc[5] = sqrt(2)*sin(Pi/6); /* 0.707 = 1/sqrt(2) */ +} + +static void draw_horz_line(cube21_conf *cp, int x1, int x2, int y) +{ + int x, y0 = y, w; + if(y=TEX_HEIGHT) break; + w = y*y*255/BORDER2; + for(x=x1; x<=x2; x++) + if(cp->texture[y0+y][x]>w) cp->texture[y0+y][x] = w; + } +} + +static void draw_vert_line(cube21_conf *cp, int x, int y1, int y2) +{ + int x0 = x, y, w; + if(x=TEX_WIDTH) break; + w = x*x*255/BORDER2; + for(y=y1; y<=y2; y++) + if(cp->texture[y][x0+x]>w) cp->texture[y][x0+x] = w; + } +} + +static void draw_slanted_horz(cube21_conf *cp, int x1, int y1, int x2, int y2) +{ + int x, y, dx = x2-x1, dy = y2-y1, y0, w; + for(x=x1; x<=x2; x++) { + y0 = y1+(y2-y1)*(x-x1)/(x2-x1); + for(y=-1-BORDER; y<2+BORDER; y++) { + w = dx*(y0+y-y1)-dy*(x-x1); + w = w*w/(dx*dx+dy*dy); + w = w*255/BORDER2; + if(cp->texture[y0+y][x]>w) cp->texture[y0+y][x] = w; + } + } +} + +static void draw_slanted_vert(cube21_conf *cp, int x1, int y1, int x2, int y2) +{ + int x, y, dx = x2-x1, dy = y2-y1, x0, w; + for(y=y1; y<=y2; y++) { + x0 = x1+(x2-x1)*(y-y1)/(y2-y1); + for(x=-1-BORDER; x<2+BORDER; x++) { + w = dy*(x0+x-x1)-dx*(y-y1); + w = w*w/(dy*dy+dx*dx); + w = w*255/BORDER2; + if(cp->texture[y][x0+x]>w) cp->texture[y][x0+x] = w; + } + } +} + +static void make_texture(cube21_conf *cp) +{ + int x, y, x0, y0; + float grayp[2] = {TEX_GRAY}; + for(y=0; ytexture[y][x] = 255; + draw_horz_line(cp, 0, TEX_WIDTH-1, 0); + draw_horz_line(cp, cp->texq*TEX_WIDTH, TEX_WIDTH-1, cp->texp*TEX_HEIGHT); + draw_horz_line(cp, cp->texq*TEX_WIDTH, TEX_WIDTH-1, cp->texq*TEX_HEIGHT); + draw_horz_line(cp, 0, cp->texq*TEX_WIDTH, TEX_HEIGHT/2); + draw_horz_line(cp, 0, TEX_WIDTH-1, TEX_HEIGHT*3/4); + draw_horz_line(cp, 0, TEX_WIDTH-1, TEX_HEIGHT-1); + draw_vert_line(cp, 0, 0, TEX_HEIGHT-1); + draw_vert_line(cp, cp->texq*TEX_WIDTH, 0, TEX_HEIGHT*3/4); + draw_vert_line(cp, TEX_WIDTH-1, 0, TEX_HEIGHT-1); + draw_slanted_horz(cp, 0, cp->texp*TEX_HEIGHT, TEX_WIDTH/2, TEX_HEIGHT/2); + draw_slanted_vert(cp, cp->texp*TEX_WIDTH, 0, TEX_WIDTH/2, TEX_HEIGHT/2); + draw_slanted_vert(cp, cp->texq*TEX_WIDTH, 0, TEX_WIDTH/2, TEX_HEIGHT/2); + x0 = grayp[0]*TEX_WIDTH; + y0 = grayp[1]*TEX_HEIGHT; + for(y=-1; y<=1; y++) + for(x=-1; x<=1; x++) + cp->texture[y0+y][x0+x] = 100; +} + +/* It doesn't look good */ +/*#define MIPMAP*/ + +static void init_gl(ModeInfo *mi) +{ + cube21_conf *cp = &cube21[MI_SCREEN(mi)]; +#ifdef MIPMAP + int status; +#endif + parse_colmode(); + cp->wire = MI_IS_WIREFRAME(mi); + cp->cmat = !cp->wire && (colmode != CUBE21_COLOR_WHITE); + if(MI_IS_MONO(mi)) { + tex = False; + cp->cmat = False; + } + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + cp->wire = 0; +# endif + + if(cp->wire) { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + return; + } + if(!tex) + cp->color_inner[0] = cp->color_inner[1] = cp->color_inner[2] = 0.4; + else + cp->color_inner[0] = cp->color_inner[1] = cp->color_inner[2] = 1.0; + + glClearDepth(1.0); + glDrawBuffer(GL_BACK); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glShadeModel(GL_FLAT); + glDepthFunc(GL_LESS); + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); + glEnable(GL_DEPTH_TEST); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_LIGHTING); + glEnable(GL_NORMALIZE); + glEnable(GL_COLOR_MATERIAL); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material_ambient); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material_diffuse); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material_specular); + glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess); + if(!tex) return; + glEnable(GL_TEXTURE_2D); +#ifdef MIPMAP + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 1, TEX_WIDTH, TEX_HEIGHT, + GL_LUMINANCE, GL_UNSIGNED_BYTE, texture); + if (status) { + const char *s = gluErrorString(status); + fprintf (stderr, "%s: error mipmapping texture: %s\n", progname, (s?s:"(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); +#else + glTexImage2D(GL_TEXTURE_2D, 0, 1, TEX_WIDTH, TEX_HEIGHT, + 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, cp->texture); +#endif + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); +#ifdef MIPMAP + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); +#else + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +#endif +} + +static void init_cp(cube21_conf *cp) +{ + int i, j; + GLfloat ce_colors[6][3] = { + {1.0, 1.0, 1.0}, + {1.0, 0.5, 0.0}, + {0.0, 0.9, 0.0}, + {0.8, 0.0, 0.0}, + {0.1, 0.1, 1.0}, + {0.9, 0.9, 0.0} + }; + cp->state = CUBE21_STATE_BASIC; + cp->xrot = -65.0; cp->yrot = 185.0; + cp->posarg = (wspeed?random()%360:0.0); + cp->t = 0.0; cp->tmax = twait; + cp->hf[0] = cp->hf[1] = 0; + cp->fr[0] = cp->fr[1] = 0; + for(i=0;i<13;i++) + cp->pieces[0][i] = cp->pieces[1][i] = (i%3==1?0:1); + switch(colmode) { + case CUBE21_COLOR_RANDOM: + case CUBE21_COLOR_TWORND: + case CUBE21_COLOR_SIXRND: + for(i=0; i<6; i++) + for(j=0; j<3; j++) + cp->colors[i][j] = rndcolor(); + break; + case CUBE21_COLOR_SILVER: + cp->colors[0][0] = 1.0; + cp->colors[0][1] = 1.0; + cp->colors[0][2] = 1.0; + cp->colors[1][0] = rndcolor(); + cp->colors[1][1] = rndcolor(); + cp->colors[1][2] = rndcolor(); + break; + case CUBE21_COLOR_CLASSIC: + for(i=0; i<6; i++) + for(j=0; j<3; j++) + cp->colors[i][j] = 0.2+0.7*ce_colors[i][j]; + break; + } + switch(colmode) { + case CUBE21_COLOR_SILVER: + case CUBE21_COLOR_TWORND: + for(i=0; i<5; i++) + for(j=0; j<12; j++) + if(i==0) cp->cind[i][j] = 0; + else if(i==2) cp->cind[i][j] = 1; + else cp->cind[i][j] = ((j+5)%12)>=6?1:0; + break; + case CUBE21_COLOR_CLASSIC: + case CUBE21_COLOR_SIXRND: + for(i=0; i<5; i++) + for(j=0; j<12; j++) + if(i==0) cp->cind[i][j] = 4; + else if(i==2) cp->cind[i][j] = 5; + else cp->cind[i][j] = ((j+5)%12)/3; + break; + case CUBE21_COLOR_RANDOM: + for(i=0; i<5; i++) + for(j=0; j<12; j++) + cp->cind[i][j] = 0; + break; + } + if(rndstart) randomize(cp); +} + +/*************************************************************************/ + +ENTRYPOINT void reshape_cube21(ModeInfo *mi, int width, int height) +{ + cube21_conf *cp = &cube21[MI_SCREEN(mi)]; + int y = 0; + if(!height) height = 1; + cp->ratio = (GLfloat)width/(GLfloat)height; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + cp->ratio = width / (GLfloat) height; + cp->posarg = 0; + } + + glViewport(0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(30.0, cp->ratio, 1.0, 100.0); + glMatrixMode(GL_MODELVIEW); + glClear(GL_COLOR_BUFFER_BIT); +} + +ENTRYPOINT Bool +cube21_handle_event (ModeInfo *mi, XEvent *event) +{ + cube21_conf *cp = &cube21[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, cp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &cp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void init_cube21(ModeInfo *mi) +{ + cube21_conf *cp; + MI_INIT(mi, cube21); + cp = &cube21[MI_SCREEN(mi)]; + + cp->trackball = gltrackball_init (False); + + if(!cp->texp) { + init_posc(cp); + make_texture(cp); + } + +#ifdef HAVE_MOBILE + size *= 2; +#endif + + if ((cp->glx_context = init_GL(mi)) != NULL) { + init_gl(mi); + init_cp(cp); + reshape_cube21(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void draw_cube21(ModeInfo * mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + cube21_conf *cp; + if (!cube21) return; + cp = &cube21[MI_SCREEN(mi)]; + MI_IS_DRAWN(mi) = True; + if (!cp->glx_context) return; + mi->polygon_count = 0; + glXMakeCurrent(display, window, *(cp->glx_context)); + if (!draw_main(mi, cp)) { + MI_ABORT(mi); + return; + } + if (MI_IS_FPS(mi)) do_fps (mi); + glFlush(); + glXSwapBuffers(display, window); +} + +#ifndef STANDALONE +ENTRYPOINT void change_cube21(ModeInfo * mi) +{ + cube21_conf *cp = &cube21[MI_SCREEN(mi)]; + if (!cp->glx_context) return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context)); + init_gl(mi); +} +#endif /* !STANDALONE */ + + +XSCREENSAVER_MODULE ("Cube21", cube21) + +#endif diff --git a/hacks/glx/cube21.man b/hacks/glx/cube21.man new file mode 100644 index 0000000..d90c0fb --- /dev/null +++ b/hacks/glx/cube21.man @@ -0,0 +1,147 @@ +.TH XScreenSaver 1 "30-Aug-05" "X Version 11" +.SH NAME +cube21 - animates the Cube 21 puzzle +.SH SYNOPSIS +.B cube21 +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-install] +[\-delay \fImicroseconds\fP] +[\-texture] [\-no\-texture] +[\-mono] +[\-wireframe] +[\-spin] [\-no\-spin] +[\-wander] [\-no\-wander] +[\-randomize] [\-no\-randomize] +[\-spinspeed \fInumber\fP] +[\-rotspeed \fInumber\fP] +[\-wanderspeed \fInumber\fP] +[\-wait \fInumber\fP] +[\-cubesize \fInumber\fP] +[\-colormode \fIarg\fP] +[\-fps] +.SH DESCRIPTION +This program animates a puzzle known as Cube 21 or Square-1. +Its moves are chosen randomly. +.P +Cube 21 is a Rubik-like puzzle invented in 1992. Its specialities are that +it can change its shape and even the number of possible moves. It can have +more than 200 different shapes and the total number of configurations +(assuming colors) is several tens of billions. +.SH OPTIONS +.I cube21 +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +How long to pause between frames. Default is 20000, or 0.02 second. +.TP 8 +.B \-texture +Use texture maps. This is the default. +.TP 8 +.B \-no\-texture +Use solid colors. +.TP 8 +.B \-mono +Disable both texture maps and colors. +.TP 8 +.B \-wireframe +Only draw outlines. Outlines of all pieces, not only the whole object, are drawn. +.TP 8 +.B \-spin +Spin the whole object around X, Y and Z axes. This is the default. +.TP 8 +.B \-no\-spin +Do not spin, showing the same three faces all the time. +.TP 8 +.B \-wander +Move the object around the screen. This is the default. +.TP 8 +.B \-no\-wander +Keep the object centered on the screen. +.TP 8 +.B \-randomize +Shuffle the puzzle randomly at startup. This is the default. +.TP 8 +.B \-no\-randomize +Do not shuffle at startup, begin at the shape of cube. +.TP 8 +.B \-spinspeed \fInumber\fP +The relative speed of spinning. Default is 1.0. +.TP 8 +.B \-rotspeed \fInumber\fP +The relative speed of the moves. Default is 3.0. Setting to \(<= 0.0 +makes the object stay at one configuration. +.TP 8 +.B \-wanderspeed \fInumber\fP +The relative speed of wandering around the screen. Default is 1.0. +.TP 8 +.B \-wait \fInumber\fP +How long to stay at ending position after each move. The meaning of +the argument is again relative. Default is 40.0. +.TP 8 +.B \-cubesize \fInumber\fP +Size of the object. Value of 3.0 fills roughly all the screen (its height). Default is 0.7. +.TP 8 +.B \-colormode \fIargument\fP +How many and which colors should the object have. The colors are put on the piece +faces so that the puzzle is solvable. The inner faces are not influenced. +.RS +.TP 8 +.BR se " or " silver +Simulate the "Silver Edition" \- white and one random color. +.TP 8 +.BR 2 " or " two +Two random colors. +.TP 8 +.BR ce " or " classic +Simulate the "Classic Edition" \- white, yellow, orange, red, green and blue. +.TP 8 +.BR 6 " or " six +Six random colors. +.TP 8 +.BR 1 " or " random " or " rnd +One random color. +.TP 8 +Anything else +All faces white. +.RE +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2005 by Vaclav Potocek. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Vaclav (Vasek) Potocek , 30-Aug-05. diff --git a/hacks/glx/cubenetic.c b/hacks/glx/cubenetic.c new file mode 100644 index 0000000..cc9b0d6 --- /dev/null +++ b/hacks/glx/cubenetic.c @@ -0,0 +1,598 @@ +/* cubenetic, Copyright (c) 2002-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*count: 5 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_cube 0 +# define release_cube 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "XYZ" +#define DEF_WANDER "True" +#define DEF_TEXTURE "True" + +#define DEF_WAVES "3" +#define DEF_WAVE_SPEED "80" +#define DEF_WAVE_RADIUS "512" + +typedef struct { + int color; + GLfloat x, y, z; + GLfloat w, h, d; + int frame; + GLfloat dx, dy, dz; + GLfloat dw, dh, dd; +} cube; + +typedef struct { + int x, y; + double xth, yth; +} wave_src; + +typedef struct { + int nwaves; + int radius; + int speed; + wave_src *srcs; + int *heights; +} waves; + + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + GLuint cube_list; + GLuint texture_id; + int cube_polys; + int ncubes; + cube *cubes; + waves *waves; + + int texture_width, texture_height; + unsigned char *texture; + + int ncolors; + XColor *cube_colors; + XColor *texture_colors; + +} cube_configuration; + +static cube_configuration *ccs = NULL; + +static char *do_spin; +static Bool do_wander; +static Bool do_texture; + +static int wave_count; +static int wave_speed; +static int wave_radius; +static int texture_size = 256; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + {"-texture", ".texture", XrmoptionNoArg, "true" }, + {"+texture", ".texture", XrmoptionNoArg, "false" }, + {"-waves", ".waves", XrmoptionSepArg, 0 }, + {"-wave-speed", ".waveSpeed", XrmoptionSepArg, 0 }, + {"-wave-radius", ".waveRadius", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&wave_count, "waves", "Waves", DEF_WAVES, t_Int}, + {&wave_speed, "waveSpeed", "WaveSpeed", DEF_WAVE_SPEED, t_Int}, + {&wave_radius,"waveRadius","WaveRadius", DEF_WAVE_RADIUS,t_Int}, +}; + +ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static int +unit_cube (Bool wire) +{ + int polys = 0; + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* front */ + glNormal3f (0, 0, 1); + glTexCoord2f(1, 0); glVertex3f ( 0.5, -0.5, 0.5); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, 0.5, 0.5); + glTexCoord2f(1, 1); glVertex3f (-0.5, -0.5, 0.5); + polys++; + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* back */ + glNormal3f (0, 0, -1); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f ( 0.5, -0.5, -0.5); + polys++; + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* left */ + glNormal3f (-1, 0, 0); + glTexCoord2f(1, 1); glVertex3f (-0.5, 0.5, 0.5); + glTexCoord2f(1, 0); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, -0.5, 0.5); + polys++; + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* right */ + glNormal3f (1, 0, 0); + glTexCoord2f(1, 1); glVertex3f ( 0.5, -0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, -0.5, 0.5); + polys++; + glEnd(); + + if (wire) return polys; + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* top */ + glNormal3f (0, 1, 0); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f (-0.5, 0.5, 0.5); + polys++; + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* bottom */ + glNormal3f (0, -1, 0); + glTexCoord2f(1, 0); glVertex3f (-0.5, -0.5, 0.5); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, -0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f ( 0.5, -0.5, 0.5); + polys++; + glEnd(); + return polys; +} + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_cube (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective (30.0, 1/h, 1.0, 100.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + + +/* Waves. + Adapted from ../hacks/interference.c by Hannu Mallat. + */ + +static void +init_wave (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + waves *ww; + int i; + cc->waves = ww = (waves *) calloc (sizeof(*cc->waves), 1); + ww->nwaves = wave_count; + ww->radius = wave_radius; + ww->speed = wave_speed; + ww->heights = (int *) calloc (sizeof(*ww->heights), ww->radius); + ww->srcs = (wave_src *) calloc (sizeof(*ww->srcs), ww->nwaves); + + for (i = 0; i < ww->radius; i++) + { + float max = (cc->ncolors * (ww->radius - i) / (float) ww->radius); + ww->heights[i] = ((max + max * cos(i / 50.0)) / 2.0); + } + + for (i = 0; i < ww->nwaves; i++) + { + ww->srcs[i].xth = frand(2.0) * M_PI; + ww->srcs[i].yth = frand(2.0) * M_PI; + } +} + +static void +interference (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + waves *ww = cc->waves; + int x, y, i; + + /* Move the wave origins around + */ + for (i = 0; i < ww->nwaves; i++) + { + ww->srcs[i].xth += (ww->speed / 1000.0); + if (ww->srcs[i].xth > 2*M_PI) + ww->srcs[i].xth -= 2*M_PI; + ww->srcs[i].yth += (ww->speed / 1000.0); + if (ww->srcs[i].yth > 2*M_PI) + ww->srcs[i].yth -= 2*M_PI; + + ww->srcs[i].x = (cc->texture_width/2 + + (cos (ww->srcs[i].xth) * + cc->texture_width / 2)); + ww->srcs[i].y = (cc->texture_height/2 + + (cos (ww->srcs[i].yth) * + cc->texture_height / 2)); + } + + /* Compute the effect of the waves on each pixel, + and generate the output map. + */ + for (y = 0; y < cc->texture_height; y++) + for (x = 0; x < cc->texture_width; x++) + { + int result = 0; + unsigned char *o; + for (i = 0; i < ww->nwaves; i++) + { + int dx = x - ww->srcs[i].x; + int dy = y - ww->srcs[i].y; + int dist = sqrt (dx*dx + dy*dy); + result += (dist > ww->radius ? 0 : ww->heights[dist]); + } + result %= cc->ncolors; + + o = cc->texture + (((y * cc->texture_width) + x) << 2); + o[0] = (cc->texture_colors[result].red >> 8); + o[1] = (cc->texture_colors[result].green >> 8); + o[2] = (cc->texture_colors[result].blue >> 8); + /* o[3] = 0xFF; */ + } +} + + +/* Textures + */ + +static void +init_texture (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + int i; + + glEnable(GL_TEXTURE_2D); + + clear_gl_error(); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glGenTextures (1, &cc->texture_id); + glBindTexture (GL_TEXTURE_2D, cc->texture_id); + check_gl_error("texture binding"); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + check_gl_error("texture initialization"); + + cc->texture_width = texture_size; + cc->texture_height = texture_size; + + i = texture_size * texture_size * 4; + cc->texture = (unsigned char *) malloc (i); + memset (cc->texture, 0xFF, i); +} + + +static void +shuffle_texture (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + interference (mi); + clear_gl_error(); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + cc->texture_width, cc->texture_height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, + cc->texture); + check_gl_error("texture"); +} + + +static void +reset_colors (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + double H[3], S[3], V[3]; + int shift = 60; + H[0] = frand(360.0); + H[1] = ((H[0] + shift) < 360) ? (H[0]+shift) : (H[0] + shift - 360); + H[2] = ((H[1] + shift) < 360) ? (H[1]+shift) : (H[1] + shift - 360); + S[0] = S[1] = S[2] = 1.0; + V[0] = V[1] = V[2] = 1.0; + make_color_loop(0, 0, 0, + H[0], S[0], V[0], + H[1], S[1], V[1], + H[2], S[2], V[2], + cc->texture_colors, &cc->ncolors, + False, False); + + make_smooth_colormap (0, 0, 0, + cc->cube_colors, &cc->ncolors, + False, 0, False); +} + + +ENTRYPOINT Bool +cube_handle_event (ModeInfo *mi, XEvent *event) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, cc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &cc->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + reset_colors (mi); + return True; + } + + return False; +} + + +ENTRYPOINT void +init_cube (ModeInfo *mi) +{ + int i; + cube_configuration *cc; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, ccs); + + cc = &ccs[MI_SCREEN(mi)]; + + if ((cc->glx_context = init_GL(mi)) != NULL) { + reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + if (!wire) + { + static const GLfloat pos[4] = {1.0, 0.5, 1.0, 0.0}; + static const GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + static const GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + } + + + { + Bool spinx=False, spiny=False, spinz=False; + double spin_speed = 1.0; + double wander_speed = 0.05; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') spinx = True; + else if (*s == 'y' || *s == 'Y') spiny = True; + else if (*s == 'z' || *s == 'Z') spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + cc->rot = make_rotator (spinx ? spin_speed : 0, + spiny ? spin_speed : 0, + spinz ? spin_speed : 0, + 1.0, + do_wander ? wander_speed : 0, + (spinx && spiny && spinz)); + cc->trackball = gltrackball_init (True); + } + + cc->ncolors = 256; + cc->texture_colors = (XColor *) calloc(cc->ncolors, sizeof(XColor)); + cc->cube_colors = (XColor *) calloc(cc->ncolors, sizeof(XColor)); + + reset_colors (mi); + + cc->ncubes = MI_COUNT (mi); + cc->cubes = (cube *) calloc (sizeof(cube), cc->ncubes); + for (i = 0; i < cc->ncubes; i++) + { + cube *cube = &cc->cubes[i]; + cube->color = random() % cc->ncolors; + cube->w = 1.0; + cube->h = 1.0; + cube->d = 1.0; + cube->dx = frand(0.1); + cube->dy = frand(0.1); + cube->dz = frand(0.1); + cube->dw = frand(0.1); + cube->dh = frand(0.1); + cube->dd = frand(0.1); + } + + if (wire) + do_texture = False; + + if (do_texture) + { + init_texture (mi); + init_wave (mi); + shuffle_texture (mi); + } + + cc->cube_list = glGenLists (1); + glNewList (cc->cube_list, GL_COMPILE); + cc->cube_polys = unit_cube (wire); + glEndList (); +} + + +static void +shuffle_cubes (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + int i; + for (i = 0; i < cc->ncubes; i++) + { +# define SINOID(SCALE,FRAME,SIZE) \ + ((((1 + sin((FRAME * (SCALE)) / 2 * M_PI)) / 2.0) * (SIZE)) - (SIZE)/2) + + cube *cube = &cc->cubes[i]; + cube->x = SINOID(cube->dx, cube->frame, 0.5); + cube->y = SINOID(cube->dy, cube->frame, 0.5); + cube->z = SINOID(cube->dz, cube->frame, 0.5); + cube->w = SINOID(cube->dw, cube->frame, 0.9) + 1.0; + cube->h = SINOID(cube->dh, cube->frame, 0.9) + 1.0; + cube->d = SINOID(cube->dd, cube->frame, 0.9) + 1.0; + cube->frame++; +# undef SINOID + } +} + + +ENTRYPOINT void +draw_cube (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!cc->glx_context) + return; + + mi->polygon_count = 0; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context)); + + glShadeModel(GL_FLAT); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z; + get_position (cc->rot, &x, &y, &z, !cc->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 6, + (z - 0.5) * 15); + + gltrackball_rotate (cc->trackball); + + get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + glScalef (2.5, 2.5, 2.5); + + for (i = 0; i < cc->ncubes; i++) + { + cube *cube = &cc->cubes[i]; + GLfloat color[4]; + color[0] = cc->cube_colors[cube->color].red / 65536.0; + color[1] = cc->cube_colors[cube->color].green / 65536.0; + color[2] = cc->cube_colors[cube->color].blue / 65536.0; + color[3] = 1.0; + cube->color++; + if (cube->color >= cc->ncolors) cube->color = 0; + + glPushMatrix (); + glTranslatef (cube->x, cube->y, cube->z); + glScalef (cube->w, cube->h, cube->d); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glCallList (cc->cube_list); + mi->polygon_count += cc->cube_polys; + glPopMatrix (); + } + + shuffle_cubes (mi); + if (do_texture) + shuffle_texture (mi); + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("Cubenetic", cubenetic, cube) + +#endif /* USE_GL */ diff --git a/hacks/glx/cubenetic.man b/hacks/glx/cubenetic.man new file mode 100644 index 0000000..e11d479 --- /dev/null +++ b/hacks/glx/cubenetic.man @@ -0,0 +1,89 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +cubenetic - cubist 3D undulating blob. +.SH SYNOPSIS +.B cubenetic +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-count \fInumber\fP] +[\-no-wander] +[\-no-spin] +[\-spin \fI[XYZ]\fP] +[\-wireframe] +[\-no-texture] +[\-wave-speed \fInumber\fP] +[\-wave-radius \fInumber\fP] +[\-waves \fInumber\fP] +[\-fps] +.SH DESCRIPTION +Draws a pulsating set of overlapping boxes with ever-chaning blobby +patterns undulating across their surfaces. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-count \fInumber\fP +How many boxes make up the object. Default: 5. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin \fI[XYZ]\fP +Around which axes should the object spin? +.TP 8 +.B \-no-spin +Don't spin. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-texture | \-no-texture +Display Solid Colors. +.TP 8 +.B \-wave-speed \fInumber\fP +Surface Pattern Speed. 5 - 150. Default: 80. +.TP 8 +.B \-wave-radius \fInumber\fP +Surface Pattern Overlap. 5 - 600. Default: 512. +.TP 8 +.B \-waves \fInumber\fP +Surface Pattern Complexity. 1 - 20. Default: 3. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/cubestack.c b/hacks/glx/cubestack.c new file mode 100644 index 0000000..70883f6 --- /dev/null +++ b/hacks/glx/cubestack.c @@ -0,0 +1,462 @@ +/* cubestack, Copyright (c) 2016 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_cube 0 +# define release_cube 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_THICKNESS "0.13" +#define DEF_OPACITY "0.7" + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + GLfloat state; + GLfloat r; + int length; + int ncolors; + XColor *colors; + int ccolor; +} cube_configuration; + +static cube_configuration *bps = NULL; + +static GLfloat speed; +static GLfloat thickness; +static GLfloat opacity; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-opacity", ".opacity", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float}, + {&opacity, "opacity", "Opacity", DEF_OPACITY, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static int +draw_strut (ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + GLfloat h; + + glPushMatrix(); + glFrontFace (GL_CCW); + glNormal3f (0, 0, -1); + glTranslatef (-0.5, -0.5, 0); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN); + glVertex3f (0, 0, 0); + glVertex3f (1, 0, 0); + glVertex3f (1 - thickness, thickness, 0); + glVertex3f (thickness, thickness, 0); + glEnd(); + polys += 2; + + h = 0.5 - thickness; + if (h >= 0.25) + { + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN); + glVertex3f (0.5, 0.5, 0); + glVertex3f (0.5 - thickness/2, 0.5 - thickness/2, 0); + glVertex3f (0.5 - thickness/2, 0.5 - h/2, 0); + glVertex3f (0.5 + thickness/2, 0.5 - h/2, 0); + glVertex3f (0.5 + thickness/2, 0.5 - thickness/2, 0); + glEnd(); + polys += 3; + } + + glPopMatrix(); + + return polys; +} + + +static int +draw_face (ModeInfo *mi) +{ + int i; + int polys = 0; + for (i = 0; i < 4; i++) + { + polys += draw_strut (mi); + glRotatef (90, 0, 0, 1); + } + return polys; +} + + +static GLfloat +ease_fn (GLfloat r) +{ + return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */ +} + + +static GLfloat +ease_ratio (GLfloat r) +{ + GLfloat ease = 0.5; + if (r <= 0) return 0; + else if (r >= 1) return 1; + else if (r <= ease) return ease * ease_fn (r / ease); + else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease); + else return r; +} + + +static int +draw_cube_1 (ModeInfo *mi, GLfloat state, GLfloat color[4], Bool bottom_p) +{ + int polys = 0; + int istate = state; + GLfloat r = state - istate; + GLfloat a = color[3]; + + r = ease_ratio (r); + +# define COLORIZE(R) \ + color[3] = a * R; \ + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); \ + glColor4fv (color) + + if (bottom_p) + { + GLfloat r2 = (state < 0 ? 1 + state : 1); + COLORIZE(r2); + polys += draw_face (mi); /* Bottom */ + } + + if (state >= 0) /* Left */ + { + GLfloat r2 = (istate == 0 ? r : 1); + COLORIZE(r2); + glPushMatrix(); + glTranslatef (-0.5, 0.5, 0); + glRotatef (-r2 * 90, 0, 1, 0); + glTranslatef (0.5, -0.5, 0); + polys += draw_face (mi); + glPopMatrix(); + } + + if (state >= 1) /* Back */ + { + GLfloat r2 = (istate == 1 ? r : 1); + COLORIZE(r2); + glPushMatrix(); + glTranslatef (-0.5, 0.5, 0); + glRotatef ( 90, 0, 1, 0); + glRotatef (-90, 0, 0, 1); + glRotatef (-r2 * 90, 0, 1, 0); + glTranslatef (0.5, -0.5, 0); + polys += draw_face (mi); + glPopMatrix(); + } + + if (state >= 2) /* Right */ + { + GLfloat r2 = (istate == 2 ? r : 1); + COLORIZE(r2); + glPushMatrix(); + glTranslatef (0.5, 0.5, 0); + glRotatef ( 90, 0, 1, 0); + glRotatef (-90, 0, 0, 1); + glRotatef (-90, 0, 1, 0); + glRotatef (-r2 * 90, 0, 1, 0); + glTranslatef (-0.5, -0.5, 0); + polys += draw_face (mi); + glPopMatrix(); + } + + if (state >= 3) /* Front */ + { + GLfloat r2 = (istate == 3 ? r : 1); + COLORIZE(r2); + glPushMatrix(); + glTranslatef (0.5, 0.5, 0); + glRotatef ( 90, 0, 1, 0); + glRotatef (-90, 0, 0, 1); + glRotatef (-180, 0, 1, 0); + glTranslatef (-1, 0, 0); + glRotatef (-r2 * 90, 0, 1, 0); + glTranslatef (0.5, -0.5, 0); + polys += draw_face (mi); + glPopMatrix(); + } + + if (state >= 4) /* Top */ + { + GLfloat r2 = (istate == 4 ? r : 1); + COLORIZE(r2); + glPushMatrix(); + glTranslatef (0, 0, 1); + glRotatef (-90, 0, 0, 1); + glTranslatef (0.5, 0.5, 0); + glRotatef (-90, 0, 1, 0); + glRotatef (r2 * 90, 0, 1, 0); + glTranslatef (-0.5, -0.5, 0); + polys += draw_face (mi); + glPopMatrix(); + } + + return polys; +} + + +static int +draw_cubes (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + int polys = 0; + GLfloat z = bp->state / 6; + int i; + GLfloat c[4]; + int c0 = bp->ccolor; + GLfloat alpha = opacity; + + glPushMatrix(); + glTranslatef (0, 0, -1.5 - z); + + glTranslatef (0, 0, -bp->length); + for (i = bp->length-1; i >= 0; i--) + { + int c1 = c0 - i - 1; + if (c1 < 0) c1 += bp->ncolors; + c[0] = bp->colors[c1].red / 65536.0; + c[1] = bp->colors[c1].green / 65536.0; + c[2] = bp->colors[c1].blue / 65536.0; + c[3] = alpha; + + glTranslatef (0, 0, 1); + polys += draw_cube_1 (mi, 5, c, i == bp->length - 1); + } + + c[0] = bp->colors[c0].red / 65536.0; + c[1] = bp->colors[c0].green / 65536.0; + c[2] = bp->colors[c0].blue / 65536.0; + c[3] = alpha; + glTranslatef (0, 0, 1); + polys += draw_cube_1 (mi, bp->state, c, bp->length == 0); + + glPopMatrix(); + + return polys; +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_cube (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +cube_handle_event (ModeInfo *mi, XEvent *event) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') + { + bp->ncolors = 32; + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + return True; + } + } + + + return False; +} + + +ENTRYPOINT void +init_cube (ModeInfo *mi) +{ + cube_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + glDisable (GL_LIGHTING); + glEnable(GL_DEPTH_TEST); + glShadeModel (GL_SMOOTH); + glEnable (GL_NORMALIZE); + glDisable (GL_CULL_FACE); + glEnable (GL_BLEND); + glDisable (GL_DEPTH_TEST); + glBlendFunc (GL_SRC_ALPHA, GL_ONE); + } + + { + double wander_speed = 0.005; + bp->rot = make_rotator (0, 0, 0, 0, + do_wander ? wander_speed : 0, + False); + bp->trackball = gltrackball_init (True); + } + + if (thickness > 0.5) + thickness = 0.5; + if (thickness < 0.001) + thickness = 0.001; + + bp->ncolors = 32; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + bp->state = -1; +} + + +ENTRYPOINT void +draw_cube (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 4, + (y - 0.5) * 4, + (z - 0.5) * 2); + + gltrackball_rotate (bp->trackball); + } + + mi->polygon_count = 0; + + glScalef (6, 6, 6); + glRotatef (-45, 1, 0, 0); + glRotatef (20, 0, 0, 1); + glRotatef (bp->r, 0, 0, 1); + + mi->polygon_count = draw_cubes (mi); + glPopMatrix (); + + if (!bp->button_down_p) + { + int max = 6; + bp->state += speed * 0.015; + bp->r += speed * 0.05; + while (bp->r > 360) + bp->r -= 360; + while (bp->state > max) + { + bp->state -= max; + bp->length++; + bp->ccolor++; + if (bp->ccolor > bp->ncolors) + bp->ccolor = 0; + } + + if (bp->length > 20) + bp->length = 20; + } + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("CubeStack", cubestack, cube) + +#endif /* USE_GL */ diff --git a/hacks/glx/cubestack.man b/hacks/glx/cubestack.man new file mode 100644 index 0000000..511d116 --- /dev/null +++ b/hacks/glx/cubestack.man @@ -0,0 +1,72 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +cubestack - An endless stack of unfolding, translucent cubes. +.SH SYNOPSIS +.B cubestack +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-thickness \fInumber\fP] +[\-opacity \fInumber\fP] +[\-no-wander] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +An endless stack of unfolding, translucent cubes. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-thickness \fInumber\fP +Thickness of the face edges. 0.0 - 0.5. Default: 0.13. +.TP 8 +.B \-opacity \fInumber\fP +Opacity of the cubes. 0.01 - 1.0. Default: 0.7. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/cubestorm.c b/hacks/glx/cubestorm.c new file mode 100644 index 0000000..cf973c9 --- /dev/null +++ b/hacks/glx/cubestorm.c @@ -0,0 +1,469 @@ +/* cubestorm, Copyright (c) 2003-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: " DEF_COUNT "\n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + + +# define free_cube 0 +# define release_cube 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_THICKNESS "0.06" +#define DEF_COUNT "4" +#define DEF_LENGTH "200" + +typedef struct { + GLfloat px, py, pz; + GLfloat rx, ry, rz; + int ccolor; +} histcube; + +typedef struct { + rotator *rot; + int ccolor; +} subcube; + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + Bool clear_p; + + GLuint cube_list; + + int ncolors; + XColor *colors; + + subcube *subcubes; + + int hist_size, hist_count; + histcube *hist; + +} cube_configuration; + +static cube_configuration *bps = NULL; + +static Bool do_spin; +static Bool do_wander; +static GLfloat speed; +static GLfloat thickness; +static int max_length; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-db", ".doubleBuffer", XrmoptionNoArg, "True"}, + { "+db", ".doubleBuffer", XrmoptionNoArg, "False"}, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-length", ".length", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float}, + {&max_length, "length", "Length", DEF_LENGTH, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static void +draw_face (ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + + int i; + GLfloat t = thickness / 2; + GLfloat a = -0.5; + GLfloat b = 0.5; + + if (t <= 0) t = 0.001; + else if (t > 0.5) t = 0.5; + + glPushMatrix(); + glFrontFace(GL_CW); + + for (i = 0; i < 4; i++) + { + glNormal3f (0, 0, -1); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (a, a, a); + glVertex3f (b, a, a); + glVertex3f (b-t, a+t, a); + glVertex3f (a+t, a+t, a); + glEnd(); + + glNormal3f (0, 1, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (b-t, a+t, a); + glVertex3f (b-t, a+t, a+t); + glVertex3f (a+t, a+t, a+t); + glVertex3f (a+t, a+t, a); + glEnd(); + + glRotatef(90, 0, 0, 1); + } + glPopMatrix(); +} + +static void +draw_faces (ModeInfo *mi) +{ + glPushMatrix(); + draw_face (mi); + glRotatef (90, 0, 1, 0); draw_face (mi); + glRotatef (90, 0, 1, 0); draw_face (mi); + glRotatef (90, 0, 1, 0); draw_face (mi); + glRotatef (90, 1, 0, 0); draw_face (mi); + glRotatef (180, 1, 0, 0); draw_face (mi); + glPopMatrix(); +} + + +static void +new_cube_colors (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + bp->ncolors = 128; + if (bp->colors) free (bp->colors); + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + for (i = 0; i < MI_COUNT(mi); i++) + bp->subcubes[i].ccolor = random() % bp->ncolors; +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_cube (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 45.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + +ENTRYPOINT Bool +cube_handle_event (ModeInfo *mi, XEvent *event) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ') + { + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + goto DEF; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + DEF: + new_cube_colors (mi); + return True; + } + return False; +} + + +ENTRYPOINT void +init_cube (ModeInfo *mi) +{ + cube_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + if (MI_COUNT(mi) <= 0) MI_COUNT(mi) = 1; + + bp->trackball = gltrackball_init (True); + bp->subcubes = (subcube *) calloc (MI_COUNT(mi), sizeof(subcube)); + + bp->hist_count = 0; + bp->hist_size = 100; + bp->hist = (histcube *) malloc (bp->hist_size * sizeof(*bp->hist)); + + for (i = 0; i < MI_COUNT(mi); i++) + { + double wander_speed, spin_speed, spin_accel; + + if (i == 0) + { + wander_speed = 0.05 * speed; + spin_speed = 10.0 * speed; + spin_accel = 4.0 * speed; + } + else + { + wander_speed = 0; + spin_speed = 4.0 * speed; + spin_accel = 2.0 * speed; + } + + bp->subcubes[i].rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + } + + bp->colors = 0; + new_cube_colors (mi); + + reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + bp->cube_list = glGenLists (1); + glNewList (bp->cube_list, GL_COMPILE); + draw_faces (mi); + glEndList (); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + +/* Originally, this program achieved the "accumulating cubes" effect by + simply not clearing the depth or color buffers between frames. That + doesn't work on modern systems, particularly mobile: you can no longer + rely on your buffers being unmolested once you have yielded. So now we + must save and re-render every polygon. Noof has the same problem and + solves it by taking a screenshot of the frame buffer into a texture, but + cubestorm needs to restore the depth buffer as well as the color buffer. + */ +static void +push_hist (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + double px, py, pz; + double rx = 0, ry = 0, rz = 0; + int i; + + if (bp->hist_count > max_length && + bp->hist_count > MI_COUNT(mi) && + !bp->button_down_p) + { + /* Drop history off of the end. */ + memmove (bp->hist, + bp->hist + MI_COUNT(mi), + (bp->hist_count - MI_COUNT(mi)) * sizeof(*bp->hist)); + bp->hist_count -= MI_COUNT(mi); + } + + if (bp->hist_count + MI_COUNT(mi) >= bp->hist_size) + { + bp->hist_size = bp->hist_count + MI_COUNT(mi) + 100; + bp->hist = (histcube *) + realloc (bp->hist, bp->hist_size * sizeof(*bp->hist)); + } + + get_position (bp->subcubes[0].rot, &px, &py, &pz, !bp->button_down_p); + + for (i = 0; i < MI_COUNT(mi); i++) + { + subcube *sc = &bp->subcubes[i]; + histcube *hc = &bp->hist[bp->hist_count]; + double rx2, ry2, rz2; + + get_rotation (sc->rot, &rx2, &ry2, &rz2, !bp->button_down_p); + + if (i == 0) /* N+1 cubes rotate relative to cube 0 */ + rx = rx2, ry = ry2, rz = rz2; + else + rx2 += rx, ry2 += ry, rz2 += rz; + + hc->px = px; + hc->py = py; + hc->pz = pz; + hc->rx = rx2; + hc->ry = ry2; + hc->rz = rz2; + hc->ccolor = sc->ccolor; + sc->ccolor++; + if (sc->ccolor >= bp->ncolors) + sc->ccolor = 0; + bp->hist_count++; + } +} + + +ENTRYPOINT void +draw_cube (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (bp->clear_p) /* we're in "no vapor trails" mode */ + { + bp->hist_count = 0; + if (! (random() % (int) (25 / speed))) + bp->clear_p = False; + } + else + { + if (! (random() % (int) (200 / speed))) + { + bp->clear_p = True; + new_cube_colors (mi); + } + } + + push_hist (mi); + mi->polygon_count = 0; + for (i = 0; i < bp->hist_count; i++) + { + GLfloat bcolor[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat bshiny = 128.0; + + histcube *hc = &bp->hist[i]; + + glPushMatrix(); + glScalef (1.1, 1.1, 1.1); + + glTranslatef((hc->px - 0.5) * 15, + (hc->py - 0.5) * 15, + (hc->pz - 0.5) * 30); + gltrackball_rotate (bp->trackball); + + glScalef (4.0, 4.0, 4.0); + + glRotatef (hc->rx * 360, 1.0, 0.0, 0.0); + glRotatef (hc->ry * 360, 0.0, 1.0, 0.0); + glRotatef (hc->rz * 360, 0.0, 0.0, 1.0); + + bcolor[0] = bp->colors[hc->ccolor].red / 65536.0; + bcolor[1] = bp->colors[hc->ccolor].green / 65536.0; + bcolor[2] = bp->colors[hc->ccolor].blue / 65536.0; + + if (wire) + glColor3f (bcolor[0], bcolor[1], bcolor[2]); + else + { + glMaterialfv (GL_FRONT, GL_SPECULAR, bspec); + glMateriali (GL_FRONT, GL_SHININESS, bshiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor); + } + + glCallList (bp->cube_list); + mi->polygon_count += (4 * 2 * 6); + + glPopMatrix(); + } + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("CubeStorm", cubestorm, cube) + +#endif /* USE_GL */ diff --git a/hacks/glx/cubestorm.man b/hacks/glx/cubestorm.man new file mode 100644 index 0000000..9d912fd --- /dev/null +++ b/hacks/glx/cubestorm.man @@ -0,0 +1,77 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +cubestorm - a series of 3D boxes that fill space +.SH SYNOPSIS +.B cubestorm +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fIfloat\fP] +[\-count \fIint\fP] +[\-thickness \fIfloat\fP] +[\-no-wander] +[\-no-spin] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Draws a series of rotating 3D boxes that intersect each other and +eventually fill space. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Larger numbers mean run faster. Default: 1.0. +.TP 8 +.B \-count \fInumber\fP +Number of cubes. Default 4. +.TP 8 +.B \-thickness \fIfloat\fP +How thick the struts making up the cubes should be (0.0-1.0). Default 0.06. +.TP 8 +.B \-wander | \-no-wander +Whether the cubes should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the cubes should spin. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/cubetwist.c b/hacks/glx/cubetwist.c new file mode 100644 index 0000000..61af287 --- /dev/null +++ b/hacks/glx/cubetwist.c @@ -0,0 +1,595 @@ +/* cubetwist, Copyright (c) 2016-2017 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_cube 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_FLAT "True" +#define DEF_THICKNESS "0.0" +#define DEF_DISPLACEMENT "0.0" + +typedef struct cube cube; +struct cube { + GLfloat size, thickness; + XYZ pos, rot; + GLfloat color[4]; + cube *next; +}; + +typedef struct oscillator oscillator; +struct oscillator { + double ratio, from, to, speed, *var; + int remaining; + oscillator *next; +}; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + cube *cubes; + oscillator *oscillators; +} cube_configuration; + +static cube_configuration *bps = NULL; + +static Bool do_flat; +static Bool do_spin; +static GLfloat speed; +static GLfloat thickness; +static GLfloat displacement; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-flat", ".flat", XrmoptionNoArg, "True" }, + { "+flat", ".flat", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-displacement", ".displacement", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_flat, "flat", "flat", DEF_FLAT, t_Bool}, + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float}, + {&displacement, "displacement", "Displacement", DEF_DISPLACEMENT, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static int +draw_strut (ModeInfo *mi, cube *c) +{ + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + + glPushMatrix(); + glFrontFace (GL_CW); + glNormal3f (0, 0, -1); + glTranslatef (-c->size/2, -c->size/2, -c->size/2); + + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN); + glVertex3f (0, 0, 0); + glVertex3f (c->size, 0, 0); + glVertex3f (c->size - c->thickness, c->thickness, 0); + glVertex3f (c->thickness, c->thickness, 0); + glEnd(); + polys += 2; + + glNormal3f (0, 1, 0); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN); + glVertex3f (c->thickness, c->thickness, 0); + glVertex3f (c->size - c->thickness, c->thickness, 0); + glVertex3f (c->size - c->thickness, c->thickness, c->thickness); + glVertex3f (c->thickness, c->thickness, c->thickness); + glEnd(); + polys += 2; + glPopMatrix(); + + return polys; +} + + +static int +draw_cubes (ModeInfo *mi, cube *c) +{ + int polys = 0; + int i, j; + + glColor4fv (c->color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, c->color); + + glPushMatrix(); + for (j = 0; j < 6; j++) + { + for (i = 0; i < 4; i++) + { + polys += draw_strut (mi, c); + glRotatef (90, 0, 0, 1); + } + if (j == 3) + glRotatef (90, 0, 0, 1); + if (j < 4) + glRotatef (90, 0, 1, 0); + else + glRotatef (180, 1, 0, 0); + } + glPopMatrix(); + + if (c->next) + { + /* This leaves rotations on the prevailing matrix stack, but since + this is a tail-call, that's fine. Don't blow the matrix stack. */ + glRotatef (c->rot.x, 1, 0, 0); + glRotatef (c->rot.y, 0, 1, 0); + glRotatef (c->rot.z, 0, 0, 1); + glTranslatef (c->pos.x, c->pos.y, c->pos.z); + c->next->pos = c->pos; + c->next->rot = c->rot; + polys += draw_cubes (mi, c->next); + } + + check_gl_error("cubetwist"); + return polys; +} + + +static void +make_cubes (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat step = 2 * (thickness + displacement); + GLfloat size = 1.0; + cube *tail = 0; + GLfloat cc[4], cstep; + int depth = 0; + cube *c; + + cc[0] = 0.3 + frand(0.7); + cc[1] = 0.3 + frand(0.7); + cc[2] = 0.3 + frand(0.7); + cc[3] = 1; + + if (bp->cubes) abort(); + while (1) + { + cube *c = (cube *) calloc (1, sizeof (*c)); + c->size = size; + c->thickness = thickness; + if (tail) + tail->next = c; + else + bp->cubes = c; + tail = c; + + depth++; + size -= step; + if (size <= step) + break; + } + + cstep = 0.8 / depth; + for (c = bp->cubes; c; c = c->next) + { + memcpy (c->color, cc, sizeof(cc)); + cc[0] -= cstep; + cc[1] -= cstep; + cc[2] -= cstep; + } +} + + +static GLfloat +ease_fn (GLfloat r) +{ + return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */ +} + + +static GLfloat +ease_ratio (GLfloat r) +{ + GLfloat ease = 0.5; + if (r <= 0) return 0; + else if (r >= 1) return 1; + else if (r <= ease) return ease * ease_fn (r / ease); + else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease); + else return r; +} + + +static void +tick_oscillators (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + oscillator *prev = 0; + oscillator *a = bp->oscillators; + GLfloat tick = 0.1 / speed; + + while (a) + { + oscillator *next = a->next; + a->ratio += tick * a->speed; + if (a->ratio > 1) + a->ratio = 1; + + *a->var = a->from + (a->to - a->from) * ease_ratio (a->ratio); + + if (a->ratio < 1) /* mid cycle */ + prev = a; + else if (--a->remaining <= 0) /* ended, and expired */ + { + if (prev) + prev->next = next; + else + bp->oscillators = next; + free (a); + } + else /* keep going the other way */ + { + GLfloat swap = a->from; + a->from = a->to; + a->to = swap; + a->ratio = 0; + prev = a; + } + + a = next; + } +} + + +static void +add_oscillator (ModeInfo *mi, double *var, GLfloat speed, GLfloat to, + int repeat) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + oscillator *a; + + /* If an oscillator is already running on this variable, don't + add another. */ + for (a = bp->oscillators; a && a->next; a = a->next) + if (a->var == var) + return; + + a = (oscillator *) calloc (1, sizeof (*a)); + if (repeat <= 0) abort(); + a->ratio = 0; + a->from = *var; + a->to = to; + a->speed = speed; + a->var = var; + a->remaining = repeat; + a->next = bp->oscillators; + bp->oscillators = a; +# if 0 + fprintf (stderr, "%s: %3d %6.2f -> %6.2f %s\n", + progname, repeat, *var, to, + (var == &bp->midpoint.z ? "z" : + var == &bp->tilt ? "tilt" : + var == &bp->axial_radius ? "r" : + var == &bp->speed ? "speed" : "?")); +# endif +} + + +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +static void +add_random_oscillator (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + cube *c = bp->cubes; + double s1 = speed * 0.07; + double s2 = speed * 0.3; + double disp = (thickness + displacement); + int c1 = 1 + ((random() % 4) ? 0 : (random() % 3)); + int c2 = 2; + int n = random() % 6; + + switch (n) { + case 0: add_oscillator (mi, &c->rot.x, s1, 90 * RANDSIGN(), c1); break; + case 1: add_oscillator (mi, &c->rot.y, s1, 90 * RANDSIGN(), c1); break; + case 2: add_oscillator (mi, &c->rot.z, s1, 90 * RANDSIGN(), c1); break; + case 3: add_oscillator (mi, &c->pos.x, s2, disp * RANDSIGN(), c2); break; + case 4: add_oscillator (mi, &c->pos.y, s2, disp * RANDSIGN(), c2); break; + case 5: add_oscillator (mi, &c->pos.z, s2, disp * RANDSIGN(), c2); break; + default: abort(); break; + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_cube (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +cube_handle_event (ModeInfo *mi, XEvent *event) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') + { + while (bp->cubes) + { + cube *c = bp->cubes->next; + free (bp->cubes); + bp->cubes = c; + } + + while (bp->oscillators) + { + oscillator *o = bp->oscillators->next; + free (bp->oscillators); + bp->oscillators = o; + } + + if (random() & 1) + { + thickness = 0.03 + frand(0.02); + displacement = (random() & 1) ? 0 : (thickness / 3); + } + else + { + thickness = 0.001 + frand(0.02); + displacement = 0; + } + + make_cubes (mi); + + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_cube (ModeInfo *mi) +{ + cube_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire && !do_flat) + { + GLfloat color[4] = {1, 1, 1, 1}; + GLfloat cspec[4] = {1, 1, 0, 1}; + static const GLfloat shiny = 30; + + static GLfloat pos0[4] = { 0.5, -1, -0.5, 0}; + static GLfloat pos1[4] = {-0.75, -1, 0, 0}; + static GLfloat amb[4] = {0, 0, 0, 1}; + static GLfloat dif[4] = {1, 1, 1, 1}; + static GLfloat spc[4] = {1, 1, 1, 1}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos0); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glLightfv(GL_LIGHT1, GL_POSITION, pos1); + glLightfv(GL_LIGHT1, GL_AMBIENT, amb); + glLightfv(GL_LIGHT1, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT1, GL_SPECULAR, spc); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT, GL_SPECULAR, cspec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + } + + { + double spin_speed = 0.05; + double wander_speed = 0.005; + double spin_accel = 1.0; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + bp->trackball = gltrackball_init (True); + } + + if (thickness > 0.5) + thickness = 0.5; + if (displacement > 0.5) + displacement = 0.5; + + if (thickness <= 0.0001) + { + if (random() & 1) + { + thickness = 0.03 + frand(0.02); + displacement = (random() & 1) ? 0 : (thickness / 3); + } + else + { + thickness = 0.001 + frand(0.02); + displacement = 0; + } + } + + make_cubes (mi); +} + + +ENTRYPOINT void +draw_cube (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 4, + (y - 0.5) * 4, + (z - 0.5) * 2); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glScalef (6, 6, 6); + + mi->polygon_count = draw_cubes (mi, bp->cubes); + glPopMatrix (); + + if (!bp->button_down_p) + tick_oscillators (mi); + + if (! bp->oscillators && + !bp->button_down_p && + !(random() % 60)) + { + bp->cubes->pos.x = bp->cubes->pos.y = bp->cubes->pos.z = 0; + bp->cubes->rot.x = bp->cubes->rot.y = bp->cubes->rot.z = 0; + add_random_oscillator (mi); + } + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT void +free_cube (ModeInfo *mi) +{ + cube_configuration *bp = &bps[MI_SCREEN(mi)]; + while (bp->cubes) + { + cube *c = bp->cubes->next; + free (bp->cubes); + bp->cubes = c; + } + + while (bp->oscillators) + { + oscillator *o = bp->oscillators->next; + free (bp->oscillators); + bp->oscillators = o; + } +} + + +XSCREENSAVER_MODULE_2 ("CubeTwist", cubetwist, cube) + +#endif /* USE_GL */ diff --git a/hacks/glx/cubetwist.man b/hacks/glx/cubetwist.man new file mode 100644 index 0000000..3a6574b --- /dev/null +++ b/hacks/glx/cubetwist.man @@ -0,0 +1,80 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +cubetwist - A series of nested cubes rotate and slide recursively. +.SH SYNOPSIS +.B cubetwist +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-thickness \fInumber\fP] +[\-displacement \fInumber\fP] +[\-no-flat] +[\-no-wander] +[\-no-spin] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +A series of nested cubes rotate and slide recursively. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-thickness \fInumber\fP +Thickness of the cube edges. 0.005 - 0.2. Default: 0.05. +.TP 8 +.B \-displacement \fInumber\fP +Displacement between nested cubes. 0.0 - 0.2. Default: 0.01. +.TP 8 +.B \-flat | \-no-flat +Whether to use flat shading, or lighting. Default flat. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the object should spin. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/cubicgrid.c b/hacks/glx/cubicgrid.c new file mode 100644 index 0000000..34b6c34 --- /dev/null +++ b/hacks/glx/cubicgrid.c @@ -0,0 +1,269 @@ +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Cubic Grid - a 3D lattice. The observer is located in the centre of + * a spinning finite lattice. As it rotates, various view-throughs appear and + * evolve. A simple idea with interesting results. + * + * Vasek Potocek (Dec-28-2007) + * vasek.potocek@post.cz + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_cubicgrid 0 +# define release_cubicgrid 0 +#include "xlockmore.h" + +#ifdef USE_GL + +#define DEF_SPEED "1.0" +#define DEF_DIV "30" +#define DEF_ZOOM "20" +#define DEF_BIGDOTS "True" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "rotator.h" +#include "gltrackball.h" + +/*************************************************************************/ + +static int ticks; +static float size; +static float speed; +static Bool bigdots; + +static argtype vars[] = { + { &speed, "speed", "Speed", DEF_SPEED, t_Float }, + { &size, "zoom", "Zoom", DEF_ZOOM, t_Float }, + { &ticks, "ticks", "Ticks", DEF_DIV, t_Int }, + { &bigdots, "bigdots", "BigDots", DEF_BIGDOTS, t_Bool }, +}; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-zoom", ".zoom", XrmoptionSepArg, 0 }, + { "-ticks", ".ticks", XrmoptionSepArg, 0 }, + { "-bigdots", ".bigdots", XrmoptionNoArg, "True" }, + { "+bigdots", ".bigdots", XrmoptionNoArg, "False" }, +}; + +ENTRYPOINT ModeSpecOpt cubicgrid_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct cubicgrid_description = +{ "cubicgrid", "init_cubicgrid", "draw_cubicgrid", NULL, + "draw_cubicgrid", "change_cubicgrid", NULL, &cubicgrid_opts, + 25000, 1, 1, 1, 1.0, 4, "", + "Shows a rotating 3D lattice from inside", 0, NULL +}; +#endif + +typedef struct { + GLXContext *glx_context; + GLfloat ratio; + GLint list; + + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + int npoints; +} cubicgrid_conf; + +static cubicgrid_conf *cubicgrid = NULL; + +static const GLfloat zpos = -18.0; + +/*************************************************************************/ + +ENTRYPOINT Bool +cubicgrid_handle_event (ModeInfo *mi, XEvent *event) +{ + cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, cp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &cp->button_down_p)) + return True; + + return False; +} + + +static Bool draw_main(ModeInfo *mi) +{ + cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)]; + double x, y, z; + + glClear(GL_COLOR_BUFFER_BIT); + glLoadIdentity(); + + glRotatef (180, 1, 0, 0); /* Make trackball track the right way */ + glRotatef (180, 0, 1, 0); + + glTranslatef(0, 0, zpos); + + glScalef(size/ticks, size/ticks, size/ticks); + + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1); + } +# endif + + gltrackball_rotate (cp->trackball); + + get_rotation (cp->rot, &x, &y, &z, !cp->button_down_p); + glRotatef (-x * 360, 1.0, 0.0, 0.0); + glRotatef (-y * 360, 0.0, 1.0, 0.0); + glRotatef (-z * 360, 0.0, 0.0, 1.0); + + glTranslatef(-ticks/2.0, -ticks/2.0, -ticks/2.0); + glCallList(cp->list); + return True; +} + +static void init_gl(ModeInfo *mi) +{ + cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)]; + int x, y, z; + float tf = ticks; + + glDrawBuffer(GL_BACK); + if(bigdots) { + glPointSize(2.0); + } + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glShadeModel(GL_FLAT); + + cp->list = glGenLists(1); + glNewList(cp->list, GL_COMPILE); + if(MI_IS_MONO(mi)) { + glColor3f(1.0, 1.0, 1.0); + glBegin(GL_POINTS); + for(x = 0; x < ticks; x++) { + for(y = 0; y < ticks; y++) { + for(z = 0; z < ticks; z++) { + glVertex3f(x, y, z); + cp->npoints++; + } + } + } + glEnd(); + } + else + { + glBegin(GL_POINTS); + for(x = 0; x < ticks; x++) { + for(y = 0; y < ticks; y++) { + for(z = 0; z < ticks; z++) { + glColor3f(x/tf, y/tf, z/tf); + glVertex3f(x, y, z); + cp->npoints++; + } + } + } + glEnd(); + } + glEndList(); +} + +/*************************************************************************/ + +ENTRYPOINT void reshape_cubicgrid(ModeInfo *mi, int width, int height) +{ + cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)]; + int y = 0; + if(!height) height = 1; + cp->ratio = (GLfloat)width/(GLfloat)height; + + if (width > height * 3) { /* tiny window: show middle */ + height = width; + y = -height/2; + cp->ratio = (GLfloat)width/(GLfloat)height; + } + + glViewport(0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(30.0, cp->ratio, 1.0, 100.0); + glMatrixMode(GL_MODELVIEW); + glClear(GL_COLOR_BUFFER_BIT); +} + +ENTRYPOINT void init_cubicgrid(ModeInfo *mi) +{ + cubicgrid_conf *cp; + MI_INIT(mi, cubicgrid); + cp = &cubicgrid[MI_SCREEN(mi)]; + + if ((cp->glx_context = init_GL(mi)) != NULL) { + init_gl(mi); + reshape_cubicgrid(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } + + { + double spin_speed = 0.045 * speed; + double spin_accel = 0.005 * speed; + + cp->rot = make_rotator (spin_speed, spin_speed, spin_speed, + spin_accel, 0, True); + cp->trackball = gltrackball_init (True); + } +} + +ENTRYPOINT void draw_cubicgrid(ModeInfo * mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + cubicgrid_conf *cp; + if (!cubicgrid) return; + cp = &cubicgrid[MI_SCREEN(mi)]; + MI_IS_DRAWN(mi) = True; + if (!cp->glx_context) return; + glXMakeCurrent(display, window, *(cp->glx_context)); + if (!draw_main(mi)) { + MI_ABORT(mi); + return; + } + mi->polygon_count = cp->npoints; + if (MI_IS_FPS(mi)) do_fps (mi); + glFlush(); + glXSwapBuffers(display, window); +} + +#ifndef STANDALONE +ENTRYPOINT void change_cubicgrid(ModeInfo * mi) +{ + cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)]; + if (!cp->glx_context) return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context)); + init_gl(mi); +} +#endif /* !STANDALONE */ + + +XSCREENSAVER_MODULE ("CubicGrid", cubicgrid) + +#endif diff --git a/hacks/glx/cubicgrid.man b/hacks/glx/cubicgrid.man new file mode 100644 index 0000000..d267bc3 --- /dev/null +++ b/hacks/glx/cubicgrid.man @@ -0,0 +1,83 @@ +.TH XScreenSaver 1 "Dec-28-07" "X Version 11" +.SH NAME +cubicgrid - rotating 3D lattice seen from inside +.SH SYNOPSIS +.B cubicgrid +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-install] +[\-delay \fImicroseconds\fP] +[\-mono] +[\-speed \fInumber\fP] +[\-zoom \fInumber\fP] +[\-ticks \fInumber\fP] +[\-bigdots] +[\-fps] +.SH DESCRIPTION +This program shows the view of an observer located inside a set of points +arranged to a 3D lattice. As the lattice rotates, various view-throughs appear +and evolve. A simple idea with interesting results. +.SH OPTIONS +.I cubicgrid +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +How long to pause between frames. Default is 20000, or 0.02 second. +.TP 8 +.B \-mono +Draw in black and white. If not used, a fixed all-color scheme is chosen. +.TP 8 +.B \-speed \fInumber\fP +The maximum speed of the rotation. The actual speed and axis change smoothly +for better effect. 0.5 - 10. The default is 1.0. +.TP 8 +.B \-zoom \fInumber\fP +Size of the lattice. Ideally it should fill all the screen, but one may find +other values also interesting. 5 - 50. The default of 20 should do for common +screen aspect ratios. +.TP 8 +.B \-ticks \fInumber\fP +The count of points drawn along every axis. 10 - 100. The default is 30. +.TP 8 +.B \-bigdots +Draw the points twice as big. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2007 by Vasek Potocek. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear in +all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Vasek Potocek , Dec-28-07. diff --git a/hacks/glx/curlicue.h b/hacks/glx/curlicue.h new file mode 100644 index 0000000..0963d6e --- /dev/null +++ b/hacks/glx/curlicue.h @@ -0,0 +1,261 @@ +/* curlicue.h --- A texture map containing a "curlicue" */ + +#define TEX_DIMENSION 64 +static const unsigned char texture[TEX_DIMENSION*TEX_DIMENSION] = { + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 58, 43, 43, 43, 43, 45, 70, 70, 70, + 70, 70, 70, 70, 74, 98, 98, 98,100,194,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 30,186,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1,111,244,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43,198,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5,123,248,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 50,209,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,246, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 74,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,138, 4, + 66,229,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 1,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,153, 0, 0, + 0, 53,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6,188,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,213, 7, 0, 0, + 0, 0,226,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 45, 0, 0, 0, 0, 0, 47, 0, 0, + 0, 0, 22,225,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,254, 54, 0, 0, 0, + 0, 81,254,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 45, 0, 0, 0, 0, 56,247, 82, 0, + 0, 0, 0, 59,253,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,152, 0, 0, 0, 0, + 52,243,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 45, 0, 0, 0, 8,215,255,250, 56, + 0, 0, 0, 0,142,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,241, 19, 0, 0, 0, 15, + 220,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 45, 0, 0, 0,129,255,255,255,230, + 23, 0, 0, 0, 12,230,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,131, 0, 0, 0, 0,157, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 45, 0, 0, 49,250,255,255,255,255, + 171, 0, 0, 0, 0,112,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,246, 19, 0, 0, 0, 54,253, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 45, 0, 5,208,255,255,255,255,255, + 255, 77, 0, 0, 0, 9,231,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,163, 0, 0, 0, 0,186,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 45, 0,121,255,255,255,255,255,255, + 255,211, 2, 0, 0, 0,134,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255, 69, 0, 0, 0, 50,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 45, 41,247,255,255,255,255,255,255, + 255,255, 73, 0, 0, 0, 38,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,237, 4, 0, 0, 0,145,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 52,201,255,255,255,255,255,255,255, + 255,255,169, 0, 0, 0, 0,216,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,181, 0, 0, 0, 0,229,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,186,255,255,255,255,255,255,255,255, + 255,255,247, 7, 0, 0, 0,150,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,130, 0, 0, 0, 42,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 67, 0, 0, 0, 91,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 79, 0, 0, 0, 95,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,120, 0, 0, 0, 56,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 55, 0, 0, 0,130,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,157, 0, 0, 0, 21,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 34, 0, 0, 0,161,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,179, 0, 0, 0, 2,250,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 27, 0, 0, 0,168,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,200, 0, 0, 0, 0,249,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 27, 0, 0, 0,168,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,200, 0, 0, 0, 0,249,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 27, 0, 0, 0,163,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,183, 0, 0, 0, 0,249,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 42, 0, 0, 0,135,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,161, 0, 0, 0, 17,254,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 76, 0, 0, 0,100,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,126, 0, 0, 0, 48,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,114, 0, 0, 0, 53,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 78, 0, 0, 0, 84,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,165, 0, 0, 0, 3,241,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,252, 16, 0, 0, 0,139,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,228, 0, 0, 0, 0,161,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,192, 0, 0, 0, 0,198,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255, 46, 0, 0, 0, 67,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 93, 0, 0, 0, 21,250,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,139, 0, 0, 0, 1,211,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,226, 7, 0, 0, 0,108,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,230, 6, 0, 0, 0, 79,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,106, 0, 0, 0, 1,206,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255, 97, 0, 0, 0, 0,183, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 202, 3, 0, 0, 0, 67,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,221, 8, 0, 0, 0, 27, + 235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,243, + 40, 0, 0, 0, 0,198,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,126, 0, 0, 0, 0, + 71,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,253, 85, + 0, 0, 0, 0, 96,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,247, 44, 0, 0, 0, + 0, 91,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,116, 0, + 0, 0, 0, 25,233,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,216, 11, 0, 0, + 0, 0, 90,251,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,252,112, 0, 0, + 0, 0, 4,191,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,174, 4, 0, + 0, 0, 0, 72,235,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,242, 84, 0, 0, 0, + 0, 0,146,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,150, 1, + 0, 0, 0, 0, 27,181,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,194, 39, 0, 0, 0, 0, + 0,120,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,151, + 4, 0, 0, 0, 0, 0, 77,209,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,216, 92, 1, 0, 0, 0, 0, 0, + 125,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 175, 12, 0, 0, 0, 0, 0, 1, 70,164,241,255,255,255,255,255, + 255,255,255,255,255,242,171, 77, 2, 0, 0, 0, 0, 0, 4,150, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,214, 41, 0, 0, 0, 0, 0, 0, 0, 4, 48, 98,138,163,163, + 163,163,140,103, 55, 5, 0, 0, 0, 0, 0, 0, 0, 30,199,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,245,125, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,105,240,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,222,100, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 83,210,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,228,136, 45, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37,125,220,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,225,166,112, 74, 43, 32, 12, + 8, 32, 40, 71,105,162,218,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +}; diff --git a/hacks/glx/dangerball.c b/hacks/glx/dangerball.c new file mode 100644 index 0000000..e40ccc5 --- /dev/null +++ b/hacks/glx/dangerball.c @@ -0,0 +1,364 @@ +/* dangerball, Copyright (c) 2001-2017 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 30 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_ball 0 +# define release_ball 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "sphere.h" +#include "tube.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "0.05" + +#define SPIKE_FACES 12 /* how densely to render spikes */ +#define SMOOTH_SPIKES True +#define SPHERE_SLICES 32 /* how densely to render spheres */ +#define SPHERE_STACKS 16 + + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + GLuint ball_list; + GLuint spike_list; + + GLfloat pos; + int *spikes; + + int ncolors; + XColor *colors; + int ccolor; + int color_shift; + +} ball_configuration; + +static ball_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" } +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt ball_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_ball (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +randomize_spikes (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + bp->pos = 0; + for (i = 0; i < MI_COUNT(mi); i++) + { + bp->spikes[i*2] = (random() % 360) - 180; + bp->spikes[i*2+1] = (random() % 180) - 90; + } + +# define ROT_SCALE 22 + for (i = 0; i < MI_COUNT(mi) * 2; i++) + bp->spikes[i] = (bp->spikes[i] / ROT_SCALE) * ROT_SCALE; + + if ((random() % 3) == 0) + bp->color_shift = random() % (bp->ncolors / 2); + else + bp->color_shift = 0; +} + +static void +draw_spikes (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat diam = 0.2; + GLfloat pos = bp->pos; + int i; + + if (pos < 0) pos = -pos; + + pos = (asin (0.5 + pos/2) - 0.5) * 2; + + for (i = 0; i < MI_COUNT(mi); i++) + { + glPushMatrix(); + glRotatef(bp->spikes[i*2], 0, 1, 0); + glRotatef(bp->spikes[i*2+1], 0, 0, 1); + glTranslatef(0.7, 0, 0); + glRotatef(-90, 0, 0, 1); + glScalef (diam, pos, diam); + glCallList (bp->spike_list); + glPopMatrix(); + + mi->polygon_count += (SPIKE_FACES + 1); + } +} + + +static void +move_spikes (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (bp->pos >= 0) /* moving outward */ + { + bp->pos += speed; + if (bp->pos >= 1) /* reverse gears at apex */ + bp->pos = -1; + } + else /* moving inward */ + { + bp->pos += speed; + if (bp->pos >= 0) /* stop at end */ + randomize_spikes (mi); + } +} + + +ENTRYPOINT Bool +ball_handle_event (ModeInfo *mi, XEvent *event) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_ball (ModeInfo *mi) +{ + ball_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_ball (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + { + double spin_speed = 10.0; + double wander_speed = 0.12; + double spin_accel = 2.0; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + bp->trackball = gltrackball_init (True); + } + + bp->ncolors = 128; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + + bp->spikes = (int *) calloc(MI_COUNT(mi), sizeof(*bp->spikes) * 2); + + bp->ball_list = glGenLists (1); + bp->spike_list = glGenLists (1); + + glNewList (bp->ball_list, GL_COMPILE); + unit_sphere (SPHERE_STACKS, SPHERE_SLICES, wire); + glEndList (); + + glNewList (bp->spike_list, GL_COMPILE); + cone (0, 0, 0, + 0, 1, 0, + 1, 0, SPIKE_FACES, SMOOTH_SPIKES, False, wire); + glEndList (); + + randomize_spikes (mi); +} + + +ENTRYPOINT void +draw_ball (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int c2; + + static const GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat sspec[4] = {0.0, 0.0, 0.0, 1.0}; + static const GLfloat bshiny = 128.0; + static const GLfloat sshiny = 0.0; + + GLfloat bcolor[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat scolor[4] = {0.0, 0.0, 0.0, 1.0}; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 15); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + bcolor[0] = bp->colors[bp->ccolor].red / 65536.0; + bcolor[1] = bp->colors[bp->ccolor].green / 65536.0; + bcolor[2] = bp->colors[bp->ccolor].blue / 65536.0; + + c2 = (bp->ccolor + bp->color_shift) % bp->ncolors; + scolor[0] = bp->colors[c2].red / 65536.0; + scolor[1] = bp->colors[c2].green / 65536.0; + scolor[2] = bp->colors[c2].blue / 65536.0; + + bp->ccolor++; + if (bp->ccolor >= bp->ncolors) bp->ccolor = 0; + + mi->polygon_count = 0; + + glScalef (2.0, 2.0, 2.0); + + move_spikes (mi); + + glMaterialfv (GL_FRONT, GL_SPECULAR, bspec); + glMateriali (GL_FRONT, GL_SHININESS, bshiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor); + glCallList (bp->ball_list); + mi->polygon_count += (SPHERE_SLICES * SPHERE_STACKS); + + glMaterialfv (GL_FRONT, GL_SPECULAR, sspec); + glMaterialf (GL_FRONT, GL_SHININESS, sshiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, scolor); + draw_spikes (mi); + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("DangerBall", dangerball, ball) + +#endif /* USE_GL */ diff --git a/hacks/glx/dangerball.man b/hacks/glx/dangerball.man new file mode 100644 index 0000000..3e33f82 --- /dev/null +++ b/hacks/glx/dangerball.man @@ -0,0 +1,72 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +dangerball - a 3D ball that periodically extrudes spikes. Ouch! +.SH SYNOPSIS +.B dangerball +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +[\-no-wander] +[\-no-spin] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Draws a ball that periodically extrudes many random spikes. Ouch! +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Spike growth frequency. 0.0 - 0.25. Default: 0.05. +.TP 8 +.B \-count \fInumber\fP +Number o spikes. Default: 30. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the object should spin. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/discoball.c b/hacks/glx/discoball.c new file mode 100644 index 0000000..4085c56 --- /dev/null +++ b/hacks/glx/discoball.c @@ -0,0 +1,707 @@ +/* discoball, Copyright (c) 2016 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 30 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define release_ball 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "False" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" + +typedef struct tile tile; +struct tile { + XYZ position, normal; + GLfloat size, tilt; + tile *next; +}; + + +typedef struct { + XYZ normal; + GLfloat color[4]; +} ray; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + GLfloat th; + trackball_state *trackball; + Bool button_down_p; + tile *tiles; + int nrays; + ray *rays; +} ball_configuration; + +static ball_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" } +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt ball_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static XYZ +normalize (XYZ p) +{ + GLfloat d = sqrt(p.x*p.x + p.y*p.y * p.z*p.z); + if (d < 0.0000001) + p.x = p.y = p.z = 0; + else + { + p.x /= d; + p.y /= d; + p.z /= d; + } + + return p; +} + + +static void +build_texture (ModeInfo *mi) +{ + int x, y; + int size = 128; + int bpl = size * 2; + unsigned char *data = malloc (bpl * size); + + for (y = 0; y < size; y++) + { + for (x = 0; x < size; x++) + { + unsigned char *c = &data [y * bpl + x * 2]; + GLfloat X = (x / (GLfloat) (size-1)) - 0.5; + GLfloat Y = (y / (GLfloat) (size-1)) - 0.5; + X = cos (X * X * 6.2); + Y = cos (Y * Y * 6.2); + X = X < Y ? X : Y; + X *= 0.4; + c[0] = 0xFF; + c[1] = 0xFF * X; + } + } + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + check_gl_error ("texture param"); + + glTexImage2D (GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, size, size, 0, + GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data); + check_gl_error ("light texture"); + free (data); +} + + +static int +draw_rays (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + int i; + + glEnable (GL_TEXTURE_2D); + glDisable (GL_LIGHTING); + glEnable (GL_BLEND); + glDisable (GL_DEPTH_TEST); + glBlendFunc (GL_SRC_ALPHA, GL_ONE); + + for (i = 0; i < bp->nrays; i++) + { + GLfloat x = bp->rays[i].normal.x; + GLfloat y = bp->rays[i].normal.y; + GLfloat z = bp->rays[i].normal.z; + glPushMatrix(); + + /* Orient to direction of ray. */ + glRotatef (-atan2 (x, y) * (180 / M_PI), 0, 0, 1); + glRotatef ( atan2 (z, sqrt(x*x + y*y)) * (180 / M_PI), 1, 0, 0); + + glScalef (5, 5, 10); + glTranslatef(0, 0, 1.1); + glColor4fv (bp->rays[i].color); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f (0, 0); glVertex3f (-0.5, 0, -1); + glTexCoord2f (1, 0); glVertex3f ( 0.5, 0, -1); + glTexCoord2f (1, 1); glVertex3f ( 0.5, 0, 1); + glTexCoord2f (0, 1); glVertex3f (-0.5, 0, 1); + glEnd(); + polys++; + glPopMatrix(); + } + + glDisable (GL_TEXTURE_2D); + glEnable (GL_LIGHTING); + glDisable (GL_BLEND); + glEnable (GL_DEPTH_TEST); + glDisable (GL_FOG); + + return polys; +} + + +static int +draw_ball_1 (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + tile *t; + GLfloat m[4][4]; + + glGetFloatv (GL_MODELVIEW_MATRIX, &m[0][0]); + + glFrontFace (GL_CW); + +#if 0 + /* Draw the back rays. + */ + if (! wire) + { + glPushMatrix(); + glLoadIdentity(); + glMultMatrixf (&m[0][0]); + glTranslatef(0, 0, -4.1); + glRotatef (bp->th, 0, 0, 1); + polys += draw_rays (mi); + glPopMatrix(); + } + glClear(GL_DEPTH_BUFFER_BIT); +#endif + + + /* Instead of rendering polygons for the foam ball substrate, let's + just billboard a quad down the middle to mask out the back-facing + tiles. */ + { + glPushMatrix(); + m[0][0] = 1; m[1][0] = 0; m[2][0] = 0; + m[0][1] = 0; m[1][1] = 1; m[2][1] = 0; + m[0][2] = 0; m[1][2] = 0; m[2][2] = 1; + glLoadIdentity(); + glMultMatrixf (&m[0][0]); + glScalef (40, 40, 40); + glTranslatef (-0.5, -0.5, -0.01); + if (! wire) + glDisable (GL_LIGHTING); + /* Draw into the depth buffer but not the frame buffer */ + glColorMask (GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + glColor3f (0, 0, 0); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); + glEnd(); + polys++; + glColorMask (GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + if (! wire) + glEnable (GL_LIGHTING); + glPopMatrix(); + glColor3f (1, 1, 1); + } + + /* Draw all the tiles. + */ + for (t = bp->tiles; t; t = t->next) + { + GLfloat x = t->normal.x; + GLfloat y = t->normal.y; + GLfloat z = t->normal.z; + GLfloat s = t->size / 2; + glPushMatrix(); + + /* Move to location of tile. */ + glTranslatef (t->position.x, t->position.y, t->position.z); + + /* Orient to direction tile is facing. */ + glRotatef (-atan2 (x, y) * (180 / M_PI), 0, 0, 1); + glRotatef ( atan2 (z, sqrt(x*x + y*y)) * (180 / M_PI), 1, 0, 0); + + glRotatef (t->tilt, 0, 1, 0); + + glScalef (s, s, s); + glNormal3f (0, 1, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (-1, 0, -1); + glVertex3f ( 1, 0, -1); + glVertex3f ( 1, 0, 1); + glVertex3f (-1, 0, 1); + glEnd(); + polys++; + + if (! wire) + { + GLfloat d = 0.2; + glNormal3f (0, 0, -1); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (-1, 0, -1); + glVertex3f (-1, -d, -1); + glVertex3f ( 1, -d, -1); + glVertex3f ( 1, 0, -1); + glEnd(); + polys++; + + glNormal3f (0, 0, 1); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f ( 1, 0, 1); + glVertex3f ( 1, -d, 1); + glVertex3f (-1, -d, 1); + glVertex3f (-1, 0, 1); + glEnd(); + polys++; + + glNormal3f (1, 0, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f ( 1, 0, -1); + glVertex3f ( 1, -d, -1); + glVertex3f ( 1, -d, 1); + glVertex3f ( 1, 0, 1); + glEnd(); + polys++; + + glNormal3f (-1, 0, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (-1, 0, 1); + glVertex3f (-1, -d, 1); + glVertex3f (-1, -d, -1); + glVertex3f (-1, 0, -1); + glEnd(); + polys++; + } + + glPopMatrix(); + } + + /* Draw the front rays. + */ + if (! wire) + { + glPushMatrix(); + glLoadIdentity(); + glMultMatrixf (&m[0][0]); + glTranslatef(0, 0, 4.1); + glRotatef (-bp->th, 0, 0, 1); + polys += draw_rays (mi); + glPopMatrix(); + } + + return polys; +} + + +static GLfloat +vector_angle (XYZ a, XYZ b) +{ + double La = sqrt (a.x*a.x + a.y*a.y + a.z*a.z); + double Lb = sqrt (b.x*b.x + b.y*b.y + b.z*b.z); + double cc, angle; + + if (La == 0 || Lb == 0) return 0; + if (a.x == b.x && a.y == b.y && a.z == b.z) return 0; + + /* dot product of two vectors is defined as: + La * Lb * cos(angle between vectors) + and is also defined as: + ax*bx + ay*by + az*bz + so: + La * Lb * cos(angle) = ax*bx + ay*by + az*bz + cos(angle) = (ax*bx + ay*by + az*bz) / (La * Lb) + angle = acos ((ax*bx + ay*by + az*bz) / (La * Lb)); + */ + cc = (a.x*b.x + a.y*b.y + a.z*b.z) / (La * Lb); + if (cc > 1) cc = 1; /* avoid fp rounding error (1.000001 => sqrt error) */ + angle = acos (cc); + + return (angle); +} + + +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +static void +build_ball (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + int rows = MI_COUNT (mi); + + GLfloat tile_size = M_PI / rows; + GLfloat th0, th1; + + struct { XYZ position; GLfloat strength; } dents[5]; + int dent_count = random() % countof(dents); + int i; + for (i = 0; i < dent_count; i++) + { + GLfloat dist; + dents[i].position.x = RANDSIGN() * (2 - BELLRAND(0.2)); + dents[i].position.y = RANDSIGN() * (2 - BELLRAND(0.2)); + dents[i].position.z = RANDSIGN() * (2 - BELLRAND(0.2)); + dist = sqrt (dents[i].position.x * dents[i].position.x + + dents[i].position.y * dents[i].position.y + + dents[i].position.z * dents[i].position.z); + dents[i].strength = dist - (1 - BELLRAND(0.3)); + dents[i].strength = dist - (1 - BELLRAND(0.3)); + } + + + for (th1 = M_PI/2; th1 > -(M_PI/2 + tile_size/2); th1 -= tile_size) + { + GLfloat x = cos (th1); + GLfloat y = sin (th1); + GLfloat x0 = cos (th1 - tile_size/2); + GLfloat x1 = cos (th1 + tile_size/2); + GLfloat circ0 = M_PI * x0 * 2; + GLfloat circ1 = M_PI * x1 * 2; + GLfloat circ = (circ0 < circ1 ? circ0 : circ1); + int row_tiles = floor ((circ < 0 ? 0 : circ) / tile_size); + GLfloat spacing; + GLfloat dropsy = 0.13 + frand(0.04); + + if (row_tiles <= 0) row_tiles = 1; + spacing = M_PI*2 / row_tiles; + + for (th0 = 0; th0 < M_PI*2; th0 += spacing) + { + tile *t = (tile *) calloc (1, sizeof(*t)); + t->size = tile_size * 0.85; + t->position.x = cos (th0) * x; + t->position.y = sin (th0) * x; + t->position.z = y; + + t->normal = t->position; + + /* Apply pressure on position from the dents. */ + for (i = 0; i < dent_count; i++) + { + GLfloat dist; + XYZ direction; + + if (! (random() % 150)) /* Drop tiles randomly */ + { + free (t); + goto SKIP; + } + + direction.x = t->position.x - dents[i].position.x; + direction.y = t->position.y - dents[i].position.y; + direction.z = t->position.z - dents[i].position.z; + dist = sqrt (direction.x * direction.x + + direction.y * direction.y + + direction.z * direction.z); + if (dist < dents[i].strength) + { + GLfloat s = 1 - (dents[i].strength - dist) * 0.66; + XYZ n2 = t->normal; + GLfloat angle = vector_angle (t->position, dents[i].position); + + /* Drop out the tiles near the apex of the dent. */ + if (angle < dropsy) + { + free (t); + goto SKIP; + } + + t->position.x *= s; + t->position.y *= s; + t->position.z *= s; + + direction = normalize (direction); + n2.x -= direction.x; + n2.y -= direction.y; + n2.z -= direction.z; + + t->normal.x = (t->normal.x + n2.x) / 2; + t->normal.y = (t->normal.y + n2.y) / 2; + t->normal.z = (t->normal.z + n2.z) / 2; + } + } + + /* Skew the direction the tile is facing slightly. */ + t->normal.x += 0.12 - frand(0.06); + t->normal.y += 0.12 - frand(0.06); + t->normal.z += 0.12 - frand(0.06); + t->tilt = 4 - BELLRAND(8); + + t->next = bp->tiles; + bp->tiles = t; + SKIP: ; + } + } + + bp->nrays = 5 + BELLRAND(10); + bp->rays = (ray *) calloc (bp->nrays, sizeof(*bp->rays)); + for (i = 0; i < bp->nrays; i++) + { + GLfloat th = frand(M_PI * 2); + bp->rays[i].normal.x = cos (th); + bp->rays[i].normal.y = sin (th); + bp->rays[i].normal.z = 1; + bp->rays[i].normal = normalize (bp->rays[i].normal); + bp->rays[i].color[0] = 0.9 + frand(0.1); + bp->rays[i].color[1] = 0.6 + frand(0.4); + bp->rays[i].color[2] = 0.6 + frand(0.2); + bp->rays[i].color[3] = 1; + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_ball (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +ball_handle_event (ModeInfo *mi, XEvent *event) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_ball (ModeInfo *mi) +{ + ball_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + if (! wire) + build_texture (mi); + + reshape_ball (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + bp->th = 180 - frand(360); + + if (MI_COUNT(mi) < 10) + MI_COUNT(mi) = 10; + if (MI_COUNT(mi) > 200) + MI_COUNT(mi) = 200; + + { + double spin_speed = 0.1; + double wander_speed = 0.003; + double spin_accel = 1; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False); + bp->trackball = gltrackball_init (True); + } + + build_ball (mi); + + if (!wire) + { + GLfloat color[4] = {0.5, 0.5, 0.5, 1}; + GLfloat cspec[4] = {1, 1, 1, 1}; + static const GLfloat shiny = 10; + + static GLfloat pos0[4] = { 0.5, -1, -0.5, 0}; + static GLfloat pos1[4] = {-0.75, -1, 0, 0}; + static GLfloat amb[4] = {0, 0, 0, 1}; + static GLfloat dif[4] = {1, 1, 1, 1}; + static GLfloat spc[4] = {1, 1, 1, 1}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + color[0] += frand(0.2); + color[1] += frand(0.2); + color[2] += frand(0.2); + + cspec[0] -= frand(0.2); + cspec[1] -= frand(0.2); + cspec[2] -= frand(0.2); + + glLightfv(GL_LIGHT0, GL_POSITION, pos0); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glLightfv(GL_LIGHT1, GL_POSITION, pos1); + glLightfv(GL_LIGHT1, GL_AMBIENT, amb); + glLightfv(GL_LIGHT1, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT1, GL_SPECULAR, spc); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT, GL_SPECULAR, cspec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + } +} + + +ENTRYPOINT void +draw_ball (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glRotatef(current_device_rotation(), 0, 0, 1); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 6, + (y - 0.5) * 6, + (z - 0.5) * 2); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glRotatef (50, 1, 0, 0); + + glScalef (4, 4, 4); + glRotatef (bp->th, 0, 0, 1); + if (! bp->button_down_p) + { + bp->th += (bp->th > 0 ? speed : -speed); + while (bp->th > 360) bp->th -= 360; + while (bp->th < -360) bp->th += 360; + } + + mi->polygon_count += draw_ball_1 (mi); + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + + +ENTRYPOINT void +free_ball (ModeInfo *mi) +{ + ball_configuration *bp = &bps[MI_SCREEN(mi)]; + while (bp->tiles) + { + tile *t = bp->tiles->next; + free (bp->tiles); + bp->tiles = t; + } + free (bp->rays); +} + +XSCREENSAVER_MODULE_2 ("Discoball", discoball, ball) + +#endif /* USE_GL */ diff --git a/hacks/glx/discoball.man b/hacks/glx/discoball.man new file mode 100644 index 0000000..041cbd2 --- /dev/null +++ b/hacks/glx/discoball.man @@ -0,0 +1,72 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +discoball - A dusty, dented disco ball screen saver. +.SH SYNOPSIS +.B discoball +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +[\-no-wander] +[\-spin] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +A dusty, dented disco ball. Woop woop. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-count \fInumber\fP +Number of rows of tiles on the ball. 10 - 100. Default: 30. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the scene should spin. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/dnalogo.c b/hacks/glx/dnalogo.c new file mode 100644 index 0000000..2b24f83 --- /dev/null +++ b/hacks/glx/dnalogo.c @@ -0,0 +1,3639 @@ +/* DNA Logo, Copyright (c) 2001-2018 Jamie Zawinski + * + * DNA Lounge + * + * Restaurant -- Bar -- Nightclub -- Cafe -- Est. 1985. + * + * 375 Eleventh Street + * San Francisco, CA + * 94103 + * + * https://www.dnalounge.com/ + * http://www.dnapizza.com/ + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS __extension__ \ + "*delay: 25000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*doGasket: True \n" \ + "*doHelix: True \n" \ + "*doLadder: True \n" \ + "*doFrame: True \n" \ + "*wallFacets: 360 \n" \ + "*barFacets: 90 \n" \ + "*clockwise: False \n" \ + "*turns: 0.72 \n" \ + "*turnSpacing: 2.3 \n" \ + "*barSpacing: 0.268 \n" \ + "*wallHeight: 0.42 \n" \ + "*wallThickness: 0.12 \n" \ + "*barThickness: 0.058 \n" \ + "*wallTaper: 0.95 \n" \ + "*gasketSize: 2.0 \n" \ + "*gasketDepth: 0.15 \n" \ + "*gasketThickness: 0.4 \n" \ + "*frameSize: 1.28 \n" \ + "*frameDepth: 0.01 \n" \ + "*frameThickness: 0.03 \n" \ + "*triangleSize: 0.045 \n" \ + "*cwFacets: 3 \n" \ + "*cwDiscFacets: 64 \n" \ + "*cwSpread: 0.5 \n" \ + "*cwLineWidth: 0.18 \n" \ + "*cwThickness: 0.15 \n" \ + "*cwCapSize: 0.4 \n" \ + "*text: CODEWORD\n" \ + "*speed: 1.0 \n" \ + "*mode: both" "\n" \ + ".background: #000000\n" \ + ".foreground: #00AA00\n" \ + ".cwForeground: #FCA816\n" \ + ".cwBackground: #943225\n" \ + "*cwFont: " CWFONT "\n" \ + "*geometry: =640x640\n" \ + +# if defined(HAVE_COCOA) || defined(HAVE_ANDROID) +# define CWFONT "Yearling 28, OCR A Std 24" +# else +# define CWFONT "-*-helvetica-medium-r-normal-*-*-240-*-*-*-*-*-*" +# endif + +# define free_logo 0 +# define release_logo 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef DXF_OUTPUT_HACK + +#ifdef DXF_OUTPUT_HACK /* When this is defined, instead of rendering + to the screen, we write a DXF CAD file to stdout. + This is a kludge of shocking magnitude... + Maybe there's some other way to intercept all + glVertex3f calls than with a #define? */ +# define unit_tube dxf_unit_tube +# define unit_cone dxf_unit_cone +# define tube_1 dxf_tube_1 +# define tube dxf_tube +# define cone dxf_cone +#endif /* DXF_OUTPUT_HACK */ + +#include "xlockmore.h" +#include "normals.h" +#include "tube.h" +#include "sphere.h" +#include "rotator.h" +#include "gltrackball.h" +#include "utf8wc.h" +#include "texfont.h" + +#ifdef USE_GL /* whole file */ + +#ifdef HAVE_JWZGLES +# include "dnapizza.h" +#else +# define HAVE_TESS +#endif + +typedef enum { + HELIX_IN, HELIX, HELIX_OUT, + PIZZA_IN, PIZZA, PIZZA_OUT, + HELIX_AND_PIZZA, +# ifdef CW + CODEWORD_IN, CODEWORD, CODEWORD_OUT, CODEWORD_BLANK +# endif +} glyph_mode; + +typedef struct { + Bool spinning_p; + GLfloat position; /* 0.0 - 1.0 */ + GLfloat position_eased; /* 0.0 - 1.0, eased in and out */ + GLfloat easement; /* portion of path that is eased. <= 0.5 */ + GLfloat speed; /* how far along the path (may be negative) */ + GLfloat probability; /* relative likelyhood to start spinning */ +} spinner; + +typedef struct { + GLXContext *glx_context; + + GLuint helix_list, helix_list_wire, helix_list_facetted; + GLuint pizza_list, pizza_list_wire, pizza_list_facetted; + GLuint gasket_list, gasket_list_wire; + GLuint frame_list, frame_list_wire; + int polys[7]; + + int wall_facets; + int bar_facets; + Bool clockwise; + GLfloat color[4]; + + GLfloat turns; + GLfloat turn_spacing; + GLfloat bar_spacing; + GLfloat wall_height; + GLfloat wall_thickness; + GLfloat bar_thickness; + GLfloat wall_taper; + + GLfloat gasket_size; + GLfloat gasket_depth; + GLfloat gasket_thickness; + + GLfloat frame_size; + GLfloat frame_depth; + GLfloat frame_thickness; + GLfloat triangle_size; + +# ifdef CW + int codeword_facets, codeword_disc_facets; + GLfloat codeword_spread, codeword_line_width, codeword_thickness; + GLfloat codeword_cap_size; + const char *codeword_text; + char *codeword_text_out; + int *codeword_text_points; + XYZ *codeword_path; + int codeword_path_npoints; + int codeword_nguides; + XYZ *codeword_guides; + GLfloat codeword_color[4], codeword_bg[4]; + texture_font_data *font; +# endif + +# ifdef DEBUG + GLfloat persp_off, pos_off; + texture_font_data *label_font; +# endif + + GLfloat speed; + glyph_mode mode; + glyph_mode anim_state; + GLfloat anim_ratio; + + spinner gasket_spinnerx, gasket_spinnery, gasket_spinnerz; + spinner scene_spinnerx, scene_spinnery; /* for DNA */ +# ifdef CW + rotator *scene_rot; /* for Codeword */ +# endif + spinner helix_spinnerz; + spinner pizza_spinnery, pizza_spinnerz; + spinner frame_spinner; + + trackball_state *trackball; + Bool button_down_p; + + int wire_overlay; /* frame countdown */ + +} logo_configuration; + +static logo_configuration *dcs = NULL; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-mode", ".mode", XrmoptionSepArg, 0 }, + { "-pizza", ".mode", XrmoptionNoArg, "pizza" }, + { "-helix", ".mode", XrmoptionNoArg, "helix" }, + { "-both", ".mode", XrmoptionNoArg, "both" }, +# ifdef CW + { "-codeword", ".mode", XrmoptionNoArg, "codeword" }, + { "-cw", ".mode", XrmoptionNoArg, "codeword" }, + { "-text", ".text", XrmoptionSepArg, 0 }, +# endif +}; + +ENTRYPOINT ModeSpecOpt logo_opts = {countof(opts), opts, 0, NULL, NULL}; + +#define PROBABILITY_SCALE 600 + + +#ifdef DXF_OUTPUT_HACK + +# define glBegin dxf_glBegin +# define glVertex3f dxf_glVertex3f +# define glVertex3dv dxf_glVertex3dv +# define glEnd dxf_glEnd +# define glVertexPointer dxf_glVertexPointer +# define glDrawArrays dxf_glDrawArrays + +static int dxf_type, dxf_point, dxf_point_total, dxf_layer, dxf_color; +static GLfloat dxf_quads[4*4]; + +static void +dxf_glBegin (int type) +{ + dxf_type = type; + dxf_point = 0; + dxf_point_total = 0; +} + +static void +dxf_glVertex3f (GLfloat ox, GLfloat oy, GLfloat oz) +{ + int i = 0; + GLfloat m[4*4]; + GLfloat x, y, z; + + /* Transform the point into modelview space. */ + glGetFloatv (GL_MODELVIEW_MATRIX, m); + x = ox * m[0] + oy * m[4] + oz * m[8] + m[12]; + y = ox * m[1] + oy * m[5] + oz * m[9] + m[13]; + z = ox * m[2] + oy * m[6] + oz * m[10] + m[14]; + + dxf_quads[dxf_point*3+0] = x; + dxf_quads[dxf_point*3+1] = y; + dxf_quads[dxf_point*3+2] = z; + dxf_point++; + dxf_point_total++; + + switch (dxf_type) { + case GL_QUADS: + if (dxf_point < 4) return; + + fprintf (stdout, "0\n3DFACE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color); + fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "12\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "22\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "32\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "13\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "23\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "33\n%.6f\n", dxf_quads[i++]); + dxf_point = 0; + break; + + case GL_QUAD_STRIP: + if (dxf_point < 4) return; + + fprintf (stdout, "0\n3DFACE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color); + fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "12\n%.6f\n", dxf_quads[i+3]); /* funky quad strip */ + fprintf (stdout, "22\n%.6f\n", dxf_quads[i+4]); /* vert order: 1243. */ + fprintf (stdout, "32\n%.6f\n", dxf_quads[i+5]); + + fprintf (stdout, "13\n%.6f\n", dxf_quads[i]); + fprintf (stdout, "23\n%.6f\n", dxf_quads[i+1]); + fprintf (stdout, "33\n%.6f\n", dxf_quads[i+2]); + i += 6; + + dxf_quads[0] = dxf_quads[6]; /* copy point 3 to pos 1 */ + dxf_quads[1] = dxf_quads[7]; + dxf_quads[2] = dxf_quads[8]; + dxf_quads[3] = dxf_quads[9]; /* copy point 4 to pos 2 */ + dxf_quads[4] = dxf_quads[10]; + dxf_quads[5] = dxf_quads[11]; + dxf_point = 2; /* leave those two points in queue */ + break; + + case GL_TRIANGLES: + case GL_TRIANGLE_FAN: + if (dxf_point < 3) return; + + fprintf (stdout, "0\n3DFACE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color); + fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "12\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "22\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "32\n%.6f\n", dxf_quads[i++]); + + i -= 3; + fprintf (stdout, "13\n%.6f\n", dxf_quads[i++]); /* dup pt 4 as pt 3. */ + fprintf (stdout, "23\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "33\n%.6f\n", dxf_quads[i++]); + + dxf_point = 0; + if (dxf_type == GL_TRIANGLE_FAN) + { + dxf_quads[3] = dxf_quads[6]; /* copy point 3 to point 2 */ + dxf_quads[4] = dxf_quads[7]; + dxf_quads[5] = dxf_quads[8]; + dxf_point = 2; /* leave two points in queue */ + } + break; + + case GL_TRIANGLE_STRIP: + if (dxf_point < 3) return; + + fprintf (stdout, "0\n3DFACE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color); + + fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "12\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "22\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "32\n%.6f\n", dxf_quads[i++]); + + i -= 3; + fprintf (stdout, "13\n%.6f\n", dxf_quads[i++]); /* dup pt 4 as pt 3. */ + fprintf (stdout, "23\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "33\n%.6f\n", dxf_quads[i++]); + + dxf_quads[0] = dxf_quads[3]; /* copy point 2 to pos 1 */ + dxf_quads[1] = dxf_quads[4]; + dxf_quads[2] = dxf_quads[5]; + dxf_quads[3] = dxf_quads[6]; /* copy point 3 to pos 2 */ + dxf_quads[4] = dxf_quads[7]; + dxf_quads[5] = dxf_quads[8]; + dxf_point = 2; /* leave those two points in queue */ + break; + + case GL_LINES: + case GL_LINE_STRIP: + case GL_LINE_LOOP: + + if (dxf_point_total == 1) + { + dxf_quads[6] = ox; + dxf_quads[7] = oy; + dxf_quads[8] = oz; + } + + if (dxf_point < 2) return; + + fprintf (stdout, "0\nLINE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color); + + fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]); + + fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]); + fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]); + + dxf_point = 0; + if (dxf_type != GL_LINES) + { + dxf_quads[0] = dxf_quads[3]; + dxf_quads[1] = dxf_quads[4]; + dxf_quads[2] = dxf_quads[5]; + dxf_point = 1; + } + break; + + default: + abort(); + break; + } +} + + +static void +dxf_glVertex3dv (const GLdouble *v) +{ + glVertex3f (v[0], v[1], v[2]); +} + + +static void +dxf_glEnd(void) +{ + if (dxf_type == GL_LINE_LOOP) /* close loop */ + glVertex3f (dxf_quads[6], dxf_quads[7], dxf_quads[8]); + dxf_type = -1; + dxf_point = 0; + dxf_point_total = 0; +} + + +static void +dxf_start (void) +{ + fprintf (stdout, "0\nSECTION\n2\nHEADER\n0\nENDSEC\n"); + fprintf (stdout, "0\nSECTION\n2\nENTITIES\n"); +} + +static void +dxf_end (void) +{ + fprintf (stdout, "0\nENDSEC\n0\nEOF\n"); + exit (0); +} + + +static const GLvoid *dxf_vp; +static GLsizei dxf_vp_size; +static GLsizei dxf_vp_stride; + +static void +dxf_glVertexPointer (GLint size, GLenum type, GLsizei stride, + const GLvoid *pointer) +{ + if (type != GL_FLOAT) abort(); + if (stride <= 0) abort(); + dxf_vp = pointer; + dxf_vp_size = size; + dxf_vp_stride = stride; +} + +static void +dxf_glDrawArrays (GLenum mode, GLint first, GLsizei count) +{ + int i; + unsigned char *a = (unsigned char *) dxf_vp; + dxf_glBegin (mode); + for (i = first; i < first+count; i++) + { + GLfloat *fa = (GLfloat *) a; + dxf_glVertex3f (fa[0], fa[1], fa[2]); + a += dxf_vp_stride; + } + dxf_glEnd(); +} + + +# define XYZ tube_XYZ /* avoid conflict with normals.h */ +# include "tube.c" /* Yes, I really am including a C file. */ +# undef XYZ +# define XYZ sphere_XYZ +# define unit_sphere unit_sphere_dxf +# define unit_dome unit_dome_dxf +# include "sphere.c" +# undef XYZ + +#endif /* DXF_OUTPUT_HACK */ + + + +/* Calculate the angle (in radians) between two vectors. + */ +static GLfloat +vector_angle (double ax, double ay, double az, + double bx, double by, double bz) +{ + double La = sqrt (ax*ax + ay*ay + az*az); + double Lb = sqrt (bx*bx + by*by + bz*bz); + double cc, angle; + + if (La == 0 || Lb == 0) return 0; + if (ax == bx && ay == by && az == bz) return 0; + + /* dot product of two vectors is defined as: + La * Lb * cos(angle between vectors) + and is also defined as: + ax*bx + ay*by + az*bz + so: + La * Lb * cos(angle) = ax*bx + ay*by + az*bz + cos(angle) = (ax*bx + ay*by + az*bz) / (La * Lb) + angle = acos ((ax*bx + ay*by + az*bz) / (La * Lb)); + */ + cc = (ax*bx + ay*by + az*bz) / (La * Lb); + if (cc > 1) cc = 1; /* avoid fp rounding error (1.000001 => sqrt error) */ + angle = acos (cc); + + return (angle); +} + + +# ifdef CW + +static void +normalize (XYZ *p) +{ + GLfloat d = sqrt (p->x*p->x + p->y*p->y + p->z*p->z); + if (d != 0) + { + p->x /= d; + p->y /= d; + p->z /= d; + } + else + { + p->x = p->y = p->z = 0; + } +} + + +static double +dot (const XYZ u, const XYZ v) +{ + return (u.x * v.x) + (u.y * v.y) + (u.z * v.z); +} + +#endif /* CW */ + + +/* Make the helix + */ + +static int +make_helix (logo_configuration *dc, int facetted, int wire) +{ + int polys = 0; + int wall_facets = dc->wall_facets / (facetted ? 10 : 1); + GLfloat th; + GLfloat max_th = M_PI * 2 * dc->turns; + GLfloat th_inc = M_PI * 2 / wall_facets; + + GLfloat x1=0, y1=0, x2=0, y2=0; + GLfloat x1b=0, y1b=0, x2b=0, y2b=0; + GLfloat z1=0, z2=0; + GLfloat h1=0, h2=0; + GLfloat h1off=0, h2off=0; + GLfloat z_inc = dc->turn_spacing / wall_facets; + + th = 0; + x1 = 1; + y1 = 0; + x1b = 1; + y1b = 0; + + z1 = -(dc->turn_spacing * dc->turns / 2); + + h1 = (dc->wall_taper > 0 ? 0 : dc->wall_height / 2); + h1off = (dc->wall_taper > 0 ? -dc->wall_height / 2 : 0); + + if (!dc->clockwise) + z1 = -z1, z_inc = -z_inc, h1off = -h1off; + + /* Leading end-cap + */ + if (!wire && h1 > 0) + { + GLfloat nx, ny; + glFrontFace(GL_CCW); + glBegin(GL_QUADS); + nx = cos (th + M_PI/2); + ny = sin (th + M_PI/2); + glNormal3f(nx, ny, 0); + glVertex3f( x1, y1, z1 - h1 + h1off); + glVertex3f( x1, y1, z1 + h1 + h1off); + glVertex3f(x1b, y1b, z1 + h1 + h1off); + glVertex3f(x1b, y1b, z1 - h1 + h1off); + polys++; + glEnd(); + } + + while (th + th_inc <= max_th) + { + GLfloat thick = dc->wall_thickness; + + th += th_inc; + + x2 = cos (th); + y2 = sin (th); + z2 = z1 + z_inc; + + h2 = h1; + h2off = h1off; + + if (dc->wall_taper > 0) + { + h2off = 0; + if (th < dc->wall_taper) + { + h2 = dc->wall_height/2 * cos (M_PI / 2 + * (1 - (th / dc->wall_taper))); + if (dc->clockwise) + h2off = h2 - dc->wall_height/2; + else + h2off = dc->wall_height/2 - h2; + + if (th + th_inc <= 0) + thick = 0; + else + thick *= cos (M_PI / 2 * (1 - (th / dc->wall_taper))); + } + else if (th >= max_th - dc->wall_taper) + { + if (th + th_inc > max_th) /* edge case: always come to a point */ + h2 = 0; + else + h2 = dc->wall_height/2 * cos (M_PI / 2 + * (1 - ((max_th - th) + / dc->wall_taper))); + if (dc->clockwise) + h2off = dc->wall_height/2 - h2; + else + h2off = h2 - dc->wall_height/2; + + if (th + th_inc > max_th) + thick = 0; + else + thick *= cos(M_PI / 2 * (1 - ((max_th - th)/dc->wall_taper))); + } + } + + x2b = x2 * (1 - thick); + y2b = y2 * (1 - thick); + + /* outer face + */ + glFrontFace(GL_CW); + glBegin(wire ? GL_LINES : GL_QUADS); + glNormal3f(x1, y1, 0); + glVertex3f(x1, y1, z1 - h1 + h1off); + glVertex3f(x1, y1, z1 + h1 + h1off); + glNormal3f(x2, y2, 0); + glVertex3f(x2, y2, z2 + h2 + h2off); + glVertex3f(x2, y2, z2 - h2 + h2off); + polys++; + glEnd(); + + /* inner face + */ + glFrontFace(GL_CCW); + glBegin(wire ? GL_LINES : GL_QUADS); + glNormal3f(-x1b, -y1b, 0); + glVertex3f( x1b, y1b, z1 - h1 + h1off); + glVertex3f( x1b, y1b, z1 + h1 + h1off); + glNormal3f(-x2b, -y2b, 0); + glVertex3f( x2b, y2b, z2 + h2 + h2off); + glVertex3f( x2b, y2b, z2 - h2 + h2off); + polys++; + glEnd(); + + /* top face + */ + glFrontFace(GL_CCW); + /* glNormal3f(0, 0, 1);*/ + do_normal (x2, y2, z2 + h2 + h2off, + x2b, y2b, z2 + h2 + h2off, + x1b, y1b, z1 + h1 + h1off); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f( x2, y2, z2 + h2 + h2off); + glVertex3f( x2b, y2b, z2 + h2 + h2off); + glVertex3f( x1b, y1b, z1 + h1 + h1off); + glVertex3f( x1, y1, z1 + h1 + h1off); + polys++; + glEnd(); + + /* bottom face + */ + glFrontFace(GL_CCW); + do_normal ( x1, y1, z1 - h1 + h1off, + x1b, y1b, z1 - h1 + h1off, + x2b, y2b, z2 - h2 + h2off); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, 0, -1); + glVertex3f( x1, y1, z1 - h1 + h1off); + glVertex3f( x1b, y1b, z1 - h1 + h1off); + glVertex3f( x2b, y2b, z2 - h2 + h2off); + glVertex3f( x2, y2, z2 - h2 + h2off); + polys++; + glEnd(); + + x1 = x2; + y1 = y2; + x1b = x2b; + y1b = y2b; + z1 += z_inc; + h1 = h2; + h1off = h2off; + } + + /* Trailing end-cap + */ + if (!wire && h2 > 0) + { + GLfloat nx, ny; + glFrontFace(GL_CW); + glBegin(GL_QUADS); + nx = cos (th + M_PI/2); + ny = sin (th + M_PI/2); + glNormal3f(nx, ny, 0); + glVertex3f(x2, y2, z1 - h2 + h2off); + glVertex3f(x2, y2, z1 + h2 + h2off); + glVertex3f(x2b, y2b, z1 + h2 + h2off); + glVertex3f(x2b, y2b, z1 - h2 + h2off); + polys++; + glEnd(); + } + return polys; +} + + +static int +make_ladder (logo_configuration *dc, int facetted, int wire) +{ + int polys = 0; + GLfloat th; + GLfloat max_th = dc->turns * M_PI * 2; + GLfloat max_z = dc->turns * dc->turn_spacing; + GLfloat z_inc = dc->bar_spacing; + GLfloat th_inc = M_PI * 2 * (dc->bar_spacing / dc->turn_spacing); + GLfloat x, y, z; + + /* skip forward to center the bars in the helix... */ + int i; + GLfloat usable_th = max_th - dc->wall_taper; + GLfloat usable_z = max_z / (max_th / usable_th); + int nbars = usable_z / dc->bar_spacing; + GLfloat used_z, pad_z, pad_ratio; + + if (! (nbars & 1)) nbars--; /* always an odd number of bars */ + + used_z = (nbars - 1) * dc->bar_spacing; + pad_z = max_z - used_z; + pad_ratio = pad_z / max_z; + + th = (max_th * pad_ratio/2); + z = -(max_z / 2) + (max_z * pad_ratio/2); + + /* ##### WHYYYYYY */ + /* The image is not reflected across line y = -x and I don't know why. */ + th += M_PI * -0.035; + z -= 0.08; + + if (!dc->clockwise) + z = -z, z_inc = -z_inc; + + glFrontFace(GL_CCW); + for (i = 0; i < nbars; i++) + { + int facets = dc->bar_facets / (facetted ? 14 : 1); + if (facets <= 3) facets = 3; + x = cos (th) * (1 - dc->wall_thickness); + y = sin (th) * (1 - dc->wall_thickness); + polys += tube ( x, y, z, + -x, -y, z, + dc->bar_thickness, 0, facets, + True, True, wire); + z += z_inc; + th += th_inc; + } + return polys; +} + + + +/* Make the gasket + */ + + +static int +make_gasket (logo_configuration *dc, int wire) +{ + int polys = 0; + int i; + int points_size; + int npoints = 0; + int nctrls = 0; + int res = 360/8; + GLfloat d2r = M_PI / 180; + + GLfloat thick2 = (dc->gasket_thickness / dc->gasket_size) / 2; + + GLfloat *pointsx0, *pointsy0, *pointsx1, *pointsy1, *normals; + + GLfloat r0 = 0.750; /* 395 */ + GLfloat r1a = 0.825; /* bottom of wall below upper left hole */ + GLfloat r1b = 0.867; /* center of upper left hole */ + GLfloat r1c = 0.909; /* top of wall above hole */ + GLfloat r1 = 0.916; /* 471 */ + GLfloat r2 = 0.963; /* 490 */ + GLfloat r3 = 0.960; /* 499 */ + GLfloat r4 = 1.000; /* 507 */ + GLfloat r5 = 1.080; /* 553 */ + + GLfloat ctrl_r[100], ctrl_th[100]; + + glPushMatrix(); + +# ifdef DXF_OUTPUT_HACK + if (! wire) res *= 8; +# endif + +# define POINT(r,th) \ + ctrl_r [nctrls] = r, \ + ctrl_th[nctrls] = (th * d2r), \ + nctrls++ + + POINT (0.829, 0); /* top indentation, right half */ + POINT (0.831, 0.85); + POINT (0.835, 1.81); + POINT (0.841, 2.65); + POINT (0.851, 3.30); + POINT (0.862, 3.81); + POINT (0.872, 3.95); + + POINT (r4, 4.0); /* moving clockwise... */ + POINT (r4, 47.0); + POINT (r1, 47.0); + POINT (r1, 53.0); + POINT (r2, 55.5); + POINT (r2, 72.3); + POINT (r1, 74.0); + POINT (r1, 100.0); + POINT (r3, 102.5); + POINT (r3, 132.0); + POINT (r1, 133.0); + + POINT (r1, 180.7); + POINT (r2, 183.6); + POINT (r2, 210.0); + POINT (r1, 212.0); + POINT (r1, 223.2); + POINT (r5, 223.2); + POINT (r5, 225.0); + POINT (r4, 225.0); + + POINT (r4, 316.8); /* upper left indentation */ + POINT (0.990, 316.87); + POINT (0.880, 317.21); + POINT (0.872, 317.45); + POINT (0.869, 317.80); + POINT (0.867, 318.10); + + POINT (0.867, 318.85); + POINT (0.869, 319.15); + POINT (0.872, 319.50); + POINT (0.880, 319.74); + POINT (0.990, 320.08); + + POINT (r4, 338.0); + if (! wire) + { + POINT (r1a, 338.0); /* cut-out disc */ + POINT (r1a, 344.0); + } + POINT (r4, 344.0); + POINT (r4, 356.0); + + POINT (0.872, 356.05); /* top indentation, left half */ + POINT (0.862, 356.19); + POINT (0.851, 356.70); + POINT (0.841, 357.35); + POINT (0.835, 358.19); + POINT (0.831, 359.15); + POINT (0.829, 360); +# undef POINT + + points_size = res + (nctrls * 2); + pointsx0 = (GLfloat *) malloc (points_size * sizeof(GLfloat)); + pointsy0 = (GLfloat *) malloc (points_size * sizeof(GLfloat)); + pointsx1 = (GLfloat *) malloc (points_size * sizeof(GLfloat)); + pointsy1 = (GLfloat *) malloc (points_size * sizeof(GLfloat)); + normals = (GLfloat *) malloc (points_size * sizeof(GLfloat) * 2); + + npoints = 0; + for (i = 1; i < nctrls; i++) + { + GLfloat from_r = ctrl_r [i-1]; + GLfloat from_th = ctrl_th[i-1]; + GLfloat to_r = ctrl_r [i]; + GLfloat to_th = ctrl_th[i]; + + GLfloat step = 2*M_PI / res; + int nsteps = 1 + ((to_th - from_th) / step); + int j; + + for (j = 0; j < nsteps + (i == nctrls-1); j++) + { + GLfloat r = from_r + (j * (to_r - from_r) / nsteps); + GLfloat th = from_th + (j * (to_th - from_th) / nsteps); + + GLfloat cth = cos(th) * dc->gasket_size; + GLfloat sth = sin(th) * dc->gasket_size; + + pointsx0[npoints] = r0 * cth; /* inner ring */ + pointsy0[npoints] = r0 * sth; + pointsx1[npoints] = r * cth; /* outer ring */ + pointsy1[npoints] = r * sth; + npoints++; + + if (npoints >= points_size) abort(); + } + } + + /* normals for the outer ring */ + for (i = 1; i < npoints; i++) + { + XYZ a, b, c, n; + a.x = pointsx1[i-1]; + a.y = pointsy1[i-1]; + a.z = 0; + b.x = pointsx1[i]; + b.y = pointsy1[i]; + b.z = 0; + c = b; + c.z = 1; + n = calc_normal (a, b, c); + normals[(i-1)*2 ] = n.x; + normals[(i-1)*2+1] = n.y; + } + + glRotatef(-90, 0, 1, 0); + glRotatef(180, 0, 0, 1); + + if (wire) + { + GLfloat z; + for (z = -thick2; z <= thick2; z += thick2*2) + { +# if 1 + /* inside edge */ + glBegin (GL_LINE_LOOP); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx0[i], pointsy0[i], z); + polys += npoints; + glEnd(); + + /* outside edge */ + glBegin (GL_LINE_LOOP); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx1[i], pointsy1[i], z); + polys += npoints; + glEnd(); +# else + for (i = 1; i < npoints; i++) + { + glBegin (GL_LINE_STRIP); + glVertex3f (pointsx0[i-1], pointsy0[i-1], z); + glVertex3f (pointsx0[i ], pointsy0[i ], z); + glVertex3f (pointsx1[i ], pointsy1[i ], z); + glVertex3f (pointsx1[i-1], pointsy1[i-1], z); + glEnd(); + } + polys += npoints; +# endif + } +#if 1 + glBegin (GL_LINES); + for (i = 0; i < npoints; i++) + { + /* inside rim */ + glVertex3f (pointsx0[i], pointsy0[i], -thick2); + glVertex3f (pointsx0[i], pointsy0[i], thick2); + /* outside rim */ + glVertex3f (pointsx1[i], pointsy1[i], -thick2); + glVertex3f (pointsx1[i], pointsy1[i], thick2); + } + polys += npoints; + glEnd(); +#endif + } + else + { + /* top */ + glFrontFace(GL_CW); + glNormal3f(0, 0, -1); + glBegin (GL_QUAD_STRIP); + for (i = 0; i < npoints; i++) + { + glVertex3f (pointsx0[i], pointsy0[i], -thick2); + glVertex3f (pointsx1[i], pointsy1[i], -thick2); + } + polys += npoints; + glEnd(); + + /* bottom */ + glFrontFace(GL_CCW); + glNormal3f(0, 0, 1); + glBegin (GL_QUAD_STRIP); + for (i = 0; i < npoints; i++) + { + glVertex3f (pointsx0[i], pointsy0[i], thick2); + glVertex3f (pointsx1[i], pointsy1[i], thick2); + } + polys += npoints; + glEnd(); + + /* inside edge */ + glFrontFace(GL_CW); + glBegin (GL_QUAD_STRIP); + for (i = 0; i < npoints; i++) + { + glNormal3f (-pointsx0[i], -pointsy0[i], 0); + glVertex3f ( pointsx0[i], pointsy0[i], thick2); + glVertex3f ( pointsx0[i], pointsy0[i], -thick2); + } + polys += npoints; + glEnd(); + + /* outside edge */ + glFrontFace(GL_CCW); + glBegin (GL_QUADS); + { + for (i = 0; i < npoints-1; i++) + { + int ia = (i == 0 ? npoints-2 : i-1); + int iz = (i == npoints-2 ? 0 : i+1); + GLfloat x = pointsx1[i]; + GLfloat y = pointsy1[i]; + GLfloat xz = pointsx1[iz]; + GLfloat yz = pointsy1[iz]; + + GLfloat nxa = normals[ia*2]; /* normal of [i-1 - i] face */ + GLfloat nya = normals[ia*2+1]; + GLfloat nx = normals[i*2]; /* normal of [i - i+1] face */ + GLfloat ny = normals[i*2+1]; + GLfloat nxz = normals[iz*2]; /* normal of [i+1 - i+2] face */ + GLfloat nyz = normals[iz*2+1]; + + GLfloat anglea = vector_angle (nx, ny, 0, nxa, nya, 0); + GLfloat anglez = vector_angle (nx, ny, 0, nxz, nyz, 0); + GLfloat pointy = 0.6; + + if (anglea > pointy) + { + glNormal3f (nx, ny, 0); + glVertex3f (x, y, thick2); + glVertex3f (x, y, -thick2); + } + else + { + glNormal3f ((nxa + nx) / 2, (nya + ny) / 2, 0); + glVertex3f (x, y, thick2); + glVertex3f (x, y, -thick2); + } + + if (anglez > pointy) + { + glNormal3f (nx, ny, 0); + glVertex3f (xz, yz, -thick2); + glVertex3f (xz, yz, thick2); + } + else + { + glNormal3f ((nx + nxz) / 2, (ny + nyz) / 2, 0); + glVertex3f (xz, yz, -thick2); + glVertex3f (xz, yz, thick2); + } + } + polys += npoints; + } + glEnd(); + } + + /* Fill in the upper left hole... + */ + { + GLfloat th; + npoints = 0; + + th = 338.0 * d2r; + pointsx0[npoints] = r1c * cos(th) * dc->gasket_size; + pointsy0[npoints] = r1c * sin(th) * dc->gasket_size; + npoints++; + pointsx0[npoints] = r4 * cos(th) * dc->gasket_size; + pointsy0[npoints] = r4 * sin(th) * dc->gasket_size; + npoints++; + + th = 344.0 * d2r; + pointsx0[npoints] = r1c * cos(th) * dc->gasket_size; + pointsy0[npoints] = r1c * sin(th) * dc->gasket_size; + npoints++; + pointsx0[npoints] = r4 * cos(th) * dc->gasket_size; + pointsy0[npoints] = r4 * sin(th) * dc->gasket_size; + + if (! wire) + { + /* front wall */ + glNormal3f (0, 0, -1); + glFrontFace(GL_CW); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (pointsx0[0], pointsy0[0], -thick2); + glVertex3f (pointsx0[1], pointsy0[1], -thick2); + glVertex3f (pointsx0[3], pointsy0[3], -thick2); + glVertex3f (pointsx0[2], pointsy0[2], -thick2); + glEnd(); + polys++; + + /* back wall */ + glNormal3f (0, 0, 1); + glFrontFace(GL_CCW); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (pointsx0[0], pointsy0[0], thick2); + glVertex3f (pointsx0[1], pointsy0[1], thick2); + glVertex3f (pointsx0[3], pointsy0[3], thick2); + glVertex3f (pointsx0[2], pointsy0[2], thick2); + glEnd(); + polys++; + } + + /* top wall */ + glFrontFace(GL_CW); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f (pointsx0[1], pointsy0[1], 0); + glVertex3f (pointsx0[1], pointsy0[1], thick2); + glNormal3f (pointsx0[3], pointsy0[3], 0); + glVertex3f (pointsx0[3], pointsy0[3], thick2); + glVertex3f (pointsx0[3], pointsy0[3], -thick2); + glNormal3f (pointsx0[1], pointsy0[1], 0); + glVertex3f (pointsx0[1], pointsy0[1], -thick2); + glEnd(); + polys++; + + + /* Now make a donut. + */ + { + int nsteps = (wire ? 12 : 64); + GLfloat r0 = 0.04; + GLfloat r1 = 0.070; + GLfloat th, cth, sth; + + glPushMatrix (); + + th = ((339.0 + 343.0) / 2) * d2r; + + glTranslatef (r1b * cos(th) * dc->gasket_size, + r1b * sin(th) * dc->gasket_size, + 0); + + npoints = 0; + for (i = 0; i < nsteps; i++) + { + th = 2 * M_PI * i / nsteps; + cth = cos (th) * dc->gasket_size; + sth = sin (th) * dc->gasket_size; + pointsx0[npoints] = r0 * cth; + pointsy0[npoints] = r0 * sth; + pointsx1[npoints] = r1 * cth; + pointsy1[npoints] = r1 * sth; + npoints++; + polys++; + } + + pointsx0[npoints] = pointsx0[0]; + pointsy0[npoints] = pointsy0[0]; + pointsx1[npoints] = pointsx1[0]; + pointsy1[npoints] = pointsy1[0]; + npoints++; + + if (wire) + { + glBegin (GL_LINE_LOOP); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx0[i], pointsy0[i], -thick2); + polys += npoints; + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx0[i], pointsy0[i], thick2); + polys += npoints; + glEnd(); +# if 0 + glBegin (GL_LINE_LOOP); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx1[i], pointsy1[i], -thick2); + polys += npoints; + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx1[i], pointsy1[i], thick2); + polys += npoints; + glEnd(); +# endif + } + else + { + /* top */ + glFrontFace(GL_CW); + glNormal3f(0, 0, -1); + glBegin (GL_QUAD_STRIP); + for (i = 0; i < npoints; i++) + { + glVertex3f (pointsx0[i], pointsy0[i], -thick2); + glVertex3f (pointsx1[i], pointsy1[i], -thick2); + } + polys += npoints; + glEnd(); + + /* bottom */ + glFrontFace(GL_CCW); + glNormal3f(0, 0, 1); + glBegin (GL_QUAD_STRIP); + for (i = 0; i < npoints; i++) + { + glVertex3f (pointsx0[i], pointsy0[i], thick2); + glVertex3f (pointsx1[i], pointsy1[i], thick2); + } + polys += npoints; + glEnd(); + } + + /* inside edge */ + glFrontFace(GL_CW); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < npoints; i++) + { + glNormal3f (-pointsx0[i], -pointsy0[i], 0); + glVertex3f ( pointsx0[i], pointsy0[i], thick2); + glVertex3f ( pointsx0[i], pointsy0[i], -thick2); + } + polys += npoints; + glEnd(); + + glPopMatrix(); + } + } + + + /* Attach the bottom-right dingus... + */ + { + GLfloat w = 0.05; + GLfloat h = 0.19; + GLfloat th; + + glRotatef (49.5, 0, 0, 1); + glScalef (dc->gasket_size, dc->gasket_size, 1); + glTranslatef (0, (r0+r1)/2, 0); + + /* buried box */ + if (! wire) + { + glFrontFace(GL_CCW); + glBegin (wire ? GL_LINE_STRIP : GL_QUADS); + glNormal3f (0, 0, -1); + glVertex3f (-w/2, -h/2, -thick2); glVertex3f (-w/2, h/2, -thick2); + glVertex3f ( w/2, h/2, -thick2); glVertex3f ( w/2, -h/2, -thick2); + glNormal3f (1, 0, 0); + glVertex3f ( w/2, -h/2, -thick2); glVertex3f ( w/2, h/2, -thick2); + glVertex3f ( w/2, h/2, thick2); glVertex3f ( w/2, -h/2, thick2); + glNormal3f (0, 0, 1); + glVertex3f ( w/2, -h/2, thick2); glVertex3f ( w/2, h/2, thick2); + glVertex3f (-w/2, h/2, thick2); glVertex3f (-w/2, -h/2, thick2); + glNormal3f (-1, 0, 0); + glVertex3f (-w/2, -h/2, thick2); glVertex3f (-w/2, h/2, thick2); + glVertex3f (-w/2, h/2, -thick2); glVertex3f (-w/2, -h/2, -thick2); + polys++; + glEnd(); + } + + npoints = 0; + for (th = (wire ? 0 : -0.1); + th <= M_PI + 0.1; + th += (M_PI / (wire ? 5 : 32))) + { + pointsx0[npoints] = w/2 * cos(th); + pointsy0[npoints] = w/2 * sin(th); + npoints++; + polys++; + } + + /* front inside curve */ + glNormal3f (0, 0, -1); + glFrontFace(GL_CW); + glBegin (wire ? GL_LINE_STRIP : GL_TRIANGLE_FAN); + if (! wire) glVertex3f (0, h/2, -thick2); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx0[i], h/2 + pointsy0[i], -thick2); + polys += npoints; + glEnd(); + + /* front outside curve */ + glFrontFace(GL_CCW); + glBegin (wire ? GL_LINE_STRIP : GL_TRIANGLE_FAN); + if (! wire) glVertex3f (0, -h/2, -thick2); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx0[i], -h/2 - pointsy0[i], -thick2); + polys += npoints; + glEnd(); + + /* back inside curve */ + glNormal3f (0, 0, 1); + glFrontFace(GL_CCW); + glBegin (wire ? GL_LINE_STRIP : GL_TRIANGLE_FAN); + if (! wire) glVertex3f (0, h/2, thick2); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx0[i], h/2 + pointsy0[i], thick2); + polys += npoints; + glEnd(); + + /* back outside curve */ + glFrontFace(GL_CW); + glBegin (wire ? GL_LINE_STRIP : GL_TRIANGLE_FAN); + if (! wire) glVertex3f (0, -h/2, thick2); + for (i = 0; i < npoints; i++) + glVertex3f (pointsx0[i], -h/2 - pointsy0[i], thick2); + polys += npoints; + glEnd(); + + /* inside curve */ + glFrontFace(GL_CCW); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < npoints; i++) + { + glNormal3f (pointsx0[i], pointsy0[i], 0); + glVertex3f (pointsx0[i], h/2 + pointsy0[i], thick2); + glVertex3f (pointsx0[i], h/2 + pointsy0[i], -thick2); + } + polys += npoints; + glEnd(); + + /* outside curve */ + glFrontFace(GL_CW); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < npoints; i++) + { + glNormal3f (pointsx0[i], -pointsy0[i], 0); + glVertex3f (pointsx0[i], -h/2 - pointsy0[i], thick2); + glVertex3f (pointsx0[i], -h/2 - pointsy0[i], -thick2); + } + polys += npoints; + glEnd(); + } + + free (pointsx0); + free (pointsy0); + free (pointsx1); + free (pointsy1); + free (normals); + + glPopMatrix(); + return polys; +} + +static int +make_frame (logo_configuration *dc, int wire) +{ + int polys = 0; + int i, j; + GLfloat x[20], y[20]; + GLfloat corner_cut = 0.5; + + glPushMatrix(); + glRotatef (90, 0, 1, 0); + glScalef (4 * dc->frame_size, + 4 * dc->frame_size, + 4 * dc->frame_size); + + x[0] = -dc->frame_thickness; + x[1] = -dc->frame_thickness * corner_cut; + x[2] = 0; + x[3] = 0.5 - dc->triangle_size; + x[4] = 0.5; + x[5] = 0.5 + dc->triangle_size; + x[6] = 1; + x[7] = 1 + dc->frame_thickness * corner_cut; + x[8] = 1 + dc->frame_thickness; + + y[0] = -dc->frame_thickness; + y[1] = -dc->frame_thickness * corner_cut; + y[2] = 0; + y[3] = dc->triangle_size; + + /* front and back + */ + glTranslatef (-0.5, -0.5, dc->frame_depth / 4); + if (! wire) + for (j = 0; j <= 1; j++) + { + if (j) glTranslatef (0, 0, -dc->frame_depth / 2); + glFrontFace (j ? GL_CCW : GL_CW); + for (i = 0; i < 4; i++) + { + glNormal3f (0, 0, (j ? -1 : 1)); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + glVertex3f (x[0], y[1], 0); glVertex3f (x[0], y[2], 0); + glVertex3f (x[1], y[0], 0); glVertex3f (x[1], y[2], 0); + glVertex3f (x[3], y[0], 0); glVertex3f (x[3], y[2], 0); + glVertex3f (x[4], y[0], 0); glVertex3f (x[4], y[3], 0); + glVertex3f (x[5], y[0], 0); glVertex3f (x[5], y[2], 0); + glVertex3f (x[7], y[0], 0); glVertex3f (x[7], y[2], 0); + glVertex3f (x[8], y[1], 0); glVertex3f (x[8], y[2], 0); + polys += 6; + glEnd (); + glTranslatef (0.5, 0.5, 0); + glRotatef (90, 0, 0, 1); + glTranslatef (-0.5, -0.5, 0); + } + } + + /* ledges + */ + glFrontFace (GL_CCW); + for (i = 0; i < 4; i++) + { + glNormal3f (0, 1, 0); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + glVertex3f (x[2], y[2], 0); glVertex3f (x[2], y[2], dc->frame_depth/2); + glVertex3f (x[3], y[2], 0); glVertex3f (x[3], y[2], dc->frame_depth/2); + glVertex3f (x[4], y[3], 0); glVertex3f (x[4], y[3], dc->frame_depth/2); + glVertex3f (x[5], y[2], 0); glVertex3f (x[5], y[2], dc->frame_depth/2); + glVertex3f (x[6], y[2], 0); glVertex3f (x[6], y[2], dc->frame_depth/2); + polys += 4; + glEnd (); + + glNormal3f (0, -1, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (x[7], y[0], 0); + glVertex3f (x[7], y[0], dc->frame_depth/2); + glVertex3f (x[1], y[0], dc->frame_depth/2); + glVertex3f (x[1], y[0], 0); + polys++; + glEnd (); + + glNormal3f (1, -1, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (x[8], y[1], 0); + glVertex3f (x[8], y[1], dc->frame_depth/2); + glVertex3f (x[7], y[0], dc->frame_depth/2); + glVertex3f (x[7], y[0], 0); + polys++; + glEnd (); + + if (wire) + { + glNormal3f (0, 1, 0); + for (j = 0; j <= 1; j++) + { + glBegin (GL_LINE_STRIP); + glVertex3f (x[2], y[2], j*dc->frame_depth/2); + glVertex3f (x[3], y[2], j*dc->frame_depth/2); + glVertex3f (x[4], y[3], j*dc->frame_depth/2); + glVertex3f (x[5], y[2], j*dc->frame_depth/2); + glVertex3f (x[6], y[2], j*dc->frame_depth/2); + polys += 4; + glEnd (); + } + } + + glTranslatef (0.5, 0.5, 0); + glRotatef (90, 0, 0, 1); + glTranslatef (-0.5, -0.5, 0); + } + + glPopMatrix(); + return polys; +} + + +/* Make some pizza. + */ + +#ifdef HAVE_TESS + +typedef struct { + GLdouble *points; + int i; +} tess_out; + + +static void +tess_error_cb (GLenum errorCode) +{ + fprintf (stderr, "%s: tesselation error: %s\n", + progname, gluErrorString(errorCode)); + exit (0); +} + +static void +tess_combine_cb (GLdouble coords[3], GLdouble *d[4], GLfloat w[4], + GLdouble **data_out) +{ + GLdouble *new = (GLdouble *) malloc (3 * sizeof(*new)); + new[0] = coords[0]; + new[1] = coords[1]; + new[2] = coords[2]; + *data_out = new; +} + + +#if 0 +static void +tess_vertex_cb (void *vertex_data, void *closure) +{ + tess_out *to = (tess_out *) closure; + GLdouble *v = (GLdouble *) vertex_data; + to->points[to->i++] = v[0]; + to->points[to->i++] = v[1]; + to->points[to->i++] = v[2]; +} +#endif + +static void +tess_begin_cb (GLenum which) +{ + glBegin(which); +} + +static void +tess_end_cb (void) +{ + glEnd(); +} + +#endif /* HAVE_TESS */ + + +static int +make_pizza (logo_configuration *dc, int facetted, int wire) +{ + int polys = 0; + int topfaces = (facetted ? 48 : 120); + int discfaces = (facetted ? 12 : 120); + int npoints = topfaces * 2 + 100; + GLdouble *points = (GLdouble *) calloc (npoints * 3, sizeof(GLdouble)); + int nholes = 3; + GLdouble *holes = (GLdouble *) calloc (topfaces*nholes*3, sizeof(GLdouble)); + + GLfloat step = M_PI * 2 / 6 / topfaces; + GLfloat thick2 = (dc->gasket_thickness / dc->gasket_size) / 4; + GLfloat th, x, y, s; + int i, j, k; + int endpoints; + +# ifdef HAVE_TESS + tess_out TO, *to = &TO; + GLUtesselator *tess = gluNewTess(); + + to->points = (GLdouble *) calloc (topfaces * 20, sizeof(GLdouble)); + to->i = 0; + +# ifndef _GLUfuncptr +# define _GLUfuncptr void(*)(void) +# endif + + gluTessCallback(tess,GLU_TESS_BEGIN, (_GLUfuncptr)tess_begin_cb); + gluTessCallback(tess,GLU_TESS_VERTEX, (_GLUfuncptr)glVertex3dv); + gluTessCallback(tess,GLU_TESS_END, (_GLUfuncptr)tess_end_cb); + gluTessCallback(tess,GLU_TESS_COMBINE, (_GLUfuncptr)tess_combine_cb); + gluTessCallback(tess,GLU_TESS_ERROR, (_GLUfuncptr)tess_error_cb); + + gluTessProperty (tess, GLU_TESS_BOUNDARY_ONLY, wire); + gluTessProperty (tess,GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD); + +# endif /* HAVE_TESS */ + + glPushMatrix(); + + s = 1.9; + glRotatef (180, 0, 0, 1); + glScalef (s, s, s); + glRotatef (90, 0, 1, 0); + glTranslatef (-0.53, 0, 0); + glRotatef (-30, 0, 0, 1); + + /* Compute the wedge */ + th = 0; + j = 0; + + /* Edge 1 */ + { + GLfloat edge[] = { + 0.000, 0.000, + 0.000, 0.210, + 0.042, 0.230, + 0.042, 0.616, + 0.000, 0.641, + }; + for (i = 0; i < countof(edge)/2; i++) + { + points[j++] = edge[i*2+1]; + points[j++] = edge[i*2]; + points[j++] = 0; + } + } + + s = 0.798; /* radius of end of slice, before crust gap */ + for (i = 0; i < topfaces; i++) + { + points[j++] = cos(th) * s; + points[j++] = sin(th) * s; + points[j++] = 0; + th += step; + } + + /* Edge 2 */ + { + GLfloat edge[] = { + 0.613, 0.353, + 0.572, 0.376, + 0.455, 0.309, + 0.452, 0.260, + 0.332, 0.192, + 0.293, 0.216, + 0.178, 0.149, + 0.178, 0.102, + }; + for (i = 0; i < countof(edge)/2; i++) + { + points[j++] = edge[i*2+1]; + points[j++] = edge[i*2]; + points[j++] = 0; + } + endpoints = j/3; + } + + + /* Draw the rim of the slice */ + glBegin (wire ? GL_LINES : GL_QUADS); + x = points[0]; + y = points[1]; + for (i = (wire ? 0 : 1); i < endpoints; i++) + { + GLdouble *p = points + (i*3); + + do_normal (p[0], p[1], -thick2, + p[0], p[1], thick2, + x, y, thick2); + if (!wire) + { + glVertex3f (x, y, -thick2); + glVertex3f (x, y, thick2); + } + glVertex3f (p[0], p[1], thick2); + glVertex3f (p[0], p[1], -thick2); + x = p[0]; + y = p[1]; + polys++; + } + + do_normal (points[0], points[1], -thick2, + points[0], points[1], thick2, + x, y, thick2); + glVertex3f (x, y, -thick2); + glVertex3f (x, y, thick2); + glVertex3f (points[0], points[1], thick2); + glVertex3f (points[0], points[1], -thick2); + polys++; + glEnd(); + +# ifndef HAVE_TESS + if (wire) + { + /* Outline of slice */ + glBegin (GL_LINE_LOOP); + for (i = 0; i < endpoints; i++) + glVertex3f (points[i*3], points[i*3+1], -thick2); + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < endpoints; i++) + glVertex3f (points[i*3], points[i*3+1], thick2); + glEnd(); + } +# endif /* HAVE_TESS */ + + /* Compute the holes */ + step = M_PI * 2 / discfaces; + for (k = 0; k < nholes; k++) + { + GLdouble *p = holes + (discfaces * 3 * k); + th = 0; + j = 0; + switch (k) { + case 0: x = 0.34; y = 0.17; s = 0.05; break; + case 1: x = 0.54; y = 0.17; s = 0.06; break; + case 2: x = 0.55; y = 0.36; s = 0.06; break; + default: abort(); break; + } + for (i = 0; i < discfaces; i++) + { + p[j++] = x + cos(M_PI*2 - th) * s; + p[j++] = y + sin(M_PI*2 - th) * s; + p[j++] = 0; + th += step; + } + } + + + /* Draw the inside rim of the holes */ + for (k = 0; k < nholes; k++) + { + GLdouble *p = holes + (discfaces * 3 * k); + + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < discfaces; i++) + { + GLdouble *p2 = p + (i*3); + if (i > 0) + do_normal (p2[0], p2[1], -thick2, + p2[0], p2[1], thick2, + p2[-3], p2[-2], thick2); + glVertex3f (p2[0], p2[1], -thick2); + glVertex3f (p2[0], p2[1], thick2); + polys++; + } + glVertex3f (p[0], p[1], -thick2); + glVertex3f (p[0], p[1], thick2); + polys++; + glEnd(); +# ifndef HAVE_TESS + if (wire) + { + /* Outline of holes */ + glBegin (GL_LINE_LOOP); + for (i = 0; i < discfaces; i++) + glVertex3f (p[i*3], p[i*3+1], -thick2); + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < discfaces; i++) + glVertex3f (p[i*3], p[i*3+1], thick2); + glEnd(); + } +# endif /* !HAVE_TESS */ + } + +# ifdef HAVE_TESS + glTranslatef (0, 0, -thick2); + for (y = 0; y <= 1; y++) + { + if (y) glTranslatef (0, 0, thick2*2); + + /* A non-convex polygon */ + gluTessBeginPolygon (tess, to); + + glNormal3f (0, 0, (y > 0 ? 1 : -1)); + gluTessNormal (tess, 0, 0, (y > 0 ? 1 : -1)); + glFrontFace (GL_CCW); + + /* Tess the wedge */ + gluTessBeginContour (tess); + for (i = 0; i < endpoints; i++) + { + GLdouble *p = points + (i*3); + gluTessVertex (tess, p, p); + polys++; + } + gluTessVertex (tess, points, points); + gluTessEndContour (tess); + + /* Tess the holes */ + for (k = 0; k < nholes; k++) + { + GLdouble *p = holes + (discfaces * 3 * k); + gluTessBeginContour (tess); + for (i = 0; i < discfaces; i++) + { + GLdouble *p2 = p + (i*3); + gluTessVertex (tess, p2, p2); + polys++; + } + gluTessEndContour (tess); + } + + gluTessEndPolygon (tess); + } + + glTranslatef (0, 0, -thick2); + +# else /* !HAVE_TESS */ + if (! wire) + { + glTranslatef(0, 0, thick2); + glNormal3f (0, 0, 1); + glFrontFace (GL_CW); + + /* Sadly, jwzgl's glVertexPointer seems not to be recordable inside + display lists. */ +# if 0 + glDisableClientState (GL_COLOR_ARRAY); + glDisableClientState (GL_NORMAL_ARRAY); + glDisableClientState (GL_TEXTURE_COORD_ARRAY); + glEnableClientState (GL_VERTEX_ARRAY); + glVertexPointer (3, GL_FLOAT, 0, dnapizza_triangles); + glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3); +# else + glBegin (GL_TRIANGLES); + for (i = 0; i < countof (dnapizza_triangles); i += 3) + glVertex3fv (dnapizza_triangles + i); + glEnd(); +# endif + + glTranslatef(0, 0, -thick2*2); + glNormal3f (0, 0, -1); + glFrontFace (GL_CCW); + +# if 0 + glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3); +# else + int i; + glBegin (GL_TRIANGLES); + for (i = 0; i < countof (dnapizza_triangles); i += 3) + glVertex3fv (dnapizza_triangles + i); + glEnd(); +# endif + + glTranslatef(0, 0, thick2); + } +# endif /* !HAVE_TESS */ + + + /* Compute the crust */ + + s = 0.861; /* radius of inside of crust */ + step = M_PI * 2 / 6 / topfaces; + th = 0; + j = 0; + for (i = 0; i < topfaces; i++) + { + points[j++] = cos(th) * s; + points[j++] = sin(th) * s; + points[j++] = 0; + th += step; + } + + s = 1; + for (i = 0; i < topfaces; i++) + { + points[j++] = cos(th) * s; + points[j++] = sin(th) * s; + points[j++] = 0; + th -= step; + } + + /* Draw the rim of the crust */ + glFrontFace (GL_CCW); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < topfaces * 2; i++) + { + GLdouble *p = points + (i*3); + if (i == 0 || i == (topfaces*2)-1) + glNormal3f (0, -1, 0); + else if (i == topfaces-1 || i == topfaces) + glNormal3f (0, 1, 0); + else + do_normal (p[-3], p[-2], thick2, + p[0], p[1], thick2, + p[0], p[1], -thick2); + glVertex3f (p[0], p[1], -thick2); + glVertex3f (p[0], p[1], thick2); + polys++; + } + glVertex3f (points[0], points[1], -thick2); + glVertex3f (points[0], points[1], thick2); + polys++; + glEnd(); + + if (wire) + { + glBegin (GL_LINE_STRIP); + for (i = 0; i < topfaces * 2; i++) + { + GLdouble *p = points + (i*3); + glVertex3f (p[0], p[1], -thick2); + polys++; + } + glVertex3f (points[0], points[1], -thick2); + glEnd(); + + glBegin (GL_LINE_STRIP); + for (i = 0; i < topfaces * 2; i++) + { + GLdouble *p = points + (i*3); + glVertex3f (p[0], p[1], thick2); + polys++; + } + glVertex3f (points[0], points[1], thick2); + glEnd(); + } + + /* Draw the top of the crust */ + if (! wire) + { + glFrontFace (GL_CW); + glBegin (wire ? GL_LINE_STRIP : GL_QUAD_STRIP); + glNormal3f (0, 0, -1); + if (!wire) + for (i = 0; i < topfaces; i++) + { + int ii = topfaces + (topfaces - i - 1); + GLdouble *p1 = points + (i*3); + GLdouble *p2 = points + (ii*3); + glVertex3f (p1[0], p1[1], -thick2); + glVertex3f (p2[0], p2[1], -thick2); + polys++; + } + polys++; + glEnd(); + + /* Draw the bottom of the crust */ + glFrontFace (GL_CCW); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + glNormal3f (0, 0, 1); + for (i = 0; i < topfaces; i++) + { + int ii = topfaces + (topfaces - i - 1); + GLdouble *p1 = points + (i*3); + GLdouble *p2 = points + (ii*3); + glVertex3f (p1[0], p1[1], thick2); + glVertex3f (p2[0], p2[1], thick2); + polys++; + } + polys++; + glEnd(); + } + +# ifdef HAVE_TESS + gluDeleteTess (tess); + free (to->points); +# endif /* HAVE_TESS */ + + free (points); + free (holes); + + glPopMatrix(); + + return polys; +} + + +# ifdef CW + +/* Upcase string, convert Unicrud to ASCII, remove any non-letters. + */ +static char * +codeword_simplify_text (const char *s0) +{ + char *s1 = utf8_to_latin1 ((s0 ? s0 : ""), True); + int L = strlen(s1); + char *s2 = (char *) malloc (L + 10); + char *s3 = s2; + int i; + for (i = 0; i < L; i++) + { + char c = s1[i]; + if (c >= 'a' && c <= 'z') + c -= 'a'-'A'; + if (c >= 'A' && c <= 'Z') + *s3++ = c; + } + *s3 = 0; + if (! *s2) + strcpy (s2, "CODEWORD"); + return s2; +} + + +static void +make_codeword_path (ModeInfo *mi) +{ + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; + int letters = strlen (dc->codeword_text); + + GLfloat rtick = dc->codeword_spread; + GLfloat iradius = rtick * dc->codeword_cap_size; + + int dial = 0; + int letter; + GLfloat last_r = 0; + + GLfloat inner_circum = M_PI * 2 * (iradius + rtick * 2); + GLfloat outer_circum = M_PI * 2 * (iradius + rtick * (letters + 1)); + GLfloat facet_length = inner_circum / (26 * dc->codeword_facets); + int outer_facets = ceil (outer_circum / facet_length); + + int *histo = (int *) calloc (letters * 26, sizeof(*histo)); + XYZ *points = (XYZ *) calloc (letters * outer_facets, sizeof (*points)); + int npoints = 0; + + for (letter = -1; letter < letters; letter++) + { + if (letter == -1) /* Inner starting point */ + { + points[npoints].x = iradius; + points[npoints].y = 0; + last_r = iradius; + npoints++; + } + else /* Add arc for this letter */ + { + int direction = (letter & 1 ? -1 : 1); + int v = (dc->codeword_text[letter] - 'A' + 1); + int dial1 = dial + v * direction; + + GLfloat th; + GLfloat th0 = M_PI * 2 / 26 * dial; + GLfloat th1 = M_PI * 2 / 26 * dial1; + GLfloat r = iradius + rtick * (letter + 2); + GLfloat circum = M_PI * 2 * r; + GLfloat arc_length = circum * v / 26; + int arc_facets = ceil (fabs (arc_length / facet_length)); + GLfloat facet_th = (th1 - th0) / arc_facets; + + if (arc_facets > outer_facets) abort(); + + /* Let's put some intermediate facets on the crossbars too, + so that the animation doesn't speed up on those. */ + { + GLfloat rr; + for (rr = last_r + facet_length; + rr <= r - facet_length; + rr += facet_length) + { + points[npoints].x = rr * cos (th0); + points[npoints].y = rr * sin (th0); + npoints++; + } + last_r = r; + } + + + for (th = th0; + (th0 < th1 + ? th <= th1 + facet_th + : th >= th1 + facet_th); + th += facet_th) + { + GLfloat th2 = th; + if (th0 < th1 && th > th1) + th2 = th1; + if (th0 > th1 && th < th1) + th2 = th1; + points[npoints].x = r * cos (th2); + points[npoints].y = r * sin (th2); + + /* Ugh, add point only if it differs from prev. + Not sure how this happens. */ + if (npoints == 0 || + points[npoints-1].x != points[npoints].x || + points[npoints-1].y != points[npoints].y) + npoints++; + } + + /* Mark up the histo array to find the outer border. */ + { + int i; + for (i = dial; + (direction > 0 + ? i <= dial1 + : i >= dial1); + i += direction) + { + int x = (i + 26) % 26; + int y; + for (y = 0; y <= letter; y++) + histo[y * 26 + x]++; + } + } + + dc->codeword_text_points[letter] = npoints; + + dial = dial1; + } + } + + if (npoints >= letters * outer_facets) abort(); + +# if 0 + { /* Print histo */ + int x, y; + for (y = 0; y < letters; y++) + { + fprintf (stderr, "%2d: ", y); + for (x = 0; x < 26; x++) + fprintf (stderr, "%x", histo[y * 26 + x]); + fprintf (stderr, "\n"); + } + fprintf (stderr, "\n"); + } +# endif + + + /* Find a gap in the outer edge, to draw guide dots. */ + { + int x, y; + int last_row = letters; + int start_dial = -1, end_dial = -1; + + for (y = letters-1; y >= 0; y--) + { + for (x = 0; x < 26; x++) + { + if (histo[y * 26 + x] == 0) + { + if (last_row != y) + start_dial = end_dial = -1; + last_row = y; + if (start_dial == -1) + start_dial = x; + end_dial = x; + } + } + } + + if (last_row < letters-1 && start_dial >= 0) + { + GLfloat r = iradius + rtick * (last_row + 2); + int i; + + dc->codeword_nguides = 0; + dc->codeword_guides = (XYZ *) + calloc (end_dial - start_dial + 1, sizeof (*dc->codeword_guides)); + for (i = start_dial; i <= end_dial; i++) + { + GLfloat th = i * M_PI * 2 / 26; + GLfloat x = r * cos (th); + GLfloat y = r * sin (th); + dc->codeword_guides[dc->codeword_nguides].x = x; + dc->codeword_guides[dc->codeword_nguides].y = y; + dc->codeword_nguides++; + } + } + free (histo); + histo = 0; + } + + dc->codeword_path_npoints = npoints; + dc->codeword_path = points; +} + + +static int +draw_codeword_cap (ModeInfo *mi) +{ + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + + int segments = dc->codeword_disc_facets; + GLfloat size = dc->codeword_spread * dc->codeword_cap_size; + GLfloat width = dc->codeword_line_width / 2; + GLfloat thick = dc->codeword_thickness / 2; + GLfloat r1 = size + width/2; + GLfloat r2 = size - width/2; + GLfloat facet, th, z; + + if (wire) segments = 12; + facet = M_PI * 2 / segments; + + glPushMatrix(); + + /* Top and bottom */ + + for (z = -thick; z <= thick; z += thick*2) + { + glNormal3f (0, 0, (z < 0 ? -1 : 1)); + glFrontFace (z < 0 ? GL_CCW : GL_CW); + + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (th = 0; th <= M_PI*2; th += facet) + { + GLfloat x = cos (th); + GLfloat y = sin (th); + glVertex3f (r1 * x, r1 * y, z); + glVertex3f (r2 * x, r2 * y, z); + } + glEnd(); + + if (wire) + { + glBegin (GL_LINE_LOOP); + for (th = 0; th <= M_PI*2; th += facet) + { + GLfloat x = cos (th); + GLfloat y = sin (th); + glVertex3f (r1 * x, r1 * y, z); + } + glEnd(); + glBegin (GL_LINE_LOOP); + for (th = 0; th <= M_PI*2; th += facet) + { + GLfloat x = cos (th); + GLfloat y = sin (th); + glVertex3f (r2 * x, r2 * y, z); + } + glEnd(); + } + } + + /* Inside and outside */ + + for (z = -1; z <= 1; z += 2) + { + glFrontFace (z < 0 ? GL_CCW : GL_CW); + + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (th = 0; th <= M_PI*2; th += facet) + { + GLfloat th1 = th + facet; + GLfloat x0 = cos (th); + GLfloat y0 = sin (th); + GLfloat x1 = cos (th1); + GLfloat y1 = sin (th1); + GLfloat r = z < 0 ? r1 : r2; + + if (z < 0) + do_normal (r * x0, r * y0, thick, + r * x0, r * y0, -thick, + r * x1, r * y1, -thick); + else + do_normal (r * x1, r * y1, thick, + r * x1, r * y1, -thick, + r * x0, r * y0, -thick); + + glVertex3f (r * x0, r * y0, thick); + glVertex3f (r * x0, r * y0, -thick); + } + glEnd(); + } + + glPopMatrix(); + + return polys; +} + + +static int +draw_codeword_guides (ModeInfo *mi, GLfloat anim_ratio) +{ + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + + int segments = dc->codeword_disc_facets; + GLfloat s = dc->codeword_line_width / 2; + GLfloat each = 1.0 / dc->codeword_nguides; + int i; + + if (wire) segments = 6; + + for (i = 0; i < dc->codeword_nguides; i++) + { + GLfloat ratio; + if (anim_ratio < i*each) ratio = 0; + else if (anim_ratio >= (i+1)*each) ratio = 1; + else ratio = (anim_ratio - i*each) / each; + + if (ratio <= 0) continue; + if (ratio == 0) ratio = 0.001; + + glPushMatrix(); + glTranslatef (dc->codeword_guides[i].x, + dc->codeword_guides[i].y, + dc->codeword_guides[i].z); + + glScalef (ratio, ratio, ratio); + + /* If the line width and thickness are pretty close to each other, + use spheres. Otherwise use tubes. + */ + if (dc->codeword_thickness < dc->codeword_line_width * 1.3 && + dc->codeword_thickness > dc->codeword_line_width / 1.3) + { + glScalef (s, s, s); + glFrontFace (GL_CCW); + polys += unit_sphere (segments, segments, wire); + } + else + { + polys += tube (0, 0, -dc->codeword_thickness / 2, + 0, 0, dc->codeword_thickness / 2, + s, 0, segments, True, True, wire); + } + + glPopMatrix(); + } + + return polys; +} + + +/* Compute the characters at which the cursor is currently pointing, + and render it on the logo. + */ +static void +codeword_text_output (ModeInfo *mi, GLfloat anim_ratio) +{ + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; + int i; + int L = strlen (dc->codeword_text); + int point = dc->codeword_path_npoints * anim_ratio; + Bool hit = False; + + if (dc->anim_state == CODEWORD_BLANK) + point = 0; + + for (i = 0; i < L; i++) + { + if (point >= dc->codeword_text_points[i]) + dc->codeword_text_out[i] = dc->codeword_text[i]; + else if (hit) + dc->codeword_text_out[i] = 0; + else + { + int steps = dc->codeword_text[i] - 'A' + 1; + int last = (i > 0 ? dc->codeword_text_points[i-1] : 0); + double ratio = ((point - last) / + (double) (dc->codeword_text_points[i] - last)); + char chr = 'A' + (ratio * steps); + if (ratio < 0.1) chr = 0; + dc->codeword_text_out[i] = chr; + hit = True; + } + } + dc->codeword_text_out[i] = 0; + + if (*dc->codeword_text_out && + !strcmp (dc->codeword_text, "CODEWORD")) + { + int i; + int L2 = strlen (dc->codeword_text_out); + GLfloat ss = 0.01; + int ascent, descent; + + glPushMatrix(); + glColor4fv (dc->codeword_color); + glRotatef (90, 0, 1, 0); + glRotatef (-90, 0, 0, 1); + + for (i = 0; i < L2; i++) + { + XCharStruct e; + char buf[2]; + glPushMatrix(); + glRotatef ((i + 0.5) * 360 / 26.0, 0, 0, 1); + +# if 0 + { + GLfloat th; + glDisable(GL_LIGHTING); + glBegin(GL_LINES); + glVertex3f(0,0,0); + glVertex3f(0,-4,0); + glEnd(); + glBegin(GL_LINE_STRIP); + for (th = M_PI * 1.45; th < M_PI * 1.55; th += 0.1) + { + GLfloat r = 3.85; + glVertex3f (r * cos(th), r * sin(th), 0); + } + glEnd(); + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); + } +# endif + + glTranslatef (0, -dc->codeword_spread * (L - 1), 0); + glScalef (ss, ss, ss); + buf[0] = dc->codeword_text_out[i] + ('a' - 'A'); + buf[1] = 0; + texture_string_metrics (dc->font, buf, &e, &ascent, &descent); + +# ifdef HAVE_MOBILE + /* #### Magic magic magic WTF... */ + glScalef (0.5, 0.5, 0.5); +# endif + + glTranslatef (-e.width * 1.0, + -(ascent + descent + e.descent * 2.4), /* #### WTF */ + 0); + + glScalef (2, 2, 2); + +# if 0 + glDisable(GL_LIGHTING); + glBegin(GL_LINE_LOOP); + glVertex3f(0, 0, 0); + glVertex3f(e.width, 0, 0); + glVertex3f(e.width, e.ascent + e.descent, 0); + glVertex3f(0, e.ascent + e.descent, 0); + glEnd(); + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); +# endif + + glDisable(GL_CULL_FACE); /* tell texfont.c to draw both sides */ + print_texture_string (dc->font, buf); + glEnable(GL_CULL_FACE); + + glPopMatrix(); + } + glPopMatrix(); + } +} + + +/* Convert the precomputed path to a thick line of polygons. + We could actually precompute all of these polygons too, + but it's fast enough. + */ +static int +draw_codeword_path (ModeInfo *mi) +{ + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + + GLfloat anim_ratio = (dc->anim_state == CODEWORD_IN ? dc->anim_ratio : + dc->anim_state == CODEWORD_OUT ? 1 - dc->anim_ratio : + dc->anim_state == CODEWORD_BLANK ? 0 : + 1); + int last_anim_point = 0; + + GLfloat width = dc->codeword_line_width / 2; + GLfloat thick = dc->codeword_thickness / 2; + int i, k; + GLfloat j; + + int quad_size = (dc->codeword_path_npoints + 1) * 2; + XYZ *quads = (XYZ *) calloc (quad_size, sizeof(*quads)); + XYZ *norms = (XYZ *) calloc (quad_size, sizeof(*norms)); + int nquads = 0; + + for (i = 0; i < dc->codeword_path_npoints; i++) + { + XYZ p1 = dc->codeword_path[i]; + XYZ p2 = (i < dc->codeword_path_npoints-1 + ? dc->codeword_path[i+1] + : dc->codeword_path[i-1]); + XYZ p1a, p1b; + + XYZ n; /* normal of the first line segment */ + n.x = -(p2.y - p1.y); + n.y = (p2.x - p1.x); + n.z = 0; + normalize (&n); + + if (i == 0) + { + p1a.x = p1.x - width / 2 * n.x; + p1a.y = p1.y - width / 2 * n.y; + p1a.z = 0; + + p1b.x = p1.x + width / 2 * n.x; + p1b.y = p1.y + width / 2 * n.y; + p1b.z = 0; + } + else if (i == dc->codeword_path_npoints - 1) + { + p1b.x = p1.x - width / 2 * n.x; + p1b.y = p1.y - width / 2 * n.y; + p1b.z = 0; + + p1a.x = p1.x + width / 2 * n.x; + p1a.y = p1.y + width / 2 * n.y; + p1a.z = 0; + } + else + { + XYZ p0 = dc->codeword_path[i-1]; + + XYZ t, t0, t1; /* tangent of corner between two line segments */ + XYZ m; /* miter line: normal of tangent */ + GLfloat d; /* length of miter */ + + t0.x = p2.x - p1.x; + t0.y = p2.y - p1.y; + t0.z = p2.z - p1.z; + normalize (&t0); + + t1.x = p1.x - p0.x; + t1.y = p1.y - p0.y; + t1.z = p1.z - p0.z; + normalize (&t1); + + t.x = t0.x + t1.x; + t.y = t0.y + t1.y; + t.z = t0.z + t1.z; + normalize (&t); + + m.x = -t.y; + m.y = t.x; + m.z = 0; + + /* find length of miter by projecting it on one of the normals */ + d = width / 2 / dot (m, n); + + p1a.x = p1.x - d * m.x; + p1a.y = p1.y - d * m.y; + p1a.z = 0; + + p1b.x = p1.x + d * m.x; + p1b.y = p1.y + d * m.y; + p1b.z = 0; + } + + quads[nquads++] = p1a; + quads[nquads++] = p1b; + + if (nquads >= quad_size) abort(); + + if (i / (double) dc->codeword_path_npoints > anim_ratio) + break; + + last_anim_point = i; + } + + + /* Compute normals for each point along the interior edge */ + for (k = 0; k <= 1; k++) + { + for (i = k; i < nquads-2; i += 2) + { + XYZ p1a = quads[i]; + XYZ p2a = quads[i+2]; + XYZ p1b = p1a; + XYZ p2b = p2a; + p1a.z = thick; /* a: top */ + p1b.z = -thick; /* b: bottom */ + p2a.z = thick; + p2b.z = -thick; + + norms[i] = (k == 0 + ? calc_normal (p1a, p1b, p2b) + : calc_normal (p2a, p2b, p1a)); + } + } + + glPushMatrix(); + glColor4fv (dc->codeword_color); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, dc->codeword_color); + +# ifdef HAVE_MOBILE /* Make the whole thing fit on the phone screen */ + { + GLfloat size = MI_WIDTH(mi) < MI_HEIGHT(mi) ? MI_WIDTH(mi) : MI_HEIGHT(mi); + glScalef (0.9, 0.9, 0.9); + if (size <= 768) /* iPad retina / iPhone 6 */ + glScalef (0.7, 0.7, 0.7); + } +# endif + + codeword_text_output (mi, anim_ratio); + + glRotatef (90, 1, 0, 0); + glRotatef (90, 0, 1, 0); + glRotatef (-90, 0, 0, 1); + glScalef (0.8, 0.8, 0.8); + + glNormal3f (0, 0, -1); + + if (anim_ratio <= 0) + { + polys += draw_codeword_cap (mi); + goto DONE; + } + +# if 0 + glColor3f (1, 0, 0); + glBegin(GL_LINE_STRIP); + for (i = 0; i < dc->codeword_path_npoints; i++) + { + glVertex3f (dc->codeword_path[i].x, + dc->codeword_path[i].y, + dc->codeword_path[i].z); + polys++; + } + glEnd(); + glColor4fv (dc->codeword_color); +# endif + + if (wire) + { + int k; + GLfloat j; + for (i = 0; i <= 1; i++) + for (j = -thick; j <= thick; j += thick*2) + { + glBegin (GL_LINE_STRIP); + for (k = i; k < nquads; k += 2) + { + glVertex3f (quads[k].x, quads[k].y, j); + polys++; + } + glEnd(); + } + } + + /* Top and bottom */ + + for (j = -thick; j <= thick; j += thick*2) + { + if (j < 0) + { + glNormal3f (0, 0, -1); + glFrontFace (GL_CW); + } + else + { + glNormal3f (0, 0, 1); + glFrontFace (GL_CCW); + } + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < nquads; i += 2) + { + glVertex3f (quads[i+1].x, quads[i+1].y, j); + glVertex3f (quads[i].x, quads[i].y, j); + polys++; + } + glEnd(); + } + + /* Edges */ + + for (k = 0; k <= 1; k++) + { + if (k > 0) + { + glNormal3f (0, 0, -1); + glFrontFace (GL_CW); + } + else + { + glNormal3f (0, 0, 1); + glFrontFace (GL_CCW); + } + + glBegin (wire ? GL_LINES : GL_QUADS); + for (i = k; i < nquads; i += 2) + { + XYZ p1a = quads[i]; + XYZ p2a = (i < nquads-2) ? quads[i+2] : p1a; + XYZ p1b = p1a; + XYZ p2b = p2a; + + XYZ n1 = norms[i]; + XYZ n2 = (i < nquads-2) ? norms[i+2] : n1; + + /* If the two normals are very similar, smooth the face. + If they are different, it's a sharp turn, and use the + same normal for both edges (not quite right, but close). + */ + GLfloat angle = vector_angle (n1.x, n1.y, n1.z, + n2.x, n2.y, n2.z); + GLfloat pointy = 0.8; + + p1a.z = thick; + p1b.z = -thick; + p2a.z = thick; + p2b.z = -thick; + + glNormal3f (n1.x, n1.y, n1.z); + glVertex3f (p1a.x, p1a.y, p1a.z); + glVertex3f (p1b.x, p1b.y, p1b.z); + + if (angle < pointy) + glNormal3f (n2.x, n2.y, n2.z); + glVertex3f (p2b.x, p2b.y, p2b.z); + glVertex3f (p2a.x, p2a.y, p2a.z); + polys++; + } + glEnd(); + } + + + /* Only draw the guides when the path is almost complete; + fade them in and out based on completeness. */ + { + GLfloat size = 0.95; + GLfloat r = (anim_ratio > size + ? (anim_ratio - size) / (1 - size) + : 0); + polys += draw_codeword_guides (mi, r); + } + + + /* Draw the start and end caps */ + { + int i; + GLfloat x, y, z, x2, y2, z2, X, Y, Z; + GLfloat r = dc->codeword_spread * dc->codeword_cap_size; + + i = 0; + x = dc->codeword_path[i].x; + y = dc->codeword_path[i].y; + z = dc->codeword_path[i].z; + + x -= r; + + glPushMatrix(); + glTranslatef (x, y, z); + polys += draw_codeword_cap (mi); + glPopMatrix(); + + /* end cap */ + + i = last_anim_point + 1; + if (i > dc->codeword_path_npoints - 1) + i = dc->codeword_path_npoints - 1; + + x = dc->codeword_path[i].x; + y = dc->codeword_path[i].y; + z = dc->codeword_path[i].z; + + i--; + x2 = dc->codeword_path[i].x; + y2 = dc->codeword_path[i].y; + z2 = dc->codeword_path[i].z; + + X = (x2 - x); + Y = (y2 - y); + Z = (z2 - z); + + glPushMatrix(); + glTranslatef (x, y, z); + glRotatef (-atan2 (X, Y) * (180 / M_PI), 0, 0, 1); + glRotatef ( atan2 (Z, sqrt(X*X + Y*Y)) * (180 / M_PI), 1, 0, 0); + glTranslatef (0, -r, 0); + polys += draw_codeword_cap (mi); + glPopMatrix(); + } + + DONE: + + glPopMatrix(); + + free (quads); + free (norms); + + return polys; +} + +#endif /* CW */ + + +ENTRYPOINT void +reshape_logo (ModeInfo *mi, int width, int height) +{ +# ifdef DEBUG + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; +# endif + GLfloat h = (GLfloat) height / (GLfloat) width; + GLfloat persp = 64; /* 30 */ + GLfloat pos = 13; /* 30 */ + +# ifdef DEBUG + persp += dc->persp_off; + pos += dc->pos_off; +# endif + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (persp, 1/h, 1, 100); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0, 0, pos, + 0, 0, 0, + 0, 1, 0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); /* #### Why does this change the lighting? */ + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +gl_init (ModeInfo *mi) +{ +/* logo_configuration *dc = &dcs[MI_SCREEN(mi)]; */ + int wire = MI_IS_WIREFRAME(mi); + + GLfloat position[] = {0, 0, 0, 0}; + GLfloat direction[] = {3, -1, -3}; + + position[0] = -direction[0]; + position[1] = -direction[1]; + position[2] = -direction[2]; + + if (!wire) + { + glLightfv(GL_LIGHT0, GL_POSITION, position); + glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, direction); + glShadeModel(GL_SMOOTH); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + } +} + + +ENTRYPOINT void +init_logo (ModeInfo *mi) +{ + logo_configuration *dc; + int do_gasket = get_boolean_resource(mi->dpy, "doGasket", "Boolean"); + int do_helix = get_boolean_resource(mi->dpy, "doHelix", "Boolean"); + int do_ladder = (do_helix && + get_boolean_resource(mi->dpy, "doLadder", "Boolean")); + int do_frame = get_boolean_resource(mi->dpy, "doFrame", "Boolean"); + GLfloat helix_rot = 147.0; + + if (!do_gasket && !do_helix) + { + fprintf (stderr, "%s: no helix or gasket?\n", progname); + exit (1); + } + + MI_INIT (mi, dcs); + + dc = &dcs[MI_SCREEN(mi)]; + + if ((dc->glx_context = init_GL(mi)) != NULL) { + gl_init(mi); + reshape_logo (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + dc->wall_facets = get_integer_resource(mi->dpy, "wallFacets", "Integer"); + dc->bar_facets = get_integer_resource(mi->dpy, "barFacets", "Integer"); + dc->clockwise = get_boolean_resource(mi->dpy, "clockwise", "Boolean"); + dc->turns = get_float_resource(mi->dpy, "turns", "Float"); + dc->turn_spacing = get_float_resource(mi->dpy, "turnSpacing", "Float"); + dc->bar_spacing = get_float_resource(mi->dpy, "barSpacing", "Float"); + dc->wall_height = get_float_resource(mi->dpy, "wallHeight", "Float"); + dc->wall_thickness = get_float_resource(mi->dpy, "wallThickness", "Float"); + dc->bar_thickness = get_float_resource(mi->dpy, "barThickness", "Float"); + dc->wall_taper = get_float_resource(mi->dpy, "wallTaper", "Float"); + + dc->gasket_size = get_float_resource(mi->dpy,"gasketSize", "Float"); + dc->gasket_depth = get_float_resource(mi->dpy,"gasketDepth", "Float"); + dc->gasket_thickness = get_float_resource(mi->dpy,"gasketThickness","Float"); + + dc->frame_size = get_float_resource(mi->dpy, "frameSize", "Float"); + dc->frame_depth = get_float_resource(mi->dpy, "frameDepth", "Float"); + dc->frame_thickness = get_float_resource(mi->dpy, "frameThickness", "Float"); + dc->triangle_size = get_float_resource(mi->dpy, "triangleSize", "Float"); + + dc->speed = get_float_resource(mi->dpy, "speed", "Float"); +# ifdef CW + dc->codeword_text = get_string_resource(mi->dpy, "text", "String"); + dc->codeword_text = codeword_simplify_text (dc->codeword_text); + dc->codeword_text_out = + calloc (strlen(dc->codeword_text) + 1, sizeof(*dc->codeword_text_out)); + dc->codeword_text_points = + (int *) calloc (strlen(dc->codeword_text) + 1, + sizeof(*dc->codeword_text_points)); + + dc->codeword_facets = get_integer_resource(mi->dpy, "cwFacets", "Integer"); + dc->codeword_disc_facets = get_integer_resource(mi->dpy, + "cwDiscFacets", "Integer"); + dc->codeword_spread = get_float_resource(mi->dpy, "cwSpread", "Float"); + dc->codeword_line_width = get_float_resource(mi->dpy, "cwLineWidth", "Float"); + dc->codeword_thickness = get_float_resource(mi->dpy, "cwThickness", "Float"); + dc->codeword_cap_size = get_float_resource(mi->dpy, "cwCapSize", "Float"); +# endif + + { + char *s = get_string_resource (MI_DISPLAY (mi), "mode", "String"); + if (!s || !*s || !strcasecmp (s, "helix")) + dc->mode = HELIX; + else if (!strcasecmp (s, "pizza")) + dc->mode = PIZZA; + else if (!strcasecmp (s, "both")) + dc->mode = HELIX_AND_PIZZA; +# ifdef CW + else if (!strcasecmp (s, "codeword")) + dc->mode = CODEWORD_IN; +# endif + else + { + fprintf (stderr, + "%s: mode must be helix, pizza or both, not \"%s\"\n", + progname, s); + exit (1); + } + if (s) free (s); + + dc->anim_state = (dc->mode == HELIX_AND_PIZZA + ? ((random() & 1) ? HELIX : PIZZA) + : dc->mode); + dc->anim_ratio = 0; + } + +# ifdef CW + if (dc->mode == CODEWORD_IN) + dc->font = load_texture_font (MI_DISPLAY(mi), "cwFont"); +# endif + +# ifdef DEBUG + dc->label_font = load_texture_font (MI_DISPLAY(mi), "fpsFont"); +# endif + + { + XColor xcolor; + + char *color_name = + get_string_resource (mi->dpy, "foreground", "Foreground"); + char *s2; + for (s2 = color_name + strlen(color_name) - 1; s2 > color_name; s2--) + if (*s2 == ' ' || *s2 == '\t') + *s2 = 0; + else + break; + + if (! XParseColor (MI_DISPLAY(mi), mi->xgwa.colormap, color_name, &xcolor)) + { + fprintf (stderr, "%s: can't parse color %s\n", progname, color_name); + exit (1); + } + + dc->color[0] = xcolor.red / 65535.0; + dc->color[1] = xcolor.green / 65535.0; + dc->color[2] = xcolor.blue / 65535.0; + dc->color[3] = 1.0; + + color_name = get_string_resource (mi->dpy, "cwForeground", "Foreground"); + for (s2 = color_name + strlen(color_name) - 1; s2 > color_name; s2--) + if (*s2 == ' ' || *s2 == '\t') + *s2 = 0; + else + break; + + if (! XParseColor (MI_DISPLAY(mi), mi->xgwa.colormap, color_name, &xcolor)) + { + fprintf (stderr, "%s: can't parse color %s\n", progname, color_name); + exit (1); + } + +# ifdef CW + dc->codeword_color[0] = xcolor.red / 65535.0; + dc->codeword_color[1] = xcolor.green / 65535.0; + dc->codeword_color[2] = xcolor.blue / 65535.0; + dc->codeword_color[3] = 1.0; + + color_name = get_string_resource (mi->dpy, "cwBackground", "Background"); + for (s2 = color_name + strlen(color_name) - 1; s2 > color_name; s2--) + if (*s2 == ' ' || *s2 == '\t') + *s2 = 0; + else + break; + + if (! XParseColor (MI_DISPLAY(mi), mi->xgwa.colormap, color_name, &xcolor)) + { + fprintf (stderr, "%s: can't parse color %s\n", progname, color_name); + exit (1); + } + + dc->codeword_bg[0] = xcolor.red / 65535.0; + dc->codeword_bg[1] = xcolor.green / 65535.0; + dc->codeword_bg[2] = xcolor.blue / 65535.0; + dc->codeword_bg[3] = 1.0; +# endif /* CW */ + } + + dc->trackball = gltrackball_init (False); + + dc->gasket_spinnerx.probability = 0.1; + dc->gasket_spinnery.probability = 0.1; + dc->gasket_spinnerz.probability = 1.0; + dc->gasket_spinnerx.easement = 0.08; + dc->gasket_spinnery.easement = 0.08; + dc->gasket_spinnerz.easement = 0.08; + + dc->helix_spinnerz.probability = 0.6; + dc->helix_spinnerz.easement = 0.2; + + dc->pizza_spinnerz.probability = 0.6; + dc->pizza_spinnery.probability = 0.6; + dc->pizza_spinnerz.easement = 0.2; + dc->pizza_spinnery.easement = 0.2; + + dc->frame_spinner.probability = 5.0; + dc->frame_spinner.easement = 0.2; + + dc->scene_spinnerx.probability = 0.1; + dc->scene_spinnery.probability = 0.0; + dc->scene_spinnerx.easement = 0.1; + dc->scene_spinnery.easement = 0.1; + +# ifdef CW + if (dc->mode == CODEWORD_IN) + { + double tilt_speed = 0.003; + dc->scene_rot = make_rotator (0, 0, 0, 0, tilt_speed, True); + } +# endif + + /* start the frame off-screen */ + dc->frame_spinner.spinning_p = True; + dc->frame_spinner.position = 0.3; + dc->frame_spinner.speed = 0.001; + + if (dc->speed > 0) /* start off with the gasket in motion */ + { + dc->gasket_spinnerz.spinning_p = True; + dc->gasket_spinnerz.speed = (0.002 + * ((random() & 1) ? 1 : -1) + * dc->speed); + } + +# ifdef DXF_OUTPUT_HACK + { +# if 0 + dc->frame_depth = dc->gasket_depth; + dxf_layer = 1; + dxf_color = 3; + dxf_start(); + glPushMatrix(); + glRotatef(90, 1, 0, 0); + glRotatef(90, 0, 0, 1); + make_pizza (dc, 0, 0); + + glPushMatrix(); + glRotatef(helix_rot, 0, 0, 1); + make_ladder (dc, 0, 0); + make_helix (dc, 0, 0); + glRotatef (180, 0, 0, 1); + make_helix (dc, 0, 0); + glPopMatrix(); + + dxf_layer++; + make_gasket (dc, 0); + dxf_layer++; + make_frame (dc, 0); + glPopMatrix(); + dxf_end(); +# else + dxf_start(); + glPushMatrix(); + glRotatef(90, 1, 0, 0); + glRotatef(90, 0, 0, 1); + dc->anim_state = CODEWORD; + make_codeword_path (mi); + draw_codeword_path (mi); + glPopMatrix(); + dxf_end(); +# endif + } +# endif + + glPushMatrix(); + dc->helix_list = glGenLists (1); + glNewList (dc->helix_list, GL_COMPILE); + glRotatef(helix_rot, 0, 0, 1); + if (do_ladder) dc->polys[0] += make_ladder (dc, 0, 0); + if (do_helix) dc->polys[0] += make_helix (dc, 0, 0); + glRotatef(180, 0, 0, 1); + if (do_helix) dc->polys[0] += make_helix (dc, 0, 0); + glEndList (); + glPopMatrix(); + + glPushMatrix(); + dc->helix_list_wire = glGenLists (1); + glNewList (dc->helix_list_wire, GL_COMPILE); +/* glRotatef(helix_rot, 0, 0, 1); wtf? */ + if (do_ladder) dc->polys[1] += make_ladder (dc, 1, 1); + if (do_helix) dc->polys[1] += make_helix (dc, 1, 1); + glRotatef(180, 0, 0, 1); + if (do_helix) dc->polys[1] += make_helix (dc, 1, 1); + glEndList (); + glPopMatrix(); + + glPushMatrix(); + dc->helix_list_facetted = glGenLists (1); + glNewList (dc->helix_list_facetted, GL_COMPILE); + glRotatef(helix_rot, 0, 0, 1); + if (do_ladder) dc->polys[2] += make_ladder (dc, 1, 0); + if (do_helix) dc->polys[2] += make_helix (dc, 1, 0); + glRotatef(180, 0, 0, 1); + if (do_helix) dc->polys[2] += make_helix (dc, 1, 0); + glEndList (); + glPopMatrix(); + + dc->pizza_list = glGenLists (1); + glNewList (dc->pizza_list, GL_COMPILE); + if (do_frame) dc->polys[5] += make_pizza (dc, 0, 0); + glEndList (); + + dc->pizza_list_wire = glGenLists (1); + glNewList (dc->pizza_list_wire, GL_COMPILE); + if (do_frame) dc->polys[6] += make_pizza (dc, 1, 1); + glEndList (); + + dc->pizza_list_facetted = glGenLists (1); + glNewList (dc->pizza_list_facetted, GL_COMPILE); + if (do_frame) dc->polys[6] += make_pizza (dc, 1, 0); + glEndList (); + + dc->gasket_list = glGenLists (1); + glNewList (dc->gasket_list, GL_COMPILE); + if (do_gasket) dc->polys[3] += make_gasket (dc, 0); + glEndList (); + + dc->gasket_list_wire = glGenLists (1); + glNewList (dc->gasket_list_wire, GL_COMPILE); + if (do_gasket) dc->polys[4] += make_gasket (dc, 1); + glEndList (); + + dc->frame_list = glGenLists (1); + glNewList (dc->frame_list, GL_COMPILE); + if (do_frame) dc->polys[5] += make_frame (dc, 0); + glEndList (); + + dc->frame_list_wire = glGenLists (1); + glNewList (dc->frame_list_wire, GL_COMPILE); + if (do_frame) dc->polys[6] += make_frame (dc, 1); + glEndList (); + +# ifdef CW + make_codeword_path (mi); +# endif + + /* When drawing both solid and wireframe objects, + make sure the wireframe actually shows up! */ + glEnable (GL_POLYGON_OFFSET_FILL); + glPolygonOffset (1.0, 1.0); +} + + +ENTRYPOINT Bool +logo_handle_event (ModeInfo *mi, XEvent *event) +{ + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, dc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &dc->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + +# ifdef DEBUG + { + GLfloat step = 0.1; + if (c == 'a') dc->persp_off += step; + else if (c == 'z') dc->persp_off -= step; + else if (c == 's') dc->pos_off += step; + else if (c == 'x') dc->pos_off -= step; + else return False; + + /* dc->pos_off = -dc->persp_off; */ + reshape_logo (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } +# endif + + if (c == ' ' || c == '\t') + { + switch (dc->anim_state) { + case HELIX: + dc->anim_state = HELIX_OUT; + dc->anim_ratio = 0.0; + return True; + case PIZZA: + dc->anim_state = PIZZA_OUT; + dc->anim_ratio = 0.0; + return True; +# ifdef CW + case CODEWORD: + dc->anim_state = CODEWORD_OUT; + dc->anim_ratio = 0.0; + return True; +# endif + default: + break; + } + } + } + + return False; +} + + +static GLfloat +spinner_ease (GLfloat x) +{ + /* Smooth curve up, ending at slope = 1. */ + return cos ((x/2 + 1) * M_PI) + 1; +} + + +static void +tick_spinner (ModeInfo *mi, spinner *s) +{ + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; + + if (dc->speed == 0) return; + if (dc->button_down_p) return; + + if (s->spinning_p) + { + s->position += s->speed; + if (s->position >= 1.0 || s->position <= 0.0) + { + s->position = 0; + s->position_eased = 0; + s->spinning_p = False; + } + else if (s->easement > 0 && s->position <= s->easement) + s->position_eased = (s->easement * + spinner_ease (s->position / s->easement)); + else if (s->easement > 0 && s->position >= 1-s->easement) + s->position_eased = (1 - s->easement * + spinner_ease ((1 - s->position) / s->easement)); + else + s->position_eased = s->position; + } + else if (s->probability && + (random() % (int) (PROBABILITY_SCALE / s->probability)) == 0) + { + GLfloat ss = 0.004; + s->spinning_p = True; + s->position = 0; + do { + s->speed = dc->speed * (frand(ss/3) + frand(ss/3) + frand(ss/3)); + } while (s->speed <= 0); + if (random() & 1) + { + s->speed = -s->speed; + s->position = 1.0; + } + } +} + + +static void +link_spinners (ModeInfo *mi, spinner *s0, spinner *s1) +{ + if (s0->spinning_p && !s1->spinning_p) + { + GLfloat op = s1->probability; + s1->probability = PROBABILITY_SCALE; + tick_spinner (mi, s1); + s1->probability = op; + } +} + + +ENTRYPOINT void +draw_logo (ModeInfo *mi) +{ + logo_configuration *dc = &dcs[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + GLfloat gcolor[4]; + GLfloat specular[] = {0.8, 0.8, 0.8, 1.0}; + GLfloat shininess = 50.0; + Bool pizza_p; +# ifdef CW + Bool codeword_p; +# endif + + if (!dc->glx_context) + return; + + mi->polygon_count = 0; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(dc->glx_context)); + + if (!wire && + dc->wire_overlay == 0 && + (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0) + dc->wire_overlay = ((random() % 200) + + (random() % 200) + + (random() % 200)); + +# ifndef DEBUG + tick_spinner (mi, &dc->gasket_spinnerx); + tick_spinner (mi, &dc->gasket_spinnery); + tick_spinner (mi, &dc->gasket_spinnerz); + tick_spinner (mi, &dc->helix_spinnerz); + tick_spinner (mi, &dc->pizza_spinnery); + tick_spinner (mi, &dc->pizza_spinnerz); + tick_spinner (mi, &dc->scene_spinnerx); + tick_spinner (mi, &dc->scene_spinnery); + tick_spinner (mi, &dc->frame_spinner); + link_spinners (mi, &dc->scene_spinnerx, &dc->scene_spinnery); +# endif /* DEBUG */ + + switch (dc->anim_state) + { + case HELIX: + if (dc->mode == HELIX_AND_PIZZA && + (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0) + dc->anim_state = HELIX_OUT; + break; + + case HELIX_OUT: + dc->anim_ratio += 0.1 * dc->speed; + if (dc->anim_ratio >= 1.0) + { + dc->anim_ratio = 0.0; + dc->anim_state = PIZZA_IN; + } + break; + + case PIZZA_IN: + dc->anim_ratio += 0.1 * dc->speed; + if (dc->anim_ratio >= 1.0) + { + dc->anim_ratio = 0.0; + dc->anim_state = PIZZA; + } + break; + + case PIZZA: + if (dc->mode == HELIX_AND_PIZZA && + (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0) + dc->anim_state = PIZZA_OUT; + break; + + case PIZZA_OUT: + dc->anim_ratio += 0.1 * dc->speed; + if (dc->anim_ratio >= 1.0) + { + dc->anim_ratio = 0.0; + dc->anim_state = HELIX_IN; + } + break; + + case HELIX_IN: + dc->anim_ratio += 0.1 * dc->speed; + if (dc->anim_ratio >= 1.0) + { + dc->anim_ratio = 0.0; + dc->anim_state = HELIX; + } + break; + + +# ifdef CW + case CODEWORD_IN: + dc->scene_spinnerx.probability = 0.2; + dc->scene_spinnery.probability = 0.05; + if (! dc->button_down_p) + dc->anim_ratio += 0.004 * dc->speed; + if (dc->anim_ratio >= 1.0) + { + dc->anim_state = CODEWORD; + dc->anim_ratio = frand (0.5); + } + break; + + case CODEWORD: + dc->scene_spinnerx.probability = 0.5; + dc->scene_spinnery.probability = 0.2; + if (! dc->button_down_p) + dc->anim_ratio += (0.0005 + frand(0.002)) * dc->speed; + if (dc->anim_ratio >= 1.0) + { + dc->anim_ratio = 0.0; + dc->anim_state = CODEWORD_OUT; + } + break; + + case CODEWORD_OUT: + dc->scene_spinnerx.probability = 0; + dc->scene_spinnery.probability = 0; + if (! dc->button_down_p) + dc->anim_ratio += 0.02 * dc->speed; + if (dc->anim_ratio >= 1.0) + { + dc->anim_ratio = 0.0; + dc->anim_state = CODEWORD_BLANK; + } + break; + + case CODEWORD_BLANK: + dc->scene_spinnerx.probability = 0; + dc->scene_spinnery.probability = 0; + if (! dc->button_down_p) + dc->anim_ratio += 0.01 * dc->speed; + if (dc->anim_ratio >= 1.0) + { + dc->anim_ratio = 0.0; + dc->anim_state = CODEWORD_IN; + } + break; +# endif /* CW */ + + default: + abort(); + break; + } + +# ifdef DEBUG + dc->anim_state = HELIX; + dc->wire_overlay = 0; +# endif + + pizza_p = (dc->anim_state == PIZZA || + dc->anim_state == PIZZA_IN || + dc->anim_state == PIZZA_OUT); + +# ifdef CW + codeword_p = (dc->anim_state == CODEWORD || + dc->anim_state == CODEWORD_IN || + dc->anim_state == CODEWORD_OUT || + dc->anim_state == CODEWORD_BLANK); +# endif + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + { + GLfloat scale = 1.8; + glScalef(scale, scale, scale); + + glColor3f(dc->color[0], dc->color[1], dc->color[2]); + + + /* Draw frame before trackball rotation */ +# ifdef CW + if (! codeword_p) +# endif + { + GLfloat p = (dc->frame_spinner.position_eased >= 0 + ? dc->frame_spinner.position_eased + : -dc->frame_spinner.position_eased); + GLfloat size = (p > 0.5 ? 1-p : p); + scale = 1 + (size * 10); + glPushMatrix(); + /* gltrackball_rotate (dc->trackball); */ + glRotatef(90, 1, 0, 0); + glRotatef(90, 0, 0, 1); + + glScalef (1, scale, scale); + if (wire) + { + glDisable (GL_LIGHTING); + glCallList (dc->frame_list_wire); + mi->polygon_count += dc->polys[6]; + } + else if (dc->wire_overlay != 0) + { + glCallList (dc->frame_list); + glDisable (GL_LIGHTING); + glColor3fv (dc->color); + glCallList (dc->frame_list_wire); + mi->polygon_count += dc->polys[6]; + if (!wire) glEnable (GL_LIGHTING); + } + else + { + glCallList (dc->frame_list); + mi->polygon_count += dc->polys[5]; + } + glPopMatrix(); + } + + gltrackball_rotate (dc->trackball); + + glRotatef(90, 1, 0, 0); + glRotatef(90, 0, 0, 1); + +# ifdef CW + if (! codeword_p) +# endif + { + glRotatef (360 * dc->scene_spinnerx.position_eased, 0, 1, 0); + glRotatef (360 * dc->scene_spinnery.position_eased, 0, 0, 1); + + glPushMatrix(); + + glRotatef (360 * dc->gasket_spinnerx.position_eased, 0, 1, 0); + glRotatef (360 * dc->gasket_spinnery.position_eased, 0, 0, 1); + glRotatef (360 * dc->gasket_spinnerz.position_eased, 1, 0, 0); + + memcpy (gcolor, dc->color, sizeof (dc->color)); + if (dc->wire_overlay != 0) + { + gcolor[0] = gcolor[1] = gcolor[2] = 0; + specular[0] = specular[1] = specular[2] = 0; + shininess = 0; + } + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, gcolor); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, specular); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shininess); + + if (wire) + { + glDisable (GL_LIGHTING); + glCallList (dc->gasket_list_wire); + mi->polygon_count += dc->polys[4]; + } + else if (dc->wire_overlay != 0) + { + glCallList (dc->gasket_list); + glDisable (GL_LIGHTING); + glColor3fv (dc->color); + glCallList (dc->gasket_list_wire); + mi->polygon_count += dc->polys[4]; + if (!wire) glEnable (GL_LIGHTING); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, gcolor); + } + else + { + glCallList (dc->gasket_list); + mi->polygon_count += dc->polys[3]; + } + glPopMatrix(); + + if (pizza_p) + { + glRotatef (360 * dc->pizza_spinnery.position_eased, 1, 0, 0); + glRotatef (360 * dc->pizza_spinnerz.position_eased, 0, 0, 1); + } + else + { + glRotatef (360 * dc->helix_spinnerz.position_eased, 0, 0, 1); + } + + scale = ((dc->anim_state == PIZZA_IN || dc->anim_state == HELIX_IN) + ? dc->anim_ratio + : ((dc->anim_state == PIZZA_OUT || dc->anim_state == HELIX_OUT) + ? 1.0 - dc->anim_ratio + : 1.0)); + if (scale <= 0) scale = 0.001; + glScalef (scale, scale, scale); + + if (wire) + { + glDisable (GL_LIGHTING); + if (pizza_p) + glCallList (dc->pizza_list_wire); + else + glCallList (dc->helix_list_wire); + mi->polygon_count += dc->polys[1]; + } + else if (dc->wire_overlay != 0) + { + if (pizza_p) + glCallList (dc->pizza_list_facetted); + else + glCallList (dc->helix_list_facetted); + + glDisable (GL_LIGHTING); + glColor3fv (dc->color); + + if (pizza_p) + glCallList (dc->pizza_list_wire); + else + glCallList (dc->helix_list_wire); + + mi->polygon_count += dc->polys[2]; + if (!wire) glEnable (GL_LIGHTING); + } + else + { + if (pizza_p) + glCallList (dc->pizza_list); + else + glCallList (dc->helix_list); + mi->polygon_count += dc->polys[0]; + } + } +# ifdef CW + else /* codeword_p */ + { +# if 0 + double max = 70; /* face front */ + double x, y, z; + get_position (dc->scene_rot, &x, &y, &z, !dc->button_down_p); + glRotatef (max/2 - x*max, 0, 0, 1); + glRotatef (max/2 - y*max, 0, 1, 0); + /* glRotatef (max/2 - z*max, 1, 0, 0); */ +# else + glRotatef (360 * dc->scene_spinnerx.position_eased, 0, 1, 0); + glRotatef (360 * dc->scene_spinnery.position_eased, 0, 0, 1); +# endif + + glClearColor (dc->codeword_bg[0], + dc->codeword_bg[1], + dc->codeword_bg[2], + dc->codeword_bg[3]); + mi->polygon_count += draw_codeword_path (mi); + } +# endif /* CW */ + } + glPopMatrix(); + + if (dc->wire_overlay > 0) + dc->wire_overlay--; + +# ifdef DEBUG + { + char s[1024]; + sprintf (s, "a/z, s/x; per = %0.2f pos = %0.2f", + dc->persp_off, dc->pos_off); + glColor3f (1,1,1); + print_texture_label (dpy, dc->label_font, MI_WIDTH(mi), MI_HEIGHT(mi), + 1, s); + } +# endif + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("DNALogo", dnalogo, logo) + +#endif /* USE_GL */ diff --git a/hacks/glx/dnapizza.h b/hacks/glx/dnapizza.h new file mode 100644 index 0000000..6dd48b9 --- /dev/null +++ b/hacks/glx/dnapizza.h @@ -0,0 +1,122 @@ +/* DNA Pizza Logo, Copyright (c) 2011-2012 Jamie Zawinski + + Since GLUtesselator doesn't exist in the iOS build, the slice shape + of the DNA Pizza logo is hardcoded there, instead of being generated. + (These vertexes were generated by GLUtesselator and saved.) + */ + +static const GLfloat dnapizza_triangles[]={ + 0.315,0.213301,0, 0.296699,0.195,0, 0.309,0.455,0, + 0.296699,0.195,0, 0.29,0.17,0, 0.309,0.455,0, + 0.309,0.455,0, 0.29,0.17,0, 0.26,0.452,0, + 0.29,0.17,0, 0.23,0.042,0, 0.26,0.452,0, + 0.26,0.452,0, 0.23,0.042,0, 0.216,0.293,0, + 0.23,0.042,0, 0.21,0,0, 0.216,0.293,0, + 0.216,0.293,0, 0.21,0,0, 0.149,0.178,0, + 0.21,0,0, 0.102,0.178,0, 0.149,0.178,0, + 0.376,0.572,0, 0.353,0.613,0, 0.411,0.68402,0, + 0.376,0.572,0, 0.411,0.68402,0, 0.383301,0.195,0, + 0.376,0.572,0, 0.383301,0.195,0, 0.365,0.213301,0, + 0.376,0.572,0, 0.365,0.213301,0, 0.34,0.22,0, + 0.376,0.572,0, 0.34,0.22,0, 0.315,0.213301,0, + 0.376,0.572,0, 0.315,0.213301,0, 0.309,0.455,0, + 0.39,0.17,0, 0.383301,0.195,0, 0.411,0.68402,0, + 0.39,0.17,0, 0.411,0.68402,0, 0.48,0.17,0, + 0.39,0.17,0, 0.48,0.17,0, 0.488039,0.14,0, + 0.39,0.17,0, 0.488039,0.14,0, 0.51,0.118038,0, + 0.39,0.17,0, 0.51,0.118038,0, 0.616,0.042,0, + 0.39,0.17,0, 0.616,0.042,0, 0.383301,0.145,0, + 0.798,0,0, 0.641,0,0, 0.645595,0.469053,0, + 0.798,0,0, 0.645595,0.469053,0, 0.653683,0.457714,0, + 0.798,0,0, 0.653683,0.457714,0, 0.661572,0.446236,0, + 0.798,0,0, 0.661572,0.446236,0, 0.669259,0.434622,0, + 0.798,0,0, 0.669259,0.434622,0, 0.676742,0.422876,0, + 0.798,0,0, 0.676742,0.422876,0, 0.68402,0.411,0, + 0.798,0,0, 0.68402,0.411,0, 0.691088,0.399,0, + 0.798,0,0, 0.691088,0.399,0, 0.697947,0.386878,0, + 0.798,0,0, 0.697947,0.386878,0, 0.704592,0.374638,0, + 0.798,0,0, 0.704592,0.374638,0, 0.711023,0.362284,0, + 0.798,0,0, 0.711023,0.362284,0, 0.717238,0.34982,0, + 0.798,0,0, 0.717238,0.34982,0, 0.723234,0.337249,0, + 0.798,0,0, 0.723234,0.337249,0, 0.729009,0.324576,0, + 0.798,0,0, 0.729009,0.324576,0, 0.734563,0.311803,0, + 0.798,0,0, 0.734563,0.311803,0, 0.739893,0.298936,0, + 0.798,0,0, 0.739893,0.298936,0, 0.744997,0.285978,0, + 0.798,0,0, 0.744997,0.285978,0, 0.749875,0.272932,0, + 0.798,0,0, 0.749875,0.272932,0, 0.754524,0.259803,0, + 0.798,0,0, 0.754524,0.259803,0, 0.758943,0.246596,0, + 0.798,0,0, 0.758943,0.246596,0, 0.763131,0.233313,0, + 0.798,0,0, 0.763131,0.233313,0, 0.767087,0.219959,0, + 0.798,0,0, 0.767087,0.219959,0, 0.770809,0.206538,0, + 0.798,0,0, 0.770809,0.206538,0, 0.774296,0.193054,0, + 0.798,0,0, 0.774296,0.193054,0, 0.777547,0.179511,0, + 0.798,0,0, 0.777547,0.179511,0, 0.780562,0.165914,0, + 0.798,0,0, 0.780562,0.165914,0, 0.783338,0.152266,0, + 0.798,0,0, 0.783338,0.152266,0, 0.785877,0.138571,0, + 0.798,0,0, 0.785877,0.138571,0, 0.788175,0.124835,0, + 0.798,0,0, 0.788175,0.124835,0, 0.790234,0.11106,0, + 0.798,0,0, 0.790234,0.11106,0, 0.792052,0.097252,0, + 0.798,0,0, 0.792052,0.097252,0, 0.793628,0.083414,0, + 0.798,0,0, 0.793628,0.083414,0, 0.794963,0.06955,0, + 0.798,0,0, 0.794963,0.06955,0, 0.796056,0.055666,0, + 0.798,0,0, 0.796056,0.055666,0, 0.796906,0.041764,0, + 0.798,0,0, 0.796906,0.041764,0, 0.797514,0.02785,0, + 0.798,0,0, 0.797514,0.02785,0, 0.797878,0.013927,0, + 0.641,0,0, 0.616,0.042,0, 0.620162,0.502198,0, + 0.641,0,0, 0.620162,0.502198,0, 0.628833,0.491298,0, + 0.641,0,0, 0.628833,0.491298,0, 0.637311,0.480248,0, + 0.641,0,0, 0.637311,0.480248,0, 0.645595,0.469053,0, + 0.616,0.042,0, 0.51,0.118038,0, 0.54,0.11,0, + 0.616,0.042,0, 0.54,0.11,0, 0.57,0.118038,0, + 0.616,0.042,0, 0.57,0.118038,0, 0.591962,0.14,0, + 0.616,0.042,0, 0.591962,0.14,0, 0.6,0.17,0, + 0.616,0.042,0, 0.6,0.17,0, 0.601962,0.33,0, + 0.616,0.042,0, 0.601962,0.33,0, 0.61,0.36,0, + 0.616,0.042,0, 0.61,0.36,0, 0.611303,0.512945,0, + 0.616,0.042,0, 0.611303,0.512945,0, 0.620162,0.502198,0, + 0.48,0.17,0, 0.411,0.68402,0, 0.422875,0.676743,0, + 0.48,0.17,0, 0.422875,0.676743,0, 0.434622,0.669259,0, + 0.48,0.17,0, 0.434622,0.669259,0, 0.446236,0.661572,0, + 0.48,0.17,0, 0.446236,0.661572,0, 0.457714,0.653684,0, + 0.48,0.17,0, 0.457714,0.653684,0, 0.469052,0.645596,0, + 0.48,0.17,0, 0.469052,0.645596,0, 0.480248,0.637311,0, + 0.48,0.17,0, 0.480248,0.637311,0, 0.488038,0.2,0, + 0.616,0.042,0, 0.23,0.042,0, 0.315,0.126699,0, + 0.616,0.042,0, 0.315,0.126699,0, 0.34,0.12,0, + 0.616,0.042,0, 0.34,0.12,0, 0.365,0.126699,0, + 0.616,0.042,0, 0.365,0.126699,0, 0.383301,0.145,0, + 0.23,0.042,0, 0.29,0.17,0, 0.296699,0.145,0, + 0.23,0.042,0, 0.296699,0.145,0, 0.315,0.126699,0, + 0.58362,0.544235,0, 0.593029,0.533966,0, 0.601961,0.39,0, + 0.593029,0.533966,0, 0.602258,0.523535,0, 0.601961,0.39,0, + 0.601961,0.39,0, 0.602258,0.523535,0, 0.61,0.36,0, + 0.602258,0.523535,0, 0.611303,0.512945,0, 0.61,0.36,0, + 0.58,0.411962,0, 0.55,0.42,0, 0.554337,0.574033,0, + 0.58,0.411962,0, 0.554337,0.574033,0, 0.564271,0.564271,0, + 0.58,0.411962,0, 0.564271,0.564271,0, 0.574033,0.554338,0, + 0.58,0.411962,0, 0.574033,0.554338,0, 0.58362,0.544235,0, + 0.58,0.411962,0, 0.58362,0.544235,0, 0.601961,0.39,0, + 0.55,0.42,0, 0.52,0.411962,0, 0.523535,0.602258,0, + 0.55,0.42,0, 0.523535,0.602258,0, 0.533966,0.59303,0, + 0.55,0.42,0, 0.533966,0.59303,0, 0.544235,0.58362,0, + 0.55,0.42,0, 0.544235,0.58362,0, 0.554337,0.574033,0, + 0.51,0.221962,0, 0.488038,0.2,0, 0.49,0.36,0, + 0.488038,0.2,0, 0.491298,0.628833,0, 0.49,0.36,0, + 0.49,0.36,0, 0.491298,0.628833,0, 0.498038,0.39,0, + 0.491298,0.628833,0, 0.502197,0.620163,0, 0.498038,0.39,0, + 0.498038,0.39,0, 0.502197,0.620163,0, 0.52,0.411962,0, + 0.502197,0.620163,0, 0.512944,0.611304,0, 0.52,0.411962,0, + 0.52,0.411962,0, 0.512944,0.611304,0, 0.523535,0.602258,0, + 0.49,0.36,0, 0.498039,0.33,0, 0.51,0.221962,0, + 0.498039,0.33,0, 0.52,0.308039,0, 0.51,0.221962,0, + 0.51,0.221962,0, 0.52,0.308039,0, 0.54,0.23,0, + 0.52,0.308039,0, 0.55,0.3,0, 0.54,0.23,0, + 0.54,0.23,0, 0.55,0.3,0, 0.57,0.221962,0, + 0.55,0.3,0, 0.58,0.308039,0, 0.57,0.221962,0, + 0.57,0.221962,0, 0.58,0.308039,0, 0.591962,0.2,0, + 0.58,0.308039,0, 0.601962,0.33,0, 0.591962,0.2,0, + 0.591962,0.2,0, 0.601962,0.33,0, 0.6,0.17,0, + 0.488038,0.2,0, 0.480248,0.637311,0, 0.491298,0.628833,0, + 0.26,0.452,0, 0.216,0.293,0, 0.192,0.332,0, + 0.102,0.178,0, 0.21,0,0, 0,0,0, +}; diff --git a/hacks/glx/dolphin.c b/hacks/glx/dolphin.c new file mode 100644 index 0000000..2ef4e33 --- /dev/null +++ b/hacks/glx/dolphin.c @@ -0,0 +1,2061 @@ +/* atlantis --- Shows moving 3D sea animals */ + +#if 0 +static const char sccsid[] = "@(#)dolphin.c 1.2 98/06/16 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 1998. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Mark J. Kilgard + * as a demo for openGL programming. + * + * Porting it to xlock was possible by comparing the original Mesa's morph3d + * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna + * (look at morph3d.c) for his indirect help. + * + * Thanks goes also to Brian Paul for making it possible and inexpensive + * to use OpenGL at home. + * + * My e-mail address is lassauge@sagem.fr + * + * Eric Lassauge (May-13-1998) + * + */ + +/** + * (c) Copyright 1993, 1994, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(TM) is a trademark of Silicon Graphics, Inc. + */ + +#ifdef USE_GL + +#include "atlantis.h" + +/* *INDENT-OFF* */ +static const float N001[3] = {-0.005937, -0.101998, -0.994767}; +static const float N002[3] = {0.93678, -0.200803, 0.286569}; +static const float N003[3] = {-0.233062, 0.972058, 0.028007}; +#if 0 +static const float N004[3] = {0, 1, 0}; +#endif +static const float N005[3] = {0.898117, 0.360171, 0.252315}; +static const float N006[3] = {-0.915437, 0.348456, 0.201378}; +static const float N007[3] = {0.602263, -0.777527, 0.18092}; +static const float N008[3] = {-0.906912, -0.412015, 0.088061}; +#if 0 +static const float N009[3] = {-0.015623, 0.999878, 0}; +static const float N010[3] = {0, -0.992278, 0.124035}; +static const float N011[3] = {0, -0.936329, -0.351123}; +#endif +static const float N012[3] = {0.884408, -0.429417, -0.182821}; +static const float N013[3] = {0.921121, 0.311084, -0.234016}; +static const float N014[3] = {0.382635, 0.877882, -0.287948}; +static const float N015[3] = {-0.380046, 0.888166, -0.258316}; +static const float N016[3] = {-0.891515, 0.392238, -0.226607}; +static const float N017[3] = {-0.901419, -0.382002, -0.203763}; +static const float N018[3] = {-0.367225, -0.911091, -0.187243}; +static const float N019[3] = {0.339539, -0.924846, -0.171388}; +static const float N020[3] = {0.914706, -0.378617, -0.14129}; +static const float N021[3] = {0.950662, 0.262713, -0.164994}; +static const float N022[3] = {0.546359, 0.80146, -0.243218}; +static const float N023[3] = {-0.315796, 0.917068, -0.243431}; +static const float N024[3] = {-0.825687, 0.532277, -0.186875}; +static const float N025[3] = {-0.974763, -0.155232, -0.160435}; +static const float N026[3] = {-0.560596, -0.816658, -0.137119}; +static const float N027[3] = {0.38021, -0.910817, -0.160786}; +static const float N028[3] = {0.923772, -0.358322, -0.135093}; +static const float N029[3] = {0.951202, 0.275053, -0.139859}; +static const float N030[3] = {0.686099, 0.702548, -0.188932}; +static const float N031[3] = {-0.521865, 0.826719, -0.21022}; +static const float N032[3] = {-0.92382, 0.346739, -0.162258}; +static const float N033[3] = {-0.902095, -0.409995, -0.134646}; +static const float N034[3] = {-0.509115, -0.848498, -0.144404}; +static const float N035[3] = {0.456469, -0.880293, -0.129305}; +static const float N036[3] = {0.873401, -0.475489, -0.105266}; +static const float N037[3] = {0.970825, 0.179861, -0.158584}; +static const float N038[3] = {0.675609, 0.714187, -0.183004}; +static const float N039[3] = {-0.523574, 0.830212, -0.19136}; +static const float N040[3] = {-0.958895, 0.230808, -0.165071}; +static const float N041[3] = {-0.918285, -0.376803, -0.121542}; +static const float N042[3] = {-0.622467, -0.774167, -0.114888}; +static const float N043[3] = {0.404497, -0.908807, -0.102231}; +static const float N044[3] = {0.930538, -0.365155, -0.027588}; +static const float N045[3] = {0.92192, 0.374157, -0.100345}; +static const float N046[3] = {0.507346, 0.860739, 0.041562}; +static const float N047[3] = {-0.394646, 0.918815, -0.00573}; +static const float N048[3] = {-0.925411, 0.373024, -0.066837}; +static const float N049[3] = {-0.945337, -0.322309, -0.049551}; +static const float N050[3] = {-0.660437, -0.750557, -0.022072}; +static const float N051[3] = {0.488835, -0.87195, -0.027261}; +static const float N052[3] = {0.902599, -0.421397, 0.087969}; +static const float N053[3] = {0.938636, 0.322606, 0.12202}; +static const float N054[3] = {0.484605, 0.871078, 0.079878}; +static const float N055[3] = {-0.353607, 0.931559, 0.084619}; +static const float N056[3] = {-0.867759, 0.478564, 0.134054}; +static const float N057[3] = {-0.951583, -0.29603, 0.082794}; +static const float N058[3] = {-0.672355, -0.730209, 0.121384}; +static const float N059[3] = {0.528336, -0.842452, 0.105525}; +static const float N060[3] = {0.786913, -0.56476, 0.248627}; +#if 0 +static const float N061[3] = {0, 1, 0}; +#endif +static const float N062[3] = {0.622098, 0.76523, 0.165584}; +static const float N063[3] = {-0.631711, 0.767816, 0.106773}; +static const float N064[3] = {-0.687886, 0.606351, 0.398938}; +static const float N065[3] = {-0.946327, -0.281623, 0.158598}; +static const float N066[3] = {-0.509549, -0.860437, 0.002776}; +static const float N067[3] = {0.462594, -0.876692, 0.131977}; +#if 0 +static const float N068[3] = {0, -0.992278, 0.124035}; +static const float N069[3] = {0, -0.970143, -0.242536}; +static const float N070[3] = {0.015502, 0.992159, -0.12402}; +#endif +static const float N071[3] = {0, 1, 0}; +#if 0 +static const float N072[3] = {0, 1, 0}; +static const float N073[3] = {0, 1, 0}; +static const float N074[3] = {0, -1, 0}; +static const float N075[3] = {-0.242536, 0, -0.970143}; +static const float N076[3] = {-0.010336, -0.992225, -0.124028}; +#endif +static const float N077[3] = {-0.88077, 0.461448, 0.106351}; +static const float N078[3] = {-0.88077, 0.461448, 0.106351}; +static const float N079[3] = {-0.88077, 0.461448, 0.106351}; +static const float N080[3] = {-0.88077, 0.461448, 0.106351}; +static const float N081[3] = {-0.571197, 0.816173, 0.087152}; +static const float N082[3] = {-0.88077, 0.461448, 0.106351}; +static const float N083[3] = {-0.571197, 0.816173, 0.087152}; +static const float N084[3] = {-0.571197, 0.816173, 0.087152}; +static const float N085[3] = {-0.88077, 0.461448, 0.106351}; +static const float N086[3] = {-0.571197, 0.816173, 0.087152}; +static const float N087[3] = {-0.88077, 0.461448, 0.106351}; +static const float N088[3] = {-0.88077, 0.461448, 0.106351}; +static const float N089[3] = {-0.88077, 0.461448, 0.106351}; +static const float N090[3] = {-0.88077, 0.461448, 0.106351}; +static const float N091[3] = {0, 1, 0}; +static const float N092[3] = {0, 1, 0}; +static const float N093[3] = {0, 1, 0}; +static const float N094[3] = {1, 0, 0}; +static const float N095[3] = {-1, 0, 0}; +#if 0 +static const float N096[3] = {0, 1, 0}; +#endif +static const float N097[3] = {-0.697296, 0.702881, 0.140491}; +static const float N098[3] = {0.918864, 0.340821, 0.198819}; +static const float N099[3] = {-0.932737, 0.201195, 0.299202}; +static const float N100[3] = {0.029517, 0.981679, 0.188244}; +#if 0 +static const float N101[3] = {0, 1, 0}; +#endif +static const float N102[3] = {0.813521, -0.204936, 0.544229}; +#if 0 +static const float N103[3] = {0, 1, 0}; +static const float N104[3] = {0, 1, 0}; +static const float N105[3] = {0, 1, 0}; +static const float N106[3] = {0, 1, 0}; +static const float N107[3] = {0, 1, 0}; +static const float N108[3] = {0, 1, 0}; +static const float N109[3] = {0, 1, 0}; +#endif +static const float N110[3] = {-0.78148, -0.384779, 0.491155}; +static const float N111[3] = {-0.722243, 0.384927, 0.574627}; +static const float N112[3] = {-0.752278, 0.502679, 0.425901}; +static const float N113[3] = {0.547257, 0.36791, 0.751766}; +static const float N114[3] = {0.725949, -0.232568, 0.647233}; +static const float N115[3] = {-0.747182, -0.660786, 0.07128}; +static const float N116[3] = {0.931519, 0.200748, 0.30327}; +static const float N117[3] = {-0.828928, 0.313757, 0.463071}; +static const float N118[3] = {0.902554, -0.370967, 0.218587}; +static const float N119[3] = {-0.879257, -0.441851, 0.177973}; +static const float N120[3] = {0.642327, 0.611901, 0.461512}; +static const float N121[3] = {0.964817, -0.202322, 0.16791}; +static const float N122[3] = {0, 1, 0}; +#if 0 +static const float N123[3] = {-0.980734, 0.041447, 0.1909}; +static const float N124[3] = {-0.980734, 0.041447, 0.1909}; +static const float N125[3] = {-0.980734, 0.041447, 0.1909}; +static const float N126[3] = {0, 1, 0}; +static const float N127[3] = {0, 1, 0}; +static const float N128[3] = {0, 1, 0}; +static const float N129[3] = {0.96325, 0.004839, 0.268565}; +static const float N130[3] = {0.96325, 0.004839, 0.268565}; +static const float N131[3] = {0.96325, 0.004839, 0.268565}; +static const float N132[3] = {0, 1, 0}; +static const float N133[3] = {0, 1, 0}; +static const float N134[3] = {0, 1, 0}; +#endif +static float P001[3] = {5.68, -300.95, 1324.7}; +static const float P002[3] = {338.69, -219.63, 9677.03}; +static const float P003[3] = {12.18, 474.59, 9138.14}; +#if 0 +static const float P004[3] = {-7.49, -388.91, 10896.74}; +#endif +static const float P005[3] = {487.51, 198.05, 9350.78}; +static const float P006[3] = {-457.61, 68.74, 9427.85}; +static const float P007[3] = {156.52, -266.72, 10311.68}; +static const float P008[3] = {-185.56, -266.51, 10310.47}; +static float P009[3] = {124.39, -261.46, 1942.34}; +static float P010[3] = {-130.05, -261.46, 1946.03}; +static float P011[3] = {141.07, -320.11, 1239.38}; +static float P012[3] = {156.48, -360.12, 2073.41}; +static float P013[3] = {162, -175.88, 2064.44}; +static float P014[3] = {88.16, -87.72, 2064.02}; +static float P015[3] = {-65.21, -96.13, 2064.02}; +static float P016[3] = {-156.48, -180.96, 2064.44}; +static float P017[3] = {-162, -368.93, 2082.39}; +static float P018[3] = {-88.16, -439.22, 2082.39}; +static float P019[3] = {65.21, -440.32, 2083.39}; +static float P020[3] = {246.87, -356.02, 2576.95}; +static float P021[3] = {253.17, -111.15, 2567.15}; +static float P022[3] = {132.34, 51.41, 2559.84}; +static float P023[3] = {-97.88, 40.44, 2567.15}; +static float P024[3] = {-222.97, -117.49, 2567.15}; +static float P025[3] = {-252.22, -371.53, 2569.92}; +static float P026[3] = {-108.44, -518.19, 2586.75}; +static float P027[3] = {97.88, -524.79, 2586.75}; +static float P028[3] = {370.03, -421.19, 3419.7}; +static float P029[3] = {351.15, -16.98, 3423.17}; +static float P030[3] = {200.66, 248.46, 3430.37}; +static float P031[3] = {-148.42, 235.02, 3417.91}; +static float P032[3] = {-360.21, -30.27, 3416.84}; +static float P033[3] = {-357.9, -414.89, 3407.04}; +static float P034[3] = {-148.88, -631.35, 3409.9}; +static float P035[3] = {156.38, -632.59, 3419.7}; +static float P036[3] = {462.61, -469.21, 4431.51}; +static float P037[3] = {466.6, 102.25, 4434.98}; +static float P038[3] = {243.05, 474.34, 4562.02}; +static float P039[3] = {-191.23, 474.4, 4554.42}; +static float P040[3] = {-476.12, 111.05, 4451.11}; +static float P041[3] = {-473.36, -470.74, 4444.78}; +static float P042[3] = {-266.95, -748.41, 4447.78}; +static float P043[3] = {211.14, -749.91, 4429.73}; +static float P044[3] = {680.57, -370.27, 5943.46}; +static float P045[3] = {834.01, 363.09, 6360.63}; +static float P046[3] = {371.29, 804.51, 6486.26}; +static float P047[3] = {-291.43, 797.22, 6494.28}; +static float P048[3] = {-784.13, 370.75, 6378.01}; +static float P049[3] = {-743.29, -325.82, 5943.46}; +static float P050[3] = {-383.24, -804.77, 5943.46}; +static float P051[3] = {283.47, -846.09, 5943.46}; +static const float iP001[3] = {5.68, -300.95, 1324.7}; +#if 0 +static const float iP002[3] = {338.69, -219.63, 9677.03}; +static const float iP003[3] = {12.18, 624.93, 8956.39}; +static const float iP004[3] = {-7.49, -388.91, 10896.74}; +static const float iP005[3] = {487.51, 198.05, 9350.78}; +static const float iP006[3] = {-457.61, 199.04, 9353.01}; +static const float iP007[3] = {156.52, -266.72, 10311.68}; +static const float iP008[3] = {-185.56, -266.51, 10310.47}; +#endif +static const float iP009[3] = {124.39, -261.46, 1942.34}; +static const float iP010[3] = {-130.05, -261.46, 1946.03}; +static const float iP011[3] = {141.07, -320.11, 1239.38}; +static const float iP012[3] = {156.48, -360.12, 2073.41}; +static const float iP013[3] = {162, -175.88, 2064.44}; +static const float iP014[3] = {88.16, -87.72, 2064.02}; +static const float iP015[3] = {-65.21, -96.13, 2064.02}; +static const float iP016[3] = {-156.48, -180.96, 2064.44}; +static const float iP017[3] = {-162, -368.93, 2082.39}; +static const float iP018[3] = {-88.16, -439.22, 2082.39}; +static const float iP019[3] = {65.21, -440.32, 2083.39}; +static const float iP020[3] = {246.87, -356.02, 2576.95}; +static const float iP021[3] = {253.17, -111.15, 2567.15}; +static const float iP022[3] = {132.34, 51.41, 2559.84}; +static const float iP023[3] = {-97.88, 40.44, 2567.15}; +static const float iP024[3] = {-222.97, -117.49, 2567.15}; +static const float iP025[3] = {-252.22, -371.53, 2569.92}; +static const float iP026[3] = {-108.44, -518.19, 2586.75}; +static const float iP027[3] = {97.88, -524.79, 2586.75}; +static const float iP028[3] = {370.03, -421.19, 3419.7}; +static const float iP029[3] = {351.15, -16.98, 3423.17}; +static const float iP030[3] = {200.66, 248.46, 3430.37}; +static const float iP031[3] = {-148.42, 235.02, 3417.91}; +static const float iP032[3] = {-360.21, -30.27, 3416.84}; +static const float iP033[3] = {-357.9, -414.89, 3407.04}; +static const float iP034[3] = {-148.88, -631.35, 3409.9}; +static const float iP035[3] = {156.38, -632.59, 3419.7}; +static const float iP036[3] = {462.61, -469.21, 4431.51}; +static const float iP037[3] = {466.6, 102.25, 4434.98}; +static const float iP038[3] = {243.05, 474.34, 4562.02}; +static const float iP039[3] = {-191.23, 474.4, 4554.42}; +static const float iP040[3] = {-476.12, 111.05, 4451.11}; +static const float iP041[3] = {-473.36, -470.74, 4444.78}; +static const float iP042[3] = {-266.95, -748.41, 4447.78}; +static const float iP043[3] = {211.14, -749.91, 4429.73}; +static const float iP044[3] = {680.57, -370.27, 5943.46}; +static const float iP045[3] = {834.01, 363.09, 6360.63}; +static const float iP046[3] = {371.29, 804.51, 6486.26}; +static const float iP047[3] = {-291.43, 797.22, 6494.28}; +static const float iP048[3] = {-784.13, 370.75, 6378.01}; +static const float iP049[3] = {-743.29, -325.82, 5943.46}; +static const float iP050[3] = {-383.24, -804.77, 5943.46}; +static const float iP051[3] = {283.47, -846.09, 5943.46}; +static const float P052[3] = {599.09, -300.15, 7894.03}; +static const float P053[3] = {735.48, 306.26, 7911.92}; +static const float P054[3] = {246.22, 558.53, 8460.5}; +static const float P055[3] = {-230.41, 559.84, 8473.23}; +static const float P056[3] = {-698.66, 320.83, 7902.59}; +static const float P057[3] = {-643.29, -299.16, 7902.59}; +static const float P058[3] = {-341.47, -719.3, 7902.59}; +static const float P059[3] = {252.57, -756.12, 7902.59}; +static const float P060[3] = {458.39, -265.31, 9355.44}; +#if 0 +static const float P061[3] = {433.38, -161.9, 9503.03}; +#endif +static const float P062[3] = {224.04, 338.75, 9450.3}; +static const float P063[3] = {-165.71, 341.04, 9462.35}; +static const float P064[3] = {-298.11, 110.13, 10180.37}; +static const float P065[3] = {-473.99, -219.71, 9355.44}; +static const float P066[3] = {-211.97, -479.87, 9355.44}; +static const float P067[3] = {192.86, -491.45, 9348.73}; +static float P068[3] = {-136.29, -319.84, 1228.73}; +static float P069[3] = {1111.17, -314.14, 1314.19}; +static float P070[3] = {-1167.34, -321.61, 1319.45}; +static float P071[3] = {1404.86, -306.66, 1235.45}; +static float P072[3] = {-1409.73, -314.14, 1247.66}; +static float P073[3] = {1254.01, -296.87, 1544.58}; +static float P074[3] = {-1262.09, -291.7, 1504.26}; +static float P075[3] = {965.71, -269.26, 1742.65}; +static float P076[3] = {-900.97, -276.74, 1726.07}; +static const float iP068[3] = {-136.29, -319.84, 1228.73}; +static const float iP069[3] = {1111.17, -314.14, 1314.19}; +static const float iP070[3] = {-1167.34, -321.61, 1319.45}; +static const float iP071[3] = {1404.86, -306.66, 1235.45}; +static const float iP072[3] = {-1409.73, -314.14, 1247.66}; +static const float iP073[3] = {1254.01, -296.87, 1544.58}; +static const float iP074[3] = {-1262.09, -291.7, 1504.26}; +static const float iP075[3] = {965.71, -269.26, 1742.65}; +static const float iP076[3] = {-900.97, -276.74, 1726.07}; +static const float P077[3] = {1058, -448.81, 8194.66}; +static const float P078[3] = {-1016.51, -456.43, 8190.62}; +static const float P079[3] = {-1515.96, -676.45, 7754.93}; +static const float P080[3] = {1856.75, -830.34, 7296.56}; +static const float P081[3] = {1472.16, -497.38, 7399.68}; +static const float P082[3] = {-1775.26, -829.51, 7298.46}; +static const float P083[3] = {911.09, -252.51, 7510.99}; +static const float P084[3] = {-1451.94, -495.62, 7384.3}; +static const float P085[3] = {1598.75, -669.26, 7769.9}; +static const float P086[3] = {-836.53, -250.08, 7463.25}; +static const float P087[3] = {722.87, -158.18, 8006.41}; +static const float P088[3] = {-688.86, -162.28, 7993.89}; +static const float P089[3] = {-626.92, -185.3, 8364.98}; +static const float P090[3] = {647.72, -189.46, 8354.99}; +static float P091[3] = {0, 835.01, 5555.62}; +static float P092[3] = {0, 1350.18, 5220.86}; +static float P093[3] = {0, 1422.94, 5285.27}; +static float P094[3] = {0, 1296.75, 5650.19}; +static float P095[3] = {0, 795.63, 6493.88}; +static const float iP091[3] = {0, 835.01, 5555.62}; +static const float iP092[3] = {0, 1350.18, 5220.86}; +static const float iP093[3] = {0, 1422.94, 5285.27}; +static const float iP094[3] = {0, 1296.75, 5650.19}; +static const float iP095[3] = {0, 795.63, 6493.88}; +#if 0 +static const float P096[3] = {-447.38, -165.99, 9499.6}; +#endif +static float P097[3] = {-194.91, -357.14, 10313.32}; +static float P098[3] = {135.35, -357.66, 10307.94}; +static const float iP097[3] = {-194.91, -357.14, 10313.32}; +static const float iP098[3] = {135.35, -357.66, 10307.94}; +static const float P099[3] = {-380.53, -221.14, 9677.98}; +static const float P100[3] = {0, 412.99, 9629.33}; +#if 0 +static const float P101[3] = {5.7, 567, 7862.98}; +#endif +static float P102[3] = {59.51, -412.55, 10677.58}; +static const float iP102[3] = {59.51, -412.55, 10677.58}; +static const float P103[3] = {6.5, 484.74, 9009.94}; +#if 0 +static const float P104[3] = {-9.86, 567.62, 7858.65}; +#endif +static const float P105[3] = {-41.86, 476.51, 9078.17}; +#if 0 +static const float P106[3] = {22.75, 568.13, 7782.83}; +static const float P107[3] = {58.93, 568.42, 7775.94}; +#endif +static const float P108[3] = {49.2, 476.83, 9078.24}; +#if 0 +static const float P109[3] = {99.21, 566, 7858.65}; +#endif +static float P110[3] = {-187.62, -410.04, 10674.12}; +static const float iP110[3] = {-187.62, -410.04, 10674.12}; +static float P111[3] = {-184.25, -318.7, 10723.88}; +static const float iP111[3] = {-184.25, -318.7, 10723.88}; +static const float P112[3] = {-179.61, -142.81, 10670.26}; +static const float P113[3] = {57.43, -147.94, 10675.26}; +static const float P114[3] = {54.06, -218.9, 10712.44}; +static const float P115[3] = {-186.35, -212.09, 10713.76}; +static const float P116[3] = {205.9, -84.61, 10275.97}; +static const float P117[3] = {-230.96, -83.26, 10280.09}; +static const float iP118[3] = {216.78, -509.17, 10098.94}; +static const float iP119[3] = {-313.21, -510.79, 10102.62}; +static float P118[3] = {216.78, -509.17, 10098.94}; +static float P119[3] = {-313.21, -510.79, 10102.62}; +static const float P120[3] = {217.95, 96.34, 10161.62}; +static float P121[3] = {71.99, -319.74, 10717.7}; +static const float iP121[3] = {71.99, -319.74, 10717.7}; +static float P122[3] = {0, 602.74, 5375.84}; +static const float iP122[3] = {0, 602.74, 5375.84}; +static const float P123[3] = {-448.94, -203.14, 9499.6}; +static const float P124[3] = {-442.64, -185.2, 9528.07}; +static const float P125[3] = {-441.07, -148.05, 9528.07}; +static const float P126[3] = {-443.43, -128.84, 9499.6}; +static const float P127[3] = {-456.87, -146.78, 9466.67}; +static const float P128[3] = {-453.68, -183.93, 9466.67}; +static const float P129[3] = {428.43, -124.08, 9503.03}; +static const float P130[3] = {419.73, -142.14, 9534.56}; +static const float P131[3] = {419.92, -179.96, 9534.56}; +static const float P132[3] = {431.2, -199.73, 9505.26}; +static const float P133[3] = {442.28, -181.67, 9475.96}; +static const float P134[3] = {442.08, -143.84, 9475.96}; +/* *INDENT-ON* */ + + + +static void +Dolphin001(GLenum cap) +{ + glNormal3fv(N071); + glBegin(cap); + glVertex3fv(P001); + glVertex3fv(P068); + glVertex3fv(P010); + glEnd(); + glBegin(cap); + glVertex3fv(P068); + glVertex3fv(P076); + glVertex3fv(P010); + glEnd(); + glBegin(cap); + glVertex3fv(P068); + glVertex3fv(P070); + glVertex3fv(P076); + glEnd(); + glBegin(cap); + glVertex3fv(P076); + glVertex3fv(P070); + glVertex3fv(P074); + glEnd(); + glBegin(cap); + glVertex3fv(P070); + glVertex3fv(P072); + glVertex3fv(P074); + glEnd(); + glNormal3fv(N119); + glBegin(cap); + glVertex3fv(P072); + glVertex3fv(P070); + glVertex3fv(P074); + glEnd(); + glBegin(cap); + glVertex3fv(P074); + glVertex3fv(P070); + glVertex3fv(P076); + glEnd(); + glBegin(cap); + glVertex3fv(P070); + glVertex3fv(P068); + glVertex3fv(P076); + glEnd(); + glBegin(cap); + glVertex3fv(P076); + glVertex3fv(P068); + glVertex3fv(P010); + glEnd(); + glBegin(cap); + glVertex3fv(P068); + glVertex3fv(P001); + glVertex3fv(P010); + glEnd(); +} + +static void +Dolphin002(GLenum cap) +{ + glNormal3fv(N071); + glBegin(cap); + glVertex3fv(P011); + glVertex3fv(P001); + glVertex3fv(P009); + glEnd(); + glBegin(cap); + glVertex3fv(P075); + glVertex3fv(P011); + glVertex3fv(P009); + glEnd(); + glBegin(cap); + glVertex3fv(P069); + glVertex3fv(P011); + glVertex3fv(P075); + glEnd(); + glBegin(cap); + glVertex3fv(P069); + glVertex3fv(P075); + glVertex3fv(P073); + glEnd(); + glBegin(cap); + glVertex3fv(P071); + glVertex3fv(P069); + glVertex3fv(P073); + glEnd(); + glNormal3fv(N119); + glBegin(cap); + glVertex3fv(P001); + glVertex3fv(P011); + glVertex3fv(P009); + glEnd(); + glBegin(cap); + glVertex3fv(P009); + glVertex3fv(P011); + glVertex3fv(P075); + glEnd(); + glBegin(cap); + glVertex3fv(P011); + glVertex3fv(P069); + glVertex3fv(P075); + glEnd(); + glBegin(cap); + glVertex3fv(P069); + glVertex3fv(P073); + glVertex3fv(P075); + glEnd(); + glBegin(cap); + glVertex3fv(P069); + glVertex3fv(P071); + glVertex3fv(P073); + glEnd(); +} + +static void +Dolphin003(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N019); + glVertex3fv(P019); + glEnd(); + glBegin(cap); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N012); + glVertex3fv(P012); + glEnd(); + glBegin(cap); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N018); + glVertex3fv(P018); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N016); + glVertex3fv(P016); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N012); + glVertex3fv(P012); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N015); + glVertex3fv(P015); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N013); + glVertex3fv(P013); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N014); + glVertex3fv(P014); + glEnd(); +} + +static void +Dolphin004(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N022); + glVertex3fv(P022); + glEnd(); + glBegin(cap); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N023); + glVertex3fv(P023); + glEnd(); + glBegin(cap); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N024); + glVertex3fv(P024); + glEnd(); + glBegin(cap); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N025); + glVertex3fv(P025); + glEnd(); + glBegin(cap); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N021); + glVertex3fv(P021); + glEnd(); + glBegin(cap); + glNormal3fv(N012); + glVertex3fv(P012); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N020); + glVertex3fv(P020); + glEnd(); + glBegin(cap); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N026); + glVertex3fv(P026); + glEnd(); + glBegin(cap); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N012); + glVertex3fv(P012); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N027); + glVertex3fv(P027); + glEnd(); +} + +static void +Dolphin005(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N030); + glVertex3fv(P030); + glEnd(); + glBegin(cap); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N030); + glVertex3fv(P030); + glEnd(); + glBegin(cap); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); + glBegin(cap); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N031); + glVertex3fv(P031); + glEnd(); + glBegin(cap); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N031); + glVertex3fv(P031); + glEnd(); + glBegin(cap); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N032); + glVertex3fv(P032); + glEnd(); + glBegin(cap); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N032); + glVertex3fv(P032); + glEnd(); + glBegin(cap); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); + glBegin(cap); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N028); + glVertex3fv(P028); + glEnd(); + glBegin(cap); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N028); + glVertex3fv(P028); + glEnd(); + glBegin(cap); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N035); + glVertex3fv(P035); + glEnd(); + glBegin(cap); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N033); + glVertex3fv(P033); + glEnd(); + glBegin(cap); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N034); + glVertex3fv(P034); + glEnd(); + glBegin(cap); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N034); + glVertex3fv(P034); + glEnd(); +} + +static void +Dolphin006(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N092); + glVertex3fv(P092); + glNormal3fv(N093); + glVertex3fv(P093); + glNormal3fv(N094); + glVertex3fv(P094); + glEnd(); + glBegin(cap); + glNormal3fv(N093); + glVertex3fv(P093); + glNormal3fv(N092); + glVertex3fv(P092); + glNormal3fv(N094); + glVertex3fv(P094); + glEnd(); + glBegin(cap); + glNormal3fv(N092); + glVertex3fv(P092); + glNormal3fv(N091); + glVertex3fv(P091); + glNormal3fv(N095); + glVertex3fv(P095); + glNormal3fv(N094); + glVertex3fv(P094); + glEnd(); + glBegin(cap); + glNormal3fv(N091); + glVertex3fv(P091); + glNormal3fv(N092); + glVertex3fv(P092); + glNormal3fv(N094); + glVertex3fv(P094); + glNormal3fv(N095); + glVertex3fv(P095); + glEnd(); + glBegin(cap); + glNormal3fv(N122); + glVertex3fv(P122); + glNormal3fv(N095); + glVertex3fv(P095); + glNormal3fv(N091); + glVertex3fv(P091); + glEnd(); + glBegin(cap); + glNormal3fv(N122); + glVertex3fv(P122); + glNormal3fv(N091); + glVertex3fv(P091); + glNormal3fv(N095); + glVertex3fv(P095); + glEnd(); +} + +static void +Dolphin007(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N038); + glVertex3fv(P038); + glEnd(); + glBegin(cap); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N038); + glVertex3fv(P038); + glEnd(); + glBegin(cap); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N037); + glVertex3fv(P037); + glEnd(); + glBegin(cap); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N037); + glVertex3fv(P037); + glEnd(); + glBegin(cap); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N036); + glVertex3fv(P036); + glEnd(); + glBegin(cap); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N036); + glVertex3fv(P036); + glEnd(); + glBegin(cap); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N043); + glVertex3fv(P043); + glEnd(); + glBegin(cap); + glNormal3fv(N034); + glVertex3fv(P034); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N043); + glVertex3fv(P043); + glNormal3fv(N042); + glVertex3fv(P042); + glEnd(); + glBegin(cap); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N034); + glVertex3fv(P034); + glNormal3fv(N042); + glVertex3fv(P042); + glEnd(); + glBegin(cap); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N041); + glVertex3fv(P041); + glEnd(); + glBegin(cap); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N039); + glVertex3fv(P039); + glEnd(); + glBegin(cap); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N040); + glVertex3fv(P040); + glEnd(); + glBegin(cap); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N040); + glVertex3fv(P040); + glEnd(); + glBegin(cap); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N041); + glVertex3fv(P041); + glEnd(); +} + +static void +Dolphin008(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N043); + glVertex3fv(P043); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N050); + glVertex3fv(P050); + glEnd(); + glBegin(cap); + glNormal3fv(N043); + glVertex3fv(P043); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N051); + glVertex3fv(P051); + glEnd(); + glBegin(cap); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N044); + glVertex3fv(P044); + glEnd(); + glBegin(cap); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N050); + glVertex3fv(P050); + glEnd(); + glBegin(cap); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N049); + glVertex3fv(P049); + glEnd(); + glBegin(cap); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N044); + glVertex3fv(P044); + glEnd(); + glBegin(cap); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N045); + glVertex3fv(P045); + glEnd(); + glBegin(cap); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N049); + glVertex3fv(P049); + glEnd(); + glBegin(cap); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N048); + glVertex3fv(P048); + glEnd(); + glBegin(cap); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N048); + glVertex3fv(P048); + glEnd(); + glBegin(cap); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N047); + glVertex3fv(P047); + glEnd(); + glBegin(cap); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N045); + glVertex3fv(P045); + glEnd(); + glBegin(cap); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N045); + glVertex3fv(P045); + glEnd(); + glBegin(cap); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N046); + glVertex3fv(P046); + glEnd(); +} + +static void +Dolphin009(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N058); + glVertex3fv(P058); + glEnd(); + glBegin(cap); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N059); + glVertex3fv(P059); + glEnd(); + glBegin(cap); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N052); + glVertex3fv(P052); + glEnd(); + glBegin(cap); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N045); + glVertex3fv(P045); + glNormal3fv(N053); + glVertex3fv(P053); + glEnd(); + glBegin(cap); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N053); + glVertex3fv(P053); + glNormal3fv(N052); + glVertex3fv(P052); + glEnd(); + glBegin(cap); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N058); + glVertex3fv(P058); + glEnd(); + glBegin(cap); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N057); + glVertex3fv(P057); + glEnd(); + glBegin(cap); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N057); + glVertex3fv(P057); + glEnd(); + glBegin(cap); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N057); + glVertex3fv(P057); + glNormal3fv(N056); + glVertex3fv(P056); + glEnd(); + glBegin(cap); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N056); + glVertex3fv(P056); + glEnd(); + glBegin(cap); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N055); + glVertex3fv(P055); + glEnd(); + glBegin(cap); + glNormal3fv(N045); + glVertex3fv(P045); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N053); + glVertex3fv(P053); + glEnd(); + glBegin(cap); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N054); + glVertex3fv(P054); + glNormal3fv(N053); + glVertex3fv(P053); + glEnd(); + glBegin(cap); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N055); + glVertex3fv(P055); + glNormal3fv(N054); + glVertex3fv(P054); + glEnd(); +} + +static void +Dolphin010(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N080); + glVertex3fv(P080); + glNormal3fv(N081); + glVertex3fv(P081); + glNormal3fv(N085); + glVertex3fv(P085); + glEnd(); + glBegin(cap); + glNormal3fv(N081); + glVertex3fv(P081); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N085); + glVertex3fv(P085); + glEnd(); + glBegin(cap); + glNormal3fv(N085); + glVertex3fv(P085); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N077); + glVertex3fv(P077); + glEnd(); + glBegin(cap); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N087); + glVertex3fv(P087); + glNormal3fv(N077); + glVertex3fv(P077); + glEnd(); + glBegin(cap); + glNormal3fv(N077); + glVertex3fv(P077); + glNormal3fv(N087); + glVertex3fv(P087); + glNormal3fv(N090); + glVertex3fv(P090); + glEnd(); + glBegin(cap); + glNormal3fv(N081); + glVertex3fv(P081); + glNormal3fv(N080); + glVertex3fv(P080); + glNormal3fv(N085); + glVertex3fv(P085); + glEnd(); + glBegin(cap); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N081); + glVertex3fv(P081); + glNormal3fv(N085); + glVertex3fv(P085); + glEnd(); + glBegin(cap); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N085); + glVertex3fv(P085); + glNormal3fv(N077); + glVertex3fv(P077); + glEnd(); + glBegin(cap); + glNormal3fv(N087); + glVertex3fv(P087); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N077); + glVertex3fv(P077); + glEnd(); + glBegin(cap); + glNormal3fv(N087); + glVertex3fv(P087); + glNormal3fv(N077); + glVertex3fv(P077); + glNormal3fv(N090); + glVertex3fv(P090); + glEnd(); +} + +static void +Dolphin011(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N082); + glVertex3fv(P082); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N079); + glVertex3fv(P079); + glEnd(); + glBegin(cap); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N079); + glVertex3fv(P079); + glEnd(); + glBegin(cap); + glNormal3fv(N079); + glVertex3fv(P079); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N078); + glVertex3fv(P078); + glEnd(); + glBegin(cap); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N088); + glVertex3fv(P088); + glNormal3fv(N078); + glVertex3fv(P078); + glEnd(); + glBegin(cap); + glNormal3fv(N078); + glVertex3fv(P078); + glNormal3fv(N088); + glVertex3fv(P088); + glNormal3fv(N089); + glVertex3fv(P089); + glEnd(); + glBegin(cap); + glNormal3fv(N088); + glVertex3fv(P088); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N089); + glVertex3fv(P089); + glEnd(); + glBegin(cap); + glNormal3fv(N089); + glVertex3fv(P089); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N078); + glVertex3fv(P078); + glEnd(); + glBegin(cap); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N078); + glVertex3fv(P078); + glEnd(); + glBegin(cap); + glNormal3fv(N078); + glVertex3fv(P078); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N079); + glVertex3fv(P079); + glEnd(); + glBegin(cap); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N082); + glVertex3fv(P082); + glNormal3fv(N079); + glVertex3fv(P079); + glEnd(); +} + +static void +Dolphin012(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N067); + glVertex3fv(P067); + glNormal3fv(N066); + glVertex3fv(P066); + glEnd(); + glBegin(cap); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N052); + glVertex3fv(P052); + glNormal3fv(N060); + glVertex3fv(P060); + glEnd(); + glBegin(cap); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N067); + glVertex3fv(P067); + glEnd(); + glBegin(cap); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N065); + glVertex3fv(P065); + glEnd(); + glBegin(cap); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N057); + glVertex3fv(P057); + glEnd(); + glBegin(cap); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N057); + glVertex3fv(P057); + glNormal3fv(N065); + glVertex3fv(P065); + glEnd(); + glBegin(cap); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N006); + glVertex3fv(P006); + glEnd(); + glBegin(cap); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N063); + glVertex3fv(P063); + glEnd(); + glBegin(cap); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N055); + glVertex3fv(P055); + glEnd(); + glBegin(cap); + glNormal3fv(N054); + glVertex3fv(P054); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N005); + glVertex3fv(P005); + glEnd(); + glBegin(cap); + glNormal3fv(N054); + glVertex3fv(P054); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N053); + glVertex3fv(P053); + glEnd(); + glBegin(cap); + glNormal3fv(N052); + glVertex3fv(P052); + glNormal3fv(N053); + glVertex3fv(P053); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N060); + glVertex3fv(P060); + glEnd(); +} + +static void +Dolphin013(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N116); + glVertex3fv(P116); + glNormal3fv(N117); + glVertex3fv(P117); + glNormal3fv(N112); + glVertex3fv(P112); + glNormal3fv(N113); + glVertex3fv(P113); + glEnd(); + glBegin(cap); + glNormal3fv(N114); + glVertex3fv(P114); + glNormal3fv(N113); + glVertex3fv(P113); + glNormal3fv(N112); + glVertex3fv(P112); + glNormal3fv(N115); + glVertex3fv(P115); + glEnd(); + glBegin(cap); + glNormal3fv(N114); + glVertex3fv(P114); + glNormal3fv(N116); + glVertex3fv(P116); + glNormal3fv(N113); + glVertex3fv(P113); + glEnd(); + glBegin(cap); + glNormal3fv(N114); + glVertex3fv(P114); + glNormal3fv(N007); + glVertex3fv(P007); + glNormal3fv(N116); + glVertex3fv(P116); + glEnd(); + glBegin(cap); + glNormal3fv(N007); + glVertex3fv(P007); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N116); + glVertex3fv(P116); + glEnd(); + glBegin(cap); + glVertex3fv(P002); + glVertex3fv(P007); + glVertex3fv(P008); + glVertex3fv(P099); + glEnd(); + glBegin(cap); + glVertex3fv(P007); + glVertex3fv(P114); + glVertex3fv(P115); + glVertex3fv(P008); + glEnd(); + glBegin(cap); + glNormal3fv(N117); + glVertex3fv(P117); + glNormal3fv(N099); + glVertex3fv(P099); + glNormal3fv(N008); + glVertex3fv(P008); + glEnd(); + glBegin(cap); + glNormal3fv(N117); + glVertex3fv(P117); + glNormal3fv(N008); + glVertex3fv(P008); + glNormal3fv(N112); + glVertex3fv(P112); + glEnd(); + glBegin(cap); + glNormal3fv(N112); + glVertex3fv(P112); + glNormal3fv(N008); + glVertex3fv(P008); + glNormal3fv(N115); + glVertex3fv(P115); + glEnd(); +} + +static void +Dolphin014(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N111); + glVertex3fv(P111); + glNormal3fv(N110); + glVertex3fv(P110); + glNormal3fv(N102); + glVertex3fv(P102); + glNormal3fv(N121); + glVertex3fv(P121); + glEnd(); + glBegin(cap); + glNormal3fv(N111); + glVertex3fv(P111); + glNormal3fv(N097); + glVertex3fv(P097); + glNormal3fv(N110); + glVertex3fv(P110); + glEnd(); + glBegin(cap); + glNormal3fv(N097); + glVertex3fv(P097); + glNormal3fv(N119); + glVertex3fv(P119); + glNormal3fv(N110); + glVertex3fv(P110); + glEnd(); + glBegin(cap); + glNormal3fv(N097); + glVertex3fv(P097); + glNormal3fv(N099); + glVertex3fv(P099); + glNormal3fv(N119); + glVertex3fv(P119); + glEnd(); + glBegin(cap); + glNormal3fv(N099); + glVertex3fv(P099); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N119); + glVertex3fv(P119); + glEnd(); + glBegin(cap); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N119); + glVertex3fv(P119); + glEnd(); + glBegin(cap); + glVertex3fv(P098); + glVertex3fv(P097); + glVertex3fv(P111); + glVertex3fv(P121); + glEnd(); + glBegin(cap); + glVertex3fv(P002); + glVertex3fv(P099); + glVertex3fv(P097); + glVertex3fv(P098); + glEnd(); + glBegin(cap); + glNormal3fv(N110); + glVertex3fv(P110); + glNormal3fv(N119); + glVertex3fv(P119); + glNormal3fv(N118); + glVertex3fv(P118); + glNormal3fv(N102); + glVertex3fv(P102); + glEnd(); + glBegin(cap); + glNormal3fv(N119); + glVertex3fv(P119); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N067); + glVertex3fv(P067); + glNormal3fv(N118); + glVertex3fv(P118); + glEnd(); + glBegin(cap); + glNormal3fv(N067); + glVertex3fv(P067); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N002); + glVertex3fv(P002); + glEnd(); + glBegin(cap); + glNormal3fv(N067); + glVertex3fv(P067); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N118); + glVertex3fv(P118); + glEnd(); + glBegin(cap); + glNormal3fv(N118); + glVertex3fv(P118); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N098); + glVertex3fv(P098); + glEnd(); + glBegin(cap); + glNormal3fv(N118); + glVertex3fv(P118); + glNormal3fv(N098); + glVertex3fv(P098); + glNormal3fv(N102); + glVertex3fv(P102); + glEnd(); + glBegin(cap); + glNormal3fv(N102); + glVertex3fv(P102); + glNormal3fv(N098); + glVertex3fv(P098); + glNormal3fv(N121); + glVertex3fv(P121); + glEnd(); +} + +static void +Dolphin015(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N055); + glVertex3fv(P055); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N054); + glVertex3fv(P054); + glEnd(); + glBegin(cap); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N055); + glVertex3fv(P055); + glNormal3fv(N063); + glVertex3fv(P063); + glEnd(); + glBegin(cap); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N100); + glVertex3fv(P100); + glEnd(); + glBegin(cap); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N054); + glVertex3fv(P054); + glEnd(); + glBegin(cap); + glNormal3fv(N054); + glVertex3fv(P054); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N062); + glVertex3fv(P062); + glEnd(); + glBegin(cap); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N064); + glVertex3fv(P064); + glNormal3fv(N120); + glVertex3fv(P120); + glEnd(); + glBegin(cap); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N064); + glVertex3fv(P064); + glEnd(); + glBegin(cap); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N064); + glVertex3fv(P064); + glEnd(); + glBegin(cap); + glNormal3fv(N064); + glVertex3fv(P064); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N099); + glVertex3fv(P099); + glEnd(); + glBegin(cap); + glNormal3fv(N064); + glVertex3fv(P064); + glNormal3fv(N099); + glVertex3fv(P099); + glNormal3fv(N117); + glVertex3fv(P117); + glEnd(); + glBegin(cap); + glNormal3fv(N120); + glVertex3fv(P120); + glNormal3fv(N064); + glVertex3fv(P064); + glNormal3fv(N117); + glVertex3fv(P117); + glNormal3fv(N116); + glVertex3fv(P116); + glEnd(); + glBegin(cap); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N099); + glVertex3fv(P099); + glEnd(); + glBegin(cap); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N120); + glVertex3fv(P120); + glEnd(); + glBegin(cap); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N120); + glVertex3fv(P120); + glEnd(); + glBegin(cap); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N120); + glVertex3fv(P120); + glNormal3fv(N002); + glVertex3fv(P002); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N120); + glVertex3fv(P120); + glNormal3fv(N116); + glVertex3fv(P116); + glEnd(); + glBegin(cap); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N002); + glVertex3fv(P002); + glEnd(); +} + +static void +Dolphin016(GLenum cap) +{ + + glDisable(GL_DEPTH_TEST); + glBegin(cap); + glVertex3fv(P123); + glVertex3fv(P124); + glVertex3fv(P125); + glVertex3fv(P126); + glVertex3fv(P127); + glVertex3fv(P128); + glEnd(); + glBegin(cap); + glVertex3fv(P129); + glVertex3fv(P130); + glVertex3fv(P131); + glVertex3fv(P132); + glVertex3fv(P133); + glVertex3fv(P134); + glEnd(); + glBegin(cap); + glVertex3fv(P103); + glVertex3fv(P105); + glVertex3fv(P108); + glEnd(); + glEnable(GL_DEPTH_TEST); +} + +void +DrawDolphin(fishRec * fish, int wire) +{ + float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7; + float pitch, thrash, chomp; + GLenum cap; + + fish->htail = (int) (fish->htail - (int) (10 * fish->v)) % 360; + + thrash = 70 * fish->v; + + seg0 = 1 * thrash * sin((fish->htail) * RRAD); + seg3 = 1 * thrash * sin((fish->htail) * RRAD); + seg1 = 2 * thrash * sin((fish->htail + 4) * RRAD); + seg2 = 3 * thrash * sin((fish->htail + 6) * RRAD); + seg4 = 4 * thrash * sin((fish->htail + 10) * RRAD); + seg5 = 4.5 * thrash * sin((fish->htail + 15) * RRAD); + seg6 = 5 * thrash * sin((fish->htail + 20) * RRAD); + seg7 = 6 * thrash * sin((fish->htail + 30) * RRAD); + + pitch = fish->v * sin((fish->htail + 180) * RRAD); + +/* if (fish->v > 2) { + chomp = -(fish->v - 2) * 200; + }*/ + chomp = 100; + + P012[1] = iP012[1] + seg5; + P013[1] = iP013[1] + seg5; + P014[1] = iP014[1] + seg5; + P015[1] = iP015[1] + seg5; + P016[1] = iP016[1] + seg5; + P017[1] = iP017[1] + seg5; + P018[1] = iP018[1] + seg5; + P019[1] = iP019[1] + seg5; + + P020[1] = iP020[1] + seg4; + P021[1] = iP021[1] + seg4; + P022[1] = iP022[1] + seg4; + P023[1] = iP023[1] + seg4; + P024[1] = iP024[1] + seg4; + P025[1] = iP025[1] + seg4; + P026[1] = iP026[1] + seg4; + P027[1] = iP027[1] + seg4; + + P028[1] = iP028[1] + seg2; + P029[1] = iP029[1] + seg2; + P030[1] = iP030[1] + seg2; + P031[1] = iP031[1] + seg2; + P032[1] = iP032[1] + seg2; + P033[1] = iP033[1] + seg2; + P034[1] = iP034[1] + seg2; + P035[1] = iP035[1] + seg2; + + P036[1] = iP036[1] + seg1; + P037[1] = iP037[1] + seg1; + P038[1] = iP038[1] + seg1; + P039[1] = iP039[1] + seg1; + P040[1] = iP040[1] + seg1; + P041[1] = iP041[1] + seg1; + P042[1] = iP042[1] + seg1; + P043[1] = iP043[1] + seg1; + + P044[1] = iP044[1] + seg0; + P045[1] = iP045[1] + seg0; + P046[1] = iP046[1] + seg0; + P047[1] = iP047[1] + seg0; + P048[1] = iP048[1] + seg0; + P049[1] = iP049[1] + seg0; + P050[1] = iP050[1] + seg0; + P051[1] = iP051[1] + seg0; + + P009[1] = iP009[1] + seg6; + P010[1] = iP010[1] + seg6; + P075[1] = iP075[1] + seg6; + P076[1] = iP076[1] + seg6; + + P001[1] = iP001[1] + seg7; + P011[1] = iP011[1] + seg7; + P068[1] = iP068[1] + seg7; + P069[1] = iP069[1] + seg7; + P070[1] = iP070[1] + seg7; + P071[1] = iP071[1] + seg7; + P072[1] = iP072[1] + seg7; + P073[1] = iP073[1] + seg7; + P074[1] = iP074[1] + seg7; + + P091[1] = iP091[1] + seg3; + P092[1] = iP092[1] + seg3; + P093[1] = iP093[1] + seg3; + P094[1] = iP094[1] + seg3; + P095[1] = iP095[1] + seg3; + P122[1] = iP122[1] + seg3 * 1.5; + + P097[1] = iP097[1] + chomp; + P098[1] = iP098[1] + chomp; + P102[1] = iP102[1] + chomp; + P110[1] = iP110[1] + chomp; + P111[1] = iP111[1] + chomp; + P121[1] = iP121[1] + chomp; + P118[1] = iP118[1] + chomp; + P119[1] = iP119[1] + chomp; + + glPushMatrix(); + + glRotatef(pitch, 1, 0, 0); + + glTranslatef(0, 0, 7000); + + glRotatef(180, 0, 1, 0); + + glEnable(GL_CULL_FACE); + cap = wire ? GL_LINE_LOOP : GL_POLYGON; + Dolphin014(cap); + Dolphin010(cap); + Dolphin009(cap); + Dolphin012(cap); + Dolphin013(cap); + Dolphin006(cap); + Dolphin002(cap); + Dolphin001(cap); + Dolphin003(cap); + Dolphin015(cap); + Dolphin004(cap); + Dolphin005(cap); + Dolphin007(cap); + Dolphin008(cap); + Dolphin011(cap); + Dolphin016(cap); + glDisable(GL_CULL_FACE); + + glPopMatrix(); +} +#endif diff --git a/hacks/glx/dropshadow.c b/hacks/glx/dropshadow.c new file mode 100644 index 0000000..0a5855c --- /dev/null +++ b/hacks/glx/dropshadow.c @@ -0,0 +1,181 @@ +/* dropshadow.c, Copyright (c) 2009 Jens Kilian + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include + +#include "dropshadow.h" + +/* (Alpha) texture data for drop shadow. + */ +static int drop_shadow_width = 32; +static int drop_shadow_height = 32; +static unsigned char drop_shadow_data[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 3, 3, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 3, 4, 6, 7, 9, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 9, 7, 6, 4, 3, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 3, 5, 9, 13, 16, 19, 19, 21, 21, 22, 22, + 22, 22, 21, 21, 19, 19, 16, 13, 9, 5, 3, 1, 1, 0, 0, 0, + 0, 0, 1, 1, 3, 5, 10, 16, 22, 28, 32, 35, 37, 37, 38, 38, + 38, 38, 37, 37, 35, 32, 28, 22, 16, 10, 5, 3, 1, 1, 0, 0, + 0, 0, 1, 1, 4, 9, 16, 25, 34, 43, 50, 55, 58, 59, 60, 60, + 60, 60, 59, 58, 55, 50, 43, 34, 25, 16, 9, 4, 1, 1, 0, 0, + 0, 0, 1, 3, 6, 13, 22, 34, 48, 61, 70, 77, 80, 82, 83, 84, + 84, 83, 82, 80, 77, 70, 61, 48, 34, 22, 13, 6, 3, 1, 0, 0, + 0, 0, 1, 3, 7, 16, 28, 43, 61, 76, 88, 97, 102, 103, 104, 104, + 104, 104, 103, 102, 97, 88, 76, 61, 43, 28, 16, 7, 3, 1, 0, 0, + 0, 1, 1, 4, 9, 19, 32, 51, 70, 88, 103, 112, 117, 120, 121, 121, + 121, 121, 120, 117, 112, 103, 88, 70, 51, 32, 19, 9, 4, 1, 1, 0, + 0, 1, 1, 4, 10, 20, 35, 55, 77, 97, 112, 122, 128, 130, 132, 133, + 133, 132, 130, 128, 122, 112, 97, 77, 55, 35, 20, 10, 4, 1, 1, 0, + 0, 1, 1, 4, 10, 21, 37, 58, 80, 101, 117, 128, 134, 137, 138, 139, + 139, 138, 137, 134, 128, 117, 101, 80, 58, 37, 21, 10, 4, 1, 0, 0, + 0, 0, 1, 4, 10, 21, 38, 59, 82, 103, 119, 130, 137, 139, 141, 142, + 142, 141, 139, 137, 130, 119, 103, 82, 59, 38, 21, 10, 4, 1, 0, 0, + 0, 0, 1, 4, 10, 22, 38, 59, 83, 104, 121, 132, 139, 141, 142, 142, + 142, 142, 141, 139, 132, 121, 104, 83, 59, 38, 22, 10, 4, 1, 0, 0, + 0, 0, 1, 4, 10, 22, 38, 60, 84, 104, 121, 133, 139, 142, 142, 142, + 142, 142, 142, 139, 133, 121, 104, 84, 60, 38, 22, 10, 4, 1, 0, 0, + 0, 0, 1, 4, 10, 22, 38, 60, 84, 104, 121, 133, 139, 142, 142, 142, + 142, 142, 142, 139, 133, 121, 104, 84, 60, 38, 22, 10, 4, 1, 0, 0, + 0, 0, 1, 4, 10, 22, 38, 59, 83, 104, 121, 132, 139, 141, 142, 142, + 142, 142, 141, 139, 132, 121, 104, 83, 59, 38, 22, 10, 4, 1, 0, 0, + 0, 0, 1, 4, 10, 21, 38, 59, 82, 103, 119, 130, 137, 139, 141, 142, + 142, 141, 139, 137, 130, 119, 103, 82, 59, 38, 21, 10, 4, 1, 0, 0, + 0, 1, 1, 4, 10, 21, 37, 58, 80, 101, 118, 128, 134, 137, 139, 139, + 139, 139, 137, 134, 128, 117, 102, 80, 58, 37, 21, 10, 4, 1, 0, 0, + 0, 1, 1, 4, 10, 20, 35, 55, 77, 97, 112, 122, 128, 130, 132, 133, + 133, 132, 130, 128, 122, 112, 97, 77, 55, 35, 20, 10, 4, 1, 1, 0, + 0, 1, 1, 4, 9, 19, 32, 51, 70, 88, 103, 112, 117, 120, 121, 121, + 121, 121, 120, 117, 112, 103, 88, 70, 51, 32, 19, 9, 4, 1, 1, 0, + 0, 0, 1, 3, 7, 16, 28, 43, 61, 76, 88, 97, 102, 103, 104, 104, + 104, 104, 103, 102, 97, 88, 76, 61, 43, 28, 16, 7, 3, 1, 0, 0, + 0, 0, 1, 3, 6, 13, 22, 34, 48, 61, 70, 77, 80, 82, 83, 84, + 84, 83, 82, 80, 77, 70, 61, 48, 34, 22, 13, 6, 3, 1, 0, 0, + 0, 0, 1, 1, 4, 9, 16, 25, 34, 43, 50, 55, 58, 59, 60, 60, + 60, 60, 59, 58, 55, 50, 43, 34, 25, 16, 9, 4, 1, 1, 0, 0, + 0, 0, 1, 1, 3, 5, 10, 16, 22, 28, 32, 35, 37, 37, 38, 38, + 38, 38, 37, 37, 35, 32, 28, 22, 16, 10, 5, 3, 1, 1, 0, 0, + 0, 0, 0, 1, 1, 3, 5, 9, 13, 16, 19, 19, 21, 21, 22, 22, + 22, 22, 21, 21, 19, 19, 16, 13, 9, 5, 3, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 3, 4, 6, 7, 9, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 9, 7, 6, 4, 3, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 3, 3, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +GLuint +init_drop_shadow(void) +{ + GLuint t; + + glGenTextures (1, &t); + if (t <= 0) abort(); + + glBindTexture (GL_TEXTURE_2D, t); +#if 0 + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + gluBuild2DMipmaps (GL_TEXTURE_2D, GL_ALPHA, + drop_shadow_width, drop_shadow_height, + GL_ALPHA, GL_UNSIGNED_BYTE, + drop_shadow_data); +#else + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexImage2D (GL_TEXTURE_2D, 0, GL_ALPHA, + drop_shadow_width, drop_shadow_height, 0, + GL_ALPHA, GL_UNSIGNED_BYTE, + drop_shadow_data); +#endif + + return t; +} + +void +draw_drop_shadow (GLuint t, + GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h, + GLfloat r) +{ + /* Inner and outer boundaries of shadow. */ + const GLfloat li = x, lo = li - r; + const GLfloat ri = x + w, ro = ri + r; + const GLfloat bi = y, bo = bi - r; + const GLfloat ti = y + h, to = ti + r; + + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, t); + + glBegin (GL_QUADS); + + /* There's likely a better way to do this... */ + glTexCoord2f (0.0, 0.0); glVertex3f (lo, bo, z); + glTexCoord2f (0.5, 0.0); glVertex3f (li, bo, z); + glTexCoord2f (0.5, 0.5); glVertex3f (li, bi, z); + glTexCoord2f (0.0, 0.5); glVertex3f (lo, bi, z); + + glTexCoord2f (0.5, 0.0); glVertex3f (li, bo, z); + glTexCoord2f (0.5, 0.0); glVertex3f (ri, bo, z); + glTexCoord2f (0.5, 0.5); glVertex3f (ri, bi, z); + glTexCoord2f (0.5, 0.5); glVertex3f (li, bi, z); + + glTexCoord2f (0.5, 0.0); glVertex3f (ri, bo, z); + glTexCoord2f (1.0, 0.0); glVertex3f (ro, bo, z); + glTexCoord2f (1.0, 0.5); glVertex3f (ro, bi, z); + glTexCoord2f (0.5, 0.5); glVertex3f (ri, bi, z); + + glTexCoord2f (0.5, 0.5); glVertex3f (ri, bi, z); + glTexCoord2f (1.0, 0.5); glVertex3f (ro, bi, z); + glTexCoord2f (1.0, 0.5); glVertex3f (ro, ti, z); + glTexCoord2f (0.5, 0.5); glVertex3f (ri, ti, z); + + glTexCoord2f (0.5, 0.5); glVertex3f (ri, ti, z); + glTexCoord2f (1.0, 0.5); glVertex3f (ro, ti, z); + glTexCoord2f (1.0, 1.0); glVertex3f (ro, to, z); + glTexCoord2f (0.5, 1.0); glVertex3f (ri, to, z); + + glTexCoord2f (0.5, 0.5); glVertex3f (li, ti, z); + glTexCoord2f (0.5, 0.5); glVertex3f (ri, ti, z); + glTexCoord2f (0.5, 1.0); glVertex3f (ri, to, z); + glTexCoord2f (0.5, 1.0); glVertex3f (li, to, z); + + glTexCoord2f (0.0, 0.5); glVertex3f (lo, ti, z); + glTexCoord2f (0.5, 0.5); glVertex3f (li, ti, z); + glTexCoord2f (0.5, 1.0); glVertex3f (li, to, z); + glTexCoord2f (0.0, 1.0); glVertex3f (lo, to, z); + + glTexCoord2f (0.0, 0.5); glVertex3f (lo, bi, z); + glTexCoord2f (0.5, 0.5); glVertex3f (li, bi, z); + glTexCoord2f (0.5, 0.5); glVertex3f (li, ti, z); + glTexCoord2f (0.0, 0.5); glVertex3f (lo, ti, z); + + glEnd(); +} diff --git a/hacks/glx/dropshadow.h b/hacks/glx/dropshadow.h new file mode 100644 index 0000000..09af0c8 --- /dev/null +++ b/hacks/glx/dropshadow.h @@ -0,0 +1,40 @@ +/* dropshadow.h, Copyright (c) 2009 Jens Kilian + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __DROPSHADOW_H__ +#define __DROPSHADOW_H__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include "xlockmoreI.h" + +/* Initialize drop shadow texture, return a texture ID. + */ +GLuint +init_drop_shadow(void); + +/* Draw a drop shadow around a rectangle. + + t Texture ID (as returned by init_drop_shadow()). + x, y, z; w, h Position (left bottom), depth and size of rectangle. + r Radius of drop shadow. + + The shadow will be drawn using the current color. + */ + +void +draw_drop_shadow (GLuint t, + GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h, + GLfloat r); + +#endif /* __DROPSHADOW_H__ */ diff --git a/hacks/glx/dxf2gl.pl b/hacks/glx/dxf2gl.pl new file mode 100755 index 0000000..9ed470c --- /dev/null +++ b/hacks/glx/dxf2gl.pl @@ -0,0 +1,729 @@ +#!/usr/bin/perl -w +# Copyright © 2003-2014 Jamie Zawinski +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation. No representations are made about the suitability of this +# software for any purpose. It is provided "as is" without express or +# implied warranty. +# +# Reads a DXF file, and emits C data suitable for use with OpenGL's +# glInterleavedArrays() and glDrawArrays() routines. +# +# Options: +# +# --normalize Compute the bounding box of the object, and scale all +# coordinates so that the object fits inside a unit cube. +# +# --smooth When computing normals for the vertexes, average the +# normals at any edge which is less than 90 degrees. +# If this option is not specified, planar normals will be +# used, resulting in a "faceted" object. +# +# --wireframe Emit lines instead of faces. +# +# --layers Emit a separate set of polygons for each layer in the +# input file, instead of emitting the whole file as a +# single unit. +# +# Created: 8-Mar-2003. + +require 5; +use diagnostics; +use strict; + +use POSIX qw(mktime strftime); +use Math::Trig qw(acos); +use Text::Wrap; + +my $progname = $0; $progname =~ s@.*/@@g; +my ($version) = ('$Revision: 1.11 $' =~ m/\s(\d[.\d]+)\s/s); + +my $verbose = 0; + + +# convert a vector to a unit vector +sub normalize($$$) { + my ($x, $y, $z) = @_; + my $L = sqrt (($x * $x) + ($y * $y) + ($z * $z)); + if ($L != 0) { + $x /= $L; + $y /= $L; + $z /= $L; + } else { + $x = $y = $z = 0; + } + return ($x, $y, $z); +} + + +# Calculate the unit normal at p0 given two other points p1,p2 on the +# surface. The normal points in the direction of p1 crossproduct p2. +# +sub face_normal($$$$$$$$$) { + my ($p0x, $p0y, $p0z, + $p1x, $p1y, $p1z, + $p2x, $p2y, $p2z) = @_; + + my ($nx, $ny, $nz); + my ($pax, $pay, $paz); + my ($pbx, $pby, $pbz); + + $pax = $p1x - $p0x; + $pay = $p1y - $p0y; + $paz = $p1z - $p0z; + $pbx = $p2x - $p0x; + $pby = $p2y - $p0y; + $pbz = $p2z - $p0z; + $nx = $pay * $pbz - $paz * $pby; + $ny = $paz * $pbx - $pax * $pbz; + $nz = $pax * $pby - $pay * $pbx; + + return (normalize ($nx, $ny, $nz)); +} + + +my $pi = 3.141592653589793; +my $radians_to_degrees = 180.0 / $pi; + +# Calculate the angle (in degrees) between two vectors. +# +sub vector_angle($$$$$$) { + my ($x1, $y1, $z1, + $x2, $y2, $z2) = @_; + + my $L1 = sqrt ($x1*$x1 + $y1*$y1 + $z1*$z1); + my $L2 = sqrt ($x2*$x2 + $y2*$y2 + $z2*$z2); + + return 0 if ($L1 == 0 || $L2 == 0); + return 0 if ($x1 == $x2 && $y1 == $y2 && $z1 == $z2); + + # dot product of two vectors is defined as: + # $L1 * $L1 * cos(angle between vectors) + # and is also defined as: + # $x1*$x2 + $y1*$y2 + $z1*$z2 + # so: + # $L1 * $L1 * cos($angle) = $x1*$x2 + $y1*$y2 + $z1*$z2 + # cos($angle) = ($x1*$x2 + $y1*$y2 + $z1*$z2) / ($L1 * $L2) + # $angle = acos (($x1*$x2 + $y1*$y2 + $z1*$z2) / ($L1 * $L2)); + # + my $cos = ($x1*$x2 + $y1*$y2 + $z1*$z2) / ($L1 * $L2); + $cos = 1 if ($cos > 1); # avoid fp rounding error (1.000001 => sqrt error) + my $angle = acos ($cos); + + return ($angle * $radians_to_degrees); +} + + +# given a list of triangles ( [ X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, ]+ ) +# returns a list of the normals for each vertex. These are the smoothed +# normals: the average of the normals of the participating faces. +# +sub compute_vertex_normals(@) { + my (@points) = @_; + my $npoints = ($#points+1) / 3; + my $nfaces = $npoints / 3; + + my @face_normals = (); + my %point_faces; + + for (my $i = 0; $i < $nfaces; $i++) { + my ($ax, $ay, $az, $bx, $by, $bz, $cx, $cy, $cz) = + @points[($i*9) .. ($i*9)+8]; + + # store the normal for each face in the $face_normals array + # indexed by face number. + # + my @norm = face_normal ($ax, $ay, $az, + $bx, $by, $bz, + $cx, $cy, $cz); + $face_normals[$i] = \@norm; + + # store in the %point_faces hash table a list of every face number + # in which a point participates + + foreach my $p ("$ax $ay $az", "$bx $by $bz", "$cx $cy $cz") { + my @flist = (defined($point_faces{$p}) ? @{$point_faces{$p}} : ()); + push @flist, $i; + $point_faces{$p} = \@flist; + } + } + + + # compute the normal for each vertex of each face. + # (these points are not unique -- because there might be multiple + # normals associated with the same vertex for different faces, + # in the case where it's a sharp angle.) + # + my @normals = (); + for (my $i = 0; $i < $nfaces; $i++) { + my @verts = @points[($i*9) .. ($i*9)+8]; + error ("overshot in points?") unless defined($verts[8]); + + my @norm = @{$face_normals[$i]}; + error ("no normal $i?") unless defined($norm[2]); + + # iterate over the (three) vertexes in this face. + # + for (my $j = 0; $j < 3; $j++) { + my ($x, $y, $z) = @verts[($j*3) .. ($j*3)+2]; + error ("overshot in verts?") unless defined($z); + + # Iterate over the faces in which this point participates. + # But ignore any other faces that are at more than an N degree + # angle from this point's face. Those are sharp edges. + # + my ($nx, $ny, $nz) = (0, 0, 0); + my @faces = @{$point_faces{"$x $y $z"}}; + foreach my $fn (@faces) { + my ($ax, $ay, $az, $bx, $by, $bz, $cx, $cy, $cz) = + @points[($fn*9) .. ($fn*9)+8]; + my @fnorm = @{$face_normals[$fn]}; + + # ignore any adjascent faces that are more than N degrees off. + my $angle = vector_angle ($norm[0], $norm[1], $norm[2], + $fnorm[0], $fnorm[1], $fnorm[2]); + next if ($angle >= 30); + + $nx += $fnorm[0]; + $ny += $fnorm[1]; + $nz += $fnorm[2]; + } + + push @normals, normalize ($nx, $ny, $nz); + } + } + + return @normals; +} + + +sub parse_dxf($$$$$) { + my ($filename, $dxf, $normalize_p, $wireframe_p, $layers_p) = @_; + + $dxf =~ s/\r\n/\n/gs; # CRLF + $dxf =~ s/^[ \t\n]+|[ \t\n]+$//s; # leading/trailing whitespace + + # Convert whitespace within a line to _, e.g., "ObjectDBX Classes". + # What the hell is up with this file format! + 1 while ($dxf =~ s/([^ \t\n])[ \t]+([^ \t\n])/$1_$2/gs); + + $dxf =~ s/\r/\n/gs; + + # Turn blank lines into "", e.g., "$DIMBLK \n 1 \n \n 9 \n" + $dxf =~ s/\n\n/\n""\n/gs; + + my @tokens = split (/[ \t\n]+/, $dxf); # tokenize + + my @entities = (); # parse + while (@tokens) { + my @elts = (); + my $key = shift @tokens; # sectionize at "0 WORD" + do { + my $val = shift @tokens; + push @elts, [ $key, $val ]; # contents are [CODE VAL] + $key = shift @tokens; + } while ($key && $key ne 0); + unshift @tokens, $key if defined($key); + push @entities, \@elts; + } + my %triangles; # list of points, indexed by layer name + my %lines; + my $error_count = 0; + + foreach my $entity (@entities) { + my $header = shift @$entity; + my ($code, $name) = @$header; + + if ($name eq 'SECTION' || + $name eq 'HEADER' || + $name eq 'ENDSEC' || + $name eq 'EOF') { + print STDERR "$progname: $filename: ignoring \"$code $name\"\n" + if ($verbose > 1); + + } elsif ($name eq '3DFACE') { + + my @points = (); + my $pc = 0; + my $layer = ''; + + foreach my $entry (@$entity) { + my ($key, $val) = @$entry; + if ($key eq 8) { $layer = $val; # layer name + + } elsif ($key eq 10) { $pc++; $points[0] = $val; # X1 + } elsif ($key eq 20) { $pc++; $points[1] = $val; # Y1 + } elsif ($key eq 30) { $pc++; $points[2] = $val; # Z1 + + } elsif ($key eq 11) { $pc++; $points[3] = $val; # X2 + } elsif ($key eq 21) { $pc++; $points[4] = $val; # Y2 + } elsif ($key eq 31) { $pc++; $points[5] = $val; # Z2 + + } elsif ($key eq 12) { $pc++; $points[6] = $val; # X3 + } elsif ($key eq 22) { $pc++; $points[7] = $val; # Y3 + } elsif ($key eq 32) { $pc++; $points[8] = $val; # Z3 + + } elsif ($key eq 13) { $pc++; $points[9] = $val; # X4 + } elsif ($key eq 23) { $pc++; $points[10] = $val; # Y4 + } elsif ($key eq 33) { $pc++; $points[11] = $val; # Z4 + + } elsif ($key eq 62) { # color number + } elsif ($key eq 70) { # invisible edge flag + } else { + print STDERR "$progname: $filename: WARNING:" . + " unknown $name: \"$key $val\"\n"; + $error_count++; + } + } + + error ("got $pc points in $name") unless ($pc == 12); + + if ($points[6] != $points[9] || + $points[7] != $points[10] || + $points[8] != $points[11]) { + error ("$filename: got a quad, not a triangle\n"); + } else { + @points = @points[0 .. 8]; + } + + foreach (@points) { $_ += 0; } # convert strings to numbers + + $layer = '' unless $layers_p; + + $triangles{$layer} = [] unless defined ($triangles{$layer}); + push @{$triangles{$layer}}, @points; + + } elsif ($name eq 'LINE') { + + my @points = (); + my $pc = 0; + my $layer = ''; + + foreach my $entry (@$entity) { + my ($key, $val) = @$entry; + if ($key eq 8) { $layer = $val; # layer name + + } elsif ($key eq 10) { $pc++; $points[0] = $val; # X1 + } elsif ($key eq 20) { $pc++; $points[1] = $val; # Y1 + } elsif ($key eq 30) { $pc++; $points[2] = $val; # Z1 + + } elsif ($key eq 11) { $pc++; $points[3] = $val; # X2 + } elsif ($key eq 21) { $pc++; $points[4] = $val; # Y2 + } elsif ($key eq 31) { $pc++; $points[5] = $val; # Z2 + + } elsif ($key eq 39) { # thickness + } elsif ($key eq 62) { # color number + } else { + print STDERR "$progname: $filename: WARNING:" . + " unknown $name: \"$key $val\"\n"; + $error_count++; + } + } + + error ("got $pc points in $name") unless ($pc == 6); + + foreach (@points) { $_ += 0; } # convert strings to numbers + + $layer = '' unless $layers_p; + + $lines{$layer} = [] unless defined ($lines{$layer}); + push @{$lines{$layer}}, @points; + + } elsif ($name =~ m/^\d+$/s) { + error ("sequence lost: \"$code $name\""); + + } else { + print STDERR "$progname: $filename: WARNING: unknown: \"$code $name\"\n"; + $error_count++; + } + + error ("too many errors: bailing!") if ($error_count > 50); + } + + if ($wireframe_p) { + + # Convert faces to lines. + # Don't duplicate shared edges. + + foreach my $layer (keys %triangles) { + my %dups; + my @triangles = @{$triangles{$layer}}; + while (@triangles) { + my $x1 = shift @triangles; # 0 + my $y1 = shift @triangles; # 1 + my $z1 = shift @triangles; # 2 + my $x2 = shift @triangles; # 3 + my $y2 = shift @triangles; # 4 + my $z2 = shift @triangles; # 5 + my $x3 = shift @triangles; # 6 + my $y3 = shift @triangles; # 7 + my $z3 = shift @triangles; # 8 + + my $p = sub(@) { + my ($x1, $y1, $z1, $x2, $y2, $z2) = @_; + my $key1 = "$x1, $y1, $z1, $x2, $y2, $z2"; + my $key2 = "$x2, $y2, $z2, $x1, $y1, $z1"; + my $dup = $dups{$key1} || $dups{$key2}; + $dups{$key1} = 1; + $dups{$key2} = 1; + push @{$lines{$layer}}, @_ unless $dup; + } + ; + $p->($x1, $y1, $z1, $x2, $y2, $z2); + $p->($x2, $y2, $z2, $x3, $y3, $z3); + $p->($x3, $y3, $z3, $x1, $y1, $z1); + } + + @{$triangles{$layer}} = (); + } + + } else { + foreach my $layer (keys %lines) { + my $n = @{$lines{$layer}}; + @{$lines{$layer}} = (); + print STDERR "$progname: $filename: $layer: WARNING:" . + " ignored $n stray LINE" . ($n == 1 ? "" : "s") . ".\n" + if ($n); + } + } + + + # find bounding box, and normalize + # + if ($normalize_p || $verbose) { + my $minx = 999999999; + my $miny = 999999999; + my $minz = 999999999; + my $maxx = -999999999; + my $maxy = -999999999; + my $maxz = -999999999; + my $i = 0; + + foreach my $layer (keys %triangles) { + my %dups; + my @triangles = @{$triangles{$layer}}; + + foreach my $n (@{$lines{$layer}}, @{$triangles{$layer}}) { + if ($i == 0) { $minx = $n if ($n < $minx); + $maxx = $n if ($n > $maxx); } + elsif ($i == 1) { $miny = $n if ($n < $miny); + $maxy = $n if ($n > $maxy); } + else { $minz = $n if ($n < $minz); + $maxz = $n if ($n > $maxz); } + $i = 0 if (++$i == 3); + } + } + + my $w = ($maxx - $minx); + my $h = ($maxy - $miny); + my $d = ($maxz - $minz); + my $sizea = ($w > $h ? $w : $h); + my $sizeb = ($w > $d ? $w : $d); + my $size = ($sizea > $sizeb ? $sizea : $sizeb); + + print STDERR "$progname: $filename: bbox is " . + sprintf("%.2f x %.2f x %.2f\n", $w, $h, $d) + if ($verbose); + print STDERR "$progname: $filename: center is " . + sprintf("%.2f, %.2f, %.2f\n", + $minx + $w / 2, + $miny + $h / 2, + $minz + $d / 2) + if ($verbose); + + if ($normalize_p) { + $w /= $size; + $h /= $size; + $d /= $size; + + print STDERR "$progname: $filename: dividing by " . + sprintf("%.2f", $size) . " for bbox of " . + sprintf("%.2f x %.2f x %.2f\n", $w, $h, $d) + if ($verbose); + foreach my $layer (keys %triangles) { + foreach my $n (@{$triangles{$layer}}) { $n /= $size; } + foreach my $n (@{$lines{$layer}}) { $n /= $size; } + } + } + } + + return ($wireframe_p ? \%lines : \%triangles); +} + + +sub generate_c_1($$$$$@) { + my ($name, $outfile, $smooth_p, $wireframe_p, $normalize_p, @points) = @_; + + my $ccw_p = 1; # counter-clockwise winding rule for computing normals + + my $npoints = ($#points + 1) / 3; + my $nfaces = ($wireframe_p ? $npoints/2 : $npoints/3); + + my @normals; + if ($smooth_p && !$wireframe_p) { + @normals = compute_vertex_normals (@points); + + if ($#normals != $#points) { + error ("computed " . (($#normals+1)/3) . " normals for " . + (($#points+1)/3) . " points?"); + } + } + + my $code .= "\nstatic const float ${name}_data[] = {\n"; + + if ($wireframe_p) { + my %dups; + for (my $i = 0; $i < $nfaces; $i++) { + my $ax = $points[$i*6]; + my $ay = $points[$i*6+1]; + my $az = $points[$i*6+2]; + + my $bx = $points[$i*6+3]; + my $by = $points[$i*6+4]; + my $bz = $points[$i*6+5]; + + my $lines = sprintf("\t" . "%.6f,%.6f,%.6f,\n" . + "\t" . "%.6f,%.6f,%.6f,\n", + $ax, $ay, $az, + $bx, $by, $bz); + $lines =~ s/([.\d])0+,/$1,/g; # lose trailing insignificant zeroes + $lines =~ s/\.,/,/g; + $lines =~ s/-0,/0,/g; + + $code .= $lines; + } + + } else { + for (my $i = 0; $i < $nfaces; $i++) { + my $ax = $points[$i*9]; + my $ay = $points[$i*9+1]; + my $az = $points[$i*9+2]; + + my $bx = $points[$i*9+3]; + my $by = $points[$i*9+4]; + my $bz = $points[$i*9+5]; + + my $cx = $points[$i*9+6]; + my $cy = $points[$i*9+7]; + my $cz = $points[$i*9+8]; + + my ($nax, $nay, $naz, + $nbx, $nby, $nbz, + $ncx, $ncy, $ncz); + + if ($smooth_p) { + $nax = $normals[$i*9]; + $nay = $normals[$i*9+1]; + $naz = $normals[$i*9+2]; + + $nbx = $normals[$i*9+3]; + $nby = $normals[$i*9+4]; + $nbz = $normals[$i*9+5]; + + $ncx = $normals[$i*9+6]; + $ncy = $normals[$i*9+7]; + $ncz = $normals[$i*9+8]; + + } else { + if ($ccw_p) { + ($nax, $nay, $naz) = face_normal ($ax, $ay, $az, + $bx, $by, $bz, + $cx, $cy, $cz); + } else { + ($nax, $nay, $naz) = face_normal ($ax, $ay, $az, + $cx, $cy, $cz, + $bx, $by, $bz); + } + ($nbx, $nby, $nbz) = ($nax, $nay, $naz); + ($ncx, $ncy, $ncz) = ($nax, $nay, $naz); + } + + my $lines = sprintf("\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n" . + "\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n" . + "\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n", + $nax, $nay, $naz, $ax, $ay, $az, + $nbx, $nby, $nbz, $bx, $by, $bz, + $ncx, $ncy, $ncz, $cx, $cy, $cz); + $lines =~ s/([.\d])0+,/$1,/g; # lose trailing insignificant zeroes + $lines =~ s/\.,/,/g; + $lines =~ s/-0,/0,/g; + + $code .= $lines; + } + } + + my $format = ($wireframe_p ? 'GL_V3F' : 'GL_N3F_V3F'); + my $primitive = ($wireframe_p ? 'GL_LINES' : 'GL_TRIANGLES'); + + $code =~ s/,\n$//s; + $code .= "\n};\n"; + $code .= "static const struct gllist ${name}_frame = {\n"; + $code .= " $format, $primitive, $npoints, ${name}_data, 0\n};\n"; + $code .= "const struct gllist *$name = &${name}_frame;\n"; + + print STDERR "$progname: $outfile: $name: $npoints points, $nfaces faces.\n" + if ($verbose); + + return ($code, $npoints, $nfaces); +} + + +sub generate_c($$$$$$) { + my ($infile, $outfile, $smooth_p, $wireframe_p, $normalize_p, $layers) = @_; + + my $code = ''; + + my $token = $outfile; # guess at a C token from the filename + $token =~ s/\<[^<>]*\>//; + $token =~ s@^.*/@@; + $token =~ s/\.[^.]*$//; + $token =~ s/[^a-z\d]/_/gi; + $token =~ s/__+/_/g; + $token =~ s/^_//g; + $token =~ s/_$//g; + $token =~ tr [A-Z] [a-z]; + $token = 'foo' if ($token eq ''); + + my @layers = sort (keys %$layers); + + $infile =~ s@^.*/@@s; + $code .= ("/* Generated from \"$infile\" on " . + strftime ("%d-%b-%Y", localtime ()) . ".\n" . + " " . ($wireframe_p + ? "Wireframe." + : ($smooth_p ? + "Smoothed vertex normals." : + "Faceted face normals.")) . + ($normalize_p ? " Normalized to unit bounding box." : "") . + "\n" . + (@layers > 1 + ? wrap (" ", " ", "Components: " . join (", ", @layers)) . ".\n" + : "") . + " */\n\n"); + + $code .= "#include \"gllist.h\"\n"; + + my $npoints = 0; + my $nfaces = 0; + + foreach my $layer (@layers) { + my $name = $layer ? "${token}_${layer}" : $token; + my ($c, $np, $nf) = + generate_c_1 ($name, $outfile, + $smooth_p, $wireframe_p, $normalize_p, + @{$layers->{$layer}}); + $code .= $c; + $npoints += $np; + $nfaces += $nf; + } + + print STDERR "$progname: $outfile: total: $npoints points, $nfaces faces.\n" + if ($verbose && @layers > 1); + + return $code; +} + + +# Returns true if the two files differ (by running "cmp") +# +sub cmp_files($$) { + my ($file1, $file2) = @_; + + my @cmd = ("cmp", "-s", "$file1", "$file2"); + print STDERR "$progname: executing \"" . join(" ", @cmd) . "\"\n" + if ($verbose > 3); + + system (@cmd); + my $exit_value = $? >> 8; + my $signal_num = $? & 127; + my $dumped_core = $? & 128; + + error ("$cmd[0]: core dumped!") if ($dumped_core); + error ("$cmd[0]: signal $signal_num!") if ($signal_num); + return $exit_value; +} + + +sub dxf_to_gl($$$$$$) { + my ($infile, $outfile, $smooth_p, $normalize_p, $wireframe_p, $layers_p) = @_; + + open (my $in, "<$infile") || error ("$infile: $!"); + my $filename = ($infile eq '-' ? "" : $infile); + print STDERR "$progname: reading $filename...\n" + if ($verbose); + + local $/ = undef; # read entire file + my $dxf = <$in>; + close $in; + + my $data = parse_dxf ($filename, $dxf, $normalize_p, $wireframe_p, $layers_p); + + $filename = ($outfile eq '-' ? "" : $outfile); + my $code = generate_c ($infile, $filename, $smooth_p, $wireframe_p, + $normalize_p, $data); + + if ($outfile eq '-') { + print STDOUT $code; + } else { + my $tmp = "$outfile.tmp"; + open (my $out, '>', $tmp) || error ("$tmp: $!"); + print $out $code || error ("$filename: $!"); + close $out || error ("$filename: $!"); + if (cmp_files ($filename, $tmp)) { + if (!rename ($tmp, $filename)) { + unlink $tmp; + error ("mv $tmp $filename: $!"); + } + print STDERR "$progname: wrote $filename\n"; + } else { + unlink "$tmp" || error ("rm $tmp: $!\n"); + print STDERR "$progname: $filename unchanged\n" if ($verbose); + } + } +} + + +sub error() { + ($_) = @_; + print STDERR "$progname: $_\n"; + exit 1; +} + +sub usage() { + print STDERR "usage: $progname " . + "[--verbose] [--normalize] [--smooth] [--wireframe] [--layers]\n" . + "[infile [outfile]]\n"; + exit 1; +} + +sub main() { + my ($infile, $outfile); + my $normalize_p = 0; + my $smooth_p = 0; + my $wireframe_p = 0; + my $layers_p = 0; + while ($_ = $ARGV[0]) { + shift @ARGV; + if ($_ eq "--verbose") { $verbose++; } + elsif (m/^-v+$/) { $verbose += length($_)-1; } + elsif ($_ eq "--normalize") { $normalize_p = 1; } + elsif ($_ eq "--smooth") { $smooth_p = 1; } + elsif ($_ eq "--wireframe") { $wireframe_p = 1; } + elsif ($_ eq "--layers") { $layers_p = 1; } + elsif (m/^-./) { usage; } + elsif (!defined($infile)) { $infile = $_; } + elsif (!defined($outfile)) { $outfile = $_; } + else { usage; } + } + + $infile = "-" unless defined ($infile); + $outfile = "-" unless defined ($outfile); + + dxf_to_gl ($infile, $outfile, $smooth_p, $normalize_p, $wireframe_p, $layers_p); +} + +main; +exit 0; diff --git a/hacks/glx/dymaxionmap-coords.c b/hacks/glx/dymaxionmap-coords.c new file mode 100644 index 0000000..1eb064d --- /dev/null +++ b/hacks/glx/dymaxionmap-coords.c @@ -0,0 +1,685 @@ +/* http://www.rwgrayprojects.com/rbfnotes/maps/graymap6.html + Slightly modified by jwz for xscreensaver + */ + + +/**************************************************************/ +/* */ +/* This C program is copyrighted by Robert W. Gray and may */ +/* not be used in ANY for-profit project without written */ +/* permission. */ +/* */ +/**************************************************************/ + +/* (Note: Robert Gray has kindly given me his permission to include + this code in xscreensaver. -- Jamie Zawinski, Apr 2018.) + */ + + +/**************************************************************/ +/* */ +/* This C program contains the Dymaxion map coordinate */ +/* transformation routines for converting longitude/latitude */ +/* points to (X, Y) points on the Dymaxion map. */ +/* */ +/* This version uses the exact transformation equations. */ +/**************************************************************/ + +#include +#include +#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "dymaxionmap-coords.h" + +/************************************************************************/ +/* NOTE: in C, array indexing starts with element zero (0). I choose */ +/* to start my array indexing with elemennt one (1) so all arrays */ +/* are defined one element longer than they need to be. */ +/************************************************************************/ + +/************************************************************************/ +/* global variables accessable to all procedures */ +/************************************************************************/ + +static double v_x[13], v_y[13], v_z[13]; +static double center_x[21], center_y[21], center_z[21]; +static double garc, gt, gdve, gel; + +/********************************************/ +/* function pre-definitions */ +/********************************************/ + +static double radians(double degrees); +static void rotate(double angle, double *x, double *y); +static void r2(int axis, double alpha, double *x, double *y, double *z); +static void init_stuff(void); +/*static void convert_s_t_p(double lng, double lat, double *x, double *y);*/ +static void s_to_c(double theta, double phi, double *x, double *y, double *z); +static void c_to_s(double *theta, double *phi, double x, double y, double z); +static void s_tri_info(double x, double y, double z, + int *tri, int *lcd); +static void dymax_point(int tri, int lcd, + double x, double y, double z, + double *dx, double *dy); +static void conv_ll_t_sc(double lng, double lat, double *theta, double *phi); + + +/****************************************/ +/* function definitions */ +/****************************************/ + + +void +/* convert_s_t_p */ +dymaxion_convert +(double lng, double lat, double *x, double *y) +{ + /***********************************************************/ + /* This is the main control procedure. */ + /***********************************************************/ + + double theta, phi; + double hx, hy, hz; + double px = 0, py = 0; + int tri, hlcd; + + static int initted = 0; + if (! initted) { + init_stuff(); + initted = 1; + } + + /* Convert the given (long.,lat.) coordinate into spherical */ + /* polar coordinates (r, theta, phi) with radius=1. */ + /* Angles are given in radians, NOT degrees. */ + + conv_ll_t_sc(lng, lat, &theta, &phi); + + /* convert the spherical polar coordinates into cartesian */ + /* (x, y, z) coordinates. */ + + s_to_c(theta, phi, &hx, &hy, &hz); + + /* determine which of the 20 spherical icosahedron triangles */ + /* the given point is in and the LCD triangle. */ + + s_tri_info(hx, hy, hz, &tri, &hlcd); + + /* Determine the corresponding Fuller map plane (x, y) point */ + + dymax_point(tri, hlcd, hx, hy, hz, &px, &py); + *x = px; + *y = py; + +} /* end convert_s_t_p */ + + +static void conv_ll_t_sc(double lng, double lat, double *theta, double *phi) +{ + /* convert (long., lat.) point into spherical polar coordinates */ + /* with r=radius=1. Angles are given in radians. */ + + double h_theta, h_phi; + + h_theta = 90.0 - lat ; + h_phi = lng; + if (lng < 0.0) {h_phi = lng + 360.0;} + *theta = radians(h_theta); + *phi = radians(h_phi); + +} /* end conv_ll_t_sc */ + + +static double radians(double degrees) +{ + /* convert angles in degrees into angles in radians */ + + double pi2, c1; + + pi2 = 2 * 3.14159265358979323846; + c1 = pi2 / 360; + return(c1 * degrees); + +} /* end of radians function */ + + +static void init_stuff() +{ + /* initializes the global variables which includes the */ + /* vertix coordinates and mid-face coordinates. */ + + double /* i, */ hold_x, hold_y, hold_z, magn; + /* double theta, phi; */ + + /* Cartesian coordinates for the 12 vertices of icosahedron */ + + v_x[1] = 0.420152426708710003; + v_y[1] = 0.078145249402782959; + v_z[1] = 0.904082550615019298; + v_x[2] = 0.995009439436241649 ; + v_y[2] = -0.091347795276427931 ; + v_z[2] = 0.040147175877166645 ; + v_x[3] = 0.518836730327364437 ; + v_y[3] = 0.835420380378235850 ; + v_z[3] = 0.181331837557262454 ; + v_x[4] = -0.414682225320335218 ; + v_y[4] = 0.655962405434800777 ; + v_z[4] = 0.630675807891475371 ; + v_x[5] = -0.515455959944041808 ; + v_y[5] = -0.381716898287133011 ; + v_z[5] = 0.767200992517747538 ; + v_x[6] = 0.355781402532944713 ; + v_y[6] = -0.843580002466178147 ; + v_z[6] = 0.402234226602925571 ; + v_x[7] = 0.414682225320335218 ; + v_y[7] = -0.655962405434800777 ; + v_z[7] = -0.630675807891475371 ; + v_x[8] = 0.515455959944041808 ; + v_y[8] = 0.381716898287133011 ; + v_z[8] = -0.767200992517747538 ; + v_x[9] = -0.355781402532944713 ; + v_y[9] = 0.843580002466178147 ; + v_z[9] = -0.402234226602925571 ; + v_x[10] = -0.995009439436241649 ; + v_y[10] = 0.091347795276427931 ; + v_z[10] = -0.040147175877166645 ; + v_x[11] = -0.518836730327364437 ; + v_y[11] = -0.835420380378235850 ; + v_z[11] = -0.181331837557262454 ; + v_x[12] = -0.420152426708710003 ; + v_y[12] = -0.078145249402782959 ; + v_z[12] = -0.904082550615019298 ; + + /* now calculate mid face coordinates */ + + hold_x = (v_x[1] + v_x[2] + v_x[3]) / 3.0 ; + hold_y = (v_y[1] + v_y[2] + v_y[3]) / 3.0 ; + hold_z = (v_z[1] + v_z[2] + v_z[3]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[1] = hold_x / magn; + center_y[1] = hold_y / magn; + center_z[1] = hold_z / magn; + + hold_x = (v_x[1] + v_x[3] + v_x[4]) / 3.0 ; + hold_y = (v_y[1] + v_y[3] + v_y[4]) / 3.0 ; + hold_z = (v_z[1] + v_z[3] + v_z[4]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[2] = hold_x / magn; + center_y[2] = hold_y / magn; + center_z[2] = hold_z / magn; + + hold_x = (v_x[1] + v_x[4] + v_x[5]) / 3.0 ; + hold_y = (v_y[1] + v_y[4] + v_y[5]) / 3.0 ; + hold_z = (v_z[1] + v_z[4] + v_z[5]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[3] = hold_x / magn; + center_y[3] = hold_y / magn; + center_z[3] = hold_z / magn; + + hold_x = (v_x[1] + v_x[5] + v_x[6]) / 3.0 ; + hold_y = (v_y[1] + v_y[5] + v_y[6]) / 3.0 ; + hold_z = (v_z[1] + v_z[5] + v_z[6]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[4] = hold_x / magn; + center_y[4] = hold_y / magn; + center_z[4] = hold_z / magn; + + hold_x = (v_x[1] + v_x[2] + v_x[6]) / 3.0 ; + hold_y = (v_y[1] + v_y[2] + v_y[6]) / 3.0 ; + hold_z = (v_z[1] + v_z[2] + v_z[6]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[5] = hold_x / magn; + center_y[5] = hold_y / magn; + center_z[5] = hold_z / magn; + + hold_x = (v_x[2] + v_x[3] + v_x[8]) / 3.0 ; + hold_y = (v_y[2] + v_y[3] + v_y[8]) / 3.0 ; + hold_z = (v_z[2] + v_z[3] + v_z[8]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[6] = hold_x / magn; + center_y[6] = hold_y / magn; + center_z[6] = hold_z / magn; + + hold_x = (v_x[8] + v_x[3] + v_x[9]) / 3.0 ; + hold_y = (v_y[8] + v_y[3] + v_y[9]) / 3.0 ; + hold_z = (v_z[8] + v_z[3] + v_z[9]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[7] = hold_x / magn; + center_y[7] = hold_y / magn; + center_z[7] = hold_z / magn; + + hold_x = (v_x[9] + v_x[3] + v_x[4]) / 3.0 ; + hold_y = (v_y[9] + v_y[3] + v_y[4]) / 3.0 ; + hold_z = (v_z[9] + v_z[3] + v_z[4]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[8] = hold_x / magn; + center_y[8] = hold_y / magn; + center_z[8] = hold_z / magn; + + hold_x = (v_x[10] + v_x[9] + v_x[4]) / 3.0 ; + hold_y = (v_y[10] + v_y[9] + v_y[4]) / 3.0 ; + hold_z = (v_z[10] + v_z[9] + v_z[4]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[9] = hold_x / magn; + center_y[9] = hold_y / magn; + center_z[9] = hold_z / magn; + + hold_x = (v_x[5] + v_x[10] + v_x[4]) / 3.0 ; + hold_y = (v_y[5] + v_y[10] + v_y[4]) / 3.0 ; + hold_z = (v_z[5] + v_z[10] + v_z[4]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[10] = hold_x / magn; + center_y[10] = hold_y / magn; + center_z[10] = hold_z / magn; + + hold_x = (v_x[5] + v_x[11] + v_x[10]) / 3.0 ; + hold_y = (v_y[5] + v_y[11] + v_y[10]) / 3.0 ; + hold_z = (v_z[5] + v_z[11] + v_z[10]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[11] = hold_x / magn; + center_y[11] = hold_y / magn; + center_z[11] = hold_z / magn; + + hold_x = (v_x[5] + v_x[6] + v_x[11]) / 3.0 ; + hold_y = (v_y[5] + v_y[6] + v_y[11]) / 3.0 ; + hold_z = (v_z[5] + v_z[6] + v_z[11]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[12] = hold_x / magn; + center_y[12] = hold_y / magn; + center_z[12] = hold_z / magn; + + hold_x = (v_x[11] + v_x[6] + v_x[7]) / 3.0 ; + hold_y = (v_y[11] + v_y[6] + v_y[7]) / 3.0 ; + hold_z = (v_z[11] + v_z[6] + v_z[7]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[13] = hold_x / magn; + center_y[13] = hold_y / magn; + center_z[13] = hold_z / magn; + + hold_x = (v_x[7] + v_x[6] + v_x[2]) / 3.0 ; + hold_y = (v_y[7] + v_y[6] + v_y[2]) / 3.0 ; + hold_z = (v_z[7] + v_z[6] + v_z[2]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[14] = hold_x / magn; + center_y[14] = hold_y / magn; + center_z[14] = hold_z / magn; + + hold_x = (v_x[8] + v_x[7] + v_x[2]) / 3.0 ; + hold_y = (v_y[8] + v_y[7] + v_y[2]) / 3.0 ; + hold_z = (v_z[8] + v_z[7] + v_z[2]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[15] = hold_x / magn; + center_y[15] = hold_y / magn; + center_z[15] = hold_z / magn; + + hold_x = (v_x[12] + v_x[9] + v_x[8]) / 3.0 ; + hold_y = (v_y[12] + v_y[9] + v_y[8]) / 3.0 ; + hold_z = (v_z[12] + v_z[9] + v_z[8]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[16] = hold_x / magn; + center_y[16] = hold_y / magn; + center_z[16] = hold_z / magn; + + hold_x = (v_x[12] + v_x[9] + v_x[10]) / 3.0 ; + hold_y = (v_y[12] + v_y[9] + v_y[10]) / 3.0 ; + hold_z = (v_z[12] + v_z[9] + v_z[10]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[17] = hold_x / magn; + center_y[17] = hold_y / magn; + center_z[17] = hold_z / magn; + + hold_x = (v_x[12] + v_x[11] + v_x[10]) / 3.0 ; + hold_y = (v_y[12] + v_y[11] + v_y[10]) / 3.0 ; + hold_z = (v_z[12] + v_z[11] + v_z[10]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[18] = hold_x / magn; + center_y[18] = hold_y / magn; + center_z[18] = hold_z / magn; + + hold_x = (v_x[12] + v_x[11] + v_x[7]) / 3.0 ; + hold_y = (v_y[12] + v_y[11] + v_y[7]) / 3.0 ; + hold_z = (v_z[12] + v_z[11] + v_z[7]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[19] = hold_x / magn; + center_y[19] = hold_y / magn; + center_z[19] = hold_z / magn; + + hold_x = (v_x[12] + v_x[8] + v_x[7]) / 3.0 ; + hold_y = (v_y[12] + v_y[8] + v_y[7]) / 3.0 ; + hold_z = (v_z[12] + v_z[8] + v_z[7]) / 3.0 ; + magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z); + center_x[20] = hold_x / magn; + center_y[20] = hold_y / magn; + center_z[20] = hold_z / magn; + + garc = 2.0 * asin( sqrt( 5 - sqrt(5)) / sqrt(10) ); + gt = garc / 2.0; + + gdve = sqrt( 3 + sqrt(5) ) / sqrt( 5 + sqrt(5) ); + gel = sqrt(8) / sqrt(5 + sqrt(5)); + +} /* end of int_stuff procedure */ + + +static void s_to_c(double theta, double phi, double *x, double *y, double *z) +{ + /* Covert spherical polar coordinates to cartesian coordinates. */ + /* The angles are given in radians. */ + + *x = sin(theta) * cos(phi); + *y = sin(theta) * sin(phi); + *z = cos(theta); + + } /* end s_to_c */ + + +static void c_to_s(double *lng, double *lat, double x, double y, double z) + { + /* convert cartesian coordinates into spherical polar coordinates. */ + /* The angles are given in radians. */ + + double a; + + if (x>0.0 && y>0.0){a = radians(0.0);} + if (x<0.0 && y>0.0){a = radians(180.0);} + if (x<0.0 && y<0.0){a = radians(180.0);} + if (x>0.0 && y<0.0){a = radians(360.0);} + *lat = acos(z); + if (x==0.0 && y>0.0){*lng = radians(90.0);} + if (x==0.0 && y<0.0){*lng = radians(270.0);} + if (x>0.0 && y==0.0){*lng = radians(0.0);} + if (x<0.0 && y==0.0){*lng = radians(180.0);} + if (x!=0.0 && y!=0.0){*lng = atan(y/x) + a;} + +} /* end c_to_s */ + + +void s_tri_info(double x, double y, double z, + int *tri, int *lcd) +{ + /* Determine which triangle and LCD triangle the point is in. */ + + double h_dist1, h_dist2, h_dist3, h1, h2, h3; + int i, h_tri, h_lcd ; + int v1 = 0, v2 = 0, v3 = 0; + + h_tri = 0; + h_dist1 = 9999.0; + + /* Which triangle face center is the closest to the given point */ + /* is the triangle in which the given point is in. */ + + for (i = 1; i <=20; i = i + 1) + { + h1 = center_x[i] - x; + h2 = center_y[i] - y; + h3 = center_z[i] - z; + h_dist2 = sqrt(h1 * h1 + h2 * h2 + h3 * h3); + if (h_dist2 < h_dist1) + { + h_tri = i; + h_dist1 = h_dist2; + } /* end the if statement */ + } /* end the for statement */ + + *tri = h_tri; + + /* Now the LCD triangle is determined. */ + + switch (h_tri) + { + case 1: v1 = 1; v2 = 3; v3 = 2; break; + case 2: v1 = 1; v2 = 4; v3 = 3; break; + case 3: v1 = 1; v2 = 5; v3 = 4; break; + case 4: v1 = 1; v2 = 6; v3 = 5; break; + case 5: v1 = 1; v2 = 2; v3 = 6; break; + case 6: v1 = 2; v2 = 3; v3 = 8; break; + case 7: v1 = 3; v2 = 9; v3 = 8; break; + case 8: v1 = 3; v2 = 4; v3 = 9; break; + case 9: v1 = 4; v2 = 10; v3 = 9; break; + case 10: v1 = 4; v2 = 5; v3 = 10; break; + case 11: v1 = 5; v2 = 11; v3 = 10; break; + case 12: v1 = 5; v2 = 6; v3 = 11; break; + case 13: v1 = 6; v2 = 7; v3 = 11; break; + case 14: v1 = 2; v2 = 7; v3 = 6; break; + case 15: v1 = 2; v2 = 8; v3 = 7; break; + case 16: v1 = 8; v2 = 9; v3 = 12; break; + case 17: v1 = 9; v2 = 10; v3 = 12; break; + case 18: v1 = 10; v2 = 11; v3 = 12; break; + case 19: v1 = 11; v2 = 7; v3 = 12; break; + case 20: v1 = 8; v2 = 12; v3 = 7; break; + } /* end of switch statement */ + + h1 = x - v_x[v1]; + h2 = y - v_y[v1]; + h3 = z - v_z[v1]; + h_dist1 = sqrt(h1 * h1 + h2 * h2 + h3 * h3); + + h1 = x - v_x[v2]; + h2 = y - v_y[v2]; + h3 = z - v_z[v2]; + h_dist2 = sqrt(h1 * h1 + h2 * h2 + h3 * h3); + + h1 = x - v_x[v3]; + h2 = y - v_y[v3]; + h3 = z - v_z[v3]; + h_dist3 = sqrt(h1 * h1 + h2 * h2 + h3 * h3); + + if ( (h_dist1 <= h_dist2) && (h_dist2 <= h_dist3) ) {h_lcd = 1; } + if ( (h_dist1 <= h_dist3) && (h_dist3 <= h_dist2) ) {h_lcd = 6; } + if ( (h_dist2 <= h_dist1) && (h_dist1 <= h_dist3) ) {h_lcd = 2; } + if ( (h_dist2 <= h_dist3) && (h_dist3 <= h_dist1) ) {h_lcd = 3; } + if ( (h_dist3 <= h_dist1) && (h_dist1 <= h_dist2) ) {h_lcd = 5; } + if ( (h_dist3 <= h_dist2) && (h_dist2 <= h_dist1) ) {h_lcd = 4; } + + *lcd = h_lcd; + +} /* end s_tri_info */ + + +static void dymax_point(int tri, int lcd, + double x, double y, double z, + double *px, double *py) +{ + int axis, v1 = 0; + double hlng, hlat, h0x, h0y, h0z, h1x, h1y, h1z; + + double gs; + double gx, gy, gz, ga1,ga2,ga3,ga1p,ga2p,ga3p,gxp,gyp/*,gzp*/; + + + /* In order to rotate the given point into the template spherical */ + /* triangle, we need the spherical polar coordinates of the center */ + /* of the face and one of the face vertices. So set up which vertex */ + /* to use. */ + + switch (tri) + { + case 1: v1 = 1; break; + case 2: v1 = 1; break; + case 3: v1 = 1; break; + case 4: v1 = 1; break; + case 5: v1 = 1; break; + case 6: v1 = 2; break; + case 7: v1 = 3; break; + case 8: v1 = 3; break; + case 9: v1 = 4; break; + case 10: v1 = 4; break; + case 11: v1 = 5; break; + case 12: v1 = 5; break; + case 13: v1 = 6; break; + case 14: v1 = 2; break; + case 15: v1 = 2; break; + case 16: v1 = 8; break; + case 17: v1 = 9; break; + case 18: v1 = 10; break; + case 19: v1 = 11; break; + case 20: v1 = 8; break; + } /* end of switch statement */ + + h0x = x; + h0y = y; + h0z = z; + + h1x = v_x[v1]; + h1y = v_y[v1]; + h1z = v_z[v1]; + + c_to_s(&hlng, &hlat, center_x[tri], center_y[tri], center_z[tri]); + + axis = 3; + r2(axis,hlng,&h0x,&h0y,&h0z); + r2(axis,hlng,&h1x,&h1y,&h1z); + + axis = 2; + r2(axis,hlat,&h0x,&h0y,&h0z); + r2(axis,hlat,&h1x,&h1y,&h1z); + + c_to_s(&hlng,&hlat,h1x,h1y,h1z); + hlng = hlng - radians(90.0); + + axis = 3; + r2(axis,hlng,&h0x,&h0y,&h0z); + + /* exact transformation equations */ + + gz = sqrt(1 - h0x * h0x - h0y * h0y); + gs = sqrt( 5 + 2 * sqrt(5) ) / ( gz * sqrt(15) ); + + gxp = h0x * gs ; + gyp = h0y * gs ; + + ga1p = 2.0 * gyp / sqrt(3.0) + (gel / 3.0) ; + ga2p = gxp - (gyp / sqrt(3)) + (gel / 3.0) ; + ga3p = (gel / 3.0) - gxp - (gyp / sqrt(3)); + + ga1 = gt + atan( (ga1p - 0.5 * gel) / gdve); + ga2 = gt + atan( (ga2p - 0.5 * gel) / gdve); + ga3 = gt + atan( (ga3p - 0.5 * gel) / gdve); + + gx = 0.5 * (ga2 - ga3) ; + + gy = (1.0 / (2.0 * sqrt(3)) ) * (2 * ga1 - ga2 - ga3); + + /* Re-scale so plane triangle edge length is 1. */ + + x = gx / garc; + y = gy / garc; + + /* rotate and translate to correct position */ + + switch (tri) + { + case 1: rotate(240.0,&x, &y); + *px = x + 2.0; *py = y + 7.0 / (2.0 * sqrt(3.0)) ; break; + case 2: rotate(300.0, &x, &y); *px = x + 2.0; + *py = y + 5.0 / (2.0 * sqrt(3.0)) ; break; + case 3: rotate(0.0, &x, &y); + *px = x + 2.5; *py = y + 2.0 / sqrt(3.0); break; + case 4: rotate(60.0, &x, &y); + *px = x + 3.0; *py = y + 5.0 / (2.0 * sqrt(3.0)) ; break; + case 5: rotate(180.0, &x, &y); + *px = x + 2.5; *py = y + 4.0 * sqrt(3.0) / 3.0; break; + case 6: rotate(300.0, &x, &y); + *px = x + 1.5; *py = y + 4.0 * sqrt(3.0) / 3.0; break; + case 7: rotate(300.0, &x, &y); + *px = x + 1.0; *py = y + 5.0 / (2.0 * sqrt(3.0)) ; break; + case 8: rotate(0.0, &x, &y); + *px = x + 1.5; *py = y + 2.0 / sqrt(3.0); break; + case 9: if (lcd > 2) + { + rotate(300.0, &x, &y); + *px = x + 1.5; *py = y + 1.0 / sqrt(3.0); + } + else + { + rotate(0.0, &x, &y); + *px = x + 2.0; *py = y + 1.0 / (2.0 * sqrt(3.0)); + } + break; + + case 10: rotate(60.0, &x, &y); + *px = x + 2.5; *py = y + 1.0 / sqrt(3.0); break; + case 11: rotate(60.0, &x, &y); + *px = x + 3.5; *py = y + 1.0 / sqrt(3.0); break; + case 12: rotate(120.0, &x, &y); + *px = x + 3.5; *py = y + 2.0 / sqrt(3.0); break; + case 13: rotate(60.0, &x, &y); + *px = x + 4.0; *py = y + 5.0 / (2.0 * sqrt(3.0)); break; + case 14: rotate(0.0, &x, &y); + *px = x + 4.0; *py = y + 7.0 / (2.0 * sqrt(3.0)) ; break; + case 15: rotate(0.0, &x, &y); + *px = x + 5.0; *py = y + 7.0 / (2.0 * sqrt(3.0)) ; break; + case 16: if (lcd < 4) + { + rotate(60.0, &x, &y); + *px = x + 0.5; *py = y + 1.0 / sqrt(3.0); + } + else + { + rotate(0.0, &x, &y); + *px = x + 5.5; *py = y + 2.0 / sqrt(3.0); + } + break; + case 17: rotate(0.0, &x, &y); + *px = x + 1.0; *py = y + 1.0 / (2.0 * sqrt(3.0)); break; + case 18: rotate(120.0, &x, &y); + *px = x + 4.0; *py = y + 1.0 / (2.0 * sqrt(3.0)); break; + case 19: rotate(120.0, &x, &y); + *px = x + 4.5; *py = y + 2.0 / sqrt(3.0); break; + case 20: rotate(300.0, &x, &y); + *px = x + 5.0; *py = y + 5.0 / (2.0 * sqrt(3.0)); break; + + } /* end switch statement */ + +} /* end of dymax_point */ + + +static void rotate(double angle, double *x, double *y) +{ + /* Rotate the point to correct orientation in XY-plane. */ + + double ha, hx, hy ; + + ha = radians(angle); + hx = *x; + hy = *y; + *x = hx * cos(ha) - hy * sin(ha); + *y = hx * sin(ha) + hy * cos(ha); + +} /* end rotate procedure */ + + +static void r2(int axis, double alpha, double *x, double *y, double *z) +{ + /* Rotate a 3-D point about the specified axis. */ + + double a, b, c; + + a = *x; + b = *y; + c = *z; + if (axis == 1) + { + *y = b * cos(alpha) + c * sin(alpha); + *z = c * cos(alpha) - b * sin(alpha); + } + + if (axis == 2) + { + *x = a * cos(alpha) - c * sin(alpha); + *z = a * sin(alpha) + c * cos(alpha); + } + + if (axis == 3) + { + *x = a * cos(alpha) + b * sin(alpha); + *y = b * cos(alpha) - a * sin(alpha); + } + +} /* end of r2 */ + diff --git a/hacks/glx/dymaxionmap-coords.h b/hacks/glx/dymaxionmap-coords.h new file mode 100644 index 0000000..fad4a04 --- /dev/null +++ b/hacks/glx/dymaxionmap-coords.h @@ -0,0 +1,6 @@ +#ifndef __DYMAXIONMAP_COORDS_H__ +#define __DYMAXIONMAP_COORDS_H__ + +void dymaxion_convert (double lng, double lat, double *x, double *y); + +#endif /* __DYMAXIONMAP_COORDS_H__ */ diff --git a/hacks/glx/dymaxionmap.c b/hacks/glx/dymaxionmap.c new file mode 100644 index 0000000..711db2e --- /dev/null +++ b/hacks/glx/dymaxionmap.c @@ -0,0 +1,1654 @@ +/* dymaxionmap --- Buckminster Fuller's unwrapped icosahedral globe. + * Copyright (c) 2016-2018 Jamie Zawinski. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + */ + +#define LABEL_FONT "-*-helvetica-bold-r-normal-*-*-240-*-*-*-*-*-*" + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*labelFont: " LABEL_FONT "\n" +# define release_planet 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL /* whole file */ + +#include "sphere.h" +#include "normals.h" +#include "texfont.h" +#include "dymaxionmap-coords.h" + +#ifdef HAVE_XMU +# ifndef VMS +# include +#else /* VMS */ +# include +# endif /* VMS */ +#endif + +#define DEF_ROTATE "True" +#define DEF_ROLL "True" +#define DEF_WANDER "True" +#define DEF_TEXTURE "True" +#define DEF_STARS "True" +#define DEF_GRID "True" +#define DEF_SPEED "1.0" +#define DEF_IMAGE "BUILTIN_FLAT" +#define DEF_IMAGE2 "NONE" +#define DEF_FRAMES "720" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +static int do_roll; +static int do_wander; +static int do_texture; +static int do_stars; +static int do_grid; +static int frames; +static GLfloat speed; +static char *which_image; +static char *which_image2; + +static XrmOptionDescRec opts[] = { + {"-speed", ".speed", XrmoptionSepArg, 0 }, + {"-roll", ".roll", XrmoptionNoArg, "true" }, + {"+roll", ".roll", XrmoptionNoArg, "false" }, + {"-wander", ".wander", XrmoptionNoArg, "true" }, + {"+wander", ".wander", XrmoptionNoArg, "false" }, + {"-texture", ".texture", XrmoptionNoArg, "true" }, + {"+texture", ".texture", XrmoptionNoArg, "false" }, + {"-stars", ".stars", XrmoptionNoArg, "true" }, + {"+stars", ".stars", XrmoptionNoArg, "false" }, + {"-grid", ".grid", XrmoptionNoArg, "true" }, + {"+grid", ".grid", XrmoptionNoArg, "false" }, + {"-flat", ".image", XrmoptionNoArg, "BUILTIN_FLAT" }, + {"-satellite",".image", XrmoptionNoArg, "BUILTIN_SAT" }, + {"-image", ".image", XrmoptionSepArg, 0 }, + {"-image2", ".image2", XrmoptionSepArg, 0 }, + {"-frames", ".frames", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&do_roll, "roll", "Roll", DEF_ROLL, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_stars, "stars", "Stars", DEF_STARS, t_Bool}, + {&do_grid, "grid", "Grid", DEF_GRID, t_Bool}, + {&which_image, "image", "Image", DEF_IMAGE, t_String}, + {&which_image2,"image2", "Image2", DEF_IMAGE2, t_String}, + {&frames, "frames", "Frames", DEF_FRAMES, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt planet_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct planet_description = +{"planet", "init_planet", "draw_planet", NULL, + "draw_planet", "init_planet", "free_planet", &planet_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Buckminster Fuller's unwrapped icosahedral globe", 0, NULL}; +#endif + +# ifdef __GNUC__ + __extension__ /* don't warn about "string length is greater than the length + ISO C89 compilers are required to support" when including + the following XPM file... */ +# endif + +#include "images/gen/earth_flat_png.h" +#include "images/gen/earth_png.h" +#include "images/gen/earth_night_png.h" +#include "images/gen/ground_png.h" + +#include "ximage-loader.h" +#include "rotator.h" +#include "gltrackball.h" + + +typedef struct { + GLXContext *glx_context; + GLuint starlist; + int starcount; + rotator *rot, *rot2; + trackball_state *trackball; + Bool button_down_p; + enum { STARTUP, FLAT, FOLD, + ICO, STEL_IN, AXIS, SPIN, STEL, STEL_OUT, + ICO2, UNFOLD } state; + GLfloat ratio; + GLuint tex1, tex2; + texture_font_data *font_data; + int loading_sw, loading_sh; + + XImage *day, *night, *dusk, *cvt; + XImage **images; /* One image for each frame of time-of-day. */ + int nimages; + + double current_frame; + Bool cache_p; + long delay; + +} planetstruct; + + +static planetstruct *planets = NULL; + + +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + + +/* Draw faint latitude and longitude lines into the RGBA XImage. + */ +static void +add_grid_lines (XImage *image) +{ + int i; + int off = 24; + for (i = 0; i < 24; i++) + { + int x = (i + 0.5) * image->width / (double) 24; + int y; + for (y = 0; y < image->height; y++) + { + unsigned long rgba = XGetPixel (image, x, y); + int r = (rgba >> 24) & 0xFF; + int g = (rgba >> 16) & 0xFF; + int b = (rgba >> 8) & 0xFF; + int a = (rgba >> 0) & 0xFF; + int off2 = (((r + g + b) / 3) < 0x7F ? off : -off); + r = MAX (0, MIN (0xFF, r + off2)); + g = MAX (0, MIN (0xFF, g + off2)); + b = MAX (0, MIN (0xFF, b + off2)); + XPutPixel (image, x, y, (r << 24) | (g << 16) | (b << 8) | a); + } + } + + for (i = 1; i < 11; i++) + { + int y = i * image->height / (double) 12; + int x; + for (x = 0; x < image->width; x++) + { + unsigned long rgba = XGetPixel (image, x, y); + int r = (rgba >> 24) & 0xFF; + int g = (rgba >> 16) & 0xFF; + int b = (rgba >> 8) & 0xFF; + int a = (rgba >> 0) & 0xFF; + int off2 = (((r + g + b) / 3) < 0x7F ? off : -off); + r = MAX (0, MIN (0xFF, r + off2)); + g = MAX (0, MIN (0xFF, g + off2)); + b = MAX (0, MIN (0xFF, b + off2)); + XPutPixel (image, x, y, (r << 24) | (g << 16) | (b << 8) | a); + } + } +} + + +static void +adjust_brightness (XImage *image, double amount) +{ + uint32_t *in = (uint32_t *) image->data; + int i; + int end = image->height * image->bytes_per_line / 4; + for (i = 0; i < end; i++) + { + uint32_t p = *in; + /* #### Why is this ABGR instead of RGBA? */ + uint32_t a = (p >> 24) & 0xFF; + uint32_t g = (p >> 16) & 0xFF; + uint32_t b = (p >> 8) & 0xFF; + uint32_t r = (p >> 0) & 0xFF; + r = MAX(0, MIN(0xFF, (long) (r * amount))); + g = MAX(0, MIN(0xFF, (long) (g * amount))); + b = MAX(0, MIN(0xFF, (long) (b * amount))); + p = (a << 24) | (g << 16) | (b << 8) | r; + *in++ = p; + } +} + + +static GLfloat +vector_angle (XYZ a, XYZ b) +{ + double La = sqrt (a.x*a.x + a.y*a.y + a.z*a.z); + double Lb = sqrt (b.x*b.x + b.y*b.y + b.z*b.z); + double cc, angle; + + if (La == 0 || Lb == 0) return 0; + if (a.x == b.x && a.y == b.y && a.z == b.z) return 0; + + /* dot product of two vectors is defined as: + La * Lb * cos(angle between vectors) + and is also defined as: + ax*bx + ay*by + az*bz + so: + La * Lb * cos(angle) = ax*bx + ay*by + az*bz + cos(angle) = (ax*bx + ay*by + az*bz) / (La * Lb) + angle = acos ((ax*bx + ay*by + az*bz) / (La * Lb)); + */ + cc = (a.x*b.x + a.y*b.y + a.z*b.z) / (La * Lb); + if (cc > 1) cc = 1; /* avoid fp rounding error (1.000001 => sqrt error) */ + angle = acos (cc); + + return (angle); +} + + +/* Creates a grayscale image encoding the day/night terminator for a random + axial tilt. + */ +static XImage * +create_daylight_mask (Display *dpy, Visual *v, int w, int h) +{ + XImage *image = XCreateImage (dpy, v, 8, ZPixmap, 0, 0, w, h, 8, 0); + int x, y; + XYZ sun; + double axial_tilt = frand(23.4) / (180/M_PI) * RANDSIGN(); + double dusk = M_PI * 0.035; + sun.x = 0; + sun.y = cos (axial_tilt); + sun.z = sin (axial_tilt); + + image->data = (char *) malloc (image->height * image->bytes_per_line); + + for (y = 0; y < image->height; y++) + { + double lat = -M_PI_2 + (M_PI * (y / (double) image->height)); + double cosL = cos(lat); + double sinL = sin(lat); + for (x = 0; x < image->width; x++) + { + double lon = -M_PI_2 + (M_PI * 2 * (x / (double) image->width)); + XYZ v; + double a; + unsigned long p; + v.x = cos(lon) * cosL; + v.y = sin(lon) * cosL; + v.z = sinL; + a = vector_angle (sun, v); + a -= M_PI_2; + a = (a < -dusk ? 1 : a >= dusk ? 0 : (dusk - a) / (dusk * 2)); + p = 0xFF & (unsigned long) (a * 0xFF); + XPutPixel (image, x, y, p); + } + } + return image; +} + + +static void +load_images (ModeInfo *mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + int i; + + if (which_image && !strcmp (which_image, "BUILTIN_FLAT")) + { + which_image = strdup("BUILTIN_FLAT"); + which_image2 = strdup("BUILTIN_FLAT"); + } + else if (which_image && !strcmp (which_image, "BUILTIN_SAT")) + { + which_image = strdup("BUILTIN_DAY"); + which_image2 = strdup("BUILTIN_NIGHT"); + } + + if (!which_image) which_image = strdup(""); + if (!which_image2) which_image2 = strdup(""); + + for (i = 0; i < 2; i++) + { + char *s = (i == 0 ? which_image : which_image2); + XImage *image; + if (!strcmp (s, "BUILTIN_DAY")) + image = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + earth_png, sizeof(earth_png)); + else if (!strcmp (s, "BUILTIN_NIGHT")) + image = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + earth_night_png,sizeof(earth_night_png)); + else if (!strcmp (s, "BUILTIN") || + !strcmp (s, "BUILTIN_FLAT") || + (i == 0 && !strcmp (s, ""))) + image = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + earth_flat_png, sizeof(earth_flat_png)); + else if (!strcmp (s, "NONE")) + image = 0; + else if (*s) + image = file_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), s); + else + image = 0; + + /* if (image) fprintf (stderr, "%s: %d: loaded %s\n", progname, i, s); */ + + if (i == 0) + gp->day = image; + else + gp->night = image; + } + + if (gp->night && !gp->day) + gp->day = gp->night, gp->night = 0; + + gp->nimages = frames; + gp->current_frame = random() % gp->nimages; + + if (gp->nimages < 1) + gp->nimages = 1; + + if (gp->nimages < 2 && gp->night) + { + XDestroyImage (gp->night); + gp->night = 0; + gp->nimages = 1; + } + + if (! gp->night) + gp->nimages = 1; + + if (do_grid) + { + if (gp->day) add_grid_lines (gp->day); + if (gp->night) add_grid_lines (gp->night); + } + + if (gp->day && gp->night && !gp->dusk) + { + if (gp->day->width != gp->night->width || + gp->day->height != gp->night->height) + { + fprintf (stderr, "%s: day and night images must be the same size" + " (%dx%d vs %dx%d)\n", progname, + gp->day->width, gp->day->height, + gp->night->width, gp->night->height); + exit (1); + } + gp->dusk = create_daylight_mask (MI_DISPLAY (mi), MI_VISUAL (mi), + gp->day->width, gp->day->height); + } + + /* Make the day image brighter, because that's easier than doing it + with GL lights. */ + adjust_brightness (gp->day, 1.4); + + if (!strcmp (which_image, which_image2)) + /* If day and night are the same image, make night way darker. */ + adjust_brightness (gp->night, 0.2); + else if (gp->night) + /* Otherwise make it just a little darker. */ + adjust_brightness (gp->night, 0.7); + + + gp->images = (XImage **) calloc (gp->nimages, sizeof(*gp->images)); + + /* Create 'cvt', a map that projects each pixel from Equirectangular to + Dymaxion. It is 2x the width/height of the source images. We iterate + by half pixel to make sure we hit every pixel in 'out'. It would be + cleaner to iterate over 'out' instead of over 'in' but + dymaxionmap-coords.c only goes forward. This is... not super fast. + */ + { + double W = 5.5; + double H = 3 * sqrt(3)/2; + int x2, y2; + int w = gp->day->width; + int h = gp->day->height; + uint32_t *out; + + gp->cvt = XCreateImage (MI_DISPLAY(mi), MI_VISUAL(mi), 32, ZPixmap, 0, 0, + gp->day->width*2, gp->day->height*2, 32, 0); + gp->cvt->data = (char *) + malloc (gp->cvt->height * gp->cvt->bytes_per_line); + out = (uint32_t *) gp->cvt->data; + + for (y2 = 0; y2 < h*2; y2++) + { + double y = (double) y2/2; + double lat = -90 + (180 * (y / (double) h)); + for (x2 = 0; x2 < w*2; x2++) + { + double x = (double) x2/2; + double lon = -180 + (360 * x / w); + double ox, oy; + dymaxion_convert (lon, lat, &ox, &oy); + ox = w - (w * ox / W); + oy = (h * oy / H); + + *out++ = (((((uint32_t) ox) & 0xFFFF) << 16) | + ((((uint32_t) oy) & 0xFFFF))); + } + } + } + + /* A 128 GB iPhone 6s dies at around 540 frames, ~1 GB of XImages. + A 16 GB iPad Air 2 dies at around 320 frames, ~640 MB. + Caching on mobile doesn't matter much: we can just run at 100% CPU. + + On some systems it would be more efficient to cache the images inside + a texture on the GPU instead of moving it from RAM to GPU every few + frames; but on other systems, we'd just run out of GPU memory instead. */ + { + unsigned long cache_size = (gp->day->width * gp->day->height * 4 * + gp->nimages); +# ifdef HAVE_MOBILE + unsigned long max = 320 * 1024 * 1024L; /* 320 MB */ +# else + unsigned long max = 2 * 1024 * 1024 * 1024L; /* 2 GB */ +# endif + gp->cache_p = (cache_size < max); + } +} + + +static void +cache_current_frame (ModeInfo *mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + XImage *blended, *dymaxion; + int i, x, y, w, h, end, xoff; + uint32_t *day, *night, *cvt, *out; + uint8_t *dusk; + + if (gp->images[(int) gp->current_frame]) + return; + + xoff = (gp->dusk + ? gp->dusk->width * ((double) gp->current_frame / gp->nimages) + : 0); + + w = gp->day->width; + h = gp->day->height; + + if (!gp->night) + blended = gp->day; + else + { + /* Blend the foreground and background images through the dusk map. + */ + blended = XCreateImage (MI_DISPLAY(mi), MI_VISUAL(mi), + gp->day->depth, ZPixmap, 0, 0, w, h, 32, 0); + if (!blended) abort(); + blended->data = (char *) malloc (h * blended->bytes_per_line); + if (!blended->data) abort(); + + end = blended->height * blended->bytes_per_line / 4; + day = (uint32_t *) gp->day->data; + night = (uint32_t *) gp->night->data; + dusk = (uint8_t *) gp->dusk->data; + out = (uint32_t *) blended->data; + + for (i = 0; i < end; i++) + { + uint32_t d = *day++; + uint32_t n = *night++; + uint32_t x = i % w; + uint32_t y = i / w; + double r = dusk[y * w + ((x + xoff) % w)] / 256.0; + double r2 = 1-r; +# define ADD(M) (((unsigned long) \ + ((((d >> M) & 0xFF) * r) + \ + (((n >> M) & 0xFF) * r2))) \ + << M) + /* #### Why is this ABGR instead of RGBA? */ + *out++ = (0xFF << 24) | ADD(16) | ADD(8) | ADD(0); +# undef ADD + } + } + + /* Convert blended Equirectangular to Dymaxion through the 'cvt' map. + */ + dymaxion = XCreateImage (MI_DISPLAY(mi), MI_VISUAL(mi), + gp->day->depth, ZPixmap, 0, 0, w, h, 32, 0); + dymaxion->data = (char *) calloc (h, dymaxion->bytes_per_line); + + day = (uint32_t *) blended->data; + out = (uint32_t *) dymaxion->data; + cvt = (uint32_t *) gp->cvt->data; + + for (y = 0; y < h*2; y++) + for (x = 0; x < w*2; x++) + { + unsigned long m = *cvt++; + unsigned long dx = (m >> 16) & 0xFFFF; + unsigned long dy = m & 0xFFFF; + unsigned long p = day[(y>>1) * w + (x>>1)]; + unsigned long p2 = out[dy * w + dx]; + if (p2 & 0xFF000000) + /* RGBA nonzero alpha: initialized. Average with existing, + otherwise the grid lines look terrible. */ + p = (((((p>>24) & 0xFF) + ((p2>>24) & 0xFF)) >> 1) << 24 | + ((((p>>16) & 0xFF) + ((p2>>16) & 0xFF)) >> 1) << 16 | + ((((p>> 8) & 0xFF) + ((p2>> 8) & 0xFF)) >> 1) << 8 | + ((((p>> 0) & 0xFF) + ((p2>> 0) & 0xFF)) >> 1) << 0); + out[dy * w + dx] = p; + } + + /* Fill in the triangles that are not a part of The World with the + color of the ocean to avoid texture-tearing on the folded edges. + */ + out = (uint32_t *) dymaxion->data; + end = dymaxion->height * dymaxion->bytes_per_line / 4; + { + double lat = -48.44, lon = -123.39; /* R'Lyeh */ + int x = (lon + 180) * blended->width / 360.0; + int y = (lat + 90) * blended->height / 180.0; + unsigned long ocean = XGetPixel (gp->day, x, y); + for (i = 0; i < end; i++) + { + uint32_t p = *out; + if (! (p & 0xFF000000)) /* AGBR */ + *out = ocean; + out++; + } + } + + if (blended != gp->day) + XDestroyImage (blended); + + gp->images[(int) gp->current_frame] = dymaxion; + + if (!gp->cache_p) /* Keep only one image around; recompute every time. */ + { + i = ((int) gp->current_frame) - 1; + if (i < 0) i = gp->nimages - 1; + if (gp->images[i]) + { + XDestroyImage (gp->images[i]); + gp->images[i] = 0; + } + } +} + + +static void +setup_texture (ModeInfo * mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + XImage *ground; + + glGenTextures (1, &gp->tex1); + glBindTexture (GL_TEXTURE_2D, gp->tex1); + + /* Must be after glBindTexture */ + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + load_images (mi); + + glGenTextures (1, &gp->tex2); + glBindTexture (GL_TEXTURE_2D, gp->tex2); + + /* Must be after glBindTexture */ + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + /* The underground image can go on flat, without the dymaxion transform. */ + ground = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + ground_png, sizeof(ground_png)); + clear_gl_error(); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + /* glPixelStorei(GL_UNPACK_ROW_LENGTH, ground->width); */ + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + ground->width, ground->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, ground->data); + check_gl_error ("ground texture"); + XDestroyImage (ground); +} + + +static void +init_stars (ModeInfo *mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + int i, j; + int width = MI_WIDTH(mi); + int height = MI_HEIGHT(mi); + int size = (width > height ? width : height); + int nstars = size * size / 80; + int max_size = 3; + GLfloat inc = 0.5; + int steps = max_size / inc; + GLfloat scale = 1; + + if (MI_WIDTH(mi) > 2560) { /* Retina displays */ + scale *= 2; + nstars /= 2; + } + + gp->starlist = glGenLists(1); + glNewList(gp->starlist, GL_COMPILE); + for (j = 1; j <= steps; j++) + { + glPointSize(inc * j * scale); + glBegin (GL_POINTS); + for (i = 0; i < nstars / steps; i++) + { + GLfloat d = 0.1; + GLfloat r = 0.15 + frand(0.3); + GLfloat g = r + frand(d) - d; + GLfloat b = r + frand(d) - d; + + GLfloat x = frand(1)-0.5; + GLfloat y = frand(1)-0.5; + GLfloat z = ((random() & 1) + ? frand(1)-0.5 + : (BELLRAND(1)-0.5)/12); /* milky way */ + d = sqrt (x*x + y*y + z*z); + x /= d; + y /= d; + z /= d; + glColor3f (r, g, b); + glVertex3f (x, y, z); + gp->starcount++; + } + glEnd (); + } + glEndList (); + + check_gl_error("stars initialization"); +} + + +ENTRYPOINT void +reshape_planet (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport(0, 0, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -h, h, 5.0, 200.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (h, h, h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + +static void +do_normal2 (ModeInfo *mi, Bool frontp, XYZ a, XYZ b, XYZ c) +{ + XYZ n = (frontp + ? calc_normal (a, b, c) + : calc_normal (b, a, c)); + glNormal3f (n.x, n.y, n.z); + +# if 0 + if (frontp && MI_IS_WIREFRAME(mi)) + { + glBegin (GL_LINES); + glVertex3f ((a.x + b.x + c.x) / 3, + (a.y + b.y + c.y) / 3, + (a.z + b.z + c.z) / 3); + glVertex3f ((a.x + b.x + c.x) / 3 + n.x, + (a.y + b.y + c.y) / 3 + n.y, + (a.z + b.z + c.z) / 3 + n.z); + glEnd(); + } +# endif +} + + +static void +triangle0 (ModeInfo *mi, Bool frontp, GLfloat stel_ratio, int facemask, + XYZ *corners_ret) +{ + /* Render a triangle as six sub-triangles. + Facemask bits 0-5 indicate which sub-triangle to draw. + + A + / \ + / | \ + / | \ + / 0 | 1 \ + E /_ | _\ F + / \_ | _/ \ + / 5 \D/ 2 \ + / / | \ \ + / / 4 | 3 \ \ + / / | \ \ + B ----------------------- C + G + */ + + Bool wire = MI_IS_WIREFRAME(mi); + GLfloat h = sqrt(3) / 2; + GLfloat h2 = sqrt(h*h - (h/2)*(h/2)) - 0.5; + XYZ A, B, C, D, E, F, G; + XYZ tA, tB, tC, tD, tE, tF, tG; + XYZ a, b, c; + XYZ ta, tb, tc; + A.x = 0; A.y = h; A.z = 0; + B.x = -0.5, B.y = 0; B.z = 0; + C.x = 0.5, C.y = 0; C.z = 0; + D.x = 0; D.y = h/3; D.z = 0; + E.x = -h2; E.y = h/2; E.z = 0; + F.x = h2; F.y = h/2; F.z = 0; + G.x = 0; G.y = 0; G.z = 0; + + /* When tweaking object XY to stellate, don't change texture coordinates. */ + tA = A; tB = B; tC = C; tD = D; tE = E; tF = F; tG = G; + + /* Eyeballed this to find the depth of stellation that seems to most + approximate a sphere. + */ + D.z = 0.193 * stel_ratio; + + /* We want to raise E, F and G as well but we can't just shift Z: + we need to keep them on the same vector from the center of the sphere, + which means also changing F and G's X and Y. + */ + E.z = F.z = G.z = 0.132 * stel_ratio; + { + double magic_x = 0.044; + double magic_y = 0.028; + /* G.x stays 0 */ + G.y -= sqrt (magic_x*magic_x + magic_y*magic_y) * stel_ratio; + E.x -= magic_x * stel_ratio; + E.y += magic_y * stel_ratio; + F.x += magic_x * stel_ratio; + F.y += magic_y * stel_ratio; + } + + + if (facemask & 1<<0) + { + a = E; b = D; c = A; + ta = tE; tb = tD; tc = tA; + do_normal2 (mi, frontp, a, b, c); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z); + glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z); + glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z); + glEnd(); + mi->polygon_count++; + } + if (facemask & 1<<1) + { + a = D; b = F; c = A; + ta = tD; tb = tF; tc = tA; + do_normal2 (mi, frontp, a, b, c); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z); + glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z); + glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z); + glEnd(); + mi->polygon_count++; + } + if (facemask & 1<<2) + { + a = D; b = C; c = F; + ta = tD; tb = tC; tc = tF; + do_normal2 (mi, frontp, a, b, c); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z); + glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z); + glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z); + glEnd(); + mi->polygon_count++; + } + if (facemask & 1<<3) + { + a = G; b = C; c = D; + ta = tG; tb = tC; tc = tD; + do_normal2 (mi, frontp, a, b, c); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z); + glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z); + glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z); + glEnd(); + mi->polygon_count++; + } + if (facemask & 1<<4) + { + a = B; b = G; c = D; + ta = tB; tb = tG; tc = tD; + do_normal2 (mi, frontp, a, b, c); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z); + glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z); + glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z); + glEnd(); + mi->polygon_count++; + } + if (facemask & 1<<5) + { + a = B; b = D; c = E; + ta = tB; tb = tD; tc = tE; + do_normal2 (mi, frontp, a, b, c); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z); + glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z); + glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z); + glEnd(); + mi->polygon_count++; + } + if (facemask & 1<<6) + { + a = E; b = D; c = A; + ta = tE; tb = tD; tc = tA; + do_normal2 (mi, frontp, a, b, c); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z); + glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z); + glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z); + glEnd(); + mi->polygon_count++; + } + + if (corners_ret) + { + corners_ret[0] = A; + corners_ret[1] = B; + corners_ret[2] = C; + corners_ret[3] = D; + corners_ret[4] = E; + corners_ret[5] = F; + corners_ret[6] = G; + } +} + + +/* The segments, numbered arbitrarily from the top left: + ________ _ ________ + \ /\ /\ \ |\ / + \ 0 / \ / \3> | \ 5 / + \ / 1 \ / 2 \| ..|4 \ /-6-.. + ___________\/______\/______\/______\/______\ + | /\ /\ /\ /\ /\ + |7 / \ 9 / \ 11 / \ 13 / \ 15 / \ + | / 8 \ / 10 \ / 12 \ / 14 \ / 16 \ + |/______\/______\/______\/______\/______\ + \ /\ / /\ /\ + \ 17 / \ 18 / / \ 20 / \ + \ / \ / / 19 \ / 21 \ + \/ \/ /______\/______\ + + Each triangle can be connected to at most two other triangles. + We start from the middle, #12, and work our way to the edges. + Its centroid is 0,0. + + (Note that dymaxionmap-coords.c uses a different numbering system.) + */ +static void +triangle (ModeInfo *mi, int which, Bool frontp, + GLfloat fold_ratio, GLfloat stel_ratio) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + const GLfloat fg[] = { 1, 1, 1, 1 }; + const GLfloat bg[] = { 0.3, 0.3, 0.3, 1 }; + int a = -1, b = -1; + GLfloat max = acos (sqrt(5)/3); + GLfloat rot = -max * fold_ratio / (M_PI/180); + Bool wire = MI_IS_WIREFRAME(mi); + XYZ corners[7]; + + glColor3fv (fg); + if (!wire) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, fg); + + switch (which) { + case 3: /* One third of the face. */ + triangle0 (mi, frontp, stel_ratio, 1<<3 | 1<<4, corners); + break; + case 4: /* Two thirds of the face: convex. */ + triangle0 (mi, frontp, stel_ratio, 1<<1 | 1<<2 | 1<<3 | 1<<4, corners); + break; + case 6: /* One half of the face. */ + triangle0 (mi, frontp, stel_ratio, 1<<1 | 1<<2 | 1<<3, corners); + break; + case 7: /* One half of the face. */ + triangle0 (mi, frontp, stel_ratio, 1<<2 | 1<<3 | 1<<4, corners); + break; + default: /* Full face. */ + triangle0 (mi, frontp, stel_ratio, 0x3F, corners); + break; + } + + if (wire) + { + char tag[20]; + glColor3fv (bg); + sprintf (tag, "%d", which); + glPushMatrix(); + glTranslatef (-0.1, 0.2, 0); + glScalef (0.005, 0.005, 0.005); + print_texture_string (gp->font_data, tag); + glPopMatrix(); + mi->polygon_count++; + } + + + /* The connection hierarchy of the faces starting at the middle, #12. */ + switch (which) { + case 0: break; + case 1: a = 0; b = -1; break; + case 2: a = -1; b = 3; break; + case 3: break; + case 4: a = -1; b = 5; break; + case 5: a = -1; b = 6; break; + case 7: break; + case 6: break; + case 8: a = 17; b = 7; break; + case 9: a = 8; b = -1; break; + case 10: a = 18; b = 9; break; + case 11: a = 10; b = 1; break; + case 12: a = 11; b = 13; break; + case 13: a = 2; b = 14; break; + case 14: a = 15; b = 20; break; + case 15: a = 4; b = 16; break; + case 16: break; + case 17: break; + case 18: break; + case 19: break; + case 20: a = 21; b = 19; break; + case 21: break; + default: abort(); break; + } + + if (a != -1) + { + glPushMatrix(); + glTranslatef (-0.5, 0, 0); /* Move model matrix to upper left */ + glRotatef (60, 0, 0, 1); + glTranslatef ( 0.5, 0, 0); + + glMatrixMode(GL_TEXTURE); + /* glPushMatrix(); */ + glTranslatef (-0.5, 0, 0); /* Move texture matrix the same way */ + glRotatef (60, 0, 0, 1); + glTranslatef ( 0.5, 0, 0); + + glMatrixMode(GL_MODELVIEW); + + glRotatef (rot, 1, 0, 0); + triangle (mi, a, frontp, fold_ratio, stel_ratio); + + /* This should just be a PopMatrix on the TEXTURE stack, but + fucking iOS has GL_MAX_TEXTURE_STACK_DEPTH == 4! WTF! + So we have to undo our rotations and translations manually. + */ + glMatrixMode(GL_TEXTURE); + /* glPopMatrix(); */ + glTranslatef (-0.5, 0, 0); + glRotatef (-60, 0, 0, 1); + glTranslatef (0.5, 0, 0); + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + } + + if (b != -1) + { + glPushMatrix(); + glTranslatef (0.5, 0, 0); /* Move model matrix to upper right */ + glRotatef (-60, 0, 0, 1); + glTranslatef (-0.5, 0, 0); + + glMatrixMode(GL_TEXTURE); + /* glPushMatrix(); */ + glTranslatef (0.5, 0, 0); /* Move texture matrix the same way */ + glRotatef (-60, 0, 0, 1); + glTranslatef (-0.5, 0, 0); + + glMatrixMode(GL_MODELVIEW); + + glRotatef (rot, 1, 0, 0); + triangle (mi, b, frontp, fold_ratio, stel_ratio); + + /* See above. Grr. */ + glMatrixMode(GL_TEXTURE); + /* glPopMatrix(); */ + glTranslatef (0.5, 0, 0); + glRotatef (60, 0, 0, 1); + glTranslatef (-0.5, 0, 0); + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + } + + + /* Draw a border around the edge of the world. + */ + if (!wire && frontp && stel_ratio == 0 && fold_ratio < 0.95) + { + int edges = 0; + GLfloat c[] = { 0, 0.2, 0.5, 1 }; + c[3] = 1-fold_ratio; + + switch (which) + { + case 0: edges = 1<<0 | 1<<2; break; + case 1: edges = 1<<2; break; + case 2: edges = 1<<0; break; + case 3: edges = 1<<3 | 1<<4; break; + case 4: edges = 1<<3 | 1<<5; break; + case 5: edges = 1<<0 | 1<<6; break; + case 6: edges = 1<<2 | 1<<7; break; + case 16: edges = 1<<0 | 1<<2; break; + case 21: edges = 1<<0 | 1<<2; break; + case 19: edges = 1<<0 | 1<<2; break; + case 12: edges = 1<<1; break; + case 18: edges = 1<<0 | 1<<2; break; + case 17: edges = 1<<0 | 1<<2; break; + case 7: edges = 1<<8 | 1<<9; break; + case 9: edges = 1<<2; break; + default: break; + } + + glDisable (GL_TEXTURE_2D); + glDisable (GL_LIGHTING); + glLineWidth (2); + glColor4fv (c); + glBegin (GL_LINES); + if (edges & 1<<0) + { + glVertex3f (corners[0].x, corners[0].y, corners[0].z); + glVertex3f (corners[1].x, corners[1].y, corners[1].z); + } + if (edges & 1<<1) + { + glVertex3f (corners[1].x, corners[1].y, corners[1].z); + glVertex3f (corners[2].x, corners[2].y, corners[2].z); + } + if (edges & 1<<2) + { + glVertex3f (corners[2].x, corners[2].y, corners[2].z); + glVertex3f (corners[0].x, corners[0].y, corners[0].z); + } + if (edges & 1<<3) + { + glVertex3f (corners[1].x, corners[1].y, corners[1].z); + glVertex3f (corners[3].x, corners[3].y, corners[3].z); + } + if (edges & 1<<4) + { + glVertex3f (corners[3].x, corners[3].y, corners[3].z); + glVertex3f (corners[2].x, corners[2].y, corners[2].z); + } + if (edges & 1<<5) + { + glVertex3f (corners[3].x, corners[3].y, corners[3].z); + glVertex3f (corners[0].x, corners[0].y, corners[0].z); + } + if (edges & 1<<6) + { + glVertex3f (corners[0].x, corners[0].y, corners[0].z); + glVertex3f (corners[5].x, corners[5].y, corners[5].z); + } + if (edges & 1<<7) + { + glVertex3f (corners[0].x, corners[0].y, corners[0].z); + glVertex3f (corners[6].x, corners[6].y, corners[6].z); + } + if (edges & 1<<8) + { + glVertex3f (corners[1].x, corners[1].y, corners[1].z); + glVertex3f (corners[5].x, corners[5].y, corners[5].z); + } + if (edges & 1<<9) + { + glVertex3f (corners[5].x, corners[5].y, corners[5].z); + glVertex3f (corners[2].x, corners[2].y, corners[2].z); + } + glEnd(); + glEnable (GL_TEXTURE_2D); + glEnable (GL_LIGHTING); + } +} + + +static void +draw_triangles (ModeInfo *mi, GLfloat fold_ratio, GLfloat stel_ratio) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + GLfloat h = sqrt(3) / 2; + GLfloat c = h / 3; + + glTranslatef (0, -h/3, 0); /* Center on face 12 */ + + /* When closed, center on midpoint of icosahedron. Eyeballed this. */ + glTranslatef (0, 0, fold_ratio * 0.754); + + glFrontFace (GL_CCW); + + /* Adjust the texture matrix so that it has the same coordinate space + as the model. */ + + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + { + GLfloat texw = 5.5; + GLfloat texh = 3 * h; + GLfloat midx = 2.5; + GLfloat midy = 3 * c; + glScalef (1/texw, -1/texh, 1); + glTranslatef (midx, midy, 0); + } + glMatrixMode(GL_MODELVIEW); + + + + /* Front faces */ + + if (wire) + glDisable (GL_TEXTURE_2D); + else if (do_texture) + { + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, gp->tex1); + } + else + glDisable (GL_TEXTURE_2D); + + triangle (mi, 12, True, fold_ratio, stel_ratio); + + /* Back faces */ + + if (wire) + glDisable (GL_TEXTURE_2D); + else if (do_texture) + { + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, gp->tex2); + } + else + glDisable (GL_TEXTURE_2D); + + glFrontFace (GL_CW); + + triangle (mi, 12, False, fold_ratio, 0); + + glMatrixMode(GL_TEXTURE); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); +} + + +static void +align_axis (ModeInfo *mi, int undo) +{ + /* Rotate so that an axis is lined up with the north and south poles + on the map, which are not in the center of their faces, or any + other easily computable spot. */ + + GLfloat r1 = 20.5; + GLfloat r2 = 28.5; + + if (undo) + { + glRotatef (-r2, 0, 1, 0); + glRotatef ( r2, 1, 0, 0); + glRotatef (-r1, 1, 0, 0); + } + else + { + glRotatef (r1, 1, 0, 0); + glRotatef (-r2, 1, 0, 0); + glRotatef ( r2, 0, 1, 0); + } +} + + +static void +draw_axis (ModeInfo *mi) +{ + GLfloat s; + glDisable (GL_TEXTURE_2D); + glDisable (GL_LIGHTING); + glPushMatrix(); + + align_axis (mi, 0); + glTranslatef (0.34, 0.39, -0.61); + + s = 0.96; + glScalef (s, s, s); /* tighten up the enclosing sphere */ + + glLineWidth (1); + glColor3f (0.5, 0.5, 0); + + glRotatef (90, 1, 0, 0); /* unit_sphere is off by 90 */ + glRotatef (9.5, 0, 1, 0); /* line up the time zones */ + glFrontFace (GL_CCW); + unit_sphere (12, 24, True); + glBegin(GL_LINES); + glVertex3f(0, -2, 0); + glVertex3f(0, 2, 0); + glEnd(); + + glPopMatrix(); +} + + + + +ENTRYPOINT Bool +planet_handle_event (ModeInfo *mi, XEvent *event) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, gp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &gp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t' || c == '\r' || c == '\n') + { + int i; + double cf = gp->current_frame; + + /* Switch between the satellite and flat map, preserving position. */ + if (gp->day) XDestroyImage (gp->day); + if (gp->night) XDestroyImage (gp->night); + if (gp->cvt) XDestroyImage (gp->cvt); + gp->day = 0; + gp->night = 0; + gp->cvt = 0; + + for (i = 0; i < gp->nimages; i++) + if (gp->images[i]) XDestroyImage (gp->images[i]); + free (gp->images); + gp->images = 0; + + which_image = strdup (!strcmp (which_image, "BUILTIN_DAY") + ? "BUILTIN_FLAT" : "BUILTIN_DAY"); + which_image2 = strdup (!strcmp (which_image2, "BUILTIN_NIGHT") + ? "BUILTIN_FLAT" : "BUILTIN_NIGHT"); + load_images (mi); + gp->current_frame = cf; +# if 0 + switch (gp->state) { + case FLAT: case ICO: case STEL: case AXIS: case ICO2: + gp->ratio = 1; + break; + default: + break; + } +# endif + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_planet (ModeInfo * mi) +{ + planetstruct *gp; + int screen = MI_SCREEN(mi); + Bool wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, planets); + gp = &planets[screen]; + + if ((gp->glx_context = init_GL(mi)) != NULL) { + reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + gp->state = STARTUP; + gp->ratio = 0; + gp->font_data = load_texture_font (mi->dpy, "labelFont"); + gp->delay = MI_DELAY(mi); + + { + double spin_speed = 0.1; + double wander_speed = 0.002; + gp->rot = make_rotator (do_roll ? spin_speed : 0, + do_roll ? spin_speed : 0, + 0, 1, + do_wander ? wander_speed : 0, + False); + gp->rot2 = make_rotator (0, 0, 0, 0, wander_speed, False); + gp->trackball = gltrackball_init (True); + } + + if (wire) + do_texture = False; + + if (do_texture) + setup_texture (mi); + + if (do_stars) + init_stars (mi); + + glEnable (GL_DEPTH_TEST); + glEnable (GL_NORMALIZE); + glEnable (GL_CULL_FACE); + + if (!wire) + { + GLfloat pos[4] = {1, 1, 1, 0}; + GLfloat amb[4] = {0, 0, 0, 1}; + GLfloat dif[4] = {1, 1, 1, 1}; + GLfloat spc[4] = {0, 1, 1, 1}; + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } +} + + +static GLfloat +ease_fn (GLfloat r) +{ + return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */ +} + + +static GLfloat +ease_ratio (GLfloat r) +{ + GLfloat ease = 0.35; + if (r <= 0) return 0; + else if (r >= 1) return 1; + else if (r <= ease) return ease * ease_fn (r / ease); + else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease); + else return r; +} + + +ENTRYPOINT void +draw_planet (ModeInfo * mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + long delay = gp->delay; + double x, y, z; + + if (!gp->glx_context) + return; + + glDrawBuffer(GL_BACK); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glXMakeCurrent (dpy, window, *(gp->glx_context)); + + mi->polygon_count = 0; + + if (! gp->button_down_p) + switch (gp->state) { + case STARTUP: gp->ratio += speed * 0.01; break; + case FLAT: gp->ratio += speed * 0.005 * + /* Stay flat longer if animating day and night. */ + (gp->nimages <= 1 ? 1 : 0.3); + break; + case FOLD: gp->ratio += speed * 0.01; break; + case ICO: gp->ratio += speed * 0.01; break; + case STEL_IN: gp->ratio += speed * 0.05; break; + case STEL: gp->ratio += speed * 0.01; break; + case STEL_OUT: gp->ratio += speed * 0.07; break; + case ICO2: gp->ratio += speed * 0.07; break; + case AXIS: gp->ratio += speed * 0.02; break; + case SPIN: gp->ratio += speed * 0.005; break; + case UNFOLD: gp->ratio += speed * 0.01; break; + default: abort(); + } + + if (gp->ratio > 1.0) + { + gp->ratio = 0; + switch (gp->state) { + case STARTUP: gp->state = FLAT; break; + case FLAT: gp->state = FOLD; break; + case FOLD: gp->state = ICO; break; + case ICO: gp->state = STEL_IN; break; + case STEL_IN: gp->state = STEL; break; + case STEL: + { + int i = (random() << 9) % 7; + gp->state = (i < 3 ? STEL_OUT : + i < 6 ? SPIN : AXIS); + } + break; + case AXIS: gp->state = STEL_OUT; break; + case SPIN: gp->state = STEL_OUT; break; + case STEL_OUT: gp->state = ICO2; break; + case ICO2: gp->state = UNFOLD; break; + case UNFOLD: gp->state = FLAT; break; + default: abort(); + } + } + + glEnable(GL_LINE_SMOOTH); + glEnable(GL_POINT_SMOOTH); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + + glPushMatrix(); + + gltrackball_rotate (gp->trackball); + glRotatef (current_device_rotation(), 0, 0, 1); + +# ifdef HAVE_MOBILE /* Fill more of the screen. */ + { + int size = MI_WIDTH(mi) < MI_HEIGHT(mi) + ? MI_WIDTH(mi) : MI_HEIGHT(mi); + GLfloat s = (size > 768 ? 1.4 : /* iPad */ + 2); /* iPhone */ + glScalef (s, s, s); + if (MI_WIDTH(mi) < MI_HEIGHT(mi)) + glRotatef (90, 0, 0, 1); + } +# endif + + if (gp->state != STARTUP) + { + get_position (gp->rot, &x, &y, &z, !gp->button_down_p); + x = (x - 0.5) * 3; + y = (y - 0.5) * 3; + z = 0; + glTranslatef(x, y, z); + } + + if (do_roll && gp->state != STARTUP) + { + double max = 65; + get_position (gp->rot2, &x, &y, 0, !gp->button_down_p); + glRotatef (max/2 - x*max, 1, 0, 0); + glRotatef (max/2 - y*max, 0, 1, 0); + } + + if (do_stars) + { + glDisable(GL_TEXTURE_2D); + glDisable(GL_LIGHTING); + glPushMatrix(); + glScalef (60, 60, 60); + glRotatef (90, 1, 0, 0); + glRotatef (35, 1, 0, 0); + glCallList (gp->starlist); + mi->polygon_count += gp->starcount; + glPopMatrix(); + glClear(GL_DEPTH_BUFFER_BIT); + } + + if (! wire) + { + glEnable (GL_LIGHTING); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + if (do_texture) + glEnable(GL_TEXTURE_2D); + + if (do_texture /* && !gp->button_down_p */) + { + int i; + int prev = gp->current_frame; + + /* By default, advance terminator by about an hour every 5 seconds. */ + gp->current_frame += 0.1 * speed * (gp->nimages / 360.0); + while (gp->current_frame >= gp->nimages) + gp->current_frame -= gp->nimages; + i = gp->current_frame; + + /* Load the current image into the texture. + */ + if (i != prev || !gp->images[i]) + { + double start = double_time(); + cache_current_frame (mi); + + glBindTexture (GL_TEXTURE_2D, gp->tex1); + + /* Must be after glBindTexture */ + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + gp->images[i]->width, + gp->images[i]->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, + gp->images[i]->data); + check_gl_error ("texture"); + + /* If caching the image took a bunch of time, deduct that from + our per-frame delay to keep the timing a little smoother. */ + delay -= 1000000 * (double_time() - start); + if (delay < 0) delay = 0; + } + } + + glTranslatef (-0.5, -0.4, 0); + glScalef (2.6, 2.6, 2.6); + + { + GLfloat fold_ratio = 0; + GLfloat stel_ratio = 0; + switch (gp->state) { + case FOLD: fold_ratio = gp->ratio; break; + case UNFOLD: fold_ratio = 1 - gp->ratio; break; + case ICO: case ICO2: fold_ratio = 1; break; + case STEL: case AXIS: case SPIN: fold_ratio = 1; stel_ratio = 1; break; + case STEL_IN: fold_ratio = 1; stel_ratio = gp->ratio; break; + case STEL_OUT: fold_ratio = 1; stel_ratio = 1 - gp->ratio; break; + case STARTUP: /* Tilt in from flat */ + glRotatef (-90 * ease_ratio (1 - gp->ratio), 1, 0, 0); + break; + + default: break; + } + +# ifdef HAVE_MOBILE /* Enlarge the icosahedron a bit to make it more visible */ + { + GLfloat s = 1 + 1.3 * ease_ratio (fold_ratio); + glScalef (s, s, s); + } +# endif + + if (gp->state == SPIN) + { + align_axis (mi, 0); + glRotatef (ease_ratio (gp->ratio) * 360 * 3, 0, 0, 1); + align_axis (mi, 1); + } + + draw_triangles (mi, ease_ratio (fold_ratio), ease_ratio (stel_ratio)); + + if (gp->state == AXIS) + draw_axis(mi); + } + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(dpy, window); + + MI_DELAY(mi) = delay; +} + + +ENTRYPOINT void +free_planet (ModeInfo * mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + int i; + + if (gp->day) XDestroyImage (gp->day); + if (gp->night) XDestroyImage (gp->night); + if (gp->dusk) XDestroyImage (gp->dusk); + if (gp->cvt) XDestroyImage (gp->cvt); + + for (i = 0; i < gp->nimages; i++) + if (gp->images[i]) XDestroyImage (gp->images[i]); + free (gp->images); + + if (gp->glx_context) { + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context)); + + if (glIsList(gp->starlist)) + glDeleteLists(gp->starlist, 1); + } +} + + +XSCREENSAVER_MODULE_2 ("DymaxionMap", dymaxionmap, planet) + +#endif diff --git a/hacks/glx/dymaxionmap.man b/hacks/glx/dymaxionmap.man new file mode 100644 index 0000000..9f3e794 --- /dev/null +++ b/hacks/glx/dymaxionmap.man @@ -0,0 +1,117 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +dymaxionmap - An animation of Buckminster Fuller's unwrapped icosahedral globe. +.SH SYNOPSIS +.B dymaxionmap +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fIratio\fP] +[\-no-wander] +[\-no-roll] +[\-no-stars] +[\-no-grid] +[\-flat] +[\-satellite] +[\-image \fIfile\fP] +[\-image2 \fIfile\fP] +[\-frames \fInumber\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Buckminster Fuller's map of the Earth projected onto the surface of an +unfolded icosahedron. It depicts the Earth's continents as one island, or +nearly contiguous land masses. + +This screen saver animates the progression of the dusk terminator across +the flattened globe. It includes both satellite and flat-colored map +imagery, and can load and convert other Equirectangular-projected maps. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-speed \fIratio\fP +Speed of the animation. 0.5 means half as fast, 2 means twice as fast. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. Default yes. +.TP 8 +.B \-roll | \-no-roll +Whether the object should roll randomly. Default yes. +.TP 8 +.B \-stars | \-no-stars +Whether to display a star field. Default yes. +.TP 8 +.B \-grid | \-no-grid +Whether to overlay a latitude/longitude grid over the map. Default yes. +.TP 8 +.B \-flat +Display a flat-colored map of the Earth. This is the default. +.TP 8 +.B \-satellite +Display a day-time satellite map of the Earth. +.TP 8 +.B \-image \fIfile\fP +An image to use for the day-time map. +.TP 8 +.B \-image2 \fIfile\fP +An image to use for the night-time map. +The two images can be the same: the night-time one will be darkened. +.TP 8 +.B \-frames \fInumber\fP +The number of frames in the day/night animation. Default 720. +Larger numbers are smoother, but use more memory. +The day/night animation happens if \fIimage2\fP is set, or +if \fIframes\fP is greater than 1. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR glplanet (1) +.SH COPYRIGHT +Copyright \(co 2016-2018 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. + +"Dymaxion Map" and "The Fuller Projection Map" are trademarks of +The Buckminster Fuller Institute. + +The original Dymaxion Map image is copyright \(co 1982 by +The Buckminster Fuller Institute. (This program does not use their +imagery, only similar trigonometry.) + +The Dymaxion Map was covered by now-expired US Patent 2,393,676 +(Richard Buckminster Fuller, 1946). +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/e_textures.h b/hacks/glx/e_textures.h new file mode 100644 index 0000000..7f9457e --- /dev/null +++ b/hacks/glx/e_textures.h @@ -0,0 +1,1478 @@ +static unsigned char WoodTextureWidth = 199; +static unsigned char WoodTextureHeight = 37; +static unsigned char WoodTextureData[] = +{ + 84, 30, 12, 84, 26, 12, 108, 42, 28, 100, 38, 28, 108, 42, 28, + 108, 46, 28, 100, 38, 28, 108, 46, 28, 108, 42, 28, 108, 42, 20, + 108, 42, 28, 108, 38, 20, 108, 42, 20, 108, 42, 28, 116, 42, 28, + 108, 42, 20, 108, 46, 28, 100, 34, 12, 108, 42, 20, 108, 42, 20, + 108, 42, 20, 108, 38, 20, 100, 38, 20, 100, 38, 20, 108, 42, 20, + 108, 42, 20, 108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20, + 108, 42, 20, 108, 42, 20, 108, 42, 28, 108, 42, 20, 108, 42, 20, + 100, 38, 20, 100, 38, 20, 100, 38, 20, 108, 38, 20, 116, 50, 28, + 108, 42, 28, 108, 42, 20, 100, 38, 20, 108, 42, 20, 108, 42, 20, + 108, 46, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 100, 38, 20, + 108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20, 100, 38, 20, + 108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 42, 20, 108, 42, 20, + 108, 42, 28, 108, 42, 20, 100, 38, 20, 108, 42, 20, 100, 38, 20, + 100, 34, 12, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 42, 20, + 108, 42, 20, 108, 42, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20, + 100, 34, 12, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 42, 20, + 100, 38, 20, 100, 34, 12, 100, 34, 12, 100, 38, 20, 108, 38, 20, + 100, 38, 20, 108, 38, 20, 108, 42, 20, 100, 38, 20, 108, 42, 20, + 108, 42, 28, 108, 46, 20, 108, 38, 20, 108, 42, 20, 108, 46, 28, + 108, 46, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 100, 38, 20, + 108, 42, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 38, 20, + 108, 42, 20, 108, 46, 28, 116, 50, 28, 116, 54, 36, 116, 54, 36, + 116, 54, 28, 108, 46, 28, 108, 42, 20, 108, 42, 28, 108, 42, 20, + 108, 42, 20, 108, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28, + 116, 46, 28, 108, 42, 28, 116, 50, 36, 116, 50, 36, 100, 38, 20, + 108, 42, 28, 108, 38, 20, 100, 38, 20, 108, 38, 20, 108, 42, 28, + 108, 46, 28, 116, 46, 28, 108, 42, 28, 108, 42, 28, 108, 42, 20, + 108, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28, + 108, 42, 28, 108, 42, 20, 100, 38, 20, 116, 50, 28, 108, 46, 28, + 108, 42, 20, 108, 42, 20, 108, 46, 28, 116, 46, 28, 108, 46, 28, + 108, 46, 28, 108, 46, 20, 108, 46, 28, 116, 46, 28, 108, 46, 28, + 116, 50, 28, 108, 46, 28, 108, 46, 28, 108, 42, 20, 116, 46, 28, + 108, 46, 28, 108, 42, 20, 108, 42, 28, 108, 46, 28, 116, 50, 28, + 116, 50, 28, 116, 50, 36, 124, 54, 36, 116, 54, 36, 116, 54, 28, + 116, 50, 28, 116, 50, 28, 108, 46, 28, 116, 46, 28, 108, 46, 28, + 116, 50, 28, 116, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28, + 116, 50, 28, 108, 46, 28, 108, 46, 20, 124, 50, 36, 116, 54, 28, + 124, 54, 28, 116, 54, 28, 116, 54, 28, 116, 54, 28, 124, 54, 36, + 124, 58, 36, 124, 50, 36, 116, 46, 28, 116, 46, 28, 116, 42, 28, + 116, 50, 36, 124, 66, 44, 108, 58, 36, 84, 30, 12, 100, 42, 20, + 116, 54, 36, 140, 82, 68, 148, 86, 68, 148, 86, 68, 156, 90, 76, + 148, 86, 68, 156, 86, 76, 156, 86, 68, 148, 86, 68, 156, 86, 68, + 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 90, 68, 156, 86, 68, + 156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 102, 84, 164, 102, 84, + 164, 98, 76, 156, 94, 68, 164, 94, 76, 156, 94, 76, 164, 98, 84, + 164, 98, 76, 164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76, + 164, 102, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84, 164, 98, 76, + 164, 94, 68, 164, 94, 68, 164, 98, 76, 172, 106, 84, 164, 98, 76, + 164, 98, 76, 164, 94, 68, 164, 94, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 94, 68, 164, 98, 76, 164, 98, 76, 164, 102, 76, + 164, 94, 76, 156, 94, 68, 172, 102, 84, 172, 106, 84, 172, 102, 84, + 164, 98, 76, 164, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 102, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76, + 164, 94, 76, 156, 94, 68, 164, 98, 76, 164, 102, 76, 164, 98, 76, + 164, 98, 76, 164, 94, 76, 156, 94, 68, 164, 94, 76, 164, 102, 76, + 172, 106, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 76, 172, 102, 84, + 172, 106, 84, 172, 110, 84, 180, 110, 92, 172, 110, 84, 172, 110, 84, + 180, 114, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92, + 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 114, 92, + 188, 118, 100, 188, 118, 100, 180, 118, 100, 188, 122, 108, 188, 126, 108, + 188, 118, 100, 196, 130, 108, 204, 134, 116, 188, 126, 108, 196, 122, 108, + 180, 118, 100, 180, 110, 92, 180, 114, 100, 180, 118, 100, 188, 118, 100, + 188, 122, 108, 188, 118, 100, 188, 118, 100, 180, 118, 100, 188, 118, 100, + 180, 118, 100, 180, 118, 100, 180, 118, 100, 180, 114, 92, 180, 114, 92, + 172, 110, 92, 172, 106, 84, 180, 114, 92, 172, 106, 92, 172, 102, 84, + 172, 106, 84, 172, 110, 92, 180, 110, 84, 172, 110, 92, 172, 106, 84, + 172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, + 164, 102, 84, 164, 102, 76, 172, 106, 84, 172, 110, 92, 180, 110, 92, + 172, 110, 84, 172, 114, 92, 180, 114, 92, 180, 110, 92, 172, 110, 92, + 172, 106, 92, 172, 106, 84, 172, 106, 84, 164, 102, 84, 180, 114, 100, + 180, 114, 92, 180, 118, 100, 180, 118, 100, 180, 114, 92, 172, 110, 92, + 172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, + 172, 110, 92, 172, 110, 84, 172, 110, 92, 180, 114, 92, 180, 118, 100, + 196, 126, 100, 196, 122, 108, 196, 126, 108, 196, 130, 116, 196, 134, 116, + 204, 142, 124, 164, 106, 84, 100, 42, 20, 84, 26, 4, 132, 78, 68, + 188, 122, 108, 188, 122, 108, 188, 126, 116, 196, 134, 116, 188, 122, 108, + 188, 126, 108, 188, 126, 108, 188, 122, 108, 196, 126, 108, 196, 130, 108, + 188, 126, 108, 188, 122, 100, 196, 126, 108, 196, 126, 108, 188, 126, 108, + 196, 130, 108, 196, 130, 108, 196, 134, 116, 196, 130, 108, 196, 130, 108, + 188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 130, 108, 188, 126, 108, + 188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 130, 108, 196, 130, 108, + 196, 134, 116, 204, 142, 116, 204, 134, 116, 196, 130, 108, 196, 130, 108, + 188, 126, 108, 196, 126, 100, 196, 134, 108, 196, 130, 108, 188, 126, 100, + 188, 122, 100, 188, 126, 108, 196, 126, 100, 188, 126, 108, 196, 126, 100, + 188, 126, 100, 196, 130, 108, 204, 134, 108, 196, 134, 116, 196, 134, 108, + 196, 130, 108, 196, 126, 108, 196, 130, 108, 196, 130, 108, 196, 130, 108, + 188, 126, 108, 196, 126, 108, 196, 134, 108, 196, 130, 108, 196, 130, 108, + 188, 122, 100, 196, 130, 108, 196, 130, 108, 196, 134, 108, 196, 130, 108, + 188, 126, 100, 196, 130, 108, 196, 134, 108, 204, 134, 116, 204, 138, 116, + 204, 138, 116, 204, 134, 116, 196, 130, 108, 196, 130, 108, 196, 134, 108, + 204, 134, 116, 196, 134, 116, 196, 134, 108, 196, 130, 108, 196, 130, 108, + 204, 134, 116, 204, 138, 116, 204, 138, 116, 196, 130, 108, 196, 130, 108, + 188, 122, 100, 180, 118, 92, 188, 118, 100, 196, 130, 108, 196, 130, 108, + 188, 126, 100, 188, 122, 100, 188, 122, 100, 204, 134, 108, 196, 134, 116, + 204, 134, 116, 196, 134, 108, 196, 130, 108, 204, 134, 108, 204, 138, 116, + 204, 138, 116, 212, 142, 124, 204, 142, 116, 204, 134, 116, 204, 138, 116, + 204, 138, 116, 204, 138, 116, 204, 134, 108, 188, 126, 108, 196, 130, 108, + 196, 126, 100, 188, 122, 100, 196, 130, 108, 204, 138, 116, 212, 146, 124, + 204, 142, 116, 204, 138, 116, 212, 146, 124, 212, 142, 124, 204, 138, 124, + 204, 138, 124, 204, 138, 124, 204, 138, 116, 212, 142, 124, 204, 138, 124, + 196, 130, 116, 204, 134, 116, 204, 138, 116, 204, 138, 124, 204, 138, 116, + 204, 138, 124, 204, 134, 116, 204, 138, 124, 212, 142, 124, 204, 138, 116, + 196, 134, 116, 196, 130, 108, 196, 134, 116, 204, 138, 116, 204, 142, 124, + 212, 142, 124, 204, 138, 116, 204, 138, 116, 204, 138, 116, 204, 138, 116, + 204, 138, 124, 204, 142, 124, 204, 142, 116, 204, 138, 124, 196, 134, 108, + 196, 134, 116, 196, 134, 116, 196, 130, 116, 196, 130, 108, 188, 126, 108, + 196, 126, 108, 188, 130, 108, 188, 126, 108, 188, 122, 100, 180, 118, 100, + 188, 118, 100, 188, 126, 108, 196, 130, 108, 196, 126, 108, 188, 126, 108, + 188, 122, 100, 188, 122, 108, 188, 126, 108, 196, 126, 108, 196, 130, 108, + 188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 134, 108, 196, 134, 116, + 196, 134, 108, 196, 130, 108, 196, 126, 108, 188, 122, 108, 188, 122, 100, + 188, 122, 100, 196, 130, 108, 196, 130, 100, 196, 130, 108, 196, 130, 100, + 188, 130, 108, 196, 130, 108, 196, 134, 108, 204, 138, 116, 204, 130, 108, + 204, 134, 116, 204, 134, 116, 204, 134, 116, 204, 138, 124, 204, 146, 124, + 156, 102, 84, 84, 26, 4, 84, 26, 4, 116, 58, 36, 164, 106, 92, + 164, 102, 84, 164, 106, 92, 172, 110, 92, 156, 98, 84, 172, 102, 84, + 172, 102, 84, 180, 110, 92, 180, 118, 100, 180, 118, 100, 180, 110, 92, + 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 106, 92, + 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 92, 172, 110, 92, + 172, 106, 84, 172, 106, 84, 164, 102, 84, 164, 102, 84, 172, 102, 76, + 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84, + 180, 110, 92, 172, 110, 84, 180, 110, 92, 172, 110, 84, 172, 106, 84, + 172, 110, 84, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 102, 84, + 172, 102, 76, 172, 102, 84, 172, 102, 84, 164, 102, 76, 164, 94, 76, + 172, 102, 84, 172, 110, 92, 172, 110, 84, 172, 102, 84, 164, 98, 76, + 172, 102, 76, 172, 106, 84, 172, 110, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 180, 114, 92, 180, 114, 92, 172, 110, 84, 172, 106, 84, + 172, 102, 76, 172, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 84, + 172, 106, 84, 180, 110, 92, 172, 110, 84, 180, 118, 92, 180, 114, 92, + 180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 114, 92, 180, 118, 92, + 188, 122, 100, 188, 118, 100, 180, 114, 92, 180, 118, 92, 180, 114, 92, + 180, 118, 92, 188, 118, 100, 180, 118, 92, 180, 114, 92, 180, 118, 92, + 180, 110, 84, 180, 110, 92, 180, 118, 92, 188, 122, 100, 188, 114, 100, + 180, 114, 92, 180, 114, 92, 196, 126, 108, 188, 126, 100, 188, 122, 100, + 188, 118, 100, 180, 118, 100, 180, 114, 92, 188, 118, 100, 188, 122, 100, + 180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 114, 92, 188, 122, 100, + 188, 126, 100, 188, 118, 100, 180, 114, 92, 172, 110, 84, 172, 110, 92, + 180, 114, 92, 180, 114, 92, 180, 118, 92, 188, 118, 100, 188, 122, 100, + 188, 122, 100, 180, 106, 92, 172, 110, 92, 172, 102, 84, 172, 102, 84, + 164, 94, 76, 164, 94, 76, 164, 98, 76, 164, 102, 84, 172, 102, 84, + 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 92, + 172, 106, 84, 172, 106, 92, 172, 110, 84, 164, 102, 84, 164, 98, 76, + 164, 94, 76, 164, 98, 76, 172, 110, 92, 180, 114, 92, 180, 118, 100, + 180, 118, 100, 188, 122, 100, 180, 122, 108, 188, 122, 100, 188, 122, 100, + 188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 188, 126, 108, + 188, 122, 100, 188, 122, 100, 180, 118, 100, 180, 114, 92, 180, 114, 92, + 180, 118, 100, 180, 110, 92, 172, 110, 92, 172, 106, 84, 180, 110, 92, + 180, 118, 92, 180, 118, 100, 180, 114, 92, 180, 110, 92, 172, 110, 84, + 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92, + 180, 114, 92, 180, 118, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, + 172, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84, + 180, 110, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92, 180, 118, 92, + 180, 118, 92, 188, 118, 100, 188, 122, 100, 180, 114, 100, 180, 110, 92, + 188, 114, 100, 180, 110, 92, 172, 110, 92, 180, 126, 108, 148, 98, 76, + 84, 26, 4, 84, 26, 12, 108, 50, 36, 164, 102, 84, 164, 98, 84, + 156, 94, 76, 164, 98, 84, 148, 86, 68, 156, 90, 76, 156, 94, 84, + 164, 90, 76, 164, 98, 84, 172, 102, 84, 164, 94, 76, 156, 90, 68, + 164, 94, 76, 164, 98, 84, 164, 94, 76, 164, 98, 76, 164, 98, 84, + 164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 164, 102, 84, 164, 94, 68, 164, 94, 76, 156, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 84, 164, 102, 84, 172, 102, 84, 164, 98, 76, + 164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84, + 172, 110, 84, 172, 106, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76, + 164, 102, 76, 164, 102, 76, 164, 98, 76, 164, 98, 76, 172, 106, 84, + 180, 110, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 106, 84, + 180, 114, 92, 172, 106, 84, 164, 102, 76, 164, 98, 76, 172, 106, 84, + 180, 110, 92, 180, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84, + 180, 114, 92, 188, 118, 100, 180, 114, 92, 172, 110, 84, 180, 114, 92, + 180, 114, 92, 180, 114, 92, 172, 110, 92, 172, 106, 84, 164, 102, 76, + 172, 102, 76, 164, 102, 84, 180, 110, 84, 180, 118, 92, 188, 118, 100, + 188, 122, 100, 180, 118, 92, 180, 110, 92, 180, 110, 84, 172, 106, 92, + 180, 114, 84, 180, 114, 100, 188, 122, 100, 188, 122, 100, 180, 114, 92, + 172, 110, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 114, 92, + 180, 118, 92, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 102, 76, + 164, 102, 76, 172, 102, 84, 172, 110, 84, 180, 114, 92, 172, 110, 84, + 172, 102, 84, 172, 106, 84, 180, 110, 84, 180, 118, 100, 188, 118, 92, + 180, 110, 92, 172, 106, 84, 172, 106, 84, 180, 110, 92, 188, 118, 92, + 180, 118, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, + 180, 114, 92, 188, 122, 100, 188, 126, 108, 188, 118, 100, 172, 110, 92, + 172, 102, 84, 172, 106, 84, 180, 106, 92, 164, 98, 76, 172, 102, 84, + 172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84, + 172, 102, 84, 172, 106, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76, + 172, 106, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, + 188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 188, 122, 100, + 188, 122, 108, 196, 126, 108, 180, 118, 92, 188, 118, 100, 180, 118, 100, + 180, 118, 100, 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 118, 100, + 180, 110, 92, 172, 110, 84, 172, 106, 92, 172, 110, 92, 188, 118, 100, + 180, 118, 100, 180, 114, 92, 172, 106, 84, 180, 110, 92, 180, 114, 92, + 172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92, 172, 110, 92, + 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 100, 180, 110, 92, + 172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 92, 172, 106, 84, + 180, 110, 84, 180, 118, 92, 188, 122, 100, 180, 118, 100, 180, 118, 92, + 180, 118, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92, 188, 118, 108, + 188, 118, 100, 188, 122, 100, 188, 130, 108, 156, 102, 84, 84, 26, 12, + 84, 30, 12, 108, 46, 28, 140, 82, 68, 156, 90, 76, 156, 94, 84, + 156, 94, 84, 156, 94, 76, 164, 94, 76, 156, 90, 76, 164, 94, 76, + 156, 94, 76, 156, 90, 68, 156, 90, 68, 164, 90, 76, 156, 90, 68, + 148, 82, 60, 148, 78, 60, 164, 98, 76, 164, 94, 76, 156, 90, 68, + 156, 90, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 156, 90, 68, 148, 86, 68, 156, 90, 68, 156, 90, 68, 156, 90, 76, + 164, 94, 68, 156, 94, 76, 156, 94, 68, 156, 90, 68, 156, 90, 68, + 172, 102, 76, 180, 114, 92, 188, 118, 92, 172, 106, 84, 180, 106, 84, + 172, 106, 84, 164, 98, 76, 164, 94, 68, 164, 98, 76, 172, 102, 84, + 172, 106, 84, 172, 102, 76, 164, 98, 76, 172, 106, 84, 180, 110, 92, + 172, 110, 84, 172, 98, 76, 164, 98, 76, 172, 106, 84, 180, 118, 92, + 180, 106, 84, 180, 106, 84, 172, 106, 84, 172, 110, 84, 180, 110, 92, + 180, 110, 84, 172, 102, 76, 164, 98, 76, 164, 94, 68, 172, 106, 84, + 180, 114, 92, 172, 106, 84, 164, 98, 76, 172, 98, 76, 172, 106, 84, + 172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 84, 180, 110, 92, + 180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 84, 188, 118, 92, + 188, 114, 92, 172, 106, 84, 172, 102, 76, 172, 106, 84, 188, 118, 92, + 188, 122, 100, 188, 118, 100, 188, 118, 92, 180, 110, 92, 180, 114, 84, + 180, 114, 92, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 102, 76, + 180, 106, 84, 180, 114, 84, 172, 102, 76, 164, 94, 76, 172, 106, 84, + 180, 110, 84, 172, 106, 84, 172, 106, 84, 188, 122, 100, 188, 118, 92, + 180, 118, 92, 188, 118, 100, 196, 122, 100, 188, 122, 100, 180, 118, 92, + 180, 110, 84, 188, 114, 92, 172, 110, 84, 172, 106, 84, 180, 114, 92, + 188, 114, 92, 180, 114, 92, 180, 114, 84, 180, 114, 92, 180, 110, 92, + 180, 110, 92, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 110, 92, + 188, 118, 100, 180, 118, 92, 180, 110, 92, 180, 114, 100, 180, 118, 100, + 172, 106, 84, 164, 94, 76, 164, 98, 76, 172, 102, 76, 164, 102, 84, + 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 118, 92, 180, 118, 100, + 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 114, 100, 180, 118, 92, + 180, 118, 100, 188, 122, 108, 188, 122, 100, 188, 118, 100, 180, 114, 92, + 180, 114, 92, 172, 110, 92, 172, 110, 92, 172, 106, 84, 188, 122, 100, + 180, 114, 100, 172, 106, 84, 172, 110, 84, 180, 114, 92, 180, 114, 92, + 180, 110, 92, 172, 110, 92, 172, 106, 84, 172, 110, 92, 180, 114, 92, + 180, 118, 100, 180, 114, 92, 172, 110, 92, 172, 110, 92, 180, 110, 92, + 164, 106, 84, 172, 106, 84, 172, 110, 84, 172, 110, 92, 172, 110, 92, + 180, 110, 84, 172, 110, 92, 172, 110, 84, 180, 110, 92, 180, 110, 92, + 180, 114, 92, 180, 118, 92, 180, 118, 92, 180, 118, 100, 188, 118, 92, + 188, 118, 100, 180, 110, 92, 180, 110, 92, 188, 118, 100, 188, 118, 100, + 180, 118, 100, 180, 122, 108, 148, 90, 68, 84, 30, 12, 92, 34, 12, + 116, 58, 44, 156, 90, 76, 156, 94, 76, 156, 94, 76, 156, 90, 76, + 148, 86, 68, 156, 90, 76, 148, 86, 68, 156, 86, 68, 156, 86, 68, + 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 86, 68, 148, 78, 60, + 140, 74, 52, 148, 82, 68, 148, 82, 60, 148, 86, 68, 156, 90, 68, + 156, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76, 148, 86, 68, + 156, 86, 68, 156, 90, 68, 156, 90, 76, 156, 94, 68, 156, 94, 76, + 164, 94, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, + 172, 106, 84, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 102, 76, + 172, 102, 84, 164, 94, 68, 164, 94, 76, 172, 102, 76, 180, 110, 84, + 180, 110, 92, 164, 98, 76, 172, 102, 76, 172, 106, 84, 172, 102, 76, + 164, 98, 76, 164, 98, 76, 172, 102, 76, 180, 110, 92, 180, 110, 92, + 172, 110, 84, 172, 106, 84, 180, 106, 84, 180, 114, 84, 180, 110, 92, + 172, 102, 84, 164, 98, 76, 156, 94, 68, 172, 106, 84, 188, 114, 92, + 180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84, + 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 110, 92, 180, 114, 84, + 172, 110, 84, 172, 106, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 90, 68, 164, 98, 76, 172, 102, 84, 172, 106, 76, + 172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92, + 188, 114, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 172, 106, 84, + 180, 114, 92, 172, 106, 84, 164, 94, 68, 172, 106, 84, 180, 114, 92, + 188, 118, 92, 196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92, + 180, 118, 92, 188, 118, 100, 188, 118, 92, 180, 114, 92, 172, 106, 84, + 180, 114, 92, 180, 106, 84, 172, 102, 76, 172, 102, 76, 172, 106, 84, + 172, 102, 84, 172, 106, 84, 180, 110, 84, 172, 102, 84, 164, 102, 84, + 172, 102, 84, 164, 94, 76, 156, 90, 68, 164, 94, 76, 180, 106, 92, + 172, 102, 84, 164, 98, 84, 180, 110, 84, 180, 110, 92, 164, 98, 84, + 164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 98, 76, 164, 102, 84, + 164, 102, 84, 172, 102, 84, 164, 106, 84, 172, 106, 92, 172, 106, 92, + 172, 110, 92, 180, 110, 84, 180, 118, 100, 188, 118, 100, 180, 118, 100, + 180, 114, 92, 172, 114, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, + 180, 118, 100, 180, 118, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92, + 172, 110, 92, 180, 110, 92, 172, 114, 92, 188, 118, 100, 180, 114, 92, + 172, 110, 92, 172, 106, 84, 172, 110, 92, 172, 110, 92, 172, 110, 84, + 164, 102, 84, 172, 102, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92, + 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, 180, 114, 92, + 180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 118, 92, 188, 118, 92, + 188, 122, 92, 180, 122, 100, 188, 122, 100, 180, 122, 100, 188, 118, 100, + 196, 122, 100, 188, 118, 100, 196, 122, 108, 180, 114, 100, 180, 114, 100, + 180, 126, 108, 148, 98, 76, 92, 34, 12, 84, 26, 12, 116, 58, 36, + 148, 90, 76, 148, 90, 76, 140, 82, 68, 148, 82, 68, 140, 78, 60, + 156, 86, 68, 148, 86, 68, 156, 90, 68, 156, 90, 76, 164, 94, 76, + 156, 90, 76, 156, 90, 68, 148, 82, 68, 148, 78, 60, 140, 78, 60, + 156, 86, 68, 148, 86, 68, 156, 86, 68, 156, 90, 68, 156, 94, 76, + 164, 94, 76, 156, 94, 76, 148, 86, 68, 148, 82, 60, 148, 86, 68, + 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68, 156, 94, 76, + 164, 102, 76, 172, 102, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84, + 180, 114, 84, 180, 110, 84, 172, 102, 76, 180, 106, 84, 172, 106, 76, + 172, 98, 76, 164, 98, 68, 172, 106, 76, 172, 106, 84, 180, 110, 84, + 172, 98, 76, 180, 106, 84, 180, 110, 84, 180, 110, 84, 172, 98, 76, + 172, 98, 76, 180, 106, 84, 180, 114, 84, 188, 114, 92, 180, 110, 84, + 180, 110, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84, + 164, 98, 68, 164, 94, 68, 180, 106, 84, 188, 118, 92, 180, 114, 92, + 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 76, + 180, 106, 84, 180, 110, 84, 180, 114, 92, 188, 114, 92, 180, 110, 84, + 180, 106, 84, 172, 106, 76, 180, 106, 84, 188, 114, 92, 180, 114, 84, + 180, 110, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 110, 84, + 180, 106, 84, 172, 106, 76, 180, 106, 84, 188, 114, 92, 188, 118, 92, + 180, 118, 92, 188, 118, 92, 196, 122, 100, 172, 106, 84, 188, 114, 84, + 172, 106, 84, 164, 98, 68, 172, 102, 76, 180, 106, 84, 180, 110, 84, + 188, 118, 92, 188, 122, 92, 188, 114, 92, 180, 110, 92, 180, 114, 84, + 188, 118, 92, 188, 118, 92, 180, 110, 84, 172, 102, 84, 188, 122, 92, + 180, 110, 84, 164, 102, 76, 172, 102, 76, 172, 98, 76, 172, 102, 76, + 172, 102, 76, 180, 106, 84, 180, 110, 92, 180, 106, 84, 180, 106, 84, + 172, 102, 76, 164, 90, 76, 172, 98, 76, 180, 110, 92, 172, 102, 76, + 172, 102, 84, 180, 106, 84, 180, 110, 84, 172, 102, 84, 172, 98, 76, + 164, 94, 76, 164, 98, 76, 164, 98, 76, 172, 98, 84, 164, 98, 76, + 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 180, 114, 92, + 180, 114, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 180, 118, 100, + 172, 106, 92, 172, 106, 84, 164, 106, 84, 172, 106, 84, 180, 114, 92, + 180, 110, 92, 172, 110, 84, 172, 110, 92, 180, 110, 92, 172, 110, 92, + 180, 114, 92, 180, 114, 92, 180, 118, 92, 172, 110, 92, 172, 106, 84, + 172, 106, 84, 172, 110, 92, 172, 106, 84, 164, 102, 84, 164, 94, 76, + 164, 98, 76, 172, 110, 92, 180, 114, 92, 172, 106, 92, 172, 106, 92, + 172, 110, 84, 172, 106, 92, 164, 102, 84, 172, 110, 92, 180, 110, 92, + 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, 180, 114, 92, + 180, 118, 92, 180, 114, 92, 188, 114, 92, 180, 118, 92, 180, 118, 100, + 180, 118, 92, 180, 118, 100, 188, 118, 92, 180, 118, 92, 180, 110, 92, + 180, 106, 92, 180, 110, 92, 172, 106, 92, 172, 106, 84, 172, 114, 92, + 140, 90, 68, 84, 26, 12, 84, 30, 12, 116, 58, 44, 156, 90, 76, + 156, 90, 76, 148, 86, 68, 148, 86, 76, 148, 86, 68, 156, 90, 76, + 156, 90, 76, 164, 94, 84, 164, 98, 76, 164, 94, 76, 156, 90, 68, + 156, 86, 68, 156, 86, 60, 156, 90, 68, 156, 90, 76, 164, 94, 76, + 156, 94, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 156, 94, 76, 156, 94, 68, 148, 78, 60, 148, 86, 68, 156, 90, 68, + 156, 90, 68, 148, 86, 68, 156, 86, 68, 156, 90, 68, 164, 98, 76, + 164, 94, 68, 172, 98, 76, 180, 106, 84, 188, 118, 92, 188, 118, 92, + 188, 118, 100, 180, 114, 92, 180, 114, 84, 180, 106, 84, 172, 102, 76, + 172, 98, 76, 172, 106, 84, 180, 106, 84, 164, 98, 68, 172, 102, 76, + 180, 114, 84, 196, 122, 100, 188, 118, 92, 172, 106, 76, 172, 102, 76, + 180, 110, 84, 188, 122, 92, 188, 118, 92, 188, 114, 92, 180, 110, 84, + 188, 114, 84, 188, 114, 92, 180, 114, 84, 180, 106, 84, 172, 102, 76, + 164, 94, 68, 180, 110, 84, 188, 118, 92, 188, 118, 92, 188, 114, 92, + 180, 114, 92, 188, 114, 84, 180, 114, 92, 180, 106, 84, 180, 110, 84, + 180, 114, 84, 188, 114, 92, 180, 114, 84, 180, 110, 92, 180, 110, 84, + 180, 106, 84, 180, 114, 84, 188, 114, 92, 188, 114, 92, 180, 114, 92, + 188, 118, 92, 196, 122, 100, 188, 122, 92, 180, 114, 92, 188, 114, 92, + 180, 110, 84, 180, 114, 84, 188, 118, 92, 188, 122, 92, 188, 118, 92, + 188, 118, 92, 188, 122, 92, 188, 118, 92, 196, 122, 100, 188, 118, 92, + 188, 114, 92, 188, 122, 100, 196, 126, 100, 188, 118, 92, 188, 114, 92, + 188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84, 188, 118, 92, + 188, 118, 92, 188, 118, 92, 180, 114, 84, 196, 126, 100, 188, 114, 92, + 180, 106, 84, 172, 106, 76, 172, 102, 76, 172, 102, 76, 172, 106, 76, + 180, 110, 84, 188, 118, 92, 180, 110, 92, 180, 114, 92, 180, 106, 92, + 164, 98, 76, 180, 106, 84, 188, 114, 100, 180, 106, 84, 180, 110, 92, + 180, 110, 92, 188, 114, 92, 180, 110, 92, 172, 106, 84, 172, 98, 76, + 172, 98, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 172, 102, 84, + 172, 106, 84, 172, 110, 92, 180, 118, 92, 180, 114, 100, 180, 118, 100, + 188, 122, 108, 188, 126, 100, 188, 118, 100, 180, 114, 92, 172, 106, 84, + 164, 102, 84, 172, 102, 84, 172, 110, 92, 172, 110, 92, 172, 110, 84, + 172, 106, 92, 172, 106, 84, 172, 110, 84, 172, 110, 92, 180, 110, 92, + 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92, 180, 110, 92, + 172, 110, 92, 180, 110, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76, + 172, 106, 84, 180, 114, 92, 172, 106, 84, 164, 102, 84, 172, 110, 84, + 172, 106, 84, 164, 98, 76, 172, 102, 84, 164, 106, 84, 172, 106, 84, + 172, 106, 92, 172, 110, 92, 180, 110, 92, 180, 110, 92, 172, 110, 92, + 180, 106, 84, 172, 110, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84, + 172, 110, 84, 172, 106, 84, 172, 106, 84, 180, 106, 92, 180, 106, 84, + 188, 114, 100, 188, 118, 100, 180, 114, 100, 180, 126, 108, 148, 90, 68, + 84, 30, 12, 92, 34, 12, 124, 66, 44, 156, 98, 84, 164, 102, 84, + 164, 98, 84, 164, 98, 84, 156, 94, 76, 164, 98, 84, 164, 98, 76, + 156, 90, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 90, 68, + 156, 86, 68, 156, 86, 68, 164, 94, 68, 156, 90, 76, 156, 94, 68, + 156, 90, 76, 164, 98, 76, 164, 102, 84, 172, 106, 84, 172, 106, 84, + 172, 102, 84, 148, 82, 60, 148, 86, 68, 156, 90, 68, 156, 90, 68, + 148, 86, 68, 148, 82, 60, 156, 86, 68, 156, 94, 68, 156, 86, 68, + 164, 98, 68, 180, 110, 84, 188, 118, 92, 196, 122, 92, 196, 122, 100, + 188, 118, 92, 188, 118, 92, 180, 110, 92, 172, 106, 76, 172, 106, 76, + 180, 106, 84, 180, 106, 84, 172, 102, 76, 180, 110, 84, 188, 118, 92, + 196, 126, 100, 188, 118, 100, 180, 110, 84, 172, 106, 84, 188, 114, 84, + 188, 122, 100, 196, 122, 100, 188, 118, 92, 180, 114, 84, 180, 114, 92, + 188, 118, 92, 188, 118, 92, 180, 110, 84, 180, 106, 84, 172, 102, 76, + 180, 110, 84, 196, 122, 100, 188, 122, 92, 188, 118, 92, 188, 118, 92, + 188, 122, 92, 188, 114, 92, 188, 114, 84, 180, 114, 92, 188, 114, 84, + 180, 110, 92, 180, 114, 84, 188, 114, 92, 180, 114, 84, 188, 114, 92, + 180, 114, 92, 188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84, + 188, 118, 92, 188, 114, 92, 180, 114, 84, 188, 118, 92, 180, 114, 92, + 188, 114, 92, 188, 122, 92, 188, 118, 100, 188, 118, 92, 188, 118, 92, + 196, 122, 100, 180, 114, 92, 188, 118, 92, 180, 110, 84, 180, 110, 84, + 196, 130, 100, 204, 134, 108, 196, 126, 100, 188, 118, 100, 188, 122, 92, + 188, 114, 92, 188, 114, 92, 188, 114, 92, 188, 122, 100, 196, 122, 100, + 196, 122, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 180, 110, 84, + 180, 110, 84, 180, 110, 84, 172, 102, 76, 172, 102, 76, 180, 110, 84, + 180, 110, 92, 172, 106, 84, 180, 106, 84, 172, 98, 76, 164, 94, 68, + 172, 106, 84, 180, 110, 92, 172, 106, 84, 180, 110, 84, 180, 110, 84, + 180, 114, 92, 180, 110, 92, 180, 110, 92, 172, 106, 84, 180, 106, 84, + 172, 106, 84, 172, 102, 84, 172, 102, 76, 164, 102, 84, 172, 110, 92, + 180, 114, 92, 188, 118, 100, 188, 122, 100, 188, 118, 92, 188, 126, 108, + 188, 122, 100, 180, 118, 100, 172, 110, 92, 164, 106, 84, 172, 102, 84, + 172, 106, 84, 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 106, 84, + 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, + 172, 110, 92, 172, 110, 92, 172, 110, 84, 180, 110, 92, 172, 114, 92, + 180, 110, 92, 172, 106, 92, 172, 106, 84, 156, 94, 68, 172, 106, 92, + 180, 114, 92, 172, 102, 84, 164, 102, 84, 180, 110, 92, 172, 106, 92, + 164, 98, 76, 164, 102, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 84, 172, 102, 84, + 172, 106, 84, 172, 106, 84, 172, 110, 84, 172, 106, 84, 164, 106, 84, + 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 180, 114, 100, + 188, 118, 100, 180, 118, 100, 188, 126, 100, 148, 94, 76, 92, 34, 12, + 92, 34, 12, 116, 62, 44, 156, 94, 76, 164, 94, 84, 156, 94, 76, + 156, 94, 76, 148, 86, 68, 148, 86, 76, 148, 82, 68, 148, 78, 60, + 148, 82, 68, 156, 90, 68, 156, 94, 76, 164, 90, 76, 156, 90, 68, + 148, 82, 68, 148, 82, 60, 164, 94, 76, 156, 94, 76, 156, 94, 68, + 164, 94, 76, 164, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84, + 156, 90, 68, 156, 90, 68, 156, 94, 76, 156, 90, 68, 148, 86, 68, + 148, 86, 68, 156, 90, 68, 156, 90, 68, 164, 98, 76, 172, 106, 84, + 180, 110, 84, 180, 110, 84, 180, 114, 92, 188, 118, 92, 180, 110, 84, + 188, 118, 92, 188, 118, 92, 180, 110, 84, 180, 106, 84, 180, 114, 84, + 180, 114, 84, 180, 114, 92, 188, 114, 84, 180, 114, 92, 188, 114, 84, + 188, 118, 92, 188, 114, 92, 180, 114, 92, 188, 114, 84, 180, 110, 84, + 196, 122, 100, 188, 118, 92, 188, 114, 92, 188, 114, 92, 188, 118, 92, + 188, 118, 92, 188, 118, 92, 180, 110, 84, 172, 106, 84, 188, 114, 92, + 196, 122, 100, 188, 122, 100, 196, 122, 92, 196, 122, 100, 188, 122, 100, + 188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 118, 92, 188, 114, 92, + 188, 118, 92, 188, 114, 92, 188, 118, 92, 188, 122, 92, 196, 122, 100, + 188, 126, 100, 188, 118, 92, 180, 110, 84, 188, 114, 92, 188, 122, 100, + 196, 126, 100, 188, 118, 100, 196, 122, 92, 188, 114, 92, 180, 114, 92, + 196, 122, 92, 188, 122, 100, 188, 118, 92, 196, 122, 100, 196, 126, 100, + 188, 118, 92, 188, 118, 92, 172, 98, 76, 164, 94, 68, 180, 110, 92, + 188, 122, 92, 188, 114, 92, 180, 114, 84, 204, 130, 108, 196, 126, 100, + 188, 118, 92, 188, 122, 92, 196, 122, 100, 188, 122, 92, 188, 122, 92, + 188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84, 180, 114, 92, + 180, 110, 84, 172, 102, 76, 172, 102, 76, 180, 106, 84, 180, 110, 92, + 180, 106, 84, 172, 102, 76, 172, 98, 76, 164, 94, 76, 180, 106, 84, + 180, 110, 92, 180, 106, 84, 172, 102, 76, 172, 98, 84, 172, 102, 76, + 180, 110, 84, 180, 110, 84, 180, 106, 84, 180, 110, 92, 180, 114, 92, + 172, 110, 92, 172, 106, 92, 172, 106, 84, 180, 110, 92, 180, 118, 100, + 188, 122, 100, 180, 122, 100, 188, 118, 100, 188, 126, 108, 188, 118, 100, + 180, 114, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92, 180, 114, 92, + 180, 114, 92, 172, 114, 92, 180, 110, 92, 172, 106, 84, 164, 102, 84, + 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 110, 84, + 172, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 114, 92, + 172, 114, 92, 180, 110, 92, 164, 98, 76, 172, 110, 92, 180, 114, 92, + 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84, 164, 102, 84, + 172, 106, 84, 172, 110, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84, + 172, 110, 92, 172, 110, 92, 180, 110, 84, 172, 106, 84, 172, 106, 84, + 180, 110, 84, 172, 110, 84, 172, 114, 92, 172, 110, 92, 172, 110, 84, + 172, 110, 84, 180, 106, 92, 172, 102, 84, 180, 106, 92, 172, 106, 92, + 172, 106, 92, 180, 122, 100, 148, 98, 76, 92, 34, 12, 100, 42, 28, + 116, 54, 36, 148, 86, 68, 148, 90, 76, 148, 86, 76, 148, 86, 76, + 140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 78, 60, 148, 78, 60, + 148, 82, 60, 156, 86, 68, 156, 90, 68, 156, 90, 68, 156, 90, 68, + 148, 86, 68, 172, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84, + 172, 106, 84, 172, 106, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76, + 164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 94, 76, 164, 94, 76, + 156, 94, 76, 164, 98, 76, 180, 110, 84, 188, 114, 84, 188, 114, 92, + 180, 106, 84, 188, 114, 84, 188, 118, 92, 188, 114, 92, 188, 118, 92, + 188, 118, 92, 188, 114, 92, 180, 110, 84, 188, 114, 92, 188, 118, 92, + 188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92, + 188, 118, 92, 188, 118, 92, 188, 114, 92, 180, 110, 84, 196, 122, 100, + 188, 118, 92, 180, 114, 84, 188, 114, 92, 188, 122, 92, 196, 122, 100, + 188, 118, 92, 188, 114, 92, 180, 110, 84, 188, 118, 92, 196, 122, 100, + 196, 122, 92, 188, 118, 92, 188, 118, 100, 196, 122, 92, 188, 118, 92, + 196, 122, 100, 196, 122, 92, 196, 122, 100, 188, 122, 92, 196, 122, 100, + 188, 122, 92, 196, 122, 100, 196, 122, 100, 196, 122, 100, 196, 122, 92, + 188, 114, 92, 180, 110, 84, 188, 114, 84, 188, 118, 92, 196, 122, 92, + 188, 118, 92, 188, 122, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92, + 196, 122, 92, 188, 118, 92, 188, 118, 92, 196, 126, 100, 204, 130, 108, + 204, 134, 108, 188, 122, 92, 180, 106, 84, 188, 114, 92, 188, 118, 92, + 188, 118, 92, 196, 122, 100, 204, 134, 108, 196, 130, 100, 196, 122, 100, + 188, 122, 92, 196, 122, 100, 196, 122, 100, 188, 118, 92, 188, 114, 92, + 188, 114, 84, 180, 110, 84, 180, 110, 84, 188, 114, 92, 180, 110, 84, + 180, 106, 84, 180, 106, 84, 188, 114, 92, 188, 118, 92, 188, 114, 92, + 180, 110, 92, 180, 106, 84, 172, 102, 84, 180, 110, 84, 188, 118, 92, + 180, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 106, 92, + 188, 114, 92, 180, 110, 92, 180, 110, 84, 188, 114, 92, 188, 114, 100, + 180, 114, 92, 172, 110, 92, 180, 114, 92, 188, 122, 100, 188, 122, 108, + 188, 122, 100, 180, 118, 100, 188, 122, 100, 180, 118, 100, 180, 114, 92, + 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 92, + 180, 110, 92, 172, 110, 84, 172, 106, 84, 164, 102, 84, 172, 102, 84, + 164, 106, 84, 172, 106, 84, 180, 110, 92, 172, 114, 92, 180, 110, 92, + 172, 110, 92, 180, 110, 92, 172, 110, 84, 172, 110, 92, 172, 110, 84, + 180, 110, 92, 164, 102, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, + 180, 110, 92, 172, 110, 84, 172, 110, 92, 172, 106, 84, 180, 114, 92, + 180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92, 172, 110, 84, + 172, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 84, 180, 114, 92, + 180, 114, 92, 180, 114, 92, 180, 118, 92, 180, 114, 92, 180, 114, 92, + 188, 118, 100, 188, 114, 92, 196, 122, 108, 188, 118, 100, 180, 118, 100, + 188, 130, 108, 156, 106, 84, 100, 42, 28, 84, 30, 12, 116, 54, 36, + 156, 90, 76, 156, 90, 76, 156, 90, 68, 156, 94, 76, 148, 86, 68, + 164, 94, 84, 156, 94, 76, 156, 90, 76, 148, 86, 68, 148, 78, 60, + 148, 78, 60, 148, 86, 68, 164, 94, 76, 164, 94, 76, 172, 98, 84, + 164, 98, 76, 164, 102, 76, 172, 106, 84, 180, 110, 92, 180, 118, 100, + 180, 118, 100, 180, 110, 92, 172, 110, 92, 164, 98, 76, 164, 94, 76, + 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84, 172, 102, 84, + 164, 102, 76, 188, 118, 92, 188, 122, 100, 196, 122, 100, 188, 114, 92, + 180, 114, 92, 188, 114, 92, 196, 122, 100, 196, 122, 100, 188, 118, 92, + 188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 92, 180, 110, 84, + 196, 122, 100, 196, 122, 100, 188, 122, 92, 196, 122, 100, 196, 126, 100, + 196, 122, 100, 188, 118, 92, 188, 118, 92, 196, 122, 100, 188, 118, 92, + 188, 114, 92, 188, 118, 92, 196, 122, 100, 196, 126, 100, 196, 122, 100, + 188, 118, 92, 188, 114, 84, 188, 122, 92, 196, 122, 100, 188, 122, 92, + 188, 118, 92, 196, 122, 100, 196, 122, 92, 188, 118, 92, 196, 122, 100, + 196, 126, 100, 196, 122, 100, 196, 126, 100, 196, 126, 100, 196, 126, 100, + 196, 122, 100, 196, 126, 100, 196, 122, 100, 196, 126, 100, 196, 122, 100, + 188, 118, 92, 188, 118, 100, 196, 126, 100, 196, 126, 100, 196, 122, 100, + 196, 126, 100, 196, 122, 100, 188, 118, 92, 188, 122, 100, 196, 122, 92, + 188, 114, 92, 188, 114, 92, 188, 122, 92, 188, 114, 92, 204, 130, 108, + 196, 126, 100, 188, 118, 92, 188, 118, 92, 188, 118, 92, 196, 122, 100, + 196, 126, 100, 204, 130, 108, 196, 126, 100, 196, 122, 100, 188, 118, 92, + 196, 122, 100, 196, 126, 100, 196, 122, 100, 188, 118, 92, 188, 114, 92, + 188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 92, 180, 114, 84, + 188, 114, 92, 196, 126, 100, 196, 122, 100, 188, 114, 92, 180, 110, 84, + 180, 106, 84, 172, 98, 76, 180, 110, 92, 188, 114, 92, 172, 102, 84, + 196, 126, 100, 188, 114, 92, 188, 114, 92, 188, 114, 92, 188, 114, 92, + 180, 110, 84, 188, 114, 92, 188, 114, 92, 188, 122, 100, 180, 118, 100, + 180, 114, 92, 180, 118, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, + 180, 118, 100, 188, 122, 100, 180, 118, 100, 180, 110, 92, 180, 114, 100, + 180, 118, 100, 188, 118, 100, 172, 114, 92, 172, 106, 84, 172, 110, 92, + 172, 106, 92, 172, 102, 84, 164, 102, 84, 172, 102, 76, 172, 106, 84, + 172, 106, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 110, 92, + 172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84, + 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 118, 100, 180, 118, 100, + 180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 114, 92, 172, 114, 92, + 172, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84, + 172, 106, 84, 180, 110, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, + 180, 118, 92, 180, 118, 92, 180, 114, 92, 180, 118, 92, 188, 114, 100, + 180, 110, 92, 188, 122, 108, 188, 122, 100, 180, 118, 108, 188, 126, 108, + 148, 90, 76, 84, 30, 12, 92, 38, 28, 140, 78, 60, 156, 90, 68, + 156, 90, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76, 156, 94, 76, + 164, 94, 76, 156, 94, 68, 156, 94, 76, 156, 90, 68, 156, 86, 68, + 148, 86, 68, 156, 86, 68, 156, 94, 76, 164, 102, 76, 180, 110, 92, + 172, 102, 84, 172, 98, 84, 172, 106, 84, 180, 114, 92, 188, 122, 100, + 188, 114, 92, 172, 110, 92, 172, 102, 84, 164, 98, 76, 156, 90, 68, + 156, 86, 68, 164, 94, 76, 172, 102, 84, 172, 106, 84, 180, 110, 92, + 188, 114, 92, 196, 126, 100, 196, 126, 100, 188, 118, 92, 180, 110, 92, + 188, 118, 92, 196, 130, 108, 196, 126, 100, 196, 122, 100, 188, 126, 100, + 196, 126, 108, 196, 126, 100, 196, 122, 100, 180, 118, 92, 188, 114, 92, + 188, 118, 92, 196, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92, + 188, 118, 92, 188, 118, 92, 196, 126, 100, 188, 122, 100, 196, 122, 100, + 188, 122, 100, 196, 126, 100, 196, 130, 100, 196, 126, 108, 196, 130, 100, + 196, 122, 100, 188, 122, 100, 196, 126, 108, 196, 126, 100, 204, 130, 108, + 196, 130, 100, 196, 130, 108, 196, 130, 108, 188, 122, 100, 196, 126, 100, + 188, 122, 100, 196, 122, 100, 188, 122, 100, 196, 126, 100, 196, 126, 100, + 196, 130, 100, 196, 130, 108, 196, 130, 100, 196, 126, 100, 196, 126, 100, + 204, 130, 108, 196, 130, 100, 196, 126, 108, 188, 126, 100, 196, 122, 100, + 196, 126, 100, 196, 130, 108, 204, 130, 108, 196, 126, 108, 196, 130, 100, + 196, 122, 100, 188, 122, 100, 196, 126, 100, 204, 134, 108, 204, 134, 108, + 196, 126, 100, 188, 114, 92, 188, 118, 92, 188, 122, 100, 196, 126, 100, + 196, 130, 108, 196, 126, 108, 196, 126, 100, 196, 126, 100, 196, 126, 100, + 188, 122, 92, 188, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100, + 196, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100, 188, 118, 92, + 188, 118, 100, 196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100, + 188, 118, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92, 188, 122, 100, + 188, 114, 92, 180, 114, 92, 180, 114, 84, 172, 102, 84, 172, 106, 84, + 188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100, 180, 118, 100, + 188, 118, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100, + 196, 130, 108, 180, 114, 92, 172, 106, 84, 172, 110, 92, 180, 114, 92, + 172, 110, 92, 172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92, + 180, 114, 92, 180, 110, 92, 164, 102, 84, 164, 98, 84, 172, 102, 84, + 172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84, 180, 106, 92, + 172, 106, 92, 180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 102, 84, + 172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92, 172, 110, 92, + 180, 114, 92, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92, + 180, 110, 92, 172, 110, 92, 180, 110, 84, 172, 110, 92, 172, 110, 92, + 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, + 180, 118, 100, 180, 114, 92, 180, 114, 92, 172, 102, 84, 172, 102, 84, + 180, 106, 92, 164, 94, 84, 156, 94, 76, 172, 110, 100, 140, 82, 68, + 92, 38, 28, 92, 34, 20, 124, 58, 44, 140, 78, 60, 148, 86, 68, + 156, 90, 68, 156, 94, 76, 164, 94, 76, 148, 90, 68, 156, 90, 68, + 164, 94, 76, 156, 94, 76, 156, 94, 76, 156, 90, 68, 148, 86, 60, + 148, 86, 68, 156, 90, 68, 164, 94, 76, 164, 98, 76, 156, 94, 76, + 156, 94, 76, 172, 98, 84, 180, 110, 92, 180, 118, 100, 188, 114, 100, + 180, 114, 92, 172, 102, 84, 164, 98, 84, 164, 94, 76, 156, 94, 76, + 156, 90, 68, 164, 94, 76, 164, 94, 76, 164, 94, 76, 164, 98, 76, + 180, 110, 92, 196, 126, 100, 196, 126, 108, 204, 130, 100, 196, 126, 108, + 196, 130, 108, 196, 126, 100, 188, 122, 100, 196, 122, 100, 196, 126, 100, + 196, 126, 100, 188, 122, 100, 188, 118, 92, 196, 130, 108, 196, 134, 108, + 204, 134, 108, 204, 134, 108, 196, 130, 108, 196, 130, 108, 196, 126, 108, + 196, 130, 108, 196, 126, 100, 188, 126, 100, 188, 122, 100, 196, 126, 100, + 196, 126, 100, 196, 126, 108, 196, 126, 100, 188, 126, 100, 188, 122, 100, + 196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100, + 196, 126, 100, 196, 126, 108, 204, 130, 108, 196, 130, 108, 196, 130, 108, + 196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 130, 108, 204, 130, 108, + 196, 130, 108, 196, 126, 100, 188, 126, 108, 196, 126, 100, 196, 126, 108, + 196, 130, 108, 196, 126, 100, 196, 126, 100, 196, 126, 100, 188, 126, 100, + 196, 126, 100, 196, 126, 108, 196, 130, 100, 196, 126, 108, 188, 126, 100, + 196, 122, 100, 188, 126, 100, 196, 130, 108, 196, 130, 108, 188, 122, 100, + 180, 114, 92, 188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 118, 92, + 188, 122, 100, 188, 118, 100, 188, 122, 100, 188, 118, 92, 188, 118, 100, + 188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 122, 92, 188, 118, 100, + 188, 118, 92, 188, 118, 92, 188, 118, 92, 188, 118, 100, 180, 118, 92, + 188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 118, 92, 180, 114, 92, + 180, 114, 92, 180, 114, 92, 188, 118, 92, 196, 126, 100, 188, 118, 100, + 188, 122, 100, 188, 118, 92, 180, 110, 84, 180, 114, 92, 188, 122, 100, + 188, 122, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, + 180, 118, 100, 180, 118, 100, 180, 114, 92, 172, 110, 92, 172, 106, 84, + 164, 94, 76, 164, 102, 84, 180, 114, 92, 180, 118, 100, 172, 106, 84, + 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 84, 172, 102, 84, + 172, 102, 84, 164, 98, 76, 172, 102, 84, 172, 106, 84, 180, 110, 92, + 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92, + 180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 106, 84, 172, 110, 92, + 180, 118, 92, 188, 118, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 180, 118, 100, 180, 118, 100, 180, 118, 100, 180, 118, 100, + 188, 118, 92, 180, 118, 100, 180, 118, 100, 188, 118, 100, 180, 110, 92, + 172, 110, 100, 180, 114, 100, 180, 118, 100, 180, 118, 100, 180, 118, 100, + 188, 122, 100, 188, 118, 100, 180, 106, 84, 172, 102, 84, 188, 114, 100, + 164, 98, 76, 164, 98, 84, 172, 110, 100, 132, 78, 68, 92, 34, 20, + 92, 34, 20, 132, 70, 52, 156, 90, 68, 164, 102, 76, 164, 98, 76, + 164, 98, 84, 164, 98, 76, 156, 90, 68, 156, 94, 76, 148, 82, 60, + 148, 86, 68, 148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 78, 60, + 148, 82, 60, 148, 86, 68, 148, 82, 68, 148, 82, 60, 156, 82, 68, + 156, 90, 68, 164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, + 164, 102, 76, 172, 98, 84, 164, 98, 76, 156, 90, 76, 156, 82, 60, + 140, 78, 60, 140, 70, 52, 132, 70, 52, 156, 82, 60, 172, 98, 76, + 188, 114, 92, 196, 122, 100, 196, 126, 100, 196, 126, 108, 196, 130, 108, + 196, 130, 108, 196, 126, 100, 188, 126, 100, 196, 126, 100, 188, 126, 100, + 196, 126, 100, 188, 122, 100, 196, 130, 108, 204, 130, 108, 196, 130, 108, + 196, 130, 108, 196, 122, 100, 188, 122, 100, 196, 122, 100, 188, 126, 100, + 196, 126, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100, + 188, 126, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100, + 196, 126, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 122, 100, + 188, 126, 100, 196, 126, 100, 196, 126, 100, 196, 130, 108, 196, 126, 100, + 196, 126, 100, 196, 126, 108, 196, 126, 100, 188, 122, 100, 196, 130, 108, + 196, 130, 100, 196, 126, 108, 196, 126, 100, 196, 130, 108, 204, 130, 108, + 196, 130, 108, 196, 126, 108, 196, 130, 108, 204, 134, 108, 196, 130, 108, + 196, 130, 108, 196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 134, 108, + 204, 130, 108, 204, 134, 116, 196, 130, 108, 196, 122, 100, 188, 122, 100, + 196, 126, 108, 196, 126, 100, 196, 126, 100, 188, 118, 100, 188, 118, 92, + 188, 118, 92, 188, 122, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100, + 188, 122, 100, 188, 122, 100, 188, 118, 100, 188, 122, 92, 188, 118, 100, + 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92, + 188, 122, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 114, 92, + 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 122, 100, + 188, 122, 100, 180, 110, 92, 180, 114, 92, 188, 122, 100, 188, 122, 100, + 188, 118, 100, 180, 118, 100, 180, 118, 100, 188, 122, 100, 188, 122, 100, + 188, 122, 100, 180, 114, 92, 180, 110, 92, 172, 110, 92, 164, 102, 76, + 164, 102, 84, 188, 118, 100, 180, 118, 100, 172, 106, 84, 164, 102, 84, + 172, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92, + 172, 106, 84, 180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 110, 92, + 180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 110, 92, 180, 110, 84, + 180, 110, 92, 180, 110, 92, 172, 102, 84, 172, 106, 84, 172, 110, 92, + 180, 110, 92, 172, 110, 92, 172, 110, 92, 172, 106, 92, 172, 110, 92, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 100, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 100, 180, 114, 92, + 180, 114, 92, 180, 114, 100, 180, 118, 92, 180, 122, 100, 188, 122, 100, + 188, 122, 100, 188, 118, 100, 180, 110, 92, 188, 114, 100, 172, 102, 92, + 172, 106, 92, 180, 118, 100, 132, 78, 68, 92, 34, 20, 92, 34, 20, + 132, 74, 60, 156, 90, 68, 164, 94, 76, 148, 90, 68, 156, 86, 68, + 156, 90, 68, 156, 90, 68, 164, 98, 84, 156, 90, 68, 156, 90, 68, + 156, 90, 76, 156, 94, 76, 164, 98, 76, 164, 98, 84, 164, 102, 76, + 172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92, + 180, 110, 92, 180, 110, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92, + 180, 114, 92, 180, 114, 92, 180, 110, 92, 164, 98, 84, 164, 94, 76, + 156, 90, 68, 156, 90, 68, 172, 102, 84, 180, 110, 92, 188, 118, 92, + 196, 122, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92, + 188, 118, 100, 188, 118, 100, 180, 114, 92, 188, 114, 92, 188, 118, 100, + 188, 118, 92, 196, 126, 100, 188, 126, 100, 196, 122, 100, 188, 122, 100, + 180, 118, 92, 188, 118, 92, 188, 122, 100, 196, 122, 100, 196, 126, 108, + 188, 126, 100, 188, 122, 100, 196, 122, 100, 188, 126, 100, 196, 122, 100, + 188, 122, 100, 188, 118, 92, 180, 110, 92, 180, 114, 92, 188, 118, 92, + 180, 114, 92, 180, 110, 84, 172, 110, 84, 180, 114, 92, 188, 114, 92, + 188, 126, 100, 196, 126, 108, 196, 126, 100, 196, 130, 108, 196, 126, 108, + 188, 126, 100, 188, 126, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100, + 188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 126, 100, 188, 122, 100, + 188, 118, 92, 196, 130, 108, 196, 130, 108, 196, 126, 108, 196, 126, 100, + 196, 130, 108, 196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 130, 108, + 196, 130, 100, 196, 122, 100, 180, 118, 92, 188, 118, 92, 188, 122, 100, + 196, 126, 100, 180, 118, 100, 188, 118, 92, 180, 118, 92, 180, 114, 92, + 188, 118, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 188, 114, 92, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 188, 118, 92, + 180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 110, 92, 188, 114, 92, + 188, 122, 92, 180, 118, 92, 180, 110, 92, 180, 110, 92, 180, 118, 92, + 196, 122, 100, 188, 118, 100, 180, 114, 92, 188, 122, 100, 188, 118, 92, + 180, 110, 92, 180, 114, 84, 188, 118, 100, 180, 118, 92, 188, 118, 100, + 188, 122, 100, 188, 122, 100, 188, 122, 108, 188, 122, 100, 188, 122, 100, + 180, 114, 92, 172, 106, 84, 164, 98, 84, 156, 94, 76, 164, 94, 76, + 164, 102, 76, 172, 102, 84, 164, 98, 76, 172, 106, 84, 188, 122, 100, + 188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 114, 92, 180, 110, 92, + 180, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 110, 92, + 180, 110, 84, 172, 110, 92, 180, 110, 92, 172, 106, 92, 172, 110, 84, + 172, 106, 92, 172, 102, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84, + 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, + 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92, + 172, 106, 84, 172, 106, 92, 180, 110, 92, 172, 110, 92, 180, 106, 92, + 172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92, + 188, 118, 100, 188, 114, 100, 188, 118, 100, 180, 110, 92, 180, 118, 108, + 180, 122, 108, 132, 78, 68, 92, 34, 20, 92, 34, 20, 108, 50, 28, + 132, 66, 52, 140, 74, 52, 132, 70, 52, 140, 74, 52, 140, 78, 60, + 148, 86, 60, 164, 94, 76, 156, 94, 68, 156, 94, 76, 164, 98, 76, + 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84, + 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92, + 180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 106, 92, 180, 110, 92, + 180, 114, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 188, 114, 100, + 188, 122, 100, 180, 110, 84, 188, 114, 92, 180, 114, 92, 188, 114, 92, + 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 84, + 180, 114, 92, 180, 110, 84, 180, 110, 92, 172, 110, 84, 180, 110, 92, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92, 180, 110, 84, + 180, 110, 92, 188, 118, 92, 188, 122, 100, 180, 114, 84, 180, 110, 92, + 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 106, 84, + 172, 106, 84, 164, 102, 76, 172, 102, 84, 180, 110, 84, 180, 110, 84, + 172, 110, 92, 180, 106, 84, 180, 110, 84, 180, 110, 92, 180, 118, 92, + 188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 92, 188, 118, 100, + 188, 118, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 110, 92, + 180, 114, 92, 180, 114, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92, + 188, 114, 92, 188, 118, 92, 188, 122, 92, 188, 118, 100, 196, 122, 92, + 188, 122, 100, 188, 118, 100, 188, 122, 92, 188, 118, 100, 188, 118, 92, + 180, 114, 92, 172, 106, 84, 180, 110, 92, 180, 118, 92, 188, 114, 92, + 172, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 92, 180, 110, 84, + 172, 110, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, + 172, 106, 76, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84, + 172, 106, 84, 172, 102, 84, 172, 102, 76, 180, 106, 84, 180, 114, 92, + 188, 118, 92, 180, 114, 92, 188, 118, 92, 188, 122, 100, 180, 110, 84, + 180, 110, 92, 188, 118, 92, 180, 114, 92, 180, 114, 92, 172, 114, 92, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 84, 164, 98, 84, + 156, 94, 76, 140, 74, 52, 140, 78, 60, 148, 86, 68, 156, 90, 68, + 156, 94, 76, 156, 98, 76, 172, 102, 84, 172, 110, 92, 172, 106, 92, + 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 180, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, + 172, 102, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 92, + 172, 106, 84, 172, 106, 84, 172, 110, 92, 164, 102, 84, 172, 102, 84, + 164, 106, 84, 172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 92, 172, 106, 92, 164, 102, 84, 172, 102, 84, + 164, 106, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92, + 180, 106, 92, 180, 110, 92, 172, 102, 92, 172, 114, 100, 180, 118, 100, + 132, 74, 60, 92, 34, 20, 92, 34, 12, 124, 58, 44, 148, 78, 60, + 148, 90, 68, 156, 86, 68, 156, 94, 76, 156, 94, 76, 156, 90, 68, + 164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 94, 68, 164, 94, 76, + 164, 98, 76, 164, 98, 84, 164, 98, 76, 156, 98, 76, 164, 94, 76, + 164, 98, 76, 164, 98, 84, 164, 98, 84, 172, 102, 76, 164, 102, 84, + 172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92, 180, 106, 84, + 172, 106, 92, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 92, + 180, 110, 92, 180, 106, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92, + 188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 100, 188, 118, 92, + 188, 122, 100, 188, 122, 100, 188, 118, 92, 180, 118, 92, 188, 118, 92, + 188, 118, 100, 188, 118, 92, 180, 118, 92, 188, 114, 92, 180, 118, 92, + 188, 122, 100, 196, 130, 108, 188, 114, 92, 180, 114, 92, 180, 118, 92, + 188, 118, 92, 188, 118, 100, 188, 118, 92, 180, 114, 92, 180, 110, 84, + 180, 110, 92, 180, 114, 84, 180, 114, 92, 180, 114, 92, 188, 118, 92, + 188, 118, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 188, 118, 100, + 188, 122, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100, + 196, 122, 100, 188, 126, 100, 188, 122, 100, 188, 122, 92, 188, 122, 100, + 196, 122, 100, 188, 126, 100, 196, 122, 100, 188, 118, 92, 180, 118, 92, + 188, 118, 100, 188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, + 188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 118, 100, 180, 114, 92, + 180, 110, 84, 180, 110, 92, 188, 118, 92, 180, 114, 92, 180, 110, 92, + 188, 118, 92, 180, 118, 92, 188, 114, 92, 180, 114, 92, 180, 110, 92, + 180, 110, 84, 180, 110, 84, 180, 110, 84, 180, 110, 84, 180, 110, 84, + 180, 106, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92, + 180, 110, 92, 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 92, + 172, 110, 84, 172, 110, 84, 180, 110, 92, 188, 118, 92, 188, 118, 92, + 180, 114, 92, 188, 118, 100, 188, 118, 92, 180, 110, 92, 180, 114, 84, + 188, 118, 100, 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92, + 172, 110, 92, 172, 110, 92, 172, 102, 84, 164, 98, 76, 156, 94, 76, + 156, 94, 68, 172, 102, 76, 172, 110, 92, 172, 110, 84, 172, 106, 92, + 172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 106, 92, + 172, 106, 84, 172, 106, 92, 172, 102, 84, 172, 102, 84, 172, 106, 92, + 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, + 172, 106, 84, 172, 102, 84, 172, 106, 92, 172, 102, 84, 164, 98, 76, + 164, 102, 84, 164, 102, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84, + 172, 102, 84, 164, 102, 84, 164, 102, 84, 164, 102, 84, 164, 98, 76, + 172, 102, 84, 172, 102, 84, 172, 102, 84, 164, 98, 84, 164, 102, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 98, 84, 172, 98, 76, + 172, 98, 84, 164, 94, 84, 172, 110, 92, 172, 110, 100, 116, 62, 52, + 92, 34, 12, 92, 34, 20, 148, 90, 68, 172, 106, 84, 172, 110, 92, + 172, 106, 84, 172, 110, 84, 180, 110, 92, 164, 102, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84, + 172, 110, 92, 172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 102, 84, + 172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 110, 92, + 180, 110, 92, 188, 118, 100, 188, 114, 100, 180, 114, 92, 180, 110, 92, + 180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 106, 84, 188, 118, 100, + 188, 118, 92, 196, 122, 100, 196, 126, 108, 204, 130, 108, 188, 122, 100, + 188, 118, 100, 180, 118, 92, 180, 114, 92, 188, 122, 100, 196, 122, 100, + 188, 122, 100, 188, 118, 92, 180, 110, 92, 196, 122, 100, 188, 126, 100, + 196, 126, 100, 188, 122, 100, 188, 122, 100, 196, 126, 100, 196, 126, 108, + 196, 130, 108, 196, 130, 108, 196, 126, 100, 196, 126, 108, 196, 130, 108, + 196, 134, 108, 204, 134, 108, 196, 130, 108, 188, 126, 108, 188, 118, 92, + 180, 114, 92, 180, 106, 84, 180, 110, 84, 180, 114, 92, 180, 118, 92, + 188, 118, 92, 180, 118, 92, 188, 126, 100, 188, 122, 100, 196, 126, 100, + 196, 126, 100, 196, 126, 100, 196, 130, 108, 204, 130, 108, 196, 130, 108, + 196, 122, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 122, 100, + 188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100, 188, 118, 92, + 180, 114, 92, 188, 118, 92, 188, 118, 100, 188, 122, 92, 188, 122, 100, + 196, 122, 100, 180, 118, 92, 188, 118, 92, 180, 114, 92, 172, 110, 84, + 180, 110, 84, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 118, 92, + 188, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, + 180, 110, 92, 180, 114, 84, 180, 110, 92, 180, 110, 84, 180, 114, 84, + 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92, + 180, 114, 84, 180, 114, 92, 180, 118, 92, 180, 110, 92, 172, 106, 84, + 180, 110, 84, 180, 110, 84, 164, 102, 76, 172, 102, 84, 180, 110, 84, + 172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, + 172, 110, 84, 172, 106, 92, 172, 106, 84, 164, 98, 76, 180, 118, 100, + 188, 122, 100, 188, 118, 100, 188, 118, 100, 180, 114, 92, 172, 106, 92, + 172, 106, 84, 164, 102, 84, 180, 106, 84, 172, 106, 92, 180, 110, 92, + 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92, + 172, 98, 84, 164, 102, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92, + 180, 106, 84, 172, 110, 92, 180, 106, 92, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76, 156, 94, 76, + 164, 98, 76, 164, 98, 84, 164, 98, 76, 172, 102, 84, 164, 102, 84, + 172, 102, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76, 172, 102, 84, + 172, 102, 92, 164, 102, 84, 172, 102, 84, 164, 106, 84, 164, 106, 84, + 164, 102, 76, 172, 102, 84, 164, 98, 76, 172, 102, 84, 172, 102, 84, + 164, 94, 84, 172, 106, 92, 164, 106, 92, 116, 62, 52, 92, 34, 20, + 100, 46, 28, 148, 86, 76, 164, 98, 76, 164, 98, 76, 156, 90, 76, + 164, 98, 76, 164, 102, 84, 172, 102, 84, 172, 106, 84, 164, 102, 84, + 164, 102, 84, 164, 98, 76, 164, 98, 84, 172, 106, 84, 172, 110, 92, + 180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 106, 92, 172, 106, 84, + 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 172, 110, 92, + 172, 106, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84, 180, 106, 92, + 180, 110, 84, 172, 106, 84, 172, 102, 84, 180, 110, 92, 172, 102, 76, + 172, 98, 76, 172, 106, 84, 180, 106, 84, 172, 98, 76, 164, 98, 76, + 164, 94, 76, 164, 98, 76, 172, 102, 76, 172, 110, 84, 172, 106, 84, + 172, 98, 76, 156, 94, 68, 164, 94, 68, 164, 94, 76, 164, 98, 76, + 164, 94, 68, 164, 94, 68, 156, 90, 68, 164, 94, 68, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84, + 172, 106, 84, 172, 102, 76, 164, 98, 76, 172, 106, 84, 164, 98, 76, + 148, 86, 60, 148, 82, 60, 156, 90, 68, 164, 94, 76, 164, 98, 76, + 164, 94, 76, 172, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 84, + 172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 172, 106, 84, + 172, 102, 76, 172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 106, 84, + 172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 102, 84, 172, 102, 76, + 164, 102, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84, 180, 114, 92, + 172, 102, 76, 172, 106, 84, 172, 102, 84, 164, 94, 76, 164, 98, 76, + 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76, 172, 98, 76, + 164, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 164, 102, 76, + 172, 102, 76, 172, 102, 76, 164, 102, 76, 172, 102, 76, 164, 102, 76, + 172, 98, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76, 172, 102, 84, + 172, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84, + 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76, 164, 98, 76, + 164, 102, 76, 156, 90, 68, 164, 94, 68, 164, 98, 76, 164, 98, 76, + 164, 94, 76, 156, 94, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76, + 164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 94, 76, 156, 90, 68, + 156, 90, 76, 156, 94, 68, 156, 94, 76, 156, 90, 68, 156, 90, 68, + 156, 94, 76, 156, 86, 68, 156, 90, 68, 164, 98, 76, 164, 94, 76, + 164, 94, 76, 164, 98, 76, 172, 102, 84, 180, 114, 92, 164, 102, 76, + 172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92, + 180, 110, 92, 180, 114, 92, 172, 106, 92, 180, 110, 92, 172, 110, 92, + 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, + 172, 110, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, + 172, 110, 92, 172, 110, 84, 172, 106, 84, 172, 102, 92, 172, 106, 84, + 172, 106, 92, 172, 110, 92, 172, 110, 92, 172, 110, 92, 180, 106, 84, + 172, 106, 84, 180, 106, 92, 180, 110, 92, 180, 110, 100, 172, 102, 84, + 180, 114, 100, 172, 110, 100, 124, 66, 52, 100, 46, 28, 100, 42, 28, + 148, 78, 68, 156, 90, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 156, 90, 68, 148, 82, 60, 148, 82, 68, 148, 86, 60, + 148, 82, 68, 148, 86, 60, 148, 86, 68, 156, 90, 68, 148, 86, 68, + 156, 90, 68, 156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 98, 76, + 156, 94, 76, 164, 94, 76, 164, 98, 76, 164, 98, 76, 172, 102, 84, + 156, 90, 68, 164, 94, 76, 164, 98, 76, 164, 94, 76, 156, 86, 68, + 156, 94, 76, 180, 110, 92, 172, 98, 76, 172, 102, 76, 172, 102, 84, + 164, 98, 76, 172, 98, 76, 180, 110, 84, 188, 122, 100, 188, 118, 92, + 180, 114, 92, 188, 118, 100, 188, 118, 92, 188, 122, 100, 180, 114, 92, + 180, 110, 92, 172, 102, 76, 172, 106, 84, 188, 118, 92, 188, 122, 100, + 188, 122, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 172, 102, 76, + 172, 102, 76, 180, 106, 84, 180, 110, 92, 180, 114, 92, 188, 118, 92, + 188, 114, 92, 180, 114, 92, 188, 114, 92, 188, 118, 100, 188, 118, 92, + 180, 114, 92, 172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84, + 180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 76, 164, 98, 76, + 172, 102, 76, 172, 106, 76, 172, 102, 84, 172, 102, 76, 172, 106, 84, + 180, 110, 92, 180, 114, 92, 180, 110, 84, 172, 110, 84, 180, 106, 84, + 180, 110, 92, 172, 106, 76, 172, 110, 84, 180, 110, 92, 180, 110, 84, + 180, 106, 84, 172, 106, 84, 180, 106, 84, 172, 110, 84, 180, 110, 84, + 172, 102, 84, 172, 102, 76, 172, 102, 76, 164, 94, 68, 164, 98, 76, + 172, 102, 76, 164, 94, 76, 172, 102, 76, 164, 98, 76, 164, 94, 76, + 164, 98, 76, 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76, + 164, 102, 84, 172, 98, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76, + 156, 90, 68, 156, 90, 68, 164, 94, 76, 172, 102, 76, 172, 106, 84, + 172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 102, 76, + 164, 98, 76, 164, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84, + 164, 94, 68, 164, 94, 76, 172, 102, 76, 164, 98, 76, 164, 102, 76, + 164, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76, 156, 94, 76, + 156, 90, 68, 156, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76, + 164, 98, 76, 156, 94, 76, 156, 86, 68, 148, 86, 68, 148, 82, 60, + 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 82, 60, + 148, 86, 68, 156, 86, 68, 156, 90, 76, 156, 90, 68, 156, 86, 68, + 148, 78, 60, 148, 82, 60, 156, 86, 68, 156, 90, 76, 156, 90, 68, + 156, 86, 68, 148, 86, 60, 156, 86, 68, 148, 86, 68, 148, 86, 68, + 156, 90, 68, 156, 90, 68, 164, 94, 76, 156, 94, 76, 156, 86, 68, + 156, 90, 68, 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68, + 156, 86, 68, 148, 86, 68, 156, 86, 68, 156, 86, 68, 156, 90, 68, + 156, 90, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 172, 106, 84, + 172, 102, 84, 164, 90, 76, 172, 102, 84, 172, 102, 84, 164, 102, 92, + 164, 102, 92, 124, 70, 60, 100, 42, 28, 84, 30, 12, 132, 70, 52, + 140, 74, 60, 148, 78, 60, 140, 74, 52, 140, 74, 60, 140, 78, 60, + 140, 78, 60, 140, 74, 52, 148, 78, 60, 148, 82, 60, 148, 82, 60, + 148, 82, 68, 156, 86, 60, 156, 90, 68, 156, 90, 68, 156, 90, 76, + 148, 82, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68, 156, 90, 68, + 156, 86, 68, 156, 90, 68, 164, 90, 76, 172, 102, 84, 156, 94, 76, + 156, 90, 68, 172, 98, 84, 164, 102, 84, 164, 94, 76, 164, 94, 76, + 172, 102, 84, 180, 110, 84, 180, 110, 92, 188, 114, 92, 180, 110, 84, + 180, 110, 92, 188, 114, 92, 188, 118, 92, 188, 118, 92, 180, 118, 92, + 188, 114, 92, 188, 118, 92, 180, 118, 92, 180, 114, 92, 180, 110, 84, + 180, 114, 92, 180, 118, 92, 188, 118, 100, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 188, 118, 92, 188, 122, 100, 180, 114, 92, 180, 114, 92, + 180, 110, 84, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 84, + 172, 102, 84, 172, 106, 76, 180, 110, 92, 188, 118, 92, 188, 118, 100, + 188, 118, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 84, + 180, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92, + 180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 106, 84, 180, 110, 84, + 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92, + 172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 84, 172, 106, 84, + 172, 106, 84, 180, 106, 84, 180, 110, 92, 180, 110, 92, 172, 106, 76, + 172, 106, 84, 172, 106, 84, 164, 94, 76, 164, 98, 76, 172, 106, 84, + 172, 102, 76, 172, 102, 76, 164, 102, 76, 172, 98, 76, 164, 102, 76, + 172, 102, 84, 172, 106, 76, 172, 102, 84, 172, 102, 76, 172, 102, 76, + 164, 102, 84, 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 94, 68, + 164, 94, 76, 172, 102, 76, 172, 106, 84, 180, 106, 84, 172, 106, 84, + 172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 106, 84, 172, 102, 76, + 172, 102, 76, 164, 98, 76, 172, 102, 84, 172, 106, 76, 164, 94, 76, + 164, 98, 76, 172, 102, 76, 164, 98, 76, 172, 102, 84, 164, 98, 76, + 156, 94, 76, 164, 102, 84, 172, 102, 84, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76, 164, 102, 84, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84, 164, 94, 76, + 156, 94, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68, 156, 86, 68, + 156, 90, 68, 164, 94, 76, 164, 94, 76, 156, 90, 68, 156, 86, 68, + 156, 86, 68, 156, 94, 76, 164, 98, 76, 164, 94, 76, 156, 90, 76, + 156, 86, 68, 148, 90, 68, 156, 90, 68, 156, 94, 68, 156, 94, 76, + 156, 94, 76, 156, 94, 76, 156, 94, 68, 156, 94, 76, 156, 94, 76, + 164, 94, 76, 156, 98, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68, + 156, 90, 68, 164, 94, 84, 156, 94, 76, 164, 98, 84, 164, 98, 76, + 164, 102, 76, 156, 98, 76, 164, 98, 76, 164, 94, 68, 156, 82, 68, + 132, 66, 44, 140, 70, 52, 148, 78, 68, 156, 90, 76, 156, 102, 84, + 124, 66, 52, 84, 30, 12, 92, 38, 28, 132, 66, 52, 140, 74, 52, + 132, 74, 60, 132, 66, 44, 124, 66, 44, 140, 70, 52, 140, 78, 60, + 148, 82, 60, 148, 82, 68, 148, 86, 60, 148, 86, 68, 156, 86, 68, + 148, 90, 68, 156, 90, 76, 156, 94, 68, 156, 94, 76, 164, 90, 68, + 164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 98, 84, 164, 98, 84, + 172, 98, 76, 164, 102, 84, 172, 102, 84, 172, 98, 84, 164, 98, 76, + 172, 102, 84, 180, 110, 84, 180, 110, 92, 172, 110, 92, 172, 102, 76, + 180, 106, 92, 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 106, 84, + 172, 102, 84, 180, 118, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 188, 114, 92, 180, 110, 92, 172, 110, 84, 188, 118, 100, + 188, 118, 92, 188, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92, + 180, 114, 92, 188, 118, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 180, 114, 92, 180, 110, 84, 172, 102, 84, 172, 102, 76, + 172, 102, 76, 172, 110, 84, 188, 118, 100, 188, 122, 100, 188, 118, 92, + 188, 118, 100, 188, 122, 92, 188, 122, 100, 172, 110, 84, 180, 110, 92, + 180, 114, 84, 180, 114, 92, 188, 114, 92, 180, 118, 92, 188, 114, 92, + 180, 118, 92, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 114, 84, + 180, 114, 92, 188, 114, 92, 180, 114, 92, 180, 114, 84, 172, 106, 84, + 180, 106, 84, 172, 110, 92, 180, 110, 84, 180, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 164, 94, 68, 164, 98, 76, 180, 106, 84, 172, 110, 84, + 172, 102, 84, 172, 102, 84, 164, 102, 76, 172, 102, 76, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 76, + 172, 106, 84, 172, 106, 84, 172, 102, 84, 164, 98, 76, 172, 102, 76, + 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84, + 172, 106, 84, 180, 110, 92, 180, 110, 84, 172, 110, 84, 172, 102, 84, + 172, 102, 76, 172, 106, 84, 180, 110, 84, 164, 98, 76, 164, 98, 76, + 172, 106, 84, 164, 102, 76, 172, 102, 84, 164, 98, 84, 164, 98, 76, + 172, 106, 84, 172, 110, 84, 172, 102, 84, 164, 102, 84, 164, 102, 84, + 172, 106, 84, 164, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84, + 156, 94, 76, 164, 98, 76, 172, 106, 84, 172, 102, 76, 164, 98, 84, + 172, 102, 84, 164, 98, 76, 164, 94, 76, 164, 94, 76, 164, 98, 76, + 164, 98, 84, 164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76, + 172, 102, 84, 172, 102, 84, 164, 98, 76, 164, 94, 76, 156, 86, 68, + 156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76, + 164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 102, 76, 164, 98, 76, + 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 94, 76, + 164, 98, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92, 164, 102, 84, + 164, 98, 76, 156, 94, 68, 156, 90, 68, 156, 86, 68, 132, 62, 44, + 140, 66, 52, 140, 74, 60, 156, 94, 84, 172, 110, 100, 132, 74, 60, + 92, 38, 28, 116, 58, 44, 164, 106, 84, 180, 114, 92, 180, 114, 92, + 172, 106, 84, 172, 106, 84, 172, 110, 92, 188, 122, 100, 188, 126, 100, + 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92, + 180, 110, 92, 172, 110, 92, 180, 110, 92, 164, 102, 84, 172, 106, 84, + 180, 106, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, + 180, 110, 92, 172, 110, 84, 180, 114, 92, 180, 114, 100, 180, 114, 92, + 180, 114, 100, 188, 122, 100, 188, 122, 100, 188, 114, 92, 180, 114, 92, + 188, 114, 92, 188, 114, 92, 188, 122, 100, 188, 114, 92, 180, 110, 84, + 180, 110, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, + 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92, 180, 110, 84, + 180, 110, 92, 172, 110, 84, 172, 106, 84, 180, 106, 84, 180, 110, 84, + 180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 102, 76, 180, 110, 92, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 114, 92, + 188, 118, 92, 188, 122, 100, 188, 114, 92, 180, 110, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92, 188, 118, 92, + 180, 110, 92, 180, 114, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 180, 110, 84, 172, 106, 84, 172, 102, 84, 172, 106, 76, + 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 106, 84, + 180, 106, 84, 172, 110, 84, 172, 102, 84, 180, 110, 84, 172, 106, 84, + 164, 94, 68, 164, 98, 76, 172, 106, 84, 180, 110, 84, 172, 106, 84, + 172, 102, 76, 172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 76, 172, 102, 76, 172, 102, 84, 164, 102, 76, 172, 102, 84, + 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84, 180, 110, 84, + 180, 110, 92, 180, 114, 84, 180, 110, 92, 172, 106, 84, 180, 106, 84, + 172, 110, 84, 180, 106, 84, 172, 110, 92, 180, 106, 84, 172, 106, 84, + 180, 110, 84, 172, 106, 84, 164, 98, 76, 172, 98, 76, 180, 110, 84, + 172, 106, 84, 172, 102, 84, 164, 98, 76, 164, 102, 84, 172, 106, 84, + 172, 110, 92, 172, 106, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84, + 164, 98, 76, 164, 98, 76, 164, 102, 84, 164, 98, 76, 156, 90, 68, + 156, 90, 68, 164, 98, 84, 164, 98, 84, 172, 102, 76, 172, 102, 84, + 164, 102, 84, 164, 98, 76, 164, 98, 84, 172, 102, 84, 172, 106, 84, + 172, 98, 84, 164, 98, 76, 164, 98, 76, 172, 98, 84, 172, 106, 84, + 172, 106, 84, 164, 98, 84, 164, 94, 76, 156, 94, 76, 164, 98, 76, + 164, 98, 76, 164, 102, 76, 164, 102, 84, 164, 98, 76, 164, 98, 76, + 156, 94, 76, 164, 102, 76, 172, 102, 84, 164, 102, 84, 164, 102, 76, + 164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 98, 84, 164, 98, 84, + 164, 98, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84, 164, 102, 84, + 164, 98, 76, 164, 98, 76, 172, 102, 84, 164, 90, 68, 164, 90, 76, + 164, 94, 76, 164, 102, 92, 172, 114, 100, 140, 82, 68, 116, 58, 44, + 116, 62, 52, 148, 86, 68, 164, 98, 76, 164, 102, 84, 164, 98, 76, + 156, 94, 76, 164, 98, 76, 164, 102, 84, 172, 102, 84, 164, 102, 84, + 164, 102, 76, 164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 102, 84, + 164, 98, 76, 164, 98, 76, 172, 102, 84, 172, 102, 84, 172, 106, 84, + 180, 110, 84, 172, 110, 92, 180, 110, 84, 172, 106, 92, 172, 106, 84, + 164, 90, 76, 172, 106, 84, 180, 110, 92, 172, 98, 84, 164, 98, 76, + 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 84, + 188, 114, 92, 188, 118, 100, 188, 114, 92, 180, 110, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 110, 84, 180, 114, 92, + 180, 110, 84, 180, 114, 92, 180, 106, 84, 172, 110, 84, 180, 106, 84, + 172, 106, 84, 180, 110, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84, + 172, 102, 76, 172, 102, 76, 172, 102, 76, 172, 102, 84, 172, 110, 92, + 180, 110, 84, 172, 106, 84, 172, 102, 84, 172, 110, 84, 180, 110, 84, + 180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84, 180, 110, 84, + 180, 110, 92, 180, 114, 92, 180, 114, 92, 172, 106, 84, 172, 102, 84, + 172, 102, 76, 172, 106, 84, 180, 106, 84, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 114, 84, + 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 102, 84, + 172, 102, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84, + 172, 102, 84, 172, 102, 76, 172, 106, 84, 172, 102, 76, 156, 90, 68, + 164, 94, 68, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 98, 76, + 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 102, 76, 172, 102, 84, + 164, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 180, 106, 84, + 172, 106, 84, 164, 102, 76, 172, 102, 76, 172, 110, 92, 180, 110, 84, + 172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 180, 114, 84, 172, 106, 84, 180, 106, 84, + 172, 106, 84, 164, 94, 68, 164, 98, 76, 180, 110, 84, 180, 114, 92, + 164, 98, 84, 156, 98, 76, 164, 98, 76, 172, 106, 84, 172, 110, 92, + 172, 106, 84, 164, 102, 76, 164, 102, 84, 156, 90, 68, 156, 90, 68, + 156, 94, 76, 164, 102, 76, 164, 98, 76, 156, 94, 76, 164, 98, 76, + 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84, 172, 98, 76, + 164, 98, 84, 172, 98, 76, 172, 102, 84, 172, 106, 92, 164, 98, 76, + 164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 106, 84, 172, 102, 84, + 164, 98, 76, 156, 90, 68, 164, 98, 76, 164, 98, 76, 164, 98, 84, + 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 98, 84, 164, 102, 76, + 172, 102, 84, 164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 98, 76, + 164, 98, 76, 164, 102, 76, 164, 98, 76, 164, 98, 84, 172, 98, 84, + 164, 102, 84, 164, 102, 84, 164, 102, 84, 164, 106, 84, 172, 102, 84, + 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 92, 164, 98, 84, + 164, 102, 92, 156, 98, 84, 132, 74, 60, 116, 62, 52, 116, 58, 44, + 148, 86, 68, 164, 94, 76, 164, 102, 84, 164, 102, 76, 164, 98, 76, + 164, 98, 76, 164, 102, 84, 164, 98, 76, 172, 106, 84, 172, 106, 84, + 172, 106, 92, 172, 110, 84, 172, 110, 92, 180, 110, 92, 180, 114, 92, + 180, 114, 92, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92, + 180, 110, 92, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 98, 84, + 180, 114, 92, 188, 122, 100, 180, 114, 92, 172, 102, 84, 180, 106, 92, + 188, 118, 100, 188, 122, 100, 172, 102, 84, 172, 106, 84, 180, 106, 84, + 180, 110, 84, 180, 110, 84, 180, 106, 92, 172, 102, 76, 172, 102, 84, + 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 114, 92, + 180, 114, 92, 180, 110, 84, 172, 106, 84, 172, 102, 76, 164, 98, 76, + 172, 102, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92, 172, 102, 84, + 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, + 172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84, 172, 106, 84, + 180, 110, 92, 180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84, + 180, 110, 84, 180, 114, 92, 180, 114, 92, 188, 114, 92, 180, 114, 92, + 180, 110, 92, 172, 110, 84, 172, 106, 84, 180, 114, 92, 180, 110, 92, + 180, 110, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84, + 172, 102, 76, 172, 102, 84, 172, 102, 84, 172, 106, 76, 164, 98, 76, + 164, 98, 76, 172, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 76, + 164, 98, 76, 172, 106, 84, 172, 102, 84, 164, 94, 68, 164, 94, 76, + 172, 102, 76, 172, 102, 76, 164, 102, 84, 172, 102, 76, 164, 98, 76, + 172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84, + 164, 102, 76, 172, 98, 76, 164, 102, 76, 172, 106, 84, 172, 102, 76, + 172, 102, 76, 172, 102, 84, 180, 110, 84, 180, 110, 84, 172, 102, 84, + 172, 102, 76, 172, 106, 84, 172, 106, 76, 172, 102, 76, 172, 102, 84, + 172, 106, 84, 180, 110, 84, 172, 106, 84, 180, 110, 84, 172, 102, 84, + 156, 90, 68, 164, 94, 68, 172, 110, 84, 180, 114, 92, 172, 102, 76, + 164, 94, 76, 164, 98, 76, 164, 102, 84, 172, 106, 84, 164, 102, 84, + 164, 98, 76, 164, 98, 84, 156, 94, 76, 164, 98, 76, 164, 98, 84, + 164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84, + 164, 94, 76, 164, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76, + 164, 98, 76, 172, 102, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76, + 164, 94, 76, 164, 98, 76, 172, 102, 84, 172, 102, 84, 164, 94, 76, + 156, 90, 68, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84, + 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84, + 164, 98, 76, 164, 98, 84, 172, 102, 84, 164, 102, 84, 172, 102, 84, + 164, 98, 84, 164, 102, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76, + 172, 98, 84, 164, 98, 76, 172, 98, 84, 164, 94, 76, 164, 98, 84, + 156, 98, 84, 124, 70, 60, 116, 58, 44, 116, 62, 44, 164, 98, 76, + 164, 102, 84, 172, 106, 84, 164, 98, 84, 164, 102, 84, 172, 102, 84, + 172, 106, 84, 164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 102, 84, + 172, 102, 84, 172, 106, 84, 172, 110, 84, 172, 110, 92, 180, 110, 92, + 172, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 92, + 180, 114, 92, 180, 106, 92, 164, 102, 84, 180, 106, 84, 180, 114, 100, + 188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 110, 92, 180, 118, 100, + 188, 118, 100, 188, 114, 92, 188, 118, 100, 188, 118, 92, 188, 118, 100, + 188, 114, 92, 188, 122, 100, 172, 106, 84, 172, 106, 84, 180, 110, 84, + 172, 110, 92, 180, 110, 84, 172, 106, 84, 172, 110, 84, 180, 110, 84, + 180, 114, 92, 172, 106, 84, 172, 102, 84, 172, 102, 76, 172, 106, 84, + 180, 110, 84, 180, 114, 92, 180, 114, 92, 180, 110, 84, 172, 110, 84, + 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84, + 172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92, + 180, 114, 92, 180, 114, 92, 180, 106, 84, 172, 106, 84, 172, 106, 84, + 180, 110, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 114, 92, + 180, 110, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84, + 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 76, 172, 106, 84, + 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84, + 172, 102, 76, 172, 106, 84, 180, 110, 84, 180, 106, 84, 172, 102, 76, + 172, 106, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 102, 84, + 164, 98, 76, 172, 106, 76, 172, 102, 84, 164, 98, 76, 172, 102, 76, + 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84, + 172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 98, 76, + 164, 102, 84, 180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 76, + 172, 106, 84, 172, 106, 84, 172, 98, 76, 172, 102, 76, 172, 106, 84, + 172, 106, 84, 172, 102, 84, 180, 110, 84, 172, 106, 84, 156, 94, 68, + 164, 90, 68, 172, 106, 84, 180, 110, 84, 164, 102, 84, 164, 98, 76, + 164, 98, 76, 164, 102, 84, 172, 106, 84, 164, 98, 84, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 172, 106, 84, 172, 106, 84, 164, 98, 76, + 164, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76, + 164, 98, 84, 172, 102, 84, 172, 98, 76, 164, 98, 76, 164, 94, 76, + 164, 98, 76, 172, 102, 84, 164, 98, 84, 164, 94, 76, 164, 94, 76, + 164, 94, 76, 164, 98, 84, 164, 98, 76, 164, 94, 76, 156, 86, 68, + 164, 94, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84, + 172, 102, 76, 164, 102, 84, 164, 102, 76, 172, 102, 84, 164, 102, 76, + 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 84, + 164, 102, 76, 164, 102, 84, 172, 98, 84, 164, 102, 84, 164, 98, 76, + 164, 102, 84, 156, 98, 76, 164, 98, 76, 164, 94, 76, 164, 98, 76, + 172, 98, 84, 172, 98, 84, 164, 90, 76, 172, 106, 92, 164, 106, 92, + 132, 70, 60, 116, 62, 44, 116, 58, 44, 164, 98, 84, 164, 98, 76, + 164, 98, 76, 156, 90, 68, 156, 90, 68, 164, 98, 76, 164, 102, 84, + 164, 98, 76, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 92, 172, 106, 84, 172, 110, 92, 172, 106, 84, 180, 110, 92, + 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 100, 180, 110, 92, + 172, 106, 84, 164, 98, 76, 180, 110, 92, 180, 110, 92, 180, 114, 92, + 188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 110, 92, 180, 110, 92, + 180, 114, 92, 188, 118, 92, 188, 118, 100, 180, 110, 84, 180, 110, 92, + 188, 118, 92, 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 92, + 180, 110, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84, 180, 110, 92, + 172, 106, 84, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, + 180, 110, 92, 180, 106, 84, 172, 110, 84, 180, 106, 84, 180, 110, 92, + 180, 110, 84, 180, 118, 100, 188, 114, 92, 180, 114, 92, 180, 110, 92, + 188, 122, 100, 188, 118, 92, 180, 114, 100, 180, 114, 84, 180, 110, 92, + 180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 84, 172, 110, 84, + 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92, 180, 110, 84, + 180, 110, 92, 164, 98, 76, 172, 102, 76, 172, 106, 84, 172, 102, 76, + 172, 102, 76, 172, 102, 76, 172, 106, 84, 180, 106, 84, 180, 110, 84, + 180, 110, 84, 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 172, 110, 84, 180, 114, 92, 180, 110, 92, 172, 106, 84, 180, 106, 84, + 180, 110, 84, 172, 102, 76, 172, 102, 76, 172, 102, 76, 164, 94, 76, + 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, + 180, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84, + 180, 110, 84, 180, 110, 92, 172, 106, 76, 172, 102, 84, 172, 106, 84, + 172, 106, 84, 172, 102, 76, 164, 102, 76, 180, 106, 84, 164, 98, 76, + 164, 102, 76, 180, 110, 84, 172, 110, 84, 164, 94, 76, 156, 94, 68, + 172, 102, 84, 172, 106, 84, 172, 106, 92, 164, 102, 84, 164, 98, 76, + 164, 102, 84, 172, 102, 84, 164, 98, 76, 164, 98, 84, 164, 102, 84, + 156, 90, 68, 164, 102, 84, 164, 102, 84, 156, 86, 68, 148, 86, 68, + 172, 102, 84, 172, 110, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, + 172, 102, 84, 164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76, + 164, 98, 76, 172, 98, 84, 164, 98, 76, 156, 90, 76, 164, 94, 76, + 172, 98, 76, 164, 98, 84, 164, 94, 76, 156, 90, 68, 148, 90, 68, + 156, 94, 76, 164, 94, 76, 164, 102, 84, 164, 102, 84, 164, 102, 84, + 164, 98, 76, 164, 98, 84, 172, 106, 84, 164, 102, 84, 172, 102, 84, + 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 102, 76, 164, 98, 84, + 164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 102, 84, 164, 102, 84, + 164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76, 164, 94, 84, + 164, 98, 84, 156, 94, 76, 164, 106, 92, 164, 102, 92, 124, 66, 52, + 116, 58, 44, 116, 58, 36, 164, 106, 92, 172, 106, 84, 164, 106, 84, + 172, 102, 84, 164, 102, 84, 164, 102, 84, 164, 102, 76, 164, 98, 84, + 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84, 172, 106, 92, + 172, 106, 84, 172, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92, + 172, 110, 92, 180, 110, 92, 188, 118, 92, 188, 118, 100, 180, 114, 100, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 188, 118, 100, 180, 114, 100, + 180, 114, 92, 180, 114, 92, 180, 110, 92, 172, 106, 84, 188, 118, 100, + 188, 118, 92, 188, 118, 100, 188, 118, 92, 188, 118, 92, 180, 114, 92, + 180, 106, 92, 180, 114, 92, 188, 118, 100, 180, 114, 100, 180, 110, 92, + 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92, + 172, 106, 84, 172, 106, 84, 180, 114, 92, 188, 122, 100, 188, 118, 100, + 180, 118, 92, 188, 114, 100, 180, 118, 92, 188, 118, 100, 188, 118, 100, + 188, 118, 100, 180, 114, 92, 180, 118, 92, 188, 118, 100, 188, 122, 100, + 188, 118, 100, 180, 114, 92, 188, 114, 92, 180, 114, 100, 180, 114, 92, + 180, 110, 92, 172, 106, 84, 188, 118, 92, 180, 114, 92, 172, 110, 84, + 172, 110, 84, 172, 110, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84, + 172, 110, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84, + 172, 102, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 180, 110, 84, 180, 114, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92, + 180, 110, 84, 172, 106, 84, 172, 106, 76, 172, 102, 84, 164, 102, 76, + 164, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76, + 172, 102, 84, 172, 106, 84, 180, 110, 84, 180, 110, 92, 172, 106, 84, + 172, 106, 84, 172, 102, 84, 180, 106, 84, 172, 106, 84, 180, 106, 92, + 172, 106, 84, 180, 106, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84, 172, 98, 76, + 164, 102, 76, 172, 110, 84, 180, 118, 92, 172, 106, 84, 172, 110, 84, + 172, 102, 84, 172, 102, 76, 164, 102, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 68, 164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 164, 98, 76, + 164, 98, 76, 156, 98, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76, + 164, 98, 84, 164, 106, 84, 164, 98, 76, 164, 98, 76, 156, 94, 76, + 156, 94, 76, 164, 94, 76, 164, 98, 76, 172, 102, 84, 164, 102, 84, + 164, 94, 76, 156, 98, 76, 164, 94, 76, 164, 98, 76, 164, 98, 76, + 164, 102, 76, 164, 94, 76, 156, 94, 76, 148, 86, 68, 164, 94, 76, + 164, 102, 84, 164, 102, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84, + 164, 94, 84, 164, 90, 76, 164, 94, 76, 164, 98, 84, 164, 98, 84, + 164, 94, 76, 164, 94, 76, 172, 102, 84, 164, 98, 76, 172, 98, 84, + 164, 98, 84, 172, 110, 92, 164, 102, 84, 124, 66, 52, 116, 58, 36, + 108, 46, 28, 180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 84, + 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, + 172, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 84, 172, 110, 92, + 180, 114, 92, 180, 118, 100, 180, 110, 92, 172, 106, 84, 180, 110, 92, + 180, 110, 92, 180, 114, 100, 188, 118, 100, 180, 114, 92, 180, 114, 92, + 180, 114, 100, 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92, + 180, 110, 92, 172, 106, 92, 180, 106, 84, 180, 114, 92, 180, 110, 92, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 92, + 180, 110, 92, 188, 118, 100, 180, 114, 92, 180, 110, 92, 172, 106, 84, + 180, 106, 92, 180, 110, 92, 180, 114, 92, 172, 106, 92, 172, 106, 84, + 180, 106, 92, 180, 114, 92, 188, 118, 100, 188, 118, 100, 180, 114, 92, + 180, 110, 92, 180, 114, 100, 188, 118, 100, 188, 118, 100, 180, 118, 100, + 188, 118, 100, 188, 118, 100, 188, 118, 100, 196, 126, 108, 188, 122, 100, + 188, 118, 100, 188, 118, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100, + 180, 114, 92, 188, 118, 100, 180, 118, 92, 180, 110, 84, 180, 110, 92, + 180, 114, 84, 180, 114, 92, 180, 110, 92, 180, 110, 84, 180, 110, 92, + 180, 110, 84, 180, 110, 92, 180, 110, 92, 188, 114, 84, 180, 110, 92, + 180, 110, 84, 188, 114, 92, 188, 114, 92, 180, 118, 92, 188, 118, 100, + 188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 118, 100, 180, 118, 92, + 180, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 102, 84, + 172, 102, 76, 172, 106, 84, 172, 106, 84, 172, 102, 84, 164, 102, 84, + 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84, + 164, 98, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84, 180, 110, 92, + 172, 106, 84, 172, 110, 92, 180, 106, 92, 172, 110, 92, 180, 110, 84, + 172, 114, 92, 180, 114, 92, 172, 110, 84, 172, 106, 84, 172, 106, 84, + 180, 114, 84, 180, 118, 92, 180, 110, 84, 172, 110, 84, 172, 110, 84, + 172, 106, 84, 164, 102, 76, 172, 102, 76, 164, 102, 76, 164, 102, 84, + 172, 102, 76, 164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 98, 76, + 164, 102, 84, 164, 102, 84, 172, 98, 76, 164, 98, 84, 164, 98, 76, + 164, 94, 76, 156, 94, 68, 164, 94, 76, 164, 98, 76, 164, 98, 76, + 164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76, + 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76, + 164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 102, 84, 164, 98, 84, + 164, 98, 76, 164, 94, 76, 156, 94, 68, 164, 102, 84, 172, 106, 84, + 172, 110, 92, 172, 102, 84, 164, 102, 76, 172, 102, 84, 164, 106, 84, + 164, 98, 84, 164, 98, 76, 164, 98, 84, 156, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 84, 164, 98, 84, 164, 94, 76, + 164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 98, 84, 164, 98, 84, + 164, 94, 76, 156, 94, 84, 156, 94, 76, 156, 94, 76, 156, 90, 76, + 164, 98, 84, 156, 90, 76, 116, 54, 36, 108, 46, 28, 116, 54, 36, + 172, 110, 92, 172, 110, 92, 180, 110, 92, 172, 110, 92, 172, 106, 84, + 172, 106, 92, 164, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 172, 110, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92, + 180, 114, 92, 180, 114, 92, 188, 114, 100, 180, 114, 92, 180, 110, 92, + 180, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 84, 180, 106, 92, + 172, 110, 84, 172, 106, 92, 180, 110, 84, 180, 110, 92, 180, 110, 92, + 180, 110, 84, 180, 110, 92, 180, 106, 84, 180, 106, 84, 180, 114, 92, + 180, 114, 100, 180, 114, 92, 172, 106, 92, 172, 106, 84, 172, 106, 84, + 172, 106, 92, 180, 110, 92, 172, 106, 84, 172, 102, 84, 172, 106, 84, + 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 110, 92, + 180, 114, 92, 188, 122, 100, 188, 118, 100, 188, 118, 100, 180, 114, 92, + 180, 114, 92, 180, 114, 92, 180, 110, 92, 172, 106, 92, 172, 106, 84, + 172, 106, 84, 172, 106, 92, 172, 106, 84, 180, 110, 92, 172, 110, 84, + 180, 114, 92, 180, 114, 92, 172, 110, 84, 172, 110, 84, 172, 110, 84, + 180, 110, 92, 180, 114, 84, 172, 110, 84, 172, 102, 84, 172, 106, 76, + 172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 106, 84, + 172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 92, 180, 110, 84, + 180, 110, 92, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84, + 172, 106, 84, 164, 102, 84, 172, 102, 76, 164, 102, 76, 172, 102, 84, + 172, 106, 76, 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 106, 84, + 180, 106, 84, 172, 106, 92, 172, 106, 84, 172, 102, 84, 172, 102, 84, + 172, 102, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92, + 180, 106, 84, 172, 106, 92, 172, 110, 84, 180, 110, 92, 180, 110, 92, + 172, 114, 92, 180, 110, 84, 172, 114, 92, 180, 110, 84, 172, 114, 92, + 180, 110, 92, 172, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84, + 164, 106, 84, 172, 106, 84, 164, 102, 84, 172, 106, 84, 164, 98, 76, + 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84, 164, 98, 76, + 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 156, 94, 76, + 156, 90, 76, 156, 94, 68, 156, 94, 76, 156, 94, 76, 164, 98, 76, + 164, 102, 84, 164, 102, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76, + 156, 94, 68, 156, 90, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76, + 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 156, 94, 76, 156, 86, 68, 156, 94, 68, 164, 98, 76, 164, 98, 76, + 156, 94, 76, 156, 90, 68, 156, 94, 76, 164, 94, 76, 156, 98, 76, + 164, 94, 76, 156, 98, 76, 164, 94, 76, 164, 98, 76, 156, 94, 76, + 164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 90, 76, + 156, 90, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 94, 76, + 164, 98, 84, 164, 94, 76, 164, 98, 84, 156, 94, 76, 164, 102, 84, + 156, 94, 76, 116, 58, 36, 116, 54, 36, 116, 58, 36, 180, 114, 100, + 180, 118, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, + 180, 110, 92, 172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92, + 180, 114, 92, 172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 100, + 180, 114, 92, 180, 114, 100, 188, 118, 100, 188, 118, 100, 188, 122, 100, + 196, 126, 108, 188, 122, 108, 196, 126, 100, 188, 122, 108, 188, 122, 100, + 188, 118, 100, 180, 118, 100, 188, 114, 100, 180, 118, 100, 188, 118, 100, + 188, 118, 100, 196, 126, 108, 188, 126, 100, 196, 126, 108, 188, 122, 100, + 180, 114, 100, 180, 114, 92, 188, 122, 100, 196, 122, 108, 196, 126, 108, + 196, 126, 100, 188, 118, 100, 180, 114, 100, 188, 114, 92, 180, 118, 100, + 188, 122, 100, 188, 118, 100, 188, 114, 100, 188, 118, 100, 188, 122, 100, + 196, 122, 108, 188, 126, 108, 188, 122, 100, 196, 126, 108, 196, 130, 108, + 196, 130, 116, 196, 130, 108, 196, 126, 108, 188, 118, 100, 180, 114, 100, + 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84, + 172, 106, 84, 180, 106, 92, 180, 114, 92, 180, 114, 92, 180, 118, 92, + 180, 118, 92, 180, 118, 92, 180, 118, 92, 188, 118, 92, 180, 118, 92, + 180, 118, 92, 188, 118, 100, 180, 114, 84, 180, 110, 92, 188, 114, 92, + 180, 110, 92, 188, 114, 92, 188, 118, 92, 188, 118, 100, 188, 118, 92, + 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84, + 180, 110, 92, 180, 110, 84, 180, 110, 84, 188, 118, 92, 180, 114, 92, + 180, 114, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, + 188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100, 188, 122, 108, + 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 114, 92, + 180, 114, 92, 180, 114, 100, 188, 114, 92, 180, 118, 100, 188, 118, 100, + 188, 118, 100, 188, 118, 100, 188, 122, 100, 180, 122, 100, 188, 118, 100, + 188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 180, 118, 92, + 172, 106, 84, 172, 110, 84, 172, 106, 84, 164, 102, 84, 172, 102, 76, + 164, 102, 76, 164, 102, 84, 172, 102, 76, 156, 94, 76, 164, 98, 76, + 164, 98, 76, 164, 102, 84, 164, 98, 76, 164, 102, 76, 164, 98, 76, + 156, 98, 76, 164, 98, 84, 164, 98, 76, 156, 94, 76, 164, 94, 68, + 156, 94, 76, 156, 94, 68, 164, 94, 76, 156, 94, 76, 164, 98, 76, + 164, 98, 84, 164, 98, 76, 156, 94, 76, 156, 90, 68, 156, 94, 76, + 156, 90, 68, 156, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76, + 156, 98, 76, 164, 98, 76, 164, 98, 84, 156, 98, 76, 156, 94, 68, + 164, 94, 76, 164, 98, 76, 164, 102, 84, 164, 102, 84, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 156, 94, 76, 156, 94, 68, + 156, 94, 76, 156, 94, 76, 156, 94, 76, 156, 94, 76, 156, 94, 68, + 156, 94, 76, 172, 98, 84, 164, 98, 84, 172, 98, 76, 164, 94, 84, + 172, 98, 84, 164, 98, 84, 164, 98, 84, 172, 98, 84, 164, 98, 84, + 164, 98, 84, 164, 106, 84, 164, 102, 84, 172, 110, 92, 164, 98, 84, + 124, 66, 44, 116, 58, 36, 116, 50, 36, 172, 106, 84, 164, 102, 84, + 172, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 102, 84, + 172, 102, 84, 164, 102, 84, 172, 106, 84, 164, 106, 84, 172, 102, 84, + 164, 102, 76, 172, 102, 84, 164, 102, 84, 172, 106, 84, 172, 102, 84, + 180, 106, 84, 172, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, + 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92, 180, 110, 92, + 172, 106, 84, 180, 110, 84, 172, 106, 84, 180, 110, 92, 180, 110, 92, + 180, 118, 92, 180, 114, 100, 180, 110, 92, 180, 110, 92, 180, 106, 92, + 172, 102, 84, 180, 114, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92, + 180, 110, 92, 180, 106, 92, 172, 106, 84, 172, 106, 84, 180, 106, 92, + 172, 110, 92, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 92, + 180, 110, 92, 180, 110, 92, 180, 110, 92, 188, 114, 100, 188, 122, 100, + 188, 118, 100, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 98, 76, + 172, 102, 84, 172, 102, 84, 164, 102, 84, 172, 98, 76, 164, 98, 84, + 172, 106, 84, 180, 106, 92, 180, 110, 92, 172, 106, 92, 172, 110, 84, + 172, 106, 84, 172, 110, 92, 172, 106, 84, 172, 110, 92, 180, 106, 84, + 172, 110, 92, 180, 110, 84, 172, 110, 92, 180, 110, 84, 180, 110, 92, + 180, 114, 92, 180, 114, 92, 188, 114, 92, 188, 114, 92, 180, 110, 92, + 180, 110, 92, 180, 110, 92, 180, 110, 84, 180, 110, 92, 172, 110, 84, + 172, 106, 84, 172, 106, 92, 172, 106, 84, 180, 106, 84, 172, 106, 84, + 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, + 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 100, + 180, 114, 92, 180, 110, 92, 180, 110, 92, 172, 102, 84, 172, 102, 84, + 172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 110, 84, 172, 110, 92, + 180, 110, 92, 172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92, + 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 102, 84, 172, 106, 92, + 164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 98, 84, 164, 102, 76, + 164, 98, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84, + 172, 102, 76, 164, 102, 84, 164, 98, 84, 164, 98, 84, 164, 98, 76, + 172, 102, 76, 164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 164, 94, 76, 164, 98, 76, 164, 94, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 164, 102, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76, 164, 98, 76, + 164, 98, 84, 172, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76, + 164, 98, 84, 164, 98, 76, 164, 94, 76, 164, 94, 76, 164, 94, 76, + 156, 94, 76, 164, 94, 68, 164, 94, 76, 164, 94, 76, 156, 94, 76, + 164, 94, 76, 164, 90, 76, 156, 94, 76, 164, 94, 76, 164, 94, 76, + 156, 94, 76, 164, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76, + 164, 102, 84, 164, 102, 84, 172, 106, 92, 156, 94, 76, 124, 62, 44, + 116, 50, 36, 108, 50, 28, 156, 86, 68, 156, 90, 68, 148, 86, 68, + 156, 90, 68, 148, 86, 68, 156, 90, 68, 156, 86, 68, 148, 90, 68, + 156, 90, 68, 156, 90, 76, 156, 94, 76, 156, 90, 68, 148, 86, 68, + 156, 86, 68, 156, 90, 68, 156, 90, 76, 148, 86, 68, 156, 86, 68, + 156, 90, 68, 164, 90, 76, 156, 90, 68, 156, 90, 76, 164, 90, 68, + 156, 90, 76, 164, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68, + 156, 90, 76, 156, 90, 68, 156, 90, 68, 156, 90, 68, 156, 86, 76, + 156, 86, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 90, 68, + 164, 90, 76, 164, 94, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68, + 156, 90, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, + 156, 90, 68, 156, 90, 68, 156, 90, 76, 164, 90, 68, 156, 90, 76, + 156, 90, 68, 148, 86, 68, 156, 86, 68, 164, 94, 76, 164, 94, 76, + 156, 90, 68, 156, 90, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, + 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, + 156, 90, 68, 164, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76, + 164, 94, 76, 156, 94, 68, 156, 90, 68, 156, 94, 68, 164, 94, 68, + 156, 86, 68, 156, 86, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68, + 164, 90, 76, 164, 90, 68, 164, 90, 76, 164, 94, 76, 156, 94, 68, + 164, 94, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68, 164, 94, 76, + 156, 90, 68, 156, 90, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68, + 156, 90, 68, 156, 90, 68, 164, 90, 68, 156, 90, 68, 156, 90, 76, + 156, 90, 68, 156, 90, 76, 164, 90, 68, 156, 90, 68, 156, 90, 76, + 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 86, 68, + 164, 90, 76, 156, 90, 68, 164, 90, 76, 156, 94, 68, 164, 94, 76, + 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 94, 76, + 156, 94, 76, 156, 90, 76, 148, 86, 68, 164, 98, 84, 164, 98, 76, + 164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76, + 156, 94, 76, 164, 94, 76, 156, 98, 76, 164, 98, 76, 164, 98, 76, + 164, 94, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76, 164, 98, 76, + 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, + 164, 98, 76, 156, 94, 76, 156, 94, 76, 156, 90, 68, 156, 94, 76, + 156, 94, 76, 164, 94, 76, 156, 98, 76, 164, 98, 76, 164, 98, 84, + 156, 94, 76, 156, 94, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76, + 164, 98, 76, 164, 94, 76, 156, 90, 76, 156, 90, 68, 156, 90, 68, + 156, 94, 76, 156, 90, 68, 156, 90, 68, 156, 90, 68, 148, 90, 68, + 156, 90, 68, 156, 90, 76, 156, 94, 68, 156, 90, 68, 156, 94, 76, + 156, 90, 68, 156, 94, 76, 156, 90, 68, 156, 94, 68, 156, 82, 68, + 156, 86, 76, 156, 90, 76, 156, 86, 76, 148, 86, 68, 156, 86, 68, + 156, 86, 76, 156, 90, 68, 156, 94, 76, 164, 94, 84, 164, 98, 84, + 156, 94, 76, 156, 98, 76, 148, 86, 68, 116, 54, 36, 108, 50, 28, + 108, 50, 36, 140, 78, 60, 140, 78, 60, 148, 78, 60, 140, 78, 60, + 140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60, 148, 82, 60, + 148, 82, 60, 148, 82, 60, 148, 78, 60, 140, 74, 52, 140, 74, 52, + 140, 78, 60, 148, 82, 60, 140, 70, 52, 140, 74, 52, 148, 74, 60, + 140, 78, 60, 148, 74, 60, 140, 74, 52, 140, 74, 52, 140, 78, 60, + 140, 74, 52, 148, 78, 60, 140, 74, 60, 148, 78, 60, 148, 74, 60, + 148, 78, 60, 148, 74, 60, 148, 78, 60, 140, 70, 52, 140, 70, 52, + 148, 74, 60, 140, 74, 60, 148, 78, 60, 148, 78, 68, 140, 78, 60, + 148, 78, 60, 140, 78, 60, 148, 78, 60, 148, 78, 60, 148, 74, 60, + 140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52, + 148, 74, 60, 148, 78, 60, 140, 78, 60, 148, 74, 60, 140, 74, 52, + 140, 70, 52, 140, 74, 52, 140, 78, 60, 148, 78, 60, 148, 78, 60, + 148, 78, 60, 148, 78, 60, 148, 82, 60, 140, 74, 52, 140, 74, 52, + 140, 78, 60, 140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52, + 140, 78, 60, 140, 82, 60, 148, 82, 60, 148, 86, 68, 148, 86, 60, + 140, 82, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 140, 70, 52, + 140, 70, 52, 140, 74, 52, 140, 70, 52, 140, 74, 52, 140, 70, 52, + 140, 74, 52, 140, 74, 52, 140, 78, 60, 148, 74, 60, 140, 74, 52, + 140, 74, 60, 140, 74, 52, 140, 74, 60, 140, 78, 60, 148, 78, 60, + 156, 82, 60, 148, 82, 68, 156, 82, 60, 148, 82, 68, 148, 82, 60, + 156, 82, 68, 148, 82, 60, 148, 82, 68, 148, 82, 60, 148, 82, 60, + 148, 82, 60, 148, 82, 68, 148, 78, 60, 156, 82, 60, 148, 82, 68, + 148, 82, 60, 156, 82, 60, 148, 82, 60, 156, 82, 68, 148, 82, 60, + 156, 86, 68, 148, 82, 60, 156, 82, 68, 148, 82, 60, 148, 82, 68, + 148, 82, 68, 148, 82, 68, 148, 86, 68, 148, 82, 68, 156, 86, 68, + 148, 82, 68, 148, 82, 60, 148, 82, 68, 140, 78, 60, 148, 78, 68, + 140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 78, 60, 140, 78, 60, + 148, 82, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60, + 140, 78, 60, 148, 78, 60, 148, 82, 60, 140, 78, 60, 148, 78, 60, + 140, 78, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 148, 78, 60, + 148, 82, 60, 140, 74, 52, 140, 78, 60, 148, 78, 60, 140, 78, 60, + 148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 78, 60, + 148, 78, 60, 140, 78, 60, 140, 78, 60, 148, 82, 60, 148, 82, 60, + 148, 78, 60, 140, 78, 60, 148, 86, 60, 148, 82, 68, 148, 82, 60, + 148, 82, 60, 140, 78, 60, 148, 82, 60, 148, 78, 60, 148, 78, 60, + 140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60, + 140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 82, 68, 148, 82, 68, + 148, 86, 68, 156, 82, 68, 148, 82, 68, 148, 82, 68, 148, 82, 68, + 148, 86, 68, 148, 82, 68, 148, 78, 60, 140, 82, 60, 140, 74, 60, + 140, 78, 60, 140, 74, 60, 116, 50, 36, 108, 50, 36, 108, 50, 28, + 108, 42, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 116, 46, 28, + 108, 42, 20, 116, 46, 28, 108, 42, 20, 108, 46, 28, 108, 46, 28, + 116, 46, 28, 108, 46, 20, 108, 42, 20, 100, 42, 20, 108, 42, 20, + 108, 42, 28, 108, 42, 20, 116, 46, 28, 116, 46, 28, 116, 46, 28, + 108, 42, 20, 108, 38, 20, 108, 42, 28, 116, 42, 28, 108, 42, 20, + 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 50, 28, 108, 46, 28, + 116, 46, 28, 108, 42, 20, 108, 42, 28, 116, 42, 28, 108, 46, 28, + 116, 46, 28, 116, 46, 28, 108, 46, 28, 116, 42, 28, 108, 42, 20, + 116, 46, 28, 108, 42, 20, 116, 46, 28, 108, 46, 28, 108, 42, 20, + 116, 42, 28, 108, 38, 20, 108, 42, 28, 116, 46, 28, 108, 46, 28, + 116, 46, 28, 108, 42, 20, 108, 42, 20, 116, 42, 28, 116, 46, 28, + 116, 50, 28, 116, 50, 28, 116, 50, 28, 116, 46, 28, 116, 46, 28, + 116, 46, 28, 116, 50, 28, 116, 46, 28, 116, 50, 36, 124, 50, 36, + 116, 50, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28, + 108, 46, 20, 108, 50, 28, 116, 50, 28, 116, 54, 28, 108, 46, 28, + 108, 46, 20, 108, 42, 20, 108, 42, 20, 116, 50, 28, 116, 46, 28, + 116, 46, 28, 116, 46, 28, 116, 46, 28, 108, 46, 28, 116, 46, 28, + 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 42, 28, + 116, 46, 28, 116, 46, 28, 116, 50, 28, 124, 50, 36, 124, 58, 36, + 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 44, 124, 58, 36, + 124, 58, 36, 124, 54, 36, 132, 62, 44, 124, 54, 36, 124, 58, 36, + 124, 58, 36, 124, 58, 36, 124, 54, 44, 124, 58, 36, 132, 62, 44, + 124, 54, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36, + 124, 54, 36, 124, 58, 36, 124, 58, 36, 124, 58, 44, 124, 58, 36, + 124, 58, 44, 124, 54, 36, 124, 58, 44, 124, 58, 36, 124, 58, 44, + 124, 58, 44, 132, 62, 44, 124, 62, 44, 132, 62, 44, 124, 58, 44, + 124, 58, 44, 124, 58, 44, 132, 62, 44, 124, 62, 44, 132, 62, 44, + 124, 62, 44, 124, 62, 44, 124, 58, 36, 124, 58, 36, 124, 62, 44, + 124, 62, 44, 132, 62, 44, 116, 58, 36, 124, 58, 36, 124, 58, 44, + 124, 62, 44, 124, 62, 44, 124, 62, 44, 124, 62, 44, 124, 58, 36, + 124, 62, 44, 124, 58, 36, 124, 62, 44, 132, 62, 44, 124, 62, 44, + 132, 62, 44, 124, 66, 44, 132, 62, 44, 124, 62, 44, 124, 58, 36, + 124, 58, 36, 124, 62, 44, 132, 62, 44, 124, 62, 44, 124, 62, 44, + 124, 58, 36, 124, 62, 44, 124, 58, 36, 124, 58, 36, 124, 58, 44, + 124, 58, 36, 124, 58, 36, 116, 58, 36, 124, 58, 36, 124, 58, 36, + 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36, + 124, 58, 36, 124, 58, 36, 124, 50, 36, 124, 54, 36, 124, 54, 36, + 124, 54, 36, 116, 54, 36, 116, 50, 36, 124, 54, 36, 124, 54, 44, + 124, 54, 36, 116, 54, 36, 116, 54, 36, 108, 46, 28, 124, 58, 44, + 124, 58, 44, 100, 42, 20, 108, 50, 28 +}; diff --git a/hacks/glx/endgame.c b/hacks/glx/endgame.c new file mode 100644 index 0000000..ddba7f9 --- /dev/null +++ b/hacks/glx/endgame.c @@ -0,0 +1,971 @@ +/* + * endgame.c + * plays through a chess game ending. enjoy. + * + * version 1.0 - June 6, 2002 + * + * Copyright (C) 2002-2008 Blair Tennessy (tennessb@unbc.ca) + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_chess 0 +# define release_chess 0 +# include "xlockmore.h" + +#else +# include "xlock.h" +#endif + +#ifdef USE_GL + +#define BOARDSIZE 8 +#define WHITES 5 + +#include "gltrackball.h" +#include "chessmodels.h" +#include "chessgames.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define DEF_ROTATE "True" +#define DEF_REFLECTIONS "True" +#define DEF_SHADOWS "True" +#define DEF_SMOOTH "True" +#define DEF_CLASSIC "False" + + +static XrmOptionDescRec opts[] = { + {"+rotate", ".chess.rotate", XrmoptionNoArg, "false" }, + {"-rotate", ".chess.rotate", XrmoptionNoArg, "true" }, + {"+reflections", ".chess.reflections", XrmoptionNoArg, "false" }, + {"-reflections", ".chess.reflections", XrmoptionNoArg, "true" }, + {"+shadows", ".chess.shadows", XrmoptionNoArg, "false" }, + {"-shadows", ".chess.shadows", XrmoptionNoArg, "true" }, + {"+smooth", ".chess.smooth", XrmoptionNoArg, "false" }, + {"-smooth", ".chess.smooth", XrmoptionNoArg, "true" }, + {"+classic", ".chess.classic", XrmoptionNoArg, "false" }, + {"-classic", ".chess.classic", XrmoptionNoArg, "true" }, +}; + +static int rotate, reflections, smooth, shadows, classic; + +static argtype vars[] = { + {&rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool}, + {&reflections, "reflections", "Reflections", DEF_REFLECTIONS, t_Bool}, + {&shadows, "shadows", "Shadows", DEF_SHADOWS, t_Bool}, + {&smooth, "smooth", "Smooth", DEF_SMOOTH, t_Bool}, + {&classic, "classic", "Classic", DEF_CLASSIC, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt chess_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct chess_description = +{"chess", "init_chess", "draw_chess", NULL, + "draw_chess", "init_chess", NULL, &chess_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Chess", 0, NULL}; + +#endif + +#define checkImageWidth 16 +#define checkImageHeight 16 + +typedef struct { + GLXContext *glx_context; + Window window; + trackball_state *trackball; + Bool button_down_p; + + ChessGame game; + int oldwhite; + + /** definition of white/black (orange/gray) colors */ + GLfloat colors[2][3]; + + GLubyte checkImage[checkImageWidth][checkImageHeight][3]; + GLuint piecetexture, boardtexture; + + int mpiece, tpiece, steps, done; + double from[2], to[2]; + double dx, dz; + int moving, take, mc, count, wire; + double theta; + + GLfloat position[4]; + GLfloat position2[4]; + + GLfloat mod; + + GLfloat ground[4]; + + int oldgame; + + int poly_counts[PIECES]; /* polygon count of each type of piece */ + + +} Chesscreen; + +static Chesscreen *qs = NULL; + +static const GLfloat MaterialShadow[] = {0.0, 0.0, 0.0, 0.3}; + + +/* i prefer silvertip */ +static const GLfloat whites[WHITES][3] = + { + {1.0, 0.55, 0.1}, + {0.8, 0.52, 0.8}, + {0.43, 0.54, 0.76}, + {0.2, 0.2, 0.2}, + {0.35, 0.60, 0.35}, + }; + +static void build_colors(Chesscreen *cs) +{ + + /* find new white */ + int newwhite = cs->oldwhite; + while(newwhite == cs->oldwhite) + newwhite = random()%WHITES; + cs->oldwhite = newwhite; + + cs->colors[0][0] = whites[cs->oldwhite][0]; + cs->colors[0][1] = whites[cs->oldwhite][1]; + cs->colors[0][2] = whites[cs->oldwhite][2]; +} + +/* build piece texture */ +static void make_piece_texture(Chesscreen *cs) +{ + int i, j, c; + + for (i = 0; i < checkImageWidth; i++) { + for (j = 0; j < checkImageHeight; j++) { + c = ((j%2) == 0 || i%2 == 0) ? 240 : 180+random()%16; + cs->checkImage[i][j][0] = (GLubyte) c; + cs->checkImage[i][j][1] = (GLubyte) c; + cs->checkImage[i][j][2] = (GLubyte) c; + } + } + + glGenTextures(1, &cs->piecetexture); + glBindTexture(GL_TEXTURE_2D, cs->piecetexture); + + 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_REPEAT); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, + checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, + &cs->checkImage[0][0]); +} + +/* build board texture (uniform noise in [180,180+50]) */ +static void make_board_texture(Chesscreen *cs) +{ + int i, j, c; + + for (i = 0; i < checkImageWidth; i++) { + for (j = 0; j < checkImageHeight; j++) { + c = 180 + random()%51; + cs->checkImage[i][j][0] = (GLubyte) c; + cs->checkImage[i][j][1] = (GLubyte) c; + cs->checkImage[i][j][2] = (GLubyte) c; + } + } + + glGenTextures(1, &cs->boardtexture); + glBindTexture(GL_TEXTURE_2D, cs->boardtexture); + + 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_REPEAT); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, + checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, + &cs->checkImage[0][0]); +} + +/** handle X event (trackball) */ +ENTRYPOINT Bool chess_handle_event (ModeInfo *mi, XEvent *event) +{ + Chesscreen *cs = &qs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, cs->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &cs->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + cs->done = 1; + return True; + } + + return False; +} + +static const GLfloat diffuse2[] = {1.0, 1.0, 1.0, 1.0}; +/*static const GLfloat ambient2[] = {0.7, 0.7, 0.7, 1.0};*/ +static const GLfloat shininess[] = {60.0}; +static const GLfloat specular[] = {0.4, 0.4, 0.4, 1.0}; + +/* configure lighting */ +static void setup_lights(Chesscreen *cs) +{ + glEnable(GL_LIGHTING); + glLightfv(GL_LIGHT0, GL_POSITION, cs->position); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse2); + glEnable(GL_LIGHT0); + +/* glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient2); */ + + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular); + + glLightfv(GL_LIGHT1, GL_SPECULAR, diffuse2); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse2); + glEnable(GL_LIGHT1); +} + +/* draw pieces */ +static void drawPieces(ModeInfo *mi, Chesscreen *cs) +{ + int i, j; + + for(i = 0; i < BOARDSIZE; ++i) { + for(j = 0; j < BOARDSIZE; ++j) { + if(cs->game.board[i][j]) { + int c = cs->game.board[i][j]/PIECES; + glColor3fv(cs->colors[c]); + glCallList(cs->game.board[i][j]%PIECES); + mi->polygon_count += cs->poly_counts[cs->game.board[i][j]%PIECES]; + } + + glTranslatef(1.0, 0.0, 0.0); + } + + glTranslatef(-1.0*BOARDSIZE, 0.0, 1.0); + } + + glTranslatef(0.0, 0.0, -1.0*BOARDSIZE); +} + +/* draw pieces */ +static void drawPiecesShadow(ModeInfo *mi, Chesscreen *cs) +{ + int i, j; + + for(i = 0; i < BOARDSIZE; ++i) { + for(j = 0; j < BOARDSIZE; ++j) { + if(cs->game.board[i][j]) { + glColor4f(0.0, 0.0, 0.0, 0.4); + glCallList(cs->game.board[i][j]%PIECES); + mi->polygon_count += cs->poly_counts[cs->game.board[i][j]%PIECES]; + } + + glTranslatef(1.0, 0.0, 0.0); + } + + glTranslatef(-1.0*BOARDSIZE, 0.0, 1.0); + } + + glTranslatef(0.0, 0.0, -1.0*BOARDSIZE); +} + +/* draw a moving piece */ +static void drawMovingPiece(ModeInfo *mi, Chesscreen *cs, int shadow) +{ + int piece = cs->mpiece % PIECES; + + if (piece == NONE) return; + + glPushMatrix(); + + if(shadow) glColor4fv(MaterialShadow); + else glColor3fv(cs->colors[cs->mpiece/PIECES]); + + /** assume a queening. should be more general */ + if((cs->mpiece == PAWN && fabs(cs->to[0]) < 0.01) || + (cs->mpiece == BPAWN && fabs(cs->to[0]-7.0) < 0.01)) { + glTranslatef(cs->from[1]+cs->steps*cs->dx, 0.0, cs->from[0]+cs->steps*cs->dz); + + glColor4f(shadow ? MaterialShadow[0] : cs->colors[cs->mpiece/7][0], + shadow ? MaterialShadow[1] : cs->colors[cs->mpiece/7][1], + shadow ? MaterialShadow[2] : cs->colors[cs->mpiece/7][2], + (fabs(50.0-cs->steps))/50.0); + + piece = cs->steps < 50 ? PAWN : QUEEN; + + /* what a kludge */ + if(cs->steps == 99) + cs->mpiece = cs->mpiece == PAWN ? QUEEN : BQUEEN; + } + else if(cs->mpiece % PIECES == KNIGHT) { + /* If there is nothing in the path of a knight, move it by sliding, + just like the other pieces. But if there are any pieces on the + middle two squares in its path, the knight would intersect them, + so in that case, move it in an airborne arc. */ + GLfloat y; + int i, j; + Bool blocked_p = False; + int fromx = MIN(cs->from[1], cs->to[1]); + int fromy = MIN(cs->from[0], cs->to[0]); + int tox = MAX(cs->from[1], cs->to[1]); + int toy = MAX(cs->from[0], cs->to[0]); + if (fromx == tox-2) fromx = tox = fromx+1; + if (fromy == toy-2) fromy = toy = fromy+1; + for (i = fromy; i <= toy; i++) { + for (j = fromx; j <= tox; j++) { + if (cs->game.board[i][j]) { + blocked_p = True; + break; + } + } + } + + if (!blocked_p) + goto SLIDE; + + /* Move by hopping. */ + y = 1.5 * sin (M_PI * cs->steps / 100.0); + glTranslatef(cs->from[1]+cs->steps*cs->dx, y, + cs->from[0]+cs->steps*cs->dz); + + } else { + SLIDE: + /* Move by sliding. */ + glTranslatef(cs->from[1]+cs->steps*cs->dx, 0.0, cs->from[0]+cs->steps*cs->dz); + } + + + if(!cs->wire) + glEnable(GL_BLEND); + + glCallList(piece); + mi->polygon_count += cs->poly_counts[cs->mpiece % PIECES]; + + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular); + + glPopMatrix(); + + if(!cs->wire) + glDisable(GL_BLEND); +} + +/** code to squish a taken piece */ +static void drawTakePiece(ModeInfo *mi, Chesscreen *cs, int shadow) +{ + if(!cs->wire) + glEnable(GL_BLEND); + + glColor4f(shadow ? MaterialShadow[0] : cs->colors[cs->tpiece/7][0], + shadow ? MaterialShadow[1] : cs->colors[cs->tpiece/7][1], + shadow ? MaterialShadow[2] : cs->colors[cs->tpiece/7][2], + (100-1.6*cs->steps)/100.0); + + glTranslatef(cs->to[1], 0.0, cs->to[0]); + + if(cs->mpiece % PIECES == KNIGHT) + glScalef(1.0+cs->steps/100.0, 1.0, 1.0+cs->steps/100.0); + else + glScalef(1.0, 1 - cs->steps/50.0 > 0.01 ? 1 - cs->steps/50.0 : 0.01, 1.0); + glCallList(cs->tpiece % 7); + mi->polygon_count += cs->poly_counts[cs->tpiece % PIECES]; + + if(!cs->wire) + glDisable(GL_BLEND); +} + +/** draw board */ +static void drawBoard(ModeInfo *mi, Chesscreen *cs) +{ + int i, j; + + glBegin(GL_QUADS); + + for(i = 0; i < BOARDSIZE; ++i) + for(j = 0; j < BOARDSIZE; ++j) { + double ma1 = (i+j)%2 == 0 ? cs->mod*i : 0.0; + double mb1 = (i+j)%2 == 0 ? cs->mod*j : 0.0; + double ma2 = (i+j)%2 == 0 ? cs->mod*(i+1.0) : 0.01; + double mb2 = (i+j)%2 == 0 ? cs->mod*(j+1.0) : 0.01; + + /*glColor3fv(colors[(i+j)%2]);*/ + glColor4f(cs->colors[(i+j)%2][0], cs->colors[(i+j)%2][1], + cs->colors[(i+j)%2][2], 0.65); + + glNormal3f(0.0, 1.0, 0.0); +/* glTexCoord2f(mod*i, mod*(j+1.0)); */ + glTexCoord2f(ma1, mb2); + glVertex3f(i, 0.0, j + 1.0); +/* glTexCoord2f(mod*(i+1.0), mod*(j+1.0)); */ + glTexCoord2f(ma2, mb2); + glVertex3f(i + 1.0, 0.0, j + 1.0); + glTexCoord2f(ma2, mb1); +/* glTexCoord2f(mod*(i+1.0), mod*j); */ + glVertex3f(i + 1.0, 0.0, j); + glTexCoord2f(ma1, mb1); +/* glTexCoord2f(mod*i, mod*j); */ + glVertex3f(i, 0.0, j); + + mi->polygon_count++; + } + glEnd(); + + { + GLfloat off = 0.01; + GLfloat w = BOARDSIZE; + GLfloat h = 0.1; + + /* Give the board a slight lip. */ + /* #### oops, normals are wrong here, but you can't tell */ + + glColor3f(0.3, 0.3, 0.3); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, -h, w); + glVertex3f (0, 0, w); + + glVertex3f (0, 0, w); + glVertex3f (0, -h, w); + glVertex3f (w, -h, w); + glVertex3f (w, 0, w); + + glVertex3f (w, 0, w); + glVertex3f (w, -h, w); + glVertex3f (w, -h, 0); + glVertex3f (w, 0, 0); + + glVertex3f (w, 0, 0); + glVertex3f (w, -h, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, 0, 0); + + glVertex3f (0, -h, 0); + glVertex3f (w, -h, 0); + glVertex3f (w, -h, w); + glVertex3f (0, -h, w); + glEnd(); + mi->polygon_count += 4; + + /* Fill in the underside of the board with an invisible black box + to hide the reflections that are not on tiles. Probably there's + a way to do this with stencils instead. + */ + w -= off*2; + h = 5; + + glPushMatrix(); + glTranslatef (off, 0, off); + glDisable(GL_LIGHTING); + glColor3f(0,0,0); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, -h, w); + glVertex3f (0, 0, w); + + glVertex3f (0, 0, w); + glVertex3f (0, -h, w); + glVertex3f (w, -h, w); + glVertex3f (w, 0, w); + + glVertex3f (w, 0, w); + glVertex3f (w, -h, w); + glVertex3f (w, -h, 0); + glVertex3f (w, 0, 0); + + glVertex3f (w, 0, 0); + glVertex3f (w, -h, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, 0, 0); + + glVertex3f (0, -h, 0); + glVertex3f (w, -h, 0); + glVertex3f (w, -h, w); + glVertex3f (0, -h, w); + glEnd(); + mi->polygon_count += 4; + glPopMatrix(); + if (!cs->wire) + glEnable(GL_LIGHTING); + } +} + +static void draw_pieces(ModeInfo *mi, Chesscreen *cs, int wire) +{ + if (!cs->wire) { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, cs->piecetexture); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + glColor4f(0.5, 0.5, 0.5, 1.0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow); + } + + drawPieces(mi, cs); + if(cs->moving) drawMovingPiece(mi, cs, 0); + if(cs->take) drawTakePiece(mi, cs, 0); + glDisable(GL_TEXTURE_2D); +} + +static void draw_shadow_pieces(ModeInfo *mi, Chesscreen *cs, int wire) +{ + if (!cs->wire) { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, cs->piecetexture); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + } + + /* use the stencil */ + glDisable(GL_LIGHTING); + glDisable(GL_COLOR_MATERIAL); + glDisable(GL_DEPTH_TEST); + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + + glClear(GL_STENCIL_BUFFER_BIT); + glColorMask(0,0,0,0); + glEnable(GL_STENCIL_TEST); + + glStencilFunc(GL_ALWAYS, 1, 0xFFFFFFFFL); + glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); + + + glPushMatrix(); + glTranslatef(0.0, 0.001, 0.0); + + /* draw the pieces */ + drawPiecesShadow(mi, cs); + if(cs->moving) drawMovingPiece(mi, cs, shadows); + if(cs->take) drawTakePiece(mi, cs, shadows); + + glPopMatrix(); + + + /* turn on drawing into colour buffer */ + glColorMask(1,1,1,1); + + /* programming with effect */ + glDisable(GL_LIGHTING); + glDisable(GL_COLOR_MATERIAL); + glDisable(GL_TEXTURE_2D); + + /* now draw the union of the shadows */ + + /* + + want to keep alpha values (alpha is involved in transition + effects of the active pieces). + + */ + glStencilFunc(GL_NOTEQUAL, 0, 0xFFFFFFFFL); + glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); + + glEnable(GL_BLEND); + + glColor4fv(MaterialShadow); + + /* draw the board generously to fill the shadows */ + glBegin(GL_QUADS); + + glVertex3f(-1.0, 0.0, -1.0); + glVertex3f(-1.0, 0.0, BOARDSIZE + 1.0); + glVertex3f(1.0 + BOARDSIZE, 0.0, BOARDSIZE + 1.0); + glVertex3f(1.0 + BOARDSIZE, 0.0, -1.0); + + glEnd(); + + glDisable(GL_STENCIL_TEST); + + /* "pop" attributes */ + glEnable(GL_TEXTURE_2D); + glEnable(GL_COLOR_MATERIAL); + glEnable(GL_LIGHTING); + glEnable(GL_CULL_FACE); + + + +} + +enum {X, Y, Z, W}; +enum {A, B, C, D}; + +/* create a matrix that will project the desired shadow */ +static void shadowmatrix(GLfloat shadowMat[4][4], + GLfloat groundplane[4], + GLfloat lightpos[4]) +{ + GLfloat dot; + + /* find dot product between light position vector and ground plane normal */ + dot = groundplane[X] * lightpos[X] + + groundplane[Y] * lightpos[Y] + + groundplane[Z] * lightpos[Z] + + groundplane[W] * lightpos[W]; + + shadowMat[0][0] = dot - lightpos[X] * groundplane[X]; + shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y]; + shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z]; + shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W]; + + shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X]; + shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y]; + shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z]; + shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W]; + + shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X]; + shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y]; + shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z]; + shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W]; + + shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X]; + shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y]; + shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z]; + shadowMat[3][3] = dot - lightpos[W] * groundplane[W]; +} + +/** reflectionboard */ +static void draw_reflections(ModeInfo *mi, Chesscreen *cs) +{ + int i, j; + + glEnable(GL_STENCIL_TEST); + glStencilFunc(GL_ALWAYS, 1, 1); + glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); + glColorMask(0,0,0,0); + glDisable(GL_CULL_FACE); + + glDisable(GL_DEPTH_TEST); + glBegin(GL_QUADS); + + /* only draw white squares */ + for(i = 0; i < BOARDSIZE; ++i) { + for(j = (BOARDSIZE+i) % 2; j < BOARDSIZE; j += 2) { + glVertex3f(i, 0.0, j + 1.0); + glVertex3f(i + 1.0, 0.0, j + 1.0); + glVertex3f(i + 1.0, 0.0, j); + glVertex3f(i, 0.0, j); + mi->polygon_count++; + } + } + glEnd(); + glEnable(GL_DEPTH_TEST); + + glColorMask(1, 1, 1, 1); + glStencilFunc(GL_EQUAL, 1, 1); + glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); + + glPushMatrix(); + glScalef(1.0, -1.0, 1.0); + glTranslatef(0.5, 0.0, 0.5); + + glLightfv(GL_LIGHT0, GL_POSITION, cs->position); + draw_pieces(mi, cs, cs->wire); + glPopMatrix(); + + glDisable(GL_STENCIL_TEST); + glLightfv(GL_LIGHT0, GL_POSITION, cs->position); + + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + glColorMask(1,1,1,1); +} + +/** draws the scene */ +static void display(ModeInfo *mi, Chesscreen *cs) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); + + mi->polygon_count = 0; + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glRotatef(current_device_rotation(), 0, 0, 1); + + /** setup perspectiv */ + glTranslatef(0.0, 0.0, -1.5*BOARDSIZE); + glRotatef(30.0, 1.0, 0.0, 0.0); + gltrackball_rotate (cs->trackball); + + if (rotate) + glRotatef(cs->theta*100, 0.0, 1.0, 0.0); + glTranslatef(-0.5*BOARDSIZE, 0.0, -0.5*BOARDSIZE); + +/* cs->position[0] = 4.0 + 1.0*-sin(cs->theta*100*M_PI/180.0); */ +/* cs->position[2] = 4.0 + 1.0* cos(cs->theta*100*M_PI/180.0); */ +/* cs->position[1] = 5.0; */ + + /* this is the lone light that the shadow matrix is generated from */ + cs->position[0] = 1.0; + cs->position[2] = 1.0; + cs->position[1] = 16.0; + + cs->position2[0] = 4.0 + 8.0*-sin(cs->theta*100*M_PI/180.0); + cs->position2[2] = 4.0 + 8.0* cos(cs->theta*100*M_PI/180.0); + + if (!cs->wire) { + glEnable(GL_LIGHTING); + glLightfv(GL_LIGHT0, GL_POSITION, cs->position); + glLightfv(GL_LIGHT1, GL_POSITION, cs->position2); + glEnable(GL_LIGHT0); + } + + /** draw board, pieces */ + if(!cs->wire) { + glEnable(GL_LIGHTING); + glEnable(GL_COLOR_MATERIAL); + + if(reflections && !cs->wire) { + draw_reflections(mi, cs); + glEnable(GL_BLEND); + } + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, cs->boardtexture); + drawBoard(mi, cs); + glDisable(GL_TEXTURE_2D); + + if(shadows) { + /* render shadows */ + GLfloat m[4][4]; + shadowmatrix(m, cs->ground, cs->position); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow); + glEnable(GL_BLEND); + glDisable(GL_LIGHTING); + glDisable(GL_DEPTH_TEST); + + /* display ant shadow */ + glPushMatrix(); + glTranslatef(0.0, 0.001, 0.0); + glMultMatrixf(m[0]); + glTranslatef(0.5, 0.01, 0.5); + draw_shadow_pieces(mi, cs, cs->wire); + glPopMatrix(); + + glEnable(GL_LIGHTING); + glDisable(GL_BLEND); + glEnable(GL_DEPTH_TEST); + } + + if(reflections) + glDisable(GL_BLEND); + } + else + drawBoard(mi, cs); + + glTranslatef(0.5, 0.0, 0.5); + draw_pieces(mi, cs, cs->wire); + + if(!cs->wire) { + glDisable(GL_COLOR_MATERIAL); + glDisable(GL_LIGHTING); + } + + if (!cs->button_down_p) + cs->theta += .002; +} + +/** reshape handler */ +ENTRYPOINT void reshape_chess(ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0,y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45, 1/h, 2.0, 30.0); + glMatrixMode(GL_MODELVIEW); +} + +/** initialization handler */ +ENTRYPOINT void init_chess(ModeInfo *mi) +{ + Chesscreen *cs; + int screen = MI_SCREEN(mi); + + MI_INIT(mi, qs); + + cs = &qs[screen]; + cs->window = MI_WINDOW(mi); + cs->wire = MI_IS_WIREFRAME(mi); + cs->trackball = gltrackball_init (False); + + cs->oldwhite = -1; + + cs->colors[0][0] = 1.0; + cs->colors[0][1] = 0.5; + cs->colors[0][2] = 0.0; + + cs->colors[1][0] = 0.6; + cs->colors[1][1] = 0.6; + cs->colors[1][2] = 0.6; + + cs->done = 1; + cs->count = 99; + cs->mod = 1.4; + +/* cs->position[0] = 0.0; */ +/* cs->position[1] = 5.0; */ +/* cs->position[2] = 5.0; */ +/* cs->position[3] = 1.0; */ + + cs->position[0] = 0.0; + cs->position[1] = 24.0; + cs->position[2] = 2.0; + cs->position[3] = 1.0; + + + cs->position2[0] = 5.0; + cs->position2[1] = 5.0; + cs->position2[2] = 5.0; + cs->position2[3] = 1.0; + + cs->ground[0] = 0.0; + cs->ground[1] = 1.0; + cs->ground[2] = 0.0; + cs->ground[3] = -0.00001; + + cs->oldgame = -1; + + + if((cs->glx_context = init_GL(mi))) + reshape_chess(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + else + MI_CLEARWINDOW(mi); + + if (!cs->wire) { + glDepthFunc(GL_LEQUAL); + glClearStencil(0); + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + + make_piece_texture(cs); + make_board_texture(cs); + } + chessmodels_gen_lists( classic, cs->poly_counts); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + cs->wire = 0; +# endif + + if(!cs->wire) { + setup_lights(cs); + glColorMaterial(GL_FRONT, GL_DIFFUSE); + glShadeModel(smooth ? GL_SMOOTH : GL_FLAT); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_DEPTH_TEST); + } + else + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); +} + +/** does dirty work drawing scene, moving pieces */ +ENTRYPOINT void draw_chess(ModeInfo *mi) +{ + Chesscreen *cs = &qs[MI_SCREEN(mi)]; + Window w = MI_WINDOW(mi); + Display *disp = MI_DISPLAY(mi); + + if(!cs->glx_context) + return; + + glXMakeCurrent(disp, w, *(cs->glx_context)); + + /** code for moving a piece */ + if(cs->moving && ++cs->steps == 100) { + cs->moving = cs->count = cs->steps = cs->take = 0; + cs->game.board[cs->game.moves[cs->mc][2]][cs->game.moves[cs->mc][3]] = cs->mpiece; + ++cs->mc; + + if(cs->mc == cs->game.movecount) { + cs->done = 1; + cs->mc = 0; + } + } + + if(++cs->count == 100) { + if(!cs->done) { + cs->mpiece = cs->game.board[cs->game.moves[cs->mc][0]][cs->game.moves[cs->mc][1]]; + cs->game.board[cs->game.moves[cs->mc][0]][cs->game.moves[cs->mc][1]] = NONE; + + if((cs->tpiece = cs->game.board[cs->game.moves[cs->mc][2]][cs->game.moves[cs->mc][3]])) { + cs->game.board[cs->game.moves[cs->mc][2]][cs->game.moves[cs->mc][3]] = NONE; + cs->take = 1; + } + + cs->from[0] = cs->game.moves[cs->mc][0]; + cs->from[1] = cs->game.moves[cs->mc][1]; + cs->to[0] = cs->game.moves[cs->mc][2]; + cs->to[1] = cs->game.moves[cs->mc][3]; + + cs->dz = (cs->to[0] - cs->from[0]) / 100; + cs->dx = (cs->to[1] - cs->from[1]) / 100; + cs->steps = 0; + cs->moving = 1; + } + else if(cs->done == 1) { + int newgame = cs->oldgame; + while(newgame == cs->oldgame) + newgame = random()%GAMES; + + /* mod the mod */ + cs->mod = 0.6 + (random()%20)/10.0; + + /* same old game */ + cs->oldgame = newgame; + cs->game = games[cs->oldgame]; + build_colors(cs); + cs->done = 2; + cs->count = 0; + } + else { + cs->done = 0; + cs->count = 0; + } + } + + /* set lighting */ + if(cs->done) { + glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, + cs->done == 1 ? 1.0+0.1*cs->count : 100.0/cs->count); + glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, + cs->done == 1 ? 1.0+0.1*cs->count : 100.0/cs->count); + glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.14); + glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.14); + } + + display(mi, cs); + + if(mi->fps_p) do_fps(mi); + glFinish(); + glXSwapBuffers(disp, w); +} + +XSCREENSAVER_MODULE_2 ("Endgame", endgame, chess) + +#endif diff --git a/hacks/glx/endgame.man b/hacks/glx/endgame.man new file mode 100644 index 0000000..93ca5c3 --- /dev/null +++ b/hacks/glx/endgame.man @@ -0,0 +1,72 @@ +.TH XScreenSaver 1 "5-May-2004" +.SH NAME +endgame \- endgame chess screensaver +.SH SYNOPSIS +.B endgame +[\-display \fIhost:display.screen\fP] +[\-window] +[\-root] +[\-install] +[\-visual \fIvisual\fP] +[\-delay \fImicroseconds\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +endgame replays a brilliant chess ending +.SH OPTIONS +.I endgame +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-shadows +Project pieces against the board with dark blend. +.TP 8 +.B \-reflections +Reflect pieces in light board squares. +.TP 8 +.B \-classic +Use the original low-polygon piece models. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH BUGS +It's not unknown for this and other OpenGL hacks to fail under hardware accelaration (UtahGLX) and take the X server with them. Texture images must be 16x16 or 32x32 or 64x64 etc. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 2002 by Blair Tennessy. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Blair Tennessy , 20-April-2002. + diff --git a/hacks/glx/energystream.c b/hacks/glx/energystream.c new file mode 100644 index 0000000..7221f0d --- /dev/null +++ b/hacks/glx/energystream.c @@ -0,0 +1,534 @@ +/* energystream, Copyright (c) 2016 Eugene Sandulenko + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Based on Public Domain code by konrad "yoghurt" zagorowicz + * for Tesla demo by Sunflower (http://www.pouet.net/prod.php?which=33) + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 30 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define release_stream 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "gltrackball.h" +#include "rotator.h" +#include + +#ifdef USE_GL /* whole file */ + +static float change_time = 0; +static float change_time1 = 25; +static float change_time2 = 40; +static float change_time3 = 60; + +#define DEF_STREAMS "16" + +#include +#include + +typedef struct timeval streamtime; + +#define GETSECS(t) ((t).tv_sec) +#define GETMSECS(t) ((t).tv_usec/1000) + +#define DEF_SPIN "False" +#define DEF_WANDER "False" +#define DEF_SPEED "1.0" + + +typedef struct { + float x, y, z; +} Vector; + +typedef struct { + Vector *flares; + int num_flares; + GLuint flare_tex; + float speed; +} flare_stream; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + time_t start_time; + + int num_streams; + flare_stream *streams; + +} stream_configuration; + +static stream_configuration *ess = NULL; + +static int num_streams; +static Bool do_spin; +static GLfloat global_speed; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-streams", ".streams", XrmoptionSepArg, 0 }, + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" } +}; + +static argtype vars[] = { + {&num_streams, "streams", "Streams", DEF_STREAMS, t_Int}, + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&global_speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt stream_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +static void gettime(streamtime *t) +{ +#ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(t, &tzp); +#else /* !GETTIMEOFDAY_TWO_ARGS */ + gettimeofday(t); +#endif /* !GETTIMEOFDAY_TWO_ARGS */ +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_stream (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode (GL_PROJECTION); + glLoadIdentity (); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode (GL_MODELVIEW); + glLoadIdentity (); + gluLookAt (0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear (GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +stream_handle_event (ModeInfo *mi, XEvent *event) +{ + stream_configuration *es = &ess[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, es->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &es->button_down_p)) + return True; + + return False; +} + +#define TEX_WIDTH 256 +#define TEX_HEIGHT 256 +#define COEFF 0.2 + +static GLuint gen_texture (void) +{ + int x, y, i; + float color; + GLuint tex; + + unsigned char *texture = (unsigned char *)calloc (TEX_WIDTH * TEX_HEIGHT, 4); + unsigned char *ptr = texture; + + float tint[3]; + for (i = 0; i < 3; i++) + tint[i] = 1.0 * random() / RAND_MAX; + + for (y = 0; y < TEX_HEIGHT; y++) { + for (x = 0; x < TEX_WIDTH; x++) { + color = 255 - sqrt((x - TEX_WIDTH / 2) * (x - TEX_WIDTH / 2) / COEFF + + (y - TEX_HEIGHT / 2) * (y - TEX_HEIGHT / 2) / COEFF); + + if (color < 0) + color = 0; + + for (i = 0; i < 3; i++) + ptr[i] = (unsigned char)(color * tint[i]); + ptr[3] = color ? 255 : 0; + + ptr += 4; + } + } + + glGenTextures (1, &tex); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture (GL_TEXTURE_2D, tex); +#endif /* HAVE_GLBINDTEXTURE */ + glPixelStorei (GL_UNPACK_ALIGNMENT, 4); + clear_gl_error (); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, TEX_WIDTH, TEX_HEIGHT, + 0, GL_RGBA, GL_UNSIGNED_BYTE, texture); + check_gl_error ("texture"); + + /* Texture parameters, LINEAR scaling for better texture quality */ + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + free (texture); + + return tex; +} + +static inline void vector_copy (Vector *a, Vector *b) +{ + a->x = b->x; + a->y = b->y; + a->z = b->z; +} + +/* a += b */ +static inline void vector_add (Vector *a, Vector *b) +{ + a->x += b->x; + a->y += b->y; + a->z += b->z; +} + +/* a -= b */ +static inline void vector_sub (Vector *a, Vector *b) +{ + a->x -= b->x; + a->y -= b->y; + a->z -= b->z; +} + +static void init_flare_stream (flare_stream *s, int num_flares, float bx, float by, float bz, float speed) +{ + int i; + + s->flares = (Vector *) calloc (num_flares, sizeof (Vector)); + s->num_flares = num_flares; + s->flare_tex = gen_texture(); + s->speed = speed; + + for (i = 0; i != s->num_flares; i++) + { + s->flares[i].x = -800.0f * random() / RAND_MAX - 1150 + bx; + s->flares[i].y = 10.0f * random() / RAND_MAX - 20 + by; + s->flares[i].z = 10.0f * random() / RAND_MAX - 20 + bz; + } +} + +static void render_flare_stream (flare_stream *s, float cur_time, Vector *vx, Vector *vy, float alpha) +{ + float fMultipler = 1; + int i; + + if (s->flare_tex == -1) + return; + if (!s->num_flares) + return; + + if (cur_time < change_time) + return; + + cur_time -= change_time; + + glColor4f (1.0, 1, 1, alpha); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture (GL_TEXTURE_2D, s->flare_tex); +#endif + + glBegin (GL_QUADS); + + if (cur_time + change_time > change_time1) + { + if (cur_time + change_time > change_time2) + { + fMultipler = 2.5; + } + else + fMultipler = 2; + } + + for (i = 0; i != s->num_flares; i++) + { + Vector flare_pos; + Vector cc; + + flare_pos.x = fmod (s->flares[i].x + cur_time * s->speed * fMultipler, 800) - 400; + flare_pos.y = s->flares[i].y + 2 * sin (cur_time * 7 + s->flares[i].x); + flare_pos.z = s->flares[i].z + 2 * cos (cur_time * 7 + i * 3.14); + + glTexCoord2f (0, 0); + vector_copy (&cc, &flare_pos); + vector_sub (&cc, vx); + vector_add (&cc, vy); + glVertex3fv ((float *)&cc); + + glTexCoord2f ( 1, 0 ); + vector_copy (&cc, &flare_pos); + vector_add (&cc, vx); + vector_add (&cc, vy); + glVertex3fv ((float *)&cc); + + glTexCoord2f ( 1, 1 ); + vector_copy (&cc, &flare_pos); + vector_add (&cc, vx); + vector_sub (&cc, vy); + glVertex3fv ((float *)&cc); + + glTexCoord2f ( 0, 1 ); + vector_copy (&cc, &flare_pos); + vector_sub (&cc, vx); + vector_sub (&cc, vy); + glVertex3fv ((float *)&cc); + } + + glEnd (); +} + +ENTRYPOINT void +init_stream (ModeInfo *mi) +{ + stream_configuration *es; + streamtime current_time; + + MI_INIT (mi, ess); + + es = &ess[MI_SCREEN(mi)]; + + es->glx_context = init_GL (mi); + + reshape_stream (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + gettime (¤t_time); + es->start_time = GETSECS(current_time) * 1000 + GETMSECS(current_time); + + es->num_streams = num_streams; + + es->streams = (flare_stream *) calloc (es->num_streams, sizeof(flare_stream)); + + init_flare_stream (&es->streams[0], 150, 0, 50, 0, 300); + init_flare_stream (&es->streams[1], 150, 0, 0, 0, 150); + init_flare_stream (&es->streams[2], 150, 0, 90, 60, 250); + init_flare_stream (&es->streams[3], 150, 0, -100, 30, 160); + init_flare_stream (&es->streams[4], 150, 0, 50, -100, 340); + init_flare_stream (&es->streams[5], 150, 0, -50, 50, 270 ); + init_flare_stream (&es->streams[6], 150, 0, 100, 50, 180); + init_flare_stream (&es->streams[7], 150, 0, -30, 90, 130); + + init_flare_stream (&es->streams[8], 150, 0, 150, 10, 200); + init_flare_stream (&es->streams[9], 150, 0, 100, -100, 210); + init_flare_stream (&es->streams[10], 150, 0, 190, 160, 220); + init_flare_stream (&es->streams[11], 150, 0, -200, 130, 230); + init_flare_stream (&es->streams[12], 150, 0, 150, -200, 240); + init_flare_stream (&es->streams[13], 150, 0, -150, 250, 160); + init_flare_stream (&es->streams[14], 150, 0, 200, 150, 230); + init_flare_stream (&es->streams[15], 150, 0, -130, 190, 250); + + { + double spin_speed = 0.5 * global_speed; + double wander_speed = 0.02 * global_speed; + double spin_accel = 1.1; + + es->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + es->trackball = gltrackball_init (True); + } +} + +ENTRYPOINT void +free_stream (ModeInfo * mi) +{ + stream_configuration *es = &ess[MI_SCREEN(mi)]; + int i; + + if (es->glx_context) { + glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *(es->glx_context)); + + for (i = 0; i < es->num_streams; i++) { + free (es->streams[i].flares); + glDeleteTextures (1, &es->streams[i].flare_tex); + } + + free (es->streams); + } +} + + +static void inverse_matrix (float m[16]) { + double a,b,c,d,e,f,g,h,i,j,k,l; + register double dW; + + a = m[ 0]; b = m[ 1]; c = m[ 2]; + d = m[ 4]; e = m[ 5]; f = m[ 6]; + g = m[ 8]; h = m[ 9]; i = m[10]; + j = m[12]; k = m[13]; l = m[14]; + + dW = 1.0 / (a * (e * i - f * h) + - (b * (d * i - f * g) + + c * (e * g - d * h))); + + m[ 0]= (float)((e * i - f * h) * dW); + m[ 1]= (float)((c * h - b * i) * dW); + m[ 2]= (float)((b * f - c * e) * dW); + + m[ 4]= (float)((f * g - d * i) * dW); + m[ 5]= (float)((a * i - c * g) * dW); + m[ 6]= (float)((c * d - a * f) * dW); + + m[ 8]= (float)((d * h - e * g) * dW); + m[ 9]= (float)((b * g - a * h) * dW); + m[10]= (float)((a * e - b * d) * dW); + + m[12]= (float)((e * (g * l - i * j) + + f * (h * j - g * k) + - d * (h * l - i * k)) * dW); + m[13]= (float)((a * (h * l - i * k) + + b * (i * j - g * l) + + c * (g * k - h * j)) * dW); + m[14]= (float)((b * (d * l - f * j) + + c * (e * j - d * k) + - a * (e * l - f * k)) * dW); +} + +ENTRYPOINT void +draw_stream (ModeInfo *mi) +{ + stream_configuration *es = &ess[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + streamtime current_time; + float cur_time; + int i; + float alpha = 1.0; + Vector vx; + Vector vy; + GLfloat m[4*4]; + + if (!es->glx_context) + return; + + gettime (¤t_time); + + cur_time = (float)(GETSECS(current_time) * 1000 + GETMSECS(current_time) - es->start_time) / 1000.0; + cur_time *= global_speed; + + glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *(es->glx_context)); + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode (GL_PROJECTION); + glLoadIdentity (); + glFrustum (-.6f, .6f, -.45f, .45f, 1, 1000); + + glMatrixMode (GL_MODELVIEW); + glLoadIdentity (); + + glEnable (GL_LIGHTING); + glEnable (GL_TEXTURE_2D); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE); + glDisable (GL_CULL_FACE); + glDisable (GL_DEPTH_TEST); + glDepthMask (0); + + glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); + + glTranslatef (0, 0, -300); + glRotatef (cur_time * 30, 1, 0, 0); + glRotatef (30 * sin(cur_time / 3) + 10, 0, 0, 1); + + { + double x, y, z; + get_position (es->rot, &x, &y, &z, !es->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 15); + + gltrackball_rotate (es->trackball); + + get_rotation (es->rot, &x, &y, &z, !es->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + if (cur_time > change_time1) + { + if (cur_time > change_time2) + { + glRotatef (90, 0, 1, 0); + + if (cur_time > change_time3) + es->start_time = GETSECS(current_time) * 1000 + GETMSECS(current_time) - 5000; + } + else + { + glRotatef (180, 0, 1, 0); + } + } + + glEnable ( GL_FOG); + glFogf (GL_FOG_START, 200); + glFogf (GL_FOG_END, 500); + glFogf (GL_FOG_MODE, GL_LINEAR); + + glGetFloatv (GL_MODELVIEW_MATRIX, m); + + inverse_matrix (m); + + vx.x = m[0] * 10; + vx.y = m[1] * 10; + vx.z = m[2] * 10; + + vy.x = m[4] * 10; + vy.y = m[5] * 10; + vy.z = m[6] * 10; + + mi->polygon_count = 0; + + for (i = 0; i != es->num_streams; i++) + { + mi->polygon_count += es->streams[i].num_flares; + render_flare_stream (&es->streams[i], cur_time, &vx, &vy, alpha); + } + + glDisable (GL_TEXTURE_2D); + glDisable (GL_LIGHTING); + glDisable (GL_FOG); + glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers (dpy, window); +} + +XSCREENSAVER_MODULE_2("EnergyStream", energystream, stream) + +#endif /* USE_GL */ diff --git a/hacks/glx/energystream.man b/hacks/glx/energystream.man new file mode 100644 index 0000000..c2591f3 --- /dev/null +++ b/hacks/glx/energystream.man @@ -0,0 +1,56 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +energystream - a flow of particles which form an energy stream +.SH SYNOPSIS +.B energystream +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-no-wander] +[\-no-spin] +[\-fps] +.SH DESCRIPTION +Draws a set of flowing particles with camera flying around and through it. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-wander | \-no-wander +Whether the camera should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the camera should spin. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2016 by Eugene Sandulenko. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Eugene Sandulenko. diff --git a/hacks/glx/engine.c b/hacks/glx/engine.c new file mode 100644 index 0000000..0f39b8d --- /dev/null +++ b/hacks/glx/engine.c @@ -0,0 +1,1006 @@ +/* + * engine.c - GL representation of a 4 stroke engine + * + * version 2.00 + * + * Copyright (C) 2001 Ben Buxton (bb@cactii.net) + * modified by Ed Beroset (beroset@mindspring.com) + * new to 2.0 version is: + * - command line argument to specify number of cylinders + * - command line argument to specify included angle of engine + * - removed broken command line argument to specify rotation speed + * - included crankshaft shapes and firing orders for real engines + * verified using the Bosch _Automotive Handbook_, 5th edition, pp 402,403 + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + "*titleFont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \ + +# define free_engine 0 +# define release_engine 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#include "texfont.h" +#include "rotator.h" +#include "gltrackball.h" + +/* lifted from lament.c */ +#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n)))) +#define RANDSIGN() ((random() & 1) ? 1 : -1) + + +#ifdef USE_GL + +#define DEF_ENGINE "(none)" +#define DEF_TITLES "False" +#define DEF_SPIN "True" +#define DEF_MOVE "True" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +static char *which_engine; +static int move; +static int spin; +static Bool do_titles; + +static XrmOptionDescRec opts[] = { + {"-engine", ".engine.engine", XrmoptionSepArg, DEF_ENGINE }, + {"-move", ".engine.move", XrmoptionNoArg, "True" }, + {"+move", ".engine.move", XrmoptionNoArg, "False" }, + {"-spin", ".engine.spin", XrmoptionNoArg, "True" }, + {"+spin", ".engine.spin", XrmoptionNoArg, "False" }, + { "-titles", ".engine.titles", XrmoptionNoArg, "True" }, + { "+titles", ".engine.titles", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&which_engine, "engine", "Engine", DEF_ENGINE, t_String}, + {&move, "move", "Move", DEF_MOVE, t_Bool}, + {&spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_titles, "titles", "Titles", DEF_TITLES, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt engine_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct engine_description = +{"engine", "init_engine", "draw_engine", NULL, + "draw_engine", "init_engine", NULL, &engine_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "A four stroke engine", 0, NULL}; + +#endif + +/* these defines are used to provide symbolic means + * by which to refer to various portions or multiples + * of a cyle in degrees + */ +#define HALFREV 180 +#define ONEREV 360 +#define TWOREV 720 + +#define MOVE_MULT 0.05 + +#define RAND_RANGE(min, max) ((min) + (max - min) * f_rand()) + + +typedef struct { + GLXContext *glx_context; + Window window; + GLfloat x, y, z; /* position */ + GLfloat dx, dy, dz; /* position */ + GLfloat an1, an2, an3; /* internal angle */ + GLfloat nx, ny, nz; /* spin vector */ + GLfloat a; /* spin angle */ + GLfloat da; /* spin speed */ + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + texture_font_data *font_data; + char *engine_name; + int engineType; + int movepaused; + + float crankOffset; + float crankWidth; + + int win_w, win_h; + + float sin_table[TWOREV]; + float cos_table[TWOREV]; + float tan_table[TWOREV]; + + GLfloat boom_red[4]; + GLfloat boom_lpos[4]; + GLfloat boom_d, boom_wd; + int boom_time; + + GLfloat viewer[3], lookat[3]; + + int display_a; + GLfloat ln[730], yp[730], ang[730]; + int ln_init; + int lastPlug; + + GLuint shaft_list, piston_list; + int shaft_polys, piston_polys; + +} Engine; + +static Engine *engine = NULL; + +static const GLfloat lightpos[] = {7.0, 7.0, 12, 1.0}; +static const GLfloat light_sp[] = {0.8, 0.8, 0.8, 0.5}; +static const GLfloat red[] = {1.0, 0, 0, 1.0}; +static const GLfloat green[] = {0.0, 1, 0, 1.0}; +static const GLfloat blue[] = {0, 0, 1, 1.0}; +static const GLfloat white[] = {1.0, 1, 1, 1.0}; +static const GLfloat yellow_t[] = {1, 1, 0, 0.4}; + +static GLvoid normal(GLfloat [], GLfloat [], GLfloat [], + GLfloat *, GLfloat *, GLfloat *); + +/* + * this table represents both the firing order and included angle of engine. + * To simplify things, we always number from 0 starting at the flywheel and + * moving down the crankshaft toward the back of the engine. This doesn't + * always match manufacturer's schemes. For example, the Porsche 911 engine + * is a flat six with the following configuration (Porsche's numbering): + * + * 3 2 1 + * |= firing order is 1-6-2-4-3-5 in this diagram + * 6 5 4 + * + * We renumber these using our scheme but preserve the effective firing order: + * + * 0 2 4 + * |= firing order is 4-1-2-5-0-3 in this diagram + * 1 3 5 + * + * To avoid going completely insane, we also reorder these so the newly + * renumbered cylinder 0 is always first: 0-3-4-1-2-5 + * + * For a flat 6, the included angle is 180 degrees (0 would be a inline + * engine). Because these are all four-stroke engines, each piston goes + * through 720 degrees of rotation for each time the spark plug sparks, + * so in this case, we would use the following angles: + * + * cylinder firing order angle + * -------- ------------ ----- + * 0 0 0 + * 1 3 360 + * 2 4 240 + * 3 1 600 + * 4 2 480 + * 5 5 120 + * + */ + +typedef struct +{ + int cylinders; + int includedAngle; + int pistonAngle[12]; /* twelve cylinders should suffice... */ + int speed; /* step size in degrees for engine speed */ + const char *engineName; /* currently unused */ +} engine_type; + +static const engine_type engines[] = { + { 3, 0, { 0, 240, 480, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, 12, + "Honda Insight" }, + { 4, 0, { 0, 180, 540, 360, 0, 0, + 0, 0, 0, 0, 0, 0 }, 12, + "BMW M3" }, + { 4, 180, { 0, 360, 180, 540, 0, 0, + 0, 0, 0, 0, 0, 0 }, 12, + "VW Beetle" }, + { 5, 0, { 0, 576, 144, 432, 288, 0, + 0, 0, 0, 0, 0, 0 }, 12, + "Audi Quattro" }, + { 6, 0, { 0, 240, 480, 120, 600, 360, + 0, 0, 0, 0, 0, 0 }, 12, + "BMW M5" }, + { 6, 90, { 0, 360, 480, 120, 240, 600, + 0, 0, 0, 0, 0, 0 }, 12, + "Subaru XT" }, + { 6, 180, { 0, 360, 240, 600, 480, 120, + 0, 0, 0, 0, 0, 0 }, 12, + "Porsche 911" }, + { 8, 90, { 0, 450, 90, 180, 270, 360, + 540, 630, 0, 0, 0, 0 }, 15, + "Corvette Z06" }, + {10, 90, { 0, 72, 432, 504, 288, 360, + 144, 216, 576, 648, 0, 0 }, 12, + "Dodge Viper" }, + {12, 60, { 0, 300, 240, 540, 480, 60, + 120, 420, 600, 180, 360, 660 }, 12, + "Jaguar XKE" }, +}; + +/* this define is just a little shorter way of referring to members of the + * table above + */ +#define ENG engines[e->engineType] + +/* given a number of cylinders and an included angle, finds matching engine */ +static int +find_engine(char *name) +{ + unsigned int i; + char *s; + + if (!name || !*name || !strcasecmp (name, "(none)")) + return (random() % countof(engines)); + + for (s = name; *s; s++) + if (*s == '-' || *s == '_') *s = ' '; + + for (i = 0; i < countof(engines); i++) { + if (!strcasecmp(name, engines[i].engineName)) + return i; + } + + fprintf (stderr, "%s: unknown engine type \"%s\"\n", progname, name); + fprintf (stderr, "%s: available models are:\n", progname); + for (i = 0; i < countof(engines); i++) { + fprintf (stderr, "\t %-13s (%d cylinders", + engines[i].engineName, engines[i].cylinders); + if (engines[i].includedAngle == 0) + fprintf (stderr, ")\n"); + else if (engines[i].includedAngle == 180) + fprintf (stderr, ", flat)\n"); + else + fprintf (stderr, ", V)\n"); + } + exit(1); +} + +/* we use trig tables to speed things up - 200 calls to sin() + in one frame can be a bit harsh.. +*/ + +static void make_tables(Engine *e) +{ + int i; + float f; + + f = ONEREV / (M_PI * 2); + for (i = 0 ; i < TWOREV ; i++) { + e->sin_table[i] = sin(i/f); + } + for (i = 0 ; i < TWOREV ; i++) { + e->cos_table[i] = cos(i/f); + } + for (i = 0 ; i < TWOREV ; i++) { + e->tan_table[i] = tan(i/f); + } +} + +/* if inner and outer are the same, we draw a cylinder, not a tube */ +/* for a tube, endcaps is 0 (none), 1 (left), 2 (right) or 3(both) */ +/* angle is how far around the axis to go (up to 360) */ + +static int cylinder (Engine *e, GLfloat x, GLfloat y, GLfloat z, + float length, float outer, float inner, int endcaps, int sang, int eang) +{ + int polys = 0; + int a; /* current angle around cylinder */ + int b = 0; /* previous */ + int angle, norm, step, sangle; + float z1, y1, z2, y2, ex=0; + float Z1, Y1, Z2, Y2, xl; + GLfloat y2c[TWOREV], z2c[TWOREV]; + int nsegs, tube = 0; + + glPushMatrix(); + nsegs = outer*(MAX(e->win_w, e->win_h)/200); + nsegs = MAX(nsegs, 6); + nsegs = MAX(nsegs, 40); + if (nsegs % 2) + nsegs += 1; + sangle = sang; + angle = eang; + z1 = e->cos_table[sangle]*outer+z; y1 = e->sin_table[sangle] * outer+y; + Z1 = e->cos_table[sangle] * inner+z; Y1 = e->sin_table[sangle]*inner+y ; + Z2 = z; + Y2 = y; + xl = x + length; + if (inner < outer && endcaps < 3) tube = 1; + step = ONEREV/nsegs; + + glBegin(GL_QUADS); + for (a = sangle ; a <= angle || b <= angle ; a+= step) { + y2=outer*(float)e->sin_table[a]+y; + z2=outer*(float)e->cos_table[a]+z; + if (endcaps) { + y2c[a] = y2; + z2c[a] = z2; /* cache for later */ + } + if (tube) { + Y2=inner*(float)e->sin_table[a]+y; + Z2=inner*(float)e->cos_table[a]+z; + } + glNormal3f(0, y1, z1); + glVertex3f(x,y1,z1); + glVertex3f(xl,y1,z1); + glNormal3f(0, y2, z2); + glVertex3f(xl,y2,z2); + glVertex3f(x,y2,z2); + polys++; + if (a == sangle && angle - sangle < ONEREV) { + if (tube) + glVertex3f(x, Y1, Z1); + else + glVertex3f(x, y, z); + glVertex3f(x, y1, z1); + glVertex3f(xl, y1, z1); + if (tube) + glVertex3f(xl, Z1, Z1); + else + glVertex3f(xl, y, z); + polys++; + } + if (tube) { + if (endcaps != 1) { + glNormal3f(-1, 0, 0); /* left end */ + glVertex3f(x, y1, z1); + glVertex3f(x, y2, z2); + glVertex3f(x, Y2, Z2); + glVertex3f(x, Y1, Z1); + polys++; + } + + glNormal3f(0, -Y1, -Z1); /* inner surface */ + glVertex3f(x, Y1, Z1); + glVertex3f(xl, Y1, Z1); + glNormal3f(0, -Y2, -Z2); + glVertex3f(xl, Y2, Z2); + glVertex3f(x, Y2, Z2); + polys++; + + if (endcaps != 2) { + glNormal3f(1, 0, 0); /* right end */ + glVertex3f(xl, y1, z1); + glVertex3f(xl, y2, z2); + glVertex3f(xl, Y2, Z2); + glVertex3f(xl, Y1, Z1); + polys++; + } + } + + z1=z2; y1=y2; + Z1=Z2; Y1=Y2; + b = a; + } + glEnd(); + + if (angle - sangle < ONEREV) { + GLfloat nx, ny, nz; + GLfloat v1[3], v2[3], v3[3]; + v1[0] = x; v1[1] = y; v1[2] = z; + v2[0] = x; v2[1] = y1; v2[2] = z1; + v3[0] = xl; v3[1] = y1; v3[2] = z1; + normal(&v2[0], &v1[0], &v3[0], &nx, &ny, &nz); + glBegin(GL_QUADS); + glNormal3f(nx, ny, nz); + glVertex3f(x, y, z); + glVertex3f(x, y1, z1); + glVertex3f(xl, y1, z1); + glVertex3f(xl, y, z); + polys++; + glEnd(); + } + if (endcaps) { + GLfloat end, start; + if (tube) { + if (endcaps == 1) { + end = 0; + start = 0; + } else if (endcaps == 2) { + start = end = length+0.01; + } else { + end = length+0.02; start = -0.01; + } + norm = (ex == length+0.01) ? -1 : 1; + } else { + end = length; + start = 0; + norm = -1; + } + + for(ex = start ; ex <= end ; ex += length) { + z1 = outer*e->cos_table[sangle]+z; + y1 = y+e->sin_table[sangle]*outer; + step = ONEREV/nsegs; + glBegin(GL_TRIANGLES); + b = 0; + for (a = sangle ; a <= angle || b <= angle; a+= step) { + glNormal3f(norm, 0, 0); + glVertex3f(x+ex,y, z); + glVertex3f(x+ex,y1,z1); + glVertex3f(x+ex,y2c[a],z2c[a]); + polys++; + y1 = y2c[a]; z1 = z2c[a]; + b = a; + } + if (!tube) norm = 1; + glEnd(); + } + } + glPopMatrix(); + return polys; +} + +/* this is just a convenience function to make a solid rod */ +static int rod (Engine *e, GLfloat x, GLfloat y, GLfloat z, float length, float diameter) +{ + return cylinder(e, x, y, z, length, diameter, diameter, 3, 0, ONEREV); +} + +static GLvoid normal(GLfloat v1[], GLfloat v2[], GLfloat v3[], + GLfloat *nx, GLfloat *ny, GLfloat *nz) +{ + GLfloat x, y, z, X, Y, Z; + + x = v2[0]-v1[0]; + y = v2[1]-v1[1]; + z = v2[2]-v1[2]; + X = v3[0]-v1[0]; + Y = v3[1]-v1[1]; + Z = v3[2]-v1[2]; + + *nx = Y*z - Z*y; + *ny = Z*x - X*z; + *nz = X*y - Y*x; + +} + + + +static int Rect(GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h, + GLfloat t) +{ + int polys = 0; + GLfloat yh; + GLfloat xw; + GLfloat zt; + + yh = y+h; xw = x+w; zt = z - t; + + glBegin(GL_QUADS); /* front */ + glNormal3f(0, 0, 1); + glVertex3f(x, y, z); + glVertex3f(x, yh, z); + glVertex3f(xw, yh, z); + glVertex3f(xw, y, z); + polys++; + /* back */ + glNormal3f(0, 0, -1); + glVertex3f(x, y, zt); + glVertex3f(x, yh, zt); + glVertex3f(xw, yh, zt); + glVertex3f(xw, y, zt); + polys++; + /* top */ + glNormal3f(0, 1, 0); + glVertex3f(x, yh, z); + glVertex3f(x, yh, zt); + glVertex3f(xw, yh, zt); + glVertex3f(xw, yh, z); + polys++; + /* bottom */ + glNormal3f(0, -1, 0); + glVertex3f(x, y, z); + glVertex3f(x, y, zt); + glVertex3f(xw, y, zt); + glVertex3f(xw, y, z); + polys++; + /* left */ + glNormal3f(-1, 0, 0); + glVertex3f(x, y, z); + glVertex3f(x, y, zt); + glVertex3f(x, yh, zt); + glVertex3f(x, yh, z); + polys++; + /* right */ + glNormal3f(1, 0, 0); + glVertex3f(xw, y, z); + glVertex3f(xw, y, zt); + glVertex3f(xw, yh, zt); + glVertex3f(xw, yh, z); + polys++; + glEnd(); + return polys; +} + +static int makepiston(Engine *e) +{ + int polys = 0; + GLfloat colour[] = {0.6, 0.6, 0.6, 1.0}; + + /* if (e->piston_list) glDeleteLists(1, e->piston_list); */ + if (! e->piston_list) e->piston_list = glGenLists(1); + glNewList(e->piston_list, GL_COMPILE); + glRotatef(90, 0, 0, 1); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, colour); + glMaterialfv(GL_FRONT, GL_SPECULAR, colour); + glMateriali(GL_FRONT, GL_SHININESS, 20); + polys += cylinder(e, 0, 0, 0, 2, 1, 0.7, 2, 0, ONEREV); /* body */ + colour[0] = colour[1] = colour[2] = 0.2; + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, colour); + polys += cylinder(e, 1.6, 0, 0, 0.1, 1.05, 1.05, 0, 0, ONEREV); /* ring */ + polys += cylinder(e, 1.8, 0, 0, 0.1, 1.05, 1.05, 0, 0, ONEREV); /* ring */ + glEndList(); + return polys; +} + +static int CrankBit(Engine *e, GLfloat x) +{ + int polys = 0; + polys += Rect(x, -1.4, 0.5, 0.2, 1.8, 1); + polys += cylinder(e, x, -0.5, 0, 0.2, 2, 2, 1, 60, 120); + return polys; +} + +static int boom(Engine *e, GLfloat x, GLfloat y, int s) +{ + int polys = 0; + int flameOut = 720/ENG.speed/ENG.cylinders; + + if (e->boom_time == 0 && s) { + e->boom_red[0] = e->boom_red[1] = 0; + e->boom_d = 0.05; + e->boom_time++; + glEnable(GL_LIGHT1); + } else if (e->boom_time == 0 && !s) { + return polys; + } else if (e->boom_time >= 8 && e->boom_time < flameOut && !s) { + e->boom_time++; + e->boom_red[0] -= 0.2; e->boom_red[1] -= 0.1; + e->boom_d-= 0.04; + } else if (e->boom_time >= flameOut) { + e->boom_time = 0; + glDisable(GL_LIGHT1); + return polys; + } else { + e->boom_red[0] += 0.2; e->boom_red[1] += 0.1; + e->boom_d += 0.04; + e->boom_time++; + } + e->boom_lpos[0] = x-e->boom_d; e->boom_lpos[1] = y; + glLightfv(GL_LIGHT1, GL_POSITION, e->boom_lpos); + glLightfv(GL_LIGHT1, GL_DIFFUSE, e->boom_red); + glLightfv(GL_LIGHT1, GL_SPECULAR, e->boom_red); + glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 1.3); + glLighti(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0); + + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, e->boom_red); + e->boom_wd = e->boom_d*3; + if (e->boom_wd > 0.7) e->boom_wd = 0.7; + glEnable(GL_BLEND); + glDepthMask(GL_FALSE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + polys += rod(e, x, y, 0, e->boom_d, e->boom_wd); + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + return polys; +} + +static int display(ModeInfo *mi) +{ + Engine *e = &engine[MI_SCREEN(mi)]; + int polys = 0; + GLfloat zb, yb; + float rightSide; + int half; + int sides; + int j, b; + + glEnable(GL_LIGHTING); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + gluLookAt(e->viewer[0], e->viewer[1], e->viewer[2], + e->lookat[0], e->lookat[1], e->lookat[2], + 0.0, 1.0, 0.0); + glPushMatrix(); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glLightfv(GL_LIGHT0, GL_POSITION, lightpos); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_sp); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_sp); + + if (move) { + double x, y, z; + get_position (e->rot, &x, &y, &z, !e->button_down_p); + glTranslatef(x*16-9, y*14-7, z*16-10); + } + + if (spin) { + double x, y, z; + + gltrackball_rotate (e->trackball); + + get_rotation(e->rot, &x, &y, &z, !e->button_down_p); + glRotatef(x*ONEREV, 1.0, 0.0, 0.0); + glRotatef(y*ONEREV, 0.0, 1.0, 0.0); + glRotatef(x*ONEREV, 0.0, 0.0, 1.0); + } + +/* So the rotation appears around the centre of the engine */ + glTranslatef(-5, 0, 0); + +/* crankshaft */ + glPushMatrix(); + glRotatef(e->display_a, 1, 0, 0); + glCallList(e->shaft_list); + polys += e->shaft_polys; + glPopMatrix(); + + /* init the ln[] matrix for speed */ + if (e->ln_init == 0) { + for (e->ln_init = 0 ; e->ln_init < countof(e->sin_table) ; e->ln_init++) { + zb = e->sin_table[e->ln_init]; + yb = e->cos_table[e->ln_init]; + /* y ordinate of piston */ + e->yp[e->ln_init] = yb + sqrt(25 - (zb*zb)); + /* length of rod */ + e->ln[e->ln_init] = sqrt(zb*zb + (yb-e->yp[e->ln_init])*(yb-e->yp[e->ln_init])); + /* angle of connecting rod */ + e->ang[e->ln_init] = asin(zb/5)*57; + e->ang[e->ln_init] *= -1; + } + } + + glPushMatrix(); + sides = (ENG.includedAngle == 0) ? 1 : 2; + for (half = 0; half < sides; half++, glRotatef(ENG.includedAngle,1,0,0)) + { + /* pistons */ + /* glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white); */ + for (j = 0; j < ENG.cylinders; j += sides) + { + b = (e->display_a + ENG.pistonAngle[j+half]) % ONEREV; + glPushMatrix(); + glTranslatef(e->crankWidth/2 + e->crankOffset*(j+half), e->yp[b]-0.3, 0); + glCallList(e->piston_list); + polys += e->piston_polys; + glPopMatrix(); + } + /* spark plugs */ + glPushMatrix(); + glRotatef(90, 0, 0, 1); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); + for (j = 0; j < ENG.cylinders; j += sides) + { + polys += cylinder(e, 8.5, -e->crankWidth/2-e->crankOffset*(j+half), 0, + 0.5, 0.4, 0.3, 1, 0, ONEREV); + } + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white); + for (j = 0; j < ENG.cylinders; j += sides) + { + polys += rod(e, 8, -e->crankWidth/2-e->crankOffset*(j+half), 0, 0.5, 0.2); + polys += rod(e, 9, -e->crankWidth/2-e->crankOffset*(j+half), 0, 1, 0.15); + } + + /* rod */ + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); + for (j = 0; j < ENG.cylinders; j += sides) + { + b = (e->display_a+HALFREV+ENG.pistonAngle[j+half]) % TWOREV; + glPushMatrix(); + glRotatef(e->ang[b], 0, 1, 0); + polys += rod(e, + -e->cos_table[b], + -e->crankWidth/2-e->crankOffset*(j+half), + -e->sin_table[b], + e->ln[b], 0.2); + glPopMatrix(); + } + glPopMatrix(); + + /* engine block */ + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, yellow_t); + glEnable(GL_BLEND); + glDepthMask(GL_FALSE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + rightSide = (sides > 1) ? 0 : 1.6; + /* left plate */ + polys += Rect(-e->crankWidth/2, -0.5, 1, 0.2, 9, 2); + /* right plate */ + polys += Rect(0.3+e->crankOffset*ENG.cylinders-rightSide, -0.5, 1, 0.2, 9, 2); + /* head plate */ + polys += Rect(-e->crankWidth/2+0.2, 8.3, 1, + e->crankWidth/2+0.1+e->crankOffset*ENG.cylinders-rightSide, 0.2, 2); + /* front rail */ + polys += Rect(-e->crankWidth/2+0.2, 3, 1, + e->crankWidth/2+0.1+e->crankOffset*ENG.cylinders-rightSide, 0.2, 0.2); + /* back rail */ + polys += Rect(-e->crankWidth/2+0.2, 3, -1+0.2, + e->crankWidth/2+0.1+e->crankOffset*ENG.cylinders-rightSide, 0.2, 0.2); + /* plates between cylinders */ + for (j=0; j < ENG.cylinders - (sides == 1); j += sides) + polys += Rect(0.4+e->crankWidth+e->crankOffset*(j-half), 3, 1, 1, 5.3, 2); + glDepthMask(GL_TRUE); + } + glPopMatrix(); + + /* see which of our plugs should fire now, if any */ + for (j = 0; j < ENG.cylinders; j++) + { + if (0 == ((e->display_a + ENG.pistonAngle[j]) % TWOREV)) + { + glPushMatrix(); + if (j & 1) + glRotatef(ENG.includedAngle,1,0,0); + glRotatef(90, 0, 0, 1); + polys += boom(e, 8, -e->crankWidth/2-e->crankOffset*j, 1); + e->lastPlug = j; + glPopMatrix(); + } + } + + if (e->lastPlug != j) + { + /* this code causes the last plug explosion to dim gradually */ + if (e->lastPlug & 1) + glRotatef(ENG.includedAngle, 1, 0, 0); + glRotatef(90, 0, 0, 1); + polys += boom(e, 8, -e->crankWidth/2-e->crankOffset*e->lastPlug, 0); + } + glDisable(GL_BLEND); + + e->display_a += ENG.speed; + if (e->display_a >= TWOREV) + e->display_a = 0; + glPopMatrix(); + glFlush(); + return polys; +} + +static int makeshaft (Engine *e) +{ + int polys = 0; + int j; + float crankThick = 0.2; + float crankDiam = 0.3; + + /* if (e->shaft_list) glDeleteLists(1, e->shaft_list); */ + if (! e->shaft_list) e->shaft_list = glGenLists(1); + glNewList(e->shaft_list, GL_COMPILE); + + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); + /* draw the flywheel */ + polys += cylinder(e, -2.5, 0, 0, 1, 3, 2.5, 0, 0, ONEREV); + polys += Rect(-2, -0.3, 2.8, 0.5, 0.6, 5.6); + polys += Rect(-2, -2.8, 0.3, 0.5, 5.6, 0.6); + + /* now make each of the shaft bits between the cranks, + * starting from the flywheel end which is at X-coord 0. + * the first cranskhaft bit is always 2 units long + */ + polys += rod(e, -2, 0, 0, 2, crankDiam); + + /* Each crank is crankWidth units wide and the total width of a + * cylinder assembly is 3.3 units. For inline engines, there is just + * a single crank per cylinder width. For other engine + * configurations, there is a crank between each pair of adjacent + * cylinders on one side of the engine, so the crankOffset length is + * halved. + */ + e->crankOffset = 3.3; + if (ENG.includedAngle != 0) + e->crankOffset /= 2; + for (j = 0; j < ENG.cylinders - 1; j++) + polys += rod(e, + e->crankWidth - crankThick + e->crankOffset*j, 0, 0, + e->crankOffset - e->crankWidth + 2 * crankThick, crankDiam); + /* the last bit connects to the engine wall on the non-flywheel end */ + polys += rod(e, e->crankWidth - crankThick + e->crankOffset*j, 0, 0, 0.9, crankDiam); + + + for (j = 0; j < ENG.cylinders; j++) + { + glPushMatrix(); + if (j & 1) + glRotatef(HALFREV+ENG.pistonAngle[j]+ENG.includedAngle,1,0,0); + else + glRotatef(HALFREV+ENG.pistonAngle[j],1,0,0); + /* draw wrist pin */ + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); + polys += rod(e, e->crankOffset*j, -1.0, 0.0, e->crankWidth, crankDiam); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); + /* draw right part of crank */ + polys += CrankBit(e, e->crankOffset*j); + /* draw left part of crank */ + polys += CrankBit(e, e->crankWidth-crankThick+e->crankOffset*j); + glPopMatrix(); + } + glEndList(); + return polys; +} + + +ENTRYPOINT void reshape_engine(ModeInfo *mi, int width, int height) +{ + Engine *e = &engine[MI_SCREEN(mi)]; + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(40, 1/h, 1.5, 70.0); + glMatrixMode(GL_MODELVIEW); + e->win_h = height; + e->win_w = width; +} + + +ENTRYPOINT void init_engine(ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + Engine *e; + + MI_INIT(mi, engine); + e = &engine[screen]; + e->window = MI_WINDOW(mi); + + e->x = e->y = e->z = e->a = e->an1 = e->nx = e->ny = e->nz = + e->dx = e->dy = e->dz = e->da = 0; + + if (move) { + e->dx = (float)(random() % 1000)/30000; + e->dy = (float)(random() % 1000)/30000; + e->dz = (float)(random() % 1000)/30000; + } else { + e->viewer[0] = 0; e->viewer[1] = 2; e->viewer[2] = 18; + e->lookat[0] = 0; e->lookat[1] = 0; e->lookat[2] = 0; + + } + if (spin) { + e->da = (float)(random() % 1000)/125 - 4; + e->nx = (float)(random() % 100) / 100; + e->ny = (float)(random() % 100) / 100; + e->nz = (float)(random() % 100) / 100; + } + + { + double spin_speed = 0.5; + double wander_speed = 0.01; + + e->crankWidth = 1.5; + e->boom_red[3] = 0.9; + e->boom_lpos[3] = 1; + + e->viewer[2] = 30; + + e->rot = make_rotator (spin ? spin_speed : 0, + spin ? spin_speed : 0, + spin ? spin_speed : 0, + 1.0, + move ? wander_speed : 0, + True); + + e->trackball = gltrackball_init (True); + } + + if (!e->glx_context && /* re-initting breaks print_texture_label */ + (e->glx_context = init_GL(mi)) != NULL) { + reshape_engine(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glEnable(GL_DEPTH_TEST); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_NORMALIZE); + make_tables(e); + e->engineType = find_engine(which_engine); + + if (!e->engine_name) + e->engine_name = malloc(200); + sprintf (e->engine_name, + "%s\n%s%d%s", + engines[e->engineType].engineName, + (engines[e->engineType].includedAngle == 0 ? "" : + engines[e->engineType].includedAngle == 180 ? "Flat " : "V"), + engines[e->engineType].cylinders, + (engines[e->engineType].includedAngle == 0 ? " Cylinder" : "") + ); + + e->shaft_polys = makeshaft(e); + e->piston_polys = makepiston(e); + + if (!e->font_data) + e->font_data = load_texture_font (mi->dpy, "titleFont"); +} + +ENTRYPOINT Bool +engine_handle_event (ModeInfo *mi, XEvent *event) +{ + Engine *e = &engine[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) { + e->movepaused = 0; + } + + if (gltrackball_event_handler (event, e->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &e->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + which_engine = NULL; /* randomize */ + init_engine(mi); + return True; + } + + return False; +} + +ENTRYPOINT void draw_engine(ModeInfo *mi) +{ + Engine *e = &engine[MI_SCREEN(mi)]; + Window w = MI_WINDOW(mi); + Display *disp = MI_DISPLAY(mi); + + if (!e->glx_context) + return; + + glXMakeCurrent(disp, w, *(e->glx_context)); + + + mi->polygon_count = display(mi); + + glColor3f (1, 1, 0); + if (do_titles) + print_texture_label (mi->dpy, e->font_data, + mi->xgwa.width, mi->xgwa.height, + 1, e->engine_name); + + if(mi->fps_p) do_fps(mi); + glFinish(); + glXSwapBuffers(disp, w); +} + +XSCREENSAVER_MODULE ("Engine", engine) + +#endif diff --git a/hacks/glx/engine.man b/hacks/glx/engine.man new file mode 100644 index 0000000..af794e5 --- /dev/null +++ b/hacks/glx/engine.man @@ -0,0 +1,80 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +engine - draws a 3D four-stroke engine. +.SH SYNOPSIS +.B engine +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-engine \fIname\fP] +[\-delay \fInumber\fP] +[\-no-move] +[\-no-spin] +[\-no-title] +[\-fps] +.SH DESCRIPTION +Draws a simple four-stroke engine that floats around the screen. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-engine \fIname\fP +What kind of engine to draw. Default: random. +Known models are: +"Honda Insight" (3), +"BMW M3" (4), +"VW Beetle" (flat 4), +"Audi Quattro" (5), +"BMW M5" (6), +"Subaru XT" (V6), +"Porsche 911" (flat 6), +"Corvette Z06" (V8), +"Dodge Viper" (V10), +and +"Jaguar XKE" (V12). +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-move | \-no-move +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the object should spin. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-title | \-no-title +Whether to display the name of the engine being rendered. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Ben Buxton. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Ben Buxton. diff --git a/hacks/glx/erase-gl.c b/hacks/glx/erase-gl.c new file mode 100644 index 0000000..8515dd9 --- /dev/null +++ b/hacks/glx/erase-gl.c @@ -0,0 +1,38 @@ +/* Copyright (c) 2017 Dave Odell + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * xlockmore.c has references to erase_window, but it never calls these when + * running OpenGL hacks. Using this in place of regular utils/erase.c saves a + * tiny bit of code/disk space with a native X11 build, where everything is + * statically linked together. + * + * (Linux, amd64, CFLAGS='-O2 -g') + * Before: -rwxr-xr-x 1 david david 545848 Aug 9 20:42 hilbert + * After: -rwxr-xr-x 1 david david 519344 Aug 9 20:41 hilbert + * + * (Linux, amd64, CFLAGS=-O2) + * Before: -rwxr-xr-x 1 david david 150168 Aug 9 20:40 hilbert + * After: -rwxr-xr-x 1 david david 141256 Aug 9 20:39 hilbert + */ + +#include "utils.h" +#include "erase.h" + +void +eraser_free (eraser_state *st) +{ +} + + +eraser_state * +erase_window (Display *dpy, Window window, eraser_state *st) +{ + return st; +} diff --git a/hacks/glx/esper.c b/hacks/glx/esper.c new file mode 100644 index 0000000..7a0bb0b --- /dev/null +++ b/hacks/glx/esper.c @@ -0,0 +1,2412 @@ +/* esper, Copyright (c) 2017-2018 Jamie Zawinski + * Enhance 224 to 176. Pull out track right. Center in pull back. + * Pull back. Wait a minute. Go right. Stop. Enhance 57 19. Track 45 left. + * Gimme a hardcopy right there. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* + The Esper machine has a 4:3 display, about 12" diagonal. + The display is overlayed with a 10x7 grid of blue lines. + The scene goes approximately like this: + + "Enhance 224 To 176." + + ZM 0000 NS 0000 EW 0000 + + The reticle is displayed centered. + It moves in 8 steps with 3 frame blur to move to around to grid 1,4. + + ZM 0000 NS 0000 EW 0000 + ZM 0000 NS 0001 EW 0001 + ZM 0000 NS 0001 EW 0002 + ZM 0000 NS 0002 EW 0003 + ZM 0000 NS 0003 EW 0005 + ZM 0000 NS 0004 EW 0008 + ZM 0000 NS 0015 EW 0011 + + These numbers appear to have little relation to what we are + actually seeing on the screen. Also the same numbers are + repeated later when looking at totally different parts of + the photograph. + + ZM 0000 NS 0117 EW 0334 + + The box appears: 8 steps, final box is 1.5x2.25 at -0.5,4.0. + + ZM 4086 NS 0117 EW 0334 + + The box blinks yellow 5x. + The image's zoom-and-pan takes 8 steps, with no text on the screen. + The zoom is in discreet steps, with flashes. + The grid stays the same size the whole time. + The flashes look like solarization to blue. + When the zoom is finished, there is still no text. + + "Enhance." Goes 4 more ticks down the same hole? + "Stop." Moves up a little bit at the end. + + Then with no instructions, it goes 20 ticks by itself, off camera. + + "Move in." 10 ticks. + "Stop." (We are looking at a fist in the picture.) + "Pull out track right." + "Stop." (We are looking at a newspaper.) + "Center and pull back." + "Stop." (We just passed the round mirror.) + "Track 45 right." + "Stop." + "Center and stop." + + This time there was no grid until it stopped, then the grid showed up. + There is video tearing at the bottom. + + "Enhance 34 to 36." + + ZM 0000 NS 0063 EW 0185 + ZM 0000 NS 0197 EW 0334 + ZM 3841 NS 0197 EW 0334 + + It kind of zooms in to the center wobbly and willy-nilly. + We are now looking at a glass. + + "Pan right and pull back." (There is no grid while moving again.) + "Stop." + + Ok, at this point, we enter fantasy-land. From here on, the images + shown are very high resolution with no noise. And suddenly the + UI on the Esper is *way* higher resolution. My theory is that from + this point on in the scene, we are not looking at the literal Esper + machine, but instead the movie is presenting Decard's perception of + it. We're seeing the room, not the photo of the room. The map has + become the territory. + + "Enhance 34 to 46." + + ZM 0000 NS 0197 EW 0334 + + This has the reticle and box only, no grid, ends with no grid. + + "Pull back." + "Wait a minute. Go right." + "Stop." + Now it's going around the corner or something. + + "Enhance 57 19." + This has a reticle then box, but the image started zooming early. + + "Track 45 left." + zooms out and moves left + + "Stop." (O hai Zhora.) + "Enhance 15 to 23." + + ZM 3852 NS 0197 EW 0334 + + "Gimme a hardcopy right there." + + The printer polaroid is WAY lower resolution than the image we see on + the "screen" -- in keeping with my theory that we were not seeing the + screen. + + + TODO: + + * There's a glitch at the top/bottom of the texfont textures. + * "Pull back" isn't quite symmetric: zoom origin is slightly off. + * Maybe display text like "Pull right" and "Stop". +*/ + + +/* Use a small point size to keep it nice and grainy. */ +#if defined(HAVE_COCOA) || defined(HAVE_ANDROID) +# define TITLE_FONT "OCR A Std 10, Lucida Console 10, Monaco 10" +#elif 0 /* real X11, XQueryFont() */ +# define TITLE_FONT "-*-courier-bold-r-*-*-*-100-*-*-m-*-*-*" +#else /* real X11, load_font_retry() */ +# define TITLE_FONT "-*-ocr a std-medium-r-*-*-*-100-*-*-m-*-*-*" +#endif + +#define DEFAULTS "*delay: 20000 \n" \ + "*wireframe: False \n" \ + "*showFPS: False \n" \ + "*fpsTop: True \n" \ + "*useSHM: True \n" \ + "*titleFont: " TITLE_FONT "\n" \ + "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \ + "*grabDesktopImages: False \n" \ + "*chooseRandomImages: True \n" \ + "*gridColor: #4444FF\n" \ + "*reticleColor: #FFFF77\n" \ + "*textColor: #FFFFBB\n" \ + +# define free_esper 0 +# define refresh_esper 0 +# define release_esper 0 +# include "xlockmore.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +#ifdef USE_GL + +#undef SMOOTH + +# define DEF_GRID_SIZE "11" +# define DEF_GRID_THICKNESS "15" +# define DEF_TITLES "True" +# define DEF_SPEED "1.0" +# define DEF_DEBUG "False" + +#include "grab-ximage.h" +#include "texfont.h" + +#ifdef HAVE_XSHM_EXTENSION +# include "xshm.h" /* to get */ +#endif + + +typedef struct { + double x, y, w, h; +} rect; + +typedef struct { + ModeInfo *mi; + unsigned long id; /* unique */ + char *title; /* the filename of this image */ + int w, h; /* size in pixels of the image */ + int tw, th; /* size in pixels of the texture */ + XRectangle geom; /* where in the image the bits are */ + Bool loaded_p; /* whether the image has finished loading */ + Bool used_p; /* whether the image has yet appeared + on screen */ + GLuint texid; /* which texture contains the image */ + int refcount; /* how many sprites refer to this image */ +} image; + + +typedef enum { + BLANK, + GRID_ON, + IMAGE_LOAD, + IMAGE_UNLOAD, + IMAGE_FORCE_UNLOAD, + REPOSITION, + RETICLE_ON, + RETICLE_MOVE, + BOX_MOVE, + IMAGE_ZOOM, + MANUAL_RETICLE_ON, + MANUAL_RETICLE, + MANUAL_BOX_ON, + MANUAL_BOX, +} anim_state; + +typedef enum { NEW, IN, FULL, OUT, DEAD } sprite_state; +typedef enum { IMAGE, RETICLE, BOX, GRID, FLASH, TEXT } sprite_type; + +typedef struct { + unsigned long id; /* unique */ + sprite_type type; + image *img; /* type = IMAGE */ + unsigned long text_id; /* type = TEXT */ + char *text; + GLfloat opacity; + GLfloat thickness_scale; /* line and image types */ + Bool throb_p; + double start_time; /* when this animation began */ + double duration; /* lifetime of sprite in seconds; 0 = inf */ + double fade_duration; /* speed of fade in and fade out */ + double pause_duration; /* delay before fade-in starts */ + Bool remain_p; /* pause forever before fade-out */ + rect from, to, current; /* the journey this image is taking */ + sprite_state state; /* the state we're in right now */ + double state_time; /* time of last state change */ + int frame_count; /* frames since last state change */ + Bool fatbits_p; /* For image texture rendering */ + Bool back_p; /* If BOX, zooming out, not in */ +} sprite; + + +typedef struct { + GLXContext *glx_context; + int nimages; /* how many images are loaded or loading now */ + image *images[10]; /* pointers to the images */ + + int nsprites; /* how many sprites are animating right now */ + sprite *sprites[100]; /* pointers to the live sprites */ + + double now; /* current time in seconds */ + double dawn_of_time; /* when the program launched */ + double image_load_time; /* time when we last loaded a new image */ + + texture_font_data *font_data; + + int sprite_id, image_id; /* debugging id counters */ + + GLfloat grid_color[4], reticle_color[4], text_color[4]; + + anim_state anim_state; /* Counters for global animation state, */ + double anim_start, anim_duration; + + Bool button_down_p; + +} esper_state; + +static esper_state *sss = NULL; + + +/* Command-line arguments + */ +static int grid_size; +static int grid_thickness; + +static Bool do_titles; /* Display image titles. */ +static GLfloat speed; +static Bool debug_p; /* Be loud and do weird things. */ + + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-titles", ".titles", XrmoptionNoArg, "True" }, + { "-no-titles", ".titles", XrmoptionNoArg, "False" }, + { "-debug", ".debug", XrmoptionNoArg, "True" }, +}; + +static argtype vars[] = { + { &grid_size, "gridSize", "GridSize", DEF_GRID_SIZE, t_Int}, + { &grid_thickness,"gridThickness","GridThickness",DEF_GRID_THICKNESS, t_Int}, + { &do_titles, "titles", "Titles", DEF_TITLES, t_Bool}, + { &speed, "speed", "Speed", DEF_SPEED, t_Float}, + { &debug_p, "debug", "Debug", DEF_DEBUG, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt esper_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Returns the current time in seconds as a double. + */ +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + +static const char * +state_name (anim_state s) +{ + switch (s) { + case BLANK: return "BLANK"; + case GRID_ON: return "GRID_ON"; + case IMAGE_LOAD: return "IMAGE_LOAD"; + case IMAGE_UNLOAD: return "IMAGE_UNLOAD"; + case IMAGE_FORCE_UNLOAD: return "IMAGE_FORCE_UNLOAD"; + case REPOSITION: return "REPOSITION"; + case RETICLE_ON: return "RETICLE_ON"; + case RETICLE_MOVE: return "RETICLE_MOVE"; + case BOX_MOVE: return "BOX_MOVE"; + case IMAGE_ZOOM: return "IMAGE_ZOOM"; + case MANUAL_BOX_ON: return "MANUAL_BOX_ON"; + case MANUAL_BOX: return "MANUAL_BOX"; + case MANUAL_RETICLE_ON: return "MANUAL_RETICLE_ON"; + case MANUAL_RETICLE: return "MANUAL_RETICLE"; + default: return "UNKNOWN"; + } +} + + +static void image_loaded_cb (const char *filename, XRectangle *geom, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure); + + +/* Allocate an image structure and start a file loading in the background. + */ +static image * +alloc_image (ModeInfo *mi) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + image *img = (image *) calloc (1, sizeof (*img)); + + img->id = ++ss->image_id; + img->loaded_p = False; + img->used_p = False; + img->mi = mi; + + glGenTextures (1, &img->texid); + if (img->texid <= 0) abort(); + + ss->image_load_time = ss->now; + + if (wire) + image_loaded_cb (0, 0, 0, 0, 0, 0, img); + else + { + /* If possible, load images at much higher resolution than the window, + to facilitate deep zooms. + */ + int max_max = 4096; /* ~12 megapixels */ + int max = 0; + +# if defined(HAVE_XSHM_EXTENSION) && \ + !defined(HAVE_MOBILE) && \ + !defined(HAVE_COCOA) + + /* Try not to ask for an image larger than the SHM segment size. + If XSHM fails in a real-X11 world, it can take a staggeringly long + time to transfer the image bits from the server over Xproto -- like, + *18 seconds* for 4096 px and 8 seconds for 3072 px on MacOS XQuartz. + What madness is this? + */ + unsigned long shmmax = 0; + +# if defined(SHMMAX) + /* Linux 2.6 defines this to be 0x2000000, but on CentOS 6.9, + "sysctl kernel.shmmax" reports a luxurious 0x1000000000. */ + shmmax = SHMMAX; +# elif defined(__APPLE__) + /* MacOS 10.13 "sysctl kern.sysv.shmmax" is paltry: */ + shmmax = 0x400000; +# endif /* !SHMMAX */ + + if (shmmax) + { + /* Roughly, bytes => NxN. b = (n/8)*4n = n*n*4, so n^2 = 2b, so: */ + unsigned long n = sqrt(shmmax)/2; + if (n < max_max) + max_max = n; + } +# endif /* HAVE_XSHM_EXTENSION and real X11 */ + + glGetIntegerv (GL_MAX_TEXTURE_SIZE, &max); + if (max > max_max) max = max_max; + + /* Never ask for an image smaller than the window, even if that + will make XSHM fall back to Xproto. */ + if (max < MI_WIDTH(mi) || max < MI_HEIGHT(mi)) + max = 0; + + load_texture_async (mi->xgwa.screen, mi->window, *ss->glx_context, + max, max, False, img->texid, image_loaded_cb, img); + } + + ss->images[ss->nimages++] = img; + if (ss->nimages >= countof(ss->images)) abort(); + + return img; +} + + +/* Callback that tells us that the texture has been loaded. + */ +static void +image_loaded_cb (const char *filename, XRectangle *geom, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + image *img = (image *) closure; + ModeInfo *mi = img->mi; + int ow, oh; + /* esper_state *ss = &sss[MI_SCREEN(mi)]; */ + + int wire = MI_IS_WIREFRAME(mi); + + if (wire) + { + img->w = MI_WIDTH (mi) * (0.5 + frand (1.0)); + img->h = MI_HEIGHT (mi); + img->geom.width = img->w; + img->geom.height = img->h; + goto DONE; + } + + if (image_width == 0 || image_height == 0) + exit (1); + + img->w = image_width; + img->h = image_height; + img->tw = texture_width; + img->th = texture_height; + img->geom = *geom; + img->title = (filename ? strdup (filename) : 0); + + ow = img->geom.width; + oh = img->geom.height; + + /* If the image's width doesn't come back as the width of the screen, + then the image must have been scaled down (due to insufficient + texture memory.) Scale up the coordinates to stretch the image + to fill the window. + */ + if (img->w != MI_WIDTH(mi)) + { + double scale = (double) MI_WIDTH(mi) / img->w; + img->w *= scale; + img->h *= scale; + img->tw *= scale; + img->th *= scale; + img->geom.x *= scale; + img->geom.y *= scale; + img->geom.width *= scale; + img->geom.height *= scale; + } + + /* xscreensaver-getimage returns paths relative to the image directory + now, so leave the sub-directory part in. Unless it's an absolute path. + */ + if (img->title && img->title[0] == '/') + { + /* strip filename to part between last "/" and last ".". */ + char *s = strrchr (img->title, '/'); + if (s) strcpy (img->title, s+1); + s = strrchr (img->title, '.'); + if (s) *s = 0; + } + +# if !(__APPLE__ && TARGET_IPHONE_SIMULATOR || !defined(__OPTIMIZE__)) + if (debug_p) +# endif + fprintf (stderr, "%s: loaded %lu \"%s\" %dx%d\n", + progname, img->id, (img->title ? img->title : "(null)"), + ow, oh); + DONE: + + img->loaded_p = True; +} + + + +/* Free the image and texture, after nobody is referencing it. + */ +static void +destroy_image (ModeInfo *mi, image *img) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + Bool freed_p = False; + int i; + + if (!img) abort(); + if (!img->loaded_p) abort(); + if (!img->used_p) abort(); + if (img->texid <= 0) abort(); + if (img->refcount != 0) abort(); + + for (i = 0; i < ss->nimages; i++) /* unlink it from the list */ + if (ss->images[i] == img) + { + int j; + for (j = i; j < ss->nimages-1; j++) /* pull remainder forward */ + ss->images[j] = ss->images[j+1]; + ss->images[j] = 0; + ss->nimages--; + freed_p = True; + break; + } + + if (!freed_p) abort(); + + if (debug_p) + fprintf (stderr, "%s: unloaded img %2lu: \"%s\"\n", + progname, img->id, (img->title ? img->title : "(null)")); + + if (img->title) free (img->title); + glDeleteTextures (1, &img->texid); + free (img); +} + + +/* Return an image to use for a sprite. + If it's time for a new one, get a new one. + Otherwise, use an old one. + Might return 0 if the machine is really slow. + */ +static image * +get_image (ModeInfo *mi) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + image *img = 0; + image *loading_img = 0; + int i; + + for (i = 0; i < ss->nimages; i++) + { + image *img2 = ss->images[i]; + if (!img2) abort(); + if (!img2->loaded_p) + loading_img = img2; + else + img = img2; + } + + /* Make sure that there is always one unused image in the pipe. + */ + if (!img && !loading_img) + alloc_image (mi); + + return img; +} + + +/* Allocate a new sprite and start its animation going. + */ +static sprite * +new_sprite (ModeInfo *mi, sprite_type type) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + image *img = (type == IMAGE ? get_image (mi) : 0); + sprite *sp; + + if (type == IMAGE && !img) + { + /* Oops, no images yet! The machine is probably hurting bad. + Let's give it some time before thrashing again. */ + usleep (250000); + return 0; + } + + sp = (sprite *) calloc (1, sizeof (*sp)); + sp->id = ++ss->sprite_id; + sp->type = type; + sp->start_time = ss->now; + sp->state_time = sp->start_time; + sp->thickness_scale = 1; + sp->throb_p = True; + sp->to.x = 0.5; + sp->to.y = 0.5; + sp->to.w = 1.0; + sp->to.h = 1.0; + + if (img) + { + sp->img = img; + sp->img->refcount++; + sp->img->used_p = True; + sp->duration = 0; /* forever, until further notice */ + sp->fade_duration = 0.5; + + /* Scale the sprite so that the image bits fill the window. */ + { + double w = MI_WIDTH(mi); + double h = MI_HEIGHT(mi); + double r; + r = ((img->geom.height / (double) img->geom.width) * (w / h)); + if (r > 1) + sp->to.h *= r; + else + sp->to.w /= r; + } + + /* Pan to a random spot */ + if (sp->to.h > 1) + sp->to.y += frand ((sp->to.h - 1) / 2) * RANDSIGN(); + if (sp->to.w > 1) + sp->to.x += frand ((sp->to.w - 1) / 2) * RANDSIGN(); + } + + sp->from = sp->current = sp->to; + + ss->sprites[ss->nsprites++] = sp; + if (ss->nsprites >= countof(ss->sprites)) abort(); + + return sp; +} + + +static sprite * +copy_sprite (ModeInfo *mi, sprite *old) +{ + sprite *sp = new_sprite (mi, (sprite_type) ~0L); + int id; + double tt = sp->start_time; + if (!sp) abort(); + id = sp->id; + memcpy (sp, old, sizeof(*sp)); + sp->id = id; + sp->state = NEW; + sp->state_time = sp->start_time = tt; + if (sp->img) + sp->img->refcount++; + return sp; +} + + +/* Free the given sprite, and decrement the reference count on its image. + */ +static void +destroy_sprite (ModeInfo *mi, sprite *sp) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + Bool freed_p = False; + image *img; + int i; + + if (!sp) abort(); + if (sp->state != DEAD) abort(); + img = sp->img; + + if (sp->type != IMAGE) + { + if (img) abort(); + } + else + { + if (!img) abort(); + if (!img->loaded_p) abort(); + if (!img->used_p) abort(); + if (img->refcount <= 0) abort(); + } + + for (i = 0; i < ss->nsprites; i++) /* unlink it from the list */ + if (ss->sprites[i] == sp) + { + int j; + for (j = i; j < ss->nsprites-1; j++) /* pull remainder forward */ + ss->sprites[j] = ss->sprites[j+1]; + ss->sprites[j] = 0; + ss->nsprites--; + freed_p = True; + break; + } + + if (!freed_p) abort(); + if (sp->text) free (sp->text); + free (sp); + sp = 0; + + if (img) + { + img->refcount--; + if (img->refcount < 0) abort(); + if (img->refcount == 0) + destroy_image (mi, img); + } +} + + +/* Updates the sprite for the current frame of the animation based on + its creation time compared to the current wall clock. + */ +static void +tick_sprite (ModeInfo *mi, sprite *sp) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + image *img = sp->img; + double now = ss->now; + double secs; + double ratio; + GLfloat visible = sp->duration + sp->fade_duration * 2; + GLfloat total = sp->pause_duration + visible; + + if (sp->type != IMAGE) + { + if (sp->img) abort(); + } + else + { + if (! sp->img) abort(); + if (! img->loaded_p) abort(); + } + + /* pause fade duration fade + |------------|------------|---------|-----------| + ....----====##########====----.... + from current to + */ + + secs = now - sp->start_time; + ratio = (visible <= 0 ? 1 : ((secs - sp->pause_duration) / visible)); + if (ratio < 0) ratio = 0; + else if (ratio > 1) ratio = 1; + + sp->current.x = sp->from.x + ratio * (sp->to.x - sp->from.x); + sp->current.y = sp->from.y + ratio * (sp->to.y - sp->from.y); + sp->current.w = sp->from.w + ratio * (sp->to.w - sp->from.w); + sp->current.h = sp->from.h + ratio * (sp->to.h - sp->from.h); + + sp->thickness_scale = 1; + + if (secs < sp->pause_duration) + { + sp->state = IN; + sp->opacity = 0; + } + else if (secs < sp->pause_duration + sp->fade_duration) + { + sp->state = IN; + sp->opacity = (secs - sp->pause_duration) / (GLfloat) sp->fade_duration; + } + else if (sp->duration == 0 || /* 0 means infinite lifetime */ + sp->remain_p || + secs < sp->pause_duration + sp->fade_duration + sp->duration) + { + sp->state = FULL; + sp->opacity = 1; + + /* Just after reaching full opacity, pulse the width up and down. */ + if (sp->fade_duration > 0 && + secs < sp->pause_duration + sp->fade_duration * 2) + { + GLfloat f = ((secs - (sp->pause_duration + sp->fade_duration)) / + sp->fade_duration); + if (sp->throb_p) + sp->thickness_scale = 1 + 3 * (f > 0.5 ? 1-f : f); + } + } + else if (secs < total) + { + sp->state = OUT; + sp->opacity = (total - secs) / sp->fade_duration; + } + else + { + sp->state = DEAD; + sp->opacity = 0; + } + + sp->frame_count++; +} + + +/* Draw the given sprite at the phase of its animation dictated by + its creation time compared to the current wall clock. + */ +static void +draw_image_sprite (ModeInfo *mi, sprite *sp) +{ + /* esper_state *ss = &sss[MI_SCREEN(mi)]; */ + int wire = MI_IS_WIREFRAME(mi); + image *img = sp->img; + + if (! sp->img) abort(); + if (! img->loaded_p) abort(); + + glPushMatrix(); + { + GLfloat s = 1 + (sp->thickness_scale - 1) / 40.0; + glTranslatef (0.5, 0.5, 0); + glScalef (s, s, 1); + glTranslatef (-0.5, -0.5, 0); + + glTranslatef (sp->current.x, sp->current.y, 0); + glScalef (sp->current.w, sp->current.h, 1); + + glTranslatef (-0.5, -0.5, 0); + + if (wire) /* Draw a grid inside the box */ + { + GLfloat dy = 0.1; + GLfloat dx = dy * img->w / img->h; + GLfloat x, y; + + if (sp->id & 1) + glColor4f (sp->opacity, 0, 0, 1); + else + glColor4f (0, 0, sp->opacity, 1); + + glBegin(GL_LINES); + glVertex3f (0, 0, 0); glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); glVertex3f (0, 1, 0); + + for (y = 0; y < 1+dy; y += dy) + { + GLfloat yy = (y > 1 ? 1 : y); + for (x = 0.5; x < 1+dx; x += dx) + { + GLfloat xx = (x > 1 ? 1 : x); + glVertex3f (0, xx, 0); glVertex3f (1, xx, 0); + glVertex3f (yy, 0, 0); glVertex3f (yy, 1, 0); + } + for (x = 0.5; x > -dx; x -= dx) + { + GLfloat xx = (x < 0 ? 0 : x); + glVertex3f (0, xx, 0); glVertex3f (1, xx, 0); + glVertex3f (yy, 0, 0); glVertex3f (yy, 1, 0); + } + } + glEnd(); + } + else /* Draw the texture quad */ + { + GLfloat texw = img->geom.width / (GLfloat) img->tw; + GLfloat texh = img->geom.height / (GLfloat) img->th; + GLfloat texx1 = img->geom.x / (GLfloat) img->tw; + GLfloat texy1 = img->geom.y / (GLfloat) img->th; + GLfloat texx2 = texx1 + texw; + GLfloat texy2 = texy1 + texh; + GLfloat o = sp->opacity; + GLint mag = (sp->fatbits_p ? GL_NEAREST : GL_LINEAR); + + glBindTexture (GL_TEXTURE_2D, img->texid); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + + /* o = 1 - sin ((1 - o*o*o) * M_PI/2); */ + glColor4f (1, 1, 1, o); + + glNormal3f (0, 0, 1); + glBegin (GL_QUADS); + glTexCoord2f (texx1, texy2); glVertex3f (0, 0, 0); + glTexCoord2f (texx2, texy2); glVertex3f (1, 0, 0); + glTexCoord2f (texx2, texy1); glVertex3f (1, 1, 0); + glTexCoord2f (texx1, texy1); glVertex3f (0, 1, 0); + glEnd(); + + if (debug_p) /* Draw a border around the image */ + { + if (!wire) glDisable (GL_TEXTURE_2D); + glColor4f (sp->opacity, 0, 0, 1); + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (0, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); + glEnd(); + if (!wire) glEnable (GL_TEXTURE_2D); + } + } + } + glPopMatrix(); +} + + +static void +draw_line_sprite (ModeInfo *mi, sprite *sp) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int w = MI_WIDTH(mi); + int h = MI_HEIGHT(mi); + int wh = (w > h ? w : h); + int gs = (sp->type == RETICLE ? grid_size+1 : grid_size); + int sx = wh / (gs + 1); + int sy; + int k; + GLfloat t = grid_thickness * sp->thickness_scale; + int fade; + GLfloat color[4]; + + GLfloat x = w * sp->current.x; + GLfloat y = h * sp->current.y; + GLfloat bw = w * sp->current.w; + GLfloat bh = h * sp->current.h; + + if (MI_WIDTH(mi) > 2560) t *= 3; /* Retina displays */ + + if (sx < 10) sx = 10; + sy = sx; + + if (t > sx/3) t = sx/3; + if (t < 1) t = 1; + fade = t; + if (fade < 1) fade = 1; + + if (t <= 0 || sp->opacity <= 0) return; + + glPushMatrix(); + glLoadIdentity(); + + if (debug_p) + { + GLfloat s = 0.75; + glScalef (s, s, s); + } + + glOrtho (0, w, 0, h, -1, 1); + + switch (sp->type) { + case GRID: memcpy (color, ss->grid_color, sizeof(color)); break; + case RETICLE: memcpy (color, ss->reticle_color, sizeof(color)); break; + case BOX: memcpy (color, ss->reticle_color, sizeof(color)); break; + default: abort(); + } + + if (sp->type == GRID) + { + GLfloat s = 1 + (sp->thickness_scale - 1) / 120.0; + glTranslatef (w/2, h/2, 0); + glScalef (s, s, 1); + glTranslatef (-w/2, -h/2, 0); + } + + glColor4fv (color); + + if (!wire) glDisable (GL_TEXTURE_2D); + + for (k = 0; k < fade; k++) + { + GLfloat t2 = t * (1 - (k / (fade * 1.0))); + if (t2 <= 0) break; + color[3] = sp->opacity / fade; + glColor4fv (color); + + glBegin (wire ? GL_LINES : GL_QUADS); + + switch (sp->type) { + case GRID: + { + GLfloat xoff = (w - sx * (w / sx)) / 2.0; + GLfloat yoff = (h - sy * (h / sy)) / 2.0; + for (y = -sy/2+t2/2; y < h; y += sy) + for (x = -sx/2-t2/2; x < w; x += sx) + { + glVertex3f (xoff+x+t2, yoff+y, 0); + glVertex3f (xoff+x+t2, yoff+y+sy-t2, 0); + glVertex3f (xoff+x, yoff+y+sy-t2, 0); + glVertex3f (xoff+x, yoff+y, 0); + mi->polygon_count++; + + glVertex3f (xoff+x, yoff+y-t2, 0); + glVertex3f (xoff+x+sx, yoff+y-t2, 0); + glVertex3f (xoff+x+sx, yoff+y, 0); + glVertex3f (xoff+x, yoff+y, 0); + mi->polygon_count++; + } + } + break; + + case BOX: + glVertex3f (x-bw/2-t2/2, y-bh/2-t2/2, 0); + glVertex3f (x+bw/2+t2/2, y-bh/2-t2/2, 0); + glVertex3f (x+bw/2+t2/2, y-bh/2+t2/2, 0); + glVertex3f (x-bw/2-t2/2, y-bh/2+t2/2, 0); + mi->polygon_count++; + + glVertex3f (x-bw/2-t2/2, y+bh/2-t2/2, 0); + glVertex3f (x+bw/2+t2/2, y+bh/2-t2/2, 0); + glVertex3f (x+bw/2+t2/2, y+bh/2+t2/2, 0); + glVertex3f (x-bw/2-t2/2, y+bh/2+t2/2, 0); + mi->polygon_count++; + + glVertex3f (x-bw/2+t2/2, y-bh/2+t2/2, 0); + glVertex3f (x-bw/2+t2/2, y+bh/2-t2/2, 0); + glVertex3f (x-bw/2-t2/2, y+bh/2-t2/2, 0); + glVertex3f (x-bw/2-t2/2, y-bh/2+t2/2, 0); + mi->polygon_count++; + + glVertex3f (x+bw/2+t2/2, y-bh/2+t2/2, 0); + glVertex3f (x+bw/2+t2/2, y+bh/2-t2/2, 0); + glVertex3f (x+bw/2-t2/2, y+bh/2-t2/2, 0); + glVertex3f (x+bw/2-t2/2, y-bh/2+t2/2, 0); + mi->polygon_count++; + break; + + case RETICLE: + glVertex3f (x+t2/2, y+sy/2-t2/2, 0); + glVertex3f (x+t2/2, h, 0); + glVertex3f (x-t2/2, h, 0); + glVertex3f (x-t2/2, y+sy/2-t2/2, 0); + mi->polygon_count++; + + glVertex3f (x-t2/2, y-sy/2+t2/2, 0); + glVertex3f (x-t2/2, 0, 0); + glVertex3f (x+t2/2, 0, 0); + glVertex3f (x+t2/2, y-sy/2+t2/2, 0); + mi->polygon_count++; + + glVertex3f (x-sx/2+t2/2, y+t2/2, 0); + glVertex3f (0, y+t2/2, 0); + glVertex3f (0, y-t2/2, 0); + glVertex3f (x-sx/2+t2/2, y-t2/2, 0); + mi->polygon_count++; + + glVertex3f (x+sx/2-t2/2, y-t2/2, 0); + glVertex3f (w, y-t2/2, 0); + glVertex3f (w, y+t2/2, 0); + glVertex3f (x+sx/2-t2/2, y+t2/2, 0); + mi->polygon_count++; + break; + + default: abort(); + } + glEnd(); + } + + glPopMatrix(); + + if (!wire) glEnable (GL_TEXTURE_2D); +} + + +static sprite * find_newest_sprite (ModeInfo *, sprite_type); +static void compute_image_rect (rect *, sprite *, Bool); + +static void +draw_text_sprite (ModeInfo *mi, sprite *sp) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + GLfloat w = MI_WIDTH(mi); + GLfloat h = MI_HEIGHT(mi); + GLfloat s; + int x, y, z; + XCharStruct e; + sprite *target = 0; + char text[255]; + GLfloat color[4]; + int i; + + if (sp->opacity <= 0) + return; + + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp2 = ss->sprites[i]; + if (sp2->id == sp->text_id && sp2->state != DEAD) + { + target = sp2; + break; + } + } + + if (target) + { + rect r; + sprite *img; + + if (target->opacity <= 0 && + (target->state == NEW || target->state == IN)) + return; + + r = target->current; + + img = find_newest_sprite (mi, IMAGE); + if (img) + compute_image_rect (&r, img, target->back_p); + + mi->recursion_depth = (img + ? MIN (img->current.w, img->current.h) + : 0); + + x = abs ((int) (r.x * 10000)) % 10000; + y = abs ((int) (r.y * 10000)) % 10000; + z = abs ((int) (r.w * 10000)) % 10000; + + sprintf (text, "ZM %04d NS %04d EW %04d", z, y, x); + + if ((x == 0 || x == 5000) && /* startup */ + (y == 0 || y == 5000) && + (z == 0 || z == 5000)) + *text = 0; + + if (do_titles && + target->type == IMAGE && + target->remain_p) /* The initial background image */ + { + char *s = (target->img && + target->img->title && *target->img->title + ? target->img->title + : "Loading"); + int L = strlen (s); + int i = (L > 23 ? L-23 : 0); + sprintf (text, ">>%-23s", target->img->title + i); + for (s = text; *s; s++) + if (*s >= 'a' && *s <= 'z') *s += ('A'-'a'); + else if (*s == '/' || *s == '-' || *s == '.') *s = '_'; + } + + if (!*text) return; + + if (sp->text) free (sp->text); + sp->text = strdup (text); + } + else if (sp->text && *sp->text) + /* The target sprite might be dead, but we saved our last text. */ + strcpy (text, sp->text); + else + /* No target, no saved text. */ + return; + + texture_string_metrics (ss->font_data, text, &e, 0, 0); + + glPushMatrix(); + glLoadIdentity(); + glOrtho (0, 1, 0, 1, -1, 1); + + /* Scale the text to fit N characters horizontally. */ + { +# ifdef HAVE_MOBILE + GLfloat c = 25; +# else /* desktop */ + GLfloat c = (MI_WIDTH(mi) <= 640 ? 25 : + MI_WIDTH(mi) <= 1280 ? 32 : 64); +# endif + s = w / (e.ascent * c); + } + w /= s; + h /= s; + x = (w - e.width) / 2; + y = e.ascent + e.descent * 2; + + glScalef (1.0/w, 1.0/h, 1); + glTranslatef (x, y, 0); + + memcpy (color, ss->text_color, sizeof(color)); + color[3] = sp->opacity; + glColor4fv (color); + + if (wire) + glEnable (GL_TEXTURE_2D); + + print_texture_string (ss->font_data, text); + mi->polygon_count++; + + if (wire) + glDisable (GL_TEXTURE_2D); + glPopMatrix(); +} + + +static void +draw_flash_sprite (ModeInfo *mi, sprite *sp) +{ + /* esper_state *ss = &sss[MI_SCREEN(mi)]; */ + GLfloat o = sp->opacity; + + if (o <= 0) return; + o = 0.7; /* Too fast to see, so keep it consistent */ + + glPushMatrix(); + int wire = MI_IS_WIREFRAME(mi); + if (!wire) + glDisable (GL_TEXTURE_2D); + glColor4f (0, 0, 1, o); + glColorMask (0, 0, 1, 1); /* write only into blue and alpha channels */ + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (1, 0, 0); + glVertex3f (1, 1, 0); + glVertex3f (0, 1, 0); + glEnd(); + glColorMask (1, 1, 1, 1); + if (!wire) + glEnable (GL_TEXTURE_2D); + glPopMatrix(); +} + + +static void +draw_sprite (ModeInfo *mi, sprite *sp) +{ + switch (sp->type) { + case IMAGE: + draw_image_sprite (mi, sp); + break; + case RETICLE: + case BOX: + case GRID: + draw_line_sprite (mi, sp); + break; + case TEXT: + draw_text_sprite (mi, sp); + break; + case FLASH: + draw_flash_sprite (mi, sp); + break; + default: + abort(); + } +} + + +static void +tick_sprites (ModeInfo *mi) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + int i; + for (i = 0; i < ss->nsprites; i++) + tick_sprite (mi, ss->sprites[i]); + + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp = ss->sprites[i]; + if (sp->state == DEAD) + { + destroy_sprite (mi, sp); + i--; + } + } +} + + +static void +draw_sprites (ModeInfo *mi) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + int i; + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + +/* + { + GLfloat rot = current_device_rotation(); + glTranslatef (0.5, 0.5, 0); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (s, 1/s, 1); + } + glTranslatef (-0.5, -0.5, 0); + } +*/ + + /* Draw the images first, then the overlays. */ + for (i = 0; i < ss->nsprites; i++) + if (ss->sprites[i]->type == IMAGE) + draw_sprite (mi, ss->sprites[i]); + for (i = 0; i < ss->nsprites; i++) + if (ss->sprites[i]->type != IMAGE) + draw_sprite (mi, ss->sprites[i]); + + glPopMatrix(); + + if (debug_p) /* draw a white box (the "screen") */ + { + int wire = MI_IS_WIREFRAME(mi); + + if (!wire) glDisable (GL_TEXTURE_2D); + + glColor4f (1, 1, 1, 1); + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (0, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); + glEnd(); + + if (!wire) glEnable (GL_TEXTURE_2D); + } +} + + +static void +fadeout_sprite (ModeInfo *mi, sprite *sp) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + + /* If it hasn't faded in yet, don't fade out. */ + if (ss->now <= sp->start_time + sp->pause_duration) + sp->fade_duration = 0; + + /* Pretend it's at the point where it should fade out. */ + sp->pause_duration = 0; + sp->duration = 9999; + sp->remain_p = False; + sp->start_time = ss->now - sp->duration; +} + +static void +fadeout_sprites (ModeInfo *mi, sprite_type type) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + int i; + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp = ss->sprites[i]; + if (sp->type == type) + fadeout_sprite (mi, sp); + } +} + + +static sprite * +find_newest_sprite (ModeInfo *mi, sprite_type type) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + sprite *sp = 0; + int i; + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp2 = ss->sprites[i]; + if (sp2->type == type && + (!sp || + (sp->start_time < sp2->start_time && + ss->now >= sp2->start_time + sp2->pause_duration))) + sp = sp2; + } + return sp; +} + + +/* Enqueue a text sprite describing the given sprite that runs at the + same time. + */ +static sprite * +push_text_sprite (ModeInfo *mi, sprite *sp) +{ + /* esper_state *ss = &sss[MI_SCREEN(mi)]; */ + sprite *sp2 = new_sprite (mi, TEXT); + if (!sp2) abort(); + sp2->text_id = sp->id; + sp2->fade_duration = sp->fade_duration; + sp2->duration = sp->duration; + sp2->pause_duration = sp->pause_duration; + return sp2; +} + + +/* Enqueue a flash sprite that fires at the same time. + */ +#ifndef SMOOTH +static sprite * +push_flash_sprite (ModeInfo *mi, sprite *sp) +{ + /* esper_state *ss = &sss[MI_SCREEN(mi)]; */ + sprite *sp2 = new_sprite (mi, FLASH); + if (!sp2) abort(); + if (sp->type != IMAGE) abort(); + sp2->text_id = sp->id; + sp2->duration = MAX (0.07 / speed, 0.07); + sp2->fade_duration = 0; /* Fading these is too fast to see */ + sp2->pause_duration = sp->pause_duration + (sp->fade_duration * 0.3); + return sp2; +} +#endif /* !SMOOTH */ + + +/* Set the sprite's duration based on distance travelled. + */ +static void +compute_sprite_duration (ModeInfo *mi, sprite *sp, Bool blink_p) +{ + /* Compute max distance traveled by any point (corners or center). */ + /* (cpp is the devil) */ +# define L(F) (sp->F.x - sp->F.w/2) /* delta of left edge, from/to */ +# define R(F) (1-(sp->F.x + sp->F.w/2)) /* right */ +# define B(F) (sp->F.y - sp->F.h/2) /* top */ +# define T(F) (1-(sp->F.y + sp->F.h/2)) /* bottom */ +# define D(F,G) sqrt(F(from)*F(from) + G(to)*G(to)) /* corner traveled */ + double BL = D(B,L); + double BR = D(B,R); + double TL = D(T,L); + double TR = D(T,R); + double cx = sp->to.x - sp->from.x; + double cy = sp->to.y - sp->from.y; + double C = sqrt(cx*cx + cy*cy); + double dist = MAX (BL, MAX (BR, MAX (TL, MAX (TR, C)))); +# undef L +# undef R +# undef B +# undef T +# undef D + + int steps = 1 + dist * 28; + if (steps > 10) steps = 10; + + sp->duration = steps * 0.2 / speed; + +# ifndef SMOOTH + sp->duration += 1.5 / speed; /* For linger added by animate_sprite_path() */ + if (blink_p) sp->duration += 0.6 / speed; +# endif +} + + +/* Convert the sprite to a jerky transition. + Instead of smoothly animating, move in discrete steps, + using multiple staggered sprites. + */ +static void +animate_sprite_path (ModeInfo *mi, sprite *sp, Bool blink_p) +{ +# ifndef SMOOTH + /* esper_state *ss = &sss[MI_SCREEN(mi)]; */ + double dx = sp->to.x - sp->from.x; + double dy = sp->to.y - sp->from.y; + double dw = sp->to.w - sp->from.w; + double dh = sp->to.h - sp->from.h; + double linger = 1.5 / speed; + double blinger = 0.6 / speed; + double dur = sp->duration - linger - (blink_p ? blinger : 0); + int steps = dur / 0.3 * speed; /* step duration in seconds */ + int i; + + if (sp->type == IMAGE) + steps *= 0.8; + + if (steps < 2) steps = 2; + if (steps > 10) steps = 10; + + /* if (dur <= 0.01) abort(); */ + if (dur < 0.01) + linger = blinger = 0; + + for (i = 0; i <= steps; i++) + { + sprite *sp2 = copy_sprite (mi, sp); + if (!sp2) abort(); + + sp2->to.x = (sp->current.x + i * dx / steps); + sp2->to.y = (sp->current.y + i * dy / steps); + sp2->to.w = (sp->current.w + i * dw / steps); + sp2->to.h = (sp->current.h + i * dh / steps); + sp2->current = sp2->from = sp2->to; + sp2->duration = dur / steps; + sp2->pause_duration += i * sp2->duration; + sp2->remain_p = False; + sp2->fatbits_p = True; + + if (i == steps) + sp2->duration += linger; /* last one lingers for a bit */ + + if (i == steps && !blink_p) + { + sp2->remain_p = sp->remain_p; + sp2->fatbits_p = False; + } + + if (sp2->type == IMAGE && i > 0) + push_flash_sprite (mi, sp2); + + if (sp2->type == RETICLE || sp2->type == BOX) + { + sp2 = push_text_sprite (mi, sp2); + if (i == steps) + sp2->duration += linger * 2; + } + } + + if (blink_p && blinger) /* last one blinks before vanishing */ + { + int blinkers = 3; + for (i = 1; i <= blinkers; i++) + { + sprite *sp2 = copy_sprite (mi, sp); + if (!sp2) abort(); + + sp2->current = sp2->from = sp->to; + sp2->duration = blinger / blinkers; + sp2->pause_duration += dur + linger + i * sp2->duration; + sp2->remain_p = False; + if (i == blinkers) + { + sp2->remain_p = sp->remain_p; + sp2->fatbits_p = False; + } + } + } + + /* Fade out the template sprite. It might not have even appeared yet. */ + fadeout_sprite (mi, sp); +# endif +} + + +/* Input rect is of a reticle or box. + Output rect is what the image's rect should be so that the only part + visible is the part indicated by the input rect. + */ +static void +compute_image_rect (rect *r, sprite *img, Bool inverse_p) +{ + double scale = (inverse_p ? 1/r->w : r->w); + double dx = r->x - 0.5; + double dy = r->y - 0.5; + + /* Adjust size and center by zoom factor */ + r->w = img->current.w / scale; + r->h = img->current.h / scale; + r->x = 0.5 + (img->current.x - 0.5) / scale; + r->y = 0.5 + (img->current.y - 0.5) / scale; + + /* Move center */ + + if (inverse_p) + { + dx = -dx; /* #### Close but not quite right */ + dy = -dy; + } + + r->x -= dx / scale; + r->y -= dy / scale; +} + + +/* Sets 'to' such that the image zooms out so that the only part visible + is the part indicated by the box. + */ +static void +track_box_with_image (ModeInfo *mi, sprite *sp, sprite *img) +{ + rect r = sp->current; + compute_image_rect (&r, img, sp->back_p); + img->to = r; + + /* Never zoom out too far. */ + if (img->to.w < 1 && img->to.h < 1) + { + if (img->to.w > img->to.h) + { + img->to.w = img->to.w / img->to.h; + img->to.h = 1; + } + else + { + img->to.h = img->to.h / img->to.w; + img->to.w = 1; + } + } + + /* Never pan beyond the bounds of the image. */ + if (img->to.x < -img->to.w/2+1) img->to.x = -img->to.w/2+1; + if (img->to.x > img->to.w/2) img->to.x = img->to.w/2; + if (img->to.y < -img->to.h/2+1) img->to.y = -img->to.h/2+1; + if (img->to.y > img->to.h/2) img->to.y = img->to.h/2; +} + + +static void +tick_animation (ModeInfo *mi) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + anim_state prev_state = ss->anim_state; + sprite *sp = 0; + int i; + + switch (ss->anim_state) { + case BLANK: + ss->anim_state = GRID_ON; + break; + case GRID_ON: + ss->anim_state = IMAGE_LOAD; + break; + case IMAGE_LOAD: + /* Only advance once an image has loaded. */ + if (find_newest_sprite (mi, IMAGE)) + ss->anim_state = RETICLE_ON; + else + ss->anim_state = IMAGE_LOAD; + break; + case RETICLE_ON: + ss->anim_state = RETICLE_MOVE; + break; + case RETICLE_MOVE: + if (random() % 6) + ss->anim_state = BOX_MOVE; + else + ss->anim_state = IMAGE_ZOOM; + break; + case BOX_MOVE: + ss->anim_state = IMAGE_ZOOM; + break; + case IMAGE_ZOOM: + { + sprite *sp = find_newest_sprite (mi, IMAGE); + double depth = (sp + ? MIN (sp->current.w, sp->current.h) + : 0); + if (depth > 20) + ss->anim_state = IMAGE_UNLOAD; + else + ss->anim_state = RETICLE_ON; + } + break; + case IMAGE_FORCE_UNLOAD: + ss->anim_state = IMAGE_UNLOAD; + break; + case IMAGE_UNLOAD: + ss->anim_state = IMAGE_LOAD; + break; + case MANUAL_BOX_ON: + ss->anim_state = MANUAL_BOX; + break; + case MANUAL_BOX: + break; + case MANUAL_RETICLE_ON: + ss->anim_state = MANUAL_RETICLE; + break; + case MANUAL_RETICLE: + break; + default: + abort(); + break; + } + + ss->anim_start = ss->now; + ss->anim_duration = 0; + + if (debug_p) + fprintf (stderr, "%s: entering %s\n", + progname, state_name (ss->anim_state)); + + switch (ss->anim_state) { + + case GRID_ON: /* Start the grid fading in. */ + if (! find_newest_sprite (mi, GRID)) + { + sp = new_sprite (mi, GRID); + if (!sp) abort(); + sp->fade_duration = 1.0 / speed; + sp->duration = 2.0 / speed; + sp->remain_p = True; + ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 + + sp->duration); + } + break; + + case IMAGE_LOAD: + fadeout_sprites (mi, IMAGE); + sp = new_sprite (mi, IMAGE); + if (! sp) + { + if (debug_p) fprintf (stderr, "%s: image load failed\n", progname); + break; + } + + sp->fade_duration = 0.5 / speed; + sp->duration = sp->fade_duration * 3; + sp->remain_p = True; + /* If we zoom in, we lose the pulse at the end. */ + /* sp->from.w = sp->from.h = 0.0001; */ + sp->current = sp->from; + + ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 + + sp->duration); + + sp = push_text_sprite (mi, sp); + sp->fade_duration = 0.2 / speed; + sp->pause_duration = 0; + sp->duration = 2.5 / speed; + break; + + case IMAGE_FORCE_UNLOAD: + break; + + case IMAGE_UNLOAD: + sp = find_newest_sprite (mi, IMAGE); + if (sp) + sp->fade_duration = ((prev_state == IMAGE_FORCE_UNLOAD ? 0.2 : 3.0) + / speed); + fadeout_sprites (mi, IMAGE); + fadeout_sprites (mi, RETICLE); + fadeout_sprites (mi, BOX); + fadeout_sprites (mi, TEXT); + ss->anim_duration = (sp ? sp->fade_duration : 0) + 3.5 / speed; + break; + + case RETICLE_ON: /* Display reticle at center. */ + fadeout_sprites (mi, TEXT); + sp = new_sprite (mi, RETICLE); + if (!sp) abort(); + sp->fade_duration = 0.2 / speed; + sp->pause_duration = 1.0 / speed; + sp->duration = 1.5 / speed; + ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 + + sp->duration); + ss->anim_duration -= sp->fade_duration * 2; + break; + + case RETICLE_MOVE: + /* Reticle has faded in. Now move it to somewhere else. + Create N new reticle sprites, wih staggered pause_durations. + */ + { + GLfloat ox = 0.5; + GLfloat oy = 0.5; + GLfloat nx, ny, dist; + + do { /* pick a new position not too near the old */ + nx = 0.3 + BELLRAND(0.4); + ny = 0.3 + BELLRAND(0.4); + dist = sqrt ((nx-ox)*(nx-ox) + (ny-oy)*(ny-oy)); + } while (dist < 0.1); + + sp = new_sprite (mi, RETICLE); + if (!sp) abort(); + + sp->from.x = ox; + sp->from.y = oy; + sp->current = sp->to = sp->from; + sp->to.x = nx; + sp->to.y = ny; + sp->fade_duration = 0.2 / speed; + sp->pause_duration = 0; + compute_sprite_duration (mi, sp, False); + + ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 + + sp->duration - 0.1); + animate_sprite_path (mi, sp, False); + } + break; + + case BOX_MOVE: + /* Reticle has moved, and faded out. + Start the box zooming into place. + */ + { + GLfloat ox = 0.5; + GLfloat oy = 0.5; + GLfloat nx, ny; + GLfloat z; + + /* Find the last-added reticle, for our destination position. */ + sp = 0; + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp2 = ss->sprites[i]; + if (sp2->type == RETICLE && + (!sp || sp->start_time < sp2->start_time)) + sp = sp2; + } + if (sp) + { + nx = sp->to.x; + ny = sp->to.y; + } + else + { + nx = ny = 0.5; + if (debug_p) + fprintf (stderr, "%s: no reticle before box?\n", progname); + } + + z = 0.3 + frand(0.5); + + /* Ensure that the selected box is contained within the screen */ + { + double margin = 0.005; + double maxw = 2 * MIN (1 - margin - nx, nx - margin); + double maxh = 2 * MIN (1 - margin - ny, ny - margin); + double max = MIN (maxw, maxh); + if (z > max) z = max; + } + + sp = new_sprite (mi, BOX); + if (!sp) abort(); + sp->from.x = ox; + sp->from.y = oy; + sp->from.w = 1.0; + sp->from.h = 1.0; + sp->current = sp->from; + sp->to.x = nx; + sp->to.y = ny; + sp->to.w = z; + sp->to.h = z; + + /* Maybe zoom out instead of in. + */ + { + sprite *img = find_newest_sprite (mi, IMAGE); + double depth = MIN (img->current.w, img->current.h); + if (depth > 1 && /* if zoomed in */ + (depth < 6 ? !(random() % 5) : /* 20% */ + depth < 12 ? !(random() % 2) : /* 50% */ + (random() % 3))) /* 66% */ + { + sp->back_p = True; + if (depth < 1.5 && z < 0.8) + { + z = 0.8; /* don't zoom out much past 100% */ + sp->to.w = z; + sp->to.h = z; + } + } + } + + sp->fade_duration = 0.2 / speed; + sp->pause_duration = 2.0 / speed; + compute_sprite_duration (mi, sp, True); + ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 + + sp->duration - 0.1); + animate_sprite_path (mi, sp, True); + } + break; + + case IMAGE_ZOOM: + + /* Box has moved, and faded out. + Or, if no box, then just a reticle. + Zoom the underlying image to track the box's position. */ + { + sprite *img, *img2; + + /* Find latest box or reticle, for our destination position. */ + sp = find_newest_sprite (mi, BOX); + if (! sp) + sp = find_newest_sprite (mi, RETICLE); + if (! sp) + { + if (debug_p) + fprintf (stderr, "%s: no box or reticle before image\n", + progname); + break; + } + + img = find_newest_sprite (mi, IMAGE); + if (!img) + { + if (debug_p) + fprintf (stderr, "%s: no image?\n", progname); + break; + } + + img2 = copy_sprite (mi, img); + if (!img2) abort(); + + img2->from = img->current; + + fadeout_sprite (mi, img); + + track_box_with_image (mi, sp, img2); + + img2->fade_duration = 0.2 / speed; + img2->pause_duration = 0.5 / speed; + img2->remain_p = True; + img2->throb_p = False; + compute_sprite_duration (mi, img2, False); + + img->start_time += img2->pause_duration; + + ss->anim_duration = (img2->pause_duration + img2->fade_duration * 2 + + img2->duration); + animate_sprite_path (mi, img2, False); + fadeout_sprites (mi, TEXT); + } + break; + + case MANUAL_BOX_ON: + case MANUAL_RETICLE_ON: + break; + + case MANUAL_BOX: + case MANUAL_RETICLE: + { + sprite_type tt = (ss->anim_state == MANUAL_BOX ? BOX : RETICLE); + sprite *osp = find_newest_sprite (mi, tt); + fadeout_sprites (mi, RETICLE); + fadeout_sprites (mi, BOX); + + sp = new_sprite (mi, tt); + if (!sp) abort(); + if (osp) + sp->from = osp->current; + else + { + sp->from.x = 0.5; + sp->from.y = 0.5; + sp->from.w = 0.5; + sp->from.h = 0.5; + } + sp->to = sp->current = sp->from; + sp->fade_duration = 0.2 / speed; + sp->duration = 0.2 / speed; + sp->remain_p = True; + sp->throb_p = False; + ss->anim_duration = 9999; + } + break; + + default: + fprintf (stderr,"%s: unknown state %d\n", + progname, (int) ss->anim_state); + abort(); + } +} + + +/* Copied from gltrackball.c, sigh. + */ +static void +adjust_for_device_rotation (double *x, double *y, double *w, double *h) +{ + int rot = (int) current_device_rotation(); + int swap; + + while (rot <= -180) rot += 360; + while (rot > 180) rot -= 360; + + if (rot > 135 || rot < -135) /* 180 */ + { + *x = *w - *x; + *y = *h - *y; + } + else if (rot > 45) /* 90 */ + { + swap = *x; *x = *y; *y = swap; + swap = *w; *w = *h; *h = swap; + *x = *w - *x; + } + else if (rot < -45) /* 270 */ + { + swap = *x; *x = *y; *y = swap; + swap = *w; *w = *h; *h = swap; + *y = *h - *y; + } +} + + +ENTRYPOINT Bool +esper_handle_event (ModeInfo *mi, XEvent *event) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + + if (event->xany.type == Expose || + event->xany.type == GraphicsExpose || + event->xany.type == VisibilityNotify) + { + return False; + } + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + sprite *sp = 0; + double delta = 0.025; + double margin = 0.005; + Bool ok = False; + + XLookupString (&event->xkey, &c, 1, &keysym, 0); + + if (c == '\t') + { + ss->anim_state = IMAGE_FORCE_UNLOAD; + return True; + } + + if (! find_newest_sprite (mi, IMAGE)) + return False; /* Too early */ + + ss->now = double_time(); + +# define BONK() do { \ + if (ss->anim_state != MANUAL_BOX_ON && \ + ss->anim_state != MANUAL_BOX) { \ + ss->anim_state = MANUAL_BOX_ON; \ + tick_animation (mi); \ + } \ + sp = find_newest_sprite (mi, BOX); \ + if (!sp) abort() ; \ + sp->from = sp->current; \ + sp->to = sp->from; \ + sp->start_time = ss->now - sp->fade_duration; \ + ok = True; \ + } while(0) + + if (keysym == XK_Left || c == ',' || c == '<') + { + BONK(); + sp->to.x -= delta; + } + else if (keysym == XK_Right || c == '.' || c == '>') + { + BONK(); + sp->to.x += delta; + } + else if (keysym == XK_Down || c == '-') + { + BONK(); + sp->to.y -= delta; + } + else if (keysym == XK_Up || c == '=') + { + BONK(); + sp->to.y += delta, ok = True; + } + else if (keysym == XK_Prior || c == '+') + { + BONK(); + sp->to.w += delta; + sp->to.h = sp->to.w * sp->from.w / sp->from.h; + } + else if (keysym == XK_Next || c == '_') + { + BONK(); + sp->to.w -= delta; + sp->to.h = sp->to.w * sp->from.w / sp->from.h; + } + else if ((c == ' ' || c == '\t') && debug_p && + ss->anim_state == MANUAL_BOX) + { + BONK(); /* Null motion: just flash the current image. */ + } + else if ((keysym == XK_Home || c == ' ' || c == '\t') && + ss->anim_state == MANUAL_BOX) + { + BONK(); + sp->to.x = 0.5; + sp->to.y = 0.5; + sp->to.w = 0.5; + sp->to.h = 0.5; + } + else if ((c == '\r' || c == '\n' || c == 033) && + ss->anim_state == MANUAL_BOX) + { + BONK(); + ss->anim_state = BOX_MOVE; + ss->anim_duration = 9999; + ss->anim_start = ss->now - ss->anim_duration; + fadeout_sprite (mi, sp); + return True; + } + else + return False; + + if (! ok) + return False; + + /* Keep it on screen */ + if (sp->to.w > 1 - margin) + { + GLfloat r = sp->to.h / sp->to.w; + sp->to.w = 1-margin; + sp->to.h = (1-margin) * r; + } + if (sp->to.h > 1) + { + GLfloat r = sp->to.h / sp->to.w; + sp->to.w = (1-margin) / r; + sp->to.h = 1-margin; + } + + if (sp->to.x - sp->to.w/2 < margin) + sp->to.x = sp->to.w/2 + margin; + if (sp->to.y - sp->to.h/2 < margin) + sp->to.y = sp->to.h/2 + margin; + + if (sp->to.x + sp->to.w/2 >= 1 + margin) + sp->to.x = 1 - (sp->to.w/2 + margin); + if (sp->to.y + sp->to.h/2 >= 1 + margin) + sp->to.y = 1 - (sp->to.h/2 + margin); + + /* Now let's give a momentary glimpse of what the image would do. */ + if (debug_p) + { + sprite *img = 0; + int i; + + /* Find the lingering image */ + /* img = find__sprite (mi, IMAGE); */ + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp2 = ss->sprites[i]; + if (sp2->type == IMAGE && + sp2->remain_p && + (!img || + (img->start_time < sp2->start_time && + ss->now >= sp2->start_time + sp2->pause_duration))) + img = sp2; + } + + if (!img) abort(); + img = copy_sprite (mi, img); + img->pause_duration = 0; + img->fade_duration = 0.1 / speed; + img->duration = 0.5 / speed; + img->start_time = ss->now; + img->remain_p = False; + track_box_with_image (mi, sp, img); + img->from = img->current = img->to; + } + + return True; + } + else if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + ss->button_down_p = 1; + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + ss->button_down_p = 0; + + if (ss->anim_state == MANUAL_BOX) + { + sprite *sp = find_newest_sprite (mi, BOX); + if (sp) fadeout_sprite (mi, sp); + ss->anim_state = BOX_MOVE; + ss->anim_duration = 9999; + ss->anim_start = ss->now - ss->anim_duration; + } + else if (ss->anim_state == MANUAL_RETICLE) + { + sprite *sp = find_newest_sprite (mi, RETICLE); + if (sp) fadeout_sprite (mi, sp); + ss->anim_state = RETICLE_MOVE; + ss->anim_duration = 9999; + ss->anim_start = ss->now - ss->anim_duration; + } + return True; + } + else if (event->xany.type == MotionNotify && + ss->button_down_p && + (ss->anim_state == MANUAL_RETICLE || + ss->anim_state == RETICLE_MOVE)) + { + sprite *sp = 0; + double x = event->xmotion.x; + double y = event->xmotion.y; + double w = MI_WIDTH(mi); + double h = MI_HEIGHT(mi); + + adjust_for_device_rotation (&x, &y, &w, &h); + x = x/w; + y = 1-y/h; + + if (ss->anim_state != MANUAL_RETICLE_ON && + ss->anim_state != MANUAL_RETICLE) + { + ss->anim_state = MANUAL_RETICLE_ON; + tick_animation (mi); + } + sp = find_newest_sprite (mi, RETICLE); + if (!sp) abort(); + sp->from = sp->current; + sp->to = sp->from; + sp->start_time = ss->now - sp->fade_duration; + sp->remain_p = True; + + sp->current.x = MIN (0.95, MAX (0.05, x)); + sp->current.y = MIN (0.95, MAX (0.05, y)); + sp->from = sp->to = sp->current; + + /* Don't update the text sprite more often than once a second. */ + { + sprite *sp2 = find_newest_sprite (mi, TEXT); + if (!sp2 || sp2->start_time < ss->now-1) + { + fadeout_sprites (mi, TEXT); + sp = push_text_sprite (mi, sp); + sp->remain_p = True; + } + } + + return True; + } + else if (event->xany.type == MotionNotify && + ss->button_down_p && + (ss->anim_state == MANUAL_BOX || + ss->anim_state == BOX_MOVE)) + { + sprite *sp = 0; + double x = event->xmotion.x; + double y = event->xmotion.y; + double w = MI_WIDTH(mi); + double h = MI_HEIGHT(mi); + double max; + Bool ok = True; + + adjust_for_device_rotation (&x, &y, &w, &h); + x = x/w; + y = 1-y/h; + + BONK(); + max = (2 * (0.5 - MAX (fabs (sp->current.x - 0.5), + fabs (sp->current.y - 0.5))) + * 0.95); + + x = fabs (x - sp->current.x); + y = fabs (y - sp->current.y); + + if (x > y) + sp->current.w = sp->current.h = MIN (max, MAX (0.05, 2*x)); + else + sp->current.w = sp->current.h = MIN (max, MAX (0.05, 2*y)); + sp->from = sp->to = sp->current; + + /* Don't update the text sprite more often than once a second. */ + { + sprite *sp2 = find_newest_sprite (mi, TEXT); + if (!sp2 || sp2->start_time < ss->now-1) + { + fadeout_sprites (mi, TEXT); + sp = push_text_sprite (mi, sp); + sp->remain_p = True; + } + } + + return ok; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + ss->anim_state = IMAGE_FORCE_UNLOAD; + return True; + } +# undef BONK + + return False; +} + + +ENTRYPOINT void +reshape_esper (ModeInfo *mi, int width, int height) +{ + GLfloat s; + + glViewport (0, 0, width, height); + glMatrixMode (GL_PROJECTION); + glLoadIdentity(); + glRotatef (current_device_rotation(), 0, 0, 1); + glMatrixMode (GL_MODELVIEW); + glLoadIdentity(); + + s = 2; + + if (debug_p) + { + s *= 0.75; + if (s < 0.1) s = 0.1; + } + + glScalef (s, s, s); + glTranslatef (-0.5, -0.5, 0); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + /* Stretch each existing image to match new window aspect. */ + { + esper_state *ss = &sss[MI_SCREEN(mi)]; + int i; + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp = ss->sprites[i]; + if (sp && sp->type == IMAGE && sp->img && sp->img->loaded_p) + { + GLfloat sp_asp = sp->current.h / sp->current.w; + GLfloat img_asp = (sp->img->geom.height / + (GLfloat) sp->img->geom.width); + GLfloat new_win = (MI_WIDTH(mi) / (double) MI_HEIGHT(mi)); + GLfloat old_win = sp_asp / img_asp; + GLfloat r = old_win / new_win; + if (img_asp > 1) + { + sp->from.h /= r; + sp->current.h /= r; + sp->to.h /= r; + } + else + { + sp->from.w *= r; + sp->current.w *= r; + sp->to.w *= r; + } + } + } + } +} + + +static void +parse_color (ModeInfo *mi, char *key, GLfloat color[4]) +{ + XColor xcolor; + char *string = get_string_resource (mi->dpy, key, "EsperColor"); + if (!XParseColor (mi->dpy, mi->xgwa.colormap, string, &xcolor)) + { + fprintf (stderr, "%s: unparsable color in %s: %s\n", progname, + key, string); + exit (1); + } + + color[0] = xcolor.red / 65536.0; + color[1] = xcolor.green / 65536.0; + color[2] = xcolor.blue / 65536.0; + color[3] = 1; +} + + +ENTRYPOINT void +init_esper (ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + esper_state *ss; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, sss); + ss = &sss[screen]; + + if ((ss->glx_context = init_GL(mi)) != NULL) { + reshape_esper (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } + + parse_color (mi, "gridColor", ss->grid_color); + parse_color (mi, "reticleColor", ss->reticle_color); + parse_color (mi, "textColor", ss->text_color); + + glDisable (GL_LIGHTING); + glDisable (GL_DEPTH_TEST); + glDepthMask (GL_FALSE); + glEnable (GL_CULL_FACE); + glCullFace (GL_BACK); + + if (! wire) + { + glEnable (GL_TEXTURE_2D); + glShadeModel (GL_SMOOTH); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + ss->font_data = load_texture_font (mi->dpy, "titleFont"); + + ss->now = double_time(); + ss->dawn_of_time = ss->now; + + alloc_image (mi); + + ss->anim_state = BLANK; + ss->anim_start = 0; + ss->anim_duration = 0; +} + + +ENTRYPOINT void +draw_esper (ModeInfo *mi) +{ + esper_state *ss = &sss[MI_SCREEN(mi)]; + + if (!ss->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context)); + + mi->polygon_count = 0; + + ss->now = double_time(); + + tick_sprites (mi); + draw_sprites (mi); + if (ss->now >= ss->anim_start + ss->anim_duration) + tick_animation (mi); + + if (mi->fps_p) do_fps (mi); + + glFinish(); + glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi)); +} + +XSCREENSAVER_MODULE ("Esper", esper) + +#endif /* USE_GL */ diff --git a/hacks/glx/esper.man b/hacks/glx/esper.man new file mode 100644 index 0000000..4d994d9 --- /dev/null +++ b/hacks/glx/esper.man @@ -0,0 +1,68 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +esper - Enhance 224 to 176. Go right. Enhance 57 19. Track 45 left. +.SH SYNOPSIS +.B esper +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-titles] +[\-fps] +.SH DESCRIPTION +"Enhance 224 to 176. Pull out track right. Center in pull back. Pull back. +Wait a minute. Go right. Stop. Enhance 57 19. Track 45 left. Gimme a +hardcopy right there." + +The Esper Machine was a voice-controlled forensic device used by LAPD +in 2019, as documented in the 1982 film, \fIBlade Runner.\fP It was +capable of enhancing photographs to an extreme degree, including +reconstructing different viewpoints within the space from the +reflections on various objects in the photograph. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-titles | \-no-titles +Show file names. Boolean. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the top of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2017 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/extrusion-helix2.c b/hacks/glx/extrusion-helix2.c new file mode 100644 index 0000000..7a7152f --- /dev/null +++ b/hacks/glx/extrusion-helix2.c @@ -0,0 +1,47 @@ + +/* + * helicoid (gernalized torus) demo + * + * FUNCTION: + * This code provides a very simple example of the helicoid primitive. + * Most of this code is required to set up OpenGL and GLUT, and very + * very little to set up the helix drawer. Don't blink! + * + * =======> MOUSE HOOKED UP TO RADIUS, DELTA-RADIUS < ======== + * + * HISTORY: + * Written by Linas Vepstas, March 1995 + */ + +#include "extrusion.h" + +/* controls shape of object */ +extern float lastx; +extern float lasty; + +void InitStuff_helix2 (void) +{ +} + +/* draw the helix shape */ +void DrawStuff_helix2 (void) +{ + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glColor3f (0.6, 0.3, 0.8); + + /* set up some matrices so that the object spins with the mouse */ + glPushMatrix (); +/* glTranslatef (0.0, 0.0, -80.0); */ +/* glRotatef (220.0, 0.0, 1.0, 0.0); */ +/* glRotatef (65.0, 1.0, 0.0, 0.0); */ + + /* Phew. FINALLY, Draw the helix -- */ + gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); + gleHelicoid (0.01*lastx, + 6.0, (0.01*lasty - 2.0), + -3.0, 4.0, 0x0, 0x0, 0.0, 1080.0); + + glPopMatrix (); + +} +/* ------------------------- end of file ----------------- */ diff --git a/hacks/glx/extrusion-helix3.c b/hacks/glx/extrusion-helix3.c new file mode 100644 index 0000000..7650f46 --- /dev/null +++ b/hacks/glx/extrusion-helix3.c @@ -0,0 +1,46 @@ + +/* + * helicoid (gernalized torus) demo + * + * FUNCTION: + * This code provides a very simple example of the helicoid primitive. + * Most of this code is required to set up OpenGL and GLUT, and very + * very little to set up the helix drawer. Don't blink! + * + * =======> MOUSE HOOKED UP TO SWEEP, HEIGHT < ======== + * + * HISTORY: + * Written by Linas Vepstas, March 1995 + */ + +#include "extrusion.h" + +/* controls shape of object */ +extern float lastx; +extern float lasty; + +void InitStuff_helix3 (void) +{ +} + +/* draw the helix shape */ +void DrawStuff_helix3 (void) +{ + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glColor3f (0.8, 0.3, 0.6); + + /* set up some matrices so that the object spins with the mouse */ + glPushMatrix (); +/* glTranslatef (0.0, 0.0, -80.0); */ +/* glRotatef (220.0, 0.0, 1.0, 0.0); */ +/* glRotatef (65.0, 1.0, 0.0, 0.0); */ + + /* Phew. FINALLY, Draw the helix -- */ + gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); + gleHelicoid (1.0, 6.0, -1.0, + 0.0, (0.02*lasty-2.0), 0x0, 0x0, 0.0, 6.0*lastx); + + glPopMatrix (); + +} +/* ------------------------- end of file ----------------- */ diff --git a/hacks/glx/extrusion-helix4.c b/hacks/glx/extrusion-helix4.c new file mode 100644 index 0000000..fbf1602 --- /dev/null +++ b/hacks/glx/extrusion-helix4.c @@ -0,0 +1,63 @@ + +/* + * helicoid (gernalized torus) demo + * + * FUNCTION: + * This code provides a very simple example of the helicoid primitive. + * Most of this code is required to set up OpenGL and GLUT, and very + * very little to set up the helix drawer. Don't blink! + * + * =======> MOUSE HOOKED UP TO AFFINE < ======== + * + * HISTORY: + * Written by Linas Vepstas, March 1995 + */ + +#include "extrusion.h" + +/* controls shape of object */ +extern float lastx; +extern float lasty; + +void InitStuff_helix4 (void) +{ +} + +/* draw the helix shape */ +void DrawStuff_helix4 (void) +{ + double affine[2][3]; + double delta_affine[2][3]; + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glColor3f (0.7, 0.5, 0.3); + + /* set up some matrices so that the object spins with the mouse */ + glPushMatrix (); +/* glTranslatef (0.0, 0.0, -80.0); */ +/* glRotatef (220.0, 0.0, 1.0, 0.0); */ +/* glRotatef (65.0, 1.0, 0.0, 0.0); */ + + /* Phew. FINALLY, Draw the helix -- */ + affine [0][0] = 1.0/ (0.01*lastx); + affine [1][0] = 0.0; + affine [0][1] = 0.0; + affine [1][1] = 0.01*lastx; + affine [0][2] = 0.0; + affine [1][2] = 0.0; + + delta_affine [0][0] = 0.0; + delta_affine [1][0] = 0.03*lasty; + delta_affine [0][1] = -0.03*lasty; + delta_affine [1][1] = 0.0; + delta_affine [0][2] = 0.0; + delta_affine [1][2] = 0.0; + + gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); + gleHelicoid (1.0, 7.0, -1.0, + -4.0, 6.0, affine, delta_affine, 0.0, 980.0); + + glPopMatrix (); + +} +/* ------------------------- end of file ----------------- */ diff --git a/hacks/glx/extrusion-joinoffset.c b/hacks/glx/extrusion-joinoffset.c new file mode 100644 index 0000000..89a60e2 --- /dev/null +++ b/hacks/glx/extrusion-joinoffset.c @@ -0,0 +1,148 @@ + +/* cylinder drawing demo */ +/* this demo demonstrates the various join styles */ + +#include "extrusion.h" + +/* ------------------------------------------------------- */ + +/* the arrays in which we will store the polyline */ +#define NPTS 100 +static double points [NPTS][3]; +static float colors [NPTS][3]; +static int idx = 0; + +/* some utilities for filling that array */ +#define PSCALE 0.5 +#define PNT(x,y,z) { \ + points[idx][0] = PSCALE * x; \ + points[idx][1] = PSCALE * y; \ + points[idx][2] = PSCALE * z; \ + idx ++; \ +} + +#define COL(r,g,b) { \ + colors[idx][0] = r; \ + colors[idx][1] = g; \ + colors[idx][2] = b; \ +} + +/* the arrays in which we will store the contour */ +#define NCONTOUR 100 +static double contour_points [NCONTOUR][2]; +static int cidx = 0; + +/* some utilities for filling that array */ +#define C_PNT(x,y) { \ + contour_points[cidx][0] = x; \ + contour_points[cidx][1] = y; \ + cidx ++; \ +} + + +/* ------------------------------------------------------- */ +/* + * Initialize a bent shape with three segments. + * The data format is a polyline. + * + * NOTE that neither the first, nor the last segment are drawn. + * The first & last segment serve only to determine that angle + * at which the endcaps are drawn. + */ + +void InitStuff_joinoffset (void) +{ + COL (0.0, 0.0, 0.0); + PNT (16.0, 0.0, 0.0); + + COL (0.2, 0.8, 0.5); + PNT (0.0, -16.0, 0.0); + + COL (0.0, 0.8, 0.3); + PNT (-16.0, 0.0, 0.0); + + COL (0.8, 0.3, 0.0); + PNT (0.0, 16.0, 0.0); + + COL (0.2, 0.3, 0.9); + PNT (16.0, 0.0, 0.0); + + COL (0.2, 0.8, 0.5); + PNT (0.0, -16.0, 0.0); + + COL (0.0, 0.0, 0.0); + PNT (-16.0, 0.0, 0.0); + + C_PNT (-0.8, -0.5); + C_PNT (-1.8, 0.0); + C_PNT (-1.2, 0.3); + C_PNT (-0.7, 0.8); + C_PNT (-0.2, 1.3); + C_PNT (0.0, 1.6); + C_PNT (0.2, 1.3); + C_PNT (0.7, 0.8); + C_PNT (1.2, 0.3); + C_PNT (1.8, 0.0); + C_PNT (0.8, -0.5); + + gleSetJoinStyle (TUBE_JN_ANGLE | TUBE_CONTOUR_CLOSED | TUBE_JN_CAP); +} + +static double up_vector[3] = {1.0, 0.0, 0.0}; + +/* controls shape of object */ +extern float lastx; +extern float lasty; + +/* ------------------------------------------------------- */ +/* draw the extrusion */ + +void DrawStuff_joinoffset (void) +{ + double moved_contour [NCONTOUR][2]; + int style, save_style; + int i; + + for (i=0; i +#include + +/* =========================================================== */ + +#define SCALE 1.3 +#define CONTOUR(x,y) { \ + double ax, ay, alen; \ + contour[i][0] = SCALE * (x); \ + contour[i][1] = SCALE * (y); \ + if (i!=0) { \ + ax = contour[i][0] - contour[i-1][0]; \ + ay = contour[i][1] - contour[i-1][1]; \ + alen = 1.0 / sqrt (ax*ax + ay*ay); \ + ax *= alen; ay *= alen; \ + norms [i-1][0] = ay; \ + norms [i-1][1] = -ax; \ + } \ + i++; \ +} + +#define NUM_PTS (25) + +static double contour [NUM_PTS][2]; +static double norms [NUM_PTS][2]; + +static void init_contour (void) +{ + int i; + + /* outline of extrusion */ + i=0; + CONTOUR (1.0, 1.0); + CONTOUR (1.0, 2.9); + CONTOUR (0.9, 3.0); + CONTOUR (-0.9, 3.0); + CONTOUR (-1.0, 2.9); + + CONTOUR (-1.0, 1.0); + CONTOUR (-2.9, 1.0); + CONTOUR (-3.0, 0.9); + CONTOUR (-3.0, -0.9); + CONTOUR (-2.9, -1.0); + + CONTOUR (-1.0, -1.0); + CONTOUR (-1.0, -2.9); + CONTOUR (-0.9, -3.0); + CONTOUR (0.9, -3.0); + CONTOUR (1.0, -2.9); + + CONTOUR (1.0, -1.0); + CONTOUR (2.9, -1.0); + CONTOUR (3.0, -0.9); + CONTOUR (3.0, 0.9); + CONTOUR (2.9, 1.0); + + CONTOUR (1.0, 1.0); /* repeat so that last normal is computed */ +} + +/* =========================================================== */ + +/* controls shape of object */ +extern float lastx; +extern float lasty; + +void InitStuff_screw (void) +{ + int style; + + /* configure the pipeline */ + style = TUBE_JN_CAP; + style |= TUBE_CONTOUR_CLOSED; + style |= TUBE_NORM_FACET; + style |= TUBE_JN_ANGLE; + gleSetJoinStyle (style); + + init_contour(); +} + +/* =========================================================== */ + +void DrawStuff_screw (void) { + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glColor3f (0.5, 0.6, 0.6); + + /* set up some matrices so that the object spins with the mouse */ + glPushMatrix (); + /* glTranslatef (0.0, 0.0, -80.0); */ + /* glRotatef (130.0, 0.0, 1.0, 0.0); */ + /* glRotatef (65.0, 1.0, 0.0, 0.0); */ + + /* draw the brand and the handle */ + gleScrew (20, contour, norms, + NULL, -6.0, 9.0, lasty); + + glPopMatrix (); +} + +/* ===================== END OF FILE ================== */ diff --git a/hacks/glx/extrusion-taper.c b/hacks/glx/extrusion-taper.c new file mode 100644 index 0000000..d2d05a1 --- /dev/null +++ b/hacks/glx/extrusion-taper.c @@ -0,0 +1,218 @@ +/* + * taper.c + * + * FUNCTION: + * Draws a tapered screw shape. + * + * HISTORY: + * -- created by Linas Vepstas October 1991 + * -- heavily modified to draw more texas shapes, Feb 1993, Linas + * -- converted to use GLUT -- December 1995, Linas + * + */ + +#include "extrusion.h" + +#include +#include + +#ifndef NULL +#define NULL ((void *) 0x0) +#endif /* NULL */ + +/* Some files do not define M_PI... */ +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +/* =========================================================== */ + +#define SCALE 3.33333 +#define CONTOUR(x,y) { \ + double ax, ay, alen; \ + contour[i][0] = SCALE * (x); \ + contour[i][1] = SCALE * (y); \ + if (i!=0) { \ + ax = contour[i][0] - contour[i-1][0]; \ + ay = contour[i][1] - contour[i-1][1]; \ + alen = 1.0 / sqrt (ax*ax + ay*ay); \ + ax *= alen; ay *= alen; \ + norms [i-1][0] = ay; \ + norms [i-1][1] = -ax; \ + } \ + i++; \ +} + +#define NUM_PTS (25) + +static double contour [NUM_PTS][2]; +static double norms [NUM_PTS][2]; + +static void init_contour (void) +{ + int i; + + /* outline of extrusion */ + i=0; + CONTOUR (1.0, 1.0); + CONTOUR (1.0, 2.9); + CONTOUR (0.9, 3.0); + CONTOUR (-0.9, 3.0); + CONTOUR (-1.0, 2.9); + + CONTOUR (-1.0, 1.0); + CONTOUR (-2.9, 1.0); + CONTOUR (-3.0, 0.9); + CONTOUR (-3.0, -0.9); + CONTOUR (-2.9, -1.0); + + CONTOUR (-1.0, -1.0); + CONTOUR (-1.0, -2.9); + CONTOUR (-0.9, -3.0); + CONTOUR (0.9, -3.0); + CONTOUR (1.0, -2.9); + + CONTOUR (1.0, -1.0); + CONTOUR (2.9, -1.0); + CONTOUR (3.0, -0.9); + CONTOUR (3.0, 0.9); + CONTOUR (2.9, 1.0); + + CONTOUR (1.0, 1.0); /* repeat so that last normal is computed */ +} + +/* =========================================================== */ + +#define PSIZE 40 +static double path[PSIZE][3]; +static double twist[PSIZE]; +static double taper[PSIZE]; + +static void init_taper (void) { + int j; + double z, deltaz; + double ang, dang; + + z = -10.0; + deltaz = 0.5; + + ang = 0.0; + dang = 20.0; + for (j=0; j<40; j++) { + path[j][0] = 0x0; + path[j][1] = 0x0; + path[j][2] = z; + + twist[j] = ang; + ang += dang; + + taper[j] = 0.1 * sqrt (9.51*9.51 - z*z); + + z += deltaz; + } + + taper[0] = taper[1]; + taper[39] = taper[38]; + +} + +/* =========================================================== */ + +/* controls shape of object */ +extern float lastx; +extern float lasty; + +void InitStuff_taper (void) +{ + int style; + + /* configure the pipeline */ + style = TUBE_JN_CAP; + style |= TUBE_CONTOUR_CLOSED; + style |= TUBE_NORM_FACET; + style |= TUBE_JN_ANGLE; + gleSetJoinStyle (style); + + init_contour(); + init_taper(); +} + +/* =========================================================== */ + +static void gleTaper (int ncp, + gleDouble contour[][2], + gleDouble cont_normal[][2], + gleDouble up[3], + int npoints, + gleDouble point_array[][3], + float color_array[][3], + gleDouble taper[], + gleDouble twist[]) +{ + int j; + gleAffine *xforms; + double co, si, angle; + + /* malloc the extrusion array and the twist array */ + xforms = (gleAffine *) malloc (npoints * sizeof(gleAffine)); + + for (j=0; j +#include + +/* Some files do not define M_PI... */ +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +/* controls shape of object */ +extern float lastx; +extern float lasty; + +#define OPENGL_10 +/* =========================================================== */ + +#define NUM_TOID1_PTS 5 +static double toid1_points[NUM_TOID1_PTS][3]; +static float toid1_colors [NUM_TOID1_PTS][3]; +static double toid1_twists [NUM_TOID1_PTS]; + +#define TSCALE (6.0) + +#define TPTS(x,y) { \ + toid1_points[i][0] = TSCALE * (x); \ + toid1_points[i][1] = TSCALE * (y); \ + toid1_points[i][2] = TSCALE * (0.0); \ + i++; \ +} + +#define TCOLS(r,g,b) { \ + toid1_colors[i][0] = (r); \ + toid1_colors[i][1] = (g); \ + toid1_colors[i][2] = (b); \ + i++; \ +} + +#define TXZERO() { \ + toid1_twists[i] = 0.0; \ + i++; \ +} + +static void init_toid1_line (void) +{ + int i; + + i=0; + TPTS (-1.1, 0.0); + TPTS (-1.0, 0.0); + TPTS (0.0, 0.0); + TPTS (1.0, 0.0); + TPTS (1.1, 0.0); + + i=0; + TCOLS (0.8, 0.8, 0.5); + TCOLS (0.8, 0.4, 0.5); + TCOLS (0.8, 0.8, 0.3); + TCOLS (0.4, 0.4, 0.5); + TCOLS (0.8, 0.8, 0.5); + + i=0; + TXZERO (); + TXZERO (); + TXZERO (); + TXZERO (); + TXZERO (); +} + +/* =========================================================== */ + +#define SCALE 0.6 +#define TWIST(x,y) { \ + double ax, ay, alen; \ + twistation[i][0] = SCALE * (x); \ + twistation[i][1] = SCALE * (y); \ + if (i!=0) { \ + ax = twistation[i][0] - twistation[i-1][0]; \ + ay = twistation[i][1] - twistation[i-1][1]; \ + alen = 1.0 / sqrt (ax*ax + ay*ay); \ + ax *= alen; ay *= alen; \ + twist_normal [i-1][0] = - ay; \ + twist_normal [i-1][1] = ax; \ + } \ + i++; \ +} + +#define NUM_TWIS_PTS (20) + +static double twistation [NUM_TWIS_PTS][2]; +static double twist_normal [NUM_TWIS_PTS][2]; + +static void init_tripples (void) +{ + int i; + double angle; + double co, si; + + /* outline of extrusion */ + i=0; + /* first, draw a semi-curcular "hump" */ + while (i< 11) { + angle = M_PI * ((double) i) / 10.0; + co = cos (angle); + si = sin (angle); + TWIST ((-7.0 -3.0*co), 1.8*si); + } + + /* now, a zig-zag corrugation */ + while (1) { + if (i >= NUM_TWIS_PTS) break; + TWIST ((-10.0 +(double) i), 0.0); + if (i >= NUM_TWIS_PTS) break; + TWIST ((-9.5 +(double) i), 1.0); + } +} + + +/* =========================================================== */ + +#define V3F(x,y,z) { \ + float vvv[3]; \ + vvv[0] = x; vvv[1] = y; vvv[2] = z; v3f (vvv); \ +} + +#define N3F(x,y,z) { \ + float nnn[3]; \ + nnn[0] = x; nnn[1] = y; nnn[2] = z; n3f (nnn); \ +} + +/* =========================================================== */ + +void DrawStuff_twistoid (void) { + int i; + + toid1_twists[2] = (lastx-121.0) / 8.0; + + i=3; +/* + TPTS (1.0, lasty /400.0); + TPTS (1.1, 1.1 * lasty / 400.0); +*/ + TPTS (1.0, -(lasty-121.0) /200.0); + TPTS (1.1, -1.1 * (lasty-121.0) / 200.0); + +#ifdef IBM_GL_32 + rotate (230, 'x'); + rotate (230, 'y'); + scale (1.8, 1.8, 1.8); + + if (mono_color) { + RGBcolor (178, 178, 204); + twist_extrusion (NUM_TWIS_PTS, twistation, twist_normal, + NULL, NUM_TOID1_PTS, toid1_points, NULL, toid1_twists); + } else { + twist_extrusion (NUM_TWIS_PTS, twistation, twist_normal, + NULL, NUM_TOID1_PTS, toid1_points, toid1_colors, toid1_twists); + } +#endif + +#ifdef OPENGL_10 + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glFrontFace(GL_CW); /* jwz */ + + /* set up some matrices so that the object spins with the mouse */ + glPushMatrix (); +/* glTranslatef (0.0, 0.0, -80.0); */ +/* glRotated (43.0, 1.0, 0.0, 0.0); */ +/* glRotated (43.0, 0.0, 1.0, 0.0); */ + glScaled (1.8, 1.8, 1.8); + gleTwistExtrusion (NUM_TWIS_PTS, twistation, twist_normal, + NULL, NUM_TOID1_PTS, toid1_points, NULL, toid1_twists); + glPopMatrix (); +#endif + +} + +/* =========================================================== */ + +void InitStuff_twistoid (void) +{ + int js; + + init_toid1_line (); + init_tripples (); + +#ifdef IBM_GL_32 + js = getjoinstyle (); + js &= ~TUBE_CONTOUR_CLOSED; + setjoinstyle (js); +#endif + +#ifdef OPENGL_10 + js = gleGetJoinStyle (); + js &= ~TUBE_CONTOUR_CLOSED; + gleSetJoinStyle (js); +#endif + +} + +/* ------------------ end of file -------------------- */ diff --git a/hacks/glx/extrusion.c b/hacks/glx/extrusion.c new file mode 100644 index 0000000..3dee71c --- /dev/null +++ b/hacks/glx/extrusion.c @@ -0,0 +1,556 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* extrusion --- extrusion module for xscreensaver */ +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + + * Revision History: + * Tue Oct 19 22:24:47 PDT 1999 Initial creation by David Konerding + * + * + * Notes: + * This screensaver requires the GLE ("OpenGL Tubing and Extrusion Library") + * which can be obtained from http://www.linas.org/gle/index.html + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" + +# define free_extrusion 0 +# define release_extrusion 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL /* whole file */ + +#ifdef HAVE_XMU +# ifndef VMS +# include +#else /* VMS */ +# include +# endif /* VMS */ +#endif + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "ximage-loader.h" +#include "rotator.h" +#include "gltrackball.h" +#include "extrusion.h" + +#define checkImageWidth 64 +#define checkImageHeight 64 + + +#define WIDTH 640 +#define HEIGHT 480 + +#define DEF_LIGHT "True" +#define DEF_TEXTURE "False" +#define DEF_TEX_QUAL "False" +#define DEF_MIPMAP "False" +#define DEF_NAME "RANDOM" +#define DEF_IMAGE "BUILTIN" + +static int do_light; +static int do_texture; +static int do_tex_qual; +static int do_mipmap; +static char *which_name; +static char *which_image; + +static XrmOptionDescRec opts[] = { + {"-light", ".extrusion.light", XrmoptionNoArg, "true" }, + {"+light", ".extrusion.light", XrmoptionNoArg, "false" }, + {"-texture", ".extrusion.texture", XrmoptionNoArg, "true" }, + {"+texture", ".extrusion.texture", XrmoptionNoArg, "false" }, + {"-texture", ".extrusion.texture", XrmoptionNoArg, "true" }, + {"+texture_quality", ".extrusion.texture", XrmoptionNoArg, "false" }, + {"-texture_quality", ".extrusion.texture", XrmoptionNoArg, "true" }, + {"+mipmap", ".extrusion.mipmap", XrmoptionNoArg, "false" }, + {"-mipmap", ".extrusion.mipmap", XrmoptionNoArg, "true" }, + {"-name", ".extrusion.name", XrmoptionSepArg, 0 }, + {"-image", ".extrusion.image", XrmoptionSepArg, 0 }, +}; + + +static argtype vars[] = { + {&do_light, "light", "Light", DEF_LIGHT, t_Bool}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_tex_qual, "texture_quality", "Texture_Quality", DEF_TEX_QUAL, t_Bool}, + {&do_mipmap, "mipmap", "Mipmap", DEF_MIPMAP, t_Bool}, + {&which_name, "name", "Name", DEF_NAME, t_String}, + {&which_image, "image", "Image", DEF_IMAGE, t_String}, +}; + + +static OptionStruct desc[] = +{ + {"-name num", "example 'name' to draw (helix2, helix3, helix4, joinoffset, screw, taper, twistoid)"}, + {"-/+ light", "whether to do enable lighting (slower)"}, + {"-/+ texture", "whether to apply a texture (slower)"}, + {"-image ", "texture image to load"}, + {"-/+ texture_quality", "whether to use texture smoothing (slower)"}, + {"-/+ mipmap", "whether to use texture mipmap (slower)"}, +}; + +ENTRYPOINT ModeSpecOpt extrusion_opts = {countof(opts), opts, countof(vars), vars, desc}; + +#ifdef USE_MODULES +ModStruct extrusion_description = +{"extrusion", "init_extrusion", "draw_extrusion", NULL, + "draw_extrusion", "init_extrusion", NULL, &extrusion_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "OpenGL extrusion", 0, NULL}; +#endif + + +/* structure for holding the extrusion data */ +typedef struct { + int screen_width, screen_height; + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + Bool button2_down_p; + int mouse_start_x, mouse_start_y; + int mouse_x, mouse_y; + int mouse_dx, mouse_dy; + Window window; + XColor fg, bg; + int extrusion_number; +} extrusionstruct; + +static extrusionstruct *Extrusion = NULL; + + + +/* set up a light */ +static const GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0}; +static const GLfloat lightOneColor[] = {0.99, 0.99, 0.00, 1.0}; + +static const GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0}; +static const GLfloat lightTwoColor[] = {0.00, 0.99, 0.99, 1.0}; + +float rot_x=0, rot_y=0, rot_z=0; +float lastx=0, lasty=0; + +static float max_lastx=400, max_lasty=400; +static float min_lastx=-400, min_lasty=-400; + +struct functions { + void (*InitStuff)(void); + void (*DrawStuff)(void); + char *name; +}; + +/* currently joinoffset and twistoid look funny- + like we're looking at them from the back or something +*/ + +static const struct functions funcs_ptr[] = { + {InitStuff_helix2, DrawStuff_helix2, "helix2"}, + {InitStuff_helix3, DrawStuff_helix3, "helix3"}, + {InitStuff_helix4, DrawStuff_helix4, "helix4"}, + {InitStuff_joinoffset, DrawStuff_joinoffset, "joinoffset"}, + {InitStuff_screw, DrawStuff_screw, "screw"}, + {InitStuff_taper, DrawStuff_taper, "taper"}, + {InitStuff_twistoid, DrawStuff_twistoid, "twistoid"}, +}; + +static int num_extrusions = countof(funcs_ptr); + + +/* BEGINNING OF FUNCTIONS */ + + +static GLubyte * +Generate_Image(int *width, int *height, int *format) +{ + GLubyte *result; + int i, j, c; + int counter=0; + + *width = checkImageWidth; + *height = checkImageHeight; + result = (GLubyte *)malloc(4 * (*width) * (*height)); + + counter = 0; + for (i = 0; i < checkImageWidth; i++) { + for (j = 0; j < checkImageHeight; j++) { + c = (((((i&0x8)==0))^(((j&0x8))==0)))*255; + result[counter++] = (GLubyte) c; + result[counter++] = (GLubyte) c; + result[counter++] = (GLubyte) c; + result[counter++] = (GLubyte) 255; + } + } + + *format = GL_RGBA; + return result; +} + + +/* Create a texture in OpenGL. First an image is loaded + and stored in a raster buffer, then it's */ +static void Create_Texture(ModeInfo *mi, const char *filename) +{ + int height, width; + GLubyte *image; + int format; + + if ( !strncmp(filename, "BUILTIN", 7)) + { + BUILTIN: + image = Generate_Image(&width, &height, &format); + } + else + { + XImage *ximage = file_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + filename); + if (!ximage) + goto BUILTIN; + image = (GLubyte *) ximage->data; + width = ximage->width; + height = ximage->height; + format = GL_RGBA; + } + + /* GL_MODULATE or GL_DECAL depending on what you want */ + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + /* perhaps we can edge a bit more speed at the expense of quality */ + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + + if (do_tex_qual) { + /* with texture_quality, the min and mag filters look *much* nice but are *much* slower */ + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + } + else { + /* default is to do it quick and dirty */ + /* if you have mipmaps turned on, but not texture quality, nothing will happen! */ + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } + + /* mipmaps make the image look much nicer */ + if (do_mipmap) + { + int status; + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, format, + GL_UNSIGNED_BYTE, image); + if (status) + { + const char *s = (char *) gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, width, height, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + } + else + { + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, + format, GL_UNSIGNED_BYTE, image); + check_gl_error("texture"); + } +} + + +static void +init_rotation (ModeInfo *mi) +{ + extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)]; + double spin_speed = 0.5; + gp->rot = make_rotator (spin_speed, spin_speed, spin_speed, + 0.2, + 0.005, + True); + gp->trackball = gltrackball_init (True); + + lastx = (random() % (int) (max_lastx - min_lastx)) + min_lastx; + lasty = (random() % (int) (max_lasty - min_lasty)) + min_lasty; +} + + +/* draw the extrusion once */ +ENTRYPOINT void +draw_extrusion(ModeInfo * mi) +{ + extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + static const GLfloat color[4] = {0.6, 0.6, 0.4, 1.0}; + /* static const GLfloat spec[4] = {0.6, 0.6, 0.6, 1.0}; */ + /* static const GLfloat shiny = 40.0; */ + + double x, y, z; + + if (!gp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context)); + + glPushMatrix(); + + gltrackball_rotate (gp->trackball); + + get_rotation (gp->rot, &x, &y, &z, + !(gp->button_down_p || gp->button2_down_p)); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + + /* track the mouse only if a button is down. */ + if (gp->button2_down_p) + { + gp->mouse_dx += gp->mouse_x - gp->mouse_start_x; + gp->mouse_dy += gp->mouse_y - gp->mouse_start_y; + gp->mouse_start_x = gp->mouse_x; + gp->mouse_start_y = gp->mouse_y; + } + + { + float scale = (max_lastx - min_lastx); + get_position (gp->rot, &x, &y, &z, + !(gp->button_down_p || gp->button2_down_p)); + lastx = x * scale + min_lastx + gp->mouse_dx; + lasty = y * scale + min_lasty + gp->mouse_dy; + } + + glScalef(0.5, 0.5, 0.5); + + /* glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); */ + /* glMateriali (GL_FRONT_AND_BACK, GL_SHININESS, shiny); */ + + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glFrontFace(GL_CCW); + + funcs_ptr[gp->extrusion_number].DrawStuff(); + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glXSwapBuffers(display, window); +} + + +/* set up lighting conditions */ +static void +SetupLight(void) +{ + glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition); + glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor); + glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition); + glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor); + + glEnable (GL_LIGHT0); + glEnable (GL_LIGHT1); + glEnable (GL_LIGHTING); + + glColorMaterial (GL_FRONT, GL_DIFFUSE); + glColorMaterial (GL_BACK, GL_DIFFUSE); + glEnable (GL_COLOR_MATERIAL); +} + +/* Standard reshape function */ +ENTRYPOINT void +reshape_extrusion (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +/* decide which extrusion example to run */ +static void +chooseExtrusionExample (ModeInfo *mi) +{ + extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)]; + int i; + /* call the extrusion init routine */ + + if (!strncmp(which_name, "RANDOM", strlen(which_name))) { + gp->extrusion_number = random() % num_extrusions; + } + else { + gp->extrusion_number=-1; + for (i=0; i < num_extrusions; i++) { + if (!strncmp(which_name, funcs_ptr[i].name, strlen(which_name))) { + gp->extrusion_number = i; + } + } + } + + if (gp->extrusion_number < 0 || gp->extrusion_number >= num_extrusions) { + fprintf(stderr, "%s: invalid extrusion example number!\n", progname); + fprintf(stderr, "%s: known extrusions:\n", progname); + for (i=0; i < num_extrusions; i++) + fprintf(stderr,"\t%s\n", funcs_ptr[i].name); + exit(1); + } + init_rotation(mi); + funcs_ptr[gp->extrusion_number].InitStuff(); +} + + +/* main OpenGL initialization routine */ +static void +initializeGL(ModeInfo *mi, GLsizei width, GLsizei height) +{ + int style; + int mode; + + reshape_extrusion(mi, width, height); + glViewport( 0, 0, width, height ); + + glEnable(GL_DEPTH_TEST); + glDisable (GL_CULL_FACE); + glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, True); + glShadeModel(GL_SMOOTH); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + MI_IS_WIREFRAME(mi) = 0; +# endif + + if (do_light) + SetupLight(); + if (MI_IS_WIREFRAME(mi)) { + glPolygonMode(GL_FRONT,GL_LINE); + glPolygonMode(GL_BACK,GL_LINE); + } + if (do_texture) { + Create_Texture(mi, which_image); + glEnable(GL_TEXTURE_2D); + + /* configure the pipeline */ + style = TUBE_JN_CAP; + style |= TUBE_CONTOUR_CLOSED; + style |= TUBE_NORM_FACET; + style |= TUBE_JN_ANGLE; + gleSetJoinStyle (style); + + if (do_texture) { + mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_FLAT; + glMatrixMode (GL_TEXTURE); glLoadIdentity (); + glScalef (0.25, 0.1, 1); glMatrixMode (GL_MODELVIEW); + gleTextureMode (mode); + } + } + +} + +ENTRYPOINT Bool +extrusion_handle_event (ModeInfo *mi, XEvent *event) +{ + extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + (event->xbutton.button == Button4 || + event->xbutton.button == Button5 || + event->xbutton.button == Button6 || + event->xbutton.button == Button7)) + { + } + else if (event->xany.type == ButtonPress && /* rotate with left button */ + !event->xbutton.state) /* if no modifier keys */ + { + } + else if (event->xany.type == ButtonPress) /* deform with other buttons */ + { /* or with modifier keys */ + gp->button2_down_p = True; + } + else if (event->xany.type == ButtonRelease) + { + gp->button_down_p = False; + gp->button2_down_p = False; + } + else if (event->xany.type == MotionNotify) + { + if (gp->button2_down_p) + { + gp->mouse_x = event->xmotion.x; + gp->mouse_y = event->xmotion.y; + } + } + + if (gltrackball_event_handler (event, gp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &gp->button_down_p)) + return True; + + return False; +} + + +/* xextrusion initialization routine */ +ENTRYPOINT void +init_extrusion (ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + extrusionstruct *gp; + + if (MI_IS_WIREFRAME(mi)) do_light = 0; + + MI_INIT(mi, Extrusion); + gp = &Extrusion[screen]; + + gp->window = MI_WINDOW(mi); + if ((gp->glx_context = init_GL(mi)) != NULL) { + reshape_extrusion(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + initializeGL(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + chooseExtrusionExample(mi); + } else { + MI_CLEARWINDOW(mi); + } + +} + +XSCREENSAVER_MODULE ("Extrusion", extrusion) + +#endif /* USE_GL */ diff --git a/hacks/glx/extrusion.h b/hacks/glx/extrusion.h new file mode 100644 index 0000000..226a442 --- /dev/null +++ b/hacks/glx/extrusion.h @@ -0,0 +1,55 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* extrusion --- extrusion module for xscreensaver */ +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + */ + +#ifndef __XSCREENSAVER_EXTRUSION_H__ +#define __XSCREENSAVER_EXTRUSION_H__ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_COCOA +# include /* gle is included with GLUT on OSX */ +#else /* !HAVE_COCOA */ +# include +# include +# ifdef HAVE_GLE3 +# include +# else +# include +# endif +#endif /* !HAVE_COCOA */ + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +extern void InitStuff_helix2(void); +extern void DrawStuff_helix2(void); +extern void InitStuff_helix3(void); +extern void DrawStuff_helix3(void); +extern void InitStuff_helix4(void); +extern void DrawStuff_helix4(void); +extern void InitStuff_joinoffset(void); +extern void DrawStuff_joinoffset(void); +extern void InitStuff_screw(void); +extern void DrawStuff_screw(void); +extern void InitStuff_taper(void); +extern void DrawStuff_taper(void); +extern void InitStuff_twistoid(void); +extern void DrawStuff_twistoid(void); + +#endif /* __XSCREENSAVER_EXTRUSION_H__ */ diff --git a/hacks/glx/extrusion.man b/hacks/glx/extrusion.man new file mode 100644 index 0000000..e01d573 --- /dev/null +++ b/hacks/glx/extrusion.man @@ -0,0 +1,71 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +extrusion - various rotating extruded shapes. +.SH SYNOPSIS +.B extrusion +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-name \fIwhich\fP] +[\-no-light] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Draws various rotating extruded shapes that twist around, lengthen, and +turn inside out. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-name \fIwhich\fP +Which object to draw. Choices are: helix2, helix3, helix4, joinoffset, +screw, taper, and twistoid. +.TP 8 +.B \-light | \-no-light +Whether to light the scene, or use flat coloring. +.TP 8 +.B \-bitmap \fIfile\fP +The texture map to use. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Linas Vepstas and David Konerding. Permission +to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. No representations are made about the suitability of +this software for any purpose. It is provided "as is" without express +or implied warranty. +.SH AUTHOR +This screensaver was created by David Konerding from the samples that +come with the GL Extrusion library by Linas Vepstas. diff --git a/hacks/glx/flipflop.c b/hacks/glx/flipflop.c new file mode 100644 index 0000000..c26458c --- /dev/null +++ b/hacks/glx/flipflop.c @@ -0,0 +1,859 @@ +/* flipflop, Copyright (c) 2003 Kevin Ogden + * (c) 2006 Sergio Gutirrez "Sergut" + * (c) 2008 Andrew Galante + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * + * 2003 Kevin Odgen First version + * 2006 Sergio Gutirrez "Sergut" Made several parameters dynamic and selectable + * from the command line: size of the board, + * rotation speed and number of free squares; also + * added the "sticks" mode. + * 2008 Andrew Galante Added -textured option: textures the board with + * an image which gets scrambled as the tiles move + * + */ + +#define DEF_MODE "tiles" /* Default mode (options: "tiles", "sticks") */ +#define DEF_SIZEX "9" /* Default width of the board */ +#define DEF_SIZEY "9" /* Default length of the board */ + +#define DEF_BOARD_SIZE "0" /* "0" means "no value selected by user". It is changed */ +#define DEF_NUMSQUARES "0" /* in function init_flipflop() to its correct value (that */ +#define DEF_FREESQUARES "0" /* is a function of the size of the board and the mode)*/ + +#define DEF_SPIN "0.1" /* Default angular velocity: PI/10 rads/s */ + +#define DEF_TEXTURED "False" /* Default: do not grab an image for texturing */ + +#define DEF_STICK_THICK 54 /* Thickness for the sticks mode (over 100) */ +#define DEF_STICK_RATIO 80 /* Ratio of sticks/total squares (over 100) */ +#define DEF_TILE_THICK 4 /* Thickness for the tiles mode (over 100) */ +#define DEF_TILE_RATIO 95 /* Ratio of tiles/total squares (over 100) */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" + +# define release_flipflop 0 +# include "xlockmore.h" + +#else +# include "xlock.h" +#endif /* STANDALONE */ + +#ifdef USE_GL + +#include "gltrackball.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +static XrmOptionDescRec opts[] = { + {"-sticks", ".mode", XrmoptionNoArg, "sticks"}, + {"-tiles", ".mode", XrmoptionNoArg, "tiles" }, + {"-mode", ".mode", XrmoptionSepArg, 0 }, + {"-size", ".size", XrmoptionSepArg, 0 }, + {"-size-x", ".sizex", XrmoptionSepArg, 0 }, + {"-size-y", ".sizey", XrmoptionSepArg, 0 }, + {"-count", ".numsquares", XrmoptionSepArg, 0 }, + {"-free", ".freesquares", XrmoptionSepArg, 0 }, + {"-spin", ".spin", XrmoptionSepArg, 0 }, + {"-texture", ".textured", XrmoptionNoArg, "True" }, + {"+texture", ".textured", XrmoptionNoArg, "False" }, +}; + +static int wire, clearbits; +static int board_x_size, board_y_size, board_avg_size; +static int numsquares, freesquares; +static float half_thick; +static float spin; +static char* flipflopmode_str="tiles"; +static int textured; + +static argtype vars[] = { + { &flipflopmode_str, "mode", "Mode", DEF_MODE, t_String}, + { &board_avg_size, "size", "Integer", DEF_BOARD_SIZE, t_Int}, + { &board_x_size, "sizex", "Integer", DEF_SIZEX, t_Int}, + { &board_y_size, "sizey", "Integer", DEF_SIZEY, t_Int}, + { &numsquares, "numsquares", "Integer", DEF_NUMSQUARES, t_Int}, + { &freesquares, "freesquares", "Integer", DEF_NUMSQUARES, t_Int}, + { &spin, "spin", "Float", DEF_SPIN, t_Float}, + { &textured, "textured", "Bool", DEF_TEXTURED, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt flipflop_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct flipflop_description = + {"flipflop", "init_flipflop", "draw_flipflop", NULL, + "draw_flipflop", "init_flipflop", "free_flipflop", &flipflop_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Flipflop", 0, NULL}; + +#endif /* USE_MODULES */ + +typedef struct { + /* array specifying which squares are where (to avoid collisions) */ + /* -1 means empty otherwise integer represents square index 0 - n-1 */ + /* occupied[x*board_y_size+y] is the tile [x][y] (i.e. that starts at column x and row y)*/ + int *occupied; /* size: size_x * size_y */ + /* an array of xpositions of the squares */ + int *xpos; /* size: numsquares */ + /* array of y positions of the squares */ + int *ypos; /* size: numsquares */ + /* integer representing the direction of movement of a square */ + int *direction; /* 0 not, 1 x+, 2 y+, 3 x-, 4 y-*/ /* size: numsquares */ + /* angle of moving square (during a flip) */ + float *angle; /* size: numsquares */ + /* array of colors for a square (RGB) */ + /* eg. color[ 3*3 + 0 ] is the red component of square 3 */ + /* eg. color[ 4*3 + 1 ] is the green component of square 4 */ + /* eg. color[ 5*3 + 2 ] is the blue component of square 5 */ + /* ^-- n is the number of square */ + float *color; /* size: numsquares * 3 */ + /* array of texcoords for each square */ + /* tex[ n*4 + 0 ] is x texture coordinate of square n's left side */ + /* tex[ n*4 + 1 ] is y texture coordinate of square n's top side */ + /* tex[ n*4 + 2 ] is x texture coordinate of square n's right side */ + /* tex[ n*4 + 3 ] is y texture coordinate of square n's bottom side */ + float *tex; /* size: numsquares * 4 */ +} randsheet; + +typedef struct { + GLXContext *glx_context; + Window window; + trackball_state *trackball; + Bool button_down_p; + + randsheet *sheet; + + float theta; /* angle of rotation of the board */ + float flipspeed; /* amount of flip; 1 is a entire flip */ + float reldist; /* relative distace of camera from center */ + float energy; /* likelyhood that a square will attempt to move */ + + /* texture rectangle */ + float tex_x; + float tex_y; + float tex_width; + float tex_height; + + /* id of texture in use */ + GLuint texid; + + Bool mipmap; + Bool got_texture; + + GLfloat anisotropic; + +} Flipflopcreen; + +static Flipflopcreen *qs = NULL; + +#include "grab-ximage.h" + +static void randsheet_create( randsheet *rs ); +static void randsheet_initialize( randsheet *rs ); +static void randsheet_free( randsheet *rs ); +static int randsheet_new_move( randsheet* rs ); +static void randsheet_move( randsheet *rs, float rot ); +static int randsheet_draw( randsheet *rs ); +static void setup_lights(void); +static int drawBoard(Flipflopcreen *); +static int display(ModeInfo *mi); +static int draw_sheet(float *tex); + + +/* configure lighting */ +static void +setup_lights(void) +{ + /* GLfloat position0[] = { board_avg_size*0.5, board_avg_size*0.1, board_avg_size*0.5, 1.0 }; */ + + /* GLfloat position0[] = { -board_avg_size*0.5, 0.2*board_avg_size, -board_avg_size*0.5, 1.0 }; */ + GLfloat position0[4]; + position0[0] = 0; + position0[1] = board_avg_size*0.3; + position0[2] = 0; + position0[3] = 1; + + if (wire) return; + + glEnable(GL_LIGHTING); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glEnable(GL_LIGHT0); +} + +static void get_texture(ModeInfo *); + + +ENTRYPOINT Bool +flipflop_handle_event (ModeInfo *mi, XEvent *event) +{ + Flipflopcreen *c = &qs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, c->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &c->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + if (!textured || c->got_texture) + { + textured = 1; + c->got_texture = False; + get_texture (mi); + return True; + } + } + + return False; +} + +/* draw board */ +static int +drawBoard(Flipflopcreen *c) +{ + int i; + for( i=0; i < (c->energy) ; i++ ) { + randsheet_new_move( c->sheet ); + } + randsheet_move( c->sheet, c->flipspeed * 3.14159 ); + return randsheet_draw( c->sheet ); +} + + +static int +display(ModeInfo *mi) +{ + Flipflopcreen *c = &qs[MI_SCREEN(mi)]; + GLfloat amb[] = { 0.8, 0.8, 0.8, 1.0 }; + int polys = 0; + + + glClear(clearbits); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.2); + glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.15/board_avg_size ); + glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.15/board_avg_size ); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + + + glRotatef(current_device_rotation(), 0, 0, 1); + + /** setup perspectif */ + glTranslatef(0.0, 0.0, -c->reldist*board_avg_size); + glRotatef(22.5, 1.0, 0.0, 0.0); + gltrackball_rotate (c->trackball); + glRotatef(c->theta*100, 0.0, 1.0, 0.0); + glTranslatef(-0.5*board_x_size, 0.0, -0.5*board_y_size); /* Center the board */ + + /* set texture */ + if(textured) + glBindTexture(GL_TEXTURE_2D, c->texid); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + polys = drawBoard(c); + + if (!c->button_down_p) { + c->theta += .01 * spin; + } + + return polys; +} + +ENTRYPOINT void +reshape_flipflop(ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0,y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45, 1/h, 1.0, 300.0); + glMatrixMode(GL_MODELVIEW); +} + +static void +image_loaded_cb (const char *filename, XRectangle *geometry, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + Flipflopcreen *c = (Flipflopcreen *)closure; + int i, j; + int index = 0; + randsheet *rs = c->sheet; + + c->tex_x = (float)geometry->x / (float)texture_width; + c->tex_y = (float)geometry->y / (float)texture_height; + c->tex_width = (float)geometry->width / (float)texture_width; + c->tex_height = (float)geometry->height / (float)texture_height; + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + (c->mipmap ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); + + if(c->anisotropic >= 1) + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, c->anisotropic); + + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + for(i = 0; i < board_x_size && index < numsquares; i++) + for(j = 0; j < board_y_size && index < numsquares; j++) + { + /* arrange squares to form loaded image */ + rs->tex[ index*4 + 0 ] = c->tex_x + c->tex_width / board_x_size * (i + 0); + rs->tex[ index*4 + 1 ] = c->tex_y + c->tex_height / board_y_size * (j + 1); + rs->tex[ index*4 + 2 ] = c->tex_x + c->tex_width / board_x_size * (i + 1); + rs->tex[ index*4 + 3 ] = c->tex_y + c->tex_height / board_y_size * (j + 0); + rs->color[ index*3 + 0 ] = 1; + rs->color[ index*3 + 1 ] = 1; + rs->color[ index*3 + 2 ] = 1; + index++; + } + + c->got_texture = True; +} + +static void +get_texture(ModeInfo *modeinfo) +{ + Flipflopcreen *c = &qs[MI_SCREEN(modeinfo)]; + + c->got_texture = False; + c->mipmap = True; + load_texture_async (modeinfo->xgwa.screen, modeinfo->window, + *c->glx_context, 0, 0, c->mipmap, c->texid, + image_loaded_cb, c); +} + +ENTRYPOINT void +init_flipflop(ModeInfo *mi) +{ + int screen; + Flipflopcreen *c; + + if (MI_IS_WIREFRAME(mi)) textured = 0; + + /* Set all constants to their correct values */ + if (board_avg_size != 0) { /* general size specified by user */ + board_x_size = board_avg_size; + board_y_size = board_avg_size; + } else { + board_avg_size = (board_x_size + board_y_size) / 2; + } + if ((numsquares == 0) && (freesquares != 0)) { + numsquares = board_x_size * board_y_size - freesquares; + } + if (strcmp(flipflopmode_str, "tiles")) { + textured = 0; /* textures look dumb in stick mode */ + half_thick = 1.0 * DEF_STICK_THICK / 100.0; + if (numsquares == 0) { /* No value defined by user */ + numsquares = board_x_size * board_y_size * DEF_STICK_RATIO / 100; + } + } else { + half_thick = 1.0 * DEF_TILE_THICK / 100.0; + if (numsquares == 0) { /* No value defined by user */ + numsquares = board_x_size * board_y_size * DEF_TILE_RATIO/ 100;; + } + } + if (board_avg_size < 2) { + fprintf (stderr,"%s: the board must be at least 2x2.\n", progname); + exit(1); + } + if ((board_x_size < 1) || (board_y_size < 1) || (numsquares < 1)) { + fprintf (stderr,"%s: the number of elements ('-count') and the dimensions of the board ('-size-x', '-size-y') must be positive integers.\n", progname); + exit(1); + } + if (board_x_size * board_y_size <= numsquares) { + fprintf (stderr,"%s: the number of elements ('-count') that you specified is too big \n for the dimensions of the board ('-size-x', '-size-y'). Nothing will move.\n", progname); + } + + screen = MI_SCREEN(mi); + wire = MI_IS_WIREFRAME(mi); + + MI_INIT(mi, qs); + + c = &qs[screen]; + c->window = MI_WINDOW(mi); + c->trackball = gltrackball_init (False); + + c->flipspeed = 0.03; + c->reldist = 1; + c->energy = 40; + + if((c->glx_context = init_GL(mi))) + reshape_flipflop(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + else + MI_CLEARWINDOW(mi); + + /* At this point, all the constants have already been set, */ + /* so we can create the board */ + c->sheet = (randsheet*) malloc(sizeof(randsheet)); + randsheet_create( c->sheet ); + + clearbits = GL_COLOR_BUFFER_BIT; + + glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); + glEnable(GL_COLOR_MATERIAL); + setup_lights(); + + glEnable(GL_DEPTH_TEST); + clearbits |= GL_DEPTH_BUFFER_BIT; + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + + randsheet_initialize( c->sheet ); + if( textured ){ + /* check for anisotropic filtering */ + if(strstr((char *)glGetString(GL_EXTENSIONS), + "GL_EXT_texture_filter_anisotropic")) + glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &c->anisotropic); + else + c->anisotropic = 0; + + /* allocate a new texture and get it */ + glGenTextures(1, &c->texid); + get_texture(mi); + } +} + +ENTRYPOINT void +draw_flipflop(ModeInfo *mi) +{ + Flipflopcreen *c = &qs[MI_SCREEN(mi)]; + Window w = MI_WINDOW(mi); + Display *disp = MI_DISPLAY(mi); + + if(!c->glx_context || (textured && !c->got_texture)) + return; + + glXMakeCurrent(disp, w, *(c->glx_context)); + + mi->polygon_count = display(mi); + + if(mi->fps_p){ + do_fps(mi); + } + + glFinish(); + glXSwapBuffers(disp, w); + + +} + +ENTRYPOINT void +free_flipflop(ModeInfo *mi) +{ + Flipflopcreen *c = &qs[MI_SCREEN(mi)]; + if (c->sheet) { + randsheet_free(c->sheet); + free (c->sheet); + } +} + +/*** ADDED RANDSHEET FUNCTIONS ***/ + +static int +draw_sheet(float *tex) +{ + int polys = 0; + glBegin( wire ? GL_LINE_LOOP : GL_QUADS ); + + glNormal3f( 0, -1, 0 ); + glTexCoord2f(tex[0], tex[3]); + glVertex3f( half_thick, -half_thick, half_thick ); + glTexCoord2f(tex[2], tex[3]); + glVertex3f( 1-half_thick, -half_thick, half_thick ); + glTexCoord2f(tex[2], tex[1]); + glVertex3f( 1-half_thick, -half_thick, 1-half_thick); + glTexCoord2f(tex[0], tex[1]); + glVertex3f( half_thick, -half_thick, 1-half_thick ); + polys++; + + if (wire) { glEnd(); glBegin (GL_LINE_LOOP); } + + /* back */ + glNormal3f( 0, 1, 0 ); + glTexCoord2f(tex[0], tex[1]); + glVertex3f( half_thick, half_thick, 1-half_thick ); + glTexCoord2f(tex[2], tex[1]); + glVertex3f( 1-half_thick, half_thick, 1-half_thick); + glTexCoord2f(tex[2], tex[3]); + glVertex3f( 1-half_thick, half_thick, half_thick ); + glTexCoord2f(tex[0], tex[3]); + glVertex3f( half_thick, half_thick, half_thick ); + polys++; + + if (wire) { glEnd(); return polys; } + + /* 4 edges!!! weee.... */ + glNormal3f( 0, 0, -1 ); + glTexCoord2f(tex[0], tex[3]); + glVertex3f( half_thick, half_thick, half_thick ); + glTexCoord2f(tex[2], tex[3]); + glVertex3f( 1-half_thick, half_thick, half_thick ); + glTexCoord2f(tex[2], tex[3]); + glVertex3f( 1-half_thick, -half_thick, half_thick ); + glTexCoord2f(tex[0], tex[3]); + glVertex3f( half_thick, -half_thick, half_thick ); + polys++; + glNormal3f( 0, 0, 1 ); + glTexCoord2f(tex[0], tex[1]); + glVertex3f( half_thick, half_thick, 1-half_thick ); + glTexCoord2f(tex[0], tex[1]); + glVertex3f( half_thick, -half_thick, 1-half_thick ); + glTexCoord2f(tex[2], tex[1]); + glVertex3f( 1-half_thick, -half_thick, 1-half_thick ); + glTexCoord2f(tex[2], tex[1]); + glVertex3f( 1-half_thick, half_thick, 1-half_thick ); + polys++; + glNormal3f( 1, 0, 0 ); + glTexCoord2f(tex[2], tex[1]); + glVertex3f( 1-half_thick, half_thick, 1-half_thick ); + glTexCoord2f(tex[2], tex[1]); + glVertex3f( 1-half_thick, -half_thick, 1-half_thick ); + glTexCoord2f(tex[2], tex[3]); + glVertex3f( 1-half_thick, -half_thick, half_thick ); + glTexCoord2f(tex[2], tex[3]); + glVertex3f( 1-half_thick, half_thick, half_thick ); + polys++; + glNormal3f( -1, 0, 0 ); + glTexCoord2f(tex[0], tex[1]); + glVertex3f( half_thick, half_thick, 1-half_thick ); + glTexCoord2f(tex[0], tex[3]); + glVertex3f( half_thick, half_thick, half_thick ); + glTexCoord2f(tex[0], tex[3]); + glVertex3f( half_thick, -half_thick, half_thick ); + glTexCoord2f(tex[0], tex[1]); + glVertex3f( half_thick, -half_thick, 1-half_thick ); + polys++; + glEnd(); + + return polys; +} + +/* Reserve memory for the randsheet */ +static void +randsheet_create( randsheet *rs ) +{ + rs -> occupied = (int*) malloc(board_x_size*board_y_size * sizeof(int)); + rs -> xpos = (int*) malloc(numsquares * sizeof(int)); + rs -> ypos = (int*) malloc(numsquares * sizeof(int)); + rs -> direction = (int*) malloc(numsquares * sizeof(int)); + rs -> angle = (float*) malloc(numsquares * sizeof(float)); + rs -> color = (float*) malloc(numsquares*3 * sizeof(float)); + rs -> tex = (float*) malloc(numsquares*4 * sizeof(float)); +} + +/* Free reserved memory for the randsheet */ +static void +randsheet_free( randsheet *rs ) +{ + free(rs->occupied); + free(rs->xpos); + free(rs->ypos); + free(rs->direction); + free(rs->angle); + free(rs->color); + free(rs->tex); +} + +static void +randsheet_initialize( randsheet *rs ) +{ + int i, j, index; + index = 0; + /* put the moving sheets on the board */ + for( i = 0; i < board_x_size; i++ ) + { + for( j = 0; j < board_y_size; j++ ) + { + /* initially fill up a corner with the moving squares */ + if( index < numsquares ) + { + rs->occupied[ i * board_y_size + j ] = index; + rs->xpos[ index ] = i; + rs->ypos[ index ] = j; + /* have the square colors start out as a pattern */ + rs->color[ index*3 + 0 ] = ((i+j)%3 == 0)||((i+j+1)%3 == 0); + rs->color[ index*3 + 1 ] = ((i+j+1)%3 == 0); + rs->color[ index*3 + 2 ] = ((i+j+2)%3 == 0); + index++; + } + /* leave everything else empty*/ + else + { + rs->occupied[ i * board_y_size + j ] = -1; + } + } + } + /* initially everything is at rest */ + for( i=0; idirection[ i ] = 0; + rs->angle[ i ] = 0; + } +} + +/* Pick and random square and direction and try to move it. */ +/* May not actually move anything, just attempt a random move. */ +/* Returns true if move was sucessful. */ +/* This could probably be implemented faster in a dequeue */ +/* to avoid trying to move a square which is already moving */ +/* but speed is most likely bottlenecked by rendering anyway... */ +static int +randsheet_new_move( randsheet* rs ) +{ + int i, j; + int num, dir; + /* pick a random square */ + num = random( ) % numsquares; + i = rs->xpos[ num ]; + j = rs->ypos[ num ]; + /* pick a random direction */ + dir = ( random( )% 4 ) + 1; + + if( rs->direction[ num ] == 0 ) + { + switch( dir ) + { + case 1: + /* move up in x */ + if( ( i + 1 ) < board_x_size ) + { + if( rs->occupied[ (i + 1) * board_y_size + j ] == -1 ) + { + rs->direction[ num ] = dir; + rs->occupied[ (i + 1) * board_y_size + j ] = num; + rs->occupied[ i * board_y_size + j ] = -1; + return 1; + } + } + return 0; + break; + case 2: + /* move up in y */ + if( ( j + 1 ) < board_y_size ) + { + if( rs->occupied[ i * board_y_size + (j + 1) ] == -1 ) + { + rs->direction[ num ] = dir; + rs->occupied[ i * board_y_size + (j + 1) ] = num; + rs->occupied[ i * board_y_size + j ] = -1; + return 1; + } + } + return 0; + break; + case 3: + /* move down in x */ + if( ( i - 1 ) >= 0 ) + { + if( rs->occupied[ (i - 1) * board_y_size + j ] == -1 ) + { + rs->direction[ num ] = dir; + rs->occupied[ (i - 1) * board_y_size + j ] = num; + rs->occupied[ i * board_y_size + j ] = -1; + return 1; + } + } + return 0; + break; + case 4: + /* move down in y */ + if( ( j - 1 ) >= 0 ) + { + if( rs->occupied[ i * board_y_size + (j - 1) ] == -1 ) + { + rs->direction[ num ] = dir; + rs->occupied[ i * board_y_size + (j - 1) ] = num; + rs->occupied[ i * board_y_size + j ] = -1; + return 1; + } + } + return 0; + break; + default: + break; + } + } + return 0; +} + +/* move a single frame. */ +/* Pass in the angle in rads the square rotates in a frame. */ +static void +randsheet_move( randsheet *rs, float rot ) +{ + int index; + float tmp; + for( index = 0 ; index < numsquares; index++ ) + { + switch( rs->direction[ index ] ) + { + case 0: + /* not moving */ + break; + case 1: + /* move up in x */ + if( textured && rs->angle[ index ] == 0 ) + { + tmp = rs->tex[ index * 4 + 0 ]; + rs->tex[ index * 4 + 0 ] = rs->tex[ index * 4 + 2 ]; + rs->tex[ index * 4 + 2 ] = tmp; + } + rs->angle[ index ] += rot; + /* check to see if we have finished moving */ + if( rs->angle[ index ] >= M_PI ) + { + rs->xpos[ index ] += 1; + rs->direction[ index ] = 0; + rs->angle[ index ] = 0; + } + break; + case 2: + /* move up in y */ + if( textured && rs->angle[ index ] == 0 ) + { + tmp = rs->tex[ index * 4 + 1 ]; + rs->tex[ index * 4 + 1 ] = rs->tex[ index * 4 + 3 ]; + rs->tex[ index * 4 + 3 ] = tmp; + } + rs->angle[ index ] += rot; + /* check to see if we have finished moving */ + if( rs->angle[ index ] >= M_PI ) + { + rs->ypos[ index ] += 1; + rs->direction[ index ] = 0; + rs->angle[ index ] = 0; + } + break; + case 3: + /* down in x */ + rs->angle[ index ] += rot; + /* check to see if we have finished moving */ + if( rs->angle[ index ] >= M_PI ) + { + rs->xpos[ index ] -= 1; + rs->direction[ index ] = 0; + rs->angle[ index ] = 0; + if( textured ) + { + tmp = rs->tex[ index * 4 + 0 ]; + rs->tex[ index * 4 + 0 ] = rs->tex[ index * 4 + 2 ]; + rs->tex[ index * 4 + 2 ] = tmp; + } + } + break; + case 4: + /* down in y */ + rs->angle[ index ] += rot; + /* check to see if we have finished moving */ + if( rs->angle[ index ] >= M_PI ) + { + rs->ypos[ index ] -= 1; + rs->direction[ index ] = 0; + rs->angle[ index ] = 0; + if( textured ) + { + tmp = rs->tex[ index * 4 + 1 ]; + rs->tex[ index * 4 + 1 ] = rs->tex[ index * 4 + 3 ]; + rs->tex[ index * 4 + 3 ] = tmp; + } + } + break; + default: + break; + } + } +} + + +/* draw all the moving squares */ +static int +randsheet_draw( randsheet *rs ) +{ + int i, j, polys = 0; + int index; + + /* for all moving squares ... */ + for( index = 0; index < numsquares; index++ ) + { + /* set color */ + glColor3f( rs->color[ index*3 + 0 ], + rs->color[ index*3 + 1 ], + rs->color[ index*3 + 2 ] ); + /* find x and y position */ + i = rs->xpos[ index ]; + j = rs->ypos[ index ]; + glPushMatrix(); + switch( rs->direction[ index ] ) + { + case 0: + + /* not moving */ + /* front */ + glTranslatef( i, 0, j ); + break; + case 1: + glTranslatef( i+1, 0, j ); + glRotatef( 180 - rs->angle[ index ]*180/M_PI, 0, 0, 1 ); + + break; + case 2: + glTranslatef( i, 0, j+1 ); + glRotatef( 180 - rs->angle[ index ]*180/M_PI, -1, 0, 0 ); + + break; + case 3: + glTranslatef( i, 0, j ); + glRotatef( rs->angle[ index ]*180/M_PI, 0, 0, 1 ); + break; + case 4: + glTranslatef( i, 0, j ); + glRotatef( rs->angle[ index ]*180/M_PI, -1, 0, 0 ); + break; + default: + break; + } + polys += draw_sheet( rs->tex + index*4 ); + glPopMatrix(); + + } + return polys; +} + +/**** END RANDSHEET_BAK FUNCTIONS ***/ + +XSCREENSAVER_MODULE ("FlipFlop", flipflop) + +#endif /* USE_GL */ diff --git a/hacks/glx/flipflop.man b/hacks/glx/flipflop.man new file mode 100644 index 0000000..17691bc --- /dev/null +++ b/hacks/glx/flipflop.man @@ -0,0 +1,95 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +flipflop - draws a grid of 3D squares that change positions +.SH SYNOPSIS +.B flipflop +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-count \fInumber\fP | \-free \fInumber\fP] +[\-size \fInumber\fP] +[\-size-x \fInumber\fP] +[\-size-y \fInumber\fP] +[\-spin \fInumber\fP] +[\-mode sticks | tiles] +[\-delay \fInumber\fP] +[\-wireframe] +[\-fps] +[\-texture] +.SH DESCRIPTION +Flipflop draws a grid of 3D colored tiles that change positions with +each other. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-count \fInumber\fP +Number of tiles on the board. A value of "0" means "default". The +default number of tiles depends on the size of the board and the mode: +95% of total tiles for "tiles" mode and 80% of total sticks for +"sticks" mode (e.g. 76 tiles or 64 sticks for a 9x9 board). +.TP 8 +.B \-free \fInumber\fP +Number of tiles missing from the board. See -count. +.TP 8 +.B \-size \fInumber\fP +Number of tiles on each side of the board. Takes precedence over +-size-x and -size-y. Default: 9. +.TP 8 +.B \-size-x \fInumber\fP +Width (in tiles) of the board. Default: 9. +.TP 8 +.B \-size-y \fInumber\fP +Length (in tiles) of the board. Default: 9. +.TP 8 +.B \-spin \fInumber\fP +Angular velocity for the rotation of the board. +.TP 8 +.B \-mode sticks +Draw hopping sticks instead of flipping tiles. +.TP 8 +.B \-mode tiles +Draw flipping tiles. This is the default. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-fps | \-no\-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-wireframe +Only draw outlines. +.TP 8 +.B \-texture | \-no\-texture +Whether to texture the tiles with a screen grab or an image. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Kevin Ogden. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Kevin Ogden . Some additional code by Sergio +Gutierrez . diff --git a/hacks/glx/flipscreen3d.c b/hacks/glx/flipscreen3d.c new file mode 100644 index 0000000..e4db5df --- /dev/null +++ b/hacks/glx/flipscreen3d.c @@ -0,0 +1,518 @@ +/* + * flipscreen3d - takes snapshots of the screen and flips it around + * + * version 1.0 - Oct 24, 2001 + * + * Copyright (C) 2001 Ben Buxton (bb@cactii.net) + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*useSHM: True \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_screenflip 0 +# define release_screenflip 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +# include "gltrackball.h" +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +/* lifted from lament.c */ +#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n)))) +#define RANDSIGN() ((random() & 1) ? 1 : -1) + + +#ifdef USE_GL + +/* Should be in */ +# ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT +# define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +# endif +# ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT +# define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +# endif + +#define DEF_ROTATE "True" +static int rotate; + +#define QW 12 +#define QH 12 + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + + +static XrmOptionDescRec opts[] = { + {"+rotate", ".screenflip.rotate", XrmoptionNoArg, "false" }, + {"-rotate", ".screenflip.rotate", XrmoptionNoArg, "true" }, +}; + + +static argtype vars[] = { + {&rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool}, +}; + + + +ENTRYPOINT ModeSpecOpt screenflip_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +#ifdef USE_MODULES +ModStruct screenflip_description = +{"screenflip", "init_screenflip", "draw_screenflip", NULL, + "draw_screenflip", "init_screenflip", NULL, &screenflip_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Screenflips", 0, NULL}; + +#endif + + +typedef struct { + GLXContext *glx_context; + Window window; + + int winw, winh; + int tw, th; /* texture width, height */ + GLfloat min_tx, min_ty; + GLfloat max_tx, max_ty; + GLfloat qx, qy, qw, qh; /* the quad we'll draw */ + + int regrab; + int fadetime; /* fade before regrab */ + + trackball_state *trackball; + Bool button_down_p; + + GLfloat show_colors[4]; + GLfloat stretch_val_x, stretch_val_y; + GLfloat stretch_val_dx, stretch_val_dy; + + GLfloat curx, cury, curz; + + GLfloat rx, ry, rz; + GLfloat rot, drot, odrot, ddrot, orot; + float theta, rho, dtheta, drho, gamma, dgamma; + + GLuint texid; + Bool mipmap_p; + Bool waiting_for_image_p; + Bool first_image_p; + + GLfloat anisotropic; + +} Screenflip; + +static Screenflip *screenflip = NULL; + +#include "grab-ximage.h" + +static const GLfloat viewer[] = {0.0, 0.0, 15.0}; + + +static void getSnapshot (ModeInfo *); + + +ENTRYPOINT Bool +screenflip_handle_event (ModeInfo *mi, XEvent *event) +{ + Screenflip *c = &screenflip[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, c->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &c->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + if (!c->waiting_for_image_p) + { + getSnapshot (mi); + return True; + } + } + + return False; +} + + +/* draw the texture mapped quad (actually two back to back)*/ +static void showscreen(Screenflip *c, int frozen, int wire) +{ + GLfloat x, y, w, h; + + if (c->fadetime) { +/* r -= 0.02; g -= 0.02; b -= 0.02; */ + c->show_colors[3] -= 0.02; + if (c->show_colors[3] < 0) { + c->regrab = 1; + c->fadetime = 0; + } + } else if (c->show_colors[3] < 0) { + c->show_colors[0] = c->show_colors[1] = + c->show_colors[2] = c->show_colors[3] = 1; + c->stretch_val_x = c->stretch_val_y = + c->stretch_val_dx = c->stretch_val_dy = 0; + } + if (c->stretch_val_dx == 0 && !frozen && !(random() % 25)) + c->stretch_val_dx = (float)(random() % 100) / 5000; + if (c->stretch_val_dy == 0 && !frozen && !(random() % 25)) + c->stretch_val_dy = (float)(random() % 100) / 5000; + + x = c->qx; + y = c->qy; + w = c->qx+c->qw; + h = c->qy-c->qh; + + if (!frozen) { + w *= sin (c->stretch_val_x) + 1; + x *= sin (c->stretch_val_x) + 1; + if (!c->button_down_p) { + if (!c->fadetime) c->stretch_val_x += c->stretch_val_dx; + if (c->stretch_val_x > 2*M_PI && !(random() % 5)) + c->stretch_val_dx = (float)(random() % 100) / 5000; + else + c->stretch_val_x -= 2*M_PI; + } + + if (!c->button_down_p && !c->fadetime) c->stretch_val_y += c->stretch_val_dy; + h *= sin (c->stretch_val_y) / 2 + 1; + y *= sin (c->stretch_val_y) / 2 + 1; + if (!c->button_down_p) { + if (c->stretch_val_y > 2*M_PI && !(random() % 5)) + c->stretch_val_dy = (float)(random() % 100) / 5000; + else + c->stretch_val_y -= 2*M_PI; + } + } + + glColor4f(c->show_colors[0], c->show_colors[1], + c->show_colors[2], c->show_colors[3]); + + if (!wire) + { + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDepthMask(GL_FALSE); + } + + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + + glNormal3f(0, 0, 1); + glTexCoord2f(c->max_tx, c->max_ty); glVertex3f(w, h, 0); + glTexCoord2f(c->max_tx, c->min_ty); glVertex3f(w, y, 0); + glTexCoord2f(c->min_tx, c->min_ty); glVertex3f(x, y, 0); + glTexCoord2f(c->min_tx, c->max_ty); glVertex3f(x, h, 0); + + glNormal3f(0, 0, -1); + glTexCoord2f(c->min_tx, c->min_ty); glVertex3f(x, y, -0.05); + glTexCoord2f(c->max_tx, c->min_ty); glVertex3f(w, y, -0.05); + glTexCoord2f(c->max_tx, c->max_ty); glVertex3f(w, h, -0.05); + glTexCoord2f(c->min_tx, c->max_ty); glVertex3f(x, h, -0.05); + glEnd(); + + + glDisable(GL_TEXTURE_2D); + glDepthMask(GL_TRUE); + + glBegin(GL_LINE_LOOP); + glVertex3f(x, y, 0); + glVertex3f(x, h, 0); + glVertex3f(w, h, 0); + glVertex3f(w, y, 0); + glEnd(); + glDisable(GL_BLEND); + +} + +/* This function is responsible for 'zooming back' the square after + * a new chunk has been grabbed with getSnapshot(), and positioning + * it suitably on the screen. Once positioned (where we begin to rotate), + * it just does a glTranslatef() and returns 1 + */ + +static int inposition(Screenflip *c) +{ + GLfloat wx; + GLfloat wy; + wx = 0 - (c->qw/2); + wy = (c->qh/2); + + if (c->curx == 0) c->curx = c->qx; + if (c->cury == 0) c->cury = c->qy; + if (c->regrab) { + c->curz = 0; + c->curx = c->qx; + c->cury = c->qy; + c->regrab = 0; + } + if (c->curz > -10 || c->curx > wx + 0.1 || c->curx < wx - 0.1 || + c->cury > wy + 0.1 || c->cury < wy - 0.1) { + if (c->curz > -10) + c->curz -= 0.05; + if (c->curx > wx) { + c->qx -= 0.02; + c->curx -= 0.02; + } + if (c->curx < wx) { + c->qx += 0.02; + c->curx += 0.02; + } + if (c->cury > wy) { + c->qy -= 0.02; + c->cury -= 0.02; + } + if (c->cury < wy) { + c->qy += 0.02; + c->cury += 0.02; + } + glTranslatef(0, 0, c->curz); + return 0; + } + glTranslatef(0, 0, c->curz); + return 1; + +} + +#if 0 +static void drawgrid(void) +{ + int i; + + glColor3f(0, 0.7, 0); + glBegin(GL_LINES); + for (i = 0 ; i <= 50; i+=2) { + glVertex3f( -25, -15, i-70); + glVertex3f( 25, -15, i-70); + glVertex3f( i-25, -15, -70); + glVertex3f( i-25, -15, -20); + } + glEnd(); +} +#endif + + +static void display(Screenflip *c, int wire) +{ + int frozen; + GLfloat rot = current_device_rotation(); + + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + gluLookAt(viewer[0], viewer[1], viewer[2], 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); + glPushMatrix(); + +/* + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = c->winw / (GLfloat) c->winh; + glScalef (s, 1/s, 1); + } +*/ + + if (inposition(c)) { + frozen = 0; + glTranslatef(5 * sin(c->theta), 5 * sin(c->rho), 10 * cos(c->gamma) - 10); +/* randomly change the speed */ + if (!c->button_down_p && !(random() % 300)) { + if (random() % 2) + c->drho = 1/60 - (float)(random() % 100)/3000; + if (random() % 2) + c->dtheta = 1/60 - (float)(random() % 100)/3000; + if (random() % 2) + c->dgamma = 1/60 - (float)(random() % 100)/3000; + } + glRotatef(rot, 0, 0, 1); + gltrackball_rotate (c->trackball); + glRotatef(-rot, 0, 0, 1); + if (rotate) glRotatef(c->rot, c->rx, c->ry, c->rz); +/* update variables with each frame */ + if(!c->button_down_p && !c->fadetime) { + c->theta += c->dtheta; + c->rho += c->drho; + c->gamma += c->dgamma; + c->rot += c->drot; + c->drot += c->ddrot; + } +/* dont let our rotation speed get too high */ + if (c->drot > 5 && c->ddrot > 0) + c->ddrot = 0 - (GLfloat)(random() % 100) / 1000; + else if (c->drot < -5 && c->ddrot < 0) + c->ddrot = (GLfloat)(random() % 100) / 1000; + } else { /* reset some paramaters */ + c->ddrot = 0.05 - (GLfloat)(random() % 100) / 1000; + c->theta = c->rho = c->gamma = 0; + c->rot = 0; + frozen = 1; + } + if (!c->button_down_p && !c->fadetime && (c->rot >= 360 || c->rot <= -360) && !(random() % 7)) { /* rotate change */ + c->rx = (GLfloat)(random() % 100) / 100; + c->ry = (GLfloat)(random() % 100) / 100; + c->rz = (GLfloat)(random() % 100) / 100; + } + if (c->odrot * c->drot < 0 && c->tw < c->winw && !(random() % 10)) { + c->fadetime = 1; /* randomly fade and get new snapshot */ + } + c->orot = c->rot; + c->odrot = c->drot; + if (c->rot > 360 || c->rot < -360) /* dont overflow rotation! */ + c->rot -= c->rot; + showscreen(c, frozen, wire); + glPopMatrix(); + glFlush(); +} + +ENTRYPOINT void reshape_screenflip(ModeInfo *mi, int width, int height) +{ + Screenflip *c = &screenflip[MI_SCREEN(mi)]; + glViewport(0,0,(GLint)width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45, 1, 2.0, 85); + glMatrixMode(GL_MODELVIEW); + c->winw = width; + c->winh = height; +} + +static void +image_loaded_cb (const char *filename, XRectangle *geometry, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + Screenflip *c = (Screenflip *) closure; + + c->tw = texture_width; + c->th = texture_height; + c->min_tx = (GLfloat) geometry->x / c->tw; + c->min_ty = (GLfloat) geometry->y / c->th; + c->max_tx = (GLfloat) (geometry->x + geometry->width) / c->tw; + c->max_ty = (GLfloat) (geometry->y + geometry->height) / c->th; + + c->qx = -QW/2 + ((GLfloat) geometry->x * QW / image_width); + c->qy = QH/2 - ((GLfloat) geometry->y * QH / image_height); + c->qw = QW * ((GLfloat) geometry->width / image_width); + c->qh = QH * ((GLfloat) geometry->height / image_height); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + (c->mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); + + if (c->anisotropic >= 1.0) + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, + c->anisotropic); + + c->waiting_for_image_p = False; + c->first_image_p = False; +} + + +static void getSnapshot (ModeInfo *modeinfo) +{ + Screenflip *c = &screenflip[MI_SCREEN(modeinfo)]; + + if (MI_IS_WIREFRAME(modeinfo)) + return; + + c->waiting_for_image_p = True; + c->mipmap_p = True; + load_texture_async (modeinfo->xgwa.screen, modeinfo->window, + *c->glx_context, 0, 0, c->mipmap_p, c->texid, + image_loaded_cb, c); +} + +ENTRYPOINT void init_screenflip(ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + Screenflip *c; + + MI_INIT(mi, screenflip); + c = &screenflip[screen]; + c->window = MI_WINDOW(mi); + + c->trackball = gltrackball_init (False); + + if ((c->glx_context = init_GL(mi)) != NULL) { + reshape_screenflip(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } + c->winh = MI_WIN_HEIGHT(mi); + c->winw = MI_WIN_WIDTH(mi); + c->qw = QW; + c->qh = QH; + c->qx = -6; + c->qy = 6; + + c->rx = c->ry = 1; + c->odrot = 1; + + c->show_colors[0] = c->show_colors[1] = + c->show_colors[2] = c->show_colors[3] = 1; + + if (! MI_IS_WIREFRAME(mi)) + { + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + glDisable(GL_LIGHTING); + } + + if (strstr ((char *) glGetString(GL_EXTENSIONS), + "GL_EXT_texture_filter_anisotropic")) + glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &c->anisotropic); + else + c->anisotropic = 0.0; + + glGenTextures(1, &c->texid); + + c->first_image_p = True; + getSnapshot(mi); +} + +ENTRYPOINT void draw_screenflip(ModeInfo *mi) +{ + Screenflip *c = &screenflip[MI_SCREEN(mi)]; + Window w = MI_WINDOW(mi); + Display *disp = MI_DISPLAY(mi); + + if (!c->glx_context) + return; + + /* Wait for the first image; for subsequent images, load them in the + background while animating. */ + if (c->waiting_for_image_p && c->first_image_p) + return; + + glXMakeCurrent(disp, w, *(c->glx_context)); + + glBindTexture(GL_TEXTURE_2D, c->texid); + + if (c->regrab) + getSnapshot(mi); + + display(c, MI_IS_WIREFRAME(mi)); + + if(mi->fps_p) do_fps(mi); + glFinish(); + glXSwapBuffers(disp, w); +} + +XSCREENSAVER_MODULE_2 ("FlipScreen3D", flipscreen3d, screenflip) + +#endif diff --git a/hacks/glx/flipscreen3d.man b/hacks/glx/flipscreen3d.man new file mode 100644 index 0000000..fecd005 --- /dev/null +++ b/hacks/glx/flipscreen3d.man @@ -0,0 +1,61 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +flipscreen3d - rotates an image of the screen through 3 dimensions. +.SH SYNOPSIS +.B flipscreen3d +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-no-rotate] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Grabs an image of the desktop, turns it into a GL texture map, and spins it +around and deforms it in various ways. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-rotate | \-no-rotate +Whether to rotate. +.TP 8 +.B \-wireframe +Just render boxes instead of textures (for debugging). +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Ben Buxton. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Ben Buxton. diff --git a/hacks/glx/fliptext.c b/hacks/glx/fliptext.c new file mode 100644 index 0000000..c233e8b --- /dev/null +++ b/hacks/glx/fliptext.c @@ -0,0 +1,1001 @@ +/* + * fliptext, Copyright (c) 2005-2015 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#define DEF_FONT "-*-utopia-bold-r-normal-*-*-720-*-*-*-*-*-*" +#define DEF_COLOR "#00CCFF" + +#define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*usePty: False \n" \ + "*texFontCacheSize: 60 \n" \ + "*font: " DEF_FONT "\n" \ + ".foreground: " DEF_COLOR "\n" \ + "*program: xscreensaver-text --cols 0" /* don't wrap */ + +# define release_fliptext 0 +# define fliptext_handle_event xlockmore_no_events +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +#include "xlockmore.h" +#include "texfont.h" +#include "textclient.h" + +#ifdef USE_GL /* whole file */ + +/* Should be in */ +# ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT +# define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +# endif +# ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT +# define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +# endif + + +#define DEF_LINES "8" +#define DEF_FONT_SIZE "20" +#define DEF_COLUMNS "80" +#define DEF_ALIGNMENT "random" +#define DEF_SPEED "1.0" +#define TAB_WIDTH 8 + +#define FONT_WEIGHT 14 +#define KEEP_ASPECT + +typedef enum { NEW, HESITATE, IN, LINGER, OUT, DEAD } line_state; +typedef enum { SCROLL_BOTTOM, SCROLL_TOP, SPIN } line_anim_type; + +typedef struct { GLfloat x, y, z; } XYZ; + +typedef struct { + char *text; + GLfloat width, height; /* size */ + XYZ from, to, current; /* start, end, and current position */ + GLfloat fth, tth, cth; /* rotation around Z */ + + int cluster_size; /* how many lines in this cluster */ + int cluster_pos; /* position of this line in the cluster */ + + line_state state; /* current motion model */ + int step, steps; /* progress along this path */ + GLfloat color[4]; + +} line; + + +typedef struct { + Display *dpy; + GLXContext *glx_context; + + texture_font_data *texfont; + text_data *tc; + + int alignment; + + char *buf; + int buf_size; + int buf_tail; + + int char_width; /* in font units */ + int line_height; /* in font units */ + double font_scale; /* convert font units to display units */ + + int font_wrap_pixels; /* in font units (for wrapping text) */ + + int top_margin, bottom_margin; + int left_margin, right_margin; + + int nlines; + int lines_size; + line **lines; + + line_anim_type anim_type; + XYZ in, mid, out; + XYZ rotation; + GLfloat color[4]; + +} fliptext_configuration; + + +static fliptext_configuration *scs = NULL; + +static int max_lines, min_lines; +static float font_size; +static int target_columns; +static char *alignment_str; +static int alignment_random_p; +static GLfloat speed; + +static XrmOptionDescRec opts[] = { + {"-lines", ".lines", XrmoptionSepArg, 0 }, + {"-size", ".fontSize", XrmoptionSepArg, 0 }, + {"-columns", ".columns", XrmoptionSepArg, 0 }, + {"-speed", ".speed", XrmoptionSepArg, 0 }, +/*{"-font", ".font", XrmoptionSepArg, 0 },*/ + {"-alignment", ".alignment", XrmoptionSepArg, 0 }, + {"-left", ".alignment", XrmoptionNoArg, "Left" }, + {"-right", ".alignment", XrmoptionNoArg, "Right" }, + {"-center", ".alignment", XrmoptionNoArg, "Center" }, +}; + +static argtype vars[] = { + {&max_lines, "lines", "Integer", DEF_LINES, t_Int}, + {&font_size, "fontSize", "Float", DEF_FONT_SIZE, t_Float}, + {&target_columns, "columns", "Integer", DEF_COLUMNS, t_Int}, + {&alignment_str, "alignment", "Alignment", DEF_ALIGNMENT, t_String}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt fliptext_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + +/* Tabs are bad, mmmkay? */ + +static char * +untabify (const char *string) +{ + const char *ostring = string; + char *result = (char *) malloc ((strlen(string) * 8) + 1); + char *out = result; + int col = 0; + while (*string) + { + if (*string == '\t') + { + do { + col++; + *out++ = ' '; + } while (col % TAB_WIDTH); + string++; + } + else if (*string == '\r' || *string == '\n') + { + *out++ = *string++; + col = 0; + } + else if (*string == '\010') /* backspace */ + { + if (string > ostring) + out--, string++; + } + else + { + *out++ = *string++; + col++; + } + } + *out = 0; + + return result; +} + +static void +strip (char *s, Bool leading, Bool trailing) +{ + int L = strlen(s); + if (trailing) + while (L > 0 && (s[L-1] == ' ' || s[L-1] == '\t')) + s[L--] = 0; + if (leading) + { + char *s2 = s; + while (*s2 == ' ' || *s2 == '\t') + s2++; + if (s == s2) + return; + while (*s2) + *s++ = *s2++; + *s = 0; + } +} + + +static int +char_width (fliptext_configuration *sc, char c) +{ + XCharStruct e; + char s[2]; + s[0] = c; + s[1] = 0; + texture_string_metrics (sc->texfont, s, &e, 0, 0); + return e.width; +} + + +/* Returns a single line of text from the output buffer of the subprocess, + taking into account wrapping, centering, etc. Returns 0 if no complete + line is currently available. + */ +static char * +get_one_line (fliptext_configuration *sc) +{ + char *result = 0; + int wrap_pix = sc->font_wrap_pixels; + int col = 0; + int col_pix = 0; + char *s = sc->buf; + int target = sc->buf_size - sc->buf_tail - 2; + + /* Fill as much as we can into sc->buf, but stop at newline. + */ + while (target > 0) + { + int c = textclient_getc (sc->tc); + if (c <= 0) + break; + sc->buf[sc->buf_tail++] = (char) c; + sc->buf[sc->buf_tail] = 0; + target--; + if (c == '\r' || c == '\n') + break; + } + + while (!result) + { + int cw; + + if (s >= sc->buf + sc->buf_tail) + /* Reached end of buffer before end of line. Bail. */ + return 0; + + cw = char_width (sc, *s); + + if (*s == '\r' || *s == '\n' || + col_pix + cw >= wrap_pix) + { + int L = s - sc->buf; + + if (*s == '\r' || *s == '\n') + { + if (*s == '\r' && s[1] == '\n') /* swallow CRLF too */ + *s++ = 0; + + *s++ = 0; + } + else + { + /* We wrapped -- try to back up to the previous word boundary. */ + char *s2 = s; + int n = 0; + while (s2 > sc->buf && *s2 != ' ' && *s2 != '\t') + s2--, n++; + if (s2 > sc->buf) + { + s = s2; + *s++ = 0; + L = s - sc->buf; + } + } + + if (result) abort(); + result = (char *) malloc (L+1); + memcpy (result, sc->buf, L); + result[L] = 0; + + { + char *t = result; + char *ut = untabify (t); + strip (ut, (sc->alignment == 0), 1); /* if centering, strip + leading whitespace too */ + result = ut; + free (t); + } + + if (sc->buf_tail > (s - sc->buf)) + { + int i = sc->buf_tail - (s - sc->buf); + memmove (sc->buf, s, i); + sc->buf_tail = i; + sc->buf[sc->buf_tail] = 0; + } + else + { + sc->buf_tail = 0; + } + + sc->buf[sc->buf_tail] = 0; + s = sc->buf; + col = 0; + col_pix = 0; + } + else + { + col++; + col_pix += cw; + if (*s == '\t') + { + int tab_pix = TAB_WIDTH * sc->char_width; + col = TAB_WIDTH * ((col / TAB_WIDTH) + 1); + col_pix = tab_pix * ((col / tab_pix) + 1); + } + s++; + } + } + + return result; +} + + +static Bool +blank_p (const char *s) +{ + for (; *s; s++) + if (*s != ' ' && *s != '\t' && *s != '\r' && *s != '\n') + return False; + return True; +} + +/* Reads some text from the subprocess, and creates and returns a `line' + object. Adds that object to the lines list. Returns 0 if no text + available yet. + + If skip_blanks_p, then keep trying for new lines of text until we + get one that is not empty. + */ +static line * +make_line (fliptext_configuration *sc, Bool skip_blanks_p) +{ + XCharStruct e; + line *ln; + char *s; + + AGAIN: + s = get_one_line (sc); + if (s && skip_blanks_p && blank_p (s)) + { + free (s); + goto AGAIN; + } + + if (!s) return 0; + + ln = (line *) calloc (1, sizeof(*ln)); + ln->text = s; + ln->state = NEW; + texture_string_metrics (sc->texfont, s, &e, 0, 0); + ln->width = sc->font_scale * e.width; + ln->height = sc->font_scale * sc->line_height; + + memcpy (ln->color, sc->color, sizeof(ln->color)); + + sc->nlines++; + if (sc->lines_size <= sc->nlines) + { + sc->lines_size = (sc->lines_size * 1.2) + sc->nlines; + sc->lines = (line **) + realloc (sc->lines, sc->lines_size * sizeof(*sc->lines)); + if (! sc->lines) + { + fprintf (stderr, "%s: out of memory (%d lines)\n", + progname, sc->lines_size); + exit (1); + } + } + + sc->lines[sc->nlines-1] = ln; + return ln; +} + + +/* frees the object and removes it from the list. + */ +static void +free_line (fliptext_configuration *sc, line *line) +{ + int i; + for (i = 0; i < sc->nlines; i++) + if (sc->lines[i] == line) + break; + if (i == sc->nlines) abort(); + for (; i < sc->nlines-1; i++) + sc->lines[i] = sc->lines[i+1]; + sc->lines[i] = 0; + sc->nlines--; + + free (line->text); + free (line); +} + + +static void +draw_line (ModeInfo *mi, line *line) +{ + int wire = MI_IS_WIREFRAME(mi); + fliptext_configuration *sc = &scs[MI_SCREEN(mi)]; + + if (! line->text || !*line->text || + line->state == NEW || line->state == HESITATE || line->state == DEAD) + return; + + glPushMatrix(); + glTranslatef (line->current.x, line->current.y, line->current.z); + + glRotatef (line->cth, 0, 1, 0); + + if (sc->alignment == 1) + glTranslatef (-line->width, 0, 0); + else if (sc->alignment == 0) + glTranslatef (-line->width/2, 0, 0); + + glScalef (sc->font_scale, sc->font_scale, sc->font_scale); + + glColor4f (line->color[0], line->color[1], line->color[2], line->color[3]); + + if (!wire) + print_texture_string (sc->texfont, line->text); + else + { + int w, h; + char *s = line->text; + char c[2]; + c[1]=0; + glDisable (GL_TEXTURE_2D); + glColor3f (0.4, 0.4, 0.4); + while (*s) + { + XCharStruct e; + *c = *s++; + texture_string_metrics (sc->texfont, c, &e, 0, 0); + w = e.width; + h = e.ascent + e.descent; + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (w, 0, 0); + glVertex3f (w, h, 0); + glVertex3f (0, h, 0); + glEnd(); + glTranslatef (w, 0, 0); + } + } + +#if 0 + glDisable (GL_TEXTURE_2D); + glColor3f (0.4, 0.4, 0.4); + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (line->width/sc->font_scale, 0, 0); + glVertex3f (line->width/sc->font_scale, line->height/sc->font_scale, 0); + glVertex3f (0, line->height/sc->font_scale, 0); + glEnd(); + if (!wire) glEnable (GL_TEXTURE_2D); +#endif + + glPopMatrix(); + + mi->polygon_count += strlen (line->text); +} + +static void +tick_line (fliptext_configuration *sc, line *line) +{ + int stagger = 30; /* frames of delay between line spin-outs */ + int slide = 600; /* frames in a slide in/out */ + int linger = 0; /* frames to pause with no motion */ + double i, ii; + + if (line->state >= DEAD) abort(); + if (++line->step >= line->steps) + { + line->state++; + line->step = 0; + + if (linger == 0 && line->state == LINGER) + line->state++; + + if (sc->anim_type != SPIN) + stagger *= 2; + + switch (line->state) + { + case HESITATE: /* entering state HESITATE */ + switch (sc->anim_type) + { + case SPIN: + line->steps = (line->cluster_pos * stagger); + break; + case SCROLL_TOP: + line->steps = stagger * (line->cluster_size - line->cluster_pos); + break; + case SCROLL_BOTTOM: + line->steps = stagger * line->cluster_pos; + break; + default: + abort(); + } + break; + + case IN: + line->color[3] = 0; + switch (sc->anim_type) + { + case SCROLL_BOTTOM: /* entering state BOTTOM IN */ + line->from = sc->in; + line->to = sc->mid; + line->from.y = (sc->bottom_margin - + (line->height * + (line->cluster_pos + 1))); + line->to.y += (line->height * + ((line->cluster_size/2.0) - line->cluster_pos)); + line->steps = slide; + break; + + case SCROLL_TOP: /* entering state TOP IN */ + line->from = sc->in; + line->to = sc->mid; + line->from.y = (sc->top_margin + + (line->height * + (line->cluster_size - line->cluster_pos))); + line->to.y += (line->height * + ((line->cluster_size/2.0) - line->cluster_pos)); + line->steps = slide; + break; + + case SPIN: /* entering state SPIN IN */ + line->from = sc->in; + line->to = sc->mid; + line->to.y += (line->height * + ((line->cluster_size/2.0) - line->cluster_pos)); + line->from.y += (line->height * + ((line->cluster_size/2.0) - line->cluster_pos)); + + line->fth = 270; + line->tth = 0; + line->steps = slide; + break; + + default: + abort(); + } + break; + + case OUT: + switch (sc->anim_type) + { + case SCROLL_BOTTOM: /* entering state BOTTOM OUT */ + line->from = line->to; + line->to = sc->out; + line->to.y = (sc->top_margin + + (line->height * + (line->cluster_size - line->cluster_pos))); + line->steps = slide; + break; + + case SCROLL_TOP: /* entering state TOP OUT */ + line->from = line->to; + line->to = sc->out; + line->to.y = (sc->bottom_margin - + (line->height * + (line->cluster_pos + 1))); + line->steps = slide; + break; + + case SPIN: /* entering state SPIN OUT */ + line->from = line->to; + line->to = sc->out; + line->to.y += (line->height * + ((line->cluster_size/2.0) - line->cluster_pos)); + + line->fth = line->tth; + line->tth = -270; + line->steps = slide; + break; + + default: + abort(); + } + break; + + case LINGER: + line->from = line->to; + line->steps = linger; + break; + + default: + break; + } + + line->steps /= speed; + } + + switch (line->state) + { + case IN: + case OUT: + i = (double) line->step / line->steps; + + /* Move along the path exponentially, slow side towards the middle. */ + if (line->state == OUT) + ii = i * i; + else + ii = 1 - ((1-i) * (1-i)); + + line->current.x = line->from.x + (ii * (line->to.x - line->from.x)); + line->current.y = line->from.y + (ii * (line->to.y - line->from.y)); + line->current.z = line->from.z + (ii * (line->to.z - line->from.z)); + line->cth = line->fth + (ii * (line->tth - line->fth)); + + if (line->state == OUT) ii = 1-ii; + line->color[3] = sc->color[3] * ii; + break; + + case HESITATE: + case LINGER: + case DEAD: + break; + default: + abort(); + } +} + + +/* Start a new cluster of lines going. + Pick their anim type, and in, mid, and out positions. + */ +static void +reset_lines (ModeInfo *mi) +{ + fliptext_configuration *sc = &scs[MI_SCREEN(mi)]; + int i; + line *prev = 0; + GLfloat minx, maxx, miny, maxy, minz, maxz, maxw, maxh; + + sc->rotation.x = 5 - BELLRAND(10); + sc->rotation.y = 5 - BELLRAND(10); + sc->rotation.z = 5 - BELLRAND(10); + + switch (random() % 8) + { + case 0: sc->anim_type = SCROLL_TOP; break; + case 1: sc->anim_type = SCROLL_BOTTOM; break; + default: sc->anim_type = SPIN; break; + } + + minx = sc->left_margin * 0.9; + maxx = sc->right_margin * 0.9; + + miny = sc->bottom_margin * 0.9; + maxy = sc->top_margin * 0.9; + + minz = sc->left_margin * 5; + maxz = sc->right_margin * 2; + + maxw = sc->font_wrap_pixels * sc->font_scale; + maxh = max_lines * sc->line_height * sc->font_scale; + + if (maxw > maxx - minx) + maxw = maxx - minx; + if (maxh > maxy - miny) + maxh = maxy - miny; + + if (alignment_random_p) + sc->alignment = (random() % 3) - 1; + + if (sc->alignment == -1) maxx -= maxw; + else if (sc->alignment == 1) minx += maxw; + else minx += maxw/2, maxx -= maxw/2; + + miny += maxh/2; + maxy -= maxh/2; + + sc->mid.x = minx + frand (maxx - minx); + if (sc->anim_type == SPIN) + sc->mid.y = miny + BELLRAND (maxy - miny); + else + sc->mid.y = miny + frand (maxy - miny); + + sc->in.x = BELLRAND(sc->right_margin * 2) - sc->right_margin; + sc->out.x = BELLRAND(sc->right_margin * 2) - sc->right_margin; + + sc->in.y = miny + frand(maxy - miny); + sc->out.y = miny + frand(maxy - miny); + + sc->in.z = minz + frand(maxz - minz); + sc->out.z = minz + frand(maxz - minz); + + sc->mid.z = 0; + + if (sc->anim_type == SPIN && sc->in.z > 0) sc->in.z /= 4; + if (sc->anim_type == SPIN && sc->out.z > 0) sc->out.z /= 4; + + for (i = 0; i < max_lines; i++) + { + line *line = make_line (sc, (i == 0)); + if (!line) break; /* no text available */ + if (i >= min_lines && + (!line->text || !*line->text)) /* blank after min */ + break; + } + + for (i = 0; i < sc->nlines; i++) + { + line *line = sc->lines[i]; + if (!prev) + { + line->from.y = sc->bottom_margin; + line->to.y = 0; + } + else + { + line->from.y = prev->from.y - prev->height; + line->to.y = prev->to.y - prev->height; + } + line->cluster_pos = i; + line->cluster_size = sc->nlines; + prev = line; + } +} + + +static void +parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a) +{ + XColor c; + if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c)) + { + fprintf (stderr, "%s: can't parse %s color %s", progname, name, s); + exit (1); + } + a[0] = c.red / 65536.0; + a[1] = c.green / 65536.0; + a[2] = c.blue / 65536.0; + a[3] = 1.0; +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_fliptext (ModeInfo *mi, int width, int height) +{ + fliptext_configuration *sc = &scs[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (60.0, 1/h, 0.01, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 2.6, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); + + sc->right_margin = sc->top_margin / h; + sc->left_margin = -sc->right_margin; +} + + +ENTRYPOINT void +init_fliptext (ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + + fliptext_configuration *sc; + + MI_INIT(mi, scs); + + sc = &scs[MI_SCREEN(mi)]; + sc->lines = (line **) calloc (max_lines+1, sizeof(char *)); + + sc->dpy = MI_DISPLAY(mi); + + if ((sc->glx_context = init_GL(mi)) != NULL) { + reshape_fliptext (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + } + + { + XCharStruct e; + int cw, lh, ascent, descent; + sc->texfont = load_texture_font (MI_DISPLAY(mi), "font"); + check_gl_error ("loading font"); + texture_string_metrics (sc->texfont, "n", &e, &ascent, &descent); + cw = e.width; + lh = ascent + descent; + sc->char_width = cw; + sc->line_height = lh; + } + + if (!wire) + { + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_BLEND); + glEnable (GL_ALPHA_TEST); + glEnable (GL_TEXTURE_2D); + + /* "Anistropic filtering helps for quadrilateral-angled textures. + A sharper image is accomplished by interpolating and filtering + multiple samples from one or more mipmaps to better approximate + very distorted textures. This is the next level of filtering + after trilinear filtering." */ + if (strstr ((char *) glGetString(GL_EXTENSIONS), + "GL_EXT_texture_filter_anisotropic")) + { + GLfloat anisotropic = 0.0; + glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &anisotropic); + if (anisotropic >= 1.0) + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, + anisotropic); + } + } + + /* The default font is (by fiat) "18 points". + Interpret the user's font size request relative to that. + */ + sc->font_scale = 3 * (font_size / 18.0); + + if (target_columns <= 2) target_columns = 2; + + /* Figure out what the wrap column should be, in font-coordinate pixels. + Compute it from the given -columns value, but don't let it be wider + than the screen. + */ + { + GLfloat maxw = 110 * sc->line_height / sc->font_scale; /* magic... */ + sc->font_wrap_pixels = target_columns * sc->char_width; + if (sc->font_wrap_pixels > maxw || + sc->font_wrap_pixels <= 0) + sc->font_wrap_pixels = maxw; + } + + sc->buf_size = target_columns * max_lines; + sc->buf = (char *) calloc (1, sc->buf_size); + + alignment_random_p = False; + if (!alignment_str || !*alignment_str || + !strcasecmp(alignment_str, "left")) + sc->alignment = -1; + else if (!strcasecmp(alignment_str, "center") || + !strcasecmp(alignment_str, "middle")) + sc->alignment = 0; + else if (!strcasecmp(alignment_str, "right")) + sc->alignment = 1; + else if (!strcasecmp(alignment_str, "random")) + sc->alignment = -1, alignment_random_p = True; + + else + { + fprintf (stderr, + "%s: alignment must be left/center/right/random, not \"%s\"\n", + progname, alignment_str); + exit (1); + } + + sc->tc = textclient_open (sc->dpy); + + if (max_lines < 1) max_lines = 1; + min_lines = max_lines * 0.66; + if (min_lines > max_lines - 3) min_lines = max_lines - 4; + if (min_lines < 1) min_lines = 1; + + parse_color (mi, "foreground", + get_string_resource(mi->dpy, "foreground", "Foreground"), + sc->color); + + sc->top_margin = (sc->char_width * 100); + sc->bottom_margin = -sc->top_margin; + reshape_fliptext (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); /* compute left/right */ +} + + +ENTRYPOINT void +draw_fliptext (ModeInfo *mi) +{ + fliptext_configuration *sc = &scs[MI_SCREEN(mi)]; +/* XtAppContext app = XtDisplayToApplicationContext (sc->dpy);*/ + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!sc->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->glx_context)); + +#if 0 + if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput)) + XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput); +#endif + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + mi->polygon_count = 0; + + glPushMatrix(); + glRotatef(current_device_rotation(), 0, 0, 1); + { + GLfloat s = 3.0 / (sc->top_margin - sc->bottom_margin); + glScalef(s, s, s); + } + + glRotatef (sc->rotation.x, 1, 0, 0); + glRotatef (sc->rotation.y, 0, 1, 0); + glRotatef (sc->rotation.z, 0, 0, 1); + +#if 0 + glDisable (GL_TEXTURE_2D); + glColor3f (1,1,1); + glBegin (GL_LINE_LOOP); + glVertex3f (sc->left_margin, sc->top_margin, 0); + glVertex3f (sc->right_margin, sc->top_margin, 0); + glVertex3f (sc->right_margin, sc->bottom_margin, 0); + glVertex3f (sc->left_margin, sc->bottom_margin, 0); + glEnd(); + glBegin (GL_LINES); + glVertex3f (sc->in.x, sc->top_margin, sc->in.z); + glVertex3f (sc->in.x, sc->bottom_margin, sc->in.z); + glVertex3f (sc->mid.x, sc->top_margin, sc->mid.z); + glVertex3f (sc->mid.x, sc->bottom_margin, sc->mid.z); + glVertex3f (sc->out.x, sc->top_margin, sc->out.z); + glVertex3f (sc->out.x, sc->bottom_margin, sc->out.z); + glEnd(); + glEnable (GL_TEXTURE_2D); +#endif + + for (i = 0; i < sc->nlines; i++) + { + line *line = sc->lines[i]; + draw_line (mi, line); + tick_line (sc, line); + } + + for (i = sc->nlines-1; i >= 0; i--) + { + line *line = sc->lines[i]; + if (line->state == DEAD) + free_line (sc, line); + } + + if (sc->nlines == 0) + reset_lines (mi); + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT void +free_fliptext (ModeInfo *mi) +{ + fliptext_configuration *sc = &scs[MI_SCREEN(mi)]; + if (sc->tc) + textclient_close (sc->tc); + free(sc->lines); + + /* #### there's more to free here */ +} + +XSCREENSAVER_MODULE ("FlipText", fliptext) + +#endif /* USE_GL */ diff --git a/hacks/glx/fliptext.man b/hacks/glx/fliptext.man new file mode 100644 index 0000000..8d2915e --- /dev/null +++ b/hacks/glx/fliptext.man @@ -0,0 +1,114 @@ +.TH XScreenSaver 1 "20-Mar-2005" "X Version 11" +.SH NAME +fliptext - draws pages of text whose lines transparently flip around +.SH SYNOPSIS +.B fliptext +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] +[\-delay \fImicroseconds\fP] +[\-program \fIcommand\fP] +[\-size \fIinteger\fP ] +[\-columns \fIinteger\fP] +[\-left | \-center | \-right] +[\-lines \fIinteger\fP] +[\-speed \fIfloat\fP] +[\-delay \fIusecs\fP] +[\-font \fIxlfd\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIfliptext\fP program runs another program to generate a stream of +text, then animates the lines of that text transparently flipping in +and out in 3D. +.SH OPTIONS +.I fliptext +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-program \fIsh-command\fP +This program will be run periodically, and its output will be the text +that is displayed. Default \fIxscreensaver\-text\fP. + +You can configure the text printed through the "Advanced" tab of +.BR xscreensaver\-demo (1), +or by editing your ~/.xscreensaver file. +.TP 8 +.B \-size \fIinteger\fP +How large a font to use, in points. (Well, in some arbitrary unit +we're calling "points" for the sake of argument.) Default: 20. +.TP 8 +.B \-columns \fIinteger\fP +At (approximately) what column to wrap lines. Default 80. Wrapping is +done by pixels, not characters, and lines will always wrap at the +edge of the screen regardless. +.TP 8 +.B \-left | \-center | \-right +Whether to align the text flush left, centered, or flush right. +The default is to choose randomly each time a new screen of text +is displayed. +.TP 8 +.B \-lines \fIinteger\fP +How many lines of text should be shown at once. Default 8. +.TP 8 +.B \-speed \fIratio\fP +Change the animation speed; 0.5 to go half as fast, 2.0 to go twice as fast. +.TP 8 +.B \-delay \fIusecs\fP +The delay between frames of the animation; default is 10000 (1/10th second.) +.TP 8 +.B \-font \fIfont-name\fP +The name of the font to use. For best effect, this should be a large +font (at least 36 points.) The bigger the font, the better looking the +characters will be. Note that the size of this font affects only the +clarity of the characters, not their size on the screen: for that, use +the \fI\-size\fP or \fI\-columns\fP options. + +Default: -*-utopia-bold-r-normal-*-*-720-*-*-*-*-iso8859-1 +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR xscreensaver (1), +.BR xscreensaver-text (1), +.BR fortune (1), +.BR phosphor (MANSUFFIX), +.BR apple2 (MANSUFFIX), +.BR fontglide (MANSUFFIX), +.BR ljlatest (MANSUFFIX), +.BR dadadodo (1), +.BR webcollage (MANSUFFIX), +.BR driftnet (1) +.BR EtherPEG , +.BR EtherPeek +.SH COPYRIGHT +Copyright \(co 2005 by Jamie Zawinski. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +Jamie Zawinski diff --git a/hacks/glx/flurry-smoke.c b/hacks/glx/flurry-smoke.c new file mode 100644 index 0000000..245e9f1 --- /dev/null +++ b/hacks/glx/flurry-smoke.c @@ -0,0 +1,1441 @@ +/* + +Copyright (c) 2002, Calum Robinson +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* Smoke.cpp: implementation of the Smoke class. */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "flurry.h" + +#define MAXANGLES 16384 +#define NOT_QUITE_DEAD 3 + +#define intensity 75000.0f; + +void InitSmoke(SmokeV *s) +{ + int i; + s->nextParticle = 0; + s->nextSubParticle = 0; + s->lastParticleTime = 0.25f; + s->firstTime = 1; + s->frame = 0; + for (i=0;i<3;i++) { + s->old[i] = RandFlt(-100.0, 100.0); + } +} + +void UpdateSmoke_ScalarBase(global_info_t *global, flurry_info_t *flurry, SmokeV *s) +{ + int i,j,k; + float sx = flurry->star->position[0]; + float sy = flurry->star->position[1]; + float sz = flurry->star->position[2]; + double frameRate; + double frameRateModifier; + + + s->frame++; + + if(!s->firstTime) { + /* release 12 puffs every frame */ + if(flurry->fTime - s->lastParticleTime >= 1.0f / 121.0f) { + float dx,dy,dz,deltax,deltay,deltaz; + float f; + float rsquared; + float mag; + + dx = s->old[0] - sx; + dy = s->old[1] - sy; + dz = s->old[2] - sz; + mag = 5.0f; + deltax = (dx * mag); + deltay = (dy * mag); + deltaz = (dz * mag); + for(i=0;inumStreams;i++) { + float streamSpeedCoherenceFactor; + + s->p[s->nextParticle].delta[0].f[s->nextSubParticle] = deltax; + s->p[s->nextParticle].delta[1].f[s->nextSubParticle] = deltay; + s->p[s->nextParticle].delta[2].f[s->nextSubParticle] = deltaz; + s->p[s->nextParticle].position[0].f[s->nextSubParticle] = sx; + s->p[s->nextParticle].position[1].f[s->nextSubParticle] = sy; + s->p[s->nextParticle].position[2].f[s->nextSubParticle] = sz; + s->p[s->nextParticle].oldposition[0].f[s->nextSubParticle] = sx; + s->p[s->nextParticle].oldposition[1].f[s->nextSubParticle] = sy; + s->p[s->nextParticle].oldposition[2].f[s->nextSubParticle] = sz; + streamSpeedCoherenceFactor = MAX_(0.0f,1.0f + RandBell(0.25f*incohesion)); + dx = s->p[s->nextParticle].position[0].f[s->nextSubParticle] - flurry->spark[i]->position[0]; + dy = s->p[s->nextParticle].position[1].f[s->nextSubParticle] - flurry->spark[i]->position[1]; + dz = s->p[s->nextParticle].position[2].f[s->nextSubParticle] - flurry->spark[i]->position[2]; + rsquared = (dx*dx+dy*dy+dz*dz); + f = streamSpeed * streamSpeedCoherenceFactor; + + mag = f / (float) sqrt(rsquared); + + s->p[s->nextParticle].delta[0].f[s->nextSubParticle] -= (dx * mag); + s->p[s->nextParticle].delta[1].f[s->nextSubParticle] -= (dy * mag); + s->p[s->nextParticle].delta[2].f[s->nextSubParticle] -= (dz * mag); + s->p[s->nextParticle].color[0].f[s->nextSubParticle] = flurry->spark[i]->color[0] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[1].f[s->nextSubParticle] = flurry->spark[i]->color[1] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[2].f[s->nextSubParticle] = flurry->spark[i]->color[2] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[3].f[s->nextSubParticle] = 0.85f * (1.0f + RandBell(0.5f*colorIncoherence)); + s->p[s->nextParticle].time.f[s->nextSubParticle] = flurry->fTime; + s->p[s->nextParticle].dead.i[s->nextSubParticle] = 0; + s->p[s->nextParticle].animFrame.i[s->nextSubParticle] = random()&63; + s->nextSubParticle++; + if (s->nextSubParticle==4) { + s->nextParticle++; + s->nextSubParticle=0; + } + if (s->nextParticle >= NUMSMOKEPARTICLES/4) { + s->nextParticle = 0; + s->nextSubParticle = 0; + } + } + + s->lastParticleTime = flurry->fTime; + } + } else { + s->lastParticleTime = flurry->fTime; + s->firstTime = 0; + } + + for(i=0;i<3;i++) { + s->old[i] = flurry->star->position[i]; + } + + frameRate = ((double) flurry->dframe)/(flurry->fTime); + frameRateModifier = 42.5f / frameRate; + + for(i=0;ip[i].dead.i[k]) { + continue; + } + + deltax = s->p[i].delta[0].f[k]; + deltay = s->p[i].delta[1].f[k]; + deltaz = s->p[i].delta[2].f[k]; + + for(j=0;jnumStreams;j++) { + dx = s->p[i].position[0].f[k] - flurry->spark[j]->position[0]; + dy = s->p[i].position[1].f[k] - flurry->spark[j]->position[1]; + dz = s->p[i].position[2].f[k] - flurry->spark[j]->position[2]; + rsquared = (dx*dx+dy*dy+dz*dz); + + f = (gravity/rsquared) * frameRateModifier; + + if ((((i*4)+k) % flurry->numStreams) == j) { + f *= 1.0f + streamBias; + } + mag = f / (float) sqrt(rsquared); + + deltax -= (dx * mag); + deltay -= (dy * mag); + deltaz -= (dz * mag); + } + + /* slow this particle down by flurry->drag */ + deltax *= flurry->drag; + deltay *= flurry->drag; + deltaz *= flurry->drag; + + if((deltax*deltax+deltay*deltay+deltaz*deltaz) >= 25000000.0f) { + s->p[i].dead.i[k] = 1; + continue; + } + + /* update the position */ + s->p[i].delta[0].f[k] = deltax; + s->p[i].delta[1].f[k] = deltay; + s->p[i].delta[2].f[k] = deltaz; + for(j=0;j<3;j++) { + s->p[i].oldposition[j].f[k] = s->p[i].position[j].f[k]; + s->p[i].position[j].f[k] += (s->p[i].delta[j].f[k])*flurry->fDeltaTime; + } + } + } +} + +#if 0 +#ifdef __ppc__ + +void UpdateSmoke_ScalarFrsqrte(global_info_t *global, flurry_info_t *flurry, SmokeV *s) +{ + int i,j,k; + float sx = flurry->star->position[0]; + float sy = flurry->star->position[1]; + float sz = flurry->star->position[2]; + double frameRate; + double frameRateModifier; + + + s->frame++; + + if(!s->firstTime) { + /* release 12 puffs every frame */ + if(flurry->fTime - s->lastParticleTime >= 1.0f / 121.0f) { + float dx,dy,dz,deltax,deltay,deltaz; + float f; + float rsquared; + float mag; + + dx = s->old[0] - sx; + dy = s->old[1] - sy; + dz = s->old[2] - sz; + mag = 5.0f; + deltax = (dx * mag); + deltay = (dy * mag); + deltaz = (dz * mag); + for(i=0;inumStreams;i++) { + float streamSpeedCoherenceFactor; + + s->p[s->nextParticle].delta[0].f[s->nextSubParticle] = deltax; + s->p[s->nextParticle].delta[1].f[s->nextSubParticle] = deltay; + s->p[s->nextParticle].delta[2].f[s->nextSubParticle] = deltaz; + s->p[s->nextParticle].position[0].f[s->nextSubParticle] = sx; + s->p[s->nextParticle].position[1].f[s->nextSubParticle] = sy; + s->p[s->nextParticle].position[2].f[s->nextSubParticle] = sz; + s->p[s->nextParticle].oldposition[0].f[s->nextSubParticle] = sx; + s->p[s->nextParticle].oldposition[1].f[s->nextSubParticle] = sy; + s->p[s->nextParticle].oldposition[2].f[s->nextSubParticle] = sz; + streamSpeedCoherenceFactor = MAX_(0.0f,1.0f + RandBell(0.25f*incohesion)); + dx = s->p[s->nextParticle].position[0].f[s->nextSubParticle] - flurry->spark[i]->position[0]; + dy = s->p[s->nextParticle].position[1].f[s->nextSubParticle] - flurry->spark[i]->position[1]; + dz = s->p[s->nextParticle].position[2].f[s->nextSubParticle] - flurry->spark[i]->position[2]; + rsquared = (dx*dx+dy*dy+dz*dz); + f = streamSpeed * streamSpeedCoherenceFactor; + + mag = f / (float) sqrt(rsquared); + /* + reciprocal square-root estimate replaced above divide and call to system sqrt() + + asm("frsqrte %0, %1" : "=f" (mag) : "f" (rsquared)); + mag *= f; + */ + + s->p[s->nextParticle].delta[0].f[s->nextSubParticle] -= (dx * mag); + s->p[s->nextParticle].delta[1].f[s->nextSubParticle] -= (dy * mag); + s->p[s->nextParticle].delta[2].f[s->nextSubParticle] -= (dz * mag); + s->p[s->nextParticle].color[0].f[s->nextSubParticle] = flurry->spark[i]->color[0] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[1].f[s->nextSubParticle] = flurry->spark[i]->color[1] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[2].f[s->nextSubParticle] = flurry->spark[i]->color[2] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[3].f[s->nextSubParticle] = 0.85f * (1.0f + RandBell(0.5f*colorIncoherence)); + s->p[s->nextParticle].time.f[s->nextSubParticle] = flurry->fTime; + s->p[s->nextParticle].dead.i[s->nextSubParticle] = 0; + s->p[s->nextParticle].animFrame.i[s->nextSubParticle] = random()&63; + s->nextSubParticle++; + if (s->nextSubParticle==4) { + s->nextParticle++; + s->nextSubParticle=0; + } + if (s->nextParticle >= NUMSMOKEPARTICLES/4) { + s->nextParticle = 0; + s->nextSubParticle = 0; + } + } + + s->lastParticleTime = flurry->fTime; + } + } else { + s->lastParticleTime = flurry->fTime; + s->firstTime = 0; + } + + for(i=0;i<3;i++) { + s->old[i] = flurry->star->position[i]; + } + + frameRate = ((double) flurry->dframe)/(flurry->fTime); + frameRateModifier = 42.5f / frameRate; + + for(i=0;ip[i].dead.i[k]) { + continue; + } + + deltax = s->p[i].delta[0].f[k]; + deltay = s->p[i].delta[1].f[k]; + deltaz = s->p[i].delta[2].f[k]; + + for(j=0;jnumStreams;j++) { + dx = s->p[i].position[0].f[k] - flurry->spark[j]->position[0]; + dy = s->p[i].position[1].f[k] - flurry->spark[j]->position[1]; + dz = s->p[i].position[2].f[k] - flurry->spark[j]->position[2]; + rsquared = (dx*dx+dy*dy+dz*dz); + + /* + asm("fres %0, %1" : "=f" (f) : "f" (rsquared)); + f *= gravity*frameRateModifier; + */ + f = ( gravity * frameRateModifier ) / rsquared; + + if((((i*4)+k) % flurry->numStreams) == j) { + f *= 1.0f + streamBias; + } + + mag = f / (float) sqrt(rsquared); + + /* reciprocal square-root estimate replaced above divide and call to system sqrt() */ + + deltax -= (dx * mag); + deltay -= (dy * mag); + deltaz -= (dz * mag); + } + + /* slow this particle down by flurry->drag */ + deltax *= flurry->drag; + deltay *= flurry->drag; + deltaz *= flurry->drag; + + if((deltax*deltax+deltay*deltay+deltaz*deltaz) >= 25000000.0f) { + s->p[i].dead.i[k] = 1; + continue; + } + + /* update the position */ + s->p[i].delta[0].f[k] = deltax; + s->p[i].delta[1].f[k] = deltay; + s->p[i].delta[2].f[k] = deltaz; + for(j=0;j<3;j++) { + s->p[i].oldposition[j].f[k] = s->p[i].position[j].f[k]; + s->p[i].position[j].f[k] += (s->p[i].delta[j].f[k])*flurry->fDeltaTime; + } + } + } +} + +#endif + +#ifdef __VEC__ + +void UpdateSmoke_VectorBase(global_info_t *global, flurry_info_t *flurry, SmokeV *s) +{ + unsigned int i,j; + float sx = flurry->star->position[0]; + float sy = flurry->star->position[1]; + float sz = flurry->star->position[2]; + double frameRate; + floatToVector frameRateModifier; + floatToVector gravityV; + floatToVector dragV; + floatToVector deltaTimeV; + const vector float deadConst = (vector float) (25000000.0,25000000.0,25000000.0,25000000.0); + const vector float zero = (vector float)(0.0, 0.0, 0.0, 0.0); + const vector float biasConst = (vector float)(streamBias); + + gravityV.f[0] = gravity; + gravityV.v = (vector float) vec_splat((vector unsigned int)gravityV.v, 0); + + dragV.f[0] = flurry->drag; + dragV.v = (vector float) vec_splat((vector unsigned int)dragV.v, 0); + + deltaTimeV.f[0] = flurry->fDeltaTime; + deltaTimeV.v = (vector float) vec_splat((vector unsigned int)deltaTimeV.v, 0); + + s->frame++; + + if(!s->firstTime) { + /* release 12 puffs every frame */ + if(flurry->fTime - s->lastParticleTime >= 1.0f / 121.0f) { + float dx,dy,dz,deltax,deltay,deltaz; + float f; + float rsquared; + float mag; + + dx = s->old[0] - sx; + dy = s->old[1] - sy; + dz = s->old[2] - sz; + mag = 5.0f; + deltax = (dx * mag); + deltay = (dy * mag); + deltaz = (dz * mag); + for(i=0;inumStreams;i++) { + float streamSpeedCoherenceFactor; + + s->p[s->nextParticle].delta[0].f[s->nextSubParticle] = deltax; + s->p[s->nextParticle].delta[1].f[s->nextSubParticle] = deltay; + s->p[s->nextParticle].delta[2].f[s->nextSubParticle] = deltaz; + s->p[s->nextParticle].position[0].f[s->nextSubParticle] = sx; + s->p[s->nextParticle].position[1].f[s->nextSubParticle] = sy; + s->p[s->nextParticle].position[2].f[s->nextSubParticle] = sz; + s->p[s->nextParticle].oldposition[0].f[s->nextSubParticle] = sx; + s->p[s->nextParticle].oldposition[1].f[s->nextSubParticle] = sy; + s->p[s->nextParticle].oldposition[2].f[s->nextSubParticle] = sz; + streamSpeedCoherenceFactor = MAX_(0.0f,1.0f + RandBell(0.25f*incohesion)); + dx = s->p[s->nextParticle].position[0].f[s->nextSubParticle] - flurry->spark[i]->position[0]; + dy = s->p[s->nextParticle].position[1].f[s->nextSubParticle] - flurry->spark[i]->position[1]; + dz = s->p[s->nextParticle].position[2].f[s->nextSubParticle] - flurry->spark[i]->position[2]; + rsquared = (dx*dx+dy*dy+dz*dz); + f = streamSpeed * streamSpeedCoherenceFactor; + + mag = f / (float) sqrt(rsquared); + /* + asm("frsqrte %0, %1" : "=f" (mag) : "f" (rsquared)); + mag *= f; + */ + + s->p[s->nextParticle].delta[0].f[s->nextSubParticle] -= (dx * mag); + s->p[s->nextParticle].delta[1].f[s->nextSubParticle] -= (dy * mag); + s->p[s->nextParticle].delta[2].f[s->nextSubParticle] -= (dz * mag); + s->p[s->nextParticle].color[0].f[s->nextSubParticle] = flurry->spark[i]->color[0] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[1].f[s->nextSubParticle] = flurry->spark[i]->color[1] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[2].f[s->nextSubParticle] = flurry->spark[i]->color[2] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[3].f[s->nextSubParticle] = 0.85f * (1.0f + RandBell(0.5f*colorIncoherence)); + s->p[s->nextParticle].time.f[s->nextSubParticle] = flurry->fTime; + s->p[s->nextParticle].dead.i[s->nextSubParticle] = 0; + s->p[s->nextParticle].animFrame.i[s->nextSubParticle] = random()&63; + s->nextSubParticle++; + if (s->nextSubParticle==4) { + s->nextParticle++; + s->nextSubParticle=0; + } + if (s->nextParticle >= NUMSMOKEPARTICLES/4) { + s->nextParticle = 0; + s->nextSubParticle = 0; + } + } + + s->lastParticleTime = flurry->fTime; + } + } else { + s->lastParticleTime = flurry->fTime; + s->firstTime = 0; + } + + for(i=0;i<3;i++) { + s->old[i] = flurry->star->position[i]; + } + + frameRate = ((double) flurry->dframe)/(flurry->fTime); + frameRateModifier.f[0] = 42.5f / frameRate; + frameRateModifier.v = (vector float) vec_splat((vector unsigned int)frameRateModifier.v, 0); + + frameRateModifier.v = vec_madd(frameRateModifier.v, gravityV.v, zero); + + for(i=0;ip[i+4])), 0x00020200, 3); + + if (vec_all_ne(s->p[i].dead.v, (vector unsigned int)(0))) { + continue; + } + + deltax = s->p[i].delta[0].v; + deltay = s->p[i].delta[1].v; + deltaz = s->p[i].delta[2].v; + + mod.i[0] = (i<<2 + 0) % flurry->numStreams; + if(mod.i[0]+1 == flurry->numStreams) { + mod.i[1] = 0; + } else { + mod.i[1] = mod.i[0]+1; + } + if(mod.i[1]+1 == flurry->numStreams) { + mod.i[2] = 0; + } else { + mod.i[2] = mod.i[1]+1; + } + if(mod.i[2]+1 == flurry->numStreams) { + mod.i[3] = 0; + } else { + mod.i[3] = mod.i[2]+1; + } + + jVec = vec_xor(jVec, jVec); + + vec_dst( &flurry->spark[0]->position[0], 0x16020160, 3 ); + for(j=0; jnumStreams;j++) { + vector float ip0, ip1 = (vector float)(0.0), ip2; + vector float dx, dy, dz; + vector float rsquared, f; + vector float one_over_rsquared; + vector float biasTemp; + vector float mag; + vector bool int biasOr; + + ip0 = vec_ld(0, flurry->spark[j]->position); + if(((int)(flurry->spark[j]->position) & 0xF)>=8) { + ip1 = vec_ld(16, flurry->spark[j]->position); + } + + ip0 = vec_perm(ip0, ip1, vec_lvsl(0, flurry->spark[j]->position)); + ip1 = (vector float) vec_splat((vector unsigned int)ip0, 1); + ip2 = (vector float) vec_splat((vector unsigned int)ip0, 2); + ip0 = (vector float) vec_splat((vector unsigned int)ip0, 0); + + dx = vec_sub(s->p[i].position[0].v, ip0); + dy = vec_sub(s->p[i].position[1].v, ip1); + dz = vec_sub(s->p[i].position[2].v, ip2); + + rsquared = vec_madd(dx, dx, zero); + rsquared = vec_madd(dy, dy, rsquared); + rsquared = vec_madd(dz, dz, rsquared); + + biasOr = vec_cmpeq(jVec, mod.v); + biasTemp = vec_add(vec_and(biasOr, biasConst), (vector float)(1.0)); + + f = vec_madd(biasTemp, frameRateModifier.v, zero); + one_over_rsquared = vec_re(rsquared); + f = vec_madd(f, one_over_rsquared, zero); + + mag = vec_rsqrte(rsquared); + mag = vec_madd(mag, f, zero); + + deltax = vec_nmsub(dx, mag, deltax); + deltay = vec_nmsub(dy, mag, deltay); + deltaz = vec_nmsub(dz, mag, deltaz); + + jVec = vec_add(jVec, (vector unsigned int)(1)); + } + + /* slow this particle down by flurry->drag */ + deltax = vec_madd(deltax, dragV.v, zero); + deltay = vec_madd(deltay, dragV.v, zero); + deltaz = vec_madd(deltaz, dragV.v, zero); + + distTemp = vec_madd(deltax, deltax, zero); + distTemp = vec_madd(deltay, deltay, distTemp); + distTemp = vec_madd(deltaz, deltaz, distTemp); + + deadTemp = (vector unsigned int) vec_cmpge(distTemp, deadConst); + deadTemp = vec_and((vector unsigned int)vec_splat_u32(1), deadTemp); + s->p[i].dead.v = vec_or(s->p[i].dead.v, deadTemp); + if (vec_all_ne(s->p[i].dead.v, (vector unsigned int)(0))) { + continue; + } + + /* update the position */ + s->p[i].delta[0].v = deltax; + s->p[i].delta[1].v = deltay; + s->p[i].delta[2].v = deltaz; + for(j=0;j<3;j++) { + s->p[i].oldposition[j].v = s->p[i].position[j].v; + s->p[i].position[j].v = vec_madd(s->p[i].delta[j].v, deltaTimeV.v, s->p[i].position[j].v); + } + } +} + +void UpdateSmoke_VectorUnrolled(global_info_t *info, SmokeV *s) +{ + unsigned int i,j; + float sx = flurry->star->position[0]; + float sy = flurry->star->position[1]; + float sz = flurry->star->position[2]; + double frameRate; + floatToVector frameRateModifier; + floatToVector gravityV; + floatToVector dragV; + floatToVector deltaTimeV; + const vector float deadConst = (vector float) (25000000.0,25000000.0,25000000.0,25000000.0); + const vector float zero = (vector float)(0.0, 0.0, 0.0, 0.0); + const vector float biasConst = (vector float)(streamBias); + + gravityV.f[0] = gravity; + gravityV.v = (vector float) vec_splat((vector unsigned int)gravityV.v, 0); + + dragV.f[0] = flurry->drag; + dragV.v = (vector float) vec_splat((vector unsigned int)dragV.v, 0); + + deltaTimeV.f[0] = flurry->fDeltaTime; + deltaTimeV.v = (vector float) vec_splat((vector unsigned int)deltaTimeV.v, 0); + + s->frame++; + + if(!s->firstTime) { + /* release 12 puffs every frame */ + if(flurry->fTime - s->lastParticleTime >= 1.0f / 121.0f) { + float dx,dy,dz,deltax,deltay,deltaz; + float f; + float rsquared; + float mag; + + dx = s->old[0] - sx; + dy = s->old[1] - sy; + dz = s->old[2] - sz; + mag = 5.0f; + deltax = (dx * mag); + deltay = (dy * mag); + deltaz = (dz * mag); + for(i=0;inumStreams;i++) { + float streamSpeedCoherenceFactor; + + s->p[s->nextParticle].delta[0].f[s->nextSubParticle] = deltax; + s->p[s->nextParticle].delta[1].f[s->nextSubParticle] = deltay; + s->p[s->nextParticle].delta[2].f[s->nextSubParticle] = deltaz; + s->p[s->nextParticle].position[0].f[s->nextSubParticle] = sx; + s->p[s->nextParticle].position[1].f[s->nextSubParticle] = sy; + s->p[s->nextParticle].position[2].f[s->nextSubParticle] = sz; + s->p[s->nextParticle].oldposition[0].f[s->nextSubParticle] = sx; + s->p[s->nextParticle].oldposition[1].f[s->nextSubParticle] = sy; + s->p[s->nextParticle].oldposition[2].f[s->nextSubParticle] = sz; + streamSpeedCoherenceFactor = MAX_(0.0f,1.0f + RandBell(0.25f*incohesion)); + dx = s->p[s->nextParticle].position[0].f[s->nextSubParticle] - flurry->spark[i]->position[0]; + dy = s->p[s->nextParticle].position[1].f[s->nextSubParticle] - flurry->spark[i]->position[1]; + dz = s->p[s->nextParticle].position[2].f[s->nextSubParticle] - flurry->spark[i]->position[2]; + rsquared = (dx*dx+dy*dy+dz*dz); + f = streamSpeed * streamSpeedCoherenceFactor; + + mag = f / (float) sqrt(rsquared); + /* + asm("frsqrte %0, %1" : "=f" (mag) : "f" (rsquared)); + mag *= f; + */ + + s->p[s->nextParticle].delta[0].f[s->nextSubParticle] -= (dx * mag); + s->p[s->nextParticle].delta[1].f[s->nextSubParticle] -= (dy * mag); + s->p[s->nextParticle].delta[2].f[s->nextSubParticle] -= (dz * mag); + s->p[s->nextParticle].color[0].f[s->nextSubParticle] = flurry->spark[i]->color[0] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[1].f[s->nextSubParticle] = flurry->spark[i]->color[1] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[2].f[s->nextSubParticle] = flurry->spark[i]->color[2] * (1.0f + RandBell(colorIncoherence)); + s->p[s->nextParticle].color[3].f[s->nextSubParticle] = 0.85f * (1.0f + RandBell(0.5f*colorIncoherence)); + s->p[s->nextParticle].time.f[s->nextSubParticle] = flurry->fTime; + s->p[s->nextParticle].dead.i[s->nextSubParticle] = 0; + s->p[s->nextParticle].animFrame.i[s->nextSubParticle] = random()&63; + s->nextSubParticle++; + if (s->nextSubParticle==4) { + s->nextParticle++; + s->nextSubParticle=0; + } + if (s->nextParticle >= NUMSMOKEPARTICLES/4) { + s->nextParticle = 0; + s->nextSubParticle = 0; + } + } + + s->lastParticleTime = flurry->fTime; + } + } else { + s->lastParticleTime = flurry->fTime; + s->firstTime = 0; + } + + for(i=0;i<3;i++) { + s->old[i] = flurry->star->position[i]; + } + + frameRate = ((double) flurry->dframe)/(flurry->fTime); + frameRateModifier.f[0] = 42.5f / frameRate; + frameRateModifier.v = (vector float) vec_splat((vector unsigned int)frameRateModifier.v, 0); + + frameRateModifier.v = vec_madd(frameRateModifier.v, gravityV.v, zero); + + for(i=0;ip[i+4])), 0x00020200, 3); + + if (vec_all_ne(s->p[i].dead.v, (vector unsigned int)(0))) { + continue; + } + + deltax = s->p[i].delta[0].v; + deltay = s->p[i].delta[1].v; + deltaz = s->p[i].delta[2].v; + + mod.i[0] = (i<<2 + 0) % flurry->numStreams; + if(mod.i[0]+1 == flurry->numStreams) { + mod.i[1] = 0; + } else { + mod.i[1] = mod.i[0]+1; + } + if(mod.i[1]+1 == flurry->numStreams) { + mod.i[2] = 0; + } else { + mod.i[2] = mod.i[1]+1; + } + if(mod.i[2]+1 == flurry->numStreams) { + mod.i[3] = 0; + } else { + mod.i[3] = mod.i[2]+1; + } + + jVec = vec_xor(jVec, jVec); + + vec_dst( &flurry->spark[0]->position[0], 0x16020160, 3 ); + for(j=0; j + 3 < flurry->numStreams;j+=4) + { + vector float dxa, dya, dza; + vector float dxb, dyb, dzb; + vector float dxc, dyc, dzc; + vector float dxd, dyd, dzd; + vector float ip0a, ip1a; + vector float ip0b, ip1b; + vector float ip0c, ip1c; + vector float ip0d, ip1d; + vector float rsquaredA; + vector float rsquaredB; + vector float rsquaredC; + vector float rsquaredD; + vector float fA, fB, fC, fD; + vector float biasTempA; + vector float biasTempB; + vector float biasTempC; + vector float biasTempD; + vector float magA; + vector float magB; + vector float magC; + vector float magD; + + vector float one_over_rsquaredA; + vector float one_over_rsquaredB; + vector float one_over_rsquaredC; + vector float one_over_rsquaredD; + vector bool int biasOrA,biasOrB,biasOrC,biasOrD; + + /* load vectors */ + ip0a = vec_ld(0, flurry->spark[j]->position); + ip0b = vec_ld(0, flurry->spark[j+1]->position); + ip0c = vec_ld(0, flurry->spark[j+2]->position); + ip0d = vec_ld(0, flurry->spark[j+3]->position); + ip1a = vec_ld( 12, flurry->spark[j]->position ); + ip1b = vec_ld( 12, flurry->spark[j+1]->position ); + ip1c = vec_ld( 12, flurry->spark[j+2]->position ); + ip1d = vec_ld( 12, flurry->spark[j+3]->position ); + + /* align them */ + ip0a = vec_perm(ip0a, ip1a, vec_lvsl(0, flurry->spark[j]->position)); + ip0b = vec_perm(ip0b, ip1b, vec_lvsl(0, flurry->spark[j+1]->position)); + ip0c = vec_perm(ip0c, ip1c, vec_lvsl(0, flurry->spark[j+2]->position)); + ip0d = vec_perm(ip0d, ip1d, vec_lvsl(0, flurry->spark[j+3]->position)); + + dxa = vec_splat( ip0a, 0 ); + dxb = vec_splat( ip0b, 0 ); + dxc = vec_splat( ip0c, 0 ); + dxd = vec_splat( ip0d, 0 ); + dxa = vec_sub( s->p[i].position[0].v, dxa ); + dxb = vec_sub( s->p[i].position[0].v, dxb ); + dxc = vec_sub( s->p[i].position[0].v, dxc ); + dxd = vec_sub( s->p[i].position[0].v, dxd ); + + dya = vec_splat( ip0a, 1 ); + dyb = vec_splat( ip0b, 1 ); + dyc = vec_splat( ip0c, 1 ); + dyd = vec_splat( ip0d, 1 ); + dya = vec_sub( s->p[i].position[1].v, dya ); + dyb = vec_sub( s->p[i].position[1].v, dyb ); + dyc = vec_sub( s->p[i].position[1].v, dyc ); + dyd = vec_sub( s->p[i].position[1].v, dyd ); + + dza = vec_splat( ip0a, 2 ); + dzb = vec_splat( ip0b, 2 ); + dzc = vec_splat( ip0c, 2 ); + dzd = vec_splat( ip0d, 2 ); + dza = vec_sub( s->p[i].position[2].v, dza ); + dzb = vec_sub( s->p[i].position[2].v, dzb ); + dzc = vec_sub( s->p[i].position[2].v, dzc ); + dzd = vec_sub( s->p[i].position[2].v, dzd ); + + rsquaredA = vec_madd( dxa, dxa, zero ); + rsquaredB = vec_madd( dxb, dxb, zero ); + rsquaredC = vec_madd( dxc, dxc, zero ); + rsquaredD = vec_madd( dxd, dxd, zero ); + + rsquaredA = vec_madd( dya, dya, rsquaredA ); + rsquaredB = vec_madd( dyb, dyb, rsquaredB ); + rsquaredC = vec_madd( dyc, dyc, rsquaredC ); + rsquaredD = vec_madd( dyd, dyd, rsquaredD ); + + rsquaredA = vec_madd( dza, dza, rsquaredA ); + rsquaredB = vec_madd( dzb, dzb, rsquaredB ); + rsquaredC = vec_madd( dzc, dzc, rsquaredC ); + rsquaredD = vec_madd( dzd, dzd, rsquaredD ); + + biasOrA = vec_cmpeq( jVec, mod.v ); + jVec = vec_add(jVec, intOne); + biasOrB = vec_cmpeq( jVec, mod.v ); + jVec = vec_add(jVec, intOne); + biasOrC = vec_cmpeq( jVec, mod.v ); + jVec = vec_add(jVec, intOne); + biasOrD = vec_cmpeq( jVec, mod.v ); + jVec = vec_add(jVec, intOne); + + biasTempA = vec_add( vec_and( biasOrA, biasConst), floatOne); + biasTempB = vec_add( vec_and( biasOrB, biasConst), floatOne); + biasTempC = vec_add( vec_and( biasOrC, biasConst), floatOne); + biasTempD = vec_add( vec_and( biasOrD, biasConst), floatOne); + + fA = vec_madd( biasTempA, frameRateModifier.v, zero); + fB = vec_madd( biasTempB, frameRateModifier.v, zero); + fC = vec_madd( biasTempC, frameRateModifier.v, zero); + fD = vec_madd( biasTempD, frameRateModifier.v, zero); + one_over_rsquaredA = vec_re( rsquaredA ); + one_over_rsquaredB = vec_re( rsquaredB ); + one_over_rsquaredC = vec_re( rsquaredC ); + one_over_rsquaredD = vec_re( rsquaredD ); + fA = vec_madd( fA, one_over_rsquaredA, zero); + fB = vec_madd( fB, one_over_rsquaredB, zero); + fC = vec_madd( fC, one_over_rsquaredC, zero); + fD = vec_madd( fD, one_over_rsquaredD, zero); + magA = vec_rsqrte( rsquaredA ); + magB = vec_rsqrte( rsquaredB ); + magC = vec_rsqrte( rsquaredC ); + magD = vec_rsqrte( rsquaredD ); + magA = vec_madd( magA, fA, zero ); + magB = vec_madd( magB, fB, zero ); + magC = vec_madd( magC, fC, zero ); + magD = vec_madd( magD, fD, zero ); + deltax = vec_nmsub( dxa, magA, deltax ); + deltay = vec_nmsub( dya, magA, deltay ); + deltaz = vec_nmsub( dza, magA, deltaz ); + + deltax = vec_nmsub( dxb, magB, deltax ); + deltay = vec_nmsub( dyb, magB, deltay ); + deltaz = vec_nmsub( dzb, magB, deltaz ); + + deltax = vec_nmsub( dxc, magC, deltax ); + deltay = vec_nmsub( dyc, magC, deltay ); + deltaz = vec_nmsub( dzc, magC, deltaz ); + + deltax = vec_nmsub( dxd, magD, deltax ); + deltay = vec_nmsub( dyd, magD, deltay ); + deltaz = vec_nmsub( dzd, magD, deltaz ); + } + + + for(;jnumStreams;j++) { + vector float ip0, ip1 = (vector float)(0.0), ip2; + vector float dx, dy, dz; + vector float rsquared, f; + vector float one_over_rsquared; + vector float biasTemp; + vector float mag; + vector bool int biasOr; + + ip0 = vec_ld(0, flurry->spark[j]->position); + if(((int)(flurry->spark[j]->position) & 0xF)>=8) { + ip1 = vec_ld(16, flurry->spark[j]->position); + } + + ip0 = vec_perm(ip0, ip1, vec_lvsl(0, flurry->spark[j]->position)); + ip1 = (vector float) vec_splat((vector unsigned int)ip0, 1); + ip2 = (vector float) vec_splat((vector unsigned int)ip0, 2); + ip0 = (vector float) vec_splat((vector unsigned int)ip0, 0); + + dx = vec_sub(s->p[i].position[0].v, ip0); + dy = vec_sub(s->p[i].position[1].v, ip1); + dz = vec_sub(s->p[i].position[2].v, ip2); + + rsquared = vec_madd(dx, dx, zero); + rsquared = vec_madd(dy, dy, rsquared); + rsquared = vec_madd(dz, dz, rsquared); + + biasOr = vec_cmpeq(jVec, mod.v); + biasTemp = vec_add(vec_and(biasOr, biasConst), (vector float)(1.0)); + + f = vec_madd(biasTemp, frameRateModifier.v, zero); + one_over_rsquared = vec_re(rsquared); + f = vec_madd(f, one_over_rsquared, zero); + + mag = vec_rsqrte(rsquared); + mag = vec_madd(mag, f, zero); + + deltax = vec_nmsub(dx, mag, deltax); + deltay = vec_nmsub(dy, mag, deltay); + deltaz = vec_nmsub(dz, mag, deltaz); + + jVec = vec_add(jVec, (vector unsigned int)(1)); + } + + /* slow this particle down by flurry->drag */ + deltax = vec_madd(deltax, dragV.v, zero); + deltay = vec_madd(deltay, dragV.v, zero); + deltaz = vec_madd(deltaz, dragV.v, zero); + + distTemp = vec_madd(deltax, deltax, zero); + distTemp = vec_madd(deltay, deltay, distTemp); + distTemp = vec_madd(deltaz, deltaz, distTemp); + + deadTemp = (vector unsigned int) vec_cmpge(distTemp, deadConst); + deadTemp = vec_and((vector unsigned int)vec_splat_u32(1), deadTemp); + s->p[i].dead.v = vec_or(s->p[i].dead.v, deadTemp); + if (vec_all_ne(s->p[i].dead.v, (vector unsigned int)(0))) { + continue; + } + + /* update the position */ + s->p[i].delta[0].v = deltax; + s->p[i].delta[1].v = deltay; + s->p[i].delta[2].v = deltaz; + for(j=0;j<3;j++) { + s->p[i].oldposition[j].v = s->p[i].position[j].v; + s->p[i].position[j].v = vec_madd(s->p[i].delta[j].v, deltaTimeV.v, s->p[i].position[j].v); + } + } +} + +#endif +#endif /* 0 */ + +void DrawSmoke_Scalar(global_info_t *global, flurry_info_t *flurry, SmokeV *s, float brightness) +{ + int svi = 0; + int sci = 0; + int sti = 0; + int si = 0; + float width; + float sx,sy; + float u0,v0,u1,v1; + float w,z; + float screenRatio = global->sys_glWidth / 1024.0f; + float hslash2 = global->sys_glHeight * 0.5f; + float wslash2 = global->sys_glWidth * 0.5f; + int i,k; + + width = (streamSize+2.5f*flurry->streamExpansion) * screenRatio; + + for (i=0;ip[i].dead.i[k]) { + continue; + } + thisWidth = (streamSize + (flurry->fTime - s->p[i].time.f[k])*flurry->streamExpansion) * screenRatio; + if (thisWidth >= width) + { + s->p[i].dead.i[k] = 1; + continue; + } + z = s->p[i].position[2].f[k]; + sx = s->p[i].position[0].f[k] * global->sys_glWidth / z + wslash2; + sy = s->p[i].position[1].f[k] * global->sys_glWidth / z + hslash2; + oldz = s->p[i].oldposition[2].f[k]; + if (sx > global->sys_glWidth+50.0f || sx < -50.0f || sy > global->sys_glHeight+50.0f || sy < -50.0f || z < 25.0f || oldz < 25.0f) + { + continue; + } + + w = MAX_(1.0f,thisWidth/z); + { + float oldx = s->p[i].oldposition[0].f[k]; + float oldy = s->p[i].oldposition[1].f[k]; + float oldscreenx = (oldx * global->sys_glWidth / oldz) + wslash2; + float oldscreeny = (oldy * global->sys_glWidth / oldz) + hslash2; + float dx = (sx-oldscreenx); + float dy = (sy-oldscreeny); + + float d = FastDistance2D(dx, dy); + + float sm, os, ow; + if (d) + { + sm = w/d; + } + else + { + sm = 0.0f; + } + ow = MAX_(1.0f,thisWidth/oldz); + if (d) + { + os = ow/d; + } + else + { + os = 0.0f; + } + + { + floatToVector cmv; + float cm; + float m = 1.0f + sm; + + float dxs = dx*sm; + float dys = dy*sm; + float dxos = dx*os; + float dyos = dy*os; + float dxm = dx*m; + float dym = dy*m; + + s->p[i].animFrame.i[k]++; + if (s->p[i].animFrame.i[k] >= 64) + { + s->p[i].animFrame.i[k] = 0; + } + + u0 = (s->p[i].animFrame.i[k]& 7) * 0.125f; + v0 = (s->p[i].animFrame.i[k]>>3) * 0.125f; + u1 = u0 + 0.125f; + v1 = v0 + 0.125f; + cm = (1.375f - thisWidth/width); + if (s->p[i].dead.i[k] == 3) + { + cm *= 0.125f; + s->p[i].dead.i[k] = 1; + } + si++; + cm *= brightness; + cmv.f[0] = s->p[i].color[0].f[k]*cm; + cmv.f[1] = s->p[i].color[1].f[k]*cm; + cmv.f[2] = s->p[i].color[2].f[k]*cm; + cmv.f[3] = s->p[i].color[3].f[k]*cm; + +#if 0 + /* MDT we can't use vectors in the Scalar routine */ + s->seraphimColors[sci++].v = cmv.v; + s->seraphimColors[sci++].v = cmv.v; + s->seraphimColors[sci++].v = cmv.v; + s->seraphimColors[sci++].v = cmv.v; +#else + { + int ii, jj; + for (jj = 0; jj < 4; jj++) { + for (ii = 0; ii < 4; ii++) { + s->seraphimColors[sci].f[ii] = cmv.f[ii]; + } + sci += 1; + } + } +#endif + + s->seraphimTextures[sti++] = u0; + s->seraphimTextures[sti++] = v0; + s->seraphimTextures[sti++] = u0; + s->seraphimTextures[sti++] = v1; + + s->seraphimTextures[sti++] = u1; + s->seraphimTextures[sti++] = v1; + s->seraphimTextures[sti++] = u1; + s->seraphimTextures[sti++] = v0; + + s->seraphimVertices[svi].f[0] = sx+dxm-dys; + s->seraphimVertices[svi].f[1] = sy+dym+dxs; + s->seraphimVertices[svi].f[2] = sx+dxm+dys; + s->seraphimVertices[svi].f[3] = sy+dym-dxs; + svi++; + + s->seraphimVertices[svi].f[0] = oldscreenx-dxm+dyos; + s->seraphimVertices[svi].f[1] = oldscreeny-dym-dxos; + s->seraphimVertices[svi].f[2] = oldscreenx-dxm-dyos; + s->seraphimVertices[svi].f[3] = oldscreeny-dym+dxos; + svi++; + } + } + } + } + glColorPointer(4,GL_FLOAT,0,s->seraphimColors); + glVertexPointer(2,GL_FLOAT,0,s->seraphimVertices); + glTexCoordPointer(2,GL_FLOAT,0,s->seraphimTextures); + glDrawArrays(GL_QUADS,0,si*4); +} + +#if 0 +#ifdef __VEC__ + +void DrawSmoke_Vector(global_info_t *global, flurry_info_t *flurry, SmokeV *s, float brightness) +{ + const vector float zero = (vector float)(0.0); + int svi = 0; + int sci = 0; + int sti = 0; + int si = 0; + floatToVector width; + vector float sx,sy; + floatToVector u0,v0,u1,v1; + vector float one_over_z; + vector float w; + floatToVector z; + float screenRatio = global->sys_glWidth / 1024.0f; + float hslash2 = global->sys_glHeight * 0.5f; + float wslash2 = global->sys_glWidth * 0.5f; + int i,kk; + floatToVector briteV, fTimeV, expansionV, screenRatioV, hslash2V, wslash2V, streamSizeV; + floatToVector glWidthV; + floatToVector cm; + vector float cmv[4]; + vector float svec[4], ovec[4]; + vector float oldscreenx, oldscreeny; + vector float sm; + vector float frameAnd7; + vector float frameShift3; + vector float one_over_width; + vector float dx, dy; + vector float os; + vector unsigned int vSi = vec_splat_u32(0); + const vector float eighth = (vector float)(0.125); + float glWidth50 = global->sys_glWidth + 50.0f; + float glHeight50 = global->sys_glHeight + 50.0f; + vector float vGLWidth50, vGLHeight50; + unsigned int blitBool; + + vec_dst((int *)(&(s->p[0])), 0x00020200, 2); + + { + vector unsigned char permute1 = vec_lvsl( 0, &glWidth50 ); + vector unsigned char permute2 = vec_lvsl( 0, &glHeight50 ); + permute1 = (vector unsigned char) vec_splat( (vector unsigned int) permute1, 0 ); + permute2 = (vector unsigned char) vec_splat( (vector unsigned int) permute2, 0 ); + vGLWidth50 = vec_lde( 0, &glWidth50 ); + vGLHeight50 = vec_lde( 0, &glHeight50 ); + vGLWidth50 = vec_perm( vGLWidth50, vGLWidth50, permute1 ); + vGLHeight50 = vec_perm( vGLHeight50, vGLHeight50, permute2 ); + } + + width.f[0] = (streamSize+2.5f*flurry->streamExpansion) * screenRatio; + width.v = (vector float) vec_splat((vector unsigned int)width.v, 0); + + briteV.f[0] = brightness; + briteV.v = (vector float) vec_splat((vector unsigned int)briteV.v, 0); + + fTimeV.f[0] = (float) flurry->fTime; + fTimeV.v = (vector float) vec_splat((vector unsigned int)fTimeV.v, 0); + + expansionV.f[0] = flurry->streamExpansion; + expansionV.v = (vector float) vec_splat((vector unsigned int)expansionV.v, 0); + + screenRatioV.f[0] = screenRatio; + screenRatioV.v = (vector float) vec_splat((vector unsigned int)screenRatioV.v, 0); + + hslash2V.f[0] = hslash2; + hslash2V.v = (vector float) vec_splat((vector unsigned int)hslash2V.v, 0); + + wslash2V.f[0] = wslash2; + wslash2V.v = (vector float) vec_splat((vector unsigned int)wslash2V.v, 0); + + streamSizeV.f[0] = streamSize; + streamSizeV.v = (vector float) vec_splat((vector unsigned int)streamSizeV.v, 0); + + glWidthV.f[0] = global->sys_glWidth; + glWidthV.v = (vector float) vec_splat((vector unsigned int)glWidthV.v, 0); + + for (i=0;ip[i+4])), 0x00020200, 2); + + if (vec_all_eq(s->p[i].dead.v, (vector unsigned int)(1))) continue; + + blitBool = 0; /* keep track of particles that actually need to be drawn */ + + thisWidth = vec_sub(fTimeV.v, s->p[i].time.v); + thisWidth = vec_madd(thisWidth, expansionV.v, streamSizeV.v); + thisWidth = vec_madd(thisWidth, screenRatioV.v, zero); + + z.v = s->p[i].position[2].v; + one_over_z = vec_re(z.v); + + sx = vec_madd(s->p[i].position[0].v, glWidthV.v, zero); + sx = vec_madd(sx, one_over_z, wslash2V.v); + sy = vec_madd(s->p[i].position[1].v, glWidthV.v, zero); + sy = vec_madd(sy, one_over_z, hslash2V.v); + + oldz = s->p[i].oldposition[2].v; + + w = vec_max((vector float)(1.0), vec_madd(thisWidth, one_over_z, zero)); + + oldx = s->p[i].oldposition[0].v; + oldy = s->p[i].oldposition[1].v; + one_over_oldz = vec_re(oldz); + oldscreenx = vec_madd(oldx, glWidthV.v, zero); + oldscreenx = vec_madd(oldscreenx, one_over_oldz, wslash2V.v); + oldscreeny = vec_madd(oldy, glWidthV.v, zero); + oldscreeny = vec_madd(oldscreeny, one_over_oldz, hslash2V.v); + dx = vec_sub(sx,oldscreenx); + dy = vec_sub(sy,oldscreeny); + + xabs = vec_abs(dx); + yabs = vec_abs(dy); + mn = vec_min(xabs,yabs); + d = vec_add(xabs,yabs); + d = vec_madd(mn, (vector float)(-0.6875), d); + + ow = vec_max((vector float)(1.0), vec_madd(thisWidth, one_over_oldz, zero)); + one_over_d = vec_re(d); + dnz = vec_cmpgt(d, zero); + sm = vec_madd(w, one_over_d, zero); + sm = vec_and(sm, dnz); + os = vec_madd(ow, one_over_d, zero); + os = vec_and(os, dnz); + + { + intToVector tempMask; + vector bool int mask = vec_cmpeq( s->p[i].dead.v, vec_splat_u32(1) ); /* -1 where true */ + vector bool int gtMask = vec_cmpge( thisWidth, width.v ); /* -1 where true */ + vector bool int glWidth50Test = vec_cmpgt( sx, (vector float)(vGLWidth50) ); /* -1 where true */ + vector bool int glHeight50Test = vec_cmpgt( sy, (vector float)(vGLHeight50) ); /* -1 where true */ + vector bool int test50x = vec_cmplt( sx, (vector float) (-50.0) ); + vector bool int test50y = vec_cmplt( sy, (vector float) (-50.0) ); + vector bool int testz = vec_cmplt( z.v, (vector float) (25.0) ); + vector bool int testoldz = vec_cmplt( oldz, (vector float) (25.0) ); + mask = vec_or( mask, gtMask ); + s->p[i].dead.v = vec_and( mask, vec_splat_u32( 1 ) ); + mask = vec_or( mask, glWidth50Test ); + mask = vec_or( mask, glHeight50Test ); + mask = vec_or( mask, test50x ); + mask = vec_or( mask, test50y ); + mask = vec_or( mask, testz ); + mask = vec_or( mask, testoldz ); + tempMask.v = (vector unsigned int)mask; + + s->p[i].animFrame.v = vec_sub( s->p[i].animFrame.v, vec_nor( mask, mask ) ); + s->p[i].animFrame.v = vec_and( s->p[i].animFrame.v, (vector unsigned int)(63) ); + + frameAnd7 = vec_ctf(vec_and(s->p[i].animFrame.v, (vector unsigned int)(7)),0); + u0.v = vec_madd(frameAnd7, eighth, zero); + + frameShift3 = vec_ctf(vec_sr(s->p[i].animFrame.v, (vector unsigned int)(3)),0); + v0.v = vec_madd(frameAnd7, eighth, zero); + + u1.v = vec_add(u0.v, eighth); + v1.v = vec_add(v0.v, eighth); + + one_over_width = vec_re(width.v); + cm.v = vec_sel( vec_nmsub(thisWidth, one_over_width, (vector float)(1.375)), cm.v, mask ); + cm.v = vec_madd(cm.v, briteV.v, zero); + + vSi = vec_sub( vSi, vec_nor( mask, mask ) ); + { + vector unsigned int blitMask = (vector unsigned int) (1, 2, 4, 8); + vector unsigned int temp = (vector unsigned int)mask; + temp = vec_andc( blitMask, temp ); + temp = vec_add( temp, vec_sld( temp, temp, 8 ) ); + temp = vec_add( temp, vec_sld( temp, temp, 4 ) ); + vec_ste( temp, 0, &blitBool ); + + } + + { + vector float temp1, temp2, temp3, temp4; + vector float result1a, result1b, result2a, result2b, result3a, result3b, result4a, result4b; + + temp1 = vec_mergeh( u0.v, u0.v ); + temp2 = vec_mergel( u0.v, u0.v ); + temp3 = vec_mergeh( v0.v, v1.v ); + temp4 = vec_mergel( v0.v, v1.v ); + + result1a = vec_mergeh( temp1, temp3 ); + result1b = vec_mergel( temp1, temp3 ); + result2a = vec_mergeh( temp2, temp4 ); + result2b = vec_mergel( temp2, temp4 ); + + temp1 = vec_mergeh( u1.v, u1.v ); + temp2 = vec_mergel( u1.v, u1.v ); + temp3 = vec_mergeh( v1.v, v0.v ); + temp4 = vec_mergel( v1.v, v0.v ); + + result3a = vec_mergeh( temp1, temp3 ); + result3b = vec_mergel( temp1, temp3 ); + result4a = vec_mergeh( temp2, temp4 ); + result4b = vec_mergel( temp2, temp4 ); + + if( blitBool & 1 ) + { + vec_st( result1a, 0, &s->seraphimTextures[sti] ); + vec_st( result3a, 16, &s->seraphimTextures[sti]); + sti+= 8; + } + if( blitBool & 2 ) + { + vec_st( result1b, 0, &s->seraphimTextures[sti]); + vec_st( result3b, 16, &s->seraphimTextures[sti]); + sti+= 8; + } + if( blitBool & 4 ) + { + vec_st( result2a, 0, &s->seraphimTextures[sti]); + vec_st( result4a, 16, &s->seraphimTextures[sti]); + sti+= 8; + } + if( blitBool & 8 ) + { + vec_st( result2b, 0, &s->seraphimTextures[sti]); + vec_st( result4b, 16, &s->seraphimTextures[sti]); + sti+= 8; + } + } + } + + cmv[0] = vec_madd(s->p[i].color[0].v, cm.v, zero); + cmv[1] = vec_madd(s->p[i].color[1].v, cm.v, zero); + cmv[2] = vec_madd(s->p[i].color[2].v, cm.v, zero); + cmv[3] = vec_madd(s->p[i].color[3].v, cm.v, zero); + { + vector float vI0, vI1, vI2, vI3; + + vI0 = vec_mergeh ( cmv[0], cmv[2] ); + vI1 = vec_mergeh ( cmv[1], cmv[3] ); + vI2 = vec_mergel ( cmv[0], cmv[2] ); + vI3 = vec_mergel ( cmv[1], cmv[3] ); + + cmv[0] = vec_mergeh ( vI0, vI1 ); + cmv[1] = vec_mergel ( vI0, vI1 ); + cmv[2] = vec_mergeh ( vI2, vI3 ); + cmv[3] = vec_mergel ( vI2, vI3 ); + } + + vec_dst( cmv, 0x0D0100D0, 1 ); + + { + vector float sxd, syd; + vector float sxdm, sxdp, sydm, sydp; + vector float oxd, oyd; + vector float oxdm, oxdp, oydm, oydp; + vector float vI0, vI1, vI2, vI3; + vector float dxs, dys; + vector float dxos, dyos; + vector float dxm, dym; + vector float m; + + m = vec_add((vector float)(1.0), sm); + + dxs = vec_madd(dx, sm, zero); + dys = vec_madd(dy, sm, zero); + dxos = vec_madd(dx, os, zero); + dyos = vec_madd(dy, os, zero); + dxm = vec_madd(dx, m, zero); + dym = vec_madd(dy, m, zero); + + sxd = vec_add(sx, dxm); + sxdm = vec_sub(sxd, dys); + sxdp = vec_add(sxd, dys); + + syd = vec_add(sy, dym); + sydm = vec_sub(syd, dxs); + sydp = vec_add(syd, dxs); + + oxd = vec_sub(oldscreenx, dxm); + oxdm = vec_sub(oxd, dyos); + oxdp = vec_add(oxd, dyos); + + oyd = vec_sub(oldscreeny, dym); + oydm = vec_sub(oyd, dxos); + oydp = vec_add(oyd, dxos); + + vI0 = vec_mergeh ( sxdm, sxdp ); + vI1 = vec_mergeh ( sydp, sydm ); + vI2 = vec_mergel ( sxdm, sxdp ); + vI3 = vec_mergel ( sydp, sydm ); + + svec[0] = vec_mergeh ( vI0, vI1 ); + svec[1] = vec_mergel ( vI0, vI1 ); + svec[2] = vec_mergeh ( vI2, vI3 ); + svec[3] = vec_mergel ( vI2, vI3 ); + + vI0 = vec_mergeh ( oxdp, oxdm ); + vI1 = vec_mergeh ( oydm, oydp ); + vI2 = vec_mergel ( oxdp, oxdm ); + vI3 = vec_mergel ( oydm, oydp ); + + ovec[0] = vec_mergeh ( vI0, vI1 ); + ovec[1] = vec_mergel ( vI0, vI1 ); + ovec[2] = vec_mergeh ( vI2, vI3 ); + ovec[3] = vec_mergel ( vI2, vI3 ); + } + + { + int offset0 = (sci + 0) * sizeof( vector float ); + int offset1 = (sci + 1) * sizeof( vector float ); + int offset2 = (sci + 2) * sizeof( vector float ); + int offset3 = (sci + 3) * sizeof( vector float ); + int offset4 = (svi + 0) * sizeof( vector float ); + int offset5 = (svi + 1) * sizeof( vector float ); + vector float *colors = (vector float *)s->seraphimColors; + vector float *vertices = (vector float *)s->seraphimVertices; + for (kk=0; kk<4; kk++) { + if (blitBool>>kk & 1) { + vector float vcmv = cmv[kk]; + vector float vsvec = svec[kk]; + vector float vovec = ovec[kk]; + + vec_st( vcmv, offset0, colors ); + vec_st( vcmv, offset1, colors ); + vec_st( vcmv, offset2, colors ); + vec_st( vcmv, offset3, colors ); + vec_st( vsvec, offset4, vertices ); + vec_st( vovec, offset5, vertices ); + colors += 4; + vertices += 2; + sci += 4; + svi += 2; + } + } + } + } + vSi = vec_add( vSi, vec_sld( vSi, vSi, 8 ) ); + vSi = vec_add( vSi, vec_sld( vSi, vSi, 4 ) ); + vec_ste( (vector signed int) vSi, 0, &si ); + + glColorPointer(4,GL_FLOAT,0,s->seraphimColors); + glVertexPointer(2,GL_FLOAT,0,s->seraphimVertices); + glTexCoordPointer(2,GL_FLOAT,0,s->seraphimTextures); + glDrawArrays(GL_QUADS,0,si*4); +} + +#endif +#endif /* 0 */ diff --git a/hacks/glx/flurry-spark.c b/hacks/glx/flurry-spark.c new file mode 100644 index 0000000..5b58b56 --- /dev/null +++ b/hacks/glx/flurry-spark.c @@ -0,0 +1,285 @@ +/* + +Copyright (c) 2002, Calum Robinson +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* Spark.cpp: implementation of the Spark class. */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "flurry.h" + +void InitSpark(Spark *s) +{ + int i; + for (i=0;i<3;i++) + { + s->position[i] = RandFlt(-100.0, 100.0); + } +} + +void DrawSpark(global_info_t *global, flurry_info_t *flurry, Spark *s) +{ + const float black[4] = {0.0f,0.0f,0.0f,1.0f}; + float width,sx,sy; + float a; + float c = 0.0625f; + float screenx; + float screeny; + float w,z, scale; + int k; + width = 60000.0f * global->sys_glWidth / 1024.0f; + + z = s->position[2]; + sx = s->position[0] * global->sys_glWidth / z + global->sys_glWidth * 0.5f; + sy = s->position[1] * global->sys_glWidth / z + global->sys_glHeight * 0.5f; + w = width*4.0f / z; + + screenx = sx; + screeny = sy; + + glPushMatrix(); + glTranslatef(screenx,screeny,0.0f); + scale = w/50.0f; + glScalef(scale,scale,0.0f); + for (k=0;k<12;k++) + { + a = ((float) (random() % 3600)) / 10.0f; + glRotatef(a,0.0f,0.0f,1.0f); + glBegin(GL_QUAD_STRIP); + glColor4fv(black); + glVertex2f(-3.0f,0.0f); + a = 2.0f + (float) (random() & 255) * c; + glVertex2f(-3.0f,a); + glColor4fv(s->color); + glVertex2f(0.0f,0.0f); + glColor4fv(black); + glVertex2f(0.0f,a); + glVertex2f(3.0f,0.0f); + glVertex2f(3.0f,a); + glEnd(); + } + glPopMatrix(); +} + +#define BIGMYSTERY 1800.0 +#define MAXANGLES 16384 + +void UpdateSparkColour(global_info_t *global, flurry_info_t *flurry, Spark *s) +{ + const float rotationsPerSecond = (float) (2.0*PI*fieldSpeed/MAXANGLES); + double thisPointInRadians; + double thisAngle = flurry->fTime*rotationsPerSecond; + float cf; + float cycleTime = 20.0f; + float colorRot; + float redPhaseShift; + float greenPhaseShift; + float bluePhaseShift; + float baseRed; + float baseGreen; + float baseBlue; + float colorTime; + + if (flurry->currentColorMode == rainbowColorMode) + { + cycleTime = 1.5f; + } + else if (flurry->currentColorMode == tiedyeColorMode) + { + cycleTime = 4.5f; + } + else if (flurry->currentColorMode == cyclicColorMode) + { + cycleTime = 20.0f; + } + else if (flurry->currentColorMode == slowCyclicColorMode) + { + cycleTime = 120.0f; + } + colorRot = (float) (2.0*PI/cycleTime); + redPhaseShift = 0.0f; /* cycleTime * 0.0f / 3.0f */ + greenPhaseShift = cycleTime / 3.0f; + bluePhaseShift = cycleTime * 2.0f / 3.0f ; + colorTime = flurry->fTime; + if (flurry->currentColorMode == whiteColorMode) + { + baseRed = 0.1875f; + baseGreen = 0.1875f; + baseBlue = 0.1875f; + } + else if (flurry->currentColorMode == multiColorMode) + { + baseRed = 0.0625f; + baseGreen = 0.0625f; + baseBlue = 0.0625f; + } + else if (flurry->currentColorMode == darkColorMode) + { + baseRed = 0.0f; + baseGreen = 0.0f; + baseBlue = 0.0f; + } + else + { + if (flurry->currentColorMode < slowCyclicColorMode) + { + colorTime = (flurry->currentColorMode / 6.0f) * cycleTime; + } + else + { + colorTime = flurry->fTime + flurry->flurryRandomSeed; + } + baseRed = 0.109375f * ((float) cos((colorTime+redPhaseShift)*colorRot)+1.0f); + baseGreen = 0.109375f * ((float) cos((colorTime+greenPhaseShift)*colorRot)+1.0f); + baseBlue = 0.109375f * ((float) cos((colorTime+bluePhaseShift)*colorRot)+1.0f); + } + + cf = ((float) (cos(7.0*((flurry->fTime)*rotationsPerSecond))+cos(3.0*((flurry->fTime)*rotationsPerSecond))+cos(13.0*((flurry->fTime)*rotationsPerSecond)))); + cf /= 6.0f; + cf += 2.0f; + thisPointInRadians = 2.0 * PI * (double) s->mystery / (double) BIGMYSTERY; + + s->color[0] = baseRed + 0.0625f * (0.5f + (float) cos((15.0 * (thisPointInRadians + 3.0*thisAngle))) + (float) sin((7.0 * (thisPointInRadians + thisAngle)))); + s->color[1] = baseGreen + 0.0625f * (0.5f + (float) sin(((thisPointInRadians) + thisAngle))); + s->color[2] = baseBlue + 0.0625f * (0.5f + (float) cos((37.0 * (thisPointInRadians + thisAngle)))); +} + +void UpdateSpark(global_info_t *global, flurry_info_t *flurry, Spark *s) +{ + const float rotationsPerSecond = (float) (2.0*PI*fieldSpeed/MAXANGLES); + double thisPointInRadians; + double thisAngle = flurry->fTime*rotationsPerSecond; + float cf; + int i; + double tmpX1,tmpY1,tmpZ1; + double tmpX2,tmpY2,tmpZ2; + double tmpX3,tmpY3,tmpZ3; + double tmpX4,tmpY4,tmpZ4; + double rotation; + double cr; + double sr; + float cycleTime = 20.0f; + float colorRot; + float redPhaseShift; + float greenPhaseShift; + float bluePhaseShift; + float baseRed; + float baseGreen; + float baseBlue; + float colorTime; + + float old[3]; + + if (flurry->currentColorMode == rainbowColorMode) { + cycleTime = 1.5f; + } else if (flurry->currentColorMode == tiedyeColorMode) { + cycleTime = 4.5f; + } else if (flurry->currentColorMode == cyclicColorMode) { + cycleTime = 20.0f; + } else if (flurry->currentColorMode == slowCyclicColorMode) { + cycleTime = 120.0f; + } + colorRot = (float) (2.0*PI/cycleTime); + redPhaseShift = 0.0f; /* cycleTime * 0.0f / 3.0f */ + greenPhaseShift = cycleTime / 3.0f; + bluePhaseShift = cycleTime * 2.0f / 3.0f ; + colorTime = flurry->fTime; + if (flurry->currentColorMode == whiteColorMode) { + baseRed = 0.1875f; + baseGreen = 0.1875f; + baseBlue = 0.1875f; + } else if (flurry->currentColorMode == multiColorMode) { + baseRed = 0.0625f; + baseGreen = 0.0625f; + baseBlue = 0.0625f; + } else if (flurry->currentColorMode == darkColorMode) { + baseRed = 0.0f; + baseGreen = 0.0f; + baseBlue = 0.0f; + } else { + if(flurry->currentColorMode < slowCyclicColorMode) { + colorTime = (flurry->currentColorMode / 6.0f) * cycleTime; + } else { + colorTime = flurry->fTime + flurry->flurryRandomSeed; + } + baseRed = 0.109375f * ((float) cos((colorTime+redPhaseShift)*colorRot)+1.0f); + baseGreen = 0.109375f * ((float) cos((colorTime+greenPhaseShift)*colorRot)+1.0f); + baseBlue = 0.109375f * ((float) cos((colorTime+bluePhaseShift)*colorRot)+1.0f); + } + + for (i=0;i<3;i++) { + old[i] = s->position[i]; + } + + cf = ((float) (cos(7.0*((flurry->fTime)*rotationsPerSecond))+cos(3.0*((flurry->fTime)*rotationsPerSecond))+cos(13.0*((flurry->fTime)*rotationsPerSecond)))); + cf /= 6.0f; + cf += 2.0f; + thisPointInRadians = 2.0 * PI * (double) s->mystery / (double) BIGMYSTERY; + + s->color[0] = baseRed + 0.0625f * (0.5f + (float) cos((15.0 * (thisPointInRadians + 3.0*thisAngle))) + (float) sin((7.0 * (thisPointInRadians + thisAngle)))); + s->color[1] = baseGreen + 0.0625f * (0.5f + (float) sin(((thisPointInRadians) + thisAngle))); + s->color[2] = baseBlue + 0.0625f * (0.5f + (float) cos((37.0 * (thisPointInRadians + thisAngle)))); + s->position[0] = fieldRange * cf * (float) cos(11.0 * (thisPointInRadians + (3.0*thisAngle))); + s->position[1] = fieldRange * cf * (float) sin(12.0 * (thisPointInRadians + (4.0*thisAngle))); + s->position[2] = fieldRange * (float) cos((23.0 * (thisPointInRadians + (12.0*thisAngle)))); + + rotation = thisAngle*0.501 + 5.01 * (double) s->mystery / (double) BIGMYSTERY; + cr = cos(rotation); + sr = sin(rotation); + tmpX1 = s->position[0] * cr - s->position[1] * sr; + tmpY1 = s->position[1] * cr + s->position[0] * sr; + tmpZ1 = s->position[2]; + + tmpX2 = tmpX1 * cr - tmpZ1 * sr; + tmpY2 = tmpY1; + tmpZ2 = tmpZ1 * cr + tmpX1 * sr; + + tmpX3 = tmpX2; + tmpY3 = tmpY2 * cr - tmpZ2 * sr; + tmpZ3 = tmpZ2 * cr + tmpY2 * sr + seraphDistance; + + rotation = thisAngle*2.501 + 85.01 * (double) s->mystery / (double) BIGMYSTERY; + cr = cos(rotation); + sr = sin(rotation); + tmpX4 = tmpX3 * cr - tmpY3 * sr; + tmpY4 = tmpY3 * cr + tmpX3 * sr; + tmpZ4 = tmpZ3; + + s->position[0] = (float) tmpX4 + RandBell(5.0f*fieldCoherence); + s->position[1] = (float) tmpY4 + RandBell(5.0f*fieldCoherence); + s->position[2] = (float) tmpZ4 + RandBell(5.0f*fieldCoherence); + + for (i=0;i<3;i++) { + s->delta[i] = (s->position[i] - old[i])/flurry->fDeltaTime; + } +} diff --git a/hacks/glx/flurry-star.c b/hacks/glx/flurry-star.c new file mode 100644 index 0000000..8d9cc41 --- /dev/null +++ b/hacks/glx/flurry-star.c @@ -0,0 +1,106 @@ +/* + +Copyright (c) 2002, Calum Robinson +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* Star.c: implementation of the Star class. */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "flurry.h" + +/* Construction/Destruction */ + +void InitStar(Star *s) +{ + int i; + for (i=0;i<3;i++) { + s->position[i] = RandFlt(-10000.0, 10000.0); + } + s->rotSpeed = RandFlt(0.4, 0.9); + s->mystery = RandFlt(0.0, 10.0); +} + +#define BIGMYSTERY 1800.0 +#define MAXANGLES 16384 + +void UpdateStar(global_info_t *global, flurry_info_t *flurry, Star *s) +{ + float rotationsPerSecond = (float) (2.0*PI*12.0/MAXANGLES) * s->rotSpeed /* speed control */; + double thisPointInRadians; + double thisAngle = flurry->fTime*rotationsPerSecond; + float cf; + double tmpX1,tmpY1,tmpZ1; + double tmpX2,tmpY2,tmpZ2; + double tmpX3,tmpY3,tmpZ3; + double tmpX4,tmpY4,tmpZ4; + double rotation; + double cr; + double sr; + + s->ate = 0; + + cf = ((float) (cos(7.0*((flurry->fTime)*rotationsPerSecond))+cos(3.0*((flurry->fTime)*rotationsPerSecond))+cos(13.0*((flurry->fTime)*rotationsPerSecond)))); + cf /= 6.0f; + cf += 0.75f; + thisPointInRadians = 2.0 * PI * (double) s->mystery / (double) BIGMYSTERY; + + s->position[0] = 250.0f * cf * (float) cos(11.0 * (thisPointInRadians + (3.0*thisAngle))); + s->position[1] = 250.0f * cf * (float) sin(12.0 * (thisPointInRadians + (4.0*thisAngle))); + s->position[2] = 250.0f * (float) cos((23.0 * (thisPointInRadians + (12.0*thisAngle)))); + + rotation = thisAngle*0.501 + 5.01 * (double) s->mystery / (double) BIGMYSTERY; + cr = cos(rotation); + sr = sin(rotation); + tmpX1 = s->position[0] * cr - s->position[1] * sr; + tmpY1 = s->position[1] * cr + s->position[0] * sr; + tmpZ1 = s->position[2]; + + tmpX2 = tmpX1 * cr - tmpZ1 * sr; + tmpY2 = tmpY1; + tmpZ2 = tmpZ1 * cr + tmpX1 * sr; + + tmpX3 = tmpX2; + tmpY3 = tmpY2 * cr - tmpZ2 * sr; + tmpZ3 = tmpZ2 * cr + tmpY2 * sr + seraphDistance; + + rotation = thisAngle*2.501 + 85.01 * (double) s->mystery / (double) BIGMYSTERY; + cr = cos(rotation); + sr = sin(rotation); + tmpX4 = tmpX3 * cr - tmpY3 * sr; + tmpY4 = tmpY3 * cr + tmpX3 * sr; + tmpZ4 = tmpZ3; + + s->position[0] = (float) tmpX4; + s->position[1] = (float) tmpY4; + s->position[2] = (float) tmpZ4; +} diff --git a/hacks/glx/flurry-texture.c b/hacks/glx/flurry-texture.c new file mode 100644 index 0000000..c787f59 --- /dev/null +++ b/hacks/glx/flurry-texture.c @@ -0,0 +1,224 @@ +/* + +Copyright (c) 2002, Calum Robinson +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* + * Texture.c + * AppleFlurry + * + * Created by calumr on Sat Jul 07 2001. + * Copyright (c) 2001 __CompanyName__. All rights reserved. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "flurry.h" + +#include +#include + +#include +#include + +static GLubyte smallTextureArray[32][32]; +static GLubyte bigTextureArray[256][256][2]; +GLuint theTexture = 0; + +/* simple smoothing routine */ +static void SmoothTexture(void) +{ + GLubyte filter[32][32]; + int i,j; + float t; + for (i=1;i<31;i++) + { + for (j=1;j<31;j++) + { + t = (float) smallTextureArray[i][j]*4; + t += (float) smallTextureArray[i-1][j]; + t += (float) smallTextureArray[i+1][j]; + t += (float) smallTextureArray[i][j-1]; + t += (float) smallTextureArray[i][j+1]; + t /= 8.0f; + filter[i][j] = (GLubyte) t; + } + } + for (i=1;i<31;i++) + { + for (j=1;j<31;j++) + { + smallTextureArray[i][j] = filter[i][j]; + } + } +} + +/* add some randomness to texture data */ +static void SpeckleTexture(void) +{ + int i,j; + int speck; + float t; + for (i=2;i<30;i++) + { + for (j=2;j<30;j++) + { + speck = 1; + while (speck <= 32 && random() % 2) + { + t = (float) MIN_(255,smallTextureArray[i][j]+speck); + smallTextureArray[i][j] = (GLubyte) t; + speck+=speck; + } + speck = 1; + while (speck <= 32 && random() % 2) + { + t = (float) MAX_(0,smallTextureArray[i][j]-speck); + smallTextureArray[i][j] = (GLubyte) t; + speck+=speck; + } + } + } +} + +static void MakeSmallTexture(void) +{ + static int firstTime = 1; + int i,j; + float r,t; + if (firstTime) + { + firstTime = 0; + for (i=0;i<32;i++) + { + for (j=0;j<32;j++) + { + r = (float) sqrt((i-15.5)*(i-15.5)+(j-15.5)*(j-15.5)); + if (r > 15.0f) + { + smallTextureArray[i][j] = 0; + } + else + { + t = 255.0f * (float) cos(r*M_PI/31.0); + smallTextureArray[i][j] = (GLubyte) t; + } + } + } + } + else + { + for (i=0;i<32;i++) + { + for (j=0;j<32;j++) + { + r = (float) sqrt((i-15.5)*(i-15.5)+(j-15.5)*(j-15.5)); + if (r > 15.0f) + { + t = 0.0f; + } + else + { + t = 255.0f * (float) cos(r*M_PI/31.0); + } + smallTextureArray[i][j] = (GLubyte) MIN_(255,(t+smallTextureArray[i][j]+smallTextureArray[i][j])/3); + } + } + } + SpeckleTexture(); + SmoothTexture(); + SmoothTexture(); +} + +static void CopySmallTextureToBigTexture(int k, int l) +{ + int i,j; + for (i=0;i<32;i++) + { + for (j=0;j<32;j++) + { + bigTextureArray[i+k][j+l][0] = smallTextureArray[i][j]; + bigTextureArray[i+k][j+l][1] = smallTextureArray[i][j]; + } + } +} + +static void AverageLastAndFirstTextures(void) +{ + int i,j; + int t; + for (i=0;i<32;i++) + { + for (j=0;j<32;j++) + { + t = (smallTextureArray[i][j] + bigTextureArray[i][j][0]) / 2; + smallTextureArray[i][j] = (GLubyte) MIN_(255,t); + } + } +} + +void MakeTexture() +{ + int i,j; + for (i=0;i<8;i++) + { + for (j=0;j<8;j++) + { + if (i==7 && j==7) + { + AverageLastAndFirstTextures(); + } + else + { + MakeSmallTexture(); + } + CopySmallTextureToBigTexture(i*32,j*32); + } + } + + glPixelStorei(GL_UNPACK_ALIGNMENT,1); + + glGenTextures(1, &theTexture); + glBindTexture(GL_TEXTURE_2D, theTexture); + + /* Set the tiling mode (this is generally always GL_REPEAT). */ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + /* Set the filtering. */ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); + + gluBuild2DMipmaps(GL_TEXTURE_2D, 2, 256, 256, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, bigTextureArray); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); +} diff --git a/hacks/glx/flurry.c b/hacks/glx/flurry.c new file mode 100644 index 0000000..c9008a9 --- /dev/null +++ b/hacks/glx/flurry.c @@ -0,0 +1,549 @@ +/* -*- Mode: C; tab-width: 4 c-basic-offset: 4 indent-tabs-mode: t -*- */ +/* + * vim: ts=8 sw=4 noet + */ + +/* + +Copyright (c) 2002, Calum Robinson +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* flurry */ + +#if 0 +static const char sccsid[] = "@(#)flurry.c 4.07 97/11/24 xlockmore"; +#endif + +#define DEF_PRESET "random" +#define DEF_BRIGHTNESS "8" + +# define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" + +# define release_flurry 0 +# define flurry_handle_event xlockmore_no_events +# include "xlockmore.h" /* from the xscreensaver distribution */ + +#ifdef USE_GL + +static char *preset_str; + +static XrmOptionDescRec opts[] = { + { "-preset", ".preset", XrmoptionSepArg, 0 } +}; + +static argtype vars[] = { + {&preset_str, "preset", "Preset", DEF_PRESET, t_String}, +}; + +#define countof(x) (sizeof((x))/sizeof((*x))) + +ENTRYPOINT ModeSpecOpt flurry_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct flurry_description = { + "flurry", + "init_flurry", + "draw_flurry", + NULL, + "draw_flurry", + "init_flurry", + "free_flurry", + &flurry_opts, + 1000, 1, 2, 1, 4, 1.0, + "", + "Flurry", + 0, + NULL +}; + +#endif + +#include "flurry.h" + +global_info_t *flurry_info = NULL; + +static +double currentTime(void) { + struct timeval tv; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&tv, &tzp); +# else + gettimeofday(&tv); +# endif + + return (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; +} + +double TimeInSecondsSinceStart (const global_info_t *global) { + return currentTime() - global->gTimeCounter; +} + +#if 0 +#ifdef __ppc__ +static int IsAltiVecAvailable(void) +{ + return 0; +} +#endif +#endif + + +static +void delete_flurry_info(flurry_info_t *flurry) +{ + int i; + + free(flurry->s); + free(flurry->star); + for (i=0;ispark[i]); + } + /* free(flurry); */ +} + +static +flurry_info_t *new_flurry_info(global_info_t *global, int streams, ColorModes colour, float thickness, float speed, double bf) +{ + int i,k; + flurry_info_t *flurry = (flurry_info_t *)malloc(sizeof(flurry_info_t)); + + if (!flurry) return NULL; + + flurry->flurryRandomSeed = RandFlt(0.0, 300.0); + + flurry->fOldTime = 0; + flurry->dframe = 0; + flurry->fTime = TimeInSecondsSinceStart(global) + flurry->flurryRandomSeed; + flurry->fDeltaTime = flurry->fTime - flurry->fOldTime; + + flurry->numStreams = streams; + flurry->streamExpansion = thickness; + flurry->currentColorMode = colour; + flurry->briteFactor = bf; + + flurry->s = malloc(sizeof(SmokeV)); + InitSmoke(flurry->s); + + flurry->star = malloc(sizeof(Star)); + InitStar(flurry->star); + flurry->star->rotSpeed = speed; + + for (i = 0;i < MAX_SPARKS; i++) + { + flurry->spark[i] = malloc(sizeof(Spark)); + InitSpark(flurry->spark[i]); + flurry->spark[i]->mystery = 1800 * (i + 1) / 13; /* 100 * (i + 1) / (flurry->numStreams + 1); */ + UpdateSpark(global, flurry, flurry->spark[i]); + } + + for (i=0;is->p[i].dead.i[k] = 1; + } + } + + flurry->next = NULL; + + return flurry; +} + +static +void GLSetupRC(global_info_t *global) +{ + /* setup the defaults for OpenGL */ + glDisable(GL_DEPTH_TEST); + glAlphaFunc(GL_GREATER,0.0f); + glEnable(GL_ALPHA_TEST); + glShadeModel(GL_FLAT); + glDisable(GL_LIGHTING); + glDisable(GL_CULL_FACE); + glEnable(GL_BLEND); + + glViewport(0,0,(int) global->sys_glWidth,(int) global->sys_glHeight); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0,global->sys_glWidth,0,global->sys_glHeight,-1,1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glClear(GL_COLOR_BUFFER_BIT); + + glEnableClientState(GL_COLOR_ARRAY); + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + +#if 0 +#ifdef __ppc__ + global->optMode = OPT_MODE_SCALAR_FRSQRTE; + +#ifdef __VEC__ + if (IsAltiVecAvailable()) global->optMode = OPT_MODE_VECTOR_UNROLLED; +#endif + +#else + global->optMode = OPT_MODE_SCALAR_BASE; +#endif +#endif /* 0 */ +} + +static +void GLRenderScene(global_info_t *global, flurry_info_t *flurry, double b) +{ + int i; + + flurry->dframe++; + + flurry->fOldTime = flurry->fTime; + flurry->fTime = TimeInSecondsSinceStart(global) + flurry->flurryRandomSeed; + flurry->fDeltaTime = flurry->fTime - flurry->fOldTime; + + flurry->drag = (float) pow(0.9965,flurry->fDeltaTime*85.0); + + UpdateStar(global, flurry, flurry->star); + +#ifdef DRAW_SPARKS + glShadeModel(GL_SMOOTH); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE); +#endif + + for (i=0;inumStreams;i++) { + flurry->spark[i]->color[0]=1.0; + flurry->spark[i]->color[1]=1.0; + flurry->spark[i]->color[2]=1.0; + flurry->spark[i]->color[2]=1.0; + UpdateSpark(global, flurry, flurry->spark[i]); +#ifdef DRAW_SPARKS + DrawSpark(global, flurry, flurry->spark[i]); +#endif + } + + switch(global->optMode) { + case OPT_MODE_SCALAR_BASE: + UpdateSmoke_ScalarBase(global, flurry, flurry->s); + break; +#if 0 +#ifdef __ppc__ + case OPT_MODE_SCALAR_FRSQRTE: + UpdateSmoke_ScalarFrsqrte(global, flurry, flurry->s); + break; +#endif +#ifdef __VEC__ + case OPT_MODE_VECTOR_SIMPLE: + UpdateSmoke_VectorBase(global, flurry, flurry->s); + break; + case OPT_MODE_VECTOR_UNROLLED: + UpdateSmoke_VectorUnrolled(global, flurry, flurry->s); + break; +#endif +#endif /* 0 */ + + default: + break; + } + + /* glDisable(GL_BLEND); */ + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + glEnable(GL_TEXTURE_2D); + + switch(global->optMode) { + case OPT_MODE_SCALAR_BASE: +#if 0 +#ifdef __ppc__ + case OPT_MODE_SCALAR_FRSQRTE: +#endif +#endif /* 0 */ + DrawSmoke_Scalar(global, flurry, flurry->s, b); + break; +#if 0 +#ifdef __VEC__ + case OPT_MODE_VECTOR_SIMPLE: + case OPT_MODE_VECTOR_UNROLLED: + DrawSmoke_Vector(global, flurry, flurry->s, b); + break; +#endif +#endif /* 0 */ + default: + break; + } + + glDisable(GL_TEXTURE_2D); +} + +static +void GLResize(global_info_t *global, float w, float h) +{ + global->sys_glWidth = w; + global->sys_glHeight = h; +} + +/* new window size or exposure */ +ENTRYPOINT void reshape_flurry(ModeInfo *mi, int width, int height) +{ + global_info_t *global = flurry_info + MI_SCREEN(mi); + + glXMakeCurrent(MI_DISPLAY(mi), global->window, *(global->glx_context)); + + glViewport(0.0, 0.0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, width, 0, height,-1,1); + glMatrixMode(GL_MODELVIEW); + glClear(GL_COLOR_BUFFER_BIT); + glFlush(); + GLResize(global, (float)width, (float)height); +} + +ENTRYPOINT void +init_flurry(ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + int i; + global_info_t *global; + enum { + PRESET_INSANE = -1, + PRESET_WATER = 0, + PRESET_FIRE, + PRESET_PSYCHEDELIC, + PRESET_RGB, + PRESET_BINARY, + PRESET_CLASSIC, + PRESET_MAX + } preset_num; + + MI_INIT (mi, flurry_info); + + global = &flurry_info[screen]; + + global->gTimeCounter = currentTime(); + + global->window = MI_WINDOW(mi); + + global->flurry = NULL; + + if (!preset_str || !*preset_str) preset_str = DEF_PRESET; + if (!strcmp(preset_str, "random")) { + preset_num = random() % PRESET_MAX; + } else if (!strcmp(preset_str, "water")) { + preset_num = PRESET_WATER; + } else if (!strcmp(preset_str, "fire")) { + preset_num = PRESET_FIRE; + } else if (!strcmp(preset_str, "psychedelic")) { + preset_num = PRESET_PSYCHEDELIC; + } else if (!strcmp(preset_str, "rgb")) { + preset_num = PRESET_RGB; + } else if (!strcmp(preset_str, "binary")) { + preset_num = PRESET_BINARY; + } else if (!strcmp(preset_str, "classic")) { + preset_num = PRESET_CLASSIC; + } else if (!strcmp(preset_str, "insane")) { + preset_num = PRESET_INSANE; + } else { + fprintf(stderr, "%s: unknown preset %s\n", progname, preset_str); + exit(1); + } + + switch (preset_num) { + case PRESET_WATER: { + for (i = 0; i < 9; i++) { + flurry_info_t *flurry; + + flurry = new_flurry_info(global, 1, blueColorMode, 100.0, 2.0, 2.0); + flurry->next = global->flurry; + global->flurry = flurry; + } + break; + } + case PRESET_FIRE: { + flurry_info_t *flurry; + + flurry = new_flurry_info(global, 12, slowCyclicColorMode, 10000.0, 0.2, 1.0); + flurry->next = global->flurry; + global->flurry = flurry; + break; + } + case PRESET_PSYCHEDELIC: { + flurry_info_t *flurry; + + flurry = new_flurry_info(global, 10, rainbowColorMode, 200.0, 2.0, 1.0); + flurry->next = global->flurry; + global->flurry = flurry; + break; + } + case PRESET_RGB: { + flurry_info_t *flurry; + + flurry = new_flurry_info(global, 3, redColorMode, 100.0, 0.8, 1.0); + flurry->next = global->flurry; + global->flurry = flurry; + + flurry = new_flurry_info(global, 3, greenColorMode, 100.0, 0.8, 1.0); + flurry->next = global->flurry; + global->flurry = flurry; + + flurry = new_flurry_info(global, 3, blueColorMode, 100.0, 0.8, 1.0); + flurry->next = global->flurry; + global->flurry = flurry; + break; + } + case PRESET_BINARY: { + flurry_info_t *flurry; + + flurry = new_flurry_info(global, 16, tiedyeColorMode, 1000.0, 0.5, 1.0); + flurry->next = global->flurry; + global->flurry = flurry; + + flurry = new_flurry_info(global, 16, tiedyeColorMode, 1000.0, 1.5, 1.0); + flurry->next = global->flurry; + global->flurry = flurry; + break; + } + case PRESET_CLASSIC: { + flurry_info_t *flurry; + + flurry = new_flurry_info(global, 5, tiedyeColorMode, 10000.0, 1.0, 1.0); + flurry->next = global->flurry; + global->flurry = flurry; + break; + } + case PRESET_INSANE: { + flurry_info_t *flurry; + + flurry = new_flurry_info(global, 64, tiedyeColorMode, 1000.0, 0.5, 0.5); + flurry->next = global->flurry; + global->flurry = flurry; + + break; + } + default: { + fprintf(stderr, "%s: unknown preset %s\n", progname, preset_str); + exit(1); + } + } + + if ((global->glx_context = init_GL(mi)) != NULL) { + reshape_flurry(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + GLSetupRC(global); + } else { + MI_CLEARWINDOW(mi); + } + + global->first = 1; + global->oldFrameTime = -1; +} + +ENTRYPOINT void +draw_flurry(ModeInfo * mi) +{ + double newFrameTime; + double deltaFrameTime = 0; + double brite; + GLfloat alpha; + + global_info_t *global = flurry_info + MI_SCREEN(mi); + flurry_info_t *flurry; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + newFrameTime = currentTime(); + if (global->oldFrameTime == -1) { + /* special case the first frame -- clear to black */ + alpha = 1.0; + } else { + /* + * this clamps the speed at below 60fps and, here + * at least, produces a reasonably accurate 50fps. + * (probably part CPU speed and part scheduler). + * + * Flurry is designed to run at this speed; much higher + * than that and the blending causes the display to + * saturate, which looks really ugly. + */ + if (newFrameTime - global->oldFrameTime < 1/60.0) { + usleep(MAX_(1,(int)(20000 * (newFrameTime - global->oldFrameTime)))); + return; + + } + deltaFrameTime = newFrameTime - global->oldFrameTime; + alpha = 5.0 * deltaFrameTime; + } + global->oldFrameTime = newFrameTime; + + if (alpha > 0.2) alpha = 0.2; + + if (!global->glx_context) + return; + + if (global->first) { + MakeTexture(); + global->first = 0; + } + glDrawBuffer(GL_BACK); + glXMakeCurrent(display, window, *(global->glx_context)); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4f(0.0, 0.0, 0.0, alpha); + glRectd(0, 0, global->sys_glWidth, global->sys_glHeight); + + brite = pow(deltaFrameTime,0.75) * 10; + for (flurry = global->flurry; flurry; flurry=flurry->next) { + GLRenderScene(global, flurry, brite * flurry->briteFactor); + } + + if (mi->fps_p) do_fps (mi); + + glFinish(); + glXSwapBuffers(display, window); +} + +ENTRYPOINT void +free_flurry(ModeInfo * mi) +{ + global_info_t *global = &flurry_info[MI_SCREEN(mi)]; + flurry_info_t *flurry; + + if (global->glx_context) { + glXMakeCurrent(MI_DISPLAY(mi), global->window, *(global->glx_context)); + } + + for (flurry = global->flurry; flurry; flurry=flurry->next) { + delete_flurry_info(flurry); + } +} + +XSCREENSAVER_MODULE ("Flurry", flurry) + +#endif diff --git a/hacks/glx/flurry.h b/hacks/glx/flurry.h new file mode 100644 index 0000000..9bbe4b2 --- /dev/null +++ b/hacks/glx/flurry.h @@ -0,0 +1,299 @@ +/* + +Copyright (c) 2002, Calum Robinson +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* -*- Mode: C; tab-width: 4 c-basic-offset: 4 indent-tabs-mode: t -*- */ +/* flurry */ +#ifndef __GLCODE__ +#define __GLCODE__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifndef HAVE_JWXYZ +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + + +#include +#include + +#include "yarandom.h" +#include "rotator.h" +#include "gltrackball.h" + +typedef struct _global_info_t global_info_t; +typedef struct _flurry_info_t flurry_info_t; + +#define sqr(X) ((X) * (X)) +#define PI 3.14159265358979323846f +#define DEG2RAD(X) (PI*(X)/180.0) +#define RAD2DEG(X) ((X)*180.0/PI) +#define rnd() (frand(1.0)) + +/* fabs: Absolute function. */ +/* #undef abs */ +/* #define abs(a) ( (a) > 0 ? (a) : -(a) ) */ + +/* Force sign clamping to (-1;0;1) */ +#define sgn(a) ((a)<0?-1:((a)?1:0)) + +/* used to compute the min and max of two expresions */ +#define MIN_(a, b) (((a) < (b)) ? (a) : (b)) +#define MAX_(a, b) (((a) > (b)) ? (a) : (b)) + +typedef union { + float f[4]; +#if 0 +#if __VEC__ + vector float v; +#endif +#endif /* 0 */ +} floatToVector; + +typedef union { + unsigned int i[4]; +#if 0 +#if __VEC__ + vector unsigned int v; +#endif +#endif /* 0 */ +} intToVector; + +typedef struct SmokeParticleV +{ + floatToVector color[4]; + floatToVector position[3]; + floatToVector oldposition[3]; + floatToVector delta[3]; + intToVector dead; + floatToVector time; + intToVector animFrame; +} SmokeParticleV; + +#define NUMSMOKEPARTICLES 3600 + +typedef struct SmokeV +{ + SmokeParticleV p[NUMSMOKEPARTICLES/4]; + int nextParticle; + int nextSubParticle; + float lastParticleTime; + int firstTime; + long frame; + float old[3]; + floatToVector seraphimVertices[NUMSMOKEPARTICLES*2+1]; + floatToVector seraphimColors[NUMSMOKEPARTICLES*4+1]; + float seraphimTextures[NUMSMOKEPARTICLES*2*4]; +} SmokeV; + +void InitSmoke(SmokeV *s); + +void UpdateSmoke_ScalarBase(global_info_t *global, flurry_info_t *flurry, SmokeV *s); +#if 0 +#ifdef __ppc__ +void UpdateSmoke_ScalarFrsqrte(global_info_t *global, flurry_info_t *flurry, SmokeV *s); +#endif +#ifdef __VEC__ +void UpdateSmoke_VectorBase(global_info_t *global, flurry_info_t *flurry, SmokeV *s); +void UpdateSmoke_VectorUnrolled(global_info_t *global, flurry_info_t *flurry, SmokeV *s); +#endif +#endif /* 0 */ + +void DrawSmoke_Scalar(global_info_t *global, flurry_info_t *flurry, SmokeV *s, float); +void DrawSmoke_Vector(global_info_t *global, flurry_info_t *flurry, SmokeV *s, float); + +typedef struct Star +{ + float position[3]; + float mystery; + float rotSpeed; + int ate; +} Star; + +void UpdateStar(global_info_t *global, flurry_info_t *flurry, Star *s); +void InitStar(Star *s); + +typedef struct Spark +{ + float position[3]; + int mystery; + float delta[3]; + float color[4]; +} Spark; + +void UpdateSparkColour(global_info_t *info, flurry_info_t *flurry, Spark *s); +void InitSpark(Spark *s); +void UpdateSpark(global_info_t *info, flurry_info_t *flurry, Spark *s); +void DrawSpark(global_info_t *info, flurry_info_t *flurry, Spark *s); + +/* #define FastDistance2D(x,y) hypot(x,y) */ + +/* UInt8 sys_glBPP=32; */ +/* int SSMODE = FALSE; */ +/* int currentVideoMode = 0; */ +/* int cohesiveness = 7; */ +/* int fieldStrength; */ +/* int colorCoherence = 7; */ +/* int fieldIncoherence = 0; */ +/* int ifieldSpeed = 120; */ + +static inline float FastDistance2D(float x, float y) +{ + /* this function computes the distance from 0,0 to x,y with ~3.5% error */ + float mn; + /* first compute the absolute value of x,y */ + x = (x < 0.0f) ? -x : x; + y = (y < 0.0f) ? -y : y; + + /* compute the minimum of x,y */ + mn = x] +[\-fps] +.SH DESCRIPTION +This is a port of the OSX screensaver flurry. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-preset +Select a preset (classic, fire, water, psychedelic, rgb, binary, random, insane) + +(Insane will never be selected at random, because it requires lots of CPU/GPU +power) + +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH AUTHORS +OSX screensaver by Calum Robinson + +http://homepage.mac.com/calumr + +xscreensaver port by Tobias Sargeant + +.SH POSTCARDS + +If you really like it, send me a postcard (after all, you're getting this for +free!). Please check this address by downloading the latest version of Flurry +just before you send me a postcard - I may have moved. + +.PD 0 +Calum Robinson +.P +133 Sydenham Avenue +.P +Belfast +.P +Northern Ireland +.P +BT4 2DQ +.PD 0 + +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT diff --git a/hacks/glx/flyingtoasters.c b/hacks/glx/flyingtoasters.c new file mode 100644 index 0000000..19a5897 --- /dev/null +++ b/hacks/glx/flyingtoasters.c @@ -0,0 +1,868 @@ +/* flyingtoasters, Copyright (c) 2003-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Draws 3D flying toasters, and toast. Inspired by the ancient + * Berkeley Systems / After Dark hack, but now updated to the wide + * wonderful workd of OpenGL and 3D! + * + * Code by jwz; object models by Baconmonkey. + * + * The original After Dark flying toasters, with the fluffy white wings, + * were a trademark of Berkeley Systems. Berkeley Systems ceased to exist + * some time in 1998, having been gobbled up by Sierra Online, who were + * subsequently gobbled up by Flipside and/or Vivendi (it's hard to tell + * exactly what happened when.) + * + * I doubt anyone even cares any more, but if they do, hopefully this homage, + * with the space-age 3D jet-plane toasters, will be considered different + * enough that whoever still owns the trademark to the fluffy-winged 2D + * bitmapped toasters won't get all huffy at us. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +/* #define DEBUG */ + +# define free_toasters 0 +# define release_toasters 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define DEF_SPEED "1.0" +#define DEF_NTOASTERS "20" +#define DEF_NSLICES "25" +#define DEF_TEXTURE "True" + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +#include "xlockmore.h" +#include "gltrackball.h" +#include "ximage-loader.h" +#include + +#define HAVE_TEXTURE +#ifdef HAVE_TEXTURE +# include "images/gen/chromesphere_png.h" +# include "images/gen/toast_png.h" +#endif /* HAVE_TEXTURE */ + + +#ifdef USE_GL /* whole file */ + +#include "gllist.h" + +extern const struct gllist + *toaster, *toaster_base, *toaster_handle, *toaster_handle2, *toaster_jet, + *toaster_knob, *toaster_slots, *toaster_wing, *toast, *toast2; + +static const struct gllist * const *all_objs[] = { + &toaster, &toaster_base, &toaster_handle, &toaster_handle2, &toaster_jet, + &toaster_knob, &toaster_slots, &toaster_wing, &toast, &toast2 +}; + +#define BASE_TOASTER 0 +#define BASE 1 +#define HANDLE 2 +#define HANDLE_SLOT 3 +#define JET 4 +#define KNOB 5 +#define SLOTS 6 +#define JET_WING 7 +#define TOAST 8 +#define TOAST_BITTEN 9 + +#define GRID_SIZE 60 +#define GRID_DEPTH 500 + + +static const struct { GLfloat x, y; } nice_views[] = { + { 0, 120 }, + { 0, -120 }, + { 12, 28 }, /* this is a list of viewer rotations that look nice. */ + { 12, -28 }, /* every now and then we switch to a new one. */ + {-10, -28 }, /* (but we only use the first two at start-up.) */ + { 40, -60 }, + {-40, -60 }, + { 40, 60 }, + {-40, 60 }, + { 30, 0 }, + {-30, 0 }, +}; + + +typedef struct { + GLfloat x, y, z; + GLfloat dx, dy, dz; + Bool toaster_p; + int toast_type; /* 0, 1 */ + GLfloat handle_pos; /* 0.0 - 1.0 */ + GLfloat knob_pos; /* degrees */ + int loaded; /* 2 bits */ +} floater; + +typedef struct { + GLXContext *glx_context; + trackball_state *user_trackball; + Bool button_down_p; + + int last_view, target_view; + GLfloat view_x, view_y; + int view_steps, view_tick; + Bool auto_tracking_p; + int track_tick; + + GLuint *dlists; + +# ifdef HAVE_TEXTURE + GLuint chrome_texture; + GLuint toast_texture; +# endif + + int nfloaters; + floater *floaters; + +} toaster_configuration; + +static toaster_configuration *bps = NULL; + +static GLfloat speed; +static int ntoasters; +static int nslices; +static int do_texture; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-ntoasters", ".ntoasters", XrmoptionSepArg, 0 }, + { "-nslices", ".nslices", XrmoptionSepArg, 0 }, + {"-texture", ".texture", XrmoptionNoArg, "True" }, + {"+texture", ".texture", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&ntoasters, "ntoasters", "Count", DEF_NTOASTERS, t_Int}, + {&nslices, "nslices", "Count", DEF_NSLICES, t_Int}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt toasters_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static void +reset_floater (ModeInfo *mi, floater *f) +{ +/* toaster_configuration *bp = &bps[MI_SCREEN(mi)]; */ + + GLfloat n = GRID_SIZE/2.0; + GLfloat n2 = GRID_DEPTH/2.0; + GLfloat delta = GRID_SIZE * speed / 200.0; + + f->dx = 0; + f->dy = 0; + f->dz = delta; + + f->dz += BELLRAND(delta) - delta/3; + + if (! (random() % 5)) { + f->dx += (BELLRAND(delta*2) - delta); + f->dy += (BELLRAND(delta*2) - delta); + } + + if (! (random() % 40)) f->dz *= 10; /* occasional speedy one */ + + f->x = frand(n) - n/2; + f->y = frand(n) - n/2; + f->z = -n2 - frand(delta * 4); + + if (f->toaster_p) + { + f->loaded = 0; + f->knob_pos = frand(180) - 90; + f->handle_pos = ((random() & 1) ? 0.0 : 1.0); + + if (f->handle_pos > 0.8 && (! (random() % 5))) + f->loaded = (random() & 3); /* let's toast! */ + } + else + { + if (! (random() % 10)) + f->toast_type = 1; /* toast_bitten */ + } +} + + +static void +tick_floater (ModeInfo *mi, floater *f) +{ + toaster_configuration *bp = &bps[MI_SCREEN(mi)]; + + GLfloat n1 = GRID_DEPTH/2.0; + GLfloat n2 = GRID_SIZE*4; + + if (bp->button_down_p) return; + + f->x += f->dx; + f->y += f->dy; + f->z += f->dz; + + if (! (random() % 50000)) /* sudden gust of gravity */ + f->dy -= 2.8; + + if (f->x < -n2 || f->x > n2 || + f->y < -n2 || f->y > n2 || + f->z > n1) + reset_floater (mi, f); +} + + +static void +auto_track_init (ModeInfo *mi) +{ + toaster_configuration *bp = &bps[MI_SCREEN(mi)]; + bp->last_view = (random() % 2); + bp->target_view = bp->last_view + 2; + bp->view_x = nice_views[bp->last_view].x; + bp->view_y = nice_views[bp->last_view].y; + bp->view_steps = 100; + bp->view_tick = 0; + bp->auto_tracking_p = True; +} + + +static void +auto_track (ModeInfo *mi) +{ + toaster_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (bp->button_down_p) + return; + + /* if we're not moving, maybe start moving. Otherwise, do nothing. */ + if (! bp->auto_tracking_p) + { + if (++bp->track_tick < 200/speed) return; + bp->track_tick = 0; + if (! (random() % 5)) + bp->auto_tracking_p = True; + else + return; + } + + + { + GLfloat ox = nice_views[bp->last_view].x; + GLfloat oy = nice_views[bp->last_view].y; + GLfloat tx = nice_views[bp->target_view].x; + GLfloat ty = nice_views[bp->target_view].y; + + /* move from A to B with sinusoidal deltas, so that it doesn't jerk + to a stop. */ + GLfloat th = sin ((M_PI / 2) * (double) bp->view_tick / bp->view_steps); + + bp->view_x = (ox + ((tx - ox) * th)); + bp->view_y = (oy + ((ty - oy) * th)); + bp->view_tick++; + + if (bp->view_tick >= bp->view_steps) + { + bp->view_tick = 0; + bp->view_steps = (350.0 / speed); + bp->last_view = bp->target_view; + bp->target_view = (random() % (countof(nice_views) - 2)) + 2; + bp->auto_tracking_p = False; + } + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_toasters (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (40.0, 1/h, 1.0, 250); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 2.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +toasters_handle_event (ModeInfo *mi, XEvent *event) +{ + toaster_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->user_trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +#ifdef HAVE_TEXTURE + +static void +load_textures (ModeInfo *mi) +{ + toaster_configuration *bp = &bps[MI_SCREEN(mi)]; + XImage *xi; + + xi = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + chromesphere_png, sizeof(chromesphere_png)); + clear_gl_error(); + +#ifndef HAVE_JWZGLES /* No SPHERE_MAP yet */ + glGenTextures (1, &bp->chrome_texture); + glBindTexture (GL_TEXTURE_2D, bp->chrome_texture); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + xi->width, xi->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, xi->data); + check_gl_error("texture"); + XDestroyImage (xi); + xi = 0; +#endif + + xi = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + toast_png, sizeof(toast_png)); + + glGenTextures (1, &bp->toast_texture); + glBindTexture (GL_TEXTURE_2D, bp->toast_texture); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_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); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + xi->width, xi->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, xi->data); + check_gl_error("texture"); + XDestroyImage (xi); + xi = 0; +} + +#endif /* HAVE_TEXTURE */ + + + +ENTRYPOINT void +init_toasters (ModeInfo *mi) +{ + toaster_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_toasters (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (!wire) + { + GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0}; +/* GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};*/ + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + +# ifdef HAVE_TEXTURE + if (!wire && do_texture) + load_textures (mi); +# endif + + bp->user_trackball = gltrackball_init (False); + auto_track_init (mi); + + bp->dlists = (GLuint *) calloc (countof(all_objs)+1, sizeof(GLuint)); + for (i = 0; i < countof(all_objs); i++) + bp->dlists[i] = glGenLists (1); + + for (i = 0; i < countof(all_objs); i++) + { + const struct gllist *gll = *all_objs[i]; + + glNewList (bp->dlists[i], GL_COMPILE); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glMatrixMode(GL_MODELVIEW); + + glRotatef (-90, 1, 0, 0); + glRotatef (180, 0, 0, 1); + glScalef (6, 6, 6); + + glBindTexture (GL_TEXTURE_2D, 0); + glDisable (GL_TEXTURE_2D); + + if (i == BASE_TOASTER) + { + GLfloat color[4] = {1.00, 1.00, 1.00, 1.00}; + GLfloat spec[4] = {1.00, 1.00, 1.00, 1.0}; + GLfloat shiny = 20.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); +#ifdef HAVE_TEXTURE + if (do_texture) + { +#ifndef HAVE_JWZGLES /* No SPHERE_MAP yet */ + glEnable (GL_TEXTURE_2D); + glEnable (GL_TEXTURE_GEN_S); + glEnable (GL_TEXTURE_GEN_T); + glBindTexture (GL_TEXTURE_2D, bp->chrome_texture); + glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); + glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); +#endif + } +# endif + } + else if (i == TOAST || i == TOAST_BITTEN) + { + GLfloat color[4] = {0.80, 0.80, 0.00, 1.0}; + GLfloat spec[4] = {0.00, 0.00, 0.00, 1.0}; + GLfloat shiny = 0.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); +#ifdef HAVE_TEXTURE + if (do_texture) + { + glEnable (GL_TEXTURE_2D); + glEnable (GL_TEXTURE_GEN_S); + glEnable (GL_TEXTURE_GEN_T); + glBindTexture (GL_TEXTURE_2D, bp->toast_texture); + glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); + glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); + } +# endif + + glMatrixMode(GL_TEXTURE); + glTranslatef(0.5, 0.5, 0); + glMatrixMode(GL_MODELVIEW); + } + else if (i == SLOTS || i == HANDLE_SLOT) + { + GLfloat color[4] = {0.30, 0.30, 0.40, 1.0}; + GLfloat spec[4] = {0.40, 0.40, 0.70, 1.0}; + GLfloat shiny = 128.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + else if (i == HANDLE) + { + GLfloat color[4] = {0.80, 0.10, 0.10, 1.0}; + GLfloat spec[4] = {1.00, 1.00, 1.00, 1.0}; + GLfloat shiny = 20.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + else if (i == KNOB) + { + GLfloat color[4] = {0.80, 0.10, 0.10, 1.0}; + GLfloat spec[4] = {0.00, 0.00, 0.00, 1.0}; + GLfloat shiny = 0.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + else if (i == JET || i == JET_WING) + { + GLfloat color[4] = {0.70, 0.70, 0.70, 1.0}; + GLfloat spec[4] = {1.00, 1.00, 1.00, 1.0}; + GLfloat shiny = 20.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + else if (i == BASE) + { + GLfloat color[4] = {0.50, 0.50, 0.50, 1.0}; + GLfloat spec[4] = {1.00, 1.00, 1.00, 1.0}; + GLfloat shiny = 20.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + else + { + GLfloat color[4] = {1.00, 1.00, 1.00, 1.00}; + GLfloat spec[4] = {1.00, 1.00, 1.00, 1.0}; + GLfloat shiny = 128.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + + renderList (gll, wire); + + glMatrixMode(GL_TEXTURE); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + + glEndList (); + } + + bp->nfloaters = ntoasters + nslices; + bp->floaters = (floater *) calloc (bp->nfloaters, sizeof (floater)); + + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + /* arrange the list so that half the toasters are in front of bread, + and half are behind. */ + f->toaster_p = ((i < ntoasters / 2) || + (i >= (nslices + (ntoasters / 2)))); + reset_floater (mi, f); + + /* Position the first generation randomly, but make sure they aren't + on screen yet (until we rotate the view into position.) + */ + { + GLfloat min = -GRID_DEPTH/2; + GLfloat max = GRID_DEPTH/3.5; + f->z = frand (max - min) + min; + } + } +} + + +static void +draw_origin (ModeInfo *mi) +{ +# ifdef DEBUG +/* toaster_configuration *bp = &bps[MI_SCREEN(mi)];*/ + + if (!MI_IS_WIREFRAME(mi)) glDisable(GL_LIGHTING); + if (!MI_IS_WIREFRAME(mi) && do_texture) glDisable(GL_TEXTURE_2D); + + glPushMatrix(); + glScalef (5, 5, 5); + glBegin(GL_LINES); + glVertex3f(-1, 0, 0); glVertex3f(1, 0, 0); + glVertex3f(0, -1, 0); glVertex3f(0, 1, 0); + glVertex3f(0, 0, -1); glVertex3f(0, 0, 1); + glEnd(); + glPopMatrix(); + + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); + if (!MI_IS_WIREFRAME(mi) && do_texture) glEnable(GL_TEXTURE_2D); +# endif /* DEBUG */ +} + + +static void +draw_grid (ModeInfo *mi) +{ +# ifdef DEBUG +/* toaster_configuration *bp = &bps[MI_SCREEN(mi)];*/ + + if (!MI_IS_WIREFRAME(mi)) glDisable(GL_LIGHTING); + if (!MI_IS_WIREFRAME(mi) && do_texture) glDisable(GL_TEXTURE_2D); + glPushMatrix(); + glBegin(GL_LINE_LOOP); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, 0); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, 0); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, 0); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, 0); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, -GRID_DEPTH/2); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, -GRID_DEPTH/2); + glEnd(); + glBegin(GL_LINES); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, GRID_DEPTH/2); + glEnd(); + glPopMatrix(); + + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); + if (!MI_IS_WIREFRAME(mi) && do_texture) glEnable(GL_TEXTURE_2D); +# endif /* DEBUG */ +} + + +static void +draw_floater (ModeInfo *mi, floater *f) +{ + toaster_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat n; + + glFrontFace(GL_CCW); + + glPushMatrix(); + glTranslatef (f->x, f->y, f->z); + if (f->toaster_p) + { + glPushMatrix(); + glRotatef (180, 0, 1, 0); + + glCallList (bp->dlists[BASE_TOASTER]); + mi->polygon_count += (*all_objs[BASE_TOASTER])->points / 3; + glPopMatrix(); + + glPushMatrix(); + glTranslatef(0, 1.01, 0); + n = 0.91; glScalef(n,n,n); + glCallList (bp->dlists[SLOTS]); + mi->polygon_count += (*all_objs[SLOTS])->points / 3; + glPopMatrix(); + + glPushMatrix(); + glRotatef (180, 0, 1, 0); + glTranslatef(0, -0.4, -2.38); + n = 0.33; glScalef(n,n,n); + glCallList (bp->dlists[HANDLE_SLOT]); + mi->polygon_count += (*all_objs[HANDLE_SLOT])->points / 3; + glPopMatrix(); + + glPushMatrix(); + glTranslatef(0, -1.1, 3); + n = 0.3; glScalef (n,n,n); + glTranslatef(0, f->handle_pos * 4.8, 0); + glCallList (bp->dlists[HANDLE]); + mi->polygon_count += (*all_objs[HANDLE])->points / 3; + glPopMatrix(); + + glPushMatrix(); + glRotatef (180, 0, 1, 0); + glTranslatef(0, -1.1, -3); /* where the handle is */ + glTranslatef (1, -0.4, 0); /* down and to the left */ + n = 0.08; glScalef (n,n,n); + glRotatef (f->knob_pos, 0, 0, 1); + glCallList (bp->dlists[KNOB]); + mi->polygon_count += (*all_objs[KNOB])->points / 3; + glPopMatrix(); + + glPushMatrix(); + glRotatef (180, 0, 1, 0); + glTranslatef (0, -2.3, 0); + glCallList (bp->dlists[BASE]); + mi->polygon_count += (*all_objs[BASE])->points / 3; + glPopMatrix(); + + glPushMatrix(); + glTranslatef(-4.8, 0, 0); + glCallList (bp->dlists[JET_WING]); + mi->polygon_count += (*all_objs[JET_WING])->points / 3; + glScalef (0.5, 0.5, 0.5); + glTranslatef (-2, -1, 0); + glCallList (bp->dlists[JET]); + mi->polygon_count += (*all_objs[JET])->points / 3; + glPopMatrix(); + + glPushMatrix(); + glTranslatef(4.8, 0, 0); + glScalef(-1, 1, 1); + glFrontFace(GL_CW); + glCallList (bp->dlists[JET_WING]); + mi->polygon_count += (*all_objs[JET_WING])->points / 3; + glScalef (0.5, 0.5, 0.5); + glTranslatef (-2, -1, 0); + glCallList (bp->dlists[JET]); + mi->polygon_count += (*all_objs[JET])->points / 3; + glFrontFace(GL_CCW); + glPopMatrix(); + + if (f->loaded) + { + glPushMatrix(); + glTranslatef(0, 1.01, 0); + n = 0.91; glScalef(n,n,n); + glRotatef (90, 0, 0, 1); + glRotatef (90, 0, 1, 0); + glTranslatef(0, 0, -0.95); + glTranslatef(0, 0.72, 0); + if (f->loaded & 1) + { + glCallList (bp->dlists[TOAST]); + mi->polygon_count += (*all_objs[TOAST])->points / 3; + } + glTranslatef(0, -1.46, 0); + if (f->loaded & 2) + { + glCallList (bp->dlists[TOAST]); + mi->polygon_count += (*all_objs[TOAST])->points / 3; + } + glPopMatrix(); + } + } + else + { + glScalef (0.7, 0.7, 0.7); + if (f->toast_type == 0) + { + glCallList (bp->dlists[TOAST]); + mi->polygon_count += (*all_objs[TOAST])->points / 3; + } + else + { + glCallList (bp->dlists[TOAST_BITTEN]); + mi->polygon_count += (*all_objs[TOAST_BITTEN])->points / 3; + } + } + + glPopMatrix(); +} + + + +ENTRYPOINT void +draw_toasters (ModeInfo *mi) +{ + toaster_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + glRotatef(bp->view_x, 1, 0, 0); + glRotatef(bp->view_y, 0, 1, 0); + + /* Rotate the scene around a point that's a little deeper in. */ + glTranslatef (0, 0, -50); + gltrackball_rotate (bp->user_trackball); + glTranslatef (0, 0, 50); + +#if 0 + { + floater F; + F.toaster_p = 0; + F.toast_type = 1; + F.handle_pos = 0; + F.knob_pos = -90; + F.loaded = 3; + F.x = F.y = F.z = 0; + F.dx = F.dy = F.dz = 0; + + glScalef(2,2,2); + if (!MI_IS_WIREFRAME(mi)) glDisable(GL_LIGHTING); + if (!MI_IS_WIREFRAME(mi) && do_texture) glDisable(GL_TEXTURE_2D); + glBegin(GL_LINES); + glVertex3f(-10, 0, 0); glVertex3f(10, 0, 0); + glVertex3f(0, -10, 0); glVertex3f(0, 10, 0); + glVertex3f(0, 0, -10); glVertex3f(0, 0, 10); + glEnd(); + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); + if (!MI_IS_WIREFRAME(mi) && do_texture) glEnable(GL_TEXTURE_2D); + + draw_floater (mi, &F); + glPopMatrix (); + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(dpy, window); + return; + } +#endif + + glScalef (0.5, 0.5, 0.5); + draw_origin (mi); + glTranslatef (0, 0, -GRID_DEPTH/2.5); + draw_grid (mi); + + mi->polygon_count = 0; + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + draw_floater (mi, f); + tick_floater (mi, f); + } + auto_track (mi); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("FlyingToasters", flyingtoasters, toasters) + +#endif /* USE_GL */ diff --git a/hacks/glx/flyingtoasters.man b/hacks/glx/flyingtoasters.man new file mode 100644 index 0000000..dbe5d5a --- /dev/null +++ b/hacks/glx/flyingtoasters.man @@ -0,0 +1,86 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +flyingtoasters - 3d space-age jet-powered flying toasters (and toast) +.SH SYNOPSIS +.B flyingtoasters +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-ntoasters \fInumber\fP] +[\-nslices \fInumber\fP] +[\-no-texture] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Draws a squadron of shiny 3D space-age jet-powered flying toasters, and +associated toast, flying across your screen. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +How fast the toasters fly. Larger for faster. Default: 1.0. +.TP 8 +.B \-ntoasters \fInumber\fP +How many toasters to draw. Default 20. +.TP 8 +.B \-nslices \fInumber\fP +How many slices of toast to draw. Default 25. +.TP 8 +.B \-no-texture +Turn off texture mapping (for slow machines.) +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR After Dark +.SH COPYRIGHT +Copyright \(co 2003 by Jamie Zawinski. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. + +The original After Dark flying toasters, with the fluffy white wings, +were a trademark of Berkeley Systems. Berkeley Systems ceased to exist +some time in 1998, having been gobbled up by Sierra Online, who were +subsequently gobbled up by Flipside and/or Vivendi (it's hard to tell +exactly what happened when.) + +I doubt anyone even cares any more, but if they do, hopefully this +homage, with the space-age 3D jet-plane toasters, will be considered +different enough that whoever still owns the trademark to the +fluffy-winged 2D bitmapped toasters won't get all huffy at us. +.SH AUTHOR +Code by Jamie Zawinski. Object models by Baconmonkey. diff --git a/hacks/glx/fps-gl.c b/hacks/glx/fps-gl.c new file mode 100644 index 0000000..eb6b6de --- /dev/null +++ b/hacks/glx/fps-gl.c @@ -0,0 +1,98 @@ +/* fps, Copyright (c) 2001-2015 Jamie Zawinski + * Draw a frames-per-second display (Xlib and OpenGL). + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifdef HAVE_COCOA +# include "jwxyz.h" +#elif defined(HAVE_ANDROID) +# include +#else /* real Xlib */ +# include +# include +#endif /* !HAVE_COCOA */ + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "xlockmoreI.h" +#include "fpsI.h" +#include "texfont.h" + +/* These are in xlock-gl.c */ +extern void clear_gl_error (void); +extern void check_gl_error (const char *type); + +typedef struct { + texture_font_data *texfont; + int line_height; + Bool top_p; +} gl_fps_data; + + +static void +xlockmore_gl_fps_init (fps_state *st) +{ + gl_fps_data *data = (gl_fps_data *) calloc (1, sizeof(*data)); + int ascent, descent; + data->top_p = get_boolean_resource (st->dpy, "fpsTop", "FPSTop"); + data->texfont = load_texture_font (st->dpy, "fpsFont"); + texture_string_metrics (data->texfont, "M", 0, &ascent, &descent); + data->line_height = ascent + descent; + st->gl_fps_data = data; +} + + +/* Callback in xscreensaver_function_table, via xlockmore.c. + */ +void +xlockmore_gl_compute_fps (Display *dpy, Window w, fps_state *fpst, + void *closure) +{ + ModeInfo *mi = (ModeInfo *) closure; + if (! mi->fpst) + { + mi->fpst = fpst; + xlockmore_gl_fps_init (fpst); + } + + fps_compute (fpst, mi->polygon_count, mi->recursion_depth); +} + + +/* Called directly from GL programs (as `do_fps') before swapping buffers. + */ +void +xlockmore_gl_draw_fps (ModeInfo *mi) +{ + fps_state *st = mi->fpst; + if (st) /* might be too early */ + { + gl_fps_data *data = (gl_fps_data *) st->gl_fps_data; + XWindowAttributes xgwa; + int lines = 1; + const char *s; + + XGetWindowAttributes (st->dpy, st->window, &xgwa); + for (s = st->string; *s; s++) + if (*s == '\n') lines++; + + glColor3f (1, 1, 1); + print_texture_label (st->dpy, data->texfont, + xgwa.width, xgwa.height, + (data->top_p ? 1 : 2), + st->string); + } +} diff --git a/hacks/glx/gears.c b/hacks/glx/gears.c new file mode 100644 index 0000000..3976f2f --- /dev/null +++ b/hacks/glx/gears.c @@ -0,0 +1,938 @@ +/* gears, Copyright (c) 2007-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Originally written by Brian Paul in 1996 or earlier; + * rewritten by jwz in Nov 2007. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 0 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_gears 0 +# define release_gears 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "involute.h" +#include "normals.h" +#include "tube.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + Bool planetary_p; + + int ngears; + gear **gears; + + GLuint armature_dlist; + int armature_polygons; + + struct { GLfloat x1, y1, x2, y2; } bbox; + +} gears_configuration; + +static gears_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt gears_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_gears (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +free_gear (gear *g) +{ + if (g->dlist) + glDeleteLists (g->dlist, 1); + free (g); +} + + +/* Create and return a new gear sized for placement next to or on top of + the given parent gear (if any.) Returns 0 if out of memory. + [Mostly lifted from pinion.c] + */ +static gear * +new_gear (ModeInfo *mi, gear *parent) +{ + gears_configuration *bp = &bps[MI_SCREEN(mi)]; + gear *g = (gear *) calloc (1, sizeof (*g)); + static unsigned long id = 0; /* only used in debugging output */ + + if (!g) return 0; + g->id = ++id; + + /* Pick the size of the teeth. + */ + if (parent) /* adjascent gears need matching teeth */ + { + g->tooth_w = parent->tooth_w; + g->tooth_h = parent->tooth_h; + g->tooth_slope = -parent->tooth_slope; + } + else /* gears that begin trains get any size they want */ + { + g->tooth_w = 0.007 * (1.0 + BELLRAND(4.0)); + g->tooth_h = 0.005 * (1.0 + BELLRAND(8.0)); +/* + g->tooth_slope = ((random() % 8) + ? 0 + : 0.5 + BELLRAND(1)); + */ + } + + /* Pick the number of teeth, and thus, the radius. + */ + { + double c; + + if (!parent || bp->ngears > 4) + g->nteeth = 5 + BELLRAND (20); + else + g->nteeth = parent->nteeth * (0.5 + BELLRAND(2)); + + c = g->nteeth * g->tooth_w * 2; /* circumference = teeth + gaps */ + g->r = c / (M_PI * 2); /* c = 2 pi r */ + } + + g->thickness = g->tooth_w + frand (g->r); + g->thickness2 = g->thickness * 0.7; + g->thickness3 = g->thickness; + + /* Colorize + */ + g->color[0] = 0.5 + frand(0.5); + g->color[1] = 0.5 + frand(0.5); + g->color[2] = 0.5 + frand(0.5); + g->color[3] = 1.0; + + g->color2[0] = g->color[0] * 0.85; + g->color2[1] = g->color[1] * 0.85; + g->color2[2] = g->color[2] * 0.85; + g->color2[3] = g->color[3]; + + + /* Decide on shape of gear interior: + - just a ring with teeth; + - that, plus a thinner in-set "plate" in the middle; + - that, plus a thin raised "lip" on the inner plate; + - or, a wide lip (really, a thicker third inner plate.) + */ + if ((random() % 10) == 0) + { + /* inner_r can go all the way in; there's no inset disc. */ + g->inner_r = (g->r * 0.1) + frand((g->r - g->tooth_h/2) * 0.8); + g->inner_r2 = 0; + g->inner_r3 = 0; + } + else + { + /* inner_r doesn't go in very far; inner_r2 is an inset disc. */ + g->inner_r = (g->r * 0.5) + frand((g->r - g->tooth_h) * 0.4); + g->inner_r2 = (g->r * 0.1) + frand(g->inner_r * 0.5); + g->inner_r3 = 0; + + if (g->inner_r2 > (g->r * 0.2)) + { + int nn = (random() % 10); + if (nn <= 2) + g->inner_r3 = (g->r * 0.1) + frand(g->inner_r2 * 0.2); + else if (nn <= 7 && g->inner_r2 >= 0.1) + g->inner_r3 = g->inner_r2 - 0.01; + } + } + + /* If we have three discs, sometimes make the middle disc be spokes. + */ + if (g->inner_r3 && ((random() % 5) == 0)) + { + g->spokes = 2 + BELLRAND (5); + g->spoke_thickness = 1 + frand(7.0); + if (g->spokes == 2 && g->spoke_thickness < 2) + g->spoke_thickness += 1; + } + + /* Sometimes add little nubbly bits, if there is room. + */ + if (g->nteeth > 5) + { + double size = 0; + involute_biggest_ring (g, 0, &size, 0); + if (size > g->r * 0.2 && (random() % 5) == 0) + { + g->nubs = 1 + (random() % 16); + if (g->nubs > 8) g->nubs = 1; + } + } + + if (g->inner_r3 > g->inner_r2) abort(); + if (g->inner_r2 > g->inner_r) abort(); + if (g->inner_r > g->r) abort(); + + /* Decide how complex the polygon model should be. + */ + { + double pix = g->tooth_h * MI_HEIGHT(mi); /* approx. tooth size in pixels */ + if (pix <= 2.5) g->size = INVOLUTE_SMALL; + else if (pix <= 3.5) g->size = INVOLUTE_MEDIUM; + else if (pix <= 25) g->size = INVOLUTE_LARGE; + else g->size = INVOLUTE_HUGE; + } + + g->base_p = !parent; + + return g; +} + + +/* Given a newly-created gear, place it next to its parent in the scene, + with its teeth meshed and the proper velocity. Returns False if it + didn't work. (Call this a bunch of times until either it works, or + you decide it's probably not going to.) + [Mostly lifted from pinion.c] + */ +static Bool +place_gear (ModeInfo *mi, gear *g, gear *parent) +{ + gears_configuration *bp = &bps[MI_SCREEN(mi)]; + + /* Compute this gear's velocity. + */ + if (! parent) + { + g->ratio = 0.8 + BELLRAND(0.4); /* 0.8-1.2 = 8-12rpm @ 60fps */ + g->th = 1; /* not 0 */ + } + else + { + /* Gearing ratio is the ratio of the number of teeth to previous gear + (which is also the ratio of the circumferences.) + */ + g->ratio = (double) parent->nteeth / (double) g->nteeth; + + /* Set our initial rotation to match that of the previous gear, + multiplied by the gearing ratio. (This is finessed later, + once we know the exact position of the gear relative to its + parent.) + */ + g->th = -(parent->th * g->ratio); + + if (g->nteeth & 1) /* rotate 1/2 tooth-size if odd number of teeth */ + { + double off = (180.0 / g->nteeth); + if (g->th > 0) + g->th += off; + else + g->th -= off; + } + + /* ratios are cumulative for all gears in the train. */ + g->ratio *= parent->ratio; + } + + + if (parent) /* Place the gear next to the parent. */ + { + double r_off = parent->r + g->r; + int angle; + + angle = (random() % 360) - 180; /* -180 to +180 degrees */ + + g->x = parent->x + (cos ((double) angle * (M_PI / 180)) * r_off); + g->y = parent->y + (sin ((double) angle * (M_PI / 180)) * r_off); + g->z = parent->z; + + /* avoid accidentally changing sign of "th" in the math below. */ + g->th += (g->th > 0 ? 360 : -360); + + /* Adjust the rotation of the gear so that its teeth line up with its + parent, based on the position of the gear and the current rotation + of the parent. + */ + { + double p_c = 2 * M_PI * parent->r; /* circumference of parent */ + double g_c = 2 * M_PI * g->r; /* circumference of g */ + + double p_t = p_c * (angle/360.0); /* distance travelled along + circumference of parent when + moving "angle" degrees along + parent. */ + double g_rat = p_t / g_c; /* if travelling that distance + along circumference of g, + ratio of g's circumference + travelled. */ + double g_th = 360.0 * g_rat; /* that ratio in degrees */ + + g->th += angle + g_th; + } + } + + /* If the position we picked for this gear causes it to overlap + with any earlier gear in the train, give up. + */ + { + int i; + + for (i = bp->ngears-1; i >= 0; i--) + { + gear *og = bp->gears[i]; + + if (og == g) continue; + if (og == parent) continue; + if (g->z != og->z) continue; /* Ignore unless on same layer */ + + /* Collision detection without sqrt: + d = sqrt(a^2 + b^2) d^2 = a^2 + b^2 + d < r1 + r2 d^2 < (r1 + r2)^2 + */ + if (((g->x - og->x) * (g->x - og->x) + + (g->y - og->y) * (g->y - og->y)) < + ((g->r + g->tooth_h + og->r + og->tooth_h) * + (g->r + g->tooth_h + og->r + og->tooth_h))) + return False; + } + } + + return True; +} + + +/* Make a new gear, place it next to its parent in the scene, + with its teeth meshed and the proper velocity. Returns the gear; + or 0 if it didn't work. (Call this a bunch of times until either + it works, or you decide it's probably not going to.) + [Mostly lifted from pinion.c] + */ +static gear * +place_new_gear (ModeInfo *mi, gear *parent) +{ + gears_configuration *bp = &bps[MI_SCREEN(mi)]; + int loop_count = 0; + gear *g = 0; + + while (1) + { + loop_count++; + if (loop_count >= 100) + { + if (g) + free_gear (g); + g = 0; + break; + } + + g = new_gear (mi, parent); + if (!g) return 0; /* out of memory? */ + + if (place_gear (mi, g, parent)) + break; + } + + if (! g) return 0; + + /* We got a gear, and it is properly positioned. + Insert it in the scene. + */ + bp->gears[bp->ngears++] = g; + return g; +} + + +static int +arm (GLfloat length, + GLfloat width1, GLfloat height1, + GLfloat width2, GLfloat height2, + Bool wire) +{ + int polys = 0; + glShadeModel(GL_FLAT); + +#if 0 /* don't need these - they're embedded in other objects */ + /* draw end 1 */ + glFrontFace(GL_CW); + glNormal3f(-1, 0, 0); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f(-length/2, -width1/2, -height1/2); + glVertex3f(-length/2, width1/2, -height1/2); + glVertex3f(-length/2, width1/2, height1/2); + glVertex3f(-length/2, -width1/2, height1/2); + polys++; + glEnd(); + + /* draw end 2 */ + glFrontFace(GL_CCW); + glNormal3f(1, 0, 0); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f(length/2, -width2/2, -height2/2); + glVertex3f(length/2, width2/2, -height2/2); + glVertex3f(length/2, width2/2, height2/2); + glVertex3f(length/2, -width2/2, height2/2); + polys++; + glEnd(); +#endif + + /* draw top */ + glFrontFace(GL_CCW); + glNormal3f(0, 0, -1); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f(-length/2, -width1/2, -height1/2); + glVertex3f(-length/2, width1/2, -height1/2); + glVertex3f( length/2, width2/2, -height2/2); + glVertex3f( length/2, -width2/2, -height2/2); + polys++; + glEnd(); + + /* draw bottom */ + glFrontFace(GL_CW); + glNormal3f(0, 0, 1); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f(-length/2, -width1/2, height1/2); + glVertex3f(-length/2, width1/2, height1/2); + glVertex3f( length/2, width2/2, height2/2); + glVertex3f( length/2, -width2/2, height2/2); + polys++; + glEnd(); + + /* draw left */ + glFrontFace(GL_CW); + glNormal3f(0, -1, 0); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f(-length/2, -width1/2, -height1/2); + glVertex3f(-length/2, -width1/2, height1/2); + glVertex3f( length/2, -width2/2, height2/2); + glVertex3f( length/2, -width2/2, -height2/2); + polys++; + glEnd(); + + /* draw right */ + glFrontFace(GL_CCW); + glNormal3f(0, 1, 0); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f(-length/2, width1/2, -height1/2); + glVertex3f(-length/2, width1/2, height1/2); + glVertex3f( length/2, width2/2, height2/2); + glVertex3f( length/2, width2/2, -height2/2); + polys++; + glEnd(); + + glFrontFace(GL_CCW); + + return polys; +} + + +static int +ctube (GLfloat diameter, GLfloat width, Bool wire) +{ + tube (0, 0, width/2, + 0, 0, -width/2, + diameter, 0, + 32, True, True, wire); + return 0; /* #### */ +} + +static void +armature (ModeInfo *mi) +{ + gears_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + + static const GLfloat spec[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat shiny = 128.0; + GLfloat color[4]; + + color[0] = 0.5 + frand(0.5); + color[1] = 0.5 + frand(0.5); + color[2] = 0.5 + frand(0.5); + color[3] = 1.0; + + bp->armature_polygons = 0; + + bp->armature_dlist = glGenLists (1); + if (! bp->armature_dlist) + { + check_gl_error ("glGenLists"); + abort(); + } + + glNewList (bp->armature_dlist, GL_COMPILE); + + glMaterialfv (GL_FRONT, GL_SPECULAR, spec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glColor3f (color[0], color[1], color[2]); + + glPushMatrix(); + + { + GLfloat s = bp->gears[0]->r * 2.7; + s = s/5.6; + glScalef (s, s, s); + } + + glTranslatef (0, 0, 1.4 + bp->gears[0]->thickness); + glRotatef (30, 0, 0, 1); + + bp->armature_polygons += ctube (0.5, 10, wire); /* center axle */ + + glPushMatrix(); + glTranslatef(0.0, 4.2, -1); + bp->armature_polygons += ctube (0.5, 3, wire); /* axle 1 */ + glTranslatef(0, 0, 1.8); + bp->armature_polygons += ctube (0.7, 0.7, wire); + glPopMatrix(); + + glPushMatrix(); + glRotatef(120, 0.0, 0.0, 1.0); + glTranslatef(0.0, 4.2, -1); + bp->armature_polygons += ctube (0.5, 3, wire); /* axle 2 */ + glTranslatef(0, 0, 1.8); + bp->armature_polygons += ctube (0.7, 0.7, wire); + glPopMatrix(); + + glPushMatrix(); + glRotatef(240, 0.0, 0.0, 1.0); + glTranslatef(0.0, 4.2, -1); + bp->armature_polygons += ctube (0.5, 3, wire); /* axle 3 */ + glTranslatef(0, 0, 1.8); + bp->armature_polygons += ctube (0.7, 0.7, wire); + glPopMatrix(); + + glTranslatef(0, 0, 1.5); /* center disk */ + bp->armature_polygons += ctube (1.5, 2, wire); + + glPushMatrix(); + glRotatef(270, 0, 0, 1); + glRotatef(-10, 0, 1, 0); + glTranslatef(-2.2, 0, 0); + bp->armature_polygons += arm (4.0, 1.0, 0.5, + 2.0, 1.0, wire); /* arm 1 */ + glPopMatrix(); + + glPushMatrix(); + glRotatef(30, 0, 0, 1); + glRotatef(-10, 0, 1, 0); + glTranslatef(-2.2, 0, 0); + bp->armature_polygons += arm (4.0, 1.0, 0.5, + 2.0, 1.0, wire); /* arm 2 */ + glPopMatrix(); + + glPushMatrix(); + glRotatef(150, 0, 0, 1); + glRotatef(-10, 0, 1, 0); + glTranslatef(-2.2, 0, 0); + bp->armature_polygons += arm (4.0, 1.0, 0.5, + 2.0, 1.0, wire); /* arm 3 */ + glPopMatrix(); + + glPopMatrix(); + + glEndList (); +} + + +static void +planetary_gears (ModeInfo *mi) +{ + gears_configuration *bp = &bps[MI_SCREEN(mi)]; + gear *g0, *g1, *g2, *g3, *g4; + GLfloat distance = 2.02; + + bp->planetary_p = True; + + g0 = new_gear (mi, 0); + g1 = new_gear (mi, 0); + g2 = new_gear (mi, 0); + g3 = new_gear (mi, 0); + g4 = new_gear (mi, 0); + + if (! place_gear (mi, g0, 0)) abort(); + if (! place_gear (mi, g1, 0)) abort(); + if (! place_gear (mi, g2, 0)) abort(); + if (! place_gear (mi, g3, 0)) abort(); + if (! place_gear (mi, g4, 0)) abort(); + + g0->nteeth = 12 + (3 * (random() % 10)); /* must be multiple of 3 */ + g0->tooth_w = g0->r / g0->nteeth; + g0->tooth_h = g0->tooth_w * 2.8; + +# define COPY(F) g4->F = g3->F = g2->F = g1->F = g0->F + COPY(r); + COPY(th); + COPY(nteeth); + COPY(tooth_w); + COPY(tooth_h); + COPY(tooth_slope); + COPY(inner_r); + COPY(inner_r2); + COPY(inner_r3); + COPY(thickness); + COPY(thickness2); + COPY(thickness3); + COPY(ratio); + COPY(size); +# undef COPY + + g1->x = cos (M_PI * 2 / 3) * g1->r * distance; + g1->y = sin (M_PI * 2 / 3) * g1->r * distance; + + g2->x = cos (M_PI * 4 / 3) * g2->r * distance; + g2->y = sin (M_PI * 4 / 3) * g2->r * distance; + + g3->x = cos (M_PI * 6 / 3) * g3->r * distance; + g3->y = sin (M_PI * 6 / 3) * g3->r * distance; + + g4->x = 0; + g4->y = 0; + g4->th = -g3->th; + + /* rotate central gear 1/2 tooth-size if odd number of teeth */ + if (g4->nteeth & 1) + g4->th -= (180.0 / g4->nteeth); + + g0->inverted_p = True; + g0->x = 0; + g0->y = 0; + g0->nteeth = g1->nteeth * 3; + g0->r = g1->r * 3.05; + g0->inner_r = g0->r * 0.8; + g0->inner_r2 = 0; + g0->inner_r3 = 0; + g0->th = g1->th + (180 / g0->nteeth); + g0->ratio = g1->ratio / 3; + + g0->tooth_slope = 0; + g0->nubs = 3; + g0->spokes = 0; + g0->size = INVOLUTE_LARGE; + + bp->gears = (gear **) calloc (6, sizeof(**bp->gears)); + bp->ngears = 0; + + bp->gears[bp->ngears++] = g1; + bp->gears[bp->ngears++] = g2; + bp->gears[bp->ngears++] = g3; + bp->gears[bp->ngears++] = g4; + bp->gears[bp->ngears++] = g0; +} + + + + +ENTRYPOINT void +init_gears (ModeInfo *mi) +{ + gears_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_gears (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + if (! bp->rot) + { + double spin_speed = 0.5; + double wander_speed = 0.01; + double spin_accel = 0.25; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True + ); + bp->trackball = gltrackball_init (True); + } + + if (bp->gears) + { + for (i = 0; i < bp->ngears; i++) + free_gear (bp->gears[i]); + free (bp->gears); + bp->gears = 0; + bp->ngears = 0; + } + + if (!(random() % 8)) + { + planetary_gears (mi); + } + else + { + gear *g = 0; + int total_gears = MI_COUNT (mi); + + bp->planetary_p = False; + + if (total_gears <= 0) + total_gears = 3 + fabs (BELLRAND (8) - 4); /* 3 - 7, mostly 3. */ + bp->gears = (gear **) calloc (total_gears+2, sizeof(**bp->gears)); + bp->ngears = 0; + + for (i = 0; i < total_gears; i++) + g = place_new_gear (mi, g); + } + + + /* Center gears in scene. */ + { + GLfloat minx=99999, miny=99999, maxx=-99999, maxy=-99999; + int i; + for (i = 0; i < bp->ngears; i++) + { + gear *g = bp->gears[i]; + if (g->x - g->r < minx) minx = g->x - g->r; + if (g->x + g->r > maxx) maxx = g->x + g->r; + if (g->y - g->r < miny) miny = g->y - g->r; + if (g->y + g->r > maxy) maxy = g->y + g->r; + } + bp->bbox.x1 = minx; + bp->bbox.y1 = miny; + bp->bbox.x2 = maxx; + bp->bbox.y2 = maxy; + } + + /* Now render each gear into its display list. + */ + for (i = 0; i < bp->ngears; i++) + { + gear *g = bp->gears[i]; + g->dlist = glGenLists (1); + if (! g->dlist) + { + check_gl_error ("glGenLists"); + abort(); + } + + glNewList (g->dlist, GL_COMPILE); + g->polygons += draw_involute_gear (g, wire); + glEndList (); + } + if (bp->planetary_p) + armature (mi); +} + + +ENTRYPOINT void +draw_gears (ModeInfo *mi) +{ + gears_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef ((x - 0.5) * 4, + (y - 0.5) * 4, + (z - 0.5) * 7); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + + /* add a little rotation for -no-spin mode */ + x -= 0.14; + y -= 0.06; + + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + /* Center the scene's bounding box in the window, + and scale it to fit. + */ + { + GLfloat w = bp->bbox.x2 - bp->bbox.x1; + GLfloat h = bp->bbox.y2 - bp->bbox.y1; + GLfloat s = 10.0 / (w > h ? w : h); + glScalef (s, s, s); + glTranslatef (-(bp->bbox.x1 + w/2), + -(bp->bbox.y1 + h/2), + 0); + } + + mi->polygon_count = 0; + + for (i = 0; i < bp->ngears; i++) + { + gear *g = bp->gears[i]; + + glPushMatrix(); + + glTranslatef (g->x, g->y, g->z); + glRotatef (g->th, 0, 0, 1); + + glCallList (g->dlist); + mi->polygon_count += g->polygons; + + glPopMatrix (); + } + + if (bp->planetary_p) + { + glCallList (bp->armature_dlist); + mi->polygon_count += bp->armature_polygons; + } + + glPopMatrix (); + + /* spin gears */ + if (!bp->button_down_p) + for (i = 0; i < bp->ngears; i++) + { + gear *g = bp->gears[i]; + double off = g->ratio * 5 * speed; + if (g->th > 0) + g->th += off; + else + g->th -= off; + } + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT Bool +gears_handle_event (ModeInfo *mi, XEvent *event) +{ + gears_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + init_gears (mi); + return True; + } + + return False; +} + +XSCREENSAVER_MODULE ("Gears", gears) + +#endif /* USE_GL */ diff --git a/hacks/glx/gears.man b/hacks/glx/gears.man new file mode 100644 index 0000000..a54a6af --- /dev/null +++ b/hacks/glx/gears.man @@ -0,0 +1,79 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +gears - draw interlocking gears, for xscreensaver. +.SH SYNOPSIS +.B gears +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] +[\-delay \fIusecs\fP] +[\-speed \fIfloat\fP] +[\-no\-spin] +[\-no\-wander] +[-count \fIinteger\fP] +[-wireframe] +[-fps] +.SH DESCRIPTION +This draws a set of rotating gears. +.SH OPTIONS +.I gears +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fIusecs\fP +The delay between frames of the animation, in microseconds. +Default: 30000 (0.03 seconds.) +.TP 8 +.B \-speed \fIfloat\fP +Larger numbers mean run faster. Default: 1.0. +.TP 8 +.B \-no\-spin +Don't rotate the object. +.TP 8 +.B \-no\-wander +Don't wander the object around the screen. +.TP 8 +.B \-count \fIinteger\fP +How many gears to draw. Default: 0 for random. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2007 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. + +An earlier version of this program by Brian Paul was written in 1997; +this version was rewritten from scratch by jwz in 2007. diff --git a/hacks/glx/geodesic.c b/hacks/glx/geodesic.c new file mode 100644 index 0000000..9ef2696 --- /dev/null +++ b/hacks/glx/geodesic.c @@ -0,0 +1,816 @@ +/* geodesic, Copyright (c) 2013-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 4 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_geodesic 0 +# define release_geodesic 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#include "gllist.h" + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_MODE "mesh" + +typedef struct { double a, o; } LL; /* latitude + longitude */ + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + int ncolors; + XColor *colors; + int ccolor, ccolor2; + GLfloat color1[4], color2[4]; + + GLfloat depth; + GLfloat delta; + + GLfloat thickness; + GLfloat thickdelta; + + GLfloat morph_ratio; + + Bool random_p; + enum { WIRE, MESH, SOLID, STELLATED, STELLATED2 } mode; + +} geodesic_configuration; + +static geodesic_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; +static char *mode_str; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-mode", ".mode", XrmoptionSepArg, 0 }, + { "-wireframe", ".mode", XrmoptionNoArg, "wire" }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&mode_str, "mode", "Mode", DEF_MODE, t_String}, +}; + +ENTRYPOINT ModeSpecOpt geodesic_opts = { + countof(opts), opts, countof(vars), vars, NULL}; + + +/* Renders a triangle specified by 3 cartesian endpoints. + */ +static void +triangle0 (ModeInfo *mi, XYZ p1, XYZ p2, XYZ p3) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + GLfloat r = bp->thickness; + + if (bp->mode == SOLID || bp->mode == STELLATED || bp->mode == STELLATED2) + r = 1; + + if (r <= 0.001) r = 0.001; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bp->color1); + + if (wire) r = 1; + + if (r <= 0) + ; + else if (r >= 1) /* solid triangular face */ + { + glFrontFace (GL_CCW); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + do_normal (p1.x, p1.y, p1.z, + p2.x, p2.y, p2.z, + p3.x, p3.y, p3.z); + glVertex3f (p1.x, p1.y, p1.z); + glVertex3f (p2.x, p2.y, p2.z); + glVertex3f (p3.x, p3.y, p3.z); + glEnd(); + mi->polygon_count++; + } + else /* mesh: triangular face with a triangular hole */ + { + XYZ p1b, p2b, p3b, c; + GLfloat d = 0.98; + + c.x = (p1.x + p2.x + p3.x) / 3; + c.y = (p1.y + p2.y + p3.y) / 3; + c.z = (p1.z + p2.z + p3.z) / 3; + + p1b.x = p1.x + (r * (c.x - p1.x)); + p1b.y = p1.y + (r * (c.y - p1.y)); + p1b.z = p1.z + (r * (c.z - p1.z)); + + p2b.x = p2.x + (r * (c.x - p2.x)); + p2b.y = p2.y + (r * (c.y - p2.y)); + p2b.z = p2.z + (r * (c.z - p2.z)); + + p3b.x = p3.x + (r * (c.x - p3.x)); + p3b.y = p3.y + (r * (c.y - p3.y)); + p3b.z = p3.z + (r * (c.z - p3.z)); + + /* Outside faces */ + + do_normal (p1.x, p1.y, p1.z, + p2.x, p2.y, p2.z, + p3.x, p3.y, p3.z); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (p1.x, p1.y, p1.z); + glVertex3f (p1b.x, p1b.y, p1b.z); + glVertex3f (p3b.x, p3b.y, p3b.z); + glVertex3f (p3.x, p3.y, p3.z); + mi->polygon_count++; + + glVertex3f (p1.x, p1.y, p1.z); + glVertex3f (p2.x, p2.y, p2.z); + glVertex3f (p2b.x, p2b.y, p2b.z); + glVertex3f (p1b.x, p1b.y, p1b.z); + mi->polygon_count++; + + glVertex3f (p2.x, p2.y, p2.z); + glVertex3f (p3.x, p3.y, p3.z); + glVertex3f (p3b.x, p3b.y, p3b.z); + glVertex3f (p2b.x, p2b.y, p2b.z); + mi->polygon_count++; + glEnd(); + + /* Inside faces */ + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bp->color2); + + do_normal (p3.x, p3.y, p3.z, + p3b.x, p3b.y, p3b.z, + p1b.x, p1b.y, p1b.z); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (d * p3.x, d * p3.y, d * p3.z); + glVertex3f (d * p3b.x, d * p3b.y, d * p3b.z); + glVertex3f (d * p1b.x, d * p1b.y, d * p1b.z); + glVertex3f (d * p1.x, d * p1.y, d * p1.z); + mi->polygon_count++; + + glVertex3f (d * p1b.x, d * p1b.y, d * p1b.z); + glVertex3f (d * p2b.x, d * p2b.y, d * p2b.z); + glVertex3f (d * p2.x, d * p2.y, d * p2.z); + glVertex3f (d * p1.x, d * p1.y, d * p1.z); + mi->polygon_count++; + + glVertex3f (d * p2b.x, d * p2b.y, d * p2b.z); + glVertex3f (d * p3b.x, d * p3b.y, d * p3b.z); + glVertex3f (d * p3.x, d * p3.y, d * p3.z); + glVertex3f (d * p2.x, d * p2.y, d * p2.z); + mi->polygon_count++; + glEnd(); + + + /* Connecting edges */ + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bp->color1); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + + do_normal (p1b.x, p1b.y, p1b.z, + p2b.x, p2b.y, p2b.z, + p2b.x * d, p2b.y * d, p2b.z * d); + glVertex3f (p1b.x, p1b.y, p1b.z); + glVertex3f (p2b.x, p2b.y, p2b.z); + glVertex3f (p2b.x * d, p2b.y * d, p2b.z * d); + glVertex3f (p1b.x * d, p1b.y * d, p1b.z * d); + mi->polygon_count++; + + do_normal (p2b.x, p2b.y, p2b.z, + p3b.x, p3b.y, p3b.z, + p3b.x * d, p3b.y * d, p3b.z * d); + glVertex3f (p2b.x, p2b.y, p2b.z); + glVertex3f (p3b.x, p3b.y, p3b.z); + glVertex3f (p3b.x * d, p3b.y * d, p3b.z * d); + glVertex3f (p2b.x * d, p2b.y * d, p2b.z * d); + mi->polygon_count++; + + do_normal (p3b.x, p3b.y, p3b.z, + p1b.x, p1b.y, p1b.z, + p1b.x * d, p1b.y * d, p1b.z * d); + glVertex3f (p3b.x, p3b.y, p3b.z); + glVertex3f (p1b.x, p1b.y, p1b.z); + glVertex3f (p1b.x * d, p1b.y * d, p1b.z * d); + glVertex3f (p3b.x * d, p3b.y * d, p3b.z * d); + mi->polygon_count++; + glEnd(); + } +} + + +/* Renders a triangle specified by 3 polar endpoints. + */ +static void +triangle1 (ModeInfo *mi, LL v1, LL v2, LL v3) +{ + XYZ p1, p2, p3; + + p1.x = cos (v1.a) * cos (v1.o); + p1.y = cos (v1.a) * sin (v1.o); + p1.z = sin (v1.a); + + p2.x = cos (v2.a) * cos (v2.o); + p2.y = cos (v2.a) * sin (v2.o); + p2.z = sin (v2.a); + + p3.x = cos (v3.a) * cos (v3.o); + p3.y = cos (v3.a) * sin (v3.o); + p3.z = sin (v3.a); + + triangle0 (mi, p1, p2, p3); +} + + +/* Computes the midpoint of a line between two polar coords. + */ +static void +midpoint2 (LL v1, LL v2, LL *vm_ret, + XYZ *p1_ret, XYZ *p2_ret, XYZ *pm_ret) +{ + XYZ p1, p2, pm; + LL vm; + GLfloat hyp; + + p1.x = cos (v1.a) * cos (v1.o); + p1.y = cos (v1.a) * sin (v1.o); + p1.z = sin (v1.a); + + p2.x = cos (v2.a) * cos (v2.o); + p2.y = cos (v2.a) * sin (v2.o); + p2.z = sin (v2.a); + + pm.x = (p1.x + p2.x) / 2; + pm.y = (p1.y + p2.y) / 2; + pm.z = (p1.z + p2.z) / 2; + + vm.o = atan2 (pm.y, pm.x); + hyp = sqrt (pm.x * pm.x + pm.y * pm.y); + vm.a = atan2 (pm.z, hyp); + + *p1_ret = p1; + *p2_ret = p2; + *pm_ret = pm; + *vm_ret = vm; +} + + +/* Computes the midpoint of a triangle specified in polar coords. + */ +static void +midpoint3 (LL v1, LL v2, LL v3, LL *vm_ret, + XYZ *p1_ret, XYZ *p2_ret, XYZ *p3_ret, XYZ *pm_ret) +{ + XYZ p1, p2, p3, pm; + LL vm; + GLfloat hyp; + + p1.x = cos (v1.a) * cos (v1.o); + p1.y = cos (v1.a) * sin (v1.o); + p1.z = sin (v1.a); + + p2.x = cos (v2.a) * cos (v2.o); + p2.y = cos (v2.a) * sin (v2.o); + p2.z = sin (v2.a); + + p3.x = cos (v3.a) * cos (v3.o); + p3.y = cos (v3.a) * sin (v3.o); + p3.z = sin (v3.a); + + pm.x = (p1.x + p2.x + p3.x) / 3; + pm.y = (p1.y + p2.y + p3.y) / 3; + pm.z = (p1.z + p2.z + p3.z) / 3; + + vm.o = atan2 (pm.y, pm.x); + hyp = sqrt (pm.x * pm.x + pm.y * pm.y); + vm.a = atan2 (pm.z, hyp); + + *p1_ret = p1; + *p2_ret = p2; + *p3_ret = p3; + *pm_ret = pm; + *vm_ret = vm; +} + + +/* Renders a triangular geodesic facet to the given depth. + */ +static void +triangle (ModeInfo *mi, LL v1, LL v2, LL v3, int depth) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (depth <= 0) + triangle1 (mi, v1, v2, v3); + else + { + LL v12, v23, v13; + XYZ p1, p2, p3, p12, p23, p13; + GLfloat r = bp->morph_ratio; + + midpoint2 (v1, v2, &v12, &p1, &p2, &p12); + midpoint2 (v2, v3, &v23, &p2, &p3, &p23); + midpoint2 (v1, v3, &v13, &p1, &p3, &p13); + depth--; + + if (depth == 0 && + r != 0 && + (bp->mode == STELLATED || bp->mode == STELLATED2)) + { /* morph between flat and stellated faces */ + XYZ pc, pc2; + LL vc; + midpoint3 (v1, v2, v3, &vc, &p1, &p2, &p3, &pc); + + pc2.x = cos (vc.a) * cos (vc.o); + pc2.y = cos (vc.a) * sin (vc.o); + pc2.z = sin (vc.a); + + pc.x = pc.x + r * (pc2.x - pc.x); + pc.y = pc.y + r * (pc2.y - pc.y); + pc.z = pc.z + r * (pc2.z - pc.z); + + triangle0 (mi, p1, p2, pc); + triangle0 (mi, p2, p3, pc); + triangle0 (mi, p3, p1, pc); + } + else if (depth == 0 && r < 1) + { /* morph between flat and sphere-oid faces */ + XYZ p12b, p23b, p13b; + + p12b.x = cos (v12.a) * cos (v12.o); + p12b.y = cos (v12.a) * sin (v12.o); + p12b.z = sin (v12.a); + + p23b.x = cos (v23.a) * cos (v23.o); + p23b.y = cos (v23.a) * sin (v23.o); + p23b.z = sin (v23.a); + + p13b.x = cos (v13.a) * cos (v13.o); + p13b.y = cos (v13.a) * sin (v13.o); + p13b.z = sin (v13.a); + + p12.x = p12.x + r * (p12b.x - p12.x); + p12.y = p12.y + r * (p12b.y - p12.y); + p12.z = p12.z + r * (p12b.z - p12.z); + + p23.x = p23.x + r * (p23b.x - p23.x); + p23.y = p23.y + r * (p23b.y - p23.y); + p23.z = p23.z + r * (p23b.z - p23.z); + + p13.x = p13.x + r * (p13b.x - p13.x); + p13.y = p13.y + r * (p13b.y - p13.y); + p13.z = p13.z + r * (p13b.z - p13.z); + + triangle0 (mi, p1, p12, p13); + triangle0 (mi, p12, p2, p23); + triangle0 (mi, p13, p23, p3); + triangle0 (mi, p12, p23, p13); + } + else + { + triangle (mi, v1, v12, v13, depth); + triangle (mi, v12, v2, v23, depth); + triangle (mi, v13, v23, v3, depth); + triangle (mi, v12, v23, v13, depth); + } + } +} + + +/* Renders a geodesic sphere to the given depth (frequency). + */ +static void +make_geodesic (ModeInfo *mi, int depth) +{ + GLfloat th0 = atan (0.5); /* lat division: 26.57 deg */ + GLfloat s = M_PI / 5; /* lon division: 72 deg */ + int i; + + for (i = 0; i < 10; i++) + { + GLfloat th1 = s * i; + GLfloat th2 = s * (i+1); + GLfloat th3 = s * (i+2); + LL v1, v2, v3, vc; + v1.a = th0; v1.o = th1; + v2.a = th0; v2.o = th3; + v3.a = -th0; v3.o = th2; + vc.a = M_PI/2; vc.o = th2; + + if (i & 1) /* north */ + { + triangle (mi, v1, v2, vc, depth); + triangle (mi, v2, v1, v3, depth); + } + else /* south */ + { + v1.a = -v1.a; + v2.a = -v2.a; + v3.a = -v3.a; + vc.a = -vc.a; + triangle (mi, v2, v1, vc, depth); + triangle (mi, v1, v2, v3, depth); + } + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_geodesic (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + + +ENTRYPOINT void +init_geodesic (ModeInfo *mi) +{ + geodesic_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_geodesic (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + /* This comes first because it sets wire. */ + if (!mode_str || !*mode_str) + mode_str = DEF_MODE; + if (!strcasecmp(mode_str, "random")) { + bp->random_p = 1; + bp->mode = MESH + (random() % (STELLATED2 - MESH + 1)); + } else if (!strcasecmp(mode_str, "mesh")) { + bp->mode = MESH; + } else if (!strcasecmp(mode_str, "solid")) { + bp->mode = SOLID; + } else if (!strcasecmp(mode_str, "stellated")) { + bp->mode = STELLATED; + } else if (!strcasecmp(mode_str, "stellated2")) { + bp->mode = STELLATED2; + } else if (!strcasecmp(mode_str, "wire")) { + bp->mode = WIRE; + MI_IS_WIREFRAME(mi) = wire = 1; + } else { + fprintf (stderr, "%s: unknown mode: %s\n", progname, mode_str); + exit (1); + } + + + { + static GLfloat cspec[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat shiny = 128.0; + + static GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + static GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + static GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + static GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glMaterialfv (GL_FRONT, GL_SPECULAR, cspec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + + glLineWidth (3); + } + + if (! wire) + { + glEnable (GL_DEPTH_TEST); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + /* Actually this looks pretty good in -wire with lighting! */ + glEnable (GL_LIGHTING); + glEnable (GL_LIGHT0); + + if (! bp->rot) + { + double spin_speed = 0.25 * speed; + double wander_speed = 0.01 * speed; + double spin_accel = 0.2; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + bp->trackball = gltrackball_init (True); + } + + if (MI_COUNT(mi) < 1) MI_COUNT(mi) = 1; + + bp->ncolors = 1024; + if (! bp->colors) + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + bp->ccolor = 0; + bp->depth = 1; /* start 1 up from the icosahedron */ + bp->delta = 0.003; + +#if 0 + bp->thickness = 1; + bp->thickdelta = 0.0007; +#else + bp->thickness = 0.1; + bp->thickdelta = 0; +#endif +} + + +ENTRYPOINT Bool +geodesic_handle_event (ModeInfo *mi, XEvent *event) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + mode_str = "random"; + init_geodesic (mi); + return True; + } + + return False; +} + + +ENTRYPOINT void +draw_geodesic (ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + if (! wire) + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 15); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + bp->color1[0] = bp->colors[bp->ccolor].red / 65536.0; + bp->color1[1] = bp->colors[bp->ccolor].green / 65536.0; + bp->color1[2] = bp->colors[bp->ccolor].blue / 65536.0; + bp->color1[3] = 1; + + bp->color2[0] = bp->colors[bp->ccolor2].red / 65536.0; + bp->color2[1] = bp->colors[bp->ccolor2].green / 65536.0; + bp->color2[2] = bp->colors[bp->ccolor2].blue / 65536.0; + bp->color2[3] = 1; + + bp->ccolor = (bp->ccolor + 1) % bp->ncolors; + bp->ccolor2 = (bp->ccolor + bp->ncolors / 2) % bp->ncolors; + + mi->polygon_count = 0; + + glScalef (10, 10, 10); + + { + GLfloat r = bp->depth - floor(bp->depth); + GLfloat alpha, morph1, morph2; + int d1, d2; + + /* Two ranges: first for fading in the new segments. + Second for morphing the segments into position. + */ + GLfloat range = 0.15; + GLfloat min1 = (0.5 - range) / 2; + GLfloat max1 = 0.5 - min1; + GLfloat min2 = 0.5 + min1; + GLfloat max2 = 0.5 + max1; + + if (r < min1) /* old alone */ + { + d1 = d2 = floor (bp->depth); + morph1 = morph2 = 1; + alpha = 1; + } + else if (r < max1 && /* fade to new flat */ + (bp->mode == MESH || + bp->mode == STELLATED || + bp->mode == STELLATED2)) + { + d1 = floor (bp->depth); + d2 = ceil (bp->depth); + morph1 = 1; + morph2 = 0; + alpha = (r - min1) / (max1 - min1); + + if (bp->mode == STELLATED || bp->mode == STELLATED2) + { + morph1 = 1 - alpha; /* de-stellate while fading out */ + morph1 = 2 * (morph1 - 0.5); /* do it faster */ + if (morph1 < 0) morph1 = 0; + } + } + else if (r < min2) /* new flat */ + { + d1 = d2 = ceil (bp->depth); + morph1 = morph2 = 0; + alpha = 1; + } + else if (r < max2) /* morph */ + { + d1 = d2 = ceil (bp->depth); + morph1 = morph2 = (r - min2) / (max2 - min2); + alpha = 1; + } + else /* new alone */ + { + d1 = d2 = ceil (bp->depth); + morph1 = morph2 = 1; + alpha = 1; + } + + mi->recursion_depth = d2 + r; + + if (bp->mode == STELLATED2) + { + morph1 = -morph1; + morph2 = -morph2; + } + + if (d1 != d2) + { + if (alpha > 0.5) /* always draw the more transparent one first */ + { + int s1; GLfloat s2; + s1 = d1; d1 = d2; d2 = s1; + s2 = morph1; morph1 = morph2; morph2 = s2; + alpha = 1 - alpha; + } + bp->color1[3] = 1 - alpha; + bp->color2[3] = 1 - alpha; + + if (! wire) + glDisable (GL_POLYGON_OFFSET_FILL); + + bp->morph_ratio = morph1; + make_geodesic (mi, d1); + + /* Make the less-transparent object take precedence */ + if (!wire) + { + glEnable (GL_POLYGON_OFFSET_FILL); + glPolygonOffset (1.0, 1.0); + } + } + + bp->color1[3] = alpha; + bp->color2[3] = alpha; + + bp->morph_ratio = morph2; + make_geodesic (mi, d2); + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); + + + if (! bp->button_down_p) + { + bp->depth += speed * bp->delta; + bp->thickness += speed * bp->thickdelta; + + if (bp->depth > MI_COUNT(mi)-1) + { + bp->depth = MI_COUNT(mi)-1; + bp->delta = -fabs (bp->delta); + } + else if (bp->depth < 0) + { + bp->depth = 0; + bp->delta = fabs (bp->delta); + + /* Randomize the mode again when we hit the bottom state. + #### I wish this did a fade instead of a jump-cut. + */ + if (bp->random_p) + bp->mode = MESH + (random() % (STELLATED2 - MESH + 1)); + } + + if (bp->thickness > 1) + { + bp->thickness = 1; + bp->thickdelta = -fabs (bp->thickdelta); + } + else if (bp->thickness < 0) + { + bp->thickness = 0; + bp->thickdelta = fabs (bp->thickdelta); + } + } +} + +XSCREENSAVER_MODULE ("Geodesic", geodesic) + +#endif /* USE_GL */ diff --git a/hacks/glx/geodesic.man b/hacks/glx/geodesic.man new file mode 100644 index 0000000..4a408ca --- /dev/null +++ b/hacks/glx/geodesic.man @@ -0,0 +1,79 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +geodesic - animates a mesh geodesic sphere. +.SH SYNOPSIS +.B geodesic +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-mode \fImode\fP] +[\-no-wander] +[\-no-spin] +[\-fps] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +.SH DESCRIPTION +Animates a mesh geodesic sphere of increasing and decreasing complexity. A +geodesic sphere is an icosohedron whose equilateral faces are sub-divided +into non-equilateral triangles to more closely approximate a sphere. + +The animation shows the equilateral triangles subdivided into four +coplanar equilateral triangles; and then inflated outward, causing the +sub-triangles to no longer be equilateral, but to more closely +approximate the surface of a sphere. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-mode mesh | solid | stellated | stellated2 | wire +Face/edge display style. Default mesh. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the object should spin. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-count \fInumber\fP +Depth (frequency) of the geodesic sphere. Default: 4. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2013 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/geodesicgears.c b/hacks/glx/geodesicgears.c new file mode 100644 index 0000000..ecc7f26 --- /dev/null +++ b/hacks/glx/geodesicgears.c @@ -0,0 +1,1803 @@ +/* geodesicgears, Copyright (c) 2014-2015 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Inspired by http://bugman123.com/Gears/ + * and by http://kennethsnelson.net/PortraitOfAnAtom.pdf + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 4 \n" \ + "*wireframe: False \n" \ + "*showFPS: False \n" \ + "*texFontCacheSize: 100 \n" \ + "*suppressRotationAnimation: True\n" \ + "*font: -*-helvetica-medium-r-normal-*-*-160-*-*-*-*-*-*\n" \ + +# define release_geodesic 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "involute.h" +#include "colors.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include +#include "texfont.h" + + +#ifdef USE_GL /* whole file */ + +#include "gllist.h" + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_LABELS "False" +#define DEF_NUMBERS "False" +#define DEF_TIMEOUT "20" + +typedef struct { double a, o; } LL; /* latitude + longitude */ + +/* 10:6 is a mismesh. */ + +static const struct { + enum { PRISM, OCTO, DECA, G14, G18, G32, G92, G182 } type; + const GLfloat args[5]; +} gear_templates[] = { + { PRISM }, + { OCTO }, + { DECA }, + { G14 }, + { G18 }, + { G32, { 15, 6, 0.4535 }}, /* teeth1, teeth2, radius1 */ + { G32, { 15, 12, 0.3560 }}, + { G32, { 20, 6, 0.4850 }}, + { G32, { 20, 12, 0.3995 }}, /* double of 10:6 */ + { G32, { 20, 18, 0.3375 }}, + { G32, { 25, 6, 0.5065 }}, + { G32, { 25, 12, 0.4300 }}, + { G32, { 25, 18, 0.3725 }}, + { G32, { 25, 24, 0.3270 }}, + { G32, { 30, 12, 0.4535 }}, /* double of 15:6 */ + { G32, { 30, 18, 0.3995 }}, + { G32, { 30, 24, 0.3560 }}, /* double of 15:12 */ + { G32, { 30, 30, 0.3205 }}, + { G32, { 35, 12, 0.4710 }}, + { G32, { 35, 18, 0.4208 }}, + { G32, { 35, 24, 0.3800 }}, + { G32, { 35, 30, 0.3450 }}, + { G32, { 35, 36, 0.3160 }}, + { G32, { 40, 12, 0.4850 }}, /* double of 20:6 */ + { G32, { 40, 24, 0.3995 }}, /* double of 10:6, 20:12 */ +/*{ G32, { 40, 36, 0.3375 }},*/ /* double of 20:18 */ + { G32, { 50, 12, 0.5065 }}, /* double of 25:6 */ + { G32, { 50, 24, 0.4300 }}, /* double of 25:12 */ + + /* These all have phase errors and don't always mesh properly. + Maybe we should just omit them? */ + + { G92, { 35, 36, 16, 0.2660, 0.366 }}, /* teeth1, 2, 3, r1, pitch3 */ + { G92, { 25, 36, 11, 0.2270, 0.315 }}, +/*{ G92, { 15, 15, 8, 0.2650, 0.356 }},*/ +/*{ G92, { 20, 21, 8, 0.2760, 0.355 }},*/ + { G92, { 25, 27, 16, 0.2320, 0.359 }}, + { G92, { 20, 36, 11, 0.1875, 0.283 }}, + { G92, { 30, 30, 16, 0.2585, 0.374 }}, /* double of 15:15:8 */ + { G92, { 20, 33, 11, 0.1970, 0.293 }}, +/*{ G92, { 10, 12, 8, 0.2030, 0.345 }},*/ + { G92, { 30, 33, 16, 0.2455, 0.354 }}, +/*{ G92, { 25, 24, 8, 0.3050, 0.375 }},*/ + { G92, { 20, 24, 16, 0.2030, 0.346 }}, +}; + + +typedef struct sphere_gear sphere_gear; +struct sphere_gear { + int id; /* name, for debugging */ + XYZ axis; /* the vector on which this gear's axis lies */ + int direction; /* rotation, +1 or -1 */ + GLfloat offset; /* rotational degrees from parent gear */ + sphere_gear *parent; /* gear driving this one, or 0 for root */ + sphere_gear **children; /* gears driven by this one (no loops) */ + sphere_gear **neighbors; /* gears touching this one (circular!) */ + int nchildren, children_size; + int nneighbors, neighbors_size; + const gear *g; /* shape of this gear (shared) */ +}; + + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + int ncolors; + XColor *colors; + GLfloat color1[4], color2[4]; + texture_font_data *font; + + int nshapes, shapes_size; /* how many 'gear' objects there are */ + int ngears, gears_size; /* how many 'sphere_gear' objects there are */ + gear *shapes; + sphere_gear *gears; + + int which; + int mode; /* 0 = normal, 1 = out, 2 = in */ + int mode_tick; + int next; /* 0 = random, -1 = back, 1 = forward */ + time_t draw_time; + int draw_tick; + char *desc; + + GLfloat th; /* rotation of the root sphere_gear in degrees. */ + +} geodesic_configuration; + +static geodesic_configuration *bps = NULL; + +static int timeout; +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; +static Bool do_labels; +static Bool do_numbers; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-labels", ".labels", XrmoptionNoArg, "True" }, + { "+labels", ".labels", XrmoptionNoArg, "False" }, + { "-numbers", ".numbers",XrmoptionNoArg, "True" }, + { "+numbers", ".numbers",XrmoptionNoArg, "False" }, + { "-timeout", ".timeout",XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&do_labels, "labels", "Labels", DEF_LABELS, t_Bool}, + {&do_numbers,"numbers","Numbers",DEF_NUMBERS,t_Bool}, + {&timeout, "timeout","Seconds",DEF_TIMEOUT,t_Int}, +}; + +ENTRYPOINT ModeSpecOpt geodesic_opts = { + countof(opts), opts, countof(vars), vars, NULL}; + + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + + + +static XYZ +cross_product (XYZ a, XYZ b) +{ + XYZ c; + c.x = (a.y * b.z) - (a.z * b.y); + c.y = (a.z * b.x) - (a.x * b.z); + c.z = (a.x * b.y) - (a.y * b.x); + return c; +} + + +static GLfloat +dot_product (XYZ a, XYZ b) +{ + return (a.x * b.x) + (a.y * b.y) + (a.z * b.z); +} + + +static XYZ +normalize (XYZ v) +{ + GLfloat d = sqrt ((v.x * v.x) + (v.y * v.y) + (v.z * v.z)); + if (d == 0) + v.x = v.y = v.z = 0; + else + { + v.x /= d; + v.y /= d; + v.z /= d; + } + return v; +} + + +static XYZ +polar_to_cartesian (LL v) +{ + XYZ p; + p.x = cos (v.a) * cos (v.o); + p.y = cos (v.a) * sin (v.o); + p.z = sin (v.a); + return p; +} + + + + +static gear * +add_gear_shape (ModeInfo *mi, GLfloat radius, int teeth) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + gear *g; + int i; + + if (bp->nshapes >= bp->shapes_size - 1) + { + bp->shapes_size = bp->shapes_size * 1.2 + 4; + bp->shapes = (gear *) + realloc (bp->shapes, bp->shapes_size * sizeof(*bp->shapes)); + } + g = &bp->shapes[bp->nshapes++]; + + memset (g, 0, sizeof(*g)); + + g->r = radius; + g->nteeth = teeth; + g->ratio = 1; + + g->tooth_h = g->r / (teeth * 0.4); + + if (g->tooth_h > 0.06) /* stubbier teeth when small tooth count. */ + g->tooth_h *= 0.6; + + g->thickness = 0.05 + BELLRAND(0.15); + g->thickness2 = g->thickness / 4; + g->thickness3 = g->thickness; + g->size = wire ? INVOLUTE_SMALL : INVOLUTE_LARGE; + + /* Move the disc's origin inward to make the edge of the disc be tangent + to the unit sphere. */ + g->z = 1 - sqrt (1 - (g->r * g->r)); + + /* #### This isn't quite right */ + g->tooth_slope = 1 + ((g->z * 2) / g->r); + + + /* Decide on shape of gear interior: + - just a ring with teeth; + - that, plus a thinner in-set "plate" in the middle; + - that, plus a thin raised "lip" on the inner plate; + - or, a wide lip (really, a thicker third inner plate.) + */ + if (wire) + ; + else if ((random() % 10) == 0) + { + /* inner_r can go all the way in; there's no inset disc. */ + g->inner_r = (g->r * 0.3) + frand((g->r - g->tooth_h/2) * 0.6); + g->inner_r2 = 0; + g->inner_r3 = 0; + } + else + { + /* inner_r doesn't go in very far; inner_r2 is an inset disc. */ + g->inner_r = (g->r * 0.5) + frand((g->r - g->tooth_h) * 0.4); + g->inner_r2 = (g->r * 0.1) + frand(g->inner_r * 0.5); + g->inner_r3 = 0; + + if (g->inner_r2 > (g->r * 0.2)) + { + int nn = (random() % 10); + if (nn <= 2) + g->inner_r3 = (g->r * 0.1) + frand(g->inner_r2 * 0.2); + else if (nn <= 7 && g->inner_r2 >= 0.1) + g->inner_r3 = g->inner_r2 - 0.01; + } + } + + /* If we have three discs, sometimes make the middle disc be spokes. + */ + if (g->inner_r3 && ((random() % 5) == 0)) + { + g->spokes = 2 + BELLRAND (5); + g->spoke_thickness = 1 + frand(7.0); + if (g->spokes == 2 && g->spoke_thickness < 2) + g->spoke_thickness += 1; + } + + /* Sometimes add little nubbly bits, if there is room. + */ + if (!wire && g->nteeth > 5) + { + double size = 0; + involute_biggest_ring (g, 0, &size, 0); + if (size > g->r * 0.2 && (random() % 5) == 0) + { + g->nubs = 1 + (random() % 16); + if (g->nubs > 8) g->nubs = 1; + } + } + + /* Decide how complex the polygon model should be. + */ + { + double pix = g->tooth_h * MI_HEIGHT(mi); /* approx. tooth size in pixels */ + if (pix <= 4) g->size = INVOLUTE_SMALL; + else if (pix <= 8) g->size = INVOLUTE_MEDIUM; + else if (pix <= 30) g->size = INVOLUTE_LARGE; + else g->size = INVOLUTE_HUGE; + } + + if (g->inner_r3 > g->inner_r2) abort(); + if (g->inner_r2 > g->inner_r) abort(); + if (g->inner_r > g->r) abort(); + + i = random() % bp->ncolors; + g->color[0] = bp->colors[i].red / 65536.0; + g->color[1] = bp->colors[i].green / 65536.0; + g->color[2] = bp->colors[i].blue / 65536.0; + g->color[3] = 1; + + i = (i + bp->ncolors / 2) % bp->ncolors; + g->color2[0] = bp->colors[i].red / 65536.0; + g->color2[1] = bp->colors[i].green / 65536.0; + g->color2[2] = bp->colors[i].blue / 65536.0; + g->color2[3] = 1; + + g->dlist = glGenLists (1); + glNewList (g->dlist, GL_COMPILE); + +#if 1 + { + gear G, *g2 = &G; + *g2 = *g; + + /* Move the gear inward so that its outer edge is on the disc, instead + of its midpoint. */ + g2->z += g2->thickness/2; + + /* 'radius' is at the surface but 'g->r' is at the center, so we need + to reverse the slope computation that involute.c does. */ + g2->r /= (1 + (g2->thickness * g2->tooth_slope / 2)); + + glPushMatrix(); + glTranslatef(g2->x, g2->y, -g2->z); + + /* Line up the center of the point of tooth 0 with "up". */ + glRotatef (90, 0, 0, 1); + glRotatef (180, 0, 1, 0); + glRotatef (-360.0 / g2->nteeth / 4, 0, 0, 1); + + g->polygons = draw_involute_gear (g2, wire); + glPopMatrix(); + } +# else /* draw discs */ + { + glPushMatrix(); + glTranslatef(g->x, g->y, -g->z); + glLineWidth (2); + glFrontFace (GL_CCW); + glNormal3f(0, 0, 1); + glColor3f(0, 0, 0); + glDisable (GL_LIGHTING); + + glBegin(GL_LINES); + glVertex3f (0, 0, 0); + glVertex3f (0, radius, 0); + glEnd(); + + glColor3f(0.5, 0.5, 0.5); + glBegin(wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN); + { + GLfloat th; + GLfloat step = M_PI * 2 / 128; + /* radius *= 1.005; */ + glVertex3f (0, 0, 0); + for (th = 0; th < M_PI * 2 + step; th += step) + { + GLfloat x = cos(th) * radius; + GLfloat y = sin(th) * radius; + glVertex3f (x, y, 0); + } + } + glEnd(); + if (!wire) glEnable(GL_LIGHTING); + glPopMatrix(); + } +# endif /* 0 */ + + glEndList (); + + return g; +} + + +static void +add_sphere_gear (ModeInfo *mi, gear *g, XYZ axis) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + sphere_gear *gg; + int i; + + axis = normalize (axis); + + /* If there's already a gear on this axis, don't duplicate it. */ + for (i = 0; i < bp->ngears; i++) + { + XYZ o = bp->gears[i].axis; + if (o.x == axis.x && o.y == axis.y && o.z == axis.z) + return; + } + + if (bp->ngears >= bp->gears_size - 1) + { + bp->gears_size = bp->gears_size * 1.2 + 10; + bp->gears = (sphere_gear *) + realloc (bp->gears, bp->gears_size * sizeof(*bp->gears)); + } + + gg = &bp->gears[bp->ngears]; + memset (gg, 0, sizeof(*gg)); + gg->id = bp->ngears; + gg->axis = axis; + gg->direction = 0; + gg->g = g; + bp->ngears++; +} + + +static void +free_sphere_gears (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + for (i = 0; i < bp->nshapes; i++) + { + if (bp->shapes[i].dlist) + glDeleteLists (bp->shapes[i].dlist, 1); + } + free (bp->shapes); + bp->nshapes = 0; + bp->shapes_size = 0; + bp->shapes = 0; + + for (i = 0; i < bp->ngears; i++) + { + sphere_gear *g = &bp->gears[i]; + if (g->children) + free (g->children); + if (g->neighbors) + free (g->neighbors); + } + free (bp->gears); + bp->ngears = 0; + bp->gears_size = 0; + bp->gears = 0; +} + + + +/* Is the gear a member of the list? + */ +static Bool +gear_list_member (sphere_gear *g, sphere_gear **list, int count) +{ + int i; + for (i = 0; i < count; i++) + if (list[i] == g) return True; + return False; +} + + +/* Add the gear to the list, resizing it as needed. + */ +static void +gear_list_push (sphere_gear *g, + sphere_gear ***listP, + int *countP, int *sizeP) +{ + if (*countP >= (*sizeP) - 1) + { + *sizeP = (*sizeP) * 1.2 + 4; + *listP = (sphere_gear **) realloc (*listP, (*sizeP) * sizeof(**listP)); + } + (*listP)[*countP] = g; + (*countP)++; +} + + +/* Mark child and parent as being mutual neighbors. + */ +static void +link_neighbors (sphere_gear *parent, sphere_gear *child) +{ + if (child == parent) abort(); + + /* Add child to parent's list of neighbors */ + if (! gear_list_member (child, parent->neighbors, parent->nneighbors)) + { + gear_list_push (child, + &parent->neighbors, + &parent->nneighbors, + &parent->neighbors_size); + /* fprintf(stderr, "neighbor %2d -> %2d (%d)\n", parent->id, child->id, + parent->nneighbors); */ + } + + /* Add parent to child's list of neighbors */ + if (! gear_list_member (parent, child->neighbors, child->nneighbors)) + { + gear_list_push (parent, + &child->neighbors, + &child->nneighbors, + &child->neighbors_size); + /* fprintf(stderr, "neighbor %2d <- %2d\n", parent->id, child->id); */ + } +} + +/* Mark child as having parent, and vice versa. + */ +static void +link_child (sphere_gear *parent, sphere_gear *child) +{ + if (child == parent) abort(); + if (child->parent) return; + + gear_list_push (child, + &parent->children, + &parent->nchildren, + &parent->children_size); + child->parent = parent; + /* fprintf(stderr, "child %2d -> %2d (%d)\n", parent->id, child->id, + parent->nchildren); */ +} + + + +static void link_children (sphere_gear *); + +static void +link_children (sphere_gear *parent) +{ + int i; +# if 1 /* depth first */ + for (i = 0; i < parent->nneighbors; i++) + { + sphere_gear *child = parent->neighbors[i]; + if (! child->parent) + { + link_child (parent, child); + link_children (child); + } + } +# else /* breadth first */ + for (i = 0; i < parent->nneighbors; i++) + { + sphere_gear *child = parent->neighbors[i]; + if (! child->parent) + link_child (parent, child); + } + for (i = 0; i < parent->nchildren; i++) + { + sphere_gear *child = parent->children[i]; + link_children (child); + } +# endif +} + + + +/* Whether the two gears touch. + */ +static Bool +gears_touch_p (ModeInfo *mi, sphere_gear *a, sphere_gear *b) +{ + /* We need to know if the two discs on the surface overlap. + + Find the angle between the axis of each disc, and a point on its edge: + the axis between the hypotenuse and adjacent of a right triangle between + the disc's radius and the origin. + + R + _____ + |_| / + | / + 1 | / + |t/ t = asin(R) + |/ + + Find the angle between the axes of the two discs. + + | + | / angle = acos (v1 dot v2) + 1 | / axis = v1 cross v2 + | / 1 + | / + |/ + + If the sum of the first two angles is less than the third angle, + they touch. + */ + XYZ p1 = a->axis; + XYZ p2 = b->axis; + double t1 = asin (a->g->r); + double t2 = asin (b->g->r); + double th = acos (dot_product (p1, p2)); + + return (t1 + t2 >= th); +} + + +/* Set the rotation direction for the gear and its kids. + */ +static void +orient_gears (ModeInfo *mi, sphere_gear *g) +{ + int i; + if (g->parent) + g->direction = -g->parent->direction; + for (i = 0; i < g->nchildren; i++) + orient_gears (mi, g->children[i]); +} + + +/* Returns the global model coordinates of the given tooth of a gear. + */ +static XYZ +tooth_coords (const sphere_gear *s, int tooth) +{ + const gear *g = s->g; + GLfloat off = s->offset * (M_PI / 180) * g->ratio * s->direction; + GLfloat th = (tooth * M_PI * 2 / g->nteeth) - off; + XYZ axis; + GLfloat angle; + XYZ from = { 0, 1, 0 }; + XYZ to = s->axis; + XYZ p0, p1, p2; + GLfloat x, y, z, C, S, m[4][4]; + + axis = cross_product (from, to); + angle = acos (dot_product (from, to)); + + p0 = normalize (axis); + x = p0.x; + y = p0.y; + z = p0.z; + C = cos(angle); + S = sin(angle); + + /* this is what glRotatef does */ + m[0][0] = x*x * (1 - C) + C; + m[1][0] = x*y * (1 - C) - z*S; + m[2][0] = x*z * (1 - C) + y*S; + m[3][0] = 0; + + m[0][1] = y*x * (1 - C) + z*S; + m[1][1] = y*y * (1 - C) + C; + m[2][1] = y*z * (1 - C) - x*S; + m[3][1] = 0; + + m[0][2] = x*z * (1 - C) - y*S; + m[1][2] = y*z * (1 - C) + x*S; + m[2][2] = z*z * (1 - C) + C; + m[3][2] = 0; + + m[0][3] = 0; + m[1][3] = 0; + m[2][3] = 0; + m[3][3] = 1; + + /* The point to transform */ + p1.x = g->r * sin (th); + p1.z = g->r * cos (th); + p1.y = 1 - g->z; + p1 = normalize (p1); + + /* transformation result */ + p2.x = p1.x * m[0][0] + p1.y * m[1][0] + p1.z * m[2][0] + m[3][0]; + p2.y = p1.x * m[0][1] + p1.y * m[1][1] + p1.z * m[2][1] + m[3][1]; + p2.z = p1.x * m[0][2] + p1.y * m[1][2] + p1.z * m[2][2] + m[3][2]; + + return p2; +} + + +/* Returns the number of the tooth of the first gear that is closest + to any tooth of its parent. Also the position of the parent tooth. + */ +static int +parent_tooth (const sphere_gear *s, XYZ *parent) +{ + const sphere_gear *s2 = s->parent; + int i, j; + GLfloat min_dist = 99999; + int min_tooth = 0; + XYZ min_parent = { 0, 0, 0 }; + + if (s2) + for (i = 0; i < s->g->nteeth; i++) + { + XYZ p1 = tooth_coords (s, i); + for (j = 0; j < s2->g->nteeth; j++) + { + XYZ p2 = tooth_coords (s2, j); + XYZ d; + GLfloat dist; + d.x = p1.x - p2.x; + d.y = p1.y - p2.y; + d.z = p1.z - p2.z; + + dist = sqrt (d.x*d.x + d.y*d.y + d.z*d.z); + if (dist < min_dist) + { + min_dist = dist; + min_parent = p2; + min_tooth = i; + } + } + } + *parent = min_parent; + return min_tooth; +} + + +/* Make all of the gear's children's teeth mesh properly. + */ +static void align_gear_teeth (sphere_gear *s); +static void +align_gear_teeth (sphere_gear *s) +{ + int i; + XYZ pc; + + if (s->parent) + { + /* Iterate this gear's offset until we find a value for it that + minimizes the distance between this gear's parent-pointing + tooth, and the corresponding tooth on the parent. + */ + int pt = parent_tooth (s, &pc); + GLfloat range = 360 / s->g->nteeth; + GLfloat steps = 64; + GLfloat min_dist = 999999; + GLfloat min_off = 0; + GLfloat off; + + for (off = -range/2; off < range/2; off += range/steps) + { + XYZ tc, d; + GLfloat dist; + s->offset = off; + tc = tooth_coords (s, pt); + d.x = pc.x - tc.x; + d.y = pc.y - tc.y; + d.z = pc.z - tc.z; + dist = sqrt (d.x*d.x + d.y*d.y + d.z*d.z); + if (dist < min_dist) + { + min_dist = dist; + min_off = off; + } + } + + s->offset = min_off; + } + + /* Now do the children. We have to do it in parent/child order because + the offset we just computed for the parent affects everyone downstream. + */ + for (i = 0; i < s->nchildren; i++) + align_gear_teeth (s->children[i]); +} + + + +static void +describe_gears (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + int gears_per_teeth[1000]; + int i; + int lines = 0; + memset (gears_per_teeth, 0, sizeof(gears_per_teeth)); + for (i = 0; i < bp->ngears; i++) + gears_per_teeth[bp->gears[i].g->nteeth]++; + if (bp->desc) free (bp->desc); + bp->desc = (char *) malloc (80 * bp->ngears); + *bp->desc = 0; + for (i = 0; i < countof(gears_per_teeth); i++) + if (gears_per_teeth[i]) + { + sprintf (bp->desc + strlen(bp->desc), + "%s%d gears with %d teeth", + (lines > 0 ? ",\n" : ""), + gears_per_teeth[i], i); + lines++; + } + if (lines > 1) + sprintf (bp->desc + strlen(bp->desc), ",\n%d gears total", bp->ngears); + strcat (bp->desc, "."); +} + + +/* Takes the gears and makes an arbitrary DAG of them in order to compute + direction and gear ratios. + */ +static void +sort_gears (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + sphere_gear *root = 0; + int i, j; + + /* For each gear, compare it against every other gear. + If they touch, mark them as being each others' neighbors. + */ + for (i = 0; i < bp->ngears; i++) + { + sphere_gear *a = &bp->gears[i]; + for (j = 0; j < bp->ngears; j++) + { + sphere_gear *b = &bp->gears[j]; + if (a == b) continue; + if (gears_touch_p (mi, a, b)) + link_neighbors (a, b); + } + } + + bp->gears[0].parent = &bp->gears[0]; /* don't give this one a parent */ + link_children (&bp->gears[0]); + bp->gears[0].parent = 0; + + +# if 0 + for (i = 0; i < bp->ngears; i++) + { + fprintf (stderr, "%2d: p = %2d; k(%d, %d) = ", + i, + bp->gears[i].parent ? bp->gears[i].parent->id : -1, + bp->gears[i].nneighbors, + bp->gears[i].nchildren); + for (j = 0; j < bp->gears[i].nneighbors; j++) + fprintf (stderr, "%2d ", (int) bp->gears[i].neighbors[j]->id); + fprintf (stderr, "\t\t"); + if (j < 5) fprintf (stderr, "\t"); + for (j = 0; j < bp->gears[i].nchildren; j++) + fprintf (stderr, "%2d ", (int) bp->gears[i].children[j]->id); + fprintf (stderr,"\n"); + } + fprintf (stderr,"\n"); +# endif /* 0 */ + + + /* If there is more than one gear with no parent, we fucked up. */ + + root = 0; + for (i = 0; i < bp->ngears; i++) + { + sphere_gear *g = &bp->gears[i]; + if (!g->parent) + root = g; + } + + if (! root) abort(); + + root->direction = 1; + orient_gears (mi, root); + + /* If there are any gears with no direction, they aren't reachable. */ + for (i = 0; i < bp->ngears; i++) + { + sphere_gear *g = &bp->gears[i]; + if (g->direction == 0) + fprintf(stderr,"INTERNAL ERROR: unreachable: %d\n", g->id); + } + + align_gear_teeth (root); + describe_gears (mi); +} + + +/* Create 5 identical gears arranged on the faces of a uniform + triangular prism. + */ +static void +make_prism (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + gear *g; + XYZ a; + int i; + int teeth = 4 * (4 + (int) (BELLRAND(20))); + if (teeth % 4) abort(); /* must be a multiple of 4 */ + + g = add_gear_shape (mi, 0.7075, teeth); + + a.x = 0; a.y = 0; a.z = 1; + add_sphere_gear (mi, g, a); + a.z = -1; + add_sphere_gear (mi, g, a); + + a.z = 0; + for (i = 0; i < 3; i++) + { + GLfloat th = i * M_PI * 2 / 3; + a.x = cos (th); + a.y = sin (th); + add_sphere_gear (mi, g, a); + } + + if (bp->ngears != 5) abort(); +} + + +/* Create 8 identical gears arranged on the faces of an octohedron + (or alternately, arranged on the diagonals of a cube.) + */ +static void +make_octo (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + static const XYZ verts[] = {{ -1, -1, -1 }, + { -1, -1, 1 }, + { -1, 1, 1 }, + { -1, 1, -1 }, + { 1, -1, 1 }, + { 1, -1, -1 }, + { 1, 1, -1 }, + { 1, 1, 1 }}; + gear *g; + int i; + int teeth = 4 * (4 + (int) (BELLRAND(20))); + if (teeth % 4) abort(); /* must be a multiple of 4 */ + + g = add_gear_shape (mi, 0.578, teeth); + for (i = 0; i < countof(verts); i++) + add_sphere_gear (mi, g, verts[i]); + + if (bp->ngears != 8) abort(); +} + + +/* Create 10 identical gears arranged on the faces of ... something. + I'm not sure what polyhedron is the basis of this. + */ +static void +make_deca (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + gear *g; + XYZ a; + int i, j; + int teeth = 4 * (4 + (int) (BELLRAND(15))); + if (teeth % 4) abort(); /* must be a multiple of 4 */ + + g = add_gear_shape (mi, 0.5415, teeth); + + a.x = 0; a.y = 0; a.z = 1; + add_sphere_gear (mi, g, a); + a.z = -1; + add_sphere_gear (mi, g, a); + + for (j = -1; j <= 1; j += 2) + { + GLfloat off = (j < 0 ? 0 : M_PI / 4); + LL v; + v.a = j * M_PI * 0.136; /* #### Empirical. What is this? */ + for (i = 0; i < 4; i++) + { + v.o = i * M_PI / 2 + off; + a = polar_to_cartesian (v); + add_sphere_gear (mi, g, a); + } + } + if (bp->ngears != 10) abort(); +} + + +/* Create 14 identical gears arranged on the faces of ... something. + I'm not sure what polyhedron is the basis of this. + */ +static void +make_14 (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + gear *g; + XYZ a; + int i; + GLfloat r = 0.4610; + int teeth = 6 * (2 + (int) (BELLRAND(4))); + if (teeth % 6) abort(); /* must be a multiple of 6. I think? */ + /* mismeshes: 24 30 34 36 42 48 54 60 */ + + /* North, south */ + g = add_gear_shape (mi, r, teeth); + a.x = 0; a.y = 0; a.z = 1; + add_sphere_gear (mi, g, a); + a.z = -1; + add_sphere_gear (mi, g, a); + + /* Equator */ + a.z = 0; + for (i = 0; i < 4; i++) + { + GLfloat th = i * M_PI * 2 / 4 + (M_PI / 4); + a.x = cos(th); + a.y = sin(th); + add_sphere_gear (mi, g, a); + } + + /* The other 8 */ + g = add_gear_shape (mi, r, teeth); + + for (i = 0; i < 4; i++) + { + LL v; + v.a = M_PI * 0.197; /* #### Empirical. Also, wrong. What is this? */ + v.o = i * M_PI * 2 / 4; + a = polar_to_cartesian (v); + add_sphere_gear (mi, g, a); + v.a = -v.a; + a = polar_to_cartesian (v); + add_sphere_gear (mi, g, a); + } + + if (bp->ngears != 14) abort(); +} + + +/* Create 18 identical gears arranged on the faces of ... something. + I'm not sure what polyhedron is the basis of this. + */ +static void +make_18 (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + gear *g, *g2; + XYZ a; + int i; + GLfloat r = 0.3830; + int sizes[] = { 8, 12, 16, 20 }; /* 10, 14, 18, 26 and 34 don't work */ + int teeth = sizes[random() % countof(sizes)] * (1 + (random() % 4)); + + /* North, south */ + g = add_gear_shape (mi, r, teeth); + a.x = 0; a.y = 0; a.z = 1; + add_sphere_gear (mi, g, a); + a.z = -1; + add_sphere_gear (mi, g, a); + + /* Equator */ + g2 = add_gear_shape (mi, r, teeth); + a.z = 0; + for (i = 0; i < 8; i++) + { + GLfloat th = i * M_PI * 2 / 8 + (M_PI / 4); + a.x = cos(th); + a.y = sin(th); + add_sphere_gear (mi, (i & 1 ? g : g2), a); + } + + /* The other 16 */ + g = add_gear_shape (mi, r, teeth); + + for (i = 0; i < 4; i++) + { + LL v; + v.a = M_PI * 0.25; + v.o = i * M_PI * 2 / 4; + a = polar_to_cartesian (v); + add_sphere_gear (mi, g, a); + v.a = -v.a; + a = polar_to_cartesian (v); + add_sphere_gear (mi, g, a); + } + + if (bp->ngears != 18) abort(); +} + + +/* Create 32 gears arranged along a truncated icosahedron: + One gear on each of the 20 faces, and one on each of the 12 vertices. + */ +static void +make_32 (ModeInfo *mi, const GLfloat *args) +{ + /* http://bugman123.com/Gears/32GearSpheres/ */ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat th0 = atan (0.5); /* lat division: 26.57 deg */ + GLfloat s = M_PI / 5; /* lon division: 72 deg */ + int i; + + int teeth1 = args[0]; + int teeth2 = args[1]; + GLfloat r1 = args[2]; + GLfloat ratio = teeth2 / (GLfloat) teeth1; + GLfloat r2 = r1 * ratio; + + gear *gear1, *gear2; + + if (teeth1 % 5) abort(); + if (teeth2 % 6) abort(); + + gear1 = add_gear_shape (mi, r1, teeth1); + gear2 = add_gear_shape (mi, r2, teeth2); + gear2->ratio = 1 / ratio; + + { + XYZ a = { 0, 0, 1 }; + XYZ b = { 0, 0, -1 }; + add_sphere_gear (mi, gear1, a); + add_sphere_gear (mi, gear1, b); + } + + for (i = 0; i < 10; i++) + { + GLfloat th1 = s * i; + GLfloat th2 = s * (i+1); + GLfloat th3 = s * (i+2); + LL v1, v2, v3, vc; + XYZ p1, p2, p3, pc, pc2; + v1.a = th0; v1.o = th1; + v2.a = th0; v2.o = th3; + v3.a = -th0; v3.o = th2; + vc.a = M_PI/2; vc.o = th2; + + if (! (i & 1)) /* southern hemisphere */ + { + v1.a = -v1.a; + v2.a = -v2.a; + v3.a = -v3.a; + vc.a = -vc.a; + } + + p1 = polar_to_cartesian (v1); + p2 = polar_to_cartesian (v2); + p3 = polar_to_cartesian (v3); + pc = polar_to_cartesian (vc); + + /* Two faces: 123 and 12c. */ + + add_sphere_gear (mi, gear1, p1); /* left shared point of 2 triangles */ + + pc2.x = (p1.x + p2.x + p3.x) / 3; /* center of bottom triangle */ + pc2.y = (p1.y + p2.y + p3.y) / 3; + pc2.z = (p1.z + p2.z + p3.z) / 3; + add_sphere_gear (mi, gear2, pc2); + + pc2.x = (p1.x + p2.x + pc.x) / 3; /* center of top triangle */ + pc2.y = (p1.y + p2.y + pc.y) / 3; + pc2.z = (p1.z + p2.z + pc.z) / 3; + add_sphere_gear (mi, gear2, pc2); + } + + if (bp->ngears != 32) abort(); +} + + +/* Create 92 gears arranged along a geodesic sphere: 20 + 12 + 60. + (frequency 3v, class-I geodesic tessellation of an icosahedron) + */ +static void +make_92 (ModeInfo *mi, const GLfloat *args) +{ + /* http://bugman123.com/Gears/92GearSpheres/ */ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat th0 = atan (0.5); /* lat division: 26.57 deg */ + GLfloat s = M_PI / 5; /* lon division: 72 deg */ + int i; + + int tscale = 2; /* These don't mesh properly, so let's increase the + number of teeth so that it's not so obvious. */ + + int teeth1 = args[0] * tscale; + int teeth2 = args[1] * tscale; + int teeth3 = args[2] * tscale; + GLfloat r1 = args[3]; + GLfloat ratio2 = teeth2 / (GLfloat) teeth1; + GLfloat ratio3 = teeth3 / (GLfloat) teeth2; + GLfloat r2 = r1 * ratio2; + GLfloat r3 = r2 * ratio3; + + GLfloat r4 = args[4]; /* #### Empirical. Not sure what its basis is. */ + GLfloat r5 = 1 - r4; + + gear *gear1, *gear2, *gear3; + + gear1 = add_gear_shape (mi, r1, teeth1); + gear2 = add_gear_shape (mi, r2, teeth2); + gear3 = add_gear_shape (mi, r3, teeth3); + gear2->ratio = 1 / ratio2; + gear3->ratio = 1 / ratio3; + + { + XYZ a = { 0, 0, 1 }; + XYZ b = { 0, 0, -1 }; + add_sphere_gear (mi, gear1, a); + add_sphere_gear (mi, gear1, b); + } + + for (i = 0; i < 10; i++) + { + GLfloat th1 = s * i; + GLfloat th2 = s * (i+1); + GLfloat th3 = s * (i+2); + LL v1, v2, v3, vc; + XYZ p1, p2, p3, pc, pc2; + v1.a = th0; v1.o = th1; + v2.a = th0; v2.o = th3; + v3.a = -th0; v3.o = th2; + vc.a = M_PI/2; vc.o = th2; + + if (! (i & 1)) /* southern hemisphere */ + { + v1.a = -v1.a; + v2.a = -v2.a; + v3.a = -v3.a; + vc.a = -vc.a; + } + + p1 = polar_to_cartesian (v1); + p2 = polar_to_cartesian (v2); + p3 = polar_to_cartesian (v3); + pc = polar_to_cartesian (vc); + + /* Two faces: 123 and 12c. */ + + add_sphere_gear (mi, gear1, p1); /* left shared point of 2 triangles */ + + pc2.x = (p1.x + p2.x + p3.x) / 3; /* center of bottom triangle */ + pc2.y = (p1.y + p2.y + p3.y) / 3; + pc2.z = (p1.z + p2.z + p3.z) / 3; + add_sphere_gear (mi, gear2, pc2); + + pc2.x = (p1.x + p2.x + pc.x) / 3; /* center of top triangle */ + pc2.y = (p1.y + p2.y + pc.y) / 3; + pc2.z = (p1.z + p2.z + pc.z) / 3; + add_sphere_gear (mi, gear2, pc2); + + /* left edge of bottom triangle, 1/3 in */ + pc2.x = p1.x + (p3.x - p1.x) * r4; + pc2.y = p1.y + (p3.y - p1.y) * r4; + pc2.z = p1.z + (p3.z - p1.z) * r4; + add_sphere_gear (mi, gear3, pc2); + + /* left edge of bottom triangle, 2/3 in */ + pc2.x = p1.x + (p3.x - p1.x) * r5; + pc2.y = p1.y + (p3.y - p1.y) * r5; + pc2.z = p1.z + (p3.z - p1.z) * r5; + add_sphere_gear (mi, gear3, pc2); + + /* left edge of top triangle, 1/3 in */ + pc2.x = p1.x + (pc.x - p1.x) * r4; + pc2.y = p1.y + (pc.y - p1.y) * r4; + pc2.z = p1.z + (pc.z - p1.z) * r4; + add_sphere_gear (mi, gear3, pc2); + + /* left edge of top triangle, 2/3 in */ + pc2.x = p1.x + (pc.x - p1.x) * r5; + pc2.y = p1.y + (pc.y - p1.y) * r5; + pc2.z = p1.z + (pc.z - p1.z) * r5; + add_sphere_gear (mi, gear3, pc2); + + /* center of shared edge, 1/3 in */ + pc2.x = p1.x + (p2.x - p1.x) * r4; + pc2.y = p1.y + (p2.y - p1.y) * r4; + pc2.z = p1.z + (p2.z - p1.z) * r4; + add_sphere_gear (mi, gear3, pc2); + + /* center of shared edge, 2/3 in */ + pc2.x = p1.x + (p2.x - p1.x) * r5; + pc2.y = p1.y + (p2.y - p1.y) * r5; + pc2.z = p1.z + (p2.z - p1.z) * r5; + add_sphere_gear (mi, gear3, pc2); + } + + if (bp->ngears != 92) abort(); +} + +static void +make_182 (ModeInfo *mi, const GLfloat *args) +{ + /* #### TODO: http://bugman123.com/Gears/182GearSpheres/ */ + abort(); +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_geodesic (ModeInfo *mi, int width, int height) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +pick_shape (ModeInfo *mi, time_t last) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + int count = countof (gear_templates); + + if (bp->colors) + free (bp->colors); + + bp->ncolors = 1024; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + + free_sphere_gears (mi); + + if (last == 0) + { + bp->which = random() % count; + } + else if (bp->next < 0) + { + bp->which--; + if (bp->which < 0) bp->which = count-1; + bp->next = 0; + } + else if (bp->next > 0) + { + bp->which++; + if (bp->which >= count) bp->which = 0; + bp->next = 0; + } + else + { + int n = bp->which; + while (n == bp->which) + n = random() % count; + bp->which = n; + } + + switch (gear_templates[bp->which].type) { + case PRISM: make_prism (mi); break; + case OCTO: make_octo (mi); break; + case DECA: make_deca (mi); break; + case G14: make_14 (mi); break; + case G18: make_18 (mi); break; + case G32: make_32 (mi, gear_templates[bp->which].args); break; + case G92: make_92 (mi, gear_templates[bp->which].args); break; + case G182: make_182(mi, gear_templates[bp->which].args); break; + default: abort(); break; + } + + sort_gears (mi); +} + + + +ENTRYPOINT void +init_geodesic (ModeInfo *mi) +{ + geodesic_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_geodesic (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + { + static GLfloat cspec[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat shiny = 128.0; + + static GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + static GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + static GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + static GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glMaterialfv (GL_FRONT, GL_SPECULAR, cspec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + } + + if (! wire) + { + glEnable (GL_DEPTH_TEST); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_LIGHTING); + glEnable (GL_LIGHT0); + } + + if (! bp->rot) + { + double spin_speed = 0.25 * speed; + double wander_speed = 0.01 * speed; + double spin_accel = 0.2; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + bp->trackball = gltrackball_init (True); + } + + bp->font = load_texture_font (MI_DISPLAY(mi), "font"); + + pick_shape (mi, 0); +} + + +ENTRYPOINT Bool +geodesic_handle_event (ModeInfo *mi, XEvent *event) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else + { + if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == '<' || c == ',' || c == '-' || c == '_' || + keysym == XK_Left || keysym == XK_Up || keysym == XK_Prior) + { + bp->next = -1; + goto SWITCH; + } + else if (c == '>' || c == '.' || c == '=' || c == '+' || + keysym == XK_Right || keysym == XK_Down || + keysym == XK_Next) + { + bp->next = 1; + goto SWITCH; + } + } + + if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + SWITCH: + bp->mode = 1; + bp->mode_tick = 4; + return True; + } + } + + return False; +} + + +ENTRYPOINT void +draw_geodesic (ModeInfo *mi) +{ + time_t now = time ((time_t *) 0); + int wire = MI_IS_WIREFRAME(mi); + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + + if (bp->draw_time == 0) + { + pick_shape (mi, bp->draw_time); + bp->draw_time = now; + } + else if (bp->mode == 0) + { + if (bp->draw_tick++ > 10) + { + if (bp->draw_time == 0) bp->draw_time = now; + bp->draw_tick = 0; + + if (!bp->button_down_p && + bp->draw_time + timeout <= now) + { + /* randomize every -timeout seconds */ + bp->mode = 1; /* go out */ + bp->mode_tick = 10 / speed; + bp->draw_time = now; + } + } + } + else if (bp->mode == 1) /* out */ + { + if (--bp->mode_tick <= 0) + { + bp->mode_tick = 10 / speed; + bp->mode = 2; /* go in */ + pick_shape (mi, bp->draw_time); + bp->draw_time = now; + } + } + else if (bp->mode == 2) /* in */ + { + if (--bp->mode_tick <= 0) + bp->mode = 0; /* normal */ + } + else + abort(); + + + if (! wire) + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 17); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glScalef (6, 6, 6); + + if (bp->ngears < 14) + glScalef (0.8, 0.8, 0.8); /* make these a little easier to see */ + + if (bp->mode != 0) + { + GLfloat s = (bp->mode == 1 + ? bp->mode_tick / (10 / speed) + : ((10 / speed) - bp->mode_tick + 1) / (10 / speed)); + glScalef (s, s, s); + } + + + { + int i; + for (i = 0; i < bp->ngears; i++) + { + const sphere_gear *s = &bp->gears[i]; + const gear *g = s->g; + + XYZ axis; + XYZ from = { 0, 1, 0 }; + XYZ to = s->axis; + GLfloat angle; + GLfloat off = s->offset; + + /* If an even number of teeth, offset by 1/2 tooth width. */ + if (s->direction > 0 && !(g->nteeth & 1)) + off += 360 / g->nteeth / 2; + + axis = cross_product (from, to); + angle = acos (dot_product (from, to)); + + glPushMatrix(); + glTranslatef (to.x, to.y, to.z); + glRotatef (angle / M_PI * 180, axis.x, axis.y, axis.z); + glRotatef (-90, 1, 0, 0); + glRotatef(180, 0, 0, 1); + glRotatef ((bp->th - off) * g->ratio * s->direction, + 0, 0, 1); + + glCallList (g->dlist); + mi->polygon_count += g->polygons; + glPopMatrix(); + +#if 0 + { /* Draw tooth vectors */ + GLfloat r = 1 - g->z; + XYZ pc; + int pt = parent_tooth (s, &pc); + int t; + glDisable(GL_LIGHTING); + glLineWidth (8); + for (t = 0; t < g->nteeth; t++) + { + XYZ p = tooth_coords (s, t); + XYZ p2; + p2.x = (r * s->axis.x + p.x) / 2; + p2.y = (r * s->axis.y + p.y) / 2; + p2.z = (r * s->axis.z + p.z) / 2; + + if (t == pt) + glColor3f(1,0,1); + else + glColor3f(0,1,1); + glBegin(GL_LINES); + glVertex3f (p.x, p.y, p.z); + glVertex3f (p2.x, p2.y, p2.z); + glEnd(); + } + if (!wire) glEnable(GL_LIGHTING); + glLineWidth (1); + } +#endif + +#if 0 + { /* Draw the parent/child DAG */ + GLfloat s1 = 1.1; + GLfloat s2 = s->parent ? s1 : 1.5; + GLfloat s3 = 1.0; + XYZ p1 = s->axis; + XYZ p2 = s->parent ? s->parent->axis : p1; + glDisable(GL_LIGHTING); + glColor3f(0,0,1); + glBegin(GL_LINES); + glVertex3f (s1 * p1.x, s1 * p1.y, s1 * p1.z); + glVertex3f (s2 * p2.x, s2 * p2.y, s2 * p2.z); + glVertex3f (s1 * p1.x, s1 * p1.y, s1 * p1.z); + glVertex3f (s3 * p1.x, s3 * p1.y, s3 * p1.z); + glEnd(); + if (!wire) glEnable(GL_LIGHTING); + } +#endif + } + + /* We need to draw the fonts in a second pass in order to make + transparency (as a result of anti-aliasing) work properly. + */ + if (do_numbers && bp->mode == 0) + for (i = 0; i < bp->ngears; i++) + { + const sphere_gear *s = &bp->gears[i]; + const gear *g = s->g; + + XYZ axis; + XYZ from = { 0, 1, 0 }; + XYZ to = s->axis; + GLfloat angle; + GLfloat off = s->offset; + + int w, h, j; + char buf[100]; + XCharStruct e; + + /* If an even number of teeth, offset by 1/2 tooth width. */ + if (s->direction > 0 /* && !(g->nteeth & 1) */) + off += 360 / g->nteeth / 2; + + axis = cross_product (from, to); + angle = acos (dot_product (from, to)); + + glPushMatrix(); + glTranslatef(to.x, to.y, to.z); + glRotatef (angle / M_PI * 180, axis.x, axis.y, axis.z); + glRotatef (-90, 1, 0, 0); + glRotatef(180, 0, 0, 1); + glRotatef ((bp->th - off) * g->ratio * s->direction, + 0, 0, 1); + + glDisable (GL_LIGHTING); + glColor3f(1, 1, 0); + glPushMatrix(); + glScalef(0.005, 0.005, 0.005); + sprintf (buf, "%d", i); + texture_string_metrics (bp->font, buf, &e, 0, 0); + w = e.width; + h = e.ascent + e.descent; + glTranslatef (-w/2, -h/2, 0); + print_texture_string (bp->font, buf); + glPopMatrix(); + +# if 1 + for (j = 0; j < g->nteeth; j++) /* Number the teeth */ + { + GLfloat ss = 0.08 * g->r / g->nteeth; + GLfloat r = g->r * 0.88; + GLfloat th = M_PI - (j * M_PI * 2 / g->nteeth + M_PI/2); + + + glPushMatrix(); + glTranslatef (r * cos(th), r * sin(th), -g->z + 0.01); + glScalef(ss, ss, ss); + sprintf (buf, "%d", j + 1); + texture_string_metrics (bp->font, buf, &e, 0, 0); + w = e.width; + h = e.ascent + e.descent; + glTranslatef (-w/2, -h/2, 0); + print_texture_string (bp->font, buf); + glPopMatrix(); + } +# endif + glPopMatrix(); + if (!wire) glEnable(GL_LIGHTING); + } + + bp->th += 0.7 * speed; /* Don't mod this to 360 - causes glitches. */ + } + + if (do_labels && bp->mode == 0) + { + glColor3f (1, 1, 0); + print_texture_label (mi->dpy, bp->font, + mi->xgwa.width, mi->xgwa.height, + 1, bp->desc); + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT void +free_geodesic (ModeInfo *mi) +{ + geodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + if (!bp->glx_context) + return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + free_texture_font (bp->font); + free (bp->colors); + free_sphere_gears (mi); + if (bp->desc) free (bp->desc); +} + + +XSCREENSAVER_MODULE_2 ("GeodesicGears", geodesicgears, geodesic) + +#endif /* USE_GL */ diff --git a/hacks/glx/geodesicgears.man b/hacks/glx/geodesicgears.man new file mode 100644 index 0000000..b15cf90 --- /dev/null +++ b/hacks/glx/geodesicgears.man @@ -0,0 +1,78 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +geodesicgears - gears on the surface of a sphere. +.SH SYNOPSIS +.B geodesicgears +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-timeout \fInumber\fP] +[\-labels] +[\-numbers] +[\-wireframe] +[\-wander] +[\-no-spin] +[\-fps] +.SH DESCRIPTION +A set of meshed gears arranged on the surface of a sphere. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-timeout \fInumber\fP +Duration before switching to a new model. 5 - 120 seconds. Default: 20. +.TP 8 +.B \-labels | \-no-labels +Whether to show the number of gears and teeth. Default: no. +.TP 8 +.B \-numbers | \-no-numbers +Whether to label the gears with ID numbers. Default: no. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the object should spin. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1), +.BR geodesic (1), +.BR pinion (1) +.SH COPYRIGHT +Copyright \(co 2014 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/gflux.c b/hacks/glx/gflux.c new file mode 100644 index 0000000..dbbb11c --- /dev/null +++ b/hacks/glx/gflux.c @@ -0,0 +1,803 @@ +/* -*- Mode: C; tab-width: 4 -*- emacs friendly */ +/* gflux - creates a fluctuating 3D grid + * requires OpenGL or MesaGL + * + * Copyright (c) Josiah Pease, 2000, 2003 + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Thanks go to all those who worked on... + * MesaGL, OpenGL, UtahGLX, XFree86, gcc, vim, rxvt, the PNM (anymap) format + * xscreensaver and the thousands of other tools, apps and daemons that make + * linux usable + * Personal thanks to Kevin Moss, Paul Sheahee and Jamie Zawinski + * + * some xscreensaver code lifted from superquadrics. Most other glx hacks + * used as reference at some time. + * + * This hack and others can cause UtahGLX to crash my X server + * wireframe looks good with software only rendering anyway + * If anyone can work out why and supply a fix I'd love to hear from them + * + * Josiah Pease 21 July 2000 + * + * History + * 10 June 2000 : wireframe rippling grid standalone written + * 18 June 2000 : xscreensaver code added + * 25 June 2000 : solid and light added + * 04 July 2000 : majour bug hunt, xscreensaver code rewritten + * 08 July 2000 : texture mapping, rotation and zoom added + * 21 July 2000 : cleaned up code from bug hunts, manpage written + * 24 November 2000 : fixed x co-ord calculation in solid - textured + * 05 March 2001 : put back non pnmlib code with #ifdefs + * 11 May 2002 : fixed image problems with large images + */ + + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000\n" \ + "*showFPS: False\n" \ + "*mode: grab\n" \ + "*useSHM: True \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_gflux 0 +# define release_gflux 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL /* whole file */ + +#ifdef HAVE_XMU +# ifndef VMS +# include +#else /* VMS */ +# include +# endif /* VMS */ +#endif + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include +#include + +#include + +#include "grab-ximage.h" +#include "gltrackball.h" + + +static enum {wire=0,solid,light,checker,grab} _draw; + +# define DEF_SQUARES "19" +# define DEF_RESOLUTION "4" +# define DEF_DRAW "2" +# define DEF_FLAT "0" +# define DEF_SPEED "0.05" +# define DEF_ROTATIONX "0.01" +# define DEF_ROTATIONY "0.0" +# define DEF_ROTATIONZ "0.1" +# define DEF_WAVES "3" +# define DEF_WAVE_CHANGE "50" +# define DEF_WAVE_HEIGHT "1.0" +# define DEF_WAVE_FREQ "3.0" +# define DEF_ZOOM "1.0" + + + +static int _squares; /* grid size */ +static int _resolution; /* wireframe resolution */ +static int _flat; + +static float _speed; +static float _rotationx; +static float _rotationy; +static float _rotationz; +static float _zoom; + +static int _waves; +static int _waveChange; +static float _waveHeight; +static float _waveFreq; + + +#define WIDTH 320 +#define HEIGHT 240 + +static XrmOptionDescRec opts[] = { + {"-squares", ".gflux.squares", XrmoptionSepArg, 0}, + {"-resolution", ".gflux.resolution", XrmoptionSepArg, 0}, +/* {"-draw", ".gflux.draw", XrmoptionSepArg, 0},*/ + {"-mode", ".gflux.mode", XrmoptionSepArg, 0}, + {"-wireframe", ".gflux.mode", XrmoptionNoArg, "wire"}, + {"-flat", ".gflux.flat", XrmoptionSepArg, 0}, + {"-speed", ".gflux.speed", XrmoptionSepArg, 0}, + {"-rotationx", ".gflux.rotationx", XrmoptionSepArg, 0}, + {"-rotationy", ".gflux.rotationy", XrmoptionSepArg, 0}, + {"-rotationz", ".gflux.rotationz", XrmoptionSepArg, 0}, + {"-waves", ".gflux.waves", XrmoptionSepArg, 0}, + {"-waveChange", ".gflux.waveChange", XrmoptionSepArg, 0}, + {"-waveHeight", ".gflux.waveHeight", XrmoptionSepArg, 0}, + {"-waveFreq", ".gflux.waveFreq", XrmoptionSepArg, 0}, + {"-zoom", ".gflux.zoom", XrmoptionSepArg, 0}, +}; + + +static argtype vars[] = { + {&_squares, "squares", "Squares", DEF_SQUARES, t_Int}, + {&_resolution, "resolution", "Resolution", DEF_RESOLUTION, t_Int}, +/* {&_draw, "draw", "Draw", DEF_DRAW, t_Int},*/ + {&_flat, "flat", "Flat", DEF_FLAT, t_Int}, + {&_speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&_rotationx, "rotationx", "Rotationx", DEF_ROTATIONX, t_Float}, + {&_rotationy, "rotationy", "Rotationy", DEF_ROTATIONY, t_Float}, + {&_rotationz, "rotationz", "Rotationz", DEF_ROTATIONZ, t_Float}, + {&_waves, "waves", "Waves", DEF_WAVES, t_Int}, + {&_waveChange, "waveChange", "WaveChange", DEF_WAVE_CHANGE, t_Int}, + {&_waveHeight, "waveHeight", "WaveHeight", DEF_WAVE_HEIGHT, t_Float}, + {&_waveFreq, "waveFreq", "WaveFreq", DEF_WAVE_FREQ, t_Float}, + {&_zoom, "zoom", "Zoom", DEF_ZOOM, t_Float}, +}; + + +static OptionStruct desc[] = +{ + {"-squares num", "size of grid in squares (19)"}, + {"-resolution num", "detail of lines making grid, wireframe only (4)"}, +/* {"-draw num", "draw method to use: 0=wireframe 1=solid 2=lit (0)"},*/ + {"-flat num", "shading method, not wireframe: 0=smooth 1=flat (0)"}, + {"-speed num", "speed of waves (0.05)"}, + {"-rotationx num", "speed of xrotation (0.01)"}, + {"-rotationy num", "speed of yrotation (0.00)"}, + {"-rotationz num", "speed of zrotation (0.10)"}, + {"-waves num", "number of simultanious waves (3)"}, + {"-waveChange num", "number of cyles for a wave to change (50)"}, + {"-waveHeight num", "height of waves (1.0)"}, + {"-waveFreq num", "max frequency of a wave (3.0)"}, + {"-zoom num", "camera control (1.0)"}, +}; + +ENTRYPOINT ModeSpecOpt gflux_opts = {countof(opts), opts, countof(vars), vars, desc}; + +#ifdef USE_MODULES +ModStruct gflux_description = +{"gflux", "init_gflux", "draw_gflux", NULL, + "draw_gflux", "init_gflux", NULL, &gflux_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "GFlux: an OpenGL gflux", 0, NULL}; +#endif + +/* structure for holding the gflux data */ +typedef struct gfluxstruct { + ModeInfo *modeinfo; + int screen_width, screen_height; + GLXContext *glx_context; + Window window; + XColor fg, bg; +#define MAXWAVES 10 /* should be dynamic */ + double wa[MAXWAVES]; + double freq[MAXWAVES]; + double dispy[MAXWAVES]; + double dispx[MAXWAVES]; + GLfloat colour[3]; + GLuint texName; + GLfloat tex_xscale; + GLfloat tex_yscale; + XRectangle img_geom; + int img_width, img_height; + int (*drawFunc)(struct gfluxstruct *); + + trackball_state *trackball; + Bool button_down_p; + + double time; + double anglex; + double angley; + double anglez; + + int counter; + int newWave; + + Bool mipmap_p; + Bool waiting_for_image_p; + +} gfluxstruct; +static gfluxstruct *gfluxes = NULL; + +/* prototypes */ +static void initLighting(void); +static void grabTexture(gfluxstruct *); +static void createTexture(gfluxstruct *); +static int displaySolid(gfluxstruct *); /* drawFunc implementations */ +static int displayLight(gfluxstruct *); +static int displayTexture(gfluxstruct *); +static int displayWire(gfluxstruct *); +static void calcGrid(gfluxstruct *); +static double getGrid(gfluxstruct *,double,double,double); + +/* as macro for speed */ +/* could do with colour cycling here */ +/* void genColour(double);*/ +#define genColour(X) \ +{\ + gp->colour[0] = 0.0;\ + gp->colour[1] = 0.5+0.5*(X);\ + gp->colour[2] = 0.5-0.5*(X);\ +} + +/* BEGINNING OF FUNCTIONS */ + + +ENTRYPOINT Bool +gflux_handle_event (ModeInfo *mi, XEvent *event) +{ + gfluxstruct *gp = &gfluxes[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, gp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &gp->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + if (_draw == grab) { + grabTexture(gp); + return True; + } + } + + return False; +} + + +static void +userRot(gfluxstruct *gp) +{ + gltrackball_rotate (gp->trackball); +} + +/* draw the gflux once */ +ENTRYPOINT void draw_gflux(ModeInfo * mi) +{ + gfluxstruct *gp = &gfluxes[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!gp->glx_context) return; + + /* Just keep running before the texture has come in. */ + /* if (gp->waiting_for_image_p) return; */ + + glXMakeCurrent(display, window, *(gp->glx_context)); + + calcGrid(gp); + mi->polygon_count = gp->drawFunc(gp); + if (mi->fps_p) do_fps (mi); + glXSwapBuffers(display, window); +} + + +/* Standard reshape function */ +ENTRYPOINT void +reshape_gflux(ModeInfo *mi, int width, int height) +{ + glViewport( 0, 0, width, height ); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-_zoom,_zoom,-0.8*_zoom,0.8*_zoom,2,6); + glTranslatef(0.0,0.0,-4.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif +} + + +/* main OpenGL initialization routine */ +static void initializeGL(ModeInfo *mi, GLsizei width, GLsizei height) +{ + gfluxstruct *gp = &gfluxes[MI_SCREEN(mi)]; + + reshape_gflux(mi, width, height); + glViewport( 0, 0, width, height ); + + gp->tex_xscale = 1.0; /* maybe changed later */ + gp->tex_yscale = 1.0; + + switch(_draw) { + case solid : + gp->drawFunc = (displaySolid); + glEnable(GL_DEPTH_TEST); + break; + case light : + gp->drawFunc = (displayLight); + glEnable(GL_DEPTH_TEST); + initLighting(); + break; + case checker : + gp->drawFunc = (displayTexture); + glEnable(GL_DEPTH_TEST); + createTexture(gp); + initLighting(); + break; + case grab : + gp->drawFunc = (displayTexture); + glEnable(GL_DEPTH_TEST); + grabTexture(gp); + initLighting(); + break; + case wire : + default : + gp->drawFunc = (displayWire); + glDisable(GL_DEPTH_TEST); + break; + } + + if(_flat) glShadeModel(GL_FLAT); + else glShadeModel(GL_SMOOTH); + +} + + +/* xgflux initialization routine */ +ENTRYPOINT void init_gflux(ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + gfluxstruct *gp; + + MI_INIT(mi, gfluxes); + gp = &gfluxes[screen]; + + gp->trackball = gltrackball_init (True); + + gp->time = frand(1000.0); /* don't run two screens in lockstep */ + + { + char *s = get_string_resource (mi->dpy, "mode", "Mode"); + if (!s || !*s) _draw = grab; + else if (!strcasecmp (s, "wire")) _draw = wire; + else if (!strcasecmp (s, "solid")) _draw = solid; + else if (!strcasecmp (s, "light")) _draw = light; + else if (!strcasecmp (s, "checker")) _draw = checker; + else if (!strcasecmp (s, "grab")) _draw = grab; + else + { + fprintf (stderr, + "%s: mode must be one of: wire, solid, " + "light, checker, or grab; not \"%s\"\n", + progname, s); + exit (1); + } + } + + gp->modeinfo = mi; + gp->window = MI_WINDOW(mi); + if ((gp->glx_context = init_GL(mi)) != NULL) { + reshape_gflux(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + initializeGL(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } +} + + +static void createTexture(gfluxstruct *gp) +{ + int size = 4; + unsigned int data[] = { 0xFFFFFFFF, 0xAAAAAAAA, 0xFFFFFFFF, 0xAAAAAAAA, + 0xAAAAAAAA, 0xFFFFFFFF, 0xAAAAAAAA, 0xFFFFFFFF, + 0xFFFFFFFF, 0xAAAAAAAA, 0xFFFFFFFF, 0xAAAAAAAA, + 0xAAAAAAAA, 0xFFFFFFFF, 0xAAAAAAAA, 0xFFFFFFFF }; + + gp->tex_xscale = size; + gp->tex_yscale = size; + + glGenTextures (1, &gp->texName); + glBindTexture (GL_TEXTURE_2D, gp->texName); + + glTexImage2D (GL_TEXTURE_2D, 0, 3, size, size, 0, + GL_RGBA, GL_UNSIGNED_BYTE, data); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); +} + + +static void +image_loaded_cb (const char *filename, XRectangle *geometry, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + gfluxstruct *gp = (gfluxstruct *) closure; + gp->img_geom = *geometry; + + gp->tex_xscale = (GLfloat) image_width / texture_width; + gp->tex_yscale = -(GLfloat) image_height / texture_height; + gp->img_width = image_width; + gp->img_height = image_height; + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + (gp->mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); + + gp->waiting_for_image_p = False; +} + +static void +grabTexture(gfluxstruct *gp) +{ + if (MI_IS_WIREFRAME(gp->modeinfo)) + return; + + gp->waiting_for_image_p = True; + gp->mipmap_p = True; + load_texture_async (gp->modeinfo->xgwa.screen, gp->modeinfo->window, + *gp->glx_context, 0, 0, gp->mipmap_p, gp->texName, + image_loaded_cb, gp); +} + + +static void initLighting(void) +{ + static const float ambientA[] = {0.0, 0.0, 0.0, 1.0}; + static const float diffuseA[] = {1.0, 1.0, 1.0, 1.0}; + static const float positionA[] = {5.0, 5.0, 15.0, 1.0}; + + static const float front_mat_shininess[] = {30.0}; + static const float front_mat_specular[] = {0.5, 0.5, 0.5, 1.0}; + + static const float mat_diffuse[] = {0.5, 0.5, 0.5, 1.0}; + + glMaterialfv(GL_FRONT, GL_SHININESS, front_mat_shininess); + glMaterialfv(GL_FRONT, GL_SPECULAR, front_mat_specular); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambientA); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseA); + glLightfv(GL_LIGHT0, GL_POSITION, positionA); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightModelf(GL_LIGHT_MODEL_TWO_SIDE,1); + + glEnable(GL_NORMALIZE); /* would it be faster ... */ + glEnable(GL_COLOR_MATERIAL); + glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); +} + +/************************************/ +/* draw implementations */ +/* somewhat inefficient since they */ +/* all calculate previously */ +/* calculated values again */ +/* storing the values in an array */ +/* is a posibility */ +/************************************/ +static int displayTexture(gfluxstruct *gp) +{ + int polys = 0; + double x,y,u,v; + double z; + double dx = 2.0/((double)_squares); + double dy = 2.0/((double)_squares); + + double du = 2.0/((double)_squares); + double dv = 2.0/((double)_squares); + + double xs = gp->tex_xscale; + double ys = gp->tex_yscale; + + double minx, miny, maxx, maxy; + double minu, minv; + +#if 0 + minx = (GLfloat) gp->img_geom.x / gp->img_width; + miny = (GLfloat) gp->img_geom.y / gp->img_height; + maxx = ((GLfloat) (gp->img_geom.x + gp->img_geom.width) / + gp->img_width); + maxy = ((GLfloat) (gp->img_geom.y + gp->img_geom.height) / + gp->img_height); + minu = minx; + minv = miny; + minx = (minx * 2) - 1; + miny = (miny * 2) - 1; + maxx = (maxx * 2) - 1; + maxy = (maxy * 2) - 1; +#else + minx = -1; + miny = -1; + maxx = 1; + maxy = 1; + minv = 0; + minu = 0; +#endif + + glMatrixMode (GL_TEXTURE); + glLoadIdentity (); + glTranslatef(-1,-1,0); + glScalef(0.5,0.5,1); + glMatrixMode (GL_MODELVIEW); + + glLoadIdentity(); + userRot(gp); + glRotatef(gp->anglex,1,0,0); + glRotatef(gp->angley,0,1,0); + glRotatef(gp->anglez,0,0,1); + glScalef(1,1,(GLfloat)_waveHeight); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glEnable(GL_TEXTURE_2D); + + clear_gl_error(); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glBindTexture(GL_TEXTURE_2D, gp->texName); + check_gl_error("texture binding"); + + glColor3f(0.5,0.5,0.5); + + for(x = minx, u = minu; x < maxx - 0.01; x += dx, u += du) { + glBegin(GL_QUAD_STRIP); + for (y = miny, v = minv; y <= maxy + 0.01; y += dy, v += dv) { + z = getGrid(gp,x,y,gp->time); + glTexCoord2f(u*xs,v*ys); + glNormal3f( + getGrid(gp,x+dx,y,gp->time)-getGrid(gp, x-dx,y,gp->time), + getGrid(gp,x,y+dy,gp->time)-getGrid(gp, x,y-dy,gp->time), + 1 + ); + glVertex3f(x,y,z); + + z = getGrid(gp,x+dx,y,gp->time); + glTexCoord2f((u+du)*xs,v*ys); + glNormal3f( + getGrid(gp,x+dx+dx,y,gp->time)-getGrid(gp, x,y,gp->time), + getGrid(gp,x+dx,y+dy,gp->time)-getGrid(gp, x+dx,y-dy,gp->time), + 1 + ); + glVertex3f(x+dx,y,z); + polys++; + } + glEnd(); + } + + /* Draw a border around the grid. + */ + glColor3f(0.4, 0.4, 0.4); + glDisable(GL_TEXTURE_2D); + glEnable (GL_LINE_SMOOTH); + + glBegin(GL_LINE_LOOP); + y = miny; + for (x = minx; x <= maxx; x += dx) { + glVertex3f (x, y, getGrid (gp, x, y, gp->time)); + polys++; + } + x = maxx; + for (y = miny; y <= maxy; y += dy) { + glVertex3f (x, y, getGrid (gp, x, y, gp->time)); + polys++; + } + y = maxy; + for (x = maxx; x >= minx; x -= dx) { + glVertex3f (x, y, getGrid (gp, x, y, gp->time)); + polys++; + } + x = minx; + for (y = maxy; y >= miny; y -= dy) { + glVertex3f (x, y, getGrid (gp, x, y, gp->time)); + polys++; + } + glEnd(); + glEnable(GL_TEXTURE_2D); + + if (! gp->button_down_p) { + gp->time -= _speed; + gp->anglex -= _rotationx; + gp->angley -= _rotationy; + gp->anglez -= _rotationz; + } + return polys; +} + +static int displaySolid(gfluxstruct *gp) +{ + int polys = 0; + double x,y; + double z; + double dx = 2.0/((double)_squares); + double dy = 2.0/((double)_squares); + + glLoadIdentity(); + glRotatef(gp->anglex,1,0,0); + glRotatef(gp->angley,0,1,0); + glRotatef(gp->anglez,0,0,1); + userRot(gp); + glScalef(1,1,(GLfloat)_waveHeight); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + + for(x=-1;x<0.9999;x+=dx) { + glBegin(GL_QUAD_STRIP); + for(y=-1;y<=1;y+=dy) { + z = getGrid(gp, x,y,gp->time); + genColour(z); + glColor3fv(gp->colour); + glVertex3f(x,y,z); + + z = getGrid(gp, x+dx,y,gp->time); + genColour(z); + glColor3fv(gp->colour); + glVertex3f(x+dx,y,z); + polys++; + } + glEnd(); + } + + if (! gp->button_down_p) { + gp->time -= _speed; + gp->anglex -= _rotationx; + gp->angley -= _rotationy; + gp->anglez -= _rotationz; + } + + return polys; +} + +static int displayLight(gfluxstruct *gp) +{ + int polys = 0; + double x,y; + double z; + double dx = 2.0/((double)_squares); + double dy = 2.0/((double)_squares); + + glLoadIdentity(); + glRotatef(gp->anglex,1,0,0); + glRotatef(gp->angley,0,1,0); + glRotatef(gp->anglez,0,0,1); + userRot(gp); + glScalef(1,1,(GLfloat)_waveHeight); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + + for(x=-1;x<0.9999;x+=dx) { + glBegin(GL_QUAD_STRIP); + for(y=-1;y<=1;y+=dy) { + z = getGrid(gp, x,y,gp->time); + genColour(z); + glColor3fv(gp->colour); + glNormal3f( + getGrid(gp, x+dx,y,gp->time)-getGrid(gp, x-dx,y,gp->time), + getGrid(gp, x,y+dy,gp->time)-getGrid(gp, x,y-dy,gp->time), + 1 + ); + glVertex3f(x,y,z); + + z = getGrid(gp, x+dx,y,gp->time); + genColour(z); + glColor3fv(gp->colour); + glNormal3f( + getGrid(gp, x+dx+dx,y,gp->time)-getGrid(gp, x,y,gp->time), + getGrid(gp, x+dx,y+dy,gp->time)-getGrid(gp, x+dx,y-dy,gp->time), + 1 + ); + glVertex3f(x+dx,y,z); + polys++; + } + glEnd(); + } + + if (! gp->button_down_p) { + gp->time -= _speed; + gp->anglex -= _rotationx; + gp->angley -= _rotationy; + gp->anglez -= _rotationz; + } + return polys; +} + +static int displayWire(gfluxstruct *gp) +{ + int polys = 0; + double x,y; + double z; + double dx1 = 2.0/((double)(_squares*_resolution)) - 0.00001; + double dy1 = 2.0/((double)(_squares*_resolution)) - 0.00001; + double dx2 = 2.0/((double)_squares) - 0.00001; + double dy2 = 2.0/((double)_squares) - 0.00001; + + glLoadIdentity(); + glRotatef(gp->anglex,1,0,0); + glRotatef(gp->angley,0,1,0); + glRotatef(gp->anglez,0,0,1); + userRot(gp); + glScalef(1,1,(GLfloat)_waveHeight); + glClear(GL_COLOR_BUFFER_BIT); + + for(x=-1;x<=1;x+=dx2) { + glBegin(GL_LINE_STRIP); + for(y=-1;y<=1;y+=dy1) { + z = getGrid(gp, x,y,gp->time); + genColour(z); + glColor3fv(gp->colour); + glVertex3f(x,y,z); + polys++; + } + glEnd(); + } + for(y=-1;y<=1;y+=dy2) { + glBegin(GL_LINE_STRIP); + for(x=-1;x<=1;x+=dx1) { + z = getGrid(gp, x,y,gp->time); + genColour(z); + glColor3fv(gp->colour); + glVertex3f(x,y,z); + polys++; + } + glEnd(); + } + + if (! gp->button_down_p) { + gp->time -= _speed; + gp->anglex -= _rotationx; + gp->angley -= _rotationy; + gp->anglez -= _rotationz; + } + return polys; +} + +/* generates new ripples */ +static void calcGrid(gfluxstruct *gp) +{ + double tmp; + + if (gp->button_down_p) return; + + tmp = 1.0/((double)_waveChange); + if(!(gp->counter%_waveChange)) { + gp->newWave = ((int)(gp->counter*tmp))%_waves; + gp->dispx[gp->newWave] = -frand(1.0); + gp->dispy[gp->newWave] = -frand(1.0); + gp->freq[gp->newWave] = _waveFreq * frand(1.0); + gp->wa[gp->newWave] = 0.0; + } + gp->counter++; + gp->wa[gp->newWave] += tmp; + gp->wa[(gp->newWave+1)%_waves] -= tmp; +} + +/* returns a height for the grid given time and x,y space co-ords */ +static double getGrid(gfluxstruct *gp, double x, double y, double a) +{ + register int i; + double retval=0.0; + double tmp; + + tmp = 1.0/((float)_waves); + for(i=0;i<_waves;i++) { + retval += gp->wa[i] * tmp * sin( gp->freq[i] + * ( (x+gp->dispx[i]) * (x+gp->dispx[i]) + + (y+gp->dispy[i]) * (y+gp->dispy[i]) +a ) ); + } + return(retval); +} + + +XSCREENSAVER_MODULE ("GFlux", gflux) + +#endif diff --git a/hacks/glx/gflux.man b/hacks/glx/gflux.man new file mode 100644 index 0000000..654aeb4 --- /dev/null +++ b/hacks/glx/gflux.man @@ -0,0 +1,111 @@ +.TH XScreenSaver 1 "May 2004" +.SH NAME +gflux \- rippling surface graphics hack +.SH SYNOPSIS +.B gflux +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] +[\-squares \fInum\fP] [\-resolution \fInum\fP] [\-mode \fImode\fP] +[\-flat \fInum\fP] [\-speed \fInum\fP] +[\-rotationx \fInum\fP] [\-rotationy \fInum\fP] [\-rotationz \fInum\fP] +[\-waves \fInum\fP] [\-waveChange \fInum\fP] [\-waveHeight \fInum\fP] +[\-waveFreq \fInum\fP] [\-zoom \fInum\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIgflux\fP program draws a colourfull animated rippling square rotating in 3D space. +.SH OPTIONS +.I gflux +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-squares \fInum\fP\fP +Specifies the size of the grid in squares. default 19 +.TP 8 +.B \-resolution \fInum\fP\fP +Specifies the wireframe detail of the squares. default 4 +.TP 8 +.B \-mode \fImode\fP\fP +Specifies the draw method: wireframe; solid (meaning a solid colored +surface); light (same as solid, but with lighting effects); +checker (a texture-mapped checkerboard pattern); or grab (meaning +grab an image to manipulate.) + +When grabbing images, the image will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. +.TP 8 +.B \-wireframe +Same as "-mode wire". +.TP 8 +.B \-flat \fInum\fP\fP +0 for smooth shading 1 for flat. default 0 +.TP 8 +.B \-speed \fInum\fP\fP +Specifies speed of ripples flowing over the surface. default 0.05 +.TP 8 +.B \-rotationx \fInum\fP \-rotationy \fInum\fP \-rotationz \fInum\fP\fP +Specifies the speed of rotation of the surface in these axis +.TP 8 +.B \-waves \fInum\fP\fP +Specifies the number of ripple centres at any one time. Values should be greater than 1. default 3 +.TP 8 +.B \-waveChange \fInum\fP\fP +Specifies the duration of a ripple centre. after this they fade away to be reborn elsewhere with a different frequency. default 50 +.TP 8 +.B \-waveHeight \fInum\fP\fP +Specifies the height of ripples on the surface. default 1.0 +.TP 8 +.B \-waveFreq \fInum\fP\fP +Specifies the maximum frequency of ripples. default 3.0 +.TP 8 +.B \-zoom \fInum\fP\fP +Specifies the size of the viewport. Smaller values fill the screen with rippling surface. default 1.0 +.TP 8 +.B \-delay \fImicroseconds\fP +How long to pause between frames. Default is 20000, or 0.02 second. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 2000 by Josiah Pease. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Josiah Pease , 10-Jun-2000. + diff --git a/hacks/glx/glblur.c b/hacks/glx/glblur.c new file mode 100644 index 0000000..cee020c --- /dev/null +++ b/hacks/glx/glblur.c @@ -0,0 +1,610 @@ +/* glblur --- radial blur using GL textures + * Copyright (c) 2002-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * This program draws a box and a few line segments, and generates a flowing + * radial blur outward from it -- this causes flowing field effects. + * It does this by rendering the scene into a small texture, then repeatedly + * rendering increasingly-enlarged and increasingly-transparent versions of + * that texture onto the frame buffer. + * + * As such, it's quite graphics intensive -- don't bother trying to run this + * if you don't have hardware-accelerated texture support. + * + * Inspired by Dario Corno's Radial Blur tutorial: + * http://nehe.gamedev.net/tutorials/lesson.asp?l=36 + */ + +#define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_glblur 0 +# define release_glblur 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef ABS +#define ABS(n) ((n)<0?-(n):(n)) +#undef SIGNOF +#define SIGNOF(n) ((n)<0?-1:1) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPIN "XYZ" +#define DEF_WANDER "True" +#define DEF_BLUR_SIZE "15" + +typedef struct metaball metaball; + + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + GLuint obj_dlist0; /* east-west cube faces */ + GLuint obj_dlist1; /* north-south cube faces */ + GLuint obj_dlist2; /* up-down cube faces */ + GLuint obj_dlist3; /* spikes coming out of the cube's corners */ + GLuint scene_dlist1; /* the cube, rotated and translated */ + GLuint scene_dlist2; /* the spikes, rotated and translated */ + int scene_polys1; /* polygons in scene, not counting texture overlay */ + int scene_polys2; /* polygons in scene, not counting texture overlay */ + + GLuint texture; + unsigned int *tex_data; + int tex_w, tex_h; + + int ncolors; + XColor *colors0; + XColor *colors1; + XColor *colors2; + XColor *colors3; + int ccolor; + + Bool show_cube_p; + Bool show_spikes_p; + +} glblur_configuration; + +static glblur_configuration *bps = NULL; + +static char *do_spin; +static Bool do_wander; +static int blursize; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-blursize", ".blurSize", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&blursize, "blurSize","BlurSize", DEF_BLUR_SIZE, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt glblur_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_glblur (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 8.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + + +/* Objects in the scene + */ + +static void +generate_object (ModeInfo *mi) +{ + glblur_configuration *bp = &bps[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME (mi); + int s = 10; + + bp->scene_polys1 = 0; + bp->scene_polys2 = 0; + + glNewList (bp->obj_dlist0, GL_COMPILE); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* front */ + glNormal3f (0, 0, 1); + glTexCoord2f(1, 0); glVertex3f ( 0.5, -0.5, 0.5); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, 0.5, 0.5); + glTexCoord2f(1, 1); glVertex3f (-0.5, -0.5, 0.5); + bp->scene_polys1++; + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* back */ + glNormal3f (0, 0, -1); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f ( 0.5, -0.5, -0.5); + bp->scene_polys1++; + glEnd(); + glEndList(); + + glNewList (bp->obj_dlist1, GL_COMPILE); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* left */ + glNormal3f (-1, 0, 0); + glTexCoord2f(1, 1); glVertex3f (-0.5, 0.5, 0.5); + glTexCoord2f(1, 0); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, -0.5, 0.5); + bp->scene_polys1++; + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* right */ + glNormal3f (1, 0, 0); + glTexCoord2f(1, 1); glVertex3f ( 0.5, -0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, -0.5, 0.5); + bp->scene_polys1++; + glEnd(); + glEndList(); + + glNewList (bp->obj_dlist2, GL_COMPILE); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* top */ + glNormal3f (0, 1, 0); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f (-0.5, 0.5, 0.5); + bp->scene_polys1++; + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* bottom */ + glNormal3f (0, -1, 0); + glTexCoord2f(1, 0); glVertex3f (-0.5, -0.5, 0.5); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, -0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f ( 0.5, -0.5, 0.5); + bp->scene_polys1++; + glEnd(); + glEndList(); + + glNewList (bp->obj_dlist3, GL_COMPILE); + glLineWidth (1); + glBegin(GL_LINES); + glVertex3f(-s, 0, 0); glVertex3f(s, 0, 0); /* face spikes */ + glVertex3f(0, -s, 0); glVertex3f(0, s, 0); + glVertex3f(0, 0, -s); glVertex3f(0, 0, s); + bp->scene_polys2 += 3; + glEnd(); + + glLineWidth (8); + glBegin(GL_LINES); + glVertex3f(-s, -s, -s); glVertex3f( s, s, s); /* corner spikes */ + glVertex3f(-s, -s, s); glVertex3f( s, s, -s); + glVertex3f(-s, s, -s); glVertex3f( s, -s, s); + glVertex3f( s, -s, -s); glVertex3f(-s, s, s); + bp->scene_polys2 += 4; + glEnd(); + glEndList (); + + check_gl_error ("object generation"); +} + + +static void +init_texture (ModeInfo *mi) +{ + glblur_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (bp->tex_data) free (bp->tex_data); + + bp->tex_w = 128; + bp->tex_h = 128; + bp->tex_data = (unsigned int *) + malloc (bp->tex_w * bp->tex_h * 4 * sizeof (unsigned int)); + + glGenTextures (1, &bp->texture); + glBindTexture (GL_TEXTURE_2D, bp->texture); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + bp->tex_w, bp->tex_h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, bp->tex_data); + check_gl_error ("texture generation"); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); +} + + +static void +render_scene_to_texture (ModeInfo *mi) +{ + glblur_configuration *bp = &bps[MI_SCREEN(mi)]; + + glViewport (0, 0, bp->tex_w, bp->tex_h); + + glCallList (bp->scene_dlist1); + glCallList (bp->scene_dlist2); + + glBindTexture (GL_TEXTURE_2D, bp->texture); + glCopyTexImage2D (GL_TEXTURE_2D, 0, GL_LUMINANCE, 0, 0, + bp->tex_w, bp->tex_h, 0); + check_gl_error ("texture2D"); + + glViewport (0, 0, MI_WIDTH(mi), MI_HEIGHT(mi)); +} + +static void +overlay_blur_texture (ModeInfo *mi) +{ + glblur_configuration *bp = &bps[MI_SCREEN(mi)]; + int w = MI_WIDTH (mi); + int h = MI_HEIGHT (mi); + int times = blursize; + int i; + GLfloat inc = 0.02 * (25.0 / times); + + GLfloat spost = 0; /* starting texture coordinate offset */ + GLfloat alpha_inc; /* transparency fade factor */ + GLfloat alpha = 0.2; /* initial transparency */ + + glEnable (GL_TEXTURE_2D); + glDisable (GL_DEPTH_TEST); + glBlendFunc (GL_SRC_ALPHA,GL_ONE); + glEnable (GL_BLEND); + glBindTexture (GL_TEXTURE_2D, bp->texture); + + + /* switch to orthographic projection, saving both previous matrixes + on their respective stacks. + */ + glMatrixMode (GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glOrtho (0, w, h, 0, -1, 1); + glMatrixMode (GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + + alpha_inc = alpha / times; + + mi->polygon_count = bp->scene_polys1 + bp->scene_polys2; + + glBegin (GL_QUADS); + for (i = 0; i < times; i++) + { + glColor4f (1, 1, 1, alpha); + glTexCoord2f (0+spost, 1-spost); glVertex2f (0, 0); + glTexCoord2f (0+spost, 0+spost); glVertex2f (0, h); + glTexCoord2f (1-spost, 0+spost); glVertex2f (w, h); + glTexCoord2f (1-spost, 1-spost); glVertex2f (w, 0); + spost += inc; + alpha -= alpha_inc; + mi->polygon_count++; + } + glEnd(); + + /* Switch back to perspective projection, restoring the saved matrixes + */ + glMatrixMode (GL_PROJECTION); + glPopMatrix(); + glMatrixMode (GL_MODELVIEW); + glPopMatrix(); + + glEnable (GL_DEPTH_TEST); + glDisable (GL_BLEND); + glDisable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, 0); +} + + + +/* Startup initialization + */ + +ENTRYPOINT Bool +glblur_handle_event (ModeInfo *mi, XEvent *event) +{ + glblur_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_glblur (ModeInfo *mi) +{ + glblur_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_glblur (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + + if (!wire) + { + GLfloat gamb[4]= {0.2, 0.2, 0.2, 1.0}; + GLfloat pos[4] = {0.0, 5.0, 10.0, 1.0}; + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {0.3, 0.3, 0.3, 1.0}; + GLfloat spc[4] = {0.8, 0.8, 0.8, 1.0}; + GLfloat shiny = 128; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glEnable(GL_NORMALIZE); + glShadeModel(GL_SMOOTH); + + glLightModelfv (GL_LIGHT_MODEL_AMBIENT, gamb); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + glMaterialf(GL_FRONT, GL_SHININESS, shiny); + } + + { + Bool spinx=False, spiny=False, spinz=False; + double spin_speed = 0.9; + double wander_speed = 0.06; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') spinx = True; + else if (*s == 'y' || *s == 'Y') spiny = True; + else if (*s == 'z' || *s == 'Z') spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + bp->rot = make_rotator (spinx ? spin_speed : 0, + spiny ? spin_speed : 0, + spinz ? spin_speed : 0, + 1.0, + do_wander ? wander_speed : 0, + False); + bp->trackball = gltrackball_init (True); + } + + if (blursize < 0) blursize = 0; + if (blursize > 200) blursize = 200; + + bp->ncolors = 128; + bp->colors0 = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + bp->colors1 = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + bp->colors2 = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + bp->colors3 = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, bp->colors0, &bp->ncolors, False, 0, False); + make_smooth_colormap (0, 0, 0, bp->colors1, &bp->ncolors, False, 0, False); + make_smooth_colormap (0, 0, 0, bp->colors2, &bp->ncolors, False, 0, False); + make_smooth_colormap (0, 0, 0, bp->colors3, &bp->ncolors, False, 0, False); + bp->ccolor = 0; + + bp->obj_dlist0 = glGenLists (1); + bp->obj_dlist1 = glGenLists (1); + bp->obj_dlist2 = glGenLists (1); + bp->obj_dlist3 = glGenLists (1); + bp->scene_dlist1 = glGenLists (1); + bp->scene_dlist2 = glGenLists (1); + + init_texture (mi); + + generate_object (mi); +} + + +/* Render one frame + */ +ENTRYPOINT void +draw_glblur (ModeInfo *mi) +{ + glblur_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + GLfloat color0[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat color1[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat color2[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat color3[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat spec[4] = {1.0, 1.0, 1.0, 1.0}; + + double rx, ry, rz; + double px, py, pz; + int extra_polys = 0; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + /* Decide what we're drawing + */ + if (0 == (random() % 30)) + { + bp->show_cube_p = (0 == (random() % 10)); + bp->show_spikes_p = (0 == (random() % 20)); + } + + /* Select new colors for the various objects + */ + color0[0] = bp->colors0[bp->ccolor].red / 65536.0; + color0[1] = bp->colors0[bp->ccolor].green / 65536.0; + color0[2] = bp->colors0[bp->ccolor].blue / 65536.0; + + color1[0] = bp->colors1[bp->ccolor].red / 65536.0; + color1[1] = bp->colors1[bp->ccolor].green / 65536.0; + color1[2] = bp->colors1[bp->ccolor].blue / 65536.0; + + color2[0] = bp->colors2[bp->ccolor].red / 65536.0; + color2[1] = bp->colors2[bp->ccolor].green / 65536.0; + color2[2] = bp->colors2[bp->ccolor].blue / 65536.0; + + color3[0] = bp->colors3[bp->ccolor].red / 65536.0; + color3[1] = bp->colors3[bp->ccolor].green / 65536.0; + color3[2] = bp->colors3[bp->ccolor].blue / 65536.0; + + bp->ccolor++; + if (bp->ccolor >= bp->ncolors) bp->ccolor = 0; + + + get_position (bp->rot, &px, &py, &pz, !bp->button_down_p); + get_rotation (bp->rot, &rx, &ry, &rz, !bp->button_down_p); + + px = (px - 0.5) * 2; + py = (py - 0.5) * 2; + pz = (pz - 0.5) * 8; + rx *= 360; + ry *= 360; + rz *= 360; + + /* Generate scene_dlist1, which contains the box (not spikes), + rotated into position. + */ + glNewList (bp->scene_dlist1, GL_COMPILE); + { + glMatrixMode (GL_MODELVIEW); + glPushMatrix (); + glTranslatef (px, py, pz); + gltrackball_rotate (bp->trackball); + glRotatef (rx, 1.0, 0.0, 0.0); + glRotatef (ry, 0.0, 1.0, 0.0); + glRotatef (rz, 0.0, 0.0, 1.0); + + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color0); + glCallList (bp->obj_dlist0); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color1); + glCallList (bp->obj_dlist1); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color2); + glCallList (bp->obj_dlist2); + + glMatrixMode (GL_MODELVIEW); + glPopMatrix (); + } + glEndList (); + + + /* Generate scene_dlist2, which contains the spikes (not box), + rotated into position. + */ + glNewList (bp->scene_dlist2, GL_COMPILE); + { + glMatrixMode (GL_MODELVIEW); + glPushMatrix (); + glTranslatef (px, py, pz); + gltrackball_rotate (bp->trackball); + glRotatef (rx, 1.0, 0.0, 0.0); + glRotatef (ry, 0.0, 1.0, 0.0); + glRotatef (rz, 0.0, 0.0, 1.0); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color3); + glCallList (bp->obj_dlist3); + + glMatrixMode (GL_MODELVIEW); + glPopMatrix (); + } + glEndList (); + + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + render_scene_to_texture (mi); + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (bp->show_cube_p || bp->button_down_p) + { + glCallList (bp->scene_dlist1); + extra_polys += bp->scene_polys1; + } + if (bp->show_spikes_p || bp->button_down_p) + { + glCallList (bp->scene_dlist2); + extra_polys += bp->scene_polys2; + } + + overlay_blur_texture (mi); + mi->polygon_count += extra_polys; + + glFlush (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("GLBlur", glblur) + +#endif /* USE_GL */ diff --git a/hacks/glx/glblur.man b/hacks/glx/glblur.man new file mode 100644 index 0000000..968f42f --- /dev/null +++ b/hacks/glx/glblur.man @@ -0,0 +1,76 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +glblur - 3D radial blur texture fields +.SH SYNOPSIS +.B glblur +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-blursize \fInumber\fP] +[\-no-wander] +[\-no-spin] +[\-spin \fI[XYZ]\fP] +[\-fps] +.SH DESCRIPTION +This program draws a box and a few line segments, and generates a +radial blur outward from it. This creates flowing field effects. + +This is done by rendering the scene into a small texture, then +repeatedly rendering increasingly-enlarged and increasingly-transparent +versions of that texture onto the frame buffer. As such, it's quite +graphics intensive: don't bother trying to run this if you don't have +hardware-accelerated texture support. It will hurt your machine bad. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-blursize \fInumber\fP +How many copies of the scene should be laid down to make the vapor trail. +Default: 15. Larger numbers create smoother fields, but are slower. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin [XYZ] +Around which axes should the object spin? +.TP 8 +.B \-no-spin +None. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski, with inspiration from a tutorial by Dario Corno. diff --git a/hacks/glx/glcells.c b/hacks/glx/glcells.c new file mode 100644 index 0000000..adf9866 --- /dev/null +++ b/hacks/glx/glcells.c @@ -0,0 +1,1388 @@ +/* -*- Mode: C; tab-width: 2 -*- */ +/* glcells --- Cells growing on your screen */ + +/*- + * Cells growing on your screen + * + * Copyright (c) 2007 by Matthias Toussaint + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * 2007: Written by Matthias Toussaint + * 0.1 Initial version + * 0.2 Bugfixes (threading) and code cleanup by Jamie Zawinski + * Window scaling bug + performance bug in tick() + */ + +#include /* gettimeofday */ + +#include "xlockmore.h" +#include + +/********************************** + DEFINES + **********************************/ + +#define INDEX_OFFSET 100000 +#define NUM_CELL_SHAPES 10 + +#define release_glcells 0 +#define glcells_handle_event xlockmore_no_events + +#define DEF_DELAY "20000" +#define DEF_MAXCELLS "800" +#define DEF_RADIUS "40" +#define DEF_SEEDS "1" +#define DEF_QUALITY "3" +#define DEF_KEEPOLD "False" +#define DEF_MINFOOD "5" +#define DEF_MAXFOOD "20" +#define DEF_DIVIDEAGE "20" +#define DEF_MINDIST "1.4" +#define DEF_PAUSE "50" + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#ifndef HAVE_JWZGLES /* glDrawElements unimplemented... */ +# define USE_VERTEX_ARRAY +#endif + +#define TEX_SIZE 64 + +/********************************** + TYPEDEFS + **********************************/ + +typedef struct /* a 3-D vector */ +{ + double x, y, z; /* 3-D coordinates (we don't need w here) */ +} Vector; + +typedef struct /* a triangle (indexes of vertexes in some list) */ +{ + int i[3]; /* the three indexes for the triangle corners */ +} Triangle; + +typedef struct +{ + float *vertex; + float *normal; + unsigned *index; + int num_index; +} VertexArray; + +typedef struct /* an 3-D object without normal vectors */ +{ + Vector *vertex; /* the vertexes */ + Triangle *triangle; /* triangle list */ + int num_vertex; /* number of vertexes */ + int num_triangle; /* number of triangles */ +} Object; + +typedef struct /* an 3-D object with smooth normal vectors */ +{ + Vector *vertex; /* the vertexes */ + Vector *normal; /* the vertex normal vectors */ + Triangle *triangle; /* triangle list */ + int num_vertex; /* number of vertexes */ + int num_triangle; /* number of triangles */ +} ObjectSmooth; + +typedef struct /* Cell */ +{ + double x, y; /* position */ + double vx, vy; /* movement vector */ + int age; /* cells age */ + double min_dist; /* minimum distance to other cells */ + int energy; /* health */ + double rotation; /* random rot, so they don't look all the same */ + double radius; /* current size of cell */ + double growth; /* current growth rate. might be <1.0 while dividing, + >1.0 when finished dividing and food is available + and 1.0 when grown up */ +} Cell; + +typedef struct /* hacks state */ +{ + GLXContext *glx_context; + int width, height; /* current size of viewport */ + double screen_scale; /* we scale content with window size */ + int num_cells; /* current number of cell in list */ + Cell *cell; /* array of cells */ + int cell_polys; + GLfloat color[4]; /* current cell color */ + double radius; /* cell radius */ + int move_dist; /* min distance from neighbours for forking */ + int max_cells; /* maximum number of cells */ + int num_seeds; /* number of initial seeds */ + int keep_old_cells; /* draw dead cells? */ + int divide_age; /* min age for division */ + /* display lists for the cell stages */ + int cell_list[NUM_CELL_SHAPES]; + int nucleus_list; + int minfood; /* minimum amount of food per area unit */ + int maxfood; /* maximum amount of food per area unit */ + int pause; /* pause at end (all cells dead) */ + int pause_counter; + int wire; /* draw wireframe? */ + Object *sphere; /* the raw undisturbed sphere */ + double *disturbance; /* disturbance values for the vertexes */ + int *food; /* our petri dish (e.g. screen) */ + GLubyte *texture; /* texture data for nucleus */ + GLuint texture_name; /* texture name for binding */ +} State; + +/********************************** + STATIC STUFF + **********************************/ + +static State *sstate = NULL; + +static XrmOptionDescRec opts[] = { + { "-maxcells", ".maxcells", XrmoptionSepArg, 0 }, + { "-radius", ".radius", XrmoptionSepArg, 0 }, + { "-seeds", ".seeds", XrmoptionSepArg, 0 }, + { "-quality", ".quality", XrmoptionSepArg, 0 }, + { "-minfood", ".minfood", XrmoptionSepArg, 0 }, + { "-maxfood", ".maxfood", XrmoptionSepArg, 0 }, + { "-divideage", ".divideage", XrmoptionSepArg, 0 }, + { "-mindist", ".mindist", XrmoptionSepArg, 0 }, + { "-pause", ".pause", XrmoptionSepArg, 0 }, + { "-keepold", ".keepold", XrmoptionNoArg, "True" } +}; + +static int s_maxcells; +static int s_radius; +static int s_seeds; +static int s_quality; +static int s_minfood; +static int s_maxfood; +static int s_divideage; +static int s_pause; +static float s_min_dist; +static Bool s_keepold; + +static argtype vars[] = { + {&s_maxcells, "maxcells", "Max Cells", DEF_MAXCELLS, t_Int}, + {&s_radius, "radius", "Radius", DEF_RADIUS, t_Int}, + {&s_seeds, "seeds", "Seeds", DEF_SEEDS, t_Int}, + {&s_quality, "quality", "Quality", DEF_QUALITY, t_Int}, + {&s_minfood, "minfood", "Min Food", DEF_MINFOOD, t_Int}, + {&s_maxfood, "maxfood", "Max Food", DEF_MAXFOOD, t_Int}, + {&s_pause, "pause", "Pause at end", DEF_PAUSE, t_Int}, + {&s_divideage, "divideage", "Age for duplication (Ticks)", DEF_DIVIDEAGE, t_Int}, + {&s_min_dist, "mindist", "Minimum preferred distance to other cells", DEF_MINDIST, t_Float}, + {&s_keepold, "keepold", "Keep old cells", DEF_KEEPOLD, t_Bool} +}; + +/********************************** + PROTOTYPES + **********************************/ + +/* render scene */ +static int render( State *st ); +/* create initial cells and fill petri dish with food */ +static void create_cells( State * ); +/* do one animation step */ +static void tick( State *st ); +/* draw a single cell */ +static void draw_cell( State *st, int shape ); +/* draw cells nucleus */ +static void draw_nucleus( State *st ); +/* return randum number in the interval min-max */ +static int random_interval( int min, int max ); +/* retunr random number in the interval 0-max */ +static int random_max( int max ); +/* create display list for given disturbance weighting factor */ +static int create_list( State *st, double fac ); +/* return length of vector */ +static double vector_length( Vector * ); +/* normalize vector */ +static void vector_normalize( Vector * ); +/* a += b */ +static void vector_add( Vector *a, Vector *b ); +/* a -= b */ +static void vector_sub( Vector *a, Vector *b ); +/* a *= fac */ +static void vector_mul( Vector *a, double fac ); +/* a.x = a.y = a.z = 0 */ +static void vector_clear( Vector *a ); +/* return crossproduct a*b in out */ +static void vector_crossprod( Vector *a, Vector *b, Vector *out ); +/* return 1 if vectors are equal (epsilon compare) otherwise 0 */ +static int vector_compare( Vector *a, Vector *b ); +/* compute normal vector of given triangle and return in out */ +static void triangle_normal( Vector *a, Vector *b, Vector *c, Vector *out ); +/* take an Object and create an ObjectSmooth out of it */ +static ObjectSmooth *create_ObjectSmooth( Object * ); +/* Subdivide the Object once (assuming it's supposed to be a shpere */ +static Object *subdivide( Object *obj ); +/* free an Object */ +static void free_Object( Object * ); +/* free an ObjectSmooth */ +static void free_ObjectSmooth( ObjectSmooth * ); +/* scale an Object. return pointer to the object */ +/*static Object *scale_Object( Object *obj, double scale );*/ +/* create a perfect sphere refining with divisions */ +static Object *create_sphere( State *st, int divisions ); +/* make a copy of the given Object */ +static Object *clone_Object( Object * ); +/* return 1 if cell is capable to divide */ +static int can_divide( State *st, Cell *cell ); +#ifdef USE_VERTEX_ARRAY +static VertexArray *array_from_ObjectSmooth( ObjectSmooth * ); +#endif +static void create_nucleus_texture( State *st ); + +ENTRYPOINT ModeSpecOpt glcells_opts = { countof(opts), opts, countof(vars), vars, + NULL }; + + +/********************************** + INLINE FUNCTIONS + **********************************/ +/* create random numbers +*/ +static inline int random_interval( int min, int max ) +{ + int n = max - min; + if (n == 0) n = 1; + return min+(random()%n); +} + +static inline int random_max( int max ) +{ + return random()%max; +} + +/* Vector stuff +*/ + +/* a += b */ +static inline void vector_add( Vector *a, Vector *b ) +{ + a->x += b->x; + a->y += b->y; + a->z += b->z; +} + +/* a -= b */ +static inline void vector_sub( Vector *a, Vector *b ) +{ + a->x -= b->x; + a->y -= b->y; + a->z -= b->z; +} + +/* a *= v */ +static inline void vector_mul( Vector *a, double v ) +{ + a->x *= v; + a->y *= v; + a->z *= v; +} + +/* set to 0 */ +static inline void vector_clear( Vector *vec ) +{ + vec->x = vec->y = vec->z = 0; +} + +/* return vector length */ +static inline double vector_length( Vector *vec ) +{ + return sqrt( vec->x*vec->x + vec->y*vec->y + vec->z*vec->z ); +} + +/* normalize vector */ +static inline void vector_normalize( Vector *vec ) +{ + double len = vector_length( vec ); + + if (len != 0.0) { + vector_mul( vec, 1.0 / len ); + } +} + +/* crossproduct */ +static inline void vector_crossprod( Vector *a, Vector *b, Vector *out ) +{ + out->x = a->y*b->z - a->z*b->y; + out->y = a->z*b->x - a->x*b->z; + out->z = a->x*b->y - a->y*b->x; +} + +/* epsilon compare of two vectors */ +static inline int vector_compare( Vector *a, Vector *b ) +{ + const double epsilon = 0.0000001; + Vector delta = *a; + + vector_sub( &delta, b ); + if (fabs(delta.x) < epsilon && + fabs(delta.y) < epsilon && + fabs(delta.z) < epsilon) { + return 1; + } + + return 0; +} + +/* check if given cell is capable of dividing + needs space, must be old enough, grown up and healthy +*/ +static inline int can_divide( State *st, Cell *cell ) +{ + if (cell->min_dist > st->move_dist && + cell->age >= st->divide_age && + cell->radius > 0.99 * st->radius && + cell->energy > 0) { + return 1; + } + + return 0; +} + +/********************************** + FUNCTIONS + **********************************/ + +/* compute normal vector of given + triangle spanned by the points a, b, c +*/ +static void triangle_normal( Vector *a, Vector *b, Vector *c, Vector *out ) +{ + Vector v1 = *a; + Vector v2 = *a; + + vector_sub( &v1, b ); + vector_sub( &v2, c ); + vector_crossprod( &v1, &v2, out ); +} + +/* free */ +static void free_Object( Object *obj ) +{ + free( obj->vertex ); + free( obj->triangle ); + free( obj ); +} + +static void free_ObjectSmooth( ObjectSmooth *obj ) +{ + free( obj->vertex ); + free( obj->triangle ); + free( obj->normal ); + free( obj ); +} + +/* scale the given Object */ +#if 0 +static Object *scale_Object( Object *obj, double scale ) +{ + int v; + + for (v=0; vnum_vertex; ++v) { + vector_mul( &obj->vertex[v], scale ); + } + + return obj; +} +#endif + +/* create a copy of the given Object */ +static Object *clone_Object( Object *obj ) +{ + /* alloc */ + Object *ret = (Object *) malloc( sizeof( Object ) ); + + ret->vertex = + (Vector *) malloc( obj->num_vertex*sizeof(Vector) ); + ret->triangle = + (Triangle *) malloc( obj->num_triangle*sizeof(Triangle) ); + ret->num_vertex = obj->num_vertex; + ret->num_triangle = obj->num_triangle; + /* copy */ + memcpy( ret->vertex, obj->vertex, + obj->num_vertex*sizeof(Vector) ); + memcpy( ret->triangle, obj->triangle, + obj->num_triangle*sizeof(Triangle) ); + + return ret; +} + +#ifdef USE_VERTEX_ARRAY +static VertexArray *array_from_ObjectSmooth( ObjectSmooth *obj ) +{ + int i, j; + VertexArray *array = (VertexArray *) malloc( sizeof( VertexArray ) ); + + array->vertex = (float *) malloc( 3*sizeof(float)*obj->num_vertex ); + array->normal = (float *) malloc( 3*sizeof(float)*obj->num_vertex ); + array->index = (unsigned *) malloc( 3*sizeof(unsigned)*obj->num_triangle ); + array->num_index = obj->num_triangle*3; + + for (i=0, j=0; inum_vertex; ++i) { + array->vertex[j] = obj->vertex[i].x; + array->normal[j++] = obj->normal[i].x; + array->vertex[j] = obj->vertex[i].y; + array->normal[j++] = obj->normal[i].y; + array->vertex[j] = obj->vertex[i].z; + array->normal[j++] = obj->normal[i].z; + } + + for (i=0, j=0; inum_triangle; ++i) { + array->index[j++] = obj->triangle[i].i[0]; + array->index[j++] = obj->triangle[i].i[1]; + array->index[j++] = obj->triangle[i].i[2]; + } + + return array; +} +#endif /* USE_VERTEX_ARRAY */ + + +/* create a smoothed version of the given Object + by computing average normal vectors for the vertexes +*/ +static ObjectSmooth *create_ObjectSmooth( Object *obj ) +{ + int t, v, i; + Vector *t_normal = + (Vector *) malloc( obj->num_triangle*sizeof(Vector) ); + ObjectSmooth *ret = + (ObjectSmooth *) malloc( sizeof( ObjectSmooth ) ); + + /* fill in vertexes and triangles */ + ret->num_vertex = obj->num_vertex; + ret->num_triangle = obj->num_triangle; + ret->vertex = + (Vector *) malloc( obj->num_vertex * sizeof( Vector ) ); + ret->normal = + (Vector *) malloc( obj->num_vertex * sizeof( Vector ) ); + ret->triangle = + (Triangle *) malloc( obj->num_triangle * sizeof( Triangle ) ); + + for (v=0; vnum_vertex; ++v) { + ret->vertex[v] = obj->vertex[v]; + } + + for (t=0; tnum_triangle; ++t) { + ret->triangle[t] = obj->triangle[t]; + } + + /* create normals (triangles) */ + for (t=0; tnum_triangle; ++t) { + triangle_normal( &ret->vertex[ret->triangle[t].i[0]], + &ret->vertex[ret->triangle[t].i[1]], + &ret->vertex[ret->triangle[t].i[2]], + &t_normal[t] ); + } + + /* create normals (vertex) by averaging triangle + normals at vertex + */ + for (v=0; vnum_vertex; ++v) { + vector_clear( &ret->normal[v] ); + for (t=0; tnum_triangle; ++t) { + for (i=0; i<3; ++i) { + if (ret->triangle[t].i[i] == v) { + vector_add( &ret->normal[v], &t_normal[t] ); + } + } + } + /* as we have only a half sphere we force the + normals at the bortder to be perpendicular to z. + the simple algorithm above makes an error here. + */ + if (fabs(ret->vertex[v].z) < 0.0001) { + ret->normal[v].z = 0.0; + } + + vector_normalize( &ret->normal[v] ); + } + + free( t_normal ); + + return ret; +} + +/* subdivide the triangles of the object once + The order of this algorithm is probably something like O(n^42) :) + but I can't think of something smarter at the moment +*/ +static Object *subdivide( Object *obj ) +{ + /* create for worst case (which I dont't know) */ + int start, t, i, v; + int index_list[1000]; + int index_cnt, index_found; + Object *tmp = (Object *)malloc( sizeof(Object) ); + Object *ret = (Object *)malloc( sizeof(Object) ); + Object *c_ret; + + tmp->vertex = + (Vector *)malloc( 100*obj->num_vertex*sizeof( Vector ) ); + tmp->triangle = + (Triangle *)malloc( 4*obj->num_triangle*sizeof( Triangle ) ); + tmp->num_vertex = 0; + tmp->num_triangle = 0; + ret->vertex = + (Vector *)malloc( 100*obj->num_vertex*sizeof( Vector ) ); + ret->triangle = + (Triangle *)malloc( 4*obj->num_triangle*sizeof( Triangle ) ); + ret->num_vertex = 0; + ret->num_triangle = 0; +#ifdef PRINT_STAT + fprintf( stderr, "in v=%d t=%d\n", + obj->num_vertex, obj->num_triangle ); +#endif + /* for each triangle create 3 new vertexes and the 4 + corresponding triangles + */ + for (t=0; tnum_triangle; ++t) { + /* copy the three original vertexes */ + for (i=0; i<3; ++i) { + tmp->vertex[tmp->num_vertex++] = + obj->vertex[obj->triangle[t].i[i]]; + } + + /* create 3 new */ + tmp->vertex[tmp->num_vertex] = + obj->vertex[obj->triangle[t].i[0]]; + vector_add( &tmp->vertex[tmp->num_vertex], + &obj->vertex[obj->triangle[t].i[1]] ); + vector_mul( &tmp->vertex[tmp->num_vertex++], 0.5 ); + + tmp->vertex[tmp->num_vertex] = + obj->vertex[obj->triangle[t].i[1]]; + vector_add( &tmp->vertex[tmp->num_vertex], + &obj->vertex[obj->triangle[t].i[2]] ); + vector_mul( &tmp->vertex[tmp->num_vertex++], 0.5 ); + + tmp->vertex[tmp->num_vertex] = + obj->vertex[obj->triangle[t].i[2]]; + vector_add( &tmp->vertex[tmp->num_vertex], + &obj->vertex[obj->triangle[t].i[0]] ); + vector_mul( &tmp->vertex[tmp->num_vertex++], 0.5 ); + + /* create triangles */ + start = tmp->num_vertex-6; + + tmp->triangle[tmp->num_triangle].i[0] = start; + tmp->triangle[tmp->num_triangle].i[1] = start+3; + tmp->triangle[tmp->num_triangle++].i[2] = start+5; + + tmp->triangle[tmp->num_triangle].i[0] = start+3; + tmp->triangle[tmp->num_triangle].i[1] = start+1; + tmp->triangle[tmp->num_triangle++].i[2] = start+4; + + tmp->triangle[tmp->num_triangle].i[0] = start+5; + tmp->triangle[tmp->num_triangle].i[1] = start+4; + tmp->triangle[tmp->num_triangle++].i[2] = start+2; + + tmp->triangle[tmp->num_triangle].i[0] = start+3; + tmp->triangle[tmp->num_triangle].i[1] = start+4; + tmp->triangle[tmp->num_triangle++].i[2] = start+5; + } + + /* compress object eliminating double vertexes + (welcome to the not so smart section) + */ + /* copy original triangle list */ + for (t=0; tnum_triangle; ++t) { + ret->triangle[t] = tmp->triangle[t]; + } + ret->num_triangle = tmp->num_triangle; + + /* copy unique vertexes and correct triangle list */ + for (v=0; vnum_vertex; ++v) { + /* create list of vertexes that are the same */ + index_cnt = 0; + for (i=0; inum_vertex; ++i) { + /* check if i and v are the same + first in the list is the smallest index + */ + if (vector_compare( &tmp->vertex[v], &tmp->vertex[i] )) { + index_list[index_cnt++] = i; + } + } + + /* check if vertex unknown so far */ + index_found = 0; + for (i=0; inum_vertex; ++i) { + if (vector_compare( &ret->vertex[i], + &tmp->vertex[index_list[0]] )) { + index_found = 1; + break; + } + } + + if (!index_found) { + ret->vertex[ret->num_vertex] = tmp->vertex[index_list[0]]; + + /* correct triangles + (we add an offset to the index, so we can tell them apart) + */ + for (t=0; tnum_triangle; ++t) { + for (i=0; itriangle[t].i[0] == index_list[i]) { + ret->triangle[t].i[0] = ret->num_vertex+INDEX_OFFSET; + } + if (ret->triangle[t].i[1] == index_list[i]) { + ret->triangle[t].i[1] = ret->num_vertex+INDEX_OFFSET; + } + if (ret->triangle[t].i[2] == index_list[i]) { + ret->triangle[t].i[2] = ret->num_vertex+INDEX_OFFSET; + } + } + } + ret->num_vertex++; + } + } + + free_Object( tmp ); + + /* correct index offset */ + for (t=0; tnum_triangle; ++t) { + ret->triangle[t].i[0] -= INDEX_OFFSET; + ret->triangle[t].i[1] -= INDEX_OFFSET; + ret->triangle[t].i[2] -= INDEX_OFFSET; + } + + /* normalize vertexes */ + for (v=0; vnum_vertex; ++v) { + vector_normalize( &ret->vertex[v] ); + } +#ifdef PRINT_STAT + fprintf( stderr, "out v=%d t=%d\n", + ret->num_vertex, ret->num_triangle ); +#endif + /* shrink the arrays by cloning */ + c_ret = clone_Object( ret ); + free_Object( ret ); + + return c_ret; +} + +static int render( State *st ) +{ +#ifdef PRINT_STAT + struct timeval tv1, tv2; + int usec; +#endif + GLfloat LightAmbient[]= { 0.1f, 0.1f, 0.1f, 1.0f }; + GLfloat LightPosition[]= { -20.0f, -10.0f, -100.0f, 0.0f }; + int b; + int num_paint = 0; + + if (0 == st->food) return 0; +#ifdef PRINT_STAT + gettimeofday( &tv1, NULL ); +#endif + /* life goes on... */ + tick( st ); +#ifdef PRINT_STAT + gettimeofday( &tv2, NULL ); + usec = (tv2.tv_sec-tv1.tv_sec)*1000000+(tv2.tv_usec-tv1.tv_usec); + fprintf( stderr, "tick %d\n", usec ); + gettimeofday( &tv1, NULL ); +#endif + + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + glDepthFunc(GL_LESS); + glEnable(GL_DEPTH_TEST); + glLightfv( GL_LIGHT0, GL_AMBIENT, LightAmbient ); + glLightfv( GL_LIGHT0, GL_DIFFUSE, st->color ); + glLightfv( GL_LIGHT0, GL_POSITION, LightPosition ); + + /* prepare lighting vs. wireframe */ + if (!st->wire) { + glEnable( GL_LIGHT0 ); + glEnable( GL_LIGHTING ); + glEnable( GL_NORMALIZE ); + glPolygonMode( GL_FRONT, GL_FILL ); + } else { +# ifndef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + glPolygonMode( GL_FRONT, GL_LINE ); +# endif + } + +# if 0 + if (st->wire) { + glDisable(GL_DEPTH_TEST); + glColor3f (1, 1, 1); + glBegin(GL_LINE_LOOP); + glVertex3f(0, 0, 0); glVertex3f(st->width, 0, 0); + glVertex3f(st->width, st->height, 0); glVertex3f(0, st->height, 0); + glVertex3f(0, 0, 0); glVertex3f(st->width/4, 0, 0); + glVertex3f(st->width/4, st->height/4, 0); glVertex3f(0, st->height/4, 0); + glEnd(); + } +# endif + + /* draw the dead cells if choosen */ + if (st->keep_old_cells) { + for (b=0; bnum_cells; ++b) { + if (st->cell[b].energy <= 0) { + num_paint++; + glPushMatrix(); + glTranslatef( st->cell[b].x, st->cell[b].y, 0.0 ); + glRotatef( st->cell[b].rotation, 0.0, 0.0, 1.0 ); + glScalef( st->cell[b].radius, st->cell[b].radius, st->cell[b].radius ); + draw_cell( st, 9 ); + glPopMatrix(); + } + } + } + + /* draw the living cells */ + for (b=0; bnum_cells; ++b) { + if (st->cell[b].energy >0) { + double fac = (double)st->cell[b].energy / 50.0; + int shape; + if (fac < 0.0) fac = 0.0; + if (fac > 1.0) fac = 1.0; + + shape = (int)(9.0*fac); + num_paint++; + /*glColor3f( fac, fac, fac );*/ + +# if 0 + if (st->wire) { + glBegin(GL_LINES); + glVertex3f(0, 0, 0); + glVertex3f(st->cell[b].x, st->cell[b].y, 0); + glEnd(); + } +# endif + + glPushMatrix(); + glTranslatef( st->cell[b].x, st->cell[b].y, 0.0 ); + glRotatef( st->cell[b].rotation, 0.0, 0.0, 1.0 ); + glScalef( st->cell[b].radius, st->cell[b].radius, st->cell[b].radius ); + draw_cell( st, 9-shape ); + glPopMatrix(); + } + } + + /* draw cell nuclei */ + if (!st->wire) + { + glDisable( GL_LIGHT0 ); + glDisable( GL_LIGHTING ); + + glEnable( GL_BLEND ); + glDisable( GL_DEPTH_TEST ); + glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); + glEnable( GL_TEXTURE_2D ); + glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); + glBindTexture( GL_TEXTURE_2D, st->texture_name ); + + for (b=0; bnum_cells; ++b) { + if (st->cell[b].energy>0 || st->keep_old_cells) { + glPushMatrix(); + glTranslatef( st->cell[b].x, st->cell[b].y, 0.0 ); + glScalef( st->cell[b].radius, st->cell[b].radius, st->cell[b].radius ); + draw_nucleus( st ); + glPopMatrix(); + } + } + + glDisable( GL_TEXTURE_2D ); + glDisable( GL_BLEND ); + } + +#ifdef PRINT_STAT + gettimeofday( &tv2, NULL ); + usec = (tv2.tv_sec-tv1.tv_sec)*1000000+(tv2.tv_usec-tv1.tv_usec); + fprintf( stderr, "OpenGL %d\n", usec ); +#endif + return num_paint * st->cell_polys; +} + +/* this creates the initial subdivided half-dodecaedron */ +static Object *create_sphere( State *st, int divisions ) +{ + int num_vertex = 9; + int num_triangle = 10; + int i, v, t; + double a, aStep = (double)M_PI / 3.0; + double e; + int vi[30] = { 0, 7, 1, 1, 7, 2, 2, 8, 3, 3, 8, 4, 4, 6, 5, + 5, 6, 0, 0, 6, 7, 2, 7, 8, 4, 8, 6, 6, 8, 7 }; + Object *obj = (Object *)malloc( sizeof( Object ) ); + + obj->vertex = (Vector *)malloc( num_vertex*sizeof( Vector ) ); + obj->triangle = + (Triangle *)malloc( num_triangle*sizeof( Triangle ) ); + obj->num_vertex = num_vertex; + obj->num_triangle = num_triangle; + + /* create vertexes for dodecaedron */ + a = 0.0; + for (v=0; v<6; ++v) { + obj->vertex[v].x = sin( a ); + obj->vertex[v].y = -cos( a ); + obj->vertex[v].z = 0.0; + + a += aStep; + } + + a = -60.0/180.0*(double)M_PI; + e = 58.2825/180.0 * (double)M_PI; + for (;v<9; ++v) { + obj->vertex[v].x = sin( a )*cos( e ); + obj->vertex[v].y = -cos( a )*cos( e ); + obj->vertex[v].z = -sin( e ); + + a += 2.0*aStep; + } + + /* create triangles */ + for (t=0; tnum_triangle; ++t) { + obj->triangle[t].i[0] = vi[3*t]; + obj->triangle[t].i[1] = vi[3*t+1]; + obj->triangle[t].i[2] = vi[3*t+2]; + } + + /* subdivide as specified */ + for (i=0; icell_polys = obj->num_triangle; + + return obj; +} + +static int create_list( State *st, double fac ) +{ + int v; + Object *obj = clone_Object( st->sphere ); + ObjectSmooth *smooth; +#ifdef USE_VERTEX_ARRAY + VertexArray *vertex_array; +#else + int t, i; +#endif + int list = glGenLists(1); + + /* apply wrinckle factor */ + for (v=0; vnum_vertex; ++v) { + vector_mul( &obj->vertex[v], 1.0+fac*st->disturbance[v] ); + } + + /* compute normals */ + smooth = create_ObjectSmooth( obj ); + free_Object( obj ); + + /* Create display list */ + glNewList( list, GL_COMPILE ); +#ifdef USE_VERTEX_ARRAY + vertex_array = array_from_ObjectSmooth( smooth ); + glEnableClientState( GL_VERTEX_ARRAY ); + glEnableClientState( GL_NORMAL_ARRAY ); + glVertexPointer( 3, GL_FLOAT, 0, vertex_array->vertex ); + glNormalPointer( GL_FLOAT, 0, vertex_array->normal ); + glDrawElements( GL_TRIANGLES, vertex_array->num_index, + GL_UNSIGNED_INT, vertex_array->index ); + free( vertex_array ); +#else + glBegin( GL_TRIANGLES ); + + for (t=0; tnum_triangle; ++t) { + for (i=0; i<3; ++i) { + glNormal3f( smooth->normal[smooth->triangle[t].i[i]].x, + smooth->normal[smooth->triangle[t].i[i]].y, + smooth->normal[smooth->triangle[t].i[i]].z ); + glVertex3f( smooth->vertex[smooth->triangle[t].i[i]].x, + smooth->vertex[smooth->triangle[t].i[i]].y, + smooth->vertex[smooth->triangle[t].i[i]].z ); + } + } + + glEnd(); +#endif + glEndList(); + + free_ObjectSmooth( smooth ); + + return list; +} + +static void draw_cell( State *st, int shape ) +{ +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + if (st->wire) { + glDisable(GL_DEPTH_TEST); + glColor3f (1, 1, 1); + glPushMatrix(); + glScalef (0.33, 0.33, 1); + glBegin (GL_LINE_LOOP); + glVertex3f (-1, -1, 0); glVertex3f (-1, 1, 0); + glVertex3f ( 1, 1, 0); glVertex3f ( 1, -1, 0); + glEnd(); + if (shape == 9) { + glBegin (GL_LINES); + glVertex3f (-1, -1, 0); glVertex3f (1, 1, 0); + glVertex3f (-1, 1, 0); glVertex3f (1, -1, 0); + glEnd(); + } + glPopMatrix(); + return; + } +# endif + + if (-1 == st->cell_list[shape]) { + st->cell_list[shape] = create_list( st, (double)shape/10.0 ); + } + + glCallList( st->cell_list[shape] ); +} + +static void create_nucleus_texture( State *st ) +{ + int x, y; + int w2 = TEX_SIZE/2; + float s = w2*w2/4.0; + + st->texture = (GLubyte *) malloc( 4*TEX_SIZE*TEX_SIZE ); + + for (y=0; ytexture[4*(x+y*TEX_SIZE)] = (GLubyte)0; + st->texture[4*(x+y*TEX_SIZE)+1] = (GLubyte)0; + st->texture[4*(x+y*TEX_SIZE)+2] = (GLubyte)0; + st->texture[4*(x+y*TEX_SIZE)+3] = (GLubyte)v; + } + } + + glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); + glGenTextures( 1, &st->texture_name ); + glBindTexture( GL_TEXTURE_2D, st->texture_name ); + + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, TEX_SIZE, TEX_SIZE, 0, + GL_RGBA, GL_UNSIGNED_BYTE, st->texture ); +} + +static void draw_nucleus( State *st ) +{ + if (-1 == st->nucleus_list) { + float z = -1.2f; + float r=1.0/2.0f; + st->nucleus_list = glGenLists( 1 ); + glNewList( st->nucleus_list, GL_COMPILE ); + glBegin( GL_QUADS ); + glTexCoord2f( 0.0f, 0.0f ); glVertex3f( -r, -r, z ); + glTexCoord2f( 0.0f, 1.0f ); glVertex3f( -r, r, z ); + glTexCoord2f( 1.0f, 1.0f ); glVertex3f( r, r, z ); + glTexCoord2f( 1.0f, 0.0f ); glVertex3f( r, -r, z ); + glEnd(); + glEndList(); + } + + glCallList( st->nucleus_list ); +} + +static void create_cells( State *st ) +{ + int border = (int)(200.0 * st->screen_scale); + int i, foodcnt; + int w = st->width-2*border; + int h = st->height-2*border; + + st->color[0] = 0.5 + random_max( 1000 ) * 0.0005; + st->color[1] = 0.5 + random_max( 1000 ) * 0.0005; + st->color[2] = 0.5 + random_max( 1000 ) * 0.0005; + st->color[3] = 1.0f; + + /* allocate if startup */ + if (!st->cell) { + st->cell = (Cell *) malloc( st->max_cells * sizeof(Cell)); + } + + /* fill the screen with random food for our little critters */ + foodcnt = (st->width*st->height)/16; + for (i=0; ifood[i] = random_interval( st->minfood, st->maxfood ); + } + + /* create the requested seed-cells */ + st->num_cells = st->num_seeds; + + for (i=0; inum_cells; ++i) { + st->cell[i].x = border + random_max( w ); + st->cell[i].y = border + random_max( h ); + st->cell[i].vx = 0.0; + st->cell[i].vy = 0.0; + st->cell[i].age = random_max( 0x0f ); + st->cell[i].min_dist = 500.0; + st->cell[i].energy = random_interval( 5, 5+0x3f ); + st->cell[i].rotation = ((double)random()/(double)RAND_MAX)*360.0; + st->cell[i].radius = st->radius; + st->cell[i].growth = 1.0; + } +} + +/* all this is rather expensive :( */ +static void tick( State *st ) +{ + int new_num_cells, num_cells=0; + int b, j; + int x, y, w4=st->width/4, h4=st->height/4, offset; + double min_dist; + int min_index; + int num_living = 0; + const double check_dist = 0.75*st->move_dist; + const double grow_dist = 0.75*st->radius; + const double adult_radius = st->radius; + + /* find number of cells capable of division + and count living cells + */ + for (b=0; bnum_cells; ++b) { + if (st->cell[b].energy > 0) num_living++; + if (can_divide( st, &st->cell[b] )) num_cells++; + } + new_num_cells = st->num_cells + num_cells; + + /* end of simulation ? */ + if (0 == num_living || new_num_cells >= st->max_cells) { + if (st->pause_counter > 0) st->pause_counter--; + if (st->pause_counter > 0) return; + create_cells( st ); + st->pause_counter = st->pause; + } else if (num_cells) { /* any fertile candidates ? */ + for (b=0, j=st->num_cells; bnum_cells; ++b) { + if (can_divide( st, &st->cell[b] )) { + st->cell[b].vx = random_interval( -50, 50 ) * 0.01; + st->cell[b].vy = random_interval( -50, 50 ) * 0.01; + st->cell[b].age = random_max( 0x0f ); + /* half energy for both plus some bonus for forking */ + st->cell[b].energy = + st->cell[b].energy/2 + random_max( 0x0f ); + /* forking makes me shrink */ + st->cell[b].growth = 0.995; + + /* this one initially goes into the oposite direction */ + st->cell[j].vx = -st->cell[b].vx; + st->cell[j].vy = -st->cell[b].vy; + /* same center */ + st->cell[j].x = st->cell[b].x; + st->cell[j].y = st->cell[b].y; + st->cell[j].age = random_max( 0x0f ); + st->cell[j].energy = (st->cell[b].energy); + st->cell[j].rotation = + ((double)random()/(double)RAND_MAX)*360.0; + st->cell[j].growth = st->cell[b].growth; + st->cell[j].radius = st->cell[b].radius; + ++j; + } else { + st->cell[b].vx = 0.0; + st->cell[b].vy = 0.0; + } + } + + st->num_cells = new_num_cells; + } + + /* for each find a direction to escape */ + if (st->num_cells > 1) { + for (b=0; bnum_cells; ++b) { + if (st->cell[b].energy > 0) { + double vx; + double vy; + double len; + + /* grow or shrink */ + st->cell[b].radius *= st->cell[b].growth; + /* find closest neighbour */ + min_dist = 100000.0; + min_index = 0; + for (j=0; jnum_cells; ++j) { + if (j!=b) { + const double dx = st->cell[b].x - st->cell[j].x; + const double dy = st->cell[b].y - st->cell[j].y; + + if (fabs(dx) < check_dist || fabs(dy) < check_dist) { + const double dist = dx*dx+dy*dy; + /*const double dist = sqrt( dx*dx+dy*dy );*/ + if (distcell[b].x - st->cell[min_index].x; + vy = st->cell[b].y - st->cell[min_index].y; + len = sqrt( vx*vx + vy*vy ); + if (len > 0.0001) { + st->cell[b].vx = vx/len; + st->cell[b].vy = vy/len; + } + st->cell[b].min_dist = len; + /* if not adult (radius too small) */ + if (st->cell[b].radius < adult_radius) { + /* if too small 60% stop shrinking */ + if (st->cell[b].radius < adult_radius * 0.6) { + st->cell[b].growth = 1.0; + } + /* at safe distance we start growing again */ + if (len > grow_dist) { + if (st->cell[b].energy > 30) { + st->cell[b].growth = 1.005; + } + } + } else { /* else keep size */ + st->cell[b].growth = 1.0; + } + } + } + } else { + st->cell[0].min_dist = 2*st->move_dist; + } + + /* now move em, snack and burn energy */ + for (b=0; bnum_cells; ++b) { + /* if still alive */ + if (st->cell[b].energy > 0) { + /* agility depends on amount of energy */ + double fac = (double)st->cell[b].energy / 50.0; + if (fac < 0.0) fac = 0.0; + if (fac > 1.0) fac = 1.0; + + st->cell[b].x += fac*(2.0 - + (4.0*(double)random() / (double)RAND_MAX) + + st->cell[b].vx); + st->cell[b].y += fac*(2.0 - + (4.0*(double)random() / (double)RAND_MAX) + + st->cell[b].vy); + + /* get older and burn energy */ + if (st->cell[b].energy > 0) { + st->cell[b].age++; + st->cell[b].energy--; + } + + /* have a snack */ + x = ((int)st->cell[b].x)/4; + if (x<0) x=0; + if (x>=w4) x = w4-1; + y = ((int)st->cell[b].y)/4; + if (y<0) y=0; + if (y>=h4) y = h4-1; + + offset = x+y*w4; + + /* don't eat if already satisfied */ + if (st->cell[b].energy < 100 && + st->food[offset] > 0) { + st->food[offset]--; + st->cell[b].energy++; + /* if you are hungry, eat more */ + if (st->cell[b].energy < 50 && + st->food[offset] > 0) { + st->food[offset]--; + st->cell[b].energy++; + } + } + } + } +} + +ENTRYPOINT void +reshape_glcells( ModeInfo *mi, int width, int height ) +{ + State *st = &sstate[MI_SCREEN(mi)]; +# ifdef HAVE_MOBILE + int rot = current_device_rotation(); +# endif + st->height = height; + st->width = width; +# ifdef HAVE_MOBILE + st->screen_scale = (double)(width < height ? width : height) / 1600.0; +# else + st->screen_scale = (double)width / 1600.0; +# endif + + st->radius = s_radius; + if (st->radius < 5) st->radius = 5; + if (st->radius > 200) st->radius = 200; + st->radius *= st->screen_scale; + + st->move_dist = s_min_dist; + if (st->move_dist < 1.0) st->move_dist = 1.0; + if (st->move_dist > 3.0) st->move_dist = 3.0; + st->move_dist *= st->radius; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho( 0, width, height, 0, 200, 0 ); +# ifdef HAVE_MOBILE + glRotatef (rot, 0, 0, 1); +# endif + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + if (st->food) free( st->food ); + st->food = (int *)malloc( ((width*height)/16)*sizeof(int) ); + /* create_cells( st );*/ + +# ifdef HAVE_MOBILE + glTranslatef (st->width/2, st->height/2, 0); + if (rot == 90 || rot == -90 || rot == 270 || rot == -270) + st->width = height, st->height = width; + glRotatef (rot, 0, 0, 1); + if (st->wire) glScalef(0.8, 0.8, 1); + glTranslatef (-st->width/2, -st->height/2, 0); +# endif +} + +ENTRYPOINT void +init_glcells( ModeInfo *mi ) +{ + int i, divisions; + State *st=0; + + MI_INIT(mi, sstate); + st = &sstate[MI_SCREEN(mi)]; + + st->glx_context = init_GL(mi); + st->cell = 0; + st->num_cells = 0; + st->wire = MI_IS_WIREFRAME(mi); + + /* get settings */ + st->max_cells = s_maxcells;; + if (st->max_cells < 50) st->max_cells = 50; + if (st->max_cells > 10000) st->max_cells = 10000; + + st->pause = s_pause; + if (st->pause < 0) st->pause = 0; + if (st->pause > 400) st->pause = 400; + st->pause_counter = st->pause; + + st->radius = s_radius; + if (st->radius < 5) st->radius = 5; + if (st->radius > 200) st->radius = 200; + + divisions = s_quality; + if (divisions < 0) divisions = 0; + if (divisions > 5) divisions = 5; + + st->num_seeds = s_seeds; + if (st->num_seeds < 1) st->num_seeds = 1; + if (st->num_seeds > 16) st->num_seeds = 16; + + st->minfood = s_minfood; + if (st->minfood < 0) st->minfood = 0; + if (st->minfood > 1000) st->minfood = 1000; + + st->maxfood = s_maxfood; + if (st->maxfood < 0) st->maxfood = 0; + if (st->maxfood > 1000) st->maxfood = 1000; + + if (st->maxfood < st->minfood) st->maxfood = st->minfood+1; + + st->keep_old_cells = s_keepold; + + st->divide_age = s_divideage; + if (st->divide_age < 1) st->divide_age = 1; + if (st->divide_age > 1000) st->divide_age = 1000; + + st->move_dist = s_min_dist; + if (st->move_dist < 1.0) st->move_dist = 1.0; + if (st->move_dist > 3.0) st->move_dist = 3.0; + st->move_dist *= st->radius; + + for (i=0; icell_list[i] = -1; + st->nucleus_list = -1; + st->food = 0; + + st->sphere = create_sphere( st, divisions ); + st->disturbance = + (double *) malloc( st->sphere->num_vertex*sizeof(double) ); + for (i=0; isphere->num_vertex; ++i) { + st->disturbance[i] = + 0.05-((double)random()/(double)RAND_MAX*0.1); + } + + create_nucleus_texture( st ); + + reshape_glcells (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); +} + +ENTRYPOINT void +draw_glcells( ModeInfo *mi ) +{ + State *st = &sstate[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!st->glx_context) return; + + glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi), + *(st->glx_context) ); + + mi->polygon_count = render( st ); + + if (mi->fps_p) do_fps (mi); + + glFinish(); + glXSwapBuffers( dpy, window ); +} + +ENTRYPOINT void +free_glcells( ModeInfo *mi ) +{ + int i; + State *st = &sstate[MI_SCREEN(mi)]; + + if (st->glx_context) { + glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi), + *(st->glx_context) ); + + /* nuke everything before exit */ + if (st->sphere) free_Object( st->sphere ); + if (st->food) free( st->food ); + for (i=0; icell_list[i] != -1) { + glDeleteLists( st->cell_list[i], 1 ); + } + } + if (st->cell) free( st->cell ); + free( st->disturbance ); + glDeleteTextures( 1, &st->texture_name ); + free( st->texture ); + } +} + +XSCREENSAVER_MODULE( "GLCells", glcells ) diff --git a/hacks/glx/glcells.man b/hacks/glx/glcells.man new file mode 100644 index 0000000..6c1e7e9 --- /dev/null +++ b/hacks/glx/glcells.man @@ -0,0 +1,97 @@ +.TH XScreenSaver 1 "June 2007" +.SH NAME +glcells \- growing cells graphics hack +.SH SYNOPSIS +.B glcells +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] +[\-delay \fInum\fP] [\-pause \fInum\fP] [\-maxcells \fInum\fP] +[\-radius \fInum\fP] [\-seeds \fInum\fP] [\-quality \fInum\fP] +[\-minfood \fInum\fP] [\-maxfood \fInum\fP] [\-divideage \fInum\fP] +[\-mindist \fInum\fP] +[\-keepold] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIglcells\fP program draws cells that divide exponentially, eat and eventually die. +.SH OPTIONS +.I glcells +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-pause \fInum\fP\fP +Specifies the pause at the end of the animation (all cells dead or maximum amount of cells reached). Unit is in frames, default 20. +.TP 8 +.B \-maxcells \fInum\fP\fP +Specifies the maximum number of cells on screen (dead cells also count, even if invisible). Default is 800. +.TP 8 +.B \-radius \fInum\fP\fP +Specifies the radius of the cells. Default is 40. +.TP 8 +.B \-seeds \fInum\fP\fP +Specifies the number of cells when animation starts. Default is 1. +.TP 8 +.B \-quality \fInum\fP\fP +Specifies subdivision quality of the spheres used to draw the cells [0...5]. Default is 3. +.TP 8 +.B \-minfood \fInum\fP\fP +Food is ditributed randomly on the screen (Yes, the cells need to eat). This parameter specifies the +minimum amount of food per pixel. Default is 5. +.TP 8 +.B \-maxfood \fInum\fP\fP +Food is ditributed randomly on the screen (Yes, the cells need to eat). This parameter specifies the +maximum amount of food per pixel. Default is 20. +.TP 8 +.B \-divideage \fInum\fP\fP +Specifies the minimum age in frames a cell needs to have before beeing able to divide. Default is 20 +.TP 8 +.B \-mindist \fInum\fP\fP +Specifies the minimum distance between cells. Default 1.4 +.TP 8 +.B \-delay \fInum\fP +How long to pause between frames. Default is 20000, or 0.02 second. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-wireframe +Draw wireframe only. +.TP 8 +.B \-keepold +Dead cells stay on screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1), +.SH COPYRIGHT +Copyright \(co 2007 by Matthias Toussaint. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Matthias Toussaint , 17-Jun-2007, http://www.mtoussaint.de/bits.html. + diff --git a/hacks/glx/gleidescope.c b/hacks/glx/gleidescope.c new file mode 100644 index 0000000..ec33388 --- /dev/null +++ b/hacks/glx/gleidescope.c @@ -0,0 +1,1624 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* vim: set ai ts=4 sw=4: */ + +#if 0 +/*static const char sccsid[] = "@(#)gleidescope.c 1.0 03/06/27 xlockmore";*/ +#endif + +/* enable -grab switch for animations */ +#undef GRAB + +#undef DISPLAY_TEXTURE + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * + * 20030627 1.0 acd First Release. + * Texture loading code from 'glplanet' + * by Jamie Zawinski + * 20030810 1.1 acd Added size flag. + * Now grabs screen / video / picture + * (uses code from 'glslideshow' by + * Mike Oliphant, Ben Buxton, Jamie Zawinski). + * Added -duration. + * Added mouse code. + * Added fade code (also from glslideshow). + * 20031013 1.2 acd Migrated to compile without warnings under + * xscreensaver 4.13. + * 20031023 1.3 acd Better code to limit twisting speeds. + * Tweaked initial rotation values. + * Move, Rotate, Zoom now chosen at random if + * no preference is given. + * Made grid slightly bigger so you can't see + * the edge when zooming and moving. + * 20061226 1.4 acd Now uses GL Display Lists. + * 20070318 1.5 acd Generates textures. + * Fixed texture size problem (and introduced another). + * 20070412 1.6 acd Textures now have independant sizes. + * 20070413 1.7 acd Added Lissajous movement pattern. + * 20070414 1.8 acd Added corners movement pattern. + * 20080319 1.9 acd Changes to arguments for saner gleidescope.xml. + * + * TODO + * generate textures myself - render random shapes to 256x256 texture. (done) + * lower res for checks and random - use 256 and 4x4 or 8x8 pixels. (disabled for now) + * gnome-saver doesn't let you specify source directory so add that to this. + * image loading routine is too slow - rotation grinds to a halt - stop using it. (better in version 5) + * image loading also looks bad for non-square images - edges are black. (fixed) + * possible to see edge of the world on widescreen terminals - use larger grid and hidden hex removal? + * fading textures may have different max_tx - use two sets. (done) + * choice of movement patterns. (3 implemented, chooseable at compile time) + * look into rangle and tangle. + */ + +/* +**---------------------------------------------------------------------------- +** Defines +**---------------------------------------------------------------------------- +*/ + +#ifdef STANDALONE +# define DEFAULTS \ + "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*size: 0 \n" \ + "*useSHM: True \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_gleidescope 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#include "colors.h" +#include "ximage-loader.h" +#include "grab-ximage.h" + +#ifdef GRAB +void grab_frame(Display *display, Window window); +#endif + +/* acd TODO should all these be in gleidestruct? */ +/* they can't be, because of the idiotic way the xlockmore "argtype vars" + interface works. -jwz */ +#ifdef GRAB +static Bool grab; /* grab images */ +#endif +static Bool move; /* moving camera */ +static Bool nomove; /* no moving camera */ +static Bool rotate; /* rotate in place */ +static Bool norotate; /* no rotate in place */ +static Bool zoom; /* zooming camera */ +static Bool nozoom; /* no zooming camera */ +static char *image_str; /* name of texture to load */ +static int duration; /* length of time to display grabbed image */ + +#define MAX_CAM_SPEED 1.0 +#define MAX_ANGLE_VEL 1.0 +#define INITIAL_ANGLE_VEL 0.2 +#define INITIAL_ANGLE_ACC 0.001 +#define TWISTING_PROBABILITY 1000 /* 1 in ... of change of acceleration */ + +#define RADIANS (M_PI / 180) +#define ANGLE_120 (M_PI * 2 / 3) +#define ANGLE_240 (M_PI * 4 / 3) + +#define DEF_GRAB "False" +#define DEF_MOVE "False" +#define DEF_NOMOVE "False" +#define DEF_ROTATE "False" +#define DEF_NOROTATE "False" +#define DEF_ZOOM "False" +#define DEF_NOZOOM "False" +#define DEF_IMAGE "DEFAULT" +#define DEF_DURATION "30" + + +static XrmOptionDescRec opts[] = +{ +#ifdef GRAB + {"-grab", ".gleidescope.grab", XrmoptionNoArg, "true"}, +#endif + {"-move", ".gleidescope.move", XrmoptionNoArg, "true"}, + {"-no-move", ".gleidescope.nomove", XrmoptionNoArg, "true"}, + {"-rotate", ".gleidescope.rotate", XrmoptionNoArg, "true"}, + {"-no-rotate", ".gleidescope.norotate", XrmoptionNoArg, "true"}, + {"-zoom", ".gleidescope.zoom", XrmoptionNoArg, "true"}, + {"-no-zoom", ".gleidescope.nozoom", XrmoptionNoArg, "true"}, + {"-image", ".gleidescope.image", XrmoptionSepArg, "DEFAULT"}, + {"-duration", ".gleidescope.duration", XrmoptionSepArg, "30"}, +}; + + +static argtype vars[] = { +#ifdef GRAB + {&grab, "grab", "Grab", DEF_GRAB, t_Bool}, +#endif + {&move, "move", "Move", DEF_MOVE, t_Bool}, + {&nomove, "nomove", "noMove", DEF_NOMOVE, t_Bool}, + {&rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool}, + {&norotate, "norotate", "noRotate", DEF_NOROTATE, t_Bool}, + {&zoom, "zoom", "Zoom", DEF_ZOOM, t_Bool}, + {&nozoom, "nozoom", "noZoom", DEF_NOZOOM, t_Bool}, + {&image_str, "image", "Image", DEF_IMAGE, t_String}, + {&duration, "duration", "Duration", DEF_DURATION, t_Int}, +}; + +static OptionStruct desc[] = { +#ifdef GRAB + {"-grab", "grab images to create animation"}, +#endif + {"-move", "camera will move"}, + {"-no-move", "camera won't move"}, + {"-rotate", "camera will rotate"}, + {"-no-rotate", "camera won't rotate"}, + {"-zoom", "camera will zoom"}, + {"-no-zoom", "camera won't zoom"}, + {"-image", "xpm / xbm image file to use for texture"}, + {"-duration", "length of time texture will be used"}, +}; + +ENTRYPOINT ModeSpecOpt gleidescope_opts = { + sizeof opts / sizeof opts[0], opts, + sizeof vars / sizeof vars[0], vars, + desc +}; + +#ifdef USE_MODULES +ModStruct gleidescope_description = { + "gleidescope", "init_gleidescope", "draw_gleidescope", NULL, + "draw_gleidescope", "init_gleidescope", "free_gleidescope", + &gleidescope_opts, 1000, 1, 2, 1, 4, 1.0, "", + "GL Kaleidescope", 0, NULL}; +#endif + +/* +**----------------------------------------------------------------------------- +** Typedefs +**----------------------------------------------------------------------------- +*/ + +typedef struct hex_s { + GLfloat x, y, z; /* position */ +} hex_t; + +typedef struct { + GLfloat x; + GLfloat y; + GLfloat z; +} vectorf; + +typedef struct { + GLfloat x; + GLfloat y; +} vector2f; + +typedef struct { + GLuint id; /* opengl texture id */ + GLfloat width, height; /* texture width and height */ + GLfloat min_tx, min_ty; /* minimum texture sizes */ + GLfloat max_tx, max_ty; /* maximum texture sizes */ + time_t start_time; + Bool button_down_p; + Bool mipmap_p; + Bool waiting_for_image_p; + /* r_phase is for triangle rotation speed */ + GLfloat x_period, y_period, r_period; + GLfloat x_phase, y_phase, r_phase; +} texture; + +#define MAX_FADE 500 /* number of fade cycles */ + +typedef struct { + float cam_x_speed, cam_z_speed, cam_y_speed; + int cam_x_phase, cam_z_phase, cam_y_phase; + float tic; + GLXContext *glx_context; + Window window; + texture textures[2]; /* texture handles */ + GLuint visible; /* index for current texture */ + GLint fade; + time_t start_time; + Bool button_down_p; + + int size; + int list; + + float tangle; /* texture angle (degrees) */ + float tangle_vel; /* texture velocity */ + float tangle_acc; /* texture acceleration */ + + float rangle; /* rotate angle */ + float rangle_vel; /* rotate velocity */ + float rangle_acc; /* rotate acceleration */ + + /* mouse */ + int xstart; + int ystart; + double xmouse; + double ymouse; + + Bool mipmap_p; + Bool waiting_for_image_p; + +} gleidestruct; + +#define frandrange(x, y) (x + frand(y - x)) + +#define XOFFSET (0.8660254f) /* sin 60' */ +#define YOFFSET (1.5000000f) /* cos 60' + 1 */ + +#if 0 + +#define SIZE 3 + +/* generates a grid with edges of given size */ +/* acd TODO - replace hex[] with this and allow size and distance as parameters */ + +int +generate_grid(int size) + + int i, x, y; + + gp->size--; + + i = gp->size; + for (y = -size ; y <= size ; y++) { + for (x = -i ; x <= i ; x += 2) { + printf("{XOFFSET * %d, YOFFSET * %d, 0},\n", x, y); + } + printf("\n"); + if (y < 0) { + i++; + } else { + i--; + } + } + return 0; +} +#endif + +/* acd - this is terrible - 120+ hexes */ +static const hex_t hex[] = { + /* edges of size 7 */ + /* number of hexagons required to cover screen depends on camera distance */ + /* at a distance of 10 this is just about enough. */ + {XOFFSET * -6, YOFFSET * -6, 0}, + {XOFFSET * -4, YOFFSET * -6, 0}, + {XOFFSET * -2, YOFFSET * -6, 0}, + {XOFFSET * 0, YOFFSET * -6, 0}, + {XOFFSET * 2, YOFFSET * -6, 0}, + {XOFFSET * 4, YOFFSET * -6, 0}, + {XOFFSET * 6, YOFFSET * -6, 0}, + + {XOFFSET * -7, YOFFSET * -5, 0}, + {XOFFSET * -5, YOFFSET * -5, 0}, + {XOFFSET * -3, YOFFSET * -5, 0}, + {XOFFSET * -1, YOFFSET * -5, 0}, + {XOFFSET * 1, YOFFSET * -5, 0}, + {XOFFSET * 3, YOFFSET * -5, 0}, + {XOFFSET * 5, YOFFSET * -5, 0}, + {XOFFSET * 7, YOFFSET * -5, 0}, + + {XOFFSET * -8, YOFFSET * -4, 0}, + {XOFFSET * -6, YOFFSET * -4, 0}, + {XOFFSET * -4, YOFFSET * -4, 0}, + {XOFFSET * -2, YOFFSET * -4, 0}, + {XOFFSET * 0, YOFFSET * -4, 0}, + {XOFFSET * 2, YOFFSET * -4, 0}, + {XOFFSET * 4, YOFFSET * -4, 0}, + {XOFFSET * 6, YOFFSET * -4, 0}, + {XOFFSET * 8, YOFFSET * -4, 0}, + + {XOFFSET * -9, YOFFSET * -3, 0}, + {XOFFSET * -7, YOFFSET * -3, 0}, + {XOFFSET * -5, YOFFSET * -3, 0}, + {XOFFSET * -3, YOFFSET * -3, 0}, + {XOFFSET * -1, YOFFSET * -3, 0}, + {XOFFSET * 1, YOFFSET * -3, 0}, + {XOFFSET * 3, YOFFSET * -3, 0}, + {XOFFSET * 5, YOFFSET * -3, 0}, + {XOFFSET * 7, YOFFSET * -3, 0}, + {XOFFSET * 9, YOFFSET * -3, 0}, + + {XOFFSET * -10, YOFFSET * -2, 0}, + {XOFFSET * -8, YOFFSET * -2, 0}, + {XOFFSET * -6, YOFFSET * -2, 0}, + {XOFFSET * -4, YOFFSET * -2, 0}, + {XOFFSET * -2, YOFFSET * -2, 0}, + {XOFFSET * 0, YOFFSET * -2, 0}, + {XOFFSET * 2, YOFFSET * -2, 0}, + {XOFFSET * 4, YOFFSET * -2, 0}, + {XOFFSET * 6, YOFFSET * -2, 0}, + {XOFFSET * 8, YOFFSET * -2, 0}, + {XOFFSET * 10, YOFFSET * -2, 0}, + + {XOFFSET * -11, YOFFSET * -1, 0}, + {XOFFSET * -9, YOFFSET * -1, 0}, + {XOFFSET * -7, YOFFSET * -1, 0}, + {XOFFSET * -5, YOFFSET * -1, 0}, + {XOFFSET * -3, YOFFSET * -1, 0}, + {XOFFSET * -1, YOFFSET * -1, 0}, + {XOFFSET * 1, YOFFSET * -1, 0}, + {XOFFSET * 3, YOFFSET * -1, 0}, + {XOFFSET * 5, YOFFSET * -1, 0}, + {XOFFSET * 7, YOFFSET * -1, 0}, + {XOFFSET * 9, YOFFSET * -1, 0}, + {XOFFSET * 11, YOFFSET * -1, 0}, + + {XOFFSET * -12, YOFFSET * 0, 0}, + {XOFFSET * -10, YOFFSET * 0, 0}, + {XOFFSET * -8, YOFFSET * 0, 0}, + {XOFFSET * -6, YOFFSET * 0, 0}, + {XOFFSET * -4, YOFFSET * 0, 0}, + {XOFFSET * -2, YOFFSET * 0, 0}, + {XOFFSET * 0, YOFFSET * 0, 0}, + {XOFFSET * 2, YOFFSET * 0, 0}, + {XOFFSET * 4, YOFFSET * 0, 0}, + {XOFFSET * 6, YOFFSET * 0, 0}, + {XOFFSET * 8, YOFFSET * 0, 0}, + {XOFFSET * 10, YOFFSET * 0, 0}, + {XOFFSET * 12, YOFFSET * 0, 0}, + + {XOFFSET * -11, YOFFSET * 1, 0}, + {XOFFSET * -9, YOFFSET * 1, 0}, + {XOFFSET * -7, YOFFSET * 1, 0}, + {XOFFSET * -5, YOFFSET * 1, 0}, + {XOFFSET * -3, YOFFSET * 1, 0}, + {XOFFSET * -1, YOFFSET * 1, 0}, + {XOFFSET * 1, YOFFSET * 1, 0}, + {XOFFSET * 3, YOFFSET * 1, 0}, + {XOFFSET * 5, YOFFSET * 1, 0}, + {XOFFSET * 7, YOFFSET * 1, 0}, + {XOFFSET * 9, YOFFSET * 1, 0}, + {XOFFSET * 11, YOFFSET * 1, 0}, + + {XOFFSET * -10, YOFFSET * 2, 0}, + {XOFFSET * -8, YOFFSET * 2, 0}, + {XOFFSET * -6, YOFFSET * 2, 0}, + {XOFFSET * -4, YOFFSET * 2, 0}, + {XOFFSET * -2, YOFFSET * 2, 0}, + {XOFFSET * 0, YOFFSET * 2, 0}, + {XOFFSET * 2, YOFFSET * 2, 0}, + {XOFFSET * 4, YOFFSET * 2, 0}, + {XOFFSET * 6, YOFFSET * 2, 0}, + {XOFFSET * 8, YOFFSET * 2, 0}, + {XOFFSET * 10, YOFFSET * 2, 0}, + + {XOFFSET * -9, YOFFSET * 3, 0}, + {XOFFSET * -7, YOFFSET * 3, 0}, + {XOFFSET * -5, YOFFSET * 3, 0}, + {XOFFSET * -3, YOFFSET * 3, 0}, + {XOFFSET * -1, YOFFSET * 3, 0}, + {XOFFSET * 1, YOFFSET * 3, 0}, + {XOFFSET * 3, YOFFSET * 3, 0}, + {XOFFSET * 5, YOFFSET * 3, 0}, + {XOFFSET * 7, YOFFSET * 3, 0}, + {XOFFSET * 9, YOFFSET * 3, 0}, + + {XOFFSET * -8, YOFFSET * 4, 0}, + {XOFFSET * -6, YOFFSET * 4, 0}, + {XOFFSET * -4, YOFFSET * 4, 0}, + {XOFFSET * -2, YOFFSET * 4, 0}, + {XOFFSET * 0, YOFFSET * 4, 0}, + {XOFFSET * 2, YOFFSET * 4, 0}, + {XOFFSET * 4, YOFFSET * 4, 0}, + {XOFFSET * 6, YOFFSET * 4, 0}, + {XOFFSET * 8, YOFFSET * 4, 0}, + + {XOFFSET * -7, YOFFSET * 5, 0}, + {XOFFSET * -5, YOFFSET * 5, 0}, + {XOFFSET * -3, YOFFSET * 5, 0}, + {XOFFSET * -1, YOFFSET * 5, 0}, + {XOFFSET * 1, YOFFSET * 5, 0}, + {XOFFSET * 3, YOFFSET * 5, 0}, + {XOFFSET * 5, YOFFSET * 5, 0}, + {XOFFSET * 7, YOFFSET * 5, 0}, + + {XOFFSET * -6, YOFFSET * 6, 0}, + {XOFFSET * -4, YOFFSET * 6, 0}, + {XOFFSET * -2, YOFFSET * 6, 0}, + {XOFFSET * 0, YOFFSET * 6, 0}, + {XOFFSET * 2, YOFFSET * 6, 0}, + {XOFFSET * 4, YOFFSET * 6, 0}, + {XOFFSET * 6, YOFFSET * 6, 0}, +}; + +/* +**---------------------------------------------------------------------------- +** Local Variables +**---------------------------------------------------------------------------- +*/ + +static gleidestruct *gleidescope = NULL; + +#if 0 +/* + *load defaults in config structure + */ +static void setdefaultconfig(void) +{ +#ifdef GRAB + grab = False; +#endif + move = False; + rotate = False; + zoom = False; + image = NULL; +} +#endif + +ENTRYPOINT Bool +gleidescope_handle_event(ModeInfo *mi, XEvent *event) +{ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + + /* + printf("event:%d\n", event->xany.type); + printf("button:%d\n", event->xbutton.button); + */ + if (event->xany.type == ButtonPress) + { + if (event->xbutton.button == Button1 || + event->xbutton.button == Button3) + { + /* store initial values of mouse */ + gp->xstart = event->xbutton.x; + gp->ystart = event->xbutton.y; + + /* button is down */ + gp->button_down_p = True; + return True; + } +#if 0 /* TODO */ + else if (event->xbutton.button == Button4) + { + /* zoom in */ + return True; + } + else if (event->xbutton.button == Button5) + { + /* zoom out */ + return True; + } +#endif + } else if (event->xany.type == ButtonRelease) + { + if (event->xbutton.button == Button1 || + event->xbutton.button == Button3) + { + /* button is up */ + gp->button_down_p = False; + return True; + } + } else if (event->xany.type == MotionNotify) + { + if (gp->button_down_p) + { + /* update mouse position */ + gp->xmouse += (double)(event->xmotion.x - gp->xstart) / MI_WIDTH(mi); + gp->ymouse += (double)(event->xmotion.y - gp->ystart) / MI_HEIGHT(mi); + gp->xstart = event->xmotion.x; + gp->ystart = event->xmotion.y; + + return True; + } + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + gp->start_time = -1; + gp->fade = 0; + return True; + } + + return False; +} + + +static void +image_loaded_cb (const char *filename, XRectangle *geometry, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + texture *tp = (texture *) closure; + +#if 0 + gp->max_tx = (GLfloat) image_width / texture_width; + gp->max_ty = (GLfloat) image_height / texture_height; +#endif + + /* new - taken from flipscreen */ + tp->width = texture_width; + tp->height = texture_height; + tp->min_tx = (GLfloat) geometry->x / tp->width; + tp->min_ty = (GLfloat) geometry->y / tp->height; + tp->max_tx = (GLfloat) (geometry->x + geometry->width) / tp->width; + tp->max_ty = (GLfloat) (geometry->y + geometry->height) / tp->height; + +#ifdef DEBUG + printf("Image w,h: (%d, %d)\n", image_width, image_height); + printf("Texture w,h: (%d, %d)\n", texture_width, texture_height); + printf("Geom x,y: (%d, %d)\n", geometry->x, geometry->y); + printf("Geom w,h: (%d, %d)\n", geometry->width, geometry->height); + printf("Max Tx,Ty: (%f, %f)\n", tp->max_tx, tp->max_ty); +#endif + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + (tp->mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); + + tp->waiting_for_image_p = False; + tp->start_time = time ((time_t *) 0); +} + +static void +getSnapshot(ModeInfo *mi, texture *texture) +{ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + +#ifdef DEBUG + printf("getSnapshot"); +#endif + + if (MI_IS_WIREFRAME(mi)) + return; + + gp->mipmap_p = True; + load_texture_async (mi->xgwa.screen, mi->window, + *gp->glx_context, 0, 0, gp->mipmap_p, + texture->id, image_loaded_cb, texture); + texture->start_time = time((time_t *)0); +} + +#define TEXTURE_SIZE 256 + +static void +plot(unsigned char *buffer, int x, int y, int r, int g, int b, int a) { + int c; + if (x < 0 || x >= TEXTURE_SIZE || y < 0 || y >= TEXTURE_SIZE) { + return; + } + c = ((x * TEXTURE_SIZE) + y) * 4; + /*printf("(%d,%d)[%d]\n", x, y, c);*/ + buffer[c + 0] = r; + buffer[c + 1] = g; + buffer[c + 2] = b; + buffer[c + 3] = a; +} + +#if 0 +static void +plot2(unsigned char *buffer, int x, int y, int r, int g, int b, int a) { + int c; + if (x < 0 || x >= TEXTURE_SIZE || y < 0 || y >= TEXTURE_SIZE) { + return; + } + c = ((x * TEXTURE_SIZE) + y) * 4; + /*printf("(%d,%d)[%d]\n", x, y, c);*/ + buffer[c + 0] = r; + buffer[c + 1] = g; + buffer[c + 2] = b; + buffer[c + 3] = a; + + if (y + 1 < TEXTURE_SIZE) { + buffer[c + 4] = r; + buffer[c + 5] = g; + buffer[c + 6] = b; + buffer[c + 7] = a; + } + + if (x + 1 < TEXTURE_SIZE) { + c += (TEXTURE_SIZE * 4); + buffer[c + 0] = r; + buffer[c + 1] = g; + buffer[c + 2] = b; + buffer[c + 3] = a; + if (y + 1 < TEXTURE_SIZE) { + buffer[c + 4] = r; + buffer[c + 5] = g; + buffer[c + 6] = b; + buffer[c + 7] = a; + } + } +} +#endif + +/* draw geometric shapes to texture */ +/* modifies passed in buffer */ +static void +draw_shapes (unsigned char *buffer) { + int a = 0xff; + int x, y, w, h; + int i, j; + int s; + float left, right; + + for (i = 0 ; i < TEXTURE_SIZE * TEXTURE_SIZE * 4 ; i += 4) { + buffer[i + 0] = 0x00; + buffer[i + 1] = 0x00; + buffer[i + 2] = 0x00; + buffer[i + 3] = 0xff; + } + + for (s = 0 ; s < 25 ; s++) { + int shape = random() % 3; + + /* 8 bits */ + int r = (random() & 0xff); + int g = (random() & 0xff); + int b = (random() & 0xff); + + switch (shape) { + case 0: + /* rectangle */ + x = (random() % TEXTURE_SIZE) - (TEXTURE_SIZE / 4); /* top left */ + y = (random() % TEXTURE_SIZE) - (TEXTURE_SIZE / 4); + w = 10 + random() % (TEXTURE_SIZE / 4); /* size */ + h = 10 + random() % (TEXTURE_SIZE / 4); +#ifdef DEBUG + printf("Rectangle: (%d, %d)(%d, %d)\n", x, y, w, h); +#endif + if (x < 0) { + x = 0; + } + if (y < 0) { + y = 0; + } + for (i = x ; i < x + w && i < TEXTURE_SIZE; i++) { + for (j = y ; j < y + h && j < TEXTURE_SIZE; j++) { + plot(buffer, i, j, r, g, b, a); + } + } + break; + + case 1: + /* circle */ + x = random() % TEXTURE_SIZE; /* centre */ + y = random() % TEXTURE_SIZE; + h = 10 + random() % (TEXTURE_SIZE / 8); /* radius */ +#ifdef DEBUG + printf("Circle: %d, %d, %d\n", x, y, h); +#endif + for (i = 0 ; i < h ; i++) { + int xdist = i * i; + for (j = 0 ; j < h ; j++) { + int ydist = j * j; + /* + printf("xdist: %d\n", xdist); + printf("ydist: %d\n", ydist); + printf("radius: %d\n", h * h); + */ + if ((xdist + ydist) < (h * h)) { + plot(buffer, x + i, y + j, r, b, g, a); + /* check we haven't already done these */ + if (j != 0) { + plot(buffer, x + i, y - j, r, b, g, a); + } + if (i != 0) { + plot(buffer, x - i, y + j, r, b, g, a); + if (j != 0) { + plot(buffer, x - i, y - j, r, b, g, a); + } + } + } + } + } + break; + + case 2: + /* triangle */ + x = random() % TEXTURE_SIZE; /* top */ + y = random() % TEXTURE_SIZE; + h = 10 + random() % (TEXTURE_SIZE / 4); /* height */ +#ifdef DEBUG + printf("Triangle: %d, %d, %d\n", x, y, h); +#endif + left = x; + right = x; + for (i = 0 ; i < h ; i++) { + for (j = left ; j < right ; j++) { + plot(buffer, j, y + i, r, g, b, a); + } + left -= .5; + right += .5; + } + break; + } + } +} + +static void +setup_random_texture (ModeInfo *mi, texture *texture) +{ + int width = 0, height = 0; + char buf[1024]; + unsigned char *my_data = NULL; +#if 0 + int i, j, c; + int style; + int r0, g0, b0, a0, r1, g1, b1, a1; +#endif + +#ifdef DEBUG + printf("RandomTexture\n"); +#endif + + /* use this texture */ + glBindTexture(GL_TEXTURE_2D, texture->id); + + clear_gl_error(); + + /* + * code for various generated patterns - noise, stripes, checks etc. + * random geometric shapes looked the best. + */ + +#if 0 + style = random() & 0x3; + r0 = random() & 0xff; + g0 = random() & 0xff; + b0 = random() & 0xff; + a0 = 0xff; + r1 = random() & 0xff; + g1 = random() & 0xff; + b1 = random() & 0xff; + a1 = 0xff; + + switch (style) { + case 0: /* random */ + printf("Random0\n"); + height = width = TEXTURE_SIZE; + my_data = (void *)malloc(width * height * 4); + for (i = 0 ; i < width ; i += 2) { + for (j = 0 ; j < height ; j += 2) { + r0 = random() & 0xff; + g0 = random() & 0xff; + b0 = random() & 0xff; + a0 = 0xff; + plot2(my_data, i, j, r0, g0, b0, a0); + } + } + break; + + case 1: /* shapes */ +#endif +#ifdef DEBUG + printf("Shapes\n"); +#endif + height = width = TEXTURE_SIZE; + my_data = (void *)malloc(width * height * 4); + draw_shapes(my_data); +#if 0 + break; + + case 2: /* check */ + printf("Check\n"); + height = width = TEXTURE_SIZE; + my_data = (void *)malloc(width * height * 4); + for (i = 0 ; i < height ; i += 2) { + for (j = 0 ; j < width ; j += 2) { + if (((i + j) & 0x3) == 0) { + plot2(my_data, i, j, r0, g0, b0, a0); + } else { + plot2(my_data, i, j, r1, g1, b1, a1); + } + } + } + break; + + case 3: /* random stripes */ + printf("Stripes 2\n"); + height = width = TEXTURE_SIZE; + my_data = (void *)malloc(width * height * 4); + for (i = 0 ; i < height ; i += 2) { + r0 = random() & 0xff; + g0 = random() & 0xff; + b0 = random() & 0xff; + a0 = 0xff; + for (j = 0 ; j < width ; j += 2) { + plot2(my_data, i, j, r0, g0, b0, a0); + } + } + break; + } +#endif + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + width, height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, my_data); + sprintf (buf, "random texture: (%dx%d)", + width, height); + check_gl_error(buf); + + /* setup parameters for texturing */ + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + glPixelStorei(GL_UNPACK_ROW_LENGTH, width); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + if (random() & 0x1) { + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + } else { + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } + + if (my_data != NULL) { + free(my_data); + my_data = NULL; + } + + /* use full texture */ + /* acd - was 1.0 */ + texture->min_tx = 0.0; + texture->max_tx = 2.0; + texture->min_ty = 0.0; + texture->max_ty = 2.0; + texture->start_time = time((time_t *)0); +} + +static Bool +setup_file_texture (ModeInfo *mi, char *filename, texture *texture) +{ + Display *dpy = mi->dpy; + Visual *visual = mi->xgwa.visual; + char buf[1024]; + + XImage *image = file_to_ximage (dpy, visual, filename); + if (!image) return False; + +#ifdef DEBUG + printf("FileTexture\n"); +#endif + + /* use this texture */ + glBindTexture(GL_TEXTURE_2D, texture->id); + + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + image->width, image->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image->data); + sprintf (buf, "texture: %.100s (%dx%d)", + filename, image->width, image->height); + check_gl_error(buf); + + /* setup parameters for texturing */ + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + glPixelStorei(GL_UNPACK_ROW_LENGTH, image->width); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + /* use full texture */ + texture->min_tx = 0.0; + texture->max_tx = 1.0; + texture->min_ty = 0.0; + texture->max_ty = 1.0; + texture->start_time = time((time_t *)0); + return True; +} + +static void +setup_texture(ModeInfo * mi, texture *texture) +{ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + + if (!image_str || !*image_str || !strcmp(image_str, "DEFAULT")) { + BUILTIN: + /* no image specified - use system settings */ +#ifdef DEBUG + printf("SetupTexture: get_snapshot\n"); +#endif + getSnapshot(mi, texture); + } else { + if (strcmp(image_str, "GENERATE") == 0) { +#ifdef DEBUG + printf("SetupTexture: random_texture\n"); +#endif + setup_random_texture(mi, texture); + } else { + /* use supplied image file */ +#ifdef DEBUG + printf("SetupTexture: file_texture\n"); +#endif + if (! setup_file_texture(mi, image_str, texture)) + goto BUILTIN; + } + } + /* copy start time from texture */ + gp->start_time = texture->start_time; + + check_gl_error("texture initialization"); + + /* acd + * resultant loaded image is upside down BUT + * it's a kaledescope and half of the hexagon is backwards anyway... + */ + + /* TODO: values for lissajous movement */ + texture->x_period = frandrange(-2.0, 2.0); + texture->y_period = frandrange(-2.0, 2.0); + texture->r_period = frandrange(-2.0, 2.0); + texture->x_phase = frand(M_PI * 2); + texture->y_phase = frand(M_PI * 2); + texture->r_phase = frand(M_PI * 2); +#ifdef DEBUG + printf("XPeriod %f XPhase %f\n", texture->x_period, texture->x_phase); + printf("YPeriod %f YPhase %f\n", texture->y_period, texture->y_phase); + printf("RPeriod %f RPhase %f\n", texture->r_period, texture->r_phase); +#endif +} + +#define VERTEX0 glVertex3f( 0.0000f, 0.000f, 0.0f); +#define VERTEX1 glVertex3f( 0.0000f, 1.000f, 0.0f); +#define VERTEX2 glVertex3f( XOFFSET, 0.500f, 0.0f); +#define VERTEX3 glVertex3f( XOFFSET, -0.500f, 0.0f); +#define VERTEX4 glVertex3f( 0.0000f, -1.000f, 0.0f); +#define VERTEX5 glVertex3f(-XOFFSET, -0.500f, 0.0f); +#define VERTEX6 glVertex3f(-XOFFSET, 0.500f, 0.0f); + +/* +** Three different functions for calculating texture coordinates +** which modify how the texture triangle moves over the source image. +** Choose one. +*/ + +#if 0 +/* the classic equilateral triangle rotating around centre */ +static void +calculate_texture_coords(ModeInfo *mi, texture *texture, vector2f t[3]) { + + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + GLfloat centre_x = 0.5; + GLfloat centre_y = 0.5; + GLfloat radius_x = (texture->max_tx - texture->min_tx) / 2; + GLfloat radius_y = (texture->max_ty - texture->min_ty) / 2; + GLfloat tangle2; + t[0].x = centre_x; + t[0].y = centre_y; + + /* t[1] */ + t[1].x = centre_x + .95 * radius_x * cos((gp->ymouse * 2 * M_PI) + (gp->tangle * RADIANS)); + t[1].y = centre_y + .95 * radius_y * sin((gp->ymouse * 2 * M_PI) + (gp->tangle * RADIANS)); + + /* t[2] is always 60' further around than t2 */ + tangle2 = (gp->ymouse * 2 * M_PI) + (gp->tangle * RADIANS) + (M_PI * 2 / 6); + t[2].x = centre_x + .95 * radius_x * cos(tangle2); + t[2].y = centre_y + .95 * radius_y * sin(tangle2); +#if 0 + printf("texcoords:[%f,%f]->[%f,%f](%f,%f)\n", t[0].x, t[0].y, t[1].x, t[1].y, texture->max_tx, texture->max_ty); +#endif +} +#endif + +#if 1 +/* new lissajous movement pattern */ +static void +calculate_texture_coords(ModeInfo *mi, texture *texture, vector2f t[3]) { + + /* equilateral triangle rotating around centre */ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + GLfloat width = texture->max_tx - texture->min_tx; + GLfloat height = texture->max_ty - texture->min_ty; + /* centre */ + GLfloat centre_x = texture->min_tx + (width * .5); + GLfloat centre_y = texture->min_ty + (height * .5); + /* m radius and t radius should be = .5 */ + /* triangle radius is 30% available space */ + GLfloat t_radius_x = width * .3; + GLfloat t_radius_y = height * .3; + /* movement radius is 30% available space */ + GLfloat m_radius_x = width * .2; + GLfloat m_radius_y = height * .2; + GLfloat angle2; + + /* centre of triangle */ + GLfloat angle = (gp->ymouse * 2 * M_PI) + (gp->tangle * RADIANS); /* to radians */ + GLfloat t_centre_x = centre_x + m_radius_x * cos(texture->x_period * angle + texture->x_phase); + GLfloat t_centre_y = centre_y + m_radius_y * sin(texture->y_period * angle + texture->y_phase); + +#if 0 + printf("WH: %f, %f - tWH: %f, %f\n", width, height, texture->width, texture->height); + printf("size: (%f, %f)\n", width, height); + printf("centre: (%f, %f)\n", centre_x, centre_y); +#endif + + angle2 = texture->r_period * angle + texture->r_phase; + t[0].x = t_centre_x + t_radius_x * cos(angle2); + t[0].y = t_centre_y + t_radius_y * sin(angle2); + t[1].x = t_centre_x + t_radius_x * cos(angle2 + ANGLE_120); + t[1].y = t_centre_y + t_radius_y * sin(angle2 + ANGLE_120); + t[2].x = t_centre_x + t_radius_x * cos(angle2 + ANGLE_240); + t[2].y = t_centre_y + t_radius_y * sin(angle2 + ANGLE_240); + +#if 0 + printf("texcoords:[%f,%f]->[%f,%f](%f,%f)\n", t[0].x, t[0].y, t[1].x, t[1].y, texture->max_tx, texture->max_ty); +#endif +} +#endif + +#if 0 +/* corners into corners - meant to maximise coverage */ +static void +calculate_texture_coords(ModeInfo *mi, texture *texture, vector2f t[3]) { + + /* equilateral triangle rotating around centre */ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + GLfloat width = texture->max_tx - texture->min_tx; + GLfloat height = texture->max_ty - texture->min_ty; + /* centre */ + GLfloat centre_x = texture->min_tx + (width * .5); + GLfloat centre_y = texture->min_ty + (height * .5); + /* m radius and t radius should be = .5 */ + /* triangle radius calculated using maths 8) */ +#define TRADIUS (M_SQRT2 - 1.0) +#define MRADIUS (1.0 - (M_SQRT2 / 2.0)) + GLfloat t_radius_x = width * TRADIUS * .95; + GLfloat t_radius_y = height * TRADIUS * .95; + /* movement radius also calculated using maths */ + GLfloat m_radius_x = width * MRADIUS * .95; + GLfloat m_radius_y = height * MRADIUS * .95; + GLfloat angle, angle2; + GLfloat t_centre_x, t_centre_y; + + /* centre of triangle */ + angle = gp->tangle * RADIANS; /* to radians */ + t_centre_x = centre_x + m_radius_x * cos(angle); + t_centre_y = centre_y + m_radius_y * sin(angle); +#if 0 + printf("angle: %f, %f\n", angle, gp->tangle); + printf("tcentre: %f,%f\n", t_centre_x, t_centre_y); + printf("tradius: %f,%f\n", t_radius_x, t_radius_y); + + printf("size: (%f, %f)\n", width, height); + printf("centre: (%f, %f)\n", centre_x, centre_y); + printf("centre: (%f, %f)\n", centre_x, centre_y); + printf("TRADIUS: %f\n", TRADIUS); + printf("MRADIUS: %f\n", MRADIUS); +#endif + + /* angle2 is tied to tangle */ + angle2 = (180.0 - ((30.0 / 90.0) * gp->tangle)) * RADIANS; +#if 0 + printf("Angle1: %f\tAngle2: %f\n", angle / RADIANS, angle2 / RADIANS); +#endif + t[0].x = t_centre_x + t_radius_x * cos(angle2); + t[0].y = t_centre_y + t_radius_y * sin(angle2); + t[1].x = t_centre_x + t_radius_x * cos(angle2 + ANGLE_120); + t[1].y = t_centre_y + t_radius_y * sin(angle2 + ANGLE_120); + t[2].x = t_centre_x + t_radius_x * cos(angle2 + ANGLE_240); + t[2].y = t_centre_y + t_radius_y * sin(angle2 + ANGLE_240); + +#if 0 + printf("texcoords:[%f,%f][%f,%f][%f,%f]\n", t[0].x, t[0].y, t[1].x, t[1].y, t[2].x, t[2].y); +#endif +} +#endif + +static int +draw_hexagons(ModeInfo *mi, int translucency, texture *texture) +{ + int polys = 0; + int i; + vector2f t[3]; + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + + calculate_texture_coords(mi, texture, t); + + glColor4f(1.0, 1.0, 1.0, (float)translucency / MAX_FADE); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDepthMask(GL_FALSE); + glBindTexture(GL_TEXTURE_2D, texture->id); + + if (gp->list == -1) { + gp->list = glGenLists(1); + } + + /* compile new list */ + glNewList(gp->list, GL_COMPILE); + glBegin(GL_TRIANGLES); + + /* + ** six triangles to each hexagon + */ + + glTexCoord2f(t[0].x, t[0].y); + VERTEX0; + glTexCoord2f(t[1].x, t[1].y); + VERTEX1; + glTexCoord2f(t[2].x, t[2].y); + VERTEX6; + + glTexCoord2f(t[0].x, t[0].y); + VERTEX0; + glTexCoord2f(t[2].x, t[2].y); + VERTEX6; + glTexCoord2f(t[1].x, t[1].y); + VERTEX5; + + glTexCoord2f(t[0].x, t[0].y); + VERTEX0; + glTexCoord2f(t[1].x, t[1].y); + VERTEX5; + glTexCoord2f(t[2].x, t[2].y); + VERTEX4; + + glTexCoord2f(t[0].x, t[0].y); + VERTEX0; + glTexCoord2f(t[2].x, t[2].y); + VERTEX4; + glTexCoord2f(t[1].x, t[1].y); + VERTEX3; + + glTexCoord2f(t[0].x, t[0].y); + VERTEX0; + glTexCoord2f(t[1].x, t[1].y); + VERTEX3; + glTexCoord2f(t[2].x, t[2].y); + VERTEX2; + + glTexCoord2f(t[0].x, t[0].y); + VERTEX0; + glTexCoord2f(t[2].x, t[2].y); + VERTEX2; + glTexCoord2f(t[1].x, t[1].y); + VERTEX1; + + glEnd(); + glEndList(); + + /* call the list n times */ + for (i = 0 ; i < sizeof(hex) / sizeof(hex[0]) ; i++) { + + glPushMatrix(); + + glTranslatef(hex[i].x, hex[i].y, 0.0); + glCallList(gp->list); + polys += 6; + + glPopMatrix(); + } + +#ifdef DISPLAY_TEXTURE + glPushMatrix(); + /* acd debug - display (bigger, centred) texture */ + glScalef(2.0, 2.0, 2.0); + glTranslatef(-0.5, -0.5, 0.0); + glBegin(GL_QUADS); + glTexCoord2f(0.0, 0.0); + glVertex3f(0.0, 0.0, -0.1); + glTexCoord2f(1.0, 0.0); + glVertex3f(1.0, 0.0, -0.1); + glTexCoord2f(1.0, 1.0); + glVertex3f(1.0, 1.0, -0.1); + glTexCoord2f(0.0, 1.0); + glVertex3f(0.0, 1.0, -0.1); + polys++; + glEnd(); + /* acd debug - display texture triangle */ + glColor4f(1.0, 0.5, 1.0, 1.0); + glBegin(GL_LINE_LOOP); + glVertex3f(t[0].x, t[0].y, -0.11); + glVertex3f(t[1].x, t[1].y, -0.11); + glVertex3f(t[2].x, t[2].y, -0.11); + polys++; + glEnd(); + glPopMatrix(); +#endif + + glDisable(GL_TEXTURE_2D); + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + return polys; +} + +/* + * main rendering loop + */ +static void +draw(ModeInfo * mi) +{ + GLfloat x_angle, y_angle, z_angle; + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + vectorf v1; + + mi->polygon_count = 0; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + + gp->tic += 0.005f; + + x_angle = gp->cam_x_phase + gp->tic * gp->cam_x_speed; + y_angle = gp->cam_y_phase + gp->tic * gp->cam_y_speed; + z_angle = gp->cam_z_phase + gp->tic * gp->cam_z_speed; + + if (move) { + v1.x = 1 * sin(x_angle); + v1.y = 1 * sin(y_angle); + } else { + v1.x = 0; + v1.y = 0; + } + + /* size is changed in pinit() to be distance from plane */ + gp->size = MI_SIZE(mi); + if (gp->size > 10) { + gp->size = 10; + } + if (gp->size <= 0) { + gp->size = 0; + } + if (gp->size > 0) { + /* user defined size */ + v1.z = gp->size; + } else if (zoom) { + /* max distance given by adding the constant and the multiplier */ + v1.z = 5.0 + 3.0 * sin(z_angle); + } else { + /* default */ + v1.z = 7.0; + } + + /* update rotation angle (but not if mouse button down) */ + if (rotate && !gp->button_down_p) + { + float new_rangle_vel = 0.0; + + /* update camera rotation angle and velocity */ + gp->rangle += gp->rangle_vel; + new_rangle_vel = gp->rangle_vel + gp->rangle_acc; + if (new_rangle_vel > -MAX_ANGLE_VEL && new_rangle_vel < MAX_ANGLE_VEL) + { + /* new velocity is within limits */ + gp->rangle_vel = new_rangle_vel; + } + + /* randomly change twisting speed - 3ff = 1024 */ + if ((random() % TWISTING_PROBABILITY) < 1.0) { + gp->rangle_acc = INITIAL_ANGLE_ACC * frand(1.0); + if (gp->rangle_vel > 0.0) { + gp->rangle_acc = -gp->rangle_acc; + } + } + } +#if 0 + printf("Rangle: %f : %f : %f\n", gp->rangle, gp->rangle_vel, gp->rangle_acc); + printf("Tangle: %f : %f : %f\n", gp->tangle, gp->tangle_vel, gp->tangle_acc); +#endif + +#ifdef WOBBLE + /* this makes the image wobble - requires -move and a larger grid */ + gluLookAt(0, 0, v1.z, v1.x, v1.y, 0.0, 0.0, 1.0, 0.0); +#else + /* no wobble - camera always perpendicular to grid */ + + /* rotating camera rather than entire space - smoother */ + gluLookAt( + v1.x, v1.y, v1.z, + v1.x, v1.y, 0.0, + sin((gp->xmouse * M_PI * 2) + gp->rangle * RADIANS), + cos((gp->xmouse * M_PI * 2) + gp->rangle * RADIANS), + 0.0); +#endif + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + if (gp->fade == 0) + { + /* not fading */ + mi->polygon_count += + draw_hexagons(mi, MAX_FADE, &gp->textures[gp->visible]); + } + else + { + /* fading - show both textures with alpha + NB first is always max alpha */ + mi->polygon_count += + draw_hexagons(mi, MAX_FADE, &gp->textures[1 - gp->visible]); + mi->polygon_count += + draw_hexagons(mi, MAX_FADE - gp->fade, &gp->textures[gp->visible]); + + /* fade some more */ + gp->fade++; + + /* have we faded enough? */ + if (gp->fade > MAX_FADE) + { + /* stop fading */ + gp->fade = 0; + gp->visible = 1 - gp->visible; + } + } + + /* increment texture angle based on time, velocity etc */ + /* but only if button is not down */ + if (!gp->button_down_p) + { + float new_tangle_vel = 0.0; + + gp->tangle += gp->tangle_vel; + + /* work out new texture angle velocity */ + new_tangle_vel = gp->tangle_vel + gp->tangle_acc; + if (new_tangle_vel > -MAX_ANGLE_VEL && new_tangle_vel < MAX_ANGLE_VEL) + { + /* new velocity is inside limits */ + gp->tangle_vel = new_tangle_vel; + } + + /* randomly change twisting speed - 3ff = 1024 */ + if ((random() % TWISTING_PROBABILITY) < 1.0) { + gp->tangle_acc = INITIAL_ANGLE_ACC * frand(1.0); + if (gp->tangle_vel > 0.0) { + gp->tangle_acc = -gp->tangle_acc; + } + } + } + + glFlush(); +} + +/* + * new window size or exposure + */ +ENTRYPOINT void reshape_gleidescope(ModeInfo *mi, int width, int height) +{ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context)); + + glViewport(0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(50.0, 1/h, 0.1, 2000.0); + glMatrixMode (GL_MODELVIEW); + glLineWidth(1); + glPointSize(1); +} + +static void +pinit(ModeInfo * mi) +{ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + + /* set start time - star_time = 0 implies non-dynamic texture */ + gp->start_time = (time_t)0; + + /* set the texture size to default */ + /* + gp->max_tx = 1.0; + gp->max_ty = 1.0; + */ + + /* no fading */ + gp->fade = 0; + + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glDisable(GL_LIGHTING); + + /* space for textures */ + glGenTextures(1, &gp->textures[0].id); + glGenTextures(1, &gp->textures[1].id); + gp->visible = 0; + + setup_texture(mi, &gp->textures[gp->visible]); + + /* + ** want to choose a value for arg randomly if neither -arg nor -no-arg + ** is specified. xscreensaver libraries don't seem to let you do this - + ** if something isn't true then it is false (pesky two-state boolean values). + ** so, i've defined both -arg and -no-arg to arguments and added the + ** following logic. + ** (btw if both -arg and -no-arg are defined then arg is set to False) + */ + if (zoom == False && nozoom == False) + { + /* no zoom preference - randomise */ + zoom = (((random() & 0x1) == 0x1) ? True : False); + } + else if (nozoom == True) + { + /* definately no zoom */ + zoom = False; + } + + if (move == False && nomove == False) + { + /* no move preference - randomise */ + move = (((random() & 0x1) == 0x1) ? True : False); + } + else if (nomove == True) + { + /* definately no move */ + move = False; + } + + if (rotate == False && norotate == False) + { + /* no rotate preference - randomise */ + rotate = (((random() & 0x1) == 0x1) ? True : False); + } + else if (norotate == True) + { + /* definately no rotate */ + rotate = False; + } + + /* define cam variables */ + gp->cam_x_speed = MAX_CAM_SPEED * frandrange(-.5, 0.5); + gp->cam_x_phase = random() % 360; + gp->cam_y_speed = MAX_CAM_SPEED * frandrange(-.5, 0.5); + gp->cam_y_phase = random() % 360; + gp->cam_z_speed = MAX_CAM_SPEED * frandrange(-.5, 0.5); + gp->cam_z_phase = random() % 360; + + /* initial angular speeds */ + gp->rangle_vel = INITIAL_ANGLE_VEL * frandrange(-.5, 0.5); + gp->tangle_vel = INITIAL_ANGLE_VEL * frandrange(-.5, 0.5); + gp->rangle_acc = INITIAL_ANGLE_ACC * frandrange(-.5, 0.5); + gp->tangle_acc = INITIAL_ANGLE_ACC * frandrange(-.5, 0.5); + + /* jwz */ +#if 0 + { + GLfloat speed = 15; + gp->rangle_vel *= speed; + gp->tangle_vel *= speed; + gp->rangle_acc *= speed; + gp->tangle_acc *= speed; + } +#endif + + /* distance is 11 - size */ + if (gp->size != -1) { + if (zoom) { + fprintf(stderr, "-size given. ignoring -zoom.\n"); + zoom = False; + } + if (gp->size < 1) { + gp->size = 1; + } else if (gp->size >= 10) { + gp->size = 10; + } + gp->size = 11 - gp->size; + } + +#ifdef DEBUG +printf("phases [%d, %d, %d]\n", gp->cam_x_phase, gp->cam_y_phase, gp->cam_z_phase); +#endif +} + +ENTRYPOINT void +init_gleidescope(ModeInfo * mi) +{ + gleidestruct *gp; + int screen = MI_SCREEN(mi); + + MI_INIT(mi, gleidescope); + gp = &gleidescope[screen]; + gp->window = MI_WINDOW(mi); + gp->size = -1; + gp->list = -1; + + if ((gp->glx_context = init_GL(mi)) != NULL) { + + reshape_gleidescope(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + + glDrawBuffer(GL_BACK); + + /* do initialisation */ + pinit(mi); + + } else { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void +draw_gleidescope(ModeInfo * mi) +{ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + + if (!gp->glx_context) + return; + + /* Just keep running before the texture has come in. */ + /* if (gp->waiting_for_image_p) return; */ + + glDrawBuffer(GL_BACK); + + glXMakeCurrent(display, window, *(gp->glx_context)); + draw(mi); + + if (mi->fps_p) { + do_fps (mi); + } + + glFinish(); + glXSwapBuffers(display, window); + +#ifdef GRAB + if (grab) { + grab_frame(display, window); + } +#endif + + /* need to change texture? */ + if ((gp->start_time != 0) && (duration != -1) && gp->fade == 0) { + if (gp->start_time + duration <= time((time_t *)0)) { +#ifdef DEBUG + printf("Start Time: %lu - Current Time: %lu\n", (unsigned long)gp->start_time, (unsigned long)time((time_t *)0)); + printf("Changing Texture\n"); +#endif + /* get new snapshot (into back buffer) and start fade count */ + setup_texture(mi, &gp->textures[1 - gp->visible]); + /* restart fading */ + gp->fade = 1; + } + } +} + +ENTRYPOINT void +free_gleidescope(ModeInfo * mi) +{ + gleidestruct *gp = &gleidescope[MI_SCREEN(mi)]; + + /* acd - is this needed? */ + if (gp->glx_context) { + /* Display lists MUST be freed while their glXContext is current. */ + glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context)); + + /* acd - was code here for freeing things that are no longer in struct */ + } +} + +XSCREENSAVER_MODULE ("Gleidescope", gleidescope) + +#endif diff --git a/hacks/glx/gleidescope.man b/hacks/glx/gleidescope.man new file mode 100644 index 0000000..c0b9b15 --- /dev/null +++ b/hacks/glx/gleidescope.man @@ -0,0 +1,77 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +gleidescope - a tiled OpenGL kaleidescope +.SH SYNOPSIS +.B gleidescope +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[-delay \fInumber\fP] +[-move] +[-rotate] +[-zoom] +[-image \fIfile\fP] +[-fps] +[-size \fInumber\fP] +[-duration \fInumber\fP] +.SH DESCRIPTION +A tiled kaleidescope using OpenGL. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-move +Move the camera. +.TP 8 +.B \-rotate +Rotate the camera. +.TP 8 +.B \-zoom +Zoom the camera in and out. +.TP 8 +.B \-image \fIfile\fP +The texture map to use at the end of the kaleidescope. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-size \fInumber\fP +The size of the hexagons being displayed [1(small)-10(large)] +.TP 8 +.B \-duration \fInumber\fP +The time in seconds before another image is chosen. +.TP 8 +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Andrew Dean Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Andrew Dean. diff --git a/hacks/glx/glforestfire.c b/hacks/glx/glforestfire.c new file mode 100644 index 0000000..bcc9ed7 --- /dev/null +++ b/hacks/glx/glforestfire.c @@ -0,0 +1,1097 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* fire --- 3D fire or rain landscape */ + +#if 0 +static const char sccsid[] = "@(#)fire.c 5.02 2001/09/26 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 2001. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by David Bucciarelli + * (tech.hmw@plus.it) and could be found in the demo package + * of Mesa (Mesa-3.2/3Dfx/demos/). This mode is the result of the merge of + * two of the David's demos (fire and rain). + * + * Eric Lassauge (October-10-2000) + * http://lassauge.free.fr/linux.html + * + * REVISION HISTORY: + * + * E.Lassauge - 26-Sep-2001: + * - add wander option and code + * - cleanups for xscreensaver + * + * E.Lassauge - 09-Mar-2001: + * - get rid of my framerate options to use showfps + * + * E.Lassauge - 12-Jan-2001: + * - add rain particules, selected if count=0 (no fire means rain !) + * + * E.Lassauge - 28-Nov-2000: + * - modified release part to add freeing of GL objects + * + * E.Lassauge - 14-Nov-2000: + * - use new common xpm_to_ximage function + * + * E.Lassauge - 25-Oct-2000: + * - add the trees (with a new resource '-trees') + * - corrected handling of color (textured vs untextured) + * - corrected handling of endiannes for the xpm files + * - inverted ground pixmap file + * - use malloc-ed tree array + * + * TSchmidt - 23-Oct-2000: + * - added size option like used in sproingies mode + * + * E.Lassauge - 13-Oct-2000: + * - when trackmouse and window is iconified (login screen): stop tracking + * - add pure GLX handling of framerate display (erased GLUT stuff) + * - made count a per screen variable and update it only if framemode + * - changes for no_texture an wireframe modes + * - change no_texture color for the ground + * - add freeing of texture image + * - misc comments and little tweakings + * + * TODO: + * - perhaps use a user supplied xpm for ground image (or a whatever image + * file using ImageMagick ?) + * - random number of trees ? change trees at change_fire ? + * - fix wireframe mode: it's too CPU intensive. + * - look how we can get the Wheel events (Button4&5). + */ + + +#ifdef STANDALONE /* xscreensaver mode */ +#define DEFAULTS "*delay: 10000 \n" \ + "*count: 800 \n" \ + "*size: 0 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +#define MODE_fire +#include "xlockmore.h" /* from the xscreensaver distribution */ +#include "gltrackball.h" +#else /* !STANDALONE */ +#include "xlock.h" /* from the xlockmore distribution */ +#include "visgl.h" +#endif /* !STANDALONE */ + +#ifdef MODE_fire + +#define MINSIZE 32 + +#if defined( USE_XPM ) || defined( USE_XPMINC ) || defined(STANDALONE) +/* USE_XPM & USE_XPMINC in xlock mode ; HAVE_XPM in xscreensaver mode */ +#include "ximage-loader.h" +#define I_HAVE_XPM + +#include "images/gen/ground_png.h" +#include "images/gen/tree_png.h" +#endif /* HAVE_XPM */ + +/* vector utility macros */ +#define vinit(a,i,j,k) {\ + (a)[0]=i;\ + (a)[1]=j;\ + (a)[2]=k;\ +} + +#define vinit4(a,i,j,k,w) {\ + (a)[0]=i;\ + (a)[1]=j;\ + (a)[2]=k;\ + (a)[3]=w;\ +} + +#define vadds(a,dt,b) {\ + (a)[0]+=(dt)*(b)[0];\ + (a)[1]+=(dt)*(b)[1];\ + (a)[2]+=(dt)*(b)[2];\ +} + +#define vequ(a,b) {\ + (a)[0]=(b)[0];\ + (a)[1]=(b)[1];\ + (a)[2]=(b)[2];\ +} + +#define vinter(a,dt,b,c) {\ + (a)[0]=(dt)*(b)[0]+(1.0-dt)*(c)[0];\ + (a)[1]=(dt)*(b)[1]+(1.0-dt)*(c)[1];\ + (a)[2]=(dt)*(b)[2]+(1.0-dt)*(c)[2];\ +} + +#define clamp(a) ((a) < 0.0 ? 0.0 : ((a) < 1.0 ? (a) : 1.0)) + +#define vclamp(v) {\ + (v)[0]=clamp((v)[0]);\ + (v)[1]=clamp((v)[1]);\ + (v)[2]=clamp((v)[2]);\ +} + +/* Manage option vars */ +#define DEF_TEXTURE "True" +#define DEF_FOG "False" +#define DEF_SHADOWS "True" +#define DEF_FRAMERATE "False" +#define DEF_WANDER "True" +#define DEF_TREES "5" +#define MAX_TREES 20 +static Bool do_texture; +static Bool do_fog; +static Bool do_shadows; +static Bool do_wander; +static int num_trees; +static XFontStruct *mode_font = None; + +static XrmOptionDescRec opts[] = { + {"-texture", ".fire.texture", XrmoptionNoArg, "on"}, + {"+texture", ".fire.texture", XrmoptionNoArg, "off"}, + {"-fog", ".fire.fog", XrmoptionNoArg, "on"}, + {"+fog", ".fire.fog", XrmoptionNoArg, "off"}, + {"-shadows", ".fire.shadows", XrmoptionNoArg, "on"}, + {"+shadows", ".fire.shadows", XrmoptionNoArg, "off"}, + {"-wander", ".fire.wander", XrmoptionNoArg, "on"}, + {"+wander", ".fire.wander", XrmoptionNoArg, "off"}, + {"-trees", ".fire.trees", XrmoptionSepArg, 0}, + {"-rain", ".fire.count", XrmoptionNoArg, "0"}, + +}; + +static argtype vars[] = { + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_fog, "fog", "Fog", DEF_FOG, t_Bool}, + {&do_shadows, "shadows", "Shadows", DEF_SHADOWS, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&num_trees, "trees", "Trees", DEF_TREES, t_Int}, +}; + +static OptionStruct desc[] = { + {"-/+texture", "turn on/off texturing"}, + {"-/+fog", "turn on/off fog"}, + {"-/+shadows", "turn on/off shadows"}, + {"-/+wander", "turn on/off wandering"}, + {"-trees num", "number of trees (0 disables)"}, +}; + +ENTRYPOINT ModeSpecOpt fire_opts = + { sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc }; + +#ifdef USE_MODULES +ModStruct fire_description = + { "fire", "init_fire", "draw_fire", "release_fire", + "draw_fire", "change_fire", (char *) NULL, &fire_opts, + 10000, 800, 1, 400, 64, 1.0, "", + "Shows a 3D fire-like image", 0, NULL +}; +#endif /* USE_MODULES */ + +/* misc defines */ +#define TREEINR 2.5 /* tree min distance */ +#define TREEOUTR 8.0 /* tree max distance */ +#define FRAME 50 /* frame count interval */ +#define DIMP 20.0 /* dimension of ground */ +#define DIMTP 16.0 /* dimension of ground texture */ + +#define RIDCOL 0.4 /* factor for color blending */ + +#define AGRAV -9.8 /* gravity */ + +#define NUMPART 7500 /* rain particles */ + +/* fire particle struct */ +typedef struct { + int age; + float p[3][3]; + float v[3]; + float c[3][4]; +} part; + +/* rain particle struct */ +typedef struct { + float age; + float acc[3]; + float vel[3]; + float pos[3]; + float partLength; + float oldpos[3]; +} rain; + +/* colors */ +static const GLfloat black[3] = { 0.0, 0.0, 0.0 }; /* shadow color */ +static const GLfloat partcol1[3] = { 1.0, 0.2, 0.0 }; /* initial color: red-ish */ +static const GLfloat partcol2[3] = { 1.0, 1.0, 0.0 }; /* blending color: yellow-ish */ +static const GLfloat fogcolor[4] = { 0.9, 0.9, 1.0, 1.0 }; + +/* ground */ +static const float q[4][3] = { + {-DIMP, 0.0, -DIMP}, + {DIMP, 0.0, -DIMP}, + {DIMP, 0.0, DIMP}, + {-DIMP, 0.0, DIMP} +}; + +/* ground texture */ +static const float qt[4][2] = { + {-DIMTP, -DIMTP}, + {DIMTP, -DIMTP}, + {DIMTP, DIMTP}, + {-DIMTP, DIMTP} +}; + +/* default values for observer */ +static const float DEF_OBS[3] = { 2.0f, 1.0f, 0.0f }; +#define DEV_V 0.0 +#define DEF_ALPHA -90.0 +#define DEF_BETA 90.0 + +/* tree struct */ +typedef struct { + float x,y,z; +} treestruct; + +/* the mode struct, contains all per screen variables */ +typedef struct { + GLint WIDTH, HEIGHT; /* display dimensions */ + GLXContext *glx_context; + + int np; /* number of fire particles : set it through 'count' resource */ + float eject_r; /* emission radius */ + float dt, maxage, eject_vy, eject_vl; + float ridtri; /* fire particle size */ + Bool shadows; /* misc booleans: set them through specific resources */ + Bool fog; + + part *p; /* fire particles array */ + rain *r; /* rain particles array */ + + XImage *gtexture; /* ground texture image bits */ + XImage *ttexture; /* tree texture image bits */ + GLuint groundid; /* ground texture id: GL world */ + GLuint treeid; /* tree texture id: GL world */ + GLuint fontbase; /* fontbase id: GL world */ + + int num_trees; /* number of trees: set it through 'trees' resource */ + treestruct *treepos; /* trees positions: float treepos[num_trees][3] */ + + float min[3]; /* raining area */ + float max[3]; + + float obs[3]; /* observer coordinates */ + float dir[3]; /* view direction */ + float v; /* observer velocity */ + float alpha; /* observer angles */ + float beta; + + trackball_state *trackball; + Bool button_down_p; + int frame; + +} firestruct; + +/* array of firestruct indexed by screen number */ +static firestruct *fire = (firestruct *) NULL; + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Misc funcs. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +/* utility function for the rain particles */ +static float gettimerain(void) +{ +#if 0 + /* Oh yeah, *that's* portable! WTF. */ + /* + * I really thought clock() was standard ... EL + * I found this on the net: + * The clock() function conforms to ISO/IEC 9899:1990 (``ISO C89'') + * */ + + static clock_t told= (clock_t)0; + clock_t tnew,ris; + + tnew=clock(); + + ris=tnew-told; + + told=tnew; + + return (0.0125 + ris/(float)CLOCKS_PER_SEC); +#else + return 0.0150; +#endif +} + +/* my RAND */ +static float vrnd(void) +{ + return ((float) LRAND() / (float) MAXRAND); +} + +/* initialise new fire particle */ +static void setnewpart(firestruct * fs, part * p) +{ + float a, vi[3]; + const float *c; + + p->age = 0; + + a = vrnd() * M_PI * 2.0; + + vinit(vi, sin(a) * fs->eject_r * vrnd(), 0.15, cos(a) * fs->eject_r * vrnd()); + vinit(p->p[0], vi[0] + vrnd() * fs->ridtri, vi[1] + vrnd() * fs->ridtri, vi[2] + vrnd() * fs->ridtri); + vinit(p->p[1], vi[0] + vrnd() * fs->ridtri, vi[1] + vrnd() * fs->ridtri, vi[2] + vrnd() * fs->ridtri); + vinit(p->p[2], vi[0] + vrnd() * fs->ridtri, vi[1] + vrnd() * fs->ridtri, vi[2] + vrnd() * fs->ridtri); + + vinit(p->v, vi[0] * fs->eject_vl / (fs->eject_r / 2), + vrnd() * fs->eject_vy + fs->eject_vy / 2, + vi[2] * fs->eject_vl / (fs->eject_r / 2)); + + c = partcol1; + + vinit4(p->c[0], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), + c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), + c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0); + vinit4(p->c[1], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), + c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), + c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0); + vinit4(p->c[2], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), + c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), + c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0); +} + +/* initialise new rain particle */ +static void setnewrain(firestruct * fs, rain * r) +{ + r->age=0.0f; + + vinit(r->acc,0.0f,-0.98f,0.0f); + vinit(r->vel,0.0f,0.0f,0.0f); + + r->partLength=0.2f; + + vinit(r->oldpos,fs->min[0]+(fs->max[0]-fs->min[0])*vrnd(), + fs->max[1]+0.2f*fs->max[1]*vrnd(), + fs->min[2]+(fs->max[2]-fs->min[2])*vrnd()); + vequ(r->pos,r->oldpos); + vadds(r->oldpos,-(r->partLength),r->vel); + + r->pos[1]=(fs->max[1]-fs->min[1])*vrnd()+fs->min[1]; + r->oldpos[1]=r->pos[1]-r->partLength*r->vel[1]; +} + +/* set fire particle values */ +static void setpart(firestruct * fs, part * p) +{ + float fact; + + if (p->p[0][1] < 0.1) { + setnewpart(fs, p); + return; + } + + p->v[1] += AGRAV * fs->dt; + + vadds(p->p[0], fs->dt, p->v); + vadds(p->p[1], fs->dt, p->v); + vadds(p->p[2], fs->dt, p->v); + + p->age++; + + if ((p->age) > fs->maxage) { + vequ(p->c[0], partcol2); + vequ(p->c[1], partcol2); + vequ(p->c[2], partcol2); + } else { + fact = 1.0 / fs->maxage; + vadds(p->c[0], fact, partcol2); + vclamp(p->c[0]); + p->c[0][3] = fact * (fs->maxage - p->age); + + vadds(p->c[1], fact, partcol2); + vclamp(p->c[1]); + p->c[1][3] = fact * (fs->maxage - p->age); + + vadds(p->c[2], fact, partcol2); + vclamp(p->c[2]); + p->c[2][3] = fact * (fs->maxage - p->age); + } +} + +/* set rain particle values */ +static void setpartrain(firestruct * fs, rain * r, float dt) +{ + r->age += dt; + + vadds(r->vel,dt,r->acc); + vadds(r->pos,dt,r->vel); + + if(r->pos[0]min[0]) + r->pos[0]=fs->max[0]-(fs->min[0]-r->pos[0]); + if(r->pos[2]min[2]) + r->pos[2]=fs->max[2]-(fs->min[2]-r->pos[2]); + + if(r->pos[0]>fs->max[0]) + r->pos[0]=fs->min[0]+(r->pos[0]-fs->max[0]); + if(r->pos[2]>fs->max[2]) + r->pos[2]=fs->min[2]+(r->pos[2]-fs->max[2]); + + vequ(r->oldpos,r->pos); + vadds(r->oldpos,-(r->partLength),r->vel); + if(r->pos[1]min[1]) + setnewrain(fs, r); +} + +/* draw a tree */ +static int drawtree(float x, float y, float z) +{ + int polys = 0; + glBegin(GL_QUADS); + glTexCoord2f(0.0,0.0); + glVertex3f(x-1.5,y+0.0,z); + + glTexCoord2f(1.0,0.0); + glVertex3f(x+1.5,y+0.0,z); + + glTexCoord2f(1.0,1.0); + glVertex3f(x+1.5,y+3.0,z); + + glTexCoord2f(0.0,1.0); + glVertex3f(x-1.5,y+3.0,z); + polys++; + + + glTexCoord2f(0.0,0.0); + glVertex3f(x,y+0.0,z-1.5); + + glTexCoord2f(1.0,0.0); + glVertex3f(x,y+0.0,z+1.5); + + glTexCoord2f(1.0,1.0); + glVertex3f(x,y+3.0,z+1.5); + + glTexCoord2f(0.0,1.0); + glVertex3f(x,y+3.0,z-1.5); + polys++; + + glEnd(); + + return polys; +} + +/* calculate observer position : modified only if trackmouse is used */ +static void calcposobs(firestruct * fs) +{ + fs->dir[0] = sin(fs->alpha * M_PI / 180.0); + fs->dir[2] = + cos(fs->alpha * M_PI / 180.0) * sin(fs->beta * M_PI / 180.0); + fs->dir[1] = cos(fs->beta * M_PI / 180.0); + + fs->obs[0] += fs->v * fs->dir[0]; + fs->obs[1] += fs->v * fs->dir[1]; + fs->obs[2] += fs->v * fs->dir[2]; + + if (!fs->np) + { + vinit(fs->min,fs->obs[0]-7.0f,-0.2f,fs->obs[2]-7.0f); + vinit(fs->max,fs->obs[0]+7.0f,8.0f,fs->obs[2]+7.0f); + } +} + + +/* initialise textures */ +static void inittextures(ModeInfo * mi) +{ + firestruct *fs = &fire[MI_SCREEN(mi)]; + +#if defined( I_HAVE_XPM ) + if (do_texture) { + + glGenTextures(1, &fs->groundid); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D, fs->groundid); +#endif /* HAVE_GLBINDTEXTURE */ + + if ((fs->gtexture = image_data_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi), + ground_png, + sizeof(ground_png))) + == None) { + (void) fprintf(stderr, "Error reading the ground texture.\n"); + glDeleteTextures(1, &fs->groundid); + do_texture = False; + fs->groundid = 0; + fs->treeid = 0; + return; + } + + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + fs->gtexture->width, fs->gtexture->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, fs->gtexture->data); + check_gl_error("texture"); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); + + if (fs->num_trees) + { + glGenTextures(1, &fs->treeid); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D,fs->treeid); +#endif /* HAVE_GLBINDTEXTURE */ + if ((fs->ttexture = image_data_to_ximage(MI_DISPLAY(mi), + MI_VISUAL(mi), + tree_png, + sizeof(tree_png))) + == None) { + (void)fprintf(stderr,"Error reading tree texture.\n"); + glDeleteTextures(1, &fs->treeid); + fs->treeid = 0; + fs->num_trees = 0; + return; + } + + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + fs->ttexture->width, fs->ttexture->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, fs->ttexture->data); + check_gl_error("texture"); + + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); + + glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); + } + } + else + { + fs->groundid = 0; /* default textures */ + fs->treeid = 0; + } +#else /* !I_HAVE_XPM */ + do_texture = False; + fs->groundid = 0; /* default textures */ + fs->treeid = 0; +#endif /* !I_HAVE_XPM */ +} + +/* init tree array and positions */ +static Bool inittree(ModeInfo * mi) +{ + firestruct *fs = &fire[MI_SCREEN(mi)]; + int i; + float dist; + + /* allocate treepos array */ + if ((fs->treepos = (treestruct *) malloc(fs->num_trees * + sizeof(treestruct))) == NULL) { + return False; + } + /* initialise positions */ + for(i=0;inum_trees;i++) { + do { + fs->treepos[i].x =vrnd()*TREEOUTR*2.0-TREEOUTR; + fs->treepos[i].y =0.0; + fs->treepos[i].z =vrnd()*TREEOUTR*2.0-TREEOUTR; + dist = sqrt(fs->treepos[i].x * fs->treepos[i].x + + fs->treepos[i].z * fs->treepos[i].z); + } while((distTREEOUTR)); + } + return True; +} + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * GL funcs. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void reshape_fire(ModeInfo * mi, int width, int height) +{ + + firestruct *fs = &fire[MI_SCREEN(mi)]; + int size = MI_SIZE(mi); + + /* Viewport is specified size if size >= MINSIZE && size < screensize */ + if (size <= 1) { + fs->WIDTH = MI_WIDTH(mi); + fs->HEIGHT = MI_HEIGHT(mi); + } else if (size < MINSIZE) { + fs->WIDTH = MINSIZE; + fs->HEIGHT = MINSIZE; + } else { + fs->WIDTH = (size > MI_WIDTH(mi)) ? MI_WIDTH(mi) : size; + fs->HEIGHT = (size > MI_HEIGHT(mi)) ? MI_HEIGHT(mi) : size; + } + glViewport((MI_WIDTH(mi) - fs->WIDTH) / 2, (MI_HEIGHT(mi) - fs->HEIGHT) / 2, fs->WIDTH, fs->HEIGHT); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70.0, fs->WIDTH / (float) fs->HEIGHT, 0.1, 30.0); + + glMatrixMode(GL_MODELVIEW); + +} + +static void DrawFire(ModeInfo * mi) +{ + int j; + firestruct *fs = &fire[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + + mi->polygon_count = 0; + + if (do_wander && !fs->button_down_p) + { + GLfloat x, y, z; + +# define SINOID(SCALE,SIZE) \ + ((((1 + sin((fs->frame * (SCALE)) / 2 * M_PI)) / 2.0) * (SIZE)) - (SIZE)/2) + + x = SINOID(0.031, 0.85); + y = SINOID(0.017, 0.25); + z = SINOID(0.023, 0.85); + fs->frame++; + fs->obs[0] = x + DEF_OBS[0]; + fs->obs[1] = y + DEF_OBS[1]; + fs->obs[2] = z + DEF_OBS[2]; + fs->dir[1] = y; + fs->dir[2] = z; + } + + glEnable(GL_DEPTH_TEST); + + if (fs->fog) + glEnable(GL_FOG); + else + glDisable(GL_FOG); + + glDepthMask(GL_TRUE); + glClearColor(0.5, 0.5, 0.8, 1.0); /* sky in the distance */ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + calcposobs(fs); + + gltrackball_rotate (fs->trackball); + + gluLookAt(fs->obs[0], fs->obs[1], fs->obs[2], + fs->obs[0] + fs->dir[0], + fs->obs[1] + fs->dir[1], + fs->obs[2] + fs->dir[2], + 0.0, 1.0, 0.0); + + glEnable(GL_TEXTURE_2D); + + /* draw ground using the computed texture */ + if (do_texture) { + glColor4f(1.0,1.0,1.0,1.0); /* white to get texture in it's true color */ +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D, fs->groundid); +#endif /* HAVE_GLBINDTEXTURE */ + } + else + glColor4f(0.54, 0.27, 0.07, 1.0); /* untextured ground color */ + glBegin(GL_QUADS); + glTexCoord2fv(qt[0]); + glVertex3fv(q[0]); + glTexCoord2fv(qt[1]); + glVertex3fv(q[1]); + glTexCoord2fv(qt[2]); + glVertex3fv(q[2]); + glTexCoord2fv(qt[3]); + glVertex3fv(q[3]); + mi->polygon_count++; + glEnd(); + + glAlphaFunc(GL_GEQUAL, 0.9); + if (fs->num_trees) + { + /* here do_texture IS True - and color used is white */ + glEnable(GL_ALPHA_TEST); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D,fs->treeid); +#endif /* HAVE_GLBINDTEXTURE */ + for(j=0;jnum_trees;j++) + mi->polygon_count += drawtree(fs->treepos[j].x ,fs->treepos[j].y ,fs->treepos[j].z ); + glDisable(GL_ALPHA_TEST); + } + glDisable(GL_TEXTURE_2D); + glDepthMask(GL_FALSE); + + if (fs->shadows) { + /* draw shadows with black color */ + glBegin(wire ? GL_LINE_STRIP : GL_TRIANGLES); + for (j = 0; j < fs->np; j++) { + glColor4f(black[0], black[1], black[2], fs->p[j].c[0][3]); + glVertex3f(fs->p[j].p[0][0], 0.1, fs->p[j].p[0][2]); + + glColor4f(black[0], black[1], black[2], fs->p[j].c[1][3]); + glVertex3f(fs->p[j].p[1][0], 0.1, fs->p[j].p[1][2]); + + glColor4f(black[0], black[1], black[2], fs->p[j].c[2][3]); + glVertex3f(fs->p[j].p[2][0], 0.1, fs->p[j].p[2][2]); + mi->polygon_count++; + } + glEnd(); + } + + glBegin(wire ? GL_LINE_STRIP : GL_TRIANGLES); + for (j = 0; j < fs->np; j++) { + /* draw particles: colors are computed in setpart */ + glColor4fv(fs->p[j].c[0]); + glVertex3fv(fs->p[j].p[0]); + + glColor4fv(fs->p[j].c[1]); + glVertex3fv(fs->p[j].p[1]); + + glColor4fv(fs->p[j].c[2]); + glVertex3fv(fs->p[j].p[2]); + mi->polygon_count++; + + setpart(fs, &fs->p[j]); + } + glEnd(); + + /* draw rain particles if no fire particles */ + if (!fs->np) + { + float timeused = gettimerain(); + glDisable(GL_TEXTURE_2D); + glShadeModel(GL_SMOOTH); + glBegin(GL_LINES); + for (j = 0; j < NUMPART; j++) { + glColor4f(0.7f,0.95f,1.0f,0.0f); + glVertex3fv(fs->r[j].oldpos); + glColor4f(0.3f,0.7f,1.0f,1.0f); + glVertex3fv(fs->r[j].pos); + setpartrain(fs, &fs->r[j],timeused); + mi->polygon_count++; + } + glEnd(); + glShadeModel(GL_FLAT); + } + + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + glDisable(GL_DEPTH_TEST); + glDisable(GL_FOG); + + /* manage framerate display */ + if (MI_IS_FPS(mi)) do_fps (mi); + glPopMatrix(); +} + + +static Bool Init(ModeInfo * mi) +{ + int i; + firestruct *fs = &fire[MI_SCREEN(mi)]; + + /* default settings */ + fs->eject_r = 0.1 + NRAND(10) * 0.03; + fs->dt = 0.015; + fs->eject_vy = 4; + fs->eject_vl = 1; + fs->ridtri = 0.1 + NRAND(10) * 0.005; + fs->maxage = 1.0 / fs->dt; + vinit(fs->obs, DEF_OBS[0], DEF_OBS[1], DEF_OBS[2]); + fs->v = 0.0; + fs->alpha = DEF_ALPHA; + fs->beta = DEF_BETA; + + /* initialise texture stuff */ + if (do_texture) + inittextures(mi); + else + { + fs->ttexture = (XImage*) NULL; + fs->gtexture = (XImage*) NULL; + } + + if (MI_IS_DEBUG(mi)) { + (void) fprintf(stderr, + "%s:\n\tnum_part=%d\n\ttrees=%d\n\tfog=%s\n\tshadows=%s\n\teject_r=%.3f\n\tridtri=%.3f\n", + MI_NAME(mi), + fs->np, + fs->num_trees, + fs->fog ? "on" : "off", + fs->shadows ? "on" : "off", + fs->eject_r, fs->ridtri); + } + + /* initialise particles and trees */ + for (i = 0; i < fs->np; i++) { + setnewpart(fs, &(fs->p[i])); + } + + if (fs->num_trees) + if (!inittree(mi)) { + return False; + } + + /* if no fire particles then initialise rain particles */ + if (!fs->np) + { + vinit(fs->min,-7.0f,-0.2f,-7.0f); + vinit(fs->max,7.0f,8.0f,7.0f); + for (i = 0; i < NUMPART; i++) { + setnewrain(fs, &(fs->r[i])); + } + } + + return True; +} + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Xlock hooks. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + + +ENTRYPOINT void +free_fire(ModeInfo * mi) +{ + firestruct *fs = &fire[MI_SCREEN(mi)]; + + if (mode_font != None && fs->fontbase != None) { + glDeleteLists(fs->fontbase, mode_font->max_char_or_byte2 - + mode_font->min_char_or_byte2 + 1); + fs->fontbase = None; + } + + if (fs->p != NULL) { + (void) free((void *) fs->p); + fs->p = (part *) NULL; + } + if (fs->r != NULL) { + (void) free((void *) fs->r); + fs->r = (rain *) NULL; + } + if (fs->treepos != NULL) { + (void) free((void *) fs->treepos); + fs->treepos = (treestruct *) NULL; + } + if (fs->ttexture != None) { + glDeleteTextures(1, &fs->treeid); + XDestroyImage(fs->ttexture); + fs->ttexture = None; + } + if (fs->gtexture != None) { + glDeleteTextures(1, &fs->groundid); + XDestroyImage(fs->gtexture); + fs->gtexture = None; + } +} + +/* + *----------------------------------------------------------------------------- + * Initialize fire. Called each time the window changes. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void +init_fire(ModeInfo * mi) +{ + firestruct *fs; + + MI_INIT (mi, fire); + fs = &fire[MI_SCREEN(mi)]; + fs->np = MI_COUNT(mi); + fs->fog = do_fog; + fs->shadows = do_shadows; + /* initialise fire particles if any */ + if ((fs->np)&&(fs->p == NULL)) { + if ((fs->p = (part *) calloc(fs->np, sizeof(part))) == NULL) { + free_fire(mi); + return; + } + } + else if (fs->r == NULL) { + /* initialise rain particles if no fire particles */ + if ((fs->r = (rain *) calloc(NUMPART, sizeof(part))) == NULL) { + free_fire(mi); + return; + } + } + + /* check tree number */ + if (do_texture) + fs->num_trees = (num_treesnum_trees = 0; + + fs->trackball = gltrackball_init (False); + + /* xlock GL stuff */ + if ((fs->glx_context = init_GL(mi)) != NULL) { + +#ifndef STANDALONE + Reshape(mi); /* xlock mode */ +#else + reshape_fire(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); /* xscreensaver mode */ +#endif + glDrawBuffer(GL_BACK); + if (!Init(mi)) { + free_fire(mi); + return; + } + } else { + MI_CLEARWINDOW(mi); + } +} + +/* + *----------------------------------------------------------------------------- + * Called by the mainline code periodically to update the display. + *----------------------------------------------------------------------------- + */ +ENTRYPOINT void draw_fire(ModeInfo * mi) +{ + firestruct *fs = &fire[MI_SCREEN(mi)]; + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + MI_IS_DRAWN(mi) = True; + + if (!fs->glx_context) + return; + + glXMakeCurrent(display, window, *(fs->glx_context)); + + glShadeModel(GL_FLAT); + glEnable(GL_DEPTH_TEST); + + /* makes particles blend with background */ + if (!MI_IS_WIREFRAME(mi)||(!fs->np)) + { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + /* fog stuff */ + glEnable(GL_FOG); + glFogi(GL_FOG_MODE, GL_EXP); + glFogfv(GL_FOG_COLOR, fogcolor); + glFogf(GL_FOG_DENSITY, 0.03); + glHint(GL_FOG_HINT, GL_NICEST); + + glPushMatrix(); + glRotatef(current_device_rotation(), 0, 0, 1); + DrawFire(mi); + glPopMatrix(); +#ifndef STANDALONE + Reshape(mi); /* xlock mode */ +#else + reshape_fire(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); /* xscreensaver mode */ +#endif + + glFinish(); + glXSwapBuffers(display, window); +} + + +/* + *----------------------------------------------------------------------------- + * The display is being taken away from us. Free up malloc'ed + * memory and X resources that we've alloc'ed. Only called + * once, we must zap everything for every screen. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void release_fire(ModeInfo * mi) +{ + if (mode_font != None) + { + /* only free-ed when there are no more screens used */ + XFreeFont(MI_DISPLAY(mi), mode_font); + mode_font = None; + } + FreeAllGL(mi); +} + +ENTRYPOINT Bool +fire_handle_event (ModeInfo *mi, XEvent *event) +{ + firestruct *fs = &fire[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, fs->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &fs->button_down_p)) + return True; + + return False; +} + + +#ifndef STANDALONE +ENTRYPOINT void change_fire(ModeInfo * mi) +{ + firestruct *fs = &fire[MI_SCREEN(mi)]; + + if (!fs->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(fs->glx_context)); + + /* if available, randomly change some values */ + if (do_fog) + fs->fog = LRAND() & 1; + if (do_shadows) + fs->shadows = LRAND() & 1; + /* reset observer position */ + frame = 0; + vinit(fs->obs, DEF_OBS[0], DEF_OBS[1], DEF_OBS[2]); + fs->v = 0.0; + /* particle randomisation */ + fs->eject_r = 0.1 + NRAND(10) * 0.03; + fs->ridtri = 0.1 + NRAND(10) * 0.005; + + if (MI_IS_DEBUG(mi)) { + (void) fprintf(stderr, + "%s:\n\tnum_part=%d\n\ttrees=%d\n\tfog=%s\n\tshadows=%s\n\teject_r=%.3f\n\tridtri=%.3f\n", + MI_NAME(mi), + fs->np, + fs->num_trees, + fs->fog ? "on" : "off", + fs->shadows ? "on" : "off", + fs->eject_r, fs->ridtri); + } +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE_2 ("GLForestFire", glforestfire, fire) + +#endif /* MODE_fire */ diff --git a/hacks/glx/glforestfire.man b/hacks/glx/glforestfire.man new file mode 100644 index 0000000..aae3a25 --- /dev/null +++ b/hacks/glx/glforestfire.man @@ -0,0 +1,130 @@ +.de EX \"Begin example +.ne 5 +.if n .sp 1 +.if t .sp .5 +.nf +.in +.5i +.. +.de EE +.fi +.in -.5i +.if n .sp 1 +.if t .sp .5 +.. +.TH XScreenSaver 1 "03-Oct-01" "X Version 11" +.SH NAME +glforestfire - draws a GL animation of sprinkling fire-like 3D triangles +.SH SYNOPSIS +.B glforestfire +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] +[\-count \fInumber_of_particles\fP] +[\-trees \fInumber_of_trees\fP] +[\-size \fIviewport_size\fP] +[\-texture] [\-no-texture] +[\-shadows] [\-no-shadows] +[\-fog] [\-no-fog] +[\-wireframe] [\-no-wireframe] +[\-wander] [\-no-wander] +[\-trackmouse] [\-no-trackmouse] +[\-fps] +.SH DESCRIPTION +The \fIglforestfire\fP program draws an animation of sprinkling fire-like 3D triangles in +a landscape filled with trees. +.SH OPTIONS +.I glforestfire +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-trees \fInumber_of_trees\fP\fP +Specify how much trees are drawn in the landscape. +.TP 8 +.B \-count \fInumber_of_particles\fP\fP +Specify how much fire particles are drawn. A very special case is 0 +wich means that you get +.B rain +! +.TP 8 +.B \-size \fIviewport_size\fP\fP +Viewport of GL scene is specified size if greater than 32 and less than screensize. Default value is 0, meaning full screensize. +.TP 8 +.B \-texture +Show a textured ground and the trees. This is the default. +.TP 8 +.B \-no\-texture +Disables texturing the landscape. This implies that no trees are drawn. +.TP 8 +.B \-shadows +Show a shadow for each particle on the ground. This is the default. +.TP 8 +.B \-no\-shadows +Disables the drawing of the shadows. +.TP 8 +.B \-fog +Show a fog in the distance. +.TP 8 +.B \-no\-fog +Disables the fog. This is the default. +.TP 8 +.B \-wander +Move the observer around the landscape. This is the default. +.TP 8 +.B \-no\-wander +Keep the fire centered on the screen. +.TP 8 +.B \-trackmouse +Let the mouse be a joystick to change the view of the landscape. +This implies +.I \-no\-wander. +.TP 8 +.B \-no\-trackmouse +Disables mouse tracking. This is the default. +.TP 8 +.B \-wire +Draw a wireframe rendition of the fire: this will consist only of +single-pixel lines for the triangles. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2001 by Eric Lassauge. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +The original code for this hack was written by David Bucciarelli +(tech.hmw@plus.it) and could be found in the demo package +of Mesa (Mesa-3.2/3Dfx/demos/). This hack is the result of the merge of +two of the David's demos (fire and rain). + +.SH AUTHOR +David Bucciarelli +Eric Lassauge diff --git a/hacks/glx/glhanoi.c b/hacks/glx/glhanoi.c new file mode 100644 index 0000000..865930f --- /dev/null +++ b/hacks/glx/glhanoi.c @@ -0,0 +1,2086 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* glhanoi, Copyright (c) 2005, 2009 Dave Atkinson + * except noise function code Copyright (c) 2002 Ken Perlin + * Modified by Lars Huttar (c) 2010, to generalize to 4 or more poles + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#include + +#include "rotator.h" + +#define DEF_LIGHT "True" +#define DEF_FOG "False" +#define DEF_TEXTURE "True" +#define DEF_POLES "0" /* choose random value */ +#define DEF_SPEED "1" +#define DEF_TRAILS "2" + +#define DEFAULTS "*delay: 15000\n" \ + "*count: 0\n" \ + "*showFPS: False\n" \ + "*wireframe: False\n" + +# define release_glhanoi 0 + +/* polygon resolution of poles and disks */ +#define NSLICE 32 +#define NLOOPS 1 + +/* How long to wait at start and finish (seconds). */ +#define START_DURATION 1.0 +#define FINISH_DURATION 1.0 +#define BASE_LENGTH 30.0 +#define BOARD_SQUARES 8 + +/* Don't draw trail lines till they're this old (sec). + Helps trails not be "attached" to the disks. */ +#define TRAIL_START_DELAY 0.1 + +#define MAX_CAMERA_RADIUS 250.0 +#define MIN_CAMERA_RADIUS 75.0 + +#define MARBLE_SCALE 1.01 + +#undef BELLRAND +/* Return a double precision number in [0...n], with bell curve distribution. */ +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +enum { + MARBLE_TEXURE, + N_TEXTURES +}; + +#define MARBLE_TEXTURE_SIZE 256 + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include +#include "xlockmore.h" + +#ifdef USE_GL /* whole file */ + +typedef struct timeval glhtime; + +static double getTime(void) +{ + struct timeval t; +#ifdef GETTIMEOFDAY_TWO_ARGS + gettimeofday(&t, NULL); +#else /* !GETTIMEOFDAY_TWO_ARGS */ + gettimeofday(&t); +#endif /* !GETTIMEOFDAY_TWO_ARGS */ + return t.tv_sec + t.tv_usec / 1000000.0; +} + +typedef enum { + START, + MOVE_DISK, + MOVE_FINISHED, + FINISHED, + MONEY_SHOT, + INVALID = -1 +} State; + +typedef struct { + int id; + GLuint displayList; + GLfloat position[3]; + GLfloat rotation[3]; + GLfloat color[4]; + GLfloat base0; + GLfloat base1; + GLfloat height; + GLfloat xmin, xmax, ymin, zmin, zmax; + GLfloat u1, u2; + GLfloat t1, t2; + GLfloat ucostheta, usintheta; + GLfloat dx, dz; + GLdouble rotAngle; /* degree of "flipping" so far, during travel */ + GLdouble phi; /* angle of motion in xz plane */ + GLfloat speed; + int polys; +} Disk; + +typedef struct { + Disk **data; + int count; + int size; + GLfloat position[3]; +} Pole; + +/* A SubProblem is a recursive subdivision of the problem, and means + "Move nDisks disks from src pole to dst pole, using the poles indicated in 'available'." */ +typedef struct { + int nDisks; + int src, dst; + unsigned long available; /* a bitmask of poles that have no smaller disks on them */ +} SubProblem; + +typedef struct { + GLfloat position[3]; + double startTime, endTime; + Bool isEnd; +} TrailPoint; + +typedef struct { + GLXContext *glx_context; + State state; + Bool wire; + Bool fog; + Bool light; + Bool layoutLinear; + GLfloat trailDuration; + double startTime; + double lastTime; + double duration; + int numberOfDisks; + int numberOfPoles; + int numberOfMoves; + int maxDiskIdx; + int magicNumber; + Disk *currentDisk; + int move; + /* src, tmp, dst: index of pole that is source / storage / destination for + current move */ + int src; + int tmp; + int dst; + int oldsrc; + int oldtmp; + int olddst; + GLfloat speed; /* coefficient for how fast the disks move */ + SubProblem *solveStack; + int solveStackSize, solveStackIdx; + Pole *pole; + float boardSize; + float baseLength; + float baseWidth; + float baseHeight; + float poleRadius; + float poleHeight; + float poleOffset; + float poleDist; /* distance of poles from center, for round layout */ + float diskHeight; + float maxDiskRadius; + float *diskPos; /* pre-computed disk positions on rods */ + Disk *disk; + GLint floorList; + GLint baseList; + GLint poleList; + int floorpolys, basepolys, polepolys; + int trailQSize; + TrailPoint *trailQ; + int trailQFront, trailQBack; + GLfloat camera[3]; + GLfloat centre[3]; + rotator *the_rotator; + Bool button_down_p; + Bool texture; + GLuint textureNames[N_TEXTURES]; + int drag_x; + int drag_y; + int noise_initted; + int p[512]; +} glhcfg; + +static glhcfg *glhanoi_cfg = NULL; +static Bool fog; +static Bool light; +static Bool texture; +static GLfloat trails; +static int poles; +static GLfloat speed; + +static XrmOptionDescRec opts[] = { + {"-light", ".glhanoi.light", XrmoptionNoArg, "true"}, + {"+light", ".glhanoi.light", XrmoptionNoArg, "false"}, + {"-fog", ".glhanoi.fog", XrmoptionNoArg, "true"}, + {"+fog", ".glhanoi.fog", XrmoptionNoArg, "false"}, + {"-texture", ".glhanoi.texture", XrmoptionNoArg, "true"}, + {"+texture", ".glhanoi.texture", XrmoptionNoArg, "false"}, + {"-trails", ".glhanoi.trails", XrmoptionSepArg, 0}, + {"-poles", ".glhanoi.poles", XrmoptionSepArg, 0 }, + {"-speed", ".glhanoi.speed", XrmoptionSepArg, 0 } +}; + +static argtype vars[] = { + {&light, "light", "Light", DEF_LIGHT, t_Bool}, + {&fog, "fog", "Fog", DEF_FOG, t_Bool}, + {&texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&trails, "trails", "Trails", DEF_TRAILS, t_Float}, + {&poles, "poles", "Poles", DEF_POLES, t_Int}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float} +}; + +static OptionStruct desc[] = { + {"+/-light", "whether to light the scene"}, + {"+/-fog", "whether to apply fog to the scene"}, + {"+/-texture", "whether to apply texture to the scene"}, + {"-trails t", "how long of disk trails to show (sec.)"}, + {"-poles r", "number of poles to move disks between"}, + {"-speed s", "speed multiplier"} +}; + +ENTRYPOINT ModeSpecOpt glhanoi_opts = { countof(opts), opts, countof(vars), vars, desc }; + +#ifdef USE_MODULES + +ModStruct glhanoi_description = { + "glhanoi", "init_glhanoi", "draw_glhanoi", NULL, + "draw_glhanoi", "init_glhanoi", "free_glhanoi", &glhanoi_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Towers of Hanoi", 0, NULL +}; + +#endif + +static const GLfloat cBlack[] = { 0.0, 0.0, 0.0, 1.0 }; +static const GLfloat cWhite[] = { 1.0, 1.0, 1.0, 1.0 }; +static const GLfloat poleColor[] = { 0.545, 0.137, 0.137 }; +static const GLfloat baseColor[] = { 0.34, 0.34, 0.48 }; +/* static const GLfloat baseColor[] = { 0.545, 0.137, 0.137 }; */ +static const GLfloat fogcolor[] = { 0.5, 0.5, 0.5 }; +static GLfloat trailColor[] = { 1.0, 1.0, 1.0, 0.5 }; + +static const float left[] = { 1.0, 0.0, 0.0 }; +static const float up[] = { 0.0, 1.0, 0.0 }; +static const float front[] = { 0.0, 0.0, 1.0 }; +static const float right[] = { -1.0, 0.0, 0.0 }; +static const float down[] = { 0.0, -1.0, 0.0 }; +static const float back[] = { 0.0, 0.0, -1.0 }; + +static const GLfloat pos0[4] = { 50.0, 50.0, 50.0, 0.0 }; +static const GLfloat amb0[4] = { 0.0, 0.0, 0.0, 1.0 }; +static const GLfloat dif0[4] = { 1.0, 1.0, 1.0, 1.0 }; +static const GLfloat spc0[4] = { 0.0, 1.0, 1.0, 1.0 }; + +static const GLfloat pos1[4] = { -50.0, 50.0, -50.0, 0.0 }; +static const GLfloat amb1[4] = { 0.0, 0.0, 0.0, 1.0 }; +static const GLfloat dif1[4] = { 1.0, 1.0, 1.0, 1.0 }; +static const GLfloat spc1[4] = { 1.0, 1.0, 1.0, 1.0 }; + +static float g = 3.0 * 9.80665; /* hmm, looks like we need more gravity, Scotty... */ + +static void checkAllocAndExit(Bool item, char *descr) { + if (!item) { + fprintf(stderr, "%s: unable to allocate memory for %s\n", + progname, descr); + exit(EXIT_FAILURE); + } +} + +#define DOPUSH(X, Y) (((X)->count) >= ((X)->size)) ? NULL : ((X)->data[(X)->count++] = (Y)) +#define DOPOP(X) (X)->count <= 0 ? NULL : ((X)->data[--((X)->count)]) + +/* push disk d onto pole idx */ +static Disk *push(glhcfg *glhanoi, int idx, Disk * d) +{ + return DOPUSH(&glhanoi->pole[idx], d); +} + +/* pop the top disk from pole idx */ +static Disk *pop(glhcfg *glhanoi, int idx) +{ + return DOPOP(&glhanoi->pole[idx]); +} + +static inline void swap(int *x, int *y) +{ + *x = *x ^ *y; + *y = *x ^ *y; + *x = *x ^ *y; +} + +/* + * magic - it's magic... + * Return 1 if the number of trailing zeroes on i is even, unless i is 1 or 0. + */ +static int magic(int i) +{ + int count = 0; + if(i <= 1) + return 0; + while((i & 0x01) == 0) { + i >>= 1; + count++; + } + return count % 2 == 0; +} + +static float distance(float *p0, float *p1) +{ + float x, y, z; + x = p1[0] - p0[0]; + y = p1[1] - p0[1]; + z = p1[2] - p0[2]; + return (float)sqrt(x * x + y * y + z * z); +} + +/* What is this for? + = c / (a b - 0.25 (a^2 + 2 a b + b^2) ) + = c / (-0.25 (a^2 - 2 a b + b^2) ) + = c / (-0.25 ((a - b)(a - b))) + = -4 c / (a - b)^2 +static GLfloat A(GLfloat a, GLfloat b, GLfloat c) +{ + GLfloat sum = a + b; + return c / (a * b - 0.25 * sum * sum); +} +*/ + +static void moveSetup(glhcfg *glhanoi, Disk * disk) +{ + float h, ymax; + float u; + int src = glhanoi->src; + int dst = glhanoi->dst; + GLfloat theta; + GLfloat sintheta, costheta; + double dh; + double dx, dz; /* total x and z distances from src to dst */ + Pole *poleSrc, *poleDst; + + poleSrc = &(glhanoi->pole[src]); + poleDst = &(glhanoi->pole[dst]); + + disk->xmin = poleSrc->position[0]; + /* glhanoi->poleOffset * (src - (glhanoi->numberOfPoles - 1.0f) * 0.5); */ + disk->xmax = poleDst->position[0]; + /* disk->xmax = glhanoi->poleOffset * (dst - (glhanoi->numberOfPoles - 1.0f) * 0.5); */ + disk->ymin = glhanoi->poleHeight; + disk->zmin = poleSrc->position[2]; + disk->zmax = poleDst->position[2]; + + dx = disk->xmax - disk->xmin; + dz = disk->zmax - disk->zmin; + + if(glhanoi->state != FINISHED) { + double xxx = ((dx < 0) ? 180.0 : -180.0); + if(random() % 6 == 0) { + disk->rotAngle = xxx * (2 - 2 * random() % 2) * (random() % 3 + 1); + } else { + disk->rotAngle = xxx; + } + if(random() % 4 == 0) { + /* Backflip */ + disk->rotAngle = -disk->rotAngle; + } + } else { + disk->rotAngle = -180.0; + } + + disk->base0 = glhanoi->diskPos[poleSrc->count]; + disk->base1 = (glhanoi->state == FINISHED) ? + disk->base0 : glhanoi->diskPos[poleDst->count]; + + /* horizontal distance to travel? */ + /* was: absx = sqrt(disk->xmax - disk->xmin); */ + dh = distance(poleSrc->position, poleDst->position); + /* absx = sqrt(dh); */ + ymax = glhanoi->poleHeight + dh; + if(glhanoi->state == FINISHED) { + ymax += dh * (double)(glhanoi->numberOfDisks - disk->id); + } + h = ymax - disk->ymin; + /* A(a, b, c) = -4 c / (a - b)^2 */ + /* theta = atan(4 h / (b - a)) */ + theta = atan(4 * h / dh); + if(theta < 0.0) + theta += M_PI; + costheta = cos(theta); + sintheta = sin(theta); + u = (float) + sqrt(fabs + (-g / + /* (2.0 * A(disk->xmin, disk->xmax, h) * costheta * costheta))); */ + (2.0 * -4 * h / (dh * dh) * costheta * costheta))); + disk->usintheta = u * sintheta; + disk->ucostheta = u * costheta; + /* Not to be confused: disk->dx is the per-time-unit portion of dx */ + disk->dx = disk->ucostheta * dx / dh; + disk->dz = disk->ucostheta * dz / dh; + disk->t1 = + (-u + sqrt(u * u + 2.0 * g * fabs(disk->ymin - disk->base0))) / g; + disk->u1 = u + g * disk->t1; + disk->t2 = 2.0 * disk->usintheta / g; + disk->u2 = disk->usintheta - g * disk->t2; + + /* Compute direction of travel, in the XZ plane. */ + disk->phi = atan(dz / dx); + disk->phi *= 180.0 / M_PI; /* convert radians to degrees */ +} + +/* For debugging: show a value as a string of ones and zeroes +static const char *byteToBinary(int x) { + static char b[9]; + int i, z; + + for (z = 128, i = 0; z > 0; z >>= 1, i++) { + b[i] = ((x & z) == z) ? '1' : '0'; + } + b[i] = '\0'; + + return b; +} +*/ + +static void pushMove(glhcfg *glhanoi, int n, int src, int dst, int avail) { + SubProblem *sp = &(glhanoi->solveStack[glhanoi->solveStackIdx++]); + + if (glhanoi->solveStackIdx > glhanoi->solveStackSize) { + fprintf(stderr, "solveStack overflow: pushed index %d: %d from %d to %d, using %d\n", + glhanoi->solveStackIdx, n, src, dst, avail); + exit(EXIT_FAILURE); + } + + sp->nDisks = n; + sp->src = src; + sp->dst = dst; + sp->available = avail & ~((unsigned long)(1 << src)) + & ~((unsigned long)(1 << dst)); + /* + fprintf(stderr, "Debug: > pushed solveStack %d: %d from %d to %d, using %s\n", + glhanoi->solveStackIdx - 1, n, src, dst, byteToBinary(sp->available)); + */ +} + +static Bool solveStackEmpty(glhcfg *glhanoi) { + return (glhanoi->solveStackIdx < 1); +} + +static SubProblem *popMove(glhcfg *glhanoi) { + SubProblem *sp; + if (solveStackEmpty(glhanoi)) return (SubProblem *)NULL; + sp = &(glhanoi->solveStack[--glhanoi->solveStackIdx]); + /* fprintf(stderr, "Debug: < popped solveStack %d: %d from %d to %d, using %s\n", + glhanoi->solveStackIdx, sp->nDisks, sp->src, sp->dst, byteToBinary(sp->available)); */ + return sp; +} + +/* Return number of bits set in b */ +static int numBits(unsigned long b) { + int count = 0; + while (b) { + count += b & 0x1u; + b >>= 1; + } + return count; +} + +/* Return index (power of 2) of least significant 1 bit. */ +static int bitScan(unsigned long b) { + int count; + for (count = 0; b; count++, b >>= 1) { + if (b & 0x1u) return count; + } + return -1; +} + +/* A bit pattern representing all poles */ +#define ALL_POLES ((1 << glhanoi->numberOfPoles) - 1) + +#define REMOVE_BIT(a, b) ((a) & ~(1 << (b))) +#define ADD_BIT(a, b) ((a) | (1 << (b))) + +static void makeMove(glhcfg *glhanoi) +{ + if (glhanoi->numberOfPoles == 3) { + int fudge = glhanoi->move + 2; + int magicNumber = magic(fudge); + + + glhanoi->currentDisk = pop(glhanoi, glhanoi->src); + moveSetup(glhanoi, glhanoi->currentDisk); + push(glhanoi, glhanoi->dst, glhanoi->currentDisk); + + fudge = fudge % 2; + + if(fudge == 1 || magicNumber) { + swap(&glhanoi->src, &glhanoi->tmp); + } + if(fudge == 0 || glhanoi->magicNumber) { + swap(&glhanoi->dst, &glhanoi->tmp); + } + glhanoi->magicNumber = magicNumber; + } else { + SubProblem sp; + int tmp = 0; + + if (glhanoi->move == 0) { + /* Initialize the solution stack. Original problem: + move all disks from pole 0 to furthest pole, + using all other poles. */ + pushMove(glhanoi, glhanoi->numberOfDisks, 0, + glhanoi->numberOfPoles - 1, + REMOVE_BIT(REMOVE_BIT(ALL_POLES, 0), glhanoi->numberOfPoles - 1)); + } + + while (!solveStackEmpty(glhanoi)) { + int k, numAvail; + sp = *popMove(glhanoi); + + if (sp.nDisks == 1) { + /* We have a single, concrete move to do. */ + /* moveSetup uses glhanoi->src, dst. */ + glhanoi->src = sp.src; + glhanoi->dst = sp.dst; + glhanoi->tmp = tmp; /* Probably unnecessary */ + + glhanoi->currentDisk = pop(glhanoi, sp.src); + moveSetup(glhanoi, glhanoi->currentDisk); + push(glhanoi, sp.dst, glhanoi->currentDisk); + + return; + } else { + /* Divide and conquer, using Frame-Stewart algorithm, until we get to base case */ + if (sp.nDisks == 1) break; + + numAvail = numBits(sp.available); + if (numAvail < 2) k = sp.nDisks - 1; + else if(numAvail >= sp.nDisks - 2) k = 1; + /* heuristic for optimal k: sqrt(2n) (see http://www.cs.wm.edu/~pkstoc/boca.pdf) */ + else k = (int)(sqrt(2 * sp.nDisks)); + + if (k >= sp.nDisks) k = sp.nDisks - 1; + else if (k < 1) k = 1; + + tmp = bitScan(sp.available); + /* fprintf(stderr, "Debug: k is %d, tmp is %d\n", k, tmp); */ + if (tmp == -1) { + fprintf(stderr, "Error: n > 1 (%d) and no poles available\n", + sp.nDisks); + } + + /* Push on moves in reverse order, since this is a stack. */ + pushMove(glhanoi, k, tmp, sp.dst, + REMOVE_BIT(ADD_BIT(sp.available, sp.src), tmp)); + pushMove(glhanoi, sp.nDisks - k, sp.src, sp.dst, + REMOVE_BIT(sp.available, tmp)); + pushMove(glhanoi, k, sp.src, tmp, + REMOVE_BIT(ADD_BIT(sp.available, sp.dst), tmp)); + + /* Repeat until we've found a move we can make. */ + } + } + } +} + +static double lerp(double alpha, double start, double end) +{ + return start + alpha * (end - start); +} + +static void upfunc(GLdouble t, Disk * d) +{ + d->position[0] = d->xmin; + d->position[1] = d->base0 + (d->u1 - 0.5 * g * t) * t; + d->position[2] = d->zmin; + + d->rotation[1] = 0.0; +} + +static void parafunc(GLdouble t, Disk * d) +{ + /* ##was: d->position[0] = d->xmin + d->ucostheta * t; */ + d->position[0] = d->xmin + d->dx * t; + d->position[2] = d->zmin + d->dz * t; + d->position[1] = d->ymin + (d->usintheta - 0.5 * g * t) * t; + + d->rotation[1] = d->rotAngle * t / d->t2; + /* d->rotAngle * (d->position[0] - d->xmin) / (d->xmax - d->xmin); */ +} + +static void downfunc(GLdouble t, Disk * d) +{ + d->position[0] = d->xmax; + d->position[1] = d->ymin + (d->u2 - 0.5 * g * t) * t; + d->position[2] = d->zmax; + + d->rotation[1] = 0.0; +} + +#define normalizeQ(i) ((i) >= glhanoi->trailQSize ? (i) - glhanoi->trailQSize : (i)) +#define normalizeQNeg(i) ((i) < 0 ? (i) + glhanoi->trailQSize : (i)) + +/* Add trail point at position posn at time t onto back of trail queue. + Removes old trails if necessary to make room. */ +static void enQTrail(glhcfg *glhanoi, GLfloat *posn) +{ + if (glhanoi->trailQSize && glhanoi->state != MONEY_SHOT) { + TrailPoint *tp = &(glhanoi->trailQ[glhanoi->trailQBack]); + double t = getTime(); + + tp->position[0] = posn[0]; + tp->position[1] = posn[1] + glhanoi->diskHeight; + /* Slight jitter to prevent clashing with other trails */ + tp->position[2] = posn[2] + (glhanoi->move % 23) * 0.01; + tp->startTime = t + TRAIL_START_DELAY; + tp->endTime = t + TRAIL_START_DELAY + glhanoi->trailDuration; + tp->isEnd = False; + + /* Update queue back/front indices */ + glhanoi->trailQBack = normalizeQ(glhanoi->trailQBack + 1); + if (glhanoi->trailQBack == glhanoi->trailQFront) + glhanoi->trailQFront = normalizeQ(glhanoi->trailQFront + 1); + } +} + +/* Mark last trailpoint in queue as the end of a trail. */ +/* was: #define endTrail(glh) ((glh)->trailQ[(glh)->trailQBack].isEnd = True) */ +static void endTrail(glhcfg *glhanoi) { + if (glhanoi->trailQSize) + glhanoi->trailQ[normalizeQNeg(glhanoi->trailQBack - 1)].isEnd = True; +} + +/* Update disk d's position and rotation based on time t. + Returns true iff move is finished. */ +static Bool computePosition(glhcfg *glhanoi, GLfloat t, Disk * d) +{ + Bool finished = False; + + if(t < d->t1) { + upfunc(t, d); + } else if(t < d->t1 + d->t2) { + parafunc(t - d->t1, d); + enQTrail(glhanoi, d->position); + } else { + downfunc(t - d->t1 - d->t2, d); + if(d->position[1] <= d->base1) { + d->position[1] = d->base1; + finished = True; + endTrail(glhanoi); + } + } + return finished; +} + +static void updateView(glhcfg *glhanoi) +{ + double longitude, latitude, radius; + double a, b, c, A, B; + + get_position(glhanoi->the_rotator, NULL, NULL, &radius, + !glhanoi->button_down_p); + get_rotation(glhanoi->the_rotator, &longitude, &latitude, NULL, + !glhanoi->button_down_p); + longitude += glhanoi->camera[0]; + latitude += glhanoi->camera[1]; + radius += glhanoi->camera[2]; + /* FUTURE: tweak this to be smooth: */ + longitude = longitude - floor(longitude); + latitude = latitude - floor(latitude); + radius = radius - floor(radius); + if(latitude > 0.5) { + latitude = 1.0 - latitude; + } + if(radius > 0.5) { + radius = 1.0 - radius; + } + + b = glhanoi->centre[1]; + c = (MIN_CAMERA_RADIUS + + radius * (MAX_CAMERA_RADIUS - MIN_CAMERA_RADIUS)); + A = M_PI / 4.0 * (1.0 - latitude); + a = sqrt(b * b + c * c - 2.0 * b * c * cos(A)); + B = asin(sin(A) * b / a); + glRotatef(-B * 180 / M_PI, 1.0, 0.0, 0.0); + + glTranslatef(0.0f, 0.0f, + -(MIN_CAMERA_RADIUS + + radius * (MAX_CAMERA_RADIUS - MIN_CAMERA_RADIUS))); + glRotatef(longitude * 360.0, 0.0f, 1.0f, 0.0f); + glRotatef(latitude * 180.0, cos(longitude * 2.0 * M_PI), 0.0, + sin(longitude * 2.0 * M_PI)); +} + +static void changeState(glhcfg *glhanoi, State state) +{ + glhanoi->state = state; + glhanoi->startTime = getTime(); +} + +static Bool finishedHanoi(glhcfg *glhanoi) { + /* use different criteria depending on algorithm */ + return (glhanoi->numberOfPoles == 3 ? + glhanoi->move >= glhanoi->numberOfMoves : + solveStackEmpty(glhanoi)); +} + +static void update_glhanoi(glhcfg *glhanoi) +{ + double t = getTime() - glhanoi->startTime; + int i; + Bool done; + + switch (glhanoi->state) { + case START: + if(t < glhanoi->duration) { + break; + } + glhanoi->move = 0; + if(glhanoi->numberOfDisks % 2 == 0) { + swap(&glhanoi->tmp, &glhanoi->dst); + } + glhanoi->magicNumber = 1; + makeMove(glhanoi); + changeState(glhanoi, MOVE_DISK); + break; + + case MOVE_DISK: + if(computePosition(glhanoi, t * glhanoi->currentDisk->speed, glhanoi->currentDisk)) { + changeState(glhanoi, MOVE_FINISHED); + } + break; + + case MOVE_FINISHED: + ++glhanoi->move; + if(!finishedHanoi(glhanoi)) { + makeMove(glhanoi); + changeState(glhanoi, MOVE_DISK); + } else { + glhanoi->duration = FINISH_DURATION; + changeState(glhanoi, FINISHED); + } + break; + + case FINISHED: + if (t < glhanoi->duration) + break; + glhanoi->src = glhanoi->olddst; + glhanoi->dst = glhanoi->oldsrc; + for(i = 0; i < glhanoi->numberOfDisks; ++i) { + Disk *disk = pop(glhanoi, glhanoi->src); + assert(disk != NULL); + moveSetup(glhanoi, disk); + } + for(i = glhanoi->maxDiskIdx; i >= 0; --i) { + push(glhanoi, glhanoi->dst, &glhanoi->disk[i]); + } + changeState(glhanoi, MONEY_SHOT); + break; + + case MONEY_SHOT: + done = True; + for(i = glhanoi->maxDiskIdx; i >= 0; --i) { + double delay = 0.25 * i; + int finished; + + if(t - delay < 0) { + done = False; + continue; + } + + finished = computePosition(glhanoi, t - delay, &glhanoi->disk[i]); + glhanoi->disk[i].rotation[1] = 0.0; + + if(!finished) { + done = False; + } + } + if(done) { + glhanoi->src = glhanoi->oldsrc; + glhanoi->tmp = glhanoi->oldtmp; + glhanoi->dst = glhanoi->olddst; + changeState(glhanoi, START); + } + break; + + case INVALID: + default: + fprintf(stderr, "Invalid state\n"); + break; + } +} + +static void HSVtoRGBf(GLfloat h, GLfloat s, GLfloat v, + GLfloat * r, GLfloat * g, GLfloat * b) +{ + if(s == 0.0) { + *r = v; + *g = v; + *b = v; + } else { + GLfloat i, f, p, q, t; + if(h >= 360.0) { + h = 0.0; + } + h /= 60.0; /* h now in [0,6). */ + i = floor((double)h); /* i now largest integer <= h */ + f = h - i; /* f is no fractional part of h */ + p = v * (1.0 - s); + q = v * (1.0 - (s * f)); + t = v * (1.0 - (s * (1.0 - f))); + switch ((int)i) { + case 0: + *r = v; + *g = t; + *b = p; + break; + case 1: + *r = q; + *g = v; + *b = p; + break; + case 2: + *r = p; + *g = v; + *b = t; + break; + case 3: + *r = p; + *g = q; + *b = v; + break; + case 4: + *r = t; + *g = p; + *b = v; + break; + case 5: + *r = v; + *g = p; + *b = q; + break; + } + } +} + +static void HSVtoRGBv(GLfloat * hsv, GLfloat * rgb) +{ + HSVtoRGBf(hsv[0], hsv[1], hsv[2], &rgb[0], &rgb[1], &rgb[2]); +} + +static void setMaterial(const GLfloat color[3], const GLfloat hlite[3], int shininess) +{ + glColor3fv(color); + glMaterialfv(GL_FRONT, GL_SPECULAR, hlite); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glMateriali(GL_FRONT, GL_SHININESS, shininess); /* [0,128] */ +} + +/* + * drawTube: I know all this stuff is available in gluQuadrics + * but I'd originally intended to texture the poles with a 3D wood + * texture, but I was having difficulty getting wood... what? Why + * are all you Amercians laughing..? Anyway, I don't know if enough + * people's hardware supports 3D textures, so I didn't bother (xorg + * ATI server doesn't :-( ) + */ +static int drawTube(GLdouble bottomRadius, GLdouble topRadius, + GLdouble bottomThickness, GLdouble topThickness, + GLdouble height, GLuint nSlice, GLuint nLoop) +{ + int polys = 0; + GLfloat y; + GLfloat *cosCache = malloc(sizeof(GLfloat) * nSlice); + GLfloat *sinCache = malloc(sizeof(GLfloat) * nSlice); + GLint slice; + GLuint loop; + GLint lastSlice = nSlice - 1; + GLfloat radius; + GLfloat innerRadius; + + if(bottomThickness > bottomRadius) { + bottomThickness = bottomRadius; + } + if(topThickness > topRadius) { + topThickness = topRadius; + } + if(bottomThickness < 0.0) { + bottomThickness = 0.0; + } + if(topThickness < 0.0) { + topThickness = 0.0; + } +/* if(topRadius >= bottomRadius) { + maxRadius = topRadius; + } else { + maxRadius = bottomRadius; + } */ + + /* bottom */ + y = 0.0; + radius = bottomRadius; + innerRadius = bottomRadius - bottomThickness; + /* innerTexCoordSize = texCoordSize * innerRadius / maxRadius; */ + /* outerTexCoordSize = texCoordSize * radius / maxRadius; */ + /* yTexCoord = minTexCoord; */ + + glBegin(GL_QUAD_STRIP); + + glNormal3f(0.0, -1.0, 0.0); + + /* glTexCoord3f(midTexCoord, yTexCoord, midTexCoord + innerTexCoordSize); */ + glVertex3f(0.0, y, innerRadius); + + /* glTexCoord3f(midTexCoord, yTexCoord, midTexCoord + outerTexCoordSize); */ + glVertex3f(0.0, y, radius); + + for(slice = lastSlice; slice >= 0; --slice) { + GLfloat theta = 2.0 * M_PI * (double)slice / nSlice; + + cosCache[slice] = cos(theta); + sinCache[slice] = sin(theta); + + /* glTexCoord3f(midTexCoord + sinCache[slice] * innerTexCoordSize, */ + /* yTexCoord, */ + /* midTexCoord + cosCache[slice] * innerTexCoordSize); */ + glVertex3f(innerRadius * sinCache[slice], y, + innerRadius * cosCache[slice]); + /* glTexCoord3f(midTexCoord + sinCache[slice] * outerTexCoordSize, */ + /* yTexCoord, */ + /* midTexCoord + cosCache[slice] * outerTexCoordSize); */ + glVertex3f(radius * sinCache[slice], y, radius * cosCache[slice]); + polys++; + } + glEnd(); + + /* middle */ + for(loop = 0; loop < nLoop; ++loop) { + GLfloat lowerRadius = + bottomRadius + (topRadius - + bottomRadius) * (float)loop / (nLoop); + GLfloat upperRadius = + bottomRadius + (topRadius - bottomRadius) * (float)(loop + + 1) / + (nLoop); + GLfloat lowerY = height * (float)loop / (nLoop); + GLfloat upperY = height * (float)(loop + 1) / (nLoop); + GLfloat factor = (topRadius - topThickness) - + (bottomRadius - bottomThickness); + + /* outside */ + glBegin(GL_QUAD_STRIP); + for(slice = 0; slice < nSlice; ++slice) { + glNormal3f(sinCache[slice], 0.0, cosCache[slice]); + glVertex3f(upperRadius * sinCache[slice], upperY, + upperRadius * cosCache[slice]); + glVertex3f(lowerRadius * sinCache[slice], lowerY, + lowerRadius * cosCache[slice]); + polys++; + } + glNormal3f(0.0, 0.0, 1.0); + glVertex3f(0.0, upperY, upperRadius); + glVertex3f(0.0, lowerY, lowerRadius); + polys++; + glEnd(); + + /* inside */ + lowerRadius = bottomRadius - bottomThickness + + factor * (float)loop / (nLoop); + upperRadius = bottomRadius - bottomThickness + + factor * (float)(loop + 1) / (nLoop); + + glBegin(GL_QUAD_STRIP); + glNormal3f(0.0, 0.0, -1.0); + glVertex3f(0.0, upperY, upperRadius); + glVertex3f(0.0, lowerY, lowerRadius); + for(slice = lastSlice; slice >= 0; --slice) { + glNormal3f(-sinCache[slice], 0.0, -cosCache[slice]); + glVertex3f(upperRadius * sinCache[slice], upperY, + upperRadius * cosCache[slice]); + glVertex3f(lowerRadius * sinCache[slice], lowerY, + lowerRadius * cosCache[slice]); + polys++; + } + glEnd(); + } + + /* top */ + y = height; + radius = topRadius; + innerRadius = topRadius - topThickness; + + glBegin(GL_QUAD_STRIP); + glNormal3f(0.0, 1.0, 0.0); + for(slice = 0; slice < nSlice; ++slice) { + glVertex3f(innerRadius * sinCache[slice], y, + innerRadius * cosCache[slice]); + + glVertex3f(radius * sinCache[slice], y, radius * cosCache[slice]); + polys++; + } + glVertex3f(0.0, y, innerRadius); + glVertex3f(0.0, y, radius); + glEnd(); + return polys; +} + +static int drawPole(GLfloat radius, GLfloat length) +{ + return drawTube(radius, radius, radius, radius, length, NSLICE, NLOOPS); +} + +static int drawDisk3D(GLdouble inner_radius, GLdouble outer_radius, + GLdouble height) +{ + return drawTube(outer_radius, outer_radius, outer_radius - inner_radius, + outer_radius - inner_radius, height, NSLICE, NLOOPS); +} + +/* used for drawing base */ +static int drawCuboid(GLfloat length, GLfloat width, GLfloat height) +{ + GLfloat xmin = -length / 2.0f; + GLfloat xmax = length / 2.0f; + GLfloat zmin = -width / 2.0f; + GLfloat zmax = width / 2.0f; + GLfloat ymin = 0.0f; + GLfloat ymax = height; + int polys = 0; + + glBegin(GL_QUADS); + /* front */ + glNormal3fv(front); + glVertex3f(xmin, ymin, zmax); /* 0 */ + glVertex3f(xmax, ymin, zmax); /* 1 */ + glVertex3f(xmax, ymax, zmax); /* 2 */ + glVertex3f(xmin, ymax, zmax); /* 3 */ + polys++; + /* right */ + glNormal3fv(right); + glVertex3f(xmax, ymin, zmax); /* 1 */ + glVertex3f(xmax, ymin, zmin); /* 5 */ + glVertex3f(xmax, ymax, zmin); /* 6 */ + glVertex3f(xmax, ymax, zmax); /* 2 */ + polys++; + /* back */ + glNormal3fv(back); + glVertex3f(xmax, ymin, zmin); /* 5 */ + glVertex3f(xmin, ymin, zmin); /* 4 */ + glVertex3f(xmin, ymax, zmin); /* 7 */ + glVertex3f(xmax, ymax, zmin); /* 6 */ + polys++; + /* left */ + glNormal3fv(left); + glVertex3f(xmin, ymin, zmin); /* 4 */ + glVertex3f(xmin, ymin, zmax); /* 0 */ + glVertex3f(xmin, ymax, zmax); /* 3 */ + glVertex3f(xmin, ymax, zmin); /* 7 */ + polys++; + /* top */ + glNormal3fv(up); + glVertex3f(xmin, ymax, zmax); /* 3 */ + glVertex3f(xmax, ymax, zmax); /* 2 */ + glVertex3f(xmax, ymax, zmin); /* 6 */ + glVertex3f(xmin, ymax, zmin); /* 7 */ + polys++; + /* bottom */ + glNormal3fv(down); + glVertex3f(xmin, ymin, zmin); /* 4 */ + glVertex3f(xmax, ymin, zmin); /* 5 */ + glVertex3f(xmax, ymin, zmax); /* 1 */ + glVertex3f(xmin, ymin, zmax); /* 0 */ + polys++; + glEnd(); + return polys; +} + +/* Set normal vector in xz plane, based on rotation around center. */ +static void setNormalV(glhcfg *glhanoi, GLfloat theta, int y1, int y2, int r1) { + if (y1 == y2) /* up/down */ + glNormal3f(0.0, y1 ? 1.0 : -1.0, 0.0); + else if (!r1) /* inward */ + glNormal3f(-cos(theta), 0.0, -sin(theta)); + else /* outward */ + glNormal3f(cos(theta), 0.0, sin(theta)); +} + +/* y1, r1, y2, r2 are indices into y, r, beg, end */ +static int drawBaseStrip(glhcfg *glhanoi, int y1, int r1, int y2, int r2, + GLfloat y[2], GLfloat r[2], GLfloat beg[2][2], GLfloat end[2][2]) { + int i; + GLfloat theta, costh, sinth, x[2], z[2]; + GLfloat theta1 = (M_PI * 2) / (glhanoi->numberOfPoles + 1); + + glBegin(GL_QUAD_STRIP); + + /* beginning edge */ + glVertex3f(beg[r1][0], y[y1], beg[r1][1]); + glVertex3f(beg[r2][0], y[y2], beg[r2][1]); + setNormalV(glhanoi, theta1, y1, y2, r1); + + for (i = 1; i < glhanoi->numberOfPoles; i++) { + theta = theta1 * (i + 0.5); + costh = cos(theta); + sinth = sin(theta); + x[0] = costh * r[0]; + x[1] = costh * r[1]; + z[0] = sinth * r[0]; + z[1] = sinth * r[1]; + + glVertex3f(x[r1], y[y1], z[r1]); + glVertex3f(x[r2], y[y2], z[r2]); + + setNormalV(glhanoi, theta1 * (i + 1), y1, y2, r1); + } + + /* end edge */ + glVertex3f(end[r1][0], y[y1], end[r1][1]); + glVertex3f(end[r2][0], y[y2], end[r2][1]); + setNormalV(glhanoi, glhanoi->numberOfPoles, y1, y2, r1); + + glEnd(); + return glhanoi->numberOfPoles; +} + +/* Draw base such that poles are distributed around a regular polygon. */ +static int drawRoundBase(glhcfg *glhanoi) { + int polys = 0; + GLfloat theta, sinth, costh; + + /* + r[0] = (minimum) inner radius of base at vertices + r[1] = (minimum) outer radius of base at vertices + y[0] = bottom of base + y[1] = top of base */ + GLfloat r[2], y[2]; + /* positions of end points: beginning, end. + beg[0] is inner corner of beginning of base, beg[1] is outer corner. + beg[i][0] is x, [i][1] is z. */ + GLfloat beg[2][2], end[2][2], begNorm, endNorm; + /* ratio of radius at base vertices to ratio at poles */ + GLfloat longer = 1.0 / cos(M_PI / (glhanoi->numberOfPoles + 1)); + + r[0] = (glhanoi->poleDist - glhanoi->maxDiskRadius) * longer; + r[1] = (glhanoi->poleDist + glhanoi->maxDiskRadius) * longer; + y[0] = 0; + y[1] = glhanoi->baseHeight; + + /* compute beg, end. Make the ends square. */ + theta = M_PI * 2 / (glhanoi->numberOfPoles + 1); + + costh = cos(theta); + sinth = sin(theta); + beg[0][0] = (glhanoi->poleDist - glhanoi->maxDiskRadius) * costh + + glhanoi->maxDiskRadius * sinth; + beg[1][0] = (glhanoi->poleDist + glhanoi->maxDiskRadius) * costh + + glhanoi->maxDiskRadius * sinth; + beg[0][1] = (glhanoi->poleDist - glhanoi->maxDiskRadius) * sinth - + glhanoi->maxDiskRadius * costh; + beg[1][1] = (glhanoi->poleDist + glhanoi->maxDiskRadius) * sinth - + glhanoi->maxDiskRadius * costh; + begNorm = theta - M_PI * 0.5; + + theta = M_PI * 2 * glhanoi->numberOfPoles / (glhanoi->numberOfPoles + 1); + + costh = cos(theta); + sinth = sin(theta); + end[0][0] = (glhanoi->poleDist - glhanoi->maxDiskRadius) * costh - + glhanoi->maxDiskRadius * sinth; + end[1][0] = (glhanoi->poleDist + glhanoi->maxDiskRadius) * costh - + glhanoi->maxDiskRadius * sinth; + end[0][1] = (glhanoi->poleDist - glhanoi->maxDiskRadius) * sinth + + glhanoi->maxDiskRadius * costh; + end[1][1] = (glhanoi->poleDist + glhanoi->maxDiskRadius) * sinth + + glhanoi->maxDiskRadius * costh; + endNorm = theta + M_PI * 0.5; + + /* bottom: never seen + polys = drawBaseStrip(glhanoi, 0, 0, 0, 1, y, r, beg, end); */ + /* outside edge */ + polys += drawBaseStrip(glhanoi, 0, 1, 1, 1, y, r, beg, end); + /* top */ + polys += drawBaseStrip(glhanoi, 1, 1, 1, 0, y, r, beg, end); + /* inside edge */ + polys += drawBaseStrip(glhanoi, 1, 0, 0, 0, y, r, beg, end); + + /* Draw ends */ + glBegin(GL_QUADS); + + glVertex3f(beg[0][0], y[1], beg[0][1]); + glVertex3f(beg[1][0], y[1], beg[1][1]); + glVertex3f(beg[1][0], y[0], beg[1][1]); + glVertex3f(beg[0][0], y[0], beg[0][1]); + glNormal3f(cos(begNorm), 0, sin(begNorm)); + + glVertex3f(end[0][0], y[0], end[0][1]); + glVertex3f(end[1][0], y[0], end[1][1]); + glVertex3f(end[1][0], y[1], end[1][1]); + glVertex3f(end[0][0], y[1], end[0][1]); + glNormal3f(cos(endNorm), 0, sin(endNorm)); + + polys += 2; + + glEnd(); + + return polys; +} + +static int drawDisks(glhcfg *glhanoi) +{ + int i; + int polys = 0; + + glPushMatrix(); + glTranslatef(0.0f, glhanoi->baseHeight, 0.0f); + for(i = glhanoi->maxDiskIdx; i >= 0; i--) { + Disk *disk = &glhanoi->disk[i]; + GLfloat *pos = disk->position; + GLfloat *rot = disk->rotation; + + glPushMatrix(); + glTranslatef(pos[0], pos[1], pos[2]); + if(rot[1] != 0.0) { + glTranslatef(0.0, glhanoi->diskHeight / 2.0, 0.0); + /* rotate around different axis depending on phi */ + if (disk->phi != 0.0) + glRotatef(-disk->phi, 0.0, 1.0, 0.0); + glRotatef(rot[1], 0.0, 0.0, 1.0); + if (disk->phi != 0.0) + glRotatef(disk->phi, 0.0, 1.0, 0.0); + glTranslatef(0.0, -glhanoi->diskHeight / 2.0, 0.0); + } + glCallList(disk->displayList); + polys += disk->polys; + glPopMatrix(); + } + glPopMatrix(); + return polys; +} + +static GLfloat getDiskRadius(glhcfg *glhanoi, int i) +{ + GLfloat retVal = glhanoi->maxDiskRadius * + ((GLfloat) i + 3.0) / (glhanoi->numberOfDisks + 3.0); + return retVal; +} + +static void initData(glhcfg *glhanoi) +{ + int i; + GLfloat sinPiOverNP; + + glhanoi->baseLength = BASE_LENGTH; + if (glhanoi->layoutLinear) { + glhanoi->maxDiskRadius = glhanoi->baseLength / + (2 * 0.95 * glhanoi->numberOfPoles); + } else { + sinPiOverNP = sin(M_PI / (glhanoi->numberOfPoles + 1)); + glhanoi->maxDiskRadius = (sinPiOverNP * glhanoi->baseLength * 0.5 * 0.95) / (1 + sinPiOverNP); + } + + glhanoi->poleDist = glhanoi->baseLength * 0.5 - glhanoi->maxDiskRadius; + glhanoi->poleRadius = glhanoi->maxDiskRadius / (glhanoi->numberOfDisks + 3.0); + /* fprintf(stderr, "Debug: baseL = %f, maxDiskR = %f, poleR = %f\n", + glhanoi->baseLength, glhanoi->maxDiskRadius, glhanoi->poleRadius); */ + glhanoi->baseWidth = 2.0 * glhanoi->maxDiskRadius; + glhanoi->poleOffset = 2.0 * getDiskRadius(glhanoi, glhanoi->maxDiskIdx); + glhanoi->diskHeight = 2.0 * glhanoi->poleRadius; + glhanoi->baseHeight = 2.0 * glhanoi->poleRadius; + glhanoi->poleHeight = glhanoi->numberOfDisks * + glhanoi->diskHeight + glhanoi->poleRadius; + /* numberOfMoves only applies if numberOfPoles = 3 */ + glhanoi->numberOfMoves = (1 << glhanoi->numberOfDisks) - 1; + /* use golden ratio */ + glhanoi->boardSize = glhanoi->baseLength * 0.5 * (1.0 + sqrt(5.0)); + + glhanoi->pole = (Pole *)calloc(glhanoi->numberOfPoles, sizeof(Pole)); + checkAllocAndExit(!!glhanoi->pole, "poles"); + + for(i = 0; i < glhanoi->numberOfPoles; i++) { + checkAllocAndExit( + !!(glhanoi->pole[i].data = calloc(glhanoi->numberOfDisks, sizeof(Disk *))), + "disk stack"); + glhanoi->pole[i].size = glhanoi->numberOfDisks; + } + checkAllocAndExit( + !!(glhanoi->diskPos = calloc(glhanoi->numberOfDisks, sizeof(double))), + "diskPos"); + + if (glhanoi->trailQSize) { + glhanoi->trailQ = (TrailPoint *)calloc(glhanoi->trailQSize, sizeof(TrailPoint)); + checkAllocAndExit(!!glhanoi->trailQ, "trail queue"); + } else glhanoi->trailQ = (TrailPoint *)NULL; + glhanoi->trailQFront = glhanoi->trailQBack = 0; + + glhanoi->the_rotator = make_rotator(0.1, 0.025, 0, 1, 0.005, False); + /* or glhanoi->the_rotator = make_rotator(0.025, 0.025, 0.025, 0.5, 0.005, False); */ + glhanoi->button_down_p = False; + + glhanoi->src = glhanoi->oldsrc = 0; + glhanoi->tmp = glhanoi->oldtmp = 1; + glhanoi->dst = glhanoi->olddst = glhanoi->numberOfPoles - 1; + + if (glhanoi->numberOfPoles > 3) { + glhanoi->solveStackSize = glhanoi->numberOfDisks + 2; + glhanoi->solveStack = (SubProblem *)calloc(glhanoi->solveStackSize, sizeof(SubProblem)); + checkAllocAndExit(!!glhanoi->solveStack, "solving stack"); + glhanoi->solveStackIdx = 0; + } +} + +static void initView(glhcfg *glhanoi) +{ + glhanoi->camera[0] = 0.0; + glhanoi->camera[1] = 0.0; + glhanoi->camera[2] = 0.0; + glhanoi->centre[0] = 0.0; + glhanoi->centre[1] = glhanoi->poleHeight * 3.0; + glhanoi->centre[2] = 0.0; +} + +/* + * noise_improved.c - based on ImprovedNoise.java + * JAVA REFERENCE IMPLEMENTATION OF IMPROVED NOISE - COPYRIGHT 2002 KEN PERLIN. + */ +static double fade(double t) +{ + return t * t * t * (t * (t * 6 - 15) + 10); +} + +static double grad(int hash, double x, double y, double z) +{ + int h = hash & 15; /* CONVERT LO 4 BITS OF HASH CODE */ + double u = h < 8 ? x : y, /* INTO 12 GRADIENT DIRECTIONS. */ + v = h < 4 ? y : h == 12 || h == 14 ? x : z; + return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v); +} + +static const int permutation[] = { 151, 160, 137, 91, 90, 15, + 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, + 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, + 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, + 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, + 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, + 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, + 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, + 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, + 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, + 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, + 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, + 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, + 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, + 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, + 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, + 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, + 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, + 156, 180 +}; + +static void initNoise(glhcfg *glhanoi) +{ + int i; + for(i = 0; i < 256; i++) + glhanoi->p[256 + i] = glhanoi->p[i] = permutation[i]; +} + +static double improved_noise(glhcfg *glhanoi, double x, double y, double z) +{ + double u, v, w; + int A, AA, AB, B, BA, BB; + int X = (int)floor(x) & 255, /* FIND UNIT CUBE THAT */ + Y = (int)floor(y) & 255, /* CONTAINS POINT. */ + Z = (int)floor(z) & 255; + if(!glhanoi->noise_initted) { + initNoise(glhanoi); + glhanoi->noise_initted = 1; + } + x -= floor(x); /* FIND RELATIVE X,Y,Z */ + y -= floor(y); /* OF POINT IN CUBE. */ + z -= floor(z); + u = fade(x), /* COMPUTE FADE CURVES */ + v = fade(y), /* FOR EACH OF X,Y,Z. */ + w = fade(z); + A = glhanoi->p[X] + Y; + AA = glhanoi->p[A] + Z; + AB = glhanoi->p[A + 1] + Z, /* HASH COORDINATES OF */ + B = glhanoi->p[X + 1] + Y; + BA = glhanoi->p[B] + Z; + BB = glhanoi->p[B + 1] + Z; /* THE 8 CUBE CORNERS, */ + return lerp(w, lerp(v, lerp(u, grad(glhanoi->p[AA], x, y, z),/* AND ADD */ + grad(glhanoi->p[BA], x - 1, y, z)),/* BLENDED */ + lerp(u, grad(glhanoi->p[AB], x, y - 1, z),/* RESULTS */ + grad(glhanoi->p[BB], x - 1, y - 1, z))),/* FROM 8 CORNERS */ + lerp(v, lerp(u, grad(glhanoi->p[AA + 1], x, y, z - 1), grad(glhanoi->p[BA + 1], x - 1, y, z - 1)), /* OF CUBE */ + lerp(u, grad(glhanoi->p[AB + 1], x, y - 1, z - 1), + grad(glhanoi->p[BB + 1], x - 1, y - 1, z - 1)))); +} + +/* + * end noise_improved.c - based on ImprovedNoise.java + */ + +struct tex_col_t { + GLuint *colours; + /* GLfloat *points; */ + unsigned int ncols; +}; +typedef struct tex_col_t tex_col_t; + +static GLubyte *makeTexture(glhcfg *glhanoi, int x_size, int y_size, int z_size, + GLuint(*texFunc) (glhcfg *, double, double, double, + tex_col_t *), tex_col_t * colours) +{ + int i, j, k; + GLubyte *textureData; + GLuint *texturePtr; + double x, y, z; + double xi, yi, zi; + + if((textureData = + calloc(x_size * y_size * z_size, sizeof(GLuint))) == NULL) { + return NULL; + } + + xi = 1.0 / x_size; + yi = 1.0 / y_size; + zi = 1.0 / z_size; + + z = 0.0; + texturePtr = (void *)textureData; + for(k = 0; k < z_size; k++, z += zi) { + y = 0.0; + for(j = 0; j < y_size; j++, y += yi) { + x = 0.0; + for(i = 0; i < x_size; i++, x += xi) { + *texturePtr = texFunc(glhanoi, x, y, z, colours); + ++texturePtr; + } + } + } + return textureData; +} + +static void freeTexCols(tex_col_t*p) +{ + free(p->colours); + free(p); +} + +static tex_col_t *makeMarbleColours(void) +{ + tex_col_t *marbleColours; + int ncols = 2; + + marbleColours = malloc(sizeof(tex_col_t)); + if(marbleColours == NULL) return NULL; + marbleColours->colours = calloc(sizeof(GLuint), ncols); + if(marbleColours->colours == NULL) return NULL; + marbleColours->ncols = ncols; + + marbleColours->colours[0] = 0x3f3f3f3f; + marbleColours->colours[1] = 0xffffffff; + + return marbleColours; +} + +static double turb(glhcfg *glhanoi, double x, double y, double z, int octaves) +{ + int oct, freq = 1; + double r = 0.0; + + for(oct = 0; oct < octaves; ++oct) { + r += fabs(improved_noise(glhanoi, freq * x, freq * y, freq * z)) / freq; + freq <<= 1; + } + return r / 2.0; +} + +static void perturb(glhcfg *glhanoi, double *x, double *y, double *z, double scale) +{ + double t = scale * turb(glhanoi, *x, *y, *z, 4); + *x += t; + *y += t; + *z += t; +} + +static double f_m(double x, double y, double z) +{ + return sin(3.0 * M_PI * x); +} + +static GLuint C_m(double x, const tex_col_t * tex_cols) +{ + int r = tex_cols->colours[0] & 0xff; + int g = tex_cols->colours[0] >> 8 & 0xff; + int b = tex_cols->colours[0] >> 16 & 0xff; + double factor; + int r1, g1, b1; + x = x - floor(x); + + factor = (1.0 + sin(2.0 * M_PI * x)) / 2.0; + + r1 = (tex_cols->colours[1] & 0xff); + g1 = (tex_cols->colours[1] >> 8 & 0xff); + b1 = (tex_cols->colours[1] >> 16 & 0xff); + + r += (int)(factor * (r1 - r)); + g += (int)(factor * (g1 - g)); + b += (int)(factor * (b1 - b)); + + return 0xff000000 | (b << 16) | (g << 8) | r; +} + + +static GLuint makeMarbleTexture(glhcfg *glhanoi, double x, double y, double z, tex_col_t * colours) +{ + perturb(glhanoi, &x, &y, &z, MARBLE_SCALE); + return C_m(f_m(x, y, z), colours); +} + +static void setTexture(glhcfg *glhanoi, int n) +{ + glBindTexture(GL_TEXTURE_2D, glhanoi->textureNames[n]); +} + +/* returns 1 on failure, 0 on success */ +static int makeTextures(glhcfg *glhanoi) +{ + GLubyte *marbleTexture; + tex_col_t *marbleColours; + + glGenTextures(N_TEXTURES, glhanoi->textureNames); + + if((marbleColours = makeMarbleColours()) == NULL) { + return 1; + } + if((marbleTexture = + makeTexture(glhanoi, MARBLE_TEXTURE_SIZE, MARBLE_TEXTURE_SIZE, 1, + makeMarbleTexture, marbleColours)) == NULL) { + return 1; + } + + glBindTexture(GL_TEXTURE_2D, glhanoi->textureNames[0]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + MARBLE_TEXTURE_SIZE, MARBLE_TEXTURE_SIZE, 0, + GL_RGBA, GL_UNSIGNED_BYTE, marbleTexture); + free(marbleTexture); + freeTexCols(marbleColours); + + return 0; +} + +static void initFloor(glhcfg *glhanoi) +{ + int i, j; + float tileSize = glhanoi->boardSize / BOARD_SQUARES; + float x0, x1, z0, z1; + float tx0, tx1, tz0, tz1; + const float *col = cWhite; + float texIncr = 1.0 / BOARD_SQUARES; + + glhanoi->floorpolys = 0; + checkAllocAndExit(!!(glhanoi->floorList = glGenLists(1)), "floor display list"); + glNewList(glhanoi->floorList, GL_COMPILE); + x0 = -glhanoi->boardSize / 2.0; + tx0 = 0.0f; + setMaterial(col, cWhite, 128); + setTexture(glhanoi, 0); + glNormal3fv(up); + for(i = 0; i < BOARD_SQUARES; i++, x0 += tileSize, tx0 += texIncr) { + x1 = x0 + tileSize; + tx1 = tx0 + texIncr; + z0 = -glhanoi->boardSize / 2.0; + tz0 = 0.0f; + for(j = 0; j < BOARD_SQUARES; j++, z0 += tileSize, tz0 += texIncr) { + int colIndex = (i + j) & 0x1; + + z1 = z0 + tileSize; + tz1 = tz0 + texIncr; + + if(colIndex) + col = cWhite; + else + col = cBlack; + + setMaterial(col, cWhite, 100); + + glBegin(GL_QUADS); + + glTexCoord2d(tx0, tz0); + glVertex3f(x0, 0.0, z0); + + glTexCoord2d(tx0, tz1); + glVertex3f(x0, 0.0, z1); + + glTexCoord2d(tx1, tz1); + glVertex3f(x1, 0.0, z1); + + glTexCoord2d(tx1, tz0); + glVertex3f(x1, 0.0, z0); + glhanoi->floorpolys++; + glEnd(); + } + } + glEndList(); +} + +static void initBase(glhcfg *glhanoi) +{ + checkAllocAndExit(!!(glhanoi->baseList = glGenLists(1)), "tower bases display list"); + + glNewList(glhanoi->baseList, GL_COMPILE); + setMaterial(baseColor, cWhite, 50); + if (glhanoi->layoutLinear) { + glhanoi->basepolys = drawCuboid(glhanoi->baseLength, glhanoi->baseWidth, + glhanoi->baseHeight); + } else { + glhanoi->basepolys = drawRoundBase(glhanoi); + } + glEndList(); +} + +static void initTowers(glhcfg *glhanoi) +{ + int i; + + checkAllocAndExit(!!(glhanoi->poleList = glGenLists(1)), "poles display list\n"); + + glNewList(glhanoi->poleList, GL_COMPILE); + /* glTranslatef(-glhanoi->poleOffset * (glhanoi->numberOfPoles - 1.0f) * 0.5f, glhanoi->baseHeight, 0.0f); */ + setMaterial(poleColor, cWhite, 50); + for (i = 0; i < glhanoi->numberOfPoles; i++) { + GLfloat *p = glhanoi->pole[i].position; + GLfloat rad = (M_PI * 2.0 * (i + 1)) / (glhanoi->numberOfPoles + 1); + + p[1] = glhanoi->baseHeight; + + if (glhanoi->layoutLinear) { + /* Linear: */ + p[0] = -glhanoi->poleOffset * ((glhanoi->numberOfPoles - 1) * 0.5f - i); + p[2] = 0.0f; + } else { + /* Circular layout: */ + p[0] = cos(rad) * glhanoi->poleDist; + p[2] = sin(rad) * glhanoi->poleDist; + } + + glPushMatrix(); + glTranslatef(p[0], p[1], p[2]); + glhanoi->polepolys = drawPole(glhanoi->poleRadius, glhanoi->poleHeight); + glPopMatrix(); + + } + glEndList(); +} + +/* Parameterized hue based on input 0.0 - 1.0. */ +static double cfunc(double x) +{ +#define COMP < + if(x < 2.0 / 7.0) { + return (1.0 / 12.0) / (1.0 / 7.0) * x; + } + if(x < 3.0 / 7.0) { + /* (7x - 1) / 6 */ + return (1.0 + 1.0 / 6.0) * x - 1.0 / 6.0; + } + if(x < 4.0 / 7.0) { + return (2.0 + 1.0 / 3.0) * x - 2.0 / 3.0; + } + if(x < 5.0 / 7.0) { + return (1.0 / 12.0) / (1.0 / 7.0) * x + 1.0 / 3.0; + } + return (1.0 / 12.0) / (1.0 / 7.0) * x + 1.0 / 3.0; +} + +static void initDisks(glhcfg *glhanoi) +{ + int i; + glhanoi->disk = (Disk *) calloc(glhanoi->numberOfDisks, sizeof(Disk)); + checkAllocAndExit(!!glhanoi->disk, "disks"); + + for(i = glhanoi->maxDiskIdx; i >= 0; i--) { + GLfloat height = (GLfloat) (glhanoi->maxDiskIdx - i); + double f = cfunc((GLfloat) i / (GLfloat) glhanoi->numberOfDisks); + GLfloat diskColor = f * 360.0; + GLfloat color[3]; + Disk *disk = &glhanoi->disk[i]; + + disk->id = i; + disk->position[0] = glhanoi->pole[0].position[0]; /* -glhanoi->poleOffset * (glhanoi->numberOfPoles - 1.0f) * 0.5; */ + disk->position[1] = glhanoi->diskHeight * height; + disk->position[2] = glhanoi->pole[0].position[2]; + disk->rotation[0] = 0.0; + disk->rotation[1] = 0.0; + disk->rotation[2] = 0.0; + disk->polys = 0; + + /* make smaller disks move faster */ + disk->speed = lerp(((double)glhanoi->numberOfDisks - i) / glhanoi->numberOfDisks, + 1.0, glhanoi->speed); + /* fprintf(stderr, "disk id: %d, alpha: %0.2f, speed: %0.2f\n", disk->id, + ((double)(glhanoi->maxDiskIdx - i)) / glhanoi->numberOfDisks, disk->speed); */ + + color[0] = diskColor; + color[1] = 1.0f; + color[2] = 1.0f; + HSVtoRGBv(color, color); + + checkAllocAndExit(!!(disk->displayList = glGenLists(1)), "disk display list"); + glNewList(disk->displayList, GL_COMPILE); + setMaterial(color, cWhite, 100.0); + disk->polys += drawDisk3D(glhanoi->poleRadius, + getDiskRadius(glhanoi, i), + glhanoi->diskHeight); + /*fprintf(stderr, "Debug: disk %d has radius %f\n", i, + getDiskRadius(glhanoi, i)); */ + glEndList(); + } + for(i = glhanoi->maxDiskIdx; i >= 0; --i) { + GLfloat height = (GLfloat) (glhanoi->maxDiskIdx - i); + int h = glhanoi->maxDiskIdx - i; + glhanoi->diskPos[h] = glhanoi->diskHeight * height; + push(glhanoi, glhanoi->src, &glhanoi->disk[i]); + } +} + +static void initLights(Bool state) +{ + if(state) { + glLightfv(GL_LIGHT0, GL_POSITION, pos0); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb0); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif0); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc0); + + glLightfv(GL_LIGHT1, GL_POSITION, pos1); + glLightfv(GL_LIGHT1, GL_AMBIENT, amb1); + glLightfv(GL_LIGHT1, GL_DIFFUSE, dif1); + glLightfv(GL_LIGHT1, GL_SPECULAR, spc1); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + } else { + glDisable(GL_LIGHTING); + } +} + +static int drawFloor(glhcfg *glhanoi) +{ + glCallList(glhanoi->floorList); + return glhanoi->floorpolys; +} + +static int drawTowers(glhcfg *glhanoi) +{ + glCallList(glhanoi->baseList); + glCallList(glhanoi->poleList); + return glhanoi->basepolys + glhanoi->polepolys; +} + +static int drawTrails1(glhcfg *glhanoi, double t, double thickness, double alpha) { + int i, prev = -1, lines = 0; + Bool fresh = False; + GLfloat trailDurInv = 1.0f / glhanoi->trailDuration; + + glLineWidth(thickness); + + glBegin(GL_LINES); + + for (i = glhanoi->trailQFront; + i != glhanoi->trailQBack; + i = normalizeQ(i + 1)) { + TrailPoint *tqi = &(glhanoi->trailQ[i]); + + if (!fresh && t > tqi->endTime) { + glhanoi->trailQFront = normalizeQ(i + 1); + } else { + if (tqi->startTime > t) break; + /* Found trails that haven't timed out. */ + if (!fresh) fresh = True; + if (prev > -1) { + /* Fade to invisible with age */ + trailColor[3] = alpha * (tqi->endTime - t) * trailDurInv; + /* Can't use setMaterial(trailColor, cBlack, 0) because our color needs an alpha value. */ + glColor4fv(trailColor); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, trailColor); + /* FUTURE: to really do this right, trails should be drawn in back-to-front + order, so that blending is done correctly. + Currently it looks poor when a faded trail is in front of, or coincident with, + a bright trail but is drawn first. + I think for now it's good enough to recommend shorter trails so they + never/rarely overlap. + A jitter per trail arc would also mitigate this problem, to a lesser degree. */ + glVertex3fv(glhanoi->trailQ[prev].position); + glVertex3fv(glhanoi->trailQ[i].position); + lines++; + } + if (glhanoi->trailQ[i].isEnd) + prev = -1; + else + prev = i; + } + } + + glEnd(); + + return lines; +} + +static int drawTrails(glhcfg *glhanoi) { + int lines = 0; + double t = getTime(); + + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glMaterialfv(GL_FRONT, GL_SPECULAR, cBlack); + glMateriali(GL_FRONT, GL_SHININESS, 0); + + /* Draw them twice, with different widths and opacities, to make them smoother. */ + lines = drawTrails1(glhanoi, t, 1.0, 0.75); + lines += drawTrails1(glhanoi, t, 2.5, 0.5); + + glDisable (GL_BLEND); + + /* fprintf(stderr, "Drew trails: %d lines\n", lines); */ + return lines; +} + +/* Window management, etc + */ +ENTRYPOINT void reshape_glhanoi(ModeInfo * mi, int width, int height) +{ + glhcfg *glhanoi = &glhanoi_cfg[MI_SCREEN(mi)]; + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glhanoi->glx_context)); + + glViewport(0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(30.0, 1/h, 1.0, + 2 * MAX_CAMERA_RADIUS); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glClear(GL_COLOR_BUFFER_BIT); +} + +ENTRYPOINT void init_glhanoi(ModeInfo * mi) +{ + glhcfg *glhanoi; + MI_INIT(mi, glhanoi_cfg); + + glhanoi = &glhanoi_cfg[MI_SCREEN(mi)]; + glhanoi->glx_context = init_GL(mi); + glhanoi->numberOfDisks = MI_BATCHCOUNT(mi); + + if (glhanoi->numberOfDisks <= 1) + glhanoi->numberOfDisks = 3 + (int) BELLRAND(9); + + /* magicnumber is a bitfield, so we can't have more than 31 discs + on a system with 4-byte ints. */ + if (glhanoi->numberOfDisks >= 8 * sizeof(int)) + glhanoi->numberOfDisks = (8 * sizeof(int)) - 1; + + glhanoi->maxDiskIdx = glhanoi->numberOfDisks - 1; + + glhanoi->numberOfPoles = get_integer_resource(MI_DISPLAY(mi), "poles", "Integer"); + /* Set a number of poles from 3 to numberOfDisks + 1, biased toward lower values, + with probability decreasing linearly. */ + if (glhanoi->numberOfPoles <= 2) + glhanoi->numberOfPoles = 3 + + (int)((1 - sqrt(frand(1.0))) * (glhanoi->numberOfDisks - 1)); + + glhanoi->wire = MI_IS_WIREFRAME(mi); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + glhanoi->wire = 0; +# endif + + glhanoi->light = light; + glhanoi->fog = fog; + glhanoi->texture = texture; + glhanoi->speed = speed; + glhanoi->trailDuration = trails; + /* set trailQSize based on 60 fps (a maximum, more or less) */ + /* FUTURE: Should clamp framerate to 60 fps? See flurry.c's draw_flurry(). + The only bad effect if we don't is that trail-ends could + show "unnatural" pauses at high fps. */ + glhanoi->trailQSize = (int)(trails * 60.0); + + reshape_glhanoi(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if(glhanoi->wire) { + glhanoi->light = False; + glhanoi->fog = False; + glhanoi->texture = False; + } + + initLights(!glhanoi->wire && glhanoi->light); + checkAllocAndExit(!makeTextures(glhanoi), "textures\n"); + + /* Choose linear or circular layout. Could make this a user option. */ + glhanoi->layoutLinear = (glhanoi->numberOfPoles == 3); + + initData(glhanoi); + initView(glhanoi); + initFloor(glhanoi); + initBase(glhanoi); + initTowers(glhanoi); + initDisks(glhanoi); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + glShadeModel(GL_SMOOTH); + if(glhanoi->fog) { + glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], 1.0); + glFogi(GL_FOG_MODE, GL_LINEAR); + glFogfv(GL_FOG_COLOR, fogcolor); + glFogf(GL_FOG_DENSITY, 0.35f); + glHint(GL_FOG_HINT, GL_NICEST); + glFogf(GL_FOG_START, MIN_CAMERA_RADIUS); + glFogf(GL_FOG_END, MAX_CAMERA_RADIUS / 1.9); + glEnable(GL_FOG); + } + + glhanoi->duration = START_DURATION; + changeState(glhanoi, START); +} + +ENTRYPOINT void draw_glhanoi(ModeInfo * mi) +{ + glhcfg *glhanoi = &glhanoi_cfg[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if(!glhanoi->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glhanoi->glx_context)); + + glPolygonMode(GL_FRONT, glhanoi->wire ? GL_LINE : GL_FILL); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + mi->polygon_count = 0; + + glLoadIdentity(); + glRotatef(current_device_rotation(), 0, 0, 1); + + update_glhanoi(glhanoi); + updateView(glhanoi); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + if(!glhanoi->wire && glhanoi->texture) { + glEnable(GL_TEXTURE_2D); + } + mi->polygon_count += drawFloor(glhanoi); + glDisable(GL_TEXTURE_2D); + + mi->polygon_count += drawTowers(glhanoi); + mi->polygon_count += drawDisks(glhanoi); + + if (glhanoi->trailQSize) { + /* No polygons, just lines. So ignore the return count. */ + (void)drawTrails(glhanoi); + } + + if(mi->fps_p) { + do_fps(mi); + } + glFinish(); + + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT Bool glhanoi_handle_event(ModeInfo * mi, XEvent * event) +{ + glhcfg *glhanoi = &glhanoi_cfg[MI_SCREEN(mi)]; + + /* #### this is all wrong on iOS -- should be using gltrackball. */ + + if(event->xany.type == ButtonPress && event->xbutton.button == Button1) { + glhanoi->button_down_p = True; + glhanoi->drag_x = event->xbutton.x; + glhanoi->drag_y = event->xbutton.y; + return True; + } else if(event->xany.type == ButtonRelease + && event->xbutton.button == Button1) { + glhanoi->button_down_p = False; + return True; + } else if(event->xany.type == ButtonPress && + (event->xbutton.button == Button4 + || event->xbutton.button == Button5)) { + switch (event->xbutton.button) { + case Button4: + glhanoi->camera[2] += 0.01; + break; + case Button5: + glhanoi->camera[2] -= 0.01; + break; + default: + fprintf(stderr, + "glhanoi: unknown button in mousewheel handler\n"); + } + return True; + } else if(event->xany.type == MotionNotify + && glhanoi_cfg->button_down_p) { + int x_diff, y_diff; + + x_diff = event->xbutton.x - glhanoi->drag_x; + y_diff = event->xbutton.y - glhanoi->drag_y; + + glhanoi->camera[0] = (float)x_diff / (float)MI_WIDTH(mi); + glhanoi->camera[1] = (float)y_diff / (float)MI_HEIGHT(mi); + + return True; + } +#if 0 /* #### doesn't work */ + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + changeState(glhanoi, START); + return True; + } +#endif + return False; +} + +ENTRYPOINT void free_glhanoi(ModeInfo * mi) +{ + int i; + int j; + glhcfg *glh = &glhanoi_cfg[MI_SCREEN(mi)]; + if (glh->glx_context) { + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glh->glx_context)); + glDeleteLists(glh->floorList, 1); + glDeleteLists(glh->baseList, 1); + glDeleteLists(glh->poleList, 1); + glDeleteLists(glh->textureNames[0], 2); + for(j = 0; j < glh->numberOfDisks; ++j) { + glDeleteLists(glh->disk[j].displayList, 1); + } + free(glh->disk); + for(i = 0; i < glh->numberOfPoles; i++) { + if(glh->pole[i].data != NULL) { + free(glh->pole[i].data); + } + } + } +} + +XSCREENSAVER_MODULE ("GLHanoi", glhanoi) + +#endif /* USE_GL */ diff --git a/hacks/glx/glhanoi.man b/hacks/glx/glhanoi.man new file mode 100644 index 0000000..2060cde --- /dev/null +++ b/hacks/glx/glhanoi.man @@ -0,0 +1,83 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +glhanoi - OpenGL Towers of Hanoi +.SH SYNOPSIS +.B glhanoi +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-count \fInumber\fP] +[\-poles \fInumber\fP] +[\-speed \fInumber\fP] +[\-wireframe] +[\-light] +[\-texture] +[\-fog] +[\-fps] +.SH DESCRIPTION +Implementation of Towers of Hanoi in OpenGL +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-count \fInumber\fP +Number of disks. Default: 7. +.TP 8 +.B \-poles \fInumber\fP +Number of poles. Default: random from 3 to disks+1. +.TP 8 +.B \-speed \fInumber\fP +Speed multiplier (for smallest disks). Default: 1. +.TP 8 +.B \-trails \fInumber\fP +Length of disk trails, in seconds. Default: 2. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fog | \-no-fog +Render in fog. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-light | -no-light +Whether the scene is lit. +.TP 8 +.B \-texture | \-no-texture +Render with textures instead of solid. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2004 by Dave Atkinson. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Dave Atkinson. diff --git a/hacks/glx/glknots.c b/hacks/glx/glknots.c new file mode 100644 index 0000000..730cadb --- /dev/null +++ b/hacks/glx/glknots.c @@ -0,0 +1,445 @@ +/* glknots, Copyright (c) 2003-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Generates some 3D knots (closed loops). + * Inspired by Paul Bourke at + * http://astronomy.swin.edu.au/~pbourke/curves/knot/ + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_knot 0 +# define release_knot 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "tube.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPIN "XYZ" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_THICKNESS "0.3" +#define DEF_SEGMENTS "800" +#define DEF_DURATION "8" + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + GLuint knot_list; + + int ncolors; + XColor *colors; + int ccolor; + + int mode; /* 0 = normal, 1 = out, 2 = in */ + int mode_tick; + Bool clear_p; + + time_t last_time; + int draw_tick; + +} knot_configuration; + +static knot_configuration *bps = NULL; + +static char *do_spin; +static GLfloat speed; +static Bool do_wander; +static GLfloat thickness; +static unsigned int segments; +static int duration; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-segments", ".segments", XrmoptionSepArg, 0 }, + { "-duration", ".duration", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float}, + {&segments, "segments", "Segments", DEF_SEGMENTS, t_Int}, + {&duration, "duration", "Duration", DEF_DURATION, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt knot_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static void +make_knot (ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + + GLfloat diam = (4 * thickness); + int faces = (wire ? 3 : 6); + + unsigned int i; + double x, y, z, ox=0, oy=0, oz=0; + double mu; + + double p[9]; + + Bool blobby_p = (0 == (random() % 5)); + Bool type = (random() % 2); + + for (i = 0; i < countof(p); i++) + { + p[i] = 1 + (random() % 4); + if (! (random() % 3)) + p[i] += (random() % 5); + } + + if (type == 1) + { + p[0] += 4; + p[1] *= ((p[0] + p[0]) / 10); + blobby_p = False; + } + + mi->polygon_count = 0; + + for (i = 0; i <= segments; i++) + { + if (type == 0) + { + mu = i * (M_PI * 2) / segments; + x = 10 * (cos(mu) + cos(p[0]*mu)) + cos(p[1]*mu) + cos(p[2]*mu); + y = 6 * sin(mu) + 10 * sin(p[3]*mu); + z = 16 * sin(p[4]*mu) * sin(p[5]*mu/2) + p[6]*sin(p[7]*mu) - + 2 * sin(p[8]*mu); + } + else if (type == 1) + { + mu = i * (M_PI * 2) * p[0] / (double) segments; + x = 10 * cos(mu) * (1 + cos(p[1] * mu/ p[0]) / 2.0); + y = 25 * sin(p[1] * mu / p[0]) / 2.0; + z = 10 * sin(mu) * (1 + cos(p[1] * mu/ p[0]) / 2.0); + } + else + abort(); + + if (i != 0) + { + GLfloat dist = sqrt ((x-ox)*(x-ox) + + (y-oy)*(y-oy) + + (z-oz)*(z-oz)); + GLfloat di; + if (!blobby_p) + di = diam; + else + { + di = dist * (segments / 500.0); + di = (di * di * 3); + } + + mi->polygon_count += tube (ox, oy, oz, + x, y, z, + di, dist/3, + faces, True, wire, wire); + } + + ox = x; + oy = y; + oz = z; + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_knot (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +new_knot (ModeInfo *mi) +{ + knot_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + + bp->clear_p = !!(random() % 15); + + bp->ncolors = 128; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + + for (i = 0; i < bp->ncolors; i++) + { + /* make colors twice as bright */ + bp->colors[i].red = (bp->colors[i].red >> 2) + 0x7FFF; + bp->colors[i].green = (bp->colors[i].green >> 2) + 0x7FFF; + bp->colors[i].blue = (bp->colors[i].blue >> 2) + 0x7FFF; + } + + glNewList (bp->knot_list, GL_COMPILE); + make_knot (mi); + glEndList (); +} + + +ENTRYPOINT Bool +knot_handle_event (ModeInfo *mi, XEvent *event) +{ + knot_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + bp->last_time = 1; + return True; + } + + return False; +} + + + +ENTRYPOINT void +init_knot (ModeInfo *mi) +{ + knot_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + if (thickness <= 0) thickness = 0.001; + else if (thickness > 1) thickness = 1; + + if (segments < 10) segments = 10; + + reshape_knot (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + { + Bool spinx=False, spiny=False, spinz=False; + double spin_speed = 2.0; + double wander_speed = 0.05; + double spin_accel = 0.2; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') spinx = True; + else if (*s == 'y' || *s == 'Y') spiny = True; + else if (*s == 'z' || *s == 'Z') spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + bp->rot = make_rotator (spinx ? spin_speed : 0, + spiny ? spin_speed : 0, + spinz ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + (spinx && spiny && spinz)); + bp->trackball = gltrackball_init (True); + } + + bp->knot_list = glGenLists (1); + new_knot(mi); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + +ENTRYPOINT void +draw_knot (ModeInfo *mi) +{ + knot_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + GLfloat bcolor[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat bshiny = 128.0; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + if (bp->mode == 0) + { + if (bp->draw_tick++ > 10) + { + time_t now = time((time_t *) 0); + if (bp->last_time == 0) bp->last_time = now; + bp->draw_tick = 0; + if (!bp->button_down_p && + now - bp->last_time >= duration) + { + bp->mode = 1; /* go out */ + bp->mode_tick = 10 / speed; + bp->last_time = now; + } + } + } + else if (bp->mode == 1) /* out */ + { + if (--bp->mode_tick <= 0) + { + new_knot (mi); + bp->mode_tick = 10 / speed; + bp->mode = 2; /* go in */ + } + } + else if (bp->mode == 2) /* in */ + { + if (--bp->mode_tick <= 0) + bp->mode = 0; /* normal */ + } + else + abort(); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (bp->clear_p) + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 15); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + bcolor[0] = bp->colors[bp->ccolor].red / 65536.0; + bcolor[1] = bp->colors[bp->ccolor].green / 65536.0; + bcolor[2] = bp->colors[bp->ccolor].blue / 65536.0; + bp->ccolor++; + if (bp->ccolor >= bp->ncolors) bp->ccolor = 0; + + glMaterialfv (GL_FRONT, GL_SPECULAR, bspec); + glMateriali (GL_FRONT, GL_SHININESS, bshiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor); + + glScalef(0.25, 0.25, 0.25); + + if (bp->mode != 0) + { + GLfloat s = (bp->mode == 1 + ? bp->mode_tick / (10 / speed) + : ((10 / speed) - bp->mode_tick + 1) / (10 / speed)); + glScalef (s, s, s); + } + + glCallList (bp->knot_list); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("GLKnots", glknots, knot) + +#endif /* USE_GL */ diff --git a/hacks/glx/glknots.man b/hacks/glx/glknots.man new file mode 100644 index 0000000..c4f1d1a --- /dev/null +++ b/hacks/glx/glknots.man @@ -0,0 +1,81 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +glknots - generates some twisting 3d knot patterns +.SH SYNOPSIS +.B glknots +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fIfloat\fP] +[\-segments \fIint\fP] +[\-thickness \fIfloat\fP] +[\-duration \fIseconds\fP] +[\-no-wander] +[\-spin \fIXYZ\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Generates some twisting 3d knot patterns. Spins 'em around. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Larger numbers mean run faster. Default: 1.0. +.TP 8 +.B \-segments \fInumber\fP +Number of segments in each path. Default 800. Larger numbers make the +curves smoother, at the expense of a higher polygon count. +.TP 8 +.B \-thickness \fIfloat\fP +How thick the tubes should be. Default 0.3. +.TP 8 +.B \-duration \fIseconds\fP +How long to leave each knot up. Default 8 seconds. +.TP 8 +.B \-wander | \-no-wander +Whether the cubes should wander around the screen. +.TP 8 +.B \-spin [XYZ] | \-no-spin +Which axes, if any, to spin around on. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/gllist.c b/hacks/glx/gllist.c new file mode 100644 index 0000000..342e381 --- /dev/null +++ b/hacks/glx/gllist.c @@ -0,0 +1,127 @@ +/* xscreensaver, Copyright (c) 1998-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#include "gllist.h" + +void +renderList (const struct gllist *list, int wire_p) +{ + while (list) + { + if (!wire_p || list->primitive == GL_LINES || + list->primitive == GL_POINTS) + { + glInterleavedArrays (list->format, 0, list->data); + glDrawArrays (list->primitive, 0, list->points); + } + else + { + /* For wireframe, do it the hard way: treat every tuple of + points as its own line loop. + */ + const GLfloat *p = (GLfloat *) list->data; + int i, j, tick, skip, stride; + + switch (list->primitive) { + case GL_QUADS: tick = 4; break; + case GL_TRIANGLES: tick = 3; break; + default: abort(); break; /* write me */ + } + + switch (list->format) { + case GL_C3F_V3F: case GL_N3F_V3F: skip = 3; stride = 6; break; + default: abort(); break; /* write me */ + } + + glBegin (GL_LINE_LOOP); + for (i = 0, j = skip; + i < list->points; + i++, j += stride) + { + if (i && !(i % tick)) + { + glEnd(); + glBegin (GL_LINE_LOOP); + } + glVertex3f (p[j], p[j+1], p[j+2]); + } + glEnd(); + } + list = list->next; + } +} + + +void +renderListNormals (const struct gllist *list, GLfloat length, int faces_p) +{ + while (list) + { + const GLfloat *p = (GLfloat *) list->data; + int i, j, tick, skip, stride; + GLfloat v[3], n[3]; + + if (list->primitive == GL_LINES) continue; + + if (! faces_p) + tick = 1; + else + switch (list->primitive) { + case GL_QUADS: tick = 4; break; + case GL_TRIANGLES: tick = 3; break; + default: abort(); break; /* write me */ + } + + switch (list->format) { + case GL_N3F_V3F: skip = 0; stride = 6; break; + case GL_C3F_V3F: continue; break; + default: abort(); break; /* write me */ + } + + v[0] = v[1] = v[2] = 0; + n[0] = n[1] = n[2] = 0; + + for (i = 0, j = skip; + i <= list->points; + i++, j += stride) + { + if (i && !(i % tick)) + { + n[0] /= tick; + n[1] /= tick; + n[2] /= tick; + v[0] /= tick; + v[1] /= tick; + v[2] /= tick; + glPushMatrix(); + glTranslatef (v[0], v[1], v[2]); + glScalef (length, length, length); + glBegin (GL_LINES); + glVertex3f (0, 0, 0); + glVertex3f (n[0], n[1], n[2]); + glEnd(); + glPopMatrix(); + v[0] = v[1] = v[2] = 0; + n[0] = n[1] = n[2] = 0; + } + + if (i == list->points) break; + n[0] += p[j]; + n[1] += p[j+1]; + n[2] += p[j+2]; + v[0] += p[j+3]; + v[1] += p[j+4]; + v[2] += p[j+5]; + + } + list = list->next; + } +} diff --git a/hacks/glx/gllist.h b/hacks/glx/gllist.h new file mode 100644 index 0000000..1d6326a --- /dev/null +++ b/hacks/glx/gllist.h @@ -0,0 +1,44 @@ +/* xscreensaver, Copyright (c) 1998-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __GLLIST_H__ +#define __GLLIST_H__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include + +#ifdef HAVE_COCOA +#elif defined(HAVE_ANDROID) +# include +#else /* real X11 */ +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +struct gllist +{ + GLenum format; + GLenum primitive; + int points; + const void *data; + struct gllist *next; +}; + +void renderList (const struct gllist *, int wire_p); +void renderListNormals (const struct gllist *, GLfloat length, int facesp); + +#endif /* __GLLIST_H__ */ diff --git a/hacks/glx/glmatrix.c b/hacks/glx/glmatrix.c new file mode 100644 index 0000000..6a9b1fe --- /dev/null +++ b/hacks/glx/glmatrix.c @@ -0,0 +1,1068 @@ +/* glmatrix, Copyright (c) 2003-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * GLMatrix -- simulate the text scrolls from the movie "The Matrix". + * + * This program does a 3D rendering of the dropping characters that + * appeared in the title sequences of the movies. See also `xmatrix' + * for a simulation of what the computer monitors actually *in* the + * movie did. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_matrix 0 +# define release_matrix 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +#include "xlockmore.h" +#include "ximage-loader.h" + +#include "images/gen/matrix3_png.h" + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPEED "1.0" +#define DEF_DENSITY "20" +#define DEF_CLOCK "False" +#define DEF_FOG "True" +#define DEF_WAVES "True" +#define DEF_ROTATE "True" +#define DEF_TEXTURE "True" +#define DEF_MODE "Matrix" +#define DEF_TIMEFMT " %l%M%p " + + +#define CHAR_COLS 16 +#define CHAR_ROWS 13 + +static const int matrix_encoding[] = { + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, +# if 0 + 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207 +# else + 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175 +# endif + }; +static const int decimal_encoding[] = { + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }; +static const int hex_encoding[] = { + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 33, 34, 35, 36, 37, 38 }; +static const int binary_encoding[] = { 16, 17 }; +static const int dna_encoding[] = { 33, 35, 39, 52 }; + +static const unsigned char char_map[256] = { + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, /* 0 */ + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, /* 16 */ + 0, 1, 2, 96, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /* 32 */ + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, /* 48 */ + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, /* 64 */ + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, /* 80 */ + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, /* 96 */ + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, /* 112 */ + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, /* 128 */ + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, /* 144 */ + 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111, /* 160 */ + 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, /* 176 */ + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, /* 192 */ + 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, /* 208 */ +#if 0 + 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, /* 224 */ + 176,177,178,195,180,181,182,183,184,185,186,187,188,189,190,191 /* 240 */ +#else /* see spank_image() */ + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, /* 224 */ + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, /* 240 */ +#endif +}; + +#define CURSOR_GLYPH 97 + +/* #define DEBUG */ + +#define GRID_SIZE 70 /* width and height of the arena */ +#define GRID_DEPTH 35 /* depth of the arena */ +#define WAVE_SIZE 22 /* periodicity of color (brightness) waves */ +#define SPLASH_RATIO 0.7 /* ratio of GRID_DEPTH where chars hit the screen */ + +static const struct { GLfloat x, y; } nice_views[] = { + { 0, 0 }, + { 0, -20 }, /* this is a list of viewer rotations that look nice. */ + { 0, 20 }, /* every now and then we switch to a new one. */ + { 25, 0 }, /* (but we only use the first one at start-up.) */ + {-25, 0 }, + { 25, 20 }, + {-25, 20 }, + { 25, -20 }, + {-25, -20 }, + + { 10, 0 }, + {-10, 0 }, + { 0, 0 }, /* prefer these */ + { 0, 0 }, + { 0, 0 }, + { 0, 0 }, + { 0, 0 }, +}; + + +typedef struct { + GLfloat x, y, z; /* position of strip */ + GLfloat dx, dy, dz; /* velocity of strip */ + + Bool erasing_p; /* Whether this strip is on its way out. */ + + int spinner_glyph; /* the bottommost glyph -- the feeder */ + GLfloat spinner_y; /* where on the strip the bottom glyph is */ + GLfloat spinner_speed; /* how fast the bottom glyph drops */ + + int glyphs[GRID_SIZE]; /* the other glyphs on the strip, which will be + revealed by the dropping spinner. + 0 means no glyph; negative means "spinner". + If non-zero, real value is abs(G)-1. */ + + Bool highlight[GRID_SIZE]; + /* some glyphs may be highlighted */ + + int spin_speed; /* Rotate all spinners every this-many frames */ + int spin_tick; /* frame counter */ + + int wave_position; /* Waves of brightness wash down the strip. */ + int wave_speed; /* every this-many frames. */ + int wave_tick; /* frame counter. */ + +} strip; + + +typedef struct { + GLXContext *glx_context; + Bool button_down_p; + GLuint texture; + int nstrips; + strip *strips; + const int *glyph_map; + int nglyphs; + GLfloat tex_char_width, tex_char_height; + + /* auto-tracking direction of view */ + int last_view, target_view; + GLfloat view_x, view_y; + int view_steps, view_tick; + Bool auto_tracking_p; + int track_tick; + + int real_char_rows; + GLfloat brightness_ramp[WAVE_SIZE]; + +} matrix_configuration; + +static matrix_configuration *mps = NULL; + +static GLfloat speed; +static GLfloat density; +static Bool do_clock; +static char *timefmt; +static Bool do_fog; +static Bool do_waves; +static Bool do_rotate; +static Bool do_texture; +static char *mode_str; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-density", ".density", XrmoptionSepArg, 0 }, + { "-mode", ".mode", XrmoptionSepArg, 0 }, + { "-binary", ".mode", XrmoptionNoArg, "binary" }, + { "-hexadecimal", ".mode", XrmoptionNoArg, "hexadecimal" }, + { "-decimal", ".mode", XrmoptionNoArg, "decimal" }, + { "-dna", ".mode", XrmoptionNoArg, "dna" }, + { "-clock", ".clock", XrmoptionNoArg, "True" }, + { "+clock", ".clock", XrmoptionNoArg, "False" }, + { "-timefmt", ".timefmt", XrmoptionSepArg, 0 }, + { "-fog", ".fog", XrmoptionNoArg, "True" }, + { "+fog", ".fog", XrmoptionNoArg, "False" }, + { "-waves", ".waves", XrmoptionNoArg, "True" }, + { "+waves", ".waves", XrmoptionNoArg, "False" }, + { "-rotate", ".rotate", XrmoptionNoArg, "True" }, + { "+rotate", ".rotate", XrmoptionNoArg, "False" }, + {"-texture", ".texture", XrmoptionNoArg, "True" }, + {"+texture", ".texture", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&mode_str, "mode", "Mode", DEF_MODE, t_String}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&density, "density", "Density", DEF_DENSITY, t_Float}, + {&do_clock, "clock", "Clock", DEF_CLOCK, t_Bool}, + {&timefmt, "timefmt", "Timefmt", DEF_TIMEFMT, t_String}, + {&do_fog, "fog", "Fog", DEF_FOG, t_Bool}, + {&do_waves, "waves", "Waves", DEF_WAVES, t_Bool}, + {&do_rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt matrix_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Re-randomize the state of one strip. + */ +static void +reset_strip (ModeInfo *mi, strip *s) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + int i; + Bool time_displayed_p = False; /* never display time twice in one strip */ + + memset (s, 0, sizeof(*s)); + s->x = (GLfloat) (frand(GRID_SIZE) - (GRID_SIZE/2)); + s->y = (GLfloat) (GRID_SIZE/2 + BELLRAND(0.5)); /* shift top slightly */ + s->z = (GLfloat) (GRID_DEPTH * 0.2) - frand (GRID_DEPTH * 0.7); + s->spinner_y = 0; + + s->dx = 0; +/* s->dx = ((BELLRAND(0.01) - 0.005) * speed); */ + s->dy = 0; + s->dz = (BELLRAND(0.02) * speed); + + s->spinner_speed = (BELLRAND(0.3) * speed); + + s->spin_speed = (int) BELLRAND(2.0 / speed) + 1; + s->spin_tick = 0; + + s->wave_position = 0; + s->wave_speed = (int) BELLRAND(3.0 / speed) + 1; + s->wave_tick = 0; + + for (i = 0; i < GRID_SIZE; i++) + if (do_clock && + !time_displayed_p && + (i < GRID_SIZE-5) && /* display approx. once per 5 strips */ + !(random() % (GRID_SIZE-5)*5)) + { + int j; + char text[80]; + time_t now = time ((time_t *) 0); + struct tm *tm = localtime (&now); + strftime (text, sizeof(text)-1, timefmt, tm); + + /* render time into the strip */ + for (j = 0; j < strlen(text) && i < GRID_SIZE; j++, i++) + { + s->glyphs[i] = char_map [((unsigned char *) text)[j]] + 1; + s->highlight[i] = True; + } + + time_displayed_p = True; + } + else + { + int draw_p = (random() % 7); + int spin_p = (draw_p && !(random() % 20)); + int g = (draw_p + ? mp->glyph_map[(random() % mp->nglyphs)] + 1 + : 0); + if (spin_p) g = -g; + s->glyphs[i] = g; + s->highlight[i] = False; + } + + s->spinner_glyph = - (mp->glyph_map[(random() % mp->nglyphs)] + 1); +} + + +/* Animate the strip one step. Reset if it has reached the bottom. + */ +static void +tick_strip (ModeInfo *mi, strip *s) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + int i; + + if (mp->button_down_p) + return; + + s->x += s->dx; + s->y += s->dy; + s->z += s->dz; + + if (s->z > GRID_DEPTH * SPLASH_RATIO) /* splashed into screen */ + { + reset_strip (mi, s); + return; + } + + s->spinner_y += s->spinner_speed; + if (s->spinner_y >= GRID_SIZE) + { + if (s->erasing_p) + { + reset_strip (mi, s); + return; + } + else + { + s->erasing_p = True; + s->spinner_y = 0; + s->spinner_speed /= 2; /* erase it slower than we drew it */ + } + } + + /* Spin the spinners. */ + s->spin_tick++; + if (s->spin_tick > s->spin_speed) + { + s->spin_tick = 0; + s->spinner_glyph = - (mp->glyph_map[(random() % mp->nglyphs)] + 1); + for (i = 0; i < GRID_SIZE; i++) + if (s->glyphs[i] < 0) + { + s->glyphs[i] = -(mp->glyph_map[(random() % mp->nglyphs)] + 1); + if (! (random() % 800)) /* sometimes they stop spinning */ + s->glyphs[i] = -s->glyphs[i]; + } + } + + /* Move the color (brightness) wave. */ + s->wave_tick++; + if (s->wave_tick > s->wave_speed) + { + s->wave_tick = 0; + s->wave_position++; + if (s->wave_position >= WAVE_SIZE) + s->wave_position = 0; + } +} + + +/* Draw a single character at the given position and brightness. + */ +static void +draw_glyph (ModeInfo *mi, int glyph, Bool highlight, + GLfloat x, GLfloat y, GLfloat z, + GLfloat brightness) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + GLfloat w = mp->tex_char_width; + GLfloat h = mp->tex_char_height; + GLfloat cx = 0, cy = 0; + GLfloat S = 1; + Bool spinner_p = (glyph < 0); + + if (glyph == 0) abort(); + if (glyph < 0) glyph = -glyph; + + if (spinner_p) + brightness *= 1.5; + + if (!do_texture) + { + S = 0.8; + x += 0.1; + y += 0.1; + } + else + { + int ccx = ((glyph - 1) % CHAR_COLS); + int ccy = ((glyph - 1) / CHAR_COLS); + + cx = ccx * w; + cy = (mp->real_char_rows - ccy - 1) * h; + + if (do_fog) + { + GLfloat depth; + depth = (z / GRID_DEPTH) + 0.5; /* z ratio from back/front */ + depth = 0.2 + (depth * 0.8); /* scale to range [0.2 - 1.0] */ + brightness *= depth; /* so no row goes all black. */ + } + } + + { + GLfloat r, g, b, a; + + if (highlight) + brightness *= 2; + + if (!do_texture && !spinner_p) + r = b = 0, g = 1; + else + r = g = b = 1; + + a = brightness; + + /* If the glyph is very close to the screen (meaning it is very large, + and is about to splash into the screen and vanish) then start fading + it out, proportional to how close to the glass it is. + */ + if (z > GRID_DEPTH/2) + { + GLfloat ratio = ((z - GRID_DEPTH/2) / + ((GRID_DEPTH * SPLASH_RATIO) - GRID_DEPTH/2)); + int i = ratio * WAVE_SIZE; + + if (i < 0) i = 0; + else if (i >= WAVE_SIZE) i = WAVE_SIZE-1; + + a *= mp->brightness_ramp[i]; + } + + glColor4f (r,g,b,a); + } + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f (0, 0, 1); + glTexCoord2f (cx, cy); glVertex3f (x, y, z); + glTexCoord2f (cx+w, cy); glVertex3f (x+S, y, z); + glTexCoord2f (cx+w, cy+h); glVertex3f (x+S, y+S, z); + glTexCoord2f (cx, cy+h); glVertex3f (x, y+S, z); + glEnd (); + + if (wire && spinner_p) + { + glBegin (GL_LINES); + glVertex3f (x, y, z); + glVertex3f (x+S, y+S, z); + glVertex3f (x, y+S, z); + glVertex3f (x+S, y, z); + glEnd(); + } + + mi->polygon_count++; +} + + +/* Draw all the visible glyphs in the strip. + */ +static void +draw_strip (ModeInfo *mi, strip *s) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + int i; + for (i = 0; i < GRID_SIZE; i++) + { + int g = s->glyphs[i]; + Bool below_p = (s->spinner_y >= i); + + if (s->erasing_p) + below_p = !below_p; + + if (g && below_p) /* don't draw cells below the spinner */ + { + GLfloat brightness; + if (!do_waves) + brightness = 1.0; + else + { + int j = WAVE_SIZE - ((i + (GRID_SIZE - s->wave_position)) + % WAVE_SIZE); + brightness = mp->brightness_ramp[j]; + } + + draw_glyph (mi, g, s->highlight[i], + s->x, s->y - i, s->z, brightness); + } + } + + if (!s->erasing_p) + draw_glyph (mi, s->spinner_glyph, False, + s->x, s->y - s->spinner_y, s->z, 1.0); +} + + +/* qsort comparator for sorting strips by z position */ +static int +cmp_strips (const void *aa, const void *bb) +{ + const strip *a = *(strip **) aa; + const strip *b = *(strip **) bb; + return ((int) (a->z * 10000) - + (int) (b->z * 10000)); +} + + +/* Auto-tracking + */ + +static void +auto_track_init (ModeInfo *mi) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + mp->last_view = 0; + mp->target_view = 0; + mp->view_x = nice_views[mp->last_view].x; + mp->view_y = nice_views[mp->last_view].y; + mp->view_steps = 100; + mp->view_tick = 0; + mp->auto_tracking_p = False; +} + + +static void +auto_track (ModeInfo *mi) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + + if (! do_rotate) + return; + if (mp->button_down_p) + return; + + /* if we're not moving, maybe start moving. Otherwise, do nothing. */ + if (! mp->auto_tracking_p) + { + if (++mp->track_tick < 20/speed) return; + mp->track_tick = 0; + if (! (random() % 20)) + mp->auto_tracking_p = True; + else + return; + } + + + { + GLfloat ox = nice_views[mp->last_view].x; + GLfloat oy = nice_views[mp->last_view].y; + GLfloat tx = nice_views[mp->target_view].x; + GLfloat ty = nice_views[mp->target_view].y; + + /* move from A to B with sinusoidal deltas, so that it doesn't jerk + to a stop. */ + GLfloat th = sin ((M_PI / 2) * (double) mp->view_tick / mp->view_steps); + + mp->view_x = (ox + ((tx - ox) * th)); + mp->view_y = (oy + ((ty - oy) * th)); + mp->view_tick++; + + if (mp->view_tick >= mp->view_steps) + { + mp->view_tick = 0; + mp->view_steps = (350.0 / speed); + mp->last_view = mp->target_view; + mp->target_view = (random() % (countof(nice_views) - 1)) + 1; + mp->auto_tracking_p = False; + } + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_matrix (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (80.0, 1/h, 1.0, 100); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 25.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +matrix_handle_event (ModeInfo *mi, XEvent *event) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + mp->button_down_p = True; + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + mp->button_down_p = False; + return True; + } + + return False; +} + + +#if 0 +static Bool +bigendian (void) +{ + union { int i; char c[sizeof(int)]; } u; + u.i = 1; + return !u.c[0]; +} +#endif + + +/* The image with the characters in it is 512x598, meaning that it needs to + be copied into a 512x1024 texture. But some machines can't handle textures + that large... And it turns out that we aren't using most of the characters + in that image anyway, since this program doesn't do anything that makes use + of the full range of Latin1 characters. So... this function tosses out the + last 32 of the Latin1 characters, resulting in a 512x506 image, which we + can then stuff in a 512x512 texture. Voila. + + If this hack ever grows into something that displays full Latin1 text, + well then, Something Else Will Need To Be Done. + + Since currently GLMatrix does not run textclient / xscreensaver-text, + it's not an issue. (XMatrix does that.) + + */ +static void +spank_image (matrix_configuration *mp, XImage *xi) +{ + int ch = xi->height / CHAR_ROWS; + int cut = 2; + unsigned char *bits = (unsigned char *) xi->data; + unsigned char *from, *to, *s, *end; + int L = xi->bytes_per_line * ch; +/* int i;*/ + + /* Copy row 12 into 10 (which really means, copy 2 into 0, + since texture data is upside down.). + */ + to = bits + (L * cut); + from = bits; + end = from + L; + s = from; + while (s < end) + *to++ = *s++; + + /* Then, pull all the bits down by 2 rows. + */ + to = bits; + from = bits + (L * cut); + end = bits + (L * CHAR_ROWS); + s = from; + while (s < end) + *to++ = *s++; + + /* And clear out the rest, for good measure. + */ + from = bits + (L * (CHAR_ROWS - cut)); + end = bits + (L * CHAR_ROWS); + s = from; + while (s < end) + *s++ = 0; + + xi->height -= (cut * ch); + mp->real_char_rows -= cut; + +# if 0 + /* Finally, pull the map indexes back to match the new bits. + */ + for (i = 0; i < countof(matrix_encoding); i++) + if (matrix_encoding[i] > (CHAR_COLS * (CHAR_ROWS - cut))) + matrix_encoding[i] -= (cut * CHAR_COLS); +# endif +} + + +static void +load_textures (ModeInfo *mi, Bool flip_p) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + XImage *xi; + int x, y; + int cw, ch; + int orig_w, orig_h; + + /* The Matrix image is 512x598 -- but GL texture sizes must be powers of 2. + So we waste some padding rows to round up. + */ + xi = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + matrix3_png, sizeof(matrix3_png)); + orig_w = xi->width; + orig_h = xi->height; + mp->real_char_rows = CHAR_ROWS; + spank_image (mp, xi); + + if (xi->height != 512 && xi->height != 1024) + { + xi->height = (xi->height < 512 ? 512 : 1024); + xi->data = realloc (xi->data, xi->height * xi->bytes_per_line); + if (!xi->data) + { + fprintf(stderr, "%s: out of memory\n", progname); + exit(1); + } + } + + if (xi->width != 512) abort(); + if (xi->height != 512 && xi->height != 1024) abort(); + + /* char size in pixels */ + cw = orig_w / CHAR_COLS; + ch = orig_h / CHAR_ROWS; + + /* char size in ratio of final (padded) texture size */ + mp->tex_char_width = (GLfloat) cw / xi->width; + mp->tex_char_height = (GLfloat) ch / xi->height; + + /* Flip each character's bits horizontally -- we could also just do this + by reversing the texture coordinates on the quads, but on some systems + that slows things down a lot. + */ + if (flip_p) + { + int xx, col; + unsigned long buf[100]; + for (y = 0; y < xi->height; y++) + for (col = 0, xx = 0; col < CHAR_COLS; col++, xx += cw) + { + for (x = 0; x < cw; x++) + buf[x] = XGetPixel (xi, xx+x, y); + for (x = 0; x < cw; x++) + XPutPixel (xi, xx+x, y, buf[cw-x-1]); + } + } + + /* The pixmap is a color image with no transparency. Set the texture's + alpha to be the green channel, and set the green channel to be 100%. + */ + { + int rpos, gpos, bpos, apos; /* bitfield positions */ +#if 0 + /* #### Cherub says that the little-endian case must be taken on MacOSX, + or else the colors/alpha are the wrong way around. How can + that be the case? + */ + if (bigendian()) + rpos = 24, gpos = 16, bpos = 8, apos = 0; + else +#endif + rpos = 0, gpos = 8, bpos = 16, apos = 24; + + for (y = 0; y < xi->height; y++) + for (x = 0; x < xi->width; x++) + { + unsigned long p = XGetPixel (xi, x, y); + unsigned char r = (p >> rpos) & 0xFF; + unsigned char g = (p >> gpos) & 0xFF; + unsigned char b = (p >> bpos) & 0xFF; + unsigned char a = g; + g = 0xFF; + p = (r << rpos) | (g << gpos) | (b << bpos) | (a << apos); + XPutPixel (xi, x, y, p); + } + } + + /* Now load the texture into GL. + */ + clear_gl_error(); + glGenTextures (1, &mp->texture); + + glPixelStorei (GL_UNPACK_ALIGNMENT, 4); + /* messes up -fps */ + /* glPixelStorei (GL_UNPACK_ROW_LENGTH, xi->width);*/ + glBindTexture (GL_TEXTURE_2D, mp->texture); + check_gl_error ("texture init"); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, xi->width, xi->height, 0, GL_RGBA, + GL_UNSIGNED_BYTE, xi->data); + { + char buf[255]; + sprintf (buf, "creating %dx%d texture:", xi->width, xi->height); + check_gl_error (buf); + } + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + /* I'd expect CLAMP to be the thing to do here, but oddly, we get a + faint solid green border around the texture if it is *not* REPEAT! + */ + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + check_gl_error ("texture param"); + + XDestroyImage (xi); +} + + +ENTRYPOINT void +init_matrix (ModeInfo *mi) +{ + matrix_configuration *mp; + int wire = MI_IS_WIREFRAME(mi); + Bool flip_p = 0; + int i; + + if (wire) + do_texture = False; + + MI_INIT (mi, mps); + + mp = &mps[MI_SCREEN(mi)]; + mp->glx_context = init_GL(mi); + + if (!mode_str || !*mode_str || !strcasecmp(mode_str, "matrix")) + { + flip_p = 1; + mp->glyph_map = matrix_encoding; + mp->nglyphs = countof(matrix_encoding); + } + else if (!strcasecmp (mode_str, "dna")) + { + flip_p = 0; + mp->glyph_map = dna_encoding; + mp->nglyphs = countof(dna_encoding); + } + else if (!strcasecmp (mode_str, "bin") || + !strcasecmp (mode_str, "binary")) + { + flip_p = 0; + mp->glyph_map = binary_encoding; + mp->nglyphs = countof(binary_encoding); + } + else if (!strcasecmp (mode_str, "hex") || + !strcasecmp (mode_str, "hexadecimal")) + { + flip_p = 0; + mp->glyph_map = hex_encoding; + mp->nglyphs = countof(hex_encoding); + } + else if (!strcasecmp (mode_str, "dec") || + !strcasecmp (mode_str, "decimal")) + { + flip_p = 0; + mp->glyph_map = decimal_encoding; + mp->nglyphs = countof(decimal_encoding); + } + else + { + fprintf (stderr, + "%s: `mode' must be matrix, dna, binary, or hex: not `%s'\n", + progname, mode_str); + exit (1); + } + + reshape_matrix (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glShadeModel(GL_SMOOTH); + + glDisable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); + glEnable(GL_NORMALIZE); + + if (do_texture) + load_textures (mi, flip_p); + + /* to scale coverage-percent to strips, this number looks about right... */ + mp->nstrips = (int) (density * 2.2); + if (mp->nstrips < 1) mp->nstrips = 1; + else if (mp->nstrips > 2000) mp->nstrips = 2000; + + + mp->strips = calloc (mp->nstrips, sizeof(strip)); + for (i = 0; i < mp->nstrips; i++) + { + strip *s = &mp->strips[i]; + reset_strip (mi, s); + + /* If we start all strips from zero at once, then the first few seconds + of the animation are much denser than normal. So instead, set all + the initial strips to erase-mode with random starting positions. + As these die off at random speeds and are re-created, we'll get a + more consistent density. */ + s->erasing_p = True; + s->spinner_y = frand(GRID_SIZE); + memset (s->glyphs, 0, sizeof(s->glyphs)); /* no visible glyphs */ + } + + /* Compute the brightness ramp. + */ + for (i = 0; i < WAVE_SIZE; i++) + { + GLfloat j = ((WAVE_SIZE - i) / (GLfloat) (WAVE_SIZE - 1)); + j *= (M_PI / 2); /* j ranges from 0.0 - PI/2 */ + j = sin (j); /* j ranges from 0.0 - 1.0 */ + j = 0.2 + (j * 0.8); /* j ranges from 0.2 - 1.0 */ + mp->brightness_ramp[i] = j; + /* printf("%2d %8.2f\n", i, j); */ + } + + + auto_track_init (mi); +} + + +#ifdef DEBUG + +static void +draw_grid (ModeInfo *mi) +{ + if (!MI_IS_WIREFRAME(mi)) + { + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + } + glPushMatrix(); + + glColor3f(1, 1, 1); + glBegin(GL_LINES); + glVertex3f(-GRID_SIZE, 0, 0); glVertex3f(GRID_SIZE, 0, 0); + glVertex3f(0, -GRID_SIZE, 0); glVertex3f(0, GRID_SIZE, 0); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, 0); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, 0); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, 0); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, 0); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, -GRID_DEPTH/2); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, -GRID_DEPTH/2); + glEnd(); + glBegin(GL_LINES); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, -GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f(-GRID_SIZE/2, GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, -GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, -GRID_SIZE/2, GRID_DEPTH/2); + glVertex3f( GRID_SIZE/2, GRID_SIZE/2, GRID_DEPTH/2); + glEnd(); + glPopMatrix(); + if (!MI_IS_WIREFRAME(mi)) + { + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + } +} +#endif /* DEBUG */ + + +ENTRYPOINT void +draw_matrix (ModeInfo *mi) +{ + matrix_configuration *mp = &mps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!mp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + + if (do_texture) + { + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + + /* Jeff Epler points out: + By using GL_ONE instead of GL_SRC_ONE_MINUS_ALPHA, glyphs are + added to each other, so that a bright glyph with a darker one + in front is a little brighter than the bright glyph alone. + */ + glBlendFunc (GL_SRC_ALPHA, GL_ONE); + } + + if (do_rotate) + { + glRotatef (mp->view_x, 1, 0, 0); + glRotatef (mp->view_y, 0, 1, 0); + } + +#ifdef DEBUG +# if 0 + glScalef(0.5, 0.5, 0.5); +# endif +# if 0 + glRotatef(-30, 0, 1, 0); +# endif + draw_grid (mi); +#endif + + mi->polygon_count = 0; + + /* Render (and tick) each strip, starting at the back + (draw the ones farthest from the camera first, to make + the alpha transparency work out right.) + */ + { + strip **sorted = malloc (mp->nstrips * sizeof(*sorted)); + for (i = 0; i < mp->nstrips; i++) + sorted[i] = &mp->strips[i]; + qsort (sorted, i, sizeof(*sorted), cmp_strips); + + for (i = 0; i < mp->nstrips; i++) + { + strip *s = sorted[i]; + tick_strip (mi, s); + draw_strip (mi, s); + } + free (sorted); + } + + auto_track (mi); + +#if 0 + glBegin(GL_QUADS); + glColor3f(1,1,1); + glTexCoord2f (0,0); glVertex3f(-15,-15,0); + glTexCoord2f (0,1); glVertex3f(-15,15,0); + glTexCoord2f (1,1); glVertex3f(15,15,0); + glTexCoord2f (1,0); glVertex3f(15,-15,0); + glEnd(); +#endif + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("GLMatrix", glmatrix, matrix) + +#endif /* USE_GL */ diff --git a/hacks/glx/glmatrix.man b/hacks/glx/glmatrix.man new file mode 100644 index 0000000..9290290 --- /dev/null +++ b/hacks/glx/glmatrix.man @@ -0,0 +1,116 @@ +.TH XScreenSaver 1 "30-Oct-99" "X Version 11" +.SH NAME +glmatrix - simulates the title sequence effect of the movie +.SH SYNOPSIS +.B glmatrix +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] +[\-delay \fIusecs\fP] +[\-speed \fIratio\fP] +[\-density \fIpct\fP] +[\-no\-fog] +[\-no\-waves] +[\-no\-rotate] +[\-binary] +[\-hexadecimal] +[\-dna] +[\-clock] +[\-timefmt \fIfmt\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIglmatrix\fP program draws the 3D "digital rain" effect, as seen +in the title sequence of the Wachowski brothers' film, "The Matrix". + +Also see +.BR xmatrix (MANSUFFIX) +for a 2D rendering of the similar effect that appeared on the +computer monitors actually \fIin\fP the movie. +.SH OPTIONS +.I glmatrix +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fIusecs\fP +The delay between frames of the animation, in microseconds: default 30000. +.TP 8 +.B \-speed \fIratio\fP +How fast the glyphs should move; default 1.0. 2.0 means twice as fast, +0.5 means half as fast. +.TP 8 +.B \-density \fIpercentage\fP +The approximate percentage of the screen that should be filled with +characters at any given time. Default 20%. +.TP 8 +.B \-no\-fog +By default, glyphs are dimmer the farther away they are. This +argument disables that. +.TP 8 +.B \-no\-waves +By default, waves of color roll down the columns of glyphs. This +argument disables that. +.TP 8 +.B \-no-rotate\fP +By default, the scene slowly tilts and rotates. This +argument disables that. +.TP 8 +.B \-binary\fP +Instead of displaying Matrix glyphs, only display ones and zeros. +.TP 8 +.B \-hexadecimal\fP +Instead of displaying Matrix glyphs, display hexadecimal digits. +.TP 8 +.B \-dna\fP +Instead of displaying Matrix glyphs, display genetic code +(guanine, adenine, thymine, and cytosine.) +.TP 8 +.B \-clock\fP +Hide a clock displaying the current time somewhere in the glyphs. +.TP 8 +.B \-timefmt\fP \fIstrftime-string\fP +How to format the clock when \fI\-clock\fP is specified. +Default "\ %l%M%p\ ". +.TP 8 +.B \-speed \fIratio\fP +Less than 1 for slower, greater than 1 for faster. Default 1. +.TP 8 +.B \-wireframe +Just draw boxes instead of textured characters. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR xmatrix (MANSUFFIX), +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 1999-2003 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski , 8-Jun-2003. diff --git a/hacks/glx/glplanet.c b/hacks/glx/glplanet.c new file mode 100644 index 0000000..f26a4ad --- /dev/null +++ b/hacks/glx/glplanet.c @@ -0,0 +1,847 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* glplanet --- 3D rotating planet, e.g., Earth. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * + * 10-Nov-14: jwz@jwz.org Night map. Better stars. + * 16-Jan-02: jwz@jwz.org gdk_pixbuf support. + * 21-Mar-01: jwz@jwz.org Broke sphere routine out into its own file. + * + * 9-Oct-98: dek@cgl.ucsf.edu Added stars. + * + * 8-Oct-98: jwz@jwz.org Made the 512x512x1 xearth image be built in. + * Made it possible to load XPM or XBM files. + * Made the planet bounce and roll around. + * + * 8-Oct-98: Released initial version of "glplanet" + * (David Konerding, dek@cgl.ucsf.edu) + */ + + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*imageForeground: Green \n" \ + "*imageBackground: Blue \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_planet 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL /* whole file */ + +#include "sphere.h" + +#ifdef HAVE_XMU +# ifndef VMS +# include +#else /* VMS */ +# include +# endif /* VMS */ +#endif + +#define DEF_ROTATE "True" +#define DEF_ROLL "True" +#define DEF_WANDER "True" +#define DEF_SPIN "1.0" +#define DEF_TEXTURE "True" +#define DEF_STARS "True" +#define DEF_RESOLUTION "128" +#define DEF_IMAGE "BUILTIN" +#define DEF_IMAGE2 "BUILTIN" + +#define BLENDED_TERMINATOR + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +static int do_rotate; +static int do_roll; +static int do_wander; +static int do_texture; +static int do_stars; +static char *which_image; +static char *which_image2; +static int resolution; +static GLfloat spin_arg; + +static XrmOptionDescRec opts[] = { + {"-rotate", ".rotate", XrmoptionNoArg, "true" }, + {"+rotate", ".rotate", XrmoptionNoArg, "false" }, + {"-roll", ".roll", XrmoptionNoArg, "true" }, + {"+roll", ".roll", XrmoptionNoArg, "false" }, + {"-wander", ".wander", XrmoptionNoArg, "true" }, + {"+wander", ".wander", XrmoptionNoArg, "false" }, + {"-texture", ".texture", XrmoptionNoArg, "true" }, + {"+texture", ".texture", XrmoptionNoArg, "false" }, + {"-stars", ".stars", XrmoptionNoArg, "true" }, + {"+stars", ".stars", XrmoptionNoArg, "false" }, + {"-spin", ".spin", XrmoptionSepArg, 0 }, + {"-image", ".image", XrmoptionSepArg, 0 }, + {"-image2", ".image2", XrmoptionSepArg, 0 }, + {"-resolution", ".resolution", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool}, + {&do_roll, "roll", "Roll", DEF_ROLL, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_stars, "stars", "Stars", DEF_STARS, t_Bool}, + {&spin_arg, "spin", "Spin", DEF_SPIN, t_Float}, + {&which_image, "image", "Image", DEF_IMAGE, t_String}, + {&which_image2,"image2", "Image", DEF_IMAGE2, t_String}, + {&resolution, "resolution","Resolution", DEF_RESOLUTION, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt planet_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct planet_description = +{"planet", "init_planet", "draw_planet", NULL, + "draw_planet", "init_planet", "free_planet", &planet_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Animates texture mapped sphere (planet)", 0, NULL}; +#endif + +#include "images/gen/earth_png.h" +#include "images/gen/earth_night_png.h" + +#include "ximage-loader.h" +#include "rotator.h" +#include "gltrackball.h" + + +/*- + * slices and stacks are used in the sphere parameterization routine. + * more slices and stacks will increase the quality of the sphere, + * at the expense of rendering speed + */ + +/* structure for holding the planet data */ +typedef struct { + GLuint platelist; + GLuint shadowlist; + GLuint latlonglist; + GLuint starlist; + int starcount; + int screen_width, screen_height; + GLXContext *glx_context; + Window window; + GLfloat z; + GLfloat tilt; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + GLuint tex1, tex2; + int draw_axis; + +} planetstruct; + + +static planetstruct *planets = NULL; + + +/* Set up and enable texturing on our object */ +static void +setup_xpm_texture (ModeInfo *mi, const unsigned char *data, unsigned long size) +{ + XImage *image = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + data, size); + char buf[1024]; + clear_gl_error(); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + /* iOS invalid enum: + glPixelStorei(GL_UNPACK_ROW_LENGTH, image->width); + */ + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + image->width, image->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image->data); + sprintf (buf, "builtin texture (%dx%d)", image->width, image->height); + check_gl_error(buf); +} + + +static Bool +setup_file_texture (ModeInfo *mi, char *filename) +{ + Display *dpy = mi->dpy; + Visual *visual = mi->xgwa.visual; + char buf[1024]; + + XImage *image = file_to_ximage (dpy, visual, filename); + if (!image) return False; + + clear_gl_error(); + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + glPixelStorei(GL_UNPACK_ROW_LENGTH, image->width); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + image->width, image->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image->data); + sprintf (buf, "texture: %.100s (%dx%d)", + filename, image->width, image->height); + check_gl_error(buf); + return True; +} + + +static void +setup_texture (ModeInfo * mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + + glGenTextures (1, &gp->tex1); + glBindTexture (GL_TEXTURE_2D, gp->tex1); + + /* Must be after glBindTexture */ + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + if (!which_image || + !*which_image || + !strcmp(which_image, "BUILTIN")) + { + BUILTIN1: + setup_xpm_texture (mi, earth_png, sizeof(earth_png)); + } + else + { + if (! setup_file_texture (mi, which_image)) + goto BUILTIN1; + } + + check_gl_error("texture 1 initialization"); + + glGenTextures (1, &gp->tex2); + glBindTexture (GL_TEXTURE_2D, gp->tex2); + + /* Must be after glBindTexture */ + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + if (!which_image2 || + !*which_image2 || + !strcmp(which_image2, "BUILTIN")) + { + BUILTIN2: + setup_xpm_texture (mi, earth_night_png, sizeof(earth_night_png)); + } + else + { + if (! setup_file_texture (mi, which_image2)) + goto BUILTIN2; + } + + check_gl_error("texture 2 initialization"); + + /* Need to flip the texture top for bottom for some reason. */ + glMatrixMode (GL_TEXTURE); + glScalef (1, -1, 1); + glMatrixMode (GL_MODELVIEW); +} + + +static void +init_stars (ModeInfo *mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + int i, j; + int width = MI_WIDTH(mi); + int height = MI_HEIGHT(mi); + int size = (width > height ? width : height); + int nstars = size * size / 80; + int max_size = 3; + GLfloat inc = 0.5; + int steps = max_size / inc; + GLfloat scale = 1; + + if (MI_WIDTH(mi) > 2560) { /* Retina displays */ + scale *= 2; + nstars /= 2; + } + + gp->starlist = glGenLists(1); + glNewList(gp->starlist, GL_COMPILE); + for (j = 1; j <= steps; j++) + { + glPointSize(inc * j * scale); + glBegin (GL_POINTS); + for (i = 0; i < nstars / steps; i++) + { + GLfloat d = 0.1; + GLfloat r = 0.15 + frand(0.3); + GLfloat g = r + frand(d) - d; + GLfloat b = r + frand(d) - d; + + GLfloat x = frand(1)-0.5; + GLfloat y = frand(1)-0.5; + GLfloat z = ((random() & 1) + ? frand(1)-0.5 + : (BELLRAND(1)-0.5)/12); /* milky way */ + d = sqrt (x*x + y*y + z*z); + x /= d; + y /= d; + z /= d; + glColor3f (r, g, b); + glVertex3f (x, y, z); + gp->starcount++; + } + glEnd (); + } + glEndList (); + + check_gl_error("stars initialization"); +} + + +#ifdef BLENDED_TERMINATOR +static void +terminator_tube (ModeInfo *mi, int resolution) +{ + Bool wire = MI_IS_WIREFRAME(mi); + GLfloat th; + GLfloat step = M_PI*2 / resolution; + GLfloat thickness = 0.1; /* Dusk is about an hour wide. */ + GLfloat c1[] = { 0, 0, 0, 1 }; + GLfloat c2[] = { 0, 0, 0, 0 }; + + glPushMatrix(); + if (wire) + { + c1[0] = c1[1] = 0.5; + c2[2] = 0.5; + glLineWidth (4); + } + glRotatef (90, 1, 0, 0); + glScalef (1.02, 1.02, 1.02); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (th = 0; th < M_PI*2 + step; th += step) + { + GLfloat x = cos(th); + GLfloat y = sin(th); + glColor4fv (c1); + if (!do_texture) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c1); + glNormal3f (x, y, 0); + glVertex3f (x, y, thickness); + glColor4fv (c2); + if (!do_texture) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c2); + glVertex3f (x, y, -thickness); + } + glEnd(); + + /* There's a bit of a spike in the shading where the tube overlaps + the sphere, so extend the sphere a lot to try and avoid that. */ +# if 0 /* Nope, that doesn't help. */ + glColor4fv (c1); + if (!do_texture) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c1); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (th = 0; th < M_PI*2 + step; th += step) + { + GLfloat x = cos(th); + GLfloat y = sin(th); + glNormal3f (x, y, 0); + glVertex3f (x, y, thickness); + glVertex3f (x, y, thickness + 10); + } + glEnd(); + + glColor4fv (c2); + if (!do_texture) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c2); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (th = 0; th < M_PI*2 + step; th += step) + { + GLfloat x = cos(th); + GLfloat y = sin(th); + glNormal3f (x, y, 0); + glVertex3f (x, y, -thickness); + glVertex3f (x, y, -thickness - 10); + } + glEnd(); +# endif /* 0 */ + + glPopMatrix(); +} +#endif /* BLENDED_TERMINATOR */ + + +ENTRYPOINT void +reshape_planet (ModeInfo *mi, int width, int height) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + + glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context)); + + glViewport(0, 0, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -h, h, 5.0, 200.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (h, h, h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + +ENTRYPOINT Bool +planet_handle_event (ModeInfo *mi, XEvent *event) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, gp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &gp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_planet (ModeInfo * mi) +{ + planetstruct *gp; + int screen = MI_SCREEN(mi); + Bool wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, planets); + gp = &planets[screen]; + + gp->window = MI_WINDOW(mi); + + if ((gp->glx_context = init_GL(mi)) != NULL) { + reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + { + char *f = get_string_resource(mi->dpy, "imageForeground", "Foreground"); + char *b = get_string_resource(mi->dpy, "imageBackground", "Background"); + char *s; + if (!f) f = strdup("white"); + if (!b) b = strdup("black"); + + for (s = f + strlen(f)-1; s > f; s--) + if (*s == ' ' || *s == '\t') + *s = 0; + for (s = b + strlen(b)-1; s > b; s--) + if (*s == ' ' || *s == '\t') + *s = 0; + + free (f); + free (b); + } + + { + double spin_speed = 0.1; + double wander_speed = 0.005; + gp->rot = make_rotator (do_roll ? spin_speed : 0, + do_roll ? spin_speed : 0, + 0, 1, + do_wander ? wander_speed : 0, + True); + gp->z = frand (1.0); + gp->tilt = frand (23.4); + gp->trackball = gltrackball_init (True); + } + + if (!wire && !do_texture) + { + GLfloat pos[4] = {1, 1, 1, 0}; + GLfloat amb[4] = {0, 0, 0, 1}; + GLfloat dif[4] = {1, 1, 1, 1}; + GLfloat spc[4] = {0, 1, 1, 1}; + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + if (wire) + do_texture = False; + + if (do_texture) + setup_texture (mi); + + if (do_stars) + init_stars (mi); + + /* construct the polygons of the planet + */ + gp->platelist = glGenLists(1); + glNewList (gp->platelist, GL_COMPILE); + glFrontFace(GL_CCW); + glPushMatrix(); + glRotatef (90, 1, 0, 0); + unit_sphere (resolution, resolution, wire); + glPopMatrix(); + glEndList(); + + gp->shadowlist = glGenLists(1); + glNewList (gp->shadowlist, GL_COMPILE); + glFrontFace(GL_CCW); + + if (wire) + glColor4f (0.5, 0.5, 0, 1); +# ifdef BLENDED_TERMINATOR + else + { + GLfloat c[] = { 0, 0, 0, 1 }; + glColor4fv (c); + if (!do_texture) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); + } +# endif + + glPushMatrix(); + glScalef (1.01, 1.01, 1.01); + unit_dome (resolution, resolution, wire); + +# ifdef BLENDED_TERMINATOR + terminator_tube (mi, resolution); + if (!wire) + { + /* We have to draw the transparent side of the mask too, + though I'm not sure why. */ + GLfloat c[] = { 0, 0, 0, 0 }; + glColor4fv (c); + if (!do_texture) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); + glRotatef (180, 1, 0, 0); + unit_dome (resolution, resolution, wire); + } +# endif + + glPopMatrix(); + glEndList(); + + /* construct the polygons of the latitude/longitude/axis lines. + */ + gp->latlonglist = glGenLists(1); + glNewList (gp->latlonglist, GL_COMPILE); + glPushMatrix (); + glRotatef (90, 1, 0, 0); /* unit_sphere is off by 90 */ + glRotatef (8, 0, 1, 0); /* line up the time zones */ + unit_sphere (12, 24, 1); + unit_sphere (12, 24, 1); + glBegin(GL_LINES); + glVertex3f(0, -2, 0); + glVertex3f(0, 2, 0); + glEnd(); + glPopMatrix (); + glEndList(); +} + + +ENTRYPOINT void +draw_planet (ModeInfo * mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + double x, y, z; + + if (!gp->glx_context) + return; + + glDrawBuffer(GL_BACK); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glXMakeCurrent (dpy, window, *(gp->glx_context)); + + mi->polygon_count = 0; + + if (gp->button_down_p) + gp->draw_axis = 60; + else if (!gp->draw_axis && !(random() % 1000)) + gp->draw_axis = 60 + (random() % 90); + + if (do_rotate && !gp->button_down_p) + { + gp->z -= 0.001 * spin_arg; /* the sun sets in the west */ + if (gp->z < 0) gp->z += 1; + } + + glEnable(GL_LINE_SMOOTH); + glEnable(GL_POINT_SMOOTH); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + + glPushMatrix(); + + get_position (gp->rot, &x, &y, &z, !gp->button_down_p); + x = (x - 0.5) * 6; + y = (y - 0.5) * 6; + z = (z - 0.5) * 3; + glTranslatef(x, y, z); + + gltrackball_rotate (gp->trackball); + + if (do_roll) + { + get_rotation (gp->rot, &x, &y, 0, !gp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + } + else + glRotatef (current_device_rotation(), 0, 0, 1); + + if (do_stars) + { + glDisable(GL_TEXTURE_2D); + glPushMatrix(); + glScalef (60, 60, 60); + glRotatef (90, 1, 0, 0); + glRotatef (35, 1, 0, 0); + glCallList (gp->starlist); + mi->polygon_count += gp->starcount; + glPopMatrix(); + glClear(GL_DEPTH_BUFFER_BIT); + } + + glRotatef (90, 1, 0, 0); + glRotatef (35, 1, 0, 0); + glRotatef (10, 0, 1, 0); + glRotatef (120, 0, 0, 1); + + glScalef (3, 3, 3); + +# ifdef HAVE_MOBILE + glScalef (2, 2, 2); +# endif + + if (wire) + glColor3f (0, 0, 0.5); + else if (do_texture) + { + glColor4f (1, 1, 1, 1); + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, gp->tex1); + } + else + { + GLfloat c[] = { 0, 0.5, 0, 1 }; + glColor4fv (c); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); + } + + glPushMatrix(); + glRotatef (gp->z * 360, 0, 0, 1); + glCallList (gp->platelist); + mi->polygon_count += resolution*resolution; + glPopMatrix(); + + if (wire) + { + glPushMatrix(); + glRotatef (gp->tilt, 1, 0, 0); + glColor3f(1, 0, 0); + glLineWidth(4); + glCallList (gp->shadowlist); + glLineWidth(1); + mi->polygon_count += resolution*(resolution/2); + glPopMatrix(); + } + + else if (!do_texture || gp->tex2) + { + /* Originally we just used GL_LIGHT0 to produce the day/night sides of + the planet, but that always looked crappy, even with a vast number of + polygons, because the day/night terminator didn't exactly line up with + the polygon edges. + */ + +#ifndef BLENDED_TERMINATOR + + /* Method 1, use the depth buffer as a stencil. + + - Draw the full "day" sphere; + - Clear the depth buffer; + - Draw a rotated/tilted half-sphere into the depth buffer only, + on the Eastern hemisphere, putting non-zero depth only on the + sunlit side; + - Draw the full "night" sphere, which will clip to dark parts only. + + That lets us divide the sphere into the two maps, and the dividing + line can be at any angle, regardless of polygon layout. + + The half-sphere is scaled slightly larger to avoid polygon fighting, + since those triangles won't exactly line up because of the rotation. + + The downside of this is that the day/night terminator is 100% sharp. + */ + glClear (GL_DEPTH_BUFFER_BIT); + glColorMask (0, 0, 0, 0); + glDisable (GL_TEXTURE_2D); + glPushMatrix(); + glRotatef (gp->tilt, 1, 0, 0); + glScalef (1.01, 1.01, 1.01); + glCallList (gp->shadowlist); /* Fill in depth on sunlit side */ + mi->polygon_count += resolution*(resolution/2); + glPopMatrix(); + glColorMask (1, 1, 1, 1); + + if (do_texture) + { + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, gp->tex2); + } + else + { + GLfloat c[] = { 0, 0, 0.5, 1 }; + glColor4fv (c); + if (! do_texture) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); + } + + glPushMatrix(); + glRotatef (gp->z * 360, 0, 0, 1); + glCallList (gp->platelist); /* Fill in color on night side */ + mi->polygon_count += resolution*resolution; + glPopMatrix(); + +#else /* BLENDED_TERMINATOR */ + + /* Method 2, use the alpha buffer as a stencil. + - Draw the full "day" sphere; + - Clear the depth buffer; + - Clear the alpha buffer; + - Draw a rotated/tilted half-sphere into the alpha buffer only, + on the Eastern hemisphere, putting non-zero alpha only on the + sunlit side; + - Also draw a fuzzy terminator ring into the alpha buffer; + - Clear the depth buffer again; + - Draw the full "night" sphere, which will blend to dark parts only. + */ + glColorMask (0, 0, 0, 1); + glClear (GL_COLOR_BUFFER_BIT); + glClear (GL_DEPTH_BUFFER_BIT); + glDisable (GL_TEXTURE_2D); + + glPushMatrix(); + glRotatef (gp->tilt, 1, 0, 0); + glScalef (1.01, 1.01, 1.01); + glCallList (gp->shadowlist); /* Fill in alpha on sunlit side */ + mi->polygon_count += resolution*(resolution/2); + glPopMatrix(); + + glClear (GL_DEPTH_BUFFER_BIT); + + glColorMask (1, 1, 1, 1); + { + GLfloat c[] = { 1, 1, 1, 1 }; + glColor4fv (c); + if (! do_texture) + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); + } + glEnable (GL_BLEND); + glBlendFunc (GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA); + + if (do_texture) + { + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, gp->tex2); + } + else + { + GLfloat c[] = { 0, 0, 0.5, 1 }; + glColor4fv (c); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); + glEnable (GL_LIGHTING); + } + + glPushMatrix(); + glRotatef (gp->z * 360, 0, 0, 1); + glCallList (gp->platelist); /* Fill in color on night side */ + mi->polygon_count += resolution*resolution; + glPopMatrix(); + glDisable (GL_BLEND); + glBlendFunc (GL_ONE, GL_ZERO); + +#endif /* BLENDED_TERMINATOR */ + } + + if (gp->draw_axis) + { + glPushMatrix(); + glRotatef (gp->z * 360, 0.0, 0.0, 1.0); + glScalef (1.02, 1.02, 1.02); + glDisable (GL_TEXTURE_2D); + glDisable (GL_LIGHTING); + glDisable (GL_LINE_SMOOTH); + glColor3f (0.1, 0.3, 0.1); + glCallList (gp->latlonglist); + mi->polygon_count += 24*24; + glPopMatrix(); + if (!wire && !do_texture) + glEnable (GL_LIGHTING); + if (gp->draw_axis) gp->draw_axis--; + } + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(dpy, window); +} + + +ENTRYPOINT void +free_planet (ModeInfo * mi) +{ + planetstruct *gp = &planets[MI_SCREEN(mi)]; + + if (gp->glx_context) { + glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context)); + + if (glIsList(gp->platelist)) + glDeleteLists(gp->platelist, 1); + if (glIsList(gp->starlist)) + glDeleteLists(gp->starlist, 1); + } +} + + +XSCREENSAVER_MODULE_2 ("GLPlanet", glplanet, planet) + +#endif diff --git a/hacks/glx/glplanet.man b/hacks/glx/glplanet.man new file mode 100644 index 0000000..6a62dc9 --- /dev/null +++ b/hacks/glx/glplanet.man @@ -0,0 +1,75 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +glplanet - rotating 3d texture-mapped planet. +.SH SYNOPSIS +.B glplanet +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-image \fIfile\fP] +[\-image2 \fIfile\fP] +[\-resolution \fInumber\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Draws a planet bouncing around in space. The built-in images are day and +night maps of the Earth, but you can wrap any Equirectangular-projected +map onto the sphere, e.g., the planetary textures included +with \fIssystem.\fP +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-image \fIfile\fP +The day texture map to wrap around the planet's surface. +.TP 8 +.B \-image2 \fIfile\fP +The night texture map to wrap around the planet's surface. +The two will be blended together at the dusk terminator. +.TP 8 +.B \-resolution +The resolution of the planetary mesh. Default: 128. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR dymaxionmap (1) +.BR ssystem (1) +.SH COPYRIGHT +Copyright \(co 2002-2018 by David Konerding and Jamie Zawinski. +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +David Konerding and Jamie Zawinski. diff --git a/hacks/glx/glschool.c b/hacks/glx/glschool.c new file mode 100644 index 0000000..49cfc11 --- /dev/null +++ b/hacks/glx/glschool.c @@ -0,0 +1,216 @@ +/* glschool.c, Copyright (c) 2005-2006 David C. Lambert + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ +#include "xlockmore.h" +#include "glschool.h" + +#define sws_opts xlockmore_opts +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +#define free_glschool (0) +#define release_glschool (0) +#define glschool_handle_event (xlockmore_no_events) + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define DEF_NFISH "100" +#define DEF_FOG "False" +#define DEF_DRAWBBOX "True" +#define DEF_DRAWGOAL "False" +#define DEF_GOALCHGF "50" +#define DEF_MAXVEL "7.0" +#define DEF_MINVEL "1.0" +#define DEF_ACCLIMIT "8.0" +#define DEF_DISTEXP "2.2" +#define DEF_AVOIDFACT "1.5" +#define DEF_MATCHFACT "0.15" +#define DEF_CENTERFACT "0.1" +#define DEF_TARGETFACT "80" +#define DEF_MINRADIUS "30.0" +#define DEF_MOMENTUM "0.9" +#define DEF_DISTCOMP "10.0" + +static int NFish; +static Bool DoFog; +static Bool DoDrawBBox; +static Bool DoDrawGoal; +static int GoalChgFreq; +static float MinVel; +static float MaxVel; +static float DistExp; +static float AccLimit; +static float AvoidFact; +static float MatchFact; +static float TargetFact; +static float CenterFact; +static float MinRadius; +static float Momentum; +static float DistComp; + +static XrmOptionDescRec opts[] = { + { "-nfish", ".nfish", XrmoptionSepArg, 0 }, + { "-fog", ".fog", XrmoptionNoArg, "True" }, + { "+fog", ".fog", XrmoptionNoArg, "False" }, + { "-drawgoal", ".drawgoal", XrmoptionNoArg, "True" }, + { "+drawgoal", ".drawgoal", XrmoptionNoArg, "False" }, + { "-drawbbox", ".drawbbox", XrmoptionNoArg, "True" }, + { "+drawbbox", ".drawbbox", XrmoptionNoArg, "False" }, + { "-goalchgf", ".goalchgf", XrmoptionSepArg, 0 }, + { "-maxvel", ".maxvel", XrmoptionSepArg, 0 }, + { "-minvel", ".minvel", XrmoptionSepArg, 0 }, + { "-acclimit", ".acclimit", XrmoptionSepArg, 0 }, + { "-distexp", ".distexp", XrmoptionSepArg, 0 }, + { "-avoidfact", ".avoidfact", XrmoptionSepArg, 0 }, + { "-matchfact", ".matchfact", XrmoptionSepArg, 0 }, + { "-centerfact",".centerfact", XrmoptionSepArg, 0 }, + { "-targetfact",".targetfact", XrmoptionSepArg, 0 }, + { "-minradius", ".minradius", XrmoptionSepArg, 0 }, + { "-distcomp", ".distcomp", XrmoptionSepArg, 0 }, + { "-momentum", ".momentum", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&NFish, "nfish", "NFish", DEF_NFISH, t_Int}, + {&DoFog, "fog", "DoFog", DEF_FOG, t_Bool}, + {&DoDrawBBox, "drawbbox", "DoDrawBBox", DEF_DRAWBBOX, t_Bool}, + {&DoDrawGoal, "drawgoal", "DoDrawGoal", DEF_DRAWGOAL, t_Bool}, + {&GoalChgFreq, "goalchgf", "GoalChgFreq", DEF_GOALCHGF, t_Int}, + {&MaxVel, "maxvel", "MaxVel", DEF_MAXVEL, t_Float}, + {&MinVel, "minvel", "MinVel", DEF_MINVEL, t_Float}, + {&AccLimit, "acclimit", "AccLimit", DEF_ACCLIMIT, t_Float}, + {&DistExp, "distexp", "DistExp", DEF_DISTEXP, t_Float}, + {&AvoidFact, "avoidfact", "AvoidFact", DEF_AVOIDFACT, t_Float}, + {&MatchFact, "matchfact", "MatchFact", DEF_MATCHFACT, t_Float}, + {&CenterFact, "centerfact", "CenterFact", DEF_CENTERFACT, t_Float}, + {&TargetFact, "targetfact", "TargetFact", DEF_TARGETFACT, t_Float}, + {&MinRadius, "minradius", "MinRadius", DEF_MINRADIUS, t_Float}, + {&Momentum, "momentum", "Momentum", DEF_MOMENTUM, t_Float}, + {&DistComp, "distcomp", "DistComp", DEF_DISTCOMP, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt glschool_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +typedef struct { + int nColors; + int rotCounter; + int goalCounter; + Bool drawGoal; + Bool drawBBox; + GLuint bboxList; + GLuint goalList; + GLuint fishList; + int fish_polys, box_polys; + XColor *colors; + School *school; + GLXContext *context; +} glschool_configuration; + +static glschool_configuration *scs = NULL; + +ENTRYPOINT void +reshape_glschool(ModeInfo *mi, int width, int height) +{ + Bool wire = MI_IS_WIREFRAME(mi); + double aspect = (double)width/(double)height; + glschool_configuration *sc = &scs[MI_SCREEN(mi)]; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context)); + if (sc->school != (School *)0) { + glschool_setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0); + glDeleteLists(sc->bboxList, 1); + glschool_createBBoxList(&SCHOOL_BBOX(sc->school), + &sc->bboxList, wire); + } + glschool_reshape(width, height); +} + +ENTRYPOINT void +init_glschool(ModeInfo *mi) +{ + int width = MI_WIDTH(mi); + int height = MI_HEIGHT(mi); + Bool wire = MI_IS_WIREFRAME(mi); + glschool_configuration *sc; + + MI_INIT (mi, scs); + sc = &scs[MI_SCREEN(mi)]; + + sc->drawGoal = DoDrawGoal; + sc->drawBBox = DoDrawBBox; + + sc->nColors = 360; + sc->context = init_GL(mi); + sc->colors = (XColor *)calloc(sc->nColors, sizeof(XColor)); + make_color_ramp(0, 0, 0, + 0.0, 1.0, 1.0, + 359.0, 1.0, 1.0, + sc->colors, &sc->nColors, + False, 0, False); + + sc->school = glschool_initSchool(NFish, AccLimit, MaxVel, MinVel, DistExp, Momentum, + MinRadius, AvoidFact, MatchFact, CenterFact, TargetFact, + DistComp); + if (sc->school == (School *)0) { + fprintf(stderr, "couldn't initialize TheSchool, exiting\n"); + exit(1); + } + + reshape_glschool(mi, width, height); + + glschool_initGLEnv(DoFog); + glschool_initFishes(sc->school); + glschool_createDrawLists(&SCHOOL_BBOX(sc->school), + &sc->bboxList, &sc->goalList, &sc->fishList, + &sc->fish_polys, &sc->box_polys, wire); + glschool_computeAccelerations(sc->school); +} + +ENTRYPOINT void +draw_glschool(ModeInfo *mi) +{ + Window window = MI_WINDOW(mi); + Display *dpy = MI_DISPLAY(mi); + glschool_configuration *sc = &scs[MI_SCREEN(mi)]; + + if (!sc->context) { + fprintf(stderr, "no context\n"); + return; + } + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context)); + + mi->polygon_count = 0; + + if ((sc->goalCounter % GoalChgFreq) == 0) + glschool_newGoal(sc->school); + sc->goalCounter++; + + sc->rotCounter++; + sc->rotCounter = (sc->rotCounter%360); + + glschool_applyMovements(sc->school); + glschool_drawSchool(sc->colors, sc->school, sc->bboxList, + sc->goalList, sc->fishList, sc->rotCounter, + sc->drawGoal, sc->drawBBox, + sc->fish_polys, sc->box_polys, + &mi->polygon_count); + glschool_computeAccelerations(sc->school); + + if (mi->fps_p) + do_fps(mi); + + glFinish(); + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE("GLSchool", glschool) diff --git a/hacks/glx/glschool.h b/hacks/glx/glschool.h new file mode 100644 index 0000000..b6ce7d5 --- /dev/null +++ b/hacks/glx/glschool.h @@ -0,0 +1,17 @@ +/* glschool.h, Copyright (c) 2005-2006 David C. Lambert + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ +#ifndef __GLSCHOOL_H__ +#define __GLSCHOOL_H__ + +#include "glschool_alg.h" +#include "glschool_gl.h" + +#endif /* __GLSCHOOL_H__ */ diff --git a/hacks/glx/glschool.man b/hacks/glx/glschool.man new file mode 100644 index 0000000..8de00c4 --- /dev/null +++ b/hacks/glx/glschool.man @@ -0,0 +1,126 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +glschool - a 3D schooling simulation +.SH SYNOPSIS +.B glschool +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-wireframe] +[\-fps] +[\-delay \fInumber\fP] +[\-nfish \fInumber\fP] +[\-maxvel \fInumber\fP] +[\-minvel \fInumber\fP] +[\-acclimit \fInumber\fP] +[\-avoidfact \fInumber\fP] +[\-matchfact \fInumber\fP] +[\-centerfact \fInumber\fP] +[\-targetfact \fInumber\fP] +[\-minradius \fInumber\fP] +[\-momentum \fInumber\fP] +[\-distexp \fInumber\fP] +[\-goalchgf \fInumber\fP] +[\-fog] +[\-drawgoal] +[\-drawbbox] +.SH DESCRIPTION +Uses Craig Reynolds Boids algorithm to simulate a 3d school of +fish. See for a description +of the algorithm and the original paper. This is a lightly modified +version of the algorithm that supports goal attraction. + +Many different behaviors are possible by tweaking the parameters. No sanity checking is performed +on the command line params, so if you want to use negative accelerations or minimum velocity that is +larger than maximum velocity or that sort of thing, the simulation will try to digest it. + +It looks best with the highest number of fish that will give you an FPS of > 25 or so. + +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.020 seconds.). +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-fog | \-no-fog + Whether to show foggy (cloudy) water. +.TP 8 +.B \-drawgoal | \-no-drawgoal + Whether to show the school's attraction goal. +.TP 8 +.B \-drawbbox | \-no-drawbbox + Whether to show the bounding box. +.TP 8 +.B \-fog | \-no-fog + Whether to show foggy (cloudy) water. +.TP 8 +.B \-nfish \fInumber\fP +Number of fish. Defaults to 100 +.TP 8 +.B \-acclimit \fInumber\fP +Acceleration limit. Defaults to 8.0 +.TP 8 +.B \-minvel \fInumber\fP +Minimum velocity. Defaults to 1.0 +.TP 8 +.B \-maxvel \fInumber\fP +Minimum velocity. Defaults to 7.0 +.TP 8 +.B \-goalchgf \fInumber\fP +Goal change frequency. Defaults to 50 (frames) +.TP 8 +.B \-avoidfact \fInumber\fP +Avoidance acceleration factor. Defaults to 1.5 +.TP 8 +.B \-matchfact \fInumber\fP +Match avg velocity acceleration factor. Defaults to 0.15 +.TP 8 +.B \-centerfact \fInumber\fP +School centering acceleration factor. Defaults to 0.1 +.TP 8 +.B \-targetfact \fInumber\fP +Target attraction acceleration factor. Defaults to 80 +.TP 8 +.B \-distexp \fInumber\fP +Distance weighting exponent. Defaults to 2.2 +.TP 8 +.B \-momentum \fInumber\fP +Momentum. Defaults to 0.9 +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2005-2006 by David C. Lambert. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +David C. Lambert diff --git a/hacks/glx/glschool_alg.c b/hacks/glx/glschool_alg.c new file mode 100644 index 0000000..32b4a5f --- /dev/null +++ b/hacks/glx/glschool_alg.c @@ -0,0 +1,364 @@ +/* school_alg.c, Copyright (c) 2005-2006 David C. Lambert + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ +#include +#include +#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "yarandom.h" +#include "glschool_alg.h" + +/* for xscreensaver */ +#undef drand48 +#define drand48() frand(1.0) + +#define RAD2DEG (180.0/3.1415926535) + + +static inline double +norm(double *dv) +{ + return sqrt(dv[0]*dv[0] + dv[1]*dv[1] + dv[2]*dv[2]); +} + + +static inline void +addVector(double *v, double *d) +{ + v[0] += d[0]; + v[1] += d[1]; + v[2] += d[2]; +} + + +static inline void +clearVector(double *v) +{ + v[0] = v[1] = v[2] = 0.0; +} + + +static inline void +scaleVector(double *v, double s) +{ + v[0] *= s; + v[1] *= s; + v[2] *= s; +} + + +static inline void +addScaledVector(double *v, double *d, double s) +{ + v[0] += d[0]*s; + v[1] += d[1]*s; + v[2] += d[2]*s; +} + + +static inline void +getDifferenceVector(double *v0, double *v1, double *diff) +{ + diff[0] = v0[0] - v1[0]; + diff[1] = v0[1] - v1[1]; + diff[2] = v0[2] - v1[2]; +} + + +void +glschool_initFish(Fish *f, double *mins, double *ranges) +{ + int i; + + for(i = 0; i < 3; i++) { + FISH_IPOS(f, i) = mins[i] + drand48()*ranges[i]; + FISH_IACC(f, i) = 0.0; + FISH_IVEL(f, i) = drand48(); + FISH_IMAGIC(f, i) = 0.70 + 0.60*drand48(); + FISH_IOLDVEL(f, i) = 0.0; + } +} + + +void +glschool_initFishes(School *s) +{ + int i; + Fish *f = (Fish *)0; + int nFish = SCHOOL_NFISH(s); + BBox *bbox = &SCHOOL_BBOX(s); + double *mins = BBOX_MINS(bbox); + double *ranges = SCHOOL_BBRANGES(s); + Fish *theFishes = SCHOOL_FISHES(s); + + for(i = 0, f = theFishes; i < nFish; i++, f++) + glschool_initFish(f, mins, ranges); +} + + +static void +applyFishMovements(Fish *f, BBox *bbox, double minVel, double maxVel, double momentum) +{ + int i; + int oob = 0; + double vMag = 0.0; + + for(i = 0; i < 3; i++) { + double pos = FISH_IPOS(f, i); + oob = (pos > BBOX_IMAX(bbox, i) || pos < BBOX_IMIN(bbox, i)); + if (oob == 0) FISH_IVEL(f, i) += FISH_IACC(f, i) * FISH_IMAGIC(f, i); + vMag += (FISH_IVEL(f, i) * FISH_IVEL(f, i)); + } + vMag = sqrt(vMag); + + if (vMag > maxVel) + scaleVector(FISH_VEL(f), maxVel/vMag); + else if (vMag < minVel) + scaleVector(FISH_VEL(f), minVel/vMag); + + for(i = 0; i < 3; i++) { + FISH_IVEL(f, i) = momentum * FISH_IOLDVEL(f, i) + (1.0-momentum) * FISH_IVEL(f, i); + FISH_IPOS(f, i) += FISH_IVEL(f, i); + FISH_IOLDVEL(f, i) = FISH_IVEL(f, i); + + if (FISH_IPOS(f, i) < BBOX_IMIN(bbox, i)) + FISH_IPOS(f, i) = BBOX_IMAX(bbox, i); + else if (FISH_IPOS(f, i) > BBOX_IMAX(bbox, i)) + FISH_IPOS(f, i) = BBOX_IMIN(bbox, i); + } +} + + +void +glschool_applyMovements(School *s) +{ + int i = 0; + Fish *f = (Fish *)0; + int nFish = SCHOOL_NFISH(s); + double minVel = SCHOOL_MINVEL(s); + double maxVel = SCHOOL_MAXVEL(s); + double momentum = SCHOOL_MOMENTUM(s); + BBox *bbox = &SCHOOL_BBOX(s); + Fish *theFishes = SCHOOL_FISHES(s); + + for(i = 0, f = theFishes; i < nFish; i++, f++) + applyFishMovements(f, bbox, minVel, maxVel, momentum); +} + + +School * +glschool_initSchool(int nFish, double accLimit, double maxV, double minV, double distExp, double momentum, + double minRadius, double avoidFact, double matchFact, double centerFact, double targetFact, + double distComp) +{ + School *s = (School *)0; + + if ((s = (School *)malloc(sizeof(School))) == (School *)0) { + perror("initSchool School allocation failed: "); + return s; + } + + if ((SCHOOL_FISHES(s) = (Fish *)malloc(sizeof(Fish)*nFish)) == (Fish *)0) { + perror("initSchool Fish array allocation failed: "); + free(s); + return (School *)0; + } + + SCHOOL_NFISH(s) = nFish; + SCHOOL_ACCLIMIT(s) = accLimit; + SCHOOL_MAXVEL(s) = maxV; + SCHOOL_MINVEL(s) = minV; + SCHOOL_DISTEXP(s) = distExp; + SCHOOL_MOMENTUM(s) = momentum; + SCHOOL_MINRADIUS(s) = minRadius; + SCHOOL_MINRADIUSEXP(s) = pow(minRadius, distExp); + SCHOOL_MATCHFACT(s) = matchFact; + SCHOOL_AVOIDFACT(s) = avoidFact; + SCHOOL_CENTERFACT(s) = centerFact; + SCHOOL_TARGETFACT(s) = targetFact; + SCHOOL_DISTCOMP(s) = distComp; + + return s; +} + +void +glschool_freeSchool(School *s) +{ + free(SCHOOL_FISHES(s)); + free(s); +} + +void +glschool_setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zMin, double zMax) +{ + int i; + BBox *bbox = &SCHOOL_BBOX(s); + + BBOX_XMIN(bbox) = xMin; BBOX_XMAX(bbox) = xMax; + BBOX_YMIN(bbox) = yMin; BBOX_YMAX(bbox) = yMax; + BBOX_ZMIN(bbox) = zMin; BBOX_ZMAX(bbox) = zMax; + + for(i = 0; i < 3; i++) { + SCHOOL_IMID(s, i) = BBOX_IMID(bbox, i); + SCHOOL_IRANGE(s, i) = BBOX_IRANGE(bbox, i); + } +} + + +void +glschool_newGoal(School *s) +{ + SCHOOL_IGOAL(s,0) = 0.85*(drand48()-0.5)*SCHOOL_IRANGE(s,0) + SCHOOL_IMID(s,0); + SCHOOL_IGOAL(s,1) = 0.40*(drand48()-0.5)*SCHOOL_IRANGE(s,1) + SCHOOL_IMID(s,1); + SCHOOL_IGOAL(s,2) = 0.85*(drand48()-0.5)*SCHOOL_IRANGE(s,2) + SCHOOL_IMID(s,2); +} + + +double +glschool_computeNormalAndThetaToPlusZ(double *v, double *xV) +{ + double x1 = 0.0; + double y1 = 0.0; + double z1 = 1.0; + double x2 = v[0]; + double y2 = v[1]; + double z2 = v[2]; + double theta = 0.0; + double xVNorm = 0.0; + double sinTheta = 0.0; + double v2Norm = norm(v); + + if (v2Norm == 0.0) { + xV[1] = 1.0; + xV[0] = xV[2] = 0.0; + return theta; + } + xV[0] = (y1*z2 - z1*y2); + xV[1] = -(x1*z2 - z1*x2); + xV[2] = (x1*y2 - y1*x2); + xVNorm = norm(xV); + + sinTheta = xVNorm/v2Norm; + return (asin(sinTheta) * RAD2DEG); +} + + +int +glschool_computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, double *avgVel) +{ + int i; + double dist; + double adjDist; + double diffVect[3]; + int neighborCount = 0; + Fish *test = (Fish *)0; + int nFish = SCHOOL_NFISH(s); + double distExp = SCHOOL_DISTEXP(s); + double distComp = SCHOOL_DISTCOMP(s); + double minRadiusExp = SCHOOL_MINRADIUSEXP(s); + Fish *fishes = SCHOOL_FISHES(s); + + for(i = 0, test = fishes; i < nFish; i++, test++) { + if (test == ref) continue; + + getDifferenceVector(FISH_POS(ref), FISH_POS(test), diffVect); + + dist = norm(diffVect) - distComp; + if (dist < 0.0) dist = 0.1; + + adjDist = pow(dist, distExp); + if (adjDist > minRadiusExp) continue; + + neighborCount++; + + addVector(avgVel, FISH_VEL(test)); + addVector(centroid, FISH_POS(test)); + + addScaledVector(avoidance, diffVect, 1.0/adjDist); + } + if (neighborCount > 0) { + scaleVector(avgVel, 1.0/neighborCount); + scaleVector(centroid, 1.0/neighborCount); + } + return neighborCount; +} + + +void +glschool_computeAccelerations(School *s) +{ + int i; + int j; + int neighborCount; + double dist; + double adjDist; + double accMag; + double avgVel[3]; + double diffVect[3]; + double centroid[3]; + double avoidance[3]; + Fish *ref = (Fish *)0; + int nFish = SCHOOL_NFISH(s); + double *goal = SCHOOL_GOAL(s); + double distExp = SCHOOL_DISTEXP(s); + double distComp = SCHOOL_DISTCOMP(s); + double avoidFact = SCHOOL_AVOIDFACT(s); + double matchFact = SCHOOL_MATCHFACT(s); + double centerFact = SCHOOL_CENTERFACT(s); + double targetFact = SCHOOL_TARGETFACT(s); + double accLimit = SCHOOL_ACCLIMIT(s); + double minRadius = SCHOOL_MINRADIUS(s); + Fish *fishes = SCHOOL_FISHES(s); + + for(i = 0, ref = fishes; i < nFish; i++, ref++) { + clearVector(avgVel); + clearVector(centroid); + clearVector(avoidance); + clearVector(FISH_ACC(ref)); + neighborCount = glschool_computeGroupVectors(s, ref, avoidance, centroid, avgVel); + + /* avoidanceAccel[] = avoidance[] * AvoidFact */ + scaleVector(avoidance, avoidFact); + addVector(FISH_ACC(ref), avoidance); + + accMag = norm(FISH_ACC(ref)); + if (neighborCount > 0 && accMag < accLimit) { + for(j = 0; j < 3; j++) { + FISH_IAVGVEL(ref, j) = avgVel[j]; + FISH_IACC(ref, j) += ((avgVel[j] - FISH_IVEL(ref, j)) * matchFact); + } + + accMag = norm(FISH_ACC(ref)); + if (accMag < accLimit) { + for(j = 0; j < 3; j++) + FISH_IACC(ref, j) += ((centroid[j] - FISH_IPOS(ref, j)) * centerFact); + } + } + + accMag = norm(FISH_ACC(ref)); + if (accMag < accLimit) { + getDifferenceVector(goal, FISH_POS(ref), diffVect); + + dist = norm(diffVect) - distComp; + if (dist < 0.0) dist = 0.1; + + /*adjDist = pow(dist, distExp);*/ + if (dist > minRadius) { + adjDist = pow(dist, distExp); + for(j = 0; j < 3; j++) + FISH_IACC(ref, j) += (diffVect[j]*targetFact/adjDist); + } + } + } +} diff --git a/hacks/glx/glschool_alg.h b/hacks/glx/glschool_alg.h new file mode 100644 index 0000000..339e778 --- /dev/null +++ b/hacks/glx/glschool_alg.h @@ -0,0 +1,126 @@ +/* glschool_alg.h, Copyright (c) 2005-2006 David C. Lambert + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ +#ifndef __GLSCHOOL_ALG_H__ +#define __GLSCHOOL_ALG_H__ + +typedef struct { + double mins[3]; + double maxs[3]; +} BBox; + +#define BBOX_XMIN(b) ((b)->mins[0]) +#define BBOX_YMIN(b) ((b)->mins[1]) +#define BBOX_ZMIN(b) ((b)->mins[2]) +#define BBOX_MINS(b) ((b)->mins) +#define BBOX_IMIN(b, i) ((b)->mins[(i)]) + +#define BBOX_XMAX(b) ((b)->maxs[0]) +#define BBOX_YMAX(b) ((b)->maxs[1]) +#define BBOX_ZMAX(b) ((b)->maxs[2]) +#define BBOX_MAXS(b) ((b)->maxs) +#define BBOX_IMAX(b, i) ((b)->maxs[(i)]) + +#define BBOX_IMID(b, i) (((b)->maxs[(i)] + (b)->mins[(i)])/2.0) +#define BBOX_IRANGE(b, i) ((b)->maxs[(i)] - (b)->mins[(i)]) + +typedef struct { + double pos[3]; + double vel[3]; + double accel[3]; + double oldVel[3]; + double magic[3]; + double avgVel[3]; +} Fish; + +#define FISH_POS(f) ((f)->pos) +#define FISH_X(f) ((f)->pos[0]) +#define FISH_Y(f) ((f)->pos[1]) +#define FISH_Z(f) ((f)->pos[2]) + +#define FISH_VEL(f) ((f)->vel) +#define FISH_VX(f) ((f)->vel[0]) +#define FISH_VY(f) ((f)->vel[1]) +#define FISH_VZ(f) ((f)->vel[2]) + +#define FISH_ACC(f) ((f)->accel) +#define FISH_MAGIC(f) ((f)->magic) +#define FISH_OLDVEL(f) ((f)->oldVel) +#define FISH_AVGVEL(f) ((f)->avgVel) +#define FISH_IPOS(f, i) ((f)->pos[(i)]) +#define FISH_IVEL(f, i) ((f)->vel[(i)]) +#define FISH_IACC(f, i) ((f)->accel[(i)]) +#define FISH_IMAGIC(f, i) ((f)->magic[(i)]) +#define FISH_IOLDVEL(f, i) ((f)->oldVel[(i)]) +#define FISH_IAVGVEL(f, i) ((f)->avgVel[(i)]) + +typedef struct { + int nFish; + double maxVel; + double minVel; + double distExp; + double momentum; + double accLimit; + double minRadius; + double minRadiusExp; + double avoidFact; + double matchFact; + double centerFact; + double targetFact; + double distComp; + double goal[3]; + double boxMids[3]; + double boxRanges[3]; + BBox theBox; + Fish *theFish; +} School; + +#define SCHOOL_NFISH(s) ((s)->nFish) +#define SCHOOL_MAXVEL(s) ((s)->maxVel) +#define SCHOOL_MINVEL(s) ((s)->minVel) +#define SCHOOL_DISTEXP(s) ((s)->distExp) +#define SCHOOL_MOMENTUM(s) ((s)->momentum) +#define SCHOOL_ACCLIMIT(s) ((s)->accLimit) +#define SCHOOL_MINRADIUS(s) ((s)->minRadius) +#define SCHOOL_MINRADIUSEXP(s) ((s)->minRadiusExp) +#define SCHOOL_MATCHFACT(s) ((s)->matchFact) +#define SCHOOL_AVOIDFACT(s) ((s)->avoidFact) +#define SCHOOL_CENTERFACT(s) ((s)->centerFact) +#define SCHOOL_TARGETFACT(s) ((s)->targetFact) +#define SCHOOL_DISTCOMP(s) ((s)->distComp) +#define SCHOOL_GOAL(s) ((s)->goal) +#define SCHOOL_IGOAL(s,i) ((s)->goal[(i)]) +#define SCHOOL_BBMINS(s) ((s)->bbox.mins) +#define SCHOOL_BBMAXS(s) ((s)->bbox.maxs) +#define SCHOOL_BBMIDS(s) ((s)->boxMids) +#define SCHOOL_IMID(s,i) ((s)->boxMids[(i)]) +#define SCHOOL_BBRANGES(s) ((s)->boxRanges) +#define SCHOOL_IRANGE(s,i) ((s)->boxRanges[(i)]) +#define SCHOOL_BBOX(s) ((s)->theBox) +#define SCHOOL_FISHES(s) ((s)->theFish) +#define SCHOOL_IFISH(s,i) ((s)->theFish[i]) + +extern void glschool_initFishes(School *); +extern void glschool_initFish(Fish *, double *, double *); + +extern void glschool_applyMovements(School *); +/* extern void applyFishMovements(Fish *, BBox *, double, double, double); */ + +extern void glschool_freeSchool(School *); +extern School *glschool_initSchool(int, double, double, double, double, double, double, double, double, double, double, double); + +extern void glschool_newGoal(School *); +extern void glschool_setBBox(School *, double, double, double, double, double, double); + +extern void glschool_computeAccelerations(School *); +extern double glschool_computeNormalAndThetaToPlusZ(double *, double *); +int glschool_computeGroupVectors(School *, Fish *, double *, double *, double *); + +#endif /* __GLSCHOOL_ALG_H__ */ diff --git a/hacks/glx/glschool_gl.c b/hacks/glx/glschool_gl.c new file mode 100644 index 0000000..660580b --- /dev/null +++ b/hacks/glx/glschool_gl.c @@ -0,0 +1,274 @@ +/* glschool_gl.c, Copyright (c) 2005-2012 David C. Lambert + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#include "sphere.h" +#include "glschool_gl.h" +#include "sphere.h" +#include "tube.h" + +void +glschool_drawGoal(double *goal, GLuint goalList) +{ + glColor3f(1.0, 0.0, 0.0); + glPushMatrix(); + { + glTranslatef(goal[0], goal[1], goal[2]); + glColor3f(1.0, 0.0, 0.0); + glCallList(goalList); + } + glPopMatrix(); +} + +int +glschool_drawBoundingBox(BBox *bbox, Bool wire) +{ + int polys = 0; + double xMin = BBOX_XMIN(bbox); + double yMin = BBOX_YMIN(bbox); + double zMin = BBOX_ZMIN(bbox); + + double xMax = BBOX_XMAX(bbox); + double yMax = BBOX_YMAX(bbox); + double zMax = BBOX_ZMAX(bbox); + + glFrontFace(GL_CCW); + if (wire) glLineWidth(5.0); + + /* back */ + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glColor3f(0.0, 0.0, .15); + glVertex3f(xMin, yMin, zMin); + glVertex3f(xMax, yMin, zMin); + glVertex3f(xMax, yMax, zMin); + glVertex3f(xMin, yMax, zMin); + polys++; + glEnd(); + + /* left */ + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glColor3f(0.0, 0.0, .2); + glVertex3f(xMin, yMin, zMax); + glVertex3f(xMin, yMin, zMin); + glVertex3f(xMin, yMax, zMin); + glVertex3f(xMin, yMax, zMax); + polys++; + glEnd(); + + /* right */ + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glColor3f(0.0, 0.0, .2); + glVertex3f(xMax, yMin, zMin); + glVertex3f(xMax, yMin, zMax); + glVertex3f(xMax, yMax, zMax); + glVertex3f(xMax, yMax, zMin); + polys++; + glEnd(); + + /* top */ + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glColor3f(0.0, 0.0, .1); + glVertex3f(xMax, yMax, zMax); + glVertex3f(xMin, yMax, zMax); + glVertex3f(xMin, yMax, zMin); + glVertex3f(xMax, yMax, zMin); + polys++; + glEnd(); + + /* bottom */ + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glColor3f(0.0, 0.0, .3); + glVertex3f(xMin, yMin, zMax); + glVertex3f(xMax, yMin, zMax); + glVertex3f(xMax, yMin, zMin); + glVertex3f(xMin, yMin, zMin); + polys++; + glEnd(); + + if (wire) glLineWidth(1.0); + + return polys; +} + +int +glschool_createBBoxList(BBox *bbox, GLuint *bboxList, int wire) +{ + int polys = 0; + *bboxList = glGenLists(1); + glNewList(*bboxList, GL_COMPILE); + polys = glschool_drawBoundingBox(bbox, wire); + glEndList(); + return polys; +} + +void +glschool_createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList, int *fish_polys, int *box_polys, int wire) +{ + + int faces = 16; + + *box_polys = 0; + *fish_polys = 0; + + *box_polys += glschool_createBBoxList(bbox, bboxList, wire); + + *box_polys = 0; + *fish_polys = 0; + + *goalList = glGenLists(1); + glNewList(*goalList, GL_COMPILE); + glScalef (5, 5, 5); + *box_polys += unit_sphere (10, 10, wire); + glEndList(); + + *fishList = glGenLists(1); + glNewList(*fishList, GL_COMPILE); + *fish_polys += cone (0, 0, 0, + 0, 0, 10, + 2, 0, + faces, True, (faces <= 3), /* cap */ + wire); + glTranslatef (0, 0, -0.3); + glScalef (2, 2, 2); + glRotatef (90, 1, 0, 0); + if (faces > 3) + *fish_polys += unit_sphere (faces, faces, wire); + glEndList(); +} + + +void +glschool_initLights(void) +{ + GLfloat amb[4] = {0.1, 0.1, 0.1, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat pos[4] = {0.0, 50.0, -50.0, 1.0}; + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glEnable(GL_LIGHT0); + glEnable(GL_LIGHTING); +} + +void +glschool_initFog(void) +{ + GLfloat fog[4] = {0.0, 0.0, 0.15, 1.0}; + + glEnable(GL_FOG); + glFogi(GL_FOG_MODE, GL_EXP2); + glFogfv(GL_FOG_COLOR, fog); + glFogf(GL_FOG_DENSITY, .0025); + glFogf(GL_FOG_START, -100); +} + +void +glschool_initGLEnv(Bool doFog) +{ + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + + glClearDepth(1.0); + glDepthFunc(GL_LESS); + + glEnable(GL_COLOR_MATERIAL); + glMateriali(GL_FRONT, GL_SHININESS, 128); + glMaterialfv(GL_FRONT, GL_SPECULAR, spc); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, spc); + + glEnable(GL_NORMALIZE); + glEnable(GL_DEPTH_TEST); + glShadeModel(GL_SMOOTH); + glEnable(GL_CULL_FACE); + + glschool_initLights(); + if (doFog) glschool_initFog(); +} + +void +glschool_reshape(int width, int height) +{ + GLfloat h = (GLfloat) width / (GLfloat) height; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(60.0, h, 0.1, 451.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +} + +void +glschool_getColorVect(XColor *colors, int index, double *colorVect) +{ + colorVect[0] = colors[index].red / 65535.0; + colorVect[1] = colors[index].green / 65535.0; + colorVect[2] = colors[index].blue / 65535.0; +} + +void +glschool_drawSchool(XColor *colors, School *s, + GLuint bboxList, GLuint goalList, GLuint fishList, + int rotCounter, Bool drawGoal_p, Bool drawBBox_p, + int fish_polys, int box_polys, unsigned long *polys) +{ + double xVect[3]; + double colorVect[3]; + int i = 0; + double rotTheta = 0.0; + double colTheta = 0.0; + Fish *f = (Fish *)0; + int nFish = SCHOOL_NFISH(s); + Fish *theFishes = SCHOOL_FISHES(s); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + if (drawBBox_p) { + glDisable(GL_LIGHTING); + glCallList(bboxList); + glEnable(GL_LIGHTING); + *polys += box_polys; + } + + if (drawGoal_p) glschool_drawGoal(SCHOOL_GOAL(s), goalList); + + for(i = 0, f = theFishes; i < nFish; i++, f++) { + colTheta = glschool_computeNormalAndThetaToPlusZ(FISH_AVGVEL(f), xVect); + rotTheta = glschool_computeNormalAndThetaToPlusZ(FISH_VEL(f), xVect); + + if (FISH_IAVGVEL(f,2) < 0.0) colTheta = 180.0 - colTheta; + if (FISH_VZ(f) < 0.0) rotTheta = 180.0 - rotTheta; + + glschool_getColorVect(colors, (int)(colTheta+240)%360, colorVect); + glColor3f(colorVect[0], colorVect[1], colorVect[2]); + + glPushMatrix(); + { + glTranslatef(FISH_X(f), FISH_Y(f), FISH_Z(f)); + glRotatef(180.0+rotTheta, xVect[0], xVect[1], xVect[2]); + glCallList(fishList); + *polys += fish_polys; + } + glPopMatrix(); + } + + glFinish(); +} diff --git a/hacks/glx/glschool_gl.h b/hacks/glx/glschool_gl.h new file mode 100644 index 0000000..c5e2d38 --- /dev/null +++ b/hacks/glx/glschool_gl.h @@ -0,0 +1,51 @@ +/* glschool_gl.h, Copyright (c) 2005-2006 David C. Lambert + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ +#ifndef __GLSCHOOL_GL_H__ +#define __GLSCHOOL_GL_H__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +# ifndef HAVE_JWZGLES +# include +# endif +#else +# include +# include +# include +#endif + +#ifdef HAVE_ANDROID +#include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "glschool_alg.h" + +extern void glschool_initFog(void); +extern void glschool_initGLEnv(Bool); +extern void glschool_initLights(void); +extern void glschool_reshape(int, int); +extern void glschool_drawGoal(double *, GLuint); +extern void glschool_getColorVect(XColor *, int, double *); +extern int glschool_drawBoundingBox(BBox *, Bool); +extern int glschool_createBBoxList(BBox *, GLuint *, int); +extern void glschool_createDrawLists(BBox *, GLuint *, GLuint *, GLuint *, int *, int *, Bool); +extern void glschool_drawSchool(XColor *, School *, GLuint, GLuint, GLuint, int, Bool, Bool, + int, int, unsigned long *); + +#endif /* __GLSCHOOL_GL_H__ */ diff --git a/hacks/glx/glslideshow.c b/hacks/glx/glslideshow.c new file mode 100644 index 0000000..64b1494 --- /dev/null +++ b/hacks/glx/glslideshow.c @@ -0,0 +1,1222 @@ +/* glslideshow, Copyright (c) 2003-2014 Jamie Zawinski + * Loads a sequence of images and smoothly pans around them; crossfades + * when loading new images. + * + * Originally written by Mike Oliphant (c) 2002, 2003. + * Rewritten by jwz, 21-Jun-2003. + * Rewritten by jwz again, 6-Feb-2005. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + ***************************************************************************** + * + * TODO: + * + * - When a new image is loaded, there is a glitch: animation pauses during + * the period when we're loading the image-to-fade-in. On fast (2GHz) + * machines, this stutter is short but noticable (usually around 1/10th + * second.) On slower machines, it can be much more pronounced. + * This turns out to be hard to fix... + * + * Image loading happens in three stages: + * + * 1: Fork a process and run xscreensaver-getimage in the background. + * This writes image data to a server-side X pixmap. + * + * 2: When that completes, a callback informs us that the pixmap is ready. + * We must then download the pixmap data from the server with XGetImage + * (or XShmGetImage.) + * + * 3: Once we have the bits, we must convert them from server-native bitmap + * layout to 32 bit RGBA in client-endianness, to make them usable as + * OpenGL textures. + * + * 4: We must actually construct a texture. + * + * So, the speed of step 1 doesn't really matter, since that happens in + * the background. But steps 2, 3, and 4 happen in *this* process, and + * cause the visible glitch. + * + * Step 2 can't be moved to another process without opening a second + * connection to the X server, which is pretty heavy-weight. (That would + * be possible, though; the other process could open an X connection, + * retrieve the pixmap, and feed it back to us through a pipe or + * something.) + * + * Step 3 might be able to be optimized by coding tuned versions of + * grab-ximage.c:copy_ximage() for the most common depths and bit orders. + * (Or by moving it into the other process along with step 2.) + * + * Step 4 is the hard one, though. It might be possible to speed up this + * step if there is some way to allow two GL processes share texture + * data. Unless, of course, all the time being consumed by step 4 is + * because the graphics pipeline is flooded, in which case, that other + * process would starve the screen anyway. + * + * Is it possible to use a single GLX context in a multithreaded way? + * Or use a second GLX context, but allow the two contexts to share data? + * I can't find any documentation about this. + * + * How does Apple do this with their MacOSX slideshow screen saver? + * Perhaps it's easier for them because their OpenGL libraries have + * thread support at a lower level? + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*wireframe: False \n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" \ + "*useSHM: True \n" \ + "*titleFont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \ + "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \ + "*grabDesktopImages: False \n" \ + "*chooseRandomImages: True \n" + +# define free_slideshow 0 +# define release_slideshow 0 +# include "xlockmore.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#ifdef USE_GL + + +# define DEF_FADE_DURATION "2" +# define DEF_PAN_DURATION "6" +# define DEF_IMAGE_DURATION "30" +# define DEF_ZOOM "75" +# define DEF_FPS_CUTOFF "5" +# define DEF_TITLES "False" +# define DEF_LETTERBOX "True" +# define DEF_DEBUG "False" +# define DEF_MIPMAP "True" + +#include "grab-ximage.h" +#include "texfont.h" + +typedef struct { + double x, y, w, h; +} rect; + +typedef struct { + ModeInfo *mi; + int id; /* unique number for debugging */ + char *title; /* the filename of this image */ + int w, h; /* size in pixels of the image */ + int tw, th; /* size in pixels of the texture */ + XRectangle geom; /* where in the image the bits are */ + Bool loaded_p; /* whether the image has finished loading */ + Bool used_p; /* whether the image has yet appeared + on screen */ + GLuint texid; /* which texture contains the image */ + int refcount; /* how many sprites refer to this image */ +} image; + + +typedef enum { NEW, IN, FULL, OUT, DEAD } sprite_state; + +typedef struct { + int id; /* unique number for debugging */ + image *img; /* which image this animation displays */ + GLfloat opacity; /* how to render it */ + double start_time; /* when this animation began */ + rect from, to, current; /* the journey this image is taking */ + sprite_state state; /* the state we're in right now */ + sprite_state prev_state; /* the state we were in previously */ + double state_time; /* time of last state change */ + int frame_count; /* frames since last state change */ +} sprite; + + +typedef struct { + GLXContext *glx_context; + int nimages; /* how many images are loaded or loading now */ + image *images[10]; /* pointers to the images */ + + int nsprites; /* how many sprites are animating right now */ + sprite *sprites[10]; /* pointers to the live sprites */ + + double now; /* current time in seconds */ + double dawn_of_time; /* when the program launched */ + double image_load_time; /* time when we last loaded a new image */ + double prev_frame_time; /* time when we last drew a frame */ + + Bool awaiting_first_image_p; /* Early in startup: nothing to display yet */ + Bool redisplay_needed_p; /* Sometimes we can get away with not + re-painting. Tick this if a redisplay + is required. */ + Bool change_now_p; /* Set when the user clicks to ask for a new + image right now. */ + + GLfloat fps; /* approximate frame rate we're achieving */ + GLfloat theoretical_fps; /* maximum frame rate that might be possible */ + Bool checked_fps_p; /* Whether we have checked for a low + frame rate. */ + + texture_font_data *font_data; /* for printing image file names */ + + int sprite_id, image_id; /* debugging id counters */ + + double time_elapsed; + int frames_elapsed; + +} slideshow_state; + +static slideshow_state *sss = NULL; + + +/* Command-line arguments + */ +static int fade_seconds; /* Duration in seconds of fade transitions. + If 0, jump-cut instead of fading. */ +static int pan_seconds; /* Duration of each pan through an image. */ +static int image_seconds; /* How many seconds until loading a new image. */ +static int zoom; /* How far in to zoom when panning, in percent of + image size: that is, 75 means "when zoomed all + the way in, 75% of the image will be visible." + */ +static int fps_cutoff; /* If the frame-rate falls below this, turn off + zooming.*/ +static Bool letterbox_p; /* When a loaded image is not the same aspect + ratio as the window, whether to display black + bars. + */ +static Bool mipmap_p; /* Use mipmaps instead of single textures. */ +static Bool do_titles; /* Display image titles. */ +static Bool debug_p; /* Be loud and do weird things. */ + + +static XrmOptionDescRec opts[] = { + {"-fade", ".fadeDuration", XrmoptionSepArg, 0 }, + {"-pan", ".panDuration", XrmoptionSepArg, 0 }, + {"-duration", ".imageDuration", XrmoptionSepArg, 0 }, + {"-zoom", ".zoom", XrmoptionSepArg, 0 }, + {"-cutoff", ".FPScutoff", XrmoptionSepArg, 0 }, + {"-titles", ".titles", XrmoptionNoArg, "True" }, + {"-letterbox", ".letterbox", XrmoptionNoArg, "True" }, + {"-no-letterbox", ".letterbox", XrmoptionNoArg, "False" }, + {"-clip", ".letterbox", XrmoptionNoArg, "False" }, + {"-mipmaps", ".mipmap", XrmoptionNoArg, "True" }, + {"-no-mipmaps", ".mipmap", XrmoptionNoArg, "False" }, + {"-debug", ".debug", XrmoptionNoArg, "True" }, +}; + +static argtype vars[] = { + { &fade_seconds, "fadeDuration", "FadeDuration", DEF_FADE_DURATION, t_Int}, + { &pan_seconds, "panDuration", "PanDuration", DEF_PAN_DURATION, t_Int}, + { &image_seconds, "imageDuration","ImageDuration",DEF_IMAGE_DURATION, t_Int}, + { &zoom, "zoom", "Zoom", DEF_ZOOM, t_Int}, + { &mipmap_p, "mipmap", "Mipmap", DEF_MIPMAP, t_Bool}, + { &letterbox_p, "letterbox", "Letterbox", DEF_LETTERBOX, t_Bool}, + { &fps_cutoff, "FPScutoff", "FPSCutoff", DEF_FPS_CUTOFF, t_Int}, + { &debug_p, "debug", "Debug", DEF_DEBUG, t_Bool}, + { &do_titles, "titles", "Titles", DEF_TITLES, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt slideshow_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static const char * +blurb (void) +{ +# ifdef HAVE_JWXYZ + return "GLSlideshow"; +# else + static char buf[255]; + time_t now = time ((time_t *) 0); + char *ct = (char *) ctime (&now); + int n = strlen(progname); + if (n > 100) n = 99; + strncpy(buf, progname, n); + buf[n++] = ':'; + buf[n++] = ' '; + strncpy(buf+n, ct+11, 8); + strcpy(buf+n+9, ": "); + return buf; +# endif +} + + +/* Returns the current time in seconds as a double. + */ +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + + +static void image_loaded_cb (const char *filename, XRectangle *geom, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure); + + +/* Allocate an image structure and start a file loading in the background. + */ +static image * +alloc_image (ModeInfo *mi) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + image *img = (image *) calloc (1, sizeof (*img)); + + img->id = ++ss->image_id; + img->loaded_p = False; + img->used_p = False; + img->mi = mi; + + glGenTextures (1, &img->texid); + if (img->texid <= 0) abort(); + + ss->image_load_time = ss->now; + + if (wire) + image_loaded_cb (0, 0, 0, 0, 0, 0, img); + else + load_texture_async (mi->xgwa.screen, mi->window, *ss->glx_context, + 0, 0, mipmap_p, img->texid, image_loaded_cb, img); + + ss->images[ss->nimages++] = img; + if (ss->nimages >= countof(ss->images)) abort(); + + return img; +} + + +/* Callback that tells us that the texture has been loaded. + */ +static void +image_loaded_cb (const char *filename, XRectangle *geom, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + image *img = (image *) closure; + ModeInfo *mi = img->mi; + /* slideshow_state *ss = &sss[MI_SCREEN(mi)]; */ + + int wire = MI_IS_WIREFRAME(mi); + + if (wire) + { + img->w = MI_WIDTH (mi) * (0.5 + frand (1.0)); + img->h = MI_HEIGHT (mi); + img->geom.width = img->w; + img->geom.height = img->h; + goto DONE; + } + + if (image_width == 0 || image_height == 0) + exit (1); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + img->w = image_width; + img->h = image_height; + img->tw = texture_width; + img->th = texture_height; + img->geom = *geom; + img->title = (filename ? strdup (filename) : 0); + + /* If the image's width doesn't come back as the width of the screen, + then the image must have been scaled down (due to insufficient + texture memory.) Scale up the coordinates to stretch the image + to fill the window. + */ + if (img->w != MI_WIDTH(mi)) + { + double scale = (double) MI_WIDTH(mi) / img->w; + img->w *= scale; + img->h *= scale; + img->tw *= scale; + img->th *= scale; + img->geom.x *= scale; + img->geom.y *= scale; + img->geom.width *= scale; + img->geom.height *= scale; + } + + /* xscreensaver-getimage returns paths relative to the image directory + now, so leave the sub-directory part in. Unless it's an absolute path. + */ + if (img->title && img->title[0] == '/') + { + /* strip filename to part between last "/" and last ".". */ + char *s = strrchr (img->title, '/'); + if (s) strcpy (img->title, s+1); + s = strrchr (img->title, '.'); + if (s) *s = 0; + } + + if (debug_p) + fprintf (stderr, "%s: loaded img %2d: \"%s\"\n", + blurb(), img->id, (img->title ? img->title : "(null)")); + DONE: + + img->loaded_p = True; +} + + + +/* Free the image and texture, after nobody is referencing it. + */ +static void +destroy_image (ModeInfo *mi, image *img) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + Bool freed_p = False; + int i; + + if (!img) abort(); + if (!img->loaded_p) abort(); + if (!img->used_p) abort(); + if (img->texid <= 0) abort(); + if (img->refcount != 0) abort(); + + for (i = 0; i < ss->nimages; i++) /* unlink it from the list */ + if (ss->images[i] == img) + { + int j; + for (j = i; j < ss->nimages-1; j++) /* pull remainder forward */ + ss->images[j] = ss->images[j+1]; + ss->images[j] = 0; + ss->nimages--; + freed_p = True; + break; + } + + if (!freed_p) abort(); + + if (debug_p) + fprintf (stderr, "%s: unloaded img %2d: \"%s\"\n", + blurb(), img->id, (img->title ? img->title : "(null)")); + + if (img->title) free (img->title); + glDeleteTextures (1, &img->texid); + free (img); +} + + +/* Return an image to use for a sprite. + If it's time for a new one, get a new one. + Otherwise, use an old one. + Might return 0 if the machine is really slow. + */ +static image * +get_image (ModeInfo *mi) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + image *img = 0; + double now = ss->now; + Bool want_new_p = (ss->change_now_p || + ss->image_load_time + image_seconds <= now); + image *new_img = 0; + image *old_img = 0; + image *loading_img = 0; + int i; + + for (i = 0; i < ss->nimages; i++) + { + image *img2 = ss->images[i]; + if (!img2) abort(); + if (!img2->loaded_p) + loading_img = img2; + else if (!img2->used_p) + new_img = img2; + else + old_img = img2; + } + + if (want_new_p && new_img) + img = new_img, new_img = 0, ss->change_now_p = False; + else if (old_img) + img = old_img, old_img = 0; + else if (new_img) + img = new_img, new_img = 0, ss->change_now_p = False; + + /* Make sure that there is always one unused image in the pipe. + */ + if (!new_img && !loading_img) + alloc_image (mi); + + return img; +} + + +/* Pick random starting and ending positions for the given sprite. + */ +static void +randomize_sprite (ModeInfo *mi, sprite *sp) +{ + int vp_w = MI_WIDTH(mi); + int vp_h = MI_HEIGHT(mi); + int img_w = sp->img->geom.width; + int img_h = sp->img->geom.height; + int min_w, max_w; + double ratio = (double) img_h / img_w; + + if (letterbox_p) + { + min_w = img_w; + } + else + { + if (img_w < vp_w) + min_w = vp_w; + else + min_w = img_w * (float) vp_h / img_h; + } + + max_w = min_w * 100 / zoom; + + sp->from.w = min_w + frand ((max_w - min_w) * 0.4); + sp->to.w = max_w - frand ((max_w - min_w) * 0.4); + sp->from.h = sp->from.w * ratio; + sp->to.h = sp->to.w * ratio; + + if (zoom == 100) /* only one box, and it is centered */ + { + sp->from.x = (sp->from.w > vp_w + ? -(sp->from.w - vp_w) / 2 + : (vp_w - sp->from.w) / 2); + sp->from.y = (sp->from.h > vp_h + ? -(sp->from.h - vp_h) / 2 + : (vp_h - sp->from.h) / 2); + sp->to = sp->from; + } + else /* position both boxes randomly */ + { + sp->from.x = (sp->from.w > vp_w + ? -frand (sp->from.w - vp_w) + : frand (vp_w - sp->from.w)); + sp->from.y = (sp->from.h > vp_h + ? -frand (sp->from.h - vp_h) + : frand (vp_h - sp->from.h)); + sp->to.x = (sp->to.w > vp_w + ? -frand (sp->to.w - vp_w) + : frand (vp_w - sp->to.w)); + sp->to.y = (sp->to.h > vp_h + ? -frand (sp->to.h - vp_h) + : frand (vp_h - sp->to.h)); + } + + if (random() & 1) + { + rect swap = sp->to; + sp->to = sp->from; + sp->from = swap; + } + + /* Make sure the aspect ratios are within 0.001 of each other. + */ + { + int r1 = 0.5 + (sp->from.w * 1000 / sp->from.h); + int r2 = 0.5 + (sp->to.w * 1000 / sp->to.h); + if (r1 < r2-1 || r1 > r2+1) + { + fprintf (stderr, + "%s: botched aspect: %f x %f (%d) vs %f x %f (%d): %s\n", + progname, + sp->from.w, sp->from.h, r1, + sp->to.w, sp->to.h, r2, + (sp->img->title ? sp->img->title : "[null]")); + abort(); + } + } + + sp->from.x /= vp_w; + sp->from.y /= vp_h; + sp->from.w /= vp_w; + sp->from.h /= vp_h; + sp->to.x /= vp_w; + sp->to.y /= vp_h; + sp->to.w /= vp_w; + sp->to.h /= vp_h; +} + + +/* Allocate a new sprite and start its animation going. + */ +static sprite * +new_sprite (ModeInfo *mi) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + image *img = get_image (mi); + sprite *sp; + + if (!img) + { + /* Oops, no images yet! The machine is probably hurting bad. + Let's give it some time before thrashing again. */ + usleep (250000); + return 0; + } + + sp = (sprite *) calloc (1, sizeof (*sp)); + sp->id = ++ss->sprite_id; + sp->start_time = ss->now; + sp->state_time = sp->start_time; + sp->state = sp->prev_state = NEW; + sp->img = img; + + sp->img->refcount++; + sp->img->used_p = True; + + ss->sprites[ss->nsprites++] = sp; + if (ss->nsprites >= countof(ss->sprites)) abort(); + + randomize_sprite (mi, sp); + + return sp; +} + + +/* Free the given sprite, and decrement the reference count on its image. + */ +static void +destroy_sprite (ModeInfo *mi, sprite *sp) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + Bool freed_p = False; + image *img; + int i; + + if (!sp) abort(); + if (sp->state != DEAD) abort(); + img = sp->img; + if (!img) abort(); + if (!img->loaded_p) abort(); + if (!img->used_p) abort(); + if (img->refcount <= 0) abort(); + + for (i = 0; i < ss->nsprites; i++) /* unlink it from the list */ + if (ss->sprites[i] == sp) + { + int j; + for (j = i; j < ss->nsprites-1; j++) /* pull remainder forward */ + ss->sprites[j] = ss->sprites[j+1]; + ss->sprites[j] = 0; + ss->nsprites--; + freed_p = True; + break; + } + + if (!freed_p) abort(); + free (sp); + sp = 0; + + img->refcount--; + if (img->refcount < 0) abort(); + if (img->refcount == 0) + destroy_image (mi, img); +} + + +/* Updates the sprite for the current frame of the animation based on + its creation time compared to the current wall clock. + */ +static void +tick_sprite (ModeInfo *mi, sprite *sp) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + image *img = sp->img; + double now = ss->now; + double secs; + double ratio; + rect prev_rect = sp->current; + GLfloat prev_opacity = sp->opacity; + + if (! sp->img) abort(); + if (! img->loaded_p) abort(); + + secs = now - sp->start_time; + ratio = secs / (pan_seconds + fade_seconds); + if (ratio > 1) ratio = 1; + + sp->current.x = sp->from.x + ratio * (sp->to.x - sp->from.x); + sp->current.y = sp->from.y + ratio * (sp->to.y - sp->from.y); + sp->current.w = sp->from.w + ratio * (sp->to.w - sp->from.w); + sp->current.h = sp->from.h + ratio * (sp->to.h - sp->from.h); + + sp->prev_state = sp->state; + + if (secs < fade_seconds) + { + sp->state = IN; + sp->opacity = secs / (GLfloat) fade_seconds; + } + else if (secs < pan_seconds) + { + sp->state = FULL; + sp->opacity = 1; + } + else if (secs < pan_seconds + fade_seconds) + { + sp->state = OUT; + sp->opacity = 1 - ((secs - pan_seconds) / (GLfloat) fade_seconds); + } + else + { + sp->state = DEAD; + sp->opacity = 0; + } + + if (sp->state != sp->prev_state && + (sp->prev_state == IN || + sp->prev_state == FULL)) + { + double secs = now - sp->state_time; + + if (debug_p) + fprintf (stderr, + "%s: %s %3d frames %2.0f sec %5.1f fps (%.1f fps?)\n", + blurb(), + (sp->prev_state == IN ? "fade" : "pan "), + sp->frame_count, + secs, + sp->frame_count / secs, + ss->theoretical_fps); + + sp->state_time = now; + sp->frame_count = 0; + } + + sp->frame_count++; + + if (sp->state != DEAD && + (prev_rect.x != sp->current.x || + prev_rect.y != sp->current.y || + prev_rect.w != sp->current.w || + prev_rect.h != sp->current.h || + prev_opacity != sp->opacity)) + ss->redisplay_needed_p = True; +} + + +/* Draw the given sprite at the phase of its animation dictated by + its creation time compared to the current wall clock. + */ +static void +draw_sprite (ModeInfo *mi, sprite *sp) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + image *img = sp->img; + + if (! sp->img) abort(); + if (! img->loaded_p) abort(); + + glPushMatrix(); + { + glTranslatef (sp->current.x, sp->current.y, 0); + glScalef (sp->current.w, sp->current.h, 1); + + if (wire) /* Draw a grid inside the box */ + { + GLfloat dy = 0.1; + GLfloat dx = dy * img->w / img->h; + GLfloat x, y; + + if (sp->id & 1) + glColor4f (sp->opacity, 0, 0, 1); + else + glColor4f (0, 0, sp->opacity, 1); + + glBegin(GL_LINES); + glVertex3f (0, 0, 0); glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); glVertex3f (0, 1, 0); + + for (y = 0; y < 1+dy; y += dy) + { + GLfloat yy = (y > 1 ? 1 : y); + for (x = 0.5; x < 1+dx; x += dx) + { + GLfloat xx = (x > 1 ? 1 : x); + glVertex3f (0, xx, 0); glVertex3f (1, xx, 0); + glVertex3f (yy, 0, 0); glVertex3f (yy, 1, 0); + } + for (x = 0.5; x > -dx; x -= dx) + { + GLfloat xx = (x < 0 ? 0 : x); + glVertex3f (0, xx, 0); glVertex3f (1, xx, 0); + glVertex3f (yy, 0, 0); glVertex3f (yy, 1, 0); + } + } + glEnd(); + } + else /* Draw the texture quad */ + { + GLfloat texw = img->geom.width / (GLfloat) img->tw; + GLfloat texh = img->geom.height / (GLfloat) img->th; + GLfloat texx1 = img->geom.x / (GLfloat) img->tw; + GLfloat texy1 = img->geom.y / (GLfloat) img->th; + GLfloat texx2 = texx1 + texw; + GLfloat texy2 = texy1 + texh; + + glBindTexture (GL_TEXTURE_2D, img->texid); + glColor4f (1, 1, 1, sp->opacity); + glNormal3f (0, 0, 1); + glBegin (GL_QUADS); + glTexCoord2f (texx1, texy2); glVertex3f (0, 0, 0); + glTexCoord2f (texx2, texy2); glVertex3f (1, 0, 0); + glTexCoord2f (texx2, texy1); glVertex3f (1, 1, 0); + glTexCoord2f (texx1, texy1); glVertex3f (0, 1, 0); + glEnd(); + + if (debug_p) /* Draw a border around the image */ + { + if (!wire) glDisable (GL_TEXTURE_2D); + + if (sp->id & 1) + glColor4f (sp->opacity, 0, 0, 1); + else + glColor4f (0, 0, sp->opacity, 1); + + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (0, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); + glEnd(); + + if (!wire) glEnable (GL_TEXTURE_2D); + } + } + + + if (do_titles && + img->title && *img->title && + (sp->state == IN || sp->state == FULL)) + { + glColor4f (1, 1, 1, sp->opacity); + print_texture_label (mi->dpy, ss->font_data, + mi->xgwa.width, mi->xgwa.height, + 1, img->title); + } + } + glPopMatrix(); + + if (debug_p) + { + if (!wire) glDisable (GL_TEXTURE_2D); + + if (sp->id & 1) + glColor4f (1, 0, 0, 1); + else + glColor4f (0, 0, 1, 1); + + /* Draw the "from" and "to" boxes + */ + glBegin (GL_LINE_LOOP); + glVertex3f (sp->from.x, sp->from.y, 0); + glVertex3f (sp->from.x + sp->from.w, sp->from.y, 0); + glVertex3f (sp->from.x + sp->from.w, sp->from.y + sp->from.h, 0); + glVertex3f (sp->from.x, sp->from.y + sp->from.h, 0); + glEnd(); + + glBegin (GL_LINE_LOOP); + glVertex3f (sp->to.x, sp->to.y, 0); + glVertex3f (sp->to.x + sp->to.w, sp->to.y, 0); + glVertex3f (sp->to.x + sp->to.w, sp->to.y + sp->to.h, 0); + glVertex3f (sp->to.x, sp->to.y + sp->to.h, 0); + glEnd(); + + if (!wire) glEnable (GL_TEXTURE_2D); + } +} + + +static void +tick_sprites (ModeInfo *mi) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + int i; + for (i = 0; i < ss->nsprites; i++) + tick_sprite (mi, ss->sprites[i]); +} + + +static void +draw_sprites (ModeInfo *mi) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + int i; + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + +/* + { + GLfloat rot = current_device_rotation(); + glTranslatef (0.5, 0.5, 0); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (s, 1/s, 1); + } + glTranslatef (-0.5, -0.5, 0); + } +*/ + + for (i = 0; i < ss->nsprites; i++) + draw_sprite (mi, ss->sprites[i]); + glPopMatrix(); + + if (debug_p) /* draw a white box (the "screen") */ + { + int wire = MI_IS_WIREFRAME(mi); + + if (!wire) glDisable (GL_TEXTURE_2D); + + glColor4f (1, 1, 1, 1); + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (0, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); + glEnd(); + + if (!wire) glEnable (GL_TEXTURE_2D); + } +} + + +ENTRYPOINT void +reshape_slideshow (ModeInfo *mi, int width, int height) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + GLfloat s; + glViewport (0, 0, width, height); + glMatrixMode (GL_PROJECTION); + glLoadIdentity(); + glRotatef (current_device_rotation(), 0, 0, 1); + glMatrixMode (GL_MODELVIEW); + glLoadIdentity(); + + s = 2; + + if (debug_p) + { + s *= (zoom / 100.0) * 0.75; + if (s < 0.1) s = 0.1; + } + + glScalef (s, s, s); + glTranslatef (-0.5, -0.5, 0); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + ss->redisplay_needed_p = True; +} + + +ENTRYPOINT Bool +slideshow_handle_event (ModeInfo *mi, XEvent *event) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + + if (event->xany.type == Expose || + event->xany.type == GraphicsExpose || + event->xany.type == VisibilityNotify) + { + ss->redisplay_needed_p = True; + if (debug_p) + fprintf (stderr, "%s: exposure\n", blurb()); + return False; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + ss->change_now_p = True; + return True; + } + + return False; +} + + +/* Do some sanity checking on various user-supplied values, and make + sure they are all internally consistent. + */ +static void +sanity_check (ModeInfo *mi) +{ + if (zoom < 1) zoom = 1; /* zoom is a positive percentage */ + else if (zoom > 100) zoom = 100; + + if (zoom == 100) /* with no zooming, there is no panning */ + pan_seconds = 0; + + if (pan_seconds < fade_seconds) /* pan is inclusive of fade */ + pan_seconds = fade_seconds; + + if (pan_seconds == 0) /* no zero-length cycles, please... */ + pan_seconds = 1; + + if (image_seconds < pan_seconds) /* we only change images at fade-time */ + image_seconds = pan_seconds; + + /* If we're not panning/zooming within the image, then there's no point + in crossfading the image with itself -- only do crossfades when changing + to a new image. */ + if (zoom == 100 && pan_seconds < image_seconds) + pan_seconds = image_seconds; + + /* No need to use mipmaps if we're not changing the image size much */ + if (zoom >= 80) mipmap_p = False; + + if (fps_cutoff < 0) fps_cutoff = 0; + else if (fps_cutoff > 30) fps_cutoff = 30; +} + + +static void +check_fps (ModeInfo *mi) +{ +#ifndef HAVE_JWXYZ /* always assume Cocoa and mobile are fast enough */ + + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + + double start_time, end_time, wall_elapsed, frame_duration, fps; + int i; + + start_time = ss->now; + end_time = double_time(); + frame_duration = end_time - start_time; /* time spent drawing this frame */ + ss->time_elapsed += frame_duration; /* time spent drawing all frames */ + ss->frames_elapsed++; + + wall_elapsed = end_time - ss->dawn_of_time; + fps = ss->frames_elapsed / ss->time_elapsed; + ss->theoretical_fps = fps; + + if (ss->checked_fps_p) return; + + if (wall_elapsed <= 8) /* too early to be sure */ + return; + + ss->checked_fps_p = True; + + if (fps >= fps_cutoff) + { + if (debug_p) + fprintf (stderr, + "%s: %.1f fps is fast enough (with %d frames in %.1f secs)\n", + blurb(), fps, ss->frames_elapsed, wall_elapsed); + return; + } + + fprintf (stderr, + "%s: only %.1f fps! Turning off pan/fade to compensate...\n", + blurb(), fps); + zoom = 100; + fade_seconds = 0; + + sanity_check (mi); + + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp = ss->sprites[i]; + randomize_sprite (mi, sp); + sp->state = FULL; + } + + ss->redisplay_needed_p = True; + + /* Need this in case zoom changed. */ + reshape_slideshow (mi, mi->xgwa.width, mi->xgwa.height); +#endif /* HAVE_JWXYZ */ +} + + +/* Kludge to add "-v" to invocation of "xscreensaver-getimage" in -debug mode + */ +static void +hack_resources (void) +{ +#if 0 + char *res = "desktopGrabber"; + char *val = get_string_resource (res, "DesktopGrabber"); + char buf1[255]; + char buf2[255]; + XrmValue value; + sprintf (buf1, "%.100s.%.100s", progclass, res); + sprintf (buf2, "%.200s -v", val); + value.addr = buf2; + value.size = strlen(buf2); + XrmPutResource (&db, buf1, "String", &value); +#endif +} + + +ENTRYPOINT void +init_slideshow (ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + slideshow_state *ss; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, sss); + ss = &sss[screen]; + + if ((ss->glx_context = init_GL(mi)) != NULL) { + reshape_slideshow (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } + + if (debug_p) + fprintf (stderr, "%s: pan: %d; fade: %d; img: %d; zoom: %d%%\n", + blurb(), pan_seconds, fade_seconds, image_seconds, zoom); + + sanity_check(mi); + + if (debug_p) + fprintf (stderr, "%s: pan: %d; fade: %d; img: %d; zoom: %d%%\n\n", + blurb(), pan_seconds, fade_seconds, image_seconds, zoom); + + glDisable (GL_LIGHTING); + glDisable (GL_DEPTH_TEST); + glDepthMask (GL_FALSE); + glEnable (GL_CULL_FACE); + glCullFace (GL_BACK); + + if (! wire) + { + glEnable (GL_TEXTURE_2D); + glShadeModel (GL_SMOOTH); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + if (debug_p) glLineWidth (3); + + ss->font_data = load_texture_font (mi->dpy, "titleFont"); + + if (debug_p) + hack_resources(); + + ss->now = double_time(); + ss->dawn_of_time = ss->now; + ss->prev_frame_time = ss->now; + + ss->awaiting_first_image_p = True; + alloc_image (mi); +} + + +ENTRYPOINT void +draw_slideshow (ModeInfo *mi) +{ + slideshow_state *ss = &sss[MI_SCREEN(mi)]; + int i; + + if (!ss->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context)); + + if (ss->awaiting_first_image_p) + { + image *img = ss->images[0]; + if (!img) abort(); + if (!img->loaded_p) + return; + + ss->awaiting_first_image_p = False; + ss->dawn_of_time = double_time(); + + /* start the very first sprite fading in */ + new_sprite (mi); + } + + ss->now = double_time(); + + /* Each sprite has three states: fading in, full, fading out. + The in/out states overlap like this: + + iiiiiiFFFFFFFFFFFFoooooo . . . . . . . . . . . . . . . . . + . . . . . . . . . iiiiiiFFFFFFFFFFFFoooooo . . . . . . . . + . . . . . . . . . . . . . . . . . . iiiiiiFFFFFFFFFFFFooooo + + So as soon as a sprite goes into the "out" state, we create + a new sprite (in the "in" state.) + */ + + if (ss->nsprites > 2) abort(); + + /* If a sprite is just entering the fade-out state, + then add a new sprite in the fade-in state. + */ + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp = ss->sprites[i]; + if (sp->state != sp->prev_state && + sp->state == (fade_seconds == 0 ? DEAD : OUT)) + new_sprite (mi); + } + + tick_sprites (mi); + + /* Now garbage collect the dead sprites. + */ + for (i = 0; i < ss->nsprites; i++) + { + sprite *sp = ss->sprites[i]; + if (sp->state == DEAD) + { + destroy_sprite (mi, sp); + i--; + } + } + + /* We can only ever end up with no sprites at all if the machine is + being really slow and we hopped states directly from FULL to DEAD + without passing OUT... */ + if (ss->nsprites == 0) + new_sprite (mi); + + if (!ss->redisplay_needed_p) + return; + + if (debug_p && ss->now - ss->prev_frame_time > 1) + fprintf (stderr, "%s: static screen for %.1f secs\n", + blurb(), ss->now - ss->prev_frame_time); + + draw_sprites (mi); + + if (mi->fps_p) do_fps (mi); + + glFinish(); + glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi)); + ss->prev_frame_time = ss->now; + ss->redisplay_needed_p = False; + check_fps (mi); +} + +XSCREENSAVER_MODULE_2 ("GLSlideshow", glslideshow, slideshow) + +#endif /* USE_GL */ diff --git a/hacks/glx/glslideshow.man b/hacks/glx/glslideshow.man new file mode 100644 index 0000000..4ce4672 --- /dev/null +++ b/hacks/glx/glslideshow.man @@ -0,0 +1,131 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +glslideshow - slideshow of images using smooth zooming and fades +.SH SYNOPSIS +.B glslideshow +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-duration \fIseconds\fP] +[\-zoom \fIpercent\fP] +[\-pan \fIseconds\fP] +[\-fade \fIseconds\fP] +[\-titles] +[\-letterbox | \-clip] +[\-delay \fIusecs\fP] +[\-fps] +[\-debug] +[\-wireframe] +[\-cutoff \fIint\fP] +.SH DESCRIPTION +Loads a random sequence of images and smoothly scans and zooms around +in each, fading from pan to pan. + +This program requires a good video card capable of supporting large +textures. + +To specify the directory that images are loaded from, run +.BR xscreensaver-demo (1) +and click on the "Advanced" tab. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-duration \fIseconds\fP +How long each image will be displayed before loading a new one. +Default 30 seconds. +.TP 8 +.B \-pan \fIseconds\fP +How long each pan-and-zoom should last. Default 6 seconds. + +With the default settings of \fI\-pan 6 \-duration 30\fP, each image +will be displayed five times (30/6), and then a new image will be loaded. +If you want a new image to be loaded at each fade, then set \fI\-pan\fP +and \fI\-duration\fP to the same value. +.TP 8 +.B \-fade \fIseconds\fP +How long each cross-fade between images should last. Default 2 seconds. +If set to 0, then no cross-fading will be done (all transitions +will be jump-cuts.) + +Note that fades are included in the pan time, so \fI\-fade\fP cannot +be larger than \fI\-pan\fP. +.TP 8 +.B \-zoom \fInumber\fP +Amount to zoom and pan as a percentage. Default: 75, meaning that +75% or more of each image will always be visible. If set to 100%, +then the images will always fill the screen, and no panning or +zooming will occur. (Images will still smoothly fade from one +to another if \fI\-fade\fP is non-zero.) +.TP 8 +.B \-titles +Whether to print the file name of the current image in the upper left corner. +.TP 8 +.B \-letterbox +In "letterbox" mode, when an image is not the same aspect ratio as the screen, +black bars will appear at the top/bottom or left/right so that the whole +image can be displayed. This is the default. +.TP 8 +.B \-clip +In "clip" mode, when an image is not the same aspect ratio as the screen, +we will zoom in further until the image takes up the whole screen. +This is the opposite of \fI\-letterbox\fP. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-cutoff \fInumber\fP +If the frame rate we are achieving is lower than this, then panning, +fading, and zooming will be disabled. Default 5 FPS. + +The idea here is that if your machine can't maintain a decent frame +rate, then it must not have fast 3D hardware, so we might as well +behave in a simpler manner. Set this to 0 to disable this check. +.TP 8 +.B \-debug +Prints debugging info to stderr. +.TP 8 +.B \-wireframe +Another debug mode. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver-demo (1), +.BR xscreensaver-getimage (1), +.BR xscreensaver (1), +.BR carousel (MANSUFFIX) +.BR photopile (MANSUFFIX) +.SH COPYRIGHT +Copyright \(co 2003-2005 by Jamie Zawinski, based on an earlier version +that was +Copyright \(co 2002 by Mike Oliphant. + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +Jamie Zawinski and Mike Oliphant. diff --git a/hacks/glx/glsnake.c b/hacks/glx/glsnake.c new file mode 100644 index 0000000..5f20421 --- /dev/null +++ b/hacks/glx/glsnake.c @@ -0,0 +1,2694 @@ +/* glsnake.c - OpenGL imitation of Rubik's Snake + * + * (c) 2001-2005 Jamie Wilkinson + * (c) 2001-2003 Andrew Bennetts + * (c) 2001-2003 Peter Aylett + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +/* HAVE_GLUT defined if we're building a standalone glsnake, + * and not defined if we're building as an xscreensaver hack */ +#ifdef HAVE_GLUT +# include +#else +# ifdef HAVE_JWXYZ +# define HAVE_GETTIMEOFDAY +# else +# include +# include +# endif +#endif +# ifdef HAVE_ANDROID +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#ifdef STANDALONE +# include "xlockmoreI.h" +#endif + +#include +#include +#include +#include + +/* angles */ +#define ZERO 0.0 +#define LEFT 90.0 +#define PIN 180.0 +#define RIGHT 270.0 + +#ifdef HAVE_GETTIMEOFDAY +# ifdef GETTIMEOFDAY_TWO_ARGS + +# include +# include + typedef struct timeval snaketime; +# define GETSECS(t) ((t).tv_sec) +# define GETMSECS(t) ((t).tv_usec/1000) + +# else /* !GETTIMEOFDAY_TWO_ARGS */ + +# include +# include + typedef struct timeval snaketime; +# define GETSECS(t) ((t).tv_sec) +# define GETMSECS(t) ((t).tv_usec/1000) + +# endif /* GETTIMEOFDAY_TWO_ARGS */ + +#else /* !HAVE_GETTIMEOFDAY */ +# ifdef HAVE_FTIME + +# include + typedef struct timeb snaketime; +# define GETSECS(t) ((long)(t).time) +# define GETMSECS(t) ((t).millitm/1000) + +# endif /* HAVE_FTIME */ +#endif /* HAVE_GETTIMEOFDAY */ + +#include + +#ifndef M_SQRT1_2 /* Win32 doesn't have this constant */ +#define M_SQRT1_2 0.70710678118654752440084436210485 +#endif + +#define NODE_COUNT 24 + +#ifdef HAVE_GLUT +#define DEF_YANGVEL 0.10 +#define DEF_ZANGVEL 0.14 +#define DEF_EXPLODE 0.03 +#define DEF_ANGVEL 1.0 +#define DEF_STATICTIME 5000 +#define DEF_ALTCOLOUR 0 +#define DEF_TITLES 0 +#define DEF_INTERACTIVE 0 +#define DEF_ZOOM 25.0 +#define DEF_WIREFRAME 0 +#define DEF_TRANSPARENT 1 +#else +/* xscreensaver options doobies prefer strings */ +#define DEF_YANGVEL "0.10" +#define DEF_ZANGVEL "0.14" +#define DEF_EXPLODE "0.03" +#define DEF_ANGVEL "1.0" +#define DEF_STATICTIME "5000" +#define DEF_ALTCOLOUR "False" +#define DEF_TITLES "False" +#define DEF_INTERACTIVE "False" +#define DEF_ZOOM "25.0" +#define DEF_WIREFRAME "False" +#define DEF_TRANSPARENT "True" +#endif + +/* static variables */ + +static GLfloat explode; +static long statictime; +static GLfloat yspin = 60.0; +static GLfloat zspin = -45.0; +static GLfloat yangvel; +static GLfloat zangvel; +static Bool altcolour; +static Bool titles; +static Bool interactive; +static Bool wireframe; +static Bool transparent; +static GLfloat zoom; +static GLfloat angvel; + +#ifndef HAVE_GLUT + +#define glsnake_init init_glsnake +#define glsnake_display draw_glsnake +#define glsnake_reshape reshape_glsnake +#define free_glsnake 0 +#define release_glsnake 0 +#define glsnake_handle_event xlockmore_no_events + +/* xscreensaver defaults */ +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 30 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + "*labelfont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \ + + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "texfont.h" + +static XrmOptionDescRec opts[] = { + { "-explode", ".explode", XrmoptionSepArg, DEF_EXPLODE }, + { "-angvel", ".angvel", XrmoptionSepArg, DEF_ANGVEL }, + { "-statictime", ".statictime", XrmoptionSepArg, DEF_STATICTIME }, + { "-yangvel", ".yangvel", XrmoptionSepArg, DEF_YANGVEL }, + { "-zangvel", ".zangvel", XrmoptionSepArg, DEF_ZANGVEL }, + { "-altcolour", ".altcolour", XrmoptionNoArg, "True" }, + { "-no-altcolour", ".altcolour", XrmoptionNoArg, "False" }, + { "-titles", ".titles", XrmoptionNoArg, "True" }, + { "-no-titles", ".titles", XrmoptionNoArg, "False" }, + { "-zoom", ".zoom", XrmoptionSepArg, DEF_ZOOM }, + { "-wireframe", ".wireframe", XrmoptionNoArg, "true" }, + { "-no-wireframe", ".wireframe", XrmoptionNoArg, "false" }, + { "-transparent", ".transparent", XrmoptionNoArg, "true" }, + { "-no-transparent", ".transparent", XrmoptionNoArg, "false" }, +}; + +static argtype vars[] = { + {&explode, "explode", "Explode", DEF_EXPLODE, t_Float}, + {&angvel, "angvel", "Angular Velocity", DEF_ANGVEL, t_Float}, + {&statictime, "statictime", "Static Time", DEF_STATICTIME, t_Int}, + {&yangvel, "yangvel", "Angular Velocity about Y axis", DEF_YANGVEL, t_Float}, + {&zangvel, "zangvel", "Angular Velocity about X axis", DEF_ZANGVEL, t_Float}, + {&interactive, "interactive", "Interactive", DEF_INTERACTIVE, t_Bool}, + {&altcolour, "altcolour", "Alternate Colour Scheme", DEF_ALTCOLOUR, t_Bool}, + {&titles, "titles", "Titles", DEF_TITLES, t_Bool}, + {&zoom, "zoom", "Zoom", DEF_ZOOM, t_Float}, + {&wireframe, "wireframe", "Wireframe", DEF_WIREFRAME, t_Bool}, + {&transparent, "transparent", "Transparent!", DEF_TRANSPARENT, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt glsnake_opts = {countof(opts), opts, countof(vars), vars, NULL}; +#endif + +struct model_s { + const char * name; + float node[NODE_COUNT]; +}; + +struct glsnake_cfg { +#ifndef HAVE_GLUT + GLXContext * glx_context; + texture_font_data *font_data; +#else + /* font list number */ + int font; +#endif + + /* window id */ + int window; + + /* is a morph in progress? */ + int morphing; + + /* has the model been paused? */ + int paused; + + /* snake metrics */ + int is_cyclic; + int is_legal; + float last_turn; + int debug; + + /* the shape of the model */ + float node[NODE_COUNT]; + + /* currently selected node for interactive mode */ + int selected; + + /* models */ + unsigned int prev_model; + unsigned int next_model; + + /* model morphing */ + int new_morph; + + /* colours */ + float colour[2][4]; + int next_colour; + int prev_colour; + + /* timing variables */ + snaketime last_iteration; + snaketime last_morph; + + /* window size */ + int width, height; + int old_width, old_height; + + /* the id of the display lists for drawing a node */ + GLuint node_solid, node_wire; + int node_polys; + + /* is the window fullscreen? */ + int fullscreen; +}; + +#define COLOUR_CYCLIC 0 +#define COLOUR_ACYCLIC 1 +#define COLOUR_INVALID 2 +#define COLOUR_AUTHENTIC 3 +#define COLOUR_ORIGLOGO 4 + +static const float colour[][2][4] = { + /* cyclic - green */ + { { 0.4, 0.8, 0.2, 0.6 }, + { 1.0, 1.0, 1.0, 0.6 } }, + /* acyclic - blue */ + { { 0.3, 0.1, 0.9, 0.6 }, + { 1.0, 1.0, 1.0, 0.6 } }, + /* invalid - grey */ + { { 0.3, 0.1, 0.9, 0.6 }, + { 1.0, 1.0, 1.0, 0.6 } }, + /* authentic - purple and green */ + { { 0.38, 0.0, 0.55, 0.7 }, + { 0.0, 0.5, 0.34, 0.7 } }, + /* old "authentic" colours from the logo */ + { { 171/255.0, 0, 1.0, 1.0 }, + { 46/255.0, 205/255.0, 227/255.0, 1.0 } } +}; + +static const struct model_s model[] = { +#define STRAIGHT_MODEL 0 + { "straight", + { ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO, ZERO } + }, + /* the models in the Rubik's snake manual */ + { "ball", + { RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, + RIGHT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, + RIGHT, LEFT, RIGHT, LEFT, ZERO } + }, +#define START_MODEL 2 + { "snow", + { RIGHT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, LEFT, RIGHT, + RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, + RIGHT, LEFT, LEFT, LEFT, ZERO } + }, + { "propellor", + { ZERO, ZERO, ZERO, RIGHT, LEFT, RIGHT, ZERO, LEFT, ZERO, ZERO, + ZERO, RIGHT, LEFT, RIGHT, ZERO, LEFT, ZERO, ZERO, ZERO, RIGHT, + LEFT, RIGHT, ZERO, LEFT } + }, + { "flamingo", + { ZERO, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, PIN, RIGHT, RIGHT, PIN, + RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, RIGHT, ZERO, ZERO, + ZERO, PIN, ZERO } + }, + { "cat", + { ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, + ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO } + }, + { "rooster", + { ZERO, ZERO, PIN, PIN, ZERO, LEFT, ZERO, LEFT, RIGHT, PIN, RIGHT, + ZERO, PIN, PIN, ZERO, RIGHT, PIN, RIGHT, LEFT, ZERO, LEFT, ZERO, + PIN, ZERO } + }, + /* These models were taken from Andrew and Peter's original snake.c + * as well as some newer ones made up by Jamie, Andrew and Peter. */ + { "half balls", + { LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, + LEFT, LEFT, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, + RIGHT, LEFT, LEFT, LEFT, ZERO } + }, + { "zigzag1", + { RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, + LEFT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, + RIGHT, RIGHT, LEFT, LEFT, ZERO } + }, + { "zigzag2", + { PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, + ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, + ZERO } + }, + { "zigzag3", + { PIN, LEFT, PIN, LEFT, PIN, LEFT, PIN, LEFT, PIN, LEFT, PIN, + LEFT, PIN, LEFT, PIN, LEFT, PIN, LEFT, PIN, LEFT, PIN, LEFT, PIN, + ZERO } + }, + { "caterpillar", + { RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, + LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, RIGHT, PIN, + LEFT, LEFT, ZERO } + }, + { "bow", + { RIGHT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, + LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, + RIGHT, RIGHT, LEFT, LEFT, ZERO } + }, + { "turtle", + { ZERO, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, + LEFT, RIGHT, LEFT, LEFT, PIN, LEFT, LEFT, LEFT, RIGHT, LEFT, + RIGHT, RIGHT, RIGHT, ZERO } + }, + { "basket", + { RIGHT, PIN, ZERO, ZERO, PIN, LEFT, ZERO, LEFT, LEFT, ZERO, + LEFT, PIN, ZERO, ZERO, PIN, RIGHT, PIN, LEFT, PIN, ZERO, ZERO, + PIN, LEFT, ZERO } + }, + { "thing", + { PIN, RIGHT, LEFT, RIGHT, RIGHT, LEFT, PIN, LEFT, RIGHT, LEFT, + LEFT, RIGHT, PIN, RIGHT, LEFT, RIGHT, RIGHT, LEFT, PIN, LEFT, + RIGHT, LEFT, LEFT, ZERO } + }, + { "hexagon", + { ZERO, ZERO, ZERO, ZERO, LEFT, ZERO, ZERO, RIGHT, ZERO, ZERO, + ZERO, ZERO, LEFT, ZERO, ZERO, RIGHT, ZERO, ZERO, ZERO, ZERO, + LEFT, ZERO, ZERO, RIGHT } + }, + { "tri1", + { ZERO, ZERO, LEFT, RIGHT, ZERO, LEFT, ZERO, RIGHT, ZERO, ZERO, + LEFT, RIGHT, ZERO, LEFT, ZERO, RIGHT, ZERO, ZERO, LEFT, RIGHT, + ZERO, LEFT, ZERO, RIGHT } + }, + { "triangle", + { ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, + ZERO, ZERO, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO, LEFT, RIGHT } + }, + { "flower", + { ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, ZERO, LEFT, PIN, RIGHT, + RIGHT, PIN, ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, ZERO, LEFT, PIN, + RIGHT, RIGHT, PIN } + }, + { "crucifix", + { ZERO, PIN, PIN, ZERO, PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO, PIN, + PIN, ZERO, PIN, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, ZERO, PIN } + }, + { "kayak", + { PIN, RIGHT, LEFT, PIN, LEFT, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, + ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, + PIN, RIGHT } + }, + { "bird", + { ZERO, ZERO, ZERO, ZERO, RIGHT, RIGHT, ZERO, LEFT, PIN, RIGHT, + ZERO, RIGHT, ZERO, RIGHT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, + LEFT, ZERO, PIN, ZERO } + }, + { "seal", + { RIGHT, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, PIN, PIN, ZERO, + LEFT, ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, LEFT, LEFT, PIN, RIGHT, + RIGHT, LEFT, ZERO } + }, + { "dog", + { ZERO, ZERO, ZERO, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, PIN, + ZERO, PIN, PIN, ZERO, ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO } + }, + { "frog", + { RIGHT, RIGHT, LEFT, LEFT, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, + RIGHT, ZERO, LEFT, ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, LEFT, + RIGHT, LEFT, LEFT, ZERO } + }, + { "quavers", + { LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, ZERO, ZERO, ZERO, + RIGHT, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, ZERO, LEFT, LEFT, + RIGHT, LEFT, RIGHT, RIGHT, ZERO } + }, + { "fly", + { LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, ZERO, PIN, ZERO, ZERO, + LEFT, PIN, RIGHT, ZERO, ZERO, PIN, ZERO, LEFT, LEFT, RIGHT, LEFT, + RIGHT, RIGHT, ZERO } + }, + { "puppy", + { ZERO, PIN, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, + RIGHT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, + LEFT, ZERO, ZERO } + }, + { "stars", + { LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, + ZERO, ZERO, ZERO, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, + RIGHT, LEFT, ZERO } + }, + { "mountains", + { RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, + LEFT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, + PIN, LEFT, PIN } + }, + { "quad1", + { RIGHT, PIN, RIGHT, RIGHT, RIGHT, PIN, LEFT, LEFT, LEFT, PIN, + LEFT, PIN, RIGHT, PIN, RIGHT, RIGHT, RIGHT, PIN, LEFT, LEFT, + LEFT, PIN, LEFT, PIN } + }, + { "quad2", + { ZERO, PIN, RIGHT, RIGHT, RIGHT, PIN, LEFT, LEFT, LEFT, PIN, + ZERO, PIN, ZERO, PIN, RIGHT, RIGHT, RIGHT, PIN, LEFT, LEFT, LEFT, + PIN, ZERO, PIN } + }, + { "glasses", + { ZERO, PIN, ZERO, RIGHT, RIGHT, PIN, LEFT, LEFT, ZERO, PIN, + ZERO, PIN, ZERO, PIN, ZERO, RIGHT, RIGHT, PIN, LEFT, LEFT, ZERO, + PIN, ZERO, PIN } + }, + { "em", + { ZERO, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, + ZERO, PIN, ZERO, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, + PIN, ZERO, PIN } + }, + { "quad3", + { ZERO, RIGHT, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, LEFT, + ZERO, PIN, ZERO, RIGHT, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, + LEFT, ZERO, PIN } + }, + { "vee", + { ZERO, ZERO, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, ZERO, + ZERO, PIN, ZERO, ZERO, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, + ZERO, ZERO, PIN } + }, + { "square", + { ZERO, ZERO, ZERO, RIGHT, RIGHT, PIN, LEFT, LEFT, ZERO, ZERO, + ZERO, PIN, ZERO, ZERO, ZERO, RIGHT, RIGHT, PIN, LEFT, LEFT, ZERO, + ZERO, ZERO, PIN } + }, + { "eagle", + { RIGHT, ZERO, ZERO, RIGHT, RIGHT, PIN, LEFT, LEFT, ZERO, ZERO, + LEFT, PIN, RIGHT, ZERO, ZERO, RIGHT, RIGHT, PIN, LEFT, LEFT, + ZERO, ZERO, LEFT, PIN } + }, + { "volcano", + { RIGHT, ZERO, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, + ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, RIGHT, RIGHT, PIN, LEFT, + LEFT, RIGHT, ZERO, LEFT, PIN } + }, + { "saddle", + { RIGHT, ZERO, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, ZERO, + LEFT, PIN, RIGHT, ZERO, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, + ZERO, LEFT, PIN } + }, + { "c3d", + { ZERO, ZERO, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO, LEFT, ZERO, + ZERO, PIN, ZERO, ZERO, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO, LEFT, + ZERO, ZERO, PIN } + }, + { "block", + { ZERO, ZERO, PIN, PIN, ZERO, RIGHT, PIN, LEFT, PIN, RIGHT, PIN, + RIGHT, PIN, LEFT, PIN, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO, LEFT, + PIN, RIGHT } + }, + { "duck", + { LEFT, PIN, LEFT, PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO, LEFT, + PIN, RIGHT, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO, LEFT, PIN, + LEFT, ZERO } + }, + { "prayer", + { RIGHT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO, ZERO, + ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, ZERO, RIGHT, RIGHT, LEFT, + RIGHT, LEFT, LEFT, LEFT, PIN } + }, + { "giraffe", + { ZERO, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, ZERO, RIGHT, + RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, PIN, ZERO, LEFT, RIGHT, + PIN, LEFT, LEFT, LEFT } + }, + { "tie fighter", + { PIN, LEFT, RIGHT, LEFT, LEFT, PIN, RIGHT, ZERO, RIGHT, LEFT, + ZERO, PIN, LEFT, LEFT, RIGHT, RIGHT, RIGHT, PIN, LEFT, ZERO, + LEFT, RIGHT, ZERO, ZERO } + }, + { "Strong Arms", + { PIN, PIN, ZERO, ZERO, PIN, ZERO, ZERO, RIGHT, ZERO, RIGHT, + RIGHT, PIN, RIGHT, RIGHT, ZERO, RIGHT, ZERO, ZERO, PIN, ZERO, + ZERO, PIN, PIN, ZERO } + }, + + /* the following modesl were created during the slug/compsoc codefest + * febrray 2003 */ + { "cool looking gegl", + { PIN, PIN, ZERO, ZERO, RIGHT, ZERO, ZERO, PIN, PIN, ZERO, LEFT, + ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, LEFT, RIGHT, PIN, ZERO, + ZERO, ZERO } + }, + { "knuckledusters", + { ZERO, ZERO, ZERO, ZERO, PIN, RIGHT, ZERO, PIN, PIN, ZERO, PIN, + PIN, ZERO, RIGHT, RIGHT, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, + RIGHT, ZERO } + }, + { "k's turd", + { RIGHT, RIGHT, PIN, RIGHT, LEFT, RIGHT, PIN, RIGHT, LEFT, + RIGHT, PIN, RIGHT, LEFT, RIGHT, PIN, RIGHT, LEFT, RIGHT, PIN, + RIGHT, LEFT, RIGHT, PIN, ZERO } + }, + { "lightsabre", + { ZERO, ZERO, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO } + }, + { "not a stairway", + { LEFT, ZERO, RIGHT, LEFT, RIGHT, ZERO, LEFT, RIGHT, LEFT, ZERO, + RIGHT, LEFT, RIGHT, ZERO, LEFT, RIGHT, LEFT, ZERO, RIGHT, LEFT, + RIGHT, ZERO, LEFT, ZERO } + }, + { "not very good (but accurate) gegl", + { ZERO, PIN, PIN, ZERO, ZERO, ZERO, PIN, PIN, ZERO, LEFT, ZERO, + PIN, PIN, ZERO, RIGHT, LEFT, ZERO, PIN, ZERO, PIN, PIN, ZERO, + PIN, ZERO } + }, + { "box", + { ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, + ZERO, PIN, ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO, ZERO } + }, + { "kissy box", + { PIN, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, + ZERO, PIN, ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, + ZERO, PIN, ZERO } + }, + { "erect penis", /* thanks benno */ + { PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, PIN, + PIN, ZERO, ZERO, ZERO, RIGHT, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO } + }, + { "flaccid penis", + { PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, PIN, + PIN, ZERO, ZERO, ZERO, RIGHT, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, + ZERO, ZERO } + }, + { "vagina", + { RIGHT, ZERO, ZERO, ZERO, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO, + LEFT, ZERO, ZERO, ZERO, LEFT, ZERO, LEFT, PIN, LEFT, PIN, RIGHT, + PIN, RIGHT, ZERO } + }, + { "mask", + { ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, ZERO, ZERO, PIN, + ZERO, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, ZERO, PIN, ZERO, + ZERO, ZERO, ZERO } + }, + { "poles or columns or something", + { LEFT, RIGHT, LEFT, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, + ZERO, LEFT, RIGHT, LEFT, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, + ZERO, LEFT, ZERO } + }, + { "crooked v", + { ZERO, LEFT, ZERO, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, + ZERO, LEFT, ZERO, LEFT, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, + ZERO, ZERO, ZERO } + }, + { "dog leg", + { ZERO, LEFT, ZERO, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, ZERO, + LEFT, ZERO, RIGHT, ZERO, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, + ZERO, ZERO } + }, + { "scrubby", + { ZERO, ZERO, ZERO, ZERO, ZERO, LEFT, ZERO, ZERO, ZERO, ZERO, + LEFT, RIGHT, ZERO, ZERO, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, + LEFT, PIN, ZERO, ZERO } + }, + { "voltron's eyes", + { ZERO, ZERO, PIN, RIGHT, ZERO, LEFT, ZERO, ZERO, RIGHT, ZERO, + LEFT, PIN, ZERO, ZERO, PIN, ZERO, LEFT, ZERO, RIGHT, LEFT, ZERO, + RIGHT, ZERO, ZERO } + }, + { "flying toaster", + { PIN, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, + RIGHT, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, ZERO, + PIN, ZERO } + }, + { "dubbya", + { PIN, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, + ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, ZERO, + PIN, ZERO } + }, + { "tap handle", + { PIN, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, + LEFT, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, ZERO, + PIN, ZERO } + }, + { "wingnut", + { PIN, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, + PIN, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, ZERO, + PIN, ZERO } + }, + { "tight twist", + { RIGHT, ZERO, ZERO, LEFT, ZERO, LEFT, RIGHT, ZERO, RIGHT, LEFT, + RIGHT, PIN, RIGHT, LEFT, RIGHT, ZERO, RIGHT, LEFT, ZERO, LEFT, + ZERO, ZERO, RIGHT, ZERO } + }, + { "double helix", + { RIGHT, ZERO, RIGHT, ZERO, RIGHT, ZERO, RIGHT, ZERO, RIGHT, + ZERO, RIGHT, ZERO, RIGHT, LEFT, RIGHT, PIN, ZERO, RIGHT, ZERO, + RIGHT, ZERO, RIGHT, ZERO, ZERO } + }, + + /* These models come from the website at + * http://www.geocities.com/stigeide/snake */ +#if 0 + { "Abstract", + { RIGHT, LEFT, RIGHT, ZERO, PIN, ZERO, LEFT, RIGHT, LEFT, PIN, ZERO, ZERO, PIN, LEFT, RIGHT, LEFT, ZERO, PIN, ZERO, RIGHT, LEFT, RIGHT, ZERO, ZERO } + }, +#endif + { "toadstool", + { LEFT, RIGHT, ZERO, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, PIN, RIGHT, LEFT, PIN, ZERO } + }, + { "AlanH2", + { LEFT, RIGHT, ZERO, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, ZERO } + }, + { "AlanH3", + { LEFT, RIGHT, ZERO, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, ZERO } + }, + { "AlanH4", + { ZERO, ZERO, PIN, LEFT, RIGHT, LEFT, ZERO, RIGHT, LEFT, RIGHT, ZERO, PIN, ZERO, LEFT, RIGHT, LEFT, ZERO, RIGHT, LEFT, RIGHT, PIN, ZERO, ZERO, ZERO } + }, + { "Alien", + { RIGHT, LEFT, RIGHT, PIN, ZERO, ZERO, PIN, RIGHT, LEFT, RIGHT, ZERO, PIN, PIN, ZERO, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, ZERO, PIN, PIN, ZERO } + }, + { "Angel", + { ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, ZERO } + }, + { "AnotherFigure", + { LEFT, PIN, RIGHT, ZERO, ZERO, PIN, RIGHT, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, PIN, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, LEFT, PIN, ZERO, ZERO } + }, + { "Ball", + { LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT , ZERO } + }, + { "Basket", + { ZERO, RIGHT, RIGHT, ZERO, RIGHT, RIGHT, ZERO, RIGHT, LEFT, ZERO, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, LEFT, RIGHT, PIN, LEFT, LEFT, ZERO, LEFT , ZERO } + }, + { "Beetle", + { PIN, LEFT, RIGHT, ZERO, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, ZERO, LEFT, RIGHT, PIN, RIGHT , ZERO } + }, + { "bone", + { PIN, PIN, LEFT, ZERO, PIN, PIN, ZERO, LEFT, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, RIGHT, PIN, PIN , ZERO } + }, + { "Bow", + { LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT , ZERO } + }, + { "bra", + { RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, LEFT , ZERO } + }, + { "bronchosaurus", + { ZERO, PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, PIN , ZERO } + }, + { "Cactus", + { PIN, LEFT, ZERO, PIN, PIN, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, RIGHT, PIN, LEFT, ZERO, ZERO, RIGHT, PIN, LEFT, PIN, ZERO, ZERO , ZERO } + }, + { "Camel", + { RIGHT, ZERO, PIN, RIGHT, PIN, RIGHT, ZERO, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, ZERO, RIGHT, PIN, RIGHT, ZERO, ZERO, LEFT , ZERO } + }, + { "Candlestick", + { LEFT, PIN, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, PIN, RIGHT , ZERO } + }, + { "Cat", + { ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO , ZERO } + }, + { "Cave", + { RIGHT, ZERO, ZERO, PIN, LEFT, ZERO, PIN, PIN, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, LEFT, LEFT, PIN, RIGHT, RIGHT, LEFT, PIN, ZERO, ZERO , ZERO } + }, + { "Chains", + { PIN, ZERO, ZERO, PIN, LEFT, LEFT, PIN, RIGHT, RIGHT, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, LEFT, LEFT, PIN, RIGHT, RIGHT, PIN, ZERO , ZERO } + }, + { "Chair", + { RIGHT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, RIGHT, ZERO, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO, LEFT, RIGHT, LEFT, LEFT , ZERO } + }, + { "Chick", + { RIGHT, RIGHT, RIGHT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, RIGHT, RIGHT, PIN, LEFT, LEFT, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, LEFT, LEFT , ZERO } + }, + { "Clockwise", + { RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT , ZERO } + }, + { "cobra", + { ZERO, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, LEFT, LEFT, ZERO, LEFT, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO, RIGHT , ZERO } + }, +#if 0 + { "Cobra2", + { LEFT, ZERO, PIN, ZERO, PIN, LEFT, ZERO, PIN, ZERO, LEFT, LEFT, PIN, RIGHT, RIGHT, ZERO, PIN, ZERO, RIGHT, PIN, ZERO, PIN, ZERO, RIGHT , ZERO } + }, +#endif + { "Cobra3", + { ZERO, LEFT, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, ZERO, ZERO, LEFT, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, LEFT , ZERO } + }, + { "Compact1", + { ZERO, ZERO, PIN, ZERO, ZERO, LEFT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, LEFT, ZERO, PIN, PIN, ZERO, ZERO, LEFT, PIN , ZERO } + }, + { "Compact2", + { LEFT, PIN, RIGHT, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, RIGHT, ZERO, ZERO, ZERO , ZERO } + }, + { "Compact3", + { ZERO, PIN, ZERO, PIN, PIN, ZERO, LEFT, PIN, RIGHT, ZERO, PIN, PIN, ZERO, PIN, ZERO, PIN, PIN, ZERO, LEFT, PIN, RIGHT, ZERO, PIN , ZERO } + }, + { "Compact4", + { PIN, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO, PIN, PIN, ZERO, PIN, RIGHT, PIN, LEFT, PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, ZERO , ZERO } + }, + { "Compact5", + { LEFT, ZERO, LEFT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, RIGHT, ZERO, RIGHT, PIN, RIGHT, PIN, LEFT , ZERO } + }, + { "Contact", + { PIN, ZERO, ZERO, PIN, LEFT, LEFT, PIN, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, PIN, RIGHT, RIGHT, PIN, ZERO, ZERO, PIN, RIGHT, PIN , ZERO } + }, + { "Contact2", + { RIGHT, PIN, ZERO, LEFT, LEFT, PIN, RIGHT, RIGHT, ZERO, PIN, LEFT, PIN, RIGHT, PIN, ZERO, LEFT, LEFT, PIN, RIGHT, RIGHT, ZERO, PIN, LEFT , ZERO } + }, + { "Cook", + { ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, RIGHT, LEFT, PIN, LEFT, ZERO, PIN, PIN, ZERO, LEFT, PIN, LEFT, RIGHT, ZERO, RIGHT, ZERO, PIN , ZERO } + }, + { "Counterclockwise", + { LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT , ZERO } + }, + { "Cradle", + { LEFT, LEFT, ZERO, PIN, LEFT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, PIN, ZERO, RIGHT, RIGHT, LEFT, LEFT, ZERO, ZERO, RIGHT , ZERO } + }, + { "Crankshaft", + { ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, PIN, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, PIN, LEFT, PIN, RIGHT, ZERO, ZERO, ZERO, PIN, RIGHT , ZERO } + }, + { "Cross", + { ZERO, PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO, PIN , ZERO } + }, + { "Cross2", + { ZERO, ZERO, PIN, PIN, ZERO, LEFT, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, ZERO, PIN, PIN, ZERO, LEFT, ZERO, ZERO, PIN, PIN, ZERO , ZERO } + }, + { "Cross3", + { ZERO, ZERO, PIN, PIN, ZERO, LEFT, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, ZERO, PIN, PIN, ZERO, LEFT, ZERO, ZERO, PIN, PIN, ZERO, ZERO } + }, + { "CrossVersion1", + { PIN, ZERO, RIGHT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, RIGHT, ZERO, PIN, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, ZERO } + }, + { "CrossVersion2", + { RIGHT, LEFT, PIN, LEFT, LEFT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, LEFT, LEFT, PIN, LEFT, RIGHT, ZERO } + }, + { "Crown", + { LEFT, ZERO, PIN, ZERO, RIGHT, ZERO, ZERO, LEFT, ZERO, PIN, ZERO, RIGHT, LEFT, ZERO, PIN, ZERO, RIGHT, ZERO, ZERO, LEFT, ZERO, PIN, ZERO, ZERO } + }, + { "DNAStrand", + { RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, ZERO } + }, + { "Diamond", + { ZERO, RIGHT, ZERO, ZERO, LEFT, ZERO, ZERO, RIGHT, PIN, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, PIN, LEFT, ZERO, ZERO, RIGHT, ZERO, ZERO, LEFT, ZERO } + }, + { "Dog", + { RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO, LEFT, RIGHT, ZERO } + }, + { "DogFace", + { ZERO, ZERO, PIN, PIN, ZERO, LEFT, LEFT, RIGHT, PIN, ZERO, PIN, PIN, ZERO, PIN, LEFT, RIGHT, RIGHT, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO } + }, + { "DoublePeak", + { ZERO, ZERO, PIN, ZERO, ZERO, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, LEFT, ZERO, PIN, ZERO, RIGHT, RIGHT, LEFT, PIN, LEFT, RIGHT, ZERO } + }, + { "DoubleRoof", + { ZERO, LEFT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, ZERO, LEFT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, ZERO } + }, + { "txoboggan", + { ZERO, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, LEFT, PIN, RIGHT, ZERO, ZERO, ZERO, ZERO, PIN, ZERO } + }, + { "Doubled", + { LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, LEFT, ZERO, LEFT, PIN, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, ZERO } + }, + { "Doubled1", + { LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, ZERO, RIGHT, ZERO, RIGHT, ZERO, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, ZERO } + }, + { "Doubled2", + { LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, LEFT, RIGHT, ZERO, RIGHT, LEFT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, ZERO } + }, + { "DumblingSpoon", + { PIN, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, LEFT, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, RIGHT, ZERO, ZERO, ZERO, ZERO, ZERO } + }, + { "Embrace", + { PIN, ZERO, ZERO, PIN, RIGHT, PIN, LEFT, PIN, ZERO, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, ZERO, PIN, RIGHT, PIN, LEFT, PIN, ZERO, ZERO } + }, + { "EndlessBelt", + { ZERO, RIGHT, LEFT, ZERO, ZERO, ZERO, LEFT, RIGHT, ZERO, PIN, RIGHT, LEFT, ZERO, LEFT, RIGHT, LEFT, PIN, LEFT, RIGHT, LEFT, ZERO, LEFT, RIGHT, ZERO } + }, + { "Entrance", + { LEFT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, ZERO } + }, + { "Esthetic", + { LEFT, LEFT, PIN, RIGHT, RIGHT, ZERO, LEFT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, LEFT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, ZERO } + }, + { "Explosion", + { RIGHT, RIGHT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, LEFT, ZERO } + }, + { "F-ZeroXCar", + { RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, ZERO, ZERO, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, ZERO } + }, + { "Face", + { ZERO, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, LEFT, PIN, RIGHT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, PIN, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, ZERO } + }, + { "Fantasy", + { LEFT, LEFT, RIGHT, PIN, ZERO, RIGHT, ZERO, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, ZERO, LEFT, ZERO, PIN, LEFT, RIGHT, RIGHT, RIGHT, PIN, ZERO } + }, + { "Fantasy1", + { PIN, ZERO, ZERO, PIN, PIN, ZERO, PIN, RIGHT, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, LEFT, PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO } + }, + { "FaserGun", + { ZERO, ZERO, LEFT, RIGHT, PIN, RIGHT, ZERO, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, ZERO, RIGHT, PIN, RIGHT, RIGHT, ZERO, PIN, ZERO } + }, + { "FelixW", + { ZERO, RIGHT, ZERO, PIN, LEFT, ZERO, LEFT, RIGHT, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, LEFT, RIGHT, ZERO, RIGHT, PIN, ZERO, LEFT, ZERO, ZERO } + }, + { "Flamingo", + { ZERO, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, PIN, LEFT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, LEFT, ZERO, ZERO, ZERO, PIN, ZERO } + }, + { "FlatOnTheTop", + { ZERO, PIN, PIN, ZERO, PIN, RIGHT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO } + }, + { "Fly", + { ZERO, LEFT, PIN, RIGHT, ZERO, PIN, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, ZERO } + }, + { "Fountain", + { LEFT, RIGHT, LEFT, RIGHT, RIGHT, PIN, LEFT, PIN, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, PIN, RIGHT, PIN, ZERO } + }, + { "Frog", + { LEFT, LEFT, RIGHT, RIGHT, LEFT, PIN, LEFT, PIN, RIGHT, PIN, LEFT, ZERO, RIGHT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, RIGHT, LEFT, RIGHT, RIGHT, ZERO } + }, + { "Frog2", + { LEFT, ZERO, LEFT, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, LEFT, RIGHT, PIN, LEFT, LEFT, RIGHT, ZERO, RIGHT, ZERO } + }, + { "Furby", + { PIN, ZERO, LEFT, PIN, RIGHT, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, RIGHT, PIN, LEFT, ZERO, PIN, ZERO, ZERO, PIN, ZERO } + }, + { "Gate", + { ZERO, ZERO, PIN, ZERO, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, LEFT, PIN, LEFT, LEFT, PIN, RIGHT, RIGHT, PIN, RIGHT, ZERO, PIN, PIN, ZERO, ZERO } + }, + { "Ghost", + { LEFT, LEFT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, LEFT, RIGHT, ZERO } + }, + { "Globus", + { RIGHT, LEFT, ZERO, PIN, LEFT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, PIN, ZERO, RIGHT, LEFT, ZERO, ZERO } + }, + { "Grotto", + { PIN, PIN, ZERO, LEFT, RIGHT, LEFT, ZERO, PIN, RIGHT, PIN, LEFT, ZERO, ZERO, ZERO, ZERO, RIGHT, PIN, LEFT, PIN, ZERO, RIGHT, LEFT, RIGHT, ZERO } + }, + { "H", + { PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, PIN, PIN, ZERO, PIN, LEFT, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO } + }, + { "HeadOfDevil", + { PIN, ZERO, RIGHT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, LEFT, PIN, RIGHT, RIGHT, PIN, RIGHT, LEFT, ZERO, ZERO, ZERO } + }, + { "Heart", + { RIGHT, ZERO, ZERO, ZERO, PIN, LEFT, PIN, LEFT, RIGHT, RIGHT, ZERO, PIN, ZERO, LEFT, LEFT, RIGHT, PIN, RIGHT, PIN, ZERO, ZERO, ZERO, LEFT, ZERO } + }, + { "Heart2", + { ZERO, PIN, ZERO, ZERO, LEFT, ZERO, LEFT, ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, RIGHT, ZERO, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO } + }, + { "Hexagon", + { ZERO, ZERO, ZERO, ZERO, LEFT, ZERO, ZERO, RIGHT, ZERO, ZERO, ZERO, ZERO, LEFT, ZERO, ZERO, RIGHT, ZERO, ZERO, ZERO, ZERO, LEFT, ZERO, ZERO, ZERO } + }, + { "HoleInTheMiddle1", + { ZERO, LEFT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, LEFT, RIGHT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, RIGHT, ZERO } + }, + { "HoleInTheMiddle2", + { ZERO, LEFT, RIGHT, ZERO, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, RIGHT, LEFT, ZERO, LEFT, RIGHT, ZERO, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, RIGHT, ZERO } + }, + { "HouseBoat", + { RIGHT, RIGHT, PIN, LEFT, LEFT, LEFT, PIN, RIGHT, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, LEFT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, RIGHT, PIN, ZERO } + }, + { "HouseByHouse", + { LEFT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, RIGHT, ZERO } + }, + { "Infinity", + { LEFT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, ZERO } + }, + { "Integral", + { RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO } + }, + { "Iron", + { ZERO, ZERO, ZERO, ZERO, PIN, RIGHT, ZERO, RIGHT, ZERO, ZERO, LEFT, PIN, RIGHT, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, RIGHT, ZERO, RIGHT, ZERO } + }, + { "just squares", + { RIGHT, RIGHT, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, LEFT, LEFT, PIN, RIGHT, RIGHT, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, LEFT, LEFT, ZERO } + }, + { "Kink", + { ZERO, PIN, PIN, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, PIN, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO } + }, + { "Knot", + { LEFT, LEFT, PIN, LEFT, ZERO, LEFT, RIGHT, LEFT, PIN, LEFT, LEFT, RIGHT, RIGHT, PIN, RIGHT, LEFT, RIGHT, ZERO, RIGHT, PIN, RIGHT, RIGHT, LEFT, ZERO } + }, + { "Leaf", + { ZERO, PIN, PIN, ZERO, ZERO, LEFT, ZERO, LEFT, ZERO, ZERO, PIN, ZERO, ZERO, RIGHT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO } + }, + { "LeftAsRight", + { RIGHT, PIN, LEFT, RIGHT, LEFT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, RIGHT, LEFT, RIGHT, PIN, LEFT, ZERO } + }, + { "Long-necked", + { PIN, ZERO, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, ZERO, PIN, ZERO, LEFT, PIN, LEFT, PIN, RIGHT, PIN, LEFT, ZERO, PIN, PIN, ZERO, ZERO } + }, + { "lunar module", + { PIN, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, RIGHT, LEFT, ZERO, LEFT, ZERO } + }, + { "magnifying glass", + { ZERO, ZERO, PIN, ZERO, LEFT, ZERO, PIN, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, ZERO, ZERO, ZERO } + }, + { "Mask", + { ZERO, ZERO, ZERO, RIGHT, ZERO, RIGHT, LEFT, ZERO, LEFT, PIN, ZERO, PIN, ZERO, ZERO, PIN, ZERO, PIN, RIGHT, ZERO, RIGHT, LEFT, ZERO, LEFT, ZERO } + }, + { "Microscope", + { PIN, PIN, ZERO, ZERO, PIN, ZERO, RIGHT, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, LEFT, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO } + }, + { "Mirror", + { PIN, RIGHT, LEFT, ZERO, PIN, PIN, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, PIN, ZERO, ZERO, LEFT, RIGHT, PIN, RIGHT, ZERO, PIN, PIN, ZERO, ZERO } + }, + { "MissPiggy", + { ZERO, LEFT, LEFT, PIN, RIGHT, ZERO, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, ZERO, LEFT, PIN, RIGHT, RIGHT, ZERO, RIGHT, ZERO } + }, + { "Mole", + { ZERO, RIGHT, ZERO, RIGHT, LEFT, RIGHT, PIN, ZERO, LEFT, PIN, RIGHT, ZERO, PIN, LEFT, RIGHT, LEFT, ZERO, LEFT, ZERO, RIGHT, RIGHT, PIN, LEFT, ZERO } + }, + { "Monk", + { LEFT, ZERO, PIN, PIN, ZERO, LEFT, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO } + }, + { "Mountain", + { ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, LEFT, PIN, LEFT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, ZERO } + }, + { "mountains", + { ZERO, PIN, ZERO, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, ZERO, PIN, ZERO, ZERO } + }, + { "MouseWithoutTail", + { ZERO, PIN, PIN, ZERO, LEFT, ZERO, PIN, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, ZERO } + }, + { "mushroom", + { PIN, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, ZERO, LEFT, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, LEFT, ZERO, PIN, ZERO } + }, + { "necklace", + { ZERO, ZERO, LEFT, ZERO, ZERO, ZERO, LEFT, ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, RIGHT, ZERO, ZERO, ZERO, RIGHT, ZERO, ZERO, ZERO } + }, + { "NestledAgainst", + { LEFT, ZERO, PIN, LEFT, LEFT, RIGHT, RIGHT, PIN, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, LEFT, ZERO } + }, + { "NoClue", + { ZERO, RIGHT, PIN, LEFT, LEFT, LEFT, ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, ZERO, RIGHT, RIGHT, RIGHT, PIN, LEFT, ZERO, ZERO } + }, + { "Noname", + { LEFT, PIN, RIGHT, PIN, RIGHT, ZERO, PIN, ZERO, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, RIGHT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, LEFT, ZERO } + }, + { "Obelisk", + { PIN, ZERO, ZERO, ZERO, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, ZERO, ZERO, ZERO, ZERO } + }, + { "Ostrich", + { ZERO, ZERO, PIN, PIN, ZERO, LEFT, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, PIN, ZERO } + }, + { "Ostrich2", + { PIN, PIN, ZERO, PIN, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, PIN, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO } + }, + { "pair of glasses", + { ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO, LEFT, ZERO, PIN, ZERO, RIGHT, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO } + }, + { "Parrot", + { ZERO, ZERO, ZERO, ZERO, RIGHT, RIGHT, ZERO, LEFT, PIN, RIGHT, ZERO, RIGHT, ZERO, RIGHT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, LEFT, ZERO, PIN, ZERO } + }, + { "Penis", + { PIN, PIN, RIGHT, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, LEFT, PIN, PIN, ZERO } + }, + { "PictureComingSoon", + { LEFT, LEFT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, RIGHT, PIN, RIGHT, LEFT, ZERO, RIGHT, RIGHT, ZERO } + }, + { "Pitti", + { LEFT, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, RIGHT, ZERO } + }, + { "Plait", + { LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, LEFT, ZERO } + }, + { "Platform", + { RIGHT, PIN, ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, PIN, PIN, ZERO, PIN, LEFT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO } + }, + { "PodRacer", + { ZERO, PIN, ZERO, PIN, RIGHT, PIN, ZERO, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, PIN, PIN, ZERO, ZERO, LEFT, ZERO, PIN, LEFT, ZERO } + }, +#if 0 + { "Pokemon", + { LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, ZERO } + }, +#endif + { "Prawn", + { RIGHT, PIN, ZERO, PIN, RIGHT, ZERO, PIN, PIN, ZERO, ZERO, LEFT, PIN, RIGHT, ZERO, ZERO, PIN, PIN, ZERO, LEFT, PIN, ZERO, PIN, LEFT, ZERO } + }, + { "Propeller", + { ZERO, ZERO, ZERO, RIGHT, ZERO, LEFT, RIGHT, LEFT, ZERO, ZERO, ZERO, RIGHT, ZERO, LEFT, RIGHT, LEFT, ZERO, ZERO, ZERO, RIGHT, ZERO, LEFT, RIGHT, ZERO } + }, + { "Pyramid", + { ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, PIN, RIGHT, ZERO, PIN, RIGHT, LEFT, LEFT, LEFT, PIN, RIGHT, RIGHT, RIGHT, LEFT, ZERO } + }, + { "QuarterbackTiltedAndReadyToHut", + { PIN, ZERO, RIGHT, RIGHT, LEFT, RIGHT, PIN, RIGHT, LEFT, RIGHT, ZERO, PIN, ZERO, LEFT, RIGHT, LEFT, PIN, LEFT, RIGHT, LEFT, LEFT, ZERO, PIN, ZERO } + }, + { "Ra", + { PIN, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO } + }, + { "Rattlesnake", + { LEFT, ZERO, LEFT, ZERO, LEFT, ZERO, LEFT, LEFT, ZERO, LEFT, ZERO, LEFT, ZERO, LEFT, RIGHT, ZERO, PIN, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, ZERO } + }, + { "Revelation", + { ZERO, ZERO, ZERO, PIN, ZERO, ZERO, PIN, RIGHT, LEFT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, LEFT, PIN, ZERO, ZERO, PIN, ZERO } + }, + { "Revolution1", + { LEFT, LEFT, PIN, RIGHT, ZERO, PIN, ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, ZERO, PIN, ZERO, LEFT, PIN, RIGHT, RIGHT, ZERO } + }, + { "Ribbon", + { RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO, PIN, PIN, ZERO, PIN, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO } + }, + { "Rocket", + { RIGHT, ZERO, LEFT, PIN, RIGHT, ZERO, RIGHT, ZERO, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, ZERO, LEFT, ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, ZERO } + }, + { "Roofed", + { ZERO, LEFT, PIN, RIGHT, ZERO, PIN, LEFT, ZERO, PIN, ZERO, RIGHT, PIN, ZERO, LEFT, PIN, RIGHT, ZERO, PIN, LEFT, ZERO, PIN, ZERO, RIGHT, ZERO } + }, + { "Roofs", + { PIN, PIN, RIGHT, ZERO, LEFT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, RIGHT, ZERO, LEFT, PIN, PIN, ZERO } + }, + { "RowHouses", + { RIGHT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, LEFT, ZERO } + }, + { "Sculpture", + { RIGHT, LEFT, PIN, ZERO, ZERO, ZERO, LEFT, RIGHT, LEFT, PIN, ZERO, ZERO, PIN, LEFT, RIGHT, LEFT, ZERO, ZERO, ZERO, PIN, LEFT, RIGHT, LEFT, ZERO } + }, + { "Seal", + { LEFT, LEFT, LEFT, PIN, RIGHT, RIGHT, RIGHT, ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, PIN, PIN, ZERO, LEFT, ZERO } + }, + { "Seal2", + { RIGHT, PIN, ZERO, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, RIGHT, PIN, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, ZERO } + }, + { "Sheep", + { RIGHT, LEFT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, LEFT, LEFT, LEFT, RIGHT, LEFT, ZERO } + }, + { "Shelter", + { LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, ZERO, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, RIGHT, ZERO } + }, + { "Ship", + { PIN, RIGHT, LEFT, LEFT, LEFT, LEFT, PIN, RIGHT, RIGHT, RIGHT, RIGHT, LEFT, ZERO, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, LEFT, ZERO, PIN, PIN, ZERO } + }, + { "Shpongle", + { LEFT, RIGHT, ZERO, RIGHT, LEFT, RIGHT, ZERO, RIGHT, LEFT, RIGHT, ZERO, RIGHT, LEFT, RIGHT, ZERO, RIGHT, LEFT, RIGHT, ZERO, RIGHT, LEFT, RIGHT, ZERO, ZERO } + }, + { "Slide", + { LEFT, RIGHT, LEFT, RIGHT, ZERO, LEFT, RIGHT, LEFT, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, RIGHT, LEFT, ZERO } + }, + { "SmallShip", + { ZERO, LEFT, RIGHT, ZERO, RIGHT, LEFT, ZERO, LEFT, RIGHT, ZERO, LEFT, RIGHT, ZERO, LEFT, RIGHT, ZERO, RIGHT, LEFT, ZERO, LEFT, RIGHT, ZERO, LEFT, ZERO } + }, + { "SnakeReadyToStrike", + { LEFT, ZERO, LEFT, ZERO, LEFT, ZERO, LEFT, RIGHT, ZERO, RIGHT, ZERO, RIGHT, ZERO, LEFT, ZERO, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO, LEFT, ZERO } + }, + { "Snakes14", + { RIGHT, RIGHT, PIN, ZERO, RIGHT, LEFT, RIGHT, ZERO, ZERO, ZERO, RIGHT, PIN, LEFT, PIN, ZERO, PIN, LEFT, PIN, RIGHT, ZERO, ZERO, LEFT, RIGHT, ZERO } + }, + { "Snakes15", + { ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, PIN, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, PIN, LEFT, PIN, RIGHT, ZERO, ZERO, ZERO, PIN, RIGHT, ZERO } + }, + { "Snakes18", + { PIN, PIN, LEFT, PIN, LEFT, PIN, RIGHT, ZERO, RIGHT, PIN, RIGHT, ZERO, RIGHT, PIN, LEFT, PIN, RIGHT, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO } + }, + { "Snowflake", + { LEFT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, RIGHT, ZERO } + }, + { "Snowman", + { ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO } + }, + { "Source", + { PIN, RIGHT, ZERO, PIN, ZERO, LEFT, PIN, RIGHT, PIN, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, PIN, ZERO } + }, + { "Spaceship", + { PIN, PIN, RIGHT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, PIN, RIGHT, PIN, PIN, ZERO } + }, + { "Spaceship2", + { PIN, PIN, LEFT, PIN, LEFT, PIN, RIGHT, ZERO, PIN, PIN, ZERO, LEFT, PIN, RIGHT, ZERO, PIN, ZERO, LEFT, PIN, LEFT, LEFT, PIN, PIN, ZERO } + }, + { "Speedboat", + { LEFT, ZERO, ZERO, LEFT, PIN, RIGHT, ZERO, ZERO, LEFT, ZERO, ZERO, PIN, ZERO, ZERO, RIGHT, ZERO, ZERO, LEFT, PIN, RIGHT, ZERO, ZERO, RIGHT, ZERO } + }, + { "Speedboat2", + { PIN, RIGHT, LEFT, LEFT, RIGHT, RIGHT, RIGHT, ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, LEFT, LEFT, RIGHT, RIGHT, LEFT, PIN, ZERO, RIGHT, PIN, LEFT, ZERO } + }, + { "Spider", + { RIGHT, RIGHT, ZERO, ZERO, LEFT, RIGHT, LEFT, PIN, ZERO, LEFT, ZERO, PIN, PIN, ZERO, RIGHT, ZERO, PIN, RIGHT, LEFT, RIGHT, ZERO, ZERO, LEFT, ZERO } + }, + { "Spitzbergen", + { PIN, LEFT, ZERO, RIGHT, RIGHT, LEFT, PIN, ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, ZERO, PIN, RIGHT, LEFT, LEFT, ZERO, ZERO } + }, + { "Square", + { ZERO, ZERO, LEFT, LEFT, PIN, RIGHT, RIGHT, ZERO, ZERO, LEFT, LEFT, PIN, RIGHT, RIGHT, ZERO, ZERO, LEFT, LEFT, PIN, RIGHT, RIGHT, ZERO, ZERO, ZERO } + }, + { "SquareHole", + { PIN, ZERO, PIN, ZERO, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, PIN, ZERO } + }, + { "Stage", + { RIGHT, ZERO, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, LEFT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, ZERO, ZERO } + }, + { "Stairs", + { ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, ZERO } + }, + { "Stairs2", + { ZERO, PIN, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, ZERO } + }, + { "Straight", + { ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO } + }, + { "Swan", + { ZERO, PIN, ZERO, PIN, LEFT, LEFT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, PIN, LEFT, PIN, LEFT, RIGHT, ZERO } + }, + { "Swan2", + { PIN, ZERO, PIN, RIGHT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, RIGHT, PIN, ZERO, ZERO, ZERO, ZERO, ZERO, PIN, PIN, ZERO } + }, + { "Swan3", + { PIN, PIN, ZERO, ZERO, ZERO, RIGHT, ZERO, RIGHT, ZERO, ZERO, LEFT, PIN, RIGHT, ZERO, ZERO, RIGHT, PIN, LEFT, ZERO, ZERO, RIGHT, ZERO, RIGHT, ZERO } + }, + { "Symbol", + { RIGHT, RIGHT, PIN, ZERO, PIN, PIN, ZERO, PIN, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, PIN, ZERO, PIN, PIN, ZERO, PIN, LEFT, LEFT, RIGHT, ZERO } + }, + { "Symmetry", + { RIGHT, ZERO, LEFT, RIGHT, LEFT, ZERO, LEFT, RIGHT, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, LEFT, RIGHT, ZERO, RIGHT, LEFT, RIGHT, ZERO, LEFT, ZERO } + }, + { "Symmetry2", + { ZERO, PIN, LEFT, LEFT, PIN, ZERO, ZERO, LEFT, PIN, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, PIN, LEFT, ZERO } + }, + { "TableFireworks", + { ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, RIGHT, PIN, RIGHT, LEFT, ZERO, RIGHT, PIN, ZERO } + }, + { "Tapering", + { ZERO, ZERO, RIGHT, LEFT, PIN, LEFT, ZERO, PIN, PIN, ZERO, LEFT, PIN, RIGHT, ZERO, PIN, PIN, ZERO, RIGHT, PIN, RIGHT, LEFT, ZERO, ZERO, ZERO } + }, + { "TaperingTurned", + { ZERO, ZERO, RIGHT, LEFT, PIN, LEFT, ZERO, PIN, PIN, ZERO, LEFT, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, RIGHT, PIN, RIGHT, LEFT, ZERO, ZERO, ZERO } + }, + { "TeaLightStick", + { RIGHT, ZERO, PIN, PIN, ZERO, LEFT, RIGHT, PIN, LEFT, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, RIGHT, PIN, LEFT, LEFT, RIGHT, RIGHT, PIN, ZERO } + }, + { "thighmaster", + { RIGHT, ZERO, ZERO, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO, RIGHT, LEFT, ZERO, ZERO, RIGHT, LEFT, ZERO, ZERO, ZERO } + }, + { "Terraces", + { RIGHT, LEFT, ZERO, RIGHT, LEFT, PIN, LEFT, LEFT, PIN, LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT, LEFT, RIGHT, PIN, RIGHT, RIGHT, PIN, RIGHT, LEFT, ZERO } + }, + { "Terrier", + { PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, ZERO } + }, + { "Three-Legged", + { RIGHT, ZERO, LEFT, RIGHT, ZERO, LEFT, PIN, RIGHT, ZERO, RIGHT, ZERO, PIN, ZERO, LEFT, ZERO, LEFT, PIN, RIGHT, ZERO, LEFT, RIGHT, ZERO, LEFT, ZERO } + }, + { "ThreePeaks", + { RIGHT, ZERO, ZERO, RIGHT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, LEFT, PIN, RIGHT, PIN, LEFT, ZERO, ZERO, LEFT, ZERO } + }, + { "ToTheFront", + { ZERO, PIN, RIGHT, LEFT, LEFT, LEFT, PIN, RIGHT, LEFT, ZERO, PIN, PIN, ZERO, LEFT, LEFT, PIN, ZERO, LEFT, RIGHT, ZERO, PIN, ZERO, LEFT, ZERO } + }, + { "Top", + { PIN, LEFT, LEFT, PIN, LEFT, ZERO, ZERO, RIGHT, LEFT, PIN, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, PIN, RIGHT, PIN, RIGHT, RIGHT, PIN, ZERO, ZERO } + }, + { "Transport", + { PIN, ZERO, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, ZERO, ZERO, ZERO } + }, + { "Triangle", + { ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, RIGHT, LEFT, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, RIGHT, LEFT, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO, RIGHT, ZERO } + }, + { "Tripple", + { PIN, ZERO, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, PIN, ZERO, PIN, LEFT, PIN, RIGHT, PIN, ZERO, PIN, LEFT, PIN, LEFT, PIN, RIGHT, PIN, ZERO } + }, +#if 0 + { "Turtle", + { RIGHT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, LEFT, PIN, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, ZERO, LEFT, RIGHT, ZERO, ZERO } + }, +#endif + { "Twins", + { ZERO, PIN, ZERO, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, PIN, ZERO, ZERO, PIN, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, ZERO, PIN, ZERO, ZERO, ZERO } + }, + { "TwoSlants", + { ZERO, PIN, ZERO, ZERO, PIN, PIN, ZERO, PIN, ZERO, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, PIN, RIGHT, PIN, LEFT, ZERO, ZERO, RIGHT, PIN, ZERO } + }, + { "TwoWings", + { PIN, LEFT, ZERO, RIGHT, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, PIN, PIN, ZERO, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, LEFT, ZERO, ZERO } + }, + { "UFO", + { LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, LEFT, PIN, LEFT, LEFT, LEFT, RIGHT, LEFT, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO } + }, + { "USS Enterprise", + { LEFT, PIN, RIGHT, PIN, RIGHT, LEFT, ZERO, PIN, PIN, ZERO, RIGHT, LEFT, ZERO, PIN, PIN, ZERO, RIGHT, LEFT, PIN, LEFT, PIN, RIGHT, ZERO, ZERO } + }, + { "UpAndDown", + { ZERO, PIN, ZERO, PIN, ZERO, PIN, LEFT, PIN, RIGHT, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, PIN, LEFT, PIN, RIGHT, PIN, ZERO, ZERO } + }, + { "Upright", + { ZERO, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, PIN, ZERO, ZERO, LEFT, PIN, RIGHT, ZERO, ZERO, PIN, RIGHT, RIGHT, LEFT, RIGHT, LEFT, LEFT, ZERO, ZERO } + }, + { "Upside-down", + { PIN, ZERO, ZERO, ZERO, PIN, PIN, ZERO, RIGHT, RIGHT, LEFT, LEFT, PIN, RIGHT, RIGHT, LEFT, LEFT, ZERO, PIN, PIN, ZERO, ZERO, ZERO, PIN, ZERO } + }, + { "Valley", + { ZERO, RIGHT, PIN, LEFT, PIN, RIGHT, PIN, RIGHT, LEFT, RIGHT, ZERO, PIN, ZERO, LEFT, RIGHT, LEFT, PIN, LEFT, PIN, RIGHT, PIN, LEFT, ZERO, ZERO } + }, + { "Viaduct", + { PIN, RIGHT, PIN, LEFT, PIN, ZERO, ZERO, PIN, RIGHT, ZERO, RIGHT, RIGHT, ZERO, RIGHT, PIN, ZERO, ZERO, PIN, LEFT, PIN, RIGHT, PIN, ZERO, ZERO } + }, + { "View", + { ZERO, RIGHT, PIN, LEFT, PIN, RIGHT, ZERO, ZERO, RIGHT, PIN, LEFT, LEFT, RIGHT, RIGHT, PIN, LEFT, ZERO, ZERO, LEFT, PIN, RIGHT, PIN, LEFT, ZERO } + }, + { "Waterfall", + { LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, PIN, LEFT, ZERO, RIGHT, ZERO } + }, + { "windwheel", + { PIN, RIGHT, RIGHT, PIN, ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, ZERO, ZERO } + }, + { "Window", + { PIN, ZERO, PIN, PIN, ZERO, ZERO, PIN, ZERO, PIN, ZERO, PIN, ZERO, ZERO, PIN, ZERO, PIN, ZERO, PIN, PIN, ZERO, ZERO, ZERO, ZERO, ZERO } + }, + { "WindowToTheWorld", + { PIN, LEFT, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO, RIGHT, PIN, LEFT, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO, PIN, ZERO, ZERO } + }, + { "Windshield", + { PIN, PIN, ZERO, RIGHT, PIN, LEFT, LEFT, PIN, RIGHT, ZERO, PIN, ZERO, LEFT, PIN, RIGHT, RIGHT, PIN, LEFT, ZERO, PIN, PIN, ZERO, PIN, ZERO } + }, + { "WingNut", + { ZERO, ZERO, ZERO, ZERO, PIN, RIGHT, RIGHT, RIGHT, PIN, RIGHT, LEFT, PIN, LEFT, RIGHT, PIN, RIGHT, RIGHT, RIGHT, PIN, ZERO, ZERO, ZERO, ZERO, ZERO } + }, + { "Wings2", + { RIGHT, ZERO, PIN, ZERO, LEFT, PIN, RIGHT, PIN, RIGHT, LEFT, RIGHT, RIGHT, LEFT, LEFT, RIGHT, LEFT, PIN, LEFT, PIN, RIGHT, ZERO, PIN, ZERO, ZERO } + }, + { "WithoutName", + { PIN, RIGHT, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, ZERO, PIN, RIGHT, PIN, LEFT, PIN, ZERO, PIN, RIGHT, RIGHT, PIN, LEFT, LEFT, PIN, ZERO } + }, + { "Wolf", + { ZERO, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, PIN, ZERO, PIN, PIN, ZERO, PIN, ZERO, ZERO, ZERO, PIN, PIN, ZERO, ZERO, ZERO, PIN, ZERO } + }, + { "X", + { LEFT, ZERO, ZERO, PIN, LEFT, RIGHT, RIGHT, PIN, LEFT, RIGHT, ZERO, PIN, PIN, ZERO, LEFT, RIGHT, PIN, LEFT, LEFT, RIGHT, PIN, ZERO, ZERO, ZERO } + }, +}; + +static size_t models = sizeof(model) / sizeof(struct model_s); + +#define VOFFSET 0.045 + +#define X_MASK 1 +#define Y_MASK 2 +#define Z_MASK 4 + +/* the connecting string that holds the snake together */ +#define MAGICAL_RED_STRING 0 + +#define GETSCALAR(vec,mask) ((vec)==(mask) ? 1 : ((vec)==-(mask) ? -1 : 0 )) + +#ifndef MAX +# define MAX(x, y) ((x) > (y) ? (x) : (y)) +#endif +#ifndef MIN +# define MIN(x, y) ((x) < (y) ? (x) : (y)) +#endif + +#define RAND(n) ((random() & 0x7fffffff) % ((long) (n))) +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +/* the triangular prism what makes up the basic unit */ +static const float solid_prism_v[][3] = { + /* first corner, bottom left front */ + { VOFFSET, VOFFSET, 1.0 }, + { VOFFSET, 0.00, 1.0 - VOFFSET }, + { 0.00, VOFFSET, 1.0 - VOFFSET }, + /* second corner, rear */ + { VOFFSET, VOFFSET, 0.00 }, + { VOFFSET, 0.00, VOFFSET }, + { 0.00, VOFFSET, VOFFSET }, + /* third, right front */ + { 1.0 - VOFFSET / M_SQRT1_2, VOFFSET, 1.0 }, + { 1.0 - VOFFSET / M_SQRT1_2, 0.0, 1.0 - VOFFSET }, + { 1.0 - VOFFSET * M_SQRT1_2, VOFFSET, 1.0 - VOFFSET }, + /* fourth, right rear */ + { 1.0 - VOFFSET / M_SQRT1_2, VOFFSET, 0.0 }, + { 1.0 - VOFFSET / M_SQRT1_2, 0.0, VOFFSET }, + { 1.0 - VOFFSET * M_SQRT1_2, VOFFSET, VOFFSET }, + /* fifth, upper front */ + { VOFFSET, 1.0 - VOFFSET / M_SQRT1_2, 1.0 }, + { VOFFSET / M_SQRT1_2, 1.0 - VOFFSET * M_SQRT1_2, 1.0 - VOFFSET }, + { 0.0, 1.0 - VOFFSET / M_SQRT1_2, 1.0 - VOFFSET}, + /* sixth, upper rear */ + { VOFFSET, 1.0 - VOFFSET / M_SQRT1_2, 0.0 }, + { VOFFSET / M_SQRT1_2, 1.0 - VOFFSET * M_SQRT1_2, VOFFSET }, + { 0.0, 1.0 - VOFFSET / M_SQRT1_2, VOFFSET }}; + +static const float solid_prism_n[][3] = {/* corners */ + { -VOFFSET, -VOFFSET, VOFFSET }, + { VOFFSET, -VOFFSET, VOFFSET }, + { -VOFFSET, VOFFSET, VOFFSET }, + { -VOFFSET, -VOFFSET, -VOFFSET }, + { VOFFSET, -VOFFSET, -VOFFSET }, + { -VOFFSET, VOFFSET, -VOFFSET }, + /* edges */ + { -VOFFSET, 0.0, VOFFSET }, + { 0.0, -VOFFSET, VOFFSET }, + { VOFFSET, VOFFSET, VOFFSET }, + { -VOFFSET, 0.0, -VOFFSET }, + { 0.0, -VOFFSET, -VOFFSET }, + { VOFFSET, VOFFSET, -VOFFSET }, + { -VOFFSET, -VOFFSET, 0.0 }, + { VOFFSET, -VOFFSET, 0.0 }, + { -VOFFSET, VOFFSET, 0.0 }, + /* faces */ + { 0.0, 0.0, 1.0 }, + { 0.0, -1.0, 0.0 }, + { M_SQRT1_2, M_SQRT1_2, 0.0 }, + { -1.0, 0.0, 0.0 }, + { 0.0, 0.0, -1.0 }}; + +static const float wire_prism_v[][3] = {{ 0.0, 0.0, 1.0 }, + { 1.0, 0.0, 1.0 }, + { 0.0, 1.0, 1.0 }, + { 0.0, 0.0, 0.0 }, + { 1.0, 0.0, 0.0 }, + { 0.0, 1.0, 0.0 }}; + +/* +static const float wire_prism_n[][3] = {{ 0.0, 0.0, 1.0}, + { 0.0,-1.0, 0.0}, + { M_SQRT1_2, M_SQRT1_2, 0.0}, + {-1.0, 0.0, 0.0}, + { 0.0, 0.0,-1.0}}; +*/ + +static struct glsnake_cfg * glc = NULL; +#ifdef HAVE_GLUT +# define bp glc +#endif + +typedef float (*morphFunc)(long); + +#ifdef HAVE_GLUT +/* forward definitions for GLUT functions */ +static void calc_rotation(); +static inline void ui_mousedrag(); +#endif + +static const GLfloat white_light[] = { 1.0, 1.0, 1.0, 1.0 }; +static const GLfloat lmodel_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; +static const GLfloat mat_specular[] = { 0.1, 0.1, 0.1, 1.0 }; +static const GLfloat mat_shininess[] = { 20.0 }; + +static void gl_init( +#ifndef HAVE_GLUT + ModeInfo * mi +#endif + ) +{ + float light_pos[][3] = {{0.0, 10.0, 20.0}, {0.0, 20.0, -1.0}}; + float light_dir[][3] = {{0.0, -10.0,-20.0}, {0.0,-20.0, 1.0}}; + + glEnable(GL_DEPTH_TEST); + glShadeModel(GL_SMOOTH); + glCullFace(GL_BACK); + /*glEnable(GL_CULL_FACE);*/ + glEnable(GL_NORMALIZE); + if (transparent) { + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + } + + if (!wireframe) { + /*glColor4f(1.0, 1.0, 1.0, 1.0);*/ + glLightfv(GL_LIGHT0, GL_POSITION, light_pos[0]); + glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, light_dir[0]); + glLightfv(GL_LIGHT0, GL_DIFFUSE, white_light); + /*glLightfv(GL_LIGHT0, GL_SPECULAR, white_light);*/ +#if 1 + glLightfv(GL_LIGHT1, GL_POSITION, light_pos[1]); + glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, light_dir[1]); + glLightfv(GL_LIGHT1, GL_DIFFUSE, white_light); + glLightfv(GL_LIGHT1, GL_SPECULAR, white_light); +#endif + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + /*glEnable(GL_COLOR_MATERIAL);*/ + } +} + +static void gettime(snaketime *t) +{ +#ifdef HAVE_GETTIMEOFDAY +#ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(t, &tzp); +#else /* !GETTIMEOFDAY_TWO_ARGS */ + gettimeofday(t); +#endif /* !GETTIMEOFDAY_TWO_ARGS */ +#else /* !HAVE_GETTIMEOFDAY */ +#ifdef HAVE_FTIME + ftime(t); +#endif /* HAVE_FTIME */ +#endif /* !HAVE_GETTIMEOFDAY */ +} + + +ENTRYPOINT void glsnake_reshape( +#ifndef HAVE_GLUT + ModeInfo * mi, +#endif + int w, int h); + +static void start_morph(struct glsnake_cfg *, + unsigned int model_index, int immediate); + +/* wot initialises it */ +ENTRYPOINT void glsnake_init( +#ifndef HAVE_GLUT +ModeInfo * mi +#endif +) +{ +#ifndef HAVE_GLUT + struct glsnake_cfg * bp; + + /* set up the conf struct and glx contexts */ + MI_INIT(mi, glc); + bp = &glc[MI_SCREEN(mi)]; + + if ((bp->glx_context = init_GL(mi)) != NULL) { + gl_init(mi); + glsnake_reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } +#else + gl_init(); +#endif + + /* initialise conf struct */ + memset(&bp->node, 0, sizeof(float) * NODE_COUNT); + + bp->selected = 11; + bp->is_cyclic = 0; + bp->is_legal = 1; + bp->last_turn = -1; + bp->morphing = 0; + bp->paused = 0; + bp->new_morph = 0; + + gettime(&bp->last_iteration); + memcpy(&bp->last_morph, &bp->last_iteration, sizeof(bp->last_morph)); + + bp->prev_colour = bp->next_colour = COLOUR_ACYCLIC; + bp->next_model = RAND(models); + bp->prev_model = START_MODEL; + start_morph(bp, bp->prev_model, 1); + + /* set up a font for the labels */ +#ifndef HAVE_GLUT + if (titles) + bp->font_data = load_texture_font (mi->dpy, "labelfont"); +#endif + + /* build a solid display list */ + bp->node_solid = glGenLists(1); + glNewList(bp->node_solid, GL_COMPILE); + /* corners */ + glBegin(GL_TRIANGLES); + glNormal3fv(solid_prism_n[0]); + glVertex3fv(solid_prism_v[0]); + glVertex3fv(solid_prism_v[2]); + glVertex3fv(solid_prism_v[1]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[1]); + glVertex3fv(solid_prism_v[6]); + glVertex3fv(solid_prism_v[7]); + glVertex3fv(solid_prism_v[8]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[2]); + glVertex3fv(solid_prism_v[12]); + glVertex3fv(solid_prism_v[13]); + glVertex3fv(solid_prism_v[14]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[3]); + glVertex3fv(solid_prism_v[3]); + glVertex3fv(solid_prism_v[4]); + glVertex3fv(solid_prism_v[5]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[4]); + glVertex3fv(solid_prism_v[9]); + glVertex3fv(solid_prism_v[11]); + glVertex3fv(solid_prism_v[10]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[5]); + glVertex3fv(solid_prism_v[16]); + glVertex3fv(solid_prism_v[15]); + glVertex3fv(solid_prism_v[17]); + bp->node_polys++; + glEnd(); + + /* edges */ + glBegin(GL_QUADS); + glNormal3fv(solid_prism_n[6]); + glVertex3fv(solid_prism_v[0]); + glVertex3fv(solid_prism_v[12]); + glVertex3fv(solid_prism_v[14]); + glVertex3fv(solid_prism_v[2]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[7]); + glVertex3fv(solid_prism_v[0]); + glVertex3fv(solid_prism_v[1]); + glVertex3fv(solid_prism_v[7]); + glVertex3fv(solid_prism_v[6]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[8]); + glVertex3fv(solid_prism_v[6]); + glVertex3fv(solid_prism_v[8]); + glVertex3fv(solid_prism_v[13]); + glVertex3fv(solid_prism_v[12]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[9]); + glVertex3fv(solid_prism_v[3]); + glVertex3fv(solid_prism_v[5]); + glVertex3fv(solid_prism_v[17]); + glVertex3fv(solid_prism_v[15]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[10]); + glVertex3fv(solid_prism_v[3]); + glVertex3fv(solid_prism_v[9]); + glVertex3fv(solid_prism_v[10]); + glVertex3fv(solid_prism_v[4]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[11]); + glVertex3fv(solid_prism_v[15]); + glVertex3fv(solid_prism_v[16]); + glVertex3fv(solid_prism_v[11]); + glVertex3fv(solid_prism_v[9]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[12]); + glVertex3fv(solid_prism_v[1]); + glVertex3fv(solid_prism_v[2]); + glVertex3fv(solid_prism_v[5]); + glVertex3fv(solid_prism_v[4]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[13]); + glVertex3fv(solid_prism_v[8]); + glVertex3fv(solid_prism_v[7]); + glVertex3fv(solid_prism_v[10]); + glVertex3fv(solid_prism_v[11]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[14]); + glVertex3fv(solid_prism_v[13]); + glVertex3fv(solid_prism_v[16]); + glVertex3fv(solid_prism_v[17]); + glVertex3fv(solid_prism_v[14]); + bp->node_polys++; + glEnd(); + + /* faces */ + glBegin(GL_TRIANGLES); + glNormal3fv(solid_prism_n[15]); + glVertex3fv(solid_prism_v[0]); + glVertex3fv(solid_prism_v[6]); + glVertex3fv(solid_prism_v[12]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[19]); + glVertex3fv(solid_prism_v[3]); + glVertex3fv(solid_prism_v[15]); + glVertex3fv(solid_prism_v[9]); + bp->node_polys++; + glEnd(); + + glBegin(GL_QUADS); + glNormal3fv(solid_prism_n[16]); + glVertex3fv(solid_prism_v[1]); + glVertex3fv(solid_prism_v[4]); + glVertex3fv(solid_prism_v[10]); + glVertex3fv(solid_prism_v[7]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[17]); + glVertex3fv(solid_prism_v[8]); + glVertex3fv(solid_prism_v[11]); + glVertex3fv(solid_prism_v[16]); + glVertex3fv(solid_prism_v[13]); + bp->node_polys++; + + glNormal3fv(solid_prism_n[18]); + glVertex3fv(solid_prism_v[2]); + glVertex3fv(solid_prism_v[14]); + glVertex3fv(solid_prism_v[17]); + glVertex3fv(solid_prism_v[5]); + bp->node_polys++; + glEnd(); + glEndList(); + + /* build wire display list */ + bp->node_wire = glGenLists(1); + glNewList(bp->node_wire, GL_COMPILE); + glBegin(GL_LINE_STRIP); + glVertex3fv(wire_prism_v[0]); + glVertex3fv(wire_prism_v[1]); + bp->node_polys++; + glVertex3fv(wire_prism_v[2]); + glVertex3fv(wire_prism_v[0]); + bp->node_polys++; + glVertex3fv(wire_prism_v[3]); + glVertex3fv(wire_prism_v[4]); + bp->node_polys++; + glVertex3fv(wire_prism_v[5]); + glVertex3fv(wire_prism_v[3]); + bp->node_polys++; + glEnd(); + glBegin(GL_LINES); + glVertex3fv(wire_prism_v[1]); + glVertex3fv(wire_prism_v[4]); + bp->node_polys++; + glVertex3fv(wire_prism_v[2]); + glVertex3fv(wire_prism_v[5]); + bp->node_polys++; + glEnd(); + glEndList(); + +#ifdef HAVE_GLUT + /* initialise the rotation */ + calc_rotation(); +#endif +} + +static void draw_title( +#ifndef HAVE_GLUT + ModeInfo * mi +#endif + ) +{ +#ifndef HAVE_GLUT + struct glsnake_cfg * bp = &glc[MI_SCREEN(mi)]; +#endif + + /* draw some text */ + +/* glPushAttrib((GLbitfield) GL_TRANSFORM_BIT | GL_ENABLE_BIT);*/ + glDisable(GL_LIGHTING); + glDisable(GL_DEPTH_TEST); + if (transparent) { + glDisable(GL_BLEND); + } + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); +#ifdef HAVE_GLUT + glOrtho((GLdouble) 0., (GLdouble) bp->width, (GLdouble) 0., (GLdouble) bp->height, -1, 1); +#else + glOrtho((GLdouble) 0., (GLdouble) mi->xgwa.width, (GLdouble) 0., (GLdouble) mi->xgwa.height, -1, 1); +#endif + + glColor4f(1.0, 1.0, 1.0, 1.0); + { + char interactstr[] = "interactive"; + const char * s; +#ifdef HAVE_GLUT + int w; +#endif + + if (interactive) + s = interactstr; + else + s = model[bp->next_model].name; + +#ifdef HAVE_GLUT + { + unsigned int i = 0; + + w = glutBitmapLength(GLUT_BITMAP_HELVETICA_12, (const unsigned char *) s); + glRasterPos2f((GLfloat) (bp->width - w - 3), 4.0); + while (s[i] != '\0') + glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, s[i++]); + } +#else + print_texture_label (mi->dpy, bp->font_data, + mi->xgwa.width, mi->xgwa.height, + 1, s); +#endif + } + glPopMatrix(); + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + +/* glPopAttrib();*/ +} + +/* apply the matrix to the origin and stick it in vec */ +static void matmult_origin(float rotmat[16], float vec[4]) +{ +#if 1 + vec[0] = 0.5 * rotmat[0] + 0.5 * rotmat[4] + 0.5 * rotmat [8] + 1 * rotmat[12]; + vec[1] = 0.5 * rotmat[1] + 0.5 * rotmat[5] + 0.5 * rotmat [9] + 1 * rotmat[13]; + vec[2] = 0.5 * rotmat[2] + 0.5 * rotmat[6] + 0.5 * rotmat[10] + 1 * rotmat[14]; + vec[3] = 0.5 * rotmat[3] + 0.5 * rotmat[7] + 0.5 * rotmat[11] + 1 * rotmat[15]; +#else + vec[0] = 0 * rotmat [0] + 0 * rotmat [1] + 0 * rotmat [2] + 1 * rotmat [3]; + vec[1] = 0 * rotmat [4] + 0 * rotmat [5] + 0 * rotmat [6] + 1 * rotmat [7]; + vec[2] = 0 * rotmat [8] + 0 * rotmat [9] + 0 * rotmat[10] + 1 * rotmat[11]; + vec[3] = 0 * rotmat[12] + 0 * rotmat[13] + 0 * rotmat[14] + 1 * rotmat[15]; +#endif + vec[0] /= vec[3]; + vec[1] /= vec[3]; + vec[2] /= vec[3]; + vec[3] = 1.0; +} + +/* wot gets called when the winder is resized */ +ENTRYPOINT void glsnake_reshape( +#ifndef HAVE_GLUT + ModeInfo * mi, +#endif + int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + /* jwz: 0.05 was too close (left black rectangles) */ + gluPerspective(zoom, 1/h, 1.0, 100.0); + gluLookAt(0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); + glMatrixMode(GL_MODELVIEW); + /*gluLookAt(0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);*/ + glLoadIdentity(); +#ifdef HAVE_GLUT + bp->width = width; + bp->height = height; +#endif +} + +/* Returns the new dst_dir for the given src_dir and dst_dir */ +static int cross_product(int src_dir, int dst_dir) +{ + return X_MASK*(GETSCALAR(src_dir,Y_MASK) * GETSCALAR(dst_dir,Z_MASK) - + GETSCALAR(src_dir,Z_MASK) * GETSCALAR(dst_dir,Y_MASK))+ + Y_MASK*(GETSCALAR(src_dir,Z_MASK) * GETSCALAR(dst_dir,X_MASK) - + GETSCALAR(src_dir,X_MASK) * GETSCALAR(dst_dir,Z_MASK))+ + Z_MASK*(GETSCALAR(src_dir,X_MASK) * GETSCALAR(dst_dir,Y_MASK) - + GETSCALAR(src_dir,Y_MASK) * GETSCALAR(dst_dir,X_MASK)); +} + +/* calculate orthogonal snake metrics + * is_legal = true if model does not pass through itself + * is_cyclic = true if last node connects back to first node + * last_turn = for cyclic snakes, specifes what the 24th turn would be + */ +static void calc_snake_metrics(struct glsnake_cfg *bp) +{ + int srcDir, dstDir; + int i, x, y, z; + int prevSrcDir = -Y_MASK; + int prevDstDir = Z_MASK; + int grid[25][25][25]; + + /* zero the grid */ + memset(&grid, 0, sizeof(int) * 25*25*25); + + bp->is_legal = 1; + x = y = z = 12; + + /* trace path of snake - and keep record for is_legal */ + for (i = 0; i < NODE_COUNT - 1; i++) { + /*int ang_card;*/ /* cardinal direction of node angle */ + /* establish new state vars */ + srcDir = -prevDstDir; + x += GETSCALAR(prevDstDir, X_MASK); + y += GETSCALAR(prevDstDir, Y_MASK); + z += GETSCALAR(prevDstDir, Z_MASK); + + switch ((int) model[bp->next_model].node[i]) { + case (int) (ZERO): + dstDir = -prevSrcDir; + break; + case (int) (PIN): + dstDir = prevSrcDir; + break; + case (int) (RIGHT): + case (int) (LEFT): + dstDir = cross_product(prevSrcDir, prevDstDir); + if (model[bp->next_model].node[i] == (int) (RIGHT)) + dstDir = -dstDir; + break; + default: + /* Prevent spurious "might be used + * uninitialised" warnings when compiling + * with -O2 */ + dstDir = 0; + break; + } + + if (grid[x][y][z] == 0) + grid[x][y][z] = srcDir + dstDir; + else if (grid[x][y][z] + srcDir + dstDir == 0) + grid[x][y][z] = 8; + else + bp->is_legal = 0; + + prevSrcDir = srcDir; + prevDstDir = dstDir; + } + + /* determine if the snake is cyclic */ + bp->is_cyclic = (dstDir == Y_MASK && x == 12 && y == 11 && z == 12); + + /* determine last_turn */ + bp->last_turn = -1; + if (bp->is_cyclic) + switch (srcDir) { + case -Z_MASK: bp->last_turn = ZERO; break; + case Z_MASK: bp->last_turn = PIN; break; + case X_MASK: bp->last_turn = LEFT; break; + case -X_MASK: bp->last_turn = RIGHT; break; + } +} + +/* work out how far through the current morph we are */ +static float morph_percent(struct glsnake_cfg *bp) +{ + float retval; + int i; + + /* extend this function later with a case statement for each of the + * morph schemes */ + + /* when morphing all nodes at once, the longest morph will be the node + * that needs to rotate 180 degrees. For each node, work out how far it + * has to go, and store the maximum rotation and current largest angular + * difference, returning the angular difference over the maximum. */ + { + float rot_max = 0.0, ang_diff_max = 0.0; + + for (i = 0; i < NODE_COUNT - 1; i++) { + float rot, ang_diff; + + /* work out the maximum rotation this node has to go through + * from the previous to the next model, taking into account that + * the snake always morphs through the smaller angle */ + rot = fabs(model[bp->prev_model].node[i] - + model[bp->next_model].node[i]); + if (rot > 180.0) rot = 180.0 - rot; + /* work out the difference between the current position and the + * target */ + ang_diff = fabs(bp->node[i] - + model[bp->next_model].node[i]); + if (ang_diff > 180.0) ang_diff = 180.0 - ang_diff; + /* if it's the biggest so far, record it */ + if (rot > rot_max) rot_max = rot; + if (ang_diff > ang_diff_max) ang_diff_max = ang_diff; + } + + /* ang_diff / rot approaches 0, we want the complement */ + retval = 1.0 - (ang_diff_max / rot_max); + /* protect against naan */ + +/* Apparently some systems (Solaris) don't have isinf() */ +#undef isinf +#define isinf(x) (((x) > 999999999999.9) || ((x) < -999999999999.9)) + + if (isnan(retval) || isinf(retval)) retval = 1.0; + } + /*printf("morph_pct = %f\n", retval);*/ + return retval; +} + +static void morph_colour(struct glsnake_cfg *bp) +{ + float percent, compct; /* complement of percentage */ + + percent = morph_percent(bp); + compct = 1.0 - percent; + + bp->colour[0][0] = colour[bp->prev_colour][0][0] * compct + colour[bp->next_colour][0][0] * percent; + bp->colour[0][1] = colour[bp->prev_colour][0][1] * compct + colour[bp->next_colour][0][1] * percent; + bp->colour[0][2] = colour[bp->prev_colour][0][2] * compct + colour[bp->next_colour][0][2] * percent; + bp->colour[0][3] = colour[bp->prev_colour][0][3] * compct + colour[bp->next_colour][0][3] * percent; + + bp->colour[1][0] = colour[bp->prev_colour][1][0] * compct + colour[bp->next_colour][1][0] * percent; + bp->colour[1][1] = colour[bp->prev_colour][1][1] * compct + colour[bp->next_colour][1][1] * percent; + bp->colour[1][2] = colour[bp->prev_colour][1][2] * compct + colour[bp->next_colour][1][2] * percent; + bp->colour[1][3] = colour[bp->prev_colour][1][3] * compct + colour[bp->next_colour][1][3] * percent; +} + +/* Start morph process to this model */ +static void start_morph(struct glsnake_cfg *bp, + unsigned int model_index, int immediate) +{ + /* if immediate, don't bother morphing, go straight to the next model */ + if (immediate) { + int i; + + for (i = 0; i < NODE_COUNT; i++) + bp->node[i] = model[model_index].node[i]; + } + + bp->prev_model = bp->next_model; + bp->next_model = model_index; + bp->prev_colour = bp->next_colour; + + calc_snake_metrics(bp); + if (!bp->is_legal) + bp->next_colour = COLOUR_INVALID; + else if (altcolour) + bp->next_colour = COLOUR_AUTHENTIC; + else if (bp->is_cyclic) + bp->next_colour = COLOUR_CYCLIC; + else + bp->next_colour = COLOUR_ACYCLIC; + + if (immediate) { + bp->colour[0][0] = colour[bp->next_colour][0][0]; + bp->colour[0][1] = colour[bp->next_colour][0][1]; + bp->colour[0][2] = colour[bp->next_colour][0][2]; + bp->colour[0][3] = colour[bp->next_colour][0][3]; + bp->colour[1][0] = colour[bp->next_colour][1][0]; + bp->colour[1][1] = colour[bp->next_colour][1][1]; + bp->colour[1][2] = colour[bp->next_colour][1][2]; + bp->colour[1][3] = colour[bp->next_colour][1][3]; + } + bp->morphing = 1; + + morph_colour(bp); +} + +#if 0 +/* Returns morph progress */ +static float morph(long iter_msec) +{ + /* work out the maximum angle for this iteration */ + int still_morphing; + float iter_angle_max, largest_diff, largest_progress; + int i; + + if (bp->new_morph) + bp->new_morph = 0; + + iter_angle_max = 90.0 * (angvel/1000.0) * iter_msec; + + still_morphing = 0; + largest_diff = largest_progress = 0.0; + for (i = 0; i < NODE_COUNT; i++) { + float curAngle = bp->node[i]; + float destAngle = model[bp->next_model].node[i]; + if (curAngle != destAngle) { + still_morphing = 1; + if (fabs(curAngle-destAngle) <= iter_angle_max) + bp->node[i] = destAngle; + else if (fmod(curAngle-destAngle+360,360) > 180) + bp->node[i] = fmod(curAngle + iter_angle_max, 360); + else + bp->node[i] = fmod(curAngle+360 - iter_angle_max, 360); + largest_diff = MAX(largest_diff, fabs(destAngle-bp->node[i])); + largest_progress = MAX(largest_diff, fabs(bp->node[i] - model[bp->prev_model].node[i])); + } + } + + return MIN(largest_diff / largest_progress, 1.0); +} +#endif + + +#ifdef HAVE_GLUT +static void glsnake_idle(); + +static restore_idle(int v __attribute__((__unused__))) +{ + glutIdleFunc(glsnake_idle); +} +#endif + +static void quick_sleep(void) +{ +#ifdef HAVE_GLUT + /* By using glutTimerFunc we can keep responding to + * mouse and keyboard events, unlike using something like + * usleep. */ + glutIdleFunc(NULL); + glutTimerFunc(1, restore_idle, 0); +#else + usleep(1); +#endif +} + +static void glsnake_idle( +#ifndef HAVE_GLUT + struct glsnake_cfg * bp +#endif + ) +{ + /* time since last iteration */ + long iter_msec; + /* time since the beginning of last morph */ + long morf_msec; + float iter_angle_max; + snaketime current_time; + /* morphFunc transition; */ + int still_morphing; + int i; + + /* Do nothing to the model if we are paused */ + if (bp->paused) { + /* Avoid busy waiting when nothing is changing */ + quick_sleep(); +#ifdef HAVE_GLUT + glutSwapBuffers(); + glutPostRedisplay(); +#endif + return; + } + + /* Well, ftime gives time with millisecond resolution. + * (or worse, perhaps... who knows what the OS will do) + * So if no discernable amount of time has passed: + * a) There's no point updating the screen, because + * it would be the same + * b) The code will divide by zero + */ + gettime(¤t_time); + + iter_msec = (long) GETMSECS(current_time) - GETMSECS(bp->last_iteration) + + ((long) GETSECS(current_time) - GETSECS(bp->last_iteration)) * 1000L; + + if (iter_msec) { + /* save the current time */ + memcpy(&bp->last_iteration, ¤t_time, sizeof(snaketime)); + + /* work out if we have to switch models */ + morf_msec = GETMSECS(bp->last_iteration) - GETMSECS(bp->last_morph) + + ((long) (GETSECS(bp->last_iteration)-GETSECS(bp->last_morph)) * 1000L); + + if ((morf_msec > statictime) && !interactive && !bp->morphing) { + /*printf("starting morph\n");*/ + memcpy(&bp->last_morph, &(bp->last_iteration), sizeof(bp->last_morph)); + start_morph(bp, RAND(models), 0); + } + + if (interactive && !bp->morphing) { + quick_sleep(); + return; + } + + /* if (!bp->dragging && !bp->interactive) { */ + if (!interactive) { + + yspin += 360/((1000/yangvel)/iter_msec); + zspin += 360/((1000/zangvel)/iter_msec); + /* + yspin += 360 * (yangvel/1000.0) * iter_msec; + zspin += 360 * (zangvel/1000.0) * iter_msec; + */ + + /*printf("yspin: %f, zspin: %f\n", yspin, zspin);*/ + + } + + /* work out the maximum angle we could turn this node in this + * timeslice, iter_msec milliseconds long */ + iter_angle_max = 90.0 * (angvel/1000.0) * iter_msec; + + still_morphing = 0; + for (i = 0; i < NODE_COUNT; i++) { + float cur_angle = bp->node[i]; + float dest_angle = model[bp->next_model].node[i]; + if (cur_angle != dest_angle) { + still_morphing = 1; + if (fabs(cur_angle - dest_angle) <= iter_angle_max) + bp->node[i] = dest_angle; + else if (fmod(cur_angle - dest_angle + 360, 360) > 180) + bp->node[i] = fmod(cur_angle + iter_angle_max, 360); + else + bp->node[i] = fmod(cur_angle + 360 - iter_angle_max, 360); + } + } + + if (!still_morphing) + bp->morphing = 0; + + /* colour cycling */ + morph_colour(bp); + +#ifdef HAVE_GLUT + glutSwapBuffers(); + glutPostRedisplay(); +#endif + } else { + /* We are going too fast, so we may as well let the + * cpu relax a little by sleeping for a millisecond. */ + quick_sleep(); + } +} + +/* wot draws it */ +ENTRYPOINT void glsnake_display( +#ifndef HAVE_GLUT + ModeInfo * mi +#endif + ) +{ +#ifndef HAVE_GLUT + struct glsnake_cfg * bp = &glc[MI_SCREEN(mi)]; + Display * dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); +#endif + + int i; + float ang; + float positions[NODE_COUNT][4]; /* origin points for each node */ + float com[4]; /* it's the CENTRE of MASS */ + +#ifndef HAVE_GLUT + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); +#endif + + gl_init(mi); + + /* clear the buffer */ + glClear((GLbitfield) GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + /* go into the modelview stack */ + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + /* get the centre of each node, by moving through the snake and + * performing the rotations, then grabbing the matrix at each point + * and applying it to the origin */ + glPushMatrix(); + +#ifdef HAVE_GLUT + /* apply the mouse drag rotation */ + ui_mousedrag(); +#endif + + /* apply the continuous rotation */ + glRotatef(yspin, 0.0, 1.0, 0.0); + glRotatef(zspin, 0.0, 0.0, 1.0); + + com[0] = 0.0; + com[1] = 0.0; + com[2] = 0.0; + com[3] = 0.0; + for (i = 0; i < NODE_COUNT; i++) { + float rotmat[16]; + + ang = bp->node[i]; + + /*printf("ang = %f\n", ang);*/ + + glTranslatef(0.5, 0.5, 0.5); /* move to center */ + glRotatef(90.0, 0.0, 0.0, -1.0); /* reorient */ + glTranslatef(1.0 + explode, 0.0, 0.0); /* move to new pos. */ + glRotatef(180.0 + ang, 1.0, 0.0, 0.0); /* pivot to new angle */ + glTranslatef(-0.5, -0.5, -0.5); /* return from center */ + + glGetFloatv(GL_MODELVIEW_MATRIX, rotmat); + + matmult_origin(rotmat, positions[i]); + + /*printf("positions %f %f %f %f\n", positions[i][0], positions[i][1], positions[i][2], positions[i][3]);*/ + + com[0] += positions[i][0]; + com[1] += positions[i][1]; + com[2] += positions[i][2]; + com[3] += positions[i][3]; + } + glPopMatrix(); + com[0] /= NODE_COUNT; + com[1] /= NODE_COUNT; + com[2] /= NODE_COUNT; + com[3] /= NODE_COUNT; + + com[0] /= com[3]; + com[1] /= com[3]; + com[2] /= com[3]; + + /*printf("com: %f, %f, %f, %f\n", com[0], com[1], com[2], com[3]);*/ + +#if MAGICAL_RED_STRING + glPushMatrix(); + glTranslatef(-com[0], -com[1], -com[2]); + + glDisable(GL_LIGHTING); + glColor4f(1.0, 0.0, 0.0, 1.0); + glBegin(GL_LINE_STRIP); + for (i = 0; i < NODE_COUNT - 1; i++) { + glVertex3fv(positions[i]); + } + glEnd(); + glEnable(GL_LIGHTING); + /*glTranslatef(com[0], com[1], com[2]);*/ + glPopMatrix(); +#endif + + glPushMatrix(); + glTranslatef(-com[0], -com[1], -com[2]); + +#ifdef HAVE_GLUT + /* apply the mouse drag rotation */ + ui_mousedrag(); +#endif + + /* apply the continuous rotation */ + glRotatef(yspin, 0.0, 1.0, 0.0); + glRotatef(zspin, 0.0, 0.0, 1.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + /* now draw each node along the snake -- this is quite ugly :p */ + mi->polygon_count = 0; + for (i = 0; i < NODE_COUNT; i++) { + /* choose a colour for this node */ + if ((i == bp->selected || i == bp->selected+1) && interactive) + /* yellow */ + glColor4f(1.0, 1.0, 0.0, 1.0); + else { + /*glColor4fv(bp->colour[(i+1)%2]);*/ + glMaterialfv(GL_FRONT, GL_AMBIENT, bp->colour[(i+1)%2]); + glMaterialfv(GL_FRONT, GL_DIFFUSE, bp->colour[(i+1)%2]); + /*glMaterialfv(GL_FRONT, GL_SPECULAR, bp->colour[(i+1)%2]);*/ + } + + /* draw the node */ + if (wireframe) + glCallList(bp->node_wire); + else + glCallList(bp->node_solid); + mi->polygon_count += bp->node_polys; + + /* now work out where to draw the next one */ + + /* Interpolate between models */ + ang = bp->node[i]; + + glTranslatef(0.5, 0.5, 0.5); /* move to center */ + glRotatef(90.0, 0.0, 0.0, -1.0); /* reorient */ + glTranslatef(1.0 + explode, 0.0, 0.0); /* move to new pos. */ + glRotatef(180.0 + ang, 1.0, 0.0, 0.0); /* pivot to new angle */ + glTranslatef(-0.5, -0.5, -0.5); /* return from center */ + } + + glPopMatrix(); + + if (titles) +#ifdef HAVE_GLUT + draw_title(); +#else + draw_title(mi); +#endif + +#ifndef HAVE_GLUT + glsnake_idle(bp); + if (mi->fps_p) do_fps(mi); +#endif + + glFlush(); +#ifdef HAVE_GLUT + glutSwapBuffers(); +#else + glXSwapBuffers(dpy, window); +#endif +} + +#ifdef HAVE_GLUT +/* anything that needs to be cleaned up goes here */ +static void unmain() +{ + glutDestroyWindow(bp->window); + free(bp); +} + +static void ui_init(int *, char **); + +int main(int argc, char ** argv) +{ + bp = malloc(sizeof(struct glsnake_cfg)); + memset(bp, 0, sizeof(struct glsnake_cfg)); + + bp->width = 640; + bp->height = 480; + + ui_init(&argc, argv); + + gettime(&bp->last_iteration); + memcpy(&bp->last_morph, &bp->last_iteration, sizeof(snaketime)); + srand((unsigned int)GETSECS(bp->last_iteration)); + + bp->prev_colour = bp->next_colour = COLOUR_ACYCLIC; + bp->next_model = RAND(models); + bp->prev_model = 0; + start_morph(bp->prev_model, 1); + + glsnake_init(); + + atexit(unmain); + glutSwapBuffers(); + glutMainLoop(); + + return 0; +} +#endif + +/* + * GLUT FUNCTIONS + */ + +#ifdef HAVE_GLUT + +/* trackball quaternions */ +static float cumquat[4] = {0.0,0.0,0.0,0.0}, oldquat[4] = {0.0,0.0,0.0,0.1}; + +/* rotation matrix */ +static float rotation[16]; + +/* mouse drag vectors: start and end */ +static float mouse_start[3], mouse_end[3]; + +/* dragging boolean */ +static int dragging = 0; + +/* this function calculates the rotation matrix based on the quaternions + * generated from the mouse drag vectors */ +static void calc_rotation() +{ + double Nq, s; + double xs, ys, zs, wx, wy, wz, xx, xy, xz, yy, yz, zz; + + /* this bit ripped from Shoemake's quaternion notes from SIGGRAPH */ + Nq = cumquat[0] * cumquat[0] + cumquat[1] * cumquat[1] + + cumquat[2] * cumquat[2] + cumquat[3] * cumquat[3]; + s = (Nq > 0.0) ? (2.0 / Nq) : 0.0; + xs = cumquat[0] * s; ys = cumquat[1] * s; zs = cumquat[2] * s; + wx = cumquat[3] * xs; wy = cumquat[3] * ys; wz = cumquat[3] * zs; + xx = cumquat[0] * xs; xy = cumquat[0] * ys; xz = cumquat[0] * zs; + yy = cumquat[1] * ys; yz = cumquat[1] * zs; zz = cumquat[2] * zs; + + rotation[0] = 1.0 - (yy + zz); + rotation[1] = xy + wz; + rotation[2] = xz - wy; + rotation[4] = xy - wz; + rotation[5] = 1.0 - (xx + zz); + rotation[6] = yz + wx; + rotation[8] = xz + wy; + rotation[9] = yz - wx; + rotation[10] = 1.0 - (xx + yy); + rotation[3] = rotation[7] = rotation[11] = 0.0; + rotation[12] = rotation[13] = rotation[14] = 0.0; + rotation[15] = 1.0; +} + +static inline void ui_mousedrag() +{ + glMultMatrixf(rotation); +} + +static void ui_keyboard(unsigned char c, int x__attribute__((__unused__)), int y __attribute__((__unused__))) +{ + int i; + + switch (c) { + case 27: /* ESC */ + case 'q': + exit(0); + break; + case 'e': + explode += DEF_EXPLODE; + glutPostRedisplay(); + break; + case 'E': + explode -= DEF_EXPLODE; + if (explode < 0.0) explode = 0.0; + glutPostRedisplay(); + break; + case '.': + /* next model */ + bp->next_model++; + bp->next_model %= models; + start_morph(bp->next_model, 0); + + /* Reset last_morph time */ + gettime(&bp->last_morph); + break; + case ',': + /* previous model */ + bp->next_model = (bp->next_model + (int)models - 1) % (int)models; + start_morph(bp->next_model, 0); + + /* Reset bp->last_morph time */ + gettime(&bp->last_morph); + break; + case '+': + angvel += DEF_ANGVEL; + break; + case '-': + if (angvel > DEF_ANGVEL) + angvel -= DEF_ANGVEL; + break; + case 'i': + if (interactive) { + /* Reset last_iteration and last_morph time */ + gettime(&bp->last_iteration); + gettime(&bp->last_morph); + } + interactive = 1 - interactive; + glutPostRedisplay(); + break; + case 'w': + wireframe = 1 - wireframe; + if (wireframe) + glDisable(GL_LIGHTING); + else + glEnable(GL_LIGHTING); + glutPostRedisplay(); + break; + case 'a': + transparent = 1 - transparent; + if (transparent) { + glEnable(GL_BLEND); + } else { + glDisable(GL_BLEND); + } + break; + case 'p': + if (bp->paused) { + /* unpausing, reset last_iteration and last_morph time */ + gettime(&bp->last_iteration); + gettime(&bp->last_morph); + } + bp->paused = 1 - bp->paused; + break; + case 'd': + /* dump the current model so we can add it! */ + printf("# %s\nnoname:\t", model[bp->next_model].name); + { + int i; + + for (i = 0; i < NODE_COUNT; i++) { + if (bp->node[i] == ZERO) + printf("Z"); + else if (bp->node[i] == LEFT) + printf("L"); + else if (bp->node[i] == PIN) + printf("P"); + else if (bp->node[i] == RIGHT) + printf("R"); + /* + else + printf("%f", node[i].curAngle); + */ + if (i < NODE_COUNT - 1) + printf(" "); + } + } + printf("\n"); + break; + case 'f': + bp->fullscreen = 1 - bp->fullscreen; + if (bp->fullscreen) { + bp->old_width = bp->width; + bp->old_height = bp->height; + glutFullScreen(); + } else { + glutReshapeWindow(bp->old_width, bp->old_height); + glutPositionWindow(50,50); + } + break; + case 't': + titles = 1 - titles; + if (interactive || bp->paused) + glutPostRedisplay(); + break; + case 'c': + altcolour = 1 - altcolour; + break; + case 'z': + zoom += 1.0; + glsnake_reshape(bp->width, bp->height); + break; + case 'Z': + zoom -= 1.0; + glsnake_reshape(bp->width, bp->height); + break; + default: + break; + } +} + +static void ui_special(int key, int x__attribute__((__unused__)), int y __attribute__((__unused__))) +{ + float *destAngle = &(model[bp->next_model].node[bp->selected]); + int unknown_key = 0; + + if (interactive) { + switch (key) { + case GLUT_KEY_UP: + bp->selected = (bp->selected + (NODE_COUNT - 2)) % (NODE_COUNT - 1); + break; + case GLUT_KEY_DOWN: + bp->selected = (bp->selected + 1) % (NODE_COUNT - 1); + break; + case GLUT_KEY_LEFT: + *destAngle = fmod(*destAngle+(LEFT), 360); + bp->morphing = bp->new_morph = 1; + break; + case GLUT_KEY_RIGHT: + *destAngle = fmod(*destAngle+(RIGHT), 360); + bp->morphing = bp->new_morph = 1; + break; + case GLUT_KEY_HOME: + start_morph(STRAIGHT_MODEL, 0); + break; + default: + unknown_key = 1; + break; + } + } + calc_snake_metrics(); + + if (!unknown_key) + glutPostRedisplay(); +} + +static void ui_mouse(int button, int state, int x, int y) +{ + if (button==0) { + switch (state) { + case GLUT_DOWN: + dragging = 1; + mouse_start[0] = M_SQRT1_2 * + (x - (bp->width / 2.0)) / (bp->width / 2.0); + mouse_start[1] = M_SQRT1_2 * + ((bp->height / 2.0) - y) / (bp->height / 2.0); + mouse_start[2] = sqrt((double)(1-(mouse_start[0]*mouse_start[0]+mouse_start[1]*mouse_start[1]))); + break; + case GLUT_UP: + dragging = 0; + oldquat[0] = cumquat[0]; + oldquat[1] = cumquat[1]; + oldquat[2] = cumquat[2]; + oldquat[3] = cumquat[3]; + break; + default: + break; + } + } + glutPostRedisplay(); +} + +static void ui_motion(int x, int y) +{ + double norm; + float q[4]; + + if (dragging) { + /* construct the motion end vector from the x,y position on the + * window */ + mouse_end[0] = M_SQRT1_2 * (x - (bp->width/ 2.0)) / (bp->width / 2.0); + mouse_end[1] = M_SQRT1_2 * ((bp->height / 2.0) - y) / (bp->height / 2.0); + /* calculate the normal of the vector... */ + norm = mouse_end[0] * mouse_end[0] + mouse_end[1] * mouse_end[1]; + /* check if norm is outside the sphere and wraparound if necessary */ + if (norm > 1.0) { + mouse_end[0] = -mouse_end[0]; + mouse_end[1] = -mouse_end[1]; + mouse_end[2] = sqrt(norm - 1); + } else { + /* the z value comes from projecting onto an elliptical spheroid */ + mouse_end[2] = sqrt(1 - norm); + } + + /* now here, build a quaternion from mouse_start and mouse_end */ + q[0] = mouse_start[1] * mouse_end[2] - mouse_start[2] * mouse_end[1]; + q[1] = mouse_start[2] * mouse_end[0] - mouse_start[0] * mouse_end[2]; + q[2] = mouse_start[0] * mouse_end[1] - mouse_start[1] * mouse_end[0]; + q[3] = mouse_start[0] * mouse_end[0] + mouse_start[1] * mouse_end[1] + mouse_start[2] * mouse_end[2]; + + /* new rotation is the product of the new one and the old one */ + cumquat[0] = q[3] * oldquat[0] + q[0] * oldquat[3] + + q[1] * oldquat[2] - q[2] * oldquat[1]; + cumquat[1] = q[3] * oldquat[1] + q[1] * oldquat[3] + + q[2] * oldquat[0] - q[0] * oldquat[2]; + cumquat[2] = q[3] * oldquat[2] + q[2] * oldquat[3] + + q[0] * oldquat[1] - q[1] * oldquat[0]; + cumquat[3] = q[3] * oldquat[3] - q[0] * oldquat[0] - + q[1] * oldquat[1] - q[2] * oldquat[2]; + + calc_rotation(); + } + glutPostRedisplay(); +} + +static void ui_init(int * argc, char ** argv) +{ + glutInit(argc, argv); + glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); + glutInitWindowSize(bp->width, bp->height); + bp->window = glutCreateWindow("glsnake"); + + glutDisplayFunc(glsnake_display); + glutReshapeFunc(glsnake_reshape); + glutIdleFunc(glsnake_idle); + glutKeyboardFunc(ui_keyboard); + glutSpecialFunc(ui_special); + glutMouseFunc(ui_mouse); + glutMotionFunc(ui_motion); + + yangvel = DEF_YANGVEL; + zangvel = DEF_ZANGVEL; + explode = DEF_EXPLODE; + angvel = DEF_ANGVEL; + statictime = DEF_STATICTIME; + altcolour = DEF_ALTCOLOUR; + titles = DEF_TITLES; + interactive = DEF_INTERACTIVE; + zoom = DEF_ZOOM; + wireframe = DEF_WIREFRAME; + transparent = DEF_TRANSPARENT; +} +#endif /* HAVE_GLUT */ + +XSCREENSAVER_MODULE ("GLSnake", glsnake) diff --git a/hacks/glx/glsnake.man b/hacks/glx/glsnake.man new file mode 100644 index 0000000..217be2f --- /dev/null +++ b/hacks/glx/glsnake.man @@ -0,0 +1,98 @@ +.\" Hey, EMACS: -*- nroff -*- +.TH XScreenSaver 1 "January 15, 2001" "X Version 11" +.SH NAME +glsnake \- OpenGL enhanced Rubik's Snake cyclewaster. +.SH SYNOPSIS +.B glsnake +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps] +[\-wireframe] [\-altcolour] +[\-angvel \fIangular\fP] +[\-explode \fIdistance\fP] +[\-statictime \fImilliseconds\fP] +[\-yangvel \fIangle\fP] +[\-zangvel \fIangle\fP] +.SH DESCRIPTION +.PP +.B glsnake +is an imitation of Rubiks\' Snake, using OpenGL. +.SH OPTIONS +.I glsnake +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-wireframe +Display the snake in wireframe mode, rather than the default solid mode. +.TP 8 +.B \-altcolour +Use the alternate colour scheme for the snake. Shape identification using +colour will be disabled. +.TP 8 +.B -angvel \fIangular\fP +Change the speed at which the snake morphs to a new shape. +.TP 8 +.B -explode \fIdistance\fP +Change the distance between the nodes of a snake. +.TP 8 +.B \-statictime \fImilliseconds\fP +Change the time between morphs. +.TP 8 +.B \-yangvel \fIangle\fP +Change the angle of rotation around the Y axis per frame. +.TP 8 +.B \-zangvel \fIangle\fP +Change the angle of rotation around the Z axis per frame. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH FILES +.TP +\fB/usr/share/glsnake/*.glsnake\fP +This XScreenSaver will attempt to read model files installed with the interactive \fBglsnake\fP. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1), +.BR glsnake (MANSUFFIX) +.PP +.EX +http://spacepants.org/src/glsnake/ +.EE +.SH BUGS +The snake will happily intersect itself while morphing (this is not a bug). +.PP +The rotation/camera position sucks. +.SH COPYRIGHT +Copyright \(co 2001,2002 by Jamie Wilkinson, Andrew Bennetts, and Peter Aylett. +.PP +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. +.PP +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +.SH AUTHOR +Jamie Wilkinson , Andrew Bennetts , +and Peter Aylett . Ported to XScreenSaver by Jamie Wilkinson. diff --git a/hacks/glx/gltext.c b/hacks/glx/gltext.c new file mode 100644 index 0000000..276c448 --- /dev/null +++ b/hacks/glx/gltext.c @@ -0,0 +1,660 @@ +/* gltext, Copyright (c) 2001-2017 Jamie Zawinski + +#ifdef USE_GL /* whole file */ + +#define DEF_TEXT "(default)" +#define DEF_PROGRAM "(default)" +#define DEF_SCALE_FACTOR "0.01" +#define DEF_WANDER_SPEED "0.02" +#define DEF_MAX_LINES "8" +#define DEF_SPIN "XYZ" +#define DEF_WANDER "True" +#define DEF_FACE_FRONT "True" +#define DEF_USE_MONOSPACE "False" + +#ifdef HAVE_UNAME +# include +#endif /* HAVE_UNAME */ + +#include "glutstroke.h" +#include "glut_roman.h" +#include "glut_mroman.h" +#define GLUT_VARI_FONT (&glutStrokeRoman) +#define GLUT_MONO_FONT (&glutStrokeMonoRoman) +#define GLUT_FONT ((use_monospace) ? GLUT_MONO_FONT : GLUT_VARI_FONT) + + +typedef struct { + GLXContext *glx_context; + rotator *rot, *rot2; + trackball_state *trackball; + Bool button_down_p; + Bool spinx, spiny, spinz; + + GLuint text_list; + + int ncolors; + XColor *colors; + int ccolor; + + char *text; + int reload; + + time_t last_update; + text_data *tc; + +} text_configuration; + +static text_configuration *tps = NULL; + +static char *text_fmt; +static char *program_str; +static float scale_factor; +static int max_no_lines; +static float wander_speed; +static char *do_spin; +static Bool do_wander; +static Bool face_front_p; +static Bool use_monospace; + +static XrmOptionDescRec opts[] = { + { "-text", ".text", XrmoptionSepArg, 0 }, + { "-program", ".program", XrmoptionSepArg, 0 }, + { "-scale", ".scaleFactor", XrmoptionSepArg, 0 }, + { "-maxlines", ".maxLines", XrmoptionSepArg, 0 }, + { "-wander-speed", ".wanderSpeed", XrmoptionSepArg, 0 }, + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-front", ".faceFront", XrmoptionNoArg, "True" }, + { "+front", ".faceFront", XrmoptionNoArg, "False" }, + { "-mono", ".useMonoSpace", XrmoptionNoArg, "True" }, + { "+mono", ".useMonoSpace", XrmoptionNoArg, "False" } +}; + +static argtype vars[] = { + {&text_fmt, "text", "Text", DEF_TEXT, t_String}, + {&program_str, "program", "Program", DEF_PROGRAM, t_String}, + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&scale_factor, "scaleFactor", "ScaleFactor", DEF_SCALE_FACTOR, t_Float}, + {&max_no_lines, "maxLines", "MaxLines", DEF_MAX_LINES, t_Int}, + {&wander_speed, "wanderSpeed", "WanderSpeed", DEF_WANDER_SPEED, t_Float}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&face_front_p, "faceFront", "FaceFront", DEF_FACE_FRONT, t_Bool}, + {&use_monospace, "useMonoSpace", "UseMonoSpace", DEF_USE_MONOSPACE, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt text_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_text (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +gl_init (ModeInfo *mi) +{ + text_configuration *tp = &tps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + + static const GLfloat pos[4] = {5.0, 5.0, 10.0, 1.0}; + + if (!wire) + { + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + } + + tp->text_list = glGenLists (1); + glNewList (tp->text_list, GL_COMPILE); + glEndList (); +} + + +static void +parse_text (ModeInfo *mi) +{ + text_configuration *tp = &tps[MI_SCREEN(mi)]; + char *old = tp->text; + + if (program_str && *program_str && !!strcmp(program_str, "(default)")) + { + int max_lines = max_no_lines; + char buf[4096]; + char *p = buf; + int lines = 0; + + if (! tp->tc) + tp->tc = textclient_open (mi->dpy); + + while (p < buf + sizeof(buf) - 1 && + lines < max_lines) + { + int c = textclient_getc (tp->tc); + if (c == '\n') + lines++; + if (c > 0) + *p++ = (char) c; + else + break; + } + *p = 0; + if (lines == 0 && buf[0]) + lines++; + + tp->text = strdup (buf); + + tp->reload = 7; /* Let this one linger for a few seconds */ + if (!*tp->text) + tp->reload = 1; + + } + else if (!text_fmt || !*text_fmt || !strcmp(text_fmt, "(default)")) + { +# ifdef HAVE_UNAME + struct utsname uts; + + if (uname (&uts) < 0) + { + tp->text = strdup("uname() failed"); + } + else + { + char *s; + if ((s = strchr(uts.nodename, '.'))) + *s = 0; + tp->text = (char *) malloc(strlen(uts.nodename) + + strlen(uts.sysname) + + strlen(uts.version) + + strlen(uts.release) + 10); +# if defined(_AIX) + sprintf(tp->text, "%s\n%s %s.%s", + uts.nodename, uts.sysname, uts.version, uts.release); +# elif defined(USE_IPHONE) + /* "My iPhone\n iPhone4,1\n Darwin 11.0.0" */ + sprintf(tp->text, "%s\n%s\n%s %s", + uts.nodename, uts.machine, uts.sysname, uts.release); +# elif defined(__APPLE__) /* MacOS X + XDarwin */ + { + const char *file = + "/System/Library/CoreServices/SystemVersion.plist"; + FILE *f = fopen (file, "r"); + char *pbv = 0, *pn = 0, *puvv = 0; + if (f) { + char *s, buf[255]; + + while (fgets (buf, sizeof(buf)-1, f)) { +# define GRAB(S,V) \ + if (strstr(buf, S)) { \ + fgets (buf, sizeof(buf)-1, f); \ + if ((s = strchr (buf, '>'))) V = strdup(s+1); \ + if ((s = strchr (V, '<'))) *s = 0; \ + } + GRAB ("ProductName", pn) + GRAB ("ProductBuildVersion", pbv) + GRAB ("ProductUserVisibleVersion", puvv) +# undef GRAB + } + } + if (pbv) + sprintf (tp->text, "%s\n%s\n%s\n%s", + uts.nodename, pn, puvv, uts.machine); + else + sprintf(tp->text, "%s\n%s %s\n%s", + uts.nodename, uts.sysname, uts.release, uts.machine); + } +# else + sprintf(tp->text, "%s\n%s %s", + uts.nodename, uts.sysname, uts.release); +# endif /* special system types */ + } +# else /* !HAVE_UNAME */ +# ifdef VMS + tp->text = strdup(getenv("SYS$NODE")); +# else + tp->text = strdup("* *\n* * *\nxscreensaver\n* * *\n* *"); +# endif +# endif /* !HAVE_UNAME */ + } + else if (!strchr (text_fmt, '%')) + { + tp->text = strdup (text_fmt); + } + else + { + time_t now = time ((time_t *) 0); + struct tm *tm = localtime (&now); + int L = strlen(text_fmt) + 100; + tp->text = (char *) malloc (L); + *tp->text = 0; + strftime (tp->text, L-1, text_fmt, tm); + if (!*tp->text) + sprintf (tp->text, "strftime error:\n%s", text_fmt); + tp->reload = 1; + } + + { + /* The GLUT font only has ASCII characters. */ + char *s1 = utf8_to_latin1 (tp->text, True); + free (tp->text); + tp->text = s1; + } + + /* If we had text before but got no text this time, hold on to the + old one, to avoid flickering. + */ + if (old && *old && !*tp->text) + { + free (tp->text); + tp->text = old; + } + else if (old) + free (old); +} + + +ENTRYPOINT Bool +text_handle_event (ModeInfo *mi, XEvent *event) +{ + text_configuration *tp = &tps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, tp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &tp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_text (ModeInfo *mi) +{ + text_configuration *tp; + int i; + + MI_INIT (mi, tps); + + tp = &tps[MI_SCREEN(mi)]; + + if ((tp->glx_context = init_GL(mi)) != NULL) { + gl_init(mi); + reshape_text (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + { + double spin_speed = 0.5; + double wander_speed = 0.02; + double tilt_speed = 0.03; + double spin_accel = 0.5; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') tp->spinx = True; + else if (*s == 'y' || *s == 'Y') tp->spiny = True; + else if (*s == 'z' || *s == 'Z') tp->spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + tp->rot = make_rotator (tp->spinx ? spin_speed : 0, + tp->spiny ? spin_speed : 0, + tp->spinz ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False); + tp->rot2 = (face_front_p + ? make_rotator (0, 0, 0, 0, tilt_speed, True) + : 0); + tp->trackball = gltrackball_init (False); + } + + tp->ncolors = 255; + tp->colors = (XColor *) calloc(tp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + tp->colors, &tp->ncolors, + False, 0, False); + + /* brighter colors, please... */ + for (i = 0; i < tp->ncolors; i++) + { + tp->colors[i].red = (tp->colors[i].red / 2) + 32767; + tp->colors[i].green = (tp->colors[i].green / 2) + 32767; + tp->colors[i].blue = (tp->colors[i].blue / 2) + 32767; + } + + parse_text (mi); + +} + + +static int +fill_character (GLUTstrokeFont font, int c, Bool wire, int *polysP) +{ + GLfloat tube_width = 10; + + const StrokeCharRec *ch; + const StrokeRec *stroke; + const CoordRec *coord; + StrokeFontPtr fontinfo; + int i, j; + + fontinfo = (StrokeFontPtr) font; + + if (c < 0 || c >= fontinfo->num_chars) + return 0; + ch = &(fontinfo->ch[c]); + if (ch) + { + GLfloat lx=0, ly=0; + for (i = ch->num_strokes, stroke = ch->stroke; + i > 0; i--, stroke++) { + for (j = stroke->num_coords, coord = stroke->coord; + j > 0; j--, coord++) + { +# ifdef SMOOTH_TUBE + int smooth = True; +# else + int smooth = False; +# endif + + if (j != stroke->num_coords) + *polysP += tube (lx, ly, 0, + coord->x, coord->y, 0, + tube_width, + tube_width * 0.15, + TUBE_FACES, smooth, False, wire); + lx = coord->x; + ly = coord->y; + + /* Put a sphere at the endpoint of every line segment. Wasteful + on curves like "0" but necessary on corners like "4". */ + if (! wire) + { + glPushMatrix(); + glTranslatef (lx, ly, 0); + glScalef (tube_width, tube_width, tube_width); + *polysP += unit_sphere (TUBE_FACES, TUBE_FACES, wire); + glPopMatrix(); + } + } + } + return (int) (ch->right + tube_width); + } + return 0; +} + + +static int +text_extents (const char *string, int *wP, int *hP) +{ + const char *s, *start; + int line_height = GLUT_FONT->top - GLUT_FONT->bottom; + int lines = 0; + *wP = 0; + *hP = 0; + start = string; + s = start; + while (1) + if (*s == '\n' || *s == 0) + { + int w = 0; + while (start < s) + { + w += glutStrokeWidth(GLUT_FONT, *start); + start++; + } + start = s+1; + + if (w > *wP) *wP = w; + *hP += line_height; + lines++; + if (*s == 0) break; + s++; + } + else + s++; + + return lines; +} + + +static unsigned long +fill_string (const char *string, Bool wire) +{ + int polys = 0; + const char *s, *start; + int line_height = GLUT_FONT->top - GLUT_FONT->bottom; + int off; + GLfloat x = 0, y = 0; + + int ow, oh; + text_extents (string, &ow, &oh); + + y = oh / 2 - line_height; + + start = string; + s = start; + while (1) + if (*s == '\n' || *s == 0) + { + int line_w = 0; + const char *s2; + const char *lstart = start; + const char *lend = s; + + /* strip off whitespace at beginning and end of line + (since we're centering.) */ + while (lend > lstart && isspace(lend[-1])) + lend--; + while (lstart < lend && isspace(*lstart)) + lstart++; + + for (s2 = lstart; s2 < lend; s2++) + line_w += glutStrokeWidth (GLUT_FONT, *s2); + + x = (-ow/2) + ((ow-line_w)/2); + for (s2 = lstart; s2 < lend; s2++) + { + glPushMatrix(); + glTranslatef(x, y, 0); + off = fill_character (GLUT_FONT, *s2, wire, &polys); + x += off; + glPopMatrix(); + } + + start = s+1; + + y -= line_height; + if (*s == 0) break; + s++; + } + else + s++; + return polys; +} + + +ENTRYPOINT void +draw_text (ModeInfo *mi) +{ + text_configuration *tp = &tps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + + GLfloat white[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat color[4] = {0.0, 0.0, 0.0, 1.0}; + + if (!tp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tp->glx_context)); + + if (tp->reload) + { + if (time ((time_t *) 0) >= tp->last_update + tp->reload) + { + parse_text (mi); + tp->last_update = time ((time_t *) 0); + } + } + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + glScalef(1.1, 1.1, 1.1); + glRotatef(current_device_rotation(), 0, 0, 1); + + { + double x, y, z; + get_position (tp->rot, &x, &y, &z, !tp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 8); + + gltrackball_rotate (tp->trackball); + + if (face_front_p) + { + double max = 90; + get_position (tp->rot2, &x, &y, &z, !tp->button_down_p); + if (tp->spinx) glRotatef (max/2 - x*max, 1, 0, 0); + if (tp->spiny) glRotatef (max/2 - y*max, 0, 1, 0); + if (tp->spinz) glRotatef (max/2 - z*max, 0, 0, 1); + } + else + { + get_rotation (tp->rot, &x, &y, &z, !tp->button_down_p); + glRotatef (x * 360, 1, 0, 0); + glRotatef (y * 360, 0, 1, 0); + glRotatef (z * 360, 0, 0, 1); + } + } + + + glColor4fv (white); + + color[0] = tp->colors[tp->ccolor].red / 65536.0; + color[1] = tp->colors[tp->ccolor].green / 65536.0; + color[2] = tp->colors[tp->ccolor].blue / 65536.0; + tp->ccolor++; + if (tp->ccolor >= tp->ncolors) tp->ccolor = 0; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + + glScalef(scale_factor, scale_factor, scale_factor); + + mi->polygon_count = fill_string(tp->text, wire); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT void +free_text(ModeInfo * mi) +{ + text_configuration *tp = &tps[MI_SCREEN(mi)]; + if (tp->tc) + textclient_close (tp->tc); +} + + +XSCREENSAVER_MODULE_2 ("GLText", gltext, text) + +#endif /* USE_GL */ diff --git a/hacks/glx/gltext.man b/hacks/glx/gltext.man new file mode 100644 index 0000000..0d30c5f --- /dev/null +++ b/hacks/glx/gltext.man @@ -0,0 +1,152 @@ +.de EX \"Begin example +.ne 5 +.if n .sp 1 +.if t .sp .5 +.nf +.in +.5i +.. +.de EE +.fi +.in -.5i +.if n .sp 1 +.if t .sp .5 +.. +.TH XScreenSaver 1 "25-Jul-98" "X Version 11" +.SH NAME +gltext - draws text spinning around in 3D +.SH SYNOPSIS +.B gltext +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] +[\-text \fIstring\fP] +[\-program \fIcommand\fP] +[\-wander] [\-no-wander] +[\-spin \fIaxes\fP] +[\-no-spin] +[\-front] [\-no\-front] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIgltext\fP program draws some text spinning around in 3D, using +a font that appears to be made of solid tubes. +.SH OPTIONS +.I gltext +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-text \fIstring\fP +The text to display. This may contain newlines, but it shouldn't be +very long. The default is to display the machine name and OS version. + +This may also be a format string acceptable to +.BR date (1) +and +.BR strftime (3) , +in which case, it will be updated once a second. So to make this +program display a spinning digital clock, you could do this: +.EX +gltext -text "%A%n%d %b %Y%n%l:%M:%S %p" +.EE +To include a literal `%', you must double it: `%%'. + +See the man page for +.BR strftime (3) +for more details. +.TP 8 +.B \-program \fIcommand\fP +The given program is run, and its output is displayed. +If specified, this overrides \fI\-text\fP. +The output of this program will be repeatedely displayed, with new +pages of text shifting in every few seconds. Lines should be relatively +short. You might try: +.EX +-program 'xscreensaver-text --cols 20' +.EE +.TP 8 +.B \-maxlines +Set the number of lines of text to display. By default, +.I gltext +will print 8 lines of text at a time. Use this option to increase or +decrease that number. Be aware that +.I gltext +is designed to work with a fairly small amount of text, so setting this +value too high might result in slow performance or strange behaviour +stemming from buffer overflows. Increase at your own risk. +.TP 8 +.B \-mono +Display the text in a monospace font. Default is a variable-width font. +.TP 8 +.B \-no\-mono +Display the text in a variable-width font. This is the default. +.TP 8 +.B \-wander +Move the text around the screen. This is the default. +.TP 8 +.B \-no\-wander +Keep the text centered on the screen. +.TP 8 +.B \-wander\-speed +Sets the speed at which the text wanders around. Default is 0.02. +.TP 8 +.B \-spin +Which axes around which the text should spin. The default is "XYZ", +meaning rotate it freely in space. "\fB\-spin Z\fP" would rotate the +text in the plane of the screen while not rotating it into or out +of the screen; etc. +.TP 8 +.B \-no\-spin +Don't spin the text at all: the same as \fB\-spin ""\fP. +.TP 8 +.B \-front +When spinning, never spin all the way around or upside down: +always face mostly forward so that the text is easily readable. +.TP 8 +.B \-no\-front +Allow spins to go all the way around or upside down. This is the default. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-scale +Sets the scale at which the text is rendered. Bigger values will result +in bigger text; smaller values will result in smaller text. The default +value is 0.01. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver-text (1) +.SH COPYRIGHT +Copyright \(co 2001-2014 by Jamie Zawinski. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +Jamie Zawinski diff --git a/hacks/glx/gltrackball.c b/hacks/glx/gltrackball.c new file mode 100644 index 0000000..57b4b99 --- /dev/null +++ b/hacks/glx/gltrackball.c @@ -0,0 +1,337 @@ +/* gltrackball, Copyright (c) 2002-2017 Jamie Zawinski + * GL-flavored wrapper for trackball.c + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#include +#include +#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_COCOA +# include "jwxyz.h" +#elif defined(HAVE_ANDROID) +# include "jwxyz.h" +# include +#else /* real X11 */ +# include +# include +# include +#endif /* !HAVE_COCOA */ + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +# define Button4 4 /* WTF */ +# define Button5 5 +# define Button6 6 +# define Button7 7 + +#include "trackball.h" +#include "gltrackball.h" + +#if defined(USE_IPHONE) || defined(HAVE_ANDROID) + /* Surely this should be defined somewhere more centrally... */ +# define HAVE_MOBILE +#endif + +/* Bah, copied from ../fps.h */ +#ifdef HAVE_MOBILE + extern double current_device_rotation (void); +#else +# define current_device_rotation() (0) +#endif + + +struct trackball_state { + int ow, oh; + double x, y; + double dx, dy, ddx, ddy; + GLfloat q[4]; + int button_down_p; + int ignore_device_rotation_p; +}; + +/* Returns a trackball_state object, which encapsulates the stuff necessary + to make dragging the mouse on the window of a GL program do the right thing. + */ +trackball_state * +gltrackball_init (int ignore_device_rotation_p) +{ + trackball_state *ts = (trackball_state *) calloc (1, sizeof (*ts)); + if (!ts) return 0; + ts->ignore_device_rotation_p = ignore_device_rotation_p; + trackball (ts->q, 0, 0, 0, 0); + return ts; +} + +/* Device rotation interacts very strangely with mouse positions. + I'm not entirely sure this is the right fix. + */ +static void +adjust_for_device_rotation (trackball_state *ts, + double *x, double *y, double *w, double *h) +{ + int rot = (int) current_device_rotation(); + int swap; + + if (ts->ignore_device_rotation_p) return; + + while (rot <= -180) rot += 360; + while (rot > 180) rot -= 360; + + if (rot > 135 || rot < -135) /* 180 */ + { + *x = *w - *x; + *y = *h - *y; + } + else if (rot > 45) /* 90 */ + { + swap = *x; *x = *y; *y = swap; + swap = *w; *w = *h; *h = swap; + *x = *w - *x; + } + else if (rot < -45) /* 270 */ + { + swap = *x; *x = *y; *y = swap; + swap = *w; *w = *h; *h = swap; + *y = *h - *y; + } +} + + +/* Begin tracking the mouse: Call this when the mouse button goes down. + x and y are the mouse position relative to the window. + w and h are the size of the window. + */ +void +gltrackball_start (trackball_state *ts, int x, int y, int w, int h) +{ + ts->x = x; + ts->y = y; + ts->button_down_p = 1; + ts->dx = ts->ddx = 0; + ts->dy = ts->ddy = 0; +} + +/* Stop tracking the mouse: Call this when the mouse button goes up. + */ +void +gltrackball_stop (trackball_state *ts) +{ + ts->button_down_p = 0; +} + +static void +gltrackball_track_1 (trackball_state *ts, + double x, double y, + int w, int h, + int ignore_device_rotation_p) +{ + double X = x; + double Y = y; + double W = w, W2 = w; + double H = h, H2 = h; + float q2[4]; + double ox = ts->x; + double oy = ts->y; + + ts->x = x; + ts->y = y; + + if (! ignore_device_rotation_p) + { + adjust_for_device_rotation (ts, &ox, &oy, &W, &H); + adjust_for_device_rotation (ts, &X, &Y, &W2, &H2); + } + trackball (q2, + (2 * ox - W) / W, + (H - 2 * oy) / H, + (2 * X - W) / W, + (H - 2 * Y) / H); + + add_quats (q2, ts->q, ts->q); +} + + +/* Track the mouse: Call this each time the mouse moves with the button down. + x and y are the new mouse position relative to the window. + w and h are the size of the window. + */ +void +gltrackball_track (trackball_state *ts, int x, int y, int w, int h) +{ + double dampen = 0.01; /* This keeps it going for about 3 sec */ + ts->dx = x - ts->x; + ts->dy = y - ts->y; + ts->ddx = ts->dx * dampen; + ts->ddy = ts->dy * dampen; + ts->ow = w; + ts->oh = h; + gltrackball_track_1 (ts, x, y, w, h, False); +} + + +static void +gltrackball_dampen (double *n, double *dn) +{ + int pos = (*n > 0); + *n -= *dn; + if (pos != (*n > 0)) + *n = *dn = 0; +} + + +/* Reset the trackball to the default unrotated state, + plus an optional initial rotation. + */ +void +gltrackball_reset (trackball_state *ts, float x, float y) +{ + int bd = ts->button_down_p; + int ig = ts->ignore_device_rotation_p; + memset (ts, 0, sizeof(*ts)); + ts->button_down_p = bd; + ts->ignore_device_rotation_p = ig; + trackball (ts->q, 0, 0, x, y); +} + + +/* Execute the rotations current encapsulated in the trackball_state: + this does something analagous to glRotatef(). + */ +void +gltrackball_rotate (trackball_state *ts) +{ + GLfloat m[4][4]; + if (!ts->button_down_p && + (ts->ddx != 0 || + ts->ddy != 0)) + { + /* Apply inertia: keep moving in the same direction as the last move. */ + gltrackball_track_1 (ts, + ts->x + ts->dx, + ts->y + ts->dy, + ts->ow, ts->oh, + False); + + /* Dampen inertia: gradually stop spinning. */ + gltrackball_dampen (&ts->dx, &ts->ddx); + gltrackball_dampen (&ts->dy, &ts->ddy); + } + + build_rotmatrix (m, ts->q); + glMultMatrixf (&m[0][0]); +} + + +/* Call this when a mouse-wheel click is detected. + Clicks act like horizontal or vertical drags. + Percent is the length of the drag as a percentage of the screen size. + Button is 'Button4' or 'Button5' (for the vertical wheel) + or 'Button5' or 'Button6' (for the horizontal wheel). + If `flip_p' is true, swap the horizontal and vertical axes. + */ +void +gltrackball_mousewheel (trackball_state *ts, + int button, int percent, int flip_p) +{ + int up_p; + int horizontal_p; + int mx, my, move, scale; + +#ifdef HAVE_JWXYZ + flip_p = 0; /* MacOS has already handled this. */ +#endif + + switch (button) { + case Button4: up_p = 1; horizontal_p = 0; break; + case Button5: up_p = 0; horizontal_p = 0; break; + case Button6: up_p = 1; horizontal_p = 1; break; + case Button7: up_p = 0; horizontal_p = 1; break; + default: abort(); break; + } + + if (flip_p) + { + horizontal_p = !horizontal_p; + up_p = !up_p; + } + + scale = mx = my = 1000; + move = (up_p + ? floor (scale * (1.0 - (percent / 100.0))) + : ceil (scale * (1.0 + (percent / 100.0)))); + if (horizontal_p) mx = move; + else my = move; + gltrackball_start (ts, scale, scale, scale*2, scale*2); + gltrackball_track (ts, mx, my, scale*2, scale*2); +} + +void +gltrackball_get_quaternion (trackball_state *ts, float q[4]) +{ + int i; + for (i=0; i<4; i++) + q[i] = ts->q[i]; +} + + +/* A utility function for event-handler functions: + Handles the various motion and click events related to trackballs. + Returns True if the event was handled. + */ +Bool +gltrackball_event_handler (XEvent *event, + trackball_state *ts, + int window_width, int window_height, + Bool *button_down_p) +{ + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + *button_down_p = True; + gltrackball_start (ts, + event->xbutton.x, event->xbutton.y, + window_width, window_height); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + *button_down_p = False; + gltrackball_stop (ts); + return True; + } + else if (event->xany.type == ButtonPress && + (event->xbutton.button == Button4 || + event->xbutton.button == Button5 || + event->xbutton.button == Button6 || + event->xbutton.button == Button7)) + { + gltrackball_mousewheel (ts, event->xbutton.button, 10, + !!event->xbutton.state); + return True; + } + else if (event->xany.type == MotionNotify && + *button_down_p) + { + gltrackball_track (ts, + event->xmotion.x, event->xmotion.y, + window_width, window_height); + return True; + } + + return False; +} diff --git a/hacks/glx/gltrackball.h b/hacks/glx/gltrackball.h new file mode 100644 index 0000000..ba9e574 --- /dev/null +++ b/hacks/glx/gltrackball.h @@ -0,0 +1,72 @@ +/* gltrackball, Copyright (c) 2002-2017 Jamie Zawinski + * GL-flavored wrapper for trackball.c + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __GLTRACKBALL_H__ +#define __GLTRACKBALL_H__ + +typedef struct trackball_state trackball_state; + +/* Returns a trackball_state object, which encapsulates the stuff necessary + to make dragging the mouse on the window of a GL program do the right thing. + */ +extern trackball_state *gltrackball_init (int ignore_device_rotation_p); + +/* Begin tracking the mouse: Call this when the mouse button goes down. + x and y are the mouse position relative to the window. + w and h are the size of the window. + */ +extern void gltrackball_start (trackball_state *, int x, int y, int w, int h); + +/* Track the mouse: Call this each time the mouse moves with the button down. + x and y are the new mouse position relative to the window. + w and h are the size of the window. + */ +extern void gltrackball_track (trackball_state *, int x, int y, int w, int h); + +/* Stop tracking the mouse: Call this when the mouse button goes up. + */ +extern void gltrackball_stop (trackball_state *); + +/* Execute the rotations current encapsulated in the trackball_state: + this does something analagous to glRotatef(). + */ +extern void gltrackball_rotate (trackball_state *); + +/* Call this when a mouse-wheel click is detected. + Clicks act like horizontal or vertical drags. + Percent is the length of the drag as a percentage of the screen size. + Button is 'Button4' or 'Button5' (for the vertical wheel) + or 'Button5' or 'Button6' (for the horizontal wheel). + If `flip_p' is true, swap the horizontal and vertical axes. + */ +void gltrackball_mousewheel (trackball_state *ts, + int button, int percent, int flip_p); + +/* Return the quaternion encapsulated by the trackball state. + */ +extern void gltrackball_get_quaternion (trackball_state *ts, float q[4]); + +/* Reset the trackball to the default unrotated state, + plus an optional initial rotation. + */ +extern void gltrackball_reset (trackball_state *ts, float x, float y); + +/* A utility function for event-handler functions: + Handles the various motion and click events related to trackballs. + Returns True if the event was handled. + */ +extern Bool gltrackball_event_handler (XEvent *, + trackball_state *, + int window_width, int window_height, + Bool *button_down_p); + +#endif /* __GLTRACKBALL_H__ */ diff --git a/hacks/glx/glut_mroman.h b/hacks/glx/glut_mroman.h new file mode 100644 index 0000000..39eb171 --- /dev/null +++ b/hacks/glx/glut_mroman.h @@ -0,0 +1,2456 @@ +/* Roman monospaced simplex stroke font copyright (c) 1989, 1990, 1991 + * by Sun Microsystems, Inc. and the X Consortium. + * Originally part of the GLUT library by Mark J. Kilgard. + * I have changed names so that this can be a .h rather than a .c file without + * causing name clashes with glut_roman.h + */ + +#include "glutstroke.h" + +/* char: 33 '!' */ + +static const CoordRec monoChar33_stroke0[] = { + { 52.381, 100 }, + { 52.381, 33.3333 }, +}; + +static const CoordRec monoChar33_stroke1[] = { + { 52.381, 9.5238 }, + { 47.6191, 4.7619 }, + { 52.381, 0 }, + { 57.1429, 4.7619 }, + { 52.381, 9.5238 }, +}; + +static const StrokeRec monoChar33[] = { + { 2, monoChar33_stroke0 }, + { 5, monoChar33_stroke1 }, +}; + +/* char: 34 '"' */ + +static const CoordRec monoChar34_stroke0[] = { + { 33.3334, 100 }, + { 33.3334, 66.6667 }, +}; + +static const CoordRec monoChar34_stroke1[] = { + { 71.4286, 100 }, + { 71.4286, 66.6667 }, +}; + +static const StrokeRec monoChar34[] = { + { 2, monoChar34_stroke0 }, + { 2, monoChar34_stroke1 }, +}; + +/* char: 35 '#' */ + +static const CoordRec monoChar35_stroke0[] = { + { 54.7619, 119.048 }, + { 21.4286, -33.3333 }, +}; + +static const CoordRec monoChar35_stroke1[] = { + { 83.3334, 119.048 }, + { 50, -33.3333 }, +}; + +static const CoordRec monoChar35_stroke2[] = { + { 21.4286, 57.1429 }, + { 88.0952, 57.1429 }, +}; + +static const CoordRec monoChar35_stroke3[] = { + { 16.6667, 28.5714 }, + { 83.3334, 28.5714 }, +}; + +static const StrokeRec monoChar35[] = { + { 2, monoChar35_stroke0 }, + { 2, monoChar35_stroke1 }, + { 2, monoChar35_stroke2 }, + { 2, monoChar35_stroke3 }, +}; + +/* char: 36 '$' */ + +static const CoordRec monoChar36_stroke0[] = { + { 42.8571, 119.048 }, + { 42.8571, -19.0476 }, +}; + +static const CoordRec monoChar36_stroke1[] = { + { 61.9047, 119.048 }, + { 61.9047, -19.0476 }, +}; + +static const CoordRec monoChar36_stroke2[] = { + { 85.7143, 85.7143 }, + { 76.1905, 95.2381 }, + { 61.9047, 100 }, + { 42.8571, 100 }, + { 28.5714, 95.2381 }, + { 19.0476, 85.7143 }, + { 19.0476, 76.1905 }, + { 23.8095, 66.6667 }, + { 28.5714, 61.9048 }, + { 38.0952, 57.1429 }, + { 66.6666, 47.619 }, + { 76.1905, 42.8571 }, + { 80.9524, 38.0952 }, + { 85.7143, 28.5714 }, + { 85.7143, 14.2857 }, + { 76.1905, 4.7619 }, + { 61.9047, 0 }, + { 42.8571, 0 }, + { 28.5714, 4.7619 }, + { 19.0476, 14.2857 }, +}; + +static const StrokeRec monoChar36[] = { + { 2, monoChar36_stroke0 }, + { 2, monoChar36_stroke1 }, + { 20, monoChar36_stroke2 }, +}; + +/* char: 37 '%' */ + +static const CoordRec monoChar37_stroke0[] = { + { 95.2381, 100 }, + { 9.5238, 0 }, +}; + +static const CoordRec monoChar37_stroke1[] = { + { 33.3333, 100 }, + { 42.8571, 90.4762 }, + { 42.8571, 80.9524 }, + { 38.0952, 71.4286 }, + { 28.5714, 66.6667 }, + { 19.0476, 66.6667 }, + { 9.5238, 76.1905 }, + { 9.5238, 85.7143 }, + { 14.2857, 95.2381 }, + { 23.8095, 100 }, + { 33.3333, 100 }, + { 42.8571, 95.2381 }, + { 57.1428, 90.4762 }, + { 71.4286, 90.4762 }, + { 85.7143, 95.2381 }, + { 95.2381, 100 }, +}; + +static const CoordRec monoChar37_stroke2[] = { + { 76.1905, 33.3333 }, + { 66.6667, 28.5714 }, + { 61.9048, 19.0476 }, + { 61.9048, 9.5238 }, + { 71.4286, 0 }, + { 80.9524, 0 }, + { 90.4762, 4.7619 }, + { 95.2381, 14.2857 }, + { 95.2381, 23.8095 }, + { 85.7143, 33.3333 }, + { 76.1905, 33.3333 }, +}; + +static const StrokeRec monoChar37[] = { + { 2, monoChar37_stroke0 }, + { 16, monoChar37_stroke1 }, + { 11, monoChar37_stroke2 }, +}; + +/* char: 38 '&' */ + +static const CoordRec monoChar38_stroke0[] = { + { 100, 57.1429 }, + { 100, 61.9048 }, + { 95.2381, 66.6667 }, + { 90.4762, 66.6667 }, + { 85.7143, 61.9048 }, + { 80.9524, 52.381 }, + { 71.4286, 28.5714 }, + { 61.9048, 14.2857 }, + { 52.3809, 4.7619 }, + { 42.8571, 0 }, + { 23.8095, 0 }, + { 14.2857, 4.7619 }, + { 9.5238, 9.5238 }, + { 4.7619, 19.0476 }, + { 4.7619, 28.5714 }, + { 9.5238, 38.0952 }, + { 14.2857, 42.8571 }, + { 47.619, 61.9048 }, + { 52.3809, 66.6667 }, + { 57.1429, 76.1905 }, + { 57.1429, 85.7143 }, + { 52.3809, 95.2381 }, + { 42.8571, 100 }, + { 33.3333, 95.2381 }, + { 28.5714, 85.7143 }, + { 28.5714, 76.1905 }, + { 33.3333, 61.9048 }, + { 42.8571, 47.619 }, + { 66.6667, 14.2857 }, + { 76.1905, 4.7619 }, + { 85.7143, 0 }, + { 95.2381, 0 }, + { 100, 4.7619 }, + { 100, 9.5238 }, +}; + +static const StrokeRec monoChar38[] = { + { 34, monoChar38_stroke0 }, +}; + +/* char: 39 ''' */ + +static const CoordRec monoChar39_stroke0[] = { + { 52.381, 100 }, + { 52.381, 66.6667 }, +}; + +static const StrokeRec monoChar39[] = { + { 2, monoChar39_stroke0 }, +}; + +/* char: 40 '(' */ + +static const CoordRec monoChar40_stroke0[] = { + { 69.0476, 119.048 }, + { 59.5238, 109.524 }, + { 50, 95.2381 }, + { 40.4762, 76.1905 }, + { 35.7143, 52.381 }, + { 35.7143, 33.3333 }, + { 40.4762, 9.5238 }, + { 50, -9.5238 }, + { 59.5238, -23.8095 }, + { 69.0476, -33.3333 }, +}; + +static const StrokeRec monoChar40[] = { + { 10, monoChar40_stroke0 }, +}; + +/* char: 41 ')' */ + +static const CoordRec monoChar41_stroke0[] = { + { 35.7143, 119.048 }, + { 45.2381, 109.524 }, + { 54.7619, 95.2381 }, + { 64.2857, 76.1905 }, + { 69.0476, 52.381 }, + { 69.0476, 33.3333 }, + { 64.2857, 9.5238 }, + { 54.7619, -9.5238 }, + { 45.2381, -23.8095 }, + { 35.7143, -33.3333 }, +}; + +static const StrokeRec monoChar41[] = { + { 10, monoChar41_stroke0 }, +}; + +/* char: 42 '*' */ + +static const CoordRec monoChar42_stroke0[] = { + { 52.381, 71.4286 }, + { 52.381, 14.2857 }, +}; + +static const CoordRec monoChar42_stroke1[] = { + { 28.5715, 57.1429 }, + { 76.1905, 28.5714 }, +}; + +static const CoordRec monoChar42_stroke2[] = { + { 76.1905, 57.1429 }, + { 28.5715, 28.5714 }, +}; + +static const StrokeRec monoChar42[] = { + { 2, monoChar42_stroke0 }, + { 2, monoChar42_stroke1 }, + { 2, monoChar42_stroke2 }, +}; + +/* char: 43 '+' */ + +static const CoordRec monoChar43_stroke0[] = { + { 52.3809, 85.7143 }, + { 52.3809, 0 }, +}; + +static const CoordRec monoChar43_stroke1[] = { + { 9.5238, 42.8571 }, + { 95.2381, 42.8571 }, +}; + +static const StrokeRec monoChar43[] = { + { 2, monoChar43_stroke0 }, + { 2, monoChar43_stroke1 }, +}; + +/* char: 44 ',' */ + +static const CoordRec monoChar44_stroke0[] = { + { 57.1429, 4.7619 }, + { 52.381, 0 }, + { 47.6191, 4.7619 }, + { 52.381, 9.5238 }, + { 57.1429, 4.7619 }, + { 57.1429, -4.7619 }, + { 52.381, -14.2857 }, + { 47.6191, -19.0476 }, +}; + +static const StrokeRec monoChar44[] = { + { 8, monoChar44_stroke0 }, +}; + +/* char: 45 '-' */ + +static const CoordRec monoChar45_stroke0[] = { + { 9.5238, 42.8571 }, + { 95.2381, 42.8571 }, +}; + +static const StrokeRec monoChar45[] = { + { 2, monoChar45_stroke0 }, +}; + +/* char: 46 '.' */ + +static const CoordRec monoChar46_stroke0[] = { + { 52.381, 9.5238 }, + { 47.6191, 4.7619 }, + { 52.381, 0 }, + { 57.1429, 4.7619 }, + { 52.381, 9.5238 }, +}; + +static const StrokeRec monoChar46[] = { + { 5, monoChar46_stroke0 }, +}; + +/* char: 47 '/' */ + +static const CoordRec monoChar47_stroke0[] = { + { 19.0476, -14.2857 }, + { 85.7143, 100 }, +}; + +static const StrokeRec monoChar47[] = { + { 2, monoChar47_stroke0 }, +}; + +/* char: 48 '0' */ + +static const CoordRec monoChar48_stroke0[] = { + { 47.619, 100 }, + { 33.3333, 95.2381 }, + { 23.8095, 80.9524 }, + { 19.0476, 57.1429 }, + { 19.0476, 42.8571 }, + { 23.8095, 19.0476 }, + { 33.3333, 4.7619 }, + { 47.619, 0 }, + { 57.1428, 0 }, + { 71.4286, 4.7619 }, + { 80.9524, 19.0476 }, + { 85.7143, 42.8571 }, + { 85.7143, 57.1429 }, + { 80.9524, 80.9524 }, + { 71.4286, 95.2381 }, + { 57.1428, 100 }, + { 47.619, 100 }, +}; + +static const StrokeRec monoChar48[] = { + { 17, monoChar48_stroke0 }, +}; + +/* char: 49 '1' */ + +static const CoordRec monoChar49_stroke0[] = { + { 40.4762, 80.9524 }, + { 50, 85.7143 }, + { 64.2857, 100 }, + { 64.2857, 0 }, +}; + +static const StrokeRec monoChar49[] = { + { 4, monoChar49_stroke0 }, +}; + +/* char: 50 '2' */ + +static const CoordRec monoChar50_stroke0[] = { + { 23.8095, 76.1905 }, + { 23.8095, 80.9524 }, + { 28.5714, 90.4762 }, + { 33.3333, 95.2381 }, + { 42.8571, 100 }, + { 61.9047, 100 }, + { 71.4286, 95.2381 }, + { 76.1905, 90.4762 }, + { 80.9524, 80.9524 }, + { 80.9524, 71.4286 }, + { 76.1905, 61.9048 }, + { 66.6666, 47.619 }, + { 19.0476, 0 }, + { 85.7143, 0 }, +}; + +static const StrokeRec monoChar50[] = { + { 14, monoChar50_stroke0 }, +}; + +/* char: 51 '3' */ + +static const CoordRec monoChar51_stroke0[] = { + { 28.5714, 100 }, + { 80.9524, 100 }, + { 52.3809, 61.9048 }, + { 66.6666, 61.9048 }, + { 76.1905, 57.1429 }, + { 80.9524, 52.381 }, + { 85.7143, 38.0952 }, + { 85.7143, 28.5714 }, + { 80.9524, 14.2857 }, + { 71.4286, 4.7619 }, + { 57.1428, 0 }, + { 42.8571, 0 }, + { 28.5714, 4.7619 }, + { 23.8095, 9.5238 }, + { 19.0476, 19.0476 }, +}; + +static const StrokeRec monoChar51[] = { + { 15, monoChar51_stroke0 }, +}; + +/* char: 52 '4' */ + +static const CoordRec monoChar52_stroke0[] = { + { 64.2857, 100 }, + { 16.6667, 33.3333 }, + { 88.0952, 33.3333 }, +}; + +static const CoordRec monoChar52_stroke1[] = { + { 64.2857, 100 }, + { 64.2857, 0 }, +}; + +static const StrokeRec monoChar52[] = { + { 3, monoChar52_stroke0 }, + { 2, monoChar52_stroke1 }, +}; + +/* char: 53 '5' */ + +static const CoordRec monoChar53_stroke0[] = { + { 76.1905, 100 }, + { 28.5714, 100 }, + { 23.8095, 57.1429 }, + { 28.5714, 61.9048 }, + { 42.8571, 66.6667 }, + { 57.1428, 66.6667 }, + { 71.4286, 61.9048 }, + { 80.9524, 52.381 }, + { 85.7143, 38.0952 }, + { 85.7143, 28.5714 }, + { 80.9524, 14.2857 }, + { 71.4286, 4.7619 }, + { 57.1428, 0 }, + { 42.8571, 0 }, + { 28.5714, 4.7619 }, + { 23.8095, 9.5238 }, + { 19.0476, 19.0476 }, +}; + +static const StrokeRec monoChar53[] = { + { 17, monoChar53_stroke0 }, +}; + +/* char: 54 '6' */ + +static const CoordRec monoChar54_stroke0[] = { + { 78.5714, 85.7143 }, + { 73.8096, 95.2381 }, + { 59.5238, 100 }, + { 50, 100 }, + { 35.7143, 95.2381 }, + { 26.1905, 80.9524 }, + { 21.4286, 57.1429 }, + { 21.4286, 33.3333 }, + { 26.1905, 14.2857 }, + { 35.7143, 4.7619 }, + { 50, 0 }, + { 54.7619, 0 }, + { 69.0476, 4.7619 }, + { 78.5714, 14.2857 }, + { 83.3334, 28.5714 }, + { 83.3334, 33.3333 }, + { 78.5714, 47.619 }, + { 69.0476, 57.1429 }, + { 54.7619, 61.9048 }, + { 50, 61.9048 }, + { 35.7143, 57.1429 }, + { 26.1905, 47.619 }, + { 21.4286, 33.3333 }, +}; + +static const StrokeRec monoChar54[] = { + { 23, monoChar54_stroke0 }, +}; + +/* char: 55 '7' */ + +static const CoordRec monoChar55_stroke0[] = { + { 85.7143, 100 }, + { 38.0952, 0 }, +}; + +static const CoordRec monoChar55_stroke1[] = { + { 19.0476, 100 }, + { 85.7143, 100 }, +}; + +static const StrokeRec monoChar55[] = { + { 2, monoChar55_stroke0 }, + { 2, monoChar55_stroke1 }, +}; + +/* char: 56 '8' */ + +static const CoordRec monoChar56_stroke0[] = { + { 42.8571, 100 }, + { 28.5714, 95.2381 }, + { 23.8095, 85.7143 }, + { 23.8095, 76.1905 }, + { 28.5714, 66.6667 }, + { 38.0952, 61.9048 }, + { 57.1428, 57.1429 }, + { 71.4286, 52.381 }, + { 80.9524, 42.8571 }, + { 85.7143, 33.3333 }, + { 85.7143, 19.0476 }, + { 80.9524, 9.5238 }, + { 76.1905, 4.7619 }, + { 61.9047, 0 }, + { 42.8571, 0 }, + { 28.5714, 4.7619 }, + { 23.8095, 9.5238 }, + { 19.0476, 19.0476 }, + { 19.0476, 33.3333 }, + { 23.8095, 42.8571 }, + { 33.3333, 52.381 }, + { 47.619, 57.1429 }, + { 66.6666, 61.9048 }, + { 76.1905, 66.6667 }, + { 80.9524, 76.1905 }, + { 80.9524, 85.7143 }, + { 76.1905, 95.2381 }, + { 61.9047, 100 }, + { 42.8571, 100 }, +}; + +static const StrokeRec monoChar56[] = { + { 29, monoChar56_stroke0 }, +}; + +/* char: 57 '9' */ + +static const CoordRec monoChar57_stroke0[] = { + { 83.3334, 66.6667 }, + { 78.5714, 52.381 }, + { 69.0476, 42.8571 }, + { 54.7619, 38.0952 }, + { 50, 38.0952 }, + { 35.7143, 42.8571 }, + { 26.1905, 52.381 }, + { 21.4286, 66.6667 }, + { 21.4286, 71.4286 }, + { 26.1905, 85.7143 }, + { 35.7143, 95.2381 }, + { 50, 100 }, + { 54.7619, 100 }, + { 69.0476, 95.2381 }, + { 78.5714, 85.7143 }, + { 83.3334, 66.6667 }, + { 83.3334, 42.8571 }, + { 78.5714, 19.0476 }, + { 69.0476, 4.7619 }, + { 54.7619, 0 }, + { 45.2381, 0 }, + { 30.9524, 4.7619 }, + { 26.1905, 14.2857 }, +}; + +static const StrokeRec monoChar57[] = { + { 23, monoChar57_stroke0 }, +}; + +/* char: 58 ':' */ + +static const CoordRec monoChar58_stroke0[] = { + { 52.381, 66.6667 }, + { 47.6191, 61.9048 }, + { 52.381, 57.1429 }, + { 57.1429, 61.9048 }, + { 52.381, 66.6667 }, +}; + +static const CoordRec monoChar58_stroke1[] = { + { 52.381, 9.5238 }, + { 47.6191, 4.7619 }, + { 52.381, 0 }, + { 57.1429, 4.7619 }, + { 52.381, 9.5238 }, +}; + +static const StrokeRec monoChar58[] = { + { 5, monoChar58_stroke0 }, + { 5, monoChar58_stroke1 }, +}; + +/* char: 59 ';' */ + +static const CoordRec monoChar59_stroke0[] = { + { 52.381, 66.6667 }, + { 47.6191, 61.9048 }, + { 52.381, 57.1429 }, + { 57.1429, 61.9048 }, + { 52.381, 66.6667 }, +}; + +static const CoordRec monoChar59_stroke1[] = { + { 57.1429, 4.7619 }, + { 52.381, 0 }, + { 47.6191, 4.7619 }, + { 52.381, 9.5238 }, + { 57.1429, 4.7619 }, + { 57.1429, -4.7619 }, + { 52.381, -14.2857 }, + { 47.6191, -19.0476 }, +}; + +static const StrokeRec monoChar59[] = { + { 5, monoChar59_stroke0 }, + { 8, monoChar59_stroke1 }, +}; + +/* char: 60 '<' */ + +static const CoordRec monoChar60_stroke0[] = { + { 90.4762, 85.7143 }, + { 14.2857, 42.8571 }, + { 90.4762, 0 }, +}; + +static const StrokeRec monoChar60[] = { + { 3, monoChar60_stroke0 }, +}; + +/* char: 61 '=' */ + +static const CoordRec monoChar61_stroke0[] = { + { 9.5238, 57.1429 }, + { 95.2381, 57.1429 }, +}; + +static const CoordRec monoChar61_stroke1[] = { + { 9.5238, 28.5714 }, + { 95.2381, 28.5714 }, +}; + +static const StrokeRec monoChar61[] = { + { 2, monoChar61_stroke0 }, + { 2, monoChar61_stroke1 }, +}; + +/* char: 62 '>' */ + +static const CoordRec monoChar62_stroke0[] = { + { 14.2857, 85.7143 }, + { 90.4762, 42.8571 }, + { 14.2857, 0 }, +}; + +static const StrokeRec monoChar62[] = { + { 3, monoChar62_stroke0 }, +}; + +/* char: 63 '?' */ + +static const CoordRec monoChar63_stroke0[] = { + { 23.8095, 76.1905 }, + { 23.8095, 80.9524 }, + { 28.5714, 90.4762 }, + { 33.3333, 95.2381 }, + { 42.8571, 100 }, + { 61.9047, 100 }, + { 71.4285, 95.2381 }, + { 76.1905, 90.4762 }, + { 80.9524, 80.9524 }, + { 80.9524, 71.4286 }, + { 76.1905, 61.9048 }, + { 71.4285, 57.1429 }, + { 52.3809, 47.619 }, + { 52.3809, 33.3333 }, +}; + +static const CoordRec monoChar63_stroke1[] = { + { 52.3809, 9.5238 }, + { 47.619, 4.7619 }, + { 52.3809, 0 }, + { 57.1428, 4.7619 }, + { 52.3809, 9.5238 }, +}; + +static const StrokeRec monoChar63[] = { + { 14, monoChar63_stroke0 }, + { 5, monoChar63_stroke1 }, +}; + +/* char: 64 '@' */ + +static const CoordRec monoChar64_stroke0[] = { + { 64.2857, 52.381 }, + { 54.7619, 57.1429 }, + { 45.2381, 57.1429 }, + { 40.4762, 47.619 }, + { 40.4762, 42.8571 }, + { 45.2381, 33.3333 }, + { 54.7619, 33.3333 }, + { 64.2857, 38.0952 }, +}; + +static const CoordRec monoChar64_stroke1[] = { + { 64.2857, 57.1429 }, + { 64.2857, 38.0952 }, + { 69.0476, 33.3333 }, + { 78.5714, 33.3333 }, + { 83.3334, 42.8571 }, + { 83.3334, 47.619 }, + { 78.5714, 61.9048 }, + { 69.0476, 71.4286 }, + { 54.7619, 76.1905 }, + { 50, 76.1905 }, + { 35.7143, 71.4286 }, + { 26.1905, 61.9048 }, + { 21.4286, 47.619 }, + { 21.4286, 42.8571 }, + { 26.1905, 28.5714 }, + { 35.7143, 19.0476 }, + { 50, 14.2857 }, + { 54.7619, 14.2857 }, + { 69.0476, 19.0476 }, +}; + +static const StrokeRec monoChar64[] = { + { 8, monoChar64_stroke0 }, + { 19, monoChar64_stroke1 }, +}; + +/* char: 65 'A' */ + +static const CoordRec monoChar65_stroke0[] = { + { 52.3809, 100 }, + { 14.2857, 0 }, +}; + +static const CoordRec monoChar65_stroke1[] = { + { 52.3809, 100 }, + { 90.4762, 0 }, +}; + +static const CoordRec monoChar65_stroke2[] = { + { 28.5714, 33.3333 }, + { 76.1905, 33.3333 }, +}; + +static const StrokeRec monoChar65[] = { + { 2, monoChar65_stroke0 }, + { 2, monoChar65_stroke1 }, + { 2, monoChar65_stroke2 }, +}; + +/* char: 66 'B' */ + +static const CoordRec monoChar66_stroke0[] = { + { 19.0476, 100 }, + { 19.0476, 0 }, +}; + +static const CoordRec monoChar66_stroke1[] = { + { 19.0476, 100 }, + { 61.9047, 100 }, + { 76.1905, 95.2381 }, + { 80.9524, 90.4762 }, + { 85.7143, 80.9524 }, + { 85.7143, 71.4286 }, + { 80.9524, 61.9048 }, + { 76.1905, 57.1429 }, + { 61.9047, 52.381 }, +}; + +static const CoordRec monoChar66_stroke2[] = { + { 19.0476, 52.381 }, + { 61.9047, 52.381 }, + { 76.1905, 47.619 }, + { 80.9524, 42.8571 }, + { 85.7143, 33.3333 }, + { 85.7143, 19.0476 }, + { 80.9524, 9.5238 }, + { 76.1905, 4.7619 }, + { 61.9047, 0 }, + { 19.0476, 0 }, +}; + +static const StrokeRec monoChar66[] = { + { 2, monoChar66_stroke0 }, + { 9, monoChar66_stroke1 }, + { 10, monoChar66_stroke2 }, +}; + +/* char: 67 'C' */ + +static const CoordRec monoChar67_stroke0[] = { + { 88.0952, 76.1905 }, + { 83.3334, 85.7143 }, + { 73.8096, 95.2381 }, + { 64.2857, 100 }, + { 45.2381, 100 }, + { 35.7143, 95.2381 }, + { 26.1905, 85.7143 }, + { 21.4286, 76.1905 }, + { 16.6667, 61.9048 }, + { 16.6667, 38.0952 }, + { 21.4286, 23.8095 }, + { 26.1905, 14.2857 }, + { 35.7143, 4.7619 }, + { 45.2381, 0 }, + { 64.2857, 0 }, + { 73.8096, 4.7619 }, + { 83.3334, 14.2857 }, + { 88.0952, 23.8095 }, +}; + +static const StrokeRec monoChar67[] = { + { 18, monoChar67_stroke0 }, +}; + +/* char: 68 'D' */ + +static const CoordRec monoChar68_stroke0[] = { + { 19.0476, 100 }, + { 19.0476, 0 }, +}; + +static const CoordRec monoChar68_stroke1[] = { + { 19.0476, 100 }, + { 52.3809, 100 }, + { 66.6666, 95.2381 }, + { 76.1905, 85.7143 }, + { 80.9524, 76.1905 }, + { 85.7143, 61.9048 }, + { 85.7143, 38.0952 }, + { 80.9524, 23.8095 }, + { 76.1905, 14.2857 }, + { 66.6666, 4.7619 }, + { 52.3809, 0 }, + { 19.0476, 0 }, +}; + +static const StrokeRec monoChar68[] = { + { 2, monoChar68_stroke0 }, + { 12, monoChar68_stroke1 }, +}; + +/* char: 69 'E' */ + +static const CoordRec monoChar69_stroke0[] = { + { 21.4286, 100 }, + { 21.4286, 0 }, +}; + +static const CoordRec monoChar69_stroke1[] = { + { 21.4286, 100 }, + { 83.3334, 100 }, +}; + +static const CoordRec monoChar69_stroke2[] = { + { 21.4286, 52.381 }, + { 59.5238, 52.381 }, +}; + +static const CoordRec monoChar69_stroke3[] = { + { 21.4286, 0 }, + { 83.3334, 0 }, +}; + +static const StrokeRec monoChar69[] = { + { 2, monoChar69_stroke0 }, + { 2, monoChar69_stroke1 }, + { 2, monoChar69_stroke2 }, + { 2, monoChar69_stroke3 }, +}; + +/* char: 70 'F' */ + +static const CoordRec monoChar70_stroke0[] = { + { 21.4286, 100 }, + { 21.4286, 0 }, +}; + +static const CoordRec monoChar70_stroke1[] = { + { 21.4286, 100 }, + { 83.3334, 100 }, +}; + +static const CoordRec monoChar70_stroke2[] = { + { 21.4286, 52.381 }, + { 59.5238, 52.381 }, +}; + +static const StrokeRec monoChar70[] = { + { 2, monoChar70_stroke0 }, + { 2, monoChar70_stroke1 }, + { 2, monoChar70_stroke2 }, +}; + +/* char: 71 'G' */ + +static const CoordRec monoChar71_stroke0[] = { + { 88.0952, 76.1905 }, + { 83.3334, 85.7143 }, + { 73.8096, 95.2381 }, + { 64.2857, 100 }, + { 45.2381, 100 }, + { 35.7143, 95.2381 }, + { 26.1905, 85.7143 }, + { 21.4286, 76.1905 }, + { 16.6667, 61.9048 }, + { 16.6667, 38.0952 }, + { 21.4286, 23.8095 }, + { 26.1905, 14.2857 }, + { 35.7143, 4.7619 }, + { 45.2381, 0 }, + { 64.2857, 0 }, + { 73.8096, 4.7619 }, + { 83.3334, 14.2857 }, + { 88.0952, 23.8095 }, + { 88.0952, 38.0952 }, +}; + +static const CoordRec monoChar71_stroke1[] = { + { 64.2857, 38.0952 }, + { 88.0952, 38.0952 }, +}; + +static const StrokeRec monoChar71[] = { + { 19, monoChar71_stroke0 }, + { 2, monoChar71_stroke1 }, +}; + +/* char: 72 'H' */ + +static const CoordRec monoChar72_stroke0[] = { + { 19.0476, 100 }, + { 19.0476, 0 }, +}; + +static const CoordRec monoChar72_stroke1[] = { + { 85.7143, 100 }, + { 85.7143, 0 }, +}; + +static const CoordRec monoChar72_stroke2[] = { + { 19.0476, 52.381 }, + { 85.7143, 52.381 }, +}; + +static const StrokeRec monoChar72[] = { + { 2, monoChar72_stroke0 }, + { 2, monoChar72_stroke1 }, + { 2, monoChar72_stroke2 }, +}; + +/* char: 73 'I' */ + +static const CoordRec monoChar73_stroke0[] = { + { 52.381, 100 }, + { 52.381, 0 }, +}; + +static const StrokeRec monoChar73[] = { + { 2, monoChar73_stroke0 }, +}; + +/* char: 74 'J' */ + +static const CoordRec monoChar74_stroke0[] = { + { 76.1905, 100 }, + { 76.1905, 23.8095 }, + { 71.4286, 9.5238 }, + { 66.6667, 4.7619 }, + { 57.1429, 0 }, + { 47.6191, 0 }, + { 38.0953, 4.7619 }, + { 33.3334, 9.5238 }, + { 28.5715, 23.8095 }, + { 28.5715, 33.3333 }, +}; + +static const StrokeRec monoChar74[] = { + { 10, monoChar74_stroke0 }, +}; + +/* char: 75 'K' */ + +static const CoordRec monoChar75_stroke0[] = { + { 19.0476, 100 }, + { 19.0476, 0 }, +}; + +static const CoordRec monoChar75_stroke1[] = { + { 85.7143, 100 }, + { 19.0476, 33.3333 }, +}; + +static const CoordRec monoChar75_stroke2[] = { + { 42.8571, 57.1429 }, + { 85.7143, 0 }, +}; + +static const StrokeRec monoChar75[] = { + { 2, monoChar75_stroke0 }, + { 2, monoChar75_stroke1 }, + { 2, monoChar75_stroke2 }, +}; + +/* char: 76 'L' */ + +static const CoordRec monoChar76_stroke0[] = { + { 23.8095, 100 }, + { 23.8095, 0 }, +}; + +static const CoordRec monoChar76_stroke1[] = { + { 23.8095, 0 }, + { 80.9524, 0 }, +}; + +static const StrokeRec monoChar76[] = { + { 2, monoChar76_stroke0 }, + { 2, monoChar76_stroke1 }, +}; + +/* char: 77 'M' */ + +static const CoordRec monoChar77_stroke0[] = { + { 14.2857, 100 }, + { 14.2857, 0 }, +}; + +static const CoordRec monoChar77_stroke1[] = { + { 14.2857, 100 }, + { 52.3809, 0 }, +}; + +static const CoordRec monoChar77_stroke2[] = { + { 90.4762, 100 }, + { 52.3809, 0 }, +}; + +static const CoordRec monoChar77_stroke3[] = { + { 90.4762, 100 }, + { 90.4762, 0 }, +}; + +static const StrokeRec monoChar77[] = { + { 2, monoChar77_stroke0 }, + { 2, monoChar77_stroke1 }, + { 2, monoChar77_stroke2 }, + { 2, monoChar77_stroke3 }, +}; + +/* char: 78 'N' */ + +static const CoordRec monoChar78_stroke0[] = { + { 19.0476, 100 }, + { 19.0476, 0 }, +}; + +static const CoordRec monoChar78_stroke1[] = { + { 19.0476, 100 }, + { 85.7143, 0 }, +}; + +static const CoordRec monoChar78_stroke2[] = { + { 85.7143, 100 }, + { 85.7143, 0 }, +}; + +static const StrokeRec monoChar78[] = { + { 2, monoChar78_stroke0 }, + { 2, monoChar78_stroke1 }, + { 2, monoChar78_stroke2 }, +}; + +/* char: 79 'O' */ + +static const CoordRec monoChar79_stroke0[] = { + { 42.8571, 100 }, + { 33.3333, 95.2381 }, + { 23.8095, 85.7143 }, + { 19.0476, 76.1905 }, + { 14.2857, 61.9048 }, + { 14.2857, 38.0952 }, + { 19.0476, 23.8095 }, + { 23.8095, 14.2857 }, + { 33.3333, 4.7619 }, + { 42.8571, 0 }, + { 61.9047, 0 }, + { 71.4286, 4.7619 }, + { 80.9524, 14.2857 }, + { 85.7143, 23.8095 }, + { 90.4762, 38.0952 }, + { 90.4762, 61.9048 }, + { 85.7143, 76.1905 }, + { 80.9524, 85.7143 }, + { 71.4286, 95.2381 }, + { 61.9047, 100 }, + { 42.8571, 100 }, +}; + +static const StrokeRec monoChar79[] = { + { 21, monoChar79_stroke0 }, +}; + +/* char: 80 'P' */ + +static const CoordRec monoChar80_stroke0[] = { + { 19.0476, 100 }, + { 19.0476, 0 }, +}; + +static const CoordRec monoChar80_stroke1[] = { + { 19.0476, 100 }, + { 61.9047, 100 }, + { 76.1905, 95.2381 }, + { 80.9524, 90.4762 }, + { 85.7143, 80.9524 }, + { 85.7143, 66.6667 }, + { 80.9524, 57.1429 }, + { 76.1905, 52.381 }, + { 61.9047, 47.619 }, + { 19.0476, 47.619 }, +}; + +static const StrokeRec monoChar80[] = { + { 2, monoChar80_stroke0 }, + { 10, monoChar80_stroke1 }, +}; + +/* char: 81 'Q' */ + +static const CoordRec monoChar81_stroke0[] = { + { 42.8571, 100 }, + { 33.3333, 95.2381 }, + { 23.8095, 85.7143 }, + { 19.0476, 76.1905 }, + { 14.2857, 61.9048 }, + { 14.2857, 38.0952 }, + { 19.0476, 23.8095 }, + { 23.8095, 14.2857 }, + { 33.3333, 4.7619 }, + { 42.8571, 0 }, + { 61.9047, 0 }, + { 71.4286, 4.7619 }, + { 80.9524, 14.2857 }, + { 85.7143, 23.8095 }, + { 90.4762, 38.0952 }, + { 90.4762, 61.9048 }, + { 85.7143, 76.1905 }, + { 80.9524, 85.7143 }, + { 71.4286, 95.2381 }, + { 61.9047, 100 }, + { 42.8571, 100 }, +}; + +static const CoordRec monoChar81_stroke1[] = { + { 57.1428, 19.0476 }, + { 85.7143, -9.5238 }, +}; + +static const StrokeRec monoChar81[] = { + { 21, monoChar81_stroke0 }, + { 2, monoChar81_stroke1 }, +}; + +/* char: 82 'R' */ + +static const CoordRec monoChar82_stroke0[] = { + { 19.0476, 100 }, + { 19.0476, 0 }, +}; + +static const CoordRec monoChar82_stroke1[] = { + { 19.0476, 100 }, + { 61.9047, 100 }, + { 76.1905, 95.2381 }, + { 80.9524, 90.4762 }, + { 85.7143, 80.9524 }, + { 85.7143, 71.4286 }, + { 80.9524, 61.9048 }, + { 76.1905, 57.1429 }, + { 61.9047, 52.381 }, + { 19.0476, 52.381 }, +}; + +static const CoordRec monoChar82_stroke2[] = { + { 52.3809, 52.381 }, + { 85.7143, 0 }, +}; + +static const StrokeRec monoChar82[] = { + { 2, monoChar82_stroke0 }, + { 10, monoChar82_stroke1 }, + { 2, monoChar82_stroke2 }, +}; + +/* char: 83 'S' */ + +static const CoordRec monoChar83_stroke0[] = { + { 85.7143, 85.7143 }, + { 76.1905, 95.2381 }, + { 61.9047, 100 }, + { 42.8571, 100 }, + { 28.5714, 95.2381 }, + { 19.0476, 85.7143 }, + { 19.0476, 76.1905 }, + { 23.8095, 66.6667 }, + { 28.5714, 61.9048 }, + { 38.0952, 57.1429 }, + { 66.6666, 47.619 }, + { 76.1905, 42.8571 }, + { 80.9524, 38.0952 }, + { 85.7143, 28.5714 }, + { 85.7143, 14.2857 }, + { 76.1905, 4.7619 }, + { 61.9047, 0 }, + { 42.8571, 0 }, + { 28.5714, 4.7619 }, + { 19.0476, 14.2857 }, +}; + +static const StrokeRec monoChar83[] = { + { 20, monoChar83_stroke0 }, +}; + +/* char: 84 'T' */ + +static const CoordRec monoChar84_stroke0[] = { + { 52.3809, 100 }, + { 52.3809, 0 }, +}; + +static const CoordRec monoChar84_stroke1[] = { + { 19.0476, 100 }, + { 85.7143, 100 }, +}; + +static const StrokeRec monoChar84[] = { + { 2, monoChar84_stroke0 }, + { 2, monoChar84_stroke1 }, +}; + +/* char: 85 'U' */ + +static const CoordRec monoChar85_stroke0[] = { + { 19.0476, 100 }, + { 19.0476, 28.5714 }, + { 23.8095, 14.2857 }, + { 33.3333, 4.7619 }, + { 47.619, 0 }, + { 57.1428, 0 }, + { 71.4286, 4.7619 }, + { 80.9524, 14.2857 }, + { 85.7143, 28.5714 }, + { 85.7143, 100 }, +}; + +static const StrokeRec monoChar85[] = { + { 10, monoChar85_stroke0 }, +}; + +/* char: 86 'V' */ + +static const CoordRec monoChar86_stroke0[] = { + { 14.2857, 100 }, + { 52.3809, 0 }, +}; + +static const CoordRec monoChar86_stroke1[] = { + { 90.4762, 100 }, + { 52.3809, 0 }, +}; + +static const StrokeRec monoChar86[] = { + { 2, monoChar86_stroke0 }, + { 2, monoChar86_stroke1 }, +}; + +/* char: 87 'W' */ + +static const CoordRec monoChar87_stroke0[] = { + { 4.7619, 100 }, + { 28.5714, 0 }, +}; + +static const CoordRec monoChar87_stroke1[] = { + { 52.3809, 100 }, + { 28.5714, 0 }, +}; + +static const CoordRec monoChar87_stroke2[] = { + { 52.3809, 100 }, + { 76.1905, 0 }, +}; + +static const CoordRec monoChar87_stroke3[] = { + { 100, 100 }, + { 76.1905, 0 }, +}; + +static const StrokeRec monoChar87[] = { + { 2, monoChar87_stroke0 }, + { 2, monoChar87_stroke1 }, + { 2, monoChar87_stroke2 }, + { 2, monoChar87_stroke3 }, +}; + +/* char: 88 'X' */ + +static const CoordRec monoChar88_stroke0[] = { + { 19.0476, 100 }, + { 85.7143, 0 }, +}; + +static const CoordRec monoChar88_stroke1[] = { + { 85.7143, 100 }, + { 19.0476, 0 }, +}; + +static const StrokeRec monoChar88[] = { + { 2, monoChar88_stroke0 }, + { 2, monoChar88_stroke1 }, +}; + +/* char: 89 'Y' */ + +static const CoordRec monoChar89_stroke0[] = { + { 14.2857, 100 }, + { 52.3809, 52.381 }, + { 52.3809, 0 }, +}; + +static const CoordRec monoChar89_stroke1[] = { + { 90.4762, 100 }, + { 52.3809, 52.381 }, +}; + +static const StrokeRec monoChar89[] = { + { 3, monoChar89_stroke0 }, + { 2, monoChar89_stroke1 }, +}; + +/* char: 90 'Z' */ + +static const CoordRec monoChar90_stroke0[] = { + { 85.7143, 100 }, + { 19.0476, 0 }, +}; + +static const CoordRec monoChar90_stroke1[] = { + { 19.0476, 100 }, + { 85.7143, 100 }, +}; + +static const CoordRec monoChar90_stroke2[] = { + { 19.0476, 0 }, + { 85.7143, 0 }, +}; + +static const StrokeRec monoChar90[] = { + { 2, monoChar90_stroke0 }, + { 2, monoChar90_stroke1 }, + { 2, monoChar90_stroke2 }, +}; + +/* char: 91 '[' */ + +static const CoordRec monoChar91_stroke0[] = { + { 35.7143, 119.048 }, + { 35.7143, -33.3333 }, +}; + +static const CoordRec monoChar91_stroke1[] = { + { 40.4762, 119.048 }, + { 40.4762, -33.3333 }, +}; + +static const CoordRec monoChar91_stroke2[] = { + { 35.7143, 119.048 }, + { 69.0476, 119.048 }, +}; + +static const CoordRec monoChar91_stroke3[] = { + { 35.7143, -33.3333 }, + { 69.0476, -33.3333 }, +}; + +static const StrokeRec monoChar91[] = { + { 2, monoChar91_stroke0 }, + { 2, monoChar91_stroke1 }, + { 2, monoChar91_stroke2 }, + { 2, monoChar91_stroke3 }, +}; + +/* char: 92 '\' */ + +static const CoordRec monoChar92_stroke0[] = { + { 19.0476, 100 }, + { 85.7143, -14.2857 }, +}; + +static const StrokeRec monoChar92[] = { + { 2, monoChar92_stroke0 }, +}; + +/* char: 93 ']' */ + +static const CoordRec monoChar93_stroke0[] = { + { 64.2857, 119.048 }, + { 64.2857, -33.3333 }, +}; + +static const CoordRec monoChar93_stroke1[] = { + { 69.0476, 119.048 }, + { 69.0476, -33.3333 }, +}; + +static const CoordRec monoChar93_stroke2[] = { + { 35.7143, 119.048 }, + { 69.0476, 119.048 }, +}; + +static const CoordRec monoChar93_stroke3[] = { + { 35.7143, -33.3333 }, + { 69.0476, -33.3333 }, +}; + +static const StrokeRec monoChar93[] = { + { 2, monoChar93_stroke0 }, + { 2, monoChar93_stroke1 }, + { 2, monoChar93_stroke2 }, + { 2, monoChar93_stroke3 }, +}; + +/* char: 94 '^' */ + +static const CoordRec monoChar94_stroke0[] = { + { 52.3809, 109.524 }, + { 14.2857, 42.8571 }, +}; + +static const CoordRec monoChar94_stroke1[] = { + { 52.3809, 109.524 }, + { 90.4762, 42.8571 }, +}; + +static const StrokeRec monoChar94[] = { + { 2, monoChar94_stroke0 }, + { 2, monoChar94_stroke1 }, +}; + +/* char: 95 '_' */ + +static const CoordRec monoChar95_stroke0[] = { + { 0, -33.3333 }, + { 104.762, -33.3333 }, + { 104.762, -28.5714 }, + { 0, -28.5714 }, + { 0, -33.3333 }, +}; + +static const StrokeRec monoChar95[] = { + { 5, monoChar95_stroke0 }, +}; + +/* char: 96 '`' */ + +static const CoordRec monoChar96_stroke0[] = { + { 42.8572, 100 }, + { 66.6667, 71.4286 }, +}; + +static const CoordRec monoChar96_stroke1[] = { + { 42.8572, 100 }, + { 38.0953, 95.2381 }, + { 66.6667, 71.4286 }, +}; + +static const StrokeRec monoChar96[] = { + { 2, monoChar96_stroke0 }, + { 3, monoChar96_stroke1 }, +}; + +/* char: 97 'a' */ + +static const CoordRec monoChar97_stroke0[] = { + { 80.9524, 66.6667 }, + { 80.9524, 0 }, +}; + +static const CoordRec monoChar97_stroke1[] = { + { 80.9524, 52.381 }, + { 71.4285, 61.9048 }, + { 61.9047, 66.6667 }, + { 47.619, 66.6667 }, + { 38.0952, 61.9048 }, + { 28.5714, 52.381 }, + { 23.8095, 38.0952 }, + { 23.8095, 28.5714 }, + { 28.5714, 14.2857 }, + { 38.0952, 4.7619 }, + { 47.619, 0 }, + { 61.9047, 0 }, + { 71.4285, 4.7619 }, + { 80.9524, 14.2857 }, +}; + +static const StrokeRec monoChar97[] = { + { 2, monoChar97_stroke0 }, + { 14, monoChar97_stroke1 }, +}; + +/* char: 98 'b' */ + +static const CoordRec monoChar98_stroke0[] = { + { 23.8095, 100 }, + { 23.8095, 0 }, +}; + +static const CoordRec monoChar98_stroke1[] = { + { 23.8095, 52.381 }, + { 33.3333, 61.9048 }, + { 42.8571, 66.6667 }, + { 57.1428, 66.6667 }, + { 66.6666, 61.9048 }, + { 76.1905, 52.381 }, + { 80.9524, 38.0952 }, + { 80.9524, 28.5714 }, + { 76.1905, 14.2857 }, + { 66.6666, 4.7619 }, + { 57.1428, 0 }, + { 42.8571, 0 }, + { 33.3333, 4.7619 }, + { 23.8095, 14.2857 }, +}; + +static const StrokeRec monoChar98[] = { + { 2, monoChar98_stroke0 }, + { 14, monoChar98_stroke1 }, +}; + +/* char: 99 'c' */ + +static const CoordRec monoChar99_stroke0[] = { + { 80.9524, 52.381 }, + { 71.4285, 61.9048 }, + { 61.9047, 66.6667 }, + { 47.619, 66.6667 }, + { 38.0952, 61.9048 }, + { 28.5714, 52.381 }, + { 23.8095, 38.0952 }, + { 23.8095, 28.5714 }, + { 28.5714, 14.2857 }, + { 38.0952, 4.7619 }, + { 47.619, 0 }, + { 61.9047, 0 }, + { 71.4285, 4.7619 }, + { 80.9524, 14.2857 }, +}; + +static const StrokeRec monoChar99[] = { + { 14, monoChar99_stroke0 }, +}; + +/* char: 100 'd' */ + +static const CoordRec monoChar100_stroke0[] = { + { 80.9524, 100 }, + { 80.9524, 0 }, +}; + +static const CoordRec monoChar100_stroke1[] = { + { 80.9524, 52.381 }, + { 71.4285, 61.9048 }, + { 61.9047, 66.6667 }, + { 47.619, 66.6667 }, + { 38.0952, 61.9048 }, + { 28.5714, 52.381 }, + { 23.8095, 38.0952 }, + { 23.8095, 28.5714 }, + { 28.5714, 14.2857 }, + { 38.0952, 4.7619 }, + { 47.619, 0 }, + { 61.9047, 0 }, + { 71.4285, 4.7619 }, + { 80.9524, 14.2857 }, +}; + +static const StrokeRec monoChar100[] = { + { 2, monoChar100_stroke0 }, + { 14, monoChar100_stroke1 }, +}; + +/* char: 101 'e' */ + +static const CoordRec monoChar101_stroke0[] = { + { 23.8095, 38.0952 }, + { 80.9524, 38.0952 }, + { 80.9524, 47.619 }, + { 76.1905, 57.1429 }, + { 71.4285, 61.9048 }, + { 61.9047, 66.6667 }, + { 47.619, 66.6667 }, + { 38.0952, 61.9048 }, + { 28.5714, 52.381 }, + { 23.8095, 38.0952 }, + { 23.8095, 28.5714 }, + { 28.5714, 14.2857 }, + { 38.0952, 4.7619 }, + { 47.619, 0 }, + { 61.9047, 0 }, + { 71.4285, 4.7619 }, + { 80.9524, 14.2857 }, +}; + +static const StrokeRec monoChar101[] = { + { 17, monoChar101_stroke0 }, +}; + +/* char: 102 'f' */ + +static const CoordRec monoChar102_stroke0[] = { + { 71.4286, 100 }, + { 61.9048, 100 }, + { 52.381, 95.2381 }, + { 47.6191, 80.9524 }, + { 47.6191, 0 }, +}; + +static const CoordRec monoChar102_stroke1[] = { + { 33.3334, 66.6667 }, + { 66.6667, 66.6667 }, +}; + +static const StrokeRec monoChar102[] = { + { 5, monoChar102_stroke0 }, + { 2, monoChar102_stroke1 }, +}; + +/* char: 103 'g' */ + +static const CoordRec monoChar103_stroke0[] = { + { 80.9524, 66.6667 }, + { 80.9524, -9.5238 }, + { 76.1905, -23.8095 }, + { 71.4285, -28.5714 }, + { 61.9047, -33.3333 }, + { 47.619, -33.3333 }, + { 38.0952, -28.5714 }, +}; + +static const CoordRec monoChar103_stroke1[] = { + { 80.9524, 52.381 }, + { 71.4285, 61.9048 }, + { 61.9047, 66.6667 }, + { 47.619, 66.6667 }, + { 38.0952, 61.9048 }, + { 28.5714, 52.381 }, + { 23.8095, 38.0952 }, + { 23.8095, 28.5714 }, + { 28.5714, 14.2857 }, + { 38.0952, 4.7619 }, + { 47.619, 0 }, + { 61.9047, 0 }, + { 71.4285, 4.7619 }, + { 80.9524, 14.2857 }, +}; + +static const StrokeRec monoChar103[] = { + { 7, monoChar103_stroke0 }, + { 14, monoChar103_stroke1 }, +}; + +/* char: 104 'h' */ + +static const CoordRec monoChar104_stroke0[] = { + { 26.1905, 100 }, + { 26.1905, 0 }, +}; + +static const CoordRec monoChar104_stroke1[] = { + { 26.1905, 47.619 }, + { 40.4762, 61.9048 }, + { 50, 66.6667 }, + { 64.2857, 66.6667 }, + { 73.8095, 61.9048 }, + { 78.5715, 47.619 }, + { 78.5715, 0 }, +}; + +static const StrokeRec monoChar104[] = { + { 2, monoChar104_stroke0 }, + { 7, monoChar104_stroke1 }, +}; + +/* char: 105 'i' */ + +static const CoordRec monoChar105_stroke0[] = { + { 47.6191, 100 }, + { 52.381, 95.2381 }, + { 57.1429, 100 }, + { 52.381, 104.762 }, + { 47.6191, 100 }, +}; + +static const CoordRec monoChar105_stroke1[] = { + { 52.381, 66.6667 }, + { 52.381, 0 }, +}; + +static const StrokeRec monoChar105[] = { + { 5, monoChar105_stroke0 }, + { 2, monoChar105_stroke1 }, +}; + +/* char: 106 'j' */ + +static const CoordRec monoChar106_stroke0[] = { + { 57.1429, 100 }, + { 61.9048, 95.2381 }, + { 66.6667, 100 }, + { 61.9048, 104.762 }, + { 57.1429, 100 }, +}; + +static const CoordRec monoChar106_stroke1[] = { + { 61.9048, 66.6667 }, + { 61.9048, -14.2857 }, + { 57.1429, -28.5714 }, + { 47.6191, -33.3333 }, + { 38.0953, -33.3333 }, +}; + +static const StrokeRec monoChar106[] = { + { 5, monoChar106_stroke0 }, + { 5, monoChar106_stroke1 }, +}; + +/* char: 107 'k' */ + +static const CoordRec monoChar107_stroke0[] = { + { 26.1905, 100 }, + { 26.1905, 0 }, +}; + +static const CoordRec monoChar107_stroke1[] = { + { 73.8095, 66.6667 }, + { 26.1905, 19.0476 }, +}; + +static const CoordRec monoChar107_stroke2[] = { + { 45.2381, 38.0952 }, + { 78.5715, 0 }, +}; + +static const StrokeRec monoChar107[] = { + { 2, monoChar107_stroke0 }, + { 2, monoChar107_stroke1 }, + { 2, monoChar107_stroke2 }, +}; + +/* char: 108 'l' */ + +static const CoordRec monoChar108_stroke0[] = { + { 52.381, 100 }, + { 52.381, 0 }, +}; + +static const StrokeRec monoChar108[] = { + { 2, monoChar108_stroke0 }, +}; + +/* char: 109 'm' */ + +static const CoordRec monoChar109_stroke0[] = { + { 0, 66.6667 }, + { 0, 0 }, +}; + +static const CoordRec monoChar109_stroke1[] = { + { 0, 47.619 }, + { 14.2857, 61.9048 }, + { 23.8095, 66.6667 }, + { 38.0952, 66.6667 }, + { 47.619, 61.9048 }, + { 52.381, 47.619 }, + { 52.381, 0 }, +}; + +static const CoordRec monoChar109_stroke2[] = { + { 52.381, 47.619 }, + { 66.6667, 61.9048 }, + { 76.1905, 66.6667 }, + { 90.4762, 66.6667 }, + { 100, 61.9048 }, + { 104.762, 47.619 }, + { 104.762, 0 }, +}; + +static const StrokeRec monoChar109[] = { + { 2, monoChar109_stroke0 }, + { 7, monoChar109_stroke1 }, + { 7, monoChar109_stroke2 }, +}; + +/* char: 110 'n' */ + +static const CoordRec monoChar110_stroke0[] = { + { 26.1905, 66.6667 }, + { 26.1905, 0 }, +}; + +static const CoordRec monoChar110_stroke1[] = { + { 26.1905, 47.619 }, + { 40.4762, 61.9048 }, + { 50, 66.6667 }, + { 64.2857, 66.6667 }, + { 73.8095, 61.9048 }, + { 78.5715, 47.619 }, + { 78.5715, 0 }, +}; + +static const StrokeRec monoChar110[] = { + { 2, monoChar110_stroke0 }, + { 7, monoChar110_stroke1 }, +}; + +/* char: 111 'o' */ + +static const CoordRec monoChar111_stroke0[] = { + { 45.2381, 66.6667 }, + { 35.7143, 61.9048 }, + { 26.1905, 52.381 }, + { 21.4286, 38.0952 }, + { 21.4286, 28.5714 }, + { 26.1905, 14.2857 }, + { 35.7143, 4.7619 }, + { 45.2381, 0 }, + { 59.5238, 0 }, + { 69.0476, 4.7619 }, + { 78.5714, 14.2857 }, + { 83.3334, 28.5714 }, + { 83.3334, 38.0952 }, + { 78.5714, 52.381 }, + { 69.0476, 61.9048 }, + { 59.5238, 66.6667 }, + { 45.2381, 66.6667 }, +}; + +static const StrokeRec monoChar111[] = { + { 17, monoChar111_stroke0 }, +}; + +/* char: 112 'p' */ + +static const CoordRec monoChar112_stroke0[] = { + { 23.8095, 66.6667 }, + { 23.8095, -33.3333 }, +}; + +static const CoordRec monoChar112_stroke1[] = { + { 23.8095, 52.381 }, + { 33.3333, 61.9048 }, + { 42.8571, 66.6667 }, + { 57.1428, 66.6667 }, + { 66.6666, 61.9048 }, + { 76.1905, 52.381 }, + { 80.9524, 38.0952 }, + { 80.9524, 28.5714 }, + { 76.1905, 14.2857 }, + { 66.6666, 4.7619 }, + { 57.1428, 0 }, + { 42.8571, 0 }, + { 33.3333, 4.7619 }, + { 23.8095, 14.2857 }, +}; + +static const StrokeRec monoChar112[] = { + { 2, monoChar112_stroke0 }, + { 14, monoChar112_stroke1 }, +}; + +/* char: 113 'q' */ + +static const CoordRec monoChar113_stroke0[] = { + { 80.9524, 66.6667 }, + { 80.9524, -33.3333 }, +}; + +static const CoordRec monoChar113_stroke1[] = { + { 80.9524, 52.381 }, + { 71.4285, 61.9048 }, + { 61.9047, 66.6667 }, + { 47.619, 66.6667 }, + { 38.0952, 61.9048 }, + { 28.5714, 52.381 }, + { 23.8095, 38.0952 }, + { 23.8095, 28.5714 }, + { 28.5714, 14.2857 }, + { 38.0952, 4.7619 }, + { 47.619, 0 }, + { 61.9047, 0 }, + { 71.4285, 4.7619 }, + { 80.9524, 14.2857 }, +}; + +static const StrokeRec monoChar113[] = { + { 2, monoChar113_stroke0 }, + { 14, monoChar113_stroke1 }, +}; + +/* char: 114 'r' */ + +static const CoordRec monoChar114_stroke0[] = { + { 33.3334, 66.6667 }, + { 33.3334, 0 }, +}; + +static const CoordRec monoChar114_stroke1[] = { + { 33.3334, 38.0952 }, + { 38.0953, 52.381 }, + { 47.6191, 61.9048 }, + { 57.1429, 66.6667 }, + { 71.4286, 66.6667 }, +}; + +static const StrokeRec monoChar114[] = { + { 2, monoChar114_stroke0 }, + { 5, monoChar114_stroke1 }, +}; + +/* char: 115 's' */ + +static const CoordRec monoChar115_stroke0[] = { + { 78.5715, 52.381 }, + { 73.8095, 61.9048 }, + { 59.5238, 66.6667 }, + { 45.2381, 66.6667 }, + { 30.9524, 61.9048 }, + { 26.1905, 52.381 }, + { 30.9524, 42.8571 }, + { 40.4762, 38.0952 }, + { 64.2857, 33.3333 }, + { 73.8095, 28.5714 }, + { 78.5715, 19.0476 }, + { 78.5715, 14.2857 }, + { 73.8095, 4.7619 }, + { 59.5238, 0 }, + { 45.2381, 0 }, + { 30.9524, 4.7619 }, + { 26.1905, 14.2857 }, +}; + +static const StrokeRec monoChar115[] = { + { 17, monoChar115_stroke0 }, +}; + +/* char: 116 't' */ + +static const CoordRec monoChar116_stroke0[] = { + { 47.6191, 100 }, + { 47.6191, 19.0476 }, + { 52.381, 4.7619 }, + { 61.9048, 0 }, + { 71.4286, 0 }, +}; + +static const CoordRec monoChar116_stroke1[] = { + { 33.3334, 66.6667 }, + { 66.6667, 66.6667 }, +}; + +static const StrokeRec monoChar116[] = { + { 5, monoChar116_stroke0 }, + { 2, monoChar116_stroke1 }, +}; + +/* char: 117 'u' */ + +static const CoordRec monoChar117_stroke0[] = { + { 26.1905, 66.6667 }, + { 26.1905, 19.0476 }, + { 30.9524, 4.7619 }, + { 40.4762, 0 }, + { 54.7619, 0 }, + { 64.2857, 4.7619 }, + { 78.5715, 19.0476 }, +}; + +static const CoordRec monoChar117_stroke1[] = { + { 78.5715, 66.6667 }, + { 78.5715, 0 }, +}; + +static const StrokeRec monoChar117[] = { + { 7, monoChar117_stroke0 }, + { 2, monoChar117_stroke1 }, +}; + +/* char: 118 'v' */ + +static const CoordRec monoChar118_stroke0[] = { + { 23.8095, 66.6667 }, + { 52.3809, 0 }, +}; + +static const CoordRec monoChar118_stroke1[] = { + { 80.9524, 66.6667 }, + { 52.3809, 0 }, +}; + +static const StrokeRec monoChar118[] = { + { 2, monoChar118_stroke0 }, + { 2, monoChar118_stroke1 }, +}; + +/* char: 119 'w' */ + +static const CoordRec monoChar119_stroke0[] = { + { 14.2857, 66.6667 }, + { 33.3333, 0 }, +}; + +static const CoordRec monoChar119_stroke1[] = { + { 52.3809, 66.6667 }, + { 33.3333, 0 }, +}; + +static const CoordRec monoChar119_stroke2[] = { + { 52.3809, 66.6667 }, + { 71.4286, 0 }, +}; + +static const CoordRec monoChar119_stroke3[] = { + { 90.4762, 66.6667 }, + { 71.4286, 0 }, +}; + +static const StrokeRec monoChar119[] = { + { 2, monoChar119_stroke0 }, + { 2, monoChar119_stroke1 }, + { 2, monoChar119_stroke2 }, + { 2, monoChar119_stroke3 }, +}; + +/* char: 120 'x' */ + +static const CoordRec monoChar120_stroke0[] = { + { 26.1905, 66.6667 }, + { 78.5715, 0 }, +}; + +static const CoordRec monoChar120_stroke1[] = { + { 78.5715, 66.6667 }, + { 26.1905, 0 }, +}; + +static const StrokeRec monoChar120[] = { + { 2, monoChar120_stroke0 }, + { 2, monoChar120_stroke1 }, +}; + +/* char: 121 'y' */ + +static const CoordRec monoChar121_stroke0[] = { + { 26.1905, 66.6667 }, + { 54.7619, 0 }, +}; + +static const CoordRec monoChar121_stroke1[] = { + { 83.3334, 66.6667 }, + { 54.7619, 0 }, + { 45.2381, -19.0476 }, + { 35.7143, -28.5714 }, + { 26.1905, -33.3333 }, + { 21.4286, -33.3333 }, +}; + +static const StrokeRec monoChar121[] = { + { 2, monoChar121_stroke0 }, + { 6, monoChar121_stroke1 }, +}; + +/* char: 122 'z' */ + +static const CoordRec monoChar122_stroke0[] = { + { 78.5715, 66.6667 }, + { 26.1905, 0 }, +}; + +static const CoordRec monoChar122_stroke1[] = { + { 26.1905, 66.6667 }, + { 78.5715, 66.6667 }, +}; + +static const CoordRec monoChar122_stroke2[] = { + { 26.1905, 0 }, + { 78.5715, 0 }, +}; + +static const StrokeRec monoChar122[] = { + { 2, monoChar122_stroke0 }, + { 2, monoChar122_stroke1 }, + { 2, monoChar122_stroke2 }, +}; + +/* char: 123 '{' */ + +static const CoordRec monoChar123_stroke0[] = { + { 64.2857, 119.048 }, + { 54.7619, 114.286 }, + { 50, 109.524 }, + { 45.2381, 100 }, + { 45.2381, 90.4762 }, + { 50, 80.9524 }, + { 54.7619, 76.1905 }, + { 59.5238, 66.6667 }, + { 59.5238, 57.1429 }, + { 50, 47.619 }, +}; + +static const CoordRec monoChar123_stroke1[] = { + { 54.7619, 114.286 }, + { 50, 104.762 }, + { 50, 95.2381 }, + { 54.7619, 85.7143 }, + { 59.5238, 80.9524 }, + { 64.2857, 71.4286 }, + { 64.2857, 61.9048 }, + { 59.5238, 52.381 }, + { 40.4762, 42.8571 }, + { 59.5238, 33.3333 }, + { 64.2857, 23.8095 }, + { 64.2857, 14.2857 }, + { 59.5238, 4.7619 }, + { 54.7619, 0 }, + { 50, -9.5238 }, + { 50, -19.0476 }, + { 54.7619, -28.5714 }, +}; + +static const CoordRec monoChar123_stroke2[] = { + { 50, 38.0952 }, + { 59.5238, 28.5714 }, + { 59.5238, 19.0476 }, + { 54.7619, 9.5238 }, + { 50, 4.7619 }, + { 45.2381, -4.7619 }, + { 45.2381, -14.2857 }, + { 50, -23.8095 }, + { 54.7619, -28.5714 }, + { 64.2857, -33.3333 }, +}; + +static const StrokeRec monoChar123[] = { + { 10, monoChar123_stroke0 }, + { 17, monoChar123_stroke1 }, + { 10, monoChar123_stroke2 }, +}; + +/* char: 124 '|' */ + +static const CoordRec monoChar124_stroke0[] = { + { 52.381, 119.048 }, + { 52.381, -33.3333 }, +}; + +static const StrokeRec monoChar124[] = { + { 2, monoChar124_stroke0 }, +}; + +/* char: 125 '}' */ + +static const CoordRec monoChar125_stroke0[] = { + { 40.4762, 119.048 }, + { 50, 114.286 }, + { 54.7619, 109.524 }, + { 59.5238, 100 }, + { 59.5238, 90.4762 }, + { 54.7619, 80.9524 }, + { 50, 76.1905 }, + { 45.2381, 66.6667 }, + { 45.2381, 57.1429 }, + { 54.7619, 47.619 }, +}; + +static const CoordRec monoChar125_stroke1[] = { + { 50, 114.286 }, + { 54.7619, 104.762 }, + { 54.7619, 95.2381 }, + { 50, 85.7143 }, + { 45.2381, 80.9524 }, + { 40.4762, 71.4286 }, + { 40.4762, 61.9048 }, + { 45.2381, 52.381 }, + { 64.2857, 42.8571 }, + { 45.2381, 33.3333 }, + { 40.4762, 23.8095 }, + { 40.4762, 14.2857 }, + { 45.2381, 4.7619 }, + { 50, 0 }, + { 54.7619, -9.5238 }, + { 54.7619, -19.0476 }, + { 50, -28.5714 }, +}; + +static const CoordRec monoChar125_stroke2[] = { + { 54.7619, 38.0952 }, + { 45.2381, 28.5714 }, + { 45.2381, 19.0476 }, + { 50, 9.5238 }, + { 54.7619, 4.7619 }, + { 59.5238, -4.7619 }, + { 59.5238, -14.2857 }, + { 54.7619, -23.8095 }, + { 50, -28.5714 }, + { 40.4762, -33.3333 }, +}; + +static const StrokeRec monoChar125[] = { + { 10, monoChar125_stroke0 }, + { 17, monoChar125_stroke1 }, + { 10, monoChar125_stroke2 }, +}; + +/* char: 126 '~' */ + +static const CoordRec monoChar126_stroke0[] = { + { 9.5238, 28.5714 }, + { 9.5238, 38.0952 }, + { 14.2857, 52.381 }, + { 23.8095, 57.1429 }, + { 33.3333, 57.1429 }, + { 42.8571, 52.381 }, + { 61.9048, 38.0952 }, + { 71.4286, 33.3333 }, + { 80.9524, 33.3333 }, + { 90.4762, 38.0952 }, + { 95.2381, 47.619 }, +}; + +static const CoordRec monoChar126_stroke1[] = { + { 9.5238, 38.0952 }, + { 14.2857, 47.619 }, + { 23.8095, 52.381 }, + { 33.3333, 52.381 }, + { 42.8571, 47.619 }, + { 61.9048, 33.3333 }, + { 71.4286, 28.5714 }, + { 80.9524, 28.5714 }, + { 90.4762, 33.3333 }, + { 95.2381, 47.619 }, + { 95.2381, 57.1429 }, +}; + +static const StrokeRec monoChar126[] = { + { 11, monoChar126_stroke0 }, + { 11, monoChar126_stroke1 }, +}; + +/* char: 127 */ + +static const CoordRec monoChar127_stroke0[] = { + { 71.4286, 100 }, + { 33.3333, -33.3333 }, +}; + +static const CoordRec monoChar127_stroke1[] = { + { 47.619, 66.6667 }, + { 33.3333, 61.9048 }, + { 23.8095, 52.381 }, + { 19.0476, 38.0952 }, + { 19.0476, 23.8095 }, + { 23.8095, 14.2857 }, + { 33.3333, 4.7619 }, + { 47.619, 0 }, + { 57.1428, 0 }, + { 71.4286, 4.7619 }, + { 80.9524, 14.2857 }, + { 85.7143, 28.5714 }, + { 85.7143, 42.8571 }, + { 80.9524, 52.381 }, + { 71.4286, 61.9048 }, + { 57.1428, 66.6667 }, + { 47.619, 66.6667 }, +}; + +static const StrokeRec monoChar127[] = { + { 2, monoChar127_stroke0 }, + { 17, monoChar127_stroke1 }, +}; + +static const StrokeCharRec monoChars[] = { + { 0, /* monoChar0 */ 0, 0, 0 }, + { 0, /* monoChar1 */ 0, 0, 0 }, + { 0, /* monoChar2 */ 0, 0, 0 }, + { 0, /* monoChar3 */ 0, 0, 0 }, + { 0, /* monoChar4 */ 0, 0, 0 }, + { 0, /* monoChar5 */ 0, 0, 0 }, + { 0, /* monoChar6 */ 0, 0, 0 }, + { 0, /* monoChar7 */ 0, 0, 0 }, + { 0, /* monoChar8 */ 0, 0, 0 }, + { 0, /* monoChar9 */ 0, 0, 0 }, + { 0, /* monoChar10 */ 0, 0, 0 }, + { 0, /* monoChar11 */ 0, 0, 0 }, + { 0, /* monoChar12 */ 0, 0, 0 }, + { 0, /* monoChar13 */ 0, 0, 0 }, + { 0, /* monoChar14 */ 0, 0, 0 }, + { 0, /* monoChar15 */ 0, 0, 0 }, + { 0, /* monoChar16 */ 0, 0, 0 }, + { 0, /* monoChar17 */ 0, 0, 0 }, + { 0, /* monoChar18 */ 0, 0, 0 }, + { 0, /* monoChar19 */ 0, 0, 0 }, + { 0, /* monoChar20 */ 0, 0, 0 }, + { 0, /* monoChar21 */ 0, 0, 0 }, + { 0, /* monoChar22 */ 0, 0, 0 }, + { 0, /* monoChar23 */ 0, 0, 0 }, + { 0, /* monoChar24 */ 0, 0, 0 }, + { 0, /* monoChar25 */ 0, 0, 0 }, + { 0, /* monoChar26 */ 0, 0, 0 }, + { 0, /* monoChar27 */ 0, 0, 0 }, + { 0, /* monoChar28 */ 0, 0, 0 }, + { 0, /* monoChar29 */ 0, 0, 0 }, + { 0, /* monoChar30 */ 0, 0, 0 }, + { 0, /* monoChar31 */ 0, 0, 0 }, + { 0, /* monoChar32 */ 0, 52.381, 104.762 }, + { 2, monoChar33, 52.381, 104.762 }, + { 2, monoChar34, 52.381, 104.762 }, + { 4, monoChar35, 52.381, 104.762 }, + { 3, monoChar36, 52.381, 104.762 }, + { 3, monoChar37, 52.381, 104.762 }, + { 1, monoChar38, 52.381, 104.762 }, + { 1, monoChar39, 52.381, 104.762 }, + { 1, monoChar40, 52.381, 104.762 }, + { 1, monoChar41, 52.381, 104.762 }, + { 3, monoChar42, 52.381, 104.762 }, + { 2, monoChar43, 52.381, 104.762 }, + { 1, monoChar44, 52.381, 104.762 }, + { 1, monoChar45, 52.381, 104.762 }, + { 1, monoChar46, 52.381, 104.762 }, + { 1, monoChar47, 52.381, 104.762 }, + { 1, monoChar48, 52.381, 104.762 }, + { 1, monoChar49, 52.381, 104.762 }, + { 1, monoChar50, 52.381, 104.762 }, + { 1, monoChar51, 52.381, 104.762 }, + { 2, monoChar52, 52.381, 104.762 }, + { 1, monoChar53, 52.381, 104.762 }, + { 1, monoChar54, 52.381, 104.762 }, + { 2, monoChar55, 52.381, 104.762 }, + { 1, monoChar56, 52.381, 104.762 }, + { 1, monoChar57, 52.381, 104.762 }, + { 2, monoChar58, 52.381, 104.762 }, + { 2, monoChar59, 52.381, 104.762 }, + { 1, monoChar60, 52.381, 104.762 }, + { 2, monoChar61, 52.381, 104.762 }, + { 1, monoChar62, 52.381, 104.762 }, + { 2, monoChar63, 52.381, 104.762 }, + { 2, monoChar64, 52.381, 104.762 }, + { 3, monoChar65, 52.381, 104.762 }, + { 3, monoChar66, 52.381, 104.762 }, + { 1, monoChar67, 52.381, 104.762 }, + { 2, monoChar68, 52.381, 104.762 }, + { 4, monoChar69, 52.381, 104.762 }, + { 3, monoChar70, 52.381, 104.762 }, + { 2, monoChar71, 52.381, 104.762 }, + { 3, monoChar72, 52.381, 104.762 }, + { 1, monoChar73, 52.381, 104.762 }, + { 1, monoChar74, 52.381, 104.762 }, + { 3, monoChar75, 52.381, 104.762 }, + { 2, monoChar76, 52.381, 104.762 }, + { 4, monoChar77, 52.381, 104.762 }, + { 3, monoChar78, 52.381, 104.762 }, + { 1, monoChar79, 52.381, 104.762 }, + { 2, monoChar80, 52.381, 104.762 }, + { 2, monoChar81, 52.381, 104.762 }, + { 3, monoChar82, 52.381, 104.762 }, + { 1, monoChar83, 52.381, 104.762 }, + { 2, monoChar84, 52.381, 104.762 }, + { 1, monoChar85, 52.381, 104.762 }, + { 2, monoChar86, 52.381, 104.762 }, + { 4, monoChar87, 52.381, 104.762 }, + { 2, monoChar88, 52.381, 104.762 }, + { 2, monoChar89, 52.381, 104.762 }, + { 3, monoChar90, 52.381, 104.762 }, + { 4, monoChar91, 52.381, 104.762 }, + { 1, monoChar92, 52.381, 104.762 }, + { 4, monoChar93, 52.381, 104.762 }, + { 2, monoChar94, 52.381, 104.762 }, + { 1, monoChar95, 52.381, 104.762 }, + { 2, monoChar96, 52.381, 104.762 }, + { 2, monoChar97, 52.381, 104.762 }, + { 2, monoChar98, 52.381, 104.762 }, + { 1, monoChar99, 52.381, 104.762 }, + { 2, monoChar100, 52.381, 104.762 }, + { 1, monoChar101, 52.381, 104.762 }, + { 2, monoChar102, 52.381, 104.762 }, + { 2, monoChar103, 52.381, 104.762 }, + { 2, monoChar104, 52.381, 104.762 }, + { 2, monoChar105, 52.381, 104.762 }, + { 2, monoChar106, 52.381, 104.762 }, + { 3, monoChar107, 52.381, 104.762 }, + { 1, monoChar108, 52.381, 104.762 }, + { 3, monoChar109, 52.381, 104.762 }, + { 2, monoChar110, 52.381, 104.762 }, + { 1, monoChar111, 52.381, 104.762 }, + { 2, monoChar112, 52.381, 104.762 }, + { 2, monoChar113, 52.381, 104.762 }, + { 2, monoChar114, 52.381, 104.762 }, + { 1, monoChar115, 52.381, 104.762 }, + { 2, monoChar116, 52.381, 104.762 }, + { 2, monoChar117, 52.381, 104.762 }, + { 2, monoChar118, 52.381, 104.762 }, + { 4, monoChar119, 52.381, 104.762 }, + { 2, monoChar120, 52.381, 104.762 }, + { 2, monoChar121, 52.381, 104.762 }, + { 3, monoChar122, 52.381, 104.762 }, + { 3, monoChar123, 52.381, 104.762 }, + { 1, monoChar124, 52.381, 104.762 }, + { 3, monoChar125, 52.381, 104.762 }, + { 2, monoChar126, 52.381, 104.762 }, + { 2, monoChar127, 52.381, 104.762 }, +}; + +static +StrokeFontRec glutStrokeMonoRoman = { "Roman", 128, monoChars, 119.048, -33.3333 }; + diff --git a/hacks/glx/glut_roman.h b/hacks/glx/glut_roman.h new file mode 100644 index 0000000..93f9532 --- /dev/null +++ b/hacks/glx/glut_roman.h @@ -0,0 +1,2455 @@ +/* Roman simplex stroke font copyright (c) 1989, 1990, 1991 + * by Sun Microsystems, Inc. and the X Consortium. + * Originally part of the GLUT library by Mark J. Kilgard. + */ + +#include "glutstroke.h" + +/* char: 33 '!' */ + +static const CoordRec char33_stroke0[] = { + { 13.3819, 100 }, + { 13.3819, 33.3333 }, +}; + +static const CoordRec char33_stroke1[] = { + { 13.3819, 9.5238 }, + { 8.62, 4.7619 }, + { 13.3819, 0 }, + { 18.1438, 4.7619 }, + { 13.3819, 9.5238 }, +}; + +static const StrokeRec char33[] = { + { 2, char33_stroke0 }, + { 5, char33_stroke1 }, +}; + +/* char: 34 '"' */ + +static const CoordRec char34_stroke0[] = { + { 4.02, 100 }, + { 4.02, 66.6667 }, +}; + +static const CoordRec char34_stroke1[] = { + { 42.1152, 100 }, + { 42.1152, 66.6667 }, +}; + +static const StrokeRec char34[] = { + { 2, char34_stroke0 }, + { 2, char34_stroke1 }, +}; + +/* char: 35 '#' */ + +static const CoordRec char35_stroke0[] = { + { 41.2952, 119.048 }, + { 7.9619, -33.3333 }, +}; + +static const CoordRec char35_stroke1[] = { + { 69.8667, 119.048 }, + { 36.5333, -33.3333 }, +}; + +static const CoordRec char35_stroke2[] = { + { 7.9619, 57.1429 }, + { 74.6286, 57.1429 }, +}; + +static const CoordRec char35_stroke3[] = { + { 3.2, 28.5714 }, + { 69.8667, 28.5714 }, +}; + +static const StrokeRec char35[] = { + { 2, char35_stroke0 }, + { 2, char35_stroke1 }, + { 2, char35_stroke2 }, + { 2, char35_stroke3 }, +}; + +/* char: 36 '$' */ + +static const CoordRec char36_stroke0[] = { + { 28.6295, 119.048 }, + { 28.6295, -19.0476 }, +}; + +static const CoordRec char36_stroke1[] = { + { 47.6771, 119.048 }, + { 47.6771, -19.0476 }, +}; + +static const CoordRec char36_stroke2[] = { + { 71.4867, 85.7143 }, + { 61.9629, 95.2381 }, + { 47.6771, 100 }, + { 28.6295, 100 }, + { 14.3438, 95.2381 }, + { 4.82, 85.7143 }, + { 4.82, 76.1905 }, + { 9.5819, 66.6667 }, + { 14.3438, 61.9048 }, + { 23.8676, 57.1429 }, + { 52.439, 47.619 }, + { 61.9629, 42.8571 }, + { 66.7248, 38.0952 }, + { 71.4867, 28.5714 }, + { 71.4867, 14.2857 }, + { 61.9629, 4.7619 }, + { 47.6771, 0 }, + { 28.6295, 0 }, + { 14.3438, 4.7619 }, + { 4.82, 14.2857 }, +}; + +static const StrokeRec char36[] = { + { 2, char36_stroke0 }, + { 2, char36_stroke1 }, + { 20, char36_stroke2 }, +}; + +/* char: 37 '%' */ + +static const CoordRec char37_stroke0[] = { + { 92.0743, 100 }, + { 6.36, 0 }, +}; + +static const CoordRec char37_stroke1[] = { + { 30.1695, 100 }, + { 39.6933, 90.4762 }, + { 39.6933, 80.9524 }, + { 34.9314, 71.4286 }, + { 25.4076, 66.6667 }, + { 15.8838, 66.6667 }, + { 6.36, 76.1905 }, + { 6.36, 85.7143 }, + { 11.1219, 95.2381 }, + { 20.6457, 100 }, + { 30.1695, 100 }, + { 39.6933, 95.2381 }, + { 53.979, 90.4762 }, + { 68.2648, 90.4762 }, + { 82.5505, 95.2381 }, + { 92.0743, 100 }, +}; + +static const CoordRec char37_stroke2[] = { + { 73.0267, 33.3333 }, + { 63.5029, 28.5714 }, + { 58.741, 19.0476 }, + { 58.741, 9.5238 }, + { 68.2648, 0 }, + { 77.7886, 0 }, + { 87.3124, 4.7619 }, + { 92.0743, 14.2857 }, + { 92.0743, 23.8095 }, + { 82.5505, 33.3333 }, + { 73.0267, 33.3333 }, +}; + +static const StrokeRec char37[] = { + { 2, char37_stroke0 }, + { 16, char37_stroke1 }, + { 11, char37_stroke2 }, +}; + +/* char: 38 '&' */ + +static const CoordRec char38_stroke0[] = { + { 101.218, 57.1429 }, + { 101.218, 61.9048 }, + { 96.4562, 66.6667 }, + { 91.6943, 66.6667 }, + { 86.9324, 61.9048 }, + { 82.1705, 52.381 }, + { 72.6467, 28.5714 }, + { 63.1229, 14.2857 }, + { 53.599, 4.7619 }, + { 44.0752, 0 }, + { 25.0276, 0 }, + { 15.5038, 4.7619 }, + { 10.7419, 9.5238 }, + { 5.98, 19.0476 }, + { 5.98, 28.5714 }, + { 10.7419, 38.0952 }, + { 15.5038, 42.8571 }, + { 48.8371, 61.9048 }, + { 53.599, 66.6667 }, + { 58.361, 76.1905 }, + { 58.361, 85.7143 }, + { 53.599, 95.2381 }, + { 44.0752, 100 }, + { 34.5514, 95.2381 }, + { 29.7895, 85.7143 }, + { 29.7895, 76.1905 }, + { 34.5514, 61.9048 }, + { 44.0752, 47.619 }, + { 67.8848, 14.2857 }, + { 77.4086, 4.7619 }, + { 86.9324, 0 }, + { 96.4562, 0 }, + { 101.218, 4.7619 }, + { 101.218, 9.5238 }, +}; + +static const StrokeRec char38[] = { + { 34, char38_stroke0 }, +}; + +/* char: 39 ''' */ + +static const CoordRec char39_stroke0[] = { + { 4.44, 100 }, + { 4.44, 66.6667 }, +}; + +static const StrokeRec char39[] = { + { 2, char39_stroke0 }, +}; + +/* char: 40 '(' */ + +static const CoordRec char40_stroke0[] = { + { 40.9133, 119.048 }, + { 31.3895, 109.524 }, + { 21.8657, 95.2381 }, + { 12.3419, 76.1905 }, + { 7.58, 52.381 }, + { 7.58, 33.3333 }, + { 12.3419, 9.5238 }, + { 21.8657, -9.5238 }, + { 31.3895, -23.8095 }, + { 40.9133, -33.3333 }, +}; + +static const StrokeRec char40[] = { + { 10, char40_stroke0 }, +}; + +/* char: 41 ')' */ + +static const CoordRec char41_stroke0[] = { + { 5.28, 119.048 }, + { 14.8038, 109.524 }, + { 24.3276, 95.2381 }, + { 33.8514, 76.1905 }, + { 38.6133, 52.381 }, + { 38.6133, 33.3333 }, + { 33.8514, 9.5238 }, + { 24.3276, -9.5238 }, + { 14.8038, -23.8095 }, + { 5.28, -33.3333 }, +}; + +static const StrokeRec char41[] = { + { 10, char41_stroke0 }, +}; + +/* char: 42 '*' */ + +static const CoordRec char42_stroke0[] = { + { 30.7695, 71.4286 }, + { 30.7695, 14.2857 }, +}; + +static const CoordRec char42_stroke1[] = { + { 6.96, 57.1429 }, + { 54.579, 28.5714 }, +}; + +static const CoordRec char42_stroke2[] = { + { 54.579, 57.1429 }, + { 6.96, 28.5714 }, +}; + +static const StrokeRec char42[] = { + { 2, char42_stroke0 }, + { 2, char42_stroke1 }, + { 2, char42_stroke2 }, +}; + +/* char: 43 '+' */ + +static const CoordRec char43_stroke0[] = { + { 48.8371, 85.7143 }, + { 48.8371, 0 }, +}; + +static const CoordRec char43_stroke1[] = { + { 5.98, 42.8571 }, + { 91.6943, 42.8571 }, +}; + +static const StrokeRec char43[] = { + { 2, char43_stroke0 }, + { 2, char43_stroke1 }, +}; + +/* char: 44 ',' */ + +static const CoordRec char44_stroke0[] = { + { 18.2838, 4.7619 }, + { 13.5219, 0 }, + { 8.76, 4.7619 }, + { 13.5219, 9.5238 }, + { 18.2838, 4.7619 }, + { 18.2838, -4.7619 }, + { 13.5219, -14.2857 }, + { 8.76, -19.0476 }, +}; + +static const StrokeRec char44[] = { + { 8, char44_stroke0 }, +}; + +/* char: 45 '-' */ + +static const CoordRec char45_stroke0[] = { + { 7.38, 42.8571 }, + { 93.0943, 42.8571 }, +}; + +static const StrokeRec char45[] = { + { 2, char45_stroke0 }, +}; + +/* char: 46 '.' */ + +static const CoordRec char46_stroke0[] = { + { 13.1019, 9.5238 }, + { 8.34, 4.7619 }, + { 13.1019, 0 }, + { 17.8638, 4.7619 }, + { 13.1019, 9.5238 }, +}; + +static const StrokeRec char46[] = { + { 5, char46_stroke0 }, +}; + +/* char: 47 '/' */ + +static const CoordRec char47_stroke0[] = { + { 7.24, -14.2857 }, + { 73.9067, 100 }, +}; + +static const StrokeRec char47[] = { + { 2, char47_stroke0 }, +}; + +/* char: 48 '0' */ + +static const CoordRec char48_stroke0[] = { + { 33.5514, 100 }, + { 19.2657, 95.2381 }, + { 9.7419, 80.9524 }, + { 4.98, 57.1429 }, + { 4.98, 42.8571 }, + { 9.7419, 19.0476 }, + { 19.2657, 4.7619 }, + { 33.5514, 0 }, + { 43.0752, 0 }, + { 57.361, 4.7619 }, + { 66.8848, 19.0476 }, + { 71.6467, 42.8571 }, + { 71.6467, 57.1429 }, + { 66.8848, 80.9524 }, + { 57.361, 95.2381 }, + { 43.0752, 100 }, + { 33.5514, 100 }, +}; + +static const StrokeRec char48[] = { + { 17, char48_stroke0 }, +}; + +/* char: 49 '1' */ + +static const CoordRec char49_stroke0[] = { + { 11.82, 80.9524 }, + { 21.3438, 85.7143 }, + { 35.6295, 100 }, + { 35.6295, 0 }, +}; + +static const StrokeRec char49[] = { + { 4, char49_stroke0 }, +}; + +/* char: 50 '2' */ + +static const CoordRec char50_stroke0[] = { + { 10.1819, 76.1905 }, + { 10.1819, 80.9524 }, + { 14.9438, 90.4762 }, + { 19.7057, 95.2381 }, + { 29.2295, 100 }, + { 48.2771, 100 }, + { 57.801, 95.2381 }, + { 62.5629, 90.4762 }, + { 67.3248, 80.9524 }, + { 67.3248, 71.4286 }, + { 62.5629, 61.9048 }, + { 53.039, 47.619 }, + { 5.42, 0 }, + { 72.0867, 0 }, +}; + +static const StrokeRec char50[] = { + { 14, char50_stroke0 }, +}; + +/* char: 51 '3' */ + +static const CoordRec char51_stroke0[] = { + { 14.5238, 100 }, + { 66.9048, 100 }, + { 38.3333, 61.9048 }, + { 52.619, 61.9048 }, + { 62.1429, 57.1429 }, + { 66.9048, 52.381 }, + { 71.6667, 38.0952 }, + { 71.6667, 28.5714 }, + { 66.9048, 14.2857 }, + { 57.381, 4.7619 }, + { 43.0952, 0 }, + { 28.8095, 0 }, + { 14.5238, 4.7619 }, + { 9.7619, 9.5238 }, + { 5, 19.0476 }, +}; + +static const StrokeRec char51[] = { + { 15, char51_stroke0 }, +}; + +/* char: 52 '4' */ + +static const CoordRec char52_stroke0[] = { + { 51.499, 100 }, + { 3.88, 33.3333 }, + { 75.3086, 33.3333 }, +}; + +static const CoordRec char52_stroke1[] = { + { 51.499, 100 }, + { 51.499, 0 }, +}; + +static const StrokeRec char52[] = { + { 3, char52_stroke0 }, + { 2, char52_stroke1 }, +}; + +/* char: 53 '5' */ + +static const CoordRec char53_stroke0[] = { + { 62.0029, 100 }, + { 14.3838, 100 }, + { 9.6219, 57.1429 }, + { 14.3838, 61.9048 }, + { 28.6695, 66.6667 }, + { 42.9552, 66.6667 }, + { 57.241, 61.9048 }, + { 66.7648, 52.381 }, + { 71.5267, 38.0952 }, + { 71.5267, 28.5714 }, + { 66.7648, 14.2857 }, + { 57.241, 4.7619 }, + { 42.9552, 0 }, + { 28.6695, 0 }, + { 14.3838, 4.7619 }, + { 9.6219, 9.5238 }, + { 4.86, 19.0476 }, +}; + +static const StrokeRec char53[] = { + { 17, char53_stroke0 }, +}; + +/* char: 54 '6' */ + +static const CoordRec char54_stroke0[] = { + { 62.7229, 85.7143 }, + { 57.961, 95.2381 }, + { 43.6752, 100 }, + { 34.1514, 100 }, + { 19.8657, 95.2381 }, + { 10.3419, 80.9524 }, + { 5.58, 57.1429 }, + { 5.58, 33.3333 }, + { 10.3419, 14.2857 }, + { 19.8657, 4.7619 }, + { 34.1514, 0 }, + { 38.9133, 0 }, + { 53.199, 4.7619 }, + { 62.7229, 14.2857 }, + { 67.4848, 28.5714 }, + { 67.4848, 33.3333 }, + { 62.7229, 47.619 }, + { 53.199, 57.1429 }, + { 38.9133, 61.9048 }, + { 34.1514, 61.9048 }, + { 19.8657, 57.1429 }, + { 10.3419, 47.619 }, + { 5.58, 33.3333 }, +}; + +static const StrokeRec char54[] = { + { 23, char54_stroke0 }, +}; + +/* char: 55 '7' */ + +static const CoordRec char55_stroke0[] = { + { 72.2267, 100 }, + { 24.6076, 0 }, +}; + +static const CoordRec char55_stroke1[] = { + { 5.56, 100 }, + { 72.2267, 100 }, +}; + +static const StrokeRec char55[] = { + { 2, char55_stroke0 }, + { 2, char55_stroke1 }, +}; + +/* char: 56 '8' */ + +static const CoordRec char56_stroke0[] = { + { 29.4095, 100 }, + { 15.1238, 95.2381 }, + { 10.3619, 85.7143 }, + { 10.3619, 76.1905 }, + { 15.1238, 66.6667 }, + { 24.6476, 61.9048 }, + { 43.6952, 57.1429 }, + { 57.981, 52.381 }, + { 67.5048, 42.8571 }, + { 72.2667, 33.3333 }, + { 72.2667, 19.0476 }, + { 67.5048, 9.5238 }, + { 62.7429, 4.7619 }, + { 48.4571, 0 }, + { 29.4095, 0 }, + { 15.1238, 4.7619 }, + { 10.3619, 9.5238 }, + { 5.6, 19.0476 }, + { 5.6, 33.3333 }, + { 10.3619, 42.8571 }, + { 19.8857, 52.381 }, + { 34.1714, 57.1429 }, + { 53.219, 61.9048 }, + { 62.7429, 66.6667 }, + { 67.5048, 76.1905 }, + { 67.5048, 85.7143 }, + { 62.7429, 95.2381 }, + { 48.4571, 100 }, + { 29.4095, 100 }, +}; + +static const StrokeRec char56[] = { + { 29, char56_stroke0 }, +}; + +/* char: 57 '9' */ + +static const CoordRec char57_stroke0[] = { + { 68.5048, 66.6667 }, + { 63.7429, 52.381 }, + { 54.219, 42.8571 }, + { 39.9333, 38.0952 }, + { 35.1714, 38.0952 }, + { 20.8857, 42.8571 }, + { 11.3619, 52.381 }, + { 6.6, 66.6667 }, + { 6.6, 71.4286 }, + { 11.3619, 85.7143 }, + { 20.8857, 95.2381 }, + { 35.1714, 100 }, + { 39.9333, 100 }, + { 54.219, 95.2381 }, + { 63.7429, 85.7143 }, + { 68.5048, 66.6667 }, + { 68.5048, 42.8571 }, + { 63.7429, 19.0476 }, + { 54.219, 4.7619 }, + { 39.9333, 0 }, + { 30.4095, 0 }, + { 16.1238, 4.7619 }, + { 11.3619, 14.2857 }, +}; + +static const StrokeRec char57[] = { + { 23, char57_stroke0 }, +}; + +/* char: 58 ':' */ + +static const CoordRec char58_stroke0[] = { + { 14.0819, 66.6667 }, + { 9.32, 61.9048 }, + { 14.0819, 57.1429 }, + { 18.8438, 61.9048 }, + { 14.0819, 66.6667 }, +}; + +static const CoordRec char58_stroke1[] = { + { 14.0819, 9.5238 }, + { 9.32, 4.7619 }, + { 14.0819, 0 }, + { 18.8438, 4.7619 }, + { 14.0819, 9.5238 }, +}; + +static const StrokeRec char58[] = { + { 5, char58_stroke0 }, + { 5, char58_stroke1 }, +}; + +/* char: 59 ';' */ + +static const CoordRec char59_stroke0[] = { + { 12.9619, 66.6667 }, + { 8.2, 61.9048 }, + { 12.9619, 57.1429 }, + { 17.7238, 61.9048 }, + { 12.9619, 66.6667 }, +}; + +static const CoordRec char59_stroke1[] = { + { 17.7238, 4.7619 }, + { 12.9619, 0 }, + { 8.2, 4.7619 }, + { 12.9619, 9.5238 }, + { 17.7238, 4.7619 }, + { 17.7238, -4.7619 }, + { 12.9619, -14.2857 }, + { 8.2, -19.0476 }, +}; + +static const StrokeRec char59[] = { + { 5, char59_stroke0 }, + { 8, char59_stroke1 }, +}; + +/* char: 60 '<' */ + +static const CoordRec char60_stroke0[] = { + { 79.2505, 85.7143 }, + { 3.06, 42.8571 }, + { 79.2505, 0 }, +}; + +static const StrokeRec char60[] = { + { 3, char60_stroke0 }, +}; + +/* char: 61 '=' */ + +static const CoordRec char61_stroke0[] = { + { 5.7, 57.1429 }, + { 91.4143, 57.1429 }, +}; + +static const CoordRec char61_stroke1[] = { + { 5.7, 28.5714 }, + { 91.4143, 28.5714 }, +}; + +static const StrokeRec char61[] = { + { 2, char61_stroke0 }, + { 2, char61_stroke1 }, +}; + +/* char: 62 '>' */ + +static const CoordRec char62_stroke0[] = { + { 2.78, 85.7143 }, + { 78.9705, 42.8571 }, + { 2.78, 0 }, +}; + +static const StrokeRec char62[] = { + { 3, char62_stroke0 }, +}; + +/* char: 63 '?' */ + +static const CoordRec char63_stroke0[] = { + { 8.42, 76.1905 }, + { 8.42, 80.9524 }, + { 13.1819, 90.4762 }, + { 17.9438, 95.2381 }, + { 27.4676, 100 }, + { 46.5152, 100 }, + { 56.039, 95.2381 }, + { 60.801, 90.4762 }, + { 65.5629, 80.9524 }, + { 65.5629, 71.4286 }, + { 60.801, 61.9048 }, + { 56.039, 57.1429 }, + { 36.9914, 47.619 }, + { 36.9914, 33.3333 }, +}; + +static const CoordRec char63_stroke1[] = { + { 36.9914, 9.5238 }, + { 32.2295, 4.7619 }, + { 36.9914, 0 }, + { 41.7533, 4.7619 }, + { 36.9914, 9.5238 }, +}; + +static const StrokeRec char63[] = { + { 14, char63_stroke0 }, + { 5, char63_stroke1 }, +}; + +/* char: 64 '@' */ + +static const CoordRec char64_stroke0[] = { + { 49.2171, 52.381 }, + { 39.6933, 57.1429 }, + { 30.1695, 57.1429 }, + { 25.4076, 47.619 }, + { 25.4076, 42.8571 }, + { 30.1695, 33.3333 }, + { 39.6933, 33.3333 }, + { 49.2171, 38.0952 }, +}; + +static const CoordRec char64_stroke1[] = { + { 49.2171, 57.1429 }, + { 49.2171, 38.0952 }, + { 53.979, 33.3333 }, + { 63.5029, 33.3333 }, + { 68.2648, 42.8571 }, + { 68.2648, 47.619 }, + { 63.5029, 61.9048 }, + { 53.979, 71.4286 }, + { 39.6933, 76.1905 }, + { 34.9314, 76.1905 }, + { 20.6457, 71.4286 }, + { 11.1219, 61.9048 }, + { 6.36, 47.619 }, + { 6.36, 42.8571 }, + { 11.1219, 28.5714 }, + { 20.6457, 19.0476 }, + { 34.9314, 14.2857 }, + { 39.6933, 14.2857 }, + { 53.979, 19.0476 }, +}; + +static const StrokeRec char64[] = { + { 8, char64_stroke0 }, + { 19, char64_stroke1 }, +}; + +/* char: 65 'A' */ + +static const CoordRec char65_stroke0[] = { + { 40.5952, 100 }, + { 2.5, 0 }, +}; + +static const CoordRec char65_stroke1[] = { + { 40.5952, 100 }, + { 78.6905, 0 }, +}; + +static const CoordRec char65_stroke2[] = { + { 16.7857, 33.3333 }, + { 64.4048, 33.3333 }, +}; + +static const StrokeRec char65[] = { + { 2, char65_stroke0 }, + { 2, char65_stroke1 }, + { 2, char65_stroke2 }, +}; + +/* char: 66 'B' */ + +static const CoordRec char66_stroke0[] = { + { 11.42, 100 }, + { 11.42, 0 }, +}; + +static const CoordRec char66_stroke1[] = { + { 11.42, 100 }, + { 54.2771, 100 }, + { 68.5629, 95.2381 }, + { 73.3248, 90.4762 }, + { 78.0867, 80.9524 }, + { 78.0867, 71.4286 }, + { 73.3248, 61.9048 }, + { 68.5629, 57.1429 }, + { 54.2771, 52.381 }, +}; + +static const CoordRec char66_stroke2[] = { + { 11.42, 52.381 }, + { 54.2771, 52.381 }, + { 68.5629, 47.619 }, + { 73.3248, 42.8571 }, + { 78.0867, 33.3333 }, + { 78.0867, 19.0476 }, + { 73.3248, 9.5238 }, + { 68.5629, 4.7619 }, + { 54.2771, 0 }, + { 11.42, 0 }, +}; + +static const StrokeRec char66[] = { + { 2, char66_stroke0 }, + { 9, char66_stroke1 }, + { 10, char66_stroke2 }, +}; + +/* char: 67 'C' */ + +static const CoordRec char67_stroke0[] = { + { 78.0886, 76.1905 }, + { 73.3267, 85.7143 }, + { 63.8029, 95.2381 }, + { 54.279, 100 }, + { 35.2314, 100 }, + { 25.7076, 95.2381 }, + { 16.1838, 85.7143 }, + { 11.4219, 76.1905 }, + { 6.66, 61.9048 }, + { 6.66, 38.0952 }, + { 11.4219, 23.8095 }, + { 16.1838, 14.2857 }, + { 25.7076, 4.7619 }, + { 35.2314, 0 }, + { 54.279, 0 }, + { 63.8029, 4.7619 }, + { 73.3267, 14.2857 }, + { 78.0886, 23.8095 }, +}; + +static const StrokeRec char67[] = { + { 18, char67_stroke0 }, +}; + +/* char: 68 'D' */ + +static const CoordRec char68_stroke0[] = { + { 11.96, 100 }, + { 11.96, 0 }, +}; + +static const CoordRec char68_stroke1[] = { + { 11.96, 100 }, + { 45.2933, 100 }, + { 59.579, 95.2381 }, + { 69.1029, 85.7143 }, + { 73.8648, 76.1905 }, + { 78.6267, 61.9048 }, + { 78.6267, 38.0952 }, + { 73.8648, 23.8095 }, + { 69.1029, 14.2857 }, + { 59.579, 4.7619 }, + { 45.2933, 0 }, + { 11.96, 0 }, +}; + +static const StrokeRec char68[] = { + { 2, char68_stroke0 }, + { 12, char68_stroke1 }, +}; + +/* char: 69 'E' */ + +static const CoordRec char69_stroke0[] = { + { 11.42, 100 }, + { 11.42, 0 }, +}; + +static const CoordRec char69_stroke1[] = { + { 11.42, 100 }, + { 73.3248, 100 }, +}; + +static const CoordRec char69_stroke2[] = { + { 11.42, 52.381 }, + { 49.5152, 52.381 }, +}; + +static const CoordRec char69_stroke3[] = { + { 11.42, 0 }, + { 73.3248, 0 }, +}; + +static const StrokeRec char69[] = { + { 2, char69_stroke0 }, + { 2, char69_stroke1 }, + { 2, char69_stroke2 }, + { 2, char69_stroke3 }, +}; + +/* char: 70 'F' */ + +static const CoordRec char70_stroke0[] = { + { 11.42, 100 }, + { 11.42, 0 }, +}; + +static const CoordRec char70_stroke1[] = { + { 11.42, 100 }, + { 73.3248, 100 }, +}; + +static const CoordRec char70_stroke2[] = { + { 11.42, 52.381 }, + { 49.5152, 52.381 }, +}; + +static const StrokeRec char70[] = { + { 2, char70_stroke0 }, + { 2, char70_stroke1 }, + { 2, char70_stroke2 }, +}; + +/* char: 71 'G' */ + +static const CoordRec char71_stroke0[] = { + { 78.4886, 76.1905 }, + { 73.7267, 85.7143 }, + { 64.2029, 95.2381 }, + { 54.679, 100 }, + { 35.6314, 100 }, + { 26.1076, 95.2381 }, + { 16.5838, 85.7143 }, + { 11.8219, 76.1905 }, + { 7.06, 61.9048 }, + { 7.06, 38.0952 }, + { 11.8219, 23.8095 }, + { 16.5838, 14.2857 }, + { 26.1076, 4.7619 }, + { 35.6314, 0 }, + { 54.679, 0 }, + { 64.2029, 4.7619 }, + { 73.7267, 14.2857 }, + { 78.4886, 23.8095 }, + { 78.4886, 38.0952 }, +}; + +static const CoordRec char71_stroke1[] = { + { 54.679, 38.0952 }, + { 78.4886, 38.0952 }, +}; + +static const StrokeRec char71[] = { + { 19, char71_stroke0 }, + { 2, char71_stroke1 }, +}; + +/* char: 72 'H' */ + +static const CoordRec char72_stroke0[] = { + { 11.42, 100 }, + { 11.42, 0 }, +}; + +static const CoordRec char72_stroke1[] = { + { 78.0867, 100 }, + { 78.0867, 0 }, +}; + +static const CoordRec char72_stroke2[] = { + { 11.42, 52.381 }, + { 78.0867, 52.381 }, +}; + +static const StrokeRec char72[] = { + { 2, char72_stroke0 }, + { 2, char72_stroke1 }, + { 2, char72_stroke2 }, +}; + +/* char: 73 'I' */ + +static const CoordRec char73_stroke0[] = { + { 10.86, 100 }, + { 10.86, 0 }, +}; + +static const StrokeRec char73[] = { + { 2, char73_stroke0 }, +}; + +/* char: 74 'J' */ + +static const CoordRec char74_stroke0[] = { + { 50.119, 100 }, + { 50.119, 23.8095 }, + { 45.3571, 9.5238 }, + { 40.5952, 4.7619 }, + { 31.0714, 0 }, + { 21.5476, 0 }, + { 12.0238, 4.7619 }, + { 7.2619, 9.5238 }, + { 2.5, 23.8095 }, + { 2.5, 33.3333 }, +}; + +static const StrokeRec char74[] = { + { 10, char74_stroke0 }, +}; + +/* char: 75 'K' */ + +static const CoordRec char75_stroke0[] = { + { 11.28, 100 }, + { 11.28, 0 }, +}; + +static const CoordRec char75_stroke1[] = { + { 77.9467, 100 }, + { 11.28, 33.3333 }, +}; + +static const CoordRec char75_stroke2[] = { + { 35.0895, 57.1429 }, + { 77.9467, 0 }, +}; + +static const StrokeRec char75[] = { + { 2, char75_stroke0 }, + { 2, char75_stroke1 }, + { 2, char75_stroke2 }, +}; + +/* char: 76 'L' */ + +static const CoordRec char76_stroke0[] = { + { 11.68, 100 }, + { 11.68, 0 }, +}; + +static const CoordRec char76_stroke1[] = { + { 11.68, 0 }, + { 68.8229, 0 }, +}; + +static const StrokeRec char76[] = { + { 2, char76_stroke0 }, + { 2, char76_stroke1 }, +}; + +/* char: 77 'M' */ + +static const CoordRec char77_stroke0[] = { + { 10.86, 100 }, + { 10.86, 0 }, +}; + +static const CoordRec char77_stroke1[] = { + { 10.86, 100 }, + { 48.9552, 0 }, +}; + +static const CoordRec char77_stroke2[] = { + { 87.0505, 100 }, + { 48.9552, 0 }, +}; + +static const CoordRec char77_stroke3[] = { + { 87.0505, 100 }, + { 87.0505, 0 }, +}; + +static const StrokeRec char77[] = { + { 2, char77_stroke0 }, + { 2, char77_stroke1 }, + { 2, char77_stroke2 }, + { 2, char77_stroke3 }, +}; + +/* char: 78 'N' */ + +static const CoordRec char78_stroke0[] = { + { 11.14, 100 }, + { 11.14, 0 }, +}; + +static const CoordRec char78_stroke1[] = { + { 11.14, 100 }, + { 77.8067, 0 }, +}; + +static const CoordRec char78_stroke2[] = { + { 77.8067, 100 }, + { 77.8067, 0 }, +}; + +static const StrokeRec char78[] = { + { 2, char78_stroke0 }, + { 2, char78_stroke1 }, + { 2, char78_stroke2 }, +}; + +/* char: 79 'O' */ + +static const CoordRec char79_stroke0[] = { + { 34.8114, 100 }, + { 25.2876, 95.2381 }, + { 15.7638, 85.7143 }, + { 11.0019, 76.1905 }, + { 6.24, 61.9048 }, + { 6.24, 38.0952 }, + { 11.0019, 23.8095 }, + { 15.7638, 14.2857 }, + { 25.2876, 4.7619 }, + { 34.8114, 0 }, + { 53.859, 0 }, + { 63.3829, 4.7619 }, + { 72.9067, 14.2857 }, + { 77.6686, 23.8095 }, + { 82.4305, 38.0952 }, + { 82.4305, 61.9048 }, + { 77.6686, 76.1905 }, + { 72.9067, 85.7143 }, + { 63.3829, 95.2381 }, + { 53.859, 100 }, + { 34.8114, 100 }, +}; + +static const StrokeRec char79[] = { + { 21, char79_stroke0 }, +}; + +/* char: 80 'P' */ + +static const CoordRec char80_stroke0[] = { + { 12.1, 100 }, + { 12.1, 0 }, +}; + +static const CoordRec char80_stroke1[] = { + { 12.1, 100 }, + { 54.9571, 100 }, + { 69.2429, 95.2381 }, + { 74.0048, 90.4762 }, + { 78.7667, 80.9524 }, + { 78.7667, 66.6667 }, + { 74.0048, 57.1429 }, + { 69.2429, 52.381 }, + { 54.9571, 47.619 }, + { 12.1, 47.619 }, +}; + +static const StrokeRec char80[] = { + { 2, char80_stroke0 }, + { 10, char80_stroke1 }, +}; + +/* char: 81 'Q' */ + +static const CoordRec char81_stroke0[] = { + { 33.8714, 100 }, + { 24.3476, 95.2381 }, + { 14.8238, 85.7143 }, + { 10.0619, 76.1905 }, + { 5.3, 61.9048 }, + { 5.3, 38.0952 }, + { 10.0619, 23.8095 }, + { 14.8238, 14.2857 }, + { 24.3476, 4.7619 }, + { 33.8714, 0 }, + { 52.919, 0 }, + { 62.4429, 4.7619 }, + { 71.9667, 14.2857 }, + { 76.7286, 23.8095 }, + { 81.4905, 38.0952 }, + { 81.4905, 61.9048 }, + { 76.7286, 76.1905 }, + { 71.9667, 85.7143 }, + { 62.4429, 95.2381 }, + { 52.919, 100 }, + { 33.8714, 100 }, +}; + +static const CoordRec char81_stroke1[] = { + { 48.1571, 19.0476 }, + { 76.7286, -9.5238 }, +}; + +static const StrokeRec char81[] = { + { 21, char81_stroke0 }, + { 2, char81_stroke1 }, +}; + +/* char: 82 'R' */ + +static const CoordRec char82_stroke0[] = { + { 11.68, 100 }, + { 11.68, 0 }, +}; + +static const CoordRec char82_stroke1[] = { + { 11.68, 100 }, + { 54.5371, 100 }, + { 68.8229, 95.2381 }, + { 73.5848, 90.4762 }, + { 78.3467, 80.9524 }, + { 78.3467, 71.4286 }, + { 73.5848, 61.9048 }, + { 68.8229, 57.1429 }, + { 54.5371, 52.381 }, + { 11.68, 52.381 }, +}; + +static const CoordRec char82_stroke2[] = { + { 45.0133, 52.381 }, + { 78.3467, 0 }, +}; + +static const StrokeRec char82[] = { + { 2, char82_stroke0 }, + { 10, char82_stroke1 }, + { 2, char82_stroke2 }, +}; + +/* char: 83 'S' */ + +static const CoordRec char83_stroke0[] = { + { 74.6667, 85.7143 }, + { 65.1429, 95.2381 }, + { 50.8571, 100 }, + { 31.8095, 100 }, + { 17.5238, 95.2381 }, + { 8, 85.7143 }, + { 8, 76.1905 }, + { 12.7619, 66.6667 }, + { 17.5238, 61.9048 }, + { 27.0476, 57.1429 }, + { 55.619, 47.619 }, + { 65.1429, 42.8571 }, + { 69.9048, 38.0952 }, + { 74.6667, 28.5714 }, + { 74.6667, 14.2857 }, + { 65.1429, 4.7619 }, + { 50.8571, 0 }, + { 31.8095, 0 }, + { 17.5238, 4.7619 }, + { 8, 14.2857 }, +}; + +static const StrokeRec char83[] = { + { 20, char83_stroke0 }, +}; + +/* char: 84 'T' */ + +static const CoordRec char84_stroke0[] = { + { 35.6933, 100 }, + { 35.6933, 0 }, +}; + +static const CoordRec char84_stroke1[] = { + { 2.36, 100 }, + { 69.0267, 100 }, +}; + +static const StrokeRec char84[] = { + { 2, char84_stroke0 }, + { 2, char84_stroke1 }, +}; + +/* char: 85 'U' */ + +static const CoordRec char85_stroke0[] = { + { 11.54, 100 }, + { 11.54, 28.5714 }, + { 16.3019, 14.2857 }, + { 25.8257, 4.7619 }, + { 40.1114, 0 }, + { 49.6352, 0 }, + { 63.921, 4.7619 }, + { 73.4448, 14.2857 }, + { 78.2067, 28.5714 }, + { 78.2067, 100 }, +}; + +static const StrokeRec char85[] = { + { 10, char85_stroke0 }, +}; + +/* char: 86 'V' */ + +static const CoordRec char86_stroke0[] = { + { 2.36, 100 }, + { 40.4552, 0 }, +}; + +static const CoordRec char86_stroke1[] = { + { 78.5505, 100 }, + { 40.4552, 0 }, +}; + +static const StrokeRec char86[] = { + { 2, char86_stroke0 }, + { 2, char86_stroke1 }, +}; + +/* char: 87 'W' */ + +static const CoordRec char87_stroke0[] = { + { 2.22, 100 }, + { 26.0295, 0 }, +}; + +static const CoordRec char87_stroke1[] = { + { 49.839, 100 }, + { 26.0295, 0 }, +}; + +static const CoordRec char87_stroke2[] = { + { 49.839, 100 }, + { 73.6486, 0 }, +}; + +static const CoordRec char87_stroke3[] = { + { 97.4581, 100 }, + { 73.6486, 0 }, +}; + +static const StrokeRec char87[] = { + { 2, char87_stroke0 }, + { 2, char87_stroke1 }, + { 2, char87_stroke2 }, + { 2, char87_stroke3 }, +}; + +/* char: 88 'X' */ + +static const CoordRec char88_stroke0[] = { + { 2.5, 100 }, + { 69.1667, 0 }, +}; + +static const CoordRec char88_stroke1[] = { + { 69.1667, 100 }, + { 2.5, 0 }, +}; + +static const StrokeRec char88[] = { + { 2, char88_stroke0 }, + { 2, char88_stroke1 }, +}; + +/* char: 89 'Y' */ + +static const CoordRec char89_stroke0[] = { + { 1.52, 100 }, + { 39.6152, 52.381 }, + { 39.6152, 0 }, +}; + +static const CoordRec char89_stroke1[] = { + { 77.7105, 100 }, + { 39.6152, 52.381 }, +}; + +static const StrokeRec char89[] = { + { 3, char89_stroke0 }, + { 2, char89_stroke1 }, +}; + +/* char: 90 'Z' */ + +static const CoordRec char90_stroke0[] = { + { 69.1667, 100 }, + { 2.5, 0 }, +}; + +static const CoordRec char90_stroke1[] = { + { 2.5, 100 }, + { 69.1667, 100 }, +}; + +static const CoordRec char90_stroke2[] = { + { 2.5, 0 }, + { 69.1667, 0 }, +}; + +static const StrokeRec char90[] = { + { 2, char90_stroke0 }, + { 2, char90_stroke1 }, + { 2, char90_stroke2 }, +}; + +/* char: 91 '[' */ + +static const CoordRec char91_stroke0[] = { + { 7.78, 119.048 }, + { 7.78, -33.3333 }, +}; + +static const CoordRec char91_stroke1[] = { + { 12.5419, 119.048 }, + { 12.5419, -33.3333 }, +}; + +static const CoordRec char91_stroke2[] = { + { 7.78, 119.048 }, + { 41.1133, 119.048 }, +}; + +static const CoordRec char91_stroke3[] = { + { 7.78, -33.3333 }, + { 41.1133, -33.3333 }, +}; + +static const StrokeRec char91[] = { + { 2, char91_stroke0 }, + { 2, char91_stroke1 }, + { 2, char91_stroke2 }, + { 2, char91_stroke3 }, +}; + +/* char: 92 '\' */ + +static const CoordRec char92_stroke0[] = { + { 5.84, 100 }, + { 72.5067, -14.2857 }, +}; + +static const StrokeRec char92[] = { + { 2, char92_stroke0 }, +}; + +/* char: 93 ']' */ + +static const CoordRec char93_stroke0[] = { + { 33.0114, 119.048 }, + { 33.0114, -33.3333 }, +}; + +static const CoordRec char93_stroke1[] = { + { 37.7733, 119.048 }, + { 37.7733, -33.3333 }, +}; + +static const CoordRec char93_stroke2[] = { + { 4.44, 119.048 }, + { 37.7733, 119.048 }, +}; + +static const CoordRec char93_stroke3[] = { + { 4.44, -33.3333 }, + { 37.7733, -33.3333 }, +}; + +static const StrokeRec char93[] = { + { 2, char93_stroke0 }, + { 2, char93_stroke1 }, + { 2, char93_stroke2 }, + { 2, char93_stroke3 }, +}; + +/* char: 94 '^' */ + +static const CoordRec char94_stroke0[] = { + { 44.0752, 109.524 }, + { 5.98, 42.8571 }, +}; + +static const CoordRec char94_stroke1[] = { + { 44.0752, 109.524 }, + { 82.1705, 42.8571 }, +}; + +static const StrokeRec char94[] = { + { 2, char94_stroke0 }, + { 2, char94_stroke1 }, +}; + +/* char: 95 '_' */ + +static const CoordRec char95_stroke0[] = { + { -1.1, -33.3333 }, + { 103.662, -33.3333 }, + { 103.662, -28.5714 }, + { -1.1, -28.5714 }, + { -1.1, -33.3333 }, +}; + +static const StrokeRec char95[] = { + { 5, char95_stroke0 }, +}; + +/* char: 96 '`' */ + +static const CoordRec char96_stroke0[] = { + { 33.0219, 100 }, + { 56.8314, 71.4286 }, +}; + +static const CoordRec char96_stroke1[] = { + { 33.0219, 100 }, + { 28.26, 95.2381 }, + { 56.8314, 71.4286 }, +}; + +static const StrokeRec char96[] = { + { 2, char96_stroke0 }, + { 3, char96_stroke1 }, +}; + +/* char: 97 'a' */ + +static const CoordRec char97_stroke0[] = { + { 63.8229, 66.6667 }, + { 63.8229, 0 }, +}; + +static const CoordRec char97_stroke1[] = { + { 63.8229, 52.381 }, + { 54.299, 61.9048 }, + { 44.7752, 66.6667 }, + { 30.4895, 66.6667 }, + { 20.9657, 61.9048 }, + { 11.4419, 52.381 }, + { 6.68, 38.0952 }, + { 6.68, 28.5714 }, + { 11.4419, 14.2857 }, + { 20.9657, 4.7619 }, + { 30.4895, 0 }, + { 44.7752, 0 }, + { 54.299, 4.7619 }, + { 63.8229, 14.2857 }, +}; + +static const StrokeRec char97[] = { + { 2, char97_stroke0 }, + { 14, char97_stroke1 }, +}; + +/* char: 98 'b' */ + +static const CoordRec char98_stroke0[] = { + { 8.76, 100 }, + { 8.76, 0 }, +}; + +static const CoordRec char98_stroke1[] = { + { 8.76, 52.381 }, + { 18.2838, 61.9048 }, + { 27.8076, 66.6667 }, + { 42.0933, 66.6667 }, + { 51.6171, 61.9048 }, + { 61.141, 52.381 }, + { 65.9029, 38.0952 }, + { 65.9029, 28.5714 }, + { 61.141, 14.2857 }, + { 51.6171, 4.7619 }, + { 42.0933, 0 }, + { 27.8076, 0 }, + { 18.2838, 4.7619 }, + { 8.76, 14.2857 }, +}; + +static const StrokeRec char98[] = { + { 2, char98_stroke0 }, + { 14, char98_stroke1 }, +}; + +/* char: 99 'c' */ + +static const CoordRec char99_stroke0[] = { + { 62.6629, 52.381 }, + { 53.139, 61.9048 }, + { 43.6152, 66.6667 }, + { 29.3295, 66.6667 }, + { 19.8057, 61.9048 }, + { 10.2819, 52.381 }, + { 5.52, 38.0952 }, + { 5.52, 28.5714 }, + { 10.2819, 14.2857 }, + { 19.8057, 4.7619 }, + { 29.3295, 0 }, + { 43.6152, 0 }, + { 53.139, 4.7619 }, + { 62.6629, 14.2857 }, +}; + +static const StrokeRec char99[] = { + { 14, char99_stroke0 }, +}; + +/* char: 100 'd' */ + +static const CoordRec char100_stroke0[] = { + { 61.7829, 100 }, + { 61.7829, 0 }, +}; + +static const CoordRec char100_stroke1[] = { + { 61.7829, 52.381 }, + { 52.259, 61.9048 }, + { 42.7352, 66.6667 }, + { 28.4495, 66.6667 }, + { 18.9257, 61.9048 }, + { 9.4019, 52.381 }, + { 4.64, 38.0952 }, + { 4.64, 28.5714 }, + { 9.4019, 14.2857 }, + { 18.9257, 4.7619 }, + { 28.4495, 0 }, + { 42.7352, 0 }, + { 52.259, 4.7619 }, + { 61.7829, 14.2857 }, +}; + +static const StrokeRec char100[] = { + { 2, char100_stroke0 }, + { 14, char100_stroke1 }, +}; + +/* char: 101 'e' */ + +static const CoordRec char101_stroke0[] = { + { 5.72, 38.0952 }, + { 62.8629, 38.0952 }, + { 62.8629, 47.619 }, + { 58.101, 57.1429 }, + { 53.339, 61.9048 }, + { 43.8152, 66.6667 }, + { 29.5295, 66.6667 }, + { 20.0057, 61.9048 }, + { 10.4819, 52.381 }, + { 5.72, 38.0952 }, + { 5.72, 28.5714 }, + { 10.4819, 14.2857 }, + { 20.0057, 4.7619 }, + { 29.5295, 0 }, + { 43.8152, 0 }, + { 53.339, 4.7619 }, + { 62.8629, 14.2857 }, +}; + +static const StrokeRec char101[] = { + { 17, char101_stroke0 }, +}; + +/* char: 102 'f' */ + +static const CoordRec char102_stroke0[] = { + { 38.7752, 100 }, + { 29.2514, 100 }, + { 19.7276, 95.2381 }, + { 14.9657, 80.9524 }, + { 14.9657, 0 }, +}; + +static const CoordRec char102_stroke1[] = { + { 0.68, 66.6667 }, + { 34.0133, 66.6667 }, +}; + +static const StrokeRec char102[] = { + { 5, char102_stroke0 }, + { 2, char102_stroke1 }, +}; + +/* char: 103 'g' */ + +static const CoordRec char103_stroke0[] = { + { 62.5029, 66.6667 }, + { 62.5029, -9.5238 }, + { 57.741, -23.8095 }, + { 52.979, -28.5714 }, + { 43.4552, -33.3333 }, + { 29.1695, -33.3333 }, + { 19.6457, -28.5714 }, +}; + +static const CoordRec char103_stroke1[] = { + { 62.5029, 52.381 }, + { 52.979, 61.9048 }, + { 43.4552, 66.6667 }, + { 29.1695, 66.6667 }, + { 19.6457, 61.9048 }, + { 10.1219, 52.381 }, + { 5.36, 38.0952 }, + { 5.36, 28.5714 }, + { 10.1219, 14.2857 }, + { 19.6457, 4.7619 }, + { 29.1695, 0 }, + { 43.4552, 0 }, + { 52.979, 4.7619 }, + { 62.5029, 14.2857 }, +}; + +static const StrokeRec char103[] = { + { 7, char103_stroke0 }, + { 14, char103_stroke1 }, +}; + +/* char: 104 'h' */ + +static const CoordRec char104_stroke0[] = { + { 9.6, 100 }, + { 9.6, 0 }, +}; + +static const CoordRec char104_stroke1[] = { + { 9.6, 47.619 }, + { 23.8857, 61.9048 }, + { 33.4095, 66.6667 }, + { 47.6952, 66.6667 }, + { 57.219, 61.9048 }, + { 61.981, 47.619 }, + { 61.981, 0 }, +}; + +static const StrokeRec char104[] = { + { 2, char104_stroke0 }, + { 7, char104_stroke1 }, +}; + +/* char: 105 'i' */ + +static const CoordRec char105_stroke0[] = { + { 10.02, 100 }, + { 14.7819, 95.2381 }, + { 19.5438, 100 }, + { 14.7819, 104.762 }, + { 10.02, 100 }, +}; + +static const CoordRec char105_stroke1[] = { + { 14.7819, 66.6667 }, + { 14.7819, 0 }, +}; + +static const StrokeRec char105[] = { + { 5, char105_stroke0 }, + { 2, char105_stroke1 }, +}; + +/* char: 106 'j' */ + +static const CoordRec char106_stroke0[] = { + { 17.3876, 100 }, + { 22.1495, 95.2381 }, + { 26.9114, 100 }, + { 22.1495, 104.762 }, + { 17.3876, 100 }, +}; + +static const CoordRec char106_stroke1[] = { + { 22.1495, 66.6667 }, + { 22.1495, -14.2857 }, + { 17.3876, -28.5714 }, + { 7.8638, -33.3333 }, + { -1.66, -33.3333 }, +}; + +static const StrokeRec char106[] = { + { 5, char106_stroke0 }, + { 5, char106_stroke1 }, +}; + +/* char: 107 'k' */ + +static const CoordRec char107_stroke0[] = { + { 9.6, 100 }, + { 9.6, 0 }, +}; + +static const CoordRec char107_stroke1[] = { + { 57.219, 66.6667 }, + { 9.6, 19.0476 }, +}; + +static const CoordRec char107_stroke2[] = { + { 28.6476, 38.0952 }, + { 61.981, 0 }, +}; + +static const StrokeRec char107[] = { + { 2, char107_stroke0 }, + { 2, char107_stroke1 }, + { 2, char107_stroke2 }, +}; + +/* char: 108 'l' */ + +static const CoordRec char108_stroke0[] = { + { 10.02, 100 }, + { 10.02, 0 }, +}; + +static const StrokeRec char108[] = { + { 2, char108_stroke0 }, +}; + +/* char: 109 'm' */ + +static const CoordRec char109_stroke0[] = { + { 9.6, 66.6667 }, + { 9.6, 0 }, +}; + +static const CoordRec char109_stroke1[] = { + { 9.6, 47.619 }, + { 23.8857, 61.9048 }, + { 33.4095, 66.6667 }, + { 47.6952, 66.6667 }, + { 57.219, 61.9048 }, + { 61.981, 47.619 }, + { 61.981, 0 }, +}; + +static const CoordRec char109_stroke2[] = { + { 61.981, 47.619 }, + { 76.2667, 61.9048 }, + { 85.7905, 66.6667 }, + { 100.076, 66.6667 }, + { 109.6, 61.9048 }, + { 114.362, 47.619 }, + { 114.362, 0 }, +}; + +static const StrokeRec char109[] = { + { 2, char109_stroke0 }, + { 7, char109_stroke1 }, + { 7, char109_stroke2 }, +}; + +/* char: 110 'n' */ + +static const CoordRec char110_stroke0[] = { + { 9.18, 66.6667 }, + { 9.18, 0 }, +}; + +static const CoordRec char110_stroke1[] = { + { 9.18, 47.619 }, + { 23.4657, 61.9048 }, + { 32.9895, 66.6667 }, + { 47.2752, 66.6667 }, + { 56.799, 61.9048 }, + { 61.561, 47.619 }, + { 61.561, 0 }, +}; + +static const StrokeRec char110[] = { + { 2, char110_stroke0 }, + { 7, char110_stroke1 }, +}; + +/* char: 111 'o' */ + +static const CoordRec char111_stroke0[] = { + { 28.7895, 66.6667 }, + { 19.2657, 61.9048 }, + { 9.7419, 52.381 }, + { 4.98, 38.0952 }, + { 4.98, 28.5714 }, + { 9.7419, 14.2857 }, + { 19.2657, 4.7619 }, + { 28.7895, 0 }, + { 43.0752, 0 }, + { 52.599, 4.7619 }, + { 62.1229, 14.2857 }, + { 66.8848, 28.5714 }, + { 66.8848, 38.0952 }, + { 62.1229, 52.381 }, + { 52.599, 61.9048 }, + { 43.0752, 66.6667 }, + { 28.7895, 66.6667 }, +}; + +static const StrokeRec char111[] = { + { 17, char111_stroke0 }, +}; + +/* char: 112 'p' */ + +static const CoordRec char112_stroke0[] = { + { 9.46, 66.6667 }, + { 9.46, -33.3333 }, +}; + +static const CoordRec char112_stroke1[] = { + { 9.46, 52.381 }, + { 18.9838, 61.9048 }, + { 28.5076, 66.6667 }, + { 42.7933, 66.6667 }, + { 52.3171, 61.9048 }, + { 61.841, 52.381 }, + { 66.6029, 38.0952 }, + { 66.6029, 28.5714 }, + { 61.841, 14.2857 }, + { 52.3171, 4.7619 }, + { 42.7933, 0 }, + { 28.5076, 0 }, + { 18.9838, 4.7619 }, + { 9.46, 14.2857 }, +}; + +static const StrokeRec char112[] = { + { 2, char112_stroke0 }, + { 14, char112_stroke1 }, +}; + +/* char: 113 'q' */ + +static const CoordRec char113_stroke0[] = { + { 61.9829, 66.6667 }, + { 61.9829, -33.3333 }, +}; + +static const CoordRec char113_stroke1[] = { + { 61.9829, 52.381 }, + { 52.459, 61.9048 }, + { 42.9352, 66.6667 }, + { 28.6495, 66.6667 }, + { 19.1257, 61.9048 }, + { 9.6019, 52.381 }, + { 4.84, 38.0952 }, + { 4.84, 28.5714 }, + { 9.6019, 14.2857 }, + { 19.1257, 4.7619 }, + { 28.6495, 0 }, + { 42.9352, 0 }, + { 52.459, 4.7619 }, + { 61.9829, 14.2857 }, +}; + +static const StrokeRec char113[] = { + { 2, char113_stroke0 }, + { 14, char113_stroke1 }, +}; + +/* char: 114 'r' */ + +static const CoordRec char114_stroke0[] = { + { 9.46, 66.6667 }, + { 9.46, 0 }, +}; + +static const CoordRec char114_stroke1[] = { + { 9.46, 38.0952 }, + { 14.2219, 52.381 }, + { 23.7457, 61.9048 }, + { 33.2695, 66.6667 }, + { 47.5552, 66.6667 }, +}; + +static const StrokeRec char114[] = { + { 2, char114_stroke0 }, + { 5, char114_stroke1 }, +}; + +/* char: 115 's' */ + +static const CoordRec char115_stroke0[] = { + { 57.081, 52.381 }, + { 52.319, 61.9048 }, + { 38.0333, 66.6667 }, + { 23.7476, 66.6667 }, + { 9.4619, 61.9048 }, + { 4.7, 52.381 }, + { 9.4619, 42.8571 }, + { 18.9857, 38.0952 }, + { 42.7952, 33.3333 }, + { 52.319, 28.5714 }, + { 57.081, 19.0476 }, + { 57.081, 14.2857 }, + { 52.319, 4.7619 }, + { 38.0333, 0 }, + { 23.7476, 0 }, + { 9.4619, 4.7619 }, + { 4.7, 14.2857 }, +}; + +static const StrokeRec char115[] = { + { 17, char115_stroke0 }, +}; + +/* char: 116 't' */ + +static const CoordRec char116_stroke0[] = { + { 14.8257, 100 }, + { 14.8257, 19.0476 }, + { 19.5876, 4.7619 }, + { 29.1114, 0 }, + { 38.6352, 0 }, +}; + +static const CoordRec char116_stroke1[] = { + { 0.54, 66.6667 }, + { 33.8733, 66.6667 }, +}; + +static const StrokeRec char116[] = { + { 5, char116_stroke0 }, + { 2, char116_stroke1 }, +}; + +/* char: 117 'u' */ + +static const CoordRec char117_stroke0[] = { + { 9.46, 66.6667 }, + { 9.46, 19.0476 }, + { 14.2219, 4.7619 }, + { 23.7457, 0 }, + { 38.0314, 0 }, + { 47.5552, 4.7619 }, + { 61.841, 19.0476 }, +}; + +static const CoordRec char117_stroke1[] = { + { 61.841, 66.6667 }, + { 61.841, 0 }, +}; + +static const StrokeRec char117[] = { + { 7, char117_stroke0 }, + { 2, char117_stroke1 }, +}; + +/* char: 118 'v' */ + +static const CoordRec char118_stroke0[] = { + { 1.8, 66.6667 }, + { 30.3714, 0 }, +}; + +static const CoordRec char118_stroke1[] = { + { 58.9429, 66.6667 }, + { 30.3714, 0 }, +}; + +static const StrokeRec char118[] = { + { 2, char118_stroke0 }, + { 2, char118_stroke1 }, +}; + +/* char: 119 'w' */ + +static const CoordRec char119_stroke0[] = { + { 2.5, 66.6667 }, + { 21.5476, 0 }, +}; + +static const CoordRec char119_stroke1[] = { + { 40.5952, 66.6667 }, + { 21.5476, 0 }, +}; + +static const CoordRec char119_stroke2[] = { + { 40.5952, 66.6667 }, + { 59.6429, 0 }, +}; + +static const CoordRec char119_stroke3[] = { + { 78.6905, 66.6667 }, + { 59.6429, 0 }, +}; + +static const StrokeRec char119[] = { + { 2, char119_stroke0 }, + { 2, char119_stroke1 }, + { 2, char119_stroke2 }, + { 2, char119_stroke3 }, +}; + +/* char: 120 'x' */ + +static const CoordRec char120_stroke0[] = { + { 1.66, 66.6667 }, + { 54.041, 0 }, +}; + +static const CoordRec char120_stroke1[] = { + { 54.041, 66.6667 }, + { 1.66, 0 }, +}; + +static const StrokeRec char120[] = { + { 2, char120_stroke0 }, + { 2, char120_stroke1 }, +}; + +/* char: 121 'y' */ + +static const CoordRec char121_stroke0[] = { + { 6.5619, 66.6667 }, + { 35.1333, 0 }, +}; + +static const CoordRec char121_stroke1[] = { + { 63.7048, 66.6667 }, + { 35.1333, 0 }, + { 25.6095, -19.0476 }, + { 16.0857, -28.5714 }, + { 6.5619, -33.3333 }, + { 1.8, -33.3333 }, +}; + +static const StrokeRec char121[] = { + { 2, char121_stroke0 }, + { 6, char121_stroke1 }, +}; + +/* char: 122 'z' */ + +static const CoordRec char122_stroke0[] = { + { 56.821, 66.6667 }, + { 4.44, 0 }, +}; + +static const CoordRec char122_stroke1[] = { + { 4.44, 66.6667 }, + { 56.821, 66.6667 }, +}; + +static const CoordRec char122_stroke2[] = { + { 4.44, 0 }, + { 56.821, 0 }, +}; + +static const StrokeRec char122[] = { + { 2, char122_stroke0 }, + { 2, char122_stroke1 }, + { 2, char122_stroke2 }, +}; + +/* char: 123 '{' */ + +static const CoordRec char123_stroke0[] = { + { 31.1895, 119.048 }, + { 21.6657, 114.286 }, + { 16.9038, 109.524 }, + { 12.1419, 100 }, + { 12.1419, 90.4762 }, + { 16.9038, 80.9524 }, + { 21.6657, 76.1905 }, + { 26.4276, 66.6667 }, + { 26.4276, 57.1429 }, + { 16.9038, 47.619 }, +}; + +static const CoordRec char123_stroke1[] = { + { 21.6657, 114.286 }, + { 16.9038, 104.762 }, + { 16.9038, 95.2381 }, + { 21.6657, 85.7143 }, + { 26.4276, 80.9524 }, + { 31.1895, 71.4286 }, + { 31.1895, 61.9048 }, + { 26.4276, 52.381 }, + { 7.38, 42.8571 }, + { 26.4276, 33.3333 }, + { 31.1895, 23.8095 }, + { 31.1895, 14.2857 }, + { 26.4276, 4.7619 }, + { 21.6657, 0 }, + { 16.9038, -9.5238 }, + { 16.9038, -19.0476 }, + { 21.6657, -28.5714 }, +}; + +static const CoordRec char123_stroke2[] = { + { 16.9038, 38.0952 }, + { 26.4276, 28.5714 }, + { 26.4276, 19.0476 }, + { 21.6657, 9.5238 }, + { 16.9038, 4.7619 }, + { 12.1419, -4.7619 }, + { 12.1419, -14.2857 }, + { 16.9038, -23.8095 }, + { 21.6657, -28.5714 }, + { 31.1895, -33.3333 }, +}; + +static const StrokeRec char123[] = { + { 10, char123_stroke0 }, + { 17, char123_stroke1 }, + { 10, char123_stroke2 }, +}; + +/* char: 124 '|' */ + +static const CoordRec char124_stroke0[] = { + { 11.54, 119.048 }, + { 11.54, -33.3333 }, +}; + +static const StrokeRec char124[] = { + { 2, char124_stroke0 }, +}; + +/* char: 125 '}' */ + +static const CoordRec char125_stroke0[] = { + { 9.18, 119.048 }, + { 18.7038, 114.286 }, + { 23.4657, 109.524 }, + { 28.2276, 100 }, + { 28.2276, 90.4762 }, + { 23.4657, 80.9524 }, + { 18.7038, 76.1905 }, + { 13.9419, 66.6667 }, + { 13.9419, 57.1429 }, + { 23.4657, 47.619 }, +}; + +static const CoordRec char125_stroke1[] = { + { 18.7038, 114.286 }, + { 23.4657, 104.762 }, + { 23.4657, 95.2381 }, + { 18.7038, 85.7143 }, + { 13.9419, 80.9524 }, + { 9.18, 71.4286 }, + { 9.18, 61.9048 }, + { 13.9419, 52.381 }, + { 32.9895, 42.8571 }, + { 13.9419, 33.3333 }, + { 9.18, 23.8095 }, + { 9.18, 14.2857 }, + { 13.9419, 4.7619 }, + { 18.7038, 0 }, + { 23.4657, -9.5238 }, + { 23.4657, -19.0476 }, + { 18.7038, -28.5714 }, +}; + +static const CoordRec char125_stroke2[] = { + { 23.4657, 38.0952 }, + { 13.9419, 28.5714 }, + { 13.9419, 19.0476 }, + { 18.7038, 9.5238 }, + { 23.4657, 4.7619 }, + { 28.2276, -4.7619 }, + { 28.2276, -14.2857 }, + { 23.4657, -23.8095 }, + { 18.7038, -28.5714 }, + { 9.18, -33.3333 }, +}; + +static const StrokeRec char125[] = { + { 10, char125_stroke0 }, + { 17, char125_stroke1 }, + { 10, char125_stroke2 }, +}; + +/* char: 126 '~' */ + +static const CoordRec char126_stroke0[] = { + { 2.92, 28.5714 }, + { 2.92, 38.0952 }, + { 7.6819, 52.381 }, + { 17.2057, 57.1429 }, + { 26.7295, 57.1429 }, + { 36.2533, 52.381 }, + { 55.301, 38.0952 }, + { 64.8248, 33.3333 }, + { 74.3486, 33.3333 }, + { 83.8724, 38.0952 }, + { 88.6343, 47.619 }, +}; + +static const CoordRec char126_stroke1[] = { + { 2.92, 38.0952 }, + { 7.6819, 47.619 }, + { 17.2057, 52.381 }, + { 26.7295, 52.381 }, + { 36.2533, 47.619 }, + { 55.301, 33.3333 }, + { 64.8248, 28.5714 }, + { 74.3486, 28.5714 }, + { 83.8724, 33.3333 }, + { 88.6343, 47.619 }, + { 88.6343, 57.1429 }, +}; + +static const StrokeRec char126[] = { + { 11, char126_stroke0 }, + { 11, char126_stroke1 }, +}; + +/* char: 127 */ + +static const CoordRec char127_stroke0[] = { + { 52.381, 100 }, + { 14.2857, -33.3333 }, +}; + +static const CoordRec char127_stroke1[] = { + { 28.5714, 66.6667 }, + { 14.2857, 61.9048 }, + { 4.7619, 52.381 }, + { 0, 38.0952 }, + { 0, 23.8095 }, + { 4.7619, 14.2857 }, + { 14.2857, 4.7619 }, + { 28.5714, 0 }, + { 38.0952, 0 }, + { 52.381, 4.7619 }, + { 61.9048, 14.2857 }, + { 66.6667, 28.5714 }, + { 66.6667, 42.8571 }, + { 61.9048, 52.381 }, + { 52.381, 61.9048 }, + { 38.0952, 66.6667 }, + { 28.5714, 66.6667 }, +}; + +static const StrokeRec char127[] = { + { 2, char127_stroke0 }, + { 17, char127_stroke1 }, +}; + +static const StrokeCharRec chars[] = { + { 0, /* char0 */ 0, 0, 0 }, + { 0, /* char1 */ 0, 0, 0 }, + { 0, /* char2 */ 0, 0, 0 }, + { 0, /* char3 */ 0, 0, 0 }, + { 0, /* char4 */ 0, 0, 0 }, + { 0, /* char5 */ 0, 0, 0 }, + { 0, /* char6 */ 0, 0, 0 }, + { 0, /* char7 */ 0, 0, 0 }, + { 0, /* char8 */ 0, 0, 0 }, + { 0, /* char9 */ 0, 0, 0 }, + { 0, /* char10 */ 0, 0, 0 }, + { 0, /* char11 */ 0, 0, 0 }, + { 0, /* char12 */ 0, 0, 0 }, + { 0, /* char13 */ 0, 0, 0 }, + { 0, /* char14 */ 0, 0, 0 }, + { 0, /* char15 */ 0, 0, 0 }, + { 0, /* char16 */ 0, 0, 0 }, + { 0, /* char17 */ 0, 0, 0 }, + { 0, /* char18 */ 0, 0, 0 }, + { 0, /* char19 */ 0, 0, 0 }, + { 0, /* char20 */ 0, 0, 0 }, + { 0, /* char21 */ 0, 0, 0 }, + { 0, /* char22 */ 0, 0, 0 }, + { 0, /* char23 */ 0, 0, 0 }, + { 0, /* char24 */ 0, 0, 0 }, + { 0, /* char25 */ 0, 0, 0 }, + { 0, /* char26 */ 0, 0, 0 }, + { 0, /* char27 */ 0, 0, 0 }, + { 0, /* char28 */ 0, 0, 0 }, + { 0, /* char29 */ 0, 0, 0 }, + { 0, /* char30 */ 0, 0, 0 }, + { 0, /* char31 */ 0, 0, 0 }, + { 0, /* char32 */ 0, 35, 70 }, /* jwz: changed this to be 'n' width. + (it was 52.381, 104.762) */ + { 2, char33, 13.3819, 26.6238 }, + { 2, char34, 23.0676, 51.4352 }, + { 4, char35, 36.5333, 79.4886 }, + { 3, char36, 38.1533, 76.2067 }, + { 3, char37, 49.2171, 96.5743 }, + { 1, char38, 53.599, 101.758 }, + { 1, char39, 4.44, 13.62 }, + { 1, char40, 21.8657, 47.1733 }, + { 1, char41, 24.3276, 47.5333 }, + { 3, char42, 30.7695, 59.439 }, + { 2, char43, 48.8371, 97.2543 }, + { 1, char44, 13.5219, 26.0638 }, + { 1, char45, 50.2371, 100.754 }, + { 1, char46, 13.1019, 26.4838 }, + { 1, char47, 40.5733, 82.1067 }, + { 1, char48, 38.3133, 77.0667 }, + { 1, char49, 30.8676, 66.5295 }, + { 1, char50, 38.7533, 77.6467 }, + { 1, char51, 38.3333, 77.0467 }, + { 2, char52, 37.2133, 80.1686 }, + { 1, char53, 38.1933, 77.6867 }, + { 1, char54, 34.1514, 73.8048 }, + { 2, char55, 38.8933, 77.2267 }, + { 1, char56, 38.9333, 77.6667 }, + { 1, char57, 39.9333, 74.0648 }, + { 2, char58, 14.0819, 26.2238 }, + { 2, char59, 12.9619, 26.3038 }, + { 1, char60, 41.1552, 81.6105 }, + { 2, char61, 48.5571, 97.2543 }, + { 1, char62, 40.8752, 81.6105 }, + { 2, char63, 36.9914, 73.9029 }, + { 2, char64, 34.9314, 74.3648 }, + { 3, char65, 40.5952, 80.4905 }, + { 3, char66, 44.7533, 83.6267 }, + { 1, char67, 39.9933, 84.4886 }, + { 2, char68, 45.2933, 85.2867 }, + { 4, char69, 39.9914, 78.1848 }, + { 3, char70, 39.9914, 78.7448 }, + { 2, char71, 40.3933, 89.7686 }, + { 3, char72, 44.7533, 89.0867 }, + { 1, char73, 10.86, 21.3 }, + { 1, char74, 31.0714, 59.999 }, + { 3, char75, 44.6133, 79.3267 }, + { 2, char76, 40.2514, 71.3229 }, + { 4, char77, 48.9552, 97.2105 }, + { 3, char78, 44.4733, 88.8067 }, + { 1, char79, 44.3352, 88.8305 }, + { 2, char80, 45.4333, 85.6667 }, + { 2, char81, 43.3952, 88.0905 }, + { 3, char82, 45.0133, 82.3667 }, + { 1, char83, 41.3333, 80.8267 }, + { 2, char84, 35.6933, 71.9467 }, + { 1, char85, 44.8733, 89.4867 }, + { 2, char86, 40.4552, 81.6105 }, + { 4, char87, 49.839, 100.518 }, + { 2, char88, 35.8333, 72.3667 }, + { 2, char89, 39.6152, 79.6505 }, + { 3, char90, 35.8333, 73.7467 }, + { 4, char91, 22.0657, 46.1133 }, + { 1, char92, 39.1733, 78.2067 }, + { 4, char93, 23.4876, 46.3933 }, + { 2, char94, 44.0752, 90.2305 }, + { 1, char95, 51.281, 104.062 }, + { 2, char96, 42.5457, 83.5714 }, + { 2, char97, 35.2514, 66.6029 }, + { 2, char98, 37.3314, 70.4629 }, + { 1, char99, 34.0914, 68.9229 }, + { 2, char100, 33.2114, 70.2629 }, + { 1, char101, 34.2914, 68.5229 }, + { 2, char102, 14.9657, 38.6552 }, + { 2, char103, 33.9314, 70.9829 }, + { 2, char104, 33.4095, 71.021 }, + { 2, char105, 14.7819, 28.8638 }, + { 2, char106, 17.3876, 36.2314 }, + { 3, char107, 33.4095, 62.521 }, + { 1, char108, 10.02, 19.34 }, + { 3, char109, 61.981, 123.962 }, + { 2, char110, 32.9895, 70.881 }, + { 1, char111, 33.5514, 71.7448 }, + { 2, char112, 38.0314, 70.8029 }, + { 2, char113, 33.4114, 70.7429 }, + { 2, char114, 23.7457, 49.4952 }, + { 1, char115, 28.5095, 62.321 }, + { 2, char116, 14.8257, 39.3152 }, + { 2, char117, 33.2695, 71.161 }, + { 2, char118, 30.3714, 60.6029 }, + { 4, char119, 40.5952, 80.4905 }, + { 2, char120, 25.4695, 56.401 }, + { 2, char121, 35.1333, 66.0648 }, + { 3, char122, 28.2495, 61.821 }, + { 3, char123, 21.6657, 41.6295 }, + { 1, char124, 11.54, 23.78 }, + { 3, char125, 18.7038, 41.4695 }, + { 2, char126, 45.7771, 91.2743 }, + { 2, char127, 33.3333, 66.6667 }, +}; + +static +StrokeFontRec glutStrokeRoman = { "Roman", 128, chars, 119.048, -33.3333 }; + diff --git a/hacks/glx/glut_stroke.c b/hacks/glx/glut_stroke.c new file mode 100644 index 0000000..59850ea --- /dev/null +++ b/hacks/glx/glut_stroke.c @@ -0,0 +1,66 @@ + +/* Copyright (c) Mark J. Kilgard, 1994. */ + +/* This program is freely distributable without licensing fees + and is provided without guarantee or warrantee expressed or + implied. This program is -not- in the public domain. */ + +#if 0 /* for Mesa */ +# include "glutint.h" +#else /* for xscreensaver */ + +# ifdef HAVE_CONFIG_H +# include "config.h" +# endif + +# ifdef HAVE_COCOA +# include "jwxyz.h" +# elif defined(HAVE_ANDROID) +# include "jwxyz.h" +# include +# else /* real X11 */ +# include +# endif + +# ifdef HAVE_JWZGLES +# include "jwzgles.h" +# endif /* HAVE_JWZGLES */ + +# undef APIENTRY +# define APIENTRY /**/ +#endif + +#include "glutstroke.h" + +void APIENTRY +glutStrokeCharacter(GLUTstrokeFont font, int c) +{ + const StrokeCharRec *ch; + const StrokeRec *stroke; + const CoordRec *coord; + StrokeFontPtr fontinfo; + int i, j; + + +#if defined(_WIN32) + fontinfo = (StrokeFontPtr) __glutFont(font); +#else + fontinfo = (StrokeFontPtr) font; +#endif + + if (c < 0 || c >= fontinfo->num_chars) + return; + ch = &(fontinfo->ch[c]); + if (ch) { + for (i = ch->num_strokes, stroke = ch->stroke; + i > 0; i--, stroke++) { + glBegin(GL_LINE_STRIP); + for (j = stroke->num_coords, coord = stroke->coord; + j > 0; j--, coord++) { + glVertex2f(coord->x, coord->y); + } + glEnd(); + } + glTranslatef(ch->right, 0.0, 0.0); + } +} diff --git a/hacks/glx/glut_swidth.c b/hacks/glx/glut_swidth.c new file mode 100644 index 0000000..b165a0a --- /dev/null +++ b/hacks/glx/glut_swidth.c @@ -0,0 +1,77 @@ + +/* Copyright (c) Mark J. Kilgard, 1995. */ + +/* This program is freely distributable without licensing fees + and is provided without guarantee or warrantee expressed or + implied. This program is -not- in the public domain. */ + +#if 0 /* for Mesa */ +# include "glutint.h" +#else /* for xscreensaver */ +# ifdef HAVE_CONFIG_H +# include "config.h" +# endif +# ifndef HAVE_JWXYZ +# include +# endif +#ifdef HAVE_ANDROID +#include +#define Bool int +#endif +# ifdef HAVE_JWZGLES +# include "jwzgles.h" +# endif /* HAVE_JWZGLES */ +# undef APIENTRY +# define APIENTRY /**/ +#endif + +#include "glutstroke.h" + +/* CENTRY */ +int APIENTRY +glutStrokeWidth(GLUTstrokeFont font, int c) +{ + StrokeFontPtr fontinfo; + const StrokeCharRec *ch; + +#if defined(_WIN32) + fontinfo = (StrokeFontPtr) __glutFont(font); +#else + fontinfo = (StrokeFontPtr) font; +#endif + + if (c < 0 || c >= fontinfo->num_chars) + return 0; + ch = &(fontinfo->ch[c]); + if (ch) + return ch->right; + else + return 0; +} + +int APIENTRY +glutStrokeLength(GLUTstrokeFont font, const unsigned char *string) +{ + int c, length; + StrokeFontPtr fontinfo; + const StrokeCharRec *ch; + +#if defined(_WIN32) + fontinfo = (StrokeFontPtr) __glutFont(font); +#else + fontinfo = (StrokeFontPtr) font; +#endif + + length = 0; + for (; *string != '\0'; string++) { + c = *string; + if (c >= 0 && c < fontinfo->num_chars) { + ch = &(fontinfo->ch[c]); + if (ch) + length += ch->right; + } + } + return length; +} + +/* ENDCENTRY */ diff --git a/hacks/glx/glutstroke.h b/hacks/glx/glutstroke.h new file mode 100644 index 0000000..43a645b --- /dev/null +++ b/hacks/glx/glutstroke.h @@ -0,0 +1,47 @@ +#ifndef __glutstroke_h__ +#define __glutstroke_h__ + +/* Copyright (c) Mark J. Kilgard, 1994. */ + +/* This program is freely distributable without licensing fees + and is provided without guarantee or warrantee expressed or + implied. This program is -not- in the public domain. */ + +#if defined(_WIN32) +#pragma warning (disable:4244) /* disable bogus conversion warnings */ +#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ +#endif + +typedef struct { + float x; + float y; +} CoordRec, *CoordPtr; + +typedef struct { + int num_coords; + const CoordRec *coord; +} StrokeRec, *StrokePtr; + +typedef struct { + int num_strokes; + const StrokeRec *stroke; + float center; + float right; +} StrokeCharRec, *StrokeCharPtr; + +typedef struct { + const char *name; + int num_chars; + const StrokeCharRec *ch; + float top; + float bottom; +} StrokeFontRec, *StrokeFontPtr; + +typedef void *GLUTstrokeFont; + +/* for xscreensaver */ +extern void glutStrokeCharacter (GLUTstrokeFont font, int c); +extern int glutStrokeWidth (GLUTstrokeFont font, int c); +extern int glutStrokeLength (GLUTstrokeFont font, const unsigned char *string); + +#endif /* __glutstroke_h__ */ diff --git a/hacks/glx/grab-ximage.c b/hacks/glx/grab-ximage.c new file mode 100644 index 0000000..0f71847 --- /dev/null +++ b/hacks/glx/grab-ximage.c @@ -0,0 +1,813 @@ +/* grab-ximage.c --- grab the screen to an XImage for use with OpenGL. + * xscreensaver, Copyright (c) 2001-2008 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +#ifdef HAVE_ANDROID +#include +#endif + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +# ifndef HAVE_JWZGLES +# include +# endif +#else +# include +# include +# include /* only for GLfloat */ +# include /* for gluBuild2DMipmaps */ +# include /* for glXMakeCurrent() */ +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "grab-ximage.h" +#include "grabscreen.h" +#include "pow2.h" +#include "visual.h" + +/* If REFORMAT_IMAGE_DATA is defined, then we convert Pixmaps to textures + like this: + + - get Pixmap as an XImage in whatever form the server hands us; + - convert that XImage to 32-bit RGBA in client-local endianness; + - make the texture using RGBA, UNSIGNED_BYTE. + + If undefined, we do this: + + - get Pixmap as an XImage in whatever form the server hands us; + - figure out what OpenGL texture packing parameters correspond to + the image data that the server sent us and use that, e.g., + BGRA, INT_8_8_8_8_REV. + + You might expect the second method to be faster, since we're not making + a second copy of the data and iterating each pixel before we hand it + to GL. But, you'd be wrong. The first method is almost 6x faster. + I guess GL is reformatting it *again*, and doing it very inefficiently! +*/ +#define REFORMAT_IMAGE_DATA + + +#include "xshm.h" + +extern char *progname; + +#include + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +#endif + +#undef MAX +#define MAX(a,b) ((a)>(b)?(a):(b)) + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + + +static int debug_p = 0; + +static Bool +bigendian (void) +{ + union { int i; char c[sizeof(int)]; } u; + u.i = 1; + return !u.c[0]; +} + + +#ifdef REFORMAT_IMAGE_DATA + +/* Given a bitmask, returns the position and width of the field. + */ +static void +decode_mask (unsigned long mask, unsigned long *pos_ret, + unsigned long *size_ret) +{ + int i; + for (i = 0; i < 32; i++) + if (mask & (1L << i)) + { + int j = 0; + *pos_ret = i; + for (; i < 32; i++, j++) + if (! (mask & (1L << i))) + break; + *size_ret = j; + return; + } +} + + +/* Given a value and a field-width, expands the field to fill out 8 bits. + */ +static unsigned char +spread_bits (unsigned char value, unsigned char width) +{ + switch (width) + { + case 8: return value; + case 7: return (value << 1) | (value >> 6); + case 6: return (value << 2) | (value >> 4); + case 5: return (value << 3) | (value >> 2); + case 4: return (value << 4) | (value); + case 3: return (value << 5) | (value << 2) | (value >> 2); + case 2: return (value << 6) | (value << 4) | (value); + default: abort(); break; + } +} + + +static XImage * +convert_ximage_to_rgba32 (Screen *screen, XImage *image) +{ + Display *dpy = DisplayOfScreen (screen); + Visual *visual = DefaultVisualOfScreen (screen); + + int x, y; + unsigned long crpos=0, cgpos=0, cbpos=0, capos=0; /* bitfield positions */ + unsigned long srpos=0, sgpos=0, sbpos=0; + unsigned long srmsk=0, sgmsk=0, sbmsk=0; + unsigned long srsiz=0, sgsiz=0, sbsiz=0; + XColor *colors = 0; + unsigned char spread_map[3][256]; + + /* Note: height+2 in "to" to work around an array bounds overrun + in gluBuild2DMipmaps / gluScaleImage. + */ + XImage *from = image; + XImage *to = XCreateImage (dpy, visual, 32, /* depth */ + ZPixmap, 0, 0, from->width, from->height, + 32, /* bitmap pad */ + 0); + to->data = (char *) calloc (to->height + 2, to->bytes_per_line); + + /* Set the bit order in the XImage structure to whatever the + local host's native bit order is. + */ + to->bitmap_bit_order = + to->byte_order = + (bigendian() ? MSBFirst : LSBFirst); + + if (visual_class (screen, visual) == PseudoColor || + visual_class (screen, visual) == GrayScale) + { + Colormap cmap = DefaultColormapOfScreen (screen); + int ncolors = visual_cells (screen, visual); + int i; + colors = (XColor *) calloc (sizeof (*colors), ncolors+1); + for (i = 0; i < ncolors; i++) + colors[i].pixel = i; + XQueryColors (dpy, cmap, colors, ncolors); + } + + if (colors == 0) /* truecolor */ + { + srmsk = to->red_mask; + sgmsk = to->green_mask; + sbmsk = to->blue_mask; + + decode_mask (srmsk, &srpos, &srsiz); + decode_mask (sgmsk, &sgpos, &sgsiz); + decode_mask (sbmsk, &sbpos, &sbsiz); + } + + /* Pack things in "RGBA" order in client endianness. */ + if (bigendian()) + crpos = 24, cgpos = 16, cbpos = 8, capos = 0; + else + crpos = 0, cgpos = 8, cbpos = 16, capos = 24; + + if (colors == 0) /* truecolor */ + { + int i; + for (i = 0; i < 256; i++) + { + spread_map[0][i] = spread_bits (i, srsiz); + spread_map[1][i] = spread_bits (i, sgsiz); + spread_map[2][i] = spread_bits (i, sbsiz); + } + } + + /* trying to track down an intermittent crash in ximage_putpixel_32 */ + if (to->width < from->width) abort(); + if (to->height < from->height) abort(); + + for (y = 0; y < from->height; y++) + for (x = 0; x < from->width; x++) + { + unsigned long sp = XGetPixel (from, x, y); + unsigned char sr, sg, sb; + unsigned long cp; + + if (colors) + { + sr = colors[sp].red & 0xFF; + sg = colors[sp].green & 0xFF; + sb = colors[sp].blue & 0xFF; + } + else + { + sr = (sp & srmsk) >> srpos; + sg = (sp & sgmsk) >> sgpos; + sb = (sp & sbmsk) >> sbpos; + + sr = spread_map[0][sr]; + sg = spread_map[1][sg]; + sb = spread_map[2][sb]; + } + + cp = ((sr << crpos) | + (sg << cgpos) | + (sb << cbpos) | + (0xFF << capos)); + + XPutPixel (to, x, y, cp); + } + + if (colors) free (colors); + + return to; +} + +#endif /* REFORMAT_IMAGE_DATA */ + +/* Shrinks the XImage by a factor of two. + We use this when mipmapping fails on large textures. + */ +static void +halve_image (XImage *ximage, XRectangle *geom) +{ + int w2 = ximage->width/2; + int h2 = ximage->height/2; + int x, y; + XImage *ximage2; + + if (w2 <= 32 || h2 <= 32) /* let's not go crazy here, man. */ + return; + + if (debug_p) + fprintf (stderr, "%s: shrinking image %dx%d -> %dx%d\n", + progname, ximage->width, ximage->height, w2, h2); + + ximage2 = (XImage *) calloc (1, sizeof (*ximage2)); + *ximage2 = *ximage; + ximage2->width = w2; + ximage2->height = h2; + ximage2->bytes_per_line = 0; + ximage2->data = 0; + XInitImage (ximage2); + + ximage2->data = (char *) calloc (h2, ximage2->bytes_per_line); + if (!ximage2->data) + { + fprintf (stderr, "%s: out of memory (scaling %dx%d image to %dx%d)\n", + progname, ximage->width, ximage->height, w2, h2); + exit (1); + } + + for (y = 0; y < h2; y++) + for (x = 0; x < w2; x++) + XPutPixel (ximage2, x, y, XGetPixel (ximage, x*2, y*2)); + + free (ximage->data); + *ximage = *ximage2; + ximage2->data = 0; + XFree (ximage2); + + if (geom) + { + geom->x /= 2; + geom->y /= 2; + geom->width /= 2; + geom->height /= 2; + } +} + + +#ifdef REFORMAT_IMAGE_DATA + +/* Pulls the Pixmap bits from the server and returns an XImage + in some format acceptable to OpenGL. + */ +static XImage * +pixmap_to_gl_ximage (Screen *screen, Window window, Pixmap pixmap) +{ + Display *dpy = DisplayOfScreen (screen); + Visual *visual = DefaultVisualOfScreen (screen); + unsigned int width, height, depth; + + XShmSegmentInfo shm_info; + + XImage *server_ximage = 0; + XImage *client_ximage = 0; + + { + Window root; + int x, y; + unsigned int bw; + XGetGeometry (dpy, pixmap, &root, &x, &y, &width, &height, &bw, &depth); + } + + if (width < 5 || height < 5) /* something's gone wrong somewhere... */ + return 0; + + /* Convert the server-side Pixmap to a client-side GL-ordered XImage. + */ + server_ximage = create_xshm_image (dpy, visual, depth, ZPixmap, &shm_info, + width, height); + get_xshm_image (dpy, pixmap, server_ximage, 0, 0, ~0L, &shm_info); + + client_ximage = convert_ximage_to_rgba32 (screen, server_ximage); + + destroy_xshm_image (dpy, server_ximage, &shm_info); + + return client_ximage; +} + + +# else /* ! REFORMAT_IMAGE_DATA */ + +typedef struct { + unsigned int depth, red_mask, green_mask, blue_mask; /* when this... */ + GLint type, format; /* ...use this. */ +} conversion_table; + +/* Abbreviate these so that the table entries all fit on one line... + */ +#define BYTE GL_UNSIGNED_BYTE +#define BYTE_2_3_3_REV GL_UNSIGNED_BYTE_2_3_3_REV +#define BYTE_3_3_2 GL_UNSIGNED_BYTE_3_3_2 +#define INT_10_10_10_2 GL_UNSIGNED_INT_10_10_10_2 +#define INT_2_10_10_10_REV GL_UNSIGNED_INT_2_10_10_10_REV +#define INT_8_8_8_8 GL_UNSIGNED_INT_8_8_8_8 +#define INT_8_8_8_8_REV GL_UNSIGNED_INT_8_8_8_8_REV +#define SHORT_1_5_5_5_REV GL_UNSIGNED_SHORT_1_5_5_5_REV +#define SHORT_4_4_4_4 GL_UNSIGNED_SHORT_4_4_4_4 +#define SHORT_4_4_4_4_REV GL_UNSIGNED_SHORT_4_4_4_4_REV +#define SHORT_5_5_5_1 GL_UNSIGNED_SHORT_5_5_5_1 +#define SHORT_5_6_5 GL_UNSIGNED_SHORT_5_6_5 +#define SHORT_5_6_5_REV GL_UNSIGNED_SHORT_5_6_5_REV + +static const conversion_table ctable[] = { + { 8, 0x000000E0, 0x0000001C, 0x00000003, BYTE_3_3_2, GL_RGB }, + { 8, 0x00000007, 0x00000038, 0x000000C0, BYTE_2_3_3_REV, GL_RGB }, + { 16, 0x0000F800, 0x000007E0, 0x0000001F, SHORT_5_6_5, GL_RGB }, + { 16, 0x0000001F, 0x000007E0, 0x0000F800, SHORT_5_6_5_REV, GL_RGB }, + { 16, 0x0000F000, 0x00000F00, 0x000000F0, SHORT_4_4_4_4, GL_RGBA }, + { 16, 0x000000F0, 0x00000F00, 0x0000F000, SHORT_4_4_4_4, GL_BGRA }, + { 16, 0x0000000F, 0x000000F0, 0x00000F00, SHORT_4_4_4_4, GL_ABGR_EXT }, + { 16, 0x0000000F, 0x000000F0, 0x00000F00, SHORT_4_4_4_4_REV, GL_RGBA }, + { 16, 0x00000F00, 0x000000F0, 0x0000000F, SHORT_4_4_4_4_REV, GL_BGRA }, + { 16, 0x0000F800, 0x000007C0, 0x0000003E, SHORT_5_5_5_1, GL_RGBA }, + { 16, 0x0000003E, 0x000007C0, 0x0000F800, SHORT_5_5_5_1, GL_BGRA }, + { 16, 0x00000001, 0x0000003E, 0x000007C0, SHORT_5_5_5_1, GL_ABGR_EXT }, + { 16, 0x0000001F, 0x000003E0, 0x00007C00, SHORT_1_5_5_5_REV, GL_RGBA }, + { 16, 0x00007C00, 0x000003E0, 0x0000001F, SHORT_1_5_5_5_REV, GL_BGRA }, + { 32, 0xFF000000, 0x00FF0000, 0x0000FF00, INT_8_8_8_8, GL_RGBA }, + { 32, 0x0000FF00, 0x00FF0000, 0xFF000000, INT_8_8_8_8, GL_BGRA }, + { 32, 0x000000FF, 0x0000FF00, 0x00FF0000, INT_8_8_8_8, GL_ABGR_EXT }, + { 32, 0x000000FF, 0x0000FF00, 0x00FF0000, INT_8_8_8_8_REV, GL_RGBA }, + { 32, 0x00FF0000, 0x0000FF00, 0x000000FF, INT_8_8_8_8_REV, GL_BGRA }, + { 32, 0xFFC00000, 0x003FF000, 0x00000FFC, INT_10_10_10_2, GL_RGBA }, + { 32, 0x00000FFC, 0x003FF000, 0xFFC00000, INT_10_10_10_2, GL_BGRA }, + { 32, 0x00000003, 0x00000FFC, 0x003FF000, INT_10_10_10_2, GL_ABGR_EXT }, + { 32, 0x000003FF, 0x000FFC00, 0x3FF00000, INT_2_10_10_10_REV, GL_RGBA }, + { 32, 0x3FF00000, 0x000FFC00, 0x000003FF, INT_2_10_10_10_REV, GL_BGRA }, + { 24, 0x000000FF, 0x0000FF00, 0x00FF0000, BYTE, GL_RGB }, + { 24, 0x00FF0000, 0x0000FF00, 0x000000FF, BYTE, GL_BGR }, +}; + + +/* Given an XImage, returns the GL settings to use its data as a texture. + */ +static void +gl_settings_for_ximage (XImage *image, + GLint *type_ret, GLint *format_ret, GLint *swap_ret) +{ + int i; + for (i = 0; i < countof(ctable); ++i) + { + if (image->bits_per_pixel == ctable[i].depth && + image->red_mask == ctable[i].red_mask && + image->green_mask == ctable[i].green_mask && + image->blue_mask == ctable[i].blue_mask) + { + *type_ret = ctable[i].type; + *format_ret = ctable[i].format; + + if (image->bits_per_pixel == 24) + { + /* don't know how to test this... */ + *type_ret = (ctable[i].type == GL_RGB) ? GL_BGR : GL_RGB; + *swap_ret = 0; + } + else + { + *swap_ret = !!(image->byte_order == MSBFirst) ^ !!bigendian(); + } + + if (debug_p) + { + fprintf (stderr, "%s: using %s %s %d for %d %08lX %08lX %08lX\n", + progname, + (*format_ret == GL_RGB ? "RGB" : + *format_ret == GL_BGR ? "BGR" : + *format_ret == GL_RGBA ? "RGBA" : + *format_ret == GL_BGRA ? "BGRA" : + *format_ret == GL_ABGR_EXT ? "ABGR_EXT" : + "???"), + (*type_ret == BYTE ? "BYTE" : + *type_ret == BYTE_3_3_2 ? "BYTE_3_3_2" : + *type_ret == BYTE_2_3_3_REV ? "BYTE_2_3_3_REV" : + *type_ret == INT_8_8_8_8 ? "INT_8_8_8_8" : + *type_ret == INT_8_8_8_8_REV ? "INT_8_8_8_8_REV" : + *type_ret == INT_10_10_10_2 ? "INT_10_10_10_2" : + *type_ret == INT_2_10_10_10_REV ? "INT_2_10_10_10_REV": + *type_ret == SHORT_4_4_4_4 ? "SHORT_4_4_4_4" : + *type_ret == SHORT_4_4_4_4_REV ? "SHORT_4_4_4_4_REV" : + *type_ret == SHORT_5_5_5_1 ? "SHORT_5_5_5_1" : + *type_ret == SHORT_1_5_5_5_REV ? "SHORT_1_5_5_5_REV" : + *type_ret == SHORT_5_6_5 ? "SHORT_5_6_5" : + *type_ret == SHORT_5_6_5_REV ? "SHORT_5_6_5_REV" : + "???"), + *swap_ret, + image->bits_per_pixel, + image->red_mask, image->green_mask, image->blue_mask); + } + + return; + } + } + + /* Unknown RGB fields? */ + abort(); +} + +#endif /* ! REFORMAT_IMAGE_DATA */ + +typedef struct { + GLXContext glx_context; + Pixmap pixmap; + int pix_width, pix_height, pix_depth; + int texid; + Bool mipmap_p; + double load_time; + + /* Used in async mode + */ + void (*callback) (const char *filename, XRectangle *geometry, + int iw, int ih, int tw, int th, + void *closure); + void *closure; + + /* Used in sync mode + */ + char **filename_return; + XRectangle *geometry_return; + int *image_width_return; + int *image_height_return; + int *texture_width_return; + int *texture_height_return; + +} img_closure; + + +/* Returns the current time in seconds as a double. + */ +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + + +/* Loads the given XImage into GL's texture memory. + The image may be of any size. + If mipmap_p is true, then make mipmaps instead of just a single texture. + Writes to stderr and returns False on error. + */ +static Bool +ximage_to_texture (XImage *ximage, + GLint type, GLint format, + int *width_return, + int *height_return, + XRectangle *geometry, + Bool mipmap_p) +{ + int max_reduction = 7; + int err_count = 0; + GLenum err = 0; + int orig_width = ximage->width; + int orig_height = ximage->height; + GLsizei tex_width = 0; + GLsizei tex_height = 0; + + AGAIN: + + if (mipmap_p) + { + /* gluBuild2DMipmaps doesn't require textures to be a power of 2. */ + tex_width = ximage->width; + tex_height = ximage->height; + + if (debug_p) + fprintf (stderr, "%s: mipmap %d x %d\n", + progname, ximage->width, ximage->height); + + gluBuild2DMipmaps (GL_TEXTURE_2D, 3, ximage->width, ximage->height, + format, type, ximage->data); + err = glGetError(); + } + else + { + /* glTexImage2D() requires the texture sizes to be powers of 2. + So first, create a texture of that size (but don't write any + data into it.) + */ + tex_width = (GLsizei) to_pow2 (ximage->width); + tex_height = (GLsizei) to_pow2 (ximage->height); + + if (debug_p) + fprintf (stderr, "%s: texture %d x %d (%d x %d)\n", + progname, ximage->width, ximage->height, + tex_width, tex_height); + + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, tex_width, tex_height, 0, + format, type, 0); + err = glGetError(); + + /* Now load our non-power-of-2 image data into the existing texture. */ + if (!err) + { + glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, + ximage->width, ximage->height, + GL_RGBA, GL_UNSIGNED_BYTE, ximage->data); + err = glGetError(); + } + } + + if (err) + { + char buf[100]; + const char *s = (char *) gluErrorString (err); + + if (!s || !*s) + { + sprintf (buf, "unknown error %d", (int) err); + s = buf; + } + + while (glGetError() != GL_NO_ERROR) + ; /* clear any lingering errors */ + + if (++err_count > max_reduction) + { + fprintf (stderr, + "\n" + "%s: %dx%d texture failed, even after reducing to %dx%d:\n" + "%s: The error was: \"%s\".\n" + "%s: probably this means " + "\"your video card is worthless and weak\"?\n\n", + progname, orig_width, orig_height, + ximage->width, ximage->height, + progname, s, + progname); + return False; + } + else + { + if (debug_p) + fprintf (stderr, "%s: mipmap error (%dx%d): %s\n", + progname, ximage->width, ximage->height, s); + halve_image (ximage, geometry); + goto AGAIN; + } + } + + if (width_return) *width_return = tex_width; + if (height_return) *height_return = tex_height; + return True; +} + + +static void load_texture_async_cb (Screen *screen, + Window window, Drawable drawable, + const char *name, XRectangle *geometry, + void *closure); + + +/* Grabs an image of the desktop (or another random image file) and + loads the image into GL's texture memory. + When the callback is called, the image data will have been loaded + into texture number `texid' (via glBindTexture.) + + If an error occurred, width/height will be 0. + */ +void +load_texture_async (Screen *screen, Window window, + GLXContext glx_context, + int desired_width, int desired_height, + Bool mipmap_p, + GLuint texid, + void (*callback) (const char *filename, + XRectangle *geometry, + int image_width, + int image_height, + int texture_width, + int texture_height, + void *closure), + void *closure) +{ + Display *dpy = DisplayOfScreen (screen); + XWindowAttributes xgwa; + img_closure *data = (img_closure *) calloc (1, sizeof(*data)); + + if (debug_p) + data->load_time = double_time(); + + data->texid = texid; + data->mipmap_p = mipmap_p; + data->glx_context = glx_context; + data->callback = callback; + data->closure = closure; + + XGetWindowAttributes (dpy, window, &xgwa); + data->pix_width = xgwa.width; + data->pix_height = xgwa.height; + data->pix_depth = xgwa.depth; + + /* Allow the pixmap to be larger than the window. Esper wants this. */ + if (desired_width /* && desired_width < xgwa.width */) + data->pix_width = desired_width; + if (desired_height /* && desired_height < xgwa.height */) + data->pix_height = desired_height; + + data->pixmap = XCreatePixmap (dpy, window, data->pix_width, data->pix_height, + data->pix_depth); + load_image_async (screen, window, data->pixmap, + load_texture_async_cb, data); +} + + +/* Once we have an XImage, this loads it into GL. + This is used in both synchronous and asynchronous mode. + */ +static void +load_texture_async_cb (Screen *screen, Window window, Drawable drawable, + const char *name, XRectangle *geometry, void *closure) +{ + Display *dpy = DisplayOfScreen (screen); + Bool ok; + XImage *ximage; + GLint type, format; + int iw=0, ih=0, tw=0, th=0; + double cvt_time=0, tex_time=0, done_time=0; + img_closure *data = (img_closure *) closure; + /* copy closure data to stack and free the original before running cb */ + img_closure dd = *data; + memset (data, 0, sizeof (*data)); + free (data); + data = 0; + + if (dd.glx_context) + glXMakeCurrent (dpy, window, dd.glx_context); + + if (geometry->width <= 0 || geometry->height <= 0) + { + /* This can happen if an old version of xscreensaver-getimage + is installed. Or if we have no image (checkerboard). */ + geometry->x = 0; + geometry->y = 0; + geometry->width = dd.pix_width; + geometry->height = dd.pix_height; + } + + if (geometry->width <= 0 || geometry->height <= 0) + abort(); + + if (debug_p) + cvt_time = double_time(); + +# ifdef REFORMAT_IMAGE_DATA + ximage = pixmap_to_gl_ximage (screen, window, dd.pixmap); + format = GL_RGBA; + type = GL_UNSIGNED_BYTE; + +#else /* ! REFORMAT_IMAGE_DATA */ + { + Visual *visual = DefaultVisualOfScreen (screen); + GLint swap; + + ximage = XCreateImage (dpy, visual, dd.pix_depth, ZPixmap, 0, 0, + dd.pix_width, dd.pix_height, 32, 0); + + /* Note: height+2 in "to" to be to work around an array bounds overrun + in gluBuild2DMipmaps / gluScaleImage. */ + ximage->data = (char *) calloc (ximage->height+2, ximage->bytes_per_line); + + if (!ximage->data || + !XGetSubImage (dpy, dd.pixmap, 0, 0, ximage->width, ximage->height, + ~0L, ximage->format, ximage, 0, 0)) + { + XDestroyImage (ximage); + ximage = 0; + } + + gl_settings_for_ximage (ximage, &type, &format, &swap); + glPixelStorei (GL_UNPACK_SWAP_BYTES, !swap); + } +#endif /* REFORMAT_IMAGE_DATA */ + + XFreePixmap (dpy, dd.pixmap); + dd.pixmap = 0; + + if (debug_p) + tex_time = double_time(); + + if (! ximage) + ok = False; + else + { + iw = ximage->width; + ih = ximage->height; + if (dd.texid != -1) + glBindTexture (GL_TEXTURE_2D, dd.texid); + + glPixelStorei (GL_UNPACK_ALIGNMENT, ximage->bitmap_pad / 8); + ok = ximage_to_texture (ximage, type, format, &tw, &th, geometry, + dd.mipmap_p); + if (ok) + { + iw = ximage->width; /* in case the image was shrunk */ + ih = ximage->height; + } + } + + if (ximage) XDestroyImage (ximage); + + if (! ok) + iw = ih = tw = th = 0; + + if (debug_p) + done_time = double_time(); + + if (debug_p) + fprintf (stderr, + /* prints: A + B + C = D + A = file I/O time (happens in background) + B = time to pull bits from server (this process) + C = time to convert bits to GL textures (this process) + D = total elapsed time from "want image" to "see image" + + B+C is responsible for any frame-rate glitches. + */ + "%s: loading elapsed: %.2f + %.2f + %.2f = %.2f sec\n", + progname, + cvt_time - dd.load_time, + tex_time - cvt_time, + done_time - tex_time, + done_time - dd.load_time); + + if (dd.callback) + /* asynchronous mode */ + dd.callback (name, geometry, iw, ih, tw, th, dd.closure); + else + { + /* synchronous mode */ + if (dd.filename_return) *dd.filename_return = (char *) name; + if (dd.geometry_return) *dd.geometry_return = *geometry; + if (dd.image_width_return) *dd.image_width_return = iw; + if (dd.image_height_return) *dd.image_height_return = ih; + if (dd.texture_width_return) *dd.texture_width_return = tw; + if (dd.texture_height_return) *dd.texture_height_return = th; + } +} diff --git a/hacks/glx/grab-ximage.h b/hacks/glx/grab-ximage.h new file mode 100644 index 0000000..2fd589f --- /dev/null +++ b/hacks/glx/grab-ximage.h @@ -0,0 +1,76 @@ +/* grab-ximage.c --- grab the screen to an XImage for use with OpenGL. + * xscreensaver, Copyright (c) 2001-2006 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __GRAB_XIMAGE_H__ +#define __GRAB_XIMAGE_H__ + +/* Grabs an image of the desktop (or another random image file) and + loads the image into GL's texture memory. Most of the work is done + in the background; when the image has been loaded, a callback is run. + + As a side-effect, that image *may* be painted onto the given Window. + + If mipmap_p is true, then make mipmaps instead of just a single texture. + + If desired_width/height are non-zero, then (if possible) the image + will be scaled to fit in that rectangle. If they are 0, then the size + of the window is used. These parameters are so that you can hint to + the image loader that smaller images are acceptable (if you will never + be displaying the texture at 100% magnification, you can get away with + smaller textures.) + + Returns the sizes of various things: + + texture_width/height: The size of the texture itself, in pixels. + This will often be larger than the grabbed + image, since OpenGL sometimes requires texture + dimensions to be a power of 2. + + image_width/height: The size of the image: this will usually be the + same as the desired_width/height you passed in + (but may be the size of the Window instead.) + + geometry: The position in the texture of the image bits. + When image files are loaded, they are scaled up + to the size of the window, but if the image does + not have the same aspect ratio as the window, + there will be black bars on the top/bottom or + left/right. This geometry specification tells + you where the "real" image bits are. + + So, don't use texture coordinates from 0.0 to 1.0. Instead use: + + [0.0 - iw/tw] If you want to display a quad that is the same + [0.0 - ih/th] size as the window; or + + [gx/tw - (gx+gw)/tw] If you want to display a quad that is the same + [gy/th - (gy+gh)/th] size as the loaded image file. + + When the callback is called, the image data will have been loaded + into texture number `texid' (via glBindTexture.) + + If an error occurred, width/height will be 0. + */ +void load_texture_async (Screen *, Window, GLXContext, + int desired_width, int desired_height, + Bool mipmap_p, + GLuint texid, + void (*callback) (const char *filename, + XRectangle *geometry, + int image_width, + int image_height, + int texture_width, + int texture_height, + void *closure), + void *closure); + +#endif /* __GRAB_XIMAGE_H__ */ diff --git a/hacks/glx/hexstrut.c b/hacks/glx/hexstrut.c new file mode 100644 index 0000000..a547a76 --- /dev/null +++ b/hacks/glx/hexstrut.c @@ -0,0 +1,509 @@ +/* hexstrut, Copyright (c) 2016-2017 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*count: 20 \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_hexstrut 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_THICKNESS "0.2" + +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +typedef struct { double a, o; } LL; /* latitude + longitude */ + +typedef struct triangle triangle; +struct triangle { + XYZ p[3]; + triangle *next; + triangle *neighbors[6]; + GLfloat orot, rot; + int delay, odelay; + int ccolor; +}; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int count; + triangle *triangles; + + int ncolors; + XColor *colors; + +} hexstrut_configuration; + +static hexstrut_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; +static GLfloat thickness; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt hexstrut_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + +/* Add t1 to the neighbor list of t0. */ +static void +link_neighbor (triangle *t0, triangle *t1) +{ + int k; + if (t0 == t1) + return; + for (k = 0; k < countof(t0->neighbors); k++) + { + if (t0->neighbors[k] == t1 || + t0->neighbors[k] == 0) + { + t0->neighbors[k] = t1; + return; + } + } + fprintf (stderr, "too many neighbors\n"); + abort(); +} + + +static void +make_plane (ModeInfo *mi) +{ + hexstrut_configuration *bp = &bps[MI_SCREEN(mi)]; + int n = MI_COUNT(mi) * 2; + GLfloat size = 2.0 / n; + int x, y; + GLfloat w = size; + GLfloat h = size * sqrt(3) / 2; + triangle **grid = (triangle **) calloc (n * n, sizeof(*grid)); + + for (y = 0; y < n; y++) + for (x = 0; x < n; x++) + { + triangle *t; + + t = (triangle *) calloc (1, sizeof(*t)); + t->p[0].x = (x - n/2) * w; + t->p[0].y = (y - n/2) * h; + + if (y & 1) + t->p[0].x += w / 2; + + t->p[1].x = t->p[0].x - w/2; + t->p[2].x = t->p[0].x + w/2; + t->p[1].y = t->p[0].y + h; + t->p[2].y = t->p[0].y + h; + + if (x > 0) + { + triangle *t2 = grid[y * n + (x-1)]; + link_neighbor (t, t2); + link_neighbor (t2, t); + } + if (y > 0) + { + triangle *t2 = grid[(y-1) * n + x]; + link_neighbor (t, t2); + link_neighbor (t2, t); + + if (x < n-1) + { + t2 = grid[(y-1) * n + (x+1)]; + link_neighbor (t, t2); + link_neighbor (t2, t); + } + } + + t->next = bp->triangles; + bp->triangles = t; + grid[y * n + x] = t; + bp->count++; + } + + free (grid); +} + + +static void +tick_triangles (ModeInfo *mi) +{ + hexstrut_configuration *bp = &bps[MI_SCREEN(mi)]; + triangle *t; + GLfloat step = 0.01 + (0.04 * speed); + + if (! (random() % 80)) + { + int n = random() % bp->count; + int i; + for (i = 0, t = bp->triangles; t && i < n; t = t->next, i++) + ; + if (! t->rot) + { + t->rot += step * ((random() & 1) ? 1 : -1); + t->odelay = t->delay = 4; + } + } + + for (t = bp->triangles; t; t = t->next) + { + /* If this triangle is rotating, continue until done. */ + if (t->rot) + { + t->rot += step * (t->rot > 0 ? 1 : -1); + + t->ccolor++; + if (t->ccolor >= bp->ncolors) + t->ccolor = 0; + + if (t->rot > 1 || t->rot < -1) + { + t->orot += (t->rot > 1 ? 1 : -1); + t->rot = 0; + } + } + + /* If this triangle's propagation delay hasn't hit zero, decrement it. + When it does, start its neighbors rotating. + */ + if (t->delay) + { + int i; + t->delay--; + if (t->delay == 0) + for (i = 0; i < countof(t->neighbors); i++) + { + if (t->neighbors[i] && + t->neighbors[i]->rot == 0) + { + t->neighbors[i]->rot += step * (t->rot > 0 ? 1 : -1); + t->neighbors[i]->delay = + t->neighbors[i]->odelay = t->odelay; + } + } + } + } +} + + +static void +draw_triangles (ModeInfo *mi) +{ + hexstrut_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + triangle *t; + GLfloat length = sqrt(3) / 3; + GLfloat t2 = length * thickness / 2; + GLfloat scale; + + { + triangle *t = bp->triangles; + GLfloat X = t->p[0].x - t->p[1].x; + GLfloat Y = t->p[0].y - t->p[1].y; + GLfloat Z = t->p[0].z - t->p[1].z; + scale = sqrt(X*X + Y*Y + Z*Z); + } + + glFrontFace (GL_CCW); + + glBegin (wire ? GL_LINES : GL_QUADS); + + glNormal3f (0, 0, 1); + for (t = bp->triangles; t; t = t->next) + { + int i; + XYZ c; + GLfloat color[4]; + + GLfloat angle = (M_PI * 2 / 3) * t->rot; + GLfloat cr = cos(angle), sr = sin(angle); + + c.x = (t->p[0].x + t->p[1].x + t->p[2].x) / 3; + c.y = (t->p[0].y + t->p[1].y + t->p[2].y) / 3; + c.z = (t->p[0].z + t->p[1].z + t->p[2].z) / 3; + + /* Actually we don't need normals at all, since no lighting. + do_normal (t->p[0].x, t->p[0].y, t->p[0].z, + t->p[1].x, t->p[1].y, t->p[1].z, + t->p[2].x, t->p[2].y, t->p[2].z); + */ + + color[0] = bp->colors[t->ccolor].red / 65535.0; + color[1] = bp->colors[t->ccolor].green / 65535.0; + color[2] = bp->colors[t->ccolor].blue / 65535.0; + color[3] = 1; + + /* Brighter */ + color[0] = color[0] * 0.75 + 0.25; + color[1] = color[1] * 0.75 + 0.25; + color[2] = color[2] * 0.75 + 0.25; + + glColor4fv (color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + + for (i = 0; i < 3; i++) + { + /* Orient to direction of corner. */ + GLfloat x = t->p[i].x - c.x; + GLfloat y = t->p[i].y - c.y; + GLfloat z = t->p[i].z - c.z; + + GLfloat smc = sr * y - cr * x; + GLfloat spc = cr * y + sr * x; + + GLfloat st2 = t2 * scale / sqrt(x*x + y*y); + GLfloat slength = length * scale / sqrt(x*x + y*y + z*z); + + GLfloat xt2 = spc * st2; + GLfloat yt2 = smc * st2; + GLfloat xlength = c.x - slength * smc; + GLfloat ylength = c.y + slength * spc; + GLfloat zlength = c.z + slength * z; + + if (! wire) + glVertex3f (c.x - xt2, c.y - yt2, c.z); + + glVertex3f (c.x + xt2, c.y + yt2, c.z); + if (wire) + glVertex3f (xlength + xt2, ylength + yt2, zlength); + + if (! wire) + glVertex3f (xlength + xt2, ylength + yt2, zlength); + + glVertex3f (xlength - xt2, ylength - yt2, zlength); + + if (wire) + glVertex3f (c.x - xt2, c.y - yt2, c.z); + + mi->polygon_count++; + } + } + + glEnd(); +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_hexstrut (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 3) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +hexstrut_handle_event (ModeInfo *mi, XEvent *event) +{ + hexstrut_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') + { + bp->ncolors = 64; + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_hexstrut (ModeInfo *mi) +{ + hexstrut_configuration *bp; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_hexstrut (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + { + double spin_speed = 0.002; + double wander_speed = 0.003; + double spin_accel = 1.0; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False); + bp->trackball = gltrackball_init (True); + } + + + /* Let's tilt the scene a little. */ + gltrackball_reset (bp->trackball, + -0.4 + frand(0.8), + -0.4 + frand(0.8)); + + if (thickness < 0.05) thickness = 0.05; + if (thickness < 0.05) MI_IS_WIREFRAME(mi) = True; + if (thickness > 1.7) thickness = 1.7; + if (speed > 2) speed = 2; + + bp->ncolors = 64; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + + make_plane (mi); +} + + +ENTRYPOINT void +draw_hexstrut (ModeInfo *mi) +{ + hexstrut_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + + glDisable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glDisable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 6, + (y - 0.5) * 6, + (z - 0.5) * 12); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glScalef (30, 30, 30); + + if (! bp->button_down_p) + tick_triangles (mi); + draw_triangles (mi); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + + +ENTRYPOINT void +free_hexstrut (ModeInfo *mi) +{ + hexstrut_configuration *bp = &bps[MI_SCREEN(mi)]; + while (bp->triangles) + { + triangle *t = bp->triangles->next; + free (bp->triangles); + bp->triangles = t; + } +} + +XSCREENSAVER_MODULE ("Hexstrut", hexstrut) + +#endif /* USE_GL */ diff --git a/hacks/glx/hexstrut.man b/hacks/glx/hexstrut.man new file mode 100644 index 0000000..19e49e0 --- /dev/null +++ b/hacks/glx/hexstrut.man @@ -0,0 +1,77 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +hexstrut - a grid of hexagons composed of rotating Y-shaped struts. +.SH SYNOPSIS +.B hexstrut +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +[\-thickness \fInumber\fP] +[\-no-wander] +[\-no-spin] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +A grid of hexagons composed of rotating Y-shaped struts. +Waves of rotation and color changes randomly propagate across the plane. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-count \fInumber\fP +Approximate number of hexagons on the screen, horizontally. Default: 20. +.TP 8 +.B \-thickness \fInumber\fP +Relative thickness of the struts. 0.01 - 1.7. Default: 0.2. +.TP 8 +.B \-wander | \-no-wander +Whether the grid should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the grid should spin. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/hilbert.c b/hacks/glx/hilbert.c new file mode 100644 index 0000000..dbb2ce6 --- /dev/null +++ b/hacks/glx/hilbert.c @@ -0,0 +1,1144 @@ +/* hilbert, Copyright (c) 2011-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * 2D and 3D Hilbert space-filling curves. + * + * Inspired by "Visualizing Hilbert Curves" by Nelson Max, 1998: + * https://e-reports-ext.llnl.gov/pdf/234149.pdf + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 30 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*geometry: 800x800\n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_hilbert 0 +# define release_hilbert 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "sphere.h" +#include "tube.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "True" +#define DEF_WANDER "False" +#define DEF_SPEED "1.0" +#define DEF_MODE "random" +#define DEF_ENDS "random" +#define DEF_MAX_DEPTH "5" +#define DEF_THICKNESS "0.25" + +#define PAUSE_TICKS 180 + +typedef struct { + double x,y,z; +} XYZ; + +typedef struct { + unsigned short x,y,z; +} XYZb; + +typedef struct { + int size; + XYZb *values; /* assume max depth of 20 (2^16 on each side) */ +} hilbert_cache; + + +static int dlist_faces[] = { 20, 10, 8, 4, 3 }; + + +typedef struct { + GLXContext *glx_context; + rotator *rot, *rot2; + trackball_state *trackball; + Bool button_down_p; + Bool twodee_p; + Bool closed_p; + int ncolors; + XColor *colors; + + int depth; + int depth_tick; + + GLfloat path_start, path_end; + int path_tick; + int pause; + GLfloat diam; + + hilbert_cache **caches; /* filled lazily */ + + GLuint dlists [40][2]; /* we don't actually alloc all of these */ + int dlist_polys [40][2]; + +} hilbert_configuration; + +static hilbert_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; +static char *mode_str; +static char *ends_str; +static int max_depth; +static GLfloat thickness; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-mode", ".mode", XrmoptionSepArg, 0 }, + { "-2d", ".mode", XrmoptionNoArg, "2D" }, + { "-3d", ".mode", XrmoptionNoArg, "3D" }, + { "-ends", ".ends", XrmoptionSepArg, 0 }, + { "-closed", ".ends", XrmoptionNoArg, "closed" }, + { "-open", ".ends", XrmoptionNoArg, "open" }, + { "-max-depth", ".maxDepth", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness",XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&mode_str, "mode", "Mode", DEF_MODE, t_String}, + {&ends_str, "ends", "Ends", DEF_ENDS, t_String}, + {&max_depth, "maxDepth", "MaxDepth", DEF_MAX_DEPTH, t_Int}, + {&thickness, "thickness","Thickness",DEF_THICKNESS, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt hilbert_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* 2D Hilbert, and closed-loop variant. + */ + +/* These arrays specify which bits of the T index contribute to the + X, Y and Z values. Higher order bits are defined recursively. + */ +static const int xbit2d[4] = { 0, 0, 1, 1 }; +static const int ybit2d[4] = { 0, 1, 1, 0 }; + +static const int xbit3d[8] = { 0,0,0,0,1,1,1,1 }; +static const int ybit3d[8] = { 0,1,1,0,0,1,1,0 }; +static const int zbit3d[8] = { 0,0,1,1,1,1,0,0 }; + +/* These matrixes encapsulate the necessary reflection and translation + of each 4 sub-squares or 8 sub-cubes. The r2d and r3d arrays are + the normal Hilbert descent, and the s2d and s3d arrays are the + modified curve used for only level 0 of a closed-form path. + */ + +static int r2d[4][2][2] = { + /* _ _ + | |..| | + :_ _: + _| |_ + + */ + {{ 0, 1}, + { 1, 0}}, + {{ 1, 0}, + { 0, 1}}, + {{ 1, 0}, + { 0, 1}}, + {{ 0,-1}, + {-1, 0}}, +}; + +static int s2d[4][2][2] = { + /* __ __ + | |..| | Used for outermost iteration only, in "closed" mode + : .. : + |__| |__| + + */ + {{-1, 0}, + { 0,-1}}, + {{ 1, 0}, + { 0, 1}}, + {{ 1, 0}, + { 0, 1}}, + {{-1, 0}, + { 0,-1}}, +}; + + +static int r3d[8][3][3] = { + /* + /| /| + / | / | + /__|____/ | + | | + / / + / / + */ + {{ 0, 1, 0}, + { 1, 0, 0}, + { 0, 0, 1}}, + {{ 0, 0, 1}, + { 0, 1, 0}, + { 1, 0, 0}}, + {{ 1, 0, 0}, + { 0, 1, 0}, + { 0, 0, 1}}, + {{ 0, 0,-1}, + {-1, 0, 0}, + { 0, 1, 0}}, + {{ 0, 0, 1}, + { 1, 0, 0}, + { 0, 1, 0}}, + {{ 1, 0, 0}, + { 0, 1, 0}, + { 0, 0, 1}}, + {{ 0, 0,-1}, + { 0, 1, 0}, + {-1, 0, 0}}, + {{ 0,-1, 0}, + {-1, 0, 0}, + { 0, 0, 1}}, +}; + + +static int s3d[8][3][3] = { + /* + /| /| Used for outermost iteration only, in "closed" mode + / | / | + /__|____/ | + | | + / / + /_______/ + */ + {{-1, 0, 0}, + { 0, 0,-1}, + { 0, 1, 0}}, + {{ 0, 0, 1}, + { 0, 1, 0}, + { 1, 0, 0}}, + {{ 1, 0, 0}, + { 0, 1, 0}, + { 0, 0, 1}}, + {{ 0, 0,-1}, + {-1, 0, 0}, + { 0, 1, 0}}, + {{ 0, 0, 1}, + { 1, 0, 0}, + { 0, 1, 0}}, + {{ 1, 0, 0}, + { 0, 1, 0}, + { 0, 0, 1}}, + {{ 0, 0,-1}, + { 0, 1, 0}, + {-1, 0, 0}}, + + {{-1, 0, 0}, + { 0, 0,-1}, + { 0, 1, 0}}, +}; + + + +/* Matrix utilities + */ + +static void +matrix_times_vector2d (int m[2][2], int v[2], int dest[2]) +{ + dest[0] = m[0][0]*v[0] + m[0][1]*v[1]; + dest[1] = m[1][0]*v[0] + m[1][1]*v[1]; +} + +static void +matrix_times_vector3d (int m[3][3], int v[3], int dest[3]) +{ + dest[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2]; + dest[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2]; + dest[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2]; +} + + +static void +matrix_multiply2d (int m1[2][2], int m2[2][2], int dest[2][2]) +{ + dest[0][0] = m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0]; + dest[0][1] = m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1]; + dest[1][0] = m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0]; + dest[1][1] = m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1]; +} + +static void +matrix_multiply3d (int m1[3][3], int m2[3][3], int dest[3][3]) +{ + int i, j, k; + for (i = 0; i < 3; i++) + for (j = 0; j < 3; j++) + { + dest[i][j] = 0; + for (k = 0; k < 3; k++) + dest[i][j] += m1[i][k] * m2[k][j]; + } +} + +static void +identity_matrix2d (int m[2][2]) +{ + m[0][0] = m[1][1] = 1; + m[0][1] = m[1][0] = 0; +} + +static void +identity_matrix3d (int m[3][3]) +{ + m[0][0] = m[1][1] = m[2][2] = 1; + m[0][1] = m[0][2] = m[1][0] = m[1][2] = m[2][0] = m[2][1] = 0; +} + + +static void +matrix_copy2d (int src[2][2], int dest[2][2]) +{ + int i, j; + for (i = 0; i < 2; i++) + for (j = 0; j < 2; j++) + dest[i][j] = src[i][j]; +} + + +static void +matrix_copy3d (int src[3][3], int dest[3][3]) +{ + int i, j; + for (i = 0; i < 3; i++) + for (j = 0; j < 3; j++) + dest[i][j] = src[i][j]; +} + + +/* 2D and 3D Hilbert: + Given an index T along the curve, return the XY or XYZ coordinates. + N is depth of the curve. + */ + +static void +t_to_xy (int n, int t, int *x, int *y, Bool closed_p) +{ + int k, rt[2][2], rq[2][2], va[2], vb[2]; + identity_matrix2d(rt); + *x = *y = 0; + + for (k = n-1; k >= 0; k--) + { + int j = 3 & (t >> (2*k)); + va[0] = 2 * xbit2d[j] - 1; + va[1] = 2 * ybit2d[j] - 1; + matrix_times_vector2d (rt, va, vb); + *x += ((vb[0] + 1) / 2) << k; + *y += ((vb[1] + 1) / 2) << k; + if (k > 0) + { + matrix_copy2d (rt, rq); + if (k == n-1 && closed_p) + matrix_multiply2d (rq, s2d[j], rt); + else + matrix_multiply2d (rq, r2d[j], rt); + } + } +} + + +static void +t_to_xyz (int n, int t, int *x, int *y, int *z, Bool closed_p) +{ + int k, rt[3][3], rq[3][3], va[3], vb[3]; + identity_matrix3d(rt); + *x = *y = *z = 0; + + for (k = n-1; k >= 0; k--) + { + int j = 7 & (t >> (3*k)); + va[0] = 2 * xbit3d[j] - 1; + va[1] = 2 * ybit3d[j] - 1; + va[2] = 2 * zbit3d[j] - 1; + matrix_times_vector3d (rt, va, vb); + *x += ((vb[0] + 1) / 2) << k; + *y += ((vb[1] + 1) / 2) << k; + *z += ((vb[2] + 1) / 2) << k; + if (k > 0) + { + matrix_copy3d (rt, rq); + if (k == n-1 && closed_p) + matrix_multiply3d (rq, s3d[j], rt); + else + matrix_multiply3d (rq, r3d[j], rt); + } + } +} + + +/* Rendering the curve + */ + + +/* Draw a sphere at the intersection of two tubes, to round off + the connection between them. Use one of our cache display lists + of unit spheres in various sizes. + */ +static int +draw_joint (ModeInfo *mi, XYZ p, GLfloat diam, int faces, int wire) +{ + hilbert_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + diam *= 0.99; /* try to clean up the edges a bit */ + + if (faces <= 4) return 0; /* too small to see */ + + glPushMatrix(); + glTranslatef (p.x, p.y, p.z); + glScalef (diam, diam, diam); + + /* i = unit_sphere (faces, faces, wire);*/ + + /* if (!bp->dlists[faces][0]) abort(); */ + /* if (!bp->dlist_polys[faces][0]) abort(); */ + + glCallList (bp->dlists[faces][0]); + i = bp->dlist_polys[faces][0]; + glPopMatrix(); + return i; +} + + +/* Draw a tube, and associated end caps. Use one of our cache display lists + of unit tubes in various sizes. Pick the resolution of the tube based + on how large it's being drawn. It's ok to get chunkier if the thing is + only a few pixels wide on the screen. + */ +static Bool +draw_segment (ModeInfo *mi, + XYZ p0, XYZ p1, /* from, to */ + int t, int end_t, /* value and range */ + GLfloat path_start, GLfloat path_end, /* clipping */ + Bool head_cap_p, + int *last_colorP) +{ + hilbert_configuration *bp = &bps[MI_SCREEN(mi)]; + + double t0 = (double) (t-1) / end_t; /* ratio of p[01] along curve */ + double t1 = (double) t / end_t; + + int wire = MI_IS_WIREFRAME(mi); + int owire = wire; + GLfloat dd = bp->diam; + int faces; + + if (path_start >= t1) /* whole segment is before clipping region */ + return False; + if (path_end < t0) /* whole segment is after clipping region */ + return False; + + + if (bp->twodee_p) dd *= 2; /* more polys in 2D mode */ + + faces = (dd > 0.040 ? dlist_faces[0] : + dd > 0.020 ? dlist_faces[1] : + dd > 0.010 ? dlist_faces[2] : + dd > 0.005 ? dlist_faces[3] : + dd > 0.002 ? dlist_faces[4] : + 1); + + /* In 2d mode, we can drop into wireframe mode and it still looks ok... */ + if (faces == 1) + { + if (bp->twodee_p) + wire = True; + else + faces = 3; + } + + if (wire && !owire) + { + glDisable (GL_DEPTH_TEST); + glDisable (GL_CULL_FACE); + glDisable (GL_LIGHTING); + } + + if (t0 < path_start) + { + XYZ p; + GLfloat seg_range = t1 - t0; + GLfloat clip_range = path_start - t0; + GLfloat ratio = clip_range / seg_range; + p.x = p0.x + ((p1.x - p0.x) * ratio); + p.y = p0.y + ((p1.y - p0.y) * ratio); + p.z = p0.z + ((p1.z - p0.z) * ratio); + p0 = p; + } + + if (t1 > path_end) + { + XYZ p; + GLfloat seg_range = t1 - t0; + GLfloat clip_range = path_end - t0; + GLfloat ratio = clip_range / seg_range; + p.x = p0.x + ((p1.x - p0.x) * ratio); + p.y = p0.y + ((p1.y - p0.y) * ratio); + p.z = p0.z + ((p1.z - p0.z) * ratio); + p1 = p; + } + + if (p0.x == p1.x && + p0.y == p1.y && + p0.z == p1.z) + return False; + + { + int segs = bp->ncolors * (t1 - t0); + int i; + XYZ p0b, p1b; + + if (segs < 1) segs = 1; + + for (i = 0; i < segs; i++) + { + int j = i + 1; + GLfloat color[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat t0b; + int c; + + p0b.x = p0.x + i * ((p1.x - p0.x) / segs); + p0b.y = p0.y + i * ((p1.y - p0.y) / segs); + p0b.z = p0.z + i * ((p1.z - p0.z) / segs); + + p1b.x = p0.x + j * ((p1.x - p0.x) / segs); + p1b.y = p0.y + j * ((p1.y - p0.y) / segs); + p1b.z = p0.z + j * ((p1.z - p0.z) / segs); + + + + /* #### this isn't quite right */ + t0b = t0 + i * (t1 - t0) / segs; + + c = bp->ncolors * t0b; + if (c >= bp->ncolors) c = bp->ncolors-1; + + /* Above depth 6, was spending 5% of the time in glMateralfv, + so only set the color if it's different. */ + + if (c != *last_colorP) + { + color[0] = bp->colors[c].red / 65536.0; + color[1] = bp->colors[c].green / 65536.0; + color[2] = bp->colors[c].blue / 65536.0; + if (wire) + glColor3fv (color); + else + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + *last_colorP = c; + } + + + if (wire) + { + glBegin (GL_LINES); + glVertex3f (p0b.x, p0b.y, p0b.z); + glVertex3f (p1b.x, p1b.y, p1b.z); + glEnd (); + mi->polygon_count++; + } + else + { + /* mi->polygon_count += tube (p0b.x, p0b.y, p0b.z, + p1b.x, p1b.y, p1b.z, + bp->diam, 0, faces, True, + 0, wire); + */ + + /* Render a rotated and scaled prefab unit tube. + + There's probably a slightly more concise way to do this, + but since they're all at right angles at least we don't + have to use atan(). + */ + GLfloat s; + glPushMatrix(); + glTranslatef (p0b.x, p0b.y, p0b.z); + + if (p1b.x > p0b.x) + { + s = p1b.x - p0b.x; + } + else if (p1b.x < p0b.x) + { + glRotatef (180, 0, 0, 1); + s = p0b.x - p1b.x; + } + else if (p1b.y > p0b.y) { + glRotatef (90, 0, 0, 1); + s = p1b.y - p0b.y; + } + else if (p1b.y < p0b.y) + { + glRotatef (-90, 0, 0, 1); + s = p0b.y - p1b.y; + } + else if (p1b.z > p0b.z) + { + glRotatef (-90, 0, 1, 0); + s = p1b.z - p0b.z; + } + else /* (p1b.z < p0b.z) */ + { + glRotatef (90, 0, 1, 0); + s = p0b.z - p1b.z; + } + + glScalef (s, bp->diam, bp->diam); + glCallList (bp->dlists[faces][1]); + mi->polygon_count += bp->dlist_polys[faces][1]; + glPopMatrix(); + + + /* If this is the bleeding edge, cap it too. */ + if (head_cap_p) { + mi->polygon_count += draw_joint (mi, p0b, bp->diam, faces, wire); + head_cap_p = False; + } + } + } + + /* If the path is closed, close it. This segment doesn't animate + like the others, but, oh well. + */ + if (! wire) + mi->polygon_count += draw_joint (mi, p1b, bp->diam, faces, wire); + } + + return True; +} + + +static void +mem(void) +{ + fprintf (stderr, "%s: out of memory\n", progname); + exit (1); +} + + +/* Render the whole thing, but omit segments that lie outside of + the path_start and path_end ratios. + */ +static void +hilbert (ModeInfo *mi, int size, GLfloat path_start, GLfloat path_end) +{ + hilbert_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + + GLfloat w = pow(2, size); + int end_t = (bp->twodee_p ? w * w : w * w * w); + + XYZ prev = { 0, }; + XYZ first = { 0, }; + Bool first_p = False; + Bool any_p = False; + int t; + Bool fill_cache_p = False; + hilbert_cache *cc; + int last_color = -1; + + /* Do this here since at higher resolutions, we turn wireframe on + and off. */ + + if (! wire) + { + glEnable (GL_NORMALIZE); + glEnable (GL_DEPTH_TEST); + glEnable (GL_CULL_FACE); + glEnable (GL_LIGHTING); + glEnable (GL_POLYGON_OFFSET_FILL); + } + + + if (!bp->caches) + { + bp->caches = (hilbert_cache **) + calloc (max_depth + 2, sizeof (*bp->caches)); + if (!bp->caches) mem(); + fill_cache_p = True; + } + + cc = bp->caches[size]; + if (! cc) + { + cc = (hilbert_cache *) calloc (1, sizeof (*cc)); + cc->values = (XYZb *) calloc (end_t + 1, sizeof (*cc->values)); + if (!cc->values) mem(); + cc->size = end_t; + bp->caches[size] = cc; + fill_cache_p = True; + } + + for (t = 0; t < end_t; t++) + { + int x, y, z; + XYZ c; + XYZb *cb; + + if (!fill_cache_p) + { + cb = &cc->values[t]; + x = cb->x; + y = cb->y; + z = cb->z; + } + else + { + if (!bp->twodee_p) + t_to_xyz (size, t, &x, &y, &z, bp->closed_p); + else + { + t_to_xy (size, t, &x, &y, bp->closed_p); + z = w/2; + } + cb = &cc->values[t]; + cb->x = x; + cb->y = y; + cb->z = z; + } + + c.x = (GLfloat) x / w - 0.5; + c.y = (GLfloat) y / w - 0.5; + c.z = (GLfloat) z / w - 0.5; + + /* #### We could save some polygons by not drawing the spheres + between colinear segments. */ + + if (t > 0) { + if (draw_segment (mi, prev, c, t, end_t, path_start, path_end, !any_p, + &last_color)) + any_p = True; + } + prev = c; + if (! first_p) { + first = c; + first_p = True; + } + } + + if (bp->closed_p && path_end >= 1.0) { + draw_segment (mi, prev, first, t, end_t, path_start, path_end, !any_p, + &last_color); + } +} + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_hilbert (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +hilbert_handle_event (ModeInfo *mi, XEvent *event) +{ + hilbert_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == '+' || c == '=' || + keysym == XK_Up || keysym == XK_Right || keysym == XK_Next) + { + bp->depth++; + if (bp->depth > max_depth) bp->depth = max_depth; + return True; + } + else if (c == '-' || c == '_' || + keysym == XK_Down || keysym == XK_Left || keysym == XK_Prior) + { + bp->depth--; + if (bp->depth < 1) bp->depth = 1; + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + bp->depth += bp->depth_tick; + if (bp->depth > max_depth-1) + { + bp->depth = max_depth; + bp->depth_tick = -1; + } + else if (bp->depth <= 1) + { + bp->depth = 1; + bp->depth_tick = 1; + } + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_hilbert (ModeInfo *mi) +{ + hilbert_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->depth = 2; + bp->depth_tick = 1; + bp->path_start = 0.0; + bp->path_end = 0.0; + bp->path_tick = 1; + + if (thickness < 0.01) thickness = 0.01; + if (thickness > 1.0) thickness = 1.0; + + if (speed <= 0) speed = 0.0001; + if (max_depth < 2) max_depth = 2; + if (max_depth > 20) max_depth = 20; /* hard limit due to hilbert_cache */ + + if (bp->depth > max_depth-1) bp->depth = max_depth-1; + + bp->glx_context = init_GL(mi); + + reshape_hilbert (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable (GL_LIGHTING); + glEnable (GL_LIGHT0); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + { + double spin_speed = 0.04; + double tilt_speed = spin_speed / 10; + double wander_speed = 0.008; + double spin_accel = 0.01; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + do_spin); + bp->rot2 = make_rotator (0, 0, 0, 0, tilt_speed, True); + bp->trackball = gltrackball_init (True); + } + + if (mode_str && !strcasecmp(mode_str, "2d")) + bp->twodee_p = True; + else if (mode_str && (!strcasecmp(mode_str, "3d"))) + bp->twodee_p = False; + else + { + if (! (mode_str && !strcasecmp(mode_str, "random"))) + fprintf (stderr, "%s: 'mode' must be '2d', '3d', or 'random'\n", + progname); + bp->twodee_p = ((random() % 3) == 0); + } + + + if (ends_str && (!strcasecmp(ends_str, "closed"))) + bp->closed_p = True; + else if (ends_str && (!strcasecmp(ends_str, "open"))) + bp->closed_p = False; + else + { + if (! (ends_str && !strcasecmp(ends_str, "random"))) + fprintf (stderr, "%s: 'ends' must be 'open', 'closed', or 'random'\n", + progname); + bp->closed_p = ((random() % 3) != 0); + } + + + /* More colors results in more polygons (more tube segments) so keeping + this small is worthwhile. */ + bp->ncolors = (bp->twodee_p ? 1024 : 128); + + if (bp->closed_p) + { + /* Since the path is closed, colors must also be a closed loop */ + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + } + else + { + /* Since the path is open, first and last colors should differ. */ + bp->ncolors *= 2; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_uniform_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + bp->ncolors /= 2; + } + + /* Generate display lists for several different resolutions of + a unit tube and a unit sphere. + */ + for (i = 0; i < countof(dlist_faces); i++) + { + int faces = dlist_faces[i]; + bp->dlists[faces][0] = glGenLists (1); + + glNewList (bp->dlists[faces][0], GL_COMPILE); + bp->dlist_polys[faces][0] = unit_sphere (faces, faces, wire); + glEndList (); + + bp->dlists[faces][1] = glGenLists (1); + + glNewList (bp->dlists[faces][1], GL_COMPILE); + bp->dlist_polys[faces][1] = + tube (0, 0, 0, 1, 0, 0, + 1, 0, faces, True, 0, wire); + glEndList (); + } +} + + +ENTRYPOINT void +draw_hilbert (ModeInfo *mi) +{ + hilbert_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + + static const GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat bshiny = 128.0; + GLfloat bcolor[4] = {1.0, 1.0, 1.0, 1.0}; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + + if (! wire) + { + glEnable (GL_NORMALIZE); + glEnable (GL_DEPTH_TEST); + glEnable (GL_CULL_FACE); + glEnable (GL_LIGHTING); + glEnable (GL_LIGHT0); + glEnable (GL_POLYGON_OFFSET_FILL); + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z, z2; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 15); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + + if (bp->twodee_p && do_spin) /* face front */ + { + double max = 70; + get_position (bp->rot2, &x, &y, &z2, !bp->button_down_p); + glRotatef (max/2 - x*max, 1, 0, 0); + glRotatef (max/2 - y*max, 0, 1, 0); + glRotatef (z * 360, 0, 0, 1); /* but upside down is ok */ + } + else + { + glRotatef (x * 360, 1, 0, 0); + glRotatef (y * 360, 0, 1, 0); + glRotatef (z * 360, 0, 0, 1); + } + } + + mi->polygon_count = 0; + + glMaterialfv (GL_FRONT, GL_SPECULAR, bspec); + glMateriali (GL_FRONT, GL_SHININESS, bshiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor); + + glScalef (8,8,8); + glTranslatef (0.1, 0.1, 0); + + if (!do_spin && !bp->twodee_p) + { + /* tilt the cube a little, and make the start and end visible */ + glTranslatef (-0.1, 0, 0); + glRotatef (140, 0, 1, 0); + glRotatef (30, 1, 0, 0); + } + + if (wire) + glLineWidth (bp->depth > 4 ? 1.0 : + bp->depth > 3 ? 2.0 : + 3.0); + + if (bp->path_tick > 0) /* advancing the end point, [0 - N) */ + { /* drawing 1 partial path, 1st time only. */ + + if (!bp->button_down_p) + bp->path_end += 0.01 * speed; + + if (bp->path_end >= 1.0) + { + bp->path_start = 0.0; + bp->path_end = 1.0; + bp->path_tick = -1; + bp->pause = PAUSE_TICKS; + } + + bp->diam = thickness / pow (2, bp->depth); + hilbert (mi, bp->depth, bp->path_start, bp->path_end); + mi->recursion_depth = bp->depth + bp->path_start; + } + + else /* advancing the start point, (N - 1] */ + { /* drawing 2 paths at different rez. */ + if (bp->pause) + { + bp->pause--; + } + else + { + if (!bp->button_down_p) + bp->path_start += 0.01 * speed; + + if (bp->path_start > 1.0) + { + bp->path_start = 0.0; + bp->depth += bp->depth_tick; + bp->pause = PAUSE_TICKS; + if (bp->depth > max_depth-1) + { + bp->depth = max_depth; + bp->depth_tick = -1; + } + else if (bp->depth <= 1) + { + bp->depth = 1; + bp->depth_tick = 1; + } + } + } + + { + GLfloat d1 = thickness / pow (2, bp->depth); + GLfloat d2 = thickness / pow (2, bp->depth + bp->depth_tick); + bp->diam = (d1 * (1 - bp->path_start) + + d2 * bp->path_start); + } + + /* First time around, start is 0, and end animates forward. + Then, to display the next higher resolution, we render + depth=N while increasing start and leaving end=1.0; + and simultaneously animationg depth=N+1 with start=0 and + end increasing by the same amount. + + The two paths aren't actually connected together at the + resolution-change interface, and sometimes they overlap, + but things go fast enough that it's hard to spot those + glitches, so it looks ok. + */ + glPolygonOffset (0, 0); + hilbert (mi, bp->depth, bp->path_start, bp->path_end); + + glPolygonOffset (1.0, 1.0); + hilbert (mi, bp->depth + bp->depth_tick, 0.0, bp->path_start); + + mi->recursion_depth = bp->depth + (bp->depth_tick * bp->path_start); + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Hilbert", hilbert) + +#endif /* USE_GL */ diff --git a/hacks/glx/hilbert.man b/hacks/glx/hilbert.man new file mode 100644 index 0000000..8693dce --- /dev/null +++ b/hacks/glx/hilbert.man @@ -0,0 +1,103 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +hilbert - 3D Hilbert fractal. +.SH SYNOPSIS +.B hilbert +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fIratio\fP] +[\-depth \fInumber\fP] +[\-spin] +[\-wander] +[\-2d] +[\-3d] +[\-closed] +[\-open] +[\-max\-depth \fInumber\fP] +[\-thickness \fIratio\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +This draws the recursive Hilbert space-filling curve, in both 2D and +3D variants. It incrementally animates the growth and recursion to +the maximum depth, then unwinds it back. + +The Hilbert path is a single contiguous line that can fill a volume +without crossing itself. As a data structure, Hilbert paths are +useful because ordering along the curve preserves locality: points +that close together along the curve are also close together in space. +The converse is often, but not always, true. The coloration +reflects this. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +How fast the animation should run. +Less than 1 for slower, greater than 1 for faster. +.TP 8 +.B \-max\-depth \fInumber\fP +Max depth to descend. Default: 5, which peaks at around half a +million polygons. +.TP 8 +.B \-spin +.B \-no\-spin +Whether to rotate the object. Default: true. +.TP 8 +.B \-wander +.B \-no\-wander +Whether to wander the object around on the screen. Default: false; +.TP 8 +.B \-2d +.B \-3d +Whether to draw the 2D or 3D variant. Default: random. +.TP 8 +.B \-closed +.B \-open +Whether to draw the open or closed-path variant. Default: random. +.TP 8 +.B \-thickness \fIratio\fP +How thick the lines should be. Default: 0.25. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2011 by Jamie Zawinski. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/hydrostat.c b/hacks/glx/hydrostat.c new file mode 100644 index 0000000..faf15a0 --- /dev/null +++ b/hacks/glx/hydrostat.c @@ -0,0 +1,809 @@ +/* hydrostat, Copyright (C) 2012 by Justin Windle + * Copyright (c) 2016 Jamie Zawinski + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Tentacle simulation using inverse kinematics. + * + * http://soulwire.co.uk/experiments/muscular-hydrostats/ + * https://github.com/soulwire/Muscular-Hydrostats/ + * + * Ported to C from Javascript by jwz, May 2016 + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*count: 3 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_hydrostat 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "sphere.h" +#include "normals.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +/* It looks bad when you rotate it with the trackball, because it reveals + that the tentacles are moving in a 2d plane. But it's useful for + debugging. */ +#undef USE_TRACKBALL + +#define DEF_SPEED "1.0" +#define DEF_PULSE "True" +#define DEF_HEAD_RADIUS "60" +#define DEF_TENTACLES "35" +#define DEF_THICKNESS "18" +#define DEF_LENGTH "55" +#define DEF_GRAVITY "0.5" +#define DEF_CURRENT "0.25" +#define DEF_FRICTION "0.02" +#define DEF_OPACITY "0.8" + + +#define TENTACLE_FACES 5 + +typedef struct { + XYZ pos, opos, v; +} node; + +typedef struct { + int length; + GLfloat radius; + GLfloat spacing; + GLfloat friction; + GLfloat th; + node *nodes; + GLfloat color[4]; +} tentacle; + +typedef struct { + XYZ pos, from, to; + GLfloat ratio, pulse, rate; + GLfloat head_radius; + GLfloat thickness; + int ntentacles; + tentacle *tentacles; + GLfloat color[4]; +} squid; + +typedef struct { + GLXContext *glx_context; + Bool button_down_p; + int dragging; + squid **squids; + GLfloat cos_sin_table[2 * (TENTACLE_FACES + 1)]; + GLuint head; + int head_polys; +# ifdef USE_TRACKBALL + trackball_state *trackball; +# endif +} hydrostat_configuration; + +static hydrostat_configuration *bps = NULL; + +static Bool do_pulse; +static GLfloat speed_arg; +static GLfloat head_radius_arg; +static GLfloat ntentacles_arg; +static GLfloat thickness_arg; +static GLfloat length_arg; +static GLfloat gravity_arg; +static GLfloat current_arg; +static GLfloat friction_arg; +static GLfloat opacity_arg; + +static XrmOptionDescRec opts[] = { + { "-pulse", ".pulse", XrmoptionNoArg, "True" }, + { "+pulse", ".pulse", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-head-radius", ".headRadius", XrmoptionSepArg, 0 }, + { "-tentacles", ".tentacles", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-length", ".length", XrmoptionSepArg, 0 }, + { "-gravity", ".gravity", XrmoptionSepArg, 0 }, + { "-current", ".current", XrmoptionSepArg, 0 }, + { "-friction", ".friction", XrmoptionSepArg, 0 }, + { "-opacity", ".opacity", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + { &do_pulse, "pulse", "Pulse", DEF_PULSE, t_Bool }, + { &speed_arg, "speed", "Speed", DEF_SPEED, t_Float }, + { &head_radius_arg, "headRadius", "HeadRadius", DEF_HEAD_RADIUS, t_Float }, + { &ntentacles_arg, "tentacles", "Tentacles", DEF_TENTACLES, t_Float }, + { &thickness_arg, "thickness", "Thickness", DEF_THICKNESS, t_Float }, + { &length_arg, "length", "Length", DEF_LENGTH, t_Float }, + { &gravity_arg, "gravity", "Gravity", DEF_GRAVITY, t_Float }, + { ¤t_arg, "current", "Current", DEF_CURRENT, t_Float }, + { &friction_arg, "friction", "Friction", DEF_FRICTION, t_Float }, + { &opacity_arg, "opacity", "Opacity", DEF_OPACITY, t_Float }, +}; + +ENTRYPOINT ModeSpecOpt hydrostat_opts = {countof(opts), opts, + countof(vars), vars, NULL}; + + +static void +move_tentacle (squid *sq, tentacle *t) +{ + int i, j; + node *prev = &t->nodes[0]; + int rot = (int) current_device_rotation(); + + for (i = 1, j = 0; i < t->length; i++, j++) + { + XYZ d, p; + GLfloat da; + node *n = &t->nodes[i]; + + /* Sadly, this is still computing motion in a 2d plane, so the + tentacles look dumb if the scene is rotated. */ + + n->pos.x += n->v.x; + n->pos.y += n->v.y; + n->pos.z += n->v.z; + + d.x = prev->pos.x - n->pos.x; + d.y = prev->pos.y - n->pos.y; + d.z = prev->pos.z - n->pos.z; + da = atan2 (d.z, d.x); + + p.x = n->pos.x + cos (da) * t->spacing * t->length; + p.y = n->pos.y + cos (da) * t->spacing * t->length; + p.z = n->pos.z + sin (da) * t->spacing * t->length; + + n->pos.x = prev->pos.x - (p.x - n->pos.x); + n->pos.y = prev->pos.y - (p.y - n->pos.y); + n->pos.z = prev->pos.z - (p.z - n->pos.z); + + n->v.x = n->pos.x - n->opos.x; + n->v.y = n->pos.y - n->opos.y; + n->v.z = n->pos.z - n->opos.z; + + n->v.x *= t->friction * (1 - friction_arg); + n->v.y *= t->friction * (1 - friction_arg); + n->v.z *= t->friction * (1 - friction_arg); + + switch (rot) { + case 90: case -270: + n->v.x += gravity_arg; + n->v.y -= current_arg; + n->v.z -= current_arg; + break; + case -90: case 270: + n->v.x -= gravity_arg; + n->v.y += current_arg; + n->v.z += current_arg; + break; + case 180: case -180: + n->v.x -= current_arg; + n->v.y -= current_arg; + n->v.z -= gravity_arg; + break; + default: + n->v.x += current_arg; + n->v.y += current_arg; + n->v.z += gravity_arg; + break; + } + + n->opos.x = n->pos.x; + n->opos.y = n->pos.y; + n->opos.z = n->pos.z; + + prev = n; + } +} + + +static GLfloat +ease_fn (GLfloat r) +{ + return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */ +} + + +/* Squirty motion: fast acceleration, then fade. */ +static GLfloat +ease_ratio (GLfloat r) +{ + GLfloat ease = 0.05; + GLfloat ease2 = 1-ease; + if (r <= 0) r = 0; + else if (r >= 1) r = 1; + else if (r <= ease) r = ease * ease_fn (r / ease); + else r = 1 - ease2 * ease_fn ((1 - r) / ease2); + return r; +} + + +static void +move_squid (ModeInfo *mi, squid *sq) +{ + hydrostat_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat step = M_PI * 2 / sq->ntentacles; + int i; + GLfloat radius = head_radius_arg; + GLfloat r; + + /* Move to a new position */ + + if (! bp->button_down_p) + { + sq->ratio += speed_arg * 0.01; + if (sq->ratio >= 1) + { + sq->ratio = -(frand(2.0) + frand(2.0) + frand(2.0)); + sq->from.x = sq->to.x; + sq->from.y = sq->to.y; + sq->from.z = sq->to.z; + sq->to.x = 250 - frand(500); + sq->to.y = 250 - frand(500); + sq->to.z = 250 - frand(500); + } + + r = sq->ratio > 0 ? ease_ratio (sq->ratio) : 0; + sq->pos.x = sq->from.x + r * (sq->to.x - sq->from.x); + sq->pos.y = sq->from.y + r * (sq->to.y - sq->from.y); + sq->pos.z = sq->from.z + r * (sq->to.z - sq->from.z); + } + + if (do_pulse) + { + GLfloat p = pow (sin (sq->pulse * M_PI), 18); + sq->head_radius = (head_radius_arg * 0.7 + + head_radius_arg * 0.3 * p); + radius = sq->head_radius * 0.25; + sq->pulse += sq->rate * speed_arg * 0.02; + if (sq->pulse > 1) sq->pulse = 0; + } + + for (i = 0; i < sq->ntentacles; i++) + { + tentacle *tt = &sq->tentacles[i]; + GLfloat th = i * step; + GLfloat px = cos (th) * radius; + GLfloat py = sin (th) * radius; + tt->th = th; + tt->nodes[0].pos.x = sq->pos.x + px; + tt->nodes[0].pos.y = sq->pos.y + py; + tt->nodes[0].pos.z = sq->pos.z; + move_tentacle (sq, tt); + } +} + + +/* Find the angle at which the head should be tilted in the XY plane. + */ +static GLfloat +head_angle (ModeInfo *mi, squid *sq) +{ + int i; + XYZ sum = { 0, }; + + for (i = 0; i < sq->ntentacles; i++) + { + tentacle *t = &sq->tentacles[i]; + int j = t->length / 3; /* Pick a node toward the top */ + node *n = &t->nodes[j]; + sum.x += n->pos.x; + sum.y += n->pos.y; + sum.z += n->pos.z; + } + + sum.x /= sq->ntentacles; + sum.y /= sq->ntentacles; + sum.z /= sq->ntentacles; + + sum.x -= sq->pos.x; + sum.y -= sq->pos.y; + sum.z -= sq->pos.z; + + return (-atan2 (sum.x, sum.z) * (180 / M_PI)); +} + + +static void +draw_head (ModeInfo *mi, squid *sq, GLfloat scale) +{ + hydrostat_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat c2[4]; + GLfloat angle = head_angle (mi, sq); + + scale *= 1.1; + + glPushMatrix(); + glTranslatef (sq->pos.x, sq->pos.y, sq->pos.z); + glScalef (sq->head_radius, sq->head_radius, sq->head_radius); + glScalef (scale, scale, scale); + glRotatef (90, 1, 0, 0); + + memcpy (c2, sq->color, sizeof(c2)); + if (opacity_arg < 1.0 && scale >= 1.0) + c2[3] *= 0.6; + glColor4fv (c2); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, c2); + + glTranslatef (0, 0.3, 0); + glRotatef (angle, 0, 0, 1); + + glCallList (bp->head); + mi->polygon_count += bp->head_polys; + + glPopMatrix(); +} + + +static void +draw_squid (ModeInfo *mi, squid *sq) +{ + hydrostat_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int i; + glPushMatrix(); + glRotatef (90, 1, 0, 0); + + if (opacity_arg < 1.0) + draw_head (mi, sq, 0.75); + + if (!wire) { + glFrontFace (GL_CCW); + glBegin (GL_TRIANGLE_STRIP); + } + + for (i = 0; i < sq->ntentacles; i++) + { + tentacle *t = &sq->tentacles[i]; + int j; + + glColor4fv (t->color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, t->color); + + if (wire) + { + glBegin (GL_LINE_STRIP); + for (j = 0; j < t->length; j++) + glVertex3f (t->nodes[j].pos.x, + t->nodes[j].pos.y, + t->nodes[j].pos.z); + glEnd(); + mi->polygon_count += t->length; + } + else + { + GLfloat radius = t->radius * thickness_arg; + GLfloat rstep = radius / t->length; + for (j = 0; j < t->length-1; j++) + { + int k; + node *n1 = &t->nodes[j]; + node *n2 = &t->nodes[j+1]; + GLfloat X = (n1->pos.x - n2->pos.x); + GLfloat Y = (n1->pos.y - n2->pos.y); + GLfloat Z = (n1->pos.z - n2->pos.z); + GLfloat L = sqrt (X*X + Y*Y + Z*Z); + GLfloat r2 = radius - rstep; + GLfloat L2 = sqrt (X*X + Y*Y); + + for (k = 0; k <= TENTACLE_FACES; k++) + { + GLfloat c = bp->cos_sin_table[2 * k]; + GLfloat s = bp->cos_sin_table[2 * k + 1]; + GLfloat x1 = radius * c; + GLfloat y1 = radius * s; + GLfloat z1 = 0; + GLfloat x2 = r2 * c; + GLfloat y2 = r2 * s; + GLfloat z2 = L; + + GLfloat x1t = (L2*X*z1-X*Z*y1+L*Y*x1)/(L*L2); + GLfloat z1t = (L2*Y*z1-Y*Z*y1-L*X*x1)/(L*L2); + GLfloat y1t = (Z*z1+L2*y1)/L; + + GLfloat x2t = (L2*X*z2-X*Z*y2+L*Y*x2)/(L*L2) + n1->pos.x; + GLfloat z2t = (L2*Y*z2-Y*Z*y2-L*X*x2)/(L*L2) + n1->pos.y; + GLfloat y2t = (Z*z2+L2*y2)/L + n1->pos.z; + + glNormal3f (x1t, z1t, y1t); + + x1t += n1->pos.x; + z1t += n1->pos.y; + y1t += n1->pos.z; + + if (k == 0) + glVertex3f (x1t, z1t, y1t); + glVertex3f (x1t, z1t, y1t); + + glVertex3f (x2t, z2t, y2t); + if (k == TENTACLE_FACES) + glVertex3f (x2t, z2t, y2t); + + mi->polygon_count++; + } + radius = r2; + } + } + } + + if (!wire) + glEnd (); + + draw_head (mi, sq, 1.0); + + glPopMatrix(); +} + + +static squid * +make_squid (ModeInfo *mi, int which) +{ + squid *sq = calloc (1, sizeof(*sq)); + int i; + + sq->head_radius = head_radius_arg; + sq->thickness = thickness_arg; + sq->ntentacles = ntentacles_arg; + + sq->color[0] = 0.1 + frand(0.7); + sq->color[1] = 0.5 + frand(0.5); + sq->color[2] = 0.1 + frand(0.7); + sq->color[3] = opacity_arg; + + sq->from.x = sq->to.x = sq->pos.x = 200 - frand(400); + sq->from.y = sq->to.y = sq->pos.y = 200 - frand(400); + sq->from.z = sq->to.z = sq->pos.z = -frand(200); + + sq->ratio = -frand(3); + + if (which > 0) /* Start others off screen, and moving in */ + { + sq->from.x = sq->to.x = sq->pos.x = 800 + frand(500) + * (random()&1 ? 1 : -1); + sq->from.y = sq->to.y = sq->pos.y = 800 + frand(500) + * (random()&1 ? 1 : -1); + sq->ratio = 0; + } + + if (do_pulse) + sq->pulse = frand(1.0); + sq->rate = 0.8 + frand(0.2); + + sq->tentacles = (tentacle *) + calloc (sq->ntentacles, sizeof(*sq->tentacles)); + for (i = 0; i < sq->ntentacles; i++) + { + int j; + tentacle *t = &sq->tentacles[i]; + GLfloat shade = 0.75 + frand(0.25); + + t->length = 2 + length_arg * (0.8 + frand (0.4)); + t->radius = 0.05 + frand (0.95); + t->spacing = 0.02 + frand (0.08); + t->friction = 0.7 + frand (0.18); + t->nodes = (node *) calloc (t->length + 1, sizeof (*t->nodes)); + + t->color[0] = shade * sq->color[0]; + t->color[1] = shade * sq->color[1]; + t->color[2] = shade * sq->color[2]; + t->color[3] = sq->color[3]; + + for (j = 0; j < t->length; j++) + { + node *n = &t->nodes[j]; + n->pos.x = sq->pos.x; + n->pos.y = sq->pos.y; + n->pos.z = sq->pos.z + j; + } + } + + return sq; +} + +/* qsort comparator for sorting squid by depth */ +static int +cmp_squid (const void *aa, const void *bb) +{ + squid * const *a = aa; + squid * const *b = bb; + return ((int) ((*b)->pos.y * 10000) - + (int) ((*a)->pos.y * 10000)); +} + + +static void +free_squid (squid *sq) +{ + int i; + for (i = 0; i < sq->ntentacles; i++) + free (sq->tentacles[i].nodes); + free (sq->tentacles); + free (sq); +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_hydrostat (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + + +ENTRYPOINT Bool +hydrostat_handle_event (ModeInfo *mi, XEvent *event) +{ + hydrostat_configuration *bp = &bps[MI_SCREEN(mi)]; + int w = MI_WIDTH(mi); + int h = MI_HEIGHT(mi); + int x, y; + +# ifdef USE_TRACKBALL + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; +# endif + + switch (event->xany.type) { + case ButtonPress: case ButtonRelease: + x = event->xbutton.x; + y = event->xbutton.y; + break; + case MotionNotify: + x = event->xmotion.x; + y = event->xmotion.y; + break; + default: + x = y = 0; + } + + x -= w/2; + y -= h/2; + x *= 0.7; + y *= 0.7; + + if (event->xany.type == ButtonPress) + { + int i; + GLfloat D0 = 999999; + + /* This is pretty halfassed hit detection, but it works ok... */ + for (i = 0; i < MI_COUNT(mi); i++) + { + squid *s = bp->squids[i]; + GLfloat X = s->pos.x - x; + GLfloat Y = s->pos.z - y; + GLfloat D = sqrt(X*X + Y*Y); + if (D < D0) + { + bp->dragging = i; + D0 = D; + } + } + + if (D0 > 300) /* Too far away, missed hit */ + { + bp->dragging = -1; + return False; + } + + bp->squids[bp->dragging]->ratio = -3; + bp->button_down_p = True; + + return True; + } + else if (event->xany.type == ButtonRelease && bp->dragging >= 0) + { + bp->button_down_p = False; + bp->dragging = -1; + return True; + } + else if (event->xany.type == MotionNotify && bp->dragging >= 0) + { + squid *s = bp->squids[bp->dragging]; + s->from.x = s->to.x = s->pos.x = x; + s->from.z = s->to.z = s->pos.z = y; + s->from.y = s->to.y = s->pos.y; + return True; + } + + return False; +} + + +ENTRYPOINT void +init_hydrostat (ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + hydrostat_configuration *bp; + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_hydrostat (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + int k; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + for (k = 0; k <= TENTACLE_FACES; k++) + { + GLfloat th = k * M_PI * 2 / TENTACLE_FACES; + bp->cos_sin_table[2 * k] = cos(th); + bp->cos_sin_table[2 * k + 1] = sin(th); + } + } + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + + if (MI_COUNT(mi) <= 0) + MI_COUNT(mi) = 1; + + if (random() & 1) + current_arg = -current_arg; + + if (MI_COUNT(mi) == 1 || wire) + opacity_arg = 1.0; + if (opacity_arg < 0.1) opacity_arg = 0.1; + if (opacity_arg > 1.0) opacity_arg = 1.0; + + bp->squids = (squid **) calloc (MI_COUNT(mi), sizeof(*bp->squids)); + for (i = 0; i < MI_COUNT(mi); i++) + bp->squids[i] = make_squid (mi, i); + + bp->dragging = -1; + + if (opacity_arg < 1.0) + { + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE); + } + + i = wire ? 4 : 24; + bp->head = glGenLists (1); + glNewList (bp->head, GL_COMPILE); + glScalef (1, 1.1, 1); + bp->head_polys = unit_dome (wire ? 8 : 16, i, wire); + glRotatef (180, 0, 0, 1); + glScalef (1, 0.5, 1); + bp->head_polys += unit_dome (wire ? 8 : 8, i, wire); + glEndList (); + +# ifdef USE_TRACKBALL + bp->trackball = gltrackball_init (True); +# endif +} + + +ENTRYPOINT void +draw_hydrostat (ModeInfo *mi) +{ + hydrostat_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef (0.03, 0.03, 0.03); + +# ifdef USE_TRACKBALL + gltrackball_rotate (bp->trackball); +# endif + + mi->polygon_count = 0; + + if (opacity_arg < 1.0) + qsort (bp->squids, MI_COUNT(mi), sizeof(*bp->squids), cmp_squid); + + for (i = 0; i < MI_COUNT(mi); i++) + { + squid *sq = bp->squids[i]; + move_squid (mi, sq); + draw_squid (mi, sq); + if (opacity_arg < 1.0) + glClear (GL_DEPTH_BUFFER_BIT); + } + + if (! (random() % 700)) /* Reverse the flow every now and then */ + current_arg = -current_arg; + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + + +ENTRYPOINT void +free_hydrostat (ModeInfo *mi) +{ + hydrostat_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + if (!bp->squids) + return; + for (i = 0; i < MI_COUNT(mi); i++) + free_squid (bp->squids[i]); + free (bp->squids); +} + +XSCREENSAVER_MODULE ("Hydrostat", hydrostat) + +#endif /* USE_GL */ diff --git a/hacks/glx/hydrostat.man b/hacks/glx/hydrostat.man new file mode 100644 index 0000000..de75525 --- /dev/null +++ b/hacks/glx/hydrostat.man @@ -0,0 +1,103 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +hydrostat - Wiggly squid or jellyfish with many tentacles. +.SH SYNOPSIS +.B hydrostat +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +[\-head-radius \fInumber\fP] +[\-tentacles \fInumber\fP] +[\-thickness \fInumber\fP] +[\-length \fInumber\fP] +[\-gravity \fInumber\fP] +[\-current \fInumber\fP] +[\-friction \fInumber\fP] +[\-no-pulse] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Wiggly squid or jellyfish with many tentacles. A muscular hydrostat +is a biological structure used to move its host about, consisting of +muscles with no skeletal support. It performs its hydraulic movement +without fluid in a separate compartment, as in a hydrostatic +skeleton. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-count \fInumber\fP +Number of squid. 1 - 100. Default: 10. +.TP 8 +.B \-head-radius \fInumber\fP +Head size. 10 - 100. Default: 60. +.TP 8 +.B \-tentacles \fInumber\fP +Number of tentacles. 3 - 100. Default: 40. +.TP 8 +.B \-thickness \fInumber\fP +Thickness of tentacles. 3 - 40. Default: 18. +.TP 8 +.B \-length \fInumber\fP +Length of tentacles. 10 - 150. Default: 70. +.TP 8 +.B \-gravity \fInumber\fP +Strength of gravity. 0 - 10.0. Default: 0.5. +.TP 8 +.B \-current \fInumber\fP +Strength of current. 0.0 - 10.0. Default: 0.25. +.TP 8 +.B \-friction \fInumber\fP +Coefficient of friction. 0.0 - 0.1. Default: 0.02. +.TP 8 +.B \-pulse | \-no-pulse +Whether the squid should pulse. Default true. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) + +.BR http://soulwire.co.uk/experiments/muscular-hydrostats/ +.SH COPYRIGHT +Copyright \(co 2016 by Justin Windle and Jamie Zawinski. Permission +to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided +that the above copyright notice appear in all copies and that both +that copyright notice and this permission notice appear in supporting +documentation. No representations are made about the suitability of +this software for any purpose. It is provided "as is" without express +or implied warranty. +.SH AUTHOR +Justin Windle and Jamie Zawinski. diff --git a/hacks/glx/hypertorus.c b/hacks/glx/hypertorus.c new file mode 100644 index 0000000..3ae6aad --- /dev/null +++ b/hacks/glx/hypertorus.c @@ -0,0 +1,1016 @@ +/* hypertorus --- Shows a hypertorus that rotates in 4d */ + +#if 0 +static const char sccsid[] = "@(#)hypertorus.c 1.2 05/09/28 xlockmore"; +#endif + +/* Copyright (c) 2003-2009 Carsten Steger . */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * REVISION HISTORY: + * C. Steger - 03/05/18: Initial version + * C. Steger - 05/09/28: Added the spirals appearance mode + * and trackball support + * C. Steger - 07/01/23: Improved 4d trackball support + * C. Steger - 09/08/22: Removed check-config.pl warnings + */ + +/* + * This program shows the Clifford torus as it rotates in 4d. The Clifford + * torus is a torus lies on the "surface" of the hypersphere in 4d. The + * program projects the 4d torus to 3d using either a perspective or an + * orthographic projection. Of the two alternatives, the perspecitve + * projection looks much more appealing. In orthographic projections the + * torus degenerates into a doubly covered cylinder for some angles. The + * projected 3d torus can then be projected to the screen either perspectively + * or orthographically. There are three display modes for the torus: mesh + * (wireframe), solid, or transparent. Furthermore, the appearance of the + * torus can be as a solid object or as a set of see-through bands or + * see-through spirals. Finally, the colors with with the torus is drawn can + * be set to either two-sided or to colorwheel. In the first case, the torus + * is drawn with red on the outside and green on the inside. This mode + * enables you to see that the torus turns inside-out as it rotates in 4d. + * The second mode draws the torus in a fully saturated color wheel. This + * gives a very nice effect when combined with the see-through bands or + * see-through spirals mode. The rotation speed for each of the six planes + * around which the torus rotates can be chosen. This program is very much + * inspired by Thomas Banchoff's book "Beyond the Third Dimension: Geometry, + * Computer Graphics, and Higher Dimensions", Scientific American Library, + * 1990. + */ + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define DISP_WIREFRAME 0 +#define DISP_SURFACE 1 +#define DISP_TRANSPARENT 2 + +#define APPEARANCE_SOLID 0 +#define APPEARANCE_BANDS 1 +#define APPEARANCE_SPIRALS 2 + +#define COLORS_TWOSIDED 0 +#define COLORS_COLORWHEEL 1 + +#define DISP_3D_PERSPECTIVE 0 +#define DISP_3D_ORTHOGRAPHIC 1 + +#define DISP_4D_PERSPECTIVE 0 +#define DISP_4D_ORTHOGRAPHIC 1 + +#define DEF_DISPLAY_MODE "surface" +#define DEF_APPEARANCE "bands" +#define DEF_COLORS "colorwheel" +#define DEF_PROJECTION_3D "perspective" +#define DEF_PROJECTION_4D "perspective" +#define DEF_SPEEDWX "1.1" +#define DEF_SPEEDWY "1.3" +#define DEF_SPEEDWZ "1.5" +#define DEF_SPEEDXY "1.7" +#define DEF_SPEEDXZ "1.9" +#define DEF_SPEEDYZ "2.1" + +#ifdef STANDALONE +# define DEFAULTS "*delay: 25000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_hypertorus 0 +# define release_hypertorus 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#include "gltrackball.h" + + +#ifdef USE_MODULES +ModStruct hypertorus_description = +{"hypertorus", "init_hypertorus", "draw_hypertorus", NULL, + "draw_hypertorus", "change_hypertorus", NULL, &hypertorus_opts, + 25000, 1, 1, 1, 1.0, 4, "", + "Shows a hypertorus rotating in 4d", 0, NULL}; + +#endif + + +static char *mode; +static int display_mode; +static char *appear; +static int appearance; +static int num_spirals; +static char *color_mode; +static int colors; +static char *proj_3d; +static int projection_3d; +static char *proj_4d; +static int projection_4d; +static float speed_wx; +static float speed_wy; +static float speed_wz; +static float speed_xy; +static float speed_xz; +static float speed_yz; + +static const float offset4d[4] = { 0.0, 0.0, 0.0, 2.0 }; +static const float offset3d[4] = { 0.0, 0.0, -2.0, 0.0 }; + + +static XrmOptionDescRec opts[] = +{ + {"-mode", ".displayMode", XrmoptionSepArg, 0 }, + {"-wireframe", ".displayMode", XrmoptionNoArg, "wireframe" }, + {"-surface", ".displayMode", XrmoptionNoArg, "surface" }, + {"-transparent", ".displayMode", XrmoptionNoArg, "transparent" }, + {"-appearance", ".appearance", XrmoptionSepArg, 0 }, + {"-solid", ".appearance", XrmoptionNoArg, "solid" }, + {"-bands", ".appearance", XrmoptionNoArg, "bands" }, + {"-spirals-1", ".appearance", XrmoptionNoArg, "spirals-1" }, + {"-spirals-2", ".appearance", XrmoptionNoArg, "spirals-2" }, + {"-spirals-4", ".appearance", XrmoptionNoArg, "spirals-4" }, + {"-spirals-8", ".appearance", XrmoptionNoArg, "spirals-8" }, + {"-spirals-16", ".appearance", XrmoptionNoArg, "spirals-16" }, + {"-twosided", ".colors", XrmoptionNoArg, "twosided" }, + {"-colorwheel", ".colors", XrmoptionNoArg, "colorwheel" }, + {"-perspective-3d", ".projection3d", XrmoptionNoArg, "perspective" }, + {"-orthographic-3d", ".projection3d", XrmoptionNoArg, "orthographic" }, + {"-perspective-4d", ".projection4d", XrmoptionNoArg, "perspective" }, + {"-orthographic-4d", ".projection4d", XrmoptionNoArg, "orthographic" }, + {"-speed-wx", ".speedwx", XrmoptionSepArg, 0 }, + {"-speed-wy", ".speedwy", XrmoptionSepArg, 0 }, + {"-speed-wz", ".speedwz", XrmoptionSepArg, 0 }, + {"-speed-xy", ".speedxy", XrmoptionSepArg, 0 }, + {"-speed-xz", ".speedxz", XrmoptionSepArg, 0 }, + {"-speed-yz", ".speedyz", XrmoptionSepArg, 0 } +}; + +static argtype vars[] = +{ + { &mode, "displayMode", "DisplayMode", DEF_DISPLAY_MODE, t_String }, + { &appear, "appearance", "Appearance", DEF_APPEARANCE, t_String }, + { &color_mode, "colors", "Colors", DEF_COLORS, t_String }, + { &proj_3d, "projection3d", "Projection3d", DEF_PROJECTION_3D, t_String }, + { &proj_4d, "projection4d", "Projection4d", DEF_PROJECTION_4D, t_String }, + { &speed_wx, "speedwx", "Speedwx", DEF_SPEEDWX, t_Float}, + { &speed_wy, "speedwy", "Speedwy", DEF_SPEEDWY, t_Float}, + { &speed_wz, "speedwz", "Speedwz", DEF_SPEEDWZ, t_Float}, + { &speed_xy, "speedxy", "Speedxy", DEF_SPEEDXY, t_Float}, + { &speed_xz, "speedxz", "Speedxz", DEF_SPEEDXZ, t_Float}, + { &speed_yz, "speedyz", "Speedyz", DEF_SPEEDYZ, t_Float} +}; + +static OptionStruct desc[] = +{ + { "-wireframe", "display the torus as a wireframe mesh" }, + { "-surface", "display the torus as a solid surface" }, + { "-transparent", "display the torus as a transparent surface" }, + { "-solid", "display the torus as a solid object" }, + { "-bands", "display the torus as see-through bands" }, + { "-spirals-{1,2,4,8,16}", "display the torus as see-through spirals" }, + { "-twosided", "display the torus with two colors" }, + { "-colorwheel", "display the torus with a smooth color wheel" }, + { "-perspective-3d", "project the torus perspectively from 3d to 2d" }, + { "-orthographic-3d", "project the torus orthographically from 3d to 2d" }, + { "-perspective-4d", "project the torus perspectively from 4d to 3d" }, + { "-orthographic-4d", "project the torus orthographically from 4d to 3d" }, + { "-speed-wx ", "rotation speed around the wx plane" }, + { "-speed-wy ", "rotation speed around the wy plane" }, + { "-speed-wz ", "rotation speed around the wz plane" }, + { "-speed-xy ", "rotation speed around the xy plane" }, + { "-speed-xz ", "rotation speed around the xz plane" }, + { "-speed-yz ", "rotation speed around the yz plane" } +}; + +ENTRYPOINT ModeSpecOpt hypertorus_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + + +typedef struct { + GLint WindH, WindW; + GLXContext *glx_context; + /* 4D rotation angles */ + float alpha, beta, delta, zeta, eta, theta; + /* Aspect ratio of the current window */ + float aspect; + /* Trackball states */ + trackball_state *trackballs[2]; + int current_trackball; + Bool button_pressed; + + float speed_scale; + +} hypertorusstruct; + +static hypertorusstruct *hyper = (hypertorusstruct *) NULL; + + +/* Add a rotation around the wx-plane to the matrix m. */ +static void rotatewx(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][1]; + v = m[i][2]; + m[i][1] = c*u+s*v; + m[i][2] = -s*u+c*v; + } +} + + +/* Add a rotation around the wy-plane to the matrix m. */ +static void rotatewy(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][2]; + m[i][0] = c*u-s*v; + m[i][2] = s*u+c*v; + } +} + + +/* Add a rotation around the wz-plane to the matrix m. */ +static void rotatewz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][1]; + m[i][0] = c*u+s*v; + m[i][1] = -s*u+c*v; + } +} + + +/* Add a rotation around the xy-plane to the matrix m. */ +static void rotatexy(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][2]; + v = m[i][3]; + m[i][2] = c*u+s*v; + m[i][3] = -s*u+c*v; + } +} + + +/* Add a rotation around the xz-plane to the matrix m. */ +static void rotatexz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][1]; + v = m[i][3]; + m[i][1] = c*u-s*v; + m[i][3] = s*u+c*v; + } +} + + +/* Add a rotation around the yz-plane to the matrix m. */ +static void rotateyz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][3]; + m[i][0] = c*u-s*v; + m[i][3] = s*u+c*v; + } +} + + +/* Compute the rotation matrix m from the rotation angles. */ +static void rotateall(float al, float be, float de, float ze, float et, + float th, float m[4][4]) +{ + int i, j; + + for (i=0; i<4; i++) + for (j=0; j<4; j++) + m[i][j] = (i==j); + rotatewx(m,al); + rotatewy(m,be); + rotatewz(m,de); + rotatexz(m,et); + rotatexy(m,ze); + rotateyz(m,th); +} + + +/* Multiply two rotation matrices: o=m*n. */ +static void mult_rotmat(float m[4][4], float n[4][4], float o[4][4]) +{ + int i, j, k; + + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + o[i][j] = 0.0; + for (k=0; k<4; k++) + o[i][j] += m[i][k]*n[k][j]; + } + } +} + + +/* Compute a 4D rotation matrix from two unit quaternions. */ +static void quats_to_rotmat(float p[4], float q[4], float m[4][4]) +{ + double al, be, de, ze, et, th; + double r00, r01, r02, r12, r22; + + r00 = 1.0-2.0*(p[1]*p[1]+p[2]*p[2]); + r01 = 2.0*(p[0]*p[1]+p[2]*p[3]); + r02 = 2.0*(p[2]*p[0]-p[1]*p[3]); + r12 = 2.0*(p[1]*p[2]+p[0]*p[3]); + r22 = 1.0-2.0*(p[1]*p[1]+p[0]*p[0]); + + al = atan2(-r12,r22)*180.0/M_PI; + be = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + de = atan2(-r01,r00)*180.0/M_PI; + + r00 = 1.0-2.0*(q[1]*q[1]+q[2]*q[2]); + r01 = 2.0*(q[0]*q[1]+q[2]*q[3]); + r02 = 2.0*(q[2]*q[0]-q[1]*q[3]); + r12 = 2.0*(q[1]*q[2]+q[0]*q[3]); + r22 = 1.0-2.0*(q[1]*q[1]+q[0]*q[0]); + + et = atan2(-r12,r22)*180.0/M_PI; + th = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + ze = atan2(-r01,r00)*180.0/M_PI; + + rotateall(al,be,de,ze,et,-th,m); +} + + +/* Compute a fully saturated and bright color based on an angle. */ +static void color(double angle) +{ + int s; + double t; + float color[4]; + + if (colors != COLORS_COLORWHEEL) + return; + + if (angle >= 0.0) + angle = fmod(angle,2*M_PI); + else + angle = fmod(angle,-2*M_PI); + s = floor(angle/(M_PI/3)); + t = angle/(M_PI/3)-s; + if (s >= 6) + s = 0; + switch (s) + { + case 0: + color[0] = 1.0; + color[1] = t; + color[2] = 0.0; + break; + case 1: + color[0] = 1.0-t; + color[1] = 1.0; + color[2] = 0.0; + break; + case 2: + color[0] = 0.0; + color[1] = 1.0; + color[2] = t; + break; + case 3: + color[0] = 0.0; + color[1] = 1.0-t; + color[2] = 1.0; + break; + case 4: + color[0] = t; + color[1] = 0.0; + color[2] = 1.0; + break; + case 5: + color[0] = 1.0; + color[1] = 0.0; + color[2] = 1.0-t; + break; + } + if (display_mode == DISP_TRANSPARENT) + color[3] = 0.7; + else + color[3] = 1.0; + glColor3fv(color); + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,color); +} + + +/* Draw a hypertorus projected into 3D. Note that the spirals appearance + will only work correctly if numu and numv are set to 64 or any higher + power of 2. Similarly, the banded appearance will only work correctly + if numu and numv are divisible by 4. */ +static int hypertorus(ModeInfo *mi, double umin, double umax, double vmin, + double vmax, int numu, int numv) +{ + int polys = 0; + static const GLfloat mat_diff_red[] = { 1.0, 0.0, 0.0, 1.0 }; + static const GLfloat mat_diff_green[] = { 0.0, 1.0, 0.0, 1.0 }; + static const GLfloat mat_diff_trans_red[] = { 1.0, 0.0, 0.0, 0.7 }; + static const GLfloat mat_diff_trans_green[] = { 0.0, 1.0, 0.0, 0.7 }; + float p[3], pu[3], pv[3], n[3], mat[4][4]; + int i, j, k, l, m, b, skew; + double u, v, ur, vr; + double cu, su, cv, sv; + double xx[4], xxu[4], xxv[4], x[4], xu[4], xv[4]; + double r, s, t; + float q1[4], q2[4], r1[4][4], r2[4][4]; + hypertorusstruct *hp = &hyper[MI_SCREEN(mi)]; + + rotateall(hp->alpha,hp->beta,hp->delta,hp->zeta,hp->eta,hp->theta,r1); + + gltrackball_get_quaternion(hp->trackballs[0],q1); + gltrackball_get_quaternion(hp->trackballs[1],q2); + quats_to_rotmat(q1,q2,r2); + + mult_rotmat(r2,r1,mat); + + if (colors != COLORS_COLORWHEEL) + { + glColor3fv(mat_diff_red); + if (display_mode == DISP_TRANSPARENT) + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_green); + } + else + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_green); + } + } + +#if 0 /* #### not working */ +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif +#endif + + skew = num_spirals; + ur = umax-umin; + vr = vmax-vmin; + for (i=0; i= 2)) + continue; + if (display_mode == DISP_WIREFRAME) + glBegin(GL_QUAD_STRIP); + else + glBegin(GL_TRIANGLE_STRIP); + for (j=0; j<=numv; j++) + { + for (k=0; k<=1; k++) + { + l = (i+k); + m = j; + u = ur*l/numu+umin; + v = vr*m/numv+vmin; + if (appearance == APPEARANCE_SPIRALS) + { + u += 4.0*skew/numv*v; + b = ((i/4)&(skew-1))*(numu/(4*skew)); + color(ur*4*b/numu+umin); + } + else + { + color(u); + } + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + xx[0] = cu; + xx[1] = su; + xx[2] = cv; + xx[3] = sv; + xxu[0] = -su; + xxu[1] = cu; + xxu[2] = 0.0; + xxu[3] = 0.0; + xxv[0] = 0.0; + xxv[1] = 0.0; + xxv[2] = -sv; + xxv[3] = cv; + for (l=0; l<4; l++) + { + r = 0.0; + s = 0.0; + t = 0.0; + for (m=0; m<4; m++) + { + r += mat[l][m]*xx[m]; + s += mat[l][m]*xxu[m]; + t += mat[l][m]*xxv[m]; + } + x[l] = r; + xu[l] = s; + xv[l] = t; + } + if (projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + p[l] = (x[l]+offset4d[l])/1.5+offset3d[l]; + pu[l] = xu[l]; + pv[l] = xv[l]; + } + } + else + { + s = x[3]+offset4d[3]; + t = s*s; + for (l=0; l<3; l++) + { + r = x[l]+offset4d[l]; + p[l] = r/s+offset3d[l]; + pu[l] = (xu[l]*s-r*xu[3])/t; + pv[l] = (xv[l]*s-r*xv[3])/t; + } + } + n[0] = pu[1]*pv[2]-pu[2]*pv[1]; + n[1] = pu[2]*pv[0]-pu[0]*pv[2]; + n[2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]); + n[0] /= t; + n[1] /= t; + n[2] /= t; + glNormal3fv(n); + glVertex3fv(p); + polys++; + } + } + glEnd(); + } + polys /= 2; + return polys; +} + + +static void init(ModeInfo *mi) +{ + static const GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; + static const GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; + static const GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + hypertorusstruct *hp = &hyper[MI_SCREEN(mi)]; + + hp->alpha = 0.0; + hp->beta = 0.0; + hp->delta = 0.0; + hp->zeta = 0.0; + hp->eta = 0.0; + hp->theta = 0.0; + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (projection_3d == DISP_3D_PERSPECTIVE) + gluPerspective(60.0,1.0,0.1,100.0); + else + glOrtho(-1.0,1.0,-1.0,1.0,0.1,100.0);; + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + if (display_mode == DISP_WIREFRAME) + display_mode = DISP_SURFACE; +# endif + + if (display_mode == DISP_SURFACE) + { + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LESS); + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,50.0); + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + } + else if (display_mode == DISP_TRANSPARENT) + { + glDisable(GL_DEPTH_TEST); + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,50.0); + glDepthMask(GL_FALSE); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + } + else /* display_mode == DISP_WIREFRAME */ + { + glDisable(GL_DEPTH_TEST); + glShadeModel(GL_FLAT); + glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); + glDisable(GL_LIGHTING); + glDisable(GL_LIGHT0); + glDisable(GL_BLEND); + } +} + + +/* Redisplay the hypertorus. */ +static void display_hypertorus(ModeInfo *mi) +{ + hypertorusstruct *hp = &hyper[MI_SCREEN(mi)]; + + if (!hp->button_pressed) + { + hp->alpha += speed_wx * hp->speed_scale; + if (hp->alpha >= 360.0) + hp->alpha -= 360.0; + hp->beta += speed_wy * hp->speed_scale; + if (hp->beta >= 360.0) + hp->beta -= 360.0; + hp->delta += speed_wz * hp->speed_scale; + if (hp->delta >= 360.0) + hp->delta -= 360.0; + hp->zeta += speed_xy * hp->speed_scale; + if (hp->zeta >= 360.0) + hp->zeta -= 360.0; + hp->eta += speed_xz * hp->speed_scale; + if (hp->eta >= 360.0) + hp->eta -= 360.0; + hp->theta += speed_yz * hp->speed_scale; + if (hp->theta >= 360.0) + hp->theta -= 360.0; + } + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (projection_3d == DISP_3D_ORTHOGRAPHIC) + { + if (hp->aspect >= 1.0) + glOrtho(-hp->aspect,hp->aspect,-1.0,1.0,0.1,100.0); + else + glOrtho(-1.0,1.0,-1.0/hp->aspect,1.0/hp->aspect,0.1,100.0); + } + else + { + gluPerspective(60.0,hp->aspect,0.1,100.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + mi->polygon_count = hypertorus(mi,0.0,2.0*M_PI,0.0,2.0*M_PI,64,64); +} + + +ENTRYPOINT void reshape_hypertorus(ModeInfo *mi, int width, int height) +{ + hypertorusstruct *hp = &hyper[MI_SCREEN(mi)]; + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + hp->WindW = (GLint)width; + hp->WindH = (GLint)height; + glViewport(0,y,width,height); + hp->aspect = h; +} + + +ENTRYPOINT Bool hypertorus_handle_event(ModeInfo *mi, XEvent *event) +{ + hypertorusstruct *hp = &hyper[MI_SCREEN(mi)]; + KeySym sym = 0; + char c = 0; + + if (event->xany.type == KeyPress || event->xany.type == KeyRelease) + XLookupString (&event->xkey, &c, 1, &sym, 0); + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + hp->button_pressed = True; + gltrackball_start(hp->trackballs[hp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + hp->button_pressed = False; + return True; + } + else if (event->xany.type == KeyPress) + { + if (sym == XK_Shift_L || sym == XK_Shift_R) + { + hp->current_trackball = 1; + if (hp->button_pressed) + gltrackball_start(hp->trackballs[hp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + } + else if (event->xany.type == KeyRelease) + { + if (sym == XK_Shift_L || sym == XK_Shift_R) + { + hp->current_trackball = 0; + if (hp->button_pressed) + gltrackball_start(hp->trackballs[hp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + } + else if (event->xany.type == MotionNotify && hp->button_pressed) + { + gltrackball_track(hp->trackballs[hp->current_trackball], + event->xmotion.x, event->xmotion.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + + return False; +} + + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Xlock hooks. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +/* + *----------------------------------------------------------------------------- + * Initialize hypertorus. Called each time the window changes. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void init_hypertorus(ModeInfo *mi) +{ + hypertorusstruct *hp; + + MI_INIT(mi, hyper); + hp = &hyper[MI_SCREEN(mi)]; + + + hp->trackballs[0] = gltrackball_init(True); + hp->trackballs[1] = gltrackball_init(True); + hp->current_trackball = 0; + hp->button_pressed = False; + + /* Set the display mode. */ + if (!strcasecmp(mode,"wireframe") || !strcasecmp(mode,"0")) + { + display_mode = DISP_WIREFRAME; + } + else if (!strcasecmp(mode,"surface") || !strcasecmp(mode,"1")) + { + display_mode = DISP_SURFACE; + } + else if (!strcasecmp(mode,"transparent") || !strcasecmp(mode,"2")) + { + display_mode = DISP_TRANSPARENT; + } + else + { + display_mode = DISP_SURFACE; + } + + /* Set the appearance. */ + if (!strcasecmp(appear,"solid") || !strcasecmp(appear,"0")) + { + appearance = APPEARANCE_SOLID; + } + else if (!strcasecmp(appear,"bands") || !strcasecmp(appear,"1")) + { + appearance = APPEARANCE_BANDS; + num_spirals = 0; + } + else if (!strcasecmp(appear,"spirals-1") || !strcasecmp(appear,"3")) + { + appearance = APPEARANCE_SPIRALS; + num_spirals = 1; + } + else if (!strcasecmp(appear,"spirals-2") || !strcasecmp(appear,"4")) + { + appearance = APPEARANCE_SPIRALS; + num_spirals = 2; + } + else if (!strcasecmp(appear,"spirals-4") || !strcasecmp(appear,"5")) + { + appearance = APPEARANCE_SPIRALS; + num_spirals = 4; + } + else if (!strcasecmp(appear,"spirals-8") || !strcasecmp(appear,"6")) + { + appearance = APPEARANCE_SPIRALS; + num_spirals = 8; + } + else if (!strcasecmp(appear,"spirals-16") || !strcasecmp(appear,"7")) + { + appearance = APPEARANCE_SPIRALS; + num_spirals = 16; + } + else + { + appearance = APPEARANCE_BANDS; + num_spirals = 0; + } + + /* Set the color mode. */ + if (!strcasecmp(color_mode,"twosided")) + { + colors = COLORS_TWOSIDED; + } + else if (!strcasecmp(color_mode,"colorwheel")) + { + colors = COLORS_COLORWHEEL; + } + else + { + colors = COLORS_COLORWHEEL; + } + + /* Set the 3d projection mode. */ + if (!strcasecmp(proj_3d,"perspective") || !strcasecmp(proj_3d,"0")) + { + projection_3d = DISP_3D_PERSPECTIVE; + } + else if (!strcasecmp(proj_3d,"orthographic") || !strcasecmp(proj_3d,"1")) + { + projection_3d = DISP_3D_ORTHOGRAPHIC; + } + else + { + projection_3d = DISP_3D_PERSPECTIVE; + } + + /* Set the 4d projection mode. */ + if (!strcasecmp(proj_4d,"perspective") || !strcasecmp(proj_4d,"0")) + { + projection_4d = DISP_4D_PERSPECTIVE; + } + else if (!strcasecmp(proj_4d,"orthographic") || !strcasecmp(proj_4d,"1")) + { + projection_4d = DISP_4D_ORTHOGRAPHIC; + } + else + { + projection_4d = DISP_4D_PERSPECTIVE; + } + + /* make multiple screens rotate at slightly different rates. */ + hp->speed_scale = 0.9 + frand(0.3); + + if ((hp->glx_context = init_GL(mi)) != NULL) + { + reshape_hypertorus(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + init(mi); + } + else + { + MI_CLEARWINDOW(mi); + } +} + +/* + *----------------------------------------------------------------------------- + * Called by the mainline code periodically to update the display. + *----------------------------------------------------------------------------- + */ +ENTRYPOINT void draw_hypertorus(ModeInfo *mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + hypertorusstruct *hp; + + if (hyper == NULL) + return; + hp = &hyper[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + if (!hp->glx_context) + return; + + glXMakeCurrent(display,window,*(hp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + + display_hypertorus(mi); + + if (MI_IS_FPS(mi)) + do_fps (mi); + + glFlush(); + + glXSwapBuffers(display,window); +} + + +#ifndef STANDALONE +ENTRYPOINT void change_hypertorus(ModeInfo *mi) +{ + hypertorusstruct *hp = &hyper[MI_SCREEN(mi)]; + + if (!hp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(hp->glx_context)); + init(mi); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("Hypertorus", hypertorus) + +#endif /* USE_GL */ diff --git a/hacks/glx/hypertorus.man b/hacks/glx/hypertorus.man new file mode 100644 index 0000000..8c7075f --- /dev/null +++ b/hacks/glx/hypertorus.man @@ -0,0 +1,188 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +hypertorus - Draws a hypertorus that rotates in 4d +.SH SYNOPSIS +.B hypertorus +[\-display \fIhost:display.screen\fP] +[\-install] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fIusecs\fP] +[\-fps] +[\-wireframe] +[\-surface] +[\-transparent] +[\-solid] +[\-bands] +[\-spirals-{1,2,4,8,16}] +[\-twosided] +[\-colorwheel] +[\-perspective-3d] +[\-orthographic-3d] +[\-perspective-4d] +[\-orthographic-4d] +[\-speed-wx \fIfloat\fP] +[\-speed-wy \fIfloat\fP] +[\-speed-wz \fIfloat\fP] +[\-speed-xy \fIfloat\fP] +[\-speed-xz \fIfloat\fP] +[\-speed-yz \fIfloat\fP] +.SH DESCRIPTION +The \fIhypertorus\fP program shows the Clifford torus as it rotates in +4d. The Clifford torus is a torus lies on the "surface" of the +hypersphere in 4d. The program projects the 4d torus to 3d using +either a perspective or an orthographic projection. Of the two +alternatives, the perspective projection looks much more appealing. +In orthographic projections the torus degenerates into a doubly +covered cylinder for some angles. The projected 3d torus can then be +projected to the screen either perspectively or orthographically. +There are three display modes for the torus: mesh (wireframe), solid, +or transparent. Furthermore, the appearance of the torus can be as a +solid object or as a set of see-through bands or see-through spirals. +Finally, the colors with with the torus is drawn can be set to either +two-sided or to a color wheel. In the first case, the torus is drawn +with red on the outside and green on the inside. This mode enables +you to see that the torus turns inside-out as it rotates in 4d. The +second mode draws the torus with a fully saturated color wheel. This +gives a very nice effect when combined with the see-through bands or +see-through spirals mode. The rotation speed for each of the six +planes around which the torus rotates can be chosen. This program is +very much inspired by Thomas Banchoff's book "Beyond the Third +Dimension: Geometry, Computer Graphics, and Higher Dimensions", +Scientific American Library, 1990. +.SH OPTIONS +.I hypertorus +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual +class, or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +How much of a delay should be introduced between steps of the +animation. Default 25000, or 1/40th second. +.PP +The following three options are mutually exclusive. They determine +how the torus is displayed. +.TP 8 +.B \-wireframe +Display the torus as a wireframe mesh. +.TP 8 +.B \-surface +Display the torus as a solid surface (default). +.TP 8 +.B \-transparent +Display the torus as a transparent surface. +.PP +The following seven options are mutually exclusive. They determine the +appearance of the torus. +.TP 8 +.B \-solid +Display the torus as a solid object. +.TP 8 +.B \-bands +Display the torus as see-through bands (default). +.TP 8 +.B \-spirals-1, \-spirals-2, \-spirals-4, \-spirals-8, \-spirals-16 +Display the torus as see-through spirals with the indicated number of +spirals. +.PP +The following two options are mutually exclusive. They determine how +to color the torus. +.TP 8 +.B \-twosided +Display the torus with two colors: red on the outside and green on +the inside. +.TP 8 +.B \-colorwheel +Display the torus with a fully saturated color wheel (default). If +the torus is displayed as see-through bands each band will be +displayed with a different color. Likewise, if the torus is displayed +as see-through spirals each spiral will receive a different color. +.PP +The following two options are mutually exclusive. They determine how +the torus is projected from 3d to 2d (i.e., to the screen). +.TP 8 +.B \-perspective-3d +Project the torus from 3d to 2d using a perspective projection +(default). +.TP 8 +.B \-orthographic-3d +Project the torus from 3d to 2d using an orthographic projection. +.PP +The following two options are mutually exclusive. They determine how +the torus is projected from 4d to 3d. +.TP 8 +.B \-perspective-4d +Project the torus from 4d to 3d using a perspective projection +(default). +.TP 8 +.B \-orthographic-4d +Project the torus from 4d to 3d using an orthographic projection. +.PP +The following six options determine the rotation speed of the torus +around the six possible hyperplanes. The rotation speed is measured +in degrees per frame. The speeds should be set to relatively small +values, e.g., less than 4 in magnitude. +.TP 8 +.B \-speed-wx \fIfloat\fP +Rotation speed around the wx plane (default: 1.1). +.TP 8 +.B \-speed-wy \fIfloat\fP +Rotation speed around the wy plane (default: 1.3). +.TP 8 +.B \-speed-wz \fIfloat\fP +Rotation speed around the wz plane (default: 1.5). +.TP 8 +.B \-speed-xy \fIfloat\fP +Rotation speed around the xy plane (default: 1.7). +.TP 8 +.B \-speed-xz \fIfloat\fP +Rotation speed around the xz plane (default: 1.9). +.TP 8 +.B \-speed-yz \fIfloat\fP +Rotation speed around the yz plane (default: 2.1). +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH INTERACTION +If you run this program in standalone mode you can rotate the +hypertorus by dragging the mouse while pressing the left mouse button. +This rotates the hypertorus in 3D, i.e., around the wx, wy, and wz +planes. If you press the shift key while dragging the mouse with the +left button pressed the hypertorus is rotated in 4D, i.e., around the +xy, xz, and yz planes. To examine the hypertorus at your leisure, it +is best to set all speeds to 0. Otherwise, the hypertorus will rotate +while the left mouse button is not pressed. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003-2005 by Carsten Steger. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Carsten Steger , 28-sep-2005. diff --git a/hacks/glx/hypnowheel.c b/hacks/glx/hypnowheel.c new file mode 100644 index 0000000..0602e6e --- /dev/null +++ b/hacks/glx/hypnowheel.c @@ -0,0 +1,322 @@ +/* hypnowheel, Copyright (c) 2008 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Draws overlapping spirals, where the tightness of the spirals changes. + * Nice settings: + * + * -layers 7 -wander + * -count 3 -layers 50 + * -twistiness 0.2 -layers 20 + * -count 3 -layers 2 -speed 20 -twist 10 -wander + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*count: 13 \n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_hypnowheel 0 +# define release_hypnowheel 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_WANDER "False" +#define DEF_SYMMETRIC "False" +#define DEF_SPEED "1.0" +#define DEF_TWISTINESS "4.0" +#define DEF_LAYERS "4" + +typedef struct { + int color; + GLfloat twist; + GLfloat alpha; + rotator *rot; +} disc; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + disc *discs; + int ncolors; + XColor *colors; + +} hypnowheel_configuration; + +static hypnowheel_configuration *bps = NULL; + +static GLfloat speed; +static GLfloat twistiness; +static GLint nlayers; +static Bool do_wander; +static Bool do_symmetric; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-twistiness", ".twistiness", XrmoptionSepArg, 0 }, + { "-layers", ".layers", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-symmetric", ".symmetric", XrmoptionNoArg, "True" }, + { "+symmetric", ".symmetric", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&do_symmetric, "symmetric", "Symmetric", DEF_SYMMETRIC, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&twistiness, "twistiness", "Twistiness", DEF_TWISTINESS, t_Float}, + {&nlayers, "layers", "Layers", DEF_LAYERS, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt hypnowheel_opts = { + countof(opts), opts, countof(vars), vars, NULL}; + + +static void +draw_spiral (ModeInfo *mi, disc *d) +{ + int wire = MI_IS_WIREFRAME(mi); + hypnowheel_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat rr = 0.5; + int n = MI_COUNT(mi); + int steps = n * (wire ? 3 : (n < 5 ? 60 : n < 10 ? 20 : 10)); + GLfloat dth = M_PI*2 / n; + GLfloat dr = rr / steps; + GLfloat th; + GLfloat twist = d->twist; + GLfloat dtwist = M_PI * 2 * twist / steps; + double cscale = 65536.0; + + if (nlayers > 3 && !wire) + cscale *= (nlayers-2); /* don't wash out to white */ + + glColor4f (bp->colors[d->color].red / cscale, + bp->colors[d->color].green / cscale, + bp->colors[d->color].blue / cscale, + d->alpha); + for (th = 0; th < M_PI*2; th += dth) + { + GLfloat th1 = th; + GLfloat r; + glBegin (wire ? GL_LINE_STRIP : GL_QUAD_STRIP); + for (r = 0; r <= rr; r += dr) + { + GLfloat th2 = th1 + dth/2 + dtwist; + th1 += dtwist; + glVertex3f (r * cos(th1), r * sin(th1), 0); + if (! wire) + glVertex3f (r * cos(th2), r * sin(th2), 0); + mi->polygon_count++; + } + glEnd(); + } +} + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_hypnowheel (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 3) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT void +init_hypnowheel (ModeInfo *mi) +{ + hypnowheel_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_hypnowheel (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (! bp->rot) + bp->rot = make_rotator (0, 0, 0, 0, speed * 0.0025, False); + + bp->ncolors = 1024; + if (!bp->colors) + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + + if (MI_COUNT(mi) < 2) MI_COUNT(mi) = 2; + if (nlayers < 1) nlayers = 1; + if (!bp->discs) + bp->discs = (disc *) calloc (nlayers, sizeof (disc)); + + for (i = 0; i < nlayers; i++) + { + double spin_speed = speed * 0.2; + double wander_speed = speed * 0.0012; + double spin_accel = 0.2; + + bp->discs[i].twist = 0; + bp->discs[i].alpha = 1; + bp->discs[i].color = i * bp->ncolors / nlayers; + + spin_speed += frand (spin_speed / 5); + wander_speed += frand (wander_speed * 3); + + if (!bp->discs[i].rot) + bp->discs[i].rot = make_rotator (spin_speed, spin_speed, spin_speed, + spin_accel, + (do_wander ? wander_speed : 0), + True); + } + + glDisable (GL_LIGHTING); + glDisable (GL_DEPTH_TEST); + glDepthMask (GL_FALSE); + glDisable (GL_CULL_FACE); + + if (! wire) + { + glEnable (GL_BLEND); + glBlendFunc (GL_ONE, GL_ONE); + } +} + + +ENTRYPOINT void +draw_hypnowheel (ModeInfo *mi) +{ + hypnowheel_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, True); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + 0); + + get_rotation (bp->rot, &x, &y, &z, True); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glScalef (45, 45, 45); + + for (i = 0; i < nlayers; i++) + { + disc *d = &bp->discs[i]; + double x, y, z; + rotator *rot = (do_symmetric ? bp->discs[(i & ~0x1)].rot : d->rot); + Bool tick = (!do_symmetric || i == 0); + + glPushMatrix(); + + d->color++; + if (d->color >= bp->ncolors) + d->color = 0; + + get_position (rot, &x, &y, &z, tick); + x -= 0.5; + y -= 0.5; + x *= 0.1; + y *= 0.1; + + glTranslatef (x, y, 0); + d->twist = (z * twistiness * + ((i & 1) ? 1 : -1)); + + get_rotation (rot, &x, &y, &z, tick); + + glRotatef (360 * z, 0, 0, 1); /* rotation of this disc */ + + draw_spiral (mi, &bp->discs[i]); + glPopMatrix(); + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT Bool +hypnowheel_handle_event (ModeInfo *mi, XEvent *event) +{ + if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + init_hypnowheel (mi); + return True; + } + return False; +} + + +XSCREENSAVER_MODULE ("Hypnowheel", hypnowheel) + +#endif /* USE_GL */ diff --git a/hacks/glx/hypnowheel.man b/hacks/glx/hypnowheel.man new file mode 100644 index 0000000..233c945 --- /dev/null +++ b/hacks/glx/hypnowheel.man @@ -0,0 +1,80 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +hypnowheel - draws overlapping, translucent spiral patterns +.SH SYNOPSIS +.B hypnowheel +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fIint\fP] +[\-layers \fIint\fP] +[\-count \fIint\fP] +[\-twistiness \fIfloat\fP] +[\-speed \fIfloat\fP] +[\-wander\fP] +[\-symmetric\fP] +[\-fps] +.SH DESCRIPTION +Draws a series of overlapping, translucent spiral patterns. +The tightness of their spirals fluctuates in and out. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fIint\fP +Delay between frames, in microseconds. Default 20000. +.TP 8 +.B \-layers \fIint\fP +How many different spirals to draw at once. Default 4. +.TP 8 +.B \-count \fIint\fP +How many arms each spiral should have. Default 11. +.TP 8 +.B \-twistiness \fIfloat\fP +How tightly wound the spirals can become, measured in rotations. +Default 4.0 (four times around). +.TP 8 +.B \-speed \fIratio\fP +Less than 1 for slower, greater than 1 for faster. Default 1. +.TP 8 +.B \-wander +If specified, then the centers of the spirals will wander around, +rather than them all having the same origin. +.TP 8 +.B \-symmetric +If specified, then each pair of left-wrapping and right-wrapping +spirals will be mirror images of each other. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2008 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/involute.c b/hacks/glx/involute.c new file mode 100644 index 0000000..5b49bf0 --- /dev/null +++ b/hacks/glx/involute.c @@ -0,0 +1,998 @@ +/* involute, Copyright (c) 2004-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Utilities for rendering OpenGL gears with involute teeth. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include "screenhackI.h" + +#ifndef HAVE_JWXYZ +# include +# include +#endif + +#ifdef HAVE_ANDROID +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "involute.h" +#include "normals.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + + +/* For debugging: if true then in wireframe, do not abbreviate. */ +static Bool wire_all_p = False; +static Bool show_normals_p = False; + + +/* Draws an uncapped tube of the given radius extending from top to bottom, + with faces pointing either in or out. + */ +static int +draw_ring (int segments, + GLfloat r, GLfloat top, GLfloat bottom, GLfloat slope, + Bool in_p, Bool wire_p) +{ + int i; + int polys = 0; + GLfloat width = M_PI * 2 / segments; + + GLfloat s1 = 1 + ((bottom-top) * slope / 2); + GLfloat s2 = 1 - ((bottom-top) * slope / 2); + + if (top != bottom) + { + glFrontFace (in_p ? GL_CCW : GL_CW); + glBegin (wire_p ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < segments + (wire_p ? 0 : 1); i++) + { + GLfloat th = i * width; + GLfloat cth = cos(th); + GLfloat sth = sin(th); + if (in_p) + glNormal3f (-cth, -sth, 0); + else + glNormal3f (cth, sth, 0); + glVertex3f (s1 * cth * r, s1 * sth * r, top); + glVertex3f (s2 * cth * r, s2 * sth * r, bottom); + } + polys += segments; + glEnd(); + } + + if (wire_p) + { + glBegin (GL_LINE_LOOP); + for (i = 0; i < segments; i++) + { + GLfloat th = i * width; + glVertex3f (cos(th) * r, sin(th) * r, top); + } + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < segments; i++) + { + GLfloat th = i * width; + glVertex3f (cos(th) * r, sin(th) * r, bottom); + } + glEnd(); + } + + return polys; +} + + +/* Draws a donut-shaped disc between the given radii, + with faces pointing either up or down. + The first radius may be 0, in which case, a filled disc is drawn. + */ +static int +draw_disc (int segments, + GLfloat ra, GLfloat rb, GLfloat z, + Bool up_p, Bool wire_p) +{ + int i; + int polys = 0; + GLfloat width = M_PI * 2 / segments; + + if (ra < 0) abort(); + if (rb <= 0) abort(); + + if (ra == 0) + glFrontFace (up_p ? GL_CW : GL_CCW); + else + glFrontFace (up_p ? GL_CCW : GL_CW); + + if (ra == 0) + glBegin (wire_p ? GL_LINES : GL_TRIANGLE_FAN); + else + glBegin (wire_p ? GL_LINES : GL_QUAD_STRIP); + + glNormal3f (0, 0, (up_p ? -1 : 1)); + + if (ra == 0 && !wire_p) + glVertex3f (0, 0, z); + + for (i = 0; i < segments + (wire_p ? 0 : 1); i++) + { + GLfloat th = i * width; + GLfloat cth = cos(th); + GLfloat sth = sin(th); + if (wire_p || ra != 0) + glVertex3f (cth * ra, sth * ra, z); + glVertex3f (cth * rb, sth * rb, z); + } + polys += segments; + glEnd(); + return polys; +} + + +/* Draws N thick radial lines between the given radii, + with faces pointing either up or down. + */ +static int +draw_spokes (int n, GLfloat thickness, int segments, + GLfloat ra, GLfloat rb, GLfloat z1, GLfloat z2, GLfloat slope, + Bool wire_p) +{ + int i; + int polys = 0; + GLfloat width; + int segments2 = 0; + int insegs, outsegs; + int tick; + int state; + + GLfloat s1 = 1 + ((z2-z1) * slope / 2); + GLfloat s2 = 1 - ((z2-z1) * slope / 2); + + if (ra <= 0 || rb <= 0) abort(); + + segments *= 3; + + while (segments2 < segments) /* need a multiple of N >= segments */ + segments2 += n; /* (yes, this is a moronic way to find that) */ + + insegs = ((float) (segments2 / n) + 0.5) / thickness; + outsegs = (segments2 / n) - insegs; + if (insegs <= 0) insegs = 1; + if (outsegs <= 0) outsegs = 1; + + segments2 = (insegs + outsegs) * n; + width = M_PI * 2 / segments2; + + tick = 0; + state = 0; + for (i = 0; i < segments2; i++, tick++) + { + GLfloat th1 = i * width; + GLfloat th2 = th1 + width; + GLfloat cth1 = cos(th1); + GLfloat sth1 = sin(th1); + GLfloat cth2 = cos(th2); + GLfloat sth2 = sin(th2); + GLfloat orb = rb; + + int changed = (i == 0); + + if (state == 0 && tick == insegs) + tick = 0, state = 1, changed = 1; + else if (state == 1 && tick == outsegs) + tick = 0, state = 0, changed = 1; + + if ((state == 1 || /* in */ + (state == 0 && changed)) && + (!wire_p || wire_all_p)) + { + /* top */ + glFrontFace (GL_CCW); + glBegin (wire_p ? GL_LINES : GL_QUADS); + glNormal3f (0, 0, -1); + glVertex3f (s1 * cth1 * ra, s1 * sth1 * ra, z1); + glVertex3f (s1 * cth1 * rb, s1 * sth1 * rb, z1); + glVertex3f (s1 * cth2 * rb, s1 * sth2 * rb, z1); + glVertex3f (s1 * cth2 * ra, s1 * sth2 * ra, z1); + polys++; + glEnd(); + + /* bottom */ + glFrontFace (GL_CW); + glBegin (wire_p ? GL_LINES : GL_QUADS); + glNormal3f (0, 0, 1); + glVertex3f (s2 * cth1 * ra, s2 * sth1 * ra, z2); + glVertex3f (s2 * cth1 * rb, s2 * sth1 * rb, z2); + glVertex3f (s2 * cth2 * rb, s2 * sth2 * rb, z2); + glVertex3f (s2 * cth2 * ra, s2 * sth2 * ra, z2); + polys++; + glEnd(); + } + + if (state == 1 && changed) /* entering "in" state */ + { + /* left */ + glFrontFace (GL_CW); + glBegin (wire_p ? GL_LINES : GL_QUADS); + do_normal (s1 * cth1 * rb, s1 * sth1 * rb, z1, + s1 * cth1 * ra, s1 * sth1 * ra, z1, + s2 * cth1 * rb, s2 * sth1 * rb, z2); + glVertex3f (s1 * cth1 * ra, s1 * sth1 * ra, z1); + glVertex3f (s1 * cth1 * rb, s1 * sth1 * rb, z1); + glVertex3f (s2 * cth1 * rb, s2 * sth1 * rb, z2); + glVertex3f (s2 * cth1 * ra, s2 * sth1 * ra, z2); + polys++; + glEnd(); + } + + if (state == 0 && changed) /* entering "out" state */ + { + /* right */ + glFrontFace (GL_CCW); + glBegin (wire_p ? GL_LINES : GL_QUADS); + do_normal (s1 * cth2 * ra, s1 * sth2 * ra, z1, + s1 * cth2 * rb, s1 * sth2 * rb, z1, + s2 * cth2 * rb, s2 * sth2 * rb, z2); + glVertex3f (s1 * cth2 * ra, s1 * sth2 * ra, z1); + glVertex3f (s1 * cth2 * rb, s1 * sth2 * rb, z1); + glVertex3f (s2 * cth2 * rb, s2 * sth2 * rb, z2); + glVertex3f (s2 * cth2 * ra, s2 * sth2 * ra, z2); + polys++; + glEnd(); + } + + rb = orb; + } + return polys; +} + + +/* Draws some bumps (embedded cylinders) on the gear. + */ +static int +draw_gear_nubs (gear *g, Bool wire_p) +{ + int polys = 0; + int i; + int steps = (g->size < INVOLUTE_LARGE ? 5 : 20); + double r, size, height; + GLfloat *cc; + int which; + GLfloat width, off; + + if (! g->nubs) return 0; + + which = involute_biggest_ring (g, &r, &size, &height); + size /= 5; + height *= 0.7; + + cc = (which == 1 ? g->color : g->color2); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cc); + + if (g->inverted_p) + r = g->r + size + g->tooth_h; + + width = M_PI * 2 / g->nubs; + off = M_PI / (g->nteeth * 2); /* align first nub with a tooth */ + + for (i = 0; i < g->nubs; i++) + { + GLfloat th = (i * width) + off; + glPushMatrix(); + + glRotatef (th * 180 / M_PI, 0, 0, 1); + glTranslatef (r, 0, 0); + + if (g->inverted_p) /* nubs go on the outside rim */ + { + size = g->thickness / 3; + height = (g->r - g->inner_r)/2; + glTranslatef (height, 0, 0); + glRotatef (90, 0, 1, 0); + } + + if (wire_p && !wire_all_p) + polys += draw_ring ((g->size >= INVOLUTE_LARGE ? steps/2 : steps), + size, 0, 0, 0, False, wire_p); + else + { + polys += draw_disc (steps, 0, size, -height, True, wire_p); + polys += draw_disc (steps, 0, size, height, False, wire_p); + polys += draw_ring (steps, size, -height, height, 0, False, wire_p); + } + glPopMatrix(); + } + return polys; +} + + + +/* Draws a much simpler representation of a gear. + Returns the number of polygons. + */ +int +draw_involute_schematic (gear *g, Bool wire_p) +{ + int polys = 0; + int i; + GLfloat width = M_PI * 2 / g->nteeth; + + if (!wire_p) glDisable(GL_LIGHTING); + glColor3f (g->color[0] * 0.6, g->color[1] * 0.6, g->color[2] * 0.6); + + glBegin (GL_LINES); + for (i = 0; i < g->nteeth; i++) + { + GLfloat th = (i * width) + (width/4); + glVertex3f (0, 0, -g->thickness/2); + glVertex3f (cos(th) * g->r, sin(th) * g->r, -g->thickness/2); + } + polys += g->nteeth; + glEnd(); + + glBegin (GL_LINE_LOOP); + for (i = 0; i < g->nteeth; i++) + { + GLfloat th = (i * width) + (width/4); + glVertex3f (cos(th) * g->r, sin(th) * g->r, -g->thickness/2); + } + polys += g->nteeth; + glEnd(); + + if (!wire_p) glEnable(GL_LIGHTING); + return polys; +} + + +/* Renders all the interior (non-toothy) parts of a gear: + the discs, axles, etc. + */ +static int +draw_gear_interior (gear *g, Bool wire_p) +{ + int polys = 0; + + int steps = g->nteeth * 2; + if (steps < 10) steps = 10; + if ((wire_p && !wire_all_p) || g->size < INVOLUTE_LARGE) steps /= 2; + if (g->size < INVOLUTE_LARGE && steps > 16) steps = 16; + + /* ring 1 (facing in) is done in draw_gear_teeth */ + + /* ring 2 (facing in) and disc 2 + */ + if (g->inner_r2) + { + GLfloat ra = g->inner_r * 1.04; /* slightly larger than inner_r */ + GLfloat rb = g->inner_r2; /* since the points don't line up */ + GLfloat za = -g->thickness2/2; + GLfloat zb = g->thickness2/2; + GLfloat s1 = 1 + (g->thickness2 * g->tooth_slope / 2); + GLfloat s2 = 1 - (g->thickness2 * g->tooth_slope / 2); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, g->color2); + + if ((g->coax_p != 1 && !g->inner_r3) || + (wire_p && wire_all_p)) + polys += /* ring facing in */ + draw_ring (steps, rb, za, zb, g->tooth_slope, True, wire_p); + + if (wire_p && wire_all_p) + polys += /* ring facing in */ + draw_ring (steps, ra, za, zb, g->tooth_slope, True, wire_p); + + if (g->spokes) + polys += draw_spokes (g->spokes, g->spoke_thickness, + steps, ra, rb, za, zb, g->tooth_slope, wire_p); + else if (!wire_p || wire_all_p) + { + polys += /* top plate */ + draw_disc (steps, s1*ra, s1*rb, za, True, wire_p); + polys += /* bottom plate */ + draw_disc (steps, s2*ra, s2*rb, zb, False, wire_p); + } + } + + /* ring 3 (facing in and out) and disc 3 + */ + if (g->inner_r3) + { + GLfloat ra = g->inner_r2; + GLfloat rb = g->inner_r3; + GLfloat za = -g->thickness3/2; + GLfloat zb = g->thickness3/2; + GLfloat s1 = 1 + (g->thickness3 * g->tooth_slope / 2); + GLfloat s2 = 1 - (g->thickness3 * g->tooth_slope / 2); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, g->color); + + polys += /* ring facing out */ + draw_ring (steps, ra, za, zb, g->tooth_slope, False, wire_p); + + if (g->coax_p != 1 || (wire_p && wire_all_p)) + polys += /* ring facing in */ + draw_ring (steps, rb, za, zb, g->tooth_slope, True, wire_p); + + if (!wire_p || wire_all_p) + { + polys += /* top plate */ + draw_disc (steps, s1*ra, s1*rb, za, True, wire_p); + polys += /* bottom plate */ + draw_disc (steps, s2*ra, s2*rb, zb, False, wire_p); + } + } + + /* axle tube + */ + if (g->coax_p == 1) + { + GLfloat cap_height = g->coax_thickness/3; + + GLfloat ra = (g->inner_r3 ? g->inner_r3 : + g->inner_r2 ? g->inner_r2 : + g->inner_r); + GLfloat za = -(g->thickness/2 + cap_height); + GLfloat zb = g->coax_thickness/2 + g->coax_displacement + cap_height; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, g->color); + + if (wire_p && !wire_all_p) steps /= 2; + + polys += + draw_ring (steps, ra, za, zb, g->tooth_slope, False, wire_p); + + if (!wire_p || wire_all_p) + { + polys += + draw_disc (steps, 0, ra, za, True, wire_p); /* top plate */ + polys += + draw_disc (steps, 0, ra, zb, False, wire_p); /* bottom plate */ + } + } + return polys; +} + + +/* gear_teeth_geometry computes the vertices and normals of the teeth + of a gear. This is the heavy lifting: there are a ton of polygons + around the perimiter of a gear, and the normals are difficult (not + radial or right angles.) + + It would be nice if we could cache this, but the numbers are + different for essentially every gear: + + - Every gear has a different inner_r, so the vertices of the + inner ring (and thus, the triangle fans on the top and bottom + faces) are different in a non-scalable way. + + - If the ratio between tooth_w and tooth_h changes, the normals + on the outside edges of the teeth are invalid (this can happen + every time we start a new train.) + + So instead, we rely on OpenGL display lists to do the cacheing for + us -- we only compute all these normals once per gear, instead of + once per gear per frame. + */ + +typedef struct { + int npoints; + XYZ *points; + XYZ *fnormals; /* face normals */ + XYZ *pnormals; /* point normals */ +} tooth_face; + + +static void +tooth_normals (tooth_face *f, GLfloat tooth_slope) +{ + int i; + + /* Compute the face normals for each facet. */ + for (i = 0; i < f->npoints; i++) + { + XYZ p1, p2, p3; + int a = i; + int b = (i == f->npoints-1 ? 0 : i+1); + p1 = f->points[a]; + p2 = f->points[b]; + p3 = p1; + p3.x -= (p3.x * tooth_slope); + p3.y -= (p3.y * tooth_slope); + p3.z++; + f->fnormals[i] = calc_normal (p1, p2, p3); + } + + /* From the face normals, compute the vertex normals + (by averaging the normals of adjascent faces.) + */ + for (i = 0; i < f->npoints; i++) + { + int a = (i == 0 ? f->npoints-1 : i-1); + int b = i; + XYZ n1 = f->fnormals[a]; /* normal of [i-1 - i] face */ + XYZ n2 = f->fnormals[b]; /* normal of [i - i+1] face */ + f->pnormals[i].x = (n1.x + n2.x) / 2; + f->pnormals[i].y = (n1.y + n2.y) / 2; + f->pnormals[i].z = (n1.z + n2.z) / 2; + } +} + + +static void +gear_teeth_geometry (gear *g, + tooth_face *orim, /* outer rim (the teeth) */ + tooth_face *irim) /* inner rim (the hole) */ +{ + int i; + int ppt = 20; /* max points per tooth */ + GLfloat width = M_PI * 2 / g->nteeth; + GLfloat rh = g->tooth_h; + GLfloat tw = width; + + /* Approximate shape of an "involute" gear tooth. + + (TH) + th0 th2 th4 th6 th8 t10 t12 t14 th16 th18 th20 + : : : : : : : : : : : + : : : : : : : : : : : + r0 ........:..:..:...___________...:..:..:......:......:.. + : : : /: : :\ : : : : : + : : : / : : : \ : : : : : + : : :/ : : : \: : : : : + r2 ........:.....@...:....:....:...@..:..:......:......:.. + : : @: : : : :@ : : : : + (R) ...........:...@.:...:....:....:...:.@..........:......:...... + : :@ : : : : : @: : : : + r4 ........:..@..:...:....:....:...:..@:........:......:.. + : /: : : : : : :\ : : : + :/ : : : : : : : \: : : / + r6 ......__/..:..:...:....:....:...:..:..\______________/ + : : : : : : : : : : : + | : : : : : : : | : : + : : : : : : : : : : : + | : : : : : : : | : : + r8 ......__:_____________________________:________________ + */ + + GLfloat r[30]; + GLfloat th[30]; + GLfloat R = g->r; + + r[0] = R + (rh * 0.50); + r[1] = R + (rh * 0.40); + r[2] = R + (rh * 0.25); + r[3] = R + (rh * 0.05); + r[4] = R - (r[2]-R); + r[5] = R - (r[1]-R); + r[6] = R - (r[0]-R); + r[7] = r[6]; /* unused */ + r[8] = g->inner_r; + + th[0] = -tw * (g->size == INVOLUTE_SMALL ? 0.5 : + g->size == INVOLUTE_MEDIUM ? 0.41 : 0.45); + th[1] = -tw * 0.375; + th[2] = -tw * 0.300; + th[3] = -tw * 0.230; + th[4] = -tw * (g->nteeth >= 5 ? 0.16 : 0.12); + th[5] = -tw * 0.100; + th[6] = -tw * (g->size == INVOLUTE_MEDIUM ? 0.1 : 0.04); + th[7] = -tw * 0.020; + th[8] = 0; + th[9] = -th[7]; + th[10] = -th[6]; + th[11] = -th[5]; + th[12] = -th[4]; + th[13] = -th[3]; + th[14] = -th[2]; + th[15] = -th[1]; + th[16] = -th[0]; + th[17] = width * 0.47; + th[18] = width * 0.50; + th[19] = width * 0.53; + th[20] = th[0] + width; /* unused */ + + if (g->inverted_p) /* put the teeth on the inside */ + { + for (i = 0; i < countof(th); i++) + th[i] = -th[i]; + for (i = 0; i < countof(r); i++) + r[i] = R - (r[i] - R); + } + + orim->npoints = 0; + orim->points = (XYZ *) calloc(ppt * g->nteeth+1, sizeof(*orim->points)); + orim->fnormals = (XYZ *) calloc(ppt * g->nteeth+1, sizeof(*orim->fnormals)); + orim->pnormals = (XYZ *) calloc(ppt * g->nteeth+1, sizeof(*orim->pnormals)); + + irim->npoints = 0; + irim->points = (XYZ *) calloc(ppt * g->nteeth+1, sizeof(*irim->points)); + irim->fnormals = (XYZ *) calloc(ppt * g->nteeth+1, sizeof(*irim->fnormals)); + irim->pnormals = (XYZ *) calloc(ppt * g->nteeth+1, sizeof(*irim->pnormals)); + + if (!orim->points || !orim->pnormals || !orim->fnormals || + !irim->points || !irim->pnormals || !irim->fnormals) + { + fprintf (stderr, "%s: out of memory\n", progname); + exit (1); + } + + /* First, compute the coordinates of every point used for every tooth. + */ + for (i = 0; i < g->nteeth; i++) + { + GLfloat TH = (i * width) + (width/4); + int oon = orim->npoints; + int oin = irim->npoints; + +# undef PUSH +# define PUSH(OPR,IPR,PTH) \ + orim->points[orim->npoints].x = cos(TH+th[(PTH)]) * r[(OPR)]; \ + orim->points[orim->npoints].y = sin(TH+th[(PTH)]) * r[(OPR)]; \ + orim->npoints++; \ + irim->points[irim->npoints].x = cos(TH+th[(PTH)]) * r[(IPR)]; \ + irim->points[irim->npoints].y = sin(TH+th[(PTH)]) * r[(IPR)]; \ + irim->npoints++ + + switch (g->size) { + case INVOLUTE_SMALL: + PUSH(6, 8, 0); /* tooth left 1 */ + PUSH(0, 8, 8); /* tooth top middle */ + break; + case INVOLUTE_MEDIUM: + PUSH(6, 8, 0); /* tooth left 1 */ + PUSH(0, 8, 6); /* tooth top left */ + PUSH(0, 8, 10); /* tooth top right */ + PUSH(6, 8, 16); /* tooth right 6 */ + break; + case INVOLUTE_LARGE: + PUSH(6, 8, 0); /* tooth left 1 */ + PUSH(4, 8, 2); /* tooth left 3 */ + PUSH(2, 8, 4); /* tooth left 5 */ + PUSH(0, 8, 6); /* tooth top left */ + PUSH(0, 8, 10); /* tooth top right */ + PUSH(2, 8, 12); /* tooth right 1 */ + PUSH(4, 8, 14); /* tooth right 3 */ + PUSH(6, 8, 16); /* tooth right 5 */ + PUSH(6, 8, 18); /* gap top */ + break; + case INVOLUTE_HUGE: + PUSH(6, 8, 0); /* tooth left 1 */ + PUSH(5, 8, 1); /* tooth left 2 */ + PUSH(4, 8, 2); /* tooth left 3 */ + PUSH(3, 8, 3); /* tooth left 4 */ + PUSH(2, 8, 4); /* tooth left 5 */ + PUSH(1, 8, 5); /* tooth left 6 */ + PUSH(0, 8, 6); /* tooth top left */ + PUSH(0, 8, 8); /* tooth top left */ + PUSH(0, 8, 10); /* tooth top right */ + PUSH(1, 8, 11); /* tooth top right */ + PUSH(2, 8, 12); /* tooth right 1 */ + PUSH(3, 8, 13); /* tooth right 2 */ + PUSH(4, 8, 14); /* tooth right 3 */ + PUSH(5, 8, 15); /* tooth right 4 */ + PUSH(6, 8, 16); /* tooth right 5 */ + PUSH(6, 8, 17); /* tooth right 6 */ + PUSH(6, 8, 18); /* gap top */ + PUSH(6, 8, 19); /* gap top */ + break; + default: + abort(); + } +# undef PUSH + + if (i == 0 && orim->npoints > ppt) abort(); /* go update "ppt"! */ + + if (g->inverted_p) + { + int start, end, j; + start = oon; + end = orim->npoints; + for (j = 0; j < (end-start)/2; j++) + { + XYZ swap = orim->points[end-j-1]; + orim->points[end-j-1] = orim->points[start+j]; + orim->points[start+j] = swap; + } + + start = oin; + end = irim->npoints; + for (j = 0; j < (end-start)/2; j++) + { + XYZ swap = irim->points[end-j-1]; + irim->points[end-j-1] = irim->points[start+j]; + irim->points[start+j] = swap; + } + } + } + + tooth_normals (orim, g->tooth_slope); + tooth_normals (irim, 0); + + if (g->inverted_p) /* flip the normals */ + { + for (i = 0; i < orim->npoints; i++) + { + orim->fnormals[i].x = -orim->fnormals[i].x; + orim->fnormals[i].y = -orim->fnormals[i].y; + orim->fnormals[i].z = -orim->fnormals[i].z; + + orim->pnormals[i].x = -orim->pnormals[i].x; + orim->pnormals[i].y = -orim->pnormals[i].y; + orim->pnormals[i].z = -orim->pnormals[i].z; + } + + for (i = 0; i < irim->npoints; i++) + { + irim->fnormals[i].x = -irim->fnormals[i].x; + irim->fnormals[i].y = -irim->fnormals[i].y; + irim->fnormals[i].z = -irim->fnormals[i].z; + + irim->pnormals[i].x = -irim->pnormals[i].x; + irim->pnormals[i].y = -irim->pnormals[i].y; + irim->pnormals[i].z = -irim->pnormals[i].z; + } + } +} + + +/* Which of the gear's inside rings is the biggest? + */ +int +involute_biggest_ring (gear *g, double *posP, double *sizeP, double *heightP) +{ + double r0 = (g->r - g->tooth_h/2); + double r1 = g->inner_r; + double r2 = g->inner_r2; + double r3 = g->inner_r3; + double w1 = (r1 ? r0 - r1 : r0); + double w2 = (r2 ? r1 - r2 : 0); + double w3 = (r3 ? r2 - r3 : 0); + double h1 = g->thickness; + double h2 = g->thickness2; + double h3 = g->thickness3; + + if (g->spokes) w2 = 0; + + if (w1 > w2 && w1 > w3) + { + if (posP) *posP = (r0+r1)/2; + if (sizeP) *sizeP = w1; + if (heightP) *heightP = h1; + return 0; + } + else if (w2 > w1 && w2 > w3) + { + if (posP) *posP = (r1+r2)/2; + if (sizeP) *sizeP = w2; + if (heightP) *heightP = h2; + return 1; + } + else + { + if (posP) *posP = (r2+r3)/2; + if (sizeP) *sizeP = w3; + if (heightP) *heightP = h3; + return 1; + } +} + + +/* Renders all teeth of a gear. + */ +static int +draw_gear_teeth (gear *g, Bool wire_p) +{ + int polys = 0; + int i; + + GLfloat z1 = -g->thickness/2; + GLfloat z2 = g->thickness/2; + GLfloat s1 = 1 + (g->thickness * g->tooth_slope / 2); + GLfloat s2 = 1 - (g->thickness * g->tooth_slope / 2); + + tooth_face orim, irim; + gear_teeth_geometry (g, &orim, &irim); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, g->color); + + /* Draw the outer rim (the teeth) + (In wire mode, this draws just the upright lines.) + */ + glFrontFace (g->inverted_p ? GL_CCW : GL_CW); + glBegin (wire_p ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < orim.npoints; i++) + { + glNormal3f (orim.pnormals[i].x, orim.pnormals[i].y, orim.pnormals[i].z); + glVertex3f (s1*orim.points[i].x, s1*orim.points[i].y, z1); + glVertex3f (s2*orim.points[i].x, s2*orim.points[i].y, z2); + + /* Show the face normal vectors */ + if (0&&wire_p && show_normals_p) + { + XYZ n = orim.fnormals[i]; + int a = i; + int b = (i == orim.npoints-1 ? 0 : i+1); + GLfloat x = (orim.points[a].x + orim.points[b].x) / 2; + GLfloat y = (orim.points[a].y + orim.points[b].y) / 2; + GLfloat z = (z1 + z2) / 2; + glVertex3f (x, y, z); + glVertex3f (x + n.x, y + n.y, z + n.z); + } + + /* Show the vertex normal vectors */ + if (wire_p && show_normals_p) + { + XYZ n = orim.pnormals[i]; + GLfloat x = orim.points[i].x; + GLfloat y = orim.points[i].y; + GLfloat z = (z1 + z2) / 2; + glVertex3f (x, y, z); + glVertex3f (x + n.x, y + n.y, z + n.z); + } + } + + if (!wire_p) /* close the quad loop */ + { + glNormal3f (orim.pnormals[0].x, orim.pnormals[0].y, orim.pnormals[0].z); + glVertex3f (s1*orim.points[0].x, s1*orim.points[0].y, z1); + glVertex3f (s2*orim.points[0].x, s2*orim.points[0].y, z2); + } + polys += orim.npoints; + glEnd(); + + /* Draw the outer rim circles, in wire mode */ + if (wire_p) + { + glBegin (GL_LINE_LOOP); + for (i = 0; i < orim.npoints; i++) + glVertex3f (s1*orim.points[i].x, s1*orim.points[i].y, z1); + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < orim.npoints; i++) + glVertex3f (s2*orim.points[i].x, s2*orim.points[i].y, z2); + glEnd(); + } + + /* Draw the inner rim (the hole) + (In wire mode, this draws just the upright lines.) + */ + glFrontFace (g->inverted_p ? GL_CW : GL_CCW); + glBegin (wire_p ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < irim.npoints; i++) + { + glNormal3f(-irim.pnormals[i].x, -irim.pnormals[i].y,-irim.pnormals[i].z); + glVertex3f (s1*irim.points[i].x, s1*irim.points[i].y, z1); + glVertex3f (s2*irim.points[i].x, s2*irim.points[i].y, z2); + + /* Show the face normal vectors */ + if (wire_p && show_normals_p) + { + XYZ n = irim.fnormals[i]; + int a = i; + int b = (i == irim.npoints-1 ? 0 : i+1); + GLfloat x = (irim.points[a].x + irim.points[b].x) / 2; + GLfloat y = (irim.points[a].y + irim.points[b].y) / 2; + GLfloat z = (z1 + z2) / 2; + glVertex3f (x, y, z); + glVertex3f (x - n.x, y - n.y, z); + } + + /* Show the vertex normal vectors */ + if (wire_p && show_normals_p) + { + XYZ n = irim.pnormals[i]; + GLfloat x = irim.points[i].x; + GLfloat y = irim.points[i].y; + GLfloat z = (z1 + z2) / 2; + glVertex3f (x, y, z); + glVertex3f (x - n.x, y - n.y, z); + } + } + + if (!wire_p) /* close the quad loop */ + { + glNormal3f (-irim.pnormals[0].x,-irim.pnormals[0].y,-irim.pnormals[0].z); + glVertex3f (s1*irim.points[0].x, s1*irim.points[0].y, z1); + glVertex3f (s2*irim.points[0].x, s2*irim.points[0].y, z2); + } + polys += irim.npoints; + glEnd(); + + /* Draw the inner rim circles, in wire mode + */ + if (wire_p) + { + glBegin (GL_LINE_LOOP); + for (i = 0; i < irim.npoints; i++) + glVertex3f (irim.points[i].x, irim.points[i].y, z1); + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < irim.npoints; i++) + glVertex3f (irim.points[i].x, irim.points[i].y, z2); + glEnd(); + } + + /* Draw the side (the flat bit) + */ + if (!wire_p || wire_all_p) + { + GLfloat z; + if (irim.npoints != orim.npoints) abort(); + for (z = z1; z <= z2; z += z2-z1) + { + GLfloat s = (z == z1 ? s1 : s2); + glFrontFace (((z == z1) ^ g->inverted_p) ? GL_CCW : GL_CW); + glNormal3f (0, 0, z); + glBegin (wire_p ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < orim.npoints; i++) + { + glVertex3f (s*orim.points[i].x, s*orim.points[i].y, z); + glVertex3f (s*irim.points[i].x, s*irim.points[i].y, z); + } + if (!wire_p) /* close the quad loop */ + { + glVertex3f (s*orim.points[0].x, s*orim.points[0].y, z); + glVertex3f (s*irim.points[0].x, s*irim.points[0].y, z); + } + polys += orim.npoints; + glEnd(); + } + } + + free (irim.points); + free (irim.fnormals); + free (irim.pnormals); + + free (orim.points); + free (orim.fnormals); + free (orim.pnormals); + + return polys; +} + + +/* Render one gear, unrotated at 0,0. + Returns the number of polygons. + */ +int +draw_involute_gear (gear *g, Bool wire_p) +{ + int polys = 0; + + static const GLfloat spec[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat shiny = 128.0; + + glMaterialfv (GL_FRONT, GL_SPECULAR, spec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, g->color); + glColor3f (g->color[0], g->color[1], g->color[2]); + + if (wire_p > 1) + polys += draw_involute_schematic (g, wire_p); + else + { + glPushMatrix(); + glRotatef (g->wobble, 1, 0, 0); + polys += draw_gear_teeth (g, wire_p); + polys += draw_gear_interior (g, wire_p); + polys += draw_gear_nubs (g, wire_p); + glPopMatrix(); + } + return polys; +} diff --git a/hacks/glx/involute.h b/hacks/glx/involute.h new file mode 100644 index 0000000..c6a3066 --- /dev/null +++ b/hacks/glx/involute.h @@ -0,0 +1,78 @@ +/* involute, Copyright (c) 2004-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Utilities for rendering OpenGL gears with involute teeth. + */ + +#ifndef __GEAR_INVOLUTE_H__ +#define __GEAR_INVOLUTE_H__ + +typedef struct { + unsigned long id; /* unique name */ + double x, y, z; /* position */ + double r; /* radius of the gear, at middle of teeth */ + double th; /* rotation (degrees) */ + + GLint nteeth; /* how many teeth */ + double tooth_w, tooth_h; /* size of teeth */ + + double tooth_slope; /* 0 for normal right-angle gear; 1 = 45 deg. */ + double inner_r; /* radius of the (larger) inside hole */ + double inner_r2; /* radius of the (smaller) inside hole, if any */ + double inner_r3; /* yet another */ + + double thickness; /* height of the edge */ + double thickness2; /* height of the (smaller) inside disc if any */ + double thickness3; /* yet another */ + int spokes; /* how many spokes inside, if any */ + int nubs; /* how many little nubbly bits, if any */ + double spoke_thickness; /* spoke versus hole */ + double wobble; /* factory defect! */ + int motion_blur_p; /* whether it's spinning too fast to draw */ + int polygons; /* how many polys in this gear */ + + double ratio; /* gearing ratio with previous gears */ + double rpm; /* approximate revolutions per minute */ + + Bool inverted_p; /* whether this gear has teeth on the inside */ + Bool base_p; /* whether this gear begins a new train */ + int coax_p; /* whether this is one of a pair of bound gears. + 1 for first, 2 for second. */ + double coax_displacement; /* distance between gear planes */ + + double coax_thickness; /* thickness of the other gear in the pair */ + + enum { INVOLUTE_SMALL, + INVOLUTE_MEDIUM, + INVOLUTE_LARGE, + INVOLUTE_HUGE } size; /* Controls complexity of mesh. */ + GLfloat color[4]; + GLfloat color2[4]; + + GLuint dlist; +} gear; + +/* Render one gear, unrotated at 0,0. + Returns the number of polygons. + */ +extern int draw_involute_gear (gear *g, Bool wire_p); + +/* Draws a much simpler representation of a gear. + Returns the number of polygons. + */ +extern int draw_involute_schematic (gear *g, Bool wire_p); + +/* Which of the gear's inside rings is the biggest? + */ +extern int involute_biggest_ring (gear *g, + double *posP, double *sizeP, + double *heightP); + +#endif /* __GEAR_INVOLUTE_H__ */ diff --git a/hacks/glx/jigglypuff.c b/hacks/glx/jigglypuff.c new file mode 100644 index 0000000..fea13fd --- /dev/null +++ b/hacks/glx/jigglypuff.c @@ -0,0 +1,1076 @@ +/* jigglypuff - a most, most, unfortunate screensaver. + * + * Copyright (c) 2003 Keith Macleod (kmacleod@primus.ca) + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Draws all varieties of obscene, spastic, puffy balls + * orbiting lazily about the screen. More of an accident + * than anything else. + * + * Apologies to anyone who thought they were getting a Pokemon + * out of this. + * + * Of course, if you modify it to do something interesting and/or + * funny, I'd appreciate receiving a copy. + * + * 04/06/2003 - Oops, figured out what was wrong with the sphere + * mapping. I had assumed it was done in model space, + * but of course I was totally wrong... Eye space you + * say? Yup. km + * + * 03/31/2003 - Added chrome to the color options. The mapping + * is anything but 'correct', but it's a pretty good + * effect anyways, as long as the surface is jiggling + * enough that you can't tell. Sure, it seems kind of odd + * that it's reflecting a sky that's obviously not there, + * but who has time to worry about silly details like + * that? Not me, ah rekkin'. km + * + */ + +#ifdef STANDALONE +# define DEFAULTS "*delay: 20000\n" \ + "*showFPS: False\n" \ + "*wireframe: False\n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_jigglypuff 0 +# define release_jigglypuff 0 +# include "xlockmore.h" +#else +# include "xlock.h" +#endif + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "ximage-loader.h" +#include "gltrackball.h" +#include "images/gen/jigglymap_png.h" + +#ifdef USE_GL + + +#define DEF_COLOR "cycle" +#define DEF_SHININESS "100" +#define DEF_COMPLEXITY "2" +#define DEF_SPEED "500" +#define DEF_DISTANCE "100" +#define DEF_HOLD "800" +#define DEF_SPHERISM "75" +#define DEF_DAMPING "500" +#define DEF_RANDOM "True" +#define DEF_TETRA "False" +#define DEF_SPOOKY "0" + +#ifndef max +#define max(a,b) (((a)>(b))?(a):(b)) +#define min(a,b) (((a)<(b))?(a):(b)) +#endif + +/* Why isn't RAND_MAX correct in the first place? */ +#define REAL_RAND_MAX (2.0*(float)RAND_MAX) + +static int spherism; +static int hold; +static int distance; +static int damping; + +static int complexity; +static int speed; + +static int do_tetrahedron; +static int spooky; +static char *color; +static int shininess; + +static int random_parms; + +typedef struct solid solid; + +typedef struct { + float stable_distance; + float hold_strength; + float spherify_strength; + float damping_velocity; + float damping_factor; + + int do_wireframe; + int spooky; + int color_style; + GLint shininess; + GLfloat jiggly_color[4]; + GLfloat color_dir[3]; + + solid *shape; + + trackball_state *trackball; + int button_down; + + float angle; + float axis; + float speed; + + GLXContext *glx_context; +} jigglystruct; + +static jigglystruct *jss = NULL; + +static XrmOptionDescRec opts[] = { + {"-random", ".Jigglypuff.random", XrmoptionNoArg, "true"}, + {"+random", ".Jigglypuff.random", XrmoptionNoArg, "false"}, + {"-tetra", ".Jigglypuff.tetra", XrmoptionNoArg, "true"}, + {"+tetra", ".Jigglypuff.tetra", XrmoptionNoArg, "false"}, + {"-spooky", ".Jigglypuff.spooky", XrmoptionSepArg, "0"}, + {"-color", ".Jigglypuff.color", XrmoptionSepArg, DEF_COLOR}, + {"-shininess", ".Jigglypuff.shininess", XrmoptionSepArg, DEF_SHININESS}, + {"-complexity", ".Jigglypuff.complexity", XrmoptionSepArg, DEF_COMPLEXITY}, + {"-speed", ".Jigglypuff.speed", XrmoptionSepArg, DEF_SPEED}, + {"-spherism", ".Jigglypuff.spherism", XrmoptionSepArg, DEF_SPHERISM}, + {"-hold", ".Jigglypuff.hold", XrmoptionSepArg, DEF_HOLD}, + {"-distance", "Jigglypuff.distance", XrmoptionSepArg, DEF_DISTANCE}, + {"-damping", "Jigglypuff.damping", XrmoptionSepArg, DEF_DAMPING} +}; + +static argtype vars[] = { + {&random_parms, "random", "Random", DEF_RANDOM, t_Bool}, + {&do_tetrahedron, "tetra", "Tetra", DEF_TETRA, t_Bool}, + {&spooky, "spooky", "Spooky", DEF_SPOOKY, t_Int}, + {&color, "color", "Color", DEF_COLOR, t_String}, + {&shininess, "shininess", "Shininess", DEF_SHININESS, t_Int}, + {&complexity, "complexity", "Complexity", DEF_COMPLEXITY, t_Int}, + {&speed, "speed", "Speed", DEF_SPEED, t_Int}, + {&spherism, "spherism", "Spherism", DEF_SPHERISM, t_Int}, + {&hold, "hold", "Hold", DEF_HOLD, t_Int}, + {&distance, "distance", "Distance", DEF_DISTANCE, t_Int}, + {&damping, "damping", "Damping", DEF_DAMPING, t_Int} +}; + +#undef countof +#define countof(x) ((int)(sizeof(x)/sizeof(*(x)))) + +ENTRYPOINT ModeSpecOpt jigglypuff_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#define COLOR_STYLE_NORMAL 0 +#define COLOR_STYLE_CYCLE 1 +#define COLOR_STYLE_CLOWNBARF 2 +#define COLOR_STYLE_FLOWERBOX 3 +#define COLOR_STYLE_CHROME 4 + +#define CLOWNBARF_NCOLORS 5 + +static const GLfloat clownbarf_colors[CLOWNBARF_NCOLORS][4] = { + {0.7, 0.7, 0.0, 1.0}, + {0.8, 0.1, 0.1, 1.0}, + {0.1, 0.1, 0.8, 1.0}, + {0.9, 0.9, 0.9, 1.0}, + {0.0, 0.0, 0.0, 1.0} +}; + +static const GLfloat flowerbox_colors[4][4] = { + {0.7, 0.7, 0.0, 1.0}, + {0.9, 0.0, 0.0, 1.0}, + {0.0, 0.9, 0.0, 1.0}, + {0.0, 0.0, 0.9, 1.0}, +}; + +# if 0 /* I am not even going to *try* and make this bullshit compile + without warning under gcc -std=c89 -pedantic. -jwz. */ +#ifdef DEBUG +# ifdef __GNUC__ /* GCC style */ +#define _DEBUG(msg, args...) do { \ + fprintf(stderr, "%s : %d : " msg ,__FILE__,__LINE__ ,##args); \ +} while(0) +# else /* C99 standard style */ +#define _DEBUG(msg, ...) do { \ + fprintf(stderr, "%s : %d : " msg ,__FILE__,__LINE__,__VA_ARGS__); \ +} while(0) +# endif +#else +# ifdef __GNUC__ /* GCC style */ +#define _DEBUG(msg, args...) +# else /* C99 standard style */ +#define _DEBUG(msg, ...) +# endif +#endif +#endif /* 0 */ + +/* This is all the half-edge b-rep code (as well as basic geometry) */ +typedef struct face face; +typedef struct edge edge; +typedef struct hedge hedge; +typedef struct vertex vertex; +typedef GLfloat coord; +typedef coord vector[3]; + +struct solid { + face *faces; + edge *edges; + vertex *vertices; +}; + +struct face { + solid *s; + hedge *start; + const GLfloat *color; + face *next; +}; + +struct edge { + solid *s; + hedge *left; + hedge *right; + edge *next; +}; + +struct hedge { + face *f; + edge *e; + vertex *vtx; + hedge *next; + hedge *prev; +}; + +struct vertex { + solid *s; + hedge *h; + vector v; + vector n; + vector f; + vector vel; + vertex *next; +}; + +static inline void vector_init(vector v, coord x, coord y, coord z) +{ + v[0] = x; + v[1] = y; + v[2] = z; +} + +static inline void vector_copy(vector d, vector s) +{ + d[0] = s[0]; + d[1] = s[1]; + d[2] = s[2]; +} + +static inline void vector_add(vector v1, vector v2, vector v) +{ + vector_init(v, v1[0]+v2[0], v1[1]+v2[1], v1[2]+v2[2]); +} + +static inline void vector_add_to(vector v1, vector v2) +{ + v1[0] += v2[0]; + v1[1] += v2[1]; + v1[2] += v2[2]; +} + +static inline void vector_sub(vector v1, vector v2, vector v) +{ + vector_init(v, v1[0]-v2[0], v1[1]-v2[1], v1[2]-v2[2]); +} + +static inline void vector_scale(vector v, coord s) +{ + v[0] *= s; + v[1] *= s; + v[2] *= s; +} + +/* +static inline coord dot(vector v1, vector v2) +{ + return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; +} +*/ + +static inline void cross(vector v1, vector v2, vector v) +{ + vector_init(v, + v1[1]*v2[2] - v2[1]*v1[2], + v1[2]*v2[0] - v2[2]*v1[0], + v1[0]*v2[1] - v2[0]*v1[1]); +} + +static inline coord magnitude2(vector v) +{ + return v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; +} + +static inline coord magnitude(vector v) +{ + return sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); +} + +static inline void normalize(vector v) +{ + coord mag = 1.0/sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]); + + v[0] *= mag; + v[1] *= mag; + v[2] *= mag; +} + +static inline void normalize_to(vector v, coord m) +{ + coord mag = 1.0/sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2])/m; + + v[0] *= mag; + v[1] *= mag; + v[2] *= mag; +} + +static inline void midpoint(vector v1, vector v2, vector v) +{ + vector_init(v, + v1[0] + 0.5 * (v2[0] - v1[0]), + v1[1] + 0.5 * (v2[1] - v1[1]), + v1[2] + 0.5 * (v2[2] - v1[2])); +} + +static inline hedge *partner(hedge *h) { + if(!h->e) + return NULL; + if(h == h->e->left) { + return h->e->right; + } + else if(h == h->e->right) { + return h->e->left; + } + else { +/* _DEBUG("Inconsistent edge detected. Presumably, this is a bug. Exiting.\n", NULL); */ + exit(-1); + } +} + +static vertex *vertex_new(solid *s, vector v) +{ + vertex *vtx = (vertex*)malloc(sizeof(vertex)); + + if(!vtx) + return NULL; + vtx->s = s; + vtx->next = s->vertices; + s->vertices = vtx; + vector_copy(vtx->v, v); + vector_init(vtx->f, 0, 0, 0); + vector_init(vtx->vel, 0, 0, 0); + return vtx; +} + +/* insert a new halfedge after hafter. this is low-level, + * i.e. it is a helper for the split_* functions, which + * maintain the consistency of the solid. + */ +static hedge *hedge_new(hedge *hafter, vertex *vtx) +{ + hedge *h = (hedge*)malloc(sizeof(hedge)); + + if(!h) { +/* _DEBUG("Out of memory in hedge_new()\n",NULL); */ + return NULL; + } + h->f = hafter->f; + h->vtx = vtx; + h->e = NULL; + h->prev = hafter; + h->next = hafter->next; + hafter->next = h; + h->next->prev = h; + return h; +} + +static edge *edge_new(solid *s) +{ + edge *e = (edge*)malloc(sizeof(edge)); + if(!e) { +/* _DEBUG("Out of memory in edge_new()\n",NULL);*/ + exit(-1); + } + e->next = s->edges; + s->edges = e; + e-> s = s; + e->left = e->right = NULL; + return e; +} + +static face *face_new(solid *s, hedge *h) +{ + face *f = (face*)malloc(sizeof(face)); + if(!f) { +/* _DEBUG("Out of memory in face_new()",NULL);*/ + exit(-1); + } + f->s = s; + f->start = h; + f->next = s->faces; + s->faces = f; + return f; +} + +/* split vertex vtx, creating a new edge after v on f + * that goes to a new vertex at v, adjoining whatever + * face is on the other side of the halfedge attached to + * v on f. + * Assumptions: + * there are at least 2 faces. + * partner(h)->next->vtx == vtx + * Post-assumptions: + * the new halfedge will be inserted AFTER the indicated + * halfedge. This means that f->start is guaranteed not to + * change. + * the vertex returned will have h==. + */ + +static vertex *vertex_split(hedge *h, vector v) +{ + hedge *h2, *hn1, *hn2; + vertex *vtxn; + edge *en; + face *f1; + + f1 = h->f; + h2 = partner(h); + + vtxn = vertex_new(f1->s, v); + hn1 = hedge_new(h, vtxn); + vtxn->h = hn1; + hn2 = hedge_new(h2, vtxn); + hn2->e = h->e; + + if(h2->e->left == h2) + h2->e->left = hn2; + else + h2->e->right = hn2; + + en = edge_new(f1->s); + en->left = hn1; + en->right = h2; + hn1->e = en; + h2->e = en; + return vtxn; +} + +static face *face_split(face *f, hedge *h1, hedge *h2) +{ + hedge *hn1, *hn2, *tmp; + edge *en; + face *fn; + + if(h1->f != f || h2->f != f) { +/* _DEBUG("Whoah, cap'n, yer usin' a bad halfedge!\n",NULL);*/ + exit(-1); + } + if(h1 == h2) { +/* _DEBUG("Trying to split a face at a single vertex\n",NULL);*/ + exit(-1); + } + /* close the loops */ + h1->prev->next = h2; + h2->prev->next = h1; + tmp = h1->prev; + h1->prev = h2->prev; + h2->prev = tmp; + /* insert halfedges & create edge */ + hn1 = hedge_new(h2->prev, h1->vtx); + hn2 = hedge_new(h1->prev, h2->vtx); + en = edge_new(f->s); + en->left = hn1; + en->right = hn2; + hn1->e = en; + hn2->e = en; + + /* make the new face, first find out which hedge is contained + * in the original face, then start the new face at the other */ + tmp = f->start; + while(tmp != h1 && tmp != h2) + tmp = tmp->next; + tmp = (tmp == h1) ? h2 : h1 ; + fn = face_new(f->s, tmp); + do { + tmp->f = fn; + tmp = tmp->next; + } while(tmp != fn->start); + fn->color = f->color; + return fn; +} + +static solid *solid_new(vector where) +{ + solid *s = (solid*)malloc(sizeof(solid)); + face *f1, *f2; + edge *e; + vertex *vtx; + hedge *h1,*h2; + + s->faces = NULL; + s->edges = NULL; + s->vertices = NULL; + + h1 = (hedge*)malloc(sizeof(hedge)); + h2 = (hedge*)malloc(sizeof(hedge)); + h1->next = h1->prev = h1; + h2->next = h2->prev = h2; + + vtx = vertex_new(s, where); + vtx->h = h1; + h1->vtx = vtx; + h2->vtx = vtx; + + e = edge_new(s); + e->left = h1; + e->right = h2; + h1->e = e; + h2->e = e; + + f1 = face_new(s, h1); + f2 = face_new(s, h2); + h1->f = f1; + h2->f = f2; + + return s; +} + +/* This is all the code directly related to constructing the jigglypuff */ +static void face_tessel2(face *f) +{ + hedge *h1=f->start->prev, *h2=f->start->next; + + if(h1->next == h1) + return; + while(h2 != h1 && h2->next != h1) { + f = face_split(f, h1, h2); + h1 = f->start; + h2 = f->start->next->next; + } +} + +/* This will only work with solids composed entirely of + * triangular faces. It first add a vertex to the middle + * of each edge, then walks the faces, connecting the + * dots. + * I'm abusing the fact that new faces and edges are always + * added at the head of the list. If that ever changes, + * this is borked. + */ +static void solid_tesselate(solid *s) +{ + edge *e = s->edges; + face *f = s->faces; + + while(e) { + vector v; + midpoint(e->left->vtx->v, e->right->vtx->v, v); + vertex_split(e->left, v); + e = e->next; + } + while(f) { + face_tessel2(f); + f=f->next; + } +} + +static void solid_spherify(solid * s, coord size) +{ + vertex *vtx = s->vertices; + + while(vtx) { + normalize_to(vtx->v, size); + vtx = vtx->next; + } +} + +static solid *tetrahedron(jigglystruct *js) +{ + solid *s; + vertex *vtx; + vector v; + hedge *h; + face *f; + int i; + + vector_init(v, 1, 1, 1); + s = solid_new(v); + vector_init(v, -1, -1, 1); + h = s->faces->start; + vtx = vertex_split(h, v); + vector_init(v, -1, 1, -1); + vtx = vertex_split(vtx->h, v); + h = vtx->h; + f = face_split(s->faces, h, h->prev); + vector_init(v, 1, -1, -1); + vertex_split(f->start, v); + f = s->faces->next->next; + h = f->start; + face_split(f, h, h->next->next); + + if(js->color_style == COLOR_STYLE_FLOWERBOX) { + f = s->faces; + for(i=0; i<4; i++) { + f->color = flowerbox_colors[i]; + f = f->next; + } + } + + return s; +} + +static solid *tesselated_tetrahedron(coord size, int iter, jigglystruct *js) { + solid *s = tetrahedron(js); + int i; + + for(i=0; ifaces; + while(f) { + f->color = clownbarf_colors[random() % CLOWNBARF_NCOLORS]; + f = f->next; + } +} + +/* Here be the rendering code */ + +static inline void vertex_calcnormal(vertex *vtx, jigglystruct *js) +{ + hedge *start = vtx->h, *h=start; + + vector_init(vtx->n, 0, 0, 0); + do { + vector u, v, norm; + vector_sub(h->prev->vtx->v, vtx->v, u); + vector_sub(h->next->vtx->v, vtx->v, v); + cross(u, v, norm); + vector_add_to(vtx->n, norm); + h = partner(h)->next; + } while(h != start); + if(!js->spooky) + normalize(vtx->n); + else + vector_scale(vtx->n, js->spooky); +} + +static inline void vertex_render(vertex *vtx, jigglystruct *js) +{ + glNormal3fv(vtx->n); + glVertex3fv(vtx->v); +} + +/* This can be optimized somewhat due to the fact that all + * the faces are triangles. I haven't actually tested to + * see what the cost is of calling glBegin/glEnd for each + * triangle. + */ +static inline int face_render(face *f, jigglystruct *js) +{ + hedge *h1, *h2, *hend; + int polys = 0; + + h1 = f->start; + hend = h1->prev; + h2 = h1->next; + + if(js->color_style == COLOR_STYLE_FLOWERBOX || + js->color_style == COLOR_STYLE_CLOWNBARF) + glColor4fv(f->color); + glBegin(GL_TRIANGLES); + while(h1 != hend && h2 !=hend) { + vertex_render(h1->vtx, js); + vertex_render(h2->vtx, js); + vertex_render(hend->vtx, js); + h1 = h2; + h2 = h1->next; + polys++; + } + glEnd(); + return polys; +} + +static int jigglypuff_render(jigglystruct *js) +{ + int polys = 0; + face *f = js->shape->faces; + vertex *vtx = js->shape->vertices; + + while(vtx) { + vertex_calcnormal(vtx, js); + vtx = vtx->next; + } + while(f) { + polys += face_render(f, js); + f=f->next; + } + return polys; +} + +/* This is the jiggling code */ + +/* stable distance when subdivs == 4 */ +#define STABLE_DISTANCE 0.088388347648 + +static void update_shape(jigglystruct *js) +{ + vertex *vtx = js->shape->vertices; + edge *e = js->shape->edges; + vector zero; + + vector_init(zero, 0, 0, 0); + + /* sum all the vertex-vertex forces */ + while(e) { + vector f; + coord mag; + vector_sub(e->left->vtx->v, e->right->vtx->v, f); + mag = js->stable_distance - magnitude(f); + vector_scale(f, mag); + vector_add_to(e->left->vtx->f, f); + vector_sub(zero, f, f); + vector_add_to(e->right->vtx->f, f); + e = e->next; + } + + /* scale back the v-v force and add the spherical force + * then add the result to the vertex velocity, damping + * if necessary. Finally, move the vertex */ + while(vtx) { + coord mag; + vector to_sphere; + vector_scale(vtx->f, js->hold_strength); + vector_copy(to_sphere, vtx->v); + mag = 1 - magnitude(to_sphere); + vector_scale(to_sphere, mag * js->spherify_strength); + vector_add_to(vtx->f, to_sphere); + vector_add_to(vtx->vel, vtx->f); + vector_init(vtx->f, 0, 0, 0); + mag = magnitude2(vtx->vel); + if(mag > js->damping_velocity) + vector_scale(vtx->vel, js->damping_factor); + vector_add_to(vtx->v, vtx->vel); + vtx = vtx->next; + } +} + +/* These are the various initialization routines */ + +static void init_texture(ModeInfo *mi) +{ + XImage *img = image_data_to_ximage(mi->dpy, mi->xgwa.visual, + jigglymap_png, sizeof(jigglymap_png)); + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, + img->width, img->height, 0, GL_RGBA, + GL_UNSIGNED_BYTE, img->data); + + XDestroyImage(img); +} + +static void setup_opengl(ModeInfo *mi, jigglystruct *js) +{ + const GLfloat lpos0[4] = {-12, 8, 12, 0}; + const GLfloat lpos1[4] = {7, -5, 0, 0}; + const GLfloat lcol0[4] = {0.7f, 0.7f, 0.65f, 1}; + const GLfloat lcol1[4] = {0.3f, 0.2f, 0.1f, 1}; + const GLfloat scolor[4]= {0.9f, 0.9f, 0.9f, 0.5f}; + + glDrawBuffer(GL_BACK); + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + + if(js->do_wireframe) { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + } + else { + glCullFace(GL_BACK); + glFrontFace(GL_CW); + glEnable(GL_CULL_FACE); + } + + if(js->color_style != COLOR_STYLE_CHROME) { + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + + glLightfv(GL_LIGHT0, GL_POSITION, lpos0); + glLightfv(GL_LIGHT1, GL_POSITION, lpos1); + glLightfv(GL_LIGHT0, GL_DIFFUSE, lcol0); + glLightfv(GL_LIGHT1, GL_DIFFUSE, lcol1); + + glEnable(GL_COLOR_MATERIAL); + glColor4fv(js->jiggly_color); + + glMaterialfv(GL_FRONT, GL_SPECULAR, scolor); + glMateriali(GL_FRONT, GL_SHININESS, js->shininess); + } + else { /* chrome */ + init_texture(mi); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); + glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); + glEnable(GL_TEXTURE_GEN_S); + glEnable(GL_TEXTURE_GEN_T); + glEnable(GL_TEXTURE_2D); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + } +} + +static int parse_color(jigglystruct *js) +{ + unsigned int r, g, b; + if(!strcmp(color, "clownbarf")) { + js->color_style = COLOR_STYLE_CLOWNBARF; + return 1; + } + else if(!strcmp(color, "flowerbox")) { + js->color_style = COLOR_STYLE_FLOWERBOX; + return 1; + } +# ifndef HAVE_JWZGLES /* SPHERE_MAP unimplemented */ + else if(!strcmp(color, "chrome")) { + js->color_style = COLOR_STYLE_CHROME; + return 1; + } +# endif + else if(!strcmp(color, "cycle")) { + js->color_style = COLOR_STYLE_CYCLE; + js->jiggly_color[0] = ((float)random()) / REAL_RAND_MAX * 0.7 + 0.3; + js->jiggly_color[1] = ((float)random()) / REAL_RAND_MAX * 0.7 + 0.3; + js->jiggly_color[2] = ((float)random()) / REAL_RAND_MAX * 0.7 + 0.3; + js->jiggly_color[3] = 1.0f; + js->color_dir[0] = ((float)random()) / REAL_RAND_MAX / 100.0; + js->color_dir[1] = ((float)random()) / REAL_RAND_MAX / 100.0; + js->color_dir[2] = ((float)random()) / REAL_RAND_MAX / 100.0; + return 1; + } + else + js->color_style = 0; + if(strlen(color) != 7) + return 0; + if(sscanf(color,"#%02x%02x%02x", &r, &g, &b) != 3) { + return 0; + } + js->jiggly_color[0] = ((float)r)/255; + js->jiggly_color[1] = ((float)g)/255; + js->jiggly_color[2] = ((float)b)/255; + js->jiggly_color[3] = 1.0f; + + return 1; +} + +static void randomize_parameters(jigglystruct *js) { + do_tetrahedron = random() & 1; +# ifndef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + js->do_wireframe = !(random() & 3); +# endif + js->color_style = random() % 5; +# ifdef HAVE_JWZGLES /* #### SPHERE_MAP unimplemented */ + while (js->color_style == COLOR_STYLE_CHROME) + js->color_style = random() % 5;; +# endif + if(js->color_style == COLOR_STYLE_NORMAL + || js->color_style == COLOR_STYLE_CYCLE) { + js->jiggly_color[0] = ((float)random()) / REAL_RAND_MAX * 0.5 + 0.5; + js->jiggly_color[1] = ((float)random()) / REAL_RAND_MAX * 0.5 + 0.5; + js->jiggly_color[2] = ((float)random()) / REAL_RAND_MAX * 0.5 + 0.5; + js->jiggly_color[3] = 1.0f; + if(js->color_style == COLOR_STYLE_CYCLE) { + js->color_dir[0] = ((float)random()) / REAL_RAND_MAX / 100.0; + js->color_dir[1] = ((float)random()) / REAL_RAND_MAX / 100.0; + js->color_dir[2] = ((float)random()) / REAL_RAND_MAX / 100.0; + } + } + if((js->color_style != COLOR_STYLE_CHROME) && (random() & 1)) + js->spooky = (random() % 6) + 4; + else + js->spooky = 0; + js->shininess = random() % 200; + speed = (random() % 700) + 50; + /* It' kind of dull if this is too high when it starts as a sphere */ + spherism = do_tetrahedron ? (random() % 500) + 20 : (random() % 100) + 10; + hold = (random() % 800) + 100; + distance = (random() % 500) + 100; + damping = (random() % 800) + 50; +} + +static void calculate_parameters(jigglystruct *js, int subdivs) { + /* try to compensate for the inherent instability at + * low complexity. */ + float dist_factor = (subdivs == 6) ? 2 : (subdivs == 5) ? 1 : 0.5; + + js->stable_distance = ((float)distance / 500.0) + * (STABLE_DISTANCE / dist_factor); + js->hold_strength = (float)hold / 10000.0; + js->spherify_strength = (float)spherism / 10000.0; + js->damping_velocity = (float)damping / 100000.0; + js->damping_factor = + 0.001/max(js->hold_strength, js->spherify_strength); + + js->speed = (float)speed / 1000.0; +} + +/* The screenhack related functions begin here */ + +ENTRYPOINT Bool jigglypuff_handle_event(ModeInfo *mi, XEvent *event) +{ + jigglystruct *js = &jss[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, js->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &js->button_down)) + return True; + + return False; +} + +ENTRYPOINT void reshape_jigglypuff(ModeInfo *mi, int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-0.5*(1/h), 0.5*(1/h), -0.5, 0.5, 1, 20); +} + +ENTRYPOINT void draw_jigglypuff(ModeInfo *mi) +{ + jigglystruct *js = &jss[MI_SCREEN(mi)]; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(js->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0,0,-10); + + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glRotatef(js->angle, sin(js->axis), cos(js->axis), -sin(js->axis)); + glTranslatef(0, 0, 5); + if(!(js->button_down)) { + if((js->angle += js->speed) >= 360.0f ) { + js->angle -= 360.0f; + } + if((js->axis+=0.01f) >= 2*M_PI ) { + js->axis -= 2*M_PI; + } + } + + gltrackball_rotate(js->trackball); + + if(js->color_style == COLOR_STYLE_CYCLE) { + int i; + vector_add(js->jiggly_color, js->color_dir, js->jiggly_color); + + for(i=0; i<3; i++) { + if(js->jiggly_color[i] > 1.0 || js->jiggly_color[i] < 0.3) { + js->color_dir[i] = (-js->color_dir[i]); + js->jiggly_color[i] += js->color_dir[i]; + } + } + glColor4fv(js->jiggly_color); + } + + mi->polygon_count = jigglypuff_render(js); + if(MI_IS_FPS(mi)) + do_fps(mi); + glFinish(); + update_shape(js); + glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi)); +} + +ENTRYPOINT void init_jigglypuff(ModeInfo *mi) +{ + jigglystruct *js; + int subdivs; + + MI_INIT(mi, jss); + + js = &jss[MI_SCREEN(mi)]; + + js->do_wireframe = MI_IS_WIREFRAME(mi); +# ifdef HAVE_JWZGLES + js->do_wireframe = 0; /* GL_LINE unimplemented */ +# endif + + js->shininess = shininess; + + subdivs = (complexity==1) ? 4 : (complexity==2) ? 5 + : (complexity==3) ? 6 : 5; + + js->spooky = spooky << (subdivs-3); + + if(!parse_color(js)) { + fprintf(stderr, "%s: Bad color specification: '%s'.\n", progname, color); + exit(-1); + } + + if(random_parms) + randomize_parameters(js); + + js->angle = frand(180); + js->axis = frand(M_PI); + + js->shape = tesselated_tetrahedron(1, subdivs, js); + + if(!do_tetrahedron) + solid_spherify(js->shape, 1); + + if(js->color_style == COLOR_STYLE_CLOWNBARF) + clownbarf_colorize(js->shape); + + calculate_parameters(js, subdivs); + + if((js->glx_context = init_GL(mi)) != NULL) { + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(js->glx_context)); + setup_opengl(mi, js); + reshape_jigglypuff(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + else { + MI_CLEARWINDOW(mi); + } + js->trackball = gltrackball_init(True); +/* _DEBUG("distance : %f\nhold : %f\nspherify : %f\ndamping : %f\ndfact : %f\n", + js->stable_distance, js->hold_strength, js->spherify_strength, + js->damping_velocity, js->damping_factor); + _DEBUG("wire : %d\nspooky : %d\nstyle : %d\nshininess : %d\n", + js->do_wireframe, js->spooky, js->color_style, js->shininess);*/ +} + +XSCREENSAVER_MODULE ("JigglyPuff", jigglypuff) + +#endif /* USE_GL */ + +/* This is the end of the file */ diff --git a/hacks/glx/jigglypuff.man b/hacks/glx/jigglypuff.man new file mode 100644 index 0000000..4a5f8bf --- /dev/null +++ b/hacks/glx/jigglypuff.man @@ -0,0 +1,121 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +jigglypuff - save your screen by tormenting your eyes. +.SH SYNOPSIS +.B jigglypuff +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[-delay \fInumber\fP] +[-cycles \fInumber\fP] +[-wireframe] +[-fps] +[-color \fIcolorspec\fP] +[-spooky] +[-complexity \fIn\fP] +[-speed \fIn\fP] +[-spherism \fIn\fP] +[-hold \fIn\fP] +[-distance \fIn\fP] +[-damping \fIn\fP] +.SH DESCRIPTION +This draws all manners of obscene, spastic, puffy, vaguely ball-shaped +objects orbiting lazily about the screen, with a dizzying array of +mostly pointless options. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. Default: render solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B -tetra | -no-tetra +Whether to start the shape in the form of a tetrahedron. The default +is to start as a sphere. +.TP 8 +.B -color \fIcolorspec\fP +Available options for colorspec are: cycle, flowerbox, clownpuke, chrome +and #xxxxxx (i.e an (old-style) X color specification.) Default: cycle +.TP 8 +.B -spooky \fIn\fP +This option controls a kind of interesting effect obtained by +using unnormalized normal vectors (how's that for an oxymoron?) in OpenGL. +A value of zero disables the effect. Other values vary the lengths of +the normals proportionally. +Okay, so it's not very spooky. Sue me. +Default: 0 +.TP 8 +.B -complexity \fIn\fP +Valid options are 1, 2, and 3. Everything else is treated as though it +were 2, which is the default. This controls the number of polygons in +the 'thing'. A value of 1 yields 1024, and the values go up in powers +of 4. (i.e. 4096, 16384.) + note: There is an inherent lack of stability +at lower complexity, which can cause the shape to devolve into a 'flying +snotrag'. +.TP 8 +.B -speed \fIn\fP +Controls how fast the blob moves around the screen. Default: 500. +.TP 8 +.B -spherism, -hold, -distance, -damping +These options control the 'jigglyness'. The best way to explain these is +to explain how jigglypuff works. Basically, the shape is a tetrahedron +whose faces are subdivided into a number of triangles, forming a mesh. +Each of the vertices of the mesh has two different forces applied to it: +one proportional to its distance from the surface of a sphere, and one +proportional to the difference of the distance to each of its neighbors +in the mesh to a given ideal distance. In short, one tries to move the +points into the configuration of a sphere, and the other tries to push +them back into a tetrahedron. The catch is that the points have inertia, +so they always overshoot their target, and hence they oscillate. The +magnitudes of the two forces is controlled by the options 'spherism' and +\'hold'; 'distance' specifies the distance the vertices seek to keep from +their neighbors, with 500 corresponding to the size of the start tetrahedron. +e.g. if you were to give the options '-tetra -spherism 0 -distance 500', you +would end up with a stable tetrahedron. The 'damping' option can help to +keep the blob from collapsing or flying apart. The option specifies the +speed at which damping starts, hence lower values mean more damping. +Defaults: spherism: 75; hold: 800; distance: 100; damping: 500. +.TP 8 +.B -random +Probably the only parameter you'l ever need. Overrides almost all of the +parameters with random values. The values affected are: speed, spherism, +hold, distance, damping, spooky, color, wireframe and tetra. +Default: off +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Keith Macleod. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +By Keith Macleod diff --git a/hacks/glx/jigsaw.c b/hacks/glx/jigsaw.c new file mode 100644 index 0000000..934dbcc --- /dev/null +++ b/hacks/glx/jigsaw.c @@ -0,0 +1,1509 @@ +/* xscreensaver, Copyright (c) 1997-2017 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Written as an Xlib program some time in 1997. + * Rewritten as an OpenGL program 24-Aug-2008. + */ + +/* + Currently, we do this: + + - start pieces off screen and move them in. + - when they land, they fill the puzzle grid with a shuffled + puzzle (pieces are rotated, too). + - swap random pairs of pieces until the puzzle is solved. + - scatter the pieces off screen (resulting in black). + - load new image and repeat. + + Another idea would be to show the puzzle being solved the way + a person would do it: + + - start off with black screen. + - assume knowledge of size of grid (position of corners). + - find a corner piece, and place it. + - while puzzle unsolved: + - pick a random piece; + - if it is the correct piece for any open edge, place it; + - if it fits physically in any rotation at any open edge, + place it, then toss it back (show the fake-out). + - if it doesn't fit at all, don't animate it at all. + + This would take a long time to solve, I think... + + An even harder idea would involve building up completed "clumps" + and sliding them around (a coral growth / accretion approach) + */ + +#define DEF_SPEED "1.0" +#define DEF_COMPLEXITY "1.0" +#define DEF_RESOLUTION "100" +#define DEF_THICKNESS "0.06" +#define DEF_WOBBLE "True" +#define DEF_DEBUG "False" + +#define DEF_FONT "-*-helvetica-bold-r-normal-*-*-240-*-*-*-*-*-*" +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*font: " DEF_FONT"\n" \ + "*wireframe: False \n" \ + "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \ + "*grabDesktopImages: False \n" \ + "*chooseRandomImages: True \n" \ + "*suppressRotationAnimation: True\n" \ + + +# define free_jigsaw 0 +# define release_jigsaw 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#include "xlockmore.h" +#include "rotator.h" +#include "gltrackball.h" +#include "spline.h" +#include "normals.h" +#include "grab-ximage.h" +#include "texfont.h" + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#else /* !HAVE_JWZGLES */ +# define HAVE_TESS +#endif /* !HAVE_JWZGLES */ + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +#ifdef USE_GL /* whole file */ + +#define TOP 0 +#define RIGHT 1 +#define BOTTOM 2 +#define LEFT 3 + +#define IN -1 +#define FLAT 0 +#define OUT 1 + +typedef struct jigsaw_configuration jigsaw_configuration; + +typedef struct { + double x,y,z,r; /* position and Z rotation (in degrees) */ +} XYZR; + + +typedef struct { + jigsaw_configuration *jc; + int edge[4]; + GLuint dlist; + int polys; + + XYZR home; /* correct position in puzzle */ + XYZR current; /* where it is right now */ + XYZR from, to; /* in transit from A to B */ + double tick; /* 0-1.0, how far from A to B */ + double arc_height; /* height of apex of curved path from A to B */ + double tilt, max_tilt; + +} puzzle_piece; + + +struct jigsaw_configuration { + GLXContext *glx_context; + trackball_state *trackball; + rotator *rot; + Bool button_down_p; + texture_font_data *texfont; + GLuint loading_dlist; + + int puzzle_width; + int puzzle_height; + puzzle_piece *puzzle; + + enum { PUZZLE_LOADING_MSG, + PUZZLE_LOADING, + PUZZLE_UNSCATTER, + PUZZLE_SOLVE, + PUZZLE_SCATTER } state; + double pausing; + double tick_speed; + + GLuint texid; + GLfloat tex_x, tex_y, tex_width, tex_height, aspect; + + GLuint line_thickness; +}; + +static jigsaw_configuration *sps = NULL; + +static GLfloat speed; +static GLfloat complexity_arg; +static int resolution_arg; +static GLfloat thickness_arg; +static Bool wobble_p; +static Bool debug_p; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-complexity", ".complexity", XrmoptionSepArg, 0 }, + { "-resolution", ".resolution", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-wobble", ".wobble", XrmoptionNoArg, "True" }, + { "+wobble", ".wobble", XrmoptionNoArg, "False" }, + { "-debug", ".debug", XrmoptionNoArg, "True" }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&complexity_arg, "complexity", "Complexity", DEF_COMPLEXITY, t_Float}, + {&resolution_arg, "resolution", "Resolution", DEF_RESOLUTION, t_Int}, + {&thickness_arg, "thickness", "Thickness", DEF_THICKNESS, t_Float}, + {&wobble_p, "wobble", "Wobble", DEF_WOBBLE, t_Bool}, + {&debug_p, "debug", "Debug", DEF_DEBUG, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt jigsaw_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Returns a spline describing one edge of a puzzle piece of the given length. + */ +static spline * +make_puzzle_curve (int pixels) +{ + double x0 = 0.0000, y0 = 0.0000; + double x1 = 0.3333, y1 = 0.1000; + double x2 = 0.4333, y2 = 0.0333; + double x3 = 0.4666, y3 = -0.0666; + double x4 = 0.3333, y4 = -0.1666; + double x5 = 0.3666, y5 = -0.2900; + double x6 = 0.5000, y6 = -0.3333; + + spline *s = make_spline(20); + s->n_controls = 0; + +# define PT(x,y) \ + s->control_x[s->n_controls] = pixels * (x); \ + s->control_y[s->n_controls] = pixels * (y); \ + s->n_controls++ + PT ( x0, y0); + PT ( x1, y1); + PT ( x2, y2); + PT ( x3, y3); + PT ( x4, y4); + PT ( x5, y5); + PT ( x6, y6); + PT (1-x5, y5); + PT (1-x4, y4); + PT (1-x3, y3); + PT (1-x2, y2); + PT (1-x1, y1); + PT (1-x0, y0); +# undef PT + + compute_spline (s); + return s; +} + + +#ifdef HAVE_TESS + +static void +tess_error_cb (GLenum errorCode) +{ + fprintf (stderr, "%s: tesselation error: %s\n", + progname, gluErrorString(errorCode)); + exit (0); +} + + +static void +tess_combine_cb (GLdouble coords[3], GLdouble *d[4], GLfloat w[4], + GLdouble **dataOut) +{ + GLdouble *new = (GLdouble *) malloc (3 * sizeof(*new)); + new[0] = coords[0]; + new[1] = coords[1]; + new[2] = coords[2]; + *dataOut = new; +} + + +static void +tess_vertex_cb (void *vertex_data, void *closure) +{ + puzzle_piece *p = (puzzle_piece *) closure; + GLdouble *v = (GLdouble *) vertex_data; + GLdouble x = v[0]; + GLdouble y = v[1]; + GLdouble z = v[2]; + + if (p) + { + GLfloat pw = p->jc->puzzle_width; + GLfloat ph = p->jc->puzzle_height; + + GLfloat xx = x / (GLfloat) resolution_arg; /* 0-1 from piece origin */ + GLfloat yy = y / (GLfloat) resolution_arg; + GLdouble tx = (p->home.x + xx) / pw; /* 0-1 from puzzle origin */ + GLdouble ty = (ph - p->home.y - yy) / ph; + + tx = p->jc->tex_x + (tx * p->jc->tex_width); + ty = p->jc->tex_y + (ty * p->jc->tex_height); + + glTexCoord2d (tx, ty); + } + + glVertex3d (x, y, z); +} + +#else /* HAVE_TESS */ + +/* Writes triangles into the array of floats. + Returns the number of floats written (triangles * 9). + */ +static int +make_piece_eighth (jigsaw_configuration *jc, const spline *s, + int resolution, int type, GLfloat *out, + Bool flip_x, Bool flip_y, Bool rotate_p) +{ + GLfloat *oout = out; + int cx = resolution/2; + int cy = resolution/2; + int np = (s->n_points / 2) + 1; + int last_x = -999999, last_y = -999999; + Bool inflected = False; + int i; + + if (type == FLAT) + { + *out++ = cx; + *out++ = 0; + *out++ = 0; + + *out++ = cx; + *out++ = cy; + *out++ = 0; + + *out++ = 0; + *out++ = 0; + *out++ = 0; + + goto END; + } + + for (i = (type == IN ? np-1 : 0); + (type == IN ? i >= 0 : i < np); + i += (type == IN ? -1 : 1)) + { + int x = s->points[i].x; + int y = s->points[i].y; + + if (type == IN) + y = -y; + + if (last_x != -999999) + { + if (!inflected && + (type == IN + ? x >= last_x + : x < last_x)) + { + inflected = True; + + *out++ = cx; + *out++ = cy; + *out++ = 0; + + *out++ = last_x; + *out++ = last_y; + *out++ = 0; + + if (type == IN) + { + cx = 0; + cy = 0; + } + else + { + cy = y; + } + + *out++ = cx; + *out++ = cy; + *out++ = 0; + } + + *out++ = cx; + *out++ = cy; + *out++ = 0; + + *out++ = last_x; + *out++ = last_y; + *out++ = 0; + + *out++ = x; + *out++ = y; + *out++ = 0; + } + + last_x = x; + last_y = y; + } + END: + + { + int count = out - oout; + Bool cw_p; + + if (flip_x) + for (i = 0; i < count; i += 3) + oout[i] = resolution - oout[i]; + + if (flip_y) + for (i = 0; i < count; i += 3) + oout[i+1] = resolution - oout[i+1]; + + cw_p = (type == IN); + if (flip_x) cw_p = !cw_p; + if (flip_y) cw_p = !cw_p; + + if (cw_p) + for (i = 0; i < count; i += 9) + { + GLfloat x1 = oout[i+0]; + GLfloat y1 = oout[i+1]; + GLfloat x2 = oout[i+3]; + GLfloat y2 = oout[i+4]; + GLfloat x3 = oout[i+6]; + GLfloat y3 = oout[i+7]; + oout[i+0] = x2; + oout[i+1] = y2; + oout[i+3] = x1; + oout[i+4] = y1; + oout[i+6] = x3; + oout[i+7] = y3; + } + + if (rotate_p) + for (i = 0; i < count; i += 3) + { + GLfloat x = oout[i]; + GLfloat y = oout[i+1]; + oout[i] = resolution - y; + oout[i+1] = x; + } + + return count; + } +} + +#endif /* !HAVE_TESS */ + + + +/* Draws a puzzle piece. The top/right/bottom/left_type args + indicate the direction the tabs point: 1 for out, -1 for in, 0 for flat. + */ +static int +draw_piece (jigsaw_configuration *jc, puzzle_piece *p, + int resolution, GLfloat thickness, + int top_type, int right_type, + int bottom_type, int left_type, + Bool wire) +{ + spline *s = make_puzzle_curve (resolution); + GLdouble *pts = (GLdouble *) malloc (s->n_points * 4 * 3 * sizeof(*pts)); + int polys = 0; + int i, o; + GLdouble z = resolution * thickness; + + o = 0; + if (top_type == 0) { + pts[o++] = 0; + pts[o++] = 0; + pts[o++] = z; + + pts[o++] = resolution; + pts[o++] = 0; + pts[o++] = z; + } else { + for (i = 0; i < s->n_points; i++) { + pts[o++] = s->points[i].x; + pts[o++] = s->points[i].y * top_type; + pts[o++] = z; + } + } + + if (right_type == 0) { + pts[o++] = resolution; + pts[o++] = resolution; + pts[o++] = z; + } else { + for (i = 1; i < s->n_points; i++) { + pts[o++] = resolution + s->points[i].y * (-right_type); + pts[o++] = s->points[i].x; + pts[o++] = z; + } + } + + if (bottom_type == 0) { + pts[o++] = 0; + pts[o++] = resolution; + pts[o++] = z; + } else { + for (i = 1; i < s->n_points; i++) { + pts[o++] = s->points[s->n_points-i-1].x; + pts[o++] = resolution + s->points[s->n_points-i-1].y * (-bottom_type); + pts[o++] = z; + } + } + + if (left_type == 0) { + pts[o++] = 0; + pts[o++] = 0; + pts[o++] = z; + } else { + for (i = 1; i < s->n_points; i++) { + pts[o++] = s->points[s->n_points-i-1].y * left_type; + pts[o++] = s->points[s->n_points-i-1].x; + pts[o++] = z; + } + } + + { GLfloat ss = 1.0 / resolution; glScalef (ss, ss, ss); } + +# ifndef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + glPolygonMode (GL_FRONT_AND_BACK, wire ? GL_LINE : GL_FILL); +# endif + + if (wire) + { + glDisable (GL_TEXTURE_2D); + glDisable (GL_BLEND); + glDisable (GL_LIGHTING); + } + else + { +# ifdef HAVE_TESS + +# ifndef _GLUfuncptr +# define _GLUfuncptr void(*)(void) +# endif + GLUtesselator *tess = gluNewTess(); + gluTessCallback(tess, GLU_TESS_BEGIN, (_GLUfuncptr)glBegin); + gluTessCallback(tess, GLU_TESS_VERTEX_DATA,(_GLUfuncptr)tess_vertex_cb); + gluTessCallback(tess, GLU_TESS_END, (_GLUfuncptr)glEnd); + gluTessCallback(tess, GLU_TESS_COMBINE, (_GLUfuncptr)tess_combine_cb); + gluTessCallback(tess, GLU_TESS_ERROR, (_GLUfuncptr)tess_error_cb); + + /* front face */ + glEnable (GL_TEXTURE_2D); + glEnable (GL_BLEND); + glEnable (GL_LIGHTING); + glBindTexture(GL_TEXTURE_2D, jc->texid); + glFrontFace (GL_CCW); + glNormal3f (0, 0, 1); + gluTessBeginPolygon (tess, p); + gluTessBeginContour (tess); + for (i = 0; i < o; i += 3) + { + GLdouble *p = pts + i; + gluTessVertex (tess, p, p); + polys++; /* not quite right but close */ + } + gluTessEndContour(tess); + gluTessEndPolygon(tess); + + /* back face */ + glDisable (GL_TEXTURE_2D); + glFrontFace (GL_CW); + glNormal3f (0, 0, -1); + gluTessBeginPolygon (tess, 0); + gluTessBeginContour (tess); + for (i = 0; i < o; i += 3) + { + GLdouble *p = pts + i; + p[2] = -p[2]; + gluTessVertex (tess, p, p); + polys++; /* not quite right but close */ + } + gluTessEndContour(tess); + gluTessEndPolygon(tess); + gluDeleteTess(tess); + + /* Put it back */ + for (i = 0; i < o; i += 3) + { + GLdouble *p = pts + i; + p[2] = -p[2]; + } + +# else /* !HAVE_TESS */ + + GLfloat *tri = (GLfloat *) + (GLfloat *) malloc (s->n_points * 4 * 3 * 3 * sizeof(*pts)); + GLfloat *otri = tri; + int count; + GLdouble zz; + + tri += make_piece_eighth (jc, s, resolution, top_type, tri, 0, 0, 0); + tri += make_piece_eighth (jc, s, resolution, top_type, tri, 1, 0, 0); + tri += make_piece_eighth (jc, s, resolution, left_type, tri, 0, 1, 1); + tri += make_piece_eighth (jc, s, resolution, left_type, tri, 1, 1, 1); + tri += make_piece_eighth (jc, s, resolution, bottom_type, tri, 0, 1, 0); + tri += make_piece_eighth (jc, s, resolution, bottom_type, tri, 1, 1, 0); + tri += make_piece_eighth (jc, s, resolution, right_type, tri, 0, 0, 1); + tri += make_piece_eighth (jc, s, resolution, right_type, tri, 1, 0, 1); + count = (tri - otri) / 9; + + if (! wire) + { + glEnable (GL_TEXTURE_2D); + glEnable (GL_BLEND); + glEnable (GL_LIGHTING); + glBindTexture(GL_TEXTURE_2D, jc->texid); + } + + for (zz = z; zz >= -z; zz -= 2*z) + { + int i; + glFrontFace (zz > 0 ? GL_CCW : GL_CW); + glNormal3f (0, 0, (zz > 0 ? 1 : -1)); + + if (zz < 0) + glDisable (GL_TEXTURE_2D); /* back face */ + + glPushMatrix(); + glTranslatef (0, 0, zz); + + tri = otri; + if (wire) + { + for (i = 0; i < count; i++) + { + glBegin (GL_LINE_LOOP); + glVertex3f (tri[0], tri[1], tri[2]); tri += 3; + glVertex3f (tri[0], tri[1], tri[2]); tri += 3; + glVertex3f (tri[0], tri[1], tri[2]); tri += 3; + glEnd(); + } + } + else + { + GLfloat pw = p->jc->puzzle_width; + GLfloat ph = p->jc->puzzle_height; + GLfloat r = resolution; + + glBegin (GL_TRIANGLES); + for (i = 0; i < count * 3; i++) + { + GLfloat x = *tri++; + GLfloat y = *tri++; + GLfloat z = *tri++; + + /* 0-1 from piece origin */ + GLfloat xx = x / r; + GLfloat yy = y / r; + + /* 0-1 from puzzle origin */ + GLfloat tx = (p->home.x + xx) / pw; + GLfloat ty = (ph - p->home.y - yy) / ph; + + tx = p->jc->tex_x + (tx * p->jc->tex_width); + ty = p->jc->tex_y + (ty * p->jc->tex_height); + + glTexCoord2f (tx, ty); + glVertex3f (x, y, z); + } + glEnd(); + } + + polys += count; + glPopMatrix(); + } + + free (otri); +# endif /* !HAVE_TESS */ + } + + /* side faces */ + + glFrontFace (GL_CCW); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < o; i += 3) + { + int j = (i+o-3) % o; + int k = (i+3) % o; + GLdouble *p = pts + i; + GLdouble *pj = pts + j; + GLdouble *pk = pts + k; + + do_normal (pj[0], pj[1], pj[2], + pj[0], pj[1], -pj[2], + pk[0], pk[1], pk[2]); + + glVertex3f (p[0], p[1], p[2]); + glVertex3f (p[0], p[1], -p[2]); + polys++; + } + glEnd(); + + if (! wire) + glColor3f (0.3, 0.3, 0.3); + + /* outline the edges in gray */ + + glDisable (GL_TEXTURE_2D); + glDisable (GL_LIGHTING); + glLineWidth (jc->line_thickness); + + glBegin (GL_LINE_LOOP); + for (i = 0; i < o; i += 3) + glVertex3f (pts[i], pts[i+1], pts[i+2]); + glEnd(); + polys += o/3; + + glBegin (GL_LINE_LOOP); + for (i = 0; i < o; i += 3) + glVertex3f (pts[i], pts[i+1], -pts[i+2]); + glEnd(); + polys += o/3; + + free_spline (s); + free (pts); + + return polys; +} + + +static void +free_puzzle_grid (jigsaw_configuration *jc) +{ + int i; + for (i = 0; i < jc->puzzle_width * jc->puzzle_height; i++) + glDeleteLists (jc->puzzle[i].dlist, 1); + free (jc->puzzle); + jc->puzzle = 0; + jc->puzzle_width = 0; + jc->puzzle_height = 0; +} + + +static void +make_puzzle_grid (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int x, y; + GLfloat size = (8 + (random() % 8)) * complexity_arg; + + if (jc->puzzle) + free_puzzle_grid (jc); + + if (wire) + jc->aspect = MI_WIDTH(mi) / (float) MI_HEIGHT(mi); + + if (jc->aspect >= 1.0) + { + jc->puzzle_width = size; + jc->puzzle_height = (size + 0.5) / jc->aspect; + } + else + { + jc->puzzle_width = (size + 0.5) * jc->aspect; + jc->puzzle_height = size; + } + + if (jc->puzzle_width < 1) jc->puzzle_width = 1; + if (jc->puzzle_height < 1) jc->puzzle_height = 1; + + if (debug_p) + fprintf (stderr, "%s: grid %4d x %-4d (%.2f)\n", progname, + jc->puzzle_width, jc->puzzle_height, + ((float) jc->puzzle_width / jc->puzzle_height)); + + jc->puzzle = (puzzle_piece *) + calloc (jc->puzzle_width * (jc->puzzle_height+1), sizeof(*jc->puzzle)); + + /* Randomize the right and bottom edge of each piece. + Match the left edge of the piece to the right to our right edge. + Match the top edge of the piece to the bottom to our bottom edge. + */ + for (y = 0; y < jc->puzzle_height; y++) + for (x = 0; x < jc->puzzle_width; x++) + { + puzzle_piece *p = &jc->puzzle [y * jc->puzzle_width + x]; + puzzle_piece *r = &jc->puzzle [y * jc->puzzle_width + x+1]; + puzzle_piece *b = &jc->puzzle [(y+1) * jc->puzzle_width + x]; + p->edge[RIGHT] = (random() & 1) ? IN : OUT; + p->edge[BOTTOM] = (random() & 1) ? IN : OUT; + r->edge[LEFT] = p->edge[RIGHT] == IN ? OUT : IN; + b->edge[TOP] = p->edge[BOTTOM] == IN ? OUT : IN; + } + + /* tell each piece where it belongs. */ + for (y = 0; y < jc->puzzle_height; y++) + for (x = 0; x < jc->puzzle_width; x++) + { + puzzle_piece *p = &jc->puzzle [y * jc->puzzle_width + x]; + p->jc = jc; + p->home.x = x; + p->home.y = y; + p->current = p->home; + + /* make sure the outer border is flat */ + if (p->home.x == 0) p->edge[LEFT] = FLAT; + if (p->home.y == 0) p->edge[TOP] = FLAT; + if (p->home.x == jc->puzzle_width-1) p->edge[RIGHT] = FLAT; + if (p->home.y == jc->puzzle_height-1) p->edge[BOTTOM] = FLAT; + + /* generate the polygons */ + p->dlist = glGenLists (1); + check_gl_error ("generating lists"); + if (p->dlist <= 0) abort(); + + glNewList (p->dlist, GL_COMPILE); + p->polys += draw_piece (jc, p, + resolution_arg, thickness_arg, + p->edge[TOP], p->edge[RIGHT], + p->edge[BOTTOM], p->edge[LEFT], + wire); + glEndList(); + } +} + + +static void shuffle_grid (ModeInfo *mi); + + +static void +image_loaded_cb (const char *filename, XRectangle *geometry, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + ModeInfo *mi = (ModeInfo *) closure; + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + + jc->tex_x = geometry->x / (float) texture_width; + jc->tex_y = geometry->y / (float) texture_height; + jc->tex_width = geometry->width / (float) texture_width; + jc->tex_height = geometry->height / (float) texture_height; + jc->aspect = geometry->width / (float) geometry->height; + + if (debug_p) + { + fprintf (stderr, "%s: image %s\n", progname, + (filename ? filename : "(null)")); + fprintf (stderr, "%s: image %4d x %-4d + %4d + %-4d (%.2f)\n", progname, + geometry->width, geometry->height, geometry->x, geometry->y, + (float) geometry->width / geometry->height); + fprintf (stderr, "%s: tex %4d x %-4d\n", progname, + texture_width, texture_height); + fprintf (stderr, "%s: tex %4.2f x %4.2f + %4.2f + %4.2f (%.2f)\n", + progname, + jc->tex_width, jc->tex_height, jc->tex_x, jc->tex_y, + (jc->tex_width / jc->tex_height) * + (texture_width / texture_height)); + } + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_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); + + make_puzzle_grid (mi); +} + + +static void +load_image (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + load_texture_async (mi->xgwa.screen, mi->window, + *jc->glx_context, 0, 0, + False, jc->texid, + image_loaded_cb, mi); +} + + +/* Whether the two pieces are the same shape, when the second piece + is rotated by the given degrees. + */ +static Bool +same_shape (puzzle_piece *p0, puzzle_piece *p1, int rotated_by) +{ + switch (rotated_by) + { + case 0: + return (p0->edge[0] == p1->edge[0] && + p0->edge[1] == p1->edge[1] && + p0->edge[2] == p1->edge[2] && + p0->edge[3] == p1->edge[3]); + case 90: + return (p0->edge[0] == p1->edge[1] && + p0->edge[1] == p1->edge[2] && + p0->edge[2] == p1->edge[3] && + p0->edge[3] == p1->edge[0]); + case 180: + return (p0->edge[0] == p1->edge[2] && + p0->edge[1] == p1->edge[3] && + p0->edge[2] == p1->edge[0] && + p0->edge[3] == p1->edge[1]); + case 270: + return (p0->edge[0] == p1->edge[3] && + p0->edge[1] == p1->edge[0] && + p0->edge[2] == p1->edge[1] && + p0->edge[3] == p1->edge[2]); + default: + abort(); + } +} + + +/* Returns the proper rotation for the piece at the given position. + */ +static int +proper_rotation (jigsaw_configuration *jc, puzzle_piece *p, + double x, double y) +{ + puzzle_piece *p1; + int cx = x; + int cy = y; + if (cx != x) abort(); /* must be in integral position! */ + if (cy != y) abort(); + p1 = &jc->puzzle [cy * jc->puzzle_width + cx]; + if (same_shape (p, p1, 0)) return 0; + if (same_shape (p, p1, 90)) return 90; + if (same_shape (p, p1, 180)) return 180; + if (same_shape (p, p1, 270)) return 270; + abort(); /* these two pieces don't match in any rotation! */ +} + + +/* Returns the piece currently at the given position. + */ +static puzzle_piece * +piece_at (jigsaw_configuration *jc, double x, double y) +{ + int npieces = jc->puzzle_width * jc->puzzle_height; + int i; + int cx = x; + int cy = y; + if (cx != x) abort(); /* must be in integral position! */ + if (cy != y) abort(); + + for (i = 0; i < npieces; i++) + { + puzzle_piece *p = &jc->puzzle [i]; + if (p->current.x == cx && + p->current.y == cy) + return p; + } + abort(); /* no piece at that position? */ +} + + +static void +shuffle_grid (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int max_tries = jc->puzzle_width * jc->puzzle_height; + int npieces = jc->puzzle_width * jc->puzzle_height; + int i; + + for (i = 0; i < npieces; i++) + { + puzzle_piece *p0 = &jc->puzzle [i]; + puzzle_piece *p1 = 0; + int k; + + for (k = 0; k < max_tries; k++) + { + p1 = &jc->puzzle [random() % npieces]; + if (same_shape (p0, p1, 0)) break; + if (same_shape (p0, p1, 90)) break; + if (same_shape (p0, p1, 180)) break; + if (same_shape (p0, p1, 270)) break; + p1 = 0; /* mismatch */ + } + if (p1 && p0 != p1) + { + XYZR s; + s = p0->current; p0->current = p1->current; p1->current = s; + p0->current.r = + proper_rotation (jc, p0, p0->current.x, p0->current.y); + p1->current.r = + proper_rotation (jc, p1, p1->current.x, p1->current.y); + } + } +} + + +/* We tend to accumulate floating point errors, e.g., z being 0.000001 + after a move. This makes sure float values that should be integral are. + */ +static void +smooth_grid (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int npieces = jc->puzzle_width * jc->puzzle_height; + int i; + + for (i = 0; i < npieces; i++) + { + puzzle_piece *p = &jc->puzzle [i]; +# define SMOOTH(P) \ + P.x = (int) (P.x + 0.5); \ + P.y = (int) (P.y + 0.5); \ + P.z = (int) (P.z + 0.5); \ + P.r = (int) (P.r + 0.5) + SMOOTH(p->home); + SMOOTH(p->current); + SMOOTH(p->from); + SMOOTH(p->to); + if (p->tick <= 0.0001) p->tick = 0.0; + if (p->tick >= 0.9999) p->tick = 1.0; + } +} + + +static void +begin_scatter (ModeInfo *mi, Bool unscatter_p) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int npieces = jc->puzzle_width * jc->puzzle_height; + int i; + XYZR ctr = { 0, }; + ctr.x = jc->puzzle_width / 2; + ctr.y = jc->puzzle_height / 2; + + for (i = 0; i < npieces; i++) + { + puzzle_piece *p = &jc->puzzle [i]; + XYZ a; + double d, r, th; + p->tick = -frand(1.0); + p->from = p->current; + + a.x = p->from.x - ctr.x; /* position relative to center */ + a.y = p->from.y - ctr.y; + + r = sqrt (a.x*a.x + a.y*a.y); + th = atan2 (a.x, a.y); + + d = MAX (jc->puzzle_width, jc->puzzle_height) * 2; + r = r*r + d; + + p->to.x = ctr.x + (r * sin (th)); + p->to.y = ctr.y + (r * cos (th)); + p->to.z = p->from.z; + p->to.r = ((int) p->from.r + (random() % 180)) % 360; + p->arc_height = frand(10.0); + + if (unscatter_p) + { + XYZR s = p->to; p->to = p->from; p->from = s; + p->current = p->from; + } + } +} + + +static Bool +solved_p (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int npieces = jc->puzzle_width * jc->puzzle_height; + int i; + + for (i = 0; i < npieces; i++) + { + puzzle_piece *p = &jc->puzzle [i]; + if (p->current.x != p->home.x || + p->current.y != p->home.y || + p->current.z != p->home.z) + return False; + } + return True; +} + + +static void +move_one_piece (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int npieces = jc->puzzle_width * jc->puzzle_height; + int i; + + for (i = 0; i < npieces * 100; i++) /* shouldn't take that long */ + { + int i = random() % npieces; + puzzle_piece *p0 = &jc->puzzle [i]; + puzzle_piece *p1; + + if (p0->current.x == p0->home.x && + p0->current.y == p0->home.y && + p0->current.z == p0->home.z) + continue; /* piece already solved - try again */ + + /* swap with the piece occupying p0's home cell. */ + p1 = piece_at (jc, p0->home.x, p0->home.y); + + if (p0 == p1) abort(); /* should have caught this above */ + + p0->tick = 0; + p0->from = p0->current; + p0->to = p1->current; + p0->to.r = proper_rotation (jc, p0, p0->to.x, p0->to.y); + + p1->tick = 0; + p1->from = p1->current; + p1->to = p0->current; + p1->to.r = proper_rotation (jc, p1, p1->to.x, p1->to.y); + + /* Try to avoid having them intersect each other in the air. */ + p0->arc_height = 0; + p1->arc_height = 0; + while (fabs (p0->arc_height - p1->arc_height) < 1.5) + { + p0->arc_height = 0.5 + frand(3.0); + p1->arc_height = 1.0 + frand(3.0); + } + +# define RTILT(V) \ + V = 90 - BELLRAND(180); \ + if (! (random() % 5)) V *= 2; \ + if (! (random() % 5)) V *= 2; \ + if (! (random() % 5)) V *= 2 + RTILT (p0->max_tilt); + RTILT (p1->max_tilt); +# undef RTILT + + if (debug_p) + fprintf (stderr, "%s: swapping %2d,%-2d with %2d,%d\n", progname, + (int) p0->from.x, (int) p0->from.y, + (int) p1->from.x, (int) p1->from.y); + return; + } + + abort(); /* infinite loop! */ +} + + +static Bool +anim_tick (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int npieces = jc->puzzle_width * jc->puzzle_height; + int i; + Bool finished_p = True; + + if (jc->pausing > 0) + { + jc->pausing -= jc->tick_speed * speed; + if (debug_p && jc->pausing <= 0) + fprintf (stderr, "%s: (done pausing)\n", progname); + return False; + } + + for (i = 0; i < npieces; i++) + { + puzzle_piece *p = &jc->puzzle [i]; + double tt; + + if (p->tick >= 1.0) continue; /* this piece is done */ + finished_p = False; /* not done */ + + p->tick += jc->tick_speed * speed; + if (p->tick > 1.0) p->tick = 1.0; + + if (p->tick < 0.0) continue; /* not yet started */ + + tt = 1 - sin (M_PI/2 - p->tick * M_PI/2); + + p->current.x = p->from.x + ((p->to.x - p->from.x) * tt); + p->current.y = p->from.y + ((p->to.y - p->from.y) * tt); + p->current.z = p->from.z + ((p->to.z - p->from.z) * tt); + p->current.r = p->from.r + ((p->to.r - p->from.r) * tt); + + p->current.z += p->arc_height * sin (p->tick * M_PI); + + p->tilt = p->max_tilt * sin (p->tick * M_PI); + + } + + return finished_p; +} + + +static void +loading_msg (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + const char *text = "Loading..."; + XCharStruct e; + int w, h; + texture_string_metrics (jc->texfont, text, &e, 0, 0); + w = e.width; + h = e.ascent + e.descent; + + if (wire) return; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (! jc->loading_dlist) + { + GLfloat othick = jc->line_thickness; + puzzle_piece P = { 0, }; + P.jc = jc; + jc->loading_dlist = glGenLists (1); + glNewList (jc->loading_dlist, GL_COMPILE); + jc->line_thickness = 1; + draw_piece (jc, &P, + resolution_arg, thickness_arg, + OUT, OUT, IN, OUT, True); + jc->line_thickness = othick; + glEndList(); + } + + glColor3f (0.2, 0.2, 0.4); + + glPushMatrix(); + { + double x, y, z; + get_position (jc->rot, &x, &y, &z, True); + glRotatef (x * 360, 1, 0, 0); + glRotatef (y * 360, 0, 1, 0); + glRotatef (z * 360, 0, 0, 1); + glScalef (5, 5, 5); + glTranslatef (-0.5, -0.5, 0); + glCallList (jc->loading_dlist); + } + glPopMatrix(); + + glColor3f (0.7, 0.7, 1); + + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + { + double rot = current_device_rotation(); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (s, 1/s, 1); + } + } + + glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1); + glTranslatef ((MI_WIDTH(mi) - w) / 2, + (MI_HEIGHT(mi) - h) / 2, + 0); + glEnable (GL_TEXTURE_2D); + glPolygonMode (GL_FRONT, GL_FILL); + glDisable (GL_LIGHTING); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + print_texture_string (jc->texfont, text); + glEnable (GL_DEPTH_TEST); + glPopMatrix(); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); +} + + +static void +animate (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + double slow = 0.01; + double fast = 0.04; + + if (jc->button_down_p && jc->state != PUZZLE_LOADING_MSG) + return; + + switch (jc->state) + { + case PUZZLE_LOADING_MSG: + if (! jc->puzzle) + loading_msg (mi); + /* fall through */ + + case PUZZLE_LOADING: + if (!jc->puzzle) break; /* still loading */ + jc->tick_speed = slow; + shuffle_grid (mi); + smooth_grid (mi); + begin_scatter (mi, True); + jc->pausing = 0; + jc->state = PUZZLE_UNSCATTER; + if (debug_p) fprintf (stderr, "%s: unscattering\n", progname); + break; + + case PUZZLE_UNSCATTER: + jc->tick_speed = slow; + if (anim_tick (mi)) + { + smooth_grid (mi); + jc->pausing = 1.0; + jc->state = PUZZLE_SOLVE; + if (debug_p) fprintf (stderr, "%s: solving\n", progname); + } + break; + + case PUZZLE_SOLVE: + jc->tick_speed = fast; + if (anim_tick (mi)) + { + smooth_grid (mi); + if (solved_p (mi)) + { + if (debug_p) fprintf (stderr, "%s: solved!\n", progname); + begin_scatter (mi, False); + jc->state = PUZZLE_SCATTER; + jc->pausing = 3.0; + if (debug_p) fprintf (stderr, "%s: scattering\n", progname); + } + else + { + move_one_piece (mi); + jc->pausing = 0.3; + } + } + break; + + case PUZZLE_SCATTER: + jc->tick_speed = slow; + if (anim_tick (mi)) + { + free_puzzle_grid (jc); + load_image (mi); + jc->state = PUZZLE_LOADING; + jc->pausing = 1.0; + if (debug_p) fprintf (stderr, "%s: loading\n", progname); + } + break; + + default: + abort(); + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_jigsaw (ModeInfo *mi, int width, int height) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); + + jc->line_thickness = (MI_IS_WIREFRAME (mi) ? 1 : MAX (1, height / 300.0)); +} + + +ENTRYPOINT Bool +jigsaw_handle_event (ModeInfo *mi, XEvent *event) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, jc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &jc->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + begin_scatter (mi, False); + jc->state = PUZZLE_SCATTER; + return True; + } + + return False; +} + + +ENTRYPOINT void +init_jigsaw (ModeInfo *mi) +{ + jigsaw_configuration *jc; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, sps); + jc = &sps[MI_SCREEN(mi)]; + jc->glx_context = init_GL(mi); + + reshape_jigsaw (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {0.05, 0.07, 1.00, 0.0}; + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + jc->trackball = gltrackball_init (False); + jc->rot = make_rotator (0, 0, 0, 0, speed * 0.002, True); + jc->texfont = load_texture_font (MI_DISPLAY(mi), "font"); + + jc->state = PUZZLE_LOADING_MSG; + + resolution_arg /= complexity_arg; + +# ifndef HAVE_TESS + /* If it's not even, we get crosses. */ + if (resolution_arg & 1) + resolution_arg++; +# endif /* !HAVE_TESS */ + + if (wire) + make_puzzle_grid (mi); + else + load_image (mi); +} + + +ENTRYPOINT void +draw_jigsaw (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + + if (!jc->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(jc->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + mi->polygon_count = 0; + + glPushMatrix (); +/* glRotatef(current_device_rotation(), 0, 0, 1); */ + gltrackball_rotate (jc->trackball); + + animate (mi); + + if (wobble_p && jc->puzzle) + { + double x, y, z; + double max = 60; + get_position (jc->rot, &x, &y, &z, !jc->button_down_p); + x = 1; /* always lean back */ + glRotatef (max/2 - x*max, 1, 0, 0); + glRotatef (max/2 - z*max, 0, 1, 0); + } + + if (jc->puzzle) + { + GLfloat s = 14.0 / jc->puzzle_height; + int x, y; + + glEnable(GL_CULL_FACE); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_LINE_SMOOTH); + + glScalef (s, s, s); + glTranslatef (-jc->puzzle_width / 2.0, -jc->puzzle_height / 2.0, 0); + + if (! wire) + { + glEnable (GL_TEXTURE_2D); + glEnable (GL_BLEND); + glEnable (GL_LIGHTING); + glEnable (GL_LIGHT0); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + for (y = 0; y < jc->puzzle_height; y++) + for (x = 0; x < jc->puzzle_width; x++) + { + puzzle_piece *p = &jc->puzzle [y * jc->puzzle_width + x]; + glPushMatrix(); + glTranslatef (p->current.x, p->current.y, p->current.z); + glTranslatef (0.5, 0.5, 0); + glRotatef (p->current.r, 0, 0, 1); + glRotatef (p->tilt, 0, 1, 0); + glTranslatef (-0.5, -0.5, 0); + glCallList(p->dlist); + mi->polygon_count += p->polys; + glPopMatrix(); + } + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Jigsaw", jigsaw) + +#endif /* USE_GL */ diff --git a/hacks/glx/jigsaw.man b/hacks/glx/jigsaw.man new file mode 100644 index 0000000..c7d3493 --- /dev/null +++ b/hacks/glx/jigsaw.man @@ -0,0 +1,90 @@ +.TH XScreenSaver 1 "25-Aug-2008" "X Version 11" +.SH NAME +jigsaw - permute an image like a jigsaw puzzle +.SH SYNOPSIS +.B jigsaw +[\-display \fIhost:display.screen\fP] +[\-delay \fIusecs\fP] +[\-speed \fIratio\fP] +[\-complexity \fIratio\fP] +[\-resolution \fIint\fP] +[\-thickness \fIfloat\fP] +[\-no\-wobble] +[\-fps] +.SH DESCRIPTION +The \fIjigsaw\fP program loads an image, carves it up into +a jigsaw puzzle, shuffles it, and then solves it. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. +.SH OPTIONS +.I jigsaw +accepts the following options: +.TP 8 +.B \-delay \fImicroseconds\fP +How long to wait between animation frames; default 20000. +.TP 8 +.B \-speed \fIratio\fP +Less than 1 for slower, greater than 1 for faster. Default 1. +.TP 8 +.B \-complexity \fIratio\fP +Less than 1 for simpler puzzles (fewer pieces), greater than 1 for +more complex puzzles (more pieces). Default 1. +.TP 8 +.B \-resolution \fIratio\fP +Smoothness of the edges of the pieces. Less than 1 for rougher pieces +(fewer polygons), greater than 1 for more smoother pieces (more polygons). +Default 1. +.TP 8 +.B \-thickness \fIfloat\fP +Thickness of the puzzle pieces (relative to their width). +Default 0.06. +.TP 8 +.B \-no\-wobble +Keep the display stationary instead of very slowly wobbling back and forth. +.TP 8 +.B \-fps +Display the current frame rate, polygon count, and CPU load. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 1997 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski , 25-Nov-97. diff --git a/hacks/glx/juggler3d.c b/hacks/glx/juggler3d.c new file mode 100644 index 0000000..0315029 --- /dev/null +++ b/hacks/glx/juggler3d.c @@ -0,0 +1,3022 @@ +/* juggle, Copyright (c) 1996-2009 Tim Auckland + * and Jamie Zawinski + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * NOTE: this program was originally called "juggle" and was 2D Xlib. + * There was another program called "juggler3d" that was OpenGL. + * In 2009, jwz converted "juggle" to OpenGL and renamed + * "juggle" to "juggler3d". The old "juggler3d" hack is gone. + * + * Revision History + * 09-Aug-2009: jwz: converted from Xlib to OpenGL. + * 13-Dec-2004: [TDA] Use -cycles and -count in a rational manner. + * Add -rings, -bballs. Add -describe. Finally made + * live pattern updates possible. Add refill_juggle(), + * change_juggle() and reshape_juggle(). Make + * init_juggle() non-destructive. Reorder erase/draw + * operations. Update xscreensaver xml and manpage. + * 15-Nov-2004: [TDA] Fix all memory leaks. + * 12-Nov-2004: [TDA] Add -torches and another new trail + * implementation, so that different objects can have + * different length trails. + * 11-Nov-2004: [TDA] Clap when all the balls are in the air. + * 10-Nov-2004: [TDA] Display pattern name converted to hight + * notation. + * 31-Oct-2004: [TDA] Add -clubs and new trail implementation. + * 02-Sep-2003: Non-real time to see what is happening without a + * strobe effect for slow machines. + * 01-Nov-2000: Allocation checks + * 1996: Written + */ + +/*- + * TODO + * Implement the anonymously promised -uni option. + */ + + +/* + * Notes on Adam Chalcraft Juggling Notation (used by permission) + * a-> Adam's notation s-> Site swap (Cambridge) notation + * + * To define a map from a-notation to s-notation ("site-swap"), both + * of which look like doubly infinite sequences of natural numbers. In + * s-notation, there is a restriction on what is allowed, namely for + * the sequence s_n, the associated function f(n)=n+s_n must be a + * bijection. In a-notation, there is no restriction. + * + * To go from a-notation to s-notation, you start by mapping each a_n + * to a permutation of N, the natural numbers. + * + * 0 -> the identity + * 1 -> (10) [i.e. f(1)=0, f(0)=1] + * 2 -> (210) [i.e. f(2)=1, f(1)=0, f(0)=2] + * 3 -> (3210) [i.e. f(3)=2, f(2)=1, f(1)=0, f(0)=3] + * etc. + * + * Then for each n, you look at how long 0 takes to get back to 0 + * again and you call this t_n. If a_n=0, for example, then since the + * identity leaves 0 alone, it gets back to 0 in 1 step, so t_n=1. If + * a_n=1, then f(0)=1. Now any further a_n=0 leave 1 alone, but the + * next a_n>0 sends 1 back to 0. Hence t_n is 2 + the number of 0's + * following the 1. Finally, set s_n = t_n - 1. + * + * To give some examples, it helps to have a notation for cyclic + * sequences. By (123), for example, I mean ...123123123123... . Now + * under the a-notation -> s-notation mapping we have some familiar + * examples: + * + * (0)->(0), (1)->(1), (2)->(2) etc. + * (21)->(31), (31)->(51), (41)->(71) etc. + * (10)->(20), (20)->(40), (30)->(60) etc. + * (331)->(441), (312)->(612), (303)->(504), (321)->(531) + * (43)->(53), (434)->(534), (433)->(633) + * (552)->(672) + * + * In general, the number of balls is the *average* of the s-notation, + * and the *maximum* of the a-notation. Another theorem is that the + * minimum values in the a-notation and the s-notation and equal, and + * preserved in the same positions. + * + * The usefulness of a-notation is the fact that there are no + * restrictions on what is allowed. This makes random juggle + * generation much easier. It also makes enumeration very + * easy. Another handy feature is computing changes. Suppose you can + * do (5) and want a neat change up to (771) in s-notation [Mike Day + * actually needed this example!]. Write them both in a-notation, + * which gives (5) and (551). Now concatenate them (in general, there + * may be more than one way to do this, but not in this example), to + * get + * + * ...55555555551551551551551... + * + * Now convert back to s-notation, to get + * + * ...55555566771771771771771... + * + * So the answer is to do two 6 throws and then go straight into + * (771). Coming back down of course, + * + * ...5515515515515515555555555... + * + * converts to + * + * ...7717717717716615555555555... + * + * so the answer is to do a single 661 and then drop straight down to + * (5). + * + * [The number of balls in the generated pattern occasionally changes. + * In order to decrease the number of balls I had to introduce a new + * symbol into the Adam notation, [*] which means 'lose the current + * ball'.] + */ + +/* This code uses so many linked lists it's worth having a built-in + * leak-checker */ +#undef MEMTEST + +# define DEFAULTS "*delay: 10000 \n" \ + "*count: 200 \n" \ + "*cycles: 1000 \n" \ + "*ncolors: 32 \n" \ + "*titleFont: -*-helvetica-bold-r-normal-*-*-180-*-*-*-*-*-*\n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define release_juggle 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "sphere.h" +#include "tube.h" +#include "rotator.h" +#include "gltrackball.h" +#include "texfont.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_PATTERN "random" /* All patterns */ +#define DEF_TAIL "1" /* No trace */ +#ifdef UNI +/* Maybe a ROLA BOLA would be at a better angle for viewing */ +#define DEF_UNI "False" /* No unicycle */ /* Not implemented yet */ +#endif +#define DEF_REAL "True" +#define DEF_DESCRIBE "True" + +#define DEF_BALLS "True" /* Use Balls */ +#define DEF_CLUBS "True" /* Use Clubs */ +#define DEF_TORCHES "True" /* Use Torches */ +#define DEF_KNIVES "True" /* Use Knives */ +#define DEF_RINGS "True" /* Use Rings */ +#define DEF_BBALLS "True" /* Use Bowling Balls */ + +static char *pattern; +static int tail; +#ifdef UNI +static Bool uni; +#endif +static Bool real; +static Bool describe; +static Bool balls; +static Bool clubs; +static Bool torches; +static Bool knives; +static Bool rings; +static Bool bballs; +static char *only; + +static XrmOptionDescRec opts[] = { + {"-pattern", ".juggle.pattern", XrmoptionSepArg, NULL }, + {"-tail", ".juggle.tail", XrmoptionSepArg, NULL }, +#ifdef UNI + {"-uni", ".juggle.uni", XrmoptionNoArg, "on" }, + {"+uni", ".juggle.uni", XrmoptionNoArg, "off" }, +#endif + {"-real", ".juggle.real", XrmoptionNoArg, "on" }, + {"+real", ".juggle.real", XrmoptionNoArg, "off" }, + {"-describe", ".juggle.describe", XrmoptionNoArg, "on" }, + {"+describe", ".juggle.describe", XrmoptionNoArg, "off" }, + {"-balls", ".juggle.balls", XrmoptionNoArg, "on" }, + {"+balls", ".juggle.balls", XrmoptionNoArg, "off" }, + {"-clubs", ".juggle.clubs", XrmoptionNoArg, "on" }, + {"+clubs", ".juggle.clubs", XrmoptionNoArg, "off" }, + {"-torches", ".juggle.torches", XrmoptionNoArg, "on" }, + {"+torches", ".juggle.torches", XrmoptionNoArg, "off" }, + {"-knives", ".juggle.knives", XrmoptionNoArg, "on" }, + {"+knives", ".juggle.knives", XrmoptionNoArg, "off" }, + {"-rings", ".juggle.rings", XrmoptionNoArg, "on" }, + {"+rings", ".juggle.rings", XrmoptionNoArg, "off" }, + {"-bballs", ".juggle.bballs", XrmoptionNoArg, "on" }, + {"+bballs", ".juggle.bballs", XrmoptionNoArg, "off" }, + {"-only", ".juggle.only", XrmoptionSepArg, NULL }, +}; + +static argtype vars[] = { + { &pattern, "pattern", "Pattern", DEF_PATTERN, t_String }, + { &tail, "tail", "Tail", DEF_TAIL, t_Int }, +#ifdef UNI + { &uni, "uni", "Uni", DEF_UNI, t_Bool }, +#endif + { &real, "real", "Real", DEF_REAL, t_Bool }, + { &describe, "describe", "Describe", DEF_DESCRIBE, t_Bool }, + { &balls, "balls", "Clubs", DEF_BALLS, t_Bool }, + { &clubs, "clubs", "Clubs", DEF_CLUBS, t_Bool }, + { &torches, "torches", "Torches", DEF_TORCHES, t_Bool }, + { &knives, "knives", "Knives", DEF_KNIVES, t_Bool }, + { &rings, "rings", "Rings", DEF_RINGS, t_Bool }, + { &bballs, "bballs", "BBalls", DEF_BBALLS, t_Bool }, + { &only, "only", "BBalls", " ", t_String }, +}; + +static OptionStruct desc[] = +{ + { "-pattern string", "Cambridge Juggling Pattern" }, + { "-tail num", "Trace Juggling Patterns" }, +#ifdef UNI + { "-/+uni", "Unicycle" }, +#endif + { "-/+real", "Real-time" }, + { "-/+describe", "turn on/off pattern descriptions." }, + { "-/+balls", "turn on/off Balls." }, + { "-/+clubs", "turn on/off Clubs." }, + { "-/+torches", "turn on/off Flaming Torches." }, + { "-/+knives", "turn on/off Knives." }, + { "-/+rings", "turn on/off Rings." }, + { "-/+bballs", "turn on/off Bowling Balls." }, + { "-only", "Turn off all objects but the named one." }, +}; + +ENTRYPOINT ModeSpecOpt juggle_opts = + {countof(opts), opts, countof(vars), vars, desc}; + + +/* Note: All "lengths" are scaled by sp->scale = MI_HEIGHT/480. All + "thicknesses" are scaled by sqrt(sp->scale) so that they are + proportionally thicker for smaller windows. Objects spinning out + of the plane (such as clubs) fake perspective by compressing their + horizontal coordinates by PERSPEC */ + +/* Figure */ +#define ARMLENGTH 50 +#define ARMWIDTH ((int) (8.0 * sqrt(sp->scale))) +#define POSE 10 +#define BALLRADIUS ARMWIDTH + +/* build all the models assuming a 480px high scene */ +#define SCENE_HEIGHT 480 +#define SCENE_WIDTH ((int)(SCENE_HEIGHT*(MI_WIDTH(mi)/(float)MI_HEIGHT(mi)))) + +/*#define PERSPEC 0.4*/ + +/* macros */ +#define GRAVITY(h, t) 4*(double)(h)/((t)*(t)) + +/* Timing based on count. Units are milliseconds. Juggles per second + is: 2000 / THROW_CATCH_INTERVAL + CATCH_THROW_INTERVAL */ + +#define THROW_CATCH_INTERVAL (sp->count) +#define THROW_NULL_INTERVAL (sp->count * 0.5) +#define CATCH_THROW_INTERVAL (sp->count * 0.2) + +/******************************************************************** + * Trace Definitions * + * * + * These record rendering data so that a drawn object can be erased * + * later. Each object has its own Trace list. * + * * + ********************************************************************/ + +typedef struct {double x, y; } DXPoint; +typedef struct trace *TracePtr; +typedef struct trace { + TracePtr next, prev; + double x, y; + double angle; + int divisions; + DXPoint dlast; +#ifdef MEMTEST + char pad[1024]; +#endif +} Trace; + +/******************************************************************* + * Object Definitions * + * * + * These describe the various types of Object that can be juggled * + * * + *******************************************************************/ +typedef int (DrawProc)(ModeInfo*, unsigned long, Trace *); + +static DrawProc show_ball, show_europeanclub, show_torch, show_knife; +static DrawProc show_ring, show_bball; + +typedef enum {BALL, CLUB, TORCH, KNIFE, RING, BBALLS, + NUM_OBJECT_TYPES} ObjType; + +#define OBJMIXPROB 20 /* inverse of the chances of using an odd + object in the pattern */ + +static const GLfloat body_color_1[4] = { 0.9, 0.7, 0.5, 1 }; +static const GLfloat body_color_2[4] = { 0.6, 0.4, 0.2, 1 }; + +static const struct { + DrawProc *draw; /* Object Rendering function */ + int handle; /* Length of object's handle */ + int mintrail; /* Minimum trail length */ + double cor; /* Coefficient of Restitution. perfect bounce = 1 */ + double weight; /* Heavier objects don't get thrown as high */ +} ObjectDefs[] = { + { /* Ball */ + show_ball, + 0, + 1, + 0.9, + 1.0, + }, + { /* Club */ + show_europeanclub, + 15, + 1, + 0.55, /* Clubs don't bounce too well */ + 1.0, + }, + { /* Torch */ + show_torch, + 15, + 20, /* Torches need flames */ + 0, /* Torches don't bounce -- fire risk! */ + 1.0, + }, + { /* Knife */ + show_knife, + 15, + 1, + 0, /* Knives don't bounce */ + 1.0, + }, + { /* Ring */ + show_ring, + 15, + 1, + 0.8, + 1.0, + }, + { /* Bowling Ball */ + show_bball, + 0, + 1, + 0.2, + 5.0, + }, +}; + +/************************** + * Trajectory definitions * + **************************/ + +typedef enum {HEIGHT, ADAM} Notation; +typedef enum {Empty, Full, Ball} Throwable; +typedef enum {LEFT, RIGHT} Hand; +typedef enum {THROW, CATCH} Action; +typedef enum {HAND, ELBOW, SHOULDER} Joint; +typedef enum {ATCH, THRATCH, ACTION, LINKEDACTION, + PTHRATCH, BPREDICTOR, PREDICTOR} TrajectoryStatus; +typedef struct {double a, b, c, d; } Spline; +typedef DXPoint Arm[3]; + + +/* Object is an arbitrary object being juggled. Each Trajectory + * references an Object ("count" tracks this), and each Object is also + * linked into a global Objects list. Objects may include a Trace + * list for tracking erasures. */ +typedef struct object *ObjectPtr; +typedef struct object { + ObjectPtr next, prev; + + ObjType type; + int color; + int count; /* reference count */ + Bool active; /* Object is in use */ + + Trace *trace; + int tracelen; + int tail; +#ifdef MEMTEST + char pad[1024]; +#endif +} Object; + +/* Trajectory is a segment of juggling action. A list of Trajectories + * defines the juggling performance. The Trajectory list goes through + * multiple processing steps to convert it from basic juggling + * notation into rendering data. */ + +typedef struct trajectory *TrajectoryPtr; +typedef struct trajectory { + TrajectoryPtr prev, next; /* for building list */ + TrajectoryStatus status; + + /* Throw */ + char posn; + int height; + int adam; + char *pattern; + char *name; + + /* Action */ + Hand hand; + Action action; + + /* LinkedAction */ + int color; + Object *object; + int divisions; + double angle, spin; + TrajectoryPtr balllink; + TrajectoryPtr handlink; + + /* PThratch */ + double cx; /* Moving juggler */ + double x, y; /* current position */ + double dx, dy; /* initial velocity */ + + /* Predictor */ + Throwable type; + unsigned long start, finish; + Spline xp, yp; + +#ifdef MEMTEST + char pad[1024]; +#endif +} Trajectory; + + +/******************* + * Pattern Library * + *******************/ + +typedef struct { + const char * pattern; + const char * name; +} patternstruct; + +/* List of popular patterns, in any order */ +/* Patterns should be given in Adam notation so the generator can + concatenate them safely. Null descriptions are ok. Height + notation will be displayed automatically. */ +/* Can't const this because it is qsorted. This *should* be reentrant, + I think... */ +static /*const*/ patternstruct portfolio[] = { + {"[+2 1]", /* +3 1 */ "Typical 2 ball juggler"}, + {"[2 0]", /* 4 0 */ "2 in 1 hand"}, + {"[2 0 1]", /* 5 0 1 */}, + {"[+2 0 +2 0 0]" /* +5 0 +5 0 0 */}, + {"[+2 0 1 2 2]", /* +4 0 1 2 3 */}, + {"[2 0 1 1]", /* 6 0 1 1 */}, + + {"[3]", /* 3 */ "3 cascade"}, + {"[+3]", /* +3 */ "reverse 3 cascade"}, + {"[=3]", /* =3 */ "cascade 3 under arm"}, + {"[&3]", /* &3 */ "cascade 3 catching under arm"}, + {"[_3]", /* _3 */ "bouncing 3 cascade"}, + {"[+3 x3 =3]", /* +3 x3 =3 */ "Mill's mess"}, + {"[3 2 1]", /* 5 3 1" */}, + {"[3 3 1]", /* 4 4 1" */}, + {"[3 1 2]", /* 6 1 2 */ "See-saw"}, + {"[=3 3 1 2]", /* =4 5 1 2 */}, + {"[=3 2 2 3 1 2]", /* =6 2 2 5 1 2 */ "=4 5 1 2 stretched"}, + {"[+3 3 1 3]", /* +4 4 1 3 */ "anemic shower box"}, + {"[3 3 1]", /* 4 4 1 */}, + {"[+3 2 3]", /* +4 2 3 */}, + {"[+3 1]", /* +5 1 */ "3 shower"}, + {"[_3 1]", /* _5 1 */ "bouncing 3 shower"}, + {"[3 0 3 0 3]", /* 5 0 5 0 5 */ "shake 3 out of 5"}, + {"[3 3 3 0 0]", /* 5 5 5 0 0 */ "flash 3 out of 5"}, + {"[3 3 0]", /* 4 5 0 */ "complete waste of a 5 ball juggler"}, + {"[3 3 3 0 0 0 0]", /* 7 7 7 0 0 0 0 */ "3 flash"}, + {"[+3 0 +3 0 +3 0 0]", /* +7 0 +7 0 +7 0 0 */}, + {"[3 2 2 0 3 2 0 2 3 0 2 2 0]", /* 7 3 3 0 7 3 0 3 7 0 3 3 0 */}, + {"[3 0 2 0]", /* 8 0 4 0 */}, + {"[_3 2 1]", /* _5 3 1 */}, + {"[_3 0 1]", /* _8 0 1 */}, + {"[1 _3 1 _3 0 1 _3 0]", /* 1 _7 1 _7 0 1 _7 0 */}, + {"[_3 2 1 _3 1 2 1]", /* _6 3 1 _6 1 3 1 */}, + + {"[4]", /* 4 */ "4 cascade"}, + {"[+4 3]", /* +5 3 */ "4 ball half shower"}, + {"[4 4 2]", /* 5 5 2 */}, + {"[+4 4 4 +4]", /* +4 4 4 +4 */ "4 columns"}, + {"[+4 3 +4]", /* +5 3 +4 */}, + {"[4 3 4 4]", /* 5 3 4 4 */}, + {"[4 3 3 4]", /* 6 3 3 4 */}, + {"[4 3 2 4", /* 6 4 2 4 */}, + {"[+4 1]", /* +7 1 */ "4 shower"}, + {"[4 4 4 4 0]", /* 5 5 5 5 0 */ "learning 5"}, + {"[+4 x4 =4]", /* +4 x4 =4 */ "Mill's mess for 4"}, + {"[+4 2 1 3]", /* +9 3 1 3 */}, + {"[4 4 1 4 1 4]", /* 6 6 1 5 1 5, by Allen Knutson */}, + {"[_4 _4 _4 1 _4 1]", /* _5 _6 _6 1 _5 1 */}, + {"[_4 3 3]", /* _6 3 3 */}, + {"[_4 3 1]", /* _7 4 1 */}, + {"[_4 2 1]", /* _8 3 1 */}, + {"[_4 3 3 3 0]", /* _8 4 4 4 0 */}, + {"[_4 1 3 1]", /* _9 1 5 1 */}, + {"[_4 1 3 1 2]", /* _10 1 6 1 2 */}, + + {"[5]", /* 5 */ "5 cascade"}, + {"[_5 _5 _5 _5 _5 5 5 5 5 5]", /* _5 _5 _5 _5 _5 5 5 5 5 5 */}, + {"[+5 x5 =5]", /* +5 x5 =5 */ "Mill's mess for 5"}, + {"[5 4 4]", /* 7 4 4 */}, + {"[_5 4 4]", /* _7 4 4 */}, + {"[1 2 3 4 5 5 5 5 5]", /* 1 2 3 4 5 6 7 8 9 */ "5 ramp"}, + {"[5 4 5 3 1]", /* 8 5 7 4 1, by Allen Knutson */}, + {"[_5 4 1 +4]", /* _9 5 1 5 */}, + {"[_5 4 +4 +4]", /* _8 4 +4 +4 */}, + {"[_5 4 4 4 1]", /* _9 5 5 5 1 */}, + {"[_5 4 4 5 1]",}, + {"[_5 4 4 +4 4 0]", /*_10 5 5 +5 5 0 */}, + + {"[6]", /* 6 */ "6 cascade"}, + {"[+6 5]", /* +7 5 */}, + {"[6 4]", /* 8 4 */}, + {"[+6 3]", /* +9 3 */}, + {"[6 5 4 4]", /* 9 7 4 4 */}, + {"[+6 5 5 5]", /* +9 5 5 5 */}, + {"[6 0 6]", /* 9 0 9 */}, + {"[_6 0 _6]", /* _9 0 _9 */}, + + {"[_7]", /* _7 */ "bouncing 7 cascade"}, + {"[7]", /* 7 */ "7 cascade"}, + {"[7 6 6 6 6]", /* 11 6 6 6 6 */ "Gatto's High Throw"}, + +}; + + + +typedef struct { int start; int number; } PatternIndex; + +struct patternindex { + int minballs; + int maxballs; + PatternIndex index[countof(portfolio)]; +}; + + +/* Jugglestruct: per-screen global data. The master Object + * and Trajectory lists are anchored here. */ +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + double scale; + double cx; + double Gr; + Trajectory *head; + Arm arm[2][2]; + char *pattern; + int count; + int num_balls; + time_t begintime; /* should make 'time' usable for at least 48 days + on a 32-bit machine */ + unsigned long time; /* millisecond timer*/ + ObjType objtypes; + Object *objects; + struct patternindex patternindex; + texture_font_data *font_data; +} jugglestruct; + +static jugglestruct *juggles = (jugglestruct *) NULL; + +/******************* + * list management * + *******************/ + +#define DUP_OBJECT(n, t) { \ + (n)->object = (t)->object; \ + if((n)->object != NULL) (n)->object->count++; \ +} + +/* t must point to an existing element. t must not be an + expression ending ->next or ->prev */ +#define REMOVE(t) { \ + (t)->next->prev = (t)->prev; \ + (t)->prev->next = (t)->next; \ + free(t); \ +} + +/* t receives element to be created and added to the list. ot must + point to an existing element or be identical to t to start a new + list. Applicable to Trajectories, Objects and Traces. */ +#define ADD_ELEMENT(type, t, ot) \ + if (((t) = (type*)calloc(1,sizeof(type))) != NULL) { \ + (t)->next = (ot)->next; \ + (t)->prev = (ot); \ + (ot)->next = (t); \ + (t)->next->prev = (t); \ + } + +static void +object_destroy(Object* o) +{ + if(o->trace != NULL) { + while(o->trace->next != o->trace) { + Trace *s = o->trace->next; + REMOVE(s); /* Don't eliminate 's' */ + } + free(o->trace); + } + REMOVE(o); +} + +static void +trajectory_destroy(Trajectory *t) { + if(t->name != NULL) free(t->name); + if(t->pattern != NULL) free(t->pattern); + /* Reduce object link count and call destructor if necessary */ + if(t->object != NULL && --t->object->count < 1 && t->object->tracelen == 0) { + object_destroy(t->object); + } + REMOVE(t); /* Unlink and free */ +} + +ENTRYPOINT void +free_juggle(ModeInfo *mi) { + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + + if (sp->head != NULL) { + while (sp->head->next != sp->head) { + trajectory_destroy(sp->head->next); + } + free(sp->head); + sp->head = (Trajectory *) NULL; + } + if(sp->objects != NULL) { + while (sp->objects->next != sp->objects) { + object_destroy(sp->objects->next); + } + free(sp->objects); + sp->objects = (Object*)NULL; + } + if(sp->pattern != NULL) { + free(sp->pattern); + sp->pattern = NULL; + } +} + +static Bool +add_throw(ModeInfo *mi, char type, int h, Notation n, const char* name) +{ + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + Trajectory *t; + + ADD_ELEMENT(Trajectory, t, sp->head->prev); + if(t == NULL){ /* Out of Memory */ + free_juggle(mi); + return False; + } + t->object = NULL; + if(name != NULL) + t->name = strdup(name); + t->posn = type; + if (n == ADAM) { + t->adam = h; + t->height = 0; + t->status = ATCH; + } else { + t->height = h; + t->status = THRATCH; + } + return True; +} + +/* add a Thratch to the performance */ +static Bool +program(ModeInfo *mi, const char *patn, const char *name, int cycles) +{ + const char *p; + int w, h, i, seen; + Notation notation; + char type; + + if (MI_IS_VERBOSE(mi)) { + (void) fprintf(stderr, "juggle[%d]: Programmed: %s x %d\n", + MI_SCREEN(mi), (name == NULL) ? patn : name, cycles); + } + + for(w=i=0; i < cycles; i++, w++) { /* repeat until at least "cycles" throws + have been programmed */ + /* title is the pattern name to be supplied to the first throw of + a sequence. If no name if given, use an empty title so that + the sequences are still delimited. */ + const char *title = (name != NULL)? name : ""; + type=' '; + h = 0; + seen = 0; + notation = HEIGHT; + for(p=patn; *p; p++) { + if (*p >= '0' && *p <='9') { + seen = 1; + h = 10*h + (*p - '0'); + } else { + Notation nn = notation; + switch (*p) { + case '[': /* begin Adam notation */ + notation = ADAM; + break; + case '-': /* Inside throw */ + type = ' '; + break; + case '+': /* Outside throw */ + case '=': /* Cross throw */ + case '&': /* Cross catch */ + case 'x': /* Cross throw and catch */ + case '_': /* Bounce */ + case 'k': /* Kickup */ + type = *p; + break; + case '*': /* Lose ball */ + seen = 1; + h = -1; + /* fall through */ + case ']': /* end Adam notation */ + nn = HEIGHT; + /* fall through */ + case ' ': + if (seen) { + i++; + if (!add_throw(mi, type, h, notation, title)) + return False; + title = NULL; + type=' '; + h = 0; + seen = 0; + } + notation = nn; + break; + default: + if(w == 0) { /* Only warn on first pass */ + (void) fprintf(stderr, + "juggle[%d]: Unexpected pattern instruction: '%c'\n", + MI_SCREEN(mi), *p); + } + break; + } + } + } + if (seen) { /* end of sequence */ + if (!add_throw(mi, type, h, notation, title)) + return False; + title = NULL; + } + } + return True; +} + +/* + ~~~~\~~~~~\~~~ + \\~\\~\~\\\~~~ + \\~\\\\~\\\~\~ + \\\\\\\\\\\~\\ + +[ 3 3 1 3 4 2 3 1 3 3 4 0 2 1 ] + +4 4 1 3 12 2 4 1 4 4 13 0 3 1 + +*/ +#define BOUNCEOVER 10 +#define KICKMIN 7 +#define THROWMAX 20 + +/* Convert Adam notation into heights */ +static void +adam(jugglestruct *sp) +{ + Trajectory *t, *p; + for(t = sp->head->next; t != sp->head; t = t->next) { + if (t->status == ATCH) { + int a = t->adam; + t->height = 0; + for(p = t->next; a > 0; p = p->next) { + if(p == sp->head) { + t->height = -9; /* Indicate end of processing for name() */ + return; + } + if (p->status != ATCH || p->adam < 0 || p->adam>= a) { + a--; + } + t->height++; + } + if(t->height > BOUNCEOVER && t->posn == ' '){ + t->posn = '_'; /* high defaults can be bounced */ + } else if(t->height < 3 && t->posn == '_') { + t->posn = ' '; /* Can't bounce short throws. */ + } + if(t->height < KICKMIN && t->posn == 'k'){ + t->posn = ' '; /* Can't kick short throws */ + } + if(t->height > THROWMAX){ + t->posn = 'k'; /* Use kicks for ridiculously high throws */ + } + t->status = THRATCH; + } + } +} + +/* Discover converted heights and update the sequence title */ +static void +name(jugglestruct *sp) +{ + Trajectory *t, *p; + char buffer[BUFSIZ]; + char *b; + for(t = sp->head->next; t != sp->head; t = t->next) { + if (t->status == THRATCH && t->name != NULL) { + b = buffer; + for(p = t; p == t || p->name == NULL; p = p->next) { + if(p == sp->head || p->height < 0) { /* end of reliable data */ + return; + } + if(p->posn == ' ') { + b += sprintf(b, " %d", p->height); + } else { + b += sprintf(b, " %c%d", p->posn, p->height); + } + if(b - buffer > 500) break; /* otherwise this could eventually + overflow. It'll be too big to + display anyway. */ + } + if(*t->name != 0) { + (void) sprintf(b, ", %s", t->name); + } + free(t->name); /* Don't need name any more, it's been converted + to pattern */ + t->name = NULL; + if(t->pattern != NULL) free(t->pattern); + t->pattern = strdup(buffer); + } + } +} + +/* Split Thratch notation into explicit throws and catches. + Usually Catch follows Throw in same hand, but take care of special + cases. */ + +/* ..n1.. -> .. LTn RT1 LC RC .. */ +/* ..nm.. -> .. LTn LC RTm RC .. */ + +static Bool +part(ModeInfo *mi) +{ + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + Trajectory *t, *nt, *p; + Hand hand = (LRAND() & 1) ? RIGHT : LEFT; + + for (t = sp->head->next; t != sp->head; t = t->next) { + if (t->status > THRATCH) { + hand = t->hand; + } else if (t->status == THRATCH) { + char posn = '='; + + /* plausibility check */ + if (t->height <= 2 && t->posn == '_') { + t->posn = ' '; /* no short bounces */ + } + if (t->height <= 1 && (t->posn == '=' || t->posn == '&')) { + t->posn = ' '; /* 1's need close catches */ + } + + switch (t->posn) { + /* throw catch */ + case ' ': posn = '-'; t->posn = '+'; break; + case '+': posn = '+'; t->posn = '-'; break; + case '=': posn = '='; t->posn = '+'; break; + case '&': posn = '+'; t->posn = '='; break; + case 'x': posn = '='; t->posn = '='; break; + case '_': posn = '_'; t->posn = '-'; break; + case 'k': posn = 'k'; t->posn = 'k'; break; + default: + (void) fprintf(stderr, "juggle: unexpected posn %c\n", t->posn); + break; + } + hand = (Hand) ((hand + 1) % 2); + t->status = ACTION; + t->hand = hand; + p = t->prev; + + if (t->height == 1 && p != sp->head) { + p = p->prev; /* '1's are thrown earlier than usual */ + } + + + + t->action = CATCH; + ADD_ELEMENT(Trajectory, nt, p); + if(nt == NULL){ + free_juggle(mi); + return False; + } + nt->object = NULL; + nt->status = ACTION; + nt->action = THROW; + nt->height = t->height; + nt->hand = hand; + nt->posn = posn; + + } + } + return True; +} + +static ObjType +choose_object(void) { + ObjType o; + for (;;) { + o = (ObjType)NRAND((ObjType)NUM_OBJECT_TYPES); + if(balls && o == BALL) break; + if(clubs && o == CLUB) break; + if(torches && o == TORCH) break; + if(knives && o == KNIFE) break; + if(rings && o == RING) break; + if(bballs && o == BBALLS) break; + } + return o; +} + +/* Connnect up throws and catches to figure out which ball goes where. + Do the same with the juggler's hands. */ + +static void +lob(ModeInfo *mi) +{ + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + Trajectory *t, *p; + int h; + for (t = sp->head->next; t != sp->head; t = t->next) { + if (t->status == ACTION) { + if (t->action == THROW) { + if (t->type == Empty) { + /* Create new Object */ + ADD_ELEMENT(Object, t->object, sp->objects); + t->object->count = 1; + t->object->tracelen = 0; + t->object->active = False; + /* Initialise object's circular trace list */ + ADD_ELEMENT(Trace, t->object->trace, t->object->trace); + + if (MI_NPIXELS(mi) > 2) { + t->object->color = 1 + NRAND(MI_NPIXELS(mi) - 2); + } else { +#ifdef STANDALONE + t->object->color = 1; +#else + t->object->color = 0; +#endif + } + + /* Small chance of picking a random object instead of the + current theme. */ + if(NRAND(OBJMIXPROB) == 0) { + t->object->type = choose_object(); + } else { + t->object->type = sp->objtypes; + } + + /* Check to see if we need trails for this object */ + if(tail < ObjectDefs[t->object->type].mintrail) { + t->object->tail = ObjectDefs[t->object->type].mintrail; + } else { + t->object->tail = tail; + } + } + + /* Balls can change divisions at each throw */ + /* no, that looks stupid. -jwz */ + if (t->divisions < 1) + t->divisions = 2 * (NRAND(2) + 1); + + /* search forward for next catch in this hand */ + for (p = t->next; t->handlink == NULL; p = p->next) { + if(p->status < ACTION || p == sp->head) return; + if (p->action == CATCH) { + if (t->handlink == NULL && p->hand == t->hand) { + t->handlink = p; + } + } + } + + if (t->height > 0) { + h = t->height - 1; + + /* search forward for next ball catch */ + for (p = t->next; t->balllink == NULL; p = p->next) { + if(p->status < ACTION || p == sp->head) { + t->handlink = NULL; + return; + } + if (p->action == CATCH) { + if (t->balllink == NULL && --h < 1) { /* caught */ + t->balllink = p; /* complete trajectory */ +# if 0 + if (p->type == Full) { + (void) fprintf(stderr, "juggle[%d]: Dropped %d\n", + MI_SCREEN(mi), t->object->color); + } +#endif + p->type = Full; + DUP_OBJECT(p, t); /* accept catch */ + p->angle = t->angle; + p->divisions = t->divisions; + } + } + } + } + t->type = Empty; /* thrown */ + } else if (t->action == CATCH) { + /* search forward for next throw from this hand */ + for (p = t->next; t->handlink == NULL; p = p->next) { + if(p->status < ACTION || p == sp->head) return; + if (p->action == THROW && p->hand == t->hand) { + p->type = t->type; /* pass ball */ + DUP_OBJECT(p, t); /* pass object */ + p->divisions = t->divisions; + t->handlink = p; + } + } + } + t->status = LINKEDACTION; + } + } +} + +/* Clap when both hands are empty */ +static void +clap(jugglestruct *sp) +{ + Trajectory *t, *p; + for (t = sp->head->next; t != sp->head; t = t->next) { + if (t->status == LINKEDACTION && + t->action == CATCH && + t->type == Empty && + t->handlink != NULL && + t->handlink->height == 0) { /* Completely idle hand */ + + for (p = t->next; p != sp->head; p = p->next) { + if (p->status == LINKEDACTION && + p->action == CATCH && + p->hand != t->hand) { /* Next catch other hand */ + if(p->type == Empty && + p->handlink != NULL && + p->handlink->height == 0) { /* Also completely idle */ + + t->handlink->posn = '^'; /* Move first hand's empty throw */ + p->posn = '^'; /* to meet second hand's empty + catch */ + + } + break; /* Only need first catch */ + } + } + } + } +} + +#define CUBIC(s, t) ((((s).a * (t) + (s).b) * (t) + (s).c) * (t) + (s).d) + +/* Compute single spline from x0 with velocity dx0 at time t0 to x1 + with velocity dx1 at time t1 */ +static Spline +makeSpline(double x0, double dx0, int t0, double x1, double dx1, int t1) +{ + Spline s; + double a, b, c, d; + double x10; + double t10; + + x10 = x1 - x0; + t10 = t1 - t0; + a = ((dx0 + dx1)*t10 - 2*x10) / (t10*t10*t10); + b = (3*x10 - (2*dx0 + dx1)*t10) / (t10*t10); + c = dx0; + d = x0; + s.a = a; + s.b = -3*a*t0 + b; + s.c = (3*a*t0 - 2*b)*t0 + c; + s.d = ((-a*t0 + b)*t0 - c)*t0 +d; + return s; +} + +/* Compute a pair of splines. s1 goes from x0 vith velocity dx0 at + time t0 to x1 at time t1. s2 goes from x1 at time t1 to x2 with + velocity dx2 at time t2. The arrival and departure velocities at + x1, t1 must be the same. */ +static double +makeSplinePair(Spline *s1, Spline *s2, + double x0, double dx0, int t0, + double x1, int t1, + double x2, double dx2, int t2) +{ + double x10, x21, t21, t10, t20, dx1; + x10 = x1 - x0; + x21 = x2 - x1; + t21 = t2 - t1; + t10 = t1 - t0; + t20 = t2 - t0; + dx1 = (3*x10*t21*t21 + 3*x21*t10*t10 + 3*dx0*t10*t21*t21 + - dx2*t10*t10*t21 - 4*dx0*t10*t21*t21) / + (2*t10*t21*t20); + *s1 = makeSpline(x0, dx0, t0, x1, dx1, t1); + *s2 = makeSpline(x1, dx1, t1, x2, dx2, t2); + return dx1; +} + +/* Compute a Ballistic path in a pair of degenerate splines. sx goes + from x at time t at constant velocity dx. sy goes from y at time t + with velocity dy and constant acceleration g. */ +static void +makeParabola(Trajectory *n, + double x, double dx, double y, double dy, double g) +{ + double t = (double)n->start; + n->xp.a = 0; + n->xp.b = 0; + n->xp.c = dx; + n->xp.d = -dx*t + x; + n->yp.a = 0; + n->yp.b = g/2; + n->yp.c = -g*t + dy; + n->yp.d = g/2*t*t - dy*t + y; +} + + + + +#define SX 25 /* Shoulder Width */ + +/* Convert hand position symbols into actual time/space coordinates */ +static void +positions(jugglestruct *sp) +{ + Trajectory *t; + unsigned long now = sp->time; /* Make sure we're not lost in the past */ + for (t = sp->head->next; t != sp->head; t = t->next) { + if (t->status >= PTHRATCH) { + now = t->start; + } else if (t->status == ACTION || t->status == LINKEDACTION) { + /* Allow ACTIONs to be annotated, but we won't mark them ready + for the next stage */ + + double xo = 0, yo; + double sx = SX; + double pose = SX/2; + + /* time */ + if (t->action == CATCH) { /* Throw-to-catch */ + if (t->type == Empty) { + now += (int) THROW_NULL_INTERVAL; /* failed catch is short */ + } else { /* successful catch */ + now += (int)(THROW_CATCH_INTERVAL); + } + } else { /* Catch-to-throw */ + if(t->object != NULL) { + now += (int) (CATCH_THROW_INTERVAL * + ObjectDefs[t->object->type].weight); + } else { + now += (int) (CATCH_THROW_INTERVAL); + } + } + + if(t->start == 0) + t->start = now; + else /* Concatenated performances may need clock resync */ + now = t->start; + + t->cx = 0; + + /* space */ + yo = 90; + + /* Add room for the handle */ + if(t->action == CATCH && t->object != NULL) + yo -= ObjectDefs[t->object->type].handle; + + switch (t->posn) { + case '-': xo = sx - pose; break; + case '_': + case 'k': + case '+': xo = sx + pose; break; + case '~': + case '=': xo = - sx - pose; yo += pose; break; + case '^': xo = 0; yo += pose*2; break; /* clap */ + default: + (void) fprintf(stderr, "juggle: unexpected posn %c\n", t->posn); + break; + } + +#ifdef _2DSpinsDontWorkIn3D + t->angle = (((t->hand == LEFT) ^ + (t->posn == '+' || t->posn == '_' || t->posn == 'k' ))? + -1 : 1) * M_PI/2; +#else + t->angle = -M_PI/2; +#endif + + t->x = t->cx + ((t->hand == LEFT) ? xo : -xo); + t->y = yo; + + /* Only mark complete if it was already linked */ + if(t->status == LINKEDACTION) { + t->status = PTHRATCH; + } + } + } +} + + +/* Private physics functions */ + +/* Compute the spin-rate for a trajectory. Different types of throw + (eg, regular thows, bounces, kicks, etc) have different spin + requirements. + + type = type of object + h = trajectory of throwing hand (throws), or next throwing hand (catches) + old = earlier spin to consider + dt = time span of this trajectory + height = height of ball throw or 0 if based on old spin + turns = full club turns required during this operation + togo = partial club turns required to match hands +*/ +static double +spinrate(ObjType type, Trajectory *h, double old, double dt, + int height, int turns, double togo) +{ +#ifdef _2DSpinsDontWorkIn3D + const int dir = (h->hand == LEFT) ^ (h->posn == '+')? -1 : 1; +#else + const int dir = 1; +#endif + + if(ObjectDefs[type].handle != 0) { /* Clubs */ + return (dir * turns * 2 * M_PI + togo) / dt; + } else if(height == 0) { /* Balls already spinning */ + return old/2; + } else { /* Balls */ + return dir * NRAND(height*10)/20/ObjectDefs[type].weight * 2 * M_PI / dt; + } +} + + +/* compute the angle at the end of a spinning trajectory */ +static double +end_spin(Trajectory *t) +{ + return t->angle + t->spin * (t->finish - t->start); +} + +/* Sets the initial angle of the catch following hand movement t to + the final angle of the throw n. Also sets the angle of the + subsequent throw to the same angle plus half a turn. */ +static void +match_spins_on_catch(Trajectory *t, Trajectory *n) +{ + if(ObjectDefs[t->balllink->object->type].handle == 0) { + t->balllink->angle = end_spin(n); + if(t->balllink->handlink != NULL) { +#ifdef _2DSpinsDontWorkIn3D + t->balllink->handlink->angle = t->balllink->angle + M_PI; +#else + t->balllink->handlink->angle = t->balllink->angle; +#endif + } + } +} + +static double +find_bounce(jugglestruct *sp, + double yo, double yf, double yc, double tc, double cor) +{ + double tb, i, dy = 0; + const double e = 1; /* permissible error in yc */ + + /* + tb = time to bounce + yt = height at catch time after one bounce + one or three roots according to timing + find one by interval bisection + */ + tb = tc; + for(i = tc / 2; i > 0.0001; i/=2){ + double dt, yt; + if(tb == 0){ + (void) fprintf(stderr, "juggle: bounce div by zero!\n"); + break; + } + dy = (yf - yo)/tb + sp->Gr/2*tb; + dt = tc - tb; + yt = -cor*dy*dt + sp->Gr/2*dt*dt + yf; + if(yt < yc + e){ + tb-=i; + }else if(yt > yc - e){ + tb+=i; + }else{ + break; + } + } + if(dy*THROW_CATCH_INTERVAL < -200) { /* bounce too hard */ + tb = -1; + } + return tb; +} + +static Trajectory* +new_predictor(const Trajectory *t, int start, int finish, double angle) +{ + Trajectory *n; + ADD_ELEMENT(Trajectory, n, t->prev); + if(n == NULL){ + return NULL; + } + DUP_OBJECT(n, t); + n->divisions = t->divisions; + n->type = Ball; + n->status = PREDICTOR; + + n->start = start; + n->finish = finish; + n->angle = angle; + return n; +} + +/* Turn abstract timings into physically appropriate object trajectories. */ +static Bool +projectile(jugglestruct *sp) +{ + Trajectory *t; + const int yf = 0; /* Floor height */ + + for (t = sp->head->next; t != sp->head; t = t->next) { + if (t->status != PTHRATCH || t->action != THROW) { + continue; + } else if (t->balllink == NULL) { /* Zero Throw */ + t->status = BPREDICTOR; + } else if (t->balllink->handlink == NULL) { /* Incomplete */ + return True; + } else if(t->balllink == t->handlink) { + /* '2' height - hold on to ball. Don't need to consider + flourishes, 'hands' will do that automatically anyway */ + + t->type = Full; + /* Zero spin to avoid wrist injuries */ + t->spin = 0; + match_spins_on_catch(t, t); + t->dx = t->dy = 0; + t->status = BPREDICTOR; + continue; + } else { + if (t->posn == '_') { /* Bounce once */ + + const int tb = t->start + + find_bounce(sp, t->y, (double) yf, t->balllink->y, + (double) (t->balllink->start - t->start), + ObjectDefs[t->object->type].cor); + + if(tb < t->start) { /* bounce too hard */ + t->posn = '+'; /* Use regular throw */ + } else { + Trajectory *n; /* First (throw) trajectory. */ + double dt; /* Time span of a trajectory */ + double dy; /* Distance span of a follow-on trajectory. + First trajectory uses t->dy */ + /* dx is constant across both trajectories */ + t->dx = (t->balllink->x - t->x) / (t->balllink->start - t->start); + + { /* ball follows parabola down */ + n = new_predictor(t, t->start, tb, t->angle); + if(n == NULL) return False; + dt = n->finish - n->start; + /* Ball rate 4, no flight or matching club turns */ + n->spin = spinrate(t->object->type, t, 0.0, dt, 4, 0, 0.0); + t->dy = (yf - t->y)/dt - sp->Gr/2*dt; + makeParabola(n, t->x, t->dx, t->y, t->dy, sp->Gr); + } + + { /* ball follows parabola up */ + Trajectory *m = new_predictor(t, n->finish, t->balllink->start, + end_spin(n)); + if(m == NULL) return False; + dt = m->finish - m->start; + /* Use previous ball rate, no flight club turns */ + m->spin = spinrate(t->object->type, t, n->spin, dt, 0, 0, + t->balllink->angle - m->angle); + match_spins_on_catch(t, m); + dy = (t->balllink->y - yf)/dt - sp->Gr/2 * dt; + makeParabola(m, t->balllink->x - t->dx * dt, + t->dx, (double) yf, dy, sp->Gr); + } + + t->status = BPREDICTOR; + continue; + } + } else if (t->posn == 'k') { /* Drop & Kick */ + Trajectory *n; /* First (drop) trajectory. */ + Trajectory *o; /* Second (rest) trajectory */ + Trajectory *m; /* Third (kick) trajectory */ + const int td = t->start + 2*THROW_CATCH_INTERVAL; /* Drop time */ + const int tk = t->balllink->start - 5*THROW_CATCH_INTERVAL; /* Kick */ + double dt, dy; + + { /* Fall to ground */ + n = new_predictor(t, t->start, td, t->angle); + if(n == NULL) return False; + dt = n->finish - n->start; + /* Ball spin rate 4, no flight club turns */ + n->spin = spinrate(t->object->type, t, 0.0, dt, 4, 0, + t->balllink->angle - n->angle); + t->dx = (t->balllink->x - t->x) / dt; + t->dy = (yf - t->y)/dt - sp->Gr/2*dt; + makeParabola(n, t->x, t->dx, t->y, t->dy, sp->Gr); + } + + { /* Rest on ground */ + o = new_predictor(t, n->finish, tk, end_spin(n)); + if(o == NULL) return False; + o->spin = 0; + makeParabola(o, t->balllink->x, 0.0, (double) yf, 0.0, 0.0); + } + + /* Kick up */ + { + m = new_predictor(t, o->finish, t->balllink->start, end_spin(o)); + if(m == NULL) return False; + dt = m->finish - m->start; + /* Match receiving hand, ball rate 4, one flight club turn */ + m->spin = spinrate(t->object->type, t->balllink->handlink, 0.0, dt, + 4, 1, t->balllink->angle - m->angle); + match_spins_on_catch(t, m); + dy = (t->balllink->y - yf)/dt - sp->Gr/2 * dt; + makeParabola(m, t->balllink->x, 0.0, (double) yf, dy, sp->Gr); + } + + t->status = BPREDICTOR; + continue; + } + + /* Regular flight, no bounce */ + { /* ball follows parabola */ + double dt; + Trajectory *n = new_predictor(t, t->start, + t->balllink->start, t->angle); + if(n == NULL) return False; + dt = t->balllink->start - t->start; + /* Regular spin */ + n->spin = spinrate(t->object->type, t, 0.0, dt, t->height, t->height/2, + t->balllink->angle - n->angle); + match_spins_on_catch(t, n); + t->dx = (t->balllink->x - t->x) / dt; + t->dy = (t->balllink->y - t->y) / dt - sp->Gr/2 * dt; + makeParabola(n, t->x, t->dx, t->y, t->dy, sp->Gr); + } + + t->status = BPREDICTOR; + } + } + return True; +} + +/* Turn abstract hand motions into cubic splines. */ +static void +hands(jugglestruct *sp) +{ + Trajectory *t, *u, *v; + + for (t = sp->head->next; t != sp->head; t = t->next) { + /* no throw => no velocity */ + if (t->status != BPREDICTOR) { + continue; + } + + u = t->handlink; + if (u == NULL) { /* no next catch */ + continue; + } + v = u->handlink; + if (v == NULL) { /* no next throw */ + continue; + } + + /* double spline takes hand from throw, thru catch, to + next throw */ + + t->finish = u->start; + t->status = PREDICTOR; + + u->finish = v->start; + u->status = PREDICTOR; + + + /* FIXME: These adjustments leave a small glitch when alternating + balls and clubs. Just hope no-one notices. :-) */ + + /* make sure empty hand spin matches the thrown object in case it + had a handle */ + + t->spin = ((t->hand == LEFT)? -1 : 1 ) * + fabs((u->angle - t->angle)/(u->start - t->start)); + + u->spin = ((v->hand == LEFT) ^ (v->posn == '+')? -1 : 1 ) * + fabs((v->angle - u->angle)/(v->start - u->start)); + + (void) makeSplinePair(&t->xp, &u->xp, + t->x, t->dx, t->start, + u->x, u->start, + v->x, v->dx, v->start); + (void) makeSplinePair(&t->yp, &u->yp, + t->y, t->dy, t->start, + u->y, u->start, + v->y, v->dy, v->start); + + t->status = PREDICTOR; + } +} + +/* Given target x, y find_elbow puts hand at target if possible, + * otherwise makes hand point to the target */ +static void +find_elbow(int armlength, DXPoint *h, DXPoint *e, DXPoint *p, DXPoint *s, + int z) +{ + double r, h2, t; + double x = p->x - s->x; + double y = p->y - s->y; + h2 = x*x + y*y + z*z; + if (h2 > 4 * armlength * armlength) { + t = armlength/sqrt(h2); + e->x = t*x + s->x; + e->y = t*y + s->y; + h->x = 2 * t * x + s->x; + h->y = 2 * t * y + s->y; + } else { + r = sqrt((double)(x*x + z*z)); + t = sqrt(4 * armlength * armlength / h2 - 1); + e->x = x*(1 + y*t/r)/2 + s->x; + e->y = (y - r*t)/2 + s->y; + h->x = x + s->x; + h->y = y + s->y; + } +} + + +/* NOTE: returned x, y adjusted for arm reach */ +static void +reach_arm(ModeInfo * mi, Hand side, DXPoint *p) +{ + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + DXPoint h, e; + find_elbow(40, &h, &e, p, &sp->arm[1][side][SHOULDER], 25); + *p = sp->arm[1][side][HAND] = h; + sp->arm[1][side][ELBOW] = e; +} + +#if DEBUG +/* dumps a human-readable rendition of the current state of the juggle + pipeline to stderr for debugging */ +static void +dump(jugglestruct *sp) +{ + Trajectory *t; + for (t = sp->head->next; t != sp->head; t = t->next) { + switch (t->status) { + case ATCH: + (void) fprintf(stderr, "%p a %c%d\n", (void*)t, t->posn, t->adam); + break; + case THRATCH: + (void) fprintf(stderr, "%p T %c%d %s\n", (void*)t, t->posn, t->height, + t->pattern == NULL?"":t->pattern); + break; + case ACTION: + if (t->action == CATCH) + (void) fprintf(stderr, "%p A %c%cC\n", + (void*)t, t->posn, + t->hand ? 'R' : 'L'); + else + (void) fprintf(stderr, "%p A %c%c%c%d\n", + (void*)t, t->posn, + t->hand ? 'R' : 'L', + (t->action == THROW)?'T':'N', + t->height); + break; + case LINKEDACTION: + (void) fprintf(stderr, "%p L %c%c%c%d %d %p %p\n", + (void*)t, t->posn, + t->hand?'R':'L', + (t->action == THROW)?'T':(t->action == CATCH?'C':'N'), + t->height, t->object == NULL?0:t->object->color, + (void*)t->handlink, (void*)t->balllink); + break; + case PTHRATCH: + (void) fprintf(stderr, "%p O %c%c%c%d %d %2d %6lu %6lu\n", + (void*)t, t->posn, + t->hand?'R':'L', + (t->action == THROW)?'T':(t->action == CATCH?'C':'N'), + t->height, t->type, t->object == NULL?0:t->object->color, + t->start, t->finish); + break; + case BPREDICTOR: + (void) fprintf(stderr, "%p B %c %2d %6lu %6lu %g\n", + (void*)t, t->type == Ball?'b':t->type == Empty?'e':'f', + t->object == NULL?0:t->object->color, + t->start, t->finish, t->yp.c); + break; + case PREDICTOR: + (void) fprintf(stderr, "%p P %c %2d %6lu %6lu %g\n", + (void*)t, t->type == Ball?'b':t->type == Empty?'e':'f', + t->object == NULL?0:t->object->color, + t->start, t->finish, t->yp.c); + break; + default: + (void) fprintf(stderr, "%p: status %d not implemented\n", + (void*)t, t->status); + break; + } + } + (void) fprintf(stderr, "---\n"); +} +#endif + +static int get_num_balls(const char *j) +{ + int balls = 0; + const char *p; + int h = 0; + if (!j) abort(); + for (p = j; *p; p++) { + if (*p >= '0' && *p <='9') { /* digit */ + h = 10*h + (*p - '0'); + } else { + if (h > balls) { + balls = h; + } + h = 0; + } + } + return balls; +} + +static int +compare_num_balls(const void *p1, const void *p2) +{ + int i, j; + i = get_num_balls(((patternstruct*)p1)->pattern); + j = get_num_balls(((patternstruct*)p2)->pattern); + if (i > j) { + return (1); + } else if (i < j) { + return (-1); + } else { + return (0); + } +} + + +/************************************************************************** + * Rendering Functions * + * * + **************************************************************************/ + +static int +show_arms(ModeInfo * mi) +{ + int polys = 0; + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + unsigned int i, j; + Hand side; + XPoint a[countof(sp->arm[0][0])]; + int slices = 12; + int thickness = 7; + int soffx = 10; + int soffy = 11; + + glFrontFace(GL_CCW); + + j = 1; + for(side = LEFT; side <= RIGHT; side = (Hand)((int)side + 1)) { + /* Translate into device coords */ + for(i = 0; i < countof(a); i++) { + a[i].x = (short)(SCENE_WIDTH/2 + sp->arm[j][side][i].x*sp->scale); + a[i].y = (short)(SCENE_HEIGHT - sp->arm[j][side][i].y*sp->scale); + if(j == 1) + sp->arm[0][side][i] = sp->arm[1][side][i]; + } + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_1); + + /* Upper arm */ + polys += tube (a[2].x - (side == LEFT ? soffx : -soffx), a[2].y + soffy, 0, + a[1].x, a[1].y, ARMLENGTH/2, + thickness, 0, slices, + True, True, MI_IS_WIREFRAME(mi)); + + /* Lower arm */ + polys += tube (a[1].x, a[1].y, ARMLENGTH/2, + a[0].x, a[0].y, ARMLENGTH, + thickness * 0.8, 0, slices, + True, True, MI_IS_WIREFRAME(mi)); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_2); + + /* Shoulder */ + glPushMatrix(); + glTranslatef (a[2].x - (side == LEFT ? soffx : -soffx), + a[2].y + soffy, + 0); + glScalef(9, 9, 9); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Elbow */ + glPushMatrix(); + glTranslatef (a[1].x, a[1].y, ARMLENGTH/2); + glScalef(4, 4, 4); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Hand */ + glPushMatrix(); + glTranslatef (a[0].x, a[0].y, ARMLENGTH); + glScalef(8, 8, 8); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + } + return polys; +} + +static int +show_figure(ModeInfo * mi, Bool init) +{ + int polys = 0; + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + /*XPoint p[7];*/ + int i; + + /* +-----+ 9 + | 6 | + 10 +--+--+ + 2 +---+---+ 3 + \ 5 / + \ / + \ / + 1 + + / \ + / \ + 0 +-----+ 4 + | | + | | + | | + 7 + + 8 + */ + + /* #### most of this is unused now */ + static const XPoint figure[] = { + { 15, 70}, /* 0 Left Hip */ + { 0, 90}, /* 1 Waist */ + { SX, 130}, /* 2 Left Shoulder */ + {-SX, 130}, /* 3 Right Shoulder */ + {-15, 70}, /* 4 Right Hip */ + { 0, 130}, /* 5 Neck */ + { 0, 140}, /* 6 Chin */ + { SX, 0}, /* 7 Left Foot */ + {-SX, 0}, /* 8 Right Foot */ + {-17, 174}, /* 9 Head1 */ + { 17, 140}, /* 10 Head2 */ + }; + XPoint a[countof(figure)]; + GLfloat gcolor[4] = { 1, 1, 1, 1 }; + + /* Translate into device coords */ + for(i = 0; i < countof(figure); i++) { + a[i].x = (short)(SCENE_WIDTH/2 + (sp->cx + figure[i].x)*sp->scale); + a[i].y = (short)(SCENE_HEIGHT - figure[i].y*sp->scale); + } + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gcolor); + + glFrontFace(GL_CCW); + + { + GLfloat scale = ((GLfloat) a[10].x - a[9].x) / 2; + int slices = 12; + + glPushMatrix(); + { + glTranslatef(a[6].x, a[6].y - scale, 0); + glScalef(scale, scale, scale); + + /* Head */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_1); + glPushMatrix(); + scale = 0.75; + glScalef(scale, scale, scale); + glTranslatef(0, 0.3, 0); + glPushMatrix(); + glTranslatef(0, 0, 0.35); + polys += tube (0, 0, 0, + 0, 1.1, 0, + 0.64, 0, + slices, True, True, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + glScalef(0.9, 0.9, 1); + polys += unit_sphere(2*slices, 2*slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Neck */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_2); + glTranslatef(0, 1.1, 0); + glPushMatrix(); + scale = 0.35; + glScalef(scale, scale, scale); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Torso */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_1); + glTranslatef(0, 1.1, 0); + glPushMatrix(); + glScalef(0.9, 1.0, 0.9); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Belly */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_2); + glTranslatef(0, 1.0, 0); + glPushMatrix(); + scale = 0.6; + glScalef(scale, scale, scale); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Hips */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_1); + glTranslatef(0, 0.8, 0); + glPushMatrix(); + scale = 0.85; + glScalef(scale, scale, scale); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + + /* Legs */ + glTranslatef(0, 0.7, 0); + + for (i = -1; i <= 1; i += 2) { + glPushMatrix(); + + glRotatef (i*10, 0, 0, 1); + glTranslatef(-i*0.65, 0, 0); + + /* Hip socket */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_2); + scale = 0.45; + glScalef(scale, scale, scale); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + + /* Thigh */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_1); + glPushMatrix(); + glTranslatef(0, 0.6, 0); + polys += tube (0, 0, 0, + 0, 3.5, 0, + 1, 0, + slices, True, True, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Knee */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_2); + glPushMatrix(); + glTranslatef(0, 4.4, 0); + scale = 0.7; + glScalef(scale, scale, scale); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Calf */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_1); + glPushMatrix(); + glTranslatef(0, 4.7, 0); + polys += tube (0, 0, 0, + 0, 4.7, 0, + 0.8, 0, + slices, True, True, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Ankle */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_2); + glPushMatrix(); + glTranslatef(0, 9.7, 0); + scale = 0.5; + glScalef(scale, scale, scale); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + /* Foot */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, body_color_1); + glPushMatrix(); + glRotatef (-i*10, 0, 0, 1); + glTranslatef(-i*1.75, 9.7, 0.9); + + glScalef (0.4, 1, 1); + polys += tube (0, 0, 0, + 0, 0.6, 0, + 1.9, 0, + slices*4, True, True, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + + glPopMatrix(); + } + } + glPopMatrix(); + } + + sp->arm[1][LEFT][SHOULDER].x = sp->cx + figure[2].x; + sp->arm[1][RIGHT][SHOULDER].x = sp->cx + figure[3].x; + if(init) { + /* Initialise arms */ + unsigned int i; + for(i = 0; i < 2; i++){ + sp->arm[i][LEFT][SHOULDER].y = figure[2].y; + sp->arm[i][LEFT][ELBOW].x = figure[2].x; + sp->arm[i][LEFT][ELBOW].y = figure[1].y; + sp->arm[i][LEFT][HAND].x = figure[0].x; + sp->arm[i][LEFT][HAND].y = figure[1].y; + sp->arm[i][RIGHT][SHOULDER].y = figure[3].y; + sp->arm[i][RIGHT][ELBOW].x = figure[3].x; + sp->arm[i][RIGHT][ELBOW].y = figure[1].y; + sp->arm[i][RIGHT][HAND].x = figure[4].x; + sp->arm[i][RIGHT][HAND].y = figure[1].y; + } + } + return polys; +} + +typedef struct { GLfloat x, y, z; } XYZ; + +/* lifted from sphere.c */ +static int +striped_unit_sphere (int stacks, int slices, + int stripes, + GLfloat *color1, GLfloat *color2, + int wire_p) +{ + int polys = 0; + int i,j; + double theta1, theta2, theta3; + XYZ e, p; + XYZ la = { 0, 0, 0 }, lb = { 0, 0, 0 }; + XYZ c = {0, 0, 0}; /* center */ + double r = 1.0; /* radius */ + int stacks2 = stacks * 2; + + if (r < 0) + r = -r; + if (slices < 0) + slices = -slices; + + if (slices < 4 || stacks < 2 || r <= 0) + { + glBegin (GL_POINTS); + glVertex3f (c.x, c.y, c.z); + glEnd(); + return 1; + } + + glFrontFace(GL_CW); + + for (j = 0; j < stacks; j++) + { + theta1 = j * (M_PI+M_PI) / stacks2 - M_PI_2; + theta2 = (j + 1) * (M_PI+M_PI) / stacks2 - M_PI_2; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, + ((j == 0 || j == stacks-1 || + j % (stacks / (stripes+1))) + ? color1 : color2)); + + glBegin (wire_p ? GL_LINE_LOOP : GL_TRIANGLE_STRIP); + for (i = 0; i <= slices; i++) + { + theta3 = i * (M_PI+M_PI) / slices; + + if (wire_p && i != 0) + { + glVertex3f (lb.x, lb.y, lb.z); + glVertex3f (la.x, la.y, la.z); + } + + e.x = cos (theta2) * cos(theta3); + e.y = sin (theta2); + e.z = cos (theta2) * sin(theta3); + p.x = c.x + r * e.x; + p.y = c.y + r * e.y; + p.z = c.z + r * e.z; + + glNormal3f (e.x, e.y, e.z); + glTexCoord2f (i / (double)slices, + 2*(j+1) / (double)stacks2); + glVertex3f (p.x, p.y, p.z); + if (wire_p) la = p; + + e.x = cos(theta1) * cos(theta3); + e.y = sin(theta1); + e.z = cos(theta1) * sin(theta3); + p.x = c.x + r * e.x; + p.y = c.y + r * e.y; + p.z = c.z + r * e.z; + + glNormal3f (e.x, e.y, e.z); + glTexCoord2f (i / (double)slices, + 2*j / (double)stacks2); + glVertex3f (p.x, p.y, p.z); + if (wire_p) lb = p; + polys++; + } + glEnd(); + } + return polys; +} + + + +static int +show_ball(ModeInfo *mi, unsigned long color, Trace *s) +{ + int polys = 0; + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + /*int offset = (int)(s->angle*64*180/M_PI);*/ + short x = (short)(SCENE_WIDTH/2 + s->x * sp->scale); + short y = (short)(SCENE_HEIGHT - s->y * sp->scale); + GLfloat gcolor1[4] = { 0, 0, 0, 1 }; + GLfloat gcolor2[4] = { 0, 0, 0, 1 }; + int slices = 24; + + /* Avoid wrapping */ + if(s->y*sp->scale > SCENE_HEIGHT * 2) return 0; + + gcolor1[0] = mi->colors[color].red / 65536.0; + gcolor1[1] = mi->colors[color].green / 65536.0; + gcolor1[2] = mi->colors[color].blue / 65536.0; + + gcolor2[0] = gcolor1[0] / 3; + gcolor2[1] = gcolor1[1] / 3; + gcolor2[2] = gcolor1[2] / 3; + + glFrontFace(GL_CCW); + + { + GLfloat scale = BALLRADIUS; + glPushMatrix(); + glTranslatef(x, y, 0); + glScalef(scale, scale, scale); + + glRotatef (s->angle / M_PI*180, 1, 1, 0); + + polys += striped_unit_sphere (slices, slices, s->divisions, + gcolor1, gcolor2, MI_IS_WIREFRAME(mi)); + glPopMatrix(); + } + return polys; +} + +static int +show_europeanclub(ModeInfo *mi, unsigned long color, Trace *s) +{ + int polys = 0; + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + /*int offset = (int)(s->angle*64*180/M_PI);*/ + short x = (short)(SCENE_WIDTH/2 + s->x * sp->scale); + short y = (short)(SCENE_HEIGHT - s->y * sp->scale); + double radius = 12 * sp->scale; + GLfloat gcolor1[4] = { 0, 0, 0, 1 }; + GLfloat gcolor2[4] = { 1, 1, 1, 1 }; + int slices = 16; + int divs = 4; + + /* 6 6 + +-+ + / \ + 4 +-----+ 7 + ////////\ + 3 +---------+ 8 + 2 +---------+ 9 + |///////| + 1 +-------+ 10 + | | + | | + | | + | | + | | + | | + +-+ + 0 11 */ + + /* Avoid wrapping */ + if(s->y*sp->scale > SCENE_HEIGHT * 2) return 0; + + gcolor1[0] = mi->colors[color].red / 65536.0; + gcolor1[1] = mi->colors[color].green / 65536.0; + gcolor1[2] = mi->colors[color].blue / 65536.0; + + glFrontFace(GL_CCW); + + { + GLfloat scale = radius; + glPushMatrix(); + glTranslatef(x, y, 0); + glScalef(scale, scale, scale); + + glTranslatef (0, 0, 2); /* put end of handle in hand */ + + glRotatef (s->angle / M_PI*180, 1, 0, 0); + + glPushMatrix(); + glScalef (0.5, 1, 0.5); + polys += striped_unit_sphere (slices, slices, divs, gcolor2, gcolor1, + MI_IS_WIREFRAME(mi)); + glPopMatrix(); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gcolor2); + polys += tube (0, 0, 0, + 0, 2, 0, + 0.2, 0, + slices, True, True, MI_IS_WIREFRAME(mi)); + + glTranslatef (0, 2, 0); + glScalef (0.25, 0.25, 0.25); + polys += unit_sphere(slices, slices, MI_IS_WIREFRAME(mi)); + + glPopMatrix(); + } + return polys; +} + + +static int +show_torch(ModeInfo *mi, unsigned long color, Trace *s) +{ + int polys = 0; +#if 0 + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + XPoint head, tail, last; + DXPoint dhead, dlast; + const double sa = sin(s->angle); + const double ca = cos(s->angle); + + const double TailLen = -24; + const double HeadLen = 16; + const short Width = (short)(5 * sqrt(sp->scale)); + + /* + +///+ head + last | + | + | + | + | + + tail + */ + + dhead.x = s->x + HeadLen * PERSPEC * sa; + dhead.y = s->y - HeadLen * ca; + + if(color == MI_BLACK_PIXEL(mi)) { /* Use 'last' when erasing */ + dlast = s->dlast; + } else { /* Store 'last' so we can use it later when s->prev has + gone */ + if(s->prev != s->next) { + dlast.x = s->prev->x + HeadLen * PERSPEC * sin(s->prev->angle); + dlast.y = s->prev->y - HeadLen * cos(s->prev->angle); + } else { + dlast = dhead; + } + s->dlast = dlast; + } + + /* Avoid wrapping (after last is stored) */ + if(s->y*sp->scale > SCENE_HEIGHT * 2) return 0; + + head.x = (short)(SCENE_WIDTH/2 + dhead.x*sp->scale); + head.y = (short)(SCENE_HEIGHT - dhead.y*sp->scale); + + last.x = (short)(SCENE_WIDTH/2 + dlast.x*sp->scale); + last.y = (short)(SCENE_HEIGHT - dlast.y*sp->scale); + + tail.x = (short)(SCENE_WIDTH/2 + + (s->x + TailLen * PERSPEC * sa)*sp->scale ); + tail.y = (short)(SCENE_HEIGHT - (s->y - TailLen * ca)*sp->scale ); + + if(color != MI_BLACK_PIXEL(mi)) { + XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_BLACK_PIXEL(mi)); + XSetLineAttributes(MI_DISPLAY(mi), MI_GC(mi), + Width, LineSolid, CapRound, JoinRound); + draw_line(mi, head.x, head.y, tail.x, tail.y); + } + XSetForeground(MI_DISPLAY(mi), MI_GC(mi), color); + XSetLineAttributes(MI_DISPLAY(mi), MI_GC(mi), + Width * 2, LineSolid, CapRound, JoinRound); + + draw_line(mi, head.x, head.y, last.x, last.y); + +#endif /* 0 */ + return polys; +} + + +static int +show_knife(ModeInfo *mi, unsigned long color, Trace *s) +{ + int polys = 0; + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + /*int offset = (int)(s->angle*64*180/M_PI);*/ + short x = (short)(SCENE_WIDTH/2 + s->x * sp->scale); + short y = (short)(SCENE_HEIGHT - s->y * sp->scale); + GLfloat gcolor1[4] = { 0, 0, 0, 1 }; + GLfloat gcolor2[4] = { 1, 1, 1, 1 }; + int slices = 8; + + /* Avoid wrapping */ + if(s->y*sp->scale > SCENE_HEIGHT * 2) return 0; + + gcolor1[0] = mi->colors[color].red / 65536.0; + gcolor1[1] = mi->colors[color].green / 65536.0; + gcolor1[2] = mi->colors[color].blue / 65536.0; + + glFrontFace(GL_CCW); + + glPushMatrix(); + glTranslatef(x, y, 0); + glScalef (2, 2, 2); + + glTranslatef (0, 0, 2); /* put end of handle in hand */ + glRotatef (s->angle / M_PI*180, 1, 0, 0); + + glScalef (0.3, 1, 1); /* flatten blade */ + + glTranslatef(0, 6, 0); + glRotatef (180, 1, 0, 0); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gcolor1); + polys += tube (0, 0, 0, + 0, 10, 0, + 1, 0, + slices, True, True, MI_IS_WIREFRAME(mi)); + + glTranslatef (0, 12, 0); + glScalef (0.7, 10, 0.7); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gcolor2); + polys += unit_sphere (slices, slices, MI_IS_WIREFRAME(mi)); + + glPopMatrix(); + return polys; +} + + +static int +show_ring(ModeInfo *mi, unsigned long color, Trace *s) +{ + int polys = 0; + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + /*int offset = (int)(s->angle*64*180/M_PI);*/ + short x = (short)(SCENE_WIDTH/2 + s->x * sp->scale); + short y = (short)(SCENE_HEIGHT - s->y * sp->scale); + double radius = 12 * sp->scale; + GLfloat gcolor1[4] = { 0, 0, 0, 1 }; + GLfloat gcolor2[4] = { 0, 0, 0, 1 }; + int slices = 24; + int i, j; + int wire_p = MI_IS_WIREFRAME(mi); + GLfloat width = M_PI * 2 / slices; + GLfloat ra = 1.0; + GLfloat rb = 0.7; + GLfloat thickness = 0.15; + + /* Avoid wrapping */ + if(s->y*sp->scale > SCENE_HEIGHT * 2) return 0; + + gcolor1[0] = mi->colors[color].red / 65536.0; + gcolor1[1] = mi->colors[color].green / 65536.0; + gcolor1[2] = mi->colors[color].blue / 65536.0; + + gcolor2[0] = gcolor1[0] / 3; + gcolor2[1] = gcolor1[1] / 3; + gcolor2[2] = gcolor1[2] / 3; + + glFrontFace(GL_CCW); + + glPushMatrix(); + glTranslatef(0, 0, 12); /* back of ring in hand */ + + glTranslatef(x, y, 0); + glScalef(radius, radius, radius); + + glRotatef (90, 0, 1, 0); + glRotatef (s->angle / M_PI*180, 0, 0, 1); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gcolor1); + + /* discs */ + for (j = -1; j <= 1; j += 2) + { + GLfloat z = j * thickness/2; + glFrontFace (j < 0 ? GL_CCW : GL_CW); + glNormal3f (0, 0, j*1); + glBegin (wire_p ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < slices + (wire_p ? 0 : 1); i++) { + GLfloat th, cth, sth; + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, + (i % (slices/3) ? gcolor1 : gcolor2)); + th = i * width; + cth = cos(th); + sth = sin(th); + glVertex3f (cth * ra, sth * ra, z); + glVertex3f (cth * rb, sth * rb, z); + polys++; + } + glEnd(); + } + + /* outer ring */ + glFrontFace (GL_CCW); + glBegin (wire_p ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < slices + (wire_p ? 0 : 1); i++) + { + GLfloat th = i * width; + GLfloat cth = cos(th); + GLfloat sth = sin(th); + glNormal3f (cth, sth, 0); + glVertex3f (cth * ra, sth * ra, thickness/2); + glVertex3f (cth * ra, sth * ra, -thickness/2); + polys++; + } + glEnd(); + + /* inner ring */ + glFrontFace (GL_CW); + glBegin (wire_p ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i < slices + (wire_p ? 0 : 1); i++) + { + GLfloat th = i * width; + GLfloat cth = cos(th); + GLfloat sth = sin(th); + glNormal3f (-cth, -sth, 0); + glVertex3f (cth * rb, sth * ra, thickness/2); + glVertex3f (cth * rb, sth * ra, -thickness/2); + polys++; + } + glEnd(); + + glFrontFace (GL_CCW); + glPopMatrix(); + return polys; +} + + +static int +show_bball(ModeInfo *mi, unsigned long color, Trace *s) +{ + int polys = 0; + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + /*int offset = (int)(s->angle*64*180/M_PI);*/ + short x = (short)(SCENE_WIDTH/2 + s->x * sp->scale); + short y = (short)(SCENE_HEIGHT - s->y * sp->scale); + double radius = 12 * sp->scale; + GLfloat gcolor1[4] = { 0, 0, 0, 1 }; + GLfloat gcolor2[4] = { 0, 0, 0, 1 }; + int slices = 16; + int i, j; + + /* Avoid wrapping */ + if(s->y*sp->scale > SCENE_HEIGHT * 2) return 0; + + gcolor1[0] = mi->colors[color].red / 65536.0; + gcolor1[1] = mi->colors[color].green / 65536.0; + gcolor1[2] = mi->colors[color].blue / 65536.0; + + glFrontFace(GL_CCW); + + { + GLfloat scale = radius; + glPushMatrix(); + + glTranslatef(0, -6, 5); /* position on top of hand */ + + glTranslatef(x, y, 0); + glScalef(scale, scale, scale); + glRotatef (s->angle / M_PI*180, 1, 0, 1); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gcolor1); + polys += unit_sphere (slices, slices, MI_IS_WIREFRAME(mi)); + + glRotatef (90, 0, 0, 1); + glTranslatef (0, 0, 0.81); + glScalef(0.15, 0.15, 0.15); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gcolor2); + for (i = 0; i < 3; i++) { + glPushMatrix(); + glTranslatef (0, 0, 1); + glRotatef (360 * i / 3, 0, 0, 1); + glTranslatef (2, 0, 0); + glRotatef (18, 0, 1, 0); + glBegin (MI_IS_WIREFRAME(mi) ? GL_LINE_LOOP : GL_TRIANGLE_FAN); + glVertex3f (0, 0, 0); + for (j = slices; j >= 0; j--) { + GLfloat th = j * M_PI*2 / slices; + glVertex3f (cos(th), sin(th), 0); + polys++; + } + glEnd(); + glPopMatrix(); + } + + glPopMatrix(); + } + return polys; +} + + +/************************************************************************** + * Public Functions * + * * + **************************************************************************/ + + +/* FIXME: refill_juggle currently just appends new throws to the + * programme. This is fine if the programme is empty, but if there + * are still some trajectories left then it really should take these + * into account */ + +static void +refill_juggle(ModeInfo * mi) +{ + jugglestruct *sp = NULL; + int i; + + if (juggles == NULL) + return; + sp = &juggles[MI_SCREEN(mi)]; + + /* generate pattern */ + + if (pattern == NULL) { + +#define MAXPAT 10 +#define MAXREPEAT 300 +#define CHANGE_BIAS 8 /* larger makes num_ball changes less likely */ +#define POSITION_BIAS 20 /* larger makes hand movements less likely */ + + int count = 0; + while (count < MI_CYCLES(mi)) { + char buf[MAXPAT * 3 + 3], *b = buf; + int maxseen = 0; + int l = NRAND(MAXPAT) + 1; + int t = NRAND(MIN(MAXREPEAT, (MI_CYCLES(mi) - count))) + 1; + + { /* vary number of balls */ + int new_balls = sp->num_balls; + int change; + + if (new_balls == 2) /* Do not juggle 2 that often */ + change = NRAND(2 + CHANGE_BIAS / 4); + else + change = NRAND(2 + CHANGE_BIAS); + switch (change) { + case 0: + new_balls++; + break; + case 1: + new_balls--; + break; + default: + break; /* NO-OP */ + } + if (new_balls < sp->patternindex.minballs) { + new_balls += 2; + } + if (new_balls > sp->patternindex.maxballs) { + new_balls -= 2; + } + if (new_balls < sp->num_balls) { + if (!program(mi, "[*]", NULL, 1)) /* lose ball */ + return; + } + sp->num_balls = new_balls; + } + + count += t; + if (NRAND(2) && sp->patternindex.index[sp->num_balls].number) { + /* Pick from PortFolio */ + int p = sp->patternindex.index[sp->num_balls].start + + NRAND(sp->patternindex.index[sp->num_balls].number); + if (!program(mi, portfolio[p].pattern, portfolio[p].name, t)) + return; + } else { + /* Invent a new pattern */ + *b++='['; + for(i = 0; i < l; i++){ + int n, m; + do { /* Triangular Distribution => high values more likely */ + m = NRAND(sp->num_balls + 1); + n = NRAND(sp->num_balls + 1); + } while(m >= n); + if (n == sp->num_balls) { + maxseen = 1; + } + switch(NRAND(5 + POSITION_BIAS)){ + case 0: /* Outside throw */ + *b++ = '+'; break; + case 1: /* Cross throw */ + *b++ = '='; break; + case 2: /* Cross catch */ + *b++ = '&'; break; + case 3: /* Cross throw and catch */ + *b++ = 'x'; break; + case 4: /* Bounce */ + *b++ = '_'; break; + default: + break; /* Inside throw (default) */ + } + + *b++ = n + '0'; + *b++ = ' '; + } + *b++ = ']'; + *b = '\0'; + if (maxseen) { + if (!program(mi, buf, NULL, t)) + return; + } + } + } + } else { /* pattern supplied in height or 'a' notation */ + if (!program(mi, pattern, NULL, MI_CYCLES(mi))) + return; + } + + adam(sp); + + name(sp); + + if (!part(mi)) + return; + + lob(mi); + + clap(sp); + + positions(sp); + + if (!projectile(sp)) { + free_juggle(mi); + return; + } + + hands(sp); +#ifdef DEBUG + if(MI_IS_DEBUG(mi)) dump(sp); +#endif +} + +static void +change_juggle(ModeInfo * mi) +{ + jugglestruct *sp = NULL; + Trajectory *t; + + if (juggles == NULL) + return; + sp = &juggles[MI_SCREEN(mi)]; + + /* Strip pending trajectories */ + for (t = sp->head->next; t != sp->head; t = t->next) { + if(t->start > sp->time || t->finish < sp->time) { + Trajectory *n = t; + t=t->prev; + trajectory_destroy(n); + } + } + + /* Pick the current object theme */ + sp->objtypes = choose_object(); + + refill_juggle(mi); + + mi->polygon_count += show_figure(mi, True); +} + + +ENTRYPOINT void +reshape_juggle (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT void +init_juggle (ModeInfo * mi) +{ + jugglestruct *sp = 0; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, juggles); + + sp = &juggles[MI_SCREEN(mi)]; + + if (!sp->glx_context) /* re-initting breaks print_texture_label */ + sp->glx_context = init_GL(mi); + + sp->font_data = load_texture_font (mi->dpy, "titleFont"); + + reshape_juggle (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + make_random_colormap (0, 0, 0, + mi->colors, &MI_NPIXELS(mi), + True, False, 0, False); + + { + double spin_speed = 0.05; + double wander_speed = 0.001; + double spin_accel = 0.05; + sp->rot = make_rotator (0, spin_speed, 0, + spin_accel, wander_speed, False); + sp->trackball = gltrackball_init (False); + } + + if (only && *only && strcmp(only, " ")) { + balls = clubs = torches = knives = rings = bballs = False; + if (!strcasecmp (only, "balls")) balls = True; + else if (!strcasecmp (only, "clubs")) clubs = True; + else if (!strcasecmp (only, "torches")) torches = True; + else if (!strcasecmp (only, "knives")) knives = True; + else if (!strcasecmp (only, "rings")) rings = True; + else if (!strcasecmp (only, "bballs")) bballs = True; + else { + (void) fprintf (stderr, + "Juggle: -only must be one of: balls, clubs, torches, knives,\n" + "\t rings, or bballs (not \"%s\")\n", only); +#ifdef STANDALONE /* xlock mustn't exit merely because of a bad argument */ + exit (1); +#endif + } + } + + /* #### hard to make this look good in OpenGL... */ + torches = False; + + + if (sp->head == 0) { /* first time initializing this juggler */ + + sp->count = ABS(MI_COUNT(mi)); + if (sp->count == 0) + sp->count = 200; + + /* record start time */ + sp->begintime = time(NULL); + if(sp->patternindex.maxballs > 0) { + sp->num_balls = sp->patternindex.minballs + + NRAND(sp->patternindex.maxballs - sp->patternindex.minballs); + } + + mi->polygon_count += + show_figure(mi, True); /* Draw figure. Also discovers + information about the juggler's + proportions */ + + /* "7" should be about three times the height of the juggler's + shoulders */ + sp->Gr = -GRAVITY(3 * sp->arm[0][RIGHT][SHOULDER].y, + 7 * THROW_CATCH_INTERVAL); + + if(!balls && !clubs && !torches && !knives && !rings && !bballs) + balls = True; /* Have to juggle something! */ + + /* create circular trajectory list */ + ADD_ELEMENT(Trajectory, sp->head, sp->head); + if(sp->head == NULL){ + free_juggle(mi); + return; + } + + /* create circular object list */ + ADD_ELEMENT(Object, sp->objects, sp->objects); + if(sp->objects == NULL){ + free_juggle(mi); + return; + } + + sp->pattern = strdup(""); /* Initialise saved pattern with + free-able memory */ + } + + sp = &juggles[MI_SCREEN(mi)]; + + if (pattern && + (!*pattern || + !strcasecmp (pattern, ".") || + !strcasecmp (pattern, "random"))) + pattern = NULL; + + if (pattern == NULL && sp->patternindex.maxballs == 0) { + /* pattern list needs indexing */ + int nelements = countof(portfolio); + int numpat = 0; + int i; + + /* sort according to number of balls */ + qsort((void*)portfolio, nelements, + sizeof(portfolio[1]), compare_num_balls); + + /* last pattern has most balls */ + sp->patternindex.maxballs = get_num_balls(portfolio[nelements - 1].pattern); + /* run through sorted list, indexing start of each group + and number in group */ + sp->patternindex.maxballs = 1; + for (i = 0; i < nelements; i++) { + int b = get_num_balls(portfolio[i].pattern); + if (b > sp->patternindex.maxballs) { + sp->patternindex.index[sp->patternindex.maxballs].number = numpat; + if(numpat == 0) sp->patternindex.minballs = b; + sp->patternindex.maxballs = b; + numpat = 1; + sp->patternindex.index[sp->patternindex.maxballs].start = i; + } else { + numpat++; + } + } + sp->patternindex.index[sp->patternindex.maxballs].number = numpat; + } + + /* Set up programme */ + change_juggle(mi); + + /* Only put things here that won't interrupt the programme during + a window resize */ + + /* Use MIN so that users can resize in interesting ways, eg + narrow windows for tall patterns, etc */ + sp->scale = MIN(SCENE_HEIGHT/480.0, SCENE_WIDTH/160.0); + +} + +ENTRYPOINT Bool +juggle_handle_event (ModeInfo *mi, XEvent *event) +{ + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, sp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &sp->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + change_juggle (mi); + return True; + } + + return False; +} + + +ENTRYPOINT void +draw_juggle (ModeInfo *mi) +{ + jugglestruct *sp = &juggles[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + Trajectory *traj = NULL; + Object *o = NULL; + unsigned long future = 0; + char *pattern = NULL; + + if (!sp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + + glTranslatef(0,-3,0); + + { + double x, y, z; + get_position (sp->rot, &x, &y, &z, !sp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 3, + (z - 0.5) * 15); + + gltrackball_rotate (sp->trackball); + + get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p); + + if (y < 0.8) y = 0.8 - (y - 0.8); /* always face forward */ + if (y > 1.2) y = 1.2 - (y - 1.2); + + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + { + GLfloat scale = 20.0 / SCENE_HEIGHT; + glScalef(scale, scale, scale); + } + + glRotatef (180, 0, 0, 1); + glTranslatef(-SCENE_WIDTH/2, -SCENE_HEIGHT/2, 0); + glTranslatef(0, -150, 0); + + mi->polygon_count = 0; + + /* Update timer */ + if (real) { + struct timeval tv; + (void)gettimeofday(&tv, NULL); + sp->time = (int) ((tv.tv_sec - sp->begintime)*1000 + tv.tv_usec/1000); + } else { + sp->time += MI_DELAY(mi) / 1000; + } + + /* First pass: Move arms and strip out expired elements */ + for (traj = sp->head->next; traj != sp->head; traj = traj->next) { + if (traj->status != PREDICTOR) { + /* Skip any elements that need further processing */ + /* We could remove them, but there shoudn't be many and they + would be needed if we ever got the pattern refiller + working */ + continue; + } + if (traj->start > future) { /* Lookahead to the end of the show */ + future = traj->start; + } + if (sp->time < traj->start) { /* early */ + continue; + } else if (sp->time < traj->finish) { /* working */ + + /* Look for pattern name */ + if(traj->pattern != NULL) { + pattern=traj->pattern; + } + + if (traj->type == Empty || traj->type == Full) { + /* Only interested in hands on this pass */ +/* double angle = traj->angle + traj->spin * (sp->time - traj->start);*/ + double xd = 0, yd = 0; + DXPoint p; + + /* Find the catching offset */ + if(traj->object != NULL) { +#if 0 + /* #### not sure what this is doing, but I'm guessing + that the use of PERSPEC means this isn't needed + in the OpenGL version? -jwz + */ + if(ObjectDefs[traj->object->type].handle > 0) { + /* Handles Need to be oriented */ + xd = ObjectDefs[traj->object->type].handle * + PERSPEC * sin(angle); + yd = ObjectDefs[traj->object->type].handle * + cos(angle); + } else +#endif + { + /* Balls are always caught at the bottom */ + xd = 0; + yd = -4; + } + } + p.x = (CUBIC(traj->xp, sp->time) - xd); + p.y = (CUBIC(traj->yp, sp->time) + yd); + reach_arm(mi, traj->hand, &p); + + /* Store updated hand position */ + traj->x = p.x + xd; + traj->y = p.y - yd; + } + if (traj->type == Ball || traj->type == Full) { + /* Only interested in objects on this pass */ + double x, y; + Trace *s; + + if(traj->type == Full) { + /* Adjusted these in the first pass */ + x = traj->x; + y = traj->y; + } else { + x = CUBIC(traj->xp, sp->time); + y = CUBIC(traj->yp, sp->time); + } + + ADD_ELEMENT(Trace, s, traj->object->trace->prev); + s->x = x; + s->y = y; + s->angle = traj->angle + traj->spin * (sp->time - traj->start); + s->divisions = traj->divisions; + traj->object->tracelen++; + traj->object->active = True; + } + } else { /* expired */ + Trajectory *n = traj; + traj=traj->prev; + trajectory_destroy(n); + } + } + + + mi->polygon_count += show_figure(mi, False); + mi->polygon_count += show_arms(mi); + + /* Draw Objects */ + glTranslatef(0, 0, ARMLENGTH); + for (o = sp->objects->next; o != sp->objects; o = o->next) { + if(o->active) { + mi->polygon_count += ObjectDefs[o->type].draw(mi, o->color, + o->trace->prev); + o->active = False; + } + } + + + /* Save pattern name so we can erase it when it changes */ + if(pattern != NULL && strcmp(sp->pattern, pattern) != 0 ) { + free(sp->pattern); + sp->pattern = strdup(pattern); + + if (MI_IS_VERBOSE(mi)) { + (void) fprintf(stderr, "Juggle[%d]: Running: %s\n", + MI_SCREEN(mi), sp->pattern); + } + } + + glColor3f (1, 1, 0); + print_texture_label (mi->dpy, sp->font_data, + mi->xgwa.width, mi->xgwa.height, + 1, sp->pattern); + +#ifdef MEMTEST + if((int)(sp->time/10) % 1000 == 0) + (void) fprintf(stderr, "sbrk: %d\n", (int)sbrk(0)); +#endif + + if (future < sp->time + 100 * THROW_CATCH_INTERVAL) { + refill_juggle(mi); + } else if (sp->time > 1<<30) { /* Hard Reset before the clock wraps */ + init_juggle(mi); + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("Juggler3D", juggler3d, juggle) + +#endif /* USE_GL */ diff --git a/hacks/glx/juggler3d.man b/hacks/glx/juggler3d.man new file mode 100644 index 0000000..48d4716 --- /dev/null +++ b/hacks/glx/juggler3d.man @@ -0,0 +1,183 @@ +'\" t +.\" ** The above line should force tbl to be used as a preprocessor ** +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +juggler3d - juggling man screen saver. +.SH SYNOPSIS +.B juggler3d +[\-display host:display.screen ] +[\-root ] +[\-window ] +[\-mono ] +[\-install | \-noinstall ] +[\-visual visual ] +[\-window\-id id ] +[\-pattern pattern ] +[\-tail number ] +[\-real | \-no\-real ] +[\-describe | \-no\-describe ] +[\-balls | \-no\-balls ] +[\-clubs | \-no\-clubs ] +[\-torches | \-no\-torches ] +[\-knives | \-no\-knives ] +[\-rings | \-no\-rings ] +[\-bballs | \-no\-bballs ] +[\-count count ] +[\-cycles cycles ] +[\-delay delay ] +[\-ncolors ncolors ] +[\-fps] +.SH DESCRIPTION +Draws a stick-man juggling various collections of objects. +.SH OPTIONS +.I juggler3d +accepts the following options: +.TP 8 +.B \-display host:display.screen +X11 display to use. Overrides +.B DISPLAY +environment variable. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-window +Draw on a newly-created X window. This is the default. +.TP 8 +.B \-mono +Draw in monochrome. +.TP 8 +.B \-install | \-noinstall +Turn on/off installing colormap. +.TP 8 +.B \-visual visual +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window\-id id +Draw on an already existing X window. +.TP 8 +.B \-pattern\ \(dq pattern \(dq +Specify juggling pattern in annotated +.B site-swap +notation. In +.B site-swap +notation, the "height" of each throw is given. E.g., "3" is the height +needed to juggle a 3\-Cascade. Note that these sequences need to be +chosen carefully, to avoid collisions. + +Annotations indicate relative hand movements or tricks: +.TS +cb l. +\&\- Inside throw (default) ++ Outside throw +\&= Cross Throw +& Cross Catch +x Cross Throw and Catch +\&_ Bounce +.TE +.TP 8 +.B \-pattern\ \(dq[ pattern ]\(dq +Specify juggling pattern in annotated +.B Adam +notation. Adam notation is a little harder to visualize. Each +integer +.B n +represents a cyclic permutation of (0...n). The equivalent +.B site-swap +value is determined by calculating how many of the permutations it +takes to get back to the identity. The largest number used is the +same as the number of objects in the pattern. The advantage of Adam +notation is that these sequences do not need to be chosen carefully, +since all possible sequences are juggle-able. Annotations are the same +as in +.B site-swap +notation. + +For example, both of these describe a 3\-Shower: +.IP +.B \-pattern\ "+5 1" +.IP +.B \-pattern\ "[+3 1]" + +For further examples, see the +.B portfolio +list in the source code. +.TP 8 +.B \-tail number +Minimum Trail Length. 0 \- 100. Default: 1. Objects may override +this, for example flaming torches always leave a trail. +.TP 8 +.BR \-real | \-no\-real +Turn on/off real-time juggling. +.B Deprecated. +There should be no need to turn off real-time juggling, even on slow +systems. Adjust speed using +.B \-count +above. +.TP 8 +.BR \-describe | \-no\-describe +Turn on/off pattern descriptions. +.TP 8 +.BR \-balls | \-no\-balls +Turn on/off Balls. +.TP 8 +.BR \-clubs | \-no\-clubs +Turn on/off Clubs. +.TP 8 +.BR \-torches | \-no\-torches +Turn on/off Flaming Torches. +.TP 8 +.BR \-knives | \-no\-knives +Turn on/off Knives. +.TP 8 +.BR \-rings | \-no\-rings +Turn on/off Rings. +.TP 8 +.BR \-bballs | \-no\-bballs +Turn on/off Bowling Balls. +.TP 8 +.B \-count number +Speed. 50 \- 1000. Default: 200. This determines the expected time +interval between a throw and the next catch, in milliseconds. +.TP 8 +.B \-cycles number +Performance Length. 50 \- 1000. Default: 1000. Setting this smaller +will force the juggler to switch patterns (and objects) more often. +.TP 8 +.B \-delay delay +Additional delay between frames, in microseconds. Default: 10000. +.B Deprecated. +Adjust speed using +.BR \-count . +.TP 8 +.B \-ncolors ncolors +Maximum number of colors to use. Default: 32. +.TP 8 +.B \-fps +Display the current frame rate and CPU load. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 1996,2000,2002,2004 by Tim Auckland. Permission to +use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided +that the above copyright notice appear in all copies and that both +that copyright notice and this permission notice appear in supporting +documentation. No representations are made about the suitability of +this software for any purpose. It is provided "as is" without express +or implied warranty. +.SH AUTHOR +Tim Auckland. + +Converted to OpenGL by Jamie Zawinski, 2009. diff --git a/hacks/glx/kaleidocycle.c b/hacks/glx/kaleidocycle.c new file mode 100644 index 0000000..884400f --- /dev/null +++ b/hacks/glx/kaleidocycle.c @@ -0,0 +1,574 @@ +/* kaleidocycle, Copyright (c) 2013-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * A loop of rotating tetrahedra. Created by jwz, July 2013. + * Inspired by, and some math borrowed from: + * http://www.kaleidocycles.de/pdf/kaleidocycles_theory.pdf + * http://intothecontinuum.tumblr.com/post/50873970770/an-even-number-of-at-least-8-regular-tetrahedra + */ + + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 16 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_kaleidocycle 0 +# define release_kaleidocycle 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPIN "Z" +#define DEF_WANDER "False" +#define DEF_SPEED "1.0" + +typedef struct { + GLXContext *glx_context; + rotator *rot, *rot2; + trackball_state *trackball; + Bool button_down_p; + + int min_count, max_count; + Bool startup_p; + + int ncolors; + XColor *colors; + int ccolor; + + GLfloat count; + GLfloat th, dth; + + enum { STATIC, IN, OUT } mode, prev_mode; + +} kaleidocycle_configuration; + +static kaleidocycle_configuration *bps = NULL; + +static char *do_spin; +static GLfloat speed; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt kaleidocycle_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_kaleidocycle (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +kaleidocycle_handle_event (ModeInfo *mi, XEvent *event) +{ + kaleidocycle_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == '+' || c == '.' || c == '>' || c == '=' || c == '+' || + keysym == XK_Right || keysym == XK_Up || keysym == XK_Next) + { + bp->mode = IN; + return True; + } + else if ((c == '-' || c == ',' || c == '<' || c == '-' || c == '_' || + keysym == XK_Left || keysym == XK_Down || keysym == XK_Prior) && + bp->count > bp->min_count) + { + bp->mode = OUT; + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + goto DEF; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + DEF: + if (bp->count <= bp->min_count) + bp->mode = IN; + else + bp->mode = (random() & 1) ? IN : OUT; + return True; + } + + return False; +} + + + +ENTRYPOINT void +init_kaleidocycle (ModeInfo *mi) +{ + kaleidocycle_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_kaleidocycle (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glLineWidth (4); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + { + Bool spinx = False, spiny = False, spinz = False; + double spin_speed = 0.25; + double wander_speed = 0.005; + double spin_accel = 0.2; + double twist_speed = 0.25; + double twist_accel = 1.0; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') spinx = True; + else if (*s == 'y' || *s == 'Y') spiny = True; + else if (*s == 'z' || *s == 'Z') spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + bp->rot = make_rotator (spinx ? spin_speed : 0, + spiny ? spin_speed : 0, + spinz ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False); + bp->rot2 = make_rotator (twist_speed, 0, 0, twist_accel, 0, True); + + bp->trackball = gltrackball_init (True); + } + + if (MI_COUNT(mi) < 8) MI_COUNT(mi) = 8; + if (MI_COUNT(mi) & 1) MI_COUNT(mi)++; + + bp->min_count = 8; + bp->max_count = 12 + MI_COUNT(mi) * 1.3; + if (bp->max_count & 1) bp->max_count++; + bp->startup_p = True; + + bp->count = 0; + bp->mode = IN; + bp->prev_mode = IN; + +/* + bp->count = MI_COUNT(mi); + bp->mode = STATIC; +*/ + + bp->ncolors = 512; + if (! bp->colors) + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_uniform_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + + for (i = 0; i < bp->ncolors; i++) + { + /* make colors twice as bright */ + bp->colors[i].red = (bp->colors[i].red >> 2) + 0x7FFF; + bp->colors[i].green = (bp->colors[i].green >> 2) + 0x7FFF; + bp->colors[i].blue = (bp->colors[i].blue >> 2) + 0x7FFF; + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + + +/* t = toroidal rotation, a = radial position + colors = 4 colors, 4 channels each. + */ +static void +draw_tetra (ModeInfo *mi, double t, double a, Bool reflect_p, + GLfloat *colors) +{ + int wire = MI_IS_WIREFRAME(mi); + + XYZ v1, v2, v3, P, Q; + XYZ verts[4]; + int i; + + double scale; + double sint = sin(t); + double cost = cos(t); + double tana = tan(a); + double sint2 = sint * sint; + double tana2 = tana * tana; + + v1.x = cost; + v1.y = 0; + v1.z = sint; + + scale = 1 / sqrt (1 + sint2 * tana2); + v2.x = scale * -sint; + v2.y = scale * -sint * tana; + v2.z = scale * cost; + + v3.x = scale * -sint2 * tana; + v3.y = scale; + v3.z = scale * cost * sint * tana; + + P.x = v3.y / tana - v3.x; + P.y = 0; + P.z = -v3.z / 2; + + Q.x = v3.y / tana; + Q.y = v3.y; + Q.z = v3.z / 2; + + verts[0] = P; + verts[1] = P; + verts[2] = Q; + verts[3] = Q; + + scale = sqrt(2) / 2; + verts[0].x = P.x - scale * v1.x; + verts[0].y = P.y - scale * v1.y; + verts[0].z = P.z - scale * v1.z; + + verts[1].x = P.x + scale * v1.x; + verts[1].y = P.y + scale * v1.y; + verts[1].z = P.z + scale * v1.z; + + verts[2].x = Q.x - scale * v2.x; + verts[2].y = Q.y - scale * v2.y; + verts[2].z = Q.z - scale * v2.z; + + verts[3].x = Q.x + scale * v2.x; + verts[3].y = Q.y + scale * v2.y; + verts[3].z = Q.z + scale * v2.z; + + for (i = 0; i < 4; i++) + { + Bool reflect2_p = ((i + (reflect_p != 0)) & 1); + XYZ a = verts[(i+1) % 4]; + XYZ b = verts[(i+2) % 4]; + XYZ c = verts[(i+3) % 4]; + XYZ n = ((i & 1) + ? calc_normal (b, a, c) + : calc_normal (a, b, c)); + if (wire) + glColor4fv (colors + (i * 4)); + else + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, colors + (i * 4)); + + glFrontFace (reflect2_p ? GL_CW : GL_CCW); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glNormal3f (n.x, n.y, n.z); + glVertex3f (a.x, a.y, a.z); + glVertex3f (b.x, b.y, b.z); + glVertex3f (c.x, c.y, c.z); + glEnd(); + } +} + + +/* Reflect through the plane normal to the given vector. + */ +static void +reflect (double x, double y, double z) +{ + GLfloat m[4][4]; + + m[0][0] = 1 - (2 * x * x); + m[1][0] = -2 * x * y; + m[2][0] = -2 * x * z; + m[3][0] = 0; + + m[0][1] = -2 * x * y; + m[1][1] = 1 - (2 * y * y); + m[2][1] = -2 * y * z; + m[3][1] = 0; + + m[0][2] = -2 * x * z; + m[1][2] = -2 * y * z; + m[2][2] = 1 - (2 * z * z); + m[3][2] = 0; + + m[0][3] = 0; + m[1][3] = 0; + m[2][3] = 0; + m[3][3] = 1; + + glMultMatrixf (&m[0][0]); +} + + +ENTRYPOINT void +draw_kaleidocycle (ModeInfo *mi) +{ + kaleidocycle_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + GLfloat colors[4*4]; + GLfloat count; + double t, a; + int i; + + GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat bshiny = 128.0; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + mi->polygon_count = 0; + + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 5, + (y - 0.5) * 5, + (z - 0.5) * 10); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1, 0, 0); + glRotatef (y * 360, 0, 1, 0); + glRotatef (z * 360, 0, 0, 1); + + get_rotation (bp->rot2, &x, &y, &z, !bp->button_down_p); + bp->th = x * 360 * 10 * speed; + + /* Make sure the twist is always in motion. Without this, the rotator + sometimes stops, and for too long, and it's boring looking. + */ + bp->th += speed * bp->dth++; + while (bp->dth > 360) bp->dth -= 360; + while (bp->th > 360) bp->th -= 360; + } + + glMaterialfv (GL_FRONT, GL_SPECULAR, bspec); + glMateriali (GL_FRONT, GL_SHININESS, bshiny); + + + /* Evenly spread the colors of the faces, and cycle them together. + */ + for (i = 0; i < 4; i++) + { + int o = bp->ncolors / 4; + int c = (bp->ccolor + (o*i)) % bp->ncolors; + colors[i*4+0] = bp->colors[c].red / 65536.0; + colors[i*4+1] = bp->colors[c].green / 65536.0; + colors[i*4+2] = bp->colors[c].blue / 65536.0; + colors[i*4+3] = 1; + } + bp->ccolor++; + if (bp->ccolor >= bp->ncolors) bp->ccolor = 0; + + + count = (int) floor (bp->count); + while (count < 8) count++; + if (((int) floor (count)) & 1) count++; + + a = 2 * M_PI / (bp->count < 8 ? 8 : bp->count); + t = bp->th / (180 / M_PI); + + glScalef (3, 3, 3); + glScalef (a, a, a); + glRotatef (90, 0, 0, 1); +/* glRotatef (45, 0, 1, 0); */ + + for (i = 0; i <= (int) floor (bp->count); i++) + { + Bool flip_p = (i & 1); + glPushMatrix(); + glRotatef ((i/2) * 4 * 180 / bp->count, 0, 0, 1); + if (flip_p) reflect (-sin(a), cos(a), 0); + + if (bp->mode != STATIC && i >= (int) floor (bp->count)) + { + /* Fractional bp->count means the last piece is in transition */ + GLfloat scale = bp->count - (int) floor (bp->count); + GLfloat tick = 0.07 * speed; + GLfloat ocount = bp->count; + GLfloat alpha; + + /* Fill in faster if we're starting up */ + if (bp->count < MI_COUNT(mi)) + tick *= 2; + + glScalef (scale, scale, scale); + + switch (bp->mode) { + case IN: break; + case OUT: tick = -tick; break; + case STATIC: tick = 0; break; + } + + bp->count += tick; + + if (bp->mode == IN + ? floor (ocount) != floor (bp->count) + : ceil (ocount) != ceil (bp->count)) + { + if (bp->mode == IN) + bp->count = floor (ocount) + 1; + else + bp->count = ceil (ocount) - 1; + + if (((int) floor (bp->count)) & 1 || + (bp->mode == IN && + (bp->count < MI_COUNT(mi) && + bp->startup_p))) + { + /* keep going if it's odd, or less than 8. */ + bp->count = round(bp->count); + } + else + { + bp->mode = STATIC; + bp->startup_p = False; + } + } + + alpha = (scale * scale * scale * scale); + if (alpha < 0.4) alpha = 0.4; + colors[3] = colors[7] = colors[11] = colors[15] = alpha; + } + + draw_tetra (mi, t, a, flip_p, colors); + mi->polygon_count += 4; + + glPopMatrix(); + } + + if (bp->mode == STATIC && !(random() % 200)) { + if (bp->count <= bp->min_count) + bp->mode = IN; + else if (bp->count >= bp->max_count) + bp->mode = OUT; + else + bp->mode = bp->prev_mode; + + bp->prev_mode = bp->mode; + } + + + mi->recursion_depth = ceil (bp->count); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Kaleidocycle", kaleidocycle) + +#endif /* USE_GL */ diff --git a/hacks/glx/kaleidocycle.man b/hacks/glx/kaleidocycle.man new file mode 100644 index 0000000..874d82d --- /dev/null +++ b/hacks/glx/kaleidocycle.man @@ -0,0 +1,96 @@ +.de EX \"Begin example +.ne 5 +.if n .sp 1 +.if t .sp .5 +.nf +.in +.5i +.. +.de EE +.fi +.in -.5i +.if n .sp 1 +.if t .sp .5 +.. +.TH XScreenSaver 1 "25-Jul-98" "X Version 11" +.SH NAME +kaleidocycle - draws twistable rings of tetrahedra +.SH SYNOPSIS +.B kaleidocycle +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] +[\-count \fInumber\fP] +[\-speed \fInumber\fP] +[\-wander] [\-no-wander] +[\-spin \fIaxes\fP] +[\-no-spin] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIkaleidocycle\fP program draws a ring composed of tetrahedra +connected at the edges that twists and rotates toroidally. Segments +are occasionally inserted or removed. +.SH OPTIONS +.I kaleidocycle +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-count \fInumber\fP +The initial number of segments. Default 16. Must be 8 or greater, and +an even number. +.TP 8 +.B \-speed \fInumber\fP +Adjust the animation speed. 0.5 for half as fast, 2.0 for twice as fast. +.TP 8 +.B \-wander +Move the text around the screen. This is the default. +.TP 8 +.B \-no\-wander +Keep the text centered on the screen. +.TP 8 +.B \-spin +Which axes around which the text should spin. The default is "Z", +meaning rotate the object the plane of the screen only. +.TP 8 +.B \-no\-spin +Don't spin the text at all: the same as \fB\-spin ""\fP. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2001-2013 by Jamie Zawinski. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +Jamie Zawinski diff --git a/hacks/glx/klein.c b/hacks/glx/klein.c new file mode 100644 index 0000000..1c042da --- /dev/null +++ b/hacks/glx/klein.c @@ -0,0 +1,2099 @@ +/* klein --- Shows a Klein bottle that rotates in 4d or on which you + can walk */ + +#if 0 +static const char sccsid[] = "@(#)klein.c 1.1 08/10/04 xlockmore"; +#endif + +/* Copyright (c) 2005-2014 Carsten Steger . */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * REVISION HISTORY: + * C. Steger - 08/10/04: Initial version + * C. Steger - 09/08/03: Changes to the parameter handling + * C. Steger - 13/12/25: Added the squeezed torus Klein bottle + * C. Steger - 14/10/03: Moved the curlicue texture to curlicue.h + */ + +/* + * This program shows three different Klein bottles in 4d: the figure-8 Klein + * bottle, the squeezed torus Klein bottle, or the Lawson Klein bottle. You + * can walk on the Klein bottle, see it turn in 4d, or walk on it while it + * turns in 4d. The figure-8 Klein bottle is well known in its 3d form. The + * 4d form used in this program is an extension of the 3d form to 4d that + * does not intersect itself in 4d (which can be seen in the depth colors + * mode). The squeezed torus Klein bottle also does not intersect itself in + * 4d (which can be seen in the depth colors mode). The Lawson Klein bottle, + * on the other hand, does intersect itself in 4d. Its primary use is that + * it has a nice appearance for walking and for turning in 3d. The Klein + * bottle is a non-orientable surface. To make this apparent, the two-sided + * color mode can be used. Alternatively, orientation markers (curling + * arrows) can be drawn as a texture map on the surface of the Klein bottle. + * While walking on the Klein bottle, you will notice that the orientation + * of the curling arrows changes (which it must because the Klein bottle is + * non-orientable). The program projects the 4d Klein bottle to 3d using + * either a perspective or an orthographic projection. Which of the two + * alternatives looks more appealing depends on the viewing mode and the + * Klein bottle. For example, the Lawson Klein bottle looks nicest when + * projected perspectively. The figure-8 Klein bottle, on the other + * hand, looks nicer while walking when projected orthographically from 4d. + * For the squeezed torus Klein bottle, both projection modes give equally + * acceptable projections. The projected Klein bottle can then be projected + * to the screen either perspectively or orthographically. When using the + * walking modes, perspective projection to the screen should be used. There + * are three display modes for the Klein bottle: mesh (wireframe), solid, or + * transparent. Furthermore, the appearance of the Klein bottle can be as + * a solid object or as a set of see-through bands. Finally, the colors + * with with the Klein bottle is drawn can be set to two-sided, rainbow, or + * depth. In the first case, the Klein bottle is drawn with red on one + * "side" and green on the "other side". Of course, the Klein bottle only + * has one side, so the color jumps from red to green along a curve on the + * surface of the Klein bottle. This mode enables you to see that the Klein + * bottle is non-orientable. The second mode draws the Klein bottle with + * fully saturated rainbow colors. This gives a very nice effect when + * combined with the see-through bands mode or with the orientation markers + * drawn. The third mode draws the Klein bottle with colors that are chosen + * according to the 4d "depth" of the points. This mode enables you to see + * that the figure-8 and squeezed torus Klein bottles do not intersect + * themselves in 4d, while the Lawson Klein bottle does intersect itself. + * The rotation speed for each of the six planes around which the Klein + * bottle rotates can be chosen. For the walk-and-turn more, only the + * rotation speeds around the true 4d planes are used (the xy, xz, and yz + * planes). Furthermore, in the walking modes the walking direction in the + * 2d base square of the Klein bottle and the walking speed can be chosen. + * This program is somewhat inspired by Thomas Banchoff's book "Beyond the + * Third Dimension: Geometry, Computer Graphics, and Higher Dimensions", + * Scientific American Library, 1990. + */ + +#include "curlicue.h" + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define KLEIN_BOTTLE_FIGURE_8 0 +#define KLEIN_BOTTLE_SQUEEZED_TORUS 1 +#define KLEIN_BOTTLE_LAWSON 2 +#define NUM_KLEIN_BOTTLES 3 + +#define DISP_WIREFRAME 0 +#define DISP_SURFACE 1 +#define DISP_TRANSPARENT 2 +#define NUM_DISPLAY_MODES 3 + +#define APPEARANCE_SOLID 0 +#define APPEARANCE_BANDS 1 +#define NUM_APPEARANCES 2 + +#define COLORS_TWOSIDED 0 +#define COLORS_RAINBOW 1 +#define COLORS_DEPTH 2 +#define NUM_COLORS 3 + +#define VIEW_WALK 0 +#define VIEW_TURN 1 +#define VIEW_WALKTURN 2 +#define NUM_VIEW_MODES 3 + +#define DISP_3D_PERSPECTIVE 0 +#define DISP_3D_ORTHOGRAPHIC 1 +#define NUM_DISP_3D_MODES 2 + +#define DISP_4D_PERSPECTIVE 0 +#define DISP_4D_ORTHOGRAPHIC 1 +#define NUM_DISP_4D_MODES 2 + +#define DEF_KLEIN_BOTTLE "random" +#define DEF_DISPLAY_MODE "random" +#define DEF_APPEARANCE "random" +#define DEF_COLORS "random" +#define DEF_VIEW_MODE "random" +#define DEF_MARKS "False" +#define DEF_PROJECTION_3D "random" +#define DEF_PROJECTION_4D "random" +#define DEF_SPEEDWX "1.1" +#define DEF_SPEEDWY "1.3" +#define DEF_SPEEDWZ "1.5" +#define DEF_SPEEDXY "1.7" +#define DEF_SPEEDXZ "1.9" +#define DEF_SPEEDYZ "2.1" +#define DEF_WALK_DIRECTION "7.0" +#define DEF_WALK_SPEED "20.0" + +#ifdef STANDALONE +# define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + +# define free_klein 0 +# define release_klein 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#ifndef HAVE_JWXYZ +# include +#endif + +#include "gltrackball.h" + + +#ifdef USE_MODULES +ModStruct klein_description = +{"klein", "init_klein", "draw_klein", NULL, + "draw_klein", "change_klein", NULL, &klein_opts, + 25000, 1, 1, 1, 1.0, 4, "", + "Rotate a Klein bottle in 4d or walk on it", 0, NULL}; + +#endif + + +static char *klein_bottle; +static char *mode; +static char *appear; +static char *color_mode; +static char *view_mode; +static Bool marks; +static char *proj_3d; +static char *proj_4d; +static float speed_wx; +static float speed_wy; +static float speed_wz; +static float speed_xy; +static float speed_xz; +static float speed_yz; +static float walk_direction; +static float walk_speed; + + +static XrmOptionDescRec opts[] = +{ + {"-klein-bottle", ".kleinBottle", XrmoptionSepArg, 0 }, + {"-figure-8", ".kleinBottle", XrmoptionNoArg, "figure-8" }, + {"-squeezed-torus", ".kleinBottle", XrmoptionNoArg, "squeezed-torus" }, + {"-lawson", ".kleinBottle", XrmoptionNoArg, "lawson" }, + {"-mode", ".displayMode", XrmoptionSepArg, 0 }, + {"-wireframe", ".displayMode", XrmoptionNoArg, "wireframe" }, + {"-surface", ".displayMode", XrmoptionNoArg, "surface" }, + {"-transparent", ".displayMode", XrmoptionNoArg, "transparent" }, + {"-appearance", ".appearance", XrmoptionSepArg, 0 }, + {"-solid", ".appearance", XrmoptionNoArg, "solid" }, + {"-bands", ".appearance", XrmoptionNoArg, "bands" }, + {"-colors", ".colors", XrmoptionSepArg, 0 }, + {"-twosided", ".colors", XrmoptionNoArg, "two-sided" }, + {"-rainbow", ".colors", XrmoptionNoArg, "rainbow" }, + {"-depth", ".colors", XrmoptionNoArg, "depth" }, + {"-view-mode", ".viewMode", XrmoptionSepArg, 0 }, + {"-walk", ".viewMode", XrmoptionNoArg, "walk" }, + {"-turn", ".viewMode", XrmoptionNoArg, "turn" }, + {"-walk-turn", ".viewMode", XrmoptionNoArg, "walk-turn" }, + {"-orientation-marks", ".marks", XrmoptionNoArg, "on"}, + {"+orientation-marks", ".marks", XrmoptionNoArg, "off"}, + {"-projection-3d", ".projection3d", XrmoptionSepArg, 0 }, + {"-perspective-3d", ".projection3d", XrmoptionNoArg, "perspective" }, + {"-orthographic-3d", ".projection3d", XrmoptionNoArg, "orthographic" }, + {"-projection-4d", ".projection4d", XrmoptionSepArg, 0 }, + {"-perspective-4d", ".projection4d", XrmoptionNoArg, "perspective" }, + {"-orthographic-4d", ".projection4d", XrmoptionNoArg, "orthographic" }, + {"-speed-wx", ".speedwx", XrmoptionSepArg, 0 }, + {"-speed-wy", ".speedwy", XrmoptionSepArg, 0 }, + {"-speed-wz", ".speedwz", XrmoptionSepArg, 0 }, + {"-speed-xy", ".speedxy", XrmoptionSepArg, 0 }, + {"-speed-xz", ".speedxz", XrmoptionSepArg, 0 }, + {"-speed-yz", ".speedyz", XrmoptionSepArg, 0 }, + {"-walk-direction", ".walkDirection", XrmoptionSepArg, 0 }, + {"-walk-speed", ".walkSpeed", XrmoptionSepArg, 0 } +}; + +static argtype vars[] = +{ + { &klein_bottle, "kleinBottle", "KleinBottle", DEF_KLEIN_BOTTLE, t_String }, + { &mode, "displayMode", "DisplayMode", DEF_DISPLAY_MODE, t_String }, + { &appear, "appearance", "Appearance", DEF_APPEARANCE, t_String }, + { &color_mode, "colors", "Colors", DEF_COLORS, t_String }, + { &view_mode, "viewMode", "ViewMode", DEF_VIEW_MODE, t_String }, + { &marks, "marks", "Marks", DEF_MARKS, t_Bool }, + { &proj_3d, "projection3d", "Projection3d", DEF_PROJECTION_3D, t_String }, + { &proj_4d, "projection4d", "Projection4d", DEF_PROJECTION_4D, t_String }, + { &speed_wx, "speedwx", "Speedwx", DEF_SPEEDWX, t_Float}, + { &speed_wy, "speedwy", "Speedwy", DEF_SPEEDWY, t_Float}, + { &speed_wz, "speedwz", "Speedwz", DEF_SPEEDWZ, t_Float}, + { &speed_xy, "speedxy", "Speedxy", DEF_SPEEDXY, t_Float}, + { &speed_xz, "speedxz", "Speedxz", DEF_SPEEDXZ, t_Float}, + { &speed_yz, "speedyz", "Speedyz", DEF_SPEEDYZ, t_Float}, + { &walk_direction, "walkDirection", "WalkDirection", DEF_WALK_DIRECTION, t_Float}, + { &walk_speed, "walkSpeed", "WalkSpeed", DEF_WALK_SPEED, t_Float} +}; + +ENTRYPOINT ModeSpecOpt klein_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, NULL}; + + +/* Radius of the figure-8 Klein bottle */ +#define FIGURE_8_RADIUS 2.0 + +/* Radius of the squeezed torus Klein bottle */ +#define SQUEEZED_TORUS_RADIUS 2.0 + +/* Offset by which we walk above the Klein bottle */ +#define DELTAY 0.02 + +/* Number of subdivisions of the Klein bottle */ +#define NUMU 128 +#define NUMV 128 + +/* Number of subdivisions per band */ +#define NUMB 8 + + +typedef struct { + GLint WindH, WindW; + GLXContext *glx_context; + /* Options */ + int bottle_type; + int display_mode; + int appearance; + int colors; + int view; + int projection_3d; + int projection_4d; + /* 4D rotation angles */ + float alpha, beta, delta, zeta, eta, theta; + /* Movement parameters */ + float umove, vmove, dumove, dvmove; + int side; + /* The viewing offset in 4d */ + float offset4d[4]; + /* The viewing offset in 3d */ + float offset3d[4]; + /* The 4d coordinates of the Klein bottle and their derivatives */ + float x[(NUMU+1)*(NUMV+1)][4]; + float xu[(NUMU+1)*(NUMV+1)][4]; + float xv[(NUMU+1)*(NUMV+1)][4]; + float pp[(NUMU+1)*(NUMV+1)][3]; + float pn[(NUMU+1)*(NUMV+1)][3]; + /* The precomputed colors of the Klein bottle */ + float col[(NUMU+1)*(NUMV+1)][4]; + /* The precomputed texture coordinates of the Klein bottle */ + float tex[(NUMU+1)*(NUMV+1)][2]; + /* The "curlicue" texture */ + GLuint tex_name; + /* Aspect ratio of the current window */ + float aspect; + /* Trackball states */ + trackball_state *trackballs[2]; + int current_trackball; + Bool button_pressed; + /* A random factor to modify the rotation speeds */ + float speed_scale; +} kleinstruct; + +static kleinstruct *klein = (kleinstruct *) NULL; + + +/* Add a rotation around the wx-plane to the matrix m. */ +static void rotatewx(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][1]; + v = m[i][2]; + m[i][1] = c*u+s*v; + m[i][2] = -s*u+c*v; + } +} + + +/* Add a rotation around the wy-plane to the matrix m. */ +static void rotatewy(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][2]; + m[i][0] = c*u-s*v; + m[i][2] = s*u+c*v; + } +} + + +/* Add a rotation around the wz-plane to the matrix m. */ +static void rotatewz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][1]; + m[i][0] = c*u+s*v; + m[i][1] = -s*u+c*v; + } +} + + +/* Add a rotation around the xy-plane to the matrix m. */ +static void rotatexy(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][2]; + v = m[i][3]; + m[i][2] = c*u+s*v; + m[i][3] = -s*u+c*v; + } +} + + +/* Add a rotation around the xz-plane to the matrix m. */ +static void rotatexz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][1]; + v = m[i][3]; + m[i][1] = c*u-s*v; + m[i][3] = s*u+c*v; + } +} + + +/* Add a rotation around the yz-plane to the matrix m. */ +static void rotateyz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][3]; + m[i][0] = c*u-s*v; + m[i][3] = s*u+c*v; + } +} + + +/* Compute the rotation matrix m from the rotation angles. */ +static void rotateall(float al, float be, float de, float ze, float et, + float th, float m[4][4]) +{ + int i, j; + + for (i=0; i<4; i++) + for (j=0; j<4; j++) + m[i][j] = (i==j); + rotatewx(m,al); + rotatewy(m,be); + rotatewz(m,de); + rotatexy(m,ze); + rotatexz(m,et); + rotateyz(m,th); +} + + +/* Compute the rotation matrix m from the 4d rotation angles. */ +static void rotateall4d(float ze, float et, float th, float m[4][4]) +{ + int i, j; + + for (i=0; i<4; i++) + for (j=0; j<4; j++) + m[i][j] = (i==j); + rotatexy(m,ze); + rotatexz(m,et); + rotateyz(m,th); +} + + +/* Multiply two rotation matrices: o=m*n. */ +static void mult_rotmat(float m[4][4], float n[4][4], float o[4][4]) +{ + int i, j, k; + + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + o[i][j] = 0.0; + for (k=0; k<4; k++) + o[i][j] += m[i][k]*n[k][j]; + } + } +} + + +/* Compute a 4D rotation matrix from two unit quaternions. */ +static void quats_to_rotmat(float p[4], float q[4], float m[4][4]) +{ + double al, be, de, ze, et, th; + double r00, r01, r02, r12, r22; + + r00 = 1.0-2.0*(p[1]*p[1]+p[2]*p[2]); + r01 = 2.0*(p[0]*p[1]+p[2]*p[3]); + r02 = 2.0*(p[2]*p[0]-p[1]*p[3]); + r12 = 2.0*(p[1]*p[2]+p[0]*p[3]); + r22 = 1.0-2.0*(p[1]*p[1]+p[0]*p[0]); + + al = atan2(-r12,r22)*180.0/M_PI; + be = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + de = atan2(-r01,r00)*180.0/M_PI; + + r00 = 1.0-2.0*(q[1]*q[1]+q[2]*q[2]); + r01 = 2.0*(q[0]*q[1]+q[2]*q[3]); + r02 = 2.0*(q[2]*q[0]-q[1]*q[3]); + r12 = 2.0*(q[1]*q[2]+q[0]*q[3]); + r22 = 1.0-2.0*(q[1]*q[1]+q[0]*q[0]); + + et = atan2(-r12,r22)*180.0/M_PI; + th = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + ze = atan2(-r01,r00)*180.0/M_PI; + + rotateall(al,be,de,ze,et,-th,m); +} + + +/* Compute a fully saturated and bright color based on an angle. */ +static void color(kleinstruct *kb, double angle, float col[4]) +{ + int s; + double t; + + if (kb->colors == COLORS_TWOSIDED) + return; + + if (angle >= 0.0) + angle = fmod(angle,2.0*M_PI); + else + angle = fmod(angle,-2.0*M_PI); + s = floor(angle/(M_PI/3)); + t = angle/(M_PI/3)-s; + if (s >= 6) + s = 0; + switch (s) + { + case 0: + col[0] = 1.0; + col[1] = t; + col[2] = 0.0; + break; + case 1: + col[0] = 1.0-t; + col[1] = 1.0; + col[2] = 0.0; + break; + case 2: + col[0] = 0.0; + col[1] = 1.0; + col[2] = t; + break; + case 3: + col[0] = 0.0; + col[1] = 1.0-t; + col[2] = 1.0; + break; + case 4: + col[0] = t; + col[1] = 0.0; + col[2] = 1.0; + break; + case 5: + col[0] = 1.0; + col[1] = 0.0; + col[2] = 1.0-t; + break; + } + if (kb->display_mode == DISP_TRANSPARENT) + col[3] = 0.7; + else + col[3] = 1.0; +} + + +/* Set up the figure-8 Klein bottle coordinates, colors, and texture. */ +static void setup_figure8(ModeInfo *mi, double umin, double umax, double vmin, + double vmax) +{ + int i, j, k, l; + double u, v, ur, vr; + double cu, su, cv, sv, cv2, sv2, c2u, s2u; + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + ur = umax-umin; + vr = vmax-vmin; + for (i=0; i<=NUMU; i++) + { + for (j=0; j<=NUMV; j++) + { + k = i*(NUMV+1)+j; + u = -ur*j/NUMU+umin; + v = vr*i/NUMV+vmin; + if (kb->colors == COLORS_DEPTH) + color(kb,(cos(u)+1.0)*M_PI*2.0/3.0,kb->col[k]); + else + color(kb,v,kb->col[k]); + kb->tex[k][0] = -32*u/(2.0*M_PI); + kb->tex[k][1] = 32*v/(2.0*M_PI); + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + c2u = cos(2.0*u); + s2u = sin(2.0*u); + kb->x[k][0] = (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*cv; + kb->x[k][1] = (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*sv; + kb->x[k][2] = su*sv2+s2u*cv2; + kb->x[k][3] = cu; + kb->xu[k][0] = (cu*cv2-2.0*c2u*sv2)*cv; + kb->xu[k][1] = (cu*cv2-2.0*c2u*sv2)*sv; + kb->xu[k][2] = cu*sv2+2.0*c2u*cv2; + kb->xu[k][3] = -su; + kb->xv[k][0] = ((-0.5*su*sv2-0.5*s2u*cv2)*cv- + (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*sv); + kb->xv[k][1] = ((-0.5*su*sv2-0.5*s2u*cv2)*sv+ + (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*cv); + kb->xv[k][2] = 0.5*su*cv2-0.5*s2u*sv2; + kb->xv[k][3] = 0.0; + for (l=0; l<4; l++) + { + kb->x[k][l] /= FIGURE_8_RADIUS+1.25; + kb->xu[k][l] /= FIGURE_8_RADIUS+1.25; + kb->xv[k][l] /= FIGURE_8_RADIUS+1.25; + } + } + } +} + + +/* Set up the squeezed torus Klein bottle coordinates, colors, and texture. */ +static void setup_squeezed_torus(ModeInfo *mi, double umin, double umax, + double vmin, double vmax) +{ + int i, j, k, l; + double u, v, ur, vr; + double cu, su, cv, sv, cv2, sv2; + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + ur = umax-umin; + vr = vmax-vmin; + for (i=0; i<=NUMU; i++) + { + for (j=0; j<=NUMV; j++) + { + k = i*(NUMV+1)+j; + u = -ur*j/NUMU+umin; + v = vr*i/NUMV+vmin; + if (kb->colors == COLORS_DEPTH) + color(kb,(sin(u)*sin(0.5*v)+1.0)*M_PI*2.0/3.0,kb->col[k]); + else + color(kb,v,kb->col[k]); + kb->tex[k][0] = -32*u/(2.0*M_PI); + kb->tex[k][1] = 32*v/(2.0*M_PI); + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + kb->x[k][0] = (SQUEEZED_TORUS_RADIUS+cu)*cv; + kb->x[k][1] = (SQUEEZED_TORUS_RADIUS+cu)*sv; + kb->x[k][2] = su*cv2; + kb->x[k][3] = su*sv2; + kb->xu[k][0] = -su*cv; + kb->xu[k][1] = -su*sv; + kb->xu[k][2] = cu*cv2; + kb->xu[k][3] = cu*sv2; + kb->xv[k][0] = -(SQUEEZED_TORUS_RADIUS+cu)*sv; + kb->xv[k][1] = (SQUEEZED_TORUS_RADIUS+cu)*cv; + kb->xv[k][2] = -0.5*su*sv2; + kb->xv[k][3] = 0.5*su*cv2; + for (l=0; l<4; l++) + { + kb->x[k][l] /= SQUEEZED_TORUS_RADIUS+1.25; + kb->xu[k][l] /= SQUEEZED_TORUS_RADIUS+1.25; + kb->xv[k][l] /= SQUEEZED_TORUS_RADIUS+1.25; + } + } + } +} + + +/* Set up the Lawson Klein bottle coordinates, colors, and texture. */ +static void setup_lawson(ModeInfo *mi, double umin, double umax, double vmin, + double vmax) +{ + int i, j, k; + double u, v, ur, vr; + double cu, su, cv, sv, cv2, sv2; + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + ur = umax-umin; + vr = vmax-vmin; + for (i=0; i<=NUMV; i++) + { + for (j=0; j<=NUMU; j++) + { + k = i*(NUMU+1)+j; + u = -ur*j/NUMU+umin; + v = vr*i/NUMV+vmin; + if (kb->colors == COLORS_DEPTH) + color(kb,(sin(u)*cos(0.5*v)+1.0)*M_PI*2.0/3.0,kb->col[k]); + else + color(kb,v,kb->col[k]); + kb->tex[k][0] = -32*u/(2.0*M_PI); + kb->tex[k][1] = 32*v/(2.0*M_PI); + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + kb->x[k][0] = cu*cv; + kb->x[k][1] = cu*sv; + kb->x[k][2] = su*sv2; + kb->x[k][3] = su*cv2; + kb->xu[k][0] = -su*cv; + kb->xu[k][1] = -su*sv; + kb->xu[k][2] = cu*sv2; + kb->xu[k][3] = cu*cv2; + kb->xv[k][0] = -cu*sv; + kb->xv[k][1] = cu*cv; + kb->xv[k][2] = su*cv2*0.5; + kb->xv[k][3] = -su*sv2*0.5; + } + } +} + + +/* Draw a figure-8 Klein bottle projected into 3D. */ +static int figure8(ModeInfo *mi, double umin, double umax, double vmin, + double vmax) +{ + int polys = 0; + static const GLfloat mat_diff_red[] = { 1.0, 0.0, 0.0, 1.0 }; + static const GLfloat mat_diff_green[] = { 0.0, 1.0, 0.0, 1.0 }; + static const GLfloat mat_diff_trans_red[] = { 1.0, 0.0, 0.0, 0.7 }; + static const GLfloat mat_diff_trans_green[] = { 0.0, 1.0, 0.0, 0.7 }; + float p[3], pu[3], pv[3], pm[3], n[3], b[3], mat[4][4]; + int i, j, k, l, m, o; + double u, v; + double xx[4], xxu[4], xxv[4], y[4], yu[4], yv[4]; + double q, r, s, t; + double cu, su, cv, sv, cv2, sv2, c2u, s2u; + float q1[4], q2[4], r1[4][4], r2[4][4]; + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + if (kb->view == VIEW_WALK || kb->view == VIEW_WALKTURN) + { + /* Compute the rotation that rotates the Klein bottle in 4D without the + trackball rotations. */ + rotateall4d(kb->zeta,kb->eta,kb->theta,mat); + + u = kb->umove; + v = kb->vmove; + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + c2u = cos(2.0*u); + s2u = sin(2.0*u); + xx[0] = (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*cv; + xx[1] = (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*sv; + xx[2] = su*sv2+s2u*cv2; + xx[3] = cu; + xxu[0] = (cu*cv2-2.0*c2u*sv2)*cv; + xxu[1] = (cu*cv2-2.0*c2u*sv2)*sv; + xxu[2] = cu*sv2+2.0*c2u*cv2; + xxu[3] = -su; + xxv[0] = ((-0.5*su*sv2-0.5*s2u*cv2)*cv- + (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*sv); + xxv[1] = ((-0.5*su*sv2-0.5*s2u*cv2)*sv+ + (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*cv); + xxv[2] = 0.5*su*cv2-0.5*s2u*sv2; + xxv[3] = 0.0; + for (l=0; l<4; l++) + { + xx[l] /= FIGURE_8_RADIUS+1.25; + xxu[l] /= FIGURE_8_RADIUS+1.25; + xxv[l] /= FIGURE_8_RADIUS+1.25; + } + for (l=0; l<4; l++) + { + y[l] = (mat[l][0]*xx[0]+mat[l][1]*xx[1]+ + mat[l][2]*xx[2]+mat[l][3]*xx[3]); + yu[l] = (mat[l][0]*xxu[0]+mat[l][1]*xxu[1]+ + mat[l][2]*xxu[2]+mat[l][3]*xxu[3]); + yv[l] = (mat[l][0]*xxv[0]+mat[l][1]*xxv[1]+ + mat[l][2]*xxv[2]+mat[l][3]*xxv[3]); + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + p[l] = y[l]+kb->offset4d[l]; + pu[l] = yu[l]; + pv[l] = yv[l]; + } + } + else + { + s = y[3]+kb->offset4d[3]; + q = 1.0/s; + t = q*q; + for (l=0; l<3; l++) + { + r = y[l]+kb->offset4d[l]; + p[l] = r*q; + pu[l] = (yu[l]*s-r*yu[3])*t; + pv[l] = (yv[l]*s-r*yv[3])*t; + } + } + n[0] = pu[1]*pv[2]-pu[2]*pv[1]; + n[1] = pu[2]*pv[0]-pu[0]*pv[2]; + n[2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/(kb->side*4.0*sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2])); + n[0] *= t; + n[1] *= t; + n[2] *= t; + pm[0] = pu[0]*kb->dumove+pv[0]*kb->dvmove; + pm[1] = pu[1]*kb->dumove+pv[1]*kb->dvmove; + pm[2] = pu[2]*kb->dumove+pv[2]*kb->dvmove; + t = 1.0/(4.0*sqrt(pm[0]*pm[0]+pm[1]*pm[1]+pm[2]*pm[2])); + pm[0] *= t; + pm[1] *= t; + pm[2] *= t; + b[0] = n[1]*pm[2]-n[2]*pm[1]; + b[1] = n[2]*pm[0]-n[0]*pm[2]; + b[2] = n[0]*pm[1]-n[1]*pm[0]; + t = 1.0/(4.0*sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2])); + b[0] *= t; + b[1] *= t; + b[2] *= t; + + /* Compute alpha, beta, delta from the three basis vectors. + | -b[0] -b[1] -b[2] | + m = | n[0] n[1] n[2] | + | -pm[0] -pm[1] -pm[2] | + */ + kb->alpha = atan2(-n[2],-pm[2])*180/M_PI; + kb->beta = atan2(-b[2],sqrt(b[0]*b[0]+b[1]*b[1]))*180/M_PI; + kb->delta = atan2(b[1],-b[0])*180/M_PI; + + /* Compute the rotation that rotates the Klein bottle in 4D. */ + rotateall(kb->alpha,kb->beta,kb->delta,kb->zeta,kb->eta,kb->theta,mat); + + u = kb->umove; + v = kb->vmove; + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + /*c2u = cos(2.0*u);*/ + s2u = sin(2.0*u); + xx[0] = (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*cv; + xx[1] = (su*cv2-s2u*sv2+FIGURE_8_RADIUS)*sv; + xx[2] = su*sv2+s2u*cv2; + xx[3] = cu; + for (l=0; l<4; l++) + xx[l] /= FIGURE_8_RADIUS+1.25; + for (l=0; l<4; l++) + { + r = 0.0; + for (m=0; m<4; m++) + r += mat[l][m]*xx[m]; + y[l] = r; + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + p[l] = y[l]+kb->offset4d[l]; + } + else + { + s = y[3]+kb->offset4d[3]; + for (l=0; l<3; l++) + p[l] = (y[l]+kb->offset4d[l])/s; + } + + kb->offset3d[0] = -p[0]; + kb->offset3d[1] = -p[1]-DELTAY; + kb->offset3d[2] = -p[2]; + } + else + { + /* Compute the rotation that rotates the Klein bottle in 4D, including + the trackball rotations. */ + rotateall(kb->alpha,kb->beta,kb->delta,kb->zeta,kb->eta,kb->theta,r1); + + gltrackball_get_quaternion(kb->trackballs[0],q1); + gltrackball_get_quaternion(kb->trackballs[1],q2); + quats_to_rotmat(q1,q2,r2); + + mult_rotmat(r2,r1,mat); + } + + /* Project the points from 4D to 3D. */ + for (i=0; i<=NUMU; i++) + { + for (j=0; j<=NUMV; j++) + { + o = i*(NUMV+1)+j; + for (l=0; l<4; l++) + { + y[l] = (mat[l][0]*kb->x[o][0]+mat[l][1]*kb->x[o][1]+ + mat[l][2]*kb->x[o][2]+mat[l][3]*kb->x[o][3]); + yu[l] = (mat[l][0]*kb->xu[o][0]+mat[l][1]*kb->xu[o][1]+ + mat[l][2]*kb->xu[o][2]+mat[l][3]*kb->xu[o][3]); + yv[l] = (mat[l][0]*kb->xv[o][0]+mat[l][1]*kb->xv[o][1]+ + mat[l][2]*kb->xv[o][2]+mat[l][3]*kb->xv[o][3]); + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + kb->pp[o][l] = (y[l]+kb->offset4d[l])+kb->offset3d[l]; + pu[l] = yu[l]; + pv[l] = yv[l]; + } + } + else + { + s = y[3]+kb->offset4d[3]; + q = 1.0/s; + t = q*q; + for (l=0; l<3; l++) + { + r = y[l]+kb->offset4d[l]; + kb->pp[o][l] = r*q+kb->offset3d[l]; + pu[l] = (yu[l]*s-r*yu[3])*t; + pv[l] = (yv[l]*s-r*yv[3])*t; + } + } + kb->pn[o][0] = pu[1]*pv[2]-pu[2]*pv[1]; + kb->pn[o][1] = pu[2]*pv[0]-pu[0]*pv[2]; + kb->pn[o][2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/sqrt(kb->pn[o][0]*kb->pn[o][0]+kb->pn[o][1]*kb->pn[o][1]+ + kb->pn[o][2]*kb->pn[o][2]); + kb->pn[o][0] *= t; + kb->pn[o][1] *= t; + kb->pn[o][2] *= t; + } + } + + if (kb->colors == COLORS_TWOSIDED) + { + glColor3fv(mat_diff_red); + if (kb->display_mode == DISP_TRANSPARENT) + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_green); + } + else + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_green); + } + } + glBindTexture(GL_TEXTURE_2D,kb->tex_name); + + for (i=0; iappearance == APPEARANCE_BANDS && ((i & (NUMB-1)) >= NUMB/2)) + continue; + if (kb->display_mode == DISP_WIREFRAME) + glBegin(GL_QUAD_STRIP); + else + glBegin(GL_TRIANGLE_STRIP); + for (j=0; j<=NUMV; j++) + { + for (k=0; k<=1; k++) + { + l = (i+k); + m = j; + o = l*(NUMV+1)+m; + glNormal3fv(kb->pn[o]); + glTexCoord2fv(kb->tex[o]); + if (kb->colors != COLORS_TWOSIDED) + { + glColor3fv(kb->col[o]); + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,kb->col[o]); + } + glVertex3fv(kb->pp[o]); + polys++; + } + } + glEnd(); + } + polys /= 2; + return polys; +} + + +/* Draw a squeezed torus Klein bottle projected into 3D. */ +static int squeezed_torus(ModeInfo *mi, double umin, double umax, double vmin, + double vmax) +{ + int polys = 0; + static const GLfloat mat_diff_red[] = { 1.0, 0.0, 0.0, 1.0 }; + static const GLfloat mat_diff_green[] = { 0.0, 1.0, 0.0, 1.0 }; + static const GLfloat mat_diff_trans_red[] = { 1.0, 0.0, 0.0, 0.7 }; + static const GLfloat mat_diff_trans_green[] = { 0.0, 1.0, 0.0, 0.7 }; + float p[3], pu[3], pv[3], pm[3], n[3], b[3], mat[4][4]; + int i, j, k, l, m, o; + double u, v; + double xx[4], xxu[4], xxv[4], y[4], yu[4], yv[4]; + double q, r, s, t; + double cu, su, cv, sv, cv2, sv2; + float q1[4], q2[4], r1[4][4], r2[4][4]; + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + if (kb->view == VIEW_WALK || kb->view == VIEW_WALKTURN) + { + /* Compute the rotation that rotates the Klein bottle in 4D without the + trackball rotations. */ + rotateall4d(kb->zeta,kb->eta,kb->theta,mat); + + u = kb->umove; + v = kb->vmove; + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + xx[0] = (SQUEEZED_TORUS_RADIUS+cu)*cv; + xx[1] = (SQUEEZED_TORUS_RADIUS+cu)*sv; + xx[2] = su*cv2; + xx[3] = su*sv2; + xxu[0] = -su*cv; + xxu[1] = -su*sv; + xxu[2] = cu*cv2; + xxu[3] = cu*sv2; + xxv[0] = -(SQUEEZED_TORUS_RADIUS+cu)*sv; + xxv[1] = (SQUEEZED_TORUS_RADIUS+cu)*cv; + xxv[2] = -0.5*su*sv2; + xxv[3] = 0.5*su*cv2; + for (l=0; l<4; l++) + { + xx[l] /= SQUEEZED_TORUS_RADIUS+1.25; + xxu[l] /= SQUEEZED_TORUS_RADIUS+1.25; + xxv[l] /= SQUEEZED_TORUS_RADIUS+1.25; + } + for (l=0; l<4; l++) + { + y[l] = (mat[l][0]*xx[0]+mat[l][1]*xx[1]+ + mat[l][2]*xx[2]+mat[l][3]*xx[3]); + yu[l] = (mat[l][0]*xxu[0]+mat[l][1]*xxu[1]+ + mat[l][2]*xxu[2]+mat[l][3]*xxu[3]); + yv[l] = (mat[l][0]*xxv[0]+mat[l][1]*xxv[1]+ + mat[l][2]*xxv[2]+mat[l][3]*xxv[3]); + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + p[l] = y[l]+kb->offset4d[l]; + pu[l] = yu[l]; + pv[l] = yv[l]; + } + } + else + { + s = y[3]+kb->offset4d[3]; + q = 1.0/s; + t = q*q; + for (l=0; l<3; l++) + { + r = y[l]+kb->offset4d[l]; + p[l] = r*q; + pu[l] = (yu[l]*s-r*yu[3])*t; + pv[l] = (yv[l]*s-r*yv[3])*t; + } + } + n[0] = pu[1]*pv[2]-pu[2]*pv[1]; + n[1] = pu[2]*pv[0]-pu[0]*pv[2]; + n[2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/(kb->side*4.0*sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2])); + n[0] *= t; + n[1] *= t; + n[2] *= t; + pm[0] = pu[0]*kb->dumove+pv[0]*kb->dvmove; + pm[1] = pu[1]*kb->dumove+pv[1]*kb->dvmove; + pm[2] = pu[2]*kb->dumove+pv[2]*kb->dvmove; + t = 1.0/(4.0*sqrt(pm[0]*pm[0]+pm[1]*pm[1]+pm[2]*pm[2])); + pm[0] *= t; + pm[1] *= t; + pm[2] *= t; + b[0] = n[1]*pm[2]-n[2]*pm[1]; + b[1] = n[2]*pm[0]-n[0]*pm[2]; + b[2] = n[0]*pm[1]-n[1]*pm[0]; + t = 1.0/(4.0*sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2])); + b[0] *= t; + b[1] *= t; + b[2] *= t; + + /* Compute alpha, beta, delta from the three basis vectors. + | -b[0] -b[1] -b[2] | + m = | n[0] n[1] n[2] | + | -pm[0] -pm[1] -pm[2] | + */ + kb->alpha = atan2(-n[2],-pm[2])*180/M_PI; + kb->beta = atan2(-b[2],sqrt(b[0]*b[0]+b[1]*b[1]))*180/M_PI; + kb->delta = atan2(b[1],-b[0])*180/M_PI; + + /* Compute the rotation that rotates the Klein bottle in 4D. */ + rotateall(kb->alpha,kb->beta,kb->delta,kb->zeta,kb->eta,kb->theta,mat); + + u = kb->umove; + v = kb->vmove; + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + xx[0] = (SQUEEZED_TORUS_RADIUS+cu)*cv; + xx[1] = (SQUEEZED_TORUS_RADIUS+cu)*sv; + xx[2] = su*cv2; + xx[3] = su*sv2; + for (l=0; l<4; l++) + xx[l] /= SQUEEZED_TORUS_RADIUS+1.25; + for (l=0; l<4; l++) + { + r = 0.0; + for (m=0; m<4; m++) + r += mat[l][m]*xx[m]; + y[l] = r; + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + p[l] = y[l]+kb->offset4d[l]; + } + else + { + s = y[3]+kb->offset4d[3]; + for (l=0; l<3; l++) + p[l] = (y[l]+kb->offset4d[l])/s; + } + + kb->offset3d[0] = -p[0]; + kb->offset3d[1] = -p[1]-DELTAY; + kb->offset3d[2] = -p[2]; + } + else + { + /* Compute the rotation that rotates the Klein bottle in 4D, including + the trackball rotations. */ + rotateall(kb->alpha,kb->beta,kb->delta,kb->zeta,kb->eta,kb->theta,r1); + + gltrackball_get_quaternion(kb->trackballs[0],q1); + gltrackball_get_quaternion(kb->trackballs[1],q2); + quats_to_rotmat(q1,q2,r2); + + mult_rotmat(r2,r1,mat); + } + + /* Project the points from 4D to 3D. */ + for (i=0; i<=NUMU; i++) + { + for (j=0; j<=NUMV; j++) + { + o = i*(NUMV+1)+j; + for (l=0; l<4; l++) + { + y[l] = (mat[l][0]*kb->x[o][0]+mat[l][1]*kb->x[o][1]+ + mat[l][2]*kb->x[o][2]+mat[l][3]*kb->x[o][3]); + yu[l] = (mat[l][0]*kb->xu[o][0]+mat[l][1]*kb->xu[o][1]+ + mat[l][2]*kb->xu[o][2]+mat[l][3]*kb->xu[o][3]); + yv[l] = (mat[l][0]*kb->xv[o][0]+mat[l][1]*kb->xv[o][1]+ + mat[l][2]*kb->xv[o][2]+mat[l][3]*kb->xv[o][3]); + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + kb->pp[o][l] = (y[l]+kb->offset4d[l])+kb->offset3d[l]; + pu[l] = yu[l]; + pv[l] = yv[l]; + } + } + else + { + s = y[3]+kb->offset4d[3]; + q = 1.0/s; + t = q*q; + for (l=0; l<3; l++) + { + r = y[l]+kb->offset4d[l]; + kb->pp[o][l] = r*q+kb->offset3d[l]; + pu[l] = (yu[l]*s-r*yu[3])*t; + pv[l] = (yv[l]*s-r*yv[3])*t; + } + } + kb->pn[o][0] = pu[1]*pv[2]-pu[2]*pv[1]; + kb->pn[o][1] = pu[2]*pv[0]-pu[0]*pv[2]; + kb->pn[o][2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/sqrt(kb->pn[o][0]*kb->pn[o][0]+kb->pn[o][1]*kb->pn[o][1]+ + kb->pn[o][2]*kb->pn[o][2]); + kb->pn[o][0] *= t; + kb->pn[o][1] *= t; + kb->pn[o][2] *= t; + } + } + + if (kb->colors == COLORS_TWOSIDED) + { + glColor3fv(mat_diff_red); + if (kb->display_mode == DISP_TRANSPARENT) + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_green); + } + else + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_green); + } + } + glBindTexture(GL_TEXTURE_2D,kb->tex_name); + + for (i=0; iappearance == APPEARANCE_BANDS && ((i & (NUMB-1)) >= NUMB/2)) + continue; + if (kb->display_mode == DISP_WIREFRAME) + glBegin(GL_QUAD_STRIP); + else + glBegin(GL_TRIANGLE_STRIP); + for (j=0; j<=NUMV; j++) + { + for (k=0; k<=1; k++) + { + l = (i+k); + m = j; + o = l*(NUMV+1)+m; + glNormal3fv(kb->pn[o]); + glTexCoord2fv(kb->tex[o]); + if (kb->colors != COLORS_TWOSIDED) + { + glColor3fv(kb->col[o]); + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,kb->col[o]); + } + glVertex3fv(kb->pp[o]); + polys++; + } + } + glEnd(); + } + polys /= 2; + return polys; +} + + +/* Draw a Lawson Klein bottle projected into 3D. */ +static int lawson(ModeInfo *mi, double umin, double umax, double vmin, + double vmax) +{ + int polys = 0; + static const GLfloat mat_diff_red[] = { 1.0, 0.0, 0.0, 1.0 }; + static const GLfloat mat_diff_green[] = { 0.0, 1.0, 0.0, 1.0 }; + static const GLfloat mat_diff_trans_red[] = { 1.0, 0.0, 0.0, 0.7 }; + static const GLfloat mat_diff_trans_green[] = { 0.0, 1.0, 0.0, 0.7 }; + float p[3], pu[3], pv[3], pm[3], n[3], b[3], mat[4][4]; + int i, j, k, l, m, o; + double u, v; + double cu, su, cv, sv, cv2, sv2; + double xx[4], xxu[4], xxv[4], y[4], yu[4], yv[4]; + double q, r, s, t; + float q1[4], q2[4], r1[4][4], r2[4][4]; + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + if (kb->view == VIEW_WALK || kb->view == VIEW_WALKTURN) + { + /* Compute the rotation that rotates the Klein bottle in 4D without the + trackball rotations. */ + rotateall4d(kb->zeta,kb->eta,kb->theta,mat); + + u = kb->umove; + v = kb->vmove; + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + xx[0] = cu*cv; + xx[1] = cu*sv; + xx[2] = su*sv2; + xx[3] = su*cv2; + xxu[0] = -su*cv; + xxu[1] = -su*sv; + xxu[2] = cu*sv2; + xxu[3] = cu*cv2; + xxv[0] = -cu*sv; + xxv[1] = cu*cv; + xxv[2] = su*cv2*0.5; + xxv[3] = -su*sv2*0.5; + for (l=0; l<4; l++) + { + y[l] = (mat[l][0]*xx[0]+mat[l][1]*xx[1]+ + mat[l][2]*xx[2]+mat[l][3]*xx[3]); + yu[l] = (mat[l][0]*xxu[0]+mat[l][1]*xxu[1]+ + mat[l][2]*xxu[2]+mat[l][3]*xxu[3]); + yv[l] = (mat[l][0]*xxv[0]+mat[l][1]*xxv[1]+ + mat[l][2]*xxv[2]+mat[l][3]*xxv[3]); + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + p[l] = y[l]+kb->offset4d[l]; + pu[l] = yu[l]; + pv[l] = yv[l]; + } + } + else + { + s = y[3]+kb->offset4d[3]; + q = 1.0/s; + t = q*q; + for (l=0; l<3; l++) + { + r = y[l]+kb->offset4d[l]; + p[l] = r*q; + pu[l] = (yu[l]*s-r*yu[3])*t; + pv[l] = (yv[l]*s-r*yv[3])*t; + } + } + n[0] = pu[1]*pv[2]-pu[2]*pv[1]; + n[1] = pu[2]*pv[0]-pu[0]*pv[2]; + n[2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/(kb->side*4.0*sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2])); + n[0] *= t; + n[1] *= t; + n[2] *= t; + pm[0] = pu[0]*kb->dumove+pv[0]*kb->dvmove; + pm[1] = pu[1]*kb->dumove+pv[1]*kb->dvmove; + pm[2] = pu[2]*kb->dumove+pv[2]*kb->dvmove; + t = 1.0/(4.0*sqrt(pm[0]*pm[0]+pm[1]*pm[1]+pm[2]*pm[2])); + pm[0] *= t; + pm[1] *= t; + pm[2] *= t; + b[0] = n[1]*pm[2]-n[2]*pm[1]; + b[1] = n[2]*pm[0]-n[0]*pm[2]; + b[2] = n[0]*pm[1]-n[1]*pm[0]; + t = 1.0/(4.0*sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2])); + b[0] *= t; + b[1] *= t; + b[2] *= t; + + /* Compute alpha, beta, delta from the three basis vectors. + | -b[0] -b[1] -b[2] | + m = | n[0] n[1] n[2] | + | -pm[0] -pm[1] -pm[2] | + */ + kb->alpha = atan2(-n[2],-pm[2])*180/M_PI; + kb->beta = atan2(-b[2],sqrt(b[0]*b[0]+b[1]*b[1]))*180/M_PI; + kb->delta = atan2(b[1],-b[0])*180/M_PI; + + /* Compute the rotation that rotates the Klein bottle in 4D. */ + rotateall(kb->alpha,kb->beta,kb->delta,kb->zeta,kb->eta,kb->theta,mat); + + u = kb->umove; + v = kb->vmove; + cu = cos(u); + su = sin(u); + cv = cos(v); + sv = sin(v); + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + xx[0] = cu*cv; + xx[1] = cu*sv; + xx[2] = su*sv2; + xx[3] = su*cv2; + for (l=0; l<4; l++) + { + r = 0.0; + for (m=0; m<4; m++) + r += mat[l][m]*xx[m]; + y[l] = r; + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + p[l] = y[l]+kb->offset4d[l]; + } + else + { + s = y[3]+kb->offset4d[3]; + for (l=0; l<3; l++) + p[l] = (y[l]+kb->offset4d[l])/s; + } + + kb->offset3d[0] = -p[0]; + kb->offset3d[1] = -p[1]-DELTAY; + kb->offset3d[2] = -p[2]; + } + else + { + /* Compute the rotation that rotates the Klein bottle in 4D, including + the trackball rotations. */ + rotateall(kb->alpha,kb->beta,kb->delta,kb->zeta,kb->eta,kb->theta,r1); + + gltrackball_get_quaternion(kb->trackballs[0],q1); + gltrackball_get_quaternion(kb->trackballs[1],q2); + quats_to_rotmat(q1,q2,r2); + + mult_rotmat(r2,r1,mat); + } + + /* Project the points from 4D to 3D. */ + for (i=0; i<=NUMV; i++) + { + for (j=0; j<=NUMU; j++) + { + o = i*(NUMU+1)+j; + for (l=0; l<4; l++) + { + y[l] = (mat[l][0]*kb->x[o][0]+mat[l][1]*kb->x[o][1]+ + mat[l][2]*kb->x[o][2]+mat[l][3]*kb->x[o][3]); + yu[l] = (mat[l][0]*kb->xu[o][0]+mat[l][1]*kb->xu[o][1]+ + mat[l][2]*kb->xu[o][2]+mat[l][3]*kb->xu[o][3]); + yv[l] = (mat[l][0]*kb->xv[o][0]+mat[l][1]*kb->xv[o][1]+ + mat[l][2]*kb->xv[o][2]+mat[l][3]*kb->xv[o][3]); + } + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + kb->pp[o][l] = (y[l]+kb->offset4d[l])+kb->offset3d[l]; + pu[l] = yu[l]; + pv[l] = yv[l]; + } + } + else + { + s = y[3]+kb->offset4d[3]; + q = 1.0/s; + t = q*q; + for (l=0; l<3; l++) + { + r = y[l]+kb->offset4d[l]; + kb->pp[o][l] = r*q+kb->offset3d[l]; + pu[l] = (yu[l]*s-r*yu[3])*t; + pv[l] = (yv[l]*s-r*yv[3])*t; + } + } + kb->pn[o][0] = pu[1]*pv[2]-pu[2]*pv[1]; + kb->pn[o][1] = pu[2]*pv[0]-pu[0]*pv[2]; + kb->pn[o][2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/sqrt(kb->pn[o][0]*kb->pn[o][0]+kb->pn[o][1]*kb->pn[o][1]+ + kb->pn[o][2]*kb->pn[o][2]); + kb->pn[o][0] *= t; + kb->pn[o][1] *= t; + kb->pn[o][2] *= t; + } + } + + if (kb->colors == COLORS_TWOSIDED) + { + glColor3fv(mat_diff_red); + if (kb->display_mode == DISP_TRANSPARENT) + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_green); + } + else + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_green); + } + } + glBindTexture(GL_TEXTURE_2D,kb->tex_name); + + for (i=0; iappearance == APPEARANCE_BANDS && ((i & (NUMB-1)) >= NUMB/2)) + continue; + if (kb->display_mode == DISP_WIREFRAME) + glBegin(GL_QUAD_STRIP); + else + glBegin(GL_TRIANGLE_STRIP); + for (j=0; j<=NUMU; j++) + { + for (k=0; k<=1; k++) + { + l = (i+k); + m = j; + o = l*(NUMU+1)+m; + glNormal3fv(kb->pn[o]); + glTexCoord2fv(kb->tex[o]); + if (kb->colors != COLORS_TWOSIDED) + { + glColor3fv(kb->col[o]); + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,kb->col[o]); + } + glVertex3fv(kb->pp[o]); + polys++; + } + } + glEnd(); + } + polys /= 2; + return polys; +} + + +/* Generate a texture image that shows the orientation reversal. */ +static void gen_texture(ModeInfo *mi) +{ + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + glGenTextures(1,&kb->tex_name); + glBindTexture(GL_TEXTURE_2D,kb->tex_name); + glPixelStorei(GL_UNPACK_ALIGNMENT,1); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); + glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); + glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,TEX_DIMENSION,TEX_DIMENSION,0, + GL_LUMINANCE,GL_UNSIGNED_BYTE,texture); +} + + +static void init(ModeInfo *mi) +{ + static const GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; + static const GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; + static const GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + if (walk_speed == 0.0) + walk_speed = 20.0; + + if (kb->view == VIEW_TURN) + { + kb->alpha = frand(360.0); + kb->beta = frand(360.0); + kb->delta = frand(360.0); + } + else + { + kb->alpha = 0.0; + kb->beta = 0.0; + kb->delta = 0.0; + } + kb->zeta = 0.0; + if (kb->bottle_type == KLEIN_BOTTLE_FIGURE_8 || + kb->bottle_type == KLEIN_BOTTLE_SQUEEZED_TORUS) + kb->eta = 0.0; + else + kb->eta = 45.0; + kb->theta = 0.0; + kb->umove = frand(2.0*M_PI); + kb->vmove = frand(2.0*M_PI); + kb->dumove = 0.0; + kb->dvmove = 0.0; + kb->side = 1; + + if (kb->bottle_type == KLEIN_BOTTLE_FIGURE_8) + { + kb->offset4d[0] = 0.0; + kb->offset4d[1] = 0.0; + kb->offset4d[2] = 0.0; + kb->offset4d[3] = 1.5; + kb->offset3d[0] = 0.0; + kb->offset3d[1] = 0.0; + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + kb->offset3d[2] = -2.1; + else + kb->offset3d[2] = -1.9; + kb->offset3d[3] = 0.0; + } + else if (kb->bottle_type == KLEIN_BOTTLE_SQUEEZED_TORUS) + { + kb->offset4d[0] = 0.0; + kb->offset4d[1] = 0.0; + kb->offset4d[2] = 0.0; + kb->offset4d[3] = 1.4; + kb->offset3d[0] = 0.0; + kb->offset3d[1] = 0.0; + kb->offset3d[2] = -2.0; + kb->offset3d[3] = 0.0; + } + else /* kb->bottle_type == KLEIN_BOTTLE_LAWSON */ + { + kb->offset4d[0] = 0.0; + kb->offset4d[1] = 0.0; + kb->offset4d[2] = 0.0; + if (kb->projection_4d == DISP_4D_PERSPECTIVE && + kb->projection_3d == DISP_3D_ORTHOGRAPHIC) + kb->offset4d[3] = 1.5; + else + kb->offset4d[3] = 1.1; + kb->offset3d[0] = 0.0; + kb->offset3d[1] = 0.0; + if (kb->projection_4d == DISP_4D_ORTHOGRAPHIC) + kb->offset3d[2] = -2.0; + else + kb->offset3d[2] = -5.0; + kb->offset3d[3] = 0.0; + } + + gen_texture(mi); + if (kb->bottle_type == KLEIN_BOTTLE_FIGURE_8) + setup_figure8(mi,0.0,2.0*M_PI,0.0,2.0*M_PI); + else if (kb->bottle_type == KLEIN_BOTTLE_SQUEEZED_TORUS) + setup_squeezed_torus(mi,0.0,2.0*M_PI,0.0,2.0*M_PI); + else /* kb->bottle_type == KLEIN_BOTTLE_LAWSON */ + setup_lawson(mi,0.0,2.0*M_PI,0.0,2.0*M_PI); + + if (marks) + glEnable(GL_TEXTURE_2D); + else + glDisable(GL_TEXTURE_2D); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (kb->projection_3d == DISP_3D_PERSPECTIVE || + kb->view == VIEW_WALK || kb->view == VIEW_WALKTURN) + { + if (kb->view == VIEW_WALK || kb->view == VIEW_WALKTURN) + gluPerspective(60.0,1.0,0.01,10.0); + else + gluPerspective(60.0,1.0,0.1,10.0); + } + else + { + glOrtho(-1.0,1.0,-1.0,1.0,0.1,10.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + if (kb->display_mode == DISP_WIREFRAME) + kb->display_mode = DISP_SURFACE; +# endif + + if (kb->display_mode == DISP_SURFACE) + { + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LESS); + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,50.0); + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + } + else if (kb->display_mode == DISP_TRANSPARENT) + { + glDisable(GL_DEPTH_TEST); + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,50.0); + glDepthMask(GL_FALSE); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + } + else /* kb->display_mode == DISP_WIREFRAME */ + { + glDisable(GL_DEPTH_TEST); + glShadeModel(GL_FLAT); + glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); + glDisable(GL_LIGHTING); + glDisable(GL_LIGHT0); + glDisable(GL_BLEND); + } +} + + +/* Redisplay the Klein bottle. */ +static void display_klein(ModeInfo *mi) +{ + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + if (!kb->button_pressed) + { + if (kb->view == VIEW_TURN) + { + kb->alpha += speed_wx * kb->speed_scale; + if (kb->alpha >= 360.0) + kb->alpha -= 360.0; + kb->beta += speed_wy * kb->speed_scale; + if (kb->beta >= 360.0) + kb->beta -= 360.0; + kb->delta += speed_wz * kb->speed_scale; + if (kb->delta >= 360.0) + kb->delta -= 360.0; + kb->zeta += speed_xy * kb->speed_scale; + if (kb->zeta >= 360.0) + kb->zeta -= 360.0; + kb->eta += speed_xz * kb->speed_scale; + if (kb->eta >= 360.0) + kb->eta -= 360.0; + kb->theta += speed_yz * kb->speed_scale; + if (kb->theta >= 360.0) + kb->theta -= 360.0; + } + if (kb->view == VIEW_WALKTURN) + { + kb->zeta += speed_xy * kb->speed_scale; + if (kb->zeta >= 360.0) + kb->zeta -= 360.0; + kb->eta += speed_xz * kb->speed_scale; + if (kb->eta >= 360.0) + kb->eta -= 360.0; + kb->theta += speed_yz * kb->speed_scale; + if (kb->theta >= 360.0) + kb->theta -= 360.0; + } + if (kb->view == VIEW_WALK || kb->view == VIEW_WALKTURN) + { + kb->dvmove = cos(walk_direction*M_PI/180.0)*walk_speed*M_PI/4096.0; + kb->vmove += kb->dvmove; + if (kb->vmove >= 2.0*M_PI) + { + kb->vmove -= 2.0*M_PI; + kb->umove = 2.0*M_PI-kb->umove; + kb->side = -kb->side; + } + kb->dumove = (kb->side*sin(walk_direction*M_PI/180.0)* + walk_speed*M_PI/4096.0); + kb->umove += kb->dumove; + if (kb->umove >= 2.0*M_PI) + kb->umove -= 2.0*M_PI; + if (kb->umove < 0.0) + kb->umove += 2.0*M_PI; + } + } + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (kb->projection_3d == DISP_3D_PERSPECTIVE || + kb->view == VIEW_WALK || kb->view == VIEW_WALKTURN) + { + if (kb->view == VIEW_WALK || kb->view == VIEW_WALKTURN) + gluPerspective(60.0,kb->aspect,0.01,10.0); + else + gluPerspective(60.0,kb->aspect,0.1,10.0); + } + else + { + if (kb->aspect >= 1.0) + glOrtho(-kb->aspect,kb->aspect,-1.0,1.0,0.1,10.0); + else + glOrtho(-1.0,1.0,-1.0/kb->aspect,1.0/kb->aspect,0.1,10.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + if (kb->bottle_type == KLEIN_BOTTLE_FIGURE_8) + mi->polygon_count = figure8(mi,0.0,2.0*M_PI,0.0,2.0*M_PI); + else if (kb->bottle_type == KLEIN_BOTTLE_SQUEEZED_TORUS) + mi->polygon_count = squeezed_torus(mi,0.0,2.0*M_PI,0.0,2.0*M_PI); + else /* kb->bottle_type == KLEIN_BOTTLE_LAWSON */ + mi->polygon_count = lawson(mi,0.0,2.0*M_PI,0.0,2.0*M_PI); +} + + +ENTRYPOINT void reshape_klein(ModeInfo *mi, int width, int height) +{ + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + kb->WindW = (GLint)width; + kb->WindH = (GLint)height; + glViewport(0,0,width,height); + kb->aspect = (GLfloat)width/(GLfloat)height; +} + + +ENTRYPOINT Bool klein_handle_event(ModeInfo *mi, XEvent *event) +{ + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + KeySym sym = 0; + char c = 0; + + if (event->xany.type == KeyPress || event->xany.type == KeyRelease) + XLookupString (&event->xkey, &c, 1, &sym, 0); + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + kb->button_pressed = True; + gltrackball_start(kb->trackballs[kb->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + kb->button_pressed = False; + return True; + } + else if (event->xany.type == KeyPress) + { + if (sym == XK_Shift_L || sym == XK_Shift_R) + { + kb->current_trackball = 1; + if (kb->button_pressed) + gltrackball_start(kb->trackballs[kb->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + } + else if (event->xany.type == KeyRelease) + { + if (sym == XK_Shift_L || sym == XK_Shift_R) + { + kb->current_trackball = 0; + if (kb->button_pressed) + gltrackball_start(kb->trackballs[kb->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + } + else if (event->xany.type == MotionNotify && kb->button_pressed) + { + gltrackball_track(kb->trackballs[kb->current_trackball], + event->xmotion.x, event->xmotion.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + + return False; +} + + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Xlock hooks. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +/* + *----------------------------------------------------------------------------- + * Initialize klein. Called each time the window changes. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void init_klein(ModeInfo *mi) +{ + kleinstruct *kb; + + MI_INIT(mi, klein); + kb = &klein[MI_SCREEN(mi)]; + + + kb->trackballs[0] = gltrackball_init(True); + kb->trackballs[1] = gltrackball_init(True); + kb->current_trackball = 0; + kb->button_pressed = False; + + /* Set the Klein bottle. */ + if (!strcasecmp(klein_bottle,"random")) + { + kb->bottle_type = random() % NUM_KLEIN_BOTTLES; + } + else if (!strcasecmp(klein_bottle,"figure-8")) + { + kb->bottle_type = KLEIN_BOTTLE_FIGURE_8; + } + else if (!strcasecmp(klein_bottle,"squeezed-torus")) + { + kb->bottle_type = KLEIN_BOTTLE_SQUEEZED_TORUS; + } + else if (!strcasecmp(klein_bottle,"lawson")) + { + kb->bottle_type = KLEIN_BOTTLE_LAWSON; + } + else + { + kb->bottle_type = random() % NUM_KLEIN_BOTTLES; + } + + /* Set the display mode. */ + if (!strcasecmp(mode,"random")) + { + kb->display_mode = random() % NUM_DISPLAY_MODES; + } + else if (!strcasecmp(mode,"wireframe")) + { + kb->display_mode = DISP_WIREFRAME; + } + else if (!strcasecmp(mode,"surface")) + { + kb->display_mode = DISP_SURFACE; + } + else if (!strcasecmp(mode,"transparent")) + { + kb->display_mode = DISP_TRANSPARENT; + } + else + { + kb->display_mode = random() % NUM_DISPLAY_MODES; + } + + /* Orientation marks don't make sense in wireframe mode. */ + if (kb->display_mode == DISP_WIREFRAME) + marks = False; + + /* Set the appearance. */ + if (!strcasecmp(appear,"random")) + { + kb->appearance = random() % NUM_APPEARANCES; + } + else if (!strcasecmp(appear,"solid")) + { + kb->appearance = APPEARANCE_SOLID; + } + else if (!strcasecmp(appear,"bands")) + { + kb->appearance = APPEARANCE_BANDS; + } + else + { + kb->appearance = random() % NUM_APPEARANCES; + } + + /* Set the color mode. */ + if (!strcasecmp(color_mode,"random")) + { + kb->colors = random() % NUM_COLORS; + } + else if (!strcasecmp(color_mode,"two-sided")) + { + kb->colors = COLORS_TWOSIDED; + } + else if (!strcasecmp(color_mode,"rainbow")) + { + kb->colors = COLORS_RAINBOW; + } + else if (!strcasecmp(color_mode,"depth")) + { + kb->colors = COLORS_DEPTH; + } + else + { + kb->colors = random() % NUM_COLORS; + } + + /* Set the view mode. */ + if (!strcasecmp(view_mode,"random")) + { + kb->view = random() % NUM_VIEW_MODES; + } + else if (!strcasecmp(view_mode,"walk")) + { + kb->view = VIEW_WALK; + } + else if (!strcasecmp(view_mode,"turn")) + { + kb->view = VIEW_TURN; + } + else if (!strcasecmp(view_mode,"walk-turn")) + { + kb->view = VIEW_WALKTURN; + } + else + { + kb->view = random() % NUM_VIEW_MODES; + } + + /* Set the 3d projection mode. */ + if (!strcasecmp(proj_3d,"random")) + { + /* Orthographic projection only makes sense in turn mode. */ + if (kb->view == VIEW_TURN) + kb->projection_3d = random() % NUM_DISP_3D_MODES; + else + kb->projection_3d = DISP_3D_PERSPECTIVE; + } + else if (!strcasecmp(proj_3d,"perspective")) + { + kb->projection_3d = DISP_3D_PERSPECTIVE; + } + else if (!strcasecmp(proj_3d,"orthographic")) + { + kb->projection_3d = DISP_3D_ORTHOGRAPHIC; + } + else + { + /* Orthographic projection only makes sense in turn mode. */ + if (kb->view == VIEW_TURN) + kb->projection_3d = random() % NUM_DISP_3D_MODES; + else + kb->projection_3d = DISP_3D_PERSPECTIVE; + } + + /* Set the 4d projection mode. */ + if (!strcasecmp(proj_4d,"random")) + { + kb->projection_4d = random() % NUM_DISP_4D_MODES; + } + else if (!strcasecmp(proj_4d,"perspective")) + { + kb->projection_4d = DISP_4D_PERSPECTIVE; + } + else if (!strcasecmp(proj_4d,"orthographic")) + { + kb->projection_4d = DISP_4D_ORTHOGRAPHIC; + } + else + { + kb->projection_4d = random() % NUM_DISP_4D_MODES; + } + + /* Modify the speeds to a useful range in walk-and-turn mode. */ + if (kb->view == VIEW_WALKTURN) + { + speed_wx *= 0.2; + speed_wy *= 0.2; + speed_wz *= 0.2; + speed_xy *= 0.2; + speed_xz *= 0.2; + speed_yz *= 0.2; + } + + /* make multiple screens rotate at slightly different rates. */ + kb->speed_scale = 0.9 + frand(0.3); + + if ((kb->glx_context = init_GL(mi)) != NULL) + { + reshape_klein(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + init(mi); + } + else + { + MI_CLEARWINDOW(mi); + } +} + +/* + *----------------------------------------------------------------------------- + * Called by the mainline code periodically to update the display. + *----------------------------------------------------------------------------- + */ +ENTRYPOINT void draw_klein(ModeInfo *mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + kleinstruct *kb; + + if (klein == NULL) + return; + kb = &klein[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + if (!kb->glx_context) + return; + + glXMakeCurrent(display,window,*(kb->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + + display_klein(mi); + + if (MI_IS_FPS(mi)) + do_fps (mi); + + glFlush(); + + glXSwapBuffers(display,window); +} + + +#ifndef STANDALONE +ENTRYPOINT void change_klein(ModeInfo *mi) +{ + kleinstruct *kb = &klein[MI_SCREEN(mi)]; + + if (!kb->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(kb->glx_context)); + init(mi); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("Klein", klein) + +#endif /* USE_GL */ diff --git a/hacks/glx/klein.man b/hacks/glx/klein.man new file mode 100644 index 0000000..1b456bc --- /dev/null +++ b/hacks/glx/klein.man @@ -0,0 +1,308 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +klein - Draws a 4d Klein bottle. +.SH SYNOPSIS +.B klein +[\-display \fIhost:display.screen\fP] +[\-install] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fIusecs\fP] +[\-fps] +[\-klein-bottle \fIbottle-name\fP] +[-figure-8] +[-squeezed-torus] +[-lawson] +[\-mode \fIdisplay-mode\fP] +[\-wireframe] +[\-surface] +[\-transparent] +[\-appearance \fIappearance\fP] +[\-solid] +[\-bands] +[\-colors \fIcolor-scheme\fP] +[\-twosided] +[\-rainbow] +[\-depth] +[\-view-mode \fIview-mode\fP] +[\-walk] +[\-turn] +[\-walk-turn] +[\-orientation-marks] +[\-projection-3d \fImode\fP] +[\-perspective-3d] +[\-orthographic-3d] +[\-projection-4d \fImode\fP] +[\-perspective-4d] +[\-orthographic-4d] +[\-speed-wx \fIfloat\fP] +[\-speed-wy \fIfloat\fP] +[\-speed-wz \fIfloat\fP] +[\-speed-xy \fIfloat\fP] +[\-speed-xz \fIfloat\fP] +[\-speed-yz \fIfloat\fP] +[\-walk-direction \fIfloat\fP] +[\-walk-speed \fIfloat\fP] +.SH DESCRIPTION +The \fIklein\fP program shows three different Klein bottles in 4d: the +figure-8 Klein bottle, the squeezed torus Klein bottle, or the Lawson +Klein bottle. You can walk on the Klein bottle, see it turn in 4d, or +walk on it while it turns in 4d. The figure-8 Klein bottle is well +known in its 3d form. The 4d form used in this program is an +extension of the 3d form to 4d that does not intersect itself in 4d +(which can be seen in the depth colors mode). The squeezed torus +Klein bottle also does not intersect itself in 4d (which can be seen +in the depth colors mode). The Lawson Klein bottle, on the other +hand, does intersect itself in 4d. Its primary use is that it has a +nice appearance for walking and for turning in 3d. The Klein bottle +is a non-orientable surface. To make this apparent, the two-sided +color mode can be used. Alternatively, orientation markers (curling +arrows) can be drawn as a texture map on the surface of the Klein +bottle. While walking on the Klein bottle, you will notice that the +orientation of the curling arrows changes (which it must because the +Klein bottle is non-orientable). The program projects the 4d Klein +bottle to 3d using either a perspective or an orthographic projection. +Which of the two alternatives looks more appealing depends on the +viewing mode and the Klein bottle. For example, the Lawson Klein +bottle looks nicest when projected perspectively. The figure-8 Klein +bottle, on the other hand, looks nicer while walking when projected +orthographically from 4d. For the squeezed torus Klein bottle, both +projection modes give equally acceptable projections. The projected +Klein bottle can then be projected to the screen either perspectively +or orthographically. When using the walking modes, perspective +projection to the screen should be used. There are three display +modes for the Klein bottle: mesh (wireframe), solid, or transparent. +Furthermore, the appearance of the Klein bottle can be as a solid +object or as a set of see-through bands. Finally, the colors with +with the Klein bottle is drawn can be set to two-sided, rainbow, or +depth. In the first case, the Klein bottle is drawn with red on one +"side" and green on the "other side". Of course, the Klein bottle +only has one side, so the color jumps from red to green along a curve +on the surface of the Klein bottle. This mode enables you to see that +the Klein bottle is non-orientable. The second mode draws the Klein +bottle with fully saturated rainbow colors. This gives a very nice +effect when combined with the see-through bands mode or with the +orientation markers drawn. The third mode draws the Klein bottle with +colors that are chosen according to the 4d "depth" of the points. +This mode enables you to see that the figure-8 and squeezed torus +Klein bottles do not intersect themselves in 4d, while the Lawson +Klein bottle does intersect itself. The rotation speed for each of +the six planes around which the Klein bottle rotates can be chosen. +For the walk-and-turn mode, only the rotation speeds around the true +4d planes are used (the xy, xz, and yz planes). Furthermore, in the +walking modes the walking direction in the 2d base square of the Klein +bottle and the walking speed can be chosen. This program is somewhat +inspired by Thomas Banchoff's book "Beyond the Third Dimension: +Geometry, Computer Graphics, and Higher Dimensions", Scientific +American Library, 1990. +.SH OPTIONS +.I klein +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual +class, or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +How much of a delay should be introduced between steps of the +animation. Default 10000, or 1/100th second. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.PP +The following three options are mutually exclusive. They determine +which Klein bottle is displayed. +.TP 8 +.B \-klein-bottle random +Display a random Klein bottle (default). +.TP 8 +.B \-klein-bottle figure-8 \fP(Shortcut: \fB\-figure-8\fP) +Display the figure-8 Klein bottle. +.TP 8 +.B \-klein-bottle squeezed-torus \fP(Shortcut: \fB\-squeezed-torus\fP) +Display the squeezed torus Klein bottle. +.TP 8 +.B \-klein-bottle lawson \fP(Shortcut: \fB\-lawson\fP) +Display the Lawson Klein bottle. +.PP +The following four options are mutually exclusive. They determine +how the Klein bottle is displayed. +.TP 8 +.B \-mode random +Display the Klein bottle in a random display mode (default). +.TP 8 +.B \-mode wireframe \fP(Shortcut: \fB\-wireframe\fP) +Display the Klein bottle as a wireframe mesh. +.TP 8 +.B \-mode surface \fP(Shortcut: \fB\-surface\fP) +Display the Klein bottle as a solid surface. +.TP 8 +.B \-mode transparent \fP(Shortcut: \fB\-transparent\fP) +Display the Klein bottle as a transparent surface. +.PP +The following three options are mutually exclusive. They determine the +appearance of the Klein bottle. +.TP 8 +.B \-appearance random +Display the Klein bottle with a random appearance (default). +.TP 8 +.B \-appearance solid \fP(Shortcut: \fB\-solid\fP) +Display the Klein bottle as a solid object. +.TP 8 +.B \-appearance bands \fP(Shortcut: \fB\-bands\fP) +Display the Klein bottle as see-through bands. +.PP +The following four options are mutually exclusive. They determine +how to color the Klein bottle. +.TP 8 +.B \-colors random +Display the Klein bottle with a random color scheme (default). +.TP 8 +.B \-colors twosided \fP(Shortcut: \fB\-twosided\fP) +Display the Klein bottle with two colors: red on one "side" and green +on the "other side". +.TP 8 +.B \-colors rainbow \fP(Shortcut: \fB\-rainbow\fP) +Display the Klein bottle with fully saturated rainbow colors. If the +Klein bottle is displayed as see-through bands, each band will be +displayed with a different color. +.TP 8 +.B \-colors depth \fP(Shortcut: \fB\-depth\fP) +Display the Klein bottle with colors chosen depending on the 4d +"depth" of the points. +.PP +The following four options are mutually exclusive. They determine +how to view the Klein bottle. +.TP 8 +.B \-view-mode random +View the Klein bottle in a random view mode (default). +.TP 8 +.B \-view-mode walk \fP(Shortcut: \fB\-walk\fP) +View the Klein bottle as if walking on its surface. +.TP 8 +.B \-view-mode turn \fP(Shortcut: \fB\-turn\fP) +View the Klein bottle while it turns in 4d. +.TP 8 +.B \-view-mode walk-turn \fP(Shortcut: \fB\-walk-turn\fP) +View the Klein bottle as if walking on its surface. Additionally, the +Klein bottle turns around the true 4d planes (the xy, xz, and yz +planes). +.PP +The following options determine whether orientation marks are shown on +the Klein bottle. +.TP 8 +.B \-orientation-marks +Display orientation marks on the Klein bottle. +.TP 8 +.B \-no-orientation-marks +Don't display orientation marks on the Klein bottle (default). +.PP +The following three options are mutually exclusive. They determine +how the Klein bottle is projected from 3d to 2d (i.e., to the screen). +.TP 8 +.B \-projection-3d random +Project the Klein bottle from 3d to 2d using a random projection mode +(default). +.TP 8 +.B \-projection-3d perspective \fP(Shortcut: \fB\-perspective-3d\fP) +Project the Klein bottle from 3d to 2d using a perspective projection. +.TP 8 +.B \-projection-3d orthographic \fP(Shortcut: \fB\-orthographic-3d\fP) +Project the Klein bottle from 3d to 2d using an orthographic +projection. +.PP +The following three options are mutually exclusive. They determine +how the Klein bottle is projected from 4d to 3d. +.TP 8 +.B \-projection-4d random +Project the Klein bottle from 4d to 3d using a random projection mode +(default). +.TP 8 +.B \-projection-4d perspective \fP(Shortcut: \fB\-perspective-4d\fP) +Project the Klein bottle from 4d to 3d using a perspective projection. +.TP 8 +.B \-projection-4d orthographic \fP(Shortcut: \fB\-orthographic-4d\fP) +Project the Klein bottle from 4d to 3d using an orthographic +projection. +.PP +The following six options determine the rotation speed of the Klein +bottle around the six possible hyperplanes. The rotation speed is +measured in degrees per frame. The speeds should be set to relatively +small values, e.g., less than 4 in magnitude. In walk mode, all +speeds are ignored. In walk-and-turn mode, the 3d rotation speeds are +ignored (i.e., the wx, wy, and wz speeds). In walk-and-turn mode, +smaller speeds must be used than in the turn mode to achieve a nice +visualization. Therefore, in walk-and-turn mode the speeds you have +selected are divided by 5 internally. +.TP 8 +.B \-speed-wx \fIfloat\fP +Rotation speed around the wx plane (default: 1.1). +.TP 8 +.B \-speed-wy \fIfloat\fP +Rotation speed around the wy plane (default: 1.3). +.TP 8 +.B \-speed-wz \fIfloat\fP +Rotation speed around the wz plane (default: 1.5). +.TP 8 +.B \-speed-xy \fIfloat\fP +Rotation speed around the xy plane (default: 1.7). +.TP 8 +.B \-speed-xz \fIfloat\fP +Rotation speed around the xz plane (default: 1.9). +.TP 8 +.B \-speed-yz \fIfloat\fP +Rotation speed around the yz plane (default: 2.1). +.PP +The following two options determine the walking speed and direction. +.TP 8 +.B \-walk-direction \fIfloat\fP +The walking direction is measured as an angle in degrees in the 2d +square that forms the coordinate system of the surface of the Klein +bottle (default: 7.0). +.TP 8 +.B \-walk-speed \fIfloat\fP +The walking speed is measured in percent of some sensible maximum +speed (default: 20.0). +.SH INTERACTION +If you run this program in standalone mode in its turn mode, you can +rotate the Klein bottle by dragging the mouse while pressing the left +mouse button. This rotates the Klein bottle in 3D, i.e., around the +wx, wy, and wz planes. If you press the shift key while dragging the +mouse with the left button pressed the Klein bottle is rotated in 4D, +i.e., around the xy, xz, and yz planes. To examine the Klein bottle +at your leisure, it is best to set all speeds to 0. Otherwise, the +Klein bottle will rotate while the left mouse button is not pressed. +This kind of interaction is not available in the two walk modes. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2005-2014 by Carsten Steger. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Carsten Steger , 03-oct-2014. diff --git a/hacks/glx/lament.c b/hacks/glx/lament.c new file mode 100644 index 0000000..97ce18b --- /dev/null +++ b/hacks/glx/lament.c @@ -0,0 +1,1786 @@ +/* xscreensaver, Copyright (c) 1998-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* Animates Lemarchand's Box, the Lament Configuration. By jwz, 25-Jul-98. + + TODO: + + * The gold leaf should appear to be raised up from the surface, but + I think this isn't possible with OpenGL. No bump maps. + + * There should be strange lighting effects playing across the surface: + electric sparks, or little glittery blobs of light. Maybe like + http://www.opengl.org/archives/resources/features/KilgardTechniques/ + LensFlare/ + + * Chains. + + * Needs music. ("Hellraiser Themes" by Coil: TORSO CD161; also + duplicated on the "Unnatural History 2" compilation, WORLN M04699.) + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_lament 0 +# define release_lament 0 +#include "xlockmore.h" + +#ifdef USE_GL /* whole file */ + +#include "gllist.h" + +/* #define DEBUG_MODE LAMENT_LEVIATHAN_COLLAPSE */ + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) +#undef MAX +#define MAX(x, y) ((x) > (y) ? (x) : (y)) +#undef MIN +#define MIN(x, y) ((x) < (y) ? (x) : (y)) + +extern const struct gllist + *lament_model_box, + *lament_model_iso_base_a, + *lament_model_iso_base_b, + *lament_model_iso_den, + *lament_model_iso_dse, + *lament_model_iso_dwn, + *lament_model_iso_swd, + *lament_model_iso_une, + *lament_model_iso_unw, + *lament_model_iso_use, + *lament_model_iso_usw, + *lament_model_leviathan, + *lament_model_lid_a, + *lament_model_lid_b, + *lament_model_lid_base, + *lament_model_lid_c, + *lament_model_lid_d, + *lament_model_pillar_a, + *lament_model_pillar_b, + *lament_model_pillar_base, + *lament_model_star_d, + *lament_model_star_u, + *lament_model_taser_a, + *lament_model_taser_b, + *lament_model_taser_base, + *lament_model_tetra_base, + *lament_model_tetra_dse, + *lament_model_tetra_dwn, + *lament_model_tetra_une, + *lament_model_tetra_usw; + +static const struct gllist * const *all_objs[] = { + &lament_model_box, + &lament_model_iso_base_a, + &lament_model_iso_base_b, + &lament_model_iso_den, + &lament_model_iso_dse, + &lament_model_iso_dwn, + &lament_model_iso_swd, + &lament_model_iso_une, + &lament_model_iso_unw, + &lament_model_iso_use, + &lament_model_iso_usw, + &lament_model_leviathan, + &lament_model_lid_a, + &lament_model_lid_b, + &lament_model_lid_base, + &lament_model_lid_c, + &lament_model_lid_d, + &lament_model_pillar_a, + &lament_model_pillar_b, + &lament_model_pillar_base, + &lament_model_star_d, + &lament_model_star_u, + &lament_model_taser_a, + &lament_model_taser_b, + &lament_model_taser_base, + &lament_model_tetra_base, + &lament_model_tetra_dse, + &lament_model_tetra_dwn, + &lament_model_tetra_une, + &lament_model_tetra_usw +}; + +typedef enum { /* must be in the same order as in `all_objs'. */ + OBJ_BOX = 0, + OBJ_ISO_BASE_A, + OBJ_ISO_BASE_B, + OBJ_ISO_DEN, + OBJ_ISO_DSE, + OBJ_ISO_DWN, + OBJ_ISO_SWD, + OBJ_ISO_UNE, + OBJ_ISO_UNW, + OBJ_ISO_USE, + OBJ_ISO_USW, + OBJ_LEVIATHAN, + OBJ_LID_A, + OBJ_LID_B, + OBJ_LID_BASE, + OBJ_LID_C, + OBJ_LID_D, + OBJ_PILLAR_A, + OBJ_PILLAR_B, + OBJ_PILLAR_BASE, + OBJ_STAR_D, + OBJ_STAR_U, + OBJ_TASER_A, + OBJ_TASER_B, + OBJ_TASER_BASE, + OBJ_TETRA_BASE, + OBJ_TETRA_DSE, + OBJ_TETRA_DWN, + OBJ_TETRA_UNE, + OBJ_TETRA_USW +} lament_obj_index; + + +#define DEF_TEXTURE "True" + +static int do_texture; + +static XrmOptionDescRec opts[] = { + {"-texture", ".lament.texture", XrmoptionNoArg, "true" }, + {"+texture", ".lament.texture", XrmoptionNoArg, "false" }, +}; + +static argtype vars[] = { + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt lament_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#include "ximage-loader.h" +#include "rotator.h" +#include "gltrackball.h" +#include "normals.h" + +#include "images/gen/lament512_png.h" + +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +typedef enum { + LAMENT_BOX, + + LAMENT_STAR_OUT, + LAMENT_STAR_ROT, + LAMENT_STAR_ROT_IN, + LAMENT_STAR_ROT_OUT, + LAMENT_STAR_UNROT, + LAMENT_STAR_IN, + + LAMENT_TETRA_UNE, + LAMENT_TETRA_USW, + LAMENT_TETRA_DWN, + LAMENT_TETRA_DSE, + + LAMENT_LID_OPEN, + LAMENT_LID_CLOSE, + LAMENT_LID_ZOOM, + + LAMENT_TASER_OUT, + LAMENT_TASER_SLIDE, + LAMENT_TASER_SLIDE_IN, + LAMENT_TASER_IN, + + LAMENT_PILLAR_OUT, + LAMENT_PILLAR_SPIN, + LAMENT_PILLAR_IN, + + LAMENT_SPHERE_OUT, + LAMENT_SPHERE_IN, + + LAMENT_LEVIATHAN_SPIN, + LAMENT_LEVIATHAN_FADE, + LAMENT_LEVIATHAN_TWIST, + LAMENT_LEVIATHAN_COLLAPSE, + LAMENT_LEVIATHAN_EXPAND, + LAMENT_LEVIATHAN_UNTWIST, + LAMENT_LEVIATHAN_UNFADE, + LAMENT_LEVIATHAN_UNSPIN, + +} lament_type; + +static const GLfloat exterior_color[] = + { 0.33, 0.22, 0.03, 1.00, /* ambient */ + 0.78, 0.57, 0.11, 1.00, /* specular */ + 0.99, 0.91, 0.81, 1.00, /* diffuse */ + 27.80 /* shininess */ + }; +static const GLfloat interior_color[] = + { 0.20, 0.20, 0.15, 1.00, /* ambient */ + 0.40, 0.40, 0.32, 1.00, /* specular */ + 0.99, 0.99, 0.81, 1.00, /* diffuse */ + 50.80 /* shininess */ + }; +static const GLfloat leviathan_color[] = + { 0.30, 0.30, 0.30, 1.00, /* ambient */ + 0.85, 0.85, 0.95, 1.00, /* specular */ + 0.99, 0.99, 0.99, 1.00, /* diffuse */ + 50.80 /* shininess */ + }; +static const GLfloat black_color[] = + { 0.05, 0.05, 0.05, 1.00, /* ambient */ + 0.05, 0.05, 0.05, 1.00, /* specular */ + 0.05, 0.05, 0.05, 1.00, /* diffuse */ + 80.00 /* shininess */ + }; + + +typedef struct { + GLXContext *glx_context; + rotator *rot; + double rotx, roty, rotz; + trackball_state *trackball; + Bool button_down_p; + Bool ffwdp; + + GLuint dlists[countof(all_objs)]; + GLuint polys[countof(all_objs)]; + + XImage *texture; /* image bits */ + GLuint texids[8]; /* texture map IDs */ + lament_type type; /* which mode of the object is current */ + + int anim_pause; /* countdown before animating again */ + GLfloat anim_r, anim_y, anim_z; /* relative position during anims */ + Bool facing_p; + + int state, nstates; + lament_type *states; + +} lament_configuration; + +static lament_configuration *lcs = NULL; + + +static Bool +facing_screen_p (ModeInfo *mi) +{ + Bool facing_p; + GLdouble m[16], p[16], x, y, z; + GLint v[4]; + glGetDoublev (GL_MODELVIEW_MATRIX, m); + glGetDoublev (GL_PROJECTION_MATRIX, p); + glGetIntegerv (GL_VIEWPORT, v); + + /* See if a coordinate 5 units in front of the door is near the + center of the screen. */ + gluProject (0, -5, 0, m, p, v, &x, &y, &z); + x = (x / MI_WIDTH(mi)) - 0.5; + y = (y / MI_HEIGHT(mi)) - 0.5; + + facing_p = (z < 0.9 && + x > -0.15 && x < 0.15 && + y > -0.15 && y < 0.15); + +# ifdef DEBUG_MODE + glBindTexture(GL_TEXTURE_2D, 0); + glDisable (GL_LIGHTING); + glColor3f (1, (facing_p ? 1 : 0), 0); + glBegin (GL_LINES); + glVertex3f (0, 0, 0); + glVertex3f (0, -5, 0); + glEnd(); + if (!MI_IS_WIREFRAME(mi)) glEnable (GL_LIGHTING); +# endif /* DEBUG_MODE */ + + return facing_p; +} + + +static void +scale_for_window (ModeInfo *mi) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + + GLfloat target_size = 1.4 * (lc->texture ? lc->texture->width : 512); + GLfloat size = MI_WIDTH(mi) < MI_HEIGHT(mi) ? MI_WIDTH(mi) : MI_HEIGHT(mi); + GLfloat scale; + + /* Make it take up roughly the full width of the window. */ + scale = 20; + + /* But if the window is wider than tall, make it only take up the + height of the window instead. + */ + if (MI_WIDTH(mi) > MI_HEIGHT(mi)) + scale /= MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + + /* If the window is super wide, make it bigger. */ + if (scale < 8) scale = 8; + + /* Constrain it to roughly life-sized on the screen, not huge. + */ +# ifdef HAVE_MOBILE + if (size > 768) /* iPad retina / iPhone 6 */ + target_size *= 1.5; + else +# endif + { + GLfloat max = 500; /* 3" on my screen... */ + + if (MI_WIDTH(mi) > 2560) { /* Retina displays */ + target_size *= 2.5; + max *= 2.5; + } + + if (target_size > max) + target_size = max; + } + + /* But if that would make the image larger than target_size, scale it + back down again. The image-map bits we have are 512x512, so if the + image is magnified a lot, it looks pretty blocky. It's better to + have a 512x512 animation on a 1920x1080 screen that looks good + than a 1024x1024 animation that looks really pixelated. + */ + if (size > target_size) + scale *= target_size / size; + + glScalef (scale, scale, scale); +} + + +static void +set_colors (const GLfloat *color) +{ + glMaterialfv(GL_FRONT, GL_AMBIENT, color + 0); + glMaterialfv(GL_FRONT, GL_DIFFUSE, color + 4); + glMaterialfv(GL_FRONT, GL_SPECULAR, color + 8); + glMaterialfv(GL_FRONT, GL_SHININESS, color + 12); +} + +static void +set_colors_alpha (const GLfloat *color, GLfloat a) +{ + GLfloat c[countof(leviathan_color)]; + memcpy (c, color, sizeof(c)); + c[3] = c[7] = c[11] = a; + set_colors (c); +} + + +static void +which_face (ModeInfo *mi, const GLfloat *f, int *face, int *outerp) +{ + GLfloat size = 3; /* 3" square */ + const GLfloat *n = f; /* normal */ + const GLfloat *v = f + 3; /* vertex */ + GLfloat slack = 0.01; + + /* First look at the normal to determine which direction this triangle + is facing (or is most-closely facing). + It's an outer surface if it is within epsilon of the cube wall that + it is facing. Otherwise, it's an inner surface. + */ + if (n[1] < -0.5) *face = 1, *outerp = v[1] < slack; /* S */ + else if (n[2] > 0.5) *face = 2, *outerp = v[2] > size-slack; /* U */ + else if (n[1] > 0.5) *face = 3, *outerp = v[1] > size-slack; /* N */ + else if (n[2] < -0.5) *face = 4, *outerp = v[2] < slack; /* D */ + else if (n[0] < -0.5) *face = 5, *outerp = v[0] < slack; /* W */ + else /* (n[0] > 0.5)*/ *face = 6, *outerp = v[0] > size-slack; /* E */ + + /* Faces that don't have normals parallel to the axes aren't external. */ + if (*outerp && + (n[0] > -0.95 && n[0] < 0.95 && + n[1] > -0.95 && n[1] < 0.95 && + n[2] > -0.95 && n[2] < 0.95)) + *outerp = 0; +} + + +static void +texturize_vert (ModeInfo *mi, int which, const GLfloat *v) +{ + GLfloat size = 3; /* 3" square */ + GLfloat s = 0, q = 0; + + /* Texture coordinates are surface coordinates, + on the plane of this cube wall. */ + switch (which) { + case 0: break; + case 1: s = v[0], q = v[2]; break; + case 2: s = v[0], q = v[1]; break; + case 3: s = v[0], q = v[2]; q = size - q; break; + case 4: s = v[0], q = v[1]; q = size - q; break; + case 5: s = v[1], q = v[2]; break; + case 6: s = v[1], q = v[2]; break; + default: abort(); break; + } + + glTexCoord2f (s / size, q / size); +} + + +static void +leviathan (ModeInfo *mi, GLfloat ratio, GLfloat alpha, Bool top_p) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + GLfloat r = 0.34; + GLfloat z = 2 * ratio; + XYZ p[3]; + int i; + + GLfloat th = acos (2 / sqrt (6)); /* Line up with cube's diagonal */ + + glPushMatrix(); + + glRotatef (-45, 0, 1, 0); + glRotatef (-th * 180 / M_PI, 0, 0, 1); + + if (!top_p) + glRotatef (180, 0, 0, 1); + + for (i = 0; i < countof(p); i++) + { + GLfloat th = i * M_PI * 2 / countof(p); + p[i].x = cos(th) * r; + p[i].y = sin(th) * r; + } + + glFrontFace (GL_CCW); + for (i = 0; i < countof(p); i++) + { + int j = (i + 1) % countof(p); +/* if (top_p)*/ + do_normal (z, 0, 0, + 0, p[i].x, p[i].y, + 0, p[j].x, p[j].y); +/* + else + do_normal (z, 0, 0, + 0, p[j].y, p[j].z, + 0, p[i].y, p[i].z); +*/ + + if (do_texture) /* Leviathan is the final texture */ + glBindTexture (GL_TEXTURE_2D, lc->texids[countof(lc->texids) - 1]); + + set_colors (leviathan_color); + + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glTexCoord2f (0.5, 1); + glVertex3f (z, 0, 0); + + glTexCoord2f (0, 0); + glVertex3f (0, p[i].x, p[i].y); + + glTexCoord2f (1, 0); + glVertex3f (0, p[j].x, p[j].y); + glEnd(); + mi->polygon_count++; + + /* Shield for fading */ + if (alpha < 0.9 && !wire) + { + GLfloat a = 0.35; + GLfloat b = 0.69; + + set_colors_alpha (black_color, 1-alpha); + glBindTexture (GL_TEXTURE_2D, 0); + if (!wire) + { + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + + glVertex3f (z*a, p[j].x * b, p[j].y * b); + glVertex3f (z*a, p[i].x * b, p[i].y * b); + glVertex3f (0, p[i].x * 1.01, p[i].y * 1.01); + glVertex3f (0, p[j].x * 1.01, p[j].y * 1.01); + glEnd(); + mi->polygon_count++; + glDisable (GL_BLEND); + } + } + + glPopMatrix(); +} + + +static void +folding_walls (ModeInfo *mi, GLfloat ratio, Bool top_p) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + const GLfloat pa[4][2] = {{ -0.5, -0.215833 }, + { 0, 0.5 }, + { 0.5, 0 }, + { -0.215833, -0.5 }}; + const int tex[6] = { 0, 5, 1, 4, 2, 3 }; + const GLfloat top = -pa[0][1]; + GLfloat end_angle = 30.85; + GLfloat rr = sin (ratio / 2 * M_PI); + GLfloat offa = 0.15 * rr; + GLfloat offb = 0.06 * rr; + GLfloat p[4][3]; + GLfloat t[4][2]; + int i; + + glPushMatrix(); + + if (top_p) + { + glRotatef (60, 1, -1, 1); + glRotatef (180, 0, 1, 0); + glRotatef (90, 1, 0, 0); + } + else + { + glRotatef (180, 1, 0, 0); + } + + /* Scale down the points near the axis */ + + p[0][0] = pa[0][0]; + p[0][1] = 0.5; + p[0][2] = pa[0][1]; + + p[1][0] = pa[1][0] - offb; + p[1][1] = 0.5; + p[1][2] = pa[1][1] - offa; + + p[2][0] = pa[2][0] - offa; + p[2][1] = 0.5; + p[2][2] = pa[2][1] - offb; + + p[3][0] = pa[3][0]; + p[3][1] = 0.5; + p[3][2] = pa[3][1]; + + if (!wire) + { + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + for (i = 0; i < 3; i++) + { + glPushMatrix(); + + if (i == 1) + { + glRotatef (-90, 1, 0, 0); + glRotatef (180, 1, 1, 0); + } + else if (i == 2) + { + glRotatef (-90, 1, 0, 0); + glRotatef (180, 0, 1, 0); + glRotatef (90, 0, 1, 0); + } + + glRotatef (-90, 0, 1, 0); + + glTranslatef (-(top/2 + 0.25), 0.5, -(top/2 + 0.25)); + glRotatef (-45, 0, 1, 0); + glRotatef (ratio * -end_angle, 0, 0, 1); + glRotatef (45, 0, 1, 0); + glTranslatef (top/2 + 0.25, -0.5, top/2 + 0.25); + + /* Get the texture coordinates right. + This is hairy and incomprehensible. */ + + t[0][0] = pa[0][1] + 0.5; t[0][1] = pa[0][0] + 0.5; + t[1][0] = pa[1][1] + 0.5; t[1][1] = pa[1][0] + 0.5; + t[2][0] = pa[2][1] + 0.5; t[2][1] = pa[2][0] + 0.5; + t[3][0] = pa[3][1] + 0.5; t[3][1] = pa[3][0] + 0.5; + + if (i == 0 && !top_p) + { +# define SWAP(A,B) A = 1-A, B = 1-B + SWAP(t[0][0], t[0][1]); + SWAP(t[1][0], t[1][1]); + SWAP(t[2][0], t[2][1]); + SWAP(t[3][0], t[3][1]); +# undef SWAP + } + else if (i == 0 && top_p) + { + GLfloat ot[4][3]; + memcpy (ot, t, sizeof(t)); +# define SWAP(A,B) A = 1-A, B = 1-B + SWAP(t[0][0], ot[2][1]); + SWAP(t[1][0], ot[3][1]); + SWAP(t[2][0], ot[0][1]); + SWAP(t[3][0], ot[1][1]); +# undef SWAP + } + else if (i == 1) + { + GLfloat f; +# define SWAP(A,B) f = A, A = B, B = -f + SWAP(t[0][0], t[0][1]); + SWAP(t[1][0], t[1][1]); + SWAP(t[2][0], t[2][1]); + SWAP(t[3][0], t[3][1]); +# undef SWAP + } + + set_colors_alpha (exterior_color, 1-ratio); + glBindTexture (GL_TEXTURE_2D, lc->texids[tex[i + (top_p ? 3 : 0)]]); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + do_normal (p[0][0], p[0][1], p[0][2], + p[1][0], p[1][1], p[1][2], + p[2][0], p[2][1], p[2][2]); + glTexCoord2fv(t[0]); glVertex3fv(p[0]); + glTexCoord2fv(t[1]); glVertex3fv(p[1]); + glTexCoord2fv(t[2]); glVertex3fv(p[2]); + glTexCoord2fv(t[3]); glVertex3fv(p[3]); + glEnd(); + mi->polygon_count++; + + /* The triangles between the quads */ +# if 0 + /* #### There is a fucking gap between the two black triangles + that I can't figure out! So instead of drawing the triangles, + we build a black shield around the middle bit in leviathan() + and count on back-face culling to have roughly the same effect. + */ + if (!wire) + { + GLfloat pp[4][3]; + memcpy (pp, p, sizeof(pp)); + memcpy (pp[2], pp[1], sizeof(pp[1])); + pp[2][0] -= 0.5 * (1-ratio); + pp[2][1] -= 0.5 * (1-ratio); + + glBindTexture (GL_TEXTURE_2D, 0); + set_colors_alpha (black_color, 1-ratio); + + glBegin(wire ? GL_LINE_LOOP : GL_TRIANGLES); + do_normal (pp[0][0], pp[0][1], pp[0][2], + pp[2][0], pp[2][1], pp[2][2], + pp[1][0], pp[1][1], pp[1][2]); + glVertex3fv(pp[0]); + glVertex3fv(pp[2]); + glVertex3fv(pp[1]); + glEnd(); + mi->polygon_count++; + } +# endif + + glPopMatrix(); + } + + if (! wire) glDisable (GL_BLEND); + + glPopMatrix(); +} + + +static int +lament_sphere (ModeInfo *mi, GLfloat ratio) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + GLfloat size = 3; /* 3" square */ + int polys = 0; + int facets = 16; /* NxN grid on each face */ + int face; + static const GLfloat norms[6][3] = {{ 0, -1, 0 }, { 0, 0, 1 }, { 0, 1, 0 }, + { 0, 0, -1 }, { -1, 0, 0 }, { 1, 0, 0 }}; + GLfloat s = 1.0 / facets; + + /* The ratio used for the normals: linger on the square normals. */ + GLfloat ratio2 = 1 - sin ((1 - ratio) / 2 * M_PI); + GLfloat r1 = 1 - ratio2 / 2; + GLfloat r2 = ratio2 / 2; + + glPushMatrix(); + glTranslatef (-0.5, -0.5, -0.5); + glScalef (1/size, 1/size, 1/size); + + set_colors (exterior_color); + + for (face = 0; face < 6; face++) + { + GLfloat x0, y0; + for (y0 = 0; y0 < 1; y0 += s) + for (x0 = 0; x0 < 1; x0 += s) + { + int i; + GLfloat x1 = x0 + s; + GLfloat y1 = y0 + s; + GLfloat pa[4][3]; /* verts of the cube */ + GLfloat pb[4][3]; /* verts of the transition to the sphere */ + Bool frontp; + GLfloat norm[4][3]; /* normals of the transitional verts */ + + if (norms[face][0]) + frontp = norms[face][0] < 0, + pa[0][1] = x0, pa[0][2] = y0, pa[0][0] = (frontp ? 0 : 1), + pa[1][1] = x1, pa[1][2] = y0, pa[1][0] = pa[0][0], + pa[2][1] = x1, pa[2][2] = y1, pa[2][0] = pa[0][0], + pa[3][1] = x0, pa[3][2] = y1, pa[3][0] = pa[0][0]; + else if (norms[face][1]) + frontp = norms[face][1] > 0, + pa[0][0] = x0, pa[0][2] = y0, pa[0][1] = (frontp ? 1 : 0), + pa[1][0] = x1, pa[1][2] = y0, pa[1][1] = pa[0][1], + pa[2][0] = x1, pa[2][2] = y1, pa[2][1] = pa[0][1], + pa[3][0] = x0, pa[3][2] = y1, pa[3][1] = pa[0][1]; + else /* (norms[face][2]) */ + frontp = norms[face][2] < 0, + pa[0][0] = x0, pa[0][1] = y0, pa[0][2] = (frontp ? 0 : 1), + pa[1][0] = x1, pa[1][1] = y0, pa[1][2] = pa[0][2], + pa[2][0] = x1, pa[2][1] = y1, pa[2][2] = pa[0][2], + pa[3][0] = x0, pa[3][1] = y1, pa[3][2] = pa[0][2]; + + for (i = 0; i < countof(pa); i++) + pa[i][0] *= size, pa[i][1] *= size, pa[i][2] *= size; + + /* Convert square to sphere by treating as a normalized vector */ + for (i = 0; i < countof(pa); i++) + { + GLfloat x = (pa[i][0] / size) - 0.5; + GLfloat y = (pa[i][1] / size) - 0.5; + GLfloat z = (pa[i][2] / size) - 0.5; + GLfloat d = sqrt (x*x + y*y + z*z) / 2; + x = x/d + size/2; + y = y/d + size/2; + z = z/d + size/2; + + pb[i][0] = pa[i][0] + ((x - pa[i][0]) * ratio); + pb[i][1] = pa[i][1] + ((y - pa[i][1]) * ratio); + pb[i][2] = pa[i][2] + ((z - pa[i][2]) * ratio); + } + + /* The normals of an intermediate point are the weighted average + of the cube's orthogonal normals, and the sphere's radial + normals: early in the sequence, the edges are sharp, but they + soften as it expands. */ + { + XYZ na, pa0, pa1, pa2; + pa0.x = pa[0][0]; pa0.y = pa[0][1]; pa0.z = pa[0][2]; + pa1.x = pa[1][0]; pa1.y = pa[1][1]; pa1.z = pa[1][2]; + pa2.x = pa[2][0]; pa2.y = pa[2][1]; pa2.z = pa[2][2]; + na = calc_normal (pa0, pa1, pa2); + + for (i = 0; i < countof(pb); i++) + { + GLfloat d; + XYZ nb; + + nb.x = pb[i][0]; + nb.y = pb[i][1]; + nb.z = pb[i][2]; + d = sqrt (nb.x*nb.x + nb.y*nb.y + nb.z*nb.z); /* normalize */ + nb.x /= d; + nb.y /= d; + nb.z /= d; + + norm[i][0] = (na.x * r1) + (nb.x * r2); /* weighted */ + norm[i][1] = (na.y * r1) + (nb.y * r2); + norm[i][2] = (na.z * r1) + (nb.z * r2); + } + } + + if (! wire) + glBindTexture (GL_TEXTURE_2D, lc->texids[face]); + + glFrontFace (frontp ? GL_CW : GL_CCW); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + + texturize_vert (mi, face+1, pa[0]); + glNormal3fv (norm[0]); + glVertex3fv (pb[0]); + + texturize_vert (mi, face+1, pa[1]); + glNormal3fv (norm[1]); + glVertex3fv (pb[1]); + + texturize_vert (mi, face+1, pa[2]); + glNormal3fv (norm[2]); + glVertex3fv (pb[2]); + + texturize_vert (mi, face+1, pa[3]); + glNormal3fv (norm[3]); + glVertex3fv (pb[3]); + + glEnd(); + polys++; + } + } + + glPopMatrix(); + + return polys; +} + + +static void +draw (ModeInfo *mi) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + + mi->polygon_count = 0; + + if (!wire) + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + else + glClear(GL_COLOR_BUFFER_BIT); + + glPushMatrix(); + + gltrackball_rotate (lc->trackball); + + /* Make into the screen be +Y, right be +X, and up be +Z. */ + glRotatef (-90.0, 1.0, 0.0, 0.0); + + scale_for_window (mi); + + /* Apply rotation to the object. */ + if (lc->type != LAMENT_LID_ZOOM) + get_rotation (lc->rot, &lc->rotx, &lc->roty, &lc->rotz, + !lc->button_down_p); +# ifdef DEBUG_MODE + lc->rotx = 0.18; + lc->roty = 0.22; + lc->rotx = lc->roty = 0; + lc->rotz = 0; +# endif + + glRotatef (lc->rotx * 360, 1, 0, 0); + glRotatef (lc->roty * 360, 0, 1, 0); + glRotatef (lc->rotz * 360, 0, 0, 1); + + glScalef (0.5, 0.5, 0.5); + + switch (lc->type) + { + case LAMENT_BOX: + glCallList (lc->dlists[OBJ_BOX]); + mi->polygon_count += lc->polys[OBJ_BOX]; + break; + + case LAMENT_STAR_OUT: + case LAMENT_STAR_ROT: + case LAMENT_STAR_ROT_IN: + case LAMENT_STAR_ROT_OUT: + case LAMENT_STAR_UNROT: + case LAMENT_STAR_IN: + glTranslatef (0.0, 0.0, lc->anim_z/2); + glRotatef (lc->anim_r/2, 0.0, 0.0, 1.0); + glCallList (lc->dlists[OBJ_STAR_U]); + mi->polygon_count += lc->polys[OBJ_STAR_U]; + + glTranslatef (0.0, 0.0, -lc->anim_z); + glRotatef (-lc->anim_r, 0.0, 0.0, 1.0); + glCallList (lc->dlists[OBJ_STAR_D]); + mi->polygon_count += lc->polys[OBJ_STAR_D]; + break; + + case LAMENT_TETRA_UNE: + case LAMENT_TETRA_USW: + case LAMENT_TETRA_DWN: + case LAMENT_TETRA_DSE: + { + int magic; + GLfloat x, y, z; + switch (lc->type) { + case LAMENT_TETRA_UNE: magic = OBJ_TETRA_UNE; x= 1; y= 1; z= 1; break; + case LAMENT_TETRA_USW: magic = OBJ_TETRA_USW; x= 1; y= 1; z=-1; break; + case LAMENT_TETRA_DWN: magic = OBJ_TETRA_DWN; x= 1; y=-1; z= 1; break; + case LAMENT_TETRA_DSE: magic = OBJ_TETRA_DSE; x=-1; y= 1; z= 1; break; + default: abort(); break; + } + glCallList(lc->dlists[OBJ_TETRA_BASE]); + mi->polygon_count += lc->polys[OBJ_TETRA_BASE]; + if (magic != OBJ_TETRA_UNE) glCallList (lc->dlists[OBJ_TETRA_UNE]); + if (magic != OBJ_TETRA_USW) glCallList (lc->dlists[OBJ_TETRA_USW]); + if (magic != OBJ_TETRA_DWN) glCallList (lc->dlists[OBJ_TETRA_DWN]); + if (magic != OBJ_TETRA_DSE) glCallList (lc->dlists[OBJ_TETRA_DSE]); + glRotatef (lc->anim_r, x, y, z); + glCallList (lc->dlists[magic]); + mi->polygon_count += lc->polys[magic] * 3; + } + break; + + case LAMENT_LID_OPEN: + case LAMENT_LID_CLOSE: + case LAMENT_LID_ZOOM: + { + GLfloat d = 0.21582; + int i; + const int lists[4] = { OBJ_LID_A, OBJ_LID_B, OBJ_LID_C, OBJ_LID_D }; + + lc->facing_p = facing_screen_p (mi); + + if (lc->anim_z < 0.5) + glTranslatef (0, -30 * lc->anim_z, 0); /* zoom */ + else + glTranslatef (8 * (0.5 - (lc->anim_z - 0.5)), 0, 0); + + glCallList (lc->dlists[OBJ_LID_BASE]); + mi->polygon_count += lc->polys[OBJ_LID_BASE]; + for (i = 0; i < countof(lists); i++) + { + glPushMatrix(); + glRotatef (90 * i, 0, 1, 0); + glTranslatef (-d, -0.5, d); + glRotatef (-45, 0, 1, 0); + glRotatef (-lc->anim_r, 1, 0, 0); + glRotatef (45, 0, 1, 0); + glTranslatef (d, 0.5, -d); + glRotatef (-90 * i, 0, 1, 0); + glCallList (lc->dlists[lists[i]]); + mi->polygon_count += lc->polys[lists[i]]; + glPopMatrix(); + } + +# ifdef DEBUG_MODE + if (lc->facing_p) + { + glColor3f(1, 0, 0); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (-0.49, 0.49, -0.49); + glVertex3f ( 0.49, 0.49, -0.49); + glVertex3f ( 0.49, 0.49, 0.49); + glVertex3f (-0.49, 0.49, 0.49); + glEnd(); + mi->polygon_count++; + } +# endif /* DEBUG_MODE */ + } + break; + + case LAMENT_TASER_OUT: + case LAMENT_TASER_SLIDE: + case LAMENT_TASER_SLIDE_IN: + case LAMENT_TASER_IN: + + glTranslatef (0, -lc->anim_z/2, 0); + glCallList (lc->dlists[OBJ_TASER_BASE]); + mi->polygon_count += lc->polys[OBJ_TASER_BASE]; + + glTranslatef (0, lc->anim_z, 0); + glCallList (lc->dlists[OBJ_TASER_A]); + mi->polygon_count += lc->polys[OBJ_TASER_A]; + + glTranslatef (lc->anim_y, 0, 0); + glCallList (lc->dlists[OBJ_TASER_B]); + mi->polygon_count += lc->polys[OBJ_TASER_B]; + break; + + case LAMENT_PILLAR_OUT: + case LAMENT_PILLAR_SPIN: + case LAMENT_PILLAR_IN: + + glCallList (lc->dlists[OBJ_PILLAR_BASE]); + mi->polygon_count += lc->polys[OBJ_PILLAR_BASE]; + + glPushMatrix(); + if (lc->anim_z == 1 || lc->anim_z == 3) + { + glRotatef (lc->anim_r, 0, 0, 1); + glTranslatef (0, 0, lc->anim_y); + } + glCallList (lc->dlists[OBJ_PILLAR_A]); + mi->polygon_count += lc->polys[OBJ_PILLAR_A]; + glPopMatrix(); + + glPushMatrix(); + if (lc->anim_z == 2 || lc->anim_z == 3) + { + glRotatef (lc->anim_r, 0, 0, 1); + glTranslatef (0, 0, -lc->anim_y); + } + glCallList (lc->dlists[OBJ_PILLAR_B]); + mi->polygon_count += lc->polys[OBJ_PILLAR_B]; + glPopMatrix(); + break; + + case LAMENT_SPHERE_OUT: + case LAMENT_SPHERE_IN: + mi->polygon_count += lament_sphere (mi, lc->anim_y); + break; + + case LAMENT_LEVIATHAN_SPIN: + case LAMENT_LEVIATHAN_UNSPIN: + case LAMENT_LEVIATHAN_FADE: + case LAMENT_LEVIATHAN_UNFADE: + case LAMENT_LEVIATHAN_TWIST: + case LAMENT_LEVIATHAN_UNTWIST: + { + /* These normals are hard to compute, so I pulled them from the + model. */ + const GLfloat axes[6][4] = + {{ OBJ_ISO_UNE, 0.633994, 0.442836, 0.633994 }, + { OBJ_ISO_USW, 0.442836, 0.633994, -0.633994 }, + { OBJ_ISO_DSE, -0.633994, 0.633994, 0.442836 }, + { OBJ_ISO_SWD, -0.633994, -0.442836, -0.633994 }, + { OBJ_ISO_DEN, -0.442836, -0.633994, 0.633994 }, + { OBJ_ISO_UNW, 0.633994, -0.633994, -0.442836 }}; + int i; + + GLfloat s = (1 - lc->anim_z); + GLfloat s2 = MAX (0, 360 - lc->anim_r) / 360.0; + Bool blendp = 0; + + switch (lc->type) { + case LAMENT_LEVIATHAN_SPIN: break; + case LAMENT_LEVIATHAN_UNSPIN: s2 = 1 - s2; break; + default: s2 = 0; blendp = 1; break; + } + + if (wire) blendp = 0; + + s = (s * 0.6) + 0.4; + + leviathan (mi, 1 - s2, 1, True); + glCallList (lc->dlists[OBJ_ISO_BASE_A]); + mi->polygon_count += lc->polys[OBJ_ISO_BASE_A]; + + glPushMatrix(); + glScalef (s2, s2, s2); + glCallList (lc->dlists[OBJ_ISO_USE]); + mi->polygon_count += lc->polys[OBJ_ISO_USE]; + glPopMatrix(); + + glPushMatrix(); + glRotatef (lc->anim_y, 1, -1, 1); + glCallList (lc->dlists[OBJ_ISO_BASE_B]); + mi->polygon_count += lc->polys[OBJ_ISO_BASE_B]; + leviathan (mi, 1 - s2, 1, False); + glPopMatrix(); + + if (blendp) + { +# ifndef HAVE_JWZGLES /* no glBlendColor */ + glEnable (GL_BLEND); + glBlendFunc (GL_CONSTANT_ALPHA, GL_SRC_ALPHA); + glBlendColor (1, 1, 1, MAX(0, 1-(lc->anim_z * 3))); +# endif + } + + for (i = 0; i < countof(axes); i++) + { + glPushMatrix(); + glRotatef (lc->anim_r, axes[i][1], axes[i][2], axes[i][3]); + glScalef (s, s, s); + glCallList (lc->dlists[(int) axes[i][0]]); + mi->polygon_count += lc->polys[(int) axes[i][0]]; + glPopMatrix(); + if (i == 2) + glRotatef (lc->anim_y, 1, -1, 1); + } + + if (blendp) glDisable (GL_BLEND); + + glPushMatrix(); + glScalef (s2, s2, s2); + glCallList (lc->dlists[OBJ_ISO_DWN]); + mi->polygon_count += lc->polys[OBJ_ISO_DWN]; + glPopMatrix(); + } + break; + + case LAMENT_LEVIATHAN_COLLAPSE: + case LAMENT_LEVIATHAN_EXPAND: + { + glPushMatrix(); + leviathan (mi, 1, lc->anim_y, True); + glRotatef (180, 1, -1, 1); + leviathan (mi, 1, lc->anim_y, False); + glPopMatrix(); + folding_walls (mi, lc->anim_y, True); + folding_walls (mi, lc->anim_y, False); + } + break; + + default: + abort(); + break; + } + + glPopMatrix(); +} + + +/* Rather than just picking states randomly, pick an ordering randomly, do it, + and then re-randomize. That way one can be assured of seeing all states in + a short time period, though not always in the same order (it's frustrating + to see it pick the same state 5x in a row.) Though, that can still happen, + since states are in the list multiple times as a way of giving them + probabilities. + */ +static void +shuffle_states (lament_configuration *lc) +{ + int i; + for (i = 0; i < lc->nstates; i++) + { + int a = random() % lc->nstates; + lament_type swap = lc->states[a]; + lc->states[a] = lc->states[i]; + lc->states[i] = swap; + } +} + + +static void +animate (ModeInfo *mi) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + int pause = 10; + int pause2 = 120; + GLfloat speed = (lc->ffwdp ? 20 : 1); + + switch (lc->type) + { + case LAMENT_BOX: + { + lc->state++; + if (lc->state >= lc->nstates) + { + shuffle_states (lc); + lc->state = 0; + } + lc->type = lc->states[lc->state]; + + if (lc->type == LAMENT_BOX) + lc->anim_pause = pause2; + + lc->anim_r = 0.0; + lc->anim_y = 0.0; + lc->anim_z = 0.0; + } + break; + + /* -------------------------------------------------------------- */ + + case LAMENT_STAR_OUT: + lc->anim_z += 0.01 * speed; + if (lc->anim_z >= 1.0) + { + lc->anim_z = 1.0; + lc->type = LAMENT_STAR_ROT; + lc->anim_pause = pause; + } + break; + + case LAMENT_STAR_ROT: + lc->anim_r += 1.0 * speed; + if (lc->anim_r >= 45.0) + { + lc->anim_r = 45.0; + lc->type = LAMENT_STAR_ROT_IN; + lc->anim_pause = pause; + } + break; + + case LAMENT_STAR_ROT_IN: + lc->anim_z -= 0.01 * speed; + if (lc->anim_z <= 0.0) + { + lc->anim_z = 0.0; + lc->type = LAMENT_STAR_ROT_OUT; + lc->anim_pause = pause2 * (1 + frand(2) + frand(2)); + } + break; + + case LAMENT_STAR_ROT_OUT: + lc->anim_z += 0.01 * speed; + if (lc->anim_z >= 1.0) + { + lc->anim_z = 1.0; + lc->type = LAMENT_STAR_UNROT; + lc->anim_pause = pause; + } + break; + + case LAMENT_STAR_UNROT: + lc->anim_r -= 1.0 * speed; + if (lc->anim_r <= 0.0) + { + lc->anim_r = 0.0; + lc->type = LAMENT_STAR_IN; + lc->anim_pause = pause; + } + break; + + case LAMENT_STAR_IN: + lc->anim_z -= 0.01 * speed; + if (lc->anim_z <= 0.0) + { + lc->anim_z = 0.0; + lc->type = LAMENT_BOX; + lc->anim_pause = pause2; + } + break; + + /* -------------------------------------------------------------- */ + + case LAMENT_TETRA_UNE: + case LAMENT_TETRA_USW: + case LAMENT_TETRA_DWN: + case LAMENT_TETRA_DSE: + + lc->anim_r += 1.0 * speed; + if (lc->anim_r >= 360.0) + { + lc->anim_r = 0.0; + lc->type = LAMENT_BOX; + lc->anim_pause = pause2; + } + else if (lc->anim_r > 119.0 && lc->anim_r <= 120.0) + { + lc->anim_r = 120.0; + lc->anim_pause = pause; + } + else if (lc->anim_r > 239.0 && lc->anim_r <= 240.0) + { + lc->anim_r = 240.0; + lc->anim_pause = pause; + } + break; + + /* -------------------------------------------------------------- */ + + case LAMENT_LID_OPEN: + lc->anim_r += 1.0 * speed; + + if (lc->anim_r >= 112.0) + { + lc->anim_r = 112.0; + lc->anim_z = 0.0; + lc->anim_pause = pause2; + lc->type = (lc->facing_p ? LAMENT_LID_ZOOM : LAMENT_LID_CLOSE); + } + break; + + case LAMENT_LID_CLOSE: + lc->anim_r -= 1.0 * speed; + if (lc->anim_r <= 0.0) + { + lc->anim_r = 0.0; + lc->type = LAMENT_BOX; + lc->anim_pause = pause2; + } + break; + + case LAMENT_LID_ZOOM: + lc->anim_z += 0.01 * speed; + if (lc->anim_z > 1.0) + { + lc->anim_r = 0.0; + lc->anim_z = 0.0; + lc->type = LAMENT_BOX; + } + break; + + /* -------------------------------------------------------------- */ + + case LAMENT_TASER_OUT: + lc->anim_z += 0.005 * speed; + if (lc->anim_z >= 0.5) + { + lc->anim_z = 0.5; + lc->type = LAMENT_TASER_SLIDE; + lc->anim_pause = pause * (1 + frand(5) + frand(5)); + } + break; + + case LAMENT_TASER_SLIDE: + lc->anim_y += 0.005 * speed; + if (lc->anim_y >= 0.255) + { + lc->anim_y = 0.255; + lc->type = LAMENT_TASER_SLIDE_IN; + lc->anim_pause = pause2 * (1 + frand(5) + frand(5)); + } + break; + + case LAMENT_TASER_SLIDE_IN: + lc->anim_y -= 0.0025 * speed; + if (lc->anim_y <= 0.0) + { + lc->anim_y = 0.0; + lc->type = LAMENT_TASER_IN; + lc->anim_pause = pause; + } + break; + + case LAMENT_TASER_IN: + lc->anim_z -= 0.0025 * speed; + if (lc->anim_z <= 0.0) + { + lc->anim_z = 0.0; + lc->type = LAMENT_BOX; + lc->anim_pause = pause2; + } + break; + + /* -------------------------------------------------------------- */ + + case LAMENT_PILLAR_OUT: + + if (lc->anim_y == 0) /* mostly in */ + lc->anim_y += 0.005 * ((random() % 5) ? -1 : 1) * speed; + else if (lc->anim_y > 0) + lc->anim_y += 0.005 * speed; + else + lc->anim_y -= 0.001 * speed; + + if (lc->anim_z == 0) + { + int i = (random() % 7); /* A, B or both */ + if (i == 0) lc->anim_z = 3; + else if (i < 5) lc->anim_z = 2; + else lc->anim_z = 1; + + /* We can do quarter turns, because it's radially symmetrical. */ + lc->anim_r = 90.0 * (1 + frand(6)) * RANDSIGN(); + } + if (lc->anim_y > 0.4) + { + lc->anim_y = 0.4; + lc->type = LAMENT_PILLAR_SPIN; + lc->anim_pause = pause; + } + else if (lc->anim_y < -0.03) + { + lc->anim_y = -0.03; + lc->type = LAMENT_PILLAR_SPIN; + lc->anim_pause = pause; + } + break; + + case LAMENT_PILLAR_SPIN: + { + Bool negp = (lc->anim_r < 0); + lc->anim_r += (negp ? 1 : -1) * speed; + if (negp ? lc->anim_r > 0 : lc->anim_r < 0) + { + lc->anim_r = 0; + lc->type = LAMENT_PILLAR_IN; + } + } + break; + + case LAMENT_PILLAR_IN: + { + Bool negp = (lc->anim_y < 0); + lc->anim_y += (negp ? 1 : -1) * 0.005 * speed; + if (negp ? lc->anim_y > 0 : lc->anim_y < 0) + { + lc->anim_y = 0; + lc->anim_z = 0; + lc->type = LAMENT_BOX; + lc->anim_pause = pause; + } + } + break; + + /* -------------------------------------------------------------- */ + + case LAMENT_SPHERE_OUT: + { + lc->anim_y += 0.01 * speed; + if (lc->anim_y >= 1) + { + lc->anim_y = 1; + lc->type = LAMENT_SPHERE_IN; + lc->anim_pause = pause2 * (1 + frand(1) + frand(1)); + } + } + break; + + case LAMENT_SPHERE_IN: + { + lc->anim_y -= 0.01 * speed; + if (lc->anim_y <= 0) + { + lc->anim_y = 0; + lc->type = LAMENT_BOX; + lc->anim_pause = pause; + } + } + break; + + /* -------------------------------------------------------------- */ + + case LAMENT_LEVIATHAN_SPIN: + lc->anim_r += 3.5 * speed; + if (lc->anim_r >= 360 * 3) + { + lc->anim_r = 0; + lc->type = LAMENT_LEVIATHAN_FADE; + lc->anim_pause = 0; + } + break; + + case LAMENT_LEVIATHAN_FADE: + lc->anim_z += 0.01 * speed; + if (lc->anim_z >= 1) + { + lc->anim_z = 1; + lc->type = LAMENT_LEVIATHAN_TWIST; + lc->anim_pause = 0; + } + break; + + case LAMENT_LEVIATHAN_TWIST: + lc->anim_y += 2 * speed; + lc->anim_z = 1; + if (lc->anim_y >= 180) + { + lc->anim_y = 0; + lc->type = LAMENT_LEVIATHAN_COLLAPSE; + lc->anim_pause = 0; + } + break; + + case LAMENT_LEVIATHAN_COLLAPSE: + lc->anim_y += 0.01 * speed; + if (lc->anim_y >= 1) + { + lc->anim_y = 1.0; + lc->type = LAMENT_LEVIATHAN_EXPAND; + lc->anim_pause = pause2 * 4; + } + break; + + case LAMENT_LEVIATHAN_EXPAND: + lc->anim_y -= 0.005 * speed; + if (lc->anim_y <= 0) + { + lc->anim_y = 180; + lc->type = LAMENT_LEVIATHAN_UNTWIST; + } + break; + + case LAMENT_LEVIATHAN_UNTWIST: + lc->anim_y -= 2 * speed; + lc->anim_z = 1; + if (lc->anim_y <= 0) + { + lc->anim_y = 0; + lc->type = LAMENT_LEVIATHAN_UNFADE; + lc->anim_pause = 0; + } + break; + + case LAMENT_LEVIATHAN_UNFADE: + lc->anim_z -= 0.1 * speed; + if (lc->anim_z <= 0) + { + lc->anim_z = 0; + lc->type = LAMENT_LEVIATHAN_UNSPIN; + lc->anim_pause = 0; + } + break; + + case LAMENT_LEVIATHAN_UNSPIN: + lc->anim_r += 3.5 * speed; + if (lc->anim_r >= 360 * 2) + { + lc->anim_r = 0; + lc->type = LAMENT_BOX; + lc->anim_pause = pause2; + } + break; + + default: + abort(); + break; + } + +# ifdef DEBUG_MODE + + lc->anim_pause = 0; + + if (lc->type == LAMENT_BOX) + lc->type = DEBUG_MODE; + + if (lc->ffwdp) + { + lc->ffwdp = 0; + while (lc->type != DEBUG_MODE) + animate (mi); + } + +# else /* !DEBUG_MODE */ + + if (lc->ffwdp && lc->type == LAMENT_BOX) + { + lc->ffwdp = 0; + while (lc->type == LAMENT_BOX) + animate (mi); + lc->anim_pause = 0; + } + +# endif /* !DEBUG_MODE */ +} + + +static void +gl_init (ModeInfo *mi) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + int i; + + if (wire) + do_texture = False; + + if (!wire) + { + static const GLfloat pos0[] = { -4.0, 2.0, 5.0, 1.0 }; + static const GLfloat pos1[] = { 6.0, -1.0, 3.0, 1.0 }; + + static const GLfloat amb0[] = { 0.7, 0.7, 0.7, 1.0 }; +/* static const GLfloat amb1[] = { 0.7, 0.0, 0.0, 1.0 }; */ + static const GLfloat dif0[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat dif1[] = { 0.3, 0.1, 0.1, 1.0 }; + + glLightfv(GL_LIGHT0, GL_POSITION, pos0); + glLightfv(GL_LIGHT1, GL_POSITION, pos1); + + glLightfv(GL_LIGHT0, GL_AMBIENT, amb0); +/* glLightfv(GL_LIGHT1, GL_AMBIENT, amb1); */ + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif0); + glLightfv(GL_LIGHT1, GL_DIFFUSE, dif1); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); +/* glEnable(GL_LIGHT1); */ + + glEnable(GL_DEPTH_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + } + + if (do_texture) + { + int i; + for (i = 0; i < countof(lc->texids); i++) + glGenTextures(1, &lc->texids[i]); + + lc->texture = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + lament512_png, sizeof(lament512_png)); + + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + /* messes up -fps */ + /* glPixelStorei(GL_UNPACK_ROW_LENGTH, lc->texture->width); */ + + for (i = 0; i < countof(lc->texids); i++) + { + int height = lc->texture->width; /* assume square */ + glBindTexture(GL_TEXTURE_2D, lc->texids[i]); + + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + lc->texture->width, height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, + (lc->texture->data + + (lc->texture->bytes_per_line * height * i))); + check_gl_error("texture"); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + check_gl_error("texture"); + + /* This makes scaled pixmaps tolerable to look at. */ +# if !defined(GL_TEXTURE_LOD_BIAS) && defined(GL_TEXTURE_LOD_BIAS_EXT) +# define GL_TEXTURE_LOD_BIAS GL_TEXTURE_LOD_BIAS_EXT +# endif +# ifdef GL_TEXTURE_LOD_BIAS + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, 0.25); +# endif + clear_gl_error(); /* invalid enum on iPad 3 */ + } + } + + for (i = 0; i < countof(all_objs); i++) + { + GLfloat s = 1/3.0; /* box is 3" square */ + const struct gllist *L = *all_objs[i]; + const GLfloat *f = (const GLfloat *) L->data; + int j; + + lc->dlists[i] = glGenLists(1); + lc->polys[i] = L->points / 3; + glNewList(lc->dlists[i], GL_COMPILE); + if (L->primitive != GL_TRIANGLES) abort(); + if (L->format != GL_N3F_V3F) abort(); + + glPushMatrix(); + glTranslatef (-0.5, -0.5, -0.5); + glScalef (s, s, s); + + for (j = 0; j < L->points; j += 3) + { + int face, outerp; + Bool blackp = (i == OBJ_ISO_BASE_A || i == OBJ_ISO_BASE_B); + which_face (mi, f, &face, &outerp); /* from norm of first vert */ + + set_colors (outerp ? exterior_color : + blackp ? black_color : interior_color); + glBindTexture (GL_TEXTURE_2D, + (outerp ? lc->texids[face-1] : + blackp ? 0 : lc->texids[6])); + + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + if (face) texturize_vert (mi, face, f+3); + glNormal3fv (f); f += 3; glVertex3fv (f); f += 3; + if (face) texturize_vert (mi, face, f+3); + glNormal3fv (f); f += 3; glVertex3fv (f); f += 3; + if (face) texturize_vert (mi, face, f+3); + glNormal3fv (f); f += 3; glVertex3fv (f); f += 3; + glEnd(); + } + glPopMatrix(); + + glEndList(); + } +} + + +ENTRYPOINT Bool +lament_handle_event (ModeInfo *mi, XEvent *event) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, lc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &lc->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') + { + lc->ffwdp = True; + return True; + } + } + + return False; +} + + +ENTRYPOINT void +reshape_lament (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + glViewport(0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40.0); + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT void +init_lament (ModeInfo *mi) +{ + lament_configuration *lc; + int i; + MI_INIT (mi, lcs); + + lc = &lcs[MI_SCREEN(mi)]; + + { + double rot_speed = 0.5; + lc->rot = make_rotator (rot_speed, rot_speed, rot_speed, 1, 0, True); + lc->trackball = gltrackball_init (True); + } + + lc->type = LAMENT_BOX; + lc->anim_pause = 300 + (random() % 100); + + if ((lc->glx_context = init_GL(mi)) != NULL) + { + reshape_lament(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + gl_init(mi); + } + + lc->states = (lament_type *) calloc (200, sizeof (*lc->states)); + lc->nstates = 0; + +# define PUSH(N,WHICH) \ + for (i = 0; i < N; i++) lc->states[lc->nstates++] = WHICH + + PUSH (4, LAMENT_TETRA_UNE); /* most common */ + PUSH (4, LAMENT_TETRA_USW); + PUSH (4, LAMENT_TETRA_DWN); + PUSH (4, LAMENT_TETRA_DSE); + + PUSH (8, LAMENT_STAR_OUT); /* pretty common */ + PUSH (8, LAMENT_TASER_OUT); + PUSH (8, LAMENT_PILLAR_OUT); + + PUSH (4, LAMENT_LID_OPEN); /* rare */ + PUSH (2, LAMENT_SPHERE_OUT); /* rare */ + PUSH (1, LAMENT_LEVIATHAN_SPIN); /* very rare */ + + PUSH (35, LAMENT_BOX); /* rest state */ +# undef PUSH + + shuffle_states (lc); + +# ifdef DEBUG_MODE + lc->type = DEBUG_MODE; + lc->anim_pause = 0; +# endif + +} + + +ENTRYPOINT void +draw_lament (ModeInfo *mi) +{ + lament_configuration *lc = &lcs[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!lc->glx_context) + return; + + glDrawBuffer(GL_BACK); + + glXMakeCurrent(dpy, window, *(lc->glx_context)); + draw(mi); + if (mi->fps_p) do_fps (mi); + + glFinish(); + glXSwapBuffers(dpy, window); + + if (!lc->ffwdp && lc->anim_pause) + lc->anim_pause--; + else + animate(mi); +} + +XSCREENSAVER_MODULE ("Lament", lament) + +#endif /* USE_GL */ diff --git a/hacks/glx/lament.dxf b/hacks/glx/lament.dxf new file mode 100644 index 0000000..d23108c --- /dev/null +++ b/hacks/glx/lament.dxf @@ -0,0 +1,163404 @@ + 0 +SECTION + 2 +ENTITIES + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +3.0 +30 +0.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.205 +13 +3.0 +23 +3.0 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +0.205 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +0.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +0.205 +20 +3.0 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +tetra_une +10 +1.5 +20 +3.0 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +0.205 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +0.205 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +3 + 0 +3DFACE + 8 +tetra_une +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +3.0 +21 +0.0 +31 +3.0 +12 +0.8525 +22 +3.0 +32 +2.1475 +13 +0.8525 +23 +3.0 +33 +2.1475 +70 +3 + 0 +3DFACE + 8 +tetra_une +10 +0.8525 +20 +3.0 +30 +2.1475 +11 +3.0 +21 +0.0 +31 +3.0 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +tetra_une +10 +0.205 +20 +3.0 +30 +2.795 +11 +3.0 +21 +0.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +3.0 +30 +0.205 +11 +2.795 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +tetra_une +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +tetra_une +10 +0.205 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +0.8525 +20 +3.0 +30 +2.1475 +11 +2.795 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +1.5 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +3.0 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +1.5 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +tetra_une +10 +1.5 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_une +10 +2.795 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.8525 +22 +0.0 +32 +0.8525 +13 +0.8525 +23 +0.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +1.5 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +tetra_usw +10 +3.0 +20 +0.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +3.0 +12 +1.5 +22 +0.0 +32 +3.0 +13 +1.5 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +tetra_usw +10 +3.0 +20 +0.0 +30 +3.0 +11 +1.5 +21 +0.0 +31 +3.0 +12 +2.795 +22 +0.0 +32 +3.0 +13 +2.795 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +0.0 +30 +2.795 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +0.205 +13 +0.0 +23 +0.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +0.205 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.8525 +22 +0.0 +32 +0.8525 +13 +0.8525 +23 +0.0 +33 +0.8525 +70 +3 + 0 +3DFACE + 8 +tetra_usw +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +0.0 +21 +3.0 +31 +3.0 +12 +2.1475 +22 +0.0 +32 +2.1475 +13 +2.1475 +23 +0.0 +33 +2.1475 +70 +3 + 0 +3DFACE + 8 +tetra_usw +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +0.0 +21 +3.0 +31 +3.0 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +tetra_usw +10 +2.795 +20 +0.0 +30 +2.795 +11 +0.0 +21 +3.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +0.205 +12 +0.8525 +22 +0.0 +32 +0.8525 +13 +0.8525 +23 +0.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +tetra_usw +10 +2.795 +20 +0.0 +30 +3.0 +11 +1.5 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +3.0 +12 +1.5 +22 +0.0 +32 +3.0 +13 +1.5 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +2.795 +13 +0.205 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +0.0 +30 +2.795 +11 +0.205 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +1.5 +20 +0.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +2.795 +11 +1.5 +21 +0.0 +31 +3.0 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +tetra_usw +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.205 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +tetra_usw +10 +2.795 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +tetra_dwn +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +2.795 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.0 +21 +3.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.205 +20 +3.0 +30 +0.0 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +tetra_dwn +10 +3.0 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +tetra_dwn +10 +3.0 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +2.795 +20 +3.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +0.0 +30 +0.0 +11 +2.795 +21 +3.0 +31 +0.205 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +0.205 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +13 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +0.8525 +22 +3.0 +32 +2.1475 +13 +0.8525 +23 +3.0 +33 +2.1475 +70 +13 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.205 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.8525 +22 +3.0 +32 +2.1475 +13 +0.8525 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.205 +20 +3.0 +30 +0.0 +11 +0.0 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +2.795 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +tetra_dwn +10 +1.5 +20 +3.0 +30 +0.205 +11 +2.795 +21 +3.0 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +2.795 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.205 +20 +3.0 +30 +0.205 +11 +1.5 +21 +3.0 +31 +0.0 +12 +0.205 +22 +3.0 +32 +0.0 +13 +0.205 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +1.5 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dwn +10 +0.205 +20 +3.0 +30 +1.5 +11 +1.5 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +1.5 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +2.795 +21 +0.0 +31 +1.5 +12 +2.1475 +22 +0.0 +32 +2.1475 +13 +2.1475 +23 +0.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +3.0 +30 +0.0 +11 +0.205 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +0.205 +20 +0.0 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +1.5 +22 +0.0 +32 +0.0 +13 +1.5 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +tetra_dse +10 +1.5 +20 +0.0 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +3.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +0.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +0.0 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +0.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.1475 +22 +0.0 +32 +2.1475 +13 +2.1475 +23 +0.0 +33 +2.1475 +70 +3 + 0 +3DFACE + 8 +tetra_dse +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +3.0 +21 +3.0 +31 +0.0 +12 +0.8525 +22 +0.0 +32 +0.8525 +13 +0.8525 +23 +0.0 +33 +0.8525 +70 +3 + 0 +3DFACE + 8 +tetra_dse +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +3.0 +21 +3.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +tetra_dse +10 +0.205 +20 +0.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +LINE + 8 +tetra_dse +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.0 +21 +0.0 +31 +2.795 + 0 +3DFACE + 8 +tetra_dse +10 +0.205 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +2.795 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +tetra_dse +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +0.205 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +0.0 +30 +0.205 +11 +2.795 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +1.5 +20 +0.0 +30 +0.205 +11 +0.205 +21 +0.0 +31 +0.0 +12 +1.5 +22 +0.0 +32 +0.0 +13 +1.5 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +0.205 +20 +0.0 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +0.205 +11 +1.5 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +1.5 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +3.0 +20 +0.0 +30 +1.5 +11 +2.795 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +tetra_dse +10 +2.795 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0 +31 +0.205 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +tetra_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +tetra_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +tetra_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +tetra_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +2.26629223953759 +21 +1.42452680194624 +31 +3.0 +12 +2.25520466591049 +22 +1.34978045204758 +32 +3.0 +13 +2.25520466591049 +23 +1.34978045204758 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.26629223953759 +20 +1.42452680194624 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +2.27 +22 +1.5 +32 +3.0 +13 +2.27 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.73 +20 +1.5 +30 +3.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.73 +21 +1.5 +31 +3.0 +12 +0.733707760462408 +22 +1.57547319805376 +32 +3.0 +13 +0.733707760462408 +23 +1.57547319805376 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.733707760462408 +21 +1.57547319805376 +31 +3.0 +12 +0.744795334089513 +22 +1.65021954795242 +32 +3.0 +13 +0.744795334089513 +23 +1.65021954795242 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.50226795687895 +20 +0.0 +30 +3.0 +11 +1.98848282880601 +21 +0.904781950910693 +31 +3.0 +12 +1.92778907942509 +22 +0.85976839852704 +32 +3.0 +13 +1.92778907942509 +23 +0.85976839852704 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.98848282880601 +20 +0.904781950910693 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.04447222151364 +22 +0.955527778486358 +32 +3.0 +13 +2.04447222151364 +23 +0.955527778486358 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.795 +22 +0.0 +32 +3.0 +13 +2.795 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +0.955527778486358 +30 +3.0 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.955527778486358 +21 +0.955527778486358 +31 +3.0 +12 +0.904781950910692 +22 +1.01151717119399 +32 +3.0 +13 +0.904781950910692 +23 +1.01151717119399 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.904781950910692 +21 +1.01151717119399 +31 +3.0 +12 +0.85976839852704 +22 +1.07221092057491 +32 +3.0 +13 +0.85976839852704 +23 +1.07221092057491 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +2.26629223953759 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.57547319805376 +21 +2.26629223953759 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.57547319805376 +21 +2.26629223953759 +31 +3.0 +12 +1.65021954795242 +22 +2.25520466591049 +32 +3.0 +13 +1.65021954795242 +23 +2.25520466591049 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.09521804908931 +20 +1.98848282880601 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.04447222151364 +22 +2.04447222151364 +32 +3.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.09521804908931 +21 +1.98848282880601 +31 +3.0 +12 +2.14023160147296 +22 +1.92778907942509 +32 +3.0 +13 +2.14023160147296 +23 +1.92778907942509 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.14023160147296 +21 +1.92778907942509 +31 +3.0 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.205 +22 +3.0 +32 +3.0 +13 +0.205 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +2.17367965644036 +11 +2.12132034355964 +21 +0.0 +31 +0.826320343559644 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.2368440585138 +20 +1.27648079851406 +30 +0.0 +11 +3.0 +21 +0.878679656440358 +31 +0.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +0.0 +13 +2.21138724003369 +23 +1.20533375707888 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.878679656440358 +30 +0.0 +11 +2.2368440585138 +21 +1.27648079851406 +31 +0.0 +12 +2.25520466591049 +22 +1.34978045204758 +32 +0.0 +13 +2.25520466591049 +23 +1.34978045204758 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.878679656440358 +30 +0.0 +11 +2.25520466591049 +21 +1.34978045204758 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +0.0 +13 +0.0 +23 +0.497732043121051 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +-4.44089209850063e-16 +22 +0.878679656440356 +32 +3.0 +13 +-4.44089209850063e-16 +23 +0.878679656440356 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +-4.44089209850063e-16 +21 +0.878679656440356 +31 +3.0 +12 +0.0 +22 +0.878679656440356 +32 +0.0 +13 +0.0 +23 +0.878679656440356 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +2.04447222151364 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.955527778486358 +21 +2.04447222151364 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +0.955527778486358 +21 +2.04447222151364 +31 +3.0 +12 +1.01151717119399 +22 +2.09521804908931 +32 +3.0 +13 +1.01151717119399 +23 +2.09521804908931 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +1.01151717119399 +21 +2.09521804908931 +31 +3.0 +12 +1.07221092057491 +22 +2.14023160147296 +32 +3.0 +13 +1.07221092057491 +23 +2.14023160147296 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +3.0 +11 +1.34978045204758 +21 +0.744795334089513 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.34978045204758 +20 +0.744795334089513 +30 +3.0 +11 +1.5 +21 +0.0 +31 +3.0 +12 +1.42452680194624 +22 +0.733707760462408 +32 +3.0 +13 +1.42452680194624 +23 +0.733707760462408 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.42452680194624 +20 +0.733707760462408 +30 +3.0 +11 +1.5 +21 +0.0 +31 +3.0 +12 +1.5 +22 +0.73 +32 +3.0 +13 +1.5 +23 +0.73 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.20533375707888 +30 +0.0 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +0.0 +22 +0.878679656440356 +32 +0.0 +13 +0.0 +23 +0.878679656440356 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.788612759966309 +21 +1.20533375707888 +31 +0.0 +12 +0.820920626451767 +22 +1.13702451264398 +32 +0.0 +13 +0.820920626451767 +23 +1.13702451264398 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.820920626451767 +21 +1.13702451264398 +31 +0.0 +12 +0.85976839852704 +22 +1.07221092057491 +32 +0.0 +13 +0.85976839852704 +23 +1.07221092057491 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.07221092057491 +20 +0.85976839852704 +30 +3.0 +11 +1.01151717119399 +21 +0.904781950910692 +31 +1.5 +12 +1.07221092057491 +22 +0.85976839852704 +32 +1.5 +13 +1.07221092057491 +23 +0.85976839852704 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +0.904781950910692 +30 +1.5 +11 +1.07221092057491 +21 +0.85976839852704 +31 +3.0 +12 +1.01151717119399 +22 +0.904781950910692 +32 +3.0 +13 +1.01151717119399 +23 +0.904781950910692 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +2.17907937354823 +21 +1.86297548735602 +31 +0.0 +12 +2.14023160147296 +22 +1.92778907942509 +32 +0.0 +13 +2.14023160147296 +23 +1.92778907942509 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.17907937354823 +20 +1.86297548735602 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +0.0 +13 +2.21138724003369 +23 +1.79466624292112 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.5 +21 +2.27 +31 +1.5 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +2.27 +30 +1.5 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +2.27 +32 +0.0 +13 +1.5 +23 +2.27 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +2.27 +30 +0.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.26629223953759 +21 +1.42452680194624 +31 +0.0 +12 +2.26629223953759 +22 +1.42452680194624 +32 +1.5 +13 +2.26629223953759 +23 +1.42452680194624 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.26629223953759 +20 +1.42452680194624 +30 +0.0 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.27 +22 +1.5 +32 +0.0 +13 +2.27 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.2368440585138 +20 +1.27648079851406 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +0.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +1.5 +13 +2.21138724003369 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +0.0 +11 +2.2368440585138 +21 +1.27648079851406 +31 +1.5 +12 +2.2368440585138 +22 +1.27648079851406 +32 +0.0 +13 +2.2368440585138 +23 +1.27648079851406 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +2.795 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +2.795 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +2.17367965644036 +13 +2.12132034355964 +23 +0.0 +33 +2.17367965644036 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +2.17367965644036 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +0.826320343559644 +13 +2.12132034355964 +23 +0.0 +33 +0.826320343559644 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +0.826320343559644 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +0.205 +13 +2.12132034355964 +23 +0.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +0.205 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +0.0 +13 +2.12132034355964 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +1.79466624292112 +22 +0.788612759966309 +32 +0.0 +13 +1.79466624292112 +23 +0.788612759966309 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +0.0 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +1.79466624292112 +22 +0.788612759966309 +32 +1.5 +13 +1.79466624292112 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +0.904781950910692 +30 +3.0 +11 +0.955527778486358 +21 +0.955527778486358 +31 +1.5 +12 +1.01151717119399 +22 +0.904781950910692 +32 +1.5 +13 +1.01151717119399 +23 +0.904781950910692 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +0.955527778486358 +30 +1.5 +11 +1.01151717119399 +21 +0.904781950910692 +31 +3.0 +12 +0.955527778486358 +22 +0.955527778486358 +32 +3.0 +13 +0.955527778486358 +23 +0.955527778486358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.17907937354823 +20 +1.13702451264398 +30 +1.5 +11 +2.14023160147296 +21 +1.07221092057491 +31 +3.0 +12 +2.14023160147296 +22 +1.07221092057491 +32 +1.5 +13 +2.14023160147296 +23 +1.07221092057491 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.07221092057491 +30 +3.0 +11 +2.17907937354823 +21 +1.13702451264398 +31 +1.5 +12 +2.17907937354823 +22 +1.13702451264398 +32 +3.0 +13 +2.17907937354823 +23 +1.13702451264398 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.79466624292112 +22 +2.21138724003369 +32 +0.0 +13 +1.79466624292112 +23 +2.21138724003369 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +1.5 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +1.79466624292112 +22 +2.21138724003369 +32 +3.0 +13 +1.79466624292112 +23 +2.21138724003369 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +2.12132034355964 +22 +3.0 +32 +0.205 +13 +2.12132034355964 +23 +3.0 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +0.205 +12 +2.12132034355964 +22 +3.0 +32 +0.826320343559643 +13 +2.12132034355964 +23 +3.0 +33 +0.826320343559643 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +0.826320343559643 +12 +2.12132034355964 +22 +3.0 +32 +2.17367965644036 +13 +2.12132034355964 +23 +3.0 +33 +2.17367965644036 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +2.17367965644036 +12 +2.12132034355964 +22 +3.0 +32 +2.795 +13 +2.12132034355964 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +2.09521804908931 +21 +1.98848282880601 +31 +0.0 +12 +2.09521804908931 +22 +1.98848282880601 +32 +1.5 +13 +2.09521804908931 +23 +1.98848282880601 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.09521804908931 +20 +1.98848282880601 +30 +0.0 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +2.04447222151364 +22 +2.04447222151364 +32 +0.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +2.21138724003369 +30 +3.0 +11 +1.27648079851406 +21 +2.2368440585138 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +1.5 +13 +1.20533375707888 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +2.2368440585138 +30 +1.5 +11 +1.20533375707888 +21 +2.21138724003369 +31 +3.0 +12 +1.27648079851406 +22 +2.2368440585138 +32 +3.0 +13 +1.27648079851406 +23 +2.2368440585138 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +2.2368440585138 +21 +1.72351920148594 +31 +3.0 +12 +2.2368440585138 +22 +1.72351920148594 +32 +1.5 +13 +2.2368440585138 +23 +1.72351920148594 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.2368440585138 +20 +1.72351920148594 +30 +3.0 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +2.21138724003369 +22 +1.79466624292112 +32 +3.0 +13 +2.21138724003369 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +0.733707760462408 +30 +3.0 +11 +1.5 +21 +0.73 +31 +1.5 +12 +1.57547319805376 +22 +0.733707760462408 +32 +1.5 +13 +1.57547319805376 +23 +0.733707760462408 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.73 +30 +1.5 +11 +1.57547319805376 +21 +0.733707760462408 +31 +3.0 +12 +1.5 +22 +0.73 +32 +3.0 +13 +1.5 +23 +0.73 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.04447222151364 +22 +0.955527778486358 +32 +0.0 +13 +2.04447222151364 +23 +0.955527778486358 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +0.205 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +2.04447222151364 +22 +0.955527778486358 +32 +3.0 +13 +2.04447222151364 +23 +0.955527778486358 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +3.0 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +2.795 +11 +2.04447222151364 +21 +0.955527778486358 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.09521804908931 +20 +1.98848282880601 +30 +1.5 +11 +2.14023160147296 +21 +1.92778907942509 +31 +0.0 +12 +2.14023160147296 +22 +1.92778907942509 +32 +1.5 +13 +2.14023160147296 +23 +1.92778907942509 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.92778907942509 +30 +0.0 +11 +2.09521804908931 +21 +1.98848282880601 +31 +1.5 +12 +2.09521804908931 +22 +1.98848282880601 +32 +0.0 +13 +2.09521804908931 +23 +1.98848282880601 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.65021954795242 +30 +1.5 +11 +2.26629223953759 +21 +1.57547319805376 +31 +3.0 +12 +2.26629223953759 +22 +1.57547319805376 +32 +1.5 +13 +2.26629223953759 +23 +1.57547319805376 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.26629223953759 +20 +1.57547319805376 +30 +3.0 +11 +2.25520466591049 +21 +1.65021954795242 +31 +1.5 +12 +2.25520466591049 +22 +1.65021954795242 +32 +3.0 +13 +2.25520466591049 +23 +1.65021954795242 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +1.5 +11 +1.27648079851406 +21 +0.763155941486199 +31 +0.0 +12 +1.20533375707888 +22 +0.788612759966309 +32 +0.0 +13 +1.20533375707888 +23 +0.788612759966309 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +0.763155941486199 +30 +0.0 +11 +1.20533375707888 +21 +0.788612759966309 +31 +1.5 +12 +1.27648079851406 +22 +0.763155941486199 +32 +1.5 +13 +1.27648079851406 +23 +0.763155941486199 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.65021954795242 +20 +2.25520466591049 +30 +1.5 +11 +1.57547319805376 +21 +2.26629223953759 +31 +0.0 +12 +1.65021954795242 +22 +2.25520466591049 +32 +0.0 +13 +1.65021954795242 +23 +2.25520466591049 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +2.26629223953759 +30 +0.0 +11 +1.65021954795242 +21 +2.25520466591049 +31 +1.5 +12 +1.57547319805376 +22 +2.26629223953759 +32 +1.5 +13 +1.57547319805376 +23 +2.26629223953759 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.72351920148594 +20 +2.2368440585138 +30 +1.5 +11 +1.65021954795242 +21 +2.25520466591049 +31 +0.0 +12 +1.72351920148594 +22 +2.2368440585138 +32 +0.0 +13 +1.72351920148594 +23 +2.2368440585138 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.65021954795242 +20 +2.25520466591049 +30 +0.0 +11 +1.72351920148594 +21 +2.2368440585138 +31 +1.5 +12 +1.65021954795242 +22 +2.25520466591049 +32 +1.5 +13 +1.65021954795242 +23 +2.25520466591049 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +2.26629223953759 +30 +1.5 +11 +1.5 +21 +2.27 +31 +0.0 +12 +1.57547319805376 +22 +2.26629223953759 +32 +0.0 +13 +1.57547319805376 +23 +2.26629223953759 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +2.27 +30 +0.0 +11 +1.57547319805376 +21 +2.26629223953759 +31 +1.5 +12 +1.5 +22 +2.27 +32 +1.5 +13 +1.5 +23 +2.27 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.904781950910692 +20 +1.01151717119399 +30 +0.0 +11 +0.955527778486358 +21 +0.955527778486358 +31 +1.5 +12 +0.955527778486358 +22 +0.955527778486358 +32 +0.0 +13 +0.955527778486358 +23 +0.955527778486358 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +0.955527778486358 +30 +1.5 +11 +0.904781950910692 +21 +1.01151717119399 +31 +0.0 +12 +0.904781950910692 +22 +1.01151717119399 +32 +1.5 +13 +0.904781950910692 +23 +1.01151717119399 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.86297548735602 +30 +3.0 +11 +0.788612759966309 +21 +1.79466624292112 +31 +1.5 +12 +0.788612759966309 +22 +1.79466624292112 +32 +3.0 +13 +0.788612759966309 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.79466624292112 +30 +1.5 +11 +0.820920626451767 +21 +1.86297548735602 +31 +3.0 +12 +0.820920626451767 +22 +1.86297548735602 +32 +1.5 +13 +0.820920626451767 +23 +1.86297548735602 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +-2.22044604925031e-16 +22 +2.12132034355964 +32 +3.0 +13 +-2.22044604925031e-16 +23 +2.12132034355964 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +-2.22044604925031e-16 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.72351920148594 +21 +2.2368440585138 +31 +0.0 +12 +1.65021954795242 +22 +2.25520466591049 +32 +0.0 +13 +1.65021954795242 +23 +2.25520466591049 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.72351920148594 +20 +2.2368440585138 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.79466624292112 +22 +2.21138724003369 +32 +0.0 +13 +1.79466624292112 +23 +2.21138724003369 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.86297548735602 +20 +0.820920626451767 +30 +0.0 +11 +2.12132034355964 +21 +0.0 +31 +0.0 +12 +1.79466624292112 +22 +0.788612759966309 +32 +0.0 +13 +1.79466624292112 +23 +0.788612759966309 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +1.86297548735602 +21 +0.820920626451767 +31 +0.0 +12 +1.92778907942509 +22 +0.85976839852704 +32 +0.0 +13 +1.92778907942509 +23 +0.85976839852704 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +1.92778907942509 +21 +0.85976839852704 +31 +0.0 +12 +2.50226795687895 +22 +0.0 +32 +0.0 +13 +2.50226795687895 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +-4.44089209850063e-16 +20 +0.878679656440356 +30 +3.0 +11 +0.788612759966309 +21 +1.20533375707888 +31 +0.0 +12 +0.0 +22 +0.878679656440356 +32 +0.0 +13 +0.0 +23 +0.878679656440356 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.20533375707888 +30 +0.0 +11 +-4.44089209850063e-16 +21 +0.878679656440356 +31 +3.0 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.20533375707888 +30 +1.5 +11 +-4.44089209850063e-16 +21 +0.878679656440356 +31 +3.0 +12 +0.788612759966309 +22 +1.20533375707888 +32 +3.0 +13 +0.788612759966309 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.73 +20 +1.5 +30 +1.5 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.73 +22 +1.5 +32 +0.0 +13 +0.73 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.73 +21 +1.5 +31 +1.5 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.73 +21 +1.5 +31 +1.5 +12 +0.73 +22 +1.5 +32 +3.0 +13 +0.73 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.04447222151364 +22 +2.04447222151364 +32 +0.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +2.04447222151364 +22 +2.04447222151364 +32 +3.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.878679656440358 +30 +3.0 +11 +2.21138724003369 +21 +1.20533375707888 +31 +0.0 +12 +3.0 +22 +0.878679656440358 +32 +0.0 +13 +3.0 +23 +0.878679656440358 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +0.0 +11 +3.0 +21 +0.878679656440358 +31 +3.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +1.5 +13 +2.21138724003369 +23 +1.20533375707888 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +3.0 +21 +0.878679656440358 +31 +3.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +3.0 +13 +2.21138724003369 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +3.0 +11 +1.13702451264398 +21 +0.820920626451767 +31 +1.5 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.13702451264398 +20 +0.820920626451767 +30 +1.5 +11 +1.20533375707888 +21 +0.788612759966309 +31 +3.0 +12 +1.13702451264398 +22 +0.820920626451767 +32 +3.0 +13 +1.13702451264398 +23 +0.820920626451767 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +0.0 +11 +1.20533375707888 +21 +2.21138724003369 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +0.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +2.21138724003369 +30 +1.5 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.20533375707888 +22 +2.21138724003369 +32 +3.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +2.21138724003369 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +0.878679656440356 +22 +3.0 +32 +0.205 +13 +0.878679656440356 +23 +3.0 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +0.205 +12 +0.878679656440356 +22 +3.0 +32 +0.826320343559644 +13 +0.878679656440356 +23 +3.0 +33 +0.826320343559644 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +0.826320343559644 +12 +0.878679656440356 +22 +3.0 +32 +2.17367965644036 +13 +0.878679656440356 +23 +3.0 +33 +2.17367965644036 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +2.17367965644036 +12 +0.878679656440356 +22 +3.0 +32 +2.795 +13 +0.878679656440356 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +2.04447222151364 +30 +3.0 +11 +0.904781950910692 +21 +1.98848282880601 +31 +1.5 +12 +0.904781950910692 +22 +1.98848282880601 +32 +3.0 +13 +0.904781950910692 +23 +1.98848282880601 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.904781950910692 +20 +1.98848282880601 +30 +1.5 +11 +0.955527778486358 +21 +2.04447222151364 +31 +3.0 +12 +0.955527778486358 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486358 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.733707760462408 +20 +1.42452680194624 +30 +3.0 +11 +0.744795334089513 +21 +1.34978045204758 +31 +1.5 +12 +0.744795334089513 +22 +1.34978045204758 +32 +3.0 +13 +0.744795334089513 +23 +1.34978045204758 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.744795334089513 +20 +1.34978045204758 +30 +1.5 +11 +0.733707760462408 +21 +1.42452680194624 +31 +3.0 +12 +0.733707760462408 +22 +1.42452680194624 +32 +1.5 +13 +0.733707760462408 +23 +1.42452680194624 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.955527778486358 +21 +2.04447222151364 +31 +1.5 +12 +0.955527778486358 +22 +2.04447222151364 +32 +3.0 +13 +0.955527778486358 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +2.04447222151364 +30 +1.5 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.955527778486358 +22 +2.04447222151364 +32 +0.0 +13 +0.955527778486358 +23 +2.04447222151364 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +2.04447222151364 +30 +0.0 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +2.09521804908931 +22 +1.98848282880601 +32 +1.5 +13 +2.09521804908931 +23 +1.98848282880601 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +2.09521804908931 +21 +1.98848282880601 +31 +1.5 +12 +2.14023160147296 +22 +1.92778907942509 +32 +1.5 +13 +2.14023160147296 +23 +1.92778907942509 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +2.14023160147296 +21 +1.92778907942509 +31 +1.5 +12 +2.17907937354823 +22 +1.86297548735602 +32 +1.5 +13 +2.17907937354823 +23 +1.86297548735602 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.72351920148594 +20 +0.763155941486199 +30 +3.0 +11 +1.65021954795242 +21 +0.744795334089513 +31 +1.5 +12 +1.72351920148594 +22 +0.763155941486199 +32 +1.5 +13 +1.72351920148594 +23 +0.763155941486199 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.65021954795242 +20 +0.744795334089513 +30 +1.5 +11 +1.72351920148594 +21 +0.763155941486199 +31 +3.0 +12 +1.65021954795242 +22 +0.744795334089513 +32 +3.0 +13 +1.65021954795242 +23 +0.744795334089513 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.13702451264398 +30 +0.0 +11 +0.85976839852704 +21 +1.07221092057491 +31 +1.5 +12 +0.85976839852704 +22 +1.07221092057491 +32 +0.0 +13 +0.85976839852704 +23 +1.07221092057491 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.85976839852704 +20 +1.07221092057491 +30 +1.5 +11 +0.820920626451767 +21 +1.13702451264398 +31 +0.0 +12 +0.820920626451767 +22 +1.13702451264398 +32 +1.5 +13 +0.820920626451767 +23 +1.13702451264398 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.07221092057491 +30 +1.5 +11 +2.09521804908931 +21 +1.01151717119399 +31 +3.0 +12 +2.09521804908931 +22 +1.01151717119399 +32 +1.5 +13 +2.09521804908931 +23 +1.01151717119399 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.09521804908931 +20 +1.01151717119399 +30 +3.0 +11 +2.14023160147296 +21 +1.07221092057491 +31 +1.5 +12 +2.14023160147296 +22 +1.07221092057491 +32 +3.0 +13 +2.14023160147296 +23 +1.07221092057491 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +0.0 +11 +1.07221092057491 +21 +2.14023160147296 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.07221092057491 +20 +2.14023160147296 +30 +0.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.13702451264398 +22 +2.17907937354823 +32 +0.0 +13 +1.13702451264398 +23 +2.17907937354823 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.13702451264398 +20 +2.17907937354823 +30 +0.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.20533375707888 +22 +2.21138724003369 +32 +0.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +2.795 +11 +0.878679656440357 +21 +1.53956708492942e-17 +31 +0.826320343559643 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440357 +20 +1.53956708492942e-17 +30 +0.826320343559643 +11 +1.5 +21 +0.0 +31 +2.795 +12 +0.878679656440357 +22 +4.01154803819637e-17 +32 +2.17367965644036 +13 +0.878679656440357 +23 +4.01154803819637e-17 +33 +2.17367965644036 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.73 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.0 +13 +1.5 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +0.205 +11 +1.5 +21 +0.73 +31 +0.0 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +2.795 +11 +1.5 +21 +0.73 +31 +0.0 +12 +1.5 +22 +0.0 +32 +3.0 +13 +1.5 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +3.0 +11 +1.5 +21 +0.73 +31 +0.0 +12 +1.5 +22 +0.73 +32 +3.0 +13 +1.5 +23 +0.73 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.73 +30 +3.0 +11 +1.5 +21 +0.73 +31 +0.0 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.26629223953759 +20 +1.42452680194624 +30 +1.5 +11 +2.25520466591049 +21 +1.34978045204758 +31 +0.0 +12 +2.25520466591049 +22 +1.34978045204758 +32 +1.5 +13 +2.25520466591049 +23 +1.34978045204758 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.34978045204758 +30 +0.0 +11 +2.26629223953759 +21 +1.42452680194624 +31 +1.5 +12 +2.26629223953759 +22 +1.42452680194624 +32 +0.0 +13 +2.26629223953759 +23 +1.42452680194624 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.2368440585138 +20 +1.72351920148594 +30 +1.5 +11 +2.25520466591049 +21 +1.65021954795242 +31 +3.0 +12 +2.25520466591049 +22 +1.65021954795242 +32 +1.5 +13 +2.25520466591049 +23 +1.65021954795242 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.65021954795242 +30 +3.0 +11 +2.2368440585138 +21 +1.72351920148594 +31 +1.5 +12 +2.2368440585138 +22 +1.72351920148594 +32 +3.0 +13 +2.2368440585138 +23 +1.72351920148594 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +2.2368440585138 +30 +3.0 +11 +1.34978045204758 +21 +2.25520466591049 +31 +1.5 +12 +1.27648079851406 +22 +2.2368440585138 +32 +1.5 +13 +1.27648079851406 +23 +2.2368440585138 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.34978045204758 +20 +2.25520466591049 +30 +1.5 +11 +1.27648079851406 +21 +2.2368440585138 +31 +3.0 +12 +1.34978045204758 +22 +2.25520466591049 +32 +3.0 +13 +1.34978045204758 +23 +2.25520466591049 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +2.17907937354823 +21 +1.13702451264398 +31 +3.0 +12 +2.17907937354823 +22 +1.13702451264398 +32 +1.5 +13 +2.17907937354823 +23 +1.13702451264398 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.17907937354823 +20 +1.13702451264398 +30 +3.0 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +2.21138724003369 +22 +1.20533375707888 +32 +3.0 +13 +2.21138724003369 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.98848282880601 +20 +2.09521804908931 +30 +3.0 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +1.98848282880601 +22 +2.09521804908931 +32 +1.5 +13 +1.98848282880601 +23 +2.09521804908931 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +1.98848282880601 +21 +2.09521804908931 +31 +3.0 +12 +2.04447222151364 +22 +2.04447222151364 +32 +3.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.42452680194624 +20 +2.26629223953759 +30 +3.0 +11 +1.5 +21 +2.27 +31 +1.5 +12 +1.42452680194624 +22 +2.26629223953759 +32 +1.5 +13 +1.42452680194624 +23 +2.26629223953759 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +2.27 +30 +1.5 +11 +1.42452680194624 +21 +2.26629223953759 +31 +3.0 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +3.0 +11 +1.86297548735602 +21 +2.17907937354823 +31 +1.5 +12 +1.79466624292112 +22 +2.21138724003369 +32 +1.5 +13 +1.79466624292112 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.86297548735602 +20 +2.17907937354823 +30 +1.5 +11 +1.79466624292112 +21 +2.21138724003369 +31 +3.0 +12 +1.86297548735602 +22 +2.17907937354823 +32 +3.0 +13 +1.86297548735602 +23 +2.17907937354823 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.5 +31 +0.0 +12 +2.27 +22 +1.5 +32 +0.0 +13 +2.27 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +1.5 +30 +0.0 +11 +2.27 +21 +1.5 +31 +1.5 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +1.5 +30 +3.0 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.27 +22 +1.5 +32 +3.0 +13 +2.27 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.733707760462408 +20 +1.57547319805376 +30 +0.0 +11 +0.73 +21 +1.5 +31 +1.5 +12 +0.73 +22 +1.5 +32 +0.0 +13 +0.73 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.73 +20 +1.5 +30 +1.5 +11 +0.733707760462408 +21 +1.57547319805376 +31 +0.0 +12 +0.733707760462408 +22 +1.57547319805376 +32 +1.5 +13 +0.733707760462408 +23 +1.57547319805376 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.85976839852704 +20 +1.92778907942509 +30 +3.0 +11 +0.820920626451767 +21 +1.86297548735602 +31 +1.5 +12 +0.820920626451767 +22 +1.86297548735602 +32 +3.0 +13 +0.820920626451767 +23 +1.86297548735602 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.86297548735602 +30 +1.5 +11 +0.85976839852704 +21 +1.92778907942509 +31 +3.0 +12 +0.85976839852704 +22 +1.92778907942509 +32 +1.5 +13 +0.85976839852704 +23 +1.92778907942509 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.73 +20 +1.5 +30 +3.0 +11 +0.733707760462408 +21 +1.42452680194624 +31 +1.5 +12 +0.733707760462408 +22 +1.42452680194624 +32 +3.0 +13 +0.733707760462408 +23 +1.42452680194624 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.733707760462408 +20 +1.42452680194624 +30 +1.5 +11 +0.73 +21 +1.5 +31 +3.0 +12 +0.73 +22 +1.5 +32 +1.5 +13 +0.73 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.744795334089513 +20 +1.34978045204758 +30 +3.0 +11 +0.763155941486199 +21 +1.27648079851406 +31 +1.5 +12 +0.763155941486199 +22 +1.27648079851406 +32 +3.0 +13 +0.763155941486199 +23 +1.27648079851406 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.763155941486199 +20 +1.27648079851406 +30 +1.5 +11 +0.744795334089513 +21 +1.34978045204758 +31 +3.0 +12 +0.744795334089513 +22 +1.34978045204758 +32 +1.5 +13 +0.744795334089513 +23 +1.34978045204758 +33 +1.5 +70 +1 + 0 +LINE + 8 +star_u +10 +3.0 +20 +0.878679656440358 +30 +3.0 +11 +3.00250198874351 +21 +0.87764329876989 +31 +3.0 + 0 +3DFACE + 8 +star_u +10 +0.763155941486199 +20 +1.72351920148594 +30 +0.0 +11 +0.744795334089513 +21 +1.65021954795242 +31 +1.5 +12 +0.744795334089513 +22 +1.65021954795242 +32 +0.0 +13 +0.744795334089513 +23 +1.65021954795242 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.744795334089513 +20 +1.65021954795242 +30 +1.5 +11 +0.763155941486199 +21 +1.72351920148594 +31 +0.0 +12 +0.763155941486199 +22 +1.72351920148594 +32 +1.5 +13 +0.763155941486199 +23 +1.72351920148594 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +3.0 +11 +1.72351920148594 +21 +0.763155941486199 +31 +1.5 +12 +1.79466624292112 +22 +0.788612759966309 +32 +1.5 +13 +1.79466624292112 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.72351920148594 +20 +0.763155941486199 +30 +1.5 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +1.72351920148594 +22 +0.763155941486199 +32 +3.0 +13 +1.72351920148594 +23 +0.763155941486199 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +0.955527778486358 +30 +0.0 +11 +0.0 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.955527778486358 +21 +0.955527778486358 +31 +0.0 +12 +0.955527778486358 +22 +0.955527778486358 +32 +3.0 +13 +0.955527778486358 +23 +0.955527778486358 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +0.955527778486358 +30 +3.0 +11 +0.955527778486358 +21 +0.955527778486358 +31 +0.0 +12 +0.955527778486358 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486358 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +2.09521804908931 +30 +1.5 +11 +0.955527778486358 +21 +2.04447222151364 +31 +0.0 +12 +1.01151717119399 +22 +2.09521804908931 +32 +0.0 +13 +1.01151717119399 +23 +2.09521804908931 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +2.04447222151364 +30 +0.0 +11 +1.01151717119399 +21 +2.09521804908931 +31 +1.5 +12 +0.955527778486358 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486358 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.86297548735602 +20 +0.820920626451767 +30 +1.5 +11 +1.92778907942509 +21 +0.85976839852704 +31 +0.0 +12 +1.86297548735602 +22 +0.820920626451767 +32 +0.0 +13 +1.86297548735602 +23 +0.820920626451767 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +0.85976839852704 +30 +0.0 +11 +1.86297548735602 +21 +0.820920626451767 +31 +1.5 +12 +1.92778907942509 +22 +0.85976839852704 +32 +1.5 +13 +1.92778907942509 +23 +0.85976839852704 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.34978045204758 +30 +1.5 +11 +2.2368440585138 +21 +1.27648079851406 +31 +0.0 +12 +2.2368440585138 +22 +1.27648079851406 +32 +1.5 +13 +2.2368440585138 +23 +1.27648079851406 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.2368440585138 +20 +1.27648079851406 +30 +0.0 +11 +2.25520466591049 +21 +1.34978045204758 +31 +1.5 +12 +2.25520466591049 +22 +1.34978045204758 +32 +0.0 +13 +2.25520466591049 +23 +1.34978045204758 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +1.86297548735602 +21 +0.820920626451767 +31 +0.0 +12 +1.79466624292112 +22 +0.788612759966309 +32 +0.0 +13 +1.79466624292112 +23 +0.788612759966309 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.86297548735602 +20 +0.820920626451767 +30 +0.0 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.86297548735602 +22 +0.820920626451767 +32 +1.5 +13 +1.86297548735602 +23 +0.820920626451767 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.42452680194624 +20 +0.733707760462408 +30 +1.5 +11 +1.5 +21 +0.73 +31 +0.0 +12 +1.42452680194624 +22 +0.733707760462408 +32 +0.0 +13 +1.42452680194624 +23 +0.733707760462408 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.73 +30 +0.0 +11 +1.42452680194624 +21 +0.733707760462408 +31 +1.5 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.13702451264398 +20 +0.820920626451767 +30 +3.0 +11 +1.07221092057491 +21 +0.85976839852704 +31 +1.5 +12 +1.13702451264398 +22 +0.820920626451767 +32 +1.5 +13 +1.13702451264398 +23 +0.820920626451767 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.07221092057491 +20 +0.85976839852704 +30 +1.5 +11 +1.13702451264398 +21 +0.820920626451767 +31 +3.0 +12 +1.07221092057491 +22 +0.85976839852704 +32 +3.0 +13 +1.07221092057491 +23 +0.85976839852704 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.13702451264398 +20 +2.17907937354823 +30 +1.5 +11 +1.07221092057491 +21 +2.14023160147296 +31 +0.0 +12 +1.13702451264398 +22 +2.17907937354823 +32 +0.0 +13 +1.13702451264398 +23 +2.17907937354823 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.07221092057491 +20 +2.14023160147296 +30 +0.0 +11 +1.13702451264398 +21 +2.17907937354823 +31 +1.5 +12 +1.07221092057491 +22 +2.14023160147296 +32 +1.5 +13 +1.07221092057491 +23 +2.14023160147296 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440357 +20 +3.68628738645072e-18 +30 +0.205 +11 +1.20533375707888 +21 +0.788612759966309 +31 +0.0 +12 +0.878679656440357 +22 +0.0 +32 +0.0 +13 +0.878679656440357 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +0.0 +11 +0.878679656440357 +21 +3.68628738645072e-18 +31 +0.205 +12 +0.878679656440357 +22 +1.53956708492942e-17 +32 +0.826320343559643 +13 +0.878679656440357 +23 +1.53956708492942e-17 +33 +0.826320343559643 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +0.0 +11 +0.878679656440357 +21 +1.53956708492942e-17 +31 +0.826320343559643 +12 +0.878679656440357 +22 +4.01154803819637e-17 +32 +2.17367965644036 +13 +0.878679656440357 +23 +4.01154803819637e-17 +33 +2.17367965644036 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +0.0 +11 +0.878679656440357 +21 +4.01154803819637e-17 +31 +2.17367965644036 +12 +0.878679656440357 +22 +5.18248638448071e-17 +32 +2.795 +13 +0.878679656440357 +23 +5.18248638448071e-17 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +0.0 +11 +0.878679656440357 +21 +5.18248638448071e-17 +31 +2.795 +12 +0.878679656440357 +22 +1.11022302462516e-16 +32 +3.0 +13 +0.878679656440357 +23 +1.11022302462516e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +0.0 +11 +0.878679656440357 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.20533375707888 +22 +0.788612759966309 +32 +3.0 +13 +1.20533375707888 +23 +0.788612759966309 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +0.0 +11 +1.20533375707888 +21 +0.788612759966309 +31 +3.0 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.09521804908931 +20 +1.01151717119399 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +3.0 +12 +2.04447222151364 +22 +0.955527778486358 +32 +1.5 +13 +2.04447222151364 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +3.0 +11 +2.09521804908931 +21 +1.01151717119399 +31 +1.5 +12 +2.09521804908931 +22 +1.01151717119399 +32 +3.0 +13 +2.09521804908931 +23 +1.01151717119399 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.86297548735602 +20 +2.17907937354823 +30 +3.0 +11 +1.92778907942509 +21 +2.14023160147296 +31 +1.5 +12 +1.86297548735602 +22 +2.17907937354823 +32 +1.5 +13 +1.86297548735602 +23 +2.17907937354823 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +2.14023160147296 +30 +1.5 +11 +1.86297548735602 +21 +2.17907937354823 +31 +3.0 +12 +1.92778907942509 +22 +2.14023160147296 +32 +3.0 +13 +1.92778907942509 +23 +2.14023160147296 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.21138724003369 +21 +1.79466624292112 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +1.5 +13 +2.21138724003369 +23 +1.79466624292112 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +3.0 +13 +2.21138724003369 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.65021954795242 +20 +0.744795334089513 +30 +3.0 +11 +1.57547319805376 +21 +0.733707760462408 +31 +1.5 +12 +1.65021954795242 +22 +0.744795334089513 +32 +1.5 +13 +1.65021954795242 +23 +0.744795334089513 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +0.733707760462408 +30 +1.5 +11 +1.65021954795242 +21 +0.744795334089513 +31 +3.0 +12 +1.57547319805376 +22 +0.733707760462408 +32 +3.0 +13 +1.57547319805376 +23 +0.733707760462408 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.763155941486199 +20 +1.27648079851406 +30 +3.0 +11 +0.788612759966309 +21 +1.20533375707888 +31 +1.5 +12 +0.788612759966309 +22 +1.20533375707888 +32 +3.0 +13 +0.788612759966309 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.20533375707888 +30 +1.5 +11 +0.763155941486199 +21 +1.27648079851406 +31 +3.0 +12 +0.763155941486199 +22 +1.27648079851406 +32 +1.5 +13 +0.763155941486199 +23 +1.27648079851406 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +0.763155941486199 +30 +1.5 +11 +1.34978045204758 +21 +0.744795334089513 +31 +0.0 +12 +1.27648079851406 +22 +0.763155941486199 +32 +0.0 +13 +1.27648079851406 +23 +0.763155941486199 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.34978045204758 +20 +0.744795334089513 +30 +0.0 +11 +1.27648079851406 +21 +0.763155941486199 +31 +1.5 +12 +1.34978045204758 +22 +0.744795334089513 +32 +1.5 +13 +1.34978045204758 +23 +0.744795334089513 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.26629223953759 +20 +1.57547319805376 +30 +1.5 +11 +2.27 +21 +1.5 +31 +3.0 +12 +2.27 +22 +1.5 +32 +1.5 +13 +2.27 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +3.0 +11 +2.26629223953759 +21 +1.57547319805376 +31 +1.5 +12 +2.26629223953759 +22 +1.57547319805376 +32 +3.0 +13 +2.26629223953759 +23 +1.57547319805376 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.744795334089513 +20 +1.65021954795242 +30 +0.0 +11 +0.733707760462408 +21 +1.57547319805376 +31 +1.5 +12 +0.733707760462408 +22 +1.57547319805376 +32 +0.0 +13 +0.733707760462408 +23 +1.57547319805376 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.733707760462408 +20 +1.57547319805376 +30 +1.5 +11 +0.744795334089513 +21 +1.65021954795242 +31 +0.0 +12 +0.744795334089513 +22 +1.65021954795242 +32 +1.5 +13 +0.744795334089513 +23 +1.65021954795242 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.20533375707888 +30 +0.0 +11 +0.820920626451767 +21 +1.13702451264398 +31 +1.5 +12 +0.820920626451767 +22 +1.13702451264398 +32 +0.0 +13 +0.820920626451767 +23 +1.13702451264398 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.13702451264398 +30 +1.5 +11 +0.788612759966309 +21 +1.20533375707888 +31 +0.0 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +2.21138724003369 +30 +1.5 +11 +1.13702451264398 +21 +2.17907937354823 +31 +0.0 +12 +1.20533375707888 +22 +2.21138724003369 +32 +0.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.13702451264398 +20 +2.17907937354823 +30 +0.0 +11 +1.20533375707888 +21 +2.21138724003369 +31 +1.5 +12 +1.13702451264398 +22 +2.17907937354823 +32 +1.5 +13 +1.13702451264398 +23 +2.17907937354823 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +1.5 +11 +1.72351920148594 +21 +2.2368440585138 +31 +0.0 +12 +1.79466624292112 +22 +2.21138724003369 +32 +0.0 +13 +1.79466624292112 +23 +2.21138724003369 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.72351920148594 +20 +2.2368440585138 +30 +0.0 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.72351920148594 +22 +2.2368440585138 +32 +1.5 +13 +1.72351920148594 +23 +2.2368440585138 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.17907937354823 +20 +1.86297548735602 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +0.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +1.5 +13 +2.21138724003369 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +0.0 +11 +2.17907937354823 +21 +1.86297548735602 +31 +1.5 +12 +2.17907937354823 +22 +1.86297548735602 +32 +0.0 +13 +2.17907937354823 +23 +1.86297548735602 +33 +0.0 +70 +1 + 0 +LINE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +3.0 +11 +2.12187288805765 +21 +-0.0013339604208924 +31 +3.0 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +0.85976839852704 +30 +1.5 +11 +1.98848282880601 +21 +0.904781950910693 +31 +0.0 +12 +1.92778907942509 +22 +0.85976839852704 +32 +0.0 +13 +1.92778907942509 +23 +0.85976839852704 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.98848282880601 +20 +0.904781950910693 +30 +0.0 +11 +1.92778907942509 +21 +0.85976839852704 +31 +1.5 +12 +1.98848282880601 +22 +0.904781950910693 +32 +1.5 +13 +1.98848282880601 +23 +0.904781950910693 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.07221092057491 +20 +2.14023160147296 +30 +1.5 +11 +1.01151717119399 +21 +2.09521804908931 +31 +0.0 +12 +1.07221092057491 +22 +2.14023160147296 +32 +0.0 +13 +1.07221092057491 +23 +2.14023160147296 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +2.09521804908931 +30 +0.0 +11 +1.07221092057491 +21 +2.14023160147296 +31 +1.5 +12 +1.01151717119399 +22 +2.09521804908931 +32 +1.5 +13 +1.01151717119399 +23 +2.09521804908931 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.34978045204758 +20 +0.744795334089513 +30 +1.5 +11 +1.42452680194624 +21 +0.733707760462408 +31 +0.0 +12 +1.34978045204758 +22 +0.744795334089513 +32 +0.0 +13 +1.34978045204758 +23 +0.744795334089513 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.42452680194624 +20 +0.733707760462408 +30 +0.0 +11 +1.34978045204758 +21 +0.744795334089513 +31 +1.5 +12 +1.42452680194624 +22 +0.733707760462408 +32 +1.5 +13 +1.42452680194624 +23 +0.733707760462408 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +2.14023160147296 +30 +3.0 +11 +1.98848282880601 +21 +2.09521804908931 +31 +1.5 +12 +1.92778907942509 +22 +2.14023160147296 +32 +1.5 +13 +1.92778907942509 +23 +2.14023160147296 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.98848282880601 +20 +2.09521804908931 +30 +1.5 +11 +1.92778907942509 +21 +2.14023160147296 +31 +3.0 +12 +1.98848282880601 +22 +2.09521804908931 +32 +3.0 +13 +1.98848282880601 +23 +2.09521804908931 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +3.0 +21 +0.878679656440358 +31 +3.0 +12 +3.0 +22 +0.878679656440358 +32 +0.0 +13 +3.0 +23 +0.878679656440358 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.878679656440358 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.85976839852704 +20 +1.07221092057491 +30 +0.0 +11 +0.904781950910692 +21 +1.01151717119399 +31 +1.5 +12 +0.904781950910692 +22 +1.01151717119399 +32 +0.0 +13 +0.904781950910692 +23 +1.01151717119399 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.904781950910692 +20 +1.01151717119399 +30 +1.5 +11 +0.85976839852704 +21 +1.07221092057491 +31 +0.0 +12 +0.85976839852704 +22 +1.07221092057491 +32 +1.5 +13 +0.85976839852704 +23 +1.07221092057491 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.79466624292112 +30 +0.0 +11 +0.763155941486199 +21 +1.72351920148594 +31 +1.5 +12 +0.763155941486199 +22 +1.72351920148594 +32 +0.0 +13 +0.763155941486199 +23 +1.72351920148594 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.763155941486199 +20 +1.72351920148594 +30 +1.5 +11 +0.788612759966309 +21 +1.79466624292112 +31 +0.0 +12 +0.788612759966309 +22 +1.79466624292112 +32 +1.5 +13 +0.788612759966309 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.79466624292112 +30 +0.0 +11 +0.0 +21 +1.79836855106949 +31 +0.0 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.788612759966309 +21 +1.79466624292112 +31 +0.0 +12 +0.763155941486199 +22 +1.72351920148594 +32 +0.0 +13 +0.763155941486199 +23 +1.72351920148594 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.763155941486199 +21 +1.72351920148594 +31 +0.0 +12 +0.744795334089513 +22 +1.65021954795242 +32 +0.0 +13 +0.744795334089513 +23 +1.65021954795242 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +0.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +0.878679656440357 +22 +0.0 +32 +0.0 +13 +0.878679656440357 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.20533375707888 +21 +0.788612759966309 +31 +0.0 +12 +1.27648079851406 +22 +0.763155941486199 +32 +0.0 +13 +1.27648079851406 +23 +0.763155941486199 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.27648079851406 +21 +0.763155941486199 +31 +0.0 +12 +1.34978045204758 +22 +0.744795334089513 +32 +0.0 +13 +1.34978045204758 +23 +0.744795334089513 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +0.826320343559643 +11 +2.12132034355964 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +star_u +10 +0.904781950910692 +20 +1.98848282880601 +30 +3.0 +11 +0.85976839852704 +21 +1.92778907942509 +31 +1.5 +12 +0.85976839852704 +22 +1.92778907942509 +32 +3.0 +13 +0.85976839852704 +23 +1.92778907942509 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.85976839852704 +20 +1.92778907942509 +30 +1.5 +11 +0.904781950910692 +21 +1.98848282880601 +31 +3.0 +12 +0.904781950910692 +22 +1.98848282880601 +32 +1.5 +13 +0.904781950910692 +23 +1.98848282880601 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.34978045204758 +20 +2.25520466591049 +30 +3.0 +11 +1.42452680194624 +21 +2.26629223953759 +31 +1.5 +12 +1.34978045204758 +22 +2.25520466591049 +32 +1.5 +13 +1.34978045204758 +23 +2.25520466591049 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.42452680194624 +20 +2.26629223953759 +30 +1.5 +11 +1.34978045204758 +21 +2.25520466591049 +31 +3.0 +12 +1.42452680194624 +22 +2.26629223953759 +32 +3.0 +13 +1.42452680194624 +23 +2.26629223953759 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +-2.22044604925031e-16 +20 +2.12132034355964 +30 +3.0 +11 +0.788612759966309 +21 +1.79466624292112 +31 +0.0 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.79466624292112 +30 +0.0 +11 +-2.22044604925031e-16 +21 +2.12132034355964 +31 +3.0 +12 +0.788612759966309 +22 +1.79466624292112 +32 +1.5 +13 +0.788612759966309 +23 +1.79466624292112 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.79466624292112 +30 +1.5 +11 +-2.22044604925031e-16 +21 +2.12132034355964 +31 +3.0 +12 +0.788612759966309 +22 +1.79466624292112 +32 +3.0 +13 +0.788612759966309 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.92778907942509 +30 +1.5 +11 +2.17907937354823 +21 +1.86297548735602 +31 +0.0 +12 +2.17907937354823 +22 +1.86297548735602 +32 +1.5 +13 +2.17907937354823 +23 +1.86297548735602 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.17907937354823 +20 +1.86297548735602 +30 +0.0 +11 +2.14023160147296 +21 +1.92778907942509 +31 +1.5 +12 +2.14023160147296 +22 +1.92778907942509 +32 +0.0 +13 +2.14023160147296 +23 +1.92778907942509 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.98848282880601 +20 +0.904781950910693 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +0.0 +12 +1.98848282880601 +22 +0.904781950910693 +32 +0.0 +13 +1.98848282880601 +23 +0.904781950910693 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +0.0 +11 +1.98848282880601 +21 +0.904781950910693 +31 +1.5 +12 +2.04447222151364 +22 +0.955527778486358 +32 +1.5 +13 +2.04447222151364 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.733707760462408 +21 +1.57547319805376 +31 +3.0 +12 +0.73 +22 +1.5 +32 +3.0 +13 +0.73 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.733707760462408 +20 +1.57547319805376 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.744795334089513 +22 +1.65021954795242 +32 +3.0 +13 +0.744795334089513 +23 +1.65021954795242 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.763155941486199 +21 +1.72351920148594 +31 +3.0 +12 +0.744795334089513 +22 +1.65021954795242 +32 +3.0 +13 +0.744795334089513 +23 +1.65021954795242 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.763155941486199 +20 +1.72351920148594 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.788612759966309 +22 +1.79466624292112 +32 +3.0 +13 +0.788612759966309 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.42452680194624 +20 +0.733707760462408 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.34978045204758 +22 +0.744795334089513 +32 +3.0 +13 +1.34978045204758 +23 +0.744795334089513 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42452680194624 +21 +0.733707760462408 +31 +3.0 +12 +1.5 +22 +0.73 +32 +3.0 +13 +1.5 +23 +0.73 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +0.763155941486199 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.20533375707888 +22 +0.788612759966309 +32 +3.0 +13 +1.20533375707888 +23 +0.788612759966309 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.27648079851406 +21 +0.763155941486199 +31 +3.0 +12 +1.34978045204758 +22 +0.744795334089513 +32 +3.0 +13 +1.34978045204758 +23 +0.744795334089513 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.07221092057491 +30 +3.0 +11 +2.21138724003369 +21 +1.20533375707888 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +3.0 +11 +2.14023160147296 +21 +1.07221092057491 +31 +3.0 +12 +2.17907937354823 +22 +1.13702451264398 +32 +3.0 +13 +2.17907937354823 +23 +1.13702451264398 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.13702451264398 +20 +0.820920626451767 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.07221092057491 +22 +0.85976839852704 +32 +3.0 +13 +1.07221092057491 +23 +0.85976839852704 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.13702451264398 +21 +0.820920626451767 +31 +3.0 +12 +1.20533375707888 +22 +0.788612759966309 +32 +3.0 +13 +1.20533375707888 +23 +0.788612759966309 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +0.733707760462408 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +0.73 +32 +3.0 +13 +1.5 +23 +0.73 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.57547319805376 +21 +0.733707760462408 +31 +3.0 +12 +1.65021954795242 +22 +0.744795334089513 +32 +3.0 +13 +1.65021954795242 +23 +0.744795334089513 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.65021954795242 +20 +0.744795334089513 +30 +3.0 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +3.0 +11 +1.65021954795242 +21 +0.744795334089513 +31 +3.0 +12 +1.72351920148594 +22 +0.763155941486199 +32 +3.0 +13 +1.72351920148594 +23 +0.763155941486199 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.788612759966309 +21 +1.20533375707888 +31 +3.0 +12 +-4.44089209850063e-16 +22 +0.878679656440356 +32 +3.0 +13 +-4.44089209850063e-16 +23 +0.878679656440356 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.20533375707888 +30 +3.0 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.820920626451767 +22 +1.13702451264398 +32 +3.0 +13 +0.820920626451767 +23 +1.13702451264398 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.13702451264398 +30 +3.0 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.85976839852704 +22 +1.07221092057491 +32 +3.0 +13 +0.85976839852704 +23 +1.07221092057491 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.904781950910692 +20 +1.01151717119399 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.85976839852704 +22 +1.07221092057491 +32 +3.0 +13 +0.85976839852704 +23 +1.07221092057491 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.904781950910692 +21 +1.01151717119399 +31 +3.0 +12 +0.955527778486358 +22 +0.955527778486358 +32 +3.0 +13 +0.955527778486358 +23 +0.955527778486358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.820920626451767 +21 +1.86297548735602 +31 +3.0 +12 +0.788612759966309 +22 +1.79466624292112 +32 +3.0 +13 +0.788612759966309 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.86297548735602 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.85976839852704 +22 +1.92778907942509 +32 +3.0 +13 +0.85976839852704 +23 +1.92778907942509 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +3.0 +11 +2.25520466591049 +21 +1.34978045204758 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.34978045204758 +30 +3.0 +11 +2.21138724003369 +21 +1.20533375707888 +31 +3.0 +12 +2.2368440585138 +22 +1.27648079851406 +32 +3.0 +13 +2.2368440585138 +23 +1.27648079851406 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +0.85976839852704 +30 +3.0 +11 +2.04447222151364 +21 +0.955527778486358 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +3.0 +11 +1.92778907942509 +21 +0.85976839852704 +31 +3.0 +12 +1.98848282880601 +22 +0.904781950910693 +32 +3.0 +13 +1.98848282880601 +23 +0.904781950910693 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.878679656440358 +30 +3.0 +11 +2.2368440585138 +21 +1.27648079851406 +31 +3.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +3.0 +13 +2.21138724003369 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.2368440585138 +20 +1.27648079851406 +30 +3.0 +11 +3.0 +21 +0.878679656440358 +31 +3.0 +12 +2.25520466591049 +22 +1.34978045204758 +32 +3.0 +13 +2.25520466591049 +23 +1.34978045204758 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.34978045204758 +30 +3.0 +11 +3.0 +21 +0.878679656440358 +31 +3.0 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +3.0 +11 +1.20533375707888 +21 +0.788612759966309 +31 +3.0 +12 +0.878679656440357 +22 +1.11022302462516e-16 +32 +3.0 +13 +0.878679656440357 +23 +1.11022302462516e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.27648079851406 +22 +0.763155941486199 +32 +3.0 +13 +1.27648079851406 +23 +0.763155941486199 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +0.763155941486199 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.34978045204758 +22 +0.744795334089513 +32 +3.0 +13 +1.34978045204758 +23 +0.744795334089513 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.65021954795242 +30 +3.0 +11 +2.21138724003369 +21 +1.79466624292112 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +3.0 +11 +2.25520466591049 +21 +1.65021954795242 +31 +3.0 +12 +2.2368440585138 +22 +1.72351920148594 +32 +3.0 +13 +2.2368440585138 +23 +1.72351920148594 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +3.0 +11 +2.14023160147296 +21 +1.92778907942509 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.92778907942509 +30 +3.0 +11 +2.21138724003369 +21 +1.79466624292112 +31 +3.0 +12 +2.17907937354823 +22 +1.86297548735602 +32 +3.0 +13 +2.17907937354823 +23 +1.86297548735602 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +3.0 +11 +2.25520466591049 +21 +1.65021954795242 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.65021954795242 +30 +3.0 +11 +2.27 +21 +1.5 +31 +3.0 +12 +2.26629223953759 +22 +1.57547319805376 +32 +3.0 +13 +2.26629223953759 +23 +1.57547319805376 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +3.0 +11 +1.86297548735602 +21 +0.820920626451767 +31 +3.0 +12 +1.79466624292112 +22 +0.788612759966309 +32 +3.0 +13 +1.79466624292112 +23 +0.788612759966309 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.86297548735602 +20 +0.820920626451767 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +1.92778907942509 +22 +0.85976839852704 +32 +3.0 +13 +1.92778907942509 +23 +0.85976839852704 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +0.85976839852704 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.72351920148594 +20 +2.2368440585138 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +1.65021954795242 +22 +2.25520466591049 +32 +3.0 +13 +1.65021954795242 +23 +2.25520466591049 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.72351920148594 +21 +2.2368440585138 +31 +3.0 +12 +1.79466624292112 +22 +2.21138724003369 +32 +3.0 +13 +1.79466624292112 +23 +2.21138724003369 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.79466624292112 +21 +2.21138724003369 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42452680194624 +21 +2.26629223953759 +31 +3.0 +12 +1.34978045204758 +22 +2.25520466591049 +32 +3.0 +13 +1.34978045204758 +23 +2.25520466591049 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.42452680194624 +20 +2.26629223953759 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.27648079851406 +21 +2.2368440585138 +31 +3.0 +12 +1.20533375707888 +22 +2.21138724003369 +32 +3.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +2.2368440585138 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.34978045204758 +22 +2.25520466591049 +32 +3.0 +13 +1.34978045204758 +23 +2.25520466591049 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.57547319805376 +21 +2.26629223953759 +31 +3.0 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +2.26629223953759 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.65021954795242 +22 +2.25520466591049 +32 +3.0 +13 +1.65021954795242 +23 +2.25520466591049 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +3.0 +11 +1.65021954795242 +21 +2.25520466591049 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.65021954795242 +20 +2.25520466591049 +30 +3.0 +11 +1.79466624292112 +21 +2.21138724003369 +31 +3.0 +12 +1.72351920148594 +22 +2.2368440585138 +32 +3.0 +13 +1.72351920148594 +23 +2.2368440585138 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +2.14023160147296 +30 +3.0 +11 +1.79466624292112 +21 +2.21138724003369 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +3.0 +11 +1.92778907942509 +21 +2.14023160147296 +31 +3.0 +12 +1.86297548735602 +22 +2.17907937354823 +32 +3.0 +13 +1.86297548735602 +23 +2.17907937354823 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.13702451264398 +21 +2.17907937354823 +31 +3.0 +12 +1.07221092057491 +22 +2.14023160147296 +32 +3.0 +13 +1.07221092057491 +23 +2.14023160147296 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.13702451264398 +20 +2.17907937354823 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.20533375707888 +22 +2.21138724003369 +32 +3.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.01151717119399 +21 +2.09521804908931 +31 +3.0 +12 +0.955527778486358 +22 +2.04447222151364 +32 +3.0 +13 +0.955527778486358 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +2.09521804908931 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.07221092057491 +22 +2.14023160147296 +32 +3.0 +13 +1.07221092057491 +23 +2.14023160147296 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.07221092057491 +20 +2.14023160147296 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.07221092057491 +21 +2.14023160147296 +31 +3.0 +12 +1.13702451264398 +22 +2.17907937354823 +32 +3.0 +13 +1.13702451264398 +23 +2.17907937354823 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.13702451264398 +21 +2.17907937354823 +31 +3.0 +12 +1.20533375707888 +22 +2.21138724003369 +32 +3.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.733707760462408 +20 +1.42452680194624 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.73 +22 +1.5 +32 +3.0 +13 +0.73 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.733707760462408 +21 +1.42452680194624 +31 +3.0 +12 +0.744795334089513 +22 +1.34978045204758 +32 +3.0 +13 +0.744795334089513 +23 +1.34978045204758 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.788612759966309 +21 +1.79466624292112 +31 +3.0 +12 +-2.22044604925031e-16 +22 +2.12132034355964 +32 +3.0 +13 +-2.22044604925031e-16 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.79466624292112 +30 +3.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.763155941486199 +22 +1.72351920148594 +32 +3.0 +13 +0.763155941486199 +23 +1.72351920148594 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.763155941486199 +20 +1.72351920148594 +30 +3.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.744795334089513 +22 +1.65021954795242 +32 +3.0 +13 +0.744795334089513 +23 +1.65021954795242 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +3.0 +11 +1.92778907942509 +21 +2.14023160147296 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +2.14023160147296 +30 +3.0 +11 +2.04447222151364 +21 +2.04447222151364 +31 +3.0 +12 +1.98848282880601 +22 +2.09521804908931 +32 +3.0 +13 +1.98848282880601 +23 +2.09521804908931 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.34978045204758 +30 +3.0 +11 +2.27 +21 +1.5 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +3.0 +11 +2.25520466591049 +21 +1.34978045204758 +31 +3.0 +12 +2.26629223953759 +22 +1.42452680194624 +32 +3.0 +13 +2.26629223953759 +23 +1.42452680194624 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +3.0 +11 +1.92778907942509 +21 +0.85976839852704 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +0.85976839852704 +30 +3.0 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +1.86297548735602 +22 +0.820920626451767 +32 +3.0 +13 +1.86297548735602 +23 +0.820920626451767 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.17907937354823 +20 +1.86297548735602 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +2.14023160147296 +22 +1.92778907942509 +32 +3.0 +13 +2.14023160147296 +23 +1.92778907942509 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.17907937354823 +21 +1.86297548735602 +31 +3.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +3.0 +13 +2.21138724003369 +23 +1.79466624292112 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.21138724003369 +21 +1.79466624292112 +31 +3.0 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +3.0 +11 +2.14023160147296 +21 +1.07221092057491 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.07221092057491 +30 +3.0 +11 +2.04447222151364 +21 +0.955527778486358 +31 +3.0 +12 +2.09521804908931 +22 +1.01151717119399 +32 +3.0 +13 +2.09521804908931 +23 +1.01151717119399 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.13702451264398 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.788612759966309 +22 +1.20533375707888 +32 +3.0 +13 +0.788612759966309 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.820920626451767 +21 +1.13702451264398 +31 +3.0 +12 +0.85976839852704 +22 +1.07221092057491 +32 +3.0 +13 +0.85976839852704 +23 +1.07221092057491 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +0.904781950910692 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.955527778486358 +22 +0.955527778486358 +32 +3.0 +13 +0.955527778486358 +23 +0.955527778486358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.01151717119399 +21 +0.904781950910692 +31 +3.0 +12 +1.07221092057491 +22 +0.85976839852704 +32 +3.0 +13 +1.07221092057491 +23 +0.85976839852704 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.763155941486199 +20 +1.27648079851406 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.744795334089513 +22 +1.34978045204758 +32 +3.0 +13 +0.744795334089513 +23 +1.34978045204758 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.763155941486199 +21 +1.27648079851406 +31 +3.0 +12 +0.788612759966309 +22 +1.20533375707888 +32 +3.0 +13 +0.788612759966309 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.92778907942509 +30 +3.0 +11 +2.04447222151364 +21 +2.04447222151364 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +3.0 +11 +2.14023160147296 +21 +1.92778907942509 +31 +3.0 +12 +2.09521804908931 +22 +1.98848282880601 +32 +3.0 +13 +2.09521804908931 +23 +1.98848282880601 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.904781950910692 +21 +1.98848282880601 +31 +3.0 +12 +0.85976839852704 +22 +1.92778907942509 +32 +3.0 +13 +0.85976839852704 +23 +1.92778907942509 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.904781950910692 +20 +1.98848282880601 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.955527778486358 +22 +2.04447222151364 +32 +3.0 +13 +0.955527778486358 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.09521804908931 +21 +1.98848282880601 +31 +0.0 +12 +2.04447222151364 +22 +2.04447222151364 +32 +0.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.09521804908931 +20 +1.98848282880601 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.14023160147296 +22 +1.92778907942509 +32 +0.0 +13 +2.14023160147296 +23 +1.92778907942509 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.92778907942509 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.57547319805376 +21 +2.26629223953759 +31 +0.0 +12 +1.5 +22 +2.27 +32 +0.0 +13 +1.5 +23 +2.27 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +2.26629223953759 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.79836855106949 +22 +3.0 +32 +0.0 +13 +1.79836855106949 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +2.26629223953759 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.65021954795242 +22 +2.25520466591049 +32 +0.0 +13 +1.65021954795242 +23 +2.25520466591049 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.26629223953759 +20 +1.42452680194624 +30 +0.0 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +2.25520466591049 +22 +1.34978045204758 +32 +0.0 +13 +2.25520466591049 +23 +1.34978045204758 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.26629223953759 +21 +1.42452680194624 +31 +0.0 +12 +2.27 +22 +1.5 +32 +0.0 +13 +2.27 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.27 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.34978045204758 +20 +0.744795334089513 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +0.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +0.0 +11 +1.34978045204758 +21 +0.744795334089513 +31 +0.0 +12 +1.42452680194624 +22 +0.733707760462408 +32 +0.0 +13 +1.42452680194624 +23 +0.733707760462408 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +0.0 +11 +1.42452680194624 +21 +0.733707760462408 +31 +0.0 +12 +1.5 +22 +0.73 +32 +0.0 +13 +1.5 +23 +0.73 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.98848282880601 +20 +0.904781950910693 +30 +0.0 +11 +2.50226795687895 +21 +0.0 +31 +0.0 +12 +1.92778907942509 +22 +0.85976839852704 +32 +0.0 +13 +1.92778907942509 +23 +0.85976839852704 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +1.98848282880601 +21 +0.904781950910693 +31 +0.0 +12 +2.04447222151364 +22 +0.955527778486358 +32 +0.0 +13 +2.04447222151364 +23 +0.955527778486358 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +2.04447222151364 +21 +0.955527778486358 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.744795334089513 +20 +1.65021954795242 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.744795334089513 +21 +1.65021954795242 +31 +0.0 +12 +0.733707760462408 +22 +1.57547319805376 +32 +0.0 +13 +0.733707760462408 +23 +1.57547319805376 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.733707760462408 +21 +1.57547319805376 +31 +0.0 +12 +0.73 +22 +1.5 +32 +0.0 +13 +0.73 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +0.0 +11 +0.955527778486358 +21 +2.04447222151364 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +2.04447222151364 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +2.04447222151364 +30 +0.0 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +1.01151717119399 +22 +2.09521804908931 +32 +0.0 +13 +1.01151717119399 +23 +2.09521804908931 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +2.09521804908931 +30 +0.0 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +1.07221092057491 +22 +2.14023160147296 +32 +0.0 +13 +1.07221092057491 +23 +2.14023160147296 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.85976839852704 +20 +1.07221092057491 +30 +0.0 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.497732043121051 +32 +0.0 +13 +0.0 +23 +0.497732043121051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.85976839852704 +21 +1.07221092057491 +31 +0.0 +12 +0.904781950910692 +22 +1.01151717119399 +32 +0.0 +13 +0.904781950910692 +23 +1.01151717119399 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.904781950910692 +21 +1.01151717119399 +31 +0.0 +12 +0.955527778486358 +22 +0.955527778486358 +32 +0.0 +13 +0.955527778486358 +23 +0.955527778486358 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.795 +20 +0.0 +30 +2.795 +11 +2.12132034355964 +21 +0.0 +31 +2.17367965644036 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +2.17367965644036 +11 +2.795 +21 +0.0 +31 +2.795 +12 +2.12132034355964 +22 +0.0 +32 +2.795 +13 +2.12132034355964 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.50226795687895 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +2.12132034355964 +22 +0.0 +32 +0.0 +13 +2.12132034355964 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +2.12132034355964 +22 +0.0 +32 +0.205 +13 +2.12132034355964 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.795 +20 +0.0 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.12132034355964 +21 +0.0 +31 +0.205 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +0.0 +30 +0.205 +11 +2.795 +21 +0.0 +31 +1.5 +12 +2.12132034355964 +22 +0.0 +32 +0.826320343559644 +13 +2.12132034355964 +23 +0.0 +33 +0.826320343559644 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +0.205 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +1.5 +22 +0.0 +32 +0.0 +13 +1.5 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.878679656440357 +22 +0.0 +32 +0.0 +13 +0.878679656440357 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.878679656440357 +20 +0.0 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.878679656440357 +22 +3.68628738645072e-18 +32 +0.205 +13 +0.878679656440357 +23 +3.68628738645072e-18 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440357 +20 +5.18248638448071e-17 +30 +2.795 +11 +0.878679656440357 +21 +4.01154803819637e-17 +31 +2.17367965644036 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +star_u +10 +0.878679656440357 +20 +1.53956708492942e-17 +30 +0.826320343559643 +11 +0.878679656440357 +21 +3.68628738645072e-18 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.795 +20 +0.0 +30 +2.795 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.795 +22 +0.0 +32 +3.0 +13 +2.795 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +0.205 +11 +2.795 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.795 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.795 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.0 +30 +3.0 +11 +0.878679656440357 +21 +5.18248638448071e-17 +31 +2.795 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440357 +20 +5.18248638448071e-17 +30 +2.795 +11 +1.5 +21 +0.0 +31 +3.0 +12 +0.878679656440357 +22 +1.11022302462516e-16 +32 +3.0 +13 +0.878679656440357 +23 +1.11022302462516e-16 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.878679656440357 +20 +1.11022302462516e-16 +30 +3.0 +11 +1.5 +21 +0.0 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +3.0 +20 +0.0 +30 +1.5 +11 +2.795 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +3.0 +30 +0.205 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.12132034355964 +22 +3.0 +32 +0.205 +13 +2.12132034355964 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +2.795 +11 +2.12132034355964 +21 +3.0 +31 +2.17367965644036 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +3.0 +30 +2.795 +11 +2.12132034355964 +21 +3.0 +31 +0.826320343559643 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +0.826320343559643 +11 +1.5 +21 +3.0 +31 +2.795 +12 +2.12132034355964 +22 +3.0 +32 +2.17367965644036 +13 +2.12132034355964 +23 +3.0 +33 +2.17367965644036 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +2.17367965644036 +11 +0.878679656440356 +21 +3.0 +31 +0.826320343559644 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.878679656440356 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.878679656440356 +22 +3.0 +32 +0.826320343559644 +13 +0.878679656440356 +23 +3.0 +33 +0.826320343559644 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.878679656440356 +21 +3.0 +31 +2.17367965644036 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +2.17367965644036 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.878679656440356 +22 +3.0 +32 +2.795 +13 +0.878679656440356 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.0 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +0.0 +11 +0.0 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +0.205 +22 +3.0 +32 +0.0 +13 +0.205 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.497732043121052 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.878679656440356 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.878679656440356 +22 +3.0 +32 +0.205 +13 +0.878679656440356 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +2.09521804908931 +22 +1.01151717119399 +32 +1.5 +13 +2.09521804908931 +23 +1.01151717119399 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.09521804908931 +20 +1.01151717119399 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +2.14023160147296 +22 +1.07221092057491 +32 +1.5 +13 +2.14023160147296 +23 +1.07221092057491 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.14023160147296 +20 +1.07221092057491 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +2.17907937354823 +22 +1.13702451264398 +32 +1.5 +13 +2.17907937354823 +23 +1.13702451264398 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.79466624292112 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.788612759966309 +22 +1.79466624292112 +32 +1.5 +13 +0.788612759966309 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.788612759966309 +21 +1.79466624292112 +31 +3.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +1.5 +13 +2.21138724003369 +23 +1.20533375707888 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +0.788612759966309 +21 +1.79466624292112 +31 +3.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +3.0 +13 +2.21138724003369 +23 +1.20533375707888 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +3.0 +11 +0.788612759966309 +21 +1.79466624292112 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +2.2368440585138 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +1.5 +13 +1.20533375707888 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.27648079851406 +21 +2.2368440585138 +31 +1.5 +12 +1.34978045204758 +22 +2.25520466591049 +32 +1.5 +13 +1.34978045204758 +23 +2.25520466591049 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.34978045204758 +21 +2.25520466591049 +31 +1.5 +12 +1.42452680194624 +22 +2.26629223953759 +32 +1.5 +13 +1.42452680194624 +23 +2.26629223953759 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.42452680194624 +21 +2.26629223953759 +31 +1.5 +12 +1.5 +22 +2.27 +32 +1.5 +13 +1.5 +23 +2.27 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.733707760462408 +21 +1.42452680194624 +31 +1.5 +12 +0.73 +22 +1.5 +32 +1.5 +13 +0.73 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.733707760462408 +20 +1.42452680194624 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.744795334089513 +22 +1.34978045204758 +32 +1.5 +13 +0.744795334089513 +23 +1.34978045204758 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.744795334089513 +20 +1.34978045204758 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.763155941486199 +22 +1.27648079851406 +32 +1.5 +13 +0.763155941486199 +23 +1.27648079851406 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.763155941486199 +20 +1.27648079851406 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.20533375707888 +21 +0.788612759966309 +31 +3.0 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.20533375707888 +20 +0.788612759966309 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.79466624292112 +22 +2.21138724003369 +32 +1.5 +13 +1.79466624292112 +23 +2.21138724003369 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.79466624292112 +22 +2.21138724003369 +32 +3.0 +13 +1.79466624292112 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +2.09521804908931 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.955527778486358 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486358 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.01151717119399 +21 +2.09521804908931 +31 +1.5 +12 +1.07221092057491 +22 +2.14023160147296 +32 +1.5 +13 +1.07221092057491 +23 +2.14023160147296 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.07221092057491 +21 +2.14023160147296 +31 +1.5 +12 +1.13702451264398 +22 +2.17907937354823 +32 +1.5 +13 +1.13702451264398 +23 +2.17907937354823 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.13702451264398 +21 +2.17907937354823 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +1.5 +13 +1.20533375707888 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.27648079851406 +21 +0.763155941486199 +31 +1.5 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.27648079851406 +20 +0.763155941486199 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.34978045204758 +22 +0.744795334089513 +32 +1.5 +13 +1.34978045204758 +23 +0.744795334089513 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.34978045204758 +20 +0.744795334089513 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.42452680194624 +22 +0.733707760462408 +32 +1.5 +13 +1.42452680194624 +23 +0.733707760462408 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.42452680194624 +20 +0.733707760462408 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.79466624292112 +21 +0.788612759966309 +31 +3.0 +12 +1.79466624292112 +22 +0.788612759966309 +32 +1.5 +13 +1.79466624292112 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +1.5 +13 +1.20533375707888 +23 +2.21138724003369 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.20533375707888 +21 +2.21138724003369 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +3.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.01151717119399 +21 +0.904781950910692 +31 +1.5 +12 +0.955527778486358 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486358 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.01151717119399 +20 +0.904781950910692 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.07221092057491 +22 +0.85976839852704 +32 +1.5 +13 +1.07221092057491 +23 +0.85976839852704 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.07221092057491 +20 +0.85976839852704 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.13702451264398 +22 +0.820920626451767 +32 +1.5 +13 +1.13702451264398 +23 +0.820920626451767 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.13702451264398 +20 +0.820920626451767 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.2368440585138 +22 +1.27648079851406 +32 +1.5 +13 +2.2368440585138 +23 +1.27648079851406 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.2368440585138 +20 +1.27648079851406 +30 +1.5 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.25520466591049 +22 +1.34978045204758 +32 +1.5 +13 +2.25520466591049 +23 +1.34978045204758 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.25520466591049 +20 +1.34978045204758 +30 +1.5 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.26629223953759 +22 +1.42452680194624 +32 +1.5 +13 +2.26629223953759 +23 +1.42452680194624 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.788612759966309 +20 +1.20533375707888 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.788612759966309 +21 +1.20533375707888 +31 +3.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +1.5 +13 +2.21138724003369 +23 +1.79466624292112 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +0.788612759966309 +21 +1.20533375707888 +31 +3.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +3.0 +13 +2.21138724003369 +23 +1.79466624292112 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +3.0 +11 +0.788612759966309 +21 +1.20533375707888 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +2.27 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +2.2368440585138 +22 +1.72351920148594 +32 +1.5 +13 +2.2368440585138 +23 +1.72351920148594 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.2368440585138 +21 +1.72351920148594 +31 +1.5 +12 +2.25520466591049 +22 +1.65021954795242 +32 +1.5 +13 +2.25520466591049 +23 +1.65021954795242 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.25520466591049 +21 +1.65021954795242 +31 +1.5 +12 +2.26629223953759 +22 +1.57547319805376 +32 +1.5 +13 +2.26629223953759 +23 +1.57547319805376 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.733707760462408 +20 +1.57547319805376 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.73 +22 +1.5 +32 +1.5 +13 +0.73 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.733707760462408 +21 +1.57547319805376 +31 +1.5 +12 +0.744795334089513 +22 +1.65021954795242 +32 +1.5 +13 +0.744795334089513 +23 +1.65021954795242 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.744795334089513 +21 +1.65021954795242 +31 +1.5 +12 +0.763155941486199 +22 +1.72351920148594 +32 +1.5 +13 +0.763155941486199 +23 +1.72351920148594 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.763155941486199 +21 +1.72351920148594 +31 +1.5 +12 +0.788612759966309 +22 +1.79466624292112 +32 +1.5 +13 +0.788612759966309 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.27 +20 +1.5 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +2.27 +22 +1.5 +32 +1.5 +13 +2.27 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +2.27 +21 +1.5 +31 +3.0 +12 +0.73 +22 +1.5 +32 +1.5 +13 +0.73 +23 +1.5 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.73 +20 +1.5 +30 +1.5 +11 +2.27 +21 +1.5 +31 +3.0 +12 +0.73 +22 +1.5 +32 +3.0 +13 +0.73 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.73 +20 +1.5 +30 +3.0 +11 +2.27 +21 +1.5 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.86297548735602 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.788612759966309 +22 +1.79466624292112 +32 +1.5 +13 +0.788612759966309 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.820920626451767 +21 +1.86297548735602 +31 +1.5 +12 +0.85976839852704 +22 +1.92778907942509 +32 +1.5 +13 +0.85976839852704 +23 +1.92778907942509 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.85976839852704 +21 +1.92778907942509 +31 +1.5 +12 +0.904781950910692 +22 +1.98848282880601 +32 +1.5 +13 +0.904781950910692 +23 +1.98848282880601 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.904781950910692 +21 +1.98848282880601 +31 +1.5 +12 +0.955527778486358 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486358 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +1.86297548735602 +22 +0.820920626451767 +32 +1.5 +13 +1.86297548735602 +23 +0.820920626451767 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.86297548735602 +20 +0.820920626451767 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +1.92778907942509 +22 +0.85976839852704 +32 +1.5 +13 +1.92778907942509 +23 +0.85976839852704 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.92778907942509 +20 +0.85976839852704 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +1.98848282880601 +22 +0.904781950910693 +32 +1.5 +13 +1.98848282880601 +23 +0.904781950910693 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +2.04447222151364 +22 +0.955527778486358 +32 +3.0 +13 +2.04447222151364 +23 +0.955527778486358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.955527778486358 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486358 +23 +2.04447222151364 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +2.04447222151364 +30 +1.5 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.955527778486358 +22 +2.04447222151364 +32 +3.0 +13 +0.955527778486358 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +1.5 +21 +0.73 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.73 +30 +1.5 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.57547319805376 +22 +0.733707760462408 +32 +1.5 +13 +1.57547319805376 +23 +0.733707760462408 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +0.733707760462408 +30 +1.5 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.65021954795242 +22 +0.744795334089513 +32 +1.5 +13 +1.65021954795242 +23 +0.744795334089513 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.65021954795242 +20 +0.744795334089513 +30 +1.5 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.72351920148594 +22 +0.763155941486199 +32 +1.5 +13 +1.72351920148594 +23 +0.763155941486199 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.57547319805376 +20 +2.26629223953759 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +2.27 +32 +1.5 +13 +1.5 +23 +2.27 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.57547319805376 +21 +2.26629223953759 +31 +1.5 +12 +1.79466624292112 +22 +2.21138724003369 +32 +1.5 +13 +1.79466624292112 +23 +2.21138724003369 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +1.5 +11 +1.57547319805376 +21 +2.26629223953759 +31 +1.5 +12 +1.65021954795242 +22 +2.25520466591049 +32 +1.5 +13 +1.65021954795242 +23 +2.25520466591049 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +1.5 +11 +1.65021954795242 +21 +2.25520466591049 +31 +1.5 +12 +1.72351920148594 +22 +2.2368440585138 +32 +1.5 +13 +1.72351920148594 +23 +2.2368440585138 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.5 +21 +0.73 +31 +3.0 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +0.73 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +2.27 +32 +1.5 +13 +1.5 +23 +2.27 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.5 +21 +2.27 +31 +1.5 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.820920626451767 +21 +1.13702451264398 +31 +1.5 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.820920626451767 +20 +1.13702451264398 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.85976839852704 +22 +1.07221092057491 +32 +1.5 +13 +0.85976839852704 +23 +1.07221092057491 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.85976839852704 +20 +1.07221092057491 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.904781950910692 +22 +1.01151717119399 +32 +1.5 +13 +0.904781950910692 +23 +1.01151717119399 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_u +10 +0.904781950910692 +20 +1.01151717119399 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.955527778486358 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486358 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.79466624292112 +20 +2.21138724003369 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.86297548735602 +22 +2.17907937354823 +32 +1.5 +13 +1.86297548735602 +23 +2.17907937354823 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +1.86297548735602 +21 +2.17907937354823 +31 +1.5 +12 +1.92778907942509 +22 +2.14023160147296 +32 +1.5 +13 +1.92778907942509 +23 +2.14023160147296 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +1.92778907942509 +21 +2.14023160147296 +31 +1.5 +12 +1.98848282880601 +22 +2.09521804908931 +32 +1.5 +13 +1.98848282880601 +23 +2.09521804908931 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.955527778486358 +21 +0.955527778486358 +31 +3.0 +12 +0.955527778486358 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486358 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_u +10 +0.955527778486358 +20 +0.955527778486358 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.5 +21 +1.5 +31 +1.5 +12 +2.04447222151364 +22 +2.04447222151364 +32 +1.5 +13 +2.04447222151364 +23 +2.04447222151364 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_u +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +2.04447222151364 +22 +2.04447222151364 +32 +3.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +0.955527778486358 +30 +1.20736753927986e-15 +11 +0.205000000000001 +21 +0.0 +31 +-1.16573417585641e-15 +12 +1.19348975147204e-15 +22 +0.0 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +0.0 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +-1.16573417585641e-15 +11 +0.955527778486359 +21 +0.955527778486358 +31 +1.20736753927986e-15 +12 +0.497732043121054 +22 +0.0 +32 +1.19348975147204e-15 +13 +0.497732043121054 +23 +0.0 +33 +1.19348975147204e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.497732043121054 +20 +0.0 +30 +1.19348975147204e-15 +11 +0.955527778486359 +21 +0.955527778486358 +31 +1.20736753927986e-15 +12 +1.01151717119399 +22 +0.904781950910693 +32 +6.38378239159465e-16 +13 +1.01151717119399 +23 +0.904781950910693 +33 +6.38378239159465e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +0.497732043121054 +20 +0.0 +30 +1.19348975147204e-15 +11 +1.01151717119399 +21 +0.904781950910693 +31 +6.38378239159465e-16 +12 +1.07221092057491 +22 +0.85976839852704 +32 +-1.38777878078145e-17 +13 +1.07221092057491 +23 +0.85976839852704 +33 +-1.38777878078145e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.50226795687895 +20 +3.0 +30 +1.19348975147204e-15 +11 +1.98848282880601 +21 +2.09521804908931 +31 +-8.46545056276682e-16 +12 +1.92778907942509 +22 +2.14023160147296 +32 +-1.02695629777827e-15 +13 +1.92778907942509 +23 +2.14023160147296 +33 +-1.02695629777827e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.98848282880601 +20 +2.09521804908931 +30 +-8.46545056276682e-16 +11 +2.50226795687895 +21 +3.0 +31 +1.19348975147204e-15 +12 +2.04447222151364 +22 +2.04447222151364 +32 +-1.11022302462516e-16 +13 +2.04447222151364 +23 +2.04447222151364 +33 +-1.11022302462516e-16 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +-1.11022302462516e-16 +11 +2.50226795687895 +21 +3.0 +31 +1.19348975147204e-15 +12 +3.0 +22 +3.0 +32 +1.19348975147204e-15 +13 +3.0 +23 +3.0 +33 +1.19348975147204e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +3.0 +30 +1.19348975147204e-15 +11 +2.50226795687895 +21 +3.0 +31 +1.19348975147204e-15 +12 +2.795 +22 +3.0 +32 +-1.16573417585641e-15 +13 +2.795 +23 +3.0 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +1.79836855106949 +30 +1.19348975147204e-15 +11 +2.26629223953759 +21 +1.57547319805376 +31 +-1.11022302462516e-16 +12 +2.25520466591049 +22 +1.65021954795242 +32 +-1.2490009027033e-15 +13 +2.25520466591049 +23 +1.65021954795242 +33 +-1.2490009027033e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.26629223953759 +20 +1.57547319805376 +30 +-1.11022302462516e-16 +11 +3.0 +21 +1.79836855106949 +31 +1.19348975147204e-15 +12 +2.27 +22 +1.5 +32 +-2.35922392732846e-16 +13 +2.27 +23 +1.5 +33 +-2.35922392732846e-16 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +-2.35922392732846e-16 +11 +3.0 +21 +1.79836855106949 +31 +1.19348975147204e-15 +12 +3.0 +22 +1.5 +32 +1.19348975147204e-15 +13 +3.0 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +6.93889390390723e-16 +11 +1.34978045204758 +21 +2.25520466591049 +31 +-4.02455846426619e-16 +12 +1.20163144893051 +22 +3.0 +32 +1.19348975147204e-15 +13 +1.20163144893051 +23 +3.0 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.34978045204758 +20 +2.25520466591049 +30 +-4.02455846426619e-16 +11 +1.5 +21 +3.0 +31 +6.93889390390723e-16 +12 +1.42452680194624 +22 +2.26629223953759 +32 +-6.93889390390723e-16 +13 +1.42452680194624 +23 +2.26629223953759 +33 +-6.93889390390723e-16 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.42452680194624 +20 +2.26629223953759 +30 +-6.93889390390723e-16 +11 +1.5 +21 +3.0 +31 +6.93889390390723e-16 +12 +1.5 +22 +2.27 +32 +6.93889390390723e-16 +13 +1.5 +23 +2.27 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +2.04447222151364 +30 +1.20736753927986e-15 +11 +1.33226762955019e-15 +21 +2.50226795687895 +31 +1.19348975147204e-15 +12 +1.19348975147204e-15 +22 +3.0 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +3.0 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +2.50226795687895 +30 +1.19348975147204e-15 +11 +0.955527778486359 +21 +2.04447222151364 +31 +1.20736753927986e-15 +12 +0.904781950910692 +22 +1.98848282880601 +32 +1.31838984174237e-15 +13 +0.904781950910692 +23 +1.98848282880601 +33 +1.31838984174237e-15 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +2.50226795687895 +30 +1.19348975147204e-15 +11 +0.904781950910692 +21 +1.98848282880601 +31 +1.31838984174237e-15 +12 +0.859768398527041 +22 +1.92778907942509 +32 +8.74300631892311e-16 +13 +0.859768398527041 +23 +1.92778907942509 +33 +8.74300631892311e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.09521804908931 +20 +1.01151717119399 +30 +7.63278329429795e-16 +11 +3.0 +21 +0.0 +31 +1.19348975147204e-15 +12 +2.04447222151364 +22 +0.955527778486358 +32 +-1.11022302462516e-16 +13 +2.04447222151364 +23 +0.955527778486358 +33 +-1.11022302462516e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.0 +30 +1.19348975147204e-15 +11 +2.09521804908931 +21 +1.01151717119399 +31 +7.63278329429795e-16 +12 +2.14023160147296 +22 +1.07221092057491 +32 +-9.71445146547012e-16 +13 +2.14023160147296 +23 +1.07221092057491 +33 +-9.71445146547012e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.0 +30 +1.19348975147204e-15 +11 +2.14023160147296 +21 +1.07221092057491 +31 +-9.71445146547012e-16 +12 +3.0 +22 +0.497732043121051 +32 +1.19348975147204e-15 +13 +3.0 +23 +0.497732043121051 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +5.55111512312578e-17 +30 +0.826320343559641 +11 +1.5 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0 +32 +0.204999999999999 +13 +1.5 +23 +0.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.12132034355964 +21 +5.55111512312578e-17 +31 +0.826320343559641 +12 +2.12132034355964 +22 +5.55111512312578e-17 +32 +2.17367965644036 +13 +2.12132034355964 +23 +5.55111512312578e-17 +33 +2.17367965644036 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.72351920148594 +21 +0.763155941486199 +31 +3.0 +12 +1.65021954795242 +22 +0.744795334089513 +32 +3.0 +13 +1.65021954795242 +23 +0.744795334089513 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.72351920148594 +20 +0.763155941486199 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.79466624292112 +22 +0.788612759966309 +32 +3.0 +13 +1.79466624292112 +23 +0.788612759966309 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +2.12132034355964 +22 +1.11022302462516e-16 +32 +3.0 +13 +2.12132034355964 +23 +1.11022302462516e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440357 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +0.878679656440357 +22 +3.0 +32 +2.795 +13 +0.878679656440357 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.878679656440357 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +2 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +3.0 +11 +1.07221092057491 +21 +0.85976839852704 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.07221092057491 +20 +0.85976839852704 +30 +3.0 +11 +0.878679656440356 +21 +0.0 +31 +3.0 +12 +1.13702451264398 +22 +0.820920626451767 +32 +3.0 +13 +1.13702451264398 +23 +0.820920626451767 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.13702451264398 +20 +0.820920626451767 +30 +3.0 +11 +0.878679656440356 +21 +0.0 +31 +3.0 +12 +1.20533375707888 +22 +0.788612759966309 +32 +3.0 +13 +1.20533375707888 +23 +0.788612759966309 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +1.79836855106949 +30 +1.19348975147204e-15 +11 +3.0 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +1.19348975147204e-15 +13 +3.0 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.79836855106949 +31 +1.19348975147204e-15 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +3.0 +21 +1.79836855106949 +31 +1.19348975147204e-15 +12 +3.0 +22 +2.12132034355964 +32 +1.19348975147204e-15 +13 +3.0 +23 +2.12132034355964 +33 +1.19348975147204e-15 +70 +13 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +3.0 +21 +2.12132034355964 +31 +1.19348975147204e-15 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +1.20163144893051 +30 +3.0 +11 +1.19348975147204e-15 +21 +0.878679656440358 +31 +-1.16573417585641e-15 +12 +2.77555756156289e-16 +22 +0.878679656440358 +32 +3.0 +13 +2.77555756156289e-16 +23 +0.878679656440358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.878679656440358 +30 +-1.16573417585641e-15 +11 +2.77555756156289e-16 +21 +1.20163144893051 +31 +3.0 +12 +1.33226762955019e-15 +22 +1.20163144893051 +32 +1.19348975147204e-15 +13 +1.33226762955019e-15 +23 +1.20163144893051 +33 +1.19348975147204e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +1.20163144893051 +30 +1.19348975147204e-15 +11 +2.77555756156289e-16 +21 +1.20163144893051 +31 +3.0 +12 +2.77555756156289e-16 +22 +1.5 +32 +3.0 +13 +2.77555756156289e-16 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +1.20163144893051 +30 +1.19348975147204e-15 +11 +2.77555756156289e-16 +21 +1.5 +31 +3.0 +12 +1.19348975147204e-15 +22 +1.5 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +1.5 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.2368440585138 +20 +1.72351920148594 +30 +3.0 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +3.0 +13 +2.21138724003369 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.2368440585138 +21 +1.72351920148594 +31 +3.0 +12 +2.25520466591049 +22 +1.65021954795242 +32 +3.0 +13 +2.25520466591049 +23 +1.65021954795242 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.25520466591049 +21 +1.65021954795242 +31 +3.0 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +0.733707760462408 +30 +1.38777878078145e-16 +11 +1.5 +21 +0.0 +31 +6.93889390390723e-16 +12 +1.5 +22 +0.73 +32 +6.93889390390723e-16 +13 +1.5 +23 +0.73 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +6.93889390390723e-16 +11 +1.57547319805376 +21 +0.733707760462408 +31 +1.38777878078145e-16 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +1.19348975147204e-15 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +1.19348975147204e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +1.19348975147204e-15 +11 +1.57547319805376 +21 +0.733707760462408 +31 +1.38777878078145e-16 +12 +1.65021954795242 +22 +0.744795334089513 +32 +-3.60822483003176e-16 +13 +1.65021954795242 +23 +0.744795334089513 +33 +-3.60822483003176e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +2.17907937354823 +21 +1.13702451264398 +31 +3.0 +12 +2.14023160147296 +22 +1.07221092057491 +32 +3.0 +13 +2.14023160147296 +23 +1.07221092057491 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.17907937354823 +20 +1.13702451264398 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +3.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +3.0 +13 +2.21138724003369 +23 +1.20533375707888 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +3.0 +12 +3.0 +22 +0.878679656440356 +32 +3.0 +13 +3.0 +23 +0.878679656440356 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.788612759966309 +20 +1.20533375707888 +30 +3.0 +11 +2.77555756156289e-16 +21 +1.20163144893051 +31 +3.0 +12 +2.77555756156289e-16 +22 +0.878679656440358 +32 +3.0 +13 +2.77555756156289e-16 +23 +0.878679656440358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +1.20163144893051 +30 +3.0 +11 +0.788612759966309 +21 +1.20533375707888 +31 +3.0 +12 +0.763155941486199 +22 +1.27648079851406 +32 +3.0 +13 +0.763155941486199 +23 +1.27648079851406 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +1.20163144893051 +30 +3.0 +11 +0.763155941486199 +21 +1.27648079851406 +31 +3.0 +12 +0.744795334089513 +22 +1.34978045204758 +32 +3.0 +13 +0.744795334089513 +23 +1.34978045204758 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.73 +20 +1.5 +30 +7.07767178198537e-16 +11 +1.33226762955019e-15 +21 +1.20163144893051 +31 +1.19348975147204e-15 +12 +1.19348975147204e-15 +22 +1.5 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +1.5 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +1.20163144893051 +30 +1.19348975147204e-15 +11 +0.73 +21 +1.5 +31 +7.07767178198537e-16 +12 +0.733707760462409 +22 +1.42452680194624 +32 +4.16333634234434e-16 +13 +0.733707760462409 +23 +1.42452680194624 +33 +4.16333634234434e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +1.20163144893051 +30 +1.19348975147204e-15 +11 +0.733707760462409 +21 +1.42452680194624 +31 +4.16333634234434e-16 +12 +0.744795334089513 +22 +1.34978045204758 +32 +4.71844785465692e-16 +13 +0.744795334089513 +23 +1.34978045204758 +33 +4.71844785465692e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +2.795 +11 +1.19348975147204e-15 +21 +0.0 +31 +1.5 +12 +0.205000000000001 +22 +0.0 +32 +1.5 +13 +0.205000000000001 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.0 +30 +1.5 +11 +0.205000000000001 +21 +0.0 +31 +2.795 +12 +1.19348975147204e-15 +22 +0.0 +32 +2.795 +13 +1.19348975147204e-15 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +2.50226795687895 +30 +3.0 +11 +1.19348975147204e-15 +21 +2.12132034355964 +31 +-1.16573417585641e-15 +12 +2.77555756156289e-16 +22 +2.12132034355964 +32 +3.0 +13 +2.77555756156289e-16 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +2.12132034355964 +30 +-1.16573417585641e-15 +11 +2.77555756156289e-16 +21 +2.50226795687895 +31 +3.0 +12 +1.33226762955019e-15 +22 +2.50226795687895 +32 +1.19348975147204e-15 +13 +1.33226762955019e-15 +23 +2.50226795687895 +33 +1.19348975147204e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +2.50226795687895 +30 +1.19348975147204e-15 +11 +2.77555756156289e-16 +21 +2.50226795687895 +31 +3.0 +12 +2.77555756156289e-16 +22 +3.0 +32 +3.0 +13 +2.77555756156289e-16 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +2.50226795687895 +30 +1.19348975147204e-15 +11 +2.77555756156289e-16 +21 +3.0 +31 +3.0 +12 +1.19348975147204e-15 +22 +3.0 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +3.0 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +2.14023160147296 +30 +-1.02695629777827e-15 +11 +2.04447222151364 +21 +2.04447222151364 +31 +-1.11022302462516e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +-1.11022302462516e-16 +11 +1.92778907942509 +21 +2.14023160147296 +31 +-1.02695629777827e-15 +12 +1.98848282880601 +22 +2.09521804908931 +32 +-8.46545056276682e-16 +13 +1.98848282880601 +23 +2.09521804908931 +33 +-8.46545056276682e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +2.21138724003369 +30 +3.0 +11 +1.20163144893051 +21 +3.0 +31 +3.0 +12 +0.878679656440357 +22 +3.0 +32 +3.0 +13 +0.878679656440357 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.20533375707888 +21 +2.21138724003369 +31 +3.0 +12 +1.27648079851406 +22 +2.2368440585138 +32 +3.0 +13 +1.27648079851406 +23 +2.2368440585138 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.27648079851406 +21 +2.2368440585138 +31 +3.0 +12 +1.34978045204758 +22 +2.25520466591049 +32 +3.0 +13 +1.34978045204758 +23 +2.25520466591049 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.497732043121051 +30 +1.19348975147204e-15 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +1.19348975147204e-15 +13 +3.0 +23 +0.0 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.0 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +1.19348975147204e-15 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +1.19348975147204e-15 +12 +3.0 +22 +0.878679656440356 +32 +1.19348975147204e-15 +13 +3.0 +23 +0.878679656440356 +33 +1.19348975147204e-15 +70 +13 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +0.878679656440356 +31 +1.19348975147204e-15 +12 +3.0 +22 +0.878679656440356 +32 +3.0 +13 +3.0 +23 +0.878679656440356 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +0.826320343559642 +11 +2.795 +21 +3.0 +31 +0.204999999999999 +12 +2.12132034355964 +22 +3.0 +32 +0.204999999999999 +13 +2.12132034355964 +23 +3.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +0.204999999999999 +11 +2.12132034355964 +21 +3.0 +31 +0.826320343559642 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +2.14023160147296 +30 +3.0 +11 +1.86297548735602 +21 +2.17907937354823 +31 +1.5 +12 +1.92778907942509 +22 +2.14023160147296 +32 +1.5 +13 +1.92778907942509 +23 +2.14023160147296 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.86297548735602 +20 +2.17907937354823 +30 +1.5 +11 +1.92778907942509 +21 +2.14023160147296 +31 +3.0 +12 +1.86297548735602 +22 +2.17907937354823 +32 +3.0 +13 +1.86297548735602 +23 +2.17907937354823 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.79466624292112 +30 +3.0 +11 +2.2368440585138 +21 +1.72351920148594 +31 +1.5 +12 +2.2368440585138 +22 +1.72351920148594 +32 +3.0 +13 +2.2368440585138 +23 +1.72351920148594 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.2368440585138 +20 +1.72351920148594 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +3.0 +12 +2.21138724003369 +22 +1.79466624292112 +32 +1.5 +13 +2.21138724003369 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +2.04447222151364 +30 +1.5 +11 +0.904781950910692 +21 +1.98848282880601 +31 +3.0 +12 +0.904781950910694 +22 +1.98848282880601 +32 +1.5 +13 +0.904781950910694 +23 +1.98848282880601 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.904781950910692 +20 +1.98848282880601 +30 +3.0 +11 +0.955527778486359 +21 +2.04447222151364 +31 +1.5 +12 +0.955527778486358 +22 +2.04447222151364 +32 +3.0 +13 +0.955527778486358 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.26629223953759 +20 +1.57547319805376 +30 +3.0 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.27 +22 +1.5 +32 +3.0 +13 +2.27 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.26629223953759 +21 +1.57547319805376 +31 +3.0 +12 +2.26629223953759 +22 +1.57547319805376 +32 +1.5 +13 +2.26629223953759 +23 +1.57547319805376 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.07221092057491 +30 +3.0 +11 +2.09521804908931 +21 +1.01151717119399 +31 +1.5 +12 +2.09521804908931 +22 +1.01151717119399 +32 +3.0 +13 +2.09521804908931 +23 +1.01151717119399 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.09521804908931 +20 +1.01151717119399 +30 +1.5 +11 +2.14023160147296 +21 +1.07221092057491 +31 +3.0 +12 +2.14023160147296 +22 +1.07221092057491 +32 +1.5 +13 +2.14023160147296 +23 +1.07221092057491 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.859768398527041 +20 +1.92778907942509 +30 +1.5 +11 +0.820920626451767 +21 +1.86297548735602 +31 +3.0 +12 +0.820920626451766 +22 +1.86297548735602 +32 +1.5 +13 +0.820920626451766 +23 +1.86297548735602 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.820920626451767 +20 +1.86297548735602 +30 +3.0 +11 +0.859768398527041 +21 +1.92778907942509 +31 +1.5 +12 +0.859768398527041 +22 +1.92778907942509 +32 +3.0 +13 +0.859768398527041 +23 +1.92778907942509 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.86297548735602 +20 +2.17907937354823 +30 +1.5 +11 +1.79466624292112 +21 +2.21138724003369 +31 +3.0 +12 +1.79466624292112 +22 +2.21138724003369 +32 +1.5 +13 +1.79466624292112 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +2.21138724003369 +30 +3.0 +11 +1.86297548735602 +21 +2.17907937354823 +31 +1.5 +12 +1.86297548735602 +22 +2.17907937354823 +32 +3.0 +13 +1.86297548735602 +23 +2.17907937354823 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.78861275996631 +20 +1.79466624292112 +30 +2.77555756156289e-17 +11 +2.77555756156289e-16 +21 +2.12132034355964 +31 +3.0 +12 +1.19348975147204e-15 +22 +2.12132034355964 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +2.12132034355964 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +2.12132034355964 +30 +3.0 +11 +0.78861275996631 +21 +1.79466624292112 +31 +2.77555756156289e-17 +12 +0.78861275996631 +22 +1.79466624292112 +32 +1.5 +13 +0.78861275996631 +23 +1.79466624292112 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +2.12132034355964 +30 +3.0 +11 +0.78861275996631 +21 +1.79466624292112 +31 +1.5 +12 +0.788612759966309 +22 +1.79466624292112 +32 +3.0 +13 +0.788612759966309 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.27648079851406 +20 +0.763155941486199 +30 +1.1518563880486e-15 +11 +1.20533375707888 +21 +0.788612759966309 +31 +1.5 +12 +1.20533375707888 +22 +0.788612759966309 +32 +2.63677968348475e-16 +13 +1.20533375707888 +23 +0.788612759966309 +33 +2.63677968348475e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +0.788612759966309 +30 +1.5 +11 +1.27648079851406 +21 +0.763155941486199 +31 +1.1518563880486e-15 +12 +1.27648079851406 +22 +0.763155941486199 +32 +1.5 +13 +1.27648079851406 +23 +0.763155941486199 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.73 +30 +3.0 +11 +1.5 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0 +32 +3.0 +13 +1.5 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +2.795 +11 +1.5 +21 +0.73 +31 +3.0 +12 +1.5 +22 +0.0 +32 +0.204999999999999 +13 +1.5 +23 +0.0 +33 +0.204999999999999 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +0.204999999999999 +11 +1.5 +21 +0.73 +31 +3.0 +12 +1.5 +22 +0.0 +32 +6.93889390390723e-16 +13 +1.5 +23 +0.0 +33 +6.93889390390723e-16 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +6.93889390390723e-16 +11 +1.5 +21 +0.73 +31 +3.0 +12 +1.5 +22 +0.73 +32 +6.93889390390723e-16 +13 +1.5 +23 +0.73 +33 +6.93889390390723e-16 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.73 +30 +6.93889390390723e-16 +11 +1.5 +21 +0.73 +31 +3.0 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.09521804908931 +20 +1.98848282880601 +30 +7.63278329429795e-16 +11 +2.14023160147296 +21 +1.92778907942509 +31 +1.5 +12 +2.14023160147296 +22 +1.92778907942509 +32 +-9.71445146547012e-16 +13 +2.14023160147296 +23 +1.92778907942509 +33 +-9.71445146547012e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.92778907942509 +30 +1.5 +11 +2.09521804908931 +21 +1.98848282880601 +31 +7.63278329429795e-16 +12 +2.09521804908931 +22 +1.98848282880601 +32 +1.5 +13 +2.09521804908931 +23 +1.98848282880601 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +2.26629223953759 +30 +1.38777878078145e-16 +11 +1.65021954795242 +21 +2.25520466591049 +31 +1.5 +12 +1.65021954795242 +22 +2.25520466591049 +32 +-3.60822483003176e-16 +13 +1.65021954795242 +23 +2.25520466591049 +33 +-3.60822483003176e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.65021954795242 +20 +2.25520466591049 +30 +1.5 +11 +1.57547319805376 +21 +2.26629223953759 +31 +1.38777878078145e-16 +12 +1.57547319805376 +22 +2.26629223953759 +32 +1.5 +13 +1.57547319805376 +23 +2.26629223953759 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +3.0 +21 +2.12132034355964 +31 +1.19348975147204e-15 +12 +2.21138724003369 +22 +1.79466624292112 +32 +-6.66133814775094e-16 +13 +2.21138724003369 +23 +1.79466624292112 +33 +-6.66133814775094e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +2.12132034355964 +30 +1.19348975147204e-15 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +2.21138724003369 +22 +1.79466624292112 +32 +3.0 +13 +2.21138724003369 +23 +1.79466624292112 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.07221092057491 +20 +2.14023160147296 +30 +1.5 +11 +1.13702451264398 +21 +2.17907937354823 +31 +8.18789480661053e-16 +12 +1.07221092057491 +22 +2.14023160147296 +32 +3.19189119579733e-16 +13 +1.07221092057491 +23 +2.14023160147296 +33 +3.19189119579733e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.13702451264398 +20 +2.17907937354823 +30 +8.18789480661053e-16 +11 +1.07221092057491 +21 +2.14023160147296 +31 +1.5 +12 +1.13702451264398 +22 +2.17907937354823 +32 +1.5 +13 +1.13702451264398 +23 +2.17907937354823 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.86297548735602 +20 +0.820920626451767 +30 +1.58206781009085e-15 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.79466624292112 +22 +0.788612759966309 +32 +-1.38777878078145e-16 +13 +1.79466624292112 +23 +0.788612759966309 +33 +-1.38777878078145e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +1.86297548735602 +21 +0.820920626451767 +31 +1.58206781009085e-15 +12 +1.86297548735602 +22 +0.820920626451767 +32 +1.5 +13 +1.86297548735602 +23 +0.820920626451767 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.788612759966309 +20 +1.20533375707888 +30 +1.5 +11 +0.820920626451768 +21 +1.13702451264398 +31 +1.65145674912992e-15 +12 +0.820920626451766 +22 +1.13702451264398 +32 +1.5 +13 +0.820920626451766 +23 +1.13702451264398 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.820920626451768 +20 +1.13702451264398 +30 +1.65145674912992e-15 +11 +0.788612759966309 +21 +1.20533375707888 +31 +1.5 +12 +0.78861275996631 +22 +1.20533375707888 +32 +2.77555756156289e-17 +13 +0.78861275996631 +23 +1.20533375707888 +33 +2.77555756156289e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +2.04447222151364 +30 +1.20736753927986e-15 +11 +1.01151717119399 +21 +2.09521804908931 +31 +1.5 +12 +1.01151717119399 +22 +2.09521804908931 +32 +6.38378239159465e-16 +13 +1.01151717119399 +23 +2.09521804908931 +33 +6.38378239159465e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +2.09521804908931 +30 +1.5 +11 +0.955527778486359 +21 +2.04447222151364 +31 +1.20736753927986e-15 +12 +0.955527778486359 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486359 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +2.27 +30 +6.93889390390723e-16 +11 +1.57547319805376 +21 +2.26629223953759 +31 +1.5 +12 +1.57547319805376 +22 +2.26629223953759 +32 +1.38777878078145e-16 +13 +1.57547319805376 +23 +2.26629223953759 +33 +1.38777878078145e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +2.26629223953759 +30 +1.5 +11 +1.5 +21 +2.27 +31 +6.93889390390723e-16 +12 +1.5 +22 +2.27 +32 +1.5 +13 +1.5 +23 +2.27 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.13702451264398 +20 +2.17907937354823 +30 +8.18789480661053e-16 +11 +1.20533375707888 +21 +2.21138724003369 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +-5.68989300120393e-16 +13 +1.20533375707888 +23 +2.21138724003369 +33 +-5.68989300120393e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +2.21138724003369 +30 +1.5 +11 +1.13702451264398 +21 +2.17907937354823 +31 +8.18789480661053e-16 +12 +1.13702451264398 +22 +2.17907937354823 +32 +1.5 +13 +1.13702451264398 +23 +2.17907937354823 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +0.85976839852704 +30 +1.5 +11 +1.86297548735602 +21 +0.820920626451767 +31 +1.58206781009085e-15 +12 +1.92778907942509 +22 +0.85976839852704 +32 +-1.02695629777827e-15 +13 +1.92778907942509 +23 +0.85976839852704 +33 +-1.02695629777827e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.86297548735602 +20 +0.820920626451767 +30 +1.58206781009085e-15 +11 +1.92778907942509 +21 +0.85976839852704 +31 +1.5 +12 +1.86297548735602 +22 +0.820920626451767 +32 +1.5 +13 +1.86297548735602 +23 +0.820920626451767 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +2.09521804908931 +30 +6.38378239159465e-16 +11 +1.07221092057491 +21 +2.14023160147296 +31 +1.5 +12 +1.07221092057491 +22 +2.14023160147296 +32 +3.19189119579733e-16 +13 +1.07221092057491 +23 +2.14023160147296 +33 +3.19189119579733e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.07221092057491 +20 +2.14023160147296 +30 +1.5 +11 +1.01151717119399 +21 +2.09521804908931 +31 +6.38378239159465e-16 +12 +1.01151717119399 +22 +2.09521804908931 +32 +1.5 +13 +1.01151717119399 +23 +2.09521804908931 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.17907937354823 +20 +1.13702451264398 +30 +3.0 +11 +2.14023160147296 +21 +1.07221092057491 +31 +1.5 +12 +2.14023160147296 +22 +1.07221092057491 +32 +3.0 +13 +2.14023160147296 +23 +1.07221092057491 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.07221092057491 +30 +1.5 +11 +2.17907937354823 +21 +1.13702451264398 +31 +3.0 +12 +2.17907937354823 +22 +1.13702451264398 +32 +1.5 +13 +2.17907937354823 +23 +1.13702451264398 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.859768398527041 +20 +1.07221092057491 +30 +1.5 +11 +0.904781950910692 +21 +1.01151717119399 +31 +1.31838984174237e-15 +12 +0.904781950910694 +22 +1.01151717119399 +32 +1.5 +13 +0.904781950910694 +23 +1.01151717119399 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.904781950910692 +20 +1.01151717119399 +30 +1.31838984174237e-15 +11 +0.859768398527041 +21 +1.07221092057491 +31 +1.5 +12 +0.859768398527041 +22 +1.07221092057491 +32 +8.74300631892311e-16 +13 +0.859768398527041 +23 +1.07221092057491 +33 +8.74300631892311e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.42452680194624 +20 +2.26629223953759 +30 +3.0 +11 +1.34978045204758 +21 +2.25520466591049 +31 +1.5 +12 +1.42452680194624 +22 +2.26629223953759 +32 +1.5 +13 +1.42452680194624 +23 +2.26629223953759 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.34978045204758 +20 +2.25520466591049 +30 +1.5 +11 +1.42452680194624 +21 +2.26629223953759 +31 +3.0 +12 +1.34978045204758 +22 +2.25520466591049 +32 +3.0 +13 +1.34978045204758 +23 +2.25520466591049 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.09521804908931 +20 +1.01151717119399 +30 +3.0 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +2.04447222151364 +22 +0.955527778486358 +32 +3.0 +13 +2.04447222151364 +23 +0.955527778486358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +2.09521804908931 +21 +1.01151717119399 +31 +3.0 +12 +2.09521804908931 +22 +1.01151717119399 +32 +1.5 +13 +2.09521804908931 +23 +1.01151717119399 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.2368440585138 +20 +1.72351920148594 +30 +3.0 +11 +2.25520466591049 +21 +1.65021954795242 +31 +1.5 +12 +2.25520466591049 +22 +1.65021954795242 +32 +3.0 +13 +2.25520466591049 +23 +1.65021954795242 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.65021954795242 +30 +1.5 +11 +2.2368440585138 +21 +1.72351920148594 +31 +3.0 +12 +2.2368440585138 +22 +1.72351920148594 +32 +1.5 +13 +2.2368440585138 +23 +1.72351920148594 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.13702451264398 +20 +0.820920626451767 +30 +1.5 +11 +1.20533375707888 +21 +0.788612759966309 +31 +3.0 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +0.788612759966309 +30 +3.0 +11 +1.13702451264398 +21 +0.820920626451767 +31 +1.5 +12 +1.13702451264398 +22 +0.820920626451767 +32 +3.0 +13 +1.13702451264398 +23 +0.820920626451767 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.72351920148594 +20 +2.2368440585138 +30 +-5.27355936696949e-16 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.79466624292112 +22 +2.21138724003369 +32 +-1.4432899320127e-15 +13 +1.79466624292112 +23 +2.21138724003369 +33 +-1.4432899320127e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +2.21138724003369 +30 +1.5 +11 +1.72351920148594 +21 +2.2368440585138 +31 +-5.27355936696949e-16 +12 +1.72351920148594 +22 +2.2368440585138 +32 +1.5 +13 +1.72351920148594 +23 +2.2368440585138 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +0.955527778486358 +30 +1.5 +11 +1.01151717119399 +21 +0.904781950910693 +31 +3.0 +12 +1.01151717119399 +22 +0.904781950910693 +32 +1.5 +13 +1.01151717119399 +23 +0.904781950910693 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +0.904781950910693 +30 +3.0 +11 +0.955527778486359 +21 +0.955527778486358 +31 +1.5 +12 +0.955527778486358 +22 +0.955527778486358 +32 +3.0 +13 +0.955527778486358 +23 +0.955527778486358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +6.93889390390723e-16 +11 +1.5 +21 +2.27 +31 +1.5 +12 +1.5 +22 +2.27 +32 +6.93889390390723e-16 +13 +1.5 +23 +2.27 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +2.27 +30 +1.5 +11 +1.5 +21 +3.0 +31 +6.93889390390723e-16 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +2.27 +30 +3.0 +11 +1.5 +21 +3.0 +31 +6.93889390390723e-16 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +6.93889390390723e-16 +12 +1.5 +22 +3.0 +32 +0.204999999999999 +13 +1.5 +23 +3.0 +33 +0.204999999999999 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +0.204999999999999 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.763155941486199 +20 +1.72351920148594 +30 +1.5 +11 +0.744795334089513 +21 +1.65021954795242 +31 +4.71844785465692e-16 +12 +0.744795334089513 +22 +1.65021954795242 +32 +1.5 +13 +0.744795334089513 +23 +1.65021954795242 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.744795334089513 +20 +1.65021954795242 +30 +4.71844785465692e-16 +11 +0.763155941486199 +21 +1.72351920148594 +31 +1.5 +12 +0.7631559414862 +22 +1.72351920148594 +32 +-2.77555756156289e-17 +13 +0.7631559414862 +23 +1.72351920148594 +33 +-2.77555756156289e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.820920626451766 +20 +1.86297548735602 +30 +1.5 +11 +0.788612759966309 +21 +1.79466624292112 +31 +3.0 +12 +0.78861275996631 +22 +1.79466624292112 +32 +1.5 +13 +0.78861275996631 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.788612759966309 +20 +1.79466624292112 +30 +3.0 +11 +0.820920626451766 +21 +1.86297548735602 +31 +1.5 +12 +0.820920626451767 +22 +1.86297548735602 +32 +3.0 +13 +0.820920626451767 +23 +1.86297548735602 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.98848282880601 +20 +2.09521804908931 +30 +1.5 +11 +1.92778907942509 +21 +2.14023160147296 +31 +3.0 +12 +1.92778907942509 +22 +2.14023160147296 +32 +1.5 +13 +1.92778907942509 +23 +2.14023160147296 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +2.14023160147296 +30 +3.0 +11 +1.98848282880601 +21 +2.09521804908931 +31 +1.5 +12 +1.98848282880601 +22 +2.09521804908931 +32 +3.0 +13 +1.98848282880601 +23 +2.09521804908931 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486358 +20 +0.955527778486358 +30 +3.0 +11 +1.19348975147204e-15 +21 +0.0 +31 +2.795 +12 +2.77555756156289e-16 +22 +0.0 +32 +3.0 +13 +2.77555756156289e-16 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.0 +30 +2.795 +11 +0.955527778486358 +21 +0.955527778486358 +31 +3.0 +12 +1.19348975147204e-15 +22 +0.0 +32 +1.5 +13 +1.19348975147204e-15 +23 +0.0 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.0 +30 +1.5 +11 +0.955527778486358 +21 +0.955527778486358 +31 +3.0 +12 +1.19348975147204e-15 +22 +0.0 +32 +0.204999999999999 +13 +1.19348975147204e-15 +23 +0.0 +33 +0.204999999999999 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.0 +30 +0.204999999999999 +11 +0.955527778486358 +21 +0.955527778486358 +31 +3.0 +12 +1.19348975147204e-15 +22 +0.0 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +0.0 +33 +-1.16573417585641e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.0 +30 +-1.16573417585641e-15 +11 +0.955527778486358 +21 +0.955527778486358 +31 +3.0 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.20736753927986e-15 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.20736753927986e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +0.955527778486358 +30 +1.20736753927986e-15 +11 +0.955527778486358 +21 +0.955527778486358 +31 +3.0 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.0 +30 +1.19348975147204e-15 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +2.04447222151364 +22 +0.955527778486358 +32 +-1.11022302462516e-16 +13 +2.04447222151364 +23 +0.955527778486358 +33 +-1.11022302462516e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +3.0 +21 +0.0 +31 +1.19348975147204e-15 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.04447222151364 +22 +0.955527778486358 +32 +3.0 +13 +2.04447222151364 +23 +0.955527778486358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +1.11022302462516e-16 +30 +-6.80011602582908e-16 +11 +2.12132034355964 +21 +5.55111512312578e-17 +31 +0.826320343559641 +12 +2.12132034355964 +22 +5.55111512312578e-17 +32 +0.204999999999999 +13 +2.12132034355964 +23 +5.55111512312578e-17 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +5.55111512312578e-17 +30 +0.826320343559641 +11 +2.12132034355964 +21 +1.11022302462516e-16 +31 +-6.80011602582908e-16 +12 +2.12132034355964 +22 +5.55111512312578e-17 +32 +2.17367965644036 +13 +2.12132034355964 +23 +5.55111512312578e-17 +33 +2.17367965644036 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +5.55111512312578e-17 +30 +2.17367965644036 +11 +2.12132034355964 +21 +1.11022302462516e-16 +31 +-6.80011602582908e-16 +12 +2.12132034355964 +22 +5.55111512312578e-17 +32 +2.795 +13 +2.12132034355964 +23 +5.55111512312578e-17 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +5.55111512312578e-17 +30 +2.795 +11 +2.12132034355964 +21 +1.11022302462516e-16 +31 +-6.80011602582908e-16 +12 +2.12132034355964 +22 +1.11022302462516e-16 +32 +3.0 +13 +2.12132034355964 +23 +1.11022302462516e-16 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +1.11022302462516e-16 +30 +3.0 +11 +2.12132034355964 +21 +1.11022302462516e-16 +31 +-6.80011602582908e-16 +12 +1.79466624292112 +22 +0.788612759966309 +32 +-1.38777878078145e-16 +13 +1.79466624292112 +23 +0.788612759966309 +33 +-1.38777878078145e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +1.11022302462516e-16 +30 +3.0 +11 +1.79466624292112 +21 +0.788612759966309 +31 +-1.38777878078145e-16 +12 +1.79466624292112 +22 +0.788612759966309 +32 +3.0 +13 +1.79466624292112 +23 +0.788612759966309 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +3.0 +11 +1.79466624292112 +21 +0.788612759966309 +31 +-1.38777878078145e-16 +12 +1.79466624292112 +22 +0.788612759966309 +32 +1.5 +13 +1.79466624292112 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.26629223953759 +20 +1.42452680194624 +30 +-1.11022302462516e-16 +11 +2.25520466591049 +21 +1.34978045204758 +31 +1.5 +12 +2.25520466591049 +22 +1.34978045204758 +32 +-1.2490009027033e-15 +13 +2.25520466591049 +23 +1.34978045204758 +33 +-1.2490009027033e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.34978045204758 +30 +1.5 +11 +2.26629223953759 +21 +1.42452680194624 +31 +-1.11022302462516e-16 +12 +2.26629223953759 +22 +1.42452680194624 +32 +1.5 +13 +2.26629223953759 +23 +1.42452680194624 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +-2.35922392732846e-16 +11 +2.26629223953759 +21 +1.42452680194624 +31 +1.5 +12 +2.26629223953759 +22 +1.42452680194624 +32 +-1.11022302462516e-16 +13 +2.26629223953759 +23 +1.42452680194624 +33 +-1.11022302462516e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.26629223953759 +20 +1.42452680194624 +30 +1.5 +11 +2.27 +21 +1.5 +31 +-2.35922392732846e-16 +12 +2.27 +22 +1.5 +32 +1.5 +13 +2.27 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.34978045204758 +30 +-1.2490009027033e-15 +11 +2.2368440585138 +21 +1.27648079851406 +31 +1.5 +12 +2.2368440585138 +22 +1.27648079851406 +32 +-1.06858966120171e-15 +13 +2.2368440585138 +23 +1.27648079851406 +33 +-1.06858966120171e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.2368440585138 +20 +1.27648079851406 +30 +1.5 +11 +2.25520466591049 +21 +1.34978045204758 +31 +-1.2490009027033e-15 +12 +2.25520466591049 +22 +1.34978045204758 +32 +1.5 +13 +2.25520466591049 +23 +1.34978045204758 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +2.09521804908931 +22 +1.01151717119399 +32 +1.5 +13 +2.09521804908931 +23 +1.01151717119399 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +2.09521804908931 +21 +1.01151717119399 +31 +1.5 +12 +2.14023160147296 +22 +1.07221092057491 +32 +1.5 +13 +2.14023160147296 +23 +1.07221092057491 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +2.14023160147296 +21 +1.07221092057491 +31 +1.5 +12 +2.17907937354823 +22 +1.13702451264398 +32 +1.5 +13 +2.17907937354823 +23 +1.13702451264398 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.73370776046241 +20 +1.42452680194624 +30 +1.5 +11 +0.744795334089513 +21 +1.34978045204758 +31 +3.0 +12 +0.744795334089513 +22 +1.34978045204758 +32 +1.5 +13 +0.744795334089513 +23 +1.34978045204758 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.744795334089513 +20 +1.34978045204758 +30 +3.0 +11 +0.73370776046241 +21 +1.42452680194624 +31 +1.5 +12 +0.733707760462408 +22 +1.42452680194624 +32 +3.0 +13 +0.733707760462408 +23 +1.42452680194624 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.820920626451766 +20 +1.13702451264398 +30 +1.5 +11 +0.859768398527041 +21 +1.07221092057491 +31 +8.74300631892311e-16 +12 +0.859768398527041 +22 +1.07221092057491 +32 +1.5 +13 +0.859768398527041 +23 +1.07221092057491 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.859768398527041 +20 +1.07221092057491 +30 +8.74300631892311e-16 +11 +0.820920626451766 +21 +1.13702451264398 +31 +1.5 +12 +0.820920626451768 +22 +1.13702451264398 +32 +1.65145674912992e-15 +13 +0.820920626451768 +23 +1.13702451264398 +33 +1.65145674912992e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440357 +20 +3.0 +30 +3.0 +11 +1.20533375707888 +21 +2.21138724003369 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +3.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +2.21138724003369 +30 +1.5 +11 +0.878679656440357 +21 +3.0 +31 +3.0 +12 +1.20533375707888 +22 +2.21138724003369 +32 +-5.68989300120393e-16 +13 +1.20533375707888 +23 +2.21138724003369 +33 +-5.68989300120393e-16 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +2.21138724003369 +30 +-5.68989300120393e-16 +11 +0.878679656440357 +21 +3.0 +31 +3.0 +12 +0.878679656440358 +22 +3.0 +32 +9.29811783123569e-16 +13 +0.878679656440358 +23 +3.0 +33 +9.29811783123569e-16 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.878679656440358 +20 +3.0 +30 +9.29811783123569e-16 +11 +0.878679656440357 +21 +3.0 +31 +3.0 +12 +0.878679656440357 +22 +3.0 +32 +2.795 +13 +0.878679656440357 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +star_d +10 +0.878679656440358 +20 +3.0 +30 +9.29811783123569e-16 +11 +0.878679656440357 +21 +3.0 +31 +2.795 +12 +0.878679656440357 +22 +3.0 +32 +2.17367965644036 +13 +0.878679656440357 +23 +3.0 +33 +2.17367965644036 +70 +13 + 0 +3DFACE + 8 +star_d +10 +0.878679656440358 +20 +3.0 +30 +9.29811783123569e-16 +11 +0.878679656440357 +21 +3.0 +31 +2.17367965644036 +12 +0.878679656440358 +22 +3.0 +32 +0.826320343559643 +13 +0.878679656440358 +23 +3.0 +33 +0.826320343559643 +70 +13 + 0 +3DFACE + 8 +star_d +10 +0.878679656440358 +20 +3.0 +30 +9.29811783123569e-16 +11 +0.878679656440358 +21 +3.0 +31 +0.826320343559643 +12 +0.878679656440358 +22 +3.0 +32 +0.204999999999999 +13 +0.878679656440358 +23 +3.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +3.0 +21 +0.878679656440356 +31 +1.19348975147204e-15 +12 +2.21138724003369 +22 +1.20533375707888 +32 +-6.66133814775094e-16 +13 +2.21138724003369 +23 +1.20533375707888 +33 +-6.66133814775094e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.878679656440356 +30 +1.19348975147204e-15 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +3.0 +22 +0.878679656440356 +32 +3.0 +13 +3.0 +23 +0.878679656440356 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.878679656440356 +30 +3.0 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +2.21138724003369 +22 +1.20533375707888 +32 +3.0 +13 +2.21138724003369 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +1.5 +30 +1.19348975147204e-15 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.27 +22 +1.5 +32 +-2.35922392732846e-16 +13 +2.27 +23 +1.5 +33 +-2.35922392732846e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.5 +31 +1.19348975147204e-15 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.5 +31 +3.0 +12 +2.27 +22 +1.5 +32 +3.0 +13 +2.27 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.78861275996631 +20 +1.20533375707888 +30 +2.77555756156289e-17 +11 +2.77555756156289e-16 +21 +0.878679656440358 +31 +3.0 +12 +1.19348975147204e-15 +22 +0.878679656440358 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +0.878679656440358 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +0.878679656440358 +30 +3.0 +11 +0.78861275996631 +21 +1.20533375707888 +31 +2.77555756156289e-17 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +0.878679656440358 +30 +3.0 +11 +0.788612759966309 +21 +1.20533375707888 +31 +1.5 +12 +0.788612759966309 +22 +1.20533375707888 +32 +3.0 +13 +0.788612759966309 +23 +1.20533375707888 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +0.904781950910693 +30 +3.0 +11 +1.07221092057491 +21 +0.85976839852704 +31 +1.5 +12 +1.01151717119399 +22 +0.904781950910693 +32 +1.5 +13 +1.01151717119399 +23 +0.904781950910693 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.07221092057491 +20 +0.85976839852704 +30 +1.5 +11 +1.01151717119399 +21 +0.904781950910693 +31 +3.0 +12 +1.07221092057491 +22 +0.85976839852704 +32 +3.0 +13 +1.07221092057491 +23 +0.85976839852704 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.17907937354823 +20 +1.86297548735602 +30 +-1.2490009027033e-16 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +2.21138724003369 +22 +1.79466624292112 +32 +-6.66133814775094e-16 +13 +2.21138724003369 +23 +1.79466624292112 +33 +-6.66133814775094e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +2.17907937354823 +21 +1.86297548735602 +31 +-1.2490009027033e-16 +12 +2.17907937354823 +22 +1.86297548735602 +32 +1.5 +13 +2.17907937354823 +23 +1.86297548735602 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.98848282880601 +20 +0.904781950910692 +30 +-1.66533453693773e-16 +11 +1.92778907942509 +21 +0.85976839852704 +31 +1.5 +12 +1.92778907942509 +22 +0.85976839852704 +32 +-1.02695629777827e-15 +13 +1.92778907942509 +23 +0.85976839852704 +33 +-1.02695629777827e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +0.85976839852704 +30 +1.5 +11 +1.98848282880601 +21 +0.904781950910692 +31 +-1.66533453693773e-16 +12 +1.98848282880601 +22 +0.904781950910692 +32 +1.5 +13 +1.98848282880601 +23 +0.904781950910692 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.27648079851406 +20 +2.2368440585138 +30 +3.0 +11 +1.20533375707888 +21 +2.21138724003369 +31 +1.5 +12 +1.27648079851406 +22 +2.2368440585138 +32 +1.5 +13 +1.27648079851406 +23 +2.2368440585138 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +2.21138724003369 +30 +1.5 +11 +1.27648079851406 +21 +2.2368440585138 +31 +3.0 +12 +1.20533375707888 +22 +2.21138724003369 +32 +3.0 +13 +1.20533375707888 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.744795334089513 +20 +1.34978045204758 +30 +1.5 +11 +0.763155941486199 +21 +1.27648079851406 +31 +3.0 +12 +0.763155941486199 +22 +1.27648079851406 +32 +1.5 +13 +0.763155941486199 +23 +1.27648079851406 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.763155941486199 +20 +1.27648079851406 +30 +3.0 +11 +0.744795334089513 +21 +1.34978045204758 +31 +1.5 +12 +0.744795334089513 +22 +1.34978045204758 +32 +3.0 +13 +0.744795334089513 +23 +1.34978045204758 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.72351920148594 +20 +0.763155941486199 +30 +3.0 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.72351920148594 +22 +0.763155941486199 +32 +1.5 +13 +1.72351920148594 +23 +0.763155941486199 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +1.72351920148594 +21 +0.763155941486199 +31 +3.0 +12 +1.79466624292112 +22 +0.788612759966309 +32 +3.0 +13 +1.79466624292112 +23 +0.788612759966309 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +3.0 +11 +1.98848282880601 +21 +2.09521804908931 +31 +1.5 +12 +2.04447222151364 +22 +2.04447222151364 +32 +1.5 +13 +2.04447222151364 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.98848282880601 +20 +2.09521804908931 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +3.0 +12 +1.98848282880601 +22 +2.09521804908931 +32 +3.0 +13 +1.98848282880601 +23 +2.09521804908931 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.65021954795242 +20 +0.744795334089513 +30 +3.0 +11 +1.72351920148594 +21 +0.763155941486199 +31 +1.5 +12 +1.65021954795242 +22 +0.744795334089513 +32 +1.5 +13 +1.65021954795242 +23 +0.744795334089513 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.72351920148594 +20 +0.763155941486199 +30 +1.5 +11 +1.65021954795242 +21 +0.744795334089513 +31 +3.0 +12 +1.72351920148594 +22 +0.763155941486199 +32 +3.0 +13 +1.72351920148594 +23 +0.763155941486199 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +0.733707760462408 +30 +1.5 +11 +1.65021954795242 +21 +0.744795334089513 +31 +3.0 +12 +1.65021954795242 +22 +0.744795334089513 +32 +1.5 +13 +1.65021954795242 +23 +0.744795334089513 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.65021954795242 +20 +0.744795334089513 +30 +3.0 +11 +1.57547319805376 +21 +0.733707760462408 +31 +1.5 +12 +1.57547319805376 +22 +0.733707760462408 +32 +3.0 +13 +1.57547319805376 +23 +0.733707760462408 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +2.27 +30 +1.5 +11 +1.42452680194624 +21 +2.26629223953759 +31 +3.0 +12 +1.42452680194624 +22 +2.26629223953759 +32 +1.5 +13 +1.42452680194624 +23 +2.26629223953759 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.42452680194624 +20 +2.26629223953759 +30 +3.0 +11 +1.5 +21 +2.27 +31 +1.5 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.34978045204758 +20 +2.25520466591049 +30 +3.0 +11 +1.27648079851406 +21 +2.2368440585138 +31 +1.5 +12 +1.34978045204758 +22 +2.25520466591049 +32 +1.5 +13 +1.34978045204758 +23 +2.25520466591049 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.27648079851406 +20 +2.2368440585138 +30 +1.5 +11 +1.34978045204758 +21 +2.25520466591049 +31 +3.0 +12 +1.27648079851406 +22 +2.2368440585138 +32 +3.0 +13 +1.27648079851406 +23 +2.2368440585138 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.729999999999999 +20 +1.5 +30 +1.5 +11 +0.733707760462408 +21 +1.42452680194624 +31 +3.0 +12 +0.73370776046241 +22 +1.42452680194624 +32 +1.5 +13 +0.73370776046241 +23 +1.42452680194624 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.733707760462408 +20 +1.42452680194624 +30 +3.0 +11 +0.729999999999999 +21 +1.5 +31 +1.5 +12 +0.73 +22 +1.5 +32 +3.0 +13 +0.73 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.65021954795242 +30 +3.0 +11 +2.26629223953759 +21 +1.57547319805376 +31 +1.5 +12 +2.26629223953759 +22 +1.57547319805376 +32 +3.0 +13 +2.26629223953759 +23 +1.57547319805376 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.26629223953759 +20 +1.57547319805376 +30 +1.5 +11 +2.25520466591049 +21 +1.65021954795242 +31 +3.0 +12 +2.25520466591049 +22 +1.65021954795242 +32 +1.5 +13 +2.25520466591049 +23 +1.65021954795242 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.42452680194624 +20 +0.733707760462408 +30 +1.5 +11 +1.34978045204758 +21 +0.744795334089513 +31 +-4.02455846426619e-16 +12 +1.42452680194624 +22 +0.733707760462408 +32 +-6.93889390390723e-16 +13 +1.42452680194624 +23 +0.733707760462408 +33 +-6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.34978045204758 +20 +0.744795334089513 +30 +-4.02455846426619e-16 +11 +1.42452680194624 +21 +0.733707760462408 +31 +1.5 +12 +1.34978045204758 +22 +0.744795334089513 +32 +1.5 +13 +1.34978045204758 +23 +0.744795334089513 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +3.0 +11 +2.17907937354823 +21 +1.13702451264398 +31 +1.5 +12 +2.17907937354823 +22 +1.13702451264398 +32 +3.0 +13 +2.17907937354823 +23 +1.13702451264398 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.17907937354823 +20 +1.13702451264398 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +3.0 +12 +2.21138724003369 +22 +1.20533375707888 +32 +1.5 +13 +2.21138724003369 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.73 +30 +3.0 +11 +1.57547319805376 +21 +0.733707760462408 +31 +1.5 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +0.733707760462408 +30 +1.5 +11 +1.5 +21 +0.73 +31 +3.0 +12 +1.57547319805376 +22 +0.733707760462408 +32 +3.0 +13 +1.57547319805376 +23 +0.733707760462408 +33 +3.0 +70 +1 + 0 +LINE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.878679656440358 +30 +-1.16573417585641e-15 +11 +-0.00250198874351172 +21 +0.87764329876989 +31 +-1.47104550762833e-15 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +-1.11022302462516e-16 +11 +1.98848282880601 +21 +0.904781950910692 +31 +1.5 +12 +1.98848282880601 +22 +0.904781950910692 +32 +-1.66533453693773e-16 +13 +1.98848282880601 +23 +0.904781950910692 +33 +-1.66533453693773e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.98848282880601 +20 +0.904781950910692 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +-1.11022302462516e-16 +12 +2.04447222151364 +22 +0.955527778486358 +32 +1.5 +13 +2.04447222151364 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.73 +30 +6.93889390390723e-16 +11 +1.42452680194624 +21 +0.733707760462408 +31 +1.5 +12 +1.42452680194624 +22 +0.733707760462408 +32 +-6.93889390390723e-16 +13 +1.42452680194624 +23 +0.733707760462408 +33 +-6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.42452680194624 +20 +0.733707760462408 +30 +1.5 +11 +1.5 +21 +0.73 +31 +6.93889390390723e-16 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.744795334089513 +20 +1.65021954795242 +30 +1.5 +11 +0.733707760462409 +21 +1.57547319805376 +31 +4.16333634234434e-16 +12 +0.73370776046241 +22 +1.57547319805376 +32 +1.5 +13 +0.73370776046241 +23 +1.57547319805376 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.733707760462409 +20 +1.57547319805376 +30 +4.16333634234434e-16 +11 +0.744795334089513 +21 +1.65021954795242 +31 +1.5 +12 +0.744795334089513 +22 +1.65021954795242 +32 +4.71844785465692e-16 +13 +0.744795334089513 +23 +1.65021954795242 +33 +4.71844785465692e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.78861275996631 +20 +1.79466624292112 +30 +1.5 +11 +0.7631559414862 +21 +1.72351920148594 +31 +-2.77555756156289e-17 +12 +0.763155941486199 +22 +1.72351920148594 +32 +1.5 +13 +0.763155941486199 +23 +1.72351920148594 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.7631559414862 +20 +1.72351920148594 +30 +-2.77555756156289e-17 +11 +0.78861275996631 +21 +1.79466624292112 +31 +1.5 +12 +0.78861275996631 +22 +1.79466624292112 +32 +2.77555756156289e-17 +13 +0.78861275996631 +23 +1.79466624292112 +33 +2.77555756156289e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.34978045204758 +20 +0.744795334089513 +30 +1.5 +11 +1.27648079851406 +21 +0.763155941486199 +31 +1.1518563880486e-15 +12 +1.34978045204758 +22 +0.744795334089513 +32 +-4.02455846426619e-16 +13 +1.34978045204758 +23 +0.744795334089513 +33 +-4.02455846426619e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.27648079851406 +20 +0.763155941486199 +30 +1.1518563880486e-15 +11 +1.34978045204758 +21 +0.744795334089513 +31 +1.5 +12 +1.27648079851406 +22 +0.763155941486199 +32 +1.5 +13 +1.27648079851406 +23 +0.763155941486199 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +-1.11022302462516e-16 +11 +2.09521804908931 +21 +1.98848282880601 +31 +1.5 +12 +2.09521804908931 +22 +1.98848282880601 +32 +7.63278329429795e-16 +13 +2.09521804908931 +23 +1.98848282880601 +33 +7.63278329429795e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.09521804908931 +20 +1.98848282880601 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +-1.11022302462516e-16 +12 +2.04447222151364 +22 +2.04447222151364 +32 +1.5 +13 +2.04447222151364 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +LINE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +-7.35522753814166e-16 +11 +0.878127111942354 +21 +-0.0013339604208924 +31 +1.42941214420489e-15 + 0 +3DFACE + 8 +star_d +10 +0.904781950910694 +20 +1.01151717119399 +30 +1.5 +11 +0.955527778486359 +21 +0.955527778486358 +31 +1.20736753927986e-15 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +0.955527778486358 +30 +1.20736753927986e-15 +11 +0.904781950910694 +21 +1.01151717119399 +31 +1.5 +12 +0.904781950910692 +22 +1.01151717119399 +32 +1.31838984174237e-15 +13 +0.904781950910692 +23 +1.01151717119399 +33 +1.31838984174237e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.65021954795242 +20 +2.25520466591049 +30 +-3.60822483003176e-16 +11 +1.72351920148594 +21 +2.2368440585138 +31 +1.5 +12 +1.72351920148594 +22 +2.2368440585138 +32 +-5.27355936696949e-16 +13 +1.72351920148594 +23 +2.2368440585138 +33 +-5.27355936696949e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.72351920148594 +20 +2.2368440585138 +30 +1.5 +11 +1.65021954795242 +21 +2.25520466591049 +31 +-3.60822483003176e-16 +12 +1.65021954795242 +22 +2.25520466591049 +32 +1.5 +13 +1.65021954795242 +23 +2.25520466591049 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.73370776046241 +20 +1.57547319805376 +30 +1.5 +11 +0.73 +21 +1.5 +31 +7.07767178198537e-16 +12 +0.729999999999999 +22 +1.5 +32 +1.5 +13 +0.729999999999999 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.73 +20 +1.5 +30 +7.07767178198537e-16 +11 +0.73370776046241 +21 +1.57547319805376 +31 +1.5 +12 +0.733707760462409 +22 +1.57547319805376 +32 +4.16333634234434e-16 +13 +0.733707760462409 +23 +1.57547319805376 +33 +4.16333634234434e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +3.0 +30 +1.19348975147204e-15 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +2.04447222151364 +22 +2.04447222151364 +32 +-1.11022302462516e-16 +13 +2.04447222151364 +23 +2.04447222151364 +33 +-1.11022302462516e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +3.0 +21 +3.0 +31 +1.19348975147204e-15 +12 +3.0 +22 +3.0 +32 +0.204999999999999 +13 +3.0 +23 +3.0 +33 +0.204999999999999 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.204999999999999 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +3.0 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +3.0 +21 +3.0 +31 +2.795 +12 +2.04447222151364 +22 +2.04447222151364 +32 +3.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +3.0 +11 +3.0 +21 +3.0 +31 +2.795 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.92778907942509 +30 +-9.71445146547012e-16 +11 +2.17907937354823 +21 +1.86297548735602 +31 +1.5 +12 +2.17907937354823 +22 +1.86297548735602 +32 +-1.2490009027033e-16 +13 +2.17907937354823 +23 +1.86297548735602 +33 +-1.2490009027033e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.17907937354823 +20 +1.86297548735602 +30 +1.5 +11 +2.14023160147296 +21 +1.92778907942509 +31 +-9.71445146547012e-16 +12 +2.14023160147296 +22 +1.92778907942509 +32 +1.5 +13 +2.14023160147296 +23 +1.92778907942509 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.2368440585138 +20 +1.27648079851406 +30 +-1.06858966120171e-15 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +2.21138724003369 +22 +1.20533375707888 +32 +-6.66133814775094e-16 +13 +2.21138724003369 +23 +1.20533375707888 +33 +-6.66133814775094e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +2.2368440585138 +21 +1.27648079851406 +31 +-1.06858966120171e-15 +12 +2.2368440585138 +22 +1.27648079851406 +32 +1.5 +13 +2.2368440585138 +23 +1.27648079851406 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +1.5 +30 +3.0 +11 +0.73 +21 +1.5 +31 +7.07767178198537e-16 +12 +1.19348975147204e-15 +22 +1.5 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +1.5 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.73 +20 +1.5 +30 +7.07767178198537e-16 +11 +2.77555756156289e-16 +21 +1.5 +31 +3.0 +12 +0.729999999999999 +22 +1.5 +32 +1.5 +13 +0.729999999999999 +23 +1.5 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.729999999999999 +20 +1.5 +30 +1.5 +11 +2.77555756156289e-16 +21 +1.5 +31 +3.0 +12 +0.73 +22 +1.5 +32 +3.0 +13 +0.73 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.07221092057491 +20 +0.85976839852704 +30 +3.0 +11 +1.13702451264398 +21 +0.820920626451767 +31 +1.5 +12 +1.07221092057491 +22 +0.85976839852704 +32 +1.5 +13 +1.07221092057491 +23 +0.85976839852704 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.13702451264398 +20 +0.820920626451767 +30 +1.5 +11 +1.07221092057491 +21 +0.85976839852704 +31 +3.0 +12 +1.13702451264398 +22 +0.820920626451767 +32 +3.0 +13 +1.13702451264398 +23 +0.820920626451767 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.763155941486199 +20 +1.27648079851406 +30 +1.5 +11 +0.788612759966309 +21 +1.20533375707888 +31 +3.0 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.788612759966309 +20 +1.20533375707888 +30 +3.0 +11 +0.763155941486199 +21 +1.27648079851406 +31 +1.5 +12 +0.763155941486199 +22 +1.27648079851406 +32 +3.0 +13 +0.763155941486199 +23 +1.27648079851406 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.904781950910694 +20 +1.98848282880601 +30 +1.5 +11 +0.859768398527041 +21 +1.92778907942509 +31 +3.0 +12 +0.859768398527041 +22 +1.92778907942509 +32 +1.5 +13 +0.859768398527041 +23 +1.92778907942509 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.859768398527041 +20 +1.92778907942509 +30 +3.0 +11 +0.904781950910694 +21 +1.98848282880601 +31 +1.5 +12 +0.904781950910692 +22 +1.98848282880601 +32 +3.0 +13 +0.904781950910692 +23 +1.98848282880601 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +0.788612759966309 +30 +2.63677968348475e-16 +11 +0.878679656440356 +21 +0.0 +31 +0.204999999999999 +12 +0.878679656440356 +22 +0.0 +32 +-7.35522753814166e-16 +13 +0.878679656440356 +23 +0.0 +33 +-7.35522753814166e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +0.204999999999999 +11 +1.20533375707888 +21 +0.788612759966309 +31 +2.63677968348475e-16 +12 +0.878679656440356 +22 +0.0 +32 +0.826320343559644 +13 +0.878679656440356 +23 +0.0 +33 +0.826320343559644 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +0.826320343559644 +11 +1.20533375707888 +21 +0.788612759966309 +31 +2.63677968348475e-16 +12 +0.878679656440356 +22 +0.0 +32 +2.17367965644035 +13 +0.878679656440356 +23 +0.0 +33 +2.17367965644035 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +2.17367965644035 +11 +1.20533375707888 +21 +0.788612759966309 +31 +2.63677968348475e-16 +12 +0.878679656440356 +22 +0.0 +32 +2.795 +13 +0.878679656440356 +23 +0.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +2.795 +11 +1.20533375707888 +21 +0.788612759966309 +31 +2.63677968348475e-16 +12 +0.878679656440356 +22 +0.0 +32 +3.0 +13 +0.878679656440356 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +3.0 +11 +1.20533375707888 +21 +0.788612759966309 +31 +2.63677968348475e-16 +12 +1.20533375707888 +22 +0.788612759966309 +32 +3.0 +13 +1.20533375707888 +23 +0.788612759966309 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +0.788612759966309 +30 +3.0 +11 +1.20533375707888 +21 +0.788612759966309 +31 +2.63677968348475e-16 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +1.20163144893051 +30 +1.19348975147204e-15 +11 +0.78861275996631 +21 +1.20533375707888 +31 +2.77555756156289e-17 +12 +1.19348975147204e-15 +22 +0.878679656440358 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +0.878679656440358 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.78861275996631 +20 +1.20533375707888 +30 +2.77555756156289e-17 +11 +1.33226762955019e-15 +21 +1.20163144893051 +31 +1.19348975147204e-15 +12 +0.7631559414862 +22 +1.27648079851406 +32 +-2.77555756156289e-17 +13 +0.7631559414862 +23 +1.27648079851406 +33 +-2.77555756156289e-17 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.7631559414862 +20 +1.27648079851406 +30 +-2.77555756156289e-17 +11 +1.33226762955019e-15 +21 +1.20163144893051 +31 +1.19348975147204e-15 +12 +0.744795334089513 +22 +1.34978045204758 +32 +4.71844785465692e-16 +13 +0.744795334089513 +23 +1.34978045204758 +33 +4.71844785465692e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +-1.11022302462516e-16 +11 +2.14023160147296 +21 +1.92778907942509 +31 +-9.71445146547012e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.92778907942509 +30 +-9.71445146547012e-16 +11 +2.04447222151364 +21 +2.04447222151364 +31 +-1.11022302462516e-16 +12 +2.09521804908931 +22 +1.98848282880601 +32 +7.63278329429795e-16 +13 +2.09521804908931 +23 +1.98848282880601 +33 +7.63278329429795e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.92778907942509 +30 +-9.71445146547012e-16 +11 +2.21138724003369 +21 +1.79466624292112 +31 +-6.66133814775094e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.79466624292112 +30 +-6.66133814775094e-16 +11 +2.14023160147296 +21 +1.92778907942509 +31 +-9.71445146547012e-16 +12 +2.17907937354823 +22 +1.86297548735602 +32 +-1.2490009027033e-16 +13 +2.17907937354823 +23 +1.86297548735602 +33 +-1.2490009027033e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.07221092057491 +20 +0.85976839852704 +30 +-1.38777878078145e-17 +11 +0.878679656440356 +21 +0.0 +31 +-7.35522753814166e-16 +12 +0.497732043121054 +22 +0.0 +32 +1.19348975147204e-15 +13 +0.497732043121054 +23 +0.0 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +-7.35522753814166e-16 +11 +1.07221092057491 +21 +0.85976839852704 +31 +-1.38777878078145e-17 +12 +1.13702451264398 +22 +0.820920626451767 +32 +8.18789480661053e-16 +13 +1.13702451264398 +23 +0.820920626451767 +33 +8.18789480661053e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +-7.35522753814166e-16 +11 +1.13702451264398 +21 +0.820920626451767 +31 +8.18789480661053e-16 +12 +1.20533375707888 +22 +0.788612759966309 +32 +2.63677968348475e-16 +13 +1.20533375707888 +23 +0.788612759966309 +33 +2.63677968348475e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.17907937354823 +20 +1.13702451264398 +30 +-1.2490009027033e-16 +11 +3.0 +21 +0.497732043121051 +31 +1.19348975147204e-15 +12 +2.14023160147296 +22 +1.07221092057491 +32 +-9.71445146547012e-16 +13 +2.14023160147296 +23 +1.07221092057491 +33 +-9.71445146547012e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.497732043121051 +30 +1.19348975147204e-15 +11 +2.17907937354823 +21 +1.13702451264398 +31 +-1.2490009027033e-16 +12 +2.21138724003369 +22 +1.20533375707888 +32 +-6.66133814775094e-16 +13 +2.21138724003369 +23 +1.20533375707888 +33 +-6.66133814775094e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.497732043121051 +30 +1.19348975147204e-15 +11 +2.21138724003369 +21 +1.20533375707888 +31 +-6.66133814775094e-16 +12 +3.0 +22 +0.878679656440356 +32 +1.19348975147204e-15 +13 +3.0 +23 +0.878679656440356 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +0.85976839852704 +30 +-1.02695629777827e-15 +11 +1.79466624292112 +21 +0.788612759966309 +31 +-1.38777878078145e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +-1.38777878078145e-16 +11 +1.92778907942509 +21 +0.85976839852704 +31 +-1.02695629777827e-15 +12 +1.86297548735602 +22 +0.820920626451767 +32 +1.58206781009085e-15 +13 +1.86297548735602 +23 +0.820920626451767 +33 +1.58206781009085e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +-1.38777878078145e-16 +11 +1.65021954795242 +21 +0.744795334089513 +31 +-3.60822483003176e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.65021954795242 +20 +0.744795334089513 +30 +-3.60822483003176e-16 +11 +1.79466624292112 +21 +0.788612759966309 +31 +-1.38777878078145e-16 +12 +1.72351920148594 +22 +0.763155941486199 +32 +-5.27355936696949e-16 +13 +1.72351920148594 +23 +0.763155941486199 +33 +-5.27355936696949e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.34978045204758 +30 +-1.2490009027033e-15 +11 +2.21138724003369 +21 +1.20533375707888 +31 +-6.66133814775094e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +-6.66133814775094e-16 +11 +2.25520466591049 +21 +1.34978045204758 +31 +-1.2490009027033e-15 +12 +2.2368440585138 +22 +1.27648079851406 +32 +-1.06858966120171e-15 +13 +2.2368440585138 +23 +1.27648079851406 +33 +-1.06858966120171e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.820920626451768 +20 +1.86297548735602 +30 +1.65145674912992e-15 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.78861275996631 +22 +1.79466624292112 +32 +2.77555756156289e-17 +13 +0.78861275996631 +23 +1.79466624292112 +33 +2.77555756156289e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.820920626451768 +21 +1.86297548735602 +31 +1.65145674912992e-15 +12 +0.859768398527041 +22 +1.92778907942509 +32 +8.74300631892311e-16 +13 +0.859768398527041 +23 +1.92778907942509 +33 +8.74300631892311e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.904781950910692 +20 +1.98848282880601 +30 +1.31838984174237e-15 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.859768398527041 +22 +1.92778907942509 +32 +8.74300631892311e-16 +13 +0.859768398527041 +23 +1.92778907942509 +33 +8.74300631892311e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.904781950910692 +21 +1.98848282880601 +31 +1.31838984174237e-15 +12 +0.955527778486359 +22 +2.04447222151364 +32 +1.20736753927986e-15 +13 +0.955527778486359 +23 +2.04447222151364 +33 +1.20736753927986e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.7631559414862 +20 +1.72351920148594 +30 +-2.77555756156289e-17 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.744795334089513 +22 +1.65021954795242 +32 +4.71844785465692e-16 +13 +0.744795334089513 +23 +1.65021954795242 +33 +4.71844785465692e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.7631559414862 +21 +1.72351920148594 +31 +-2.77555756156289e-17 +12 +0.78861275996631 +22 +1.79466624292112 +32 +2.77555756156289e-17 +13 +0.78861275996631 +23 +1.79466624292112 +33 +2.77555756156289e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +2.21138724003369 +30 +-1.4432899320127e-15 +11 +1.92778907942509 +21 +2.14023160147296 +31 +-1.02695629777827e-15 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +2.14023160147296 +30 +-1.02695629777827e-15 +11 +1.79466624292112 +21 +2.21138724003369 +31 +-1.4432899320127e-15 +12 +1.86297548735602 +22 +2.17907937354823 +32 +1.58206781009085e-15 +13 +1.86297548735602 +23 +2.17907937354823 +33 +1.58206781009085e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.65021954795242 +20 +2.25520466591049 +30 +-3.60822483003176e-16 +11 +1.79466624292112 +21 +2.21138724003369 +31 +-1.4432899320127e-15 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +2.21138724003369 +30 +-1.4432899320127e-15 +11 +1.65021954795242 +21 +2.25520466591049 +31 +-3.60822483003176e-16 +12 +1.72351920148594 +22 +2.2368440585138 +32 +-5.27355936696949e-16 +13 +1.72351920148594 +23 +2.2368440585138 +33 +-5.27355936696949e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.72351920148594 +20 +0.763155941486199 +30 +-5.27355936696949e-16 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +1.19348975147204e-15 +12 +1.65021954795242 +22 +0.744795334089513 +32 +-3.60822483003176e-16 +13 +1.65021954795242 +23 +0.744795334089513 +33 +-3.60822483003176e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +1.19348975147204e-15 +11 +1.72351920148594 +21 +0.763155941486199 +31 +-5.27355936696949e-16 +12 +1.79466624292112 +22 +0.788612759966309 +32 +-1.38777878078145e-16 +13 +1.79466624292112 +23 +0.788612759966309 +33 +-1.38777878078145e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +1.19348975147204e-15 +11 +1.79466624292112 +21 +0.788612759966309 +31 +-1.38777878078145e-16 +12 +2.12132034355964 +22 +1.11022302462516e-16 +32 +-6.80011602582908e-16 +13 +2.12132034355964 +23 +1.11022302462516e-16 +33 +-6.80011602582908e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.79466624292112 +30 +-6.66133814775094e-16 +11 +2.25520466591049 +21 +1.65021954795242 +31 +-1.2490009027033e-15 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.65021954795242 +30 +-1.2490009027033e-15 +11 +2.21138724003369 +21 +1.79466624292112 +31 +-6.66133814775094e-16 +12 +2.2368440585138 +22 +1.72351920148594 +32 +-1.06858966120171e-15 +13 +2.2368440585138 +23 +1.72351920148594 +33 +-1.06858966120171e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.65021954795242 +30 +-1.2490009027033e-15 +11 +2.27 +21 +1.5 +31 +-2.35922392732846e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +-2.35922392732846e-16 +11 +2.25520466591049 +21 +1.65021954795242 +31 +-1.2490009027033e-15 +12 +2.26629223953759 +22 +1.57547319805376 +32 +-1.11022302462516e-16 +13 +2.26629223953759 +23 +1.57547319805376 +33 +-1.11022302462516e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.01151717119399 +21 +0.904781950910693 +31 +6.38378239159465e-16 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.20736753927986e-15 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.20736753927986e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +0.904781950910693 +30 +6.38378239159465e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.07221092057491 +22 +0.85976839852704 +32 +-1.38777878078145e-17 +13 +1.07221092057491 +23 +0.85976839852704 +33 +-1.38777878078145e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.13702451264398 +21 +0.820920626451767 +31 +8.18789480661053e-16 +12 +1.07221092057491 +22 +0.85976839852704 +32 +-1.38777878078145e-17 +13 +1.07221092057491 +23 +0.85976839852704 +33 +-1.38777878078145e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.13702451264398 +20 +0.820920626451767 +30 +8.18789480661053e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.20533375707888 +22 +0.788612759966309 +32 +2.63677968348475e-16 +13 +1.20533375707888 +23 +0.788612759966309 +33 +2.63677968348475e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.733707760462409 +21 +1.42452680194624 +31 +4.16333634234434e-16 +12 +0.73 +22 +1.5 +32 +7.07767178198537e-16 +13 +0.73 +23 +1.5 +33 +7.07767178198537e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.733707760462409 +20 +1.42452680194624 +30 +4.16333634234434e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.744795334089513 +22 +1.34978045204758 +32 +4.71844785465692e-16 +13 +0.744795334089513 +23 +1.34978045204758 +33 +4.71844785465692e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.27648079851406 +21 +0.763155941486199 +31 +1.1518563880486e-15 +12 +1.20533375707888 +22 +0.788612759966309 +32 +2.63677968348475e-16 +13 +1.20533375707888 +23 +0.788612759966309 +33 +2.63677968348475e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.27648079851406 +20 +0.763155941486199 +30 +1.1518563880486e-15 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.34978045204758 +22 +0.744795334089513 +32 +-4.02455846426619e-16 +13 +1.34978045204758 +23 +0.744795334089513 +33 +-4.02455846426619e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.7631559414862 +21 +1.27648079851406 +31 +-2.77555756156289e-17 +12 +0.744795334089513 +22 +1.34978045204758 +32 +4.71844785465692e-16 +13 +0.744795334089513 +23 +1.34978045204758 +33 +4.71844785465692e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.7631559414862 +20 +1.27648079851406 +30 +-2.77555756156289e-17 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.78861275996631 +22 +1.20533375707888 +32 +2.77555756156289e-17 +13 +0.78861275996631 +23 +1.20533375707888 +33 +2.77555756156289e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.733707760462409 +20 +1.57547319805376 +30 +4.16333634234434e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.73 +22 +1.5 +32 +7.07767178198537e-16 +13 +0.73 +23 +1.5 +33 +7.07767178198537e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.733707760462409 +21 +1.57547319805376 +31 +4.16333634234434e-16 +12 +0.744795334089513 +22 +1.65021954795242 +32 +4.71844785465692e-16 +13 +0.744795334089513 +23 +1.65021954795242 +33 +4.71844785465692e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.820920626451768 +21 +1.13702451264398 +31 +1.65145674912992e-15 +12 +0.78861275996631 +22 +1.20533375707888 +32 +2.77555756156289e-17 +13 +0.78861275996631 +23 +1.20533375707888 +33 +2.77555756156289e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.820920626451768 +20 +1.13702451264398 +30 +1.65145674912992e-15 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.859768398527041 +22 +1.07221092057491 +32 +8.74300631892311e-16 +13 +0.859768398527041 +23 +1.07221092057491 +33 +8.74300631892311e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +-2.35922392732846e-16 +11 +2.25520466591049 +21 +1.34978045204758 +31 +-1.2490009027033e-15 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.34978045204758 +30 +-1.2490009027033e-15 +11 +2.27 +21 +1.5 +31 +-2.35922392732846e-16 +12 +2.26629223953759 +22 +1.42452680194624 +32 +-1.11022302462516e-16 +13 +2.26629223953759 +23 +1.42452680194624 +33 +-1.11022302462516e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.07221092057491 +30 +-9.71445146547012e-16 +11 +2.04447222151364 +21 +0.955527778486358 +31 +-1.11022302462516e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +-1.11022302462516e-16 +11 +2.14023160147296 +21 +1.07221092057491 +31 +-9.71445146547012e-16 +12 +2.09521804908931 +22 +1.01151717119399 +32 +7.63278329429795e-16 +13 +2.09521804908931 +23 +1.01151717119399 +33 +7.63278329429795e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +2.26629223953759 +30 +1.38777878078145e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.5 +22 +2.27 +32 +6.93889390390723e-16 +13 +1.5 +23 +2.27 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.57547319805376 +21 +2.26629223953759 +31 +1.38777878078145e-16 +12 +1.65021954795242 +22 +2.25520466591049 +32 +-3.60822483003176e-16 +13 +1.65021954795242 +23 +2.25520466591049 +33 +-3.60822483003176e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +2.09521804908931 +30 +6.38378239159465e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.955527778486359 +22 +2.04447222151364 +32 +1.20736753927986e-15 +13 +0.955527778486359 +23 +2.04447222151364 +33 +1.20736753927986e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.01151717119399 +21 +2.09521804908931 +31 +6.38378239159465e-16 +12 +1.07221092057491 +22 +2.14023160147296 +32 +3.19189119579733e-16 +13 +1.07221092057491 +23 +2.14023160147296 +33 +3.19189119579733e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.13702451264398 +20 +2.17907937354823 +30 +8.18789480661053e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.07221092057491 +22 +2.14023160147296 +32 +3.19189119579733e-16 +13 +1.07221092057491 +23 +2.14023160147296 +33 +3.19189119579733e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.13702451264398 +21 +2.17907937354823 +31 +8.18789480661053e-16 +12 +1.20533375707888 +22 +2.21138724003369 +32 +-5.68989300120393e-16 +13 +1.20533375707888 +23 +2.21138724003369 +33 +-5.68989300120393e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +-1.11022302462516e-16 +11 +1.92778907942509 +21 +0.85976839852704 +31 +-1.02695629777827e-15 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +0.85976839852704 +30 +-1.02695629777827e-15 +11 +2.04447222151364 +21 +0.955527778486358 +31 +-1.11022302462516e-16 +12 +1.98848282880601 +22 +0.904781950910692 +32 +-1.66533453693773e-16 +13 +1.98848282880601 +23 +0.904781950910692 +33 +-1.66533453693773e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.27648079851407 +20 +2.2368440585138 +30 +-1.80411241501588e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.20533375707888 +22 +2.21138724003369 +32 +-5.68989300120393e-16 +13 +1.20533375707888 +23 +2.21138724003369 +33 +-5.68989300120393e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.27648079851407 +21 +2.2368440585138 +31 +-1.80411241501588e-16 +12 +1.34978045204758 +22 +2.25520466591049 +32 +-4.02455846426619e-16 +13 +1.34978045204758 +23 +2.25520466591049 +33 +-4.02455846426619e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.42452680194624 +20 +2.26629223953759 +30 +-6.93889390390723e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.34978045204758 +22 +2.25520466591049 +32 +-4.02455846426619e-16 +13 +1.34978045204758 +23 +2.25520466591049 +33 +-4.02455846426619e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.42452680194624 +21 +2.26629223953759 +31 +-6.93889390390723e-16 +12 +1.5 +22 +2.27 +32 +6.93889390390723e-16 +13 +1.5 +23 +2.27 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +-6.66133814775094e-16 +11 +2.14023160147296 +21 +1.07221092057491 +31 +-9.71445146547012e-16 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.07221092057491 +30 +-9.71445146547012e-16 +11 +2.21138724003369 +21 +1.20533375707888 +31 +-6.66133814775094e-16 +12 +2.17907937354823 +22 +1.13702451264398 +32 +-1.2490009027033e-16 +13 +2.17907937354823 +23 +1.13702451264398 +33 +-1.2490009027033e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.904781950910692 +21 +1.01151717119399 +31 +1.31838984174237e-15 +12 +0.859768398527041 +22 +1.07221092057491 +32 +8.74300631892311e-16 +13 +0.859768398527041 +23 +1.07221092057491 +33 +8.74300631892311e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.904781950910692 +20 +1.01151717119399 +30 +1.31838984174237e-15 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.20736753927986e-15 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.20736753927986e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.57547319805376 +21 +0.733707760462408 +31 +1.38777878078145e-16 +12 +1.5 +22 +0.73 +32 +6.93889390390723e-16 +13 +1.5 +23 +0.73 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +0.733707760462408 +30 +1.38777878078145e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.65021954795242 +22 +0.744795334089513 +32 +-3.60822483003176e-16 +13 +1.65021954795242 +23 +0.744795334089513 +33 +-3.60822483003176e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20163144893051 +20 +3.0 +30 +1.19348975147204e-15 +11 +1.20533375707888 +21 +2.21138724003369 +31 +-5.68989300120393e-16 +12 +0.878679656440358 +22 +3.0 +32 +9.29811783123569e-16 +13 +0.878679656440358 +23 +3.0 +33 +9.29811783123569e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +2.21138724003369 +30 +-5.68989300120393e-16 +11 +1.20163144893051 +21 +3.0 +31 +1.19348975147204e-15 +12 +1.27648079851407 +22 +2.2368440585138 +32 +-1.80411241501588e-16 +13 +1.27648079851407 +23 +2.2368440585138 +33 +-1.80411241501588e-16 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.27648079851407 +20 +2.2368440585138 +30 +-1.80411241501588e-16 +11 +1.20163144893051 +21 +3.0 +31 +1.19348975147204e-15 +12 +1.34978045204758 +22 +2.25520466591049 +32 +-4.02455846426619e-16 +13 +1.34978045204758 +23 +2.25520466591049 +33 +-4.02455846426619e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.33226762955019e-15 +20 +2.50226795687895 +30 +1.19348975147204e-15 +11 +0.78861275996631 +21 +1.79466624292112 +31 +2.77555756156289e-17 +12 +1.19348975147204e-15 +22 +2.12132034355964 +32 +-1.16573417585641e-15 +13 +1.19348975147204e-15 +23 +2.12132034355964 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.78861275996631 +20 +1.79466624292112 +30 +2.77555756156289e-17 +11 +1.33226762955019e-15 +21 +2.50226795687895 +31 +1.19348975147204e-15 +12 +0.820920626451768 +22 +1.86297548735602 +32 +1.65145674912992e-15 +13 +0.820920626451768 +23 +1.86297548735602 +33 +1.65145674912992e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.820920626451768 +20 +1.86297548735602 +30 +1.65145674912992e-15 +11 +1.33226762955019e-15 +21 +2.50226795687895 +31 +1.19348975147204e-15 +12 +0.859768398527041 +22 +1.92778907942509 +32 +8.74300631892311e-16 +13 +0.859768398527041 +23 +1.92778907942509 +33 +8.74300631892311e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +-1.56819002228303e-15 +11 +1.86297548735602 +21 +2.17907937354823 +31 +1.58206781009085e-15 +12 +1.79466624292112 +22 +2.21138724003369 +32 +-1.4432899320127e-15 +13 +1.79466624292112 +23 +2.21138724003369 +33 +-1.4432899320127e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.86297548735602 +20 +2.17907937354823 +30 +1.58206781009085e-15 +11 +2.12132034355964 +21 +3.0 +31 +-1.56819002228303e-15 +12 +1.92778907942509 +22 +2.14023160147296 +32 +-1.02695629777827e-15 +13 +1.92778907942509 +23 +2.14023160147296 +33 +-1.02695629777827e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +2.14023160147296 +30 +-1.02695629777827e-15 +11 +2.12132034355964 +21 +3.0 +31 +-1.56819002228303e-15 +12 +2.50226795687895 +22 +3.0 +32 +1.19348975147204e-15 +13 +2.50226795687895 +23 +3.0 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.42452680194624 +21 +0.733707760462408 +31 +-6.93889390390723e-16 +12 +1.34978045204758 +22 +0.744795334089513 +32 +-4.02455846426619e-16 +13 +1.34978045204758 +23 +0.744795334089513 +33 +-4.02455846426619e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.42452680194624 +20 +0.733707760462408 +30 +-6.93889390390723e-16 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.5 +22 +0.73 +32 +6.93889390390723e-16 +13 +1.5 +23 +0.73 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +2.12132034355964 +30 +1.19348975147204e-15 +11 +2.2368440585138 +21 +1.72351920148594 +31 +-1.06858966120171e-15 +12 +2.21138724003369 +22 +1.79466624292112 +32 +-6.66133814775094e-16 +13 +2.21138724003369 +23 +1.79466624292112 +33 +-6.66133814775094e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.2368440585138 +20 +1.72351920148594 +30 +-1.06858966120171e-15 +11 +3.0 +21 +2.12132034355964 +31 +1.19348975147204e-15 +12 +2.25520466591049 +22 +1.65021954795242 +32 +-1.2490009027033e-15 +13 +2.25520466591049 +23 +1.65021954795242 +33 +-1.2490009027033e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.65021954795242 +30 +-1.2490009027033e-15 +11 +3.0 +21 +2.12132034355964 +31 +1.19348975147204e-15 +12 +3.0 +22 +1.79836855106949 +32 +1.19348975147204e-15 +13 +3.0 +23 +1.79836855106949 +33 +1.19348975147204e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.79466624292112 +22 +2.21138724003369 +32 +3.0 +13 +1.79466624292112 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +2.21138724003369 +30 +1.5 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +1.79466624292112 +22 +2.21138724003369 +32 +-1.4432899320127e-15 +13 +1.79466624292112 +23 +2.21138724003369 +33 +-1.4432899320127e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +2.21138724003369 +30 +-1.4432899320127e-15 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +-1.56819002228303e-15 +13 +2.12132034355964 +23 +3.0 +33 +-1.56819002228303e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +-1.56819002228303e-15 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +2.795 +13 +2.12132034355964 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +-1.56819002228303e-15 +11 +2.12132034355964 +21 +3.0 +31 +2.795 +12 +2.12132034355964 +22 +3.0 +32 +2.17367965644036 +13 +2.12132034355964 +23 +3.0 +33 +2.17367965644036 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +-1.56819002228303e-15 +11 +2.12132034355964 +21 +3.0 +31 +2.17367965644036 +12 +2.12132034355964 +22 +3.0 +32 +0.826320343559642 +13 +2.12132034355964 +23 +3.0 +33 +0.826320343559642 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +-1.56819002228303e-15 +11 +2.12132034355964 +21 +3.0 +31 +0.826320343559642 +12 +2.12132034355964 +22 +3.0 +32 +0.204999999999999 +13 +2.12132034355964 +23 +3.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.86297548735602 +20 +2.17907937354823 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +1.79466624292112 +22 +2.21138724003369 +32 +3.0 +13 +1.79466624292112 +23 +2.21138724003369 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.86297548735602 +21 +2.17907937354823 +31 +3.0 +12 +1.92778907942509 +22 +2.14023160147296 +32 +3.0 +13 +1.92778907942509 +23 +2.14023160147296 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.92778907942509 +21 +2.14023160147296 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.788612759966309 +20 +1.79466624292112 +30 +3.0 +11 +2.77555756156289e-16 +21 +2.50226795687895 +31 +3.0 +12 +2.77555756156289e-16 +22 +2.12132034355964 +32 +3.0 +13 +2.77555756156289e-16 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +2.50226795687895 +30 +3.0 +11 +0.788612759966309 +21 +1.79466624292112 +31 +3.0 +12 +0.820920626451767 +22 +1.86297548735602 +32 +3.0 +13 +0.820920626451767 +23 +1.86297548735602 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +2.50226795687895 +30 +3.0 +11 +0.820920626451767 +21 +1.86297548735602 +31 +3.0 +12 +0.859768398527041 +22 +1.92778907942509 +32 +3.0 +13 +0.859768398527041 +23 +1.92778907942509 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +3.0 +30 +-1.16573417585641e-15 +11 +0.955527778486359 +21 +2.04447222151364 +31 +1.5 +12 +0.955527778486359 +22 +2.04447222151364 +32 +1.20736753927986e-15 +13 +0.955527778486359 +23 +2.04447222151364 +33 +1.20736753927986e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +2.04447222151364 +30 +1.5 +11 +1.19348975147204e-15 +21 +3.0 +31 +-1.16573417585641e-15 +12 +0.955527778486358 +22 +2.04447222151364 +32 +3.0 +13 +0.955527778486358 +23 +2.04447222151364 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.955527778486358 +20 +2.04447222151364 +30 +3.0 +11 +1.19348975147204e-15 +21 +3.0 +31 +-1.16573417585641e-15 +12 +2.77555756156289e-16 +22 +3.0 +32 +3.0 +13 +2.77555756156289e-16 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.859768398527041 +20 +1.92778907942509 +30 +3.0 +11 +2.77555756156289e-16 +21 +3.0 +31 +3.0 +12 +2.77555756156289e-16 +22 +2.50226795687895 +32 +3.0 +13 +2.77555756156289e-16 +23 +2.50226795687895 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +3.0 +30 +3.0 +11 +0.859768398527041 +21 +1.92778907942509 +31 +3.0 +12 +0.904781950910692 +22 +1.98848282880601 +32 +3.0 +13 +0.904781950910692 +23 +1.98848282880601 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +3.0 +30 +3.0 +11 +0.904781950910692 +21 +1.98848282880601 +31 +3.0 +12 +0.955527778486358 +22 +2.04447222151364 +32 +3.0 +13 +0.955527778486358 +23 +2.04447222151364 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.34978045204758 +20 +2.25520466591049 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.34978045204758 +21 +2.25520466591049 +31 +3.0 +12 +1.42452680194624 +22 +2.26629223953759 +32 +3.0 +13 +1.42452680194624 +23 +2.26629223953759 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.42452680194624 +21 +2.26629223953759 +31 +3.0 +12 +1.5 +22 +2.27 +32 +3.0 +13 +1.5 +23 +2.27 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.26629223953759 +20 +1.57547319805376 +30 +3.0 +11 +3.0 +21 +1.79836855106949 +31 +3.0 +12 +2.25520466591049 +22 +1.65021954795242 +32 +3.0 +13 +2.25520466591049 +23 +1.65021954795242 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.26629223953759 +21 +1.57547319805376 +31 +3.0 +12 +2.27 +22 +1.5 +32 +3.0 +13 +2.27 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.27 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +3.0 +11 +0.955527778486358 +21 +0.955527778486358 +31 +3.0 +12 +2.77555756156289e-16 +22 +0.0 +32 +3.0 +13 +2.77555756156289e-16 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.955527778486358 +20 +0.955527778486358 +30 +3.0 +11 +0.205000000000001 +21 +0.0 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +0.955527778486358 +20 +0.955527778486358 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.01151717119399 +22 +0.904781950910693 +32 +3.0 +13 +1.01151717119399 +23 +0.904781950910693 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +0.904781950910693 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.07221092057491 +22 +0.85976839852704 +32 +3.0 +13 +1.07221092057491 +23 +0.85976839852704 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.744795334089513 +20 +1.34978045204758 +30 +3.0 +11 +2.77555756156289e-16 +21 +1.5 +31 +3.0 +12 +2.77555756156289e-16 +22 +1.20163144893051 +32 +3.0 +13 +2.77555756156289e-16 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +1.5 +30 +3.0 +11 +0.744795334089513 +21 +1.34978045204758 +31 +3.0 +12 +0.733707760462408 +22 +1.42452680194624 +32 +3.0 +13 +0.733707760462408 +23 +1.42452680194624 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.77555756156289e-16 +20 +1.5 +30 +3.0 +11 +0.733707760462408 +21 +1.42452680194624 +31 +3.0 +12 +0.73 +22 +1.5 +32 +3.0 +13 +0.73 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.98848282880601 +20 +2.09521804908931 +30 +3.0 +11 +2.50226795687895 +21 +3.0 +31 +3.0 +12 +1.92778907942509 +22 +2.14023160147296 +32 +3.0 +13 +1.92778907942509 +23 +2.14023160147296 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.98848282880601 +21 +2.09521804908931 +31 +3.0 +12 +2.04447222151364 +22 +2.04447222151364 +32 +3.0 +13 +2.04447222151364 +23 +2.04447222151364 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +2.04447222151364 +21 +2.04447222151364 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.5 +21 +0.73 +31 +3.0 +12 +1.5 +22 +0.0 +32 +3.0 +13 +1.5 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.73 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.57547319805376 +22 +0.733707760462408 +32 +3.0 +13 +1.57547319805376 +23 +0.733707760462408 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +0.733707760462408 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.65021954795242 +22 +0.744795334089513 +32 +3.0 +13 +1.65021954795242 +23 +0.744795334089513 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.09521804908931 +21 +1.01151717119399 +31 +3.0 +12 +2.04447222151364 +22 +0.955527778486358 +32 +3.0 +13 +2.04447222151364 +23 +0.955527778486358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.09521804908931 +20 +1.01151717119399 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.14023160147296 +22 +1.07221092057491 +32 +3.0 +13 +2.14023160147296 +23 +1.07221092057491 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.07221092057491 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +2.17367965644036 +11 +2.795 +21 +3.0 +31 +1.5 +12 +2.12132034355964 +22 +3.0 +32 +0.826320343559642 +13 +2.12132034355964 +23 +3.0 +33 +0.826320343559642 +70 +0 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +2.17367965644036 +11 +2.795 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.12132034355964 +21 +3.0 +31 +2.17367965644036 +12 +2.12132034355964 +22 +3.0 +32 +2.795 +13 +2.12132034355964 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +0.204999999999999 +11 +3.0 +21 +3.0 +31 +1.19348975147204e-15 +12 +2.795 +22 +3.0 +32 +-1.16573417585641e-15 +13 +2.795 +23 +3.0 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +3.0 +30 +1.19348975147204e-15 +11 +2.795 +21 +3.0 +31 +0.204999999999999 +12 +3.0 +22 +3.0 +32 +0.204999999999999 +13 +3.0 +23 +3.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +0.204999999999999 +11 +2.50226795687895 +21 +3.0 +31 +1.19348975147204e-15 +12 +2.12132034355964 +22 +3.0 +32 +-1.56819002228303e-15 +13 +2.12132034355964 +23 +3.0 +33 +-1.56819002228303e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.50226795687895 +20 +3.0 +30 +1.19348975147204e-15 +11 +2.795 +21 +3.0 +31 +0.204999999999999 +12 +2.795 +22 +3.0 +32 +-1.16573417585641e-15 +13 +2.795 +23 +3.0 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +0.204999999999999 +11 +2.50226795687895 +21 +3.0 +31 +1.19348975147204e-15 +12 +2.12132034355964 +22 +3.0 +32 +0.204999999999999 +13 +2.12132034355964 +23 +3.0 +33 +0.204999999999999 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.204999999999999 +12 +2.795 +22 +3.0 +32 +0.204999999999999 +13 +2.795 +23 +3.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +3.0 +30 +0.204999999999999 +11 +2.795 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440358 +20 +3.0 +30 +0.826320343559643 +11 +1.5 +21 +3.0 +31 +0.204999999999999 +12 +0.878679656440358 +22 +3.0 +32 +0.204999999999999 +13 +0.878679656440358 +23 +3.0 +33 +0.204999999999999 +70 +0 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.878679656440357 +21 +3.0 +31 +2.17367965644036 +12 +0.878679656440357 +22 +3.0 +32 +2.795 +13 +0.878679656440357 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +star_d +10 +0.878679656440358 +20 +3.0 +30 +0.826320343559643 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +0.204999999999999 +13 +1.5 +23 +3.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.878679656440358 +21 +3.0 +31 +0.826320343559643 +12 +0.878679656440357 +22 +3.0 +32 +2.17367965644036 +13 +0.878679656440357 +23 +3.0 +33 +2.17367965644036 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +3.0 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440358 +20 +3.0 +30 +0.204999999999999 +11 +1.20163144893051 +21 +3.0 +31 +1.19348975147204e-15 +12 +0.878679656440358 +22 +3.0 +32 +9.29811783123569e-16 +13 +0.878679656440358 +23 +3.0 +33 +9.29811783123569e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20163144893051 +20 +3.0 +30 +1.19348975147204e-15 +11 +1.5 +21 +3.0 +31 +0.204999999999999 +12 +1.5 +22 +3.0 +32 +6.93889390390723e-16 +13 +1.5 +23 +3.0 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +3.0 +30 +0.204999999999999 +11 +1.20163144893051 +21 +3.0 +31 +1.19348975147204e-15 +12 +0.878679656440358 +22 +3.0 +32 +0.204999999999999 +13 +0.878679656440358 +23 +3.0 +33 +0.204999999999999 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +2.12132034355964 +22 +3.0 +32 +2.795 +13 +2.12132034355964 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.795 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +5.55111512312578e-17 +30 +0.204999999999999 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +1.19348975147204e-15 +12 +2.12132034355964 +22 +1.11022302462516e-16 +32 +-6.80011602582908e-16 +13 +2.12132034355964 +23 +1.11022302462516e-16 +33 +-6.80011602582908e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +1.19348975147204e-15 +11 +1.5 +21 +0.0 +31 +0.204999999999999 +12 +1.5 +22 +0.0 +32 +6.93889390390723e-16 +13 +1.5 +23 +0.0 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +0.204999999999999 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +1.19348975147204e-15 +12 +2.12132034355964 +22 +5.55111512312578e-17 +32 +0.204999999999999 +13 +2.12132034355964 +23 +5.55111512312578e-17 +33 +0.204999999999999 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +1.11022302462516e-16 +30 +3.0 +11 +1.5 +21 +0.0 +31 +2.795 +12 +2.12132034355964 +22 +5.55111512312578e-17 +32 +2.795 +13 +2.12132034355964 +23 +5.55111512312578e-17 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.12132034355964 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +2.795 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.5 +22 +0.0 +32 +3.0 +13 +1.5 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.12132034355964 +20 +5.55111512312578e-17 +30 +0.826320343559641 +11 +1.5 +21 +0.0 +31 +0.204999999999999 +12 +2.12132034355964 +22 +5.55111512312578e-17 +32 +0.204999999999999 +13 +2.12132034355964 +23 +5.55111512312578e-17 +33 +0.204999999999999 +70 +0 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +2.17367965644035 +11 +0.205000000000001 +21 +0.0 +31 +1.5 +12 +0.878679656440356 +22 +0.0 +32 +0.826320343559644 +13 +0.878679656440356 +23 +0.0 +33 +0.826320343559644 +70 +0 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +3.0 +11 +1.19348975147204e-15 +21 +0.0 +31 +2.795 +12 +0.205000000000001 +22 +0.0 +32 +2.795 +13 +0.205000000000001 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.0 +30 +2.795 +11 +0.205000000000001 +21 +0.0 +31 +3.0 +12 +2.77555756156289e-16 +22 +0.0 +32 +3.0 +13 +2.77555756156289e-16 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +1.5 +11 +1.19348975147204e-15 +21 +0.0 +31 +0.204999999999999 +12 +0.205000000000001 +22 +0.0 +32 +0.204999999999999 +13 +0.205000000000001 +23 +0.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.0 +30 +0.204999999999999 +11 +0.205000000000001 +21 +0.0 +31 +1.5 +12 +1.19348975147204e-15 +22 +0.0 +32 +1.5 +13 +1.19348975147204e-15 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +0.204999999999999 +11 +1.19348975147204e-15 +21 +0.0 +31 +-1.16573417585641e-15 +12 +0.205000000000001 +22 +0.0 +32 +-1.16573417585641e-15 +13 +0.205000000000001 +23 +0.0 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.19348975147204e-15 +20 +0.0 +30 +-1.16573417585641e-15 +11 +0.205000000000001 +21 +0.0 +31 +0.204999999999999 +12 +1.19348975147204e-15 +22 +0.0 +32 +0.204999999999999 +13 +1.19348975147204e-15 +23 +0.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +3.0 +11 +0.205000000000001 +21 +0.0 +31 +2.795 +12 +0.878679656440356 +22 +0.0 +32 +2.795 +13 +0.878679656440356 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +2.795 +11 +0.878679656440356 +21 +0.0 +31 +3.0 +12 +0.205000000000001 +22 +0.0 +32 +3.0 +13 +0.205000000000001 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +3.0 +11 +0.878679656440356 +21 +0.0 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +0.204999999999999 +11 +0.497732043121054 +21 +0.0 +31 +1.19348975147204e-15 +12 +0.878679656440356 +22 +0.0 +32 +-7.35522753814166e-16 +13 +0.878679656440356 +23 +0.0 +33 +-7.35522753814166e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.497732043121054 +20 +0.0 +30 +1.19348975147204e-15 +11 +0.205000000000001 +21 +0.0 +31 +0.204999999999999 +12 +0.205000000000001 +22 +0.0 +32 +-1.16573417585641e-15 +13 +0.205000000000001 +23 +0.0 +33 +-1.16573417585641e-15 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +0.204999999999999 +11 +0.497732043121054 +21 +0.0 +31 +1.19348975147204e-15 +12 +0.878679656440356 +22 +0.0 +32 +0.204999999999999 +13 +0.878679656440356 +23 +0.0 +33 +0.204999999999999 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +2.17367965644035 +11 +0.205000000000001 +21 +0.0 +31 +2.795 +12 +0.205000000000001 +22 +0.0 +32 +1.5 +13 +0.205000000000001 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +2.795 +11 +0.878679656440356 +21 +0.0 +31 +2.17367965644035 +12 +0.878679656440356 +22 +0.0 +32 +2.795 +13 +0.878679656440356 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.878679656440356 +20 +0.0 +30 +0.826320343559644 +11 +0.205000000000001 +21 +0.0 +31 +0.204999999999999 +12 +0.878679656440356 +22 +0.0 +32 +0.204999999999999 +13 +0.878679656440356 +23 +0.0 +33 +0.204999999999999 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.205000000000001 +20 +0.0 +30 +0.204999999999999 +11 +0.878679656440356 +21 +0.0 +31 +0.826320343559644 +12 +0.205000000000001 +22 +0.0 +32 +1.5 +13 +0.205000000000001 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.12132034355964 +21 +5.55111512312578e-17 +31 +2.17367965644036 +12 +2.12132034355964 +22 +5.55111512312578e-17 +32 +2.795 +13 +2.12132034355964 +23 +5.55111512312578e-17 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.86297548735602 +22 +0.820920626451767 +32 +1.5 +13 +1.86297548735602 +23 +0.820920626451767 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +1.86297548735602 +21 +0.820920626451767 +31 +1.5 +12 +1.92778907942509 +22 +0.85976839852704 +32 +1.5 +13 +1.92778907942509 +23 +0.85976839852704 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +1.92778907942509 +21 +0.85976839852704 +31 +1.5 +12 +1.98848282880601 +22 +0.904781950910692 +32 +1.5 +13 +1.98848282880601 +23 +0.904781950910692 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +2.04447222151364 +21 +0.955527778486358 +31 +1.5 +12 +2.04447222151364 +22 +0.955527778486358 +32 +-1.11022302462516e-16 +13 +2.04447222151364 +23 +0.955527778486358 +33 +-1.11022302462516e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +0.955527778486358 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.955527778486359 +22 +2.04447222151364 +32 +1.20736753927986e-15 +13 +0.955527778486359 +23 +2.04447222151364 +33 +1.20736753927986e-15 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.955527778486359 +21 +2.04447222151364 +31 +1.20736753927986e-15 +12 +0.955527778486359 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486359 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.27648079851406 +21 +2.2368440585138 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +1.5 +13 +1.20533375707888 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.27648079851406 +20 +2.2368440585138 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.34978045204758 +22 +2.25520466591049 +32 +1.5 +13 +1.34978045204758 +23 +2.25520466591049 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.34978045204758 +20 +2.25520466591049 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.42452680194624 +22 +2.26629223953759 +32 +1.5 +13 +1.42452680194624 +23 +2.26629223953759 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.42452680194624 +20 +2.26629223953759 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +2.27 +32 +1.5 +13 +1.5 +23 +2.27 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.820920626451766 +21 +1.86297548735602 +31 +1.5 +12 +0.78861275996631 +22 +1.79466624292112 +32 +1.5 +13 +0.78861275996631 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.820920626451766 +20 +1.86297548735602 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.859768398527041 +22 +1.92778907942509 +32 +1.5 +13 +0.859768398527041 +23 +1.92778907942509 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.859768398527041 +20 +1.92778907942509 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.904781950910694 +22 +1.98848282880601 +32 +1.5 +13 +0.904781950910694 +23 +1.98848282880601 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.904781950910694 +20 +1.98848282880601 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.955527778486359 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486359 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +2.21138724003369 +22 +1.20533375707888 +32 +-6.66133814775094e-16 +13 +2.21138724003369 +23 +1.20533375707888 +33 +-6.66133814775094e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.78861275996631 +21 +1.79466624292112 +31 +1.5 +12 +0.78861275996631 +22 +1.79466624292112 +32 +2.77555756156289e-17 +13 +0.78861275996631 +23 +1.79466624292112 +33 +2.77555756156289e-17 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.78861275996631 +20 +1.79466624292112 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +2.21138724003369 +22 +1.20533375707888 +32 +1.5 +13 +2.21138724003369 +23 +1.20533375707888 +33 +1.5 +70 +15 + 0 +3DFACE + 8 +star_d +10 +0.78861275996631 +20 +1.79466624292112 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.01151717119399 +21 +2.09521804908931 +31 +1.5 +12 +0.955527778486359 +22 +2.04447222151364 +32 +1.5 +13 +0.955527778486359 +23 +2.04447222151364 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +2.09521804908931 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.07221092057491 +22 +2.14023160147296 +32 +1.5 +13 +1.07221092057491 +23 +2.14023160147296 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.07221092057491 +20 +2.14023160147296 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.13702451264398 +22 +2.17907937354823 +32 +1.5 +13 +1.13702451264398 +23 +2.17907937354823 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.13702451264398 +20 +2.17907937354823 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20533375707888 +22 +2.21138724003369 +32 +1.5 +13 +1.20533375707888 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.27648079851406 +20 +0.763155941486199 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.27648079851406 +21 +0.763155941486199 +31 +1.5 +12 +1.34978045204758 +22 +0.744795334089513 +32 +1.5 +13 +1.34978045204758 +23 +0.744795334089513 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.34978045204758 +21 +0.744795334089513 +31 +1.5 +12 +1.42452680194624 +22 +0.733707760462408 +32 +1.5 +13 +1.42452680194624 +23 +0.733707760462408 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.42452680194624 +21 +0.733707760462408 +31 +1.5 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.79466624292112 +21 +0.788612759966309 +31 +1.5 +12 +1.79466624292112 +22 +0.788612759966309 +32 +-1.38777878078145e-16 +13 +1.79466624292112 +23 +0.788612759966309 +33 +-1.38777878078145e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.20533375707888 +22 +2.21138724003369 +32 +-5.68989300120393e-16 +13 +1.20533375707888 +23 +2.21138724003369 +33 +-5.68989300120393e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.20533375707888 +21 +2.21138724003369 +31 +-5.68989300120393e-16 +12 +1.20533375707888 +22 +2.21138724003369 +32 +1.5 +13 +1.20533375707888 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +0.733707760462408 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +0.73 +32 +1.5 +13 +1.5 +23 +0.73 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.57547319805376 +21 +0.733707760462408 +31 +1.5 +12 +1.79466624292112 +22 +0.788612759966309 +32 +1.5 +13 +1.79466624292112 +23 +0.788612759966309 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +1.57547319805376 +21 +0.733707760462408 +31 +1.5 +12 +1.65021954795242 +22 +0.744795334089513 +32 +1.5 +13 +1.65021954795242 +23 +0.744795334089513 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +0.788612759966309 +30 +1.5 +11 +1.65021954795242 +21 +0.744795334089513 +31 +1.5 +12 +1.72351920148594 +22 +0.763155941486199 +32 +1.5 +13 +1.72351920148594 +23 +0.763155941486199 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.79466624292112 +20 +2.21138724003369 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +1.86297548735602 +22 +2.17907937354823 +32 +1.5 +13 +1.86297548735602 +23 +2.17907937354823 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.86297548735602 +20 +2.17907937354823 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +1.92778907942509 +22 +2.14023160147296 +32 +1.5 +13 +1.92778907942509 +23 +2.14023160147296 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.92778907942509 +20 +2.14023160147296 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +1.98848282880601 +22 +2.09521804908931 +32 +1.5 +13 +1.98848282880601 +23 +2.09521804908931 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.5 +21 +0.73 +31 +1.5 +12 +1.5 +22 +0.73 +32 +6.93889390390723e-16 +13 +1.5 +23 +0.73 +33 +6.93889390390723e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +0.73 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.5 +22 +2.27 +32 +6.93889390390723e-16 +13 +1.5 +23 +2.27 +33 +6.93889390390723e-16 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.5 +21 +2.27 +31 +6.93889390390723e-16 +12 +1.5 +22 +2.27 +32 +1.5 +13 +1.5 +23 +2.27 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.820920626451766 +20 +1.13702451264398 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.820920626451766 +21 +1.13702451264398 +31 +1.5 +12 +0.859768398527041 +22 +1.07221092057491 +32 +1.5 +13 +0.859768398527041 +23 +1.07221092057491 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.859768398527041 +21 +1.07221092057491 +31 +1.5 +12 +0.904781950910694 +22 +1.01151717119399 +32 +1.5 +13 +0.904781950910694 +23 +1.01151717119399 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.904781950910694 +21 +1.01151717119399 +31 +1.5 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.57547319805376 +21 +2.26629223953759 +31 +1.5 +12 +1.5 +22 +2.27 +32 +1.5 +13 +1.5 +23 +2.27 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +2.26629223953759 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.79466624292112 +22 +2.21138724003369 +32 +1.5 +13 +1.79466624292112 +23 +2.21138724003369 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.57547319805376 +20 +2.26629223953759 +30 +1.5 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.65021954795242 +22 +2.25520466591049 +32 +1.5 +13 +1.65021954795242 +23 +2.25520466591049 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.65021954795242 +20 +2.25520466591049 +30 +1.5 +11 +1.79466624292112 +21 +2.21138724003369 +31 +1.5 +12 +1.72351920148594 +22 +2.2368440585138 +32 +1.5 +13 +1.72351920148594 +23 +2.2368440585138 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +1.20533375707888 +21 +0.788612759966309 +31 +1.5 +12 +1.20533375707888 +22 +0.788612759966309 +32 +2.63677968348475e-16 +13 +1.20533375707888 +23 +0.788612759966309 +33 +2.63677968348475e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.20533375707888 +20 +0.788612759966309 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.79466624292112 +22 +2.21138724003369 +32 +-1.4432899320127e-15 +13 +1.79466624292112 +23 +2.21138724003369 +33 +-1.4432899320127e-15 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.79466624292112 +21 +2.21138724003369 +31 +-1.4432899320127e-15 +12 +1.79466624292112 +22 +2.21138724003369 +32 +1.5 +13 +1.79466624292112 +23 +2.21138724003369 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.2368440585138 +22 +1.72351920148594 +32 +1.5 +13 +2.2368440585138 +23 +1.72351920148594 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.2368440585138 +20 +1.72351920148594 +30 +1.5 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.25520466591049 +22 +1.65021954795242 +32 +1.5 +13 +2.25520466591049 +23 +1.65021954795242 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.25520466591049 +20 +1.65021954795242 +30 +1.5 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.26629223953759 +22 +1.57547319805376 +32 +1.5 +13 +2.26629223953759 +23 +1.57547319805376 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.01151717119399 +20 +0.904781950910693 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.01151717119399 +21 +0.904781950910693 +31 +1.5 +12 +1.07221092057491 +22 +0.85976839852704 +32 +1.5 +13 +1.07221092057491 +23 +0.85976839852704 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.07221092057491 +21 +0.85976839852704 +31 +1.5 +12 +1.13702451264398 +22 +0.820920626451767 +32 +1.5 +13 +1.13702451264398 +23 +0.820920626451767 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.13702451264398 +21 +0.820920626451767 +31 +1.5 +12 +1.20533375707888 +22 +0.788612759966309 +32 +1.5 +13 +1.20533375707888 +23 +0.788612759966309 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +2.04447222151364 +22 +2.04447222151364 +32 +-1.11022302462516e-16 +13 +2.04447222151364 +23 +2.04447222151364 +33 +-1.11022302462516e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.20736753927986e-15 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.20736753927986e-15 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +0.955527778486358 +30 +1.20736753927986e-15 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +0.955527778486359 +22 +0.955527778486358 +32 +1.5 +13 +0.955527778486359 +23 +0.955527778486358 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.955527778486359 +20 +0.955527778486358 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.73370776046241 +21 +1.57547319805376 +31 +1.5 +12 +0.729999999999999 +22 +1.5 +32 +1.5 +13 +0.729999999999999 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.73370776046241 +20 +1.57547319805376 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.744795334089513 +22 +1.65021954795242 +32 +1.5 +13 +0.744795334089513 +23 +1.65021954795242 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.744795334089513 +20 +1.65021954795242 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.763155941486199 +22 +1.72351920148594 +32 +1.5 +13 +0.763155941486199 +23 +1.72351920148594 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +0.763155941486199 +20 +1.72351920148594 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.78861275996631 +22 +1.79466624292112 +32 +1.5 +13 +0.78861275996631 +23 +1.79466624292112 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +2.04447222151364 +21 +2.04447222151364 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.04447222151364 +20 +2.04447222151364 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +2.09521804908931 +22 +1.98848282880601 +32 +1.5 +13 +2.09521804908931 +23 +1.98848282880601 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.09521804908931 +20 +1.98848282880601 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +2.14023160147296 +22 +1.92778907942509 +32 +1.5 +13 +2.14023160147296 +23 +1.92778907942509 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +star_d +10 +2.14023160147296 +20 +1.92778907942509 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +2.17907937354823 +22 +1.86297548735602 +32 +1.5 +13 +2.17907937354823 +23 +1.86297548735602 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.79466624292112 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +2.21138724003369 +22 +1.79466624292112 +32 +-6.66133814775094e-16 +13 +2.21138724003369 +23 +1.79466624292112 +33 +-6.66133814775094e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +15 + 0 +3DFACE + 8 +star_d +10 +0.788612759966309 +20 +1.20533375707888 +30 +1.5 +11 +2.21138724003369 +21 +1.79466624292112 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.788612759966309 +20 +1.20533375707888 +30 +1.5 +11 +0.78861275996631 +21 +1.20533375707888 +31 +2.77555756156289e-17 +12 +1.5 +22 +1.5 +32 +1.19348975147204e-15 +13 +1.5 +23 +1.5 +33 +1.19348975147204e-15 +70 +12 + 0 +3DFACE + 8 +star_d +10 +0.73370776046241 +20 +1.42452680194624 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.729999999999999 +22 +1.5 +32 +1.5 +13 +0.729999999999999 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.73370776046241 +21 +1.42452680194624 +31 +1.5 +12 +0.744795334089513 +22 +1.34978045204758 +32 +1.5 +13 +0.744795334089513 +23 +1.34978045204758 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.744795334089513 +21 +1.34978045204758 +31 +1.5 +12 +0.763155941486199 +22 +1.27648079851406 +32 +1.5 +13 +0.763155941486199 +23 +1.27648079851406 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.763155941486199 +21 +1.27648079851406 +31 +1.5 +12 +0.788612759966309 +22 +1.20533375707888 +32 +1.5 +13 +0.788612759966309 +23 +1.20533375707888 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.21138724003369 +20 +1.20533375707888 +30 +1.5 +11 +2.27 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.21138724003369 +21 +1.20533375707888 +31 +1.5 +12 +2.2368440585138 +22 +1.27648079851406 +32 +1.5 +13 +2.2368440585138 +23 +1.27648079851406 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.2368440585138 +21 +1.27648079851406 +31 +1.5 +12 +2.25520466591049 +22 +1.34978045204758 +32 +1.5 +13 +2.25520466591049 +23 +1.34978045204758 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +1.5 +11 +2.25520466591049 +21 +1.34978045204758 +31 +1.5 +12 +2.26629223953759 +22 +1.42452680194624 +32 +1.5 +13 +2.26629223953759 +23 +1.42452680194624 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +star_d +10 +0.729999999999999 +20 +1.5 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +0.73 +22 +1.5 +32 +7.07767178198537e-16 +13 +0.73 +23 +1.5 +33 +7.07767178198537e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +0.729999999999999 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +star_d +10 +1.5 +20 +1.5 +30 +1.19348975147204e-15 +11 +2.27 +21 +1.5 +31 +1.5 +12 +2.27 +22 +1.5 +32 +-2.35922392732846e-16 +13 +2.27 +23 +1.5 +33 +-2.35922392732846e-16 +70 +1 + 0 +3DFACE + 8 +star_d +10 +2.27 +20 +1.5 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.19348975147204e-15 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +1.5 +11 +2.795 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +0.205 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +1.5 +22 +0.0 +32 +0.0 +13 +1.5 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +0.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.497732043121053 +20 +0.0 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +2.50226795687895 +21 +3.0 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +1.5 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +3.0 +11 +1.5 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +3.0 +12 +1.5 +22 +0.0 +32 +3.0 +13 +1.5 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +0.0 +11 +0.205 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +0.0 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.497732043121053 +20 +0.0 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +0.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +0.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.497732043121053 +20 +0.0 +30 +0.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +2.545 +21 +0.25 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.545 +20 +0.25 +30 +1.5 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.0225 +22 +0.25 +32 +2.0225 +13 +2.0225 +23 +0.25 +33 +2.0225 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.1475 +20 +0.0 +30 +0.8525 +11 +1.5 +21 +0.25 +31 +0.455 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.25 +30 +0.455 +11 +2.1475 +21 +0.0 +31 +0.8525 +12 +2.0225 +22 +0.25 +32 +0.9775 +13 +2.0225 +23 +0.25 +33 +0.9775 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.9775 +20 +0.25 +30 +2.0225 +11 +1.5 +21 +0.0 +31 +2.795 +12 +0.8525 +22 +0.0 +32 +2.1475 +13 +0.8525 +23 +0.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +2.795 +11 +0.9775 +21 +0.25 +31 +2.0225 +12 +1.5 +22 +0.25 +32 +2.545 +13 +1.5 +23 +0.25 +33 +2.545 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.9775 +20 +0.25 +30 +0.9775 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.8525 +22 +0.0 +32 +0.8525 +13 +0.8525 +23 +0.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.9775 +21 +0.25 +31 +0.9775 +12 +0.454999999999999 +22 +0.25 +32 +1.5 +13 +0.454999999999999 +23 +0.25 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.8525 +21 +0.0 +31 +2.1475 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +0.205 +12 +0.8525 +22 +0.0 +32 +0.8525 +13 +0.8525 +23 +0.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +0.205 +13 +0.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.50226795687895 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +2.12132034355964 +22 +0.0 +32 +0.0 +13 +2.12132034355964 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.0 +13 +1.5 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.1475 +21 +0.0 +31 +0.8525 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +2.795 +11 +1.5 +21 +0.0 +31 +3.0 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +3.0 +11 +1.5 +21 +0.0 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +3.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +0.74 +20 +1.5 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +0.74 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 +12 +1.20163144893051 +22 +3.0 +32 +0.0 +13 +1.20163144893051 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.35173135526774 +20 +2.24539681310645 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +0.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +2.26 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +0.91251205544432 +30 +0.0 +11 +2.50226795687895 +21 +0.0 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.85826151998776 +20 +0.82973983909525 +30 +0.0 +11 +2.12132034355964 +21 +0.0 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +2.50226795687895 +22 +0.0 +32 +0.0 +13 +2.50226795687895 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.35173135526774 +20 +0.754603186893545 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +0.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +0.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +0.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +0.797851555291422 +30 +0.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +0.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +0.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +0.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.868083094650066 +20 +1.0777666229051 +30 +0.0 +11 +0.0 +21 +0.205 +31 +0.0 +12 +0.0 +22 +0.497732043121051 +32 +0.0 +13 +0.0 +23 +0.497732043121051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +0.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +0.868083094650066 +30 +0.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +0.0 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +0.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +0.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +0.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +0.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.74 +20 +1.5 +30 +0.0 +11 +0.0 +21 +1.20163144893051 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.20163144893051 +30 +0.0 +11 +0.74 +21 +1.5 +31 +0.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +0.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.20163144893051 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.754603186893545 +20 +1.64826864473226 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +0.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +0.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.72061635471339 +20 +0.772725344843521 +30 +0.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +2.12132034355964 +22 +0.0 +32 +0.0 +13 +2.12132034355964 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +0.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +0.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +0.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +0.0 +22 +0.878679656440357 +32 +0.0 +13 +0.0 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +0.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +0.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +0.0 +21 +2.12132034355964 +31 +0.0 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.12132034355964 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +1.79836855106949 +32 +0.0 +13 +3.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.79836855106949 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +0.0 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.26 +20 +1.5 +30 +0.0 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.754603186893545 +20 +1.35173135526774 +30 +0.0 +11 +0.0 +21 +0.878679656440357 +31 +0.0 +12 +0.0 +22 +1.20163144893051 +32 +0.0 +13 +0.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.878679656440357 +30 +0.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +0.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +0.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.878679656440357 +30 +0.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +3.0 +22 +0.497732043121051 +32 +0.0 +13 +3.0 +23 +0.497732043121051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.0 +21 +1.79836855106949 +31 +0.0 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +0.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.743659607729131 +20 +1.57449302665047 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.743659607729131 +20 +1.42550697334953 +30 +0.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.743659607729131 +20 +1.42550697334953 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.754603186893545 +20 +1.35173135526774 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +0.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +0.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.754603186893545 +20 +1.35173135526774 +30 +0.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +0.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.772725344843521 +20 +1.27938364528661 +30 +0.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.772725344843521 +20 +1.27938364528661 +30 +0.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +0.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.82973983909525 +20 +1.14173848001224 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.82973983909525 +20 +1.14173848001224 +30 +0.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.868083094650066 +20 +1.0777666229051 +30 +0.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +0.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.868083094650066 +20 +1.0777666229051 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +0.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.91251205544432 +20 +1.01786110403563 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.91251205544432 +20 +1.01786110403563 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +0.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +0.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +0.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.01786110403563 +20 +0.91251205544432 +30 +0.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.01786110403563 +20 +0.91251205544432 +30 +0.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +0.868083094650066 +30 +0.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +0.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +0.868083094650066 +30 +0.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +0.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +0.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.14173848001224 +20 +0.82973983909525 +30 +0.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.14173848001224 +20 +0.82973983909525 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +0.797851555291422 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +0.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +0.797851555291422 +30 +0.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +0.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +0.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.27938364528661 +20 +0.772725344843521 +30 +0.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.27938364528661 +20 +0.772725344843521 +30 +0.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.35173135526774 +20 +0.754603186893545 +30 +0.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +0.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.35173135526774 +20 +0.754603186893545 +30 +0.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +0.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +0.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +0.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.74 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.74 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +0.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +0.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +0.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +0.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.72061635471339 +20 +0.772725344843521 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.72061635471339 +20 +0.772725344843521 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +0.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +0.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.85826151998776 +20 +0.82973983909525 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.85826151998776 +20 +0.82973983909525 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +0.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +0.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +0.91251205544432 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +0.91251205544432 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +0.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +0.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +0.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +0.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +0.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +0.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +0.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +0.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +3.0 +22 +0.878679656440357 +32 +0.0 +13 +3.0 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +3.0 +21 +0.878679656440357 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.878679656440357 +30 +0.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.878679656440357 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.878679656440356 +20 +3.0 +30 +0.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +0.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +0.0 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +0.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +0.74 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +0.74 +20 +1.5 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.5 +21 +2.26 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +3.0 + 0 +LINE + 8 +lid_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 + 0 +3DFACE + 8 +lid_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +3.0 +21 +1.79836855106949 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.26 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.0 +21 +2.795 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +3.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.35173135526774 +20 +2.24539681310645 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +3.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +3.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +3.0 +13 +3.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +3.0 +12 +3.0 +22 +0.878679656440357 +32 +3.0 +13 +3.0 +23 +0.878679656440357 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.5 +22 +0.0 +32 +3.0 +13 +1.5 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.74 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.72061635471339 +20 +0.772725344843521 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +3.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.868083094650066 +20 +1.0777666229051 +30 +3.0 +11 +0.0 +21 +0.878679656440357 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +3.0 +13 +0.0 +23 +0.497732043121051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.878679656440357 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +3.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.878679656440357 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.12132034355964 +20 +0.0 +30 +3.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.85826151998776 +20 +0.82973983909525 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +3.0 +11 +0.0 +21 +1.20163144893051 +31 +3.0 +12 +0.0 +22 +0.878679656440357 +32 +3.0 +13 +0.0 +23 +0.878679656440357 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.20163144893051 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +3.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.20163144893051 +30 +3.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +3.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.20163144893051 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +3.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.0 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.35173135526774 +20 +0.754603186893545 +30 +3.0 +11 +1.5 +21 +0.0 +31 +3.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +3.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +0.0 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.205 +21 +0.0 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +3.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +3.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +0.868083094650066 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +3.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +3.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +3.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +3.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +0.797851555291422 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +3.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.878679656440357 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +3.0 +11 +3.0 +21 +0.878679656440357 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +3.0 +21 +0.878679656440357 +31 +3.0 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +0.0 +30 +3.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +0.91251205544432 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.795 +22 +0.0 +32 +3.0 +13 +2.795 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.74 +20 +1.5 +30 +3.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.74 +21 +1.5 +31 +3.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +3.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.754603186893545 +20 +1.64826864473226 +30 +3.0 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +1.79836855106949 +32 +3.0 +13 +0.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.12132034355964 +30 +3.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +3.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +3.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.12132034355964 +30 +3.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.0 +21 +0.205 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +3.0 +13 +0.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +3.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.754603186893545 +20 +1.35173135526774 +30 +3.0 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.0 +22 +1.20163144893051 +32 +3.0 +13 +0.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +3.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.743659607729131 +20 +1.42550697334953 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.743659607729131 +20 +1.57449302665047 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.743659607729131 +20 +1.57449302665047 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.754603186893545 +20 +1.64826864473226 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +3.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.754603186893545 +20 +1.64826864473226 +30 +3.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +3.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +3.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.772725344843521 +20 +1.72061635471339 +30 +3.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.772725344843521 +20 +1.72061635471339 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +3.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +3.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.82973983909525 +20 +1.85826151998776 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.82973983909525 +20 +1.85826151998776 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +3.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +3.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.91251205544432 +20 +1.98213889596437 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.91251205544432 +20 +1.98213889596437 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +3.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +3.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +3.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.01786110403563 +20 +2.08748794455568 +30 +3.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +3.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +3.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +3.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +3.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.14173848001224 +20 +2.17026016090475 +30 +3.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +3.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +3.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +3.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +3.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.27938364528661 +20 +2.22727465515648 +30 +3.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.27938364528661 +20 +2.22727465515648 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.35173135526774 +20 +2.24539681310645 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +3.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.35173135526774 +20 +2.24539681310645 +30 +3.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +3.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +3.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +3.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +2.26 +30 +3.0 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +2.26 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +3.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.64826864473226 +20 +2.24539681310645 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +3.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.64826864473226 +20 +2.24539681310645 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +3.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +3.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +3.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +3.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +3.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +3.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +3.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +3.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +3.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +3.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +3.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +3.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +3.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +3.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +3.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.50226795687895 +30 +3.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +3.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +3.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.50226795687895 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +2.795 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +0.205 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +0.205 +22 +3.0 +32 +0.0 +13 +0.205 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.497732043121052 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.878679656440356 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.20163144893051 +22 +3.0 +32 +0.0 +13 +1.20163144893051 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +0.205 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.497732043121052 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +15 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.50226795687895 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +2.795 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.8525 +20 +3.0 +30 +0.8525 +11 +1.5 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +2.1475 +13 +2.1475 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +1.5 +11 +1.5 +21 +3.0 +31 +0.205 +12 +0.8525 +22 +3.0 +32 +0.8525 +13 +0.8525 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.8525 +21 +3.0 +31 +0.8525 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +1.5 +11 +0.8525 +21 +3.0 +31 +0.8525 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +1.5 +12 +0.8525 +22 +3.0 +32 +2.1475 +13 +0.8525 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +2.795 +21 +3.0 +31 +1.5 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.8525 +20 +3.0 +30 +2.1475 +11 +1.5 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.8525 +22 +0.0 +32 +2.1475 +13 +0.8525 +23 +0.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.1475 +20 +0.0 +30 +0.8525 +11 +1.5 +21 +0.0 +31 +0.205 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +2.795 +13 +0.205 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.795 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.205 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +2.795 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +0.205 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.25 +30 +0.455 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +1.5 +21 +0.25 +31 +0.455 +12 +0.9775 +22 +0.25 +32 +0.9775 +13 +0.9775 +23 +0.25 +33 +0.9775 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +1.5 +20 +0.25 +30 +2.545 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +1.5 +21 +0.25 +31 +2.545 +12 +2.0225 +22 +0.25 +32 +2.0225 +13 +2.0225 +23 +0.25 +33 +2.0225 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.0225 +21 +0.25 +31 +0.9775 +12 +2.1475 +22 +0.0 +32 +0.8525 +13 +2.1475 +23 +0.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +2.0225 +20 +0.25 +30 +0.9775 +11 +2.795 +21 +0.0 +31 +1.5 +12 +2.545 +22 +0.25 +32 +1.5 +13 +2.545 +23 +0.25 +33 +1.5 +70 +1 + 0 +LINE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.205 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +2.795 +31 +0.205 + 0 +LINE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 + 0 +LINE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.5 +31 +0.205 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +0.205 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.878679656440357 +32 +3.0 +13 +3.0 +23 +0.878679656440357 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.878679656440357 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +1.5 +13 +3.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.0 +30 +2.795 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +2.795 +13 +3.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +0.878679656440357 +32 +0.0 +13 +3.0 +23 +0.878679656440357 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.878679656440357 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.79836855106949 +30 +0.0 +11 +3.0 +21 +1.5 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +0.205 +13 +3.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +3.0 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +15 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.5 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +LINE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +1.5 +31 +0.205 + 0 +LINE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +0.205 + 0 +LINE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +2.795 +31 +0.205 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +0.878679656440357 +32 +3.0 +13 +0.0 +23 +0.878679656440357 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +0.878679656440357 +31 +3.0 +12 +0.0 +22 +1.20163144893051 +32 +3.0 +13 +0.0 +23 +1.20163144893051 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.20163144893051 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +0.0 +22 +0.205 +32 +0.0 +13 +0.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +0.878679656440357 +32 +0.0 +13 +0.0 +23 +0.878679656440357 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.878679656440357 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.20163144893051 +32 +0.0 +13 +0.0 +23 +1.20163144893051 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.20163144893051 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.205 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +1.5 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +1.5 +13 +0.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +1.5 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +0.0 +13 +0.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.0 +12 +0.0 +22 +2.795 +32 +0.205 +13 +0.0 +23 +2.795 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.205 +32 +2.795 +13 +0.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +1.5 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +0.205 +13 +0.0 +23 +2.795 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.205 +13 +0.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_base +10 +0.454999999999999 +20 +0.25 +30 +1.5 +11 +0.8525 +21 +0.0 +31 +2.1475 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_base +10 +0.8525 +20 +0.0 +30 +2.1475 +11 +0.454999999999999 +21 +0.25 +31 +1.5 +12 +0.9775 +22 +0.25 +32 +2.0225 +13 +0.9775 +23 +0.25 +33 +2.0225 +70 +1 + 0 +3DFACE + 8 +lid_b +10 +1.5 +20 +0.0 +30 +2.795 +11 +1.5 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_b +10 +2.795 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0 +31 +1.5 +12 +2.7325 +22 +0.0625 +32 +1.5 +13 +2.7325 +23 +0.0625 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_b +10 +1.5 +20 +0.0625 +30 +2.7325 +11 +1.5 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +lid_b +10 +1.5 +20 +0.0625 +30 +2.7325 +11 +2.7325 +21 +0.0625 +31 +1.5 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_b +10 +2.7325 +20 +0.0625 +30 +1.5 +11 +1.5 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_b +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.7325 +21 +0.0625 +31 +1.5 +12 +1.5 +22 +0.0625 +32 +2.7325 +13 +1.5 +23 +0.0625 +33 +2.7325 +70 +1 + 0 +3DFACE + 8 +lid_c +10 +1.5 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0 +31 +0.205 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_c +10 +1.5 +20 +0.0625 +30 +0.2675 +11 +1.5 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_c +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.7325 +21 +0.0625000000000004 +31 +1.5 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_c +10 +2.7325 +20 +0.0625000000000004 +30 +1.5 +11 +1.5 +21 +0.0625 +31 +0.2675 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_c +10 +1.5 +20 +0.0625 +30 +0.2675 +11 +2.795 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_c +10 +2.795 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0625 +31 +0.2675 +12 +2.7325 +22 +0.0625000000000004 +32 +1.5 +13 +2.7325 +23 +0.0625000000000004 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_d +10 +0.205 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_d +10 +1.5 +20 +0.0 +30 +1.5 +11 +0.2675 +21 +0.0625 +31 +1.5 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_d +10 +1.5 +20 +0.0625 +30 +0.2675 +11 +1.5 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +lid_d +10 +1.5 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0625 +31 +0.2675 +12 +0.2675 +22 +0.0625 +32 +1.5 +13 +0.2675 +23 +0.0625 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_d +10 +0.205 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0625 +31 +0.2675 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +lid_d +10 +1.5 +20 +0.0625 +30 +0.2675 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.2675 +22 +0.0625 +32 +1.5 +13 +0.2675 +23 +0.0625 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_a +10 +1.5 +20 +0.0 +30 +2.795 +11 +0.205 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_a +10 +1.5 +20 +0.0625 +30 +2.7325 +11 +1.5 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_a +10 +1.5 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.2675 +22 +0.0625 +32 +1.5 +13 +0.2675 +23 +0.0625 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +lid_a +10 +1.5 +20 +0.0 +30 +2.795 +11 +0.2675 +21 +0.0625 +31 +1.5 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +lid_a +10 +0.2675 +20 +0.0625 +30 +1.5 +11 +1.5 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0625 +32 +2.7325 +13 +1.5 +23 +0.0625 +33 +2.7325 +70 +1 + 0 +3DFACE + 8 +lid_a +10 +1.5 +20 +0.0625 +30 +2.7325 +11 +1.5 +21 +0.0 +31 +1.5 +12 +0.2675 +22 +0.0625 +32 +1.5 +13 +0.2675 +23 +0.0625 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.61135857342883 +20 +3.0 +30 +1.20801452412167 +11 +1.58220277009702 +21 +1.5 +31 +1.1985054650771 +12 +1.58220277009702 +22 +3.0 +32 +1.1985054650771 +13 +1.58220277009702 +23 +3.0 +33 +1.1985054650771 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.58220277009702 +20 +1.5 +30 +1.1985054650771 +11 +1.61135857342883 +21 +3.0 +31 +1.20801452412167 +12 +1.61135857342883 +22 +1.5 +32 +1.20801452412167 +13 +1.61135857342883 +23 +1.5 +33 +1.20801452412167 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.5 +30 +-6.93889390390723e-17 +11 +1.5 +21 +1.5 +31 +1.18780925188093 +12 +1.71583333333333 +22 +1.5 +32 +0.8525 +13 +1.71583333333333 +23 +1.5 +33 +0.8525 +70 +15 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +1.18780925188093 +11 +1.295 +21 +1.5 +31 +-6.93889390390723e-17 +12 +1.295 +22 +1.5 +32 +3.0 +13 +1.295 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +1.18780925188093 +11 +1.295 +21 +1.5 +31 +3.0 +12 +1.5 +22 +1.5 +32 +1.81219074811907 +13 +1.5 +23 +1.5 +33 +1.81219074811907 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +1.81219074811907 +11 +1.295 +21 +1.5 +31 +3.0 +12 +1.50885609734932 +22 +1.5 +32 +1.81237448605758 +13 +1.50885609734932 +23 +1.5 +33 +1.81237448605758 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.50885609734932 +20 +1.5 +30 +1.81237448605758 +11 +1.295 +21 +1.5 +31 +3.0 +12 +1.71583333333333 +22 +1.5 +32 +2.1475 +13 +1.71583333333333 +23 +1.5 +33 +2.1475 +70 +15 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.295 +21 +1.5 +31 +3.0 +12 +2.1475 +22 +1.5 +32 +2.1475 +13 +2.1475 +23 +1.5 +33 +2.1475 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +1.5 +30 +2.1475 +11 +2.1475 +21 +1.5 +31 +1.71583333333333 +12 +1.71583333333333 +22 +1.5 +32 +2.1475 +13 +1.71583333333333 +23 +1.5 +33 +2.1475 +70 +12 + 0 +3DFACE + 8 +taser_base +10 +1.70501413192602 +20 +1.5 +30 +1.73585049440402 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.71583333333333 +22 +1.5 +32 +1.72547110140021 +13 +1.71583333333333 +23 +1.5 +33 +1.72547110140021 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.70501413192602 +21 +1.5 +31 +1.73585049440402 +12 +1.68090954183794 +22 +1.5 +32 +1.7548097087475 +13 +1.68090954183794 +23 +1.5 +33 +1.7548097087475 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.68090954183794 +21 +1.5 +31 +1.7548097087475 +12 +1.65506269396675 +22 +1.5 +32 +1.77131496630259 +13 +1.65506269396675 +23 +1.5 +33 +1.77131496630259 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.65506269396675 +21 +1.5 +31 +1.77131496630259 +12 +1.62772250758676 +22 +1.5 +32 +1.78520731241634 +13 +1.62772250758676 +23 +1.5 +33 +1.78520731241634 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.62772250758676 +21 +1.5 +31 +1.78520731241634 +12 +1.59915228363849 +22 +1.5 +32 +1.79635295620134 +13 +1.59915228363849 +23 +1.5 +33 +1.79635295620134 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.59915228363849 +21 +1.5 +31 +1.79635295620134 +12 +1.56962716899663 +22 +1.5 +32 +1.80464455901512 +13 +1.56962716899663 +23 +1.5 +33 +1.80464455901512 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.56962716899663 +21 +1.5 +31 +1.80464455901512 +12 +1.53943150665524 +22 +1.5 +32 +1.81000226818992 +13 +1.53943150665524 +23 +1.5 +33 +1.81000226818992 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.53943150665524 +21 +1.5 +31 +1.81000226818992 +12 +1.50885609734932 +22 +1.5 +32 +1.81237448605758 +13 +1.50885609734932 +23 +1.5 +33 +1.81237448605758 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +0.8525 +11 +1.71461991087043 +21 +1.5 +31 +1.27285567614847 +12 +1.71583333333333 +22 +1.5 +32 +1.27412051524007 +13 +1.71583333333333 +23 +1.5 +33 +1.27412051524007 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +1.5 +30 +1.27285567614847 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.69132242027198 +22 +1.5 +32 +1.25291300823137 +13 +1.69132242027198 +23 +1.5 +33 +1.25291300823137 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.69132242027198 +20 +1.5 +30 +1.25291300823137 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.66618239017884 +22 +1.5 +32 +1.23534992311649 +13 +1.66618239017884 +23 +1.5 +33 +1.23534992311649 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.66618239017884 +20 +1.5 +30 +1.23534992311649 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.63944193282374 +22 +1.5 +32 +1.22033556291445 +13 +1.63944193282374 +23 +1.5 +33 +1.22033556291445 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.63944193282374 +20 +1.5 +30 +1.22033556291445 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.61135857342883 +22 +1.5 +32 +1.20801452412167 +13 +1.61135857342883 +23 +1.5 +33 +1.20801452412167 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.61135857342883 +20 +1.5 +30 +1.20801452412167 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.58220277009702 +22 +1.5 +32 +1.1985054650771 +13 +1.58220277009702 +23 +1.5 +33 +1.1985054650771 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.58220277009702 +20 +1.5 +30 +1.1985054650771 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.55225530915257 +22 +1.5 +32 +1.19189996321751 +13 +1.55225530915257 +23 +1.5 +33 +1.19189996321751 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.55225530915257 +20 +1.5 +30 +1.19189996321751 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.52180460101532 +22 +1.5 +32 +1.18826163313676 +13 +1.52180460101532 +23 +1.5 +33 +1.18826163313676 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.52180460101532 +20 +1.5 +30 +1.18826163313676 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.5 +22 +1.5 +32 +1.18780925188093 +13 +1.5 +23 +1.5 +33 +1.18780925188093 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +0.8525 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +1.5 +32 +-6.93889390390723e-17 +13 +1.295 +23 +1.5 +33 +-6.93889390390723e-17 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +1.5 +30 +0.8525 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +2.1475 +22 +1.5 +32 +1.28416666666667 +13 +2.1475 +23 +1.5 +33 +1.28416666666667 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.19319581865357 +31 +-2.75981973074096e-17 +12 +1.295 +22 +1.295 +32 +-2.99528920185329e-17 +13 +1.295 +23 +1.295 +33 +-2.99528920185329e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.56962716899663 +20 +1.5 +30 +1.80464455901512 +11 +1.53943150665524 +21 +3.0 +31 +1.81000226818992 +12 +1.53943150665524 +22 +1.5 +32 +1.81000226818992 +13 +1.53943150665524 +23 +1.5 +33 +1.81000226818992 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.53943150665524 +20 +3.0 +30 +1.81000226818992 +11 +1.56962716899663 +21 +1.5 +31 +1.80464455901512 +12 +1.56962716899663 +22 +3.0 +32 +1.80464455901512 +13 +1.56962716899663 +23 +3.0 +33 +1.80464455901512 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.68090954183794 +20 +1.5 +30 +1.7548097087475 +11 +1.65506269396675 +21 +3.0 +31 +1.77131496630259 +12 +1.65506269396675 +22 +1.5 +32 +1.77131496630259 +13 +1.65506269396675 +23 +1.5 +33 +1.77131496630259 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.65506269396675 +20 +3.0 +30 +1.77131496630259 +11 +1.68090954183794 +21 +1.5 +31 +1.7548097087475 +12 +1.68090954183794 +22 +3.0 +32 +1.7548097087475 +13 +1.68090954183794 +23 +3.0 +33 +1.7548097087475 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.52180460101532 +20 +3.0 +30 +1.18826163313676 +11 +1.5 +21 +1.5 +31 +1.18780925188093 +12 +1.5 +22 +3.0 +32 +1.18780925188093 +13 +1.5 +23 +3.0 +33 +1.18780925188093 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +1.18780925188093 +11 +1.52180460101532 +21 +3.0 +31 +1.18826163313676 +12 +1.52180460101532 +22 +1.5 +32 +1.18826163313676 +13 +1.52180460101532 +23 +1.5 +33 +1.18826163313676 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +1.81219074811907 +11 +1.5 +21 +1.5 +31 +1.18780925188093 +12 +1.5 +22 +1.5 +32 +1.81219074811907 +13 +1.5 +23 +1.5 +33 +1.81219074811907 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +1.18780925188093 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.5 +22 +3.0 +32 +1.18780925188093 +13 +1.5 +23 +3.0 +33 +1.18780925188093 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +1.18780925188093 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +3.0 +30 +2.1475 +11 +1.71583333333333 +21 +1.5 +31 +1.72547110140021 +12 +1.71583333333333 +22 +1.5 +32 +2.1475 +13 +1.71583333333333 +23 +1.5 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +1.72547110140021 +11 +1.71583333333333 +21 +3.0 +31 +2.1475 +12 +1.71583333333333 +22 +3.0 +32 +1.72547110140021 +13 +1.71583333333333 +23 +3.0 +33 +1.72547110140021 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.58220277009702 +20 +3.0 +30 +1.1985054650771 +11 +1.55225530915257 +21 +1.5 +31 +1.19189996321751 +12 +1.55225530915257 +22 +3.0 +32 +1.19189996321751 +13 +1.55225530915257 +23 +3.0 +33 +1.19189996321751 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.55225530915257 +20 +1.5 +30 +1.19189996321751 +11 +1.58220277009702 +21 +3.0 +31 +1.1985054650771 +12 +1.58220277009702 +22 +1.5 +32 +1.1985054650771 +13 +1.58220277009702 +23 +1.5 +33 +1.1985054650771 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +2.1475 +13 +2.1475 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +1.5 +30 +1.71583333333333 +11 +1.71583333333333 +21 +3.0 +31 +2.1475 +12 +1.71583333333333 +22 +1.5 +32 +2.1475 +13 +1.71583333333333 +23 +1.5 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +3.0 +30 +2.1475 +11 +2.1475 +21 +1.5 +31 +1.71583333333333 +12 +2.1475 +22 +3.0 +32 +1.71583333333333 +13 +2.1475 +23 +3.0 +33 +1.71583333333333 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.66618239017884 +20 +3.0 +30 +1.23534992311649 +11 +1.63944193282374 +21 +1.5 +31 +1.22033556291445 +12 +1.63944193282374 +22 +3.0 +32 +1.22033556291445 +13 +1.63944193282374 +23 +3.0 +33 +1.22033556291445 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.63944193282374 +20 +1.5 +30 +1.22033556291445 +11 +1.66618239017884 +21 +3.0 +31 +1.23534992311649 +12 +1.66618239017884 +22 +1.5 +32 +1.23534992311649 +13 +1.66618239017884 +23 +1.5 +33 +1.23534992311649 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.69132242027198 +20 +3.0 +30 +1.25291300823137 +11 +1.66618239017884 +21 +1.5 +31 +1.23534992311649 +12 +1.66618239017884 +22 +3.0 +32 +1.23534992311649 +13 +1.66618239017884 +23 +3.0 +33 +1.23534992311649 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.66618239017884 +20 +1.5 +30 +1.23534992311649 +11 +1.69132242027198 +21 +3.0 +31 +1.25291300823137 +12 +1.69132242027198 +22 +1.5 +32 +1.25291300823137 +13 +1.69132242027198 +23 +1.5 +33 +1.25291300823137 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +3.0 +30 +1.27285567614847 +11 +1.69132242027198 +21 +1.5 +31 +1.25291300823137 +12 +1.69132242027198 +22 +3.0 +32 +1.25291300823137 +13 +1.69132242027198 +23 +3.0 +33 +1.25291300823137 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.69132242027198 +20 +1.5 +30 +1.25291300823137 +11 +1.71461991087043 +21 +3.0 +31 +1.27285567614847 +12 +1.71461991087043 +22 +1.5 +32 +1.27285567614847 +13 +1.71461991087043 +23 +1.5 +33 +1.27285567614847 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +3.0 +30 +0.8525 +11 +2.1475 +21 +1.5 +31 +1.28416666666667 +12 +1.71583333333333 +22 +1.5 +32 +0.8525 +13 +1.71583333333333 +23 +1.5 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +1.5 +30 +1.28416666666667 +11 +1.71583333333333 +21 +3.0 +31 +0.8525 +12 +2.1475 +22 +3.0 +32 +1.28416666666667 +13 +2.1475 +23 +3.0 +33 +1.28416666666667 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +2.1475 +21 +1.5 +31 +1.71583333333333 +12 +2.1475 +22 +1.5 +32 +2.1475 +13 +2.1475 +23 +1.5 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +1.5 +30 +1.71583333333333 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +2.1475 +22 +3.0 +32 +1.71583333333333 +13 +2.1475 +23 +3.0 +33 +1.71583333333333 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.53943150665524 +20 +1.5 +30 +1.81000226818992 +11 +1.50885609734932 +21 +3.0 +31 +1.81237448605758 +12 +1.50885609734932 +22 +1.5 +32 +1.81237448605758 +13 +1.50885609734932 +23 +1.5 +33 +1.81237448605758 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.50885609734932 +20 +3.0 +30 +1.81237448605758 +11 +1.53943150665524 +21 +1.5 +31 +1.81000226818992 +12 +1.53943150665524 +22 +3.0 +32 +1.81000226818992 +13 +1.53943150665524 +23 +3.0 +33 +1.81000226818992 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.50885609734932 +20 +1.5 +30 +1.81237448605758 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.5 +22 +1.5 +32 +1.81219074811907 +13 +1.5 +23 +1.5 +33 +1.81219074811907 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +1.81219074811907 +11 +1.50885609734932 +21 +1.5 +31 +1.81237448605758 +12 +1.50885609734932 +22 +3.0 +32 +1.81237448605758 +13 +1.50885609734932 +23 +3.0 +33 +1.81237448605758 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.62772250758676 +20 +1.5 +30 +1.78520731241634 +11 +1.59915228363849 +21 +3.0 +31 +1.79635295620134 +12 +1.59915228363849 +22 +1.5 +32 +1.79635295620134 +13 +1.59915228363849 +23 +1.5 +33 +1.79635295620134 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.59915228363849 +20 +3.0 +30 +1.79635295620134 +11 +1.62772250758676 +21 +1.5 +31 +1.78520731241634 +12 +1.62772250758676 +22 +3.0 +32 +1.78520731241634 +13 +1.62772250758676 +23 +3.0 +33 +1.78520731241634 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.59915228363849 +20 +1.5 +30 +1.79635295620134 +11 +1.56962716899663 +21 +3.0 +31 +1.80464455901512 +12 +1.56962716899663 +22 +1.5 +32 +1.80464455901512 +13 +1.56962716899663 +23 +1.5 +33 +1.80464455901512 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.56962716899663 +20 +3.0 +30 +1.80464455901512 +11 +1.59915228363849 +21 +1.5 +31 +1.79635295620134 +12 +1.59915228363849 +22 +3.0 +32 +1.79635295620134 +13 +1.59915228363849 +23 +3.0 +33 +1.79635295620134 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +3.0 +30 +1.27412051524007 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.71583333333333 +22 +1.5 +32 +1.27412051524007 +13 +1.71583333333333 +23 +1.5 +33 +1.27412051524007 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +0.8525 +11 +1.71583333333333 +21 +3.0 +31 +1.27412051524007 +12 +1.71583333333333 +22 +3.0 +32 +0.8525 +13 +1.71583333333333 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.65506269396675 +20 +1.5 +30 +1.77131496630259 +11 +1.62772250758676 +21 +3.0 +31 +1.78520731241634 +12 +1.62772250758676 +22 +1.5 +32 +1.78520731241634 +13 +1.62772250758676 +23 +1.5 +33 +1.78520731241634 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.62772250758676 +20 +3.0 +30 +1.78520731241634 +11 +1.65506269396675 +21 +1.5 +31 +1.77131496630259 +12 +1.65506269396675 +22 +3.0 +32 +1.77131496630259 +13 +1.65506269396675 +23 +3.0 +33 +1.77131496630259 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.55225530915257 +20 +3.0 +30 +1.19189996321751 +11 +1.52180460101532 +21 +1.5 +31 +1.18826163313676 +12 +1.52180460101532 +22 +3.0 +32 +1.18826163313676 +13 +1.52180460101532 +23 +3.0 +33 +1.18826163313676 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.52180460101532 +20 +1.5 +30 +1.18826163313676 +11 +1.55225530915257 +21 +3.0 +31 +1.19189996321751 +12 +1.55225530915257 +22 +1.5 +32 +1.19189996321751 +13 +1.55225530915257 +23 +1.5 +33 +1.19189996321751 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.54077703531283 +30 +3.0 +11 +2.1475 +21 +1.5 +31 +2.1475 +12 +1.295 +22 +1.5 +32 +3.0 +13 +1.295 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +1.5 +30 +2.1475 +11 +1.295 +21 +1.54077703531283 +31 +3.0 +12 +2.1475 +22 +3.0 +32 +2.1475 +13 +2.1475 +23 +3.0 +33 +2.1475 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +1.54077703531283 +31 +3.0 +12 +1.295 +22 +1.58491378028648 +32 +3.0 +13 +1.295 +23 +1.58491378028648 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +1.58491378028648 +31 +3.0 +12 +1.295 +22 +1.63697662077346 +32 +3.0 +13 +1.295 +23 +1.63697662077346 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +1.63697662077346 +31 +3.0 +12 +1.295 +22 +1.705 +32 +3.0 +13 +1.295 +23 +1.705 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +1.705 +31 +3.0 +12 +1.295 +22 +1.80680418134643 +32 +3.0 +13 +1.295 +23 +1.80680418134643 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +1.80680418134643 +31 +3.0 +12 +1.295 +22 +1.99491378028649 +32 +3.0 +13 +1.295 +23 +1.99491378028649 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +1.99491378028649 +31 +3.0 +12 +1.295 +22 +2.2311863483779 +32 +3.0 +13 +1.295 +23 +2.2311863483779 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +2.2311863483779 +31 +3.0 +12 +1.295 +22 +2.5306045958858 +32 +3.0 +13 +1.295 +23 +2.5306045958858 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +2.5306045958858 +31 +3.0 +12 +1.295 +22 +3.0 +32 +3.0 +13 +1.295 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.54077703531283 +31 +3.0 +12 +1.295 +22 +1.5 +32 +3.0 +13 +1.295 +23 +1.5 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +1.28416666666667 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +2.1475 +22 +1.5 +32 +1.28416666666667 +13 +2.1475 +23 +1.5 +33 +1.28416666666667 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +1.5 +30 +0.8525 +11 +2.1475 +21 +3.0 +31 +1.28416666666667 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.70501413192602 +20 +1.5 +30 +1.73585049440402 +11 +1.68090954183794 +21 +3.0 +31 +1.7548097087475 +12 +1.68090954183794 +22 +1.5 +32 +1.7548097087475 +13 +1.68090954183794 +23 +1.5 +33 +1.7548097087475 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.68090954183794 +20 +3.0 +30 +1.7548097087475 +11 +1.70501413192602 +21 +1.5 +31 +1.73585049440402 +12 +1.70501413192602 +22 +3.0 +32 +1.73585049440402 +13 +1.70501413192602 +23 +3.0 +33 +1.73585049440402 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.63944193282374 +20 +3.0 +30 +1.22033556291445 +11 +1.61135857342883 +21 +1.5 +31 +1.20801452412167 +12 +1.61135857342883 +22 +3.0 +32 +1.20801452412167 +13 +1.61135857342883 +23 +3.0 +33 +1.20801452412167 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.61135857342883 +20 +1.5 +30 +1.20801452412167 +11 +1.63944193282374 +21 +3.0 +31 +1.22033556291445 +12 +1.63944193282374 +22 +1.5 +32 +1.22033556291445 +13 +1.63944193282374 +23 +1.5 +33 +1.22033556291445 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +3.0 +30 +1.27285567614847 +11 +1.71583333333333 +21 +1.5 +31 +1.27412051524007 +12 +1.71461991087043 +22 +1.5 +32 +1.27285567614847 +13 +1.71461991087043 +23 +1.5 +33 +1.27285567614847 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +1.27412051524007 +11 +1.71461991087043 +21 +3.0 +31 +1.27285567614847 +12 +1.71583333333333 +22 +3.0 +32 +1.27412051524007 +13 +1.71583333333333 +23 +3.0 +33 +1.27412051524007 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +1.5 +30 +1.72547110140021 +11 +1.70501413192602 +21 +3.0 +31 +1.73585049440402 +12 +1.70501413192602 +22 +1.5 +32 +1.73585049440402 +13 +1.70501413192602 +23 +1.5 +33 +1.73585049440402 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.70501413192602 +20 +3.0 +30 +1.73585049440402 +11 +1.71583333333333 +21 +1.5 +31 +1.72547110140021 +12 +1.71461991087043 +22 +3.0 +32 +1.72547110140021 +13 +1.71461991087043 +23 +3.0 +33 +1.72547110140021 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +3.0 +30 +1.72547110140021 +11 +1.71583333333333 +21 +1.5 +31 +1.72547110140021 +12 +1.71583333333333 +22 +3.0 +32 +1.72547110140021 +13 +1.71583333333333 +23 +3.0 +33 +1.72547110140021 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +1.5 +30 +0.8525 +11 +1.295 +21 +1.54077703531283 +31 +-3.67694180123813e-17 +12 +1.295 +22 +1.5 +32 +-6.93889390390723e-17 +13 +1.295 +23 +1.5 +33 +-6.93889390390723e-17 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.54077703531283 +30 +-3.67694180123813e-17 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +1.58491378028649 +32 +-3.90153260770453e-17 +13 +1.295 +23 +1.58491378028649 +33 +-3.90153260770453e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.58491378028649 +30 +-3.90153260770453e-17 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +1.63697662077346 +32 +-4.16645552711963e-17 +13 +1.295 +23 +1.63697662077346 +33 +-4.16645552711963e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.63697662077346 +30 +-4.16645552711963e-17 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +1.705 +32 +-4.51259400217434e-17 +13 +1.295 +23 +1.705 +33 +-4.51259400217434e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.705 +30 +-4.51259400217434e-17 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +1.80680418134643 +32 +-5.03062683862146e-17 +13 +1.295 +23 +1.80680418134643 +33 +-5.03062683862146e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.80680418134643 +30 +-5.03062683862146e-17 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +1.99491378028649 +32 +-5.98782670814598e-17 +13 +1.295 +23 +1.99491378028649 +33 +-5.98782670814598e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.99491378028649 +30 +-5.98782670814598e-17 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +2.2311863483779 +32 +-7.19010491523201e-17 +13 +1.295 +23 +2.2311863483779 +33 +-7.19010491523201e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +2.2311863483779 +30 +-7.19010491523201e-17 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +2.5306045958858 +32 +-8.71370131362283e-17 +13 +1.295 +23 +2.5306045958858 +33 +-8.71370131362283e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +2.5306045958858 +30 +-8.71370131362283e-17 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.295 +22 +3.0 +32 +-2.22044604925031e-16 +13 +1.295 +23 +3.0 +33 +-2.22044604925031e-16 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +3.0 +30 +-2.22044604925031e-16 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +0.205 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +1 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +0.740000000000001 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291423 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +2.03740115370178 +20 +0.962598846298225 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893546 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +0.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.295 +31 +-2.99528920185329e-17 +12 +1.295 +22 +1.36302337922654 +32 +-3.1526248723327e-17 +13 +1.295 +23 +1.36302337922654 +33 +-3.1526248723327e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.45922296468717 +31 +-3.37513111136975e-17 +12 +1.295 +22 +1.5 +32 +-6.93889390390723e-17 +13 +1.295 +23 +1.5 +33 +-6.93889390390723e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.80680418134643 +31 +-5.03062683862146e-17 +12 +1.295 +22 +1.99491378028649 +32 +-5.98782670814598e-17 +13 +1.295 +23 +1.99491378028649 +33 +-5.98782670814598e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.41508621971352 +31 +-3.27304438115775e-17 +12 +1.295 +22 +1.45922296468717 +32 +-3.37513111136975e-17 +13 +1.295 +23 +1.45922296468717 +33 +-3.37513111136975e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.5 +31 +-6.93889390390723e-17 +12 +1.295 +22 +1.54077703531283 +32 +-3.67694180123813e-17 +13 +1.295 +23 +1.54077703531283 +33 +-3.67694180123813e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +2.24539681310646 +30 +0.0 +11 +1.295 +21 +2.2311863483779 +31 +-7.19010491523201e-17 +12 +1.295 +22 +2.5306045958858 +32 +-8.71370131362283e-17 +13 +1.295 +23 +2.5306045958858 +33 +-8.71370131362283e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +2.24539681310646 +30 +0.0 +11 +1.295 +21 +1.99491378028649 +31 +-5.98782670814598e-17 +12 +1.295 +22 +2.2311863483779 +32 +-7.19010491523201e-17 +13 +1.295 +23 +2.2311863483779 +33 +-7.19010491523201e-17 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.99491378028649 +30 +-5.98782670814598e-17 +11 +1.35173135526774 +21 +2.24539681310646 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.58491378028649 +31 +-3.90153260770453e-17 +12 +1.295 +22 +1.63697662077346 +32 +-4.16645552711963e-17 +13 +1.295 +23 +1.63697662077346 +33 +-4.16645552711963e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.63697662077346 +31 +-4.16645552711963e-17 +12 +1.295 +22 +1.705 +32 +-4.51259400217434e-17 +13 +1.295 +23 +1.705 +33 +-4.51259400217434e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298225 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298225 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +3.0 +22 +0.497732043121052 +32 +0.0 +13 +3.0 +23 +0.497732043121052 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.497732043121052 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +3.0 +21 +0.497732043121052 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.497732043121052 +30 +0.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.497732043121052 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +3.0 +22 +0.878679656440358 +32 +0.0 +13 +3.0 +23 +0.878679656440358 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +3.0 +21 +0.878679656440358 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.878679656440358 +30 +0.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.878679656440358 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.295 +21 +2.5306045958858 +31 +-8.71370131362283e-17 +12 +1.295 +22 +3.0 +32 +-2.22044604925031e-16 +13 +1.295 +23 +3.0 +33 +-2.22044604925031e-16 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +2.5306045958858 +30 +-8.71370131362283e-17 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310646 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310646 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +2.24539681310646 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +0.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +2.26 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +0.754603186893546 +30 +0.0 +11 +1.295 +21 +0.0 +31 +0.0 +12 +1.295 +22 +0.469395404114199 +32 +-1.0856949693767e-17 +13 +1.295 +23 +0.469395404114199 +33 +-1.0856949693767e-17 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893546 +31 +0.0 +12 +1.5 +22 +4.9960036108132e-16 +32 +0.0 +13 +1.5 +23 +4.9960036108132e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +4.9960036108132e-16 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893546 +31 +0.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +0.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +4.9960036108132e-16 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.5 +22 +0.740000000000001 +32 +0.0 +13 +1.5 +23 +0.740000000000001 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +4.9960036108132e-16 +31 +0.0 +12 +1.5 +22 +0.740000000000001 +32 +0.0 +13 +1.5 +23 +0.740000000000001 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +4.9960036108132e-16 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.79836855106949 +22 +4.9960036108132e-16 +32 +0.0 +13 +1.79836855106949 +23 +4.9960036108132e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +4.9960036108132e-16 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893546 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893546 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.705 +31 +-4.51259400217434e-17 +12 +1.295 +22 +1.80680418134643 +32 +-5.03062683862146e-17 +13 +1.295 +23 +1.80680418134643 +33 +-5.03062683862146e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.36302337922654 +31 +-3.1526248723327e-17 +12 +1.295 +22 +1.41508621971352 +32 +-3.27304438115775e-17 +13 +1.295 +23 +1.41508621971352 +33 +-3.27304438115775e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.85826151998776 +20 +0.829739839095251 +30 +0.0 +11 +2.12132034355964 +21 +4.44089209850063e-16 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291423 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291423 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.12132034355964 +20 +4.44089209850063e-16 +30 +0.0 +11 +1.85826151998776 +21 +0.829739839095251 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.12132034355964 +20 +4.44089209850063e-16 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +2.50226795687895 +22 +4.44089209850063e-16 +32 +0.0 +13 +2.50226795687895 +23 +4.44089209850063e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.72061635471339 +20 +0.772725344843522 +30 +0.0 +11 +1.79836855106949 +21 +4.9960036108132e-16 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893546 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893546 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +4.9960036108132e-16 +30 +0.0 +11 +1.72061635471339 +21 +0.772725344843522 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291423 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291423 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +4.9960036108132e-16 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291423 +31 +0.0 +12 +2.12132034355964 +22 +4.44089209850063e-16 +32 +0.0 +13 +2.12132034355964 +23 +4.44089209850063e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +0.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.79836855106949 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +0.0 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.26 +20 +1.5 +30 +0.0 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +2.795 +21 +3.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +0.754603186893546 +30 +0.0 +11 +1.295 +21 +0.469395404114199 +31 +-1.0856949693767e-17 +12 +1.295 +22 +0.768813651622095 +32 +-1.77823878682707e-17 +13 +1.295 +23 +0.768813651622095 +33 +-1.77823878682707e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +0.768813651622095 +31 +-1.77823878682707e-17 +12 +1.295 +22 +1.00508621971351 +32 +-2.32472888095709e-17 +13 +1.295 +23 +1.00508621971351 +33 +-2.32472888095709e-17 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.768813651622095 +30 +-1.77823878682707e-17 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893546 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893546 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.12132034355964 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +1.79836855106949 +32 +0.0 +13 +3.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +0.912512055444321 +30 +0.0 +11 +2.50226795687895 +21 +4.44089209850063e-16 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +4.44089209850063e-16 +30 +0.0 +11 +1.98213889596437 +21 +0.912512055444321 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298225 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298225 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +4.44089209850063e-16 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298225 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310646 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310646 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +0.740000000000001 +32 +0.0 +13 +1.5 +23 +0.740000000000001 +33 +0.0 +70 +15 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +0.740000000000001 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +0.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893546 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893546 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.64826864473226 +20 +0.754603186893546 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +0.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +0.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.64826864473226 +20 +0.754603186893546 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.72061635471339 +22 +0.772725344843522 +32 +0.0 +13 +1.72061635471339 +23 +0.772725344843522 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.72061635471339 +20 +0.772725344843522 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.72061635471339 +20 +0.772725344843522 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291423 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291423 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.79083940859747 +20 +0.797851555291423 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +0.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.79083940859747 +20 +0.797851555291423 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.85826151998776 +22 +0.829739839095251 +32 +0.0 +13 +1.85826151998776 +23 +0.829739839095251 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.85826151998776 +20 +0.829739839095251 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.85826151998776 +20 +0.829739839095251 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +0.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +1.98213889596437 +22 +0.912512055444321 +32 +0.0 +13 +1.98213889596437 +23 +0.912512055444321 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +0.912512055444321 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +0.912512055444321 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298225 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298225 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.03740115370178 +20 +0.962598846298225 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +0.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.03740115370178 +20 +0.962598846298225 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +0.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +0.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +0.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +0.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +0.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +0.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +0.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893546 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893546 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.5 +22 +0.740000000000001 +32 +0.0 +13 +1.5 +23 +0.740000000000001 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.00508621971351 +31 +-2.32472888095709e-17 +12 +1.295 +22 +1.19319581865357 +32 +-2.75981973074096e-17 +13 +1.295 +23 +1.19319581865357 +33 +-2.75981973074096e-17 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.295 +21 +1.54077703531283 +31 +-3.67694180123813e-17 +12 +1.295 +22 +1.58491378028649 +32 +-3.90153260770453e-17 +13 +1.295 +23 +1.58491378028649 +33 +-3.90153260770453e-17 +70 +0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +0.740000000000001 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893546 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +2.03740115370178 +20 +0.962598846298225 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291423 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.5 +21 +2.26 +31 +3.0 + 0 +LINE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.5 +31 +3.0 +12 +1.295 +22 +1.45922296468717 +32 +3.0 +13 +1.295 +23 +1.45922296468717 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +2.24539681310646 +30 +3.0 +11 +1.295 +21 +2.5306045958858 +31 +3.0 +12 +1.295 +22 +2.2311863483779 +32 +3.0 +13 +1.295 +23 +2.2311863483779 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +2.2311863483779 +31 +3.0 +12 +1.295 +22 +1.99491378028649 +32 +3.0 +13 +1.295 +23 +1.99491378028649 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +2.2311863483779 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310646 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310646 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.36302337922654 +31 +3.0 +12 +1.295 +22 +1.295 +32 +3.0 +13 +1.295 +23 +1.295 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +4.9960036108132e-16 +30 +3.0 +11 +1.295 +21 +0.469395404114199 +31 +3.0 +12 +1.295 +22 +0.0 +32 +3.0 +13 +1.295 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.469395404114199 +30 +3.0 +11 +1.5 +21 +4.9960036108132e-16 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893546 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893546 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +0.754603186893546 +30 +3.0 +11 +1.5 +21 +4.9960036108132e-16 +31 +3.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +3.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +4.9960036108132e-16 +31 +3.0 +12 +1.5 +22 +0.740000000000001 +32 +3.0 +13 +1.5 +23 +0.740000000000001 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.41508621971352 +31 +3.0 +12 +1.295 +22 +1.36302337922654 +32 +3.0 +13 +1.295 +23 +1.36302337922654 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.295 +31 +3.0 +12 +1.295 +22 +1.19319581865357 +32 +3.0 +13 +1.295 +23 +1.19319581865357 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298225 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298225 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.497732043121052 +32 +3.0 +13 +3.0 +23 +0.497732043121052 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.497732043121052 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +3.0 +13 +3.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.497732043121052 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +3.0 +11 +3.0 +21 +0.497732043121052 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +3.0 +21 +0.497732043121052 +31 +3.0 +12 +3.0 +22 +0.878679656440358 +32 +3.0 +13 +3.0 +23 +0.878679656440358 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.58491378028648 +31 +3.0 +12 +1.295 +22 +1.54077703531283 +32 +3.0 +13 +1.295 +23 +1.54077703531283 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.45922296468717 +31 +3.0 +12 +1.295 +22 +1.41508621971352 +32 +3.0 +13 +1.295 +23 +1.41508621971352 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.19319581865357 +31 +3.0 +12 +1.295 +22 +1.00508621971351 +32 +3.0 +13 +1.295 +23 +1.00508621971351 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +0.754603186893546 +30 +3.0 +11 +1.295 +21 +0.768813651622095 +31 +3.0 +12 +1.295 +22 +0.469395404114199 +32 +3.0 +13 +1.295 +23 +0.469395404114199 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.878679656440358 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +3.0 +11 +3.0 +21 +0.878679656440358 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +3.0 +21 +0.878679656440358 +31 +3.0 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.80680418134643 +31 +3.0 +12 +1.295 +22 +1.705 +32 +3.0 +13 +1.295 +23 +1.705 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.99491378028649 +31 +3.0 +12 +1.295 +22 +1.80680418134643 +32 +3.0 +13 +1.295 +23 +1.80680418134643 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.705 +31 +3.0 +12 +1.295 +22 +1.63697662077346 +32 +3.0 +13 +1.295 +23 +1.63697662077346 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.295 +21 +1.63697662077346 +31 +3.0 +12 +1.295 +22 +1.58491378028648 +32 +3.0 +13 +1.295 +23 +1.58491378028648 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +2.24539681310646 +30 +3.0 +11 +1.295 +21 +3.0 +31 +3.0 +12 +1.295 +22 +2.5306045958858 +32 +3.0 +13 +1.295 +23 +2.5306045958858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +3.0 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310646 +31 +3.0 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310646 +31 +3.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +3.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.12132034355964 +20 +4.44089209850063e-16 +30 +3.0 +11 +1.85826151998776 +21 +0.829739839095251 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291423 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291423 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.85826151998776 +20 +0.829739839095251 +30 +3.0 +11 +2.12132034355964 +21 +4.44089209850063e-16 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +2.12132034355964 +21 +4.44089209850063e-16 +31 +3.0 +12 +2.50226795687895 +22 +4.44089209850063e-16 +32 +3.0 +13 +2.50226795687895 +23 +4.44089209850063e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +4.44089209850063e-16 +30 +3.0 +11 +1.98213889596437 +21 +0.912512055444321 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +0.912512055444321 +30 +3.0 +11 +2.50226795687895 +21 +4.44089209850063e-16 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298225 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298225 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.03740115370178 +20 +0.962598846298225 +30 +3.0 +11 +2.50226795687895 +21 +4.44089209850063e-16 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.35173135526774 +20 +0.754603186893546 +30 +3.0 +11 +1.295 +21 +1.00508621971351 +31 +3.0 +12 +1.295 +22 +0.768813651622095 +32 +3.0 +13 +1.295 +23 +0.768813651622095 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.00508621971351 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893546 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +4.9960036108132e-16 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843522 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893546 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893546 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.72061635471339 +20 +0.772725344843522 +30 +3.0 +11 +1.79836855106949 +21 +4.9960036108132e-16 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291423 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291423 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.79083940859747 +20 +0.797851555291423 +30 +3.0 +11 +1.79836855106949 +21 +4.9960036108132e-16 +31 +3.0 +12 +2.12132034355964 +22 +4.44089209850063e-16 +32 +3.0 +13 +2.12132034355964 +23 +4.44089209850063e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.26 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +3.0 +21 +1.79836855106949 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +4.9960036108132e-16 +30 +3.0 +11 +1.5 +21 +0.740000000000001 +31 +3.0 +12 +1.5 +22 +4.9960036108132e-16 +32 +3.0 +13 +1.5 +23 +4.9960036108132e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +0.740000000000001 +30 +3.0 +11 +1.79836855106949 +21 +4.9960036108132e-16 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.79836855106949 +21 +4.9960036108132e-16 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893546 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893546 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +2.50226795687895 +21 +3.0 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893546 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893546 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +3.0 +12 +1.5 +22 +0.740000000000001 +32 +3.0 +13 +1.5 +23 +0.740000000000001 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.5 +21 +0.740000000000001 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +15 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +2.26 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +3.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893546 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893546 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893546 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.64826864473226 +20 +2.24539681310646 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893546 +31 +3.0 +12 +1.72061635471339 +22 +0.772725344843522 +32 +3.0 +13 +1.72061635471339 +23 +0.772725344843522 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.64826864473226 +20 +2.24539681310646 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843522 +31 +3.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +3.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843522 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291423 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291423 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291423 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291423 +31 +3.0 +12 +1.85826151998776 +22 +0.829739839095251 +32 +3.0 +13 +1.85826151998776 +23 +0.829739839095251 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.85826151998776 +21 +0.829739839095251 +31 +3.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +3.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +1.85826151998776 +21 +0.829739839095251 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +3.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.98213889596437 +22 +0.912512055444321 +32 +3.0 +13 +1.98213889596437 +23 +0.912512055444321 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +1.98213889596437 +21 +0.912512055444321 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298225 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298225 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298225 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298225 +31 +3.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +3.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +3.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +3.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +3.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +3.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +3.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +3.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +3.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310646 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310646 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.0 +30 +0.205 +11 +2.50226795687895 +21 +4.44089209850063e-16 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +4.44089209850063e-16 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +2.12132034355964 +22 +4.44089209850063e-16 +32 +0.0 +13 +2.12132034355964 +23 +4.44089209850063e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.12132034355964 +20 +4.44089209850063e-16 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +1.79836855106949 +22 +4.9960036108132e-16 +32 +0.0 +13 +1.79836855106949 +23 +4.9960036108132e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +4.9960036108132e-16 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +1.5 +22 +4.9960036108132e-16 +32 +0.0 +13 +1.5 +23 +4.9960036108132e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +4.9960036108132e-16 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +1.295 +22 +0.0 +32 +0.0 +13 +1.295 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +1.295 +22 +0.0 +32 +3.0 +13 +1.295 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +3.0 +11 +3.0 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +3.0 +11 +3.0 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +3.0 +11 +3.0 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +4.44089209850063e-16 +32 +3.0 +13 +2.50226795687895 +23 +4.44089209850063e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +3.0 +11 +2.50226795687895 +21 +4.44089209850063e-16 +31 +3.0 +12 +2.12132034355964 +22 +4.44089209850063e-16 +32 +3.0 +13 +2.12132034355964 +23 +4.44089209850063e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +3.0 +11 +2.12132034355964 +21 +4.44089209850063e-16 +31 +3.0 +12 +1.79836855106949 +22 +4.9960036108132e-16 +32 +3.0 +13 +1.79836855106949 +23 +4.9960036108132e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +3.0 +11 +1.79836855106949 +21 +4.9960036108132e-16 +31 +3.0 +12 +1.5 +22 +4.9960036108132e-16 +32 +3.0 +13 +1.5 +23 +4.9960036108132e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.469395404114199 +30 +3.0 +11 +1.295 +21 +0.0 +31 +0.0 +12 +1.295 +22 +0.0 +32 +3.0 +13 +1.295 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.0 +30 +0.0 +11 +1.295 +21 +0.469395404114199 +31 +3.0 +12 +1.295 +22 +0.469395404114199 +32 +-1.0856949693767e-17 +13 +1.295 +23 +0.469395404114199 +33 +-1.0856949693767e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.469395404114199 +30 +-1.0856949693767e-17 +11 +1.295 +21 +0.469395404114199 +31 +3.0 +12 +1.295 +22 +0.768813651622095 +32 +-1.77823878682707e-17 +13 +1.295 +23 +0.768813651622095 +33 +-1.77823878682707e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.768813651622095 +30 +-1.77823878682707e-17 +11 +1.295 +21 +0.469395404114199 +31 +3.0 +12 +1.295 +22 +0.768813651622095 +32 +3.0 +13 +1.295 +23 +0.768813651622095 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.768813651622095 +30 +-1.77823878682707e-17 +11 +1.295 +21 +0.768813651622095 +31 +3.0 +12 +1.295 +22 +1.00508621971351 +32 +3.0 +13 +1.295 +23 +1.00508621971351 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +0.768813651622095 +30 +-1.77823878682707e-17 +11 +1.295 +21 +1.00508621971351 +31 +3.0 +12 +1.295 +22 +1.00508621971351 +32 +-2.32472888095709e-17 +13 +1.295 +23 +1.00508621971351 +33 +-2.32472888095709e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.00508621971351 +30 +-2.32472888095709e-17 +11 +1.295 +21 +1.00508621971351 +31 +3.0 +12 +1.295 +22 +1.19319581865357 +32 +-2.75981973074096e-17 +13 +1.295 +23 +1.19319581865357 +33 +-2.75981973074096e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.19319581865357 +30 +-2.75981973074096e-17 +11 +1.295 +21 +1.00508621971351 +31 +3.0 +12 +1.295 +22 +1.19319581865357 +32 +3.0 +13 +1.295 +23 +1.19319581865357 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.19319581865357 +30 +-2.75981973074096e-17 +11 +1.295 +21 +1.19319581865357 +31 +3.0 +12 +1.295 +22 +1.295 +32 +-2.99528920185329e-17 +13 +1.295 +23 +1.295 +33 +-2.99528920185329e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.295 +30 +-2.99528920185329e-17 +11 +1.295 +21 +1.19319581865357 +31 +3.0 +12 +1.295 +22 +1.295 +32 +3.0 +13 +1.295 +23 +1.295 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.295 +30 +-2.99528920185329e-17 +11 +1.295 +21 +1.295 +31 +3.0 +12 +1.295 +22 +1.36302337922654 +32 +-3.1526248723327e-17 +13 +1.295 +23 +1.36302337922654 +33 +-3.1526248723327e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.36302337922654 +30 +-3.1526248723327e-17 +11 +1.295 +21 +1.295 +31 +3.0 +12 +1.295 +22 +1.36302337922654 +32 +3.0 +13 +1.295 +23 +1.36302337922654 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.36302337922654 +30 +-3.1526248723327e-17 +11 +1.295 +21 +1.36302337922654 +31 +3.0 +12 +1.295 +22 +1.41508621971352 +32 +3.0 +13 +1.295 +23 +1.41508621971352 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.36302337922654 +30 +-3.1526248723327e-17 +11 +1.295 +21 +1.41508621971352 +31 +3.0 +12 +1.295 +22 +1.41508621971352 +32 +-3.27304438115775e-17 +13 +1.295 +23 +1.41508621971352 +33 +-3.27304438115775e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.41508621971352 +30 +-3.27304438115775e-17 +11 +1.295 +21 +1.41508621971352 +31 +3.0 +12 +1.295 +22 +1.45922296468717 +32 +3.0 +13 +1.295 +23 +1.45922296468717 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.41508621971352 +30 +-3.27304438115775e-17 +11 +1.295 +21 +1.45922296468717 +31 +3.0 +12 +1.295 +22 +1.45922296468717 +32 +-3.37513111136975e-17 +13 +1.295 +23 +1.45922296468717 +33 +-3.37513111136975e-17 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.45922296468717 +30 +-3.37513111136975e-17 +11 +1.295 +21 +1.45922296468717 +31 +3.0 +12 +1.295 +22 +1.5 +32 +3.0 +13 +1.295 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +1.295 +20 +1.45922296468717 +30 +-3.37513111136975e-17 +11 +1.295 +21 +1.5 +31 +3.0 +12 +1.295 +22 +1.5 +32 +-6.93889390390723e-17 +13 +1.295 +23 +1.5 +33 +-6.93889390390723e-17 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.295 +22 +3.0 +32 +3.0 +13 +1.295 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +0.205 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.295 +22 +3.0 +32 +-2.22044604925031e-16 +13 +1.295 +23 +3.0 +33 +-2.22044604925031e-16 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +0.205 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +2.795 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +2.795 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +1.71583333333333 +11 +2.795 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +1.5 +13 +2.1475 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +1.71583333333333 +12 +2.1475 +22 +3.0 +32 +2.1475 +13 +2.1475 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +15 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.50226795687895 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +1.28416666666667 +11 +2.795 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +1.28416666666667 +12 +2.1475 +22 +3.0 +32 +1.5 +13 +2.1475 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +3.0 +30 +1.5 +11 +1.71583333333333 +21 +3.0 +31 +1.27412051524007 +12 +1.71461991087043 +22 +3.0 +32 +1.27285567614847 +13 +1.71461991087043 +23 +3.0 +33 +1.27285567614847 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71583333333333 +20 +3.0 +30 +1.27412051524007 +11 +1.71461991087043 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +1.28416666666667 +13 +2.1475 +23 +3.0 +33 +1.28416666666667 +70 +15 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +1.28416666666667 +11 +1.71461991087043 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +1.5 +13 +2.1475 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +1.28416666666667 +11 +1.71583333333333 +21 +3.0 +31 +0.8525 +12 +1.71583333333333 +22 +3.0 +32 +1.27412051524007 +13 +1.71583333333333 +23 +3.0 +33 +1.27412051524007 +70 +12 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +3.0 +30 +1.72547110140021 +11 +2.1475 +21 +3.0 +31 +1.5 +12 +1.71461991087043 +22 +3.0 +32 +1.5 +13 +1.71461991087043 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +1.5 +11 +1.71461991087043 +21 +3.0 +31 +1.72547110140021 +12 +2.1475 +22 +3.0 +32 +1.71583333333333 +13 +2.1475 +23 +3.0 +33 +1.71583333333333 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +1.71583333333333 +11 +1.71461991087043 +21 +3.0 +31 +1.72547110140021 +12 +1.71583333333333 +22 +3.0 +32 +1.72547110140021 +13 +1.71583333333333 +23 +3.0 +33 +1.72547110140021 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +2.1475 +20 +3.0 +30 +1.71583333333333 +11 +1.71583333333333 +21 +3.0 +31 +1.72547110140021 +12 +1.71583333333333 +22 +3.0 +32 +2.1475 +13 +1.71583333333333 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +1.5 +11 +1.52180460101532 +21 +3.0 +31 +1.18826163313676 +12 +1.5 +22 +3.0 +32 +1.18780925188093 +13 +1.5 +23 +3.0 +33 +1.18780925188093 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.52180460101532 +20 +3.0 +30 +1.18826163313676 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.55225530915257 +22 +3.0 +32 +1.19189996321751 +13 +1.55225530915257 +23 +3.0 +33 +1.19189996321751 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.55225530915257 +20 +3.0 +30 +1.19189996321751 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.58220277009702 +22 +3.0 +32 +1.1985054650771 +13 +1.58220277009702 +23 +3.0 +33 +1.1985054650771 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.58220277009702 +20 +3.0 +30 +1.1985054650771 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.61135857342883 +22 +3.0 +32 +1.20801452412167 +13 +1.61135857342883 +23 +3.0 +33 +1.20801452412167 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.61135857342883 +20 +3.0 +30 +1.20801452412167 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.63944193282374 +22 +3.0 +32 +1.22033556291445 +13 +1.63944193282374 +23 +3.0 +33 +1.22033556291445 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.63944193282374 +20 +3.0 +30 +1.22033556291445 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.66618239017884 +22 +3.0 +32 +1.23534992311649 +13 +1.66618239017884 +23 +3.0 +33 +1.23534992311649 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.66618239017884 +20 +3.0 +30 +1.23534992311649 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.69132242027198 +22 +3.0 +32 +1.25291300823137 +13 +1.69132242027198 +23 +3.0 +33 +1.25291300823137 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.69132242027198 +20 +3.0 +30 +1.25291300823137 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.71461991087043 +22 +3.0 +32 +1.27285567614847 +13 +1.71461991087043 +23 +3.0 +33 +1.27285567614847 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.5 +20 +3.0 +30 +1.81219074811907 +11 +1.71461991087043 +21 +3.0 +31 +1.72547110140021 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +3.0 +30 +1.72547110140021 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.70501413192602 +22 +3.0 +32 +1.73585049440402 +13 +1.70501413192602 +23 +3.0 +33 +1.73585049440402 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.70501413192602 +20 +3.0 +30 +1.73585049440402 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.68090954183794 +22 +3.0 +32 +1.7548097087475 +13 +1.68090954183794 +23 +3.0 +33 +1.7548097087475 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.68090954183794 +20 +3.0 +30 +1.7548097087475 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.65506269396675 +22 +3.0 +32 +1.77131496630259 +13 +1.65506269396675 +23 +3.0 +33 +1.77131496630259 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.65506269396675 +20 +3.0 +30 +1.77131496630259 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.62772250758676 +22 +3.0 +32 +1.78520731241634 +13 +1.62772250758676 +23 +3.0 +33 +1.78520731241634 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.62772250758676 +20 +3.0 +30 +1.78520731241634 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.59915228363849 +22 +3.0 +32 +1.79635295620134 +13 +1.59915228363849 +23 +3.0 +33 +1.79635295620134 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.59915228363849 +20 +3.0 +30 +1.79635295620134 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.56962716899663 +22 +3.0 +32 +1.80464455901512 +13 +1.56962716899663 +23 +3.0 +33 +1.80464455901512 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.56962716899663 +20 +3.0 +30 +1.80464455901512 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.53943150665524 +22 +3.0 +32 +1.81000226818992 +13 +1.53943150665524 +23 +3.0 +33 +1.81000226818992 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +1.53943150665524 +20 +3.0 +30 +1.81000226818992 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.50885609734932 +22 +3.0 +32 +1.81237448605758 +13 +1.50885609734932 +23 +3.0 +33 +1.81237448605758 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +3.0 +30 +1.72547110140021 +11 +1.71461991087043 +21 +3.0 +31 +1.5 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +1.71461991087043 +20 +3.0 +30 +1.5 +11 +1.71461991087043 +21 +3.0 +31 +1.27285567614847 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +0.205 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +0 + 0 +LINE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.5 +31 +0.205 + 0 +LINE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 + 0 +LINE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +2.795 +31 +0.205 + 0 +LINE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.205 +31 +1.5 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +1.5 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +0.205 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.497732043121052 +32 +3.0 +13 +3.0 +23 +0.497732043121052 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.497732043121052 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.878679656440358 +32 +3.0 +13 +3.0 +23 +0.878679656440358 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.878679656440358 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.0 +30 +2.795 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +1.5 +13 +3.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +0.205 +13 +3.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +15 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.5 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.497732043121052 +30 +0.0 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.497732043121052 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.497732043121052 +31 +0.0 +12 +3.0 +22 +0.878679656440358 +32 +0.0 +13 +3.0 +23 +0.878679656440358 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.878679656440358 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +2.795 +13 +3.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +1.5 +30 +0.0 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.79836855106949 +32 +0.0 +13 +3.0 +23 +1.79836855106949 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +3.0 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.0 +22 +1.79836855106949 +32 +3.0 +13 +0.0 +23 +1.79836855106949 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +0.205 +32 +2.795 +13 +0.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +1.5 +32 +2.277 +13 +0.0 +23 +1.5 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.53125 +21 +3.0 +31 +0.723 +12 +0.205 +22 +3.0 +32 +0.723 +13 +0.205 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +0.723 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.53125 +22 +3.0 +32 +0.982 +13 +0.53125 +23 +3.0 +33 +0.982 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +0.982 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.53125 +22 +3.0 +32 +1.17375 +13 +0.53125 +23 +3.0 +33 +1.17375 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +3.0 +30 +2.795 +11 +0.777 +21 +1.5 +31 +3.0 +12 +0.777 +22 +1.5 +32 +2.795 +13 +0.777 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.5 +30 +3.0 +11 +0.777 +21 +3.0 +31 +2.795 +12 +0.777 +22 +1.64381364161549 +32 +3.0 +13 +0.777 +23 +1.64381364161549 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.64381364161549 +30 +3.0 +11 +0.777 +21 +3.0 +31 +2.795 +12 +0.777 +22 +1.79947640559575 +32 +3.0 +13 +0.777 +23 +1.79947640559575 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.79947640559575 +30 +3.0 +11 +0.777 +21 +3.0 +31 +2.795 +12 +0.777 +22 +1.98309315521565 +32 +3.0 +13 +0.777 +23 +1.98309315521565 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.98309315521565 +30 +3.0 +11 +0.777 +21 +3.0 +31 +2.795 +12 +0.777 +22 +2.223 +32 +3.0 +13 +0.777 +23 +2.223 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +2.223 +30 +3.0 +11 +0.777 +21 +3.0 +31 +2.795 +12 +0.777 +22 +2.58204596640715 +32 +3.0 +13 +0.777 +23 +2.58204596640715 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +2.58204596640715 +30 +3.0 +11 +0.777 +21 +3.0 +31 +2.795 +12 +0.777 +22 +3.0 +32 +3.0 +13 +0.777 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +0.0 +30 +3.0 +11 +0.0 +21 +0.0 +31 +2.22044604925031e-16 +12 +1.295 +22 +0.0 +32 +2.22044604925031e-16 +13 +1.295 +23 +0.0 +33 +2.22044604925031e-16 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.0 +30 +2.22044604925031e-16 +11 +1.295 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +0.205 +13 +0.0 +23 +0.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.0 +30 +0.205 +11 +1.295 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.0 +30 +1.5 +11 +1.295 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.0 +30 +2.795 +11 +1.295 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.98309315521565 +30 +3.0 +11 +0.0 +21 +2.795 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +3.0 +11 +0.777 +21 +1.98309315521565 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.777 +21 +1.98309315521565 +31 +3.0 +12 +0.777 +22 +2.223 +32 +3.0 +13 +0.777 +23 +2.223 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.0 +21 +2.795 +31 +0.723 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +0.723 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +0.723 +13 +0.0 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +2.018 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.53125 +22 +1.5 +32 +2.018 +13 +0.53125 +23 +1.5 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +1.5 +30 +2.277 +11 +0.53125 +21 +3.0 +31 +2.018 +12 +0.53125 +22 +3.0 +32 +2.277 +13 +0.53125 +23 +3.0 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.0 +21 +3.0 +31 +3.0 +12 +0.205 +22 +3.0 +32 +3.0 +13 +0.205 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +1.82625 +11 +0.796875 +21 +3.0 +31 +1.5 +12 +0.53125 +22 +3.0 +32 +1.5 +13 +0.53125 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +1.5 +11 +0.53125 +21 +3.0 +31 +1.82625 +12 +0.796875 +22 +3.0 +32 +1.759 +13 +0.796875 +23 +3.0 +33 +1.759 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +1.759 +11 +0.53125 +21 +3.0 +31 +1.82625 +12 +0.796875 +22 +3.0 +32 +2.018 +13 +0.796875 +23 +3.0 +33 +2.018 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +2.018 +11 +0.53125 +21 +3.0 +31 +1.82625 +12 +0.723000000000001 +22 +3.0 +32 +2.018 +13 +0.723000000000001 +23 +3.0 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.723 +20 +3.0 +30 +0.982 +11 +0.53125 +21 +1.5 +31 +0.982 +12 +0.53125 +22 +3.0 +32 +0.982 +13 +0.53125 +23 +3.0 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +1.5 +30 +0.982 +11 +0.723 +21 +3.0 +31 +0.982 +12 +0.796875 +22 +1.5 +32 +0.982 +13 +0.796875 +23 +1.5 +33 +0.982 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +0.982 +11 +0.723 +21 +3.0 +31 +0.982 +12 +0.796875 +22 +3.0 +32 +0.982 +13 +0.796875 +23 +3.0 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.777 +22 +1.5 +32 +2.795 +13 +0.777 +23 +1.5 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.5 +30 +2.795 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.777 +22 +3.0 +32 +2.795 +13 +0.777 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +1.5 +30 +1.52655665885959e-16 +11 +1.295 +21 +0.0 +31 +3.0 +12 +1.295 +22 +0.0 +32 +2.22044604925031e-16 +13 +1.295 +23 +0.0 +33 +2.22044604925031e-16 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +0.0 +30 +3.0 +11 +1.295 +21 +1.5 +31 +1.52655665885959e-16 +12 +1.295 +22 +1.5 +32 +3.0 +13 +1.295 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +1.98309315521565 +30 +4.44089209850063e-17 +11 +0.0 +21 +2.12132034355964 +31 +0.0 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.776999999999999 +21 +1.98309315521565 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +1.79947640559575 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.79947640559575 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +0.205 +32 +2.22044604925031e-16 +13 +0.0 +23 +0.205 +33 +2.22044604925031e-16 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +1.5 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +0.723 +11 +0.53125 +21 +1.5 +31 +0.982 +12 +0.53125 +22 +1.5 +32 +0.723 +13 +0.53125 +23 +1.5 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +1.5 +30 +0.982 +11 +0.53125 +21 +3.0 +31 +0.723 +12 +0.53125 +22 +3.0 +32 +0.982 +13 +0.53125 +23 +3.0 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +1.5 +30 +2.277 +11 +0.0 +21 +2.277 +31 +2.277 +12 +0.0 +22 +1.5 +32 +2.277 +13 +0.0 +23 +1.5 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.277 +30 +2.277 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.0 +22 +2.795 +32 +2.277 +13 +0.0 +23 +2.795 +33 +2.277 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +2.277 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.0 +22 +3.0 +32 +2.277 +13 +0.0 +23 +3.0 +33 +2.277 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +2.277 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.205 +22 +3.0 +32 +2.277 +13 +0.205 +23 +3.0 +33 +2.277 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +2.277 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.53125 +22 +3.0 +32 +2.277 +13 +0.53125 +23 +3.0 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +1.759 +11 +0.796875 +21 +1.5 +31 +2.018 +12 +0.796875 +22 +1.5 +32 +1.759 +13 +0.796875 +23 +1.5 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +2.018 +11 +0.796875 +21 +3.0 +31 +1.759 +12 +0.796875 +22 +3.0 +32 +2.018 +13 +0.796875 +23 +3.0 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +1.5 +11 +1.0625 +21 +3.0 +31 +1.241 +12 +0.796875 +22 +3.0 +32 +1.241 +13 +0.796875 +23 +3.0 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +3.0 +30 +1.241 +11 +0.796875 +21 +3.0 +31 +1.5 +12 +1.0625 +22 +3.0 +32 +1.5 +13 +1.0625 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.79947640559575 +30 +3.0 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.50226795687895 +30 +3.0 +11 +0.777 +21 +1.79947640559575 +31 +3.0 +12 +0.777 +22 +1.98309315521565 +32 +3.0 +13 +0.777 +23 +1.98309315521565 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.205 +21 +3.0 +31 +0.723 +12 +0.0 +22 +3.0 +32 +0.723 +13 +0.0 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +0.723 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +0.982 +11 +0.796875 +21 +1.5 +31 +1.241 +12 +0.796875 +22 +1.5 +32 +0.982 +13 +0.796875 +23 +1.5 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +1.241 +11 +0.796875 +21 +3.0 +31 +0.982 +12 +0.796875 +22 +3.0 +32 +1.241 +13 +0.796875 +23 +3.0 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +1.5 +13 +0.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +1.5 +30 +1.759 +11 +0.796875 +21 +3.0 +31 +1.759 +12 +0.796875 +22 +1.5 +32 +1.759 +13 +0.796875 +23 +1.5 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +1.759 +11 +1.0625 +21 +1.5 +31 +1.759 +12 +1.0625 +22 +3.0 +32 +1.759 +13 +1.0625 +23 +3.0 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +2.22044604925031e-16 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +2.277 +11 +0.0 +21 +2.795 +31 +1.5 +12 +0.0 +22 +2.795 +32 +2.277 +13 +0.0 +23 +2.795 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.277 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.777 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.777 +22 +3.0 +32 +3.0 +13 +0.777 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.259 +22 +3.0 +32 +3.0 +13 +0.259 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +3.0 +30 +3.0 +11 +0.259 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +3.0 +30 +3.0 +11 +0.497732043121052 +21 +3.0 +31 +3.0 +12 +0.518 +22 +3.0 +32 +3.0 +13 +0.518 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +1.17375 +11 +0.723 +21 +3.0 +31 +0.982 +12 +0.53125 +22 +3.0 +32 +0.982 +13 +0.53125 +23 +3.0 +33 +0.982 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +1.5 +32 +0.723 +13 +0.0 +23 +1.5 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +1.5 +30 +0.205 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +0.205 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +0.776999999999999 +22 +3.0 +32 +0.205 +13 +0.776999999999999 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +2.018 +11 +0.53125 +21 +3.0 +31 +2.018 +12 +0.53125 +22 +1.5 +32 +2.018 +13 +0.53125 +23 +1.5 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +2.018 +11 +0.796875 +21 +1.5 +31 +2.018 +12 +0.723000000000001 +22 +3.0 +32 +2.018 +13 +0.723000000000001 +23 +3.0 +33 +2.018 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.723000000000001 +20 +3.0 +30 +2.018 +11 +0.796875 +21 +1.5 +31 +2.018 +12 +0.796875 +22 +3.0 +32 +2.018 +13 +0.796875 +23 +3.0 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +2.22044604925031e-16 +13 +0.0 +23 +2.795 +33 +2.22044604925031e-16 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.64381364161549 +30 +3.0 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +1.79836855106949 +32 +3.0 +13 +0.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.12132034355964 +30 +3.0 +11 +0.777 +21 +1.64381364161549 +31 +3.0 +12 +0.777 +22 +1.79947640559575 +32 +3.0 +13 +0.777 +23 +1.79947640559575 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +1.79947640559575 +30 +4.44089209850063e-17 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.776999999999999 +21 +1.79947640559575 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +1.5 +32 +8.88178419700126e-17 +13 +0.776999999999999 +23 +1.5 +33 +8.88178419700126e-17 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.0 +31 +2.22044604925031e-16 +12 +0.0 +22 +0.0 +32 +0.205 +13 +0.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +2.22044604925031e-16 +11 +0.776999999999999 +21 +3.0 +31 +8.88178419700126e-17 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +3.0 +30 +8.88178419700126e-17 +11 +0.205 +21 +3.0 +31 +2.22044604925031e-16 +12 +0.776999999999999 +22 +3.0 +32 +0.205 +13 +0.776999999999999 +23 +3.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +2.22044604925031e-16 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +2.22044604925031e-16 +11 +0.0 +21 +2.795 +31 +2.22044604925031e-16 +12 +0.0 +22 +2.795 +32 +0.205 +13 +0.0 +23 +2.795 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +2.22044604925031e-16 +11 +0.776999999999999 +21 +2.223 +31 +4.44089209850063e-17 +12 +0.0 +22 +3.0 +32 +2.22044604925031e-16 +13 +0.0 +23 +3.0 +33 +2.22044604925031e-16 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +2.223 +30 +4.44089209850063e-17 +11 +0.205 +21 +3.0 +31 +2.22044604925031e-16 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +2.223 +30 +4.44089209850063e-17 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +0.776999999999999 +22 +2.58204596640715 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +2.58204596640715 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +1.82625 +11 +0.53125 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.5 +30 +3.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.777 +21 +1.5 +31 +3.0 +12 +0.777 +22 +1.64381364161549 +32 +3.0 +13 +0.777 +23 +1.64381364161549 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.723000000000001 +20 +3.0 +30 +2.018 +11 +0.53125 +21 +3.0 +31 +1.82625 +12 +0.53125 +22 +3.0 +32 +2.018 +13 +0.53125 +23 +3.0 +33 +2.018 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +1.17375 +11 +0.796875 +21 +3.0 +31 +0.982 +12 +0.723 +22 +3.0 +32 +0.982 +13 +0.723 +23 +3.0 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +0.982 +11 +0.53125 +21 +3.0 +31 +1.17375 +12 +0.796875 +22 +3.0 +32 +1.241 +13 +0.796875 +23 +3.0 +33 +1.241 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +1.241 +11 +0.53125 +21 +3.0 +31 +1.17375 +12 +0.53125 +22 +3.0 +32 +1.5 +13 +0.53125 +23 +3.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +1.241 +11 +0.53125 +21 +3.0 +31 +1.5 +12 +0.796875 +22 +3.0 +32 +1.5 +13 +0.796875 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +3.0 +30 +8.88178419700126e-17 +11 +0.776999999999999 +21 +2.58204596640715 +31 +4.44089209850063e-17 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +0.723 +11 +0.0 +21 +2.795 +31 +0.723 +12 +0.0 +22 +3.0 +32 +0.723 +13 +0.0 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +0.723 +11 +0.205 +21 +3.0 +31 +0.723 +12 +0.0 +22 +2.277 +32 +0.723 +13 +0.0 +23 +2.277 +33 +0.723 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.277 +30 +0.723 +11 +0.205 +21 +3.0 +31 +0.723 +12 +0.0 +22 +1.5 +32 +0.723 +13 +0.0 +23 +1.5 +33 +0.723 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +0.723 +11 +0.205 +21 +3.0 +31 +0.723 +12 +0.53125 +22 +1.5 +32 +0.723 +13 +0.53125 +23 +1.5 +33 +0.723 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +1.5 +30 +0.723 +11 +0.205 +21 +3.0 +31 +0.723 +12 +0.53125 +22 +3.0 +32 +0.723 +13 +0.53125 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.277 +30 +0.723 +11 +0.0 +21 +1.5 +31 +0.723 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +2.277 +11 +0.53125 +21 +3.0 +31 +1.82625 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +1.82625 +11 +0.205 +21 +3.0 +31 +2.277 +12 +0.53125 +22 +3.0 +32 +2.018 +13 +0.53125 +23 +3.0 +33 +2.018 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +2.018 +11 +0.205 +21 +3.0 +31 +2.277 +12 +0.53125 +22 +3.0 +32 +2.277 +13 +0.53125 +23 +3.0 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +3.0 +30 +1.241 +11 +1.0625 +21 +1.5 +31 +1.759 +12 +1.0625 +22 +1.5 +32 +1.241 +13 +1.0625 +23 +1.5 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +1.5 +30 +1.759 +11 +1.0625 +21 +3.0 +31 +1.241 +12 +1.0625 +22 +3.0 +32 +1.759 +13 +1.0625 +23 +3.0 +33 +1.759 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +3.0 +30 +1.759 +11 +1.0625 +21 +3.0 +31 +1.241 +12 +1.0625 +22 +3.0 +32 +1.5 +13 +1.0625 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +2.277 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.277 +12 +0.205 +22 +3.0 +32 +2.277 +13 +0.205 +23 +3.0 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +1.79947640559575 +30 +4.44089209850063e-17 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +0.776999999999999 +22 +1.5 +32 +8.88178419700126e-17 +13 +0.776999999999999 +23 +1.5 +33 +8.88178419700126e-17 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +1.5 +30 +0.205 +11 +0.776999999999999 +21 +1.79947640559575 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +3.0 +32 +0.205 +13 +0.776999999999999 +23 +3.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +3.0 +30 +0.205 +11 +0.776999999999999 +21 +1.79947640559575 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +1.98309315521565 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.98309315521565 +33 +4.44089209850063e-17 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +3.0 +30 +0.205 +11 +0.776999999999999 +21 +1.98309315521565 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +2.223 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +2.223 +33 +4.44089209850063e-17 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +3.0 +30 +0.205 +11 +0.776999999999999 +21 +2.223 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +2.58204596640715 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +2.58204596640715 +33 +4.44089209850063e-17 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +3.0 +30 +0.205 +11 +0.776999999999999 +21 +2.58204596640715 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +3.0 +32 +8.88178419700126e-17 +13 +0.776999999999999 +23 +3.0 +33 +8.88178419700126e-17 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +2.223 +30 +4.44089209850063e-17 +11 +0.0 +21 +2.795 +31 +2.22044604925031e-16 +12 +0.0 +22 +3.0 +32 +2.22044604925031e-16 +13 +0.0 +23 +3.0 +33 +2.22044604925031e-16 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +2.22044604925031e-16 +11 +0.776999999999999 +21 +2.223 +31 +4.44089209850063e-17 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.776999999999999 +21 +2.223 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +1.98309315521565 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.98309315521565 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +2.22044604925031e-16 +12 +0.0 +22 +3.0 +32 +2.22044604925031e-16 +13 +0.0 +23 +3.0 +33 +2.22044604925031e-16 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +2.22044604925031e-16 +11 +0.0 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +2.223 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.777 +21 +2.223 +31 +3.0 +12 +0.259 +22 +3.0 +32 +3.0 +13 +0.259 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.259 +20 +3.0 +30 +3.0 +11 +0.777 +21 +2.223 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +0.777 +21 +2.223 +31 +3.0 +12 +0.777 +22 +2.58204596640715 +32 +3.0 +13 +0.777 +23 +2.58204596640715 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.205 +32 +2.795 +13 +0.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +3.0 +30 +1.5 +11 +0.53125 +21 +3.0 +31 +1.17375 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.277 +30 +2.277 +11 +0.0 +21 +2.795 +31 +1.5 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +2.277 +31 +2.277 +12 +0.0 +22 +2.795 +32 +2.277 +13 +0.0 +23 +2.795 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.205 +31 +2.22044604925031e-16 +12 +0.0 +22 +0.0 +32 +2.22044604925031e-16 +13 +0.0 +23 +0.0 +33 +2.22044604925031e-16 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +3.0 +30 +1.241 +11 +0.796875 +21 +1.5 +31 +1.241 +12 +0.796875 +22 +3.0 +32 +1.241 +13 +0.796875 +23 +3.0 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +1.241 +11 +1.0625 +21 +3.0 +31 +1.241 +12 +1.0625 +22 +1.5 +32 +1.241 +13 +1.0625 +23 +1.5 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +2.58204596640715 +30 +3.0 +11 +0.518 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.518 +20 +3.0 +30 +3.0 +11 +0.777 +21 +2.58204596640715 +31 +3.0 +12 +0.777 +22 +3.0 +32 +3.0 +13 +0.777 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +3.0 +30 +1.759 +11 +1.0625 +21 +3.0 +31 +1.5 +12 +0.796875 +22 +3.0 +32 +1.5 +13 +0.796875 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +3.0 +30 +1.5 +11 +0.796875 +21 +3.0 +31 +1.759 +12 +1.0625 +22 +3.0 +32 +1.759 +13 +1.0625 +23 +3.0 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +2.018 +11 +1.0625 +21 +1.5 +31 +1.759 +12 +0.796875 +22 +1.5 +32 +1.759 +13 +0.796875 +23 +1.5 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +1.5 +30 +2.277 +11 +0.796875 +21 +1.5 +31 +2.018 +12 +0.53125 +22 +1.5 +32 +2.018 +13 +0.53125 +23 +1.5 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.0 +22 +1.5 +32 +2.277 +13 +0.0 +23 +1.5 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +1.5 +30 +0.205 +11 +1.295 +21 +1.5 +31 +1.52655665885959e-16 +12 +0.776999999999999 +22 +1.5 +32 +8.88178419700126e-17 +13 +0.776999999999999 +23 +1.5 +33 +8.88178419700126e-17 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +1.5 +30 +1.52655665885959e-16 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +1.0625 +22 +1.5 +32 +1.241 +13 +1.0625 +23 +1.5 +33 +1.241 +70 +15 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +1.5 +30 +1.52655665885959e-16 +11 +1.0625 +21 +1.5 +31 +1.241 +12 +1.295 +22 +1.5 +32 +3.0 +13 +1.295 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +1.5 +30 +1.241 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +0.796875 +22 +1.5 +32 +0.982 +13 +0.796875 +23 +1.5 +33 +0.982 +70 +15 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +0.982 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +0.982 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.53125 +22 +1.5 +32 +0.723 +13 +0.53125 +23 +1.5 +33 +0.723 +70 +15 + 0 +3DFACE + 8 +taser_a +10 +0.53125 +20 +1.5 +30 +0.723 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.723 +13 +0.0 +23 +1.5 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.796875 +20 +1.5 +30 +0.982 +11 +0.53125 +21 +1.5 +31 +0.723 +12 +0.53125 +22 +1.5 +32 +0.982 +13 +0.53125 +23 +1.5 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.0625 +20 +1.5 +30 +1.241 +11 +0.796875 +21 +1.5 +31 +0.982 +12 +0.796875 +22 +1.5 +32 +1.241 +13 +0.796875 +23 +1.5 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +1.5 +30 +3.0 +11 +1.0625 +21 +1.5 +31 +1.241 +12 +1.0625 +22 +1.5 +32 +1.759 +13 +1.0625 +23 +1.5 +33 +1.759 +70 +13 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +1.5 +30 +3.0 +11 +1.0625 +21 +1.5 +31 +1.759 +12 +0.796875 +22 +1.5 +32 +2.018 +13 +0.796875 +23 +1.5 +33 +2.018 +70 +15 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +1.5 +30 +3.0 +11 +0.796875 +21 +1.5 +31 +2.018 +12 +0.53125 +22 +1.5 +32 +2.277 +13 +0.53125 +23 +1.5 +33 +2.277 +70 +15 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +1.5 +30 +3.0 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.777 +22 +1.5 +32 +2.795 +13 +0.777 +23 +1.5 +33 +2.795 +70 +15 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.5 +30 +2.795 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +1.5 +30 +3.0 +11 +0.777 +21 +1.5 +31 +2.795 +12 +0.777 +22 +1.5 +32 +3.0 +13 +0.777 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +2.277 +31 +0.723 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.277 +30 +0.723 +11 +0.0 +21 +2.795 +31 +1.5 +12 +0.0 +22 +2.795 +32 +0.723 +13 +0.0 +23 +2.795 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +2.277 +30 +2.277 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +1.5 +32 +2.277 +13 +0.0 +23 +1.5 +33 +2.277 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +0.205 +32 +1.5 +13 +0.0 +23 +0.205 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +0.0 +30 +3.0 +11 +0.0 +21 +0.205 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +3.0 +11 +1.295 +21 +0.0 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.295 +21 +0.0 +31 +3.0 +12 +0.777 +22 +1.5 +32 +3.0 +13 +0.777 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.5 +30 +3.0 +11 +1.295 +21 +0.0 +31 +3.0 +12 +1.295 +22 +1.5 +32 +3.0 +13 +1.295 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.777 +21 +1.5 +31 +2.795 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.777 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.777 +22 +1.5 +32 +3.0 +13 +0.777 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +1.5 +30 +8.88178419700126e-17 +11 +0.0 +21 +0.205 +31 +2.22044604925031e-16 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.205 +30 +2.22044604925031e-16 +11 +0.776999999999999 +21 +1.5 +31 +8.88178419700126e-17 +12 +0.0 +22 +0.0 +32 +2.22044604925031e-16 +13 +0.0 +23 +0.0 +33 +2.22044604925031e-16 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +0.0 +30 +2.22044604925031e-16 +11 +0.776999999999999 +21 +1.5 +31 +8.88178419700126e-17 +12 +1.295 +22 +0.0 +32 +2.22044604925031e-16 +13 +1.295 +23 +0.0 +33 +2.22044604925031e-16 +70 +3 + 0 +3DFACE + 8 +taser_a +10 +1.295 +20 +0.0 +30 +2.22044604925031e-16 +11 +0.776999999999999 +21 +1.5 +31 +8.88178419700126e-17 +12 +1.295 +22 +1.5 +32 +1.52655665885959e-16 +13 +1.295 +23 +1.5 +33 +1.52655665885959e-16 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.776999999999999 +21 +1.5 +31 +8.88178419700126e-17 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_a +10 +0.776999999999999 +20 +1.5 +30 +8.88178419700126e-17 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.776999999999999 +22 +1.5 +32 +0.205 +13 +0.776999999999999 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.777 +21 +2.223 +31 +3.0 +12 +0.777 +22 +1.98309315521565 +32 +3.0 +13 +0.777 +23 +1.98309315521565 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +2.223 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +3.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +2.223 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +1.295 +21 +1.705 +31 +6.58963624407723e-17 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.705 +30 +6.58963624407723e-17 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.705 +30 +6.58963624407723e-17 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +1.295 +22 +1.80680418134643 +32 +6.07160340763011e-17 +13 +1.295 +23 +1.80680418134643 +33 +6.07160340763011e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +3.0 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.464 +13 +0.0 +23 +3.0 +33 +0.464 +70 +2 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +3.0 +30 +0.723 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.723 +13 +0.0 +23 +1.5 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.0 +21 +3.0 +31 +0.723 +12 +0.0 +22 +3.0 +32 +0.464 +13 +0.0 +23 +3.0 +33 +0.464 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +3.0 +30 +0.982 +11 +0.53125 +21 +1.5 +31 +0.723 +12 +0.53125 +22 +1.5 +32 +0.982 +13 +0.53125 +23 +1.5 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +1.5 +30 +0.723 +11 +0.53125 +21 +3.0 +31 +0.982 +12 +0.53125 +22 +3.0 +32 +0.723 +13 +0.53125 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +1.5 +30 +1.241 +11 +0.796875 +21 +3.0 +31 +1.241 +12 +0.796875 +22 +1.5 +32 +1.241 +13 +0.796875 +23 +1.5 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +3.0 +30 +1.241 +11 +1.0625 +21 +1.5 +31 +1.241 +12 +1.0625 +22 +3.0 +32 +1.241 +13 +1.0625 +23 +3.0 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +3.0 +30 +1.759 +11 +0.796875 +21 +1.5 +31 +1.759 +12 +0.796875 +22 +3.0 +32 +1.759 +13 +0.796875 +23 +3.0 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +1.759 +11 +1.0625 +21 +3.0 +31 +1.759 +12 +1.0625 +22 +1.5 +32 +1.759 +13 +1.0625 +23 +1.5 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.64381364161549 +30 +3.0 +11 +0.777 +21 +1.5 +31 +2.795 +12 +0.777 +22 +1.5 +32 +3.0 +13 +0.777 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.5 +30 +2.795 +11 +0.777 +21 +1.64381364161549 +31 +3.0 +12 +0.777 +22 +3.0 +32 +2.795 +13 +0.777 +23 +3.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +3.0 +30 +2.795 +11 +0.777 +21 +1.64381364161549 +31 +3.0 +12 +0.777 +22 +1.73256321554271 +32 +3.0 +13 +0.777 +23 +1.73256321554271 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +3.0 +30 +2.795 +11 +0.777 +21 +1.73256321554271 +31 +3.0 +12 +0.777 +22 +1.79947640559575 +32 +3.0 +13 +0.777 +23 +1.79947640559575 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +3.0 +30 +2.795 +11 +0.777 +21 +1.79947640559575 +31 +3.0 +12 +0.777 +22 +1.98309315521565 +32 +3.0 +13 +0.777 +23 +1.98309315521565 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +3.0 +30 +2.795 +11 +0.777 +21 +1.98309315521565 +31 +3.0 +12 +0.777 +22 +2.223 +32 +3.0 +13 +0.777 +23 +2.223 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +3.0 +30 +2.795 +11 +0.777 +21 +2.223 +31 +3.0 +12 +0.777 +22 +2.58204596640715 +32 +3.0 +13 +0.777 +23 +2.58204596640715 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +3.0 +30 +2.795 +11 +0.777 +21 +2.58204596640715 +31 +3.0 +12 +0.777 +22 +3.0 +32 +3.0 +13 +0.777 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +3.0 +30 +2.277 +11 +0.53125 +21 +1.5 +31 +2.018 +12 +0.53125 +22 +1.5 +32 +2.277 +13 +0.53125 +23 +1.5 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +1.5 +30 +2.018 +11 +0.53125 +21 +3.0 +31 +2.277 +12 +0.53125 +22 +3.0 +32 +2.018 +13 +0.53125 +23 +3.0 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +3.0 +30 +1.241 +11 +0.796875 +21 +1.5 +31 +0.982 +12 +0.796875 +22 +1.5 +32 +1.241 +13 +0.796875 +23 +1.5 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +0.982 +11 +0.796875 +21 +3.0 +31 +1.241 +12 +0.796875 +22 +3.0 +32 +0.982 +13 +0.796875 +23 +3.0 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +3.0 +30 +1.759 +11 +1.0625 +21 +1.5 +31 +1.5 +12 +1.0625 +22 +1.5 +32 +1.759 +13 +1.0625 +23 +1.5 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +1.5 +30 +1.5 +11 +1.0625 +21 +3.0 +31 +1.759 +12 +1.0625 +22 +1.5 +32 +1.241 +13 +1.0625 +23 +1.5 +33 +1.241 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +1.5 +30 +1.241 +11 +1.0625 +21 +3.0 +31 +1.759 +12 +1.0625 +22 +3.0 +32 +1.241 +13 +1.0625 +23 +3.0 +33 +1.241 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +3.0 +30 +1.241 +11 +1.0625 +21 +3.0 +31 +1.759 +12 +1.0625 +22 +3.0 +32 +1.5 +13 +1.0625 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +3.0 +30 +2.018 +11 +0.796875 +21 +1.5 +31 +1.759 +12 +0.796875 +22 +1.5 +32 +2.018 +13 +0.796875 +23 +1.5 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +1.759 +11 +0.796875 +21 +3.0 +31 +2.018 +12 +0.796875 +22 +3.0 +32 +1.759 +13 +0.796875 +23 +3.0 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.723000000000001 +20 +3.0 +30 +2.018 +11 +0.53125 +21 +1.5 +31 +2.018 +12 +0.53125 +22 +3.0 +32 +2.018 +13 +0.53125 +23 +3.0 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +1.5 +30 +2.018 +11 +0.723000000000001 +21 +3.0 +31 +2.018 +12 +0.796875 +22 +1.5 +32 +2.018 +13 +0.796875 +23 +1.5 +33 +2.018 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +2.018 +11 +0.723000000000001 +21 +3.0 +31 +2.018 +12 +0.796875 +22 +3.0 +32 +2.018 +13 +0.796875 +23 +3.0 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +1.5 +31 +2.277 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +1.5 +30 +2.277 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.277 +13 +0.0 +23 +3.0 +33 +2.277 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +3.0 +30 +2.277 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.536 +13 +0.0 +23 +3.0 +33 +2.536 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +0.982 +11 +0.53125 +21 +3.0 +31 +0.982 +12 +0.53125 +22 +1.5 +32 +0.982 +13 +0.53125 +23 +1.5 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +3.0 +30 +0.982 +11 +0.796875 +21 +1.5 +31 +0.982 +12 +0.723000000000001 +22 +3.0 +32 +0.982 +13 +0.723000000000001 +23 +3.0 +33 +0.982 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.723000000000001 +20 +3.0 +30 +0.982 +11 +0.796875 +21 +1.5 +31 +0.982 +12 +0.796875 +22 +3.0 +32 +0.982 +13 +0.796875 +23 +3.0 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.91251205544432 +20 +1.98213889596437 +30 +0.0 +11 +1.295 +21 +1.63697662077346 +31 +6.93577471913193e-17 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.63697662077346 +30 +6.93577471913193e-17 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.63697662077346 +30 +6.93577471913193e-17 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +1.295 +22 +1.705 +32 +6.58963624407723e-17 +13 +1.295 +23 +1.705 +33 +6.58963624407723e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.295 +21 +1.99491378028649 +31 +5.11440353810559e-17 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.99491378028649 +30 +5.11440353810559e-17 +11 +1.27938364528661 +21 +2.22727465515648 +31 +0.0 +12 +1.295 +22 +2.2311863483779 +32 +3.91212533101955e-17 +13 +1.295 +23 +2.2311863483779 +33 +3.91212533101955e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +1.295 +21 +1.80680418134643 +31 +6.07160340763011e-17 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.80680418134643 +30 +6.07160340763011e-17 +11 +1.14173848001224 +21 +2.17026016090475 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.80680418134643 +30 +6.07160340763011e-17 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +1.295 +22 +1.99491378028649 +32 +5.11440353810559e-17 +13 +1.295 +23 +1.99491378028649 +33 +5.11440353810559e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.82973983909525 +20 +1.85826151998776 +30 +0.0 +11 +1.295 +21 +1.58491378028649 +31 +7.20069763854704e-17 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.58491378028649 +30 +7.20069763854704e-17 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.58491378028649 +30 +7.20069763854704e-17 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +1.295 +22 +1.63697662077346 +32 +6.93577471913193e-17 +13 +1.295 +23 +1.63697662077346 +33 +6.93577471913193e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.54077703531283 +30 +7.42528844501344e-17 +11 +0.776999999999999 +21 +1.5 +31 +8.88178419700126e-17 +12 +0.776999999999999 +22 +1.64381364161549 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.64381364161549 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.5 +30 +8.88178419700126e-17 +11 +1.295 +21 +1.54077703531283 +31 +7.42528844501344e-17 +12 +1.295 +22 +1.5 +32 +1.52655665885959e-16 +13 +1.295 +23 +1.5 +33 +1.52655665885959e-16 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.776999999999999 +21 +1.64381364161549 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +1.73256321554271 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.73256321554271 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.64381364161549 +30 +4.44089209850063e-17 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +1.295 +22 +1.54077703531283 +32 +7.42528844501344e-17 +13 +1.295 +23 +1.54077703531283 +33 +7.42528844501344e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.54077703531283 +30 +7.42528844501344e-17 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +1.295 +22 +1.58491378028649 +32 +7.20069763854704e-17 +13 +1.295 +23 +1.58491378028649 +33 +7.20069763854704e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +2.5306045958858 +30 +2.38852893262874e-17 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.295 +22 +3.0 +32 +0.0 +13 +1.295 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.20916059140253 +20 +2.20214844470858 +30 +0.0 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.295 +22 +2.5306045958858 +32 +2.38852893262874e-17 +13 +1.295 +23 +2.5306045958858 +33 +2.38852893262874e-17 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.20916059140253 +20 +2.20214844470858 +30 +0.0 +11 +1.295 +21 +2.5306045958858 +31 +2.38852893262874e-17 +12 +1.27938364528661 +22 +2.22727465515648 +32 +0.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.295 +21 +2.5306045958858 +31 +2.38852893262874e-17 +12 +1.295 +22 +2.2311863483779 +32 +3.91212533101955e-17 +13 +1.295 +23 +2.2311863483779 +33 +3.91212533101955e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +3.0 +30 +8.88178419700126e-17 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +0.776999999999999 +22 +2.58204596640715 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +2.58204596640715 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +0.776999999999999 +21 +3.0 +31 +8.88178419700126e-17 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +0.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +0.776999999999999 +21 +1.79947640559575 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +1.98309315521565 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.98309315521565 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.79947640559575 +30 +4.44089209850063e-17 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.79947640559575 +30 +4.44089209850063e-17 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.776999999999999 +21 +1.98309315521565 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +2.223 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +2.223 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.98309315521565 +30 +4.44089209850063e-17 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +0.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.98309315521565 +30 +4.44089209850063e-17 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +0.776999999999999 +21 +2.223 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +2.58204596640715 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +2.58204596640715 +33 +4.44089209850063e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +2.223 +30 +4.44089209850063e-17 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +0.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +2.223 +30 +4.44089209850063e-17 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.776999999999999 +21 +1.73256321554271 +31 +4.44089209850063e-17 +12 +0.776999999999999 +22 +1.79947640559575 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.79947640559575 +33 +4.44089209850063e-17 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +0.777 +21 +2.58204596640715 +31 +3.0 +12 +0.777 +22 +2.223 +32 +3.0 +13 +0.777 +23 +2.223 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +2.58204596640715 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +3.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +2.58204596640715 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.777 +21 +1.98309315521565 +31 +3.0 +12 +0.777 +22 +1.79947640559575 +32 +3.0 +13 +0.777 +23 +1.79947640559575 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.98309315521565 +30 +3.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +3.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +3.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.98309315521565 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.5 +30 +3.0 +11 +0.777 +21 +1.64381364161549 +31 +3.0 +12 +0.777 +22 +1.5 +32 +3.0 +13 +0.777 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.64381364161549 +30 +3.0 +11 +1.295 +21 +1.5 +31 +3.0 +12 +1.295 +22 +1.54077703531283 +32 +3.0 +13 +1.295 +23 +1.54077703531283 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +0.777 +21 +3.0 +31 +3.0 +12 +0.777 +22 +2.58204596640715 +32 +3.0 +13 +0.777 +23 +2.58204596640715 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +3.0 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +3.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +3.0 +30 +3.0 +11 +1.20163144893051 +21 +3.0 +31 +3.0 +12 +1.295 +22 +2.5306045958858 +32 +3.0 +13 +1.295 +23 +2.5306045958858 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.705 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.01786110403563 +20 +2.08748794455568 +30 +3.0 +11 +1.295 +21 +1.705 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +1.295 +21 +1.705 +31 +3.0 +12 +1.295 +22 +1.80680418134643 +32 +3.0 +13 +1.295 +23 +1.80680418134643 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.63697662077346 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.91251205544432 +20 +1.98213889596437 +30 +3.0 +11 +1.295 +21 +1.63697662077346 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +1.295 +21 +1.63697662077346 +31 +3.0 +12 +1.295 +22 +1.705 +32 +3.0 +13 +1.295 +23 +1.705 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.80680418134643 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +3.0 +11 +1.295 +21 +1.80680418134643 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.295 +21 +1.80680418134643 +31 +3.0 +12 +1.295 +22 +1.99491378028649 +32 +3.0 +13 +1.295 +23 +1.99491378028649 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.58491378028648 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.82973983909525 +20 +1.85826151998776 +30 +3.0 +11 +1.295 +21 +1.58491378028648 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +1.295 +21 +1.58491378028648 +31 +3.0 +12 +1.295 +22 +1.63697662077346 +32 +3.0 +13 +1.295 +23 +1.63697662077346 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.036 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.036 +20 +3.0 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.295 +22 +2.5306045958858 +32 +3.0 +13 +1.295 +23 +2.5306045958858 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +2.5306045958858 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +3.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +2.5306045958858 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.295 +22 +2.2311863483779 +32 +3.0 +13 +1.295 +23 +2.2311863483779 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.99491378028649 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +3.0 +11 +1.295 +21 +1.99491378028649 +31 +3.0 +12 +1.295 +22 +2.2311863483779 +32 +3.0 +13 +1.295 +23 +2.2311863483779 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.54077703531283 +30 +3.0 +11 +0.777 +21 +1.73256321554271 +31 +3.0 +12 +0.777 +22 +1.64381364161549 +32 +3.0 +13 +0.777 +23 +1.64381364161549 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.73256321554271 +30 +3.0 +11 +1.295 +21 +1.54077703531283 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +1.295 +21 +1.54077703531283 +31 +3.0 +12 +1.295 +22 +1.58491378028648 +32 +3.0 +13 +1.295 +23 +1.58491378028648 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.777 +21 +1.79947640559575 +31 +3.0 +12 +0.777 +22 +1.73256321554271 +32 +3.0 +13 +0.777 +23 +1.73256321554271 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.5 +30 +2.795 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.777 +21 +1.5 +31 +2.795 +12 +0.205000000000001 +22 +3.0 +32 +2.795 +13 +0.205000000000001 +23 +3.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.205000000000001 +20 +3.0 +30 +2.795 +11 +0.777 +21 +1.5 +31 +2.795 +12 +0.777 +22 +3.0 +32 +2.795 +13 +0.777 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.205000000000001 +20 +3.0 +30 +2.277 +11 +0.0 +21 +1.5 +31 +2.277 +12 +0.0 +22 +3.0 +32 +2.277 +13 +0.0 +23 +3.0 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +1.5 +30 +2.277 +11 +0.205000000000001 +21 +3.0 +31 +2.277 +12 +0.53125 +22 +1.5 +32 +2.277 +13 +0.53125 +23 +1.5 +33 +2.277 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +1.5 +30 +2.277 +11 +0.205000000000001 +21 +3.0 +31 +2.277 +12 +0.53125 +22 +3.0 +32 +2.277 +13 +0.53125 +23 +3.0 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +1.5 +30 +0.723 +11 +0.0 +21 +3.0 +31 +0.723 +12 +0.0 +22 +1.5 +32 +0.723 +13 +0.0 +23 +1.5 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +3.0 +30 +0.723 +11 +0.53125 +21 +1.5 +31 +0.723 +12 +0.205 +22 +3.0 +32 +0.723 +13 +0.205 +23 +3.0 +33 +0.723 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.205 +20 +3.0 +30 +0.723 +11 +0.53125 +21 +1.5 +31 +0.723 +12 +0.53125 +22 +3.0 +32 +0.723 +13 +0.53125 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +3.0 +30 +0.205 +11 +0.776999999999999 +21 +1.5 +31 +8.88178419700126e-17 +12 +0.776999999999999 +22 +1.5 +32 +0.205 +13 +0.776999999999999 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.5 +30 +8.88178419700126e-17 +11 +0.776999999999999 +21 +3.0 +31 +0.205 +12 +0.776999999999999 +22 +1.64381364161549 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.64381364161549 +33 +4.44089209850063e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.64381364161549 +30 +4.44089209850063e-17 +11 +0.776999999999999 +21 +3.0 +31 +0.205 +12 +0.776999999999999 +22 +1.73256321554271 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.73256321554271 +33 +4.44089209850063e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.73256321554271 +30 +4.44089209850063e-17 +11 +0.776999999999999 +21 +3.0 +31 +0.205 +12 +0.776999999999999 +22 +1.79947640559575 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.79947640559575 +33 +4.44089209850063e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.79947640559575 +30 +4.44089209850063e-17 +11 +0.776999999999999 +21 +3.0 +31 +0.205 +12 +0.776999999999999 +22 +1.98309315521565 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +1.98309315521565 +33 +4.44089209850063e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.98309315521565 +30 +4.44089209850063e-17 +11 +0.776999999999999 +21 +3.0 +31 +0.205 +12 +0.776999999999999 +22 +2.223 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +2.223 +33 +4.44089209850063e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +2.223 +30 +4.44089209850063e-17 +11 +0.776999999999999 +21 +3.0 +31 +0.205 +12 +0.776999999999999 +22 +2.58204596640715 +32 +4.44089209850063e-17 +13 +0.776999999999999 +23 +2.58204596640715 +33 +4.44089209850063e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +2.58204596640715 +30 +4.44089209850063e-17 +11 +0.776999999999999 +21 +3.0 +31 +0.205 +12 +0.776999999999999 +22 +3.0 +32 +8.88178419700126e-17 +13 +0.776999999999999 +23 +3.0 +33 +8.88178419700126e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.205000000000001 +20 +3.0 +30 +0.205000000000001 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.205000000000001 +21 +3.0 +31 +0.205000000000001 +12 +0.776999999999999 +22 +1.5 +32 +0.205 +13 +0.776999999999999 +23 +1.5 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.5 +30 +0.205 +11 +0.205000000000001 +21 +3.0 +31 +0.205000000000001 +12 +0.776999999999999 +22 +3.0 +32 +0.205 +13 +0.776999999999999 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +0.205000000000001 +11 +1.295 +21 +2.5306045958858 +31 +2.38852893262874e-17 +12 +1.295 +22 +3.0 +32 +0.0 +13 +1.295 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +2.5306045958858 +30 +2.38852893262874e-17 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.295 +22 +2.2311863483779 +32 +3.91212533101955e-17 +13 +1.295 +23 +2.2311863483779 +33 +3.91212533101955e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +2.2311863483779 +30 +3.91212533101955e-17 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.295 +22 +1.99491378028649 +32 +5.11440353810559e-17 +13 +1.295 +23 +1.99491378028649 +33 +5.11440353810559e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.99491378028649 +30 +5.11440353810559e-17 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.295 +22 +1.80680418134643 +32 +6.07160340763011e-17 +13 +1.295 +23 +1.80680418134643 +33 +6.07160340763011e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.80680418134643 +30 +6.07160340763011e-17 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.295 +22 +1.705 +32 +6.58963624407723e-17 +13 +1.295 +23 +1.705 +33 +6.58963624407723e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.705 +30 +6.58963624407723e-17 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.295 +22 +1.63697662077346 +32 +6.93577471913193e-17 +13 +1.295 +23 +1.63697662077346 +33 +6.93577471913193e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.63697662077346 +30 +6.93577471913193e-17 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.295 +22 +1.58491378028649 +32 +7.20069763854704e-17 +13 +1.295 +23 +1.58491378028649 +33 +7.20069763854704e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.58491378028649 +30 +7.20069763854704e-17 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.295 +22 +1.54077703531283 +32 +7.42528844501344e-17 +13 +1.295 +23 +1.54077703531283 +33 +7.42528844501344e-17 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.54077703531283 +30 +7.42528844501344e-17 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.295 +22 +1.5 +32 +1.52655665885959e-16 +13 +1.295 +23 +1.5 +33 +1.52655665885959e-16 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.5 +30 +1.52655665885959e-16 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +2.1475 +22 +1.5 +32 +0.8525 +13 +2.1475 +23 +1.5 +33 +0.8525 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +1.5 +30 +0.8525 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +2.1475 +21 +1.5 +31 +1.28416666666667 +12 +2.1475 +22 +1.5 +32 +0.8525 +13 +2.1475 +23 +1.5 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +1.5 +30 +1.28416666666667 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +2.1475 +22 +3.0 +32 +1.28416666666667 +13 +2.1475 +23 +3.0 +33 +1.28416666666667 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +1.71583333333333 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.71583333333333 +22 +3.0 +32 +2.1475 +13 +1.71583333333333 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +2.1475 +21 +3.0 +31 +1.71583333333333 +12 +2.1475 +22 +1.5 +32 +1.71583333333333 +13 +2.1475 +23 +1.5 +33 +1.71583333333333 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +1.71583333333333 +11 +2.1475 +21 +1.5 +31 +2.1475 +12 +2.1475 +22 +1.5 +32 +1.71583333333333 +13 +2.1475 +23 +1.5 +33 +1.71583333333333 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +1.5 +30 +2.1475 +11 +2.1475 +21 +3.0 +31 +1.71583333333333 +12 +2.1475 +22 +3.0 +32 +2.1475 +13 +2.1475 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.295 +21 +1.5 +31 +3.0 +12 +2.1475 +22 +1.5 +32 +2.1475 +13 +2.1475 +23 +1.5 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.5 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +1.54077703531283 +32 +3.0 +13 +1.295 +23 +1.54077703531283 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.54077703531283 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +1.58491378028648 +32 +3.0 +13 +1.295 +23 +1.58491378028648 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.58491378028648 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +1.63697662077346 +32 +3.0 +13 +1.295 +23 +1.63697662077346 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.63697662077346 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +1.705 +32 +3.0 +13 +1.295 +23 +1.705 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.705 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +1.80680418134643 +32 +3.0 +13 +1.295 +23 +1.80680418134643 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.80680418134643 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +1.99491378028649 +32 +3.0 +13 +1.295 +23 +1.99491378028649 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.99491378028649 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +2.2311863483779 +32 +3.0 +13 +1.295 +23 +2.2311863483779 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +2.2311863483779 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +2.5306045958858 +32 +3.0 +13 +1.295 +23 +2.5306045958858 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +2.5306045958858 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.295 +22 +3.0 +32 +3.0 +13 +1.295 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +3.0 +30 +3.0 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.81219074811907 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +1.5 +30 +1.81219074811907 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.5 +22 +3.0 +32 +1.81219074811907 +13 +1.5 +23 +3.0 +33 +1.81219074811907 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.50885609734932 +21 +3.0 +31 +1.81237448605758 +12 +1.5 +22 +3.0 +32 +1.81219074811907 +13 +1.5 +23 +3.0 +33 +1.81219074811907 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.70501413192602 +20 +3.0 +30 +1.73585049440402 +11 +1.60791666666667 +21 +3.0 +31 +1.97984537405954 +12 +1.71583333333333 +22 +3.0 +32 +1.72547110140021 +13 +1.71583333333333 +23 +3.0 +33 +1.72547110140021 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.70501413192602 +21 +3.0 +31 +1.73585049440402 +12 +1.68090954183794 +22 +3.0 +32 +1.7548097087475 +13 +1.68090954183794 +23 +3.0 +33 +1.7548097087475 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.68090954183794 +21 +3.0 +31 +1.7548097087475 +12 +1.65506269396675 +22 +3.0 +32 +1.77131496630259 +13 +1.65506269396675 +23 +3.0 +33 +1.77131496630259 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.65506269396675 +21 +3.0 +31 +1.77131496630259 +12 +1.62772250758676 +22 +3.0 +32 +1.78520731241634 +13 +1.62772250758676 +23 +3.0 +33 +1.78520731241634 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.62772250758676 +21 +3.0 +31 +1.78520731241634 +12 +1.59915228363849 +22 +3.0 +32 +1.79635295620134 +13 +1.59915228363849 +23 +3.0 +33 +1.79635295620134 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.59915228363849 +21 +3.0 +31 +1.79635295620134 +12 +1.56962716899663 +22 +3.0 +32 +1.80464455901512 +13 +1.56962716899663 +23 +3.0 +33 +1.80464455901512 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.56962716899663 +21 +3.0 +31 +1.80464455901512 +12 +1.53943150665524 +22 +3.0 +32 +1.81000226818992 +13 +1.53943150665524 +23 +3.0 +33 +1.81000226818992 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.53943150665524 +21 +3.0 +31 +1.81000226818992 +12 +1.50885609734932 +22 +3.0 +32 +1.81237448605758 +13 +1.50885609734932 +23 +3.0 +33 +1.81237448605758 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +1.5 +30 +1.81219074811907 +11 +1.0625 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +1.5 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.81219074811907 +12 +1.0625 +22 +1.5 +32 +1.759 +13 +1.0625 +23 +1.5 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.5 +31 +2.277 +12 +0.53125 +22 +1.5 +32 +2.277 +13 +0.53125 +23 +1.5 +33 +2.277 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.53125 +21 +1.5 +31 +2.277 +12 +0.777 +22 +1.5 +32 +2.795 +13 +0.777 +23 +1.5 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.5 +30 +2.795 +11 +0.53125 +21 +1.5 +31 +2.018 +12 +0.796875 +22 +1.5 +32 +2.018 +13 +0.796875 +23 +1.5 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +1.5 +30 +2.018 +11 +0.777 +21 +1.5 +31 +2.795 +12 +0.53125 +22 +1.5 +32 +2.277 +13 +0.53125 +23 +1.5 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +2.1475 +21 +1.5 +31 +1.71583333333333 +12 +2.1475 +22 +1.5 +32 +2.1475 +13 +2.1475 +23 +1.5 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.5 +30 +3.0 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +2.1475 +22 +1.5 +32 +2.1475 +13 +2.1475 +23 +1.5 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +1.5 +30 +3.0 +11 +0.777 +21 +1.5 +31 +2.795 +12 +1.71583333333333 +22 +1.5 +32 +2.1475 +13 +1.71583333333333 +23 +1.5 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +1.5 +30 +2.795 +11 +1.295 +21 +1.5 +31 +3.0 +12 +0.777 +22 +1.5 +32 +3.0 +13 +0.777 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +0.796875 +21 +1.5 +31 +2.018 +12 +0.796875 +22 +1.5 +32 +1.759 +13 +0.796875 +23 +1.5 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +2.018 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +0.777 +22 +1.5 +32 +2.795 +13 +0.777 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +1.5 +30 +1.81219074811907 +11 +0.796875 +21 +1.5 +31 +1.759 +12 +1.0625 +22 +1.5 +32 +1.759 +13 +1.0625 +23 +1.5 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +1.759 +11 +1.5 +21 +1.5 +31 +1.81219074811907 +12 +1.71583333333333 +22 +1.5 +32 +2.1475 +13 +1.71583333333333 +23 +1.5 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +1.5 +30 +0.723 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.53125 +22 +1.5 +32 +0.723 +13 +0.53125 +23 +1.5 +33 +0.723 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +1.5 +30 +0.723 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.776999999999999 +22 +1.5 +32 +0.205 +13 +0.776999999999999 +23 +1.5 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +0.982 +11 +0.53125 +21 +1.5 +31 +0.723 +12 +0.776999999999999 +22 +1.5 +32 +0.205 +13 +0.776999999999999 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +1.5 +30 +0.723 +11 +0.796875 +21 +1.5 +31 +0.982 +12 +0.53125 +22 +1.5 +32 +0.982 +13 +0.53125 +23 +1.5 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +1.5 +30 +1.28416666666667 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +2.1475 +22 +1.5 +32 +0.8525 +13 +2.1475 +23 +1.5 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +0.8525 +11 +1.295 +21 +1.5 +31 +1.52655665885959e-16 +12 +2.1475 +22 +1.5 +32 +0.8525 +13 +2.1475 +23 +1.5 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +0.8525 +11 +0.776999999999999 +21 +1.5 +31 +8.88178419700126e-17 +12 +1.295 +22 +1.5 +32 +1.52655665885959e-16 +13 +1.295 +23 +1.5 +33 +1.52655665885959e-16 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +0.8525 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +0.776999999999999 +22 +1.5 +32 +8.88178419700126e-17 +13 +0.776999999999999 +23 +1.5 +33 +8.88178419700126e-17 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.5 +30 +0.205 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +0.796875 +22 +1.5 +32 +0.982 +13 +0.796875 +23 +1.5 +33 +0.982 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +0.982 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +0.796875 +22 +1.5 +32 +1.241 +13 +0.796875 +23 +1.5 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +1.5 +30 +1.18780925188093 +11 +0.796875 +21 +1.5 +31 +1.241 +12 +1.71583333333333 +22 +1.5 +32 +0.8525 +13 +1.71583333333333 +23 +1.5 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +1.5 +30 +1.241 +11 +1.5 +21 +1.5 +31 +1.18780925188093 +12 +1.0625 +22 +1.5 +32 +1.241 +13 +1.0625 +23 +1.5 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +1.72547110140021 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.71583333333333 +22 +1.5 +32 +1.72547110140021 +13 +1.71583333333333 +23 +1.5 +33 +1.72547110140021 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.71583333333333 +21 +3.0 +31 +1.72547110140021 +12 +1.71583333333333 +22 +3.0 +32 +2.1475 +13 +1.71583333333333 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.50885609734932 +20 +3.0 +30 +1.81237448605758 +11 +1.5 +21 +1.5 +31 +1.81219074811907 +12 +1.5 +22 +3.0 +32 +1.81219074811907 +13 +1.5 +23 +3.0 +33 +1.81219074811907 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +1.5 +30 +1.81219074811907 +11 +1.50885609734932 +21 +3.0 +31 +1.81237448605758 +12 +1.50885609734932 +22 +1.5 +32 +1.81237448605758 +13 +1.50885609734932 +23 +1.5 +33 +1.81237448605758 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +1.72547110140021 +11 +1.70501413192602 +21 +1.5 +31 +1.73585049440402 +12 +1.70501413192602 +22 +3.0 +32 +1.73585049440402 +13 +1.70501413192602 +23 +3.0 +33 +1.73585049440402 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.70501413192602 +20 +1.5 +30 +1.73585049440402 +11 +1.71583333333333 +21 +3.0 +31 +1.72547110140021 +12 +1.71583333333333 +22 +1.5 +32 +1.72547110140021 +13 +1.71583333333333 +23 +1.5 +33 +1.72547110140021 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.70501413192602 +20 +3.0 +30 +1.73585049440402 +11 +1.68090954183794 +21 +1.5 +31 +1.7548097087475 +12 +1.68090954183794 +22 +3.0 +32 +1.7548097087475 +13 +1.68090954183794 +23 +3.0 +33 +1.7548097087475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.68090954183794 +20 +1.5 +30 +1.7548097087475 +11 +1.70501413192602 +21 +3.0 +31 +1.73585049440402 +12 +1.70501413192602 +22 +1.5 +32 +1.73585049440402 +13 +1.70501413192602 +23 +1.5 +33 +1.73585049440402 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.68090954183794 +20 +3.0 +30 +1.7548097087475 +11 +1.65506269396675 +21 +1.5 +31 +1.77131496630259 +12 +1.65506269396675 +22 +3.0 +32 +1.77131496630259 +13 +1.65506269396675 +23 +3.0 +33 +1.77131496630259 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.65506269396675 +20 +1.5 +30 +1.77131496630259 +11 +1.68090954183794 +21 +3.0 +31 +1.7548097087475 +12 +1.68090954183794 +22 +1.5 +32 +1.7548097087475 +13 +1.68090954183794 +23 +1.5 +33 +1.7548097087475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.65506269396675 +20 +3.0 +30 +1.77131496630259 +11 +1.62772250758676 +21 +1.5 +31 +1.78520731241634 +12 +1.62772250758676 +22 +3.0 +32 +1.78520731241634 +13 +1.62772250758676 +23 +3.0 +33 +1.78520731241634 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.62772250758676 +20 +1.5 +30 +1.78520731241634 +11 +1.65506269396675 +21 +3.0 +31 +1.77131496630259 +12 +1.65506269396675 +22 +1.5 +32 +1.77131496630259 +13 +1.65506269396675 +23 +1.5 +33 +1.77131496630259 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.62772250758676 +20 +3.0 +30 +1.78520731241634 +11 +1.59915228363849 +21 +1.5 +31 +1.79635295620134 +12 +1.59915228363849 +22 +3.0 +32 +1.79635295620134 +13 +1.59915228363849 +23 +3.0 +33 +1.79635295620134 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.59915228363849 +20 +1.5 +30 +1.79635295620134 +11 +1.62772250758676 +21 +3.0 +31 +1.78520731241634 +12 +1.62772250758676 +22 +1.5 +32 +1.78520731241634 +13 +1.62772250758676 +23 +1.5 +33 +1.78520731241634 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.59915228363849 +20 +3.0 +30 +1.79635295620134 +11 +1.56962716899663 +21 +1.5 +31 +1.80464455901512 +12 +1.56962716899663 +22 +3.0 +32 +1.80464455901512 +13 +1.56962716899663 +23 +3.0 +33 +1.80464455901512 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.56962716899663 +20 +1.5 +30 +1.80464455901512 +11 +1.59915228363849 +21 +3.0 +31 +1.79635295620134 +12 +1.59915228363849 +22 +1.5 +32 +1.79635295620134 +13 +1.59915228363849 +23 +1.5 +33 +1.79635295620134 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.56962716899663 +20 +3.0 +30 +1.80464455901512 +11 +1.53943150665524 +21 +1.5 +31 +1.81000226818992 +12 +1.53943150665524 +22 +3.0 +32 +1.81000226818992 +13 +1.53943150665524 +23 +3.0 +33 +1.81000226818992 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.53943150665524 +20 +1.5 +30 +1.81000226818992 +11 +1.56962716899663 +21 +3.0 +31 +1.80464455901512 +12 +1.56962716899663 +22 +1.5 +32 +1.80464455901512 +13 +1.56962716899663 +23 +1.5 +33 +1.80464455901512 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.53943150665524 +20 +3.0 +30 +1.81000226818992 +11 +1.50885609734932 +21 +1.5 +31 +1.81237448605758 +12 +1.50885609734932 +22 +3.0 +32 +1.81237448605758 +13 +1.50885609734932 +23 +3.0 +33 +1.81237448605758 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.50885609734932 +20 +1.5 +30 +1.81237448605758 +11 +1.53943150665524 +21 +3.0 +31 +1.81000226818992 +12 +1.53943150665524 +22 +1.5 +32 +1.81000226818992 +13 +1.53943150665524 +23 +1.5 +33 +1.81000226818992 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.036 +20 +3.0 +30 +3.0 +11 +1.20163144893051 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +2 + 0 +3DFACE + 8 +taser_b +10 +0.777 +20 +3.0 +30 +2.795 +11 +1.295 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +3.0 +30 +3.0 +11 +0.777 +21 +3.0 +31 +2.795 +12 +0.777 +22 +3.0 +32 +3.0 +13 +0.777 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +3.0 +30 +3.0 +11 +0.777 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.81219074811907 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.5 +22 +1.5 +32 +1.81219074811907 +13 +1.5 +23 +1.5 +33 +1.81219074811907 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.71583333333333 +22 +3.0 +32 +2.1475 +13 +1.71583333333333 +23 +3.0 +33 +2.1475 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +2.1475 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.60791666666667 +22 +3.0 +32 +1.97984537405954 +13 +1.60791666666667 +23 +3.0 +33 +1.97984537405954 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.02015462594046 +11 +1.69132242027198 +21 +3.0 +31 +1.25291300823137 +12 +1.71461991087043 +22 +3.0 +32 +1.27285567614847 +13 +1.71461991087043 +23 +3.0 +33 +1.27285567614847 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.69132242027198 +20 +3.0 +30 +1.25291300823137 +11 +1.60791666666667 +21 +3.0 +31 +1.02015462594046 +12 +1.66618239017884 +22 +3.0 +32 +1.23534992311649 +13 +1.66618239017884 +23 +3.0 +33 +1.23534992311649 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.66618239017884 +20 +3.0 +30 +1.23534992311649 +11 +1.60791666666667 +21 +3.0 +31 +1.02015462594046 +12 +1.63944193282374 +22 +3.0 +32 +1.22033556291445 +13 +1.63944193282374 +23 +3.0 +33 +1.22033556291445 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.63944193282374 +20 +3.0 +30 +1.22033556291445 +11 +1.60791666666667 +21 +3.0 +31 +1.02015462594046 +12 +1.61135857342883 +22 +3.0 +32 +1.20801452412167 +13 +1.61135857342883 +23 +3.0 +33 +1.20801452412167 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.61135857342883 +20 +3.0 +30 +1.20801452412167 +11 +1.60791666666667 +21 +3.0 +31 +1.02015462594046 +12 +1.58220277009702 +22 +3.0 +32 +1.1985054650771 +13 +1.58220277009702 +23 +3.0 +33 +1.1985054650771 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.58220277009702 +20 +3.0 +30 +1.1985054650771 +11 +1.60791666666667 +21 +3.0 +31 +1.02015462594046 +12 +1.55225530915257 +22 +3.0 +32 +1.19189996321751 +13 +1.55225530915257 +23 +3.0 +33 +1.19189996321751 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.55225530915257 +20 +3.0 +30 +1.19189996321751 +11 +1.60791666666667 +21 +3.0 +31 +1.02015462594046 +12 +1.52180460101532 +22 +3.0 +32 +1.18826163313676 +13 +1.52180460101532 +23 +3.0 +33 +1.18826163313676 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.52180460101532 +20 +3.0 +30 +1.18826163313676 +11 +1.60791666666667 +21 +3.0 +31 +1.02015462594046 +12 +1.5 +22 +3.0 +32 +1.18780925188093 +13 +1.5 +23 +3.0 +33 +1.18780925188093 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +0.8525 +11 +1.5 +21 +1.5 +31 +1.18780925188093 +12 +1.71583333333333 +22 +1.5 +32 +0.8525 +13 +1.71583333333333 +23 +1.5 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +1.5 +30 +1.18780925188093 +11 +1.71583333333333 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +1.18780925188093 +13 +1.5 +23 +3.0 +33 +1.18780925188093 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.18780925188093 +11 +1.71583333333333 +21 +3.0 +31 +0.8525 +12 +1.60791666666667 +22 +3.0 +32 +1.02015462594046 +13 +1.60791666666667 +23 +3.0 +33 +1.02015462594046 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +0.8525 +11 +1.71583333333333 +21 +1.5 +31 +1.27412051524007 +12 +1.71583333333333 +22 +1.5 +32 +0.8525 +13 +1.71583333333333 +23 +1.5 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +1.27412051524007 +11 +1.71583333333333 +21 +3.0 +31 +0.8525 +12 +1.71583333333333 +22 +3.0 +32 +1.27412051524007 +13 +1.71583333333333 +23 +3.0 +33 +1.27412051524007 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.52180460101532 +20 +1.5 +30 +1.18826163313676 +11 +1.5 +21 +3.0 +31 +1.18780925188093 +12 +1.5 +22 +1.5 +32 +1.18780925188093 +13 +1.5 +23 +1.5 +33 +1.18780925188093 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.18780925188093 +11 +1.52180460101532 +21 +1.5 +31 +1.18826163313676 +12 +1.52180460101532 +22 +3.0 +32 +1.18826163313676 +13 +1.52180460101532 +23 +3.0 +33 +1.18826163313676 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.55225530915257 +20 +1.5 +30 +1.19189996321751 +11 +1.52180460101532 +21 +3.0 +31 +1.18826163313676 +12 +1.52180460101532 +22 +1.5 +32 +1.18826163313676 +13 +1.52180460101532 +23 +1.5 +33 +1.18826163313676 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.52180460101532 +20 +3.0 +30 +1.18826163313676 +11 +1.55225530915257 +21 +1.5 +31 +1.19189996321751 +12 +1.55225530915257 +22 +3.0 +32 +1.19189996321751 +13 +1.55225530915257 +23 +3.0 +33 +1.19189996321751 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.58220277009702 +20 +1.5 +30 +1.1985054650771 +11 +1.55225530915257 +21 +3.0 +31 +1.19189996321751 +12 +1.55225530915257 +22 +1.5 +32 +1.19189996321751 +13 +1.55225530915257 +23 +1.5 +33 +1.19189996321751 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.55225530915257 +20 +3.0 +30 +1.19189996321751 +11 +1.58220277009702 +21 +1.5 +31 +1.1985054650771 +12 +1.58220277009702 +22 +3.0 +32 +1.1985054650771 +13 +1.58220277009702 +23 +3.0 +33 +1.1985054650771 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.61135857342883 +20 +1.5 +30 +1.20801452412167 +11 +1.58220277009702 +21 +3.0 +31 +1.1985054650771 +12 +1.58220277009702 +22 +1.5 +32 +1.1985054650771 +13 +1.58220277009702 +23 +1.5 +33 +1.1985054650771 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.58220277009702 +20 +3.0 +30 +1.1985054650771 +11 +1.61135857342883 +21 +1.5 +31 +1.20801452412167 +12 +1.61135857342883 +22 +3.0 +32 +1.20801452412167 +13 +1.61135857342883 +23 +3.0 +33 +1.20801452412167 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.63944193282374 +20 +1.5 +30 +1.22033556291445 +11 +1.61135857342883 +21 +3.0 +31 +1.20801452412167 +12 +1.61135857342883 +22 +1.5 +32 +1.20801452412167 +13 +1.61135857342883 +23 +1.5 +33 +1.20801452412167 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.61135857342883 +20 +3.0 +30 +1.20801452412167 +11 +1.63944193282374 +21 +1.5 +31 +1.22033556291445 +12 +1.63944193282374 +22 +3.0 +32 +1.22033556291445 +13 +1.63944193282374 +23 +3.0 +33 +1.22033556291445 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.66618239017884 +20 +1.5 +30 +1.23534992311649 +11 +1.63944193282374 +21 +3.0 +31 +1.22033556291445 +12 +1.63944193282374 +22 +1.5 +32 +1.22033556291445 +13 +1.63944193282374 +23 +1.5 +33 +1.22033556291445 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.63944193282374 +20 +3.0 +30 +1.22033556291445 +11 +1.66618239017884 +21 +1.5 +31 +1.23534992311649 +12 +1.66618239017884 +22 +3.0 +32 +1.23534992311649 +13 +1.66618239017884 +23 +3.0 +33 +1.23534992311649 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.69132242027198 +20 +1.5 +30 +1.25291300823137 +11 +1.66618239017884 +21 +3.0 +31 +1.23534992311649 +12 +1.66618239017884 +22 +1.5 +32 +1.23534992311649 +13 +1.66618239017884 +23 +1.5 +33 +1.23534992311649 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.66618239017884 +20 +3.0 +30 +1.23534992311649 +11 +1.69132242027198 +21 +1.5 +31 +1.25291300823137 +12 +1.69132242027198 +22 +3.0 +32 +1.25291300823137 +13 +1.69132242027198 +23 +3.0 +33 +1.25291300823137 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71461991087043 +20 +1.5 +30 +1.27285567614847 +11 +1.69132242027198 +21 +3.0 +31 +1.25291300823137 +12 +1.69132242027198 +22 +1.5 +32 +1.25291300823137 +13 +1.69132242027198 +23 +1.5 +33 +1.25291300823137 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.69132242027198 +20 +3.0 +30 +1.25291300823137 +11 +1.71461991087043 +21 +1.5 +31 +1.27285567614847 +12 +1.71461991087043 +22 +3.0 +32 +1.27285567614847 +13 +1.71461991087043 +23 +3.0 +33 +1.27285567614847 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +1.27412051524007 +11 +1.71461991087043 +21 +1.5 +31 +1.27285567614847 +12 +1.71583333333333 +22 +1.5 +32 +1.27412051524007 +13 +1.71583333333333 +23 +1.5 +33 +1.27412051524007 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71461991087043 +20 +1.5 +30 +1.27285567614847 +11 +1.71583333333333 +21 +3.0 +31 +1.27412051524007 +12 +1.71461991087043 +22 +3.0 +32 +1.27285567614847 +13 +1.71461991087043 +23 +3.0 +33 +1.27285567614847 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.70501413192602 +21 +1.5 +31 +1.73585049440402 +12 +1.71583333333333 +22 +1.5 +32 +1.72547110140021 +13 +1.71583333333333 +23 +1.5 +33 +1.72547110140021 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.70501413192602 +20 +1.5 +30 +1.73585049440402 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.68090954183794 +22 +1.5 +32 +1.7548097087475 +13 +1.68090954183794 +23 +1.5 +33 +1.7548097087475 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.68090954183794 +20 +1.5 +30 +1.7548097087475 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.65506269396675 +22 +1.5 +32 +1.77131496630259 +13 +1.65506269396675 +23 +1.5 +33 +1.77131496630259 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.65506269396675 +20 +1.5 +30 +1.77131496630259 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.62772250758676 +22 +1.5 +32 +1.78520731241634 +13 +1.62772250758676 +23 +1.5 +33 +1.78520731241634 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.62772250758676 +20 +1.5 +30 +1.78520731241634 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.59915228363849 +22 +1.5 +32 +1.79635295620134 +13 +1.59915228363849 +23 +1.5 +33 +1.79635295620134 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.59915228363849 +20 +1.5 +30 +1.79635295620134 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.56962716899663 +22 +1.5 +32 +1.80464455901512 +13 +1.56962716899663 +23 +1.5 +33 +1.80464455901512 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.56962716899663 +20 +1.5 +30 +1.80464455901512 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.53943150665524 +22 +1.5 +32 +1.81000226818992 +13 +1.53943150665524 +23 +1.5 +33 +1.81000226818992 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.53943150665524 +20 +1.5 +30 +1.81000226818992 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.50885609734932 +22 +1.5 +32 +1.81237448605758 +13 +1.50885609734932 +23 +1.5 +33 +1.81237448605758 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +1.5 +21 +1.5 +31 +1.81219074811907 +12 +1.50885609734932 +22 +1.5 +32 +1.81237448605758 +13 +1.50885609734932 +23 +1.5 +33 +1.81237448605758 +70 +12 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +0.8525 +11 +1.52180460101532 +21 +1.5 +31 +1.18826163313676 +12 +1.5 +22 +1.5 +32 +1.18780925188093 +13 +1.5 +23 +1.5 +33 +1.18780925188093 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.52180460101532 +20 +1.5 +30 +1.18826163313676 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.55225530915257 +22 +1.5 +32 +1.19189996321751 +13 +1.55225530915257 +23 +1.5 +33 +1.19189996321751 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.55225530915257 +20 +1.5 +30 +1.19189996321751 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.58220277009702 +22 +1.5 +32 +1.1985054650771 +13 +1.58220277009702 +23 +1.5 +33 +1.1985054650771 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.58220277009702 +20 +1.5 +30 +1.1985054650771 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.61135857342883 +22 +1.5 +32 +1.20801452412167 +13 +1.61135857342883 +23 +1.5 +33 +1.20801452412167 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.61135857342883 +20 +1.5 +30 +1.20801452412167 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.63944193282374 +22 +1.5 +32 +1.22033556291445 +13 +1.63944193282374 +23 +1.5 +33 +1.22033556291445 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.63944193282374 +20 +1.5 +30 +1.22033556291445 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.66618239017884 +22 +1.5 +32 +1.23534992311649 +13 +1.66618239017884 +23 +1.5 +33 +1.23534992311649 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.66618239017884 +20 +1.5 +30 +1.23534992311649 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.69132242027198 +22 +1.5 +32 +1.25291300823137 +13 +1.69132242027198 +23 +1.5 +33 +1.25291300823137 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.69132242027198 +20 +1.5 +30 +1.25291300823137 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.71461991087043 +22 +1.5 +32 +1.27285567614847 +13 +1.71461991087043 +23 +1.5 +33 +1.27285567614847 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.71461991087043 +20 +1.5 +30 +1.27285567614847 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +1.71583333333333 +22 +1.5 +32 +1.27412051524007 +13 +1.71583333333333 +23 +1.5 +33 +1.27412051524007 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +3.0 +30 +2.536 +11 +0.205000000000001 +21 +3.0 +31 +2.277 +12 +0.0 +22 +3.0 +32 +2.277 +13 +0.0 +23 +3.0 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.205000000000001 +20 +3.0 +30 +2.277 +11 +0.0 +21 +3.0 +31 +2.536 +12 +0.205000000000001 +22 +3.0 +32 +2.795 +13 +0.205000000000001 +23 +3.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.205000000000001 +20 +3.0 +30 +2.795 +11 +0.0 +21 +3.0 +31 +2.536 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.0 +20 +3.0 +30 +0.464 +11 +0.205000000000001 +21 +3.0 +31 +0.205000000000001 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.205000000000001 +20 +3.0 +30 +0.205000000000001 +11 +0.0 +21 +3.0 +31 +0.464 +12 +0.205 +22 +3.0 +32 +0.723 +13 +0.205 +23 +3.0 +33 +0.723 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.205 +20 +3.0 +30 +0.723 +11 +0.0 +21 +3.0 +31 +0.464 +12 +0.0 +22 +3.0 +32 +0.723 +13 +0.0 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +3.0 +30 +8.88178419700126e-17 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +0.776999999999999 +21 +3.0 +31 +8.88178419700126e-17 +12 +1.295 +22 +3.0 +32 +0.0 +13 +1.295 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.295 +20 +3.0 +30 +0.0 +11 +0.776999999999999 +21 +3.0 +31 +8.88178419700126e-17 +12 +1.5 +22 +3.0 +32 +0.205000000000001 +13 +1.5 +23 +3.0 +33 +0.205000000000001 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +0.205000000000001 +11 +0.776999999999999 +21 +3.0 +31 +8.88178419700126e-17 +12 +0.776999999999999 +22 +3.0 +32 +0.205 +13 +0.776999999999999 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +2.1475 +21 +3.0 +31 +1.71583333333333 +12 +1.71583333333333 +22 +3.0 +32 +2.1475 +13 +1.71583333333333 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +0.205000000000001 +20 +3.0 +30 +2.795 +11 +0.53125 +21 +3.0 +31 +2.277 +12 +0.205000000000001 +22 +3.0 +32 +2.277 +13 +0.205000000000001 +23 +3.0 +33 +2.277 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +3.0 +30 +2.277 +11 +0.205000000000001 +21 +3.0 +31 +2.795 +12 +0.777 +22 +3.0 +32 +2.795 +13 +0.777 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +3.0 +30 +0.723 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +0.776999999999999 +22 +3.0 +32 +0.205 +13 +0.776999999999999 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +0.205000000000001 +11 +0.53125 +21 +3.0 +31 +0.723 +12 +0.723000000000001 +22 +3.0 +32 +0.982 +13 +0.723000000000001 +23 +3.0 +33 +0.982 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +0.723000000000001 +20 +3.0 +30 +0.982 +11 +0.53125 +21 +3.0 +31 +0.723 +12 +0.53125 +22 +3.0 +32 +0.982 +13 +0.53125 +23 +3.0 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +3.0 +30 +1.241 +11 +1.5 +21 +3.0 +31 +1.5 +12 +1.5 +22 +3.0 +32 +1.18780925188093 +13 +1.5 +23 +3.0 +33 +1.18780925188093 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.5 +11 +1.0625 +21 +3.0 +31 +1.241 +12 +1.0625 +22 +3.0 +32 +1.5 +13 +1.0625 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.18780925188093 +11 +1.71583333333333 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +0.205000000000001 +13 +1.5 +23 +3.0 +33 +0.205000000000001 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +0.8525 +11 +1.5 +21 +3.0 +31 +1.18780925188093 +12 +1.60791666666667 +22 +3.0 +32 +1.02015462594046 +13 +1.60791666666667 +23 +3.0 +33 +1.02015462594046 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +3.0 +30 +1.5 +11 +1.5 +21 +3.0 +31 +1.81219074811907 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.81219074811907 +11 +1.0625 +21 +3.0 +31 +1.5 +12 +1.0625 +22 +3.0 +32 +1.759 +13 +1.0625 +23 +3.0 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +0.205000000000001 +11 +0.796875 +21 +3.0 +31 +0.982 +12 +0.796875 +22 +3.0 +32 +1.241 +13 +0.796875 +23 +3.0 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +3.0 +30 +0.982 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +0.723000000000001 +22 +3.0 +32 +0.982 +13 +0.723000000000001 +23 +3.0 +33 +0.982 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +1.0625 +21 +3.0 +31 +1.759 +12 +0.796875 +22 +3.0 +32 +1.759 +13 +0.796875 +23 +3.0 +33 +1.759 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +3.0 +30 +1.759 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +1.81219074811907 +13 +1.5 +23 +3.0 +33 +1.81219074811907 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +1.60791666666667 +21 +3.0 +31 +1.97984537405954 +12 +1.5 +22 +3.0 +32 +1.81219074811907 +13 +1.5 +23 +3.0 +33 +1.81219074811907 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.97984537405954 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.71583333333333 +22 +3.0 +32 +2.1475 +13 +1.71583333333333 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +1.5 +21 +3.0 +31 +0.205000000000001 +12 +1.71583333333333 +22 +3.0 +32 +0.8525 +13 +1.71583333333333 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +1.28416666666667 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.71583333333333 +22 +3.0 +32 +0.8525 +13 +1.71583333333333 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +1.5 +30 +0.8525 +11 +1.71583333333333 +21 +3.0 +31 +0.8525 +12 +1.71583333333333 +22 +1.5 +32 +0.8525 +13 +1.71583333333333 +23 +1.5 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +0.8525 +11 +2.1475 +21 +1.5 +31 +0.8525 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.71583333333333 +22 +3.0 +32 +2.1475 +13 +1.71583333333333 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +1.71583333333333 +21 +1.5 +31 +2.1475 +12 +1.71583333333333 +22 +3.0 +32 +2.1475 +13 +1.71583333333333 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +2.1475 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +2.1475 +22 +1.5 +32 +2.1475 +13 +2.1475 +23 +1.5 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.796875 +20 +3.0 +30 +1.241 +11 +1.5 +21 +3.0 +31 +1.18780925188093 +12 +1.5 +22 +3.0 +32 +0.205000000000001 +13 +1.5 +23 +3.0 +33 +0.205000000000001 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.18780925188093 +11 +0.796875 +21 +3.0 +31 +1.241 +12 +1.0625 +22 +3.0 +32 +1.241 +13 +1.0625 +23 +3.0 +33 +1.241 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.796875 +21 +3.0 +31 +2.018 +12 +0.723000000000001 +22 +3.0 +32 +2.018 +13 +0.723000000000001 +23 +3.0 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.796875 +21 +3.0 +31 +1.759 +12 +0.796875 +22 +3.0 +32 +2.018 +13 +0.796875 +23 +3.0 +33 +2.018 +70 +12 + 0 +3DFACE + 8 +taser_b +10 +0.205000000000001 +20 +3.0 +30 +0.205000000000001 +11 +0.53125 +21 +3.0 +31 +0.723 +12 +0.776999999999999 +22 +3.0 +32 +0.205 +13 +0.776999999999999 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +3.0 +30 +0.723 +11 +0.205000000000001 +21 +3.0 +31 +0.205000000000001 +12 +0.205 +22 +3.0 +32 +0.723 +13 +0.205 +23 +3.0 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +3.0 +30 +0.723 +11 +0.776999999999999 +21 +1.5 +31 +0.205 +12 +0.53125 +22 +1.5 +32 +0.723 +13 +0.53125 +23 +1.5 +33 +0.723 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.776999999999999 +20 +1.5 +30 +0.205 +11 +0.53125 +21 +3.0 +31 +0.723 +12 +0.776999999999999 +22 +3.0 +32 +0.205 +13 +0.776999999999999 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.53125 +20 +3.0 +30 +2.277 +11 +0.723000000000001 +21 +3.0 +31 +2.018 +12 +0.53125 +22 +3.0 +32 +2.018 +13 +0.53125 +23 +3.0 +33 +2.018 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +0.723000000000001 +20 +3.0 +30 +2.018 +11 +0.53125 +21 +3.0 +31 +2.277 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.53125 +21 +3.0 +31 +2.277 +12 +0.777 +22 +3.0 +32 +2.795 +13 +0.777 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.0625 +21 +1.5 +31 +1.241 +12 +1.5 +22 +1.5 +32 +1.18780925188093 +13 +1.5 +23 +1.5 +33 +1.18780925188093 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.0625 +20 +1.5 +30 +1.241 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.0625 +22 +1.5 +32 +1.5 +13 +1.0625 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +3.0 +30 +1.18780925188093 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.18780925188093 +13 +1.5 +23 +1.5 +33 +1.18780925188093 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.5 +21 +3.0 +31 +1.18780925188093 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +2.1475 +11 +1.71583333333333 +21 +3.0 +31 +1.72547110140021 +12 +1.60791666666667 +22 +3.0 +32 +1.97984537405954 +13 +1.60791666666667 +23 +3.0 +33 +1.97984537405954 +70 +0 + 0 +3DFACE + 8 +taser_b +10 +1.60791666666667 +20 +3.0 +30 +1.02015462594046 +11 +1.71583333333333 +21 +3.0 +31 +1.27412051524007 +12 +1.71583333333333 +22 +3.0 +32 +0.8525 +13 +1.71583333333333 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +3.0 +30 +1.27412051524007 +11 +1.60791666666667 +21 +3.0 +31 +1.02015462594046 +12 +1.71461991087043 +22 +3.0 +32 +1.27285567614847 +13 +1.71461991087043 +23 +3.0 +33 +1.27285567614847 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +2.1475 +20 +3.0 +30 +1.28416666666667 +11 +1.71583333333333 +21 +1.5 +31 +0.8525 +12 +2.1475 +22 +1.5 +32 +1.28416666666667 +13 +2.1475 +23 +1.5 +33 +1.28416666666667 +70 +1 + 0 +3DFACE + 8 +taser_b +10 +1.71583333333333 +20 +1.5 +30 +0.8525 +11 +2.1475 +21 +3.0 +31 +1.28416666666667 +12 +1.71583333333333 +22 +3.0 +32 +0.8525 +13 +1.71583333333333 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.74 +20 +1.5 +30 +3.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.74 +21 +1.5 +31 +3.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +3.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +0.205 +22 +3.0 +32 +0.0 +13 +0.205 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.497732043121052 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.878679656440357 +22 +3.0 +32 +0.0 +13 +0.878679656440357 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.878679656440357 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.20163144893051 +22 +3.0 +32 +0.0 +13 +1.20163144893051 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +0.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +0.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.0777666229051 +20 +0.868083094650066 +30 +0.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +0.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.743659607729131 +20 +1.42550697334953 +30 +0.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.754603186893545 +20 +1.35173135526774 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +3.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.754603186893545 +20 +1.35173135526774 +30 +0.0 +11 +0.772725344843522 +21 +1.27938364528661 +31 +3.0 +12 +0.772725344843522 +22 +1.27938364528661 +32 +0.0 +13 +0.772725344843522 +23 +1.27938364528661 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.772725344843522 +20 +1.27938364528661 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.772725344843522 +20 +1.27938364528661 +30 +0.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +3.0 +11 +0.772725344843522 +21 +1.27938364528661 +31 +0.0 +12 +0.772725344843522 +22 +1.27938364528661 +32 +3.0 +13 +0.772725344843522 +23 +1.27938364528661 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +0.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.82973983909525 +20 +1.14173848001224 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +0.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +0.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +3.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.82973983909525 +20 +1.14173848001224 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.0777666229051 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +3.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.74 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +0.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.743659607729131 +20 +1.42550697334953 +30 +3.0 +11 +0.74 +21 +1.5 +31 +0.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +0.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +0.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20916059140253 +20 +0.797851555291422 +30 +0.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.743659607729131 +20 +1.57449302665047 +30 +0.0 +11 +0.74 +21 +1.5 +31 +3.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.74 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +0.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +3.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.754603186893545 +20 +1.64826864473226 +30 +0.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +0.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.743659607729131 +20 +1.57449302665047 +30 +3.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.772725344843521 +20 +1.72061635471339 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.754603186893545 +20 +1.64826864473226 +30 +3.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +3.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +0.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.772725344843521 +20 +1.72061635471339 +30 +3.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.82973983909525 +20 +1.85826151998776 +30 +0.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +3.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.82973983909525 +20 +1.85826151998776 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.91251205544432 +20 +1.98213889596437 +30 +0.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +3.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +0.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.91251205544432 +20 +1.98213889596437 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +2.26 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +2.26 +31 +3.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +3.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +0.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.35173135526774 +20 +2.24539681310645 +30 +0.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.35173135526774 +20 +2.24539681310645 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +3.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +3.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.27938364528661 +20 +2.22727465515648 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +0.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +0.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.91251205544432 +20 +1.01786110403563 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +3.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +3.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.14173848001224 +20 +2.17026016090475 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +0.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +3.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.01786110403563 +20 +2.08748794455568 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +0.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +3.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +0.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +0.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.64826864473226 +20 +2.24539681310646 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.64826864473226 +20 +2.24539681310646 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +3.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +3.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +2.26 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +0.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +3.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +3.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +3.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +3.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +3.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +0.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +3.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +3.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +0.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +3.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +0.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.64826864473226 +20 +0.754603186893545 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.72061635471339 +20 +0.772725344843521 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +3.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +0.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +0.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +0.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +3.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +3.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +0.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +3.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.0777666229051 +30 +0.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +0.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.91251205544432 +20 +1.01786110403563 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.01786110403563 +20 +0.91251205544432 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +3.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +0.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +3.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.0777666229051 +20 +0.868083094650066 +30 +3.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.14173848001224 +20 +0.82973983909525 +30 +0.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +3.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +3.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.98213889596437 +20 +0.91251205544432 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +3.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.98213889596437 +20 +0.91251205544432 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +0.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +0.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.85826151998776 +20 +0.82973983909525 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +0.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.85826151998776 +20 +0.82973983909525 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +3.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.35173135526774 +20 +0.754603186893545 +30 +3.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +3.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +0.74 +31 +0.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +0.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.74 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +0.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +3.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20916059140253 +20 +0.797851555291422 +30 +3.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.27938364528661 +20 +0.772725344843521 +30 +0.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +3.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +3.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +0.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +0.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.35173135526774 +20 +0.754603186893545 +30 +0.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.72061635471339 +20 +0.772725344843521 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +0.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +0.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.74 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +3.0 +22 +0.497732043121051 +32 +0.0 +13 +3.0 +23 +0.497732043121051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.79836855106949 +22 +0.0 +32 +0.0 +13 +1.79836855106949 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +0.0 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.74 +20 +1.5 +30 +0.0 +11 +2.77555756156289e-17 +21 +1.20163144893051 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.77555756156289e-17 +20 +1.20163144893051 +30 +0.0 +11 +0.74 +21 +1.5 +31 +0.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +0.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +2.77555756156289e-17 +20 +1.20163144893051 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +0.0 +11 +0.205 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +0.0 +12 +0.497732043121053 +22 +-5.55111512312578e-17 +32 +0.0 +13 +0.497732043121053 +23 +-5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.497732043121053 +20 +-5.55111512312578e-17 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +0.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +0.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.497732043121053 +20 +-5.55111512312578e-17 +30 +0.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 +12 +1.20163144893051 +22 +3.0 +32 +0.0 +13 +1.20163144893051 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.35173135526774 +20 +2.24539681310645 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +0.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.79836855106949 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +0.0 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.26 +20 +1.5 +30 +0.0 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +0.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +-1.11022302462516e-16 +21 +2.50226795687895 +31 +0.0 +12 +0.0 +22 +2.795 +32 +0.0 +13 +0.0 +23 +2.795 +33 +0.0 +70 +12 + 0 +3DFACE + 8 +pillar_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +3.0 +21 +0.878679656440357 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.878679656440357 +30 +0.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.878679656440357 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.0 +21 +1.79836855106949 +31 +0.0 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +0.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +-1.11022302462516e-16 +22 +0.878679656440357 +32 +0.0 +13 +-1.11022302462516e-16 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +0.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +0.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20916059140253 +20 +0.797851555291422 +30 +0.0 +11 +1.20163144893051 +21 +5.55111512312578e-17 +31 +0.0 +12 +0.878679656440358 +22 +1.11022302462516e-16 +32 +0.0 +13 +0.878679656440358 +23 +1.11022302462516e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20163144893051 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +0.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +0.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.20163144893051 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.85826151998776 +20 +0.82973983909525 +30 +0.0 +11 +2.12132034355964 +21 +-5.55111512312578e-17 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.12132034355964 +20 +-5.55111512312578e-17 +30 +0.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +2.12132034355964 +20 +-5.55111512312578e-17 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +2.50226795687895 +22 +-4.16333634234434e-17 +32 +0.0 +13 +2.50226795687895 +23 +-4.16333634234434e-17 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.878679656440357 +20 +3.0 +30 +0.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +0.878679656440357 +21 +3.0 +31 +0.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +0.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +0.878679656440357 +21 +3.0 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +0.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +0.878679656440357 +22 +3.0 +32 +0.0 +13 +0.878679656440357 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +0.0 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +0.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.79836855106949 +22 +3.0 +32 +0.0 +13 +1.79836855106949 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +0.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.12132034355964 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +1.79836855106949 +32 +0.0 +13 +3.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +3.0 +22 +0.878679656440357 +32 +0.0 +13 +3.0 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.98213889596437 +20 +0.91251205544432 +30 +0.0 +11 +2.50226795687895 +21 +-4.16333634234434e-17 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +-4.16333634234434e-17 +30 +0.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +-4.16333634234434e-17 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.72061635471339 +20 +0.772725344843521 +30 +0.0 +11 +1.79836855106949 +21 +0.0 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +0.0 +30 +0.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +0.0 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +2.12132034355964 +22 +-5.55111512312578e-17 +32 +0.0 +13 +2.12132034355964 +23 +-5.55111512312578e-17 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.35173135526774 +20 +0.754603186893545 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.0 +12 +1.20163144893051 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.20163144893051 +23 +5.55111512312578e-17 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +0.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +0.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.0777666229051 +20 +0.868083094650066 +30 +0.0 +11 +0.878679656440358 +21 +1.11022302462516e-16 +31 +0.0 +12 +0.497732043121053 +22 +-5.55111512312578e-17 +32 +0.0 +13 +0.497732043121053 +23 +-5.55111512312578e-17 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.878679656440358 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +0.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +0.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.878679656440358 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.0777666229051 +30 +0.0 +11 +0.0 +21 +0.205 +31 +0.0 +12 +0.0 +22 +0.497732043121051 +32 +0.0 +13 +0.0 +23 +0.497732043121051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +0.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.77555756156289e-17 +20 +1.20163144893051 +30 +0.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +0.0 +12 +-1.11022302462516e-16 +22 +0.878679656440357 +32 +0.0 +13 +-1.11022302462516e-16 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +2.77555756156289e-17 +21 +1.20163144893051 +31 +0.0 +12 +0.772725344843522 +22 +1.27938364528661 +32 +0.0 +13 +0.772725344843522 +23 +1.27938364528661 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.772725344843522 +20 +1.27938364528661 +30 +0.0 +11 +2.77555756156289e-17 +21 +1.20163144893051 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.754603186893545 +20 +1.64826864473226 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +0.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +0.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +0.0 +21 +2.12132034355964 +31 +0.0 +12 +-1.11022302462516e-16 +22 +2.50226795687895 +32 +0.0 +13 +-1.11022302462516e-16 +23 +2.50226795687895 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.0 +21 +2.795 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +3.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.754603186893545 +20 +1.35173135526774 +30 +3.0 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.0 +22 +1.20163144893051 +32 +3.0 +13 +0.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +3.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.25634039227087 +20 +1.42550697334953 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.26 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.35173135526774 +20 +0.754603186893545 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +3.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +3.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +3.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.35173135526774 +20 +2.24539681310645 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +3.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +3.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.17026016090475 +20 +1.14173848001224 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +3.0 +12 +3.0 +22 +0.878679656440357 +32 +3.0 +13 +3.0 +23 +0.878679656440357 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.50226795687895 +30 +3.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +3.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +3.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.50226795687895 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.868083094650066 +20 +1.0777666229051 +30 +3.0 +11 +0.0 +21 +0.878679656440357 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +3.0 +13 +0.0 +23 +0.497732043121051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.878679656440357 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +3.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.878679656440357 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +2.50226795687895 +21 +3.0 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +3.0 +21 +1.79836855106949 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +0.0 +30 +3.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.98213889596437 +20 +0.91251205544432 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.795 +22 +0.0 +32 +3.0 +13 +2.795 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.72061635471339 +20 +0.772725344843521 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.20163144893051 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +3.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.12132034355964 +20 +0.0 +30 +3.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.85826151998776 +20 +0.82973983909525 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.878679656440357 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.22727465515648 +20 +1.27938364528661 +30 +3.0 +11 +3.0 +21 +0.878679656440357 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +3.0 +21 +0.878679656440357 +31 +3.0 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.08748794455568 +20 +1.01786110403563 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +3.0 +13 +3.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.754603186893545 +20 +1.64826864473226 +30 +3.0 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +1.79836855106949 +32 +3.0 +13 +0.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.12132034355964 +30 +3.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +3.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +3.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.12132034355964 +30 +3.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +3.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +3.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +3.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20916059140253 +20 +0.797851555291422 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +3.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.5 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.74 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.0 +21 +0.205 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +3.0 +13 +0.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +3.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +3.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.0777666229051 +20 +0.868083094650066 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +3.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.205 +21 +0.0 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +3.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.797851555291422 +20 +1.20916059140253 +30 +3.0 +11 +0.0 +21 +1.20163144893051 +31 +3.0 +12 +0.0 +22 +0.878679656440357 +32 +3.0 +13 +0.0 +23 +0.878679656440357 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.20163144893051 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 +12 +0.772725344843522 +22 +1.27938364528661 +32 +3.0 +13 +0.772725344843522 +23 +1.27938364528661 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.20163144893051 +30 +3.0 +11 +0.772725344843522 +21 +1.27938364528661 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +1.5 +11 +2.795 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +3.0 +11 +1.5 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +3.0 +12 +1.5 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +2.795 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +0.205 +11 +1.20163144893051 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.5 +22 +0.0 +32 +0.0 +13 +1.5 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.20163144893051 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.878679656440358 +22 +1.11022302462516e-16 +32 +0.0 +13 +0.878679656440358 +23 +1.11022302462516e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.878679656440358 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.497732043121053 +22 +-5.55111512312578e-17 +32 +0.0 +13 +0.497732043121053 +23 +-5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.497732043121053 +20 +-5.55111512312578e-17 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.50226795687895 +21 +-4.16333634234434e-17 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +-4.16333634234434e-17 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +2.12132034355964 +22 +-5.55111512312578e-17 +32 +0.0 +13 +2.12132034355964 +23 +-5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.12132034355964 +20 +-5.55111512312578e-17 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.79836855106949 +22 +0.0 +32 +0.0 +13 +1.79836855106949 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.0 +13 +1.5 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +2.795 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +3.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +2.795 +11 +0.8525 +21 +0.0 +31 +2.1475 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +2.795 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +0.205 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +1.5 +11 +1.5 +21 +3.0 +31 +0.205 +12 +0.8525 +22 +3.0 +32 +0.8525 +13 +0.8525 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.497732043121052 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +LINE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +1.5 +31 +0.205 + 0 +LINE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +0.205 + 0 +LINE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +2.795 +31 +0.205 + 0 +LINE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +1.5 + 0 +LINE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +0.0 +22 +0.205 +32 +0.0 +13 +0.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +-1.11022302462516e-16 +22 +0.878679656440357 +32 +0.0 +13 +-1.11022302462516e-16 +23 +0.878679656440357 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +-1.11022302462516e-16 +20 +0.878679656440357 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +2.77555756156289e-17 +22 +1.20163144893051 +32 +0.0 +13 +2.77555756156289e-17 +23 +1.20163144893051 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +2.77555756156289e-17 +20 +1.20163144893051 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.205 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +1.5 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.0 +12 +0.0 +22 +2.795 +32 +0.205 +13 +0.0 +23 +2.795 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +1.5 +13 +0.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +0.878679656440357 +32 +3.0 +13 +0.0 +23 +0.878679656440357 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +0.878679656440357 +31 +3.0 +12 +0.0 +22 +1.20163144893051 +32 +3.0 +13 +0.0 +23 +1.20163144893051 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.20163144893051 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +-1.11022302462516e-16 +22 +2.50226795687895 +32 +0.0 +13 +-1.11022302462516e-16 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +-1.11022302462516e-16 +20 +2.50226795687895 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +0.0 +13 +0.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.205 +13 +0.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +1.5 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.205 +32 +2.795 +13 +0.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +1.5 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +0.205 +13 +0.0 +23 +2.795 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +LINE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.5 +31 +0.205 + 0 +LINE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +2.795 +31 +0.205 + 0 +LINE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.205 +31 +1.5 + 0 +LINE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 + 0 +LINE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +1.5 +13 +3.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +2.795 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +1.5 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.79836855106949 +30 +0.0 +11 +3.0 +21 +1.5 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +0.0 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +0.878679656440357 +32 +0.0 +13 +3.0 +23 +0.878679656440357 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.878679656440357 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +3.0 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +0.205 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.878679656440357 +32 +3.0 +13 +3.0 +23 +0.878679656440357 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.878679656440357 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +2.795 +13 +3.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +0.205 +13 +3.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +15 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.5 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_base +10 +0.8525 +20 +3.0 +30 +2.1475 +11 +1.5 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.8525 +20 +3.0 +30 +0.8525 +11 +1.5 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +2.795 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +2.795 +21 +3.0 +31 +1.5 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +2.795 +11 +1.5 +21 +0.0 +31 +1.5 +12 +2.1475 +22 +0.0 +32 +2.1475 +13 +2.1475 +23 +0.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.8525 +21 +0.0 +31 +2.1475 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +1.5 +11 +2.1475 +21 +0.0 +31 +0.8525 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +0.205 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +1.5 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +2.795 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.1475 +21 +0.0 +31 +0.8525 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +1.5 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.1475 +20 +0.0 +30 +0.8525 +11 +1.5 +21 +0.0 +31 +0.205 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0 +31 +0.205 +12 +2.1475 +22 +0.0 +32 +0.8525 +13 +2.1475 +23 +0.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.795 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +2.795 +13 +0.205 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.8525 +22 +0.0 +32 +2.1475 +13 +0.8525 +23 +0.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +0.205 +12 +0.8525 +22 +0.0 +32 +0.8525 +13 +0.8525 +23 +0.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.8525 +20 +0.0 +30 +2.1475 +11 +0.205 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +1.5 +12 +0.8525 +22 +3.0 +32 +2.1475 +13 +0.8525 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +2.1475 +13 +2.1475 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +0.205 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.8525 +21 +3.0 +31 +0.8525 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +pillar_base +10 +1.5 +20 +3.0 +30 +1.5 +11 +0.8525 +21 +3.0 +31 +0.8525 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +pillar_a +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +1.5 +12 +0.82973983909525 +22 +1.85826151998776 +32 +3.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.82973983909525 +20 +1.85826151998776 +30 +1.5 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +1.5 +13 +0.868083094650066 +23 +1.9222333770949 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.82973983909525 +20 +1.85826151998776 +30 +3.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +1.5 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.797851555291422 +20 +1.79083940859747 +30 +1.5 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +1.5 +13 +0.82973983909525 +23 +1.85826151998776 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.754603186893545 +20 +1.64826864473226 +30 +3.0 +11 +0.74365960772913 +21 +1.57449302665047 +31 +1.5 +12 +0.743659607729131 +22 +1.57449302665047 +32 +3.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.74365960772913 +20 +1.57449302665047 +30 +1.5 +11 +0.754603186893545 +21 +1.64826864473226 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +1.5 +13 +0.754603186893545 +23 +1.64826864473226 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +2.24539681310646 +30 +3.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +1.5 +12 +1.64826864473226 +22 +2.24539681310646 +32 +1.5 +13 +1.64826864473226 +23 +2.24539681310646 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.72061635471339 +20 +2.22727465515648 +30 +1.5 +11 +1.64826864473226 +21 +2.24539681310646 +31 +3.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +3.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +1.5 +12 +1.57449302665047 +22 +2.25634039227087 +32 +1.5 +13 +1.57449302665047 +23 +2.25634039227087 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +2.24539681310646 +30 +1.5 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +1.5 +12 +0.962598846298224 +22 +2.03740115370178 +32 +1.5 +13 +0.962598846298224 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.01786110403563 +20 +2.08748794455568 +30 +1.5 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +3.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +1.5 +12 +0.91251205544432 +22 +1.98213889596437 +32 +3.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.91251205544432 +20 +1.98213889596437 +30 +1.5 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +1.5 +13 +0.962598846298224 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.22727465515648 +20 +1.72061635471339 +30 +1.5 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +3.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +1.5 +12 +2.20214844470858 +22 +1.79083940859747 +32 +1.5 +13 +2.20214844470858 +23 +1.79083940859747 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.35173135526774 +20 +0.754603186893545 +30 +3.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +1.5 +12 +1.35173135526774 +22 +0.754603186893545 +32 +1.5 +13 +1.35173135526774 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.27938364528661 +20 +0.772725344843521 +30 +1.5 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +3.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +0.74 +30 +3.0 +11 +1.42550697334953 +21 +0.74365960772913 +31 +1.5 +12 +1.5 +22 +0.74 +32 +1.5 +13 +1.5 +23 +0.74 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.42550697334953 +20 +0.74365960772913 +30 +1.5 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +3.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +0.74 +31 +1.5 +12 +1.57449302665047 +22 +0.743659607729131 +32 +1.5 +13 +1.57449302665047 +23 +0.743659607729131 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +0.74 +30 +1.5 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.08748794455568 +20 +1.01786110403563 +30 +1.5 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +3.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +1.5 +12 +2.13191690534993 +22 +1.0777666229051 +32 +1.5 +13 +2.13191690534993 +23 +1.0777666229051 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +1.5 +12 +1.27938364528661 +22 +0.772725344843521 +32 +1.5 +13 +1.27938364528661 +23 +0.772725344843521 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.20916059140253 +20 +0.797851555291422 +30 +1.5 +11 +1.27938364528661 +21 +0.772725344843521 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.25634039227087 +20 +1.57449302665047 +30 +1.5 +11 +2.26 +21 +1.5 +31 +3.0 +12 +2.26 +22 +1.5 +32 +1.5 +13 +2.26 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +1.5 +12 +2.25634039227087 +22 +1.57449302665047 +32 +3.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +1.5 +12 +1.42550697334953 +22 +0.74365960772913 +32 +1.5 +13 +1.42550697334953 +23 +0.74365960772913 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.35173135526774 +20 +0.754603186893545 +30 +1.5 +11 +1.42550697334953 +21 +0.743659607729131 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.85826151998776 +20 +0.82973983909525 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +1.5 +12 +1.85826151998776 +22 +0.829739839095251 +32 +1.5 +13 +1.85826151998776 +23 +0.829739839095251 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +1.5 +11 +1.85826151998776 +21 +0.82973983909525 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +1.5 +12 +1.0777666229051 +22 +2.13191690534993 +32 +1.5 +13 +1.0777666229051 +23 +2.13191690534993 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.14173848001224 +20 +2.17026016090475 +30 +1.5 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +3.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.01786110403563 +20 +2.08748794455568 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +1.5 +12 +1.01786110403563 +22 +2.08748794455568 +32 +1.5 +13 +1.01786110403563 +23 +2.08748794455568 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.0777666229051 +20 +2.13191690534993 +30 +1.5 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534994 +31 +1.5 +12 +1.85826151998776 +22 +2.17026016090475 +32 +1.5 +13 +1.85826151998776 +23 +2.17026016090475 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +2.13191690534994 +30 +1.5 +11 +1.85826151998776 +21 +2.17026016090475 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +0.962598846298225 +30 +1.5 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.08748794455568 +20 +1.01786110403563 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298225 +31 +1.5 +12 +2.08748794455568 +22 +1.01786110403563 +32 +1.5 +13 +2.08748794455568 +23 +1.01786110403563 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.64826864473226 +30 +1.5 +11 +2.22727465515648 +21 +1.72061635471339 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +2.24539681310646 +21 +1.64826864473226 +31 +1.5 +12 +2.22727465515648 +22 +1.72061635471339 +32 +1.5 +13 +2.22727465515648 +23 +1.72061635471339 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.25634039227087 +20 +1.42550697334953 +30 +1.5 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +1.5 +13 +2.24539681310646 +23 +1.35173135526774 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +1.5 +12 +2.25634039227087 +22 +1.42550697334953 +32 +3.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.20916059140253 +20 +0.797851555291422 +30 +3.0 +11 +1.14173848001224 +21 +0.829739839095251 +31 +1.5 +12 +1.20916059140253 +22 +0.797851555291422 +32 +1.5 +13 +1.20916059140253 +23 +0.797851555291422 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.14173848001224 +20 +0.829739839095251 +30 +1.5 +11 +1.20916059140253 +21 +0.797851555291422 +31 +3.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +3.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.772725344843522 +21 +1.72061635471339 +31 +1.5 +12 +0.772725344843521 +22 +1.72061635471339 +32 +3.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.772725344843522 +20 +1.72061635471339 +30 +1.5 +11 +0.797851555291422 +21 +1.79083940859747 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +1.5 +13 +0.797851555291422 +23 +1.79083940859747 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +2.26 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +1.5 +12 +1.5 +22 +2.26 +32 +1.5 +13 +1.5 +23 +2.26 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.57449302665047 +20 +2.25634039227087 +30 +1.5 +11 +1.5 +21 +2.26 +31 +3.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +3.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.42550697334953 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +2.26 +31 +1.5 +12 +1.42550697334953 +22 +2.25634039227087 +32 +1.5 +13 +1.42550697334953 +23 +2.25634039227087 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +2.26 +30 +1.5 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.35173135526774 +20 +2.24539681310645 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +1.5 +12 +1.35173135526774 +22 +2.24539681310646 +32 +1.5 +13 +1.35173135526774 +23 +2.24539681310646 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.42550697334953 +20 +2.25634039227087 +30 +1.5 +11 +1.35173135526774 +21 +2.24539681310645 +31 +3.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +3.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.27938364528661 +20 +2.22727465515648 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310646 +31 +1.5 +12 +1.27938364528661 +22 +2.22727465515648 +32 +1.5 +13 +1.27938364528661 +23 +2.22727465515648 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.35173135526774 +20 +2.24539681310646 +30 +1.5 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +1.5 +12 +1.20916059140253 +22 +2.20214844470858 +32 +1.5 +13 +1.20916059140253 +23 +2.20214844470858 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.27938364528661 +20 +2.22727465515648 +30 +1.5 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +3.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.17026016090475 +20 +1.85826151998776 +30 +1.5 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +3.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +1.5 +12 +2.13191690534993 +22 +1.9222333770949 +32 +1.5 +13 +2.13191690534993 +23 +1.9222333770949 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.91251205544432 +20 +1.98213889596437 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +1.5 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.868083094650066 +20 +1.9222333770949 +30 +1.5 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +1.5 +13 +0.91251205544432 +23 +1.98213889596437 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +1.85826151998776 +21 +0.829739839095251 +31 +1.5 +12 +1.9222333770949 +22 +0.868083094650066 +32 +1.5 +13 +1.9222333770949 +23 +0.868083094650066 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.85826151998776 +20 +0.829739839095251 +30 +1.5 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +3.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.98213889596437 +20 +0.91251205544432 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +1.5 +12 +1.98213889596437 +22 +0.91251205544432 +32 +1.5 +13 +1.98213889596437 +23 +0.91251205544432 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +1.5 +11 +1.98213889596437 +21 +0.91251205544432 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +1.5 +12 +2.03740115370178 +22 +0.962598846298225 +32 +1.5 +13 +2.03740115370178 +23 +0.962598846298225 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.98213889596437 +20 +0.91251205544432 +30 +1.5 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +3.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +1.5 +12 +1.01786110403563 +22 +0.91251205544432 +32 +1.5 +13 +1.01786110403563 +23 +0.91251205544432 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.962598846298224 +20 +0.962598846298224 +30 +1.5 +11 +1.01786110403563 +21 +0.91251205544432 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +1.5 +12 +1.79083940859747 +22 +2.20214844470858 +32 +1.5 +13 +1.79083940859747 +23 +2.20214844470858 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.85826151998776 +20 +2.17026016090475 +30 +1.5 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +3.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.9222333770949 +30 +1.5 +11 +2.08748794455568 +21 +1.98213889596437 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +1.5 +12 +2.08748794455568 +22 +1.98213889596437 +32 +1.5 +13 +2.08748794455568 +23 +1.98213889596437 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.25634039227087 +20 +1.57449302665047 +30 +1.5 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +3.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +1.5 +12 +2.24539681310646 +22 +1.64826864473226 +32 +1.5 +13 +2.24539681310646 +23 +1.64826864473226 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +1.5 +12 +1.9222333770949 +22 +2.13191690534994 +32 +1.5 +13 +1.9222333770949 +23 +2.13191690534994 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.98213889596437 +20 +2.08748794455568 +30 +1.5 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +3.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +1.5 +12 +1.98213889596437 +22 +2.08748794455568 +32 +1.5 +13 +1.98213889596437 +23 +2.08748794455568 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +2.03740115370178 +30 +1.5 +11 +1.98213889596437 +21 +2.08748794455568 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +1.5 +12 +1.72061635471339 +22 +2.22727465515648 +32 +1.5 +13 +1.72061635471339 +23 +2.22727465515648 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +2.20214844470858 +30 +1.5 +11 +1.72061635471339 +21 +2.22727465515648 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.79083940859747 +30 +1.5 +11 +2.17026016090475 +21 +1.85826151998776 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +1.5 +12 +2.17026016090475 +22 +1.85826151998776 +32 +1.5 +13 +2.17026016090475 +23 +1.85826151998776 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +1.5 +12 +1.14173848001224 +22 +0.829739839095251 +32 +1.5 +13 +1.14173848001224 +23 +0.829739839095251 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.0777666229051 +20 +0.868083094650066 +30 +1.5 +11 +1.14173848001224 +21 +0.82973983909525 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843522 +31 +1.5 +12 +1.79083940859747 +22 +0.797851555291422 +32 +1.5 +13 +1.79083940859747 +23 +0.797851555291422 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.72061635471339 +20 +0.772725344843522 +30 +1.5 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +3.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.743659607729131 +20 +1.57449302665047 +30 +3.0 +11 +0.74 +21 +1.5 +31 +1.5 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.74 +20 +1.5 +30 +1.5 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.74365960772913 +22 +1.57449302665047 +32 +1.5 +13 +0.74365960772913 +23 +1.57449302665047 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.772725344843521 +20 +1.72061635471339 +30 +3.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +1.5 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.754603186893545 +20 +1.64826864473226 +30 +1.5 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.772725344843522 +22 +1.72061635471339 +32 +1.5 +13 +0.772725344843522 +23 +1.72061635471339 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.08748794455568 +20 +1.98213889596437 +30 +1.5 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +3.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +1.5 +12 +2.03740115370178 +22 +2.03740115370178 +32 +1.5 +13 +2.03740115370178 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.72061635471339 +20 +0.772725344843521 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +1.5 +12 +1.72061635471339 +22 +0.772725344843522 +32 +1.5 +13 +1.72061635471339 +23 +0.772725344843522 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +0.754603186893545 +30 +1.5 +11 +1.72061635471339 +21 +0.772725344843521 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +1.5 +12 +0.962598846298224 +22 +0.962598846298224 +32 +1.5 +13 +0.962598846298224 +23 +0.962598846298224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.91251205544432 +20 +1.01786110403563 +30 +1.5 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +3.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.797851555291422 +20 +1.20916059140253 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +1.5 +12 +0.82973983909525 +22 +1.14173848001224 +32 +3.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.82973983909525 +20 +1.14173848001224 +30 +1.5 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +1.5 +13 +0.797851555291422 +23 +1.20916059140253 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +1.5 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.17026016090475 +20 +1.14173848001224 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +1.5 +12 +2.17026016090475 +22 +1.14173848001224 +32 +1.5 +13 +2.17026016090475 +23 +1.14173848001224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +1.5 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +1.5 +13 +2.17026016090475 +23 +1.14173848001224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.17026016090475 +20 +1.14173848001224 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +1.5 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.868083094650066 +20 +1.0777666229051 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +1.5 +12 +0.868083094650066 +22 +1.0777666229051 +32 +1.5 +13 +0.868083094650066 +23 +1.0777666229051 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.82973983909525 +20 +1.14173848001224 +30 +1.5 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +3.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +1.5 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +1.5 +13 +2.22727465515648 +23 +1.27938364528661 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.22727465515648 +20 +1.27938364528661 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +1.5 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.22727465515648 +20 +1.27938364528661 +30 +1.5 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +1.5 +13 +2.20214844470858 +23 +1.20916059140253 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +1.5 +12 +2.22727465515648 +22 +1.27938364528661 +32 +3.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.26 +20 +1.5 +30 +1.5 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +1.5 +13 +2.25634039227087 +23 +1.42550697334953 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.25634039227087 +20 +1.42550697334953 +30 +3.0 +11 +2.26 +21 +1.5 +31 +1.5 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +0.754603186893545 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +1.5 +12 +1.64826864473226 +22 +0.754603186893545 +32 +1.5 +13 +1.64826864473226 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.57449302665047 +20 +0.743659607729131 +30 +1.5 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.91251205544432 +20 +1.01786110403563 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +1.5 +12 +0.91251205544432 +22 +1.01786110403563 +32 +1.5 +13 +0.91251205544432 +23 +1.01786110403563 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.868083094650066 +20 +1.0777666229051 +30 +1.5 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.0777666229051 +20 +0.868083094650066 +30 +3.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +1.5 +12 +1.0777666229051 +22 +0.868083094650066 +32 +1.5 +13 +1.0777666229051 +23 +0.868083094650066 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.01786110403563 +20 +0.91251205544432 +30 +1.5 +11 +1.0777666229051 +21 +0.868083094650066 +31 +3.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +3.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.74 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +1.5 +12 +0.743659607729131 +22 +1.42550697334953 +32 +3.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.743659607729131 +20 +1.42550697334953 +30 +1.5 +11 +0.74 +21 +1.5 +31 +3.0 +12 +0.74 +22 +1.5 +32 +1.5 +13 +0.74 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.743659607729131 +20 +1.42550697334953 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +1.5 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.754603186893545 +20 +1.35173135526774 +30 +1.5 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +1.5 +13 +0.743659607729131 +23 +1.42550697334953 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.754603186893545 +20 +1.35173135526774 +30 +3.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +1.5 +12 +0.772725344843522 +22 +1.27938364528661 +32 +3.0 +13 +0.772725344843522 +23 +1.27938364528661 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.772725344843521 +20 +1.27938364528661 +30 +1.5 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +1.5 +13 +0.754603186893545 +23 +1.35173135526774 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.772725344843522 +20 +1.27938364528661 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +1.5 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.797851555291422 +20 +1.20916059140253 +30 +1.5 +11 +0.772725344843522 +21 +1.27938364528661 +31 +3.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +1.5 +13 +0.772725344843521 +23 +1.27938364528661 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.14173848001224 +20 +2.17026016090475 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +1.5 +12 +1.14173848001224 +22 +2.17026016090475 +32 +1.5 +13 +1.14173848001224 +23 +2.17026016090475 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.20916059140253 +20 +2.20214844470858 +30 +1.5 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +3.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +3.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.772725344843522 +20 +1.27938364528661 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.772725344843522 +21 +1.27938364528661 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.82973983909525 +20 +1.14173848001224 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.743659607729131 +20 +1.57449302665047 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.91251205544432 +20 +1.01786110403563 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +3.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +0.74 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +0.754603186893545 +30 +3.0 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +2.24539681310646 +30 +3.0 +11 +1.5 +21 +2.26 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +2.26 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +3.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +3.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +2.24539681310646 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +3.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.42550697334953 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.27938364528661 +20 +2.22727465515648 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.14173848001224 +20 +2.17026016090475 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +3.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +3.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +0.754603186893545 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +3.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.01786110403563 +20 +2.08748794455568 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.91251205544432 +20 +1.98213889596437 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.82973983909525 +20 +1.85826151998776 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +3.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +3.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +3.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +3.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +3.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +3.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +3.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.772725344843521 +20 +1.72061635471339 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.743659607729131 +20 +1.42550697334953 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +1.5 +11 +2.20214844470858 +21 +1.20916059140253 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +1.5 +11 +2.24539681310646 +21 +1.35173135526774 +31 +1.5 +12 +2.22727465515648 +22 +1.27938364528661 +32 +1.5 +13 +2.22727465515648 +23 +1.27938364528661 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.26 +20 +1.5 +30 +1.5 +11 +2.24539681310646 +21 +1.35173135526774 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +1.5 +11 +2.26 +21 +1.5 +31 +1.5 +12 +2.25634039227087 +22 +1.42550697334953 +32 +1.5 +13 +2.25634039227087 +23 +1.42550697334953 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +1.5 +11 +2.03740115370178 +21 +0.962598846298225 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +0.962598846298225 +30 +1.5 +11 +2.13191690534993 +21 +1.0777666229051 +31 +1.5 +12 +2.08748794455568 +22 +1.01786110403563 +32 +1.5 +13 +2.08748794455568 +23 +1.01786110403563 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +1.5 +11 +2.13191690534993 +21 +1.0777666229051 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +1.5 +11 +2.20214844470858 +21 +1.20916059140253 +31 +1.5 +12 +2.17026016090475 +22 +1.14173848001224 +32 +1.5 +13 +2.17026016090475 +23 +1.14173848001224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.42550697334953 +20 +2.25634039227087 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.35173135526774 +22 +2.24539681310646 +32 +1.5 +13 +1.35173135526774 +23 +2.24539681310646 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.42550697334953 +21 +2.25634039227087 +31 +1.5 +12 +1.5 +22 +2.26 +32 +1.5 +13 +1.5 +23 +2.26 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.27938364528661 +20 +2.22727465515648 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20916059140253 +22 +2.20214844470858 +32 +1.5 +13 +1.20916059140253 +23 +2.20214844470858 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.27938364528661 +21 +2.22727465515648 +31 +1.5 +12 +1.35173135526774 +22 +2.24539681310646 +32 +1.5 +13 +1.35173135526774 +23 +2.24539681310646 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.79083940859747 +30 +1.5 +11 +2.24539681310646 +21 +1.64826864473226 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.64826864473226 +30 +1.5 +11 +2.20214844470858 +21 +1.79083940859747 +31 +1.5 +12 +2.22727465515648 +22 +1.72061635471339 +32 +1.5 +13 +2.22727465515648 +23 +1.72061635471339 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.24539681310646 +20 +1.64826864473226 +30 +1.5 +11 +2.26 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.26 +20 +1.5 +30 +1.5 +11 +2.24539681310646 +21 +1.64826864473226 +31 +1.5 +12 +2.25634039227087 +22 +1.57449302665047 +32 +1.5 +13 +2.25634039227087 +23 +1.57449302665047 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +1.5 +11 +1.64826864473226 +21 +0.754603186893545 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +0.754603186893545 +30 +1.5 +11 +1.79083940859747 +21 +0.797851555291422 +31 +1.5 +12 +1.72061635471339 +22 +0.772725344843522 +32 +1.5 +13 +1.72061635471339 +23 +0.772725344843522 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +1.5 +11 +1.79083940859747 +21 +0.797851555291422 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +1.5 +11 +1.9222333770949 +21 +0.868083094650066 +31 +1.5 +12 +1.85826151998776 +22 +0.829739839095251 +32 +1.5 +13 +1.85826151998776 +23 +0.829739839095251 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +2.13191690534994 +30 +1.5 +11 +2.03740115370178 +21 +2.03740115370178 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +2.03740115370178 +30 +1.5 +11 +1.9222333770949 +21 +2.13191690534994 +31 +1.5 +12 +1.98213889596437 +22 +2.08748794455568 +32 +1.5 +13 +1.98213889596437 +23 +2.08748794455568 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +2.03740115370178 +30 +1.5 +11 +2.13191690534993 +21 +1.9222333770949 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.9222333770949 +30 +1.5 +11 +2.03740115370178 +21 +2.03740115370178 +31 +1.5 +12 +2.08748794455568 +22 +1.98213889596437 +32 +1.5 +13 +2.08748794455568 +23 +1.98213889596437 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.91251205544432 +21 +1.01786110403563 +31 +1.5 +12 +0.868083094650066 +22 +1.0777666229051 +32 +1.5 +13 +0.868083094650066 +23 +1.0777666229051 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.91251205544432 +20 +1.01786110403563 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.962598846298224 +22 +0.962598846298224 +32 +1.5 +13 +0.962598846298224 +23 +0.962598846298224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.82973983909525 +21 +1.14173848001224 +31 +1.5 +12 +0.797851555291422 +22 +1.20916059140253 +32 +1.5 +13 +0.797851555291422 +23 +1.20916059140253 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.82973983909525 +20 +1.14173848001224 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.868083094650066 +22 +1.0777666229051 +32 +1.5 +13 +0.868083094650066 +23 +1.0777666229051 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.01786110403563 +21 +0.91251205544432 +31 +1.5 +12 +0.962598846298224 +22 +0.962598846298224 +32 +1.5 +13 +0.962598846298224 +23 +0.962598846298224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.01786110403563 +20 +0.91251205544432 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.0777666229051 +22 +0.868083094650066 +32 +1.5 +13 +1.0777666229051 +23 +0.868083094650066 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.14173848001224 +21 +0.829739839095251 +31 +1.5 +12 +1.0777666229051 +22 +0.868083094650066 +32 +1.5 +13 +1.0777666229051 +23 +0.868083094650066 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.14173848001224 +20 +0.829739839095251 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20916059140253 +22 +0.797851555291422 +32 +1.5 +13 +1.20916059140253 +23 +0.797851555291422 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.42550697334953 +21 +0.74365960772913 +31 +1.5 +12 +1.35173135526774 +22 +0.754603186893545 +32 +1.5 +13 +1.35173135526774 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.42550697334953 +20 +0.74365960772913 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +0.74 +32 +1.5 +13 +1.5 +23 +0.74 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.57449302665047 +21 +0.743659607729131 +31 +1.5 +12 +1.5 +22 +0.74 +32 +1.5 +13 +1.5 +23 +0.74 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.57449302665047 +20 +0.743659607729131 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.64826864473226 +22 +0.754603186893545 +32 +1.5 +13 +1.64826864473226 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.57449302665047 +20 +2.25634039227087 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +2.26 +32 +1.5 +13 +1.5 +23 +2.26 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.57449302665047 +21 +2.25634039227087 +31 +1.5 +12 +1.64826864473226 +22 +2.24539681310646 +32 +1.5 +13 +1.64826864473226 +23 +2.24539681310646 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.64826864473226 +20 +2.24539681310646 +30 +1.5 +11 +1.79083940859747 +21 +2.20214844470858 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +2.20214844470858 +30 +1.5 +11 +1.64826864473226 +21 +2.24539681310646 +31 +1.5 +12 +1.72061635471339 +22 +2.22727465515648 +32 +1.5 +13 +1.72061635471339 +23 +2.22727465515648 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.743659607729131 +21 +1.42550697334953 +31 +1.5 +12 +0.74 +22 +1.5 +32 +1.5 +13 +0.74 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.743659607729131 +20 +1.42550697334953 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.754603186893545 +22 +1.35173135526774 +32 +1.5 +13 +0.754603186893545 +23 +1.35173135526774 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.74365960772913 +20 +1.57449302665047 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.74 +22 +1.5 +32 +1.5 +13 +0.74 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.74365960772913 +21 +1.57449302665047 +31 +1.5 +12 +0.754603186893545 +22 +1.64826864473226 +32 +1.5 +13 +0.754603186893545 +23 +1.64826864473226 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.82973983909525 +20 +1.85826151998776 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.797851555291422 +22 +1.79083940859747 +32 +1.5 +13 +0.797851555291422 +23 +1.79083940859747 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.82973983909525 +21 +1.85826151998776 +31 +1.5 +12 +0.868083094650066 +22 +1.9222333770949 +32 +1.5 +13 +0.868083094650066 +23 +1.9222333770949 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.772725344843522 +20 +1.72061635471339 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.754603186893545 +22 +1.64826864473226 +32 +1.5 +13 +0.754603186893545 +23 +1.64826864473226 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.772725344843522 +21 +1.72061635471339 +31 +1.5 +12 +0.797851555291422 +22 +1.79083940859747 +32 +1.5 +13 +0.797851555291422 +23 +1.79083940859747 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.01786110403563 +20 +2.08748794455568 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.962598846298224 +22 +2.03740115370178 +32 +1.5 +13 +0.962598846298224 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.01786110403563 +21 +2.08748794455568 +31 +1.5 +12 +1.0777666229051 +22 +2.13191690534993 +32 +1.5 +13 +1.0777666229051 +23 +2.13191690534993 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.91251205544432 +20 +1.98213889596437 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.868083094650066 +22 +1.9222333770949 +32 +1.5 +13 +0.868083094650066 +23 +1.9222333770949 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.91251205544432 +21 +1.98213889596437 +31 +1.5 +12 +0.962598846298224 +22 +2.03740115370178 +32 +1.5 +13 +0.962598846298224 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.79083940859747 +20 +2.20214844470858 +30 +1.5 +11 +1.9222333770949 +21 +2.13191690534994 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +2.13191690534994 +30 +1.5 +11 +1.79083940859747 +21 +2.20214844470858 +31 +1.5 +12 +1.85826151998776 +22 +2.17026016090475 +32 +1.5 +13 +1.85826151998776 +23 +2.17026016090475 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.27938364528661 +21 +0.772725344843521 +31 +1.5 +12 +1.20916059140253 +22 +0.797851555291422 +32 +1.5 +13 +1.20916059140253 +23 +0.797851555291422 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.27938364528661 +20 +0.772725344843521 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.35173135526774 +22 +0.754603186893545 +32 +1.5 +13 +1.35173135526774 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.13191690534993 +20 +1.9222333770949 +30 +1.5 +11 +2.20214844470858 +21 +1.79083940859747 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.20214844470858 +20 +1.79083940859747 +30 +1.5 +11 +2.13191690534993 +21 +1.9222333770949 +31 +1.5 +12 +2.17026016090475 +22 +1.85826151998776 +32 +1.5 +13 +2.17026016090475 +23 +1.85826151998776 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +2.03740115370178 +20 +0.962598846298225 +30 +1.5 +11 +1.9222333770949 +21 +0.868083094650066 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +1.5 +11 +2.03740115370178 +21 +0.962598846298225 +31 +1.5 +12 +1.98213889596437 +22 +0.91251205544432 +32 +1.5 +13 +1.98213889596437 +23 +0.91251205544432 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.14173848001224 +20 +2.17026016090475 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.0777666229051 +22 +2.13191690534993 +32 +1.5 +13 +1.0777666229051 +23 +2.13191690534993 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.14173848001224 +21 +2.17026016090475 +31 +1.5 +12 +1.20916059140253 +22 +2.20214844470858 +32 +1.5 +13 +1.20916059140253 +23 +2.20214844470858 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.772725344843521 +21 +1.27938364528661 +31 +1.5 +12 +0.754603186893545 +22 +1.35173135526774 +32 +1.5 +13 +0.754603186893545 +23 +1.35173135526774 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_a +10 +0.772725344843521 +20 +1.27938364528661 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.797851555291422 +22 +1.20916059140253 +32 +1.5 +13 +0.797851555291422 +23 +1.20916059140253 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.64826864473226 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +1.5 +12 +2.24539681310645 +22 +1.64826864473226 +32 +1.5 +13 +2.24539681310645 +23 +1.64826864473226 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.22727465515648 +20 +1.72061635471339 +30 +1.5 +11 +2.24539681310646 +21 +1.64826864473226 +31 +0.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +0.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.01786110403563 +20 +2.08748794455568 +30 +1.5 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +0.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +1.5 +12 +1.0777666229051 +22 +2.13191690534993 +32 +1.5 +13 +1.0777666229051 +23 +2.13191690534993 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.85826151998776 +20 +2.17026016090475 +30 +1.5 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +0.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +1.5 +12 +1.9222333770949 +22 +2.13191690534993 +32 +1.5 +13 +1.9222333770949 +23 +2.13191690534993 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.85826151998776 +20 +0.82973983909525 +30 +1.5 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.85826151998776 +22 +0.829739839095251 +32 +0.0 +13 +1.85826151998776 +23 +0.829739839095251 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +1.5 +12 +1.79083940859747 +22 +0.797851555291422 +32 +1.5 +13 +1.79083940859747 +23 +0.797851555291422 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +1.5 +11 +1.14173848001224 +21 +2.17026016090475 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +1.5 +12 +1.14173848001224 +22 +2.17026016090475 +32 +1.5 +13 +1.14173848001224 +23 +2.17026016090475 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.35173135526774 +20 +0.754603186893545 +30 +1.5 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.27938364528661 +20 +0.772725344843521 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +1.5 +12 +1.27938364528661 +22 +0.772725344843521 +32 +1.5 +13 +1.27938364528661 +23 +0.772725344843521 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.42550697334953 +20 +0.743659607729131 +30 +1.5 +11 +1.35173135526774 +21 +0.754603186893545 +31 +0.0 +12 +1.42550697334953 +22 +0.74365960772913 +32 +0.0 +13 +1.42550697334953 +23 +0.74365960772913 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.35173135526774 +20 +0.754603186893545 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +1.5 +12 +1.35173135526774 +22 +0.754603186893545 +32 +1.5 +13 +1.35173135526774 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +0.74 +30 +1.5 +11 +1.42550697334953 +21 +0.74365960772913 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.42550697334953 +20 +0.74365960772913 +30 +0.0 +11 +1.5 +21 +0.74 +31 +1.5 +12 +1.42550697334953 +22 +0.743659607729131 +32 +1.5 +13 +1.42550697334953 +23 +0.743659607729131 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.57449302665047 +20 +0.743659607729131 +30 +1.5 +11 +1.5 +21 +0.74 +31 +0.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +0.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +0.74 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +1.5 +12 +1.5 +22 +0.74 +32 +1.5 +13 +1.5 +23 +0.74 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +1.5 +12 +2.08748794455568 +22 +1.01786110403563 +32 +1.5 +13 +2.08748794455568 +23 +1.01786110403563 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.0777666229051 +30 +1.5 +11 +2.08748794455568 +21 +1.01786110403563 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.27938364528661 +20 +0.772725344843521 +30 +1.5 +11 +1.20916059140253 +21 +0.797851555291422 +31 +0.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +0.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.20916059140253 +20 +0.797851555291422 +30 +0.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +1.5 +12 +1.20916059140253 +22 +0.797851555291422 +32 +1.5 +13 +1.20916059140253 +23 +0.797851555291422 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +1.5 +12 +2.26 +22 +1.5 +32 +1.5 +13 +2.26 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.25634039227087 +20 +1.57449302665047 +30 +1.5 +11 +2.26 +21 +1.5 +31 +0.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +0.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.754603186893545 +20 +1.64826864473226 +30 +1.5 +11 +0.74365960772913 +21 +1.57449302665047 +31 +0.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +1.5 +13 +0.743659607729131 +23 +1.57449302665047 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.74365960772913 +20 +1.57449302665047 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +1.5 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +2.24539681310646 +30 +1.5 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310646 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310646 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.72061635471339 +20 +2.22727465515648 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +1.5 +12 +1.72061635471339 +22 +2.22727465515648 +32 +1.5 +13 +1.72061635471339 +23 +2.22727465515648 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.57449302665047 +20 +2.25634039227087 +30 +1.5 +11 +1.64826864473226 +21 +2.24539681310646 +31 +0.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +2.24539681310646 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +1.5 +12 +1.64826864473226 +22 +2.24539681310646 +32 +1.5 +13 +1.64826864473226 +23 +2.24539681310646 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.962598846298224 +20 +2.03740115370178 +30 +1.5 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +1.5 +12 +1.01786110403563 +22 +2.08748794455568 +32 +1.5 +13 +1.01786110403563 +23 +2.08748794455568 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.962598846298224 +20 +2.03740115370178 +30 +1.5 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +1.5 +13 +0.91251205544432 +23 +1.98213889596437 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.91251205544432 +20 +1.98213889596437 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +1.5 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.82973983909525 +20 +1.85826151998776 +30 +1.5 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +1.5 +12 +0.868083094650066 +22 +1.9222333770949 +32 +1.5 +13 +0.868083094650066 +23 +1.9222333770949 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.82973983909525 +20 +1.85826151998776 +30 +1.5 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +1.5 +13 +0.797851555291422 +23 +1.79083940859747 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +1.5 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +1.5 +11 +0.772725344843522 +21 +1.72061635471339 +31 +0.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +1.5 +13 +0.772725344843521 +23 +1.72061635471339 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.772725344843522 +20 +1.72061635471339 +30 +0.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +1.5 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +2.26 +30 +1.5 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +2.26 +31 +1.5 +12 +1.57449302665047 +22 +2.25634039227087 +32 +1.5 +13 +1.57449302665047 +23 +2.25634039227087 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.42550697334953 +20 +2.25634039227087 +30 +1.5 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +0.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +2.26 +30 +0.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +1.5 +12 +1.5 +22 +2.26 +32 +1.5 +13 +1.5 +23 +2.26 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.35173135526774 +20 +2.24539681310645 +30 +1.5 +11 +1.42550697334953 +21 +2.25634039227087 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +1.5 +12 +1.42550697334953 +22 +2.25634039227087 +32 +1.5 +13 +1.42550697334953 +23 +2.25634039227087 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +1.5 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +0.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.35173135526774 +20 +2.24539681310645 +30 +0.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +1.5 +12 +1.35173135526774 +22 +2.24539681310645 +32 +1.5 +13 +1.35173135526774 +23 +2.24539681310645 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.20916059140253 +20 +2.20214844470858 +30 +1.5 +11 +1.27938364528661 +21 +2.22727465515648 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +1.5 +12 +1.27938364528661 +22 +2.22727465515648 +32 +1.5 +13 +1.27938364528661 +23 +2.22727465515648 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.17026016090475 +20 +1.85826151998776 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +1.5 +12 +2.17026016090475 +22 +1.85826151998776 +32 +1.5 +13 +2.17026016090475 +23 +1.85826151998776 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +1.5 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.91251205544432 +20 +1.98213889596437 +30 +1.5 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +1.5 +13 +0.868083094650066 +23 +1.9222333770949 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +1.5 +12 +0.91251205544432 +22 +1.98213889596437 +32 +0.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +0.868083094650066 +30 +1.5 +11 +1.85826151998776 +21 +0.829739839095251 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.85826151998776 +20 +0.829739839095251 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +1.5 +12 +1.85826151998776 +22 +0.82973983909525 +32 +1.5 +13 +1.85826151998776 +23 +0.82973983909525 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.98213889596437 +20 +0.91251205544432 +30 +1.5 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +0.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +1.5 +12 +1.9222333770949 +22 +0.868083094650066 +32 +1.5 +13 +1.9222333770949 +23 +0.868083094650066 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370178 +20 +0.962598846298224 +30 +1.5 +11 +1.98213889596437 +21 +0.91251205544432 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298225 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298225 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.98213889596437 +20 +0.91251205544432 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +1.5 +12 +1.98213889596437 +22 +0.91251205544432 +32 +1.5 +13 +1.98213889596437 +23 +0.91251205544432 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.01786110403563 +20 +0.91251205544432 +30 +1.5 +11 +0.962598846298224 +21 +0.962598846298224 +31 +0.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +0.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.962598846298224 +20 +0.962598846298224 +30 +0.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +1.5 +12 +0.962598846298224 +22 +0.962598846298224 +32 +1.5 +13 +0.962598846298224 +23 +0.962598846298224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +2.20214844470858 +30 +1.5 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.85826151998776 +20 +2.17026016090475 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +1.5 +12 +1.85826151998776 +22 +2.17026016090475 +32 +1.5 +13 +1.85826151998776 +23 +2.17026016090475 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.08748794455568 +20 +1.98213889596437 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +1.5 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +1.5 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +1.5 +13 +2.08748794455568 +23 +1.98213889596437 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.25634039227087 +20 +1.57449302665047 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +1.5 +12 +2.25634039227087 +22 +1.57449302665047 +32 +1.5 +13 +2.25634039227087 +23 +1.57449302665047 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310645 +20 +1.64826864473226 +30 +1.5 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.24539681310646 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310646 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +2.13191690534993 +30 +1.5 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.98213889596437 +20 +2.08748794455568 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +1.5 +12 +1.98213889596437 +22 +2.08748794455568 +32 +1.5 +13 +1.98213889596437 +23 +2.08748794455568 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.98213889596437 +20 +2.08748794455568 +30 +1.5 +11 +2.03740115370177 +21 +2.03740115370178 +31 +0.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +0.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370177 +20 +2.03740115370178 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +1.5 +12 +2.03740115370178 +22 +2.03740115370178 +32 +1.5 +13 +2.03740115370178 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.72061635471339 +20 +2.22727465515648 +30 +1.5 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +0.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +1.5 +12 +1.79083940859747 +22 +2.20214844470858 +32 +1.5 +13 +1.79083940859747 +23 +2.20214844470858 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +1.5 +12 +2.20214844470858 +22 +1.79083940859747 +32 +1.5 +13 +2.20214844470858 +23 +1.79083940859747 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.17026016090475 +20 +1.85826151998776 +30 +1.5 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +0.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.14173848001224 +20 +0.82973983909525 +30 +1.5 +11 +1.0777666229051 +21 +0.868083094650066 +31 +0.0 +12 +1.14173848001224 +22 +0.829739839095251 +32 +0.0 +13 +1.14173848001224 +23 +0.829739839095251 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.0777666229051 +20 +0.868083094650066 +30 +0.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +1.5 +12 +1.0777666229051 +22 +0.868083094650066 +32 +1.5 +13 +1.0777666229051 +23 +0.868083094650066 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +0.797851555291422 +30 +1.5 +11 +1.72061635471339 +21 +0.772725344843522 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.72061635471339 +20 +0.772725344843522 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +1.5 +12 +1.72061635471339 +22 +0.772725344843521 +32 +1.5 +13 +1.72061635471339 +23 +0.772725344843521 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.743659607729131 +20 +1.57449302665047 +30 +1.5 +11 +0.74 +21 +1.5 +31 +0.0 +12 +0.74 +22 +1.5 +32 +1.5 +13 +0.74 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.74 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +1.5 +12 +0.74365960772913 +22 +1.57449302665047 +32 +0.0 +13 +0.74365960772913 +23 +1.57449302665047 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.754603186893545 +20 +1.64826864473226 +30 +1.5 +11 +0.772725344843522 +21 +1.72061635471339 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.772725344843522 +20 +1.72061635471339 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +1.5 +12 +0.772725344843521 +22 +1.72061635471339 +32 +1.5 +13 +0.772725344843521 +23 +1.72061635471339 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370177 +20 +2.03740115370178 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +1.5 +12 +2.08748794455568 +22 +1.98213889596437 +32 +0.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.08748794455568 +20 +1.98213889596437 +30 +1.5 +11 +2.03740115370177 +21 +2.03740115370178 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +1.5 +13 +2.03740115370178 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.72061635471339 +20 +0.772725344843521 +30 +1.5 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 +12 +1.72061635471339 +22 +0.772725344843522 +32 +0.0 +13 +1.72061635471339 +23 +0.772725344843522 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +1.5 +12 +1.64826864473226 +22 +0.754603186893545 +32 +1.5 +13 +1.64826864473226 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.962598846298224 +20 +0.962598846298224 +30 +1.5 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.91251205544432 +20 +1.01786110403563 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +1.5 +12 +0.91251205544432 +22 +1.01786110403563 +32 +1.5 +13 +0.91251205544432 +23 +1.01786110403563 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.797851555291422 +20 +1.20916059140253 +30 +1.5 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +1.5 +13 +0.82973983909525 +23 +1.14173848001224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.82973983909525 +20 +1.14173848001224 +30 +0.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +1.5 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +1.5 +12 +2.13191690534993 +22 +1.0777666229051 +32 +1.5 +13 +2.13191690534993 +23 +1.0777666229051 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.17026016090475 +20 +1.14173848001224 +30 +1.5 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +0.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +1.5 +12 +2.17026016090475 +22 +1.14173848001224 +32 +0.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.17026016090475 +20 +1.14173848001224 +30 +1.5 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +1.5 +13 +2.20214844470858 +23 +1.20916059140253 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.82973983909525 +20 +1.14173848001224 +30 +1.5 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +1.5 +13 +0.868083094650066 +23 +1.0777666229051 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.868083094650066 +20 +1.0777666229051 +30 +0.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +1.5 +12 +0.82973983909525 +22 +1.14173848001224 +32 +0.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +1.5 +12 +2.22727465515648 +22 +1.27938364528661 +32 +1.5 +13 +2.22727465515648 +23 +1.27938364528661 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.35173135526774 +30 +1.5 +11 +2.22727465515648 +21 +1.27938364528661 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +1.5 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.20916059140253 +30 +1.5 +11 +2.22727465515648 +21 +1.27938364528661 +31 +0.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +1.5 +13 +2.22727465515648 +23 +1.27938364528661 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +1.5 +12 +2.25634039227087 +22 +1.42550697334953 +32 +0.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.25634039227087 +20 +1.42550697334953 +30 +1.5 +11 +2.26 +21 +1.5 +31 +0.0 +12 +2.26 +22 +1.5 +32 +1.5 +13 +2.26 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +0.754603186893545 +30 +1.5 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +1.5 +12 +1.57449302665047 +22 +0.743659607729131 +32 +1.5 +13 +1.57449302665047 +23 +0.743659607729131 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.868083094650066 +20 +1.0777666229051 +30 +1.5 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +1.5 +13 +0.91251205544432 +23 +1.01786110403563 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.91251205544432 +20 +1.01786110403563 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +1.5 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.0777666229051 +20 +0.868083094650066 +30 +1.5 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.01786110403563 +20 +0.91251205544432 +30 +0.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +1.5 +12 +1.01786110403563 +22 +0.91251205544432 +32 +1.5 +13 +1.01786110403563 +23 +0.91251205544432 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.74 +20 +1.5 +30 +1.5 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +1.5 +13 +0.743659607729131 +23 +1.42550697334953 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.743659607729131 +20 +1.42550697334953 +30 +0.0 +11 +0.74 +21 +1.5 +31 +1.5 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.743659607729131 +20 +1.42550697334953 +30 +1.5 +11 +0.754603186893545 +21 +1.35173135526774 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +1.5 +13 +0.754603186893545 +23 +1.35173135526774 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.754603186893545 +20 +1.35173135526774 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +1.5 +12 +0.743659607729131 +22 +1.42550697334953 +32 +0.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.754603186893545 +20 +1.35173135526774 +30 +1.5 +11 +0.772725344843521 +21 +1.27938364528661 +31 +0.0 +12 +0.772725344843522 +22 +1.27938364528661 +32 +1.5 +13 +0.772725344843522 +23 +1.27938364528661 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.772725344843521 +20 +1.27938364528661 +30 +0.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +1.5 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.772725344843522 +20 +1.27938364528661 +30 +1.5 +11 +0.797851555291422 +21 +1.20916059140253 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +1.5 +13 +0.797851555291422 +23 +1.20916059140253 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +0.772725344843522 +21 +1.27938364528661 +31 +1.5 +12 +0.772725344843521 +22 +1.27938364528661 +32 +0.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +1.5 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +0.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.20916059140253 +20 +2.20214844470858 +30 +0.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +1.5 +12 +1.20916059140253 +22 +2.20214844470858 +32 +1.5 +13 +1.20916059140253 +23 +2.20214844470858 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.42550697334953 +21 +0.74365960772913 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.42550697334953 +20 +0.74365960772913 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +1.5 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.35173135526774 +30 +1.5 +11 +2.25634039227087 +21 +1.42550697334953 +31 +0.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +1.5 +13 +2.25634039227087 +23 +1.42550697334953 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370178 +20 +0.962598846298225 +30 +0.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +1.5 +12 +2.03740115370178 +22 +0.962598846298224 +32 +1.5 +13 +2.03740115370178 +23 +0.962598846298224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.08748794455568 +20 +1.01786110403563 +30 +1.5 +11 +2.03740115370178 +21 +0.962598846298225 +31 +0.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +0.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.22727465515648 +20 +1.72061635471339 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +1.5 +12 +2.22727465515648 +22 +1.72061635471339 +32 +1.5 +13 +2.22727465515648 +23 +1.72061635471339 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +1.5 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.20916059140253 +20 +0.797851555291422 +30 +1.5 +11 +1.14173848001224 +21 +0.829739839095251 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.14173848001224 +20 +0.829739839095251 +30 +0.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +1.5 +12 +1.14173848001224 +22 +0.82973983909525 +32 +1.5 +13 +1.14173848001224 +23 +0.82973983909525 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310645 +20 +1.64826864473226 +30 +1.5 +11 +2.20214844470858 +21 +1.79083940859747 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +1.5 +11 +2.24539681310645 +21 +1.64826864473226 +31 +1.5 +12 +2.22727465515648 +22 +1.72061635471339 +32 +1.5 +13 +2.22727465515648 +23 +1.72061635471339 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.74365960772913 +20 +1.57449302665047 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.74365960772913 +21 +1.57449302665047 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +2.24539681310646 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +0.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +0.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +0.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.14173848001224 +21 +0.829739839095251 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.14173848001224 +20 +0.829739839095251 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +2.26 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310646 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +2.24539681310646 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +2.03740115370177 +21 +2.03740115370178 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370177 +20 +2.03740115370178 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +0.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.27938364528661 +20 +0.772725344843521 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.91251205544432 +20 +1.01786110403563 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +0.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +0.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.01786110403563 +20 +0.91251205544432 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.772725344843521 +20 +1.27938364528661 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370177 +20 +2.03740115370178 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +2.03740115370177 +21 +2.03740115370178 +31 +0.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +0.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.82973983909525 +20 +1.14173848001224 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.64826864473226 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.24539681310646 +21 +1.64826864473226 +31 +0.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +0.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.743659607729131 +20 +1.42550697334953 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.24539681310646 +21 +1.64826864473226 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.64826864473226 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +0.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.82973983909525 +20 +1.85826151998776 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +0.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.772725344843522 +20 +1.72061635471339 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.772725344843522 +21 +1.72061635471339 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298225 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370178 +20 +0.962598846298225 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +0.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +0.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +1.85826151998776 +22 +0.829739839095251 +32 +0.0 +13 +1.85826151998776 +23 +0.829739839095251 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.91251205544432 +20 +1.98213889596437 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370178 +20 +0.962598846298225 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298225 +31 +0.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +0.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.5 +21 +0.74 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +0.74 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +0.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.72061635471339 +22 +0.772725344843522 +32 +0.0 +13 +1.72061635471339 +23 +0.772725344843522 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +1.5 +11 +2.13191690534993 +21 +1.9222333770949 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +1.5 +11 +2.20214844470858 +21 +1.79083940859747 +31 +1.5 +12 +2.17026016090475 +22 +1.85826151998776 +32 +1.5 +13 +2.17026016090475 +23 +1.85826151998776 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +2.13191690534993 +30 +1.5 +11 +1.79083940859747 +21 +2.20214844470858 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +2.20214844470858 +30 +1.5 +11 +1.9222333770949 +21 +2.13191690534993 +31 +1.5 +12 +1.85826151998776 +22 +2.17026016090475 +32 +1.5 +13 +1.85826151998776 +23 +2.17026016090475 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.91251205544432 +21 +1.98213889596437 +31 +1.5 +12 +0.868083094650066 +22 +1.9222333770949 +32 +1.5 +13 +0.868083094650066 +23 +1.9222333770949 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.91251205544432 +20 +1.98213889596437 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.962598846298224 +22 +2.03740115370178 +32 +1.5 +13 +0.962598846298224 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +2.20214844470858 +30 +1.5 +11 +1.64826864473226 +21 +2.24539681310646 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +2.24539681310646 +30 +1.5 +11 +1.79083940859747 +21 +2.20214844470858 +31 +1.5 +12 +1.72061635471339 +22 +2.22727465515648 +32 +1.5 +13 +1.72061635471339 +23 +2.22727465515648 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +1.5 +11 +2.03740115370178 +21 +2.03740115370178 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370178 +20 +2.03740115370178 +30 +1.5 +11 +2.13191690534993 +21 +1.9222333770949 +31 +1.5 +12 +2.08748794455568 +22 +1.98213889596437 +32 +1.5 +13 +2.08748794455568 +23 +1.98213889596437 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +2.24539681310646 +30 +1.5 +11 +1.5 +21 +2.26 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +2.26 +30 +1.5 +11 +1.64826864473226 +21 +2.24539681310646 +31 +1.5 +12 +1.57449302665047 +22 +2.25634039227087 +32 +1.5 +13 +1.57449302665047 +23 +2.25634039227087 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.01786110403563 +21 +2.08748794455568 +31 +1.5 +12 +0.962598846298224 +22 +2.03740115370178 +32 +1.5 +13 +0.962598846298224 +23 +2.03740115370178 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.01786110403563 +20 +2.08748794455568 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.0777666229051 +22 +2.13191690534993 +32 +1.5 +13 +1.0777666229051 +23 +2.13191690534993 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.01786110403563 +20 +0.91251205544432 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.962598846298224 +22 +0.962598846298224 +32 +1.5 +13 +0.962598846298224 +23 +0.962598846298224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.01786110403563 +21 +0.91251205544432 +31 +1.5 +12 +1.0777666229051 +22 +0.868083094650066 +32 +1.5 +13 +1.0777666229051 +23 +0.868083094650066 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.82973983909525 +20 +1.14173848001224 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.797851555291422 +22 +1.20916059140253 +32 +1.5 +13 +0.797851555291422 +23 +1.20916059140253 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.82973983909525 +21 +1.14173848001224 +31 +1.5 +12 +0.868083094650066 +22 +1.0777666229051 +32 +1.5 +13 +0.868083094650066 +23 +1.0777666229051 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +0.868083094650066 +30 +1.5 +11 +2.03740115370178 +21 +0.962598846298224 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370178 +20 +0.962598846298224 +30 +1.5 +11 +1.9222333770949 +21 +0.868083094650066 +31 +1.5 +12 +1.98213889596437 +22 +0.91251205544432 +32 +1.5 +13 +1.98213889596437 +23 +0.91251205544432 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.91251205544432 +20 +1.01786110403563 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.868083094650066 +22 +1.0777666229051 +32 +1.5 +13 +0.868083094650066 +23 +1.0777666229051 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.91251205544432 +21 +1.01786110403563 +31 +1.5 +12 +0.962598846298224 +22 +0.962598846298224 +32 +1.5 +13 +0.962598846298224 +23 +0.962598846298224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.27938364528661 +20 +0.772725344843521 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20916059140253 +22 +0.797851555291422 +32 +1.5 +13 +1.20916059140253 +23 +0.797851555291422 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.27938364528661 +21 +0.772725344843521 +31 +1.5 +12 +1.35173135526774 +22 +0.754603186893545 +32 +1.5 +13 +1.35173135526774 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +0.797851555291422 +30 +1.5 +11 +1.9222333770949 +21 +0.868083094650066 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +0.868083094650066 +30 +1.5 +11 +1.79083940859747 +21 +0.797851555291422 +31 +1.5 +12 +1.85826151998776 +22 +0.82973983909525 +32 +1.5 +13 +1.85826151998776 +23 +0.82973983909525 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.0777666229051 +30 +1.5 +11 +2.20214844470858 +21 +1.20916059140253 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.20916059140253 +30 +1.5 +11 +2.13191690534993 +21 +1.0777666229051 +31 +1.5 +12 +2.17026016090475 +22 +1.14173848001224 +32 +1.5 +13 +2.17026016090475 +23 +1.14173848001224 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.14173848001224 +20 +0.82973983909525 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.0777666229051 +22 +0.868083094650066 +32 +1.5 +13 +1.0777666229051 +23 +0.868083094650066 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.14173848001224 +21 +0.82973983909525 +31 +1.5 +12 +1.20916059140253 +22 +0.797851555291422 +32 +1.5 +13 +1.20916059140253 +23 +0.797851555291422 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +0.754603186893545 +30 +1.5 +11 +1.79083940859747 +21 +0.797851555291422 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.79083940859747 +20 +0.797851555291422 +30 +1.5 +11 +1.64826864473226 +21 +0.754603186893545 +31 +1.5 +12 +1.72061635471339 +22 +0.772725344843521 +32 +1.5 +13 +1.72061635471339 +23 +0.772725344843521 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.772725344843521 +21 +1.72061635471339 +31 +1.5 +12 +0.754603186893545 +22 +1.64826864473226 +32 +1.5 +13 +0.754603186893545 +23 +1.64826864473226 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.772725344843521 +20 +1.72061635471339 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.797851555291422 +22 +1.79083940859747 +32 +1.5 +13 +0.797851555291422 +23 +1.79083940859747 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.14173848001224 +21 +2.17026016090475 +31 +1.5 +12 +1.0777666229051 +22 +2.13191690534993 +32 +1.5 +13 +1.0777666229051 +23 +2.13191690534993 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.20916059140253 +22 +2.20214844470858 +32 +1.5 +13 +1.20916059140253 +23 +2.20214844470858 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.743659607729131 +21 +1.57449302665047 +31 +1.5 +12 +0.74 +22 +1.5 +32 +1.5 +13 +0.74 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.743659607729131 +20 +1.57449302665047 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.754603186893545 +22 +1.64826864473226 +32 +1.5 +13 +0.754603186893545 +23 +1.64826864473226 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.82973983909525 +21 +1.85826151998776 +31 +1.5 +12 +0.797851555291422 +22 +1.79083940859747 +32 +1.5 +13 +0.797851555291422 +23 +1.79083940859747 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.82973983909525 +20 +1.85826151998776 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.868083094650066 +22 +1.9222333770949 +32 +1.5 +13 +0.868083094650066 +23 +1.9222333770949 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.743659607729131 +20 +1.42550697334953 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.74 +22 +1.5 +32 +1.5 +13 +0.74 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.743659607729131 +21 +1.42550697334953 +31 +1.5 +12 +0.754603186893545 +22 +1.35173135526774 +32 +1.5 +13 +0.754603186893545 +23 +1.35173135526774 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +0.772725344843522 +20 +1.27938364528661 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +0.754603186893545 +22 +1.35173135526774 +32 +1.5 +13 +0.754603186893545 +23 +1.35173135526774 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +0.772725344843522 +21 +1.27938364528661 +31 +1.5 +12 +0.797851555291422 +22 +1.20916059140253 +32 +1.5 +13 +0.797851555291422 +23 +1.20916059140253 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.42550697334953 +21 +2.25634039227087 +31 +1.5 +12 +1.35173135526774 +22 +2.24539681310645 +32 +1.5 +13 +1.35173135526774 +23 +2.24539681310645 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.42550697334953 +20 +2.25634039227087 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.5 +22 +2.26 +32 +1.5 +13 +1.5 +23 +2.26 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370178 +20 +2.03740115370178 +30 +1.5 +11 +1.9222333770949 +21 +2.13191690534993 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.9222333770949 +20 +2.13191690534993 +30 +1.5 +11 +2.03740115370178 +21 +2.03740115370178 +31 +1.5 +12 +1.98213889596437 +22 +2.08748794455568 +32 +1.5 +13 +1.98213889596437 +23 +2.08748794455568 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.03740115370178 +20 +0.962598846298224 +30 +1.5 +11 +2.13191690534993 +21 +1.0777666229051 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.13191690534993 +20 +1.0777666229051 +30 +1.5 +11 +2.03740115370178 +21 +0.962598846298224 +31 +1.5 +12 +2.08748794455568 +22 +1.01786110403563 +32 +1.5 +13 +2.08748794455568 +23 +1.01786110403563 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.26 +20 +1.5 +30 +1.5 +11 +2.24539681310645 +21 +1.64826864473226 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310645 +20 +1.64826864473226 +30 +1.5 +11 +2.26 +21 +1.5 +31 +1.5 +12 +2.25634039227087 +22 +1.57449302665047 +32 +1.5 +13 +2.25634039227087 +23 +1.57449302665047 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.42550697334953 +20 +0.743659607729131 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.35173135526774 +22 +0.754603186893545 +32 +1.5 +13 +1.35173135526774 +23 +0.754603186893545 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.42550697334953 +21 +0.743659607729131 +31 +1.5 +12 +1.5 +22 +0.74 +32 +1.5 +13 +1.5 +23 +0.74 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +0.74 +30 +1.5 +11 +1.64826864473226 +21 +0.754603186893545 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.64826864473226 +20 +0.754603186893545 +30 +1.5 +11 +1.5 +21 +0.74 +31 +1.5 +12 +1.57449302665047 +22 +0.743659607729131 +32 +1.5 +13 +1.57449302665047 +23 +0.743659607729131 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.20214844470858 +20 +1.20916059140253 +30 +1.5 +11 +2.24539681310646 +21 +1.35173135526774 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.35173135526774 +30 +1.5 +11 +2.20214844470858 +21 +1.20916059140253 +31 +1.5 +12 +2.22727465515648 +22 +1.27938364528661 +32 +1.5 +13 +2.22727465515648 +23 +1.27938364528661 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.5 +20 +1.5 +30 +1.5 +11 +1.27938364528661 +21 +2.22727465515648 +31 +1.5 +12 +1.20916059140253 +22 +2.20214844470858 +32 +1.5 +13 +1.20916059140253 +23 +2.20214844470858 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +1.5 +11 +1.5 +21 +1.5 +31 +1.5 +12 +1.35173135526774 +22 +2.24539681310645 +32 +1.5 +13 +1.35173135526774 +23 +2.24539681310645 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.24539681310646 +20 +1.35173135526774 +30 +1.5 +11 +2.26 +21 +1.5 +31 +1.5 +12 +1.5 +22 +1.5 +32 +1.5 +13 +1.5 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +pillar_b +10 +2.26 +20 +1.5 +30 +1.5 +11 +2.24539681310646 +21 +1.35173135526774 +31 +1.5 +12 +2.25634039227087 +22 +1.42550697334953 +32 +1.5 +13 +2.25634039227087 +23 +1.42550697334953 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +leviathan +10 +2.25005874840729 +20 +3.0007189449114 +30 +2.25038878031282 +11 +6.83599400219787 +21 +-3.83207178618818 +31 +6.83197759827438 +12 +2.25309854396822 +22 +0.752182882434337 +32 +-0.00106460677458386 +13 +2.25309854396822 +23 +0.752182882434337 +33 +-0.00106460677458386 +70 +0 + 0 +3DFACE + 8 +leviathan +10 +2.25005874840729 +20 +3.0007189449114 +30 +2.25038878031282 +11 +2.25309854396822 +21 +0.752182882434337 +31 +-0.00106460677458386 +12 +-3.83269312832729 +22 +6.83333584417703 +32 +-3.83401461964133 +13 +-3.83269312832729 +23 +6.83333584417703 +33 +-3.83401461964133 +70 +0 + 0 +3DFACE + 8 +leviathan +10 +6.83599400219787 +20 +-3.83207178618818 +30 +6.83197759827438 +11 +0.00179401843026383 +21 +0.748994259637591 +31 +2.24762029441129 +12 +2.25309854396822 +22 +0.752182882434337 +32 +-0.00106460677458386 +13 +2.25309854396822 +23 +0.752182882434337 +33 +-0.00106460677458386 +70 +0 + 0 +3DFACE + 8 +leviathan +10 +6.83599400219787 +20 +-3.83207178618818 +30 +6.83197759827438 +11 +2.25005874840729 +21 +3.0007189449114 +31 +2.25038878031282 +12 +0.00179401843026383 +22 +0.748994259637591 +32 +2.24762029441129 +13 +0.00179401843026383 +23 +0.748994259637591 +33 +2.24762029441129 +70 +0 + 0 +3DFACE + 8 +leviathan +10 +0.00179401843026383 +20 +0.748994259637591 +30 +2.24762029441129 +11 +2.25005874840729 +21 +3.0007189449114 +31 +2.25038878031282 +12 +-3.83269312832729 +22 +6.83333584417703 +32 +-3.83401461964133 +13 +-3.83269312832729 +23 +6.83333584417703 +33 +-3.83401461964133 +70 +0 + 0 +3DFACE + 8 +leviathan +10 +0.00179401843026383 +20 +0.748994259637591 +30 +2.24762029441129 +11 +-3.83269312832729 +21 +6.83333584417703 +31 +-3.83401461964133 +12 +2.25309854396822 +22 +0.752182882434337 +32 +-0.00106460677458386 +13 +2.25309854396822 +23 +0.752182882434337 +33 +-0.00106460677458386 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +box +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +3.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +0.205 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.878679656440357 +32 +3.0 +13 +3.0 +23 +0.878679656440357 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.878679656440357 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.795 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.98213889596437 +20 +2.08748794455568 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.85826151998776 +20 +2.17026016090475 +30 +0.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.98213889596437 +20 +0.91251205544432 +30 +0.0 +11 +2.50226795687895 +21 +0.0 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +3.0 +22 +0.497732043121051 +32 +0.0 +13 +3.0 +23 +0.497732043121051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.17026016090475 +20 +1.85826151998776 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.12132034355964 +30 +0.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.22727465515648 +20 +1.72061635471339 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +1.79836855106949 +32 +0.0 +13 +3.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.868083094650066 +20 +1.0777666229051 +30 +0.0 +11 +0.0 +21 +0.205 +31 +0.0 +12 +0.0 +22 +0.497732043121051 +32 +0.0 +13 +0.0 +23 +0.497732043121051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +0.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +0.0 +22 +0.878679656440357 +32 +0.0 +13 +0.0 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +0.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +0.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.79836855106949 +30 +0.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.25634039227087 +20 +1.57449302665047 +30 +0.0 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.26 +20 +1.5 +30 +0.0 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.35173135526774 +20 +0.754603186893545 +30 +0.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +0.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +0.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +0.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.08748794455568 +20 +1.98213889596437 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +0.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +0.0 +21 +2.12132034355964 +31 +0.0 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.72061635471339 +20 +0.772725344843521 +30 +0.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +2.12132034355964 +22 +0.0 +32 +0.0 +13 +2.12132034355964 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.85826151998776 +20 +0.82973983909525 +30 +0.0 +11 +2.12132034355964 +21 +0.0 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +2.50226795687895 +22 +0.0 +32 +0.0 +13 +2.50226795687895 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 +12 +1.20163144893051 +22 +3.0 +32 +0.0 +13 +1.20163144893051 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.35173135526774 +20 +2.24539681310645 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +0.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20916059140253 +20 +2.20214844470858 +30 +0.0 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +0.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.74 +20 +1.5 +30 +0.0 +11 +0.0 +21 +1.20163144893051 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.20163144893051 +30 +0.0 +11 +0.74 +21 +1.5 +31 +0.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +0.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.20163144893051 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +3.0 +21 +0.878679656440357 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.878679656440357 +30 +0.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.878679656440357 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.754603186893545 +20 +1.64826864473226 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +0.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +0.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.0777666229051 +20 +0.868083094650066 +30 +0.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +0.0 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +0.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +0.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +0.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +0.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20916059140253 +20 +0.797851555291422 +30 +0.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +0.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +0.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +0.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.754603186893545 +20 +1.35173135526774 +30 +0.0 +11 +0.0 +21 +0.878679656440357 +31 +0.0 +12 +0.0 +22 +1.20163144893051 +32 +0.0 +13 +0.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.878679656440357 +30 +0.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +0.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +0.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.878679656440357 +30 +0.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.962598846298224 +20 +0.962598846298224 +30 +0.0 +11 +0.205 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +0.0 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.497732043121053 +20 +0.0 +30 +0.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +0.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +0.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.497732043121053 +20 +0.0 +30 +0.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +3.0 +22 +0.878679656440357 +32 +0.0 +13 +3.0 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.878679656440356 +20 +3.0 +30 +0.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +0.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +0.878679656440356 +21 +3.0 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +0.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +0.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +2.26 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.72061635471339 +20 +2.22727465515648 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.0 +21 +1.79836855106949 +31 +0.0 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +0.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +0.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.5 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.74 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.72061635471339 +20 +0.772725344843521 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +3.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.20163144893051 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.34882660079146 +22 +2.26 +32 +3.0 +13 +1.34882660079146 +23 +2.26 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.34882660079146 +20 +2.26 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +3.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.34882660079146 +20 +2.26 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +0.0 +30 +3.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.98213889596437 +20 +0.91251205544432 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.795 +22 +0.0 +32 +3.0 +13 +2.795 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.34882660079146 +20 +2.26 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.34882660079146 +21 +2.26 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +3.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +3.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.12132034355964 +20 +0.0 +30 +3.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.85826151998776 +20 +0.82973983909525 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +2.50226795687895 +21 +3.0 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.205 +21 +0.0 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +3.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +3.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.0777666229051 +20 +0.868083094650066 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +3.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +0.0 +21 +0.205 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +3.0 +13 +0.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +3.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +3.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +3.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +3.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20916059140253 +20 +0.797851555291422 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +3.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.35173135526774 +20 +0.754603186893545 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +3.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.754603186893545 +20 +1.64826864473226 +30 +3.0 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +1.79836855106949 +32 +3.0 +13 +0.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.12132034355964 +30 +3.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +3.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +3.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.12132034355964 +30 +3.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.797851555291422 +20 +1.20916059140253 +30 +3.0 +11 +0.0 +21 +1.20163144893051 +31 +3.0 +12 +0.0 +22 +0.878679656440357 +32 +3.0 +13 +0.0 +23 +0.878679656440357 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.20163144893051 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +3.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.20163144893051 +30 +3.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.868083094650066 +20 +1.0777666229051 +30 +3.0 +11 +0.0 +21 +0.878679656440357 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +3.0 +13 +0.0 +23 +0.497732043121051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.878679656440357 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +3.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.878679656440357 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.878679656440357 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.22727465515648 +20 +1.27938364528661 +30 +3.0 +11 +3.0 +21 +0.878679656440357 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +3.0 +21 +0.878679656440357 +31 +3.0 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.25634039227087 +20 +1.42550697334953 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.26 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.50226795687895 +30 +3.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +3.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +3.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.50226795687895 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +3.0 +21 +1.79836855106949 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.0 +21 +2.795 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +3.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.754603186893545 +20 +1.35173135526774 +30 +3.0 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.0 +22 +1.20163144893051 +32 +3.0 +13 +0.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +3.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.74 +20 +1.5 +30 +3.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.74 +21 +1.5 +31 +3.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +3.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.08748794455568 +20 +1.01786110403563 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +3.0 +13 +3.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.17026016090475 +20 +1.14173848001224 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +3.0 +21 +0.497732043121051 +31 +3.0 +12 +3.0 +22 +0.878679656440357 +32 +3.0 +13 +3.0 +23 +0.878679656440357 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +1.5 +11 +2.795 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +3.0 +11 +1.5 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +3.0 +12 +1.5 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +2.795 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.50226795687895 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +2.12132034355964 +22 +0.0 +32 +0.0 +13 +2.12132034355964 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.5 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.0 +30 +0.205 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +1.5 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +0.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.497732043121053 +20 +0.0 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +0.0 +11 +1.5 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +2.795 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +3.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +2.795 +11 +2.795 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.497732043121052 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +0.205 +11 +2.795 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +0.205 +22 +3.0 +32 +0.0 +13 +0.205 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.497732043121052 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.878679656440356 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.20163144893051 +22 +3.0 +32 +0.0 +13 +1.20163144893051 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +0.205 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.205 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.205 +32 +2.795 +13 +0.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.205 +13 +0.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.0 +12 +0.0 +22 +2.795 +32 +0.205 +13 +0.0 +23 +2.795 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +0.878679656440357 +32 +3.0 +13 +0.0 +23 +0.878679656440357 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +0.878679656440357 +31 +3.0 +12 +0.0 +22 +1.20163144893051 +32 +3.0 +13 +0.0 +23 +1.20163144893051 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.20163144893051 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +0.0 +22 +0.205 +32 +0.0 +13 +0.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +0.878679656440357 +32 +0.0 +13 +0.0 +23 +0.878679656440357 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.878679656440357 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.20163144893051 +32 +0.0 +13 +0.0 +23 +1.20163144893051 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.20163144893051 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +1.5 +13 +0.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +1.5 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +0.0 +13 +0.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +0.205 +32 +1.5 +13 +0.0 +23 +0.205 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.205 +30 +1.5 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +LINE + 8 +box +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.5 +31 +0.205 + 0 +LINE + 8 +box +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.205 +31 +1.5 + 0 +LINE + 8 +box +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +box +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +box +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +LINE + 8 +box +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +2.795 +31 +0.205 + 0 +LINE + 8 +box +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +1.5 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +3.0 +31 +0.205 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +3.0 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +2.795 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +0.205 +13 +3.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +15 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.5 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +0.0 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +0.878679656440357 +32 +0.0 +13 +3.0 +23 +0.878679656440357 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +0.878679656440357 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.79836855106949 +30 +0.0 +11 +3.0 +21 +1.5 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +1.5 +13 +3.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +2.795 +13 +3.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.5 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +box +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.0 +30 +1.5 +11 +1.5 +21 +0.0 +31 +0.205 +12 +2.1475 +22 +0.0 +32 +0.8525 +13 +2.1475 +23 +0.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +2.1475 +20 +0.0 +30 +0.8525 +11 +1.5 +21 +0.0 +31 +0.205 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +0.8525 +20 +0.0 +30 +2.1475 +11 +0.205 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.0 +30 +2.795 +11 +1.5 +21 +0.0 +31 +1.5 +12 +2.1475 +22 +0.0 +32 +2.1475 +13 +2.1475 +23 +0.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.0 +30 +2.795 +11 +0.8525 +21 +0.0 +31 +2.1475 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.8525 +21 +0.0 +31 +2.1475 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.0 +30 +1.5 +11 +2.1475 +21 +0.0 +31 +0.8525 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +1.5 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.0 +30 +1.5 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +2.795 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.1475 +21 +0.0 +31 +0.8525 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +2.795 +13 +0.205 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.205 +21 +0.0 +31 +1.5 +12 +0.8525 +22 +0.0 +32 +2.1475 +13 +0.8525 +23 +0.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.205 +21 +0.0 +31 +0.205 +12 +0.8525 +22 +0.0 +32 +0.8525 +13 +0.8525 +23 +0.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +box +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +0.205 +21 +0.0 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +0.205 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +0.8525 +20 +3.0 +30 +0.8525 +11 +1.5 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +2.795 +21 +3.0 +31 +1.5 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +1.5 +12 +2.1475 +22 +3.0 +32 +2.1475 +13 +2.1475 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +0.205 +12 +2.1475 +22 +3.0 +32 +0.8525 +13 +2.1475 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +1.5 +11 +1.5 +21 +3.0 +31 +0.205 +12 +0.8525 +22 +3.0 +32 +0.8525 +13 +0.8525 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +1.5 +12 +0.8525 +22 +3.0 +32 +2.1475 +13 +0.8525 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.8525 +21 +3.0 +31 +0.8525 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +1.5 +11 +0.8525 +21 +3.0 +31 +0.8525 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.8525 +20 +3.0 +30 +2.1475 +11 +1.5 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +1.5 +20 +3.0 +30 +1.5 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +box +10 +2.795 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +box +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +box +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +box +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +2.795 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +LINE + 8 +box +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.14173848001224 +20 +0.82973983909525 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +0.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.772725344843521 +20 +1.72061635471339 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.5 +21 +0.74 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +0.74 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +0.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.772725344843521 +20 +1.27938364528661 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.64826864473226 +20 +2.24539681310645 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +0.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +0.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +0.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.42550697334953 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.01786110403563 +20 +0.91251205544432 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +0.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.27938364528661 +20 +0.772725344843521 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +0.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +0.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +0.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.91251205544432 +20 +1.98213889596437 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +0.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +0.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.82973983909525 +20 +1.85826151998776 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +0.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.743659607729131 +20 +1.57449302665047 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +0.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.743659607729131 +20 +1.42550697334953 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.91251205544432 +20 +1.01786110403563 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +0.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.82973983909525 +20 +1.14173848001224 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +0.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.14173848001224 +20 +2.17026016090475 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.42550697334953 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.64826864473226 +20 +0.754603186893545 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +3.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +3.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.27938364528661 +20 +2.22727465515648 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.91251205544432 +20 +1.98213889596437 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +3.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +3.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.01786110403563 +20 +2.08748794455568 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +3.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.772725344843521 +20 +1.72061635471339 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.82973983909525 +20 +1.85826151998776 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +3.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.743659607729131 +20 +1.42550697334953 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +3.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +3.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.743659607729131 +20 +1.57449302665047 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +3.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.82973983909525 +20 +1.14173848001224 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +3.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.772725344843521 +20 +1.27938364528661 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +3.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +0.91251205544432 +20 +1.01786110403563 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +3.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +3.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.64826864473226 +20 +2.24539681310645 +30 +3.0 +11 +1.5 +21 +2.26 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +2.26 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +3.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +3.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +box +10 +1.64826864473226 +20 +2.24539681310645 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +3.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +3.0 +30 +0.7275 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +0.7275 +12 +0.205 +22 +3.0 +32 +0.6475 +13 +0.205 +23 +3.0 +33 +0.6475 +70 +3 + 0 +3DFACE + 8 +iso_dwn +10 +0.205 +20 +3.0 +30 +0.6475 +11 +0.0 +21 +3.0 +31 +0.7275 +12 +0.0 +22 +3.0 +32 +0.8525 +13 +0.0 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +0.205 +22 +3.0 +32 +0.0 +13 +0.205 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.497732043121052 +20 +3.0 +30 +0.0 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.8525 +22 +3.0 +32 +3.33066907387547e-16 +13 +0.8525 +23 +3.0 +33 +3.33066907387547e-16 +70 +3 + 0 +3DFACE + 8 +iso_dwn +10 +0.8525 +20 +3.0 +30 +3.33066907387547e-16 +11 +0.205 +21 +3.0 +31 +0.205 +12 +0.6475 +22 +3.0 +32 +0.205 +13 +0.6475 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.42625 +20 +3.0 +30 +0.42625 +11 +0.6475 +21 +3.0 +31 +0.205 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.8525 +20 +3.0 +30 +3.33066907387547e-16 +11 +0.639832154473908 +21 +2.78733215447391 +31 +2.22163676695763e-16 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.212667845526092 +20 +2.36016784552609 +30 +1.10903230691784e-16 +11 +0.0 +21 +2.2725 +31 +0.0 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.2725 +30 +0.0 +11 +0.212667845526092 +21 +2.36016784552609 +31 +1.10903230691784e-16 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.0 +12 +0.0 +22 +2.795 +32 +0.205 +13 +0.0 +23 +2.795 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +3.0 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +2.57375 +31 +0.42625 +12 +0.0 +22 +2.795 +32 +0.6475 +13 +0.0 +23 +2.795 +33 +0.6475 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.205 +20 +3.0 +30 +0.0 +11 +0.42625 +21 +2.57375 +31 +1.66533453693774e-16 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.42625 +20 +2.57375 +30 +1.66533453693774e-16 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.497732043121052 +22 +3.0 +32 +0.0 +13 +0.497732043121052 +23 +3.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_dwn +10 +0.42625 +20 +2.57375 +30 +1.66533453693774e-16 +11 +0.497732043121052 +21 +3.0 +31 +0.0 +12 +0.639832154473908 +22 +2.78733215447391 +32 +2.22163676695763e-16 +13 +0.639832154473908 +23 +2.78733215447391 +33 +2.22163676695763e-16 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.42625 +20 +2.57375 +30 +1.66533453693774e-16 +11 +0.0 +21 +2.795 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.795 +30 +0.0 +11 +0.42625 +21 +2.57375 +31 +1.66533453693774e-16 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.42625 +21 +2.57375 +31 +1.66533453693774e-16 +12 +0.212667845526092 +22 +2.36016784552609 +32 +1.10903230691784e-16 +13 +0.212667845526092 +23 +2.36016784552609 +33 +1.10903230691784e-16 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.0 +21 +2.2725 +31 +0.0 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.2725 +30 +0.0 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.0 +22 +2.50226795687895 +32 +0.0 +13 +0.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.0 +22 +2.795 +32 +0.205 +13 +0.0 +23 +2.795 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.50226795687895 +30 +0.0 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +0.0 +13 +0.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.205 +20 +3.0 +30 +0.205 +11 +0.205 +21 +3.0 +31 +0.0 +12 +0.0 +22 +3.0 +32 +0.0 +13 +0.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.0 +22 +2.57375 +32 +0.42625 +13 +0.0 +23 +2.57375 +33 +0.42625 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.205 +20 +3.0 +30 +0.6475 +11 +0.42625 +21 +3.0 +31 +0.42625 +12 +0.205 +22 +3.0 +32 +0.205 +13 +0.205 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +3.0 +30 +0.8525 +11 +0.0 +21 +2.795 +31 +0.205 +12 +0.0 +22 +2.795 +32 +0.6475 +13 +0.0 +23 +2.795 +33 +0.6475 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.795 +30 +0.205 +11 +0.0 +21 +3.0 +31 +0.8525 +12 +0.0 +22 +3.0 +32 +0.205 +13 +0.0 +23 +3.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +3.0 +30 +0.205 +11 +0.0 +21 +3.0 +31 +0.8525 +12 +0.0 +22 +3.0 +32 +0.7275 +13 +0.0 +23 +3.0 +33 +0.7275 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.212667845526092 +20 +2.36016784552609 +30 +1.10903230691784e-16 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.212667845526092 +21 +2.36016784552609 +31 +1.10903230691784e-16 +12 +0.42625 +22 +2.57375 +32 +1.66533453693774e-16 +13 +0.42625 +23 +2.57375 +33 +1.66533453693774e-16 +70 +13 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.42625 +21 +2.57375 +31 +1.66533453693774e-16 +12 +0.639832154473908 +22 +2.78733215447391 +32 +2.22163676695763e-16 +13 +0.639832154473908 +23 +2.78733215447391 +33 +2.22163676695763e-16 +70 +13 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.639832154473908 +21 +2.78733215447391 +31 +2.22163676695763e-16 +12 +0.8525 +22 +3.0 +32 +3.33066907387547e-16 +13 +0.8525 +23 +3.0 +33 +3.33066907387547e-16 +70 +13 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.8525 +21 +3.0 +31 +3.33066907387547e-16 +12 +0.6475 +22 +3.0 +32 +0.205 +13 +0.6475 +23 +3.0 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.6475 +21 +3.0 +31 +0.205 +12 +0.42625 +22 +3.0 +32 +0.42625 +13 +0.42625 +23 +3.0 +33 +0.42625 +70 +13 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.42625 +21 +3.0 +31 +0.42625 +12 +0.0 +22 +2.57375 +32 +0.42625 +13 +0.0 +23 +2.57375 +33 +0.42625 +70 +3 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.57375 +30 +0.42625 +11 +0.42625 +21 +3.0 +31 +0.42625 +12 +0.205 +22 +3.0 +32 +0.6475 +13 +0.205 +23 +3.0 +33 +0.6475 +70 +13 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.57375 +30 +0.42625 +11 +0.205 +21 +3.0 +31 +0.6475 +12 +0.0 +22 +2.795 +32 +0.6475 +13 +0.0 +23 +2.795 +33 +0.6475 +70 +3 + 0 +3DFACE + 8 +iso_dwn +10 +0.0 +20 +2.795 +30 +0.6475 +11 +0.205 +21 +3.0 +31 +0.6475 +12 +0.0 +22 +3.0 +32 +0.8525 +13 +0.0 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +1.26776612947519 +22 +0.332481491301359 +32 +-1.32155935006511e-16 +13 +1.26776612947519 +23 +0.332481491301359 +33 +-1.32155935006511e-16 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.205 +13 +0.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.205 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +0.205 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +0.0 +22 +0.205 +32 +0.0 +13 +0.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +0.878679656440357 +32 +0.0 +13 +0.0 +23 +0.878679656440357 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.878679656440357 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.20163144893051 +32 +0.0 +13 +0.0 +23 +1.20163144893051 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.20163144893051 +30 +0.0 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.283212517800539 +20 +1.74203407868223 +30 +1.35872768146951e-17 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.283212517800539 +21 +1.74203407868223 +31 +1.35872768146951e-17 +12 +0.452270081490105 +22 +1.5 +32 +-1.14382698113301e-17 +13 +0.452270081490105 +23 +1.5 +33 +-1.14382698113301e-17 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.452270081490105 +20 +1.5 +30 +-1.14382698113301e-17 +11 +0.0 +21 +1.20163144893051 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.0 +13 +0.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.20163144893051 +30 +0.0 +11 +0.452270081490105 +21 +1.5 +31 +-1.14382698113301e-17 +12 +0.580081389077038 +22 +1.31701681130471 +32 +-3.03581440100583e-17 +13 +0.580081389077038 +23 +1.31701681130471 +33 +-3.03581440100583e-17 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.580081389077038 +20 +1.31701681130471 +30 +-3.03581440100583e-17 +11 +0.0 +21 +0.878679656440357 +31 +0.0 +12 +0.0 +22 +1.20163144893051 +32 +0.0 +13 +0.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.878679656440357 +30 +0.0 +11 +0.580081389077038 +21 +1.31701681130471 +31 +-3.03581440100583e-17 +12 +0.687379562118009 +22 +1.16340159356772 +32 +-4.6241464304765e-17 +13 +0.687379562118009 +23 +1.16340159356772 +33 +-4.6241464304765e-17 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0257305779793495 +20 +2.1106623891929 +30 +5.17022605499795e-17 +11 +0.0 +21 +1.79836855106949 +31 +0.0 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.0257305779793495 +21 +2.1106623891929 +31 +5.17022605499795e-17 +12 +0.283212517800539 +22 +1.74203407868223 +32 +1.35872768146951e-17 +13 +0.283212517800539 +23 +1.74203407868223 +33 +1.35872768146951e-17 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.785661664350193 +20 +1.02269438387197 +30 +-6.07901380123296e-17 +11 +0.0 +21 +0.205 +31 +0.0 +12 +0.0 +22 +0.497732043121051 +32 +0.0 +13 +0.0 +23 +0.497732043121051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +0.0 +11 +0.785661664350193 +21 +1.02269438387197 +31 +-6.07901380123296e-17 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.0 +30 +0.0 +11 +0.785661664350193 +21 +1.02269438387197 +31 +-6.07901380123296e-17 +12 +0.883139136394791 +22 +0.883139136394791 +32 +-7.52197025251519e-17 +13 +0.883139136394791 +23 +0.883139136394791 +33 +-7.52197025251519e-17 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.987752578969539 +20 +0.733367557775276 +30 +-9.07056028760568e-17 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +0.0 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +0.0 +11 +0.987752578969539 +21 +0.733367557775276 +31 +-9.07056028760568e-17 +12 +1.10997225325072 +22 +0.558389724096058 +32 +-1.08797749069277e-16 +13 +1.10997225325072 +23 +0.558389724096058 +33 +-1.08797749069277e-16 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +1.10997225325072 +20 +0.558389724096058 +30 +-1.08797749069277e-16 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +0.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.10997225325072 +21 +0.558389724096058 +31 +-1.08797749069277e-16 +12 +1.26776612947519 +22 +0.332481491301359 +32 +-1.32155935006511e-16 +13 +1.26776612947519 +23 +0.332481491301359 +33 +-1.32155935006511e-16 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.5 +30 +0.205 +11 +0.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +0.0 +22 +1.5 +32 +0.452270081490105 +13 +0.0 +23 +1.5 +33 +0.452270081490105 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +0.0 +21 +0.205 +31 +0.205 +12 +0.0 +22 +0.205 +32 +1.35681024447031 +13 +0.0 +23 +0.205 +33 +1.35681024447031 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.85400833333333 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.5 +32 +0.205 +13 +0.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.5 +30 +0.0 +11 +0.0 +21 +1.85400833333333 +31 +0.205 +12 +0.0 +22 +1.79836855106949 +32 +0.0 +13 +0.0 +23 +1.79836855106949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.79836855106949 +30 +0.0 +11 +0.0 +21 +1.85400833333333 +31 +0.205 +12 +0.0 +22 +2.12132034355964 +32 +0.0 +13 +0.0 +23 +2.12132034355964 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +2.12132034355964 +30 +0.0 +11 +0.0 +21 +1.85400833333333 +31 +0.205 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.85400833333333 +30 +0.205 +11 +0.0 +21 +1.5 +31 +0.205 +12 +0.0 +22 +1.5 +32 +0.452270081490105 +13 +0.0 +23 +1.5 +33 +0.452270081490105 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +1.35681024447031 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.205 +31 +1.35681024447031 +12 +0.0 +22 +0.205 +32 +0.205 +13 +0.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.687379562118009 +20 +1.16340159356772 +30 +-4.6241464304765e-17 +11 +0.0 +21 +0.497732043121051 +31 +0.0 +12 +0.0 +22 +0.878679656440357 +32 +0.0 +13 +0.0 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.497732043121051 +30 +0.0 +11 +0.687379562118009 +21 +1.16340159356772 +31 +-4.6241464304765e-17 +12 +0.785661664350193 +22 +1.02269438387197 +32 +-6.07901380123296e-17 +13 +0.785661664350193 +23 +1.02269438387197 +33 +-6.07901380123296e-17 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.883139136394791 +20 +0.883139136394791 +30 +-7.52197025251519e-17 +11 +0.205 +21 +0.0 +31 +0.0 +12 +0.0 +22 +0.0 +32 +0.0 +13 +0.0 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.205 +20 +0.0 +30 +0.0 +11 +0.883139136394791 +21 +0.883139136394791 +31 +-7.52197025251519e-17 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.497732043121053 +20 +0.0 +30 +0.0 +11 +0.883139136394791 +21 +0.883139136394791 +31 +-7.52197025251519e-17 +12 +0.987752578969539 +22 +0.733367557775276 +32 +-9.07056028760568e-17 +13 +0.987752578969539 +23 +0.733367557775276 +33 +-9.07056028760568e-17 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.75 +20 +1.38777878078145e-17 +30 +0.75 +11 +0.205 +21 +0.0 +31 +0.205 +12 +1.295 +22 +2.39623136148263e-17 +32 +0.205 +13 +1.295 +23 +2.39623136148263e-17 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.205 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.205 +20 +3.79326200080262e-18 +30 +1.295 +11 +0.0 +21 +0.0 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.205 +21 +3.79326200080262e-18 +31 +1.295 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +1.295 +20 +2.39623136148263e-17 +30 +0.205 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +0.0 +12 +1.5 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +0.0 +11 +1.295 +21 +2.39623136148263e-17 +31 +0.205 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +0.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +0.0 +11 +1.295 +21 +2.39623136148263e-17 +31 +0.205 +12 +0.497732043121053 +22 +0.0 +32 +0.0 +13 +0.497732043121053 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.497732043121053 +20 +0.0 +30 +0.0 +11 +1.295 +21 +2.39623136148263e-17 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.0 +13 +0.205 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.205 +20 +0.0 +30 +0.0 +11 +1.295 +21 +2.39623136148263e-17 +31 +0.205 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.205 +20 +3.79326200080262e-18 +30 +1.295 +11 +0.205 +21 +0.0 +31 +0.205 +12 +0.75 +22 +1.38777878078145e-17 +32 +0.75 +13 +0.75 +23 +1.38777878078145e-17 +33 +0.75 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.0 +30 +0.205 +11 +0.0 +21 +0.0 +31 +0.0 +12 +0.205 +22 +0.0 +32 +0.205 +13 +0.205 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.0257305779793495 +20 +2.1106623891929 +30 +5.17022605499795e-17 +11 +0.0 +21 +2.12132034355964 +31 +0.0 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_swd +10 +0.205 +20 +3.79326200080262e-18 +30 +1.295 +11 +0.0 +21 +0.205 +31 +1.35681024447031 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +1.35681024447031 +11 +0.205 +21 +3.79326200080262e-18 +31 +1.295 +12 +0.75 +22 +1.38777878078145e-17 +32 +0.75 +13 +0.75 +23 +1.38777878078145e-17 +33 +0.75 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +1.35681024447031 +11 +0.75 +21 +1.38777878078145e-17 +31 +0.75 +12 +1.295 +22 +2.39623136148263e-17 +32 +0.205 +13 +1.295 +23 +2.39623136148263e-17 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +1.35681024447031 +11 +1.295 +21 +2.39623136148263e-17 +31 +0.205 +12 +1.5 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +1.35681024447031 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.26776612947519 +22 +0.332481491301359 +32 +-1.32155935006511e-16 +13 +1.26776612947519 +23 +0.332481491301359 +33 +-1.32155935006511e-16 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.205 +30 +1.35681024447031 +11 +1.26776612947519 +21 +0.332481491301359 +31 +-1.32155935006511e-16 +12 +0.0 +22 +0.883139136394791 +32 +0.883139136394791 +13 +0.0 +23 +0.883139136394791 +33 +0.883139136394791 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +1.26776612947519 +21 +0.332481491301359 +31 +-1.32155935006511e-16 +12 +1.10997225325072 +22 +0.558389724096058 +32 +-1.08797749069277e-16 +13 +1.10997225325072 +23 +0.558389724096058 +33 +-1.08797749069277e-16 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +1.10997225325072 +21 +0.558389724096058 +31 +-1.08797749069277e-16 +12 +0.987752578969539 +22 +0.733367557775276 +32 +-9.07056028760568e-17 +13 +0.987752578969539 +23 +0.733367557775276 +33 +-9.07056028760568e-17 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +0.987752578969539 +21 +0.733367557775276 +31 +-9.07056028760568e-17 +12 +0.883139136394791 +22 +0.883139136394791 +32 +-7.52197025251519e-17 +13 +0.883139136394791 +23 +0.883139136394791 +33 +-7.52197025251519e-17 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +0.883139136394791 +21 +0.883139136394791 +31 +-7.52197025251519e-17 +12 +0.785661664350193 +22 +1.02269438387197 +32 +-6.07901380123296e-17 +13 +0.785661664350193 +23 +1.02269438387197 +33 +-6.07901380123296e-17 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +0.785661664350193 +21 +1.02269438387197 +31 +-6.07901380123296e-17 +12 +0.0 +22 +1.5 +32 +0.452270081490105 +13 +0.0 +23 +1.5 +33 +0.452270081490105 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.5 +30 +0.452270081490105 +11 +0.785661664350193 +21 +1.02269438387197 +31 +-6.07901380123296e-17 +12 +0.687379562118009 +22 +1.16340159356772 +32 +-4.6241464304765e-17 +13 +0.687379562118009 +23 +1.16340159356772 +33 +-4.6241464304765e-17 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.5 +30 +0.452270081490105 +11 +0.687379562118009 +21 +1.16340159356772 +31 +-4.6241464304765e-17 +12 +0.580081389077038 +22 +1.31701681130471 +32 +-3.03581440100583e-17 +13 +0.580081389077038 +23 +1.31701681130471 +33 +-3.03581440100583e-17 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.5 +30 +0.452270081490105 +11 +0.580081389077038 +21 +1.31701681130471 +31 +-3.03581440100583e-17 +12 +0.452270081490105 +22 +1.5 +32 +-1.14382698113301e-17 +13 +0.452270081490105 +23 +1.5 +33 +-1.14382698113301e-17 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.5 +30 +0.452270081490105 +11 +0.452270081490105 +21 +1.5 +31 +-1.14382698113301e-17 +12 +0.283212517800539 +22 +1.74203407868223 +32 +1.35872768146951e-17 +13 +0.283212517800539 +23 +1.74203407868223 +33 +1.35872768146951e-17 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.5 +30 +0.452270081490105 +11 +0.283212517800539 +21 +1.74203407868223 +31 +1.35872768146951e-17 +12 +0.0 +22 +1.85400833333333 +32 +0.205 +13 +0.0 +23 +1.85400833333333 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.85400833333333 +30 +0.205 +11 +0.283212517800539 +21 +1.74203407868223 +31 +1.35872768146951e-17 +12 +0.0257305779793495 +22 +2.1106623891929 +32 +5.17022605499795e-17 +13 +0.0257305779793495 +23 +2.1106623891929 +33 +5.17022605499795e-17 +70 +13 + 0 +3DFACE + 8 +iso_swd +10 +0.0 +20 +1.85400833333333 +30 +0.205 +11 +0.0257305779793495 +21 +2.1106623891929 +31 +5.17022605499795e-17 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +3.0 +30 +0.452270081490105 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +1.5 +21 +3.0 +31 +0.452270081490105 +12 +2.11686086360521 +22 +3.0 +32 +0.883139136394791 +13 +2.11686086360521 +23 +3.0 +33 +0.883139136394791 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.83659840643228 +21 +2.31262043788199 +31 +1.75803140620266e-16 +12 +1.68298318869529 +22 +2.41991861092296 +32 +1.91686460914973e-16 +13 +1.68298318869529 +23 +2.41991861092296 +33 +1.91686460914973e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.83659840643228 +20 +2.31262043788199 +30 +1.75803140620266e-16 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.97730561612803 +21 +2.2143383356498 +31 +1.61254466912702e-16 +12 +1.83659840643228 +22 +2.31262043788199 +32 +1.75803140620266e-16 +13 +1.83659840643228 +23 +2.31262043788199 +33 +1.75803140620266e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.97730561612803 +20 +2.2143383356498 +30 +1.61254466912702e-16 +11 +2.12132034355964 +21 +3.0 +31 +0.0 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +2.11686086360521 +21 +2.11686086360521 +31 +1.46824902399879e-16 +12 +1.97730561612803 +22 +2.2143383356498 +32 +1.61254466912702e-16 +13 +1.97730561612803 +23 +2.2143383356498 +33 +1.61254466912702e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.11686086360521 +20 +2.11686086360521 +30 +1.46824902399879e-16 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.50226795687895 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +3.0 +30 +0.452270081490105 +11 +1.5 +21 +3.0 +31 +0.205 +12 +1.35441740918437 +22 +3.0 +32 +0.350582590815627 +13 +1.35441740918437 +23 +3.0 +33 +0.350582590815627 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +2.795 +21 +3.0 +31 +1.35681024447031 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.795 +20 +3.0 +30 +1.35681024447031 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +2.32009652509653 +22 +3.0 +32 +1.02509652509653 +13 +2.32009652509653 +23 +3.0 +33 +1.02509652509653 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.1475 +20 +3.0 +30 +0.8525 +11 +2.795 +21 +3.0 +31 +0.205 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +1.35441740918437 +20 +3.0 +30 +0.350582590815627 +11 +1.5 +21 +3.0 +31 +0.205 +12 +1.14599166666667 +22 +3.0 +32 +0.205 +13 +1.14599166666667 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +2.44161027590394 +21 +1.89002774674928 +31 +1.13246855855755e-16 +12 +2.26663244222472 +22 +2.01224742103046 +32 +1.31339002048974e-16 +13 +2.26663244222472 +23 +2.01224742103046 +33 +1.31339002048974e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.44161027590394 +20 +1.89002774674928 +30 +1.13246855855755e-16 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.795 +20 +3.0 +30 +1.35681024447031 +11 +3.0 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +0.205 +11 +2.795 +21 +3.0 +31 +1.35681024447031 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +2.54772991850989 +31 +2.10606335113701e-16 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +2.54772991850989 +30 +2.10606335113701e-16 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.68298318869529 +22 +2.41991861092296 +32 +1.91686460914973e-16 +13 +1.68298318869529 +23 +2.41991861092296 +33 +1.91686460914973e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +1.5 +30 +0.0 +11 +2.66751850869864 +21 +1.73223387052481 +31 +8.98886699185201e-17 +12 +3.0 +22 +1.79836855106949 +32 +0.0 +13 +3.0 +23 +1.79836855106949 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +0.0 +11 +2.26663244222472 +21 +2.01224742103046 +31 +1.31339002048974e-16 +12 +2.11686086360521 +22 +2.11686086360521 +32 +1.46824902399879e-16 +13 +2.11686086360521 +23 +2.11686086360521 +33 +1.46824902399879e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.26663244222472 +20 +2.01224742103046 +30 +1.31339002048974e-16 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.50226795687895 +30 +0.0 +11 +3.0 +21 +3.0 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +0.889337610807103 +21 +2.97426942202065 +31 +2.73746865475011e-16 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +0.889337610807103 +20 +2.97426942202065 +30 +2.73746865475011e-16 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +1.25796592131777 +22 +2.71678748219946 +32 +2.35631881739726e-16 +13 +1.25796592131777 +23 +2.71678748219946 +33 +2.35631881739726e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.795 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +1.79836855106949 +30 +0.0 +11 +3.0 +21 +1.705 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +1.705 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +1.79836855106949 +31 +0.0 +12 +3.0 +22 +2.12132034355964 +32 +0.0 +13 +3.0 +23 +2.12132034355964 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +2.50226795687895 +32 +0.0 +13 +3.0 +23 +2.50226795687895 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.50226795687895 +31 +0.0 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +0.8525 +20 +3.0 +30 +3.33066907387547e-16 +11 +1.20163144893051 +21 +3.0 +31 +0.0 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.20163144893051 +20 +3.0 +30 +0.0 +11 +0.8525 +21 +3.0 +31 +3.33066907387547e-16 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +3.0 +30 +0.0 +11 +0.8525 +21 +3.0 +31 +3.33066907387547e-16 +12 +1.5 +22 +3.0 +32 +0.205 +13 +1.5 +23 +3.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +3.0 +30 +0.205 +11 +0.8525 +21 +3.0 +31 +3.33066907387547e-16 +12 +1.14599166666667 +22 +3.0 +32 +0.205 +13 +1.14599166666667 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +3.0 +30 +0.0 +11 +1.25796592131777 +21 +2.71678748219946 +31 +2.35631881739726e-16 +12 +1.20163144893051 +22 +3.0 +32 +0.0 +13 +1.20163144893051 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.25796592131777 +20 +2.71678748219946 +30 +2.35631881739726e-16 +11 +1.5 +21 +3.0 +31 +0.0 +12 +1.5 +22 +2.54772991850989 +32 +2.10606335113701e-16 +13 +1.5 +23 +2.54772991850989 +33 +2.10606335113701e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.12132034355964 +30 +0.0 +11 +2.66751850869864 +21 +1.73223387052481 +31 +8.98886699185201e-17 +12 +2.44161027590394 +22 +1.89002774674928 +32 +1.13246855855755e-16 +13 +2.44161027590394 +23 +1.89002774674928 +33 +1.13246855855755e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.66751850869864 +20 +1.73223387052481 +30 +8.98886699185201e-17 +11 +3.0 +21 +2.12132034355964 +31 +0.0 +12 +3.0 +22 +1.79836855106949 +32 +0.0 +13 +3.0 +23 +1.79836855106949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.795 +30 +0.205 +11 +3.0 +21 +2.25 +31 +0.75 +12 +3.0 +22 +1.705 +32 +0.205 +13 +3.0 +23 +1.705 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +3.0 +32 +0.0 +13 +3.0 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +3.0 +31 +0.0 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +0.0 +11 +3.0 +21 +2.795 +31 +0.205 +12 +3.0 +22 +2.795 +32 +0.0 +13 +3.0 +23 +2.795 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.795 +30 +1.295 +11 +3.0 +21 +2.25 +31 +0.75 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +3.0 +30 +0.205 +11 +1.79836855106949 +21 +3.0 +31 +0.0 +12 +1.5 +22 +3.0 +32 +0.0 +13 +1.5 +23 +3.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.79836855106949 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.12132034355964 +22 +3.0 +32 +0.0 +13 +2.12132034355964 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +2.12132034355964 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.50226795687895 +22 +3.0 +32 +0.0 +13 +2.50226795687895 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +2.50226795687895 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.0 +13 +2.795 +23 +3.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +2.795 +20 +3.0 +30 +0.0 +11 +1.5 +21 +3.0 +31 +0.205 +12 +2.795 +22 +3.0 +32 +0.205 +13 +2.795 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +0.205 +11 +3.0 +21 +2.795 +31 +1.295 +12 +3.0 +22 +2.795 +32 +0.205 +13 +3.0 +23 +2.795 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +2.795 +30 +1.295 +11 +3.0 +21 +3.0 +31 +0.205 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +2.32009652509653 +20 +3.0 +30 +1.02509652509653 +11 +2.1475 +21 +3.0 +31 +0.8525 +12 +2.11686086360521 +22 +3.0 +32 +0.883139136394791 +13 +2.11686086360521 +23 +3.0 +33 +0.883139136394791 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +0.889337610807103 +20 +2.97426942202065 +30 +2.73746865475011e-16 +11 +0.8525 +21 +3.0 +31 +3.33066907387547e-16 +12 +0.878679656440356 +22 +3.0 +32 +0.0 +13 +0.878679656440356 +23 +3.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_den +10 +0.889337610807103 +20 +2.97426942202065 +30 +2.73746865475011e-16 +11 +1.14599166666667 +21 +3.0 +31 +0.205 +12 +0.8525 +22 +3.0 +32 +3.33066907387547e-16 +13 +0.8525 +23 +3.0 +33 +3.33066907387547e-16 +70 +1 + 0 +3DFACE + 8 +iso_den +10 +1.14599166666667 +20 +3.0 +30 +0.205 +11 +0.889337610807103 +21 +2.97426942202065 +31 +2.73746865475011e-16 +12 +1.25796592131777 +22 +2.71678748219946 +32 +2.35631881739726e-16 +13 +1.25796592131777 +23 +2.71678748219946 +33 +2.35631881739726e-16 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +1.14599166666667 +20 +3.0 +30 +0.205 +11 +1.25796592131777 +21 +2.71678748219946 +31 +2.35631881739726e-16 +12 +1.35441740918437 +22 +3.0 +32 +0.350582590815627 +13 +1.35441740918437 +23 +3.0 +33 +0.350582590815627 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +1.35441740918437 +20 +3.0 +30 +0.350582590815627 +11 +1.25796592131777 +21 +2.71678748219946 +31 +2.35631881739726e-16 +12 +1.5 +22 +2.54772991850989 +32 +2.10606335113701e-16 +13 +1.5 +23 +2.54772991850989 +33 +2.10606335113701e-16 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +1.35441740918437 +20 +3.0 +30 +0.350582590815627 +11 +1.5 +21 +2.54772991850989 +31 +2.10606335113701e-16 +12 +1.5 +22 +3.0 +32 +0.452270081490105 +13 +1.5 +23 +3.0 +33 +0.452270081490105 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +3.0 +30 +0.452270081490105 +11 +1.5 +21 +2.54772991850989 +31 +2.10606335113701e-16 +12 +1.68298318869529 +22 +2.41991861092296 +32 +1.91686460914973e-16 +13 +1.68298318869529 +23 +2.41991861092296 +33 +1.91686460914973e-16 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +1.5 +20 +3.0 +30 +0.452270081490105 +11 +1.68298318869529 +21 +2.41991861092296 +31 +1.91686460914973e-16 +12 +2.11686086360521 +22 +3.0 +32 +0.883139136394791 +13 +2.11686086360521 +23 +3.0 +33 +0.883139136394791 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +2.11686086360521 +20 +3.0 +30 +0.883139136394791 +11 +1.68298318869529 +21 +2.41991861092296 +31 +1.91686460914973e-16 +12 +1.83659840643228 +22 +2.31262043788199 +32 +1.75803140620266e-16 +13 +1.83659840643228 +23 +2.31262043788199 +33 +1.75803140620266e-16 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +2.11686086360521 +20 +3.0 +30 +0.883139136394791 +11 +1.83659840643228 +21 +2.31262043788199 +31 +1.75803140620266e-16 +12 +1.97730561612803 +22 +2.2143383356498 +32 +1.61254466912702e-16 +13 +1.97730561612803 +23 +2.2143383356498 +33 +1.61254466912702e-16 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +2.11686086360521 +20 +3.0 +30 +0.883139136394791 +11 +1.97730561612803 +21 +2.2143383356498 +31 +1.61254466912702e-16 +12 +2.11686086360521 +22 +2.11686086360521 +32 +1.46824902399879e-16 +13 +2.11686086360521 +23 +2.11686086360521 +33 +1.46824902399879e-16 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +2.11686086360521 +20 +3.0 +30 +0.883139136394791 +11 +2.11686086360521 +21 +2.11686086360521 +31 +1.46824902399879e-16 +12 +2.26663244222472 +22 +2.01224742103046 +32 +1.31339002048974e-16 +13 +2.26663244222472 +23 +2.01224742103046 +33 +1.31339002048974e-16 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +2.11686086360521 +20 +3.0 +30 +0.883139136394791 +11 +2.26663244222472 +21 +2.01224742103046 +31 +1.31339002048974e-16 +12 +2.32009652509653 +22 +3.0 +32 +1.02509652509653 +13 +2.32009652509653 +23 +3.0 +33 +1.02509652509653 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +2.32009652509653 +20 +3.0 +30 +1.02509652509653 +11 +2.26663244222472 +21 +2.01224742103046 +31 +1.31339002048974e-16 +12 +2.44161027590394 +22 +1.89002774674928 +32 +1.13246855855755e-16 +13 +2.44161027590394 +23 +1.89002774674928 +33 +1.13246855855755e-16 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +2.32009652509653 +20 +3.0 +30 +1.02509652509653 +11 +2.44161027590394 +21 +1.89002774674928 +31 +1.13246855855755e-16 +12 +2.795 +22 +3.0 +32 +1.35681024447031 +13 +2.795 +23 +3.0 +33 +1.35681024447031 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +2.795 +20 +3.0 +30 +1.35681024447031 +11 +2.44161027590394 +21 +1.89002774674928 +31 +1.13246855855755e-16 +12 +2.66751850869864 +22 +1.73223387052481 +32 +8.98886699185201e-17 +13 +2.66751850869864 +23 +1.73223387052481 +33 +8.98886699185201e-17 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +2.795 +20 +3.0 +30 +1.35681024447031 +11 +2.66751850869864 +21 +1.73223387052481 +31 +8.98886699185201e-17 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +2.795 +20 +3.0 +30 +1.35681024447031 +11 +3.0 +21 +1.5 +31 +0.0 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.705 +32 +0.205 +13 +3.0 +23 +1.705 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +1.705 +31 +0.205 +12 +3.0 +22 +2.25 +32 +0.75 +13 +3.0 +23 +2.25 +33 +0.75 +70 +13 + 0 +3DFACE + 8 +iso_den +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +2.25 +31 +0.75 +12 +3.0 +22 +2.795 +32 +1.295 +13 +3.0 +23 +2.795 +33 +1.295 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.350582590815627 +21 +3.0 +31 +1.35441740918437 +12 +0.205 +22 +3.0 +32 +1.14599166666667 +13 +0.205 +23 +3.0 +33 +1.14599166666667 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.8525 +20 +3.0 +30 +2.1475 +11 +0.452270081490105 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.452270081490105 +20 +3.0 +30 +1.5 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.883139136394791 +22 +3.0 +32 +2.11686086360521 +13 +0.883139136394791 +23 +3.0 +33 +2.11686086360521 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.205 +21 +3.0 +31 +1.14599166666667 +12 +0.0 +22 +3.0 +32 +0.8525 +13 +0.0 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.205 +20 +3.0 +30 +1.14599166666667 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.75 +20 +2.25 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.75 +21 +2.25 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +0.497732043121052 +20 +3.0 +30 +3.0 +11 +0.75 +21 +2.25 +31 +3.0 +12 +0.899184275534744 +22 +2.39918427553474 +32 +3.0 +13 +0.899184275534744 +23 +2.39918427553474 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.600815724465256 +20 +2.10081572446526 +30 +3.0 +11 +0.0 +21 +2.795 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +3.0 +11 +0.600815724465256 +21 +2.10081572446526 +31 +3.0 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.600815724465256 +21 +2.10081572446526 +31 +3.0 +12 +0.75 +22 +2.25 +32 +3.0 +13 +0.75 +23 +2.25 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.899184275534744 +20 +2.39918427553474 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.878679656440356 +20 +3.0 +30 +3.0 +11 +0.899184275534744 +21 +2.39918427553474 +31 +3.0 +12 +1.06066017177982 +22 +2.56066017177982 +32 +3.0 +13 +1.06066017177982 +23 +2.56066017177982 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.248866021560526 +20 +1.74886602156053 +30 +3.0 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.439339828220179 +20 +1.93933982822018 +30 +3.0 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.50226795687895 +30 +3.0 +11 +0.439339828220179 +21 +1.93933982822018 +31 +3.0 +12 +0.600815724465256 +22 +2.10081572446526 +32 +3.0 +13 +0.600815724465256 +23 +2.10081572446526 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +2.795 +13 +0.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.205 +20 +3.0 +30 +2.795 +11 +0.8525 +21 +3.0 +31 +2.1475 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.5477299185099 +31 +1.5 +12 +0.0 +22 +2.11686086360521 +32 +2.11686086360521 +13 +0.0 +23 +2.11686086360521 +33 +2.11686086360521 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.5477299185099 +30 +1.5 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +3.0 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +1.5 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +0.0 +22 +1.64318975552969 +32 +2.795 +13 +0.0 +23 +1.64318975552969 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +1.5 +11 +0.0 +21 +2.795 +31 +1.14599166666667 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +1.14599166666667 +11 +0.0 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +0.8525 +13 +0.0 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.205 +20 +3.0 +30 +2.795 +11 +1.02509652509652 +21 +3.0 +31 +2.32009652509652 +12 +0.8525 +22 +3.0 +32 +2.1475 +13 +0.8525 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +1.02509652509652 +20 +3.0 +30 +2.32009652509652 +11 +0.205 +21 +3.0 +31 +2.795 +12 +1.35681024447031 +22 +3.0 +32 +2.795 +13 +1.35681024447031 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +1.06066017177982 +20 +2.56066017177982 +30 +3.0 +11 +1.20163144893051 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +1.20163144893051 +20 +3.0 +30 +3.0 +11 +1.06066017177982 +21 +2.56066017177982 +31 +3.0 +12 +1.25113397843947 +22 +2.75113397843947 +32 +3.0 +13 +1.25113397843947 +23 +2.75113397843947 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.452270081490105 +20 +3.0 +30 +1.5 +11 +0.350582590815627 +21 +3.0 +31 +1.35441740918437 +12 +0.205 +22 +3.0 +32 +1.5 +13 +0.205 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.205 +20 +3.0 +30 +3.0 +11 +1.35681024447031 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +1.35681024447031 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +3.0 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +3.0 +12 +0.497732043121052 +22 +3.0 +32 +3.0 +13 +0.497732043121052 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.497732043121052 +21 +3.0 +31 +3.0 +12 +0.878679656440356 +22 +3.0 +32 +3.0 +13 +0.878679656440356 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.878679656440356 +21 +3.0 +31 +3.0 +12 +1.20163144893051 +22 +3.0 +32 +3.0 +13 +1.20163144893051 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.248866021560526 +20 +1.74886602156053 +30 +3.0 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +1.79836855106949 +32 +3.0 +13 +0.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.12132034355964 +30 +3.0 +11 +0.248866021560526 +21 +1.74886602156053 +31 +3.0 +12 +0.439339828220179 +22 +1.93933982822018 +32 +3.0 +13 +0.439339828220179 +23 +1.93933982822018 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +1.14599166666667 +11 +0.0 +21 +2.5477299185099 +31 +1.5 +12 +0.0 +22 +2.795 +32 +1.5 +13 +0.0 +23 +2.795 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.0 +21 +2.795 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +1.79836855106949 +30 +3.0 +11 +0.0 +21 +1.64318975552969 +31 +2.795 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +1.64318975552969 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.795 +32 +2.795 +13 +0.0 +23 +2.795 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +1.79836855106949 +31 +3.0 +12 +0.0 +22 +2.12132034355964 +32 +3.0 +13 +0.0 +23 +2.12132034355964 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.12132034355964 +31 +3.0 +12 +0.0 +22 +2.50226795687895 +32 +3.0 +13 +0.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +2.795 +30 +2.795 +11 +0.0 +21 +2.50226795687895 +31 +3.0 +12 +0.0 +22 +2.795 +32 +3.0 +13 +0.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.205 +20 +3.0 +30 +3.0 +11 +0.205 +21 +3.0 +31 +2.795 +12 +0.0 +22 +3.0 +32 +3.0 +13 +0.0 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.20163144893051 +21 +3.0 +31 +3.0 +12 +1.25113397843947 +22 +2.75113397843947 +32 +3.0 +13 +1.25113397843947 +23 +2.75113397843947 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +2.795 +11 +0.205 +21 +3.0 +31 +1.5 +12 +0.0 +22 +3.0 +32 +1.5 +13 +0.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.205 +20 +3.0 +30 +1.5 +11 +0.0 +21 +3.0 +31 +2.795 +12 +0.205 +22 +3.0 +32 +2.795 +13 +0.205 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +1.02509652509652 +20 +3.0 +30 +2.32009652509652 +11 +0.883139136394791 +21 +3.0 +31 +2.11686086360521 +12 +0.8525 +22 +3.0 +32 +2.1475 +13 +0.8525 +23 +3.0 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +3.0 +30 +0.8525 +11 +1.35681024447031 +21 +3.0 +31 +2.795 +12 +0.0 +22 +2.795 +32 +1.14599166666667 +13 +0.0 +23 +2.795 +33 +1.14599166666667 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +1.35681024447031 +20 +3.0 +30 +2.795 +11 +0.0 +21 +3.0 +31 +0.8525 +12 +1.02509652509652 +22 +3.0 +32 +2.32009652509652 +13 +1.02509652509652 +23 +3.0 +33 +2.32009652509652 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +1.02509652509652 +20 +3.0 +30 +2.32009652509652 +11 +0.0 +21 +3.0 +31 +0.8525 +12 +0.205 +22 +3.0 +32 +1.14599166666667 +13 +0.205 +23 +3.0 +33 +1.14599166666667 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +1.02509652509652 +20 +3.0 +30 +2.32009652509652 +11 +0.205 +21 +3.0 +31 +1.14599166666667 +12 +0.350582590815627 +22 +3.0 +32 +1.35441740918437 +13 +0.350582590815627 +23 +3.0 +33 +1.35441740918437 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +1.02509652509652 +20 +3.0 +30 +2.32009652509652 +11 +0.350582590815627 +21 +3.0 +31 +1.35441740918437 +12 +0.452270081490105 +22 +3.0 +32 +1.5 +13 +0.452270081490105 +23 +3.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +1.02509652509652 +20 +3.0 +30 +2.32009652509652 +11 +0.452270081490105 +21 +3.0 +31 +1.5 +12 +0.883139136394791 +22 +3.0 +32 +2.11686086360521 +13 +0.883139136394791 +23 +3.0 +33 +2.11686086360521 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.0 +20 +1.64318975552969 +30 +2.795 +11 +0.248866021560526 +21 +1.74886602156053 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_unw +10 +0.248866021560526 +20 +1.74886602156053 +30 +3.0 +11 +0.0 +21 +1.64318975552969 +31 +2.795 +12 +0.0 +22 +2.11686086360521 +32 +2.11686086360521 +13 +0.0 +23 +2.11686086360521 +33 +2.11686086360521 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +0.248866021560526 +20 +1.74886602156053 +30 +3.0 +11 +0.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +0.439339828220179 +22 +1.93933982822018 +32 +3.0 +13 +0.439339828220179 +23 +1.93933982822018 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +0.439339828220179 +20 +1.93933982822018 +30 +3.0 +11 +0.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +0.600815724465256 +22 +2.10081572446526 +32 +3.0 +13 +0.600815724465256 +23 +2.10081572446526 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +0.600815724465256 +20 +2.10081572446526 +30 +3.0 +11 +0.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +0.75 +22 +2.25 +32 +3.0 +13 +0.75 +23 +2.25 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +0.75 +20 +2.25 +30 +3.0 +11 +0.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +0.0 +22 +2.5477299185099 +32 +1.5 +13 +0.0 +23 +2.5477299185099 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +0.75 +20 +2.25 +30 +3.0 +11 +0.0 +21 +2.5477299185099 +31 +1.5 +12 +0.899184275534744 +22 +2.39918427553474 +32 +3.0 +13 +0.899184275534744 +23 +2.39918427553474 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +0.899184275534744 +20 +2.39918427553474 +30 +3.0 +11 +0.0 +21 +2.5477299185099 +31 +1.5 +12 +1.06066017177982 +22 +2.56066017177982 +32 +3.0 +13 +1.06066017177982 +23 +2.56066017177982 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +1.06066017177982 +20 +2.56066017177982 +30 +3.0 +11 +0.0 +21 +2.5477299185099 +31 +1.5 +12 +0.0 +22 +2.795 +32 +1.14599166666667 +13 +0.0 +23 +2.795 +33 +1.14599166666667 +70 +13 + 0 +3DFACE + 8 +iso_unw +10 +1.06066017177982 +20 +2.56066017177982 +30 +3.0 +11 +0.0 +21 +2.795 +31 +1.14599166666667 +12 +1.25113397843947 +22 +2.75113397843947 +32 +3.0 +13 +1.25113397843947 +23 +2.75113397843947 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +1.25113397843947 +20 +2.75113397843947 +30 +3.0 +11 +0.0 +21 +2.795 +31 +1.14599166666667 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_unw +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.0 +21 +2.795 +31 +1.14599166666667 +12 +1.35681024447031 +22 +3.0 +32 +2.795 +13 +1.35681024447031 +23 +3.0 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +iso_use +10 +2.50226795687895 +20 +0.0 +30 +3.0 +11 +2.57375 +21 +0.426250000000001 +31 +3.0 +12 +2.36016784552609 +22 +0.212667845526093 +32 +3.0 +13 +2.36016784552609 +23 +0.212667845526093 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +2.57375 +20 +0.426250000000001 +30 +3.0 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.795 +22 +0.0 +32 +3.0 +13 +2.795 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_use +10 +2.57375 +20 +0.426250000000001 +30 +3.0 +11 +2.795 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +2.99999999999999 +21 +0.852499999999996 +31 +3.0 +12 +2.7873321544739 +22 +0.639832154473909 +32 +3.0 +13 +2.7873321544739 +23 +0.639832154473909 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.0 +30 +2.795 +11 +2.795 +21 +1.79190321753102e-16 +31 +2.35249999999999 +12 +2.99999999999999 +22 +4.71844785465692e-16 +32 +2.1475 +13 +2.99999999999999 +23 +4.71844785465692e-16 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +2.795 +20 +1.79190321753102e-16 +30 +2.35249999999999 +11 +3.0 +21 +0.0 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +2.795 +20 +0.0 +30 +3.0 +11 +2.3525 +21 +5.67320709797468e-17 +31 +2.795 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +2.3525 +20 +5.67320709797468e-17 +30 +2.795 +11 +2.795 +21 +0.0 +31 +3.0 +12 +2.50226795687895 +22 +0.0 +32 +3.0 +13 +2.50226795687895 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_use +10 +2.3525 +20 +5.67320709797468e-17 +30 +2.795 +11 +2.50226795687895 +21 +0.0 +31 +3.0 +12 +2.14749999999999 +22 +0.0 +32 +3.0 +13 +2.14749999999999 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +2.795 +20 +0.0 +30 +2.795 +11 +2.57375 +21 +1.17961196366424e-16 +31 +2.57375 +12 +2.795 +22 +1.79190321753102e-16 +32 +2.35249999999999 +13 +2.795 +23 +1.79190321753102e-16 +33 +2.35249999999999 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +2.795 +20 +0.0 +30 +3.0 +11 +2.795 +21 +0.0 +31 +2.795 +12 +3.0 +22 +0.0 +32 +3.0 +13 +3.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.205 +30 +2.795 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +2.99999999999999 +20 +4.71844785465692e-16 +30 +2.1475 +11 +3.0 +21 +0.205 +31 +2.795 +12 +3.0 +22 +0.0 +32 +2.795 +13 +3.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.205 +30 +2.795 +11 +2.99999999999999 +21 +4.71844785465692e-16 +31 +2.1475 +12 +3.0 +22 +0.205 +32 +2.3525 +13 +3.0 +23 +0.205 +33 +2.3525 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.205 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +2.99999999999999 +20 +0.647499999999997 +30 +2.795 +11 +3.0 +21 +0.205 +31 +3.0 +12 +3.0 +22 +0.205 +32 +2.795 +13 +3.0 +23 +0.205 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.205 +30 +3.0 +11 +2.99999999999999 +21 +0.647499999999997 +31 +2.795 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +2.99999999999999 +21 +0.647499999999997 +31 +2.795 +12 +2.99999999999999 +22 +0.852499999999996 +32 +3.0 +13 +2.99999999999999 +23 +0.852499999999996 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +2.99999999999999 +20 +0.647499999999997 +30 +2.795 +11 +3.0 +21 +0.205 +31 +2.795 +12 +3.0 +22 +0.426249999999999 +32 +2.57375 +13 +3.0 +23 +0.426249999999999 +33 +2.57375 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +2.50226795687895 +20 +0.0 +30 +3.0 +11 +2.36016784552609 +21 +0.212667845526093 +31 +3.0 +12 +2.14749999999999 +22 +0.0 +32 +3.0 +13 +2.14749999999999 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.426249999999999 +30 +2.57375 +11 +3.0 +21 +0.205 +31 +2.795 +12 +3.0 +22 +0.205 +32 +2.3525 +13 +3.0 +23 +0.205 +33 +2.3525 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.0 +30 +3.0 +11 +2.7873321544739 +21 +0.639832154473909 +31 +3.0 +12 +2.57375 +22 +0.426250000000001 +32 +3.0 +13 +2.57375 +23 +0.426250000000001 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +2.7873321544739 +20 +0.639832154473909 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.497732043121051 +32 +3.0 +13 +3.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.497732043121051 +30 +3.0 +11 +3.0 +21 +0.0 +31 +3.0 +12 +3.0 +22 +0.205 +32 +3.0 +13 +3.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +2.3525 +20 +5.67320709797468e-17 +30 +2.795 +11 +2.57375 +21 +1.17961196366424e-16 +31 +2.57375 +12 +2.795 +22 +0.0 +32 +2.795 +13 +2.795 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_use +10 +2.795 +20 +1.79190321753102e-16 +30 +2.35249999999999 +11 +3.0 +21 +0.205 +31 +2.3525 +12 +2.99999999999999 +22 +4.71844785465692e-16 +32 +2.1475 +13 +2.99999999999999 +23 +4.71844785465692e-16 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.205 +30 +2.3525 +11 +2.795 +21 +1.79190321753102e-16 +31 +2.35249999999999 +12 +2.57375 +22 +1.17961196366424e-16 +32 +2.57375 +13 +2.57375 +23 +1.17961196366424e-16 +33 +2.57375 +70 +13 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.205 +30 +2.3525 +11 +2.57375 +21 +1.17961196366424e-16 +31 +2.57375 +12 +3.0 +22 +0.426249999999999 +32 +2.57375 +13 +3.0 +23 +0.426249999999999 +33 +2.57375 +70 +3 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.426249999999999 +30 +2.57375 +11 +2.57375 +21 +1.17961196366424e-16 +31 +2.57375 +12 +2.3525 +22 +5.67320709797468e-17 +32 +2.795 +13 +2.3525 +23 +5.67320709797468e-17 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_use +10 +3.0 +20 +0.426249999999999 +30 +2.57375 +11 +2.3525 +21 +5.67320709797468e-17 +31 +2.795 +12 +2.99999999999999 +22 +0.647499999999997 +32 +2.795 +13 +2.99999999999999 +23 +0.647499999999997 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +iso_use +10 +2.99999999999999 +20 +0.647499999999997 +30 +2.795 +11 +2.3525 +21 +5.67320709797468e-17 +31 +2.795 +12 +2.14749999999999 +22 +0.0 +32 +3.0 +13 +2.14749999999999 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_use +10 +2.99999999999999 +20 +0.647499999999997 +30 +2.795 +11 +2.14749999999999 +21 +0.0 +31 +3.0 +12 +2.36016784552609 +22 +0.212667845526093 +32 +3.0 +13 +2.36016784552609 +23 +0.212667845526093 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_use +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +2.99999999999999 +21 +0.852499999999996 +31 +3.0 +12 +2.99999999999999 +22 +0.647499999999997 +32 +2.795 +13 +2.99999999999999 +23 +0.647499999999997 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_use +10 +2.99999999999999 +20 +0.852499999999996 +30 +3.0 +11 +2.36016784552609 +21 +0.212667845526093 +31 +3.0 +12 +2.57375 +22 +0.426250000000001 +32 +3.0 +13 +2.57375 +23 +0.426250000000001 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_use +10 +2.99999999999999 +20 +0.852499999999996 +30 +3.0 +11 +2.57375 +21 +0.426250000000001 +31 +3.0 +12 +2.7873321544739 +22 +0.639832154473909 +32 +3.0 +13 +2.7873321544739 +23 +0.639832154473909 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.332481491301358 +20 +1.26776612947518 +30 +3.0 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.0 +22 +1.20163144893051 +32 +3.0 +13 +0.0 +23 +1.20163144893051 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.883139136394789 +20 +0.883139136394789 +30 +3.0 +11 +0.0 +21 +0.205 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.205 +30 +3.0 +11 +0.883139136394789 +21 +0.883139136394789 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +3.0 +13 +0.0 +23 +0.497732043121051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.883139136394789 +21 +0.883139136394789 +31 +3.0 +12 +0.733367557775275 +22 +0.987752578969537 +32 +3.0 +13 +0.733367557775275 +23 +0.987752578969537 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.31701681130471 +21 +0.580081389077034 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.31701681130471 +20 +0.580081389077034 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.5 +22 +0.452270081490099 +32 +3.0 +13 +1.5 +23 +0.452270081490099 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.878679656440358 +20 +1.66533453693773e-16 +30 +3.0 +11 +1.02269438387197 +21 +0.78566166435019 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.02269438387197 +20 +0.78566166435019 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +1.16340159356772 +22 +0.687379562118006 +32 +3.0 +13 +1.16340159356772 +23 +0.687379562118006 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +0.0 +30 +2.795 +11 +1.64558259081562 +21 +1.06434958002245e-16 +31 +2.64941740918438 +12 +1.85400833333332 +22 +6.2236879303386e-17 +32 +2.795 +13 +1.85400833333332 +23 +6.2236879303386e-17 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +3.0 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +2.795 +13 +0.205 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.679903474903479 +20 +3.11213701008545e-16 +30 +1.97490347490348 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.205 +22 +4.11920172793637e-16 +32 +1.64318975552968 +13 +0.205 +23 +4.11920172793637e-16 +33 +1.64318975552968 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.679903474903479 +21 +3.11213701008545e-16 +31 +1.97490347490348 +12 +0.8525 +22 +0.0 +32 +2.1475 +13 +0.8525 +23 +0.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.497732043121051 +30 +3.0 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +3.0 +13 +0.0 +23 +0.205 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +1.295 +32 +2.795 +13 +0.0 +23 +1.295 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +1.295 +30 +2.795 +11 +0.0 +21 +0.497732043121051 +31 +3.0 +12 +0.0 +22 +0.878679656440357 +32 +3.0 +13 +0.0 +23 +0.878679656440357 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +1.295 +30 +2.795 +11 +0.0 +21 +0.878679656440357 +31 +3.0 +12 +0.0 +22 +1.20163144893051 +32 +3.0 +13 +0.0 +23 +1.20163144893051 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +1.295 +30 +2.795 +11 +0.0 +21 +1.20163144893051 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.0 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.75 +30 +2.25 +11 +0.0 +21 +0.205 +31 +1.705 +12 +0.0 +22 +0.205 +32 +2.795 +13 +0.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.205 +30 +2.795 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.0 +22 +0.0 +32 +2.795 +13 +0.0 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.0 +21 +0.205 +31 +2.795 +12 +0.0 +22 +0.205 +32 +1.705 +13 +0.0 +23 +0.205 +33 +1.705 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +1.295 +30 +2.795 +11 +0.0 +21 +0.75 +31 +2.25 +12 +0.0 +22 +0.205 +32 +2.795 +13 +0.0 +23 +0.205 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +0.0 +30 +2.795 +11 +0.8525 +21 +0.0 +31 +2.1475 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +2.14749999999999 +20 +0.0 +30 +3.0 +11 +1.5 +21 +0.0 +31 +2.795 +12 +1.85400833333332 +22 +6.2236879303386e-17 +32 +2.795 +13 +1.85400833333332 +23 +6.2236879303386e-17 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +0.0 +30 +2.795 +11 +2.14749999999999 +21 +0.0 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.12132034355964 +20 +0.0 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +2.12132034355964 +21 +0.0 +31 +3.0 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.883139136394789 +21 +0.883139136394789 +31 +3.0 +12 +0.0 +22 +0.0 +32 +3.0 +13 +0.0 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.883139136394789 +20 +0.883139136394789 +30 +3.0 +11 +0.205 +21 +0.0 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +0.883139136394789 +20 +0.883139136394789 +30 +3.0 +11 +0.497732043121053 +21 +0.0 +31 +3.0 +12 +1.02269438387197 +22 +0.78566166435019 +32 +3.0 +13 +1.02269438387197 +23 +0.78566166435019 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.20163144893051 +20 +1.11022302462516e-16 +30 +3.0 +11 +1.16340159356772 +21 +0.687379562118006 +31 +3.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +3.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.16340159356772 +20 +0.687379562118006 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +1.31701681130471 +22 +0.580081389077034 +32 +3.0 +13 +1.31701681130471 +23 +0.580081389077034 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +1.5 +21 +0.452270081490099 +31 +3.0 +12 +1.5 +22 +5.55111512312578e-17 +32 +3.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +0.452270081490099 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.74203407868223 +22 +0.283212517800531 +32 +3.0 +13 +1.74203407868223 +23 +0.283212517800531 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +3.0 +11 +2.1106623891929 +21 +0.0257305779793383 +31 +3.0 +12 +1.74203407868223 +22 +0.283212517800531 +32 +3.0 +13 +1.74203407868223 +23 +0.283212517800531 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.733367557775275 +20 +0.987752578969537 +30 +3.0 +11 +0.0 +21 +0.878679656440357 +31 +3.0 +12 +0.0 +22 +0.497732043121051 +32 +3.0 +13 +0.0 +23 +0.497732043121051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.878679656440357 +30 +3.0 +11 +0.733367557775275 +21 +0.987752578969537 +31 +3.0 +12 +0.558389724096057 +22 +1.10997225325071 +32 +3.0 +13 +0.558389724096057 +23 +1.10997225325071 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.558389724096057 +20 +1.10997225325071 +30 +3.0 +11 +0.0 +21 +1.20163144893051 +31 +3.0 +12 +0.0 +22 +0.878679656440357 +32 +3.0 +13 +0.0 +23 +0.878679656440357 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +1.20163144893051 +30 +3.0 +11 +0.558389724096057 +21 +1.10997225325071 +31 +3.0 +12 +0.332481491301358 +22 +1.26776612947518 +32 +3.0 +13 +0.332481491301358 +23 +1.26776612947518 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +4.11920172793637e-16 +30 +1.64318975552968 +11 +0.0 +21 +0.0 +31 +2.795 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.0 +30 +2.795 +11 +0.205 +21 +4.11920172793637e-16 +31 +1.64318975552968 +12 +0.205 +22 +0.0 +32 +2.795 +13 +0.205 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +5.55111512312578e-17 +30 +3.0 +11 +0.205 +21 +0.0 +31 +2.795 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +0.0 +30 +2.795 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +0.205 +22 +0.0 +32 +3.0 +13 +0.205 +23 +0.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +0.0 +30 +3.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +3.0 +12 +1.20163144893051 +22 +1.11022302462516e-16 +32 +3.0 +13 +1.20163144893051 +23 +1.11022302462516e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +0.0 +30 +3.0 +11 +1.20163144893051 +21 +1.11022302462516e-16 +31 +3.0 +12 +0.878679656440358 +22 +1.66533453693773e-16 +32 +3.0 +13 +0.878679656440358 +23 +1.66533453693773e-16 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +0.0 +30 +3.0 +11 +0.878679656440358 +21 +1.66533453693773e-16 +31 +3.0 +12 +0.497732043121053 +22 +0.0 +32 +3.0 +13 +0.497732043121053 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +0.0 +30 +2.795 +11 +1.5 +21 +1.37306724264545e-16 +31 +2.5477299185099 +12 +1.64558259081562 +22 +1.06434958002245e-16 +32 +2.64941740918438 +13 +1.64558259081562 +23 +1.06434958002245e-16 +33 +2.64941740918438 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +1.37306724264545e-16 +30 +2.5477299185099 +11 +0.8525 +21 +0.0 +31 +2.1475 +12 +0.88313913639479 +22 +2.68116213853163e-16 +32 +2.11686086360521 +13 +0.88313913639479 +23 +2.68116213853163e-16 +33 +2.11686086360521 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.8525 +20 +0.0 +30 +2.1475 +11 +1.5 +21 +1.37306724264545e-16 +31 +2.5477299185099 +12 +1.5 +22 +0.0 +32 +2.795 +13 +1.5 +23 +0.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.8525 +20 +0.0 +30 +2.1475 +11 +0.679903474903479 +21 +3.11213701008545e-16 +31 +1.97490347490348 +12 +0.88313913639479 +22 +2.68116213853163e-16 +32 +2.11686086360521 +13 +0.88313913639479 +23 +2.68116213853163e-16 +33 +2.11686086360521 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +2.14749999999999 +20 +0.0 +30 +3.0 +11 +2.1106623891929 +21 +0.0257305779793383 +31 +3.0 +12 +2.12132034355964 +22 +0.0 +32 +3.0 +13 +2.12132034355964 +23 +0.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_usw +10 +0.0 +20 +0.205 +30 +1.705 +11 +0.205 +21 +4.11920172793637e-16 +31 +1.64318975552968 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +0.205 +20 +4.11920172793637e-16 +30 +1.64318975552968 +11 +0.0 +21 +0.205 +31 +1.705 +12 +0.679903474903479 +22 +3.11213701008545e-16 +32 +1.97490347490348 +13 +0.679903474903479 +23 +3.11213701008545e-16 +33 +1.97490347490348 +70 +3 + 0 +3DFACE + 8 +iso_usw +10 +0.679903474903479 +20 +3.11213701008545e-16 +30 +1.97490347490348 +11 +0.0 +21 +0.205 +31 +1.705 +12 +0.0 +22 +0.75 +32 +2.25 +13 +0.0 +23 +0.75 +33 +2.25 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +0.679903474903479 +20 +3.11213701008545e-16 +30 +1.97490347490348 +11 +0.0 +21 +0.75 +31 +2.25 +12 +0.88313913639479 +22 +2.68116213853163e-16 +32 +2.11686086360521 +13 +0.88313913639479 +23 +2.68116213853163e-16 +33 +2.11686086360521 +70 +3 + 0 +3DFACE + 8 +iso_usw +10 +0.88313913639479 +20 +2.68116213853163e-16 +30 +2.11686086360521 +11 +0.0 +21 +0.75 +31 +2.25 +12 +1.5 +22 +1.37306724264545e-16 +32 +2.5477299185099 +13 +1.5 +23 +1.37306724264545e-16 +33 +2.5477299185099 +70 +3 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +1.37306724264545e-16 +30 +2.5477299185099 +11 +0.0 +21 +0.75 +31 +2.25 +12 +0.0 +22 +1.295 +32 +2.795 +13 +0.0 +23 +1.295 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +1.5 +20 +1.37306724264545e-16 +30 +2.5477299185099 +11 +0.0 +21 +1.295 +31 +2.795 +12 +1.64558259081562 +22 +1.06434958002245e-16 +32 +2.64941740918438 +13 +1.64558259081562 +23 +1.06434958002245e-16 +33 +2.64941740918438 +70 +3 + 0 +3DFACE + 8 +iso_usw +10 +1.64558259081562 +20 +1.06434958002245e-16 +30 +2.64941740918438 +11 +0.0 +21 +1.295 +31 +2.795 +12 +1.85400833333332 +22 +6.2236879303386e-17 +32 +2.795 +13 +1.85400833333332 +23 +6.2236879303386e-17 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +iso_usw +10 +1.85400833333332 +20 +6.2236879303386e-17 +30 +2.795 +11 +0.0 +21 +1.295 +31 +2.795 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +1.85400833333332 +20 +6.2236879303386e-17 +30 +2.795 +11 +0.0 +21 +1.5 +31 +3.0 +12 +2.1106623891929 +22 +0.0257305779793383 +32 +3.0 +13 +2.1106623891929 +23 +0.0257305779793383 +33 +3.0 +70 +15 + 0 +3DFACE + 8 +iso_usw +10 +1.85400833333332 +20 +6.2236879303386e-17 +30 +2.795 +11 +2.1106623891929 +21 +0.0257305779793383 +31 +3.0 +12 +2.14749999999999 +22 +0.0 +32 +3.0 +13 +2.14749999999999 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.332481491301358 +22 +1.26776612947518 +32 +3.0 +13 +0.332481491301358 +23 +1.26776612947518 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +0.332481491301358 +21 +1.26776612947518 +31 +3.0 +12 +0.558389724096057 +22 +1.10997225325071 +32 +3.0 +13 +0.558389724096057 +23 +1.10997225325071 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +0.558389724096057 +21 +1.10997225325071 +31 +3.0 +12 +0.733367557775275 +22 +0.987752578969537 +32 +3.0 +13 +0.733367557775275 +23 +0.987752578969537 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +0.733367557775275 +21 +0.987752578969537 +31 +3.0 +12 +0.883139136394789 +22 +0.883139136394789 +32 +3.0 +13 +0.883139136394789 +23 +0.883139136394789 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +0.883139136394789 +21 +0.883139136394789 +31 +3.0 +12 +1.02269438387197 +22 +0.78566166435019 +32 +3.0 +13 +1.02269438387197 +23 +0.78566166435019 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +1.02269438387197 +21 +0.78566166435019 +31 +3.0 +12 +1.16340159356772 +22 +0.687379562118006 +32 +3.0 +13 +1.16340159356772 +23 +0.687379562118006 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +1.16340159356772 +21 +0.687379562118006 +31 +3.0 +12 +1.31701681130471 +22 +0.580081389077034 +32 +3.0 +13 +1.31701681130471 +23 +0.580081389077034 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +1.31701681130471 +21 +0.580081389077034 +31 +3.0 +12 +1.5 +22 +0.452270081490099 +32 +3.0 +13 +1.5 +23 +0.452270081490099 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_usw +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +1.5 +21 +0.452270081490099 +31 +3.0 +12 +1.74203407868223 +22 +0.283212517800531 +32 +3.0 +13 +1.74203407868223 +23 +0.283212517800531 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.74886602156053 +22 +0.248866021560525 +32 +-1.29693882069326e-16 +13 +1.74886602156053 +23 +0.248866021560525 +33 +-1.29693882069326e-16 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +2.10081572446526 +20 +0.600815724465256 +30 +-7.75948602460171e-17 +11 +2.12132034355964 +21 +0.0 +31 +0.0 +12 +1.93933982822018 +22 +0.439339828220178 +32 +-1.0149809463712e-16 +13 +1.93933982822018 +23 +0.439339828220178 +33 +-1.0149809463712e-16 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +2.10081572446526 +21 +0.600815724465256 +31 +-7.75948602460171e-17 +12 +2.50226795687895 +22 +0.0 +32 +0.0 +13 +2.50226795687895 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +1.93933982822018 +20 +0.439339828220178 +30 +-1.0149809463712e-16 +11 +1.79836855106949 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.74886602156053 +22 +0.248866021560525 +32 +-1.29693882069326e-16 +13 +1.74886602156053 +23 +0.248866021560525 +33 +-1.29693882069326e-16 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.93933982822018 +21 +0.439339828220178 +31 +-1.0149809463712e-16 +12 +2.12132034355964 +22 +0.0 +32 +0.0 +13 +2.12132034355964 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.64941740918437 +20 +1.80782203615711e-16 +30 +1.64558259081563 +11 +2.54772991850989 +21 +1.64788632875096e-16 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +2.1475 +20 +0.0 +30 +0.8525 +11 +1.64318975552969 +21 +2.25211131595965e-17 +31 +0.205 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +1.64318975552969 +20 +2.25211131595965e-17 +30 +0.205 +11 +2.1475 +21 +0.0 +31 +0.8525 +12 +1.97490347490348 +22 +7.46935760775808e-17 +32 +0.679903474903477 +13 +1.97490347490348 +23 +7.46935760775808e-17 +33 +0.679903474903477 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.11686086360521 +21 +9.70208606166603e-17 +31 +0.883139136394791 +12 +2.1475 +22 +0.0 +32 +0.8525 +13 +2.1475 +23 +0.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.11686086360521 +20 +9.70208606166603e-17 +30 +0.883139136394791 +11 +2.795 +21 +0.0 +31 +1.5 +12 +2.54772991850989 +22 +1.64788632875096e-16 +32 +1.5 +13 +2.54772991850989 +23 +1.64788632875096e-16 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.50226795687895 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +2.12132034355964 +22 +0.0 +32 +0.0 +13 +2.12132034355964 +23 +0.0 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +2.12132034355964 +20 +0.0 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.79836855106949 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.79836855106949 +23 +5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +1.79836855106949 +20 +5.55111512312578e-17 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.5 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +2.795 +21 +0.0 +31 +0.205 +12 +1.64318975552969 +22 +2.25211131595965e-17 +32 +0.205 +13 +1.64318975552969 +23 +2.25211131595965e-17 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.0 +30 +1.5 +11 +2.795 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +0.205 +13 +3.0 +23 +0.205 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.205 +30 +1.5 +11 +3.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +3.0 +22 +0.452270081490106 +32 +1.5 +13 +3.0 +23 +0.452270081490106 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.795 +20 +0.0 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +2.56066017177982 +20 +1.06066017177982 +30 +-9.52420782539579e-18 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +2.39918427553474 +22 +0.899184275534743 +32 +-3.34274422164983e-17 +13 +2.39918427553474 +23 +0.899184275534743 +33 +-3.34274422164983e-17 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +2.56066017177982 +21 +1.06066017177982 +31 +-9.52420782539579e-18 +12 +3.0 +22 +0.878679656440357 +32 +0.0 +13 +3.0 +23 +0.878679656440357 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.25 +20 +0.75 +30 +-5.55111512312576e-17 +11 +2.50226795687895 +21 +0.0 +31 +0.0 +12 +2.10081572446526 +22 +0.600815724465256 +32 +-7.75948602460171e-17 +13 +2.10081572446526 +23 +0.600815724465256 +33 +-7.75948602460171e-17 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +2.25 +21 +0.75 +31 +-5.55111512312576e-17 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +2.50226795687895 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.795 +22 +0.0 +32 +0.0 +13 +2.795 +23 +0.0 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +1.20163144893051 +30 +0.0 +11 +2.75113397843947 +21 +1.25113397843947 +31 +1.86715796068105e-17 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +2.39918427553474 +20 +0.899184275534743 +30 +-3.34274422164983e-17 +11 +3.0 +21 +0.0 +31 +0.0 +12 +2.25 +22 +0.75 +32 +-5.55111512312576e-17 +13 +2.25 +23 +0.75 +33 +-5.55111512312576e-17 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.0 +30 +0.0 +11 +2.39918427553474 +21 +0.899184275534743 +31 +-3.34274422164983e-17 +12 +3.0 +22 +0.497732043121051 +32 +0.0 +13 +3.0 +23 +0.497732043121051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.0 +30 +0.0 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.75113397843947 +20 +1.25113397843947 +30 +1.86715796068105e-17 +11 +3.0 +21 +0.878679656440357 +31 +0.0 +12 +2.56066017177982 +22 +1.06066017177982 +32 +-9.52420782539579e-18 +13 +2.56066017177982 +23 +1.06066017177982 +33 +-9.52420782539579e-18 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.878679656440357 +30 +0.0 +11 +2.75113397843947 +21 +1.25113397843947 +31 +1.86715796068105e-17 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +1.97490347490348 +20 +7.46935760775808e-17 +30 +0.679903474903477 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.64318975552969 +22 +2.25211131595965e-17 +32 +0.205 +13 +1.64318975552969 +23 +2.25211131595965e-17 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.97490347490348 +21 +7.46935760775808e-17 +31 +0.679903474903477 +12 +1.74886602156053 +22 +0.248866021560525 +32 +-1.29693882069326e-16 +13 +1.74886602156053 +23 +0.248866021560525 +33 +-1.29693882069326e-16 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +1.97490347490348 +21 +7.46935760775808e-17 +31 +0.679903474903477 +12 +2.11686086360521 +22 +9.70208606166603e-17 +32 +0.883139136394791 +13 +2.11686086360521 +23 +9.70208606166603e-17 +33 +0.883139136394791 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +2.11686086360521 +21 +9.70208606166603e-17 +31 +0.883139136394791 +12 +2.54772991850989 +22 +1.64788632875096e-16 +32 +1.5 +13 +2.54772991850989 +23 +1.64788632875096e-16 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +2.54772991850989 +21 +1.64788632875096e-16 +31 +1.5 +12 +2.64941740918437 +22 +1.80782203615711e-16 +32 +1.64558259081563 +13 +2.64941740918437 +23 +1.80782203615711e-16 +33 +1.64558259081563 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +2.64941740918437 +21 +1.80782203615711e-16 +31 +1.64558259081563 +12 +2.795 +22 +2.03679665726025e-16 +32 +1.85400833333335 +13 +2.795 +23 +2.03679665726025e-16 +33 +1.85400833333335 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +2.795 +21 +2.03679665726025e-16 +31 +1.85400833333335 +12 +2.99999999999999 +22 +4.71844785465692e-16 +32 +2.1475 +13 +2.99999999999999 +23 +4.71844785465692e-16 +33 +2.1475 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +2.99999999999999 +21 +4.71844785465692e-16 +31 +2.1475 +12 +3.0 +22 +0.205 +32 +1.85400833333334 +13 +3.0 +23 +0.205 +33 +1.85400833333334 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +3.0 +21 +0.205 +31 +1.85400833333334 +12 +3.0 +22 +0.452270081490106 +32 +1.5 +13 +3.0 +23 +0.452270081490106 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +3.0 +21 +0.452270081490106 +31 +1.5 +12 +1.93933982822018 +22 +0.439339828220178 +32 +-1.0149809463712e-16 +13 +1.93933982822018 +23 +0.439339828220178 +33 +-1.0149809463712e-16 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +1.93933982822018 +20 +0.439339828220178 +30 +-1.0149809463712e-16 +11 +3.0 +21 +0.452270081490106 +31 +1.5 +12 +2.10081572446526 +22 +0.600815724465256 +32 +-7.75948602460171e-17 +13 +2.10081572446526 +23 +0.600815724465256 +33 +-7.75948602460171e-17 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +2.10081572446526 +20 +0.600815724465256 +30 +-7.75948602460171e-17 +11 +3.0 +21 +0.452270081490106 +31 +1.5 +12 +3.0 +22 +0.883139136394791 +32 +0.883139136394791 +13 +3.0 +23 +0.883139136394791 +33 +0.883139136394791 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +2.10081572446526 +20 +0.600815724465256 +30 +-7.75948602460171e-17 +11 +3.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +2.25 +22 +0.75 +32 +-5.55111512312576e-17 +13 +2.25 +23 +0.75 +33 +-5.55111512312576e-17 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +2.25 +20 +0.75 +30 +-5.55111512312576e-17 +11 +3.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +2.39918427553474 +22 +0.899184275534743 +32 +-3.34274422164983e-17 +13 +2.39918427553474 +23 +0.899184275534743 +33 +-3.34274422164983e-17 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +2.39918427553474 +20 +0.899184275534743 +30 +-3.34274422164983e-17 +11 +3.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +3.0 +22 +1.35681024447031 +32 +0.205 +13 +3.0 +23 +1.35681024447031 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +2.39918427553474 +20 +0.899184275534743 +30 +-3.34274422164983e-17 +11 +3.0 +21 +1.35681024447031 +31 +0.205 +12 +2.56066017177982 +22 +1.06066017177982 +32 +-9.52420782539579e-18 +13 +2.56066017177982 +23 +1.06066017177982 +33 +-9.52420782539579e-18 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +2.56066017177982 +20 +1.06066017177982 +30 +-9.52420782539579e-18 +11 +3.0 +21 +1.35681024447031 +31 +0.205 +12 +2.75113397843947 +22 +1.25113397843947 +32 +1.86715796068105e-17 +13 +2.75113397843947 +23 +1.25113397843947 +33 +1.86715796068105e-17 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +2.75113397843947 +20 +1.25113397843947 +30 +1.86715796068105e-17 +11 +3.0 +21 +1.35681024447031 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.205 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.452270081490106 +30 +1.5 +11 +3.0 +21 +0.205 +31 +1.85400833333334 +12 +3.0 +22 +0.205 +32 +1.5 +13 +3.0 +23 +0.205 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +2.795 +20 +0.0 +30 +0.205 +11 +2.795 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.0 +32 +0.0 +13 +3.0 +23 +0.0 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +0.205 +13 +3.0 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.0 +30 +1.5 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +1.5 +13 +3.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.795 +20 +2.03679665726025e-16 +30 +1.85400833333335 +11 +2.64941740918437 +21 +1.80782203615711e-16 +31 +1.64558259081563 +12 +2.795 +22 +0.0 +32 +1.5 +13 +2.795 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.1475 +21 +0.0 +31 +0.8525 +12 +2.795 +22 +0.0 +32 +0.205 +13 +2.795 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +1.35681024447031 +30 +0.205 +11 +3.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +3.0 +22 +0.205 +32 +0.205 +13 +3.0 +23 +0.205 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.497732043121051 +30 +0.0 +11 +3.0 +21 +0.205 +31 +0.205 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +1.35681024447031 +32 +0.205 +13 +3.0 +23 +1.35681024447031 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +1.35681024447031 +30 +0.205 +11 +3.0 +21 +0.497732043121051 +31 +0.0 +12 +3.0 +22 +0.878679656440357 +32 +0.0 +13 +3.0 +23 +0.878679656440357 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +1.35681024447031 +30 +0.205 +11 +3.0 +21 +0.878679656440357 +31 +0.0 +12 +3.0 +22 +1.20163144893051 +32 +0.0 +13 +3.0 +23 +1.20163144893051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +1.35681024447031 +30 +0.205 +11 +3.0 +21 +1.20163144893051 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.205 +30 +1.5 +11 +2.99999999999999 +21 +4.71844785465692e-16 +31 +2.1475 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.99999999999999 +20 +4.71844785465692e-16 +30 +2.1475 +11 +3.0 +21 +0.205 +31 +1.5 +12 +3.0 +22 +0.205 +32 +1.85400833333334 +13 +3.0 +23 +0.205 +33 +1.85400833333334 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +3.0 +20 +0.205 +30 +0.205 +11 +3.0 +21 +0.0 +31 +0.0 +12 +3.0 +22 +0.205 +32 +0.0 +13 +3.0 +23 +0.205 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_dse +10 +2.99999999999999 +20 +4.71844785465692e-16 +30 +2.1475 +11 +2.795 +21 +0.0 +31 +1.5 +12 +3.0 +22 +0.0 +32 +1.5 +13 +3.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.795 +20 +0.0 +30 +1.5 +11 +2.99999999999999 +21 +4.71844785465692e-16 +31 +2.1475 +12 +2.795 +22 +2.03679665726025e-16 +32 +1.85400833333335 +13 +2.795 +23 +2.03679665726025e-16 +33 +1.85400833333335 +70 +1 + 0 +3DFACE + 8 +iso_dse +10 +2.11686086360521 +20 +9.70208606166603e-17 +30 +0.883139136394791 +11 +1.97490347490348 +21 +7.46935760775808e-17 +31 +0.679903474903477 +12 +2.1475 +22 +0.0 +32 +0.8525 +13 +2.1475 +23 +0.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +2.41991861092296 +20 +1.68298318869529 +30 +3.0 +11 +3.0 +21 +2.12132034355964 +31 +3.0 +12 +2.31262043788199 +22 +1.83659840643228 +32 +3.0 +13 +2.31262043788199 +23 +1.83659840643228 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +2.41991861092296 +21 +1.68298318869529 +31 +3.0 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.54772991850989 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.79836855106949 +31 +3.0 +12 +2.41991861092296 +22 +1.68298318869529 +32 +3.0 +13 +2.41991861092296 +23 +1.68298318869529 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +2.54772991850989 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.97426942202063 +20 +0.889337610807109 +30 +3.0 +11 +3.0 +21 +1.20163144893051 +31 +3.0 +12 +2.71678748219945 +22 +1.25796592131777 +32 +3.0 +13 +2.71678748219945 +23 +1.25796592131777 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +2.97426942202063 +21 +0.889337610807109 +31 +3.0 +12 +3.0 +22 +0.878679656440357 +32 +3.0 +13 +3.0 +23 +0.878679656440357 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.71678748219945 +20 +1.25796592131777 +30 +3.0 +11 +3.0 +21 +1.5 +31 +3.0 +12 +2.54772991850989 +22 +1.5 +32 +3.0 +13 +2.54772991850989 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.5 +30 +3.0 +11 +2.71678748219945 +21 +1.25796592131777 +31 +3.0 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +1.5 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +1.705 +22 +3.0 +32 +2.795 +13 +1.705 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.795 +20 +3.0 +30 +2.795 +11 +1.5 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_une +10 +2.795 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.79836855106949 +22 +3.0 +32 +3.0 +13 +1.79836855106949 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +2.795 +20 +3.0 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +2.795 +20 +3.0 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.795 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.14599166666666 +30 +2.795 +11 +3.0 +21 +0.878679656440357 +31 +3.0 +12 +2.99999999999999 +22 +0.852499999999996 +32 +3.0 +13 +2.99999999999999 +23 +0.852499999999996 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +0.878679656440357 +30 +3.0 +11 +3.0 +21 +1.14599166666666 +31 +2.795 +12 +3.0 +22 +1.20163144893051 +32 +3.0 +13 +3.0 +23 +1.20163144893051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +3.0 +21 +1.14599166666666 +31 +2.795 +12 +3.0 +22 +1.5 +32 +2.795 +13 +3.0 +23 +1.5 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.20163144893051 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.5 +32 +3.0 +13 +3.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +1.5 +31 +3.0 +12 +3.0 +22 +1.5 +32 +2.795 +13 +3.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.5 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +1.79836855106949 +32 +3.0 +13 +3.0 +23 +1.79836855106949 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.79836855106949 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.12132034355964 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.25 +21 +3.0 +31 +2.25 +12 +1.705 +22 +3.0 +32 +2.795 +13 +1.705 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +2.795 +20 +3.0 +30 +1.705 +11 +3.0 +21 +3.0 +31 +2.795 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +1.705 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +3.0 +21 +1.5 +31 +2.795 +12 +3.0 +22 +1.5 +32 +2.54772991850989 +13 +3.0 +23 +1.5 +33 +2.54772991850989 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +2.795 +31 +2.795 +12 +3.0 +22 +2.795 +32 +1.64318975552969 +13 +3.0 +23 +2.795 +33 +1.64318975552969 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +2.795 +13 +3.0 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +2.795 +12 +2.795 +22 +3.0 +32 +2.795 +13 +2.795 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +2.795 +20 +3.0 +30 +2.795 +11 +2.795 +21 +3.0 +31 +1.705 +12 +2.25 +22 +3.0 +32 +2.25 +13 +2.25 +23 +3.0 +33 +2.25 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.795 +30 +2.795 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +3.0 +22 +2.795 +32 +1.64318975552969 +13 +3.0 +23 +2.795 +33 +1.64318975552969 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +2.31262043788199 +20 +1.83659840643228 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +2.2143383356498 +22 +1.97730561612803 +32 +3.0 +13 +2.2143383356498 +23 +1.97730561612803 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.50226795687895 +30 +3.0 +11 +2.31262043788199 +21 +1.83659840643228 +31 +3.0 +12 +3.0 +22 +2.12132034355964 +32 +3.0 +13 +3.0 +23 +2.12132034355964 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.01224742103046 +20 +2.26663244222472 +30 +3.0 +11 +2.12132034355964 +21 +3.0 +31 +3.0 +12 +1.89002774674928 +22 +2.44161027590394 +32 +3.0 +13 +1.89002774674928 +23 +2.44161027590394 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.12132034355964 +20 +3.0 +30 +3.0 +11 +2.01224742103046 +21 +2.26663244222472 +31 +3.0 +12 +2.50226795687895 +22 +3.0 +32 +3.0 +13 +2.50226795687895 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +1.89002774674928 +20 +2.44161027590394 +30 +3.0 +11 +1.79836855106949 +21 +3.0 +31 +3.0 +12 +1.73223387052482 +22 +2.66751850869864 +32 +3.0 +13 +1.73223387052482 +23 +2.66751850869864 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.89002774674928 +21 +2.44161027590394 +31 +3.0 +12 +2.12132034355964 +22 +3.0 +32 +3.0 +13 +2.12132034355964 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.11686086360521 +20 +2.11686086360521 +30 +3.0 +11 +2.50226795687895 +21 +3.0 +31 +3.0 +12 +2.01224742103046 +22 +2.26663244222472 +32 +3.0 +13 +2.01224742103046 +23 +2.26663244222472 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +2.11686086360521 +21 +2.11686086360521 +31 +3.0 +12 +3.0 +22 +3.0 +32 +3.0 +13 +3.0 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +2.50226795687895 +20 +3.0 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.795 +22 +3.0 +32 +3.0 +13 +2.795 +23 +3.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +2.2143383356498 +20 +1.97730561612803 +30 +3.0 +11 +3.0 +21 +3.0 +31 +3.0 +12 +2.11686086360521 +22 +2.11686086360521 +32 +3.0 +13 +2.11686086360521 +23 +2.11686086360521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +2.2143383356498 +21 +1.97730561612803 +31 +3.0 +12 +3.0 +22 +2.50226795687895 +32 +3.0 +13 +3.0 +23 +2.50226795687895 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.50226795687895 +31 +3.0 +12 +3.0 +22 +2.795 +32 +3.0 +13 +3.0 +23 +2.795 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.5 +30 +2.795 +11 +3.0 +21 +1.14599166666666 +31 +2.795 +12 +3.0 +22 +1.5 +32 +2.54772991850989 +13 +3.0 +23 +1.5 +33 +2.54772991850989 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +1.79836855106949 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.73223387052482 +22 +2.66751850869864 +32 +3.0 +13 +1.73223387052482 +23 +2.66751850869864 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +3.0 +12 +3.0 +22 +2.795 +32 +2.795 +13 +3.0 +23 +2.795 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +0.878679656440357 +30 +3.0 +11 +2.97426942202063 +21 +0.889337610807109 +31 +3.0 +12 +2.99999999999999 +22 +0.852499999999996 +32 +3.0 +13 +2.99999999999999 +23 +0.852499999999996 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_une +10 +2.97426942202063 +20 +0.889337610807109 +30 +3.0 +11 +3.0 +21 +1.14599166666666 +31 +2.795 +12 +2.99999999999999 +22 +0.852499999999996 +32 +3.0 +13 +2.99999999999999 +23 +0.852499999999996 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.14599166666666 +30 +2.795 +11 +2.97426942202063 +21 +0.889337610807109 +31 +3.0 +12 +2.71678748219945 +22 +1.25796592131777 +32 +3.0 +13 +2.71678748219945 +23 +1.25796592131777 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.14599166666666 +30 +2.795 +11 +2.71678748219945 +21 +1.25796592131777 +31 +3.0 +12 +3.0 +22 +1.5 +32 +2.54772991850989 +13 +3.0 +23 +1.5 +33 +2.54772991850989 +70 +3 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.5 +30 +2.54772991850989 +11 +2.71678748219945 +21 +1.25796592131777 +31 +3.0 +12 +2.54772991850989 +22 +1.5 +32 +3.0 +13 +2.54772991850989 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.5 +30 +2.54772991850989 +11 +2.54772991850989 +21 +1.5 +31 +3.0 +12 +2.41991861092296 +22 +1.68298318869529 +32 +3.0 +13 +2.41991861092296 +23 +1.68298318869529 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +1.5 +30 +2.54772991850989 +11 +2.41991861092296 +21 +1.68298318869529 +31 +3.0 +12 +3.0 +22 +2.11686086360521 +32 +2.11686086360521 +13 +3.0 +23 +2.11686086360521 +33 +2.11686086360521 +70 +3 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +2.41991861092296 +21 +1.68298318869529 +31 +3.0 +12 +2.31262043788199 +22 +1.83659840643228 +32 +3.0 +13 +2.31262043788199 +23 +1.83659840643228 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +2.31262043788199 +21 +1.83659840643228 +31 +3.0 +12 +2.2143383356498 +22 +1.97730561612803 +32 +3.0 +13 +2.2143383356498 +23 +1.97730561612803 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +2.2143383356498 +21 +1.97730561612803 +31 +3.0 +12 +2.11686086360521 +22 +2.11686086360521 +32 +3.0 +13 +2.11686086360521 +23 +2.11686086360521 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +2.11686086360521 +21 +2.11686086360521 +31 +3.0 +12 +2.01224742103046 +22 +2.26663244222472 +32 +3.0 +13 +2.01224742103046 +23 +2.26663244222472 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +2.01224742103046 +21 +2.26663244222472 +31 +3.0 +12 +3.0 +22 +2.795 +32 +1.64318975552969 +13 +3.0 +23 +2.795 +33 +1.64318975552969 +70 +3 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.795 +30 +1.64318975552969 +11 +2.01224742103046 +21 +2.26663244222472 +31 +3.0 +12 +1.89002774674928 +22 +2.44161027590394 +32 +3.0 +13 +1.89002774674928 +23 +2.44161027590394 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.795 +30 +1.64318975552969 +11 +1.89002774674928 +21 +2.44161027590394 +31 +3.0 +12 +1.73223387052482 +22 +2.66751850869864 +32 +3.0 +13 +1.73223387052482 +23 +2.66751850869864 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.795 +30 +1.64318975552969 +11 +1.73223387052482 +21 +2.66751850869864 +31 +3.0 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +2.795 +30 +1.64318975552969 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.705 +22 +3.0 +32 +2.795 +13 +1.705 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +1.705 +20 +3.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +3.0 +22 +2.795 +32 +1.64318975552969 +13 +3.0 +23 +2.795 +33 +1.64318975552969 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +1.5 +11 +1.705 +21 +3.0 +31 +2.795 +12 +2.25 +22 +3.0 +32 +2.25 +13 +2.25 +23 +3.0 +33 +2.25 +70 +13 + 0 +3DFACE + 8 +iso_une +10 +3.0 +20 +3.0 +30 +1.5 +11 +2.25 +21 +3.0 +31 +2.25 +12 +2.795 +22 +3.0 +32 +1.705 +13 +2.795 +23 +3.0 +33 +1.705 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.88313913639479 +20 +2.68116213853163e-16 +30 +2.11686086360521 +11 +0.205 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.88313913639479 +21 +2.68116213853163e-16 +31 +2.11686086360521 +12 +0.679903474903479 +22 +3.11213701008545e-16 +32 +1.97490347490348 +13 +0.679903474903479 +23 +3.11213701008545e-16 +33 +1.97490347490348 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.5 +30 +1.5 +11 +2.99999999999999 +21 +0.647499999999997 +31 +2.795 +12 +3.0 +22 +0.426249999999999 +32 +2.57375 +13 +3.0 +23 +0.426249999999999 +33 +2.57375 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.99999999999999 +20 +0.647499999999997 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 +12 +3.0 +22 +1.14599166666666 +32 +2.795 +13 +3.0 +23 +1.14599166666666 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.14599166666666 +30 +2.795 +11 +3.0 +21 +1.5 +31 +1.5 +12 +3.0 +22 +1.5 +32 +2.54772991850989 +13 +3.0 +23 +1.5 +33 +2.54772991850989 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.705 +30 +0.205 +11 +3.0 +21 +1.5 +31 +1.5 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.705 +31 +0.205 +12 +3.0 +22 +2.25 +32 +0.75 +13 +3.0 +23 +2.25 +33 +0.75 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.64941740918437 +20 +1.80782203615711e-16 +30 +1.64558259081563 +11 +1.5 +21 +0.0 +31 +1.5 +12 +2.54772991850989 +22 +1.64788632875096e-16 +32 +1.5 +13 +2.54772991850989 +23 +1.64788632875096e-16 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +0.0 +30 +1.5 +11 +2.64941740918437 +21 +1.80782203615711e-16 +31 +1.64558259081563 +12 +2.1475 +22 +0.0 +32 +2.1475 +13 +2.1475 +23 +0.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +1.5 +21 +1.37306724264545e-16 +31 +2.5477299185099 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.37306724264545e-16 +30 +2.5477299185099 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +1.64558259081562 +22 +1.06434958002245e-16 +32 +2.64941740918438 +13 +1.64558259081562 +23 +1.06434958002245e-16 +33 +2.64941740918438 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.57375 +20 +1.17961196366424e-16 +30 +2.57375 +11 +1.64558259081562 +21 +1.06434958002245e-16 +31 +2.64941740918438 +12 +2.1475 +22 +0.0 +32 +2.1475 +13 +2.1475 +23 +0.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.64558259081562 +20 +1.06434958002245e-16 +30 +2.64941740918438 +11 +2.57375 +21 +1.17961196366424e-16 +31 +2.57375 +12 +2.3525 +22 +5.67320709797468e-17 +32 +2.795 +13 +2.3525 +23 +5.67320709797468e-17 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.64558259081562 +20 +1.06434958002245e-16 +30 +2.64941740918438 +11 +2.3525 +21 +5.67320709797468e-17 +31 +2.795 +12 +1.85400833333332 +22 +6.2236879303386e-17 +32 +2.795 +13 +1.85400833333332 +23 +6.2236879303386e-17 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.97490347490348 +20 +7.46935760775808e-17 +30 +0.679903474903477 +11 +1.5 +21 +0.0 +31 +0.205 +12 +1.64318975552969 +22 +2.25211131595965e-17 +32 +0.205 +13 +1.64318975552969 +23 +2.25211131595965e-17 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +0.452270081490106 +30 +1.5 +11 +3.0 +21 +0.205 +31 +2.3525 +12 +3.0 +22 +0.205 +32 +1.85400833333334 +13 +3.0 +23 +0.205 +33 +1.85400833333334 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +0.205 +30 +2.3525 +11 +3.0 +21 +0.452270081490106 +31 +1.5 +12 +3.0 +22 +0.426249999999999 +32 +2.57375 +13 +3.0 +23 +0.426249999999999 +33 +2.57375 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +0.426249999999999 +30 +2.57375 +11 +3.0 +21 +0.452270081490106 +31 +1.5 +12 +3.0 +22 +1.5 +32 +1.5 +13 +3.0 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.14599166666666 +30 +2.795 +11 +2.99999999999999 +21 +0.852499999999996 +31 +3.0 +12 +2.99999999999999 +22 +0.647499999999997 +32 +2.795 +13 +2.99999999999999 +23 +0.647499999999997 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +0.452270081490106 +31 +1.5 +12 +3.0 +22 +0.883139136394791 +32 +0.883139136394791 +13 +3.0 +23 +0.883139136394791 +33 +0.883139136394791 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.35681024447031 +30 +0.205 +11 +3.0 +21 +1.5 +31 +1.5 +12 +3.0 +22 +0.883139136394791 +32 +0.883139136394791 +13 +3.0 +23 +0.883139136394791 +33 +0.883139136394791 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.5 +30 +1.5 +11 +3.0 +21 +1.35681024447031 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.205 +13 +3.0 +23 +1.5 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.772725344843521 +20 +1.72061635471339 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.205 +20 +0.0 +30 +1.5 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.42550697334953 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.64826864473226 +20 +2.24539681310645 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +3.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +0.0 +30 +1.5 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +1.295 +21 +2.39623136148263e-17 +31 +0.205 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.295 +20 +2.39623136148263e-17 +30 +0.205 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +0.75 +22 +1.38777878078145e-17 +32 +0.75 +13 +0.75 +23 +1.38777878078145e-17 +33 +0.75 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.91251205544432 +20 +1.98213889596437 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +3.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +3.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.743659607729131 +20 +1.42550697334953 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +3.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.82973983909525 +20 +1.14173848001224 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.91251205544432 +20 +1.01786110403563 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.85826151998776 +20 +2.17026016090475 +30 +3.0 +11 +1.89002774674928 +21 +2.44161027590394 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.89002774674928 +20 +2.44161027590394 +30 +3.0 +11 +1.85826151998776 +21 +2.17026016090475 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.89002774674928 +20 +2.44161027590394 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +2.01224742103046 +22 +2.26663244222472 +32 +3.0 +13 +2.01224742103046 +23 +2.26663244222472 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +3.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.17026016090475 +20 +1.85826151998776 +30 +3.0 +11 +2.2143383356498 +21 +1.97730561612803 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.2143383356498 +20 +1.97730561612803 +30 +3.0 +11 +2.17026016090475 +21 +1.85826151998776 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.2143383356498 +20 +1.97730561612803 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +2.31262043788199 +22 +1.83659840643228 +32 +3.0 +13 +2.31262043788199 +23 +1.83659840643228 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.31701681130471 +20 +0.580081389077034 +30 +3.0 +11 +1.20916059140253 +21 +0.797851555291422 +31 +3.0 +12 +1.16340159356772 +22 +0.687379562118006 +32 +3.0 +13 +1.16340159356772 +23 +0.687379562118006 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.20916059140253 +20 +0.797851555291422 +30 +3.0 +11 +1.31701681130471 +21 +0.580081389077034 +31 +3.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +3.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.31701681130471 +21 +0.580081389077034 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +1.98213889596437 +21 +0.91251205544432 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.98213889596437 +20 +0.91251205544432 +30 +3.0 +11 +2.36016784552609 +21 +0.212667845526093 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +2.36016784552609 +21 +0.212667845526093 +31 +3.0 +12 +2.57375 +22 +0.426250000000001 +32 +3.0 +13 +2.57375 +23 +0.426250000000001 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.57449302665047 +20 +2.25634039227087 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.73223387052482 +22 +2.66751850869864 +32 +3.0 +13 +1.73223387052482 +23 +2.66751850869864 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.73223387052482 +20 +2.66751850869864 +30 +3.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +3.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +3.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.27938364528661 +20 +0.772725344843521 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +3.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +3.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +0.0 +30 +1.5 +11 +0.205 +21 +3.79326200080262e-18 +31 +1.295 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +3.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.16340159356772 +20 +0.687379562118006 +30 +3.0 +11 +1.0777666229051 +21 +0.868083094650066 +31 +3.0 +12 +1.02269438387197 +22 +0.78566166435019 +32 +3.0 +13 +1.02269438387197 +23 +0.78566166435019 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.0777666229051 +20 +0.868083094650066 +30 +3.0 +11 +1.16340159356772 +21 +0.687379562118006 +31 +3.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +3.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +1.16340159356772 +21 +0.687379562118006 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.08748794455568 +20 +1.98213889596437 +30 +3.0 +11 +2.11686086360521 +21 +2.11686086360521 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.11686086360521 +20 +2.11686086360521 +30 +3.0 +11 +2.08748794455568 +21 +1.98213889596437 +31 +3.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +3.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.11686086360521 +20 +2.11686086360521 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +2.2143383356498 +22 +1.97730561612803 +32 +3.0 +13 +2.2143383356498 +23 +1.97730561612803 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.71678748219945 +20 +1.25796592131777 +30 +3.0 +11 +2.25634039227087 +21 +1.42550697334953 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.25634039227087 +20 +1.42550697334953 +30 +3.0 +11 +2.71678748219945 +21 +1.25796592131777 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.26 +20 +1.5 +30 +3.0 +11 +2.71678748219945 +21 +1.25796592131777 +31 +3.0 +12 +2.54772991850989 +22 +1.5 +32 +3.0 +13 +2.54772991850989 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.772725344843521 +20 +1.27938364528661 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.797851555291422 +20 +1.79083940859747 +30 +3.0 +11 +0.600815724465256 +21 +2.10081572446526 +31 +3.0 +12 +0.439339828220179 +22 +1.93933982822018 +32 +3.0 +13 +0.439339828220179 +23 +1.93933982822018 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.600815724465256 +20 +2.10081572446526 +30 +3.0 +11 +0.797851555291422 +21 +1.79083940859747 +31 +3.0 +12 +0.82973983909525 +22 +1.85826151998776 +32 +3.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.600815724465256 +20 +2.10081572446526 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.558389724096057 +20 +1.10997225325071 +30 +3.0 +11 +0.754603186893545 +21 +1.35173135526774 +31 +3.0 +12 +0.332481491301358 +22 +1.26776612947518 +32 +3.0 +13 +0.332481491301358 +23 +1.26776612947518 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.754603186893545 +20 +1.35173135526774 +30 +3.0 +11 +0.558389724096057 +21 +1.10997225325071 +31 +3.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +3.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +0.772725344843521 +20 +1.27938364528661 +30 +3.0 +11 +0.558389724096057 +21 +1.10997225325071 +31 +3.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +3.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.733367557775275 +20 +0.987752578969537 +30 +3.0 +11 +0.797851555291422 +21 +1.20916059140253 +31 +3.0 +12 +0.558389724096057 +22 +1.10997225325071 +32 +3.0 +13 +0.558389724096057 +23 +1.10997225325071 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.797851555291422 +20 +1.20916059140253 +30 +3.0 +11 +0.733367557775275 +21 +0.987752578969537 +31 +3.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +3.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +0.82973983909525 +20 +1.14173848001224 +30 +3.0 +11 +0.733367557775275 +21 +0.987752578969537 +31 +3.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +3.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.97426942202063 +20 +0.889337610807109 +30 +3.0 +11 +2.22727465515648 +21 +1.27938364528661 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.22727465515648 +20 +1.27938364528661 +30 +3.0 +11 +2.97426942202063 +21 +0.889337610807109 +31 +3.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +3.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.24539681310646 +20 +1.35173135526774 +30 +3.0 +11 +2.97426942202063 +21 +0.889337610807109 +31 +3.0 +12 +2.71678748219945 +22 +1.25796592131777 +32 +3.0 +13 +2.71678748219945 +23 +1.25796592131777 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.868083094650066 +20 +1.9222333770949 +30 +3.0 +11 +0.75 +21 +2.25 +31 +3.0 +12 +0.600815724465256 +22 +2.10081572446526 +32 +3.0 +13 +0.600815724465256 +23 +2.10081572446526 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.75 +20 +2.25 +30 +3.0 +11 +0.868083094650066 +21 +1.9222333770949 +31 +3.0 +12 +0.91251205544432 +22 +1.98213889596437 +32 +3.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.75 +20 +2.25 +30 +3.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.332481491301358 +20 +1.26776612947518 +30 +3.0 +11 +0.74 +21 +1.5 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.74 +20 +1.5 +30 +3.0 +11 +0.332481491301358 +21 +1.26776612947518 +31 +3.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +3.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +0.743659607729131 +20 +1.42550697334953 +30 +3.0 +11 +0.332481491301358 +21 +1.26776612947518 +31 +3.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +3.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.57375 +20 +0.426250000000001 +30 +3.0 +11 +2.08748794455568 +21 +1.01786110403563 +31 +3.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +3.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.08748794455568 +20 +1.01786110403563 +30 +3.0 +11 +2.57375 +21 +0.426250000000001 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.57375 +21 +0.426250000000001 +31 +3.0 +12 +2.7873321544739 +22 +0.639832154473909 +32 +3.0 +13 +2.7873321544739 +23 +0.639832154473909 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.7873321544739 +20 +0.639832154473909 +30 +3.0 +11 +2.17026016090475 +21 +1.14173848001224 +31 +3.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +3.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.17026016090475 +20 +1.14173848001224 +30 +3.0 +11 +2.7873321544739 +21 +0.639832154473909 +31 +3.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +3.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.20214844470858 +20 +1.20916059140253 +30 +3.0 +11 +2.7873321544739 +21 +0.639832154473909 +31 +3.0 +12 +2.97426942202063 +22 +0.889337610807109 +32 +3.0 +13 +2.97426942202063 +23 +0.889337610807109 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.97426942202063 +20 +0.889337610807109 +30 +3.0 +11 +2.7873321544739 +21 +0.639832154473909 +31 +3.0 +12 +2.99999999999999 +22 +0.852499999999996 +32 +3.0 +13 +2.99999999999999 +23 +0.852499999999996 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.74 +20 +1.5 +30 +3.0 +11 +0.248866021560526 +21 +1.74886602156053 +31 +3.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.248866021560526 +20 +1.74886602156053 +30 +3.0 +11 +0.74 +21 +1.5 +31 +3.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +3.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.248866021560526 +20 +1.74886602156053 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +0.452270081490099 +30 +3.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +3.0 +12 +1.31701681130471 +22 +0.580081389077034 +32 +3.0 +13 +1.31701681130471 +23 +0.580081389077034 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.35173135526774 +20 +0.754603186893545 +30 +3.0 +11 +1.5 +21 +0.452270081490099 +31 +3.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +3.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.42550697334953 +20 +0.743659607729131 +30 +3.0 +11 +1.5 +21 +0.452270081490099 +31 +3.0 +12 +1.5 +22 +0.74 +32 +3.0 +13 +1.5 +23 +0.74 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.5 +30 +0.205 +11 +3.0 +21 +1.35681024447031 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +3.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.01786110403563 +20 +2.08748794455568 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.1106623891929 +20 +0.0257305779793383 +30 +3.0 +11 +1.85826151998776 +21 +0.82973983909525 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.85826151998776 +20 +0.82973983909525 +30 +3.0 +11 +2.1106623891929 +21 +0.0257305779793383 +31 +3.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +3.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +2.1106623891929 +21 +0.0257305779793383 +31 +3.0 +12 +2.36016784552609 +22 +0.212667845526093 +32 +3.0 +13 +2.36016784552609 +23 +0.212667845526093 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +2.1106623891929 +21 +0.0257305779793383 +31 +3.0 +12 +2.14749999999999 +22 +0.0 +32 +3.0 +13 +2.14749999999999 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.74203407868223 +20 +0.283212517800531 +30 +3.0 +11 +1.72061635471339 +21 +0.772725344843521 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.72061635471339 +20 +0.772725344843521 +30 +3.0 +11 +1.74203407868223 +21 +0.283212517800531 +31 +3.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +3.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.74203407868223 +21 +0.283212517800531 +31 +3.0 +12 +2.1106623891929 +22 +0.0257305779793383 +32 +3.0 +13 +2.1106623891929 +23 +0.0257305779793383 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.0777666229051 +20 +2.13191690534993 +30 +3.0 +11 +1.06066017177982 +21 +2.56066017177982 +31 +3.0 +12 +0.899184275534744 +22 +2.39918427553474 +32 +3.0 +13 +0.899184275534744 +23 +2.39918427553474 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.06066017177982 +20 +2.56066017177982 +30 +3.0 +11 +1.0777666229051 +21 +2.13191690534993 +31 +3.0 +12 +1.14173848001224 +22 +2.17026016090475 +32 +3.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.06066017177982 +20 +2.56066017177982 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.20916059140253 +20 +2.20214844470858 +30 +3.0 +11 +1.25113397843947 +21 +2.75113397843947 +31 +3.0 +12 +1.06066017177982 +22 +2.56066017177982 +32 +3.0 +13 +1.06066017177982 +23 +2.56066017177982 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.25113397843947 +20 +2.75113397843947 +30 +3.0 +11 +1.20916059140253 +21 +2.20214844470858 +31 +3.0 +12 +1.27938364528661 +22 +2.22727465515648 +32 +3.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.25113397843947 +20 +2.75113397843947 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.34882660079146 +22 +2.26 +32 +3.0 +13 +1.34882660079146 +23 +2.26 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.34882660079146 +20 +2.26 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +2.795 +31 +1.5 +12 +3.0 +22 +2.795 +32 +1.295 +13 +3.0 +23 +2.795 +33 +1.295 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.705 +30 +0.205 +11 +3.0 +21 +1.5 +31 +0.205 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.25 +30 +0.75 +11 +3.0 +21 +2.795 +31 +1.5 +12 +3.0 +22 +1.5 +32 +1.5 +13 +3.0 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +2.25 +31 +0.75 +12 +3.0 +22 +2.795 +32 +1.295 +13 +3.0 +23 +2.795 +33 +1.295 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.74203407868223 +20 +0.283212517800531 +30 +3.0 +11 +1.5 +21 +0.74 +31 +3.0 +12 +1.5 +22 +0.452270081490099 +32 +3.0 +13 +1.5 +23 +0.452270081490099 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +0.74 +30 +3.0 +11 +1.74203407868223 +21 +0.283212517800531 +31 +3.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +3.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.57449302665047 +20 +0.743659607729131 +30 +3.0 +11 +1.74203407868223 +21 +0.283212517800531 +31 +3.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +3.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.72061635471339 +20 +2.22727465515648 +30 +3.0 +11 +1.73223387052482 +21 +2.66751850869864 +31 +3.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +3.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.73223387052482 +20 +2.66751850869864 +30 +3.0 +11 +1.72061635471339 +21 +2.22727465515648 +31 +3.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +3.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.73223387052482 +20 +2.66751850869864 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.89002774674928 +22 +2.44161027590394 +32 +3.0 +13 +1.89002774674928 +23 +2.44161027590394 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.02269438387197 +20 +0.78566166435019 +30 +3.0 +11 +0.962598846298224 +21 +0.962598846298224 +31 +3.0 +12 +0.883139136394789 +22 +0.883139136394789 +32 +3.0 +13 +0.883139136394789 +23 +0.883139136394789 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.962598846298224 +20 +0.962598846298224 +30 +3.0 +11 +1.02269438387197 +21 +0.78566166435019 +31 +3.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +3.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.01786110403563 +20 +0.91251205544432 +30 +3.0 +11 +1.02269438387197 +21 +0.78566166435019 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.14173848001224 +20 +2.17026016090475 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.79083940859747 +20 +2.20214844470858 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +3.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.13191690534993 +20 +1.9222333770949 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +3.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.34882660079146 +20 +2.26 +30 +3.0 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.25113397843947 +22 +2.75113397843947 +32 +3.0 +13 +1.25113397843947 +23 +2.75113397843947 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.34882660079146 +21 +2.26 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.35173135526774 +21 +2.24539681310645 +31 +3.0 +12 +1.42550697334953 +22 +2.25634039227087 +32 +3.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +3.0 +12 +1.5 +22 +2.26 +32 +3.0 +13 +1.5 +23 +2.26 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.64826864473226 +20 +0.754603186893545 +30 +3.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.79083940859747 +20 +0.797851555291422 +30 +3.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +3.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +3.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +3.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +3.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.27938364528661 +20 +2.22727465515648 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +3.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.24539681310645 +20 +1.64826864473226 +30 +3.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.20214844470858 +20 +1.79083940859747 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +3.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +3.0 +21 +1.5 +31 +2.54772991850989 +12 +3.0 +22 +1.5 +32 +1.5 +13 +3.0 +23 +1.5 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.795 +30 +1.5 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +3.0 +22 +1.5 +32 +1.5 +13 +3.0 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +3.0 +21 +2.795 +31 +1.5 +12 +3.0 +22 +2.795 +32 +1.64318975552969 +13 +3.0 +23 +2.795 +33 +1.64318975552969 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +3.0 +30 +1.5 +11 +3.0 +21 +2.795 +31 +1.64318975552969 +12 +3.0 +22 +2.795 +32 +1.5 +13 +3.0 +23 +2.795 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +0.205 +20 +4.11920172793637e-16 +30 +1.64318975552968 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.37306724264545e-16 +30 +2.5477299185099 +11 +0.88313913639479 +21 +2.68116213853163e-16 +31 +2.11686086360521 +12 +1.5 +22 +0.0 +32 +1.5 +13 +1.5 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +0.205 +30 +2.3525 +11 +2.99999999999999 +21 +4.71844785465692e-16 +31 +2.1475 +12 +3.0 +22 +0.205 +32 +1.85400833333334 +13 +3.0 +23 +0.205 +33 +1.85400833333334 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +1.64318975552969 +20 +2.25211131595965e-17 +30 +0.205 +11 +1.5 +21 +0.0 +31 +0.205 +12 +1.5 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +0.0 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +0.679903474903479 +20 +3.11213701008545e-16 +30 +1.97490347490348 +11 +0.205 +21 +4.11920172793637e-16 +31 +1.64318975552968 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +0.8525 +20 +0.0 +30 +0.8525 +11 +0.205 +21 +3.79326200080262e-18 +31 +1.295 +12 +0.75 +22 +1.38777878078145e-17 +32 +0.75 +13 +0.75 +23 +1.38777878078145e-17 +33 +0.75 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.205 +20 +3.79326200080262e-18 +30 +1.295 +11 +0.8525 +21 +0.0 +31 +0.8525 +12 +0.205 +22 +0.0 +32 +1.5 +13 +0.205 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.97490347490348 +20 +7.46935760775808e-17 +30 +0.679903474903477 +11 +1.5 +21 +0.0 +31 +1.5 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +0.0 +30 +1.5 +11 +1.97490347490348 +21 +7.46935760775808e-17 +31 +0.679903474903477 +12 +2.11686086360521 +22 +9.70208606166603e-17 +32 +0.883139136394791 +13 +2.11686086360521 +23 +9.70208606166603e-17 +33 +0.883139136394791 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.795 +20 +1.79190321753102e-16 +30 +2.35249999999999 +11 +2.795 +21 +2.03679665726025e-16 +31 +1.85400833333335 +12 +2.99999999999999 +22 +4.71844785465692e-16 +32 +2.1475 +13 +2.99999999999999 +23 +4.71844785465692e-16 +33 +2.1475 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +0.0 +30 +1.5 +11 +2.11686086360521 +21 +9.70208606166603e-17 +31 +0.883139136394791 +12 +2.54772991850989 +22 +1.64788632875096e-16 +32 +1.5 +13 +2.54772991850989 +23 +1.64788632875096e-16 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +2.795 +20 +2.03679665726025e-16 +30 +1.85400833333335 +11 +2.1475 +21 +0.0 +31 +2.1475 +12 +2.64941740918437 +22 +1.80782203615711e-16 +32 +1.64558259081563 +13 +2.64941740918437 +23 +1.80782203615711e-16 +33 +1.64558259081563 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +2.795 +21 +2.03679665726025e-16 +31 +1.85400833333335 +12 +2.795 +22 +1.79190321753102e-16 +32 +2.35249999999999 +13 +2.795 +23 +1.79190321753102e-16 +33 +2.35249999999999 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.1475 +20 +0.0 +30 +2.1475 +11 +2.795 +21 +1.79190321753102e-16 +31 +2.35249999999999 +12 +2.57375 +22 +1.17961196366424e-16 +32 +2.57375 +13 +2.57375 +23 +1.17961196366424e-16 +33 +2.57375 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.14749999999999 +20 +0.0 +30 +3.0 +11 +1.85400833333332 +21 +6.2236879303386e-17 +31 +2.795 +12 +2.3525 +22 +5.67320709797468e-17 +32 +2.795 +13 +2.3525 +23 +5.67320709797468e-17 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +3.0 +12 +0.74 +22 +1.5 +32 +3.0 +13 +0.74 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.743659607729131 +20 +1.57449302665047 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +3.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.13191690534993 +20 +1.0777666229051 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +3.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.98213889596437 +20 +2.08748794455568 +30 +3.0 +11 +2.01224742103046 +21 +2.26663244222472 +31 +3.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +3.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.01224742103046 +20 +2.26663244222472 +30 +3.0 +11 +1.98213889596437 +21 +2.08748794455568 +31 +3.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +3.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.01224742103046 +20 +2.26663244222472 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +2.11686086360521 +22 +2.11686086360521 +32 +3.0 +13 +2.11686086360521 +23 +2.11686086360521 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.03740115370178 +20 +2.03740115370178 +30 +3.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.9222333770949 +20 +2.13191690534993 +30 +3.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +3.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +3.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.25634039227087 +20 +1.57449302665047 +30 +3.0 +11 +2.41991861092296 +21 +1.68298318869529 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.41991861092296 +20 +1.68298318869529 +30 +3.0 +11 +2.25634039227087 +21 +1.57449302665047 +31 +3.0 +12 +2.26 +22 +1.5 +32 +3.0 +13 +2.26 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.41991861092296 +20 +1.68298318869529 +30 +3.0 +11 +2.26 +21 +1.5 +31 +3.0 +12 +2.54772991850989 +22 +1.5 +32 +3.0 +13 +2.54772991850989 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.22727465515648 +20 +1.72061635471339 +30 +3.0 +11 +2.31262043788199 +21 +1.83659840643228 +31 +3.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +3.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.31262043788199 +20 +1.83659840643228 +30 +3.0 +11 +2.22727465515648 +21 +1.72061635471339 +31 +3.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +3.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.31262043788199 +20 +1.83659840643228 +30 +3.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +3.0 +12 +2.41991861092296 +22 +1.68298318869529 +32 +3.0 +13 +2.41991861092296 +23 +1.68298318869529 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.64826864473226 +20 +2.24539681310645 +30 +3.0 +11 +1.5 +21 +2.26 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +2.26 +30 +3.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +3.0 +12 +1.57449302665047 +22 +2.25634039227087 +32 +3.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.82973983909525 +20 +1.85826151998776 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +3.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.754603186893545 +20 +1.64826864473226 +30 +3.0 +11 +0.439339828220179 +21 +1.93933982822018 +31 +3.0 +12 +0.248866021560526 +22 +1.74886602156053 +32 +3.0 +13 +0.248866021560526 +23 +1.74886602156053 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.439339828220179 +20 +1.93933982822018 +30 +3.0 +11 +0.754603186893545 +21 +1.64826864473226 +31 +3.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +3.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.439339828220179 +20 +1.93933982822018 +30 +3.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +3.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +3.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.14173848001224 +20 +0.82973983909525 +30 +3.0 +11 +1.5 +21 +1.5 +31 +3.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +3.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +1.5 +30 +3.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +3.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +3.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.295 +20 +2.39623136148263e-17 +30 +0.205 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.5 +22 +0.0 +32 +0.205 +13 +1.5 +23 +0.0 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_base_a +10 +0.883139136394789 +20 +0.883139136394789 +30 +3.0 +11 +0.868083094650066 +21 +1.0777666229051 +31 +3.0 +12 +0.733367557775275 +22 +0.987752578969537 +32 +3.0 +13 +0.733367557775275 +23 +0.987752578969537 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.868083094650066 +20 +1.0777666229051 +30 +3.0 +11 +0.883139136394789 +21 +0.883139136394789 +31 +3.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +3.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +0.91251205544432 +20 +1.01786110403563 +30 +3.0 +11 +0.883139136394789 +21 +0.883139136394789 +31 +3.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +3.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.9222333770949 +20 +0.868083094650066 +30 +3.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +3.0 +12 +1.5 +22 +1.5 +32 +3.0 +13 +1.5 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.03740115370178 +20 +0.962598846298224 +30 +3.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +3.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +3.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.962598846298224 +20 +2.03740115370178 +30 +3.0 +11 +0.899184275534744 +21 +2.39918427553474 +31 +3.0 +12 +0.75 +22 +2.25 +32 +3.0 +13 +0.75 +23 +2.25 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.899184275534744 +20 +2.39918427553474 +30 +3.0 +11 +0.962598846298224 +21 +2.03740115370178 +31 +3.0 +12 +1.01786110403563 +22 +2.08748794455568 +32 +3.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.899184275534744 +20 +2.39918427553474 +30 +3.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +3.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +3.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.14749999999999 +20 +0.0 +30 +3.0 +11 +2.1106623891929 +21 +0.0257305779793383 +31 +3.0 +12 +1.85400833333332 +22 +6.2236879303386e-17 +32 +2.795 +13 +1.85400833333332 +23 +6.2236879303386e-17 +33 +2.795 +70 +2 + 0 +3DFACE + 8 +iso_base_a +10 +0.205 +20 +4.11920172793637e-16 +30 +1.64318975552968 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.205 +21 +4.11920172793637e-16 +31 +1.64318975552968 +12 +0.679903474903479 +22 +3.11213701008545e-16 +32 +1.97490347490348 +13 +0.679903474903479 +23 +3.11213701008545e-16 +33 +1.97490347490348 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.679903474903479 +21 +3.11213701008545e-16 +31 +1.97490347490348 +12 +0.88313913639479 +22 +2.68116213853163e-16 +32 +2.11686086360521 +13 +0.88313913639479 +23 +2.68116213853163e-16 +33 +2.11686086360521 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.88313913639479 +21 +2.68116213853163e-16 +31 +2.11686086360521 +12 +1.5 +22 +1.37306724264545e-16 +32 +2.5477299185099 +13 +1.5 +23 +1.37306724264545e-16 +33 +2.5477299185099 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.5 +21 +1.37306724264545e-16 +31 +2.5477299185099 +12 +1.64558259081562 +22 +1.06434958002245e-16 +32 +2.64941740918438 +13 +1.64558259081562 +23 +1.06434958002245e-16 +33 +2.64941740918438 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.64558259081562 +21 +1.06434958002245e-16 +31 +2.64941740918438 +12 +1.85400833333332 +22 +6.2236879303386e-17 +32 +2.795 +13 +1.85400833333332 +23 +6.2236879303386e-17 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.85400833333332 +21 +6.2236879303386e-17 +31 +2.795 +12 +2.1106623891929 +22 +0.0257305779793383 +32 +3.0 +13 +2.1106623891929 +23 +0.0257305779793383 +33 +3.0 +70 +15 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +2.1106623891929 +21 +0.0257305779793383 +31 +3.0 +12 +1.74203407868223 +22 +0.283212517800531 +32 +3.0 +13 +1.74203407868223 +23 +0.283212517800531 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.74203407868223 +21 +0.283212517800531 +31 +3.0 +12 +1.5 +22 +0.452270081490099 +32 +3.0 +13 +1.5 +23 +0.452270081490099 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.5 +21 +0.452270081490099 +31 +3.0 +12 +1.31701681130471 +22 +0.580081389077034 +32 +3.0 +13 +1.31701681130471 +23 +0.580081389077034 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.31701681130471 +21 +0.580081389077034 +31 +3.0 +12 +1.16340159356772 +22 +0.687379562118006 +32 +3.0 +13 +1.16340159356772 +23 +0.687379562118006 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.16340159356772 +21 +0.687379562118006 +31 +3.0 +12 +1.02269438387197 +22 +0.78566166435019 +32 +3.0 +13 +1.02269438387197 +23 +0.78566166435019 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +1.02269438387197 +21 +0.78566166435019 +31 +3.0 +12 +0.883139136394789 +22 +0.883139136394789 +32 +3.0 +13 +0.883139136394789 +23 +0.883139136394789 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.883139136394789 +21 +0.883139136394789 +31 +3.0 +12 +0.733367557775275 +22 +0.987752578969537 +32 +3.0 +13 +0.733367557775275 +23 +0.987752578969537 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.733367557775275 +21 +0.987752578969537 +31 +3.0 +12 +0.558389724096057 +22 +1.10997225325071 +32 +3.0 +13 +0.558389724096057 +23 +1.10997225325071 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +0.0 +20 +1.5 +30 +3.0 +11 +0.558389724096057 +21 +1.10997225325071 +31 +3.0 +12 +0.332481491301358 +22 +1.26776612947518 +32 +3.0 +13 +0.332481491301358 +23 +1.26776612947518 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.14599166666666 +30 +2.795 +11 +2.97426942202063 +21 +0.889337610807109 +31 +3.0 +12 +2.99999999999999 +22 +0.852499999999996 +32 +3.0 +13 +2.99999999999999 +23 +0.852499999999996 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.97426942202063 +20 +0.889337610807109 +30 +3.0 +11 +3.0 +21 +1.14599166666666 +31 +2.795 +12 +2.71678748219945 +22 +1.25796592131777 +32 +3.0 +13 +2.71678748219945 +23 +1.25796592131777 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.71678748219945 +20 +1.25796592131777 +30 +3.0 +11 +3.0 +21 +1.14599166666666 +31 +2.795 +12 +3.0 +22 +1.5 +32 +2.54772991850989 +13 +3.0 +23 +1.5 +33 +2.54772991850989 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.71678748219945 +20 +1.25796592131777 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.54772991850989 +12 +2.54772991850989 +22 +1.5 +32 +3.0 +13 +2.54772991850989 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.54772991850989 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.5 +31 +2.54772991850989 +12 +3.0 +22 +2.11686086360521 +32 +2.11686086360521 +13 +3.0 +23 +2.11686086360521 +33 +2.11686086360521 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.54772991850989 +20 +1.5 +30 +3.0 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +2.41991861092296 +22 +1.68298318869529 +32 +3.0 +13 +2.41991861092296 +23 +1.68298318869529 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.41991861092296 +20 +1.68298318869529 +30 +3.0 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +2.31262043788199 +22 +1.83659840643228 +32 +3.0 +13 +2.31262043788199 +23 +1.83659840643228 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.31262043788199 +20 +1.83659840643228 +30 +3.0 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +2.2143383356498 +22 +1.97730561612803 +32 +3.0 +13 +2.2143383356498 +23 +1.97730561612803 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.2143383356498 +20 +1.97730561612803 +30 +3.0 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +2.11686086360521 +22 +2.11686086360521 +32 +3.0 +13 +2.11686086360521 +23 +2.11686086360521 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.11686086360521 +20 +2.11686086360521 +30 +3.0 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +2.01224742103046 +22 +2.26663244222472 +32 +3.0 +13 +2.01224742103046 +23 +2.26663244222472 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.01224742103046 +20 +2.26663244222472 +30 +3.0 +11 +3.0 +21 +2.11686086360521 +31 +2.11686086360521 +12 +3.0 +22 +2.795 +32 +1.64318975552969 +13 +3.0 +23 +2.795 +33 +1.64318975552969 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.01224742103046 +20 +2.26663244222472 +30 +3.0 +11 +3.0 +21 +2.795 +31 +1.64318975552969 +12 +1.89002774674928 +22 +2.44161027590394 +32 +3.0 +13 +1.89002774674928 +23 +2.44161027590394 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.89002774674928 +20 +2.44161027590394 +30 +3.0 +11 +3.0 +21 +2.795 +31 +1.64318975552969 +12 +1.73223387052482 +22 +2.66751850869864 +32 +3.0 +13 +1.73223387052482 +23 +2.66751850869864 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.73223387052482 +20 +2.66751850869864 +30 +3.0 +11 +3.0 +21 +2.795 +31 +1.64318975552969 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +3.0 +21 +2.795 +31 +1.64318975552969 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.295 +20 +2.39623136148263e-17 +30 +0.205 +11 +3.0 +21 +1.5 +31 +0.0 +12 +1.5 +22 +5.55111512312578e-17 +32 +0.0 +13 +1.5 +23 +5.55111512312578e-17 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.5 +30 +0.0 +11 +1.295 +21 +2.39623136148263e-17 +31 +0.205 +12 +3.0 +22 +1.705 +32 +0.205 +13 +3.0 +23 +1.705 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.705 +30 +0.205 +11 +1.295 +21 +2.39623136148263e-17 +31 +0.205 +12 +0.75 +22 +1.38777878078145e-17 +32 +0.75 +13 +0.75 +23 +1.38777878078145e-17 +33 +0.75 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +1.705 +30 +0.205 +11 +0.75 +21 +1.38777878078145e-17 +31 +0.75 +12 +3.0 +22 +2.25 +32 +0.75 +13 +3.0 +23 +2.25 +33 +0.75 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.25 +30 +0.75 +11 +0.75 +21 +1.38777878078145e-17 +31 +0.75 +12 +0.205 +22 +3.79326200080262e-18 +32 +1.295 +13 +0.205 +23 +3.79326200080262e-18 +33 +1.295 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.25 +30 +0.75 +11 +0.205 +21 +3.79326200080262e-18 +31 +1.295 +12 +3.0 +22 +2.795 +32 +1.295 +13 +3.0 +23 +2.795 +33 +1.295 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.795 +30 +1.295 +11 +0.205 +21 +3.79326200080262e-18 +31 +1.295 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +2.795 +30 +1.295 +11 +0.0 +21 +0.0 +31 +1.5 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +3.0 +30 +1.5 +11 +0.0 +21 +0.0 +31 +1.5 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +3.0 +30 +1.5 +11 +0.0 +21 +1.5 +31 +3.0 +12 +1.5 +22 +3.0 +32 +3.0 +13 +1.5 +23 +3.0 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.0 +21 +1.5 +31 +3.0 +12 +0.248866021560526 +22 +1.74886602156053 +32 +3.0 +13 +0.248866021560526 +23 +1.74886602156053 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.248866021560526 +21 +1.74886602156053 +31 +3.0 +12 +0.439339828220179 +22 +1.93933982822018 +32 +3.0 +13 +0.439339828220179 +23 +1.93933982822018 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.439339828220179 +21 +1.93933982822018 +31 +3.0 +12 +0.600815724465256 +22 +2.10081572446526 +32 +3.0 +13 +0.600815724465256 +23 +2.10081572446526 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.600815724465256 +21 +2.10081572446526 +31 +3.0 +12 +0.75 +22 +2.25 +32 +3.0 +13 +0.75 +23 +2.25 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.75 +21 +2.25 +31 +3.0 +12 +0.899184275534744 +22 +2.39918427553474 +32 +3.0 +13 +0.899184275534744 +23 +2.39918427553474 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.899184275534744 +21 +2.39918427553474 +31 +3.0 +12 +1.06066017177982 +22 +2.56066017177982 +32 +3.0 +13 +1.06066017177982 +23 +2.56066017177982 +33 +3.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.06066017177982 +21 +2.56066017177982 +31 +3.0 +12 +1.25113397843947 +22 +2.75113397843947 +32 +3.0 +13 +1.25113397843947 +23 +2.75113397843947 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.97490347490348 +21 +7.46935760775808e-17 +31 +0.679903474903477 +12 +1.64318975552969 +22 +2.25211131595965e-17 +32 +0.205 +13 +1.64318975552969 +23 +2.25211131595965e-17 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +1.97490347490348 +20 +7.46935760775808e-17 +30 +0.679903474903477 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +1.97490347490348 +20 +7.46935760775808e-17 +30 +0.679903474903477 +11 +3.0 +21 +1.5 +31 +0.0 +12 +2.11686086360521 +22 +9.70208606166603e-17 +32 +0.883139136394791 +13 +2.11686086360521 +23 +9.70208606166603e-17 +33 +0.883139136394791 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.11686086360521 +20 +9.70208606166603e-17 +30 +0.883139136394791 +11 +3.0 +21 +1.5 +31 +0.0 +12 +2.54772991850989 +22 +1.64788632875096e-16 +32 +1.5 +13 +2.54772991850989 +23 +1.64788632875096e-16 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.54772991850989 +20 +1.64788632875096e-16 +30 +1.5 +11 +3.0 +21 +1.5 +31 +0.0 +12 +2.64941740918437 +22 +1.80782203615711e-16 +32 +1.64558259081563 +13 +2.64941740918437 +23 +1.80782203615711e-16 +33 +1.64558259081563 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.64941740918437 +20 +1.80782203615711e-16 +30 +1.64558259081563 +11 +3.0 +21 +1.5 +31 +0.0 +12 +2.795 +22 +2.03679665726025e-16 +32 +1.85400833333335 +13 +2.795 +23 +2.03679665726025e-16 +33 +1.85400833333335 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.795 +20 +2.03679665726025e-16 +30 +1.85400833333335 +11 +3.0 +21 +1.5 +31 +0.0 +12 +3.0 +22 +0.205 +32 +1.85400833333334 +13 +3.0 +23 +0.205 +33 +1.85400833333334 +70 +15 + 0 +3DFACE + 8 +iso_base_a +10 +2.795 +20 +2.03679665726025e-16 +30 +1.85400833333335 +11 +3.0 +21 +0.205 +31 +1.85400833333334 +12 +2.99999999999999 +22 +4.71844785465692e-16 +32 +2.1475 +13 +2.99999999999999 +23 +4.71844785465692e-16 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +0.205 +30 +1.85400833333334 +11 +3.0 +21 +1.5 +31 +0.0 +12 +3.0 +22 +0.883139136394791 +32 +0.883139136394791 +13 +3.0 +23 +0.883139136394791 +33 +0.883139136394791 +70 +15 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +0.205 +30 +1.85400833333334 +11 +3.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +3.0 +22 +0.452270081490106 +32 +1.5 +13 +3.0 +23 +0.452270081490106 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +3.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +3.0 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.35681024447031 +32 +0.205 +13 +3.0 +23 +1.35681024447031 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.3525 +20 +5.67320709797468e-17 +30 +2.795 +11 +2.36016784552609 +21 +0.212667845526093 +31 +3.0 +12 +2.14749999999999 +22 +0.0 +32 +3.0 +13 +2.14749999999999 +23 +0.0 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_a +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +2.3525 +21 +5.67320709797468e-17 +31 +2.795 +12 +2.57375 +22 +1.17961196366424e-16 +32 +2.57375 +13 +2.57375 +23 +1.17961196366424e-16 +33 +2.57375 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +2.57375 +21 +1.17961196366424e-16 +31 +2.57375 +12 +2.795 +22 +1.79190321753102e-16 +32 +2.35249999999999 +13 +2.795 +23 +1.79190321753102e-16 +33 +2.35249999999999 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +2.795 +21 +1.79190321753102e-16 +31 +2.35249999999999 +12 +2.99999999999999 +22 +4.71844785465692e-16 +32 +2.1475 +13 +2.99999999999999 +23 +4.71844785465692e-16 +33 +2.1475 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +2.99999999999999 +21 +4.71844785465692e-16 +31 +2.1475 +12 +3.0 +22 +0.205 +32 +2.3525 +13 +3.0 +23 +0.205 +33 +2.3525 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +3.0 +21 +0.205 +31 +2.3525 +12 +3.0 +22 +0.426249999999999 +32 +2.57375 +13 +3.0 +23 +0.426249999999999 +33 +2.57375 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.36016784552609 +20 +0.212667845526093 +30 +3.0 +11 +3.0 +21 +0.426249999999999 +31 +2.57375 +12 +2.57375 +22 +0.426250000000001 +32 +3.0 +13 +2.57375 +23 +0.426250000000001 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.57375 +20 +0.426250000000001 +30 +3.0 +11 +3.0 +21 +0.426249999999999 +31 +2.57375 +12 +2.99999999999999 +22 +0.647499999999997 +32 +2.795 +13 +2.99999999999999 +23 +0.647499999999997 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_base_a +10 +2.57375 +20 +0.426250000000001 +30 +3.0 +11 +2.99999999999999 +21 +0.647499999999997 +31 +2.795 +12 +2.7873321544739 +22 +0.639832154473909 +32 +3.0 +13 +2.7873321544739 +23 +0.639832154473909 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_a +10 +2.7873321544739 +20 +0.639832154473909 +30 +3.0 +11 +2.99999999999999 +21 +0.647499999999997 +31 +2.795 +12 +2.99999999999999 +22 +0.852499999999996 +32 +3.0 +13 +2.99999999999999 +23 +0.852499999999996 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.14599166666667 +20 +3.0 +30 +0.205 +11 +0.889337610807103 +21 +2.97426942202065 +31 +2.73746865475011e-16 +12 +0.8525 +22 +3.0 +32 +3.33066907387547e-16 +13 +0.8525 +23 +3.0 +33 +3.33066907387547e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.889337610807103 +20 +2.97426942202065 +30 +2.73746865475011e-16 +11 +1.14599166666667 +21 +3.0 +31 +0.205 +12 +1.25796592131777 +22 +2.71678748219946 +32 +2.35631881739726e-16 +13 +1.25796592131777 +23 +2.71678748219946 +33 +2.35631881739726e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.25796592131777 +20 +2.71678748219946 +30 +2.35631881739726e-16 +11 +1.14599166666667 +21 +3.0 +31 +0.205 +12 +1.35441740918437 +22 +3.0 +32 +0.350582590815627 +13 +1.35441740918437 +23 +3.0 +33 +0.350582590815627 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.25796592131777 +20 +2.71678748219946 +30 +2.35631881739726e-16 +11 +1.35441740918437 +21 +3.0 +31 +0.350582590815627 +12 +1.5 +22 +2.54772991850989 +32 +2.10606335113701e-16 +13 +1.5 +23 +2.54772991850989 +33 +2.10606335113701e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +2.54772991850989 +30 +2.10606335113701e-16 +11 +1.35441740918437 +21 +3.0 +31 +0.350582590815627 +12 +1.5 +22 +3.0 +32 +0.452270081490105 +13 +1.5 +23 +3.0 +33 +0.452270081490105 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +2.54772991850989 +30 +2.10606335113701e-16 +11 +1.5 +21 +3.0 +31 +0.452270081490105 +12 +2.11686086360521 +22 +3.0 +32 +0.883139136394791 +13 +2.11686086360521 +23 +3.0 +33 +0.883139136394791 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +2.54772991850989 +30 +2.10606335113701e-16 +11 +2.11686086360521 +21 +3.0 +31 +0.883139136394791 +12 +1.68298318869529 +22 +2.41991861092296 +32 +1.91686460914973e-16 +13 +1.68298318869529 +23 +2.41991861092296 +33 +1.91686460914973e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.68298318869529 +20 +2.41991861092296 +30 +1.91686460914973e-16 +11 +2.11686086360521 +21 +3.0 +31 +0.883139136394791 +12 +1.83659840643228 +22 +2.31262043788199 +32 +1.75803140620266e-16 +13 +1.83659840643228 +23 +2.31262043788199 +33 +1.75803140620266e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.83659840643228 +20 +2.31262043788199 +30 +1.75803140620266e-16 +11 +2.11686086360521 +21 +3.0 +31 +0.883139136394791 +12 +1.97730561612803 +22 +2.2143383356498 +32 +1.61254466912702e-16 +13 +1.97730561612803 +23 +2.2143383356498 +33 +1.61254466912702e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.97730561612803 +20 +2.2143383356498 +30 +1.61254466912702e-16 +11 +2.11686086360521 +21 +3.0 +31 +0.883139136394791 +12 +2.11686086360521 +22 +2.11686086360521 +32 +1.46824902399879e-16 +13 +2.11686086360521 +23 +2.11686086360521 +33 +1.46824902399879e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.11686086360521 +20 +2.11686086360521 +30 +1.46824902399879e-16 +11 +2.11686086360521 +21 +3.0 +31 +0.883139136394791 +12 +2.26663244222472 +22 +2.01224742103046 +32 +1.31339002048974e-16 +13 +2.26663244222472 +23 +2.01224742103046 +33 +1.31339002048974e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.26663244222472 +20 +2.01224742103046 +30 +1.31339002048974e-16 +11 +2.11686086360521 +21 +3.0 +31 +0.883139136394791 +12 +2.32009652509653 +22 +3.0 +32 +1.02509652509653 +13 +2.32009652509653 +23 +3.0 +33 +1.02509652509653 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +2.26663244222472 +20 +2.01224742103046 +30 +1.31339002048974e-16 +11 +2.32009652509653 +21 +3.0 +31 +1.02509652509653 +12 +2.44161027590394 +22 +1.89002774674928 +32 +1.13246855855755e-16 +13 +2.44161027590394 +23 +1.89002774674928 +33 +1.13246855855755e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.44161027590394 +20 +1.89002774674928 +30 +1.13246855855755e-16 +11 +2.32009652509653 +21 +3.0 +31 +1.02509652509653 +12 +2.795 +22 +3.0 +32 +1.35681024447031 +13 +2.795 +23 +3.0 +33 +1.35681024447031 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +2.44161027590394 +20 +1.89002774674928 +30 +1.13246855855755e-16 +11 +2.795 +21 +3.0 +31 +1.35681024447031 +12 +2.66751850869864 +22 +1.73223387052481 +32 +8.98886699185201e-17 +13 +2.66751850869864 +23 +1.73223387052481 +33 +8.98886699185201e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.66751850869864 +20 +1.73223387052481 +30 +8.98886699185201e-17 +11 +2.795 +21 +3.0 +31 +1.35681024447031 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +3.0 +20 +1.5 +30 +0.0 +11 +2.795 +21 +3.0 +31 +1.35681024447031 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.57449302665047 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.74886602156053 +22 +0.248866021560525 +32 +-1.29693882069326e-16 +13 +1.74886602156053 +23 +0.248866021560525 +33 +-1.29693882069326e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +1.57449302665047 +21 +0.743659607729131 +31 +0.0 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +1.5 +11 +2.11686086360521 +21 +3.0 +31 +0.883139136394791 +12 +1.5 +22 +3.0 +32 +0.452270081490105 +13 +1.5 +23 +3.0 +33 +0.452270081490105 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.72061635471339 +22 +0.772725344843521 +32 +0.0 +13 +1.72061635471339 +23 +0.772725344843521 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +1.02509652509652 +21 +3.0 +31 +2.32009652509652 +12 +1.35681024447031 +22 +3.0 +32 +2.795 +13 +1.35681024447031 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.883139136394791 +20 +3.0 +30 +2.11686086360521 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +0.883139136394791 +21 +3.0 +31 +2.11686086360521 +12 +1.02509652509652 +22 +3.0 +32 +2.32009652509652 +13 +1.02509652509652 +23 +3.0 +33 +2.32009652509652 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.68298318869529 +20 +2.41991861092296 +30 +1.91686460914973e-16 +11 +1.5 +21 +2.26 +31 +0.0 +12 +1.5 +22 +2.54772991850989 +32 +2.10606335113701e-16 +13 +1.5 +23 +2.54772991850989 +33 +2.10606335113701e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +2.26 +30 +0.0 +11 +1.68298318869529 +21 +2.41991861092296 +31 +1.91686460914973e-16 +12 +1.57449302665047 +22 +2.25634039227087 +32 +0.0 +13 +1.57449302665047 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.68298318869529 +21 +2.41991861092296 +31 +1.91686460914973e-16 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.212667845526092 +20 +2.36016784552609 +30 +1.10903230691784e-16 +11 +0.0257305779793495 +21 +2.1106623891929 +31 +5.17022605499795e-17 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0257305779793495 +20 +2.1106623891929 +30 +5.17022605499795e-17 +11 +0.212667845526092 +21 +2.36016784552609 +31 +1.10903230691784e-16 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.212667845526092 +21 +2.36016784552609 +31 +1.10903230691784e-16 +12 +0.82973983909525 +22 +1.85826151998776 +32 +0.0 +13 +0.82973983909525 +23 +1.85826151998776 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.82973983909525 +20 +1.85826151998776 +30 +0.0 +11 +0.212667845526092 +21 +2.36016784552609 +31 +1.10903230691784e-16 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.74 +20 +1.5 +30 +0.0 +11 +0.580081389077038 +21 +1.31701681130471 +31 +-3.03581440100583e-17 +12 +0.452270081490105 +22 +1.5 +32 +-1.14382698113301e-17 +13 +0.452270081490105 +23 +1.5 +33 +-1.14382698113301e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.580081389077038 +20 +1.31701681130471 +30 +-3.03581440100583e-17 +11 +0.74 +21 +1.5 +31 +0.0 +12 +0.743659607729131 +22 +1.42550697334953 +32 +0.0 +13 +0.743659607729131 +23 +1.42550697334953 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.580081389077038 +20 +1.31701681130471 +30 +-3.03581440100583e-17 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 +12 +2.08748794455568 +22 +1.98213889596437 +32 +0.0 +13 +2.08748794455568 +23 +1.98213889596437 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.72061635471339 +20 +0.772725344843521 +30 +0.0 +11 +1.74886602156053 +21 +0.248866021560525 +31 +-1.29693882069326e-16 +12 +1.64826864473226 +22 +0.754603186893545 +32 +0.0 +13 +1.64826864473226 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +1.72061635471339 +21 +0.772725344843521 +31 +0.0 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.74886602156053 +20 +0.248866021560525 +30 +-1.29693882069326e-16 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.93933982822018 +22 +0.439339828220178 +32 +-1.0149809463712e-16 +13 +1.93933982822018 +23 +0.439339828220178 +33 +-1.0149809463712e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.17026016090475 +20 +1.14173848001224 +30 +0.0 +11 +2.39918427553474 +21 +0.899184275534743 +31 +-3.34274422164983e-17 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.39918427553474 +20 +0.899184275534743 +30 +-3.34274422164983e-17 +11 +2.17026016090475 +21 +1.14173848001224 +31 +0.0 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +2.39918427553474 +20 +0.899184275534743 +30 +-3.34274422164983e-17 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +2.56066017177982 +22 +1.06066017177982 +32 +-9.52420782539579e-18 +13 +2.56066017177982 +23 +1.06066017177982 +33 +-9.52420782539579e-18 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.25634039227087 +20 +1.42550697334953 +30 +0.0 +11 +2.75113397843947 +21 +1.25113397843947 +31 +1.86715796068105e-17 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.75113397843947 +20 +1.25113397843947 +30 +1.86715796068105e-17 +11 +2.25634039227087 +21 +1.42550697334953 +31 +0.0 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +2.75113397843947 +20 +1.25113397843947 +30 +1.86715796068105e-17 +11 +2.26 +21 +1.5 +31 +0.0 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.42625 +20 +2.57375 +30 +1.66533453693774e-16 +11 +0.868083094650066 +21 +1.9222333770949 +31 +0.0 +12 +0.212667845526092 +22 +2.36016784552609 +32 +1.10903230691784e-16 +13 +0.212667845526092 +23 +2.36016784552609 +33 +1.10903230691784e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.868083094650066 +20 +1.9222333770949 +30 +0.0 +11 +0.42625 +21 +2.57375 +31 +1.66533453693774e-16 +12 +0.91251205544432 +22 +1.98213889596437 +32 +0.0 +13 +0.91251205544432 +23 +1.98213889596437 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.91251205544432 +20 +1.98213889596437 +30 +0.0 +11 +0.42625 +21 +2.57375 +31 +1.66533453693774e-16 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.1475 +30 +0.0 +11 +0.0 +21 +1.85400833333333 +31 +0.205 +12 +0.0 +22 +2.1475 +32 +0.205 +13 +0.0 +23 +2.1475 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +2.22727465515648 +22 +1.27938364528661 +32 +0.0 +13 +2.22727465515648 +23 +1.27938364528661 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.14173848001224 +21 +2.17026016090475 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +2.08748794455568 +22 +1.01786110403563 +32 +0.0 +13 +2.08748794455568 +23 +1.01786110403563 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.03740115370178 +20 +0.962598846298224 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +1.98213889596437 +22 +0.91251205544432 +32 +0.0 +13 +1.98213889596437 +23 +0.91251205544432 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.91251205544432 +20 +1.98213889596437 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.91251205544432 +21 +1.98213889596437 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.772725344843521 +20 +1.72061635471339 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.350582590815627 +20 +3.0 +30 +1.35441740918437 +11 +1.5 +21 +3.0 +31 +1.5 +12 +0.8525 +22 +3.0 +32 +0.8525 +13 +0.8525 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +1.5 +11 +0.350582590815627 +21 +3.0 +31 +1.35441740918437 +12 +0.452270081490105 +22 +3.0 +32 +1.5 +13 +0.452270081490105 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.772725344843521 +21 +1.27938364528661 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.772725344843521 +20 +1.27938364528661 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.64826864473226 +20 +2.24539681310645 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.64826864473226 +21 +2.24539681310645 +31 +0.0 +12 +1.72061635471339 +22 +2.22727465515648 +32 +0.0 +13 +1.72061635471339 +23 +2.22727465515648 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +2.795 +11 +2.25 +21 +3.0 +31 +2.25 +12 +2.1475 +22 +3.0 +32 +2.1475 +13 +2.1475 +23 +3.0 +33 +2.1475 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.25 +20 +3.0 +30 +2.25 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.705 +22 +3.0 +32 +2.795 +13 +1.705 +23 +3.0 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.6475 +20 +3.0 +30 +0.205 +11 +1.35441740918437 +21 +3.0 +31 +0.350582590815627 +12 +1.14599166666667 +22 +3.0 +32 +0.205 +13 +1.14599166666667 +23 +3.0 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.35441740918437 +20 +3.0 +30 +0.350582590815627 +11 +0.6475 +21 +3.0 +31 +0.205 +12 +0.42625 +22 +3.0 +32 +0.42625 +13 +0.42625 +23 +3.0 +33 +0.42625 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.35441740918437 +20 +3.0 +30 +0.350582590815627 +11 +0.42625 +21 +3.0 +31 +0.42625 +12 +0.8525 +22 +3.0 +32 +0.8525 +13 +0.8525 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +2.795 +21 +3.0 +31 +1.5 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +1.5 +11 +2.32009652509653 +21 +3.0 +31 +1.02509652509653 +12 +2.11686086360521 +22 +3.0 +32 +0.883139136394791 +13 +2.11686086360521 +23 +3.0 +33 +0.883139136394791 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.32009652509653 +20 +3.0 +30 +1.02509652509653 +11 +1.5 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +2.03740115370178 +21 +2.03740115370178 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.03740115370178 +20 +2.03740115370178 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.98213889596437 +22 +2.08748794455568 +32 +0.0 +13 +1.98213889596437 +23 +2.08748794455568 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.64826864473226 +20 +0.754603186893545 +30 +0.0 +11 +1.5 +21 +0.74 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +0.74 +30 +0.0 +11 +1.64826864473226 +21 +0.754603186893545 +31 +0.0 +12 +1.57449302665047 +22 +0.743659607729131 +32 +0.0 +13 +1.57449302665047 +23 +0.743659607729131 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.205 +20 +3.0 +30 +0.6475 +11 +0.8525 +21 +3.0 +31 +0.8525 +12 +0.42625 +22 +3.0 +32 +0.42625 +13 +0.42625 +23 +3.0 +33 +0.42625 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.8525 +20 +3.0 +30 +0.8525 +11 +0.205 +21 +3.0 +31 +0.6475 +12 +0.205 +22 +3.0 +32 +1.14599166666667 +13 +0.205 +23 +3.0 +33 +1.14599166666667 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.8525 +20 +3.0 +30 +0.8525 +11 +0.205 +21 +3.0 +31 +1.14599166666667 +12 +0.350582590815627 +22 +3.0 +32 +1.35441740918437 +13 +0.350582590815627 +23 +3.0 +33 +1.35441740918437 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.42550697334953 +20 +0.743659607729131 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.1475 +20 +3.0 +30 +2.1475 +11 +2.795 +21 +3.0 +31 +1.705 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.795 +20 +3.0 +30 +1.705 +11 +2.1475 +21 +3.0 +31 +2.1475 +12 +2.25 +22 +3.0 +32 +2.25 +13 +2.25 +23 +3.0 +33 +2.25 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.795 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +1.35681024447031 +12 +2.32009652509653 +22 +3.0 +32 +1.02509652509653 +13 +2.32009652509653 +23 +3.0 +33 +1.02509652509653 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.14173848001224 +21 +0.82973983909525 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.14173848001224 +20 +0.82973983909525 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.8525 +20 +3.0 +30 +0.8525 +11 +1.5 +21 +3.0 +31 +0.452270081490105 +12 +1.35441740918437 +22 +3.0 +32 +0.350582590815627 +13 +1.35441740918437 +23 +3.0 +33 +0.350582590815627 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +0.452270081490105 +11 +0.8525 +21 +3.0 +31 +0.8525 +12 +1.5 +22 +3.0 +32 +1.5 +13 +1.5 +23 +3.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.962598846298224 +22 +2.03740115370178 +32 +0.0 +13 +0.962598846298224 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.01786110403563 +21 +2.08748794455568 +31 +0.0 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.883139136394791 +20 +3.0 +30 +2.11686086360521 +11 +1.5 +21 +3.0 +31 +1.5 +12 +0.452270081490105 +22 +3.0 +32 +1.5 +13 +0.452270081490105 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.205 +20 +3.0 +30 +1.14599166666667 +11 +0.205 +21 +3.0 +31 +0.6475 +12 +0.0 +22 +3.0 +32 +0.8525 +13 +0.0 +23 +3.0 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.42550697334953 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.743659607729131 +20 +1.42550697334953 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.754603186893545 +22 +1.35173135526774 +32 +0.0 +13 +0.754603186893545 +23 +1.35173135526774 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.27938364528661 +21 +2.22727465515648 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.5 +30 +0.452270081490105 +11 +0.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +1.79083940859747 +20 +2.20214844470858 +30 +0.0 +11 +1.9222333770949 +21 +2.13191690534993 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.9222333770949 +20 +2.13191690534993 +30 +0.0 +11 +1.79083940859747 +21 +2.20214844470858 +31 +0.0 +12 +1.85826151998776 +22 +2.17026016090475 +32 +0.0 +13 +1.85826151998776 +23 +2.17026016090475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.205 +30 +1.35681024447031 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +0.0 +21 +0.205 +31 +1.35681024447031 +12 +1.26776612947519 +22 +0.332481491301359 +32 +-1.32155935006511e-16 +13 +1.26776612947519 +23 +0.332481491301359 +33 +-1.32155935006511e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.26776612947519 +20 +0.332481491301359 +30 +-1.32155935006511e-16 +11 +0.0 +21 +0.205 +31 +1.35681024447031 +12 +0.0 +22 +0.883139136394791 +32 +0.883139136394791 +13 +0.0 +23 +0.883139136394791 +33 +0.883139136394791 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.26776612947519 +20 +0.332481491301359 +30 +-1.32155935006511e-16 +11 +0.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +1.10997225325072 +22 +0.558389724096058 +32 +-1.08797749069277e-16 +13 +1.10997225325072 +23 +0.558389724096058 +33 +-1.08797749069277e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.10997225325072 +20 +0.558389724096058 +30 +-1.08797749069277e-16 +11 +0.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +0.987752578969539 +22 +0.733367557775276 +32 +-9.07056028760568e-17 +13 +0.987752578969539 +23 +0.733367557775276 +33 +-9.07056028760568e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.987752578969539 +20 +0.733367557775276 +30 +-9.07056028760568e-17 +11 +0.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +0.883139136394791 +22 +0.883139136394791 +32 +-7.52197025251519e-17 +13 +0.883139136394791 +23 +0.883139136394791 +33 +-7.52197025251519e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.883139136394791 +20 +0.883139136394791 +30 +-7.52197025251519e-17 +11 +0.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +0.785661664350193 +22 +1.02269438387197 +32 +-6.07901380123296e-17 +13 +0.785661664350193 +23 +1.02269438387197 +33 +-6.07901380123296e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.785661664350193 +20 +1.02269438387197 +30 +-6.07901380123296e-17 +11 +0.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +0.0 +22 +1.5 +32 +0.452270081490105 +13 +0.0 +23 +1.5 +33 +0.452270081490105 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.785661664350193 +20 +1.02269438387197 +30 +-6.07901380123296e-17 +11 +0.0 +21 +1.5 +31 +0.452270081490105 +12 +0.687379562118009 +22 +1.16340159356772 +32 +-4.6241464304765e-17 +13 +0.687379562118009 +23 +1.16340159356772 +33 +-4.6241464304765e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.687379562118009 +20 +1.16340159356772 +30 +-4.6241464304765e-17 +11 +0.0 +21 +1.5 +31 +0.452270081490105 +12 +0.580081389077038 +22 +1.31701681130471 +32 +-3.03581440100583e-17 +13 +0.580081389077038 +23 +1.31701681130471 +33 +-3.03581440100583e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.580081389077038 +20 +1.31701681130471 +30 +-3.03581440100583e-17 +11 +0.0 +21 +1.5 +31 +0.452270081490105 +12 +0.452270081490105 +22 +1.5 +32 +-1.14382698113301e-17 +13 +0.452270081490105 +23 +1.5 +33 +-1.14382698113301e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.452270081490105 +20 +1.5 +30 +-1.14382698113301e-17 +11 +0.0 +21 +1.5 +31 +0.452270081490105 +12 +0.0 +22 +1.85400833333333 +32 +0.205 +13 +0.0 +23 +1.85400833333333 +33 +0.205 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.452270081490105 +20 +1.5 +30 +-1.14382698113301e-17 +11 +0.0 +21 +1.85400833333333 +31 +0.205 +12 +0.283212517800539 +22 +1.74203407868223 +32 +1.35872768146951e-17 +13 +0.283212517800539 +23 +1.74203407868223 +33 +1.35872768146951e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.283212517800539 +20 +1.74203407868223 +30 +1.35872768146951e-17 +11 +0.0 +21 +1.85400833333333 +31 +0.205 +12 +0.0257305779793495 +22 +2.1106623891929 +32 +5.17022605499795e-17 +13 +0.0257305779793495 +23 +2.1106623891929 +33 +5.17022605499795e-17 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0257305779793495 +20 +2.1106623891929 +30 +5.17022605499795e-17 +11 +0.0 +21 +1.85400833333333 +31 +0.205 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.83659840643228 +20 +2.31262043788199 +30 +1.75803140620266e-16 +11 +1.85826151998776 +21 +2.17026016090475 +31 +0.0 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.85826151998776 +20 +2.17026016090475 +30 +0.0 +11 +1.83659840643228 +21 +2.31262043788199 +31 +1.75803140620266e-16 +12 +1.97730561612803 +22 +2.2143383356498 +32 +1.61254466912702e-16 +13 +1.97730561612803 +23 +2.2143383356498 +33 +1.61254466912702e-16 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.85826151998776 +20 +2.17026016090475 +30 +0.0 +11 +1.97730561612803 +21 +2.2143383356498 +31 +1.61254466912702e-16 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.98213889596437 +20 +0.91251205544432 +30 +0.0 +11 +2.10081572446526 +21 +0.600815724465256 +31 +-7.75948602460171e-17 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.10081572446526 +20 +0.600815724465256 +30 +-7.75948602460171e-17 +11 +1.98213889596437 +21 +0.91251205544432 +31 +0.0 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +2.10081572446526 +20 +0.600815724465256 +30 +-7.75948602460171e-17 +11 +2.03740115370178 +21 +0.962598846298224 +31 +0.0 +12 +2.25 +22 +0.75 +32 +-5.55111512312576e-17 +13 +2.25 +23 +0.75 +33 +-5.55111512312576e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.08748794455568 +20 +1.01786110403563 +30 +0.0 +11 +2.25 +21 +0.75 +31 +-5.55111512312576e-17 +12 +2.03740115370178 +22 +0.962598846298224 +32 +0.0 +13 +2.03740115370178 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.25 +20 +0.75 +30 +-5.55111512312576e-17 +11 +2.08748794455568 +21 +1.01786110403563 +31 +0.0 +12 +2.13191690534993 +22 +1.0777666229051 +32 +0.0 +13 +2.13191690534993 +23 +1.0777666229051 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +2.25 +20 +0.75 +30 +-5.55111512312576e-17 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +2.39918427553474 +22 +0.899184275534743 +32 +-3.34274422164983e-17 +13 +2.39918427553474 +23 +0.899184275534743 +33 +-3.34274422164983e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.26663244222472 +20 +2.01224742103046 +30 +1.31339002048974e-16 +11 +2.17026016090475 +21 +1.85826151998776 +31 +0.0 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.17026016090475 +20 +1.85826151998776 +30 +0.0 +11 +2.26663244222472 +21 +2.01224742103046 +31 +1.31339002048974e-16 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.26663244222472 +21 +2.01224742103046 +31 +1.31339002048974e-16 +12 +2.44161027590394 +22 +1.89002774674928 +32 +1.13246855855755e-16 +13 +2.44161027590394 +23 +1.89002774674928 +33 +1.13246855855755e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.44161027590394 +20 +1.89002774674928 +30 +1.13246855855755e-16 +11 +2.22727465515648 +21 +1.72061635471339 +31 +0.0 +12 +2.20214844470858 +22 +1.79083940859747 +32 +0.0 +13 +2.20214844470858 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.22727465515648 +20 +1.72061635471339 +30 +0.0 +11 +2.44161027590394 +21 +1.89002774674928 +31 +1.13246855855755e-16 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +2.44161027590394 +21 +1.89002774674928 +31 +1.13246855855755e-16 +12 +2.66751850869864 +22 +1.73223387052481 +32 +8.98886699185201e-17 +13 +2.66751850869864 +23 +1.73223387052481 +33 +8.98886699185201e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.868083094650066 +20 +1.0777666229051 +30 +0.0 +11 +0.883139136394791 +21 +0.883139136394791 +31 +-7.52197025251519e-17 +12 +0.785661664350193 +22 +1.02269438387197 +32 +-6.07901380123296e-17 +13 +0.785661664350193 +23 +1.02269438387197 +33 +-6.07901380123296e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.883139136394791 +20 +0.883139136394791 +30 +-7.52197025251519e-17 +11 +0.868083094650066 +21 +1.0777666229051 +31 +0.0 +12 +0.91251205544432 +22 +1.01786110403563 +32 +0.0 +13 +0.91251205544432 +23 +1.01786110403563 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.883139136394791 +20 +0.883139136394791 +30 +-7.52197025251519e-17 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.962598846298224 +20 +0.962598846298224 +30 +0.0 +11 +0.987752578969539 +21 +0.733367557775276 +31 +-9.07056028760568e-17 +12 +0.883139136394791 +22 +0.883139136394791 +32 +-7.52197025251519e-17 +13 +0.883139136394791 +23 +0.883139136394791 +33 +-7.52197025251519e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.987752578969539 +20 +0.733367557775276 +30 +-9.07056028760568e-17 +11 +0.962598846298224 +21 +0.962598846298224 +31 +0.0 +12 +1.01786110403563 +22 +0.91251205544432 +32 +0.0 +13 +1.01786110403563 +23 +0.91251205544432 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.987752578969539 +20 +0.733367557775276 +30 +-9.07056028760568e-17 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +2.54772991850989 +30 +2.10606335113701e-16 +11 +1.35173135526774 +21 +2.24539681310645 +31 +0.0 +12 +1.25796592131777 +22 +2.71678748219946 +32 +2.35631881739726e-16 +13 +1.25796592131777 +23 +2.71678748219946 +33 +2.35631881739726e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.35173135526774 +20 +2.24539681310645 +30 +0.0 +11 +1.5 +21 +2.54772991850989 +31 +2.10606335113701e-16 +12 +1.42550697334953 +22 +2.25634039227087 +32 +0.0 +13 +1.42550697334953 +23 +2.25634039227087 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +2.54772991850989 +31 +2.10606335113701e-16 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.0777666229051 +20 +0.868083094650066 +30 +0.0 +11 +1.10997225325072 +21 +0.558389724096058 +31 +-1.08797749069277e-16 +12 +0.987752578969539 +22 +0.733367557775276 +32 +-9.07056028760568e-17 +13 +0.987752578969539 +23 +0.733367557775276 +33 +-9.07056028760568e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.10997225325072 +20 +0.558389724096058 +30 +-1.08797749069277e-16 +11 +1.0777666229051 +21 +0.868083094650066 +31 +0.0 +12 +1.14173848001224 +22 +0.82973983909525 +32 +0.0 +13 +1.14173848001224 +23 +0.82973983909525 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.10997225325072 +20 +0.558389724096058 +30 +-1.08797749069277e-16 +11 +1.14173848001224 +21 +0.82973983909525 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.66751850869864 +20 +1.73223387052481 +30 +8.98886699185201e-17 +11 +2.25634039227087 +21 +1.57449302665047 +31 +0.0 +12 +2.24539681310645 +22 +1.64826864473226 +32 +0.0 +13 +2.24539681310645 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.25634039227087 +20 +1.57449302665047 +30 +0.0 +11 +2.66751850869864 +21 +1.73223387052481 +31 +8.98886699185201e-17 +12 +2.26 +22 +1.5 +32 +0.0 +13 +2.26 +23 +1.5 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.66751850869864 +21 +1.73223387052481 +31 +8.98886699185201e-17 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +2.25634039227087 +22 +1.57449302665047 +32 +0.0 +13 +2.25634039227087 +23 +1.57449302665047 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.85826151998776 +20 +0.82973983909525 +30 +0.0 +11 +1.93933982822018 +21 +0.439339828220178 +31 +-1.0149809463712e-16 +12 +1.79083940859747 +22 +0.797851555291422 +32 +0.0 +13 +1.79083940859747 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.93933982822018 +20 +0.439339828220178 +30 +-1.0149809463712e-16 +11 +1.85826151998776 +21 +0.82973983909525 +31 +0.0 +12 +1.9222333770949 +22 +0.868083094650066 +32 +0.0 +13 +1.9222333770949 +23 +0.868083094650066 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.93933982822018 +20 +0.439339828220178 +30 +-1.0149809463712e-16 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +2.10081572446526 +22 +0.600815724465256 +32 +-7.75948602460171e-17 +13 +2.10081572446526 +23 +0.600815724465256 +33 +-7.75948602460171e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.68298318869529 +20 +2.41991861092296 +30 +1.91686460914973e-16 +11 +1.72061635471339 +21 +2.22727465515648 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.72061635471339 +20 +2.22727465515648 +30 +0.0 +11 +1.68298318869529 +21 +2.41991861092296 +31 +1.91686460914973e-16 +12 +1.83659840643228 +22 +2.31262043788199 +32 +1.75803140620266e-16 +13 +1.83659840643228 +23 +2.31262043788199 +33 +1.75803140620266e-16 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.72061635471339 +20 +2.22727465515648 +30 +0.0 +11 +1.83659840643228 +21 +2.31262043788199 +31 +1.75803140620266e-16 +12 +1.79083940859747 +22 +2.20214844470858 +32 +0.0 +13 +1.79083940859747 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.9222333770949 +20 +0.868083094650066 +30 +0.0 +11 +1.79083940859747 +21 +0.797851555291422 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.79083940859747 +20 +0.797851555291422 +30 +0.0 +11 +1.9222333770949 +21 +0.868083094650066 +31 +0.0 +12 +1.85826151998776 +22 +0.82973983909525 +32 +0.0 +13 +1.85826151998776 +23 +0.82973983909525 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.743659607729131 +20 +1.57449302665047 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.743659607729131 +21 +1.57449302665047 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.35173135526774 +20 +0.754603186893545 +30 +0.0 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.26776612947519 +22 +0.332481491301359 +32 +-1.32155935006511e-16 +13 +1.26776612947519 +23 +0.332481491301359 +33 +-1.32155935006511e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.35173135526774 +21 +0.754603186893545 +31 +0.0 +12 +1.42550697334953 +22 +0.743659607729131 +32 +0.0 +13 +1.42550697334953 +23 +0.743659607729131 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +1.42550697334953 +21 +0.743659607729131 +31 +0.0 +12 +1.5 +22 +0.74 +32 +0.0 +13 +1.5 +23 +0.74 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +5.55111512312578e-17 +30 +0.0 +11 +0.0 +21 +0.205 +31 +1.705 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.205 +30 +1.705 +11 +1.5 +21 +5.55111512312578e-17 +31 +0.0 +12 +1.74886602156053 +22 +0.248866021560525 +32 +-1.29693882069326e-16 +13 +1.74886602156053 +23 +0.248866021560525 +33 +-1.29693882069326e-16 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.205 +30 +1.705 +11 +1.74886602156053 +21 +0.248866021560525 +31 +-1.29693882069326e-16 +12 +0.0 +22 +0.75 +32 +2.25 +13 +0.0 +23 +0.75 +33 +2.25 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.75 +30 +2.25 +11 +1.74886602156053 +21 +0.248866021560525 +31 +-1.29693882069326e-16 +12 +1.93933982822018 +22 +0.439339828220178 +32 +-1.0149809463712e-16 +13 +1.93933982822018 +23 +0.439339828220178 +33 +-1.0149809463712e-16 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.75 +30 +2.25 +11 +1.93933982822018 +21 +0.439339828220178 +31 +-1.0149809463712e-16 +12 +2.10081572446526 +22 +0.600815724465256 +32 +-7.75948602460171e-17 +13 +2.10081572446526 +23 +0.600815724465256 +33 +-7.75948602460171e-17 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.75 +30 +2.25 +11 +2.10081572446526 +21 +0.600815724465256 +31 +-7.75948602460171e-17 +12 +2.25 +22 +0.75 +32 +-5.55111512312576e-17 +13 +2.25 +23 +0.75 +33 +-5.55111512312576e-17 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.75 +30 +2.25 +11 +2.25 +21 +0.75 +31 +-5.55111512312576e-17 +12 +2.39918427553474 +22 +0.899184275534743 +32 +-3.34274422164983e-17 +13 +2.39918427553474 +23 +0.899184275534743 +33 +-3.34274422164983e-17 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.75 +30 +2.25 +11 +2.39918427553474 +21 +0.899184275534743 +31 +-3.34274422164983e-17 +12 +0.0 +22 +1.295 +32 +2.795 +13 +0.0 +23 +1.295 +33 +2.795 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.295 +30 +2.795 +11 +2.39918427553474 +21 +0.899184275534743 +31 +-3.34274422164983e-17 +12 +2.56066017177982 +22 +1.06066017177982 +32 +-9.52420782539579e-18 +13 +2.56066017177982 +23 +1.06066017177982 +33 +-9.52420782539579e-18 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.295 +30 +2.795 +11 +2.56066017177982 +21 +1.06066017177982 +31 +-9.52420782539579e-18 +12 +2.75113397843947 +22 +1.25113397843947 +32 +1.86715796068105e-17 +13 +2.75113397843947 +23 +1.25113397843947 +33 +1.86715796068105e-17 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.295 +30 +2.795 +11 +2.75113397843947 +21 +1.25113397843947 +31 +1.86715796068105e-17 +12 +3.0 +22 +1.5 +32 +0.0 +13 +3.0 +23 +1.5 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.295 +30 +2.795 +11 +3.0 +21 +1.5 +31 +0.0 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.5 +30 +3.0 +11 +3.0 +21 +1.5 +31 +0.0 +12 +3.0 +22 +3.0 +32 +1.5 +13 +3.0 +23 +3.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.5 +30 +3.0 +11 +3.0 +21 +3.0 +31 +1.5 +12 +1.705 +22 +3.0 +32 +2.795 +13 +1.705 +23 +3.0 +33 +2.795 +70 +15 + 0 +3DFACE + 8 +iso_base_b +10 +1.705 +20 +3.0 +30 +2.795 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.25 +22 +3.0 +32 +2.25 +13 +2.25 +23 +3.0 +33 +2.25 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.25 +20 +3.0 +30 +2.25 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.705 +13 +2.795 +23 +3.0 +33 +1.705 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.0 +21 +1.5 +31 +3.0 +12 +1.705 +22 +3.0 +32 +2.795 +13 +1.705 +23 +3.0 +33 +2.795 +70 +2 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +3.0 +11 +0.0 +21 +1.64318975552969 +31 +2.795 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.64318975552969 +30 +2.795 +11 +1.5 +21 +3.0 +31 +3.0 +12 +0.0 +22 +2.11686086360521 +32 +2.11686086360521 +13 +0.0 +23 +2.11686086360521 +33 +2.11686086360521 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.11686086360521 +30 +2.11686086360521 +11 +1.5 +21 +3.0 +31 +3.0 +12 +0.0 +22 +2.5477299185099 +32 +1.5 +13 +0.0 +23 +2.5477299185099 +33 +1.5 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.5477299185099 +30 +1.5 +11 +1.5 +21 +3.0 +31 +3.0 +12 +0.0 +22 +2.795 +32 +1.14599166666667 +13 +0.0 +23 +2.795 +33 +1.14599166666667 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.795 +30 +1.14599166666667 +11 +1.5 +21 +3.0 +31 +3.0 +12 +1.35681024447031 +22 +3.0 +32 +2.795 +13 +1.35681024447031 +23 +3.0 +33 +2.795 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.35681024447031 +20 +3.0 +30 +2.795 +11 +0.0 +21 +3.0 +31 +0.8525 +12 +0.0 +22 +2.795 +32 +1.14599166666667 +13 +0.0 +23 +2.795 +33 +1.14599166666667 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +3.0 +30 +0.8525 +11 +1.35681024447031 +21 +3.0 +31 +2.795 +12 +1.02509652509652 +22 +3.0 +32 +2.32009652509652 +13 +1.02509652509652 +23 +3.0 +33 +2.32009652509652 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +3.0 +30 +0.8525 +11 +1.02509652509652 +21 +3.0 +31 +2.32009652509652 +12 +0.883139136394791 +22 +3.0 +32 +2.11686086360521 +13 +0.883139136394791 +23 +3.0 +33 +2.11686086360521 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +3.0 +30 +0.8525 +11 +0.883139136394791 +21 +3.0 +31 +2.11686086360521 +12 +0.452270081490105 +22 +3.0 +32 +1.5 +13 +0.452270081490105 +23 +3.0 +33 +1.5 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +3.0 +30 +0.8525 +11 +0.452270081490105 +21 +3.0 +31 +1.5 +12 +0.350582590815627 +22 +3.0 +32 +1.35441740918437 +13 +0.350582590815627 +23 +3.0 +33 +1.35441740918437 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +3.0 +30 +0.8525 +11 +0.350582590815627 +21 +3.0 +31 +1.35441740918437 +12 +0.205 +22 +3.0 +32 +1.14599166666667 +13 +0.205 +23 +3.0 +33 +1.14599166666667 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.5 +30 +2.795 +11 +0.0 +21 +1.295 +31 +2.795 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.5477299185099 +30 +1.5 +11 +0.0 +21 +2.57375 +31 +0.42625 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.57375 +30 +0.42625 +11 +0.0 +21 +2.5477299185099 +31 +1.5 +12 +0.0 +22 +2.795 +32 +1.14599166666667 +13 +0.0 +23 +2.795 +33 +1.14599166666667 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.57375 +30 +0.42625 +11 +0.0 +21 +2.795 +31 +1.14599166666667 +12 +0.0 +22 +2.795 +32 +0.6475 +13 +0.0 +23 +2.795 +33 +0.6475 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.795 +30 +0.6475 +11 +0.0 +21 +2.795 +31 +1.14599166666667 +12 +0.0 +22 +2.795 +32 +0.8525 +13 +0.0 +23 +2.795 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.64318975552969 +30 +2.795 +11 +0.0 +21 +1.5 +31 +2.795 +12 +0.0 +22 +1.5 +32 +3.0 +13 +0.0 +23 +1.5 +33 +3.0 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +3.0 +30 +0.8525 +11 +0.0 +21 +2.795 +31 +0.8525 +12 +0.0 +22 +2.795 +32 +1.14599166666667 +13 +0.0 +23 +2.795 +33 +1.14599166666667 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.64318975552969 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +1.64318975552969 +31 +2.795 +12 +0.0 +22 +2.11686086360521 +32 +2.11686086360521 +13 +0.0 +23 +2.11686086360521 +33 +2.11686086360521 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.57375 +30 +0.42625 +11 +0.0 +21 +1.5 +31 +0.452270081490105 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.5 +30 +0.452270081490105 +11 +0.0 +21 +2.57375 +31 +0.42625 +12 +0.0 +22 +1.85400833333333 +32 +0.205 +13 +0.0 +23 +1.85400833333333 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.85400833333333 +30 +0.205 +11 +0.0 +21 +2.57375 +31 +0.42625 +12 +0.0 +22 +2.1475 +32 +0.205 +13 +0.0 +23 +2.1475 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.1475 +30 +0.205 +11 +0.0 +21 +2.57375 +31 +0.42625 +12 +0.0 +22 +2.3525 +32 +0.205 +13 +0.0 +23 +2.3525 +33 +0.205 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.205 +30 +1.705 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +3.0 +30 +0.8525 +11 +0.0 +21 +2.795 +31 +0.6475 +12 +0.0 +22 +2.795 +32 +0.8525 +13 +0.0 +23 +2.795 +33 +0.8525 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +1.20916059140253 +20 +0.797851555291422 +30 +0.0 +11 +1.26776612947519 +21 +0.332481491301359 +31 +-1.32155935006511e-16 +12 +1.10997225325072 +22 +0.558389724096058 +32 +-1.08797749069277e-16 +13 +1.10997225325072 +23 +0.558389724096058 +33 +-1.08797749069277e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.26776612947519 +20 +0.332481491301359 +30 +-1.32155935006511e-16 +11 +1.20916059140253 +21 +0.797851555291422 +31 +0.0 +12 +1.27938364528661 +22 +0.772725344843521 +32 +0.0 +13 +1.27938364528661 +23 +0.772725344843521 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.26776612947519 +20 +0.332481491301359 +30 +-1.32155935006511e-16 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.25796592131777 +20 +2.71678748219946 +30 +2.35631881739726e-16 +11 +1.20916059140253 +21 +2.20214844470858 +31 +0.0 +12 +0.889337610807103 +22 +2.97426942202065 +32 +2.73746865475011e-16 +13 +0.889337610807103 +23 +2.97426942202065 +33 +2.73746865475011e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.20916059140253 +20 +2.20214844470858 +30 +0.0 +11 +1.25796592131777 +21 +2.71678748219946 +31 +2.35631881739726e-16 +12 +1.27938364528661 +22 +2.22727465515648 +32 +0.0 +13 +1.27938364528661 +23 +2.22727465515648 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.27938364528661 +20 +2.22727465515648 +30 +0.0 +11 +1.25796592131777 +21 +2.71678748219946 +31 +2.35631881739726e-16 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.01786110403563 +21 +0.91251205544432 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.01786110403563 +20 +0.91251205544432 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.0777666229051 +22 +0.868083094650066 +32 +0.0 +13 +1.0777666229051 +23 +0.868083094650066 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.91251205544432 +21 +1.01786110403563 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.91251205544432 +20 +1.01786110403563 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.962598846298224 +22 +0.962598846298224 +32 +0.0 +13 +0.962598846298224 +23 +0.962598846298224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.11686086360521 +20 +2.11686086360521 +30 +1.46824902399879e-16 +11 +2.08748794455568 +21 +1.98213889596437 +31 +0.0 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.08748794455568 +20 +1.98213889596437 +30 +0.0 +11 +2.11686086360521 +21 +2.11686086360521 +31 +1.46824902399879e-16 +12 +2.13191690534993 +22 +1.9222333770949 +32 +0.0 +13 +2.13191690534993 +23 +1.9222333770949 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +2.11686086360521 +21 +2.11686086360521 +31 +1.46824902399879e-16 +12 +2.26663244222472 +22 +2.01224742103046 +32 +1.31339002048974e-16 +13 +2.26663244222472 +23 +2.01224742103046 +33 +1.31339002048974e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.795 +20 +3.0 +30 +1.705 +11 +3.0 +21 +3.0 +31 +1.5 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.754603186893545 +20 +1.35173135526774 +30 +0.0 +11 +0.687379562118009 +21 +1.16340159356772 +31 +-4.6241464304765e-17 +12 +0.580081389077038 +22 +1.31701681130471 +32 +-3.03581440100583e-17 +13 +0.580081389077038 +23 +1.31701681130471 +33 +-3.03581440100583e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.687379562118009 +20 +1.16340159356772 +30 +-4.6241464304765e-17 +11 +0.754603186893545 +21 +1.35173135526774 +31 +0.0 +12 +0.772725344843521 +22 +1.27938364528661 +32 +0.0 +13 +0.772725344843521 +23 +1.27938364528661 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.687379562118009 +20 +1.16340159356772 +30 +-4.6241464304765e-17 +11 +0.772725344843521 +21 +1.27938364528661 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.754603186893545 +20 +1.64826864473226 +30 +0.0 +11 +0.452270081490105 +21 +1.5 +31 +-1.14382698113301e-17 +12 +0.283212517800539 +22 +1.74203407868223 +32 +1.35872768146951e-17 +13 +0.283212517800539 +23 +1.74203407868223 +33 +1.35872768146951e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.452270081490105 +20 +1.5 +30 +-1.14382698113301e-17 +11 +0.754603186893545 +21 +1.64826864473226 +31 +0.0 +12 +0.743659607729131 +22 +1.57449302665047 +32 +0.0 +13 +0.743659607729131 +23 +1.57449302665047 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.452270081490105 +20 +1.5 +30 +-1.14382698113301e-17 +11 +0.743659607729131 +21 +1.57449302665047 +31 +0.0 +12 +0.74 +22 +1.5 +32 +0.0 +13 +0.74 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.22727465515648 +20 +1.27938364528661 +30 +0.0 +11 +2.56066017177982 +21 +1.06066017177982 +31 +-9.52420782539579e-18 +12 +2.20214844470858 +22 +1.20916059140253 +32 +0.0 +13 +2.20214844470858 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.56066017177982 +20 +1.06066017177982 +30 +-9.52420782539579e-18 +11 +2.22727465515648 +21 +1.27938364528661 +31 +0.0 +12 +2.24539681310646 +22 +1.35173135526774 +32 +0.0 +13 +2.24539681310646 +23 +1.35173135526774 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +2.56066017177982 +20 +1.06066017177982 +30 +-9.52420782539579e-18 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +2.75113397843947 +22 +1.25113397843947 +32 +1.86715796068105e-17 +13 +2.75113397843947 +23 +1.25113397843947 +33 +1.86715796068105e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.26 +20 +1.5 +30 +0.0 +11 +2.24539681310646 +21 +1.35173135526774 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.24539681310646 +20 +1.35173135526774 +30 +0.0 +11 +2.26 +21 +1.5 +31 +0.0 +12 +2.25634039227087 +22 +1.42550697334953 +32 +0.0 +13 +2.25634039227087 +23 +1.42550697334953 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.797851555291422 +22 +1.20916059140253 +32 +0.0 +13 +0.797851555291422 +23 +1.20916059140253 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.82973983909525 +20 +1.14173848001224 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.13191690534993 +20 +1.9222333770949 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.13191690534993 +21 +1.9222333770949 +31 +0.0 +12 +2.17026016090475 +22 +1.85826151998776 +32 +0.0 +13 +2.17026016090475 +23 +1.85826151998776 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.8525 +20 +3.0 +30 +3.33066907387547e-16 +11 +1.0777666229051 +21 +2.13191690534993 +31 +0.0 +12 +0.639832154473908 +22 +2.78733215447391 +32 +2.22163676695763e-16 +13 +0.639832154473908 +23 +2.78733215447391 +33 +2.22163676695763e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +0.8525 +21 +3.0 +31 +3.33066907387547e-16 +12 +0.889337610807103 +22 +2.97426942202065 +32 +2.73746865475011e-16 +13 +0.889337610807103 +23 +2.97426942202065 +33 +2.73746865475011e-16 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.0777666229051 +20 +2.13191690534993 +30 +0.0 +11 +0.889337610807103 +21 +2.97426942202065 +31 +2.73746865475011e-16 +12 +1.14173848001224 +22 +2.17026016090475 +32 +0.0 +13 +1.14173848001224 +23 +2.17026016090475 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.14173848001224 +20 +2.17026016090475 +30 +0.0 +11 +0.889337610807103 +21 +2.97426942202065 +31 +2.73746865475011e-16 +12 +1.20916059140253 +22 +2.20214844470858 +32 +0.0 +13 +1.20916059140253 +23 +2.20214844470858 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.20214844470858 +20 +1.79083940859747 +30 +0.0 +11 +2.24539681310645 +21 +1.64826864473226 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.24539681310645 +20 +1.64826864473226 +30 +0.0 +11 +2.20214844470858 +21 +1.79083940859747 +31 +0.0 +12 +2.22727465515648 +22 +1.72061635471339 +32 +0.0 +13 +2.22727465515648 +23 +1.72061635471339 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.42550697334953 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.35173135526774 +22 +2.24539681310645 +32 +0.0 +13 +1.35173135526774 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.42550697334953 +21 +2.25634039227087 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +3.0 +20 +3.0 +30 +1.5 +11 +2.795 +21 +3.0 +31 +1.35681024447031 +12 +2.795 +22 +3.0 +32 +1.5 +13 +2.795 +23 +3.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.212667845526092 +21 +2.36016784552609 +31 +1.10903230691784e-16 +12 +0.0 +22 +2.1475 +32 +0.0 +13 +0.0 +23 +2.1475 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.212667845526092 +20 +2.36016784552609 +30 +1.10903230691784e-16 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.42625 +22 +2.57375 +32 +1.66533453693774e-16 +13 +0.42625 +23 +2.57375 +33 +1.66533453693774e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.42625 +20 +2.57375 +30 +1.66533453693774e-16 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.639832154473908 +22 +2.78733215447391 +32 +2.22163676695763e-16 +13 +0.639832154473908 +23 +2.78733215447391 +33 +2.22163676695763e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.639832154473908 +20 +2.78733215447391 +30 +2.22163676695763e-16 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.8525 +22 +3.0 +32 +3.33066907387547e-16 +13 +0.8525 +23 +3.0 +33 +3.33066907387547e-16 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.8525 +20 +3.0 +30 +3.33066907387547e-16 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.6475 +22 +3.0 +32 +0.205 +13 +0.6475 +23 +3.0 +33 +0.205 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.6475 +20 +3.0 +30 +0.205 +11 +0.0 +21 +2.3525 +31 +0.205 +12 +0.0 +22 +2.57375 +32 +0.42625 +13 +0.0 +23 +2.57375 +33 +0.42625 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.6475 +20 +3.0 +30 +0.205 +11 +0.0 +21 +2.57375 +31 +0.42625 +12 +0.42625 +22 +3.0 +32 +0.42625 +13 +0.42625 +23 +3.0 +33 +0.42625 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.42625 +20 +3.0 +30 +0.42625 +11 +0.0 +21 +2.57375 +31 +0.42625 +12 +0.0 +22 +2.795 +32 +0.6475 +13 +0.0 +23 +2.795 +33 +0.6475 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.42625 +20 +3.0 +30 +0.42625 +11 +0.0 +21 +2.795 +31 +0.6475 +12 +0.205 +22 +3.0 +32 +0.6475 +13 +0.205 +23 +3.0 +33 +0.6475 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +0.205 +20 +3.0 +30 +0.6475 +11 +0.0 +21 +2.795 +31 +0.6475 +12 +0.0 +22 +3.0 +32 +0.8525 +13 +0.0 +23 +3.0 +33 +0.8525 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.27938364528661 +21 +0.772725344843521 +31 +0.0 +12 +1.20916059140253 +22 +0.797851555291422 +32 +0.0 +13 +1.20916059140253 +23 +0.797851555291422 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.27938364528661 +20 +0.772725344843521 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.35173135526774 +22 +0.754603186893545 +32 +0.0 +13 +1.35173135526774 +23 +0.754603186893545 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.82973983909525 +20 +1.85826151998776 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +0.797851555291422 +22 +1.79083940859747 +32 +0.0 +13 +0.797851555291422 +23 +1.79083940859747 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +0.82973983909525 +21 +1.85826151998776 +31 +0.0 +12 +0.868083094650066 +22 +1.9222333770949 +32 +0.0 +13 +0.868083094650066 +23 +1.9222333770949 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.797851555291422 +20 +1.79083940859747 +30 +0.0 +11 +0.283212517800539 +21 +1.74203407868223 +31 +1.35872768146951e-17 +12 +0.0257305779793495 +22 +2.1106623891929 +32 +5.17022605499795e-17 +13 +0.0257305779793495 +23 +2.1106623891929 +33 +5.17022605499795e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.283212517800539 +20 +1.74203407868223 +30 +1.35872768146951e-17 +11 +0.797851555291422 +21 +1.79083940859747 +31 +0.0 +12 +0.772725344843521 +22 +1.72061635471339 +32 +0.0 +13 +0.772725344843521 +23 +1.72061635471339 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.283212517800539 +20 +1.74203407868223 +30 +1.35872768146951e-17 +11 +0.772725344843521 +21 +1.72061635471339 +31 +0.0 +12 +0.754603186893545 +22 +1.64826864473226 +32 +0.0 +13 +0.754603186893545 +23 +1.64826864473226 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.97730561612803 +20 +2.2143383356498 +30 +1.61254466912702e-16 +11 +1.98213889596437 +21 +2.08748794455568 +31 +0.0 +12 +1.9222333770949 +22 +2.13191690534993 +32 +0.0 +13 +1.9222333770949 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.98213889596437 +20 +2.08748794455568 +30 +0.0 +11 +1.97730561612803 +21 +2.2143383356498 +31 +1.61254466912702e-16 +12 +2.11686086360521 +22 +2.11686086360521 +32 +1.46824902399879e-16 +13 +2.11686086360521 +23 +2.11686086360521 +33 +1.46824902399879e-16 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +1.98213889596437 +20 +2.08748794455568 +30 +0.0 +11 +2.11686086360521 +21 +2.11686086360521 +31 +1.46824902399879e-16 +12 +2.03740115370178 +22 +2.03740115370178 +32 +0.0 +13 +2.03740115370178 +23 +2.03740115370178 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.639832154473908 +20 +2.78733215447391 +30 +2.22163676695763e-16 +11 +0.962598846298224 +21 +2.03740115370178 +31 +0.0 +12 +0.42625 +22 +2.57375 +32 +1.66533453693774e-16 +13 +0.42625 +23 +2.57375 +33 +1.66533453693774e-16 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.962598846298224 +20 +2.03740115370178 +30 +0.0 +11 +0.639832154473908 +21 +2.78733215447391 +31 +2.22163676695763e-16 +12 +1.01786110403563 +22 +2.08748794455568 +32 +0.0 +13 +1.01786110403563 +23 +2.08748794455568 +33 +0.0 +70 +3 + 0 +3DFACE + 8 +iso_base_b +10 +1.01786110403563 +20 +2.08748794455568 +30 +0.0 +11 +0.639832154473908 +21 +2.78733215447391 +31 +2.22163676695763e-16 +12 +1.0777666229051 +22 +2.13191690534993 +32 +0.0 +13 +1.0777666229051 +23 +2.13191690534993 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.6475 +20 +3.0 +30 +0.205 +11 +1.14599166666667 +21 +3.0 +31 +0.205 +12 +0.8525 +22 +3.0 +32 +3.33066907387547e-16 +13 +0.8525 +23 +3.0 +33 +3.33066907387547e-16 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +1.57449302665047 +20 +2.25634039227087 +30 +0.0 +11 +1.5 +21 +1.5 +31 +0.0 +12 +1.5 +22 +2.26 +32 +0.0 +13 +1.5 +23 +2.26 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +1.5 +30 +0.0 +11 +1.57449302665047 +21 +2.25634039227087 +31 +0.0 +12 +1.64826864473226 +22 +2.24539681310645 +32 +0.0 +13 +1.64826864473226 +23 +2.24539681310645 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.205 +30 +1.5 +11 +0.0 +21 +0.205 +31 +1.35681024447031 +12 +0.0 +22 +0.0 +32 +1.5 +13 +0.0 +23 +0.0 +33 +1.5 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.797851555291422 +20 +1.20916059140253 +30 +0.0 +11 +0.785661664350193 +21 +1.02269438387197 +31 +-6.07901380123296e-17 +12 +0.687379562118009 +22 +1.16340159356772 +32 +-4.6241464304765e-17 +13 +0.687379562118009 +23 +1.16340159356772 +33 +-4.6241464304765e-17 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.785661664350193 +20 +1.02269438387197 +30 +-6.07901380123296e-17 +11 +0.797851555291422 +21 +1.20916059140253 +31 +0.0 +12 +0.82973983909525 +22 +1.14173848001224 +32 +0.0 +13 +0.82973983909525 +23 +1.14173848001224 +33 +0.0 +70 +13 + 0 +3DFACE + 8 +iso_base_b +10 +0.785661664350193 +20 +1.02269438387197 +30 +-6.07901380123296e-17 +11 +0.82973983909525 +21 +1.14173848001224 +31 +0.0 +12 +0.868083094650066 +22 +1.0777666229051 +32 +0.0 +13 +0.868083094650066 +23 +1.0777666229051 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.20214844470858 +20 +1.20916059140253 +30 +0.0 +11 +2.13191690534993 +21 +1.0777666229051 +31 +0.0 +12 +1.5 +22 +1.5 +32 +0.0 +13 +1.5 +23 +1.5 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +2.13191690534993 +20 +1.0777666229051 +30 +0.0 +11 +2.20214844470858 +21 +1.20916059140253 +31 +0.0 +12 +2.17026016090475 +22 +1.14173848001224 +32 +0.0 +13 +2.17026016090475 +23 +1.14173848001224 +33 +0.0 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.5 +21 +3.0 +31 +2.795 +12 +1.35681024447031 +22 +3.0 +32 +2.795 +13 +1.35681024447031 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.205 +30 +1.5 +11 +0.0 +21 +0.883139136394791 +31 +0.883139136394791 +12 +0.0 +22 +0.205 +32 +1.35681024447031 +13 +0.0 +23 +0.205 +33 +1.35681024447031 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.883139136394791 +30 +0.883139136394791 +11 +0.0 +21 +0.205 +31 +1.5 +12 +0.0 +22 +1.5 +32 +1.5 +13 +0.0 +23 +1.5 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +1.5 +20 +3.0 +30 +3.0 +11 +1.705 +21 +3.0 +31 +2.795 +12 +1.5 +22 +3.0 +32 +2.795 +13 +1.5 +23 +3.0 +33 +2.795 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.5477299185099 +30 +1.5 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +2.11686086360521 +32 +2.11686086360521 +13 +0.0 +23 +2.11686086360521 +33 +2.11686086360521 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +2.3525 +30 +0.205 +11 +0.0 +21 +2.1475 +31 +0.0 +12 +0.0 +22 +2.1475 +32 +0.205 +13 +0.0 +23 +2.1475 +33 +0.205 +70 +0 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +0.205 +30 +1.705 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +0.205 +32 +1.5 +13 +0.0 +23 +0.205 +33 +1.5 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +0.205 +31 +1.705 +12 +0.0 +22 +0.75 +32 +2.25 +13 +0.0 +23 +0.75 +33 +2.25 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.295 +30 +2.795 +11 +0.0 +21 +1.5 +31 +1.5 +12 +0.0 +22 +0.75 +32 +2.25 +13 +0.0 +23 +0.75 +33 +2.25 +70 +1 + 0 +3DFACE + 8 +iso_base_b +10 +0.0 +20 +1.5 +30 +1.5 +11 +0.0 +21 +1.295 +31 +2.795 +12 +0.0 +22 +1.5 +32 +2.795 +13 +0.0 +23 +1.5 +33 +2.795 +70 +1 + 0 +ENDSEC + 0 +EOF diff --git a/hacks/glx/lament.man b/hacks/glx/lament.man new file mode 100644 index 0000000..2077dd6 --- /dev/null +++ b/hacks/glx/lament.man @@ -0,0 +1,68 @@ +.TH XScreenSaver 1 "25-Jul-98" "X Version 11" +.SH NAME +lament - animates the Lament Configuration +.SH SYNOPSIS +.B lament +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps] +[\-texture] [\-no\-texture] [\-wireframe] +.SH DESCRIPTION +The \fIlament\fP program draws an animation of a particular puzzle box +repeatedly solving itself. +.SH OPTIONS +.I lament +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-texture +Use texture maps. This is the default. +.TP 8 +.B \-no\-texture +Do not use texture maps. This is boring and wrong. +.TP 8 +.B \-wireframe +Only draw outlines. +.TP 8 +.B \-delay \fImicroseconds\fP +How long to pause between frames. Default is 20000, or 0.02 second. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH BUGS +This hack is glacially slow on machines lacking hardware texture support. + +Occasionally opens doors, admitting theologians of the Order of the Gash. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 1998 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski , 25-Jul-98. diff --git a/hacks/glx/lament_model.c b/hacks/glx/lament_model.c new file mode 100644 index 0000000..d127599 --- /dev/null +++ b/hacks/glx/lament_model.c @@ -0,0 +1,16258 @@ +/* Generated from "lament.dxf" on Aug-25-2014. + Smoothed vertex normals. + Components: box, iso_base_a, iso_base_b, iso_den, iso_dse, iso_dwn, + iso_swd, iso_une, iso_unw, iso_use, iso_usw, leviathan, lid_a, lid_b, + lid_base, lid_c, lid_d, pillar_a, pillar_b, pillar_base, star_d, + star_u, taser_a, taser_b, taser_base, tetra_base, tetra_dse, + tetra_dwn, tetra_une, tetra_usw. + */ + +#include "gllist.h" + +static const float lament_model_box_data[] = { + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,2.795, + -1,0,0,0,0,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.205,3,3, + 0,0,1,0,3,3, + 0,0,1,0.205,3,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.497732,3,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.077767,2.131917,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.497732,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.87868,3, + 1,0,0,3,0.87868,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.795,0,0, + 0,-1,0,3,0,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,3,3,0, + 0.408248,0.408248,-0.816497,3,3,0, + 0,0.447214,-0.894427,2.502268,3,0, + 0,1,0,2.795,3,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,3,0,0, + 0,-0.447214,-0.894427,2.502268,0,0, + 0.408248,-0.408248,-0.816497,3,0,0, + 0,-1,0,2.795,0,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,3,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,3,0,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0.497732,0, + 0.408248,-0.408248,-0.816497,3,0,0, + 0.6,0,-0.8,3,0.497732,0, + 1,0,0,3,0.205,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0,0,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,3,1.5,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,3,3,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,3,3,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,3,3,0, + 0,0,-1,3,2.502268,0, + 0.447214,0,-0.894427,3,2.502268,0, + 0.408248,0.408248,-0.816497,3,3,0, + 1,0,0,3,2.795,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0,3,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.5,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,1,1.798369,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.798369,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,0.87868,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.201631,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.502268,0,3, + 0,0,1,3,0,3, + 0.408248,-0.408248,0.816497,3,0,3, + 0,0,1,2.502268,0,3, + 0,-0.948683,-0.316228,2.795,0,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.5,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.5,3,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,3,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,2.26,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,2.12132,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.502268,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,3,3,3, + 0,0,1,2.502268,3,3, + 0.408248,0.408248,0.816497,3,3,3, + 0,1,0,2.795,3,3, + 0,0,1,0.205,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.205,0,3, + 0,0,1,0.497732,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,3,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,3,3,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,3,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,2.502268,3, + 0.408248,0.408248,0.816497,3,3,3, + 0.447214,0,0.894427,3,2.502268,3, + 1,0,0,3,2.795,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0.205,3, + 0,0,1,0,0,3, + 0,0,1,0,0.205,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,0,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,1.798369,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0.87868,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0,0.87868,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,3,0.87868,3, + 0,0,1,3,1.201631,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.201631,3, + 0,0,1,3,1.5,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.502268,3,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.5,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0,2.795,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.795,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0,3,3, + 0,0,1,0,3,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0,3,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,1.5,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0,1.5,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,3,0,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,3,0,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,3,0,3, + 0,0,1,3,0.497732,3, + 0.447214,0,0.894427,3,0.497732,3, + 0.408248,-0.408248,0.816497,3,0,3, + 1,0,0,3,0.205,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,3,0.497732,3, + 0,0,1,3,0.87868,3, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.795,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,1.5,0,3, + 0,0,-1,1.5,0,3, + 0,0,-1,2.795,0,3, + 0,0,-1,2.502268,0,3, + 0,0,-1,1.5,0,3, + 0,0,-1,2.502268,0,3, + 0,0,-1,2.12132,0,3, + 0,0,1,1.5,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.798369,0,3, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,3, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.798369,0,0, + 0,-1,0,1.798369,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.87868,0,0, + 0,-1,0,0.87868,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.497732,0,0, + 0,-1,0,0.497732,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,3, + 0,0,1,0.205,0,3, + 0,0,1,1.5,0,3, + 0,0,1,1.201631,0,3, + 0,0,1,0.205,0,3, + 0,0,1,1.201631,0,3, + 0,0,1,0.87868,0,3, + 0,0,-1,0.205,0,3, + 0,0,-1,0.87868,0,3, + 0,0,-1,0.497732,0,3, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,3,3,3, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,3, + 0,1,0,2.795,3,3, + 0,0.447214,0.894427,1.5,3,3, + 0,0,1,1.798369,3,3, + 0,1,0,2.795,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,2.12132,3,3, + 0,1,0,2.795,3,3, + 0,0,1,2.12132,3,3, + 0,0,1,2.502268,3,3, + 0,1,0,0.205,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,1.5,3,3, + 0,0.447214,0.894427,1.5,3,3, + 0,0.83205,0.5547,0.205,3,3, + 0,0,1,0.497732,3,3, + 0,0.447214,0.894427,1.5,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0,0.447214,0.894427,1.5,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,1,0,0.205,3,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,3,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,0.87868,3,0, + 0,1,0,0.87868,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.201631,3,0, + 0,1,0,1.201631,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,0, + 0,1,0,1.5,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,0.205,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,3, + 0,1,0,1.5,3,0.205, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.12132,3,0, + 0,1,0,2.12132,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.502268,3,0, + 0,1,0,2.502268,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0.205, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,3, + -1,0,0,0,0.205,3, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,3,3, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,0, + -1,0,0,0,0,0, + -1,0,0,0,3,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,3, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,1.5, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,0.205, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0,0, + -1,0,0,0,0,0.205, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,1.5, + -1,0,0,0,1.5,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.87868,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.87868,3, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.5,3, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.205,0, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.497732,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.87868,0, + -1,0,0,0,0.87868,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,1.5, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,1.5,2.795, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,3,2.795, + -1,0,0,0,3,1.5, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.798369,0, + -1,0,0,0,1.798369,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.5,1.5, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,3, + -1,0,0,0,3,1.5, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,1.5, + -1,0,0,0,3,0.205, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,1.5, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.5,1.5, + -1,0,0,0,2.795,1.5, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,0.205, + 1,0,0,3,0.205,3, + 1,0,0,3,0,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,3,0.205, + 1,0,0,3,3,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.205,0, + 1,0,0,3,3,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,1.5, + 1,0,0,3,3,2.795, + 1,0,0,3,3,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,2.795, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,3,0, + 1,0,0,3,3,3, + 1,0,0,3,2.795,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0,3, + 1,0,0,3,0,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0,2.795, + 1,0,0,3,0,1.5, + 1,0,0,3,0,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,2.795, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,2.795, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.5,2.795, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,3,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0, + 1,0,0,3,1.798369,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.798369,3, + 1,0,0,3,1.798369,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,3, + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,0,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0.205, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,1.5,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,2.795,0,1.5, + 0,-1,0,0,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,1.5,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,2.795, + 0,-1,0,0,0,3, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.205,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0, + 0,1,0,0.8525,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.795,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.795,3,1.5, + 0,1,0,2.795,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,0.205, + 0,1,0,0.8525,3,0.8525, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,1.5, + 0,1,0,1.5,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0, + 0,1,0,0,3,0.205, + 0,1,0,3,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0, + 0,1,0,0,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,0.205, + 0,1,0,1.5,3,0.205, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,1,1.5,1.5,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.26,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.720616,2.227275,3 +}; +static const struct gllist lament_model_box_frame = { GL_N3F_V3F, GL_TRIANGLES, 1584, lament_model_box_data, 0 }; +const struct gllist *lament_model_box = &lament_model_box_frame; + +static const float lament_model_iso_base_a_data[] = { + 0,-1,0,0.883139,0,2.116861, + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.5,0,1.5, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.883139,0,2.116861, + 0,-1,0,0.679903,0,1.974903, + 1,0,0,3,1.5,1.5, + 1,0,0,3,0.6475,2.795, + 1,0,0,3,0.42625,2.57375, + 1,0,0,3,0.6475,2.795, + 1,0,0,3,1.5,1.5, + 1,0,0,3,1.145992,2.795, + 1,0,0,3,1.145992,2.795, + 1,0,0,3,1.5,1.5, + 1,0,0,3,1.5,2.54773, + 1,0,0,3,1.705,0.205, + 1,0,0,3,1.5,1.5, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,1.5, + 1,0,0,3,1.705,0.205, + 1,0,0,3,2.25,0.75, + 0,-1,0,2.649417,0,1.645583, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.54773,0,1.5, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.649417,0,1.645583, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,1.5,0,2.54773, + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.5,0,2.54773, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,1.645583,0,2.649417, + 0,-1,0,2.57375,0,2.57375, + 0,-1,0,1.645583,0,2.649417, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,1.645583,0,2.649417, + 0,-1,0,2.57375,0,2.57375, + 0,-1,0,2.3525,0,2.795, + 0,-1,0,1.645583,0,2.649417, + 0,-1,0,2.3525,0,2.795, + 0,-1,0,1.854008,0,2.795, + 0,-1,0,1.974903,0,0.679903, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.64319,0,0.205, + 1,0,0,3,0.45227,1.5, + 1,0,0,3,0.205,2.3525, + 1,0,0,3,0.205,1.854008, + 1,0,0,3,0.205,2.3525, + 1,0,0,3,0.45227,1.5, + 1,0,0,3,0.42625,2.57375, + 1,0,0,3,0.42625,2.57375, + 1,0,0,3,0.45227,1.5, + 1,0,0,3,1.5,1.5, + 1,0,0,3,1.145992,2.795, + 1,0,0,3,0.8525,3, + 1,0,0,3,0.6475,2.795, + 1,0,0,3,1.5,1.5, + 1,0,0,3,0.45227,1.5, + 1,0,0,3,0.883139,0.883139, + 1,0,0,3,1.35681,0.205, + 1,0,0,3,1.5,1.5, + 1,0,0,3,0.883139,0.883139, + 1,0,0,3,1.5,1.5, + 1,0,0,3,1.35681,0.205, + 1,0,0,3,1.5,0.205, + 0,0,1,1.5,1.5,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.077767,0.868083,3, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,1.5,0,1.5, + 0,0,1,1.5,1.5,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.720616,2.227275,3, + 0,-1,0,1.5,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,1.295,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.295,0,0.205, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.75,0,0.75, + 0,0,1,1.5,1.5,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.890028,2.44161,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.890028,2.44161,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.890028,2.44161,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.012247,2.266632,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.214338,1.977306,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.214338,1.977306,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.214338,1.977306,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.31262,1.836598,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.163402,0.68738,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,2.360168,0.212668,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,2.360168,0.212668,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.360168,0.212668,3, + 0,0,1,2.57375,0.42625,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.732234,2.667519,3, + 0,0,1,1.732234,2.667519,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.26,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.351731,0.754603,3, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,1.295, + 0,-1,0,0.205,0,1.5, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,1.163402,0.68738,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.022694,0.785662,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.163402,0.68738,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.163402,0.68738,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.116861,2.116861,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.116861,2.116861,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.116861,2.116861,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.214338,1.977306,3, + 0,0,1,2.716787,1.257966,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.716787,1.257966,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.716787,1.257966,3, + 0,0,1,2.54773,1.5,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.600816,2.100816,3, + 0,0,1,0.43934,1.93934,3, + 0,0,1,0.600816,2.100816,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.600816,2.100816,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.55839,1.109972,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.332481,1.267766,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.55839,1.109972,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.55839,1.109972,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.733368,0.987753,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.55839,1.109972,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.733368,0.987753,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.733368,0.987753,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,2.974269,0.889338,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.974269,0.889338,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.974269,0.889338,3, + 0,0,1,2.716787,1.257966,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.75,2.25,3, + 0,0,1,0.600816,2.100816,3, + 0,0,1,0.75,2.25,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.75,2.25,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.332481,1.267766,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0,1.5,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.332481,1.267766,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.332481,1.267766,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,2.57375,0.42625,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.57375,0.42625,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.57375,0.42625,3, + 0,0,1,2.787332,0.639832,3, + 0,0,1,2.787332,0.639832,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.787332,0.639832,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.787332,0.639832,3, + 0,0,1,2.974269,0.889338,3, + 0,0,1,2.974269,0.889338,3, + 0,0,1,2.787332,0.639832,3, + 0,0,1,3,0.8525,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.248866,1.748866,3, + 0,0,1,0,1.5,3, + 0,0,1,0.248866,1.748866,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.248866,1.748866,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,1.5,0.74,3, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.35681,0.205, + 1,0,0,3,1.5,0, + 0,0,1,1.5,1.5,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,2.360168,0.212668,3, + 0,0,1,2.360168,0.212668,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,2.1475,0,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.06066,2.56066,3, + 0,0,1,0.899184,2.399184,3, + 0,0,1,1.06066,2.56066,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.06066,2.56066,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.251134,2.751134,3, + 0,0,1,1.06066,2.56066,3, + 0,0,1,1.251134,2.751134,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.251134,2.751134,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.351731,2.245397,3, + 1,0,0,3,3,1.5, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,1.295, + 1,0,0,3,1.705,0.205, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,0, + 1,0,0,3,2.25,0.75, + 1,0,0,3,2.795,1.5, + 1,0,0,3,1.5,1.5, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.25,0.75, + 1,0,0,3,2.795,1.295, + 0,0,1,1.742034,0.283213,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.732234,2.667519,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.732234,2.667519,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.732234,2.667519,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.890028,2.44161,3, + 0,0,1,1.022694,0.785662,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.022694,0.785662,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.022694,0.785662,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.5,3,3, + 0,0,1,1.251134,2.751134,3, + 0,0,1,1.5,3,3, + 0,0,1,1.348827,2.26,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,3,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.227275,1.720616,3, + 1,0,0,3,2.116861,2.116861, + 1,0,0,3,1.5,2.54773, + 1,0,0,3,1.5,1.5, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.116861,2.116861, + 1,0,0,3,1.5,1.5, + 1,0,0,3,2.116861,2.116861, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,1.64319, + 1,0,0,3,3,1.5, + 1,0,0,3,2.795,1.64319, + 1,0,0,3,2.795,1.5, + 0,-1,0,0.205,0,1.64319, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.5,0,2.54773, + 0,-1,0,0.883139,0,2.116861, + 0,-1,0,1.5,0,1.5, + 1,0,0,3,0.205,2.3525, + 1,0,0,3,0,2.1475, + 1,0,0,3,0.205,1.854008, + 0,-1,0,1.64319,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.5,0,0, + 0,-1,0,0.679903,0,1.974903, + 0,-1,0,0.205,0,1.64319, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.205,0,1.295, + 0,-1,0,0.75,0,0.75, + 0,-1,0,0.205,0,1.295, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.974903,0,0.679903, + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.974903,0,0.679903, + 0,-1,0,2.116861,0,0.883139, + 0,-1,0,2.795,0,2.3525, + 0,-1,0,2.795,0,1.854008, + 0,-1,0,3,0,2.1475, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.116861,0,0.883139, + 0,-1,0,2.54773,0,1.5, + 0,-1,0,2.795,0,1.854008, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.649417,0,1.645583, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,1.854008, + 0,-1,0,2.795,0,2.3525, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,2.3525, + 0,-1,0,2.57375,0,2.57375, + 0,-1,0,2.1475,0,3, + 0,-1,0,1.854008,0,2.795, + 0,-1,0,2.3525,0,2.795, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.012247,2.266632,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.012247,2.266632,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.012247,2.266632,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.116861,2.116861,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.419919,1.682983,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.419919,1.682983,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.419919,1.682983,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.54773,1.5,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.31262,1.836598,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.31262,1.836598,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.31262,1.836598,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.419919,1.682983,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.43934,1.93934,3, + 0,0,1,0.248866,1.748866,3, + 0,0,1,0.43934,1.93934,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.43934,1.93934,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.209161,0.797852,3, + 0,-1,0,1.295,0,0.205, + 0,-1,0,1.5,0,0, + 0,-1,0,1.5,0,0.205, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.733368,0.987753,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.899184,2.399184,3, + 0,0,1,0.75,2.25,3, + 0,0,1,0.899184,2.399184,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.899184,2.399184,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.077767,2.131917,3, + -0.442836,-0.633994,0.633994,2.1475,0,3, + -0.442836,-0.633994,0.633994,2.110662,0.025731,3, + -0.442836,-0.633994,0.633994,1.854008,0,2.795, + -0.442836,-0.633994,0.633994,0.205,0,1.64319, + -0.442836,-0.633994,0.633994,0,1.5,3, + -0.442836,-0.633994,0.633994,0,0,1.5, + -0.442836,-0.633994,0.633994,0,1.5,3, + -0.442836,-0.633994,0.633994,0.205,0,1.64319, + -0.442836,-0.633994,0.633994,0.679903,0,1.974903, + -0.442836,-0.633994,0.633994,0,1.5,3, + -0.442836,-0.633994,0.633994,0.679903,0,1.974903, + -0.442836,-0.633994,0.633994,0.883139,0,2.116861, + -0.442836,-0.633994,0.633994,0,1.5,3, + -0.442836,-0.633994,0.633994,0.883139,0,2.116861, + -0.442836,-0.633994,0.633994,1.5,0,2.54773, + -0.442836,-0.633994,0.633994,0,1.5,3, + -0.442836,-0.633994,0.633994,1.5,0,2.54773, + -0.442836,-0.633994,0.633994,1.645583,0,2.649417, + -0.442836,-0.633994,0.633994,0,1.5,3, + -0.442836,-0.633994,0.633994,1.645583,0,2.649417, + -0.442836,-0.633994,0.633994,1.854008,0,2.795, + -0.442836,-0.633994,0.633994,0,1.5,3, + -0.442836,-0.633994,0.633994,1.854008,0,2.795, + -0.442836,-0.633994,0.633994,2.110662,0.025731,3, + 0,0,1,0,1.5,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,0,1.5,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,0,1.5,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,0,1.5,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.163402,0.68738,3, + 0,0,-1,0,1.5,3, + 0,0,-1,1.163402,0.68738,3, + 0,0,-1,1.022694,0.785662,3, + 0,0,1,0,1.5,3, + 0,0,1,1.022694,0.785662,3, + 0,0,1,0.883139,0.883139,3, + 0,0,-1,0,1.5,3, + 0,0,-1,0.883139,0.883139,3, + 0,0,-1,0.733368,0.987753,3, + 0,0,-1,0,1.5,3, + 0,0,-1,0.733368,0.987753,3, + 0,0,-1,0.55839,1.109972,3, + 0,0,-1,0,1.5,3, + 0,0,-1,0.55839,1.109972,3, + 0,0,-1,0.332481,1.267766,3, + 0.633994,0.442836,0.633994,3,1.145992,2.795, + 0.633994,0.442836,0.633994,2.974269,0.889338,3, + 0.633994,0.442836,0.633994,3,0.8525,3, + 0.633994,0.442836,0.633994,2.974269,0.889338,3, + 0.633994,0.442836,0.633994,3,1.145992,2.795, + 0.633994,0.442836,0.633994,2.716787,1.257966,3, + 0.633994,0.442836,0.633994,2.716787,1.257966,3, + 0.633994,0.442836,0.633994,3,1.145992,2.795, + 0.633994,0.442836,0.633994,3,1.5,2.54773, + 0.633994,0.442836,0.633994,2.716787,1.257966,3, + 0.633994,0.442836,0.633994,3,1.5,2.54773, + 0.633994,0.442836,0.633994,2.54773,1.5,3, + 0.633994,0.442836,0.633994,2.54773,1.5,3, + 0.633994,0.442836,0.633994,3,1.5,2.54773, + 0.633994,0.442836,0.633994,3,2.116861,2.116861, + 0.633994,0.442836,0.633994,2.54773,1.5,3, + 0.633994,0.442836,0.633994,3,2.116861,2.116861, + 0.633994,0.442836,0.633994,2.419919,1.682983,3, + 0.633994,0.442836,0.633994,2.419919,1.682983,3, + 0.633994,0.442836,0.633994,3,2.116861,2.116861, + 0.633994,0.442836,0.633994,2.31262,1.836598,3, + 0.633994,0.442836,0.633994,2.31262,1.836598,3, + 0.633994,0.442836,0.633994,3,2.116861,2.116861, + 0.633994,0.442836,0.633994,2.214338,1.977306,3, + 0.633994,0.442836,0.633994,2.214338,1.977306,3, + 0.633994,0.442836,0.633994,3,2.116861,2.116861, + 0.633994,0.442836,0.633994,2.116861,2.116861,3, + 0.633994,0.442836,0.633994,2.116861,2.116861,3, + 0.633994,0.442836,0.633994,3,2.116861,2.116861, + 0.633994,0.442836,0.633994,2.012247,2.266632,3, + 0.633994,0.442836,0.633994,2.012247,2.266632,3, + 0.633994,0.442836,0.633994,3,2.116861,2.116861, + 0.633994,0.442836,0.633994,3,2.795,1.64319, + 0.633994,0.442836,0.633994,2.012247,2.266632,3, + 0.633994,0.442836,0.633994,3,2.795,1.64319, + 0.633994,0.442836,0.633994,1.890028,2.44161,3, + 0.633994,0.442836,0.633994,1.890028,2.44161,3, + 0.633994,0.442836,0.633994,3,2.795,1.64319, + 0.633994,0.442836,0.633994,1.732234,2.667519,3, + 0.633994,0.442836,0.633994,1.732234,2.667519,3, + 0.633994,0.442836,0.633994,3,2.795,1.64319, + 0.633994,0.442836,0.633994,1.5,3,3, + 0.633994,0.442836,0.633994,1.5,3,3, + 0.633994,0.442836,0.633994,3,2.795,1.64319, + 0.633994,0.442836,0.633994,3,3,1.5, + -0.57735,0.57735,-0.57735,1.295,0,0.205, + -0.57735,0.57735,-0.57735,3,1.5,0, + -0.57735,0.57735,-0.57735,1.5,0,0, + -0.57735,0.57735,-0.57735,3,1.5,0, + -0.57735,0.57735,-0.57735,1.295,0,0.205, + -0.57735,0.57735,-0.57735,3,1.705,0.205, + -0.57735,0.57735,-0.57735,3,1.705,0.205, + -0.57735,0.57735,-0.57735,1.295,0,0.205, + -0.57735,0.57735,-0.57735,0.75,0,0.75, + -0.57735,0.57735,-0.57735,3,1.705,0.205, + -0.57735,0.57735,-0.57735,0.75,0,0.75, + -0.57735,0.57735,-0.57735,3,2.25,0.75, + -0.57735,0.57735,-0.57735,3,2.25,0.75, + -0.57735,0.57735,-0.57735,0.75,0,0.75, + -0.57735,0.57735,-0.57735,0.205,0,1.295, + -0.57735,0.57735,-0.57735,3,2.25,0.75, + -0.57735,0.57735,-0.57735,0.205,0,1.295, + -0.57735,0.57735,-0.57735,3,2.795,1.295, + -0.57735,0.57735,-0.57735,3,2.795,1.295, + -0.57735,0.57735,-0.57735,0.205,0,1.295, + -0.57735,0.57735,-0.57735,0,0,1.5, + -0.57735,0.57735,-0.57735,3,2.795,1.295, + -0.57735,0.57735,-0.57735,0,0,1.5, + -0.57735,0.57735,-0.57735,3,3,1.5, + -0.57735,0.57735,-0.57735,3,3,1.5, + -0.57735,0.57735,-0.57735,0,0,1.5, + -0.57735,0.57735,-0.57735,0,1.5,3, + -0.57735,0.57735,-0.57735,3,3,1.5, + -0.57735,0.57735,-0.57735,0,1.5,3, + -0.57735,0.57735,-0.57735,1.5,3,3, + 0,0,-1,1.5,3,3, + 0,0,-1,0,1.5,3, + 0,0,-1,0.248866,1.748866,3, + 0,0,1,1.5,3,3, + 0,0,1,0.248866,1.748866,3, + 0,0,1,0.43934,1.93934,3, + 0,0,-1,1.5,3,3, + 0,0,-1,0.43934,1.93934,3, + 0,0,-1,0.600816,2.100816,3, + 0,0,1,1.5,3,3, + 0,0,1,0.600816,2.100816,3, + 0,0,1,0.75,2.25,3, + 0,0,1,1.5,3,3, + 0,0,1,0.75,2.25,3, + 0,0,1,0.899184,2.399184,3, + 0,0,-1,1.5,3,3, + 0,0,-1,0.899184,2.399184,3, + 0,0,-1,1.06066,2.56066,3, + 0,0,-1,1.5,3,3, + 0,0,-1,1.06066,2.56066,3, + 0,0,-1,1.251134,2.751134,3, + 0.012176,0.99989,-0.008505,1.5,0,0, + 0.012176,0.99989,-0.008505,1.974903,0,0.679903, + 0.012176,0.99989,-0.008505,1.64319,0,0.205, + 0.633994,-0.633994,-0.442836,1.974903,0,0.679903, + 0.633994,-0.633994,-0.442836,1.5,0,0, + 0.633994,-0.633994,-0.442836,3,1.5,0, + 0.633994,-0.633994,-0.442836,1.974903,0,0.679903, + 0.633994,-0.633994,-0.442836,3,1.5,0, + 0.633994,-0.633994,-0.442836,2.116861,0,0.883139, + 0.633994,-0.633994,-0.442836,2.116861,0,0.883139, + 0.633994,-0.633994,-0.442836,3,1.5,0, + 0.633994,-0.633994,-0.442836,2.54773,0,1.5, + 0.633994,-0.633994,-0.442836,2.54773,0,1.5, + 0.633994,-0.633994,-0.442836,3,1.5,0, + 0.633994,-0.633994,-0.442836,2.649417,0,1.645583, + 0.633994,-0.633994,-0.442836,2.649417,0,1.645583, + 0.633994,-0.633994,-0.442836,3,1.5,0, + 0.633994,-0.633994,-0.442836,2.795,0,1.854008, + 0.633994,-0.633994,-0.442836,2.795,0,1.854008, + 0.633994,-0.633994,-0.442836,3,1.5,0, + 0.633994,-0.633994,-0.442836,3,0.205,1.854008, + 0.633994,-0.633994,-0.442836,2.795,0,1.854008, + 0.633994,-0.633994,-0.442836,3,0.205,1.854008, + 0.633994,-0.633994,-0.442836,3,0,2.1475, + -1,0,0,3,0.205,1.854008, + -1,0,0,3,1.5,0, + -1,0,0,3,0.883139,0.883139, + -1,0,0,3,0.205,1.854008, + -1,0,0,3,0.883139,0.883139, + -1,0,0,3,0.45227,1.5, + -1,0,0,3,0.883139,0.883139, + -1,0,0,3,1.5,0, + -1,0,0,3,1.35681,0.205, + 0.57735,-0.57735,0.57735,2.3525,0,2.795, + 0.57735,-0.57735,0.57735,2.360168,0.212668,3, + 0.57735,-0.57735,0.57735,2.1475,0,3, + 0.57735,-0.57735,0.57735,2.360168,0.212668,3, + 0.57735,-0.57735,0.57735,2.3525,0,2.795, + 0.57735,-0.57735,0.57735,2.57375,0,2.57375, + 0.57735,-0.57735,0.57735,2.360168,0.212668,3, + 0.57735,-0.57735,0.57735,2.57375,0,2.57375, + 0.57735,-0.57735,0.57735,2.795,0,2.3525, + 0.57735,-0.57735,0.57735,2.360168,0.212668,3, + 0.57735,-0.57735,0.57735,2.795,0,2.3525, + 0.57735,-0.57735,0.57735,3,0,2.1475, + 0.57735,-0.57735,0.57735,2.360168,0.212668,3, + 0.57735,-0.57735,0.57735,3,0,2.1475, + 0.57735,-0.57735,0.57735,3,0.205,2.3525, + 0.57735,-0.57735,0.57735,2.360168,0.212668,3, + 0.57735,-0.57735,0.57735,3,0.205,2.3525, + 0.57735,-0.57735,0.57735,3,0.42625,2.57375, + 0.57735,-0.57735,0.57735,2.360168,0.212668,3, + 0.57735,-0.57735,0.57735,3,0.42625,2.57375, + 0.57735,-0.57735,0.57735,2.57375,0.42625,3, + 0.57735,-0.57735,0.57735,2.57375,0.42625,3, + 0.57735,-0.57735,0.57735,3,0.42625,2.57375, + 0.57735,-0.57735,0.57735,3,0.6475,2.795, + 0.57735,-0.57735,0.57735,2.57375,0.42625,3, + 0.57735,-0.57735,0.57735,3,0.6475,2.795, + 0.57735,-0.57735,0.57735,2.787332,0.639832,3, + 0.57735,-0.57735,0.57735,2.787332,0.639832,3, + 0.57735,-0.57735,0.57735,3,0.6475,2.795, + 0.57735,-0.57735,0.57735,3,0.8525,3 +}; +static const struct gllist lament_model_iso_base_a_frame = { GL_N3F_V3F, GL_TRIANGLES, 858, lament_model_iso_base_a_data, 0 }; +const struct gllist *lament_model_iso_base_a = &lament_model_iso_base_a_frame; + +static const float lament_model_iso_base_b_data[] = { + 0.442836,0.633994,-0.633994,1.145992,3,0.205, + 0.442836,0.633994,-0.633994,0.889338,2.974269,0, + 0.442836,0.633994,-0.633994,0.8525,3,0, + 0.442836,0.633994,-0.633994,0.889338,2.974269,0, + 0.442836,0.633994,-0.633994,1.145992,3,0.205, + 0.442836,0.633994,-0.633994,1.257966,2.716787,0, + 0.442836,0.633994,-0.633994,1.257966,2.716787,0, + 0.442836,0.633994,-0.633994,1.145992,3,0.205, + 0.442836,0.633994,-0.633994,1.354417,3,0.350583, + 0.442836,0.633994,-0.633994,1.257966,2.716787,0, + 0.442836,0.633994,-0.633994,1.354417,3,0.350583, + 0.442836,0.633994,-0.633994,1.5,2.54773,0, + 0.442836,0.633994,-0.633994,1.5,2.54773,0, + 0.442836,0.633994,-0.633994,1.354417,3,0.350583, + 0.442836,0.633994,-0.633994,1.5,3,0.45227, + 0.442836,0.633994,-0.633994,1.5,2.54773,0, + 0.442836,0.633994,-0.633994,1.5,3,0.45227, + 0.442836,0.633994,-0.633994,2.116861,3,0.883139, + 0.442836,0.633994,-0.633994,1.5,2.54773,0, + 0.442836,0.633994,-0.633994,2.116861,3,0.883139, + 0.442836,0.633994,-0.633994,1.682983,2.419919,0, + 0.442836,0.633994,-0.633994,1.682983,2.419919,0, + 0.442836,0.633994,-0.633994,2.116861,3,0.883139, + 0.442836,0.633994,-0.633994,1.836598,2.31262,0, + 0.442836,0.633994,-0.633994,1.836598,2.31262,0, + 0.442836,0.633994,-0.633994,2.116861,3,0.883139, + 0.442836,0.633994,-0.633994,1.977306,2.214338,0, + 0.442836,0.633994,-0.633994,1.977306,2.214338,0, + 0.442836,0.633994,-0.633994,2.116861,3,0.883139, + 0.442836,0.633994,-0.633994,2.116861,2.116861,0, + 0.442836,0.633994,-0.633994,2.116861,2.116861,0, + 0.442836,0.633994,-0.633994,2.116861,3,0.883139, + 0.442836,0.633994,-0.633994,2.266632,2.012247,0, + 0.442836,0.633994,-0.633994,2.266632,2.012247,0, + 0.442836,0.633994,-0.633994,2.116861,3,0.883139, + 0.442836,0.633994,-0.633994,2.320097,3,1.025097, + 0.442836,0.633994,-0.633994,2.266632,2.012247,0, + 0.442836,0.633994,-0.633994,2.320097,3,1.025097, + 0.442836,0.633994,-0.633994,2.44161,1.890028,0, + 0.442836,0.633994,-0.633994,2.44161,1.890028,0, + 0.442836,0.633994,-0.633994,2.320097,3,1.025097, + 0.442836,0.633994,-0.633994,2.795,3,1.35681, + 0.442836,0.633994,-0.633994,2.44161,1.890028,0, + 0.442836,0.633994,-0.633994,2.795,3,1.35681, + 0.442836,0.633994,-0.633994,2.667519,1.732234,0, + 0.442836,0.633994,-0.633994,2.667519,1.732234,0, + 0.442836,0.633994,-0.633994,2.795,3,1.35681, + 0.442836,0.633994,-0.633994,3,1.5,0, + 0.442836,0.633994,-0.633994,3,1.5,0, + 0.442836,0.633994,-0.633994,2.795,3,1.35681, + 0.442836,0.633994,-0.633994,3,3,1.5, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.748866,0.248866,0, + 0,0,-1,1.748866,0.248866,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.648269,0.754603,0, + 0,1,0,1.5,3,1.5, + 0,1,0,2.116861,3,0.883139, + 0,1,0,1.5,3,0.45227, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.720616,0.772725,0, + 0,1,0,1.5,3,2.795, + 0,1,0,1.025097,3,2.320097, + 0,1,0,1.35681,3,2.795, + 0,1,0,0.883139,3,2.116861, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,2.795, + 0,1,0,0.883139,3,2.116861, + 0,1,0,1.025097,3,2.320097, + 0,0,-1,1.682983,2.419919,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.5,2.54773,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.682983,2.419919,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.682983,2.419919,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,0.212668,2.360168,0, + 0,0,-1,0.025731,2.110662,0, + 0,0,-1,0,2.1475,0, + 0,0,-1,0.025731,2.110662,0, + 0,0,-1,0.212668,2.360168,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.212668,2.360168,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.212668,2.360168,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.580081,1.317017,0, + 0,0,-1,0.45227,1.5,0, + 0,0,-1,0.580081,1.317017,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.580081,1.317017,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.748866,0.248866,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.748866,0.248866,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.748866,0.248866,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.93934,0.43934,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.399184,0.899184,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.399184,0.899184,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.399184,0.899184,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.56066,1.06066,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.751134,1.251134,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.751134,1.251134,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.751134,1.251134,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.5,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.212668,2.360168,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0.962599,2.037401,0, + -1,0,0,0,2.1475,0, + -1,0,0,0,1.854008,0.205, + -1,0,0,0,2.1475,0.205, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.797852,1.790839,0, + 0,1,0,0.350583,3,1.354417, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,1.5,3,1.5, + 0,1,0,0.350583,3,1.354417, + 0,1,0,0.45227,3,1.5, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,1,0,1.5,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,2.795, + 0,1,0,2.25,3,2.25, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.25,3,2.25, + 0,1,0,1.5,3,2.795, + 0,1,0,1.705,3,2.795, + 0,1,0,0.6475,3,0.205, + 0,1,0,1.354417,3,0.350583, + 0,1,0,1.145992,3,0.205, + 0,1,0,1.354417,3,0.350583, + 0,1,0,0.6475,3,0.205, + 0,1,0,0.42625,3,0.42625, + 0,1,0,1.354417,3,0.350583, + 0,1,0,0.42625,3,0.42625, + 0,1,0,0.8525,3,0.8525, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.795,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,2.320097,3,1.025097, + 0,1,0,2.116861,3,0.883139, + 0,1,0,2.320097,3,1.025097, + 0,1,0,1.5,3,1.5, + 0,1,0,2.795,3,1.5, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.574493,0.74366,0, + 0,1,0,0.205,3,0.6475, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.42625,3,0.42625, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,0.6475, + 0,1,0,0.205,3,1.145992, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,1.145992, + 0,1,0,0.350583,3,1.354417, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,0.74,0, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.795,3,1.705, + 0,1,0,2.795,3,1.5, + 0,1,0,2.795,3,1.705, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.25,3,2.25, + 0,1,0,2.795,3,1.5, + 0,1,0,2.795,3,1.35681, + 0,1,0,2.320097,3,1.025097, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.209161,0.797852,0, + 0,1,0,0.8525,3,0.8525, + 0,1,0,1.5,3,0.45227, + 0,1,0,1.354417,3,0.350583, + 0,1,0,1.5,3,0.45227, + 0,1,0,0.8525,3,0.8525, + 0,1,0,1.5,3,1.5, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.077767,2.131917,0, + 0,1,0,0.883139,3,2.116861, + 0,1,0,1.5,3,1.5, + 0,1,0,0.45227,3,1.5, + 0,1,0,0.205,3,1.145992, + 0,1,0,0.205,3,0.6475, + 0,1,0,0,3,0.8525, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.351731,2.245397,0, + -1,0,0,0,1.5,0.45227, + -1,0,0,0,0.883139,0.883139, + -1,0,0,0,1.5,1.5, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + -0.633994,-0.442836,-0.633994,0,0.205,1.35681, + -0.633994,-0.442836,-0.633994,1.5,0,0, + -0.633994,-0.442836,-0.633994,0,0,1.5, + -0.633994,-0.442836,-0.633994,1.5,0,0, + -0.633994,-0.442836,-0.633994,0,0.205,1.35681, + -0.633994,-0.442836,-0.633994,1.267766,0.332481,0, + -0.633994,-0.442836,-0.633994,1.267766,0.332481,0, + -0.633994,-0.442836,-0.633994,0,0.205,1.35681, + -0.633994,-0.442836,-0.633994,0,0.883139,0.883139, + -0.633994,-0.442836,-0.633994,1.267766,0.332481,0, + -0.633994,-0.442836,-0.633994,0,0.883139,0.883139, + -0.633994,-0.442836,-0.633994,1.109972,0.55839,0, + -0.633994,-0.442836,-0.633994,1.109972,0.55839,0, + -0.633994,-0.442836,-0.633994,0,0.883139,0.883139, + -0.633994,-0.442836,-0.633994,0.987753,0.733368,0, + -0.633994,-0.442836,-0.633994,0.987753,0.733368,0, + -0.633994,-0.442836,-0.633994,0,0.883139,0.883139, + -0.633994,-0.442836,-0.633994,0.883139,0.883139,0, + -0.633994,-0.442836,-0.633994,0.883139,0.883139,0, + -0.633994,-0.442836,-0.633994,0,0.883139,0.883139, + -0.633994,-0.442836,-0.633994,0.785662,1.022694,0, + -0.633994,-0.442836,-0.633994,0.785662,1.022694,0, + -0.633994,-0.442836,-0.633994,0,0.883139,0.883139, + -0.633994,-0.442836,-0.633994,0,1.5,0.45227, + -0.633994,-0.442836,-0.633994,0.785662,1.022694,0, + -0.633994,-0.442836,-0.633994,0,1.5,0.45227, + -0.633994,-0.442836,-0.633994,0.68738,1.163402,0, + -0.633994,-0.442836,-0.633994,0.68738,1.163402,0, + -0.633994,-0.442836,-0.633994,0,1.5,0.45227, + -0.633994,-0.442836,-0.633994,0.580081,1.317017,0, + -0.633994,-0.442836,-0.633994,0.580081,1.317017,0, + -0.633994,-0.442836,-0.633994,0,1.5,0.45227, + -0.633994,-0.442836,-0.633994,0.45227,1.5,0, + -0.633994,-0.442836,-0.633994,0.45227,1.5,0, + -0.633994,-0.442836,-0.633994,0,1.5,0.45227, + -0.633994,-0.442836,-0.633994,0,1.854008,0.205, + -0.633994,-0.442836,-0.633994,0.45227,1.5,0, + -0.633994,-0.442836,-0.633994,0,1.854008,0.205, + -0.633994,-0.442836,-0.633994,0.283213,1.742034,0, + -0.633994,-0.442836,-0.633994,0.283213,1.742034,0, + -0.633994,-0.442836,-0.633994,0,1.854008,0.205, + -0.633994,-0.442836,-0.633994,0.025731,2.110662,0, + -0.633994,-0.442836,-0.633994,0.025731,2.110662,0, + -0.633994,-0.442836,-0.633994,0,1.854008,0.205, + -0.633994,-0.442836,-0.633994,0,2.1475,0, + 0,0,-1,1.836598,2.31262,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.836598,2.31262,0, + 0,0,-1,1.977306,2.214338,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.977306,2.214338,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.100816,0.600816,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.100816,0.600816,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.100816,0.600816,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.25,0.75,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.25,0.75,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.25,0.75,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.25,0.75,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.399184,0.899184,0, + 0,0,-1,2.266632,2.012247,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.266632,2.012247,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.266632,2.012247,0, + 0,0,-1,2.44161,1.890028,0, + 0,0,-1,2.44161,1.890028,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.44161,1.890028,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.44161,1.890028,0, + 0,0,-1,2.667519,1.732234,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.883139,0.883139,0, + 0,0,-1,0.785662,1.022694,0, + 0,0,-1,0.883139,0.883139,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.883139,0.883139,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.987753,0.733368,0, + 0,0,-1,0.883139,0.883139,0, + 0,0,-1,0.987753,0.733368,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,0.987753,0.733368,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.5,2.54773,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.257966,2.716787,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,2.54773,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,2.54773,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.109972,0.55839,0, + 0,0,-1,0.987753,0.733368,0, + 0,0,-1,1.109972,0.55839,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.109972,0.55839,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,2.667519,1.732234,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.667519,1.732234,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.667519,1.732234,0, + 0,0,-1,3,1.5,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.93934,0.43934,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.93934,0.43934,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.93934,0.43934,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.100816,0.600816,0, + 0,0,-1,1.682983,2.419919,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.682983,2.419919,0, + 0,0,-1,1.836598,2.31262,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.836598,2.31262,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.267766,0.332481,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0.74,0, + 0.57735,-0.57735,0.57735,1.5,0,0, + 0.57735,-0.57735,0.57735,0,0.205,1.705, + 0.57735,-0.57735,0.57735,0,0,1.5, + 0.57735,-0.57735,0.57735,0,0.205,1.705, + 0.57735,-0.57735,0.57735,1.5,0,0, + 0.57735,-0.57735,0.57735,1.748866,0.248866,0, + 0.57735,-0.57735,0.57735,0,0.205,1.705, + 0.57735,-0.57735,0.57735,1.748866,0.248866,0, + 0.57735,-0.57735,0.57735,0,0.75,2.25, + 0.57735,-0.57735,0.57735,0,0.75,2.25, + 0.57735,-0.57735,0.57735,1.748866,0.248866,0, + 0.57735,-0.57735,0.57735,1.93934,0.43934,0, + 0.57735,-0.57735,0.57735,0,0.75,2.25, + 0.57735,-0.57735,0.57735,1.93934,0.43934,0, + 0.57735,-0.57735,0.57735,2.100816,0.600816,0, + 0.57735,-0.57735,0.57735,0,0.75,2.25, + 0.57735,-0.57735,0.57735,2.100816,0.600816,0, + 0.57735,-0.57735,0.57735,2.25,0.75,0, + 0.57735,-0.57735,0.57735,0,0.75,2.25, + 0.57735,-0.57735,0.57735,2.25,0.75,0, + 0.57735,-0.57735,0.57735,2.399184,0.899184,0, + 0.57735,-0.57735,0.57735,0,0.75,2.25, + 0.57735,-0.57735,0.57735,2.399184,0.899184,0, + 0.57735,-0.57735,0.57735,0,1.295,2.795, + 0.57735,-0.57735,0.57735,0,1.295,2.795, + 0.57735,-0.57735,0.57735,2.399184,0.899184,0, + 0.57735,-0.57735,0.57735,2.56066,1.06066,0, + 0.57735,-0.57735,0.57735,0,1.295,2.795, + 0.57735,-0.57735,0.57735,2.56066,1.06066,0, + 0.57735,-0.57735,0.57735,2.751134,1.251134,0, + 0.57735,-0.57735,0.57735,0,1.295,2.795, + 0.57735,-0.57735,0.57735,2.751134,1.251134,0, + 0.57735,-0.57735,0.57735,3,1.5,0, + 0.57735,-0.57735,0.57735,0,1.295,2.795, + 0.57735,-0.57735,0.57735,3,1.5,0, + 0.57735,-0.57735,0.57735,0,1.5,3, + 0.57735,-0.57735,0.57735,0,1.5,3, + 0.57735,-0.57735,0.57735,3,1.5,0, + 0.57735,-0.57735,0.57735,3,3,1.5, + 0.57735,-0.57735,0.57735,0,1.5,3, + 0.57735,-0.57735,0.57735,3,3,1.5, + 0.57735,-0.57735,0.57735,1.705,3,2.795, + 0.627963,0.459701,0.627963,1.705,3,2.795, + 0.713615,0.660796,0.232598,3,3,1.5, + 0,1,0,2.25,3,2.25, + 0,1,0,2.25,3,2.25, + 0.713615,0.660796,0.232598,3,3,1.5, + 0,1,0,2.795,3,1.705, + 0.57735,-0.57735,0.57735,1.5,3,3, + 0.57735,-0.57735,0.57735,0,1.5,3, + 0.57735,-0.57735,0.57735,1.705,3,2.795, + -0.633994,0.633994,0.442836,1.5,3,3, + -0.633994,0.633994,0.442836,0,1.64319,2.795, + -0.633994,0.633994,0.442836,0,1.5,3, + -0.633994,0.633994,0.442836,0,1.64319,2.795, + -0.633994,0.633994,0.442836,1.5,3,3, + -0.633994,0.633994,0.442836,0,2.116861,2.116861, + -0.633994,0.633994,0.442836,0,2.116861,2.116861, + -0.633994,0.633994,0.442836,1.5,3,3, + -0.633994,0.633994,0.442836,0,2.54773,1.5, + -0.633994,0.633994,0.442836,0,2.54773,1.5, + -0.633994,0.633994,0.442836,1.5,3,3, + -0.633994,0.633994,0.442836,0,2.795,1.145992, + -0.633994,0.633994,0.442836,0,2.795,1.145992, + -0.633994,0.633994,0.442836,1.5,3,3, + -0.633994,0.633994,0.442836,1.35681,3,2.795, + -0.633994,0.633994,0.442836,1.35681,3,2.795, + -0.633994,0.633994,0.442836,0,3,0.8525, + -0.633994,0.633994,0.442836,0,2.795,1.145992, + 0,1,0,0,3,0.8525, + 0,1,0,1.35681,3,2.795, + 0,1,0,1.025097,3,2.320097, + 0,1,0,0,3,0.8525, + 0,1,0,1.025097,3,2.320097, + 0,1,0,0.883139,3,2.116861, + 0,1,0,0,3,0.8525, + 0,1,0,0.883139,3,2.116861, + 0,1,0,0.45227,3,1.5, + 0,1,0,0,3,0.8525, + 0,1,0,0.45227,3,1.5, + 0,1,0,0.350583,3,1.354417, + 0,-1,0,0,3,0.8525, + 0,-1,0,0.350583,3,1.354417, + 0,-1,0,0.205,3,1.145992, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.295,2.795, + -1,0,0,0,1.5,3, + -1,0,0,0,2.54773,1.5, + -1,0,0,0,2.57375,0.42625, + -1,0,0,0,1.5,1.5, + -1,0,0,0,2.57375,0.42625, + -1,0,0,0,2.54773,1.5, + -1,0,0,0,2.795,1.145992, + -1,0,0,0,2.57375,0.42625, + -1,0,0,0,2.795,1.145992, + -1,0,0,0,2.795,0.6475, + -0.836014,0.387995,-0.387995,0,2.795,0.6475, + -0.903879,0.350707,0.244964,0,2.795,1.145992, + -1,0,0,0,2.795,0.8525, + -1,0,0,0,1.64319,2.795, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,3, + -1,0,0,0,3,0.8525, + -1,0,0,0,2.795,0.8525, + -1,0,0,0,2.795,1.145992, + -1,0,0,0,1.64319,2.795, + -1,0,0,0,1.5,1.5, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,1.5, + -1,0,0,0,1.64319,2.795, + -1,0,0,0,2.116861,2.116861, + -1,0,0,0,2.57375,0.42625, + -1,0,0,0,1.5,0.45227, + -1,0,0,0,1.5,1.5, + -1,0,0,0,1.5,0.45227, + -1,0,0,0,2.57375,0.42625, + -1,0,0,0,1.854008,0.205, + -1,0,0,0,1.854008,0.205, + -1,0,0,0,2.57375,0.42625, + -1,0,0,0,2.1475,0.205, + -1,0,0,0,2.1475,0.205, + -1,0,0,0,2.57375,0.42625, + -1,0,0,0,2.3525,0.205, + -1,0,0,0,0.205,1.705, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0,1.5, + -1,0,0,0,3,0.8525, + -1,0,0,0,2.795,0.6475, + -1,0,0,0,2.795,0.8525, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.267766,0.332481,0, + 0,0,-1,1.109972,0.55839,0, + 0,0,-1,1.267766,0.332481,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.267766,0.332481,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.257966,2.716787,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,0.889338,2.974269,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.257966,2.716787,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.257966,2.716787,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,2.116861,2.116861,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.116861,2.116861,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.116861,2.116861,0, + 0,0,-1,2.266632,2.012247,0, + 0,1,0,2.795,3,1.705, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,1.5, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.68738,1.163402,0, + 0,0,-1,0.580081,1.317017,0, + 0,0,-1,0.68738,1.163402,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.68738,1.163402,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.45227,1.5,0, + 0,0,-1,0.283213,1.742034,0, + 0,0,-1,0.45227,1.5,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.45227,1.5,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.56066,1.06066,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.56066,1.06066,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.56066,1.06066,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.751134,1.251134,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,0.8525,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.639832,2.787332,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.8525,3,0, + 0,0,-1,0.889338,2.974269,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.889338,2.974269,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,0.889338,2.974269,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,2.26,0, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,1.35681, + 0,1,0,2.795,3,1.5, + -0.57735,0.57735,-0.57735,0,2.3525,0.205, + -0.57735,0.57735,-0.57735,0.212668,2.360168,0, + -0.57735,0.57735,-0.57735,0,2.1475,0, + -0.57735,0.57735,-0.57735,0.212668,2.360168,0, + -0.57735,0.57735,-0.57735,0,2.3525,0.205, + -0.57735,0.57735,-0.57735,0.42625,2.57375,0, + -0.57735,0.57735,-0.57735,0.42625,2.57375,0, + -0.57735,0.57735,-0.57735,0,2.3525,0.205, + -0.57735,0.57735,-0.57735,0.639832,2.787332,0, + -0.57735,0.57735,-0.57735,0.639832,2.787332,0, + -0.57735,0.57735,-0.57735,0,2.3525,0.205, + -0.57735,0.57735,-0.57735,0.8525,3,0, + -0.57735,0.57735,-0.57735,0.8525,3,0, + -0.57735,0.57735,-0.57735,0,2.3525,0.205, + -0.57735,0.57735,-0.57735,0.6475,3,0.205, + -0.57735,0.57735,-0.57735,0.6475,3,0.205, + -0.57735,0.57735,-0.57735,0,2.3525,0.205, + -0.57735,0.57735,-0.57735,0,2.57375,0.42625, + -0.57735,0.57735,-0.57735,0.6475,3,0.205, + -0.57735,0.57735,-0.57735,0,2.57375,0.42625, + -0.57735,0.57735,-0.57735,0.42625,3,0.42625, + -0.57735,0.57735,-0.57735,0.42625,3,0.42625, + -0.57735,0.57735,-0.57735,0,2.57375,0.42625, + -0.57735,0.57735,-0.57735,0,2.795,0.6475, + -0.57735,0.57735,-0.57735,0.42625,3,0.42625, + -0.57735,0.57735,-0.57735,0,2.795,0.6475, + -0.57735,0.57735,-0.57735,0.205,3,0.6475, + -0.57735,0.57735,-0.57735,0.205,3,0.6475, + -0.57735,0.57735,-0.57735,0,2.795,0.6475, + -0.57735,0.57735,-0.57735,0,3,0.8525, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.283213,1.742034,0, + 0,0,-1,0.025731,2.110662,0, + 0,0,-1,0.283213,1.742034,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.283213,1.742034,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,1.977306,2.214338,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.977306,2.214338,0, + 0,0,-1,2.116861,2.116861,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,2.116861,2.116861,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,0.639832,2.787332,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.639832,2.787332,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,0.639832,2.787332,0, + 0,0,-1,1.077767,2.131917,0, + 0,1,0,0.6475,3,0.205, + 0,1,0,1.145992,3,0.205, + 0,1,0,0.8525,3,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.648269,2.245397,0, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,1.35681, + -1,0,0,0,0,1.5, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.785662,1.022694,0, + 0,0,-1,0.68738,1.163402,0, + 0,0,-1,0.785662,1.022694,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.785662,1.022694,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.17026,1.141738,0, + 0,1,0,1.5,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,1.35681,3,2.795, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.883139,0.883139, + -1,0,0,0,0.205,1.35681, + -1,0,0,0,0.883139,0.883139, + -1,0,0,0,0.205,1.5, + -1,0,0,0,1.5,1.5, + 0,1,0,1.5,3,3, + 0,1,0,1.705,3,2.795, + 0,1,0,1.5,3,2.795, + -1,0,0,0,2.54773,1.5, + -1,0,0,0,1.5,1.5, + -1,0,0,0,2.116861,2.116861, + -1,0,0,0,2.3525,0.205, + -1,0,0,0,2.1475,0, + -1,0,0,0,2.1475,0.205, + -1,0,0,0,0.205,1.705, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.205,1.5, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.205,1.705, + -1,0,0,0,0.75,2.25, + -1,0,0,0,1.295,2.795, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.75,2.25, + -1,0,0,0,1.5,1.5, + -1,0,0,0,1.295,2.795, + -1,0,0,0,1.5,2.795 +}; +static const struct gllist lament_model_iso_base_b_frame = { GL_N3F_V3F, GL_TRIANGLES, 864, lament_model_iso_base_b_data, 0 }; +const struct gllist *lament_model_iso_base_b = &lament_model_iso_base_b_frame; + +static const float lament_model_iso_den_data[] = { + 0,1,0,1.5,3,0.45227, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,0.45227, + 0,1,0,2.116861,3,0.883139, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.836598,2.31262,0, + 0,0,-1,1.682983,2.419919,0, + 0,0,-1,1.836598,2.31262,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.977306,2.214338,0, + 0,0,-1,1.836598,2.31262,0, + 0,0,-1,1.977306,2.214338,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,2.116861,2.116861,0, + 0,0,-1,1.977306,2.214338,0, + 0,0,-1,2.116861,2.116861,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,3,3,0, + 0.485071,0.485071,-0.727607,3,3,0, + 0,0.5547,-0.83205,2.502268,3,0, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0.45227, + 0,1,0,1.5,3,0.205, + 0,1,0,1.354417,3,0.350583, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,1.35681, + 0,1,0,2.795,3,0.205, + 0,1,0,2.795,3,1.35681, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.320097,3,1.025097, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,1.354417,3,0.350583, + 0,1,0,1.5,3,0.205, + 0,1,0,1.145992,3,0.205, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.44161,1.890028,0, + 0,0,-1,2.266632,2.012247,0, + 0,0,-1,2.44161,1.890028,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,3,2.12132,0, + 0,1,0,2.795,3,1.35681, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,1.35681, + 0,1,0,3,3,1.5, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.5,2.54773,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.54773,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.682983,2.419919,0, + 0,0,-1,3,1.5,0, + 0,0,-1,2.667519,1.732234,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,3,3,0, + 0,0,-1,2.266632,2.012247,0, + 0,0,-1,2.116861,2.116861,0, + 0,0,-1,2.266632,2.012247,0, + 0,0,-1,3,3,0, + 0,0,-1,3,2.502268,0, + 0.5547,0,-0.83205,3,2.502268,0, + 0.485071,0.485071,-0.727607,3,3,0, + 1,0,0,3,2.795,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,0.889338,2.974269,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,0.889338,2.974269,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.257966,2.716787,0, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0, + 1,0,0,3,1.798369,0, + 1,0,0,3,1.705,0.205, + 1,0,0,3,1.5,0, + 1,0,0,3,1.705,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0, + 0,1,0,0.8525,3,0, + 0,1,0,1.201631,3,0, + 0,1,0,0.87868,3,0, + 0,1,0,1.201631,3,0, + 0,1,0,0.8525,3,0, + 0,1,0,1.5,3,0, + 0,1,0,1.5,3,0, + 0,1,0,0.8525,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,0.8525,3,0, + 0,1,0,1.145992,3,0.205, + 0,0,-1,1.5,3,0, + 0,0,-1,1.257966,2.716787,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.257966,2.716787,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.54773,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.667519,1.732234,0, + 0,0,-1,2.44161,1.890028,0, + 0,0,-1,2.667519,1.732234,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,3,1.798369,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.25,0.75, + 1,0,0,3,1.705,0.205, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,3,0, + 0,1,0,3,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0.205, + 1,0,0,3,3,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0, + 1,0,0,3,2.795,1.295, + 1,0,0,3,2.25,0.75, + 1,0,0,3,2.795,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.12132,3,0, + 0,1,0,2.12132,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.502268,3,0, + 0,1,0,2.502268,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0.205, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,1.295, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.295, + 1,0,0,3,3,0.205, + 1,0,0,3,3,1.5, + 0,1,0,2.320097,3,1.025097, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.116861,3,0.883139, + 0,0,-1,0.889338,2.974269,0, + 0,0,-1,0.8525,3,0, + 0,0,-1,0.87868,3,0, + -0.442836,-0.633994,0.633994,0.889338,2.974269,0, + -0.442836,-0.633994,0.633994,1.145992,3,0.205, + -0.442836,-0.633994,0.633994,0.8525,3,0, + -0.442836,-0.633994,0.633994,1.145992,3,0.205, + -0.442836,-0.633994,0.633994,0.889338,2.974269,0, + -0.442836,-0.633994,0.633994,1.257966,2.716787,0, + -0.442836,-0.633994,0.633994,1.145992,3,0.205, + -0.442836,-0.633994,0.633994,1.257966,2.716787,0, + -0.442836,-0.633994,0.633994,1.354417,3,0.350583, + -0.442836,-0.633994,0.633994,1.354417,3,0.350583, + -0.442836,-0.633994,0.633994,1.257966,2.716787,0, + -0.442836,-0.633994,0.633994,1.5,2.54773,0, + -0.442836,-0.633994,0.633994,1.354417,3,0.350583, + -0.442836,-0.633994,0.633994,1.5,2.54773,0, + -0.442836,-0.633994,0.633994,1.5,3,0.45227, + -0.442836,-0.633994,0.633994,1.5,3,0.45227, + -0.442836,-0.633994,0.633994,1.5,2.54773,0, + -0.442836,-0.633994,0.633994,1.682983,2.419919,0, + -0.442836,-0.633994,0.633994,1.5,3,0.45227, + -0.442836,-0.633994,0.633994,1.682983,2.419919,0, + -0.442836,-0.633994,0.633994,2.116861,3,0.883139, + -0.442836,-0.633994,0.633994,2.116861,3,0.883139, + -0.442836,-0.633994,0.633994,1.682983,2.419919,0, + -0.442836,-0.633994,0.633994,1.836598,2.31262,0, + -0.442836,-0.633994,0.633994,2.116861,3,0.883139, + -0.442836,-0.633994,0.633994,1.836598,2.31262,0, + -0.442836,-0.633994,0.633994,1.977306,2.214338,0, + -0.442836,-0.633994,0.633994,2.116861,3,0.883139, + -0.442836,-0.633994,0.633994,1.977306,2.214338,0, + -0.442836,-0.633994,0.633994,2.116861,2.116861,0, + -0.442836,-0.633994,0.633994,2.116861,3,0.883139, + -0.442836,-0.633994,0.633994,2.116861,2.116861,0, + -0.442836,-0.633994,0.633994,2.266632,2.012247,0, + -0.442836,-0.633994,0.633994,2.116861,3,0.883139, + -0.442836,-0.633994,0.633994,2.266632,2.012247,0, + -0.442836,-0.633994,0.633994,2.320097,3,1.025097, + -0.442836,-0.633994,0.633994,2.320097,3,1.025097, + -0.442836,-0.633994,0.633994,2.266632,2.012247,0, + -0.442836,-0.633994,0.633994,2.44161,1.890028,0, + -0.442836,-0.633994,0.633994,2.320097,3,1.025097, + -0.442836,-0.633994,0.633994,2.44161,1.890028,0, + -0.442836,-0.633994,0.633994,2.795,3,1.35681, + -0.442836,-0.633994,0.633994,2.795,3,1.35681, + -0.442836,-0.633994,0.633994,2.44161,1.890028,0, + -0.442836,-0.633994,0.633994,2.667519,1.732234,0, + -0.442836,-0.633994,0.633994,2.795,3,1.35681, + -0.442836,-0.633994,0.633994,2.667519,1.732234,0, + -0.442836,-0.633994,0.633994,3,1.5,0, + -0.442836,-0.633994,0.633994,2.795,3,1.35681, + -0.442836,-0.633994,0.633994,3,1.5,0, + -0.442836,-0.633994,0.633994,3,3,1.5, + 0.605634,0.397847,0.689148,3,3,1.5, + 0.087875,-0.974602,0.205981,3,1.5,0, + 1,0,0,3,1.705,0.205, + 0.605634,0.397847,0.689148,3,3,1.5, + 1,0,0,3,1.705,0.205, + 1,0,0,3,2.25,0.75, + 0.605634,0.397847,0.689148,3,3,1.5, + 1,0,0,3,2.25,0.75, + 1,0,0,3,2.795,1.295 +}; +static const struct gllist lament_model_iso_den_frame = { GL_N3F_V3F, GL_TRIANGLES, 222, lament_model_iso_den_data, 0 }; +const struct gllist *lament_model_iso_den = &lament_model_iso_den_frame; + +static const float lament_model_iso_dse_data[] = { + 0,0,-1,1.798369,0,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.748866,0.248866,0, + 0,0,-1,2.100816,0.600816,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.93934,0.43934,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,2.100816,0.600816,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.93934,0.43934,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.748866,0.248866,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.93934,0.43934,0, + 0,0,-1,2.12132,0,0, + 0,-1,0,2.649417,0,1.645583, + 0,-1,0,2.54773,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.1475,0,0.8525, + -0.003005,-0.999993,0.002099,1.64319,0,0.205, + 0,-1,0,2.795,0,0.205, + -0.003005,-0.999993,0.002099,1.64319,0,0.205, + 0,-1,0,2.1475,0,0.8525, + -0.004007,-0.999988,0.002799,1.974903,0,0.679903, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.116861,0,0.883139, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,2.116861,0,0.883139, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.54773,0,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.798369,0,0, + 0,-1,0,1.798369,0,0, + 0,-1,0,2.795,0,0.205, + -0.004007,-0.999988,0.002799,1.5,0,0, + -0.004007,-0.999988,0.002799,1.5,0,0, + 0,-1,0,2.795,0,0.205, + -0.003005,-0.999993,0.002099,1.64319,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 1,0,0,3,0.883139,0.883139, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.883139,0.883139, + 1,0,0,3,0.45227,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0, + 0,-1,0,3,0,0.205, + 0,0,-1,2.56066,1.06066,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.399184,0.899184,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.56066,1.06066,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.25,0.75,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,2.100816,0.600816,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,2.25,0.75,0, + 0,0,-1,3,0,0, + 0,-0.5547,-0.83205,2.502268,0,0, + 0.485071,-0.485071,-0.727607,3,0,0, + 0,-1,0,2.795,0,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.751134,1.251134,0, + 0,0,-1,3,1.5,0, + 0,0,-1,2.399184,0.899184,0, + 0,0,-1,3,0,0, + 0,0,-1,2.25,0.75,0, + 0,0,-1,3,0,0, + 0,0,-1,2.399184,0.899184,0, + 0,0,-1,3,0.497732,0, + 0.485071,-0.485071,-0.727607,3,0,0, + 0.707107,0,-0.707107,3,0.497732,0, + 1,0,0,3,0.205,0, + 0,0,-1,2.751134,1.251134,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.56066,1.06066,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.751134,1.251134,0, + 0,0,-1,3,1.201631,0, + -0.004007,-0.999988,0.002799,1.974903,0,0.679903, + -0.004007,-0.999988,0.002799,1.5,0,0, + -0.003005,-0.999993,0.002099,1.64319,0,0.205, + -0.633994,0.633994,0.442836,1.5,0,0, + -0.633994,0.633994,0.442836,1.974903,0,0.679903, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,1.974903,0,0.679903, + -0.633994,0.633994,0.442836,2.116861,0,0.883139, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,2.116861,0,0.883139, + -0.633994,0.633994,0.442836,2.54773,0,1.5, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,2.54773,0,1.5, + -0.633994,0.633994,0.442836,2.649417,0,1.645583, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,2.649417,0,1.645583, + -0.633994,0.633994,0.442836,2.795,0,1.854008, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,2.795,0,1.854008, + -0.633994,0.633994,0.442836,3,0,2.1475, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,3,0,2.1475, + -0.633994,0.633994,0.442836,3,0.205,1.854008, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,3,0.205,1.854008, + -0.633994,0.633994,0.442836,3,0.45227,1.5, + -0.633994,0.633994,0.442836,1.748866,0.248866,0, + -0.633994,0.633994,0.442836,3,0.45227,1.5, + -0.633994,0.633994,0.442836,1.93934,0.43934,0, + -0.633994,0.633994,0.442836,1.93934,0.43934,0, + -0.633994,0.633994,0.442836,3,0.45227,1.5, + -0.633994,0.633994,0.442836,2.100816,0.600816,0, + -0.633994,0.633994,0.442836,2.100816,0.600816,0, + -0.633994,0.633994,0.442836,3,0.45227,1.5, + -0.633994,0.633994,0.442836,3,0.883139,0.883139, + -0.633994,0.633994,0.442836,2.100816,0.600816,0, + -0.633994,0.633994,0.442836,3,0.883139,0.883139, + -0.633994,0.633994,0.442836,2.25,0.75,0, + -0.633994,0.633994,0.442836,2.25,0.75,0, + -0.633994,0.633994,0.442836,3,0.883139,0.883139, + -0.633994,0.633994,0.442836,2.399184,0.899184,0, + -0.633994,0.633994,0.442836,2.399184,0.899184,0, + -0.633994,0.633994,0.442836,3,0.883139,0.883139, + -0.633994,0.633994,0.442836,3,1.35681,0.205, + -0.633994,0.633994,0.442836,2.399184,0.899184,0, + -0.633994,0.633994,0.442836,3,1.35681,0.205, + -0.633994,0.633994,0.442836,2.56066,1.06066,0, + -0.633994,0.633994,0.442836,2.56066,1.06066,0, + -0.633994,0.633994,0.442836,3,1.35681,0.205, + -0.633994,0.633994,0.442836,2.751134,1.251134,0, + -0.633994,0.633994,0.442836,2.751134,1.251134,0, + -0.633994,0.633994,0.442836,3,1.35681,0.205, + -0.633994,0.633994,0.442836,3,1.5,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.45227,1.5, + 1,0,0,3,0.205,1.854008, + 1,0,0,3,0.205,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.795,0,0, + 0,-1,0,3,0,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 0,-1,0,2.795,0,1.854008, + 0,-1,0,2.649417,0,1.645583, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,2.795,0,0.205, + 1,0,0,3,1.35681,0.205, + 1,0,0,3,0.883139,0.883139, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,1.35681,0.205, + 1,0,0,3,1.35681,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.35681,0.205, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.35681,0.205, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0,2.1475, + 1,0,0,3,0,1.5, + 1,0,0,3,0,2.1475, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,1.854008, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.205,0, + 0,-1,0,3,0,2.1475, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,2.1475, + 0,-1,0,2.795,0,1.854008, + 0,-1,0,2.116861,0,0.883139, + -0.004007,-0.999988,0.002799,1.974903,0,0.679903, + 0,-1,0,2.1475,0,0.8525 +}; +static const struct gllist lament_model_iso_dse_frame = { GL_N3F_V3F, GL_TRIANGLES, 204, lament_model_iso_dse_data, 0 }; +const struct gllist *lament_model_iso_dse = &lament_model_iso_dse_frame; + +static const float lament_model_iso_dwn_data[] = { + 0,1,0,0,3,0.7275, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.7275, + 0,1,0,0.205,3,0.6475, + 0,1,0,0.205,3,0.6475, + 0,1,0,0,3,0.7275, + 0,1,0,0,3,0.8525, + 0,1,0,0.205,3,0.205, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,0.8525,3,0, + 0,1,0,0.8525,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,0.6475,3,0.205, + 0,1,0,0.42625,3,0.42625, + 0,1,0,0.6475,3,0.205, + 0,1,0,0.205,3,0.205, + 0,0,-1,0.8525,3,0, + 0,0,-1,0.639832,2.787332,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.212668,2.360168,0, + 0,0,-1,0,2.2725,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.2725,0, + 0,0,-1,0.212668,2.360168,0, + 0,0,-1,0,2.1475,0, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0, + 0,1,0,0,3,0.205, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.57375,0.42625, + -1,0,0,0,2.795,0.6475, + 0,0,-1,0.205,3,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0,3,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.639832,2.787332,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0,3,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.42625,2.57375,0, + 0,0,-1,0.212668,2.360168,0, + -1,0,0,0,2.3525,0.205, + -1,0,0,0,2.2725,0, + -1,0,0,0,2.1475,0, + -1,0,0,0,2.2725,0, + -1,0,0,0,2.3525,0.205, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.3525,0.205, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,0, + 0,1,0,0.205,3,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.3525,0.205, + -1,0,0,0,2.57375,0.42625, + 0,1,0,0.205,3,0.6475, + 0,1,0,0.42625,3,0.42625, + 0,1,0,0.205,3,0.205, + -1,0,0,0,3,0.8525, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,0.6475, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,0.8525, + -1,0,0,0,3,0.205, + -0.707107,0.707107,0,0,3,0.205, + -0.893371,0.265408,0.362555,0,3,0.8525, + 0,1,0,0,3,0.7275, + 0.57735,-0.57735,0.57735,0.212668,2.360168,0, + 0.57735,-0.57735,0.57735,0,2.3525,0.205, + 0.57735,-0.57735,0.57735,0,2.1475,0, + 0.57735,-0.57735,0.57735,0,2.3525,0.205, + 0.57735,-0.57735,0.57735,0.212668,2.360168,0, + 0.57735,-0.57735,0.57735,0.42625,2.57375,0, + 0.57735,-0.57735,0.57735,0,2.3525,0.205, + 0.57735,-0.57735,0.57735,0.42625,2.57375,0, + 0.57735,-0.57735,0.57735,0.639832,2.787332,0, + 0.57735,-0.57735,0.57735,0,2.3525,0.205, + 0.57735,-0.57735,0.57735,0.639832,2.787332,0, + 0.57735,-0.57735,0.57735,0.8525,3,0, + 0.57735,-0.57735,0.57735,0,2.3525,0.205, + 0.57735,-0.57735,0.57735,0.8525,3,0, + 0.57735,-0.57735,0.57735,0.6475,3,0.205, + 0.57735,-0.57735,0.57735,0,2.3525,0.205, + 0.57735,-0.57735,0.57735,0.6475,3,0.205, + 0.57735,-0.57735,0.57735,0.42625,3,0.42625, + 0.57735,-0.57735,0.57735,0,2.3525,0.205, + 0.57735,-0.57735,0.57735,0.42625,3,0.42625, + 0.57735,-0.57735,0.57735,0,2.57375,0.42625, + 0.57735,-0.57735,0.57735,0,2.57375,0.42625, + 0.57735,-0.57735,0.57735,0.42625,3,0.42625, + 0.57735,-0.57735,0.57735,0.205,3,0.6475, + 0.57735,-0.57735,0.57735,0,2.57375,0.42625, + 0.57735,-0.57735,0.57735,0.205,3,0.6475, + 0.57735,-0.57735,0.57735,0,2.795,0.6475, + 0.57735,-0.57735,0.57735,0,2.795,0.6475, + 0.57735,-0.57735,0.57735,0.205,3,0.6475, + 0.57735,-0.57735,0.57735,0,3,0.8525 +}; +static const struct gllist lament_model_iso_dwn_frame = { GL_N3F_V3F, GL_TRIANGLES, 120, lament_model_iso_dwn_data, 0 }; +const struct gllist *lament_model_iso_dwn = &lament_model_iso_dwn_frame; + +static const float lament_model_iso_swd_data[] = { + 0,0,-1,1.5,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.267766,0.332481,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0,0, + -1,0,0,0,0,0.205, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,0, + -1,0,0,0,0,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.205,0, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.497732,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.87868,0, + -1,0,0,0,0.87868,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + 0,0,-1,0.283213,1.742034,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.283213,1.742034,0, + 0,0,-1,0.45227,1.5,0, + 0,0,-1,0.45227,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.45227,1.5,0, + 0,0,-1,0.580081,1.317017,0, + 0,0,-1,0.580081,1.317017,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0.580081,1.317017,0, + 0,0,-1,0.68738,1.163402,0, + 0,0,-1,0.025731,2.110662,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.025731,2.110662,0, + 0,0,-1,0.283213,1.742034,0, + 0,0,-1,0.785662,1.022694,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0.785662,1.022694,0, + 0,0,-1,0,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.785662,1.022694,0, + 0,0,-1,0.883139,0.883139,0, + 0,0,-1,0.987753,0.733368,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,0.987753,0.733368,0, + 0,0,-1,1.109972,0.55839,0, + 0,0,-1,1.109972,0.55839,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.109972,0.55839,0, + 0,0,-1,1.267766,0.332481,0, + -1,0,0,0,0.883139,0.883139, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.883139,0.883139, + -1,0,0,0,1.5,0.45227, + -1,0,0,0,0.883139,0.883139, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,1.35681, + -1,0,0,0,1.854008,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,1.854008,0.205, + -1,0,0,0,1.798369,0, + -1,0,0,0,1.798369,0, + -1,0,0,0,1.854008,0.205, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.12132,0, + -1,0,0,0,1.854008,0.205, + -1,0,0,0,2.1475,0, + -1,0,0,0,1.854008,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0.45227, + -1,0,0,0,0.205,1.35681, + -1,0,0,0,0,0.205, + -1,0,0,0,0,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0.205,1.35681, + -1,0,0,0,0.205,0.205, + 0,0,-1,0.68738,1.163402,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.68738,1.163402,0, + 0,0,-1,0.785662,1.022694,0, + 0,0,-1,0.883139,0.883139,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0.883139,0.883139,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.883139,0.883139,0, + 0,0,-1,0.987753,0.733368,0, + 0,-1,0,0.75,0,0.75, + 0,-1,0,0.205,0,0.205, + 0,-1,0,1.295,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,0.205,0,1.295, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,1.295, + 0,-1,0,0,0,1.5, + 0,-1,0,1.295,0,0.205, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.295,0,0.205, + 0,-1,0,0.87868,0,0, + 0,-1,0,0.87868,0,0, + 0,-1,0,1.295,0,0.205, + 0,-1,0,0.497732,0,0, + 0,-1,0,0.497732,0,0, + 0,-1,0,1.295,0,0.205, + 0,-1,0,0.205,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,1.295,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.205,0,1.295, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.75,0,0.75, + 0,-1,0,0,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0.205, + 0,0,-1,0.025731,2.110662,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,2.1475,0, + 0.633994,0.442836,0.633994,0.205,0,1.295, + 0.633994,0.442836,0.633994,0,0.205,1.35681, + 0.633994,0.442836,0.633994,0,0,1.5, + 0.633994,0.442836,0.633994,0,0.205,1.35681, + 0.633994,0.442836,0.633994,0.205,0,1.295, + 0.633994,0.442836,0.633994,0.75,0,0.75, + 0.633994,0.442836,0.633994,0,0.205,1.35681, + 0.633994,0.442836,0.633994,0.75,0,0.75, + 0.633994,0.442836,0.633994,1.295,0,0.205, + 0.633994,0.442836,0.633994,0,0.205,1.35681, + 0.633994,0.442836,0.633994,1.295,0,0.205, + 0.633994,0.442836,0.633994,1.5,0,0, + 0.633994,0.442836,0.633994,0,0.205,1.35681, + 0.633994,0.442836,0.633994,1.5,0,0, + 0.633994,0.442836,0.633994,1.267766,0.332481,0, + 0.633994,0.442836,0.633994,0,0.205,1.35681, + 0.633994,0.442836,0.633994,1.267766,0.332481,0, + 0.633994,0.442836,0.633994,0,0.883139,0.883139, + 0.633994,0.442836,0.633994,0,0.883139,0.883139, + 0.633994,0.442836,0.633994,1.267766,0.332481,0, + 0.633994,0.442836,0.633994,1.109972,0.55839,0, + 0.633994,0.442836,0.633994,0,0.883139,0.883139, + 0.633994,0.442836,0.633994,1.109972,0.55839,0, + 0.633994,0.442836,0.633994,0.987753,0.733368,0, + 0.633994,0.442836,0.633994,0,0.883139,0.883139, + 0.633994,0.442836,0.633994,0.987753,0.733368,0, + 0.633994,0.442836,0.633994,0.883139,0.883139,0, + 0.633994,0.442836,0.633994,0,0.883139,0.883139, + 0.633994,0.442836,0.633994,0.883139,0.883139,0, + 0.633994,0.442836,0.633994,0.785662,1.022694,0, + 0.633994,0.442836,0.633994,0,0.883139,0.883139, + 0.633994,0.442836,0.633994,0.785662,1.022694,0, + 0.633994,0.442836,0.633994,0,1.5,0.45227, + 0.633994,0.442836,0.633994,0,1.5,0.45227, + 0.633994,0.442836,0.633994,0.785662,1.022694,0, + 0.633994,0.442836,0.633994,0.68738,1.163402,0, + 0.633994,0.442836,0.633994,0,1.5,0.45227, + 0.633994,0.442836,0.633994,0.68738,1.163402,0, + 0.633994,0.442836,0.633994,0.580081,1.317017,0, + 0.633994,0.442836,0.633994,0,1.5,0.45227, + 0.633994,0.442836,0.633994,0.580081,1.317017,0, + 0.633994,0.442836,0.633994,0.45227,1.5,0, + 0.633994,0.442836,0.633994,0,1.5,0.45227, + 0.633994,0.442836,0.633994,0.45227,1.5,0, + 0.633994,0.442836,0.633994,0.283213,1.742034,0, + 0.633994,0.442836,0.633994,0,1.5,0.45227, + 0.633994,0.442836,0.633994,0.283213,1.742034,0, + 0.633994,0.442836,0.633994,0,1.854008,0.205, + 0.633994,0.442836,0.633994,0,1.854008,0.205, + 0.633994,0.442836,0.633994,0.283213,1.742034,0, + 0.633994,0.442836,0.633994,0.025731,2.110662,0, + 0.633994,0.442836,0.633994,0,1.854008,0.205, + 0.633994,0.442836,0.633994,0.025731,2.110662,0, + 0.633994,0.442836,0.633994,0,2.1475,0 +}; +static const struct gllist lament_model_iso_swd_frame = { GL_N3F_V3F, GL_TRIANGLES, 204, lament_model_iso_swd_data, 0 }; +const struct gllist *lament_model_iso_swd = &lament_model_iso_swd_frame; + +static const float lament_model_iso_une_data[] = { + 0,0,1,2.419919,1.682983,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.31262,1.836598,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.419919,1.682983,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.54773,1.5,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.419919,1.682983,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.54773,1.5,3, + 0,0,1,3,1.5,3, + 0,0,1,2.974269,0.889338,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.716787,1.257966,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.974269,0.889338,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.716787,1.257966,3, + 0,0,1,3,1.5,3, + 0,0,1,2.54773,1.5,3, + 0,0,1,3,1.5,3, + 0,0,1,2.716787,1.257966,3, + 0,0,1,3,1.201631,3, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,1.705,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,3, + 0,1,0,2.795,3,3, + -0.741864,0.651962,-0.156792,1.5,3,3, + 0,0,1,1.798369,3,3, + 0,1,0,2.795,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,2.12132,3,3, + 0,1,0,2.795,3,3, + 0,0,1,2.12132,3,3, + 0,0,1,2.502268,3,3, + 0,1,0,3,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,3, + 1,0,0,3,1.145992,2.795, + 1,0,0,3,0.87868,3, + 1,0,0,3,0.8525,3, + 1,0,0,3,0.87868,3, + 1,0,0,3,1.145992,2.795, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.145992,2.795, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,3,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,2.795, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.798369,3, + 1,0,0,3,1.798369,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.25,3,2.25, + 0,1,0,1.705,3,2.795, + 0,1,0,2.795,3,1.705, + 0,1,0,3,3,2.795, + 0,1,0,3,3,1.5, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,1.705, + 0,1,0,2.795,3,2.795, + 1,0,0,3,2.116861,2.116861, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,2.54773, + 1,0,0,3,1.5,2.795, + 1,0,0,3,2.116861,2.116861, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,1.64319, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,1.5, + 1,0,0,3,3,2.795, + 0,1,0,3,3,3, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.705, + 0,1,0,2.25,3,2.25, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.116861,2.116861, + 1,0,0,3,2.795,1.64319, + 0,0,1,2.31262,1.836598,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.214338,1.977306,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.31262,1.836598,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.012247,2.266632,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.890028,2.44161,3, + 0,0,1,2.12132,3,3, + 0,0,1,2.012247,2.266632,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.890028,2.44161,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.732234,2.667519,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.890028,2.44161,3, + 0,0,1,2.12132,3,3, + 0,0,1,2.116861,2.116861,3, + 0,0,1,2.502268,3,3, + 0,0,1,2.012247,2.266632,3, + 0,0,1,2.502268,3,3, + 0,0,1,2.116861,2.116861,3, + 0,0,1,3,3,3, + 0,0,1,2.502268,3,3, + 0.485071,0.485071,0.727607,3,3,3, + 0,1,0,2.795,3,3, + 0,0,1,2.214338,1.977306,3, + 0,0,1,3,3,3, + 0,0,1,2.116861,2.116861,3, + 0,0,1,3,3,3, + 0,0,1,2.214338,1.977306,3, + 0,0,1,3,2.502268,3, + 0.485071,0.485071,0.727607,3,3,3, + 0.5547,0,0.83205,3,2.502268,3, + 1,0,0,3,2.795,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.145992,2.795, + 1,0,0,3,1.5,2.54773, + 0,0,1,1.798369,3,3, + 0,0,1,1.5,3,3, + 0,0,1,1.732234,2.667519,3, + 1,0,0,3,3,3, + 1,0,0,3,2.795,3, + 1,0,0,3,2.795,2.795, + 0,0,1,3,0.87868,3, + 0,0,1,2.974269,0.889338,3, + 0,0,1,3,0.8525,3, + -0.633994,-0.442836,-0.633994,2.974269,0.889338,3, + -0.633994,-0.442836,-0.633994,3,1.145992,2.795, + -0.633994,-0.442836,-0.633994,3,0.8525,3, + -0.633994,-0.442836,-0.633994,3,1.145992,2.795, + -0.633994,-0.442836,-0.633994,2.974269,0.889338,3, + -0.633994,-0.442836,-0.633994,2.716787,1.257966,3, + -0.633994,-0.442836,-0.633994,3,1.145992,2.795, + -0.633994,-0.442836,-0.633994,2.716787,1.257966,3, + -0.633994,-0.442836,-0.633994,3,1.5,2.54773, + -0.633994,-0.442836,-0.633994,3,1.5,2.54773, + -0.633994,-0.442836,-0.633994,2.716787,1.257966,3, + -0.633994,-0.442836,-0.633994,2.54773,1.5,3, + -0.633994,-0.442836,-0.633994,3,1.5,2.54773, + -0.633994,-0.442836,-0.633994,2.54773,1.5,3, + -0.633994,-0.442836,-0.633994,2.419919,1.682983,3, + -0.633994,-0.442836,-0.633994,3,1.5,2.54773, + -0.633994,-0.442836,-0.633994,2.419919,1.682983,3, + -0.633994,-0.442836,-0.633994,3,2.116861,2.116861, + -0.633994,-0.442836,-0.633994,3,2.116861,2.116861, + -0.633994,-0.442836,-0.633994,2.419919,1.682983,3, + -0.633994,-0.442836,-0.633994,2.31262,1.836598,3, + -0.633994,-0.442836,-0.633994,3,2.116861,2.116861, + -0.633994,-0.442836,-0.633994,2.31262,1.836598,3, + -0.633994,-0.442836,-0.633994,2.214338,1.977306,3, + -0.633994,-0.442836,-0.633994,3,2.116861,2.116861, + -0.633994,-0.442836,-0.633994,2.214338,1.977306,3, + -0.633994,-0.442836,-0.633994,2.116861,2.116861,3, + -0.633994,-0.442836,-0.633994,3,2.116861,2.116861, + -0.633994,-0.442836,-0.633994,2.116861,2.116861,3, + -0.633994,-0.442836,-0.633994,2.012247,2.266632,3, + -0.633994,-0.442836,-0.633994,3,2.116861,2.116861, + -0.633994,-0.442836,-0.633994,2.012247,2.266632,3, + -0.633994,-0.442836,-0.633994,3,2.795,1.64319, + -0.633994,-0.442836,-0.633994,3,2.795,1.64319, + -0.633994,-0.442836,-0.633994,2.012247,2.266632,3, + -0.633994,-0.442836,-0.633994,1.890028,2.44161,3, + -0.633994,-0.442836,-0.633994,3,2.795,1.64319, + -0.633994,-0.442836,-0.633994,1.890028,2.44161,3, + -0.633994,-0.442836,-0.633994,1.732234,2.667519,3, + -0.633994,-0.442836,-0.633994,3,2.795,1.64319, + -0.633994,-0.442836,-0.633994,1.732234,2.667519,3, + -0.633994,-0.442836,-0.633994,1.5,3,3, + -0.633994,-0.442836,-0.633994,3,2.795,1.64319, + -0.633994,-0.442836,-0.633994,1.5,3,3, + -0.633994,-0.442836,-0.633994,1.705,3,2.795, + -0.633994,-0.442836,-0.633994,1.705,3,2.795, + -0.633994,-0.442836,-0.633994,3,3,1.5, + -0.633994,-0.442836,-0.633994,3,2.795,1.64319, + 0.85071,0.346986,-0.394833,3,3,1.5, + -0.600591,0.527809,-0.600591,1.705,3,2.795, + 0,1,0,2.25,3,2.25, + 0.85071,0.346986,-0.394833,3,3,1.5, + 0,1,0,2.25,3,2.25, + 0,1,0,2.795,3,1.705 +}; +static const struct gllist lament_model_iso_une_frame = { GL_N3F_V3F, GL_TRIANGLES, 204, lament_model_iso_une_data, 0 }; +const struct gllist *lament_model_iso_une = &lament_model_iso_une_frame; + +static const float lament_model_iso_unw_data[] = { + 0,1,0,0.205,3,1.5, + 0,1,0,0.350583,3,1.354417, + 0,1,0,0.205,3,1.145992, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.45227,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0.45227,3,1.5, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.883139,3,2.116861, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.145992, + 0,1,0,0,3,0.8525, + 0,1,0,0.205,3,1.145992, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,0,1,0.75,2.25,3, + 0,0,1,0.205,3,3, + 0,0,1,0,3,3, + 0,0,1,0.205,3,3, + 0,0,1,0.75,2.25,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.75,2.25,3, + 0,0,1,0.899184,2.399184,3, + 0,0,1,0.600816,2.100816,3, + 0,0,1,0,2.795,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.795,3, + 0,0,1,0.600816,2.100816,3, + 0,0,1,0,3,3, + 0,0,1,0,3,3, + 0,0,1,0.600816,2.100816,3, + 0,0,1,0.75,2.25,3, + 0,0,1,0.899184,2.399184,3, + 0,0,1,0.87868,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,0.899184,2.399184,3, + 0,0,1,1.06066,2.56066,3, + 0,0,1,0.248866,1.748866,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,1.5,3, + 0,0,1,0.43934,1.93934,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.43934,1.93934,3, + 0,0,1,0.600816,2.100816,3, + 0,1,0,0,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.54773,1.5, + -1,0,0,0,2.116861,2.116861, + -1,0,0,0,2.54773,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,3,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,3, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,3,2.795, + -1,0,0,0,3,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.116861,2.116861, + -1,0,0,0,1.64319,2.795, + -1,0,0,0,3,1.5, + -1,0,0,0,2.795,1.145992, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,1.145992, + -1,0,0,0,3,1.5, + -1,0,0,0,3,0.8525, + 0,1,0,0.205,3,2.795, + 0,1,0,1.025097,3,2.320097, + 0,1,0,0.8525,3,2.1475, + 0,1,0,1.025097,3,2.320097, + 0,1,0,0.205,3,2.795, + 0,1,0,1.35681,3,2.795, + 0,0,1,1.06066,2.56066,3, + 0,0,1,1.201631,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.06066,2.56066,3, + 0,0,1,1.251134,2.751134,3, + 0,1,0,0.45227,3,1.5, + 0,1,0,0.350583,3,1.354417, + 0,1,0,0.205,3,1.5, + 0,1,0,0.205,3,3, + 0,1,0,1.35681,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,1.35681,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,1.5,3,3, + 0.974602,-0.205981,0.087875,1.5,3,3, + 0,0.83205,0.5547,0.205,3,3, + 0,0,1,0.497732,3,3, + 0.974602,-0.205981,0.087875,1.5,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0.974602,-0.205981,0.087875,1.5,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,0.248866,1.748866,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.248866,1.748866,3, + 0,0,1,0.43934,1.93934,3, + -1,0,0,0,2.795,1.145992, + -1,0,0,0,2.54773,1.5, + -1,0,0,0,2.795,1.5, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,3,3, + -1,0,0,0,1.798369,3, + -1,0,0,0,1.64319,2.795, + -1,0,0,0,1.5,3, + -1,0,0,0,1.64319,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,3, + 0,1,0,0.205,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,3, + 0,0,1,1.5,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.251134,2.751134,3, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,1.025097,3,2.320097, + 0,1,0,0.883139,3,2.116861, + 0,1,0,0.8525,3,2.1475, + 0.633994,-0.633994,-0.442836,0,3,0.8525, + 0.633994,-0.633994,-0.442836,1.35681,3,2.795, + 0.633994,-0.633994,-0.442836,0,2.795,1.145992, + 0,-1,0,1.35681,3,2.795, + 0,-1,0,0,3,0.8525, + 0,-1,0,1.025097,3,2.320097, + 0,1,0,1.025097,3,2.320097, + 0,1,0,0,3,0.8525, + 0,1,0,0.205,3,1.145992, + 0,-1,0,1.025097,3,2.320097, + 0,-1,0,0.205,3,1.145992, + 0,-1,0,0.350583,3,1.354417, + 0,1,0,1.025097,3,2.320097, + 0,1,0,0.350583,3,1.354417, + 0,1,0,0.45227,3,1.5, + 0,-1,0,1.025097,3,2.320097, + 0,-1,0,0.45227,3,1.5, + 0,-1,0,0.883139,3,2.116861, + 0.633994,-0.633994,-0.442836,0,1.64319,2.795, + 0.633994,-0.633994,-0.442836,0.248866,1.748866,3, + 0.633994,-0.633994,-0.442836,0,1.5,3, + 0.633994,-0.633994,-0.442836,0.248866,1.748866,3, + 0.633994,-0.633994,-0.442836,0,1.64319,2.795, + 0.633994,-0.633994,-0.442836,0,2.116861,2.116861, + 0.633994,-0.633994,-0.442836,0.248866,1.748866,3, + 0.633994,-0.633994,-0.442836,0,2.116861,2.116861, + 0.633994,-0.633994,-0.442836,0.43934,1.93934,3, + 0.633994,-0.633994,-0.442836,0.43934,1.93934,3, + 0.633994,-0.633994,-0.442836,0,2.116861,2.116861, + 0.633994,-0.633994,-0.442836,0.600816,2.100816,3, + 0.633994,-0.633994,-0.442836,0.600816,2.100816,3, + 0.633994,-0.633994,-0.442836,0,2.116861,2.116861, + 0.633994,-0.633994,-0.442836,0.75,2.25,3, + 0.633994,-0.633994,-0.442836,0.75,2.25,3, + 0.633994,-0.633994,-0.442836,0,2.116861,2.116861, + 0.633994,-0.633994,-0.442836,0,2.54773,1.5, + 0.633994,-0.633994,-0.442836,0.75,2.25,3, + 0.633994,-0.633994,-0.442836,0,2.54773,1.5, + 0.633994,-0.633994,-0.442836,0.899184,2.399184,3, + 0.633994,-0.633994,-0.442836,0.899184,2.399184,3, + 0.633994,-0.633994,-0.442836,0,2.54773,1.5, + 0.633994,-0.633994,-0.442836,1.06066,2.56066,3, + 0.633994,-0.633994,-0.442836,1.06066,2.56066,3, + 0.633994,-0.633994,-0.442836,0,2.54773,1.5, + 0.633994,-0.633994,-0.442836,0,2.795,1.145992, + 0.633994,-0.633994,-0.442836,1.06066,2.56066,3, + 0.633994,-0.633994,-0.442836,0,2.795,1.145992, + 0.633994,-0.633994,-0.442836,1.251134,2.751134,3, + 0.633994,-0.633994,-0.442836,1.251134,2.751134,3, + 0.633994,-0.633994,-0.442836,0,2.795,1.145992, + 0.633994,-0.633994,-0.442836,1.5,3,3, + 0.633994,-0.633994,-0.442836,1.5,3,3, + 0.633994,-0.633994,-0.442836,0,2.795,1.145992, + 0.633994,-0.633994,-0.442836,1.35681,3,2.795 +}; +static const struct gllist lament_model_iso_unw_frame = { GL_N3F_V3F, GL_TRIANGLES, 204, lament_model_iso_unw_data, 0 }; +const struct gllist *lament_model_iso_unw = &lament_model_iso_unw_frame; + +static const float lament_model_iso_use_data[] = { + 0,0,1,2.502268,0,3, + 0,0,1,2.57375,0.42625,3, + 0,0,1,2.360168,0.212668,3, + 0,0,1,2.57375,0.42625,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.795,0,3, + 0,0,1,2.57375,0.42625,3, + 0,0,1,2.795,0,3, + 0,0,1,3,0,3, + 0,0,1,3,0.497732,3, + 0,0,1,3,0.8525,3, + 0,0,1,2.787332,0.639832,3, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.3525, + 0,-1,0,3,0,2.1475, + 0,-1,0,2.795,0,2.3525, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,2.3525,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.3525,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,2.502268,0,3, + 0,-1,0,2.3525,0,2.795, + 0,-1,0,2.502268,0,3, + 0,-1,0,2.1475,0,3, + 0,-1,0,3,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.57375,0,2.57375, + 0,-1,0,2.795,0,2.3525, + 0,-1,0,2.795,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0,3, + 1,0,0,3,0,2.795, + 1,0,0,3,0,2.1475, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0,2.795, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0,2.1475, + 1,0,0,3,0.205,2.3525, + 1,0,0,3,0.205,3, + 1,0,0,3,0,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.6475,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,0.6475,2.795, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.6475,2.795, + 1,0,0,3,0.8525,3, + 1,0,0,3,0.6475,2.795, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.42625,2.57375, + 0,0,1,2.502268,0,3, + 0,0,1,2.360168,0.212668,3, + 0,0,1,2.1475,0,3, + 1,0,0,3,0.42625,2.57375, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.205,2.3525, + 0,0,1,3,0,3, + 0,0,1,2.787332,0.639832,3, + 0,0,1,2.57375,0.42625,3, + 0,0,1,2.787332,0.639832,3, + 0,0,1,3,0,3, + 0,0,1,3,0.497732,3, + 0.707107,0,0.707107,3,0.497732,3, + 0.485071,-0.485071,0.727607,3,0,3, + 1,0,0,3,0.205,3, + 0,-1,0,2.3525,0,2.795, + 0,-1,0,2.57375,0,2.57375, + 0,-1,0,2.795,0,2.795, + -0.57735,0.57735,-0.57735,2.795,0,2.3525, + -0.57735,0.57735,-0.57735,3,0.205,2.3525, + -0.57735,0.57735,-0.57735,3,0,2.1475, + -0.57735,0.57735,-0.57735,3,0.205,2.3525, + -0.57735,0.57735,-0.57735,2.795,0,2.3525, + -0.57735,0.57735,-0.57735,2.57375,0,2.57375, + -0.57735,0.57735,-0.57735,3,0.205,2.3525, + -0.57735,0.57735,-0.57735,2.57375,0,2.57375, + -0.57735,0.57735,-0.57735,3,0.42625,2.57375, + -0.57735,0.57735,-0.57735,3,0.42625,2.57375, + -0.57735,0.57735,-0.57735,2.57375,0,2.57375, + -0.57735,0.57735,-0.57735,2.3525,0,2.795, + -0.57735,0.57735,-0.57735,3,0.42625,2.57375, + -0.57735,0.57735,-0.57735,2.3525,0,2.795, + -0.57735,0.57735,-0.57735,3,0.6475,2.795, + -0.57735,0.57735,-0.57735,3,0.6475,2.795, + -0.57735,0.57735,-0.57735,2.3525,0,2.795, + -0.57735,0.57735,-0.57735,2.1475,0,3, + -0.57735,0.57735,-0.57735,3,0.6475,2.795, + -0.57735,0.57735,-0.57735,2.1475,0,3, + -0.57735,0.57735,-0.57735,2.360168,0.212668,3, + -0.57735,0.57735,-0.57735,2.360168,0.212668,3, + -0.57735,0.57735,-0.57735,3,0.8525,3, + -0.57735,0.57735,-0.57735,3,0.6475,2.795, + 0,0,1,3,0.8525,3, + 0,0,1,2.360168,0.212668,3, + 0,0,1,2.57375,0.42625,3, + 0,0,-1,3,0.8525,3, + 0,0,-1,2.57375,0.42625,3, + 0,0,-1,2.787332,0.639832,3 +}; +static const struct gllist lament_model_iso_use_frame = { GL_N3F_V3F, GL_TRIANGLES, 108, lament_model_iso_use_data, 0 }; +const struct gllist *lament_model_iso_use = &lament_model_iso_use_frame; + +static const float lament_model_iso_usw_data[] = { + 0,0,1,0.332481,1.267766,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0,0.205,3, + 0,0,1,0,0,3, + 0,0,1,0,0.205,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0.733368,0.987753,3, + 0,0,1,1.5,0,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.022694,0.785662,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.022694,0.785662,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.163402,0.68738,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.645583,0,2.649417, + 0,-1,0,1.854008,0,2.795, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,3, + -1,0,0,0,0.205,3, + 0,-1,0,0,0,3, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.679903,0,1.974903, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,1.64319, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.679903,0,1.974903, + 0,-1,0,0.8525,0,2.1475, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,1.295,2.795, + -1,0,0,0,1.295,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.87868,3, + -1,0,0,0,1.295,2.795, + -1,0,0,0,0.87868,3, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.295,2.795, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.5,3, + 0,-1,0,0,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,3, + -1,0,0,0,0.75,2.25, + -1,0,0,0,0.205,1.705, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,2.795, + -1,0,0,0,0,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,1.705, + -1,0,0,0,1.295,2.795, + -1,0,0,0,0.75,2.25, + -1,0,0,0,0.205,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.1475,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.854008,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.1475,0,3, + 0,-1,0,2.12132,0,3, + 0,-1,0,2.12132,0,3, + 0,-1,0,1.5,0,3, + 0,-1,0,1.5,0,2.795, + 0,0,1,1.5,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.798369,0,3, + 0,0,1,0.205,0,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0,0,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0.205,0,3, + 0,0,1,0.497732,0,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.022694,0.785662,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.163402,0.68738,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.163402,0.68738,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.45227,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,1.798369,0,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,1.742034,0.283213,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,1.798369,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,0.733368,0.987753,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0.87868,3, + 0,0,1,0.733368,0.987753,3, + 0,0,1,0.55839,1.109972,3, + 0,0,1,0.55839,1.109972,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.55839,1.109972,3, + 0,0,1,0.332481,1.267766,3, + 0,-1,0,0.205,0,1.64319, + 0,-1,0,0,0,2.795, + 0,-1,0,0,0,1.5, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,1.64319, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,3, + 0,0,1,0.205,0,3, + 0,0,1,1.5,0,3, + 0,0,1,1.201631,0,3, + 0,0,1,0.205,0,3, + 0,0,1,1.201631,0,3, + 0,0,1,0.87868,0,3, + 0,0,-1,0.205,0,3, + 0,0,-1,0.87868,0,3, + 0,0,-1,0.497732,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.5,0,2.54773, + 0,-1,0,1.645583,0,2.649417, + 0,-1,0,1.5,0,2.54773, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,0.883139,0,2.116861, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,1.5,0,2.54773, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,0.679903,0,1.974903, + 0,-1,0,0.883139,0,2.116861, + 0,0,1,2.1475,0,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,2.12132,0,3, + 0.442836,0.633994,-0.633994,0,0.205,1.705, + 0.442836,0.633994,-0.633994,0.205,0,1.64319, + 0.442836,0.633994,-0.633994,0,0,1.5, + 0.442836,0.633994,-0.633994,0.205,0,1.64319, + 0.442836,0.633994,-0.633994,0,0.205,1.705, + 0.442836,0.633994,-0.633994,0.679903,0,1.974903, + 0.442836,0.633994,-0.633994,0.679903,0,1.974903, + 0.442836,0.633994,-0.633994,0,0.205,1.705, + 0.442836,0.633994,-0.633994,0,0.75,2.25, + 0.442836,0.633994,-0.633994,0.679903,0,1.974903, + 0.442836,0.633994,-0.633994,0,0.75,2.25, + 0.442836,0.633994,-0.633994,0.883139,0,2.116861, + 0.442836,0.633994,-0.633994,0.883139,0,2.116861, + 0.442836,0.633994,-0.633994,0,0.75,2.25, + 0.442836,0.633994,-0.633994,1.5,0,2.54773, + 0.442836,0.633994,-0.633994,1.5,0,2.54773, + 0.442836,0.633994,-0.633994,0,0.75,2.25, + 0.442836,0.633994,-0.633994,0,1.295,2.795, + 0.442836,0.633994,-0.633994,1.5,0,2.54773, + 0.442836,0.633994,-0.633994,0,1.295,2.795, + 0.442836,0.633994,-0.633994,1.645583,0,2.649417, + 0.442836,0.633994,-0.633994,1.645583,0,2.649417, + 0.442836,0.633994,-0.633994,0,1.295,2.795, + 0.442836,0.633994,-0.633994,1.854008,0,2.795, + 0.442836,0.633994,-0.633994,1.854008,0,2.795, + 0.442836,0.633994,-0.633994,0,1.295,2.795, + 0.442836,0.633994,-0.633994,0,1.5,3, + 0.442836,0.633994,-0.633994,1.854008,0,2.795, + 0.442836,0.633994,-0.633994,0,1.5,3, + 0.442836,0.633994,-0.633994,2.110662,0.025731,3, + 0.442836,0.633994,-0.633994,1.854008,0,2.795, + 0.442836,0.633994,-0.633994,2.110662,0.025731,3, + 0.442836,0.633994,-0.633994,2.1475,0,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,0,1.5,3, + 0,0,1,0.332481,1.267766,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,0.332481,1.267766,3, + 0,0,1,0.55839,1.109972,3, + 0,0,-1,2.110662,0.025731,3, + 0,0,-1,0.55839,1.109972,3, + 0,0,-1,0.733368,0.987753,3, + 0,0,-1,2.110662,0.025731,3, + 0,0,-1,0.733368,0.987753,3, + 0,0,-1,0.883139,0.883139,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,0.883139,0.883139,3, + 0,0,1,1.022694,0.785662,3, + 0,0,-1,2.110662,0.025731,3, + 0,0,-1,1.022694,0.785662,3, + 0,0,-1,1.163402,0.68738,3, + 0,0,-1,2.110662,0.025731,3, + 0,0,-1,1.163402,0.68738,3, + 0,0,-1,1.317017,0.580081,3, + 0,0,1,2.110662,0.025731,3, + 0,0,1,1.317017,0.580081,3, + 0,0,1,1.5,0.45227,3, + 0,0,-1,2.110662,0.025731,3, + 0,0,-1,1.5,0.45227,3, + 0,0,-1,1.742034,0.283213,3 +}; +static const struct gllist lament_model_iso_usw_frame = { GL_N3F_V3F, GL_TRIANGLES, 222, lament_model_iso_usw_data, 0 }; +const struct gllist *lament_model_iso_usw = &lament_model_iso_usw_frame; + +static const float lament_model_leviathan_data[] = { + 0.81642,0.40914,-0.407508,2.250059,3.000719,2.250389, + 0.869552,0.350012,-0.348384,6.835994,-3.832072,6.831978, + 0.81642,0.40914,-0.407508,2.253099,0.752183,-0.001065, + 0.81642,0.40914,-0.407508,2.250059,3.000719,2.250389, + 0.81642,0.40914,-0.407508,2.253099,0.752183,-0.001065, + 0.755275,0.464254,-0.462632,-3.832693,6.833336,-3.834015, + -0.348245,-0.869659,-0.349884,6.835994,-3.832072,6.831978, + -0.407383,-0.816545,-0.409015,0.001794,0.748994,2.24762, + -0.407383,-0.816545,-0.409015,2.253099,0.752183,-0.001065, + -0.349891,0.348284,0.86964,6.835994,-3.832072,6.831978, + -0.409037,0.407405,0.816523,2.250059,3.000719,2.250389, + -0.409037,0.407405,0.816523,0.001794,0.748994,2.24762, + -0.409037,0.407405,0.816523,0.001794,0.748994,2.24762, + -0.409037,0.407405,0.816523,2.250059,3.000719,2.250389, + -0.464168,0.462527,0.755392,-3.832693,6.833336,-3.834015, + -0.407383,-0.816545,-0.409015,0.001794,0.748994,2.24762, + -0.462522,-0.755417,-0.464132,-3.832693,6.833336,-3.834015, + -0.407383,-0.816545,-0.409015,2.253099,0.752183,-0.001065 +}; +static const struct gllist lament_model_leviathan_frame = { GL_N3F_V3F, GL_TRIANGLES, 18, lament_model_leviathan_data, 0 }; +const struct gllist *lament_model_leviathan = &lament_model_leviathan_frame; + +static const float lament_model_lid_a_data[] = { + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.5,0,1.5, + 1,0,0,1.5,0.0625,2.7325, + 1,0,0,1.5,0,2.795, + 1,0,0,1.5,0,1.5, + 0,0,-1,1.5,0,1.5, + 0,0,-1,0.205,0,1.5, + 0,0,-1,0.2675,0.0625,1.5, + -0.57735,0.57735,0.57735,1.5,0,2.795, + -0.57735,0.57735,0.57735,0.2675,0.0625,1.5, + -0.57735,0.57735,0.57735,0.205,0,1.5, + -0.57735,0.57735,0.57735,0.2675,0.0625,1.5, + -0.57735,0.57735,0.57735,1.5,0,2.795, + -0.57735,0.57735,0.57735,1.5,0.0625,2.7325, + 0.05058,0.997438,-0.05058,1.5,0.0625,2.7325, + 0.05058,0.997438,-0.05058,1.5,0,1.5, + 0.05058,0.997438,-0.05058,0.2675,0.0625,1.5 +}; +static const struct gllist lament_model_lid_a_frame = { GL_N3F_V3F, GL_TRIANGLES, 18, lament_model_lid_a_data, 0 }; +const struct gllist *lament_model_lid_a = &lament_model_lid_a_frame; + +static const float lament_model_lid_b_data[] = { + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,0,-1,2.795,0,1.5, + 0,0,-1,1.5,0,1.5, + 0,0,-1,2.7325,0.0625,1.5, + -1,0,0,1.5,0.0625,2.7325, + -1,0,0,1.5,0,1.5, + -1,0,0,1.5,0,2.795, + -0.05058,0.997438,-0.05058,1.5,0.0625,2.7325, + -0.05058,0.997438,-0.05058,2.7325,0.0625,1.5, + -0.05058,0.997438,-0.05058,1.5,0,1.5, + 0.57735,0.57735,0.57735,2.7325,0.0625,1.5, + 0.57735,0.57735,0.57735,1.5,0,2.795, + 0.57735,0.57735,0.57735,2.795,0,1.5, + 0.57735,0.57735,0.57735,1.5,0,2.795, + 0.57735,0.57735,0.57735,2.7325,0.0625,1.5, + 0.57735,0.57735,0.57735,1.5,0.0625,2.7325 +}; +static const struct gllist lament_model_lid_b_frame = { GL_N3F_V3F, GL_TRIANGLES, 18, lament_model_lid_b_data, 0 }; +const struct gllist *lament_model_lid_b = &lament_model_lid_b_frame; + +static const float lament_model_lid_base_data[] = { + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,1,0,0.205,3,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.87868,0,0, + 0,-1,0,0.87868,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.497732,0,0, + 0,-1,0,0.497732,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.502268,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,3,3,3, + 0,0.447214,0.894427,2.502268,3,3, + 0.408248,0.408248,0.816497,3,3,3, + 0,1,0,2.795,3,3, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,3,0.205, + 1,0,0,3,3,1.5, + 0,-1,0,2.795,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,1.5,0,3, + 0,-0.447214,0.894427,1.5,0,3, + 0,-1,0,2.795,0,3, + 0,0,1,2.502268,0,3, + 0,-0.447214,0.894427,1.5,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.5,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.798369,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,2.795, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,2.795, + -1,0,0,0,0,3, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.077767,0.868083,0, + -0.57735,-0.57735,-0.57735,2.1475,0,2.1475, + -0.57735,-0.57735,-0.57735,2.545,0.25,1.5, + -0.57735,-0.57735,-0.57735,2.795,0,1.5, + -0.57735,-0.57735,-0.57735,2.545,0.25,1.5, + -0.57735,-0.57735,-0.57735,2.1475,0,2.1475, + -0.57735,-0.57735,-0.57735,2.0225,0.25,2.0225, + -0.57735,-0.57735,0.57735,2.1475,0,0.8525, + -0.57735,-0.57735,0.57735,1.5,0.25,0.455, + -0.57735,-0.57735,0.57735,1.5,0,0.205, + -0.57735,-0.57735,0.57735,1.5,0.25,0.455, + -0.57735,-0.57735,0.57735,2.1475,0,0.8525, + -0.57735,-0.57735,0.57735,2.0225,0.25,0.9775, + 0.57735,-0.57735,-0.57735,0.9775,0.25,2.0225, + 0.57735,-0.57735,-0.57735,1.5,0,2.795, + 0.57735,-0.57735,-0.57735,0.8525,0,2.1475, + 0.57735,-0.57735,-0.57735,1.5,0,2.795, + 0.57735,-0.57735,-0.57735,0.9775,0.25,2.0225, + 0.57735,-0.57735,-0.57735,1.5,0.25,2.545, + 0.57735,-0.57735,0.57735,0.9775,0.25,0.9775, + 0.57735,-0.57735,0.57735,0.205,0,1.5, + 0.57735,-0.57735,0.57735,0.8525,0,0.8525, + 0.57735,-0.57735,0.57735,0.205,0,1.5, + 0.57735,-0.57735,0.57735,0.9775,0.25,0.9775, + 0.57735,-0.57735,0.57735,0.455,0.25,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,1.5, + 0,-1,0,0,0,0.205, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.205,0,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.798369,0,0, + 0,-1,0,1.798369,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.795,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,3, + 0,0,1,0.205,0,3, + 0,0,1,1.5,0,3, + 0,0,1,1.201631,0,3, + 0,0,1,0.205,0,3, + 0,0,1,1.201631,0,3, + 0,0,1,0.87868,0,3, + 0,0,-1,0.205,0,3, + 0,0,-1,0.87868,0,3, + 0,0,-1,0.497732,0,3, + 0,-1,0,0,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,3, + 0,0,-1,1.5,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,3,0,0, + 0,-0.447214,-0.894427,2.502268,0,0, + 0.408248,-0.408248,-0.816497,3,0,0, + 0,-1,0,2.795,0,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0,0,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,3,3,0, + 0.408248,0.408248,-0.816497,3,3,0, + 0,0.447214,-0.894427,2.502268,3,0, + 0,1,0,2.795,3,0, + 0,0,-1,3,3,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,3,3,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,3,3,0, + 0,0,-1,3,2.502268,0, + 0.447214,0,-0.894427,3,2.502268,0, + 0.408248,0.408248,-0.816497,3,3,0, + 1,0,0,3,2.795,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0,3,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,3,1.5,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,3,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,3,0,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0.497732,0, + 0.408248,-0.408248,-0.816497,3,0,0, + 0.6,0,-0.8,3,0.497732,0, + 1,0,0,3,0.205,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.5,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,1,2.087488,1.982139,3, + 0,0,1,3,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,3,3,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,3,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,2.502268,3, + 0.408248,0.408248,0.816497,3,3,3, + 0.447214,0,0.894427,3,2.502268,3, + 1,0,0,3,2.795,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.5,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.201631,3, + 0,0,1,3,1.5,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,2.12132,3,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0,2.795,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.795,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0,3,3, + 0,0,1,0,3,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0,3,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.5,3,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,2.26,3, + 0,0,1,3,0,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,3,0,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,3,0,3, + 0,0,1,3,0.497732,3, + 0.447214,0,0.894427,3,0.497732,3, + 0.408248,-0.408248,0.816497,3,0,3, + 1,0,0,3,0.205,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,3,0.497732,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,1.798369,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.798369,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.205,3,3, + 0,0,1,0,3,3, + 0,0,1,0.205,3,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.497732,3,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0.87868,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0,0.87868,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,2.12132,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,0.87868,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.201631,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,0,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,0.205,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.205,0,3, + 0,0,1,0.497732,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.502268,3,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,3,0.87868,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.502268,0,3, + 0,0,1,3,0,3, + 0.408248,-0.408248,0.816497,3,0,3, + 0,0,1,2.502268,0,3, + 0,-1,0,2.795,0,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.12132,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0.205,3, + 0,0,1,0,0,3, + 0,0,1,0,0.205,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,1.5,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0,1.5,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.26,1.5,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.868083,1.922233,3, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,2.795, + 0,1,0,3,3,3, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,0.205, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.12132,3,0, + 0,1,0,2.12132,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.502268,3,0, + 0,1,0,2.502268,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,0.87868,3,0, + 0,1,0,0.87868,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.201631,3,0, + 0,1,0,1.201631,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,0, + 0,1,0,1.5,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,0,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,2.795,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,0.205,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,0.497732,3,3, + 0,1,0,0.497732,3,3, + 0,1,0,1.5,3,3, + 0,1,0,1.5,3,2.795, + 0,0.514496,0.857493,1.5,3,3, + 0,0.447214,0.894427,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0,0.514496,0.857493,1.5,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.502268,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.502268,3,3, + 0,1,0,2.795,3,3, + 0,0.447214,0.894427,2.502268,3,3, + 0,0.514496,0.857493,1.5,3,3, + 0,0,1,1.798369,3,3, + 0,0.447214,0.894427,2.502268,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,2.12132,3,3, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,0.205,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,1.5, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,0.205, + 0,1,0,0.8525,3,0.8525, + 0,1,0,3,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0.205, + 0,1,0,2.795,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,2.795, + 0,1,0,0.205,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,1.5, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0, + 0,1,0,0,3,0.205, + 0,1,0,2.795,3,3, + 0,1,0,3,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.795,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,0.205,3,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,0,0,3, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.795,0,0, + 0,-1,0,3,0,0, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.205,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,3,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,2.795, + 0.57735,-0.57735,0.57735,1.5,0.25,0.455, + 0.57735,-0.57735,0.57735,0.8525,0,0.8525, + 0.57735,-0.57735,0.57735,1.5,0,0.205, + 0.57735,-0.57735,0.57735,0.8525,0,0.8525, + 0.57735,-0.57735,0.57735,1.5,0.25,0.455, + 0.57735,-0.57735,0.57735,0.9775,0.25,0.9775, + -0.57735,-0.57735,-0.57735,1.5,0.25,2.545, + -0.57735,-0.57735,-0.57735,2.1475,0,2.1475, + -0.57735,-0.57735,-0.57735,1.5,0,2.795, + -0.57735,-0.57735,-0.57735,2.1475,0,2.1475, + -0.57735,-0.57735,-0.57735,1.5,0.25,2.545, + -0.57735,-0.57735,-0.57735,2.0225,0.25,2.0225, + -0.57735,-0.57735,0.57735,2.795,0,1.5, + -0.57735,-0.57735,0.57735,2.0225,0.25,0.9775, + -0.57735,-0.57735,0.57735,2.1475,0,0.8525, + -0.57735,-0.57735,0.57735,2.0225,0.25,0.9775, + -0.57735,-0.57735,0.57735,2.795,0,1.5, + -0.57735,-0.57735,0.57735,2.545,0.25,1.5, + 1,0,0,3,3,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,1.5, + 1,0,0,3,3,2.795, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.497732,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.87868,3, + 1,0,0,3,0.87868,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,0.205,3, + 1,0,0,3,0,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,3,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,3,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0,2.795, + 1,0,0,3,0,1.5, + 1,0,0,3,0,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,2.795, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.798369,3, + 1,0,0,3,1.798369,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,3, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.205,0, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0, + 1,0,0,3,3,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0, + 1,0,0,3,1.798369,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,3,3, + 1,0,0,3,2.795,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,2.795, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.5,2.795, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0,3, + 1,0,0,3,0,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.87868,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.87868,3, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.5,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,3, + -1,0,0,0,0.205,3, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.205,0, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.497732,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.87868,0, + -1,0,0,0,0.87868,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,0, + -1,0,0,0,0,0, + -1,0,0,0,3,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,3, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,3,3, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,3,2.795, + -1,0,0,0,3,1.5, + -1,0,0,0,1.798369,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,1.5, + -1,0,0,0,3,1.5, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,1.5, + -1,0,0,0,3,0.205, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,0.205, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.798369,0, + -1,0,0,0,1.798369,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,0, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,0.205, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,1.5, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.5,0.205, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0,0, + -1,0,0,0,0,0.205, + 0.57735,-0.57735,-0.57735,0.455,0.25,1.5, + 0.57735,-0.57735,-0.57735,0.8525,0,2.1475, + 0.57735,-0.57735,-0.57735,0.205,0,1.5, + 0.57735,-0.57735,-0.57735,0.8525,0,2.1475, + 0.57735,-0.57735,-0.57735,0.455,0.25,1.5, + 0.57735,-0.57735,-0.57735,0.9775,0.25,2.0225 +}; +static const struct gllist lament_model_lid_base_frame = { GL_N3F_V3F, GL_TRIANGLES, 1584, lament_model_lid_base_data, 0 }; +const struct gllist *lament_model_lid_base = &lament_model_lid_base_frame; + +static const float lament_model_lid_c_data[] = { + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.795,0,1.5, + -1,0,0,1.5,0.0625,0.2675, + -1,0,0,1.5,0,0.205, + -1,0,0,1.5,0,1.5, + 0,0,1,2.795,0,1.5, + 0,0,1,2.7325,0.0625,1.5, + 0,0,1,1.5,0,1.5, + -0.05058,0.997438,0.05058,2.7325,0.0625,1.5, + -0.05058,0.997438,0.05058,1.5,0.0625,0.2675, + -0.05058,0.997438,0.05058,1.5,0,1.5, + 0.57735,0.57735,-0.57735,1.5,0.0625,0.2675, + 0.57735,0.57735,-0.57735,2.795,0,1.5, + 0.57735,0.57735,-0.57735,1.5,0,0.205, + 0.57735,0.57735,-0.57735,2.795,0,1.5, + 0.57735,0.57735,-0.57735,1.5,0.0625,0.2675, + 0.57735,0.57735,-0.57735,2.7325,0.0625,1.5 +}; +static const struct gllist lament_model_lid_c_frame = { GL_N3F_V3F, GL_TRIANGLES, 18, lament_model_lid_c_data, 0 }; +const struct gllist *lament_model_lid_c = &lament_model_lid_c_frame; + +static const float lament_model_lid_d_data[] = { + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.5,0,1.5, + 0,0,1,1.5,0,1.5, + 0,0,1,0.2675,0.0625,1.5, + 0,0,1,0.205,0,1.5, + 1,0,0,1.5,0.0625,0.2675, + 1,0,0,1.5,0,1.5, + 1,0,0,1.5,0,0.205, + 0.05058,0.997438,0.05058,1.5,0,1.5, + 0.05058,0.997438,0.05058,1.5,0.0625,0.2675, + 0.05058,0.997438,0.05058,0.2675,0.0625,1.5, + -0.57735,0.57735,-0.57735,0.205,0,1.5, + -0.57735,0.57735,-0.57735,1.5,0.0625,0.2675, + -0.57735,0.57735,-0.57735,1.5,0,0.205, + -0.57735,0.57735,-0.57735,1.5,0.0625,0.2675, + -0.57735,0.57735,-0.57735,0.205,0,1.5, + -0.57735,0.57735,-0.57735,0.2675,0.0625,1.5 +}; +static const struct gllist lament_model_lid_d_frame = { GL_N3F_V3F, GL_TRIANGLES, 18, lament_model_lid_d_data, 0 }; +const struct gllist *lament_model_lid_d = &lament_model_lid_d_frame; + +static const float lament_model_pillar_a_data[] = { + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0.74,3, + -0.840455,0.541882,0,0.868083,1.922233,3, + -0.874085,0.485774,0,0.82974,1.858262,1.5, + -0.889521,0.456893,0,0.82974,1.858262,3, + -0.874085,0.485774,0,0.82974,1.858262,1.5, + -0.840455,0.541882,0,0.868083,1.922233,3, + -0.822262,0.56911,0,0.868083,1.922233,1.5, + -0.889521,0.456893,0,0.82974,1.858262,3, + -0.91749,0.397759,0,0.797852,1.790839,1.5, + -0.930022,0.367505,0,0.797852,1.790839,3, + -0.91749,0.397759,0,0.797852,1.790839,1.5, + -0.889521,0.456893,0,0.82974,1.858262,3, + -0.874085,0.485774,0,0.82974,1.858262,1.5, + -0.983848,0.179005,0,0.754603,1.648269,3, + -0.993446,0.114299,0,0.74366,1.574493,1.5, + -0.996656,0.081709,0,0.74366,1.574493,3, + -0.993446,0.114299,0,0.74366,1.574493,1.5, + -0.983848,0.179005,0,0.754603,1.648269,3, + -0.97746,0.211123,0,0.754603,1.648269,1.5, + 0.211123,0.97746,0,1.648269,2.245397,3, + 0.274577,0.961565,0,1.720616,2.227275,1.5, + 0.179005,0.983848,0,1.648269,2.245397,1.5, + 0.274577,0.961565,0,1.720616,2.227275,1.5, + 0.211123,0.97746,0,1.648269,2.245397,3, + 0.305914,0.952059,0,1.720616,2.227275,3, + 0.114299,0.993446,0,1.574493,2.25634,3, + 0.179005,0.983848,0,1.648269,2.245397,1.5, + 0.081709,0.996656,0,1.574493,2.25634,1.5, + 0.179005,0.983848,0,1.648269,2.245397,1.5, + 0.114299,0.993446,0,1.574493,2.25634,3, + 0.211123,0.97746,0,1.648269,2.245397,3, + -0.707107,0.707107,0,0.962599,2.037401,3, + -0.646965,0.76252,0,1.017861,2.087488,1.5, + -0.707107,0.707107,0,0.962599,2.037401,1.5, + -0.646965,0.76252,0,1.017861,2.087488,1.5, + -0.707107,0.707107,0,0.962599,2.037401,3, + -0.621651,0.783294,0,1.017861,2.087488,3, + -0.707107,0.707107,0,0.962599,2.037401,3, + -0.76252,0.646965,0,0.912512,1.982139,1.5, + -0.783294,0.621651,0,0.912512,1.982139,3, + -0.76252,0.646965,0,0.912512,1.982139,1.5, + -0.707107,0.707107,0,0.962599,2.037401,3, + -0.707107,0.707107,0,0.962599,2.037401,1.5, + 0.952059,0.305914,0,2.227275,1.720616,1.5, + 0.930022,0.367505,0,2.202148,1.790839,3, + 0.961565,0.274577,0,2.227275,1.720616,3, + 0.930022,0.367505,0,2.202148,1.790839,3, + 0.952059,0.305914,0,2.227275,1.720616,1.5, + 0.91749,0.397759,0,2.202148,1.790839,1.5, + -0.211123,-0.97746,0,1.351731,0.754603,3, + -0.274577,-0.961565,0,1.279384,0.772725,1.5, + -0.179005,-0.983848,0,1.351731,0.754603,1.5, + -0.274577,-0.961565,0,1.279384,0.772725,1.5, + -0.211123,-0.97746,0,1.351731,0.754603,3, + -0.305914,-0.952059,0,1.279384,0.772725,3, + -0.016373,-0.999866,0,1.5,0.74,3, + -0.081709,-0.996656,0,1.425507,0.74366,1.5, + 0.016373,-0.999866,0,1.5,0.74,1.5, + -0.081709,-0.996656,0,1.425507,0.74366,1.5, + -0.016373,-0.999866,0,1.5,0.74,3, + -0.114299,-0.993446,0,1.425507,0.74366,3, + 0.081709,-0.996656,0,1.574493,0.74366,3, + 0.016373,-0.999866,0,1.5,0.74,1.5, + 0.114299,-0.993446,0,1.574493,0.74366,1.5, + 0.016373,-0.999866,0,1.5,0.74,1.5, + 0.081709,-0.996656,0,1.574493,0.74366,3, + -0.016373,-0.999866,0,1.5,0.74,3, + 0.783294,-0.621651,0,2.087488,1.017861,1.5, + 0.822262,-0.56911,0,2.131917,1.077767,3, + 0.76252,-0.646965,0,2.087488,1.017861,3, + 0.822262,-0.56911,0,2.131917,1.077767,3, + 0.783294,-0.621651,0,2.087488,1.017861,1.5, + 0.840455,-0.541882,0,2.131917,1.077767,1.5, + -0.305914,-0.952059,0,1.279384,0.772725,3, + -0.367505,-0.930022,0,1.209161,0.797852,1.5, + -0.274577,-0.961565,0,1.279384,0.772725,1.5, + -0.367505,-0.930022,0,1.209161,0.797852,1.5, + -0.305914,-0.952059,0,1.279384,0.772725,3, + -0.397759,-0.91749,0,1.209161,0.797852,3, + 0.995185,0.098017,0,2.25634,1.574493,1.5, + 0.999866,0.016373,0,2.26,1.5,3, + 0.999866,-0.016373,0,2.26,1.5,1.5, + 0.999866,0.016373,0,2.26,1.5,3, + 0.995185,0.098017,0,2.25634,1.574493,1.5, + 0.995185,0.098017,0,2.25634,1.574493,3, + -0.114299,-0.993446,0,1.425507,0.74366,3, + -0.179005,-0.983848,0,1.351731,0.754603,1.5, + -0.081709,-0.996656,0,1.425507,0.74366,1.5, + -0.179005,-0.983848,0,1.351731,0.754603,1.5, + -0.114299,-0.993446,0,1.425507,0.74366,3, + -0.211123,-0.97746,0,1.351731,0.754603,3, + 0.456893,-0.889521,0,1.858262,0.82974,3, + 0.397759,-0.91749,0,1.790839,0.797852,1.5, + 0.485774,-0.874085,0,1.858262,0.82974,1.5, + 0.397759,-0.91749,0,1.790839,0.797852,1.5, + 0.456893,-0.889521,0,1.858262,0.82974,3, + 0.367505,-0.930022,0,1.790839,0.797852,3, + -0.541882,0.840455,0,1.077767,2.131917,3, + -0.485774,0.874085,0,1.141738,2.17026,1.5, + -0.56911,0.822262,0,1.077767,2.131917,1.5, + -0.485774,0.874085,0,1.141738,2.17026,1.5, + -0.541882,0.840455,0,1.077767,2.131917,3, + -0.456893,0.889521,0,1.141738,2.17026,3, + -0.621651,0.783294,0,1.017861,2.087488,3, + -0.56911,0.822262,0,1.077767,2.131917,1.5, + -0.646965,0.76252,0,1.017861,2.087488,1.5, + -0.56911,0.822262,0,1.077767,2.131917,1.5, + -0.621651,0.783294,0,1.017861,2.087488,3, + -0.541882,0.840455,0,1.077767,2.131917,3, + 0.485774,0.874085,0,1.858262,2.17026,3, + 0.541882,0.840455,0,1.922233,2.131917,1.5, + 0.456893,0.889521,0,1.858262,2.17026,1.5, + 0.541882,0.840455,0,1.922233,2.131917,1.5, + 0.485774,0.874085,0,1.858262,2.17026,3, + 0.56911,0.822262,0,1.922233,2.131917,3, + 0.71859,-0.695434,0,2.037401,0.962599,1.5, + 0.76252,-0.646965,0,2.087488,1.017861,3, + 0.695434,-0.71859,0,2.037401,0.962599,3, + 0.76252,-0.646965,0,2.087488,1.017861,3, + 0.71859,-0.695434,0,2.037401,0.962599,1.5, + 0.783294,-0.621651,0,2.087488,1.017861,1.5, + 0.97746,0.211123,0,2.245397,1.648269,1.5, + 0.961565,0.274577,0,2.227275,1.720616,3, + 0.983848,0.179005,0,2.245397,1.648269,3, + 0.961565,0.274577,0,2.227275,1.720616,3, + 0.97746,0.211123,0,2.245397,1.648269,1.5, + 0.952059,0.305914,0,2.227275,1.720616,1.5, + 0.993446,-0.114299,0,2.25634,1.425507,1.5, + 0.983848,-0.179005,0,2.245397,1.351731,3, + 0.97746,-0.211123,0,2.245397,1.351731,1.5, + 0.983848,-0.179005,0,2.245397,1.351731,3, + 0.993446,-0.114299,0,2.25634,1.425507,1.5, + 0.996656,-0.081709,0,2.25634,1.425507,3, + -0.397759,-0.91749,0,1.209161,0.797852,3, + -0.456893,-0.889521,0,1.141738,0.82974,1.5, + -0.367505,-0.930022,0,1.209161,0.797852,1.5, + -0.456893,-0.889521,0,1.141738,0.82974,1.5, + -0.397759,-0.91749,0,1.209161,0.797852,3, + -0.485774,-0.874085,0,1.141738,0.82974,3, + -0.930022,0.367505,0,0.797852,1.790839,3, + -0.952059,0.305914,0,0.772725,1.720616,1.5, + -0.961565,0.274577,0,0.772725,1.720616,3, + -0.952059,0.305914,0,0.772725,1.720616,1.5, + -0.930022,0.367505,0,0.797852,1.790839,3, + -0.91749,0.397759,0,0.797852,1.790839,1.5, + 0.016373,0.999866,0,1.5,2.26,3, + 0.081709,0.996656,0,1.574493,2.25634,1.5, + -0.016373,0.999866,0,1.5,2.26,1.5, + 0.081709,0.996656,0,1.574493,2.25634,1.5, + 0.016373,0.999866,0,1.5,2.26,3, + 0.114299,0.993446,0,1.574493,2.25634,3, + -0.081709,0.996656,0,1.425507,2.25634,3, + -0.016373,0.999866,0,1.5,2.26,1.5, + -0.114299,0.993446,0,1.425507,2.25634,1.5, + -0.016373,0.999866,0,1.5,2.26,1.5, + -0.081709,0.996656,0,1.425507,2.25634,3, + 0.016373,0.999866,0,1.5,2.26,3, + -0.179005,0.983848,0,1.351731,2.245397,3, + -0.114299,0.993446,0,1.425507,2.25634,1.5, + -0.211123,0.97746,0,1.351731,2.245397,1.5, + -0.114299,0.993446,0,1.425507,2.25634,1.5, + -0.179005,0.983848,0,1.351731,2.245397,3, + -0.081709,0.996656,0,1.425507,2.25634,3, + -0.274577,0.961565,0,1.279384,2.227275,3, + -0.211123,0.97746,0,1.351731,2.245397,1.5, + -0.305914,0.952059,0,1.279384,2.227275,1.5, + -0.211123,0.97746,0,1.351731,2.245397,1.5, + -0.274577,0.961565,0,1.279384,2.227275,3, + -0.179005,0.983848,0,1.351731,2.245397,3, + -0.367505,0.930022,0,1.209161,2.202148,3, + -0.305914,0.952059,0,1.279384,2.227275,1.5, + -0.397759,0.91749,0,1.209161,2.202148,1.5, + -0.305914,0.952059,0,1.279384,2.227275,1.5, + -0.367505,0.930022,0,1.209161,2.202148,3, + -0.274577,0.961565,0,1.279384,2.227275,3, + 0.874085,0.485774,0,2.17026,1.858262,1.5, + 0.840455,0.541882,0,2.131917,1.922233,3, + 0.889521,0.456893,0,2.17026,1.858262,3, + 0.840455,0.541882,0,2.131917,1.922233,3, + 0.874085,0.485774,0,2.17026,1.858262,1.5, + 0.822262,0.56911,0,2.131917,1.922233,1.5, + -0.783294,0.621651,0,0.912512,1.982139,3, + -0.822262,0.56911,0,0.868083,1.922233,1.5, + -0.840455,0.541882,0,0.868083,1.922233,3, + -0.822262,0.56911,0,0.868083,1.922233,1.5, + -0.783294,0.621651,0,0.912512,1.982139,3, + -0.76252,0.646965,0,0.912512,1.982139,1.5, + 0.541882,-0.840455,0,1.922233,0.868083,3, + 0.485774,-0.874085,0,1.858262,0.82974,1.5, + 0.56911,-0.822262,0,1.922233,0.868083,1.5, + 0.485774,-0.874085,0,1.858262,0.82974,1.5, + 0.541882,-0.840455,0,1.922233,0.868083,3, + 0.456893,-0.889521,0,1.858262,0.82974,3, + 0.621651,-0.783294,0,1.982139,0.912512,3, + 0.56911,-0.822262,0,1.922233,0.868083,1.5, + 0.646965,-0.76252,0,1.982139,0.912512,1.5, + 0.56911,-0.822262,0,1.922233,0.868083,1.5, + 0.621651,-0.783294,0,1.982139,0.912512,3, + 0.541882,-0.840455,0,1.922233,0.868083,3, + 0.695434,-0.71859,0,2.037401,0.962599,3, + 0.646965,-0.76252,0,1.982139,0.912512,1.5, + 0.71859,-0.695434,0,2.037401,0.962599,1.5, + 0.646965,-0.76252,0,1.982139,0.912512,1.5, + 0.695434,-0.71859,0,2.037401,0.962599,3, + 0.621651,-0.783294,0,1.982139,0.912512,3, + -0.646965,-0.76252,0,1.017861,0.912512,3, + -0.695434,-0.71859,0,0.962599,0.962599,1.5, + -0.621651,-0.783294,0,1.017861,0.912512,1.5, + -0.695434,-0.71859,0,0.962599,0.962599,1.5, + -0.646965,-0.76252,0,1.017861,0.912512,3, + -0.71859,-0.695434,0,0.962599,0.962599,3, + 0.397759,0.91749,0,1.790839,2.202148,3, + 0.456893,0.889521,0,1.858262,2.17026,1.5, + 0.367505,0.930022,0,1.790839,2.202148,1.5, + 0.456893,0.889521,0,1.858262,2.17026,1.5, + 0.397759,0.91749,0,1.790839,2.202148,3, + 0.485774,0.874085,0,1.858262,2.17026,3, + 0.822262,0.56911,0,2.131917,1.922233,1.5, + 0.783294,0.621651,0,2.087488,1.982139,3, + 0.840455,0.541882,0,2.131917,1.922233,3, + 0.783294,0.621651,0,2.087488,1.982139,3, + 0.822262,0.56911,0,2.131917,1.922233,1.5, + 0.76252,0.646965,0,2.087488,1.982139,1.5, + 0.995185,0.098017,0,2.25634,1.574493,1.5, + 0.983848,0.179005,0,2.245397,1.648269,3, + 0.995185,0.098017,0,2.25634,1.574493,3, + 0.983848,0.179005,0,2.245397,1.648269,3, + 0.995185,0.098017,0,2.25634,1.574493,1.5, + 0.97746,0.211123,0,2.245397,1.648269,1.5, + 0.56911,0.822262,0,1.922233,2.131917,3, + 0.621651,0.783294,0,1.982139,2.087488,1.5, + 0.541882,0.840455,0,1.922233,2.131917,1.5, + 0.621651,0.783294,0,1.982139,2.087488,1.5, + 0.56911,0.822262,0,1.922233,2.131917,3, + 0.646965,0.76252,0,1.982139,2.087488,3, + 0.646965,0.76252,0,1.982139,2.087488,3, + 0.695434,0.71859,0,2.037401,2.037401,1.5, + 0.621651,0.783294,0,1.982139,2.087488,1.5, + 0.695434,0.71859,0,2.037401,2.037401,1.5, + 0.646965,0.76252,0,1.982139,2.087488,3, + 0.71859,0.695434,0,2.037401,2.037401,3, + 0.305914,0.952059,0,1.720616,2.227275,3, + 0.367505,0.930022,0,1.790839,2.202148,1.5, + 0.274577,0.961565,0,1.720616,2.227275,1.5, + 0.367505,0.930022,0,1.790839,2.202148,1.5, + 0.305914,0.952059,0,1.720616,2.227275,3, + 0.397759,0.91749,0,1.790839,2.202148,3, + 0.91749,0.397759,0,2.202148,1.790839,1.5, + 0.889521,0.456893,0,2.17026,1.858262,3, + 0.930022,0.367505,0,2.202148,1.790839,3, + 0.889521,0.456893,0,2.17026,1.858262,3, + 0.91749,0.397759,0,2.202148,1.790839,1.5, + 0.874085,0.485774,0,2.17026,1.858262,1.5, + -0.485774,-0.874085,0,1.141738,0.82974,3, + -0.541882,-0.840455,0,1.077767,0.868083,1.5, + -0.456893,-0.889521,0,1.141738,0.82974,1.5, + -0.541882,-0.840455,0,1.077767,0.868083,1.5, + -0.485774,-0.874085,0,1.141738,0.82974,3, + -0.56911,-0.822262,0,1.077767,0.868083,3, + 0.367505,-0.930022,0,1.790839,0.797852,3, + 0.305914,-0.952059,0,1.720616,0.772725,1.5, + 0.397759,-0.91749,0,1.790839,0.797852,1.5, + 0.305914,-0.952059,0,1.720616,0.772725,1.5, + 0.367505,-0.930022,0,1.790839,0.797852,3, + 0.274577,-0.961565,0,1.720616,0.772725,3, + -0.996656,0.081709,0,0.74366,1.574493,3, + -0.999866,0.016373,0,0.74,1.5,1.5, + -0.999866,-0.016373,0,0.74,1.5,3, + -0.999866,0.016373,0,0.74,1.5,1.5, + -0.996656,0.081709,0,0.74366,1.574493,3, + -0.993446,0.114299,0,0.74366,1.574493,1.5, + -0.961565,0.274577,0,0.772725,1.720616,3, + -0.97746,0.211123,0,0.754603,1.648269,1.5, + -0.983848,0.179005,0,0.754603,1.648269,3, + -0.97746,0.211123,0,0.754603,1.648269,1.5, + -0.961565,0.274577,0,0.772725,1.720616,3, + -0.952059,0.305914,0,0.772725,1.720616,1.5, + 0.76252,0.646965,0,2.087488,1.982139,1.5, + 0.71859,0.695434,0,2.037401,2.037401,3, + 0.783294,0.621651,0,2.087488,1.982139,3, + 0.71859,0.695434,0,2.037401,2.037401,3, + 0.76252,0.646965,0,2.087488,1.982139,1.5, + 0.695434,0.71859,0,2.037401,2.037401,1.5, + 0.274577,-0.961565,0,1.720616,0.772725,3, + 0.211123,-0.97746,0,1.648269,0.754603,1.5, + 0.305914,-0.952059,0,1.720616,0.772725,1.5, + 0.211123,-0.97746,0,1.648269,0.754603,1.5, + 0.274577,-0.961565,0,1.720616,0.772725,3, + 0.179005,-0.983848,0,1.648269,0.754603,3, + -0.71859,-0.695434,0,0.962599,0.962599,3, + -0.76252,-0.646965,0,0.912512,1.017861,1.5, + -0.695434,-0.71859,0,0.962599,0.962599,1.5, + -0.76252,-0.646965,0,0.912512,1.017861,1.5, + -0.71859,-0.695434,0,0.962599,0.962599,3, + -0.783294,-0.621651,0,0.912512,1.017861,3, + -0.91749,-0.397759,0,0.797852,1.209161,3, + -0.881921,-0.471397,0,0.82974,1.141738,1.5, + -0.881921,-0.471397,0,0.82974,1.141738,3, + -0.881921,-0.471397,0,0.82974,1.141738,1.5, + -0.91749,-0.397759,0,0.797852,1.209161,3, + -0.930022,-0.367505,0,0.797852,1.209161,1.5, + 0.840455,-0.541882,0,2.131917,1.077767,1.5, + 0.881921,-0.471397,0,2.17026,1.141738,3, + 0.822262,-0.56911,0,2.131917,1.077767,3, + 0.881921,-0.471397,0,2.17026,1.141738,3, + 0.840455,-0.541882,0,2.131917,1.077767,1.5, + 0.881921,-0.471397,0,2.17026,1.141738,1.5, + 0.91749,-0.397759,0,2.202148,1.209161,1.5, + 0.881921,-0.471397,0,2.17026,1.141738,3, + 0.881921,-0.471397,0,2.17026,1.141738,1.5, + 0.881921,-0.471397,0,2.17026,1.141738,3, + 0.91749,-0.397759,0,2.202148,1.209161,1.5, + 0.930022,-0.367505,0,2.202148,1.209161,3, + -0.840455,-0.541882,0,0.868083,1.077767,3, + -0.881921,-0.471397,0,0.82974,1.141738,1.5, + -0.822262,-0.56911,0,0.868083,1.077767,1.5, + -0.881921,-0.471397,0,0.82974,1.141738,1.5, + -0.840455,-0.541882,0,0.868083,1.077767,3, + -0.881921,-0.471397,0,0.82974,1.141738,3, + 0.97746,-0.211123,0,2.245397,1.351731,1.5, + 0.961565,-0.274577,0,2.227275,1.279384,3, + 0.952059,-0.305914,0,2.227275,1.279384,1.5, + 0.961565,-0.274577,0,2.227275,1.279384,3, + 0.97746,-0.211123,0,2.245397,1.351731,1.5, + 0.983848,-0.179005,0,2.245397,1.351731,3, + 0.952059,-0.305914,0,2.227275,1.279384,1.5, + 0.930022,-0.367505,0,2.202148,1.209161,3, + 0.91749,-0.397759,0,2.202148,1.209161,1.5, + 0.930022,-0.367505,0,2.202148,1.209161,3, + 0.952059,-0.305914,0,2.227275,1.279384,1.5, + 0.961565,-0.274577,0,2.227275,1.279384,3, + 0.999866,-0.016373,0,2.26,1.5,1.5, + 0.996656,-0.081709,0,2.25634,1.425507,3, + 0.993446,-0.114299,0,2.25634,1.425507,1.5, + 0.996656,-0.081709,0,2.25634,1.425507,3, + 0.999866,-0.016373,0,2.26,1.5,1.5, + 0.999866,0.016373,0,2.26,1.5,3, + 0.179005,-0.983848,0,1.648269,0.754603,3, + 0.114299,-0.993446,0,1.574493,0.74366,1.5, + 0.211123,-0.97746,0,1.648269,0.754603,1.5, + 0.114299,-0.993446,0,1.574493,0.74366,1.5, + 0.179005,-0.983848,0,1.648269,0.754603,3, + 0.081709,-0.996656,0,1.574493,0.74366,3, + -0.783294,-0.621651,0,0.912512,1.017861,3, + -0.822262,-0.56911,0,0.868083,1.077767,1.5, + -0.76252,-0.646965,0,0.912512,1.017861,1.5, + -0.822262,-0.56911,0,0.868083,1.077767,1.5, + -0.783294,-0.621651,0,0.912512,1.017861,3, + -0.840455,-0.541882,0,0.868083,1.077767,3, + -0.56911,-0.822262,0,1.077767,0.868083,3, + -0.621651,-0.783294,0,1.017861,0.912512,1.5, + -0.541882,-0.840455,0,1.077767,0.868083,1.5, + -0.621651,-0.783294,0,1.017861,0.912512,1.5, + -0.56911,-0.822262,0,1.077767,0.868083,3, + -0.646965,-0.76252,0,1.017861,0.912512,3, + -0.999866,-0.016373,0,0.74,1.5,3, + -0.996656,-0.081709,0,0.74366,1.425507,1.5, + -0.993446,-0.114299,0,0.74366,1.425507,3, + -0.996656,-0.081709,0,0.74366,1.425507,1.5, + -0.999866,-0.016373,0,0.74,1.5,3, + -0.999866,0.016373,0,0.74,1.5,1.5, + -0.993446,-0.114299,0,0.74366,1.425507,3, + -0.983848,-0.179005,0,0.754603,1.351731,1.5, + -0.97746,-0.211123,0,0.754603,1.351731,3, + -0.983848,-0.179005,0,0.754603,1.351731,1.5, + -0.993446,-0.114299,0,0.74366,1.425507,3, + -0.996656,-0.081709,0,0.74366,1.425507,1.5, + -0.97746,-0.211123,0,0.754603,1.351731,3, + -0.961565,-0.274577,0,0.772725,1.279384,1.5, + -0.952059,-0.305914,0,0.772725,1.279384,3, + -0.961565,-0.274577,0,0.772725,1.279384,1.5, + -0.97746,-0.211123,0,0.754603,1.351731,3, + -0.983848,-0.179005,0,0.754603,1.351731,1.5, + -0.952059,-0.305914,0,0.772725,1.279384,3, + -0.930022,-0.367505,0,0.797852,1.209161,1.5, + -0.91749,-0.397759,0,0.797852,1.209161,3, + -0.930022,-0.367505,0,0.797852,1.209161,1.5, + -0.952059,-0.305914,0,0.772725,1.279384,3, + -0.961565,-0.274577,0,0.772725,1.279384,1.5, + -0.456893,0.889521,0,1.141738,2.17026,3, + -0.397759,0.91749,0,1.209161,2.202148,1.5, + -0.485774,0.874085,0,1.141738,2.17026,1.5, + -0.397759,0.91749,0,1.209161,2.202148,1.5, + -0.456893,0.889521,0,1.141738,2.17026,3, + -0.367505,0.930022,0,1.209161,2.202148,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.26,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.754603,1.351731,3, + 0,0,-1,2.245397,1.351731,1.5, + 0,0,-1,2.202148,1.209161,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.202148,1.209161,1.5, + 0,0,-1,2.245397,1.351731,1.5, + 0,0,-1,2.227275,1.279384,1.5, + 0,0,-1,2.26,1.5,1.5, + 0,0,-1,2.245397,1.351731,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.245397,1.351731,1.5, + 0,0,-1,2.26,1.5,1.5, + 0,0,-1,2.25634,1.425507,1.5, + 0,0,-1,2.131917,1.077767,1.5, + 0,0,-1,2.037401,0.962599,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.037401,0.962599,1.5, + 0,0,-1,2.131917,1.077767,1.5, + 0,0,-1,2.087488,1.017861,1.5, + 0,0,-1,2.202148,1.209161,1.5, + 0,0,-1,2.131917,1.077767,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.131917,1.077767,1.5, + 0,0,-1,2.202148,1.209161,1.5, + 0,0,-1,2.17026,1.141738,1.5, + 0,0,-1,1.425507,2.25634,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.351731,2.245397,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.425507,2.25634,1.5, + 0,0,-1,1.5,2.26,1.5, + 0,0,-1,1.279384,2.227275,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.209161,2.202148,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.279384,2.227275,1.5, + 0,0,-1,1.351731,2.245397,1.5, + 0,0,-1,2.202148,1.790839,1.5, + 0,0,-1,2.245397,1.648269,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.245397,1.648269,1.5, + 0,0,-1,2.202148,1.790839,1.5, + 0,0,-1,2.227275,1.720616,1.5, + 0,0,-1,2.245397,1.648269,1.5, + 0,0,-1,2.26,1.5,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.26,1.5,1.5, + 0,0,-1,2.245397,1.648269,1.5, + 0,0,-1,2.25634,1.574493,1.5, + 0,0,-1,1.790839,0.797852,1.5, + 0,0,-1,1.648269,0.754603,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.648269,0.754603,1.5, + 0,0,-1,1.790839,0.797852,1.5, + 0,0,-1,1.720616,0.772725,1.5, + 0,0,-1,1.922233,0.868083,1.5, + 0,0,-1,1.790839,0.797852,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.790839,0.797852,1.5, + 0,0,-1,1.922233,0.868083,1.5, + 0,0,-1,1.858262,0.82974,1.5, + 0,0,-1,1.922233,2.131917,1.5, + 0,0,-1,2.037401,2.037401,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.037401,2.037401,1.5, + 0,0,-1,1.922233,2.131917,1.5, + 0,0,-1,1.982139,2.087488,1.5, + 0,0,-1,2.037401,2.037401,1.5, + 0,0,-1,2.131917,1.922233,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.131917,1.922233,1.5, + 0,0,-1,2.037401,2.037401,1.5, + 0,0,-1,2.087488,1.982139,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.912512,1.017861,1.5, + 0,0,-1,0.868083,1.077767,1.5, + 0,0,-1,0.912512,1.017861,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.962599,0.962599,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.82974,1.141738,1.5, + 0,0,-1,0.797852,1.209161,1.5, + 0,0,-1,0.82974,1.141738,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.868083,1.077767,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.017861,0.912512,1.5, + 0,0,-1,0.962599,0.962599,1.5, + 0,0,-1,1.017861,0.912512,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.077767,0.868083,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.141738,0.82974,1.5, + 0,0,-1,1.077767,0.868083,1.5, + 0,0,-1,1.141738,0.82974,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.209161,0.797852,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.425507,0.74366,1.5, + 0,0,-1,1.351731,0.754603,1.5, + 0,0,-1,1.425507,0.74366,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.5,0.74,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.574493,0.74366,1.5, + 0,0,-1,1.5,0.74,1.5, + 0,0,-1,1.574493,0.74366,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.648269,0.754603,1.5, + 0,0,-1,1.574493,2.25634,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.5,2.26,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.574493,2.25634,1.5, + 0,0,-1,1.648269,2.245397,1.5, + 0,0,-1,1.648269,2.245397,1.5, + 0,0,-1,1.790839,2.202148,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.790839,2.202148,1.5, + 0,0,-1,1.648269,2.245397,1.5, + 0,0,-1,1.720616,2.227275,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.74366,1.425507,1.5, + 0,0,-1,0.74,1.5,1.5, + 0,0,-1,0.74366,1.425507,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.754603,1.351731,1.5, + 0,0,-1,0.74366,1.574493,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.74,1.5,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.74366,1.574493,1.5, + 0,0,-1,0.754603,1.648269,1.5, + 0,0,-1,0.82974,1.858262,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.797852,1.790839,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.82974,1.858262,1.5, + 0,0,-1,0.868083,1.922233,1.5, + 0,0,-1,0.772725,1.720616,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.754603,1.648269,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.772725,1.720616,1.5, + 0,0,-1,0.797852,1.790839,1.5, + 0,0,-1,1.017861,2.087488,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.962599,2.037401,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.017861,2.087488,1.5, + 0,0,-1,1.077767,2.131917,1.5, + 0,0,-1,0.912512,1.982139,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.868083,1.922233,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.912512,1.982139,1.5, + 0,0,-1,0.962599,2.037401,1.5, + 0,0,-1,1.790839,2.202148,1.5, + 0,0,-1,1.922233,2.131917,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.922233,2.131917,1.5, + 0,0,-1,1.790839,2.202148,1.5, + 0,0,-1,1.858262,2.17026,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.279384,0.772725,1.5, + 0,0,-1,1.209161,0.797852,1.5, + 0,0,-1,1.279384,0.772725,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.351731,0.754603,1.5, + 0,0,-1,2.131917,1.922233,1.5, + 0,0,-1,2.202148,1.790839,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.202148,1.790839,1.5, + 0,0,-1,2.131917,1.922233,1.5, + 0,0,-1,2.17026,1.858262,1.5, + 0,0,-1,2.037401,0.962599,1.5, + 0,0,-1,1.922233,0.868083,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.922233,0.868083,1.5, + 0,0,-1,2.037401,0.962599,1.5, + 0,0,-1,1.982139,0.912512,1.5, + 0,0,-1,1.141738,2.17026,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.077767,2.131917,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.141738,2.17026,1.5, + 0,0,-1,1.209161,2.202148,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.772725,1.279384,1.5, + 0,0,-1,0.754603,1.351731,1.5, + 0,0,-1,0.772725,1.279384,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.797852,1.209161,1.5 +}; +static const struct gllist lament_model_pillar_a_frame = { GL_N3F_V3F, GL_TRIANGLES, 768, lament_model_pillar_a_data, 0 }; +const struct gllist *lament_model_pillar_a = &lament_model_pillar_a_frame; + +static const float lament_model_pillar_b_data[] = { + 0.97746,0.211123,0,2.245397,1.648269,0, + 0.961565,0.274577,0,2.227275,1.720616,1.5, + 0.983848,0.179005,0,2.245397,1.648269,1.5, + 0.961565,0.274577,0,2.227275,1.720616,1.5, + 0.97746,0.211123,0,2.245397,1.648269,0, + 0.952059,0.305914,0,2.227275,1.720616,0, + -0.621651,0.783294,0,1.017861,2.087488,1.5, + -0.56911,0.822262,0,1.077767,2.131917,0, + -0.646965,0.76252,0,1.017861,2.087488,0, + -0.56911,0.822262,0,1.077767,2.131917,0, + -0.621651,0.783294,0,1.017861,2.087488,1.5, + -0.541882,0.840455,0,1.077767,2.131917,1.5, + 0.485774,0.874085,0,1.858262,2.17026,1.5, + 0.541882,0.840455,0,1.922233,2.131917,0, + 0.456893,0.889521,0,1.858262,2.17026,0, + 0.541882,0.840455,0,1.922233,2.131917,0, + 0.485774,0.874085,0,1.858262,2.17026,1.5, + 0.56911,0.822262,0,1.922233,2.131917,1.5, + 0.456893,-0.889521,0,1.858262,0.82974,1.5, + 0.397759,-0.91749,0,1.790839,0.797852,0, + 0.485774,-0.874085,0,1.858262,0.82974,0, + 0.397759,-0.91749,0,1.790839,0.797852,0, + 0.456893,-0.889521,0,1.858262,0.82974,1.5, + 0.367505,-0.930022,0,1.790839,0.797852,1.5, + -0.541882,0.840455,0,1.077767,2.131917,1.5, + -0.485774,0.874085,0,1.141738,2.17026,0, + -0.56911,0.822262,0,1.077767,2.131917,0, + -0.485774,0.874085,0,1.141738,2.17026,0, + -0.541882,0.840455,0,1.077767,2.131917,1.5, + -0.456893,0.889521,0,1.141738,2.17026,1.5, + -0.211123,-0.97746,0,1.351731,0.754603,1.5, + -0.274577,-0.961565,0,1.279384,0.772725,0, + -0.179005,-0.983848,0,1.351731,0.754603,0, + -0.274577,-0.961565,0,1.279384,0.772725,0, + -0.211123,-0.97746,0,1.351731,0.754603,1.5, + -0.305914,-0.952059,0,1.279384,0.772725,1.5, + -0.114299,-0.993446,0,1.425507,0.74366,1.5, + -0.179005,-0.983848,0,1.351731,0.754603,0, + -0.081709,-0.996656,0,1.425507,0.74366,0, + -0.179005,-0.983848,0,1.351731,0.754603,0, + -0.114299,-0.993446,0,1.425507,0.74366,1.5, + -0.211123,-0.97746,0,1.351731,0.754603,1.5, + -0.016373,-0.999866,0,1.5,0.74,1.5, + -0.081709,-0.996656,0,1.425507,0.74366,0, + 0.016373,-0.999866,0,1.5,0.74,0, + -0.081709,-0.996656,0,1.425507,0.74366,0, + -0.016373,-0.999866,0,1.5,0.74,1.5, + -0.114299,-0.993446,0,1.425507,0.74366,1.5, + 0.081709,-0.996656,0,1.574493,0.74366,1.5, + 0.016373,-0.999866,0,1.5,0.74,0, + 0.114299,-0.993446,0,1.574493,0.74366,0, + 0.016373,-0.999866,0,1.5,0.74,0, + 0.081709,-0.996656,0,1.574493,0.74366,1.5, + -0.016373,-0.999866,0,1.5,0.74,1.5, + 0.783294,-0.621651,0,2.087488,1.017861,0, + 0.822262,-0.56911,0,2.131917,1.077767,1.5, + 0.76252,-0.646965,0,2.087488,1.017861,1.5, + 0.822262,-0.56911,0,2.131917,1.077767,1.5, + 0.783294,-0.621651,0,2.087488,1.017861,0, + 0.840455,-0.541882,0,2.131917,1.077767,0, + -0.305914,-0.952059,0,1.279384,0.772725,1.5, + -0.367505,-0.930022,0,1.209161,0.797852,0, + -0.274577,-0.961565,0,1.279384,0.772725,0, + -0.367505,-0.930022,0,1.209161,0.797852,0, + -0.305914,-0.952059,0,1.279384,0.772725,1.5, + -0.397759,-0.91749,0,1.209161,0.797852,1.5, + 1,0,0,2.26,1.5,0, + 0.996656,0.081709,0,2.25634,1.574493,1.5, + 1,0,0,2.26,1.5,1.5, + 0.996656,0.081709,0,2.25634,1.574493,1.5, + 1,0,0,2.26,1.5,0, + 0.993446,0.114299,0,2.25634,1.574493,0, + -0.980785,0.19509,0,0.754603,1.648269,1.5, + -0.993446,0.114299,0,0.74366,1.574493,0, + -0.996656,0.081709,0,0.74366,1.574493,1.5, + -0.993446,0.114299,0,0.74366,1.574493,0, + -0.980785,0.19509,0,0.754603,1.648269,1.5, + -0.980785,0.19509,0,0.754603,1.648269,0, + 0.211123,0.97746,0,1.648269,2.245397,1.5, + 0.274577,0.961565,0,1.720616,2.227275,0, + 0.179005,0.983848,0,1.648269,2.245397,0, + 0.274577,0.961565,0,1.720616,2.227275,0, + 0.211123,0.97746,0,1.648269,2.245397,1.5, + 0.305914,0.952059,0,1.720616,2.227275,1.5, + 0.114299,0.993446,0,1.574493,2.25634,1.5, + 0.179005,0.983848,0,1.648269,2.245397,0, + 0.081709,0.996656,0,1.574493,2.25634,0, + 0.179005,0.983848,0,1.648269,2.245397,0, + 0.114299,0.993446,0,1.574493,2.25634,1.5, + 0.211123,0.97746,0,1.648269,2.245397,1.5, + -0.707107,0.707107,0,0.962599,2.037401,1.5, + -0.646965,0.76252,0,1.017861,2.087488,0, + -0.707107,0.707107,0,0.962599,2.037401,0, + -0.646965,0.76252,0,1.017861,2.087488,0, + -0.707107,0.707107,0,0.962599,2.037401,1.5, + -0.621651,0.783294,0,1.017861,2.087488,1.5, + -0.707107,0.707107,0,0.962599,2.037401,1.5, + -0.76252,0.646965,0,0.912512,1.982139,0, + -0.783294,0.621651,0,0.912512,1.982139,1.5, + -0.76252,0.646965,0,0.912512,1.982139,0, + -0.707107,0.707107,0,0.962599,2.037401,1.5, + -0.707107,0.707107,0,0.962599,2.037401,0, + -0.881921,0.471397,0,0.82974,1.858262,1.5, + -0.83147,0.55557,0,0.868083,1.922233,0, + -0.881921,0.471397,0,0.82974,1.858262,0, + -0.83147,0.55557,0,0.868083,1.922233,0, + -0.881921,0.471397,0,0.82974,1.858262,1.5, + -0.83147,0.55557,0,0.868083,1.922233,1.5, + -0.881921,0.471397,0,0.82974,1.858262,1.5, + -0.91749,0.397759,0,0.797852,1.790839,0, + -0.930022,0.367505,0,0.797852,1.790839,1.5, + -0.91749,0.397759,0,0.797852,1.790839,0, + -0.881921,0.471397,0,0.82974,1.858262,1.5, + -0.881921,0.471397,0,0.82974,1.858262,0, + -0.930022,0.367505,0,0.797852,1.790839,1.5, + -0.95694,0.290285,0,0.772725,1.720616,0, + -0.95694,0.290285,0,0.772725,1.720616,1.5, + -0.95694,0.290285,0,0.772725,1.720616,0, + -0.930022,0.367505,0,0.797852,1.790839,1.5, + -0.91749,0.397759,0,0.797852,1.790839,0, + 0.016373,0.999866,0,1.5,2.26,1.5, + 0.081709,0.996656,0,1.574493,2.25634,0, + -0.016373,0.999866,0,1.5,2.26,0, + 0.081709,0.996656,0,1.574493,2.25634,0, + 0.016373,0.999866,0,1.5,2.26,1.5, + 0.114299,0.993446,0,1.574493,2.25634,1.5, + -0.081709,0.996656,0,1.425507,2.25634,1.5, + -0.016373,0.999866,0,1.5,2.26,0, + -0.114299,0.993446,0,1.425507,2.25634,0, + -0.016373,0.999866,0,1.5,2.26,0, + -0.081709,0.996656,0,1.425507,2.25634,1.5, + 0.016373,0.999866,0,1.5,2.26,1.5, + -0.179005,0.983848,0,1.351731,2.245397,1.5, + -0.114299,0.993446,0,1.425507,2.25634,0, + -0.211123,0.97746,0,1.351731,2.245397,0, + -0.114299,0.993446,0,1.425507,2.25634,0, + -0.179005,0.983848,0,1.351731,2.245397,1.5, + -0.081709,0.996656,0,1.425507,2.25634,1.5, + -0.274577,0.961565,0,1.279384,2.227275,1.5, + -0.211123,0.97746,0,1.351731,2.245397,0, + -0.305914,0.952059,0,1.279384,2.227275,0, + -0.211123,0.97746,0,1.351731,2.245397,0, + -0.274577,0.961565,0,1.279384,2.227275,1.5, + -0.179005,0.983848,0,1.351731,2.245397,1.5, + -0.367505,0.930022,0,1.209161,2.202148,1.5, + -0.305914,0.952059,0,1.279384,2.227275,0, + -0.397759,0.91749,0,1.209161,2.202148,0, + -0.305914,0.952059,0,1.279384,2.227275,0, + -0.367505,0.930022,0,1.209161,2.202148,1.5, + -0.274577,0.961565,0,1.279384,2.227275,1.5, + 0.874085,0.485774,0,2.17026,1.858262,0, + 0.83147,0.55557,0,2.131917,1.922233,1.5, + 0.889521,0.456893,0,2.17026,1.858262,1.5, + 0.83147,0.55557,0,2.131917,1.922233,1.5, + 0.874085,0.485774,0,2.17026,1.858262,0, + 0.83147,0.55557,0,2.131917,1.922233,0, + -0.783294,0.621651,0,0.912512,1.982139,1.5, + -0.83147,0.55557,0,0.868083,1.922233,0, + -0.83147,0.55557,0,0.868083,1.922233,1.5, + -0.83147,0.55557,0,0.868083,1.922233,0, + -0.783294,0.621651,0,0.912512,1.982139,1.5, + -0.76252,0.646965,0,0.912512,1.982139,0, + 0.541882,-0.840455,0,1.922233,0.868083,1.5, + 0.485774,-0.874085,0,1.858262,0.82974,0, + 0.56911,-0.822262,0,1.922233,0.868083,0, + 0.485774,-0.874085,0,1.858262,0.82974,0, + 0.541882,-0.840455,0,1.922233,0.868083,1.5, + 0.456893,-0.889521,0,1.858262,0.82974,1.5, + 0.621651,-0.783294,0,1.982139,0.912512,1.5, + 0.56911,-0.822262,0,1.922233,0.868083,0, + 0.646965,-0.76252,0,1.982139,0.912512,0, + 0.56911,-0.822262,0,1.922233,0.868083,0, + 0.621651,-0.783294,0,1.982139,0.912512,1.5, + 0.541882,-0.840455,0,1.922233,0.868083,1.5, + 0.695434,-0.71859,0,2.037401,0.962599,1.5, + 0.646965,-0.76252,0,1.982139,0.912512,0, + 0.71859,-0.695434,0,2.037401,0.962599,0, + 0.646965,-0.76252,0,1.982139,0.912512,0, + 0.695434,-0.71859,0,2.037401,0.962599,1.5, + 0.621651,-0.783294,0,1.982139,0.912512,1.5, + -0.646965,-0.76252,0,1.017861,0.912512,1.5, + -0.695434,-0.71859,0,0.962599,0.962599,0, + -0.621651,-0.783294,0,1.017861,0.912512,0, + -0.695434,-0.71859,0,0.962599,0.962599,0, + -0.646965,-0.76252,0,1.017861,0.912512,1.5, + -0.71859,-0.695434,0,0.962599,0.962599,1.5, + 0.397759,0.91749,0,1.790839,2.202148,1.5, + 0.456893,0.889521,0,1.858262,2.17026,0, + 0.367505,0.930022,0,1.790839,2.202148,0, + 0.456893,0.889521,0,1.858262,2.17026,0, + 0.397759,0.91749,0,1.790839,2.202148,1.5, + 0.485774,0.874085,0,1.858262,2.17026,1.5, + 0.783294,0.621651,0,2.087488,1.982139,0, + 0.83147,0.55557,0,2.131917,1.922233,1.5, + 0.83147,0.55557,0,2.131917,1.922233,0, + 0.83147,0.55557,0,2.131917,1.922233,1.5, + 0.783294,0.621651,0,2.087488,1.982139,0, + 0.76252,0.646965,0,2.087488,1.982139,1.5, + 0.993446,0.114299,0,2.25634,1.574493,0, + 0.983848,0.179005,0,2.245397,1.648269,1.5, + 0.996656,0.081709,0,2.25634,1.574493,1.5, + 0.983848,0.179005,0,2.245397,1.648269,1.5, + 0.993446,0.114299,0,2.25634,1.574493,0, + 0.97746,0.211123,0,2.245397,1.648269,0, + 0.56911,0.822262,0,1.922233,2.131917,1.5, + 0.621651,0.783294,0,1.982139,2.087488,0, + 0.541882,0.840455,0,1.922233,2.131917,0, + 0.621651,0.783294,0,1.982139,2.087488,0, + 0.56911,0.822262,0,1.922233,2.131917,1.5, + 0.646965,0.76252,0,1.982139,2.087488,1.5, + 0.646965,0.76252,0,1.982139,2.087488,1.5, + 0.707107,0.707107,0,2.037401,2.037401,0, + 0.621651,0.783294,0,1.982139,2.087488,0, + 0.707107,0.707107,0,2.037401,2.037401,0, + 0.646965,0.76252,0,1.982139,2.087488,1.5, + 0.707107,0.707107,0,2.037401,2.037401,1.5, + 0.305914,0.952059,0,1.720616,2.227275,1.5, + 0.367505,0.930022,0,1.790839,2.202148,0, + 0.274577,0.961565,0,1.720616,2.227275,0, + 0.367505,0.930022,0,1.790839,2.202148,0, + 0.305914,0.952059,0,1.720616,2.227275,1.5, + 0.397759,0.91749,0,1.790839,2.202148,1.5, + 0.91749,0.397759,0,2.202148,1.790839,0, + 0.889521,0.456893,0,2.17026,1.858262,1.5, + 0.930022,0.367505,0,2.202148,1.790839,1.5, + 0.889521,0.456893,0,2.17026,1.858262,1.5, + 0.91749,0.397759,0,2.202148,1.790839,0, + 0.874085,0.485774,0,2.17026,1.858262,0, + -0.485774,-0.874085,0,1.141738,0.82974,1.5, + -0.541882,-0.840455,0,1.077767,0.868083,0, + -0.456893,-0.889521,0,1.141738,0.82974,0, + -0.541882,-0.840455,0,1.077767,0.868083,0, + -0.485774,-0.874085,0,1.141738,0.82974,1.5, + -0.56911,-0.822262,0,1.077767,0.868083,1.5, + 0.367505,-0.930022,0,1.790839,0.797852,1.5, + 0.305914,-0.952059,0,1.720616,0.772725,0, + 0.397759,-0.91749,0,1.790839,0.797852,0, + 0.305914,-0.952059,0,1.720616,0.772725,0, + 0.367505,-0.930022,0,1.790839,0.797852,1.5, + 0.274577,-0.961565,0,1.720616,0.772725,1.5, + -0.996656,0.081709,0,0.74366,1.574493,1.5, + -0.999866,0.016373,0,0.74,1.5,0, + -0.999866,-0.016373,0,0.74,1.5,1.5, + -0.999866,0.016373,0,0.74,1.5,0, + -0.996656,0.081709,0,0.74366,1.574493,1.5, + -0.993446,0.114299,0,0.74366,1.574493,0, + -0.980785,0.19509,0,0.754603,1.648269,1.5, + -0.95694,0.290285,0,0.772725,1.720616,0, + -0.980785,0.19509,0,0.754603,1.648269,0, + -0.95694,0.290285,0,0.772725,1.720616,0, + -0.980785,0.19509,0,0.754603,1.648269,1.5, + -0.95694,0.290285,0,0.772725,1.720616,1.5, + 0.707107,0.707107,0,2.037401,2.037401,0, + 0.76252,0.646965,0,2.087488,1.982139,1.5, + 0.783294,0.621651,0,2.087488,1.982139,0, + 0.76252,0.646965,0,2.087488,1.982139,1.5, + 0.707107,0.707107,0,2.037401,2.037401,0, + 0.707107,0.707107,0,2.037401,2.037401,1.5, + 0.274577,-0.961565,0,1.720616,0.772725,1.5, + 0.211123,-0.97746,0,1.648269,0.754603,0, + 0.305914,-0.952059,0,1.720616,0.772725,0, + 0.211123,-0.97746,0,1.648269,0.754603,0, + 0.274577,-0.961565,0,1.720616,0.772725,1.5, + 0.179005,-0.983848,0,1.648269,0.754603,1.5, + -0.71859,-0.695434,0,0.962599,0.962599,1.5, + -0.77301,-0.634393,0,0.912512,1.017861,0, + -0.695434,-0.71859,0,0.962599,0.962599,0, + -0.77301,-0.634393,0,0.912512,1.017861,0, + -0.71859,-0.695434,0,0.962599,0.962599,1.5, + -0.77301,-0.634393,0,0.912512,1.017861,1.5, + -0.91749,-0.397759,0,0.797852,1.209161,1.5, + -0.889521,-0.456893,0,0.82974,1.141738,0, + -0.874085,-0.485774,0,0.82974,1.141738,1.5, + -0.889521,-0.456893,0,0.82974,1.141738,0, + -0.91749,-0.397759,0,0.797852,1.209161,1.5, + -0.930022,-0.367505,0,0.797852,1.209161,0, + 0.840455,-0.541882,0,2.131917,1.077767,0, + 0.881921,-0.471397,0,2.17026,1.141738,1.5, + 0.822262,-0.56911,0,2.131917,1.077767,1.5, + 0.881921,-0.471397,0,2.17026,1.141738,1.5, + 0.840455,-0.541882,0,2.131917,1.077767,0, + 0.881921,-0.471397,0,2.17026,1.141738,0, + 0.91749,-0.397759,0,2.202148,1.209161,0, + 0.881921,-0.471397,0,2.17026,1.141738,1.5, + 0.881921,-0.471397,0,2.17026,1.141738,0, + 0.881921,-0.471397,0,2.17026,1.141738,1.5, + 0.91749,-0.397759,0,2.202148,1.209161,0, + 0.930022,-0.367505,0,2.202148,1.209161,1.5, + -0.874085,-0.485774,0,0.82974,1.141738,1.5, + -0.840455,-0.541882,0,0.868083,1.077767,0, + -0.822262,-0.56911,0,0.868083,1.077767,1.5, + -0.840455,-0.541882,0,0.868083,1.077767,0, + -0.874085,-0.485774,0,0.82974,1.141738,1.5, + -0.889521,-0.456893,0,0.82974,1.141738,0, + 0.95694,-0.290285,0,2.227275,1.279384,0, + 0.980785,-0.19509,0,2.245397,1.351731,1.5, + 0.95694,-0.290285,0,2.227275,1.279384,1.5, + 0.980785,-0.19509,0,2.245397,1.351731,1.5, + 0.95694,-0.290285,0,2.227275,1.279384,0, + 0.980785,-0.19509,0,2.245397,1.351731,0, + 0.95694,-0.290285,0,2.227275,1.279384,0, + 0.930022,-0.367505,0,2.202148,1.209161,1.5, + 0.91749,-0.397759,0,2.202148,1.209161,0, + 0.930022,-0.367505,0,2.202148,1.209161,1.5, + 0.95694,-0.290285,0,2.227275,1.279384,0, + 0.95694,-0.290285,0,2.227275,1.279384,1.5, + 1,0,0,2.26,1.5,0, + 0.996656,-0.081709,0,2.25634,1.425507,1.5, + 0.993446,-0.114299,0,2.25634,1.425507,0, + 0.996656,-0.081709,0,2.25634,1.425507,1.5, + 1,0,0,2.26,1.5,0, + 1,0,0,2.26,1.5,1.5, + 0.179005,-0.983848,0,1.648269,0.754603,1.5, + 0.114299,-0.993446,0,1.574493,0.74366,0, + 0.211123,-0.97746,0,1.648269,0.754603,0, + 0.114299,-0.993446,0,1.574493,0.74366,0, + 0.179005,-0.983848,0,1.648269,0.754603,1.5, + 0.081709,-0.996656,0,1.574493,0.74366,1.5, + -0.822262,-0.56911,0,0.868083,1.077767,1.5, + -0.77301,-0.634393,0,0.912512,1.017861,0, + -0.77301,-0.634393,0,0.912512,1.017861,1.5, + -0.77301,-0.634393,0,0.912512,1.017861,0, + -0.822262,-0.56911,0,0.868083,1.077767,1.5, + -0.840455,-0.541882,0,0.868083,1.077767,0, + -0.56911,-0.822262,0,1.077767,0.868083,1.5, + -0.621651,-0.783294,0,1.017861,0.912512,0, + -0.541882,-0.840455,0,1.077767,0.868083,0, + -0.621651,-0.783294,0,1.017861,0.912512,0, + -0.56911,-0.822262,0,1.077767,0.868083,1.5, + -0.646965,-0.76252,0,1.017861,0.912512,1.5, + -0.999866,-0.016373,0,0.74,1.5,1.5, + -0.996656,-0.081709,0,0.74366,1.425507,0, + -0.993446,-0.114299,0,0.74366,1.425507,1.5, + -0.996656,-0.081709,0,0.74366,1.425507,0, + -0.999866,-0.016373,0,0.74,1.5,1.5, + -0.999866,0.016373,0,0.74,1.5,0, + -0.993446,-0.114299,0,0.74366,1.425507,1.5, + -0.983848,-0.179005,0,0.754603,1.351731,0, + -0.97746,-0.211123,0,0.754603,1.351731,1.5, + -0.983848,-0.179005,0,0.754603,1.351731,0, + -0.993446,-0.114299,0,0.74366,1.425507,1.5, + -0.996656,-0.081709,0,0.74366,1.425507,0, + -0.97746,-0.211123,0,0.754603,1.351731,1.5, + -0.961565,-0.274577,0,0.772725,1.279384,0, + -0.952059,-0.305914,0,0.772725,1.279384,1.5, + -0.961565,-0.274577,0,0.772725,1.279384,0, + -0.97746,-0.211123,0,0.754603,1.351731,1.5, + -0.983848,-0.179005,0,0.754603,1.351731,0, + -0.952059,-0.305914,0,0.772725,1.279384,1.5, + -0.930022,-0.367505,0,0.797852,1.209161,0, + -0.91749,-0.397759,0,0.797852,1.209161,1.5, + -0.930022,-0.367505,0,0.797852,1.209161,0, + -0.952059,-0.305914,0,0.772725,1.279384,1.5, + -0.961565,-0.274577,0,0.772725,1.279384,0, + -0.456893,0.889521,0,1.141738,2.17026,1.5, + -0.397759,0.91749,0,1.209161,2.202148,0, + -0.485774,0.874085,0,1.141738,2.17026,0, + -0.397759,0.91749,0,1.209161,2.202148,0, + -0.456893,0.889521,0,1.141738,2.17026,1.5, + -0.367505,0.930022,0,1.209161,2.202148,1.5, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,0.74,0, + 0.993446,-0.114299,0,2.25634,1.425507,0, + 0.980785,-0.19509,0,2.245397,1.351731,1.5, + 0.980785,-0.19509,0,2.245397,1.351731,0, + 0.980785,-0.19509,0,2.245397,1.351731,1.5, + 0.993446,-0.114299,0,2.25634,1.425507,0, + 0.996656,-0.081709,0,2.25634,1.425507,1.5, + 0.71859,-0.695434,0,2.037401,0.962599,0, + 0.76252,-0.646965,0,2.087488,1.017861,1.5, + 0.695434,-0.71859,0,2.037401,0.962599,1.5, + 0.76252,-0.646965,0,2.087488,1.017861,1.5, + 0.71859,-0.695434,0,2.037401,0.962599,0, + 0.783294,-0.621651,0,2.087488,1.017861,0, + 0.952059,0.305914,0,2.227275,1.720616,0, + 0.930022,0.367505,0,2.202148,1.790839,1.5, + 0.961565,0.274577,0,2.227275,1.720616,1.5, + 0.930022,0.367505,0,2.202148,1.790839,1.5, + 0.952059,0.305914,0,2.227275,1.720616,0, + 0.91749,0.397759,0,2.202148,1.790839,0, + -0.397759,-0.91749,0,1.209161,0.797852,1.5, + -0.456893,-0.889521,0,1.141738,0.82974,0, + -0.367505,-0.930022,0,1.209161,0.797852,0, + -0.456893,-0.889521,0,1.141738,0.82974,0, + -0.397759,-0.91749,0,1.209161,0.797852,1.5, + -0.485774,-0.874085,0,1.141738,0.82974,1.5, + 0,0,1,2.245397,1.648269,1.5, + 0,0,1,2.202148,1.790839,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.202148,1.790839,1.5, + 0,0,1,2.245397,1.648269,1.5, + 0,0,1,2.227275,1.720616,1.5, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,2.26,0, + 0,0,1,2.202148,1.790839,1.5, + 0,0,1,2.131917,1.922233,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.131917,1.922233,1.5, + 0,0,1,2.202148,1.790839,1.5, + 0,0,1,2.17026,1.858262,1.5, + 0,0,1,1.922233,2.131917,1.5, + 0,0,1,1.790839,2.202148,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.790839,2.202148,1.5, + 0,0,1,1.922233,2.131917,1.5, + 0,0,1,1.858262,2.17026,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.912512,1.982139,1.5, + 0,0,1,0.868083,1.922233,1.5, + 0,0,1,0.912512,1.982139,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.962599,2.037401,1.5, + 0,0,1,1.790839,2.202148,1.5, + 0,0,1,1.648269,2.245397,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.648269,2.245397,1.5, + 0,0,1,1.790839,2.202148,1.5, + 0,0,1,1.720616,2.227275,1.5, + 0,0,1,2.131917,1.922233,1.5, + 0,0,1,2.037401,2.037401,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.037401,2.037401,1.5, + 0,0,1,2.131917,1.922233,1.5, + 0,0,1,2.087488,1.982139,1.5, + 0,0,1,1.648269,2.245397,1.5, + 0,0,1,1.5,2.26,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.5,2.26,1.5, + 0,0,1,1.648269,2.245397,1.5, + 0,0,1,1.574493,2.25634,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.017861,2.087488,1.5, + 0,0,1,0.962599,2.037401,1.5, + 0,0,1,1.017861,2.087488,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.077767,2.131917,1.5, + 0,0,1,1.017861,0.912512,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.962599,0.962599,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.017861,0.912512,1.5, + 0,0,1,1.077767,0.868083,1.5, + 0,0,1,0.82974,1.141738,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.797852,1.209161,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.82974,1.141738,1.5, + 0,0,1,0.868083,1.077767,1.5, + 0,0,1,1.922233,0.868083,1.5, + 0,0,1,2.037401,0.962599,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.037401,0.962599,1.5, + 0,0,1,1.922233,0.868083,1.5, + 0,0,1,1.982139,0.912512,1.5, + 0,0,1,0.912512,1.017861,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.868083,1.077767,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.912512,1.017861,1.5, + 0,0,1,0.962599,0.962599,1.5, + 0,0,1,1.279384,0.772725,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.209161,0.797852,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.279384,0.772725,1.5, + 0,0,1,1.351731,0.754603,1.5, + 0,0,1,1.790839,0.797852,1.5, + 0,0,1,1.922233,0.868083,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.922233,0.868083,1.5, + 0,0,1,1.790839,0.797852,1.5, + 0,0,1,1.858262,0.82974,1.5, + 0,0,1,2.131917,1.077767,1.5, + 0,0,1,2.202148,1.209161,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.202148,1.209161,1.5, + 0,0,1,2.131917,1.077767,1.5, + 0,0,1,2.17026,1.141738,1.5, + 0,0,1,1.141738,0.82974,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.077767,0.868083,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.141738,0.82974,1.5, + 0,0,1,1.209161,0.797852,1.5, + 0,0,1,1.648269,0.754603,1.5, + 0,0,1,1.790839,0.797852,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.790839,0.797852,1.5, + 0,0,1,1.648269,0.754603,1.5, + 0,0,1,1.720616,0.772725,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.772725,1.720616,1.5, + 0,0,1,0.754603,1.648269,1.5, + 0,0,1,0.772725,1.720616,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.797852,1.790839,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.141738,2.17026,1.5, + 0,0,1,1.077767,2.131917,1.5, + 0,0,1,1.141738,2.17026,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.209161,2.202148,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.74366,1.574493,1.5, + 0,0,1,0.74,1.5,1.5, + 0,0,1,0.74366,1.574493,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.754603,1.648269,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.82974,1.858262,1.5, + 0,0,1,0.797852,1.790839,1.5, + 0,0,1,0.82974,1.858262,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.868083,1.922233,1.5, + 0,0,1,0.74366,1.425507,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.74,1.5,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.74366,1.425507,1.5, + 0,0,1,0.754603,1.351731,1.5, + 0,0,1,0.772725,1.279384,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.754603,1.351731,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.772725,1.279384,1.5, + 0,0,1,0.797852,1.209161,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.425507,2.25634,1.5, + 0,0,1,1.351731,2.245397,1.5, + 0,0,1,1.425507,2.25634,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.5,2.26,1.5, + 0,0,1,2.037401,2.037401,1.5, + 0,0,1,1.922233,2.131917,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.922233,2.131917,1.5, + 0,0,1,2.037401,2.037401,1.5, + 0,0,1,1.982139,2.087488,1.5, + 0,0,1,2.037401,0.962599,1.5, + 0,0,1,2.131917,1.077767,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.131917,1.077767,1.5, + 0,0,1,2.037401,0.962599,1.5, + 0,0,1,2.087488,1.017861,1.5, + 0,0,1,2.26,1.5,1.5, + 0,0,1,2.245397,1.648269,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.245397,1.648269,1.5, + 0,0,1,2.26,1.5,1.5, + 0,0,1,2.25634,1.574493,1.5, + 0,0,1,1.425507,0.74366,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.351731,0.754603,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.425507,0.74366,1.5, + 0,0,1,1.5,0.74,1.5, + 0,0,1,1.5,0.74,1.5, + 0,0,1,1.648269,0.754603,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.648269,0.754603,1.5, + 0,0,1,1.5,0.74,1.5, + 0,0,1,1.574493,0.74366,1.5, + 0,0,1,2.202148,1.209161,1.5, + 0,0,1,2.245397,1.351731,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.245397,1.351731,1.5, + 0,0,1,2.202148,1.209161,1.5, + 0,0,1,2.227275,1.279384,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.279384,2.227275,1.5, + 0,0,1,1.209161,2.202148,1.5, + 0,0,1,1.279384,2.227275,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.351731,2.245397,1.5, + 0,0,1,2.245397,1.351731,1.5, + 0,0,1,2.26,1.5,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.26,1.5,1.5, + 0,0,1,2.245397,1.351731,1.5, + 0,0,1,2.25634,1.425507,1.5 +}; +static const struct gllist lament_model_pillar_b_frame = { GL_N3F_V3F, GL_TRIANGLES, 768, lament_model_pillar_b_data, 0 }; +const struct gllist *lament_model_pillar_b = &lament_model_pillar_b_frame; + +static const float lament_model_pillar_base_data[] = { + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.205,0, + 0,0,1,0.74,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.74,1.5,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.74366,1.574493,3, + 0,0,1,0.754603,1.648269,3, + -1,0,0,0,3,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,3, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0, + 0,-1,0,3,0,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,0.87868,3,0, + 0,1,0,0.87868,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.201631,3,0, + 0,1,0,1.201631,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,0, + 0,1,0,1.5,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,0.205, + 0.621651,0.783294,0,1.017861,0.912512,3, + 0.56911,0.822262,0,1.077767,0.868083,0, + 0.646965,0.76252,0,1.017861,0.912512,0, + 0.56911,0.822262,0,1.077767,0.868083,0, + 0.621651,0.783294,0,1.017861,0.912512,3, + 0.541882,0.840455,0,1.077767,0.868083,3, + -0.456893,-0.889521,0,1.858262,2.17026,3, + -0.397759,-0.91749,0,1.790839,2.202148,0, + -0.485774,-0.874085,0,1.858262,2.17026,0, + -0.397759,-0.91749,0,1.790839,2.202148,0, + -0.456893,-0.889521,0,1.858262,2.17026,3, + -0.367505,-0.930022,0,1.790839,2.202148,3, + 0.993446,0.114299,0,0.74366,1.425507,0, + 0.983848,0.179005,0,0.754603,1.351731,3, + 0.97746,0.211123,0,0.754603,1.351731,0, + 0.983848,0.179005,0,0.754603,1.351731,3, + 0.993446,0.114299,0,0.74366,1.425507,0, + 0.996656,0.081709,0,0.74366,1.425507,3, + 0.97746,0.211123,0,0.754603,1.351731,0, + 0.961565,0.274577,0,0.772725,1.279384,3, + 0.952059,0.305914,0,0.772725,1.279384,0, + 0.961565,0.274577,0,0.772725,1.279384,3, + 0.97746,0.211123,0,0.754603,1.351731,0, + 0.983848,0.179005,0,0.754603,1.351731,3, + 0.952059,0.305914,0,0.772725,1.279384,0, + 0.930022,0.367505,0,0.797852,1.209161,3, + 0.91749,0.397759,0,0.797852,1.209161,0, + 0.930022,0.367505,0,0.797852,1.209161,3, + 0.952059,0.305914,0,0.772725,1.279384,0, + 0.961565,0.274577,0,0.772725,1.279384,3, + 0.91749,0.397759,0,0.797852,1.209161,0, + 0.889521,0.456893,0,0.82974,1.141738,3, + 0.874085,0.485774,0,0.82974,1.141738,0, + 0.889521,0.456893,0,0.82974,1.141738,3, + 0.91749,0.397759,0,0.797852,1.209161,0, + 0.930022,0.367505,0,0.797852,1.209161,3, + -0.874085,0.485774,0,2.17026,1.141738,3, + -0.840455,0.541882,0,2.131917,1.077767,0, + -0.822262,0.56911,0,2.131917,1.077767,3, + -0.840455,0.541882,0,2.131917,1.077767,0, + -0.874085,0.485774,0,2.17026,1.141738,3, + -0.889521,0.456893,0,2.17026,1.141738,0, + -0.91749,0.397759,0,2.202148,1.209161,3, + -0.889521,0.456893,0,2.17026,1.141738,0, + -0.874085,0.485774,0,2.17026,1.141738,3, + -0.889521,0.456893,0,2.17026,1.141738,0, + -0.91749,0.397759,0,2.202148,1.209161,3, + -0.930022,0.367505,0,2.202148,1.209161,0, + 0.874085,0.485774,0,0.82974,1.141738,0, + 0.840455,0.541882,0,0.868083,1.077767,3, + 0.822262,0.56911,0,0.868083,1.077767,0, + 0.840455,0.541882,0,0.868083,1.077767,3, + 0.874085,0.485774,0,0.82974,1.141738,0, + 0.889521,0.456893,0,0.82974,1.141738,3, + 0.999866,0.016373,0,0.74,1.5,0, + 0.996656,0.081709,0,0.74366,1.425507,3, + 0.993446,0.114299,0,0.74366,1.425507,0, + 0.996656,0.081709,0,0.74366,1.425507,3, + 0.999866,0.016373,0,0.74,1.5,0, + 0.999866,-0.016373,0,0.74,1.5,3, + 0.456893,0.889521,0,1.141738,0.82974,3, + 0.397759,0.91749,0,1.209161,0.797852,0, + 0.485774,0.874085,0,1.141738,0.82974,0, + 0.397759,0.91749,0,1.209161,0.797852,0, + 0.456893,0.889521,0,1.141738,0.82974,3, + 0.367505,0.930022,0,1.209161,0.797852,3, + 0.996656,-0.081709,0,0.74366,1.574493,0, + 0.999866,-0.016373,0,0.74,1.5,3, + 0.999866,0.016373,0,0.74,1.5,0, + 0.999866,-0.016373,0,0.74,1.5,3, + 0.996656,-0.081709,0,0.74366,1.574493,0, + 0.993446,-0.114299,0,0.74366,1.574493,3, + 0.983848,-0.179005,0,0.754603,1.648269,0, + 0.993446,-0.114299,0,0.74366,1.574493,3, + 0.996656,-0.081709,0,0.74366,1.574493,0, + 0.993446,-0.114299,0,0.74366,1.574493,3, + 0.983848,-0.179005,0,0.754603,1.648269,0, + 0.97746,-0.211123,0,0.754603,1.648269,3, + 0.961565,-0.274577,0,0.772725,1.720616,0, + 0.97746,-0.211123,0,0.754603,1.648269,3, + 0.983848,-0.179005,0,0.754603,1.648269,0, + 0.97746,-0.211123,0,0.754603,1.648269,3, + 0.961565,-0.274577,0,0.772725,1.720616,0, + 0.952059,-0.305914,0,0.772725,1.720616,3, + 0.930022,-0.367505,0,0.797852,1.790839,0, + 0.952059,-0.305914,0,0.772725,1.720616,3, + 0.961565,-0.274577,0,0.772725,1.720616,0, + 0.952059,-0.305914,0,0.772725,1.720616,3, + 0.930022,-0.367505,0,0.797852,1.790839,0, + 0.91749,-0.397759,0,0.797852,1.790839,3, + 0.889521,-0.456893,0,0.82974,1.858262,0, + 0.91749,-0.397759,0,0.797852,1.790839,3, + 0.930022,-0.367505,0,0.797852,1.790839,0, + 0.91749,-0.397759,0,0.797852,1.790839,3, + 0.889521,-0.456893,0,0.82974,1.858262,0, + 0.874085,-0.485774,0,0.82974,1.858262,3, + 0.840455,-0.541882,0,0.868083,1.922233,0, + 0.874085,-0.485774,0,0.82974,1.858262,3, + 0.889521,-0.456893,0,0.82974,1.858262,0, + 0.874085,-0.485774,0,0.82974,1.858262,3, + 0.840455,-0.541882,0,0.868083,1.922233,0, + 0.822262,-0.56911,0,0.868083,1.922233,3, + 0.783294,-0.621651,0,0.912512,1.982139,0, + 0.822262,-0.56911,0,0.868083,1.922233,3, + 0.840455,-0.541882,0,0.868083,1.922233,0, + 0.822262,-0.56911,0,0.868083,1.922233,3, + 0.783294,-0.621651,0,0.912512,1.982139,0, + 0.76252,-0.646965,0,0.912512,1.982139,3, + 0.707107,-0.707107,0,0.962599,2.037401,0, + 0.76252,-0.646965,0,0.912512,1.982139,3, + 0.783294,-0.621651,0,0.912512,1.982139,0, + 0.76252,-0.646965,0,0.912512,1.982139,3, + 0.707107,-0.707107,0,0.962599,2.037401,0, + 0.707107,-0.707107,0,0.962599,2.037401,3, + 0.016373,-0.999866,0,1.5,2.26,3, + 0.081709,-0.996656,0,1.425507,2.25634,0, + -0.016373,-0.999866,0,1.5,2.26,0, + 0.081709,-0.996656,0,1.425507,2.25634,0, + 0.016373,-0.999866,0,1.5,2.26,3, + 0.114299,-0.993446,0,1.425507,2.25634,3, + 0.114299,-0.993446,0,1.425507,2.25634,3, + 0.179005,-0.983848,0,1.351731,2.245397,0, + 0.081709,-0.996656,0,1.425507,2.25634,0, + 0.179005,-0.983848,0,1.351731,2.245397,0, + 0.114299,-0.993446,0,1.425507,2.25634,3, + 0.211123,-0.97746,0,1.351731,2.245397,3, + 0.211123,-0.97746,0,1.351731,2.245397,3, + 0.274577,-0.961565,0,1.279384,2.227275,0, + 0.179005,-0.983848,0,1.351731,2.245397,0, + 0.274577,-0.961565,0,1.279384,2.227275,0, + 0.211123,-0.97746,0,1.351731,2.245397,3, + 0.305914,-0.952059,0,1.279384,2.227275,3, + 0.305914,-0.952059,0,1.279384,2.227275,3, + 0.367505,-0.930022,0,1.209161,2.202148,0, + 0.274577,-0.961565,0,1.279384,2.227275,0, + 0.367505,-0.930022,0,1.209161,2.202148,0, + 0.305914,-0.952059,0,1.279384,2.227275,3, + 0.397759,-0.91749,0,1.209161,2.202148,3, + 0.76252,0.646965,0,0.912512,1.017861,0, + 0.707107,0.707107,0,0.962599,0.962599,3, + 0.707107,0.707107,0,0.962599,0.962599,0, + 0.707107,0.707107,0,0.962599,0.962599,3, + 0.76252,0.646965,0,0.912512,1.017861,0, + 0.783294,0.621651,0,0.912512,1.017861,3, + 0.397759,-0.91749,0,1.209161,2.202148,3, + 0.456893,-0.889521,0,1.141738,2.17026,0, + 0.367505,-0.930022,0,1.209161,2.202148,0, + 0.456893,-0.889521,0,1.141738,2.17026,0, + 0.397759,-0.91749,0,1.209161,2.202148,3, + 0.485774,-0.874085,0,1.141738,2.17026,3, + 0.485774,-0.874085,0,1.141738,2.17026,3, + 0.541882,-0.840455,0,1.077767,2.131917,0, + 0.456893,-0.889521,0,1.141738,2.17026,0, + 0.541882,-0.840455,0,1.077767,2.131917,0, + 0.485774,-0.874085,0,1.141738,2.17026,3, + 0.56911,-0.822262,0,1.077767,2.131917,3, + 0.56911,-0.822262,0,1.077767,2.131917,3, + 0.621651,-0.783294,0,1.017861,2.087488,0, + 0.541882,-0.840455,0,1.077767,2.131917,0, + 0.621651,-0.783294,0,1.017861,2.087488,0, + 0.56911,-0.822262,0,1.077767,2.131917,3, + 0.646965,-0.76252,0,1.017861,2.087488,3, + 0.646965,-0.76252,0,1.017861,2.087488,3, + 0.707107,-0.707107,0,0.962599,2.037401,0, + 0.621651,-0.783294,0,1.017861,2.087488,0, + 0.707107,-0.707107,0,0.962599,2.037401,0, + 0.646965,-0.76252,0,1.017861,2.087488,3, + 0.707107,-0.707107,0,0.962599,2.037401,3, + -0.367505,-0.930022,0,1.790839,2.202148,3, + -0.305914,-0.952059,0,1.720616,2.227275,0, + -0.397759,-0.91749,0,1.790839,2.202148,0, + -0.305914,-0.952059,0,1.720616,2.227275,0, + -0.367505,-0.930022,0,1.790839,2.202148,3, + -0.274577,-0.961565,0,1.720616,2.227275,3, + -0.274577,-0.961565,0,1.720616,2.227275,3, + -0.211123,-0.97746,0,1.648269,2.245397,0, + -0.305914,-0.952059,0,1.720616,2.227275,0, + -0.211123,-0.97746,0,1.648269,2.245397,0, + -0.274577,-0.961565,0,1.720616,2.227275,3, + -0.179005,-0.983848,0,1.648269,2.245397,3, + -0.179005,-0.983848,0,1.648269,2.245397,3, + -0.114299,-0.993446,0,1.574493,2.25634,0, + -0.211123,-0.97746,0,1.648269,2.245397,0, + -0.114299,-0.993446,0,1.574493,2.25634,0, + -0.179005,-0.983848,0,1.648269,2.245397,3, + -0.081709,-0.996656,0,1.574493,2.25634,3, + -0.081709,-0.996656,0,1.574493,2.25634,3, + -0.016373,-0.999866,0,1.5,2.26,0, + -0.114299,-0.993446,0,1.574493,2.25634,0, + -0.016373,-0.999866,0,1.5,2.26,0, + -0.081709,-0.996656,0,1.574493,2.25634,3, + 0.016373,-0.999866,0,1.5,2.26,3, + -0.621651,-0.783294,0,1.982139,2.087488,3, + -0.56911,-0.822262,0,1.922233,2.131917,0, + -0.646965,-0.76252,0,1.982139,2.087488,0, + -0.56911,-0.822262,0,1.922233,2.131917,0, + -0.621651,-0.783294,0,1.982139,2.087488,3, + -0.541882,-0.840455,0,1.922233,2.131917,3, + -0.541882,-0.840455,0,1.922233,2.131917,3, + -0.485774,-0.874085,0,1.858262,2.17026,0, + -0.56911,-0.822262,0,1.922233,2.131917,0, + -0.485774,-0.874085,0,1.858262,2.17026,0, + -0.541882,-0.840455,0,1.922233,2.131917,3, + -0.456893,-0.889521,0,1.858262,2.17026,3, + -0.707107,-0.707107,0,2.037401,2.037401,3, + -0.646965,-0.76252,0,1.982139,2.087488,0, + -0.707107,-0.707107,0,2.037401,2.037401,0, + -0.646965,-0.76252,0,1.982139,2.087488,0, + -0.707107,-0.707107,0,2.037401,2.037401,3, + -0.621651,-0.783294,0,1.982139,2.087488,3, + -0.707107,-0.707107,0,2.037401,2.037401,3, + -0.76252,-0.646965,0,2.087488,1.982139,0, + -0.783294,-0.621651,0,2.087488,1.982139,3, + -0.76252,-0.646965,0,2.087488,1.982139,0, + -0.707107,-0.707107,0,2.037401,2.037401,3, + -0.707107,-0.707107,0,2.037401,2.037401,0, + -0.930022,-0.367505,0,2.202148,1.790839,3, + -0.952059,-0.305914,0,2.227275,1.720616,0, + -0.961565,-0.274577,0,2.227275,1.720616,3, + -0.952059,-0.305914,0,2.227275,1.720616,0, + -0.930022,-0.367505,0,2.202148,1.790839,3, + -0.91749,-0.397759,0,2.202148,1.790839,0, + -0.889521,-0.456893,0,2.17026,1.858262,3, + -0.91749,-0.397759,0,2.202148,1.790839,0, + -0.930022,-0.367505,0,2.202148,1.790839,3, + -0.91749,-0.397759,0,2.202148,1.790839,0, + -0.889521,-0.456893,0,2.17026,1.858262,3, + -0.874085,-0.485774,0,2.17026,1.858262,0, + -0.840455,-0.541882,0,2.131917,1.922233,3, + -0.874085,-0.485774,0,2.17026,1.858262,0, + -0.889521,-0.456893,0,2.17026,1.858262,3, + -0.874085,-0.485774,0,2.17026,1.858262,0, + -0.840455,-0.541882,0,2.131917,1.922233,3, + -0.822262,-0.56911,0,2.131917,1.922233,0, + -0.783294,-0.621651,0,2.087488,1.982139,3, + -0.822262,-0.56911,0,2.131917,1.922233,0, + -0.840455,-0.541882,0,2.131917,1.922233,3, + -0.822262,-0.56911,0,2.131917,1.922233,0, + -0.783294,-0.621651,0,2.087488,1.982139,3, + -0.76252,-0.646965,0,2.087488,1.982139,0, + -0.961565,-0.274577,0,2.227275,1.720616,3, + -0.97746,-0.211123,0,2.245397,1.648269,0, + -0.983848,-0.179005,0,2.245397,1.648269,3, + -0.97746,-0.211123,0,2.245397,1.648269,0, + -0.961565,-0.274577,0,2.227275,1.720616,3, + -0.952059,-0.305914,0,2.227275,1.720616,0, + -0.211123,0.97746,0,1.648269,0.754603,3, + -0.274577,0.961565,0,1.720616,0.772725,0, + -0.179005,0.983848,0,1.648269,0.754603,0, + -0.274577,0.961565,0,1.720616,0.772725,0, + -0.211123,0.97746,0,1.648269,0.754603,3, + -0.305914,0.952059,0,1.720616,0.772725,3, + -0.114299,0.993446,0,1.574493,0.74366,3, + -0.179005,0.983848,0,1.648269,0.754603,0, + -0.081709,0.996656,0,1.574493,0.74366,0, + -0.179005,0.983848,0,1.648269,0.754603,0, + -0.114299,0.993446,0,1.574493,0.74366,3, + -0.211123,0.97746,0,1.648269,0.754603,3, + -0.993446,0.114299,0,2.25634,1.425507,3, + -0.983848,0.179005,0,2.245397,1.351731,0, + -0.97746,0.211123,0,2.245397,1.351731,3, + -0.983848,0.179005,0,2.245397,1.351731,0, + -0.993446,0.114299,0,2.25634,1.425507,3, + -0.996656,0.081709,0,2.25634,1.425507,0, + -0.999866,0.016373,0,2.26,1.5,3, + -0.996656,0.081709,0,2.25634,1.425507,0, + -0.993446,0.114299,0,2.25634,1.425507,3, + -0.996656,0.081709,0,2.25634,1.425507,0, + -0.999866,0.016373,0,2.26,1.5,3, + -0.999866,-0.016373,0,2.26,1.5,0, + -0.996656,-0.081709,0,2.25634,1.574493,3, + -0.999866,-0.016373,0,2.26,1.5,0, + -0.999866,0.016373,0,2.26,1.5,3, + -0.999866,-0.016373,0,2.26,1.5,0, + -0.996656,-0.081709,0,2.25634,1.574493,3, + -0.993446,-0.114299,0,2.25634,1.574493,0, + -0.983848,-0.179005,0,2.245397,1.648269,3, + -0.993446,-0.114299,0,2.25634,1.574493,0, + -0.996656,-0.081709,0,2.25634,1.574493,3, + -0.993446,-0.114299,0,2.25634,1.574493,0, + -0.983848,-0.179005,0,2.245397,1.648269,3, + -0.97746,-0.211123,0,2.245397,1.648269,0, + 0.822262,0.56911,0,0.868083,1.077767,0, + 0.783294,0.621651,0,0.912512,1.017861,3, + 0.76252,0.646965,0,0.912512,1.017861,0, + 0.783294,0.621651,0,0.912512,1.017861,3, + 0.822262,0.56911,0,0.868083,1.077767,0, + 0.840455,0.541882,0,0.868083,1.077767,3, + 0.707107,0.707107,0,0.962599,0.962599,3, + 0.646965,0.76252,0,1.017861,0.912512,0, + 0.707107,0.707107,0,0.962599,0.962599,0, + 0.646965,0.76252,0,1.017861,0.912512,0, + 0.707107,0.707107,0,0.962599,0.962599,3, + 0.621651,0.783294,0,1.017861,0.912512,3, + -0.97746,0.211123,0,2.245397,1.351731,3, + -0.961565,0.274577,0,2.227275,1.279384,0, + -0.952059,0.305914,0,2.227275,1.279384,3, + -0.961565,0.274577,0,2.227275,1.279384,0, + -0.97746,0.211123,0,2.245397,1.351731,3, + -0.983848,0.179005,0,2.245397,1.351731,0, + 0.541882,0.840455,0,1.077767,0.868083,3, + 0.485774,0.874085,0,1.141738,0.82974,0, + 0.56911,0.822262,0,1.077767,0.868083,0, + 0.485774,0.874085,0,1.141738,0.82974,0, + 0.541882,0.840455,0,1.077767,0.868083,3, + 0.456893,0.889521,0,1.141738,0.82974,3, + -0.56911,0.822262,0,1.922233,0.868083,3, + -0.621651,0.783294,0,1.982139,0.912512,0, + -0.541882,0.840455,0,1.922233,0.868083,0, + -0.621651,0.783294,0,1.982139,0.912512,0, + -0.56911,0.822262,0,1.922233,0.868083,3, + -0.646965,0.76252,0,1.982139,0.912512,3, + -0.646965,0.76252,0,1.982139,0.912512,3, + -0.707107,0.707107,0,2.037401,0.962599,0, + -0.621651,0.783294,0,1.982139,0.912512,0, + -0.707107,0.707107,0,2.037401,0.962599,0, + -0.646965,0.76252,0,1.982139,0.912512,3, + -0.707107,0.707107,0,2.037401,0.962599,3, + -0.952059,0.305914,0,2.227275,1.279384,3, + -0.930022,0.367505,0,2.202148,1.209161,0, + -0.91749,0.397759,0,2.202148,1.209161,3, + -0.930022,0.367505,0,2.202148,1.209161,0, + -0.952059,0.305914,0,2.227275,1.279384,3, + -0.961565,0.274577,0,2.227275,1.279384,0, + -0.485774,0.874085,0,1.858262,0.82974,3, + -0.541882,0.840455,0,1.922233,0.868083,0, + -0.456893,0.889521,0,1.858262,0.82974,0, + -0.541882,0.840455,0,1.922233,0.868083,0, + -0.485774,0.874085,0,1.858262,0.82974,3, + -0.56911,0.822262,0,1.922233,0.868083,3, + -0.397759,0.91749,0,1.790839,0.797852,3, + -0.456893,0.889521,0,1.858262,0.82974,0, + -0.367505,0.930022,0,1.790839,0.797852,0, + -0.456893,0.889521,0,1.858262,0.82974,0, + -0.397759,0.91749,0,1.790839,0.797852,3, + -0.485774,0.874085,0,1.858262,0.82974,3, + 0.179005,0.983848,0,1.351731,0.754603,3, + 0.114299,0.993446,0,1.425507,0.74366,0, + 0.211123,0.97746,0,1.351731,0.754603,0, + 0.114299,0.993446,0,1.425507,0.74366,0, + 0.179005,0.983848,0,1.351731,0.754603,3, + 0.081709,0.996656,0,1.425507,0.74366,3, + 0.081709,0.996656,0,1.425507,0.74366,3, + 0.016373,0.999866,0,1.5,0.74,0, + 0.114299,0.993446,0,1.425507,0.74366,0, + 0.016373,0.999866,0,1.5,0.74,0, + 0.081709,0.996656,0,1.425507,0.74366,3, + -0.016373,0.999866,0,1.5,0.74,3, + -0.822262,0.56911,0,2.131917,1.077767,3, + -0.783294,0.621651,0,2.087488,1.017861,0, + -0.76252,0.646965,0,2.087488,1.017861,3, + -0.783294,0.621651,0,2.087488,1.017861,0, + -0.822262,0.56911,0,2.131917,1.077767,3, + -0.840455,0.541882,0,2.131917,1.077767,0, + 0.367505,0.930022,0,1.209161,0.797852,3, + 0.305914,0.952059,0,1.279384,0.772725,0, + 0.397759,0.91749,0,1.209161,0.797852,0, + 0.305914,0.952059,0,1.279384,0.772725,0, + 0.367505,0.930022,0,1.209161,0.797852,3, + 0.274577,0.961565,0,1.279384,0.772725,3, + 0.274577,0.961565,0,1.279384,0.772725,3, + 0.211123,0.97746,0,1.351731,0.754603,0, + 0.305914,0.952059,0,1.279384,0.772725,0, + 0.211123,0.97746,0,1.351731,0.754603,0, + 0.274577,0.961565,0,1.279384,0.772725,3, + 0.179005,0.983848,0,1.351731,0.754603,3, + -0.305914,0.952059,0,1.720616,0.772725,3, + -0.367505,0.930022,0,1.790839,0.797852,0, + -0.274577,0.961565,0,1.720616,0.772725,0, + -0.367505,0.930022,0,1.790839,0.797852,0, + -0.305914,0.952059,0,1.720616,0.772725,3, + -0.397759,0.91749,0,1.790839,0.797852,3, + -0.76252,0.646965,0,2.087488,1.017861,3, + -0.707107,0.707107,0,2.037401,0.962599,0, + -0.707107,0.707107,0,2.037401,0.962599,3, + -0.707107,0.707107,0,2.037401,0.962599,0, + -0.76252,0.646965,0,2.087488,1.017861,3, + -0.783294,0.621651,0,2.087488,1.017861,0, + -0.016373,0.999866,0,1.5,0.74,3, + -0.081709,0.996656,0,1.574493,0.74366,0, + 0.016373,0.999866,0,1.5,0.74,0, + -0.081709,0.996656,0,1.574493,0.74366,0, + -0.016373,0.999866,0,1.5,0.74,3, + -0.114299,0.993446,0,1.574493,0.74366,3, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,3,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,3,0,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0.497732,0, + 0.408248,-0.408248,-0.816497,3,0,0, + 0.6,0,-0.8,3,0.497732,0, + 1,0,0,3,0.205,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,3,3,0, + 0.408248,0.408248,-0.816497,3,3,0, + 0,0.447214,-0.894427,2.502268,3,0, + 0,1,0,2.795,3,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.74366,1.425507,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,1.017861,0.912512,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,3,1.5,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0,3,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.795,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.772725,1.720616,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.82974,1.141738,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.279384,0.772725,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,3,3,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,3,3,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,3,3,0, + 0,0,-1,3,2.502268,0, + 0.447214,0,-0.894427,3,2.502268,0, + 0.408248,0.408248,-0.816497,3,3,0, + 1,0,0,3,2.795,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.5,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.795,0,0, + 0,0,-1,2.795,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,3,0,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.077767,0.868083,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.141738,0.82974,0, + 0,0,-1,1.209161,0.797852,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.868083,1.077767,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0,0,0, + 0,0,-1,0.912512,1.017861,0, + 0,0,-1,0.962599,0.962599,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0.797852,1.209161,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0.772725,1.279384,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.754603,1.351731,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.754603,1.648269,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.74366,1.574493,0, + 0,0,-1,0.74,1.5,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0,2.795,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.795,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0,3,3, + 0,0,1,0,3,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0,3,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.12132,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,1.5,3, + 0,0,1,0.754603,1.351731,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0,1.5,3, + 0,0,1,0.74366,1.425507,3, + 0,0,1,0.74,1.5,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.201631,3, + 0,0,1,3,1.5,3, + 0,0,1,1.5,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,0,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.205,3,3, + 0,0,1,0,3,3, + 0,0,1,0.205,3,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.497732,3,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,0.87868,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.5,3,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,2.26,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,3,0.497732,3, + 0,0,1,3,0.87868,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0.87868,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0,0.87868,3, + 0,0,1,0.82974,1.141738,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.502268,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,3,3,3, + 0,0,1,2.502268,3,3, + 0.408248,0.408248,0.816497,3,3,3, + 0,1,0,2.795,3,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.5,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.502268,0,3, + 0,0,1,3,0,3, + 0.408248,-0.408248,0.816497,3,0,3, + 0,0,1,2.502268,0,3, + 0,-0.948683,-0.316228,2.795,0,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.798369,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.201631,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,2.12132,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,2.12132,3,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,3,0.87868,3, + 0,0,1,3,1.201631,3, + 0,0,1,3,0,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,3,0,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,3,0,3, + 0,0,1,3,0.497732,3, + 0.447214,0,0.894427,3,0.497732,3, + 0.408248,-0.408248,0.816497,3,0,3, + 1,0,0,3,0.205,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.754603,1.648269,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.772725,1.720616,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,3,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,3,3,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,3,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,2.502268,3, + 0.408248,0.408248,0.816497,3,3,3, + 0.447214,0,0.894427,3,2.502268,3, + 1,0,0,3,2.795,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.279384,0.772725,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0.205,3, + 0,0,1,0,0,3, + 0,0,1,0,0.205,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.912512,1.017861,3, + 0,0,1,0.868083,1.077767,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,1.141738,0.82974,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.209161,0.797852,3, + 0,0,1,0.205,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.205,0,3, + 0,0,1,0.497732,0,3, + 0,0,1,0.962599,0.962599,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,1.017861,0.912512,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.077767,0.868083,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,1.798369,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.502268,3,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.797852,1.209161,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.772725,1.279384,3, + 0,0,1,0.754603,1.351731,3, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,2.795, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.795,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,1.5,0,3, + 0,0,-1,1.5,0,3, + 0,0,-1,2.795,0,3, + 0,0,-1,2.502268,0,3, + 0,0,-1,1.5,0,3, + 0,0,-1,2.502268,0,3, + 0,0,-1,2.12132,0,3, + 0,0,1,1.5,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.798369,0,3, + 0,-1,0,2.795,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,3, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.87868,0,0, + 0,-1,0,0.87868,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.497732,0,0, + 0,-1,0,0.497732,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,3, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.798369,0,0, + 0,-1,0,1.798369,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,3, + 0,0,1,0.205,0,3, + 0,0,1,1.5,0,3, + 0,0,1,1.201631,0,3, + 0,0,1,0.205,0,3, + 0,0,1,1.201631,0,3, + 0,0,1,0.87868,0,3, + 0,0,-1,0.205,0,3, + 0,0,-1,0.87868,0,3, + 0,0,-1,0.497732,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,1.5,0,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0, + 0,1,0,3,3,3, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,0.205, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.12132,3,0, + 0,1,0,2.12132,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.502268,3,0, + 0,1,0,2.502268,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,0,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,0.205, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,1.5,3,3, + 0,0.514496,0.857493,1.5,3,3, + 0,0.83205,0.5547,0.205,3,3, + 0,0,1,0.497732,3,3, + 0,0.514496,0.857493,1.5,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0,0.514496,0.857493,1.5,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,3, + 0,1,0,2.795,3,3, + 0,0.514496,0.857493,1.5,3,3, + 0,0,1,1.798369,3,3, + 0,1,0,2.795,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,2.12132,3,3, + 0,1,0,2.795,3,3, + 0,0,1,2.12132,3,3, + 0,0,1,2.502268,3,3, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,0.205, + -1,0,0,0,3,1.5, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,1.5, + -1,0,0,0,3,0.205, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.205,0, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.497732,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.87868,0, + -1,0,0,0,0.87868,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,0, + -1,0,0,0,0,0, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,1.5, + -1,0,0,0,3,2.795, + -1,0,0,0,3,1.5, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,3,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,2.795, + -1,0,0,0,0,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,3, + -1,0,0,0,0.205,3, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,1.5, + -1,0,0,0,1.798369,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,3, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.87868,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.87868,3, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.5,3, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.798369,0, + -1,0,0,0,1.798369,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0,0, + -1,0,0,0,0,0.205, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,1.5, + -1,0,0,0,1.5,2.795, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.5,0.205, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,3,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,2.795, + 1,0,0,3,3,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,1.5, + 1,0,0,3,3,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0,2.795, + 1,0,0,3,0,1.5, + 1,0,0,3,0,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,2.795, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,3,0.205, + 1,0,0,3,3,1.5, + 1,0,0,3,0.205,3, + 1,0,0,3,0,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0,3, + 1,0,0,3,0,2.795, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,3,0, + 1,0,0,3,1.798369,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0, + 1,0,0,3,3,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0, + 1,0,0,3,3,3, + 1,0,0,3,2.795,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.497732,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.87868,3, + 1,0,0,3,0.87868,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.798369,3, + 1,0,0,3,1.798369,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,3, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,2.795, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.5,2.795, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.5, + 0,1,0,0.8525,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,0.205,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,1.5, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.795,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,2.795, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,2.795,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.205,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,1.5,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,1.5,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,1.5, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.1475,0,0.8525, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.795,0,0, + 0,-1,0,3,0,0, + 0,-1,0,0,0,3, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.8525,0,2.1475, + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.5,0,1.5, + 0,1,0,3,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0.205, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,2.1475, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,1.5, + 0,1,0,0.205,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,3, + 0,1,0,2.795,3,1.5, + 0,1,0,2.795,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,3,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,0.205, + 0,1,0,2.795,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,2.795, + 0,1,0,1.5,3,1.5, + 0,1,0,0.8525,3,0.8525, + 0,1,0,0.205,3,1.5 +}; +static const struct gllist lament_model_pillar_base_frame = { GL_N3F_V3F, GL_TRIANGLES, 1572, lament_model_pillar_base_data, 0 }; +const struct gllist *lament_model_pillar_base = &lament_model_pillar_base_frame; + +static const float lament_model_star_d_data[] = { + 0,0,-1,0.955528,0.955528,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0.955528,0.955528,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.955528,0.955528,0, + 0,0,-1,1.011517,0.904782,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,1.011517,0.904782,0, + 0,0,-1,1.072211,0.859768,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,1.988483,2.095218,0, + 0,0,-1,1.927789,2.140232,0, + 0,0,-1,1.988483,2.095218,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,2.044472,2.044472,0, + 0,0,-1,2.044472,2.044472,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,3,3,0, + 0,-1,0,3,3,0, + 0,-1,0,2.502268,3,0, + 0,-1,0,2.795,3,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.266292,1.575473,0, + 0,0,-1,2.255205,1.65022,0, + 0,0,-1,2.266292,1.575473,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.27,1.5,0, + 0,0,-1,2.27,1.5,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,3,1.5,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.34978,2.255205,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.34978,2.255205,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.424527,2.266292,0, + 0,0,-1,1.424527,2.266292,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.27,0, + 0,0,-1,0.955528,2.044472,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,3,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.955528,2.044472,0, + 0,0,-1,0.904782,1.988483,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.904782,1.988483,0, + 0,0,-1,0.859768,1.927789,0, + 0,0,-1,2.095218,1.011517,0, + 0,0,-1,3,0,0, + 0,0,-1,2.044472,0.955528,0, + 0,0,-1,3,0,0, + 0,0,-1,2.095218,1.011517,0, + 0,0,-1,2.140232,1.072211,0, + 0,0,-1,3,0,0, + 0,0,-1,2.140232,1.072211,0, + 0,0,-1,3,0.497732,0, + 0,-1,0,2.12132,0,0.82632, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.12132,0,0.82632, + 0,-1,0,2.12132,0,2.17368, + 0,0,1,1.798369,0,3, + 0,0,1,1.723519,0.763156,3, + 0,0,1,1.65022,0.744795,3, + 0,0,1,1.723519,0.763156,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.794666,0.788613,3, + 0,0,1,1.794666,0.788613,3, + 0,0,1,1.798369,0,3, + 0,0,1,2.12132,0,3, + 0,1,0,0.87868,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,0.87868,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,0.87868,3,3, + 0,1,0,1.201631,3,3, + 0,1,0,1.5,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,1.201631,3,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.072211,0.859768,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.072211,0.859768,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.137025,0.820921,3, + 0,0,1,1.137025,0.820921,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.205334,0.788613,3, + 1,0,0,3,1.798369,0, + 1,0,0,3,1.5,3, + 1,0,0,3,1.5,0, + 1,0,0,3,1.5,3, + 1,0,0,3,1.798369,0, + 1,0,0,3,1.798369,3, + 1,0,0,3,1.798369,3, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.12132,0, + 1,0,0,3,1.798369,3, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.12132,3, + -1,0,0,0,1.201631,3, + -1,0,0,0,0.87868,0, + -1,0,0,0,0.87868,3, + -1,0,0,0,0.87868,0, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.201631,3, + -1,0,0,0,1.5,3, + -1,0,0,0,1.201631,0, + -1,0,0,0,1.5,3, + -1,0,0,0,1.5,0, + 0,0,1,2.236844,1.723519,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.211387,1.794666,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.236844,1.723519,3, + 0,0,1,2.255205,1.65022,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.255205,1.65022,3, + 0,0,1,3,1.798369,3, + 0,0,-1,1.575473,0.733708,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.5,0.73,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.575473,0.733708,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.575473,0.733708,0, + 0,0,-1,1.65022,0.744795,0, + 0,0,1,3,0.497732,3, + 0,0,1,2.179079,1.137025,3, + 0,0,1,2.140232,1.072211,3, + 0,0,1,2.179079,1.137025,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.211387,1.205334,3, + 0,0,1,2.211387,1.205334,3, + 0,0,1,3,0.497732,3, + 0,0,1,3,0.87868,3, + 0,0,1,0.788613,1.205334,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,0.87868,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.788613,1.205334,3, + 0,0,1,0.763156,1.276481,3, + 0,0,1,0,1.201631,3, + 0,0,1,0.763156,1.276481,3, + 0,0,1,0.744795,1.34978,3, + 0,0,-1,0.73,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.73,1.5,0, + 0,0,-1,0.733708,1.424527,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.733708,1.424527,0, + 0,0,-1,0.744795,1.34978,0, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,2.795, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.502268,3, + -1,0,0,0,3,3, + -1,0,0,0,2.502268,0, + -1,0,0,0,3,3, + -1,0,0,0,3,0, + 0,0,-1,1.927789,2.140232,0, + 0,0,-1,2.044472,2.044472,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.044472,2.044472,0, + 0,0,-1,1.927789,2.140232,0, + 0,0,-1,1.988483,2.095218,0, + 0,0,1,1.205334,2.211387,3, + 0,0,1,1.201631,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.205334,2.211387,3, + 0,0,1,1.276481,2.236844,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.276481,2.236844,3, + 0,0,1,1.34978,2.255205,3, + 1,0,0,3,0.497732,0, + 1,0,0,3,0,3, + 1,0,0,3,0,0, + 1,0,0,3,0,3, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.87868,0, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.87868,0, + 1,0,0,3,0.87868,3, + 0,1,0,2.12132,3,0.82632, + 0,1,0,2.795,3,0.205, + 0,1,0,2.12132,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,2.12132,3,0.82632, + 0,1,0,2.795,3,1.5, + -0.55557,-0.83147,0,1.927789,2.140232,3, + -0.471397,-0.881921,0,1.862975,2.179079,1.5, + -0.55557,-0.83147,0,1.927789,2.140232,1.5, + -0.471397,-0.881921,0,1.862975,2.179079,1.5, + -0.55557,-0.83147,0,1.927789,2.140232,3, + -0.471397,-0.881921,0,1.862975,2.179079,3, + -0.941544,-0.33689,0,2.211387,1.794666,3, + -0.952059,-0.305914,0,2.236844,1.723519,1.5, + -0.961565,-0.274577,0,2.236844,1.723519,3, + -0.952059,-0.305914,0,2.236844,1.723519,1.5, + -0.941544,-0.33689,0,2.211387,1.794666,3, + -0.941544,-0.33689,0,2.211387,1.794666,1.5, + 0.740951,-0.671559,0,0.955528,2.044472,1.5, + 0.76252,-0.646965,0,0.904782,1.988483,3, + 0.783294,-0.621651,0,0.904782,1.988483,1.5, + 0.76252,-0.646965,0,0.904782,1.988483,3, + 0.740951,-0.671559,0,0.955528,2.044472,1.5, + 0.740951,-0.671559,0,0.955528,2.044472,3, + -0.996656,-0.081709,0,2.266292,1.575473,3, + -0.998795,-0.049068,0,2.27,1.5,1.5, + -0.998795,-0.049068,0,2.27,1.5,3, + -0.998795,-0.049068,0,2.27,1.5,1.5, + -0.996656,-0.081709,0,2.266292,1.575473,3, + -0.993446,-0.114299,0,2.266292,1.575473,1.5, + -0.822262,0.56911,0,2.140232,1.072211,3, + -0.783294,0.621651,0,2.095218,1.011517,1.5, + -0.76252,0.646965,0,2.095218,1.011517,3, + -0.783294,0.621651,0,2.095218,1.011517,1.5, + -0.822262,0.56911,0,2.140232,1.072211,3, + -0.840455,0.541882,0,2.140232,1.072211,1.5, + 0.840455,-0.541882,0,0.859768,1.927789,1.5, + 0.874085,-0.485774,0,0.820921,1.862975,3, + 0.889521,-0.456893,0,0.820921,1.862975,1.5, + 0.874085,-0.485774,0,0.820921,1.862975,3, + 0.840455,-0.541882,0,0.859768,1.927789,1.5, + 0.822262,-0.56911,0,0.859768,1.927789,3, + -0.471397,-0.881921,0,1.862975,2.179079,1.5, + -0.427555,-0.903989,0,1.794666,2.211387,3, + -0.427555,-0.903989,0,1.794666,2.211387,1.5, + -0.427555,-0.903989,0,1.794666,2.211387,3, + -0.471397,-0.881921,0,1.862975,2.179079,1.5, + -0.471397,-0.881921,0,1.862975,2.179079,3, + -0.382683,-0.92388,0,0.788613,1.794666,0, + -0.382683,-0.92388,0,0,2.12132,3, + -0.382683,-0.92388,0,0,2.12132,0, + -0.382683,-0.92388,0,0,2.12132,3, + -0.382683,-0.92388,0,0.788613,1.794666,0, + -0.382683,-0.92388,0,0.788613,1.794666,1.5, + -0.382683,-0.92388,0,0,2.12132,3, + -0.382683,-0.92388,0,0.788613,1.794666,1.5, + -0.382683,-0.92388,0,0.788613,1.794666,3, + -0.290285,-0.95694,0,1.276481,0.763156,0, + -0.33689,-0.941544,0,1.205334,0.788613,1.5, + -0.33689,-0.941544,0,1.205334,0.788613,0, + -0.33689,-0.941544,0,1.205334,0.788613,1.5, + -0.290285,-0.95694,0,1.276481,0.763156,0, + -0.290285,-0.95694,0,1.276481,0.763156,1.5, + -1,0,0,1.5,0.73,3, + -1,0,0,1.5,0,2.795, + -1,0,0,1.5,0,3, + -1,0,0,1.5,0,2.795, + -1,0,0,1.5,0.73,3, + -1,0,0,1.5,0,0.205, + -1,0,0,1.5,0,0.205, + -1,0,0,1.5,0.73,3, + -1,0,0,1.5,0,0, + -1,0,0,1.5,0,0, + -1,0,0,1.5,0.73,3, + -1,0,0,1.5,0.73,0, + -0.027218,-0.554032,-0.83205,1.5,0.73,0, + -0.823173,0.401247,0.401731,1.5,0.73,3, + 0.689105,0,0.724662,1.5,0.73,1.5, + 0.783294,0.621651,0,2.095218,1.988483,0, + 0.822262,0.56911,0,2.140232,1.927789,1.5, + 0.840455,0.541882,0,2.140232,1.927789,0, + 0.822262,0.56911,0,2.140232,1.927789,1.5, + 0.783294,0.621651,0,2.095218,1.988483,0, + 0.76252,0.646965,0,2.095218,1.988483,1.5, + 0.114299,0.993446,0,1.575473,2.266292,0, + 0.179005,0.983848,0,1.65022,2.255205,1.5, + 0.211123,0.97746,0,1.65022,2.255205,0, + 0.179005,0.983848,0,1.65022,2.255205,1.5, + 0.114299,0.993446,0,1.575473,2.266292,0, + 0.081709,0.996656,0,1.575473,2.266292,1.5, + -0.382683,0.92388,0,2.211387,1.794666,1.5, + -0.382683,0.92388,0,3,2.12132,0, + -0.382683,0.92388,0,2.211387,1.794666,0, + -0.382683,0.92388,0,3,2.12132,0, + -0.382683,0.92388,0,2.211387,1.794666,1.5, + -0.382683,0.92388,0,3,2.12132,3, + -0.382683,0.92388,0,3,2.12132,3, + -0.382683,0.92388,0,2.211387,1.794666,1.5, + -0.382683,0.92388,0,2.211387,1.794666,3, + -0.55557,0.83147,0,1.072211,2.140232,1.5, + -0.471397,0.881921,0,1.137025,2.179079,0, + -0.55557,0.83147,0,1.072211,2.140232,0, + -0.471397,0.881921,0,1.137025,2.179079,0, + -0.55557,0.83147,0,1.072211,2.140232,1.5, + -0.471397,0.881921,0,1.137025,2.179079,1.5, + 0.471397,-0.881921,0,1.862975,0.820921,0, + 0.427555,-0.903989,0,1.794666,0.788613,1.5, + 0.427555,-0.903989,0,1.794666,0.788613,0, + 0.427555,-0.903989,0,1.794666,0.788613,1.5, + 0.471397,-0.881921,0,1.862975,0.820921,0, + 0.471397,-0.881921,0,1.862975,0.820921,1.5, + -0.903989,-0.427555,0,0.788613,1.205334,1.5, + -0.889521,-0.456893,0,0.820921,1.137025,0, + -0.874085,-0.485774,0,0.820921,1.137025,1.5, + -0.889521,-0.456893,0,0.820921,1.137025,0, + -0.903989,-0.427555,0,0.788613,1.205334,1.5, + -0.903989,-0.427555,0,0.788613,1.205334,0, + -0.671559,0.740951,0,0.955528,2.044472,0, + -0.646965,0.76252,0,1.011517,2.095218,1.5, + -0.621651,0.783294,0,1.011517,2.095218,0, + -0.646965,0.76252,0,1.011517,2.095218,1.5, + -0.671559,0.740951,0,0.955528,2.044472,0, + -0.671559,0.740951,0,0.955528,2.044472,1.5, + 0.049068,0.998795,0,1.5,2.27,0, + 0.081709,0.996656,0,1.575473,2.266292,1.5, + 0.114299,0.993446,0,1.575473,2.266292,0, + 0.081709,0.996656,0,1.575473,2.266292,1.5, + 0.049068,0.998795,0,1.5,2.27,0, + 0.049068,0.998795,0,1.5,2.27,1.5, + -0.471397,0.881921,0,1.137025,2.179079,0, + -0.427555,0.903989,0,1.205334,2.211387,1.5, + -0.427555,0.903989,0,1.205334,2.211387,0, + -0.427555,0.903989,0,1.205334,2.211387,1.5, + -0.471397,0.881921,0,1.137025,2.179079,0, + -0.471397,0.881921,0,1.137025,2.179079,1.5, + 0.55557,-0.83147,0,1.927789,0.859768,1.5, + 0.471397,-0.881921,0,1.862975,0.820921,0, + 0.55557,-0.83147,0,1.927789,0.859768,0, + 0.471397,-0.881921,0,1.862975,0.820921,0, + 0.55557,-0.83147,0,1.927789,0.859768,1.5, + 0.471397,-0.881921,0,1.862975,0.820921,1.5, + -0.621651,0.783294,0,1.011517,2.095218,0, + -0.55557,0.83147,0,1.072211,2.140232,1.5, + -0.55557,0.83147,0,1.072211,2.140232,0, + -0.55557,0.83147,0,1.072211,2.140232,1.5, + -0.621651,0.783294,0,1.011517,2.095218,0, + -0.646965,0.76252,0,1.011517,2.095218,1.5, + -0.874085,0.485774,0,2.179079,1.137025,3, + -0.840455,0.541882,0,2.140232,1.072211,1.5, + -0.822262,0.56911,0,2.140232,1.072211,3, + -0.840455,0.541882,0,2.140232,1.072211,1.5, + -0.874085,0.485774,0,2.179079,1.137025,3, + -0.889521,0.456893,0,2.179079,1.137025,1.5, + -0.822262,-0.56911,0,0.859768,1.072211,1.5, + -0.783294,-0.621651,0,0.904782,1.011517,0, + -0.76252,-0.646965,0,0.904782,1.011517,1.5, + -0.783294,-0.621651,0,0.904782,1.011517,0, + -0.822262,-0.56911,0,0.859768,1.072211,1.5, + -0.840455,-0.541882,0,0.859768,1.072211,0, + 0.098017,-0.995185,0,1.424527,2.266292,3, + 0.179005,-0.983848,0,1.34978,2.255205,1.5, + 0.098017,-0.995185,0,1.424527,2.266292,1.5, + 0.179005,-0.983848,0,1.34978,2.255205,1.5, + 0.098017,-0.995185,0,1.424527,2.266292,3, + 0.211123,-0.97746,0,1.34978,2.255205,3, + -0.76252,0.646965,0,2.095218,1.011517,3, + -0.740951,0.671559,0,2.044472,0.955528,1.5, + -0.740951,0.671559,0,2.044472,0.955528,3, + -0.740951,0.671559,0,2.044472,0.955528,1.5, + -0.76252,0.646965,0,2.095218,1.011517,3, + -0.783294,0.621651,0,2.095218,1.011517,1.5, + -0.961565,-0.274577,0,2.236844,1.723519,3, + -0.97746,-0.211123,0,2.255205,1.65022,1.5, + -0.983848,-0.179005,0,2.255205,1.65022,3, + -0.97746,-0.211123,0,2.255205,1.65022,1.5, + -0.961565,-0.274577,0,2.236844,1.723519,3, + -0.952059,-0.305914,0,2.236844,1.723519,1.5, + 0.471397,0.881921,0,1.137025,0.820921,1.5, + 0.427555,0.903989,0,1.205334,0.788613,3, + 0.427555,0.903989,0,1.205334,0.788613,1.5, + 0.427555,0.903989,0,1.205334,0.788613,3, + 0.471397,0.881921,0,1.137025,0.820921,1.5, + 0.471397,0.881921,0,1.137025,0.820921,3, + 0.305914,0.952059,0,1.723519,2.236844,0, + 0.33689,0.941544,0,1.794666,2.211387,1.5, + 0.33689,0.941544,0,1.794666,2.211387,0, + 0.33689,0.941544,0,1.794666,2.211387,1.5, + 0.305914,0.952059,0,1.723519,2.236844,0, + 0.274577,0.961565,0,1.723519,2.236844,1.5, + 0.671559,0.740951,0,0.955528,0.955528,1.5, + 0.634393,0.77301,0,1.011517,0.904782,3, + 0.634393,0.77301,0,1.011517,0.904782,1.5, + 0.634393,0.77301,0,1.011517,0.904782,3, + 0.671559,0.740951,0,0.955528,0.955528,1.5, + 0.671559,0.740951,0,0.955528,0.955528,3, + 1,0,0,1.5,3,0, + 1,0,0,1.5,2.27,1.5, + 1,0,0,1.5,2.27,0, + 1,0,0,1.5,2.27,1.5, + 1,0,0,1.5,3,0, + 1,0,0,1.5,2.27,3, + 1,0,0,1.5,2.27,3, + 1,0,0,1.5,3,0, + 1,0,0,1.5,3,3, + 0.301511,0.301511,0.904534,1.5,3,3, + 0.688247,0.229416,-0.688247,1.5,3,0, + 0,1,0,1.5,3,0.205, + 0.301511,0.301511,0.904534,1.5,3,3, + 0,1,0,1.5,3,0.205, + 0,1,0,1.5,3,2.795, + -0.961565,0.274577,0,0.763156,1.723519,1.5, + -0.97746,0.211123,0,0.744795,1.65022,0, + -0.983848,0.179005,0,0.744795,1.65022,1.5, + -0.97746,0.211123,0,0.744795,1.65022,0, + -0.961565,0.274577,0,0.763156,1.723519,1.5, + -0.952059,0.305914,0,0.763156,1.723519,0, + 0.889521,-0.456893,0,0.820921,1.862975,1.5, + 0.903989,-0.427555,0,0.788613,1.794666,3, + 0.903989,-0.427555,0,0.788613,1.794666,1.5, + 0.903989,-0.427555,0,0.788613,1.794666,3, + 0.889521,-0.456893,0,0.820921,1.862975,1.5, + 0.874085,-0.485774,0,0.820921,1.862975,3, + -0.634393,-0.77301,0,1.988483,2.095218,1.5, + -0.55557,-0.83147,0,1.927789,2.140232,3, + -0.55557,-0.83147,0,1.927789,2.140232,1.5, + -0.55557,-0.83147,0,1.927789,2.140232,3, + -0.634393,-0.77301,0,1.988483,2.095218,1.5, + -0.634393,-0.77301,0,1.988483,2.095218,3, + -0.707107,0.707107,0,0.955528,0.955528,3, + -0.707107,0.707107,0,0,0,2.795, + -0.707107,0.707107,0,0,0,3, + -0.707107,0.707107,0,0,0,2.795, + -0.707107,0.707107,0,0.955528,0.955528,3, + -0.707107,0.707107,0,0,0,1.5, + -0.707107,0.707107,0,0,0,1.5, + -0.707107,0.707107,0,0.955528,0.955528,3, + -0.707107,0.707107,0,0,0,0.205, + -0.707107,0.707107,0,0,0,0.205, + -0.707107,0.707107,0,0.955528,0.955528,3, + -0.707107,0.707107,0,0,0,0, + -0.707107,0.707107,0,0,0,0, + -0.707107,0.707107,0,0.955528,0.955528,3, + -0.707107,0.707107,0,0.955528,0.955528,0, + 0,1,0,0.955528,0.955528,0, + 0,1,0,0.955528,0.955528,3, + 0,1,0,0.955528,0.955528,1.5, + -0.707107,-0.707107,0,3,0,0, + -0.707107,-0.707107,0,2.044472,0.955528,1.5, + -0.707107,-0.707107,0,2.044472,0.955528,0, + -0.707107,-0.707107,0,2.044472,0.955528,1.5, + -0.707107,-0.707107,0,3,0,0, + -0.707107,-0.707107,0,3,0,3, + -0.707107,-0.707107,0,2.044472,0.955528,1.5, + -0.707107,-0.707107,0,3,0,3, + -0.707107,-0.707107,0,2.044472,0.955528,3, + 0.996993,0.077486,0,2.12132,0,0, + 1,0,0,2.12132,0,0.82632, + 1,0,0,2.12132,0,0.205, + 1,0,0,2.12132,0,0.82632, + 0.996993,0.077486,0,2.12132,0,0, + 1,0,0,2.12132,0,2.17368, + 1,0,0,2.12132,0,2.17368, + 0.996993,0.077486,0,2.12132,0,0, + 1,0,0,2.12132,0,2.795, + 1,0,0,2.12132,0,2.795, + 0.996993,0.077486,0,2.12132,0,0, + 0.96573,0.259551,0,2.12132,0,3, + 0.96573,0.259551,0,2.12132,0,3, + 0.996993,0.077486,0,2.12132,0,0, + 0.92388,0.382683,0,1.794666,0.788613,0, + 0.96573,0.259551,0,2.12132,0,3, + 0.92388,0.382683,0,1.794666,0.788613,0, + 0.92388,0.382683,0,1.794666,0.788613,3, + 0.237702,0.536246,0.8099,1.794666,0.788613,3, + 0.470193,0.03587,-0.881834,1.794666,0.788613,0, + 0.371553,0.153902,0.915567,1.794666,0.788613,1.5, + 0.993446,-0.114299,0,2.266292,1.424527,0, + 0.983848,-0.179005,0,2.255205,1.34978,1.5, + 0.97746,-0.211123,0,2.255205,1.34978,0, + 0.983848,-0.179005,0,2.255205,1.34978,1.5, + 0.993446,-0.114299,0,2.266292,1.424527,0, + 0.996656,-0.081709,0,2.266292,1.424527,1.5, + 0.998795,-0.049068,0,2.27,1.5,0, + 0.996656,-0.081709,0,2.266292,1.424527,1.5, + 0.993446,-0.114299,0,2.266292,1.424527,0, + 0.996656,-0.081709,0,2.266292,1.424527,1.5, + 0.998795,-0.049068,0,2.27,1.5,0, + 0.998795,-0.049068,0,2.27,1.5,1.5, + 0.97746,-0.211123,0,2.255205,1.34978,0, + 0.961565,-0.274577,0,2.236844,1.276481,1.5, + 0.952059,-0.305914,0,2.236844,1.276481,0, + 0.961565,-0.274577,0,2.236844,1.276481,1.5, + 0.97746,-0.211123,0,2.255205,1.34978,0, + 0.983848,-0.179005,0,2.255205,1.34978,1.5, + 0,0,1,2.044472,0.955528,1.5, + 0,0,1,2.211387,1.205334,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.211387,1.205334,1.5, + 0,0,1,2.044472,0.955528,1.5, + 0,0,1,2.095218,1.011517,1.5, + 0,0,1,2.211387,1.205334,1.5, + 0,0,1,2.095218,1.011517,1.5, + 0,0,1,2.140232,1.072211,1.5, + 0,0,1,2.211387,1.205334,1.5, + 0,0,1,2.140232,1.072211,1.5, + 0,0,1,2.179079,1.137025,1.5, + 0.993446,0.114299,0,0.733708,1.424527,1.5, + 0.983848,0.179005,0,0.744795,1.34978,3, + 0.97746,0.211123,0,0.744795,1.34978,1.5, + 0.983848,0.179005,0,0.744795,1.34978,3, + 0.993446,0.114299,0,0.733708,1.424527,1.5, + 0.996656,0.081709,0,0.733708,1.424527,3, + -0.874085,-0.485774,0,0.820921,1.137025,1.5, + -0.840455,-0.541882,0,0.859768,1.072211,0, + -0.822262,-0.56911,0,0.859768,1.072211,1.5, + -0.840455,-0.541882,0,0.859768,1.072211,0, + -0.874085,-0.485774,0,0.820921,1.137025,1.5, + -0.889521,-0.456893,0,0.820921,1.137025,0, + -0.92388,-0.382683,0,0.87868,3,3, + -0.92388,-0.382683,0,1.205334,2.211387,1.5, + -0.92388,-0.382683,0,1.205334,2.211387,3, + -0.92388,-0.382683,0,1.205334,2.211387,1.5, + -0.92388,-0.382683,0,0.87868,3,3, + -0.92388,-0.382683,0,1.205334,2.211387,0, + -0.92388,-0.382683,0,1.205334,2.211387,0, + -0.92388,-0.382683,0,0.87868,3,3, + -0.92388,-0.382683,0,0.87868,3,0, + 0,-1,0,0.87868,3,0, + 0,-1,0,0.87868,3,3, + 0,-1,0,0.87868,3,2.795, + 0,-1,0,0.87868,3,0, + 0,-1,0,0.87868,3,2.795, + 0,-1,0,0.87868,3,2.17368, + 0,1,0,0.87868,3,0, + 0,1,0,0.87868,3,2.17368, + 0,1,0,0.87868,3,0.82632, + -0.653281,-0.270598,-0.707107,0.87868,3,0, + 0,1,0,0.87868,3,0.82632, + 0,1,0,0.87868,3,0.205, + 0.382683,0.92388,0,2.211387,1.205334,1.5, + 0.382683,0.92388,0,3,0.87868,0, + 0.382683,0.92388,0,2.211387,1.205334,0, + 0.382683,0.92388,0,3,0.87868,0, + 0.382683,0.92388,0,2.211387,1.205334,1.5, + 0.382683,0.92388,0,3,0.87868,3, + 0.382683,0.92388,0,3,0.87868,3, + 0.382683,0.92388,0,2.211387,1.205334,1.5, + 0.382683,0.92388,0,2.211387,1.205334,3, + 0,-1,0,3,1.5,0, + 0,-1,0,2.27,1.5,1.5, + 0,-1,0,2.27,1.5,0, + 0,-1,0,2.27,1.5,1.5, + 0,-1,0,3,1.5,0, + 0,-1,0,3,1.5,3, + 0,-1,0,2.27,1.5,1.5, + 0,-1,0,3,1.5,3, + 0,-1,0,2.27,1.5,3, + 0.382683,-0.92388,0,0.788613,1.205334,0, + 0.382683,-0.92388,0,0,0.87868,3, + 0.382683,-0.92388,0,0,0.87868,0, + 0.382683,-0.92388,0,0,0.87868,3, + 0.382683,-0.92388,0,0.788613,1.205334,0, + 0.382683,-0.92388,0,0.788613,1.205334,1.5, + 0.382683,-0.92388,0,0,0.87868,3, + 0.382683,-0.92388,0,0.788613,1.205334,1.5, + 0.382683,-0.92388,0,0.788613,1.205334,3, + 0.634393,0.77301,0,1.011517,0.904782,3, + 0.56911,0.822262,0,1.072211,0.859768,1.5, + 0.634393,0.77301,0,1.011517,0.904782,1.5, + 0.56911,0.822262,0,1.072211,0.859768,1.5, + 0.634393,0.77301,0,1.011517,0.904782,3, + 0.541882,0.840455,0,1.072211,0.859768,3, + 0.889521,0.456893,0,2.179079,1.862975,0, + 0.903989,0.427555,0,2.211387,1.794666,1.5, + 0.903989,0.427555,0,2.211387,1.794666,0, + 0.903989,0.427555,0,2.211387,1.794666,1.5, + 0.889521,0.456893,0,2.179079,1.862975,0, + 0.874085,0.485774,0,2.179079,1.862975,1.5, + 0.621651,-0.783294,0,1.988483,0.904782,0, + 0.55557,-0.83147,0,1.927789,0.859768,1.5, + 0.55557,-0.83147,0,1.927789,0.859768,0, + 0.55557,-0.83147,0,1.927789,0.859768,1.5, + 0.621651,-0.783294,0,1.988483,0.904782,0, + 0.646965,-0.76252,0,1.988483,0.904782,1.5, + 0.305914,-0.952059,0,1.276481,2.236844,3, + 0.33689,-0.941544,0,1.205334,2.211387,1.5, + 0.274577,-0.961565,0,1.276481,2.236844,1.5, + 0.33689,-0.941544,0,1.205334,2.211387,1.5, + 0.305914,-0.952059,0,1.276481,2.236844,3, + 0.33689,-0.941544,0,1.205334,2.211387,3, + 0.97746,0.211123,0,0.744795,1.34978,1.5, + 0.961565,0.274577,0,0.763156,1.276481,3, + 0.952059,0.305914,0,0.763156,1.276481,1.5, + 0.961565,0.274577,0,0.763156,1.276481,3, + 0.97746,0.211123,0,0.744795,1.34978,1.5, + 0.983848,0.179005,0,0.744795,1.34978,3, + -0.305914,0.952059,0,1.723519,0.763156,3, + -0.33689,0.941544,0,1.794666,0.788613,1.5, + -0.274577,0.961565,0,1.723519,0.763156,1.5, + -0.33689,0.941544,0,1.794666,0.788613,1.5, + -0.305914,0.952059,0,1.723519,0.763156,3, + -0.33689,0.941544,0,1.794666,0.788613,3, + -0.671559,-0.740951,0,2.044472,2.044472,3, + -0.634393,-0.77301,0,1.988483,2.095218,1.5, + -0.671559,-0.740951,0,2.044472,2.044472,1.5, + -0.634393,-0.77301,0,1.988483,2.095218,1.5, + -0.671559,-0.740951,0,2.044472,2.044472,3, + -0.634393,-0.77301,0,1.988483,2.095218,3, + -0.19509,0.980785,0,1.65022,0.744795,3, + -0.274577,0.961565,0,1.723519,0.763156,1.5, + -0.19509,0.980785,0,1.65022,0.744795,1.5, + -0.274577,0.961565,0,1.723519,0.763156,1.5, + -0.19509,0.980785,0,1.65022,0.744795,3, + -0.305914,0.952059,0,1.723519,0.763156,3, + -0.098017,0.995185,0,1.575473,0.733708,1.5, + -0.19509,0.980785,0,1.65022,0.744795,3, + -0.19509,0.980785,0,1.65022,0.744795,1.5, + -0.19509,0.980785,0,1.65022,0.744795,3, + -0.098017,0.995185,0,1.575473,0.733708,1.5, + -0.098017,0.995185,0,1.575473,0.733708,3, + 0.049068,-0.998795,0,1.5,2.27,1.5, + 0.098017,-0.995185,0,1.424527,2.266292,3, + 0.098017,-0.995185,0,1.424527,2.266292,1.5, + 0.098017,-0.995185,0,1.424527,2.266292,3, + 0.049068,-0.998795,0,1.5,2.27,1.5, + 0.049068,-0.998795,0,1.5,2.27,3, + 0.211123,-0.97746,0,1.34978,2.255205,3, + 0.274577,-0.961565,0,1.276481,2.236844,1.5, + 0.179005,-0.983848,0,1.34978,2.255205,1.5, + 0.274577,-0.961565,0,1.276481,2.236844,1.5, + 0.211123,-0.97746,0,1.34978,2.255205,3, + 0.305914,-0.952059,0,1.276481,2.236844,3, + 0.998795,0.049068,0,0.73,1.5,1.5, + 0.996656,0.081709,0,0.733708,1.424527,3, + 0.993446,0.114299,0,0.733708,1.424527,1.5, + 0.996656,0.081709,0,0.733708,1.424527,3, + 0.998795,0.049068,0,0.73,1.5,1.5, + 0.998795,0.049068,0,0.73,1.5,3, + -0.983848,-0.179005,0,2.255205,1.65022,3, + -0.993446,-0.114299,0,2.266292,1.575473,1.5, + -0.996656,-0.081709,0,2.266292,1.575473,3, + -0.993446,-0.114299,0,2.266292,1.575473,1.5, + -0.983848,-0.179005,0,2.255205,1.65022,3, + -0.97746,-0.211123,0,2.255205,1.65022,1.5, + -0.098017,-0.995185,0,1.424527,0.733708,1.5, + -0.179005,-0.983848,0,1.34978,0.744795,0, + -0.098017,-0.995185,0,1.424527,0.733708,0, + -0.179005,-0.983848,0,1.34978,0.744795,0, + -0.098017,-0.995185,0,1.424527,0.733708,1.5, + -0.211123,-0.97746,0,1.34978,0.744795,1.5, + -0.903989,0.427555,0,2.211387,1.205334,3, + -0.889521,0.456893,0,2.179079,1.137025,1.5, + -0.874085,0.485774,0,2.179079,1.137025,3, + -0.889521,0.456893,0,2.179079,1.137025,1.5, + -0.903989,0.427555,0,2.211387,1.205334,3, + -0.903989,0.427555,0,2.211387,1.205334,1.5, + -0.049068,0.998795,0,1.5,0.73,3, + -0.098017,0.995185,0,1.575473,0.733708,1.5, + -0.049068,0.998795,0,1.5,0.73,1.5, + -0.098017,0.995185,0,1.575473,0.733708,1.5, + -0.049068,0.998795,0,1.5,0.73,3, + -0.098017,0.995185,0,1.575473,0.733708,3, + 0.671559,-0.740951,0,2.044472,0.955528,0, + 0.646965,-0.76252,0,1.988483,0.904782,1.5, + 0.621651,-0.783294,0,1.988483,0.904782,0, + 0.646965,-0.76252,0,1.988483,0.904782,1.5, + 0.671559,-0.740951,0,2.044472,0.955528,0, + 0.671559,-0.740951,0,2.044472,0.955528,1.5, + -0.049068,-0.998795,0,1.5,0.73,0, + -0.098017,-0.995185,0,1.424527,0.733708,1.5, + -0.098017,-0.995185,0,1.424527,0.733708,0, + -0.098017,-0.995185,0,1.424527,0.733708,1.5, + -0.049068,-0.998795,0,1.5,0.73,0, + -0.049068,-0.998795,0,1.5,0.73,1.5, + -0.983848,0.179005,0,0.744795,1.65022,1.5, + -0.993446,0.114299,0,0.733708,1.575473,0, + -0.996656,0.081709,0,0.733708,1.575473,1.5, + -0.993446,0.114299,0,0.733708,1.575473,0, + -0.983848,0.179005,0,0.744795,1.65022,1.5, + -0.97746,0.211123,0,0.744795,1.65022,0, + -0.941544,0.33689,0,0.788613,1.794666,1.5, + -0.952059,0.305914,0,0.763156,1.723519,0, + -0.961565,0.274577,0,0.763156,1.723519,1.5, + -0.952059,0.305914,0,0.763156,1.723519,0, + -0.941544,0.33689,0,0.788613,1.794666,1.5, + -0.941544,0.33689,0,0.788613,1.794666,0, + -0.211123,-0.97746,0,1.34978,0.744795,1.5, + -0.290285,-0.95694,0,1.276481,0.763156,0, + -0.179005,-0.983848,0,1.34978,0.744795,0, + -0.290285,-0.95694,0,1.276481,0.763156,0, + -0.211123,-0.97746,0,1.34978,0.744795,1.5, + -0.290285,-0.95694,0,1.276481,0.763156,1.5, + 0.740951,0.671559,0,2.044472,2.044472,0, + 0.76252,0.646965,0,2.095218,1.988483,1.5, + 0.783294,0.621651,0,2.095218,1.988483,0, + 0.76252,0.646965,0,2.095218,1.988483,1.5, + 0.740951,0.671559,0,2.044472,2.044472,0, + 0.740951,0.671559,0,2.044472,2.044472,1.5, + -0.76252,-0.646965,0,0.904782,1.011517,1.5, + -0.740951,-0.671559,0,0.955528,0.955528,0, + -0.740951,-0.671559,0,0.955528,0.955528,1.5, + -0.740951,-0.671559,0,0.955528,0.955528,0, + -0.76252,-0.646965,0,0.904782,1.011517,1.5, + -0.783294,-0.621651,0,0.904782,1.011517,0, + 0.211123,0.97746,0,1.65022,2.255205,0, + 0.274577,0.961565,0,1.723519,2.236844,1.5, + 0.305914,0.952059,0,1.723519,2.236844,0, + 0.274577,0.961565,0,1.723519,2.236844,1.5, + 0.211123,0.97746,0,1.65022,2.255205,0, + 0.179005,0.983848,0,1.65022,2.255205,1.5, + -0.996656,0.081709,0,0.733708,1.575473,1.5, + -0.998795,0.049068,0,0.73,1.5,0, + -0.998795,0.049068,0,0.73,1.5,1.5, + -0.998795,0.049068,0,0.73,1.5,0, + -0.996656,0.081709,0,0.733708,1.575473,1.5, + -0.993446,0.114299,0,0.733708,1.575473,0, + 0.707107,-0.707107,0,3,3,0, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,2.044472,2.044472,0, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,3,3,0, + 0.707107,-0.707107,0,3,3,0.205, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,3,3,0.205, + 0.707107,-0.707107,0,3,3,1.5, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,3,3,1.5, + 0.707107,-0.707107,0,3,3,2.795, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,3,3,2.795, + 0.707107,-0.707107,0,2.044472,2.044472,3, + 0.707107,-0.707107,0,2.044472,2.044472,3, + 0.707107,-0.707107,0,3,3,2.795, + 0.707107,-0.707107,0,3,3,3, + 0.840455,0.541882,0,2.140232,1.927789,0, + 0.874085,0.485774,0,2.179079,1.862975,1.5, + 0.889521,0.456893,0,2.179079,1.862975,0, + 0.874085,0.485774,0,2.179079,1.862975,1.5, + 0.840455,0.541882,0,2.140232,1.927789,0, + 0.822262,0.56911,0,2.140232,1.927789,1.5, + 0.952059,-0.305914,0,2.236844,1.276481,0, + 0.941544,-0.33689,0,2.211387,1.205334,1.5, + 0.941544,-0.33689,0,2.211387,1.205334,0, + 0.941544,-0.33689,0,2.211387,1.205334,1.5, + 0.952059,-0.305914,0,2.236844,1.276481,0, + 0.961565,-0.274577,0,2.236844,1.276481,1.5, + 0,1,0,0,1.5,3, + 0,1,0,0.73,1.5,0, + 0,1,0,0,1.5,0, + 0,1,0,0.73,1.5,0, + 0,1,0,0,1.5,3, + 0,1,0,0.73,1.5,1.5, + 0,1,0,0.73,1.5,1.5, + 0,1,0,0,1.5,3, + 0,1,0,0.73,1.5,3, + 0.541882,0.840455,0,1.072211,0.859768,3, + 0.471397,0.881921,0,1.137025,0.820921,1.5, + 0.56911,0.822262,0,1.072211,0.859768,1.5, + 0.471397,0.881921,0,1.137025,0.820921,1.5, + 0.541882,0.840455,0,1.072211,0.859768,3, + 0.471397,0.881921,0,1.137025,0.820921,3, + 0.952059,0.305914,0,0.763156,1.276481,1.5, + 0.941544,0.33689,0,0.788613,1.205334,3, + 0.941544,0.33689,0,0.788613,1.205334,1.5, + 0.941544,0.33689,0,0.788613,1.205334,3, + 0.952059,0.305914,0,0.763156,1.276481,1.5, + 0.961565,0.274577,0,0.763156,1.276481,3, + 0.783294,-0.621651,0,0.904782,1.988483,1.5, + 0.822262,-0.56911,0,0.859768,1.927789,3, + 0.840455,-0.541882,0,0.859768,1.927789,1.5, + 0.822262,-0.56911,0,0.859768,1.927789,3, + 0.783294,-0.621651,0,0.904782,1.988483,1.5, + 0.76252,-0.646965,0,0.904782,1.988483,3, + 0.92388,-0.382683,0,1.205334,0.788613,0, + 0.92388,-0.382683,0,0.87868,0,0.205, + 0.92388,-0.382683,0,0.87868,0,0, + 0.92388,-0.382683,0,0.87868,0,0.205, + 0.92388,-0.382683,0,1.205334,0.788613,0, + 0.92388,-0.382683,0,0.87868,0,0.82632, + 0.92388,-0.382683,0,0.87868,0,0.82632, + 0.92388,-0.382683,0,1.205334,0.788613,0, + 0.92388,-0.382683,0,0.87868,0,2.17368, + 0.92388,-0.382683,0,0.87868,0,2.17368, + 0.92388,-0.382683,0,1.205334,0.788613,0, + 0.92388,-0.382683,0,0.87868,0,2.795, + 0.92388,-0.382683,0,0.87868,0,2.795, + 0.92388,-0.382683,0,1.205334,0.788613,0, + 0.92388,-0.382683,0,0.87868,0,3, + 0.92388,-0.382683,0,0.87868,0,3, + 0.92388,-0.382683,0,1.205334,0.788613,0, + 0.92388,-0.382683,0,1.205334,0.788613,3, + 0.714674,0.572585,0.401731,1.205334,0.788613,3, + 0.793487,-0.468606,-0.388313,1.205334,0.788613,0, + 0.516676,-0.562787,0.645226,1.205334,0.788613,1.5, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.788613,1.205334,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0.788613,1.205334,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.763156,1.276481,0, + 0,0,-1,0.763156,1.276481,0, + 0,0,-1,0,1.201631,0, + 0,0,-1,0.744795,1.34978,0, + 0,0,-1,2.044472,2.044472,0, + 0,0,-1,2.140232,1.927789,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.140232,1.927789,0, + 0,0,-1,2.044472,2.044472,0, + 0,0,-1,2.095218,1.988483,0, + 0,0,-1,2.140232,1.927789,0, + 0,0,-1,2.211387,1.794666,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.211387,1.794666,0, + 0,0,-1,2.140232,1.927789,0, + 0,0,-1,2.179079,1.862975,0, + 0,0,-1,1.072211,0.859768,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,0.497732,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.072211,0.859768,0, + 0,0,-1,1.137025,0.820921,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.137025,0.820921,0, + 0,0,-1,1.205334,0.788613,0, + 0,0,-1,2.179079,1.137025,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.140232,1.072211,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.179079,1.137025,0, + 0,0,-1,2.211387,1.205334,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.211387,1.205334,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,1.927789,0.859768,0, + 0,0,-1,1.794666,0.788613,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.794666,0.788613,0, + 0,0,-1,1.927789,0.859768,0, + 0,0,-1,1.862975,0.820921,0, + 0,0,-1,1.794666,0.788613,0, + 0,0,-1,1.65022,0.744795,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.65022,0.744795,0, + 0,0,-1,1.794666,0.788613,0, + 0,0,-1,1.723519,0.763156,0, + 0,0,-1,2.255205,1.34978,0, + 0,0,-1,2.211387,1.205334,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.211387,1.205334,0, + 0,0,-1,2.255205,1.34978,0, + 0,0,-1,2.236844,1.276481,0, + 0,0,-1,0.820921,1.862975,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.788613,1.794666,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.820921,1.862975,0, + 0,0,-1,0.859768,1.927789,0, + 0,0,-1,0.904782,1.988483,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.859768,1.927789,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.904782,1.988483,0, + 0,0,-1,0.955528,2.044472,0, + 0,0,-1,0.763156,1.723519,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.744795,1.65022,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.763156,1.723519,0, + 0,0,-1,0.788613,1.794666,0, + 0,0,-1,1.794666,2.211387,0, + 0,0,-1,1.927789,2.140232,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.927789,2.140232,0, + 0,0,-1,1.794666,2.211387,0, + 0,0,-1,1.862975,2.179079,0, + 0,0,-1,1.65022,2.255205,0, + 0,0,-1,1.794666,2.211387,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.794666,2.211387,0, + 0,0,-1,1.65022,2.255205,0, + 0,0,-1,1.723519,2.236844,0, + 0,0,-1,1.723519,0.763156,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.65022,0.744795,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.723519,0.763156,0, + 0,0,-1,1.794666,0.788613,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.794666,0.788613,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,2.211387,1.794666,0, + 0,0,-1,2.255205,1.65022,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.255205,1.65022,0, + 0,0,-1,2.211387,1.794666,0, + 0,0,-1,2.236844,1.723519,0, + 0,0,-1,2.255205,1.65022,0, + 0,0,-1,2.27,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.27,1.5,0, + 0,0,-1,2.255205,1.65022,0, + 0,0,-1,2.266292,1.575473,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.011517,0.904782,0, + 0,0,-1,0.955528,0.955528,0, + 0,0,-1,1.011517,0.904782,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.072211,0.859768,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.137025,0.820921,0, + 0,0,-1,1.072211,0.859768,0, + 0,0,-1,1.137025,0.820921,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.205334,0.788613,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.733708,1.424527,0, + 0,0,-1,0.73,1.5,0, + 0,0,-1,0.733708,1.424527,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.744795,1.34978,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.276481,0.763156,0, + 0,0,-1,1.205334,0.788613,0, + 0,0,-1,1.276481,0.763156,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.34978,0.744795,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.763156,1.276481,0, + 0,0,-1,0.744795,1.34978,0, + 0,0,-1,0.763156,1.276481,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.788613,1.205334,0, + 0,0,-1,0.733708,1.575473,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.73,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.733708,1.575473,0, + 0,0,-1,0.744795,1.65022,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.820921,1.137025,0, + 0,0,-1,0.788613,1.205334,0, + 0,0,-1,0.820921,1.137025,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.859768,1.072211,0, + 0,0,-1,2.27,1.5,0, + 0,0,-1,2.255205,1.34978,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.255205,1.34978,0, + 0,0,-1,2.27,1.5,0, + 0,0,-1,2.266292,1.424527,0, + 0,0,-1,2.140232,1.072211,0, + 0,0,-1,2.044472,0.955528,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.044472,0.955528,0, + 0,0,-1,2.140232,1.072211,0, + 0,0,-1,2.095218,1.011517,0, + 0,0,-1,1.575473,2.266292,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,2.27,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.575473,2.266292,0, + 0,0,-1,1.65022,2.255205,0, + 0,0,-1,1.011517,2.095218,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.955528,2.044472,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.011517,2.095218,0, + 0,0,-1,1.072211,2.140232,0, + 0,0,-1,1.137025,2.179079,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.072211,2.140232,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.137025,2.179079,0, + 0,0,-1,1.205334,2.211387,0, + 0,0,-1,2.044472,0.955528,0, + 0,0,-1,1.927789,0.859768,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.927789,0.859768,0, + 0,0,-1,2.044472,0.955528,0, + 0,0,-1,1.988483,0.904782,0, + 0,0,-1,1.276481,2.236844,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.205334,2.211387,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.276481,2.236844,0, + 0,0,-1,1.34978,2.255205,0, + 0,0,-1,1.424527,2.266292,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.34978,2.255205,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.424527,2.266292,0, + 0,0,-1,1.5,2.27,0, + 0,0,-1,2.211387,1.205334,0, + 0,0,-1,2.140232,1.072211,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,2.140232,1.072211,0, + 0,0,-1,2.211387,1.205334,0, + 0,0,-1,2.179079,1.137025,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.904782,1.011517,0, + 0,0,-1,0.859768,1.072211,0, + 0,0,-1,0.904782,1.011517,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,0.955528,0.955528,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.575473,0.733708,0, + 0,0,-1,1.5,0.73,0, + 0,0,-1,1.575473,0.733708,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.65022,0.744795,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.205334,2.211387,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.205334,2.211387,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.276481,2.236844,0, + 0,0,-1,1.276481,2.236844,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.34978,2.255205,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.788613,1.794666,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0.788613,1.794666,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.820921,1.862975,0, + 0,0,-1,0.820921,1.862975,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.859768,1.927789,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.862975,2.179079,0, + 0,0,-1,1.794666,2.211387,0, + 0,0,-1,1.862975,2.179079,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.927789,2.140232,0, + 0,0,-1,1.927789,2.140232,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.424527,0.733708,0, + 0,0,-1,1.34978,0.744795,0, + 0,0,-1,1.424527,0.733708,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,0.73,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.236844,1.723519,0, + 0,0,-1,2.211387,1.794666,0, + 0,0,-1,2.236844,1.723519,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.255205,1.65022,0, + 0,0,-1,2.255205,1.65022,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,3,1.798369,0, + -0.92388,0.382683,0,2.12132,3,3, + -0.92388,0.382683,0,1.794666,2.211387,1.5, + -0.92388,0.382683,0,1.794666,2.211387,3, + -0.92388,0.382683,0,1.794666,2.211387,1.5, + -0.92388,0.382683,0,2.12132,3,3, + -0.92388,0.382683,0,1.794666,2.211387,0, + -0.92388,0.382683,0,1.794666,2.211387,0, + -0.92388,0.382683,0,2.12132,3,3, + -0.92388,0.382683,0,2.12132,3,0, + -0.269347,0.403107,-0.874618,2.12132,3,0, + -0.537476,0.61047,0.58176,2.12132,3,3, + 0,1,0,2.12132,3,2.795, + -0.269347,0.403107,-0.874618,2.12132,3,0, + 0,1,0,2.12132,3,2.795, + 0,1,0,2.12132,3,2.17368, + -0.269347,0.403107,-0.874618,2.12132,3,0, + 0,1,0,2.12132,3,2.17368, + 0,1,0,2.12132,3,0.82632, + -0.269347,0.403107,-0.874618,2.12132,3,0, + 0,1,0,2.12132,3,0.82632, + 0,1,0,2.12132,3,0.205, + 0,0,1,1.862975,2.179079,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.794666,2.211387,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.862975,2.179079,3, + 0,0,1,1.927789,2.140232,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.927789,2.140232,3, + 0,0,1,2.502268,3,3, + 0,0,1,0.788613,1.794666,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.788613,1.794666,3, + 0,0,1,0.820921,1.862975,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.820921,1.862975,3, + 0,0,1,0.859768,1.927789,3, + 0.707107,0.707107,0,0,3,0, + 0.707107,0.707107,0,0.955528,2.044472,1.5, + 0.707107,0.707107,0,0.955528,2.044472,0, + 0.707107,0.707107,0,0.955528,2.044472,1.5, + 0.707107,0.707107,0,0,3,0, + 0.707107,0.707107,0,0.955528,2.044472,3, + 0.707107,0.707107,0,0.955528,2.044472,3, + 0.707107,0.707107,0,0,3,0, + 0.707107,0.707107,0,0,3,3, + 0,0,1,0.859768,1.927789,3, + 0,0,1,0,3,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,3,3, + 0,0,1,0.859768,1.927789,3, + 0,0,1,0.904782,1.988483,3, + 0,0,1,0,3,3, + 0,0,1,0.904782,1.988483,3, + 0,0,1,0.955528,2.044472,3, + 0,0,1,1.34978,2.255205,3, + 0,0,1,1.5,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.5,3,3, + 0,0,1,1.34978,2.255205,3, + 0,0,1,1.424527,2.266292,3, + 0,0,1,1.5,3,3, + 0,0,1,1.424527,2.266292,3, + 0,0,1,1.5,2.27,3, + 0,0,1,2.266292,1.575473,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.255205,1.65022,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.266292,1.575473,3, + 0,0,1,2.27,1.5,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.27,1.5,3, + 0,0,1,3,1.5,3, + 0,0,1,0.205,0,3, + 0,0,1,0.955528,0.955528,3, + 0,0,1,0,0,3, + 0,0,1,0.955528,0.955528,3, + 0,0,1,0.205,0,3, + 0,0,1,0.497732,0,3, + 0,0,1,0.955528,0.955528,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.011517,0.904782,3, + 0,0,1,1.011517,0.904782,3, + 0,0,1,0.497732,0,3, + 0,0,1,1.072211,0.859768,3, + 0,0,1,0.744795,1.34978,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.201631,3, + 0,0,1,0,1.5,3, + 0,0,1,0.744795,1.34978,3, + 0,0,1,0.733708,1.424527,3, + 0,0,1,0,1.5,3, + 0,0,1,0.733708,1.424527,3, + 0,0,1,0.73,1.5,3, + 0,0,1,1.988483,2.095218,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.927789,2.140232,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.988483,2.095218,3, + 0,0,1,2.044472,2.044472,3, + 0,0,1,2.502268,3,3, + 0,0,1,2.044472,2.044472,3, + 0,0,1,3,3,3, + 0,0,1,2.502268,3,3, + 0.561517,0.232588,0.794104,3,3,3, + 0,1,0,2.795,3,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.5,0.73,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.73,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.575473,0.733708,3, + 0,0,1,1.575473,0.733708,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.65022,0.744795,3, + 0,0,1,3,0,3, + 0,0,1,2.095218,1.011517,3, + 0,0,1,2.044472,0.955528,3, + 0,0,1,2.095218,1.011517,3, + 0,0,1,3,0,3, + 0,0,1,2.140232,1.072211,3, + 0,0,1,2.140232,1.072211,3, + 0,0,1,3,0,3, + 0,0,1,3,0.497732,3, + 0,1,0,2.12132,3,2.17368, + 0,1,0,2.795,3,1.5, + 0,1,0,2.12132,3,0.82632, + 0,1,0,2.12132,3,2.17368, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,2.12132,3,2.17368, + 0,1,0,2.12132,3,2.795, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0.205, + 0,1,0,2.12132,3,0.205, + 0,1,0,2.502268,3,0, + 0,1,0,2.12132,3,0, + 0,1,0,2.502268,3,0, + 0,1,0,2.795,3,0.205, + 0,1,0,2.795,3,0, + 0,1,0,2.795,3,0.205, + 0,1,0,2.502268,3,0, + 0,1,0,2.12132,3,0.205, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,0.87868,3,0.82632, + 0,1,0,1.5,3,0.205, + 0,1,0,0.87868,3,0.205, + 0,1,0,1.5,3,2.795, + 0,1,0,0.87868,3,2.17368, + 0,1,0,0.87868,3,2.795, + 0,1,0,0.87868,3,0.82632, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,0.205, + 0,1,0,1.5,3,2.795, + 0,1,0,0.87868,3,0.82632, + 0,1,0,0.87868,3,2.17368, + 0,1,0,2.795,3,3, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,3, + 0,1,0,3,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,2.795, + 0,1,0,0.87868,3,0.205, + 0,1,0,1.201631,3,0, + 0,1,0,0.87868,3,0, + 0,1,0,1.201631,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,1.5,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,1.201631,3,0, + 0,1,0,0.87868,3,0.205, + 0,1,0,2.12132,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.12132,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,2.12132,3,3, + 0,1,0,2.795,3,3, + 0,1,0,2.795,3,3, + -0.537476,0.61047,0.58176,2.12132,3,3, + 0,0,1,2.502268,3,3, + 0,-1,0,2.12132,0,0.205, + 0,-1,0,1.798369,0,0, + 0,-1,0,2.12132,0,0, + 0,-1,0,1.798369,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.5,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.798369,0,0, + 0,-1,0,2.12132,0,0.205, + 0,-1,0,2.12132,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.12132,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.12132,0,3, + 0,-1,0,1.798369,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,1.798369,0,3, + 0,-1,0,1.5,0,3, + 0,-1,0,2.12132,0,0.82632, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.12132,0,0.205, + 0,-1,0,0.87868,0,2.17368, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.87868,0,0.82632, + 0,-1,0,0.205,0,3, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,3, + 0,-1,0,0,0,3, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0.205, + 0,-1,0,0.87868,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.87868,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.87868,0,3, + 0,-1,0,0.205,0,3, + 0,-0.83205,0.5547,0.205,0,3, + 0.412538,-0.617407,0.669792,0.87868,0,3, + 0,0,1,0.497732,0,3, + 0,-1,0,0.87868,0,0.205, + 0,-1,0,0.497732,0,0, + 0,-1,0,0.87868,0,0, + 0,-1,0,0.497732,0,0, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.205,0,0, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.497732,0,0, + 0,-1,0,0.87868,0,0.205, + 0,-1,0,0.87868,0,2.17368, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.87868,0,2.17368, + 0,-1,0,0.87868,0,2.795, + 0,-1,0,0.87868,0,0.82632, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.87868,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.87868,0,0.82632, + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.12132,0,2.17368, + 0,-1,0,2.12132,0,2.795, + 0,0,1,1.794666,0.788613,1.5, + 0,0,1,2.044472,0.955528,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.044472,0.955528,1.5, + 0,0,1,1.794666,0.788613,1.5, + 0,0,1,1.862975,0.820921,1.5, + 0,0,1,2.044472,0.955528,1.5, + 0,0,1,1.862975,0.820921,1.5, + 0,0,1,1.927789,0.859768,1.5, + 0,0,1,2.044472,0.955528,1.5, + 0,0,1,1.927789,0.859768,1.5, + 0,0,1,1.988483,0.904782,1.5, + 0.83147,0.55557,0,1.5,1.5,0, + 0.707107,0.707107,0,2.044472,0.955528,1.5, + 0.707107,0.707107,0,2.044472,0.955528,0, + 0.707107,0.707107,0,2.044472,0.955528,1.5, + 0.83147,0.55557,0,1.5,1.5,0, + 0.83147,0.55557,0,1.5,1.5,1.5, + 0.83147,0.55557,0,1.5,1.5,1.5, + 0.83147,0.55557,0,1.5,1.5,0, + 0.707107,0.707107,0,0.955528,2.044472,0, + 0.83147,0.55557,0,1.5,1.5,1.5, + 0.707107,0.707107,0,0.955528,2.044472,0, + 0.707107,0.707107,0,0.955528,2.044472,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.276481,2.236844,1.5, + 0,0,1,1.205334,2.211387,1.5, + 0,0,1,1.276481,2.236844,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.34978,2.255205,1.5, + 0,0,1,1.34978,2.255205,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.424527,2.266292,1.5, + 0,0,1,1.424527,2.266292,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.5,2.27,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.820921,1.862975,1.5, + 0,0,1,0.788613,1.794666,1.5, + 0,0,1,0.820921,1.862975,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.859768,1.927789,1.5, + 0,0,1,0.859768,1.927789,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.904782,1.988483,1.5, + 0,0,1,0.904782,1.988483,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.955528,2.044472,1.5, + -0.382683,-0.92388,0,2.211387,1.205334,1.5, + -0.382683,-0.92388,0,1.5,1.5,0, + -0.382683,-0.92388,0,2.211387,1.205334,0, + -0.382683,-0.92388,0,1.5,1.5,0, + -0.382683,-0.92388,0,0.788613,1.794666,1.5, + -0.382683,-0.92388,0,0.788613,1.794666,0, + -0.382683,-0.92388,0,0.788613,1.794666,1.5, + -0.382683,-0.92388,0,1.5,1.5,0, + -0.382683,-0.92388,0,2.211387,1.205334,1.5, + -0.53272,-0.732123,0.424506,0.788613,1.794666,1.5, + 0.220004,0.109479,0.969336,2.211387,1.205334,1.5, + 0.245003,0.094681,0.964888,1.5,1.5,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.011517,2.095218,1.5, + 0,0,1,0.955528,2.044472,1.5, + 0,0,1,1.011517,2.095218,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.072211,2.140232,1.5, + 0,0,1,1.072211,2.140232,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.137025,2.179079,1.5, + 0,0,1,1.137025,2.179079,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.205334,2.211387,1.5, + 0,0,1,1.276481,0.763156,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.205334,0.788613,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.276481,0.763156,1.5, + 0,0,1,1.34978,0.744795,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.34978,0.744795,1.5, + 0,0,1,1.424527,0.733708,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.424527,0.733708,1.5, + 0,0,1,1.5,0.73,1.5, + 0.92388,0.382683,0,1.5,1.5,0, + 0.92388,0.382683,0,1.794666,0.788613,1.5, + 0.92388,0.382683,0,1.794666,0.788613,0, + 0.92388,0.382683,0,1.794666,0.788613,1.5, + 0.92388,0.382683,0,1.5,1.5,0, + 0.92388,0.382683,0,1.5,1.5,1.5, + 0.92388,0.382683,0,1.5,1.5,1.5, + 0.92388,0.382683,0,1.5,1.5,0, + 0.92388,0.382683,0,1.205334,2.211387,0, + 0.92388,0.382683,0,1.5,1.5,1.5, + 0.92388,0.382683,0,1.205334,2.211387,0, + 0.92388,0.382683,0,1.205334,2.211387,1.5, + 0,0,1,1.575473,0.733708,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.5,0.73,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.575473,0.733708,1.5, + 0,0,1,1.794666,0.788613,1.5, + 0,0,1,1.794666,0.788613,1.5, + 0,0,1,1.575473,0.733708,1.5, + 0,0,1,1.65022,0.744795,1.5, + 0,0,1,1.794666,0.788613,1.5, + 0,0,1,1.65022,0.744795,1.5, + 0,0,1,1.723519,0.763156,1.5, + 0,0,1,2.044472,2.044472,1.5, + 0,0,1,1.794666,2.211387,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.794666,2.211387,1.5, + 0,0,1,2.044472,2.044472,1.5, + 0,0,1,1.862975,2.179079,1.5, + 0,0,1,1.862975,2.179079,1.5, + 0,0,1,2.044472,2.044472,1.5, + 0,0,1,1.927789,2.140232,1.5, + 0,0,1,1.927789,2.140232,1.5, + 0,0,1,2.044472,2.044472,1.5, + 0,0,1,1.988483,2.095218,1.5, + 1,0,0,1.5,1.5,0, + 1,0,0,1.5,0.73,1.5, + 1,0,0,1.5,0.73,0, + 1,0,0,1.5,0.73,1.5, + 1,0,0,1.5,1.5,0, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,1.5,0, + 1,0,0,1.5,2.27,0, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,2.27,0, + 1,0,0,1.5,2.27,1.5, + 0,0,1,0.820921,1.137025,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.788613,1.205334,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.820921,1.137025,1.5, + 0,0,1,0.859768,1.072211,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.859768,1.072211,1.5, + 0,0,1,0.904782,1.011517,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.904782,1.011517,1.5, + 0,0,1,0.955528,0.955528,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.575473,2.266292,1.5, + 0,0,1,1.5,2.27,1.5, + 0,0,1,1.575473,2.266292,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.794666,2.211387,1.5, + 0,0,1,1.575473,2.266292,1.5, + 0,0,1,1.794666,2.211387,1.5, + 0,0,1,1.65022,2.255205,1.5, + 0,0,1,1.65022,2.255205,1.5, + 0,0,1,1.794666,2.211387,1.5, + 0,0,1,1.723519,2.236844,1.5, + 0.941913,-0.335858,0,1.5,1.5,0, + 0.92388,-0.382683,0,1.205334,0.788613,1.5, + 0.92388,-0.382683,0,1.205334,0.788613,0, + 0.92388,-0.382683,0,1.205334,0.788613,1.5, + 0.941913,-0.335858,0,1.5,1.5,0, + 0.980785,-0.19509,0,1.5,1.5,1.5, + 0.980785,-0.19509,0,1.5,1.5,1.5, + 0.941913,-0.335858,0,1.5,1.5,0, + 0.92388,-0.382683,0,1.794666,2.211387,0, + 0.980785,-0.19509,0,1.5,1.5,1.5, + 0.92388,-0.382683,0,1.794666,2.211387,0, + 0.92388,-0.382683,0,1.794666,2.211387,1.5, + 0,0,1,2.27,1.5,1.5, + 0,0,1,2.211387,1.794666,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.211387,1.794666,1.5, + 0,0,1,2.27,1.5,1.5, + 0,0,1,2.236844,1.723519,1.5, + 0,0,1,2.236844,1.723519,1.5, + 0,0,1,2.27,1.5,1.5, + 0,0,1,2.255205,1.65022,1.5, + 0,0,1,2.255205,1.65022,1.5, + 0,0,1,2.27,1.5,1.5, + 0,0,1,2.266292,1.575473,1.5, + 0,0,1,1.011517,0.904782,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.955528,0.955528,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.011517,0.904782,1.5, + 0,0,1,1.072211,0.859768,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.072211,0.859768,1.5, + 0,0,1,1.137025,0.820921,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.137025,0.820921,1.5, + 0,0,1,1.205334,0.788613,1.5, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,1.5,1.5,0, + 0.707107,-0.707107,0,2.044472,2.044472,0, + 0.707107,-0.707107,0,1.5,1.5,0, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,0.955528,0.955528,0, + 0.707107,-0.707107,0,0.955528,0.955528,0, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,0.955528,0.955528,1.5, + 0,0,1,0.955528,0.955528,1.5, + 0,0,1,2.044472,2.044472,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.733708,1.575473,1.5, + 0,0,1,0.73,1.5,1.5, + 0,0,1,0.733708,1.575473,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.744795,1.65022,1.5, + 0,0,1,0.744795,1.65022,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.763156,1.723519,1.5, + 0,0,1,0.763156,1.723519,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.788613,1.794666,1.5, + 0,0,1,2.211387,1.794666,1.5, + 0,0,1,2.044472,2.044472,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.044472,2.044472,1.5, + 0,0,1,2.211387,1.794666,1.5, + 0,0,1,2.095218,1.988483,1.5, + 0,0,1,2.095218,1.988483,1.5, + 0,0,1,2.211387,1.794666,1.5, + 0,0,1,2.140232,1.927789,1.5, + 0,0,1,2.140232,1.927789,1.5, + 0,0,1,2.211387,1.794666,1.5, + 0,0,1,2.179079,1.862975,1.5, + 0.382683,-0.92388,0,2.211387,1.794666,1.5, + 0.522079,-0.852897,0,1.5,1.5,0, + 0.382683,-0.92388,0,2.211387,1.794666,0, + 0.522079,-0.852897,0,1.5,1.5,0, + 0.382683,-0.92388,0,2.211387,1.794666,1.5, + 0.382683,-0.92388,0,0.788613,1.205334,1.5, + 0,0,-1,0.788613,1.205334,1.5, + 0,0,-1,2.211387,1.794666,1.5, + 0,0,-1,1.5,1.5,1.5, + 0.382683,-0.92388,0,0.788613,1.205334,1.5, + 0.382683,-0.92388,0,0.788613,1.205334,0, + 0.522079,-0.852897,0,1.5,1.5,0, + 0,0,1,0.733708,1.424527,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.73,1.5,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.733708,1.424527,1.5, + 0,0,1,0.744795,1.34978,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.744795,1.34978,1.5, + 0,0,1,0.763156,1.276481,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,0.763156,1.276481,1.5, + 0,0,1,0.788613,1.205334,1.5, + 0,0,1,2.211387,1.205334,1.5, + 0,0,1,2.27,1.5,1.5, + 0,0,1,1.5,1.5,1.5, + 0,0,1,2.27,1.5,1.5, + 0,0,1,2.211387,1.205334,1.5, + 0,0,1,2.236844,1.276481,1.5, + 0,0,1,2.27,1.5,1.5, + 0,0,1,2.236844,1.276481,1.5, + 0,0,1,2.255205,1.34978,1.5, + 0,0,1,2.27,1.5,1.5, + 0,0,1,2.255205,1.34978,1.5, + 0,0,1,2.266292,1.424527,1.5, + 0,1,0,0.73,1.5,1.5, + 0,1,0,1.5,1.5,0, + 0,1,0,0.73,1.5,0, + 0,1,0,1.5,1.5,0, + 0,1,0,0.73,1.5,1.5, + 0,1,0,1.5,1.5,1.5, + 0,1,0,1.5,1.5,0, + 0,1,0,2.27,1.5,1.5, + 0,1,0,2.27,1.5,0, + 0,1,0,2.27,1.5,1.5, + 0,1,0,1.5,1.5,0, + 0,1,0,1.5,1.5,1.5 +}; +static const struct gllist lament_model_star_d_frame = { GL_N3F_V3F, GL_TRIANGLES, 1608, lament_model_star_d_data, 0 }; +const struct gllist *lament_model_star_d = &lament_model_star_d_frame; + +static const float lament_model_star_u_data[] = { + 0,0,1,3,1.201631,3, + 0,0,1,2.266292,1.424527,3, + 0,0,1,2.255205,1.34978,3, + 0,0,1,2.266292,1.424527,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.27,1.5,3, + 0,0,1,2.27,1.5,3, + 0,0,1,3,1.201631,3, + 0,0,1,3,1.5,3, + 0,0,1,0.73,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.73,1.5,3, + 0,0,1,0.733708,1.575473,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.733708,1.575473,3, + 0,0,1,0.744795,1.65022,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.988483,0.904782,3, + 0,0,1,1.927789,0.859768,3, + 0,0,1,1.988483,0.904782,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.044472,0.955528,3, + 0,0,1,2.044472,0.955528,3, + 0,0,1,2.502268,0,3, + 0,0,1,3,0,3, + 0.397052,-0.725981,0.561517,3,0,3, + 0,0,1,2.502268,0,3, + 0,-1,0,2.795,0,3, + 0,0,1,0.955528,0.955528,3, + 0,0,1,0,0.497732,3, + 0,0,1,0,0,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.955528,0.955528,3, + 0,0,1,0.904782,1.011517,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.904782,1.011517,3, + 0,0,1,0.859768,1.072211,3, + 0,0,1,1.575473,2.266292,3, + 0,0,1,1.5,3,3, + 0,0,1,1.5,2.27,3, + 0,0,1,1.5,3,3, + 0,0,1,1.575473,2.266292,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.575473,2.266292,3, + 0,0,1,1.65022,2.255205,3, + 0,0,1,2.095218,1.988483,3, + 0,0,1,3,3,3, + 0,0,1,2.044472,2.044472,3, + 0,0,1,3,3,3, + 0,0,1,2.095218,1.988483,3, + 0,0,1,2.140232,1.927789,3, + 0,0,1,3,3,3, + 0,0,1,2.140232,1.927789,3, + 0,0,1,3,2.502268,3, + 0,1,0,0,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,3, + 0,1,0,0.205,3,3, + 0,-1,0,2.12132,0,2.17368, + 0,-1,0,2.12132,0,0.82632, + 0,-1,0,2.795,0,1.5, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.502268,0, + 1,0,0,3,3,0, + 1,0,0,3,2.502268,3, + 1,0,0,3,3,0, + 1,0,0,3,3,3, + 0,0,-1,2.236844,1.276481,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.211387,1.205334,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.236844,1.276481,0, + 0,0,-1,2.255205,1.34978,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.255205,1.34978,0, + 0,0,-1,3,1.201631,0, + -1,0,0,0,0.497732,3, + -1,0,0,0,0,0, + -1,0,0,0,0,3, + -1,0,0,0,0,0, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.497732,3, + -1,0,0,0,0.87868,3, + -1,0,0,0,0.497732,0, + -1,0,0,0,0.87868,3, + -1,0,0,0,0.87868,0, + 0,0,1,0.955528,2.044472,3, + 0,0,1,0.205,3,3, + 0,0,1,0,3,3, + 0,0,1,0.205,3,3, + 0,0,1,0.955528,2.044472,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.955528,2.044472,3, + 0,0,1,1.011517,2.095218,3, + 0,0,1,0.497732,3,3, + 0,0,1,1.011517,2.095218,3, + 0,0,1,1.072211,2.140232,3, + 0,0,1,1.5,0,3, + 0,0,1,1.34978,0.744795,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.34978,0.744795,3, + 0,0,1,1.5,0,3, + 0,0,1,1.424527,0.733708,3, + 0,0,1,1.424527,0.733708,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.73,3, + 0,0,-1,0.788613,1.205334,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0.87868,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.788613,1.205334,0, + 0,0,-1,0.820921,1.137025,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0.820921,1.137025,0, + 0,0,-1,0.859768,1.072211,0, + -0.56911,-0.822262,0,1.072211,0.859768,3, + -0.621651,-0.783294,0,1.011517,0.904782,1.5, + -0.541882,-0.840455,0,1.072211,0.859768,1.5, + -0.621651,-0.783294,0,1.011517,0.904782,1.5, + -0.56911,-0.822262,0,1.072211,0.859768,3, + -0.646965,-0.76252,0,1.011517,0.904782,3, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.179079,1.862975,0, + 0,0,-1,2.140232,1.927789,0, + 0,0,-1,2.179079,1.862975,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.211387,1.794666,0, + 0,0,-1,2.211387,1.794666,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,3,2.12132,0, + -1,0,0,1.5,3,3, + -1,0,0,1.5,2.27,1.5, + -1,0,0,1.5,2.27,3, + -1,0,0,1.5,2.27,1.5, + -1,0,0,1.5,3,3, + -1,0,0,1.5,2.27,0, + -1,0,0,1.5,2.27,0, + -1,0,0,1.5,3,3, + -1,0,0,1.5,3,0, + -0.408248,0.408248,-0.816497,1.5,3,0, + -0.727607,0.485071,0.485071,1.5,3,3, + 0,1,0,1.5,3,2.795, + -0.408248,0.408248,-0.816497,1.5,3,0, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,0.205, + -0.998795,0.049068,0,2.27,1.5,1.5, + -0.996656,0.081709,0,2.266292,1.424527,0, + -0.993446,0.114299,0,2.266292,1.424527,1.5, + -0.996656,0.081709,0,2.266292,1.424527,0, + -0.998795,0.049068,0,2.27,1.5,1.5, + -0.998795,0.049068,0,2.27,1.5,0, + -0.952059,0.305914,0,2.236844,1.276481,1.5, + -0.941544,0.33689,0,2.211387,1.205334,0, + -0.941544,0.33689,0,2.211387,1.205334,1.5, + -0.941544,0.33689,0,2.211387,1.205334,0, + -0.952059,0.305914,0,2.236844,1.276481,1.5, + -0.961565,0.274577,0,2.236844,1.276481,0, + -0.92388,-0.382683,0,1.794666,0.788613,3, + -0.92388,-0.382683,0,2.12132,0,2.795, + -0.92388,-0.382683,0,2.12132,0,3, + -0.92388,-0.382683,0,2.12132,0,2.795, + -0.92388,-0.382683,0,1.794666,0.788613,3, + -0.92388,-0.382683,0,2.12132,0,2.17368, + -0.92388,-0.382683,0,2.12132,0,2.17368, + -0.92388,-0.382683,0,1.794666,0.788613,3, + -0.92388,-0.382683,0,2.12132,0,0.82632, + -0.92388,-0.382683,0,2.12132,0,0.82632, + -0.92388,-0.382683,0,1.794666,0.788613,3, + -0.92388,-0.382683,0,2.12132,0,0.205, + -0.92388,-0.382683,0,2.12132,0,0.205, + -0.92388,-0.382683,0,1.794666,0.788613,3, + -0.92388,-0.382683,0,2.12132,0,0, + -0.92388,-0.382683,0,2.12132,0,0, + -0.92388,-0.382683,0,1.794666,0.788613,3, + -0.92388,-0.382683,0,1.794666,0.788613,0, + -0.767794,0.296171,-0.568133,1.794666,0.788613,0, + -0.446575,-0.504521,0.738938,1.794666,0.788613,3, + 0.066046,0.203371,-0.976872,1.794666,0.788613,1.5, + -0.646965,-0.76252,0,1.011517,0.904782,3, + -0.671559,-0.740951,0,0.955528,0.955528,1.5, + -0.621651,-0.783294,0,1.011517,0.904782,1.5, + -0.671559,-0.740951,0,0.955528,0.955528,1.5, + -0.646965,-0.76252,0,1.011517,0.904782,3, + -0.671559,-0.740951,0,0.955528,0.955528,3, + 0.874085,-0.485774,0,2.179079,1.137025,1.5, + 0.840455,-0.541882,0,2.140232,1.072211,3, + 0.822262,-0.56911,0,2.140232,1.072211,1.5, + 0.840455,-0.541882,0,2.140232,1.072211,3, + 0.874085,-0.485774,0,2.179079,1.137025,1.5, + 0.889521,-0.456893,0,2.179079,1.137025,3, + 0.92388,-0.382683,0,2.12132,3,0, + 0.92388,-0.382683,0,1.794666,2.211387,1.5, + 0.92388,-0.382683,0,1.794666,2.211387,0, + 0.92388,-0.382683,0,1.794666,2.211387,1.5, + 0.92388,-0.382683,0,2.12132,3,0, + 0.92388,-0.382683,0,1.794666,2.211387,3, + 0.92388,-0.382683,0,1.794666,2.211387,3, + 0.92388,-0.382683,0,2.12132,3,0, + 0.92388,-0.382683,0,2.12132,3,3, + 0.618034,0.412957,0.668955,2.12132,3,3, + 0.903634,0.27776,-0.326029,2.12132,3,0, + 0,1,0,2.12132,3,0.205, + 0.618034,0.412957,0.668955,2.12132,3,3, + 0,1,0,2.12132,3,0.205, + 0,1,0,2.12132,3,0.82632, + 0.618034,0.412957,0.668955,2.12132,3,3, + 0,1,0,2.12132,3,0.82632, + 0,1,0,2.12132,3,2.17368, + 0.618034,0.412957,0.668955,2.12132,3,3, + 0,1,0,2.12132,3,2.17368, + 0,1,0,2.12132,3,2.795, + -0.740951,-0.671559,0,2.044472,2.044472,1.5, + -0.76252,-0.646965,0,2.095218,1.988483,0, + -0.783294,-0.621651,0,2.095218,1.988483,1.5, + -0.76252,-0.646965,0,2.095218,1.988483,0, + -0.740951,-0.671559,0,2.044472,2.044472,1.5, + -0.740951,-0.671559,0,2.044472,2.044472,0, + -0.33689,0.941544,0,1.205334,2.211387,3, + -0.305914,0.952059,0,1.276481,2.236844,1.5, + -0.33689,0.941544,0,1.205334,2.211387,1.5, + -0.305914,0.952059,0,1.276481,2.236844,1.5, + -0.33689,0.941544,0,1.205334,2.211387,3, + -0.274577,0.961565,0,1.276481,2.236844,3, + 0.941544,0.33689,0,2.211387,1.794666,1.5, + 0.952059,0.305914,0,2.236844,1.723519,3, + 0.961565,0.274577,0,2.236844,1.723519,1.5, + 0.952059,0.305914,0,2.236844,1.723519,3, + 0.941544,0.33689,0,2.211387,1.794666,1.5, + 0.941544,0.33689,0,2.211387,1.794666,3, + 0.081709,-0.996656,0,1.575473,0.733708,3, + 0.049068,-0.998795,0,1.5,0.73,1.5, + 0.114299,-0.993446,0,1.575473,0.733708,1.5, + 0.049068,-0.998795,0,1.5,0.73,1.5, + 0.081709,-0.996656,0,1.575473,0.733708,3, + 0.049068,-0.998795,0,1.5,0.73,3, + 0.707107,0.707107,0,2.044472,0.955528,1.5, + 0.707107,0.707107,0,3,0,0, + 0.707107,0.707107,0,2.044472,0.955528,0, + 0.707107,0.707107,0,3,0,0, + 0.707107,0.707107,0,2.044472,0.955528,1.5, + 0.707107,0.707107,0,3,0,0.205, + 0.707107,0.707107,0,3,0,0.205, + 0.707107,0.707107,0,2.044472,0.955528,1.5, + 0.707107,0.707107,0,3,0,1.5, + 0.707107,0.707107,0,3,0,1.5, + 0.707107,0.707107,0,2.044472,0.955528,1.5, + 0.707107,0.707107,0,2.044472,0.955528,3, + 0.707107,0.707107,0,3,0,1.5, + 0.707107,0.707107,0,2.044472,0.955528,3, + 0.707107,0.707107,0,3,0,2.795, + 0.707107,0.707107,0,3,0,2.795, + 0.707107,0.707107,0,2.044472,0.955528,3, + 0.707107,0.707107,0,3,0,3, + -0.783294,-0.621651,0,2.095218,1.988483,1.5, + -0.822262,-0.56911,0,2.140232,1.927789,0, + -0.840455,-0.541882,0,2.140232,1.927789,1.5, + -0.822262,-0.56911,0,2.140232,1.927789,0, + -0.783294,-0.621651,0,2.095218,1.988483,1.5, + -0.76252,-0.646965,0,2.095218,1.988483,0, + 0.983848,0.179005,0,2.255205,1.65022,1.5, + 0.993446,0.114299,0,2.266292,1.575473,3, + 0.996656,0.081709,0,2.266292,1.575473,1.5, + 0.993446,0.114299,0,2.266292,1.575473,3, + 0.983848,0.179005,0,2.255205,1.65022,1.5, + 0.97746,0.211123,0,2.255205,1.65022,3, + 0.33689,0.941544,0,1.205334,0.788613,1.5, + 0.305914,0.952059,0,1.276481,0.763156,0, + 0.33689,0.941544,0,1.205334,0.788613,0, + 0.305914,0.952059,0,1.276481,0.763156,0, + 0.33689,0.941544,0,1.205334,0.788613,1.5, + 0.274577,0.961565,0,1.276481,0.763156,1.5, + -0.179005,-0.983848,0,1.65022,2.255205,1.5, + -0.114299,-0.993446,0,1.575473,2.266292,0, + -0.211123,-0.97746,0,1.65022,2.255205,0, + -0.114299,-0.993446,0,1.575473,2.266292,0, + -0.179005,-0.983848,0,1.65022,2.255205,1.5, + -0.081709,-0.996656,0,1.575473,2.266292,1.5, + -0.274577,-0.961565,0,1.723519,2.236844,1.5, + -0.211123,-0.97746,0,1.65022,2.255205,0, + -0.305914,-0.952059,0,1.723519,2.236844,0, + -0.211123,-0.97746,0,1.65022,2.255205,0, + -0.274577,-0.961565,0,1.723519,2.236844,1.5, + -0.179005,-0.983848,0,1.65022,2.255205,1.5, + -0.081709,-0.996656,0,1.575473,2.266292,1.5, + -0.049068,-0.998795,0,1.5,2.27,0, + -0.114299,-0.993446,0,1.575473,2.266292,0, + -0.049068,-0.998795,0,1.5,2.27,0, + -0.081709,-0.996656,0,1.575473,2.266292,1.5, + -0.049068,-0.998795,0,1.5,2.27,1.5, + 0.76252,0.646965,0,0.904782,1.011517,0, + 0.740951,0.671559,0,0.955528,0.955528,1.5, + 0.740951,0.671559,0,0.955528,0.955528,0, + 0.740951,0.671559,0,0.955528,0.955528,1.5, + 0.76252,0.646965,0,0.904782,1.011517,0, + 0.783294,0.621651,0,0.904782,1.011517,1.5, + -0.889521,0.456893,0,0.820921,1.862975,3, + -0.903989,0.427555,0,0.788613,1.794666,1.5, + -0.903989,0.427555,0,0.788613,1.794666,3, + -0.903989,0.427555,0,0.788613,1.794666,1.5, + -0.889521,0.456893,0,0.820921,1.862975,3, + -0.874085,0.485774,0,0.820921,1.862975,1.5, + -1,0,0,0,1.798369,3, + -1,0,0,0,1.5,0, + -1,0,0,0,1.5,3, + -1,0,0,0,1.5,0, + -1,0,0,0,1.798369,3, + -1,0,0,0,1.798369,0, + -1,0,0,0,1.798369,0, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.12132,3, + -1,0,0,0,1.798369,0, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.12132,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.723519,2.236844,0, + 0,0,-1,1.65022,2.255205,0, + 0,0,-1,1.723519,2.236844,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.794666,2.211387,0, + 0,0,-1,1.794666,2.211387,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.862975,0.820921,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.794666,0.788613,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.862975,0.820921,0, + 0,0,-1,1.927789,0.859768,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.927789,0.859768,0, + 0,0,-1,2.502268,0,0, + -0.382683,0.92388,0,0,0.87868,3, + -0.382683,0.92388,0,0.788613,1.205334,0, + -0.382683,0.92388,0,0,0.87868,0, + -0.382683,0.92388,0,0.788613,1.205334,0, + -0.382683,0.92388,0,0,0.87868,3, + -0.382683,0.92388,0,0.788613,1.205334,1.5, + -0.382683,0.92388,0,0.788613,1.205334,1.5, + -0.382683,0.92388,0,0,0.87868,3, + -0.382683,0.92388,0,0.788613,1.205334,3, + 0,-1,0,0.73,1.5,1.5, + 0,-1,0,0,1.5,0, + 0,-1,0,0.73,1.5,0, + 0,-1,0,0,1.5,0, + 0,-1,0,0.73,1.5,1.5, + 0,-1,0,0,1.5,3, + 0,-1,0,0,1.5,3, + 0,-1,0,0.73,1.5,1.5, + 0,-1,0,0.73,1.5,3, + -0.707107,0.707107,0,2.044472,2.044472,1.5, + -0.707107,0.707107,0,3,3,0, + -0.707107,0.707107,0,2.044472,2.044472,0, + -0.707107,0.707107,0,3,3,0, + -0.707107,0.707107,0,2.044472,2.044472,1.5, + -0.707107,0.707107,0,3,3,3, + -0.707107,0.707107,0,3,3,3, + -0.707107,0.707107,0,2.044472,2.044472,1.5, + -0.707107,0.707107,0,2.044472,2.044472,3, + -0.382683,-0.92388,0,3,0.87868,3, + -0.382683,-0.92388,0,2.211387,1.205334,0, + -0.382683,-0.92388,0,3,0.87868,0, + -0.382683,-0.92388,0,2.211387,1.205334,0, + -0.382683,-0.92388,0,3,0.87868,3, + -0.382683,-0.92388,0,2.211387,1.205334,1.5, + -0.382683,-0.92388,0,2.211387,1.205334,1.5, + -0.382683,-0.92388,0,3,0.87868,3, + -0.382683,-0.92388,0,2.211387,1.205334,3, + -0.427555,-0.903989,0,1.205334,0.788613,3, + -0.456893,-0.889521,0,1.137025,0.820921,1.5, + -0.427555,-0.903989,0,1.205334,0.788613,1.5, + -0.456893,-0.889521,0,1.137025,0.820921,1.5, + -0.427555,-0.903989,0,1.205334,0.788613,3, + -0.485774,-0.874085,0,1.137025,0.820921,3, + 0.92388,0.382683,0,0.87868,3,0, + 0.92388,0.382683,0,1.205334,2.211387,1.5, + 0.92388,0.382683,0,1.205334,2.211387,0, + 0.92388,0.382683,0,1.205334,2.211387,1.5, + 0.92388,0.382683,0,0.87868,3,0, + 0.92388,0.382683,0,1.205334,2.211387,3, + 0.92388,0.382683,0,1.205334,2.211387,3, + 0.92388,0.382683,0,0.87868,3,0, + 0.92388,0.382683,0,0.87868,3,3, + 0.269347,0.403107,0.874618,0.87868,3,3, + 0.537476,0.61047,-0.58176,0.87868,3,0, + 0,1,0,0.87868,3,0.205, + 0.269347,0.403107,0.874618,0.87868,3,3, + 0,1,0,0.87868,3,0.205, + 0,1,0,0.87868,3,0.82632, + 0.269347,0.403107,0.874618,0.87868,3,3, + 0,1,0,0.87868,3,0.82632, + 0,1,0,0.87868,3,2.17368, + 0.269347,0.403107,0.874618,0.87868,3,3, + 0,1,0,0.87868,3,2.17368, + 0,1,0,0.87868,3,2.795, + -0.740951,0.671559,0,0.955528,2.044472,3, + -0.76252,0.646965,0,0.904782,1.988483,1.5, + -0.783294,0.621651,0,0.904782,1.988483,3, + -0.76252,0.646965,0,0.904782,1.988483,1.5, + -0.740951,0.671559,0,0.955528,2.044472,3, + -0.740951,0.671559,0,0.955528,2.044472,1.5, + -0.993446,-0.114299,0,0.733708,1.424527,3, + -0.983848,-0.179005,0,0.744795,1.34978,1.5, + -0.97746,-0.211123,0,0.744795,1.34978,3, + -0.983848,-0.179005,0,0.744795,1.34978,1.5, + -0.993446,-0.114299,0,0.733708,1.424527,3, + -0.996656,-0.081709,0,0.733708,1.424527,1.5, + -0.707107,-0.707107,0,0,3,3, + -0.707107,-0.707107,0,0.955528,2.044472,1.5, + -0.707107,-0.707107,0,0.955528,2.044472,3, + -0.707107,-0.707107,0,0.955528,2.044472,1.5, + -0.707107,-0.707107,0,0,3,3, + -0.707107,-0.707107,0,0.955528,2.044472,0, + -0.707107,-0.707107,0,0.955528,2.044472,0, + -0.707107,-0.707107,0,0,3,3, + -0.707107,-0.707107,0,0,3,0, + -0.561517,0.232588,-0.794104,0,3,0, + -0.903326,-0.051662,0.425832,0,3,3, + 0,1,0,0,3,2.795, + -0.561517,0.232588,-0.794104,0,3,0, + 0,1,0,0,3,2.795, + 0,1,0,0,3,1.5, + -0.561517,0.232588,-0.794104,0,3,0, + 0,1,0,0,3,1.5, + 0,1,0,0,3,0.205, + 0,0,-1,2.044472,2.044472,1.5, + 0,0,-1,2.211387,1.794666,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.211387,1.794666,1.5, + 0,0,-1,2.044472,2.044472,1.5, + 0,0,-1,2.095218,1.988483,1.5, + 0,0,-1,2.211387,1.794666,1.5, + 0,0,-1,2.095218,1.988483,1.5, + 0,0,-1,2.140232,1.927789,1.5, + 0,0,-1,2.211387,1.794666,1.5, + 0,0,-1,2.140232,1.927789,1.5, + 0,0,-1,2.179079,1.862975,1.5, + 0.274577,-0.961565,0,1.723519,0.763156,3, + 0.211123,-0.97746,0,1.65022,0.744795,1.5, + 0.305914,-0.952059,0,1.723519,0.763156,1.5, + 0.211123,-0.97746,0,1.65022,0.744795,1.5, + 0.274577,-0.961565,0,1.723519,0.763156,3, + 0.179005,-0.983848,0,1.65022,0.744795,3, + 0.874085,0.485774,0,0.820921,1.137025,0, + 0.840455,0.541882,0,0.859768,1.072211,1.5, + 0.822262,0.56911,0,0.859768,1.072211,0, + 0.840455,0.541882,0,0.859768,1.072211,1.5, + 0.874085,0.485774,0,0.820921,1.137025,0, + 0.889521,0.456893,0,0.820921,1.137025,1.5, + 0.822262,-0.56911,0,2.140232,1.072211,1.5, + 0.783294,-0.621651,0,2.095218,1.011517,3, + 0.76252,-0.646965,0,2.095218,1.011517,1.5, + 0.783294,-0.621651,0,2.095218,1.011517,3, + 0.822262,-0.56911,0,2.140232,1.072211,1.5, + 0.840455,-0.541882,0,2.140232,1.072211,3, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.072211,2.140232,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.072211,2.140232,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.137025,2.179079,0, + 0,0,-1,1.137025,2.179079,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.205334,2.211387,0, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.87868,0,0.82632, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.87868,0,0.82632, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.87868,0,2.17368, + 1,0,0,1.5,0.73,0, + 1,0,0,1.5,0,0.205, + 1,0,0,1.5,0,0, + 1,0,0,1.5,0,0.205, + 1,0,0,1.5,0.73,0, + 1,0,0,1.5,0,2.795, + 1,0,0,1.5,0,2.795, + 1,0,0,1.5,0.73,0, + 1,0,0,1.5,0,3, + 1,0,0,1.5,0,3, + 1,0,0,1.5,0.73,0, + 1,0,0,1.5,0.73,3, + 0.694147,-0.227384,0.682976,1.5,0.73,3, + 0.878025,0.427983,-0.21425,1.5,0.73,0, + 0.341066,-0.296944,-0.891907,1.5,0.73,1.5, + -0.993446,0.114299,0,2.266292,1.424527,1.5, + -0.983848,0.179005,0,2.255205,1.34978,0, + -0.97746,0.211123,0,2.255205,1.34978,1.5, + -0.983848,0.179005,0,2.255205,1.34978,0, + -0.993446,0.114299,0,2.266292,1.424527,1.5, + -0.996656,0.081709,0,2.266292,1.424527,0, + 0.961565,0.274577,0,2.236844,1.723519,1.5, + 0.97746,0.211123,0,2.255205,1.65022,3, + 0.983848,0.179005,0,2.255205,1.65022,1.5, + 0.97746,0.211123,0,2.255205,1.65022,3, + 0.961565,0.274577,0,2.236844,1.723519,1.5, + 0.952059,0.305914,0,2.236844,1.723519,3, + -0.274577,0.961565,0,1.276481,2.236844,3, + -0.211123,0.97746,0,1.34978,2.255205,1.5, + -0.305914,0.952059,0,1.276481,2.236844,1.5, + -0.211123,0.97746,0,1.34978,2.255205,1.5, + -0.274577,0.961565,0,1.276481,2.236844,3, + -0.179005,0.983848,0,1.34978,2.255205,3, + 0.903989,-0.427555,0,2.211387,1.205334,1.5, + 0.889521,-0.456893,0,2.179079,1.137025,3, + 0.874085,-0.485774,0,2.179079,1.137025,1.5, + 0.889521,-0.456893,0,2.179079,1.137025,3, + 0.903989,-0.427555,0,2.211387,1.205334,1.5, + 0.903989,-0.427555,0,2.211387,1.205334,3, + 0.646965,0.76252,0,1.988483,2.095218,3, + 0.671559,0.740951,0,2.044472,2.044472,1.5, + 0.621651,0.783294,0,1.988483,2.095218,1.5, + 0.671559,0.740951,0,2.044472,2.044472,1.5, + 0.646965,0.76252,0,1.988483,2.095218,3, + 0.671559,0.740951,0,2.044472,2.044472,3, + -0.081709,0.996656,0,1.424527,2.266292,3, + -0.049068,0.998795,0,1.5,2.27,1.5, + -0.114299,0.993446,0,1.424527,2.266292,1.5, + -0.049068,0.998795,0,1.5,2.27,1.5, + -0.081709,0.996656,0,1.424527,2.266292,3, + -0.049068,0.998795,0,1.5,2.27,3, + 0.427555,0.903989,0,1.794666,2.211387,3, + 0.456893,0.889521,0,1.862975,2.179079,1.5, + 0.427555,0.903989,0,1.794666,2.211387,1.5, + 0.456893,0.889521,0,1.862975,2.179079,1.5, + 0.427555,0.903989,0,1.794666,2.211387,3, + 0.485774,0.874085,0,1.862975,2.179079,3, + 0,1,0,2.27,1.5,1.5, + 0,1,0,3,1.5,0, + 0,1,0,2.27,1.5,0, + 0,1,0,3,1.5,0, + 0,1,0,2.27,1.5,1.5, + 0,1,0,3,1.5,3, + 0,1,0,3,1.5,3, + 0,1,0,2.27,1.5,1.5, + 0,1,0,2.27,1.5,3, + 0.996656,-0.081709,0,0.733708,1.575473,0, + 0.998795,-0.049068,0,0.73,1.5,1.5, + 0.998795,-0.049068,0,0.73,1.5,0, + 0.998795,-0.049068,0,0.73,1.5,1.5, + 0.996656,-0.081709,0,0.733708,1.575473,0, + 0.993446,-0.114299,0,0.733708,1.575473,1.5, + -0.840455,0.541882,0,0.859768,1.927789,3, + -0.874085,0.485774,0,0.820921,1.862975,1.5, + -0.889521,0.456893,0,0.820921,1.862975,3, + -0.874085,0.485774,0,0.820921,1.862975,1.5, + -0.840455,0.541882,0,0.859768,1.927789,3, + -0.822262,0.56911,0,0.859768,1.927789,1.5, + -0.998795,-0.049068,0,0.73,1.5,3, + -0.996656,-0.081709,0,0.733708,1.424527,1.5, + -0.993446,-0.114299,0,0.733708,1.424527,3, + -0.996656,-0.081709,0,0.733708,1.424527,1.5, + -0.998795,-0.049068,0,0.73,1.5,3, + -0.998795,-0.049068,0,0.73,1.5,1.5, + -0.97746,-0.211123,0,0.744795,1.34978,3, + -0.961565,-0.274577,0,0.763156,1.276481,1.5, + -0.952059,-0.305914,0,0.763156,1.276481,3, + -0.961565,-0.274577,0,0.763156,1.276481,1.5, + -0.97746,-0.211123,0,0.744795,1.34978,3, + -0.983848,-0.179005,0,0.744795,1.34978,1.5, + 0.961565,-0.274577,0,0.763156,1.723519,0, + 0.97746,-0.211123,0,0.744795,1.65022,1.5, + 0.983848,-0.179005,0,0.744795,1.65022,0, + 0.97746,-0.211123,0,0.744795,1.65022,1.5, + 0.961565,-0.274577,0,0.763156,1.723519,0, + 0.952059,-0.305914,0,0.763156,1.723519,1.5, + 0.33689,-0.941544,0,1.794666,0.788613,3, + 0.305914,-0.952059,0,1.723519,0.763156,1.5, + 0.33689,-0.941544,0,1.794666,0.788613,1.5, + 0.305914,-0.952059,0,1.723519,0.763156,1.5, + 0.33689,-0.941544,0,1.794666,0.788613,3, + 0.274577,-0.961565,0,1.723519,0.763156,3, + 0.707107,-0.707107,0,0.955528,0.955528,0, + 0.707107,-0.707107,0,0,0,3, + 0.707107,-0.707107,0,0,0,0, + 0.707107,-0.707107,0,0,0,3, + 0.707107,-0.707107,0,0.955528,0.955528,0, + 0.707107,-0.707107,0,0.955528,0.955528,3, + 0.282725,-0.558186,0.780061,0.955528,0.955528,3, + 0.865795,-0.298347,-0.401731,0.955528,0.955528,0, + 0.362971,-0.362971,-0.858198,0.955528,0.955528,1.5, + 0.646965,-0.76252,0,1.011517,2.095218,1.5, + 0.671559,-0.740951,0,0.955528,2.044472,0, + 0.621651,-0.783294,0,1.011517,2.095218,0, + 0.671559,-0.740951,0,0.955528,2.044472,0, + 0.646965,-0.76252,0,1.011517,2.095218,1.5, + 0.671559,-0.740951,0,0.955528,2.044472,1.5, + -0.485774,0.874085,0,1.862975,0.820921,1.5, + -0.541882,0.840455,0,1.927789,0.859768,0, + -0.456893,0.889521,0,1.862975,0.820921,0, + -0.541882,0.840455,0,1.927789,0.859768,0, + -0.485774,0.874085,0,1.862975,0.820921,1.5, + -0.56911,0.822262,0,1.927789,0.859768,1.5, + -0.97746,0.211123,0,2.255205,1.34978,1.5, + -0.961565,0.274577,0,2.236844,1.276481,0, + -0.952059,0.305914,0,2.236844,1.276481,1.5, + -0.961565,0.274577,0,2.236844,1.276481,0, + -0.97746,0.211123,0,2.255205,1.34978,1.5, + -0.983848,0.179005,0,2.255205,1.34978,0, + -0.427555,0.903989,0,1.794666,0.788613,1.5, + -0.456893,0.889521,0,1.862975,0.820921,0, + -0.427555,0.903989,0,1.794666,0.788613,0, + -0.456893,0.889521,0,1.862975,0.820921,0, + -0.427555,0.903989,0,1.794666,0.788613,1.5, + -0.485774,0.874085,0,1.862975,0.820921,1.5, + 0.081709,0.996656,0,1.424527,0.733708,1.5, + 0.049068,0.998795,0,1.5,0.73,0, + 0.114299,0.993446,0,1.424527,0.733708,0, + 0.049068,0.998795,0,1.5,0.73,0, + 0.081709,0.996656,0,1.424527,0.733708,1.5, + 0.049068,0.998795,0,1.5,0.73,1.5, + -0.485774,-0.874085,0,1.137025,0.820921,3, + -0.541882,-0.840455,0,1.072211,0.859768,1.5, + -0.456893,-0.889521,0,1.137025,0.820921,1.5, + -0.541882,-0.840455,0,1.072211,0.859768,1.5, + -0.485774,-0.874085,0,1.137025,0.820921,3, + -0.56911,-0.822262,0,1.072211,0.859768,3, + 0.485774,-0.874085,0,1.137025,2.179079,1.5, + 0.541882,-0.840455,0,1.072211,2.140232,0, + 0.456893,-0.889521,0,1.137025,2.179079,0, + 0.541882,-0.840455,0,1.072211,2.140232,0, + 0.485774,-0.874085,0,1.137025,2.179079,1.5, + 0.56911,-0.822262,0,1.072211,2.140232,1.5, + -0.92388,0.382683,0,0.87868,0,0.205, + -0.92388,0.382683,0,1.205334,0.788613,0, + -0.92388,0.382683,0,0.87868,0,0, + -0.92388,0.382683,0,1.205334,0.788613,0, + -0.92388,0.382683,0,0.87868,0,0.205, + -0.92388,0.382683,0,0.87868,0,0.82632, + -0.92388,0.382683,0,1.205334,0.788613,0, + -0.92388,0.382683,0,0.87868,0,0.82632, + -0.92388,0.382683,0,0.87868,0,2.17368, + -0.92388,0.382683,0,1.205334,0.788613,0, + -0.92388,0.382683,0,0.87868,0,2.17368, + -0.92388,0.382683,0,0.87868,0,2.795, + -0.92388,0.382683,0,1.205334,0.788613,0, + -0.92388,0.382683,0,0.87868,0,2.795, + -0.92388,0.382683,0,0.87868,0,3, + -0.92388,0.382683,0,1.205334,0.788613,0, + -0.92388,0.382683,0,0.87868,0,3, + -0.92388,0.382683,0,1.205334,0.788613,3, + -0.807325,0.502043,-0.310129,1.205334,0.788613,0, + 0.015077,-0.480291,0.876979,1.205334,0.788613,3, + 0.489038,0.249268,-0.835887,1.205334,0.788613,1.5, + 0.76252,-0.646965,0,2.095218,1.011517,1.5, + 0.740951,-0.671559,0,2.044472,0.955528,3, + 0.740951,-0.671559,0,2.044472,0.955528,1.5, + 0.740951,-0.671559,0,2.044472,0.955528,3, + 0.76252,-0.646965,0,2.095218,1.011517,1.5, + 0.783294,-0.621651,0,2.095218,1.011517,3, + 0.485774,0.874085,0,1.862975,2.179079,3, + 0.541882,0.840455,0,1.927789,2.140232,1.5, + 0.456893,0.889521,0,1.862975,2.179079,1.5, + 0.541882,0.840455,0,1.927789,2.140232,1.5, + 0.485774,0.874085,0,1.862975,2.179079,3, + 0.56911,0.822262,0,1.927789,2.140232,3, + 0.382683,-0.92388,0,3,2.12132,3, + 0.382683,-0.92388,0,2.211387,1.794666,0, + 0.382683,-0.92388,0,3,2.12132,0, + 0.382683,-0.92388,0,2.211387,1.794666,0, + 0.382683,-0.92388,0,3,2.12132,3, + 0.382683,-0.92388,0,2.211387,1.794666,1.5, + 0.382683,-0.92388,0,2.211387,1.794666,1.5, + 0.382683,-0.92388,0,3,2.12132,3, + 0.382683,-0.92388,0,2.211387,1.794666,3, + 0.179005,-0.983848,0,1.65022,0.744795,3, + 0.114299,-0.993446,0,1.575473,0.733708,1.5, + 0.211123,-0.97746,0,1.65022,0.744795,1.5, + 0.114299,-0.993446,0,1.575473,0.733708,1.5, + 0.179005,-0.983848,0,1.65022,0.744795,3, + 0.081709,-0.996656,0,1.575473,0.733708,3, + -0.952059,-0.305914,0,0.763156,1.276481,3, + -0.941544,-0.33689,0,0.788613,1.205334,1.5, + -0.941544,-0.33689,0,0.788613,1.205334,3, + -0.941544,-0.33689,0,0.788613,1.205334,1.5, + -0.952059,-0.305914,0,0.763156,1.276481,3, + -0.961565,-0.274577,0,0.763156,1.276481,1.5, + 0.274577,0.961565,0,1.276481,0.763156,1.5, + 0.211123,0.97746,0,1.34978,0.744795,0, + 0.305914,0.952059,0,1.276481,0.763156,0, + 0.211123,0.97746,0,1.34978,0.744795,0, + 0.274577,0.961565,0,1.276481,0.763156,1.5, + 0.179005,0.983848,0,1.34978,0.744795,1.5, + 0.996656,0.081709,0,2.266292,1.575473,1.5, + 0.998795,0.049068,0,2.27,1.5,3, + 0.998795,0.049068,0,2.27,1.5,1.5, + 0.998795,0.049068,0,2.27,1.5,3, + 0.996656,0.081709,0,2.266292,1.575473,1.5, + 0.993446,0.114299,0,2.266292,1.575473,3, + 0.983848,-0.179005,0,0.744795,1.65022,0, + 0.993446,-0.114299,0,0.733708,1.575473,1.5, + 0.996656,-0.081709,0,0.733708,1.575473,0, + 0.993446,-0.114299,0,0.733708,1.575473,1.5, + 0.983848,-0.179005,0,0.744795,1.65022,0, + 0.97746,-0.211123,0,0.744795,1.65022,1.5, + 0.903989,0.427555,0,0.788613,1.205334,0, + 0.889521,0.456893,0,0.820921,1.137025,1.5, + 0.874085,0.485774,0,0.820921,1.137025,0, + 0.889521,0.456893,0,0.820921,1.137025,1.5, + 0.903989,0.427555,0,0.788613,1.205334,0, + 0.903989,0.427555,0,0.788613,1.205334,1.5, + 0.427555,-0.903989,0,1.205334,2.211387,1.5, + 0.456893,-0.889521,0,1.137025,2.179079,0, + 0.427555,-0.903989,0,1.205334,2.211387,0, + 0.456893,-0.889521,0,1.137025,2.179079,0, + 0.427555,-0.903989,0,1.205334,2.211387,1.5, + 0.485774,-0.874085,0,1.137025,2.179079,1.5, + -0.33689,-0.941544,0,1.794666,2.211387,1.5, + -0.305914,-0.952059,0,1.723519,2.236844,0, + -0.33689,-0.941544,0,1.794666,2.211387,0, + -0.305914,-0.952059,0,1.723519,2.236844,0, + -0.33689,-0.941544,0,1.794666,2.211387,1.5, + -0.274577,-0.961565,0,1.723519,2.236844,1.5, + -0.889521,-0.456893,0,2.179079,1.862975,1.5, + -0.903989,-0.427555,0,2.211387,1.794666,0, + -0.903989,-0.427555,0,2.211387,1.794666,1.5, + -0.903989,-0.427555,0,2.211387,1.794666,0, + -0.889521,-0.456893,0,2.179079,1.862975,1.5, + -0.874085,-0.485774,0,2.179079,1.862975,0, + -0.56911,0.822262,0,1.927789,0.859768,1.5, + -0.621651,0.783294,0,1.988483,0.904782,0, + -0.541882,0.840455,0,1.927789,0.859768,0, + -0.621651,0.783294,0,1.988483,0.904782,0, + -0.56911,0.822262,0,1.927789,0.859768,1.5, + -0.646965,0.76252,0,1.988483,0.904782,1.5, + 0.56911,-0.822262,0,1.072211,2.140232,1.5, + 0.621651,-0.783294,0,1.011517,2.095218,0, + 0.541882,-0.840455,0,1.072211,2.140232,0, + 0.621651,-0.783294,0,1.011517,2.095218,0, + 0.56911,-0.822262,0,1.072211,2.140232,1.5, + 0.646965,-0.76252,0,1.011517,2.095218,1.5, + 0.179005,0.983848,0,1.34978,0.744795,1.5, + 0.114299,0.993446,0,1.424527,0.733708,0, + 0.211123,0.97746,0,1.34978,0.744795,0, + 0.114299,0.993446,0,1.424527,0.733708,0, + 0.179005,0.983848,0,1.34978,0.744795,1.5, + 0.081709,0.996656,0,1.424527,0.733708,1.5, + 0.56911,0.822262,0,1.927789,2.140232,3, + 0.621651,0.783294,0,1.988483,2.095218,1.5, + 0.541882,0.840455,0,1.927789,2.140232,1.5, + 0.621651,0.783294,0,1.988483,2.095218,1.5, + 0.56911,0.822262,0,1.927789,2.140232,3, + 0.646965,0.76252,0,1.988483,2.095218,3, + 1,0,0,3,1.201631,0, + 1,0,0,3,0.87868,3, + 1,0,0,3,0.87868,0, + 1,0,0,3,0.87868,3, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.5,0, + 1,0,0,3,1.5,3, + 0.822262,0.56911,0,0.859768,1.072211,0, + 0.783294,0.621651,0,0.904782,1.011517,1.5, + 0.76252,0.646965,0,0.904782,1.011517,0, + 0.783294,0.621651,0,0.904782,1.011517,1.5, + 0.822262,0.56911,0,0.859768,1.072211,0, + 0.840455,0.541882,0,0.859768,1.072211,1.5, + 0.941544,-0.33689,0,0.788613,1.794666,0, + 0.952059,-0.305914,0,0.763156,1.723519,1.5, + 0.961565,-0.274577,0,0.763156,1.723519,0, + 0.952059,-0.305914,0,0.763156,1.723519,1.5, + 0.941544,-0.33689,0,0.788613,1.794666,0, + 0.941544,-0.33689,0,0.788613,1.794666,1.5, + 0,0,-1,0.788613,1.794666,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.788613,1.794666,0, + 0,0,-1,0.763156,1.723519,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0.763156,1.723519,0, + 0,0,-1,0.744795,1.65022,0, + 0,0,-1,1.205334,0.788613,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,0.87868,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.205334,0.788613,0, + 0,0,-1,1.276481,0.763156,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.276481,0.763156,0, + 0,0,-1,1.34978,0.744795,0, + 0,1,0,2.12132,3,0.82632, + 0,1,0,2.12132,3,0.205, + 0,1,0,1.5,3,0.205, + -0.783294,0.621651,0,0.904782,1.988483,3, + -0.822262,0.56911,0,0.859768,1.927789,1.5, + -0.840455,0.541882,0,0.859768,1.927789,3, + -0.822262,0.56911,0,0.859768,1.927789,1.5, + -0.783294,0.621651,0,0.904782,1.988483,3, + -0.76252,0.646965,0,0.904782,1.988483,1.5, + -0.179005,0.983848,0,1.34978,2.255205,3, + -0.114299,0.993446,0,1.424527,2.266292,1.5, + -0.211123,0.97746,0,1.34978,2.255205,1.5, + -0.114299,0.993446,0,1.424527,2.266292,1.5, + -0.179005,0.983848,0,1.34978,2.255205,3, + -0.081709,0.996656,0,1.424527,2.266292,3, + 0.382683,0.92388,0,0,2.12132,3, + 0.382683,0.92388,0,0.788613,1.794666,0, + 0.382683,0.92388,0,0,2.12132,0, + 0.382683,0.92388,0,0.788613,1.794666,0, + 0.382683,0.92388,0,0,2.12132,3, + 0.382683,0.92388,0,0.788613,1.794666,1.5, + 0.382683,0.92388,0,0.788613,1.794666,1.5, + 0.382683,0.92388,0,0,2.12132,3, + 0.382683,0.92388,0,0.788613,1.794666,3, + -0.840455,-0.541882,0,2.140232,1.927789,1.5, + -0.874085,-0.485774,0,2.179079,1.862975,0, + -0.889521,-0.456893,0,2.179079,1.862975,1.5, + -0.874085,-0.485774,0,2.179079,1.862975,0, + -0.840455,-0.541882,0,2.140232,1.927789,1.5, + -0.822262,-0.56911,0,2.140232,1.927789,0, + -0.646965,0.76252,0,1.988483,0.904782,1.5, + -0.671559,0.740951,0,2.044472,0.955528,0, + -0.621651,0.783294,0,1.988483,0.904782,0, + -0.671559,0.740951,0,2.044472,0.955528,0, + -0.646965,0.76252,0,1.988483,0.904782,1.5, + -0.671559,0.740951,0,2.044472,0.955528,1.5, + 0,0,1,1.5,1.5,3, + 0,0,1,0.733708,1.575473,3, + 0,0,1,0.73,1.5,3, + 0,0,1,0.733708,1.575473,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.744795,1.65022,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.763156,1.723519,3, + 0,0,1,0.744795,1.65022,3, + 0,0,1,0.763156,1.723519,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.788613,1.794666,3, + 0,0,1,1.424527,0.733708,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.34978,0.744795,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.424527,0.733708,3, + 0,0,1,1.5,0.73,3, + 0,0,1,1.276481,0.763156,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.205334,0.788613,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.276481,0.763156,3, + 0,0,1,1.34978,0.744795,3, + 0,0,1,2.140232,1.072211,3, + 0,0,1,2.211387,1.205334,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.211387,1.205334,3, + 0,0,1,2.140232,1.072211,3, + 0,0,1,2.179079,1.137025,3, + 0,0,1,1.137025,0.820921,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.072211,0.859768,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.137025,0.820921,3, + 0,0,1,1.205334,0.788613,3, + 0,0,1,1.575473,0.733708,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,0.73,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.575473,0.733708,3, + 0,0,1,1.65022,0.744795,3, + 0,0,1,1.65022,0.744795,3, + 0,0,1,1.794666,0.788613,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.794666,0.788613,3, + 0,0,1,1.65022,0.744795,3, + 0,0,1,1.723519,0.763156,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.788613,1.205334,3, + 0,0,1,0,0.87868,3, + 0,0,1,0.788613,1.205334,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.820921,1.137025,3, + 0,0,1,0.820921,1.137025,3, + 0,0,1,0,0.497732,3, + 0,0,1,0.859768,1.072211,3, + 0,0,1,0.904782,1.011517,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.859768,1.072211,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.904782,1.011517,3, + 0,0,1,0.955528,0.955528,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.820921,1.862975,3, + 0,0,1,0.788613,1.794666,3, + 0,0,1,0.820921,1.862975,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.859768,1.927789,3, + 0,0,1,2.211387,1.205334,3, + 0,0,1,2.255205,1.34978,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.255205,1.34978,3, + 0,0,1,2.211387,1.205334,3, + 0,0,1,2.236844,1.276481,3, + 0,0,1,1.927789,0.859768,3, + 0,0,1,2.044472,0.955528,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.044472,0.955528,3, + 0,0,1,1.927789,0.859768,3, + 0,0,1,1.988483,0.904782,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.236844,1.276481,3, + 0,0,1,2.211387,1.205334,3, + 0,0,1,2.236844,1.276481,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.255205,1.34978,3, + 0,0,1,2.255205,1.34978,3, + 0,0,1,3,0.87868,3, + 0,0,1,3,1.201631,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.205334,0.788613,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.205334,0.788613,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.276481,0.763156,3, + 0,0,1,1.276481,0.763156,3, + 0,0,1,1.201631,0,3, + 0,0,1,1.34978,0.744795,3, + 0,0,1,2.255205,1.65022,3, + 0,0,1,2.211387,1.794666,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.211387,1.794666,3, + 0,0,1,2.255205,1.65022,3, + 0,0,1,2.236844,1.723519,3, + 0,0,1,2.211387,1.794666,3, + 0,0,1,2.140232,1.927789,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.140232,1.927789,3, + 0,0,1,2.211387,1.794666,3, + 0,0,1,2.179079,1.862975,3, + 0,0,1,2.27,1.5,3, + 0,0,1,2.255205,1.65022,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.255205,1.65022,3, + 0,0,1,2.27,1.5,3, + 0,0,1,2.266292,1.575473,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.862975,0.820921,3, + 0,0,1,1.794666,0.788613,3, + 0,0,1,1.862975,0.820921,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.927789,0.859768,3, + 0,0,1,1.927789,0.859768,3, + 0,0,1,2.12132,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.723519,2.236844,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.65022,2.255205,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.723519,2.236844,3, + 0,0,1,1.794666,2.211387,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.794666,2.211387,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.424527,2.266292,3, + 0,0,1,1.34978,2.255205,3, + 0,0,1,1.424527,2.266292,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,2.27,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.276481,2.236844,3, + 0,0,1,1.205334,2.211387,3, + 0,0,1,1.276481,2.236844,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.34978,2.255205,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.575473,2.266292,3, + 0,0,1,1.5,2.27,3, + 0,0,1,1.575473,2.266292,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.65022,2.255205,3, + 0,0,1,1.794666,2.211387,3, + 0,0,1,1.65022,2.255205,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.65022,2.255205,3, + 0,0,1,1.794666,2.211387,3, + 0,0,1,1.723519,2.236844,3, + 0,0,1,1.927789,2.140232,3, + 0,0,1,1.794666,2.211387,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.794666,2.211387,3, + 0,0,1,1.927789,2.140232,3, + 0,0,1,1.862975,2.179079,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.137025,2.179079,3, + 0,0,1,1.072211,2.140232,3, + 0,0,1,1.137025,2.179079,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.205334,2.211387,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.011517,2.095218,3, + 0,0,1,0.955528,2.044472,3, + 0,0,1,1.011517,2.095218,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.072211,2.140232,3, + 0,0,1,1.072211,2.140232,3, + 0,0,1,0.87868,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.072211,2.140232,3, + 0,0,1,1.137025,2.179079,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.137025,2.179079,3, + 0,0,1,1.205334,2.211387,3, + 0,0,1,0.733708,1.424527,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.73,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.733708,1.424527,3, + 0,0,1,0.744795,1.34978,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.788613,1.794666,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.788613,1.794666,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.763156,1.723519,3, + 0,0,1,0.763156,1.723519,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.744795,1.65022,3, + 0,0,1,2.044472,2.044472,3, + 0,0,1,1.927789,2.140232,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.927789,2.140232,3, + 0,0,1,2.044472,2.044472,3, + 0,0,1,1.988483,2.095218,3, + 0,0,1,2.255205,1.34978,3, + 0,0,1,2.27,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.27,1.5,3, + 0,0,1,2.255205,1.34978,3, + 0,0,1,2.266292,1.424527,3, + 0,0,1,1.794666,0.788613,3, + 0,0,1,1.927789,0.859768,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.927789,0.859768,3, + 0,0,1,1.794666,0.788613,3, + 0,0,1,1.862975,0.820921,3, + 0,0,1,2.179079,1.862975,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.140232,1.927789,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.179079,1.862975,3, + 0,0,1,2.211387,1.794666,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.211387,1.794666,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.044472,0.955528,3, + 0,0,1,2.140232,1.072211,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.140232,1.072211,3, + 0,0,1,2.044472,0.955528,3, + 0,0,1,2.095218,1.011517,3, + 0,0,1,0.820921,1.137025,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.788613,1.205334,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.820921,1.137025,3, + 0,0,1,0.859768,1.072211,3, + 0,0,1,1.011517,0.904782,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.955528,0.955528,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.011517,0.904782,3, + 0,0,1,1.072211,0.859768,3, + 0,0,1,0.763156,1.276481,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.744795,1.34978,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.763156,1.276481,3, + 0,0,1,0.788613,1.205334,3, + 0,0,1,2.140232,1.927789,3, + 0,0,1,2.044472,2.044472,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.044472,2.044472,3, + 0,0,1,2.140232,1.927789,3, + 0,0,1,2.095218,1.988483,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.904782,1.988483,3, + 0,0,1,0.859768,1.927789,3, + 0,0,1,0.904782,1.988483,3, + 0,0,1,1.5,1.5,3, + 0,0,1,0.955528,2.044472,3, + 0,0,-1,3,3,0, + 0,0,-1,2.095218,1.988483,0, + 0,0,-1,2.044472,2.044472,0, + 0,0,-1,2.095218,1.988483,0, + 0,0,-1,3,3,0, + 0,0,-1,2.140232,1.927789,0, + 0,0,-1,2.140232,1.927789,0, + 0,0,-1,3,3,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.575473,2.266292,0, + 0,0,-1,1.5,2.27,0, + 0,0,-1,1.575473,2.266292,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.575473,2.266292,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.65022,2.255205,0, + 0,0,-1,2.266292,1.424527,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.255205,1.34978,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.266292,1.424527,0, + 0,0,-1,2.27,1.5,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.27,1.5,0, + 0,0,-1,3,1.5,0, + 0,0,-1,1.34978,0.744795,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.201631,0,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.34978,0.744795,0, + 0,0,-1,1.424527,0.733708,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.424527,0.733708,0, + 0,0,-1,1.5,0.73,0, + 0,0,-1,1.988483,0.904782,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.927789,0.859768,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.988483,0.904782,0, + 0,0,-1,2.044472,0.955528,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,2.044472,0.955528,0, + 0,0,-1,3,0,0, + 0,-0.447214,-0.894427,2.502268,0,0, + 0.794104,0.232588,-0.561517,3,0,0, + 0,-1,0,2.795,0,0, + 0,0,-1,0.744795,1.65022,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,1.798369,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.744795,1.65022,0, + 0,0,-1,0.733708,1.575473,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.733708,1.575473,0, + 0,0,-1,0.73,1.5,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.955528,2.044472,0, + 0,0,-1,0,3,0, + 0,0,-1,0.955528,2.044472,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.955528,2.044472,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.011517,2.095218,0, + 0,0,-1,1.011517,2.095218,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,1.072211,2.140232,0, + 0,0,-1,0.859768,1.072211,0, + 0,0,-1,0,0,0, + 0,0,-1,0,0.497732,0, + 0,0,-1,0,0,0, + 0,0,-1,0.859768,1.072211,0, + 0,0,-1,0.904782,1.011517,0, + 0,0,-1,0,0,0, + 0,0,-1,0.904782,1.011517,0, + 0,0,-1,0.955528,0.955528,0, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.12132,0,2.17368, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.12132,0,2.17368, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.12132,0,2.795, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0, + 0,-1,0,2.502268,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.12132,0,0.205, + 0,-1,0,2.795,0,3, + 0,-1,0,2.12132,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.12132,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,2.12132,0,3, + -0.269347,-0.403107,0.874618,2.12132,0,3, + 0,-1,0,2.795,0,3, + 0,0,1,2.502268,0,3, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.12132,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,2.12132,0,0.205, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.12132,0,0.82632, + 0,-1,0,1.5,0,0.205, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,1.201631,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.87868,0,0, + 0,-1,0,0.87868,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.87868,0,0.205, + 0,-1,0,0.87868,0,2.795, + 0,-1,0,0.87868,0,2.17368, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.87868,0,0.82632, + 0,-1,0,0.87868,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,3,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,3, + 0,-1,0,2.795,0,3, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0, + 0,-1,0,3,0,0, + 0,-1,0,2.795,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.87868,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.87868,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.87868,0,3, + 0,0,1,0.87868,0,3, + 0,0,1,1.5,0,3, + 0,0,1,1.201631,0,3, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,1,0,1.5,3,0.205, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.12132,3,0, + 0,1,0,2.12132,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.12132,3,0.205, + 0,1,0,2.12132,3,2.795, + 0,1,0,2.12132,3,2.17368, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,2.12132,3,0.82632, + 0,1,0,1.5,3,0.205, + 0,1,0,2.12132,3,0.82632, + 0,1,0,1.5,3,2.795, + 0,1,0,2.12132,3,2.17368, + 0,1,0,1.5,3,3, + 0,1,0,2.12132,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,2.12132,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.12132,3,3, + 0.618034,0.412957,0.668955,2.12132,3,3, + -0.727607,0.485071,0.485071,1.5,3,3, + 0,0,1,1.798369,3,3, + 0,1,0,0.87868,3,2.17368, + 0,1,0,0.87868,3,0.82632, + 0,1,0,0.205,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0.87868,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0.87868,3,0.205, + 0,1,0,0.205,3,1.5, + 0,1,0,0.87868,3,0.82632, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,0.87868,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0.87868,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,0.87868,3,3, + 0.269347,0.403107,0.874618,0.87868,3,3, + 0,0.83205,0.5547,0.205,3,3, + 0,0,1,0.497732,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0.87868,3,2.17368, + 0,1,0,0.205,3,1.5, + 0,1,0,0.87868,3,2.17368, + 0,1,0,0.205,3,2.795, + 0,1,0,0.87868,3,2.795, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0.497732,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,0.87868,3,0, + 0,1,0,0.87868,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,0.87868,3,0.205, + 0,0,-1,2.211387,1.205334,1.5, + 0,0,-1,2.044472,0.955528,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.044472,0.955528,1.5, + 0,0,-1,2.211387,1.205334,1.5, + 0,0,-1,2.095218,1.011517,1.5, + 0,0,-1,2.095218,1.011517,1.5, + 0,0,-1,2.211387,1.205334,1.5, + 0,0,-1,2.140232,1.072211,1.5, + 0,0,-1,2.140232,1.072211,1.5, + 0,0,-1,2.211387,1.205334,1.5, + 0,0,-1,2.179079,1.137025,1.5, + 0.382683,0.92388,0,0.788613,1.794666,3, + 0.382683,0.92388,0,1.5,1.5,1.5, + 0.382683,0.92388,0,0.788613,1.794666,1.5, + 0.382683,0.92388,0,1.5,1.5,1.5, + 0.382683,0.92388,0,0.788613,1.794666,3, + 0.382683,0.92388,0,2.211387,1.205334,1.5, + 0.382683,0.92388,0,2.211387,1.205334,1.5, + 0.382683,0.92388,0,0.788613,1.794666,3, + 0.382683,0.92388,0,2.211387,1.205334,3, + 0,0,-1,2.211387,1.205334,3, + 0,0,-1,0.788613,1.794666,3, + 0,0,-1,1.5,1.5,3, + 0,0,-1,1.276481,2.236844,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.205334,2.211387,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.276481,2.236844,1.5, + 0,0,-1,1.34978,2.255205,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.34978,2.255205,1.5, + 0,0,-1,1.424527,2.266292,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.424527,2.266292,1.5, + 0,0,-1,1.5,2.27,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.733708,1.424527,1.5, + 0,0,-1,0.73,1.5,1.5, + 0,0,-1,0.733708,1.424527,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.744795,1.34978,1.5, + 0,0,-1,0.744795,1.34978,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.763156,1.276481,1.5, + 0,0,-1,0.763156,1.276481,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.788613,1.205334,1.5, + 0.92388,-0.382683,0,1.5,1.5,1.5, + 0.92388,-0.382683,0,1.205334,0.788613,3, + 0.92388,-0.382683,0,1.205334,0.788613,1.5, + 0.92388,-0.382683,0,1.205334,0.788613,3, + 0.92388,-0.382683,0,1.5,1.5,1.5, + 0.92388,-0.382683,0,1.5,1.5,3, + 0.92388,-0.382683,0,1.5,1.5,3, + 0.92388,-0.382683,0,1.5,1.5,1.5, + 0.92388,-0.382683,0,1.794666,2.211387,1.5, + 0.92388,-0.382683,0,1.5,1.5,3, + 0.92388,-0.382683,0,1.794666,2.211387,1.5, + 0.92388,-0.382683,0,1.794666,2.211387,3, + 0,0,-1,1.011517,2.095218,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.955528,2.044472,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.011517,2.095218,1.5, + 0,0,-1,1.072211,2.140232,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.072211,2.140232,1.5, + 0,0,-1,1.137025,2.179079,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.137025,2.179079,1.5, + 0,0,-1,1.205334,2.211387,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.276481,0.763156,1.5, + 0,0,-1,1.205334,0.788613,1.5, + 0,0,-1,1.276481,0.763156,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.34978,0.744795,1.5, + 0,0,-1,1.34978,0.744795,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.424527,0.733708,1.5, + 0,0,-1,1.424527,0.733708,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.5,0.73,1.5, + 0.980785,0.19509,0,1.5,1.5,1.5, + 0.92388,0.382683,0,1.794666,0.788613,3, + 0.92388,0.382683,0,1.794666,0.788613,1.5, + 0.92388,0.382683,0,1.794666,0.788613,3, + 0.980785,0.19509,0,1.5,1.5,1.5, + 0.980785,0.19509,0,1.5,1.5,3, + 0.980785,0.19509,0,1.5,1.5,3, + 0.980785,0.19509,0,1.5,1.5,1.5, + 0.92388,0.382683,0,1.205334,2.211387,1.5, + 0.980785,0.19509,0,1.5,1.5,3, + 0.92388,0.382683,0,1.205334,2.211387,1.5, + 0.92388,0.382683,0,1.205334,2.211387,3, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.011517,0.904782,1.5, + 0,0,-1,0.955528,0.955528,1.5, + 0,0,-1,1.011517,0.904782,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.072211,0.859768,1.5, + 0,0,-1,1.072211,0.859768,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.137025,0.820921,1.5, + 0,0,-1,1.137025,0.820921,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.205334,0.788613,1.5, + 0,0,-1,2.27,1.5,1.5, + 0,0,-1,2.211387,1.205334,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.211387,1.205334,1.5, + 0,0,-1,2.27,1.5,1.5, + 0,0,-1,2.236844,1.276481,1.5, + 0,0,-1,2.236844,1.276481,1.5, + 0,0,-1,2.27,1.5,1.5, + 0,0,-1,2.255205,1.34978,1.5, + 0,0,-1,2.255205,1.34978,1.5, + 0,0,-1,2.27,1.5,1.5, + 0,0,-1,2.266292,1.424527,1.5, + -0.382683,0.92388,0,0.788613,1.205334,3, + -0.382683,0.92388,0,1.5,1.5,1.5, + -0.382683,0.92388,0,0.788613,1.205334,1.5, + -0.382683,0.92388,0,1.5,1.5,1.5, + -0.382683,0.92388,0,0.788613,1.205334,3, + -0.382683,0.92388,0,2.211387,1.794666,1.5, + -0.382683,0.92388,0,2.211387,1.794666,1.5, + -0.382683,0.92388,0,0.788613,1.205334,3, + -0.382683,0.92388,0,2.211387,1.794666,3, + 0,0,1,2.211387,1.794666,3, + 0,0,1,0.788613,1.205334,3, + 0,0,1,1.5,1.5,3, + 0,0,-1,2.211387,1.794666,1.5, + 0,0,-1,2.27,1.5,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.27,1.5,1.5, + 0,0,-1,2.211387,1.794666,1.5, + 0,0,-1,2.236844,1.723519,1.5, + 0,0,-1,2.27,1.5,1.5, + 0,0,-1,2.236844,1.723519,1.5, + 0,0,-1,2.255205,1.65022,1.5, + 0,0,-1,2.27,1.5,1.5, + 0,0,-1,2.255205,1.65022,1.5, + 0,0,-1,2.266292,1.575473,1.5, + 0,0,-1,0.733708,1.575473,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.73,1.5,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.733708,1.575473,1.5, + 0,0,-1,0.744795,1.65022,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.744795,1.65022,1.5, + 0,0,-1,0.763156,1.723519,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.763156,1.723519,1.5, + 0,0,-1,0.788613,1.794666,1.5, + 0,-1,0,2.27,1.5,3, + 0,-1,0,1.5,1.5,1.5, + 0,-1,0,2.27,1.5,1.5, + 0,-1,0,1.5,1.5,1.5, + 0,-1,0,2.27,1.5,3, + 0,-1,0,0.73,1.5,1.5, + 0,-1,0,0.73,1.5,1.5, + 0,-1,0,2.27,1.5,3, + 0,-1,0,0.73,1.5,3, + -0.404462,-0.42482,0.8099,0.73,1.5,3, + 0.302501,-0.288004,0.908596,2.27,1.5,3, + 0.154098,-0.097337,0.983249,1.5,1.5,3, + 0,0,-1,0.820921,1.862975,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.788613,1.794666,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.820921,1.862975,1.5, + 0,0,-1,0.859768,1.927789,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.859768,1.927789,1.5, + 0,0,-1,0.904782,1.988483,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.904782,1.988483,1.5, + 0,0,-1,0.955528,2.044472,1.5, + 0,0,-1,2.044472,0.955528,1.5, + 0,0,-1,1.794666,0.788613,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.794666,0.788613,1.5, + 0,0,-1,2.044472,0.955528,1.5, + 0,0,-1,1.862975,0.820921,1.5, + 0,0,-1,1.862975,0.820921,1.5, + 0,0,-1,2.044472,0.955528,1.5, + 0,0,-1,1.927789,0.859768,1.5, + 0,0,-1,1.927789,0.859768,1.5, + 0,0,-1,2.044472,0.955528,1.5, + 0,0,-1,1.988483,0.904782,1.5, + -0.707107,-0.707107,0,1.5,1.5,3, + -0.707107,-0.707107,0,2.044472,0.955528,1.5, + -0.707107,-0.707107,0,2.044472,0.955528,3, + -0.707107,-0.707107,0,2.044472,0.955528,1.5, + -0.707107,-0.707107,0,1.5,1.5,3, + -0.707107,-0.707107,0,1.5,1.5,1.5, + -0.707107,-0.707107,0,1.5,1.5,1.5, + -0.707107,-0.707107,0,1.5,1.5,3, + -0.707107,-0.707107,0,0.955528,2.044472,1.5, + -0.707107,-0.707107,0,0.955528,2.044472,1.5, + -0.707107,-0.707107,0,1.5,1.5,3, + -0.707107,-0.707107,0,0.955528,2.044472,3, + 0,0,-1,1.794666,0.788613,1.5, + 0,0,-1,1.5,0.73,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.5,0.73,1.5, + 0,0,-1,1.794666,0.788613,1.5, + 0,0,-1,1.575473,0.733708,1.5, + 0,0,-1,1.575473,0.733708,1.5, + 0,0,-1,1.794666,0.788613,1.5, + 0,0,-1,1.65022,0.744795,1.5, + 0,0,-1,1.65022,0.744795,1.5, + 0,0,-1,1.794666,0.788613,1.5, + 0,0,-1,1.723519,0.763156,1.5, + 0,0,-1,1.575473,2.266292,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.5,2.27,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,1.575473,2.266292,1.5, + 0,0,-1,1.794666,2.211387,1.5, + 0,0,-1,1.794666,2.211387,1.5, + 0,0,-1,1.575473,2.266292,1.5, + 0,0,-1,1.65022,2.255205,1.5, + 0,0,-1,1.794666,2.211387,1.5, + 0,0,-1,1.65022,2.255205,1.5, + 0,0,-1,1.723519,2.236844,1.5, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,0.73,3, + 1,0,0,1.5,0.73,1.5, + 1,0,0,1.5,0.73,3, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,1.5,3, + 1,0,0,1.5,1.5,3, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,2.27,1.5, + 1,0,0,1.5,1.5,3, + 1,0,0,1.5,2.27,1.5, + 1,0,0,1.5,2.27,3, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.820921,1.137025,1.5, + 0,0,-1,0.788613,1.205334,1.5, + 0,0,-1,0.820921,1.137025,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.859768,1.072211,1.5, + 0,0,-1,0.859768,1.072211,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.904782,1.011517,1.5, + 0,0,-1,0.904782,1.011517,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,0.955528,0.955528,1.5, + 0,0,-1,1.794666,2.211387,1.5, + 0,0,-1,2.044472,2.044472,1.5, + 0,0,-1,1.5,1.5,1.5, + 0,0,-1,2.044472,2.044472,1.5, + 0,0,-1,1.794666,2.211387,1.5, + 0,0,-1,1.862975,2.179079,1.5, + 0,0,-1,2.044472,2.044472,1.5, + 0,0,-1,1.862975,2.179079,1.5, + 0,0,-1,1.927789,2.140232,1.5, + 0,0,-1,2.044472,2.044472,1.5, + 0,0,-1,1.927789,2.140232,1.5, + 0,0,-1,1.988483,2.095218,1.5, + 0.83147,-0.55557,0,1.5,1.5,1.5, + 0.707107,-0.707107,0,0.955528,0.955528,3, + 0.707107,-0.707107,0,0.955528,0.955528,1.5, + 0.707107,-0.707107,0,0.955528,0.955528,3, + 0.83147,-0.55557,0,1.5,1.5,1.5, + 0.83147,-0.55557,0,1.5,1.5,3, + 0.83147,-0.55557,0,1.5,1.5,3, + 0.83147,-0.55557,0,1.5,1.5,1.5, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.83147,-0.55557,0,1.5,1.5,3, + 0.707107,-0.707107,0,2.044472,2.044472,1.5, + 0.707107,-0.707107,0,2.044472,2.044472,3 +}; +static const struct gllist lament_model_star_u_frame = { GL_N3F_V3F, GL_TRIANGLES, 1608, lament_model_star_u_data, 0 }; +const struct gllist *lament_model_star_u = &lament_model_star_u_frame; + +static const float lament_model_taser_a_data[] = { + -1,0,0,0,1.5,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.5,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.5,3, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,1.798369,3, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.12132,3, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.502268,3, + -1,0,0,0,2.795,3, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,1.5,1.5, + -0.639602,0.639602,-0.426401,0,1.5,2.795, + -0.57735,0.57735,0.57735,0,1.5,2.277, + 0,1,0,0.205,3,1.5, + 0,1,0,0.53125,3,0.723, + 0,1,0,0.205,3,0.723, + 0,1,0,0.53125,3,0.723, + 0,1,0,0.205,3,1.5, + 0,1,0,0.53125,3,0.982, + 0,1,0,0.53125,3,0.982, + 0,1,0,0.205,3,1.5, + 0,1,0,0.53125,3,1.17375, + 1,0,0,0.777,3,2.795, + 1,0,0,0.777,1.5,3, + 1,0,0,0.777,1.5,2.795, + 1,0,0,0.777,1.5,3, + 1,0,0,0.777,3,2.795, + 1,0,0,0.777,1.643814,3, + 1,0,0,0.777,1.643814,3, + 1,0,0,0.777,3,2.795, + 1,0,0,0.777,1.799476,3, + 1,0,0,0.777,1.799476,3, + 1,0,0,0.777,3,2.795, + 1,0,0,0.777,1.983093,3, + 1,0,0,0.777,1.983093,3, + 1,0,0,0.777,3,2.795, + 1,0,0,0.777,2.223,3, + 1,0,0,0.777,2.223,3, + 1,0,0,0.777,3,2.795, + 1,0,0,0.777,2.582046,3, + 1,0,0,0.777,2.582046,3, + 1,0,0,0.777,3,2.795, + 1,0,0,0.777,3,3, + 0,-1,0,1.295,0,3, + 0,-1,0,0,0,0, + 0,-1,0,1.295,0,0, + 0,-1,0,0,0,0, + 0,-1,0,1.295,0,3, + 0,-1,0,0,0,0.205, + 0,-1,0,0,0,0.205, + 0,-1,0,1.295,0,3, + 0,-1,0,0,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,1.295,0,3, + 0,-1,0,0,0,2.795, + 0,-1,0,0,0,2.795, + 0,-1,0,1.295,0,3, + 0,-1,0,0,0,3, + 0,0,1,0.777,1.983093,3, + 0,0,1,0,2.795,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.795,3, + 0,0,1,0.777,1.983093,3, + 0,0,1,0,3,3, + 0,0,1,0,3,3, + 0,0,1,0.777,1.983093,3, + 0,0,1,0.777,2.223,3, + -1,0,0,0,3,1.5, + -1,0,0,0,2.795,0.723, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,0.723, + -1,0,0,0,3,1.5, + -1,0,0,0,3,0.723, + 1,0,0,0.53125,3,2.018, + 1,0,0,0.53125,1.5,2.277, + 1,0,0,0.53125,1.5,2.018, + 1,0,0,0.53125,1.5,2.277, + 1,0,0,0.53125,3,2.018, + 1,0,0,0.53125,3,2.277, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,3, + -1,0,0,0,0.205,3, + 0,1,0,0,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,3, + 0,1,0,0.205,3,3, + 0,1,0,0.53125,3,1.82625, + 0,1,0,0.796875,3,1.5, + 0,1,0,0.53125,3,1.5, + 0,1,0,0.796875,3,1.5, + 0,1,0,0.53125,3,1.82625, + 0,1,0,0.796875,3,1.759, + 0,1,0,0.796875,3,1.759, + 0,1,0,0.53125,3,1.82625, + 0,1,0,0.796875,3,2.018, + 0,1,0,0.796875,3,2.018, + 0,1,0,0.53125,3,1.82625, + 0,1,0,0.723,3,2.018, + 0,0,-1,0.723,3,0.982, + 0,0,-1,0.53125,1.5,0.982, + 0,0,-1,0.53125,3,0.982, + 0,0,-1,0.53125,1.5,0.982, + 0,0,-1,0.723,3,0.982, + 0,0,-1,0.796875,1.5,0.982, + 0,0,-1,0.796875,1.5,0.982, + 0,0,-1,0.723,3,0.982, + 0,0,-1,0.796875,3,0.982, + 0,0,-1,0.205,3,2.795, + 0,0,-1,0,2.795,2.795, + 0,0,-1,0,3,2.795, + 0,0,-1,0,2.795,2.795, + 0,0,-1,0.205,3,2.795, + 0,0,-1,0,1.5,2.795, + 0,0,-1,0,1.5,2.795, + 0,0,-1,0.205,3,2.795, + 0,0,-1,0.777,1.5,2.795, + 0,0,-1,0.777,1.5,2.795, + 0,0,-1,0.205,3,2.795, + 0,0,-1,0.777,3,2.795, + 1,0,0,1.295,1.5,0, + 1,0,0,1.295,0,3, + 1,0,0,1.295,0,0, + 1,0,0,1.295,0,3, + 1,0,0,1.295,1.5,0, + 1,0,0,1.295,1.5,3, + 0,0,-1,0.777,1.983093,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0.777,1.983093,0, + 0,0,-1,0.777,1.799476,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,0.205,0, + -1,0,0,0,1.5,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0,1.5, + -1,0,0,0,0,0.205, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,0.205, + 1,0,0,0.53125,3,0.723, + 1,0,0,0.53125,1.5,0.982, + 1,0,0,0.53125,1.5,0.723, + 1,0,0,0.53125,1.5,0.982, + 1,0,0,0.53125,3,0.723, + 1,0,0,0.53125,3,0.982, + 0,0,1,0.53125,1.5,2.277, + 0,0,1,0,2.277,2.277, + 0,0,1,0,1.5,2.277, + 0,0,1,0,2.277,2.277, + 0,0,1,0.53125,1.5,2.277, + 0,0,1,0,2.795,2.277, + 0,0,1,0,2.795,2.277, + 0,0,1,0.53125,1.5,2.277, + 0,0,1,0,3,2.277, + 0,0,1,0,3,2.277, + 0,0,1,0.53125,1.5,2.277, + 0,0,1,0.205,3,2.277, + 0,0,1,0.205,3,2.277, + 0,0,1,0.53125,1.5,2.277, + 0,0,1,0.53125,3,2.277, + 1,0,0,0.796875,3,1.759, + 1,0,0,0.796875,1.5,2.018, + 1,0,0,0.796875,1.5,1.759, + 1,0,0,0.796875,1.5,2.018, + 1,0,0,0.796875,3,1.759, + 1,0,0,0.796875,3,2.018, + 0,1,0,0.796875,3,1.5, + 0,1,0,1.0625,3,1.241, + 0,1,0,0.796875,3,1.241, + 0,1,0,1.0625,3,1.241, + 0,1,0,0.796875,3,1.5, + 0,1,0,1.0625,3,1.5, + 0,0,1,0.777,1.799476,3, + 0,0,1,0,2.502268,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,2.502268,3, + 0,0,1,0.777,1.799476,3, + 0,0,1,0.777,1.983093,3, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,0.723, + 0,1,0,0,3,0.723, + 0,1,0,0.205,3,0.723, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 1,0,0,0.796875,3,0.982, + 1,0,0,0.796875,1.5,1.241, + 1,0,0,0.796875,1.5,0.982, + 1,0,0,0.796875,1.5,1.241, + 1,0,0,0.796875,3,0.982, + 1,0,0,0.796875,3,1.241, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0,2.795, + -1,0,0,0,0,1.5, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,1.5, + 0,0,1,1.0625,1.5,1.759, + 0,0,1,0.796875,3,1.759, + 0,0,1,0.796875,1.5,1.759, + 0,0,1,0.796875,3,1.759, + 0,0,1,1.0625,1.5,1.759, + 0,0,1,1.0625,3,1.759, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,3,0.205, + -1,0,0,0,3,2.277, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,2.277, + -1,0,0,0,2.795,1.5, + -1,0,0,0,3,2.277, + -1,0,0,0,3,1.5, + 0,1,0,0.205,3,3, + 0,1,0,0.777,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0.777,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,0.777,3,3, + 0.57735,0.57735,0.57735,0.777,3,3, + 0,0.83205,0.5547,0.205,3,3, + 0,0,1,0.259,3,3, + 0.57735,0.57735,0.57735,0.777,3,3, + 0,0,1,0.259,3,3, + 0,0,1,0.497732,3,3, + 0.57735,0.57735,0.57735,0.777,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.518,3,3, + 0,1,0,0.53125,3,1.17375, + 0,1,0,0.723,3,0.982, + 0,1,0,0.53125,3,0.982, + -1,0,0,0,1.5,1.5, + -1,0,0,0,1.5,0.205, + -1,0,0,0,0.205,0.205, + -0.588348,0.784465,0.196116,0,1.5,0.205, + -1,0,0,0,1.5,1.5, + -0.408248,0.408248,-0.816497,0,1.5,0.723, + 0,0,1,0.777,1.5,0.205, + 0,0,1,0,2.795,0.205, + 0,0,1,0,1.5,0.205, + 0,0,1,0,2.795,0.205, + 0,0,1,0.777,1.5,0.205, + 0,0,1,0,3,0.205, + 0,0,1,0,3,0.205, + 0,0,1,0.777,1.5,0.205, + 0,0,1,0.205,3,0.205, + 0,0,1,0.205,3,0.205, + 0,0,1,0.777,1.5,0.205, + 0,0,1,0.777,3,0.205, + 0,0,1,0.796875,1.5,2.018, + 0,0,1,0.53125,3,2.018, + 0,0,1,0.53125,1.5,2.018, + 0,0,1,0.53125,3,2.018, + 0,0,1,0.796875,1.5,2.018, + 0,0,1,0.723,3,2.018, + 0,0,1,0.723,3,2.018, + 0,0,1,0.796875,1.5,2.018, + 0,0,1,0.796875,3,2.018, + -1,0,0,0,2.795,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.12132,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.502268,0, + -1,0,0,0,2.795,0.205, + -1,0,0,0,2.795,0, + 0,0,1,0.777,1.643814,3, + 0,0,1,0,2.12132,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,2.12132,3, + 0,0,1,0.777,1.643814,3, + 0,0,1,0.777,1.799476,3, + 0,0,-1,0.777,1.799476,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,2.12132,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0.777,1.799476,0, + 0,0,-1,0.777,1.5,0, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0,0, + -1,0,0,0,0,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0.777,3,0, + 0,1,0,0.497732,3,0, + 0,1,0,0.777,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0.777,3,0.205, + 0,1,0,0.777,3,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0.205,3,0.205, + -1,0,0,0,3,0, + -1,0,0,0,2.795,0, + -1,0,0,0,2.795,0.205, + 0,0,-1,0.205,3,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,0,3,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,0.205,3,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,0.497732,3,0, + 0,0,-1,0.777,2.582046,0, + 0,1,0,0.53125,3,1.82625, + 0,1,0,0.53125,3,1.5, + 0,1,0,0.205,3,1.5, + 0,0,1,0.777,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.798369,3, + 0,0,1,0.777,1.5,3, + 0,0,1,0.777,1.643814,3, + 0,1,0,0.723,3,2.018, + 0,1,0,0.53125,3,1.82625, + 0,1,0,0.53125,3,2.018, + 0,1,0,0.53125,3,1.17375, + 0,1,0,0.796875,3,0.982, + 0,1,0,0.723,3,0.982, + 0,1,0,0.796875,3,0.982, + 0,1,0,0.53125,3,1.17375, + 0,1,0,0.796875,3,1.241, + 0,1,0,0.796875,3,1.241, + 0,1,0,0.53125,3,1.17375, + 0,1,0,0.53125,3,1.5, + 0,1,0,0.796875,3,1.241, + 0,1,0,0.53125,3,1.5, + 0,1,0,0.796875,3,1.5, + 0,0,-1,0.777,3,0, + 0,0,-1,0.777,2.582046,0, + 0,0,-1,0.497732,3,0, + -1,0,0,0,1.5,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0.205,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,1.5,3, + -1,0,0,0,1.5,2.795, + 0,0,-1,0.205,3,0.723, + 0,0,-1,0,2.795,0.723, + 0,0,-1,0,3,0.723, + 0,0,-1,0,2.795,0.723, + 0,0,-1,0.205,3,0.723, + 0,0,-1,0,2.277,0.723, + 0,0,-1,0,2.277,0.723, + 0,0,-1,0.205,3,0.723, + 0,0,-1,0,1.5,0.723, + 0,0,-1,0,1.5,0.723, + 0,0,-1,0.205,3,0.723, + 0,0,-1,0.53125,1.5,0.723, + 0,0,-1,0.53125,1.5,0.723, + 0,0,-1,0.205,3,0.723, + 0,0,-1,0.53125,3,0.723, + -1,0,0,0,2.277,0.723, + -1,0,0,0,1.5,0.723, + -1,0,0,0,1.5,1.5, + -1,0,0,0,3,3, + -1,0,0,0,2.795,2.795, + -1,0,0,0,2.795,3, + 0,1,0,0.205,3,2.277, + 0,1,0,0.53125,3,1.82625, + 0,1,0,0.205,3,1.5, + 0,1,0,0.53125,3,1.82625, + 0,1,0,0.205,3,2.277, + 0,1,0,0.53125,3,2.018, + 0,1,0,0.53125,3,2.018, + 0,1,0,0.205,3,2.277, + 0,1,0,0.53125,3,2.277, + 1,0,0,1.0625,3,1.241, + 1,0,0,1.0625,1.5,1.759, + 1,0,0,1.0625,1.5,1.241, + 1,0,0,1.0625,1.5,1.759, + 1,0,0,1.0625,3,1.241, + 1,0,0,1.0625,3,1.759, + 0.57735,0.57735,0.57735,1.0625,3,1.759, + 0.57735,0.57735,-0.57735,1.0625,3,1.241, + 0,1,0,1.0625,3,1.5, + 0,1,0,0,3,2.277, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,2.277, + 0,1,0,0.205,3,2.277, + 1,0,0,0.777,1.799476,0, + 1,0,0,0.777,1.5,0.205, + 1,0,0,0.777,1.5,0, + 1,0,0,0.777,1.5,0.205, + 1,0,0,0.777,1.799476,0, + 1,0,0,0.777,3,0.205, + 1,0,0,0.777,3,0.205, + 1,0,0,0.777,1.799476,0, + 1,0,0,0.777,1.983093,0, + 1,0,0,0.777,3,0.205, + 1,0,0,0.777,1.983093,0, + 1,0,0,0.777,2.223,0, + 1,0,0,0.777,3,0.205, + 1,0,0,0.777,2.223,0, + 1,0,0,0.777,2.582046,0, + 1,0,0,0.777,3,0.205, + 1,0,0,0.777,2.582046,0, + 1,0,0,0.777,3,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0,3,0, + 0,0,-1,0,2.795,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0,2.502268,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,0.777,1.983093,0, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,0,1,0.777,2.223,3, + 0,0,1,0.205,3,3, + 0,0,1,0,3,3, + 0,0,1,0.205,3,3, + 0,0,1,0.777,2.223,3, + 0,0,1,0.259,3,3, + 0,0,1,0.259,3,3, + 0,0,1,0.777,2.223,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.777,2.223,3, + 0,0,1,0.777,2.582046,3, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.205,1.5, + -1,0,0,0,0.205,2.795, + 0,1,0,0.53125,3,1.5, + 0,1,0,0.53125,3,1.17375, + 0,1,0,0.205,3,1.5, + -1,0,0,0,2.277,2.277, + -1,0,0,0,2.795,1.5, + -1,0,0,0,1.5,1.5, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.277,2.277, + -1,0,0,0,2.795,2.277, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,0, + -1,0,0,0,0,0, + 0,0,-1,1.0625,3,1.241, + 0,0,-1,0.796875,1.5,1.241, + 0,0,-1,0.796875,3,1.241, + 0,0,-1,0.796875,1.5,1.241, + 0,0,-1,1.0625,3,1.241, + 0,0,-1,1.0625,1.5,1.241, + -1,0,0,0,3,2.795, + -1,0,0,0,2.795,2.795, + -1,0,0,0,3,3, + 0,0,1,0.777,2.582046,3, + 0,0,1,0.518,3,3, + 0,0,1,0.497732,3,3, + 0,0,1,0.518,3,3, + 0,0,1,0.777,2.582046,3, + 0,0,1,0.777,3,3, + -1,0,0,0,0.205,2.795, + -1,0,0,0,0,2.795, + -1,0,0,0,0,3, + 0,1,0,0.796875,3,1.759, + 0,1,0,1.0625,3,1.5, + 0,1,0,0.796875,3,1.5, + 0,1,0,1.0625,3,1.5, + 0,1,0,0.796875,3,1.759, + 0,1,0,1.0625,3,1.759, + 0,1,0,0.796875,1.5,2.018, + 0,1,0,1.0625,1.5,1.759, + 0,1,0,0.796875,1.5,1.759, + 0,1,0,0.53125,1.5,2.277, + 0,1,0,0.796875,1.5,2.018, + 0,1,0,0.53125,1.5,2.018, + 0,1,0,0,1.5,2.795, + 0,1,0,0.53125,1.5,2.277, + 0,1,0,0,1.5,2.277, + 0,1,0,0.777,1.5,0.205, + 0,1,0,1.295,1.5,0, + 0,1,0,0.777,1.5,0, + 0,1,0,1.295,1.5,0, + 0,1,0,0.777,1.5,0.205, + 0,1,0,1.0625,1.5,1.241, + 0,1,0,1.295,1.5,0, + 0,1,0,1.0625,1.5,1.241, + 0,1,0,1.295,1.5,3, + 0,1,0,1.0625,1.5,1.241, + 0,1,0,0.777,1.5,0.205, + 0,1,0,0.796875,1.5,0.982, + 0,1,0,0.796875,1.5,0.982, + 0,1,0,0.777,1.5,0.205, + 0,1,0,0,1.5,0.205, + 0.218218,0.872872,-0.436436,0.796875,1.5,0.982, + -0.588348,0.784465,0.196116,0,1.5,0.205, + 0.333333,0.666667,-0.666667,0.53125,1.5,0.723, + 0,1,0,0.53125,1.5,0.723, + 0,1,0,0,1.5,0.205, + 0,1,0,0,1.5,0.723, + 0,1,0,0.796875,1.5,0.982, + 0,1,0,0.53125,1.5,0.723, + 0,1,0,0.53125,1.5,0.982, + 0,1,0,1.0625,1.5,1.241, + 0,1,0,0.796875,1.5,0.982, + 0,1,0,0.796875,1.5,1.241, + 0,1,0,1.295,1.5,3, + 0,1,0,1.0625,1.5,1.241, + 0,1,0,1.0625,1.5,1.759, + 0,1,0,1.295,1.5,3, + 0,1,0,1.0625,1.5,1.759, + 0,1,0,0.796875,1.5,2.018, + 0,1,0,1.295,1.5,3, + 0,1,0,0.796875,1.5,2.018, + 0,1,0,0.53125,1.5,2.277, + 0,1,0,1.295,1.5,3, + 0,1,0,0.53125,1.5,2.277, + 0,1,0,0.777,1.5,2.795, + 0,1,0,0.777,1.5,2.795, + 0,1,0,0.53125,1.5,2.277, + 0,1,0,0,1.5,2.795, + 0,1,0,1.295,1.5,3, + 0,1,0,0.777,1.5,2.795, + 0,1,0,0.777,1.5,3, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.277,0.723, + -1,0,0,0,1.5,1.5, + -1,0,0,0,2.277,0.723, + -1,0,0,0,2.795,1.5, + -1,0,0,0,2.795,0.723, + -1,0,0,0,2.277,2.277, + -1,0,0,0,1.5,1.5, + -1,0,0,0,1.5,2.277, + -1,0,0,0,1.5,1.5, + -1,0,0,0,0.205,0.205, + -1,0,0,0,0.205,1.5, + 0,0,1,1.295,0,3, + 0,0,1,0,0.205,3, + 0,0,1,0,0,3, + 0,0,1,0,0.205,3, + 0,0,1,1.295,0,3, + 0,0,1,0,1.5,3, + 0,0,1,0,1.5,3, + 0,0,1,1.295,0,3, + 0,0,1,0.777,1.5,3, + 0,0,1,0.777,1.5,3, + 0,0,1,1.295,0,3, + 0,0,1,1.295,1.5,3, + 0,1,0,0,1.5,3, + 0,1,0,0.777,1.5,2.795, + 0,1,0,0,1.5,2.795, + 0,1,0,0.777,1.5,2.795, + 0,1,0,0,1.5,3, + 0,1,0,0.777,1.5,3, + 0,0,-1,0.777,1.5,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0,1.5,0, + 0,0,-1,0,0.205,0, + 0,0,-1,0.777,1.5,0, + 0,0,-1,0,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.777,1.5,0, + 0,0,-1,1.295,0,0, + 0,0,-1,1.295,0,0, + 0,0,-1,0.777,1.5,0, + 0,0,-1,1.295,1.5,0, + 0,1,0,0,1.5,0.205, + 0,1,0,0.777,1.5,0, + 0,1,0,0,1.5,0, + 0,1,0,0.777,1.5,0, + 0,1,0,0,1.5,0.205, + 0,1,0,0.777,1.5,0.205 +}; +static const struct gllist lament_model_taser_a_frame = { GL_N3F_V3F, GL_TRIANGLES, 582, lament_model_taser_a_data, 0 }; +const struct gllist *lament_model_taser_a = &lament_model_taser_a_frame; + +static const float lament_model_taser_b_data[] = { + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.777,2.223,3, + 0,0,1,0.777,1.983093,3, + 0,0,1,0.777,2.223,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.777,2.223,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.962599,2.037401,3, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.295,1.705,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,1.295,1.705,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.295,1.705,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.295,1.806804,0, + -1,0,0,0,3,0.205, + -1,0,0,0,1.5,0.205, + -1,0,0,0,3,0.464, + -1,0,0,0,3,0.723, + -1,0,0,0,1.5,0.205, + -1,0,0,0,1.5,0.723, + -1,0,0,0,1.5,0.205, + -1,0,0,0,3,0.723, + -1,0,0,0,3,0.464, + -1,0,0,0.53125,3,0.982, + -0.989278,0,-0.146043,0.53125,1.5,0.723, + -1,0,0,0.53125,1.5,0.982, + -0.989278,0,-0.146043,0.53125,1.5,0.723, + -1,0,0,0.53125,3,0.982, + -0.956392,0,-0.292087,0.53125,3,0.723, + 0,0,1,1.0625,1.5,1.241, + 0,0,1,0.796875,3,1.241, + 0,0,1,0.796875,1.5,1.241, + 0,0,1,0.796875,3,1.241, + 0,0,1,1.0625,1.5,1.241, + 0,0,1,1.0625,3,1.241, + 0,0,-1,1.0625,3,1.759, + 0,0,-1,0.796875,1.5,1.759, + 0,0,-1,0.796875,3,1.759, + 0,0,-1,0.796875,1.5,1.759, + 0,0,-1,1.0625,3,1.759, + 0,0,-1,1.0625,1.5,1.759, + -1,0,0,0.777,1.643814,3, + -1,0,0,0.777,1.5,2.795, + -1,0,0,0.777,1.5,3, + -1,0,0,0.777,1.5,2.795, + -1,0,0,0.777,1.643814,3, + -1,0,0,0.777,3,2.795, + -1,0,0,0.777,3,2.795, + -1,0,0,0.777,1.643814,3, + -1,0,0,0.777,1.732563,3, + -1,0,0,0.777,3,2.795, + -1,0,0,0.777,1.732563,3, + -1,0,0,0.777,1.799476,3, + -1,0,0,0.777,3,2.795, + -1,0,0,0.777,1.799476,3, + -1,0,0,0.777,1.983093,3, + -1,0,0,0.777,3,2.795, + -1,0,0,0.777,1.983093,3, + -1,0,0,0.777,2.223,3, + -1,0,0,0.777,3,2.795, + -1,0,0,0.777,2.223,3, + -1,0,0,0.777,2.582046,3, + -1,0,0,0.777,3,2.795, + -1,0,0,0.777,2.582046,3, + -1,0,0,0.777,3,3, + -1,0,0,0.53125,3,2.277, + -1,0,0,0.53125,1.5,2.018, + -1,0,0,0.53125,1.5,2.277, + -1,0,0,0.53125,1.5,2.018, + -1,0,0,0.53125,3,2.277, + -1,0,0,0.53125,3,2.018, + -1,0,0,0.796875,3,1.241, + -1,0,0,0.796875,1.5,0.982, + -1,0,0,0.796875,1.5,1.241, + -1,0,0,0.796875,1.5,0.982, + -1,0,0,0.796875,3,1.241, + -1,0,0,0.796875,3,0.982, + -1,0,0,1.0625,3,1.759, + -1,0,0,1.0625,1.5,1.5, + -1,0,0,1.0625,1.5,1.759, + -1,0,0,1.0625,1.5,1.5, + -1,0,0,1.0625,3,1.759, + -1,0,0,1.0625,1.5,1.241, + -1,0,0,1.0625,1.5,1.241, + -1,0,0,1.0625,3,1.759, + -1,0,0,1.0625,3,1.241, + -0.301511,0.904534,0.301511,1.0625,3,1.241, + -0.639602,0.639602,-0.426401,1.0625,3,1.759, + 0,1,0,1.0625,3,1.5, + -1,0,0,0.796875,3,2.018, + -1,0,0,0.796875,1.5,1.759, + -1,0,0,0.796875,1.5,2.018, + -1,0,0,0.796875,1.5,1.759, + -1,0,0,0.796875,3,2.018, + -1,0,0,0.796875,3,1.759, + 0,0,-1,0.723,3,2.018, + 0,0,-1,0.53125,1.5,2.018, + 0,0,-1,0.53125,3,2.018, + 0,0,-1,0.53125,1.5,2.018, + 0,0,-1,0.723,3,2.018, + 0,0,-1,0.796875,1.5,2.018, + 0,0,-1,0.796875,1.5,2.018, + 0,0,-1,0.723,3,2.018, + 0,0,-1,0.796875,3,2.018, + -1,0,0,0,3,2.795, + -1,0,0,0,1.5,2.277, + -1,0,0,0,1.5,2.795, + -1,0,0,0,1.5,2.277, + -1,0,0,0,3,2.795, + -1,0,0,0,3,2.277, + -0.57735,0.57735,-0.57735,0,3,2.277, + -0.666667,0.333333,0.666667,0,3,2.795, + 0,1,0,0,3,2.536, + 0,0,1,0.796875,1.5,0.982, + 0,0,1,0.53125,3,0.982, + 0,0,1,0.53125,1.5,0.982, + 0,0,1,0.53125,3,0.982, + 0,0,1,0.796875,1.5,0.982, + 0,0,1,0.723,3,0.982, + 0,0,1,0.723,3,0.982, + 0,0,1,0.796875,1.5,0.982, + 0,0,1,0.796875,3,0.982, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,1.295,1.636977,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,1.295,1.636977,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,1.295,1.636977,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,1.295,1.705,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.295,1.994914,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.295,1.994914,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.295,2.231186,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.295,1.806804,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.295,1.806804,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.295,1.806804,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.295,1.994914,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,1.295,1.584914,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,1.295,1.584914,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,1.295,1.584914,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,1.295,1.636977,0, + 0,0,-1,1.295,1.540777,0, + 0,0,-1,0.777,1.5,0, + 0,0,-1,0.777,1.643814,0, + 0,0,-1,0.777,1.5,0, + 0,0,-1,1.295,1.540777,0, + 0,0,-1,1.295,1.5,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.777,1.643814,0, + 0,0,-1,0.777,1.732563,0, + 0,0,-1,0.777,1.643814,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,1.295,1.540777,0, + 0,0,-1,1.295,1.540777,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,1.295,1.584914,0, + 0,0,-1,1.295,2.530605,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.295,3,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.201631,3,0, + 0,0,-1,1.295,2.530605,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,1.295,2.530605,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.279384,2.227275,0, + 0,0,-1,1.295,2.530605,0, + 0,0,-1,1.295,2.231186,0, + 0,0,-1,0.777,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.777,2.582046,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.777,3,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,1.141738,2.17026,0, + 0,0,-1,0.87868,3,0, + 0,0,-1,1.209161,2.202148,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.777,1.799476,0, + 0,0,-1,0.777,1.983093,0, + 0,0,-1,0.777,1.799476,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.777,1.799476,0, + 0,0,-1,0.82974,1.858262,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.777,1.983093,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,0.777,1.983093,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.777,1.983093,0, + 0,0,-1,0.912512,1.982139,0, + 0,0,-1,0.868083,1.922233,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,0.777,2.582046,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,1.077767,2.131917,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,0.777,2.223,0, + 0,0,-1,1.017861,2.087488,0, + 0,0,-1,0.962599,2.037401,0, + 0,0,-1,0.797852,1.790839,0, + 0,0,-1,0.777,1.732563,0, + 0,0,-1,0.777,1.799476,0, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.777,2.582046,3, + 0,0,1,0.777,2.223,3, + 0,0,1,0.777,2.582046,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.777,2.582046,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.777,1.983093,3, + 0,0,1,0.777,1.799476,3, + 0,0,1,0.777,1.983093,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.777,1.983093,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,1.295,1.5,3, + 0,0,1,0.777,1.643814,3, + 0,0,1,0.777,1.5,3, + 0,0,1,0.777,1.643814,3, + 0,0,1,1.295,1.5,3, + 0,0,1,1.295,1.540777,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,0.777,3,3, + 0,0,1,0.777,2.582046,3, + 0,0,1,0.777,3,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,0.87868,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.295,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.295,2.530605,3, + 0,0,1,1.295,1.705,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.017861,2.087488,3, + 0,0,1,1.295,1.705,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.295,1.705,3, + 0,0,1,1.295,1.806804,3, + 0,0,1,1.295,1.636977,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.912512,1.982139,3, + 0,0,1,1.295,1.636977,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,0.962599,2.037401,3, + 0,0,1,1.295,1.636977,3, + 0,0,1,1.295,1.705,3, + 0,0,1,1.295,1.806804,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.077767,2.131917,3, + 0,0,1,1.141738,2.17026,3, + 0,0,1,1.295,1.806804,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.295,1.806804,3, + 0,0,1,1.295,1.994914,3, + 0,0,1,1.295,1.584914,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.82974,1.858262,3, + 0,0,1,1.295,1.584914,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,0.868083,1.922233,3, + 0,0,1,1.295,1.584914,3, + 0,0,1,1.295,1.636977,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.036,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.036,3,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.295,2.530605,3, + 0,0,1,1.295,2.530605,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.295,2.530605,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.295,2.231186,3, + 0,0,1,1.295,1.994914,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.209161,2.202148,3, + 0,0,1,1.279384,2.227275,3, + 0,0,1,1.295,1.994914,3, + 0,0,1,1.295,2.231186,3, + 0,0,1,1.295,1.540777,3, + 0,0,1,0.777,1.732563,3, + 0,0,1,0.777,1.643814,3, + 0,0,1,0.777,1.732563,3, + 0,0,1,1.295,1.540777,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,1.295,1.540777,3, + 0,0,1,1.295,1.584914,3, + 0,0,1,0.797852,1.790839,3, + 0,0,1,0.777,1.799476,3, + 0,0,1,0.777,1.732563,3, + 0,0,1,0.777,1.5,2.795, + 0,0,1,0,3,2.795, + 0,0,1,0,1.5,2.795, + 0,0,1,0,3,2.795, + 0,0,1,0.777,1.5,2.795, + 0,0,1,0.205,3,2.795, + 0,0,1,0.205,3,2.795, + 0,0,1,0.777,1.5,2.795, + 0,0,1,0.777,3,2.795, + 0,0,-1,0.205,3,2.277, + 0,0,-1,0,1.5,2.277, + 0,0,-1,0,3,2.277, + 0,0,-1,0,1.5,2.277, + 0,0,-1,0.205,3,2.277, + 0,0,-1,0.53125,1.5,2.277, + 0,0,-1,0.53125,1.5,2.277, + 0,0,-1,0.205,3,2.277, + 0,0,-1,0.53125,3,2.277, + 0,0,1,0.53125,1.5,0.723, + 0,0,1,0,3,0.723, + 0,0,1,0,1.5,0.723, + 0,0,1,0,3,0.723, + 0,0,1,0.53125,1.5,0.723, + 0,0,1,0.205,3,0.723, + 0,0,1,0.205,3,0.723, + 0,0,1,0.53125,1.5,0.723, + 0,0,1,0.53125,3,0.723, + -0.998843,0,-0.048086,0.777,3,0.205, + -1,0,0,0.777,1.5,0, + -0.956392,0,-0.292087,0.777,1.5,0.205, + -1,0,0,0.777,1.5,0, + -0.998843,0,-0.048086,0.777,3,0.205, + -1,0,0,0.777,1.643814,0, + -1,0,0,0.777,1.643814,0, + -0.998843,0,-0.048086,0.777,3,0.205, + -1,0,0,0.777,1.732563,0, + -1,0,0,0.777,1.732563,0, + -0.998843,0,-0.048086,0.777,3,0.205, + -1,0,0,0.777,1.799476,0, + -1,0,0,0.777,1.799476,0, + -0.998843,0,-0.048086,0.777,3,0.205, + -1,0,0,0.777,1.983093,0, + -1,0,0,0.777,1.983093,0, + -0.998843,0,-0.048086,0.777,3,0.205, + -1,0,0,0.777,2.223,0, + -1,0,0,0.777,2.223,0, + -0.998843,0,-0.048086,0.777,3,0.205, + -1,0,0,0.777,2.582046,0, + -1,0,0,0.777,2.582046,0, + -0.998843,0,-0.048086,0.777,3,0.205, + -1,0,0,0.777,3,0, + 0,0,-1,0.205,3,0.205, + 0,0,-1,0,1.5,0.205, + 0,0,-1,0,3,0.205, + 0,0,-1,0,1.5,0.205, + 0,0,-1,0.205,3,0.205, + 0,0,-1,0.777,1.5,0.205, + 0,0,-1,0.777,1.5,0.205, + 0,0,-1,0.205,3,0.205, + 0,0,-1,0.777,3,0.205, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,2.530605,0, + 0.707107,0,-0.707107,1.295,3,0, + 0.707107,0,-0.707107,1.295,2.530605,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,2.231186,0, + 0.707107,0,-0.707107,1.295,2.231186,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,1.994914,0, + 0.707107,0,-0.707107,1.295,1.994914,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,1.806804,0, + 0.707107,0,-0.707107,1.295,1.806804,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,1.705,0, + 0.707107,0,-0.707107,1.295,1.705,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,1.636977,0, + 0.707107,0,-0.707107,1.295,1.636977,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,1.584914,0, + 0.707107,0,-0.707107,1.295,1.584914,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,1.540777,0, + 0.707107,0,-0.707107,1.295,1.540777,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,1.295,1.5,0, + 0.707107,0,-0.707107,1.295,1.5,0, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,2.1475,1.5,0.8525, + 0.707107,0,-0.707107,2.1475,1.5,0.8525, + 0.707107,0,-0.707107,1.5,3,0.205, + 0.707107,0,-0.707107,2.1475,3,0.8525, + 1,0,0,2.1475,3,0.8525, + 1,0,0,2.1475,1.5,1.284167, + 1,0,0,2.1475,1.5,0.8525, + 1,0,0,2.1475,1.5,1.284167, + 1,0,0,2.1475,3,0.8525, + 1,0,0,2.1475,3,1.284167, + -0.707107,0,-0.707107,2.1475,3,1.715833, + -0.707107,0,-0.707107,1.715833,1.5,2.1475, + -0.707107,0,-0.707107,1.715833,3,2.1475, + -0.707107,0,-0.707107,1.715833,1.5,2.1475, + -0.707107,0,-0.707107,2.1475,3,1.715833, + -0.707107,0,-0.707107,2.1475,1.5,1.715833, + 1,0,0,2.1475,3,1.715833, + 1,0,0,2.1475,1.5,2.1475, + 1,0,0,2.1475,1.5,1.715833, + 1,0,0,2.1475,1.5,2.1475, + 1,0,0,2.1475,3,1.715833, + 1,0,0,2.1475,3,2.1475, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,1.5,3, + 0.707107,0,0.707107,2.1475,1.5,2.1475, + 0.707107,0,0.707107,1.295,1.5,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,1.540777,3, + 0.707107,0,0.707107,1.295,1.540777,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,1.584914,3, + 0.707107,0,0.707107,1.295,1.584914,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,1.636977,3, + 0.707107,0,0.707107,1.295,1.636977,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,1.705,3, + 0.707107,0,0.707107,1.295,1.705,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,1.806804,3, + 0.707107,0,0.707107,1.295,1.806804,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,1.994914,3, + 0.707107,0,0.707107,1.295,1.994914,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,2.231186,3, + 0.707107,0,0.707107,1.295,2.231186,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,2.530605,3, + 0.707107,0,0.707107,1.295,2.530605,3, + 0.707107,0,0.707107,2.1475,3,2.1475, + 0.707107,0,0.707107,1.295,3,3, + 0.259688,0.73451,0.626943,1.295,3,3, + 0.828694,0.205349,0.52067,2.1475,3,2.1475, + 0,1,0,1.5,3,2.795, + 1,0,0,1.5,3,1.5, + 1,0,0,1.5,1.5,1.812191, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,1.5,1.812191, + 1,0,0,1.5,3,1.5, + 1,0,0,1.5,3,1.812191, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.508856,3,1.812374, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.705014,3,1.73585, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.715833,3,1.725471, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.705014,3,1.73585, + 0,1,0,1.68091,3,1.75481, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.68091,3,1.75481, + 0,1,0,1.655063,3,1.771315, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.655063,3,1.771315, + 0,1,0,1.627723,3,1.785207, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.627723,3,1.785207, + 0,1,0,1.599152,3,1.796353, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.599152,3,1.796353, + 0,1,0,1.569627,3,1.804645, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.569627,3,1.804645, + 0,1,0,1.539432,3,1.810002, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.539432,3,1.810002, + 0,1,0,1.508856,3,1.812374, + 0,-1,0,1.5,1.5,1.812191, + 0,-1,0,1.0625,1.5,1.5, + 0,-1,0,1.5,1.5,1.5, + 0,-1,0,1.0625,1.5,1.5, + 0,-1,0,1.5,1.5,1.812191, + 0,-1,0,1.0625,1.5,1.759, + 0,-1,0,0,1.5,2.795, + 0,-1,0,0,1.5,2.277, + 0,-1,0,0.53125,1.5,2.277, + 0,-1,0,0,1.5,2.795, + 0,-1,0,0.53125,1.5,2.277, + 0,-1,0,0.777,1.5,2.795, + 0,-1,0,0.777,1.5,2.795, + 0,-1,0,0.53125,1.5,2.018, + 0,-1,0,0.796875,1.5,2.018, + 0,-1,0,0.53125,1.5,2.018, + 0,-1,0,0.777,1.5,2.795, + 0,-1,0,0.53125,1.5,2.277, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,2.1475,1.5,1.715833, + 0,-1,0,2.1475,1.5,2.1475, + 0,-1,0,1.295,1.5,3, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,2.1475,1.5,2.1475, + 0,-1,0,1.295,1.5,3, + 0,-1,0,0.777,1.5,2.795, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,0.777,1.5,2.795, + 0,-1,0,1.295,1.5,3, + 0,-1,0,0.777,1.5,3, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,0.796875,1.5,2.018, + 0,-1,0,0.796875,1.5,1.759, + 0,-1,0,0.796875,1.5,2.018, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,0.777,1.5,2.795, + 0,-1,0,1.5,1.5,1.812191, + 0,-1,0,0.796875,1.5,1.759, + 0,-1,0,1.0625,1.5,1.759, + 0,-1,0,0.796875,1.5,1.759, + 0,-1,0,1.5,1.5,1.812191, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,0,1.5,0.723, + 0,-1,0,0,1.5,0.205, + 0,-1,0,0.53125,1.5,0.723, + 0,-1,0,0.53125,1.5,0.723, + 0,-1,0,0,1.5,0.205, + 0,-1,0,0.777,1.5,0.205, + 0,-1,0,0.796875,1.5,0.982, + 0,-1,0,0.53125,1.5,0.723, + 0,-1,0,0.777,1.5,0.205, + 0,-1,0,0.53125,1.5,0.723, + 0,-1,0,0.796875,1.5,0.982, + 0,-1,0,0.53125,1.5,0.982, + 0,-1,0,2.1475,1.5,1.284167, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,2.1475,1.5,0.8525, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.295,1.5,0, + 0,-1,0,2.1475,1.5,0.8525, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,0.777,1.5,0, + 0,-1,0,1.295,1.5,0, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,0.777,1.5,0.205, + 0,-1,0,0.777,1.5,0, + 0,-1,0,0.777,1.5,0.205, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,0.796875,1.5,0.982, + 0,-1,0,0.796875,1.5,0.982, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,0.796875,1.5,1.241, + 0,-1,0,1.5,1.5,1.187809, + 0,-1,0,0.796875,1.5,1.241, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,0.796875,1.5,1.241, + 0,-1,0,1.5,1.5,1.187809, + 0,-1,0,1.0625,1.5,1.241, + 1,0,0,1.715833,3,1.725471, + 1,0,0,1.715833,1.5,2.1475, + 1,0,0,1.715833,1.5,1.725471, + 1,0,0,1.715833,1.5,2.1475, + 1,0,0,1.715833,3,1.725471, + 1,0,0,1.715833,3,2.1475, + -0.011969,0,-0.999928,1.508856,3,1.812374, + 0.020743,0,-0.999785,1.5,1.5,1.812191, + 0.020743,0,-0.999785,1.5,3,1.812191, + 0.020743,0,-0.999785,1.5,1.5,1.812191, + -0.011969,0,-0.999928,1.508856,3,1.812374, + -0.044703,0,-0.999,1.508856,1.5,1.812374, + -0.692287,0,-0.721622,1.715833,3,1.725471, + -0.668315,0,-0.743879,1.705014,1.5,1.73585, + -0.6436,0,-0.765362,1.705014,3,1.73585, + -0.668315,0,-0.743879,1.705014,1.5,1.73585, + -0.692287,0,-0.721622,1.715833,3,1.725471, + -0.692287,0,-0.721622,1.715833,1.5,1.725471, + -0.6436,0,-0.765362,1.705014,3,1.73585, + -0.592184,0,-0.805803,1.68091,1.5,1.75481, + -0.565482,0,-0.824761,1.68091,3,1.75481, + -0.592184,0,-0.805803,1.68091,1.5,1.75481, + -0.6436,0,-0.765362,1.705014,3,1.73585, + -0.668315,0,-0.743879,1.705014,1.5,1.73585, + -0.565482,0,-0.824761,1.68091,3,1.75481, + -0.51035,0,-0.859967,1.655063,1.5,1.771315, + -0.481919,0,-0.876216,1.655063,3,1.771315, + -0.51035,0,-0.859967,1.655063,1.5,1.771315, + -0.565482,0,-0.824761,1.68091,3,1.75481, + -0.592184,0,-0.805803,1.68091,1.5,1.75481, + -0.481919,0,-0.876216,1.655063,3,1.771315, + -0.423601,0,-0.905849,1.627723,1.5,1.785207, + -0.393714,0,-0.919233,1.627723,3,1.785207, + -0.423601,0,-0.905849,1.627723,1.5,1.785207, + -0.481919,0,-0.876216,1.655063,3,1.771315, + -0.51035,0,-0.859967,1.655063,1.5,1.771315, + -0.393714,0,-0.919233,1.627723,3,1.785207, + -0.332772,0,-0.943007,1.599152,1.5,1.796353, + -0.301717,0,-0.953397,1.599152,3,1.796353, + -0.332772,0,-0.943007,1.599152,1.5,1.796353, + -0.393714,0,-0.919233,1.627723,3,1.785207, + -0.423601,0,-0.905849,1.627723,1.5,1.785207, + -0.301717,0,-0.953397,1.599152,3,1.796353, + -0.238739,0,-0.971084,1.569627,1.5,1.804645, + -0.206815,0,-0.97838,1.569627,3,1.804645, + -0.238739,0,-0.971084,1.569627,1.5,1.804645, + -0.301717,0,-0.953397,1.599152,3,1.796353, + -0.332772,0,-0.943007,1.599152,1.5,1.796353, + -0.206815,0,-0.97838,1.569627,3,1.804645, + -0.142406,0,-0.989808,1.539432,1.5,1.810002, + -0.109921,0,-0.99394,1.539432,3,1.810002, + -0.142406,0,-0.989808,1.539432,1.5,1.810002, + -0.206815,0,-0.97838,1.569627,3,1.804645, + -0.238739,0,-0.971084,1.569627,1.5,1.804645, + -0.109921,0,-0.99394,1.539432,3,1.810002, + -0.044703,0,-0.999,1.508856,1.5,1.812374, + -0.011969,0,-0.999928,1.508856,3,1.812374, + -0.044703,0,-0.999,1.508856,1.5,1.812374, + -0.109921,0,-0.99394,1.539432,3,1.810002, + -0.142406,0,-0.989808,1.539432,1.5,1.810002, + 0,0,1,1.036,3,3, + 0,0,1,1.201631,3,3, + 0,0,1,0.87868,3,3, + 0,1,0,0.777,3,2.795, + 0,1,0,1.295,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,1.295,3,3, + 0,1,0,0.777,3,2.795, + 0,1,0,0.777,3,3, + 0.259688,0.73451,0.626943,1.295,3,3, + -0.408248,0.408248,0.816497,0.777,3,3, + 0,0,1,0.87868,3,3, + 0.259688,0.73451,0.626943,1.295,3,3, + 0,0,1,0.87868,3,3, + 0,0,1,1.201631,3,3, + 0.840862,0,-0.54125,1.5,3,1.812191, + 0.840862,0,-0.54125,1.715833,1.5,2.1475, + 0.840862,0,-0.54125,1.5,1.5,1.812191, + 0.840862,0,-0.54125,1.715833,1.5,2.1475, + 0.840862,0,-0.54125,1.5,3,1.812191, + 0.840862,0,-0.54125,1.715833,3,2.1475, + 0,-1,0,1.715833,3,2.1475, + 0,-1,0,1.5,3,1.812191, + 0,-1,0,1.607917,3,1.979845, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.691322,3,1.252913, + 0,1,0,1.71462,3,1.272856, + 0,1,0,1.691322,3,1.252913, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.666182,3,1.23535, + 0,1,0,1.666182,3,1.23535, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.639442,3,1.220336, + 0,1,0,1.639442,3,1.220336, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.611359,3,1.208015, + 0,1,0,1.611359,3,1.208015, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.582203,3,1.198505, + 0,1,0,1.582203,3,1.198505, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.552255,3,1.1919, + 0,1,0,1.552255,3,1.1919, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.521805,3,1.188262, + 0,1,0,1.521805,3,1.188262, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.5,3,1.187809, + 0.840862,0,0.54125,1.715833,3,0.8525, + 0.840862,0,0.54125,1.5,1.5,1.187809, + 0.840862,0,0.54125,1.715833,1.5,0.8525, + 0.840862,0,0.54125,1.5,1.5,1.187809, + 0.840862,0,0.54125,1.715833,3,0.8525, + 0.840862,0,0.54125,1.5,3,1.187809, + 0,-1,0,1.5,3,1.187809, + 0,-1,0,1.715833,3,0.8525, + 0,-1,0,1.607917,3,1.020155, + 1,0,0,1.715833,3,0.8525, + 1,0,0,1.715833,1.5,1.274121, + 1,0,0,1.715833,1.5,0.8525, + 1,0,0,1.715833,1.5,1.274121, + 1,0,0,1.715833,3,0.8525, + 1,0,0,1.715833,3,1.274121, + -0.053432,0,0.998571,1.521805,1.5,1.188262, + -0.020743,0,0.999785,1.5,3,1.187809, + -0.020743,0,0.999785,1.5,1.5,1.187809, + -0.020743,0,0.999785,1.5,3,1.187809, + -0.053432,0,0.998571,1.521805,1.5,1.188262, + -0.086099,0,0.996287,1.521805,3,1.188262, + -0.151052,0,0.988526,1.552255,1.5,1.1919, + -0.086099,0,0.996287,1.521805,3,1.188262, + -0.053432,0,0.998571,1.521805,1.5,1.188262, + -0.086099,0,0.996287,1.521805,3,1.188262, + -0.151052,0,0.988526,1.552255,1.5,1.1919, + -0.183337,0,0.98305,1.552255,3,1.1919, + -0.247217,0,0.96896,1.582203,1.5,1.198505, + -0.183337,0,0.98305,1.552255,3,1.1919, + -0.151052,0,0.988526,1.552255,1.5,1.1919, + -0.183337,0,0.98305,1.552255,3,1.1919, + -0.247217,0,0.96896,1.582203,1.5,1.198505, + -0.27881,0,0.960346,1.582203,3,1.198505, + -0.341001,0,0.940063,1.611359,1.5,1.208015, + -0.27881,0,0.960346,1.582203,3,1.198505, + -0.247217,0,0.96896,1.582203,1.5,1.198505, + -0.27881,0,0.960346,1.582203,3,1.198505, + -0.341001,0,0.940063,1.611359,1.5,1.208015, + -0.371598,0,0.928394,1.611359,3,1.208015, + -0.431501,0,0.902112,1.639442,1.5,1.220336, + -0.371598,0,0.928394,1.611359,3,1.208015, + -0.341001,0,0.940063,1.611359,1.5,1.208015, + -0.371598,0,0.928394,1.611359,3,1.208015, + -0.431501,0,0.902112,1.639442,1.5,1.220336, + -0.460807,0,0.8875,1.639442,3,1.220336, + -0.517846,0,0.855474,1.666182,1.5,1.23535, + -0.460807,0,0.8875,1.639442,3,1.220336, + -0.431501,0,0.902112,1.639442,1.5,1.220336, + -0.460807,0,0.8875,1.639442,3,1.220336, + -0.517846,0,0.855474,1.666182,1.5,1.23535, + -0.545579,0,0.83806,1.666182,3,1.23535, + -0.599204,0,0.800597,1.691322,1.5,1.252913, + -0.545579,0,0.83806,1.666182,3,1.23535, + -0.517846,0,0.855474,1.666182,1.5,1.23535, + -0.545579,0,0.83806,1.666182,3,1.23535, + -0.599204,0,0.800597,1.691322,1.5,1.252913, + -0.625096,0,0.780548,1.691322,3,1.252913, + -0.686784,0,0.726862,1.71462,1.5,1.272856, + -0.625096,0,0.780548,1.691322,3,1.252913, + -0.599204,0,0.800597,1.691322,1.5,1.252913, + -0.625096,0,0.780548,1.691322,3,1.252913, + -0.686784,0,0.726862,1.71462,1.5,1.272856, + -0.686784,0,0.726862,1.71462,3,1.272856, + -0.721622,0,0.692287,1.715833,3,1.274121, + -0.686784,0,0.726862,1.71462,1.5,1.272856, + -0.721622,0,0.692287,1.715833,1.5,1.274121, + -0.686784,0,0.726862,1.71462,1.5,1.272856, + -0.721622,0,0.692287,1.715833,3,1.274121, + -0.686784,0,0.726862,1.71462,3,1.272856, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.705014,1.5,1.73585, + 0,-1,0,1.715833,1.5,1.725471, + 0,-1,0,1.705014,1.5,1.73585, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.68091,1.5,1.75481, + 0,-1,0,1.68091,1.5,1.75481, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.655063,1.5,1.771315, + 0,-1,0,1.655063,1.5,1.771315, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.627723,1.5,1.785207, + 0,-1,0,1.627723,1.5,1.785207, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.599152,1.5,1.796353, + 0,-1,0,1.599152,1.5,1.796353, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.569627,1.5,1.804645, + 0,-1,0,1.569627,1.5,1.804645, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.539432,1.5,1.810002, + 0,-1,0,1.539432,1.5,1.810002, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.508856,1.5,1.812374, + 0,-1,0,1.715833,1.5,2.1475, + 0,-1,0,1.5,1.5,1.812191, + 0,-1,0,1.508856,1.5,1.812374, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.521805,1.5,1.188262, + 0,-1,0,1.5,1.5,1.187809, + 0,-1,0,1.521805,1.5,1.188262, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.552255,1.5,1.1919, + 0,-1,0,1.552255,1.5,1.1919, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.582203,1.5,1.198505, + 0,-1,0,1.582203,1.5,1.198505, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.611359,1.5,1.208015, + 0,-1,0,1.611359,1.5,1.208015, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.639442,1.5,1.220336, + 0,-1,0,1.639442,1.5,1.220336, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.666182,1.5,1.23535, + 0,-1,0,1.666182,1.5,1.23535, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.691322,1.5,1.252913, + 0,-1,0,1.691322,1.5,1.252913, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.71462,1.5,1.272856, + 0,-1,0,1.71462,1.5,1.272856, + 0,-1,0,1.715833,1.5,0.8525, + 0,-1,0,1.715833,1.5,1.274121, + 0,1,0,0,3,2.536, + 0,1,0,0.205,3,2.277, + 0,1,0,0,3,2.277, + 0,1,0,0.205,3,2.277, + 0,1,0,0,3,2.536, + 0,1,0,0.205,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,2.536, + 0,1,0,0,3,2.795, + 0,1,0,0,3,0.464, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.464, + 0,1,0,0.205,3,0.723, + 0,1,0,0.205,3,0.723, + 0,1,0,0,3,0.464, + 0,1,0,0,3,0.723, + 0,1,0,0.777,3,0, + 0,1,0,1.201631,3,0, + 0,1,0,0.87868,3,0, + 0,1,0,1.201631,3,0, + 0,1,0,0.777,3,0, + 0,1,0,1.295,3,0, + 0,1,0,1.295,3,0, + 0,1,0,0.777,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,0.777,3,0, + 0,1,0,0.777,3,0.205, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.1475,3,1.715833, + 0,1,0,1.715833,3,2.1475, + 0,1,0,0.205,3,2.795, + 0,1,0,0.53125,3,2.277, + 0,1,0,0.205,3,2.277, + 0,1,0,0.53125,3,2.277, + 0,1,0,0.205,3,2.795, + 0,1,0,0.777,3,2.795, + 0,1,0,0.53125,3,0.723, + 0,1,0,1.5,3,0.205, + 0,1,0,0.777,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,0.53125,3,0.723, + 0,1,0,0.723,3,0.982, + 0,1,0,0.723,3,0.982, + 0,1,0,0.53125,3,0.723, + 0,1,0,0.53125,3,0.982, + 0,1,0,1.0625,3,1.241, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,1.187809, + 0,1,0,1.5,3,1.5, + 0,1,0,1.0625,3,1.241, + 0,1,0,1.0625,3,1.5, + 0,1,0,1.5,3,1.187809, + 0,1,0,1.715833,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,1.715833,3,0.8525, + 0,1,0,1.5,3,1.187809, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.0625,3,1.5, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.5,3,1.5, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.0625,3,1.5, + 0,1,0,1.0625,3,1.759, + 0,1,0,1.5,3,0.205, + 0,1,0,0.796875,3,0.982, + 0,1,0,0.796875,3,1.241, + 0,1,0,0.796875,3,0.982, + 0,1,0,1.5,3,0.205, + 0,1,0,0.723,3,0.982, + 0,1,0,1.5,3,2.795, + 0,1,0,1.0625,3,1.759, + 0,1,0,0.796875,3,1.759, + 0,1,0,1.0625,3,1.759, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.5,3,2.795, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.5,3,2.795, + 0,1,0,1.715833,3,2.1475, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,1.715833,3,0.8525, + 0,1,0,2.1475,3,1.284167, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.715833,3,0.8525, + 0,0,1,2.1475,1.5,0.8525, + 0,0,1,1.715833,3,0.8525, + 0,0,1,1.715833,1.5,0.8525, + 0,0,1,1.715833,3,0.8525, + 0,0,1,2.1475,1.5,0.8525, + 0,0,1,2.1475,3,0.8525, + 0,1,0,1.5,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.715833,3,2.1475, + 0,0,-1,2.1475,3,2.1475, + 0,0,-1,1.715833,1.5,2.1475, + 0,0,-1,1.715833,3,2.1475, + 0,0,-1,1.715833,1.5,2.1475, + 0,0,-1,2.1475,3,2.1475, + 0,0,-1,2.1475,1.5,2.1475, + 0,1,0,0.796875,3,1.241, + 0,1,0,1.5,3,1.187809, + 0,1,0,1.5,3,0.205, + 0,1,0,1.5,3,1.187809, + 0,1,0,0.796875,3,1.241, + 0,1,0,1.0625,3,1.241, + 0,1,0,1.5,3,2.795, + 0,1,0,0.796875,3,2.018, + 0,1,0,0.723,3,2.018, + 0,1,0,1.5,3,2.795, + 0,1,0,0.796875,3,1.759, + 0,1,0,0.796875,3,2.018, + 0,1,0,0.205,3,0.205, + 0,1,0,0.53125,3,0.723, + 0,1,0,0.777,3,0.205, + 0,1,0,0.53125,3,0.723, + 0,1,0,0.205,3,0.205, + 0,1,0,0.205,3,0.723, + -0.956392,0,-0.292087,0.53125,3,0.723, + -0.956392,0,-0.292087,0.777,1.5,0.205, + -0.989278,0,-0.146043,0.53125,1.5,0.723, + -0.956392,0,-0.292087,0.777,1.5,0.205, + -0.956392,0,-0.292087,0.53125,3,0.723, + -0.998843,0,-0.048086,0.777,3,0.205, + 0,1,0,0.53125,3,2.277, + 0,1,0,0.723,3,2.018, + 0,1,0,0.53125,3,2.018, + 0,1,0,0.723,3,2.018, + 0,1,0,0.53125,3,2.277, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,0.53125,3,2.277, + 0,1,0,0.777,3,2.795, + 0,-1,0,1.5,1.5,1.5, + 0,-1,0,1.0625,1.5,1.241, + 0,-1,0,1.5,1.5,1.187809, + 0,-1,0,1.0625,1.5,1.241, + 0,-1,0,1.5,1.5,1.5, + 0,-1,0,1.0625,1.5,1.5, + 1,0,0,1.5,3,1.187809, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,1.5,1.187809, + 1,0,0,1.5,1.5,1.5, + 1,0,0,1.5,3,1.187809, + 1,0,0,1.5,3,1.5, + 0,1,0,1.715833,3,2.1475, + 0,1,0,1.715833,3,1.725471, + 0,1,0,1.607917,3,1.979845, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.715833,3,1.274121, + 0,1,0,1.715833,3,0.8525, + 0,1,0,1.715833,3,1.274121, + 0,1,0,1.607917,3,1.020155, + 0,1,0,1.71462,3,1.272856, + -0.707107,0,0.707107,2.1475,3,1.284167, + -0.707107,0,0.707107,1.715833,1.5,0.8525, + -0.707107,0,0.707107,2.1475,1.5,1.284167, + -0.707107,0,0.707107,1.715833,1.5,0.8525, + -0.707107,0,0.707107,2.1475,3,1.284167, + -0.707107,0,0.707107,1.715833,3,0.8525 +}; +static const struct gllist lament_model_taser_b_frame = { GL_N3F_V3F, GL_TRIANGLES, 990, lament_model_taser_b_data, 0 }; +const struct gllist *lament_model_taser_b = &lament_model_taser_b_frame; + +static const float lament_model_taser_base_data[] = { + 0.341001,0,-0.940063,1.611359,3,1.208015, + 0.27881,0,-0.960346,1.582203,1.5,1.198505, + 0.247217,0,-0.96896,1.582203,3,1.198505, + 0.27881,0,-0.960346,1.582203,1.5,1.198505, + 0.341001,0,-0.940063,1.611359,3,1.208015, + 0.371598,0,-0.928394,1.611359,1.5,1.208015, + 0,1,0,1.295,1.5,0, + 0,1,0,1.5,1.5,1.187809, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.5,1.5,1.187809, + 0,1,0,1.295,1.5,0, + 0,1,0,1.295,1.5,3, + 0,1,0,1.5,1.5,1.187809, + 0,1,0,1.295,1.5,3, + 0,1,0,1.5,1.5,1.812191, + 0,1,0,1.5,1.5,1.812191, + 0,1,0,1.295,1.5,3, + 0,1,0,1.508856,1.5,1.812374, + 0,1,0,1.508856,1.5,1.812374, + 0,1,0,1.295,1.5,3, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.295,1.5,3, + 0,1,0,2.1475,1.5,2.1475, + 0,1,0,2.1475,1.5,2.1475, + 0,1,0,2.1475,1.5,1.715833, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.705014,1.5,1.73585, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.715833,1.5,1.725471, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.705014,1.5,1.73585, + 0,1,0,1.68091,1.5,1.75481, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.68091,1.5,1.75481, + 0,1,0,1.655063,1.5,1.771315, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.655063,1.5,1.771315, + 0,1,0,1.627723,1.5,1.785207, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.627723,1.5,1.785207, + 0,1,0,1.599152,1.5,1.796353, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.599152,1.5,1.796353, + 0,1,0,1.569627,1.5,1.804645, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.569627,1.5,1.804645, + 0,1,0,1.539432,1.5,1.810002, + 0,1,0,1.715833,1.5,2.1475, + 0,1,0,1.539432,1.5,1.810002, + 0,1,0,1.508856,1.5,1.812374, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.71462,1.5,1.272856, + 0,1,0,1.715833,1.5,1.274121, + 0,1,0,1.71462,1.5,1.272856, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.691322,1.5,1.252913, + 0,1,0,1.691322,1.5,1.252913, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.666182,1.5,1.23535, + 0,1,0,1.666182,1.5,1.23535, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.639442,1.5,1.220336, + 0,1,0,1.639442,1.5,1.220336, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.611359,1.5,1.208015, + 0,1,0,1.611359,1.5,1.208015, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.582203,1.5,1.198505, + 0,1,0,1.582203,1.5,1.198505, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.552255,1.5,1.1919, + 0,1,0,1.552255,1.5,1.1919, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.521805,1.5,1.188262, + 0,1,0,1.521805,1.5,1.188262, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,1.5,1.5,1.187809, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,2.1475,1.5,0.8525, + 0,1,0,1.295,1.5,0, + 0,1,0,2.1475,1.5,0.8525, + 0,1,0,1.715833,1.5,0.8525, + 0,1,0,2.1475,1.5,1.284167, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.193196,0, + 0,0,-1,1.295,1.295,0, + 0.206815,0,0.97838,1.569627,1.5,1.804645, + 0.142406,0,0.989808,1.539432,3,1.810002, + 0.109921,0,0.99394,1.539432,1.5,1.810002, + 0.142406,0,0.989808,1.539432,3,1.810002, + 0.206815,0,0.97838,1.569627,1.5,1.804645, + 0.238739,0,0.971084,1.569627,3,1.804645, + 0.565482,0,0.824761,1.68091,1.5,1.75481, + 0.51035,0,0.859967,1.655063,3,1.771315, + 0.481919,0,0.876216,1.655063,1.5,1.771315, + 0.51035,0,0.859967,1.655063,3,1.771315, + 0.565482,0,0.824761,1.68091,1.5,1.75481, + 0.592184,0,0.805803,1.68091,3,1.75481, + 0.053432,0,-0.998571,1.521805,3,1.188262, + 0.020743,0,-0.999785,1.5,1.5,1.187809, + 0.020743,0,-0.999785,1.5,3,1.187809, + 0.020743,0,-0.999785,1.5,1.5,1.187809, + 0.053432,0,-0.998571,1.521805,3,1.188262, + 0.086099,0,-0.996287,1.521805,1.5,1.188262, + -1,0,0,1.5,3,1.812191, + -1,0,0,1.5,1.5,1.187809, + -1,0,0,1.5,1.5,1.812191, + -1,0,0,1.5,1.5,1.187809, + -1,0,0,1.5,3,1.812191, + -1,0,0,1.5,3,1.187809, + -0.569325,0.581384,-0.581259,1.5,3,1.187809, + -0.216196,0.95311,0.211757,1.5,3,1.812191, + 0,1,0,1.5,3,1.5, + -1,0,0,1.715833,3,2.1475, + -1,0,0,1.715833,1.5,1.725471, + -1,0,0,1.715833,1.5,2.1475, + -1,0,0,1.715833,1.5,1.725471, + -1,0,0,1.715833,3,2.1475, + -1,0,0,1.715833,3,1.725471, + 0.247217,0,-0.96896,1.582203,3,1.198505, + 0.183337,0,-0.98305,1.552255,1.5,1.1919, + 0.151052,0,-0.988526,1.552255,3,1.1919, + 0.183337,0,-0.98305,1.552255,1.5,1.1919, + 0.247217,0,-0.96896,1.582203,3,1.198505, + 0.27881,0,-0.960346,1.582203,1.5,1.198505, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,2.1475, + 0.707107,0,0.707107,2.1475,1.5,1.715833, + 0.707107,0,0.707107,1.715833,3,2.1475, + 0.707107,0,0.707107,1.715833,1.5,2.1475, + 0.707107,0,0.707107,1.715833,3,2.1475, + 0.707107,0,0.707107,2.1475,1.5,1.715833, + 0.707107,0,0.707107,2.1475,3,1.715833, + 0.517846,0,-0.855474,1.666182,3,1.23535, + 0.460807,0,-0.8875,1.639442,1.5,1.220336, + 0.431501,0,-0.902112,1.639442,3,1.220336, + 0.460807,0,-0.8875,1.639442,1.5,1.220336, + 0.517846,0,-0.855474,1.666182,3,1.23535, + 0.545579,0,-0.83806,1.666182,1.5,1.23535, + 0.599204,0,-0.800597,1.691322,3,1.252913, + 0.545579,0,-0.83806,1.666182,1.5,1.23535, + 0.517846,0,-0.855474,1.666182,3,1.23535, + 0.545579,0,-0.83806,1.666182,1.5,1.23535, + 0.599204,0,-0.800597,1.691322,3,1.252913, + 0.625096,0,-0.780548,1.691322,1.5,1.252913, + 0.686784,0,-0.726862,1.71462,3,1.272856, + 0.625096,0,-0.780548,1.691322,1.5,1.252913, + 0.599204,0,-0.800597,1.691322,3,1.252913, + 0.625096,0,-0.780548,1.691322,1.5,1.252913, + 0.686784,0,-0.726862,1.71462,3,1.272856, + 0.686784,0,-0.726862,1.71462,1.5,1.272856, + 0.707107,0,-0.707107,1.715833,3,0.8525, + 0.707107,0,-0.707107,2.1475,1.5,1.284167, + 0.707107,0,-0.707107,1.715833,1.5,0.8525, + 0.707107,0,-0.707107,2.1475,1.5,1.284167, + 0.707107,0,-0.707107,1.715833,3,0.8525, + 0.707107,0,-0.707107,2.1475,3,1.284167, + -1,0,0,2.1475,3,2.1475, + -1,0,0,2.1475,1.5,1.715833, + -1,0,0,2.1475,1.5,2.1475, + -1,0,0,2.1475,1.5,1.715833, + -1,0,0,2.1475,3,2.1475, + -1,0,0,2.1475,3,1.715833, + 0.109921,0,0.99394,1.539432,1.5,1.810002, + 0.044703,0,0.999,1.508856,3,1.812374, + 0.011969,0,0.999928,1.508856,1.5,1.812374, + 0.044703,0,0.999,1.508856,3,1.812374, + 0.109921,0,0.99394,1.539432,1.5,1.810002, + 0.142406,0,0.989808,1.539432,3,1.810002, + 0.011969,0,0.999928,1.508856,1.5,1.812374, + -0.020743,0,0.999785,1.5,3,1.812191, + -0.020743,0,0.999785,1.5,1.5,1.812191, + -0.020743,0,0.999785,1.5,3,1.812191, + 0.011969,0,0.999928,1.508856,1.5,1.812374, + 0.044703,0,0.999,1.508856,3,1.812374, + 0.393714,0,0.919233,1.627723,1.5,1.785207, + 0.332772,0,0.943007,1.599152,3,1.796353, + 0.301717,0,0.953397,1.599152,1.5,1.796353, + 0.332772,0,0.943007,1.599152,3,1.796353, + 0.393714,0,0.919233,1.627723,1.5,1.785207, + 0.423601,0,0.905849,1.627723,3,1.785207, + 0.301717,0,0.953397,1.599152,1.5,1.796353, + 0.238739,0,0.971084,1.569627,3,1.804645, + 0.206815,0,0.97838,1.569627,1.5,1.804645, + 0.238739,0,0.971084,1.569627,3,1.804645, + 0.301717,0,0.953397,1.599152,1.5,1.796353, + 0.332772,0,0.943007,1.599152,3,1.796353, + -1,0,0,1.715833,3,1.274121, + -1,0,0,1.715833,1.5,0.8525, + -1,0,0,1.715833,1.5,1.274121, + -1,0,0,1.715833,1.5,0.8525, + -1,0,0,1.715833,3,1.274121, + -1,0,0,1.715833,3,0.8525, + 0.481919,0,0.876216,1.655063,1.5,1.771315, + 0.423601,0,0.905849,1.627723,3,1.785207, + 0.393714,0,0.919233,1.627723,1.5,1.785207, + 0.423601,0,0.905849,1.627723,3,1.785207, + 0.481919,0,0.876216,1.655063,1.5,1.771315, + 0.51035,0,0.859967,1.655063,3,1.771315, + 0.151052,0,-0.988526,1.552255,3,1.1919, + 0.086099,0,-0.996287,1.521805,1.5,1.188262, + 0.053432,0,-0.998571,1.521805,3,1.188262, + 0.086099,0,-0.996287,1.521805,1.5,1.188262, + 0.151052,0,-0.988526,1.552255,3,1.1919, + 0.183337,0,-0.98305,1.552255,1.5,1.1919, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0.205,0, + -0.707107,0,-0.707107,1.295,1.540777,3, + -0.707107,0,-0.707107,2.1475,1.5,2.1475, + -0.707107,0,-0.707107,1.295,1.5,3, + -0.707107,0,-0.707107,2.1475,1.5,2.1475, + -0.707107,0,-0.707107,1.295,1.540777,3, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,1.295,1.540777,3, + -0.707107,0,-0.707107,1.295,1.584914,3, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,1.295,1.584914,3, + -0.707107,0,-0.707107,1.295,1.636977,3, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,1.295,1.636977,3, + -0.707107,0,-0.707107,1.295,1.705,3, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,1.295,1.705,3, + -0.707107,0,-0.707107,1.295,1.806804,3, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,1.295,1.806804,3, + -0.707107,0,-0.707107,1.295,1.994914,3, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,1.295,1.994914,3, + -0.707107,0,-0.707107,1.295,2.231186,3, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,1.295,2.231186,3, + -0.707107,0,-0.707107,1.295,2.530605,3, + -0.707107,0,-0.707107,2.1475,3,2.1475, + -0.707107,0,-0.707107,1.295,2.530605,3, + -0.707107,0,-0.707107,1.295,3,3, + -0.765259,0.274484,-0.582269,2.1475,3,2.1475, + -0.397052,0.561517,0.725981,1.295,3,3, + 0,1,0,1.5,3,2.795, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.540777,3, + 0,0,1,1.295,1.5,3, + -1,0,0,2.1475,3,1.284167, + -1,0,0,2.1475,1.5,0.8525, + -1,0,0,2.1475,1.5,1.284167, + -1,0,0,2.1475,1.5,0.8525, + -1,0,0,2.1475,3,1.284167, + -1,0,0,2.1475,3,0.8525, + 0.6436,0,0.765362,1.705014,1.5,1.73585, + 0.592184,0,0.805803,1.68091,3,1.75481, + 0.565482,0,0.824761,1.68091,1.5,1.75481, + 0.592184,0,0.805803,1.68091,3,1.75481, + 0.6436,0,0.765362,1.705014,1.5,1.73585, + 0.682921,0.000198,0.730492,1.705014,3,1.73585, + 0.431501,0,-0.902112,1.639442,3,1.220336, + 0.371598,0,-0.928394,1.611359,1.5,1.208015, + 0.341001,0,-0.940063,1.611359,3,1.208015, + 0.371598,0,-0.928394,1.611359,1.5,1.208015, + 0.431501,0,-0.902112,1.639442,3,1.220336, + 0.460807,0,-0.8875,1.639442,1.5,1.220336, + 0.686784,0,-0.726862,1.71462,3,1.272856, + 0.721622,0,-0.692287,1.715833,1.5,1.274121, + 0.686784,0,-0.726862,1.71462,1.5,1.272856, + 0.721622,0,-0.692287,1.715833,1.5,1.274121, + 0.686784,0,-0.726862,1.71462,3,1.272856, + 0.721622,0,-0.692287,1.715833,3,1.274121, + 0.713423,0.000297,0.700733,1.715833,1.5,1.725471, + 0.682921,0.000198,0.730492,1.705014,3,1.73585, + 0.6436,0,0.765362,1.705014,1.5,1.73585, + 0.682921,0.000198,0.730492,1.705014,3,1.73585, + 0.713423,0.000297,0.700733,1.715833,1.5,1.725471, + 0.733929,0.000594,0.679226,1.71462,3,1.725471, + 0,0,1,1.71462,3,1.725471, + 0,0,1,1.715833,1.5,1.725471, + 0,0,1,1.715833,3,1.725471, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,1.540777,0, + -0.707107,0,0.707107,1.295,1.5,0, + -0.707107,0,0.707107,1.295,1.540777,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,1.584914,0, + -0.707107,0,0.707107,1.295,1.584914,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,1.636977,0, + -0.707107,0,0.707107,1.295,1.636977,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,1.705,0, + -0.707107,0,0.707107,1.295,1.705,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,1.806804,0, + -0.707107,0,0.707107,1.295,1.806804,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,1.994914,0, + -0.707107,0,0.707107,1.295,1.994914,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,2.231186,0, + -0.707107,0,0.707107,1.295,2.231186,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,2.530605,0, + -0.707107,0,0.707107,1.295,2.530605,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.295,3,0, + -0.707107,0,0.707107,1.295,3,0, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,1.5,3,0.205, + -0.707107,0,0.707107,1.5,3,0.205, + -0.707107,0,0.707107,2.1475,1.5,0.8525, + -0.707107,0,0.707107,2.1475,3,0.8525, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.295,0, + 0,0,-1,1.295,1.363023,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.459223,0, + 0,0,-1,1.295,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.806804,0, + 0,0,-1,1.295,1.994914,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.415086,0, + 0,0,-1,1.295,1.459223,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.5,0, + 0,0,-1,1.295,1.540777,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.295,2.231186,0, + 0,0,-1,1.295,2.530605,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.295,1.994914,0, + 0,0,-1,1.295,2.231186,0, + 0,0,-1,1.295,1.994914,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.584914,0, + 0,0,-1,1.295,1.636977,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.636977,0, + 0,0,-1,1.295,1.705,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,3,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,3,0,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0.497732,0, + 0.436436,-0.218218,-0.872872,3,0,0, + 0.6,0,-0.8,3,0.497732,0, + 1,0,0,3,0.205,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.497732,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,0.87868,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.201631,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.5,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.295,2.530605,0, + 0,0,-1,1.295,3,0, + 0,0,-1,1.295,2.530605,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.5,3,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.295,0,0, + 0,0,-1,1.295,0.469395,0, + 0,0,-1,1.295,0,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.705,0, + 0,0,-1,1.295,1.806804,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.798369,3,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.363023,0, + 0,0,-1,1.295,1.415086,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.798369,0,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,2.12132,0,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,2.12132,3,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,3,1.5,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.502268,3,0, + 0,0,-1,2.795,3,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.795,3,0, + 0,0,-1,3,3,0, + 0,0,-1,3,3,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,3,3,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,3,3,0, + 0,0,-1,3,2.502268,0, + 0.447214,0,-0.894427,3,2.502268,0, + 0.408248,0.408248,-0.816497,3,3,0, + 1,0,0,3,2.795,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.295,0.469395,0, + 0,0,-1,1.295,0.768814,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,0.768814,0, + 0,0,-1,1.295,1.005086,0, + 0,0,-1,1.295,0.768814,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,3,2.502268,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,3,2.12132,0, + 0,0,-1,3,1.798369,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.502268,0,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,3,0,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.351731,2.245397,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.425507,2.25634,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,2.26,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.574493,2.25634,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.574493,0.74366,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.648269,2.245397,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.648269,0.754603,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.720616,2.227275,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.720616,0.772725,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.790839,2.202148,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.790839,0.797852,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.858262,2.17026,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.858262,0.82974,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.922233,2.131917,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.922233,0.868083,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,1.982139,2.087488,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,1.982139,0.912512,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.037401,2.037401,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.037401,0.962599,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.087488,1.982139,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.087488,1.017861,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.131917,1.922233,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.131917,1.077767,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.17026,1.858262,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.17026,1.141738,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.202148,1.790839,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.202148,1.209161,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.227275,1.720616,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.227275,1.279384,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.245397,1.648269,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.245397,1.351731,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.25634,1.425507,0, + 0,0,-1,2.25634,1.574493,0, + 0,0,-1,2.26,1.5,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.351731,0.754603,0, + 0,0,-1,1.425507,0.74366,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.5,0.74,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.005086,0, + 0,0,-1,1.295,1.193196,0, + 0,0,-1,1.5,1.5,0, + 0,0,-1,1.295,1.540777,0, + 0,0,-1,1.295,1.584914,0, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.5,3, + 0,0,1,1.295,1.459223,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.295,2.530605,3, + 0,0,1,1.295,2.231186,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,2.231186,3, + 0,0,1,1.295,1.994914,3, + 0,0,1,1.295,2.231186,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.363023,3, + 0,0,1,1.295,1.295,3, + 0,0,1,1.5,0,3, + 0,0,1,1.295,0.469395,3, + 0,0,1,1.295,0,3, + 0,0,1,1.295,0.469395,3, + 0,0,1,1.5,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,0,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.415086,3, + 0,0,1,1.295,1.363023,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.295,3, + 0,0,1,1.295,1.193196,3, + 0,0,1,3,0,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,3,0,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,3,0,3, + 0,0,1,3,0.497732,3, + 0.447214,0,0.894427,3,0.497732,3, + 0.365148,-0.182574,0.912871,3,0,3, + 1,0,0,3,0.205,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,3,0.497732,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,3,0.497732,3, + 0,0,1,3,0.87868,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.584914,3, + 0,0,1,1.295,1.540777,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.459223,3, + 0,0,1,1.295,1.415086,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.193196,3, + 0,0,1,1.295,1.005086,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.295,0.768814,3, + 0,0,1,1.295,0.469395,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.798369,3,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,2.12132,3,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,3,0.87868,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,3,0.87868,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.502268,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.12132,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.806804,3, + 0,0,1,1.295,1.705,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.994914,3, + 0,0,1,1.295,1.806804,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.705,3, + 0,0,1,1.295,1.636977,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.295,1.636977,3, + 0,0,1,1.295,1.584914,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.295,3,3, + 0,0,1,1.295,2.530605,3, + 0,0,1,1.295,3,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.5,3,3, + 0,0,1,1.5,3,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,3,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,2.26,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,2.12132,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.502268,0,3, + 0,0,1,3,0,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.295,1.005086,3, + 0,0,1,1.295,0.768814,3, + 0,0,1,1.295,1.005086,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,1.5,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,2.12132,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,1.798369,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.798369,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,3,1.201631,3, + 0,0,1,2.26,1.5,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.201631,3, + 0,0,1,3,1.5,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.798369,3, + 0,0,1,2.26,1.5,3, + 0,0,1,3,1.5,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,0,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,3,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,3,3,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,3,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,3,2.502268,3, + 0.408248,0.408248,0.816497,3,3,3, + 0.447214,0,0.894427,3,2.502268,3, + 1,0,0,3,2.795,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.502268,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.795,3,3, + 0,0,1,2.795,3,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,3,3,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.12132,3,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,2.502268,3,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.351731,0.754603,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.425507,0.74366,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,0.74,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.5,2.26,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.574493,0.74366,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.574493,2.25634,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.648269,0.754603,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.648269,2.245397,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.720616,0.772725,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.720616,2.227275,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.790839,0.797852,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.790839,2.202148,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.858262,0.82974,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.858262,2.17026,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.922233,2.131917,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,1.922233,0.868083,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,1.982139,0.912512,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,1.982139,2.087488,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.037401,0.962599,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.037401,2.037401,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.087488,1.017861,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.087488,1.982139,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.131917,1.077767,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.131917,1.922233,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.17026,1.141738,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.17026,1.858262,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.202148,1.209161,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.202148,1.790839,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.227275,1.279384,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.227275,1.720616,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.245397,1.648269,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.245397,1.351731,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.25634,1.574493,3, + 0,0,1,2.25634,1.425507,3, + 0,0,1,2.26,1.5,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.351731,2.245397,3, + 0,0,1,1.425507,2.25634,3, + 0,0,1,1.5,1.5,3, + 0,0,1,1.5,2.26,3, + 0,-1,0,3,0,0.205, + 0,-1,0,2.502268,0,0, + 0,-1,0,3,0,0, + 0,-1,0,2.502268,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,2.12132,0,0, + 0,-1,0,2.12132,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,1.798369,0,0, + 0,-1,0,1.798369,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,1.5,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,1.295,0,0, + 0,-1,0,1.295,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,1.295,0,3, + 0,-1,0,1.295,0,3, + 0,-1,0,3,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,1.295,0,3, + 0,-1,0,3,0,1.5, + 0,-1,0,3,0,2.795, + 0,-1,0,1.295,0,3, + 0,-1,0,3,0,2.795, + 0,-1,0,3,0,3, + 0,0,1,1.295,0,3, + 0,0,1,3,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,1.295,0,3, + 0,0,1,2.502268,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.295,0,3, + 0,0,1,2.12132,0,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.295,0,3, + 0,0,1,1.798369,0,3, + 0,0,1,1.5,0,3, + -1,0,0,1.295,0.469395,3, + -1,0,0,1.295,0,0, + -1,0,0,1.295,0,3, + -1,0,0,1.295,0,0, + -1,0,0,1.295,0.469395,3, + -1,0,0,1.295,0.469395,0, + -1,0,0,1.295,0.469395,0, + -1,0,0,1.295,0.469395,3, + -1,0,0,1.295,0.768814,0, + -1,0,0,1.295,0.768814,0, + -1,0,0,1.295,0.469395,3, + -1,0,0,1.295,0.768814,3, + -1,0,0,1.295,0.768814,0, + -1,0,0,1.295,0.768814,3, + -1,0,0,1.295,1.005086,3, + -1,0,0,1.295,0.768814,0, + -1,0,0,1.295,1.005086,3, + -1,0,0,1.295,1.005086,0, + -1,0,0,1.295,1.005086,0, + -1,0,0,1.295,1.005086,3, + -1,0,0,1.295,1.193196,0, + -1,0,0,1.295,1.193196,0, + -1,0,0,1.295,1.005086,3, + -1,0,0,1.295,1.193196,3, + -1,0,0,1.295,1.193196,0, + -1,0,0,1.295,1.193196,3, + -1,0,0,1.295,1.295,0, + -1,0,0,1.295,1.295,0, + -1,0,0,1.295,1.193196,3, + -1,0,0,1.295,1.295,3, + -1,0,0,1.295,1.295,0, + -1,0,0,1.295,1.295,3, + -1,0,0,1.295,1.363023,0, + -1,0,0,1.295,1.363023,0, + -1,0,0,1.295,1.295,3, + -1,0,0,1.295,1.363023,3, + -1,0,0,1.295,1.363023,0, + -1,0,0,1.295,1.363023,3, + -1,0,0,1.295,1.415086,3, + -1,0,0,1.295,1.363023,0, + -1,0,0,1.295,1.415086,3, + -1,0,0,1.295,1.415086,0, + -1,0,0,1.295,1.415086,0, + -1,0,0,1.295,1.415086,3, + -1,0,0,1.295,1.459223,3, + -1,0,0,1.295,1.415086,0, + -1,0,0,1.295,1.459223,3, + -1,0,0,1.295,1.459223,0, + -1,0,0,1.295,1.459223,0, + -1,0,0,1.295,1.459223,3, + -1,0,0,1.295,1.5,3, + -1,0,0,1.295,1.459223,0, + -1,0,0,1.295,1.5,3, + -1,0,0,1.295,1.5,0, + 0,1,0,1.5,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,1.295,3,3, + 0,1,0,1.5,3,0.205, + 0,1,0,1.5,3,0, + 0,1,0,1.295,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0, + 0,1,0,1.798369,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.12132,3,0, + 0,1,0,2.12132,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.502268,3,0, + 0,1,0,2.502268,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0, + 0,1,0,3,3,3, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.1475,3,1.715833, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,1.5, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,1.715833, + 0,1,0,2.1475,3,2.1475, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.502268,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.502268,3,3, + 0,1,0,2.795,3,3, + 0,0.447214,0.894427,2.502268,3,3, + 0,0.514496,0.857493,1.5,3,3, + 0,0,1,1.798369,3,3, + 0,0.447214,0.894427,2.502268,3,3, + 0,0,1,1.798369,3,3, + 0,0,1,2.12132,3,3, + 0,1,0,2.1475,3,1.284167, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,1.284167, + 0,1,0,2.1475,3,1.5, + 0,1,0,1.71462,3,1.5, + 0,1,0,1.715833,3,1.274121, + 0,1,0,1.71462,3,1.272856, + 0,1,0,1.715833,3,1.274121, + 0,1,0,1.71462,3,1.5, + 0,1,0,2.1475,3,1.284167, + 0,1,0,2.1475,3,1.284167, + 0,1,0,1.71462,3,1.5, + 0,1,0,2.1475,3,1.5, + 0,1,0,2.1475,3,1.284167, + 0,1,0,1.715833,3,0.8525, + 0,1,0,1.715833,3,1.274121, + 0,1,0,1.71462,3,1.725471, + 0,1,0,2.1475,3,1.5, + 0,1,0,1.71462,3,1.5, + 0,1,0,2.1475,3,1.5, + 0,1,0,1.71462,3,1.725471, + 0,1,0,2.1475,3,1.715833, + 0,1,0,2.1475,3,1.715833, + 0,1,0,1.71462,3,1.725471, + 0,1,0,1.715833,3,1.725471, + 0,1,0,2.1475,3,1.715833, + 0,1,0,1.715833,3,1.725471, + 0,1,0,1.715833,3,2.1475, + 0,1,0,1.5,3,1.5, + 0,1,0,1.521805,3,1.188262, + 0,1,0,1.5,3,1.187809, + 0,1,0,1.521805,3,1.188262, + 0,1,0,1.5,3,1.5, + 0,1,0,1.552255,3,1.1919, + 0,1,0,1.552255,3,1.1919, + 0,1,0,1.5,3,1.5, + 0,1,0,1.582203,3,1.198505, + 0,1,0,1.582203,3,1.198505, + 0,1,0,1.5,3,1.5, + 0,1,0,1.611359,3,1.208015, + 0,1,0,1.611359,3,1.208015, + 0,1,0,1.5,3,1.5, + 0,1,0,1.639442,3,1.220336, + 0,1,0,1.639442,3,1.220336, + 0,1,0,1.5,3,1.5, + 0,1,0,1.666182,3,1.23535, + 0,1,0,1.666182,3,1.23535, + 0,1,0,1.5,3,1.5, + 0,1,0,1.691322,3,1.252913, + 0,1,0,1.691322,3,1.252913, + 0,1,0,1.5,3,1.5, + 0,1,0,1.71462,3,1.272856, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.71462,3,1.725471, + 0,1,0,1.5,3,1.5, + 0,1,0,1.71462,3,1.725471, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.705014,3,1.73585, + 0,1,0,1.705014,3,1.73585, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.68091,3,1.75481, + 0,1,0,1.68091,3,1.75481, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.655063,3,1.771315, + 0,1,0,1.655063,3,1.771315, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.627723,3,1.785207, + 0,1,0,1.627723,3,1.785207, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.599152,3,1.796353, + 0,1,0,1.599152,3,1.796353, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.569627,3,1.804645, + 0,1,0,1.569627,3,1.804645, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.539432,3,1.810002, + 0,1,0,1.539432,3,1.810002, + 0,1,0,1.5,3,1.812191, + 0,1,0,1.508856,3,1.812374, + 0,1,0,1.71462,3,1.725471, + 0,1,0,1.71462,3,1.5, + 0,1,0,1.5,3,1.5, + 0,1,0,1.71462,3,1.5, + 0,1,0,1.71462,3,1.272856, + 0,1,0,1.5,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,2.1475,3,2.1475, + 0,1,0,1.5,3,2.795, + 0,1,0,2.795,3,3, + 0,1,0,3,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,2.795,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,3,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0.205, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,0.205, + 1,0,0,3,0,0, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,3,0.205, + 1,0,0,3,3,1.5, + 1,0,0,3,3,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,1.5, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,1.5, + 1,0,0,3,3,2.795, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.497732,3, + 1,0,0,3,0.497732,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.87868,3, + 1,0,0,3,0.87868,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.201631,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0,2.795, + 1,0,0,3,0,1.5, + 1,0,0,3,0,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0,0.205, + 1,0,0,3,0,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,2.795, + 1,0,0,3,0,3, + 1,0,0,3,0,2.795, + 1,0,0,3,0.205,3, + 1,0,0,3,0,3, + 1,0,0,3,0.205,2.795, + 1,0,0,3,3,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,3,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,1.5, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,2.795, + 1,0,0,3,1.5,2.795, + 1,0,0,3,0.205,1.5, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.5,2.795, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,1.5, + 1,0,0,3,3,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.795,0, + 1,0,0,3,3,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,3,2.795, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.205,0, + 1,0,0,3,0.205,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.497732,0, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,0.87868,0, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0.205, + 1,0,0,3,1.201631,0, + 1,0,0,3,1.5,0, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,1.5,2.795, + 1,0,0,3,1.5,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,1.798369,3, + 1,0,0,3,1.798369,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.12132,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.502268,3, + 1,0,0,3,2.795,2.795, + 1,0,0,3,2.795,3, + 1,0,0,3,1.5,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.5,0.205, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.5,0, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,1.798369,0, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.12132,0, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0.205, + 1,0,0,3,2.502268,0, + 1,0,0,3,2.795,0, + 1,0,0,3,3,3, + 1,0,0,3,2.795,3, + 1,0,0,3,2.795,2.795 +}; +static const struct gllist lament_model_taser_base_frame = { GL_N3F_V3F, GL_TRIANGLES, 1362, lament_model_taser_base_data, 0 }; +const struct gllist *lament_model_taser_base = &lament_model_taser_base_frame; + +static const float lament_model_tetra_base_data[] = { + 0.57735,0.57735,0.57735,0,3,3, + 0.57735,0.57735,0.57735,3,0,3, + 0.57735,0.57735,0.57735,3,3,0, + -0.57735,-0.57735,0.57735,0,3,3, + -0.57735,-0.57735,0.57735,0,0,0, + -0.57735,-0.57735,0.57735,3,0,3, + -0.57735,0.57735,-0.57735,3,3,0, + -0.57735,0.57735,-0.57735,0,0,0, + -0.57735,0.57735,-0.57735,0,3,3, + 0.57735,-0.57735,-0.57735,3,3,0, + 0.57735,-0.57735,-0.57735,3,0,3, + 0.57735,-0.57735,-0.57735,0,0,0 +}; +static const struct gllist lament_model_tetra_base_frame = { GL_N3F_V3F, GL_TRIANGLES, 12, lament_model_tetra_base_data, 0 }; +const struct gllist *lament_model_tetra_base = &lament_model_tetra_base_frame; + +static const float lament_model_tetra_dse_data[] = { + 0,-1,0,2.795,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.1475,0,2.1475, + 0,0,-1,3,3,0, + 0,0,-1,0.205,0,0, + 0,0,-1,0,0,0, + 0,0,-1,0.205,0,0, + 0,0,-1,3,3,0, + 0,0,-1,1.5,0,0, + 0,0,-1,1.5,0,0, + 0,0,-1,3,3,0, + 0,0,-1,2.795,0,0, + 0,0,-1,2.795,0,0, + 0,0,-1,3,3,0, + 0,0,-1,3,0,0, + 1,0,0,3,3,0, + 1,0,0,3,0,0.205, + 1,0,0,3,0,0, + 1,0,0,3,0,0.205, + 1,0,0,3,3,0, + 1,0,0,3,0,1.5, + 1,0,0,3,0,1.5, + 1,0,0,3,3,0, + 1,0,0,3,0,2.795, + 1,0,0,3,0,2.795, + 1,0,0,3,3,0, + 1,0,0,3,0,3, + -0.57735,0.57735,0.57735,3,3,0, + -0.57735,0.57735,0.57735,2.795,0,2.795, + -0.57735,0.57735,0.57735,3,0,3, + -0.57735,0.57735,0.57735,2.795,0,2.795, + -0.57735,0.57735,0.57735,3,3,0, + -0.57735,0.57735,0.57735,2.1475,0,2.1475, + -0.57735,0.57735,0.57735,2.1475,0,2.1475, + -0.57735,0.57735,0.57735,3,3,0, + -0.57735,0.57735,0.57735,0.8525,0,0.8525, + -0.57735,0.57735,0.57735,0.8525,0,0.8525, + -0.57735,0.57735,0.57735,3,3,0, + -0.57735,0.57735,0.57735,0.205,0,0.205, + -0.57735,0.57735,0.57735,0.205,0,0.205, + -0.57735,0.57735,0.57735,3,3,0, + -0.57735,0.57735,0.57735,0,0,0, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.205,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,3,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,2.795, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0, + 0,-1,0,3,0,0, + 0,-1,0,2.795,0,0, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,0.205,0,0, + 0,-1,0,1.5,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,3,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0, + 0,-1,0,2.795,0,0, + 0,-1,0,1.5,0,0, + 0,-1,0,2.795,0,0.205, + 0,-1,0,1.5,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,0.205, + 0,-1,0,2.795,0,0.205, + 0,-1,0,3,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,2.795,0,1.5, + 0,-1,0,1.5,0,0.205, + 0,-1,0,2.795,0,0.205 +}; +static const struct gllist lament_model_tetra_dse_frame = { GL_N3F_V3F, GL_TRIANGLES, 90, lament_model_tetra_dse_data, 0 }; +const struct gllist *lament_model_tetra_dse = &lament_model_tetra_dse_frame; + +static const float lament_model_tetra_dwn_data[] = { + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,0.205, + 0,1,0,1.5,3,0.205, + -1,0,0,0,3,3, + -1,0,0,0,3,0, + -1,0,0,0,0,0, + -0.57735,0.57735,-0.57735,0,3,0, + -0.265408,0.893371,0.362555,0,3,3, + 0,1,0,0,3,2.795, + -0.57735,0.57735,-0.57735,0,3,0, + 0,1,0,0,3,2.795, + 0,1,0,0,3,1.5, + -0.57735,0.57735,-0.57735,0,3,0, + 0,1,0,0,3,1.5, + 0,1,0,0,3,0.205, + 0,0,-1,0.205,3,0, + 0,0,-1,0,0,0, + 0,0,-1,0,3,0, + 0,0,-1,0,0,0, + 0,0,-1,0.205,3,0, + 0,0,-1,3,3,0, + 0.694747,0.50859,-0.50859,3,3,0, + 0,0.83205,-0.5547,0.205,3,0, + 0,1,0,1.5,3,0, + 0.694747,0.50859,-0.50859,3,3,0, + 0,1,0,1.5,3,0, + 0,1,0,2.795,3,0, + 0.57735,-0.57735,0.57735,2.795,3,0.205, + 0.57735,-0.57735,0.57735,0,0,0, + 0.57735,-0.57735,0.57735,3,3,0, + 0.57735,-0.57735,0.57735,0,0,0, + 0.57735,-0.57735,0.57735,2.795,3,0.205, + 0.57735,-0.57735,0.57735,0,3,3, + -0.265408,0.893371,0.362555,0,3,3, + 0.468609,0.748873,0.468609,2.795,3,0.205, + 0,1,0,2.1475,3,0.8525, + -0.265408,0.893371,0.362555,0,3,3, + 0,1,0,2.1475,3,0.8525, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0,3,3, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,2.795, + 0,1,0,0.205,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,1.5,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,0.205,3,1.5, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0, + 0,1,0,0.205,3,0, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0, + 0,1,0,2.795,3,0, + 0,1,0,1.5,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,0.205,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,2.795, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,0.205, + 0,1,0,0.205,3,0.205, + 0,1,0,0,3,1.5, + 0,1,0,0.205,3,1.5, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,0, + 0,1,0,0.205,3,0, + 0,1,0,1.5,3,0, + 0,1,0,0.205,3,0.205, + 0,1,0,1.5,3,0.205, + 0,1,0,0.205,3,1.5, + 0,1,0,1.5,3,0.205, + 0,1,0,0.205,3,0.205 +}; +static const struct gllist lament_model_tetra_dwn_frame = { GL_N3F_V3F, GL_TRIANGLES, 90, lament_model_tetra_dwn_data, 0 }; +const struct gllist *lament_model_tetra_dwn = &lament_model_tetra_dwn_frame; + +static const float lament_model_tetra_une_data[] = { + 1,0,0,3,3,0, + 1,0,0,3,3,3, + 1,0,0,3,0,3, + 0.57735,0.57735,0.57735,3,3,3, + 0.50859,0.50859,-0.694747,3,3,0, + 0,1,0,3,3,0.205, + 0.57735,0.57735,0.57735,3,3,3, + 0,1,0,3,3,0.205, + 0,1,0,3,3,1.5, + 0.57735,0.57735,0.57735,3,3,3, + 0,1,0,3,3,1.5, + 0,1,0,3,3,2.795, + 0,0,1,3,0,3, + 0,0,1,0.205,3,3, + 0,0,1,0,3,3, + 0,0,1,0.205,3,3, + 0,0,1,3,0,3, + 0,0,1,1.5,3,3, + 0,0,1,1.5,3,3, + 0,0,1,3,0,3, + 0,0,1,2.795,3,3, + 0,0,1,2.795,3,3, + 0,0,1,3,0,3, + 0,0,1,3,3,3, + 0,1,0,2.795,3,1.5, + 0,1,0,2.795,3,0.205, + 0,1,0,2.1475,3,0.8525, + 0,1,0,3,3,0.205, + 0,1,0,3,3,0, + 0,1,0,2.795,3,0.205, + -0.57735,-0.57735,-0.57735,3,0,3, + -0.57735,-0.57735,-0.57735,2.795,3,0.205, + -0.57735,-0.57735,-0.57735,3,3,0, + -0.57735,-0.57735,-0.57735,2.795,3,0.205, + -0.57735,-0.57735,-0.57735,3,0,3, + -0.57735,-0.57735,-0.57735,2.1475,3,0.8525, + -0.57735,-0.57735,-0.57735,2.1475,3,0.8525, + -0.57735,-0.57735,-0.57735,3,0,3, + -0.57735,-0.57735,-0.57735,0.8525,3,2.1475, + -0.57735,-0.57735,-0.57735,0.8525,3,2.1475, + -0.57735,-0.57735,-0.57735,3,0,3, + -0.57735,-0.57735,-0.57735,0.205,3,2.795, + -0.57735,-0.57735,-0.57735,0.205,3,2.795, + -0.57735,-0.57735,-0.57735,3,0,3, + -0.57735,-0.57735,-0.57735,0,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,0.205, + 0,1,0,3,3,0.205, + 0,1,0,2.795,3,1.5, + 0,1,0,3,3,1.5, + 0,1,0,0.205,3,3, + 0,1,0,0.205,3,2.795, + 0,1,0,0,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,0.8525,3,2.1475, + 0,1,0,0.205,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,0.205,3,3, + 0,1,0,1.5,3,3, + 0,1,0,0.8525,3,2.1475, + 0,1,0,2.795,3,1.5, + 0,1,0,2.1475,3,0.8525, + 0,1,0,2.795,3,1.5, + 0,1,0,0.8525,3,2.1475, + 0,1,0,1.5,3,2.795, + 0,1,0,2.795,3,3, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,3,3,2.795, + 0,1,0,2.795,3,3, + 0,1,0,3,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,2.795,3,1.5, + 0,1,0,1.5,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,2.795, + 0,1,0,2.795,3,2.795, + 0,1,0,1.5,3,3, + 0,1,0,2.795,3,3 +}; +static const struct gllist lament_model_tetra_une_frame = { GL_N3F_V3F, GL_TRIANGLES, 90, lament_model_tetra_une_data, 0 }; +const struct gllist *lament_model_tetra_une = &lament_model_tetra_une_frame; + +static const float lament_model_tetra_usw_data[] = { + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,0.205,0,1.5, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,1.5,0,2.795, + 0,0,1,0.205,0,3, + 0,0,1,0,3,3, + 0,0,1,0,0,3, + 0,0,1,0,3,3, + 0,0,1,0.205,0,3, + 0,0,1,3,0,3, + 0.694747,-0.50859,0.50859,3,0,3, + 0,-0.83205,0.5547,0.205,0,3, + 0,-1,0,1.5,0,3, + 0.694747,-0.50859,0.50859,3,0,3, + 0,-1,0,1.5,0,3, + 0,-1,0,2.795,0,3, + -1,0,0,0,3,3, + -1,0,0,0,0,2.795, + -1,0,0,0,0,3, + -1,0,0,0,0,2.795, + -1,0,0,0,3,3, + -1,0,0,0,0,1.5, + -1,0,0,0,0,1.5, + -1,0,0,0,3,3, + -1,0,0,0,0,0.205, + -1,0,0,0,0,0.205, + -1,0,0,0,3,3, + -1,0,0,0,0,0, + 0.57735,0.57735,-0.57735,0,3,3, + 0.57735,0.57735,-0.57735,0.205,0,0.205, + 0.57735,0.57735,-0.57735,0,0,0, + 0.57735,0.57735,-0.57735,0.205,0,0.205, + 0.57735,0.57735,-0.57735,0,3,3, + 0.57735,0.57735,-0.57735,0.8525,0,0.8525, + 0.57735,0.57735,-0.57735,0.8525,0,0.8525, + 0.57735,0.57735,-0.57735,0,3,3, + 0.57735,0.57735,-0.57735,2.1475,0,2.1475, + 0.57735,0.57735,-0.57735,2.1475,0,2.1475, + 0.57735,0.57735,-0.57735,0,3,3, + 0.57735,0.57735,-0.57735,2.795,0,2.795, + 0.57735,0.57735,-0.57735,2.795,0,2.795, + 0.57735,0.57735,-0.57735,0,3,3, + 0.57735,0.57735,-0.57735,3,0,3, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.8525,0,0.8525, + 0,-1,0,2.795,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,1.5,0,3, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.1475,0,2.1475, + 0,-1,0,2.795,0,2.795, + 0,-1,0,0,0,0.205, + 0,-1,0,0,0,0, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0.205,0,3, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,2.795, + 0,-1,0,0.205,0,3, + 0,-1,0,0,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,2.795, + 0,-1,0,0.205,0,2.795, + 0,-1,0,1.5,0,3, + 0,-1,0,0.205,0,3, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,0.205, + 0,-1,0,0,0,0.205, + 0,-1,0,0.205,0,1.5, + 0,-1,0,0,0,1.5, + 0,-1,0,0.205,0,2.795, + 0,-1,0,0.205,0,1.5, + 0,-1,0,1.5,0,2.795, + 0,-1,0,2.795,0,3, + 0,-1,0,2.795,0,2.795, + 0,-1,0,3,0,3 +}; +static const struct gllist lament_model_tetra_usw_frame = { GL_N3F_V3F, GL_TRIANGLES, 90, lament_model_tetra_usw_data, 0 }; +const struct gllist *lament_model_tetra_usw = &lament_model_tetra_usw_frame; diff --git a/hacks/glx/lavalite.c b/hacks/glx/lavalite.c new file mode 100644 index 0000000..73d5805 --- /dev/null +++ b/hacks/glx/lavalite.c @@ -0,0 +1,1539 @@ +/* lavalite --- 3D Simulation a Lava Lite, written by jwz. + * + * This software Copyright (c) 2002-2017 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * LAVA, LAVA LITE, LAVA WORLD INTERNATIONAL and the configuration of the + * LAVA brand motion lamp are registered trademarks of Haggerty Enterprises, + * Inc. The configuration of the globe and base of the motion lamp are + * registered trademarks of Haggerty Enterprises, Inc. in the U.S.A. and in + * other countries around the world. + * + * Official Lava Lite web site: http://www.lavaworld.com/ + * + * Implementation details: + * + * The blobs are generated using metaballs. For an explanation of what + * those are, see http://astronomy.swin.edu.au/~pbourke/modelling/implicitsurf/ + * or http://www.fifi.org/doc/povray-manual/pov30005.htm + * + * Basically, each bubble of lava is a few (4) overlapping spherical metaballs + * of various sizes following similar but slightly different steep, slow + * parabolic arcs from the bottom to the top and back. + * + * We then polygonize the surface of the lava using the marching squares + * algorithm implemented in marching.c. + * + * Like real lavalites, this program is very slow. + * + * Surprisingly, it's loading the CPU and not the graphics engine: the speed + * bottleneck is in *computing* the scene rather than *rendering* it. We + * actually don't use a huge number of polygons, but computing the mesh for + * the surface takes a lot of cycles. + * + * I eliminated all the square roots, but there is still a lot of + * floating-point multiplication in here. I tried optimizing away the + * fp divisions, but that didn't seem to make a difference. + * + * -style lamp shape: classic, giant, cone, rocket, or random. + * -speed frequency at which new blobs launch. + * -resolution density of the polygon mesh. + * -count max number of blobs allowed at once. + * -wander, -spin whether to roll the scene around the screen. + * -lava-color color of the blobbies + * -fluid-color color of the stuff the blobbies float in + * -base-color color of the base of the lamp + * -table-color color of the table under the lamp + * -impatient at startup, skip forward in the animation so + * that at least one blob is fully exposed. + * + * TODO: + * + * - make the table look better, somehow. + * - should the lava be emissive? should the one at the bottom be + * more brightly colored than the ones at the top? light distance? + * - is there some way to put a specular reflection on the front glass + * itself? Maybe render it twice with FRONT/BACK tweaked, or alpha + * with depth buffering turned off? + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*geometry: 600x900\n" \ + "*count: " DEF_COUNT " \n" \ + +# define free_lavalite 0 +# define release_lavalite 0 + + +#define BLOBS_PER_GROUP 4 + +#define GRAVITY 0.000013 /* odwnward acceleration */ +#define CONVECTION 0.005 /* initial upward velocity (bell curve) */ +#define TILT 0.00166666 /* horizontal velocity (bell curve) */ + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef ABS +#define ABS(n) ((n)<0?-(n):(n)) +#undef SIGNOF +#define SIGNOF(n) ((n)<0?-1:1) + +#include "xlockmore.h" +#include "marching.h" +#include "rotator.h" +#include "gltrackball.h" +#include "ximage-loader.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "Z" +#define DEF_WANDER "False" +#define DEF_SPEED "0.003" +#define DEF_RESOLUTION "40" +#define DEF_SMOOTH "True" +#define DEF_COUNT "3" +#define DEF_STYLE "random" +#define DEF_IMPATIENT "False" +#define DEF_LCOLOR "#FF0000" /* lava */ +#define DEF_FCOLOR "#00AAFF" /* fluid */ +#define DEF_BCOLOR "#666666" /* base */ +#define DEF_TCOLOR "#000000" /*"#00FF00"*/ /* table */ + +#define DEF_FTEX "(none)" +#define DEF_BTEX "(none)" +#define DEF_TTEX "(none)" + +typedef struct metaball metaball; + +struct metaball { + + Bool alive_p; + Bool static_p; + + double r; /* hard radius */ + double R; /* radius of field of influence */ + + double z; /* vertical position */ + double pos_r; /* position on horizontal circle */ + double pos_th; /* position on horizontal circle */ + double dr, dz; /* current velocity */ + + double x, y; /* h planar position - compused from the above */ + + metaball *leader; /* stay close to this other ball */ +}; + + +typedef enum { CLASSIC = 0, GIANT, CONE, ROCKET } lamp_style; +typedef enum { CAP = 100, BOTTLE, BASE } lamp_part; + +typedef struct { + lamp_part part; + GLfloat elevation; + GLfloat radius; + GLfloat texture_elevation; +} lamp_geometry; + +static const lamp_geometry classic_lamp[] = { + { CAP, 1.16, 0.089, 0.00 }, + { BOTTLE, 0.97, 0.120, 0.40 }, + { BOTTLE, 0.13, 0.300, 0.87 }, + { BOTTLE, 0.07, 0.300, 0.93 }, + { BASE, 0.00, 0.280, 0.00 }, + { BASE, -0.40, 0.120, 0.50 }, + { BASE, -0.80, 0.280, 1.00 }, + { 0, 0, 0, 0 }, +}; + +static const lamp_geometry giant_lamp[] = { + { CAP, 1.12, 0.105, 0.00 }, + { BOTTLE, 0.97, 0.130, 0.30 }, + { BOTTLE, 0.20, 0.300, 0.87 }, + { BOTTLE, 0.15, 0.300, 0.93 }, + { BASE, 0.00, 0.230, 0.00 }, + { BASE, -0.18, 0.140, 0.20 }, + { BASE, -0.80, 0.280, 1.00 }, + { 0, 0, 0, 0 }, +}; + +static const lamp_geometry cone_lamp[] = { + { CAP, 1.35, 0.001, 0.00 }, + { CAP, 1.35, 0.020, 0.00 }, + { CAP, 1.30, 0.055, 0.05 }, + { BOTTLE, 0.97, 0.120, 0.40 }, + { BOTTLE, 0.13, 0.300, 0.87 }, + { BASE, 0.00, 0.300, 0.00 }, + { BASE, -0.04, 0.320, 0.04 }, + { BASE, -0.60, 0.420, 0.50 }, + { 0, 0, 0, 0 }, +}; + +static const lamp_geometry rocket_lamp[] = { + { CAP, 1.35, 0.001, 0.00 }, + { CAP, 1.34, 0.020, 0.00 }, + { CAP, 1.30, 0.055, 0.05 }, + { BOTTLE, 0.97, 0.120, 0.40 }, + { BOTTLE, 0.13, 0.300, 0.87 }, + { BOTTLE, 0.07, 0.300, 0.93 }, + { BASE, 0.00, 0.280, 0.00 }, + { BASE, -0.50, 0.180, 0.50 }, + { BASE, -0.75, 0.080, 0.75 }, + { BASE, -0.80, 0.035, 0.80 }, + { BASE, -0.90, 0.035, 1.00 }, + { 0, 0, 0, 0 }, +}; + + + +typedef struct { + GLXContext *glx_context; + lamp_style style; + const lamp_geometry *model; + rotator *rot; + rotator *rot2; + trackball_state *trackball; + Bool button_down_p; + + GLfloat max_bottle_radius; /* radius of widest part of the bottle */ + + GLfloat launch_chance; /* how often to percolate */ + int blobs_per_group; /* how many metaballs we launch at once */ + Bool just_started_p; /* so we launch some goo right away */ + + int grid_size; /* resolution for marching-cubes */ + int nballs; + metaball *balls; + + GLuint bottle_list; + GLuint ball_list; + + int bottle_poly_count; /* polygons in the bottle only */ + +} lavalite_configuration; + +static lavalite_configuration *bps = NULL; + +static char *do_spin; +static char *do_style; +static GLfloat speed; +static Bool do_wander; +static int resolution; +static Bool do_smooth; +static Bool do_impatient; + +static char *lava_color_str, *fluid_color_str, *base_color_str, + *table_color_str; +static char *fluid_tex, *base_tex, *table_tex; + +static GLfloat lava_color[4], fluid_color[4], base_color[4], table_color[4]; + +static const GLfloat lava_spec[4] = {1.0, 1.0, 1.0, 1.0}; +static const GLfloat lava_shininess = 128.0; +static const GLfloat foot_color[4] = {0.2, 0.2, 0.2, 1.0}; + +static const GLfloat light0_pos[4] = {-0.6, 0.0, 1.0, 0.0}; +static const GLfloat light1_pos[4] = { 1.0, 0.0, 0.2, 0.0}; +static const GLfloat light2_pos[4] = { 0.6, 0.0, 1.0, 0.0}; + + + +static XrmOptionDescRec opts[] = { + { "-style", ".style", XrmoptionSepArg, 0 }, + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-resolution", ".resolution", XrmoptionSepArg, 0 }, + { "-smooth", ".smooth", XrmoptionNoArg, "True" }, + { "+smooth", ".smooth", XrmoptionNoArg, "False" }, + { "-impatient", ".impatient", XrmoptionNoArg, "True" }, + { "+impatient", ".impatient", XrmoptionNoArg, "False" }, + + { "-lava-color", ".lavaColor", XrmoptionSepArg, 0 }, + { "-fluid-color", ".fluidColor", XrmoptionSepArg, 0 }, + { "-base-color", ".baseColor", XrmoptionSepArg, 0 }, + { "-table-color", ".tableColor", XrmoptionSepArg, 0 }, + + { "-fluid-texture",".fluidTexture", XrmoptionSepArg, 0 }, + { "-base-texture", ".baseTexture", XrmoptionSepArg, 0 }, + { "-table-texture",".tableTexture", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_style, "style", "Style", DEF_STYLE, t_String}, + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&resolution, "resolution", "Resolution", DEF_RESOLUTION, t_Int}, + {&do_smooth, "smooth", "Smooth", DEF_SMOOTH, t_Bool}, + {&do_impatient, "impatient", "Impatient", DEF_IMPATIENT, t_Bool}, + + {&lava_color_str, "lavaColor", "LavaColor", DEF_LCOLOR, t_String}, + {&fluid_color_str, "fluidColor", "FluidColor", DEF_FCOLOR, t_String}, + {&base_color_str, "baseColor", "BaseColor", DEF_BCOLOR, t_String}, + {&table_color_str, "tableColor", "TableColor", DEF_TCOLOR, t_String}, + + {&fluid_tex, "fluidTexture", "FluidTexture", DEF_FTEX, t_String}, + {&base_tex, "baseTexture", "BaseTexture", DEF_BTEX, t_String}, + {&table_tex, "tableTexture", "BaseTexture", DEF_TTEX, t_String}, +}; + +ENTRYPOINT ModeSpecOpt lavalite_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_lavalite (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 3; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + + +/* Textures + */ + +static Bool +load_texture (ModeInfo *mi, const char *filename) +{ + Display *dpy = mi->dpy; + Visual *visual = mi->xgwa.visual; + char buf[1024]; + XImage *image; + + if (!filename || + !*filename || + !strcasecmp (filename, "(none)")) + { + glDisable (GL_TEXTURE_2D); + return False; + } + + image = file_to_ximage (dpy, visual, filename); + if (!image) return False; + + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + image->width, image->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image->data); + sprintf (buf, "texture: %.100s (%dx%d)", + filename, image->width, image->height); + check_gl_error(buf); + + glPixelStorei (GL_UNPACK_ALIGNMENT, 4); + glPixelStorei (GL_UNPACK_ROW_LENGTH, image->width); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glEnable (GL_TEXTURE_2D); + return True; +} + + + +/* Generating the lamp's bottle, caps, and base. + */ + +static int +draw_disc (GLfloat r, GLfloat z, int faces, Bool up_p, Bool wire) +{ + int j; + GLfloat th; + GLfloat step = M_PI * 2 / faces; + int polys = 0; + GLfloat x, y; + + glFrontFace (up_p ? GL_CW : GL_CCW); + glNormal3f (0, (up_p ? 1 : -1), 0); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + + x = r; + y = 0; + + for (j = 0, th = 0; j <= faces; j++) + { + glTexCoord2f (-j / (GLfloat) faces, 1); + glVertex3f (0, z, 0); + + glTexCoord2f (-j / (GLfloat) faces, 0); + glVertex3f (x, z, y); + + th += step; + x = r * cos (th); + y = r * sin (th); + + glTexCoord2f (-j / (GLfloat) faces, 0); + glVertex3f (x, z, y); + + polys++; + } + glEnd(); + + return polys; +} + + +static int +draw_tube (GLfloat r0, GLfloat r1, + GLfloat z0, GLfloat z1, + GLfloat t0, GLfloat t1, + int faces, Bool inside_out_p, Bool smooth_p, Bool wire) +{ + int polys = 0; + GLfloat th; + GLfloat x, y, x0=0, y0=0; + GLfloat step = M_PI * 2 / faces; + GLfloat s2 = step/2; + int i; + + glFrontFace (inside_out_p ? GL_CW : GL_CCW); + glBegin (wire ? GL_LINES : (smooth_p ? GL_QUAD_STRIP : GL_QUADS)); + + th = 0; + x = 1; + y = 0; + + if (!smooth_p) + { + x0 = cos (s2); + y0 = sin (s2); + } + + if (smooth_p) faces++; + + for (i = 0; i < faces; i++) + { + int nsign = (inside_out_p ? -1 : 1); + + if (smooth_p) + glNormal3f (x * nsign, z1, y * nsign); + else + glNormal3f (x0 * nsign, z1, y0 * nsign); + + glTexCoord2f (nsign * -i / (GLfloat) faces, 1-t1); + glVertex3f (x * r1, z1, y * r1); + + glTexCoord2f (nsign * -i / (GLfloat) faces, 1-t0); + glVertex3f (x * r0, z0, y * r0); + + th += step; + x = cos (th); + y = sin (th); + + if (!smooth_p) + { + x0 = cos (th + s2); + y0 = sin (th + s2); + + glTexCoord2f (nsign * -(i+1) / (double) faces, 1-t0); + glVertex3f (x * r0, z0, y * r0); + + glTexCoord2f (nsign * -(i+1) / (double) faces, 1-t1); + glVertex3f (x * r1, z1, y * r1); + } + + polys++; + } + glEnd(); + + return polys; +} + + +static int +draw_table (GLfloat z, Bool wire) +{ + GLfloat faces = 6; + GLfloat step = M_PI * 2 / faces; + GLfloat s = 8; + GLfloat th; + int j; + int polys = 0; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, table_color); + + glFrontFace(GL_CW); + glNormal3f(0, 1, 0); + glBegin(wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN); + + if (! wire) + { + glTexCoord2f (-0.5, 0.5); + glVertex3f(0, z, 0); + } + + for (j = 0, th = 0; j <= faces; j++) + { + GLfloat x = cos (th); + GLfloat y = sin (th); + glTexCoord2f (-(x+1)/2.0, (y+1)/2.0); + glVertex3f(x*s, z, y*s); + th += step; + polys++; + } + glEnd(); + return polys; +} + + +static int +draw_wing (GLfloat w, GLfloat h, GLfloat d, Bool wire) +{ + static const int coords[2][8][2] = { + { { 0, 0 }, + { 10, 10 }, + { 20, 23 }, + { 30, 41 }, + { 40, 64 }, + { 45, 81 }, + { 50, 103 }, + { 53, 134 } }, + { { 0, 54 }, + { 10, 57 }, + { 20, 64 }, + { 30, 75 }, + { 40, 92 }, + { 45, 104 }, + { 50, 127 }, + { 51, 134 } + } + }; + + int polys = 0; + int maxx = coords[0][countof(coords[0])-1][0]; + int maxy = coords[0][countof(coords[0])-1][1]; + unsigned int x; + + for (x = 1; x < countof(coords[0]); x++) + { + GLfloat px0 = (GLfloat) coords[0][x-1][0] / maxx * w; + GLfloat py0 = (GLfloat) coords[0][x-1][1] / maxy * h; + GLfloat px1 = (GLfloat) coords[1][x-1][0] / maxx * w; + GLfloat py1 = (GLfloat) coords[1][x-1][1] / maxy * h; + GLfloat px2 = (GLfloat) coords[0][x ][0] / maxx * w; + GLfloat py2 = (GLfloat) coords[0][x ][1] / maxy * h; + GLfloat px3 = (GLfloat) coords[1][x ][0] / maxx * w; + GLfloat py3 = (GLfloat) coords[1][x ][1] / maxy * h; + GLfloat zz = d/2; + + /* Left side + */ + glFrontFace (GL_CW); + glNormal3f (0, 0, -1); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + + glTexCoord2f (px0, py0); glVertex3f (px0, -py0, -zz); + glTexCoord2f (px1, py1); glVertex3f (px1, -py1, -zz); + glTexCoord2f (px3, py3); glVertex3f (px3, -py3, -zz); + glTexCoord2f (px2, py2); glVertex3f (px2, -py2, -zz); + polys++; + glEnd(); + + /* Right side + */ + glFrontFace (GL_CCW); + glNormal3f (0, 0, -1); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(px0, py0); glVertex3f (px0, -py0, zz); + glTexCoord2f(px1, py1); glVertex3f (px1, -py1, zz); + glTexCoord2f(px3, py3); glVertex3f (px3, -py3, zz); + glTexCoord2f(px2, py2); glVertex3f (px2, -py2, zz); + polys++; + glEnd(); + + /* Top edge + */ + glFrontFace (GL_CCW); + glNormal3f (1, -1, 0); /* #### wrong */ + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(px0, py0); glVertex3f (px0, -py0, -zz); + glTexCoord2f(px0, py0); glVertex3f (px0, -py0, zz); + glTexCoord2f(px2, py2); glVertex3f (px2, -py2, zz); + glTexCoord2f(px2, py2); glVertex3f (px2, -py2, -zz); + polys++; + glEnd(); + + /* Bottom edge + */ + glFrontFace (GL_CW); + glNormal3f (-1, 1, 0); /* #### wrong */ + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f(px1, py1); glVertex3f (px1, -py1, -zz); + glTexCoord2f(px1, py1); glVertex3f (px1, -py1, zz); + glTexCoord2f(px3, py3); glVertex3f (px3, -py3, zz); + glTexCoord2f(px3, py3); glVertex3f (px3, -py3, -zz); + polys++; + glEnd(); + + + } + + return polys; + +} + + +static void +generate_bottle (ModeInfo *mi) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int faces = resolution * 1.5; + Bool smooth = do_smooth; + + const lamp_geometry *top_slice = bp->model; + const char *current_texture = 0; + lamp_part last_part = 0; + + if (faces < 3) faces = 3; + else if (wire && faces > 20) faces = 20; + else if (faces > 60) faces = 60; + + bp->bottle_poly_count = 0; + + glNewList (bp->bottle_list, GL_COMPILE); + glPushMatrix(); + + glRotatef (90, 1, 0, 0); + glTranslatef (0, -0.5, 0); + + /* All parts of the lamp use the same specularity and shininess. */ + glMaterialfv (GL_FRONT, GL_SPECULAR, lava_spec); + glMateriali (GL_FRONT, GL_SHININESS, lava_shininess); + + while (1) + { + const lamp_geometry *bot_slice = top_slice + 1; + + const char *texture = 0; + GLfloat *color = 0; + GLfloat t0, t1; + + glDisable (GL_LIGHT2); + + switch (top_slice->part) + { + case CAP: + case BASE: + texture = base_tex; + color = base_color; + break; + case BOTTLE: + texture = fluid_tex; + color = fluid_color; + if (!wire) glEnable (GL_LIGHT2); /* light2 affects only fluid */ + break; + default: + abort(); + break; + } + + if (!wire && texture && texture != current_texture) + { + current_texture = texture; + load_texture (mi, current_texture); + } + + /* Color the discs darker than the tube walls. */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, foot_color); + + /* Do a top disc if this is the first slice of the CAP or BASE. + */ + if ((top_slice->part == CAP && last_part == 0) || + (top_slice->part == BASE && last_part == BOTTLE)) + bp->bottle_poly_count += + draw_disc (top_slice->radius, top_slice->elevation, faces, + True, wire); + + /* Do a bottom disc if this is the last slice of the CAP or BASE. + */ + if ((top_slice->part == CAP && bot_slice->part == BOTTLE) || + (top_slice->part == BASE && bot_slice->part == 0)) + { + const lamp_geometry *sl = (bot_slice->part == 0 + ? top_slice : bot_slice); + bp->bottle_poly_count += + draw_disc (sl->radius, sl->elevation, faces, False, wire); + } + + if (bot_slice->part == 0) /* done! */ + break; + + /* Do a tube or cone + */ + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + + t0 = top_slice->texture_elevation; + t1 = bot_slice->texture_elevation; + + /* Restart the texture coordinates for the glass. + */ + if (top_slice->part == BOTTLE) + { + Bool first_p = (top_slice[-1].part != BOTTLE); + Bool last_p = (bot_slice->part != BOTTLE); + if (first_p) t0 = 0; + if (last_p) t1 = 1; + } + + bp->bottle_poly_count += + draw_tube (top_slice->radius, bot_slice->radius, + top_slice->elevation, bot_slice->elevation, + t0, t1, + faces, + (top_slice->part == BOTTLE), + smooth, wire); + + last_part = top_slice->part; + top_slice++; + } + + if (bp->style == ROCKET) + { + int i; + for (i = 0; i < 3; i++) + { + glPushMatrix(); + glRotatef (120 * i, 0, 1, 0); + glTranslatef (0.14, -0.05, 0); + bp->bottle_poly_count += draw_wing (0.4, 0.95, 0.02, wire); + glPopMatrix(); + } + glTranslatef (0, -0.1, 0); /* move floor down a little */ + } + + + if (!wire) load_texture (mi, table_tex); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, table_color); + bp->bottle_poly_count += draw_table (top_slice->elevation, wire); + + + glPopMatrix (); + glDisable (GL_TEXTURE_2D); /* done with textured objects */ + glEndList (); +} + + + + +/* Generating blobbies + */ + +static double +bellrand (double extent) /* like frand(), but a bell curve. */ +{ + return (((frand(extent) + frand(extent) + frand(extent)) / 3) + - (extent/2)); +} + + +static void move_ball (ModeInfo *mi, metaball *b); + +/* Bring a ball into play, and re-randomize its values. + */ +static void +reset_ball (ModeInfo *mi, metaball *b) +{ +/* lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; */ + + b->r = 0.00001; + b->R = 0.12 + bellrand(0.10); + + b->pos_r = bellrand (0.9); + b->pos_th = frand(M_PI*2); + b->z = 0; + + b->dr = bellrand(TILT); + b->dz = CONVECTION; + + b->leader = 0; + + if (!b->alive_p) + b->alive_p = True; + + move_ball (mi, b); +} + + +/* returns the first metaball that is not in use, or 0. + */ +static metaball * +get_ball (ModeInfo *mi) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + for (i = 0; i < bp->nballs; i++) + { + metaball *b = &bp->balls[i]; + if (!b->alive_p) + return b; + } + return 0; +} + + +/* Generate the blobs that don't move: the ones at teh top and bottom + that are part of the scenery. + */ +static void +generate_static_blobs (ModeInfo *mi) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + metaball *b0, *b1; + int i; + + b0 = get_ball (mi); + if (!b0) abort(); + b0->static_p = True; + b0->alive_p = True; + b0->R = 0.6; + b0->r = 0.3; + + /* the giant blob at the bottom of the bottle. + */ + b0->pos_r = 0; + b0->pos_th = 0; + b0->dr = 0; + b0->dz = 0; + b0->x = 0; + b0->y = 0; + b0->z = -0.43; + + /* the small blob at the top of the bottle. + */ + b1 = get_ball (mi); + if (!b1) abort(); + + *b1 = *b0; + b1->R = 0.16; + b1->r = 0.135; + b1->z = 1.078; + + /* Some extra blobs at the bottom of the bottle, to jumble the surface. + */ + for (i = 0; i < bp->blobs_per_group; i++) + { + b1 = get_ball (mi); + if (!b1) abort(); + reset_ball (mi, b1); + b1->static_p = True; + b1->z = frand(0.04); + b1->dr = 0; + b1->dz = 0; + } +} + + +static GLfloat +max_bottle_radius (lavalite_configuration *bp) +{ + GLfloat r = 0; + const lamp_geometry *slice; + for (slice = bp->model; slice->part != 0; slice++) + { + if (slice->part == BOTTLE && slice->radius > r) + r = slice->radius; /* top */ + if (slice[1].radius > r) + r = slice[1].radius; /* bottom */ + } + return r; +} + + +static GLfloat +bottle_radius_at (lavalite_configuration *bp, GLfloat z) +{ + GLfloat topz = -999, botz = -999, topr = 0, botr = 0; + const lamp_geometry *slice; + GLfloat ratio; + + for (slice = bp->model; slice->part != 0; slice++) + if (z > slice->elevation) + { + slice--; + topz = slice->elevation; + topr = slice->radius; + break; + } + if (topz == -999) return 0; + + for (; slice->part != 0; slice++) + if (z > slice->elevation) + { + botz = slice->elevation; + botr = slice->radius; + break; + } + if (botz == -999) return 0; + + ratio = (z - botz) / (topz - botz); + + return (botr + ((topr - botr) * ratio)); +} + + +static void +move_ball (ModeInfo *mi, metaball *b) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + double gravity = GRAVITY; + double real_r; + + if (b->static_p) return; + + b->pos_r += b->dr; + b->z += b->dz; + + b->dz -= gravity; + + if (b->pos_r > 0.9) + { + b->pos_r = 0.9; + b->dr = -b->dr; + } + else if (b->pos_r < 0) + { + b->pos_r = -b->pos_r; + b->dr = -b->dr; + } + + real_r = b->pos_r * bottle_radius_at (bp, b->z); + + b->x = cos (b->pos_th) * real_r; + b->y = sin (b->pos_th) * real_r; + + if (b->z < -b->R) /* dropped below bottom of glass - turn it off */ + b->alive_p = False; +} + + +/* This function makes sure that balls that are part of a group always stay + relatively close to each other. + */ +static void +clamp_balls (ModeInfo *mi) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + for (i = 0; i < bp->nballs; i++) + { + metaball *b = &bp->balls[i]; + if (b->alive_p && b->leader) + { + double zslack = 0.1; + double minz = b->leader->z - zslack; + double maxz = b->leader->z + zslack; + + /* Try to keep the Z values near those of the leader. + Don't let it go out of range (above or below) and clamp it + if it does. If we've clamped it, make sure dz will be + moving it in the right direction (back toward the leader.) + + We aren't currently clamping r, only z -- doesn't seem to + be needed. + + This is kind of flaky, I think. Sometimes you can see + the blobbies "twitch". That's no good. + */ + + if (b->z < minz) + { + if (b->dz < 0) b->dz = -b->dz; + b->z = minz - b->dz; + } + + if (b->z > maxz) + { + if (b->dz > 0) b->dz = -b->dz; + b->z = maxz + b->dz; + } + } + } +} + + +static void +move_balls (ModeInfo *mi) /* for great justice */ +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + for (i = 0; i < bp->nballs; i++) + { + metaball *b = &bp->balls[i]; + if (b->alive_p) + move_ball (mi, b); + } + + clamp_balls (mi); +} + + + +/* Rendering blobbies using marching cubes. + */ + +static double +compute_metaball_influence (lavalite_configuration *bp, + double x, double y, double z, + int nballs, metaball *balls) +{ + double vv = 0; + int i; + + for (i = 0; i < nballs; i++) + { + metaball *b = &balls[i]; + double dx, dy, dz; + double d2, r, R, r2, R2; + + if (!b->alive_p) continue; + + dx = x - b->x; + dy = y - b->y; + dz = z - b->z; + R = b->R; + + if (dx > R || dx < -R || /* quick check before multiplying */ + dy > R || dy < -R || + dz > R || dz < -R) + continue; + + d2 = (dx*dx + dy*dy + dz*dz); + r = b->r; + + r2 = r*r; + R2 = R*R; + + if (d2 <= r2) /* (d <= r) inside the hard radius */ + vv += 1; + else if (d2 > R2) /* (d > R) outside the radius of influence */ + ; + else /* somewhere in between: linear drop-off from r=1 to R=0 */ + { + /* was: vv += 1 - ((d-r) / (R-r)); */ + vv += 1 - ((d2-r2) / (R2-r2)); + } + } + + return vv; +} + + +/* callback for marching_cubes() */ +static void * +obj_init (double grid_size, void *closure) +{ + lavalite_configuration *bp = (lavalite_configuration *) closure; + bp->grid_size = grid_size; + + return closure; +} + + +/* Returns True if the given point is outside of the glass tube. + */ +static double +clipped_by_glass_p (double x, double y, double z, + lavalite_configuration *bp) +{ + double d2, or, or2, ir2; + + or = bp->max_bottle_radius; + + if (x > or || x < -or || /* quick check before multiplying */ + y > or || y < -or) + return 0; + + d2 = (x*x + y*y); + or = bottle_radius_at (bp, z); + + or2 = or*or; + + if (d2 > or2) /* (sqrt(d) > or) */ + return 0; + + ir2 = or2 * 0.7; + + if (d2 > ir2) /* (sqrt(d) > ir) */ + { + double dr1 = or2; + double dr2 = ir2; + /* was: (1 - (d-ratio2) / (ratio1-ratio2)) */ + return (1 - (d2-dr2) / (dr1-dr2)); + } + + return 1; +} + + + +/* callback for marching_cubes() */ +static double +obj_compute (double x, double y, double z, void *closure) +{ + lavalite_configuration *bp = (lavalite_configuration *) closure; + double clip; + + x /= bp->grid_size; /* convert from 0-N to 0-1. */ + y /= bp->grid_size; + z /= bp->grid_size; + + x -= 0.5; /* X and Y range from -.5 to +.5; z ranges from 0-1. */ + y -= 0.5; + + clip = clipped_by_glass_p (x, y, z, bp); + if (clip == 0) return 0; + + return (clip * + compute_metaball_influence (bp, x, y, z, bp->nballs, bp->balls)); +} + + +/* callback for marching_cubes() */ +static void +obj_free (void *closure) +{ +} + + +/* Send a new blob travelling upward. + This blob will actually be composed of N metaballs that are near + each other. + */ +static void +launch_balls (ModeInfo *mi) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + metaball *b0 = get_ball (mi); + int i; + + if (!b0) return; + reset_ball (mi, b0); + + for (i = 0; i < bp->blobs_per_group; i++) + { + metaball *b1 = get_ball (mi); + if (!b1) break; + *b1 = *b0; + + reset_ball (mi, b1); + b1->leader = b0; + +# define FROB(FIELD,AMT) \ + b1->FIELD += (bellrand(AMT) * b0->FIELD) + + /* FROB (pos_r, 0.7); */ + /* FROB (pos_th, 0.7); */ + FROB (dr, 0.8); + FROB (dz, 0.6); +# undef FROB + } + +} + + +static void +animate_lava (ModeInfo *mi) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + Bool just_started_p = bp->just_started_p; + + double isolevel = 0.3; + + /* Maybe bubble a new blobby to the surface. + */ + if (just_started_p || + frand(1.0) < bp->launch_chance) + { + bp->just_started_p = False; + launch_balls (mi); + + if (do_impatient && just_started_p) + while (1) + { + int i; + move_balls (mi); + for (i = 0; i < bp->nballs; i++) + { + metaball *b = &bp->balls[i]; + if (b->alive_p && !b->static_p && !b->leader && + b->z > 0.5) + goto DONE; + } + } + DONE: ; + } + + move_balls (mi); + + glNewList (bp->ball_list, GL_COMPILE); + glPushMatrix(); + + glMaterialfv (GL_FRONT, GL_SPECULAR, lava_spec); + glMateriali (GL_FRONT, GL_SHININESS, lava_shininess); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, lava_color); + + /* For the blobbies, the origin is on the axis at the bottom of the + glass bottle; and the top of the bottle is +1 on Z. + */ + glTranslatef (0, 0, -0.5); + + mi->polygon_count = 0; + { + double s; + if (bp->grid_size == 0) bp->grid_size = 1; /* first time through */ + s = 1.0/bp->grid_size; + + glPushMatrix(); + glTranslatef (-0.5, -0.5, 0); + glScalef (s, s, s); + marching_cubes (resolution, isolevel, wire, do_smooth, + obj_init, obj_compute, obj_free, bp, + &mi->polygon_count); + glPopMatrix(); + } + + mi->polygon_count += bp->bottle_poly_count; + + glPopMatrix(); + glEndList (); +} + + + +/* Startup initialization + */ + +ENTRYPOINT Bool +lavalite_handle_event (ModeInfo *mi, XEvent *event) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +static void +parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a) +{ + XColor c; + a[3] = 1.0; /* alpha */ + + if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c)) + { + fprintf (stderr, "%s: can't parse %s color %s", progname, name, s); + exit (1); + } + a[0] = c.red / 65536.0; + a[1] = c.green / 65536.0; + a[2] = c.blue / 65536.0; +} + + +ENTRYPOINT void +init_lavalite (ModeInfo *mi) +{ + lavalite_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_lavalite (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + { + char *s = do_style; + if (!s || !*s || !strcasecmp (s, "classic")) bp->style = CLASSIC; + else if (!strcasecmp (s, "giant")) bp->style = GIANT; + else if (!strcasecmp (s, "cone")) bp->style = CONE; + else if (!strcasecmp (s, "rocket")) bp->style = ROCKET; + else if (!strcasecmp (s, "random")) + { + if (random() & 1) bp->style = CLASSIC; /* half the time */ + else bp->style = (random() % ((int) ROCKET+1)); + } + else + { + fprintf (stderr, + "%s: style must be Classic, Giant, Cone, or Rocket (not \"%s\")\n", + progname, s); + exit (1); + } + } + + parse_color (mi, "lava", lava_color_str, lava_color); + parse_color (mi, "fluid", fluid_color_str, fluid_color); + parse_color (mi, "base", base_color_str, base_color); + parse_color (mi, "table", table_color_str, table_color); + + if (!wire) + { + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc0[4] = {0.0, 1.0, 1.0, 1.0}; + GLfloat spc1[4] = {1.0, 0.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glEnable(GL_NORMALIZE); + glShadeModel(GL_SMOOTH); + + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc0); + + glLightfv(GL_LIGHT1, GL_AMBIENT, amb); + glLightfv(GL_LIGHT1, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT1, GL_SPECULAR, spc1); + + glLightfv(GL_LIGHT2, GL_AMBIENT, amb); + glLightfv(GL_LIGHT2, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT2, GL_SPECULAR, spc0); + } + + { + Bool spinx=False, spiny=False, spinz=False; + double spin_speed = 0.4; + double wander_speed = 0.03; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') spinx = True; + else if (*s == 'y' || *s == 'Y') spiny = True; + else if (*s == 'z' || *s == 'Z') spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + bp->rot = make_rotator (spinx ? spin_speed : 0, + spiny ? spin_speed : 0, + spinz ? spin_speed : 0, + 1.0, + do_wander ? wander_speed : 0, + False); + bp->rot2 = make_rotator (spin_speed, 0, 0, + 1, 0.1, + False); + bp->trackball = gltrackball_init (False); + + /* Tilt the scene a bit: lean the normal lamps toward the viewer, + and the huge lamps away. */ + gltrackball_reset (bp->trackball, + -0.3 + frand(0.6), + (bp->style == ROCKET || bp->style == GIANT + ? frand (0.2) + : -frand (0.6))); + } + + switch (bp->style) + { + case CLASSIC: bp->model = classic_lamp; break; + case GIANT: bp->model = giant_lamp; break; + case CONE: bp->model = cone_lamp; break; + case ROCKET: bp->model = rocket_lamp; break; + default: abort(); break; + } + + bp->max_bottle_radius = max_bottle_radius (bp); + + bp->launch_chance = speed; + bp->blobs_per_group = BLOBS_PER_GROUP; + bp->just_started_p = True; + + bp->nballs = (((MI_COUNT (mi) + 1) * bp->blobs_per_group) + + 2); + bp->balls = (metaball *) calloc (sizeof(*bp->balls), bp->nballs+1); + + bp->bottle_list = glGenLists (1); + bp->ball_list = glGenLists (1); + + generate_bottle (mi); + generate_static_blobs (mi); +} + + +/* Render one frame + */ + +ENTRYPOINT void +draw_lavalite (ModeInfo *mi) +{ + lavalite_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glMatrixMode (GL_MODELVIEW); + glPushMatrix (); + + { + double cx, cy, cz; /* camera position, 0-1. */ + double px, py, pz; /* object position, 0-1. */ + double rx, ry, rz; /* object rotation, 0-1. */ + + get_position (bp->rot2, 0, &cy, &cz, !bp->button_down_p); + get_rotation (bp->rot2, &cx, 0, 0, !bp->button_down_p); + + get_position (bp->rot, &px, &py, &pz, !bp->button_down_p); + get_rotation (bp->rot, &rx, &ry, &rz, !bp->button_down_p); + +#if 1 + cx = 0.5; + cy = 0.5; + cz = 1.0; + +#else /* #### this crud doesn't really work yet */ + + + /* We have c[xyz] parameters describing a camera position, but we don't + want to just map those to points in space: the lamp doesn't look very + good from the inside, or from underneath... + + Good observation points form a ring around the lamp: basically, a + torus ringing the lamp, parallel to the lamp's floor. + + We interpret cz as distance from the origin. + cy as elevation. + cx is then used as position in the torus (theta). + */ + + { + double cx2, cy2, cz2; + double d; + + cx2 = 0.5; + cy2 = 0.5; + cz2 = 1.0; + + cy2 = (cy * 0.4); /* cam elevation: 0.0 (table) - 0.4 up. */ + d = 0.9 + cz; /* cam distance: 0.9 - 1.9. */ + + cz2 = 0.5 + (d * cos (cx * M_PI * 2)); + cx2 = 0.5 + (d * sin (cx * M_PI * 2)); + + + cx = cx2; + cy = cy2; + cz = cz2; + } +#endif /* 0 */ + + glLoadIdentity(); + glRotatef(current_device_rotation(), 0, 0, 1); + + gluLookAt ((cx - 0.5) * 8, /* Position the camera */ + (cy - 0.5) * 8, + (cz - 0.5) * 8, + 0, 0, 0, + 0, 1, 0); + + gltrackball_rotate (bp->trackball); /* Apply mouse-based camera position */ + + glRotatef (-90, 1, 0, 0); /* Right side up */ + + + /* Place the lights relative to the object, before the object has + been rotated or wandered within the scene. */ + glLightfv(GL_LIGHT0, GL_POSITION, light0_pos); + glLightfv(GL_LIGHT1, GL_POSITION, light1_pos); + glLightfv(GL_LIGHT2, GL_POSITION, light2_pos); + + + /* Position the lamp in the scene according to the "wander" settings */ + glTranslatef ((px - 0.5), (py - 0.5), (pz - 0.5)); + + /* Rotate the object according to the "spin" settings */ + glRotatef (rx * 360, 1.0, 0.0, 0.0); + glRotatef (ry * 360, 0.0, 1.0, 0.0); + glRotatef (rz * 360, 0.0, 0.0, 1.0); + + /* Move the lamp up slightly: make 0,0 be at its vertical center. */ + switch (bp->style) + { + case CLASSIC: glTranslatef (0, 0, 0.33); break; + case GIANT: glTranslatef (0, 0, 0.33); break; + case CONE: glTranslatef (0, 0, 0.16); break; + case ROCKET: glTranslatef (0, 0, 0.30); + glScalef (0.85,0.85,0.85); break; + default: abort(); break; + } + } + + animate_lava (mi); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glCallList (bp->bottle_list); + glCallList (bp->ball_list); + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Lavalite", lavalite) + +#endif /* USE_GL */ diff --git a/hacks/glx/lavalite.man b/hacks/glx/lavalite.man new file mode 100644 index 0000000..3d7aad5 --- /dev/null +++ b/hacks/glx/lavalite.man @@ -0,0 +1,160 @@ +.de EX \"Begin example +.ne 5 +.if n .sp 1 +.if t .sp .5 +.nf +.in +.5i +.. +.de EE +.fi +.in -.5i +.if n .sp 1 +.if t .sp .5 +.. +.TH XScreenSaver 1 "18-May-2002" "X Version 11" +.SH NAME +lavalite - 3D OpenGL simulation of a Lavalite. +.SH SYNOPSIS +.B lavalite +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps] +[\-style \fIstyle\fP ] +[\-spin \fIxyz\fP ] [\-no-spin ] +[\-speed \fIfloat\fP ] +[\-resolution \fIinteger\fP ] +[\-count \fIinteger\fP ] +[\-no-smooth ] +[\-wireframe ] +[\-impatient ] +[\-lava-color \fIcolor\fP ] +[\-fluid-color \fIcolor\fP ] +[\-base-color \fIcolor\fP ] +[\-table-color \fIcolor\fP ] +[\-fluid-texture \fIfilename\fP ] +[\-base-texture \fIfilename\fP ] +[\-table-texture \fIfilename\fP ] +.SH DESCRIPTION +The \fIlavalite\fP program displays a 3D simulation of the famous lamp +of the same name. It requires a fast computer with fast OpenGL support. +.SH OPTIONS +.I lavalite +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-style \fIstyle\fP\fP +Specify which model of lamp to draw. Available models +are: \fBClassic\fP, \fBGiant\fP, \fBCone\fP, and \fBRocket\fP. +Default: random. +.TP 8 +.B \-spin \fIxyz\fP +Around which axes the model should auto-spin. Defaults to "Z", meaning +it rotates horizontally, but otherwise pitch or roll. +.TP 8 +.B \-no-spin +Same as \fB\-spin ''\fP. +.TP 8 +.B \-speed \fIfloat\fP +A number controlling the frequency at which new blobs launch: you can +think of this as being related to the the heat of the lightbulb in +the base. Default: 0.003. +.TP 8 +.B \-delay \fIusecs\fP +The delay between steps of the animation; default is 30000 (0.03 second.) +.TP 8 +.B \-resolution \fIinteger\fP +The size of the grid from which the mesh is created that is used +to polygonize the blobs. higher values will give very smooth looking +blobs, at the expense of speed. Default: 40. + +The options "-resolution 10 -no-smooth" look kind of interesting. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-count \fIinteger\fP +The maximum number of blobs that can be in motion at once. +Default: 3. +.TP 8 +.B \-no-smooth +Turn off smoothing: the objects in the scene will be facetted. +.TP 8 +.B \-wireframe +Render all objects in wireframe instead of as solids. +.TP 8 +.B \-impatient +Provide this option if you are. This will pre-warm the lamp, so when it +starts up, the first frame will show a blob already halfway up the lamp. +.TP 8 +.B \-lava-color \fIcolor\fP +Specifies the color of the blobbies. Default: red. +.TP 8 +.B \-fluid-color \fIcolor\fP +Specifies the color of the fluid that the blobbies float in. +Default: light blue. +.TP 8 +.B \-base-color \fIcolor\fP +Specifies the color of the lamp base, and the cap on top of the bottle. +Default: very dark gray. +.TP 8 +.B \-table-color \fIcolor\fP +Specifies the color of the table that the lamp is sitting on. +Default: black (meaning it is invisible.) +.TP 8 +.B \-fluid-texture \fIfilename\fP +An image file to wrap around the glass. + +Note that on most systems, GL textures must have dimensions that are a +power of two. + +Note also that colors and textures are both applied: so, if you apply a +texture and it isn't showing up, try specifying the corresponding color +as "white". Otherwise, the combination of the two might be too dark to +see. +.TP 8 +.B \-base-texture \fIfilename\fP +An image file to wrap around the base of the lamp, and the cap on top +of the bottle. +.TP 8 +.B \-table-texture \fItexture\fP +An image file to spread across the table that the lamp is sitting on. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1), + http://www.lavaworld.com/ + http://www.lavarnd.org/ +.SH COPYRIGHT +Copyright \(co 2002 by Jamie Zawinski. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +LAVA LITE\(rg and the configuration of the LAVA\(rg brand motion lamp +are registered trademarks of Haggerty Enterprises, Inc. The +configuration of the globe and base of the motion lamp are registered +trademarks of Haggerty Enterprises, Inc. in the U.S.A. and in other +countries around the world. + +.SH AUTHOR +Jamie Zawinski diff --git a/hacks/glx/lockward.c b/hacks/glx/lockward.c new file mode 100644 index 0000000..f15374b --- /dev/null +++ b/hacks/glx/lockward.c @@ -0,0 +1,970 @@ +/* + * lockward.c: First attempt at an Xscreensaver. + * + * Leo L. Schwab 2007.08.17 + **** + * Copyright (c) 2007 Leo L. Schwab + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to permit + * persons to whom the Software is furnished to do so, subject to the + * following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include +#include + +#include "xlockmore.h" +#include "colors.h" + + +/*************************************************************************** + * #defines + */ +#ifdef USE_GL /* whole file */ + +#define DEFAULTS "*delay: 20000 \n"\ + "*showFPS: False \n" + +#define release_lockward 0 + + +#define NUMOF(x) (sizeof ((x)) / sizeof ((*x))) + +#define NBLADES 12 +#define NSPINNERS 4 +#define NRADII 8 +#define COLORIDX_SHF 4 +#define SUBDIV 6 + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + + +/*************************************************************************** + * Structure definitions. + */ +struct lockward_context; /* Forward declaration. */ + +#define int8_t char +#define int16_t short +#define int32_t int +#define uint8_t unsigned char +#define uint16_t unsigned short +#define uint32_t unsigned int + +typedef struct bladestate { + uint8_t outer, inner; /* Radii */ +} bladestate; + +typedef struct spinnerstate { + GLfloat rot; /* Terminal rotation after count expires */ + GLfloat rotinc; /* Per-frame increment to rot. */ + XColor *colors; + bladestate *bladeidx; + int ncolors; /* n.4 fixed-point */ + int ccolor; /* n.4 fixed-point */ + int colorinc; /* n.4 fixed-point */ + int rotcount; + uint8_t nblades; +} spinnerstate; + +typedef struct blinkstate { + int (*drawfunc) (struct lockward_context *ctx, + struct blinkstate *bs); + uint32_t *noise; /* For draw_blink_segment_scatter() */ + GLfloat color[4]; + uint32_t val; + int16_t dwell; /* <0: sharp >0: decay */ + int16_t dwellcnt; + uint8_t type; + int8_t counter; + int8_t direction; + int8_t radius; +} blinkstate; + +enum blinktype { + BTYPE_RADIAL_SINGLE = 0, + BTYPE_RADIAL_RANDOM, + BTYPE_RADIAL_SEQ, + BTYPE_RADIAL_DOUBLESEQ, + BTYPE_SEGMENT_SINGLE, + BTYPE_SEGMENT_RANDOM, + BTYPE_CONCENTRIC_SINGLE, + BTYPE_CONCENTRIC_RANDOM, + BTYPE_CONCENTRIC_SEQ, + BTYPE_SEGMENT_SCATTER, + MAX_BTYPE +}; + +typedef struct { GLfloat x,y,z; } XYZ; + +typedef struct lockward_context { + GLXContext *glx_context; + + spinnerstate spinners[NSPINNERS]; + blinkstate blink; + + /* This used to put vertexes into lists without putting begin/end + into the same list! I didn't even know that worked. Well, it + doesn't work with jwzgles, so I changed it to not do that. */ + /* GLuint blades_outer, blades_inner; */ + XYZ points_outer[NRADII][SUBDIV+1]; + XYZ points_inner[NRADII][SUBDIV+1]; + + GLuint rings; + Bool blendmode; + int nextblink; + int fps; + +} lockward_context; + + +/*************************************************************************** + * Prototypes. + */ +ENTRYPOINT void free_lockward (ModeInfo *mi); + + +/*************************************************************************** + * Global variables. + */ +static lockward_context *g_ctx = NULL; +static Bool g_blink_p = True; +static int g_blades = NBLADES; +static int g_rotateidle_min, + g_rotateidle_max; +static int g_blinkidle_min, + g_blinkidle_max; +static int g_blinkdwell_min, + g_blinkdwell_max; + +#define DEF_BLINK "True" +#define DEF_ROTATEIDLEMIN "1000" +#define DEF_ROTATEIDLEMAX "6000" +#define DEF_BLINKIDLEMIN "1000" +#define DEF_BLINKIDLEMAX "9000" +#define DEF_BLINKDWELLMIN "100" +#define DEF_BLINKDWELLMAX "600" + + +static XrmOptionDescRec opts[] = { + { "-blink", ".blink", XrmoptionNoArg, "on" }, + { "+blink", ".blink", XrmoptionNoArg, "off" }, + { "-rotateidle-min", ".rotateidlemin", XrmoptionSepArg, 0 }, + { "-rotateidle-max", ".rotateidlemax", XrmoptionSepArg, 0 }, + { "-blinkidle-min", ".blinkidlemin", XrmoptionSepArg, 0 }, + { "-blinkidle-max", ".blinkidlemax", XrmoptionSepArg, 0 }, + { "-blinkdwell-min", ".blinkdwellmin", XrmoptionSepArg, 0 }, + { "-blinkdwell-max", ".blinkdwellmax", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + { &g_blink_p, "blink", "Blink", DEF_BLINK, t_Bool }, + { &g_rotateidle_min, "rotateidlemin", "Rotateidlemin", DEF_ROTATEIDLEMIN, t_Int }, + { &g_rotateidle_max, "rotateidlemax", "Rotateidlemax", DEF_ROTATEIDLEMAX, t_Int }, + { &g_blinkidle_min, "blinkidlemin", "Blinkidlemin", DEF_BLINKIDLEMIN, t_Int }, + { &g_blinkidle_max, "blinkidlemax", "Blinkidlemax", DEF_BLINKIDLEMAX, t_Int }, + { &g_blinkdwell_min, "blinkdwellmin", "Blinkdwellmin", DEF_BLINKDWELLMIN, t_Int }, + { &g_blinkdwell_max, "blinkdwellmax", "Blinkdwellmax", DEF_BLINKDWELLMAX, t_Int }, +}; + +static OptionStruct desc[] = { + { "-/+blink", "Turn on/off blinking effects." }, + { "-rotateidle-min", "Minimum idle time for rotators, in milliseconds." }, + { "-rotateidle-max", "Maximum idle time for rotators, in milliseconds." }, + { "-blinkidle-min", "Minimum idle time between blink effects, in milliseconds." }, + { "-blinkidle-max", "Maximum idle time between blink effects, in milliseconds." }, + { "-blinkdwell-min", "Minimum dwell time for blink effects, in milliseconds." }, + { "-blinkdwell-max", "Maximum dwell time for blink effects, in milliseconds." }, +}; + +ENTRYPOINT ModeSpecOpt lockward_opts = { + NUMOF(opts), opts, NUMOF(vars), vars, desc +}; + + +/*************************************************************************** + * Window management. + */ +ENTRYPOINT void +reshape_lockward (ModeInfo *mi, int width, int height) +{ + lockward_context *ctx = &g_ctx[MI_SCREEN (mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), + *(ctx->glx_context)); + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode (GL_PROJECTION); + glLoadIdentity (); + if (height > width) + glOrtho (-8.0, 8.0, -8.0 * h, 8.0 * h, -1, 1); + else + glOrtho (-8.0 / h, 8.0 / h, -8.0, 8.0, -1, 1); + + glMatrixMode (GL_MODELVIEW); +} + +ENTRYPOINT Bool +lockward_handle_event (ModeInfo *mi, XEvent *event) +{ + lockward_context *ctx = &g_ctx[MI_SCREEN (mi)]; + + if (event->xany.type == KeyPress) { + KeySym keysym; + char c = 0; + + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') { + ctx->blendmode ^= 1; + return True; + } + } + + return False; +} + + +/*************************************************************************** + * "Blade" routines. + */ +static void +random_blade_rot (lockward_context *ctx, struct spinnerstate *ss) +{ + /* + * The circle is divided up in to g_blades divisions. The idea here + * is to rotate to an exact division point. + * + * The target rotation is computed via random numbers. + * + * The time it takes to get there is a maximum of six seconds per + * division, and a minimum of one second (no matter how far away it + * is), and is selected by random numbers. + * + * The time value is converted into frames, and a per-frame rotation + * is computed. + * + * During rendering, we approach the target rotation by subtracting + * from it the per-frame rotation times the number of outstanding + * ticks. Doing it this way means we'll hit the target rotation + * exactly, without low-order errors creeping in to the values (at + * least not nearly as quickly). + */ + GLfloat d; + int dist; + + dist = random() % g_blades + 1; + + ss->rotcount = random() % (6 * dist * ctx->fps - ctx->fps) + + ctx->fps; + + if (random() & 4) + dist = -dist; + d = dist * 360.0 / (GLfloat) g_blades; + ss->rot += d; + ss->rotinc = d / (GLfloat) ss->rotcount; +} + + +/* + * A "blade" is pie-wedge shaped flat thing that is rotated around where the + * apex is/would be. Initially envisioned as 1/12th of a circle, but that + * could be configurable. The inner and outer edges are rounded off using + * six subdivisions so that, when multiple blades are assembled, it looks + * more like a circle and less like a polygon. + * + * The blade is assembled as a tri-fan. It is oriented centered at 3 + * o'clock. The blade is composed of two display lists -- arcs, essentially + * -- the outer and the inner one. The outer one *must* be called before + * the inner one, or the blade clockwise-ness will be wrong, and become + * invisible. Arcs of various radii are compiled. + */ + +static void +gen_blade_arcs (lockward_context *ctx) +{ + GLfloat here, there, step; + int i, n; + + here = 0; + there = M_PI * 2.0 / g_blades; + step = there / SUBDIV; + here -= SUBDIV * step / 2.0; + + /* + * Build outer blade arcs. + * Start at left side of outer radius. Strike all its vertices. + */ + for (n = 0; n < NRADII; ++n) { + /* glNewList (ctx->blades_outer + n, GL_COMPILE); */ + XYZ *a = ctx->points_outer[n]; + int j = 0; + for (i = SUBDIV; i >= 0; --i) { + /* glVertex3f (cos (here + step * i) * (n + 1.0), + sin (here + step * i) * (n + 1.0), 0); */ + a[j].x = cos (here + step * i) * (n + 1.0); + a[j].y = sin (here + step * i) * (n + 1.0); + a[j].z = 0; + j++; + } + if (j != SUBDIV+1) abort(); + /* glEndList (); */ + } + + /* + * Build inner blade arcs. + * Move to inner radius, strike all vertices in opposite order. + */ + for (n = 0; n < NRADII; ++n) { + /* glNewList (ctx->blades_inner + n, GL_COMPILE); */ + XYZ *a = ctx->points_inner[n]; + int j = 0; + for (i = 0; i <= SUBDIV; ++i) { + /* glVertex3f (cos (here + step * i) * (n + 1.0), + sin (here + step * i) * (n + 1.0), 0); */ + a[j].x = cos (here + step * i) * (n + 1.0); + a[j].y = sin (here + step * i) * (n + 1.0); + a[j].z = 0; + j++; + } + if (j != SUBDIV+1) abort(); + /* glEndList (); */ + } +} + +static void +gen_rings (lockward_context *ctx) +{ + GLfloat step; + int i, n; + + step = M_PI * 2.0 / (g_blades * SUBDIV); + + for (n = 0; n < NRADII - 1; ++n) { + glNewList (ctx->rings + n, GL_COMPILE); + glBegin (GL_TRIANGLE_STRIP); + for (i = g_blades * SUBDIV; i >= 0; --i) { + glVertex3f (cos (step * i) * (n + 1.0), + sin (step * i) * (n + 1.0), 0); + glVertex3f (cos (step * i) * (n + 2.0), + sin (step * i) * (n + 2.0), 0); + } + glEnd(); + glEndList (); + } +} + + +/*************************************************************************** + * "Blink" routines. + */ +static int +calc_interval_frames (lockward_context *ctx, int min, int max) +{ + /* + * Compute random interval between min and max milliseconds. + * Returned value is in frames. + */ + register int i; + + i = min; + if (max > min) + i += random() % (max - min); + + return i * ctx->fps / 1000; +} + +static void +set_alpha_by_dwell (struct blinkstate *bs) +{ + if (bs->dwell > 0) + bs->color[3] = (GLfloat) bs->dwellcnt / (GLfloat) bs->dwell; + else + bs->color[3] = bs->dwellcnt > (-bs->dwell >> 2) ? 1.0 : 0.0; +} + + +static void +draw_blink_blade (lockward_context *ctx, int inner, int outer, + Bool begin_p) +{ + int i; + if (begin_p) glBegin (GL_TRIANGLE_FAN); + /* glCallList (ctx->blades_outer + outer); */ + for (i = 0; i < countof(*ctx->points_outer); i++) + glVertex3f(ctx->points_outer[outer][i].x, + ctx->points_outer[outer][i].y, + ctx->points_outer[outer][i].z); + + /* glCallList (ctx->blades_inner + inner); */ + for (i = 0; i < countof(*ctx->points_inner); i++) + glVertex3f(ctx->points_inner[inner][i].x, + ctx->points_inner[inner][i].y, + ctx->points_inner[inner][i].z); + if (begin_p) glEnd(); +} + +static int +draw_blink_radial_random (lockward_context *ctx, struct blinkstate *bs) +{ + int i; + + /* + * There is no sense of direction in a random sweep, so re-use the + * 'direction' field to hold the current blade we're messing with. + */ + if (bs->dwellcnt < 0) { + if (bs->counter <= 0) { + bs->drawfunc = NULL; + return 0; + } + + /* + * Find available blade. Potentially very slow, depending on + * how unlucky we are. + */ + do { + i = random() % g_blades; + } while (bs->val & (1 << i)); + bs->val |= (1 << i); /* Mark as used. */ + bs->direction = i; + if ((bs->dwellcnt = bs->dwell) < 0) + bs->dwellcnt = -bs->dwellcnt; + + if ( bs->type == BTYPE_SEGMENT_SINGLE + || bs->type == BTYPE_SEGMENT_RANDOM) + bs->radius = random() % (NRADII - 1); + + --bs->counter; + } + + set_alpha_by_dwell (bs); + glBlendFunc (GL_DST_COLOR, GL_SRC_ALPHA); + glColor4fv (bs->color); + glRotatef (bs->direction * 360.0 / (GLfloat) g_blades, 0, 0, 1); + if (bs->radius >= 0) + draw_blink_blade (ctx, bs->radius, bs->radius + 1, True); + else + draw_blink_blade (ctx, 0, NRADII - 1, True); + + --bs->dwellcnt; + + return SUBDIV + SUBDIV; +} + +static int +draw_blink_radial_sequential (lockward_context *ctx, struct blinkstate *bs) +{ + if (bs->dwellcnt < 0) { + if (bs->counter <= 0) { + bs->drawfunc = NULL; + return 0; + } + if ((bs->dwellcnt = bs->dwell) < 0) + bs->dwellcnt = -bs->dwellcnt; + --bs->counter; + } + + set_alpha_by_dwell (bs); + glBlendFunc (GL_DST_COLOR, GL_SRC_ALPHA); + glColor4fv (bs->color); + glRotatef ((bs->counter * bs->direction + (int) bs->val) + * 360.0 / (GLfloat) g_blades, + 0, 0, 1); + draw_blink_blade (ctx, 0, NRADII - 1, True); + + --bs->dwellcnt; + + return SUBDIV + SUBDIV; +} + +static int +draw_blink_radial_doubleseq (lockward_context *ctx, struct blinkstate *bs) +{ + int polys; + + if (bs->dwellcnt < 0) { + if (bs->counter <= 0) { + bs->drawfunc = NULL; + return 0; + } + if ((bs->dwellcnt = bs->dwell) < 0) + bs->dwellcnt = -bs->dwellcnt; + --bs->counter; + } + + set_alpha_by_dwell (bs); + glBlendFunc (GL_DST_COLOR, GL_SRC_ALPHA); + glColor4fv (bs->color); + + glPushMatrix (); + glRotatef (((int) bs->val + bs->counter) * 360.0 / (GLfloat) g_blades, + 0, 0, 1); + draw_blink_blade (ctx, 0, NRADII - 1, True); + glPopMatrix (); + polys = SUBDIV + SUBDIV; + + if (bs->counter && bs->counter < g_blades / 2) { + glRotatef (((int) bs->val - bs->counter) + * 360.0 / (GLfloat) g_blades, + 0, 0, 1); + draw_blink_blade (ctx, 0, NRADII - 1, True); + polys += SUBDIV + SUBDIV; + } + + --bs->dwellcnt; + + return polys; +} + +static int +draw_blink_concentric_random (lockward_context *ctx, struct blinkstate *bs) +{ + int i; + + if (bs->dwellcnt < 0) { + if (bs->counter <= 0) { + bs->drawfunc = NULL; + return 0; + } + + do { + i = random() % (NRADII - 1); + } while (bs->val & (1 << i)); + bs->val |= (1 << i); + bs->direction = i; + if ((bs->dwellcnt = bs->dwell) < 0) + bs->dwellcnt = -bs->dwellcnt; + + --bs->counter; + } + + set_alpha_by_dwell (bs); + glBlendFunc (GL_DST_COLOR, GL_SRC_ALPHA); + glColor4fv (bs->color); + glCallList (ctx->rings + bs->direction); + + --bs->dwellcnt; + + return g_blades * SUBDIV * 2; +} + +static int +draw_blink_concentric_sequential (lockward_context *ctx, struct blinkstate *bs) +{ + if (bs->dwellcnt < 0) { + if (bs->counter <= 0) { + bs->drawfunc = NULL; + return 0; + } + if ((bs->dwellcnt = bs->dwell) < 0) + bs->dwellcnt = -bs->dwellcnt; + --bs->counter; + } + + set_alpha_by_dwell (bs); + glBlendFunc (GL_DST_COLOR, GL_SRC_ALPHA); + glColor4fv (bs->color); + if (bs->direction > 0) + glCallList (ctx->rings + (NRADII - 2) - bs->counter); + else + glCallList (ctx->rings + bs->counter); + + --bs->dwellcnt; + + return g_blades * SUBDIV * 2; +} + +static int +draw_blink_segment_scatter (lockward_context *ctx, struct blinkstate *bs) +{ + int i, polys = 0; + + if (bs->dwellcnt < 0) { + if (bs->counter <= 0) { + bs->drawfunc = NULL; + return 0; + } + + /* + * Init random noise array. On average, 1/4 of the bits will + * be set, which should look nice. (1/2 looks too busy.) + */ + for (i = g_blades; --i >= 0; ) + bs->noise[i] = random() & random() + & ((1 << (NRADII - 1)) - 1); + + if ((bs->dwellcnt = bs->dwell) < 0) + bs->dwellcnt = -bs->dwellcnt; + --bs->counter; + } + + set_alpha_by_dwell (bs); + glBlendFunc (GL_DST_COLOR, GL_SRC_ALPHA); + glColor4fv (bs->color); + + for (i = g_blades; --i >= 0; ) { + register uint32_t bits; + int inner, outer; + + /* + * Find consecutive runs of 1 bits. Keep going until we run + * out of them. + */ + for (bits = bs->noise[i]; bits; ) { + inner = ffs (bits) - 1; + bits = ~bits & ~((1 << inner) - 1); + outer = ffs (bits) - 1; + bits = ~bits & ~((1 << outer) - 1); + + glPushMatrix (); + glRotatef (i * 360.0 / (GLfloat) g_blades, 0, 0, 1); + draw_blink_blade (ctx, inner, outer, True); + glPopMatrix (); + + polys += SUBDIV + SUBDIV; + } + } + + --bs->dwellcnt; + + return polys; +} + +static void +random_blink (lockward_context *ctx, struct blinkstate *bs) +{ + bs->color[0] = + bs->color[1] = + bs->color[2] = + bs->color[3] = 1.0; + bs->dwellcnt = -1; + bs->radius = -1; + bs->dwell = calc_interval_frames + (ctx, g_blinkdwell_min, g_blinkdwell_max); + if (random() & 2) + bs->dwell = -bs->dwell; + + bs->type = random() % MAX_BTYPE; + + switch (bs->type) { + case BTYPE_RADIAL_SINGLE: + case BTYPE_SEGMENT_SINGLE: + bs->drawfunc = draw_blink_radial_random; + bs->val = 0; + bs->counter = 1; + break; + case BTYPE_RADIAL_RANDOM: + case BTYPE_SEGMENT_RANDOM: + bs->drawfunc = draw_blink_radial_random; + bs->val = 0; + bs->counter = g_blades; + break; + case BTYPE_RADIAL_SEQ: + bs->drawfunc = draw_blink_radial_sequential; + bs->val = random() % g_blades; /* Initial offset */ + bs->direction = random() & 8 ? 1 : -1; + bs->counter = g_blades; + break; + case BTYPE_RADIAL_DOUBLESEQ: + bs->drawfunc = draw_blink_radial_doubleseq; + bs->val = random() % g_blades; /* Initial offset */ + bs->counter = g_blades / 2 + 1; + break; + case BTYPE_CONCENTRIC_SINGLE: + bs->drawfunc = draw_blink_concentric_random; + bs->val = 0; + bs->counter = 1; + break; + case BTYPE_CONCENTRIC_RANDOM: + bs->drawfunc = draw_blink_concentric_random; + bs->val = 0; + bs->counter = NRADII - 1; + break; + case BTYPE_CONCENTRIC_SEQ: + bs->drawfunc = draw_blink_concentric_sequential; + bs->direction = random() & 8 ? 1 : -1; + bs->counter = NRADII - 1; + break; + case BTYPE_SEGMENT_SCATTER: + bs->drawfunc = draw_blink_segment_scatter; + bs->counter = random() % (g_blades / 2) + (g_blades / 2) + 1; + break; + } +} + + +/*************************************************************************** + * Main rendering routine. + */ +ENTRYPOINT void +draw_lockward (ModeInfo *mi) +{ + lockward_context *ctx = &g_ctx[MI_SCREEN (mi)]; + spinnerstate *ss; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i, n; + + GLfloat scolor[4] = {0.0, 0.0, 0.0, 0.5}; + + if (!ctx->glx_context) + return; + + glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *(ctx->glx_context)); + + + glClear (GL_COLOR_BUFFER_BIT); + + if (ctx->blendmode) + glBlendFunc (GL_ONE, GL_ONE); + else + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glPushMatrix (); + glLoadIdentity (); + + mi->polygon_count = 0; + + for (n = NSPINNERS; --n >= 0; ) { + ss = &ctx->spinners[n]; + + /* Set color. */ + i = ss->ccolor >> COLORIDX_SHF; + scolor[0] = ss->colors[i].red / 65535.0; + scolor[1] = ss->colors[i].green / 65535.0; + scolor[2] = ss->colors[i].blue / 65535.0; + glColor4fv (scolor); + + glPushMatrix (); + glRotatef (ss->rot - ss->rotcount * ss->rotinc, 0, 0, 1); + for (i = ss->nblades; --i >= 0; ) { + glPushMatrix (); + glRotatef (360.0 * i / ss->nblades, 0, 0, 1); + + glBegin (GL_TRIANGLE_FAN); + /* glCallList (ctx->blades_outer + ss->bladeidx[i].outer); */ + /* glCallList (ctx->blades_inner + ss->bladeidx[i].inner); */ + draw_blink_blade (ctx, + ss->bladeidx[i].inner, + ss->bladeidx[i].outer, + False); + glEnd (); + + glPopMatrix (); + mi->polygon_count += SUBDIV + SUBDIV; + } + glPopMatrix (); + + /* Advance rotation. */ + if (ss->rotcount) { + if (ss->rotcount > 0) + --ss->rotcount; + } else { + if (ss->rotinc == 0.0) + random_blade_rot (ctx, ss); + else { + /* Compute # of ticks to sit idle. */ + ss->rotinc = 0.0; + ss->rotcount = + calc_interval_frames (ctx, + g_rotateidle_min, + g_rotateidle_max); + } + } + + /* Advance colors. */ + if ((ss->ccolor += ss->colorinc) >= ss->ncolors) + ss->ccolor -= ss->ncolors; + else if (ss->ccolor < 0) + ss->ccolor += ss->ncolors; + } + + if (g_blink_p) { + if (ctx->blink.drawfunc) { + mi->polygon_count += + ctx->blink.drawfunc (ctx, &ctx->blink); + } else { + if (ctx->nextblink > 0) + --ctx->nextblink; + else { + /* Compute # of frames for blink idle time. */ + ctx->nextblink = + calc_interval_frames (ctx, + g_blinkidle_min, + g_blinkidle_max); + random_blink (ctx, &ctx->blink); + } + } + } + glPopMatrix (); + + if (MI_IS_FPS (mi)) do_fps (mi); + glFinish(); + + glXSwapBuffers (dpy, window); +} + + +/*************************************************************************** + * Initialization/teardown. + */ +ENTRYPOINT void +init_lockward (ModeInfo *mi) +{ + lockward_context *ctx; + int i, n; + + MI_INIT (mi, g_ctx); + ctx = &g_ctx[MI_SCREEN (mi)]; + + ctx->glx_context = init_GL (mi); + + reshape_lockward (mi, MI_WIDTH (mi), MI_HEIGHT (mi)); + + glEnable (GL_CULL_FACE); + glEnable (GL_BLEND); + glDisable (GL_DEPTH_TEST); + + glShadeModel (GL_FLAT); + glFrontFace (GL_CW); + + /* ctx->blades_outer = glGenLists (NRADII); */ + /* ctx->blades_inner = glGenLists (NRADII); */ + ctx->rings = glGenLists (NRADII - 1); + ctx->blendmode = 0; +/* WTF? ctx->fps = 1000000 / MI_DELAY (mi); */ + ctx->fps = 60; + ctx->nextblink = calc_interval_frames + (ctx, g_blinkidle_min, g_blinkidle_max); + ctx->blink.drawfunc = NULL; + ctx->blink.noise = malloc (sizeof (uint32_t) * g_blades); + if (!ctx->blink.noise) { + fprintf (stderr, "Can't allocate noise array.\n"); + exit (1); + } + + gen_blade_arcs (ctx); + gen_rings (ctx); + + for (i = NSPINNERS; --i >= 0; ) { + spinnerstate *ss = &ctx->spinners[i]; + + ss->rot = 0.0; + ss->rotcount = -1; + + /* Establish rotation */ + random_blade_rot (ctx, ss); + + /* + * Establish color cycling path and rate. Rate avoids zero. + */ + ss->ncolors = 128; + ss->colorinc = (random() & ((2 << COLORIDX_SHF) - 1)) + - (1 << COLORIDX_SHF); + if (ss->colorinc >= 0) + ++ss->colorinc; + + ss->colors = (XColor *) calloc (ss->ncolors, sizeof (XColor)); + if (!ss->colors) { + fprintf (stderr, + "Can't allocate XColors for spinner %d.\n", + i); + exit (1); + } + make_smooth_colormap (0, 0, 0, + ss->colors, &ss->ncolors, + False, 0, False); + ss->ncolors <<= COLORIDX_SHF; + + /* + * Create blades. + */ + ss->nblades = g_blades; + ss->bladeidx = malloc (sizeof (bladestate) * g_blades); + if (!ss->bladeidx) { + fprintf (stderr, "Can't allocate blades.\n"); + exit (1); + } + for (n = g_blades; --n >= 0; ) { + /* + * Establish blade radii. Can't be equal. Ensure + * outer > inner. + */ + do { + ss->bladeidx[n].outer = random() & 7; + ss->bladeidx[n].inner = random() & 7; + } while (ss->bladeidx[n].outer == + ss->bladeidx[n].inner); + + if (ss->bladeidx[n].outer < ss->bladeidx[n].inner) { + uint8_t tmp; + + tmp = ss->bladeidx[n].outer; + ss->bladeidx[n].outer = ss->bladeidx[n].inner; + ss->bladeidx[n].inner = tmp; + } + } + } +} + +ENTRYPOINT void +free_lockward (ModeInfo *mi) +{ + lockward_context *ctx = &g_ctx[MI_SCREEN (mi)]; + int i; + + if (!ctx->glx_context) + return; + + glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), + *(ctx->glx_context)); + + if (ctx->blink.noise) + free (ctx->blink.noise); + if (glIsList (ctx->rings)) + glDeleteLists (ctx->rings, NRADII - 1); + /* if (glIsList (ctx->blades_outer)) + glDeleteLists (ctx->blades_outer, NRADII); + if (glIsList (ctx->blades_inner)) + glDeleteLists (ctx->blades_inner, NRADII); */ + + for (i = NSPINNERS; --i >= 0; ) { + spinnerstate *ss = &ctx->spinners[i]; + + if (ss->colors) + free (ss->colors); + if (ss->bladeidx) + free (ss->bladeidx); + } +} + + +XSCREENSAVER_MODULE ("Lockward", lockward) + +#endif /* USE_GL */ + +/* vim:se ts=8 sts=8 sw=8: */ diff --git a/hacks/glx/lockward.man b/hacks/glx/lockward.man new file mode 100644 index 0000000..f55e5be --- /dev/null +++ b/hacks/glx/lockward.man @@ -0,0 +1,79 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +lockward - Rotating spinning color-cycling things +.SH SYNOPSIS +.B lockward +[\-display \fIdisplayspec\fP] +[\-root] +[\-window] +[\-visual \fIarg\fP] +[\-window-id \fIarg\fP] +[\-delay \fIusec\fP] +[\-pair] +[\-fps] +[\-blink | \-no-blink] +[\-rotateidle-min \fImsec\fP] +[\-rotateidle-max \fImsec\fP] +[\-blinkidle-min \fImsec\fP] +[\-blinkidle-max \fImsec\fP] +[\-blinkdwell-min \fImsec\fP] +[\-blinkdwell-max \fImsec\fP] +.SH DESCRIPTION +.B lockward +draws a spinning, rotating set of notched wheels overlaid with some flashing +effects, using OpenGL. It's a sort of cross between the wards in a +combination lock and those old information displays that animated via +polarized light. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the ID number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window (default). +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fImicroseconds\fP +Per-frame delay, in microseconds. Default: 20000 (50 frames/sec). +.TP 8 +.B \-blink | \-no-blink +Enables/disables the blinking effects. Default: Enabled. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-rotateidle-min \fImilliseconds +.TP 8 +.B \-rotateidle-max \fImilliseconds +The minimum and maximum time each spinner will sit idle, in milliseconds. +Defaults: Min 1000, max 6000. +.TP 8 +.B \-blinkidle-min \fImilliseconds +.TP 8 +.B \-blinkidle-max \fImilliseconds +The minimum and maximum time between blinking effects, in milliseconds. +Defaults: Min 1000, max 9000. +.TP 8 +.B \-blinkdwell-min \fImilliseconds +.TP 8 +.B \-blinkdwell-max \fImilliseconds +The minimum and maximum dwell time for the blinking effects, in +milliseconds. This affects how quickly the blinks actually happen. +Defaults: Min 100, max 600. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +Default host and display number. +.TP 8 +.B XENVIRONMENT +Name of a resource file that overrides the global resources stored in the +RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH AUTHORS +Leo L. Schwab diff --git a/hacks/glx/marching.c b/hacks/glx/marching.c new file mode 100644 index 0000000..b3357dd --- /dev/null +++ b/hacks/glx/marching.c @@ -0,0 +1,645 @@ +/* xscreensaver, Copyright (c) 2002 Jamie Zawinski + * Utility functions to create "marching cubes" meshes from 3d fields. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Marching cubes implementation by Paul Bourke + * http://astronomy.swin.edu.au/~pbourke/modelling/polygonise/ + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +#ifndef HAVE_JWXYZ +# include +#endif + +#ifdef HAVE_ANDROID +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "marching.h" +#include "normals.h" + +extern char *progname; + +#undef ABS +#define ABS(x) ((x)<0?(-(x)):(x)) + +typedef struct { + XYZ p[3]; +} TRIANGLE; + +typedef struct { + XYZ p[8]; + double val[8]; +} GRIDCELL; + + +/* Indexing convention: + + Vertices: Edges: + + 4 ______________ 5 ______________ + /| /| /| 4 /| + / | 6 / | 7 / |8 5 / | + 7 /_____________/ | /______________/ | 9 + | | | | | | 6 | | + | 0 |_________|___| 1 | |_________|10_| + | / | / 11 | 3/ 0 | / + | / | / | / | / 1 + 3 |/____________|/ 2 |/____________|/ + 2 + */ + +static const int edgeTable[256] = { + 0x0 , 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, + 0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00, + 0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c, + 0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90, + 0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c, + 0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30, + 0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac, + 0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0, + 0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c, + 0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60, + 0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc, + 0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0, + 0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c, + 0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950, + 0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc , + 0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0, + 0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc, + 0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0, + 0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, + 0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650, + 0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc, + 0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0, + 0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c, + 0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460, + 0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac, + 0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0, + 0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, + 0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230, + 0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c, + 0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190, + 0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, + 0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0 +}; + +static const int triTable[256][16] = { + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1}, + { 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1}, + { 3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1}, + { 3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1}, + { 9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1}, + { 9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1}, + { 2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1}, + { 8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1}, + { 9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1}, + { 4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1}, + { 3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1}, + { 1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1}, + { 4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1}, + { 4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1}, + { 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1}, + { 5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1}, + { 2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1}, + { 9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1}, + { 0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1}, + { 2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1}, + {10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1}, + { 4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1}, + { 5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1}, + { 5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1}, + { 9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1}, + { 0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1}, + { 1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1}, + {10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1}, + { 8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1}, + { 2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1}, + { 7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1}, + { 9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1}, + { 2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1}, + {11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1}, + { 9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1}, + { 5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1}, + {11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1}, + {11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1}, + { 1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1}, + { 9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1}, + { 5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1}, + { 2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1}, + { 0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1}, + { 5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1}, + { 6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1}, + { 3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1}, + { 6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1}, + { 5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1}, + { 1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1}, + {10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1}, + { 6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1}, + { 8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1}, + { 7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1}, + { 3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1}, + { 5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1}, + { 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1}, + { 9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1}, + { 8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1}, + { 5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1}, + { 0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1}, + { 6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1}, + {10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1}, + {10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1}, + { 8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1}, + { 1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1}, + { 3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1}, + { 0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1}, + {10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1}, + { 3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1}, + { 6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1}, + { 9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1}, + { 8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1}, + { 3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1}, + { 6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1}, + { 0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1}, + {10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1}, + {10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1}, + { 2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1}, + { 7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1}, + { 7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1}, + { 2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1}, + { 1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1}, + {11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1}, + { 8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1}, + { 0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1}, + { 7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1}, + {10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1}, + { 2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1}, + { 6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1}, + { 7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1}, + { 2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1}, + { 1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1}, + {10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1}, + {10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1}, + { 0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1}, + { 7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1}, + { 6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1}, + { 8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1}, + { 9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1}, + { 6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1}, + { 4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1}, + {10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1}, + { 8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1}, + { 0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1}, + { 1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1}, + { 8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1}, + {10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1}, + { 4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1}, + {10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1}, + { 5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1}, + {11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1}, + { 9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1}, + { 6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1}, + { 7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1}, + { 3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1}, + { 7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1}, + { 9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1}, + { 3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1}, + { 6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1}, + { 9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1}, + { 1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1}, + { 4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1}, + { 7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1}, + { 6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1}, + { 3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1}, + { 0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1}, + { 6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1}, + { 0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1}, + {11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1}, + { 6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1}, + { 5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1}, + { 9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1}, + { 1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1}, + { 1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1}, + {10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1}, + { 0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1}, + { 5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1}, + {10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1}, + {11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1}, + { 9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1}, + { 7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1}, + { 2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1}, + { 8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1}, + { 9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1}, + { 9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1}, + { 1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1}, + { 9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1}, + { 9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1}, + { 5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1}, + { 0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1}, + {10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1}, + { 2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1}, + { 0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1}, + { 0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1}, + { 9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1}, + { 5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1}, + { 3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1}, + { 5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1}, + { 8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1}, + { 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1}, + { 0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1}, + { 1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1}, + { 3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1}, + { 4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1}, + { 9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1}, + {11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1}, + {11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1}, + { 2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1}, + { 9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1}, + { 3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1}, + { 1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1}, + { 4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1}, + { 4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1}, + { 0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1}, + { 3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1}, + { 3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1}, + { 0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1}, + { 9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1}, + { 1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + { 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1} +}; + + + +/* Linearly interpolate the position where an isosurface cuts + an edge between two vertices, each with their own scalar value +*/ +static XYZ +interp_vertex (double isolevel, XYZ p1, XYZ p2, double valp1, double valp2) +{ + double mu; + XYZ p; + + if (ABS(isolevel-valp1) < 0.00001) + return(p1); + if (ABS(isolevel-valp2) < 0.00001) + return(p2); + if (ABS(valp1-valp2) < 0.00001) + return(p1); + mu = (isolevel - valp1) / (valp2 - valp1); + p.x = p1.x + mu * (p2.x - p1.x); + p.y = p1.y + mu * (p2.y - p1.y); + p.z = p1.z + mu * (p2.z - p1.z); + + return(p); +} + + +/* Given a grid cell and an isolevel, calculate the triangular + facets required to represent the isosurface through the cell. + Return the number of triangular facets. + `triangles' will be loaded up with the vertices at most 5 triangular facets. + 0 will be returned if the grid cell is either totally above + of totally below the isolevel. + + By Paul Bourke +*/ +static int +march_one_cube (GRIDCELL grid, double isolevel, TRIANGLE *triangles) +{ + int i, ntriang; + int cubeindex; + XYZ vertlist[12]; + + /* + Determine the index into the edge table which + tells us which vertices are inside of the surface + */ + cubeindex = 0; + if (grid.val[0] < isolevel) cubeindex |= 1; + if (grid.val[1] < isolevel) cubeindex |= 2; + if (grid.val[2] < isolevel) cubeindex |= 4; + if (grid.val[3] < isolevel) cubeindex |= 8; + if (grid.val[4] < isolevel) cubeindex |= 16; + if (grid.val[5] < isolevel) cubeindex |= 32; + if (grid.val[6] < isolevel) cubeindex |= 64; + if (grid.val[7] < isolevel) cubeindex |= 128; + + /* Cube is entirely in/out of the surface */ + if (edgeTable[cubeindex] == 0) + return(0); + + /* Find the vertices where the surface intersects the cube */ + if (edgeTable[cubeindex] & 1) + vertlist[0] = + interp_vertex (isolevel,grid.p[0],grid.p[1],grid.val[0],grid.val[1]); + if (edgeTable[cubeindex] & 2) + vertlist[1] = + interp_vertex (isolevel,grid.p[1],grid.p[2],grid.val[1],grid.val[2]); + if (edgeTable[cubeindex] & 4) + vertlist[2] = + interp_vertex (isolevel,grid.p[2],grid.p[3],grid.val[2],grid.val[3]); + if (edgeTable[cubeindex] & 8) + vertlist[3] = + interp_vertex (isolevel,grid.p[3],grid.p[0],grid.val[3],grid.val[0]); + if (edgeTable[cubeindex] & 16) + vertlist[4] = + interp_vertex (isolevel,grid.p[4],grid.p[5],grid.val[4],grid.val[5]); + if (edgeTable[cubeindex] & 32) + vertlist[5] = + interp_vertex (isolevel,grid.p[5],grid.p[6],grid.val[5],grid.val[6]); + if (edgeTable[cubeindex] & 64) + vertlist[6] = + interp_vertex (isolevel,grid.p[6],grid.p[7],grid.val[6],grid.val[7]); + if (edgeTable[cubeindex] & 128) + vertlist[7] = + interp_vertex (isolevel,grid.p[7],grid.p[4],grid.val[7],grid.val[4]); + if (edgeTable[cubeindex] & 256) + vertlist[8] = + interp_vertex (isolevel,grid.p[0],grid.p[4],grid.val[0],grid.val[4]); + if (edgeTable[cubeindex] & 512) + vertlist[9] = + interp_vertex (isolevel,grid.p[1],grid.p[5],grid.val[1],grid.val[5]); + if (edgeTable[cubeindex] & 1024) + vertlist[10] = + interp_vertex (isolevel,grid.p[2],grid.p[6],grid.val[2],grid.val[6]); + if (edgeTable[cubeindex] & 2048) + vertlist[11] = + interp_vertex (isolevel,grid.p[3],grid.p[7],grid.val[3],grid.val[7]); + + /* Create the triangle */ + ntriang = 0; + for (i=0; triTable[cubeindex][i] != -1; i+=3) + { + triangles[ntriang].p[0] = vertlist[triTable[cubeindex][i ]]; + triangles[ntriang].p[1] = vertlist[triTable[cubeindex][i+1]]; + triangles[ntriang].p[2] = vertlist[triTable[cubeindex][i+2]]; + ntriang++; + } + + return(ntriang); +} + + +/* Walking the grid. By jwz. + */ + + +/* Computes the normal of the scalar field at the given point, + for vertex normals (as opposed to face normals.) + */ +static void +do_function_normal (double x, double y, double z, + double (*compute_fn) (double x, double y, double z, + void *closure), + void *c) +{ + XYZ n; + double off = 0.5; + n.x = compute_fn (x-off, y, z, c) - compute_fn (x+off, y, z, c); + n.y = compute_fn (x, y-off, z, c) - compute_fn (x, y+off, z, c); + n.z = compute_fn (x, y, z-off, c) - compute_fn (x, y, z+off, c); + /* normalize (&n); */ + glNormal3f (n.x, n.y, n.z); +} + + +/* Given a function capable of generating a value at any XYZ position, + creates OpenGL faces for the solids defined. + + init_fn is called at the beginning for initial, and returns an object. + free_fn is called at the end. + + compute_fn is called for each XYZ in the specified grid, and returns + the double value of that coordinate. If smoothing is on, then + compute_fn will also be called twice more for each emitted vertex, + in order to calculate vertex normals (so don't assume it will only + be called with values falling on the grid boundaries.) + + Points are inside an object if the are less than `isolevel', and + outside otherwise. +*/ +void +marching_cubes (int grid_size, /* density of the mesh */ + double isolevel, /* cutoff point for "in" versus "out" */ + int wireframe_p, /* wireframe, or solid */ + int smooth_p, /* smooth, or faceted */ + + void * (*init_fn) (double grid_size, void *closure1), + double (*compute_fn) (double x, double y, double z, + void *closure2), + void (*free_fn) (void *closure2), + void *closure1, + + unsigned long *polygon_count) +{ + int planesize = grid_size * grid_size; + int x, y, z; + void *closure2 = 0; + unsigned long polys = 0; + double *layers; + + layers = (double *) calloc (sizeof (*layers), planesize * 2); + if (!layers) + { + fprintf (stderr, "%s: out of memory for %dx%dx%d grid\n", + progname, grid_size, grid_size, 2); + exit (1); + } + + if (init_fn) + closure2 = init_fn (grid_size, closure1); + + glFrontFace(GL_CCW); + if (!wireframe_p) + glBegin (GL_TRIANGLES); + + for (z = 0; z < grid_size; z++) + { + double *layer0 = (z & 1 ? layers+planesize : layers); + double *layer1 = (z & 1 ? layers : layers+planesize); + double *row; + + /* Fill in the XY grid on the currently-bottommost layer. */ + row = layer1; + for (y = 0; y < grid_size; y++, row += grid_size) + { + double *cell = row; + for (x = 0; x < grid_size; x++, cell++) + *cell = compute_fn (x, y, z, closure2); + } + + /* Now we've completed one layer (an XY slice of Z.) Now we can + generate the polygons that fill the space between this layer + and the previous one (unless this is the first layer.) + */ + if (z == 0) continue; + + for (y = 1; y < grid_size; y += 1) + for (x = 1; x < grid_size; x += 1) + { + TRIANGLE tri[6]; + int i, ntri; + GRIDCELL cell; + + /* This is kinda hokey, there ought to be a more efficient + way to do this... */ + cell.p[0].x = x-1; cell.p[0].y = y-1; cell.p[0].z = z-1; + cell.p[1].x = x ; cell.p[1].y = y-1; cell.p[1].z = z-1; + cell.p[2].x = x ; cell.p[2].y = y ; cell.p[2].z = z-1; + cell.p[3].x = x-1; cell.p[3].y = y ; cell.p[3].z = z-1; + cell.p[4].x = x-1; cell.p[4].y = y-1; cell.p[4].z = z ; + cell.p[5].x = x ; cell.p[5].y = y-1; cell.p[5].z = z ; + cell.p[6].x = x ; cell.p[6].y = y ; cell.p[6].z = z ; + cell.p[7].x = x-1; cell.p[7].y = y ; cell.p[7].z = z ; + +# define GRID(X,Y,WHICH) ((WHICH) \ + ? layer1[((Y)*grid_size) + ((X))] \ + : layer0[((Y)*grid_size) + ((X))]) + + cell.val[0] = GRID (x-1, y-1, 0); + cell.val[1] = GRID (x , y-1, 0); + cell.val[2] = GRID (x , y , 0); + cell.val[3] = GRID (x-1, y , 0); + cell.val[4] = GRID (x-1, y-1, 1); + cell.val[5] = GRID (x , y-1, 1); + cell.val[6] = GRID (x , y , 1); + cell.val[7] = GRID (x-1, y , 1); +# undef GRID + + /* Now generate the triangles for this cubic segment, + and emit the GL faces. + */ + ntri = march_one_cube (cell, isolevel, tri); + polys += ntri; + for (i = 0; i < ntri; i++) + { + if (wireframe_p) glBegin (GL_LINE_LOOP); + + /* If we're smoothing, we need to call the field function + again for each vertex (via function_normal().) If we're + not smoothing, then we can just compute the normal from + this triangle. + */ + if (!smooth_p) + do_normal (tri[i].p[0].x, tri[i].p[0].y, tri[i].p[0].z, + tri[i].p[1].x, tri[i].p[1].y, tri[i].p[1].z, + tri[i].p[2].x, tri[i].p[2].y, tri[i].p[2].z); + +# define VERT(X,Y,Z) \ + if (smooth_p) \ + do_function_normal ((X), (Y), (Z), compute_fn, closure2); \ + glVertex3f ((X), (Y), (Z)) + + VERT (tri[i].p[0].x, tri[i].p[0].y, tri[i].p[0].z); + VERT (tri[i].p[1].x, tri[i].p[1].y, tri[i].p[1].z); + VERT (tri[i].p[2].x, tri[i].p[2].y, tri[i].p[2].z); +# undef VERT + if (wireframe_p) glEnd (); + } + } + } + + if (!wireframe_p) + glEnd (); + + free (layers); + + if (free_fn) + free_fn (closure2); + + if (polygon_count) + *polygon_count = polys; +} diff --git a/hacks/glx/marching.h b/hacks/glx/marching.h new file mode 100644 index 0000000..755545d --- /dev/null +++ b/hacks/glx/marching.h @@ -0,0 +1,48 @@ +/* xscreensaver, Copyright (c) 2002 Jamie Zawinski + * Utility functions to create "marching cubes" meshes from 3d fields. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __MARCHING_H__ +#define __MARCHING_H__ + +/* Given a function capable of generating a value at any XYZ position, + creates OpenGL faces for the solids defined. + + init_fn is called at the beginning for initial, and returns an object. + free_fn is called at the end. + + compute_fn is called for each XYZ in the specified grid, and returns + the double value of that coordinate. If smoothing is on, then + compute_fn will also be called twice more for each emitted vertex, + in order to calculate vertex normals (so don't assume it will only + be called with values falling on the grid boundaries.) + + Points are inside an object if the are less than `isolevel', and + outside otherwise. + + If polygon_count is specified, the number of faces generated will be + returned there. +*/ +extern void +marching_cubes (int grid_size, /* density of the mesh */ + double isolevel, /* cutoff point for "in" versus "out" */ + int wireframe_p, /* wireframe, or solid */ + int smooth_p, /* smooth, or faceted */ + + void * (*init_fn) (double grid_size, void *closure1), + double (*compute_fn) (double x, double y, double z, + void *closure2), + void (*free_fn) (void *closure2), + void *closure1, + + unsigned long *polygon_count); + +#endif /* __MARCHING_H__ */ diff --git a/hacks/glx/maze3d.c b/hacks/glx/maze3d.c new file mode 100755 index 0000000..255839e --- /dev/null +++ b/hacks/glx/maze3d.c @@ -0,0 +1,1955 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* maze3d --- A recreation of the old 3D maze screensaver from Windows 95. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * + * 03-Apr-2018: Released initial version of "3D Maze" + * (sudoer@riseup.net) + */ + +#undef USE_FLOATING_IMAGES +#undef USE_FRACTAL_IMAGES + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + +#define release_maze 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_ANGULAR_CONVERSION_FACTOR 90 +#define DEF_SPEED "1.0" +#define DEF_NUM_ROWS "12" +#define DEF_NUM_COLUMNS "12" +#define DEF_NUM_RATS "1" +#define DEF_NUM_INVERTERS "10" +#define DEF_SHOW_OVERLAY "False" +#define DEF_DROP_ACID "False" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "../images/gen/brick1_png.h" +#include "../images/gen/brick2_png.h" +#include "../images/gen/wood2_png.h" +#include "../images/gen/start_png.h" +#include "../images/gen/bob_png.h" +#include "../images/gen/logo-32_png.h" + +#ifdef USE_FLOATING_IMAGES +# include "../images/gen/opengltxt_png.h" +# include "../images/gen/openglbook_png.h" +#endif +#ifdef USE_FRACTAL_IMAGES +# include "../images/gen/fractal1_png.h" +# include "../images/gen/fractal2_png.h" +# include "../images/gen/fractal3_png.h" +# include "../images/gen/fractal4_png.h" +#endif + +#include "ximage-loader.h" + +static int dropAcid, dropAcidWalls, dropAcidCeiling, dropAcidFloor, numInverters, numRats; +#ifdef USE_FLOATING_IMAGES +static int numGl3dTexts, numGlRedbooks; +#endif +static int shouldDrawOverlay, numRows, numColumns; +static char *wallTexture, *floorTexture, *ceilingTexture; +static GLfloat speed; + +static XrmOptionDescRec opts[] = { + {"-drop-acid", ".maze3d.dropAcid", XrmoptionNoArg, "true"}, + {"-drop-acid-walls", ".maze3d.dropAcidWalls", XrmoptionNoArg, "true"}, + {"-drop-acid-floor", ".maze3d.dropAcidFloor", XrmoptionNoArg, "true"}, + {"-drop-acid-ceiling", ".maze3d.dropAcidCeiling", XrmoptionNoArg, "true"}, + {"-wall-texture", ".maze3d.wallTexture", XrmoptionSepArg, 0}, + {"-floor-texture", ".maze3d.floorTexture", XrmoptionSepArg, 0}, + {"-ceiling-texture", ".maze3d.ceilingTexture", XrmoptionSepArg, 0}, + {"-rows", ".maze3d.numRows", XrmoptionSepArg, 0}, + {"-columns", ".maze3d.numColumns", XrmoptionSepArg, 0}, + {"-inverters", ".maze3d.numInverters", XrmoptionSepArg, 0}, + {"-rats", ".maze3d.numRats", XrmoptionSepArg, 0}, +# ifdef USE_FLOATING_IMAGES + {"-gl-3d-texts", ".maze3d.numGl3dTexts", XrmoptionSepArg, 0}, + {"-gl-redbooks", ".maze3d.numGlRedbooks", XrmoptionSepArg, 0}, +# endif + {"-overlay", ".maze3d.showOverlay", XrmoptionNoArg, "true"}, + {"-speed", ".maze3d.speed", XrmoptionSepArg, 0}, +}; + +static argtype vars[] = { + {&dropAcid, "dropAcid", "Drop Acid", DEF_DROP_ACID, t_Bool}, + {&dropAcidWalls, "dropAcidWalls", "Drop Acid Walls", "False", t_Bool}, + {&dropAcidFloor, "dropAcidFloor", "Drop Acid Floor", "False", t_Bool}, + {&dropAcidCeiling, "dropAcidCeiling", "Drop Acid Ceiling", "False", t_Bool}, + {&wallTexture, "wallTexture", "Wall Texture", "brick-wall", t_String}, + {&floorTexture, "floorTexture", "Floor Texture", "wood-floor", t_String}, + {&ceilingTexture, "ceilingTexture", "Ceiling Texture", "ceiling-tiles", + t_String}, + {&numRows, "numRows", "Number of Rows", DEF_NUM_ROWS, t_Int}, + {&numColumns, "numColumns", "Number of Columns", DEF_NUM_COLUMNS, t_Int}, + {&numInverters, "numInverters", "Number of Inverters", DEF_NUM_INVERTERS, t_Int}, + {&numRats, "numRats", "Number of Rats", DEF_NUM_RATS, t_Int}, +# ifdef USE_FLOATING_IMAGES + {&numGl3dTexts, "numGl3dTexts", "Number of GL 3D Texts", "3", t_Int}, + {&numGlRedbooks, "numGlRedbooks", "Number of GL Redbooks", "3", t_Int}, +# endif + {&shouldDrawOverlay, "showOverlay", "Show Overlay", DEF_SHOW_OVERLAY, t_Bool}, + {&speed, "speed", "speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt maze_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +enum cellTypes +{ + WALL, CELL_UNVISITED, CELL, START, FINISH, GL_3D_TEXT, INVERTER_TETRAHEDRON, + INVERTER_OCTAHEDRON, INVERTER_DODECAHEDRON, INVERTER_ICOSAHEDRON, + WALL_GL_REDBOOK +}; + +enum programStates +{ + STARTING, WALKING, TURNING_LEFT, TURNING_RIGHT, TURNING_AROUND, INVERTING, + FINISHING +}; + +enum overlayLists +{ + ARROW = 15, SQUARE, STAR, TRIANGLE +}; + +enum directions +{ + NORTH = 0, EAST = 90, SOUTH = 180, WEST = 270 +}; + +typedef struct +{ + unsigned row, column; +} Tuple; + +typedef struct +{ + GLfloat x, z; +} Tuplef; + +typedef struct +{ + GLfloat red, green, blue; +} Color; + +typedef struct +{ + Tuplef position; + GLfloat rotation, desiredRotation, inversion, remainingDistanceToTravel; + unsigned char state, isCamera; +} Rat; + + +/* structure for holding the maze data */ +typedef struct +{ + GLXContext *glx_context; + + unsigned char **mazeGrid; + Tuple *wallList; + unsigned wallListSize; + Tuple startPosition, finishPosition, *inverterPosition, + *gl3dTextPosition; + GLuint wallTexture, floorTexture, ceilingTexture, startTexture, + finishTexture, ratTexture; + Rat camera; + Rat *rats; +# ifdef USE_FLOATING_IMAGES + GLuint gl3dTextTexture, glTextbookTexture; +# endif +# ifdef USE_FRACTAL_IMAGES + GLuint fractal1Texture, fractal2Texture, fractal3Texture, fractal4Texture; +# endif + Color acidColor; + float acidHue; + GLfloat wallHeight, inverterRotation; + Bool button_down_p; + int numRows, numColumns, numGlRedbooks; + GLuint dlists[30]; /* ARROW etc index into this */ + +} maze_configuration; + +static maze_configuration *mazes = NULL; + +static void newMaze(maze_configuration* maze); +static void constructLists(ModeInfo *); +static void initializeGrid(maze_configuration* maze); +static float roundToNearestHalf(float num); +static unsigned isOdd(unsigned num); +static unsigned isEven(unsigned num); +static void buildMaze(maze_configuration* maze); +static void addWallsToList(Tuple cell, maze_configuration* maze); +static unsigned char isRemovableWall(Tuple coordinates, + maze_configuration* maze); +static void addCells(Tuple cellToAdd, Tuple currentWall, + maze_configuration* maze); +static void removeWallFromList(unsigned index, maze_configuration* maze); +static void placeMiscObjects(maze_configuration* maze); +static Tuple placeObject(maze_configuration* maze, unsigned char type); +static void shiftAcidColor(maze_configuration* maze); +static void refreshRemainingDistanceToTravel(ModeInfo * mi); +static void step(Rat* rat, maze_configuration* maze); +static void walk(Rat* rat, char axis, int sign, maze_configuration* maze); +static void turn(Rat* rat, maze_configuration* maze); +static void turnAround(Rat* rat, maze_configuration* maze); +static void invert(maze_configuration* maze); +static void changeState(Rat* rat, maze_configuration* maze); +static void updateInverterRotation(maze_configuration* maze); +static void drawInverter(maze_configuration* maze, Tuple coordinates); +static void drawWalls(ModeInfo * mi); +static void drawWall(Tuple startCoordinates, Tuple endCoordinates, + maze_configuration* maze); +static void drawCeiling(ModeInfo * mi); +static void drawFloor(ModeInfo * mi); +static void drawPane(ModeInfo *, GLuint texture, Tuple position); +static void drawRat(Tuplef position, maze_configuration* maze); +static void drawOverlay(ModeInfo *); + +/* Set up and enable texturing on our object */ +static void +setup_png_texture (ModeInfo *mi, const unsigned char *png_data, + unsigned long data_size) +{ + XImage *image = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + png_data, data_size); + char buf[1024]; + clear_gl_error(); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + /* iOS invalid enum: + glPixelStorei(GL_UNPACK_ROW_LENGTH, image->width); + */ + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + image->width, image->height, 0, + GL_RGBA, + /* GL_UNSIGNED_BYTE, */ + GL_UNSIGNED_INT_8_8_8_8_REV, + image->data); + sprintf (buf, "builtin texture (%dx%d)", image->width, image->height); + check_gl_error(buf); +} + + +static Bool +setup_file_texture (ModeInfo *mi, char *filename) +{ + Display *dpy = mi->dpy; + Visual *visual = mi->xgwa.visual; + char buf[1024]; + + XImage *image = file_to_ximage (dpy, visual, filename); + if (!image) return False; + + clear_gl_error(); + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + glPixelStorei(GL_UNPACK_ROW_LENGTH, image->width); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + image->width, image->height, 0, + GL_RGBA, + GL_UNSIGNED_BYTE, image->data); + sprintf (buf, "texture: %.100s (%dx%d)", + filename, image->width, image->height); + check_gl_error(buf); + return True; +} + +static void +setup_textures(ModeInfo * mi) +{ + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + GLint mag = GL_NEAREST; /* GL_LINEAR */ + + glGenTextures(1, &maze->finishTexture); + glBindTexture(GL_TEXTURE_2D, maze->finishTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, logo_32_png, sizeof(logo_32_png)); + + glGenTextures(1, &maze->ratTexture); + glBindTexture(GL_TEXTURE_2D, maze->ratTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, bob_png, sizeof(bob_png)); + +# ifdef USE_FLOATING_IMAGES + glGenTextures(1, &maze->glTextbookTexture); + glBindTexture(GL_TEXTURE_2D, maze->glTextbookTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, openglbook_png, sizeof(openglbook_png)); + + glGenTextures(1, &maze->gl3dTextTexture); + glBindTexture(GL_TEXTURE_2D, maze->gl3dTextTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, opengltxt_png, sizeof(opengltxt_png)); +# endif + +# ifdef USE_FRACTAL_IMAGES + glGenTextures(1, &maze->fractal1Texture); + glBindTexture(GL_TEXTURE_2D, maze->fractal1Texture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, fractal1_png, sizeof(fractal1_png)); + + glGenTextures(1, &maze->fractal2Texture); + glBindTexture(GL_TEXTURE_2D, maze->fractal2Texture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, fractal2_png, sizeof(fractal2_png)); + + glGenTextures(1, &maze->fractal3Texture); + glBindTexture(GL_TEXTURE_2D, maze->fractal3Texture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, fractal3_png, sizeof(fractal3_png)); + + glGenTextures(1, &maze->fractal4Texture); + glBindTexture(GL_TEXTURE_2D, maze->fractal4Texture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, fractal4_png, sizeof(fractal4_png)); +# endif + + glGenTextures(1, &maze->startTexture); + glBindTexture(GL_TEXTURE_2D, maze->startTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + setup_png_texture(mi, start_png, sizeof(start_png)); + + glGenTextures(1, &maze->ceilingTexture); + glBindTexture(GL_TEXTURE_2D, maze->ceilingTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + if (!ceilingTexture || !*ceilingTexture + || !strcmp(ceilingTexture, "ceiling-tiles")) { + DEFAULT_CEILING_TEXTURE: + setup_png_texture(mi, brick2_png, sizeof(brick2_png)); + } else if (!strcmp(ceilingTexture, "brick-wall")) { + setup_png_texture(mi, brick1_png, sizeof(brick1_png)); + } else if (!strcmp(ceilingTexture, "wood-floor")) { + setup_png_texture(mi, wood2_png, sizeof(wood2_png)); +# ifdef USE_FRACTAL_IMAGES + } else if (!strcmp(ceilingTexture, "fractal-1")) { + setup_png_texture(mi, fractal1_png, sizeof(fractal1_png)); + dropAcidCeiling = 1; + } else if (!strcmp(ceilingTexture, "fractal-2")) { + setup_png_texture(mi, fractal2_png, sizeof(fractal2_png)); + dropAcidCeiling = 1; + } else if (!strcmp(ceilingTexture, "fractal-3")) { + setup_png_texture(mi, fractal3_png, sizeof(fractal3_png)); + dropAcidCeiling = 1; + } else if (!strcmp(ceilingTexture, "fractal-4")) { + setup_png_texture(mi, fractal4_png, sizeof(fractal4_png)); + dropAcidCeiling = 1; +# endif + } else { + if (!setup_file_texture(mi, ceilingTexture)) + goto DEFAULT_CEILING_TEXTURE; + } + + glGenTextures(1, &maze->floorTexture); + glBindTexture(GL_TEXTURE_2D, maze->floorTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + if (!floorTexture || !*floorTexture + || !strcmp(floorTexture, "wood-floor")) { + DEFAULT_FLOOR_TEXTURE: + setup_png_texture(mi, wood2_png, sizeof(wood2_png)); + } else if (!strcmp(floorTexture, "ceiling-tiles")) { + setup_png_texture(mi, brick2_png, sizeof(brick2_png)); + } else if (!strcmp(floorTexture, "brick-wall")) { + setup_png_texture(mi, brick1_png, sizeof(brick1_png)); +# ifdef USE_FRACTAL_IMAGES + } else if (!strcmp(floorTexture, "fractal-1")) { + setup_png_texture(mi, fractal1_png, sizeof(fractal1_png)); + dropAcidFloor = 1; + } else if (!strcmp(floorTexture, "fractal-2")) { + setup_png_texture(mi, fractal2_png, sizeof(fractal2_png)); + dropAcidFloor = 1; + } else if (!strcmp(floorTexture, "fractal-3")) { + setup_png_texture(mi, fractal3_png, sizeof(fractal3_png)); + dropAcidFloor = 1; + } else if (!strcmp(floorTexture, "fractal-4")) { + setup_png_texture(mi, fractal4_png, sizeof(fractal4_png)); + dropAcidFloor = 1; +# endif + } else { + if (!setup_file_texture(mi, floorTexture)) + goto DEFAULT_FLOOR_TEXTURE; + } + + glGenTextures(1, &maze->wallTexture); + glBindTexture(GL_TEXTURE_2D, maze->wallTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag); + if (!wallTexture || !*wallTexture || !strcmp(wallTexture, "brick-wall")) { + DEFAULT_WALL_TEXTURE: + setup_png_texture(mi, brick1_png, sizeof(brick1_png)); + } else if (!strcmp(wallTexture, "ceiling-tiles")) { + setup_png_texture(mi, brick2_png, sizeof(brick2_png)); + } else if (!strcmp(wallTexture, "wood-floor")) { + setup_png_texture(mi, wood2_png, sizeof(wood2_png)); +# ifdef USE_FRACTAL_IMAGES + } else if (!strcmp(wallTexture, "fractal-1")) { + setup_png_texture(mi, fractal1_png, sizeof(fractal1_png)); + dropAcidWalls = 1; + } else if (!strcmp(wallTexture, "fractal-2")) { + setup_png_texture(mi, fractal2_png, sizeof(fractal2_png)); + dropAcidWalls = 1; + } else if (!strcmp(wallTexture, "fractal-3")) { + setup_png_texture(mi, fractal3_png, sizeof(fractal3_png)); + dropAcidWalls = 1; + } else if (!strcmp(wallTexture, "fractal-4")) { + setup_png_texture(mi, fractal4_png, sizeof(fractal4_png)); + dropAcidWalls = 1; +# endif + } else { + if (!setup_file_texture(mi, wallTexture)) + goto DEFAULT_WALL_TEXTURE; + } +} + +static void +initializeGrid(maze_configuration* maze) +{ + unsigned i, j; + + for (i = 0; i < maze->numRows; i++) { + for (j = 0; j < maze->numColumns; j++) { + if (isOdd(i) && isOdd(j)) + maze->mazeGrid[i][j] = CELL_UNVISITED; + else + maze->mazeGrid[i][j] = WALL; + } + } +} + +static float +roundToNearestHalf(float num) +{ + return roundf(2.0 * num) / 2.0; +} + +static unsigned +isOdd(unsigned num) +{ + return num % 2; +} + +static unsigned +isEven(unsigned num) +{ + return !isOdd(num); +} + +/*This is the randomized Prim's algorithm.*/ +static void +buildMaze(maze_configuration* maze) +{ + Tuple cellToAdd, firstCell = {1, 1}; + maze->mazeGrid[1][1] = CELL; + + addWallsToList(firstCell, maze); + + while (maze->wallListSize > 0) { + unsigned randomNum = random() % maze->wallListSize; + Tuple currentWall = maze->wallList[randomNum]; + + if (isEven(currentWall.row)) { + if (maze->mazeGrid[currentWall.row - 1][currentWall.column] + == CELL + && maze->mazeGrid[currentWall.row + 1][currentWall.column] + == CELL_UNVISITED + ) { + cellToAdd.row = currentWall.row + 1; + cellToAdd.column = currentWall.column; + addCells(cellToAdd, currentWall, maze); + } + else if (maze->mazeGrid[currentWall.row + 1][currentWall.column] + == CELL + && maze->mazeGrid[currentWall.row - 1][currentWall.column] + == CELL_UNVISITED + ) { + cellToAdd.row = currentWall.row - 1; + cellToAdd.column = currentWall.column; + addCells(cellToAdd, currentWall, maze); + } + } else { + if (maze->mazeGrid[currentWall.row][currentWall.column - 1] + == CELL + && maze->mazeGrid[currentWall.row][currentWall.column + 1] + == CELL_UNVISITED + ) { + cellToAdd.row = currentWall.row; + cellToAdd.column = currentWall.column + 1; + addCells(cellToAdd, currentWall, maze); + } + else if (maze->mazeGrid[currentWall.row][currentWall.column + 1] + == CELL + && maze->mazeGrid[currentWall.row][currentWall.column - 1] + == CELL_UNVISITED + ) { + cellToAdd.row = currentWall.row; + cellToAdd.column = currentWall.column - 1; + addCells(cellToAdd, currentWall, maze); + } + } + + removeWallFromList(randomNum, maze); + } +} + +static void +addWallsToList(Tuple cell, maze_configuration* maze) +{ + unsigned i; + Tuple walls[4]; + walls[0].row = cell.row - 1; + walls[0].column = cell.column; + walls[1].row = cell.row + 1; + walls[1].column = cell.column; + walls[2].row = cell.row; + walls[2].column = cell.column - 1; + walls[3].row = cell.row; + walls[3].column = cell.column + 1; + + for (i = 0; i < 4; i++) { + if (isRemovableWall(walls[i], maze)) { + maze->wallList[maze->wallListSize] = walls[i]; + maze->wallListSize++; + } + } +} + +static unsigned char +isRemovableWall(Tuple coordinates, maze_configuration* maze) +{ + if (maze->mazeGrid[coordinates.row][coordinates.column] == WALL + && coordinates.row > 0 + && coordinates.row < maze->numRows - 1 + && coordinates.column > 0 + && coordinates.column < maze->numColumns - 1 + ) + return 1; + else + return 0; +} + +static void +addCells(Tuple cellToAdd, Tuple currentWall, maze_configuration* maze) +{ + maze->mazeGrid[currentWall.row][currentWall.column] = CELL; + maze->mazeGrid[cellToAdd.row][cellToAdd.column] = CELL; + addWallsToList(cellToAdd, maze); +} + +static void +removeWallFromList(unsigned index, maze_configuration* maze) +{ + unsigned i; + for (i = index + 1; i < maze->wallListSize; i++) + maze->wallList[i - 1] = maze->wallList[i]; + + maze->wallListSize--; +} + +static void +placeMiscObjects(maze_configuration* maze) +{ + Rat* rat; + Tuple temp; + unsigned char object; + unsigned numSurroundingWalls = 3; + unsigned i; + + while (numSurroundingWalls >= 3) { + numSurroundingWalls = 0; + maze->startPosition = placeObject(maze, CELL); + + object = maze->mazeGrid[maze->startPosition.row] + [maze->startPosition.column + 1]; + if (object == WALL || object == WALL_GL_REDBOOK) + numSurroundingWalls++; + object = maze->mazeGrid[maze->startPosition.row - 1] + [maze->startPosition.column]; + if (object == WALL || object == WALL_GL_REDBOOK) + numSurroundingWalls++; + object = maze->mazeGrid[maze->startPosition.row] + [maze->startPosition.column - 1]; + if (object == WALL || object == WALL_GL_REDBOOK) + numSurroundingWalls++; + object = maze->mazeGrid[maze->startPosition.row + 1] + [maze->startPosition.column]; + if (object == WALL || object == WALL_GL_REDBOOK) + numSurroundingWalls++; + } + maze->mazeGrid[maze->startPosition.row][maze->startPosition.column] = START; + + if (maze->mazeGrid[maze->startPosition.row][maze->startPosition.column + 1] + != WALL && maze->mazeGrid[maze->startPosition.row] + [maze->startPosition.column + 1] != WALL_GL_REDBOOK) { + maze->camera.position.x = (maze->startPosition.column + 1) / 2.0; + maze->camera.position.z = maze->startPosition.row / 2.0; + maze->camera.rotation = WEST; + } + else if (maze->mazeGrid[maze->startPosition.row - 1] + [maze->startPosition.column] != WALL + && maze->mazeGrid[maze->startPosition.row - 1] + [maze->startPosition.column] != WALL_GL_REDBOOK) { + maze->camera.position.x = maze->startPosition.column / 2.0; + maze->camera.position.z = (maze->startPosition.row - 1) / 2.0; + maze->camera.rotation = SOUTH; + } + else if (maze->mazeGrid[maze->startPosition.row] + [maze->startPosition.column - 1] != WALL + && maze->mazeGrid[maze->startPosition.row] + [maze->startPosition.column - 1] != WALL_GL_REDBOOK) { + maze->camera.position.x = (maze->startPosition.column - 1) / 2.0; + maze->camera.position.z = maze->startPosition.row / 2.0; + maze->camera.rotation = EAST; + } + else { + maze->camera.position.x = maze->startPosition.column / 2.0; + maze->camera.position.z = (maze->startPosition.row + 1) / 2.0; + maze->camera.rotation = NORTH; + } + + maze->finishPosition = placeObject(maze, FINISH); + + for (i = 0; i < numInverters; i++) + maze->inverterPosition[i] = + placeObject(maze, random() % 4 + INVERTER_TETRAHEDRON); + + temp.row = 0; + temp.column = 0; + +# ifdef USE_FLOATING_IMAGES + for (i = 0; i < numGl3dTexts; i++) + maze->gl3dTextPosition[i] = + placeObject(maze, GL_3D_TEXT); +# endif + + for (i = 0; i < numRats; i++) { + rat = &(maze->rats[i]); + temp = placeObject(maze, CELL); + rat->position.x = temp.column / 2.0; + rat->position.z = temp.row / 2.0; + rat->state = WALKING; + + if (temp.row == 0 && temp.column == 0) { + continue; + } + + if (maze->mazeGrid[(int)(rat->position.z * 2)] + [(int)(rat->position.x * 2) + 1] + != WALL && maze->mazeGrid[(int)(rat->position.z * 2)] + [(int)(rat->position.x * 2) + 1] != WALL_GL_REDBOOK) + rat->rotation = EAST; + else if (maze->mazeGrid[(int)(rat->position.z * 2) - 1] + [(int)(rat->position.x * 2)] + != WALL && maze->mazeGrid[(int)(rat->position.z * 2) - 1] + [(int)(rat->position.x * 2)] != WALL_GL_REDBOOK) + rat->rotation = NORTH; + else if (maze->mazeGrid[(int)(rat->position.z * 2)] + [(int)(rat->position.x * 2) - 1] + != WALL && maze->mazeGrid[(int)(rat->position.z * 2)] + [(int)(rat->position.x * 2) - 1] != WALL_GL_REDBOOK) + rat->rotation = WEST; + else + rat->rotation = SOUTH; + } + +# ifdef USE_FLOATING_IMAGES + for (i = 0; i < numGlRedbooks; i++) { + while (!(((isOdd(temp.row) && isEven(temp.column)) + || (isEven(temp.row) && isOdd(temp.column))) + && maze->mazeGrid[temp.row][temp.column] == WALL)) { + temp.row = random() % maze->numRows; + temp.column = random() % maze->numColumns; + } + + maze->mazeGrid[temp.row][temp.column] = WALL_GL_REDBOOK; + } +# endif +} + +static Tuple +placeObject(maze_configuration* maze, unsigned char type) +{ + Tuple position = {0, 0}; + + while (!(maze->mazeGrid[position.row][position.column] == CELL + && isOdd(position.row) && isOdd(position.column))) { + position.row = random() % maze->numRows; + position.column = random() % maze->numColumns; + } + + maze->mazeGrid[position.row][position.column] = type; + return position; +} + +ENTRYPOINT void +reshape_maze (ModeInfo *mi, int width, int height) +{ + glViewport(0, 0, (GLint) width, (GLint) height); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + +ENTRYPOINT Bool +maze_handle_event (ModeInfo *mi, XEvent *event) +{ + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + if (event->xany.type == ButtonPress) + { + maze->button_down_p = True; + return True; + } + else if (event->xany.type == ButtonRelease) + { + maze->button_down_p = False; + return True; + } + return False; +} + +ENTRYPOINT void +init_maze (ModeInfo * mi) +{ + unsigned i; + maze_configuration *maze; + GLfloat ambient[] = {0, 0, 0, 1}, + diffuse[] = {1, 1, 1, 1}, + position[] = {0, 2, 0, 0}, + mcolor[] = {1, 1, 1, 1}; + + MI_INIT(mi, mazes); + maze = &mazes[MI_SCREEN(mi)]; + + maze->glx_context = init_GL(mi); + + reshape_maze(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + for (i = 0; i < countof(maze->dlists); i++) + maze->dlists[i] = glGenLists (1); + + maze->numRows = (numRows < 2 ? 5 : numRows * 2 + 1); + maze->numColumns = (numColumns < 2 ? 5 : numColumns * 2 + 1); + + i = (maze->numRows / 2) * (maze->numColumns / 2) - 2; + if (i < numInverters) { + numInverters = i; + i = 0; + } else i -= numInverters; + + if (i < numRats) { + numRats = i; + i = 0; + } else i -= numRats; +# ifdef USE_FLOATING_IMAGES + if (i < numGl3dTexts) { + numGl3dTexts = i; + i = 0; + } else i -= numGl3dTexts; + + if (((maze->numRows - 1) + (maze->numColumns - 1) + + ((maze->numRows / 2 - 1) * (maze->numColumns / 2 - 1))) < maze->numGlRedbooks) + maze->numGlRedbooks = (maze->numRows - 1) + (maze->numColumns - 1) + + ((maze->numRows / 2 - 1) * (maze->numColumns / 2 - 1)); +# endif + + glEnable(GL_DEPTH_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_LIGHT0); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mcolor); + + glShadeModel(GL_FLAT); + + maze->mazeGrid = calloc(maze->numRows, sizeof(unsigned char*)); + for (i = 0; i < maze->numRows; i++) + maze->mazeGrid[i] = calloc(maze->numColumns, sizeof(unsigned char)); + maze->wallList = calloc(((maze->numColumns - 2) / 2) * ((maze->numRows - 2) / 2 + 1) + + ((maze->numColumns - 2) / 2 + 1) * ((maze->numRows - 2) / 2), sizeof(Tuple)); + maze->inverterPosition = calloc(numInverters, sizeof(Tuple)); + maze->rats = calloc(numRats, sizeof(Rat)); +# ifdef USE_FLOATING_IMAGES + maze->gl3dTextPosition = calloc(numGl3dTexts, sizeof(Tuple)); +#endif + + setup_textures(mi); + + newMaze(maze); + + constructLists(mi); + refreshRemainingDistanceToTravel(mi); + + maze->camera.isCamera = 1; + for (i = 0; i < numRats; i++) + maze->rats[i].isCamera = 0; +} + +static void +newMaze(maze_configuration* maze) +{ + maze->camera.state = STARTING; + maze->camera.inversion = 0; + maze->wallHeight = 0; + maze->inverterRotation = 0; + maze->acidHue = 0; + + initializeGrid(maze); + buildMaze(maze); + placeMiscObjects(maze); +} + +static void +constructLists(ModeInfo *mi) +{ + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + + glNewList(maze->dlists[ARROW], GL_COMPILE); + glBegin(GL_POLYGON); + glVertex2f(0, -0.25); + glVertex2f(0.146946313, 0.202254249); + glVertex2f(0, 0.125); + glVertex2f(-0.146946313, 0.202254249); + glEnd(); + glEndList(); + + glNewList(maze->dlists[SQUARE], GL_COMPILE); + glBegin(GL_QUADS); + glVertex2f(-0.176776695, -0.176776695); + glVertex2f(0.176776695, -0.176776695); + glVertex2f(0.176776695, 0.176776695); + glVertex2f(-0.176776695, 0.176776695); + glEnd(); + glEndList(); + + glNewList(maze->dlists[STAR], GL_COMPILE); + glBegin(GL_TRIANGLE_FAN); + glVertex2f(0, 0); + glVertex2f(0, -0.25); + glVertex2f(0.073473157, -0.101127124); + glVertex2f(0.237764129, -0.077254249); + glVertex2f(0.118882065, 0.038627124); + glVertex2f(0.146946313, 0.202254249); + glVertex2f(0, 0.125); + glVertex2f(-0.146946313, 0.202254249); + glVertex2f(-0.118882065, 0.038627124); + glVertex2f(-0.237764129, -0.077254249); + glVertex2f(-0.073473157, -0.101127124); + glVertex2f(0, -0.25); + glEnd(); + glEndList(); + + glNewList(maze->dlists[TRIANGLE], GL_COMPILE); + glBegin(GL_POLYGON); + glVertex2f(0, -0.25); + glVertex2f(0.216506351, 0.125); + glVertex2f(-0.216506351, 0.125); + glEnd(); + glEndList(); + + glNewList(maze->dlists[INVERTER_TETRAHEDRON], GL_COMPILE); + glBegin(GL_TRIANGLES); + glNormal3f(0.471404521, 0.816496581, 0.333333333); + glVertex3f(0, 0, 0.25); + glVertex3f(0.23570226, 0, -0.083333333); + glVertex3f(-0.11785113, 0.204124145, -0.083333333); + + glNormal3f(-0.942809042, 0, 0.333333333); + glVertex3f(0, 0, 0.25); + glVertex3f(-0.11785113, 0.204124145, -0.083333333); + glVertex3f(-0.11785113, -0.204124145, -0.083333333); + + glNormal3f(0.471404521, -0.816496581, 0.333333333); + glVertex3f(0, 0, 0.25); + glVertex3f(-0.11785113, -0.204124145, -0.083333333); + glVertex3f(0.23570226, 0, -0.083333333); + + glNormal3f(0, 0, -1); + glVertex3f(0.23570226, 0, -0.083333333); + glVertex3f(-0.11785113, -0.204124145, -0.083333333); + glVertex3f(-0.11785113, 0.204124145, -0.083333333); + glEnd(); + glEndList(); + + glNewList(maze->dlists[INVERTER_OCTAHEDRON], GL_COMPILE); + glBegin(GL_TRIANGLES); + glNormal3f(0.577350269, 0.577350269, 0.577350269); + glVertex3f(0, 0, 0.25); + glVertex3f(0.25, 0, 0); + glVertex3f(0, 0.25, 0); + + glNormal3f(-0.577350269, 0.577350269, 0.577350269); + glVertex3f(0, 0, 0.25); + glVertex3f(0, 0.25, 0); + glVertex3f(-0.25, 0, 0); + + glNormal3f(-0.577350269, -0.577350269, 0.577350269); + glVertex3f(0, 0, 0.25); + glVertex3f(-0.25, 0, 0); + glVertex3f(0, -0.25, 0); + + glNormal3f(0.577350269, -0.577350269, 0.577350269); + glVertex3f(0, 0, 0.25); + glVertex3f(0, -0.25, 0); + glVertex3f(0.25, 0, 0); + + glNormal3f(0.577350269, -0.577350269, -0.577350269); + glVertex3f(0.25, 0, 0); + glVertex3f(0, -0.25, 0); + glVertex3f(0, 0, -0.25); + + glNormal3f(0.577350269, 0.577350269, -0.577350269); + glVertex3f(0.25, 0, 0); + glVertex3f(0, 0, -0.25); + glVertex3f(0, 0.25, 0); + + glNormal3f(-0.577350269, 0.577350269, -0.577350269); + glVertex3f(0, 0.25, 0); + glVertex3f(0, 0, -0.25); + glVertex3f(-0.25, 0, 0); + + glNormal3f(-0.577350269, -0.577350269, -0.577350269); + glVertex3f(-0.25, 0, 0); + glVertex3f(0, 0, -0.25); + glVertex3f(0, -0.25, 0); + glEnd(); + glEndList(); + + glNewList(maze->dlists[INVERTER_DODECAHEDRON], GL_COMPILE); + glBegin(GL_POLYGON); + glNormal3f(0.000000000, 0.000000000, 1.000000000); + glVertex3f(0.122780868, 0.089205522, 0.198663618); + glVertex3f(-0.046898119, 0.144337567, 0.198663618); + glVertex3f(-0.151765500, 0.000000000, 0.198663618); + glVertex3f(-0.046898119, -0.144337567, 0.198663618); + glVertex3f(0.122780868, -0.089205522, 0.198663618); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(0.894427191, 0.000000000, 0.447213595); + glVertex3f(0.198663618, -0.144337567, 0.046898119); + glVertex3f(0.245561737, 0.000000000, -0.046898119); + glVertex3f(0.198663618, 0.144337567, 0.046898119); + glVertex3f(0.122780868, 0.089205522, 0.198663618); + glVertex3f(0.122780868, -0.089205522, 0.198663618); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(0.276393202, 0.850650808, 0.447213595); + glVertex3f(0.198663618, 0.144337567, 0.046898119); + glVertex3f(0.075882750, 0.233543090, -0.046898119); + glVertex3f(-0.075882750, 0.233543090, 0.046898119); + glVertex3f(-0.046898119, 0.144337567, 0.198663618); + glVertex3f(0.122780868, 0.089205522, 0.198663618); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(-0.723606798, 0.525731112, 0.447213595); + glVertex3f(-0.075882750, 0.233543090, 0.046898119); + glVertex3f(-0.198663618, 0.144337567, -0.046898119); + glVertex3f(-0.245561737, 0.000000000, 0.046898119); + glVertex3f(-0.151765500, 0.000000000, 0.198663618); + glVertex3f(-0.046898119, 0.144337567, 0.198663618); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(-0.723606798, -0.525731112, 0.447213595); + glVertex3f(-0.245561737, 0.000000000, 0.046898119); + glVertex3f(-0.198663618, -0.144337567, -0.046898119); + glVertex3f(-0.075882750, -0.233543090, 0.046898119); + glVertex3f(-0.046898119, -0.144337567, 0.198663618); + glVertex3f(-0.151765500, 0.000000000, 0.198663618); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(0.276393202, -0.850650808, 0.447213595); + glVertex3f(-0.075882750, -0.233543090, 0.046898119); + glVertex3f(0.075882750, -0.233543090, -0.046898119); + glVertex3f(0.198663618, -0.144337567, 0.046898119); + glVertex3f(0.122780868, -0.089205522, 0.198663618); + glVertex3f(-0.046898119, -0.144337567, 0.198663618); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(0.723606798, 0.525731112, -0.447213595); + glVertex3f(0.245561737, 0.000000000, -0.046898119); + glVertex3f(0.151765500, 0.000000000, -0.198663618); + glVertex3f(0.046898119, 0.144337567, -0.198663618); + glVertex3f(0.075882750, 0.233543090, -0.046898119); + glVertex3f(0.198663618, 0.144337567, 0.046898119); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(0.723606798, -0.525731112, -0.447213595); + glVertex3f(0.198663618, -0.144337567, 0.046898119); + glVertex3f(0.075882750, -0.233543090, -0.046898119); + glVertex3f(0.046898119, -0.144337567, -0.198663618); + glVertex3f(0.151765500, 0.000000000, -0.198663618); + glVertex3f(0.245561737, 0.000000000, -0.046898119); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(-0.276393202, 0.850650808, -0.447213595); + glVertex3f(0.075882750, 0.233543090, -0.046898119); + glVertex3f(0.046898119, 0.144337567, -0.198663618); + glVertex3f(-0.122780868, 0.089205522, -0.198663618); + glVertex3f(-0.198663618, 0.144337567, -0.046898119); + glVertex3f(-0.075882750, 0.233543090, 0.046898119); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(-0.894427191, 0.000000000, -0.447213595); + glVertex3f(-0.198663618, 0.144337567, -0.046898119); + glVertex3f(-0.122780868, 0.089205522, -0.198663618); + glVertex3f(-0.122780868, -0.089205522, -0.198663618); + glVertex3f(-0.198663618, -0.144337567, -0.046898119); + glVertex3f(-0.245561737, 0.000000000, 0.046898119); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(-0.276393202, -0.850650808, -0.447213595); + glVertex3f(-0.198663618, -0.144337567, -0.046898119); + glVertex3f(-0.122780868, -0.089205522, -0.198663618); + glVertex3f(0.046898119, -0.144337567, -0.198663618); + glVertex3f(0.075882750, -0.233543090, -0.046898119); + glVertex3f(-0.075882750, -0.233543090, 0.046898119); + glEnd(); + + glBegin(GL_POLYGON); + glNormal3f(0.000000000, 0.000000000, -1.000000000); + glVertex3f(0.046898119, -0.144337567, -0.198663618); + glVertex3f(-0.122780868, -0.089205522, -0.198663618); + glVertex3f(-0.122780868, 0.089205522, -0.198663618); + glVertex3f(0.046898119, 0.144337567, -0.198663618); + glVertex3f(0.151765500, 0.000000000, -0.198663618); + glEnd(); + glEndList(); + + glNewList(maze->dlists[INVERTER_ICOSAHEDRON], GL_COMPILE); + glBegin(GL_TRIANGLES); + glNormal3f(0.491123473, 0.356822090, 0.794654473); + glVertex3f(0.000000000, 0.000000000, 0.250000000); + glVertex3f(0.223606798, 0.000000000, 0.111803399); + glVertex3f(0.069098301, 0.212662702, 0.111803399); + + glNormal3f(-0.187592474, 0.577350269, 0.794654473); + glVertex3f(0.000000000, 0.000000000, 0.250000000); + glVertex3f(0.069098301, 0.212662702, 0.111803399); + glVertex3f(-0.180901699, 0.131432778, 0.111803399); + + glNormal3f(-0.607061998, 0.000000000, 0.794654473); + glVertex3f(0.000000000, 0.000000000, 0.250000000); + glVertex3f(-0.180901699, 0.131432778, 0.111803399); + glVertex3f(-0.180901699, -0.131432778, 0.111803399); + + glNormal3f(-0.187592474, -0.577350269, 0.794654473); + glVertex3f(0.000000000, 0.000000000, 0.250000000); + glVertex3f(-0.180901699, -0.131432778, 0.111803399); + glVertex3f(0.069098301, -0.212662702, 0.111803399); + + glNormal3f(0.491123473, -0.356822090, 0.794654473); + glVertex3f(0.000000000, 0.000000000, 0.250000000); + glVertex3f(0.069098301, -0.212662702, 0.111803399); + glVertex3f(0.223606798, 0.000000000, 0.111803399); + + glNormal3f(0.794654473, -0.577350269, 0.187592474); + glVertex3f(0.223606798, 0.000000000, 0.111803399); + glVertex3f(0.069098301, -0.212662702, 0.111803399); + glVertex3f(0.180901699, -0.131432778, -0.111803399); + + glNormal3f(0.982246947, 0.000000000, -0.187592474); + glVertex3f(0.223606798, 0.000000000, 0.111803399); + glVertex3f(0.180901699, -0.131432778, -0.111803399); + glVertex3f(0.180901699, 0.131432778, -0.111803399); + + glNormal3f(0.794654473, 0.577350269, 0.187592474); + glVertex3f(0.223606798, 0.000000000, 0.111803399); + glVertex3f(0.180901699, 0.131432778, -0.111803399); + glVertex3f(0.069098301, 0.212662702, 0.111803399); + + glNormal3f(0.303530999, 0.934172359, -0.187592474); + glVertex3f(0.069098301, 0.212662702, 0.111803399); + glVertex3f(0.180901699, 0.131432778, -0.111803399); + glVertex3f(-0.069098301, 0.212662702, -0.111803399); + + glNormal3f(-0.303530999, 0.934172359, 0.187592474); + glVertex3f(0.069098301, 0.212662702, 0.111803399); + glVertex3f(-0.069098301, 0.212662702, -0.111803399); + glVertex3f(-0.180901699, 0.131432778, 0.111803399); + + glNormal3f(-0.794654473, 0.577350269, -0.187592474); + glVertex3f(-0.180901699, 0.131432778, 0.111803399); + glVertex3f(-0.069098301, 0.212662702, -0.111803399); + glVertex3f(-0.223606798, 0.000000000, -0.111803399); + + glNormal3f(-0.982246947, 0.000000000, 0.187592474); + glVertex3f(-0.180901699, 0.131432778, 0.111803399); + glVertex3f(-0.223606798, 0.000000000, -0.111803399); + glVertex3f(-0.180901699, -0.131432778, 0.111803399); + + glNormal3f(-0.794654473, -0.577350269, -0.187592474); + glVertex3f(-0.180901699, -0.131432778, 0.111803399); + glVertex3f(-0.223606798, 0.000000000, -0.111803399); + glVertex3f(-0.069098301, -0.212662702, -0.111803399); + + glNormal3f(-0.303530999, -0.934172359, 0.187592474); + glVertex3f(-0.180901699, -0.131432778, 0.111803399); + glVertex3f(-0.069098301, -0.212662702, -0.111803399); + glVertex3f(0.069098301, -0.212662702, 0.111803399); + + glNormal3f(0.303530999, -0.934172359, -0.187592474); + glVertex3f(0.069098301, -0.212662702, 0.111803399); + glVertex3f(-0.069098301, -0.212662702, -0.111803399); + glVertex3f(0.180901699, -0.131432778, -0.111803399); + + glNormal3f(0.607061998, 0.000000000, -0.794654473); + glVertex3f(0.180901699, 0.131432778, -0.111803399); + glVertex3f(0.180901699, -0.131432778, -0.111803399); + glVertex3f(0.000000000, 0.000000000, -0.250000000); + + glNormal3f(0.187592474, 0.577350269, -0.794654473); + glVertex3f(0.180901699, 0.131432778, -0.111803399); + glVertex3f(0.000000000, 0.000000000, -0.250000000); + glVertex3f(-0.069098301, 0.212662702, -0.111803399); + + glNormal3f(0.187592474, -0.577350269, -0.794654473); + glVertex3f(0.180901699, -0.131432778, -0.111803399); + glVertex3f(-0.069098301, -0.212662702, -0.111803399); + glVertex3f(0.000000000, 0.000000000, -0.250000000); + + glNormal3f(-0.491123473, 0.356822090, -0.794654473); + glVertex3f(-0.069098301, 0.212662702, -0.111803399); + glVertex3f(0.000000000, 0.000000000, -0.250000000); + glVertex3f(-0.223606798, 0.000000000, -0.111803399); + + glNormal3f(-0.491123473, -0.356822090, -0.794654473); + glVertex3f(-0.223606798, 0.000000000, -0.111803399); + glVertex3f(0.000000000, 0.000000000, -0.250000000); + glVertex3f(-0.069098301, -0.212662702, -0.111803399); + glEnd(); + glEndList(); +} + +ENTRYPOINT void +draw_maze (ModeInfo * mi) +{ + unsigned i; + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) MI_HEIGHT(mi) / MI_WIDTH(mi); + + if (!maze->glx_context) + return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(maze->glx_context)); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(90, 1/h, 0.05, 100); + + if (MI_WIDTH(mi) > 2560) /* Retina displays */ + glLineWidth (6); + else +# ifdef HAVE_MOBILE + glLineWidth (4); +# else + glLineWidth (2); +# endif + + glRotatef(maze->camera.inversion, 0, 0, 1); + glRotatef(maze->camera.rotation, 0, 1, 0); + glTranslatef(-1 * maze->camera.position.x, -0.5, + -1 * maze->camera.position.z); + + refreshRemainingDistanceToTravel(mi); + + updateInverterRotation(maze); + shiftAcidColor(maze); + step(&maze->camera, maze); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + drawWalls(mi); + drawCeiling(mi); + drawFloor(mi); + + for (i = 0; i < numInverters; i++) + drawInverter(maze, maze->inverterPosition[i]); + +# ifdef USE_FLOATING_IMAGES + for (i = 0; i < numGl3dTexts; i++) + drawPane(mi, maze->gl3dTextTexture, maze->gl3dTextPosition[i]); +# endif + + for (i = 0; i < numRats; i++) { + step(&maze->rats[i], maze); + drawRat(maze->rats[i].position, maze); + } + + drawPane(mi, maze->finishTexture, maze->finishPosition); + drawPane(mi, maze->startTexture, maze->startPosition); + + if (shouldDrawOverlay || maze->button_down_p) + drawOverlay(mi); + + if (mi->fps_p) do_fps(mi); + glFinish(); + glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi)); +} + +static void +shiftAcidColor(maze_configuration* maze) +{ + GLfloat x = 1 - fabs(fmod(maze->acidHue / 60.0, 2) - 1); + + if (0 <= maze->acidHue && maze->acidHue <= 60) { + maze->acidColor.red = 1; + maze->acidColor.green = x; + maze->acidColor.blue = 0; + } else if (60 <= maze->acidHue && maze->acidHue <= 120) { + maze->acidColor.red = x; + maze->acidColor.green = 1; + maze->acidColor.blue = 0; + } else if (120 <= maze->acidHue && maze->acidHue <= 180) { + maze->acidColor.red = 0; + maze->acidColor.green = 1; + maze->acidColor.blue = x; + } else if (180 <= maze->acidHue && maze->acidHue <= 240) { + maze->acidColor.red = 0; + maze->acidColor.green = x; + maze->acidColor.blue = 1; + } else if (240 <= maze->acidHue && maze->acidHue <= 300) { + maze->acidColor.red = x; + maze->acidColor.green = 0; + maze->acidColor.blue = 1; + } else { + maze->acidColor.red = 1; + maze->acidColor.green = 0; + maze->acidColor.blue = x; + } + + maze->acidHue += 75 * maze->camera.remainingDistanceToTravel; + if (maze->acidHue >= 360) maze->acidHue -= 360; +} + +static void +refreshRemainingDistanceToTravel(ModeInfo * mi) +{ + unsigned i; + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + maze->camera.remainingDistanceToTravel + = speed * 1.6 * (MI_DELAY(mi) / 1000000.0); + for (i = 0; i < numRats; i++) + maze->rats[i].remainingDistanceToTravel = + maze->camera.remainingDistanceToTravel; +} + +static void +step(Rat* rat, maze_configuration* maze) +{ + GLfloat previousWallHeight = maze->wallHeight; + + if (!rat->isCamera && (maze->wallHeight < 1 + || (rat->position.x == 0 && rat->position.z == 0))) + return; + + while (rat->remainingDistanceToTravel > 0) { + switch(rat->state) { + case WALKING: + switch((int)rat->rotation) { + case NORTH: + walk(rat, 'z', -1, maze); + break; + case EAST: + walk(rat, 'x', 1, maze); + break; + case SOUTH: + walk(rat, 'z', 1, maze); + break; + case WEST: + walk(rat, 'x', -1, maze); + break; + default: + rat->rotation = 90 * roundf(rat->rotation / 90.0); + break; + } + break; + case TURNING_LEFT: + turn(rat, maze); + break; + case TURNING_RIGHT: + turn(rat, maze); + break; + case TURNING_AROUND: + turnAround(rat, maze); + break; + case INVERTING: + invert(maze); + break; + case STARTING: + maze->wallHeight += 0.48 * rat->remainingDistanceToTravel; + if (maze->wallHeight > 1.0) { + maze->wallHeight = 1.0; + rat->remainingDistanceToTravel = + fabs(previousWallHeight - maze->wallHeight); + changeState(&maze->camera, maze); + } else + rat->remainingDistanceToTravel = 0; + break; + case FINISHING: + if (maze->wallHeight == 0) { + newMaze(maze); + rat->remainingDistanceToTravel = 0; + } + else if (maze->wallHeight < 0) { + maze->wallHeight = 0; + rat->remainingDistanceToTravel = + fabs(previousWallHeight - maze->wallHeight); + } + else { + maze->wallHeight -= 0.48 * rat->remainingDistanceToTravel; + rat->remainingDistanceToTravel = 0; + } + break; + default: + break; + } + } +} + +static void +walk(Rat* rat, char axis, int sign, maze_configuration* maze) +{ + GLfloat* component = (axis == 'x' ? &rat->position.x : &rat->position.z); + GLfloat previousPosition = *component; + int isMultipleOfOneHalf = 0; + unsigned temp = (unsigned)((*component) * 2.0); + + if (((*component) * 2) == roundf((*component) * 2)) + isMultipleOfOneHalf = 1; + *component += sign * rat->remainingDistanceToTravel; + + if (!isMultipleOfOneHalf && ((unsigned)((*component) * 2.0)) != temp) { + *component = roundToNearestHalf(*component); + rat->remainingDistanceToTravel -= + fabs((*component) - previousPosition); + changeState(rat, maze); + } else + rat->remainingDistanceToTravel = 0; + +} + +static void +turn(Rat* rat, maze_configuration* maze) +{ + Tuplef rotatingAround; + GLfloat tangentVectorDirection, previousRotation + = rat->rotation; + + if (rat->state == TURNING_LEFT) { + tangentVectorDirection = rat->rotation * (M_PI / 180) + M_PI; + rotatingAround.x = roundToNearestHalf(rat->position.x + + 0.5 * cos(tangentVectorDirection)); + rotatingAround.z = roundToNearestHalf(rat->position.z + + 0.5 * sin(tangentVectorDirection)); + + rat->rotation -= DEF_ANGULAR_CONVERSION_FACTOR + * rat->remainingDistanceToTravel; + + if (previousRotation > WEST && rat->rotation <= WEST) { + rat->rotation = WEST; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - rat->rotation); + } else if (previousRotation > SOUTH && rat->rotation <= SOUTH) { + rat->rotation = SOUTH; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - rat->rotation); + } else if (previousRotation > EAST && rat->rotation <= EAST) { + rat->rotation = EAST; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - rat->rotation); + } else if (previousRotation > NORTH && rat->rotation <= NORTH) { + rat->rotation = NORTH; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - rat->rotation); + } else + rat->remainingDistanceToTravel = 0; + + tangentVectorDirection = rat->rotation * (M_PI / 180); + } + else { + tangentVectorDirection = rat->rotation * (M_PI / 180); + rotatingAround.x = roundToNearestHalf(rat->position.x + + 0.5 * cos(tangentVectorDirection)); + rotatingAround.z = roundToNearestHalf(rat->position.z + + 0.5 * sin(tangentVectorDirection)); + + rat->rotation += DEF_ANGULAR_CONVERSION_FACTOR + * rat->remainingDistanceToTravel; + + if (rat->rotation >= 360) { + rat->rotation = NORTH; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - 360); + } else if (previousRotation < WEST && rat->rotation >= WEST) { + rat->rotation = WEST; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - rat->rotation); + } else if (previousRotation < SOUTH && rat->rotation >= SOUTH) { + rat->rotation = SOUTH; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - rat->rotation); + } else if (previousRotation < EAST && rat->rotation >= EAST) { + rat->rotation = EAST; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - rat->rotation); + } else + rat->remainingDistanceToTravel = 0; + + tangentVectorDirection = rat->rotation * (M_PI / 180) + M_PI; + } + + rat->position.x = rotatingAround.x + 0.5 * cos(tangentVectorDirection); + rat->position.z = rotatingAround.z + 0.5 * sin(tangentVectorDirection); + + if (rat->rotation < 0) + rat->rotation += 360; + + if (rat->rotation == NORTH || rat->rotation == EAST + || rat->rotation == SOUTH || rat->rotation == WEST) { + rat->position.x = roundToNearestHalf(rat->position.x); + rat->position.z = roundToNearestHalf(rat->position.z); + changeState(rat, maze); + } +} + +static void +turnAround(Rat* rat, maze_configuration* maze) +{ + GLfloat previousRotation = rat->rotation; + + rat->rotation -= 1.5 * DEF_ANGULAR_CONVERSION_FACTOR + * rat->remainingDistanceToTravel; + + if (previousRotation > rat->desiredRotation + && rat->rotation <= rat->desiredRotation) { + rat->rotation = rat->desiredRotation; + rat->remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousRotation - rat->rotation); + changeState(rat, maze); + } + else { + rat->remainingDistanceToTravel = 0; + if (rat->rotation < 0) rat->rotation += 360; + } +} + +static void +invert(maze_configuration* maze) +{ + GLfloat previousInversion = maze->camera.inversion; + int shouldChangeState = 0; + unsigned cameraX = (unsigned)roundf(maze->camera.position.x * 2), + cameraZ = (unsigned)roundf(maze->camera.position.z * 2); + + maze->camera.inversion += 1.5 * DEF_ANGULAR_CONVERSION_FACTOR + * maze->camera.remainingDistanceToTravel; + if (previousInversion < 180 && maze->camera.inversion >= 180) { + maze->camera.inversion = 180; + maze->camera.remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousInversion - maze->camera.inversion); + shouldChangeState = 1; + } + else if (maze->camera.inversion >= 360) { + maze->camera.inversion = 0; + maze->camera.remainingDistanceToTravel -= (M_PI / 180) + * fabs(previousInversion - maze->camera.inversion); + shouldChangeState = 1; + } else + maze->camera.remainingDistanceToTravel = 0; + + if (shouldChangeState) { + switch ((int)maze->camera.rotation) { + case NORTH: + maze->mazeGrid[cameraZ - 1][cameraX] = CELL; + break; + case EAST: + maze->mazeGrid[cameraZ][cameraX + 1] = CELL; + break; + case SOUTH: + maze->mazeGrid[cameraZ + 1][cameraX] = CELL; + break; + case WEST: + maze->mazeGrid[cameraZ][cameraX - 1] = CELL; + break; + default: + break; + } + + changeState(&maze->camera, maze); + } +} + +static void +changeState(Rat* rat, maze_configuration* maze) +{ + unsigned char inFrontOfRat, toTheLeft, straightAhead, toTheRight; + unsigned ratX = (unsigned)roundf(rat->position.x * 2), + ratZ = (unsigned)roundf(rat->position.z * 2); + + switch ((int)rat->rotation) { + case NORTH: + inFrontOfRat = maze->mazeGrid[ratZ - 1][ratX]; + toTheLeft = maze->mazeGrid[ratZ - 1][ratX - 1]; + straightAhead = maze->mazeGrid[ratZ - 2][ratX]; + toTheRight = maze->mazeGrid[ratZ - 1][ratX + 1]; + break; + case EAST: + inFrontOfRat = maze->mazeGrid[ratZ][ratX + 1]; + toTheLeft = maze->mazeGrid[ratZ - 1][ratX + 1]; + straightAhead = maze->mazeGrid[ratZ][ratX + 2]; + toTheRight = maze->mazeGrid[ratZ + 1][ratX + 1]; + break; + case SOUTH: + inFrontOfRat = maze->mazeGrid[ratZ + 1][ratX]; + toTheLeft = maze->mazeGrid[ratZ + 1][ratX + 1]; + straightAhead = maze->mazeGrid[ratZ + 2][ratX]; + toTheRight = maze->mazeGrid[ratZ + 1][ratX - 1]; + break; + case WEST: + inFrontOfRat = maze->mazeGrid[ratZ][ratX - 1]; + toTheLeft = maze->mazeGrid[ratZ + 1][ratX - 1]; + straightAhead = maze->mazeGrid[ratZ][ratX - 2]; + toTheRight = maze->mazeGrid[ratZ - 1][ratX - 1]; + break; + default: + inFrontOfRat = toTheLeft = straightAhead = toTheRight = CELL; + break; + } + + if (rat->isCamera && inFrontOfRat == FINISH) + rat->state = FINISHING; + else if (rat->isCamera && inFrontOfRat >= INVERTER_TETRAHEDRON + && inFrontOfRat <= INVERTER_ICOSAHEDRON) + rat->state = INVERTING; + else if (toTheLeft != WALL && toTheLeft != WALL_GL_REDBOOK) + rat->state = TURNING_LEFT; + else if (straightAhead != WALL && straightAhead != WALL_GL_REDBOOK) + rat->state = WALKING; + else if (toTheRight != WALL && toTheRight != WALL_GL_REDBOOK) + rat->state = TURNING_RIGHT; + else { + rat->state = TURNING_AROUND; + + switch ((int)rat->rotation) { + case NORTH: + rat->desiredRotation = SOUTH; + break; + case EAST: + rat->desiredRotation = WEST; + break; + case SOUTH: + rat->desiredRotation = NORTH; + break; + case WEST: + rat->desiredRotation = EAST; + break; + default: + break; + } + } +} + +static void +updateInverterRotation(maze_configuration* maze) +{ + maze->inverterRotation += 45 * maze->camera.remainingDistanceToTravel; +} + +static void drawInverter(maze_configuration* maze, Tuple coordinates) +{ + unsigned char type = maze->mazeGrid[coordinates.row][coordinates.column]; + + if (maze->wallHeight < 1 || + type < INVERTER_TETRAHEDRON || type > INVERTER_ICOSAHEDRON + || (coordinates.row == 0 && coordinates.column == 0)) + return; + + glEnable(GL_LIGHTING); + glEnable(GL_CULL_FACE); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + glTranslatef(coordinates.column / 2.0, 0.25, coordinates.row / 2.0); + glRotatef(0.618033989 * maze->inverterRotation, 0, 1, 0); + glRotatef(maze->inverterRotation, 1, 0, 0); + + if (type >= countof(maze->dlists)) abort(); + glCallList(maze->dlists[type]); + + glPopMatrix(); + + glDisable(GL_LIGHTING); + glDisable(GL_CULL_FACE); +} + +static void +drawWalls(ModeInfo * mi) +{ + unsigned i, j; + Tuple startCoordinates, endCoordinates; + + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + + for (i = 0; i < maze->numRows; i++) { + for (j = 0; j < maze->numColumns; j++) { + if (maze->mazeGrid[i][j] == WALL + || maze->mazeGrid[i][j] == WALL_GL_REDBOOK) { + if (maze->mazeGrid[i][j] == WALL) { + glBindTexture(GL_TEXTURE_2D, maze->wallTexture); + if (dropAcid || dropAcidWalls) + glColor3f(maze->acidColor.red, maze->acidColor.green, + maze->acidColor.blue); +# ifdef USE_FLOATING_IMAGES + } else { + glBindTexture(GL_TEXTURE_2D, maze->glTextbookTexture); + glColor3f(1, 1, 1); +# endif + } + + if (isOdd(i) && isEven(j)) { + startCoordinates.row = i / 2; + startCoordinates.column = j / 2; + endCoordinates.row = i / 2 + 1; + endCoordinates.column = j / 2; + drawWall(startCoordinates, endCoordinates, maze); + } else if (isEven(i) && isOdd(j)) { + startCoordinates.row = i / 2; + startCoordinates.column = j / 2; + endCoordinates.row = i / 2; + endCoordinates.column = j / 2 + 1; + drawWall(startCoordinates, endCoordinates, maze); + } + } + } + } + + glBindTexture(GL_TEXTURE_2D, 0); + glColor3f(1, 1, 1); +} + +static void +drawWall(Tuple startCoordinates, Tuple endCoordinates, maze_configuration* maze) +{ + GLfloat wallHeight = maze->wallHeight; + + glBegin(GL_QUADS); + if (startCoordinates.row == endCoordinates.row) { + glTexCoord2f(0, 0); + glVertex3f(startCoordinates.column, 0, startCoordinates.row); + glTexCoord2f(1, 0); + glVertex3f(endCoordinates.column, 0, startCoordinates.row); + glTexCoord2f(1, 1); + glVertex3f(endCoordinates.column, wallHeight, endCoordinates.row); + glTexCoord2f(0, 1); + glVertex3f(startCoordinates.column, wallHeight, endCoordinates.row); + } else { + glTexCoord2f(0, 0); + glVertex3f(startCoordinates.column, 0, startCoordinates.row); + glTexCoord2f(1, 0); + glVertex3f(startCoordinates.column, 0, endCoordinates.row); + glTexCoord2f(1, 1); + glVertex3f(endCoordinates.column, wallHeight, endCoordinates.row); + glTexCoord2f(0, 1); + glVertex3f(endCoordinates.column, wallHeight, startCoordinates.row); + } + glEnd(); +} + +static void +drawCeiling(ModeInfo * mi) +{ + Tuple farRightCorner; + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + farRightCorner.row = maze->numRows / 2; + farRightCorner.column = maze->numColumns / 2; + glBindTexture(GL_TEXTURE_2D, maze->ceilingTexture); + + glBegin(GL_QUADS); + if (dropAcid || dropAcidCeiling) + glColor3f(maze->acidColor.red, maze->acidColor.green, + maze->acidColor.blue); + glTexCoord2f(0, 0); + glVertex3f(0, 1, 0); + glTexCoord2f(farRightCorner.column, 0); + glVertex3f(farRightCorner.column, 1, 0); + glTexCoord2f(farRightCorner.column, farRightCorner.row); + glVertex3f(farRightCorner.column, 1, farRightCorner.row); + glTexCoord2f(0, farRightCorner.row); + glVertex3f(0, 1, farRightCorner.row); + glColor3f(1, 1, 1); + glEnd(); + + glBindTexture(GL_TEXTURE_2D, 0); +} + +static void +drawFloor(ModeInfo * mi) +{ + Tuple farRightCorner; + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + farRightCorner.row = maze->numRows / 2; + farRightCorner.column = maze->numColumns / 2; + glBindTexture(GL_TEXTURE_2D, maze->floorTexture); + + glBegin(GL_QUADS); + if (dropAcid || dropAcidFloor) + glColor3f(maze->acidColor.red, maze->acidColor.green, + maze->acidColor.blue); + glTexCoord2f(0, 0); + glVertex3f(0, 0, 0); + glTexCoord2f(farRightCorner.column, 0); + glVertex3f(farRightCorner.column, 0, 0); + glTexCoord2f(farRightCorner.column, farRightCorner.row); + glVertex3f(farRightCorner.column, 0, farRightCorner.row); + glTexCoord2f(0, farRightCorner.row); + glVertex3f(0, 0, farRightCorner.row); + glColor3f(1, 1, 1); + glEnd(); + + glBindTexture(GL_TEXTURE_2D, 0); +} + +static void +drawPane(ModeInfo *mi, GLuint texture, Tuple position) +{ + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + if (position.row == 0 && position.column == 0) return; + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glBindTexture(GL_TEXTURE_2D, texture); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.column / 2.0, 0, position.row / 2.0); + glRotatef(-1 * maze->camera.rotation - 90, 0, 1, 0); + + if (MI_WIDTH(mi) < MI_HEIGHT(mi)) + { + /* Keep the Start button readable in phone portrait mode. */ + glScalef (0.5, 0.5, 0.5); + glTranslatef (0, 0.5, 0); + } + + glBegin(GL_QUADS); + glColor4f(1, 1, 1, 0.9); + glTexCoord2f(0, 0); + glVertex3f(0, 0, 0.5); + glTexCoord2f(1, 0); + glVertex3f(0, 0, -0.5); + glTexCoord2f(1, 1); + glVertex3f(0, maze->wallHeight, -0.5); + glTexCoord2f(0, 1); + glVertex3f(0, maze->wallHeight, 0.5); + glColor3f(1, 1, 1); + glEnd(); + + glPopMatrix(); + glBindTexture(GL_TEXTURE_2D, 0); + glDisable(GL_BLEND); +} + +static void +drawRat(Tuplef position, maze_configuration* maze) +{ + if (position.x == 0 && position.z == 0) return; + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glBindTexture(GL_TEXTURE_2D, maze->ratTexture); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.x, 0, position.z); + glRotatef(-1 * maze->camera.rotation - 90, 0, 1, 0); + + glScalef (0.25, 0.25, 0.25); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); + glVertex3f(0, 0, 0.5); + glTexCoord2f(1, 0); + glVertex3f(0, 0, -0.5); + glTexCoord2f(1, 1); + glVertex3f(0, maze->wallHeight, -0.5); + glTexCoord2f(0, 1); + glVertex3f(0, maze->wallHeight, 0.5); + glEnd(); + + glPopMatrix(); + glBindTexture(GL_TEXTURE_2D, 0); + glDisable(GL_BLEND); +} + + +static void drawOverlay(ModeInfo *mi) +{ + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + unsigned i, j; + GLfloat h = (GLfloat) MI_HEIGHT(mi) / MI_WIDTH(mi); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + glOrtho(-1/h, 1/h, 1, -1, -1, 1); + + glEnable(GL_BLEND); + glColor4f(0, 0, 1, 0.75); + glScalef(0.25, 0.25, 0.25); + + glCallList(maze->dlists[ARROW]); + + glRotatef(maze->camera.inversion, 0, 1, 0); + glRotatef(maze->camera.rotation, 0, 0, -1); + glTranslatef(-maze->camera.position.x, -maze->camera.position.z, 0); + glColor4f(1, 1, 1, 0.75); + + glBegin(GL_LINES); + for (i = 0; i < maze->numRows; i++) { + for (j = 0; j < maze->numColumns; j++) { + if (maze->mazeGrid[i][j] == WALL + || maze->mazeGrid[i][j] == WALL_GL_REDBOOK) { + if (isOdd(i) && isEven(j)) { + glVertex2f(j / 2, i / 2); + glVertex2f(j / 2, i / 2 + 1); + } else if (isEven(i) && isOdd(j)) { + glVertex2f(j / 2, i / 2); + glVertex2f(j / 2 + 1, i / 2); + } + } + } + } + glEnd(); + + glColor4f(1, 0, 0, 0.75); + + glPushMatrix(); + glTranslatef(maze->startPosition.column / 2.0, + maze->startPosition.row / 2.0, 0); + glCallList(maze->dlists[SQUARE]); + glPopMatrix(); + + glColor4f(1, 1, 0, 0.75); + + glPushMatrix(); + glTranslatef(maze->finishPosition.column / 2.0, + maze->finishPosition.row / 2.0, 0); + glCallList(maze->dlists[STAR]); + glPopMatrix(); + + glColor4f(1, 0.607843137, 0, 0.75); + + for (i = 0; i < numRats; i++) { + if (maze->rats[i].position.x == 0 && maze->rats[i].position.z == 0) + continue; + glPushMatrix(); + glTranslatef(maze->rats[i].position.x, maze->rats[i].position.z, 0); + glRotatef(maze->rats[i].rotation, 0, 0, 1); + glCallList(maze->dlists[ARROW]); + glPopMatrix(); + } + + glColor4f(1, 1, 1, 1); + + for (i = 0; i < numInverters; i++) { + j = maze->mazeGrid[maze->inverterPosition[i].row] + [maze->inverterPosition[i].column]; + if (j >= INVERTER_TETRAHEDRON && j <= INVERTER_ICOSAHEDRON) { + glPushMatrix(); + glTranslatef(maze->inverterPosition[i].column / 2.0, + maze->inverterPosition[i].row / 2.0, 0); + glRotatef(1.5 * maze->inverterRotation, 0, 0, 1); + glCallList(maze->dlists[TRIANGLE]); + glPopMatrix(); + } + } + + glDisable(GL_BLEND); + + glPopMatrix(); + glMatrixMode(GL_PROJECTION); + glPopMatrix(); +} + +ENTRYPOINT void +free_maze (ModeInfo * mi) +{ + maze_configuration *maze = &mazes[MI_SCREEN(mi)]; + + glDeleteTextures(1, &maze->wallTexture); + glDeleteTextures(1, &maze->floorTexture); + glDeleteTextures(1, &maze->ceilingTexture); + glDeleteTextures(1, &maze->startTexture); + glDeleteTextures(1, &maze->ratTexture); + glDeleteTextures(1, &maze->finishTexture); +# ifdef USE_FLOATING_IMAGES + glDeleteTextures(1, &maze->glTextbookTexture); + glDeleteTextures(1, &maze->gl3dTextTexture); +# endif +# ifdef USE_FRACTAL_IMAGES + glDeleteTextures(1, &maze->fractal1Texture); + glDeleteTextures(1, &maze->fractal2Texture); + glDeleteTextures(1, &maze->fractal3Texture); + glDeleteTextures(1, &maze->fractal4Texture); +# endif + + glDeleteLists(maze->dlists[ARROW], 4); + glDeleteLists(maze->dlists[INVERTER_TETRAHEDRON], 4); + + free(maze->mazeGrid); + free(maze->wallList); + free(maze->inverterPosition); + free(maze->gl3dTextPosition); + free(maze->rats); + + memset(maze, 0, sizeof(*maze)); +} + + +XSCREENSAVER_MODULE_2 ("Maze3D", maze3d, maze) + +#endif diff --git a/hacks/glx/maze3d.man b/hacks/glx/maze3d.man new file mode 100755 index 0000000..c60fd65 --- /dev/null +++ b/hacks/glx/maze3d.man @@ -0,0 +1,116 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +maze3d - A 3D maze. +.SH SYNOPSIS +.B maze3d +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-speed \fIfloat\fP] +[\-delay \fInumber\fP] +[\-fps] +[\-rows \fInumber\fP] +[\-columns \fInumber\fP] +[\-overlay] +[\-wall-texture \fItexture\fP] +[\-floor-texture \fItexture\fP] +[\-ceiling-texture \fItexture\fP] +[\-drop-acid] +[\-drop-acid-walls] +[\-drop-acid-floor] +[\-drop-acid-ceiling] +[\-inverters \fInumber\fP] +[\-rats \fInumber\fP] +.SH DESCRIPTION +A recreation of the 3D Maze screensaver from Windows 95. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-speed \fInumber\fP +Speed of the dungeon crawl. 2 is twice as fast, 0.5 is half as fast. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-fps | \-no-fps +Display the current frame rate and CPU load. +.TP 8 +.B \-rows \fInumber\fP +The number of rows in the maze. Default: 12. +.TP 8 +.B \-columns \fInumber\fP +The number of columns in the maze. Default: 12. +.TP 8 +.B \-overlay +Overlays a minimap of the maze on the screen. +.TP 8 +.B \-wall-texture \fItexture\fP +Sets the wall texture. \fItexture\fP can be a path to an image file, or it can be one of the built-in textures (see TEXTURES below). +.TP 8 +.B \-floor-texture \fItexture\fP +Sets the floor texture. \fItexture\fP can be a path to an image file, or it can be one of the built-in textures (see TEXTURES below). +.TP 8 +.B \-ceiling-texture \fItexture\fP +Sets the ceiling texture. \fItexture\fP can be a path to an image file, or it can be one of the built-in textures (see TEXTURES below). +.TP 8 +.B \-drop-acid-walls +Continuously shifts the hue of the wall texture. (This looks like an LSD trip, hence the name.) +.TP 8 +.B \-drop-acid-floor +Continuously shifts the hue of the floor texture. +.TP 8 +.B \-drop-acid-ceiling +Continuously shifts the hue of the ceiling texture. +.TP 8 +.B \-drop-acid +Turns on all three. +.TP 8 +.B \-inverters \fInumber\fP +Sets the number of inverters (the spinny grey things that flip the camera upside-down) in the maze. Default: 10. +.TP 8 +.B \-rats \fInumber\fP +Sets the number of rats, or rather "Bobs", in the maze. Default: 1. +.TP 8 +.SH TEXTURES +The wall, ceiling, and floor textures can be set to one of the following: +.TP 8 +.B brick-wall +A brick wall. This is the default wall texture. +.TP 8 +.B wood-floor +A wooden floor. This is the default floor texture. +.TP 8 +.B ceiling-tiles +Ceiling tiles. This is the default ceiling texture. +.TP 8 +You can also specify a path to an image file, instead of using one of the built-in textures. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2018 by sudoer@riseup.net. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. diff --git a/hacks/glx/menger.c b/hacks/glx/menger.c new file mode 100644 index 0000000..249d224 --- /dev/null +++ b/hacks/glx/menger.c @@ -0,0 +1,562 @@ +/* menger, Copyright (c) 2001-2014 Jamie Zawinski + * Copyright (c) 2002 Aurelien Jacobs + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Generates a 3D Menger Sponge gasket: + * + * ___+._______ + * __-"" -- __"""----._____ + * __.--"" -- ___--+---_____. __ .+'| + * _.-'"" __ +:"__ | ._..+"" __ .+' F + * J"--.____ __ """""+" .+' .J F + * J """""---.___ -- .+'" F' F + * L """""--...+' .J F + * L F"9 --. | . F' J + * L -_J L_J F"9 | ;'J .+J .J J + * | L_J | F.' .'| J F' J + * | |"""--.__ | ' |"" J J + * J ._ J ;;; | "L | . |-___J | + * J L J J ;-' | L | .'J |_ .' . | + * J "" J .---_L F"9 | F.' | .' FJ | + * L J .-' __ | L_J | ' :' ' .+ + * L '--.___ | | .J .' + * | F"9 """' | . F' .' + * | -_J F"9 | .'J .' + * +__ -_J F"9 | F.' .' + * """--___ L_J | ' .' + * """---___ | .' + * ""---._|.' + * + * The straightforward way to generate this object creates way more polygons + * than are needed, since there end up being many buried, interior faces. + * So during the recursive building of the object we store which face of + * each unitary cube we need to draw. Doing this reduces the polygon count + * by 40% - 60%. + * + * Another optimization we could do to reduce the polygon count would be to + * merge adjascent coplanar squares together into rectangles. This would + * result in the outer faces being composed of 1xN strips. It's tricky to + * to find these adjascent faces in non-exponential time, though. + * + * We could actually simulate large depths with a texture map -- if the + * depth is such that the smallest holes are only a few pixels across, + * just draw them as spots on the surface! It would look the same. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + + +# define free_sponge 0 +# define release_sponge 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "150" +#define DEF_MAX_DEPTH "3" + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + GLuint sponge_list0; /* we store X, Y, and Z-facing surfaces */ + GLuint sponge_list1; /* in their own lists, to make it easy */ + GLuint sponge_list2; /* to color them differently. */ + + unsigned long squares_fp; + + int current_depth; + + int ncolors; + XColor *colors; + int ccolor0; + int ccolor1; + int ccolor2; + + int draw_tick; + +} sponge_configuration; + +static sponge_configuration *sps = NULL; + +static Bool do_spin; +static Bool do_wander; +static int speed; +static int max_depth; + +static XrmOptionDescRec opts[] = { + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-depth", ".maxDepth", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Int}, + {&max_depth, "maxDepth", "MaxDepth", DEF_MAX_DEPTH, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt sponge_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_sponge (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +#define X0 0x01 +#define X1 0x02 +#define Y0 0x04 +#define Y1 0x08 +#define Z0 0x10 +#define Z1 0x20 + +static int +cube (float x0, float x1, float y0, float y1, float z0, float z1, + int faces, int wireframe) +{ + int n = 0; + + if (faces & X0) + { + glBegin (wireframe ? GL_LINE_LOOP : GL_POLYGON); + glNormal3f (-1.0, 0.0, 0.0); + glVertex3f (x0, y1, z0); + glVertex3f (x0, y0, z0); + glVertex3f (x0, y0, z1); + glVertex3f (x0, y1, z1); + glEnd (); + n++; + } + if (faces & X1) + { + glBegin (wireframe ? GL_LINE_LOOP : GL_POLYGON); + glNormal3f (1.0, 0.0, 0.0); + glVertex3f (x1, y1, z1); + glVertex3f (x1, y0, z1); + glVertex3f (x1, y0, z0); + glVertex3f (x1, y1, z0); + glEnd (); + n++; + } + if (faces & Y0) + { + glBegin (wireframe ? GL_LINE_LOOP : GL_POLYGON); + glNormal3f (0.0, -1.0, 0.0); + glVertex3f (x0, y0, z0); + glVertex3f (x0, y0, z1); + glVertex3f (x1, y0, z1); + glVertex3f (x1, y0, z0); + glEnd (); + n++; + } + if (faces & Y1) + { + glBegin (wireframe ? GL_LINE_LOOP : GL_POLYGON); + glNormal3f (0.0, 1.0, 0.0); + glVertex3f (x0, y1, z0); + glVertex3f (x0, y1, z1); + glVertex3f (x1, y1, z1); + glVertex3f (x1, y1, z0); + glEnd (); + n++; + } + if (faces & Z0) + { + glBegin (wireframe ? GL_LINE_LOOP : GL_POLYGON); + glNormal3f (0.0, 0.0, -1.0); + glVertex3f (x1, y1, z0); + glVertex3f (x1, y0, z0); + glVertex3f (x0, y0, z0); + glVertex3f (x0, y1, z0); + glEnd (); + n++; + } + if (faces & Z1) + { + glBegin (wireframe ? GL_LINE_LOOP : GL_POLYGON); + glNormal3f (0.0, 0.0, 1.0); + glVertex3f (x0, y1, z1); + glVertex3f (x0, y0, z1); + glVertex3f (x1, y0, z1); + glVertex3f (x1, y1, z1); + glEnd (); + n++; + } + + return n; +} + +static int +menger_recurs_1 (int level, float x0, float x1, float y0, float y1, + float z0, float z1, int faces, Bool wireframe, + int orig, int forig) +{ + float xi, yi, zi; + int f, x, y, z; + int n = 0; + + if (orig) + { + if (wireframe) + n += cube (x0, x1, y0, y1, z0, z1, + faces & (X0 | X1 | Y0 | Y1), wireframe); + } + + if (level == 0) + { + if (!wireframe) + n += cube (x0, x1, y0, y1, z0, z1, faces, wireframe); + } + else + { + xi = (x1 - x0) / 3; + yi = (y1 - y0) / 3; + zi = (z1 - z0) / 3; + + for (x = 0; x < 3; x++) + for (y = 0; y < 3; y++) + for (z = 0; z < 3; z++) + { + if ((x != 1 && y != 1) + || (y != 1 && z != 1) + || (x != 1 && z != 1)) + { + f = faces; + + if (x == 1 || (x == 2 && (y != 1 && z != 1))) + f &= ~X0; + if (x == 1 || (x == 0 && (y != 1 && z != 1))) + f &= ~X1; + if (forig & X0 && x == 2 && (y == 1 || z == 1)) + f |= X0; + if (forig & X1 && x == 0 && (y == 1 || z == 1)) + f |= X1; + + if (y == 1 || (y == 2 && (x != 1 && z != 1))) + f &= ~Y0; + if (y == 1 || (y == 0 && (x != 1 && z != 1))) + f &= ~Y1; + if (forig & Y0 && y == 2 && (x == 1 || z == 1)) + f |= Y0; + if (forig & Y1 && y == 0 && (x == 1 || z == 1)) + f |= Y1; + + if (z == 1 || (z == 2 && (x != 1 && y != 1))) + f &= ~Z0; + if (z == 1 || (z == 0 && (x != 1 && y != 1))) + f &= ~Z1; + if (forig & Z0 && z == 2 && (x == 1 || y == 1)) + f |= Z0; + if (forig & Z1 && z == 0 && (x == 1 || y == 1)) + f |= Z1; + + n += menger_recurs_1 (level-1, + x0+x*xi, x0+(x+1)*xi, + y0+y*yi, y0+(y+1)*yi, + z0+z*zi, z0+(z+1)*zi, f, wireframe, 0, + forig); + } + else if (wireframe && (x != 1 || y != 1 || z != 1)) + n += cube (x0+x*xi, x0+(x+1)*xi, + y0+y*yi, y0+(y+1)*yi, + z0+z*zi, z0+(z+1)*zi, + forig & (X0 | X1 | Y0 | Y1), wireframe); + } + } + + return n; +} + +static int +menger_recurs (int level, float x0, float x1, float y0, float y1, + float z0, float z1, int faces, Bool wireframe, + int orig) +{ + return menger_recurs_1 (level, x0, x1, y0, y1, z0, z1, faces, + wireframe, orig, faces); +} + + +static void +build_sponge (sponge_configuration *sp, Bool wireframe, int level) +{ + glDeleteLists (sp->sponge_list0, 1); + glNewList(sp->sponge_list0, GL_COMPILE); + sp->squares_fp = menger_recurs (level, -1.5, 1.5, -1.5, 1.5, -1.5, 1.5, + X0 | X1, wireframe,1); + glEndList(); + + glDeleteLists (sp->sponge_list1, 1); + glNewList(sp->sponge_list1, GL_COMPILE); + sp->squares_fp += menger_recurs (level, -1.5, 1.5, -1.5, 1.5, -1.5, 1.5, + Y0 | Y1, wireframe,1); + glEndList(); + + glDeleteLists (sp->sponge_list2, 1); + glNewList(sp->sponge_list2, GL_COMPILE); + sp->squares_fp += menger_recurs (level, -1.5, 1.5, -1.5, 1.5, -1.5, 1.5, + Z0 | Z1, wireframe,1); + glEndList(); +} + + +ENTRYPOINT Bool +sponge_handle_event (ModeInfo *mi, XEvent *event) +{ + sponge_configuration *sp = &sps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, sp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &sp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == '+' || c == '=' || + keysym == XK_Up || keysym == XK_Right || keysym == XK_Next) + { + sp->draw_tick = speed; + sp->current_depth += (sp->current_depth > 0 ? 1 : -1); + sp->current_depth--; + return True; + } + else if (c == '-' || c == '_' || + keysym == XK_Down || keysym == XK_Left || keysym == XK_Prior) + { + sp->draw_tick = speed; + sp->current_depth -= (sp->current_depth > 0 ? 1 : -1); + sp->current_depth--; + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + goto DEF; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + DEF: + sp->draw_tick = speed; + return True; + } + + return False; +} + + + +ENTRYPOINT void +init_sponge (ModeInfo *mi) +{ + sponge_configuration *sp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, sps); + + sp = &sps[MI_SCREEN(mi)]; + + if ((sp->glx_context = init_GL(mi)) != NULL) { + reshape_sponge (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + if (!wire) + { + static const GLfloat pos0[4] = {-1.0, -1.0, 1.0, 0.1}; + static const GLfloat pos1[4] = { 1.0, -0.2, 0.2, 0.1}; + static const GLfloat dif0[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat dif1[4] = {1.0, 1.0, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos0); + glLightfv(GL_LIGHT1, GL_POSITION, pos1); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif0); + glLightfv(GL_LIGHT1, GL_DIFFUSE, dif1); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + + glShadeModel(GL_SMOOTH); + } + + { + double spin_speed = 1.0; + double wander_speed = 0.03; + sp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + 1.0, + do_wander ? wander_speed : 0, + True); + sp->trackball = gltrackball_init (True); + } + + sp->ncolors = 128; + sp->colors = (XColor *) calloc(sp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + sp->colors, &sp->ncolors, + False, 0, False); + sp->ccolor0 = 0; + sp->ccolor1 = sp->ncolors / 3; + sp->ccolor2 = sp->ccolor1 * 2; + + sp->sponge_list0 = glGenLists (1); + sp->sponge_list1 = glGenLists (1); + sp->sponge_list2 = glGenLists (1); + + sp->draw_tick = 9999999; +} + + +ENTRYPOINT void +draw_sponge (ModeInfo *mi) +{ + sponge_configuration *sp = &sps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + GLfloat color0[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat color1[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat color2[4] = {0.0, 0.0, 0.0, 1.0}; + + if (!sp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z; + get_position (sp->rot, &x, &y, &z, !sp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 6, + (z - 0.5) * 15); + + gltrackball_rotate (sp->trackball); + + get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + color0[0] = sp->colors[sp->ccolor0].red / 65536.0; + color0[1] = sp->colors[sp->ccolor0].green / 65536.0; + color0[2] = sp->colors[sp->ccolor0].blue / 65536.0; + + color1[0] = sp->colors[sp->ccolor1].red / 65536.0; + color1[1] = sp->colors[sp->ccolor1].green / 65536.0; + color1[2] = sp->colors[sp->ccolor1].blue / 65536.0; + + color2[0] = sp->colors[sp->ccolor2].red / 65536.0; + color2[1] = sp->colors[sp->ccolor2].green / 65536.0; + color2[2] = sp->colors[sp->ccolor2].blue / 65536.0; + + + sp->ccolor0++; + sp->ccolor1++; + sp->ccolor2++; + if (sp->ccolor0 >= sp->ncolors) sp->ccolor0 = 0; + if (sp->ccolor1 >= sp->ncolors) sp->ccolor1 = 0; + if (sp->ccolor2 >= sp->ncolors) sp->ccolor2 = 0; + + if (sp->draw_tick++ >= speed) + { + sp->draw_tick = 0; + if (sp->current_depth >= max_depth) + sp->current_depth = -max_depth; + sp->current_depth++; + build_sponge (sp, + MI_IS_WIREFRAME(mi), + (sp->current_depth < 0 + ? -sp->current_depth : sp->current_depth)); + + mi->polygon_count = sp->squares_fp; /* for FPS display */ + mi->recursion_depth = (sp->current_depth < 0 + ? -sp->current_depth : sp->current_depth); + } + + glScalef (2.0, 2.0, 2.0); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color0); + glCallList (sp->sponge_list0); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color1); + glCallList (sp->sponge_list1); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color2); + glCallList (sp->sponge_list2); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("Menger", menger, sponge) + +#endif /* USE_GL */ diff --git a/hacks/glx/menger.man b/hacks/glx/menger.man new file mode 100644 index 0000000..c2c2141 --- /dev/null +++ b/hacks/glx/menger.man @@ -0,0 +1,78 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +menger - 3D menger gasket fractal. +.SH SYNOPSIS +.B menger +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-depth \fInumber\fP] +[\-no-wander] +[\-no-spin] +[\-spin \fI[XYZ]\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +This draws the three-dimensional variant of the recursive Menger Gasket, a +cube-based fractal object analagous to the Sierpinski Tetrahedron. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Number of frames before changing shape. Default: 150. +.TP 8 +.B \-depth \fInumber\fP +Max depth to descend. Default: 3. You probably don't have enough +memory for 6. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin [XYZ] +Around which axes should the object spin? +.TP 8 +.B \-no-spin +None. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/mirrorblob.c b/hacks/glx/mirrorblob.c new file mode 100644 index 0000000..eb746d1 --- /dev/null +++ b/hacks/glx/mirrorblob.c @@ -0,0 +1,1841 @@ +/* mirrorblob Copyright (c) 2003 Jon Dowdall */ +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * 23-Sep-2003: jon.dowdall@bigpond.com Created module "blob" + * 19-Oct-2003: jon.dowdall@bigpond.com Added texturing + * 21-Oct-2003: Renamed to mirrorblob + * 10-Feb-2004: jon.dowdall@bigpond.com Added motion blur + * 28-Jan-2006: jon.dowdall@bigpond.com Big clean up and bug fixes + * 13-Apr-2009: jon.dowdall@gmail.com Fixed Mac version + * + * The mirrorblob screensaver draws a pulsing blob on the screen. Options + * include adding a background (via screen_to_texture), texturing the blob, + * making the blob semi-transparent and varying the resolution of the blob + * tessellation. + * + * The blob was inspired by a lavalamp is in no way a simulation. The code is + * just an attempt to generate some eye-candy. + * + * Much of xmirrorblob code framework is taken from the pulsar module by David + * Konerding and the glslideshow by Mike Oliphant and Jamie Zawinski. + * + */ + +#include + +#ifdef STANDALONE +#define DEFAULTS "*delay: " DEF_DELAY "\n" \ + "*showFPS: " DEF_FPS "\n" \ + "*useSHM: True \n" \ + "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \ + "*grabDesktopImages: True \n" \ + "*chooseRandomImages: True \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_mirrorblob 0 +# include "xlockmore.h" +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL /* whole file */ + + +#define DEF_DELAY "10000" +#define DEF_FPS "False" +#define DEF_WIRE "False" +#define DEF_BLEND "1.0" +#define DEF_FOG "False" +#define DEF_ANTIALIAS "False" +#define DEF_WALLS "False" +#define DEF_COLOUR "False" +#define DEF_ASYNC "True" +#define DEF_TEXTURE "True" +#define DEF_OFFSET_TEXTURE "False" +#define DEF_PAINT_BACKGROUND "True" +#define DEF_RESOLUTION "30" +#define DEF_BUMPS "10" +#define DEF_MOTION_BLUR "0.0" +#define DEF_INCREMENTAL "0" +#define DEF_HOLD_TIME "30.0" +#define DEF_FADE_TIME "5.0" +#define DEF_ZOOM "1.0" + +#ifdef HAVE_XMU +# ifndef VMS +# include +#else /* VMS */ +# include +# endif /* VMS */ +#endif + +#include "gltrackball.h" +#include "grab-ximage.h" + +#undef countof +#define countof(x) (sizeof((x)) / sizeof((*x))) + +#define PI 3.1415926535897 + +/* Options from command line */ +static GLfloat blend; +static Bool wireframe; +static Bool do_fog; +static Bool do_antialias; +static Bool do_walls; +static Bool do_texture; +static Bool do_paint_background; +static Bool do_colour; +static Bool offset_texture; +static int resolution; +static int bumps; +static float motion_blur; +static float fade_time; +static float hold_time; +static float zoom; + +/* Internal parameters based on supplied options */ +static Bool culling; +static Bool load_textures; + +static XrmOptionDescRec opts[] = { + {"-wire", ".blob.wire", XrmoptionNoArg, "true" }, + {"+wire", ".blob.wire", XrmoptionNoArg, "false" }, + {"-blend", ".blob.blend", XrmoptionSepArg, 0 }, + {"-fog", ".blob.fog", XrmoptionNoArg, "true" }, + {"+fog", ".blob.fog", XrmoptionNoArg, "false" }, + {"-antialias", ".blob.antialias", XrmoptionNoArg, "true" }, + {"+antialias", ".blob.antialias", XrmoptionNoArg, "false" }, + {"-walls", ".blob.walls", XrmoptionNoArg, "true" }, + {"+walls", ".blob.walls", XrmoptionNoArg, "false" }, + {"-texture", ".blob.texture", XrmoptionNoArg, "true" }, + {"+texture", ".blob.texture", XrmoptionNoArg, "false" }, + {"-colour", ".blob.colour", XrmoptionNoArg, "true" }, + {"+colour", ".blob.colour", XrmoptionNoArg, "false" }, + {"-offset-texture", ".blob.offsetTexture", XrmoptionNoArg, "true" }, + {"+offset-texture", ".blob.offsetTexture", XrmoptionNoArg, "false" }, + {"-paint-background", ".blob.paintBackground", XrmoptionNoArg, "true" }, + {"+paint-background", ".blob.paintBackground", XrmoptionNoArg, "false" }, + {"-resolution", ".blob.resolution", XrmoptionSepArg, NULL }, + {"-bumps", ".blob.bumps", XrmoptionSepArg, NULL }, + {"-motion-blur", ".blob.motionBlur", XrmoptionSepArg, 0 }, + {"-fade-time", ".blob.fadeTime", XrmoptionSepArg, 0 }, + {"-hold-time", ".blob.holdTime", XrmoptionSepArg, 0 }, + {"-zoom", ".blob.zoom", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&wireframe, "wire", "Wire", DEF_WIRE, t_Bool}, + {&blend, "blend", "Blend", DEF_BLEND, t_Float}, + {&do_fog, "fog", "Fog", DEF_FOG, t_Bool}, + {&do_antialias, "antialias", "Antialias", DEF_ANTIALIAS, t_Bool}, + {&do_walls, "walls", "Walls", DEF_WALLS, t_Bool}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_colour, "colour", "Colour", DEF_COLOUR, t_Bool}, + {&offset_texture, "offsetTexture","OffsetTexture", DEF_OFFSET_TEXTURE, t_Bool}, + {&do_paint_background,"paintBackground","PaintBackground", DEF_PAINT_BACKGROUND, t_Bool}, + {&resolution, "resolution", "Resolution", DEF_RESOLUTION, t_Int}, + {&bumps, "bumps", "Bump", DEF_BUMPS, t_Int}, + {&motion_blur, "motionBlur", "MotionBlur", DEF_MOTION_BLUR, t_Float}, + {&fade_time, "fadeTime", "FadeTime", DEF_FADE_TIME, t_Float}, + {&hold_time, "holdTime", "HoldTime", DEF_HOLD_TIME, t_Float}, + {&zoom, "zoom", "Zoom", DEF_ZOOM, t_Float}, +}; + + +static OptionStruct desc[] = +{ + {"-/+ wire", "whether to do use wireframe instead of filled (faster)"}, + {"-/+ blend", "whether to do enable blending (slower)"}, + {"-/+ fog", "whether to do enable fog (slower)"}, + {"-/+ antialias", "whether to do enable antialiased lines (slower)"}, + {"-/+ walls", "whether to add walls to the blob space (slower)"}, + {"-/+ texture", "whether to add a texture to the blob (slower)"}, + {"-/+ colour", "whether to colour the blob"}, + {"-/+ offset_texture", "whether to offset texture co-ordinates"}, + {"-/+ paint_background", "whether to display a background texture (slower)"}, + {"-resolution", "Resolution of blob tesselation"}, + {"-bumps", "Number of bumps used to disturb blob"}, + {"-motion_blur", "Fade blob images (higher number = faster fade)"}, + {"-fade_time", "Number of frames to transistion to next image"}, + {"-hold_time", "Number of frames before next image"}, +}; + +ENTRYPOINT ModeSpecOpt mirrorblob_opts = {countof(opts), opts, countof(vars), vars, desc}; + +#ifdef USE_MODULES +ModStruct mirrorblob_description = +{"mirrorblob", "init_mirrorblob", "draw_mirrorblob", NULL, + "draw_mirrorblob", "init_mirrorblob", "free_mirrorblob", &mirrorblob_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "OpenGL mirrorblob", 0, NULL}; +#endif + +/***************************************************************************** + * Types used in blob code + *****************************************************************************/ + +typedef struct +{ + GLfloat x, y; +} Vector2D; + +typedef struct +{ + GLfloat x, y, z; +} Vector3D; + +typedef struct +{ + GLfloat w; + GLfloat x; + GLfloat y; + GLfloat z; +} Quaternion; + +typedef struct +{ + GLubyte red, green, blue, alpha; +} Colour; + +typedef struct +{ + Vector3D initial_position; + Vector3D position; + Vector3D normal; +} Node_Data; + +typedef struct +{ + int node1, node2, node3; + Vector3D normal; + double length1, length2, length3; +} Face_Data; + +/* Structure to hold data about bumps used to distortion sphere */ +typedef struct +{ + double cx, cy, cpower, csize; + double ax, ay, power, size; + double mx, my, mpower, msize; + double vx, vy, vpower, vsize; + Vector3D pos; +} Bump_Data; + +/* Vertices of a tetrahedron */ +#define sqrt_3 0.5773502692 +/*#undef sqrt_3 +#define sqrt_3 1.0*/ +#define PPP { sqrt_3, sqrt_3, sqrt_3 } /* +X, +Y, +Z */ +#define MMP { -sqrt_3, -sqrt_3, sqrt_3 } /* -X, -Y, +Z */ +#define MPM { -sqrt_3, sqrt_3, -sqrt_3 } /* -X, +Y, -Z */ +#define PMM { sqrt_3, -sqrt_3, -sqrt_3 } /* +X, -Y, -Z */ + +/* Structure describing a tetrahedron */ +static Vector3D tetrahedron[4][3] = { + {PPP, MMP, MPM}, + {PMM, MPM, MMP}, + {PPP, MPM, PMM}, + {PPP, PMM, MMP} +}; + +/***************************************************************************** + * Static blob data + *****************************************************************************/ + +static const Vector3D zero_vector = { 0.0, 0.0, 0.0 }; + +/* Use 2 textures to allow a gradual fade between images */ +#define NUM_TEXTURES 2 +#define BUMP_ARRAY_SIZE 1024 + +typedef enum +{ + INITIALISING, + HOLDING, + LOADING, + TRANSITIONING +} Frame_State; + +/* structure for holding the mirrorblob data */ +typedef struct { + int screen_width, screen_height; + GLXContext *glx_context; + Window window; + XColor fg, bg; + + /* Parameters controlling the position of the blob as a whole */ + Vector3D blob_center; + Vector3D blob_anchor; + Vector3D blob_velocity; + Vector3D blob_force; + + /* Count of the total number of nodes and faces used to tesselate the blob */ + int num_nodes; + int num_faces; + + Node_Data *nodes; + Face_Data *faces; + + Vector3D *dots; + Vector3D *normals; + Colour *colours; + Vector2D *tex_coords; + + /* Pointer to the bump function results */ + double *bump_shape, *wall_shape; + + Bump_Data *bump_data; + + /* Use 2 textures to allow a gradual fade between images */ + int current_texture; + + /* Ratio of used texture size to total texture size */ + GLfloat tex_width[NUM_TEXTURES], tex_height[NUM_TEXTURES]; + GLuint textures[NUM_TEXTURES]; + + Frame_State state; + double state_start_time; + + int colour_cycle; + + Bool mipmap_p; + Bool waiting_for_image_p; + Bool first_image_p; + + trackball_state *trackball; + int button_down; + +} mirrorblobstruct; + +static mirrorblobstruct *Mirrorblob = NULL; + +/****************************************************************************** + * + * Returns the current time in seconds as a double. Shamelessly borrowed from + * glslideshow. + * + */ +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + +/****************************************************************************** + * + * Change to the projection matrix and set our viewing volume. + * + */ +static void +reset_projection(int width, int height) +{ + glMatrixMode (GL_PROJECTION); + glLoadIdentity (); + gluPerspective (60.0, 1.0, 1.0, 1024.0 ); + glMatrixMode (GL_MODELVIEW); + glLoadIdentity (); +} + +/****************************************************************************** + * + * Calculate the dot product of two vectors u and v + * Dot product u.v = |u||v|cos(theta) + * Where theta = angle between u and v + */ +static inline double +dot (const Vector3D u, const Vector3D v) +{ + return (u.x * v.x) + (u.y * v.y) + (u.z * v.z); +} + +/****************************************************************************** + * + * Calculate the cross product of two vectors. + * Gives a vector perpendicular to u and v with magnitude |u||v|sin(theta) + * Where theta = angle between u and v + */ +static inline Vector3D +cross (const Vector3D u, const Vector3D v) +{ + Vector3D result; + + result.x = (u.y * v.z - u.z * v.y); + result.y = (u.z * v.x - u.x * v.z); + result.z = (u.x * v.y - u.y * v.x); + + return result; +} + +/****************************************************************************** + * + * Add vector v to vector u + */ +static inline void +add (Vector3D *u, const Vector3D v) +{ + u->x = u->x + v.x; + u->y = u->y + v.y; + u->z = u->z + v.z; +} + +/****************************************************************************** + * + * Subtract vector v from vector u + */ +static inline Vector3D +subtract (const Vector3D u, const Vector3D v) +{ + Vector3D result; + + result.x = u.x - v.x; + result.y = u.y - v.y; + result.z = u.z - v.z; + + return result; +} + +/****************************************************************************** + * + * multiply vector v by scalar s + */ +static inline Vector3D +scale (const Vector3D v, const double s) +{ + Vector3D result; + + result.x = v.x * s; + result.y = v.y * s; + result.z = v.z * s; + return result; +} + +/****************************************************************************** + * + * normalise vector v + */ +static inline Vector3D +normalise (const Vector3D v) +{ + Vector3D result; + double magnitude; + + magnitude = sqrt (dot(v, v)); + + if (magnitude > 1e-300) + { + result = scale (v, 1.0 / magnitude); + } + else + { + printf("zero\n"); + result = zero_vector; + } + return result; +} + +/****************************************************************************** + * + * Calculate the transform matrix for the given quaternion + */ +static void +quaternion_transform (Quaternion q, GLfloat * transform) +{ + GLfloat x, y, z, w; + x = q.x; + y = q.y; + z = q.z; + w = q.w; + + transform[0] = (w * w) + (x * x) - (y * y) - (z * z); + transform[1] = (2.0 * x * y) + (2.0 * w * z); + transform[2] = (2.0 * x * z) - (2.0 * w * y); + transform[3] = 0.0; + + transform[4] = (2.0 * x * y) - (2.0 * w * z); + transform[5] = (w * w) - (x * x) + (y * y) - (z * z); + transform[6] = (2.0 * y * z) + (2.0 * w * x); + transform[7] = 0.0; + + transform[8] = (2.0 * x * z) + (2.0 * w * y); + transform[9] = (2.0 * y * z) - (2.0 * w * x); + transform[10] = (w * w) - (x * x) - (y * y) + (z * z); + transform[11] = 0.0; + + transform[12] = 0.0; + transform[13] = 0.0; + transform[14] = 0.0; + transform[15] = (w * w) + (x * x) + (y * y) + (z * z); +} + +/****************************************************************************** + * + * Apply a matrix transform to the given vector + */ +static inline Vector3D +vector_transform (Vector3D u, GLfloat * t) +{ + Vector3D result; + + result.x = (u.x * t[0] + u.y * t[4] + u.z * t[8] + 1.0 * t[12]); + result.y = (u.x * t[1] + u.y * t[5] + u.z * t[9] + 1.0 * t[13]); + result.z = (u.x * t[2] + u.y * t[6] + u.z * t[10] + 1.0 * t[14]); + + return result; +} + +/****************************************************************************** + * + * Return a node that is on an arc between node1 and node2, where distance + * is the proportion of the distance from node1 to the total arc. + */ +static Vector3D +partial (Vector3D node1, Vector3D node2, double distance) +{ + Vector3D result; + Vector3D rotation_axis; + GLfloat transformation[16]; + double angle; + Quaternion rotation; + + rotation_axis = normalise (cross (node1, node2)); + angle = acos (dot (node1, node2)) * distance; + + rotation.x = rotation_axis.x * sin (angle / 2.0); + rotation.y = rotation_axis.y * sin (angle / 2.0); + rotation.z = rotation_axis.z * sin (angle / 2.0); + rotation.w = cos (angle / 2.0); + + quaternion_transform (rotation, transformation); + + result = vector_transform (node1, transformation); + + return result; +} + +/**************************************************************************** + * + * Callback indicating a texture has loaded + */ +static void +image_loaded_cb (const char *filename, XRectangle *geometry, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + mirrorblobstruct *mp = (mirrorblobstruct *) closure; + GLint texid = -1; + int texture_index = -1; + int i; + + glGetIntegerv (GL_TEXTURE_BINDING_2D, &texid); + if (texid < 0) abort(); + + for (i = 0; i < NUM_TEXTURES; i++) { + if (mp->textures[i] == texid) { + texture_index = i; + break; + } + } + if (texture_index < 0) abort(); + + mp->tex_width [texture_index] = (GLfloat) image_width / texture_width; + mp->tex_height[texture_index] = -(GLfloat) image_height / texture_height; + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + (mp->mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + mp->waiting_for_image_p = False; + mp->first_image_p = True; +} + +/* Load a new file into a texture + */ +static void +grab_texture(ModeInfo *mi, int texture_index) +{ + mirrorblobstruct *mp = &Mirrorblob[MI_SCREEN(mi)]; + + { + int w = (MI_WIDTH(mi) / 2) - 1; + int h = (MI_HEIGHT(mi) / 2) - 1; + if (w <= 10) w = 10; + if (h <= 10) h = 10; + + mp->waiting_for_image_p = True; + mp->mipmap_p = True; + load_texture_async (mi->xgwa.screen, mi->window, + *mp->glx_context, w, h, mp->mipmap_p, + mp->textures[texture_index], + image_loaded_cb, mp); + } +} + +/****************************************************************************** + * + * Generate internal parameters based on supplied options the parameters to + * ensure they are consistant. + */ +static void +set_parameters(void) +{ +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + wireframe = 0; +# endif + + /* In wire frame mode do not draw a texture */ + if (wireframe) + { + do_texture = False; + blend = 1.0; + } + + /* Need to load textures if either the blob or the backgound has an image */ + if (do_texture || do_paint_background) + { + load_textures = True; + } + else + { + load_textures = False; + } + + /* If theres no texture don't calculate co-ordinates. */ + if (!do_texture) + { + offset_texture = False; + } + + culling = True; +} + +/****************************************************************************** + * + * Initialise the openGL state data. + */ +static void +initialize_gl(ModeInfo *mi, GLsizei width, GLsizei height) +{ + mirrorblobstruct *gp = &Mirrorblob[MI_SCREEN(mi)]; + + /* Lighting values */ + GLfloat ambientLight[] = { 0.2f, 0.2f, 0.2f, 1.0f }; + + GLfloat lightPos0[] = {500.0f, 100.0f, 200.0f, 1.0f }; + GLfloat whiteLight0[] = { 0.0f, 0.0f, 0.0f, 1.0f }; + GLfloat sourceLight0[] = { 0.6f, 0.6f, 0.6f, 1.0f }; + GLfloat specularLight0[] = { 0.8f, 0.8f, 0.9f, 1.0f }; + + GLfloat lightPos1[] = {-50.0f, -100.0f, 2500.0f, 1.0f }; + GLfloat whiteLight1[] = { 0.0f, 0.0f, 0.0f, 1.0f }; + GLfloat sourceLight1[] = { 0.6f, 0.6f, 0.6f, 1.0f }; + GLfloat specularLight1[] = { 0.7f, 0.7f, 0.7f, 1.0f }; + + GLfloat specref[] = { 1.0f, 1.0f, 1.0f, 1.0f }; + + GLfloat fogColor[4] = { 0.4, 0.4, 0.5, 0.1 }; + + /* Set the internal parameters based on the configuration settings */ + set_parameters(); + + /* Set the viewport to the width and heigh of the window */ + glViewport (0, 0, width, height ); + + if (do_antialias) + { + blend = 1.0; + glEnable(GL_LINE_SMOOTH); + glEnable(GL_POLYGON_SMOOTH); + } + + /* The blend function is used for trasitioning between two images even when + * blend is not selected. + */ + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + if (do_fog) + { + glEnable(GL_FOG); + glFogfv(GL_FOG_COLOR, fogColor); + glFogf(GL_FOG_DENSITY, 0.50); + glFogf(GL_FOG_START, 15.0); + glFogf(GL_FOG_END, 30.0); + } + + /* Set the shading model to smooth (Gouraud shading). */ + glShadeModel (GL_SMOOTH); + + glLightModelfv (GL_LIGHT_MODEL_AMBIENT, ambientLight); + glLightfv (GL_LIGHT0, GL_AMBIENT, whiteLight0); + glLightfv (GL_LIGHT0, GL_DIFFUSE, sourceLight0); + glLightfv (GL_LIGHT0, GL_SPECULAR, specularLight0); + glLightfv (GL_LIGHT0, GL_POSITION, lightPos0); + glEnable (GL_LIGHT0); + glLightfv (GL_LIGHT1, GL_AMBIENT, whiteLight1); + glLightfv (GL_LIGHT1, GL_DIFFUSE, sourceLight1); + glLightfv (GL_LIGHT1, GL_SPECULAR, specularLight1); + glLightfv (GL_LIGHT1, GL_POSITION, lightPos1); + glEnable (GL_LIGHT1); + glEnable (GL_LIGHTING); + + /* Enable color tracking */ + glEnable (GL_COLOR_MATERIAL); + + /* Set Material properties to follow glColor values */ + glColorMaterial (GL_FRONT, GL_AMBIENT_AND_DIFFUSE); + + /* Set all materials to have specular reflectivity */ + glMaterialfv (GL_FRONT, GL_SPECULAR, specref); + glMateriali (GL_FRONT, GL_SHININESS, 32); + + /* Let GL implementation scale normal vectors. */ + glEnable (GL_NORMALIZE); + + /* Enable Arrays */ + if (load_textures) + { + glLightModeli (GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); + glEnable (GL_TEXTURE_2D); + + gp->current_texture = 0; + glGenTextures(NUM_TEXTURES, gp->textures); + grab_texture(mi, gp->current_texture); + + glMatrixMode (GL_TEXTURE); + glRotated (180.0, 1.0, 0.0, 0.0); + glMatrixMode (GL_MODELVIEW); + } + + /* Clear the buffer since this is not done during a draw with motion blur */ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + +/****************************************************************************** + * + * Initialise the openGL state data. + */ +static void +set_blob_gl_state(GLfloat alpha) +{ + if (do_antialias) + { + glEnable(GL_LINE_SMOOTH); + glEnable(GL_POLYGON_SMOOTH); + } + + if (wireframe) + { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + } + else + { + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + } + + /* The blend function is used for trasitioning between two images even when + * blend is not selected. + */ + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + /* Culling. */ + if (culling) + { + glCullFace (GL_BACK); + glEnable (GL_CULL_FACE); + glFrontFace (GL_CCW); + } + else + { + glDisable (GL_CULL_FACE); + } + + if (blend < 1.0) + { + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + /* Set the default blob colour to off-white. */ + glColor4f (0.9, 0.9, 1.0, alpha); + } + else + { + glDisable(GL_BLEND); + glColor4f (0.9, 0.9, 1.0, 1.0); + } + + glEnable(GL_DEPTH_TEST); + glEnable(GL_LIGHTING); +} + +/****************************************************************************** + * + * Initialise the data required to draw the blob allocating the memory as + * necessary. + * + * Return 0 on success. + */ +static int +initialise_blob(mirrorblobstruct *gp, + int width, + int height, + int bump_array_size) +{ + /* Loop variables */ + int i, u, v, node, side, face, base, base2 = 0; + int nodes_on_edge = resolution; + Vector3D node1, node2, result; + + if (nodes_on_edge < 2) + return -1; + + gp->num_nodes = 2 * nodes_on_edge * nodes_on_edge - 4 * nodes_on_edge + 4; + gp->num_faces = 4 * (nodes_on_edge - 1) * (nodes_on_edge - 1); + + gp->nodes = (Node_Data *) malloc (gp->num_nodes * sizeof (Node_Data)); + if (!gp->nodes) + { + fprintf (stderr, "Couldn't allocate gp->nodes buffer\n"); + return -1; + } + + gp->faces = (Face_Data *) malloc (gp->num_faces * sizeof (Face_Data)); + if (!gp->faces) + { + fprintf (stderr, "Couldn't allocate faces data buffer\n"); + return -1; + } + + gp->bump_data = (Bump_Data *) malloc (bumps * sizeof (Bump_Data)); + if (!gp->bump_data) + { + fprintf(stderr, "Couldn't allocate bump data buffer\n"); + return -1; + } + + gp->bump_shape = (double *)malloc(bump_array_size * sizeof(double)); + if (!gp->bump_shape) + { + fprintf(stderr, "Couldn't allocate bump buffer\n"); + return -1; + } + + gp->wall_shape = (double *)malloc(bump_array_size * sizeof(double)); + if (!gp->wall_shape) + { + fprintf(stderr, "Couldn't allocate wall bump buffer\n"); + return -1; + } + + + gp->dots = (Vector3D *)malloc(gp->num_nodes * sizeof(Vector3D)); + if (!gp->dots) + { + fprintf(stderr, "Couldn't allocate nodes buffer\n"); + return -1; + } + + gp->normals = (Vector3D *)malloc(gp->num_nodes * sizeof(Vector3D)); + if (!gp->normals) + { + fprintf(stderr, "Couldn't allocate normals buffer\n"); + return -1; + } + + gp->colours = (Colour *)malloc(gp->num_nodes * sizeof(Colour)); + if (!gp->colours) + { + fprintf(stderr, "Couldn't allocate colours buffer\n"); + return -1; + } + + gp->tex_coords = (Vector2D *)malloc(gp->num_nodes * sizeof(Vector2D)); + if (!gp->tex_coords) + { + fprintf(stderr, "Couldn't allocate gp->tex_coords buffer\n"); + return -1; + } + + + /* Initialise bump data */ + for (i = 0; i < bumps; i++) + { + gp->bump_data[i].ax = 2.0 * (((double)random() / (double)RAND_MAX) - 0.5); + gp->bump_data[i].ay = 2.0 * (((double)random() / (double)RAND_MAX) - 0.5); + gp->bump_data[i].power = (5.0 / pow(bumps, 0.75)) * (((double)random() / (double)RAND_MAX) - 0.5); + gp->bump_data[i].size = 0.1 + 0.5 * (((double)random() / (double)RAND_MAX)); + + gp->bump_data[i].pos.x = 1.5 * sin(PI * gp->bump_data[i].ay) + * cos(PI * gp->bump_data[i].ax); + gp->bump_data[i].pos.y = 1.5 * cos(PI * gp->bump_data[i].ay); + gp->bump_data[i].pos.z = 1.5 * sin(PI * gp->bump_data[i].ay) + * sin(PI * gp->bump_data[i].ax); + + gp->bump_data[i].cx = 2.0 * (((double)random() / (double)RAND_MAX) - 0.5); + gp->bump_data[i].cy = 2.0 * (((double)random() / (double)RAND_MAX) - 0.5); + gp->bump_data[i].cpower = (5.0 / pow(bumps, 0.75)) * (((double)random() / (double)RAND_MAX) - 0.5); + gp->bump_data[i].csize = 0.35; /*0.1 + 0.25 * (((double)random() / (double)RAND_MAX));*/ + + gp->bump_data[i].vx = 0.0; + gp->bump_data[i].vy = 0.0; + gp->bump_data[i].vpower = 0.0; + gp->bump_data[i].vsize = 0.0; + + gp->bump_data[i].mx = 0.003 * ((double)random() / (double)RAND_MAX); + gp->bump_data[i].my = 0.003 * ((double)random() / (double)RAND_MAX); + gp->bump_data[i].mpower = 0.003 * ((double)random() / (double)RAND_MAX); + gp->bump_data[i].msize = 0.003 * ((double)random() / (double)RAND_MAX); + } + + /* Initialise lookup table of bump strength */ + for (i = 0; i < bump_array_size; i++) + { + double xd, xd2; + xd = i / (double)bump_array_size; + + xd2 = 48.0 * xd * xd; + gp->bump_shape[i] = 0.1 / (xd2 + 0.1); + + xd2 = 40.0 * xd * xd * xd * xd; + gp->wall_shape[i] = 0.4 / (xd2 + 0.1); + } + + node = 0; + face = 0; + for (side = 0; side < 4; side++) + { + base = node; + if (side == 2) + { + base2 = node; + } + /* + * The start and end of the for loops below are modified based on the + * side of the tetrahedron that is being calculated to avoid duplication + * of the gp->nodes that are on the edges of the tetrahedron. + */ + for (u = (side > 1); u < (nodes_on_edge - (side > 0)); u++) + { + node1 = partial (normalise (tetrahedron[side][0]), + normalise (tetrahedron[side][1]), + u / (double) (nodes_on_edge - 1)); + node2 = partial (normalise (tetrahedron[side][0]), + normalise (tetrahedron[side][2]), + u / (double) (nodes_on_edge - 1)); + + for (v = (side > 1); v <= (u - (side > 2)); v++) + { + if (u > 0) + result = partial (node1, node2, v / (double) u); + else + result = node1; + + gp->nodes[node].position = normalise (result); + gp->nodes[node].initial_position = gp->nodes[node].position; + gp->nodes[node].normal = zero_vector; + node++; + } + } + + /* + * Determine which nodes make up each face. The complexity is caused + * by having to determine the correct nodes for the edges of the + * tetrahedron since the common nodes on the edges are only calculated + * once (see above). + */ + for (u = 0; u < (nodes_on_edge - 1); u++) + { + for (v = 0; v <= u; v++) + { + { + if (side < 2) + { + gp->faces[face].node1 = base + ((u * (u + 1)) / 2) + v; + gp->faces[face].node2 = + base + ((u + 1) * (u + 2)) / 2 + v + 1; + gp->faces[face].node3 = + base + ((u + 1) * (u + 2)) / 2 + v; + + if ((side == 1) && (u == (nodes_on_edge - 2))) + { + gp->faces[face].node3 = + ((u + 1) * (u + 2)) / 2 + + nodes_on_edge - v - 1; + gp->faces[face].node2 = + ((u + 1) * (u + 2)) / 2 + + nodes_on_edge - v - 2; + } + } + else if (side < 3) + { + gp->faces[face].node1 = + base + (((u - 1) * u) / 2) + v - 1; + gp->faces[face].node2 = base + ((u) * (u + 1)) / 2 + v; + gp->faces[face].node3 = + base + ((u) * (u + 1)) / 2 + v - 1; + + if (u == (nodes_on_edge - 2)) + { + int n = nodes_on_edge - v - 1; + gp->faces[face].node2 = + ((nodes_on_edge * + (nodes_on_edge + 1)) / 2) + + ((n - 1) * (n + 0)) / 2; + gp->faces[face].node3 = + ((nodes_on_edge * + (nodes_on_edge + 1)) / 2) + + ((n + 0) * (n + 1)) / 2; + } + if (v == 0) + { + gp->faces[face].node1 = (((u + 1) * (u + 2)) / 2) - 1; + gp->faces[face].node3 = (((u + 2) * (u + 3)) / 2) - 1; + } + } + else + { + gp->faces[face].node1 = + base + (((u - 2) * (u - 1)) / 2) + v - 1; + gp->faces[face].node2 = base + ((u - 1) * u) / 2 + v; + gp->faces[face].node3 = base + ((u - 1) * u) / 2 + v - 1; + + if (v == 0) + { + gp->faces[face].node1 = + base2 + ((u * (u + 1)) / 2) - 1; + gp->faces[face].node3 = + base2 + ((u + 1) * (u + 2)) / 2 - 1; + } + if (u == (nodes_on_edge - 2)) + { + gp->faces[face].node3 = + ((nodes_on_edge * + (nodes_on_edge + 1)) / 2) + + ((v + 1) * (v + 2)) / 2 - 1; + gp->faces[face].node2 = + ((nodes_on_edge * + (nodes_on_edge + 1)) / 2) + + ((v + 2) * (v + 3)) / 2 - 1; + } + if (v == u) + { + gp->faces[face].node1 = (u * (u + 1)) / 2; + gp->faces[face].node2 = ((u + 1) * (u + 2)) / 2; + } + } + face++; + } + + if (v < u) + { + if (side < 2) + { + gp->faces[face].node1 = base + ((u * (u + 1)) / 2) + v; + gp->faces[face].node2 = + base + ((u * (u + 1)) / 2) + v + 1; + gp->faces[face].node3 = + base + (((u + 1) * (u + 2)) / 2) + v + 1; + + if ((side == 1) && (u == (nodes_on_edge - 2))) + { + gp->faces[face].node3 = + ((u + 1) * (u + 2)) / 2 + + nodes_on_edge - v - 2; + } + } + else if (side < 3) + { + gp->faces[face].node1 = + base + ((u * (u - 1)) / 2) + v - 1; + gp->faces[face].node2 = base + ((u * (u - 1)) / 2) + v; + gp->faces[face].node3 = base + ((u * (u + 1)) / 2) + v; + + if (u == (nodes_on_edge - 2)) + { + int n = nodes_on_edge - v - 1; + gp->faces[face].node3 = + ((nodes_on_edge * + (nodes_on_edge + 1)) / 2) + + ((n + 0) * (n - 1)) / 2; + } + if (v == 0) + { + gp->faces[face].node1 = (((u + 1) * (u + 2)) / 2) - 1; + } + } + else + { + gp->faces[face].node1 = + base + (((u - 2) * (u - 1)) / 2) + v - 1; + gp->faces[face].node2 = + base + (((u - 2) * (u - 1)) / 2) + v; + gp->faces[face].node3 = base + (((u - 1) * u) / 2) + v; + + if (v == 0) + { + gp->faces[face].node1 = base2 + (u * (u + 1)) / 2 - 1; + } + if (u == (nodes_on_edge - 2)) + { + gp->faces[face].node3 = + ((nodes_on_edge * (nodes_on_edge + 1)) / 2) + + ((v + 2) * (v + 3)) / 2 - 1; + } + if (v == (u - 1)) + { + gp->faces[face].node2 = (u * (u + 1)) / 2; + } + } + face++; + } + } + } + } + + return 0; +} + +/****************************************************************************** + * + * Return the magnitude of the given vector + */ +#if 0 +static inline double +length (Vector3D u) +{ + return sqrt (u.x * u.x + u.y * u.y + u.z * u.z); +} +#endif + +/****************************************************************************** + * + * Calculate the blob shape. + */ +static void +calc_blob(mirrorblobstruct *gp, + int width, + int height, + int bump_array_size, + float limit, + double fade) +{ + /* Loop variables */ + int i, index, face; + /* position of a node */ + Vector3D node; + Vector3D offset; + Vector3D bump_vector; + int dist; + + /* Update position and strength of bumps used to distort the blob */ + for (i = 0; i < bumps; i++) + { + gp->bump_data[i].vx += gp->bump_data[i].mx*(gp->bump_data[i].cx - gp->bump_data[i].ax); + gp->bump_data[i].vy += gp->bump_data[i].my*(gp->bump_data[i].cy - gp->bump_data[i].ay); + gp->bump_data[i].vpower += gp->bump_data[i].mpower + * (gp->bump_data[i].cpower - gp->bump_data[i].power); + gp->bump_data[i].vsize += gp->bump_data[i].msize + * (gp->bump_data[i].csize - gp->bump_data[i].size); + + gp->bump_data[i].ax += 0.1 * gp->bump_data[i].vx; + gp->bump_data[i].ay += 0.1 * gp->bump_data[i].vy; + gp->bump_data[i].power += 0.1 * gp->bump_data[i].vpower; + gp->bump_data[i].size += 0.1 * gp->bump_data[i].vsize; + + gp->bump_data[i].pos.x = 1.0 * sin(PI * gp->bump_data[i].ay) + * cos(PI * gp->bump_data[i].ax); + gp->bump_data[i].pos.y = 1.0 * cos(PI * gp->bump_data[i].ay); + gp->bump_data[i].pos.z = 1.0 * sin(PI * gp->bump_data[i].ay) + * sin(PI * gp->bump_data[i].ax); + } + + /* Update calculate new position for each vertex based on an offset from + * the initial position + */ + gp->blob_force = zero_vector; + for (index = 0; index < gp->num_nodes; ++index) + { + node = gp->nodes[index].initial_position; + gp->nodes[index].normal = node; + + offset = zero_vector; + for ( i = 0; i < bumps; i++) + { + bump_vector = subtract(gp->bump_data[i].pos, node); + + dist = bump_array_size * dot(bump_vector, bump_vector) * gp->bump_data[i].size; + + if (dist < bump_array_size) + { + add(&offset, scale(node, gp->bump_data[i].power * gp->bump_shape[dist])); + add(&gp->blob_force, scale(node, gp->bump_data[i].power * gp->bump_shape[dist])); + } + } + + add(&node, offset); + node = scale(node, zoom); + add(&node, gp->blob_center); + + if (do_walls) + { + if (node.z < -limit) node.z = -limit; + if (node.z > limit) node.z = limit; + + dist = bump_array_size * (node.z + limit) * (node.z + limit) * 0.5; + if (dist < bump_array_size) + { + node.x += (node.x - gp->blob_center.x) * gp->wall_shape[dist]; + node.y += (node.y - gp->blob_center.y) * gp->wall_shape[dist]; + gp->blob_force.z += (node.z + limit); + } + else + { + dist = bump_array_size * (node.z - limit) * (node.z - limit) * 0.5; + if (dist < bump_array_size) + { + node.x += (node.x - gp->blob_center.x) * gp->wall_shape[dist]; + node.y += (node.y - gp->blob_center.y) * gp->wall_shape[dist]; + gp->blob_force.z -= (node.z - limit); + } + + if (node.y < -limit) node.y = -limit; + if (node.y > limit) node.y = limit; + + dist = bump_array_size * (node.y + limit) * (node.y + limit) * 0.5; + if (dist < bump_array_size) + { + node.x += (node.x - gp->blob_center.x) * gp->wall_shape[dist]; + node.z += (node.z - gp->blob_center.z) * gp->wall_shape[dist]; + gp->blob_force.y += (node.y + limit); + } + else + { + dist = bump_array_size * (node.y - limit) * (node.y - limit) * 0.5; + if (dist < bump_array_size) + { + node.x += (node.x - gp->blob_center.x) * gp->wall_shape[dist]; + node.z += (node.z - gp->blob_center.z) * gp->wall_shape[dist]; + gp->blob_force.y -= (node.y - limit); + } + } + + if (node.x < -limit) node.x = -limit; + if (node.x > limit) node.x = limit; + + dist = bump_array_size * (node.x + limit) * (node.x + limit) * 0.5; + if (dist < bump_array_size) + { + node.y += (node.y - gp->blob_center.y) * gp->wall_shape[dist]; + node.z += (node.z - gp->blob_center.z) * gp->wall_shape[dist]; + gp->blob_force.x += (node.x + limit); + } + else + { + dist = bump_array_size * (node.x - limit) * (node.x - limit) * 0.5; + if (dist < bump_array_size) + { + node.y += (node.y - gp->blob_center.y) * gp->wall_shape[dist]; + node.z += (node.z - gp->blob_center.z) * gp->wall_shape[dist]; + gp->blob_force.x -= (node.x - limit); + } + } + + if (node.y < -limit) node.y = -limit; + if (node.y > limit) node.y = limit; + } + } + gp->dots[index] = node; + } + + /* Determine the normal for each face */ + for (face = 0; face < gp->num_faces; face++) + { + /* Use pointers to indexed nodes to help readability */ + int index1 = gp->faces[face].node1; + int index2 = gp->faces[face].node2; + int index3 = gp->faces[face].node3; + + gp->faces[face].normal = cross(subtract(gp->dots[index2], gp->dots[index1]), + subtract(gp->dots[index3], gp->dots[index1])); + + /* Add the normal for the face onto the normal for the verticies of + the face */ + add(&gp->nodes[index1].normal, gp->faces[face].normal); + add(&gp->nodes[index2].normal, gp->faces[face].normal); + add(&gp->nodes[index3].normal, gp->faces[face].normal); + } + + /* Use the normal to set the colour and texture */ + if (do_colour || do_texture) + { + for (index = 0; index < gp->num_nodes; ++index) + { + gp->normals[index] = normalise(gp->nodes[index].normal); + + if (do_colour) + { + gp->colours[index].red = (int)(255.0 * fabs(gp->normals[index].x)); + gp->colours[index].green = (int)(255.0 * fabs(gp->normals[index].y)); + gp->colours[index].blue = (int)(255.0 * fabs(gp->normals[index].z)); + gp->colours[index].alpha = (int)(255.0 * fade); + } + if (do_texture) + { + if (offset_texture) + { + const float cube_size = 100.0; + Vector3D eye = {0.0, 0.0, 50.0}; + Vector3D eye_r = normalise(subtract(gp->dots[index], eye)); + Vector3D reference = subtract(eye_r, scale(gp->normals[index], 2.0 * dot(eye_r, gp->normals[index]))); + double x = 0.0; + double y = 0.0; + double n, n_min = 10000.0, sign = 1.0; + if (fabs(reference.z) > 1e-9) + { + n = (cube_size - gp->dots[index].z) / reference.z; + if (n < 0.0) + { + n = (-cube_size - gp->dots[index].z) / reference.z; + sign = 3.0; + } + if (n > 0.0) + { + x = sign * (gp->dots[index].x + n * reference.x); + y = sign * (gp->dots[index].y + n * reference.y); + n_min = n; + } + } + if (fabs(reference.x) > 1e-9) + { + n = (cube_size - gp->dots[index].x) / reference.x; + sign = 1.0; + if (n < 0.0) + { + n = (-cube_size - gp->dots[index].x) / reference.x; + sign = -1.0; + } + if ((n > 0.0) && (n < n_min)) + { + x = sign * (2.0 * cube_size - (gp->dots[index].z + n * reference.z)); + y = sign * x * (gp->dots[index].y + n * reference.y) / cube_size; + n_min = n; + } + } + if (fabs(reference.y) > 1e-9) + { + n = (cube_size - gp->dots[index].y) / reference.y; + sign = 1.0; + if (n < 0.0) + { + n = (-cube_size - gp->dots[index].y) / reference.y; + sign = -1.0; + } + if ((n > 0.0) && (n < n_min)) + { + y = sign * (2.0 * cube_size -( gp->dots[index].z + n * reference.z)); + x = sign * y * (gp->dots[index].x + n * reference.x) / cube_size; + } + } + + gp->tex_coords[index].x = 0.5 + x / (cube_size * 6.0); + gp->tex_coords[index].y = 0.5 - y / (cube_size * 6.0); + } + else + { + gp->tex_coords[index].x = 0.5 + * (1.0 + asin(gp->normals[index].x) / (0.5 * PI)); + gp->tex_coords[index].y = -0.5 + * (1.0 + asin(gp->normals[index].y) / (0.5 * PI)); + } + /* Adjust the texture co-ordinates to from range 0..1 to + * 0..width or 0..height as appropriate + */ + gp->tex_coords[index].x *= gp->tex_width[gp->current_texture]; + gp->tex_coords[index].y *= gp->tex_height[gp->current_texture]; + } + } + } + + /* Update the center of the whole blob */ + add(&gp->blob_velocity, scale (subtract (gp->blob_anchor, gp->blob_center), 1.0 / 80.0)); + add(&gp->blob_velocity, scale (gp->blob_force, 0.01 / gp->num_nodes)); + + add(&gp->blob_center, scale(gp->blob_velocity, 0.5)); + + gp->blob_velocity = scale(gp->blob_velocity, 0.999); +} + +static void +draw_vertex(mirrorblobstruct *gp, int index) +{ + if (do_colour) + { + glColor3ub(gp->colours[index].red, + gp->colours[index].green, + gp->colours[index].blue); + } + if (load_textures) + { + glTexCoord2fv(&gp->tex_coords[index].x); + } + glNormal3fv(&gp->normals[index].x); + glVertex3fv(&gp->dots[index].x); +} + +/****************************************************************************** + * + * Draw the blob shape. + * + */ +static void +draw_blob (mirrorblobstruct *gp) +{ + int face; + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +/* glRotatef(current_device_rotation(), 0, 0, 1); */ + + /* Move down the z-axis. */ + glTranslatef (0.0, 0.0, -4.0); + + gltrackball_rotate (gp->trackball); + + /* glColor4ub (255, 0, 0, 128); */ + glBegin(GL_TRIANGLES); + for (face = 0; face < gp->num_faces; face++) + { + draw_vertex(gp, gp->faces[face].node1); + draw_vertex(gp, gp->faces[face].node2); + draw_vertex(gp, gp->faces[face].node3); + } + glEnd(); + +#if 0 + glBegin(GL_LINES); + for (face = 0; face < gp->num_faces; face++) + { + if (gp->normals[gp->faces[face].node1].z > 0.0) + { + Vector3D end = gp->dots[gp->faces[face].node1]; + glVertex3dv(&end); + add(&end, scale(gp->normals[gp->faces[face].node1], 0.25)); + glVertex3dv(&end); + } + } + glEnd(); +#endif + + glLoadIdentity(); +} + +/****************************************************************************** + * + * Draw the background image simply map a texture onto a full screen quad. + */ +static void +draw_background (ModeInfo *mi) +{ + mirrorblobstruct *gp = &Mirrorblob[MI_SCREEN(mi)]; + GLfloat rot = current_device_rotation(); + + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); + glEnable (GL_TEXTURE_2D); + glDisable(GL_LIGHTING); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + /* Reset the projection matrix to make it easier to get the size of the quad + * correct + */ + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + + glRotatef (-rot, 0, 0, 1); +/* + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (s, 1/s, 1); + } +*/ + + glOrtho(0.0, MI_WIDTH(mi), MI_HEIGHT(mi), 0.0, -1000.0, 1000.0); + + glBegin (GL_QUADS); + + glTexCoord2f (0.0, 0.0); + glVertex2i (0, 0); + + glTexCoord2f (0.0, gp->tex_height[gp->current_texture]); + glVertex2i (0, MI_HEIGHT(mi)); + + glTexCoord2f (gp->tex_width[gp->current_texture], gp->tex_height[gp->current_texture]); + glVertex2i (MI_WIDTH(mi), MI_HEIGHT(mi)); + + glTexCoord2f (gp->tex_width[gp->current_texture], 0.0); + glVertex2i (MI_WIDTH(mi), 0); + glEnd(); + + glPopMatrix (); + glMatrixMode (GL_MODELVIEW); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); +} + +/****************************************************************************** + * + * Update the scene. + */ +static GLvoid +draw_scene(ModeInfo * mi) +{ + mirrorblobstruct *gp = &Mirrorblob[MI_SCREEN(mi)]; + + double fade = 0.0; + double current_time; + check_gl_error ("draw_scene"); + + mi->polygon_count = 0; + glColor4f (1.0, 1.0, 1.0, 1.0); + + current_time = double_time(); + switch (gp->state) + { + case INITIALISING: + glColor4f (0.0, 0.0, 0.0, 1.0); + fade = 1.0; + break; + + case TRANSITIONING: + fade = 1.0 - (current_time - gp->state_start_time) / fade_time; + break; + + case LOADING: /* FALL-THROUGH */ + case HOLDING: + fade = 1.0; + break; + } + + /* Set the correct texture, when transitioning this ensures that the first draw + * is the original texture (which has the new texture drawn over it with decreasing + * transparency) + */ + if (load_textures) + { + glBindTexture(GL_TEXTURE_2D, gp->textures[gp->current_texture]); + } + + glDisable (GL_DEPTH_TEST); + if (do_paint_background) + { + glEnable (GL_TEXTURE_2D); + if (motion_blur > 0.0) + { + glClear(GL_DEPTH_BUFFER_BIT); + glEnable (GL_BLEND); + glColor4f (1.0, 1.0, 1.0, motion_blur); + } + else + { + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + } + draw_background (mi); + mi->polygon_count++; + + /* When transitioning between two images paint the new image over the old + * image with a varying alpha value to get a smooth fade. + */ + if (gp->state == TRANSITIONING) + { + glEnable (GL_BLEND); + /* Select the texture to transition to */ + glBindTexture (GL_TEXTURE_2D, gp->textures[1 - gp->current_texture]); + glColor4f (1.0, 1.0, 1.0, 1.0 - fade); + + draw_background (mi); + mi->polygon_count++; + + /* Select the original texture to draw the blob */ + glBindTexture (GL_TEXTURE_2D, gp->textures[gp->current_texture]); + } + /* Clear the depth buffer bit so the backgound is behind the blob */ + glClear(GL_DEPTH_BUFFER_BIT); + } + else if (motion_blur > 0.0) + { + glEnable (GL_BLEND); + glColor4f (0.0, 0.0, 0.0, motion_blur); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glTranslatef (0.0, 0.0, -4.0); + glRectd (-10.0, -10.0, 10.0, 10.0); + if (wireframe) + { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + } + glClear(GL_DEPTH_BUFFER_BIT); + } + else + { + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + } + + if (!do_texture) + { + fade = 1.0; + glDisable (GL_TEXTURE_2D); + } + + calc_blob(gp, MI_WIDTH(mi), MI_HEIGHT(mi), BUMP_ARRAY_SIZE, 2.5, fade * blend); + + set_blob_gl_state(fade * blend); + + if (blend < 1.0) + { + /* Disable the colour chanels so that only the depth buffer is updated */ + glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + draw_blob(gp); + mi->polygon_count += gp->num_faces; + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + } + + glDepthFunc(GL_LEQUAL); + draw_blob(gp); + mi->polygon_count += gp->num_faces; + + /* While transitioning between images draw a second blob with a modified + * alpha value. + */ + if (load_textures && (hold_time > 0)) + { + switch (gp->state) + { + case INITIALISING: + if (!gp->waiting_for_image_p) + { + gp->state = HOLDING; + } + break; + + case HOLDING: + if ((current_time - gp->state_start_time) > hold_time) + { + grab_texture(mi, 1 - gp->current_texture); + gp->state = LOADING; + } + break; + + case LOADING: + /* Once the image has loaded move to the TRANSITIONING STATE */ + if (!gp->waiting_for_image_p) + { + gp->state = TRANSITIONING; + /* Get the time again rather than using the current time so + * that the time taken by the grab_texture function is not part + * of the fade time + */ + gp->state_start_time = double_time(); + } + break; + + case TRANSITIONING: + + /* If the blob is textured draw over existing blob to fade between + * images + */ + if (do_texture) + { + /* Select the texture to transition to */ + glBindTexture (GL_TEXTURE_2D, gp->textures[1 - gp->current_texture]); + glEnable (GL_BLEND); + + /* If colour is enabled update the alpha data in the buffer and + * use that in the blending since the alpha of the incomming + * verticies will not be correct + */ + if (do_colour) + { + glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); + glClearColor(0.0, 0.0, 0.0, (1.0 - fade) * blend); + glClear(GL_COLOR_BUFFER_BIT); + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA); + } + else + { + glColor4f (0.9, 0.9, 1.0, (1.0 - fade) * blend); + } + + draw_blob (gp); + mi->polygon_count += gp->num_faces; + + if (do_colour) + { + /* Restore the 'standard' blend functions. */ + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + } + + if ((current_time - gp->state_start_time) > fade_time) + { + gp->state = HOLDING; + gp->state_start_time = current_time; + gp->current_texture = 1 - gp->current_texture; + } + break; + + } + } +} + +/****************************************************************************** + * + * XMirrorblob screen update entry + */ +ENTRYPOINT void +draw_mirrorblob(ModeInfo * mi) +{ + mirrorblobstruct *gp = &Mirrorblob[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!gp->glx_context) + return; + + /* Wait for the first image; for subsequent images, load them in the + background while animating. */ + if (gp->waiting_for_image_p && gp->first_image_p) + return; + + glXMakeCurrent(display, window, *(gp->glx_context)); + draw_scene(mi); + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(display, window); +} + +/****************************************************************************** + * + * XMirrorblob screen resize entry + */ +ENTRYPOINT void +reshape_mirrorblob(ModeInfo *mi, int width, int height) +{ + glViewport( 0, 0, MI_WIDTH(mi), MI_HEIGHT(mi) ); + reset_projection(width, height); +} + +/**************************************************************************** + * + * Handle Mouse events + */ +ENTRYPOINT Bool +mirrorblob_handle_event (ModeInfo * mi, XEvent * event) +{ + mirrorblobstruct *gp = &Mirrorblob[MI_SCREEN (mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button4) + { + zoom *= 1.1; + return True; + } + else if (event->xany.type == ButtonPress && + event->xbutton.button == Button5) + { + + zoom *= 0.9; + return True; + } + else if (gltrackball_event_handler (event, gp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &gp->button_down)) + { + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + gp->state_start_time = 0; + gp->state = HOLDING; + return True; + } + + return False; +} + +/****************************************************************************** + * + * XMirrorblob initialise entry + */ +ENTRYPOINT void +init_mirrorblob(ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + + mirrorblobstruct *gp; + + MI_INIT(mi, Mirrorblob); + gp = &Mirrorblob[screen]; + + gp->window = MI_WINDOW(mi); + if ((gp->glx_context = init_GL(mi)) != NULL) + { + reshape_mirrorblob(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + initialize_gl(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + else + { + MI_CLEARWINDOW(mi); + } + gp->trackball = gltrackball_init(False); + + initialise_blob(gp, MI_WIDTH(mi), MI_HEIGHT(mi), BUMP_ARRAY_SIZE); + gp->state = INITIALISING; + gp->state_start_time = double_time(); + + gp->first_image_p = True; +} + +/****************************************************************************** + * + * XMirrorblob cleanup entry + */ +ENTRYPOINT void +free_mirrorblob(ModeInfo * mi) +{ + mirrorblobstruct *gp = &Mirrorblob[MI_SCREEN(mi)]; + if (gp->nodes) free(gp->nodes); + if (gp->faces) free(gp->faces); + if (gp->bump_data) free(gp->bump_data); + if (gp->colours) free(gp->colours); + if (gp->tex_coords) free(gp->tex_coords); + if (gp->dots) free(gp->dots); + if (gp->wall_shape) free(gp->wall_shape); + if (gp->bump_shape) free(gp->bump_shape); +} + +XSCREENSAVER_MODULE ("MirrorBlob", mirrorblob) + +#endif diff --git a/hacks/glx/mirrorblob.man b/hacks/glx/mirrorblob.man new file mode 100644 index 0000000..c61f7a6 --- /dev/null +++ b/hacks/glx/mirrorblob.man @@ -0,0 +1,107 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +mirrorblob - Draws a wobbly blob that distorts the image behind it. +.SH SYNOPSIS +.B mirrorblob +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-wire] +[\-delay \fInumber\fP] +[\-fog] +[\-walls] +[\-colour] +[\-texture] +[\-offset-texture] +[\-blend] +[\-antialias] +[\-resolution \fInumber\fP] +[\-bumps \fInumber\fP] +[\-fade-time \fInumber\fP] +[\-hold-time \fInumber\fP] +[\-zoom \fInumber\fP] +[\-fps] +.SH DESCRIPTION +Draws a wobbling blob, making use of alpha blending, fog, +textures, and lighting, plus a ``frames per second'' meter so that you can +tell how fast your graphics card is... Requires OpenGL. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.B \-wire +Render in wireframe instead of solid. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-fog | \-no-fog +Whether to enable fog. +.TP 8 +.B \-walls | \-no-walls +Add walls for blob to hit. +.TP 8 +.B \-colour | \-no-colour +Draw coloured blob. If also textured, the texture will have color mixed in. +.TP 8 +.B \-texture | \-no-texture +Whether to wrap a texture image on the blob. +.TP 8 +.B \-offset_texture | \-no-offset_texture +Whether to ofset the texture calculations to only use a region of the image + under the blob. This works well with a semi-transparent blob. +.TP 8 +.B \-blend | \-no-blend +Whether to draw a transparent blob. (see also offset_texture above) +.TP 8 +.B \-antialias | \-no-antialias +Whether to antialias lines. +.TP 8 +.B \-resolution \fInumber\fP +Resolution of the tessellation used to calculate and draw the blob. Larger + numbers give a smoother blob but increase calculation times exponentially. +.TP 8 +.B \-bumps \fInumber\fP +Number of bumps used to distort the blob. +.TP 8 +.B \-hold-time \fInumber\fP +Time until loading a new image. +.TP 8 +.B \-fade-time \fInumber\fP +Time taken to transition between images. +.TP 8 +.B \-zoom \fInumber\fP +Size multiplier for blob. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003 by Jon Dowdall. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jon Dowdall. diff --git a/hacks/glx/moebius.c b/hacks/glx/moebius.c new file mode 100644 index 0000000..5ef2c0d --- /dev/null +++ b/hacks/glx/moebius.c @@ -0,0 +1,788 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* moebius --- Moebius Strip II, an Escher-like GL scene with ants. */ + +#if 0 +static const char sccsid[] = "@(#)moebius.c 5.01 2001/03/01 xlockmore"; +#endif + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The RotateAroundU() routine was adapted from the book + * "Computer Graphics Principles and Practice + * Foley - vanDam - Feiner - Hughes + * Second Edition" Pag. 227, exercise 5.15. + * + * This mode shows some interesting scenes that are impossible OR very + * wierd to build in the real universe. Much of the scenes are inspirated + * on Mauritz Cornelis Escher's works which derivated the mode's name. + * M.C. Escher (1898-1972) was a dutch artist and many people prefer to + * say he was a mathematician. + * + * Thanks goes to Brian Paul for making it possible and inexpensive to use + * OpenGL at home. + * + * Since I'm not a native English speaker, my apologies for any grammatical + * mistakes. + * + * My e-mail address is + * mfvianna@centroin.com.br + * + * Marcelo F. Vianna (Jun-01-1997) + * + * Revision History: + * 05-Apr-2002: Removed all gllist uses (fix some bug with nvidia driver) + * 01-Mar-2001: backported from xscreensaver by lassauge@mail.dotcom.fr + * Feb-2001: Made motion and rotation be smoother Jamie Zawinski + * + * 01-Nov-2000: Allocation checks + * 01-Jan-1998: Mode separated from escher and renamed + * 08-Jun-1997: New scene implemented: "Impossible Cage" based in a M.C. + * Escher's painting with the same name (quite similar). The + * first GL mode to use texture mapping. + * The "Impossible Cage" scene doesn't use DEPTH BUFFER, the + * wood planks are drawn consistently using GL_CULL_FACE, and + * the painter's algorithm is used to sort the planks. + * Marcelo F. Vianna. + * 07-Jun-1997: Speed ups in Moebius Strip using GL_CULL_FACE. + * Marcelo F. Vianna. + * 03-Jun-1997: Initial Release (Only one scene: "Moebius Strip") + * The Moebius Strip scene was inspirated in a M.C. Escher's + * painting named Moebius Strip II in wich ants walk across a + * Moebius Strip path, sometimes meeting each other and sometimes + * being in "opposite faces" (note that the moebius strip has + * only one face and one edge). + * Marcelo F. Vianna. + */ + +/*- + * Texture mapping is only available on RGBA contexts, Mono and color index + * visuals DO NOT support texture mapping in OpenGL. + * + * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture + * mapping shuld work on PseudoColor, DirectColor, TrueColor using Mesa. Mono + * is not officially supported for both OpenGL and Mesa, but seems to not crash + * Mesa. + * + * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know). + */ + +#ifdef STANDALONE +# define MODE_moebius +# define free_moebius 0 +# define release_moebius 0 +# define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#ifdef MODE_moebius + +#if 0 /* Hey, this never actually used the texture at all! */ +#if 0 +#include "e_textures.h" +#else +#include "ximage-loader.h" +#include "images/gen/wood_png.h" +#endif +#endif /* 0 */ + +#include "sphere.h" +#include "tube.h" + +#include "rotator.h" +#include "gltrackball.h" + +#define DEF_SOLIDMOEBIUS "False" +#define DEF_DRAWANTS "True" + +static int solidmoebius; +static int drawants; + +static XrmOptionDescRec opts[] = +{ + {"-solidmoebius", ".moebius.solidmoebius", XrmoptionNoArg, "on"}, + {"+solidmoebius", ".moebius.solidmoebius", XrmoptionNoArg, "off"}, + {"-ants", ".moebius.drawants", XrmoptionNoArg, "on"}, + {"+ants", ".moebius.drawants", XrmoptionNoArg, "off"} +}; +static argtype vars[] = +{ + {&solidmoebius, "solidmoebius", "Solidmoebius", DEF_SOLIDMOEBIUS, t_Bool}, + {&drawants, "drawants", "Drawants", DEF_DRAWANTS, t_Bool} + +}; +static OptionStruct desc[] = +{ + {"-/+solidmoebius", "select between a SOLID or a NET Moebius Strip"}, + {"-/+drawants", "turn on/off walking ants"} +}; + +ENTRYPOINT ModeSpecOpt moebius_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + +#ifdef USE_MODULES +ModStruct moebius_description = +{"moebius", "init_moebius", "draw_moebius", (char *) NULL, + "draw_moebius", "change_moebius", (char *) NULL, &moebius_opts, + 1000, 1, 1, 1, 4, 1.0, "", + "Shows Moebius Strip II, an Escher-like GL scene with ants", 0, NULL}; + +#endif + +#define Scale4Window 0.3 +#define Scale4Iconic 0.4 + +#define sqr(A) ((A)*(A)) + +#ifndef Pi +#define Pi M_PI +#endif + +#define ObjMoebiusStrip 0 +#define ObjAntBody 1 +#define MaxObj 2 + +/*************************************************************************/ + +typedef struct { + GLint WindH, WindW; + GLfloat step; + GLfloat ant_position; + float ant_step; + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; +} moebiusstruct; + +static const float front_shininess[] = {60.0}; +static const float front_specular[] = {0.7, 0.7, 0.7, 1.0}; +static const float ambient[] = {0.0, 0.0, 0.0, 1.0}; +static const float diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const float position0[] = {1.0, 1.0, 1.0, 0.0}; +static const float position1[] = {-1.0, -1.0, 1.0, 0.0}; +static const float lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0}; +static const float lmodel_twoside[] = {GL_TRUE}; + +static const float MaterialRed[] = {0.7, 0.0, 0.0, 1.0}; +static const float MaterialGreen[] = {0.1, 0.5, 0.2, 1.0}; +static const float MaterialBlue[] = {0.0, 0.0, 0.7, 1.0}; +static const float MaterialCyan[] = {0.2, 0.5, 0.7, 1.0}; +static const float MaterialYellow[] = {0.7, 0.7, 0.0, 1.0}; +static const float MaterialMagenta[] = {0.6, 0.2, 0.5, 1.0}; +static const float MaterialWhite[] = {0.7, 0.7, 0.7, 1.0}; +static const float MaterialGray[] = {0.2, 0.2, 0.2, 1.0}; +static const float MaterialGray5[] = {0.5, 0.5, 0.5, 1.0}; +static const float MaterialGray6[] = {0.6, 0.6, 0.6, 1.0}; +static const float MaterialGray8[] = {0.8, 0.8, 0.8, 1.0}; + +static moebiusstruct *moebius = (moebiusstruct *) NULL; + +#define NUM_SCENES 2 + +static Bool +mySphere(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if ((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); + gluSphere(quadObj, radius, 16, 16); + gluDeleteQuadric(quadObj); +#else + glPushMatrix(); + glScalef (radius, radius, radius); + unit_sphere (16, 16, False); + glPopMatrix(); +#endif + return True; +} + +static Bool +myCone(float radius) +{ +#if 0 + GLUquadricObj *quadObj; + + if ((quadObj = gluNewQuadric()) == 0) + return False; + gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); + gluCylinder(quadObj, radius, 0, radius * 3, 8, 1); + gluDeleteQuadric(quadObj); +#else + cone (0, 0, 0, + 0, 0, radius * 3, + radius, 0, + 8, True, True, False); +#endif + return True; +} + +static Bool +draw_moebius_ant(moebiusstruct * mp, const float *Material, int mono) +{ + float cos1 = cos(mp->ant_step); + float cos2 = cos(mp->ant_step + 2 * Pi / 3); + float cos3 = cos(mp->ant_step + 4 * Pi / 3); + float sin1 = sin(mp->ant_step); + float sin2 = sin(mp->ant_step + 2 * Pi / 3); + float sin3 = sin(mp->ant_step + 4 * Pi / 3); + + if (mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray5); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Material); + glEnable(GL_CULL_FACE); + glPushMatrix(); + glScalef(1, 1.3, 1); + if (!mySphere(0.18)) + return False; + glScalef(1, 1 / 1.3, 1); + glTranslatef(0.00, 0.30, 0.00); + if (!mySphere(0.2)) + return False; + + glTranslatef(-0.05, 0.17, 0.05); + glRotatef(-90, 1, 0, 0); + glRotatef(-25, 0, 1, 0); + if (!myCone(0.05)) + return False; + glTranslatef(0.00, 0.10, 0.00); + if (!myCone(0.05)) + return False; + glRotatef(25, 0, 1, 0); + glRotatef(90, 1, 0, 0); + + glScalef(1, 1.3, 1); + glTranslatef(0.15, -0.65, 0.05); + if (!mySphere(0.25)) + return False; + glScalef(1, 1 / 1.3, 1); + glPopMatrix(); + glDisable(GL_CULL_FACE); + + glDisable(GL_LIGHTING); + /* ANTENNAS */ + glBegin(GL_LINES); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.30, 0.00); + glColor3fv(MaterialGray); + glVertex3f(0.40, 0.70, 0.40); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.30, 0.00); + glColor3fv(MaterialGray); + glVertex3f(0.40, 0.70, -0.40); + glEnd(); + glBegin(GL_POINTS); + if (mono) + glColor3fv(MaterialGray6); + else + glColor3fv(MaterialRed); + glVertex3f(0.40, 0.70, 0.40); + glVertex3f(0.40, 0.70, -0.40); + glEnd(); + + /* LEFT-FRONT ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.05, 0.18); + glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25); + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45); + glEnd(); + + /* LEFT-CENTER ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.00, 0.18); + glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25); + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45); + glEnd(); + + /* LEFT-BACK ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, -0.05, 0.18); + glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25); + glColor3fv(MaterialGray); + glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45); + glEnd(); + + /* RIGHT-FRONT ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.05, -0.18); + glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25); + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45); + glEnd(); + + /* RIGHT-CENTER ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, 0.00, -0.18); + glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25); + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45); + glEnd(); + + /* RIGHT-BACK ARM */ + glBegin(GL_LINE_STRIP); + if (mono) + glColor3fv(MaterialGray5); + else + glColor3fv(Material); + glVertex3f(0.00, -0.05, -0.18); + glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25); + glColor3fv(MaterialGray); + glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45); + glEnd(); + + glBegin(GL_POINTS); + if (mono) + glColor3fv(MaterialGray8); + else + glColor3fv(MaterialMagenta); + glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45); + glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45); + glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45); + glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45); + glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45); + glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45); + glEnd(); + + glEnable(GL_LIGHTING); + + mp->ant_step += 0.3; + return True; +} + +static void +RotateAaroundU(float Ax, float Ay, float Az, + float Ux, float Uy, float Uz, + float *Cx, float *Cy, float *Cz, + float Theta) +{ + float cosO = cos(Theta); + float sinO = sin(Theta); + float one_cosO = 1 - cosO; + float Ux2 = sqr(Ux); + float Uy2 = sqr(Uy); + float Uz2 = sqr(Uz); + float UxUy = Ux * Uy; + float UxUz = Ux * Uz; + float UyUz = Uy * Uz; + + *Cx = (Ux2 + cosO * (1 - Ux2)) * Ax + (UxUy * one_cosO - Uz * sinO) * Ay + (UxUz * one_cosO + Uy * sinO) * Az; + *Cy = (UxUy * one_cosO + Uz * sinO) * Ax + (Uy2 + cosO * (1 - Uy2)) * Ay + (UyUz * one_cosO - Ux * sinO) * Az; + *Cz = (UxUz * one_cosO - Uy * sinO) * Ax + (UyUz * one_cosO + Ux * sinO) * Ay + (Uz2 + cosO * (1 - Uz2)) * Az; +} + +#define MoebiusDivisions 40 +#define MoebiusTransversals 4 +static Bool +draw_moebius_strip(ModeInfo * mi) +{ + GLfloat Phi, Theta; + GLfloat cPhi, sPhi; + moebiusstruct *mp = &moebius[MI_SCREEN(mi)]; + int i, j; + int mono = MI_IS_MONO(mi); + + float Cx, Cy, Cz; + +#ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + solidmoebius = True; +#endif + + if (solidmoebius) { + glBegin(GL_QUAD_STRIP); + Phi = 0; + i = 0; + while (i < (MoebiusDivisions * 2 + 1)) { + Theta = Phi / 2; + cPhi = cos(Phi); + sPhi = sin(Phi); + + i++; + if (mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite); + else if (i % 2) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray); + + RotateAaroundU(cPhi, sPhi, 0, -sPhi, cPhi, 0, &Cx, &Cy, &Cz, Theta); + glNormal3f(Cx, Cy, Cz); + RotateAaroundU(0, 0, 1, -sPhi, cPhi, 0, &Cx, &Cy, &Cz, Theta); + glVertex3f(cPhi * 3 + Cx, sPhi * 3 + Cy, +Cz); + glVertex3f(cPhi * 3 - Cx, sPhi * 3 - Cy, -Cz); + + Phi += Pi / MoebiusDivisions; + } + glEnd(); + } else { + for (j = -MoebiusTransversals; j < MoebiusTransversals; j++) { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + glBegin(GL_QUAD_STRIP); + Phi = 0; + i = 0; + while (i < (MoebiusDivisions * 2 + 1)) { + Theta = Phi / 2; + cPhi = cos(Phi); + sPhi = sin(Phi); + + RotateAaroundU(cPhi, sPhi, 0, -sPhi, cPhi, 0, &Cx, &Cy, &Cz, Theta); + glNormal3f(Cx, Cy, Cz); + RotateAaroundU(0, 0, 1, -sPhi, cPhi, 0, &Cx, &Cy, &Cz, Theta); + j++; + if (j == MoebiusTransversals || mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite); + else if (i % 2) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray); + glVertex3f(cPhi * 3 + Cx / MoebiusTransversals * j, sPhi * 3 + Cy / MoebiusTransversals * j, +Cz / MoebiusTransversals * j); + j--; + if (j == -MoebiusTransversals || mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite); + else if (i % 2) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray); + glVertex3f(cPhi * 3 + Cx / MoebiusTransversals * j, sPhi * 3 + Cy / MoebiusTransversals * j, +Cz / MoebiusTransversals * j); + + Phi += Pi / MoebiusDivisions; + i++; + } + glEnd(); + } + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + } + + if (drawants) { + /* DRAW BLUE ANT */ + glPushMatrix(); + glRotatef(mp->ant_position + 180, 0, 0, 1); + glTranslatef(3, 0, 0); + glRotatef(mp->ant_position / 2 + 90, 0, 1, 0); + glTranslatef(0.28, 0, -0.45); + if (!draw_moebius_ant(mp, MaterialYellow, mono)) + return False; + glPopMatrix(); + + /* DRAW YELLOW ANT */ + glPushMatrix(); + glRotatef(mp->ant_position, 0, 0, 1); + glTranslatef(3, 0, 0); + glRotatef(mp->ant_position / 2, 0, 1, 0); + glTranslatef(0.28, 0, -0.45); + if (!draw_moebius_ant(mp, MaterialBlue, mono)) + return False; + glPopMatrix(); + + /* DRAW GREEN ANT */ + glPushMatrix(); + glRotatef(-mp->ant_position, 0, 0, 1); + glTranslatef(3, 0, 0); + glRotatef(-mp->ant_position / 2, 0, 1, 0); + glTranslatef(0.28, 0, 0.45); + glRotatef(180, 1, 0, 0); + if (!draw_moebius_ant(mp, MaterialGreen, mono)) + return False; + glPopMatrix(); + + /* DRAW CYAN ANT */ + glPushMatrix(); + glRotatef(-mp->ant_position + 180, 0, 0, 1); + glTranslatef(3, 0, 0); + glRotatef(-mp->ant_position / 2 + 90, 0, 1, 0); + glTranslatef(0.28, 0, 0.45); + glRotatef(180, 1, 0, 0); + if (!draw_moebius_ant(mp, MaterialCyan, mono)) + return False; + glPopMatrix(); + } + mp->ant_position += 1; + return True; +} +#undef MoebiusDivisions +#undef MoebiusTransversals + +ENTRYPOINT void +reshape_moebius (ModeInfo * mi, int width, int height) +{ + moebiusstruct *mp = &moebius[MI_SCREEN(mi)]; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + } + + glViewport(0, y, mp->WindW = (GLint) width, mp->WindH = (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); + glMatrixMode(GL_MODELVIEW); + if (width >= 1024) { + glLineWidth(3); + glPointSize(3); + } else if (width >= 512) { + glLineWidth(2); + glPointSize(2); + } else { + glLineWidth(1); + glPointSize(1); + } +} + +static void +pinit(ModeInfo *mi) +{ + /* int status; */ + glClearDepth(1.0); + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_NORMALIZE); + glFrontFace(GL_CCW); + glCullFace(GL_BACK); + + /* moebius */ + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); + +#if 0 + glEnable(GL_TEXTURE_2D); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + +#if 0 + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, + WoodTextureWidth, WoodTextureHeight, + GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + if (status) + { + const char *s = (char *) gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, WoodTextureWidth, WoodTextureHeight, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); +#else + { + XImage *img = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + wood_png, sizeof(wood_png)); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + img->width, img->height, 0, + GL_RGBA, + /* GL_UNSIGNED_BYTE, */ + GL_UNSIGNED_INT_8_8_8_8_REV, + img->data); + check_gl_error("texture"); + XDestroyImage (img); + } +#endif + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); +#endif + + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); +} + + +ENTRYPOINT Bool +moebius_handle_event (ModeInfo *mi, XEvent *event) +{ + moebiusstruct *mp = &moebius[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, mp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &mp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void +init_moebius (ModeInfo * mi) +{ + moebiusstruct *mp; + + MI_INIT (mi, moebius); + mp = &moebius[MI_SCREEN(mi)]; + mp->step = NRAND(90); + mp->ant_position = NRAND(90); + + { + double rot_speed = 0.3; + mp->rot = make_rotator (rot_speed, rot_speed, rot_speed, 1, 0, True); + mp->trackball = gltrackball_init (True); + } + + if ((mp->glx_context = init_GL(mi)) != NULL) { + + reshape_moebius(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + pinit(mi); + } else { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void +draw_moebius (ModeInfo * mi) +{ + moebiusstruct *mp; + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (moebius == NULL) + return; + mp = &moebius[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + + if (!mp->glx_context) + return; + + glXMakeCurrent(display, window, *(mp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + + glTranslatef(0.0, 0.0, -10.0); + + gltrackball_rotate (mp->trackball); + + if (!MI_IS_ICONIC(mi)) { + glScalef(Scale4Window * mp->WindH / mp->WindW, Scale4Window, Scale4Window); + } else { + glScalef(Scale4Iconic * mp->WindH / mp->WindW, Scale4Iconic, Scale4Iconic); + } + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) { + glScalef (1/h, h, 1); /* #### not quite right */ + h = 1.7; + glScalef (h, h, h); + } + } +# endif + + { + double x, y, z; + get_rotation (mp->rot, &x, &y, &z, !mp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + /* moebius */ + if (!draw_moebius_strip(mi)) { + MI_ABORT(mi); + return; + } + + glPopMatrix(); + + if (MI_IS_FPS(mi)) do_fps (mi); + glFlush(); + + glXSwapBuffers(display, window); + + mp->step += 0.025; +} + +#ifndef STANDALONE +ENTRYPOINT void +change_moebius (ModeInfo * mi) +{ + moebiusstruct *mp = &moebius[MI_SCREEN(mi)]; + + if (!mp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context)); + pinit(); +} +#endif /* !STANDALONE */ + + +XSCREENSAVER_MODULE ("Moebius", moebius) + +#endif diff --git a/hacks/glx/moebius.man b/hacks/glx/moebius.man new file mode 100644 index 0000000..696e0d6 --- /dev/null +++ b/hacks/glx/moebius.man @@ -0,0 +1,65 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +moebius - Escher's Moebuis Strip II, with ants. +.SH SYNOPSIS +.B moebius +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[-delay \fInumber\fP] +[-solidmoebius] +[-wireframe] +[-noants] +[-fps] +.SH DESCRIPTION +Another M. C. Escher hack by Marcelo Vianna, this one draws ``Moebius Strip +II,'' a GL image of ants walking along the surface of a moebius strip. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-solidmoebius +Solid Floor. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-noants | \-no-noants +Draw Ants. Boolean. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Marcelo Vianna. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Marcelo Vianna. diff --git a/hacks/glx/moebiusgears.c b/hacks/glx/moebiusgears.c new file mode 100644 index 0000000..0f058b8 --- /dev/null +++ b/hacks/glx/moebiusgears.c @@ -0,0 +1,437 @@ +/* moebiusgears, Copyright (c) 2007-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 17 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_mgears 0 +# define release_mgears 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "involute.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_ROLL "True" +#define DEF_SPEED "1.0" +#define DEF_TEETH "15" + +typedef struct { + + gear g; + GLfloat pos_th; /* position on ring of gear system */ + GLfloat pos_thz; /* rotation out of plane of gear system */ +} mogear; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int ngears; + mogear *gears; + GLfloat ring_r; /* radius of gear system */ + GLfloat roll_th; + +} mgears_configuration; + +static mgears_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; +static Bool do_roll; +static int teeth_arg; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-roll", ".roll", XrmoptionNoArg, "True" }, + { "+roll", ".roll", XrmoptionNoArg, "False" }, + { "-teeth", ".teeth", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&do_roll, "roll", "Roll", DEF_ROLL, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&teeth_arg, "teeth", "Teeth", DEF_TEETH, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt mgears_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_mgears (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +reset_mgears (ModeInfo *mi) +{ + mgears_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int total_gears = MI_COUNT(mi); + double gears_per_turn; + double gear_r, tw, th, thick, slope; + int i, nubs, size; + + if (! (total_gears & 1)) + total_gears++; /* must be odd or gears intersect */ + + /* Number of teeth must be odd if number of gears is odd, or teeth don't + mesh when the loop closes. And since number of gears must be odd... + */ + if (! (teeth_arg & 1)) teeth_arg++; + if (teeth_arg < 7) teeth_arg = 7; + + if (total_gears < 13) /* gear mesh angle is too steep with less */ + total_gears = 13; + + thick = 0.2; + nubs = (random() & 3) ? 0 : (random() % teeth_arg) / 2; + + slope = 0; + + /* Sloping gears are incompatible with "-roll" ... */ + /* slope= -M_PI * 2 / total_gears; */ + + gears_per_turn = total_gears / 2.0; + + bp->ring_r = 3; + gear_r = M_PI * bp->ring_r / gears_per_turn; + tw = 0; + th = gear_r * 2.5 / teeth_arg; + + /* If the gears are small, use a lower density mesh. */ + size = (gear_r > 0.60 ? INVOLUTE_HUGE : + gear_r > 0.32 ? INVOLUTE_LARGE : + gear_r > 0.13 ? INVOLUTE_MEDIUM : + INVOLUTE_SMALL); + + /* If there are lots of teeth, use a lower density mesh. */ + if (teeth_arg > 77) + size = INVOLUTE_SMALL; + if (teeth_arg > 45 && size >= INVOLUTE_HUGE) + size = INVOLUTE_MEDIUM; + + if (bp->gears) + { + for (i = 0; i < bp->ngears; i++) + glDeleteLists (bp->gears[i].g.dlist, 1); + free (bp->gears); + bp->gears = 0; + } + + bp->ngears = total_gears; + + bp->gears = (mogear *) calloc (bp->ngears, sizeof(*bp->gears)); + for (i = 0; i < bp->ngears; i++) + { + mogear *mg = &bp->gears[i]; + gear *g = &mg->g; + + g->r = gear_r; + g->size = size; + g->nteeth = teeth_arg; + g->tooth_w = tw; + g->tooth_h = th; + g->tooth_slope = slope; + g->thickness = g->r * thick; + g->thickness2 = g->thickness * 0.1; + g->thickness3 = g->thickness; + g->inner_r = g->r * 0.80; + g->inner_r2 = g->r * 0.60; + g->inner_r3 = g->r * 0.55; + g->nubs = nubs; + mg->pos_th = (M_PI * 2 / gears_per_turn) * i; + mg->pos_thz = (M_PI / 2 / gears_per_turn) * i; + + g->th = ((i & 1) + ? (M_PI * 2 / g->nteeth) + : 0); + + /* Colorize + */ + g->color[0] = 0.7 + frand(0.3); + g->color[1] = 0.7 + frand(0.3); + g->color[2] = 0.7 + frand(0.3); + g->color[3] = 1.0; + + g->color2[0] = g->color[0] * 0.85; + g->color2[1] = g->color[1] * 0.85; + g->color2[2] = g->color[2] * 0.85; + g->color2[3] = g->color[3]; + + /* Now render the gear into its display list. + */ + g->dlist = glGenLists (1); + if (! g->dlist) + { + check_gl_error ("glGenLists"); + abort(); + } + + glNewList (g->dlist, GL_COMPILE); + g->polygons += draw_involute_gear (g, wire); + glEndList (); + } +} + + +ENTRYPOINT void +init_mgears (ModeInfo *mi) +{ + mgears_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_mgears (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + { + double spin_speed = 0.5; + double wander_speed = 0.01; + double spin_accel = 2.0; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False /* don't randomize */ + ); + bp->trackball = gltrackball_init (True); + } + + reset_mgears (mi); +} + + +ENTRYPOINT Bool +mgears_handle_event (ModeInfo *mi, XEvent *event) +{ + mgears_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == '+' || c == '=' || + keysym == XK_Up || keysym == XK_Right || keysym == XK_Next) + { + MI_COUNT(mi) += 2; + reset_mgears (mi); + return True; + } + else if (c == '-' || c == '_' || + keysym == XK_Down || keysym == XK_Left || keysym == XK_Prior) + { + if (MI_COUNT(mi) <= 13) + return False; + MI_COUNT(mi) -= 2; + reset_mgears (mi); + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + goto DEF; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + DEF: + MI_COUNT(mi) = 13 + (2 * (random() % 10)); + reset_mgears (mi); + return True; + } + + return False; +} + + +ENTRYPOINT void +draw_mgears (ModeInfo *mi) +{ + mgears_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef ((x - 0.5) * 4, + (y - 0.5) * 4, + (z - 0.5) * 7); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + + /* add a little rotation for -no-spin mode */ + x -= 0.14; + y -= 0.06; + + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glScalef (1.5, 1.5, 1.5); + +/*#define DEBUG*/ + +#ifdef DEBUG + glScalef (.5, .5, .5); + glTranslatef (0, -bp->gears[0].g.r * bp->ngears, 0); +#endif + + for (i = 0; i < bp->ngears; i++) + { + mogear *mg = &bp->gears[i]; + gear *g = &mg->g; + + glPushMatrix(); +#ifndef DEBUG + glRotatef (mg->pos_th * 180 / M_PI, 0, 0, 1); /* rotation on ring */ + glTranslatef (bp->ring_r, 0, 0); /* position on ring */ + glRotatef (mg->pos_thz * 180 / M_PI, 0, 1, 0); /* twist a bit */ + + if (do_roll) + { + glRotatef (bp->roll_th * 180 / M_PI, 0, 1, 0); + bp->roll_th += speed * 0.0005; + } +#else + glTranslatef (0, i * 2 * g->r, 0); +#endif + glRotatef (g->th * 180 / M_PI, 0, 0, 1); + + glCallList (g->dlist); + mi->polygon_count += g->polygons; + glPopMatrix (); + } + + glPopMatrix (); + +#ifndef DEBUG + /* spin gears */ + for (i = 0; i < bp->ngears; i++) + { + mogear *mg = &bp->gears[i]; + mg->g.th += speed * (M_PI / 100) * (i & 1 ? 1 : -1); + } +#endif + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("MoebiusGears", moebiusgears, mgears) + +#endif /* USE_GL */ diff --git a/hacks/glx/moebiusgears.man b/hacks/glx/moebiusgears.man new file mode 100644 index 0000000..a45519a --- /dev/null +++ b/hacks/glx/moebiusgears.man @@ -0,0 +1,86 @@ +.TH XScreenSaver 1 "30-Oct-99" "X Version 11" +.SH NAME +moebiusgears - draw a moebius strip of interlocking gears. +.SH SYNOPSIS +.B moebiusgears +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] +[\-delay \fIusecs\fP] +[\-speed \fIfloat\fP] +[\-no\-spin] +[\-no\-wander] +[\-no\-roll] +[-count \fIinteger\fP] +[-teeth \fIinteger\fP] +[-wireframe] +[-fps] +.SH DESCRIPTION +The \fImoebiusgears\fP program draws a closed, interlinked chain of +rotating gears. The layout of the gears follows the path of a +moebius strip. +.SH OPTIONS +.I moebiusgears +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fIusecs\fP +The delay between frames of the animation, in microseconds. +Default: 30000 (0.03 seconds.) +.TP 8 +.B \-speed \fIfloat\fP +Larger numbers mean run faster. Default: 1.0. +.TP 8 +.B \-no\-spin +Don't rotate the object. +.TP 8 +.B \-no\-wander +Don't wander the object around the screen. +.TP 8 +.B \-no\-roll +Don't slowly roll the moebius strip inside out. +.TP 8 +.B \-count \fIinteger\fP +How many gears to draw. Default: 17. Minimum 11, must be odd. +.TP 8 +.B \-teeth \fIinteger\fP +How many teeth to draw on each draw. Default: 15. Minimum 7, must be odd. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2007 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/molecule.c b/hacks/glx/molecule.c new file mode 100644 index 0000000..d8bc1d8 --- /dev/null +++ b/hacks/glx/molecule.c @@ -0,0 +1,1682 @@ +/* molecule, Copyright (c) 2001-2016 Jamie Zawinski + * Draws molecules, based on coordinates from PDB (Protein Data Base) files. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + + +/* Documentation on the PDB file format: + https://en.wikipedia.org/wiki/Protein_Data_Bank_%28file_format%29 + http://www.wwpdb.org/docs.html + http://www.wwpdb.org/documentation/format32/v3.2.html + http://www.wwpdb.org/documentation/format32/sect9.html + http://www.rcsb.org/pdb/file_formats/pdb/pdbguide2.2/guide2.2_frame.html + + Good source of PDB files: + http://www.sci.ouc.bc.ca/chem/molecule/molecule.html + http://www.umass.edu/microbio/rasmol/whereget.htm + http://www.wwpdb.org/docs.html + */ + +#define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*atomFont: -*-helvetica-medium-r-normal-*-*-240-*-*-*-*-*-*\n" \ + "*titleFont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \ + "*noLabelThreshold: 150 \n" \ + "*wireframeThreshold: 150 \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_molecule 0 +# define release_molecule 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "sphere.h" +#include "tube.h" +#include "texfont.h" +#include "rotator.h" +#include "gltrackball.h" + +#ifdef USE_GL /* whole file */ + +#include +#include +#include +#include + +#define DEF_TIMEOUT "20" +#define DEF_SPIN "XYZ" +#define DEF_WANDER "False" +#define DEF_LABELS "True" +#define DEF_TITLES "True" +#define DEF_ATOMS "True" +#define DEF_BONDS "True" +#define DEF_ESHELLS "True" +#define DEF_BBOX "False" +#define DEF_SHELL_ALPHA "0.3" +#define DEF_MOLECULE "(default)" +#define DEF_VERBOSE "False" + +#define SPHERE_SLICES 48 /* how densely to render spheres */ +#define SPHERE_STACKS 24 + +#define SMOOTH_TUBE /* whether to have smooth or faceted tubes */ + +#ifdef SMOOTH_TUBE +# define TUBE_FACES 12 /* how densely to render tubes */ +#else +# define TUBE_FACES 8 +#endif + +#define SPHERE_SLICES_2 14 +#define SPHERE_STACKS_2 8 +#define TUBE_FACES_2 6 + + +# ifdef __GNUC__ + __extension__ /* don't warn about "string length is greater than the length + ISO C89 compilers are required to support" when includng + the following data file... */ +# endif +static const char * const builtin_pdb_data[] = { +# include "molecules.h" +}; + + +#ifndef HAVE_MOBILE +# define LOAD_FILES +#endif + + +typedef struct { + const char *name; + GLfloat size, size2; + const char *color; + const char *text_color; + GLfloat gl_color[8]; +} atom_data; + + +/* These are the traditional colors used to render these atoms, + and their approximate size in angstroms. + */ +static const atom_data all_atom_data[] = { + { "H", 1.17, 0.40, "#FFFFFF", "#000000", { 0, }}, + { "C", 1.75, 0.58, "#999999", "#FFFFFF", { 0, }}, + { "CA", 1.80, 0.60, "#0000FF", "#ADD8E6", { 0, }}, + { "N", 1.55, 0.52, "#A2B5CD", "#EE99FF", { 0, }}, + { "O", 1.40, 0.47, "#FF0000", "#FFB6C1", { 0, }}, + { "P", 1.28, 0.43, "#9370DB", "#DB7093", { 0, }}, + { "S", 1.80, 0.60, "#8B8B00", "#FFFF00", { 0, }}, + { "bond", 0, 0, "#B3B3B3", "#FFFF00", { 0, }}, + { "*", 1.40, 0.47, "#008B00", "#90EE90", { 0, }} +}; + + +typedef struct { + int id; /* sequence number in the PDB file */ + const char *label; /* The atom name */ + GLfloat x, y, z; /* position in 3-space (angstroms) */ + const atom_data *data; /* computed: which style of atom this is */ +} molecule_atom; + +typedef struct { + int from, to; /* atom sequence numbers */ + int strength; /* how many bonds are between these two atoms */ +} molecule_bond; + + +typedef struct { + const char *label; /* description of this compound */ + int natoms, atoms_size; + int nbonds, bonds_size; + molecule_atom *atoms; + molecule_bond *bonds; +} molecule; + + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + GLfloat molecule_size; /* max dimension of molecule bounding box */ + + GLfloat no_label_threshold; /* Things happen when molecules are huge */ + GLfloat wireframe_threshold; + + int which; /* which of the molecules is being shown */ + int nmolecules; + molecule *molecules; + + int mode; /* 0 = normal, 1 = out, 2 = in */ + int mode_tick; + int next; /* 0 = random, -1 = back, 1 = forward */ + + GLuint molecule_dlist; + GLuint shell_dlist; + + texture_font_data *atom_font, *title_font; + + int polygon_count; + + time_t draw_time; + int draw_tick; + + GLfloat overall_scale; + int low_rez_p; + +} molecule_configuration; + + +static molecule_configuration *mcs = NULL; + +static int timeout; +static char *molecule_str; +static char *do_spin; +static Bool do_wander; +static Bool do_titles; +static Bool do_labels; +static Bool do_atoms; +static Bool do_bonds; +static Bool do_shells; +static Bool do_bbox; +static Bool verbose_p; +static GLfloat shell_alpha; + +/* saved to reset */ +static Bool orig_do_labels, orig_do_atoms, orig_do_bonds, orig_do_shells, + orig_wire; + + +static XrmOptionDescRec opts[] = { + { "-molecule", ".molecule", XrmoptionSepArg, 0 }, + { "-timeout", ".timeout", XrmoptionSepArg, 0 }, + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-labels", ".labels", XrmoptionNoArg, "True" }, + { "+labels", ".labels", XrmoptionNoArg, "False" }, + { "-titles", ".titles", XrmoptionNoArg, "True" }, + { "+titles", ".titles", XrmoptionNoArg, "False" }, + { "-atoms", ".atoms", XrmoptionNoArg, "True" }, + { "+atoms", ".atoms", XrmoptionNoArg, "False" }, + { "-bonds", ".bonds", XrmoptionNoArg, "True" }, + { "+bonds", ".bonds", XrmoptionNoArg, "False" }, + { "-shells", ".eshells", XrmoptionNoArg, "True" }, + { "+shells", ".eshells", XrmoptionNoArg, "False" }, + { "-shell-alpha", ".shellAlpha", XrmoptionSepArg, 0 }, + { "-bbox", ".bbox", XrmoptionNoArg, "True" }, + { "+bbox", ".bbox", XrmoptionNoArg, "False" }, + { "-verbose", ".verbose", XrmoptionNoArg, "True" }, +}; + +static argtype vars[] = { + {&molecule_str, "molecule", "Molecule", DEF_MOLECULE, t_String}, + {&timeout, "timeout", "Seconds", DEF_TIMEOUT, t_Int}, + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&do_atoms, "atoms", "Atoms", DEF_ATOMS, t_Bool}, + {&do_bonds, "bonds", "Bonds", DEF_BONDS, t_Bool}, + {&do_shells, "eshells", "EShells", DEF_ESHELLS, t_Bool}, + {&do_labels, "labels", "Labels", DEF_LABELS, t_Bool}, + {&do_titles, "titles", "Titles", DEF_TITLES, t_Bool}, + {&do_bbox, "bbox", "BBox", DEF_BBOX, t_Bool}, + {&shell_alpha, "shellAlpha", "ShellAlpha", DEF_SHELL_ALPHA, t_Float}, + {&verbose_p, "verbose", "Verbose", DEF_VERBOSE, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt molecule_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + + +/* shapes */ + +static int +sphere (molecule_configuration *mc, + GLfloat x, GLfloat y, GLfloat z, GLfloat diameter, Bool wire) +{ + int stacks = (mc->low_rez_p ? SPHERE_STACKS_2 : SPHERE_STACKS); + int slices = (mc->low_rez_p ? SPHERE_SLICES_2 : SPHERE_SLICES); + + glPushMatrix (); + glTranslatef (x, y, z); + glScalef (diameter, diameter, diameter); + unit_sphere (stacks, slices, wire); + glPopMatrix (); + + return stacks * slices; +} + + +static void +load_fonts (ModeInfo *mi) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + mc->atom_font = load_texture_font (mi->dpy, "atomFont"); + mc->title_font = load_texture_font (mi->dpy, "titleFont"); +} + + +static const atom_data * +get_atom_data (const char *atom_name) +{ + int i; + const atom_data *d = 0; + char *n = strdup (atom_name); + char *n2 = n; + int L; + + while (!isalpha(*n)) n++; + L = strlen(n); + while (L > 0 && !isalpha(n[L-1])) + n[--L] = 0; + + for (i = 0; i < countof(all_atom_data); i++) + { + d = &all_atom_data[i]; + if (!strcasecmp (n, all_atom_data[i].name)) + break; + } + + free (n2); + return d; +} + + +static void +set_atom_color (ModeInfo *mi, const molecule_atom *a, + Bool font_p, GLfloat alpha) +{ + const atom_data *d; + GLfloat gl_color[4]; + + if (a) + d = a->data; + else + d = get_atom_data ("bond"); + + if (font_p) + { + gl_color[0] = d->gl_color[4]; + gl_color[1] = d->gl_color[5]; + gl_color[2] = d->gl_color[6]; + gl_color[3] = d->gl_color[7]; + } + else + { + gl_color[0] = d->gl_color[0]; + gl_color[1] = d->gl_color[1]; + gl_color[2] = d->gl_color[2]; + gl_color[3] = d->gl_color[3]; + } + + if (gl_color[3] == 0) + { + const char *string = !font_p ? d->color : d->text_color; + XColor xcolor; + if (!XParseColor (mi->dpy, mi->xgwa.colormap, string, &xcolor)) + { + fprintf (stderr, "%s: unparsable color in %s: %s\n", progname, + (a ? a->label : d->name), string); + exit (1); + } + + gl_color[0] = xcolor.red / 65536.0; + gl_color[1] = xcolor.green / 65536.0; + gl_color[2] = xcolor.blue / 65536.0; + } + + gl_color[3] = alpha; + + /* If we're not drawing atoms, and the color is black, use white instead. + This is a kludge so that H can have black text over its white ball, + but the text still shows up if balls are off. + */ + if (font_p && !do_atoms && + gl_color[0] == 0 && gl_color[1] == 0 && gl_color[2] == 0) + { + gl_color[0] = gl_color[1] = gl_color[2] = 1; + } + + if (font_p) + glColor4f (gl_color[0], gl_color[1], gl_color[2], gl_color[3]); + else + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gl_color); +} + + +static GLfloat +atom_size (const molecule_atom *a) +{ + if (do_bonds) + return a->data->size2; + else + return a->data->size; +} + + +static molecule_atom * +get_atom (molecule_atom *atoms, int natoms, int id) +{ + int i; + + /* quick short-circuit */ + if (id < natoms) + { + if (atoms[id].id == id) + return &atoms[id]; + if (id > 0 && atoms[id-1].id == id) + return &atoms[id-1]; + if (id < natoms-1 && atoms[id+1].id == id) + return &atoms[id+1]; + } + + for (i = 0; i < natoms; i++) + if (id == atoms[i].id) + return &atoms[i]; + + fprintf (stderr, "%s: no atom %d\n", progname, id); + abort(); +} + + +static void +molecule_bounding_box (ModeInfo *mi, + GLfloat *x1, GLfloat *y1, GLfloat *z1, + GLfloat *x2, GLfloat *y2, GLfloat *z2) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + molecule *m = &mc->molecules[mc->which]; + int i; + + if (m->natoms == 0) + { + *x1 = *y1 = *z1 = *x2 = *y2 = *z2 = 0; + } + else + { + *x1 = *x2 = m->atoms[0].x; + *y1 = *y2 = m->atoms[0].y; + *z1 = *z2 = m->atoms[0].z; + } + + for (i = 1; i < m->natoms; i++) + { + if (m->atoms[i].x < *x1) *x1 = m->atoms[i].x; + if (m->atoms[i].y < *y1) *y1 = m->atoms[i].y; + if (m->atoms[i].z < *z1) *z1 = m->atoms[i].z; + + if (m->atoms[i].x > *x2) *x2 = m->atoms[i].x; + if (m->atoms[i].y > *y2) *y2 = m->atoms[i].y; + if (m->atoms[i].z > *z2) *z2 = m->atoms[i].z; + } + + *x1 -= 1.5; + *y1 -= 1.5; + *z1 -= 1.5; + *x2 += 1.5; + *y2 += 1.5; + *z2 += 1.5; +} + + +static void +draw_bounding_box (ModeInfo *mi) +{ + static const GLfloat c1[4] = { 0.2, 0.2, 0.4, 1.0 }; + static const GLfloat c2[4] = { 1.0, 0.0, 0.0, 1.0 }; + int wire = MI_IS_WIREFRAME(mi); + GLfloat x1, y1, z1, x2, y2, z2; + molecule_bounding_box (mi, &x1, &y1, &z1, &x2, &y2, &z2); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, c1); + glFrontFace(GL_CCW); + + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, 1, 0); + glVertex3f(x1, y1, z1); glVertex3f(x1, y1, z2); + glVertex3f(x2, y1, z2); glVertex3f(x2, y1, z1); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, -1, 0); + glVertex3f(x2, y2, z1); glVertex3f(x2, y2, z2); + glVertex3f(x1, y2, z2); glVertex3f(x1, y2, z1); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, 0, 1); + glVertex3f(x1, y1, z1); glVertex3f(x2, y1, z1); + glVertex3f(x2, y2, z1); glVertex3f(x1, y2, z1); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, 0, -1); + glVertex3f(x1, y2, z2); glVertex3f(x2, y2, z2); + glVertex3f(x2, y1, z2); glVertex3f(x1, y1, z2); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(1, 0, 0); + glVertex3f(x1, y2, z1); glVertex3f(x1, y2, z2); + glVertex3f(x1, y1, z2); glVertex3f(x1, y1, z1); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(-1, 0, 0); + glVertex3f(x2, y1, z1); glVertex3f(x2, y1, z2); + glVertex3f(x2, y2, z2); glVertex3f(x2, y2, z1); + glEnd(); + + glDisable (GL_LIGHTING); + + glColor3f (c2[0], c2[1], c2[2]); + glBegin(GL_LINES); + if (x1 > 0) x1 = 0; + if (x2 < 0) x2 = 0; + if (y1 > 0) y1 = 0; + if (y2 < 0) y2 = 0; + if (z1 > 0) z1 = 0; + if (z2 < 0) z2 = 0; + glVertex3f(x1, 0, 0); glVertex3f(x2, 0, 0); + glVertex3f(0 , y1, 0); glVertex3f(0, y2, 0); + glVertex3f(0, 0, z1); glVertex3f(0, 0, z2); + glEnd(); + + if (!wire) + glEnable (GL_LIGHTING); +} + + +/* Since PDB files don't always have the molecule centered around the + origin, and since some molecules are pretty large, scale and/or + translate so that the whole molecule is visible in the window. + */ +static void +ensure_bounding_box_visible (ModeInfo *mi) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + + GLfloat x1, y1, z1, x2, y2, z2; + GLfloat w, h, d; + GLfloat size; + GLfloat max_size = 10; /* don't bother scaling down if the molecule + is already smaller than this */ + + molecule_bounding_box (mi, &x1, &y1, &z1, &x2, &y2, &z2); + w = x2-x1; + h = y2-y1; + d = z2-z1; + + size = (w > h ? w : h); + size = (size > d ? size : d); + + mc->molecule_size = size; + + mc->low_rez_p = 0; + mc->overall_scale = 1; + + if (size > max_size) + { + mc->overall_scale = max_size / size; + glScalef (mc->overall_scale, mc->overall_scale, mc->overall_scale); + + mc->low_rez_p = mc->overall_scale < 0.3; + } + + glTranslatef (-(x1 + w/2), + -(y1 + h/2), + -(z1 + d/2)); +} + + + +/* Constructs the GL shapes of the current molecule + */ +static void +build_molecule (ModeInfo *mi, Bool transparent_p) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int i; + GLfloat alpha = transparent_p ? shell_alpha : 1.0; + int polys = 0; + + molecule *m = &mc->molecules[mc->which]; + + if (wire) + { + glDisable(GL_CULL_FACE); + glDisable(GL_LIGHTING); + glDisable(GL_LIGHT0); + glDisable(GL_DEPTH_TEST); + glDisable(GL_NORMALIZE); + glDisable(GL_CULL_FACE); + } + else + { + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + } + + if (!wire) + set_atom_color (mi, 0, False, alpha); + + if (do_bonds) + for (i = 0; i < m->nbonds; i++) + { + const molecule_bond *b = &m->bonds[i]; + const molecule_atom *from = get_atom (m->atoms, m->natoms, b->from); + const molecule_atom *to = get_atom (m->atoms, m->natoms, b->to); + + if (wire) + { + glBegin(GL_LINES); + glVertex3f(from->x, from->y, from->z); + glVertex3f(to->x, to->y, to->z); + glEnd(); + polys++; + } + else + { + int faces = (mc->low_rez_p ? TUBE_FACES_2 : TUBE_FACES); +# ifdef SMOOTH_TUBE + int smooth = True; +# else + int smooth = False; +# endif + Bool cap_p = (!do_atoms || do_shells); + GLfloat base = 0.07; + GLfloat thickness = base * b->strength; + GLfloat cap_size = (cap_p ? base / 2 : 0); + if (thickness > 0.3) + thickness = 0.3; + + polys += tube (from->x, from->y, from->z, + to->x, to->y, to->z, + thickness, cap_size, + faces, smooth, cap_p, wire); + } + } + + if (!wire && do_atoms) + for (i = 0; i < m->natoms; i++) + { + const molecule_atom *a = &m->atoms[i]; + GLfloat size = atom_size (a); + set_atom_color (mi, a, False, alpha); + polys += sphere (mc, a->x, a->y, a->z, size, wire); + } + + if (do_bbox && !transparent_p) + { + draw_bounding_box (mi); + polys += 4; + } + + mc->polygon_count += polys; +} + + + +/* loading */ + +static void +push_atom (molecule *m, + int id, const char *label, + GLfloat x, GLfloat y, GLfloat z) +{ + m->natoms++; + if (m->atoms_size < m->natoms) + { + m->atoms_size += 20; + m->atoms = (molecule_atom *) realloc (m->atoms, + m->atoms_size * sizeof(*m->atoms)); + } + m->atoms[m->natoms-1].id = id; + m->atoms[m->natoms-1].label = label; + m->atoms[m->natoms-1].x = x; + m->atoms[m->natoms-1].y = y; + m->atoms[m->natoms-1].z = z; + m->atoms[m->natoms-1].data = get_atom_data (label); +} + + +static void +push_bond (molecule *m, int from, int to) +{ + int i; + + for (i = 0; i < m->nbonds; i++) + if ((m->bonds[i].from == from && m->bonds[i].to == to) || + (m->bonds[i].to == from && m->bonds[i].from == to)) + { + m->bonds[i].strength++; + return; + } + + m->nbonds++; + if (m->bonds_size < m->nbonds) + { + m->bonds_size += 20; + m->bonds = (molecule_bond *) realloc (m->bonds, + m->bonds_size * sizeof(*m->bonds)); + } + m->bonds[m->nbonds-1].from = from; + m->bonds[m->nbonds-1].to = to; + m->bonds[m->nbonds-1].strength = 1; +} + + +static void +parse_error (const char *file, int lineno, const char *line) +{ + fprintf (stderr, "%s: %s: parse error, line %d: %s\n", + progname, file, lineno, line); + exit (1); +} + + +/* This function is crap. + */ +static void +parse_pdb_data (molecule *m, const char *data, const char *filename, int line) +{ + const char *s = data; + char *ss; + while (*s) + { + if ((!m->label || !*m->label) && + (!strncmp (s, "HEADER", 6) || !strncmp (s, "COMPND", 6))) + { + char *name = calloc (1, 100); + char *n2 = name; + int L = strlen(s); + if (L > 99) L = 99; + + strncpy (n2, s, L); + n2 += 7; + while (isspace(*n2)) n2++; + + ss = strchr (n2, '\n'); + if (ss) *ss = 0; + ss = strchr (n2, '\r'); + if (ss) *ss = 0; + + ss = n2+strlen(n2)-1; + while (isspace(*ss) && ss > n2) + *ss-- = 0; + + if (strlen (n2) > 4 && + !strcmp (n2 + strlen(n2) - 4, ".pdb")) + n2[strlen(n2)-4] = 0; + + if (m->label) free ((char *) m->label); + m->label = strdup (n2); + free (name); + } + else if (!strncmp (s, "TITLE ", 6) || + !strncmp (s, "HEADER", 6) || + !strncmp (s, "COMPND", 6) || + !strncmp (s, "AUTHOR", 6) || + !strncmp (s, "REVDAT", 6) || + !strncmp (s, "SOURCE", 6) || + !strncmp (s, "EXPDTA", 6) || + !strncmp (s, "JRNL ", 6) || + !strncmp (s, "REMARK", 6) || + !strncmp (s, "SEQRES", 6) || + !strncmp (s, "HET ", 6) || + !strncmp (s, "FORMUL", 6) || + !strncmp (s, "CRYST1", 6) || + !strncmp (s, "ORIGX1", 6) || + !strncmp (s, "ORIGX2", 6) || + !strncmp (s, "ORIGX3", 6) || + !strncmp (s, "SCALE1", 6) || + !strncmp (s, "SCALE2", 6) || + !strncmp (s, "SCALE3", 6) || + !strncmp (s, "MASTER", 6) || + !strncmp (s, "KEYWDS", 6) || + !strncmp (s, "DBREF ", 6) || + !strncmp (s, "HETNAM", 6) || + !strncmp (s, "HETSYN", 6) || + !strncmp (s, "HELIX ", 6) || + !strncmp (s, "LINK ", 6) || + !strncmp (s, "MTRIX1", 6) || + !strncmp (s, "MTRIX2", 6) || + !strncmp (s, "MTRIX3", 6) || + !strncmp (s, "SHEET ", 6) || + !strncmp (s, "CISPEP", 6) || +/* + !strncmp (s, "SEQADV", 6) || + !strncmp (s, "SITE ", 5) || + !strncmp (s, "FTNOTE", 6) || + !strncmp (s, "MODEL ", 5) || + !strncmp (s, "ENDMDL", 6) || + !strncmp (s, "SPRSDE", 6) || + !strncmp (s, "MODRES", 6) || + */ + !strncmp (s, "GENERATED BY", 12) || + !strncmp (s, "TER ", 4) || + !strncmp (s, "END ", 4) || + !strncmp (s, "TER\n", 4) || + !strncmp (s, "END\n", 4) || + !strncmp (s, "\n", 1)) + /* ignored. */ + ; + else if (!strncmp (s, "ATOM ", 7)) + { + int id; + const char *end = strchr (s, '\n'); + int L = end - s; + char *name = (char *) calloc (1, 4); + GLfloat x = -999, y = -999, z = -999; + + if (1 != sscanf (s+7, " %d ", &id)) + parse_error (filename, line, s); + + /* Use the "atom name" field if that is all that is available. */ + strncpy (name, s+12, 3); + + /* But prefer the "element" field. */ + if (L > 77 && !isspace(s[77])) { + /* fprintf(stderr, " \"%s\" -> ", name); */ + name[0] = s[76]; + name[1] = s[77]; + name[2] = 0; + /* fprintf(stderr, "\"%s\"\n", name); */ + } + + while (isspace(*name)) name++; + ss = name + strlen(name)-1; + while (isspace(*ss) && ss > name) + *ss-- = 0; + ss = name + 1; + while(*ss) + { + *ss = tolower(*ss); + ss++; + } + if (3 != sscanf (s + 32, " %f %f %f ", &x, &y, &z)) + parse_error (filename, line, s); + +/* + fprintf (stderr, "%s: %s: %d: atom: %d \"%s\" %9.4f %9.4f %9.4f\n", + progname, filename, line, + id, name, x, y, z); +*/ + push_atom (m, id, name, x, y, z); + } + else if (!strncmp (s, "HETATM ", 7)) + { + int id; + char *name = (char *) calloc (1, 4); + GLfloat x = -999, y = -999, z = -999; + + if (1 != sscanf (s+7, " %d ", &id)) + parse_error (filename, line, s); + + strncpy (name, s+12, 3); + while (isspace(*name)) name++; + ss = name + strlen(name)-1; + while (isspace(*ss) && ss > name) + *ss-- = 0; + if (3 != sscanf (s + 30, " %f %f %f ", &x, &y, &z)) + parse_error (filename, line, s); +/* + fprintf (stderr, "%s: %s: %d: atom: %d \"%s\" %9.4f %9.4f %9.4f\n", + progname, filename, line, + id, name, x, y, z); +*/ + push_atom (m, id, name, x, y, z); + } + else if (!strncmp (s, "CONECT ", 7)) + { + int atoms[11]; + int i = sscanf (s + 8, " %d %d %d %d %d %d %d %d %d %d %d %d ", + &atoms[0], &atoms[1], &atoms[2], &atoms[3], + &atoms[4], &atoms[5], &atoms[6], &atoms[7], + &atoms[8], &atoms[9], &atoms[10], &atoms[11]); + int j; + for (j = 1; j < i; j++) + if (atoms[j] > 0) + { +/* + fprintf (stderr, "%s: %s: %d: bond: %d %d\n", + progname, filename, line, atoms[0], atoms[j]); +*/ + push_bond (m, atoms[0], atoms[j]); + } + } + else + { + char *s1 = strdup (s); + for (ss = s1; *ss && *ss != '\n'; ss++) + ; + *ss = 0; + fprintf (stderr, "%s: %s: %d: unrecognised line: %s\n", + progname, filename, line, s1); + } + + while (*s && *s != '\n') + s++; + if (*s == '\n') + s++; + line++; + } +} + + +#ifdef LOAD_FILES +static int +parse_pdb_file (molecule *m, const char *name) +{ + FILE *in; + int buf_size = 40960; + char *buf; + int line = 1; + + in = fopen(name, "r"); + if (!in) + { + char *buf = (char *) malloc(1024 + strlen(name)); + sprintf(buf, "%s: error reading \"%s\"", progname, name); + perror(buf); + return -1; + } + + buf = (char *) malloc (buf_size); + + while (fgets (buf, buf_size-1, in)) + { + char *s; + for (s = buf; *s; s++) + if (*s == '\r') *s = '\n'; + parse_pdb_data (m, buf, name, line++); + } + + free (buf); + fclose (in); + + if (!m->natoms) + { + fprintf (stderr, "%s: file %s contains no atomic coordinates!\n", + progname, name); + return -1; + } + + if (!m->nbonds && do_bonds) + { + fprintf (stderr, "%s: warning: file %s contains no atomic bond info.\n", + progname, name); + do_bonds = 0; + } + + return 0; +} +#endif /* LOAD_FILES */ + + +typedef struct { char *atom; int count; } atom_and_count; + +/* When listing the components of a molecule, the convention is to put the + carbon atoms first, the hydrogen atoms second, and the other atom types + sorted alphabetically after that (although for some molecules, the usual + order is different: we special-case a few of those.) + */ +static int +cmp_atoms (const void *aa, const void *bb) +{ + const atom_and_count *a = (atom_and_count *) aa; + const atom_and_count *b = (atom_and_count *) bb; + if (!a->atom) return 1; + if (!b->atom) return -1; + if (!strcmp(a->atom, "C")) return -1; + if (!strcmp(b->atom, "C")) return 1; + if (!strcmp(a->atom, "H")) return -1; + if (!strcmp(b->atom, "H")) return 1; + return strcmp (a->atom, b->atom); +} + +static void special_case_formula (char *f); + +static void +generate_molecule_formula (molecule *m) +{ + char *buf = (char *) malloc (m->natoms * 10); + char *s = buf; + int i; + atom_and_count counts[200]; + memset (counts, 0, sizeof(counts)); + *s = 0; + for (i = 0; i < m->natoms; i++) + { + int j = 0; + char *a = (char *) m->atoms[i].label; + char *e; + while (!isalpha(*a)) a++; + a = strdup (a); + for (e = a; isalpha(*e); e++); + *e = 0; + while (counts[j].atom && !!strcmp(a, counts[j].atom)) + j++; + if (counts[j].atom) + free (a); + else + counts[j].atom = a; + counts[j].count++; + } + + i = 0; + while (counts[i].atom) i++; + qsort (counts, i, sizeof(*counts), cmp_atoms); + + i = 0; + while (counts[i].atom) + { + strcat (s, counts[i].atom); + free (counts[i].atom); + s += strlen (s); + if (counts[i].count > 1) + sprintf (s, "[%d]", counts[i].count); /* use [] to get subscripts */ + s += strlen (s); + i++; + } + + special_case_formula (buf); + + if (!m->label) m->label = strdup(""); + s = (char *) malloc (strlen (m->label) + strlen (buf) + 2); + strcpy (s, m->label); + strcat (s, "\n"); + strcat (s, buf); + free ((char *) m->label); + free (buf); + m->label = s; +} + +/* thanks to Rene Uittenbogaard */ +static void +special_case_formula (char *f) +{ + if (!strcmp(f, "H[2]Be")) strcpy(f, "BeH[2]"); + else if (!strcmp(f, "H[3]B")) strcpy(f, "BH[3]"); + else if (!strcmp(f, "H[3]N")) strcpy(f, "NH[3]"); + else if (!strcmp(f, "CHN")) strcpy(f, "HCN"); + else if (!strcmp(f, "CKN")) strcpy(f, "KCN"); + else if (!strcmp(f, "H[4]N[2]")) strcpy(f, "N[2]H[4]"); + else if (!strcmp(f, "Cl[3]P")) strcpy(f, "PCl[3]"); + else if (!strcmp(f, "Cl[5]P")) strcpy(f, "PCl[5]"); +} + + +static void +insert_vertical_whitespace (char *string) +{ + while (*string) + { + if ((string[0] == ',' || + string[0] == ';' || + string[0] == ':') && + string[1] == ' ') + string[0] = ' ', string[1] = '\n'; + string++; + } +} + + +/* Construct the molecule data from either: the builtins; or from + the (one) .pdb file specified with -molecule. + */ +static void +load_molecules (ModeInfo *mi) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + int i; + + mc->nmolecules = 0; +# ifdef LOAD_FILES + if (molecule_str && *molecule_str && + strcmp(molecule_str, "(default)")) /* try external PDB files */ + { + /* The -molecule option can point to a .pdb file, or to + a directory of them. + */ + int wire = MI_IS_WIREFRAME(mi); + struct stat st; + int nfiles = 0; + int list_size = 0; + char **files = 0; + int molecule_ctr; + + if (!stat (molecule_str, &st) && + S_ISDIR (st.st_mode)) + { + char buf [255]; + DIR *pdb_dir; + struct dirent *dentry; + + pdb_dir = opendir (molecule_str); + if (! pdb_dir) + { + sprintf (buf, "%.100s: %.100s", progname, molecule_str); + perror (buf); + exit (1); + } + + if (verbose_p) + fprintf (stderr, "%s: directory %s\n", progname, molecule_str); + + nfiles = 0; + list_size = 100; + files = (char **) calloc (sizeof(*files), list_size); + + while ((dentry = readdir (pdb_dir))) + { + int L = strlen (dentry->d_name); + if (L > 4 && !strcasecmp (dentry->d_name + L - 4, ".pdb")) + { + char *fn; + if (nfiles >= list_size-1) + { + list_size = (list_size + 10) * 1.2; + files = (char **) + realloc (files, list_size * sizeof(*files)); + if (!files) + { + OOM: + fprintf (stderr, "%s: out of memory (%d files)\n", + progname, nfiles); + exit (1); + } + } + + fn = (char *) malloc (strlen (molecule_str) + L + 10); + if (!fn) goto OOM; + strcpy (fn, molecule_str); + if (fn[strlen(fn)-1] != '/') strcat (fn, "/"); + strcat (fn, dentry->d_name); + files[nfiles++] = fn; + if (verbose_p) + fprintf (stderr, "%s: file %s\n", progname, fn); + } + } + closedir (pdb_dir); + + if (nfiles == 0) + fprintf (stderr, "%s: no .pdb files in directory %s\n", + progname, molecule_str); + } + else + { + files = (char **) malloc (sizeof (*files)); + nfiles = 1; + files[0] = strdup (molecule_str); + if (verbose_p) + fprintf (stderr, "%s: file %s\n", progname, molecule_str); + } + + mc->nmolecules = nfiles; + mc->molecules = (molecule *) calloc (sizeof (molecule), mc->nmolecules); + molecule_ctr = 0; + for (i = 0; i < mc->nmolecules; i++) + { + if (verbose_p) + fprintf (stderr, "%s: reading %s\n", progname, files[i]); + if (!parse_pdb_file (&mc->molecules[molecule_ctr], files[i])) + { + if ((wire || !do_atoms) && + !do_labels && + mc->molecules[molecule_ctr].nbonds == 0) + { + /* If we're not drawing atoms (e.g., wireframe mode), and + there is no bond info, then make sure labels are turned + on, or we'll be looking at a black screen... */ + fprintf (stderr, "%s: %s: no bonds: turning -label on.\n", + progname, files[i]); + do_labels = 1; + } + free (files[i]); + files[i] = 0; + molecule_ctr++; + } + } + + free (files); + files = 0; + mc->nmolecules = molecule_ctr; + } +# endif /* LOAD_FILES */ + + if (mc->nmolecules == 0) /* do the builtins if no files */ + { + mc->nmolecules = countof(builtin_pdb_data); + mc->molecules = (molecule *) calloc (sizeof (molecule), mc->nmolecules); + for (i = 0; i < mc->nmolecules; i++) + { + char name[100]; + sprintf (name, "", i); + if (verbose_p) fprintf (stderr, "%s: reading %s\n", progname, name); + parse_pdb_data (&mc->molecules[i], builtin_pdb_data[i], name, 1); + } + } + + for (i = 0; i < mc->nmolecules; i++) + { + generate_molecule_formula (&mc->molecules[i]); + insert_vertical_whitespace ((char *) mc->molecules[i].label); + } +} + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_molecule (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 20.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +gl_init (ModeInfo *mi) +{ + static const GLfloat pos[4] = {1.0, 0.4, 0.9, 0.0}; + static const GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + static const GLfloat dif[4] = {0.8, 0.8, 0.8, 1.0}; + static const GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); +} + + +static void +startup_blurb (ModeInfo *mi) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + const char *s = "Constructing molecules..."; + print_texture_label (mi->dpy, mc->title_font, + mi->xgwa.width, mi->xgwa.height, + 0, s); + glFinish(); + glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi)); +} + +ENTRYPOINT Bool +molecule_handle_event (ModeInfo *mi, XEvent *event) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, mc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &mc->button_down_p)) + return True; + else + { + if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == '<' || c == ',' || c == '-' || c == '_' || + keysym == XK_Left || keysym == XK_Up || keysym == XK_Prior) + { + mc->next = -1; + goto SWITCH; + } + else if (c == '>' || c == '.' || c == '=' || c == '+' || + keysym == XK_Right || keysym == XK_Down || + keysym == XK_Next) + { + mc->next = 1; + goto SWITCH; + } + } + + if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + SWITCH: + mc->mode = 1; + mc->mode_tick = 4; + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_molecule (ModeInfo *mi) +{ + molecule_configuration *mc; + int wire; + + MI_INIT (mi, mcs); + + mc = &mcs[MI_SCREEN(mi)]; + + if ((mc->glx_context = init_GL(mi)) != NULL) { + gl_init(mi); + reshape_molecule (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + load_fonts (mi); + startup_blurb (mi); + + wire = MI_IS_WIREFRAME(mi); + + { + Bool spinx=False, spiny=False, spinz=False; + double spin_speed = 0.5; + double spin_accel = 0.3; + double wander_speed = 0.01; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') spinx = True; + else if (*s == 'y' || *s == 'Y') spiny = True; + else if (*s == 'z' || *s == 'Z') spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + mc->rot = make_rotator (spinx ? spin_speed : 0, + spiny ? spin_speed : 0, + spinz ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + (spinx && spiny && spinz)); + mc->trackball = gltrackball_init (True); + } + + orig_do_labels = do_labels; + orig_do_atoms = do_atoms; + orig_do_bonds = do_bonds; + orig_do_shells = do_shells; + orig_wire = MI_IS_WIREFRAME(mi); + + mc->molecule_dlist = glGenLists(1); + if (do_shells) + mc->shell_dlist = glGenLists(1); + + load_molecules (mi); + mc->which = random() % mc->nmolecules; + + mc->no_label_threshold = get_float_resource (mi->dpy, "noLabelThreshold", + "NoLabelThreshold"); + mc->wireframe_threshold = get_float_resource (mi->dpy, "wireframeThreshold", + "WireframeThreshold"); + mc->mode = 0; + + if (wire) + do_bonds = 1; +} + + +/* Put the labels on the atoms. + This can't be a part of the display list because of the games + we play with the translation matrix. + */ +static void +draw_labels (ModeInfo *mi) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + molecule *m = &mc->molecules[mc->which]; + int i; + + if (!do_labels) + return; + + for (i = 0; i < m->natoms; i++) + { + molecule_atom *a = &m->atoms[i]; + GLfloat size = atom_size (a); + GLfloat m[4][4]; + + glPushMatrix(); + + if (!wire) + set_atom_color (mi, a, True, 1); + + /* First, we translate the origin to the center of the atom. + + Then we retrieve the prevailing modelview matrix, which + includes any rotation, wandering, and user-trackball-rolling + of the scene. + + We set the top 3x3 cells of that matrix to be the identity + matrix. This removes all rotation from the matrix, while + leaving the translation alone. This has the effect of + leaving the prevailing coordinate system perpendicular to + the camera view: were we to draw a square face, it would + be in the plane of the screen. + + Now we translate by `size' toward the viewer -- so that the + origin is *just in front* of the ball. + + Then we draw the label text, allowing the depth buffer to + do its work: that way, labels on atoms will be occluded + properly when other atoms move in front of them. + + This technique (of neutralizing rotation relative to the + observer, after both rotations and translations have been + applied) is known as "billboarding". + */ + + glTranslatef(a->x, a->y, a->z); /* get matrix */ + glGetFloatv (GL_MODELVIEW_MATRIX, &m[0][0]); /* load rot. identity */ + m[0][0] = 1; m[1][0] = 0; m[2][0] = 0; + m[0][1] = 0; m[1][1] = 1; m[2][1] = 0; + m[0][2] = 0; m[1][2] = 0; m[2][2] = 1; + glLoadIdentity(); /* reset modelview */ + glMultMatrixf (&m[0][0]); /* replace with ours */ + + glTranslatef (0, 0, (size * 1.1)); /* move toward camera */ + + glRotatef (current_device_rotation(), 0, 0, 1); /* right side up */ + + { + XCharStruct e; + int w, h; + GLfloat s; + + texture_string_metrics (mc->atom_font, a->label, &e, 0, 0); + w = e.width; + h = e.ascent + e.descent; + + s = 1.0 / h; /* Scale to unit */ + s *= mc->overall_scale; /* Scale to size of atom */ + s *= 0.8; /* Shrink a bit */ + glScalef (s, s, 1); + glTranslatef (-w/2, -h/2, 0); + print_texture_string (mc->atom_font, a->label); + } + + glPopMatrix(); + } +} + + +static void +pick_new_molecule (ModeInfo *mi, time_t last) +{ + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + + if (mc->nmolecules == 1) + { + if (last != 0) return; + mc->which = 0; + } + else if (last == 0) + { + mc->which = random() % mc->nmolecules; + } + else if (mc->next < 0) + { + mc->which--; + if (mc->which < 0) mc->which = mc->nmolecules-1; + mc->next = 0; + } + else if (mc->next > 0) + { + mc->which++; + if (mc->which >= mc->nmolecules) mc->which = 0; + mc->next = 0; + } + else + { + int n = mc->which; + while (n == mc->which) + n = random() % mc->nmolecules; + mc->which = n; + } + + if (verbose_p) + { + char *name = strdup (mc->molecules[mc->which].label); + char *s = strpbrk (name, "\r\n"); + if (s) *s = 0; + fprintf (stderr, "%s: drawing %s (%d)\n", progname, name, mc->which); + free (name); + } + + mc->polygon_count = 0; + + glNewList (mc->molecule_dlist, GL_COMPILE); + ensure_bounding_box_visible (mi); + + do_labels = orig_do_labels; + do_atoms = orig_do_atoms; + do_bonds = orig_do_bonds; + do_shells = orig_do_shells; + MI_IS_WIREFRAME(mi) = orig_wire; + + if (mc->molecule_size > mc->no_label_threshold) + do_labels = 0; + if (mc->molecule_size > mc->wireframe_threshold) + MI_IS_WIREFRAME(mi) = 1; + + if (MI_IS_WIREFRAME(mi)) + do_bonds = 1, do_shells = 0; + + if (!do_bonds) + do_shells = 0; + + if (! (do_bonds || do_atoms || do_labels)) + { + /* Make sure *something* shows up! */ + MI_IS_WIREFRAME(mi) = 1; + do_bonds = 1; + } + + build_molecule (mi, False); + glEndList(); + + if (do_shells) + { + glNewList (mc->shell_dlist, GL_COMPILE); + ensure_bounding_box_visible (mi); + + do_labels = 0; + do_atoms = 1; + do_bonds = 0; + + build_molecule (mi, True); + + glEndList(); + do_bonds = orig_do_bonds; + do_atoms = orig_do_atoms; + do_labels = orig_do_labels; + } +} + + +ENTRYPOINT void +draw_molecule (ModeInfo *mi) +{ + time_t now = time ((time_t *) 0); + GLfloat speed = 4.0; /* speed at which the zoom out/in happens */ + + molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!mc->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mc->glx_context)); + + if (mc->draw_time == 0) + { + pick_new_molecule (mi, mc->draw_time); + mc->draw_time = now; + } + else if (mc->mode == 0) + { + if (mc->draw_tick++ > 10) + { + time_t now = time((time_t *) 0); + if (mc->draw_time == 0) mc->draw_time = now; + mc->draw_tick = 0; + + if (!mc->button_down_p && + mc->nmolecules > 1 && + mc->draw_time + timeout <= now) + { + /* randomize molecules every -timeout seconds */ + mc->mode = 1; /* go out */ + mc->mode_tick = 80 / speed; + mc->draw_time = now; + } + } + } + else if (mc->mode == 1) /* out */ + { + if (--mc->mode_tick <= 0) + { + mc->mode_tick = 80 / speed; + mc->mode = 2; /* go in */ + pick_new_molecule (mi, mc->draw_time); + } + } + else if (mc->mode == 2) /* in */ + { + if (--mc->mode_tick <= 0) + mc->mode = 0; /* normal */ + } + else + abort(); + + glPushMatrix (); + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z; + get_position (mc->rot, &x, &y, &z, !mc->button_down_p); + glTranslatef((x - 0.5) * 9, + (y - 0.5) * 9, + (z - 0.5) * 9); + + gltrackball_rotate (mc->trackball); + + get_rotation (mc->rot, &x, &y, &z, !mc->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (mc->mode != 0) + { + GLfloat s = (mc->mode == 1 + ? mc->mode_tick / (80 / speed) + : ((80 / speed) - mc->mode_tick + 1) / (80 / speed)); + glScalef (s, s, s); + } + + glPushMatrix(); + glCallList (mc->molecule_dlist); + + if (mc->mode == 0) + { + molecule *m = &mc->molecules[mc->which]; + + draw_labels (mi); + + /* This can't go in the display list, or the characters are spaced + wrongly when the window is resized. */ + if (do_titles && m->label && *m->label) + { + set_atom_color (mi, 0, True, 1); + print_texture_label (mi->dpy, mc->title_font, + mi->xgwa.width, mi->xgwa.height, + 1, m->label); + } + } + glPopMatrix(); + + if (do_shells) + { + glColorMask (GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + glPushMatrix(); + glCallList (mc->shell_dlist); + glPopMatrix(); + glColorMask (GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + + glDepthFunc (GL_EQUAL); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glPushMatrix(); + glCallList (mc->shell_dlist); + glPopMatrix(); + glDepthFunc (GL_LESS); + glDisable (GL_BLEND); + } + + glPopMatrix (); + + mi->polygon_count = mc->polygon_count; + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Molecule", molecule) + +#endif /* USE_GL */ diff --git a/hacks/glx/molecule.man b/hacks/glx/molecule.man new file mode 100644 index 0000000..6ec8328 --- /dev/null +++ b/hacks/glx/molecule.man @@ -0,0 +1,160 @@ +.TH XScreenSaver 1 "13-Mar-01" "X Version 11" +.SH NAME +molecule - draws 3D molecular structures +.SH SYNOPSIS +.B molecule +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] +[\-wander] [\-no-wander] +[\-spin \fIaxes\fP] +[\-no-spin] +[\-timeout \fIseconds\fP] +[\-labels] [\-no-labels] +[\-titles] [\-no-titles] +[\-atoms] [\-no-atoms] +[\-bonds] [\-no-bonds] +[\-shells] [\-no-shells] +[\-molecule \fIfile-or-directory\fP] +[\-verbose] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fImolecule\fP program draws several different representations of +molecules. Some common molecules are built in, and it can read PDB +(Protein Data Base) files as input. +.SH OPTIONS +.I molecule +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-verbose +Print debugging info on stderr about files being loaded, etc. +.TP 8 +.B \-wander +Move the molecules around the screen. +.TP 8 +.B \-no\-wander +Keep the molecule centered on the screen. This is the default. +.TP 8 +.B \-spin +Which axes around which the molecule should spin. The default is "XYZ", +meaning rotate it freely in space. "\fB\-spin Z\fP" would rotate the +molecule in the plane of the screen while not rotating it into or out +of the screen; etc. +.TP 8 +.B \-no\-spin +Don't spin it at all: the same as \fB\-spin ""\fP. +.TP 8 +.B \-labels +Draw labels on the atoms (or the spot where the atoms would be.) +This is the default. +.TP 8 +.B \-no\-labels +Do not draw labels on the atoms. +.TP 8 +.B \-titles +Print the name of the molecule and its chemical formula at the top of +the screen. +.TP 8 +.B \-no\-titles +Do not print the molecule name. +.TP 8 +.B \-atoms +Represent the atoms as shaded spheres of appropriate sizes. +This is the default. +.TP 8 +.B \-no\-atoms +Do not draw spheres for the atoms: only draw bond lines. +.TP 8 +.B \-bonds +Represent the atomic bonds as solid tubes of appropriate thicknesses. +This is the default. +.TP 8 +.B \-no\-bonds +Do not draw the bonds: instead, make the spheres for the atoms be +larger, for a "space-filling" representation of the molecule. +.TP 8 +.B \-shells +Draw transparent electron shells around the atoms. This only works +if bonds are also being drawn. +.TP 8 +.B \-no\-shells +Do not draw electron shells. This is the default. +.TP 8 +.B \-shell\-alpha +When drawing shells, how transparent to make them. Default 0.4. +.TP 8 +.B \-wireframe +Draw a wireframe rendition of the molecule: this will consist only of +single-pixel lines for the bonds, and text labels where the atoms go. +This will be very fast. +.TP 8 +.B \-timeout \fIseconds\fP +When using the built-in data set, change to a new molecule every +this-many seconds. Default is 20 seconds. +.TP 8 +.B \-molecule \fIfile-or-directory\fP +Instead of using the built-in molecules, read one from the given file. +This file must be in PDB (Protein Data Base) format. (Note that it's +not uncommon for PDB files to contain only the atoms, with no (or +little) information about the atomic bonds.) + +This can also be a directory, in which case, all of the .pdb files in +that directory will be loaded. A new one will be displayed at random +every few seconds (as per the \fI\-timeout\fP option.) +.PP +When the molecule is too large (bigger than about 30 angstroms from +side to side), the \fI\-label\fP option will be automatically turned +off, because otherwise, the labels would overlap and completely obscure +the display. + +When the molecule is around 150 angstroms from side to side, wireframe +mode will be turned on (because otherwise it would be too slow.) +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.PP +Documentation on the PDB file format: + + http://www.wwpdb.org/docs.html + http://www.rcsb.org/pdb/docs/format/pdbguide2.2/guide2.2_frame.html + +A good source of PDB files: + + http://www.umass.edu/microbio/rasmol/whereget.htm + http://www.wwpdb.org/docs.html +.SH COPYRIGHT +Copyright \(co 2001-2005 by Jamie Zawinski. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +Jamie Zawinski diff --git a/hacks/glx/molecules.sh b/hacks/glx/molecules.sh new file mode 100755 index 0000000..4f417c3 --- /dev/null +++ b/hacks/glx/molecules.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +TARGET=$1 +shift +SRCS=$* + +TMP=molecules.h.$$ +rm -f $TMP +trap "rm -f $TMP" 1 2 3 15 EXIT + +if [ -z "$UTILS_SRC" ]; then UTILS_SRC="../../utils"; fi + +for f in $SRCS ; do + sh "$UTILS_SRC/ad2c" "$f" | + sed 's/",$/\\n"/' >> $TMP + echo ',' >> $TMP +done + +if cmp -s $TMP $TARGET ; then + rm $TMP +else + mv $TMP $TARGET +fi diff --git a/hacks/glx/morph3d.c b/hacks/glx/morph3d.c new file mode 100644 index 0000000..0780444 --- /dev/null +++ b/hacks/glx/morph3d.c @@ -0,0 +1,837 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* morph3d --- Shows 3D morphing objects */ + +#if 0 +static const char sccsid[] = "@(#)morph3d.c 5.01 2001/03/01 xlockmore"; +#endif + +#undef DEBUG_CULL_FACE + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Marcelo Fernandes Vianna + * (me...) and was inspired on a WindowsNT(R)'s screen saver (Flower Box). + * It was written from scratch and it was not based on any other source code. + * + * Porting it to xlock (the final objective of this code since the moment I + * decided to create it) was possible by comparing the original Mesa's gear + * demo with it's ported version to xlock, so thanks for Danny Sung (look at + * gear.c) for his indirect help. + * + * Thanks goes also to Brian Paul for making it possible and inexpensive + * to use OpenGL at home. + * + * If you are interested in the original version of this program (not a xlock + * mode, please refer to the Mesa package (ftp iris.ssec.wisc.edu on /pub/Mesa) + * + * Since I'm not a native English speaker, my apologies for any grammatical + * mistakes. + * + * My e-mail address is + * mfvianna@centroin.com.br + * + * Marcelo F. Vianna (Feb-13-1997) + * + * Revision History: + * 05-Apr-2002: Removed all gllist uses (fix some bug with nvidia driver) + * 01-Mar-2001: Added FPS stuff E.Lassauge + * 27-Jul-1997: Speed ups by Marcelo F. Vianna. + * 08-May-1997: Speed ups by Marcelo F. Vianna. + * + */ + +#ifdef STANDALONE +# define MODE_moebius +# define DEFAULTS "*delay: 40000 \n" \ + "*showFPS: False \n" \ + "*count: 0 \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_morph3d 0 +# define release_morph3d 0 +# define morph3d_handle_event xlockmore_no_events +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef MODE_moebius + +ENTRYPOINT ModeSpecOpt morph3d_opts = +{0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL}; + +#ifdef USE_MODULES +ModStruct morph3d_description = +{"morph3d", "init_morph3d", "draw_morph3d", (char *) NULL, + "draw_morph3d", "change_morph3d", (char *) NULL, &morph3d_opts, + 1000, 0, 1, 1, 4, 1.0, "", + "Shows GL morphing polyhedra", 0, NULL}; + +#endif + +#define Scale4Window 0.3 +#define Scale4Iconic 1.0 + +#define VectMul(X1,Y1,Z1,X2,Y2,Z2) (Y1)*(Z2)-(Z1)*(Y2),(Z1)*(X2)-(X1)*(Z2),(X1)*(Y2)-(Y1)*(X2) +#define sqr(A) ((A)*(A)) + +/* Increasing this values produces better image quality, the price is speed. */ +#define tetradivisions 23 +#define cubedivisions 20 +#define octadivisions 21 +#define dodecadivisions 10 +#define icodivisions 15 + +#define tetraangle 109.47122063449069174 +#define cubeangle 90.000000000000000000 +#define octaangle 109.47122063449069174 +#define dodecaangle 63.434948822922009981 +#define icoangle 41.810314895778596167 + +#ifndef Pi +#define Pi M_PI +#endif +#define SQRT2 1.4142135623730951455 +#define SQRT3 1.7320508075688771932 +#define SQRT5 2.2360679774997898051 +#define SQRT6 2.4494897427831778813 +#define SQRT15 3.8729833462074170214 +#define cossec36_2 0.8506508083520399322 +#define cos72 0.3090169943749474241 +#define sin72 0.9510565162951535721 +#define cos36 0.8090169943749474241 +#define sin36 0.5877852522924731292 + +/*************************************************************************/ + +typedef struct { + GLint WindH, WindW; + GLfloat step; + GLfloat seno; + int object; + int edgedivisions; + int VisibleSpikes; + void (*draw_object) (ModeInfo * mi); + float Magnitude; + const float *MaterialColor[20]; + GLXContext *glx_context; + int arrayninit; + +} morph3dstruct; + +static const GLfloat front_shininess[] = {60.0}; +static const GLfloat front_specular[] = {0.7, 0.7, 0.7, 1.0}; +static const GLfloat ambient[] = {0.0, 0.0, 0.0, 1.0}; +static const GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const GLfloat position0[] = {1.0, 1.0, 1.0, 0.0}; +static const GLfloat position1[] = {-1.0, -1.0, 1.0, 0.0}; +static const GLfloat lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0}; +static const GLfloat lmodel_twoside[] = {GL_TRUE}; + +static const GLfloat MaterialRed[] = {0.7, 0.0, 0.0, 1.0}; +static const GLfloat MaterialGreen[] = {0.1, 0.5, 0.2, 1.0}; +static const GLfloat MaterialBlue[] = {0.0, 0.0, 0.7, 1.0}; +static const GLfloat MaterialCyan[] = {0.2, 0.5, 0.7, 1.0}; +static const GLfloat MaterialYellow[] = {0.7, 0.7, 0.0, 1.0}; +static const GLfloat MaterialMagenta[] = {0.6, 0.2, 0.5, 1.0}; +static const GLfloat MaterialWhite[] = {0.7, 0.7, 0.7, 1.0}; +static const GLfloat MaterialGray[] = {0.5, 0.5, 0.5, 1.0}; + +static morph3dstruct *morph3d = (morph3dstruct *) NULL; + +#define TRIANGLE(Edge, Amp, Divisions, Z, VS) \ +{ \ + GLfloat Xf,Yf,Xa,Yb=0.0,Xf2=0.0,Yf2=0.0,Yf_2=0.0,Yb2,Yb_2; \ + GLfloat Factor=0.0,Factor1,Factor2; \ + GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \ + GLfloat Ax,Ay; \ + int Ri,Ti; \ + GLfloat Vr=(Edge)*SQRT3/3; \ + GLfloat AmpVr2=(Amp)/sqr(Vr); \ + GLfloat Zf=(Edge)*(Z); \ + \ + Ax=(Edge)*(+0.5/(Divisions)), Ay=(Edge)*(-SQRT3/(2*Divisions)); \ + \ + Yf=Vr+Ay; Yb=Yf+0.001; \ + for (Ri=1; Ri<=(Divisions); Ri++) { \ + glBegin(GL_TRIANGLE_STRIP); \ + Xf=(float)Ri*Ax; Xa=Xf+0.001; \ + Yf2=sqr(Yf); Yf_2=sqr(Yf-Ay); \ + Yb2=sqr(Yb); Yb_2=sqr(Yb-Ay); \ + for (Ti=0; Tipolygon_count++; \ + \ + Xf-=Ax; Yf-=Ay; Xa-=Ax; Yb-=Ay; \ + \ + Factor=1-(((Xf2=sqr(Xf))+Yf_2)*AmpVr2); \ + Factor1=1-((sqr(Xa)+Yf_2)*AmpVr2); \ + Factor2=1-((Xf2+Yb_2)*AmpVr2); \ + VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ + NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ + NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ + glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ + glVertex3f(VertX, VertY, VertZ); \ + mi->polygon_count++; \ + \ + Xf-=Ax; Yf+=Ay; Xa-=Ax; Yb+=Ay; \ + } \ + Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ + Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ + Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ + VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ + NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ + NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ + glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ + glVertex3f(VertX, VertY, VertZ); \ + Yf+=Ay; Yb+=Ay; \ + glEnd(); \ + } \ + VS=(Factor<0); \ +} + +#define SQUARE(Edge, Amp, Divisions, Z, VS) \ +{ \ + int Xi,Yi; \ + GLfloat Xf,Yf,Y,Xf2,Yf2,Y2,Xa,Xa2,Yb; \ + GLfloat Factor=0.0,Factor1,Factor2; \ + GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \ + GLfloat Zf=(Edge)*(Z); \ + GLfloat AmpVr2=(Amp)/sqr((Edge)*SQRT2/2); \ + \ + for (Yi=0; Yi<(Divisions); Yi++) { \ + Yf=-((Edge)/2.0) + ((float)Yi)/(Divisions)*(Edge); \ + Yf2=sqr(Yf); \ + Y=Yf+1.0/(Divisions)*(Edge); \ + Y2=sqr(Y); \ + glBegin(GL_QUAD_STRIP); \ + for (Xi=0; Xi<=(Divisions); Xi++) { \ + Xf=-((Edge)/2.0) + ((float)Xi)/(Divisions)*(Edge); \ + Xf2=sqr(Xf); \ + \ + Xa=Xf+0.001; Yb=Y+0.001; \ + Factor=1-((Xf2+Y2)*AmpVr2); \ + Factor1=1-(((Xa2=sqr(Xa))+Y2)*AmpVr2); \ + Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ + VertX=Factor*Xf; VertY=Factor*Y; VertZ=Factor*Zf; \ + NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Y-VertY; NeiAZ=Factor1*Zf-VertZ; \ + NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ + glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ + glVertex3f(VertX, VertY, VertZ); \ + \ + Yb=Yf+0.001; \ + Factor=1-((Xf2+Yf2)*AmpVr2); \ + Factor1=1-((Xa2+Yf2)*AmpVr2); \ + Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ + VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ + NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ + NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ + glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ + glVertex3f(VertX, VertY, VertZ); \ + mi->polygon_count++; \ + } \ + glEnd(); \ + } \ + VS=(Factor<0); \ +} + +#define PENTAGON(Edge, Amp, Divisions, Z, VS) \ +{ \ + int Ri,Ti,Fi; \ + GLfloat Xf,Yf,Xa,Yb,Xf2,Yf2; \ + GLfloat Factor=0.0,Factor1,Factor2; \ + GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \ + GLfloat Zf=(Edge)*(Z); \ + GLfloat AmpVr2=(Amp)/sqr((Edge)*cossec36_2); \ + \ + GLfloat x[6],y[6]; \ + \ + for(Fi=0;Fi<6;Fi++) { \ + x[Fi]=-cos( Fi*2*Pi/5 + Pi/10 )/(Divisions)*cossec36_2*(Edge); \ + y[Fi]=sin( Fi*2*Pi/5 + Pi/10 )/(Divisions)*cossec36_2*(Edge); \ + } \ + \ + for (Ri=1; Ri<=(Divisions); Ri++) { \ + for (Fi=0; Fi<5; Fi++) { \ + glBegin(GL_TRIANGLE_STRIP); \ + for (Ti=0; Tipolygon_count++; \ + \ + Xf-=x[Fi]; Yf-=y[Fi]; Xa-=x[Fi]; Yb-=y[Fi]; \ + \ + Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ + Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ + Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ + VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ + NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ + NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ + glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ + glVertex3f(VertX, VertY, VertZ); \ + mi->polygon_count++; \ + \ + } \ + Xf=(float)Ri*x[Fi+1]; \ + Yf=(float)Ri*y[Fi+1]; \ + Xa=Xf+0.001; Yb=Yf+0.001; \ + Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ + Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ + Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ + VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ + NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ + NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ + glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ + glVertex3f(VertX, VertY, VertZ); \ + glEnd(); \ + } \ + } \ + VS=(Factor<0); \ +} + +static void +draw_tetra(ModeInfo * mi) +{ + morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]); + + TRIANGLE(2, mp->seno, mp->edgedivisions, 0.5 / SQRT6, mp->VisibleSpikes); + + glPushMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-tetraangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 0.5 / SQRT6, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + tetraangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 0.5 / SQRT6, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + tetraangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 0.5 / SQRT6, mp->VisibleSpikes); +} + +static void +draw_cube(ModeInfo * mi) +{ + morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]); + + SQUARE(2, mp->seno, mp->edgedivisions, 0.5, mp->VisibleSpikes) + + glRotatef(cubeangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]); + SQUARE(2, mp->seno, mp->edgedivisions, 0.5, mp->VisibleSpikes) + glRotatef(cubeangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]); + SQUARE(2, mp->seno, mp->edgedivisions, 0.5, mp->VisibleSpikes) + glRotatef(cubeangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]); + SQUARE(2, mp->seno, mp->edgedivisions, 0.5, mp->VisibleSpikes) + glRotatef(cubeangle, 0, 1, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]); + SQUARE(2, mp->seno, mp->edgedivisions, 0.5, mp->VisibleSpikes) + glRotatef(2 * cubeangle, 0, 1, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]); + SQUARE(2, mp->seno, mp->edgedivisions, 0.5, mp->VisibleSpikes) +} + +static void +draw_octa(ModeInfo * mi) +{ + morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes); + + glPushMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-180 + octaangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-octaangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-octaangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes); + glPushMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-180 + octaangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-octaangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[6]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-octaangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[7]); + TRIANGLE(2, mp->seno, mp->edgedivisions, 1 / SQRT6, mp->VisibleSpikes); +} + +static void +draw_dodeca(ModeInfo * mi) +{ + morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; + +#define TAU ((SQRT5+1)/2) + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]); + + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + + glPushMatrix(); + glRotatef(180, 0, 0, 1); + glPushMatrix(); + glRotatef(-dodecaangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(-dodecaangle, cos72, sin72, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(-dodecaangle, cos72, -sin72, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(dodecaangle, cos36, -sin36, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(dodecaangle, cos36, sin36, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[6]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glRotatef(180, 0, 0, 1); + glPushMatrix(); + glRotatef(-dodecaangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[7]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(-dodecaangle, cos72, sin72, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[8]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(-dodecaangle, cos72, -sin72, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[9]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(dodecaangle, cos36, -sin36, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[10]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(dodecaangle, cos36, sin36, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[11]); + PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); +} + +static void +draw_icosa(ModeInfo * mi) +{ + morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]); + + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + + glPushMatrix(); + + glPushMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-icoangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-icoangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[6]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[7]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[8]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-icoangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[9]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[10]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPushMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-icoangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[11]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[12]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[13]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[14]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[15]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-icoangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[16]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[17]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPushMatrix(); + glRotatef(180, 0, 1, 0); + glRotatef(-180 + icoangle, 0.5, -SQRT3 / 2, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[18]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); + glPopMatrix(); + glRotatef(180, 0, 0, 1); + glRotatef(-icoangle, 1, 0, 0); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[19]); + TRIANGLE(1.5, mp->seno, mp->edgedivisions, (3 * SQRT3 + SQRT15) / 12, mp->VisibleSpikes); +} + +ENTRYPOINT void +reshape_morph3d(ModeInfo * mi, int width, int height) +{ + morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + } + + glViewport(0, y, mp->WindW = (GLint) width, mp->WindH = (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); + glMatrixMode(GL_MODELVIEW); +} + +static void +pinit(ModeInfo * mi) +{ + morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; + + glClearDepth(1.0); + glColor3f(1.0, 1.0, 1.0); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + + glShadeModel(GL_SMOOTH); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); + + switch (mp->object) { + case 2: + mp->draw_object = draw_cube; + mp->MaterialColor[0] = MaterialRed; + mp->MaterialColor[1] = MaterialGreen; + mp->MaterialColor[2] = MaterialCyan; + mp->MaterialColor[3] = MaterialMagenta; + mp->MaterialColor[4] = MaterialYellow; + mp->MaterialColor[5] = MaterialBlue; + mp->edgedivisions = cubedivisions; + mp->Magnitude = 2.0; + break; + case 3: + mp->draw_object = draw_octa; + mp->MaterialColor[0] = MaterialRed; + mp->MaterialColor[1] = MaterialGreen; + mp->MaterialColor[2] = MaterialBlue; + mp->MaterialColor[3] = MaterialWhite; + mp->MaterialColor[4] = MaterialCyan; + mp->MaterialColor[5] = MaterialMagenta; + mp->MaterialColor[6] = MaterialGray; + mp->MaterialColor[7] = MaterialYellow; + mp->edgedivisions = octadivisions; + mp->Magnitude = 2.5; + break; + case 4: + mp->draw_object = draw_dodeca; + mp->MaterialColor[0] = MaterialRed; + mp->MaterialColor[1] = MaterialGreen; + mp->MaterialColor[2] = MaterialCyan; + mp->MaterialColor[3] = MaterialBlue; + mp->MaterialColor[4] = MaterialMagenta; + mp->MaterialColor[5] = MaterialYellow; + mp->MaterialColor[6] = MaterialGreen; + mp->MaterialColor[7] = MaterialCyan; + mp->MaterialColor[8] = MaterialRed; + mp->MaterialColor[9] = MaterialMagenta; + mp->MaterialColor[10] = MaterialBlue; + mp->MaterialColor[11] = MaterialYellow; + mp->edgedivisions = dodecadivisions; + mp->Magnitude = 2.0; + break; + case 5: + mp->draw_object = draw_icosa; + mp->MaterialColor[0] = MaterialRed; + mp->MaterialColor[1] = MaterialGreen; + mp->MaterialColor[2] = MaterialBlue; + mp->MaterialColor[3] = MaterialCyan; + mp->MaterialColor[4] = MaterialYellow; + mp->MaterialColor[5] = MaterialMagenta; + mp->MaterialColor[6] = MaterialRed; + mp->MaterialColor[7] = MaterialGreen; + mp->MaterialColor[8] = MaterialBlue; + mp->MaterialColor[9] = MaterialWhite; + mp->MaterialColor[10] = MaterialCyan; + mp->MaterialColor[11] = MaterialYellow; + mp->MaterialColor[12] = MaterialMagenta; + mp->MaterialColor[13] = MaterialRed; + mp->MaterialColor[14] = MaterialGreen; + mp->MaterialColor[15] = MaterialBlue; + mp->MaterialColor[16] = MaterialCyan; + mp->MaterialColor[17] = MaterialYellow; + mp->MaterialColor[18] = MaterialMagenta; + mp->MaterialColor[19] = MaterialGray; + mp->edgedivisions = icodivisions; + mp->Magnitude = 2.5; + break; + default: + mp->draw_object = draw_tetra; + mp->MaterialColor[0] = MaterialRed; + mp->MaterialColor[1] = MaterialGreen; + mp->MaterialColor[2] = MaterialBlue; + mp->MaterialColor[3] = MaterialWhite; + mp->edgedivisions = tetradivisions; + mp->Magnitude = 2.5; + break; + } + if (MI_IS_MONO(mi)) { + int loop; + + for (loop = 0; loop < 20; loop++) + mp->MaterialColor[loop] = MaterialGray; + } +} + +ENTRYPOINT void +init_morph3d(ModeInfo * mi) +{ + morph3dstruct *mp; + + MI_INIT (mi, morph3d); + mp = &morph3d[MI_SCREEN(mi)]; + mp->step = NRAND(90); + mp->VisibleSpikes = 1; + + if ((mp->glx_context = init_GL(mi)) != NULL) { + + reshape_morph3d(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + mp->object = MI_COUNT(mi); + if (mp->object <= 0 || mp->object > 5) + mp->object = NRAND(5) + 1; + pinit(mi); + } else { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void +draw_morph3d(ModeInfo * mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + morph3dstruct *mp; + + if (morph3d == NULL) + return; + mp = &morph3d[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + + if (!mp->glx_context) + return; + + mi->polygon_count = 0; + glXMakeCurrent(display, window, *(mp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + glTranslatef(0.0, 0.0, -10.0); + + if (!MI_IS_ICONIC(mi)) { + glScalef(Scale4Window * mp->WindH / mp->WindW, Scale4Window, Scale4Window); + glTranslatef(2.5 * mp->WindW / mp->WindH * sin(mp->step * 1.11), 2.5 * cos(mp->step * 1.25 * 1.11), 0); + } else { + glScalef(Scale4Iconic * mp->WindH / mp->WindW, Scale4Iconic, Scale4Iconic); + } + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, h, 1); + } +# endif + + glRotatef(mp->step * 100, 1, 0, 0); + glRotatef(mp->step * 95, 0, 1, 0); + glRotatef(mp->step * 90, 0, 0, 1); + + mp->seno = (sin(mp->step) + 1.0 / 3.0) * (4.0 / 5.0) * mp->Magnitude; + + if (mp->VisibleSpikes) { +#ifdef DEBUG_CULL_FACE + int loop; + + for (loop = 0; loop < 20; loop++) + mp->MaterialColor[loop] = MaterialGray; +#endif + glDisable(GL_CULL_FACE); + } else { +#ifdef DEBUG_CULL_FACE + int loop; + + for (loop = 0; loop < 20; loop++) + mp->MaterialColor[loop] = MaterialWhite; +#endif + glEnable(GL_CULL_FACE); + } + + mp->draw_object(mi); + + glPopMatrix(); + + if (MI_IS_FPS(mi)) do_fps (mi); + glXSwapBuffers(display, window); + + mp->step += 0.05; +} + +#ifndef STANDALONE +ENTRYPOINT void +change_morph3d(ModeInfo * mi) +{ + morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; + + if (!mp->glx_context) + return; + + mp->object = (mp->object) % 5 + 1; + pinit(mi); +} +#endif /* !STANDALONE */ + +#endif + +XSCREENSAVER_MODULE ("Morph3D", morph3d) diff --git a/hacks/glx/morph3d.man b/hacks/glx/morph3d.man new file mode 100644 index 0000000..21af78c --- /dev/null +++ b/hacks/glx/morph3d.man @@ -0,0 +1,57 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +morph3d - 3d morphing objects. +.SH SYNOPSIS +.B morph3d +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-count \fInumber\fP] +[\-delay \fInumber\fP] +[\-fps] +.SH DESCRIPTION +Another 3d shape-changing GL hack. It has the same shiny-plastic feel +as Superquadrics, as many computer-generated objects do... +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-count \fInumber\fP +0 - 20. Default: 0. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.). +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Marcelo Vianna. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Marcelo Vianna. diff --git a/hacks/glx/noof.c b/hacks/glx/noof.c new file mode 100644 index 0000000..4e42840 --- /dev/null +++ b/hacks/glx/noof.c @@ -0,0 +1,519 @@ +/* noof, Copyright (c) 2004-2018 Bill Torzewski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Originally a demo included with GLUT; + * (Apparently this was called "diatoms" on Irix.) + * ported to raw GL and xscreensaver by jwz, 12-Feb-2004. + */ + +#define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" \ + "*doubleBuffer: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_noof 0 +# define release_noof 0 +# define noof_handle_event 0 +#include "xlockmore.h" +#include "pow2.h" + +#ifdef USE_GL /* whole file */ + +#define N_SHAPES 7 + +ENTRYPOINT ModeSpecOpt noof_opts = {0, NULL, 0, NULL, NULL}; + +typedef struct { + GLXContext *glx_context; + + float pos[N_SHAPES * 3]; + float dir[N_SHAPES * 3]; + float acc[N_SHAPES * 3]; + float col[N_SHAPES * 3]; + float hsv[N_SHAPES * 3]; + float hpr[N_SHAPES * 3]; + float ang[N_SHAPES]; + float spn[N_SHAPES]; + float sca[N_SHAPES]; + float geep[N_SHAPES]; + float peep[N_SHAPES]; + float speedsq[N_SHAPES]; + int blad[N_SHAPES]; + + float ht, wd; + + int tko; + + GLuint screenshot_texture, tex_w, tex_h; + +} noof_configuration; + +static noof_configuration *bps = NULL; + + +static void +initshapes(noof_configuration *bp, int i) +{ + int k; + float f; + + /* random init of pos, dir, color */ + for (k = i * 3; k <= i * 3 + 2; k++) { + f = random() / (double) RAND_MAX; + bp->pos[k] = f; + f = random() / (double) RAND_MAX; + f = (f - 0.5) * 0.05; + bp->dir[k] = f; + f = random() / (double) RAND_MAX; + f = (f - 0.5) * 0.0002; + bp->acc[k] = f; + f = random() / (double) RAND_MAX; + bp->col[k] = f; + } + + bp->speedsq[i] = bp->dir[i * 3] * bp->dir[i * 3] + bp->dir[i * 3 + 1] * bp->dir[i * 3 + 1]; + f = random() / (double) RAND_MAX; + bp->blad[i] = 2 + (int) (f * 17.0); + f = random() / (double) RAND_MAX; + bp->ang[i] = f; + f = random() / (double) RAND_MAX; + bp->spn[i] = (f - 0.5) * 40.0 / (10 + bp->blad[i]); + f = random() / (double) RAND_MAX; + bp->sca[i] = (f * 0.1 + 0.08); + bp->dir[i * 3] *= bp->sca[i]; + bp->dir[i * 3 + 1] *= bp->sca[i]; + + f = random() / (double) RAND_MAX; + bp->hsv[i * 3] = f * 360.0; + + f = random() / (double) RAND_MAX; + bp->hsv[i * 3 + 1] = f * 0.6 + 0.4; + + f = random() / (double) RAND_MAX; + bp->hsv[i * 3 + 2] = f * 0.7 + 0.3; + + f = random() / (double) RAND_MAX; + bp->hpr[i * 3] = f * 0.005 * 360.0; + f = random() / (double) RAND_MAX; + bp->hpr[i * 3 + 1] = f * 0.03; + f = random() / (double) RAND_MAX; + bp->hpr[i * 3 + 2] = f * 0.02; + + bp->geep[i] = 0; + f = random() / (double) RAND_MAX; + bp->peep[i] = 0.01 + f * 0.2; +} + +static const float bladeratio[] = +{ + /* nblades = 2..7 */ + 0.0, 0.0, 3.00000, 1.73205, 1.00000, 0.72654, 0.57735, 0.48157, + /* 8..13 */ + 0.41421, 0.36397, 0.19076, 0.29363, 0.26795, 0.24648, + /* 14..19 */ + 0.22824, 0.21256, 0.19891, 0.18693, 0.17633, 0.16687, +}; + +static int +drawleaf(noof_configuration *bp, int l) +{ + int polys = 0; + int b, blades; + float x, y; + float wobble; + + blades = bp->blad[l]; + + y = 0.10 * sin(bp->geep[l] * M_PI / 180.0) + 0.099 * sin(bp->geep[l] * 5.12 * M_PI / 180.0); + if (y < 0) + y = -y; + x = 0.15 * cos(bp->geep[l] * M_PI / 180.0) + 0.149 * cos(bp->geep[l] * 5.12 * M_PI / 180.0); + if (x < 0.0) + x = 0.0 - x; + if (y < 0.001 && x > 0.000002 && ((bp->tko & 0x1) == 0)) { + initshapes(bp, l); /* let it become reborn as something + else */ + bp->tko++; + return polys; + } { + float w1 = sin(bp->geep[l] * 15.3 * M_PI / 180.0); + wobble = 3.0 + 2.00 * sin(bp->geep[l] * 0.4 * M_PI / 180.0) + 3.94261 * w1; + } + + /** + if(blades == 2) if (y > 3.000*x) y = x*3.000; + if(blades == 3) if (y > 1.732*x) y = x*1.732; + if(blades == 4) if (y > x) y = x; + if(blades == 5) if (y > 0.726*x) y = x*0.726; + if(blades == 6) if (y > 0.577*x) y = x*0.577; + if(blades == 7) if (y > 0.481*x) y = x*0.481; + if(blades == 8) if (y > 0.414*x) y = x*0.414; + */ + if (y > x * bladeratio[blades]) + y = x * bladeratio[blades]; + + for (b = 0; b < blades; b++) { + glPushMatrix(); + glTranslatef(bp->pos[l * 3], bp->pos[l * 3 + 1], bp->pos[l * 3 + 2]); + glRotatef(bp->ang[l] + b * (360.0 / blades), 0.0, 0.0, 1.0); + glScalef(wobble * bp->sca[l], wobble * bp->sca[l], wobble * bp->sca[l]); + /** + if(tko & 0x40000) glColor3f(col[l*3], col[l*3+1], col[l*3+2]); + else + */ + glColor4ub(0, 0, 0, 0x60); + + /* constrain geep cooridinates here XXX */ + glEnable(GL_BLEND); + + glBegin(GL_TRIANGLE_STRIP); + glVertex2f(x * bp->sca[l], 0.0); + glVertex2f(x, y); + glVertex2f(x, -y); /* C */ + glVertex2f(0.3, 0.0); /* D */ + polys += 2; + glEnd(); + + /** + if(tko++ & 0x40000) glColor3f(0,0,0); + else + */ + glColor3f(bp->col[l * 3], bp->col[l * 3 + 1], bp->col[l * 3 + 2]); + glBegin(GL_LINE_LOOP); + glVertex2f(x * bp->sca[l], 0.0); + glVertex2f(x, y); + glVertex2f(0.3, 0.0); /* D */ + glVertex2f(x, -y); /* C */ + polys += 3; + glEnd(); + glDisable(GL_BLEND); + + glPopMatrix(); + } + return polys; +} + +static void +motionUpdate(noof_configuration *bp, int t) +{ + if (bp->pos[t * 3] < -bp->sca[t] * bp->wd && bp->dir[t * 3] < 0.0) { + bp->dir[t * 3] = -bp->dir[t * 3]; + /** + acc[t*3+1] += 0.8*acc[t*3]; + acc[t*3] = -0.8*acc[t*3]; + */ + } else if (bp->pos[t * 3] > (1 + bp->sca[t]) * bp->wd && bp->dir[t * 3] > 0.0) { + bp->dir[t * 3] = -bp->dir[t * 3]; + /** + acc[t*3+1] += 0.8*acc[t*3]; + acc[t*3] = -0.8*acc[t*3]; + */ + } else if (bp->pos[t * 3 + 1] < -bp->sca[t] * bp->ht && bp->dir[t * 3 + 1] < 0.0) { + bp->dir[t * 3 + 1] = -bp->dir[t * 3 + 1]; + /** + acc[t*3] += 0.8*acc[t*3+1]; + acc[t*3+1] = -0.8*acc[t*3+1]; + */ + } else if (bp->pos[t * 3 + 1] > (1 + bp->sca[t]) * bp->ht && bp->dir[t * 3 + 1] > 0.0) { + bp->dir[t * 3 + 1] = -bp->dir[t * 3 + 1]; + /** + acc[t*3] += 0.8*acc[t*3+1]; + acc[t*3+1] = -0.8*acc[t*3+1]; + */ + } + + bp->pos[t * 3] += bp->dir[t * 3]; + bp->pos[t * 3 + 1] += bp->dir[t * 3 + 1]; + /** + dir[t*3] += acc[t*3]; + dir[t*3+1] += acc[t*3+1]; + */ + bp->ang[t] += bp->spn[t]; + bp->geep[t] += bp->peep[t]; + if (bp->geep[t] > 360 * 5.0) + bp->geep[t] -= 360 * 5.0; + if (bp->ang[t] < 0.0) { + bp->ang[t] += 360.0; + } + if (bp->ang[t] > 360.0) { + bp->ang[t] -= 360.0; + } +} + +static void +colorUpdate(noof_configuration *bp, int i) +{ + if (bp->hsv[i * 3 + 1] <= 0.5 && bp->hpr[i * 3 + 1] < 0.0) + bp->hpr[i * 3 + 1] = -bp->hpr[i * 3 + 1]; /* adjust s */ + if (bp->hsv[i * 3 + 1] >= 1.0 && bp->hpr[i * 3 + 1] > 0.0) + bp->hpr[i * 3 + 1] = -bp->hpr[i * 3 + 1]; /* adjust s */ + if (bp->hsv[i * 3 + 2] <= 0.4 && bp->hpr[i * 3 + 2] < 0.0) + bp->hpr[i * 3 + 2] = -bp->hpr[i * 3 + 2]; /* adjust s */ + if (bp->hsv[i * 3 + 2] >= 1.0 && bp->hpr[i * 3 + 2] > 0.0) + bp->hpr[i * 3 + 2] = -bp->hpr[i * 3 + 2]; /* adjust s */ + + bp->hsv[i * 3] += bp->hpr[i * 3]; + bp->hsv[i * 3 + 1] += bp->hpr[i * 3 + 1]; + bp->hsv[i * 3 + 2] += bp->hpr[i * 3 + 2]; + + /* --- hsv -> rgb --- */ +#define H(hhh) hhh[i*3 ] +#define S(hhh) hhh[i*3+1] +#define V(hhh) hhh[i*3+2] + +#define R(hhh) hhh[i*3 ] +#define G(hhh) hhh[i*3+1] +#define B(hhh) hhh[i*3+2] + + if (V(bp->hsv) < 0.0) + V(bp->hsv) = 0.0; + if (V(bp->hsv) > 1.0) + V(bp->hsv) = 1.0; + if (S(bp->hsv) <= 0.0) { + R(bp->col) = V(bp->hsv); + G(bp->col) = V(bp->hsv); + B(bp->col) = V(bp->hsv); + } else { + float f, h, p, q, t, v; + int hi; + + while (H(bp->hsv) < 0.0) + H(bp->hsv) += 360.0; + while (H(bp->hsv) >= 360.0) + H(bp->hsv) -= 360.0; + + if (S(bp->hsv) < 0.0) + S(bp->hsv) = 0.0; + if (S(bp->hsv) > 1.0) + S(bp->hsv) = 1.0; + + h = H(bp->hsv) / 60.0; + hi = (int) (h); + f = h - hi; + v = V(bp->hsv); + p = V(bp->hsv) * (1 - S(bp->hsv)); + q = V(bp->hsv) * (1 - S(bp->hsv) * f); + t = V(bp->hsv) * (1 - S(bp->hsv) * (1 - f)); + + if (hi <= 0) { + R(bp->col) = v; + G(bp->col) = t; + B(bp->col) = p; + } else if (hi == 1) { + R(bp->col) = q; + G(bp->col) = v; + B(bp->col) = p; + } else if (hi == 2) { + R(bp->col) = p; + G(bp->col) = v; + B(bp->col) = t; + } else if (hi == 3) { + R(bp->col) = p; + G(bp->col) = q; + B(bp->col) = v; + } else if (hi == 4) { + R(bp->col) = t; + G(bp->col) = p; + B(bp->col) = v; + } else { + R(bp->col) = v; + G(bp->col) = p; + B(bp->col) = q; + } + } +} + +static void +gravity(noof_configuration *bp, float fx) +{ + int a, b; + + for (a = 0; a < N_SHAPES; a++) { + for (b = 0; b < a; b++) { + float t, d2; + + t = bp->pos[b * 3] - bp->pos[a * 3]; + d2 = t * t; + t = bp->pos[b * 3 + 1] - bp->pos[a * 3 + 1]; + d2 += t * t; + if (d2 < 0.000001) + d2 = 0.00001; + if (d2 < 0.1) { + + float v0, v1, z; + v0 = bp->pos[b * 3] - bp->pos[a * 3]; + v1 = bp->pos[b * 3 + 1] - bp->pos[a * 3 + 1]; + + z = 0.00000001 * fx / (d2); + + bp->dir[a * 3] += v0 * z * bp->sca[b]; + bp->dir[b * 3] += -v0 * z * bp->sca[a]; + bp->dir[a * 3 + 1] += v1 * z * bp->sca[b]; + bp->dir[b * 3 + 1] += -v1 * z * bp->sca[a]; + + } + } + /** apply brakes + if(dir[a*3]*dir[a*3] + dir[a*3+1]*dir[a*3+1] + > 0.0001) { + dir[a*3] *= 0.9; + dir[a*3+1] *= 0.9; + } + */ + } +} + +ENTRYPOINT void +draw_noof (ModeInfo *mi) +{ + int i; + noof_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (!bp->glx_context) + return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + /* In the olden days, one could just render directly into the front buffer, + or fail to clear the back buffer and assume that one's bits were still + there. Not so on modern devices, particularly mobile. So to achieve + the effect of frame N+1 accumulating atop frame N, we must save and + restore a screenshot of frame N. + */ + if (bp->screenshot_texture) + { + GLfloat tw = MI_WIDTH(mi) / (GLfloat) bp->tex_w; + GLfloat th = MI_HEIGHT(mi) / (GLfloat) bp->tex_h; + glDisable (GL_BLEND); + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, bp->screenshot_texture); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glBegin (GL_QUADS); + glTexCoord2f (0, 0); glVertex3f (0, 0, 0); + glTexCoord2f (tw, 0); glVertex3f (bp->wd, 0, 0); + glTexCoord2f (tw, th); glVertex3f (bp->wd, bp->ht, 0); + glTexCoord2f (0, th); glVertex3f (0, bp->ht, 0); + glEnd(); + glDisable (GL_TEXTURE_2D); + glClear (GL_DEPTH_BUFFER_BIT); + } + + mi->polygon_count = 0; + + /** + if((random() & 0xff) == 0x34){ + glClear(GL_COLOR_BUFFER_BIT); + } + + if((tko & 0x1f) == 0x1f){ + glEnable(GL_BLEND); + glColor4f(0.0, 0.0, 0.0, 0.09); + glRectf(0.0, 0.0, wd, ht); + glDisable(GL_BLEND); +#ifdef __sgi + sginap(0); +#endif + } + */ + + gravity(bp, -2.0); + for (i = 0; i < N_SHAPES; i++) { + motionUpdate(bp, i); + colorUpdate(bp, i); + mi->polygon_count += drawleaf(bp, i); + } + + if (bp->screenshot_texture) /* Store a screenshot into the texture. */ + { + glDisable (GL_BLEND); + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, bp->screenshot_texture); + glCopyTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, 0, 0, + MI_WIDTH(mi), MI_HEIGHT(mi)); + check_gl_error("screenshot texture"); + glDisable (GL_TEXTURE_2D); + } + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi)); +} + + +ENTRYPOINT void +reshape_noof(ModeInfo *mi, int w, int h) +{ + noof_configuration *bp = &bps[MI_SCREEN(mi)]; + char *s; + glViewport(0, 0, w, h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (w <= h) { + bp->wd = 1.0; + bp->ht = (GLfloat) h / (GLfloat) w; + glOrtho(0.0, 1.0, + 0.0, 1.0 * (GLfloat) h / (GLfloat) w, + -16.0, 4.0); + } else { + bp->wd = (GLfloat) w / (GLfloat) h; + bp->ht = 1.0; + glOrtho(0.0, 1.0 * (GLfloat) w / (GLfloat) h, + 0.0, 1.0, + -16.0, 4.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + if (!bp->screenshot_texture) + glGenTextures (1, &bp->screenshot_texture); + + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, bp->screenshot_texture); + + bp->tex_w = to_pow2 (MI_WIDTH(mi)); + bp->tex_h = to_pow2 (MI_HEIGHT(mi)); + s = calloc (4, bp->tex_w * bp->tex_h); /* init with black */ + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, bp->tex_w, bp->tex_h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, s); + check_gl_error ("texture generation"); + free (s); + glDisable (GL_TEXTURE_2D); + glClear (GL_COLOR_BUFFER_BIT); +} + +ENTRYPOINT void +init_noof (ModeInfo *mi) +{ + int i; + noof_configuration *bp; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + glEnable(GL_LINE_SMOOTH); + glShadeModel(GL_FLAT); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + for (i = 0; i < N_SHAPES; i++) + initshapes(bp, i); + + reshape_noof (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); +} + + +XSCREENSAVER_MODULE ("Noof", noof) + +#endif /* USE_GL */ diff --git a/hacks/glx/noof.man b/hacks/glx/noof.man new file mode 100644 index 0000000..f414571 --- /dev/null +++ b/hacks/glx/noof.man @@ -0,0 +1,52 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +noof - draw rotatey patterns +.SH SYNOPSIS +.B dangerball +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-fps] +.SH DESCRIPTION +Draws some rotatey patterns, using OpenGL. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2004 by Mark Kilgard. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Mark Kilgard diff --git a/hacks/glx/normals.c b/hacks/glx/normals.c new file mode 100644 index 0000000..16b9040 --- /dev/null +++ b/hacks/glx/normals.c @@ -0,0 +1,52 @@ +/* normals, Copyright (c) 2002-2004 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Compute normal vectors for arbitrary triangles. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "normals.h" + +/* Calculate the unit normal at p given two other points p1,p2 on the + surface. The normal points in the direction of p1 crossproduct p2 + */ +XYZ +calc_normal (XYZ p, XYZ p1, XYZ p2) +{ + XYZ n, pa, pb; + pa.x = p1.x - p.x; + pa.y = p1.y - p.y; + pa.z = p1.z - p.z; + pb.x = p2.x - p.x; + pb.y = p2.y - p.y; + pb.z = p2.z - p.z; + n.x = pa.y * pb.z - pa.z * pb.y; + n.y = pa.z * pb.x - pa.x * pb.z; + n.z = pa.x * pb.y - pa.y * pb.x; + return (n); +} + +/* Call glNormal3f() with a normal of the indicated triangle. + */ +void +do_normal(GLfloat x1, GLfloat y1, GLfloat z1, + GLfloat x2, GLfloat y2, GLfloat z2, + GLfloat x3, GLfloat y3, GLfloat z3) +{ + XYZ p1, p2, p3, p; + p1.x = x1; p1.y = y1; p1.z = z1; + p2.x = x2; p2.y = y2; p2.z = z2; + p3.x = x3; p3.y = y3; p3.z = z3; + p = calc_normal (p1, p2, p3); + glNormal3f (p.x, p.y, p.z); +} diff --git a/hacks/glx/normals.h b/hacks/glx/normals.h new file mode 100644 index 0000000..2200dfe --- /dev/null +++ b/hacks/glx/normals.h @@ -0,0 +1,48 @@ +/* normals, Copyright (c) 2002-2012 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Compute normal vectors for arbitrary triangles. + */ + +#ifndef __NORMALS_H__ +#define __NORMALS_H__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifndef HAVE_JWXYZ +# include +#endif + +#ifdef HAVE_ANDROID +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +typedef struct { + double x,y,z; +} XYZ; + +/* Calculate the unit normal at p given two other points p1,p2 on the + surface. The normal points in the direction of p1 crossproduct p2 + */ +extern XYZ calc_normal (XYZ p, XYZ p1, XYZ p2); + +/* Call glNormal3f() with a normal of the indicated triangle. + */ +extern void do_normal (GLfloat x1, GLfloat y1, GLfloat z1, + GLfloat x2, GLfloat y2, GLfloat z2, + GLfloat x3, GLfloat y3, GLfloat z3); + +#endif /* __NORMALS_H__ */ diff --git a/hacks/glx/peepers.c b/hacks/glx/peepers.c new file mode 100644 index 0000000..02ebab8 --- /dev/null +++ b/hacks/glx/peepers.c @@ -0,0 +1,1455 @@ +/* peepers, Copyright (c) 2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Created: 14 Feb 2018, jwz. + * + * Floating eyeballs! + * + * Inspired by @PaintYourDragon's Adafruit Snake Eyes Raspberry Pi Bonnet + * https://learn.adafruit.com/animated-snake-eyes-bonnet-for-raspberry-pi/ + * which is excellent. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 0 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_peepers 0 +# define release_peepers 0 + +#define DEF_SPEED "1.0" +#define DEF_MODE "random" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +#include "xlockmore.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include "ximage-loader.h" +#include + +#ifndef HAVE_JWXYZ +# include +#endif + +#include "images/gen/sclera_png.h" +#include "images/gen/iris_png.h" + +#ifdef USE_GL /* whole file */ + +typedef struct { double a, o; } LL; /* latitude + longitude */ + +typedef struct { + int idx; + GLfloat x, y, z; + GLfloat dx, dy, dz; + GLfloat ddx, ddy, ddz; + rotator *rot; + struct { GLfloat from, to, current, tick; } dilation; + enum { ROTATE, SPIN, TRACK } focus; + XYZ track; + GLfloat tilt, roll; + GLfloat scale; + GLfloat color[4]; + int jaundice; +} floater; + +typedef enum { RETINA, IRIS, SCLERA, LENS, TICK } component; + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + + Bool button_down_p; + XYZ mouse, last_mouse, fake_mouse; + time_t last_mouse_time; + int mouse_dx, mouse_dy; + + GLuint retina_list, sclera_list, lens_list, iris_list; + GLuint sclera_texture, iris_texture; + int eye_polys; + + int nfloaters; + floater *floaters; + enum { BOUNCE, SCROLL_LEFT, SCROLL_RIGHT, XEYES, BEHOLDER } mode; + +} peepers_configuration; + +static peepers_configuration *bps = NULL; + +static GLfloat speed; +const char *mode_opt; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-mode", ".mode", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&mode_opt, "mode", "Mode", DEF_MODE, t_String}, +}; + +ENTRYPOINT ModeSpecOpt peepers_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Bottom edge of screen is -0.5; left and right scale by aspect. */ +#define BOTTOM (-1.6) +#define LEFT (BOTTOM * MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi)) + +static void +reset_floater (ModeInfo *mi, floater *f) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat r = ((bp->mode == BOUNCE ? LEFT : BOTTOM) * + (bp->nfloaters < 10 ? 0.3: 0.6)); + GLfloat x, y; + + if (bp->nfloaters <= 2) + { + x = frand(LEFT) * RANDSIGN() * 0.3; + y = 0; + } + else + { + /* Position them off screen in a circle */ + GLfloat th = f->idx * (M_PI + (M_PI/6)) * 2 / bp->nfloaters; + x = r * cos (th); + y = r * sin (th) * 1.5; /* Oval */ + } + + switch (bp->mode) { + case BOUNCE: + f->x = x; + f->y = BOTTOM; + f->z = y; + + /* Yes, I know I'm varying the force of gravity instead of varying the + launch velocity. That's intentional: empirical studies indicate + that it's way, way funnier that way. */ + + f->dy = 0.1; + f->dx = 0; + f->dz = 0; + + { + GLfloat min = -0.004; + GLfloat max = -0.0019; + f->ddy = min + frand (max - min); + f->ddx = 0; + f->ddz = 0; + } + + if (! (random() % (10 * bp->nfloaters))) + { + f->dx = BELLRAND(0.03) * RANDSIGN(); + f->dz = BELLRAND(0.03) * RANDSIGN(); + } + break; + + case SCROLL_LEFT: + case SCROLL_RIGHT: + + f->x = (bp->mode == SCROLL_LEFT ? -LEFT : LEFT); + f->y = x; + f->z = y; + + f->dx = (1.0 + frand(2.0)) * 0.020 * (bp->mode == SCROLL_LEFT ? -1 : 1); + f->dy = (1.0 + frand(2.0)) * 0.002 * RANDSIGN(); + f->dz = (1.0 + frand(2.0)) * 0.002 * RANDSIGN(); + f->ddy = 0; + f->ddz = 0; + break; + + case XEYES: /* This happens in layout_grid() */ + break; + case BEHOLDER: /* This happens in layout_geodesic() */ + break; + + default: + abort(); + } + + f->focus = ((random() % 8) ? ROTATE : + (random() % 4) ? TRACK : SPIN); + f->track.x = 8 - frand(16); + f->track.y = 8 - frand(16); + f->track.z = 8 + frand(16); + + f->tilt = 45 - BELLRAND(90); + f->roll = frand(180); + f->dilation.to = f->dilation.from = f->dilation.current = frand(1.0); + f->dilation.tick = 1; + + f->scale = 0.8 + BELLRAND(0.2); + + if (bp->nfloaters == 1) f->scale *= 0.5; + else if (bp->nfloaters <= 3) f->scale *= 0.4; + else if (bp->nfloaters <= 9) f->scale *= 0.3; + else if (bp->nfloaters <= 15) f->scale *= 0.2; + else if (bp->nfloaters <= 25) f->scale *= 0.15; + else if (bp->nfloaters <= 90) f->scale *= 0.12; + else f->scale *= 0.07; + + if (MI_WIDTH(mi) < MI_HEIGHT(mi)) + { + f->scale /= MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi) * 1.2; + } + + { + static const struct { GLfloat pct; unsigned long c; } c[] = { + /* All of the articles that I found with percentages in them only + added up to around 70%, so who knows what that means. */ +# if 0 + { 55, 0x985A07 }, /* brown -- supposedly real global percentage */ +# else + { 20, 0x985A07 }, /* brown -- but that's a lot of brown... */ +# endif + { 8, 0xD5AD68 }, /* hazel */ + { 8, 0x777F92 }, /* blue */ + { 2, 0x6B7249 }, /* green */ + { 1, 0x7F7775 }, /* gray */ + { 0.5, 0x9E8042 }, /* amber */ + { 0.1, 0xFFAA88 }, /* red */ + }; + GLfloat p = 0, t = 0; + GLfloat s = 1 - frand(0.3); + int i; + for (i = 0; i < countof(c); i++) + p += c[i].pct; + p = frand(p); + + for (i = 0; i < countof(c); i++) + { + if (t > p) break; + t += c[i].pct; + } + + if (c[i].c == 0xFFAA88) f->jaundice = 2; + else if (!(random() % 20)) f->jaundice = 1; + + f->color[0] = ((c[i].c >> 16) & 0xFF) / 255.0 * s; + f->color[1] = ((c[i].c >> 8) & 0xFF) / 255.0 * s; + f->color[2] = ((c[i].c >> 0) & 0xFF) / 255.0 * s; + f->color[3] = 1; + } +} + + +/* Place a grid of eyeballs on the screen, maximizing use of space. + */ +static void +layout_grid (ModeInfo *mi) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + + /* Distribute the eyes into a rectangular grid that fills the window. + There may be some empty cells. N items in a W x H rectangle: + N = W * H + N = W * W * R + N/R = W*W + W = sqrt(N/R) + */ + GLfloat aspect = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + int nlines = sqrt (bp->nfloaters / aspect) + 0.5; + int *cols = (int *) calloc (nlines, sizeof(*cols)); + int i, x, y, max = 0; + GLfloat scale, spacing; + + for (i = 0; i < bp->nfloaters; i++) + { + cols[i % nlines]++; + if (cols[i % nlines] > max) max = cols[i % nlines]; + } + + /* That gave us, e.g. 7777666. Redistribute to 6767767. */ + for (i = 0; i < nlines / 2; i += 2) + { + int j = nlines-i-1; + int swap = cols[i]; + cols[i] = cols[j]; + cols[j] = swap; + } + + scale = 1.0 / nlines; /* Scale for height */ + if (scale * max > aspect) /* Shrink if overshot width */ + scale *= aspect / (scale * max); + + scale *= 0.9; /* Add padding */ + spacing = scale * 2.2; + + if (bp->nfloaters == 1) spacing = 0; + + i = 0; + for (y = 0; y < nlines; y++) + for (x = 0; x < cols[y]; x++) + { + floater *f = &bp->floaters[i]; + f->scale = scale; + f->x = spacing * (x - cols[y] / 2.0) + spacing/2; + f->y = spacing * (y - nlines / 2.0) + spacing/2; + f->z = 0; + i++; + } + free (cols); +} + + +/* Computes the midpoint of a line between two polar coords. + */ +static void +midpoint2 (LL v1, LL v2, LL *vm_ret, + XYZ *p1_ret, XYZ *p2_ret, XYZ *pm_ret) +{ + XYZ p1, p2, pm; + LL vm; + GLfloat hyp; + + p1.x = cos (v1.a) * cos (v1.o); + p1.y = cos (v1.a) * sin (v1.o); + p1.z = sin (v1.a); + + p2.x = cos (v2.a) * cos (v2.o); + p2.y = cos (v2.a) * sin (v2.o); + p2.z = sin (v2.a); + + pm.x = (p1.x + p2.x) / 2; + pm.y = (p1.y + p2.y) / 2; + pm.z = (p1.z + p2.z) / 2; + + vm.o = atan2 (pm.y, pm.x); + hyp = sqrt (pm.x * pm.x + pm.y * pm.y); + vm.a = atan2 (pm.z, hyp); + + *p1_ret = p1; + *p2_ret = p2; + *pm_ret = pm; + *vm_ret = vm; +} + + +/* Computes the midpoint of a triangle specified in polar coords. + */ +static void +midpoint3 (LL v1, LL v2, LL v3, LL *vm_ret, + XYZ *p1_ret, XYZ *p2_ret, XYZ *p3_ret, XYZ *pm_ret) +{ + XYZ p1, p2, p3, pm; + LL vm; + GLfloat hyp; + + p1.x = cos (v1.a) * cos (v1.o); + p1.y = cos (v1.a) * sin (v1.o); + p1.z = sin (v1.a); + + p2.x = cos (v2.a) * cos (v2.o); + p2.y = cos (v2.a) * sin (v2.o); + p2.z = sin (v2.a); + + p3.x = cos (v3.a) * cos (v3.o); + p3.y = cos (v3.a) * sin (v3.o); + p3.z = sin (v3.a); + + pm.x = (p1.x + p2.x + p3.x) / 3; + pm.y = (p1.y + p2.y + p3.y) / 3; + pm.z = (p1.z + p2.z + p3.z) / 3; + + vm.o = atan2 (pm.y, pm.x); + hyp = sqrt (pm.x * pm.x + pm.y * pm.y); + vm.a = atan2 (pm.z, hyp); + + *p1_ret = p1; + *p2_ret = p2; + *p3_ret = p3; + *pm_ret = pm; + *vm_ret = vm; +} + + +/* Place the eyeballs on a sphere (geodesic) + */ +static void +layout_geodesic_triangle (ModeInfo *mi, LL v1, LL v2, LL v3, int depth, + int *i) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (depth <= 0) + { + floater *f = &bp->floaters[*i]; + GLfloat s2 = 0.7; + LL vc; + XYZ p1, p2, p3, pc; + if (*i >= bp->nfloaters) abort(); + + midpoint3 (v1, v2, v3, &vc, &p1, &p2, &p3, &pc); + + switch (bp->nfloaters) { /* This is lame. */ + case 20: f->scale = 0.26; break; + case 80: f->scale = 0.13; break; + case 320: f->scale = 0.065; break; + case 1280: f->scale = 0.0325; break; + default: abort(); + } + + f->z = s2 * cos (vc.a) * cos (vc.o); + f->x = s2 * cos (vc.a) * sin (vc.o); + f->y = s2 * sin (vc.a); + (*i)++; + } + else + { + LL v12, v23, v13; + XYZ p1, p2, p3, p12, p23, p13; + + midpoint2 (v1, v2, &v12, &p1, &p2, &p12); + midpoint2 (v2, v3, &v23, &p2, &p3, &p23); + midpoint2 (v1, v3, &v13, &p1, &p3, &p13); + depth--; + + layout_geodesic_triangle (mi, v1, v12, v13, depth, i); + layout_geodesic_triangle (mi, v12, v2, v23, depth, i); + layout_geodesic_triangle (mi, v13, v23, v3, depth, i); + layout_geodesic_triangle (mi, v12, v23, v13, depth, i); + } +} + + +/* Creates triangles of a geodesic to the given depth (frequency). + */ +static void +layout_geodesic (ModeInfo *mi) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + int depth; + GLfloat th0 = atan (0.5); /* lat division: 26.57 deg */ + GLfloat s = M_PI / 5; /* lon division: 72 deg */ + int i; + int ii = 0; + + switch (bp->nfloaters) { /* This is lame. */ + case 20: depth = 0; break; + case 80: depth = 1; break; + case 320: depth = 2; break; + case 1280: depth = 3; break; + default: abort(); + } + + for (i = 0; i < 10; i++) + { + GLfloat th1 = s * i; + GLfloat th2 = s * (i+1); + GLfloat th3 = s * (i+2); + LL v1, v2, v3, vc; + v1.a = th0; v1.o = th1; + v2.a = th0; v2.o = th3; + v3.a = -th0; v3.o = th2; + vc.a = M_PI/2; vc.o = th2; + + if (i & 1) /* north */ + { + layout_geodesic_triangle (mi, v1, v2, vc, depth, &ii); + layout_geodesic_triangle (mi, v2, v1, v3, depth, &ii); + } + else /* south */ + { + v1.a = -v1.a; + v2.a = -v2.a; + v3.a = -v3.a; + vc.a = -vc.a; + layout_geodesic_triangle (mi, v2, v1, vc, depth, &ii); + layout_geodesic_triangle (mi, v1, v2, v3, depth, &ii); + } + } + + bp->floaters[0].dx = BELLRAND(0.01) * RANDSIGN(); +} + + +/* Advance the animation by one step. + */ +static void +tick_floater (ModeInfo *mi, floater *f) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + + /* if (bp->button_down_p) return;*/ + + f->dx += f->ddx * speed * 0.5; + f->dy += f->ddy * speed * 0.5; + f->dz += f->ddz * speed * 0.5; + + if (bp->mode != BEHOLDER) + { + f->x += f->dx * speed * 0.5; + f->y += f->dy * speed * 0.5; + f->z += f->dz * speed * 0.5; + } + + f->dilation.tick += 0.1 * speed; + if (f->dilation.tick > 1) f->dilation.tick = 1; + if (f->dilation.tick < 0) f->dilation.tick = 0; + + f->dilation.current = (f->dilation.from + + ((f->dilation.to - f->dilation.from) * + f->dilation.tick)); + + if (f->dilation.tick == 1 && !(random() % 20)) + { + f->dilation.from = f->dilation.to; + f->dilation.to = frand(1.0); + f->dilation.tick = 0; + } + + switch (bp->mode) { + case BOUNCE: + if (f->y < BOTTOM || + f->x < LEFT || f->x > -LEFT) + reset_floater (mi, f); + break; + case SCROLL_LEFT: + if (f->x < LEFT) + reset_floater (mi, f); + break; + case SCROLL_RIGHT: + if (f->x > -LEFT) + reset_floater (mi, f); + break; + case XEYES: + break; + case BEHOLDER: + { + GLfloat x = f->x; + GLfloat y = f->z; + GLfloat th = atan2 (y, x); + GLfloat r = sqrt(x*x + y*y); + th += bp->floaters[0].dx; + f->x = r*cos(th); + f->z = r*sin(th); + + if (! (random() % 100)) + bp->floaters[0].dx += frand(0.0001) * RANDSIGN(); + } + break; + default: + abort(); + } +} + + +/* Make sure none of the eyeballs overlap. + */ +static void +de_collide (ModeInfo *mi) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + int i, j; + for (i = 0; i < bp->nfloaters; i++) + { + floater *f0 = &bp->floaters[i]; + for (j = i+1; j < bp->nfloaters; j++) + { + floater *f1 = &bp->floaters[j]; + GLfloat X = f1->x - f0->x; + GLfloat Y = f1->y - f0->y; + GLfloat Z = f1->z - f0->z; + GLfloat min = (f0->scale + f1->scale); + GLfloat d2 = X*X + Y*Y + Z*Z; + if (d2 < min*min) + { + GLfloat d = sqrt (d2); + GLfloat dd = 0.5 * (min - d) / 2; + GLfloat dx = X * dd; + GLfloat dy = Y * dd; + GLfloat dz = Z * dd; + f0->x -= dx; f0->y -= dy; f0->z -= dz; + f1->x += dx; f1->y += dy; f1->z += dz; + } + } + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_peepers (ModeInfo *mi, int width, int height) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); + + if (bp->mode == XEYES) + layout_grid (mi); +} + + +/* Find the mouse pointer on the screen and note its position in the scene. + */ +static void +track_mouse (ModeInfo *mi) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + Window r, c; + int x, y, rx, ry; + unsigned int m; + int w = MI_WIDTH(mi); + int h = MI_HEIGHT(mi); + int rot = (int) current_device_rotation(); + int swap; + GLfloat ys = 2.0; + GLfloat xs = ys * w / h; + time_t now = time ((time_t *) 0); + + XQueryPointer (MI_DISPLAY (mi), MI_WINDOW (mi), + &r, &c, &rx, &ry, &x, &y, &m); + + if (x != bp->last_mouse.x && y != bp->last_mouse.y) + { + bp->last_mouse_time = now; + bp->fake_mouse.x = x; + bp->fake_mouse.y = y; + bp->mouse_dx = 0; + bp->mouse_dy = 0; + bp->last_mouse.x = x; + bp->last_mouse.y = y; + } + else if (now > bp->last_mouse_time + 10) + { + /* Mouse isn't moving. Bored now. */ + if (! (random() % 20)) bp->mouse_dx += (random() % 2) * RANDSIGN(); + if (! (random() % 20)) bp->mouse_dy += (random() % 2) * RANDSIGN(); + bp->fake_mouse.x += bp->mouse_dx; + bp->fake_mouse.y += bp->mouse_dy; + x = bp->fake_mouse.x; + y = bp->fake_mouse.y; + } + + while (rot <= -180) rot += 360; + while (rot > 180) rot -= 360; + + if (rot > 135 || rot < -135) /* 180 */ + { + x = w - x; + y = h - y; + } + else if (rot > 45) /* 90 */ + { + swap = x; x = y; y = swap; + swap = w; w = h; h = swap; + xs = ys; + ys = xs * w / h; + x = w - x; + } + else if (rot < -45) /* 270 */ + { + swap = x; x = y; y = swap; + swap = w; w = h; h = swap; + xs = ys; + ys = xs * w / h; + y = h - y; + } + + /* Put the mouse directly on the glass. */ + x = x - w / 2; + y = h / 2 - y; + bp->mouse.x = xs * x / w; + bp->mouse.y = ys * y / h; + bp->mouse.z = 0; + +# if 0 + glPushMatrix(); + glTranslatef (bp->mouse.x, bp->mouse.y, bp->mouse.z); + if (!MI_IS_WIREFRAME(mi)) glDisable(GL_LIGHTING); + glColor3f(1,1,1); + glBegin(GL_LINES); + glVertex3f(-1,0,0); glVertex3f(1,0,0); + glVertex3f(0,-1,0); glVertex3f(0,1,0); + glVertex3f(0,0,-1); glVertex3f(0,0,1); + glEnd(); + glPopMatrix(); + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); +# endif + + /* Move it farther into the scene: on the glass is too far away. + But keep it farther away the farther outside the window the + mouse is, so the eyes don''t turn 90 degrees sideways. + */ + bp->mouse.x *= 0.8; + bp->mouse.y *= 0.8; + bp->mouse.z += 0.7; + + bp->mouse.z = MAX (0.7, + sqrt (bp->mouse.x * bp->mouse.x + + bp->mouse.y * bp->mouse.y)); + + if (bp->mode == BEHOLDER) + bp->mouse.z += 0.25; + + +# if 0 + glPushMatrix(); + glTranslatef (bp->mouse.x, bp->mouse.y, bp->mouse.z); + if (!MI_IS_WIREFRAME(mi)) glDisable(GL_LIGHTING); + glColor3f(1,0,1); + glBegin(GL_LINES); + glVertex3f(-1,0,0); glVertex3f(1,0,0); + glVertex3f(0,-1,0); glVertex3f(0,1,0); + glVertex3f(0,0,-1); glVertex3f(0,0,1); + glEnd(); + glPopMatrix(); + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); +# endif +} + + +ENTRYPOINT Bool +peepers_handle_event (ModeInfo *mi, XEvent *event) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + { + if (bp->button_down_p) /* Aim each eyeball at the mouse. */ + { + int i; + track_mouse (mi); + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + f->track = bp->mouse; + f->focus = TRACK; + } + } + + return True; + } + + return False; +} + + +/* Generate the polygons for the display lists. + This routine generates the various styles of sphere-oid we use. + */ +static int +draw_ball (ModeInfo *mi, component which) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + + GLfloat iris_ratio = 0.42; /* Size of the iris. */ + /* The lens bulges out, but the iris bulges in, sorta. */ + GLfloat lens_bulge = (which == IRIS ? -0.50 : 0.32); + + GLfloat xstep = 32; /* Facets on the sphere */ + GLfloat ystep = 32; + XYZ *stacks, *normals; + GLfloat x, y, z; + int i, j; + int xstart, xstop; + + if (bp->nfloaters > 16 || wire) + xstep = ystep = 16; + + if (bp->nfloaters > 96 && which == LENS) + return 0; + + switch (which) { + case LENS: xstart = 0; xstop = xstep; break; + case SCLERA: xstart = 0; xstop = xstep * (1 - iris_ratio/2); break; + case IRIS: xstart = xstep * (1 - iris_ratio/2 * 1.2); xstop = xstep; break; + case RETINA: xstart = xstep * (1 - iris_ratio/2 * 1.2); xstop = 0; break; + default: abort(); break; + } + + stacks = (XYZ *) calloc (sizeof(*stacks), xstep + 1); + normals = (XYZ *) calloc (sizeof(*stacks), xstep + 1); + + if (which == RETINA) + { + GLfloat c1[4] = { 0, 0, 0, 1 }; + GLfloat c2[4] = { 0.15, 0, 0, 1 }; + GLfloat th = M_PI * (1.0 - iris_ratio/2); + GLfloat z1 = cos(th); + GLfloat z2 = 0.9; + GLfloat r1 = sin(th); + GLfloat r2 = r1 * 0.3; + + if (!wire) + { + glColor4fv (c1); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c1); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, c1); + } + + /* Draw a black cone to occlude the interior of the eye. */ + + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); + for (i = 0; i <= xstep; i++) + { + GLfloat th2 = i * M_PI * 2 / xstep; + GLfloat x = cos(th2); + GLfloat y = sin(th2); + glNormal3f (0, 0, 1); + glVertex3f (z1, r1 * x, r1 * y); + glNormal3f (0, 0, 1); + glVertex3f (z2, r2 * x, r2 * y); + polys++; + } + glEnd(); + + if (!wire) + { + glColor4fv (c2); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c2); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, c2); + } + + /* Draw a small red circle at the base of the cone. */ + + glBegin (wire ? GL_LINES : GL_TRIANGLE_FAN); + glVertex3f (z2, 0, 0); + glNormal3f (0, 0, 1); + for (i = xstep; i >= 0; i--) + { + GLfloat th2 = i * M_PI * 2 / xstep; + GLfloat x = cos(th2); + GLfloat y = sin(th2); + glVertex3f (z2, r2 * x, r2 * y); + polys++; + } + glEnd(); + return polys; + } + + for (i = xstart; i <= xstop; i++) + { + GLfloat th = i * M_PI / xstep; + GLfloat x = cos(th); + GLfloat y = sin(th); + + /* Bulge the lens, or dimple the iris. */ + if (th > M_PI * (1.0 - iris_ratio/2) && + th < M_PI * (1.0 + iris_ratio/2)) + { + GLfloat r = (1 - th / M_PI) / iris_ratio * 2; + r = cos (M_PI * r / 2); + r *= lens_bulge; + r = r * r * (lens_bulge < 0 ? -1 : 1); + x *= 1+r; + y *= 1+r; + } + + stacks[i].x = x; + stacks[i].y = y; + stacks[i].z = 0; + } + + /* Fill normals with the normal at the center of each face. */ + for (i = xstart; i < xstop; i++) + { + GLfloat dx = stacks[i+1].x - stacks[i].x; + GLfloat dy = stacks[i+1].y - stacks[i].y; + y = dy/dx; + z = sqrt (1 + y*y); + normals[i].x = -y/z; + normals[i].y = 1/z; + normals[i].z = 0; + + if (lens_bulge < 0 && i > xstep * (1 - iris_ratio/2) + 1) + { + normals[i].x *= -1; + normals[i].y *= -1; + } + } + + if (!wire) + glBegin (GL_QUADS); + + for (i = xstart; i < xstop; i++) + { + GLfloat x0 = stacks[i].x; + GLfloat x1 = stacks[i+1].x; + GLfloat r0 = stacks[i].y; + GLfloat r1 = stacks[i+1].y; + + for (j = 0; j < ystep*2; j++) + { + GLfloat tha = j * M_PI / ystep; + GLfloat thb = (j+1) * M_PI / ystep; + GLfloat xa = cos (tha); + GLfloat ya = sin (tha); + GLfloat xb = cos (thb); + GLfloat yb = sin (thb); + + /* Each vertex normal is average of adjacent face normals. */ + + XYZ p1, p2, p3, p4; + XYZ n1, n2, n3, n4; + p1.x = x0; p1.y = r0 * ya; p1.z = r0 * xa; + p2.x = x1; p2.y = r1 * ya; p2.z = r1 * xa; + p3.x = x1; p3.y = r1 * yb; p3.z = r1 * xb; + p4.x = x0; p4.y = r0 * yb; p4.z = r0 * xb; + + if (i == 0) + { + n1.x = 1; n1.y = 0; n1.z = 0; + n4.x = 1; n4.y = 0; n4.z = 0; + } + else + { + x = (normals[i-1].x + normals[i].x) / 2; + y = (normals[i-1].y + normals[i].y) / 2; + n1.x = x; n1.z = y * xa; n1.y = y * ya; + n4.x = x; n4.z = y * xb; n4.y = y * yb; + } + + if (i == xstep-1) + { + n2.x = -1; n2.y = 0; n2.z = 0; + n3.x = -1; n3.y = 0; n3.z = 0; + } + else + { + x = (normals[i+1].x + normals[i].x) / 2; + y = (normals[i+1].y + normals[i].y) / 2; + n2.x = x; n2.z = y * xa; n2.y = y * ya; + n3.x = x; n3.z = y * xb; n3.y = y * yb; + } + +#if 0 + /* Render normals as lines for debugging */ + glBegin(GL_LINES); + glVertex3f(p1.x, p1.y, p1.z); + glVertex3f(p1.x + n1.x * 0.3, p1.y + n1.y * 0.3, p1.z + n1.z * 0.3); + glEnd(); + + glBegin(GL_LINES); + glVertex3f(p2.x, p2.y, p2.z); + glVertex3f(p2.x + n2.x * 0.3, p2.y + n2.y * 0.3, p2.z + n2.z * 0.3); + glEnd(); + + glBegin(GL_LINES); + glVertex3f(p3.x, p3.y, p3.z); + glVertex3f(p3.x + n3.x * 0.3, p3.y + n3.y * 0.3, p3.z + n3.z * 0.3); + glEnd(); + + glBegin(GL_LINES); + glVertex3f(p4.x, p4.y, p4.z); + glVertex3f(p4.x + n4.x * 0.3, p4.y + n4.y * 0.3, p4.z + n4.z * 0.3); + glEnd(); +#endif + + if (wire) + glBegin (GL_LINE_LOOP); + + glTexCoord2f ((j+1) / (GLfloat) ystep / 2, + (i - xstart) / (GLfloat) (xstop - xstart)); + + glNormal3f (n4.x, n4.y, n4.z); + glVertex3f (p4.x, p4.y, p4.z); + + glTexCoord2f ((j+1) / (GLfloat) ystep / 2, + ((i+1) - xstart) / (GLfloat) (xstop - xstart)); + + glNormal3f (n3.x, n3.y, n3.z); + glVertex3f (p3.x, p3.y, p3.z); + + glTexCoord2f (j / (GLfloat) ystep / 2, + ((i+1) - xstart) / (GLfloat) (xstop - xstart)); + + glNormal3f (n2.x, n2.y, n2.z); + glVertex3f (p2.x, p2.y, p2.z); + + glTexCoord2f (j / (GLfloat) ystep / 2, + (i - xstart) / (GLfloat) (xstop - xstart)); + + glNormal3f (n1.x, n1.y, n1.z); + glVertex3f (p1.x, p1.y, p1.z); + + polys++; + + if (wire) + glEnd(); + } + } + + if (!wire) + glEnd(); + + free (stacks); + free (normals); + + return polys; +} + + +ENTRYPOINT void +init_peepers (ModeInfo *mi) +{ + peepers_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_peepers (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + + if (!wire) + { + XImage *xi; + GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0}; + GLfloat amb[4] = {0.1, 0.1, 0.1, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + + glEnable (GL_LIGHTING); + glEnable (GL_LIGHT0); + glEnable (GL_DEPTH_TEST); + glEnable (GL_CULL_FACE); + glEnable (GL_BLEND); + + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + + xi = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + sclera_png, sizeof(sclera_png)); + glGenTextures (1, &bp->sclera_texture); + glBindTexture (GL_TEXTURE_2D, bp->sclera_texture); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_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); + + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + xi->width, xi->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, xi->data); + check_gl_error("texture"); + XDestroyImage (xi); + + xi = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + iris_png, sizeof(iris_png)); + + glGenTextures (1, &bp->iris_texture); + glBindTexture (GL_TEXTURE_2D, bp->iris_texture); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_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); + + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + xi->width, xi->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, xi->data); + check_gl_error("texture"); + XDestroyImage (xi); + + + } + + bp->lens_list = glGenLists (1); + glNewList (bp->lens_list, GL_COMPILE); + bp->eye_polys += draw_ball (mi, LENS); + glEndList (); + + bp->sclera_list = glGenLists (1); + glNewList (bp->sclera_list, GL_COMPILE); + bp->eye_polys += draw_ball (mi, SCLERA); + glEndList (); + + bp->iris_list = glGenLists (1); + glNewList (bp->iris_list, GL_COMPILE); + bp->eye_polys += draw_ball (mi, IRIS); + glEndList (); + + bp->retina_list = glGenLists (1); + glNewList (bp->retina_list, GL_COMPILE); + bp->eye_polys += draw_ball (mi, RETINA); + glEndList (); + + bp->trackball = gltrackball_init (False); + + if (!mode_opt || !*mode_opt || !strcasecmp (mode_opt, "random")) + bp->mode = ((random() & 1) ? BOUNCE : + ((random() & 1) ? SCROLL_LEFT : SCROLL_RIGHT)); + else if (!strcasecmp (mode_opt, "bounce")) + bp->mode = BOUNCE; + else if (!strcasecmp (mode_opt, "scroll")) + bp->mode = (random() & 1) ? SCROLL_LEFT : SCROLL_RIGHT; + else if (!strcasecmp (mode_opt, "xeyes")) + bp->mode = XEYES; + else if (!strcasecmp (mode_opt, "beholder") || + !strcasecmp (mode_opt, "ball")) + bp->mode = BEHOLDER; + else + { + fprintf (stderr, + "%s: mode must be bounce, scroll, random, xeyes or beholder," + " not \"%s\"\n", + progname, mode_opt); + exit (1); + } + + bp->nfloaters = MI_COUNT (mi); + + if (bp->nfloaters <= 0) + { + if (bp->mode == XEYES) + bp->nfloaters = 2 + (random() % 30); + else if (bp->mode == BEHOLDER) + bp->nfloaters = 20 * pow (4, (random() % 4)); + else + bp->nfloaters = 2 + (random() % 6); + } + + if (bp->mode == BEHOLDER) + { + if (bp->nfloaters <= 20) bp->nfloaters = 20; /* This is lame */ + else if (bp->nfloaters <= 80) bp->nfloaters = 80; + else if (bp->nfloaters <= 320) bp->nfloaters = 320; + else bp->nfloaters = 1280; + } + + bp->floaters = (floater *) calloc (bp->nfloaters, sizeof (floater)); + + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + f->idx = i; + f->rot = make_rotator (10.0, 0, 0, + 4, 0.05 * speed, + True); + if (bp->nfloaters == 2) + { + f->x = 10 * (i ? 1 : -1); + } + else if (i != 0) + { + double th = (i - 1) * M_PI*2 / (bp->nfloaters-1); + double r = LEFT * 0.3; + f->x = r * cos(th); + f->z = r * sin(th); + } + + if (bp->mode == SCROLL_LEFT || bp->mode == SCROLL_RIGHT) + { + f->y = f->x; + f->x = 0; + } + + reset_floater (mi, f); + } + + if (bp->mode == XEYES) + layout_grid (mi); + else if (bp->mode == BEHOLDER) + layout_geodesic (mi); + +# ifndef HAVE_JWXYZ /* Real X11 */ +# if 0 /* I wonder if this works? */ + if (bp->mode == XEYES && MI_WIN_IS_INWINDOW (mi)) + { + uint32_t ca = 0; + glClearColor (0, 0, 0, 0); + XChangeProperty (MI_DISPLAY(mi), MI_WINDOW(mi), + XInternAtom (MI_DISPLAY(mi), + "_NET_WM_WINDOW_OPACITY", 0), + XA_CARDINAL, 32, PropModeReplace, + (uint8_t *) &ca, 1); + } +# endif +# endif +} + + +static void +draw_floater (ModeInfo *mi, floater *f, component which) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + double x, y, z; + + GLfloat spc[4] = { 1.0, 1.0, 1.0, 1.0 }; + GLfloat c2[4] = { 1.0, 1.0, 1.0, 1.0 }; + GLfloat c2b[4] = { 1.0, 0.6, 0.6, 1.0 }; + GLfloat c2c[4] = { 1.0, 1.0, 0.65, 1.0 }; + GLfloat c3[4] = { 0.6, 0.6, 0.6, 0.25 }; + + get_position (f->rot, &x, &y, &z, + which == LENS && !bp->button_down_p); + + if (bp->nfloaters == 2 && + f != &bp->floaters[0] && + (bp->mode == BOUNCE || bp->mode == XEYES)) + { + /* When there are exactly two eyes, track them together. */ + floater *f0 = &bp->floaters[0]; + double x0, y0, z0; + get_position (f0->rot, &x0, &y0, &z0, 0); + x = x0; + y = 1-y0; /* This is rotation: what the eye is looking at */ + z = z0; + if (bp->mode != XEYES) + { + f->x = f0->x + f0->scale * 3; + f->y = f0->y; + f->z = f0->z; + } + f->dilation = f0->dilation; + f->focus = f0->focus; + f->track = f0->track; + f->tilt = f0->tilt; + f->scale = f0->scale; + f->jaundice = f0->jaundice; + if (f->focus == ROTATE) + f->focus = f0->focus = TRACK; + memcpy (f->color, f0->color, sizeof(f0->color)); + } + + glPushMatrix(); + glTranslatef (f->x, f->y, f->z); + + /* gltrackball_rotate (bp->trackball); */ + + switch (f->focus) { + case ROTATE: + glRotatef (y * 180, 0, 1, 0); + glRotatef (f->tilt, 0, 0, 1); + break; + case SPIN: + glRotatef (y * 360 + 90, 0, 1, 0); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + break; + case TRACK: + { + GLfloat X, Y, Z; + X = f->track.x - f->x; + Y = f->track.z - f->z; + Z = f->track.y - f->y; + if (X != 0 || Y != 0) + { + GLfloat facing = atan2 (X, Y) * (180 / M_PI); + GLfloat pitch = atan2 (Z, sqrt(X*X + Y*Y)) * (180 / M_PI); + glRotatef (90, 0, 1, 0); + glRotatef (facing, 0, 1, 0); + glRotatef (-pitch, 0, 0, 1); + } + } + + break; + default: + abort(); + } + + glRotatef (f->roll, 1, 0, 0); + glScalef (f->scale, f->scale, f->scale); + + if (! wire) + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + switch (which) { + case RETINA: + if (!wire) + { + glScalef (0.96, 0.96, 0.96); + glCallList (bp->retina_list); + } + break; + + case IRIS: + glColor4fv (f->color); + if (! wire) + { + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spc); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 10); + + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, f->color); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 20); + + glEnable (GL_TEXTURE_2D); + glBindTexture (GL_TEXTURE_2D, bp->iris_texture); + glMatrixMode (GL_TEXTURE); + glLoadIdentity(); + glScalef (1, 1.25 + f->dilation.current * 0.3, 1); + glMatrixMode (GL_MODELVIEW); + } + glScalef (0.96, 0.96, 0.96); + glCallList (bp->iris_list); + + if (! wire) + { + glMatrixMode (GL_TEXTURE); + glLoadIdentity(); + glMatrixMode (GL_MODELVIEW); + } + break; + + case SCLERA: + if (! wire) + { + GLfloat *c = (f->jaundice == 2 ? c2b : f->jaundice == 1 ? c2c : c2); + glColor4fv (c); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); + glBindTexture (GL_TEXTURE_2D, bp->sclera_texture); + + glScalef (0.98, 0.98, 0.98); + glCallList (bp->sclera_list); + } + break; + + case LENS: + glColor4fv (c3); + if (! wire) + { + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c3); + glDisable (GL_TEXTURE_2D); + } + glCallList (bp->lens_list); + break; + + default: + abort(); + break; + } + + glPopMatrix(); +} + + +ENTRYPOINT void +draw_peepers (ModeInfo *mi) +{ + peepers_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glRotatef (current_device_rotation(), 0, 0, 1); + + + /* Scale so that screen is 1 high and w/h wide. */ + glScalef (8, 8, 8); + + mi->polygon_count = 0; + + if (bp->mode == XEYES || bp->mode == BEHOLDER) + { + int i; + track_mouse (mi); + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + f->track = bp->mouse; + f->focus = TRACK; + } + } + +# if 0 + { + /* Draw just one */ + component j; + floater F; + reset_floater(mi, &F); + F.x = F.y = F.z = 0; + F.dx = F.dy = F.dz = 0; + F.ddx = F.ddy = F.ddz = 0; + F.scale = 1; + F.focus = TRACK; + F.dilation.current = 0; + F.track.x = F.track.y = F.track.z = 0; + F.rot = make_rotator (0, 0, 0, 1, 0, False); + glRotatef(180,0,1,0); + glRotatef(15,1,0,0); + for (j = RETINA; j <= LENS; j++) + draw_floater (mi, &F, j); + mi->polygon_count += bp->eye_polys; + } +# else + { + component j; + int i; + for (j = RETINA; j <= TICK; j++) + for (i = 0; i < bp->nfloaters; i++) + { + floater *f = &bp->floaters[i]; + if (j == TICK) + tick_floater (mi, f); + else + draw_floater (mi, f, j); + } + + if (bp->mode != BEHOLDER) + de_collide (mi); + + mi->polygon_count += bp->eye_polys * bp->nfloaters; + } +# endif + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Peepers", peepers) + +#endif /* USE_GL */ diff --git a/hacks/glx/peepers.man b/hacks/glx/peepers.man new file mode 100644 index 0000000..d30c883 --- /dev/null +++ b/hacks/glx/peepers.man @@ -0,0 +1,80 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +peepers - floating eyeballs. +.SH SYNOPSIS +.B peepers +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +[\-mode bounce | scroll | random] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Eyeballs. They float. They bounce. They stare at your cursor. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-count \fInumber\fP +Number of eyes. 0 means random. +.TP 8 +.B \-mode bounce +The eyeballs bounce onto the screen from the bottom. Like a cow. +.TP 8 +.B \-mode scroll +The eyeballs scroll in from the left and right. +.TP 8 +.B \-mode xeyes +The eyeballs remain stationary, but always turn to stare at the mouse +pointer, wherever it happens to be on the screen. Perhaps best used +in conjunction with \fI\-count 2\fP. +.TP 8 +.B \-mode beholder +Render a ball made of eyeballs, all looking at you. Valid \fI\-count\fP +values are 20, 80, 320 or 1280. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2018 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/photopile.c b/hacks/glx/photopile.c new file mode 100644 index 0000000..e060f25 --- /dev/null +++ b/hacks/glx/photopile.c @@ -0,0 +1,833 @@ +/* photopile, Copyright (c) 2008-2018 Jens Kilian + * Based on carousel, Copyright (c) 2005-2008 Jamie Zawinski + * Loads a sequence of images and shuffles them into a pile. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#if defined(HAVE_COCOA) || defined(HAVE_ANDROID) +# define DEF_FONT "OCR A Std 48, Lucida Console 48, Monaco 48" +#elif 0 /* real X11, XQueryFont() */ +# define DEF_FONT "-*-helvetica-bold-r-normal-*-*-480-*-*-*-*-*-*" +#else /* real X11, load_font_retry() */ +# define DEF_FONT "-*-ocr a std-medium-r-*-*-*-480-*-*-m-*-*-*" +#endif + +#define DEFAULTS "*count: 7 \n" \ + "*delay: 10000 \n" \ + "*wireframe: False \n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" \ + "*useSHM: True \n" \ + "*font: " DEF_FONT "\n" \ + "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \ + "*grabDesktopImages: False \n" \ + "*chooseRandomImages: True \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_photopile 0 +# define release_photopile 0 +# define photopile_handle_event xlockmore_no_events + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#ifndef HAVE_JWXYZ +# include /* for XrmDatabase in -debug mode */ +#endif +#include + +#include "xlockmore.h" +#include "grab-ximage.h" +#include "texfont.h" +#include "dropshadow.h" + +#ifdef USE_GL + +# define DEF_SCALE "0.4" +# define DEF_MAX_TILT "50" +# define DEF_SPEED "1.0" +# define DEF_DURATION "5" +# define DEF_MIPMAP "True" +# define DEF_TITLES "True" +# define DEF_POLAROID "True" +# define DEF_CLIP "True" +# define DEF_SHADOWS "True" +# define DEF_DEBUG "False" + +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +typedef struct { + GLfloat x, y; /* position on screen */ + GLfloat angle; /* rotation angle */ + +} position; + +typedef struct { + Bool loaded_p; /* true if image can be drawn */ + + char *title; /* the filename of this image */ + int w, h; /* size in pixels of the image */ + int tw, th; /* size in pixels of the texture */ + XRectangle geom; /* where in the image the bits are */ + + position pos[4]; /* control points for calculating position */ + + GLuint texid; /* GL texture ID */ + +} image; + + +typedef enum { EARLY, SHUFFLE, NORMAL, LOADING } fade_mode; +static int fade_ticks = 60; + +typedef struct { + ModeInfo *mi; + GLXContext *glx_context; + + image *frames; /* pointer to array of images */ + int nframe; /* image being (resp. next to be) loaded */ + + GLuint shadow; + texture_font_data *texfont; + int loading_sw, loading_sh; + + time_t last_time, now; + int draw_tick; + fade_mode mode; + int mode_tick; + +} photopile_state; + +static photopile_state *sss = NULL; + + +/* Command-line arguments + */ +static GLfloat scale; /* Scale factor for loading images. */ +static GLfloat max_tilt; /* Maximum angle from vertical. */ +static GLfloat speed; /* Animation speed scale factor. */ +static int duration; /* Reload images after this long. */ +static Bool mipmap_p; /* Use mipmaps instead of single textures. */ +static Bool titles_p; /* Display image titles. */ +static Bool polaroid_p; /* Use instant-film look for images. */ +static Bool clip_p; /* Clip images instead of scaling for -polaroid. */ +static Bool shadows_p; /* Draw drop shadows. */ +static Bool debug_p; /* Be loud and do weird things. */ + + +static XrmOptionDescRec opts[] = { + {"-scale", ".scale", XrmoptionSepArg, 0 }, + {"-maxTilt", ".maxTilt", XrmoptionSepArg, 0 }, + {"-speed", ".speed", XrmoptionSepArg, 0 }, + {"-duration", ".duration", XrmoptionSepArg, 0 }, + {"-mipmaps", ".mipmap", XrmoptionNoArg, "True" }, + {"-no-mipmaps", ".mipmap", XrmoptionNoArg, "False" }, + {"-titles", ".titles", XrmoptionNoArg, "True" }, + {"-no-titles", ".titles", XrmoptionNoArg, "False" }, + {"-polaroid", ".polaroid", XrmoptionNoArg, "True" }, + {"-no-polaroid", ".polaroid", XrmoptionNoArg, "False" }, + {"-clip", ".clip", XrmoptionNoArg, "True" }, + {"-no-clip", ".clip", XrmoptionNoArg, "False" }, + {"-shadows", ".shadows", XrmoptionNoArg, "True" }, + {"-no-shadows", ".shadows", XrmoptionNoArg, "False" }, + {"-debug", ".debug", XrmoptionNoArg, "True" }, + {"-font", ".font", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + { &scale, "scale", "Scale", DEF_SCALE, t_Float}, + { &max_tilt, "maxTilt", "MaxTilt", DEF_MAX_TILT, t_Float}, + { &speed, "speed", "Speed", DEF_SPEED, t_Float}, + { &duration, "duration", "Duration", DEF_DURATION, t_Int}, + { &mipmap_p, "mipmap", "Mipmap", DEF_MIPMAP, t_Bool}, + { &titles_p, "titles", "Titles", DEF_TITLES, t_Bool}, + { &polaroid_p, "polaroid", "Polaroid", DEF_POLAROID, t_Bool}, + { &clip_p, "clip", "Clip", DEF_CLIP, t_Bool}, + { &shadows_p, "shadows", "Shadows", DEF_SHADOWS, t_Bool}, + { &debug_p, "debug", "Debug", DEF_DEBUG, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt photopile_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Functions to interpolate between image positions. + */ +static position +add_pos(position p, position q) +{ + p.x += q.x; + p.y += q.y; + p.angle += q.angle; + return p; +} + +static position +scale_pos(GLfloat t, position p) +{ + p.x *= t; + p.y *= t; + p.angle *= t; + return p; +} + +static position +linear_combination(GLfloat t, position p, position q) +{ + return add_pos(scale_pos(1.0 - t, p), scale_pos(t, q)); +} + +static position +interpolate(GLfloat t, position p[4]) +{ + /* de Casteljau's algorithm, 4 control points */ + position p10 = linear_combination(t, p[0], p[1]); + position p11 = linear_combination(t, p[1], p[2]); + position p12 = linear_combination(t, p[2], p[3]); + + position p20 = linear_combination(t, p10, p11); + position p21 = linear_combination(t, p11, p12); + + return linear_combination(t, p20, p21); +} + +static position +offset_pos(position p, GLfloat th, GLfloat r) +{ + p.x += cos(th) * r; + p.y += sin(th) * r; + p.angle = (frand(2.0) - 1.0) * max_tilt; + return p; +} + +/* Calculate new positions for all images. + */ +static void +set_new_positions(photopile_state *ss) +{ + ModeInfo *mi = ss->mi; + int i; + + for (i = 0; i < MI_COUNT(mi)+1; ++i) + { + image *frame = ss->frames + i; + GLfloat w = frame->w; + GLfloat h = frame->h; + GLfloat d = sqrt(w*w + h*h); + GLfloat leave = frand(M_PI * 2.0); + GLfloat enter = frand(M_PI * 2.0); + + /* start position */ + frame->pos[0] = frame->pos[3]; + + /* end position */ + frame->pos[3].x = BELLRAND(MI_WIDTH(mi)); + frame->pos[3].y = BELLRAND(MI_HEIGHT(mi)); + frame->pos[3].angle = (frand(2.0) - 1.0) * max_tilt; + + /* Try to keep the images mostly inside the screen bounds */ + frame->pos[3].x = MAX(0.5*w, MIN(MI_WIDTH(mi)-0.5*w, frame->pos[3].x)); + frame->pos[3].y = MAX(0.5*h, MIN(MI_HEIGHT(mi)-0.5*h, frame->pos[3].y)); + + /* intermediate points */ + frame->pos[1] = offset_pos(frame->pos[0], leave, d * (0.5 + frand(1.0))); + frame->pos[2] = offset_pos(frame->pos[3], enter, d * (0.5 + frand(1.0))); + } +} + +/* Callback that tells us that the texture has been loaded. + */ +static void +image_loaded_cb (const char *filename, XRectangle *geom, + int image_width, int image_height, + int texture_width, int texture_height, + void *closure) +{ + photopile_state *ss = (photopile_state *) closure; + ModeInfo *mi = ss->mi; + int wire = MI_IS_WIREFRAME(mi); + image *frame = ss->frames + ss->nframe; + + if (wire) + { + if (random() % 2) + { + frame->w = (int)(MI_WIDTH(mi) * scale) - 1; + frame->h = (int)(MI_HEIGHT(mi) * scale) - 1; + } + else + { + frame->w = (int)(MI_HEIGHT(mi) * scale) - 1; + frame->h = (int)(MI_WIDTH(mi) * scale) - 1; + } + if (frame->w <= 10) frame->w = 10; + if (frame->h <= 10) frame->h = 10; + frame->geom.width = frame->w; + frame->geom.height = frame->h; + goto DONE; + } + + if (image_width == 0 || image_height == 0) + exit (1); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + frame->w = image_width; + frame->h = image_height; + frame->tw = texture_width; + frame->th = texture_height; + frame->geom = *geom; + + if (frame->title) + free (frame->title); + frame->title = (filename ? strdup (filename) : 0); + + /* xscreensaver-getimage returns paths relative to the image directory + now, so leave the sub-directory part in. Unless it's an absolute path. + */ + if (frame->title && frame->title[0] == '/') + { + /* strip filename to part after last /. */ + char *s = strrchr (frame->title, '/'); + if (s) strcpy (frame->title, s+1); + } + + if (debug_p) + fprintf (stderr, "%s: loaded %4d x %-4d %4d x %-4d \"%s\"\n", + progname, + frame->geom.width, + frame->geom.height, + frame->tw, frame->th, + (frame->title ? frame->title : "(null)")); + + DONE: + frame->loaded_p = True; +} + + +/* Load a new file. + */ +static void +load_image (ModeInfo *mi) +{ + photopile_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + image *frame = ss->frames + ss->nframe; + + if (debug_p && !wire && frame->w != 0) + fprintf (stderr, "%s: dropped %4d x %-4d %4d x %-4d \"%s\"\n", + progname, + frame->geom.width, + frame->geom.height, + frame->tw, frame->th, + (frame->title ? frame->title : "(null)")); + + frame->loaded_p = False; + + if (wire) + image_loaded_cb (0, 0, 0, 0, 0, 0, ss); + else + { + int w = MI_WIDTH(mi); + int h = MI_HEIGHT(mi); + int size = (int)((w > h ? w : h) * scale); + if (size <= 10) size = 10; + load_texture_async (mi->xgwa.screen, mi->window, *ss->glx_context, + size, size, + mipmap_p, frame->texid, + image_loaded_cb, ss); + } +} + + +static void +loading_msg (ModeInfo *mi) +{ + photopile_state *ss = &sss[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + const char text[] = "Loading..."; + + if (wire) return; + + if (ss->loading_sw == 0) /* only do this once */ + { + XCharStruct e; + texture_string_metrics (ss->texfont, text, &e, 0, 0); + ss->loading_sw = e.width; + ss->loading_sh = e.ascent + e.descent; + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1); + + glTranslatef ((MI_WIDTH(mi) - ss->loading_sw) / 2, + (MI_HEIGHT(mi) - ss->loading_sh) / 2, + 0); + glColor3f (1, 1, 0); + glEnable (GL_TEXTURE_2D); + glDisable (GL_DEPTH_TEST); + print_texture_string (ss->texfont, text); + glEnable (GL_DEPTH_TEST); + glPopMatrix(); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + + glFinish(); + glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi)); +} + + +static Bool +loading_initial_image (ModeInfo *mi) +{ + photopile_state *ss = &sss[MI_SCREEN(mi)]; + + if (ss->frames[ss->nframe].loaded_p) + { + /* The initial image has been fully loaded, start fading it in. */ + int i; + + for (i = 0; i < ss->nframe; ++i) + { + ss->frames[i].pos[3].x = MI_WIDTH(mi) * 0.5; + ss->frames[i].pos[3].y = MI_HEIGHT(mi) * 0.5; + ss->frames[i].pos[3].angle = 0.0; + } + set_new_positions(ss); + + ss->mode = SHUFFLE; + ss->mode_tick = fade_ticks / speed; + } + else + { + loading_msg(mi); + } + + return (ss->mode == EARLY); +} + + +ENTRYPOINT void +reshape_photopile (ModeInfo *mi, int width, int height) +{ + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, h, 1); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +/* Kludge to add "-v" to invocation of "xscreensaver-getimage" in -debug mode + */ +static void +hack_resources (Display *dpy) +{ +# ifndef HAVE_JWXYZ + char *res = "desktopGrabber"; + char *val = get_string_resource (dpy, res, "DesktopGrabber"); + char buf1[255]; + char buf2[255]; + XrmValue value; + XrmDatabase db = XtDatabase (dpy); + sprintf (buf1, "%.100s.%.100s", progname, res); + sprintf (buf2, "%.200s -v", val); + value.addr = buf2; + value.size = strlen(buf2); + XrmPutResource (&db, buf1, "String", &value); +# endif /* !HAVE_JWXYZ */ +} + + +ENTRYPOINT void +init_photopile (ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + photopile_state *ss; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, sss); + ss = &sss[screen]; + ss->mi = mi; + + if ((ss->glx_context = init_GL(mi)) != NULL) { + reshape_photopile (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + } else { + MI_CLEARWINDOW(mi); + } + + ss->shadow = init_drop_shadow(); + ss->texfont = load_texture_font (MI_DISPLAY(mi), "font"); + + if (debug_p) + hack_resources (MI_DISPLAY (mi)); + + ss->frames = (image *)calloc (MI_COUNT(mi) + 1, sizeof(image)); + ss->nframe = 0; + if (!wire) + { + int i; + for (i = 0; i < MI_COUNT(mi) + 1; ++i) + { + glGenTextures (1, &(ss->frames[i].texid)); + if (ss->frames[i].texid <= 0) abort(); + } + } + + ss->mode = EARLY; + load_image(mi); /* start loading the first image */ +} + + +static void +draw_image (ModeInfo *mi, int i, GLfloat t, GLfloat s, GLfloat z) +{ + int wire = MI_IS_WIREFRAME(mi); + photopile_state *ss = &sss[MI_SCREEN(mi)]; + image *frame = ss->frames + i; + + position pos = interpolate(t, frame->pos); + GLfloat w = frame->geom.width * 0.5; + GLfloat h = frame->geom.height * 0.5; + GLfloat z1 = z - 0.25 / (MI_COUNT(mi) + 1); + GLfloat z2 = z - 0.5 / (MI_COUNT(mi) + 1); + GLfloat w1 = w; + GLfloat h1 = h; + GLfloat h2 = h; + + if (polaroid_p) + { + GLfloat minSize = MIN(w, h); + GLfloat maxSize = MAX(w, h); + + /* Clip or scale image to fit in the frame. + */ + if (clip_p) + { + w = h = minSize; + } + else + { + GLfloat scale = minSize / maxSize; + w *= scale; + h *= scale; + } + + w1 = minSize * 1.16; /* enlarge frame border */ + h1 = minSize * 1.5; + h2 = w1; + s /= 1.5; /* compensate for border size */ + } + + glPushMatrix(); + + /* Position and scale this image. + */ + glTranslatef (pos.x, pos.y, 0); + glRotatef (pos.angle, 0, 0, 1); + glScalef (s, s, 1); + + /* Draw the drop shadow. */ + if (shadows_p && !wire) + { + glColor3f (0, 0, 0); + draw_drop_shadow(ss->shadow, -w1, -h1, z2, 2.0 * w1, h1 + h2, 20.0); + glDisable (GL_BLEND); + } + + glDisable (GL_LIGHTING); + glEnable (GL_DEPTH_TEST); + glDisable (GL_CULL_FACE); + + /* Draw the retro instant-film frame. + */ + if (polaroid_p) + { + if (! wire) + { + glShadeModel (GL_SMOOTH); + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + + glColor3f (1, 1, 1); + glBegin (GL_QUADS); + glVertex3f (-w1, -h1, z2); + glVertex3f ( w1, -h1, z2); + glVertex3f ( w1, h2, z2); + glVertex3f (-w1, h2, z2); + glEnd(); + } + + glLineWidth (1.0); + glColor3f (0.5, 0.5, 0.5); + glBegin (GL_LINE_LOOP); + glVertex3f (-w1, -h1, z); + glVertex3f ( w1, -h1, z); + glVertex3f ( w1, h2, z); + glVertex3f (-w1, h2, z); + glEnd(); + } + + /* Draw the image quad. + */ + if (! wire) + { + GLfloat texw = w / frame->tw; + GLfloat texh = h / frame->th; + GLfloat texx = (frame->geom.x + 0.5 * frame->geom.width) / frame->tw; + GLfloat texy = (frame->geom.y + 0.5 * frame->geom.height) / frame->th; + + glBindTexture (GL_TEXTURE_2D, frame->texid); + glEnable (GL_TEXTURE_2D); + glColor3f (1, 1, 1); + glBegin (GL_QUADS); + glTexCoord2f (texx - texw, texy + texh); glVertex3f (-w, -h, z1); + glTexCoord2f (texx + texw, texy + texh); glVertex3f ( w, -h, z1); + glTexCoord2f (texx + texw, texy - texh); glVertex3f ( w, h, z1); + glTexCoord2f (texx - texw, texy - texh); glVertex3f (-w, h, z1); + glEnd(); + glDisable (GL_TEXTURE_2D); + } + + /* Draw a box around it. + */ + if (! wire) + { + glShadeModel (GL_SMOOTH); + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + } + glLineWidth (1.0); + glColor3f (0.5, 0.5, 0.5); + glBegin (GL_LINE_LOOP); + glVertex3f (-w, -h, z); + glVertex3f ( w, -h, z); + glVertex3f ( w, h, z); + glVertex3f (-w, h, z); + glEnd(); + + /* Draw a title under the image. + */ + if (titles_p) + { + int sw = 0, sh = 0; + int ascent, descent; + GLfloat tw = w * 2; + GLfloat th = h1 - h; + GLfloat scale = 1; + const char *title = frame->title ? frame->title : "(untitled)"; + XCharStruct e; + + texture_string_metrics (ss->texfont, title, &e, &ascent, &descent); + sw = e.width; + sh = ascent; /* + descent; */ + + /* Scale the text to match the pixel size of the photo */ + scale *= w / 150.0; + +# if defined(HAVE_COCOA) + scale /= 2; + if (MI_WIDTH(mi) > 2560) scale /= 2; /* Retina displays */ +# endif + +# if defined(HAVE_MOBILE) + scale /= 2; +# endif + + /* Clip characters off the left end of the string until it fits. */ + if (clip_p || polaroid_p) + while (sw * scale > tw && strlen (title) > 10) + { + title++; + texture_string_metrics (ss->texfont, title, &e, &ascent, &descent); + sw = e.width; + } + + if (th <= 0) /* Non-polaroid */ + th = -sh * 1.2; + + glTranslatef (-w, -h1, 0); + glTranslatef ((tw - sw*scale) / 2, (th - sh*scale) / 2, 0); + + glScalef (scale, scale, 1); + + if (wire || !polaroid_p) + { + glColor3f (1, 1, 1); + } + else + { + glColor3f (0.5, 0.5, 0.5); + } + + if (!wire) + { + glEnable (GL_TEXTURE_2D); + glEnable (GL_BLEND); + glDisable (GL_DEPTH_TEST); + print_texture_string (ss->texfont, title); + glEnable (GL_DEPTH_TEST); + } + else + { + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (sw, 0, 0); + glVertex3f (sw, sh, 0); + glVertex3f (0, sh, 0); + glEnd(); + } + + } + + glPopMatrix(); +} + + +ENTRYPOINT void +draw_photopile (ModeInfo *mi) +{ + photopile_state *ss = &sss[MI_SCREEN(mi)]; + int i; + + if (!ss->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context)); + + if (ss->mode == EARLY) + if (loading_initial_image (mi)) + return; + + /* Only check the wall clock every 10 frames */ + if (ss->now == 0 || ss->draw_tick++ > 10) + { + ss->now = time((time_t *) 0); + if (ss->last_time == 0) ss->last_time = ss->now; + ss->draw_tick = 0; + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + { + GLfloat t; + + glPushMatrix(); + glTranslatef (MI_WIDTH(mi)/2, MI_HEIGHT(mi)/2, 0); + glRotatef(current_device_rotation(), 0, 0, 1); + glTranslatef (-MI_WIDTH(mi)/2, -MI_HEIGHT(mi)/2, 0); + + /* Handle state transitions. */ + switch (ss->mode) + { + case SHUFFLE: + if (--ss->mode_tick <= 0) + { + ss->nframe = (ss->nframe+1) % (MI_COUNT(mi)+1); + + ss->mode = NORMAL; + ss->last_time = time((time_t *) 0); + } + break; + case NORMAL: + if (ss->now - ss->last_time > duration) + { + ss->mode = LOADING; + load_image(mi); + } + break; + case LOADING: + if (ss->frames[ss->nframe].loaded_p) + { + set_new_positions(ss); + ss->mode = SHUFFLE; + ss->mode_tick = fade_ticks / speed; + } + break; + default: + abort(); + } + + t = 1.0 - ss->mode_tick / (fade_ticks / speed); + t = 0.5 * (1.0 - cos(M_PI * t)); + + /* Draw the images. */ + for (i = 0; i < MI_COUNT(mi) + (ss->mode == SHUFFLE); ++i) + { + int j = (ss->nframe + i + 1) % (MI_COUNT(mi) + 1); + + if (ss->frames[j].loaded_p) + { + GLfloat s = 1.0; + GLfloat z = (GLfloat)i / (MI_COUNT(mi) + 1); + + switch (ss->mode) + { + case SHUFFLE: + if (i == MI_COUNT(mi)) + { + s *= t; + } + else if (i == 0) + { + s *= 1.0 - t; + } + break; + case NORMAL: + case LOADING: + t = 1.0; + break; + default: + abort(); + } + + draw_image(mi, j, t, s, z); + } + } + glPopMatrix(); + } + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi)); +} + +XSCREENSAVER_MODULE ("Photopile", photopile) + +#endif /* USE_GL */ diff --git a/hacks/glx/photopile.man b/hacks/glx/photopile.man new file mode 100644 index 0000000..c3dc601 --- /dev/null +++ b/hacks/glx/photopile.man @@ -0,0 +1,113 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +photopile - displays multiple images in a periodically shuffled pile +.SH SYNOPSIS +.B photopile +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-count \fIint\fP] +[\-scale \fIfactor\fP] +[\-maxTilt \fIdegrees\fP] +[\-titles | \-no\-titles] +[\-polaroid | \-no\-polaroid] +[\-shadows | \-no\-shadows] +[\-font \fIfont\fP] +[\-speed \fIratio\fP] +[\-duration \fIseconds\fP] +[\-fps] +[\-debug] +[\-wireframe] +.SH DESCRIPTION +Loads several random images, and displays them as if lying in a random pile. +The pile is periodically reshuffled, with new images coming in and old ones +being thrown out. + +This program requires a good video card capable of supporting large +textures. + +To specify the directory that images are loaded from, run +.BR xscreensaver-demo (1) +and click on the "Advanced" tab. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-count \fIint\fP +How many images to display. Default 7. +.TP 8 +.B \-scale \fIfactor\fP +Size of images in relation to the size of the window. Default 0.4. +.TP 8 +.B \-maxTilt \fIdegrees\fP +Maximum deviation from vertical. Default 50 degrees. +.TP 8 +.B \-duration \fIseconds\fP +Every \fIduration\fP seconds, one of the images will be replaced +with a new one. Default 5 seconds. +.TP 8 +.B \-speed \fIratio\fP +Speed up or slow down the animation. 0.5 means half as fast as the +default; 2.0 means twice as fast. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-titles \fB| \-no\-titles\fP +Whether to display the file names of the images beneath them. Default: yes. +.TP 8 +.B \-polaroid \fB| \-no\-polaroid\fP +Whether to simulate images taken by an instant camera. Default: yes. +.TP 8 +.B \-shadows \fB| \-no\-shadows\fP +Whether to draw images with drop shadows. Default: no. +.TP 8 +.B \-font \fIfont-name\fP +The font to use for the initial loading screen and for image titles. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-debug +Prints debugging info to stderr. +.TP 8 +.B \-wireframe +Another debug mode. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver-demo (1) +.BR xscreensaver-getimage (1) +.BR xscreensaver (1) +.BR carousel (MANSUFFIX) +.BR glslideshow (MANSUFFIX) +.SH COPYRIGHT +Copyright \(co 2005 by Jamie Zawinski. +Copyright \(co 2008 by Jens Kilian. + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +Jens Kilian. diff --git a/hacks/glx/pinion.c b/hacks/glx/pinion.c new file mode 100644 index 0000000..f6793eb --- /dev/null +++ b/hacks/glx/pinion.c @@ -0,0 +1,1470 @@ +/* pinion, Copyright (c) 2004-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 15000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*titleFont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \ + "*titleFont2: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*\n" \ + "*titleFont3: -*-helvetica-medium-r-normal-*-*-80-*-*-*-*-*-*\n" \ + +# define free_pinion 0 +# define release_pinion 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +#include "xlockmore.h" +#include "normals.h" +#include "gltrackball.h" +#include "texfont.h" +#include "involute.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPIN_SPEED "1.0" +#define DEF_SCROLL_SPEED "1.0" +#define DEF_GEAR_SIZE "1.0" +#define DEF_MAX_RPM "900" + +typedef struct { + GLXContext *glx_context; + GLfloat vp_left, vp_right, vp_top, vp_bottom; /* default visible area */ + GLfloat vp_width, vp_height; + GLfloat render_left, render_right; /* area in which gears are displayed */ + GLfloat layout_left, layout_right; /* layout region, on the right side */ + + int ngears; + int gears_size; + gear **gears; + + trackball_state *trackball; + Bool button_down_p; + unsigned long mouse_gear_id; + + texture_font_data *font1, *font2, *font3; + + int draw_tick; + + GLfloat plane_displacement; /* distance between coaxial gears */ + + int debug_size_failures; /* for debugging messages */ + int debug_position_failures; + unsigned long current_length; /* gear count in current train */ + unsigned long current_blur_length; /* how long have we been blurring? */ + +} pinion_configuration; + + +static pinion_configuration *pps = NULL; + +/* command line arguments */ +static GLfloat spin_speed, scroll_speed, gear_size, max_rpm; + +static Bool verbose_p = False; /* print progress on stderr */ +static Bool debug_p = False; /* render as flat schematic */ + +/* internal debugging variables */ +static Bool debug_placement_p = False; /* extreme verbosity on stderr */ +static Bool debug_one_gear_p = False; /* draw one big stationary gear */ + + +static XrmOptionDescRec opts[] = { + { "-spin", ".spinSpeed", XrmoptionSepArg, 0 }, + { "-scroll", ".scrollSpeed", XrmoptionSepArg, 0 }, + { "-size", ".gearSize", XrmoptionSepArg, 0 }, + { "-max-rpm",".maxRPM", XrmoptionSepArg, 0 }, + { "-debug", ".debug", XrmoptionNoArg, "True" }, + { "-verbose",".verbose", XrmoptionNoArg, "True" }, +}; + +static argtype vars[] = { + {&spin_speed, "spinSpeed", "SpinSpeed", DEF_SPIN_SPEED, t_Float}, + {&scroll_speed, "scrollSpeed", "ScrollSpeed", DEF_SCROLL_SPEED, t_Float}, + {&gear_size, "gearSize", "GearSize", DEF_GEAR_SIZE, t_Float}, + {&max_rpm, "maxRPM", "MaxRPM", DEF_MAX_RPM, t_Float}, + {&debug_p, "debug", "Debug", "False", t_Bool}, + {&verbose_p, "verbose", "Verbose", "False", t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt pinion_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Font stuff + */ + +static void +load_fonts (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + pp->font1 = load_texture_font (mi->dpy, "titleFont"); + pp->font2 = load_texture_font (mi->dpy, "titleFont2"); + pp->font3 = load_texture_font (mi->dpy, "titleFont3"); +} + + + +static void rpm_string (double rpm, char *s); + +static void +draw_label (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + char label[1024]; + int i; + gear *g = 0; + + if (pp->mouse_gear_id) + for (i = 0; i < pp->ngears; i++) + if (pp->gears[i]->id == pp->mouse_gear_id) + { + g = pp->gears[i]; + break; + } + + if (!g) + *label = 0; + else + { + sprintf (label, "%d teeth\n", (int) g->nteeth); + rpm_string (g->rpm, label + strlen(label)); + if (debug_p) + sprintf (label + strlen (label), "\nPolys: %d\nModel: %s (%.2f)\n", + g->polygons, + (g->size == INVOLUTE_SMALL ? "small" : + g->size == INVOLUTE_MEDIUM ? "medium" + : "large"), + g->tooth_h * MI_HEIGHT(mi)); + } + + if (*label) + { + texture_font_data *fd; + if (MI_WIDTH(mi) >= 500 && MI_HEIGHT(mi) >= 375) + fd = pp->font1; + else if (MI_WIDTH(mi) >= 350 && MI_HEIGHT(mi) >= 260) + fd = pp->font2; + else + fd = pp->font3; + + glColor3f (0.8, 0.8, 0); + print_texture_label (mi->dpy, fd, + mi->xgwa.width, mi->xgwa.height, + 1, label); + } +} + + +/* Some utilities + */ + + +/* Find the gear in the scene that is farthest to the right or left. + */ +static gear * +farthest_gear (ModeInfo *mi, Bool left_p) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + int i; + gear *rg = 0; + double x = (left_p ? 999999 : -999999); + for (i = 0; i < pp->ngears; i++) + { + gear *g = pp->gears[i]; + double gx = g->x + ((g->r + g->tooth_h) * (left_p ? -1 : 1)); + if (left_p ? (x > gx) : (x < gx)) + { + rg = g; + x = gx; + } + } + return rg; +} + + +/* Compute the revolutions per minute of a gear. + */ +static void +compute_rpm (ModeInfo *mi, gear *g) +{ + double fps, rpf, rps; + fps = (MI_PAUSE(mi) == 0 ? 999999 : 1000000.0 / MI_PAUSE(mi)); + + if (fps > 150) fps = 150; /* let's be reasonable... */ + if (fps < 10) fps = 10; + + rpf = (g->ratio * spin_speed) / 360.0; /* rotations per frame */ + rps = rpf * fps; /* rotations per second */ + g->rpm = rps * 60; +} + +/* Prints the RPM into a string, doing fancy float formatting. + */ +static void +rpm_string (double rpm, char *s) +{ + char buf[30]; + int L; + if (rpm >= 0.1) sprintf (buf, "%.2f", rpm); + else if (rpm >= 0.001) sprintf (buf, "%.4f", rpm); + else if (rpm >= 0.00001) sprintf (buf, "%.8f", rpm); + else sprintf (buf, "%.16f",rpm); + + L = strlen(buf); + while (buf[L-1] == '0') buf[--L] = 0; + if (buf[L-1] == '.') buf[--L] = 0; + strcpy (s, buf); + strcat (s, " RPM"); +} + + + +/* Layout and stuff. + */ + + +/* Create and return a new gear sized for placement next to or on top of + the given parent gear (if any.) Returns 0 if out of memory. + */ +static gear * +new_gear (ModeInfo *mi, gear *parent, Bool coaxial_p) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + gear *g = (gear *) calloc (1, sizeof (*g)); + int loop_count = 0; + static unsigned long id = 0; /* only used in debugging output */ + + if (!g) return 0; + if (coaxial_p && !parent) abort(); + g->id = ++id; + + g->coax_displacement = pp->plane_displacement; + + while (1) + { + loop_count++; + if (loop_count > 1000) + /* The only time we loop in here is when making a coaxial gear, and + trying to pick a radius that is either significantly larger or + smaller than its parent. That shouldn't be hard, so something + must be really wrong if we can't do that in only a few tries. + */ + abort(); + + /* Pick the size of the teeth. + */ + if (parent && !coaxial_p) /* adjascent gears need matching teeth */ + { + g->tooth_w = parent->tooth_w; + g->tooth_h = parent->tooth_h; + g->thickness = parent->thickness; + g->thickness2 = parent->thickness2; + g->thickness3 = parent->thickness3; + } + else /* gears that begin trains get any size they want */ + { + double scale = (1.0 + BELLRAND(4.0)) * gear_size; + g->tooth_w = 0.007 * scale; + g->tooth_h = 0.005 * scale; + g->thickness = g->tooth_h * (0.1 + BELLRAND(1.5)); + g->thickness2 = g->thickness / 4; + g->thickness3 = g->thickness; + } + + /* Pick the number of teeth, and thus, the radius. + */ + { + double c; + + AGAIN: + g->nteeth = 3 + (random() % 97); /* from 3 to 100 teeth */ + + if (g->nteeth < 7 && (random() % 5) != 0) + goto AGAIN; /* Let's make very small tooth-counts more rare */ + + c = g->nteeth * g->tooth_w * 2; /* circumference = teeth + gaps */ + g->r = c / (M_PI * 2); /* c = 2 pi r */ + } + + + /* Are we done now? + */ + if (! coaxial_p) break; /* yes */ + if (g->nteeth == parent->nteeth) continue; /* ugly */ + if (g->r < parent->r * 0.6) break; /* g much smaller than parent */ + if (parent->r < g->r * 0.6) break; /* g much larger than parent */ + } + + /* g->tooth_slope = (parent ? -parent->tooth_slope : 4); */ + + if (debug_one_gear_p) + g->tooth_slope = frand(20)-10; + + + /* Colorize + */ + g->color[0] = 0.5 + frand(0.5); + g->color[1] = 0.5 + frand(0.5); + g->color[2] = 0.5 + frand(0.5); + g->color[3] = 1.0; + + g->color2[0] = g->color[0] * 0.85; + g->color2[1] = g->color[1] * 0.85; + g->color2[2] = g->color[2] * 0.85; + g->color2[3] = g->color[3]; + + + /* Decide on shape of gear interior: + - just a ring with teeth; + - that, plus a thinner in-set "plate" in the middle; + - that, plus a thin raised "lip" on the inner plate; + - or, a wide lip (really, a thicker third inner plate.) + */ + if ((random() % 10) == 0) + { + /* inner_r can go all the way in; there's no inset disc. */ + g->inner_r = (g->r * 0.1) + frand((g->r - g->tooth_h/2) * 0.8); + g->inner_r2 = 0; + g->inner_r3 = 0; + } + else + { + /* inner_r doesn't go in very far; inner_r2 is an inset disc. */ + g->inner_r = (g->r * 0.5) + frand((g->r - g->tooth_h) * 0.4); + g->inner_r2 = (g->r * 0.1) + frand(g->inner_r * 0.5); + g->inner_r3 = 0; + + if (g->inner_r2 > (g->r * 0.2)) + { + int nn = (random() % 10); + if (nn <= 2) + g->inner_r3 = (g->r * 0.1) + frand(g->inner_r2 * 0.2); + else if (nn <= 7 && g->inner_r2 >= 0.1) + g->inner_r3 = g->inner_r2 - 0.01; + } + } + + /* Coaxial gears need to have the same innermost hole size (for the axle.) + Use whichever of the two is smaller. (Modifies parent.) + */ + if (coaxial_p) + { + double hole1 = (g->inner_r3 ? g->inner_r3 : + g->inner_r2 ? g->inner_r2 : + g->inner_r); + double hole2 = (parent->inner_r3 ? parent->inner_r3 : + parent->inner_r2 ? parent->inner_r2 : + parent->inner_r); + double hole = (hole1 < hole2 ? hole1 : hole2); + if (hole <= 0) abort(); + + if (g->inner_r3) g->inner_r3 = hole; + else if (g->inner_r2) g->inner_r2 = hole; + else g->inner_r = hole; + + if (parent->inner_r3) parent->inner_r3 = hole; + else if (parent->inner_r2) parent->inner_r2 = hole; + else parent->inner_r = hole; + } + + /* If we have three discs, sometimes make the middle disc be spokes. + */ + if (g->inner_r3 && ((random() % 5) == 0)) + { + g->spokes = 2 + BELLRAND (5); + g->spoke_thickness = 1 + frand(7.0); + if (g->spokes == 2 && g->spoke_thickness < 2) + g->spoke_thickness += 1; + } + + /* Sometimes add little nubbly bits, if there is room. + */ + if (g->nteeth > 5) + { + double size = 0; + involute_biggest_ring (g, 0, &size, 0); + if (size > g->r * 0.2 && (random() % 5) == 0) + { + g->nubs = 1 + (random() % 16); + if (g->nubs > 8) g->nubs = 1; + } + } + + if (g->inner_r3 > g->inner_r2) abort(); + if (g->inner_r2 > g->inner_r) abort(); + if (g->inner_r > g->r) abort(); + + /* Decide how complex the polygon model should be. + */ + { + double pix = g->tooth_h * MI_HEIGHT(mi); /* approx. tooth size in pixels */ + if (pix <= 2.5) g->size = INVOLUTE_SMALL; + else if (pix <= 3.5) g->size = INVOLUTE_MEDIUM; + else if (pix <= 25) g->size = INVOLUTE_LARGE; + else g->size = INVOLUTE_HUGE; + } + + g->base_p = !parent; + + return g; +} + + +/* Given a newly-created gear, place it next to its parent in the scene, + with its teeth meshed and the proper velocity. Returns False if it + didn't work. (Call this a bunch of times until either it works, or + you decide it's probably not going to.) + */ +static Bool +place_gear (ModeInfo *mi, gear *g, gear *parent, Bool coaxial_p) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + + /* If this gear takes up more than 1/3rd of the screen, it's no good. + */ + if (((g->r + g->tooth_h) * (6 / gear_size)) >= pp->vp_width || + ((g->r + g->tooth_h) * (6 / gear_size)) >= pp->vp_height) + { + if (verbose_p && debug_placement_p && 0) + fprintf (stderr, + "%s: placement: too big: %.2f @ %.2f vs %.2f x %.2f\n", + progname, + (g->r + g->tooth_h), gear_size, + pp->vp_width, pp->vp_height); + pp->debug_size_failures++; + return False; + } + + /* Compute this gear's velocity. + */ + if (! parent) + { + g->ratio = 0.8 + BELLRAND(0.4); /* 0.8-1.2 = 8-12rpm @ 60fps */ + g->th = frand (90) * ((random() & 1) ? 1.0 : -1.0); + } + else if (coaxial_p) + { + g->ratio = parent->ratio; /* bound gears have the same ratio */ + g->th = parent->th; + g->rpm = parent->rpm; + g->wobble = parent->wobble; + } + else + { + /* Gearing ratio is the ratio of the number of teeth to previous gear + (which is also the ratio of the circumferences.) + */ + g->ratio = (double) parent->nteeth / (double) g->nteeth; + + /* Set our initial rotation to match that of the previous gear, + multiplied by the gearing ratio. (This is finessed later, + once we know the exact position of the gear relative to its + parent.) + */ + g->th = -(parent->th * g->ratio); + + if (g->nteeth & 1) /* rotate 1/2 tooth-size if odd number of teeth */ + { + double off = (180.0 / g->nteeth); + if (g->th > 0) + g->th += off; + else + g->th -= off; + } + + /* ratios are cumulative for all gears in the train. */ + g->ratio *= parent->ratio; + } + + + /* Place the gear relative to the parent. + */ + + if (! parent) + { + gear *rg = farthest_gear (mi, False); + double right = (rg ? rg->x + rg->r + rg->tooth_h : 0); + if (right < pp->layout_left) /* place off screen */ + right = pp->layout_left; + + g->x = right + g->r + g->tooth_h + (0.01 / gear_size); + g->y = 0; + g->z = 0; + + if (debug_one_gear_p) + g->x = 0; + } + else if (coaxial_p) + { + double off = pp->plane_displacement; + + g->x = parent->x; + g->y = parent->y; + g->z = parent->z + (g->r > parent->r /* small gear on top */ + ? -off : off); + + if (parent->r > g->r) /* mark which is top and which is bottom */ + { + parent->coax_p = 1; + g->coax_p = 2; + parent->wobble = 0; /* looks bad when axle moves */ + } + else + { + parent->coax_p = 2; + g->coax_p = 1; + g->wobble = 0; + } + + g->coax_thickness = parent->thickness; + parent->coax_thickness = g->thickness; + + /* Don't let the train get too close to or far from the screen. + If we're getting too close, give up on this gear. + (But getting very far away is fine.) + */ + if (g->z >= off * 4 || + g->z <= -off * 4) + { + if (verbose_p && debug_placement_p) + fprintf (stderr, "%s: placement: bad depth: %.2f\n", + progname, g->z); + pp->debug_position_failures++; + return False; + } + } + else /* position it somewhere next to the parent. */ + { + double r_off = parent->r + g->r; + int angle; + + if ((random() % 3) != 0) + angle = (random() % 240) - 120; /* mostly -120 to +120 degrees */ + else + angle = (random() % 360) - 180; /* sometimes -180 to +180 degrees */ + + g->x = parent->x + (cos ((double) angle * (M_PI / 180)) * r_off); + g->y = parent->y + (sin ((double) angle * (M_PI / 180)) * r_off); + g->z = parent->z; + + /* If the angle we picked would have positioned this gear + more than halfway off screen, that's no good. */ + if (g->y > pp->vp_top || + g->y < pp->vp_bottom) + { + if (verbose_p && debug_placement_p) + fprintf (stderr, "%s: placement: out of bounds: %s\n", + progname, (g->y > pp->vp_top ? "top" : "bottom")); + pp->debug_position_failures++; + return False; + } + + /* avoid accidentally changing sign of "th" in the math below. */ + g->th += (g->th > 0 ? 360 : -360); + + /* Adjust the rotation of the gear so that its teeth line up with its + parent, based on the position of the gear and the current rotation + of the parent. + */ + { + double p_c = 2 * M_PI * parent->r; /* circumference of parent */ + double g_c = 2 * M_PI * g->r; /* circumference of g */ + + double p_t = p_c * (angle/360.0); /* distance travelled along + circumference of parent when + moving "angle" degrees along + parent. */ + double g_rat = p_t / g_c; /* if travelling that distance + along circumference of g, + ratio of g's circumference + travelled. */ + double g_th = 360.0 * g_rat; /* that ratio in degrees */ + + g->th += angle + g_th; + } + } + + if (debug_one_gear_p) + { + compute_rpm (mi, g); + return True; + } + + /* If the position we picked for this gear would cause it to already + be visible on the screen, give up. This can happen when the train + is growing backwards, and we don't want to see gears flash into + existence. + */ + if (g->x - g->r - g->tooth_h < pp->render_right) + { + if (verbose_p && debug_placement_p) + fprintf (stderr, "%s: placement: out of bounds: left\n", progname); + pp->debug_position_failures++; + return False; + } + + /* If the position we picked for this gear causes it to overlap + with any earlier gear in the train, give up. + */ + { + int i; + + for (i = pp->ngears-1; i >= 0; i--) + { + gear *og = pp->gears[i]; + + if (og == g) continue; + if (og == parent) continue; + if (g->z != og->z) continue; /* Ignore unless on same layer */ + + /* Collision detection without sqrt: + d = sqrt(a^2 + b^2) d^2 = a^2 + b^2 + d < r1 + r2 d^2 < (r1 + r2)^2 + */ + if (((g->x - og->x) * (g->x - og->x) + + (g->y - og->y) * (g->y - og->y)) < + ((g->r + g->tooth_h + og->r + og->tooth_h) * + (g->r + g->tooth_h + og->r + og->tooth_h))) + { + if (verbose_p && debug_placement_p) + fprintf (stderr, "%s: placement: collision with %lu\n", + progname, og->id); + pp->debug_position_failures++; + return False; + } + } + } + + compute_rpm (mi, g); + + + /* Make deeper gears be darker. + */ + { + double depth = g->z / pp->plane_displacement; + double brightness = 1 + (depth / 6); + double limit = 0.4; + if (brightness < limit) brightness = limit; + if (brightness > 1/limit) brightness = 1/limit; + g->color[0] *= brightness; + g->color[1] *= brightness; + g->color[2] *= brightness; + g->color2[0] *= brightness; + g->color2[1] *= brightness; + g->color2[2] *= brightness; + } + + /* If a single frame of animation would cause the gear to rotate by + more than 1/2 the size of a single tooth, then it won't look right: + the gear will appear to be turning at some lower harmonic of its + actual speed. + */ + { + double ratio = g->ratio * spin_speed; + double blur_limit = 180.0 / g->nteeth; + + if (ratio > blur_limit) + g->motion_blur_p = 1; + + if (!coaxial_p) + { + /* ride until the wheels fall off... */ + if (ratio > blur_limit * 0.7) g->wobble += (random() % 2); + if (ratio > blur_limit * 0.9) g->wobble += (random() % 2); + if (ratio > blur_limit * 1.1) g->wobble += (random() % 2); + if (ratio > blur_limit * 1.3) g->wobble += (random() % 2); + if (ratio > blur_limit * 1.5) g->wobble += (random() % 2); + if (ratio > blur_limit * 1.7) g->wobble += (random() % 2); + } + } + + return True; +} + +static void +free_gear (gear *g) +{ + if (g->dlist) + glDeleteLists (g->dlist, 1); + free (g); +} + + +/* Make a new gear, place it next to its parent in the scene, + with its teeth meshed and the proper velocity. Returns the gear; + or 0 if it didn't work. (Call this a bunch of times until either + it works, or you decide it's probably not going to.) + */ +static gear * +place_new_gear (ModeInfo *mi, gear *parent, Bool coaxial_p) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + int loop_count = 0; + gear *g = 0; + + while (1) + { + loop_count++; + if (loop_count >= 100) + { + if (g) + free_gear (g); + g = 0; + break; + } + + g = new_gear (mi, parent, coaxial_p); + if (!g) return 0; /* out of memory? */ + + if (place_gear (mi, g, parent, coaxial_p)) + break; + } + + if (! g) return 0; + + /* We got a gear, and it is properly positioned. + Insert it in the scene. + */ + if (pp->ngears + 2 >= pp->gears_size) + { + pp->gears_size += 100; + pp->gears = (gear **) realloc (pp->gears, + pp->gears_size * sizeof (*pp->gears)); + if (! pp->gears) + { + fprintf (stderr, "%s: out of memory (%d gears)\n", + progname, pp->gears_size); + } + } + + pp->gears[pp->ngears++] = g; + return g; +} + + +static void delete_gear (ModeInfo *mi, gear *g); + +static void +push_gear (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + gear *g; + gear *parent = (pp->ngears <= 0 ? 0 : pp->gears[pp->ngears-1]); + + Bool tried_coaxial_p = False; + Bool coaxial_p = False; + Bool last_ditch_coax_p = False; + int loop_count = 0; + + pp->debug_size_failures = 0; + pp->debug_position_failures = 0; + + AGAIN: + loop_count++; + if (loop_count > 100) abort(); /* we're doomed! */ + + g = 0; + + /* If the gears are turning at LUDICROUS SPEED, unhook the train to + reset things to a sane velocity. + + 10,000 RPM at 30 FPS = 5.5 rotations per frame. + 1,000 RPM at 30 FPS = 0.5 rotations per frame. + 600 RPM at 30 FPS = 3 frames per rotation. + 200 RPM at 30 FPS = 9 frames per rotation. + 100 RPM at 30 FPS = 18 frames per rotation. + 50 RPM at 30 FPS = 36 frames per rotation. + 10 RPM at 30 FPS = 3 sec per rotation. + 1 RPM at 30 FPS = 30 sec per rotation. + .5 RPM at 30 FPS = 1 min per rotation. + .1 RPM at 30 FPS = 5 min per rotation. + */ + if (parent && parent->rpm > max_rpm) + { + if (verbose_p) + { + char buf[100]; + rpm_string (parent->rpm, buf); + fprintf (stderr, "%s: ludicrous speed! %s\n\n", progname, buf); + } + parent = 0; + } + + /* If the last N gears we've placed have all been motion-blurred, then + it's a safe guess that we've wandered off into the woods and aren't + coming back. Bail on this train. + */ + if (pp->current_blur_length >= 10) + { + if (verbose_p) + fprintf (stderr, "%s: it's a blurpocalypse!\n\n", progname); + parent = 0; + } + + + + /* Sometimes, try to make a coaxial gear. + */ + if (parent && !parent->coax_p && (random() % 40) == 0) + { + tried_coaxial_p = True; + coaxial_p = True; + g = place_new_gear (mi, parent, coaxial_p); + } + + /* Try to make a regular gear. + */ + if (!g) + { + coaxial_p = False; + g = place_new_gear (mi, parent, coaxial_p); + } + + /* If we couldn't make a regular gear, then try to make a coxial gear + (unless we already tried that.) + */ + if (!g && !tried_coaxial_p && parent && !parent->coax_p) + { + tried_coaxial_p = True; + coaxial_p = True; + g = place_new_gear (mi, parent, coaxial_p); + if (g) + last_ditch_coax_p = True; + } + + /* If we couldn't do that either, then the train has hit a dead end: + start a new train. + */ + if (!g) + { + coaxial_p = False; + if (verbose_p) + fprintf (stderr, "%s: dead end!\n\n", progname); + parent = 0; + g = place_new_gear (mi, parent, coaxial_p); + } + + if (! g) + { + /* Unable to make/place any gears at all! + This can happen if we've backed ourself into a corner very near + the top-right or bottom-right corner of the growth zone. + It's time to add a gear, but there's no room to add one! + In that case, let's just wipe all the gears that are in the + growth zone and try again. + */ + int i; + + if (verbose_p && debug_placement_p) + fprintf (stderr, + "%s: placement: resetting growth zone! " + "failed: %d size, %d pos\n", + progname, + pp->debug_size_failures, pp->debug_position_failures); + for (i = pp->ngears-1; i >= 0; i--) + { + gear *g = pp->gears[i]; + if (g->x - g->r - g->tooth_h < pp->render_left) + delete_gear (mi, g); + } + goto AGAIN; + } + + if (g->coax_p) + { + if (!parent) abort(); + if (g->x != parent->x) abort(); + if (g->y != parent->y) abort(); + if (g->z == parent->z) abort(); + if (g->r == parent->r) abort(); + if (g->th != parent->th) abort(); + if (g->ratio != parent->ratio) abort(); + if (g->rpm != parent->rpm) abort(); + } + + if (verbose_p) + { + fprintf (stderr, "%s: %5lu ", progname, g->id); + + fputc ((g->motion_blur_p ? '*' : ' '), stderr); + fputc (((g->coax_p && last_ditch_coax_p) ? '2' : + g->coax_p ? '1' : ' '), + stderr); + + fprintf (stderr, " %2d%%", + (int) (g->r * 2 * 100 / pp->vp_height)); + fprintf (stderr, " %2d teeth", (int) g->nteeth); + fprintf (stderr, " %3.0f rpm;", g->rpm); + + { + char buf1[50], buf2[50], buf3[100]; + *buf1 = 0; *buf2 = 0; *buf3 = 0; + if (pp->debug_size_failures) + sprintf (buf1, "%3d sz", pp->debug_size_failures); + if (pp->debug_position_failures) + sprintf (buf2, "%2d pos", pp->debug_position_failures); + if (*buf1 || *buf2) + sprintf (buf3, " tries: %-7s%s", buf1, buf2); + fprintf (stderr, "%-21s", buf3); + } + + if (g->base_p) fprintf (stderr, " RESET %lu", pp->current_length); + fprintf (stderr, "\n"); + } + + if (g->base_p) + pp->current_length = 1; + else + pp->current_length++; + + if (g->motion_blur_p) + pp->current_blur_length++; + else + pp->current_blur_length = 0; +} + + + +/* Remove the given gear from the scene and free it. + */ +static void +delete_gear (ModeInfo *mi, gear *g) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + int i; + + for (i = 0; i < pp->ngears; i++) /* find this gear in the list */ + if (pp->gears[i] == g) break; + if (pp->gears[i] != g) abort(); + + for (; i < pp->ngears-1; i++) /* pull later entries forward */ + pp->gears[i] = pp->gears[i+1]; + pp->gears[i] = 0; + pp->ngears--; + free_gear (g); +} + + +/* Update the position of each gear in the scene. + */ +static void +scroll_gears (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + int i; + + for (i = 0; i < pp->ngears; i++) + pp->gears[i]->x -= (scroll_speed * 0.002); + + /* if the right edge of any gear is off screen to the left, delete it. + */ + for (i = pp->ngears-1; i >= 0; i--) + { + gear *g = pp->gears[i]; + if (g->x + g->r + g->tooth_h < pp->render_left) + delete_gear (mi, g); + } + + /* if the right edge of the last-added gear is left of the right edge + of the layout area, add another gear. + */ + i = 0; + while (1) + { + gear *g = (pp->ngears <= 0 ? 0 : pp->gears[pp->ngears-1]); + if (!g || g->x + g->r + g->tooth_h < pp->layout_right) + push_gear (mi); + else + break; + i++; + if (debug_one_gear_p) break; + } + + /* + if (i > 1 && verbose_p) + fprintf (stderr, "%s: pushed %d gears\n", progname, i); + */ +} + + +/* Update the rotation of each gear in the scene. + */ +static void +spin_gears (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + int i; + + for (i = 0; i < pp->ngears; i++) + { + gear *g = pp->gears[i]; + double off = (g->ratio * spin_speed); + + if (g->th > 0) + g->th += off; + else + g->th -= off; + } +} + + +/* Run the animation fast (without displaying anything) until the first + gear is just about to come on screen. This is to avoid a big delay + with a blank screen when -scroll is low. + */ +static void +ffwd (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + if (debug_one_gear_p) return; + while (1) + { + gear *g = farthest_gear (mi, True); + if (g && g->x - g->r - g->tooth_h/2 <= pp->vp_right * 0.88) + break; + scroll_gears (mi); + } +} + + + +/* Render one gear in the proper position, creating the gear's + display list first if necessary. + */ +static void +draw_gear (ModeInfo *mi, int which) +{ + Bool wire_p = MI_IS_WIREFRAME(mi); + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + gear *g = pp->gears[which]; + GLfloat th; + + Bool visible_p = (g->x + g->r + g->tooth_h >= pp->render_left && + g->x - g->r - g->tooth_h <= pp->render_right); + + if (!visible_p && !debug_p) + return; + + if (! g->dlist) + { + g->dlist = glGenLists (1); + if (! g->dlist) + { + /* I don't know how many display lists a GL implementation + is supposed to provide, but hopefully it's more than + "a few hundred", or we'll be in trouble... + */ + check_gl_error ("glGenLists"); + abort(); + } + + glNewList (g->dlist, GL_COMPILE); + g->polygons = draw_involute_gear (g, (wire_p && debug_p ? 2 : wire_p)); + glEndList (); + } + + glPushMatrix(); + + glTranslatef (g->x, g->y, g->z); + + if (g->motion_blur_p && !pp->button_down_p) + { + /* If we're in motion-blur mode, then draw the gear so that each + frame rotates it by exactly one half tooth-width, so that it + looks flickery around the edges. But, revert to the normal + way when the mouse button is down lest the user see overlapping + polygons. + */ + th = g->motion_blur_p * 180.0 / g->nteeth * (g->th > 0 ? 1 : -1); + g->motion_blur_p++; + } + else + th = g->th; + + glRotatef (th, 0, 0, 1); + + glPushName (g->id); + + if (! visible_p) + mi->polygon_count += draw_involute_schematic (g, wire_p); + else + { + glCallList (g->dlist); + mi->polygon_count += g->polygons; + } + + glPopName(); + glPopMatrix(); +} + + +/* Render all gears. + */ +static void +draw_gears (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + Bool wire_p = MI_IS_WIREFRAME(mi); + int i; + + glColor4f (1, 1, 0.8, 1); + + glInitNames(); + + for (i = 0; i < pp->ngears; i++) + draw_gear (mi, i); + + /* draw a line connecting gears that are, uh, geared. */ + if (debug_p) + { + static const GLfloat color[4] = {1.0, 0.0, 0.0, 1.0}; + GLfloat off = 0.1; + GLfloat ox=0, oy=0, oz=0; + + if (!wire_p) glDisable(GL_LIGHTING); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glColor3f (color[0], color[1], color[2]); + + for (i = 0; i < pp->ngears; i++) + { + gear *g = pp->gears[i]; + glBegin(GL_LINE_STRIP); + glVertex3f (g->x, g->y, g->z - off); + glVertex3f (g->x, g->y, g->z + off); + if (i > 0 && !g->base_p) + glVertex3f (ox, oy, oz + off); + glEnd(); + ox = g->x; + oy = g->y; + oz = g->z; + } + if (!wire_p) glEnable(GL_LIGHTING); + } +} + + +/* Mouse hit detection + */ +static void +find_mouse_gear (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + +# ifndef HAVE_JWZGLES + + int screen_width = MI_WIDTH (mi); + int screen_height = MI_HEIGHT (mi); + GLfloat h = (GLfloat) screen_height / (GLfloat) screen_width; + int x, y; + int hits; + + pp->mouse_gear_id = 0; + + /* Poll mouse position */ + { + Window r, c; + int rx, ry; + unsigned int m; + XQueryPointer (MI_DISPLAY (mi), MI_WINDOW (mi), + &r, &c, &rx, &ry, &x, &y, &m); + } + + if (x < 0 || y < 0 || x > screen_width || y > screen_height) + return; /* out of window */ + + /* Run OpenGL hit detector */ + { + GLint vp[4]; + GLuint selbuf[512]; + + glSelectBuffer (sizeof(selbuf), selbuf); /* set up "select" mode */ + glRenderMode (GL_SELECT); + glMatrixMode (GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glGetIntegerv (GL_VIEWPORT, vp); /* save old vp */ + gluPickMatrix (x, vp[3]-y, 5, 5, vp); + gluPerspective (30.0, 1/h, 1.0, 100.0); /* must match reshape_pinion() */ + glMatrixMode (GL_MODELVIEW); + + draw_gears (mi); /* render into "select" buffer */ + + glMatrixMode (GL_PROJECTION); /* restore old vp */ + glPopMatrix (); + glMatrixMode (GL_MODELVIEW); + glFlush(); + hits = glRenderMode (GL_RENDER); /* done selecting */ + + if (hits > 0) + { + int i; + GLuint name_count = 0; + GLuint *p = (GLuint *) selbuf; + GLuint *pnames = 0; + GLuint min_z = ~0; + + for (i = 0; i < hits; i++) + { + int names = *p++; + if (*p < min_z) /* find match closest to screen */ + { + name_count = names; + min_z = *p; + pnames = p+2; + } + p += names+2; + } + + if (name_count > 0) /* take first hit */ + pp->mouse_gear_id = pnames[0]; + } + } + +#else /* HAVE_JWZGLES */ + /* #### not yet implemented */ + pp->mouse_gear_id = (pp->ngears > 1 ? pp->gears[1]->id : 0); + return; +#endif /* HAVE_JWZGLES */ + + +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_pinion (ModeInfo *mi, int width, int height) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); + + { + GLfloat render_width, layout_width; + pp->vp_height = 1.0; + pp->vp_width = 1/h; + + pp->vp_left = -pp->vp_width/2; + pp->vp_right = pp->vp_width/2; + pp->vp_top = pp->vp_height/2; + pp->vp_bottom = -pp->vp_height/2; + + render_width = pp->vp_width * 2; + layout_width = pp->vp_width * 0.8 * gear_size; + + pp->render_left = -render_width/2; + pp->render_right = render_width/2; + + pp->layout_left = pp->render_right; + pp->layout_right = pp->layout_left + layout_width; + } +} + + +ENTRYPOINT Bool +pinion_handle_event (ModeInfo *mi, XEvent *event) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, pp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &pp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' && debug_one_gear_p && pp->ngears) + { + delete_gear (mi, pp->gears[0]); + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_pinion (ModeInfo *mi) +{ + pinion_configuration *pp; + + MI_INIT (mi, pps); + + pp = &pps[MI_SCREEN(mi)]; + + pp->glx_context = init_GL(mi); + + load_fonts (mi); + reshape_pinion (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + + pp->ngears = 0; + pp->gears_size = 0; + pp->gears = 0; + + pp->plane_displacement = gear_size * 0.1; + + pp->trackball = gltrackball_init (False); + + ffwd (mi); +} + + +ENTRYPOINT void +draw_pinion (ModeInfo *mi) +{ + pinion_configuration *pp = &pps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + Bool wire_p = MI_IS_WIREFRAME(mi); + + if (!pp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context)); + + glPushMatrix(); + glRotatef(current_device_rotation(), 0, 0, 1); + + if (!wire_p) + { + GLfloat pos[4] = {-3.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = { 0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = { 1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = { 1.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + if (!pp->button_down_p) + { + if (!debug_one_gear_p || pp->ngears == 0) + scroll_gears (mi); + spin_gears (mi); + } + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + { + gltrackball_rotate (pp->trackball); + mi->polygon_count = 0; + + glScalef (16, 16, 16); /* map vp_width/height to the screen */ + + if (debug_one_gear_p) /* zoom in */ + glScalef (3, 3, 3); + else if (debug_p) /* show the "visible" and "layout" areas */ + { + GLfloat ow = pp->layout_right - pp->render_left; + GLfloat rw = pp->render_right - pp->render_left; + GLfloat s = (pp->vp_width / ow) * 0.85; + glScalef (s, s, s); + glTranslatef (-(ow - rw) / 2, 0, 0); + } + else + { + GLfloat s = 1.2; + glScalef (s, s, s); /* zoom in a little more */ + glRotatef (-35, 1, 0, 0); /* tilt back */ + glRotatef ( 8, 0, 1, 0); /* tilt left */ + glTranslatef (0.02, 0.1, 0); /* pan up */ + } + + draw_gears (mi); + + if (debug_p) + { + if (!wire_p) glDisable(GL_LIGHTING); + glColor3f (0.6, 0, 0); + glBegin(GL_LINE_LOOP); + glVertex3f (pp->render_left, pp->vp_top, 0); + glVertex3f (pp->render_right, pp->vp_top, 0); + glVertex3f (pp->render_right, pp->vp_bottom, 0); + glVertex3f (pp->render_left, pp->vp_bottom, 0); + glEnd(); + glColor3f (0.4, 0, 0); + glBegin(GL_LINES); + glVertex3f (pp->vp_left, pp->vp_top, 0); + glVertex3f (pp->vp_left, pp->vp_bottom, 0); + glVertex3f (pp->vp_right, pp->vp_top, 0); + glVertex3f (pp->vp_right, pp->vp_bottom, 0); + glEnd(); + glColor3f (0, 0.4, 0); + glBegin(GL_LINE_LOOP); + glVertex3f (pp->layout_left, pp->vp_top, 0); + glVertex3f (pp->layout_right, pp->vp_top, 0); + glVertex3f (pp->layout_right, pp->vp_bottom, 0); + glVertex3f (pp->layout_left, pp->vp_bottom, 0); + glEnd(); + if (!wire_p) glEnable(GL_LIGHTING); + } + + if (pp->draw_tick++ > 10) /* only do this every N frames */ + { + pp->draw_tick = 0; + find_mouse_gear (mi); + } + } + glPopMatrix (); + + draw_label (mi); + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Pinion", pinion) + +#endif /* USE_GL */ diff --git a/hacks/glx/pinion.man b/hacks/glx/pinion.man new file mode 100644 index 0000000..3ae6eff --- /dev/null +++ b/hacks/glx/pinion.man @@ -0,0 +1,82 @@ +.TH XScreenSaver 1 "30-Oct-99" "X Version 11" +.SH NAME +pinion - draws a scrolling sequence of interconnected gears +.SH SYNOPSIS +.B pinion +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install] +[\-visual \fIvisual\fP] +[\-delay \fIusecs\fP] +[\-scroll \fIratio\fP] +[\-spin \fIratio\fP] +[\-size \fIratio\fP] +[\-max-rpm \fIint\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIpinion\fP program draws an interconnected set of gears moving +across the screen. +.SH OPTIONS +.I pinion +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fIusecs\fP +The delay between frames of the animation, in microseconds: default 15000. +.TP 8 +.B \-spin \fIratio\fP +How fast the gears should spin; default 1.0. 2.0 means twice as fast, +0.5 means half as fast. +.TP 8 +.B \-scroll \fIratio\fP +How fast the gears should scroll past the screen; default 1.0. +2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-size \fIratio\fP +How big the gears should be, on average; default 1.0. +2.0 means twice as large, 0.5 means half as large. +.TP 8 +.B \-max\-rpm \fIinteger\fP +If any gear exceeds the maximum RPM, the current gear train is broken there, +and we start a new train. Default: 900 RPM. (At 30 FPS, that's about half +a rotation per frame.) +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR gears (MANSUFFIX), +.BR xscreensaver (1), +.BR X (1) +.SH COPYRIGHT +Copyright \(co 2004 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski , 12-Dec-2004. diff --git a/hacks/glx/pipeobjs.c b/hacks/glx/pipeobjs.c new file mode 100644 index 0000000..8874a04 --- /dev/null +++ b/hacks/glx/pipeobjs.c @@ -0,0 +1,3262 @@ +#if 0 +static const char sccsid[] = "@(#)pipeobjs.c 4.04 97/07/28 xlockmore"; +#endif + +/*- + * Points, polygons, and normal vectors to render objects for pipes. + * + * Generated by lw2ogl. + */ + +#ifndef STANDALONE +#include "xlock.h" +#endif + +#ifdef USE_GL + +#include "buildlwo.h" + +static const GLfloat BigValve_PNTS[] = +{ + 0.756788, 0.614672, 0, + 0.779498, 0.599497, 0, + 0.794672, 0.576788, 0, + 0.8, 0.55, 0, + 0.794672, 0.523212, 0, + 0.779498, 0.500503, 0, + 0.756788, 0.485328, 0, + 0.73, 0.48, 0, + 0.703212, 0.485328, 0, + 0.680503, 0.500503, 0, + 0.665328, 0.523212, 0, + 0.66, 0.55, 0, + 0.665328, 0.576788, 0, + 0.680503, 0.599497, 0, + 0.703212, 0.614672, 0, + 0.73, 0.62, 0, + 0.756788, 0.602861, 0.119916, + 0.779498, 0.587978, 0.116956, + 0.794672, 0.565705, 0.112526, + 0.8, 0.539432, 0.1073, + 0.794672, 0.513159, 0.102074, + 0.779498, 0.490886, 0.097643, + 0.756788, 0.476003, 0.094683, + 0.73, 0.470777, 0.093643, + 0.703212, 0.476003, 0.094683, + 0.680503, 0.490886, 0.097643, + 0.665328, 0.513159, 0.102074, + 0.66, 0.539432, 0.1073, + 0.665328, 0.565705, 0.112526, + 0.680503, 0.587978, 0.116956, + 0.703212, 0.602861, 0.119916, + 0.73, 0.608087, 0.120956, + 0.756788, 0.567882, 0.235225, + 0.779498, 0.553863, 0.229418, + 0.794672, 0.532882, 0.220727, + 0.8, 0.508134, 0.210476, + 0.794672, 0.483385, 0.200225, + 0.779498, 0.462404, 0.191534, + 0.756788, 0.448385, 0.185727, + 0.73, 0.443462, 0.183688, + 0.703212, 0.448385, 0.185727, + 0.680503, 0.462404, 0.191534, + 0.665328, 0.483385, 0.200225, + 0.66, 0.508134, 0.210476, + 0.665328, 0.532882, 0.220727, + 0.680503, 0.553863, 0.229418, + 0.703212, 0.567882, 0.235225, + 0.73, 0.572805, 0.237264, + 0.756788, 0.511081, 0.341493, + 0.779498, 0.498464, 0.333063, + 0.794672, 0.479582, 0.320446, + 0.8, 0.457308, 0.305564, + 0.794672, 0.435035, 0.290681, + 0.779498, 0.416153, 0.278064, + 0.756788, 0.403536, 0.269634, + 0.73, 0.399105, 0.266674, + 0.703212, 0.403536, 0.269634, + 0.680503, 0.416153, 0.278064, + 0.665328, 0.435035, 0.290681, + 0.66, 0.457308, 0.305564, + 0.665328, 0.479582, 0.320446, + 0.680503, 0.498464, 0.333063, + 0.703212, 0.511081, 0.341493, + 0.73, 0.515511, 0.344454, + 0.756788, 0.434638, 0.434638, + 0.779498, 0.423909, 0.423909, + 0.794672, 0.407851, 0.407851, + 0.8, 0.388909, 0.388909, + 0.794672, 0.369967, 0.369967, + 0.779498, 0.353909, 0.353909, + 0.756788, 0.343179, 0.343179, + 0.73, 0.339411, 0.339411, + 0.703212, 0.343179, 0.343179, + 0.680503, 0.353909, 0.353909, + 0.665328, 0.369967, 0.369967, + 0.66, 0.388909, 0.388909, + 0.665328, 0.407851, 0.407851, + 0.680503, 0.423909, 0.423909, + 0.703212, 0.434638, 0.434638, + 0.73, 0.438406, 0.438406, + 0.756788, 0.341493, 0.511081, + 0.779498, 0.333063, 0.498464, + 0.794672, 0.320446, 0.479582, + 0.8, 0.305564, 0.457308, + 0.794672, 0.290681, 0.435035, + 0.779498, 0.278064, 0.416153, + 0.756788, 0.269634, 0.403536, + 0.73, 0.266674, 0.399105, + 0.703212, 0.269634, 0.403536, + 0.680503, 0.278064, 0.416153, + 0.665328, 0.290681, 0.435035, + 0.66, 0.305564, 0.457308, + 0.665328, 0.320446, 0.479582, + 0.680503, 0.333063, 0.498464, + 0.703212, 0.341493, 0.511081, + 0.73, 0.344454, 0.515511, + 0.756788, 0.235225, 0.567882, + 0.779498, 0.229418, 0.553863, + 0.794672, 0.220727, 0.532882, + 0.8, 0.210476, 0.508134, + 0.794672, 0.200225, 0.483385, + 0.779498, 0.191534, 0.462404, + 0.756788, 0.185727, 0.448385, + 0.73, 0.183688, 0.443462, + 0.703212, 0.185727, 0.448385, + 0.680503, 0.191534, 0.462404, + 0.665328, 0.200225, 0.483385, + 0.66, 0.210476, 0.508134, + 0.665328, 0.220727, 0.532882, + 0.680503, 0.229418, 0.553863, + 0.703212, 0.235225, 0.567882, + 0.73, 0.237264, 0.572805, + 0.756788, 0.119916, 0.602861, + 0.779498, 0.116956, 0.587978, + 0.794672, 0.112526, 0.565705, + 0.8, 0.1073, 0.539432, + 0.794672, 0.102074, 0.513159, + 0.779498, 0.097643, 0.490886, + 0.756788, 0.094683, 0.476003, + 0.73, 0.093643, 0.470777, + 0.703212, 0.094683, 0.476003, + 0.680503, 0.097643, 0.490886, + 0.665328, 0.102074, 0.513159, + 0.66, 0.1073, 0.539432, + 0.665328, 0.112526, 0.565705, + 0.680503, 0.116956, 0.587978, + 0.703212, 0.119916, 0.602861, + 0.73, 0.120956, 0.608087, + 0.756788, 0, 0.614672, + 0.779498, 0, 0.599497, + 0.794672, 0, 0.576788, + 0.8, 0, 0.55, + 0.794672, 0, 0.523212, + 0.779498, 0, 0.500503, + 0.756788, 0, 0.485328, + 0.73, 0, 0.48, + 0.703212, 0, 0.485328, + 0.680503, 0, 0.500503, + 0.665328, 0, 0.523212, + 0.66, 0, 0.55, + 0.665328, 0, 0.576788, + 0.680503, 0, 0.599497, + 0.703212, 0, 0.614672, + 0.73, 0, 0.62, + 0.756788, -0.119916, 0.602861, + 0.779498, -0.116956, 0.587978, + 0.794672, -0.112526, 0.565705, + 0.8, -0.1073, 0.539432, + 0.794672, -0.102074, 0.513159, + 0.779498, -0.097643, 0.490886, + 0.756788, -0.094683, 0.476003, + 0.73, -0.093643, 0.470777, + 0.703212, -0.094683, 0.476003, + 0.680503, -0.097643, 0.490886, + 0.665328, -0.102074, 0.513159, + 0.66, -0.1073, 0.539432, + 0.665328, -0.112526, 0.565705, + 0.680503, -0.116956, 0.587978, + 0.703212, -0.119916, 0.602861, + 0.73, -0.120956, 0.608087, + 0.756788, -0.235225, 0.567882, + 0.779498, -0.229418, 0.553863, + 0.794672, -0.220727, 0.532882, + 0.8, -0.210476, 0.508134, + 0.794672, -0.200225, 0.483385, + 0.779498, -0.191534, 0.462404, + 0.756788, -0.185727, 0.448385, + 0.73, -0.183688, 0.443462, + 0.703212, -0.185727, 0.448385, + 0.680503, -0.191534, 0.462404, + 0.665328, -0.200225, 0.483385, + 0.66, -0.210476, 0.508134, + 0.665328, -0.220727, 0.532882, + 0.680503, -0.229418, 0.553863, + 0.703212, -0.235225, 0.567882, + 0.73, -0.237264, 0.572805, + 0.756788, -0.341493, 0.511081, + 0.779498, -0.333063, 0.498464, + 0.794672, -0.320446, 0.479582, + 0.8, -0.305564, 0.457308, + 0.794672, -0.290681, 0.435035, + 0.779498, -0.278064, 0.416153, + 0.756788, -0.269634, 0.403536, + 0.73, -0.266674, 0.399105, + 0.703212, -0.269634, 0.403536, + 0.680503, -0.278064, 0.416153, + 0.665328, -0.290681, 0.435035, + 0.66, -0.305564, 0.457308, + 0.665328, -0.320446, 0.479582, + 0.680503, -0.333063, 0.498464, + 0.703212, -0.341493, 0.511081, + 0.73, -0.344454, 0.515511, + 0.756788, -0.434638, 0.434638, + 0.779498, -0.423909, 0.423909, + 0.794672, -0.407851, 0.407851, + 0.8, -0.388909, 0.388909, + 0.794672, -0.369967, 0.369967, + 0.779498, -0.353909, 0.353909, + 0.756788, -0.343179, 0.343179, + 0.73, -0.339411, 0.339411, + 0.703212, -0.343179, 0.343179, + 0.680503, -0.353909, 0.353909, + 0.665328, -0.369967, 0.369967, + 0.66, -0.388909, 0.388909, + 0.665328, -0.407851, 0.407851, + 0.680503, -0.423909, 0.423909, + 0.703212, -0.434638, 0.434638, + 0.73, -0.438406, 0.438406, + 0.756788, -0.511081, 0.341493, + 0.779498, -0.498464, 0.333063, + 0.794672, -0.479582, 0.320446, + 0.8, -0.457308, 0.305564, + 0.794672, -0.435035, 0.290681, + 0.779498, -0.416153, 0.278064, + 0.756788, -0.403536, 0.269634, + 0.73, -0.399105, 0.266674, + 0.703212, -0.403536, 0.269634, + 0.680503, -0.416153, 0.278064, + 0.665328, -0.435035, 0.290681, + 0.66, -0.457308, 0.305564, + 0.665328, -0.479582, 0.320446, + 0.680503, -0.498464, 0.333063, + 0.703212, -0.511081, 0.341493, + 0.73, -0.515511, 0.344454, + 0.756788, -0.567882, 0.235225, + 0.779498, -0.553863, 0.229418, + 0.794672, -0.532882, 0.220727, + 0.8, -0.508134, 0.210476, + 0.794672, -0.483385, 0.200225, + 0.779498, -0.462404, 0.191534, + 0.756788, -0.448385, 0.185727, + 0.73, -0.443462, 0.183688, + 0.703212, -0.448385, 0.185727, + 0.680503, -0.462404, 0.191534, + 0.665328, -0.483385, 0.200225, + 0.66, -0.508134, 0.210476, + 0.665328, -0.532882, 0.220727, + 0.680503, -0.553863, 0.229418, + 0.703212, -0.567882, 0.235225, + 0.73, -0.572805, 0.237264, + 0.756788, -0.602861, 0.119916, + 0.779498, -0.587978, 0.116956, + 0.794672, -0.565705, 0.112526, + 0.8, -0.539432, 0.1073, + 0.794672, -0.513159, 0.102074, + 0.779498, -0.490886, 0.097643, + 0.756788, -0.476003, 0.094683, + 0.73, -0.470777, 0.093643, + 0.703212, -0.476003, 0.094683, + 0.680503, -0.490886, 0.097643, + 0.665328, -0.513159, 0.102074, + 0.66, -0.539432, 0.1073, + 0.665328, -0.565705, 0.112526, + 0.680503, -0.587978, 0.116956, + 0.703212, -0.602861, 0.119916, + 0.73, -0.608087, 0.120956, + 0.756788, -0.614672, 0, + 0.779498, -0.599497, 0, + 0.794672, -0.576788, 0, + 0.8, -0.55, 0, + 0.794672, -0.523212, 0, + 0.779498, -0.500503, 0, + 0.756788, -0.485328, 0, + 0.73, -0.48, 0, + 0.703212, -0.485328, 0, + 0.680503, -0.500503, 0, + 0.665328, -0.523212, 0, + 0.66, -0.55, 0, + 0.665328, -0.576788, 0, + 0.680503, -0.599497, 0, + 0.703212, -0.614672, 0, + 0.73, -0.62, 0, + 0.756788, -0.602861, -0.119916, + 0.779498, -0.587978, -0.116956, + 0.794672, -0.565705, -0.112526, + 0.8, -0.539432, -0.1073, + 0.794672, -0.513159, -0.102074, + 0.779498, -0.490886, -0.097643, + 0.756788, -0.476003, -0.094683, + 0.73, -0.470777, -0.093643, + 0.703212, -0.476003, -0.094683, + 0.680503, -0.490886, -0.097643, + 0.665328, -0.513159, -0.102074, + 0.66, -0.539432, -0.1073, + 0.665328, -0.565705, -0.112526, + 0.680503, -0.587978, -0.116956, + 0.703212, -0.602861, -0.119916, + 0.73, -0.608087, -0.120956, + 0.756788, -0.567882, -0.235225, + 0.779498, -0.553863, -0.229418, + 0.794672, -0.532882, -0.220727, + 0.8, -0.508134, -0.210476, + 0.794672, -0.483385, -0.200225, + 0.779498, -0.462404, -0.191534, + 0.756788, -0.448385, -0.185727, + 0.73, -0.443462, -0.183688, + 0.703212, -0.448385, -0.185727, + 0.680503, -0.462404, -0.191534, + 0.665328, -0.483385, -0.200225, + 0.66, -0.508134, -0.210476, + 0.665328, -0.532882, -0.220727, + 0.680503, -0.553863, -0.229418, + 0.703212, -0.567882, -0.235225, + 0.73, -0.572805, -0.237264, + 0.756788, -0.511081, -0.341493, + 0.779498, -0.498464, -0.333063, + 0.794672, -0.479582, -0.320446, + 0.8, -0.457308, -0.305564, + 0.794672, -0.435035, -0.290681, + 0.779498, -0.416153, -0.278064, + 0.756788, -0.403536, -0.269634, + 0.73, -0.399105, -0.266674, + 0.703212, -0.403536, -0.269634, + 0.680503, -0.416153, -0.278064, + 0.665328, -0.435035, -0.290681, + 0.66, -0.457308, -0.305564, + 0.665328, -0.479582, -0.320446, + 0.680503, -0.498464, -0.333063, + 0.703212, -0.511081, -0.341493, + 0.73, -0.515511, -0.344454, + 0.756788, -0.434638, -0.434638, + 0.779498, -0.423909, -0.423909, + 0.794672, -0.407851, -0.407851, + 0.8, -0.388909, -0.388909, + 0.794672, -0.369967, -0.369967, + 0.779498, -0.353909, -0.353909, + 0.756788, -0.343179, -0.343179, + 0.73, -0.339411, -0.339411, + 0.703212, -0.343179, -0.343179, + 0.680503, -0.353909, -0.353909, + 0.665328, -0.369967, -0.369967, + 0.66, -0.388909, -0.388909, + 0.665328, -0.407851, -0.407851, + 0.680503, -0.423909, -0.423909, + 0.703212, -0.434638, -0.434638, + 0.73, -0.438406, -0.438406, + 0.756788, -0.341493, -0.511081, + 0.779498, -0.333063, -0.498464, + 0.794672, -0.320446, -0.479582, + 0.8, -0.305564, -0.457308, + 0.794672, -0.290681, -0.435035, + 0.779498, -0.278064, -0.416153, + 0.756788, -0.269634, -0.403536, + 0.73, -0.266674, -0.399105, + 0.703212, -0.269634, -0.403536, + 0.680503, -0.278064, -0.416153, + 0.665328, -0.290681, -0.435035, + 0.66, -0.305564, -0.457308, + 0.665328, -0.320446, -0.479582, + 0.680503, -0.333063, -0.498464, + 0.703212, -0.341493, -0.511081, + 0.73, -0.344454, -0.515511, + 0.756788, -0.235225, -0.567882, + 0.779498, -0.229418, -0.553863, + 0.794672, -0.220727, -0.532882, + 0.8, -0.210476, -0.508134, + 0.794672, -0.200225, -0.483385, + 0.779498, -0.191534, -0.462404, + 0.756788, -0.185727, -0.448385, + 0.73, -0.183688, -0.443462, + 0.703212, -0.185727, -0.448385, + 0.680503, -0.191534, -0.462404, + 0.665328, -0.200225, -0.483385, + 0.66, -0.210476, -0.508134, + 0.665328, -0.220727, -0.532882, + 0.680503, -0.229418, -0.553863, + 0.703212, -0.235225, -0.567882, + 0.73, -0.237264, -0.572805, + 0.756788, -0.119916, -0.602861, + 0.779498, -0.116956, -0.587978, + 0.794672, -0.112526, -0.565705, + 0.8, -0.1073, -0.539432, + 0.794672, -0.102074, -0.513159, + 0.779498, -0.097643, -0.490885, + 0.756788, -0.094683, -0.476003, + 0.73, -0.093643, -0.470777, + 0.703212, -0.094683, -0.476003, + 0.680503, -0.097643, -0.490885, + 0.665328, -0.102074, -0.513159, + 0.66, -0.1073, -0.539432, + 0.665328, -0.112526, -0.565705, + 0.680503, -0.116956, -0.587978, + 0.703212, -0.119916, -0.602861, + 0.73, -0.120956, -0.608087, + 0.756788, 0, -0.614672, + 0.779498, 0, -0.599497, + 0.794672, 0, -0.576788, + 0.8, 0, -0.55, + 0.794672, 0, -0.523212, + 0.779498, 0, -0.500503, + 0.756788, 0, -0.485328, + 0.73, 0, -0.48, + 0.703212, 0, -0.485328, + 0.680503, 0, -0.500503, + 0.665328, 0, -0.523212, + 0.66, 0, -0.55, + 0.665328, 0, -0.576788, + 0.680503, 0, -0.599497, + 0.703212, 0, -0.614672, + 0.73, 0, -0.62, + 0.756788, 0.119916, -0.602861, + 0.779498, 0.116956, -0.587978, + 0.794672, 0.112526, -0.565705, + 0.8, 0.1073, -0.539432, + 0.794672, 0.102074, -0.513159, + 0.779498, 0.097643, -0.490886, + 0.756788, 0.094683, -0.476003, + 0.73, 0.093643, -0.470777, + 0.703212, 0.094683, -0.476003, + 0.680503, 0.097643, -0.490886, + 0.665328, 0.102074, -0.513159, + 0.66, 0.1073, -0.539432, + 0.665328, 0.112526, -0.565705, + 0.680503, 0.116956, -0.587978, + 0.703212, 0.119916, -0.602861, + 0.73, 0.120956, -0.608087, + 0.756788, 0.235225, -0.567882, + 0.779498, 0.229418, -0.553863, + 0.794672, 0.220727, -0.532882, + 0.8, 0.210476, -0.508134, + 0.794672, 0.200225, -0.483385, + 0.779498, 0.191534, -0.462404, + 0.756788, 0.185727, -0.448385, + 0.73, 0.183688, -0.443462, + 0.703212, 0.185727, -0.448385, + 0.680503, 0.191534, -0.462404, + 0.665328, 0.200225, -0.483385, + 0.66, 0.210476, -0.508134, + 0.665328, 0.220727, -0.532882, + 0.680503, 0.229418, -0.553863, + 0.703212, 0.235225, -0.567882, + 0.73, 0.237264, -0.572805, + 0.756788, 0.341493, -0.511081, + 0.779498, 0.333063, -0.498464, + 0.794672, 0.320446, -0.479582, + 0.8, 0.305564, -0.457308, + 0.794672, 0.290681, -0.435035, + 0.779498, 0.278064, -0.416153, + 0.756788, 0.269634, -0.403536, + 0.73, 0.266674, -0.399105, + 0.703212, 0.269634, -0.403536, + 0.680503, 0.278064, -0.416153, + 0.665328, 0.290681, -0.435035, + 0.66, 0.305564, -0.457308, + 0.665328, 0.320446, -0.479582, + 0.680503, 0.333063, -0.498464, + 0.703212, 0.341493, -0.511081, + 0.73, 0.344454, -0.515511, + 0.756788, 0.434638, -0.434638, + 0.779498, 0.423909, -0.423909, + 0.794672, 0.407851, -0.407851, + 0.8, 0.388909, -0.388909, + 0.794672, 0.369967, -0.369967, + 0.779498, 0.353909, -0.353909, + 0.756788, 0.343179, -0.343179, + 0.73, 0.339411, -0.339411, + 0.703212, 0.343179, -0.343179, + 0.680503, 0.353909, -0.353909, + 0.665328, 0.369967, -0.369967, + 0.66, 0.388909, -0.388909, + 0.665328, 0.407851, -0.407851, + 0.680503, 0.423909, -0.423909, + 0.703212, 0.434638, -0.434638, + 0.73, 0.438406, -0.438406, + 0.756788, 0.511081, -0.341493, + 0.779498, 0.498464, -0.333063, + 0.794672, 0.479582, -0.320446, + 0.8, 0.457308, -0.305564, + 0.794672, 0.435035, -0.290681, + 0.779498, 0.416153, -0.278064, + 0.756788, 0.403536, -0.269634, + 0.73, 0.399105, -0.266674, + 0.703212, 0.403536, -0.269634, + 0.680503, 0.416153, -0.278064, + 0.665328, 0.435035, -0.290681, + 0.66, 0.457308, -0.305564, + 0.665328, 0.479582, -0.320446, + 0.680503, 0.498464, -0.333063, + 0.703212, 0.511081, -0.341493, + 0.73, 0.515511, -0.344454, + 0.756788, 0.567882, -0.235225, + 0.779498, 0.553863, -0.229418, + 0.794672, 0.532882, -0.220727, + 0.8, 0.508134, -0.210476, + 0.794672, 0.483385, -0.200225, + 0.779498, 0.462404, -0.191534, + 0.756788, 0.448385, -0.185727, + 0.73, 0.443462, -0.183688, + 0.703212, 0.448385, -0.185727, + 0.680503, 0.462404, -0.191534, + 0.665328, 0.483385, -0.200225, + 0.66, 0.508134, -0.210476, + 0.665328, 0.532882, -0.220727, + 0.680503, 0.553863, -0.229418, + 0.703212, 0.567882, -0.235225, + 0.73, 0.572805, -0.237264, + 0.756788, 0.602861, -0.119916, + 0.779498, 0.587978, -0.116956, + 0.794672, 0.565705, -0.112526, + 0.8, 0.539432, -0.1073, + 0.794672, 0.513159, -0.102074, + 0.779498, 0.490885, -0.097643, + 0.756788, 0.476003, -0.094683, + 0.73, 0.470777, -0.093643, + 0.703212, 0.476003, -0.094683, + 0.680503, 0.490885, -0.097643, + 0.665328, 0.513159, -0.102074, + 0.66, 0.539432, -0.1073, + 0.665328, 0.565705, -0.112526, + 0.680503, 0.587978, -0.116956, + 0.703212, 0.602861, -0.119916, + 0.73, 0.608087, -0.120956, + 0.42, 0, -0.2, + 0.42, 0.051764, -0.193185, + 0.42, 0.1, -0.173205, + 0.42, 0.141421, -0.141421, + 0.42, 0.173205, -0.1, + 0.42, 0.193185, -0.051764, + 0.42, 0.2, 0, + 0.42, 0.193185, 0.051764, + 0.42, 0.173205, 0.1, + 0.42, 0.141421, 0.141421, + 0.42, 0.1, 0.173205, + 0.42, 0.051764, 0.193185, + 0.42, 0, 0.2, + 0.42, -0.051764, 0.193185, + 0.42, -0.1, 0.173205, + 0.42, -0.141421, 0.141421, + 0.42, -0.173205, 0.1, + 0.42, -0.193185, 0.051764, + 0.42, -0.2, 0, + 0.42, -0.193185, -0.051764, + 0.42, -0.173205, -0.1, + 0.42, -0.141421, -0.141421, + 0.42, -0.1, -0.173205, + 0.42, -0.051764, -0.193185, + 0.54, 0, -0.2, + 0.54, 0.051764, -0.193185, + 0.54, 0.1, -0.173205, + 0.54, 0.141421, -0.141421, + 0.54, 0.173205, -0.1, + 0.54, 0.193185, -0.051764, + 0.54, 0.2, 0, + 0.54, 0.193185, 0.051764, + 0.54, 0.173205, 0.1, + 0.54, 0.141421, 0.141421, + 0.54, 0.1, 0.173205, + 0.54, 0.051764, 0.193185, + 0.54, 0, 0.2, + 0.54, -0.051764, 0.193185, + 0.54, -0.1, 0.173205, + 0.54, -0.141421, 0.141421, + 0.54, -0.173205, 0.1, + 0.54, -0.193185, 0.051764, + 0.54, -0.2, 0, + 0.54, -0.193185, -0.051764, + 0.54, -0.173205, -0.1, + 0.54, -0.141421, -0.141421, + 0.54, -0.1, -0.173205, + 0.54, -0.051764, -0.193185, + 0.79, 0.06, 0, + 0.785433, 0.06, -0.022961, + 0.772426, 0.06, -0.042426, + 0.752961, 0.06, -0.055433, + 0.73, 0.06, -0.06, + 0.707039, 0.06, -0.055433, + 0.687574, 0.06, -0.042426, + 0.674567, 0.06, -0.022961, + 0.67, 0.06, 0, + 0.674567, 0.06, 0.022961, + 0.687574, 0.06, 0.042426, + 0.707039, 0.06, 0.055433, + 0.73, 0.06, 0.06, + 0.752961, 0.06, 0.055433, + 0.772426, 0.06, 0.042426, + 0.785433, 0.06, 0.022961, + 0.79, 0.55, 0, + 0.785433, 0.55, -0.022961, + 0.772426, 0.55, -0.042426, + 0.752961, 0.55, -0.055433, + 0.73, 0.55, -0.06, + 0.707039, 0.55, -0.055433, + 0.687574, 0.55, -0.042426, + 0.674567, 0.55, -0.022961, + 0.67, 0.55, 0, + 0.674567, 0.55, 0.022961, + 0.687574, 0.55, 0.042426, + 0.707039, 0.55, 0.055433, + 0.73, 0.55, 0.06, + 0.752961, 0.55, 0.055433, + 0.772426, 0.55, 0.042426, + 0.785433, 0.55, 0.022961, + 0.79, 0, 0.06, + 0.785433, 0.022961, 0.06, + 0.772426, 0.042426, 0.06, + 0.752961, 0.055433, 0.06, + 0.707039, 0.055433, 0.06, + 0.687574, 0.042426, 0.06, + 0.674567, 0.022961, 0.06, + 0.67, 0, 0.06, + 0.674567, -0.022961, 0.06, + 0.687574, -0.042426, 0.06, + 0.707039, -0.055433, 0.06, + 0.73, -0.06, 0.06, + 0.752961, -0.055433, 0.06, + 0.772426, -0.042426, 0.06, + 0.785433, -0.022961, 0.06, + 0.79, 0, 0.55, + 0.785433, 0.022961, 0.55, + 0.772426, 0.042426, 0.55, + 0.752961, 0.055433, 0.55, + 0.73, 0.06, 0.55, + 0.707039, 0.055433, 0.55, + 0.687574, 0.042426, 0.55, + 0.674567, 0.022961, 0.55, + 0.67, 0, 0.55, + 0.674567, -0.022961, 0.55, + 0.687574, -0.042426, 0.55, + 0.707039, -0.055433, 0.55, + 0.73, -0.06, 0.55, + 0.752961, -0.055433, 0.55, + 0.772426, -0.042426, 0.55, + 0.785433, -0.022961, 0.55, + 0.79, -0.06, 0, + 0.785433, -0.06, 0.022961, + 0.772426, -0.06, 0.042426, + 0.752961, -0.06, 0.055433, + 0.707039, -0.06, 0.055433, + 0.687574, -0.06, 0.042426, + 0.674567, -0.06, 0.022961, + 0.67, -0.06, 0, + 0.674567, -0.06, -0.022961, + 0.687574, -0.06, -0.042426, + 0.707039, -0.06, -0.055433, + 0.73, -0.06, -0.06, + 0.752961, -0.06, -0.055433, + 0.772426, -0.06, -0.042426, + 0.785433, -0.06, -0.022961, + 0.79, -0.55, 0, + 0.785433, -0.55, 0.022961, + 0.772426, -0.55, 0.042426, + 0.752961, -0.55, 0.055433, + 0.73, -0.55, 0.06, + 0.707039, -0.55, 0.055433, + 0.687574, -0.55, 0.042426, + 0.674567, -0.55, 0.022961, + 0.67, -0.55, 0, + 0.674567, -0.55, -0.022961, + 0.687574, -0.55, -0.042426, + 0.707039, -0.55, -0.055433, + 0.73, -0.55, -0.06, + 0.752961, -0.55, -0.055433, + 0.772426, -0.55, -0.042426, + 0.785433, -0.55, -0.022961, + 0.79, 0, -0.06, + 0.785433, -0.022961, -0.06, + 0.772426, -0.042426, -0.06, + 0.752961, -0.055433, -0.06, + 0.707039, -0.055433, -0.06, + 0.687574, -0.042426, -0.06, + 0.674567, -0.022961, -0.06, + 0.67, 0, -0.06, + 0.674567, 0.022961, -0.06, + 0.687574, 0.042426, -0.06, + 0.707039, 0.055433, -0.06, + 0.752961, 0.055433, -0.06, + 0.772426, 0.042426, -0.06, + 0.785433, 0.022961, -0.06, + 0.79, 0, -0.55, + 0.785433, -0.022961, -0.55, + 0.772426, -0.042426, -0.55, + 0.752961, -0.055433, -0.55, + 0.73, -0.06, -0.55, + 0.707039, -0.055433, -0.55, + 0.687574, -0.042426, -0.55, + 0.674567, -0.022961, -0.55, + 0.67, 0, -0.55, + 0.674567, 0.022961, -0.55, + 0.687574, 0.042426, -0.55, + 0.707039, 0.055433, -0.55, + 0.73, 0.06, -0.55, + 0.752961, 0.055433, -0.55, + 0.772426, 0.042426, -0.55, + 0.785433, 0.022961, -0.55, + 0.54, 0, -0.1, + 0.54, 0.038268, -0.092388, + 0.54, 0.070711, -0.070711, + 0.54, 0.092388, -0.038268, + 0.54, 0.1, 0, + 0.54, 0.092388, 0.038268, + 0.54, 0.070711, 0.070711, + 0.54, 0.038268, 0.092388, + 0.54, 0, 0.1, + 0.54, -0.038268, 0.092388, + 0.54, -0.070711, 0.070711, + 0.54, -0.092388, 0.038268, + 0.54, -0.1, 0, + 0.54, -0.092388, -0.038268, + 0.54, -0.070711, -0.070711, + 0.54, -0.038268, -0.092388, + 0.8, 0, -0.1, + 0.8, 0.038268, -0.092388, + 0.8, 0.070711, -0.070711, + 0.8, 0.092388, -0.038268, + 0.8, 0.1, 0, + 0.8, 0.092388, 0.038268, + 0.8, 0.070711, 0.070711, + 0.8, 0.038268, 0.092388, + 0.8, 0, 0.1, + 0.8, -0.038268, 0.092388, + 0.8, -0.070711, 0.070711, + 0.8, -0.092388, 0.038268, + 0.8, -0.1, 0, + 0.8, -0.092388, -0.038268, + 0.8, -0.070711, -0.070711, + 0.8, -0.038268, -0.092388, +}; + +static const GLfloat BigValve_normals[] = +{ + -1, 0, 0, + 0, 0.19509, -0.980785, + 0, 0.55557, -0.83147, + 0, 0.83147, -0.55557, + 0, 0.980785, -0.19509, + 0, 0.980785, 0.19509, + 0, 0.83147, 0.55557, + 0, 0.55557, 0.83147, + 0, 0.19509, 0.980785, + 0, -0.19509, 0.980785, + 0, -0.55557, 0.83147, + 0, -0.83147, 0.55557, + 0, -0.980785, 0.19509, + 0, -0.980785, -0.19509, + 0, -0.83147, -0.55557, + 0, -0.55557, -0.83147, + 0, -0.19509, -0.980785, + 1, 0, 0, + 0.980785, -0.195092, 0, + 0.83147, -0.555569, 0, + 0.555569, -0.83147, 0, + 0.195091, -0.980785, 0, + -0.19509, -0.980785, 0, + -0.55557, -0.831469, 0, + -0.831469, -0.555571, 0, + -0.980785, -0.195089, 0, + -0.980785, 0.195089, 0, + -0.831469, 0.555571, 0, + -0.55557, 0.831469, 0, + -0.19509, 0.980785, 0, + 0.195091, 0.980785, 0, + 0.555569, 0.83147, 0, + 0.83147, 0.555569, 0, + 0.980785, 0.195092, 0, + 0.980785, 0, 0.195092, + 0.83147, 0, 0.555569, + 0.555569, 0, 0.83147, + 0.195091, 0, 0.980785, + -0.19509, 0, 0.980785, + -0.55557, 0, 0.831469, + -0.831469, 0, 0.555571, + -0.980785, 0, 0.195089, + -0.980785, 0, -0.195089, + -0.831469, 0, -0.555571, + -0.55557, 0, -0.831469, + -0.19509, 0, -0.980785, + 0.195091, 0, -0.980785, + 0.555569, 0, -0.83147, + 0.83147, 0, -0.555569, + 0.980785, 0, -0.195092, + 0.980785, 0.195092, 0, + 0.83147, 0.555569, 0, + 0.555569, 0.83147, 0, + 0.195091, 0.980785, 0, + -0.19509, 0.980785, 0, + -0.55557, 0.831469, 0, + -0.831469, 0.555571, 0, + -0.980785, 0.195089, 0, + -0.980785, -0.195089, 0, + -0.831469, -0.555571, 0, + -0.55557, -0.831469, 0, + -0.19509, -0.980785, 0, + 0.195091, -0.980785, 0, + 0.555569, -0.83147, 0, + 0.83147, -0.555569, 0, + 0.980785, -0.195092, 0, + 0.980785, 0, -0.195092, + 0.83147, 0, -0.555569, + 0.555569, 0, -0.83147, + 0.195091, 0, -0.980785, + -0.19509, 0, -0.980785, + -0.55557, 0, -0.831469, + -0.831469, 0, -0.555571, + -0.980785, 0, -0.195089, + -0.980785, 0, 0.195089, + -0.831469, 0, 0.555571, + -0.55557, 0, 0.831469, + -0.19509, 0, 0.980785, + 0.195091, 0, 0.980785, + 0.555569, 0, 0.83147, + 0.83147, 0, 0.555569, + 0.980785, 0, 0.195092, + -1, 0, 0, + 0, 0.130526, -0.991445, + 0, 0.382684, -0.92388, + 0, 0.608761, -0.793353, + 0, 0.793353, -0.608761, + 0, 0.92388, -0.382684, + 0, 0.991445, -0.130526, + 0, 0.991445, 0.130526, + 0, 0.92388, 0.382684, + 0, 0.793353, 0.608761, + 0, 0.608761, 0.793353, + 0, 0.382684, 0.92388, + 0, 0.130526, 0.991445, + 0, -0.130526, 0.991445, + 0, -0.382684, 0.92388, + 0, -0.608761, 0.793353, + 0, -0.793353, 0.608761, + 0, -0.92388, 0.382684, + 0, -0.991445, 0.130526, + 0, -0.991445, -0.130526, + 0, -0.92388, -0.382684, + 0, -0.793353, -0.608761, + 0, -0.608761, -0.793353, + 0, -0.382684, -0.92388, + 0, -0.130526, -0.991445, + 1, 0, 0, + 0.194185, 0.976241, 0.096151, + -0.194185, 0.976241, 0.096151, + -0.553718, 0.828695, 0.081619, + -0.830228, 0.55474, 0.054637, + -0.980604, 0.195054, 0.019211, + -0.980605, -0.195053, -0.019211, + -0.830227, -0.554741, -0.054637, + -0.553717, -0.828695, -0.081619, + -0.194187, -0.976241, -0.096151, + 0.194188, -0.976241, -0.096151, + 0.553716, -0.828696, -0.081619, + 0.830227, -0.554741, -0.054637, + 0.980604, -0.195053, -0.019211, + 0.980604, 0.195054, 0.019211, + 0.830228, 0.55474, 0.054637, + 0.553717, 0.828695, 0.081619, + 0.194186, 0.938725, 0.284759, + -0.194185, 0.938725, 0.284759, + -0.553717, 0.796849, 0.241721, + -0.830228, 0.533421, 0.161812, + -0.980604, 0.187558, 0.056895, + -0.980604, -0.187558, -0.056895, + -0.830227, -0.533422, -0.161812, + -0.553717, -0.796849, -0.241722, + -0.194186, -0.938725, -0.284759, + 0.194187, -0.938724, -0.284759, + 0.553716, -0.796849, -0.241722, + 0.830227, -0.533422, -0.161812, + 0.980604, -0.187558, -0.056895, + 0.980604, 0.187558, 0.056895, + 0.830228, 0.533421, 0.161811, + 0.553716, 0.79685, 0.241722, + 0.194186, 0.865134, 0.462423, + -0.194185, 0.865134, 0.462424, + -0.553717, 0.73438, 0.392534, + -0.830228, 0.491604, 0.262768, + -0.980604, 0.172854, 0.092393, + -0.980604, -0.172854, -0.092393, + -0.830227, -0.491605, -0.262768, + -0.553717, -0.73438, -0.392534, + -0.194187, -0.865134, -0.462424, + 0.194187, -0.865134, -0.462423, + 0.553716, -0.734381, -0.392534, + 0.830227, -0.491605, -0.262768, + 0.980604, -0.172854, -0.092393, + 0.980604, 0.172854, 0.092393, + 0.830228, 0.491604, 0.262768, + 0.553716, 0.734381, 0.392535, + 0.194186, 0.758296, 0.622317, + -0.194186, 0.758296, 0.622318, + -0.553717, 0.64369, 0.528263, + -0.830228, 0.430895, 0.353626, + -0.980604, 0.151508, 0.12434, + -0.980604, -0.151508, -0.124339, + -0.830227, -0.430895, -0.353627, + -0.553717, -0.64369, -0.528263, + -0.194186, -0.758296, -0.622317, + 0.194186, -0.758296, -0.622318, + 0.553716, -0.64369, -0.528263, + 0.830227, -0.430895, -0.353627, + 0.980604, -0.151508, -0.124339, + 0.980604, 0.151508, 0.12434, + 0.830228, 0.430895, 0.353626, + 0.553716, 0.64369, 0.528263, + 0.194186, 0.622317, 0.758296, + -0.194185, 0.622318, 0.758296, + -0.553717, 0.528263, 0.64369, + -0.830228, 0.353626, 0.430895, + -0.980604, 0.124339, 0.151508, + -0.980604, -0.124339, -0.151508, + -0.830227, -0.353627, -0.430895, + -0.553717, -0.528262, -0.643689, + -0.194187, -0.622317, -0.758296, + 0.194187, -0.622317, -0.758296, + 0.553716, -0.528263, -0.64369, + 0.830227, -0.353627, -0.430895, + 0.980604, -0.124339, -0.151508, + 0.980604, 0.12434, 0.151508, + 0.830228, 0.353626, 0.430895, + 0.553716, 0.528263, 0.64369, + 0.194186, 0.462423, 0.865134, + -0.194185, 0.462424, 0.865134, + -0.553717, 0.392534, 0.73438, + -0.830228, 0.262768, 0.491604, + -0.980604, 0.092393, 0.172855, + -0.980604, -0.092392, -0.172854, + -0.830227, -0.262768, -0.491605, + -0.553717, -0.392534, -0.73438, + -0.194186, -0.462424, -0.865134, + 0.194187, -0.462423, -0.865134, + 0.553716, -0.392535, -0.734381, + 0.830227, -0.262768, -0.491605, + 0.980604, -0.092392, -0.172854, + 0.980604, 0.092393, 0.172855, + 0.830228, 0.262768, 0.491604, + 0.553716, 0.392535, 0.734381, + 0.194185, 0.284759, 0.938725, + -0.194185, 0.284759, 0.938725, + -0.553718, 0.241721, 0.796848, + -0.830228, 0.161812, 0.533422, + -0.980604, 0.056895, 0.187558, + -0.980604, -0.056895, -0.187558, + -0.830227, -0.161812, -0.533423, + -0.553717, -0.241722, -0.796849, + -0.194187, -0.284759, -0.938725, + 0.194188, -0.284759, -0.938724, + 0.553716, -0.241722, -0.796849, + 0.830227, -0.161812, -0.533423, + 0.980604, -0.056895, -0.187557, + 0.980604, 0.056895, 0.187558, + 0.830228, 0.161812, 0.533422, + 0.553717, 0.241722, 0.796849, + 0.194186, 0.096151, 0.976241, + -0.194186, 0.096151, 0.976241, + -0.553717, 0.081619, 0.828695, + -0.830228, 0.054637, 0.55474, + -0.980604, 0.019211, 0.195054, + -0.980604, -0.019211, -0.195054, + -0.830227, -0.054637, -0.554741, + -0.553717, -0.081619, -0.828695, + -0.194187, -0.096151, -0.976241, + 0.194187, -0.096151, -0.976241, + 0.553716, -0.081619, -0.828696, + 0.830227, -0.054637, -0.554741, + 0.980604, -0.019211, -0.195054, + 0.980604, 0.019211, 0.195054, + 0.830228, 0.054637, 0.55474, + 0.553716, 0.081619, 0.828696, + 0.194185, -0.096151, 0.976241, + -0.194185, -0.096151, 0.976241, + -0.553718, -0.081619, 0.828695, + -0.830228, -0.054637, 0.55474, + -0.980604, -0.019211, 0.195054, + -0.980605, 0.019211, -0.195053, + -0.830227, 0.054637, -0.554741, + -0.553717, 0.081619, -0.828695, + -0.194187, 0.096151, -0.976241, + 0.194188, 0.096151, -0.976241, + 0.553716, 0.081619, -0.828696, + 0.830227, 0.054637, -0.554741, + 0.980604, 0.019211, -0.195053, + 0.980604, -0.019211, 0.195054, + 0.830228, -0.054637, 0.55474, + 0.553717, -0.081619, 0.828695, + 0.194186, -0.284759, 0.938725, + -0.194185, -0.284759, 0.938725, + -0.553717, -0.241721, 0.796849, + -0.830228, -0.161812, 0.533421, + -0.980604, -0.056895, 0.187558, + -0.980604, 0.056895, -0.187558, + -0.830227, 0.161812, -0.533422, + -0.553717, 0.241722, -0.796849, + -0.194186, 0.284759, -0.938725, + 0.194187, 0.284759, -0.938724, + 0.553716, 0.241722, -0.796849, + 0.830227, 0.161812, -0.533422, + 0.980604, 0.056895, -0.187558, + 0.980604, -0.056895, 0.187558, + 0.830228, -0.161811, 0.533421, + 0.553716, -0.241722, 0.79685, + 0.194186, -0.462423, 0.865134, + -0.194185, -0.462424, 0.865134, + -0.553717, -0.392534, 0.73438, + -0.830228, -0.262768, 0.491604, + -0.980604, -0.092393, 0.172854, + -0.980604, 0.092393, -0.172854, + -0.830227, 0.262768, -0.491605, + -0.553717, 0.392534, -0.73438, + -0.194187, 0.462424, -0.865134, + 0.194187, 0.462423, -0.865134, + 0.553716, 0.392534, -0.734381, + 0.830227, 0.262768, -0.491605, + 0.980604, 0.092393, -0.172854, + 0.980604, -0.092393, 0.172854, + 0.830228, -0.262768, 0.491604, + 0.553716, -0.392535, 0.734381, + 0.194186, -0.622317, 0.758296, + -0.194186, -0.622318, 0.758296, + -0.553717, -0.528263, 0.64369, + -0.830228, -0.353626, 0.430895, + -0.980604, -0.12434, 0.151508, + -0.980604, 0.124339, -0.151508, + -0.830227, 0.353627, -0.430895, + -0.553717, 0.528263, -0.64369, + -0.194186, 0.622317, -0.758296, + 0.194186, 0.622318, -0.758296, + 0.553716, 0.528263, -0.64369, + 0.830227, 0.353627, -0.430895, + 0.980604, 0.124339, -0.151508, + 0.980604, -0.12434, 0.151508, + 0.830228, -0.353626, 0.430895, + 0.553716, -0.528263, 0.64369, + 0.194186, -0.758296, 0.622317, + -0.194185, -0.758296, 0.622318, + -0.553717, -0.64369, 0.528263, + -0.830228, -0.430895, 0.353626, + -0.980604, -0.151508, 0.124339, + -0.980604, 0.151508, -0.124339, + -0.830227, 0.430895, -0.353627, + -0.553717, 0.643689, -0.528262, + -0.194187, 0.758296, -0.622317, + 0.194187, 0.758296, -0.622317, + 0.553716, 0.64369, -0.528263, + 0.830227, 0.430895, -0.353627, + 0.980604, 0.151508, -0.124339, + 0.980604, -0.151508, 0.12434, + 0.830228, -0.430895, 0.353626, + 0.553716, -0.64369, 0.528263, + 0.194186, -0.865134, 0.462423, + -0.194185, -0.865134, 0.462424, + -0.553717, -0.73438, 0.392534, + -0.830228, -0.491604, 0.262768, + -0.980604, -0.172855, 0.092393, + -0.980604, 0.172854, -0.092393, + -0.830227, 0.491605, -0.262768, + -0.553717, 0.73438, -0.392534, + -0.194186, 0.865134, -0.462424, + 0.194187, 0.865134, -0.462423, + 0.553716, 0.734381, -0.392535, + 0.830228, 0.491605, -0.262768, + 0.980604, 0.172854, -0.092393, + 0.980604, -0.172855, 0.092393, + 0.830228, -0.491604, 0.262768, + 0.553716, -0.734381, 0.392535, + 0.194185, -0.938725, 0.284759, + -0.194185, -0.938725, 0.284759, + -0.553718, -0.796848, 0.241721, + -0.830228, -0.533422, 0.161812, + -0.980604, -0.187558, 0.056895, + -0.980605, 0.187557, -0.056895, + -0.830227, 0.533423, -0.161812, + -0.553717, 0.796849, -0.241722, + -0.194187, 0.938725, -0.284759, + 0.194188, 0.938724, -0.284759, + 0.553716, 0.796849, -0.241722, + 0.830227, 0.533423, -0.161812, + 0.980604, 0.187557, -0.056895, + 0.980604, -0.187558, 0.056895, + 0.830228, -0.533422, 0.161812, + 0.553717, -0.796849, 0.241722, + 0.194186, -0.976241, 0.096151, + -0.194186, -0.976241, 0.096151, + -0.553717, -0.828695, 0.081619, + -0.830228, -0.55474, 0.054637, + -0.980604, -0.195054, 0.019211, + -0.980604, 0.195054, -0.019211, + -0.830227, 0.554741, -0.054637, + -0.553717, 0.828695, -0.081619, + -0.194187, 0.976241, -0.096151, + 0.194187, 0.976241, -0.096151, + 0.553716, 0.828696, -0.081619, + 0.830227, 0.554741, -0.054637, + 0.980604, 0.195054, -0.019211, + 0.980604, -0.195054, 0.019211, + 0.830228, -0.55474, 0.054637, + 0.553716, -0.828696, 0.081619, + 0.194185, -0.976241, -0.096151, + -0.194185, -0.976241, -0.096151, + -0.553718, -0.828695, -0.081619, + -0.830228, -0.55474, -0.054637, + -0.980604, -0.195054, -0.019211, + -0.980605, 0.195053, 0.019211, + -0.830227, 0.554741, 0.054637, + -0.553717, 0.828695, 0.081619, + -0.194187, 0.976241, 0.096151, + 0.194188, 0.976241, 0.096151, + 0.553716, 0.828696, 0.081619, + 0.830227, 0.554741, 0.054637, + 0.980604, 0.195053, 0.019211, + 0.980604, -0.195054, -0.019211, + 0.830228, -0.55474, -0.054637, + 0.553717, -0.828695, -0.081619, + 0.194186, -0.938725, -0.284759, + -0.194185, -0.938725, -0.284759, + -0.553717, -0.796849, -0.241721, + -0.830228, -0.533421, -0.161812, + -0.980604, -0.187558, -0.056895, + -0.980604, 0.187558, 0.056895, + -0.830227, 0.533422, 0.161812, + -0.553717, 0.796849, 0.241722, + -0.194186, 0.938725, 0.284759, + 0.194187, 0.938724, 0.284759, + 0.553716, 0.796849, 0.241722, + 0.830227, 0.533422, 0.161812, + 0.980604, 0.187558, 0.056895, + 0.980604, -0.187558, -0.056895, + 0.830228, -0.533421, -0.161811, + 0.553716, -0.79685, -0.241722, + 0.194186, -0.865134, -0.462423, + -0.194185, -0.865134, -0.462424, + -0.553717, -0.73438, -0.392534, + -0.830228, -0.491604, -0.262768, + -0.980604, -0.172854, -0.092393, + -0.980604, 0.172854, 0.092393, + -0.830227, 0.491605, 0.262768, + -0.553717, 0.73438, 0.392534, + -0.194187, 0.865134, 0.462424, + 0.194187, 0.865134, 0.462423, + 0.553716, 0.734381, 0.392534, + 0.830227, 0.491605, 0.262768, + 0.980604, 0.172854, 0.092393, + 0.980604, -0.172854, -0.092393, + 0.830228, -0.491604, -0.262768, + 0.553716, -0.734381, -0.392535, + 0.194186, -0.758296, -0.622317, + -0.194186, -0.758296, -0.622318, + -0.553717, -0.64369, -0.528263, + -0.830228, -0.430895, -0.353626, + -0.980604, -0.151508, -0.12434, + -0.980604, 0.151508, 0.124339, + -0.830227, 0.430895, 0.353627, + -0.553717, 0.64369, 0.528263, + -0.194186, 0.758296, 0.622317, + 0.194186, 0.758296, 0.622318, + 0.553716, 0.64369, 0.528263, + 0.830227, 0.430895, 0.353627, + 0.980604, 0.151508, 0.124339, + 0.980604, -0.151508, -0.12434, + 0.830228, -0.430895, -0.353626, + 0.553716, -0.64369, -0.528263, + 0.194186, -0.622317, -0.758296, + -0.194185, -0.622318, -0.758296, + -0.553717, -0.528263, -0.64369, + -0.830228, -0.353626, -0.430895, + -0.980604, -0.124339, -0.151508, + -0.980604, 0.124339, 0.151508, + -0.830227, 0.353627, 0.430895, + -0.553717, 0.528262, 0.643689, + -0.194187, 0.622317, 0.758296, + 0.194187, 0.622317, 0.758296, + 0.553716, 0.528263, 0.64369, + 0.830227, 0.353627, 0.430895, + 0.980604, 0.124339, 0.151508, + 0.980604, -0.12434, -0.151508, + 0.830228, -0.353626, -0.430895, + 0.553716, -0.528263, -0.64369, + 0.194186, -0.462423, -0.865134, + -0.194185, -0.462424, -0.865134, + -0.553717, -0.392534, -0.73438, + -0.830228, -0.262768, -0.491604, + -0.980604, -0.092393, -0.172855, + -0.980604, 0.092393, 0.172854, + -0.830227, 0.262768, 0.491605, + -0.553717, 0.392534, 0.73438, + -0.194186, 0.462424, 0.865134, + 0.194187, 0.462423, 0.865134, + 0.553716, 0.392535, 0.734381, + 0.830228, 0.262768, 0.491605, + 0.980604, 0.092393, 0.172854, + 0.980604, -0.092393, -0.172855, + 0.830228, -0.262768, -0.491604, + 0.553716, -0.392535, -0.734381, + 0.194185, -0.284759, -0.938725, + -0.194185, -0.284759, -0.938725, + -0.553718, -0.241721, -0.796848, + -0.830228, -0.161812, -0.533422, + -0.980604, -0.056895, -0.187558, + -0.980605, 0.056895, 0.187557, + -0.830227, 0.161812, 0.533422, + -0.553716, 0.241722, 0.796849, + -0.194187, 0.284759, 0.938725, + 0.194188, 0.284759, 0.938724, + 0.553716, 0.241722, 0.79685, + 0.830227, 0.161812, 0.533423, + 0.980604, 0.056895, 0.187557, + 0.980604, -0.056895, -0.187558, + 0.830228, -0.161812, -0.533422, + 0.553717, -0.241722, -0.796849, + 0.194186, -0.096151, -0.976241, + -0.194186, -0.096151, -0.976241, + -0.553717, -0.081619, -0.828695, + -0.830228, -0.054637, -0.55474, + -0.980604, -0.019211, -0.195054, + -0.980604, 0.019211, 0.195054, + -0.830227, 0.054637, 0.554741, + -0.553717, 0.081619, 0.828695, + -0.194187, 0.096151, 0.976241, + 0.194187, 0.096151, 0.976241, + 0.553716, 0.08162, 0.828696, + 0.830227, 0.054637, 0.554741, + 0.980604, 0.019211, 0.195054, + 0.980604, -0.019211, -0.195054, + 0.830228, -0.054637, -0.55474, + 0.553716, -0.081619, -0.828696, + 0.194185, 0.096151, -0.976241, + -0.194185, 0.096151, -0.976241, + -0.553718, 0.081619, -0.828695, + -0.830228, 0.054637, -0.55474, + -0.980604, 0.019211, -0.195054, + -0.980605, -0.019211, 0.195053, + -0.830227, -0.054637, 0.554741, + -0.553717, -0.081619, 0.828695, + -0.194187, -0.096151, 0.976241, + 0.194188, -0.096151, 0.976241, + 0.553716, -0.081619, 0.828696, + 0.830227, -0.054637, 0.554741, + 0.980604, -0.019211, 0.195053, + 0.980604, 0.019211, -0.195054, + 0.830228, 0.054637, -0.55474, + 0.553717, 0.081619, -0.828695, + 0.194186, 0.284759, -0.938725, + -0.194185, 0.284759, -0.938725, + -0.553717, 0.241721, -0.796849, + -0.830228, 0.161812, -0.533421, + -0.980604, 0.056895, -0.187558, + -0.980604, -0.056895, 0.187558, + -0.830227, -0.161812, 0.533422, + -0.553717, -0.241722, 0.796849, + -0.194186, -0.284759, 0.938725, + 0.194187, -0.284759, 0.938724, + 0.553716, -0.241722, 0.796849, + 0.830227, -0.161812, 0.533422, + 0.980604, -0.056895, 0.187558, + 0.980604, 0.056895, -0.187558, + 0.830228, 0.161811, -0.533421, + 0.553716, 0.241722, -0.79685, + 0.194186, 0.462423, -0.865134, + -0.194185, 0.462424, -0.865134, + -0.553717, 0.392534, -0.73438, + -0.830228, 0.262768, -0.491604, + -0.980604, 0.092393, -0.172854, + -0.980604, -0.092393, 0.172854, + -0.830227, -0.262768, 0.491605, + -0.553717, -0.392534, 0.73438, + -0.194187, -0.462424, 0.865134, + 0.194187, -0.462423, 0.865134, + 0.553716, -0.392534, 0.734381, + 0.830227, -0.262768, 0.491605, + 0.980604, -0.092393, 0.172854, + 0.980604, 0.092393, -0.172854, + 0.830228, 0.262768, -0.491604, + 0.553716, 0.392535, -0.734381, + 0.194186, 0.622317, -0.758296, + -0.194186, 0.622318, -0.758296, + -0.553717, 0.528263, -0.64369, + -0.830228, 0.353626, -0.430895, + -0.980604, 0.12434, -0.151508, + -0.980604, -0.124339, 0.151508, + -0.830227, -0.353627, 0.430895, + -0.553717, -0.528263, 0.64369, + -0.194186, -0.622317, 0.758296, + 0.194186, -0.622318, 0.758296, + 0.553716, -0.528263, 0.64369, + 0.830227, -0.353627, 0.430895, + 0.980604, -0.124339, 0.151508, + 0.980604, 0.12434, -0.151508, + 0.830228, 0.353626, -0.430895, + 0.553716, 0.528263, -0.64369, + 0.194186, 0.758296, -0.622317, + -0.194185, 0.758296, -0.622318, + -0.553717, 0.64369, -0.528263, + -0.830228, 0.430895, -0.353626, + -0.980604, 0.151508, -0.124339, + -0.980604, -0.151508, 0.124339, + -0.830227, -0.430895, 0.353627, + -0.553717, -0.643689, 0.528262, + -0.194187, -0.758296, 0.622317, + 0.194187, -0.758296, 0.622317, + 0.553716, -0.64369, 0.528263, + 0.830227, -0.430895, 0.353627, + 0.980604, -0.151508, 0.124339, + 0.980604, 0.151508, -0.12434, + 0.830228, 0.430895, -0.353626, + 0.553716, 0.64369, -0.528263, + 0.194186, 0.865134, -0.462423, + -0.194185, 0.865134, -0.462424, + -0.553717, 0.73438, -0.392534, + -0.830228, 0.491604, -0.262768, + -0.980604, 0.172855, -0.092393, + -0.980604, -0.172854, 0.092393, + -0.830227, -0.491605, 0.262768, + -0.553717, -0.73438, 0.392534, + -0.194186, -0.865134, 0.462424, + 0.194187, -0.865134, 0.462423, + 0.553716, -0.734381, 0.392535, + 0.830228, -0.491605, 0.262768, + 0.980604, -0.172854, 0.092393, + 0.980604, 0.172855, -0.092393, + 0.830228, 0.491604, -0.262768, + 0.553716, 0.734381, -0.392535, + 0.194185, 0.938725, -0.284759, + -0.194185, 0.938725, -0.284759, + -0.553718, 0.796848, -0.241721, + -0.830228, 0.533422, -0.161812, + -0.980604, 0.187558, -0.056895, + -0.980605, -0.187557, 0.056895, + -0.830227, -0.533422, 0.161812, + -0.553716, -0.796849, 0.241722, + -0.194187, -0.938725, 0.284759, + 0.194188, -0.938724, 0.284759, + 0.553716, -0.79685, 0.241722, + 0.830227, -0.533423, 0.161812, + 0.980604, -0.187557, 0.056895, + 0.980604, 0.187558, -0.056895, + 0.830228, 0.533422, -0.161812, + 0.553717, 0.796849, -0.241722, + 0.194186, 0.976241, -0.096151, + -0.194186, 0.976241, -0.096151, + -0.553717, 0.828695, -0.081619, + -0.830228, 0.55474, -0.054637, + -0.980604, 0.195054, -0.019211, + -0.980604, -0.195054, 0.019211, + -0.830227, -0.554741, 0.054637, + -0.553717, -0.828695, 0.081619, + -0.194187, -0.976241, 0.096151, + 0.194187, -0.976241, 0.096151, + 0.553716, -0.828696, 0.08162, + 0.830227, -0.554741, 0.054637, + 0.980604, -0.195054, 0.019211, + 0.980604, 0.195054, -0.019211, + 0.830228, 0.55474, -0.054637, + 0.553716, 0.828696, -0.081619, +}; + +static const unsigned short int BigValve_POLS[] = +{ + 16, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 1, 4, 700, + 701, 685, 684, 1, 4, 701, 702, 686, 685, 1, 4, 702, 703, 687, 686, 1, 4, 703, 704, 688, + 687, 1, 4, 704, 705, 689, 688, 1, 4, 705, 706, 690, 689, 1, 4, 706, 707, 691, 690, 1, + 4, 707, 708, 692, 691, 1, 4, 708, 709, 693, 692, 1, 4, 709, 710, 694, 693, 1, 4, 710, + 711, 695, 694, 1, 4, 711, 712, 696, 695, 1, 4, 712, 713, 697, 696, 1, 4, 713, 714, 698, + 697, 1, 4, 714, 715, 699, 698, 1, 4, 715, 700, 684, 699, 1, 16, 700, 715, 714, 713, 712, + 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, 1, 4, 668, 669, 655, 654, 1, 4, 669, + 670, 656, 655, 1, 4, 670, 671, 657, 656, 1, 4, 671, 672, 634, 657, 1, 4, 672, 673, 658, + 634, 1, 4, 673, 674, 659, 658, 1, 4, 674, 675, 660, 659, 1, 4, 675, 676, 661, 660, 1, + 4, 676, 677, 662, 661, 1, 4, 677, 678, 663, 662, 1, 4, 678, 679, 664, 663, 1, 4, 679, + 680, 564, 664, 1, 4, 680, 681, 665, 564, 1, 4, 681, 682, 666, 665, 1, 4, 682, 683, 667, + 666, 1, 4, 683, 668, 654, 667, 1, 4, 638, 639, 624, 623, 1, 4, 639, 640, 625, 624, 1, + 4, 640, 641, 626, 625, 1, 4, 641, 642, 603, 626, 1, 4, 642, 643, 627, 603, 1, 4, 643, + 644, 628, 627, 1, 4, 644, 645, 629, 628, 1, 4, 645, 646, 630, 629, 1, 4, 646, 647, 631, + 630, 1, 4, 647, 648, 632, 631, 1, 4, 648, 649, 633, 632, 1, 4, 649, 650, 634, 633, 1, + 4, 650, 651, 635, 634, 1, 4, 651, 652, 636, 635, 1, 4, 652, 653, 637, 636, 1, 4, 653, + 638, 623, 637, 1, 4, 607, 608, 593, 592, 1, 4, 608, 609, 594, 593, 1, 4, 609, 610, 595, + 594, 1, 4, 610, 611, 572, 595, 1, 4, 611, 612, 596, 572, 1, 4, 612, 613, 597, 596, 1, + 4, 613, 614, 598, 597, 1, 4, 614, 615, 599, 598, 1, 4, 615, 616, 600, 599, 1, 4, 616, + 617, 601, 600, 1, 4, 617, 618, 602, 601, 1, 4, 618, 619, 603, 602, 1, 4, 619, 620, 604, + 603, 1, 4, 620, 621, 605, 604, 1, 4, 621, 622, 606, 605, 1, 4, 622, 607, 592, 606, 1, + 4, 576, 577, 561, 560, 1, 4, 577, 578, 562, 561, 1, 4, 578, 579, 563, 562, 1, 4, 579, + 580, 564, 563, 1, 4, 580, 581, 565, 564, 1, 4, 581, 582, 566, 565, 1, 4, 582, 583, 567, + 566, 1, 4, 583, 584, 568, 567, 1, 4, 584, 585, 569, 568, 1, 4, 585, 586, 570, 569, 1, + 4, 586, 587, 571, 570, 1, 4, 587, 588, 572, 571, 1, 4, 588, 589, 573, 572, 1, 4, 589, + 590, 574, 573, 1, 4, 590, 591, 575, 574, 1, 4, 591, 576, 560, 575, 1, 24, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 1, 4, 536, 537, 513, 512, 1, 4, 537, 538, 514, 513, 1, 4, 538, 539, 515, 514, 1, + 4, 539, 540, 516, 515, 1, 4, 540, 541, 517, 516, 1, 4, 541, 542, 518, 517, 1, 4, 542, + 543, 519, 518, 1, 4, 543, 544, 520, 519, 1, 4, 544, 545, 521, 520, 1, 4, 545, 546, 522, + 521, 1, 4, 546, 547, 523, 522, 1, 4, 547, 548, 524, 523, 1, 4, 548, 549, 525, 524, 1, + 4, 549, 550, 526, 525, 1, 4, 550, 551, 527, 526, 1, 4, 551, 552, 528, 527, 1, 4, 552, + 553, 529, 528, 1, 4, 553, 554, 530, 529, 1, 4, 554, 555, 531, 530, 1, 4, 555, 556, 532, + 531, 1, 4, 556, 557, 533, 532, 1, 4, 557, 558, 534, 533, 1, 4, 558, 559, 535, 534, 1, + 4, 559, 536, 512, 535, 1, 24, 536, 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, + 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, 1, 4, 16, 31, 15, 0, 1, 4, 31, + 30, 14, 15, 1, 4, 30, 29, 13, 14, 1, 4, 29, 28, 12, 13, 1, 4, 28, 27, 11, + 12, 1, 4, 27, 26, 10, 11, 1, 4, 26, 25, 9, 10, 1, 4, 25, 24, 8, 9, 1, + 4, 24, 23, 7, 8, 1, 4, 23, 22, 6, 7, 1, 4, 22, 21, 5, 6, 1, 4, 21, + 20, 4, 5, 1, 4, 20, 19, 3, 4, 1, 4, 19, 18, 2, 3, 1, 4, 18, 17, 1, + 2, 1, 4, 17, 16, 0, 1, 1, 4, 32, 47, 31, 16, 1, 4, 47, 46, 30, 31, 1, + 4, 46, 45, 29, 30, 1, 4, 45, 44, 28, 29, 1, 4, 44, 43, 27, 28, 1, 4, 43, + 42, 26, 27, 1, 4, 42, 41, 25, 26, 1, 4, 41, 40, 24, 25, 1, 4, 40, 39, 23, + 24, 1, 4, 39, 38, 22, 23, 1, 4, 38, 37, 21, 22, 1, 4, 37, 36, 20, 21, 1, + 4, 36, 35, 19, 20, 1, 4, 35, 34, 18, 19, 1, 4, 34, 33, 17, 18, 1, 4, 33, + 32, 16, 17, 1, 4, 48, 63, 47, 32, 1, 4, 63, 62, 46, 47, 1, 4, 62, 61, 45, + 46, 1, 4, 61, 60, 44, 45, 1, 4, 60, 59, 43, 44, 1, 4, 59, 58, 42, 43, 1, + 4, 58, 57, 41, 42, 1, 4, 57, 56, 40, 41, 1, 4, 56, 55, 39, 40, 1, 4, 55, + 54, 38, 39, 1, 4, 54, 53, 37, 38, 1, 4, 53, 52, 36, 37, 1, 4, 52, 51, 35, + 36, 1, 4, 51, 50, 34, 35, 1, 4, 50, 49, 33, 34, 1, 4, 49, 48, 32, 33, 1, + 4, 64, 79, 63, 48, 1, 4, 79, 78, 62, 63, 1, 4, 78, 77, 61, 62, 1, 4, 77, + 76, 60, 61, 1, 4, 76, 75, 59, 60, 1, 4, 75, 74, 58, 59, 1, 4, 74, 73, 57, + 58, 1, 4, 73, 72, 56, 57, 1, 4, 72, 71, 55, 56, 1, 4, 71, 70, 54, 55, 1, + 4, 70, 69, 53, 54, 1, 4, 69, 68, 52, 53, 1, 4, 68, 67, 51, 52, 1, 4, 67, + 66, 50, 51, 1, 4, 66, 65, 49, 50, 1, 4, 65, 64, 48, 49, 1, 4, 80, 95, 79, + 64, 1, 4, 95, 94, 78, 79, 1, 4, 94, 93, 77, 78, 1, 4, 93, 92, 76, 77, 1, + 4, 92, 91, 75, 76, 1, 4, 91, 90, 74, 75, 1, 4, 90, 89, 73, 74, 1, 4, 89, + 88, 72, 73, 1, 4, 88, 87, 71, 72, 1, 4, 87, 86, 70, 71, 1, 4, 86, 85, 69, + 70, 1, 4, 85, 84, 68, 69, 1, 4, 84, 83, 67, 68, 1, 4, 83, 82, 66, 67, 1, + 4, 82, 81, 65, 66, 1, 4, 81, 80, 64, 65, 1, 4, 96, 111, 95, 80, 1, 4, 111, + 110, 94, 95, 1, 4, 110, 109, 93, 94, 1, 4, 109, 108, 92, 93, 1, 4, 108, 107, 91, +92, 1, 4, 107, 106, 90, 91, 1, 4, 106, 105, 89, 90, 1, 4, 105, 104, 88, 89, 1, + 4, 104, 103, 87, 88, 1, 4, 103, 102, 86, 87, 1, 4, 102, 101, 85, 86, 1, 4, 101, + 100, 84, 85, 1, 4, 100, 99, 83, 84, 1, 4, 99, 98, 82, 83, 1, 4, 98, 97, 81, + 82, 1, 4, 97, 96, 80, 81, 1, 4, 112, 127, 111, 96, 1, 4, 127, 126, 110, 111, 1, + 4, 126, 125, 109, 110, 1, 4, 125, 124, 108, 109, 1, 4, 124, 123, 107, 108, 1, 4, 123, + 122, 106, 107, 1, 4, 122, 121, 105, 106, 1, 4, 121, 120, 104, 105, 1, 4, 120, 119, 103, + 104, 1, 4, 119, 118, 102, 103, 1, 4, 118, 117, 101, 102, 1, 4, 117, 116, 100, 101, 1, + 4, 116, 115, 99, 100, 1, 4, 115, 114, 98, 99, 1, 4, 114, 113, 97, 98, 1, 4, 113, + 112, 96, 97, 1, 4, 128, 143, 127, 112, 1, 4, 143, 142, 126, 127, 1, 4, 142, 141, 125, + 126, 1, 4, 141, 140, 124, 125, 1, 4, 140, 139, 123, 124, 1, 4, 139, 138, 122, 123, 1, + 4, 138, 137, 121, 122, 1, 4, 137, 136, 120, 121, 1, 4, 136, 135, 119, 120, 1, 4, 135, + 134, 118, 119, 1, 4, 134, 133, 117, 118, 1, 4, 133, 132, 116, 117, 1, 4, 132, 131, 115, + 116, 1, 4, 131, 130, 114, 115, 1, 4, 130, 129, 113, 114, 1, 4, 129, 128, 112, 113, 1, + 4, 144, 159, 143, 128, 1, 4, 159, 158, 142, 143, 1, 4, 158, 157, 141, 142, 1, 4, 157, + 156, 140, 141, 1, 4, 156, 155, 139, 140, 1, 4, 155, 154, 138, 139, 1, 4, 154, 153, 137, + 138, 1, 4, 153, 152, 136, 137, 1, 4, 152, 151, 135, 136, 1, 4, 151, 150, 134, 135, 1, + 4, 150, 149, 133, 134, 1, 4, 149, 148, 132, 133, 1, 4, 148, 147, 131, 132, 1, 4, 147, + 146, 130, 131, 1, 4, 146, 145, 129, 130, 1, 4, 145, 144, 128, 129, 1, 4, 160, 175, 159, + 144, 1, 4, 175, 174, 158, 159, 1, 4, 174, 173, 157, 158, 1, 4, 173, 172, 156, 157, 1, + 4, 172, 171, 155, 156, 1, 4, 171, 170, 154, 155, 1, 4, 170, 169, 153, 154, 1, 4, 169, + 168, 152, 153, 1, 4, 168, 167, 151, 152, 1, 4, 167, 166, 150, 151, 1, 4, 166, 165, 149, + 150, 1, 4, 165, 164, 148, 149, 1, 4, 164, 163, 147, 148, 1, 4, 163, 162, 146, 147, 1, + 4, 162, 161, 145, 146, 1, 4, 161, 160, 144, 145, 1, 4, 176, 191, 175, 160, 1, 4, 191, + 190, 174, 175, 1, 4, 190, 189, 173, 174, 1, 4, 189, 188, 172, 173, 1, 4, 188, 187, 171, + 172, 1, 4, 187, 186, 170, 171, 1, 4, 186, 185, 169, 170, 1, 4, 185, 184, 168, 169, 1, + 4, 184, 183, 167, 168, 1, 4, 183, 182, 166, 167, 1, 4, 182, 181, 165, 166, 1, 4, 181, + 180, 164, 165, 1, 4, 180, 179, 163, 164, 1, 4, 179, 178, 162, 163, 1, 4, 178, 177, 161, + 162, 1, 4, 177, 176, 160, 161, 1, 4, 192, 207, 191, 176, 1, 4, 207, 206, 190, 191, 1, + 4, 206, 205, 189, 190, 1, 4, 205, 204, 188, 189, 1, 4, 204, 203, 187, 188, 1, 4, 203, + 202, 186, 187, 1, 4, 202, 201, 185, 186, 1, 4, 201, 200, 184, 185, 1, 4, 200, 199, 183, + 184, 1, 4, 199, 198, 182, 183, 1, 4, 198, 197, 181, 182, 1, 4, 197, 196, 180, 181, 1, + 4, 196, 195, 179, 180, 1, 4, 195, 194, 178, 179, 1, 4, 194, 193, 177, 178, 1, 4, 193, + 192, 176, 177, 1, 4, 208, 223, 207, 192, 1, 4, 223, 222, 206, 207, 1, 4, 222, 221, 205, + 206, 1, 4, 221, 220, 204, 205, 1, 4, 220, 219, 203, 204, 1, 4, 219, 218, 202, 203, 1, + 4, 218, 217, 201, 202, 1, 4, 217, 216, 200, 201, 1, 4, 216, 215, 199, 200, 1, 4, 215, + 214, 198, 199, 1, 4, 214, 213, 197, 198, 1, 4, 213, 212, 196, 197, 1, 4, 212, 211, 195, + 196, 1, 4, 211, 210, 194, 195, 1, 4, 210, 209, 193, 194, 1, 4, 209, 208, 192, 193, 1, + 4, 224, 239, 223, 208, 1, 4, 239, 238, 222, 223, 1, 4, 238, 237, 221, 222, 1, 4, 237, + 236, 220, 221, 1, 4, 236, 235, 219, 220, 1, 4, 235, 234, 218, 219, 1, 4, 234, 233, 217, + 218, 1, 4, 233, 232, 216, 217, 1, 4, 232, 231, 215, 216, 1, 4, 231, 230, 214, 215, 1, + 4, 230, 229, 213, 214, 1, 4, 229, 228, 212, 213, 1, 4, 228, 227, 211, 212, 1, 4, 227, + 226, 210, 211, 1, 4, 226, 225, 209, 210, 1, 4, 225, 224, 208, 209, 1, 4, 240, 255, 239, + 224, 1, 4, 255, 254, 238, 239, 1, 4, 254, 253, 237, 238, 1, 4, 253, 252, 236, 237, 1, + 4, 252, 251, 235, 236, 1, 4, 251, 250, 234, 235, 1, 4, 250, 249, 233, 234, 1, 4, 249, + 248, 232, 233, 1, 4, 248, 247, 231, 232, 1, 4, 247, 246, 230, 231, 1, 4, 246, 245, 229, + 230, 1, 4, 245, 244, 228, 229, 1, 4, 244, 243, 227, 228, 1, 4, 243, 242, 226, 227, 1, + 4, 242, 241, 225, 226, 1, 4, 241, 240, 224, 225, 1, 4, 256, 271, 255, 240, 1, 4, 271, + 270, 254, 255, 1, 4, 270, 269, 253, 254, 1, 4, 269, 268, 252, 253, 1, 4, 268, 267, 251, + 252, 1, 4, 267, 266, 250, 251, 1, 4, 266, 265, 249, 250, 1, 4, 265, 264, 248, 249, 1, + 4, 264, 263, 247, 248, 1, 4, 263, 262, 246, 247, 1, 4, 262, 261, 245, 246, 1, 4, 261, + 260, 244, 245, 1, 4, 260, 259, 243, 244, 1, 4, 259, 258, 242, 243, 1, 4, 258, 257, 241, + 242, 1, 4, 257, 256, 240, 241, 1, 4, 272, 287, 271, 256, 1, 4, 287, 286, 270, 271, 1, + 4, 286, 285, 269, 270, 1, 4, 285, 284, 268, 269, 1, 4, 284, 283, 267, 268, 1, 4, 283, + 282, 266, 267, 1, 4, 282, 281, 265, 266, 1, 4, 281, 280, 264, 265, 1, 4, 280, 279, 263, + 264, 1, 4, 279, 278, 262, 263, 1, 4, 278, 277, 261, 262, 1, 4, 277, 276, 260, 261, 1, + 4, 276, 275, 259, 260, 1, 4, 275, 274, 258, 259, 1, 4, 274, 273, 257, 258, 1, 4, 273, + 272, 256, 257, 1, 4, 288, 303, 287, 272, 1, 4, 303, 302, 286, 287, 1, 4, 302, 301, 285, + 286, 1, 4, 301, 300, 284, 285, 1, 4, 300, 299, 283, 284, 1, 4, 299, 298, 282, 283, 1, + 4, 298, 297, 281, 282, 1, 4, 297, 296, 280, 281, 1, 4, 296, 295, 279, 280, 1, 4, 295, + 294, 278, 279, 1, 4, 294, 293, 277, 278, 1, 4, 293, 292, 276, 277, 1, 4, 292, 291, 275, + 276, 1, 4, 291, 290, 274, 275, 1, 4, 290, 289, 273, 274, 1, 4, 289, 288, 272, 273, 1, + 4, 304, 319, 303, 288, 1, 4, 319, 318, 302, 303, 1, 4, 318, 317, 301, 302, 1, 4, 317, + 316, 300, 301, 1, 4, 316, 315, 299, 300, 1, 4, 315, 314, 298, 299, 1, 4, 314, 313, 297, + 298, 1, 4, 313, 312, 296, 297, 1, 4, 312, 311, 295, 296, 1, 4, 311, 310, 294, 295, 1, + 4, 310, 309, 293, 294, 1, 4, 309, 308, 292, 293, 1, 4, 308, 307, 291, 292, 1, 4, 307, + 306, 290, 291, 1, 4, 306, 305, 289, 290, 1, 4, 305, 304, 288, 289, 1, 4, 320, 335, 319, + 304, 1, 4, 335, 334, 318, 319, 1, 4, 334, 333, 317, 318, 1, 4, 333, 332, 316, 317, 1, + 4, 332, 331, 315, 316, 1, 4, 331, 330, 314, 315, 1, 4, 330, 329, 313, 314, 1, 4, 329, + 328, 312, 313, 1, 4, 328, 327, 311, 312, 1, 4, 327, 326, 310, 311, 1, 4, 326, 325, 309, + 310, 1, 4, 325, 324, 308, 309, 1, 4, 324, 323, 307, 308, 1, 4, 323, 322, 306, 307, 1, + 4, 322, 321, 305, 306, 1, 4, 321, 320, 304, 305, 1, 4, 336, 351, 335, 320, 1, 4, 351, + 350, 334, 335, 1, 4, 350, 349, 333, 334, 1, 4, 349, 348, 332, 333, 1, 4, 348, 347, 331, + 332, 1, 4, 347, 346, 330, 331, 1, 4, 346, 345, 329, 330, 1, 4, 345, 344, 328, 329, 1, + 4, 344, 343, 327, 328, 1, 4, 343, 342, 326, 327, 1, 4, 342, 341, 325, 326, 1, 4, 341, + 340, 324, 325, 1, 4, 340, 339, 323, 324, 1, 4, 339, 338, 322, 323, 1, 4, 338, 337, 321, + 322, 1, 4, 337, 336, 320, 321, 1, 4, 352, 367, 351, 336, 1, 4, 367, 366, 350, 351, 1, + 4, 366, 365, 349, 350, 1, 4, 365, 364, 348, 349, 1, 4, 364, 363, 347, 348, 1, 4, 363, + 362, 346, 347, 1, 4, 362, 361, 345, 346, 1, 4, 361, 360, 344, 345, 1, 4, 360, 359, 343, + 344, 1, 4, 359, 358, 342, 343, 1, 4, 358, 357, 341, 342, 1, 4, 357, 356, 340, 341, 1, + 4, 356, 355, 339, 340, 1, 4, 355, 354, 338, 339, 1, 4, 354, 353, 337, 338, 1, 4, 353, + 352, 336, 337, 1, 4, 368, 383, 367, 352, 1, 4, 383, 382, 366, 367, 1, 4, 382, 381, 365, + 366, 1, 4, 381, 380, 364, 365, 1, 4, 380, 379, 363, 364, 1, 4, 379, 378, 362, 363, 1, + 4, 378, 377, 361, 362, 1, 4, 377, 376, 360, 361, 1, 4, 376, 375, 359, 360, 1, 4, 375, + 374, 358, 359, 1, 4, 374, 373, 357, 358, 1, 4, 373, 372, 356, 357, 1, 4, 372, 371, 355, + 356, 1, 4, 371, 370, 354, 355, 1, 4, 370, 369, 353, 354, 1, 4, 369, 368, 352, 353, 1, + 4, 384, 399, 383, 368, 1, 4, 399, 398, 382, 383, 1, 4, 398, 397, 381, 382, 1, 4, 397, + 396, 380, 381, 1, 4, 396, 395, 379, 380, 1, 4, 395, 394, 378, 379, 1, 4, 394, 393, 377, + 378, 1, 4, 393, 392, 376, 377, 1, 4, 392, 391, 375, 376, 1, 4, 391, 390, 374, 375, 1, + 4, 390, 389, 373, 374, 1, 4, 389, 388, 372, 373, 1, 4, 388, 387, 371, 372, 1, 4, 387, + 386, 370, 371, 1, 4, 386, 385, 369, 370, 1, 4, 385, 384, 368, 369, 1, 4, 400, 415, 399, + 384, 1, 4, 415, 414, 398, 399, 1, 4, 414, 413, 397, 398, 1, 4, 413, 412, 396, 397, 1, + 4, 412, 411, 395, 396, 1, 4, 411, 410, 394, 395, 1, 4, 410, 409, 393, 394, 1, 4, 409, + 408, 392, 393, 1, 4, 408, 407, 391, 392, 1, 4, 407, 406, 390, 391, 1, 4, 406, 405, 389, + 390, 1, 4, 405, 404, 388, 389, 1, 4, 404, 403, 387, 388, 1, 4, 403, 402, 386, 387, 1, + 4, 402, 401, 385, 386, 1, 4, 401, 400, 384, 385, 1, 4, 416, 431, 415, 400, 1, 4, 431, + 430, 414, 415, 1, 4, 430, 429, 413, 414, 1, 4, 429, 428, 412, 413, 1, 4, 428, 427, 411, + 412, 1, 4, 427, 426, 410, 411, 1, 4, 426, 425, 409, 410, 1, 4, 425, 424, 408, 409, 1, + 4, 424, 423, 407, 408, 1, 4, 423, 422, 406, 407, 1, 4, 422, 421, 405, 406, 1, 4, 421, + 420, 404, 405, 1, 4, 420, 419, 403, 404, 1, 4, 419, 418, 402, 403, 1, 4, 418, 417, 401, + 402, 1, 4, 417, 416, 400, 401, 1, 4, 432, 447, 431, 416, 1, 4, 447, 446, 430, 431, 1, + 4, 446, 445, 429, 430, 1, 4, 445, 444, 428, 429, 1, 4, 444, 443, 427, 428, 1, 4, 443, + 442, 426, 427, 1, 4, 442, 441, 425, 426, 1, 4, 441, 440, 424, 425, 1, 4, 440, 439, 423, + 424, 1, 4, 439, 438, 422, 423, 1, 4, 438, 437, 421, 422, 1, 4, 437, 436, 420, 421, 1, + 4, 436, 435, 419, 420, 1, 4, 435, 434, 418, 419, 1, 4, 434, 433, 417, 418, 1, 4, 433, + 432, 416, 417, 1, 4, 448, 463, 447, 432, 1, 4, 463, 462, 446, 447, 1, 4, 462, 461, 445, + 446, 1, 4, 461, 460, 444, 445, 1, 4, 460, 459, 443, 444, 1, 4, 459, 458, 442, 443, 1, + 4, 458, 457, 441, 442, 1, 4, 457, 456, 440, 441, 1, 4, 456, 455, 439, 440, 1, 4, 455, + 454, 438, 439, 1, 4, 454, 453, 437, 438, 1, 4, 453, 452, 436, 437, 1, 4, 452, 451, 435, + 436, 1, 4, 451, 450, 434, 435, 1, 4, 450, 449, 433, 434, 1, 4, 449, 448, 432, 433, 1, + 4, 464, 479, 463, 448, 1, 4, 479, 478, 462, 463, 1, 4, 478, 477, 461, 462, 1, 4, 477, + 476, 460, 461, 1, 4, 476, 475, 459, 460, 1, 4, 475, 474, 458, 459, 1, 4, 474, 473, 457, + 458, 1, 4, 473, 472, 456, 457, 1, 4, 472, 471, 455, 456, 1, 4, 471, 470, 454, 455, 1, + 4, 470, 469, 453, 454, 1, 4, 469, 468, 452, 453, 1, 4, 468, 467, 451, 452, 1, 4, 467, + 466, 450, 451, 1, 4, 466, 465, 449, 450, 1, 4, 465, 464, 448, 449, 1, 4, 480, 495, 479, + 464, 1, 4, 495, 494, 478, 479, 1, 4, 494, 493, 477, 478, 1, 4, 493, 492, 476, 477, 1, + 4, 492, 491, 475, 476, 1, 4, 491, 490, 474, 475, 1, 4, 490, 489, 473, 474, 1, 4, 489, + 488, 472, 473, 1, 4, 488, 487, 471, 472, 1, 4, 487, 486, 470, 471, 1, 4, 486, 485, 469, + 470, 1, 4, 485, 484, 468, 469, 1, 4, 484, 483, 467, 468, 1, 4, 483, 482, 466, 467, 1, + 4, 482, 481, 465, 466, 1, 4, 481, 480, 464, 465, 1, 4, 496, 511, 495, 480, 1, 4, 511, + 510, 494, 495, 1, 4, 510, 509, 493, 494, 1, 4, 509, 508, 492, 493, 1, 4, 508, 507, 491, + 492, 1, 4, 507, 506, 490, 491, 1, 4, 506, 505, 489, 490, 1, 4, 505, 504, 488, 489, 1, + 4, 504, 503, 487, 488, 1, 4, 503, 502, 486, 487, 1, 4, 502, 501, 485, 486, 1, 4, 501, + 500, 484, 485, 1, 4, 500, 499, 483, 484, 1, 4, 499, 498, 482, 483, 1, 4, 498, 497, 481, + 482, 1, 4, 497, 496, 480, 481, 1, 4, 0, 15, 511, 496, 1, 4, 15, 14, 510, 511, 1, +4, 14, 13, 509, 510, 1, 4, 13, 12, 508, 509, 1, 4, 12, 11, 507, 508, 1, 4, 11, + 10, 506, 507, 1, 4, 10, 9, 505, 506, 1, 4, 9, 8, 504, 505, 1, 4, 8, 7, 503, + 504, 1, 4, 7, 6, 502, 503, 1, 4, 6, 5, 501, 502, 1, 4, 5, 4, 500, 501, 1, + 4, 4, 3, 499, 500, 1, 4, 3, 2, 498, 499, 1, 4, 2, 1, 497, 498, 1, 4, 1, + 0, 496, 497, 1, + 0 +}; + +struct lwo LWO_BigValve = +{ + 716, /* number of points */ + BigValve_PNTS, BigValve_normals, BigValve_POLS, 0L +}; + +static const GLfloat Bolts3D_PNTS[] = +{ + -0.160704, 0.399, 0.6, + -0.160704, 0.399, -0.5, + -0.4, 0.160257, 0.6, + -0.4, 0.160257, -0.5, + -0.4, -0.170369, 0.6, + -0.4, -0.170369, -0.5, + -0.153738, -0.4, 0.6, + -0.153738, -0.4, -0.5, + 0.176887, -0.4, 0.6, + 0.176887, -0.4, -0.5, + 0.4, -0.163403, 0.6, + 0.4, -0.163403, -0.5, + 0.4, 0.167223, 0.6, + 0.4, 0.167223, -0.5, + 0.169922, 0.399, 0.6, + 0.169922, 0.399, -0.5, + -0.160704, 0.399, 0.5, + -0.160704, 0.399, -0.6, + -0.4, 0.160257, -0.6, + -0.4, 0.160257, 0.5, + -0.4, -0.170369, -0.6, + -0.4, -0.170369, 0.5, + -0.153738, -0.4, -0.6, + -0.153738, -0.4, 0.5, + 0.176887, -0.4, 0.5, + 0.176887, -0.4, -0.6, + 0.4, -0.163403, 0.5, + 0.4, -0.163403, -0.6, + 0.4, 0.167223, -0.6, + 0.4, 0.167223, 0.5, + 0.169922, 0.399, -0.6, + 0.169922, 0.399, 0.5, +}; + +static const GLfloat Bolts3D_normals[] = +{ + 0, 1, 0, + 0.709703, 0.704502, 0, + 1, 0, 0, + 0.727535, -0.68607, 0, + 0, -1, 0, + -0.68198, -0.73137, 0, + -1, 0, 0, + -0.706289, 0.707924, 0, + 0, 0, 1, + 0, 1, 0, + 0.709703, 0.704502, 0, + 1, 0, 0, + 0.727535, -0.68607, 0, + 0, -1, 0, + -0.68198, -0.73137, 0, + -1, 0, 0, + -0.706289, 0.707924, 0, + 0, 0, -1, +}; + +static const unsigned short int Bolts3D_POLS[] = +{ + 4, 16, 31, 14, 0, 1, 4, 31, 29, 12, 14, 1, 4, 29, 26, 10, 12, 1, 4, 26, + 24, 8, 10, 1, 4, 24, 23, 6, 8, 1, 4, 23, 21, 4, 6, 1, 4, 21, 19, 2, + 4, 1, 4, 19, 16, 0, 2, 1, 8, 14, 12, 10, 8, 6, 4, 2, 0, 1, 4, 17, + 30, 15, 1, 1, 4, 30, 28, 13, 15, 1, 4, 28, 27, 11, 13, 1, 4, 27, 25, 9, + 11, 1, 4, 25, 22, 7, 9, 1, 4, 22, 20, 5, 7, 1, 4, 20, 18, 3, 5, 1, + 4, 18, 17, 1, 3, 1, 8, 30, 17, 18, 20, 22, 25, 27, 28, 1, + 0 +}; + +struct lwo LWO_Bolts3D = +{ + 32, /* number of points */ + Bolts3D_PNTS, Bolts3D_normals, Bolts3D_POLS, 0L +}; + +static const GLfloat GuageConnector_PNTS[] = +{ + 0.2, 0.4, 0, + 0.2, 0.8, 0, + 0.193185, 0.4, -0.051764, + 0.193185, 0.8, -0.051764, + 0.173205, 0.4, -0.1, + 0.173205, 0.8, -0.1, + 0.141421, 0.8, -0.141421, + 0.141421, 0.4, -0.141421, + 0.1, 0.4, -0.173205, + 0.1, 0.8, -0.173205, + 0.051764, 0.8, -0.193185, + 0.051764, 0.4, -0.193185, + 0, 0.8, -0.2, + 0, 0.4, -0.2, + -0.051764, 0.8, -0.193185, + -0.051764, 0.4, -0.193185, + -0.1, 0.8, -0.173205, + -0.1, 0.4, -0.173205, + -0.141421, 0.4, -0.141421, + -0.141421, 0.8, -0.141421, + -0.173205, 0.8, -0.1, + -0.173205, 0.4, -0.1, + -0.193185, 0.4, -0.051764, + -0.193185, 0.8, -0.051764, + -0.2, 0.4, 0, + -0.2, 0.8, 0, + -0.193185, 0.4, 0.051764, + -0.193185, 0.8, 0.051764, + -0.173205, 0.4, 0.1, + -0.173205, 0.8, 0.1, + -0.141421, 0.8, 0.141421, + -0.141421, 0.4, 0.141421, + -0.1, 0.8, 0.173205, + -0.1, 0.4, 0.173205, + -0.051764, 0.8, 0.193185, + -0.051764, 0.4, 0.193185, + 0, 0.8, 0.2, + 0, 0.4, 0.2, + 0.051764, 0.8, 0.193185, + 0.051764, 0.4, 0.193185, + 0.1, 0.4, 0.173205, + 0.1, 0.8, 0.173205, + 0.141421, 0.4, 0.141421, + 0.141421, 0.8, 0.141421, + 0.173205, 0.8, 0.1, + 0.173205, 0.4, 0.1, + 0.193185, 0.4, 0.051764, + 0.193185, 0.8, 0.051764, + 0.2, 0.55, 0, + 0.193185, 0.55, -0.051764, + 0.173205, 0.55, -0.1, + 0.141421, 0.55, -0.141421, + 0.1, 0.55, -0.173205, + 0.051764, 0.55, -0.193185, + 0, 0.55, -0.2, + -0.051764, 0.55, -0.193185, + -0.1, 0.55, -0.173205, + -0.141421, 0.55, -0.141421, + -0.173205, 0.55, -0.1, + -0.193185, 0.55, -0.051764, + -0.2, 0.55, 0, + -0.193185, 0.55, 0.051764, + -0.173205, 0.55, 0.1, + -0.141421, 0.55, 0.141421, + -0.1, 0.55, 0.173205, + -0.051764, 0.55, 0.193185, + 0, 0.55, 0.2, + 0.051764, 0.55, 0.193185, + 0.1, 0.55, 0.173205, + 0.141421, 0.55, 0.141421, + 0.173205, 0.55, 0.1, + 0.193185, 0.55, 0.051764, + 0.15, 0.55, 0, + 0.144889, 0.55, -0.038823, + 0.129904, 0.55, -0.075, + 0.106066, 0.55, -0.106066, + 0.075, 0.55, -0.129904, + 0.038823, 0.55, -0.144889, + 0, 0.55, -0.15, + -0.038823, 0.55, -0.144889, + -0.075, 0.55, -0.129904, + -0.106066, 0.55, -0.106066, + -0.129904, 0.55, -0.075, + -0.144889, 0.55, -0.038823, + -0.15, 0.55, 0, + -0.144889, 0.55, 0.038823, + -0.129904, 0.55, 0.075, + -0.106066, 0.55, 0.106066, + -0.075, 0.55, 0.129904, + -0.038823, 0.55, 0.144889, + 0, 0.55, 0.15, + 0.038823, 0.55, 0.144889, + 0.075, 0.55, 0.129904, + 0.106066, 0.55, 0.106066, + 0.129904, 0.55, 0.075, + 0.144889, 0.55, 0.038823, + 0.15, 0.8, 0, + 0.144889, 0.8, -0.038823, + 0.129904, 0.8, -0.075, + 0.106066, 0.8, -0.106066, + 0.075, 0.8, -0.129904, + 0.038823, 0.8, -0.144889, + 0, 0.8, -0.15, + -0.038823, 0.8, -0.144889, + -0.075, 0.8, -0.129904, + -0.106066, 0.8, -0.106066, + -0.129904, 0.8, -0.075, + -0.144889, 0.8, -0.038823, + -0.15, 0.8, 0, + -0.144889, 0.8, 0.038823, + -0.129904, 0.8, 0.075, + -0.106066, 0.8, 0.106066, + -0.075, 0.8, 0.129904, + -0.038823, 0.8, 0.144889, + 0, 0.8, 0.15, + 0.038823, 0.8, 0.144889, + 0.075, 0.8, 0.129904, + 0.106066, 0.8, 0.106066, + 0.129904, 0.8, 0.075, + 0.144889, 0.8, 0.038823, + 0.2, 0.875988, 0, + 0.193185, 0.872346, -0.051764, + 0.191342, 0.87136, -0.056214, + 0.173205, 0.865859, -0.1, + 0.141421, 0.856217, -0.141421, + 0.1, 0.843652, -0.173205, + 0.097545, 0.842907, -0.174222, + 0.051764, 0.838398, -0.193185, + 0, 0.8333, -0.2, + -0.051764, 0.838398, -0.193185, + -0.097545, 0.842907, -0.174222, + -0.1, 0.843652, -0.173205, + -0.141421, 0.856217, -0.141421, + -0.173205, 0.865859, -0.1, + -0.191342, 0.87136, -0.056214, + -0.193185, 0.872346, -0.051764, + -0.2, 0.875988, 0, + -0.193185, 0.872346, 0.051764, + -0.173205, 0.865859, 0.1, + -0.191342, 0.87136, 0.056214, + -0.141421, 0.856217, 0.141421, + -0.1, 0.843652, 0.173205, + -0.051764, 0.838398, 0.193185, + -0.097545, 0.842907, 0.174222, + 0, 0.8333, 0.2, + 0.051764, 0.838398, 0.193185, + 0.1, 0.843652, 0.173205, + 0.097545, 0.842907, 0.174222, + 0.141421, 0.856217, 0.141421, + 0.173205, 0.865859, 0.1, + 0.193185, 0.872346, 0.051764, + 0.191342, 0.87136, 0.056214, +}; + +static const GLfloat GuageConnector_normals[] = +{ + 0.991445, 0, -0.130526, + 0.92388, 0, -0.382683, + 0.793353, 0, -0.608761, + 0.608761, 0, -0.793353, + 0.382683, 0, -0.92388, + 0.130526, 0, -0.991445, + -0.130526, 0, -0.991445, + -0.382683, 0, -0.92388, + -0.608761, 0, -0.793353, + -0.793353, 0, -0.608761, + -0.92388, 0, -0.382683, + -0.991445, 0, -0.130526, + -0.991445, 0, 0.130526, + -0.92388, 0, 0.382683, + -0.793353, 0, 0.608761, + -0.608761, 0, 0.793353, + -0.382683, 0, 0.92388, + -0.130526, 0, 0.991445, + 0.130526, 0, 0.991445, + 0.382683, 0, 0.92388, + 0.608761, 0, 0.793353, + 0.793353, 0, 0.608761, + 0.92388, 0, 0.382683, + 0.991445, 0, 0.130526, + 0.991445, 0, -0.130526, + 0.92388, 0, -0.382684, + 0.793353, 0, -0.608761, + 0.608761, 0, -0.793353, + 0.382684, 0, -0.92388, + 0.130526, 0, -0.991445, + -0.130526, 0, -0.991445, + -0.382684, 0, -0.92388, + -0.608761, 0, -0.793353, + -0.793353, 0, -0.608761, + -0.92388, 0, -0.382684, + -0.991445, 0, -0.130526, + -0.991445, 0, 0.130526, + -0.92388, 0, 0.382684, + -0.793353, 0, 0.608761, + -0.608761, 0, 0.793353, + -0.382684, 0, 0.92388, + -0.130526, 0, 0.991445, + 0.130526, 0, 0.991445, + 0.382684, 0, 0.92388, + 0.608761, 0, 0.793353, + 0.793353, 0, 0.608761, + 0.92388, 0, 0.382684, + 0.991445, 0, 0.130526, + 0, -1, 0, + 0.991445, 0, -0.130526, + 0.92388, 0, -0.382684, + 0.793353, 0, -0.608761, + 0.608761, 0, -0.793353, + 0.382684, 0, -0.92388, + 0.130526, 0, -0.991445, + -0.130526, 0, -0.991445, + -0.382684, 0, -0.92388, + -0.608761, 0, -0.793353, + -0.793353, 0, -0.608761, + -0.92388, 0, -0.382684, + -0.991445, 0, -0.130526, + -0.991445, 0, 0.130526, + -0.92388, 0, 0.382684, + -0.793353, 0, 0.608761, + -0.608761, 0, 0.793353, + -0.382684, 0, 0.92388, + -0.130526, 0, 0.991445, + 0.130526, 0, 0.991445, + 0.382684, 0, 0.92388, + 0.608761, 0, 0.793353, + 0.793353, 0, 0.608761, + 0.92388, 0, 0.382684, + 0.991445, 0, 0.130526, + 0, 1, 0, +}; + +static const unsigned short int GuageConnector_POLS[] = +{ + 4, 1, 120, 121, 3, 1, 5, 3, 121, 122, 123, 5, 1, 4, 5, 123, 124, 6, 1, 4, +6, 124, 125, 9, 1, 5, 9, 125, 126, 127, 10, 1, 4, 10, 127, 128, 12, 1, 4, 14, + 12, 128, 129, 1, 5, 16, 14, 129, 130, 131, 1, 4, 19, 16, 131, 132, 1, 4, 20, 19, + 132, 133, 1, 5, 23, 20, 133, 134, 135, 1, 4, 25, 23, 135, 136, 1, 4, 25, 136, 137, + 27, 1, 5, 27, 137, 139, 138, 29, 1, 4, 29, 138, 140, 30, 1, 4, 30, 140, 141, 32, + 1, 5, 32, 141, 143, 142, 34, 1, 4, 34, 142, 144, 36, 1, 4, 38, 36, 144, 145, 1, + 5, 41, 38, 145, 147, 146, 1, 4, 43, 41, 146, 148, 1, 4, 44, 43, 148, 149, 1, 5, +47, 44, 149, 151, 150, 1, 4, 1, 47, 150, 120, 1, 4, 96, 97, 73, 72, 1, 4, 97, + 98, 74, 73, 1, 4, 98, 99, 75, 74, 1, 4, 99, 100, 76, 75, 1, 4, 100, 101, 77, +76, 1, 4, 101, 102, 78, 77, 1, 4, 102, 103, 79, 78, 1, 4, 103, 104, 80, 79, 1, + 4, 104, 105, 81, 80, 1, 4, 105, 106, 82, 81, 1, 4, 106, 107, 83, 82, 1, 4, 107, + 108, 84, 83, 1, 4, 108, 109, 85, 84, 1, 4, 109, 110, 86, 85, 1, 4, 110, 111, 87, +86, 1, 4, 111, 112, 88, 87, 1, 4, 112, 113, 89, 88, 1, 4, 113, 114, 90, 89, 1, + 4, 114, 115, 91, 90, 1, 4, 115, 116, 92, 91, 1, 4, 116, 117, 93, 92, 1, 4, 117, + 118, 94, 93, 1, 4, 118, 119, 95, 94, 1, 4, 119, 96, 72, 95, 1, 24, 1, 3, 5, +6, 9, 10, 12, 14, 16, 19, 20, 23, 25, 27, 29, 30, 32, 34, 36, 38, 41, 43, 44, + 47, 1, 4, 48, 49, 2, 0, 1, 4, 49, 50, 4, 2, 1, 4, 50, 51, 7, 4, 1, + 4, 51, 52, 8, 7, 1, 4, 52, 53, 11, 8, 1, 4, 53, 54, 13, 11, 1, 4, 54, + 55, 15, 13, 1, 4, 55, 56, 17, 15, 1, 4, 56, 57, 18, 17, 1, 4, 57, 58, 21, + 18, 1, 4, 58, 59, 22, 21, 1, 4, 59, 60, 24, 22, 1, 4, 60, 61, 26, 24, 1, + 4, 61, 62, 28, 26, 1, 4, 62, 63, 31, 28, 1, 4, 63, 64, 33, 31, 1, 4, 64, + 65, 35, 33, 1, 4, 65, 66, 37, 35, 1, 4, 66, 67, 39, 37, 1, 4, 67, 68, 40, + 39, 1, 4, 68, 69, 42, 40, 1, 4, 69, 70, 45, 42, 1, 4, 70, 71, 46, 45, 1, + 4, 71, 48, 0, 46, 1, 24, 48, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, + 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 1, + 0 +}; + +struct lwo LWO_GuageConnector = +{ + 152, /* number of points */ + GuageConnector_PNTS, GuageConnector_normals, GuageConnector_POLS, 0L +}; + +static const GLfloat GuageDial_PNTS[] = +{ + 0, 0.05, 0.3, + 0.019134, 0.046194, 0.3, + 0.035355, 0.035355, 0.3, + 0.046194, 0.019134, 0.3, + 0.05, 0, 0.3, + 0.046194, -0.019134, 0.3, + 0.035355, -0.0354, 0.275, + 0.035355, -0.0354, 0.3, + 0.019134, -0.0462, 0.3, + 0, -0.05, 0.3, + -0.019134, -0.0462, 0.3, + -0.035355, -0.0354, 0.275, + -0.035355, -0.0354, 0.3, + -0.046194, -0.019134, 0.3, + -0.05, 0, 0.3, + -0.046194, 0.019134, 0.3, + -0.035355, 0.035355, 0.3, + -0.019134, 0.046194, 0.3, + 0, 0.05, 0.2, + 0.019134, 0.046194, 0.2, + 0.035355, 0.035355, 0.2, + 0.046194, 0.019134, 0.2, + 0.05, 0, 0.2, + 0.046194, -0.019134, 0.2, + 0.035355, -0.035355, 0.2, + 0.019134, -0.046194, 0.2, + 0, -0.05, 0.2, + -0.019134, -0.046194, 0.2, + -0.035355, -0.035355, 0.2, + -0.046194, -0.019134, 0.2, + -0.05, 0, 0.2, + -0.046194, 0.019134, 0.2, + -0.035355, 0.035355, 0.2, + -0.019134, 0.046194, 0.2, + 0, -0.3733, 0.275, +}; + +static const GLfloat GuageDial_normals[] = +{ + 0, 0, 1, + 0, 0, 1, + 0.195089, 0.980786, 0, + 0.55557, 0.83147, 0, + 0.83147, 0.55557, 0, + 0.980785, 0.19509, 0, + 0.980785, -0.19509, 0, + 0.83147, -0.55557, -0.000248, + 0.55557, -0.83147, -0.000051, + 0.195089, -0.980786, 0, + -0.195089, -0.980786, -0.00006, + -0.55557, -0.83147, -0.000371, + -0.83147, -0.55557, 0, + -0.980785, -0.19509, 0, + -0.980785, 0.19509, 0, + -0.83147, 0.55557, 0, + -0.55557, 0.83147, 0, + -0.195089, 0.980786, 0, +}; + +static const unsigned short int GuageDial_POLS[] = +{ + 3, 11, 6, 34, 1, 16, 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, + 16, 17, 1, 4, 18, 19, 1, 0, 1, 4, 19, 20, 2, 1, 1, 4, 20, 21, 3, 2, + 1, 4, 21, 22, 4, 3, 1, 4, 22, 23, 5, 4, 1, 4, 23, 24, 7, 5, 1, 4, + 24, 25, 8, 7, 1, 4, 25, 26, 9, 8, 1, 4, 26, 27, 10, 9, 1, 4, 27, 28, + 12, 10, 1, 4, 28, 29, 13, 12, 1, 4, 29, 30, 14, 13, 1, 4, 30, 31, 15, 14, + 1, 4, 31, 32, 16, 15, 1, 4, 32, 33, 17, 16, 1, 4, 33, 18, 0, 17, 1, + 0 +}; + +struct lwo LWO_GuageDial = +{ + 35, /* number of points */ + GuageDial_PNTS, GuageDial_normals, GuageDial_POLS, 0L +}; + +static const GLfloat GuageFace_PNTS[] = +{ + 0, 1.7833, 0.2, + -0.087791, 1.774653, 0.2, + -0.172208, 1.749046, 0.2, + -0.250007, 1.707461, 0.2, + -0.318198, 1.651498, 0.2, + -0.374161, 1.583307, 0.2, + -0.415746, 1.505508, 0.2, + -0.441353, 1.421091, 0.2, + -0.45, 1.3333, 0.2, + -0.441353, 1.245509, 0.2, + -0.415746, 1.161092, 0.2, + -0.374161, 1.083293, 0.2, + -0.318198, 1.015102, 0.2, + -0.250007, 0.959139, 0.2, + -0.172208, 0.917554, 0.2, + -0.087791, 0.891947, 0.2, + 0, 0.8833, 0.2, + 0.087791, 0.891947, 0.2, + 0.172208, 0.917554, 0.2, + 0.250007, 0.959139, 0.2, + 0.318198, 1.015102, 0.2, + 0.374161, 1.083293, 0.2, + 0.415746, 1.161092, 0.2, + 0.441353, 1.245509, 0.2, + 0.45, 1.3333, 0.2, + 0.441353, 1.421091, 0.2, + 0.415746, 1.505508, 0.2, + 0.374161, 1.583307, 0.2, + 0.318198, 1.651498, 0.2, + 0.250007, 1.707461, 0.2, + 0.172208, 1.749046, 0.2, + 0.087791, 1.774653, 0.2, +}; + +static const GLfloat GuageFace_normals[] = +{ + 0, 0, 1, +}; + +static const unsigned short int GuageFace_POLS[] = +{ +32, 0, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, + 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, + 0 +}; + +struct lwo LWO_GuageFace = +{ + 32, /* number of points */ + GuageFace_PNTS, GuageFace_normals, GuageFace_POLS, 0L +}; + +static const GLfloat GuageHead_PNTS[] = +{ + 0, 1.8333, 0.33333, + 0.097545, 1.823693, 0.33333, + 0.191342, 1.79524, 0.33333, + 0.277785, 1.749035, 0.33333, + 0.353553, 1.686853, 0.33333, + 0.415735, 1.611085, 0.33333, + 0.46194, 1.524642, 0.33333, + 0.490393, 1.430845, 0.33333, + 0.5, 1.3333, 0.33333, + 0.490393, 1.235755, 0.33333, + 0.46194, 1.141958, 0.33333, + 0.415735, 1.055515, 0.33333, + 0.353553, 0.979747, 0.33333, + 0.277785, 0.917565, 0.33333, + 0.191342, 0.87136, 0.33333, + 0.097545, 0.842907, 0.33333, + 0, 0.8333, 0.33333, + -0.097545, 0.842907, 0.33333, + -0.191342, 0.87136, 0.33333, + -0.277785, 0.917565, 0.33333, + -0.353553, 0.979747, 0.33333, + -0.415735, 1.055515, 0.33333, + -0.46194, 1.141958, 0.33333, + -0.490393, 1.235755, 0.33333, + -0.5, 1.3333, 0.33333, + -0.490393, 1.430845, 0.33333, + -0.46194, 1.524642, 0.33333, + -0.415735, 1.611085, 0.33333, + -0.353553, 1.686853, 0.33333, + -0.277785, 1.749035, 0.33333, + -0.191342, 1.79524, 0.33333, + -0.097545, 1.823693, 0.33333, + 0, 1.8333, -0.33333, + 0.097545, 1.823693, -0.33333, + 0.191342, 1.79524, -0.33333, + 0.277785, 1.749035, -0.33333, + 0.353553, 1.686853, -0.33333, + 0.415735, 1.611085, -0.33333, + 0.46194, 1.524642, -0.33333, + 0.490393, 1.430845, -0.33333, + 0.5, 1.3333, -0.33333, + 0.490393, 1.235755, -0.33333, + 0.46194, 1.141958, -0.33333, + 0.415735, 1.055515, -0.33333, + 0.353553, 0.979747, -0.33333, + 0.277785, 0.917565, -0.33333, + 0.191342, 0.87136, -0.33333, + 0.097545, 0.842907, -0.33333, + 0, 0.8333, -0.33333, + -0.097545, 0.842907, -0.33333, + -0.191342, 0.87136, -0.33333, + -0.277785, 0.917565, -0.33333, + -0.353553, 0.979747, -0.33333, + -0.415735, 1.055515, -0.33333, + -0.46194, 1.141958, -0.33333, + -0.490393, 1.235755, -0.33333, + -0.5, 1.3333, -0.33333, + -0.490393, 1.430845, -0.33333, + -0.46194, 1.524642, -0.33333, + -0.415735, 1.611085, -0.33333, + -0.353553, 1.686853, -0.33333, + -0.277785, 1.749035, -0.33333, + -0.191342, 1.79524, -0.33333, + -0.097545, 1.823693, -0.33333, + 0.087791, 1.774653, 0.33333, + 0, 1.7833, 0.33333, + 0.172208, 1.749046, 0.33333, + 0.250007, 1.707461, 0.33333, + 0.318198, 1.651498, 0.33333, + 0.374161, 1.583307, 0.33333, + 0.415746, 1.505508, 0.33333, + 0.441353, 1.421091, 0.33333, + 0.45, 1.3333, 0.33333, + 0.441353, 1.245509, 0.33333, + 0.415746, 1.161092, 0.33333, + 0.374161, 1.083293, 0.33333, + 0.318198, 1.015102, 0.33333, + 0.250007, 0.959139, 0.33333, + 0.172208, 0.917554, 0.33333, + 0.087791, 0.891947, 0.33333, + 0, 0.8833, 0.33333, + -0.087791, 0.891947, 0.33333, + -0.172208, 0.917554, 0.33333, + -0.250007, 0.959139, 0.33333, + -0.318198, 1.015102, 0.33333, + -0.374161, 1.083293, 0.33333, + -0.415746, 1.161092, 0.33333, + -0.441353, 1.245509, 0.33333, + -0.45, 1.3333, 0.33333, + -0.441353, 1.421091, 0.33333, + -0.415746, 1.505508, 0.33333, + -0.374161, 1.583307, 0.33333, + -0.318198, 1.651498, 0.33333, + -0.250007, 1.707461, 0.33333, + -0.172208, 1.749046, 0.33333, + -0.087791, 1.774653, 0.33333, + 0, 1.7833, 0.2, + -0.087791, 1.774653, 0.2, + -0.172208, 1.749046, 0.2, + -0.250007, 1.707461, 0.2, + -0.318198, 1.651498, 0.2, + -0.374161, 1.583307, 0.2, + -0.415746, 1.505508, 0.2, + -0.441353, 1.421091, 0.2, + -0.45, 1.3333, 0.2, + -0.441353, 1.245509, 0.2, + -0.415746, 1.161092, 0.2, + -0.374161, 1.083293, 0.2, + -0.318198, 1.015102, 0.2, + -0.250007, 0.959139, 0.2, + -0.172208, 0.917554, 0.2, + -0.087791, 0.891947, 0.2, + 0, 0.8833, 0.2, + 0.087791, 0.891947, 0.2, + 0.172208, 0.917554, 0.2, + 0.250007, 0.959139, 0.2, + 0.318198, 1.015102, 0.2, + 0.374161, 1.083293, 0.2, + 0.415746, 1.161092, 0.2, + 0.441353, 1.245509, 0.2, + 0.45, 1.3333, 0.2, + 0.441353, 1.421091, 0.2, + 0.415746, 1.505508, 0.2, + 0.374161, 1.583307, 0.2, + 0.318198, 1.651498, 0.2, + 0.250007, 1.707461, 0.2, + 0.172208, 1.749046, 0.2, + 0.087791, 1.774653, 0.2, +}; + +static const GLfloat GuageHead_normals[] = +{ + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0.098017, -0.995185, 0, + 0.290285, -0.95694, 0, + 0.471397, -0.881921, 0, + 0.634393, -0.77301, 0, + 0.773011, -0.634393, 0, + 0.881921, -0.471397, 0, + 0.95694, -0.290284, 0, + 0.995185, -0.098017, 0, + 0.995185, 0.098017, 0, + 0.95694, 0.290284, 0, + 0.881921, 0.471397, 0, + 0.773011, 0.634393, 0, + 0.634393, 0.773011, 0, + 0.471397, 0.881921, 0, + 0.290285, 0.95694, 0, + 0.098017, 0.995185, 0, + -0.098017, 0.995185, 0, + -0.290285, 0.95694, 0, + -0.471397, 0.881921, 0, + -0.634393, 0.773011, 0, + -0.773011, 0.634393, 0, + -0.881921, 0.471397, 0, + -0.95694, 0.290284, 0, + -0.995185, 0.098017, 0, + -0.995185, -0.098017, 0, + -0.95694, -0.290284, 0, + -0.881921, -0.471397, 0, + -0.773011, -0.634393, 0, + -0.634393, -0.77301, 0, + -0.471397, -0.881921, 0, + -0.290285, -0.95694, 0, + -0.098017, -0.995185, 0, + 0.098017, 0.995185, 0, + 0.290285, 0.95694, 0, + 0.471397, 0.881921, 0, + 0.634393, 0.773011, 0, + 0.773011, 0.634393, 0, + 0.881921, 0.471397, 0, + 0.95694, 0.290284, 0, + 0.995185, 0.098017, 0, + 0.995185, -0.098017, 0, + 0.95694, -0.290284, 0, + 0.881921, -0.471397, 0, + 0.773011, -0.634393, 0, + 0.634393, -0.77301, 0, + 0.471396, -0.881921, 0, + 0.290285, -0.95694, 0, + 0.098017, -0.995185, 0, + -0.098017, -0.995185, 0, + -0.290285, -0.95694, 0, + -0.471396, -0.881921, 0, + -0.634393, -0.77301, 0, + -0.773011, -0.634393, 0, + -0.881921, -0.471397, 0, + -0.95694, -0.290284, 0, + -0.995185, -0.098017, 0, + -0.995185, 0.098017, 0, + -0.95694, 0.290284, 0, + -0.881921, 0.471397, 0, + -0.773011, 0.634393, 0, + -0.634393, 0.773011, 0, + -0.471397, 0.881921, 0, + -0.290285, 0.95694, 0, + -0.098017, 0.995185, 0, + 0, 0, -1, +}; + +static const unsigned short int GuageHead_POLS[] = +{ + 3, 67, 3, 4, 1, 3, 68, 67, 4, 1, 3, 68, 4, 5, 1, 3, 69, 68, 5, 1, + 3, 70, 69, 5, 1, 3, 70, 5, 6, 1, 3, 70, 6, 7, 1, 3, 71, 70, 7, 1, + 3, 71, 7, 8, 1, 3, 72, 71, 8, 1, 3, 73, 72, 8, 1, 3, 73, 8, 9, 1, + 3, 74, 73, 9, 1, 3, 74, 9, 10, 1, 3, 74, 10, 11, 1, 3, 75, 74, 11, 1, + 3, 76, 75, 11, 1, 3, 76, 11, 12, 1, 3, 76, 12, 13, 1, 3, 77, 76, 13, 1, + 3, 78, 77, 13, 1, 3, 78, 13, 14, 1, 3, 78, 14, 15, 1, 3, 79, 78, 15, 1, + 3, 79, 15, 16, 1, 3, 80, 79, 16, 1, 3, 81, 80, 16, 1, 3, 81, 16, 17, 1, + 3, 82, 81, 17, 1, 3, 82, 17, 18, 1, 3, 82, 18, 19, 1, 3, 83, 82, 19, 1, + 3, 84, 83, 19, 1, 3, 84, 19, 20, 1, 3, 84, 20, 21, 1, 3, 85, 84, 21, 1, + 3, 86, 85, 21, 1, 3, 86, 21, 22, 1, 3, 86, 22, 23, 1, 3, 87, 86, 23, 1, + 3, 87, 23, 24, 1, 3, 88, 87, 24, 1, 3, 89, 88, 24, 1, 3, 89, 24, 25, 1, + 3, 90, 89, 25, 1, 3, 90, 25, 26, 1, 3, 90, 26, 27, 1, 3, 91, 90, 27, 1, + 3, 92, 91, 27, 1, 3, 92, 27, 28, 1, 3, 93, 92, 28, 1, 3, 93, 28, 29, 1, + 3, 2, 3, 67, 1, 3, 2, 67, 66, 1, 3, 1, 2, 66, 1, 3, 1, 66, 64, 1, + 3, 1, 64, 65, 1, 3, 0, 1, 65, 1, 3, 31, 0, 65, 1, 3, 31, 65, 95, 1, + 3, 31, 95, 94, 1, 3, 30, 31, 94, 1, 3, 30, 94, 93, 1, 3, 93, 29, 30, 1, + 4, 96, 97, 95, 65, 1, 4, 97, 98, 94, 95, 1, 4, 98, 99, 93, 94, 1, 4, 99, + 100, 92, 93, 1, 4, 100, 101, 91, 92, 1, 4, 101, 102, 90, 91, 1, 4, 102, 103, 89, +90, 1, 4, 103, 104, 88, 89, 1, 4, 104, 105, 87, 88, 1, 4, 105, 106, 86, 87, 1, + 4, 106, 107, 85, 86, 1, 4, 107, 108, 84, 85, 1, 4, 108, 109, 83, 84, 1, 4, 109, + 110, 82, 83, 1, 4, 110, 111, 81, 82, 1, 4, 111, 112, 80, 81, 1, 4, 112, 113, 79, +80, 1, 4, 113, 114, 78, 79, 1, 4, 114, 115, 77, 78, 1, 4, 115, 116, 76, 77, 1, + 4, 116, 117, 75, 76, 1, 4, 117, 118, 74, 75, 1, 4, 118, 119, 73, 74, 1, 4, 119, + 120, 72, 73, 1, 4, 120, 121, 71, 72, 1, 4, 121, 122, 70, 71, 1, 4, 122, 123, 69, +70, 1, 4, 123, 124, 68, 69, 1, 4, 124, 125, 67, 68, 1, 4, 125, 126, 66, 67, 1, + 4, 126, 127, 64, 66, 1, 4, 127, 96, 65, 64, 1, 4, 32, 33, 1, 0, 1, 4, 33, + 34, 2, 1, 1, 4, 34, 35, 3, 2, 1, 4, 35, 36, 4, 3, 1, 4, 36, 37, 5, + 4, 1, 4, 37, 38, 6, 5, 1, 4, 38, 39, 7, 6, 1, 4, 39, 40, 8, 7, 1, + 4, 40, 41, 9, 8, 1, 4, 41, 42, 10, 9, 1, 4, 42, 43, 11, 10, 1, 4, 43, + 44, 12, 11, 1, 4, 44, 45, 13, 12, 1, 4, 45, 46, 14, 13, 1, 4, 46, 47, 15, + 14, 1, 4, 47, 48, 16, 15, 1, 4, 48, 49, 17, 16, 1, 4, 49, 50, 18, 17, 1, + 4, 50, 51, 19, 18, 1, 4, 51, 52, 20, 19, 1, 4, 52, 53, 21, 20, 1, 4, 53, + 54, 22, 21, 1, 4, 54, 55, 23, 22, 1, 4, 55, 56, 24, 23, 1, 4, 56, 57, 25, + 24, 1, 4, 57, 58, 26, 25, 1, 4, 58, 59, 27, 26, 1, 4, 59, 60, 28, 27, 1, + 4, 60, 61, 29, 28, 1, 4, 61, 62, 30, 29, 1, 4, 62, 63, 31, 30, 1, 4, 63, +32, 0, 31, 1, 32, 32, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, + 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 1, + 0 +}; + +struct lwo LWO_GuageHead = +{ + 128, /* number of points */ + GuageHead_PNTS, GuageHead_normals, GuageHead_POLS, 0L +}; + +static const GLfloat PipeBetweenBolts_PNTS[] = +{ + 0, 0.5, 0.5, + 0.12941, 0.482963, 0.5, + 0.25, 0.433013, 0.5, + 0.353553, 0.353553, 0.5, + 0.433013, 0.25, 0.5, + 0.482963, 0.12941, 0.5, + 0.5, 0, 0.5, + 0.482963, -0.12941, 0.5, + 0.433013, -0.25, 0.5, + 0.353553, -0.353553, 0.5, + 0.25, -0.433013, 0.5, + 0.12941, -0.482963, 0.5, + 0, -0.5, 0.5, + -0.12941, -0.482963, 0.5, + -0.25, -0.433013, 0.5, + -0.353553, -0.353553, 0.5, + -0.433013, -0.25, 0.5, + -0.482963, -0.12941, 0.5, + -0.5, 0, 0.5, + -0.482963, 0.12941, 0.5, + -0.433013, 0.25, 0.5, + -0.353553, 0.353553, 0.5, + -0.25, 0.433013, 0.5, + -0.12941, 0.482963, 0.5, + 0, 0.5, -0.5, + 0.12941, 0.482963, -0.5, + 0.25, 0.433013, -0.5, + 0.353553, 0.353553, -0.5, + 0.433013, 0.25, -0.5, + 0.482963, 0.12941, -0.5, + 0.5, 0, -0.5, + 0.482963, -0.12941, -0.5, + 0.433013, -0.25, -0.5, + 0.353553, -0.353553, -0.5, + 0.25, -0.433013, -0.5, + 0.12941, -0.482963, -0.5, + 0, -0.5, -0.5, + -0.12941, -0.482963, -0.5, + -0.25, -0.433013, -0.5, + -0.353553, -0.353553, -0.5, + -0.433013, -0.25, -0.5, + -0.482963, -0.12941, -0.5, + -0.5, 0, -0.5, + -0.482963, 0.12941, -0.5, + -0.433013, 0.25, -0.5, + -0.353553, 0.353553, -0.5, + -0.25, 0.433013, -0.5, + -0.12941, 0.482963, -0.5, +}; + +static const GLfloat PipeBetweenBolts_normals[] = +{ + 0, 0, 1, + 0.130526, 0.991445, 0, + 0.382683, 0.92388, 0, + 0.608761, 0.793353, 0, + 0.793353, 0.608761, 0, + 0.92388, 0.382683, 0, + 0.991445, 0.130526, 0, + 0.991445, -0.130526, 0, + 0.92388, -0.382683, 0, + 0.793353, -0.608761, 0, + 0.608761, -0.793353, 0, + 0.382683, -0.92388, 0, + 0.130526, -0.991445, 0, + -0.130526, -0.991445, 0, + -0.382683, -0.92388, 0, + -0.608761, -0.793353, 0, + -0.793353, -0.608761, 0, + -0.92388, -0.382683, 0, + -0.991445, -0.130526, 0, + -0.991445, 0.130526, 0, + -0.92388, 0.382683, 0, + -0.793353, 0.608761, 0, + -0.608761, 0.793353, 0, + -0.382683, 0.92388, 0, + -0.130526, 0.991445, 0, + 0, 0, -1, +}; + +static const unsigned short int PipeBetweenBolts_POLS[] = +{ + 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 1, 4, 24, 25, 1, 0, 1, 4, 25, 26, 2, 1, 1, 4, 26, + 27, 3, 2, 1, 4, 27, 28, 4, 3, 1, 4, 28, 29, 5, 4, 1, 4, 29, 30, 6, + 5, 1, 4, 30, 31, 7, 6, 1, 4, 31, 32, 8, 7, 1, 4, 32, 33, 9, 8, 1, + 4, 33, 34, 10, 9, 1, 4, 34, 35, 11, 10, 1, 4, 35, 36, 12, 11, 1, 4, 36, + 37, 13, 12, 1, 4, 37, 38, 14, 13, 1, 4, 38, 39, 15, 14, 1, 4, 39, 40, 16, + 15, 1, 4, 40, 41, 17, 16, 1, 4, 41, 42, 18, 17, 1, 4, 42, 43, 19, 18, 1, + 4, 43, 44, 20, 19, 1, 4, 44, 45, 21, 20, 1, 4, 45, 46, 22, 21, 1, 4, 46, + 47, 23, 22, 1, 4, 47, 24, 0, 23, 1, 24, 24, 47, 46, 45, 44, 43, 42, 41, 40, + 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 1, + 0 +}; + +struct lwo LWO_PipeBetweenBolts = +{ + 48, /* number of points */ + PipeBetweenBolts_PNTS, PipeBetweenBolts_normals, PipeBetweenBolts_POLS, 0L +}; + +static const GLfloat ElbowBolts_PNTS[] = +{ + 0.273122, -0.6, -0.403061, + 0.273122, 0.403061, -0.6, + 0.273122, 0.333061, -0.6, + 0.273122, -0.6, -0.333061, + 0.2125, 0.298061, -0.6, + 0.2125, -0.6, -0.298061, + 0.151878, 0.333061, -0.6, + 0.151878, -0.6, -0.333061, + 0.151878, 0.403061, -0.6, + 0.151878, -0.6, -0.403061, + 0.2125, -0.6, -0.438061, + 0.2125, 0.438061, -0.6, + 0.273122, -0.66, -0.403061, + 0.273122, 0.403061, -0.66, + 0.273122, -0.66, -0.333061, + 0.273122, 0.333061, -0.66, + 0.2125, 0.298061, -0.66, + 0.2125, -0.66, -0.298061, + 0.151878, -0.66, -0.333061, + 0.151878, 0.333061, -0.66, + 0.151878, 0.403061, -0.66, + 0.151878, -0.66, -0.403061, + 0.2125, -0.66, -0.438061, + 0.2125, 0.438061, -0.66, + 0.273122, 0.403061, -0.46, + 0.273122, -0.46, -0.403061, + 0.273122, 0.333061, -0.46, + 0.273122, -0.46, -0.333061, + 0.2125, 0.298061, -0.46, + 0.2125, -0.46, -0.298061, + 0.151878, 0.333061, -0.46, + 0.151878, -0.46, -0.333061, + 0.151878, 0.403061, -0.46, + 0.151878, -0.46, -0.403061, + 0.2125, -0.46, -0.438061, + 0.2125, 0.438061, -0.46, + 0.273122, 0.403061, -0.52, + 0.273122, -0.52, -0.403061, + 0.273122, -0.52, -0.333061, + 0.273122, 0.333061, -0.52, + 0.2125, 0.298061, -0.52, + 0.2125, -0.52, -0.298061, + 0.151878, 0.333061, -0.52, + 0.151878, -0.52, -0.333061, + 0.151878, 0.403061, -0.52, + 0.151878, -0.52, -0.403061, + 0.2125, -0.52, -0.438061, + 0.2125, 0.438061, -0.52, + 0.485622, -0.035, -0.46, + 0.485622, -0.46, 0.035, + 0.425, -0.07, -0.46, + 0.425, -0.46, 0.07, + 0.364378, -0.46, 0.035, + 0.364378, -0.035, -0.46, + 0.364378, 0.035, -0.46, + 0.364378, -0.46, -0.035, + 0.425, 0.07, -0.46, + 0.425, -0.46, -0.07, + 0.485622, 0.035, -0.46, + 0.485622, -0.46, -0.035, + 0.485622, -0.52, 0.035, + 0.485622, -0.035, -0.52, + 0.425, -0.07, -0.52, + 0.425, -0.52, 0.07, + 0.364378, -0.035, -0.52, + 0.364378, -0.52, 0.035, + 0.364378, -0.52, -0.035, + 0.364378, 0.035, -0.52, + 0.425, 0.07, -0.52, + 0.425, -0.52, -0.07, + 0.485622, 0.035, -0.52, + 0.485622, -0.52, -0.035, + 0.485622, -0.035, -0.6, + 0.485622, -0.6, 0.035, + 0.425, -0.6, 0.07, + 0.425, -0.07, -0.6, + 0.364378, -0.6, 0.035, + 0.364378, -0.035, -0.6, + 0.364378, 0.035, -0.6, + 0.364378, -0.6, -0.035, + 0.425, 0.07, -0.6, + 0.425, -0.6, -0.07, + 0.485622, -0.6, -0.035, + 0.485622, 0.035, -0.6, + 0.485622, -0.66, 0.035, + 0.485622, -0.035, -0.66, + 0.425, -0.66, 0.07, + 0.425, -0.07, -0.66, + 0.364378, -0.035, -0.66, + 0.364378, -0.66, 0.035, + 0.364378, -0.66, -0.035, + 0.364378, 0.035, -0.66, + 0.425, 0.07, -0.66, + 0.425, -0.66, -0.07, + 0.485622, -0.66, -0.035, + 0.485622, 0.035, -0.66, + 0.2125, -0.438061, -0.46, + 0.2125, -0.46, 0.438061, + 0.151878, -0.403061, -0.46, + 0.151878, -0.46, 0.403061, + 0.151878, -0.46, 0.333061, + 0.151878, -0.333061, -0.46, + 0.2125, -0.46, 0.298061, + 0.2125, -0.298061, -0.46, + 0.273122, -0.46, 0.333061, + 0.273122, -0.333061, -0.46, + 0.273122, -0.403061, -0.46, + 0.273122, -0.46, 0.403061, + 0.2125, -0.52, 0.438061, + 0.2125, -0.438061, -0.52, + 0.151878, -0.403061, -0.52, + 0.151878, -0.52, 0.403061, + 0.151878, -0.333061, -0.52, + 0.151878, -0.52, 0.333061, + 0.2125, -0.298061, -0.52, + 0.2125, -0.52, 0.298061, + 0.273122, -0.333061, -0.52, + 0.273122, -0.52, 0.333061, + 0.273122, -0.403061, -0.52, + 0.273122, -0.52, 0.403061, + 0.2125, -0.438061, -0.6, + 0.2125, -0.6, 0.438061, + 0.151878, -0.403061, -0.6, + 0.151878, -0.6, 0.403061, + 0.151878, -0.6, 0.333061, + 0.151878, -0.333061, -0.6, + 0.2125, -0.298061, -0.6, + 0.2125, -0.6, 0.298061, + 0.273122, -0.333061, -0.6, + 0.273122, -0.6, 0.333061, + 0.273122, -0.6, 0.403061, + 0.273122, -0.403061, -0.6, + 0.2125, -0.66, 0.438061, + 0.2125, -0.438061, -0.66, + 0.151878, -0.403061, -0.66, + 0.151878, -0.66, 0.403061, + 0.151878, -0.333061, -0.66, + 0.151878, -0.66, 0.333061, + 0.2125, -0.66, 0.298061, + 0.2125, -0.298061, -0.66, + 0.273122, -0.66, 0.333061, + 0.273122, -0.333061, -0.66, + 0.273122, -0.66, 0.403061, + 0.273122, -0.403061, -0.66, + -0.273122, -0.46, 0.403061, + -0.273122, -0.403061, -0.46, + -0.273122, -0.46, 0.333061, + -0.273122, -0.333061, -0.46, + -0.2125, -0.298061, -0.46, + -0.2125, -0.46, 0.298061, + -0.151878, -0.333061, -0.46, + -0.151878, -0.46, 0.333061, + -0.151878, -0.403061, -0.46, + -0.151878, -0.46, 0.403061, + -0.2125, -0.46, 0.438061, + -0.2125, -0.438061, -0.46, + -0.273122, -0.52, 0.403061, + -0.273122, -0.403061, -0.52, + -0.273122, -0.333061, -0.52, + -0.273122, -0.52, 0.333061, + -0.2125, -0.52, 0.298061, + -0.2125, -0.298061, -0.52, + -0.151878, -0.333061, -0.52, + -0.151878, -0.52, 0.333061, + -0.151878, -0.52, 0.403061, + -0.151878, -0.403061, -0.52, + -0.2125, -0.52, 0.438061, + -0.2125, -0.438061, -0.52, + -0.273122, -0.6, 0.403061, + -0.273122, -0.403061, -0.6, + -0.273122, -0.6, 0.333061, + -0.273122, -0.333061, -0.6, + -0.2125, -0.6, 0.298061, + -0.2125, -0.298061, -0.6, + -0.151878, -0.333061, -0.6, + -0.151878, -0.6, 0.333061, + -0.151878, -0.6, 0.403061, + -0.151878, -0.403061, -0.6, + -0.2125, -0.438061, -0.6, + -0.2125, -0.6, 0.438061, + -0.273122, -0.66, 0.403061, + -0.273122, -0.403061, -0.66, + -0.273122, -0.333061, -0.66, + -0.273122, -0.66, 0.333061, + -0.2125, -0.298061, -0.66, + -0.2125, -0.66, 0.298061, + -0.151878, -0.66, 0.333061, + -0.151878, -0.333061, -0.66, + -0.151878, -0.66, 0.403061, + -0.151878, -0.403061, -0.66, + -0.2125, -0.438061, -0.66, + -0.2125, -0.66, 0.438061, + -0.485622, -0.46, -0.035, + -0.485622, 0.035, -0.46, + -0.425, 0.07, -0.46, + -0.425, -0.46, -0.07, + -0.364378, 0.035, -0.46, + -0.364378, -0.46, -0.035, + -0.364378, -0.46, 0.035, + -0.364378, -0.035, -0.46, + -0.425, -0.46, 0.07, + -0.425, -0.07, -0.46, + -0.485622, -0.035, -0.46, + -0.485622, -0.46, 0.035, + -0.485622, -0.52, -0.035, + -0.485622, 0.035, -0.52, + -0.425, 0.07, -0.52, + -0.425, -0.52, -0.07, + -0.364378, 0.035, -0.52, + -0.364378, -0.52, -0.035, + -0.364378, -0.035, -0.52, + -0.364378, -0.52, 0.035, + -0.425, -0.52, 0.07, + -0.425, -0.07, -0.52, + -0.485622, -0.035, -0.52, + -0.485622, -0.52, 0.035, + -0.485622, 0.035, -0.6, + -0.485622, -0.6, -0.035, + -0.425, -0.6, -0.07, + -0.425, 0.07, -0.6, + -0.364378, -0.6, -0.035, + -0.364378, 0.035, -0.6, + -0.364378, -0.6, 0.035, + -0.364378, -0.035, -0.6, + -0.425, -0.6, 0.07, + -0.425, -0.07, -0.6, + -0.485622, -0.6, 0.035, + -0.485622, -0.035, -0.6, + -0.485622, -0.66, -0.035, + -0.485622, 0.035, -0.66, + -0.425, -0.66, -0.07, + -0.425, 0.07, -0.66, + -0.364378, 0.035, -0.66, + -0.364378, -0.66, -0.035, + -0.364378, -0.66, 0.035, + -0.364378, -0.035, -0.66, + -0.425, -0.07, -0.66, + -0.425, -0.66, 0.07, + -0.485622, -0.66, 0.035, + -0.485622, -0.035, -0.66, + -0.2125, -0.46, -0.438061, + -0.2125, 0.438061, -0.46, + -0.151878, 0.403061, -0.46, + -0.151878, -0.46, -0.403061, + -0.151878, -0.46, -0.333061, + -0.151878, 0.333061, -0.46, + -0.2125, 0.298061, -0.46, + -0.2125, -0.46, -0.298061, + -0.273122, 0.333061, -0.46, + -0.273122, -0.46, -0.333061, + -0.273122, -0.46, -0.403061, + -0.273122, 0.403061, -0.46, + -0.2125, -0.52, -0.438061, + -0.2125, 0.438061, -0.52, + -0.151878, 0.403061, -0.52, + -0.151878, -0.52, -0.403061, + -0.151878, -0.52, -0.333061, + -0.151878, 0.333061, -0.52, + -0.2125, 0.298061, -0.52, + -0.2125, -0.52, -0.298061, + -0.273122, 0.333061, -0.52, + -0.273122, -0.52, -0.333061, + -0.273122, 0.403061, -0.52, + -0.273122, -0.52, -0.403061, + -0.2125, 0.438061, -0.6, + -0.2125, -0.6, -0.438061, + -0.151878, -0.6, -0.403061, + -0.151878, 0.403061, -0.6, + -0.151878, 0.333061, -0.6, + -0.151878, -0.6, -0.333061, + -0.2125, -0.6, -0.298061, + -0.2125, 0.298061, -0.6, + -0.273122, -0.6, -0.333061, + -0.273122, 0.333061, -0.6, + -0.273122, -0.6, -0.403061, + -0.273122, 0.403061, -0.6, + -0.2125, -0.66, -0.438061, + -0.2125, 0.438061, -0.66, + -0.151878, -0.66, -0.403061, + -0.151878, 0.403061, -0.66, + -0.151878, -0.66, -0.333061, + -0.151878, 0.333061, -0.66, + -0.2125, -0.66, -0.298061, + -0.2125, 0.298061, -0.66, + -0.273122, -0.66, -0.333061, + -0.273122, 0.333061, -0.66, + -0.273122, 0.403061, -0.66, + -0.273122, -0.66, -0.403061, +}; + +static const GLfloat ElbowBolts_normals[] = +{ + 0, 0, 1, + 0.5, 0.866026, 0, + 1, 0, 0, + 0.5, -0.866025, 0, + -0.5, -0.866025, 0, + -1, 0, 0, + -0.5, 0.866025, 0, + 0, 0, -1, + 0, 0, 1, + 0.499999, 0.866026, 0, + 1, 0, 0, + 0.5, -0.866025, 0, + -0.5, -0.866025, 0, + -1, 0, 0, + -0.5, 0.866025, 0, + 0, 0, -1, + 0, 0, 1, + -0.5, 0.866025, 0, + 0.5, 0.866025, 0, + 1, 0, 0, + 0.5, -0.866025, 0, + -0.5, -0.866025, 0, + -1, 0, 0, + 0, 0, -1, + 0, 0, 1, + -0.5, 0.866025, 0, + 0.5, 0.866025, 0, + 1, 0, 0, + 0.5, -0.866025, 0, + -0.5, -0.866025, 0, + -1, 0, 0, + 0, 0, -1, + 0, 0, 1, + -1, 0, 0, + -0.5, 0.866026, 0, + 0.5, 0.866025, 0, + 1, 0, 0, + 0.5, -0.866026, 0, + -0.5, -0.866025, 0, + 0, 0, -1, + 0, 0, 1, + -1, 0, 0, + -0.5, 0.866026, 0, + 0.5, 0.866025, 0, + 1, 0, 0, + 0.5, -0.866025, 0, + -0.5, -0.866025, 0, + 0, 0, -1, + 0, 0, 1, + -0.5, -0.866026, 0, + -1, 0, 0, + -0.5, 0.866025, 0, + 0.5, 0.866025, 0, + 1, 0, 0, + 0.5, -0.866025, 0, + 0, 0, -1, + 0, 0, 1, + -0.499999, -0.866026, 0, + -1, 0, 0, + -0.5, 0.866025, 0, + 0.5, 0.866025, 0, + 1, 0, 0, + 0.5, -0.866025, 0, + 0, 0, -1, + 0, 0, 1, + 0.5, -0.866025, 0, + -0.5, -0.866025, 0, + -1, 0, 0, + -0.5, 0.866025, 0, + 0.5, 0.866025, 0, + 1, 0, 0, + 0, 0, -1, + 0, 0, 1, + 0.5, -0.866025, 0, + -0.5, -0.866025, 0, + -1, 0, 0, + -0.5, 0.866025, 0, + 0.5, 0.866025, 0, + 1, 0, 0, + 0, 0, -1, + 0, 0, 1, + 1, 0, 0, + 0.5, -0.866026, 0, + -0.5, -0.866025, 0, + -1, 0, 0, + -0.5, 0.866026, 0, + 0.5, 0.866025, 0, + 0, 0, -1, + 0, 0, 1, + 1, 0, 0, + 0.5, -0.866026, 0, + -0.5, -0.866025, 0, + -1, 0, 0, + -0.5, 0.866025, 0, + 0.5, 0.866025, 0, + 0, 0, -1, + 0, 1, 0, + 0.5, 0, -0.866026, + 1, 0, 0, + 0.5, 0, 0.866025, + -0.5, 0, 0.866025, + -1, 0, 0, + -0.5, 0, -0.866025, + 0, -1, 0, + 0, 1, 0, + 0.499999, 0, -0.866026, + 1, 0, 0, + 0.5, 0, 0.866025, + -0.5, 0, 0.866025, + -1, 0, 0, + -0.5, 0, -0.866025, + 0, -1, 0, + 0, 1, 0, + -0.5, 0, -0.866025, + 0.5, 0, -0.866025, + 1, 0, 0, + 0.5, 0, 0.866025, + -0.5, 0, 0.866025, + -1, 0, 0, + 0, -1, 0, + 0, 1, 0, + -0.5, 0, -0.866025, + 0.5, 0, -0.866025, + 1, 0, 0, + 0.5, 0, 0.866025, + -0.5, 0, 0.866025, + -1, 0, 0, + 0, -1, 0, + 0, 1, 0, + -1, 0, 0, + -0.5, 0, -0.866026, + 0.5, 0, -0.866025, + 1, 0, 0, + 0.5, 0, 0.866026, + -0.5, 0, 0.866025, + 0, -1, 0, + 0, 1, 0, + -1, 0, 0, + -0.5, 0, -0.866026, + 0.5, 0, -0.866025, + 1, 0, 0, + 0.5, 0, 0.866025, + -0.5, 0, 0.866025, + 0, -1, 0, + 0, 1, 0, + -0.5, 0, 0.866026, + -1, 0, 0, + -0.5, 0, -0.866025, + 0.5, 0, -0.866025, + 1, 0, 0, + 0.5, 0, 0.866025, + 0, -1, 0, + 0, 1, 0, + -0.499999, 0, 0.866026, + -1, 0, 0, + -0.5, 0, -0.866025, + 0.5, 0, -0.866025, + 1, 0, 0, + 0.5, 0, 0.866025, + 0, -1, 0, + 0, 1, 0, + 0.5, 0, 0.866025, + -0.5, 0, 0.866025, + -1, 0, 0, + -0.5, 0, -0.866025, + 0.5, 0, -0.866025, + 1, 0, 0, + 0, -1, 0, + 0, 1, 0, + 0.5, 0, 0.866025, + -0.5, 0, 0.866025, + -1, 0, 0, + -0.5, 0, -0.866025, + 0.5, 0, -0.866025, + 1, 0, 0, + 0, -1, 0, + 0, 1, 0, + 1, 0, 0, + 0.5, 0, 0.866026, + -0.5, 0, 0.866025, + -1, 0, 0, + -0.5, 0, -0.866026, + 0.5, 0, -0.866025, + 0, -1, 0, + 0, 1, 0, + 1, 0, 0, + 0.5, 0, 0.866026, + -0.5, 0, 0.866025, + -1, 0, 0, + -0.5, 0, -0.866025, + 0.5, 0, -0.866025, + 0, -1, 0, +}; + +static const unsigned short int ElbowBolts_POLS[] = +{ + 6, 241, 242, 245, 246, 248, 251, 1, 4, 253, 254, 242, 241, 1, 4, 254, 257, 245, 242, 1, + 4, 257, 258, 246, 245, 1, 4, 258, 260, 248, 246, 1, 4, 260, 262, 251, 248, 1, 4, 262, + 253, 241, 251, 1, 6, 253, 262, 260, 258, 257, 254, 1, 6, 264, 267, 268, 271, 273, 275, 1, + 4, 277, 279, 267, 264, 1, 4, 279, 281, 268, 267, 1, 4, 281, 283, 271, 268, 1, 4, 283, + 285, 273, 271, 1, 4, 285, 286, 275, 273, 1, 4, 286, 277, 264, 275, 1, 6, 277, 286, 285, + 283, 281, 279, 1, 6, 193, 194, 196, 199, 201, 202, 1, 4, 205, 206, 194, 193, 1, 4, 206, + 208, 196, 194, 1, 4, 208, 210, 199, 196, 1, 4, 210, 213, 201, 199, 1, 4, 213, 214, 202, + 201, 1, 4, 214, 205, 193, 202, 1, 6, 205, 214, 213, 210, 208, 206, 1, 6, 216, 219, 221, + 223, 225, 227, 1, 4, 229, 231, 219, 216, 1, 4, 231, 232, 221, 219, 1, 4, 232, 235, 223, + 221, 1, 4, 235, 236, 225, 223, 1, 4, 236, 239, 227, 225, 1, 4, 239, 229, 216, 227, 1, + 6, 229, 239, 236, 235, 232, 231, 1, 6, 145, 147, 148, 150, 152, 155, 1, 4, 157, 158, 147, + 145, 1, 4, 158, 161, 148, 147, 1, 4, 161, 162, 150, 148, 1, 4, 162, 165, 152, 150, 1, + 4, 165, 167, 155, 152, 1, 4, 167, 157, 145, 155, 1, 6, 157, 167, 165, 162, 161, 158, 1, + 6, 169, 171, 173, 174, 177, 178, 1, 4, 181, 182, 171, 169, 1, 4, 182, 184, 173, 171, 1, + 4, 184, 187, 174, 173, 1, 4, 187, 189, 177, 174, 1, 4, 189, 190, 178, 177, 1, 4, 190, + 181, 169, 178, 1, 6, 181, 190, 189, 187, 184, 182, 1, 6, 96, 98, 101, 103, 105, 106, 1, + 4, 109, 110, 98, 96, 1, 4, 110, 112, 101, 98, 1, 4, 112, 114, 103, 101, 1, 4, 114, + 116, 105, 103, 1, 4, 116, 118, 106, 105, 1, 4, 118, 109, 96, 106, 1, 6, 109, 118, 116, + 114, 112, 110, 1, 6, 120, 122, 125, 126, 128, 131, 1, 4, 133, 134, 122, 120, 1, 4, 134, + 136, 125, 122, 1, 4, 136, 139, 126, 125, 1, 4, 139, 141, 128, 126, 1, 4, 141, 143, 131, + 128, 1, 4, 143, 133, 120, 131, 1, 6, 133, 143, 141, 139, 136, 134, 1, 6, 48, 50, 53, + 54, 56, 58, 1, 4, 61, 62, 50, 48, 1, 4, 62, 64, 53, 50, 1, 4, 64, 67, 54, + 53, 1, 4, 67, 68, 56, 54, 1, 4, 68, 70, 58, 56, 1, 4, 70, 61, 48, 58, 1, + 6, 61, 70, 68, 67, 64, 62, 1, 6, 72, 75, 77, 78, 80, 83, 1, 4, 85, 87, 75, + 72, 1, 4, 87, 88, 77, 75, 1, 4, 88, 91, 78, 77, 1, 4, 91, 92, 80, 78, 1, + 4, 92, 95, 83, 80, 1, 4, 95, 85, 72, 83, 1, 6, 85, 95, 92, 91, 88, 87, 1, + 6, 24, 26, 28, 30, 32, 35, 1, 4, 36, 39, 26, 24, 1, 4, 39, 40, 28, 26, 1, + 4, 40, 42, 30, 28, 1, 4, 42, 44, 32, 30, 1, 4, 44, 47, 35, 32, 1, 4, 47, + 36, 24, 35, 1, 6, 36, 47, 44, 42, 40, 39, 1, 6, 1, 2, 4, 6, 8, 11, 1, + 4, 13, 15, 2, 1, 1, 4, 15, 16, 4, 2, 1, 4, 16, 19, 6, 4, 1, 4, 19, + 20, 8, 6, 1, 4, 20, 23, 11, 8, 1, 4, 23, 13, 1, 11, 1, 6, 13, 23, 20, + 19, 16, 15, 1, 6, 240, 243, 244, 247, 249, 250, 1, 4, 252, 255, 243, 240, 1, 4, 255, + 256, 244, 243, 1, 4, 256, 259, 247, 244, 1, 4, 259, 261, 249, 247, 1, 4, 261, 263, 250, + 249, 1, 4, 263, 252, 240, 250, 1, 6, 252, 263, 261, 259, 256, 255, 1, 6, 265, 266, 269, + 270, 272, 274, 1, 4, 276, 278, 266, 265, 1, 4, 278, 280, 269, 266, 1, 4, 280, 282, 270, + 269, 1, 4, 282, 284, 272, 270, 1, 4, 284, 287, 274, 272, 1, 4, 287, 276, 265, 274, 1, + 6, 276, 287, 284, 282, 280, 278, 1, 6, 192, 195, 197, 198, 200, 203, 1, 4, 204, 207, 195, + 192, 1, 4, 207, 209, 197, 195, 1, 4, 209, 211, 198, 197, 1, 4, 211, 212, 200, 198, 1, + 4, 212, 215, 203, 200, 1, 4, 215, 204, 192, 203, 1, 6, 204, 215, 212, 211, 209, 207, 1, + 6, 217, 218, 220, 222, 224, 226, 1, 4, 228, 230, 218, 217, 1, 4, 230, 233, 220, 218, 1, + 4, 233, 234, 222, 220, 1, 4, 234, 237, 224, 222, 1, 4, 237, 238, 226, 224, 1, 4, 238, + 228, 217, 226, 1, 6, 228, 238, 237, 234, 233, 230, 1, 6, 144, 146, 149, 151, 153, 154, 1, + 4, 156, 159, 146, 144, 1, 4, 159, 160, 149, 146, 1, 4, 160, 163, 151, 149, 1, 4, 163, + 164, 153, 151, 1, 4, 164, 166, 154, 153, 1, 4, 166, 156, 144, 154, 1, 6, 156, 166, 164, + 163, 160, 159, 1, 6, 168, 170, 172, 175, 176, 179, 1, 4, 180, 183, 170, 168, 1, 4, 183, + 185, 172, 170, 1, 4, 185, 186, 175, 172, 1, 4, 186, 188, 176, 175, 1, 4, 188, 191, 179, + 176, 1, 4, 191, 180, 168, 179, 1, 6, 180, 191, 188, 186, 185, 183, 1, 6, 97, 99, 100, + 102, 104, 107, 1, 4, 108, 111, 99, 97, 1, 4, 111, 113, 100, 99, 1, 4, 113, 115, 102, + 100, 1, 4, 115, 117, 104, 102, 1, 4, 117, 119, 107, 104, 1, 4, 119, 108, 97, 107, 1, + 6, 108, 119, 117, 115, 113, 111, 1, 6, 121, 123, 124, 127, 129, 130, 1, 4, 132, 135, 123, + 121, 1, 4, 135, 137, 124, 123, 1, 4, 137, 138, 127, 124, 1, 4, 138, 140, 129, 127, 1, + 4, 140, 142, 130, 129, 1, 4, 142, 132, 121, 130, 1, 6, 132, 142, 140, 138, 137, 135, 1, + 6, 49, 51, 52, 55, 57, 59, 1, 4, 60, 63, 51, 49, 1, 4, 63, 65, 52, 51, 1, + 4, 65, 66, 55, 52, 1, 4, 66, 69, 57, 55, 1, 4, 69, 71, 59, 57, 1, 4, 71, + 60, 49, 59, 1, 6, 60, 71, 69, 66, 65, 63, 1, 6, 73, 74, 76, 79, 81, 82, 1, + 4, 84, 86, 74, 73, 1, 4, 86, 89, 76, 74, 1, 4, 89, 90, 79, 76, 1, 4, 90, + 93, 81, 79, 1, 4, 93, 94, 82, 81, 1, 4, 94, 84, 73, 82, 1, 6, 84, 94, 93, + 90, 89, 86, 1, 6, 25, 27, 29, 31, 33, 34, 1, 4, 37, 38, 27, 25, 1, 4, 38, + 41, 29, 27, 1, 4, 41, 43, 31, 29, 1, 4, 43, 45, 33, 31, 1, 4, 45, 46, 34, + 33, 1, 4, 46, 37, 25, 34, 1, 6, 37, 46, 45, 43, 41, 38, 1, 6, 0, 3, 5, + 7, 9, 10, 1, 4, 12, 14, 3, 0, 1, 4, 14, 17, 5, 3, 1, 4, 17, 18, 7, + 5, 1, 4, 18, 21, 9, 7, 1, 4, 21, 22, 10, 9, 1, 4, 22, 12, 0, 10, 1, + 6, 12, 22, 21, 18, 17, 14, 1, + 0 +}; + +struct lwo LWO_ElbowBolts = +{ + 288, /* number of points */ + ElbowBolts_PNTS, ElbowBolts_normals, ElbowBolts_POLS, 0L +}; + +static const GLfloat ElbowCoins_PNTS[] = +{ + 0, -0.52, -0.5, + 0.097545, -0.52, -0.490393, + 0.191342, -0.52, -0.46194, + 0.277785, -0.52, -0.415735, + 0.353553, -0.52, -0.353553, + 0.415735, -0.52, -0.277785, + 0.46194, -0.52, -0.191342, + 0.490393, -0.52, -0.097545, + 0.5, -0.52, 0, + 0.490393, -0.52, 0.097545, + 0.46194, -0.52, 0.191342, + 0.415735, -0.52, 0.277785, + 0.353553, -0.52, 0.353553, + 0.277785, -0.52, 0.415735, + 0.191342, -0.52, 0.46194, + 0.097545, -0.52, 0.490393, + 0, -0.52, 0.5, + -0.097545, -0.52, 0.490393, + -0.191342, -0.52, 0.46194, + -0.277785, -0.52, 0.415735, + -0.353553, -0.52, 0.353553, + -0.415735, -0.52, 0.277785, + -0.46194, -0.52, 0.191342, + -0.490393, -0.52, 0.097545, + -0.5, -0.52, 0, + -0.490393, -0.52, -0.097545, + -0.46194, -0.52, -0.191342, + -0.415735, -0.52, -0.277785, + -0.353553, -0.52, -0.353553, + -0.277785, -0.52, -0.415735, + -0.191342, -0.52, -0.46194, + -0.097545, -0.52, -0.490393, + 0, -0.6, -0.5, + 0.097545, -0.6, -0.490393, + 0.191342, -0.6, -0.46194, + 0.277785, -0.6, -0.415735, + 0.353553, -0.6, -0.353553, + 0.415735, -0.6, -0.277785, + 0.46194, -0.6, -0.191342, + 0.490393, -0.6, -0.097545, + 0.5, -0.6, 0, + 0.490393, -0.6, 0.097545, + 0.46194, -0.6, 0.191342, + 0.415735, -0.6, 0.277785, + 0.353553, -0.6, 0.353553, + 0.277785, -0.6, 0.415735, + 0.191342, -0.6, 0.46194, + 0.097545, -0.6, 0.490393, + 0, -0.6, 0.5, + -0.097545, -0.6, 0.490393, + -0.191342, -0.6, 0.46194, + -0.277785, -0.6, 0.415735, + -0.353553, -0.6, 0.353553, + -0.415735, -0.6, 0.277785, + -0.46194, -0.6, 0.191342, + -0.490393, -0.6, 0.097545, + -0.5, -0.6, 0, + -0.490393, -0.6, -0.097545, + -0.46194, -0.6, -0.191342, + -0.415735, -0.6, -0.277785, + -0.353553, -0.6, -0.353553, + -0.277785, -0.6, -0.415735, + -0.191342, -0.6, -0.46194, + -0.097545, -0.6, -0.490393, + 0, 0.5, -0.52, + 0.097545, 0.490393, -0.52, + 0.191342, 0.46194, -0.52, + 0.277785, 0.415735, -0.52, + 0.353553, 0.353553, -0.52, + 0.415735, 0.277785, -0.52, + 0.46194, 0.191342, -0.52, + 0.490393, 0.097545, -0.52, + 0.5, 0, -0.52, + 0.490393, -0.097545, -0.52, + 0.46194, -0.191342, -0.52, + 0.415735, -0.277785, -0.52, + 0.353553, -0.353553, -0.52, + 0.277785, -0.415735, -0.52, + 0.191342, -0.46194, -0.52, + 0.097545, -0.490393, -0.52, + 0, -0.5, -0.52, + -0.097545, -0.490393, -0.52, + -0.191342, -0.46194, -0.52, + -0.277785, -0.415735, -0.52, + -0.353553, -0.353553, -0.52, + -0.415735, -0.277785, -0.52, + -0.46194, -0.191342, -0.52, + -0.490393, -0.097545, -0.52, + -0.5, 0, -0.52, + -0.490393, 0.097545, -0.52, + -0.46194, 0.191342, -0.52, + -0.415735, 0.277785, -0.52, + -0.353553, 0.353553, -0.52, + -0.277785, 0.415735, -0.52, + -0.191342, 0.46194, -0.52, + -0.097545, 0.490393, -0.52, + 0, 0.5, -0.6, + 0.097545, 0.490393, -0.6, + 0.191342, 0.46194, -0.6, + 0.277785, 0.415735, -0.6, + 0.353553, 0.353553, -0.6, + 0.415735, 0.277785, -0.6, + 0.46194, 0.191342, -0.6, + 0.490393, 0.097545, -0.6, + 0.5, 0, -0.6, + 0.490393, -0.097545, -0.6, + 0.46194, -0.191342, -0.6, + 0.415735, -0.277785, -0.6, + 0.353553, -0.353553, -0.6, + 0.277785, -0.415735, -0.6, + 0.191342, -0.46194, -0.6, + 0.097545, -0.490393, -0.6, + 0, -0.5, -0.6, + -0.097545, -0.490393, -0.6, + -0.191342, -0.46194, -0.6, + -0.277785, -0.415735, -0.6, + -0.353553, -0.353553, -0.6, + -0.415735, -0.277785, -0.6, + -0.46194, -0.191342, -0.6, + -0.490393, -0.097545, -0.6, + -0.5, 0, -0.6, + -0.490393, 0.097545, -0.6, + -0.46194, 0.191342, -0.6, + -0.415735, 0.277785, -0.6, + -0.353553, 0.353553, -0.6, + -0.277785, 0.415735, -0.6, + -0.191342, 0.46194, -0.6, + -0.097545, 0.490393, -0.6, +}; + +static const GLfloat ElbowCoins_normals[] = +{ + 0, 0, 1, + 0.098017, 0.995185, 0, + 0.290285, 0.95694, 0, + 0.471397, 0.881921, 0, + 0.634393, 0.77301, 0, + 0.77301, 0.634393, 0, + 0.881921, 0.471397, 0, + 0.95694, 0.290285, 0, + 0.995185, 0.098017, 0, + 0.995185, -0.098017, 0, + 0.95694, -0.290285, 0, + 0.881921, -0.471397, 0, + 0.77301, -0.634393, 0, + 0.634393, -0.77301, 0, + 0.471397, -0.881921, 0, + 0.290285, -0.95694, 0, + 0.098017, -0.995185, 0, + -0.098017, -0.995185, 0, + -0.290285, -0.95694, 0, + -0.471397, -0.881921, 0, + -0.634393, -0.77301, 0, + -0.77301, -0.634393, 0, + -0.881921, -0.471397, 0, + -0.95694, -0.290285, 0, + -0.995185, -0.098017, 0, + -0.995185, 0.098017, 0, + -0.95694, 0.290285, 0, + -0.881921, 0.471397, 0, + -0.77301, 0.634393, 0, + -0.634393, 0.77301, 0, + -0.471397, 0.881921, 0, + -0.290285, 0.95694, 0, + -0.098017, 0.995185, 0, + 0, 0, -1, + 0, 1, 0, + 0.098017, 0, -0.995185, + 0.290285, 0, -0.95694, + 0.471397, 0, -0.881921, + 0.634393, 0, -0.77301, + 0.77301, 0, -0.634393, + 0.881921, 0, -0.471397, + 0.95694, 0, -0.290285, + 0.995185, 0, -0.098017, + 0.995185, 0, 0.098017, + 0.95694, 0, 0.290285, + 0.881921, 0, 0.471397, + 0.77301, 0, 0.634393, + 0.634393, 0, 0.77301, + 0.471397, 0, 0.881921, + 0.290285, 0, 0.95694, + 0.098017, 0, 0.995185, + -0.098017, 0, 0.995185, + -0.290285, 0, 0.95694, + -0.471397, 0, 0.881921, + -0.634393, 0, 0.77301, + -0.77301, 0, 0.634393, + -0.881921, 0, 0.471397, + -0.95694, 0, 0.290285, + -0.995185, 0, 0.098017, + -0.995185, 0, -0.098017, + -0.95694, 0, -0.290285, + -0.881921, 0, -0.471397, + -0.77301, 0, -0.634393, + -0.634393, 0, -0.77301, + -0.471397, 0, -0.881921, + -0.290285, 0, -0.95694, + -0.098017, 0, -0.995185, + 0, -1, 0, +}; + +static const unsigned short int ElbowCoins_POLS[] = +{ + 32, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 1, 4, 96, 97, 65, 64, 1, + 4, 97, 98, 66, 65, 1, 4, 98, 99, 67, 66, 1, 4, 99, 100, 68, 67, 1, 4, 100, + 101, 69, 68, 1, 4, 101, 102, 70, 69, 1, 4, 102, 103, 71, 70, 1, 4, 103, 104, 72, +71, 1, 4, 104, 105, 73, 72, 1, 4, 105, 106, 74, 73, 1, 4, 106, 107, 75, 74, 1, + 4, 107, 108, 76, 75, 1, 4, 108, 109, 77, 76, 1, 4, 109, 110, 78, 77, 1, 4, 110, + 111, 79, 78, 1, 4, 111, 112, 80, 79, 1, 4, 112, 113, 81, 80, 1, 4, 113, 114, 82, +81, 1, 4, 114, 115, 83, 82, 1, 4, 115, 116, 84, 83, 1, 4, 116, 117, 85, 84, 1, + 4, 117, 118, 86, 85, 1, 4, 118, 119, 87, 86, 1, 4, 119, 120, 88, 87, 1, 4, 120, + 121, 89, 88, 1, 4, 121, 122, 90, 89, 1, 4, 122, 123, 91, 90, 1, 4, 123, 124, 92, +91, 1, 4, 124, 125, 93, 92, 1, 4, 125, 126, 94, 93, 1, 4, 126, 127, 95, 94, 1, + 4, 127, 96, 64, 95, 1, 32, 96, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, + 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 1, + 32, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 1, 4, 32, 33, 1, 0, 1, + 4, 33, 34, 2, 1, 1, 4, 34, 35, 3, 2, 1, 4, 35, 36, 4, 3, 1, 4, 36, + 37, 5, 4, 1, 4, 37, 38, 6, 5, 1, 4, 38, 39, 7, 6, 1, 4, 39, 40, 8, + 7, 1, 4, 40, 41, 9, 8, 1, 4, 41, 42, 10, 9, 1, 4, 42, 43, 11, 10, 1, + 4, 43, 44, 12, 11, 1, 4, 44, 45, 13, 12, 1, 4, 45, 46, 14, 13, 1, 4, 46, + 47, 15, 14, 1, 4, 47, 48, 16, 15, 1, 4, 48, 49, 17, 16, 1, 4, 49, 50, 18, + 17, 1, 4, 50, 51, 19, 18, 1, 4, 51, 52, 20, 19, 1, 4, 52, 53, 21, 20, 1, + 4, 53, 54, 22, 21, 1, 4, 54, 55, 23, 22, 1, 4, 55, 56, 24, 23, 1, 4, 56, + 57, 25, 24, 1, 4, 57, 58, 26, 25, 1, 4, 58, 59, 27, 26, 1, 4, 59, 60, 28, + 27, 1, 4, 60, 61, 29, 28, 1, 4, 61, 62, 30, 29, 1, 4, 62, 63, 31, 30, 1, + 4, 63, 32, 0, 31, 1, 32, 32, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, +51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 1, + 0 +}; + +struct lwo LWO_ElbowCoins = +{ + 128, /* number of points */ + ElbowCoins_PNTS, ElbowCoins_normals, ElbowCoins_POLS, 0L +}; + +#endif /* USE_GL */ + +/* End of pipeobjs.c */ diff --git a/hacks/glx/pipes.c b/hacks/glx/pipes.c new file mode 100644 index 0000000..24f9a2a --- /dev/null +++ b/hacks/glx/pipes.c @@ -0,0 +1,1220 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* pipes --- 3D selfbuiding pipe system */ + +#if 0 +static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; +#endif + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * This program was inspired on a WindowsNT(R)'s screen saver. It was written + * from scratch and it was not based on any other source code. + * + * ========================================================================== + * The routine myElbow is derivated from the doughnut routine from the MesaGL + * library (more especifically the Mesaaux library) written by Brian Paul. + * ========================================================================== + * + * Thanks goes to Brian Paul for making it possible and inexpensive to use + * OpenGL at home. + * + * Since I'm not a native English speaker, my apologies for any grammatical + * mistake. + * + * My e-mail address is + * m-vianna@usa.net + * Marcelo F. Vianna (Apr-09-1997) + * + * Revision History: + * 24-Jun-12: Eliminate single-buffer dependency. + * 29-Apr-97: Factory equipment by Ed Mackey. Productive day today, eh? + * 29-Apr-97: Less tight turns Jeff Epler + * 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna + */ + +/* This program was originally written to be single-buffered: it kept + building up new objects in the front buffer by never clearing the + depth or color buffers at the end of each frame. In that way, it + was drawing a very small number of polygons per frame. However, + modern systems make it difficult to live in a single-buffered world + like that. So I changed it to re-generate the scene at every + frame, which makes it vastly less efficient, but also, makes it + work right on modern hardware. It generates the entire system up + front, putting each "frame" of the animation into its own display + list; then it draws successively more of those display lists each + time the redisplay method is called. When it reaches the end, + it regenerates a new system and re-populates the existing display + lists. -- jwz. + */ + +#ifdef STANDALONE +# define DEFAULTS "*delay: 10000 \n" \ + "*count: 2 \n" \ + "*cycles: 5 \n" \ + "*size: 500 \n" \ + "*showFPS: False \n" \ + "*fpsSolid: True \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_pipes 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "sphere.h" +#include "buildlwo.h" +#include "teapot.h" +#include "gltrackball.h" + +#define DEF_FACTORY "2" +#define DEF_FISHEYE "True" +#define DEF_TIGHTTURNS "False" +#define DEF_ROTATEPIPES "True" +#define NofSysTypes 3 + +static int factory; +static Bool fisheye, tightturns, rotatepipes; + +static XrmOptionDescRec opts[] = +{ + {"-factory", ".pipes.factory", XrmoptionSepArg, 0}, + {"-fisheye", ".pipes.fisheye", XrmoptionNoArg, "on"}, + {"+fisheye", ".pipes.fisheye", XrmoptionNoArg, "off"}, + {"-tightturns", ".pipes.tightturns", XrmoptionNoArg, "on"}, + {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, "off"}, + {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "on"}, + {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "off"}, +}; +static argtype vars[] = +{ + {&factory, "factory", "Factory", DEF_FACTORY, t_Int}, + {&fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool}, + {&tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool}, + {&rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool}, +}; +static OptionStruct desc[] = +{ + {"-factory num", "how much extra equipment in pipes (0 for none)"}, + {"-/+fisheye", "turn on/off zoomed-in view of pipes"}, + {"-/+tightturns", "turn on/off tight turns"}, + {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"}, +}; + +ENTRYPOINT ModeSpecOpt pipes_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + +#ifdef USE_MODULES +ModStruct pipes_description = +{"pipes", "init_pipes", "draw_pipes", NULL, + "draw_pipes", + "change_pipes", "free_pipes", &pipes_opts, + 1000, 2, 5, 500, 4, 1.0, "", + "Shows a selfbuilding pipe system", 0, NULL}; + +#endif + +#define Scale4Window 0.1 + +#define one_third 0.3333333333333333333 + +#define dirNone -1 +#define dirUP 0 +#define dirDOWN 1 +#define dirLEFT 2 +#define dirRIGHT 3 +#define dirNEAR 4 +#define dirFAR 5 + +#define HCELLS 33 +#define VCELLS 25 +#define DEFINEDCOLORS 7 +#define elbowradius 0.5 + +/*************************************************************************/ + +typedef struct { + int flip; + + int Cells[HCELLS][VCELLS][HCELLS]; + int usedcolors[DEFINEDCOLORS]; + int directions[6]; + int ndirections; + int nowdir, olddir; + int system_number; + int counter; + int PX, PY, PZ; + int number_of_systems; + int system_type; + int system_length; + int turncounter; + Window window; + const float *system_color; + GLfloat initial_rotation; + GLuint valve, bolts, betweenbolts, elbowbolts, elbowcoins; + GLuint guagehead, guageface, guagedial, guageconnector, teapot; + int teapot_polys; + GLXContext *glx_context; + + Bool button_down_p; + trackball_state *trackball; + GLuint *dlists, *poly_counts; + int dlist_count, dlist_size; + int system_index, system_size; + + int fadeout; + +} pipesstruct; + +extern struct lwo LWO_BigValve, LWO_PipeBetweenBolts, LWO_Bolts3D; +extern struct lwo LWO_GuageHead, LWO_GuageFace, LWO_GuageDial, LWO_GuageConnector; +extern struct lwo LWO_ElbowBolts, LWO_ElbowCoins; + +static const float front_shininess[] = {60.0}; +static const float front_specular[] = {0.7, 0.7, 0.7, 1.0}; +static const float ambient0[] = {0.4, 0.4, 0.4, 1.0}; +static const float diffuse0[] = {1.0, 1.0, 1.0, 1.0}; +static const float ambient1[] = {0.2, 0.2, 0.2, 1.0}; +static const float diffuse1[] = {0.5, 0.5, 0.5, 1.0}; +static const float position0[] = {1.0, 1.0, 1.0, 0.0}; +static const float position1[] = {-1.0, -1.0, 1.0, 0.0}; +static const float lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0}; +static const float lmodel_twoside[] = {GL_TRUE}; + +static const float MaterialRed[] = {0.7, 0.0, 0.0, 1.0}; +static const float MaterialGreen[] = {0.1, 0.5, 0.2, 1.0}; +static const float MaterialBlue[] = {0.0, 0.0, 0.7, 1.0}; +static const float MaterialCyan[] = {0.2, 0.5, 0.7, 1.0}; +static const float MaterialYellow[] = {0.7, 0.7, 0.0, 1.0}; +static const float MaterialMagenta[] = {0.6, 0.2, 0.5, 1.0}; +static const float MaterialWhite[] = {0.7, 0.7, 0.7, 1.0}; +static const float MaterialGray[] = {0.2, 0.2, 0.2, 1.0}; + +static pipesstruct *pipes = NULL; + + +static void +MakeTube(ModeInfo *mi, int direction) +{ + Bool wire = MI_IS_WIREFRAME(mi); + float an; + float SINan_3, COSan_3; + int facets = (wire ? 5 : 24); + + /*dirUP = 00000000 */ + /*dirDOWN = 00000001 */ + /*dirLEFT = 00000010 */ + /*dirRIGHT = 00000011 */ + /*dirNEAR = 00000100 */ + /*dirFAR = 00000101 */ + + if (!(direction & 4)) { + glRotatef(90.0, (direction & 2) ? 0.0 : 1.0, + (direction & 2) ? 1.0 : 0.0, 0.0); + } + glBegin(wire ? GL_LINE_STRIP : GL_QUAD_STRIP); + for (an = 0.0; an <= 2.0 * M_PI; an += M_PI * 2 / facets) { + glNormal3f((COSan_3 = cos(an) / 3.0), (SINan_3 = sin(an) / 3.0), 0.0); + glVertex3f(COSan_3, SINan_3, one_third); + glVertex3f(COSan_3, SINan_3, -one_third); + mi->polygon_count++; + } + glEnd(); +} + +static void +mySphere(float radius, Bool wire) +{ +#if 0 + GLUquadricObj *quadObj; + + quadObj = gluNewQuadric(); + gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); + gluSphere(quadObj, radius, 16, 16); + gluDeleteQuadric(quadObj); +#else + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (16, 16, wire); + glPopMatrix(); +#endif +} + +static void +myElbow(ModeInfo * mi, int bolted) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + + int nsides = (wire ? 6 : 25); + int rings = nsides; +#define r one_third +#define R one_third + + int i, j; + GLfloat p0[3], p1[3], p2[3], p3[3]; + GLfloat n0[3], n1[3], n2[3], n3[3]; + GLfloat COSphi, COSphi1, COStheta, COStheta1; + GLfloat _SINtheta, _SINtheta1; + + for (i = 0; i <= rings / 4; i++) { + GLfloat theta, theta1; + + theta = (GLfloat) i *2.0 * M_PI / rings; + + theta1 = (GLfloat) (i + 1) * 2.0 * M_PI / rings; + for (j = 0; j < nsides; j++) { + GLfloat phi, phi1; + + phi = (GLfloat) j *2.0 * M_PI / nsides; + + phi1 = (GLfloat) (j + 1) * 2.0 * M_PI / nsides; + + p0[0] = (COStheta = cos(theta)) * (R + r * (COSphi = cos(phi))); + p0[1] = (_SINtheta = -sin(theta)) * (R + r * COSphi); + + p1[0] = (COStheta1 = cos(theta1)) * (R + r * COSphi); + p1[1] = (_SINtheta1 = -sin(theta1)) * (R + r * COSphi); + + p2[0] = COStheta1 * (R + r * (COSphi1 = cos(phi1))); + p2[1] = _SINtheta1 * (R + r * COSphi1); + + p3[0] = COStheta * (R + r * COSphi1); + p3[1] = _SINtheta * (R + r * COSphi1); + + n0[0] = COStheta * COSphi; + n0[1] = _SINtheta * COSphi; + + n1[0] = COStheta1 * COSphi; + n1[1] = _SINtheta1 * COSphi; + + n2[0] = COStheta1 * COSphi1; + n2[1] = _SINtheta1 * COSphi1; + + n3[0] = COStheta * COSphi1; + n3[1] = _SINtheta * COSphi1; + + p0[2] = p1[2] = r * (n0[2] = n1[2] = sin(phi)); + p2[2] = p3[2] = r * (n2[2] = n3[2] = sin(phi1)); + + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3fv(n3); + glVertex3fv(p3); + glNormal3fv(n2); + glVertex3fv(p2); + glNormal3fv(n1); + glVertex3fv(p1); + glNormal3fv(n0); + glVertex3fv(p0); + mi->polygon_count++; + glEnd(); + } + } + + if (factory > 0 && bolted) { + /* Bolt the elbow onto the pipe system */ + glFrontFace(GL_CW); + glPushMatrix(); + glRotatef(90.0, 0.0, 0.0, -1.0); + glRotatef(90.0, 0.0, 1.0, 0.0); + glTranslatef(0.0, one_third, one_third); + glCallList(pp->elbowcoins); + mi->polygon_count += LWO_ElbowCoins.num_pnts/3; + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray); + glCallList(pp->elbowbolts); + mi->polygon_count += LWO_ElbowBolts.num_pnts/3; + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color); + glPopMatrix(); + glFrontFace(GL_CCW); + } +#undef r +#undef R +#undef nsides +#undef rings +} + +static void +FindNeighbors(ModeInfo * mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + + pp->ndirections = 0; + pp->directions[dirUP] = (!pp->Cells[pp->PX][pp->PY + 1][pp->PZ]) ? 1 : 0; + pp->ndirections += pp->directions[dirUP]; + pp->directions[dirDOWN] = (!pp->Cells[pp->PX][pp->PY - 1][pp->PZ]) ? 1 : 0; + pp->ndirections += pp->directions[dirDOWN]; + pp->directions[dirLEFT] = (!pp->Cells[pp->PX - 1][pp->PY][pp->PZ]) ? 1 : 0; + pp->ndirections += pp->directions[dirLEFT]; + pp->directions[dirRIGHT] = (!pp->Cells[pp->PX + 1][pp->PY][pp->PZ]) ? 1 : 0; + pp->ndirections += pp->directions[dirRIGHT]; + pp->directions[dirFAR] = (!pp->Cells[pp->PX][pp->PY][pp->PZ - 1]) ? 1 : 0; + pp->ndirections += pp->directions[dirFAR]; + pp->directions[dirNEAR] = (!pp->Cells[pp->PX][pp->PY][pp->PZ + 1]) ? 1 : 0; + pp->ndirections += pp->directions[dirNEAR]; +} + +static int +SelectNeighbor(ModeInfo * mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + int dirlist[6]; + int i, j; + + for (i = 0, j = 0; i < 6; i++) { + if (pp->directions[i]) { + dirlist[j] = i; + j++; + } + } + + return dirlist[NRAND(pp->ndirections)]; +} + +static void +MakeValve(ModeInfo * mi, int newdir) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + + /* There is a glPopMatrix() right after this subroutine returns. */ + switch (newdir) { + case dirUP: + case dirDOWN: + glRotatef(90.0, 1.0, 0.0, 0.0); + glRotatef(NRAND(3) * 90.0, 0.0, 0.0, 1.0); + break; + case dirLEFT: + case dirRIGHT: + glRotatef(90.0, 0.0, -1.0, 0.0); + glRotatef((NRAND(3) * 90.0) - 90.0, 0.0, 0.0, 1.0); + break; + case dirNEAR: + case dirFAR: + glRotatef(NRAND(4) * 90.0, 0.0, 0.0, 1.0); + break; + } + glFrontFace(GL_CW); + glCallList(pp->betweenbolts); + mi->polygon_count += LWO_PipeBetweenBolts.num_pnts/3; + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray); + glCallList(pp->bolts); + mi->polygon_count += LWO_Bolts3D.num_pnts/3; + if (!MI_IS_MONO(mi)) { + if (pp->system_color == MaterialRed) { + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, NRAND(2) ? MaterialYellow : MaterialBlue); + } else if (pp->system_color == MaterialBlue) { + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, NRAND(2) ? MaterialRed : MaterialYellow); + } else if (pp->system_color == MaterialYellow) { + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, NRAND(2) ? MaterialBlue : MaterialRed); + } else { + switch ((NRAND(3))) { + case 0: + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed); + break; + case 1: + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialBlue); + break; + case 2: + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialYellow); + } + } + } + glRotatef((GLfloat) (NRAND(90)), 1.0, 0.0, 0.0); + glCallList(pp->valve); + mi->polygon_count += LWO_BigValve.num_pnts/3; + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color); + glFrontFace(GL_CCW); +} + +static int +MakeGuage(ModeInfo * mi, int newdir) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + + /* Can't have a guage on a vertical pipe. */ + if ((newdir == dirUP) || (newdir == dirDOWN)) + return (0); + + /* Is there space above this pipe for a guage? */ + if (!pp->directions[dirUP]) + return (0); + + /* Yes! Mark the space as used. */ + pp->Cells[pp->PX][pp->PY + 1][pp->PZ] = 1; + + glFrontFace(GL_CW); + glPushMatrix(); + if ((newdir == dirLEFT) || (newdir == dirRIGHT)) + glRotatef(90.0, 0.0, 1.0, 0.0); + glCallList(pp->betweenbolts); + mi->polygon_count += LWO_PipeBetweenBolts.num_pnts/3; + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray); + glCallList(pp->bolts); + mi->polygon_count += LWO_Bolts3D.num_pnts/3; + glPopMatrix(); + + glCallList(pp->guageconnector); + mi->polygon_count += LWO_GuageConnector.num_pnts/3; + glPushMatrix(); + glTranslatef(0.0, 1.33333, 0.0); + /* Do not change the above to 1 + ONE_THIRD, because */ + /* the object really is centered on 1.3333300000. */ + glRotatef(NRAND(270) + 45.0, 0.0, 0.0, -1.0); + /* Random rotation for the dial. I love it. */ + glCallList(pp->guagedial); + mi->polygon_count += LWO_GuageDial.num_pnts/3; + glPopMatrix(); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color); + glCallList(pp->guagehead); + mi->polygon_count += LWO_GuageHead.num_pnts/3; + + /* GuageFace is drawn last, in case of low-res depth buffers. */ + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite); + glCallList(pp->guageface); + mi->polygon_count += LWO_GuageFace.num_pnts/3; + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color); + glFrontFace(GL_CCW); + + return (1); +} + + +static GLuint +build_teapot(ModeInfo *mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + GLuint list = glGenLists(1); + if (!list) return 0; + glNewList(list, GL_COMPILE); + pp->teapot_polys = unit_teapot (12, MI_IS_WIREFRAME(mi)); + glEndList(); + return list; +} + + +static void +MakeTeapot(ModeInfo * mi, int newdir) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + + switch (newdir) { + case dirUP: + case dirDOWN: + glRotatef(90.0, 1.0, 0.0, 0.0); + glRotatef(NRAND(3) * 90.0, 0.0, 0.0, 1.0); + break; + case dirLEFT: + case dirRIGHT: + glRotatef(90.0, 0.0, -1.0, 0.0); + glRotatef((NRAND(3) * 90.0) - 90.0, 0.0, 0.0, 1.0); + break; + case dirNEAR: + case dirFAR: + glRotatef(NRAND(4) * 90.0, 0.0, 0.0, 1.0); + break; + } + + glCallList(pp->teapot); + mi->polygon_count += pp->teapot_polys; + glFrontFace(GL_CCW); +} + + +static void +MakeShape(ModeInfo * mi, int newdir) +{ + int n = NRAND(100); + if (n < 50) { + if (!MakeGuage(mi, newdir)) + MakeTube(mi, newdir); + } else if (n < 98) { + MakeValve(mi, newdir); + } else { + MakeTeapot(mi,newdir); + } +} + +static void +pinit(ModeInfo * mi, int zera) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + int X, Y, Z; + + if (zera) { + pp->system_number = 1; + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + (void) memset(pp->Cells, 0, sizeof (pp->Cells)); + for (X = 0; X < HCELLS; X++) { + for (Y = 0; Y < VCELLS; Y++) { + pp->Cells[X][Y][0] = 1; + pp->Cells[X][Y][HCELLS - 1] = 1; + pp->Cells[0][Y][X] = 1; + pp->Cells[HCELLS - 1][Y][X] = 1; + } + } + for (X = 0; X < HCELLS; X++) { + for (Z = 0; Z < HCELLS; Z++) { + pp->Cells[X][0][Z] = 1; + pp->Cells[X][VCELLS - 1][Z] = 1; + } + } + (void) memset(pp->usedcolors, 0, sizeof (pp->usedcolors)); + } + pp->counter = 0; + pp->turncounter = 0; + + if (!MI_IS_MONO(mi)) { + int collist[DEFINEDCOLORS]; + int i, j, lower = 1000; + + /* Avoid repeating colors on the same screen unless necessary */ + for (i = 0; i < DEFINEDCOLORS; i++) { + if (lower > pp->usedcolors[i]) + lower = pp->usedcolors[i]; + } + for (i = 0, j = 0; i < DEFINEDCOLORS; i++) { + if (pp->usedcolors[i] == lower) { + collist[j] = i; + j++; + } + } + i = collist[NRAND(j)]; + pp->usedcolors[i]++; + switch (i) { + case 0: + pp->system_color = MaterialRed; + break; + case 1: + pp->system_color = MaterialGreen; + break; + case 2: + pp->system_color = MaterialBlue; + break; + case 3: + pp->system_color = MaterialCyan; + break; + case 4: + pp->system_color = MaterialYellow; + break; + case 5: + pp->system_color = MaterialMagenta; + break; + case 6: + pp->system_color = MaterialWhite; + break; + } + } else { + pp->system_color = MaterialGray; + } + + do { + pp->PX = NRAND((HCELLS - 1)) + 1; + pp->PY = NRAND((VCELLS - 1)) + 1; + pp->PZ = NRAND((HCELLS - 1)) + 1; + } while (pp->Cells[pp->PX][pp->PY][pp->PZ] || + (pp->Cells[pp->PX + 1][pp->PY][pp->PZ] && pp->Cells[pp->PX - 1][pp->PY][pp->PZ] && + pp->Cells[pp->PX][pp->PY + 1][pp->PZ] && pp->Cells[pp->PX][pp->PY - 1][pp->PZ] && + pp->Cells[pp->PX][pp->PY][pp->PZ + 1] && pp->Cells[pp->PX][pp->PY][pp->PZ - 1])); + pp->Cells[pp->PX][pp->PY][pp->PZ] = 1; + pp->olddir = dirNone; + + FindNeighbors(mi); + + pp->nowdir = SelectNeighbor(mi); +} + + +ENTRYPOINT void +reshape_pipes(ModeInfo * mi, int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + glViewport(0, y, width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + /*glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); */ + gluPerspective(65.0, 1/h, 0.1, 20.0); + glMatrixMode(GL_MODELVIEW); + + glClear(GL_COLOR_BUFFER_BIT); +} + +ENTRYPOINT Bool +pipes_handle_event (ModeInfo *mi, XEvent *event) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, pp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &pp->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + pp->fadeout = 100; + return True; + } + + return False; +} + + + +static void generate_system (ModeInfo *); + + +ENTRYPOINT void +init_pipes (ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + pipesstruct *pp; + + MI_INIT (mi, pipes); + pp = &pipes[screen]; + + pp->window = MI_WINDOW(mi); + if ((pp->glx_context = init_GL(mi)) != NULL) { + + reshape_pipes(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + if (rotatepipes) + pp->initial_rotation = NRAND(180); /* jwz */ + else + pp->initial_rotation = -10.0; + pinit(mi, 1); + + if (factory > 0) { + pp->valve = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_BigValve); + pp->bolts = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_Bolts3D); + pp->betweenbolts = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_PipeBetweenBolts); + + pp->elbowbolts = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_ElbowBolts); + pp->elbowcoins = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_ElbowCoins); + + pp->guagehead = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_GuageHead); + pp->guageface = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_GuageFace); + pp->guagedial = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_GuageDial); + pp->guageconnector = BuildLWO(MI_IS_WIREFRAME(mi), &LWO_GuageConnector); + pp->teapot = build_teapot(mi); + } + /* else they are all 0, thanks to calloc(). */ + + if (MI_COUNT(mi) < 1 || MI_COUNT(mi) > NofSysTypes + 1) { + pp->system_type = NRAND(NofSysTypes) + 1; + } else { + pp->system_type = MI_COUNT(mi); + } + + if (MI_CYCLES(mi) > 0 && MI_CYCLES(mi) < 11) { + pp->number_of_systems = MI_CYCLES(mi); + } else { + pp->number_of_systems = 5; + } + + if (MI_SIZE(mi) < 10) { + pp->system_length = 10; + } else if (MI_SIZE(mi) > 1000) { + pp->system_length = 1000; + } else { + pp->system_length = MI_SIZE(mi); + } + } else { + MI_CLEARWINDOW(mi); + } + + pp->trackball = gltrackball_init (True); + generate_system (mi); +} + + +static GLuint +get_dlist (ModeInfo *mi, int i) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + if (i >= pp->dlist_count) + { + pp->dlist_count++; + if (pp->dlist_count >= pp->dlist_size) + { + int s2 = (pp->dlist_size + 100) * 1.2; + pp->dlists = (GLuint *) + realloc (pp->dlists, s2 * sizeof(*pp->dlists)); + if (! pp->dlists) abort(); + pp->poly_counts = (GLuint *) + realloc (pp->poly_counts, s2 * sizeof(*pp->poly_counts)); + if (! pp->poly_counts) abort(); + pp->dlist_size = s2; + } + pp->dlists [i] = glGenLists (1); + pp->poly_counts [i] = 0; + } + return pp->dlists[i]; +} + + + +static void +generate_system (ModeInfo * mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + + int newdir; + int OPX, OPY, OPZ; + + Bool reset_p = False; + + pp->system_index = 0; + pp->system_size = 0; + pinit (mi, 1); + + while (1) { + glNewList (get_dlist (mi, pp->system_size++), GL_COMPILE); + mi->polygon_count = 0; + + glPushMatrix(); + + FindNeighbors(mi); + + if (wire) + glColor4fv (pp->system_color); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color); + + /* If it's the begining of a system, draw a sphere */ + if (pp->olddir == dirNone) { + glPushMatrix(); + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0); + mySphere(0.6, wire); + glPopMatrix(); + } + /* Check for stop conditions */ + if (pp->ndirections == 0 || pp->counter > pp->system_length) { + glPushMatrix(); + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0); + /* Finish the system with another sphere */ + mySphere(0.6, wire); + + glPopMatrix(); + + /* If the maximum number of system was drawn, restart (clearing the screen), */ + /* else start a new system. */ + if (++pp->system_number > pp->number_of_systems) { + reset_p = True; + } else { + pinit(mi, 0); + } + + goto NEXT; + } + pp->counter++; + pp->turncounter++; + + /* Do will the direction change? if so, determine the new one */ + newdir = pp->nowdir; + if (!pp->directions[newdir]) { /* cannot proceed in the current direction */ + newdir = SelectNeighbor(mi); + } else { + if (tightturns) { + /* random change (20% chance) */ + if ((pp->counter > 1) && (NRAND(100) < 20)) { + newdir = SelectNeighbor(mi); + } + } else { + /* Chance to turn increases after each length of pipe drawn */ + if ((pp->counter > 1) && NRAND(50) < NRAND(pp->turncounter + 1)) { + newdir = SelectNeighbor(mi); + pp->turncounter = 0; + } + } + } + + /* Has the direction changed? */ + if (newdir == pp->nowdir) { + /* If not, draw the cell's center pipe */ + glPushMatrix(); + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0); + /* Chance of factory shape here, if enabled. */ + if ((pp->counter > 1) && (NRAND(100) < factory)) { + MakeShape(mi, newdir); + } else { + MakeTube(mi, newdir); + } + glPopMatrix(); + } else { + /* If so, draw the cell's center elbow/sphere */ + int sysT = pp->system_type; + + if (sysT == NofSysTypes + 1) { + sysT = ((pp->system_number - 1) % NofSysTypes) + 1; + } + glPushMatrix(); + + switch (sysT) { + case 1: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0); + mySphere(elbowradius, wire); + break; + case 2: + case 3: + switch (pp->nowdir) { + case dirUP: + switch (newdir) { + case dirLEFT: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0); + glRotatef(180.0, 1.0, 0.0, 0.0); + break; + case dirRIGHT: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0); + glRotatef(180.0, 1.0, 0.0, 0.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + break; + case dirFAR: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0 - (one_third)); + glRotatef(90.0, 0.0, 1.0, 0.0); + glRotatef(180.0, 0.0, 0.0, 1.0); + break; + case dirNEAR: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0 + (one_third)); + glRotatef(90.0, 0.0, 1.0, 0.0); + glRotatef(180.0, 1.0, 0.0, 0.0); + break; + } + break; + case dirDOWN: + switch (newdir) { + case dirLEFT: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0); + break; + case dirRIGHT: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + break; + case dirFAR: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0 - (one_third)); + glRotatef(270.0, 0.0, 1.0, 0.0); + break; + case dirNEAR: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0 + (one_third)); + glRotatef(90.0, 0.0, 1.0, 0.0); + break; + } + break; + case dirLEFT: + switch (newdir) { + case dirUP: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + break; + case dirDOWN: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0); + glRotatef(180.0, 1.0, 0.0, 0.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + break; + case dirFAR: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 - (one_third)); + glRotatef(270.0, 1.0, 0.0, 0.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + break; + case dirNEAR: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 + (one_third)); + glRotatef(270.0, 1.0, 0.0, 0.0); + glRotatef(180.0, 0.0, 0.0, 1.0); + break; + } + break; + case dirRIGHT: + switch (newdir) { + case dirUP: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0); + break; + case dirDOWN: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0); + glRotatef(180.0, 1.0, 0.0, 0.0); + break; + case dirFAR: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 - (one_third)); + glRotatef(270.0, 1.0, 0.0, 0.0); + break; + case dirNEAR: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 + (one_third)); + glRotatef(90.0, 1.0, 0.0, 0.0); + break; + } + break; + case dirNEAR: + switch (newdir) { + case dirLEFT: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 - (one_third)); + glRotatef(270.0, 1.0, 0.0, 0.0); + break; + case dirRIGHT: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 - (one_third)); + glRotatef(270.0, 1.0, 0.0, 0.0); + glRotatef(180.0, 0.0, 1.0, 0.0); + break; + case dirUP: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0 - (one_third)); + glRotatef(270.0, 0.0, 1.0, 0.0); + break; + case dirDOWN: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0 - (one_third)); + glRotatef(90.0, 0.0, 1.0, 0.0); + glRotatef(180.0, 0.0, 0.0, 1.0); + break; + } + break; + case dirFAR: + switch (newdir) { + case dirUP: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 + (one_third), (pp->PZ - 16) / 3.0 * 4.0 + (one_third)); + glRotatef(90.0, 0.0, 1.0, 0.0); + break; + case dirDOWN: + glTranslatef((pp->PX - 16) / 3.0 * 4.0, (pp->PY - 12) / 3.0 * 4.0 - (one_third), (pp->PZ - 16) / 3.0 * 4.0 + (one_third)); + glRotatef(90.0, 0.0, 1.0, 0.0); + glRotatef(180.0, 1.0, 0.0, 0.0); + break; + case dirLEFT: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 - (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 + (one_third)); + glRotatef(90.0, 1.0, 0.0, 0.0); + break; + case dirRIGHT: + glTranslatef((pp->PX - 16) / 3.0 * 4.0 + (one_third), (pp->PY - 12) / 3.0 * 4.0, (pp->PZ - 16) / 3.0 * 4.0 + (one_third)); + glRotatef(270.0, 1.0, 0.0, 0.0); + glRotatef(180.0, 0.0, 0.0, 1.0); + break; + } + break; + } + myElbow(mi, (sysT == 2)); + break; + } + glPopMatrix(); + } + + OPX = pp->PX; + OPY = pp->PY; + OPZ = pp->PZ; + pp->olddir = pp->nowdir; + pp->nowdir = newdir; + switch (pp->nowdir) { + case dirUP: + pp->PY++; + break; + case dirDOWN: + pp->PY--; + break; + case dirLEFT: + pp->PX--; + break; + case dirRIGHT: + pp->PX++; + break; + case dirNEAR: + pp->PZ++; + break; + case dirFAR: + pp->PZ--; + break; + } + pp->Cells[pp->PX][pp->PY][pp->PZ] = 1; + + /* Cells'face pipe */ + glTranslatef(((pp->PX + OPX) / 2.0 - 16) / 3.0 * 4.0, ((pp->PY + OPY) / 2.0 - 12) / 3.0 * 4.0, ((pp->PZ + OPZ) / 2.0 - 16) / 3.0 * 4.0); + MakeTube(mi, newdir); + + NEXT: + glPopMatrix(); + glEndList(); + pp->poly_counts [pp->system_size-1] = mi->polygon_count; + + if (reset_p) + break; + } +} + + +ENTRYPOINT void +draw_pipes (ModeInfo * mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + Bool wire = MI_IS_WIREFRAME(mi); + int i = 0; + + if (!pp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context)); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glColor3f(1.0, 1.0, 1.0); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + + if (wire) + glDisable(GL_LIGHTING); + else + { + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + /* This looks crappy. */ + /* glEnable(GL_LIGHT1); */ + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + } + + glShadeModel(GL_SMOOTH); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); + + glPushMatrix(); + + pp->initial_rotation += 0.02; + + glTranslatef(0.0, 0.0, fisheye ? -3.8 : -4.8); + + gltrackball_rotate (pp->trackball); + + if (rotatepipes) + glRotatef(pp->initial_rotation, 0.0, 1.0, 0.0); + + glScalef(Scale4Window, Scale4Window, Scale4Window); + + mi->polygon_count = 0; + + if (pp->fadeout) + { + GLfloat s = (pp->fadeout * pp->fadeout) / 10000.0; + glScalef (s, s, s); + glRotatef (90 * (1 - (pp->fadeout/100.0)), 1, 0, 0.1); + pp->fadeout -= 4; + if (pp->fadeout <= 0) + { + pp->fadeout = 0; + generate_system (mi); + } + } + else if (pp->system_index < pp->system_size) + pp->system_index++; + else + pp->fadeout = 100; + + for (i = 0; i < pp->system_index; i++) + { + glCallList (pp->dlists[i]); + mi->polygon_count += pp->poly_counts[i]; + } + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(display, window); +} + + +#ifndef STANDALONE +ENTRYPOINT void +change_pipes (ModeInfo * mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + + if (!pp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context)); + pinit(mi, 1); +} +#endif /* !STANDALONE */ + + +ENTRYPOINT void +free_pipes (ModeInfo * mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + + if (pp->glx_context) { + + /* Display lists MUST be freed while their glXContext is current. */ + glXMakeCurrent(MI_DISPLAY(mi), pp->window, *(pp->glx_context)); + + if (pp->valve) + glDeleteLists(pp->valve, 1); + if (pp->bolts) + glDeleteLists(pp->bolts, 1); + if (pp->betweenbolts) + glDeleteLists(pp->betweenbolts, 1); + + if (pp->elbowbolts) + glDeleteLists(pp->elbowbolts, 1); + if (pp->elbowcoins) + glDeleteLists(pp->elbowcoins, 1); + + if (pp->guagehead) + glDeleteLists(pp->guagehead, 1); + if (pp->guageface) + glDeleteLists(pp->guageface, 1); + if (pp->guagedial) + glDeleteLists(pp->guagedial, 1); + if (pp->guageconnector) + glDeleteLists(pp->guageconnector, 1); + if (pp->teapot) + glDeleteLists(pp->teapot, 1); + if (pp->dlists) + { + int i; + for (i = 0; i < pp->dlist_count; i++) + glDeleteLists (pp->dlists[i], 1); + free (pp->dlists); + free (pp->poly_counts); + } + } +} + +XSCREENSAVER_MODULE ("Pipes", pipes) + +#endif diff --git a/hacks/glx/pipes.man b/hacks/glx/pipes.man new file mode 100644 index 0000000..b58a511 --- /dev/null +++ b/hacks/glx/pipes.man @@ -0,0 +1,85 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +pipes - fill the screen with a plumbing system. +.SH SYNOPSIS +.B pipes +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[-count 0] +[-count 1] +[-cycles \fInumber\fP] +[-size \fInumber\fP] +[-factory \fInumber\fP] +[-delay \fInumber\fP] +[-no-fisheye] +[-tightturns] +[-db] +[-fps] +.SH DESCRIPTION +If you've ever been in the same room as a Windows NT machine, you've +probably seen this GL hack. It fills the screen with a plumbing system. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-count 0 +Curved Pipes. +.TP 8 +.B \-count 1 +Ball Joints. +.TP 8 +.B \-cycles \fInumber\fP +Number of pipe systems to draw at once. Default: 5. +.TP 8 +.B \-size \fInumber\fP +Length of each pipe system. Default: 500. +.TP 8 +.B \-factory \fInumber\fP +How much gadgetry to create; Useful range is 0-10. Default: 2. +.TP 8 +.B \-delay \fInumber\fP +How long (in microseconds) to sleep between frames. Default: 10000. +.TP 8 +.B \-fisheye | \-no-fisheye +Whether to use a fisheye lens. +.TP 8 +.B \-tightturns | \-no-tightturns +Whether to allow tight turns. +.TP 8 +.B \-db | \-no-db +Whether to double-buffer. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Marcelo Vianna. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Marcelo Vianna. diff --git a/hacks/glx/polyhedra-gl.c b/hacks/glx/polyhedra-gl.c new file mode 100644 index 0000000..507d295 --- /dev/null +++ b/hacks/glx/polyhedra-gl.c @@ -0,0 +1,683 @@ +/* polyhedra, Copyright (c) 2004-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Renders 160 different 3D solids, and displays some information about each. + * A new solid is chosen every few seconds. + * + * This file contains the OpenGL side; computation of the polyhedra themselves + * is in "polyhedra.c". + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*titleFont: -*-helvetica-medium-r-normal-*-*-140-*-*-*-*-*-*\n" \ + "*titleFont2: -*-helvetica-medium-r-normal-*-*-100-*-*-*-*-*-*\n" \ + "*titleFont3: -*-helvetica-medium-r-normal-*-*-80-*-*-*-*-*-*\n" \ + "*suppressRotationAnimation: True\n" \ + + +# define free_polyhedra 0 +# define release_polyhedra 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_TITLES "True" +#define DEF_DURATION "12" +#define DEF_WHICH "random" + +#include "texfont.h" +#include "normals.h" +#include "polyhedra.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" +#include "teapot.h" + +#ifndef HAVE_JWXYZ +# define XK_MISCELLANY +# include +#endif + +#ifndef HAVE_JWZGLES +# define HAVE_TESS +#endif + + +#ifdef USE_GL /* whole file */ + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int npolyhedra; + polyhedron **polyhedra; + + int which; + int change_to; + GLuint object_list; + + int mode; /* 0 = normal, 1 = out, 2 = in */ + int mode_tick; + + int ncolors; + XColor *colors; + + texture_font_data *font1_data, *font2_data, *font3_data; + + time_t last_change_time; + int change_tick; + +} polyhedra_configuration; + +static polyhedra_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; +static Bool do_titles; +static int duration; +static int do_which; +static char *do_which_str; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-titles", ".titles", XrmoptionNoArg, "True" }, + { "+titles", ".titles", XrmoptionNoArg, "False" }, + { "-duration",".duration",XrmoptionSepArg, 0 }, + { "-which", ".which", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&do_titles, "titles", "Titles", DEF_TITLES, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&duration,"duration","Duration",DEF_DURATION,t_Int}, + {&do_which_str,"which", "Which", DEF_WHICH, t_String}, +}; + +ENTRYPOINT ModeSpecOpt polyhedra_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + +/* Calculate the normals at each vertex of a face, and use the sum to + decide which normal to assign to the entire face. This also solves + problems caused by nonconvex faces, in most (but not all) cases. + */ +static void +kludge_normal (int n, const int *indices, const point *points) +{ + XYZ normal = { 0, 0, 0 }; + XYZ p = { 0, 0, 0 }; + int i; + + for (i = 0; i < n; ++i) { + int i1 = indices[i]; + int i2 = indices[(i + 1) % n]; + int i3 = indices[(i + 2) % n]; + XYZ p1, p2, p3; + + p1.x = points[i1].x; p1.y = points[i1].y; p1.z = points[i1].z; + p2.x = points[i2].x; p2.y = points[i2].y; p2.z = points[i2].z; + p3.x = points[i3].x; p3.y = points[i3].y; p3.z = points[i3].z; + + p = calc_normal (p1, p2, p3); + normal.x += p.x; + normal.y += p.y; + normal.z += p.z; + } + + /*normalize(&normal);*/ + if (normal.x == 0 && normal.y == 0 && normal.z == 0) { + glNormal3f (p.x, p.y, p.z); + } else { + glNormal3f (normal.x, normal.y, normal.z); + } +} + + +static void +load_fonts (ModeInfo *mi) +{ + polyhedra_configuration *bp = &bps[MI_SCREEN(mi)]; + bp->font1_data = load_texture_font (mi->dpy, "titleFont"); + bp->font2_data = load_texture_font (mi->dpy, "titleFont2"); + bp->font3_data = load_texture_font (mi->dpy, "titleFont3"); +} + + + +static void +startup_blurb (ModeInfo *mi) +{ + polyhedra_configuration *bp = &bps[MI_SCREEN(mi)]; + const char *s = "Computing polyhedra..."; + texture_font_data *f = bp->font1_data; + + glColor3f (0.8, 0.8, 0); + print_texture_label (mi->dpy, f, + mi->xgwa.width, mi->xgwa.height, + 0, s); + glFinish(); + glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi)); +} + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_polyhedra (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +polyhedra_handle_event (ModeInfo *mi, XEvent *event) +{ + polyhedra_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + + bp->change_to = -1; + if (c == ' ' || c == '\t' || c == '\r' || c == '\n') + bp->change_to = random() % bp->npolyhedra; + else if (c == '>' || c == '.' || c == '+' || c == '=' || + keysym == XK_Right || keysym == XK_Up || keysym == XK_Next) + bp->change_to = (bp->which + 1) % bp->npolyhedra; + else if (c == '<' || c == ',' || c == '-' || c == '_' || + c == '\010' || c == '\177' || + keysym == XK_Left || keysym == XK_Down || keysym == XK_Prior) + bp->change_to = (bp->which + bp->npolyhedra - 1) % bp->npolyhedra; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + goto DEF; + + if (bp->change_to != -1) + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + DEF: + bp->change_to = random() % bp->npolyhedra; + return True; + } + + return False; +} + + +static void +draw_label (ModeInfo *mi) +{ + polyhedra_configuration *bp = &bps[MI_SCREEN(mi)]; + polyhedron *p = bp->which >= 0 ? bp->polyhedra[bp->which] : 0; + char label[1024]; + char name2[255]; + GLfloat color[4] = { 0.8, 0.8, 0.8, 1 }; + texture_font_data *f; + + if (!p || !do_titles) return; + + strcpy (name2, p->name); + if (*p->class) + sprintf (name2 + strlen(name2), " (%s)", p->class); + + sprintf (label, + "Polyhedron %d: \t%s\n\n" + "Wythoff Symbol:\t%s\n" + "Vertex Configuration:\t%s\n" + "Symmetry Group:\t%s\n" + /* "Dual of: \t%s\n" */ + "\n" + "Faces:\t %d\n" + "Edges:\t %d\n" + "Vertices:\t %d\n" + "Density:\t %d\n" + "Euler:\t%s%d\n", + bp->which, name2, p->wythoff, p->config, p->group, + /* p->dual, */ + p->logical_faces, p->nedges, p->logical_vertices, + p->density, (p->chi < 0 ? "" : " "), p->chi); + + if (MI_WIDTH(mi) >= 500 && MI_HEIGHT(mi) >= 375) + f = bp->font1_data; + else if (MI_WIDTH(mi) >= 350 && MI_HEIGHT(mi) >= 260) + f = bp->font2_data; /* small font */ + else + f = bp->font3_data; /* tiny font */ + + glColor4fv (color); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + print_texture_label (mi->dpy, f, + mi->xgwa.width, mi->xgwa.height, + 1, label); +} + + +#ifdef HAVE_TESS +static void +tess_error (GLenum errorCode) +{ + fprintf (stderr, "%s: tesselation error: %s\n", + progname, gluErrorString(errorCode)); + abort(); +} +#endif /* HAVE_TESS */ + + +static void +new_polyhedron (ModeInfo *mi) +{ + polyhedra_configuration *bp = &bps[MI_SCREEN(mi)]; + polyhedron *p; + int wire = MI_IS_WIREFRAME(mi); + int i; + + /* Use the GLU polygon tesselator so that nonconvex faces are displayed + correctly (e.g., for the "pentagrammic concave deltohedron"). + */ +# ifdef HAVE_TESS + GLUtesselator *tobj = gluNewTess(); + gluTessCallback (tobj, GLU_TESS_BEGIN, (void (*) (void)) &glBegin); + gluTessCallback (tobj, GLU_TESS_END, (void (*) (void)) &glEnd); + gluTessCallback (tobj, GLU_TESS_VERTEX, (void (*) (void)) &glVertex3dv); + gluTessCallback (tobj, GLU_TESS_ERROR, (void (*) (void)) &tess_error); +# endif /* HAVE_TESS */ + + mi->polygon_count = 0; + + bp->ncolors = 128; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_random_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + True, False, 0, False); + + if (do_which >= bp->npolyhedra) + do_which = -1; + + bp->which = (bp->change_to != -1 ? bp->change_to : + do_which >= 0 ? do_which : + (random() % bp->npolyhedra)); + bp->change_to = -1; + p = bp->polyhedra[bp->which]; + + if (wire) + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + + glNewList (bp->object_list, GL_COMPILE); + if (bp->which == bp->npolyhedra-1) + { + GLfloat bcolor[4]; + bcolor[0] = bp->colors[0].red / 65536.0; + bcolor[1] = bp->colors[0].green / 65536.0; + bcolor[2] = bp->colors[0].blue / 65536.0; + bcolor[3] = 1.0; + if (wire) + glColor3f (0, 1, 0); + else + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor); + + glScalef (0.8, 0.8, 0.8); + p->nfaces = unit_teapot (6, wire); + p->nedges = p->nfaces * 3 / 2; + p->npoints = p->nfaces * 3; + p->logical_faces = p->nfaces; + p->logical_vertices = p->npoints; + } + else + { + glFrontFace (GL_CCW); + for (i = 0; i < p->nfaces; i++) + { + int j; + face *f = &p->faces[i]; + + if (f->color > 64 || f->color < 0) abort(); + if (wire) + glColor3f (0, 1, 0); + else + { + GLfloat bcolor[4]; + bcolor[0] = bp->colors[f->color].red / 65536.0; + bcolor[1] = bp->colors[f->color].green / 65536.0; + bcolor[2] = bp->colors[f->color].blue / 65536.0; + bcolor[3] = 1.0; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor); + } + + kludge_normal (f->npoints, f->points, p->points); + +# ifdef HAVE_TESS + gluTessBeginPolygon (tobj, 0); + gluTessBeginContour (tobj); + for (j = 0; j < f->npoints; j++) + { + point *pp = &p->points[f->points[j]]; + gluTessVertex (tobj, &pp->x, &pp->x); + } + gluTessEndContour (tobj); + gluTessEndPolygon (tobj); +# else /* !HAVE_TESS */ + glBegin (wire ? GL_LINE_LOOP : + f->npoints == 3 ? GL_TRIANGLES : + f->npoints == 4 ? GL_QUADS : + GL_POLYGON); + for (j = 0; j < f->npoints; j++) + { + point *pp = &p->points[f->points[j]]; + glVertex3f (pp->x, pp->y, pp->z); + } + glEnd(); +# endif /* !HAVE_TESS */ + } + } + glEndList (); + + mi->polygon_count += p->nfaces; +# ifdef HAVE_TESS + gluDeleteTess (tobj); +# endif +} + + +static void +construct_teapot (ModeInfo *mi) +{ + polyhedra_configuration *bp = &bps[MI_SCREEN(mi)]; + int n = bp->npolyhedra-1; + polyhedron *p = (polyhedron *) calloc (1, sizeof(*p)); + p->number = n; + p->wythoff = strdup("X00398|1984"); + p->name = strdup("Teapot"); + p->dual = strdup(""); + p->config = strdup("Melitta"); + p->group = strdup("Teapotahedral (Newell[1975])"); + p->class = strdup("Utah Teapotahedron"); + bp->polyhedra[n] = p; +} + + +ENTRYPOINT void +init_polyhedra (ModeInfo *mi) +{ + polyhedra_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + MI_IS_WIREFRAME(mi) = 0; + wire = 0; +# endif + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + bp->which = -1; + load_fonts (mi); + startup_blurb (mi); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + /* glEnable(GL_CULL_FACE); */ + + /* We need two-sided lighting for polyhedra where both sides of + a face are simultaneously visible (e.g., the "X-hemi-Y-hedrons".) + */ + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + { + double spin_speed = 2.0; + double wander_speed = 0.05; + double spin_accel = 0.2; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + bp->trackball = gltrackball_init (True); + } + + bp->npolyhedra = construct_polyhedra (&bp->polyhedra); + construct_teapot (mi); + + bp->object_list = glGenLists (1); + bp->change_to = -1; + + { + int x; + char c; + do_which = -1; + if (!strcasecmp (do_which_str, "random")) + ; + else if (1 == sscanf (do_which_str, " %d %c", &x, &c)) + { + if (x >= 0 && x < bp->npolyhedra) + do_which = x; + else + fprintf (stderr, + "%s: polyhedron %d does not exist: there are only %d.\n", + progname, x, bp->npolyhedra-1); + } + else if (*do_which_str) + { + char *s; + for (s = do_which_str; *s; s++) + if (*s == '-' || *s == '_') *s = ' '; + + for (x = 0; x < bp->npolyhedra; x++) + if (!strcasecmp (do_which_str, bp->polyhedra[x]->name) || + !strcasecmp (do_which_str, bp->polyhedra[x]->class) || + !strcasecmp (do_which_str, bp->polyhedra[x]->wythoff) || + !strcasecmp (do_which_str, bp->polyhedra[x]->config)) + { + do_which = x; + break; + } + if (do_which < 0) + { + fprintf (stderr, "%s: no such polyhedron: \"%s\"\n", + progname, do_which_str); + exit (1); + } + } + } + + new_polyhedron (mi); + reshape_polyhedra (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + +} + + +ENTRYPOINT void +draw_polyhedra (ModeInfo *mi) +{ + polyhedra_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + static const GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat bshiny = 128.0; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + if (bp->mode == 0 && do_which >= 0 && bp->change_to < 0) + ; + else if (bp->mode == 0) + { + if (bp->change_to >= 0) + bp->change_tick = 999, bp->last_change_time = 1; + if (bp->change_tick++ > 10) + { + time_t now = time((time_t *) 0); + if (bp->last_change_time == 0) bp->last_change_time = now; + bp->change_tick = 0; + if (!bp->button_down_p && now - bp->last_change_time >= duration) + { + bp->mode = 1; /* go out */ + bp->mode_tick = 20 / speed; + bp->last_change_time = now; + } + } + } + else if (bp->mode == 1) /* out */ + { + if (--bp->mode_tick <= 0) + { + new_polyhedron (mi); + bp->mode_tick = 20 / speed; + bp->mode = 2; /* go in */ + } + } + else if (bp->mode == 2) /* in */ + { + if (--bp->mode_tick <= 0) + bp->mode = 0; /* normal */ + } + else + abort(); + + glShadeModel(GL_FLAT); + glEnable(GL_NORMALIZE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 15); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + glScalef (2.0, 2.0, 2.0); + + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, bspec); + glMateriali (GL_FRONT_AND_BACK, GL_SHININESS, bshiny); + + if (bp->mode != 0) + { + GLfloat s = (bp->mode == 1 + ? bp->mode_tick / (20 / speed) + : ((20 / speed) - bp->mode_tick + 1) / (20 / speed)); + glScalef (s, s, s); + } + + glScalef (2, 2, 2); + glCallList (bp->object_list); + if (bp->mode == 0 && !bp->button_down_p) + draw_label (mi); /* print_texture_font can't go inside a display list */ + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Polyhedra", polyhedra) + +#endif /* USE_GL */ diff --git a/hacks/glx/polyhedra.c b/hacks/glx/polyhedra.c new file mode 100644 index 0000000..a7699c9 --- /dev/null +++ b/hacks/glx/polyhedra.c @@ -0,0 +1,2457 @@ +/***************************************************************************** + * #ident "Id: main.c,v 3.27 2002-01-06 16:23:01+02 rl Exp " + * kaleido + * + * Kaleidoscopic construction of uniform polyhedra + * Copyright (c) 1991-2002 Dr. Zvi Har'El + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by + * Dr. Zvi Har'El (http://www.math.technion.ac.il/~rl/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the author be held liable for any + * damages arising from the use of this software. + * + * Author: + * Dr. Zvi Har'El, + * Deptartment of Mathematics, + * Technion, Israel Institue of Technology, + * Haifa 32000, Israel. + * E-Mail: rl@math.technion.ac.il + * + * ftp://ftp.math.technion.ac.il/kaleido/ + * http://www.mathconsult.ch/showroom/unipoly/ + * + * Adapted for xscreensaver by Jamie Zawinski 25-Apr-2004 + * + ***************************************************************************** + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include +#include + +#include "polyhedra.h" + +extern const char *progname; + +#ifndef MAXLONG +#define MAXLONG 0x7FFFFFFF +#endif +#ifndef MAXDIGITS +#define MAXDIGITS 10 /* (int)log10((double)MAXLONG) + 1 */ +#endif + +#ifndef DBL_EPSILON +#define DBL_EPSILON 2.2204460492503131e-16 +#endif +#define BIG_EPSILON 3e-2 +#define AZ M_PI/7 /* axis azimuth */ +#define EL M_PI/17 /* axis elevation */ + +#define Err(x) do {\ + fprintf (stderr, "%s: %s\n", progname, (x)); \ + exit (1); \ + } while(0) + +#define Free(lvalue) do {\ + if (lvalue) {\ + free((char*) lvalue);\ + lvalue=0;\ + }\ + } while(0) + +#define Matfree(lvalue,n) do {\ + if (lvalue) \ + matfree((char*) lvalue, n);\ + lvalue=0;\ + } while(0) + +#define Malloc(lvalue,n,type) do {\ + if (!(lvalue = (type*) calloc((n), sizeof(type)))) \ + abort();\ + } while(0) + +#define Realloc(lvalue,n,type) do {\ + if (!(lvalue = (type*) realloc(lvalue, (n) * sizeof(type)))) \ + abort();\ + } while(0) + +#define Calloc(lvalue,n,type) do {\ + if (!(lvalue = (type*) calloc(n, sizeof(type))))\ + abort();\ + } while(0) + +#define Matalloc(lvalue,n,m,type) do {\ + if (!(lvalue = (type**) matalloc(n, (m) * sizeof(type))))\ + abort();\ + } while(0) + +#define Sprintfrac(lvalue,x) do {\ + if (!(lvalue=sprintfrac(x)))\ + return 0;\ + } while(0) + +#define numerator(x) (frac(x), frax.n) +#define denominator(x) (frac(x), frax.d) +#define compl(x) (frac(x), (double) frax.n / (frax.n-frax.d)) + +typedef struct { + double x, y, z; +} Vector; + +typedef struct { + /* NOTE: some of the int's can be replaced by short's, char's, + or even bit fields, at the expense of readability!!!*/ + int index; /* index to the standard list, the array uniform[] */ + int N; /* number of faces types (atmost 5)*/ + int M; /* vertex valency (may be big for dihedral polyhedra) */ + int V; /* vertex count */ + int E; /* edge count */ + int F; /* face count */ + int D; /* density */ + int chi; /* Euler characteristic */ + int g; /* order of symmetry group */ + int K; /* symmetry type: D=2, T=3, O=4, I=5 */ + int hemi;/* flag hemi polyhedron */ + int onesided;/* flag onesided polyhedron */ + int even; /* removed face in pqr| */ + int *Fi; /* face counts by type (array N)*/ + int *rot; /* vertex configuration (array M of 0..N-1) */ + int *snub; /* snub triangle configuration (array M of 0..1) */ + int *firstrot; /* temporary for vertex generation (array V) */ + int *anti; /* temporary for direction of ideal vertices (array E) */ + int *ftype; /* face types (array F) */ + int **e; /* edges (matrix 2 x E of 0..V-1)*/ + int **dual_e; /* dual edges (matrix 2 x E of 0..F-1)*/ + int **incid; /* vertex-face incidence (matrix M x V of 0..F-1)*/ + int **adj; /* vertex-vertex adjacency (matrix M x V of 0..V-1)*/ + double p[4]; /* p, q and r; |=0 */ + double minr; /* smallest nonzero inradius */ + double gon; /* basis type for dihedral polyhedra */ + double *n; /* number of side of a face of each type (array N) */ + double *m; /* number of faces at a vertex of each type (array N) */ + double *gamma; /* fundamental angles in radians (array N) */ + char *polyform; /* printable Wythoff symbol */ + char *config; /* printable vertex configuration */ + char *group; /* printable group name */ + char *name; /* name, standard or manifuctured */ + char *dual_name; /* dual name, standard or manifuctured */ + char *class; + char *dual_class; + Vector *v; /* vertex coordinates (array V) */ + Vector *f; /* face coordinates (array F)*/ +} Polyhedron; + +typedef struct { + long n,d; +} Fraction; + +static Polyhedron *polyalloc(void); +static Vector rotate(Vector vertex, Vector axis, double angle); + +static Vector sum3(Vector a, Vector b, Vector c); +static Vector scale(double k, Vector a); +static Vector sum(Vector a, Vector b); +static Vector diff(Vector a, Vector b); +static Vector pole (double r, Vector a, Vector b, Vector c); +static Vector cross(Vector a, Vector b); +static double dot(Vector a, Vector b); +static int same(Vector a, Vector b, double epsilon); + +static char *sprintfrac(double x); + +static void frac(double x); +static void matfree(void *mat, int rows); +static void *matalloc(int rows, int row_size); + +static Fraction frax; + + +static const struct { + char *Wythoff, *name, *dual, *group, *class, *dual_class; + short Coxeter, Wenninger; +} uniform[] = { + + /**************************************************************************** + * Dihedral Schwarz Triangles (D5 only) + ***************************************************************************/ + + /* 0 */ {"2 5|2", "Pentagonal Prism", + "Pentagonal Dipyramid", + "Dihedral (D[1/5])", + "", + "", + 0, 0}, + + /* 2 */ {"|2 2 5", "Pentagonal Antiprism", + "Pentagonal Deltohedron", + "Dihedral (D[1/5])", + "", + "", + 0, 0}, + /* (2 2 5/2) (D2/5) */ + /* 4 */ {"2 5/2|2", "Pentagrammic Prism", + "Pentagrammic Dipyramid", + "Dihedral (D[2/5])", + "", + "", + 0, 0}, + + /* 6 */ {"|2 2 5/2", "Pentagrammic Antiprism", + "Pentagrammic Deltohedron", + "Dihedral (D[2/5])", + "", + "", + 0, 0}, + /* (5/3 2 2) (D3/5) */ + + /* 8 */ {"|2 2 5/3", "Pentagrammic Crossed Antiprism", + "Pentagrammic Concave Deltohedron", + "Dihedral (D[3/5])", + "", + "", + 0, 0}, + + /**************************************************************************** + * Tetrahedral + ***************************************************************************/ + + /* (2 3 3) (T1) */ + /* 10 */ {"3|2 3", "Tetrahedron", + "Tetrahedron", + "Tetrahedral (T[1])", + "Platonic Solid", + "Platonic Solid", + 15, 1}, + + /* 12 */ {"2 3|3", "Truncated Tetrahedron", + "Triakistetrahedron", + "Tetrahedral (T[1])", + "Archimedean Solid", + "Catalan Solid", + 16, 6}, + /* (3/2 3 3) (T2) */ + /* 14 */ {"3/2 3|3", "Octahemioctahedron", + "Octahemioctacron", + "Tetrahedral (T[2])", + "", + "", + 37, 68}, + + /* (3/2 2 3) (T3) */ + /* 16 */ {"3/2 3|2", "Tetrahemihexahedron", + "Tetrahemihexacron", + "Tetrahedral (T[3])", + "", + "", + 36, 67}, + + /**************************************************************************** + * Octahedral + ***************************************************************************/ + + /* (2 3 4) (O1) */ + /* 18 */ {"4|2 3", "Octahedron", + "Cube", + "Octahedral (O[1])", + "Platonic Solid", + "Platonic Solid", + 17, 2}, + + /* 20 */ {"3|2 4", "Cube", + "Octahedron", + "Octahedral (O[1])", + "Platonic Solid", + "Platonic Solid", + 18, 3}, + + /* 22 */ {"2|3 4", "Cuboctahedron", + "Rhombic Dodecahedron", + "Octahedral (O[1])", + "Archimedean Solid", + "Catalan Solid", + 19, 11}, + + /* 24 */ {"2 4|3", "Truncated Octahedron", + "Tetrakishexahedron", + "Octahedral (O[1])", + "Archimedean Solid", + "Catalan Solid", + 20, 7}, + + /* 26 */ {"2 3|4", "Truncated Cube", + "Triakisoctahedron", + "Octahedral (O[1])", + "Archimedean Solid", + "Catalan Solid", + 21, 8}, + + /* 28 */ {"3 4|2", "Rhombicuboctahedron", + "Deltoidal Icositetrahedron", + "Octahedral (O[1])", + "Archimedean Solid", + "Catalan Solid", + 22, 13}, + + /* 30 */ {"2 3 4|", "Truncated Cuboctahedron", + "Disdyakisdodecahedron", + "Octahedral (O[1])", + "Archimedean Solid", + "Catalan Solid", + 23, 15}, + + /* 32, 33, 66, and 67 are chiral, existing in both left and right handed + (enantiomeric) forms, so it would make sense to display both versions. + */ + + /* 32 */ {"|2 3 4", "Snub Cube", + "Pentagonal Icositetrahedron", + "Octahedral (O[1]), Chiral", + "Archimedean Solid", + "Catalan Solid", + 24, 17}, + /* (3/2 4 4) (O2b) */ + + /* 34 */ {"3/2 4|4", "Small Cubicuboctahedron", + "Small Hexacronic Icositetrahedron", + "Octahedral (O[2b])", + "", + "", + 38, 69}, + /* (4/3 3 4) (O4) */ + + /* 36 */ {"3 4|4/3", "Great Cubicuboctahedron", + "Great Hexacronic Icositetrahedron", + "Octahedral (O[4])", + "", + "", + 50, 77}, + + /* 38 */ {"4/3 4|3", "Cubohemioctahedron", + "Hexahemioctacron", + "Octahedral (O[4])", + "", + "", + 51, 78}, + + /* 40 */ {"4/3 3 4|", "Cubitruncated Cuboctahedron", + "Tetradyakishexahedron", + "Octahedral (O[4])", + "", + "", + 52, 79}, + /* (3/2 2 4) (O5) */ + + /* 42 */ {"3/2 4|2", "Great Rhombicuboctahedron", + "Great Deltoidal Icositetrahedron", + "Octahedral (O[5])", + "", + "", + 59, 85}, + + /* 44 */ {"3/2 2 4|", "Small Rhombihexahedron", + "Small Rhombihexacron", + "Octahedral (O[5])", + "", + "", + 60, 86}, + /* (4/3 2 3) (O7) */ + + /* 46 */ {"2 3|4/3", "Stellated Truncated Hexahedron", + "Great Triakisoctahedron", + "Octahedral (O[7])", + "", + "", + 66, 92}, + + /* 48 */ {"4/3 2 3|", "Great Truncated Cuboctahedron", + "Great Disdyakisdodecahedron", + "Octahedral (O[7])", + "", + "", + 67, 93}, + /* (4/3 3/2 2) (O11) */ + + /* 50 */ {"4/3 3/2 2|", "Great Rhombihexahedron", + "Great Rhombihexacron", + "Octahedral (O[11])", + "", + "", + 82, 103}, + + /**************************************************************************** + * Icosahedral + ***************************************************************************/ + + /* (2 3 5) (I1) */ + /* 52 */ {"5|2 3", "Icosahedron", + "Dodecahedron", + "Icosahedral (I[1])", + "Platonic Solid", + "Platonic Solid", + 25, 4}, + + /* 54 */ {"3|2 5", "Dodecahedron", + "Icosahedron", + "Icosahedral (I[1])", + "Platonic Solid", + "Platonic Solid", + 26, 5}, + + /* 56 */ {"2|3 5", "Icosidodecahedron", + "Rhombic Triacontahedron", + "Icosahedral (I[1])", + "Archimedean Solid", + "Catalan Solid", + 28, 12}, + + /* 58 */ {"2 5|3", "Truncated Icosahedron", + "Pentakisdodecahedron", + "Icosahedral (I[1])", + "Archimedean Solid", + "Catalan Solid", + 27, 9}, + + /* 60 */ {"2 3|5", "Truncated Dodecahedron", + "Triakisicosahedron", + "Icosahedral (I[1])", + "Archimedean Solid", + "Catalan Solid", + 29, 10}, + + /* 62 */ {"3 5|2", "Rhombicosidodecahedron", + "Deltoidal Hexecontahedron", + "Icosahedral (I[1])", + "Archimedean Solid", + "Catalan Solid", + 30, 14}, + + /* 64 */ {"2 3 5|", "Truncated Icosidodecahedron", + "Disdyakistriacontahedron", + "Icosahedral (I[1])", + "Archimedean Solid", + "Catalan Solid", + 31, 16}, + + /* 32, 33, 66, and 67 are chiral, existing in both left and right handed + (enantiomeric) forms, so it would make sense to display both versions. + */ + + /* 66 */ {"|2 3 5", "Snub Dodecahedron", + "Pentagonal Hexecontahedron", + "Icosahedral (I[1]), Chiral", + "Archimedean Solid", + "Catalan Solid", + 32, 18}, + /* (5/2 3 3) (I2a) */ + + /* 68 */ {"3|5/2 3", "Small Ditrigonal Icosidodecahedron", + "Small Triambic Icosahedron", + "Icosahedral (I[2a])", + "", + "", + 39, 70}, + + /* 70 */ {"5/2 3|3", "Small Icosicosidodecahedron", + "Small Icosacronic Hexecontahedron", + "Icosahedral (I[2a])", + "", + "", + 40, 71}, + + /* 72 */ {"|5/2 3 3", "Small Snub Icosicosidodecahedron", + "Small Hexagonal Hexecontahedron", + "Icosahedral (I[2a])", + "", + "", + 41, 110}, + /* (3/2 5 5) (I2b) */ + + /* 74 */ {"3/2 5|5", "Small Dodecicosidodecahedron", + "Small Dodecacronic Hexecontahedron", + "Icosahedral (I[2b])", + "", + "", + 42, 72}, + /* (2 5/2 5) (I3) */ + + /* 76 */ {"5|2 5/2", "Small Stellated Dodecahedron", + "Great Dodecahedron", + "Icosahedral (I[3])", + "Kepler-Poinsot Solid", + "Kepler-Poinsot Solid", + 43, 20}, + + /* 78 */ {"5/2|2 5", "Great Dodecahedron", + "Small Stellated Dodecahedron", + "Icosahedral (I[3])", + "Kepler-Poinsot Solid", + "Kepler-Poinsot Solid", + 44, 21}, + + /* 80 */ {"2|5/2 5", "Great Dodecadodecahedron", + "Medial Rhombic Triacontahedron", + "Icosahedral (I[3])", + "", + "", + 45, 73}, + + /* 82 */ {"2 5/2|5", "Truncated Great Dodecahedron", + "Small Stellapentakisdodecahedron", + "Icosahedral (I[3])", + "", + "", + 47, 75}, + + /* 84 */ {"5/2 5|2", "Rhombidodecadodecahedron", + "Medial Deltoidal Hexecontahedron", + "Icosahedral (I[3])", + "", + "", + 48, 76}, + + /* 86 */ {"2 5/2 5|", "Small Rhombidodecahedron", + "Small Rhombidodecacron", + "Icosahedral (I[3])", + "", + "", + 46, 74}, + + /* 88 */ {"|2 5/2 5", "Snub Dodecadodecahedron", + "Medial Pentagonal Hexecontahedron", + "Icosahedral (I[3])", + "", + "", + 49, 111}, + /* (5/3 3 5) (I4) */ + + /* 90 */ {"3|5/3 5", "Ditrigonal Dodecadodecahedron", + "Medial Triambic Icosahedron", + "Icosahedral (I[4])", + "", + "", + 53, 80}, + + /* 92 */ {"3 5|5/3", "Great Ditrigonal Dodecicosidodecahedron", + "Great Ditrigonal Dodecacronic Hexecontahedron", + "Icosahedral (I[4])", + "", + "", + 54, 81}, + + /* 94 */ {"5/3 3|5", "Small Ditrigonal Dodecicosidodecahedron", + "Small Ditrigonal Dodecacronic Hexecontahedron", + "Icosahedral (I[4])", + "", + "", + 55, 82}, + + /* 96 */ {"5/3 5|3", "Icosidodecadodecahedron", + "Medial Icosacronic Hexecontahedron", + "Icosahedral (I[4])", + "", + "", + 56, 83}, + + /* 98 */ {"5/3 3 5|", "Icositruncated Dodecadodecahedron", + "Tridyakisicosahedron", + "Icosahedral (I[4])", + "", + "", + 57, 84}, + + /* 100 */ {"|5/3 3 5", "Snub Icosidodecadodecahedron", + "Medial Hexagonal Hexecontahedron", + "Icosahedral (I[4])", + "", + "", + 58, 112}, + /* (3/2 3 5) (I6b) */ + + /* 102 */ {"3/2|3 5", "Great Ditrigonal Icosidodecahedron", + "Great Triambic Icosahedron", + "Icosahedral (I[6b])", + "", + "", + 61, 87}, + + /* 104 */ {"3/2 5|3", "Great Icosicosidodecahedron", + "Great Icosacronic Hexecontahedron", + "Icosahedral (I[6b])", + "", + "", + 62, 88}, + + /* 106 */ {"3/2 3|5", "Small Icosihemidodecahedron", + "Small Icosihemidodecacron", + "Icosahedral (I[6b])", + "", + "", + 63, 89}, + + /* 108 */ {"3/2 3 5|", "Small Dodecicosahedron", + "Small Dodecicosacron", + "Icosahedral (I[6b])", + "", + "", + 64, 90}, + /* (5/4 5 5) (I6c) */ + + /* 110 */ {"5/4 5|5", "Small Dodecahemidodecahedron", + "Small Dodecahemidodecacron", + "Icosahedral (I[6c])", + "", + "", + 65, 91}, + /* (2 5/2 3) (I7) */ + + /* 112 */ {"3|2 5/2", "Great Stellated Dodecahedron", + "Great Icosahedron", + "Icosahedral (I[7])", + "Kepler-Poinsot Solid", + "Kepler-Poinsot Solid", + 68, 22}, + + /* 114 */ {"5/2|2 3", "Great Icosahedron", + "Great Stellated Dodecahedron", + "Icosahedral (I[7])", + "Kepler-Poinsot Solid", + "Kepler-Poinsot Solid", + 69, 41}, + + /* 116 */ {"2|5/2 3", "Great Icosidodecahedron", + "Great Rhombic Triacontahedron", + "Icosahedral (I[7])", + "", + "", + 70, 94}, + + /* 118 */ {"2 5/2|3", "Great Truncated Icosahedron", + "Great Stellapentakisdodecahedron", + "Icosahedral (I[7])", + "", + "", + 71, 95}, + + /* 120 */ {"2 5/2 3|", "Rhombicosahedron", + "Rhombicosacron", + "Icosahedral (I[7])", + "", + "", + 72, 96}, + + /* 122 */ {"|2 5/2 3", "Great Snub Icosidodecahedron", + "Great Pentagonal Hexecontahedron", + "Icosahedral (I[7])", + "", + "", + 73, 113}, + /* (5/3 2 5) (I9) */ + + /* 124 */ {"2 5|5/3", "Small Stellated Truncated Dodecahedron", + "Great Pentakisdodecahedron", + "Icosahedral (I[9])", + "", + "", + 74, 97}, + + /* 126 */ {"5/3 2 5|", "Truncated Dodecadodecahedron", + "Medial Disdyakistriacontahedron", + "Icosahedral (I[9])", + "", + "", + 75, 98}, + + /* 128 */ {"|5/3 2 5", "Inverted Snub Dodecadodecahedron", + "Medial Inverted Pentagonal Hexecontahedron", + "Icosahedral (I[9])", + "", + "", + 76, 114}, + /* (5/3 5/2 3) (I10a) */ + + /* 130 */ {"5/2 3|5/3", "Great Dodecicosidodecahedron", + "Great Dodecacronic Hexecontahedron", + "Icosahedral (I[10a])", + "", + "", + 77, 99}, + + /* 132 */ {"5/3 5/2|3", "Small Dodecahemicosahedron", + "Small Dodecahemicosacron", + "Icosahedral (I[10a])", + "", + "", + 78, 100}, + + /* 134 */ {"5/3 5/2 3|", "Great Dodecicosahedron", + "Great Dodecicosacron", + "Icosahedral (I[10a])", + "", + "", + 79, 101}, + + /* 136 */ {"|5/3 5/2 3", "Great Snub Dodecicosidodecahedron", + "Great Hexagonal Hexecontahedron", + "Icosahedral (I[10a])", + "", + "", + 80, 115}, + /* (5/4 3 5) (I10b) */ + + /* 138 */ {"5/4 5|3", "Great Dodecahemicosahedron", + "Great Dodecahemicosacron", + "Icosahedral (I[10b])", + "", + "", + 81, 102}, + /* (5/3 2 3) (I13) */ + + /* 140 */ {"2 3|5/3", "Great Stellated Truncated Dodecahedron", + "Great Triakisicosahedron", + "Icosahedral (I[13])", + "", + "", + 83, 104}, + + /* 142 */ {"5/3 3|2", "Great Rhombicosidodecahedron", + "Great Deltoidal Hexecontahedron", + "Icosahedral (I[13])", + "", + "", + 84, 105}, + + /* 144 */ {"5/3 2 3|", "Great Truncated Icosidodecahedron", + "Great Disdyakistriacontahedron", + "Icosahedral (I[13])", + "", + "", + 87, 108}, + + /* 146 */ {"|5/3 2 3", "Great Inverted Snub Icosidodecahedron", + "Great Inverted Pentagonal Hexecontahedron", + "Icosahedral (I[13])", + "", + "", + 88, 116}, + /* (5/3 5/3 5/2) (I18a) */ + + /* 148 */ {"5/3 5/2|5/3", "Great Dodecahemidodecahedron", + "Great Dodecahemidodecacron", + "Icosahedral (I[18a])", + "", + "", + 86, 107}, + /* (3/2 5/3 3) (I18b) */ + + /* 150 */ {"3/2 3|5/3", "Great Icosihemidodecahedron", + "Great Icosihemidodecacron", + "Icosahedral (I[18b])", + "", + "", + 85, 106}, + /* (3/2 3/2 5/3) (I22) */ + + /* 152 */ {"|3/2 3/2 5/2","Small Retrosnub Icosicosidodecahedron", + "Small Hexagrammic Hexecontahedron", + "Icosahedral (I[22])", + "", + "", + 91, 118}, + /* (3/2 5/3 2) (I23) */ + + /* 154 */ {"3/2 5/3 2|", "Great Rhombidodecahedron", + "Great Rhombidodecacron", + "Icosahedral (I[23])", + "", + "", + 89, 109}, + + /* 156 */ {"|3/2 5/3 2", "Great Retrosnub Icosidodecahedron", + "Great Pentagrammic Hexecontahedron", + "Icosahedral (I[23])", + "", + "", + 90, 117}, + + /**************************************************************************** + * Last But Not Least + ***************************************************************************/ + + /* 158 */ {"3/2 5/3 3 5/2", "Great Dirhombicosidodecahedron", + "Great Dirhombicosidodecacron", + "Non-Wythoffian", + "", + "", + 92, 119} +}; + +static int last_uniform = sizeof (uniform) / sizeof (uniform[0]); + + + +static int unpacksym(const char *sym, Polyhedron *P); +static int moebius(Polyhedron *P); +static int decompose(Polyhedron *P); +static int guessname(Polyhedron *P); +static int newton(Polyhedron *P, int need_approx); +static int exceptions(Polyhedron *P); +static int count(Polyhedron *P); +static int configuration(Polyhedron *P); +static int vertices(Polyhedron *P); +static int faces(Polyhedron *P); +static int edgelist(Polyhedron *P); + +static Polyhedron * +kaleido(const char *sym, + int need_coordinates, int need_edgelist, int need_approx, + int just_list) +{ + Polyhedron *P; + /* + * Allocate a Polyhedron structure P. + */ + if (!(P = polyalloc())) + return 0; + /* + * Unpack input symbol into P. + */ + if (!unpacksym(sym, P)) + return 0; + /* + * Find Mebius triangle, its density and Euler characteristic. + */ + if (!moebius(P)) + return 0; + /* + * Decompose Schwarz triangle. + */ + if (!decompose(P)) + return 0; + /* + * Find the names of the polyhedron and its dual. + */ + if (!guessname(P)) + return 0; + if (just_list) + return P; + /* + * Solve Fundamental triangles, optionally printing approximations. + */ + if (!newton(P,need_approx)) + return 0; + /* + * Deal with exceptional polyhedra. + */ + if (!exceptions(P)) + return 0; + /* + * Count edges and faces, update density and characteristic if needed. + */ + if (!count(P)) + return 0; + /* + * Generate printable vertex configuration. + */ + if (!configuration(P)) + return 0; + /* + * Compute coordinates. + */ + if (!need_coordinates && !need_edgelist) + return P; + if (!vertices(P)) + return 0; + if (!faces (P)) + return 0; + /* + * Compute edgelist. + */ + if (!need_edgelist) + return P; + if (!edgelist(P)) + return 0; + return P; +} + +/* + * Allocate a blank Polyhedron structure and initialize some of its nonblank + * fields. + * + * Array and matrix field are allocated when needed. + */ +static Polyhedron * +polyalloc() +{ + Polyhedron *P; + Calloc(P, 1, Polyhedron); + P->index = -1; + P->even = -1; + P->K = 2; + return P; +} + +/* + * Free the struture allocated by polyalloc(), as well as all the array and + * matrix fields. + */ +static void +polyfree(Polyhedron *P) +{ + Free(P->Fi); + Free(P->n); + Free(P->m); + Free(P->gamma); + Free(P->rot); + Free(P->snub); + Free(P->firstrot); + Free(P->anti); + Free(P->ftype); + Free(P->polyform); + Free(P->config); + if (P->index < 0) { + Free(P->name); + Free(P->dual_name); + } + Free(P->v); + Free(P->f); + Matfree(P->e, 2); + Matfree(P->dual_e, 2); + Matfree(P->incid, P->M); + Matfree(P->adj, P->M); + free(P); +} + +static void * +matalloc(int rows, int row_size) +{ + void **mat; + int i = 0; + if (!(mat = malloc(rows * sizeof (void *)))) + return 0; + while ((mat[i] = malloc(row_size)) && ++i < rows) + ; + if (i == rows) + return (void *)mat; + while (--i >= 0) + free(mat[i]); + free(mat); + return 0; +} + +static void +matfree(void *mat, int rows) +{ + while (--rows >= 0) + free(((void **)mat)[rows]); + free(mat); +} + +/* + * compute the mathematical modulus function. + */ +static int +mod (int i, int j) +{ + return (i%=j)>=0?i:j<0?i-j:i+j; +} + + +/* + * Find the numerator and the denominator using the Euclidean algorithm. + */ +static void +frac(double x) +{ + static const Fraction zero = {0,1}, inf = {1,0}; + Fraction r0, r; + long f; + double s = x; + r = zero; + frax = inf; + for (;;) { + if (fabs(s) > (double) MAXLONG) + return; + f = (long) floor (s); + r0 = r; + r = frax; + frax.n = frax.n * f + r0.n; + frax.d = frax.d * f + r0.d; + if (x == (double)frax.n/(double)frax.d) + return; + s = 1 / (s - f); + } +} + + +/* + * Unpack input symbol: Wythoff symbol or an index to uniform[]. The symbol is + * a # followed by a number, or a three fractions and a bar in some order. We + * allow no bars only if it result from the input symbol #80. + */ +static int +unpacksym(const char *sym, Polyhedron *P) +{ + int i = 0, n, d, bars = 0; + char c; + while ((c = *sym++) && isspace(c)) + ; + if (!c) Err("no data"); + if (c == '#') { + while ((c = *sym++) && isspace(c)) + ; + if (!c) + Err("no digit after #"); + if (!isdigit(c)) + Err("not a digit"); + n = c - '0'; + while ((c = *sym++) && isdigit(c)) + n = n * 10 + c - '0'; + if (!n) + Err("zero index"); + if (n > last_uniform) + Err("index too big"); + sym--; + while ((c = *sym++) && isspace(c)) + ; + if (c) + Err("data exceeded"); + sym = uniform[P->index = n - 1].Wythoff; + } else + sym--; + + for (;;) { + while ((c = *sym++) && isspace(c)) + ; + if (!c) { + if (i == 4 && (bars || P->index == last_uniform - 1)) + return 1; + if (!bars) + Err("no bars"); + Err("not enough fractions"); + } + if (i == 4) + Err("data exceeded"); + if (c == '|'){ + if (++bars > 1) + Err("too many bars"); + P->p[i++] = 0; + continue; + } + if (!isdigit(c)) + Err("not a digit"); + n = c - '0'; + while ((c = *sym++) && isdigit(c)) + n = n * 10 + c - '0'; + if (c && isspace (c)) + while ((c = *sym++) && isspace(c)) + ; + if (c != '/') { + sym--; + if ((P->p[i++] = n) <= 1) + Err("fraction<=1"); + continue; + } + while ((c = *sym++) && isspace(c)) + ; + if (!c || !isdigit(c)) + return 0; + d = c - '0'; + while ((c = *sym++) && isdigit(c)) + d = d * 10 + c - '0'; + if (!d) + Err("zero denominator"); + sym--; + if ((P->p[i++] = (double) n / d) <= 1) + Err("fraction<=1"); + } +} + +/* + * Using Wythoff symbol (p|qr, pq|r, pqr| or |pqr), find the Moebius triangle + * (2 3 K) (or (2 2 n)) of the Schwarz triangle (pqr), the order g of its + * symmetry group, its Euler characteristic chi, and its covering density D. + * g is the number of copies of (2 3 K) covering the sphere, i.e., + * + * g * pi * (1/2 + 1/3 + 1/K - 1) = 4 * pi + * + * D is the number of times g copies of (pqr) cover the sphere, i.e. + * + * D * 4 * pi = g * pi * (1/p + 1/q + 1/r - 1) + * + * chi is V - E + F, where F = g is the number of triangles, E = 3*g/2 is the + * number of triangle edges, and V = Vp+ Vq+ Vr, with Vp = g/(2*np) being the + * number of vertices with angle pi/p (np is the numerator of p). + */ +static int +moebius(Polyhedron *P) +{ + int twos = 0, j, len = 1; + /* + * Arrange Wythoff symbol in a presentable form. In the same time check the + * restrictions on the three fractions: They all have to be greater then one, + * and the numerators 4 or 5 cannot occur together. We count the ocurrences + * of 2 in `two', and save the largest numerator in `P->K', since they + * reflect on the symmetry group. + */ + P->K = 2; + if (P->index == last_uniform - 1) { + Malloc(P->polyform, ++len, char); + strcpy(P->polyform, "|"); + } else + Calloc(P->polyform, len, char); + for (j = 0; j < 4; j++) { + if (P->p[j]) { + char *s; + Sprintfrac(s, P->p[j]); + if (j && P->p[j-1]) { + Realloc(P->polyform, len += strlen (s) + 1, char); + strcat(P->polyform, " "); + } else + Realloc (P->polyform, len += strlen (s), char); + strcat(P->polyform, s); + free(s); + if (P->p[j] != 2) { + int k; + if ((k = numerator (P->p[j])) > P->K) { + if (P->K == 4) + break; + P->K = k; + } else if (k < P->K && k == 4) + break; + } else + twos++; + } else { + Realloc(P->polyform, ++len, char); + strcat(P->polyform, "|"); + } + } + /* + * Find the symmetry group P->K (where 2, 3, 4, 5 represent the dihedral, + * tetrahedral, octahedral and icosahedral groups, respectively), and its + * order P->g. + */ + if (twos >= 2) {/* dihedral */ + P->g = 4 * P->K; + P->K = 2; + } else { + if (P->K > 5) + Err("numerator too large"); + P->g = 24 * P->K / (6 - P->K); + } + /* + * Compute the nominal density P->D and Euler characteristic P->chi. + * In few exceptional cases, these values will be modified later. + */ + if (P->index != last_uniform - 1) { + int i; + P->D = P->chi = - P->g; + for (j = 0; j < 4; j++) if (P->p[j]) { + P->chi += i = P->g / numerator(P->p[j]); + P->D += i * denominator(P->p[j]); + } + P->chi /= 2; + P->D /= 4; + if (P->D <= 0) + Err("nonpositive density"); + } + return 1; +} + +/* + * Decompose Schwarz triangle into N right triangles and compute the vertex + * count V and the vertex valency M. V is computed from the number g of + * Schwarz triangles in the cover, divided by the number of triangles which + * share a vertex. It is halved for one-sided polyhedra, because the + * kaleidoscopic construction really produces a double orientable covering of + * such polyhedra. All q' q|r are of the "hemi" type, i.e. have equatorial {2r} + * faces, and therefore are (except 3/2 3|3 and the dihedra 2 2|r) one-sided. A + * well known example is 3/2 3|4, the "one-sided heptahedron". Also, all p q r| + * with one even denominator have a crossed parallelogram as a vertex figure, + * and thus are one-sided as well. + */ +static int +decompose(Polyhedron *P) +{ + int j, J, *s, *t; + if (!P->p[1]) { /* p|q r */ + P->N = 2; + P->M = 2 * numerator(P->p[0]); + P->V = P->g / P->M; + Malloc(P->n, P->N, double); + Malloc(P->m, P->N, double); + Malloc(P->rot, P->M, int); + s = P->rot; + for (j = 0; j < 2; j++) { + P->n[j] = P->p[j+2]; + P->m[j] = P->p[0]; + } + for (j = P->M / 2; j--;) { + *s++ = 0; + *s++ = 1; + } + } else if (!P->p[2]) { /* p q|r */ + P->N = 3; + P->M = 4; + P->V = P->g / 2; + Malloc(P->n, P->N, double); + Malloc(P->m, P->N, double); + Malloc(P->rot, P->M, int); + s = P->rot; + P->n[0] = 2 * P->p[3]; + P->m[0] = 2; + for (j = 1; j < 3; j++) { + P->n[j] = P->p[j-1]; + P->m[j] = 1; + *s++ = 0; + *s++ = j; + } + if (fabs(P->p[0] - compl (P->p[1])) < DBL_EPSILON) {/* p = q' */ + /* P->p[0]==compl(P->p[1]) should work. However, MSDOS + * yeilds a 7e-17 difference! Reported by Jim Buddenhagen + * */ + P->hemi = 1; + P->D = 0; + if (P->p[0] != 2 && !(P->p[3] == 3 && (P->p[0] == 3 || + P->p[1] == 3))) { + P->onesided = 1; + P->V /= 2; + P->chi /= 2; + } + } + } else if (!P->p[3]) { /* p q r| */ + P->M = P->N = 3; + P->V = P->g; + Malloc(P->n, P->N, double); + Malloc(P->m, P->N, double); + Malloc(P->rot, P->M, int); + s = P->rot; + for (j = 0; j < 3; j++) { + if (!(denominator(P->p[j]) % 2)) { + /* what happens if there is more then one even denominator? */ + if (P->p[(j+1)%3] != P->p[(j+2)%3]) { /* needs postprocessing */ + P->even = j;/* memorize the removed face */ + P->chi -= P->g / numerator(P->p[j]) / 2; + P->onesided = 1; + P->D = 0; + } else {/* for p = q we get a double 2 2r|p */ + /* noted by Roman Maeder for 4 4 3/2| */ + /* Euler characteristic is still wrong */ + P->D /= 2; + } + P->V /= 2; + } + P->n[j] = 2 * P->p[j]; + P->m[j] = 1; + *s++ = j; + } + } else { /* |p q r - snub polyhedron */ + P->N = 4; + P->M = 6; + P->V = P->g / 2;/* Only "white" triangles carry a vertex */ + Malloc(P->n, P->N, double); + Malloc(P->m, P->N, double); + Malloc(P->rot, P->M, int); + Malloc(P->snub, P->M, int); + s = P->rot; + t = P->snub; + P->m[0] = P->n[0] = 3; + for (j = 1; j < 4; j++) { + P->n[j] = P->p[j]; + P->m[j] = 1; + *s++ = 0; + *s++ = j; + *t++ = 1; + *t++ = 0; + } + } + /* + * Sort the fundamental triangles (using bubble sort) according to decreasing + * n[i], while pushing the trivial triangles (n[i] = 2) to the end. + */ + J = P->N - 1; + while (J) { + int last; + last = J; + J = 0; + for (j = 0; j < last; j++) { + if ((P->n[j] < P->n[j+1] || P->n[j] == 2) && P->n[j+1] != 2) { + int i; + double temp; + temp = P->n[j]; + P->n[j] = P->n[j+1]; + P->n[j+1] = temp; + temp = P->m[j]; + P->m[j] = P->m[j+1]; + P->m[j+1] = temp; + for (i = 0; i < P->M; i++) { + if (P->rot[i] == j) + P->rot[i] = j+1; + else if (P->rot[i] == j+1) + P->rot[i] = j; + } + if (P->even != -1) { + if (P->even == j) + P->even = j+1; + else if (P->even == j+1) + P->even = j; + } + J = j; + } + } + } + /* + * Get rid of repeated triangles. + */ + for (J = 0; J < P->N && P->n[J] != 2;J++) { + int k, i; + for (j = J+1; j < P->N && P->n[j]==P->n[J]; j++) + P->m[J] += P->m[j]; + k = j - J - 1; + if (k) { + for (i = j; i < P->N; i++) { + P->n[i - k] = P->n[i]; + P->m[i - k] = P->m[i]; + } + P->N -= k; + for (i = 0; i < P->M; i++) { + if (P->rot[i] >= j) + P->rot[i] -= k; + else if (P->rot[i] > J) + P->rot[i] = J; + } + if (P->even >= j) + P->even -= k; + } + } + /* + * Get rid of trivial triangles. + */ + if (!J) + J = 1; /* hosohedron */ + if (J < P->N) { + int i; + P->N = J; + for (i = 0; i < P->M; i++) { + if (P->rot[i] >= P->N) { + for (j = i + 1; j < P->M; j++) { + P->rot[j-1] = P->rot[j]; + if (P->snub) + P->snub[j-1] = P->snub[j]; + } + P->M--; + } + } + } + /* + * Truncate arrays + */ + Realloc(P->n, P->N, double); + Realloc(P->m, P->N, double); + Realloc(P->rot, P->M, int); + if (P->snub) + Realloc(P->snub, P->M, int); + return 1; +} + + +static int dihedral(Polyhedron *P, const char *name, const char *dual_name); + + +/* + * Get the polyhedron name, using standard list or guesswork. Ideally, we + * should try to locate the Wythoff symbol in the standard list (unless, of + * course, it is dihedral), after doing few normalizations, such as sorting + * angles and splitting isoceles triangles. + */ +static int +guessname(Polyhedron *P) +{ + if (P->index != -1) {/* tabulated */ + P->name = uniform[P->index].name; + P->dual_name = uniform[P->index].dual; + P->group = uniform[P->index].group; + P->class = uniform[P->index].class; + P->dual_class = uniform[P->index].dual_class; + return 1; + } else if (P->K == 2) {/* dihedral nontabulated */ + if (!P->p[0]) { + if (P->N == 1) { + Malloc(P->name, sizeof ("Octahedron"), char); + Malloc(P->dual_name, sizeof ("Cube"), char); + strcpy(P->name, "Octahedron"); + strcpy(P->dual_name, "Cube"); + return 1; + } + P->gon = P->n[0] == 3 ? P->n[1] : P->n[0]; + if (P->gon >= 2) + return dihedral(P, "Antiprism", "Deltohedron"); + else + return dihedral(P, "Crossed Antiprism", "Concave Deltohedron"); + } else if (!P->p[3] || + (!P->p[2] && + P->p[3] == 2)) { + if (P->N == 1) { + Malloc(P->name, sizeof("Cube"), char); + Malloc(P->dual_name, sizeof("Octahedron"), char); + strcpy(P->name, "Cube"); + strcpy(P->dual_name, "Octahedron"); + return 1; + } + P->gon = P->n[0] == 4 ? P->n[1] : P->n[0]; + return dihedral(P, "Prism", "Dipyramid"); + } else if (!P->p[1] && P->p[0] != 2) { + P->gon = P->m[0]; + return dihedral(P, "Hosohedron", "Dihedron"); + } else { + P->gon = P->n[0]; + return dihedral(P, "Dihedron", "Hosohedron"); + } + } else {/* other nontabulated */ + static const char *pre[] = {"Tetr", "Oct", "Icos"}; + Malloc(P->name, 50, char); + Malloc(P->dual_name, 50, char); + sprintf(P->name, "%sahedral ", pre[P->K - 3]); + if (P->onesided) + strcat (P->name, "One-Sided "); + else if (P->D == 1) + strcat(P->name, "Convex "); + else + strcat(P->name, "Nonconvex "); + strcpy(P->dual_name, P->name); + strcat(P->name, "Isogonal Polyhedron"); + strcat(P->dual_name, "Isohedral Polyhedron"); + Realloc(P->name, strlen (P->name) + 1, char); + Realloc(P->dual_name, strlen (P->dual_name) + 1, char); + return 1; + } +} + +static int +dihedral(Polyhedron *P, const char *name, const char *dual_name) +{ + char *s; + int i; + Sprintfrac(s, P->gon < 2 ? compl (P->gon) : P->gon); + i = strlen(s) + sizeof ("-gonal "); + Malloc(P->name, i + strlen (name), char); + Malloc(P->dual_name, i + strlen (dual_name), char); + sprintf(P->name, "%s-gonal %s", s, name); + sprintf(P->dual_name, "%s-gonal %s", s, dual_name); + free(s); + return 1; +} + +/* + * Solve the fundamental right spherical triangles. + * If need_approx is set, print iterations on standard error. + */ +static int +newton(Polyhedron *P, int need_approx) +{ + /* + * First, we find initial approximations. + */ + int j; + double cosa; + Malloc(P->gamma, P->N, double); + if (P->N == 1) { + P->gamma[0] = M_PI / P->m[0]; + return 1; + } + for (j = 0; j < P->N; j++) + P->gamma[j] = M_PI / 2 - M_PI / P->n[j]; + errno = 0; /* may be non-zero from some reason */ + /* + * Next, iteratively find closer approximations for gamma[0] and compute + * other gamma[j]'s from Napier's equations. + */ + if (need_approx) + fprintf(stderr, "Solving %s\n", P->polyform); + for (;;) { + double delta = M_PI, sigma = 0; + for (j = 0; j < P->N; j++) { + if (need_approx) + fprintf(stderr, "%-20.15f", P->gamma[j]); + delta -= P->m[j] * P->gamma[j]; + } + if (need_approx) + printf("(%g)\n", delta); + if (fabs(delta) < 11 * DBL_EPSILON) + return 1; + /* On a RS/6000, fabs(delta)/DBL_EPSILON may occilate between 8 and + * 10. Reported by David W. Sanderson */ + for (j = 0; j < P->N; j++) + sigma += P->m[j] * tan(P->gamma[j]); + P->gamma[0] += delta * tan(P->gamma[0]) / sigma; + if (P->gamma[0] < 0 || P->gamma[0] > M_PI) + Err("gamma out of bounds"); + cosa = cos(M_PI / P->n[0]) / sin(P->gamma[0]); + for (j = 1; j < P->N; j++) + P->gamma[j] = asin(cos(M_PI / P->n[j]) / cosa); + if (errno) + Err(strerror(errno)); + } +} + +/* + * Postprocess pqr| where r has an even denominator (cf. Coxeter &al. Sec.9). + * Remove the {2r} and add a retrograde {2p} and retrograde {2q}. + */ +static int +exceptions(Polyhedron *P) +{ + int j; + if (P->even != -1) { + P->M = P->N = 4; + Realloc(P->n, P->N, double); + Realloc(P->m, P->N, double); + Realloc(P->gamma, P->N, double); + Realloc(P->rot, P->M, int); + for (j = P->even + 1; j < 3; j++) { + P->n[j-1] = P->n[j]; + P->gamma[j-1] = P->gamma[j]; + } + P->n[2] = compl(P->n[1]); + P->gamma[2] = - P->gamma[1]; + P->n[3] = compl(P->n[0]); + P->m[3] = 1; + P->gamma[3] = - P->gamma[0]; + P->rot[0] = 0; + P->rot[1] = 1; + P->rot[2] = 3; + P->rot[3] = 2; + } + + /* + * Postprocess the last polyhedron |3/2 5/3 3 5/2 by taking a |5/3 3 5/2, + * replacing the three snub triangles by four equatorial squares and adding + * the missing {3/2} (retrograde triangle, cf. Coxeter &al. Sec. 11). + */ + if (P->index == last_uniform - 1) { + P->N = 5; + P->M = 8; + Realloc(P->n, P->N, double); + Realloc(P->m, P->N, double); + Realloc(P->gamma, P->N, double); + Realloc(P->rot, P->M, int); + Realloc(P->snub, P->M, int); + P->hemi = 1; + P->D = 0; + for (j = 3; j; j--) { + P->m[j] = 1; + P->n[j] = P->n[j-1]; + P->gamma[j] = P->gamma[j-1]; + } + P->m[0] = P->n[0] = 4; + P->gamma[0] = M_PI / 2; + P->m[4] = 1; + P->n[4] = compl(P->n[1]); + P->gamma[4] = - P->gamma[1]; + for (j = 1; j < 6; j += 2) P->rot[j]++; + P->rot[6] = 0; + P->rot[7] = 4; + P->snub[6] = 1; + P->snub[7] = 0; + } + return 1; +} + +/* + * Compute edge and face counts, and update D and chi. Update D in the few + * cases the density of the polyhedron is meaningful but different than the + * density of the corresponding Schwarz triangle (cf. Coxeter &al., p. 418 and + * p. 425). + * In these cases, spherical faces of one type are concave (bigger than a + * hemisphere), and the actual density is the number of these faces less the + * computed density. Note that if j != 0, the assignment gamma[j] = asin(...) + * implies gamma[j] cannot be obtuse. Also, compute chi for the only + * non-Wythoffian polyhedron. + */ +static int +count(Polyhedron *P) +{ + int j, temp; + Malloc(P->Fi, P->N, int); + for (j = 0; j < P->N; j++) { + P->E += temp = P->V * numerator(P->m[j]); + P->F += P->Fi[j] = temp / numerator(P->n[j]); + } + P->E /= 2; + if (P->D && P->gamma[0] > M_PI / 2) + P->D = P->Fi[0] - P->D; + if (P->index == last_uniform - 1) + P->chi = P->V - P->E + P->F; + return 1; +} + +/* + * Generate a printable vertex configuration symbol. + */ +static int +configuration(Polyhedron *P) +{ + int j, len = 2; + for (j = 0; j < P->M; j++) { + char *s; + Sprintfrac(s, P->n[P->rot[j]]); + len += strlen (s) + 2; + if (!j) { + Malloc(P->config, len, char); +/* strcpy(P->config, "(");*/ + strcpy(P->config, ""); + } else { + Realloc(P->config, len, char); + strcat(P->config, ", "); + } + strcat(P->config, s); + free(s); + } +/* strcat (P->config, ")");*/ + if ((j = denominator (P->m[0])) != 1) { + char s[MAXDIGITS + 2]; + sprintf(s, "/%d", j); + Realloc(P->config, len + strlen (s), char); + strcat(P->config, s); + } + return 1; +} + +/* + * Compute polyhedron vertices and vertex adjecency lists. + * The vertices adjacent to v[i] are v[adj[0][i], v[adj[1][i], ... + * v[adj[M-1][i], ordered counterclockwise. The algorith is a BFS on the + * vertices, in such a way that the vetices adjacent to a givem vertex are + * obtained from its BFS parent by a cyclic sequence of rotations. firstrot[i] + * points to the first rotaion in the sequence when applied to v[i]. Note that + * for non-snub polyhedra, the rotations at a child are opposite in sense when + * compared to the rotations at the parent. Thus, we fill adj[*][i] from the + * end to signify clockwise rotations. The firstrot[] array is not needed for + * display thus it is freed after being used for face computations below. + */ +static int +vertices(Polyhedron *P) +{ + int i, newV = 2; + double cosa; + Malloc(P->v, P->V, Vector); + Matalloc(P->adj, P->M, P->V, int); + Malloc(P->firstrot, P->V, int); /* temporary , put in Polyhedron + structure so that may be freed on + error */ + cosa = cos(M_PI / P->n[0]) / sin(P->gamma[0]); + P->v[0].x = 0; + P->v[0].y = 0; + P->v[0].z = 1; + P->firstrot[0] = 0; + P->adj[0][0] = 1; + P->v[1].x = 2 * cosa * sqrt(1 - cosa * cosa); + P->v[1].y = 0; + P->v[1].z = 2 * cosa * cosa - 1; + if (!P->snub) { + P->firstrot[1] = 0; + P->adj[0][1] = -1;/* start the other side */ + P->adj[P->M-1][1] = 0; + } else { + P->firstrot[1] = P->snub[P->M-1] ? 0 : P->M-1 ; + P->adj[0][1] = 0; + } + for (i = 0; i < newV; i++) { + int j, k; + int last, one, start, limit; + if (P->adj[0][i] == -1) { + one = -1; start = P->M-2; limit = -1; + } else { + one = 1; start = 1; limit = P->M; + } + k = P->firstrot[i]; + for (j = start; j != limit; j += one) { + Vector temp; + int J; + temp = rotate (P->v[P->adj[j-one][i]], P->v[i], + one * 2 * P->gamma[P->rot[k]]); + for (J=0; Jv[J],temp,BIG_EPSILON); J++) + ;/* noop */ + P->adj[j][i] = J; + last = k; + if (++k == P->M) + k = 0; + if (J == newV) { /* new vertex */ + if (newV == P->V) Err ("too many vertices"); + P->v[newV++] = temp; + if (!P->snub) { + P->firstrot[J] = k; + if (one > 0) { + P->adj[0][J] = -1; + P->adj[P->M-1][J] = i; + } else { + P->adj[0][J] = i; + } + } else { + P->firstrot[J] = !P->snub[last] ? last : + !P->snub[k] ? (k+1)%P->M : k ; + P->adj[0][J] = i; + } + } + } + } + return 1; +} + +/* + * Compute polyhedron faces (dual vertices) and incidence matrices. + * For orientable polyhedra, we can distinguish between the two faces meeting + * at a given directed edge and identify the face on the left and the face on + * the right, as seen from the outside. For one-sided polyhedra, the vertex + * figure is a papillon (in Coxeter &al. terminology, a crossed parallelogram) + * and the two faces meeting at an edge can be identified as the side face + * (n[1] or n[2]) and the diagonal face (n[0] or n[3]). + */ +static int +faces(Polyhedron *P) +{ + int i, newF = 0; + Malloc (P->f, P->F, Vector); + Malloc (P->ftype, P->F, int); + Matalloc (P->incid, P->M, P->V, int); + P->minr = 1 / fabs (tan (M_PI / P->n[P->hemi]) * tan (P->gamma[P->hemi])); + for (i = P->M; --i>=0;) { + int j; + for (j = P->V; --j>=0;) + P->incid[i][j] = -1; + } + for (i = 0; i < P->V; i++) { + int j; + for (j = 0; j < P->M; j++) { + int i0, J; + int pap=0;/* papillon edge type */ + if (P->incid[j][i] != -1) + continue; + P->incid[j][i] = newF; + if (newF == P->F) + Err("too many faces"); + P->f[newF] = pole(P->minr, P->v[i], P->v[P->adj[j][i]], + P->v[P->adj[mod(j + 1, P->M)][i]]); + P->ftype[newF] = P->rot[mod(P->firstrot[i] + ((P->adj[0][i] < + P->adj[P->M - 1][i]) + ? j + : -j - 2), + P->M)]; + if (P->onesided) + pap = (P->firstrot[i] + j) % 2; + i0 = i; + J = j; + for (;;) { + int k; + k = i0; + if ((i0 = P->adj[J][k]) == i) break; + for (J = 0; J < P->M && P->adj[J][i0] != k; J++) + ;/* noop */ + if (J == P->M) + Err("too many faces"); + if (P->onesided && (J + P->firstrot[i0]) % 2 == pap) { + P->incid [J][i0] = newF; + if (++J >= P->M) + J = 0; + } else { + if (--J < 0) + J = P->M - 1; + P->incid [J][i0] = newF; + } + } + newF++; + } + } + Free(P->firstrot); + Free(P->rot); + Free(P->snub); + return 1; +} + +/* + * Compute edge list and graph polyhedron and dual. + * If the polyhedron is of the "hemi" type, each edge has one finite vertex and + * one ideal vertex. We make sure the latter is always the out-vertex, so that + * the edge becomes a ray (half-line). Each ideal vertex is represented by a + * unit Vector, and the direction of the ray is either parallel or + * anti-parallel this Vector. We flag this in the array P->anti[E]. + */ +static int +edgelist(Polyhedron *P) +{ + int i, j, *s, *t, *u; + Matalloc(P->e, 2, P->E, int); + Matalloc(P->dual_e, 2, P->E, int); + s = P->e[0]; + t = P->e[1]; + for (i = 0; i < P->V; i++) + for (j = 0; j < P->M; j++) + if (i < P->adj[j][i]) { + *s++ = i; + *t++ = P->adj[j][i]; + } + s = P->dual_e[0]; + t = P->dual_e[1]; + if (!P->hemi) + P->anti = 0; + else + Malloc(P->anti, P->E, int); + u = P->anti; + for (i = 0; i < P->V; i++) + for (j = 0; j < P->M; j++) + if (i < P->adj[j][i]) + { + if (!u) { + *s++ = P->incid[mod(j-1,P->M)][i]; + *t++ = P->incid[j][i]; + } else { + if (P->ftype[P->incid[j][i]]) { + *s = P->incid[j][i]; + *t = P->incid[mod(j-1,P->M)][i]; + } else { + *s = P->incid[mod(j-1,P->M)][i]; + *t = P->incid[j][i]; + } + *u++ = dot(P->f[*s++], P->f[*t++]) > 0; + } + } + return 1; +} + + +static char * +sprintfrac(double x) +{ + char *s; + frac (x); + if (!frax.d) { + Malloc(s, sizeof ("infinity"), char); + strcpy(s, "infinity"); + } else if (frax.d == 1) { + char n[MAXDIGITS + 1]; + sprintf(n, "%ld", frax.n); + Malloc(s, strlen (n) + 1, char); + strcpy(s, n); + } else { + char n[MAXDIGITS + 1], d[MAXDIGITS + 1]; + sprintf(n, "%ld", frax.n); + sprintf(d, "%ld", frax.d); + Malloc(s, strlen (n) + strlen (d) + 2, char); + sprintf(s, "%s/%s", n, d); + } + return s; +} + +static double +dot(Vector a, Vector b) +{ + return a.x * b.x + a.y * b.y + a.z * b.z; +} + +static Vector +scale(double k, Vector a) +{ + a.x *= k; + a.y *= k; + a.z *= k; + return a; +} + +static Vector +diff(Vector a, Vector b) +{ + a.x -= b.x; + a.y -= b.y; + a.z -= b.z; + return a; +} + +static Vector +cross(Vector a, Vector b) +{ + Vector p; + p.x = a.y * b.z - a.z * b.y; + p.y = a.z * b.x - a.x * b.z; + p.z = a.x * b.y - a.y * b.x; + return p; +} + +static Vector +sum(Vector a, Vector b) +{ + a.x += b.x; + a.y += b.y; + a.z += b.z; + return a; +} + +static Vector +sum3(Vector a, Vector b, Vector c) +{ + a.x += b.x + c.x; + a.y += b.y + c.y; + a.z += b.z + c.z; + return a; +} + +static Vector +rotate(Vector vertex, Vector axis, double angle) +{ + Vector p; + p = scale(dot (axis, vertex), axis); + return sum3(p, scale(cos(angle), diff(vertex, p)), + scale(sin(angle), cross(axis, vertex))); +} + +static Vector x, y, z; + +/* + * rotate the standard frame + */ +static void +rotframe(double azimuth, double elevation, double angle) +{ + static const Vector X = {1,0,0}, Y = {0,1,0}, Z = {0,0,1}; + Vector axis; + + axis = rotate(rotate (X, Y, elevation), Z, azimuth); + x = rotate(X, axis, angle); + y = rotate(Y, axis, angle); + z = rotate(Z, axis, angle); +} + +/* + * rotate an array of n Vectors + */ +static void +rotarray(Vector *new, Vector *old, int n) +{ + while (n--) { + *new++ = sum3(scale(old->x, x), scale(old->y, y), scale(old->z, z)); + old++; + } +} + +static int +same(Vector a, Vector b, double epsilon) +{ + return fabs(a.x - b.x) < epsilon && fabs(a.y - b.y) < epsilon + && fabs(a.z - b.z) < epsilon; +} + +/* + * Compute the polar reciprocal of the plane containing a, b and c: + * + * If this plane does not contain the origin, return p such that + * dot(p,a) = dot(p,b) = dot(p,b) = r. + * + * Otherwise, return p such that + * dot(p,a) = dot(p,b) = dot(p,c) = 0 + * and + * dot(p,p) = 1. + */ +static Vector +pole(double r, Vector a, Vector b, Vector c) +{ + Vector p; + double k; + p = cross(diff(b, a), diff(c, a)); + k = dot(p, a); + if (fabs(k) < 1e-6) + return scale(1 / sqrt(dot(p, p)), p); + else + return scale(r/ k , p); +} + + +/* output */ + + + + +static void rotframe(double azimuth, double elevation, double angle); +static void rotarray(Vector *new, Vector *old, int n); +static int mod (int i, int j); + + +static void +push_point (polyhedron *p, Vector v) +{ + p->points[p->npoints].x = v.x; + p->points[p->npoints].y = v.y; + p->points[p->npoints].z = v.z; + p->npoints++; +} + +static void +push_face3 (polyhedron *p, int x, int y, int z) +{ + p->faces[p->nfaces].npoints = 3; + Malloc (p->faces[p->nfaces].points, 3, int); + p->faces[p->nfaces].points[0] = x; + p->faces[p->nfaces].points[1] = y; + p->faces[p->nfaces].points[2] = z; + p->nfaces++; +} + +static void +push_face4 (polyhedron *p, int x, int y, int z, int w) +{ + p->faces[p->nfaces].npoints = 4; + Malloc (p->faces[p->nfaces].points, 4, int); + p->faces[p->nfaces].points[0] = x; + p->faces[p->nfaces].points[1] = y; + p->faces[p->nfaces].points[2] = z; + p->faces[p->nfaces].points[3] = w; + p->nfaces++; +} + + + + +static polyhedron * +construct_polyhedron (Polyhedron *P, Vector *v, int V, Vector *f, int F, + const char *name, const char *dual, + const char *class, const char *star, + double azimuth, double elevation, double freeze) +{ + int i, j, k=0, l, ll, ii, *hit=0, facelets; + + polyhedron *result; + Vector *temp; + + Malloc (result, 1, polyhedron); + memset (result, 0, sizeof(*result)); + + /* + * Rotate polyhedron + */ + rotframe(azimuth, elevation, freeze); + Malloc(temp, V, Vector); + rotarray(temp, v, V); + v = temp; + Malloc(temp, F, Vector); + rotarray(temp, f, F); + f = temp; + + result->number = P->index + 1; + result->name = strdup (name); + result->dual = strdup (dual); + result->wythoff = strdup (P->polyform); + result->config = strdup (P->config); + result->group = strdup (P->group); + result->class = strdup (class); + + /* + * Vertex list + */ + Malloc (result->points, V + F * 13, point); + result->npoints = 0; + + result->nedges = P->E; + result->logical_faces = F; + result->logical_vertices = V; + result->density = P->D; + result->chi = P->chi; + + for (i = 0; i < V; i++) + push_point (result, v[i]); + + /* + * Auxiliary vertices (needed because current VRML browsers cannot handle + * non-simple polygons, i.e., ploygons with self intersections): Each + * non-simple face is assigned an auxiliary vertex. By connecting it to the + * rest of the vertices the face is triangulated. The circum-center is used + * for the regular star faces of uniform polyhedra. The in-center is used for + * the pentagram (#79) and hexagram (#77) of the high-density snub duals, and + * for the pentagrams (#40, #58) and hexagram (#52) of the stellated duals + * with configuration (....)/2. Finally, the self-intersection of the crossed + * parallelogram is used for duals with form p q r| with an even denominator. + * + * This method do not work for the hemi-duals, whose faces are not + * star-shaped and have two self-intersections each. + * + * Thus, for each face we need six auxiliary vertices: The self intersections + * and the terminal points of the truncations of the infinite edges. The + * ideal vertices are listed, but are not used by the face-list. + * + * Note that the face of the last dual (#80) is octagonal, and constists of + * two quadrilaterals of the infinite type. + */ + + if (*star && P->even != -1) + Malloc(hit, F, int); + for (i = 0; i < F; i++) + if ((!*star && + (frac(P->n[P->ftype[i]]), frax.d != 1 && frax.d != frax.n - 1)) || + (*star && + P->K == 5 && + (P->D > 30 || + denominator (P->m[0]) != 1))) { + /* find the center of the face */ + double h; + if (!*star && P->hemi && !P->ftype[i]) + h = 0; + else + h = P->minr / dot(f[i],f[i]); + push_point(result, scale (h, f[i])); + + } else if (*star && P->even != -1) { + /* find the self-intersection of a crossed parallelogram. + * hit is set if v0v1 intersects v2v3*/ + Vector v0, v1, v2, v3, c0, c1, p; + double d0, d1; + v0 = v[P->incid[0][i]]; + v1 = v[P->incid[1][i]]; + v2 = v[P->incid[2][i]]; + v3 = v[P->incid[3][i]]; + d0 = sqrt(dot(diff(v0, v2), diff(v0, v2))); + d1 = sqrt(dot (diff(v1, v3), diff(v1, v3))); + c0 = scale(d1, sum(v0, v2)); + c1 = scale(d0, sum(v1, v3)); + p = scale(0.5 / (d0 + d1), sum(c0, c1)); + push_point (result, p); + p = cross(diff(p, v2), diff(p, v3)); + hit[i] = (dot(p, p) < 1e-6); + } else if (*star && P->hemi && P->index != last_uniform - 1) { + /* find the terminal points of the truncation and the + * self-intersections. + * v23 v0 v21 + * | \ / \ / | + * | v0123 v0321 | + * | / \ / \ | + * v01 v2 v03 + */ + Vector v0, v1, v2, v3, v01, v03, v21, v23, v0123, v0321 ; + Vector u; + double t = 1.5;/* truncation adjustment factor */ + j = !P->ftype[P->incid[0][i]]; + v0 = v[P->incid[j][i]];/* real vertex */ + v1 = v[P->incid[j+1][i]];/* ideal vertex (unit vector) */ + v2 = v[P->incid[j+2][i]];/* real */ + v3 = v[P->incid[(j+3)%4][i]];/* ideal */ + /* compute intersections + * this uses the following linear algebra: + * v0123 = v0 + a v1 = v2 + b v3 + * v0 x v3 + a (v1 x v3) = v2 x v3 + * a (v1 x v3) = (v2 - v0) x v3 + * a (v1 x v3) . (v1 x v3) = (v2 - v0) x v3 . (v1 x v3) + */ + u = cross(v1, v3); + v0123 = sum(v0, scale(dot(cross(diff(v2, v0), v3), u) / dot(u,u), + v1)); + v0321 = sum(v0, scale(dot(cross(diff(v0, v2), v1), u) / dot(u,u), + v3)); + /* compute truncations */ + v01 = sum(v0 , scale(t, diff(v0123, v0))); + v23 = sum(v2 , scale(t, diff(v0123, v2))); + v03 = sum(v0 , scale(t, diff(v0321, v0))); + v21 = sum(v2 , scale(t, diff(v0321, v2))); + + push_point(result, v01); + push_point(result, v23); + push_point(result, v0123); + push_point(result, v03); + push_point(result, v21); + push_point(result, v0321); + + } else if (*star && P->index == last_uniform - 1) { + /* find the terminal points of the truncation and the + * self-intersections. + * v23 v0 v21 + * | \ / \ / | + * | v0123 v0721 | + * | / \ / \ | + * v01 v2 v07 + * + * v65 v4 v67 + * | \ / \ / | + * | v4365 v4567 | + * | / \ / \ | + * v43 v6 v45 + */ + Vector v0, v1, v2, v3, v4, v5, v6, v7, v01, v07, v21, v23; + Vector v43, v45, v65, v67, v0123, v0721, v4365, v4567; + double t = 1.5;/* truncation adjustment factor */ + Vector u; + for (j = 0; j < 8; j++) + if (P->ftype[P->incid[j][i]] == 3) + break; + v0 = v[P->incid[j][i]];/* real {5/3} */ + v1 = v[P->incid[(j+1)%8][i]];/* ideal */ + v2 = v[P->incid[(j+2)%8][i]];/* real {3} */ + v3 = v[P->incid[(j+3)%8][i]];/* ideal */ + v4 = v[P->incid[(j+4)%8][i]];/* real {5/2} */ + v5 = v[P->incid[(j+5)%8][i]];/* ideal */ + v6 = v[P->incid[(j+6)%8][i]];/* real {3/2} */ + v7 = v[P->incid[(j+7)%8][i]];/* ideal */ + /* compute intersections */ + u = cross(v1, v3); + v0123 = sum(v0, scale(dot(cross(diff(v2, v0), v3), u) / dot(u,u), + v1)); + u = cross(v7, v1); + v0721 = sum(v0, scale(dot(cross(diff(v2, v0), v1), u) / dot(u,u), + v7)); + u = cross(v5, v7); + v4567 = sum(v4, scale(dot(cross(diff(v6, v4), v7), u) / dot(u,u), + v5)); + u = cross(v3, v5); + v4365 = sum(v4, scale(dot(cross(diff(v6, v4), v5), u) / dot(u,u), + v3)); + /* compute truncations */ + v01 = sum(v0 , scale(t, diff(v0123, v0))); + v23 = sum(v2 , scale(t, diff(v0123, v2))); + v07 = sum(v0 , scale(t, diff(v0721, v0))); + v21 = sum(v2 , scale(t, diff(v0721, v2))); + v45 = sum(v4 , scale(t, diff(v4567, v4))); + v67 = sum(v6 , scale(t, diff(v4567, v6))); + v43 = sum(v4 , scale(t, diff(v4365, v4))); + v65 = sum(v6 , scale(t, diff(v4365, v6))); + + push_point(result, v01); + push_point(result, v23); + push_point(result, v0123); + push_point(result, v07); + push_point(result, v21); + push_point(result, v0721); + push_point(result, v45); + push_point(result, v67); + push_point(result, v4567); + push_point(result, v43); + push_point(result, v65); + push_point(result, v4365); + } + + /* + * Face list: + * Each face is printed in a separate line, by listing the indices of its + * vertices. In the non-simple case, the polygon is represented by the + * triangulation, each triangle consists of two polyhedron vertices and one + * auxiliary vertex. + */ + Malloc (result->faces, F * 10, face); + result->nfaces = 0; + + ii = V; + facelets = 0; + for (i = 0; i < F; i++) { + if (*star) { + if (P->K == 5 && + (P->D > 30 || + denominator (P->m[0]) != 1)) { + for (j = 0; j < P->M - 1; j++) { + push_face3 (result, P->incid[j][i], P->incid[j+1][i], ii); + facelets++; + } + + push_face3 (result, P->incid[j][i], P->incid[0][i], ii++); + facelets++; + + } else if (P->even != -1) { + if (hit && hit[i]) { + push_face3 (result, P->incid[3][i], P->incid[0][i], ii); + push_face3 (result, P->incid[1][i], P->incid[2][i], ii); + } else { + push_face3 (result, P->incid[0][i], P->incid[1][i], ii); + push_face3 (result, P->incid[2][i], P->incid[3][i], ii); + } + ii++; + facelets += 2; + + } else if (P->hemi && P->index != last_uniform - 1) { + j = !P->ftype[P->incid[0][i]]; + + push_face3 (result, ii, ii + 1, ii + 2); + push_face4 (result, P->incid[j][i], ii + 2, P->incid[j+2][i], ii + 5); + push_face3 (result, ii + 3, ii + 4, ii + 5); + ii += 6; + facelets += 3; + } else if (P->index == last_uniform - 1) { + for (j = 0; j < 8; j++) + if (P->ftype[P->incid[j][i]] == 3) + break; + push_face3 (result, ii, ii + 1, ii + 2); + push_face4 (result, + P->incid[j][i], ii + 2, P->incid[(j+2)%8][i], ii + 5); + push_face3 (result, ii + 3, ii + 4, ii + 5); + + push_face3 (result, ii + 6, ii + 7, ii + 8); + push_face4 (result, + P->incid[(j+4)%8][i], ii + 8, P->incid[(j+6)%8][i], + ii + 11); + push_face3 (result, ii + 9, ii + 10, ii + 11); + ii += 12; + facelets += 6; + } else { + + result->faces[result->nfaces].npoints = P->M; + Malloc (result->faces[result->nfaces].points, P->M, int); + for (j = 0; j < P->M; j++) + result->faces[result->nfaces].points[j] = P->incid[j][i]; + result->nfaces++; + facelets++; + } + } else { + int split = (frac(P->n[P->ftype[i]]), + frax.d != 1 && frax.d != frax.n - 1); + for (j = 0; j < V; j++) { + for (k = 0; k < P->M; k++) + if (P->incid[k][j] == i) + break; + if (k != P->M) + break; + } + if (split) { + ll = j; + for (l = P->adj[k][j]; l != j; l = P->adj[k][l]) { + for (k = 0; k < P->M; k++) + if (P->incid[k][l] == i) + break; + if (P->adj[k][l] == ll) + k = mod(k + 1 , P->M); + push_face3 (result, ll, l, ii); + facelets++; + ll = l; + } + push_face3 (result, ll, j, ii++); + facelets++; + + } else { + + int *pp; + int pi = 0; + Malloc (pp, 100, int); + + pp[pi++] = j; + ll = j; + for (l = P->adj[k][j]; l != j; l = P->adj[k][l]) { + for (k = 0; k < P->M; k++) + if (P->incid[k][l] == i) + break; + if (P->adj[k][l] == ll) + k = mod(k + 1 , P->M); + pp[pi++] = l; + ll = l; + } + result->faces[result->nfaces].npoints = pi; + result->faces[result->nfaces].points = pp; + result->nfaces++; + facelets++; + } + } + } + + /* + * Face color indices - for polyhedra with multiple face types + * For non-simple faces, the index is repeated as many times as needed by the + * triangulation. + */ + { + int ff = 0; + if (!*star && P->N != 1) { + for (i = 0; i < F; i++) + if (frac(P->n[P->ftype[i]]), frax.d == 1 || frax.d == frax.n - 1) + result->faces[ff++].color = P->ftype[i]; + else + for (j = 0; j < frax.n; j++) + result->faces[ff++].color = P->ftype[i]; + } else { + for (i = 0; i < facelets; i++) + result->faces[ff++].color = 0; + } + } + + if (*star && P->even != -1) + free(hit); + free(v); + free(f); + + return result; +} + + + +/* External interface (jwz) + */ + +void +free_polyhedron (polyhedron *p) +{ + if (!p) return; + Free (p->wythoff); + Free (p->name); + Free (p->group); + Free (p->class); + if (p->faces) + { + int i; + for (i = 0; i < p->nfaces; i++) + Free (p->faces[i].points); + Free (p->faces); + } + Free (p); +} + + +int +construct_polyhedra (polyhedron ***polyhedra_ret) +{ + double freeze = 0; + double azimuth = AZ; + double elevation = EL; + int index = 0; + + int count = 0; + polyhedron **result; + Malloc (result, last_uniform * 2 + 3, polyhedron*); + + while (index < last_uniform) { + char sym[4]; + Polyhedron *P; + + sprintf(sym, "#%d", index + 1); + if (!(P = kaleido(sym, 1, 0, 0, 0))) { + Err (strerror(errno)); + } + + result[count++] = construct_polyhedron (P, P->v, P->V, P->f, P->F, + P->name, P->dual_name, + P->class, "", + azimuth, elevation, freeze); + + result[count++] = construct_polyhedron (P, P->f, P->F, P->v, P->V, + P->dual_name, P->name, + P->dual_class, "*", + azimuth, elevation, freeze); + polyfree(P); + index++; + } + + *polyhedra_ret = result; + count++; /* leave room for teapot */ + return count; +} diff --git a/hacks/glx/polyhedra.h b/hacks/glx/polyhedra.h new file mode 100644 index 0000000..ace4ac7 --- /dev/null +++ b/hacks/glx/polyhedra.h @@ -0,0 +1,52 @@ +/* xscreensaver, Copyright (c) 2004 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __POLYHEDRA_H__ +#define __POLYHEDRA_H__ + +typedef struct { + double x, y, z; +} point; + +typedef struct { + int color; + int npoints; + int *points; /* indexes into point list */ +} face; + +typedef struct { + + int number; + char *wythoff; + char *name; + char *dual; + char *config; + char *group; + char *class; + + int nfaces; + int logical_faces; + int logical_vertices; + int nedges; + int npoints; + int density; + int chi; + + point *points; + face *faces; + +} polyhedron; + + +extern int construct_polyhedra (polyhedron ***polyhedra_ret); +extern void free_polyhedron (polyhedron *p); + +#endif /* __POLYHEDRA_H__ */ diff --git a/hacks/glx/polyhedra.man b/hacks/glx/polyhedra.man new file mode 100644 index 0000000..b4e1cca --- /dev/null +++ b/hacks/glx/polyhedra.man @@ -0,0 +1,124 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +polyhedra - draws the 80 uniform polyhedra and their duals +.SH SYNOPSIS +.SH SYNOPSIS +.B polyhedra +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fIfloat\fP] +[\-duration \fIseconds\fP] +[\-no-wander] +[\-spin \fIXYZ\fP] +[\-wireframe] +[\-no-titles] +[\-which \fIname\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +This program renders 160 different 3D solids, and displays some +information about each. A new solid is chosen every few seconds. + +There are 75 uniform polyhedra, plus an inifinite number of +prisms and antiprisms: + + * Convex Uniform Polyhedra: + * Platonic solids (5) + * Archimedean solids (13) + * Convex prisms and antiprisms (2 infinite families) + * Nonconvex Uniform Polyhedra: + * Kepler-Poinsot polyhedra (4) + * Nonconvex uniform polyhedra (53) + * Nonconvex prisms, antiprisms, and crossed antiprisms + (3 infinite families) + +Representative samples of the prism sets brings the total to 80 solids. +Including the \fIdual\fP of each brings the total up to 160. (To +create the "dual" of a polyhedron, faces are replaced with vertices, +and vertices with faces.) +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Larger numbers mean run faster. Default: 1.0. +.TP 8 +.B \-duration \fIseconds\fP +How long before switching to a new polyhedron. Default 12 seconds. +.TP 8 +.B \-wander | \-no-wander +Whether the objects should wander around the screen. +.TP 8 +.B \-spin [XYZ] | \-no-spin +Which axes, if any, to spin around on. +.TP 8 +.B \-titles | \-no-titles +Whether to display text describing each object. +.TP 8 +.B \-which \fIobject-name\fP +Display only one particular object, identified by number, name, or +Whthoff symbol. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH KEY BINDINGS +When running in a window, you can rotate the object with the mouse. +Also, the following keystrokes are defined: +.TP 12 +.B SPC \fIor\fP TAB +Select a new polyhedron at random. +.TP 12 +.B + \fIor\fP > +Select the next-higher-numbered polyhedron. +.TP 12 +.B - \fIor\fP < +Select the next-lower-numbered polyhedron. +.TP 12 +.B ESC \fIor\fP ^C +Quit. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 1991-2002 Dr. Zvi Har'El. + +Copyright \(co 2004 Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Based on the program \fIkaleido\fP ("Kaleidoscopic construction of +uniform polyhedra"), by Dr. Zvi Har'El + http://www.math.technion.ac.il/~rl/ + ftp://ftp.math.technion.ac.il/kaleido/ + +Adapted for OpenGL and XScreenSaver by Jamie Zawinski, 2004. diff --git a/hacks/glx/polytopes.c b/hacks/glx/polytopes.c new file mode 100644 index 0000000..76c1287 --- /dev/null +++ b/hacks/glx/polytopes.c @@ -0,0 +1,3189 @@ +/* polytopes --- Shows one of the six regular polytopes rotating in 4d */ + +#if 0 +static const char sccsid[] = "@(#)polytopes.c 1.2 05/09/28 xlockmore"; +#endif + +/* Copyright (c) 2003-2009 Carsten Steger . */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * REVISION HISTORY: + * C. Steger - 03/08/10: Initial version + * C. Steger - 05/09/28: Added trackball support + * C. Steger - 07/01/23: Improved 4d trackball support + * C. Steger - 09/08/23: Removed check-config.pl warnings + */ + +/* + * This program shows one of the six regular 4D polytopes rotating in 4D. + * Written by Carsten Steger, inspired by H.S.M Coxeter's book "Regular + * Polytopes", 3rd Edition, Dover Publications, Inc., 1973, and Thomas + * Banchoff's book "Beyond the Third Dimension: Geometry, Computer + * Graphics, and Higher Dimensions", Scientific American Library, 1990. + */ + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define SQRT15OVER4 1.93649167310370844259 /* sqrt(15/4) */ +#define SQRT10OVER3 1.82574185835055371152 /* sqrt(10/3) */ +#define SQRT5OVER2 1.58113883008418966600 /* sqrt(5/2) */ +#define SQRT5OVER6 0.91287092917527685576 /* sqrt(5/6) */ +#define SQRT5OVER12 0.64549722436790281420 /* sqrt(5/12) */ +#define SQRT2 1.41421356237309504880 /* sqrt(2) */ +#define GOLDEN 1.61803398874989484820 /* (sqrt(5)+1)/2 */ +#define GOLDENINV 0.61803398874989484820 /* (sqrt(5)-1)/2 */ +#define SQRT2INV 0.70710678118654752440 /* sqrt(1/2) */ +#define GOLDEN2 1.14412280563536859520 /* ((sqrt(5)+1)/2)/sqrt(2) */ +#define GOLDENINV2 0.43701602444882107080 /* ((sqrt(5)-1)/2)/sqrt(2) */ +#define GOLDEN22 1.85122958682191611960 /* (((sqrt(5)+1)/2)^2)/sqrt(2) */ +#define GOLDENINV22 0.27009075673772645360 /* (((sqrt(5)-1)/2)^2)/sqrt(2) */ + +#define DISP_WIREFRAME 0 +#define DISP_SURFACE 1 +#define DISP_TRANSPARENT 2 + +#define POLYTOPE_RANDOM -1 +#define POLYTOPE_5_CELL 0 +#define POLYTOPE_8_CELL 1 +#define POLYTOPE_16_CELL 2 +#define POLYTOPE_24_CELL 3 +#define POLYTOPE_120_CELL 4 +#define POLYTOPE_600_CELL 5 +#define POLYTOPE_LAST_CELL POLYTOPE_600_CELL + +#define COLORS_SINGLE 0 +#define COLORS_DEPTH 1 + +#define DISP_3D_PERSPECTIVE 0 +#define DISP_3D_ORTHOGRAPHIC 1 + +#define DISP_4D_PERSPECTIVE 0 +#define DISP_4D_PERSPECTIVE_STR "0" +#define DISP_4D_ORTHOGRAPHIC 1 +#define DISP_4D_ORTHOGRAPHIC_STR "1" + +#define DEF_DISPLAY_MODE "transparent" +#define DEF_POLYTOPE "random" +#define DEF_COLORS "depth" +#define DEF_PROJECTION_3D "perspective" +#define DEF_PROJECTION_4D "perspective" +#define DEF_SPEEDWX "1.1" +#define DEF_SPEEDWY "1.3" +#define DEF_SPEEDWZ "1.5" +#define DEF_SPEEDXY "1.7" +#define DEF_SPEEDXZ "1.9" +#define DEF_SPEEDYZ "2.1" + +#ifdef STANDALONE +# define DEFAULTS "*delay: 25000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_polytopes 0 +# define release_polytopes 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#ifndef HAVE_JWXYZ +# include +#endif +#include "gltrackball.h" + + +#ifdef USE_MODULES +ModStruct polytopes_description = +{"polytopes", "init_polytopes", "draw_polytopes", NULL, + "draw_polytopes", "change_polytopes", NULL, &polytopes_opts, + 25000, 1, 1, 1, 1.0, 4, "", + "Shows one of the six regular 4d polytopes rotating in 4d", 0, NULL}; + +#endif + + +static char *mode; +static int display_mode; +static char *poly_str; +static int polytope; +static char *color_str; +static int color_mode; +static char *proj_3d; +static int projection_3d; +static char *proj_4d; +static int projection_4d; +static float speed_wx; +static float speed_wy; +static float speed_wz; +static float speed_xy; +static float speed_xz; +static float speed_yz; + +static const float offset4d[4] = { 0.0, 0.0, 0.0, 3.0 }; +static const float offset3d[4] = { 0.0, 0.0, -2.0, 0.0 }; + + +static XrmOptionDescRec opts[] = +{ + {"-mode", ".displayMode", XrmoptionSepArg, 0 }, + {"-wireframe", ".displayMode", XrmoptionNoArg, "wireframe" }, + {"-surface", ".displayMode", XrmoptionNoArg, "surface" }, + {"-transparent", ".displayMode", XrmoptionNoArg, "transparent" }, + {"-polytope", ".polytope", XrmoptionSepArg, 0 }, + {"-random", ".polytope", XrmoptionNoArg, "random" }, + {"-5-cell", ".polytope", XrmoptionNoArg, "5-cell" }, + {"-8-cell", ".polytope", XrmoptionNoArg, "8-cell" }, + {"-16-cell", ".polytope", XrmoptionNoArg, "16-cell" }, + {"-24-cell", ".polytope", XrmoptionNoArg, "24-cell" }, + {"-120-cell", ".polytope", XrmoptionNoArg, "120-cell" }, + {"-600-cell", ".polytope", XrmoptionNoArg, "600-cell" }, + {"-single-color", ".colors", XrmoptionNoArg, "single" }, + {"-depth-colors", ".colors", XrmoptionNoArg, "depth" }, + {"-perspective-3d", ".projection3d", XrmoptionNoArg, "perspective" }, + {"-orthographic-3d", ".projection3d", XrmoptionNoArg, "orthographic" }, + {"-perspective-4d", ".projection4d", XrmoptionNoArg, "perspective" }, + {"-orthographic-4d", ".projection4d", XrmoptionNoArg, "orthographic" }, + {"-speed-wx", ".speedwx", XrmoptionSepArg, 0 }, + {"-speed-wy", ".speedwy", XrmoptionSepArg, 0 }, + {"-speed-wz", ".speedwz", XrmoptionSepArg, 0 }, + {"-speed-xy", ".speedxy", XrmoptionSepArg, 0 }, + {"-speed-xz", ".speedxz", XrmoptionSepArg, 0 }, + {"-speed-yz", ".speedyz", XrmoptionSepArg, 0 } +}; + +static argtype vars[] = +{ + { &mode, "displayMode", "DisplayMode", DEF_DISPLAY_MODE, t_String }, + { &poly_str, "polytope", "Polytope", DEF_POLYTOPE, t_String }, + { &color_str, "colors", "Colors", DEF_COLORS, t_String }, + { &proj_3d, "projection3d", "Projection3d",DEF_PROJECTION_3D, t_String }, + { &proj_4d, "projection4d", "Projection4d",DEF_PROJECTION_4D, t_String }, + { &speed_wx, "speedwx", "Speedwx", DEF_SPEEDWX, t_Float}, + { &speed_wy, "speedwy", "Speedwy", DEF_SPEEDWY, t_Float}, + { &speed_wz, "speedwz", "Speedwz", DEF_SPEEDWZ, t_Float}, + { &speed_xy, "speedxy", "Speedxy", DEF_SPEEDXY, t_Float}, + { &speed_xz, "speedxz", "Speedxz", DEF_SPEEDXZ, t_Float}, + { &speed_yz, "speedyz", "Speedyz", DEF_SPEEDYZ, t_Float} +}; + +static OptionStruct desc[] = +{ + { "-wireframe", "display the polytope as a wireframe mesh" }, + { "-surface", "display the polytope as a solid surface" }, + { "-transparent", "display the polytope as a transparent surface" }, + { "-solid", "display the polytope as a solid object" }, + { "-bands", "display the polytope as see-through bands" }, + { "-twosided", "display the polytope with two colors" }, + { "-colorwheel", "display the polytope with a smooth color wheel" }, + { "-perspective-3d", "project the polytope perspectively from 3d to 2d" }, + { "-orthographic-3d", "project the polytope orthographically from 3d to 2d"}, + { "-perspective-4d", "project the polytope perspectively from 4d to 3d" }, + { "-orthographic-4d", "project the polytope orthographically from 4d to 3d"}, + { "-speed-wx ", "rotation speed around the wx plane" }, + { "-speed-wy ", "rotation speed around the wy plane" }, + { "-speed-wz ", "rotation speed around the wz plane" }, + { "-speed-xy ", "rotation speed around the xy plane" }, + { "-speed-xz ", "rotation speed around the xz plane" }, + { "-speed-yz ", "rotation speed around the yz plane" } +}; + +ENTRYPOINT ModeSpecOpt polytopes_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + + +/* 5-cell {3,3,3} */ +#define NUM_VERT_5 5 +#define NUM_EDGE_5 10 +#define NUM_FACE_5 10 +#define VERT_PER_FACE_5 3 + +#define MIN_EDGE_DEPTH_5 (-0.5) +#define MAX_EDGE_DEPTH_5 0.75 +#define MIN_FACE_DEPTH_5 (-0.5) +#define MAX_FACE_DEPTH_5 (1.0/3.0) + + +/* 8-cell {4,3,3} */ +#define NUM_VERT_8 16 +#define NUM_EDGE_8 32 +#define NUM_FACE_8 24 +#define VERT_PER_FACE_8 4 + +#define MIN_EDGE_DEPTH_8 (-1.0) +#define MAX_EDGE_DEPTH_8 1.0 +#define MIN_FACE_DEPTH_8 (-1.0) +#define MAX_FACE_DEPTH_8 1.0 + +/* 16-cell {3,3,4} */ +#define NUM_VERT_16 8 +#define NUM_EDGE_16 24 +#define NUM_FACE_16 32 +#define VERT_PER_FACE_16 3 + +#define MIN_EDGE_DEPTH_16 (-1.0) +#define MAX_EDGE_DEPTH_16 1.0 +#define MIN_FACE_DEPTH_16 (-2.0/3.0) +#define MAX_FACE_DEPTH_16 (2.0/3.0) + + +/* 24-cell {3,4,3} */ +#define NUM_VERT_24 24 +#define NUM_EDGE_24 96 +#define NUM_FACE_24 96 +#define VERT_PER_FACE_24 3 + +#define MIN_EDGE_DEPTH_24 (-SQRT2) +#define MAX_EDGE_DEPTH_24 SQRT2 +#define MIN_FACE_DEPTH_24 (-SQRT2) +#define MAX_FACE_DEPTH_24 SQRT2 + + +/* 120-cell {5,3,3} */ +#define NUM_VERT_120 600 +#define NUM_EDGE_120 1200 +#define NUM_FACE_120 720 +#define VERT_PER_FACE_120 5 + +#define MIN_EDGE_DEPTH_120 (-GOLDEN22) +#define MAX_EDGE_DEPTH_120 GOLDEN22 +#define MIN_FACE_DEPTH_120 (-GOLDEN22) +#define MAX_FACE_DEPTH_120 GOLDEN22 + + +/* 600-cell {3,3,5} */ +#define NUM_VERT_600 120 +#define NUM_EDGE_600 720 +#define NUM_FACE_600 1200 +#define VERT_PER_FACE_600 3 + +#define MIN_EDGE_DEPTH_600 (-GOLDEN/2.0-1) +#define MAX_EDGE_DEPTH_600 (GOLDEN/2.0+1) +#define MIN_FACE_DEPTH_600 ((-2*GOLDEN-2)/3.0) +#define MAX_FACE_DEPTH_600 ((2*GOLDEN+2)/3.0) + + +typedef struct { + GLint WindH, WindW; + GLXContext *glx_context; + /* 4D rotation angles */ + float alpha, beta, delta, zeta, eta, theta; + /* Aspect ratio of the current window */ + float aspect; + /* Counter */ + int tick, poly; + /* Trackball states */ + trackball_state *trackballs[2]; + int current_trackball; + Bool button_pressed; + + float edge_color_5[NUM_EDGE_5][4]; + float face_color_5[NUM_FACE_5][4]; + float face_color_trans_5[NUM_FACE_5][4]; + + float edge_color_8[NUM_EDGE_8][4]; + float face_color_8[NUM_FACE_8][4]; + float face_color_trans_8[NUM_FACE_8][4]; + + float edge_color_16[NUM_EDGE_16][4]; + float face_color_16[NUM_FACE_16][4]; + float face_color_trans_16[NUM_FACE_16][4]; + + float edge_color_24[NUM_EDGE_24][4]; + float face_color_24[NUM_FACE_24][4]; + float face_color_trans_24[NUM_FACE_24][4]; + + float edge_color_120[NUM_EDGE_120][4]; + float face_color_120[NUM_FACE_120][4]; + float face_color_trans_120[NUM_FACE_120][4]; + + float edge_color_600[NUM_EDGE_600][4]; + float face_color_600[NUM_FACE_600][4]; + float face_color_trans_600[NUM_FACE_600][4]; + + float speed_scale; + +} polytopesstruct; + +static polytopesstruct *poly = (polytopesstruct *) NULL; + + +/* Vertex, edge, and face data for the six regular polytopes. All the + polytopes are constructed with coordinates chosen such that their 4d + circumsphere has a radius of 2. */ + +static const float vert_5[NUM_VERT_5][4] = { + { -SQRT5OVER2, -SQRT5OVER6, -SQRT5OVER12, -0.5 }, + { SQRT5OVER2, -SQRT5OVER6, -SQRT5OVER12, -0.5 }, + { 0.0, SQRT10OVER3, -SQRT5OVER12, -0.5 }, + { 0.0, 0.0, SQRT15OVER4, -0.5 }, + { 0.0, 0.0, 0.0, 2.0 } +}; + +static const int edge_5[NUM_EDGE_5][2] = { + { 0, 1 }, { 0, 2 }, { 0, 3 }, { 0, 4 }, { 1, 2 }, { 1, 3 }, { 1, 4 }, + { 2, 3 }, { 2, 4 }, { 3, 4 } +}; + +static const int face_5[NUM_FACE_5][VERT_PER_FACE_5] = { + { 0, 1, 2 }, { 0, 1, 3 }, { 0, 1, 4 }, { 0, 2, 3 }, { 0, 2, 4 }, { 0, 3, 4 }, + { 1, 2, 3 }, { 1, 2, 4 }, { 1, 3, 4 }, { 2, 3, 4 } +}; + + +static const float vert_8[NUM_VERT_8][4] = { + { -1.0, -1.0, -1.0, -1.0 }, { 1.0, -1.0, -1.0, -1.0 }, + { -1.0, 1.0, -1.0, -1.0 }, { 1.0, 1.0, -1.0, -1.0 }, + { -1.0, -1.0, 1.0, -1.0 }, { 1.0, -1.0, 1.0, -1.0 }, + { -1.0, 1.0, 1.0, -1.0 }, { 1.0, 1.0, 1.0, -1.0 }, + { -1.0, -1.0, -1.0, 1.0 }, { 1.0, -1.0, -1.0, 1.0 }, + { -1.0, 1.0, -1.0, 1.0 }, { 1.0, 1.0, -1.0, 1.0 }, + { -1.0, -1.0, 1.0, 1.0 }, { 1.0, -1.0, 1.0, 1.0 }, + { -1.0, 1.0, 1.0, 1.0 }, { 1.0, 1.0, 1.0, 1.0 } +}; + +static const int edge_8[NUM_EDGE_8][2] = { + { 0, 1 }, { 0, 2 }, { 0, 4 }, { 0, 8 }, { 1, 3 }, { 1, 5 }, + { 1, 9 }, { 2, 3 }, { 2, 6 }, { 2, 10 }, { 3, 7 }, { 3, 11 }, + { 4, 5 }, { 4, 6 }, { 4, 12 }, { 5, 7 }, { 5, 13 }, { 6, 7 }, + { 6, 14 }, { 7, 15 }, { 8, 9 }, { 8, 10 }, { 8, 12 }, { 9, 11 }, + { 9, 13 }, { 10, 11 }, { 10, 14 }, { 11, 15 }, { 12, 13 }, { 12, 14 }, + { 13, 15 }, { 14, 15 } +}; + +static const int face_8[NUM_FACE_8][VERT_PER_FACE_8] = { + { 0, 1, 3, 2 }, { 0, 1, 5, 4 }, { 0, 1, 9, 8 }, + { 0, 2, 6, 4 }, { 0, 2, 10, 8 }, { 0, 4, 12, 8 }, + { 1, 3, 7, 5 }, { 1, 3, 11, 9 }, { 1, 5, 13, 9 }, + { 2, 3, 7, 6 }, { 2, 3, 11, 10 }, { 2, 6, 14, 10 }, + { 3, 7, 15, 11 }, { 4, 5, 7, 6 }, { 4, 5, 13, 12 }, + { 4, 6, 14, 12 }, { 5, 7, 15, 13 }, { 6, 7, 15, 14 }, + { 8, 9, 11, 10 }, { 8, 9, 13, 12 }, { 8, 10, 14, 12 }, + { 9, 11, 15, 13 }, { 10, 11, 15, 14 }, { 12, 13, 15, 14 } +}; + + + +static const float vert_16[NUM_VERT_16][4] = { + { 0.0, 0.0, 0.0, -2.0 }, { 0.0, 0.0, -2.0, 0.0 }, + { 0.0, -2.0, 0.0, 0.0 }, { -2.0, 0.0, 0.0, 0.0 }, + { 2.0, 0.0, 0.0, 0.0 }, { 0.0, 2.0, 0.0, 0.0 }, + { 0.0, 0.0, 2.0, 0.0 }, { 0.0, 0.0, 0.0, 2.0 } +}; + +static const int edge_16[NUM_EDGE_16][2] = { + { 0, 1 }, { 0, 2 }, { 0, 3 }, { 0, 4 }, { 0, 5 }, { 0, 6 }, { 1, 2 }, + { 1, 3 }, { 1, 4 }, { 1, 5 }, { 1, 7 }, { 2, 3 }, { 2, 4 }, { 2, 6 }, + { 2, 7 }, { 3, 5 }, { 3, 6 }, { 3, 7 }, { 4, 5 }, { 4, 6 }, { 4, 7 }, + { 5, 6 }, { 5, 7 }, { 6, 7 } +}; + +static const int face_16[NUM_FACE_16][VERT_PER_FACE_16] = { + { 0, 1, 2 }, { 0, 1, 3 }, { 0, 1, 4 }, { 0, 1, 5 }, { 0, 2, 3 }, { 0, 2, 4 }, + { 0, 2, 6 }, { 0, 3, 5 }, { 0, 3, 6 }, { 0, 4, 5 }, { 0, 4, 6 }, { 0, 5, 6 }, + { 1, 2, 3 }, { 1, 2, 4 }, { 1, 2, 7 }, { 1, 3, 5 }, { 1, 3, 7 }, { 1, 4, 5 }, + { 1, 4, 7 }, { 1, 5, 7 }, { 2, 3, 6 }, { 2, 3, 7 }, { 2, 4, 6 }, { 2, 4, 7 }, + { 2, 6, 7 }, { 3, 5, 6 }, { 3, 5, 7 }, { 3, 6, 7 }, { 4, 5, 6 }, { 4, 5, 7 }, + { 4, 6, 7 }, { 5, 6, 7 } +}; + + + +static const float vert_24[NUM_VERT_24][4] = { + { 0.0, 0.0, -SQRT2, -SQRT2 }, { 0.0, -SQRT2, 0.0, -SQRT2 }, + { -SQRT2, 0.0, 0.0, -SQRT2 }, { SQRT2, 0.0, 0.0, -SQRT2 }, + { 0.0, SQRT2, 0.0, -SQRT2 }, { 0.0, 0.0, SQRT2, -SQRT2 }, + { 0.0, -SQRT2, -SQRT2, 0.0 }, { -SQRT2, 0.0, -SQRT2, 0.0 }, + { SQRT2, 0.0, -SQRT2, 0.0 }, { 0.0, SQRT2, -SQRT2, 0.0 }, + { -SQRT2, -SQRT2, 0.0, 0.0 }, { SQRT2, -SQRT2, 0.0, 0.0 }, + { -SQRT2, SQRT2, 0.0, 0.0 }, { SQRT2, SQRT2, 0.0, 0.0 }, + { 0.0, -SQRT2, SQRT2, 0.0 }, { -SQRT2, 0.0, SQRT2, 0.0 }, + { SQRT2, 0.0, SQRT2, 0.0 }, { 0.0, SQRT2, SQRT2, 0.0 }, + { 0.0, 0.0, -SQRT2, SQRT2 }, { 0.0, -SQRT2, 0.0, SQRT2 }, + { -SQRT2, 0.0, 0.0, SQRT2 }, { SQRT2, 0.0, 0.0, SQRT2 }, + { 0.0, SQRT2, 0.0, SQRT2 }, { 0.0, 0.0, SQRT2, SQRT2 } +}; + +static const int edge_24[NUM_EDGE_24][2] = { + { 0, 1 }, { 0, 2 }, { 0, 3 }, { 0, 4 }, { 0, 6 }, { 0, 7 }, + { 0, 8 }, { 0, 9 }, { 1, 2 }, { 1, 3 }, { 1, 5 }, { 1, 6 }, + { 1, 10 }, { 1, 11 }, { 1, 14 }, { 2, 4 }, { 2, 5 }, { 2, 7 }, + { 2, 10 }, { 2, 12 }, { 2, 15 }, { 3, 4 }, { 3, 5 }, { 3, 8 }, + { 3, 11 }, { 3, 13 }, { 3, 16 }, { 4, 5 }, { 4, 9 }, { 4, 12 }, + { 4, 13 }, { 4, 17 }, { 5, 14 }, { 5, 15 }, { 5, 16 }, { 5, 17 }, + { 6, 7 }, { 6, 8 }, { 6, 10 }, { 6, 11 }, { 6, 18 }, { 6, 19 }, + { 7, 9 }, { 7, 10 }, { 7, 12 }, { 7, 18 }, { 7, 20 }, { 8, 9 }, + { 8, 11 }, { 8, 13 }, { 8, 18 }, { 8, 21 }, { 9, 12 }, { 9, 13 }, + { 9, 18 }, { 9, 22 }, { 10, 14 }, { 10, 15 }, { 10, 19 }, { 10, 20 }, + { 11, 14 }, { 11, 16 }, { 11, 19 }, { 11, 21 }, { 12, 15 }, { 12, 17 }, + { 12, 20 }, { 12, 22 }, { 13, 16 }, { 13, 17 }, { 13, 21 }, { 13, 22 }, + { 14, 15 }, { 14, 16 }, { 14, 19 }, { 14, 23 }, { 15, 17 }, { 15, 20 }, + { 15, 23 }, { 16, 17 }, { 16, 21 }, { 16, 23 }, { 17, 22 }, { 17, 23 }, + { 18, 19 }, { 18, 20 }, { 18, 21 }, { 18, 22 }, { 19, 20 }, { 19, 21 }, + { 19, 23 }, { 20, 22 }, { 20, 23 }, { 21, 22 }, { 21, 23 }, { 22, 23 } +}; + +static const int face_24[NUM_FACE_24][VERT_PER_FACE_24] = { + { 0, 1, 2 }, { 0, 1, 3 }, { 0, 1, 6 }, { 0, 2, 4 }, + { 0, 2, 7 }, { 0, 3, 4 }, { 0, 3, 8 }, { 0, 4, 9 }, + { 0, 6, 7 }, { 0, 6, 8 }, { 0, 7, 9 }, { 0, 8, 9 }, + { 1, 2, 5 }, { 1, 2, 10 }, { 1, 3, 5 }, { 1, 3, 11 }, + { 1, 5, 14 }, { 1, 6, 10 }, { 1, 6, 11 }, { 1, 10, 14 }, + { 1, 11, 14 }, { 2, 4, 5 }, { 2, 4, 12 }, { 2, 5, 15 }, + { 2, 7, 10 }, { 2, 7, 12 }, { 2, 10, 15 }, { 2, 12, 15 }, + { 3, 4, 5 }, { 3, 4, 13 }, { 3, 5, 16 }, { 3, 8, 11 }, + { 3, 8, 13 }, { 3, 11, 16 }, { 3, 13, 16 }, { 4, 5, 17 }, + { 4, 9, 12 }, { 4, 9, 13 }, { 4, 12, 17 }, { 4, 13, 17 }, + { 5, 14, 15 }, { 5, 14, 16 }, { 5, 15, 17 }, { 5, 16, 17 }, + { 6, 7, 10 }, { 6, 7, 18 }, { 6, 8, 11 }, { 6, 8, 18 }, + { 6, 10, 19 }, { 6, 11, 19 }, { 6, 18, 19 }, { 7, 9, 12 }, + { 7, 9, 18 }, { 7, 10, 20 }, { 7, 12, 20 }, { 7, 18, 20 }, + { 8, 9, 13 }, { 8, 9, 18 }, { 8, 11, 21 }, { 8, 13, 21 }, + { 8, 18, 21 }, { 9, 12, 22 }, { 9, 13, 22 }, { 9, 18, 22 }, + { 10, 14, 15 }, { 10, 14, 19 }, { 10, 15, 20 }, { 10, 19, 20 }, + { 11, 14, 16 }, { 11, 14, 19 }, { 11, 16, 21 }, { 11, 19, 21 }, + { 12, 15, 17 }, { 12, 15, 20 }, { 12, 17, 22 }, { 12, 20, 22 }, + { 13, 16, 17 }, { 13, 16, 21 }, { 13, 17, 22 }, { 13, 21, 22 }, + { 14, 15, 23 }, { 14, 16, 23 }, { 14, 19, 23 }, { 15, 17, 23 }, + { 15, 20, 23 }, { 16, 17, 23 }, { 16, 21, 23 }, { 17, 22, 23 }, + { 18, 19, 20 }, { 18, 19, 21 }, { 18, 20, 22 }, { 18, 21, 22 }, + { 19, 20, 23 }, { 19, 21, 23 }, { 20, 22, 23 }, { 21, 22, 23 } +}; + + + + +static const float vert_120[NUM_VERT_120][4] = { + { -GOLDENINV22, 0.0, -SQRT2INV, -GOLDEN22 }, + { GOLDENINV22, 0.0, -SQRT2INV, -GOLDEN22 }, + { -GOLDENINV2, -GOLDENINV2, -GOLDENINV2, -GOLDEN22 }, + { GOLDENINV2, -GOLDENINV2, -GOLDENINV2, -GOLDEN22 }, + { -GOLDENINV2, GOLDENINV2, -GOLDENINV2, -GOLDEN22 }, + { GOLDENINV2, GOLDENINV2, -GOLDENINV2, -GOLDEN22 }, + { 0.0, -SQRT2INV, -GOLDENINV22, -GOLDEN22 }, + { 0.0, SQRT2INV, -GOLDENINV22, -GOLDEN22 }, + { -SQRT2INV, -GOLDENINV22, 0.0, -GOLDEN22 }, + { SQRT2INV, -GOLDENINV22, 0.0, -GOLDEN22 }, + { -SQRT2INV, GOLDENINV22, 0.0, -GOLDEN22 }, + { SQRT2INV, GOLDENINV22, 0.0, -GOLDEN22 }, + { 0.0, -SQRT2INV, GOLDENINV22, -GOLDEN22 }, + { 0.0, SQRT2INV, GOLDENINV22, -GOLDEN22 }, + { -GOLDENINV2, -GOLDENINV2, GOLDENINV2, -GOLDEN22 }, + { GOLDENINV2, -GOLDENINV2, GOLDENINV2, -GOLDEN22 }, + { -GOLDENINV2, GOLDENINV2, GOLDENINV2, -GOLDEN22 }, + { GOLDENINV2, GOLDENINV2, GOLDENINV2, -GOLDEN22 }, + { -GOLDENINV22, 0.0, SQRT2INV, -GOLDEN22 }, + { GOLDENINV22, 0.0, SQRT2INV, -GOLDEN22 }, + { -GOLDENINV2, 0.0, -GOLDEN2, -SQRT5OVER2 }, + { GOLDENINV2, 0.0, -GOLDEN2, -SQRT5OVER2 }, + { -SQRT2INV, -SQRT2INV, -SQRT2INV, -SQRT5OVER2 }, + { SQRT2INV, -SQRT2INV, -SQRT2INV, -SQRT5OVER2 }, + { -SQRT2INV, SQRT2INV, -SQRT2INV, -SQRT5OVER2 }, + { SQRT2INV, SQRT2INV, -SQRT2INV, -SQRT5OVER2 }, + { 0.0, -GOLDEN2, -GOLDENINV2, -SQRT5OVER2 }, + { 0.0, GOLDEN2, -GOLDENINV2, -SQRT5OVER2 }, + { -GOLDEN2, -GOLDENINV2, 0.0, -SQRT5OVER2 }, + { GOLDEN2, -GOLDENINV2, 0.0, -SQRT5OVER2 }, + { -GOLDEN2, GOLDENINV2, 0.0, -SQRT5OVER2 }, + { GOLDEN2, GOLDENINV2, 0.0, -SQRT5OVER2 }, + { 0.0, -GOLDEN2, GOLDENINV2, -SQRT5OVER2 }, + { 0.0, GOLDEN2, GOLDENINV2, -SQRT5OVER2 }, + { -SQRT2INV, -SQRT2INV, SQRT2INV, -SQRT5OVER2 }, + { SQRT2INV, -SQRT2INV, SQRT2INV, -SQRT5OVER2 }, + { -SQRT2INV, SQRT2INV, SQRT2INV, -SQRT5OVER2 }, + { SQRT2INV, SQRT2INV, SQRT2INV, -SQRT5OVER2 }, + { -GOLDENINV2, 0.0, GOLDEN2, -SQRT5OVER2 }, + { GOLDENINV2, 0.0, GOLDEN2, -SQRT5OVER2 }, + { 0.0, 0.0, -SQRT2, -SQRT2 }, + { -SQRT2INV, -GOLDENINV2, -GOLDEN2, -SQRT2 }, + { SQRT2INV, -GOLDENINV2, -GOLDEN2, -SQRT2 }, + { -SQRT2INV, GOLDENINV2, -GOLDEN2, -SQRT2 }, + { SQRT2INV, GOLDENINV2, -GOLDEN2, -SQRT2 }, + { -GOLDENINV2, -GOLDEN2, -SQRT2INV, -SQRT2 }, + { GOLDENINV2, -GOLDEN2, -SQRT2INV, -SQRT2 }, + { -GOLDENINV2, GOLDEN2, -SQRT2INV, -SQRT2 }, + { GOLDENINV2, GOLDEN2, -SQRT2INV, -SQRT2 }, + { -GOLDEN2, -SQRT2INV, -GOLDENINV2, -SQRT2 }, + { GOLDEN2, -SQRT2INV, -GOLDENINV2, -SQRT2 }, + { -GOLDEN2, SQRT2INV, -GOLDENINV2, -SQRT2 }, + { GOLDEN2, SQRT2INV, -GOLDENINV2, -SQRT2 }, + { 0.0, -SQRT2, 0.0, -SQRT2 }, + { -SQRT2, 0.0, 0.0, -SQRT2 }, + { SQRT2, 0.0, 0.0, -SQRT2 }, + { 0.0, SQRT2, 0.0, -SQRT2 }, + { -GOLDEN2, -SQRT2INV, GOLDENINV2, -SQRT2 }, + { GOLDEN2, -SQRT2INV, GOLDENINV2, -SQRT2 }, + { -GOLDEN2, SQRT2INV, GOLDENINV2, -SQRT2 }, + { GOLDEN2, SQRT2INV, GOLDENINV2, -SQRT2 }, + { -GOLDENINV2, -GOLDEN2, SQRT2INV, -SQRT2 }, + { GOLDENINV2, -GOLDEN2, SQRT2INV, -SQRT2 }, + { -GOLDENINV2, GOLDEN2, SQRT2INV, -SQRT2 }, + { GOLDENINV2, GOLDEN2, SQRT2INV, -SQRT2 }, + { -SQRT2INV, -GOLDENINV2, GOLDEN2, -SQRT2 }, + { SQRT2INV, -GOLDENINV2, GOLDEN2, -SQRT2 }, + { -SQRT2INV, GOLDENINV2, GOLDEN2, -SQRT2 }, + { SQRT2INV, GOLDENINV2, GOLDEN2, -SQRT2 }, + { 0.0, 0.0, SQRT2, -SQRT2 }, + { 0.0, -GOLDENINV2, -SQRT5OVER2, -GOLDEN2 }, + { 0.0, GOLDENINV2, -SQRT5OVER2, -GOLDEN2 }, + { -GOLDENINV2, -SQRT2INV, -SQRT2, -GOLDEN2 }, + { GOLDENINV2, -SQRT2INV, -SQRT2, -GOLDEN2 }, + { -GOLDENINV2, SQRT2INV, -SQRT2, -GOLDEN2 }, + { GOLDENINV2, SQRT2INV, -SQRT2, -GOLDEN2 }, + { -GOLDENINV22, -GOLDEN2, -GOLDEN2, -GOLDEN2 }, + { GOLDENINV22, -GOLDEN2, -GOLDEN2, -GOLDEN2 }, + { -GOLDEN2, -GOLDENINV22, -GOLDEN2, -GOLDEN2 }, + { GOLDEN2, -GOLDENINV22, -GOLDEN2, -GOLDEN2 }, + { -GOLDEN2, GOLDENINV22, -GOLDEN2, -GOLDEN2 }, + { GOLDEN2, GOLDENINV22, -GOLDEN2, -GOLDEN2 }, + { -GOLDENINV22, GOLDEN2, -GOLDEN2, -GOLDEN2 }, + { GOLDENINV22, GOLDEN2, -GOLDEN2, -GOLDEN2 }, + { -SQRT2, -GOLDENINV2, -SQRT2INV, -GOLDEN2 }, + { SQRT2, -GOLDENINV2, -SQRT2INV, -GOLDEN2 }, + { -SQRT2, GOLDENINV2, -SQRT2INV, -GOLDEN2 }, + { SQRT2, GOLDENINV2, -SQRT2INV, -GOLDEN2 }, + { -SQRT2INV, -SQRT2, -GOLDENINV2, -GOLDEN2 }, + { SQRT2INV, -SQRT2, -GOLDENINV2, -GOLDEN2 }, + { -SQRT5OVER2, 0.0, -GOLDENINV2, -GOLDEN2 }, + { SQRT5OVER2, 0.0, -GOLDENINV2, -GOLDEN2 }, + { -SQRT2INV, SQRT2, -GOLDENINV2, -GOLDEN2 }, + { SQRT2INV, SQRT2, -GOLDENINV2, -GOLDEN2 }, + { -GOLDEN2, -GOLDEN2, -GOLDENINV22, -GOLDEN2 }, + { GOLDEN2, -GOLDEN2, -GOLDENINV22, -GOLDEN2 }, + { -GOLDEN2, GOLDEN2, -GOLDENINV22, -GOLDEN2 }, + { GOLDEN2, GOLDEN2, -GOLDENINV22, -GOLDEN2 }, + { -GOLDENINV2, -SQRT5OVER2, 0.0, -GOLDEN2 }, + { GOLDENINV2, -SQRT5OVER2, 0.0, -GOLDEN2 }, + { -GOLDENINV2, SQRT5OVER2, 0.0, -GOLDEN2 }, + { GOLDENINV2, SQRT5OVER2, 0.0, -GOLDEN2 }, + { -GOLDEN2, -GOLDEN2, GOLDENINV22, -GOLDEN2 }, + { GOLDEN2, -GOLDEN2, GOLDENINV22, -GOLDEN2 }, + { -GOLDEN2, GOLDEN2, GOLDENINV22, -GOLDEN2 }, + { GOLDEN2, GOLDEN2, GOLDENINV22, -GOLDEN2 }, + { -SQRT2INV, -SQRT2, GOLDENINV2, -GOLDEN2 }, + { SQRT2INV, -SQRT2, GOLDENINV2, -GOLDEN2 }, + { -SQRT5OVER2, 0.0, GOLDENINV2, -GOLDEN2 }, + { SQRT5OVER2, 0.0, GOLDENINV2, -GOLDEN2 }, + { -SQRT2INV, SQRT2, GOLDENINV2, -GOLDEN2 }, + { SQRT2INV, SQRT2, GOLDENINV2, -GOLDEN2 }, + { -SQRT2, -GOLDENINV2, SQRT2INV, -GOLDEN2 }, + { SQRT2, -GOLDENINV2, SQRT2INV, -GOLDEN2 }, + { -SQRT2, GOLDENINV2, SQRT2INV, -GOLDEN2 }, + { SQRT2, GOLDENINV2, SQRT2INV, -GOLDEN2 }, + { -GOLDENINV22, -GOLDEN2, GOLDEN2, -GOLDEN2 }, + { GOLDENINV22, -GOLDEN2, GOLDEN2, -GOLDEN2 }, + { -GOLDEN2, -GOLDENINV22, GOLDEN2, -GOLDEN2 }, + { GOLDEN2, -GOLDENINV22, GOLDEN2, -GOLDEN2 }, + { -GOLDEN2, GOLDENINV22, GOLDEN2, -GOLDEN2 }, + { GOLDEN2, GOLDENINV22, GOLDEN2, -GOLDEN2 }, + { -GOLDENINV22, GOLDEN2, GOLDEN2, -GOLDEN2 }, + { GOLDENINV22, GOLDEN2, GOLDEN2, -GOLDEN2 }, + { -GOLDENINV2, -SQRT2INV, SQRT2, -GOLDEN2 }, + { GOLDENINV2, -SQRT2INV, SQRT2, -GOLDEN2 }, + { -GOLDENINV2, SQRT2INV, SQRT2, -GOLDEN2 }, + { GOLDENINV2, SQRT2INV, SQRT2, -GOLDEN2 }, + { 0.0, -GOLDENINV2, SQRT5OVER2, -GOLDEN2 }, + { 0.0, GOLDENINV2, SQRT5OVER2, -GOLDEN2 }, + { 0.0, -GOLDENINV22, -GOLDEN22, -SQRT2INV }, + { 0.0, GOLDENINV22, -GOLDEN22, -SQRT2INV }, + { -SQRT2INV, -SQRT2INV, -SQRT5OVER2, -SQRT2INV }, + { SQRT2INV, -SQRT2INV, -SQRT5OVER2, -SQRT2INV }, + { -SQRT2INV, SQRT2INV, -SQRT5OVER2, -SQRT2INV }, + { SQRT2INV, SQRT2INV, -SQRT5OVER2, -SQRT2INV }, + { -GOLDEN2, -GOLDENINV2, -SQRT2, -SQRT2INV }, + { GOLDEN2, -GOLDENINV2, -SQRT2, -SQRT2INV }, + { -GOLDEN2, GOLDENINV2, -SQRT2, -SQRT2INV }, + { GOLDEN2, GOLDENINV2, -SQRT2, -SQRT2INV }, + { -GOLDENINV2, -SQRT2, -GOLDEN2, -SQRT2INV }, + { GOLDENINV2, -SQRT2, -GOLDEN2, -SQRT2INV }, + { -GOLDENINV2, SQRT2, -GOLDEN2, -SQRT2INV }, + { GOLDENINV2, SQRT2, -GOLDEN2, -SQRT2INV }, + { -SQRT2INV, -SQRT5OVER2, -SQRT2INV, -SQRT2INV }, + { SQRT2INV, -SQRT5OVER2, -SQRT2INV, -SQRT2INV }, + { -SQRT5OVER2, -SQRT2INV, -SQRT2INV, -SQRT2INV }, + { SQRT5OVER2, -SQRT2INV, -SQRT2INV, -SQRT2INV }, + { -SQRT5OVER2, SQRT2INV, -SQRT2INV, -SQRT2INV }, + { SQRT5OVER2, SQRT2INV, -SQRT2INV, -SQRT2INV }, + { -SQRT2INV, SQRT5OVER2, -SQRT2INV, -SQRT2INV }, + { SQRT2INV, SQRT5OVER2, -SQRT2INV, -SQRT2INV }, + { -SQRT2, -GOLDEN2, -GOLDENINV2, -SQRT2INV }, + { SQRT2, -GOLDEN2, -GOLDENINV2, -SQRT2INV }, + { -SQRT2, GOLDEN2, -GOLDENINV2, -SQRT2INV }, + { SQRT2, GOLDEN2, -GOLDENINV2, -SQRT2INV }, + { -GOLDEN22, 0.0, -GOLDENINV22, -SQRT2INV }, + { GOLDEN22, 0.0, -GOLDENINV22, -SQRT2INV }, + { -GOLDENINV22, -GOLDEN22, 0.0, -SQRT2INV }, + { GOLDENINV22, -GOLDEN22, 0.0, -SQRT2INV }, + { -GOLDENINV22, GOLDEN22, 0.0, -SQRT2INV }, + { GOLDENINV22, GOLDEN22, 0.0, -SQRT2INV }, + { -GOLDEN22, 0.0, GOLDENINV22, -SQRT2INV }, + { GOLDEN22, 0.0, GOLDENINV22, -SQRT2INV }, + { -SQRT2, -GOLDEN2, GOLDENINV2, -SQRT2INV }, + { SQRT2, -GOLDEN2, GOLDENINV2, -SQRT2INV }, + { -SQRT2, GOLDEN2, GOLDENINV2, -SQRT2INV }, + { SQRT2, GOLDEN2, GOLDENINV2, -SQRT2INV }, + { -SQRT2INV, -SQRT5OVER2, SQRT2INV, -SQRT2INV }, + { SQRT2INV, -SQRT5OVER2, SQRT2INV, -SQRT2INV }, + { -SQRT5OVER2, -SQRT2INV, SQRT2INV, -SQRT2INV }, + { SQRT5OVER2, -SQRT2INV, SQRT2INV, -SQRT2INV }, + { -SQRT5OVER2, SQRT2INV, SQRT2INV, -SQRT2INV }, + { SQRT5OVER2, SQRT2INV, SQRT2INV, -SQRT2INV }, + { -SQRT2INV, SQRT5OVER2, SQRT2INV, -SQRT2INV }, + { SQRT2INV, SQRT5OVER2, SQRT2INV, -SQRT2INV }, + { -GOLDENINV2, -SQRT2, GOLDEN2, -SQRT2INV }, + { GOLDENINV2, -SQRT2, GOLDEN2, -SQRT2INV }, + { -GOLDENINV2, SQRT2, GOLDEN2, -SQRT2INV }, + { GOLDENINV2, SQRT2, GOLDEN2, -SQRT2INV }, + { -GOLDEN2, -GOLDENINV2, SQRT2, -SQRT2INV }, + { GOLDEN2, -GOLDENINV2, SQRT2, -SQRT2INV }, + { -GOLDEN2, GOLDENINV2, SQRT2, -SQRT2INV }, + { GOLDEN2, GOLDENINV2, SQRT2, -SQRT2INV }, + { -SQRT2INV, -SQRT2INV, SQRT5OVER2, -SQRT2INV }, + { SQRT2INV, -SQRT2INV, SQRT5OVER2, -SQRT2INV }, + { -SQRT2INV, SQRT2INV, SQRT5OVER2, -SQRT2INV }, + { SQRT2INV, SQRT2INV, SQRT5OVER2, -SQRT2INV }, + { 0.0, -GOLDENINV22, GOLDEN22, -SQRT2INV }, + { 0.0, GOLDENINV22, GOLDEN22, -SQRT2INV }, + { -GOLDENINV2, -GOLDENINV2, -GOLDEN22, -GOLDENINV2 }, + { GOLDENINV2, -GOLDENINV2, -GOLDEN22, -GOLDENINV2 }, + { -GOLDENINV2, GOLDENINV2, -GOLDEN22, -GOLDENINV2 }, + { GOLDENINV2, GOLDENINV2, -GOLDEN22, -GOLDENINV2 }, + { -GOLDEN2, 0.0, -SQRT5OVER2, -GOLDENINV2 }, + { GOLDEN2, 0.0, -SQRT5OVER2, -GOLDENINV2 }, + { -SQRT2INV, -GOLDEN2, -SQRT2, -GOLDENINV2 }, + { SQRT2INV, -GOLDEN2, -SQRT2, -GOLDENINV2 }, + { -SQRT2INV, GOLDEN2, -SQRT2, -GOLDENINV2 }, + { SQRT2INV, GOLDEN2, -SQRT2, -GOLDENINV2 }, + { 0.0, -SQRT5OVER2, -GOLDEN2, -GOLDENINV2 }, + { -SQRT2, -SQRT2INV, -GOLDEN2, -GOLDENINV2 }, + { SQRT2, -SQRT2INV, -GOLDEN2, -GOLDENINV2 }, + { -SQRT2, SQRT2INV, -GOLDEN2, -GOLDENINV2 }, + { SQRT2, SQRT2INV, -GOLDEN2, -GOLDENINV2 }, + { 0.0, SQRT5OVER2, -GOLDEN2, -GOLDENINV2 }, + { -GOLDEN2, -SQRT2, -SQRT2INV, -GOLDENINV2 }, + { GOLDEN2, -SQRT2, -SQRT2INV, -GOLDENINV2 }, + { -GOLDEN2, SQRT2, -SQRT2INV, -GOLDENINV2 }, + { GOLDEN2, SQRT2, -SQRT2INV, -GOLDENINV2 }, + { -GOLDENINV2, -GOLDEN22, -GOLDENINV2, -GOLDENINV2 }, + { GOLDENINV2, -GOLDEN22, -GOLDENINV2, -GOLDENINV2 }, + { -GOLDEN22, -GOLDENINV2, -GOLDENINV2, -GOLDENINV2 }, + { GOLDEN22, -GOLDENINV2, -GOLDENINV2, -GOLDENINV2 }, + { -GOLDEN22, GOLDENINV2, -GOLDENINV2, -GOLDENINV2 }, + { GOLDEN22, GOLDENINV2, -GOLDENINV2, -GOLDENINV2 }, + { -GOLDENINV2, GOLDEN22, -GOLDENINV2, -GOLDENINV2 }, + { GOLDENINV2, GOLDEN22, -GOLDENINV2, -GOLDENINV2 }, + { -SQRT5OVER2, -GOLDEN2, 0.0, -GOLDENINV2 }, + { SQRT5OVER2, -GOLDEN2, 0.0, -GOLDENINV2 }, + { -SQRT5OVER2, GOLDEN2, 0.0, -GOLDENINV2 }, + { SQRT5OVER2, GOLDEN2, 0.0, -GOLDENINV2 }, + { -GOLDENINV2, -GOLDEN22, GOLDENINV2, -GOLDENINV2 }, + { GOLDENINV2, -GOLDEN22, GOLDENINV2, -GOLDENINV2 }, + { -GOLDEN22, -GOLDENINV2, GOLDENINV2, -GOLDENINV2 }, + { GOLDEN22, -GOLDENINV2, GOLDENINV2, -GOLDENINV2 }, + { -GOLDEN22, GOLDENINV2, GOLDENINV2, -GOLDENINV2 }, + { GOLDEN22, GOLDENINV2, GOLDENINV2, -GOLDENINV2 }, + { -GOLDENINV2, GOLDEN22, GOLDENINV2, -GOLDENINV2 }, + { GOLDENINV2, GOLDEN22, GOLDENINV2, -GOLDENINV2 }, + { -GOLDEN2, -SQRT2, SQRT2INV, -GOLDENINV2 }, + { GOLDEN2, -SQRT2, SQRT2INV, -GOLDENINV2 }, + { -GOLDEN2, SQRT2, SQRT2INV, -GOLDENINV2 }, + { GOLDEN2, SQRT2, SQRT2INV, -GOLDENINV2 }, + { 0.0, -SQRT5OVER2, GOLDEN2, -GOLDENINV2 }, + { -SQRT2, -SQRT2INV, GOLDEN2, -GOLDENINV2 }, + { SQRT2, -SQRT2INV, GOLDEN2, -GOLDENINV2 }, + { -SQRT2, SQRT2INV, GOLDEN2, -GOLDENINV2 }, + { SQRT2, SQRT2INV, GOLDEN2, -GOLDENINV2 }, + { 0.0, SQRT5OVER2, GOLDEN2, -GOLDENINV2 }, + { -SQRT2INV, -GOLDEN2, SQRT2, -GOLDENINV2 }, + { SQRT2INV, -GOLDEN2, SQRT2, -GOLDENINV2 }, + { -SQRT2INV, GOLDEN2, SQRT2, -GOLDENINV2 }, + { SQRT2INV, GOLDEN2, SQRT2, -GOLDENINV2 }, + { -GOLDEN2, 0.0, SQRT5OVER2, -GOLDENINV2 }, + { GOLDEN2, 0.0, SQRT5OVER2, -GOLDENINV2 }, + { -GOLDENINV2, -GOLDENINV2, GOLDEN22, -GOLDENINV2 }, + { GOLDENINV2, -GOLDENINV2, GOLDEN22, -GOLDENINV2 }, + { -GOLDENINV2, GOLDENINV2, GOLDEN22, -GOLDENINV2 }, + { GOLDENINV2, GOLDENINV2, GOLDEN22, -GOLDENINV2 }, + { -SQRT2INV, 0.0, -GOLDEN22, -GOLDENINV22 }, + { SQRT2INV, 0.0, -GOLDEN22, -GOLDENINV22 }, + { -GOLDEN2, -GOLDEN2, -GOLDEN2, -GOLDENINV22 }, + { GOLDEN2, -GOLDEN2, -GOLDEN2, -GOLDENINV22 }, + { -GOLDEN2, GOLDEN2, -GOLDEN2, -GOLDENINV22 }, + { GOLDEN2, GOLDEN2, -GOLDEN2, -GOLDENINV22 }, + { 0.0, -GOLDEN22, -SQRT2INV, -GOLDENINV22 }, + { 0.0, GOLDEN22, -SQRT2INV, -GOLDENINV22 }, + { -GOLDEN22, -SQRT2INV, 0.0, -GOLDENINV22 }, + { GOLDEN22, -SQRT2INV, 0.0, -GOLDENINV22 }, + { -GOLDEN22, SQRT2INV, 0.0, -GOLDENINV22 }, + { GOLDEN22, SQRT2INV, 0.0, -GOLDENINV22 }, + { 0.0, -GOLDEN22, SQRT2INV, -GOLDENINV22 }, + { 0.0, GOLDEN22, SQRT2INV, -GOLDENINV22 }, + { -GOLDEN2, -GOLDEN2, GOLDEN2, -GOLDENINV22 }, + { GOLDEN2, -GOLDEN2, GOLDEN2, -GOLDENINV22 }, + { -GOLDEN2, GOLDEN2, GOLDEN2, -GOLDENINV22 }, + { GOLDEN2, GOLDEN2, GOLDEN2, -GOLDENINV22 }, + { -SQRT2INV, 0.0, GOLDEN22, -GOLDENINV22 }, + { SQRT2INV, 0.0, GOLDEN22, -GOLDENINV22 }, + { -GOLDENINV22, -SQRT2INV, -GOLDEN22, 0.0 }, + { GOLDENINV22, -SQRT2INV, -GOLDEN22, 0.0 }, + { -GOLDENINV22, SQRT2INV, -GOLDEN22, 0.0 }, + { GOLDENINV22, SQRT2INV, -GOLDEN22, 0.0 }, + { -GOLDENINV2, -GOLDEN2, -SQRT5OVER2, 0.0 }, + { GOLDENINV2, -GOLDEN2, -SQRT5OVER2, 0.0 }, + { -GOLDENINV2, GOLDEN2, -SQRT5OVER2, 0.0 }, + { GOLDENINV2, GOLDEN2, -SQRT5OVER2, 0.0 }, + { 0.0, -SQRT2, -SQRT2, 0.0 }, + { -SQRT2, 0.0, -SQRT2, 0.0 }, + { SQRT2, 0.0, -SQRT2, 0.0 }, + { 0.0, SQRT2, -SQRT2, 0.0 }, + { -SQRT5OVER2, -GOLDENINV2, -GOLDEN2, 0.0 }, + { SQRT5OVER2, -GOLDENINV2, -GOLDEN2, 0.0 }, + { -SQRT5OVER2, GOLDENINV2, -GOLDEN2, 0.0 }, + { SQRT5OVER2, GOLDENINV2, -GOLDEN2, 0.0 }, + { -GOLDEN22, -GOLDENINV22, -SQRT2INV, 0.0 }, + { GOLDEN22, -GOLDENINV22, -SQRT2INV, 0.0 }, + { -GOLDEN22, GOLDENINV22, -SQRT2INV, 0.0 }, + { GOLDEN22, GOLDENINV22, -SQRT2INV, 0.0 }, + { -GOLDEN2, -SQRT5OVER2, -GOLDENINV2, 0.0 }, + { GOLDEN2, -SQRT5OVER2, -GOLDENINV2, 0.0 }, + { -GOLDEN2, SQRT5OVER2, -GOLDENINV2, 0.0 }, + { GOLDEN2, SQRT5OVER2, -GOLDENINV2, 0.0 }, + { -SQRT2INV, -GOLDEN22, -GOLDENINV22, 0.0 }, + { SQRT2INV, -GOLDEN22, -GOLDENINV22, 0.0 }, + { -SQRT2INV, GOLDEN22, -GOLDENINV22, 0.0 }, + { SQRT2INV, GOLDEN22, -GOLDENINV22, 0.0 }, + { -SQRT2, -SQRT2, 0.0, 0.0 }, + { SQRT2, -SQRT2, 0.0, 0.0 }, + { -SQRT2, SQRT2, 0.0, 0.0 }, + { SQRT2, SQRT2, 0.0, 0.0 }, + { -SQRT2INV, -GOLDEN22, GOLDENINV22, 0.0 }, + { SQRT2INV, -GOLDEN22, GOLDENINV22, 0.0 }, + { -SQRT2INV, GOLDEN22, GOLDENINV22, 0.0 }, + { SQRT2INV, GOLDEN22, GOLDENINV22, 0.0 }, + { -GOLDEN2, -SQRT5OVER2, GOLDENINV2, 0.0 }, + { GOLDEN2, -SQRT5OVER2, GOLDENINV2, 0.0 }, + { -GOLDEN2, SQRT5OVER2, GOLDENINV2, 0.0 }, + { GOLDEN2, SQRT5OVER2, GOLDENINV2, 0.0 }, + { -GOLDEN22, -GOLDENINV22, SQRT2INV, 0.0 }, + { GOLDEN22, -GOLDENINV22, SQRT2INV, 0.0 }, + { -GOLDEN22, GOLDENINV22, SQRT2INV, 0.0 }, + { GOLDEN22, GOLDENINV22, SQRT2INV, 0.0 }, + { -SQRT5OVER2, -GOLDENINV2, GOLDEN2, 0.0 }, + { SQRT5OVER2, -GOLDENINV2, GOLDEN2, 0.0 }, + { -SQRT5OVER2, GOLDENINV2, GOLDEN2, 0.0 }, + { SQRT5OVER2, GOLDENINV2, GOLDEN2, 0.0 }, + { 0.0, -SQRT2, SQRT2, 0.0 }, + { -SQRT2, 0.0, SQRT2, 0.0 }, + { SQRT2, 0.0, SQRT2, 0.0 }, + { 0.0, SQRT2, SQRT2, 0.0 }, + { -GOLDENINV2, -GOLDEN2, SQRT5OVER2, 0.0 }, + { GOLDENINV2, -GOLDEN2, SQRT5OVER2, 0.0 }, + { -GOLDENINV2, GOLDEN2, SQRT5OVER2, 0.0 }, + { GOLDENINV2, GOLDEN2, SQRT5OVER2, 0.0 }, + { -GOLDENINV22, -SQRT2INV, GOLDEN22, 0.0 }, + { GOLDENINV22, -SQRT2INV, GOLDEN22, 0.0 }, + { -GOLDENINV22, SQRT2INV, GOLDEN22, 0.0 }, + { GOLDENINV22, SQRT2INV, GOLDEN22, 0.0 }, + { -SQRT2INV, 0.0, -GOLDEN22, GOLDENINV22 }, + { SQRT2INV, 0.0, -GOLDEN22, GOLDENINV22 }, + { -GOLDEN2, -GOLDEN2, -GOLDEN2, GOLDENINV22 }, + { GOLDEN2, -GOLDEN2, -GOLDEN2, GOLDENINV22 }, + { -GOLDEN2, GOLDEN2, -GOLDEN2, GOLDENINV22 }, + { GOLDEN2, GOLDEN2, -GOLDEN2, GOLDENINV22 }, + { 0.0, -GOLDEN22, -SQRT2INV, GOLDENINV22 }, + { 0.0, GOLDEN22, -SQRT2INV, GOLDENINV22 }, + { -GOLDEN22, -SQRT2INV, 0.0, GOLDENINV22 }, + { GOLDEN22, -SQRT2INV, 0.0, GOLDENINV22 }, + { -GOLDEN22, SQRT2INV, 0.0, GOLDENINV22 }, + { GOLDEN22, SQRT2INV, 0.0, GOLDENINV22 }, + { 0.0, -GOLDEN22, SQRT2INV, GOLDENINV22 }, + { 0.0, GOLDEN22, SQRT2INV, GOLDENINV22 }, + { -GOLDEN2, -GOLDEN2, GOLDEN2, GOLDENINV22 }, + { GOLDEN2, -GOLDEN2, GOLDEN2, GOLDENINV22 }, + { -GOLDEN2, GOLDEN2, GOLDEN2, GOLDENINV22 }, + { GOLDEN2, GOLDEN2, GOLDEN2, GOLDENINV22 }, + { -SQRT2INV, 0.0, GOLDEN22, GOLDENINV22 }, + { SQRT2INV, 0.0, GOLDEN22, GOLDENINV22 }, + { -GOLDENINV2, -GOLDENINV2, -GOLDEN22, GOLDENINV2 }, + { GOLDENINV2, -GOLDENINV2, -GOLDEN22, GOLDENINV2 }, + { -GOLDENINV2, GOLDENINV2, -GOLDEN22, GOLDENINV2 }, + { GOLDENINV2, GOLDENINV2, -GOLDEN22, GOLDENINV2 }, + { -GOLDEN2, 0.0, -SQRT5OVER2, GOLDENINV2 }, + { GOLDEN2, 0.0, -SQRT5OVER2, GOLDENINV2 }, + { -SQRT2INV, -GOLDEN2, -SQRT2, GOLDENINV2 }, + { SQRT2INV, -GOLDEN2, -SQRT2, GOLDENINV2 }, + { -SQRT2INV, GOLDEN2, -SQRT2, GOLDENINV2 }, + { SQRT2INV, GOLDEN2, -SQRT2, GOLDENINV2 }, + { 0.0, -SQRT5OVER2, -GOLDEN2, GOLDENINV2 }, + { -SQRT2, -SQRT2INV, -GOLDEN2, GOLDENINV2 }, + { SQRT2, -SQRT2INV, -GOLDEN2, GOLDENINV2 }, + { -SQRT2, SQRT2INV, -GOLDEN2, GOLDENINV2 }, + { SQRT2, SQRT2INV, -GOLDEN2, GOLDENINV2 }, + { 0.0, SQRT5OVER2, -GOLDEN2, GOLDENINV2 }, + { -GOLDEN2, -SQRT2, -SQRT2INV, GOLDENINV2 }, + { GOLDEN2, -SQRT2, -SQRT2INV, GOLDENINV2 }, + { -GOLDEN2, SQRT2, -SQRT2INV, GOLDENINV2 }, + { GOLDEN2, SQRT2, -SQRT2INV, GOLDENINV2 }, + { -GOLDENINV2, -GOLDEN22, -GOLDENINV2, GOLDENINV2 }, + { GOLDENINV2, -GOLDEN22, -GOLDENINV2, GOLDENINV2 }, + { -GOLDEN22, -GOLDENINV2, -GOLDENINV2, GOLDENINV2 }, + { GOLDEN22, -GOLDENINV2, -GOLDENINV2, GOLDENINV2 }, + { -GOLDEN22, GOLDENINV2, -GOLDENINV2, GOLDENINV2 }, + { GOLDEN22, GOLDENINV2, -GOLDENINV2, GOLDENINV2 }, + { -GOLDENINV2, GOLDEN22, -GOLDENINV2, GOLDENINV2 }, + { GOLDENINV2, GOLDEN22, -GOLDENINV2, GOLDENINV2 }, + { -SQRT5OVER2, -GOLDEN2, 0.0, GOLDENINV2 }, + { SQRT5OVER2, -GOLDEN2, 0.0, GOLDENINV2 }, + { -SQRT5OVER2, GOLDEN2, 0.0, GOLDENINV2 }, + { SQRT5OVER2, GOLDEN2, 0.0, GOLDENINV2 }, + { -GOLDENINV2, -GOLDEN22, GOLDENINV2, GOLDENINV2 }, + { GOLDENINV2, -GOLDEN22, GOLDENINV2, GOLDENINV2 }, + { -GOLDEN22, -GOLDENINV2, GOLDENINV2, GOLDENINV2 }, + { GOLDEN22, -GOLDENINV2, GOLDENINV2, GOLDENINV2 }, + { -GOLDEN22, GOLDENINV2, GOLDENINV2, GOLDENINV2 }, + { GOLDEN22, GOLDENINV2, GOLDENINV2, GOLDENINV2 }, + { -GOLDENINV2, GOLDEN22, GOLDENINV2, GOLDENINV2 }, + { GOLDENINV2, GOLDEN22, GOLDENINV2, GOLDENINV2 }, + { -GOLDEN2, -SQRT2, SQRT2INV, GOLDENINV2 }, + { GOLDEN2, -SQRT2, SQRT2INV, GOLDENINV2 }, + { -GOLDEN2, SQRT2, SQRT2INV, GOLDENINV2 }, + { GOLDEN2, SQRT2, SQRT2INV, GOLDENINV2 }, + { 0.0, -SQRT5OVER2, GOLDEN2, GOLDENINV2 }, + { -SQRT2, -SQRT2INV, GOLDEN2, GOLDENINV2 }, + { SQRT2, -SQRT2INV, GOLDEN2, GOLDENINV2 }, + { -SQRT2, SQRT2INV, GOLDEN2, GOLDENINV2 }, + { SQRT2, SQRT2INV, GOLDEN2, GOLDENINV2 }, + { 0.0, SQRT5OVER2, GOLDEN2, GOLDENINV2 }, + { -SQRT2INV, -GOLDEN2, SQRT2, GOLDENINV2 }, + { SQRT2INV, -GOLDEN2, SQRT2, GOLDENINV2 }, + { -SQRT2INV, GOLDEN2, SQRT2, GOLDENINV2 }, + { SQRT2INV, GOLDEN2, SQRT2, GOLDENINV2 }, + { -GOLDEN2, 0.0, SQRT5OVER2, GOLDENINV2 }, + { GOLDEN2, 0.0, SQRT5OVER2, GOLDENINV2 }, + { -GOLDENINV2, -GOLDENINV2, GOLDEN22, GOLDENINV2 }, + { GOLDENINV2, -GOLDENINV2, GOLDEN22, GOLDENINV2 }, + { -GOLDENINV2, GOLDENINV2, GOLDEN22, GOLDENINV2 }, + { GOLDENINV2, GOLDENINV2, GOLDEN22, GOLDENINV2 }, + { 0.0, -GOLDENINV22, -GOLDEN22, SQRT2INV }, + { 0.0, GOLDENINV22, -GOLDEN22, SQRT2INV }, + { -SQRT2INV, -SQRT2INV, -SQRT5OVER2, SQRT2INV }, + { SQRT2INV, -SQRT2INV, -SQRT5OVER2, SQRT2INV }, + { -SQRT2INV, SQRT2INV, -SQRT5OVER2, SQRT2INV }, + { SQRT2INV, SQRT2INV, -SQRT5OVER2, SQRT2INV }, + { -GOLDEN2, -GOLDENINV2, -SQRT2, SQRT2INV }, + { GOLDEN2, -GOLDENINV2, -SQRT2, SQRT2INV }, + { -GOLDEN2, GOLDENINV2, -SQRT2, SQRT2INV }, + { GOLDEN2, GOLDENINV2, -SQRT2, SQRT2INV }, + { -GOLDENINV2, -SQRT2, -GOLDEN2, SQRT2INV }, + { GOLDENINV2, -SQRT2, -GOLDEN2, SQRT2INV }, + { -GOLDENINV2, SQRT2, -GOLDEN2, SQRT2INV }, + { GOLDENINV2, SQRT2, -GOLDEN2, SQRT2INV }, + { -SQRT2INV, -SQRT5OVER2, -SQRT2INV, SQRT2INV }, + { SQRT2INV, -SQRT5OVER2, -SQRT2INV, SQRT2INV }, + { -SQRT5OVER2, -SQRT2INV, -SQRT2INV, SQRT2INV }, + { SQRT5OVER2, -SQRT2INV, -SQRT2INV, SQRT2INV }, + { -SQRT5OVER2, SQRT2INV, -SQRT2INV, SQRT2INV }, + { SQRT5OVER2, SQRT2INV, -SQRT2INV, SQRT2INV }, + { -SQRT2INV, SQRT5OVER2, -SQRT2INV, SQRT2INV }, + { SQRT2INV, SQRT5OVER2, -SQRT2INV, SQRT2INV }, + { -SQRT2, -GOLDEN2, -GOLDENINV2, SQRT2INV }, + { SQRT2, -GOLDEN2, -GOLDENINV2, SQRT2INV }, + { -SQRT2, GOLDEN2, -GOLDENINV2, SQRT2INV }, + { SQRT2, GOLDEN2, -GOLDENINV2, SQRT2INV }, + { -GOLDEN22, 0.0, -GOLDENINV22, SQRT2INV }, + { GOLDEN22, 0.0, -GOLDENINV22, SQRT2INV }, + { -GOLDENINV22, -GOLDEN22, 0.0, SQRT2INV }, + { GOLDENINV22, -GOLDEN22, 0.0, SQRT2INV }, + { -GOLDENINV22, GOLDEN22, 0.0, SQRT2INV }, + { GOLDENINV22, GOLDEN22, 0.0, SQRT2INV }, + { -GOLDEN22, 0.0, GOLDENINV22, SQRT2INV }, + { GOLDEN22, 0.0, GOLDENINV22, SQRT2INV }, + { -SQRT2, -GOLDEN2, GOLDENINV2, SQRT2INV }, + { SQRT2, -GOLDEN2, GOLDENINV2, SQRT2INV }, + { -SQRT2, GOLDEN2, GOLDENINV2, SQRT2INV }, + { SQRT2, GOLDEN2, GOLDENINV2, SQRT2INV }, + { -SQRT2INV, -SQRT5OVER2, SQRT2INV, SQRT2INV }, + { SQRT2INV, -SQRT5OVER2, SQRT2INV, SQRT2INV }, + { -SQRT5OVER2, -SQRT2INV, SQRT2INV, SQRT2INV }, + { SQRT5OVER2, -SQRT2INV, SQRT2INV, SQRT2INV }, + { -SQRT5OVER2, SQRT2INV, SQRT2INV, SQRT2INV }, + { SQRT5OVER2, SQRT2INV, SQRT2INV, SQRT2INV }, + { -SQRT2INV, SQRT5OVER2, SQRT2INV, SQRT2INV }, + { SQRT2INV, SQRT5OVER2, SQRT2INV, SQRT2INV }, + { -GOLDENINV2, -SQRT2, GOLDEN2, SQRT2INV }, + { GOLDENINV2, -SQRT2, GOLDEN2, SQRT2INV }, + { -GOLDENINV2, SQRT2, GOLDEN2, SQRT2INV }, + { GOLDENINV2, SQRT2, GOLDEN2, SQRT2INV }, + { -GOLDEN2, -GOLDENINV2, SQRT2, SQRT2INV }, + { GOLDEN2, -GOLDENINV2, SQRT2, SQRT2INV }, + { -GOLDEN2, GOLDENINV2, SQRT2, SQRT2INV }, + { GOLDEN2, GOLDENINV2, SQRT2, SQRT2INV }, + { -SQRT2INV, -SQRT2INV, SQRT5OVER2, SQRT2INV }, + { SQRT2INV, -SQRT2INV, SQRT5OVER2, SQRT2INV }, + { -SQRT2INV, SQRT2INV, SQRT5OVER2, SQRT2INV }, + { SQRT2INV, SQRT2INV, SQRT5OVER2, SQRT2INV }, + { 0.0, -GOLDENINV22, GOLDEN22, SQRT2INV }, + { 0.0, GOLDENINV22, GOLDEN22, SQRT2INV }, + { 0.0, -GOLDENINV2, -SQRT5OVER2, GOLDEN2 }, + { 0.0, GOLDENINV2, -SQRT5OVER2, GOLDEN2 }, + { -GOLDENINV2, -SQRT2INV, -SQRT2, GOLDEN2 }, + { GOLDENINV2, -SQRT2INV, -SQRT2, GOLDEN2 }, + { -GOLDENINV2, SQRT2INV, -SQRT2, GOLDEN2 }, + { GOLDENINV2, SQRT2INV, -SQRT2, GOLDEN2 }, + { -GOLDENINV22, -GOLDEN2, -GOLDEN2, GOLDEN2 }, + { GOLDENINV22, -GOLDEN2, -GOLDEN2, GOLDEN2 }, + { -GOLDEN2, -GOLDENINV22, -GOLDEN2, GOLDEN2 }, + { GOLDEN2, -GOLDENINV22, -GOLDEN2, GOLDEN2 }, + { -GOLDEN2, GOLDENINV22, -GOLDEN2, GOLDEN2 }, + { GOLDEN2, GOLDENINV22, -GOLDEN2, GOLDEN2 }, + { -GOLDENINV22, GOLDEN2, -GOLDEN2, GOLDEN2 }, + { GOLDENINV22, GOLDEN2, -GOLDEN2, GOLDEN2 }, + { -SQRT2, -GOLDENINV2, -SQRT2INV, GOLDEN2 }, + { SQRT2, -GOLDENINV2, -SQRT2INV, GOLDEN2 }, + { -SQRT2, GOLDENINV2, -SQRT2INV, GOLDEN2 }, + { SQRT2, GOLDENINV2, -SQRT2INV, GOLDEN2 }, + { -SQRT2INV, -SQRT2, -GOLDENINV2, GOLDEN2 }, + { SQRT2INV, -SQRT2, -GOLDENINV2, GOLDEN2 }, + { -SQRT5OVER2, 0.0, -GOLDENINV2, GOLDEN2 }, + { SQRT5OVER2, 0.0, -GOLDENINV2, GOLDEN2 }, + { -SQRT2INV, SQRT2, -GOLDENINV2, GOLDEN2 }, + { SQRT2INV, SQRT2, -GOLDENINV2, GOLDEN2 }, + { -GOLDEN2, -GOLDEN2, -GOLDENINV22, GOLDEN2 }, + { GOLDEN2, -GOLDEN2, -GOLDENINV22, GOLDEN2 }, + { -GOLDEN2, GOLDEN2, -GOLDENINV22, GOLDEN2 }, + { GOLDEN2, GOLDEN2, -GOLDENINV22, GOLDEN2 }, + { -GOLDENINV2, -SQRT5OVER2, 0.0, GOLDEN2 }, + { GOLDENINV2, -SQRT5OVER2, 0.0, GOLDEN2 }, + { -GOLDENINV2, SQRT5OVER2, 0.0, GOLDEN2 }, + { GOLDENINV2, SQRT5OVER2, 0.0, GOLDEN2 }, + { -GOLDEN2, -GOLDEN2, GOLDENINV22, GOLDEN2 }, + { GOLDEN2, -GOLDEN2, GOLDENINV22, GOLDEN2 }, + { -GOLDEN2, GOLDEN2, GOLDENINV22, GOLDEN2 }, + { GOLDEN2, GOLDEN2, GOLDENINV22, GOLDEN2 }, + { -SQRT2INV, -SQRT2, GOLDENINV2, GOLDEN2 }, + { SQRT2INV, -SQRT2, GOLDENINV2, GOLDEN2 }, + { -SQRT5OVER2, 0.0, GOLDENINV2, GOLDEN2 }, + { SQRT5OVER2, 0.0, GOLDENINV2, GOLDEN2 }, + { -SQRT2INV, SQRT2, GOLDENINV2, GOLDEN2 }, + { SQRT2INV, SQRT2, GOLDENINV2, GOLDEN2 }, + { -SQRT2, -GOLDENINV2, SQRT2INV, GOLDEN2 }, + { SQRT2, -GOLDENINV2, SQRT2INV, GOLDEN2 }, + { -SQRT2, GOLDENINV2, SQRT2INV, GOLDEN2 }, + { SQRT2, GOLDENINV2, SQRT2INV, GOLDEN2 }, + { -GOLDENINV22, -GOLDEN2, GOLDEN2, GOLDEN2 }, + { GOLDENINV22, -GOLDEN2, GOLDEN2, GOLDEN2 }, + { -GOLDEN2, -GOLDENINV22, GOLDEN2, GOLDEN2 }, + { GOLDEN2, -GOLDENINV22, GOLDEN2, GOLDEN2 }, + { -GOLDEN2, GOLDENINV22, GOLDEN2, GOLDEN2 }, + { GOLDEN2, GOLDENINV22, GOLDEN2, GOLDEN2 }, + { -GOLDENINV22, GOLDEN2, GOLDEN2, GOLDEN2 }, + { GOLDENINV22, GOLDEN2, GOLDEN2, GOLDEN2 }, + { -GOLDENINV2, -SQRT2INV, SQRT2, GOLDEN2 }, + { GOLDENINV2, -SQRT2INV, SQRT2, GOLDEN2 }, + { -GOLDENINV2, SQRT2INV, SQRT2, GOLDEN2 }, + { GOLDENINV2, SQRT2INV, SQRT2, GOLDEN2 }, + { 0.0, -GOLDENINV2, SQRT5OVER2, GOLDEN2 }, + { 0.0, GOLDENINV2, SQRT5OVER2, GOLDEN2 }, + { 0.0, 0.0, -SQRT2, SQRT2 }, + { -SQRT2INV, -GOLDENINV2, -GOLDEN2, SQRT2 }, + { SQRT2INV, -GOLDENINV2, -GOLDEN2, SQRT2 }, + { -SQRT2INV, GOLDENINV2, -GOLDEN2, SQRT2 }, + { SQRT2INV, GOLDENINV2, -GOLDEN2, SQRT2 }, + { -GOLDENINV2, -GOLDEN2, -SQRT2INV, SQRT2 }, + { GOLDENINV2, -GOLDEN2, -SQRT2INV, SQRT2 }, + { -GOLDENINV2, GOLDEN2, -SQRT2INV, SQRT2 }, + { GOLDENINV2, GOLDEN2, -SQRT2INV, SQRT2 }, + { -GOLDEN2, -SQRT2INV, -GOLDENINV2, SQRT2 }, + { GOLDEN2, -SQRT2INV, -GOLDENINV2, SQRT2 }, + { -GOLDEN2, SQRT2INV, -GOLDENINV2, SQRT2 }, + { GOLDEN2, SQRT2INV, -GOLDENINV2, SQRT2 }, + { 0.0, -SQRT2, 0.0, SQRT2 }, + { -SQRT2, 0.0, 0.0, SQRT2 }, + { SQRT2, 0.0, 0.0, SQRT2 }, + { 0.0, SQRT2, 0.0, SQRT2 }, + { -GOLDEN2, -SQRT2INV, GOLDENINV2, SQRT2 }, + { GOLDEN2, -SQRT2INV, GOLDENINV2, SQRT2 }, + { -GOLDEN2, SQRT2INV, GOLDENINV2, SQRT2 }, + { GOLDEN2, SQRT2INV, GOLDENINV2, SQRT2 }, + { -GOLDENINV2, -GOLDEN2, SQRT2INV, SQRT2 }, + { GOLDENINV2, -GOLDEN2, SQRT2INV, SQRT2 }, + { -GOLDENINV2, GOLDEN2, SQRT2INV, SQRT2 }, + { GOLDENINV2, GOLDEN2, SQRT2INV, SQRT2 }, + { -SQRT2INV, -GOLDENINV2, GOLDEN2, SQRT2 }, + { SQRT2INV, -GOLDENINV2, GOLDEN2, SQRT2 }, + { -SQRT2INV, GOLDENINV2, GOLDEN2, SQRT2 }, + { SQRT2INV, GOLDENINV2, GOLDEN2, SQRT2 }, + { 0.0, 0.0, SQRT2, SQRT2 }, + { -GOLDENINV2, 0.0, -GOLDEN2, SQRT5OVER2 }, + { GOLDENINV2, 0.0, -GOLDEN2, SQRT5OVER2 }, + { -SQRT2INV, -SQRT2INV, -SQRT2INV, SQRT5OVER2 }, + { SQRT2INV, -SQRT2INV, -SQRT2INV, SQRT5OVER2 }, + { -SQRT2INV, SQRT2INV, -SQRT2INV, SQRT5OVER2 }, + { SQRT2INV, SQRT2INV, -SQRT2INV, SQRT5OVER2 }, + { 0.0, -GOLDEN2, -GOLDENINV2, SQRT5OVER2 }, + { 0.0, GOLDEN2, -GOLDENINV2, SQRT5OVER2 }, + { -GOLDEN2, -GOLDENINV2, 0.0, SQRT5OVER2 }, + { GOLDEN2, -GOLDENINV2, 0.0, SQRT5OVER2 }, + { -GOLDEN2, GOLDENINV2, 0.0, SQRT5OVER2 }, + { GOLDEN2, GOLDENINV2, 0.0, SQRT5OVER2 }, + { 0.0, -GOLDEN2, GOLDENINV2, SQRT5OVER2 }, + { 0.0, GOLDEN2, GOLDENINV2, SQRT5OVER2 }, + { -SQRT2INV, -SQRT2INV, SQRT2INV, SQRT5OVER2 }, + { SQRT2INV, -SQRT2INV, SQRT2INV, SQRT5OVER2 }, + { -SQRT2INV, SQRT2INV, SQRT2INV, SQRT5OVER2 }, + { SQRT2INV, SQRT2INV, SQRT2INV, SQRT5OVER2 }, + { -GOLDENINV2, 0.0, GOLDEN2, SQRT5OVER2 }, + { GOLDENINV2, 0.0, GOLDEN2, SQRT5OVER2 }, + { -GOLDENINV22, 0.0, -SQRT2INV, GOLDEN22 }, + { GOLDENINV22, 0.0, -SQRT2INV, GOLDEN22 }, + { -GOLDENINV2, -GOLDENINV2, -GOLDENINV2, GOLDEN22 }, + { GOLDENINV2, -GOLDENINV2, -GOLDENINV2, GOLDEN22 }, + { -GOLDENINV2, GOLDENINV2, -GOLDENINV2, GOLDEN22 }, + { GOLDENINV2, GOLDENINV2, -GOLDENINV2, GOLDEN22 }, + { 0.0, -SQRT2INV, -GOLDENINV22, GOLDEN22 }, + { 0.0, SQRT2INV, -GOLDENINV22, GOLDEN22 }, + { -SQRT2INV, -GOLDENINV22, 0.0, GOLDEN22 }, + { SQRT2INV, -GOLDENINV22, 0.0, GOLDEN22 }, + { -SQRT2INV, GOLDENINV22, 0.0, GOLDEN22 }, + { SQRT2INV, GOLDENINV22, 0.0, GOLDEN22 }, + { 0.0, -SQRT2INV, GOLDENINV22, GOLDEN22 }, + { 0.0, SQRT2INV, GOLDENINV22, GOLDEN22 }, + { -GOLDENINV2, -GOLDENINV2, GOLDENINV2, GOLDEN22 }, + { GOLDENINV2, -GOLDENINV2, GOLDENINV2, GOLDEN22 }, + { -GOLDENINV2, GOLDENINV2, GOLDENINV2, GOLDEN22 }, + { GOLDENINV2, GOLDENINV2, GOLDENINV2, GOLDEN22 }, + { -GOLDENINV22, 0.0, SQRT2INV, GOLDEN22 }, + { GOLDENINV22, 0.0, SQRT2INV, GOLDEN22 } +}; + +static const int edge_120[NUM_EDGE_120][2] = { + { 0, 1 }, { 0, 2 }, { 0, 4 }, { 0, 20 }, { 1, 3 }, + { 1, 5 }, { 1, 21 }, { 2, 6 }, { 2, 8 }, { 2, 22 }, + { 3, 6 }, { 3, 9 }, { 3, 23 }, { 4, 7 }, { 4, 10 }, + { 4, 24 }, { 5, 7 }, { 5, 11 }, { 5, 25 }, { 6, 12 }, + { 6, 26 }, { 7, 13 }, { 7, 27 }, { 8, 10 }, { 8, 14 }, + { 8, 28 }, { 9, 11 }, { 9, 15 }, { 9, 29 }, { 10, 16 }, + { 10, 30 }, { 11, 17 }, { 11, 31 }, { 12, 14 }, { 12, 15 }, + { 12, 32 }, { 13, 16 }, { 13, 17 }, { 13, 33 }, { 14, 18 }, + { 14, 34 }, { 15, 19 }, { 15, 35 }, { 16, 18 }, { 16, 36 }, + { 17, 19 }, { 17, 37 }, { 18, 19 }, { 18, 38 }, { 19, 39 }, + { 20, 40 }, { 20, 41 }, { 20, 43 }, { 21, 40 }, { 21, 42 }, + { 21, 44 }, { 22, 41 }, { 22, 45 }, { 22, 49 }, { 23, 42 }, + { 23, 46 }, { 23, 50 }, { 24, 43 }, { 24, 47 }, { 24, 51 }, + { 25, 44 }, { 25, 48 }, { 25, 52 }, { 26, 45 }, { 26, 46 }, + { 26, 53 }, { 27, 47 }, { 27, 48 }, { 27, 56 }, { 28, 49 }, + { 28, 54 }, { 28, 57 }, { 29, 50 }, { 29, 55 }, { 29, 58 }, + { 30, 51 }, { 30, 54 }, { 30, 59 }, { 31, 52 }, { 31, 55 }, + { 31, 60 }, { 32, 53 }, { 32, 61 }, { 32, 62 }, { 33, 56 }, + { 33, 63 }, { 33, 64 }, { 34, 57 }, { 34, 61 }, { 34, 65 }, + { 35, 58 }, { 35, 62 }, { 35, 66 }, { 36, 59 }, { 36, 63 }, + { 36, 67 }, { 37, 60 }, { 37, 64 }, { 37, 68 }, { 38, 65 }, + { 38, 67 }, { 38, 69 }, { 39, 66 }, { 39, 68 }, { 39, 69 }, + { 40, 70 }, { 40, 71 }, { 41, 72 }, { 41, 78 }, { 42, 73 }, + { 42, 79 }, { 43, 74 }, { 43, 80 }, { 44, 75 }, { 44, 81 }, + { 45, 76 }, { 45, 88 }, { 46, 77 }, { 46, 89 }, { 47, 82 }, + { 47, 92 }, { 48, 83 }, { 48, 93 }, { 49, 84 }, { 49, 94 }, + { 50, 85 }, { 50, 95 }, { 51, 86 }, { 51, 96 }, { 52, 87 }, + { 52, 97 }, { 53, 98 }, { 53, 99 }, { 54, 90 }, { 54, 108 }, + { 55, 91 }, { 55, 109 }, { 56, 100 }, { 56, 101 }, { 57, 102 }, + { 57, 112 }, { 58, 103 }, { 58, 113 }, { 59, 104 }, { 59, 114 }, + { 60, 105 }, { 60, 115 }, { 61, 106 }, { 61, 116 }, { 62, 107 }, + { 62, 117 }, { 63, 110 }, { 63, 122 }, { 64, 111 }, { 64, 123 }, + { 65, 118 }, { 65, 124 }, { 66, 119 }, { 66, 125 }, { 67, 120 }, + { 67, 126 }, { 68, 121 }, { 68, 127 }, { 69, 128 }, { 69, 129 }, + { 70, 72 }, { 70, 73 }, { 70, 130 }, { 71, 74 }, { 71, 75 }, + { 71, 131 }, { 72, 76 }, { 72, 132 }, { 73, 77 }, { 73, 133 }, + { 74, 82 }, { 74, 134 }, { 75, 83 }, { 75, 135 }, { 76, 77 }, + { 76, 140 }, { 77, 141 }, { 78, 80 }, { 78, 84 }, { 78, 136 }, + { 79, 81 }, { 79, 85 }, { 79, 137 }, { 80, 86 }, { 80, 138 }, + { 81, 87 }, { 81, 139 }, { 82, 83 }, { 82, 142 }, { 83, 143 }, + { 84, 90 }, { 84, 146 }, { 85, 91 }, { 85, 147 }, { 86, 90 }, + { 86, 148 }, { 87, 91 }, { 87, 149 }, { 88, 94 }, { 88, 98 }, + { 88, 144 }, { 89, 95 }, { 89, 99 }, { 89, 145 }, { 90, 156 }, + { 91, 157 }, { 92, 96 }, { 92, 100 }, { 92, 150 }, { 93, 97 }, + { 93, 101 }, { 93, 151 }, { 94, 102 }, { 94, 152 }, { 95, 103 }, + { 95, 153 }, { 96, 104 }, { 96, 154 }, { 97, 105 }, { 97, 155 }, + { 98, 106 }, { 98, 158 }, { 99, 107 }, { 99, 159 }, { 100, 110 }, + { 100, 160 }, { 101, 111 }, { 101, 161 }, { 102, 106 }, { 102, 164 }, + { 103, 107 }, { 103, 165 }, { 104, 110 }, { 104, 166 }, { 105, 111 }, + { 105, 167 }, { 106, 168 }, { 107, 169 }, { 108, 112 }, { 108, 114 }, + { 108, 162 }, { 109, 113 }, { 109, 115 }, { 109, 163 }, { 110, 174 }, + { 111, 175 }, { 112, 118 }, { 112, 170 }, { 113, 119 }, { 113, 171 }, + { 114, 120 }, { 114, 172 }, { 115, 121 }, { 115, 173 }, { 116, 117 }, + { 116, 124 }, { 116, 176 }, { 117, 125 }, { 117, 177 }, { 118, 120 }, + { 118, 180 }, { 119, 121 }, { 119, 181 }, { 120, 182 }, { 121, 183 }, + { 122, 123 }, { 122, 126 }, { 122, 178 }, { 123, 127 }, { 123, 179 }, + { 124, 128 }, { 124, 184 }, { 125, 128 }, { 125, 185 }, { 126, 129 }, + { 126, 186 }, { 127, 129 }, { 127, 187 }, { 128, 188 }, { 129, 189 }, + { 130, 131 }, { 130, 190 }, { 130, 191 }, { 131, 192 }, { 131, 193 }, + { 132, 136 }, { 132, 190 }, { 132, 196 }, { 133, 137 }, { 133, 191 }, + { 133, 197 }, { 134, 138 }, { 134, 192 }, { 134, 198 }, { 135, 139 }, + { 135, 193 }, { 135, 199 }, { 136, 194 }, { 136, 201 }, { 137, 195 }, + { 137, 202 }, { 138, 194 }, { 138, 203 }, { 139, 195 }, { 139, 204 }, + { 140, 144 }, { 140, 196 }, { 140, 200 }, { 141, 145 }, { 141, 197 }, + { 141, 200 }, { 142, 150 }, { 142, 198 }, { 142, 205 }, { 143, 151 }, + { 143, 199 }, { 143, 205 }, { 144, 206 }, { 144, 210 }, { 145, 207 }, + { 145, 211 }, { 146, 152 }, { 146, 201 }, { 146, 212 }, { 147, 153 }, + { 147, 202 }, { 147, 213 }, { 148, 154 }, { 148, 203 }, { 148, 214 }, + { 149, 155 }, { 149, 204 }, { 149, 215 }, { 150, 208 }, { 150, 216 }, + { 151, 209 }, { 151, 217 }, { 152, 206 }, { 152, 218 }, { 153, 207 }, + { 153, 219 }, { 154, 208 }, { 154, 220 }, { 155, 209 }, { 155, 221 }, + { 156, 162 }, { 156, 212 }, { 156, 214 }, { 157, 163 }, { 157, 213 }, + { 157, 215 }, { 158, 159 }, { 158, 210 }, { 158, 222 }, { 159, 211 }, + { 159, 223 }, { 160, 161 }, { 160, 216 }, { 160, 228 }, { 161, 217 }, + { 161, 229 }, { 162, 224 }, { 162, 226 }, { 163, 225 }, { 163, 227 }, + { 164, 170 }, { 164, 218 }, { 164, 230 }, { 165, 171 }, { 165, 219 }, + { 165, 231 }, { 166, 172 }, { 166, 220 }, { 166, 232 }, { 167, 173 }, + { 167, 221 }, { 167, 233 }, { 168, 176 }, { 168, 222 }, { 168, 230 }, + { 169, 177 }, { 169, 223 }, { 169, 231 }, { 170, 224 }, { 170, 235 }, + { 171, 225 }, { 171, 236 }, { 172, 226 }, { 172, 237 }, { 173, 227 }, + { 173, 238 }, { 174, 178 }, { 174, 228 }, { 174, 232 }, { 175, 179 }, + { 175, 229 }, { 175, 233 }, { 176, 234 }, { 176, 240 }, { 177, 234 }, + { 177, 241 }, { 178, 239 }, { 178, 242 }, { 179, 239 }, { 179, 243 }, + { 180, 184 }, { 180, 235 }, { 180, 244 }, { 181, 185 }, { 181, 236 }, + { 181, 245 }, { 182, 186 }, { 182, 237 }, { 182, 244 }, { 183, 187 }, + { 183, 238 }, { 183, 245 }, { 184, 240 }, { 184, 246 }, { 185, 241 }, + { 185, 247 }, { 186, 242 }, { 186, 248 }, { 187, 243 }, { 187, 249 }, + { 188, 189 }, { 188, 246 }, { 188, 247 }, { 189, 248 }, { 189, 249 }, + { 190, 250 }, { 190, 270 }, { 191, 251 }, { 191, 271 }, { 192, 250 }, + { 192, 272 }, { 193, 251 }, { 193, 273 }, { 194, 250 }, { 194, 279 }, + { 195, 251 }, { 195, 280 }, { 196, 252 }, { 196, 274 }, { 197, 253 }, + { 197, 275 }, { 198, 254 }, { 198, 276 }, { 199, 255 }, { 199, 277 }, + { 200, 256 }, { 200, 278 }, { 201, 252 }, { 201, 282 }, { 202, 253 }, + { 202, 283 }, { 203, 254 }, { 203, 284 }, { 204, 255 }, { 204, 285 }, + { 205, 257 }, { 205, 281 }, { 206, 252 }, { 206, 290 }, { 207, 253 }, + { 207, 291 }, { 208, 254 }, { 208, 292 }, { 209, 255 }, { 209, 293 }, + { 210, 256 }, { 210, 294 }, { 211, 256 }, { 211, 295 }, { 212, 258 }, + { 212, 286 }, { 213, 259 }, { 213, 287 }, { 214, 260 }, { 214, 288 }, + { 215, 261 }, { 215, 289 }, { 216, 257 }, { 216, 296 }, { 217, 257 }, + { 217, 297 }, { 218, 258 }, { 218, 298 }, { 219, 259 }, { 219, 299 }, + { 220, 260 }, { 220, 300 }, { 221, 261 }, { 221, 301 }, { 222, 262 }, + { 222, 302 }, { 223, 262 }, { 223, 303 }, { 224, 258 }, { 224, 310 }, + { 225, 259 }, { 225, 311 }, { 226, 260 }, { 226, 312 }, { 227, 261 }, + { 227, 313 }, { 228, 263 }, { 228, 304 }, { 229, 263 }, { 229, 305 }, + { 230, 264 }, { 230, 306 }, { 231, 265 }, { 231, 307 }, { 232, 266 }, + { 232, 308 }, { 233, 267 }, { 233, 309 }, { 234, 262 }, { 234, 318 }, + { 235, 264 }, { 235, 314 }, { 236, 265 }, { 236, 315 }, { 237, 266 }, + { 237, 316 }, { 238, 267 }, { 238, 317 }, { 239, 263 }, { 239, 321 }, + { 240, 264 }, { 240, 322 }, { 241, 265 }, { 241, 323 }, { 242, 266 }, + { 242, 324 }, { 243, 267 }, { 243, 325 }, { 244, 268 }, { 244, 319 }, + { 245, 269 }, { 245, 320 }, { 246, 268 }, { 246, 326 }, { 247, 269 }, + { 247, 327 }, { 248, 268 }, { 248, 328 }, { 249, 269 }, { 249, 329 }, + { 250, 330 }, { 251, 331 }, { 252, 332 }, { 253, 333 }, { 254, 334 }, + { 255, 335 }, { 256, 336 }, { 257, 337 }, { 258, 338 }, { 259, 339 }, + { 260, 340 }, { 261, 341 }, { 262, 342 }, { 263, 343 }, { 264, 344 }, + { 265, 345 }, { 266, 346 }, { 267, 347 }, { 268, 348 }, { 269, 349 }, + { 270, 271 }, { 270, 274 }, { 270, 350 }, { 271, 275 }, { 271, 351 }, + { 272, 273 }, { 272, 276 }, { 272, 352 }, { 273, 277 }, { 273, 353 }, + { 274, 278 }, { 274, 356 }, { 275, 278 }, { 275, 357 }, { 276, 281 }, + { 276, 358 }, { 277, 281 }, { 277, 359 }, { 278, 360 }, { 279, 282 }, + { 279, 284 }, { 279, 354 }, { 280, 283 }, { 280, 285 }, { 280, 355 }, + { 281, 365 }, { 282, 286 }, { 282, 361 }, { 283, 287 }, { 283, 362 }, + { 284, 288 }, { 284, 363 }, { 285, 289 }, { 285, 364 }, { 286, 288 }, + { 286, 372 }, { 287, 289 }, { 287, 373 }, { 288, 374 }, { 289, 375 }, + { 290, 294 }, { 290, 298 }, { 290, 366 }, { 291, 295 }, { 291, 299 }, + { 291, 367 }, { 292, 296 }, { 292, 300 }, { 292, 368 }, { 293, 297 }, + { 293, 301 }, { 293, 369 }, { 294, 302 }, { 294, 370 }, { 295, 303 }, + { 295, 371 }, { 296, 304 }, { 296, 376 }, { 297, 305 }, { 297, 377 }, + { 298, 306 }, { 298, 378 }, { 299, 307 }, { 299, 379 }, { 300, 308 }, + { 300, 380 }, { 301, 309 }, { 301, 381 }, { 302, 306 }, { 302, 382 }, + { 303, 307 }, { 303, 383 }, { 304, 308 }, { 304, 388 }, { 305, 309 }, + { 305, 389 }, { 306, 390 }, { 307, 391 }, { 308, 392 }, { 309, 393 }, + { 310, 312 }, { 310, 314 }, { 310, 384 }, { 311, 313 }, { 311, 315 }, + { 311, 385 }, { 312, 316 }, { 312, 386 }, { 313, 317 }, { 313, 387 }, + { 314, 319 }, { 314, 395 }, { 315, 320 }, { 315, 396 }, { 316, 319 }, + { 316, 397 }, { 317, 320 }, { 317, 398 }, { 318, 322 }, { 318, 323 }, + { 318, 394 }, { 319, 404 }, { 320, 405 }, { 321, 324 }, { 321, 325 }, + { 321, 399 }, { 322, 326 }, { 322, 400 }, { 323, 327 }, { 323, 401 }, + { 324, 328 }, { 324, 402 }, { 325, 329 }, { 325, 403 }, { 326, 327 }, + { 326, 406 }, { 327, 407 }, { 328, 329 }, { 328, 408 }, { 329, 409 }, + { 330, 350 }, { 330, 352 }, { 330, 354 }, { 331, 351 }, { 331, 353 }, + { 331, 355 }, { 332, 356 }, { 332, 361 }, { 332, 366 }, { 333, 357 }, + { 333, 362 }, { 333, 367 }, { 334, 358 }, { 334, 363 }, { 334, 368 }, + { 335, 359 }, { 335, 364 }, { 335, 369 }, { 336, 360 }, { 336, 370 }, + { 336, 371 }, { 337, 365 }, { 337, 376 }, { 337, 377 }, { 338, 372 }, + { 338, 378 }, { 338, 384 }, { 339, 373 }, { 339, 379 }, { 339, 385 }, + { 340, 374 }, { 340, 380 }, { 340, 386 }, { 341, 375 }, { 341, 381 }, + { 341, 387 }, { 342, 382 }, { 342, 383 }, { 342, 394 }, { 343, 388 }, + { 343, 389 }, { 343, 399 }, { 344, 390 }, { 344, 395 }, { 344, 400 }, + { 345, 391 }, { 345, 396 }, { 345, 401 }, { 346, 392 }, { 346, 397 }, + { 346, 402 }, { 347, 393 }, { 347, 398 }, { 347, 403 }, { 348, 404 }, + { 348, 406 }, { 348, 408 }, { 349, 405 }, { 349, 407 }, { 349, 409 }, + { 350, 410 }, { 350, 412 }, { 351, 410 }, { 351, 413 }, { 352, 411 }, + { 352, 414 }, { 353, 411 }, { 353, 415 }, { 354, 416 }, { 354, 418 }, + { 355, 417 }, { 355, 419 }, { 356, 412 }, { 356, 420 }, { 357, 413 }, + { 357, 421 }, { 358, 414 }, { 358, 422 }, { 359, 415 }, { 359, 423 }, + { 360, 420 }, { 360, 421 }, { 361, 416 }, { 361, 426 }, { 362, 417 }, + { 362, 427 }, { 363, 418 }, { 363, 428 }, { 364, 419 }, { 364, 429 }, + { 365, 422 }, { 365, 423 }, { 366, 424 }, { 366, 432 }, { 367, 425 }, + { 367, 433 }, { 368, 430 }, { 368, 434 }, { 369, 431 }, { 369, 435 }, + { 370, 424 }, { 370, 438 }, { 371, 425 }, { 371, 439 }, { 372, 426 }, + { 372, 436 }, { 373, 427 }, { 373, 437 }, { 374, 428 }, { 374, 436 }, + { 375, 429 }, { 375, 437 }, { 376, 430 }, { 376, 440 }, { 377, 431 }, + { 377, 441 }, { 378, 432 }, { 378, 444 }, { 379, 433 }, { 379, 445 }, + { 380, 434 }, { 380, 446 }, { 381, 435 }, { 381, 447 }, { 382, 438 }, + { 382, 448 }, { 383, 439 }, { 383, 449 }, { 384, 442 }, { 384, 450 }, + { 385, 443 }, { 385, 451 }, { 386, 442 }, { 386, 452 }, { 387, 443 }, + { 387, 453 }, { 388, 440 }, { 388, 454 }, { 389, 441 }, { 389, 455 }, + { 390, 444 }, { 390, 448 }, { 391, 445 }, { 391, 449 }, { 392, 446 }, + { 392, 454 }, { 393, 447 }, { 393, 455 }, { 394, 456 }, { 394, 457 }, + { 395, 450 }, { 395, 460 }, { 396, 451 }, { 396, 461 }, { 397, 452 }, + { 397, 462 }, { 398, 453 }, { 398, 463 }, { 399, 458 }, { 399, 459 }, + { 400, 456 }, { 400, 464 }, { 401, 457 }, { 401, 465 }, { 402, 458 }, + { 402, 466 }, { 403, 459 }, { 403, 467 }, { 404, 460 }, { 404, 462 }, + { 405, 461 }, { 405, 463 }, { 406, 464 }, { 406, 468 }, { 407, 465 }, + { 407, 468 }, { 408, 466 }, { 408, 469 }, { 409, 467 }, { 409, 469 }, + { 410, 411 }, { 410, 470 }, { 411, 471 }, { 412, 416 }, { 412, 472 }, + { 413, 417 }, { 413, 473 }, { 414, 418 }, { 414, 474 }, { 415, 419 }, + { 415, 475 }, { 416, 478 }, { 417, 479 }, { 418, 480 }, { 419, 481 }, + { 420, 424 }, { 420, 476 }, { 421, 425 }, { 421, 477 }, { 422, 430 }, + { 422, 482 }, { 423, 431 }, { 423, 483 }, { 424, 488 }, { 425, 489 }, + { 426, 432 }, { 426, 484 }, { 427, 433 }, { 427, 485 }, { 428, 434 }, + { 428, 486 }, { 429, 435 }, { 429, 487 }, { 430, 492 }, { 431, 493 }, + { 432, 494 }, { 433, 495 }, { 434, 496 }, { 435, 497 }, { 436, 442 }, + { 436, 490 }, { 437, 443 }, { 437, 491 }, { 438, 439 }, { 438, 498 }, + { 439, 499 }, { 440, 441 }, { 440, 500 }, { 441, 501 }, { 442, 508 }, + { 443, 509 }, { 444, 450 }, { 444, 502 }, { 445, 451 }, { 445, 503 }, + { 446, 452 }, { 446, 504 }, { 447, 453 }, { 447, 505 }, { 448, 456 }, + { 448, 506 }, { 449, 457 }, { 449, 507 }, { 450, 512 }, { 451, 513 }, + { 452, 514 }, { 453, 515 }, { 454, 458 }, { 454, 510 }, { 455, 459 }, + { 455, 511 }, { 456, 516 }, { 457, 517 }, { 458, 522 }, { 459, 523 }, + { 460, 464 }, { 460, 518 }, { 461, 465 }, { 461, 519 }, { 462, 466 }, + { 462, 520 }, { 463, 467 }, { 463, 521 }, { 464, 524 }, { 465, 525 }, + { 466, 526 }, { 467, 527 }, { 468, 469 }, { 468, 528 }, { 469, 529 }, + { 470, 472 }, { 470, 473 }, { 470, 530 }, { 471, 474 }, { 471, 475 }, + { 471, 530 }, { 472, 476 }, { 472, 531 }, { 473, 477 }, { 473, 532 }, + { 474, 482 }, { 474, 533 }, { 475, 483 }, { 475, 534 }, { 476, 477 }, + { 476, 535 }, { 477, 536 }, { 478, 480 }, { 478, 484 }, { 478, 531 }, + { 479, 481 }, { 479, 485 }, { 479, 532 }, { 480, 486 }, { 480, 533 }, + { 481, 487 }, { 481, 534 }, { 482, 483 }, { 482, 537 }, { 483, 538 }, + { 484, 490 }, { 484, 539 }, { 485, 491 }, { 485, 540 }, { 486, 490 }, + { 486, 541 }, { 487, 491 }, { 487, 542 }, { 488, 494 }, { 488, 498 }, + { 488, 535 }, { 489, 495 }, { 489, 499 }, { 489, 536 }, { 490, 544 }, + { 491, 545 }, { 492, 496 }, { 492, 500 }, { 492, 537 }, { 493, 497 }, + { 493, 501 }, { 493, 538 }, { 494, 502 }, { 494, 539 }, { 495, 503 }, + { 495, 540 }, { 496, 504 }, { 496, 541 }, { 497, 505 }, { 497, 542 }, + { 498, 506 }, { 498, 543 }, { 499, 507 }, { 499, 543 }, { 500, 510 }, + { 500, 546 }, { 501, 511 }, { 501, 546 }, { 502, 506 }, { 502, 547 }, + { 503, 507 }, { 503, 548 }, { 504, 510 }, { 504, 549 }, { 505, 511 }, + { 505, 550 }, { 506, 551 }, { 507, 552 }, { 508, 512 }, { 508, 514 }, + { 508, 544 }, { 509, 513 }, { 509, 515 }, { 509, 545 }, { 510, 553 }, + { 511, 554 }, { 512, 518 }, { 512, 547 }, { 513, 519 }, { 513, 548 }, + { 514, 520 }, { 514, 549 }, { 515, 521 }, { 515, 550 }, { 516, 517 }, + { 516, 524 }, { 516, 551 }, { 517, 525 }, { 517, 552 }, { 518, 520 }, + { 518, 555 }, { 519, 521 }, { 519, 556 }, { 520, 557 }, { 521, 558 }, + { 522, 523 }, { 522, 526 }, { 522, 553 }, { 523, 527 }, { 523, 554 }, + { 524, 528 }, { 524, 555 }, { 525, 528 }, { 525, 556 }, { 526, 529 }, + { 526, 557 }, { 527, 529 }, { 527, 558 }, { 528, 559 }, { 529, 559 }, + { 530, 560 }, { 530, 561 }, { 531, 560 }, { 531, 562 }, { 532, 561 }, + { 532, 563 }, { 533, 560 }, { 533, 564 }, { 534, 561 }, { 534, 565 }, + { 535, 562 }, { 535, 566 }, { 536, 563 }, { 536, 566 }, { 537, 564 }, + { 537, 567 }, { 538, 565 }, { 538, 567 }, { 539, 562 }, { 539, 568 }, + { 540, 563 }, { 540, 569 }, { 541, 564 }, { 541, 570 }, { 542, 565 }, + { 542, 571 }, { 543, 566 }, { 543, 572 }, { 544, 568 }, { 544, 570 }, + { 545, 569 }, { 545, 571 }, { 546, 567 }, { 546, 573 }, { 547, 568 }, + { 547, 574 }, { 548, 569 }, { 548, 575 }, { 549, 570 }, { 549, 576 }, + { 550, 571 }, { 550, 577 }, { 551, 572 }, { 551, 574 }, { 552, 572 }, + { 552, 575 }, { 553, 573 }, { 553, 576 }, { 554, 573 }, { 554, 577 }, + { 555, 574 }, { 555, 578 }, { 556, 575 }, { 556, 579 }, { 557, 576 }, + { 557, 578 }, { 558, 577 }, { 558, 579 }, { 559, 578 }, { 559, 579 }, + { 560, 580 }, { 561, 581 }, { 562, 582 }, { 563, 583 }, { 564, 584 }, + { 565, 585 }, { 566, 586 }, { 567, 587 }, { 568, 588 }, { 569, 589 }, + { 570, 590 }, { 571, 591 }, { 572, 592 }, { 573, 593 }, { 574, 594 }, + { 575, 595 }, { 576, 596 }, { 577, 597 }, { 578, 598 }, { 579, 599 }, + { 580, 581 }, { 580, 582 }, { 580, 584 }, { 581, 583 }, { 581, 585 }, + { 582, 586 }, { 582, 588 }, { 583, 586 }, { 583, 589 }, { 584, 587 }, + { 584, 590 }, { 585, 587 }, { 585, 591 }, { 586, 592 }, { 587, 593 }, + { 588, 590 }, { 588, 594 }, { 589, 591 }, { 589, 595 }, { 590, 596 }, + { 591, 597 }, { 592, 594 }, { 592, 595 }, { 593, 596 }, { 593, 597 }, + { 594, 598 }, { 595, 599 }, { 596, 598 }, { 597, 599 }, { 598, 599 } +}; + +static const int face_120[NUM_FACE_120][VERT_PER_FACE_120] = { + { 0, 1, 3, 6, 2 }, { 0, 1, 5, 7, 4 }, + { 0, 1, 21, 40, 20 }, { 0, 2, 8, 10, 4 }, + { 0, 2, 22, 41, 20 }, { 0, 4, 24, 43, 20 }, + { 1, 3, 9, 11, 5 }, { 1, 3, 23, 42, 21 }, + { 1, 5, 25, 44, 21 }, { 2, 6, 12, 14, 8 }, + { 2, 6, 26, 45, 22 }, { 2, 8, 28, 49, 22 }, + { 3, 6, 12, 15, 9 }, { 3, 6, 26, 46, 23 }, + { 3, 9, 29, 50, 23 }, { 4, 7, 13, 16, 10 }, + { 4, 7, 27, 47, 24 }, { 4, 10, 30, 51, 24 }, + { 5, 7, 13, 17, 11 }, { 5, 7, 27, 48, 25 }, + { 5, 11, 31, 52, 25 }, { 6, 12, 32, 53, 26 }, + { 7, 13, 33, 56, 27 }, { 8, 10, 16, 18, 14 }, + { 8, 10, 30, 54, 28 }, { 8, 14, 34, 57, 28 }, + { 9, 11, 17, 19, 15 }, { 9, 11, 31, 55, 29 }, + { 9, 15, 35, 58, 29 }, { 10, 16, 36, 59, 30 }, + { 11, 17, 37, 60, 31 }, { 12, 14, 18, 19, 15 }, + { 12, 14, 34, 61, 32 }, { 12, 15, 35, 62, 32 }, + { 13, 16, 18, 19, 17 }, { 13, 16, 36, 63, 33 }, + { 13, 17, 37, 64, 33 }, { 14, 18, 38, 65, 34 }, + { 15, 19, 39, 66, 35 }, { 16, 18, 38, 67, 36 }, + { 17, 19, 39, 68, 37 }, { 18, 19, 39, 69, 38 }, + { 20, 40, 70, 72, 41 }, { 20, 40, 71, 74, 43 }, + { 20, 41, 78, 80, 43 }, { 21, 40, 70, 73, 42 }, + { 21, 40, 71, 75, 44 }, { 21, 42, 79, 81, 44 }, + { 22, 41, 72, 76, 45 }, { 22, 41, 78, 84, 49 }, + { 22, 45, 88, 94, 49 }, { 23, 42, 73, 77, 46 }, + { 23, 42, 79, 85, 50 }, { 23, 46, 89, 95, 50 }, + { 24, 43, 74, 82, 47 }, { 24, 43, 80, 86, 51 }, + { 24, 47, 92, 96, 51 }, { 25, 44, 75, 83, 48 }, + { 25, 44, 81, 87, 52 }, { 25, 48, 93, 97, 52 }, + { 26, 45, 76, 77, 46 }, { 26, 45, 88, 98, 53 }, + { 26, 46, 89, 99, 53 }, { 27, 47, 82, 83, 48 }, + { 27, 47, 92, 100, 56 }, { 27, 48, 93, 101, 56 }, + { 28, 49, 84, 90, 54 }, { 28, 49, 94, 102, 57 }, + { 28, 54, 108, 112, 57 }, { 29, 50, 85, 91, 55 }, + { 29, 50, 95, 103, 58 }, { 29, 55, 109, 113, 58 }, + { 30, 51, 86, 90, 54 }, { 30, 51, 96, 104, 59 }, + { 30, 54, 108, 114, 59 }, { 31, 52, 87, 91, 55 }, + { 31, 52, 97, 105, 60 }, { 31, 55, 109, 115, 60 }, + { 32, 53, 98, 106, 61 }, { 32, 53, 99, 107, 62 }, + { 32, 61, 116, 117, 62 }, { 33, 56, 100, 110, 63 }, + { 33, 56, 101, 111, 64 }, { 33, 63, 122, 123, 64 }, + { 34, 57, 102, 106, 61 }, { 34, 57, 112, 118, 65 }, + { 34, 61, 116, 124, 65 }, { 35, 58, 103, 107, 62 }, + { 35, 58, 113, 119, 66 }, { 35, 62, 117, 125, 66 }, + { 36, 59, 104, 110, 63 }, { 36, 59, 114, 120, 67 }, + { 36, 63, 122, 126, 67 }, { 37, 60, 105, 111, 64 }, + { 37, 60, 115, 121, 68 }, { 37, 64, 123, 127, 68 }, + { 38, 65, 118, 120, 67 }, { 38, 65, 124, 128, 69 }, + { 38, 67, 126, 129, 69 }, { 39, 66, 119, 121, 68 }, + { 39, 66, 125, 128, 69 }, { 39, 68, 127, 129, 69 }, + { 40, 70, 130, 131, 71 }, { 41, 72, 132, 136, 78 }, + { 42, 73, 133, 137, 79 }, { 43, 74, 134, 138, 80 }, + { 44, 75, 135, 139, 81 }, { 45, 76, 140, 144, 88 }, + { 46, 77, 141, 145, 89 }, { 47, 82, 142, 150, 92 }, + { 48, 83, 143, 151, 93 }, { 49, 84, 146, 152, 94 }, + { 50, 85, 147, 153, 95 }, { 51, 86, 148, 154, 96 }, + { 52, 87, 149, 155, 97 }, { 53, 98, 158, 159, 99 }, + { 54, 90, 156, 162, 108 }, { 55, 91, 157, 163, 109 }, + { 56, 100, 160, 161, 101 }, { 57, 102, 164, 170, 112 }, + { 58, 103, 165, 171, 113 }, { 59, 104, 166, 172, 114 }, + { 60, 105, 167, 173, 115 }, { 61, 106, 168, 176, 116 }, + { 62, 107, 169, 177, 117 }, { 63, 110, 174, 178, 122 }, + { 64, 111, 175, 179, 123 }, { 65, 118, 180, 184, 124 }, + { 66, 119, 181, 185, 125 }, { 67, 120, 182, 186, 126 }, + { 68, 121, 183, 187, 127 }, { 69, 128, 188, 189, 129 }, + { 70, 72, 76, 77, 73 }, { 70, 72, 132, 190, 130 }, + { 70, 73, 133, 191, 130 }, { 71, 74, 82, 83, 75 }, + { 71, 74, 134, 192, 131 }, { 71, 75, 135, 193, 131 }, + { 72, 76, 140, 196, 132 }, { 73, 77, 141, 197, 133 }, + { 74, 82, 142, 198, 134 }, { 75, 83, 143, 199, 135 }, + { 76, 77, 141, 200, 140 }, { 78, 80, 86, 90, 84 }, + { 78, 80, 138, 194, 136 }, { 78, 84, 146, 201, 136 }, + { 79, 81, 87, 91, 85 }, { 79, 81, 139, 195, 137 }, + { 79, 85, 147, 202, 137 }, { 80, 86, 148, 203, 138 }, + { 81, 87, 149, 204, 139 }, { 82, 83, 143, 205, 142 }, + { 84, 90, 156, 212, 146 }, { 85, 91, 157, 213, 147 }, + { 86, 90, 156, 214, 148 }, { 87, 91, 157, 215, 149 }, + { 88, 94, 102, 106, 98 }, { 88, 94, 152, 206, 144 }, + { 88, 98, 158, 210, 144 }, { 89, 95, 103, 107, 99 }, + { 89, 95, 153, 207, 145 }, { 89, 99, 159, 211, 145 }, + { 92, 96, 104, 110, 100 }, { 92, 96, 154, 208, 150 }, + { 92, 100, 160, 216, 150 }, { 93, 97, 105, 111, 101 }, + { 93, 97, 155, 209, 151 }, { 93, 101, 161, 217, 151 }, + { 94, 102, 164, 218, 152 }, { 95, 103, 165, 219, 153 }, + { 96, 104, 166, 220, 154 }, { 97, 105, 167, 221, 155 }, + { 98, 106, 168, 222, 158 }, { 99, 107, 169, 223, 159 }, + { 100, 110, 174, 228, 160 }, { 101, 111, 175, 229, 161 }, + { 102, 106, 168, 230, 164 }, { 103, 107, 169, 231, 165 }, + { 104, 110, 174, 232, 166 }, { 105, 111, 175, 233, 167 }, + { 108, 112, 118, 120, 114 }, { 108, 112, 170, 224, 162 }, + { 108, 114, 172, 226, 162 }, { 109, 113, 119, 121, 115 }, + { 109, 113, 171, 225, 163 }, { 109, 115, 173, 227, 163 }, + { 112, 118, 180, 235, 170 }, { 113, 119, 181, 236, 171 }, + { 114, 120, 182, 237, 172 }, { 115, 121, 183, 238, 173 }, + { 116, 117, 125, 128, 124 }, { 116, 117, 177, 234, 176 }, + { 116, 124, 184, 240, 176 }, { 117, 125, 185, 241, 177 }, + { 118, 120, 182, 244, 180 }, { 119, 121, 183, 245, 181 }, + { 122, 123, 127, 129, 126 }, { 122, 123, 179, 239, 178 }, + { 122, 126, 186, 242, 178 }, { 123, 127, 187, 243, 179 }, + { 124, 128, 188, 246, 184 }, { 125, 128, 188, 247, 185 }, + { 126, 129, 189, 248, 186 }, { 127, 129, 189, 249, 187 }, + { 130, 131, 192, 250, 190 }, { 130, 131, 193, 251, 191 }, + { 130, 190, 270, 271, 191 }, { 131, 192, 272, 273, 193 }, + { 132, 136, 194, 250, 190 }, { 132, 136, 201, 252, 196 }, + { 132, 190, 270, 274, 196 }, { 133, 137, 195, 251, 191 }, + { 133, 137, 202, 253, 197 }, { 133, 191, 271, 275, 197 }, + { 134, 138, 194, 250, 192 }, { 134, 138, 203, 254, 198 }, + { 134, 192, 272, 276, 198 }, { 135, 139, 195, 251, 193 }, + { 135, 139, 204, 255, 199 }, { 135, 193, 273, 277, 199 }, + { 136, 194, 279, 282, 201 }, { 137, 195, 280, 283, 202 }, + { 138, 194, 279, 284, 203 }, { 139, 195, 280, 285, 204 }, + { 140, 144, 206, 252, 196 }, { 140, 144, 210, 256, 200 }, + { 140, 196, 274, 278, 200 }, { 141, 145, 207, 253, 197 }, + { 141, 145, 211, 256, 200 }, { 141, 197, 275, 278, 200 }, + { 142, 150, 208, 254, 198 }, { 142, 150, 216, 257, 205 }, + { 142, 198, 276, 281, 205 }, { 143, 151, 209, 255, 199 }, + { 143, 151, 217, 257, 205 }, { 143, 199, 277, 281, 205 }, + { 144, 206, 290, 294, 210 }, { 145, 207, 291, 295, 211 }, + { 146, 152, 206, 252, 201 }, { 146, 152, 218, 258, 212 }, + { 146, 201, 282, 286, 212 }, { 147, 153, 207, 253, 202 }, + { 147, 153, 219, 259, 213 }, { 147, 202, 283, 287, 213 }, + { 148, 154, 208, 254, 203 }, { 148, 154, 220, 260, 214 }, + { 148, 203, 284, 288, 214 }, { 149, 155, 209, 255, 204 }, + { 149, 155, 221, 261, 215 }, { 149, 204, 285, 289, 215 }, + { 150, 208, 292, 296, 216 }, { 151, 209, 293, 297, 217 }, + { 152, 206, 290, 298, 218 }, { 153, 207, 291, 299, 219 }, + { 154, 208, 292, 300, 220 }, { 155, 209, 293, 301, 221 }, + { 156, 162, 224, 258, 212 }, { 156, 162, 226, 260, 214 }, + { 156, 212, 286, 288, 214 }, { 157, 163, 225, 259, 213 }, + { 157, 163, 227, 261, 215 }, { 157, 213, 287, 289, 215 }, + { 158, 159, 211, 256, 210 }, { 158, 159, 223, 262, 222 }, + { 158, 210, 294, 302, 222 }, { 159, 211, 295, 303, 223 }, + { 160, 161, 217, 257, 216 }, { 160, 161, 229, 263, 228 }, + { 160, 216, 296, 304, 228 }, { 161, 217, 297, 305, 229 }, + { 162, 224, 310, 312, 226 }, { 163, 225, 311, 313, 227 }, + { 164, 170, 224, 258, 218 }, { 164, 170, 235, 264, 230 }, + { 164, 218, 298, 306, 230 }, { 165, 171, 225, 259, 219 }, + { 165, 171, 236, 265, 231 }, { 165, 219, 299, 307, 231 }, + { 166, 172, 226, 260, 220 }, { 166, 172, 237, 266, 232 }, + { 166, 220, 300, 308, 232 }, { 167, 173, 227, 261, 221 }, + { 167, 173, 238, 267, 233 }, { 167, 221, 301, 309, 233 }, + { 168, 176, 234, 262, 222 }, { 168, 176, 240, 264, 230 }, + { 168, 222, 302, 306, 230 }, { 169, 177, 234, 262, 223 }, + { 169, 177, 241, 265, 231 }, { 169, 223, 303, 307, 231 }, + { 170, 224, 310, 314, 235 }, { 171, 225, 311, 315, 236 }, + { 172, 226, 312, 316, 237 }, { 173, 227, 313, 317, 238 }, + { 174, 178, 239, 263, 228 }, { 174, 178, 242, 266, 232 }, + { 174, 228, 304, 308, 232 }, { 175, 179, 239, 263, 229 }, + { 175, 179, 243, 267, 233 }, { 175, 229, 305, 309, 233 }, + { 176, 234, 318, 322, 240 }, { 177, 234, 318, 323, 241 }, + { 178, 239, 321, 324, 242 }, { 179, 239, 321, 325, 243 }, + { 180, 184, 240, 264, 235 }, { 180, 184, 246, 268, 244 }, + { 180, 235, 314, 319, 244 }, { 181, 185, 241, 265, 236 }, + { 181, 185, 247, 269, 245 }, { 181, 236, 315, 320, 245 }, + { 182, 186, 242, 266, 237 }, { 182, 186, 248, 268, 244 }, + { 182, 237, 316, 319, 244 }, { 183, 187, 243, 267, 238 }, + { 183, 187, 249, 269, 245 }, { 183, 238, 317, 320, 245 }, + { 184, 240, 322, 326, 246 }, { 185, 241, 323, 327, 247 }, + { 186, 242, 324, 328, 248 }, { 187, 243, 325, 329, 249 }, + { 188, 189, 248, 268, 246 }, { 188, 189, 249, 269, 247 }, + { 188, 246, 326, 327, 247 }, { 189, 248, 328, 329, 249 }, + { 190, 250, 330, 350, 270 }, { 191, 251, 331, 351, 271 }, + { 192, 250, 330, 352, 272 }, { 193, 251, 331, 353, 273 }, + { 194, 250, 330, 354, 279 }, { 195, 251, 331, 355, 280 }, + { 196, 252, 332, 356, 274 }, { 197, 253, 333, 357, 275 }, + { 198, 254, 334, 358, 276 }, { 199, 255, 335, 359, 277 }, + { 200, 256, 336, 360, 278 }, { 201, 252, 332, 361, 282 }, + { 202, 253, 333, 362, 283 }, { 203, 254, 334, 363, 284 }, + { 204, 255, 335, 364, 285 }, { 205, 257, 337, 365, 281 }, + { 206, 252, 332, 366, 290 }, { 207, 253, 333, 367, 291 }, + { 208, 254, 334, 368, 292 }, { 209, 255, 335, 369, 293 }, + { 210, 256, 336, 370, 294 }, { 211, 256, 336, 371, 295 }, + { 212, 258, 338, 372, 286 }, { 213, 259, 339, 373, 287 }, + { 214, 260, 340, 374, 288 }, { 215, 261, 341, 375, 289 }, + { 216, 257, 337, 376, 296 }, { 217, 257, 337, 377, 297 }, + { 218, 258, 338, 378, 298 }, { 219, 259, 339, 379, 299 }, + { 220, 260, 340, 380, 300 }, { 221, 261, 341, 381, 301 }, + { 222, 262, 342, 382, 302 }, { 223, 262, 342, 383, 303 }, + { 224, 258, 338, 384, 310 }, { 225, 259, 339, 385, 311 }, + { 226, 260, 340, 386, 312 }, { 227, 261, 341, 387, 313 }, + { 228, 263, 343, 388, 304 }, { 229, 263, 343, 389, 305 }, + { 230, 264, 344, 390, 306 }, { 231, 265, 345, 391, 307 }, + { 232, 266, 346, 392, 308 }, { 233, 267, 347, 393, 309 }, + { 234, 262, 342, 394, 318 }, { 235, 264, 344, 395, 314 }, + { 236, 265, 345, 396, 315 }, { 237, 266, 346, 397, 316 }, + { 238, 267, 347, 398, 317 }, { 239, 263, 343, 399, 321 }, + { 240, 264, 344, 400, 322 }, { 241, 265, 345, 401, 323 }, + { 242, 266, 346, 402, 324 }, { 243, 267, 347, 403, 325 }, + { 244, 268, 348, 404, 319 }, { 245, 269, 349, 405, 320 }, + { 246, 268, 348, 406, 326 }, { 247, 269, 349, 407, 327 }, + { 248, 268, 348, 408, 328 }, { 249, 269, 349, 409, 329 }, + { 270, 271, 275, 278, 274 }, { 270, 271, 351, 410, 350 }, + { 270, 274, 356, 412, 350 }, { 271, 275, 357, 413, 351 }, + { 272, 273, 277, 281, 276 }, { 272, 273, 353, 411, 352 }, + { 272, 276, 358, 414, 352 }, { 273, 277, 359, 415, 353 }, + { 274, 278, 360, 420, 356 }, { 275, 278, 360, 421, 357 }, + { 276, 281, 365, 422, 358 }, { 277, 281, 365, 423, 359 }, + { 279, 282, 286, 288, 284 }, { 279, 282, 361, 416, 354 }, + { 279, 284, 363, 418, 354 }, { 280, 283, 287, 289, 285 }, + { 280, 283, 362, 417, 355 }, { 280, 285, 364, 419, 355 }, + { 282, 286, 372, 426, 361 }, { 283, 287, 373, 427, 362 }, + { 284, 288, 374, 428, 363 }, { 285, 289, 375, 429, 364 }, + { 286, 288, 374, 436, 372 }, { 287, 289, 375, 437, 373 }, + { 290, 294, 302, 306, 298 }, { 290, 294, 370, 424, 366 }, + { 290, 298, 378, 432, 366 }, { 291, 295, 303, 307, 299 }, + { 291, 295, 371, 425, 367 }, { 291, 299, 379, 433, 367 }, + { 292, 296, 304, 308, 300 }, { 292, 296, 376, 430, 368 }, + { 292, 300, 380, 434, 368 }, { 293, 297, 305, 309, 301 }, + { 293, 297, 377, 431, 369 }, { 293, 301, 381, 435, 369 }, + { 294, 302, 382, 438, 370 }, { 295, 303, 383, 439, 371 }, + { 296, 304, 388, 440, 376 }, { 297, 305, 389, 441, 377 }, + { 298, 306, 390, 444, 378 }, { 299, 307, 391, 445, 379 }, + { 300, 308, 392, 446, 380 }, { 301, 309, 393, 447, 381 }, + { 302, 306, 390, 448, 382 }, { 303, 307, 391, 449, 383 }, + { 304, 308, 392, 454, 388 }, { 305, 309, 393, 455, 389 }, + { 310, 312, 316, 319, 314 }, { 310, 312, 386, 442, 384 }, + { 310, 314, 395, 450, 384 }, { 311, 313, 317, 320, 315 }, + { 311, 313, 387, 443, 385 }, { 311, 315, 396, 451, 385 }, + { 312, 316, 397, 452, 386 }, { 313, 317, 398, 453, 387 }, + { 314, 319, 404, 460, 395 }, { 315, 320, 405, 461, 396 }, + { 316, 319, 404, 462, 397 }, { 317, 320, 405, 463, 398 }, + { 318, 322, 326, 327, 323 }, { 318, 322, 400, 456, 394 }, + { 318, 323, 401, 457, 394 }, { 321, 324, 328, 329, 325 }, + { 321, 324, 402, 458, 399 }, { 321, 325, 403, 459, 399 }, + { 322, 326, 406, 464, 400 }, { 323, 327, 407, 465, 401 }, + { 324, 328, 408, 466, 402 }, { 325, 329, 409, 467, 403 }, + { 326, 327, 407, 468, 406 }, { 328, 329, 409, 469, 408 }, + { 330, 350, 410, 411, 352 }, { 330, 350, 412, 416, 354 }, + { 330, 352, 414, 418, 354 }, { 331, 351, 410, 411, 353 }, + { 331, 351, 413, 417, 355 }, { 331, 353, 415, 419, 355 }, + { 332, 356, 412, 416, 361 }, { 332, 356, 420, 424, 366 }, + { 332, 361, 426, 432, 366 }, { 333, 357, 413, 417, 362 }, + { 333, 357, 421, 425, 367 }, { 333, 362, 427, 433, 367 }, + { 334, 358, 414, 418, 363 }, { 334, 358, 422, 430, 368 }, + { 334, 363, 428, 434, 368 }, { 335, 359, 415, 419, 364 }, + { 335, 359, 423, 431, 369 }, { 335, 364, 429, 435, 369 }, + { 336, 360, 420, 424, 370 }, { 336, 360, 421, 425, 371 }, + { 336, 370, 438, 439, 371 }, { 337, 365, 422, 430, 376 }, + { 337, 365, 423, 431, 377 }, { 337, 376, 440, 441, 377 }, + { 338, 372, 426, 432, 378 }, { 338, 372, 436, 442, 384 }, + { 338, 378, 444, 450, 384 }, { 339, 373, 427, 433, 379 }, + { 339, 373, 437, 443, 385 }, { 339, 379, 445, 451, 385 }, + { 340, 374, 428, 434, 380 }, { 340, 374, 436, 442, 386 }, + { 340, 380, 446, 452, 386 }, { 341, 375, 429, 435, 381 }, + { 341, 375, 437, 443, 387 }, { 341, 381, 447, 453, 387 }, + { 342, 382, 438, 439, 383 }, { 342, 382, 448, 456, 394 }, + { 342, 383, 449, 457, 394 }, { 343, 388, 440, 441, 389 }, + { 343, 388, 454, 458, 399 }, { 343, 389, 455, 459, 399 }, + { 344, 390, 444, 450, 395 }, { 344, 390, 448, 456, 400 }, + { 344, 395, 460, 464, 400 }, { 345, 391, 445, 451, 396 }, + { 345, 391, 449, 457, 401 }, { 345, 396, 461, 465, 401 }, + { 346, 392, 446, 452, 397 }, { 346, 392, 454, 458, 402 }, + { 346, 397, 462, 466, 402 }, { 347, 393, 447, 453, 398 }, + { 347, 393, 455, 459, 403 }, { 347, 398, 463, 467, 403 }, + { 348, 404, 460, 464, 406 }, { 348, 404, 462, 466, 408 }, + { 348, 406, 468, 469, 408 }, { 349, 405, 461, 465, 407 }, + { 349, 405, 463, 467, 409 }, { 349, 407, 468, 469, 409 }, + { 350, 410, 470, 472, 412 }, { 351, 410, 470, 473, 413 }, + { 352, 411, 471, 474, 414 }, { 353, 411, 471, 475, 415 }, + { 354, 416, 478, 480, 418 }, { 355, 417, 479, 481, 419 }, + { 356, 412, 472, 476, 420 }, { 357, 413, 473, 477, 421 }, + { 358, 414, 474, 482, 422 }, { 359, 415, 475, 483, 423 }, + { 360, 420, 476, 477, 421 }, { 361, 416, 478, 484, 426 }, + { 362, 417, 479, 485, 427 }, { 363, 418, 480, 486, 428 }, + { 364, 419, 481, 487, 429 }, { 365, 422, 482, 483, 423 }, + { 366, 424, 488, 494, 432 }, { 367, 425, 489, 495, 433 }, + { 368, 430, 492, 496, 434 }, { 369, 431, 493, 497, 435 }, + { 370, 424, 488, 498, 438 }, { 371, 425, 489, 499, 439 }, + { 372, 426, 484, 490, 436 }, { 373, 427, 485, 491, 437 }, + { 374, 428, 486, 490, 436 }, { 375, 429, 487, 491, 437 }, + { 376, 430, 492, 500, 440 }, { 377, 431, 493, 501, 441 }, + { 378, 432, 494, 502, 444 }, { 379, 433, 495, 503, 445 }, + { 380, 434, 496, 504, 446 }, { 381, 435, 497, 505, 447 }, + { 382, 438, 498, 506, 448 }, { 383, 439, 499, 507, 449 }, + { 384, 442, 508, 512, 450 }, { 385, 443, 509, 513, 451 }, + { 386, 442, 508, 514, 452 }, { 387, 443, 509, 515, 453 }, + { 388, 440, 500, 510, 454 }, { 389, 441, 501, 511, 455 }, + { 390, 444, 502, 506, 448 }, { 391, 445, 503, 507, 449 }, + { 392, 446, 504, 510, 454 }, { 393, 447, 505, 511, 455 }, + { 394, 456, 516, 517, 457 }, { 395, 450, 512, 518, 460 }, + { 396, 451, 513, 519, 461 }, { 397, 452, 514, 520, 462 }, + { 398, 453, 515, 521, 463 }, { 399, 458, 522, 523, 459 }, + { 400, 456, 516, 524, 464 }, { 401, 457, 517, 525, 465 }, + { 402, 458, 522, 526, 466 }, { 403, 459, 523, 527, 467 }, + { 404, 460, 518, 520, 462 }, { 405, 461, 519, 521, 463 }, + { 406, 464, 524, 528, 468 }, { 407, 465, 525, 528, 468 }, + { 408, 466, 526, 529, 469 }, { 409, 467, 527, 529, 469 }, + { 410, 411, 471, 530, 470 }, { 412, 416, 478, 531, 472 }, + { 413, 417, 479, 532, 473 }, { 414, 418, 480, 533, 474 }, + { 415, 419, 481, 534, 475 }, { 420, 424, 488, 535, 476 }, + { 421, 425, 489, 536, 477 }, { 422, 430, 492, 537, 482 }, + { 423, 431, 493, 538, 483 }, { 426, 432, 494, 539, 484 }, + { 427, 433, 495, 540, 485 }, { 428, 434, 496, 541, 486 }, + { 429, 435, 497, 542, 487 }, { 436, 442, 508, 544, 490 }, + { 437, 443, 509, 545, 491 }, { 438, 439, 499, 543, 498 }, + { 440, 441, 501, 546, 500 }, { 444, 450, 512, 547, 502 }, + { 445, 451, 513, 548, 503 }, { 446, 452, 514, 549, 504 }, + { 447, 453, 515, 550, 505 }, { 448, 456, 516, 551, 506 }, + { 449, 457, 517, 552, 507 }, { 454, 458, 522, 553, 510 }, + { 455, 459, 523, 554, 511 }, { 460, 464, 524, 555, 518 }, + { 461, 465, 525, 556, 519 }, { 462, 466, 526, 557, 520 }, + { 463, 467, 527, 558, 521 }, { 468, 469, 529, 559, 528 }, + { 470, 472, 476, 477, 473 }, { 470, 472, 531, 560, 530 }, + { 470, 473, 532, 561, 530 }, { 471, 474, 482, 483, 475 }, + { 471, 474, 533, 560, 530 }, { 471, 475, 534, 561, 530 }, + { 472, 476, 535, 562, 531 }, { 473, 477, 536, 563, 532 }, + { 474, 482, 537, 564, 533 }, { 475, 483, 538, 565, 534 }, + { 476, 477, 536, 566, 535 }, { 478, 480, 486, 490, 484 }, + { 478, 480, 533, 560, 531 }, { 478, 484, 539, 562, 531 }, + { 479, 481, 487, 491, 485 }, { 479, 481, 534, 561, 532 }, + { 479, 485, 540, 563, 532 }, { 480, 486, 541, 564, 533 }, + { 481, 487, 542, 565, 534 }, { 482, 483, 538, 567, 537 }, + { 484, 490, 544, 568, 539 }, { 485, 491, 545, 569, 540 }, + { 486, 490, 544, 570, 541 }, { 487, 491, 545, 571, 542 }, + { 488, 494, 502, 506, 498 }, { 488, 494, 539, 562, 535 }, + { 488, 498, 543, 566, 535 }, { 489, 495, 503, 507, 499 }, + { 489, 495, 540, 563, 536 }, { 489, 499, 543, 566, 536 }, + { 492, 496, 504, 510, 500 }, { 492, 496, 541, 564, 537 }, + { 492, 500, 546, 567, 537 }, { 493, 497, 505, 511, 501 }, + { 493, 497, 542, 565, 538 }, { 493, 501, 546, 567, 538 }, + { 494, 502, 547, 568, 539 }, { 495, 503, 548, 569, 540 }, + { 496, 504, 549, 570, 541 }, { 497, 505, 550, 571, 542 }, + { 498, 506, 551, 572, 543 }, { 499, 507, 552, 572, 543 }, + { 500, 510, 553, 573, 546 }, { 501, 511, 554, 573, 546 }, + { 502, 506, 551, 574, 547 }, { 503, 507, 552, 575, 548 }, + { 504, 510, 553, 576, 549 }, { 505, 511, 554, 577, 550 }, + { 508, 512, 518, 520, 514 }, { 508, 512, 547, 568, 544 }, + { 508, 514, 549, 570, 544 }, { 509, 513, 519, 521, 515 }, + { 509, 513, 548, 569, 545 }, { 509, 515, 550, 571, 545 }, + { 512, 518, 555, 574, 547 }, { 513, 519, 556, 575, 548 }, + { 514, 520, 557, 576, 549 }, { 515, 521, 558, 577, 550 }, + { 516, 517, 525, 528, 524 }, { 516, 517, 552, 572, 551 }, + { 516, 524, 555, 574, 551 }, { 517, 525, 556, 575, 552 }, + { 518, 520, 557, 578, 555 }, { 519, 521, 558, 579, 556 }, + { 522, 523, 527, 529, 526 }, { 522, 523, 554, 573, 553 }, + { 522, 526, 557, 576, 553 }, { 523, 527, 558, 577, 554 }, + { 524, 528, 559, 578, 555 }, { 525, 528, 559, 579, 556 }, + { 526, 529, 559, 578, 557 }, { 527, 529, 559, 579, 558 }, + { 530, 560, 580, 581, 561 }, { 531, 560, 580, 582, 562 }, + { 532, 561, 581, 583, 563 }, { 533, 560, 580, 584, 564 }, + { 534, 561, 581, 585, 565 }, { 535, 562, 582, 586, 566 }, + { 536, 563, 583, 586, 566 }, { 537, 564, 584, 587, 567 }, + { 538, 565, 585, 587, 567 }, { 539, 562, 582, 588, 568 }, + { 540, 563, 583, 589, 569 }, { 541, 564, 584, 590, 570 }, + { 542, 565, 585, 591, 571 }, { 543, 566, 586, 592, 572 }, + { 544, 568, 588, 590, 570 }, { 545, 569, 589, 591, 571 }, + { 546, 567, 587, 593, 573 }, { 547, 568, 588, 594, 574 }, + { 548, 569, 589, 595, 575 }, { 549, 570, 590, 596, 576 }, + { 550, 571, 591, 597, 577 }, { 551, 572, 592, 594, 574 }, + { 552, 572, 592, 595, 575 }, { 553, 573, 593, 596, 576 }, + { 554, 573, 593, 597, 577 }, { 555, 574, 594, 598, 578 }, + { 556, 575, 595, 599, 579 }, { 557, 576, 596, 598, 578 }, + { 558, 577, 597, 599, 579 }, { 559, 578, 598, 599, 579 }, + { 580, 581, 583, 586, 582 }, { 580, 581, 585, 587, 584 }, + { 580, 582, 588, 590, 584 }, { 581, 583, 589, 591, 585 }, + { 582, 586, 592, 594, 588 }, { 583, 586, 592, 595, 589 }, + { 584, 587, 593, 596, 590 }, { 585, 587, 593, 597, 591 }, + { 588, 590, 596, 598, 594 }, { 589, 591, 597, 599, 595 }, + { 592, 594, 598, 599, 595 }, { 593, 596, 598, 599, 597 } +}; + + + +static const float vert_600[NUM_VERT_600][4] = { + { 0.0, 0.0, 0.0, -2.0 }, + { 0.0, -GOLDENINV, -1.0, -GOLDEN }, + { 0.0, GOLDENINV, -1.0, -GOLDEN }, + { -1.0, 0.0, -GOLDENINV, -GOLDEN }, + { 1.0, 0.0, -GOLDENINV, -GOLDEN }, + { -GOLDENINV, -1.0, 0.0, -GOLDEN }, + { GOLDENINV, -1.0, 0.0, -GOLDEN }, + { -GOLDENINV, 1.0, 0.0, -GOLDEN }, + { GOLDENINV, 1.0, 0.0, -GOLDEN }, + { -1.0, 0.0, GOLDENINV, -GOLDEN }, + { 1.0, 0.0, GOLDENINV, -GOLDEN }, + { 0.0, -GOLDENINV, 1.0, -GOLDEN }, + { 0.0, GOLDENINV, 1.0, -GOLDEN }, + { -GOLDENINV, 0.0, -GOLDEN, -1.0 }, + { GOLDENINV, 0.0, -GOLDEN, -1.0 }, + { -1.0, -1.0, -1.0, -1.0 }, + { 1.0, -1.0, -1.0, -1.0 }, + { -1.0, 1.0, -1.0, -1.0 }, + { 1.0, 1.0, -1.0, -1.0 }, + { 0.0, -GOLDEN, -GOLDENINV, -1.0 }, + { 0.0, GOLDEN, -GOLDENINV, -1.0 }, + { -GOLDEN, -GOLDENINV, 0.0, -1.0 }, + { GOLDEN, -GOLDENINV, 0.0, -1.0 }, + { -GOLDEN, GOLDENINV, 0.0, -1.0 }, + { GOLDEN, GOLDENINV, 0.0, -1.0 }, + { 0.0, -GOLDEN, GOLDENINV, -1.0 }, + { 0.0, GOLDEN, GOLDENINV, -1.0 }, + { -1.0, -1.0, 1.0, -1.0 }, + { 1.0, -1.0, 1.0, -1.0 }, + { -1.0, 1.0, 1.0, -1.0 }, + { 1.0, 1.0, 1.0, -1.0 }, + { -GOLDENINV, 0.0, GOLDEN, -1.0 }, + { GOLDENINV, 0.0, GOLDEN, -1.0 }, + { 0.0, -1.0, -GOLDEN, -GOLDENINV }, + { 0.0, 1.0, -GOLDEN, -GOLDENINV }, + { -GOLDEN, 0.0, -1.0, -GOLDENINV }, + { GOLDEN, 0.0, -1.0, -GOLDENINV }, + { -1.0, -GOLDEN, 0.0, -GOLDENINV }, + { 1.0, -GOLDEN, 0.0, -GOLDENINV }, + { -1.0, GOLDEN, 0.0, -GOLDENINV }, + { 1.0, GOLDEN, 0.0, -GOLDENINV }, + { -GOLDEN, 0.0, 1.0, -GOLDENINV }, + { GOLDEN, 0.0, 1.0, -GOLDENINV }, + { 0.0, -1.0, GOLDEN, -GOLDENINV }, + { 0.0, 1.0, GOLDEN, -GOLDENINV }, + { 0.0, 0.0, -2.0, 0.0 }, + { -1.0, -GOLDENINV, -GOLDEN, 0.0 }, + { 1.0, -GOLDENINV, -GOLDEN, 0.0 }, + { -1.0, GOLDENINV, -GOLDEN, 0.0 }, + { 1.0, GOLDENINV, -GOLDEN, 0.0 }, + { -GOLDENINV, -GOLDEN, -1.0, 0.0 }, + { GOLDENINV, -GOLDEN, -1.0, 0.0 }, + { -GOLDENINV, GOLDEN, -1.0, 0.0 }, + { GOLDENINV, GOLDEN, -1.0, 0.0 }, + { -GOLDEN, -1.0, -GOLDENINV, 0.0 }, + { GOLDEN, -1.0, -GOLDENINV, 0.0 }, + { -GOLDEN, 1.0, -GOLDENINV, 0.0 }, + { GOLDEN, 1.0, -GOLDENINV, 0.0 }, + { 0.0, -2.0, 0.0, 0.0 }, + { -2.0, 0.0, 0.0, 0.0 }, + { 2.0, 0.0, 0.0, 0.0 }, + { 0.0, 2.0, 0.0, 0.0 }, + { -GOLDEN, -1.0, GOLDENINV, 0.0 }, + { GOLDEN, -1.0, GOLDENINV, 0.0 }, + { -GOLDEN, 1.0, GOLDENINV, 0.0 }, + { GOLDEN, 1.0, GOLDENINV, 0.0 }, + { -GOLDENINV, -GOLDEN, 1.0, 0.0 }, + { GOLDENINV, -GOLDEN, 1.0, 0.0 }, + { -GOLDENINV, GOLDEN, 1.0, 0.0 }, + { GOLDENINV, GOLDEN, 1.0, 0.0 }, + { -1.0, -GOLDENINV, GOLDEN, 0.0 }, + { 1.0, -GOLDENINV, GOLDEN, 0.0 }, + { -1.0, GOLDENINV, GOLDEN, 0.0 }, + { 1.0, GOLDENINV, GOLDEN, 0.0 }, + { 0.0, 0.0, 2.0, 0.0 }, + { 0.0, -1.0, -GOLDEN, GOLDENINV }, + { 0.0, 1.0, -GOLDEN, GOLDENINV }, + { -GOLDEN, 0.0, -1.0, GOLDENINV }, + { GOLDEN, 0.0, -1.0, GOLDENINV }, + { -1.0, -GOLDEN, 0.0, GOLDENINV }, + { 1.0, -GOLDEN, 0.0, GOLDENINV }, + { -1.0, GOLDEN, 0.0, GOLDENINV }, + { 1.0, GOLDEN, 0.0, GOLDENINV }, + { -GOLDEN, 0.0, 1.0, GOLDENINV }, + { GOLDEN, 0.0, 1.0, GOLDENINV }, + { 0.0, -1.0, GOLDEN, GOLDENINV }, + { 0.0, 1.0, GOLDEN, GOLDENINV }, + { -GOLDENINV, 0.0, -GOLDEN, 1.0 }, + { GOLDENINV, 0.0, -GOLDEN, 1.0 }, + { -1.0, -1.0, -1.0, 1.0 }, + { 1.0, -1.0, -1.0, 1.0 }, + { -1.0, 1.0, -1.0, 1.0 }, + { 1.0, 1.0, -1.0, 1.0 }, + { 0.0, -GOLDEN, -GOLDENINV, 1.0 }, + { 0.0, GOLDEN, -GOLDENINV, 1.0 }, + { -GOLDEN, -GOLDENINV, 0.0, 1.0 }, + { GOLDEN, -GOLDENINV, 0.0, 1.0 }, + { -GOLDEN, GOLDENINV, 0.0, 1.0 }, + { GOLDEN, GOLDENINV, 0.0, 1.0 }, + { 0.0, -GOLDEN, GOLDENINV, 1.0 }, + { 0.0, GOLDEN, GOLDENINV, 1.0 }, + { -1.0, -1.0, 1.0, 1.0 }, + { 1.0, -1.0, 1.0, 1.0 }, + { -1.0, 1.0, 1.0, 1.0 }, + { 1.0, 1.0, 1.0, 1.0 }, + { -GOLDENINV, 0.0, GOLDEN, 1.0 }, + { GOLDENINV, 0.0, GOLDEN, 1.0 }, + { 0.0, -GOLDENINV, -1.0, GOLDEN }, + { 0.0, GOLDENINV, -1.0, GOLDEN }, + { -1.0, 0.0, -GOLDENINV, GOLDEN }, + { 1.0, 0.0, -GOLDENINV, GOLDEN }, + { -GOLDENINV, -1.0, 0.0, GOLDEN }, + { GOLDENINV, -1.0, 0.0, GOLDEN }, + { -GOLDENINV, 1.0, 0.0, GOLDEN }, + { GOLDENINV, 1.0, 0.0, GOLDEN }, + { -1.0, 0.0, GOLDENINV, GOLDEN }, + { 1.0, 0.0, GOLDENINV, GOLDEN }, + { 0.0, -GOLDENINV, 1.0, GOLDEN }, + { 0.0, GOLDENINV, 1.0, GOLDEN }, + { 0.0, 0.0, 0.0, 2.0 } +}; + +static const int edge_600[NUM_EDGE_600][2] = { + { 0, 1 }, { 0, 2 }, { 0, 3 }, { 0, 4 }, { 0, 5 }, + { 0, 6 }, { 0, 7 }, { 0, 8 }, { 0, 9 }, { 0, 10 }, + { 0, 11 }, { 0, 12 }, { 1, 2 }, { 1, 3 }, { 1, 4 }, + { 1, 5 }, { 1, 6 }, { 1, 13 }, { 1, 14 }, { 1, 15 }, + { 1, 16 }, { 1, 19 }, { 1, 33 }, { 2, 3 }, { 2, 4 }, + { 2, 7 }, { 2, 8 }, { 2, 13 }, { 2, 14 }, { 2, 17 }, + { 2, 18 }, { 2, 20 }, { 2, 34 }, { 3, 5 }, { 3, 7 }, + { 3, 9 }, { 3, 13 }, { 3, 15 }, { 3, 17 }, { 3, 21 }, + { 3, 23 }, { 3, 35 }, { 4, 6 }, { 4, 8 }, { 4, 10 }, + { 4, 14 }, { 4, 16 }, { 4, 18 }, { 4, 22 }, { 4, 24 }, + { 4, 36 }, { 5, 6 }, { 5, 9 }, { 5, 11 }, { 5, 15 }, + { 5, 19 }, { 5, 21 }, { 5, 25 }, { 5, 27 }, { 5, 37 }, + { 6, 10 }, { 6, 11 }, { 6, 16 }, { 6, 19 }, { 6, 22 }, + { 6, 25 }, { 6, 28 }, { 6, 38 }, { 7, 8 }, { 7, 9 }, + { 7, 12 }, { 7, 17 }, { 7, 20 }, { 7, 23 }, { 7, 26 }, + { 7, 29 }, { 7, 39 }, { 8, 10 }, { 8, 12 }, { 8, 18 }, + { 8, 20 }, { 8, 24 }, { 8, 26 }, { 8, 30 }, { 8, 40 }, + { 9, 11 }, { 9, 12 }, { 9, 21 }, { 9, 23 }, { 9, 27 }, + { 9, 29 }, { 9, 31 }, { 9, 41 }, { 10, 11 }, { 10, 12 }, + { 10, 22 }, { 10, 24 }, { 10, 28 }, { 10, 30 }, { 10, 32 }, + { 10, 42 }, { 11, 12 }, { 11, 25 }, { 11, 27 }, { 11, 28 }, + { 11, 31 }, { 11, 32 }, { 11, 43 }, { 12, 26 }, { 12, 29 }, + { 12, 30 }, { 12, 31 }, { 12, 32 }, { 12, 44 }, { 13, 14 }, + { 13, 15 }, { 13, 17 }, { 13, 33 }, { 13, 34 }, { 13, 35 }, + { 13, 45 }, { 13, 46 }, { 13, 48 }, { 14, 16 }, { 14, 18 }, + { 14, 33 }, { 14, 34 }, { 14, 36 }, { 14, 45 }, { 14, 47 }, + { 14, 49 }, { 15, 19 }, { 15, 21 }, { 15, 33 }, { 15, 35 }, + { 15, 37 }, { 15, 46 }, { 15, 50 }, { 15, 54 }, { 16, 19 }, + { 16, 22 }, { 16, 33 }, { 16, 36 }, { 16, 38 }, { 16, 47 }, + { 16, 51 }, { 16, 55 }, { 17, 20 }, { 17, 23 }, { 17, 34 }, + { 17, 35 }, { 17, 39 }, { 17, 48 }, { 17, 52 }, { 17, 56 }, + { 18, 20 }, { 18, 24 }, { 18, 34 }, { 18, 36 }, { 18, 40 }, + { 18, 49 }, { 18, 53 }, { 18, 57 }, { 19, 25 }, { 19, 33 }, + { 19, 37 }, { 19, 38 }, { 19, 50 }, { 19, 51 }, { 19, 58 }, + { 20, 26 }, { 20, 34 }, { 20, 39 }, { 20, 40 }, { 20, 52 }, + { 20, 53 }, { 20, 61 }, { 21, 23 }, { 21, 27 }, { 21, 35 }, + { 21, 37 }, { 21, 41 }, { 21, 54 }, { 21, 59 }, { 21, 62 }, + { 22, 24 }, { 22, 28 }, { 22, 36 }, { 22, 38 }, { 22, 42 }, + { 22, 55 }, { 22, 60 }, { 22, 63 }, { 23, 29 }, { 23, 35 }, + { 23, 39 }, { 23, 41 }, { 23, 56 }, { 23, 59 }, { 23, 64 }, + { 24, 30 }, { 24, 36 }, { 24, 40 }, { 24, 42 }, { 24, 57 }, + { 24, 60 }, { 24, 65 }, { 25, 27 }, { 25, 28 }, { 25, 37 }, + { 25, 38 }, { 25, 43 }, { 25, 58 }, { 25, 66 }, { 25, 67 }, + { 26, 29 }, { 26, 30 }, { 26, 39 }, { 26, 40 }, { 26, 44 }, + { 26, 61 }, { 26, 68 }, { 26, 69 }, { 27, 31 }, { 27, 37 }, + { 27, 41 }, { 27, 43 }, { 27, 62 }, { 27, 66 }, { 27, 70 }, + { 28, 32 }, { 28, 38 }, { 28, 42 }, { 28, 43 }, { 28, 63 }, + { 28, 67 }, { 28, 71 }, { 29, 31 }, { 29, 39 }, { 29, 41 }, + { 29, 44 }, { 29, 64 }, { 29, 68 }, { 29, 72 }, { 30, 32 }, + { 30, 40 }, { 30, 42 }, { 30, 44 }, { 30, 65 }, { 30, 69 }, + { 30, 73 }, { 31, 32 }, { 31, 41 }, { 31, 43 }, { 31, 44 }, + { 31, 70 }, { 31, 72 }, { 31, 74 }, { 32, 42 }, { 32, 43 }, + { 32, 44 }, { 32, 71 }, { 32, 73 }, { 32, 74 }, { 33, 45 }, + { 33, 46 }, { 33, 47 }, { 33, 50 }, { 33, 51 }, { 33, 75 }, + { 34, 45 }, { 34, 48 }, { 34, 49 }, { 34, 52 }, { 34, 53 }, + { 34, 76 }, { 35, 46 }, { 35, 48 }, { 35, 54 }, { 35, 56 }, + { 35, 59 }, { 35, 77 }, { 36, 47 }, { 36, 49 }, { 36, 55 }, + { 36, 57 }, { 36, 60 }, { 36, 78 }, { 37, 50 }, { 37, 54 }, + { 37, 58 }, { 37, 62 }, { 37, 66 }, { 37, 79 }, { 38, 51 }, + { 38, 55 }, { 38, 58 }, { 38, 63 }, { 38, 67 }, { 38, 80 }, + { 39, 52 }, { 39, 56 }, { 39, 61 }, { 39, 64 }, { 39, 68 }, + { 39, 81 }, { 40, 53 }, { 40, 57 }, { 40, 61 }, { 40, 65 }, + { 40, 69 }, { 40, 82 }, { 41, 59 }, { 41, 62 }, { 41, 64 }, + { 41, 70 }, { 41, 72 }, { 41, 83 }, { 42, 60 }, { 42, 63 }, + { 42, 65 }, { 42, 71 }, { 42, 73 }, { 42, 84 }, { 43, 66 }, + { 43, 67 }, { 43, 70 }, { 43, 71 }, { 43, 74 }, { 43, 85 }, + { 44, 68 }, { 44, 69 }, { 44, 72 }, { 44, 73 }, { 44, 74 }, + { 44, 86 }, { 45, 46 }, { 45, 47 }, { 45, 48 }, { 45, 49 }, + { 45, 75 }, { 45, 76 }, { 45, 87 }, { 45, 88 }, { 46, 48 }, + { 46, 50 }, { 46, 54 }, { 46, 75 }, { 46, 77 }, { 46, 87 }, + { 46, 89 }, { 47, 49 }, { 47, 51 }, { 47, 55 }, { 47, 75 }, + { 47, 78 }, { 47, 88 }, { 47, 90 }, { 48, 52 }, { 48, 56 }, + { 48, 76 }, { 48, 77 }, { 48, 87 }, { 48, 91 }, { 49, 53 }, + { 49, 57 }, { 49, 76 }, { 49, 78 }, { 49, 88 }, { 49, 92 }, + { 50, 51 }, { 50, 54 }, { 50, 58 }, { 50, 75 }, { 50, 79 }, + { 50, 89 }, { 50, 93 }, { 51, 55 }, { 51, 58 }, { 51, 75 }, + { 51, 80 }, { 51, 90 }, { 51, 93 }, { 52, 53 }, { 52, 56 }, + { 52, 61 }, { 52, 76 }, { 52, 81 }, { 52, 91 }, { 52, 94 }, + { 53, 57 }, { 53, 61 }, { 53, 76 }, { 53, 82 }, { 53, 92 }, + { 53, 94 }, { 54, 59 }, { 54, 62 }, { 54, 77 }, { 54, 79 }, + { 54, 89 }, { 54, 95 }, { 55, 60 }, { 55, 63 }, { 55, 78 }, + { 55, 80 }, { 55, 90 }, { 55, 96 }, { 56, 59 }, { 56, 64 }, + { 56, 77 }, { 56, 81 }, { 56, 91 }, { 56, 97 }, { 57, 60 }, + { 57, 65 }, { 57, 78 }, { 57, 82 }, { 57, 92 }, { 57, 98 }, + { 58, 66 }, { 58, 67 }, { 58, 79 }, { 58, 80 }, { 58, 93 }, + { 58, 99 }, { 59, 62 }, { 59, 64 }, { 59, 77 }, { 59, 83 }, + { 59, 95 }, { 59, 97 }, { 60, 63 }, { 60, 65 }, { 60, 78 }, + { 60, 84 }, { 60, 96 }, { 60, 98 }, { 61, 68 }, { 61, 69 }, + { 61, 81 }, { 61, 82 }, { 61, 94 }, { 61, 100 }, { 62, 66 }, + { 62, 70 }, { 62, 79 }, { 62, 83 }, { 62, 95 }, { 62, 101 }, + { 63, 67 }, { 63, 71 }, { 63, 80 }, { 63, 84 }, { 63, 96 }, + { 63, 102 }, { 64, 68 }, { 64, 72 }, { 64, 81 }, { 64, 83 }, + { 64, 97 }, { 64, 103 }, { 65, 69 }, { 65, 73 }, { 65, 82 }, + { 65, 84 }, { 65, 98 }, { 65, 104 }, { 66, 67 }, { 66, 70 }, + { 66, 79 }, { 66, 85 }, { 66, 99 }, { 66, 101 }, { 67, 71 }, + { 67, 80 }, { 67, 85 }, { 67, 99 }, { 67, 102 }, { 68, 69 }, + { 68, 72 }, { 68, 81 }, { 68, 86 }, { 68, 100 }, { 68, 103 }, + { 69, 73 }, { 69, 82 }, { 69, 86 }, { 69, 100 }, { 69, 104 }, + { 70, 72 }, { 70, 74 }, { 70, 83 }, { 70, 85 }, { 70, 101 }, + { 70, 105 }, { 71, 73 }, { 71, 74 }, { 71, 84 }, { 71, 85 }, + { 71, 102 }, { 71, 106 }, { 72, 74 }, { 72, 83 }, { 72, 86 }, + { 72, 103 }, { 72, 105 }, { 73, 74 }, { 73, 84 }, { 73, 86 }, + { 73, 104 }, { 73, 106 }, { 74, 85 }, { 74, 86 }, { 74, 105 }, + { 74, 106 }, { 75, 87 }, { 75, 88 }, { 75, 89 }, { 75, 90 }, + { 75, 93 }, { 75, 107 }, { 76, 87 }, { 76, 88 }, { 76, 91 }, + { 76, 92 }, { 76, 94 }, { 76, 108 }, { 77, 87 }, { 77, 89 }, + { 77, 91 }, { 77, 95 }, { 77, 97 }, { 77, 109 }, { 78, 88 }, + { 78, 90 }, { 78, 92 }, { 78, 96 }, { 78, 98 }, { 78, 110 }, + { 79, 89 }, { 79, 93 }, { 79, 95 }, { 79, 99 }, { 79, 101 }, + { 79, 111 }, { 80, 90 }, { 80, 93 }, { 80, 96 }, { 80, 99 }, + { 80, 102 }, { 80, 112 }, { 81, 91 }, { 81, 94 }, { 81, 97 }, + { 81, 100 }, { 81, 103 }, { 81, 113 }, { 82, 92 }, { 82, 94 }, + { 82, 98 }, { 82, 100 }, { 82, 104 }, { 82, 114 }, { 83, 95 }, + { 83, 97 }, { 83, 101 }, { 83, 103 }, { 83, 105 }, { 83, 115 }, + { 84, 96 }, { 84, 98 }, { 84, 102 }, { 84, 104 }, { 84, 106 }, + { 84, 116 }, { 85, 99 }, { 85, 101 }, { 85, 102 }, { 85, 105 }, + { 85, 106 }, { 85, 117 }, { 86, 100 }, { 86, 103 }, { 86, 104 }, + { 86, 105 }, { 86, 106 }, { 86, 118 }, { 87, 88 }, { 87, 89 }, + { 87, 91 }, { 87, 107 }, { 87, 108 }, { 87, 109 }, { 88, 90 }, + { 88, 92 }, { 88, 107 }, { 88, 108 }, { 88, 110 }, { 89, 93 }, + { 89, 95 }, { 89, 107 }, { 89, 109 }, { 89, 111 }, { 90, 93 }, + { 90, 96 }, { 90, 107 }, { 90, 110 }, { 90, 112 }, { 91, 94 }, + { 91, 97 }, { 91, 108 }, { 91, 109 }, { 91, 113 }, { 92, 94 }, + { 92, 98 }, { 92, 108 }, { 92, 110 }, { 92, 114 }, { 93, 99 }, + { 93, 107 }, { 93, 111 }, { 93, 112 }, { 94, 100 }, { 94, 108 }, + { 94, 113 }, { 94, 114 }, { 95, 97 }, { 95, 101 }, { 95, 109 }, + { 95, 111 }, { 95, 115 }, { 96, 98 }, { 96, 102 }, { 96, 110 }, + { 96, 112 }, { 96, 116 }, { 97, 103 }, { 97, 109 }, { 97, 113 }, + { 97, 115 }, { 98, 104 }, { 98, 110 }, { 98, 114 }, { 98, 116 }, + { 99, 101 }, { 99, 102 }, { 99, 111 }, { 99, 112 }, { 99, 117 }, + { 100, 103 }, { 100, 104 }, { 100, 113 }, { 100, 114 }, { 100, 118 }, + { 101, 105 }, { 101, 111 }, { 101, 115 }, { 101, 117 }, { 102, 106 }, + { 102, 112 }, { 102, 116 }, { 102, 117 }, { 103, 105 }, { 103, 113 }, + { 103, 115 }, { 103, 118 }, { 104, 106 }, { 104, 114 }, { 104, 116 }, + { 104, 118 }, { 105, 106 }, { 105, 115 }, { 105, 117 }, { 105, 118 }, + { 106, 116 }, { 106, 117 }, { 106, 118 }, { 107, 108 }, { 107, 109 }, + { 107, 110 }, { 107, 111 }, { 107, 112 }, { 107, 119 }, { 108, 109 }, + { 108, 110 }, { 108, 113 }, { 108, 114 }, { 108, 119 }, { 109, 111 }, + { 109, 113 }, { 109, 115 }, { 109, 119 }, { 110, 112 }, { 110, 114 }, + { 110, 116 }, { 110, 119 }, { 111, 112 }, { 111, 115 }, { 111, 117 }, + { 111, 119 }, { 112, 116 }, { 112, 117 }, { 112, 119 }, { 113, 114 }, + { 113, 115 }, { 113, 118 }, { 113, 119 }, { 114, 116 }, { 114, 118 }, + { 114, 119 }, { 115, 117 }, { 115, 118 }, { 115, 119 }, { 116, 117 }, + { 116, 118 }, { 116, 119 }, { 117, 118 }, { 117, 119 }, { 118, 119 } +}; + +static const int face_600[NUM_FACE_600][VERT_PER_FACE_600] = { + { 0, 1, 2 }, { 0, 1, 3 }, { 0, 1, 4 }, { 0, 1, 5 }, + { 0, 1, 6 }, { 0, 2, 3 }, { 0, 2, 4 }, { 0, 2, 7 }, + { 0, 2, 8 }, { 0, 3, 5 }, { 0, 3, 7 }, { 0, 3, 9 }, + { 0, 4, 6 }, { 0, 4, 8 }, { 0, 4, 10 }, { 0, 5, 6 }, + { 0, 5, 9 }, { 0, 5, 11 }, { 0, 6, 10 }, { 0, 6, 11 }, + { 0, 7, 8 }, { 0, 7, 9 }, { 0, 7, 12 }, { 0, 8, 10 }, + { 0, 8, 12 }, { 0, 9, 11 }, { 0, 9, 12 }, { 0, 10, 11 }, + { 0, 10, 12 }, { 0, 11, 12 }, { 1, 2, 3 }, { 1, 2, 4 }, + { 1, 2, 13 }, { 1, 2, 14 }, { 1, 3, 5 }, { 1, 3, 13 }, + { 1, 3, 15 }, { 1, 4, 6 }, { 1, 4, 14 }, { 1, 4, 16 }, + { 1, 5, 6 }, { 1, 5, 15 }, { 1, 5, 19 }, { 1, 6, 16 }, + { 1, 6, 19 }, { 1, 13, 14 }, { 1, 13, 15 }, { 1, 13, 33 }, + { 1, 14, 16 }, { 1, 14, 33 }, { 1, 15, 19 }, { 1, 15, 33 }, + { 1, 16, 19 }, { 1, 16, 33 }, { 1, 19, 33 }, { 2, 3, 7 }, + { 2, 3, 13 }, { 2, 3, 17 }, { 2, 4, 8 }, { 2, 4, 14 }, + { 2, 4, 18 }, { 2, 7, 8 }, { 2, 7, 17 }, { 2, 7, 20 }, + { 2, 8, 18 }, { 2, 8, 20 }, { 2, 13, 14 }, { 2, 13, 17 }, + { 2, 13, 34 }, { 2, 14, 18 }, { 2, 14, 34 }, { 2, 17, 20 }, + { 2, 17, 34 }, { 2, 18, 20 }, { 2, 18, 34 }, { 2, 20, 34 }, + { 3, 5, 9 }, { 3, 5, 15 }, { 3, 5, 21 }, { 3, 7, 9 }, + { 3, 7, 17 }, { 3, 7, 23 }, { 3, 9, 21 }, { 3, 9, 23 }, + { 3, 13, 15 }, { 3, 13, 17 }, { 3, 13, 35 }, { 3, 15, 21 }, + { 3, 15, 35 }, { 3, 17, 23 }, { 3, 17, 35 }, { 3, 21, 23 }, + { 3, 21, 35 }, { 3, 23, 35 }, { 4, 6, 10 }, { 4, 6, 16 }, + { 4, 6, 22 }, { 4, 8, 10 }, { 4, 8, 18 }, { 4, 8, 24 }, + { 4, 10, 22 }, { 4, 10, 24 }, { 4, 14, 16 }, { 4, 14, 18 }, + { 4, 14, 36 }, { 4, 16, 22 }, { 4, 16, 36 }, { 4, 18, 24 }, + { 4, 18, 36 }, { 4, 22, 24 }, { 4, 22, 36 }, { 4, 24, 36 }, + { 5, 6, 11 }, { 5, 6, 19 }, { 5, 6, 25 }, { 5, 9, 11 }, + { 5, 9, 21 }, { 5, 9, 27 }, { 5, 11, 25 }, { 5, 11, 27 }, + { 5, 15, 19 }, { 5, 15, 21 }, { 5, 15, 37 }, { 5, 19, 25 }, + { 5, 19, 37 }, { 5, 21, 27 }, { 5, 21, 37 }, { 5, 25, 27 }, + { 5, 25, 37 }, { 5, 27, 37 }, { 6, 10, 11 }, { 6, 10, 22 }, + { 6, 10, 28 }, { 6, 11, 25 }, { 6, 11, 28 }, { 6, 16, 19 }, + { 6, 16, 22 }, { 6, 16, 38 }, { 6, 19, 25 }, { 6, 19, 38 }, + { 6, 22, 28 }, { 6, 22, 38 }, { 6, 25, 28 }, { 6, 25, 38 }, + { 6, 28, 38 }, { 7, 8, 12 }, { 7, 8, 20 }, { 7, 8, 26 }, + { 7, 9, 12 }, { 7, 9, 23 }, { 7, 9, 29 }, { 7, 12, 26 }, + { 7, 12, 29 }, { 7, 17, 20 }, { 7, 17, 23 }, { 7, 17, 39 }, + { 7, 20, 26 }, { 7, 20, 39 }, { 7, 23, 29 }, { 7, 23, 39 }, + { 7, 26, 29 }, { 7, 26, 39 }, { 7, 29, 39 }, { 8, 10, 12 }, + { 8, 10, 24 }, { 8, 10, 30 }, { 8, 12, 26 }, { 8, 12, 30 }, + { 8, 18, 20 }, { 8, 18, 24 }, { 8, 18, 40 }, { 8, 20, 26 }, + { 8, 20, 40 }, { 8, 24, 30 }, { 8, 24, 40 }, { 8, 26, 30 }, + { 8, 26, 40 }, { 8, 30, 40 }, { 9, 11, 12 }, { 9, 11, 27 }, + { 9, 11, 31 }, { 9, 12, 29 }, { 9, 12, 31 }, { 9, 21, 23 }, + { 9, 21, 27 }, { 9, 21, 41 }, { 9, 23, 29 }, { 9, 23, 41 }, + { 9, 27, 31 }, { 9, 27, 41 }, { 9, 29, 31 }, { 9, 29, 41 }, + { 9, 31, 41 }, { 10, 11, 12 }, { 10, 11, 28 }, { 10, 11, 32 }, + { 10, 12, 30 }, { 10, 12, 32 }, { 10, 22, 24 }, { 10, 22, 28 }, + { 10, 22, 42 }, { 10, 24, 30 }, { 10, 24, 42 }, { 10, 28, 32 }, + { 10, 28, 42 }, { 10, 30, 32 }, { 10, 30, 42 }, { 10, 32, 42 }, + { 11, 12, 31 }, { 11, 12, 32 }, { 11, 25, 27 }, { 11, 25, 28 }, + { 11, 25, 43 }, { 11, 27, 31 }, { 11, 27, 43 }, { 11, 28, 32 }, + { 11, 28, 43 }, { 11, 31, 32 }, { 11, 31, 43 }, { 11, 32, 43 }, + { 12, 26, 29 }, { 12, 26, 30 }, { 12, 26, 44 }, { 12, 29, 31 }, + { 12, 29, 44 }, { 12, 30, 32 }, { 12, 30, 44 }, { 12, 31, 32 }, + { 12, 31, 44 }, { 12, 32, 44 }, { 13, 14, 33 }, { 13, 14, 34 }, + { 13, 14, 45 }, { 13, 15, 33 }, { 13, 15, 35 }, { 13, 15, 46 }, + { 13, 17, 34 }, { 13, 17, 35 }, { 13, 17, 48 }, { 13, 33, 45 }, + { 13, 33, 46 }, { 13, 34, 45 }, { 13, 34, 48 }, { 13, 35, 46 }, + { 13, 35, 48 }, { 13, 45, 46 }, { 13, 45, 48 }, { 13, 46, 48 }, + { 14, 16, 33 }, { 14, 16, 36 }, { 14, 16, 47 }, { 14, 18, 34 }, + { 14, 18, 36 }, { 14, 18, 49 }, { 14, 33, 45 }, { 14, 33, 47 }, + { 14, 34, 45 }, { 14, 34, 49 }, { 14, 36, 47 }, { 14, 36, 49 }, + { 14, 45, 47 }, { 14, 45, 49 }, { 14, 47, 49 }, { 15, 19, 33 }, + { 15, 19, 37 }, { 15, 19, 50 }, { 15, 21, 35 }, { 15, 21, 37 }, + { 15, 21, 54 }, { 15, 33, 46 }, { 15, 33, 50 }, { 15, 35, 46 }, + { 15, 35, 54 }, { 15, 37, 50 }, { 15, 37, 54 }, { 15, 46, 50 }, + { 15, 46, 54 }, { 15, 50, 54 }, { 16, 19, 33 }, { 16, 19, 38 }, + { 16, 19, 51 }, { 16, 22, 36 }, { 16, 22, 38 }, { 16, 22, 55 }, + { 16, 33, 47 }, { 16, 33, 51 }, { 16, 36, 47 }, { 16, 36, 55 }, + { 16, 38, 51 }, { 16, 38, 55 }, { 16, 47, 51 }, { 16, 47, 55 }, + { 16, 51, 55 }, { 17, 20, 34 }, { 17, 20, 39 }, { 17, 20, 52 }, + { 17, 23, 35 }, { 17, 23, 39 }, { 17, 23, 56 }, { 17, 34, 48 }, + { 17, 34, 52 }, { 17, 35, 48 }, { 17, 35, 56 }, { 17, 39, 52 }, + { 17, 39, 56 }, { 17, 48, 52 }, { 17, 48, 56 }, { 17, 52, 56 }, + { 18, 20, 34 }, { 18, 20, 40 }, { 18, 20, 53 }, { 18, 24, 36 }, + { 18, 24, 40 }, { 18, 24, 57 }, { 18, 34, 49 }, { 18, 34, 53 }, + { 18, 36, 49 }, { 18, 36, 57 }, { 18, 40, 53 }, { 18, 40, 57 }, + { 18, 49, 53 }, { 18, 49, 57 }, { 18, 53, 57 }, { 19, 25, 37 }, + { 19, 25, 38 }, { 19, 25, 58 }, { 19, 33, 50 }, { 19, 33, 51 }, + { 19, 37, 50 }, { 19, 37, 58 }, { 19, 38, 51 }, { 19, 38, 58 }, + { 19, 50, 51 }, { 19, 50, 58 }, { 19, 51, 58 }, { 20, 26, 39 }, + { 20, 26, 40 }, { 20, 26, 61 }, { 20, 34, 52 }, { 20, 34, 53 }, + { 20, 39, 52 }, { 20, 39, 61 }, { 20, 40, 53 }, { 20, 40, 61 }, + { 20, 52, 53 }, { 20, 52, 61 }, { 20, 53, 61 }, { 21, 23, 35 }, + { 21, 23, 41 }, { 21, 23, 59 }, { 21, 27, 37 }, { 21, 27, 41 }, + { 21, 27, 62 }, { 21, 35, 54 }, { 21, 35, 59 }, { 21, 37, 54 }, + { 21, 37, 62 }, { 21, 41, 59 }, { 21, 41, 62 }, { 21, 54, 59 }, + { 21, 54, 62 }, { 21, 59, 62 }, { 22, 24, 36 }, { 22, 24, 42 }, + { 22, 24, 60 }, { 22, 28, 38 }, { 22, 28, 42 }, { 22, 28, 63 }, + { 22, 36, 55 }, { 22, 36, 60 }, { 22, 38, 55 }, { 22, 38, 63 }, + { 22, 42, 60 }, { 22, 42, 63 }, { 22, 55, 60 }, { 22, 55, 63 }, + { 22, 60, 63 }, { 23, 29, 39 }, { 23, 29, 41 }, { 23, 29, 64 }, + { 23, 35, 56 }, { 23, 35, 59 }, { 23, 39, 56 }, { 23, 39, 64 }, + { 23, 41, 59 }, { 23, 41, 64 }, { 23, 56, 59 }, { 23, 56, 64 }, + { 23, 59, 64 }, { 24, 30, 40 }, { 24, 30, 42 }, { 24, 30, 65 }, + { 24, 36, 57 }, { 24, 36, 60 }, { 24, 40, 57 }, { 24, 40, 65 }, + { 24, 42, 60 }, { 24, 42, 65 }, { 24, 57, 60 }, { 24, 57, 65 }, + { 24, 60, 65 }, { 25, 27, 37 }, { 25, 27, 43 }, { 25, 27, 66 }, + { 25, 28, 38 }, { 25, 28, 43 }, { 25, 28, 67 }, { 25, 37, 58 }, + { 25, 37, 66 }, { 25, 38, 58 }, { 25, 38, 67 }, { 25, 43, 66 }, + { 25, 43, 67 }, { 25, 58, 66 }, { 25, 58, 67 }, { 25, 66, 67 }, + { 26, 29, 39 }, { 26, 29, 44 }, { 26, 29, 68 }, { 26, 30, 40 }, + { 26, 30, 44 }, { 26, 30, 69 }, { 26, 39, 61 }, { 26, 39, 68 }, + { 26, 40, 61 }, { 26, 40, 69 }, { 26, 44, 68 }, { 26, 44, 69 }, + { 26, 61, 68 }, { 26, 61, 69 }, { 26, 68, 69 }, { 27, 31, 41 }, + { 27, 31, 43 }, { 27, 31, 70 }, { 27, 37, 62 }, { 27, 37, 66 }, + { 27, 41, 62 }, { 27, 41, 70 }, { 27, 43, 66 }, { 27, 43, 70 }, + { 27, 62, 66 }, { 27, 62, 70 }, { 27, 66, 70 }, { 28, 32, 42 }, + { 28, 32, 43 }, { 28, 32, 71 }, { 28, 38, 63 }, { 28, 38, 67 }, + { 28, 42, 63 }, { 28, 42, 71 }, { 28, 43, 67 }, { 28, 43, 71 }, + { 28, 63, 67 }, { 28, 63, 71 }, { 28, 67, 71 }, { 29, 31, 41 }, + { 29, 31, 44 }, { 29, 31, 72 }, { 29, 39, 64 }, { 29, 39, 68 }, + { 29, 41, 64 }, { 29, 41, 72 }, { 29, 44, 68 }, { 29, 44, 72 }, + { 29, 64, 68 }, { 29, 64, 72 }, { 29, 68, 72 }, { 30, 32, 42 }, + { 30, 32, 44 }, { 30, 32, 73 }, { 30, 40, 65 }, { 30, 40, 69 }, + { 30, 42, 65 }, { 30, 42, 73 }, { 30, 44, 69 }, { 30, 44, 73 }, + { 30, 65, 69 }, { 30, 65, 73 }, { 30, 69, 73 }, { 31, 32, 43 }, + { 31, 32, 44 }, { 31, 32, 74 }, { 31, 41, 70 }, { 31, 41, 72 }, + { 31, 43, 70 }, { 31, 43, 74 }, { 31, 44, 72 }, { 31, 44, 74 }, + { 31, 70, 72 }, { 31, 70, 74 }, { 31, 72, 74 }, { 32, 42, 71 }, + { 32, 42, 73 }, { 32, 43, 71 }, { 32, 43, 74 }, { 32, 44, 73 }, + { 32, 44, 74 }, { 32, 71, 73 }, { 32, 71, 74 }, { 32, 73, 74 }, + { 33, 45, 46 }, { 33, 45, 47 }, { 33, 45, 75 }, { 33, 46, 50 }, + { 33, 46, 75 }, { 33, 47, 51 }, { 33, 47, 75 }, { 33, 50, 51 }, + { 33, 50, 75 }, { 33, 51, 75 }, { 34, 45, 48 }, { 34, 45, 49 }, + { 34, 45, 76 }, { 34, 48, 52 }, { 34, 48, 76 }, { 34, 49, 53 }, + { 34, 49, 76 }, { 34, 52, 53 }, { 34, 52, 76 }, { 34, 53, 76 }, + { 35, 46, 48 }, { 35, 46, 54 }, { 35, 46, 77 }, { 35, 48, 56 }, + { 35, 48, 77 }, { 35, 54, 59 }, { 35, 54, 77 }, { 35, 56, 59 }, + { 35, 56, 77 }, { 35, 59, 77 }, { 36, 47, 49 }, { 36, 47, 55 }, + { 36, 47, 78 }, { 36, 49, 57 }, { 36, 49, 78 }, { 36, 55, 60 }, + { 36, 55, 78 }, { 36, 57, 60 }, { 36, 57, 78 }, { 36, 60, 78 }, + { 37, 50, 54 }, { 37, 50, 58 }, { 37, 50, 79 }, { 37, 54, 62 }, + { 37, 54, 79 }, { 37, 58, 66 }, { 37, 58, 79 }, { 37, 62, 66 }, + { 37, 62, 79 }, { 37, 66, 79 }, { 38, 51, 55 }, { 38, 51, 58 }, + { 38, 51, 80 }, { 38, 55, 63 }, { 38, 55, 80 }, { 38, 58, 67 }, + { 38, 58, 80 }, { 38, 63, 67 }, { 38, 63, 80 }, { 38, 67, 80 }, + { 39, 52, 56 }, { 39, 52, 61 }, { 39, 52, 81 }, { 39, 56, 64 }, + { 39, 56, 81 }, { 39, 61, 68 }, { 39, 61, 81 }, { 39, 64, 68 }, + { 39, 64, 81 }, { 39, 68, 81 }, { 40, 53, 57 }, { 40, 53, 61 }, + { 40, 53, 82 }, { 40, 57, 65 }, { 40, 57, 82 }, { 40, 61, 69 }, + { 40, 61, 82 }, { 40, 65, 69 }, { 40, 65, 82 }, { 40, 69, 82 }, + { 41, 59, 62 }, { 41, 59, 64 }, { 41, 59, 83 }, { 41, 62, 70 }, + { 41, 62, 83 }, { 41, 64, 72 }, { 41, 64, 83 }, { 41, 70, 72 }, + { 41, 70, 83 }, { 41, 72, 83 }, { 42, 60, 63 }, { 42, 60, 65 }, + { 42, 60, 84 }, { 42, 63, 71 }, { 42, 63, 84 }, { 42, 65, 73 }, + { 42, 65, 84 }, { 42, 71, 73 }, { 42, 71, 84 }, { 42, 73, 84 }, + { 43, 66, 67 }, { 43, 66, 70 }, { 43, 66, 85 }, { 43, 67, 71 }, + { 43, 67, 85 }, { 43, 70, 74 }, { 43, 70, 85 }, { 43, 71, 74 }, + { 43, 71, 85 }, { 43, 74, 85 }, { 44, 68, 69 }, { 44, 68, 72 }, + { 44, 68, 86 }, { 44, 69, 73 }, { 44, 69, 86 }, { 44, 72, 74 }, + { 44, 72, 86 }, { 44, 73, 74 }, { 44, 73, 86 }, { 44, 74, 86 }, + { 45, 46, 48 }, { 45, 46, 75 }, { 45, 46, 87 }, { 45, 47, 49 }, + { 45, 47, 75 }, { 45, 47, 88 }, { 45, 48, 76 }, { 45, 48, 87 }, + { 45, 49, 76 }, { 45, 49, 88 }, { 45, 75, 87 }, { 45, 75, 88 }, + { 45, 76, 87 }, { 45, 76, 88 }, { 45, 87, 88 }, { 46, 48, 77 }, + { 46, 48, 87 }, { 46, 50, 54 }, { 46, 50, 75 }, { 46, 50, 89 }, + { 46, 54, 77 }, { 46, 54, 89 }, { 46, 75, 87 }, { 46, 75, 89 }, + { 46, 77, 87 }, { 46, 77, 89 }, { 46, 87, 89 }, { 47, 49, 78 }, + { 47, 49, 88 }, { 47, 51, 55 }, { 47, 51, 75 }, { 47, 51, 90 }, + { 47, 55, 78 }, { 47, 55, 90 }, { 47, 75, 88 }, { 47, 75, 90 }, + { 47, 78, 88 }, { 47, 78, 90 }, { 47, 88, 90 }, { 48, 52, 56 }, + { 48, 52, 76 }, { 48, 52, 91 }, { 48, 56, 77 }, { 48, 56, 91 }, + { 48, 76, 87 }, { 48, 76, 91 }, { 48, 77, 87 }, { 48, 77, 91 }, + { 48, 87, 91 }, { 49, 53, 57 }, { 49, 53, 76 }, { 49, 53, 92 }, + { 49, 57, 78 }, { 49, 57, 92 }, { 49, 76, 88 }, { 49, 76, 92 }, + { 49, 78, 88 }, { 49, 78, 92 }, { 49, 88, 92 }, { 50, 51, 58 }, + { 50, 51, 75 }, { 50, 51, 93 }, { 50, 54, 79 }, { 50, 54, 89 }, + { 50, 58, 79 }, { 50, 58, 93 }, { 50, 75, 89 }, { 50, 75, 93 }, + { 50, 79, 89 }, { 50, 79, 93 }, { 50, 89, 93 }, { 51, 55, 80 }, + { 51, 55, 90 }, { 51, 58, 80 }, { 51, 58, 93 }, { 51, 75, 90 }, + { 51, 75, 93 }, { 51, 80, 90 }, { 51, 80, 93 }, { 51, 90, 93 }, + { 52, 53, 61 }, { 52, 53, 76 }, { 52, 53, 94 }, { 52, 56, 81 }, + { 52, 56, 91 }, { 52, 61, 81 }, { 52, 61, 94 }, { 52, 76, 91 }, + { 52, 76, 94 }, { 52, 81, 91 }, { 52, 81, 94 }, { 52, 91, 94 }, + { 53, 57, 82 }, { 53, 57, 92 }, { 53, 61, 82 }, { 53, 61, 94 }, + { 53, 76, 92 }, { 53, 76, 94 }, { 53, 82, 92 }, { 53, 82, 94 }, + { 53, 92, 94 }, { 54, 59, 62 }, { 54, 59, 77 }, { 54, 59, 95 }, + { 54, 62, 79 }, { 54, 62, 95 }, { 54, 77, 89 }, { 54, 77, 95 }, + { 54, 79, 89 }, { 54, 79, 95 }, { 54, 89, 95 }, { 55, 60, 63 }, + { 55, 60, 78 }, { 55, 60, 96 }, { 55, 63, 80 }, { 55, 63, 96 }, + { 55, 78, 90 }, { 55, 78, 96 }, { 55, 80, 90 }, { 55, 80, 96 }, + { 55, 90, 96 }, { 56, 59, 64 }, { 56, 59, 77 }, { 56, 59, 97 }, + { 56, 64, 81 }, { 56, 64, 97 }, { 56, 77, 91 }, { 56, 77, 97 }, + { 56, 81, 91 }, { 56, 81, 97 }, { 56, 91, 97 }, { 57, 60, 65 }, + { 57, 60, 78 }, { 57, 60, 98 }, { 57, 65, 82 }, { 57, 65, 98 }, + { 57, 78, 92 }, { 57, 78, 98 }, { 57, 82, 92 }, { 57, 82, 98 }, + { 57, 92, 98 }, { 58, 66, 67 }, { 58, 66, 79 }, { 58, 66, 99 }, + { 58, 67, 80 }, { 58, 67, 99 }, { 58, 79, 93 }, { 58, 79, 99 }, + { 58, 80, 93 }, { 58, 80, 99 }, { 58, 93, 99 }, { 59, 62, 83 }, + { 59, 62, 95 }, { 59, 64, 83 }, { 59, 64, 97 }, { 59, 77, 95 }, + { 59, 77, 97 }, { 59, 83, 95 }, { 59, 83, 97 }, { 59, 95, 97 }, + { 60, 63, 84 }, { 60, 63, 96 }, { 60, 65, 84 }, { 60, 65, 98 }, + { 60, 78, 96 }, { 60, 78, 98 }, { 60, 84, 96 }, { 60, 84, 98 }, + { 60, 96, 98 }, { 61, 68, 69 }, { 61, 68, 81 }, { 61, 68, 100 }, + { 61, 69, 82 }, { 61, 69, 100 }, { 61, 81, 94 }, { 61, 81, 100 }, + { 61, 82, 94 }, { 61, 82, 100 }, { 61, 94, 100 }, { 62, 66, 70 }, + { 62, 66, 79 }, { 62, 66, 101 }, { 62, 70, 83 }, { 62, 70, 101 }, + { 62, 79, 95 }, { 62, 79, 101 }, { 62, 83, 95 }, { 62, 83, 101 }, + { 62, 95, 101 }, { 63, 67, 71 }, { 63, 67, 80 }, { 63, 67, 102 }, + { 63, 71, 84 }, { 63, 71, 102 }, { 63, 80, 96 }, { 63, 80, 102 }, + { 63, 84, 96 }, { 63, 84, 102 }, { 63, 96, 102 }, { 64, 68, 72 }, + { 64, 68, 81 }, { 64, 68, 103 }, { 64, 72, 83 }, { 64, 72, 103 }, + { 64, 81, 97 }, { 64, 81, 103 }, { 64, 83, 97 }, { 64, 83, 103 }, + { 64, 97, 103 }, { 65, 69, 73 }, { 65, 69, 82 }, { 65, 69, 104 }, + { 65, 73, 84 }, { 65, 73, 104 }, { 65, 82, 98 }, { 65, 82, 104 }, + { 65, 84, 98 }, { 65, 84, 104 }, { 65, 98, 104 }, { 66, 67, 85 }, + { 66, 67, 99 }, { 66, 70, 85 }, { 66, 70, 101 }, { 66, 79, 99 }, + { 66, 79, 101 }, { 66, 85, 99 }, { 66, 85, 101 }, { 66, 99, 101 }, + { 67, 71, 85 }, { 67, 71, 102 }, { 67, 80, 99 }, { 67, 80, 102 }, + { 67, 85, 99 }, { 67, 85, 102 }, { 67, 99, 102 }, { 68, 69, 86 }, + { 68, 69, 100 }, { 68, 72, 86 }, { 68, 72, 103 }, { 68, 81, 100 }, + { 68, 81, 103 }, { 68, 86, 100 }, { 68, 86, 103 }, { 68, 100, 103 }, + { 69, 73, 86 }, { 69, 73, 104 }, { 69, 82, 100 }, { 69, 82, 104 }, + { 69, 86, 100 }, { 69, 86, 104 }, { 69, 100, 104 }, { 70, 72, 74 }, + { 70, 72, 83 }, { 70, 72, 105 }, { 70, 74, 85 }, { 70, 74, 105 }, + { 70, 83, 101 }, { 70, 83, 105 }, { 70, 85, 101 }, { 70, 85, 105 }, + { 70, 101, 105 }, { 71, 73, 74 }, { 71, 73, 84 }, { 71, 73, 106 }, + { 71, 74, 85 }, { 71, 74, 106 }, { 71, 84, 102 }, { 71, 84, 106 }, + { 71, 85, 102 }, { 71, 85, 106 }, { 71, 102, 106 }, { 72, 74, 86 }, + { 72, 74, 105 }, { 72, 83, 103 }, { 72, 83, 105 }, { 72, 86, 103 }, + { 72, 86, 105 }, { 72, 103, 105 }, { 73, 74, 86 }, { 73, 74, 106 }, + { 73, 84, 104 }, { 73, 84, 106 }, { 73, 86, 104 }, { 73, 86, 106 }, + { 73, 104, 106 }, { 74, 85, 105 }, { 74, 85, 106 }, { 74, 86, 105 }, + { 74, 86, 106 }, { 74, 105, 106 }, { 75, 87, 88 }, { 75, 87, 89 }, + { 75, 87, 107 }, { 75, 88, 90 }, { 75, 88, 107 }, { 75, 89, 93 }, + { 75, 89, 107 }, { 75, 90, 93 }, { 75, 90, 107 }, { 75, 93, 107 }, + { 76, 87, 88 }, { 76, 87, 91 }, { 76, 87, 108 }, { 76, 88, 92 }, + { 76, 88, 108 }, { 76, 91, 94 }, { 76, 91, 108 }, { 76, 92, 94 }, + { 76, 92, 108 }, { 76, 94, 108 }, { 77, 87, 89 }, { 77, 87, 91 }, + { 77, 87, 109 }, { 77, 89, 95 }, { 77, 89, 109 }, { 77, 91, 97 }, + { 77, 91, 109 }, { 77, 95, 97 }, { 77, 95, 109 }, { 77, 97, 109 }, + { 78, 88, 90 }, { 78, 88, 92 }, { 78, 88, 110 }, { 78, 90, 96 }, + { 78, 90, 110 }, { 78, 92, 98 }, { 78, 92, 110 }, { 78, 96, 98 }, + { 78, 96, 110 }, { 78, 98, 110 }, { 79, 89, 93 }, { 79, 89, 95 }, + { 79, 89, 111 }, { 79, 93, 99 }, { 79, 93, 111 }, { 79, 95, 101 }, + { 79, 95, 111 }, { 79, 99, 101 }, { 79, 99, 111 }, { 79, 101, 111 }, + { 80, 90, 93 }, { 80, 90, 96 }, { 80, 90, 112 }, { 80, 93, 99 }, + { 80, 93, 112 }, { 80, 96, 102 }, { 80, 96, 112 }, { 80, 99, 102 }, + { 80, 99, 112 }, { 80, 102, 112 }, { 81, 91, 94 }, { 81, 91, 97 }, + { 81, 91, 113 }, { 81, 94, 100 }, { 81, 94, 113 }, { 81, 97, 103 }, + { 81, 97, 113 }, { 81, 100, 103 }, { 81, 100, 113 }, { 81, 103, 113 }, + { 82, 92, 94 }, { 82, 92, 98 }, { 82, 92, 114 }, { 82, 94, 100 }, + { 82, 94, 114 }, { 82, 98, 104 }, { 82, 98, 114 }, { 82, 100, 104 }, + { 82, 100, 114 }, { 82, 104, 114 }, { 83, 95, 97 }, { 83, 95, 101 }, + { 83, 95, 115 }, { 83, 97, 103 }, { 83, 97, 115 }, { 83, 101, 105 }, + { 83, 101, 115 }, { 83, 103, 105 }, { 83, 103, 115 }, { 83, 105, 115 }, + { 84, 96, 98 }, { 84, 96, 102 }, { 84, 96, 116 }, { 84, 98, 104 }, + { 84, 98, 116 }, { 84, 102, 106 }, { 84, 102, 116 }, { 84, 104, 106 }, + { 84, 104, 116 }, { 84, 106, 116 }, { 85, 99, 101 }, { 85, 99, 102 }, + { 85, 99, 117 }, { 85, 101, 105 }, { 85, 101, 117 }, { 85, 102, 106 }, + { 85, 102, 117 }, { 85, 105, 106 }, { 85, 105, 117 }, { 85, 106, 117 }, + { 86, 100, 103 }, { 86, 100, 104 }, { 86, 100, 118 }, { 86, 103, 105 }, + { 86, 103, 118 }, { 86, 104, 106 }, { 86, 104, 118 }, { 86, 105, 106 }, + { 86, 105, 118 }, { 86, 106, 118 }, { 87, 88, 107 }, { 87, 88, 108 }, + { 87, 89, 107 }, { 87, 89, 109 }, { 87, 91, 108 }, { 87, 91, 109 }, + { 87, 107, 108 }, { 87, 107, 109 }, { 87, 108, 109 }, { 88, 90, 107 }, + { 88, 90, 110 }, { 88, 92, 108 }, { 88, 92, 110 }, { 88, 107, 108 }, + { 88, 107, 110 }, { 88, 108, 110 }, { 89, 93, 107 }, { 89, 93, 111 }, + { 89, 95, 109 }, { 89, 95, 111 }, { 89, 107, 109 }, { 89, 107, 111 }, + { 89, 109, 111 }, { 90, 93, 107 }, { 90, 93, 112 }, { 90, 96, 110 }, + { 90, 96, 112 }, { 90, 107, 110 }, { 90, 107, 112 }, { 90, 110, 112 }, + { 91, 94, 108 }, { 91, 94, 113 }, { 91, 97, 109 }, { 91, 97, 113 }, + { 91, 108, 109 }, { 91, 108, 113 }, { 91, 109, 113 }, { 92, 94, 108 }, + { 92, 94, 114 }, { 92, 98, 110 }, { 92, 98, 114 }, { 92, 108, 110 }, + { 92, 108, 114 }, { 92, 110, 114 }, { 93, 99, 111 }, { 93, 99, 112 }, + { 93, 107, 111 }, { 93, 107, 112 }, { 93, 111, 112 }, { 94, 100, 113 }, + { 94, 100, 114 }, { 94, 108, 113 }, { 94, 108, 114 }, { 94, 113, 114 }, + { 95, 97, 109 }, { 95, 97, 115 }, { 95, 101, 111 }, { 95, 101, 115 }, + { 95, 109, 111 }, { 95, 109, 115 }, { 95, 111, 115 }, { 96, 98, 110 }, + { 96, 98, 116 }, { 96, 102, 112 }, { 96, 102, 116 }, { 96, 110, 112 }, + { 96, 110, 116 }, { 96, 112, 116 }, { 97, 103, 113 }, { 97, 103, 115 }, + { 97, 109, 113 }, { 97, 109, 115 }, { 97, 113, 115 }, { 98, 104, 114 }, + { 98, 104, 116 }, { 98, 110, 114 }, { 98, 110, 116 }, { 98, 114, 116 }, + { 99, 101, 111 }, { 99, 101, 117 }, { 99, 102, 112 }, { 99, 102, 117 }, + { 99, 111, 112 }, { 99, 111, 117 }, { 99, 112, 117 }, { 100, 103, 113 }, + { 100, 103, 118 }, { 100, 104, 114 }, { 100, 104, 118 }, { 100, 113, 114 }, + { 100, 113, 118 }, { 100, 114, 118 }, { 101, 105, 115 }, { 101, 105, 117 }, + { 101, 111, 115 }, { 101, 111, 117 }, { 101, 115, 117 }, { 102, 106, 116 }, + { 102, 106, 117 }, { 102, 112, 116 }, { 102, 112, 117 }, { 102, 116, 117 }, + { 103, 105, 115 }, { 103, 105, 118 }, { 103, 113, 115 }, { 103, 113, 118 }, + { 103, 115, 118 }, { 104, 106, 116 }, { 104, 106, 118 }, { 104, 114, 116 }, + { 104, 114, 118 }, { 104, 116, 118 }, { 105, 106, 117 }, { 105, 106, 118 }, + { 105, 115, 117 }, { 105, 115, 118 }, { 105, 117, 118 }, { 106, 116, 117 }, + { 106, 116, 118 }, { 106, 117, 118 }, { 107, 108, 109 }, { 107, 108, 110 }, + { 107, 108, 119 }, { 107, 109, 111 }, { 107, 109, 119 }, { 107, 110, 112 }, + { 107, 110, 119 }, { 107, 111, 112 }, { 107, 111, 119 }, { 107, 112, 119 }, + { 108, 109, 113 }, { 108, 109, 119 }, { 108, 110, 114 }, { 108, 110, 119 }, + { 108, 113, 114 }, { 108, 113, 119 }, { 108, 114, 119 }, { 109, 111, 115 }, + { 109, 111, 119 }, { 109, 113, 115 }, { 109, 113, 119 }, { 109, 115, 119 }, + { 110, 112, 116 }, { 110, 112, 119 }, { 110, 114, 116 }, { 110, 114, 119 }, + { 110, 116, 119 }, { 111, 112, 117 }, { 111, 112, 119 }, { 111, 115, 117 }, + { 111, 115, 119 }, { 111, 117, 119 }, { 112, 116, 117 }, { 112, 116, 119 }, + { 112, 117, 119 }, { 113, 114, 118 }, { 113, 114, 119 }, { 113, 115, 118 }, + { 113, 115, 119 }, { 113, 118, 119 }, { 114, 116, 118 }, { 114, 116, 119 }, + { 114, 118, 119 }, { 115, 117, 118 }, { 115, 117, 119 }, { 115, 118, 119 }, + { 116, 117, 118 }, { 116, 117, 119 }, { 116, 118, 119 }, { 117, 118, 119 } +}; + + + +/* Add a rotation around the wx-plane to the matrix m. */ +static void rotatewx(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][1]; + v = m[i][2]; + m[i][1] = c*u+s*v; + m[i][2] = -s*u+c*v; + } +} + + +/* Add a rotation around the wy-plane to the matrix m. */ +static void rotatewy(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][2]; + m[i][0] = c*u-s*v; + m[i][2] = s*u+c*v; + } +} + + +/* Add a rotation around the wz-plane to the matrix m. */ +static void rotatewz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][1]; + m[i][0] = c*u+s*v; + m[i][1] = -s*u+c*v; + } +} + + +/* Add a rotation around the xy-plane to the matrix m. */ +static void rotatexy(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][2]; + v = m[i][3]; + m[i][2] = c*u+s*v; + m[i][3] = -s*u+c*v; + } +} + + +/* Add a rotation around the xz-plane to the matrix m. */ +static void rotatexz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][1]; + v = m[i][3]; + m[i][1] = c*u-s*v; + m[i][3] = s*u+c*v; + } +} + + +/* Add a rotation around the yz-plane to the matrix m. */ +static void rotateyz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][3]; + m[i][0] = c*u-s*v; + m[i][3] = s*u+c*v; + } +} + + +/* Compute the rotation matrix m from the rotation angles. */ +static void rotateall(float al, float be, float de, float ze, float et, + float th, float m[4][4]) +{ + int i, j; + + for (i=0; i<4; i++) + for (j=0; j<4; j++) + m[i][j] = (i==j); + rotatewx(m,al); + rotatewy(m,be); + rotatewz(m,de); + rotatexz(m,et); + rotatexy(m,ze); + rotateyz(m,th); +} + + +/* Multiply two rotation matrices: o=m*n. */ +static void mult_rotmat(float m[4][4], float n[4][4], float o[4][4]) +{ + int i, j, k; + + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + o[i][j] = 0.0; + for (k=0; k<4; k++) + o[i][j] += m[i][k]*n[k][j]; + } + } +} + + +/* Compute a 4D rotation matrix from two unit quaternions. */ +static void quats_to_rotmat(float p[4], float q[4], float m[4][4]) +{ + double al, be, de, ze, et, th; + double r00, r01, r02, r12, r22; + + r00 = 1.0-2.0*(p[1]*p[1]+p[2]*p[2]); + r01 = 2.0*(p[0]*p[1]+p[2]*p[3]); + r02 = 2.0*(p[2]*p[0]-p[1]*p[3]); + r12 = 2.0*(p[1]*p[2]+p[0]*p[3]); + r22 = 1.0-2.0*(p[1]*p[1]+p[0]*p[0]); + + al = atan2(-r12,r22)*180.0/M_PI; + be = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + de = atan2(-r01,r00)*180.0/M_PI; + + r00 = 1.0-2.0*(q[1]*q[1]+q[2]*q[2]); + r01 = 2.0*(q[0]*q[1]+q[2]*q[3]); + r02 = 2.0*(q[2]*q[0]-q[1]*q[3]); + r12 = 2.0*(q[1]*q[2]+q[0]*q[3]); + r22 = 1.0-2.0*(q[1]*q[1]+q[0]*q[0]); + + et = atan2(-r12,r22)*180.0/M_PI; + th = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + ze = atan2(-r01,r00)*180.0/M_PI; + + rotateall(al,be,de,ze,et,-th,m); +} + + +/* Compute the normal vector of a plane based on three points in the plane. */ +static void normal(const float *p, const float *q, const float *r, + float *n) +{ + float u[3], v[3], t; + + u[0] = q[0]-p[0]; + u[1] = q[1]-p[1]; + u[2] = q[2]-p[2]; + v[0] = r[0]-p[0]; + v[1] = r[1]-p[1]; + v[2] = r[2]-p[2]; + n[0] = u[1]*v[2]-u[2]*v[1]; + n[1] = u[2]*v[0]-u[0]*v[2]; + n[2] = u[0]*v[1]-u[1]*v[0]; + t = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]); + n[0] /= t; + n[1] /= t; + n[2] /= t; +} + + +/* Project an array of vertices from 4d to 3d. */ +static void project(ModeInfo *mi, const float vert[][4], float v[][4], int num) +{ + float s, q1[4], q2[4], r1[4][4], r2[4][4], m[4][4]; + int i, j, k; + polytopesstruct *pp = &poly[MI_SCREEN(mi)]; + + rotateall(pp->alpha,pp->beta,pp->delta,pp->zeta,pp->eta,pp->theta,r1); + + gltrackball_get_quaternion(pp->trackballs[0],q1); + gltrackball_get_quaternion(pp->trackballs[1],q2); + quats_to_rotmat(q1,q2,r2); + + mult_rotmat(r2,r1,m); + + /* Project the vertices from 4d to 3d. */ + for (i=0; ipolygon_count = 0; + if (display_mode == DISP_WIREFRAME) + { + if (color_mode == COLORS_SINGLE) + glColor4fv(red); + glBegin(GL_LINES); + for (i=0; ipolygon_count = num_edge; + } + else + { + if (color_mode == COLORS_SINGLE) + { + red_trans[3] = face_color_trans[0][3]/2.0; + if (display_mode == DISP_TRANSPARENT) + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,red_trans); + else + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,red); + } + for (i=0; ipolygon_count = num_face; + } +} + + +/* Draw a 5-cell {3,3,3} projected into 3d. */ +static void cell_5(ModeInfo *mi) +{ + polytopesstruct *hp = &poly[MI_SCREEN(mi)]; + float v[NUM_VERT_5][4]; + + project(mi,vert_5,v,NUM_VERT_5); + draw(mi,v,edge_5,NUM_EDGE_5,(int *)face_5,NUM_FACE_5, + VERT_PER_FACE_5,hp->edge_color_5,hp->face_color_5, + hp->face_color_trans_5); +} + + +/* Draw a 8-cell {4,3,3} projected into 3d. */ +static void cell_8(ModeInfo *mi) +{ + polytopesstruct *hp = &poly[MI_SCREEN(mi)]; + float v[NUM_VERT_8][4]; + + project(mi,vert_8,v,NUM_VERT_8); + draw(mi,v,edge_8,NUM_EDGE_8,(int *)face_8,NUM_FACE_8, + VERT_PER_FACE_8,hp->edge_color_8,hp->face_color_8, + hp->face_color_trans_8); +} + + +/* Draw a 16-cell {3,3,4} projected into 3d. */ +static void cell_16(ModeInfo *mi) +{ + polytopesstruct *hp = &poly[MI_SCREEN(mi)]; + float v[NUM_VERT_16][4]; + + project(mi,vert_16,v,NUM_VERT_16); + draw(mi,v,edge_16,NUM_EDGE_16,(int *)face_16,NUM_FACE_16, + VERT_PER_FACE_16,hp->edge_color_16,hp->face_color_16, + hp->face_color_trans_16); +} + + +/* Draw a 24-cell {3,4,3} projected into 3d. */ +static void cell_24(ModeInfo *mi) +{ + polytopesstruct *hp = &poly[MI_SCREEN(mi)]; + float v[NUM_VERT_24][4]; + + project(mi,vert_24,v,NUM_VERT_24); + draw(mi,v,edge_24,NUM_EDGE_24,(int *)face_24,NUM_FACE_24, + VERT_PER_FACE_24,hp->edge_color_24,hp->face_color_24, + hp->face_color_trans_24); +} + + +/* Draw a 120-cell {5,3,3} projected into 3d. */ +static void cell_120(ModeInfo *mi) +{ + polytopesstruct *hp = &poly[MI_SCREEN(mi)]; + float v[NUM_VERT_120][4]; + + project(mi,vert_120,v,NUM_VERT_120); + draw(mi,v,edge_120,NUM_EDGE_120,(int *)face_120,NUM_FACE_120, + VERT_PER_FACE_120,hp->edge_color_120,hp->face_color_120, + hp->face_color_trans_120); +} + + +/* Draw a 600-cell {3,3,5} projected into 3d. */ +static void cell_600(ModeInfo *mi) +{ + polytopesstruct *hp = &poly[MI_SCREEN(mi)]; + float v[NUM_VERT_600][4]; + + project(mi,vert_600,v,NUM_VERT_600); + draw(mi,v,edge_600,NUM_EDGE_600,(int *)face_600,NUM_FACE_600, + VERT_PER_FACE_600,hp->edge_color_600,hp->face_color_600, + hp->face_color_trans_600); +} + + +/* Compute a color based on the w-depth of a point. */ +static void color(float depth, float alpha, float min, float max, + float color[4]) +{ + double d, t; + int s; + + d = (depth-min)/(max-min); + s = floor(d*4.0); + t = d*4.0-s; + if (s < 0) + s += 6; + if (s >= 6) + s -= 6; + switch (s) + { + case 0: + color[0] = 1.0; + color[1] = t; + color[2] = 0.0; + break; + case 1: + color[0] = 1.0-t; + color[1] = 1.0; + color[2] = 0.0; + break; + case 2: + color[0] = 0.0; + color[1] = 1.0; + color[2] = t; + break; + case 3: + color[0] = 0.0; + color[1] = 1.0-t; + color[2] = 1.0; + break; + case 4: + color[0] = t; + color[1] = 0.0; + color[2] = 1.0; + break; + case 5: + color[0] = 1.0; + color[1] = 0.0; + color[2] = 1.0-t; + break; + } + color[3] = alpha; +} + + +/* Set the colors of a single polytope's edges and faces. */ +static void colors(const float vert[][4], + const int edge[][2], int num_edge, + const int face[], int num_face, + int vert_per_face, + float edge_color[][4], + float face_color[][4], + float face_color_trans[][4], + float alpha, + float min_edge_depth, float max_edge_depth, + float min_face_depth, float max_face_depth) +{ + int i, j; + float depth; + + for (i=0; iedge_color_5,hp->face_color_5, + hp->face_color_trans_5,0.5,MIN_EDGE_DEPTH_5, + MAX_EDGE_DEPTH_5,MIN_FACE_DEPTH_5,MAX_FACE_DEPTH_5); + + /* 8-cell. */ + colors(vert_8,edge_8,NUM_EDGE_8,(int *)face_8,NUM_FACE_8, + VERT_PER_FACE_8,hp->edge_color_8,hp->face_color_8, + hp->face_color_trans_8,0.4,MIN_EDGE_DEPTH_8, + MAX_EDGE_DEPTH_8,MIN_FACE_DEPTH_8,MAX_FACE_DEPTH_8); + + /* 16-cell. */ + colors(vert_16,edge_16,NUM_EDGE_16,(int *)face_16,NUM_FACE_16, + VERT_PER_FACE_16,hp->edge_color_16,hp->face_color_16, + hp->face_color_trans_16,0.25,MIN_EDGE_DEPTH_16, + MAX_EDGE_DEPTH_16,MIN_FACE_DEPTH_16,MAX_FACE_DEPTH_16); + + /* 24-cell. */ + colors(vert_24,edge_24,NUM_EDGE_24,(int *)face_24,NUM_FACE_24, + VERT_PER_FACE_24,hp->edge_color_24,hp->face_color_24, + hp->face_color_trans_24,0.25,MIN_EDGE_DEPTH_24, + MAX_EDGE_DEPTH_24,MIN_FACE_DEPTH_24,MAX_FACE_DEPTH_24); + + /* 120-cell. */ + colors(vert_120,edge_120,NUM_EDGE_120,(int *)face_120,NUM_FACE_120, + VERT_PER_FACE_120,hp->edge_color_120,hp->face_color_120, + hp->face_color_trans_120,0.15,MIN_EDGE_DEPTH_120, + MAX_EDGE_DEPTH_120,MIN_FACE_DEPTH_120,MAX_FACE_DEPTH_120); + + /* 600-cell. */ + colors(vert_600,edge_600,NUM_EDGE_600,(int *)face_600,NUM_FACE_600, + VERT_PER_FACE_600,hp->edge_color_600,hp->face_color_600, + hp->face_color_trans_600,0.06,MIN_EDGE_DEPTH_600, + MAX_EDGE_DEPTH_600,MIN_FACE_DEPTH_600,MAX_FACE_DEPTH_600); +} + + +static void init(ModeInfo *mi) +{ + polytopesstruct *pp = &poly[MI_SCREEN(mi)]; + + set_colors(mi); + + pp->alpha = 0.0; + pp->beta = 0.0; + pp->delta = 0.0; + pp->zeta = 0.0; + pp->eta = 0.0; + pp->theta = 0.0; + + pp->tick = 0; + pp->poly = 0; +} + + +/* Redisplay the polytopes. */ +static void display_polytopes(ModeInfo *mi) +{ + polytopesstruct *pp = &poly[MI_SCREEN(mi)]; + + if (!pp->button_pressed) + { + pp->alpha += speed_wx * pp->speed_scale; + if (pp->alpha >= 360.0) + pp->alpha -= 360.0; + pp->beta += speed_wy * pp->speed_scale; + if (pp->beta >= 360.0) + pp->beta -= 360.0; + pp->delta += speed_wz * pp->speed_scale; + if (pp->delta >= 360.0) + pp->delta -= 360.0; + pp->zeta += speed_xy * pp->speed_scale; + if (pp->zeta >= 360.0) + pp->zeta -= 360.0; + pp->eta += speed_xz * pp->speed_scale; + if (pp->eta >= 360.0) + pp->eta -= 360.0; + pp->theta += speed_yz * pp->speed_scale; + if (pp->theta >= 360.0) + pp->theta -= 360.0; + } + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (projection_3d == DISP_3D_ORTHOGRAPHIC) + { + if (pp->aspect >= 1.0) + glOrtho(-pp->aspect,pp->aspect,-1.0,1.0,0.1,100.0); + else + glOrtho(-1.0,1.0,-1.0/pp->aspect,1.0/pp->aspect,0.1,100.0); + } + else + { + gluPerspective(60.0,pp->aspect,0.1,100.0); + } + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + if (pp->tick == 0) + { + if (polytope == POLYTOPE_RANDOM) + pp->poly = random() % (POLYTOPE_LAST_CELL+1); + else + pp->poly = polytope; + } + if (++pp->tick > 1000) + pp->tick = 0; + + if (pp->poly == POLYTOPE_5_CELL) + cell_5(mi); + else if (pp->poly == POLYTOPE_8_CELL) + cell_8(mi); + else if (pp->poly == POLYTOPE_16_CELL) + cell_16(mi); + else if (pp->poly == POLYTOPE_24_CELL) + cell_24(mi); + else if (pp->poly == POLYTOPE_120_CELL) + cell_120(mi); + else if (pp->poly == POLYTOPE_600_CELL) + cell_600(mi); + else + abort(); +} + + +ENTRYPOINT void reshape_polytopes(ModeInfo *mi, int width, int height) +{ + polytopesstruct *pp = &poly[MI_SCREEN(mi)]; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + } + + pp->WindW = (GLint)width; + pp->WindH = (GLint)height; + glViewport(0,y,width,height); + pp->aspect = (GLfloat)width/(GLfloat)height; +} + + +ENTRYPOINT Bool polytopes_handle_event(ModeInfo *mi, XEvent *event) +{ + polytopesstruct *pp = &poly[MI_SCREEN(mi)]; + KeySym sym = 0; + char c = 0; + + if (event->xany.type == KeyPress || event->xany.type == KeyRelease) + XLookupString (&event->xkey, &c, 1, &sym, 0); + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + pp->button_pressed = True; + gltrackball_start(pp->trackballs[pp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + pp->button_pressed = False; + return True; + } + else if (event->xany.type == KeyPress) + { + if (sym == XK_Shift_L || sym == XK_Shift_R) + { + pp->current_trackball = 1; + if (pp->button_pressed) + gltrackball_start(pp->trackballs[pp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + } + else if (event->xany.type == KeyRelease) + { + if (sym == XK_Shift_L || sym == XK_Shift_R) + { + pp->current_trackball = 0; + if (pp->button_pressed) + gltrackball_start(pp->trackballs[pp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + } + else if (event->xany.type == MotionNotify && pp->button_pressed) + { + gltrackball_track(pp->trackballs[pp->current_trackball], + event->xmotion.x, event->xmotion.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + + return False; +} + + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Xlock hooks. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +/* + *----------------------------------------------------------------------------- + * Initialize polytopes. Called each time the window changes. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void init_polytopes(ModeInfo *mi) +{ + polytopesstruct *pp; + + MI_INIT(mi, poly); + pp = &poly[MI_SCREEN(mi)]; + + pp->trackballs[0] = gltrackball_init(True); + pp->trackballs[1] = gltrackball_init(True); + pp->current_trackball = 0; + pp->button_pressed = False; + + /* Set the display mode. */ + if (!strcasecmp(mode,"wireframe") || !strcasecmp(mode,"0")) + { + display_mode = DISP_WIREFRAME; + } + else if (!strcasecmp(mode,"surface") || !strcasecmp(mode,"1")) + { + display_mode = DISP_SURFACE; + } + else if (!strcasecmp(mode,"transparent") || !strcasecmp(mode,"2")) + { + display_mode = DISP_TRANSPARENT; + } + else + { + display_mode = DISP_TRANSPARENT; + } + + /* Set the Klein bottle. */ + if (!strcasecmp(poly_str,"random") || !strcasecmp(poly_str,"-1")) + { + polytope = POLYTOPE_RANDOM; + } + else if (!strcasecmp(poly_str,"5-cell") || !strcasecmp(poly_str,"0")) + { + polytope = POLYTOPE_5_CELL; + } + else if (!strcasecmp(poly_str,"8-cell") || !strcasecmp(poly_str,"1")) + { + polytope = POLYTOPE_8_CELL; + } + else if (!strcasecmp(poly_str,"16-cell") || !strcasecmp(poly_str,"2")) + { + polytope = POLYTOPE_16_CELL; + } + else if (!strcasecmp(poly_str,"24-cell") || !strcasecmp(poly_str,"3")) + { + polytope = POLYTOPE_24_CELL; + } + else if (!strcasecmp(poly_str,"120-cell") || !strcasecmp(poly_str,"4")) + { + polytope = POLYTOPE_120_CELL; + } + else if (!strcasecmp(poly_str,"600-cell") || !strcasecmp(poly_str,"5")) + { + polytope = POLYTOPE_600_CELL; + } + else + { + polytope = POLYTOPE_RANDOM; + } + + /* Set the color mode. */ + if (!strcasecmp(color_str,"single") || !strcasecmp(color_str,"0")) + { + color_mode = COLORS_SINGLE; + } + else if (!strcasecmp(color_str,"depth") || !strcasecmp(color_str,"1")) + { + color_mode = COLORS_DEPTH; + } + else + { + color_mode = COLORS_DEPTH; + } + + /* Set the 3d projection mode. */ + if (!strcasecmp(proj_3d,"perspective") || !strcasecmp(proj_3d,"0")) + { + projection_3d = DISP_3D_PERSPECTIVE; + } + else if (!strcasecmp(proj_3d,"orthographic") || !strcasecmp(proj_3d,"1")) + { + projection_3d = DISP_3D_ORTHOGRAPHIC; + } + else + { + projection_3d = DISP_3D_PERSPECTIVE; + } + + /* Set the 4d projection mode. */ + if (!strcasecmp(proj_4d,"perspective") || !strcasecmp(proj_4d,"0")) + { + projection_4d = DISP_4D_PERSPECTIVE; + } + else if (!strcasecmp(proj_4d,"orthographic") || !strcasecmp(proj_4d,"1")) + { + projection_4d = DISP_4D_ORTHOGRAPHIC; + } + else + { + projection_4d = DISP_4D_PERSPECTIVE; + } + + /* make multiple screens rotate at slightly different rates. */ + pp->speed_scale = 0.9 + frand(0.3); + + if ((pp->glx_context = init_GL(mi)) != NULL) + { + reshape_polytopes(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + init(mi); + } + else + { + MI_CLEARWINDOW(mi); + } +} + +/* + *----------------------------------------------------------------------------- + * Called by the mainline code periodically to update the display. + *----------------------------------------------------------------------------- + */ +ENTRYPOINT void draw_polytopes(ModeInfo *mi) +{ + static const GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; + static const GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_specular[] = { 0.0, 0.0, 0.0, 1.0 }; + static const GLfloat light_position[] = { 0.0, 0.0, 1.0, 0.0 }; + static const GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + polytopesstruct *hp; + + if (poly == NULL) + return; + hp = &poly[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + if (!hp->glx_context) + return; + + glXMakeCurrent(display,window,*(hp->glx_context)); + + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (projection_3d == DISP_3D_PERSPECTIVE) + gluPerspective(60.0,1.0,0.1,100.0); + else + glOrtho(-1.0,1.0,-1.0,1.0,0.1,100.0);; + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + if (display_mode == DISP_WIREFRAME) + { + glDisable(GL_DEPTH_TEST); + glDisable(GL_LIGHTING); + glDisable(GL_LIGHT0); + glDisable(GL_BLEND); + } + else if (display_mode == DISP_SURFACE) + { + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LESS); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,0.0); + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + } + else if (display_mode == DISP_TRANSPARENT) + { + glDisable(GL_DEPTH_TEST); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,0.0); + glDepthMask(GL_FALSE); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + } + else + { + glDisable(GL_DEPTH_TEST); + glDisable(GL_LIGHTING); + glDisable(GL_LIGHT0); + glDisable(GL_BLEND); + } + + + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + + display_polytopes(mi); + + if (MI_IS_FPS(mi)) + do_fps (mi); + + glFlush(); + + glXSwapBuffers(display,window); +} + + +#ifndef STANDALONE +ENTRYPOINT void change_polytopes(ModeInfo *mi) +{ + polytopesstruct *hp = &poly[MI_SCREEN(mi)]; + + if (!hp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(hp->glx_context)); + init(mi); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("Polytopes", polytopes) + +#endif /* USE_GL */ diff --git a/hacks/glx/polytopes.man b/hacks/glx/polytopes.man new file mode 100644 index 0000000..45fcb4a --- /dev/null +++ b/hacks/glx/polytopes.man @@ -0,0 +1,207 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +polytopes - Draws one of the six regular 4d polytopes rotating in 4d. +.SH SYNOPSIS +.B polytopes +[\-display \fIhost:display.screen\fP] +[\-install] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fIusecs\fP] +[\-fps] +[\-5-cell] +[\-8-cell] +[\-16-cell] +[\-24-cell] +[\-120-cell] +[\-600-cell] +[\-wireframe] +[\-surface] +[\-transparent] +[\-single-color] +[\-depth-colors] +[\-perspective-3d] +[\-orthographic-3d] +[\-perspective-4d] +[\-orthographic-4d] +[\-speed-wx \fIfloat\fP] +[\-speed-wy \fIfloat\fP] +[\-speed-wz \fIfloat\fP] +[\-speed-xy \fIfloat\fP] +[\-speed-xz \fIfloat\fP] +[\-speed-yz \fIfloat\fP] +.SH DESCRIPTION +The \fIpolytopes\fP program shows one of the six regular 4d polytopes +(5-cell, 8-cell, 16-cell, 24-cell, 120-cell, or 600-cell) rotating in +4d. The program projects the 4d polytope to 3d using either a +perspective or an orthographic projection. The projected 3d polytope +can then be projected to the screen either perspectively or +orthographically. There are three display modes for the polytope: +mesh (wireframe), solid, or transparent. Furthermore, the colors with +which the polytope is drawn can be set to either single color or to a +coloring according to the 4d "depth" (the w coordinate) of the +polytope in its unrotated position. In the first case, the polytope +is drawn in red. This coloring combined with transparency gives a +nice visual effect of the structure of the polytope. The second mode +draws the polytope with a fully saturated color wheel in which the +edges or faces are colored accoring to their average 4d "depth". This +mode is best combined with the wireframe mode, where it allows you to +see how different parts of the polytope are moved to the "inside" of +the projected polytope in 3d. Of course, in 4d the cells, faces, and +edges of the polytope all have the same distance from the center of +the polytope. Only the projection creates the appearance that some of +the cells lie "inside" the figure in 3d. +.SH OPTIONS +.I polytopes +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual +class, or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +How much of a delay should be introduced between steps of the +animation. Default 25000, or 1/40th second. +.PP +The following six options are mutually exclusive. They determine +which polytope is displayed. +.TP 8 +.B \-5-cell +Display the 5-cell. The 5-cell is the 4d analogon of a regular +tetrahedron in 3d. It has 5 regular tetrahedra as its cells, 10 +equilateral triangles as faces, 10 edges, and 5 vertices. +.TP 8 +.B \-8-cell +Display the 8-cell (a.k.a. hypercube or tessaract). The 8-cell is the +4d analogon of a cube in 3d. It has 8 cubes as its cells, 24 squares +as faces, 32 edges, and 16 vertices. +.TP 8 +.B \-16-cell +Display the 16-cell. The 16-cell is the 4d analogon of an octahedron +in 3d. It has 16 regular tetrahedra as its cells, 32 equilateral +triangles as faces, 24 edges, and 8 vertices. +.TP 8 +.B \-24-cell +Display the 24-cell. The 24-cell has no 3d analogon. It has 24 +regular octahedra as its cells, 96 equilateral triangles as faces, 96 +edges, and 24 vertices. +.TP 8 +.B \-120-cell +Display the 120-cell. The 120-cell has no 3d analogon. It has 120 +regular dodecahedra as its cells, 720 regular pentagons as faces, 1200 +edges, and 600 vertices. +.TP 8 +.B \-600-cell +Display the 600-cell. The 600-cell has no 3d analogon. It has 600 +regular tetrahedra as its cells, 1200 equilateral triangles as faces, +720 edges, and 120 vertices. +.PP +The following three options are mutually exclusive. They determine +how the polytope is displayed. +.TP 8 +.B \-wireframe +Display the polytope as a wireframe mesh. +.TP 8 +.B \-surface +Display the polytope as a solid object. +.TP 8 +.B \-transparent +Display the polytope as a transparent object (default). +.PP +The following two options are mutually exclusive. They determine how +to color the polytope. +.TP 8 +.B \-single-color +Display the polytope in red. +.TP 8 +.B \-depth-colors +Display the polytope with a fully saturated color wheel in which the +edges or faces are colored accoring to their average 4d "depth", i.e., +the w coordinate of the polytope in its unrotated position (default). +.PP +The following two options are mutually exclusive. They determine how +the polytope is projected from 3d to 2d (i.e., to the screen). +.TP 8 +.B \-perspective-3d +Project the polytope from 3d to 2d using a perspective projection +(default). +.TP 8 +.B \-orthographic-3d +Project the polytope from 3d to 2d using an orthographic projection. +.PP +The following two options are mutually exclusive. They determine how +the polytope is projected from 4d to 3d. +.TP 8 +.B \-perspective-4d +Project the polytope from 4d to 3d using a perspective projection +(default). +.TP 8 +.B \-orthographic-4d +Project the polytope from 4d to 3d using an orthographic projection. +.PP +The following six options determine the rotation speed of the polytope +around the six possible hyperplanes. The rotation speed is measured +in degrees per frame. The speeds should be set to relatively small +values, e.g., less than 4 in magnitude. +.TP 8 +.B \-speed-wx \fIfloat\fP +Rotation speed around the wx plane (default: 1.1). +.TP 8 +.B \-speed-wy \fIfloat\fP +Rotation speed around the wy plane (default: 1.3). +.TP 8 +.B \-speed-wz \fIfloat\fP +Rotation speed around the wz plane (default: 1.5). +.TP 8 +.B \-speed-xy \fIfloat\fP +Rotation speed around the xy plane (default: 1.7). +.TP 8 +.B \-speed-xz \fIfloat\fP +Rotation speed around the xz plane (default: 1.9). +.TP 8 +.B \-speed-yz \fIfloat\fP +Rotation speed around the yz plane (default: 2.1). +.SH INTERACTION +If you run this program in standalone mode you can rotate the polytope +by dragging the mouse while pressing the left mouse button. This +rotates the polytope in 3D, i.e., around the wx, wy, and wz planes. +If you press the shift key while dragging the mouse with the left +button pressed the polytope is rotated in 4D, i.e., around the xy, xz, +and yz planes. To examine the polytope at your leisure, it is best to +set all speeds to 0. Otherwise, the polytope will rotate while the +left mouse button is not pressed. +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2003-2005 by Carsten Steger. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Carsten Steger , 28-sep-2005. diff --git a/hacks/glx/projectiveplane.c b/hacks/glx/projectiveplane.c new file mode 100644 index 0000000..2a1e566 --- /dev/null +++ b/hacks/glx/projectiveplane.c @@ -0,0 +1,1550 @@ +/* projectiveplane --- Shows a 4d embedding of the real projective plane + that rotates in 4d or on which you can walk */ + +#if 0 +static const char sccsid[] = "@(#)projectiveplane.c 1.1 14/01/01 xlockmore"; +#endif + +/* Copyright (c) 2005-2014 Carsten Steger . */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * REVISION HISTORY: + * C. Steger - 14/01/03: Initial version + * C. Steger - 14/10/03: Moved the curlicue texture to curlicue.h + */ + +/* + * This program shows a 4d embedding of the real projective plane. + * You can walk on the projective plane, see it turn in 4d, or walk on + * it while it turns in 4d. The fact that the surface is an embedding + * of the real projective plane in 4d can be seen in the depth colors + * mode: set all rotation speeds to 0 and the projection mode to 4d + * orthographic projection. In its default orientation, the embedding + * of the real projective plane will then project to the Roman + * surface, which has three lines of self-intersection. However, at + * the three lines of self-intersection the parts of the surface that + * intersect have different colors, i.e., different 4d depths. + * + * The real projective plane is a non-orientable surface. To make + * this apparent, the two-sided color mode can be used. + * Alternatively, orientation markers (curling arrows) can be drawn as + * a texture map on the surface of the projective plane. While + * walking on the projective plane, you will notice that the + * orientation of the curling arrows changes (which it must because + * the projective plane is non-orientable). + * + * The real projective plane is a model for the projective geometry in + * 2d space. One point can be singled out as the origin. A line can + * be singled out as the line at infinity, i.e., a line that lies at + * an infinite distance to the origin. The line at infinity is + * topologically a circle. Points on the line at infinity are also + * used to model directions in projective geometry. The origin can be + * visualized in different manners. When using distance colors, the + * origin is the point that is displayed as fully saturated red, which + * is easier to see as the center of the reddish area on the + * projective plane. Alternatively, when using distance bands, the + * origin is the center of the only band that projects to a disc. + * When using direction bands, the origin is the point where all + * direction bands collapse to a point. Finally, when orientation + * markers are being displayed, the origin the the point where all + * orientation markers are compressed to a point. The line at + * infinity can also be visualized in different ways. When using + * distance colors, the line at infinity is the line that is displayed + * as fully saturated magenta. When two-sided colors are used, the + * line at infinity lies at the points where the red and green "sides" + * of the projective plane meet (of course, the real projective plane + * only has one side, so this is a design choice of the + * visualization). Alternatively, when orientation markers are being + * displayed, the line at infinity is the place where the orientation + * markers change their orientation. + * + * Note that when the projective plane is displayed with bands, the + * orientation markers are placed in the middle of the bands. For + * distance bands, the bands are chosen in such a way that the band at + * the origin is only half as wide as the remaining bands, which + * results in a disc being displayed at the origin that has the same + * diameter as the remaining bands. This choice, however, also + * implies that the band at infinity is half as wide as the other + * bands. Since the projective plane is attached to itself (in a + * complicated fashion) at the line at infinity, effectively the band + * at infinity is again as wide as the remaining bands. However, + * since the orientation markers are displayed in the middle of the + * bands, this means that only one half of the orientation markers + * will be displayed twice at the line at infinity if distance bands + * are used. If direction bands are used or if the projective plane + * is displayed as a solid surface, the orientation markers are + * displayed fully at the respective sides of the line at infinity. + * + * The program projects the 4d projective plane to 3d using either a + * perspective or an orthographic projection. Which of the two + * alternatives looks more appealing is up to you. However, two + * famous surfaces are obtained if orthographic 4d projection is used: + * The Roman surface and the cross cap. If the projective plane is + * rotated in 4d, the result of the projection for certain rotations + * is a Roman surface and for certain rotations it is a cross cap. + * The easiest way to see this is to set all rotation speeds to 0 and + * the rotation speed around the yz plane to a value different from 0. + * However, for any 4d rotation speeds, the projections will generally + * cycle between the Roman surface and the cross cap. The difference + * is where the origin and the line at infinity will lie with respect + * to the self-intersections in the projections to 3d. + * + * The projected projective plane can then be projected to the screen + * either perspectively or orthographically. When using the walking + * modes, perspective projection to the screen will be used. + * + * There are three display modes for the projective plane: mesh + * (wireframe), solid, or transparent. Furthermore, the appearance of + * the projective plane can be as a solid object or as a set of + * see-through bands. The bands can be distance bands, i.e., bands + * that lie at increasing distances from the origin, or direction + * bands, i.e., bands that lie at increasing angles with respect to + * the origin. + * + * When the projective plane is displayed with direction bands, you + * will be able to see that each direction band (modulo the "pinching" + * at the origin) is a Moebius strip, which also shows that the + * projective plane is non-orientable. + * + * Finally, the colors with with the projective plane is drawn can be + * set to two-sided, distance, direction, or depth. In two-sided + * mode, the projective plane is drawn with red on one "side" and + * green on the "other side". As described above, the projective + * plane only has one side, so the color jumps from red to green along + * the line at infinity. This mode enables you to see that the + * projective plane is non-orientable. In distance mode, the + * projective plane is displayed with fully saturated colors that + * depend on the distance of the points on the projective plane to the + * origin. The origin is displayed in red, the line at infinity is + * displayed in magenta. If the projective plane is displayed as + * distance bands, each band will be displayed with a different color. + * In direction mode, the projective plane is displayed with fully + * saturated colors that depend on the angle of the points on the + * projective plane with respect to the origin. Angles in opposite + * directions to the origin (e.g., 15 and 205 degrees) are displayed + * in the same color since they are projectively equivalent. If the + * projective plane is displayed as direction bands, each band will be + * displayed with a different color. Finally, in depth mode the + * projective plane with colors chosen depending on the 4d "depth" + * (i.e., the w coordinate) of the points on the projective plane at + * its default orientation in 4d. As discussed above, this mode + * enables you to see that the projective plane does not intersect + * itself in 4d. + * + * The rotation speed for each of the six planes around which the + * projective plane rotates can be chosen. For the walk-and-turn + * more, only the rotation speeds around the true 4d planes are used + * (the xy, xz, and yz planes). + * + * Furthermore, in the walking modes the walking direction in the 2d + * base square of the projective plane and the walking speed can be + * chosen. The walking direction is measured as an angle in degrees + * in the 2d square that forms the coordinate system of the surface of + * the projective plane. A value of 0 or 180 means that the walk is + * along a circle at a randomly chosen distance from the origin + * (parallel to a distance band). A value of 90 or 270 means that the + * walk is directly from the origin to the line at infinity and back + * (analogous to a direction band). Any other value results in a + * curved path from the origin to the line at infinity and back. + * + * This program is somewhat inspired by Thomas Banchoff's book "Beyond + * the Third Dimension: Geometry, Computer Graphics, and Higher + * Dimensions", Scientific American Library, 1990. + */ + +#include "curlicue.h" + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define DISP_WIREFRAME 0 +#define DISP_SURFACE 1 +#define DISP_TRANSPARENT 2 +#define NUM_DISPLAY_MODES 3 + +#define APPEARANCE_SOLID 0 +#define APPEARANCE_DISTANCE_BANDS 1 +#define APPEARANCE_DIRECTION_BANDS 2 +#define NUM_APPEARANCES 3 + +#define COLORS_TWOSIDED 0 +#define COLORS_DISTANCE 1 +#define COLORS_DIRECTION 2 +#define COLORS_DEPTH 3 +#define NUM_COLORS 4 + +#define VIEW_WALK 0 +#define VIEW_TURN 1 +#define VIEW_WALKTURN 2 +#define NUM_VIEW_MODES 3 + +#define DISP_3D_PERSPECTIVE 0 +#define DISP_3D_ORTHOGRAPHIC 1 +#define NUM_DISP_3D_MODES 2 + +#define DISP_4D_PERSPECTIVE 0 +#define DISP_4D_ORTHOGRAPHIC 1 +#define NUM_DISP_4D_MODES 2 + +#define DEF_DISPLAY_MODE "random" +#define DEF_APPEARANCE "random" +#define DEF_COLORS "random" +#define DEF_VIEW_MODE "random" +#define DEF_MARKS "False" +#define DEF_PROJECTION_3D "random" +#define DEF_PROJECTION_4D "random" +#define DEF_SPEEDWX "1.1" +#define DEF_SPEEDWY "1.3" +#define DEF_SPEEDWZ "1.5" +#define DEF_SPEEDXY "1.7" +#define DEF_SPEEDXZ "1.9" +#define DEF_SPEEDYZ "2.1" +#define DEF_WALK_DIRECTION "83.0" +#define DEF_WALK_SPEED "20.0" + +#ifdef STANDALONE +# define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + +# define free_projectiveplane 0 +# define release_projectiveplane 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#ifndef HAVE_JWXYZ +# include +#endif + +#include "gltrackball.h" + +#include + + +#ifdef USE_MODULES +ModStruct projectiveplane_description = +{"projectiveplane", "init_projectiveplane", "draw_projectiveplane", + NULL, "draw_projectiveplane", "change_projectiveplane", + NULL, &projectiveplane_opts, 25000, 1, 1, 1, 1.0, 4, "", + "Rotate a 4d embedding of the real projective plane in 4d or walk on it", + 0, NULL}; + +#endif + + +static char *mode; +static char *appear; +static char *color_mode; +static char *view_mode; +static Bool marks; +static char *proj_3d; +static char *proj_4d; +static float speed_wx; +static float speed_wy; +static float speed_wz; +static float speed_xy; +static float speed_xz; +static float speed_yz; +static float walk_direction; +static float walk_speed; + + +static XrmOptionDescRec opts[] = +{ + {"-mode", ".displayMode", XrmoptionSepArg, 0 }, + {"-wireframe", ".displayMode", XrmoptionNoArg, "wireframe" }, + {"-surface", ".displayMode", XrmoptionNoArg, "surface" }, + {"-transparent", ".displayMode", XrmoptionNoArg, "transparent" }, + {"-appearance", ".appearance", XrmoptionSepArg, 0 }, + {"-solid", ".appearance", XrmoptionNoArg, "solid" }, + {"-distance-bands", ".appearance", XrmoptionNoArg, "distance-bands" }, + {"-direction-bands", ".appearance", XrmoptionNoArg, "direction-bands" }, + {"-colors", ".colors", XrmoptionSepArg, 0 }, + {"-twosided-colors", ".colors", XrmoptionNoArg, "two-sided" }, + {"-distance-colors", ".colors", XrmoptionNoArg, "distance" }, + {"-direction-colors", ".colors", XrmoptionNoArg, "direction" }, + {"-depth-colors", ".colors", XrmoptionNoArg, "depth" }, + {"-view-mode", ".viewMode", XrmoptionSepArg, 0 }, + {"-walk", ".viewMode", XrmoptionNoArg, "walk" }, + {"-turn", ".viewMode", XrmoptionNoArg, "turn" }, + {"-walk-turn", ".viewMode", XrmoptionNoArg, "walk-turn" }, + {"-orientation-marks", ".marks", XrmoptionNoArg, "on"}, + {"+orientation-marks", ".marks", XrmoptionNoArg, "off"}, + {"-projection-3d", ".projection3d", XrmoptionSepArg, 0 }, + {"-perspective-3d", ".projection3d", XrmoptionNoArg, "perspective" }, + {"-orthographic-3d", ".projection3d", XrmoptionNoArg, "orthographic" }, + {"-projection-4d", ".projection4d", XrmoptionSepArg, 0 }, + {"-perspective-4d", ".projection4d", XrmoptionNoArg, "perspective" }, + {"-orthographic-4d", ".projection4d", XrmoptionNoArg, "orthographic" }, + {"-speed-wx", ".speedwx", XrmoptionSepArg, 0 }, + {"-speed-wy", ".speedwy", XrmoptionSepArg, 0 }, + {"-speed-wz", ".speedwz", XrmoptionSepArg, 0 }, + {"-speed-xy", ".speedxy", XrmoptionSepArg, 0 }, + {"-speed-xz", ".speedxz", XrmoptionSepArg, 0 }, + {"-speed-yz", ".speedyz", XrmoptionSepArg, 0 }, + {"-walk-direction", ".walkDirection", XrmoptionSepArg, 0 }, + {"-walk-speed", ".walkSpeed", XrmoptionSepArg, 0 } +}; + +static argtype vars[] = +{ + { &mode, "displayMode", "DisplayMode", DEF_DISPLAY_MODE, t_String }, + { &appear, "appearance", "Appearance", DEF_APPEARANCE, t_String }, + { &color_mode, "colors", "Colors", DEF_COLORS, t_String }, + { &view_mode, "viewMode", "ViewMode", DEF_VIEW_MODE, t_String }, + { &marks, "marks", "Marks", DEF_MARKS, t_Bool }, + { &proj_3d, "projection3d", "Projection3d", DEF_PROJECTION_3D, t_String }, + { &proj_4d, "projection4d", "Projection4d", DEF_PROJECTION_4D, t_String }, + { &speed_wx, "speedwx", "Speedwx", DEF_SPEEDWX, t_Float}, + { &speed_wy, "speedwy", "Speedwy", DEF_SPEEDWY, t_Float}, + { &speed_wz, "speedwz", "Speedwz", DEF_SPEEDWZ, t_Float}, + { &speed_xy, "speedxy", "Speedxy", DEF_SPEEDXY, t_Float}, + { &speed_xz, "speedxz", "Speedxz", DEF_SPEEDXZ, t_Float}, + { &speed_yz, "speedyz", "Speedyz", DEF_SPEEDYZ, t_Float}, + { &walk_direction, "walkDirection", "WalkDirection", DEF_WALK_DIRECTION, t_Float}, + { &walk_speed, "walkSpeed", "WalkSpeed", DEF_WALK_SPEED, t_Float} +}; + +ENTRYPOINT ModeSpecOpt projectiveplane_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, NULL}; + + +/* Offset by which we walk above the projective plane */ +#define DELTAY 0.01 + +/* Number of subdivisions of the projective plane */ +#define NUMU 128 +#define NUMV 128 + +/* Number of subdivisions per band */ +#define NUMB 8 + + +typedef struct { + GLint WindH, WindW; + GLXContext *glx_context; + /* Options */ + int display_mode; + int appearance; + int colors; + int view; + Bool marks; + int projection_3d; + int projection_4d; + /* 4D rotation angles */ + float alpha, beta, delta, zeta, eta, theta; + /* Movement parameters */ + float umove, vmove, dumove, dvmove; + int side, dir; + /* The viewing offset in 4d */ + float offset4d[4]; + /* The viewing offset in 3d */ + float offset3d[4]; + /* The 4d coordinates of the projective plane and their derivatives */ + float x[(NUMU+1)*(NUMV+1)][4]; + float xu[(NUMU+1)*(NUMV+1)][4]; + float xv[(NUMU+1)*(NUMV+1)][4]; + float pp[(NUMU+1)*(NUMV+1)][3]; + float pn[(NUMU+1)*(NUMV+1)][3]; + /* The precomputed colors of the projective plane */ + float col[(NUMU+1)*(NUMV+1)][4]; + /* The precomputed texture coordinates of the projective plane */ + float tex[(NUMU+1)*(NUMV+1)][2]; + /* The "curlicue" texture */ + GLuint tex_name; + /* Aspect ratio of the current window */ + float aspect; + /* Trackball states */ + trackball_state *trackballs[2]; + int current_trackball; + Bool button_pressed; + /* A random factor to modify the rotation speeds */ + float speed_scale; +} projectiveplanestruct; + +static projectiveplanestruct *projectiveplane = (projectiveplanestruct *) NULL; + + +/* Add a rotation around the wx-plane to the matrix m. */ +static void rotatewx(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][1]; + v = m[i][2]; + m[i][1] = c*u+s*v; + m[i][2] = -s*u+c*v; + } +} + + +/* Add a rotation around the wy-plane to the matrix m. */ +static void rotatewy(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][2]; + m[i][0] = c*u-s*v; + m[i][2] = s*u+c*v; + } +} + + +/* Add a rotation around the wz-plane to the matrix m. */ +static void rotatewz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][1]; + m[i][0] = c*u+s*v; + m[i][1] = -s*u+c*v; + } +} + + +/* Add a rotation around the xy-plane to the matrix m. */ +static void rotatexy(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][2]; + v = m[i][3]; + m[i][2] = c*u+s*v; + m[i][3] = -s*u+c*v; + } +} + + +/* Add a rotation around the xz-plane to the matrix m. */ +static void rotatexz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][1]; + v = m[i][3]; + m[i][1] = c*u-s*v; + m[i][3] = s*u+c*v; + } +} + + +/* Add a rotation around the yz-plane to the matrix m. */ +static void rotateyz(float m[4][4], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<4; i++) + { + u = m[i][0]; + v = m[i][3]; + m[i][0] = c*u-s*v; + m[i][3] = s*u+c*v; + } +} + + +/* Compute the rotation matrix m from the rotation angles. */ +static void rotateall(float al, float be, float de, float ze, float et, + float th, float m[4][4]) +{ + int i, j; + + for (i=0; i<4; i++) + for (j=0; j<4; j++) + m[i][j] = (i==j); + rotatewx(m,al); + rotatewy(m,be); + rotatewz(m,de); + rotatexy(m,ze); + rotatexz(m,et); + rotateyz(m,th); +} + + +/* Compute the rotation matrix m from the 4d rotation angles. */ +static void rotateall4d(float ze, float et, float th, float m[4][4]) +{ + int i, j; + + for (i=0; i<4; i++) + for (j=0; j<4; j++) + m[i][j] = (i==j); + rotatexy(m,ze); + rotatexz(m,et); + rotateyz(m,th); +} + + +/* Multiply two rotation matrices: o=m*n. */ +static void mult_rotmat(float m[4][4], float n[4][4], float o[4][4]) +{ + int i, j, k; + + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + o[i][j] = 0.0; + for (k=0; k<4; k++) + o[i][j] += m[i][k]*n[k][j]; + } + } +} + + +/* Compute a 4D rotation matrix from two unit quaternions. */ +static void quats_to_rotmat(float p[4], float q[4], float m[4][4]) +{ + double al, be, de, ze, et, th; + double r00, r01, r02, r12, r22; + + r00 = 1.0-2.0*(p[1]*p[1]+p[2]*p[2]); + r01 = 2.0*(p[0]*p[1]+p[2]*p[3]); + r02 = 2.0*(p[2]*p[0]-p[1]*p[3]); + r12 = 2.0*(p[1]*p[2]+p[0]*p[3]); + r22 = 1.0-2.0*(p[1]*p[1]+p[0]*p[0]); + + al = atan2(-r12,r22)*180.0/M_PI; + be = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + de = atan2(-r01,r00)*180.0/M_PI; + + r00 = 1.0-2.0*(q[1]*q[1]+q[2]*q[2]); + r01 = 2.0*(q[0]*q[1]+q[2]*q[3]); + r02 = 2.0*(q[2]*q[0]-q[1]*q[3]); + r12 = 2.0*(q[1]*q[2]+q[0]*q[3]); + r22 = 1.0-2.0*(q[1]*q[1]+q[0]*q[0]); + + et = atan2(-r12,r22)*180.0/M_PI; + th = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + ze = atan2(-r01,r00)*180.0/M_PI; + + rotateall(al,be,de,ze,et,-th,m); +} + + +/* Compute a fully saturated and bright color based on an angle. */ +static void color(projectiveplanestruct *pp, double angle, float col[4]) +{ + int s; + double t; + + if (pp->colors == COLORS_TWOSIDED) + return; + + if (angle >= 0.0) + angle = fmod(angle,2.0*M_PI); + else + angle = fmod(angle,-2.0*M_PI); + s = floor(angle/(M_PI/3)); + t = angle/(M_PI/3)-s; + if (s >= 6) + s = 0; + switch (s) + { + case 0: + col[0] = 1.0; + col[1] = t; + col[2] = 0.0; + break; + case 1: + col[0] = 1.0-t; + col[1] = 1.0; + col[2] = 0.0; + break; + case 2: + col[0] = 0.0; + col[1] = 1.0; + col[2] = t; + break; + case 3: + col[0] = 0.0; + col[1] = 1.0-t; + col[2] = 1.0; + break; + case 4: + col[0] = t; + col[1] = 0.0; + col[2] = 1.0; + break; + case 5: + col[0] = 1.0; + col[1] = 0.0; + col[2] = 1.0-t; + break; + } + if (pp->display_mode == DISP_TRANSPARENT) + col[3] = 0.7; + else + col[3] = 1.0; +} + + +/* Set up the projective plane coordinates, colors, and texture. */ +static void setup_projective_plane(ModeInfo *mi, double umin, double umax, + double vmin, double vmax) +{ + int i, j, k; + double u, v, ur, vr; + double cu, su, cv2, sv2, cv4, sv4, c2u, s2u; + projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)]; + + ur = umax-umin; + vr = vmax-vmin; + for (i=0; i<=NUMV; i++) + { + for (j=0; j<=NUMU; j++) + { + k = i*(NUMU+1)+j; + if (pp->appearance != APPEARANCE_DIRECTION_BANDS) + u = -ur*j/NUMU+umin; + else + u = ur*j/NUMU+umin; + v = vr*i/NUMV+vmin; + cu = cos(u); + su = sin(u); + c2u = cos(2.0*u); + s2u = sin(2.0*u); + sv2 = sin(0.5*v); + cv4 = cos(0.25*v); + sv4 = sin(0.25*v); + if (pp->colors == COLORS_DEPTH) + color(pp,((su*su*sv4*sv4-cv4*cv4)+1.0)*M_PI*2.0/3.0,pp->col[k]); + else if (pp->colors == COLORS_DIRECTION) + color(pp,2.0*M_PI+fmod(2.0*u,2.0*M_PI),pp->col[k]); + else /* pp->colors == COLORS_DISTANCE */ + color(pp,v*(5.0/6.0),pp->col[k]); + pp->tex[k][0] = -32*u/(2.0*M_PI); + if (pp->appearance != APPEARANCE_DISTANCE_BANDS) + pp->tex[k][1] = 32*v/(2.0*M_PI); + else + pp->tex[k][1] = 32*v/(2.0*M_PI)-0.5; + pp->x[k][0] = 0.5*s2u*sv4*sv4; + pp->x[k][1] = 0.5*su*sv2; + pp->x[k][2] = 0.5*cu*sv2; + pp->x[k][3] = 0.5*(su*su*sv4*sv4-cv4*cv4); + /* Avoid degenerate tangential plane basis vectors. */ + if (v < FLT_EPSILON) + v = FLT_EPSILON; + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + sv4 = sin(0.25*v); + pp->xu[k][0] = c2u*sv4*sv4; + pp->xu[k][1] = 0.5*cu*sv2; + pp->xu[k][2] = -0.5*su*sv2; + pp->xu[k][3] = 0.5*s2u*sv4*sv4; + pp->xv[k][0] = 0.125*s2u*sv2; + pp->xv[k][1] = 0.25*su*cv2; + pp->xv[k][2] = 0.25*cu*cv2; + pp->xv[k][3] = 0.125*(su*su+1.0)*sv2; + } + } +} + + +/* Draw a 4d embedding of the projective plane projected into 3D. */ +static int projective_plane(ModeInfo *mi, double umin, double umax, + double vmin, double vmax) +{ + int polys = 0; + static const GLfloat mat_diff_red[] = { 1.0, 0.0, 0.0, 1.0 }; + static const GLfloat mat_diff_green[] = { 0.0, 1.0, 0.0, 1.0 }; + static const GLfloat mat_diff_trans_red[] = { 1.0, 0.0, 0.0, 0.7 }; + static const GLfloat mat_diff_trans_green[] = { 0.0, 1.0, 0.0, 0.7 }; + float p[3], pu[3], pv[3], pm[3], n[3], b[3], mat[4][4]; + int i, j, k, l, m, o; + double u, v; + double xx[4], xxu[4], xxv[4], y[4], yu[4], yv[4]; + double q, r, s, t; + double cu, su, cv2, sv2, cv4, sv4, c2u, s2u; + float q1[4], q2[4], r1[4][4], r2[4][4]; + projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)]; + + if (pp->view == VIEW_WALK || pp->view == VIEW_WALKTURN) + { + /* Compute the rotation that rotates the projective plane in 4D without + the trackball rotations. */ + rotateall4d(pp->zeta,pp->eta,pp->theta,mat); + + u = pp->umove; + v = pp->vmove; + cu = cos(u); + su = sin(u); + c2u = cos(2.0*u); + s2u = sin(2.0*u); + sv2 = sin(0.5*v); + cv4 = cos(0.25*v); + sv4 = sin(0.25*v); + xx[0] = 0.5*s2u*sv4*sv4; + xx[1] = 0.5*su*sv2; + xx[2] = 0.5*cu*sv2; + xx[3] = 0.5*(su*su*sv4*sv4-cv4*cv4); + /* Avoid degenerate tangential plane basis vectors. */ + if (v < FLT_EPSILON) + v = FLT_EPSILON; + cv2 = cos(0.5*v); + sv2 = sin(0.5*v); + sv4 = sin(0.25*v); + xxu[0] = c2u*sv4*sv4; + xxu[1] = 0.5*cu*sv2; + xxu[2] = -0.5*su*sv2; + xxu[3] = 0.5*s2u*sv4*sv4; + xxv[0] = 0.125*s2u*sv2; + xxv[1] = 0.25*su*cv2; + xxv[2] = 0.25*cu*cv2; + xxv[3] = 0.125*(su*su+1.0)*sv2; + for (l=0; l<4; l++) + { + y[l] = (mat[l][0]*xx[0]+mat[l][1]*xx[1]+ + mat[l][2]*xx[2]+mat[l][3]*xx[3]); + yu[l] = (mat[l][0]*xxu[0]+mat[l][1]*xxu[1]+ + mat[l][2]*xxu[2]+mat[l][3]*xxu[3]); + yv[l] = (mat[l][0]*xxv[0]+mat[l][1]*xxv[1]+ + mat[l][2]*xxv[2]+mat[l][3]*xxv[3]); + } + if (pp->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + p[l] = y[l]+pp->offset4d[l]; + pu[l] = yu[l]; + pv[l] = yv[l]; + } + } + else + { + s = y[3]+pp->offset4d[3]; + q = 1.0/s; + t = q*q; + for (l=0; l<3; l++) + { + r = y[l]+pp->offset4d[l]; + p[l] = r*q; + pu[l] = (yu[l]*s-r*yu[3])*t; + pv[l] = (yv[l]*s-r*yv[3])*t; + } + } + n[0] = pu[1]*pv[2]-pu[2]*pv[1]; + n[1] = pu[2]*pv[0]-pu[0]*pv[2]; + n[2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/(pp->side*4.0*sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2])); + n[0] *= t; + n[1] *= t; + n[2] *= t; + pm[0] = pu[0]*pp->dumove+pv[0]*pp->dvmove; + pm[1] = pu[1]*pp->dumove+pv[1]*pp->dvmove; + pm[2] = pu[2]*pp->dumove+pv[2]*pp->dvmove; + t = 1.0/(4.0*sqrt(pm[0]*pm[0]+pm[1]*pm[1]+pm[2]*pm[2])); + pm[0] *= t; + pm[1] *= t; + pm[2] *= t; + b[0] = n[1]*pm[2]-n[2]*pm[1]; + b[1] = n[2]*pm[0]-n[0]*pm[2]; + b[2] = n[0]*pm[1]-n[1]*pm[0]; + t = 1.0/(4.0*sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2])); + b[0] *= t; + b[1] *= t; + b[2] *= t; + + /* Compute alpha, beta, delta from the three basis vectors. + | -b[0] -b[1] -b[2] | + m = | n[0] n[1] n[2] | + | -pm[0] -pm[1] -pm[2] | + */ + pp->alpha = atan2(-n[2],-pm[2])*180/M_PI; + pp->beta = atan2(-b[2],sqrt(b[0]*b[0]+b[1]*b[1]))*180/M_PI; + pp->delta = atan2(b[1],-b[0])*180/M_PI; + + /* Compute the rotation that rotates the projective plane in 4D. */ + rotateall(pp->alpha,pp->beta,pp->delta,pp->zeta,pp->eta,pp->theta,mat); + + u = pp->umove; + v = pp->vmove; + cu = cos(u); + su = sin(u); + s2u = sin(2.0*u); + sv2 = sin(0.5*v); + cv4 = cos(0.25*v); + sv4 = sin(0.25*v); + xx[0] = 0.5*s2u*sv4*sv4; + xx[1] = 0.5*su*sv2; + xx[2] = 0.5*cu*sv2; + xx[3] = 0.5*(su*su*sv4*sv4-cv4*cv4); + for (l=0; l<4; l++) + { + r = 0.0; + for (m=0; m<4; m++) + r += mat[l][m]*xx[m]; + y[l] = r; + } + if (pp->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + p[l] = y[l]+pp->offset4d[l]; + } + else + { + s = y[3]+pp->offset4d[3]; + for (l=0; l<3; l++) + p[l] = (y[l]+pp->offset4d[l])/s; + } + + pp->offset3d[0] = -p[0]; + pp->offset3d[1] = -p[1]-DELTAY; + pp->offset3d[2] = -p[2]; + } + else + { + /* Compute the rotation that rotates the projective plane in 4D, + including the trackball rotations. */ + rotateall(pp->alpha,pp->beta,pp->delta,pp->zeta,pp->eta,pp->theta,r1); + + gltrackball_get_quaternion(pp->trackballs[0],q1); + gltrackball_get_quaternion(pp->trackballs[1],q2); + quats_to_rotmat(q1,q2,r2); + + mult_rotmat(r2,r1,mat); + } + + /* Project the points from 4D to 3D. */ + for (i=0; i<=NUMV; i++) + { + for (j=0; j<=NUMU; j++) + { + o = i*(NUMU+1)+j; + for (l=0; l<4; l++) + { + y[l] = (mat[l][0]*pp->x[o][0]+mat[l][1]*pp->x[o][1]+ + mat[l][2]*pp->x[o][2]+mat[l][3]*pp->x[o][3]); + yu[l] = (mat[l][0]*pp->xu[o][0]+mat[l][1]*pp->xu[o][1]+ + mat[l][2]*pp->xu[o][2]+mat[l][3]*pp->xu[o][3]); + yv[l] = (mat[l][0]*pp->xv[o][0]+mat[l][1]*pp->xv[o][1]+ + mat[l][2]*pp->xv[o][2]+mat[l][3]*pp->xv[o][3]); + } + if (pp->projection_4d == DISP_4D_ORTHOGRAPHIC) + { + for (l=0; l<3; l++) + { + pp->pp[o][l] = (y[l]+pp->offset4d[l])+pp->offset3d[l]; + pu[l] = yu[l]; + pv[l] = yv[l]; + } + } + else + { + s = y[3]+pp->offset4d[3]; + q = 1.0/s; + t = q*q; + for (l=0; l<3; l++) + { + r = y[l]+pp->offset4d[l]; + pp->pp[o][l] = r*q+pp->offset3d[l]; + pu[l] = (yu[l]*s-r*yu[3])*t; + pv[l] = (yv[l]*s-r*yv[3])*t; + } + } + pp->pn[o][0] = pu[1]*pv[2]-pu[2]*pv[1]; + pp->pn[o][1] = pu[2]*pv[0]-pu[0]*pv[2]; + pp->pn[o][2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/sqrt(pp->pn[o][0]*pp->pn[o][0]+pp->pn[o][1]*pp->pn[o][1]+ + pp->pn[o][2]*pp->pn[o][2]); + pp->pn[o][0] *= t; + pp->pn[o][1] *= t; + pp->pn[o][2] *= t; + } + } + + if (pp->colors == COLORS_TWOSIDED) + { + glColor3fv(mat_diff_red); + if (pp->display_mode == DISP_TRANSPARENT) + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_green); + } + else + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_green); + } + } + glBindTexture(GL_TEXTURE_2D,pp->tex_name); + + if (pp->appearance != APPEARANCE_DIRECTION_BANDS) + { + for (i=0; iappearance == APPEARANCE_DISTANCE_BANDS && + ((i & (NUMB-1)) >= NUMB/4) && ((i & (NUMB-1)) < 3*NUMB/4)) + continue; + if (pp->display_mode == DISP_WIREFRAME) + glBegin(GL_QUAD_STRIP); + else + glBegin(GL_TRIANGLE_STRIP); + for (j=0; j<=NUMU; j++) + { + for (k=0; k<=1; k++) + { + l = (i+k); + m = j; + o = l*(NUMU+1)+m; + glNormal3fv(pp->pn[o]); + glTexCoord2fv(pp->tex[o]); + if (pp->colors != COLORS_TWOSIDED) + { + glColor3fv(pp->col[o]); + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,pp->col[o]); + } + glVertex3fv(pp->pp[o]); + polys++; + } + } + glEnd(); + } + } + else /* pp->appearance == APPEARANCE_DIRECTION_BANDS */ + { + for (j=0; j= NUMB/2) + continue; + if (pp->display_mode == DISP_WIREFRAME) + glBegin(GL_QUAD_STRIP); + else + glBegin(GL_TRIANGLE_STRIP); + for (i=0; i<=NUMV; i++) + { + for (k=0; k<=1; k++) + { + l = i; + m = (j+k); + o = l*(NUMU+1)+m; + glNormal3fv(pp->pn[o]); + glTexCoord2fv(pp->tex[o]); + if (pp->colors != COLORS_TWOSIDED) + { + glColor3fv(pp->col[o]); + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,pp->col[o]); + } + glVertex3fv(pp->pp[o]); + polys++; + } + } + glEnd(); + } + } + + polys /= 2; + return polys; +} + + +/* Generate a texture image that shows the orientation reversal. */ +static void gen_texture(ModeInfo *mi) +{ + projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)]; + + glGenTextures(1,&pp->tex_name); + glBindTexture(GL_TEXTURE_2D,pp->tex_name); + glPixelStorei(GL_UNPACK_ALIGNMENT,1); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); + glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); + glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,TEX_DIMENSION,TEX_DIMENSION,0, + GL_LUMINANCE,GL_UNSIGNED_BYTE,texture); +} + + +static void init(ModeInfo *mi) +{ + static const GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; + static const GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; + static const GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)]; + + if (walk_speed == 0.0) + walk_speed = 20.0; + + if (pp->view == VIEW_TURN) + { + pp->alpha = frand(360.0); + pp->beta = frand(360.0); + pp->delta = frand(360.0); + pp->zeta = 0.0; + pp->eta = 0.0; + pp->theta = 0.0; + } + else + { + pp->alpha = 0.0; + pp->beta = 0.0; + pp->delta = 0.0; + pp->zeta = 120.0; + pp->eta = 180.0; + pp->theta = 90.0; + } + pp->umove = frand(2.0*M_PI); + pp->vmove = frand(2.0*M_PI); + pp->dumove = 0.0; + pp->dvmove = 0.0; + pp->side = 1; + if (sin(walk_direction*M_PI/180.0) >= 0.0) + pp->dir = 1; + else + pp->dir = -1; + + pp->offset4d[0] = 0.0; + pp->offset4d[1] = 0.0; + pp->offset4d[2] = 0.0; + pp->offset4d[3] = 1.2; + pp->offset3d[0] = 0.0; + pp->offset3d[1] = 0.0; + pp->offset3d[2] = -1.2; + pp->offset3d[3] = 0.0; + + gen_texture(mi); + setup_projective_plane(mi,0.0,2.0*M_PI,0.0,2.0*M_PI); + + if (pp->marks) + glEnable(GL_TEXTURE_2D); + else + glDisable(GL_TEXTURE_2D); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (pp->projection_3d == DISP_3D_PERSPECTIVE || + pp->view == VIEW_WALK || pp->view == VIEW_WALKTURN) + { + if (pp->view == VIEW_WALK || pp->view == VIEW_WALKTURN) + gluPerspective(60.0,1.0,0.01,10.0); + else + gluPerspective(60.0,1.0,0.1,10.0); + } + else + { + glOrtho(-0.6,0.6,-0.6,0.6,0.1,10.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + if (pp->display_mode == DISP_WIREFRAME) + pp->display_mode = DISP_SURFACE; +# endif + + if (pp->display_mode == DISP_SURFACE) + { + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LESS); + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,50.0); + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + } + else if (pp->display_mode == DISP_TRANSPARENT) + { + glDisable(GL_DEPTH_TEST); + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,50.0); + glDepthMask(GL_FALSE); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + } + else /* pp->display_mode == DISP_WIREFRAME */ + { + glDisable(GL_DEPTH_TEST); + glShadeModel(GL_FLAT); + glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); + glDisable(GL_LIGHTING); + glDisable(GL_LIGHT0); + glDisable(GL_BLEND); + } +} + + +/* Redisplay the Klein bottle. */ +static void display_projectiveplane(ModeInfo *mi) +{ + projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)]; + + if (!pp->button_pressed) + { + if (pp->view == VIEW_TURN) + { + pp->alpha += speed_wx * pp->speed_scale; + if (pp->alpha >= 360.0) + pp->alpha -= 360.0; + pp->beta += speed_wy * pp->speed_scale; + if (pp->beta >= 360.0) + pp->beta -= 360.0; + pp->delta += speed_wz * pp->speed_scale; + if (pp->delta >= 360.0) + pp->delta -= 360.0; + pp->zeta += speed_xy * pp->speed_scale; + if (pp->zeta >= 360.0) + pp->zeta -= 360.0; + pp->eta += speed_xz * pp->speed_scale; + if (pp->eta >= 360.0) + pp->eta -= 360.0; + pp->theta += speed_yz * pp->speed_scale; + if (pp->theta >= 360.0) + pp->theta -= 360.0; + } + if (pp->view == VIEW_WALKTURN) + { + pp->zeta += speed_xy * pp->speed_scale; + if (pp->zeta >= 360.0) + pp->zeta -= 360.0; + pp->eta += speed_xz * pp->speed_scale; + if (pp->eta >= 360.0) + pp->eta -= 360.0; + pp->theta += speed_yz * pp->speed_scale; + if (pp->theta >= 360.0) + pp->theta -= 360.0; + } + if (pp->view == VIEW_WALK || pp->view == VIEW_WALKTURN) + { + pp->dvmove = (pp->dir*sin(walk_direction*M_PI/180.0)* + walk_speed*M_PI/4096.0); + pp->vmove += pp->dvmove; + if (pp->vmove > 2.0*M_PI) + { + pp->vmove = 4.0*M_PI-pp->vmove; + pp->umove = pp->umove-M_PI; + if (pp->umove < 0.0) + pp->umove += 2.0*M_PI; + pp->side = -pp->side; + pp->dir = -pp->dir; + pp->dvmove = -pp->dvmove; + } + if (pp->vmove < 0.0) + { + pp->vmove = -pp->vmove; + pp->umove = pp->umove-M_PI; + if (pp->umove < 0.0) + pp->umove += 2.0*M_PI; + pp->dir = -pp->dir; + pp->dvmove = -pp->dvmove; + } + pp->dumove = cos(walk_direction*M_PI/180.0)*walk_speed*M_PI/4096.0; + pp->umove += pp->dumove; + if (pp->umove >= 2.0*M_PI) + pp->umove -= 2.0*M_PI; + if (pp->umove < 0.0) + pp->umove += 2.0*M_PI; + } + } + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (pp->projection_3d == DISP_3D_PERSPECTIVE || + pp->view == VIEW_WALK || pp->view == VIEW_WALKTURN) + { + if (pp->view == VIEW_WALK || pp->view == VIEW_WALKTURN) + gluPerspective(60.0,pp->aspect,0.01,10.0); + else + gluPerspective(60.0,pp->aspect,0.1,10.0); + } + else + { + if (pp->aspect >= 1.0) + glOrtho(-0.6*pp->aspect,0.6*pp->aspect,-0.6,0.6,0.1,10.0); + else + glOrtho(-0.6,0.6,-0.6/pp->aspect,0.6/pp->aspect,0.1,10.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + mi->polygon_count = projective_plane(mi,0.0,2.0*M_PI,0.0,2.0*M_PI); +} + + +ENTRYPOINT void reshape_projectiveplane(ModeInfo *mi, int width, int height) +{ + projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)]; + + pp->WindW = (GLint)width; + pp->WindH = (GLint)height; + glViewport(0,0,width,height); + pp->aspect = (GLfloat)width/(GLfloat)height; +} + + +ENTRYPOINT Bool projectiveplane_handle_event(ModeInfo *mi, XEvent *event) +{ + projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)]; + KeySym sym = 0; + char c = 0; + + if (event->xany.type == KeyPress || event->xany.type == KeyRelease) + XLookupString (&event->xkey, &c, 1, &sym, 0); + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + pp->button_pressed = True; + gltrackball_start(pp->trackballs[pp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + pp->button_pressed = False; + return True; + } + else if (event->xany.type == KeyPress) + { + if (sym == XK_Shift_L || sym == XK_Shift_R) + { + pp->current_trackball = 1; + if (pp->button_pressed) + gltrackball_start(pp->trackballs[pp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + } + else if (event->xany.type == KeyRelease) + { + if (sym == XK_Shift_L || sym == XK_Shift_R) + { + pp->current_trackball = 0; + if (pp->button_pressed) + gltrackball_start(pp->trackballs[pp->current_trackball], + event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + } + else if (event->xany.type == MotionNotify && pp->button_pressed) + { + gltrackball_track(pp->trackballs[pp->current_trackball], + event->xmotion.x, event->xmotion.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + + return False; +} + + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Xlock hooks. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +/* + *----------------------------------------------------------------------------- + * Initialize projectiveplane. Called each time the window changes. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void init_projectiveplane(ModeInfo *mi) +{ + projectiveplanestruct *pp; + + MI_INIT(mi, projectiveplane); + pp = &projectiveplane[MI_SCREEN(mi)]; + + + pp->trackballs[0] = gltrackball_init(True); + pp->trackballs[1] = gltrackball_init(True); + pp->current_trackball = 0; + pp->button_pressed = False; + + /* Set the display mode. */ + if (!strcasecmp(mode,"random")) + { + pp->display_mode = random() % NUM_DISPLAY_MODES; + } + else if (!strcasecmp(mode,"wireframe")) + { + pp->display_mode = DISP_WIREFRAME; + } + else if (!strcasecmp(mode,"surface")) + { + pp->display_mode = DISP_SURFACE; + } + else if (!strcasecmp(mode,"transparent")) + { + pp->display_mode = DISP_TRANSPARENT; + } + else + { + pp->display_mode = random() % NUM_DISPLAY_MODES; + } + + /* Orientation marks don't make sense in wireframe mode. */ + pp->marks = marks; + if (pp->display_mode == DISP_WIREFRAME) + pp->marks = False; + + /* Set the appearance. */ + if (!strcasecmp(appear,"random")) + { + pp->appearance = random() % NUM_APPEARANCES; + } + else if (!strcasecmp(appear,"solid")) + { + pp->appearance = APPEARANCE_SOLID; + } + else if (!strcasecmp(appear,"distance-bands")) + { + pp->appearance = APPEARANCE_DISTANCE_BANDS; + } + else if (!strcasecmp(appear,"direction-bands")) + { + pp->appearance = APPEARANCE_DIRECTION_BANDS; + } + else + { + pp->appearance = random() % NUM_APPEARANCES; + } + + /* Set the color mode. */ + if (!strcasecmp(color_mode,"random")) + { + pp->colors = random() % NUM_COLORS; + } + else if (!strcasecmp(color_mode,"two-sided")) + { + pp->colors = COLORS_TWOSIDED; + } + else if (!strcasecmp(color_mode,"distance")) + { + pp->colors = COLORS_DISTANCE; + } + else if (!strcasecmp(color_mode,"direction")) + { + pp->colors = COLORS_DIRECTION; + } + else if (!strcasecmp(color_mode,"depth")) + { + pp->colors = COLORS_DEPTH; + } + else + { + pp->colors = random() % NUM_COLORS; + } + + /* Set the view mode. */ + if (!strcasecmp(view_mode,"random")) + { + pp->view = random() % NUM_VIEW_MODES; + } + else if (!strcasecmp(view_mode,"walk")) + { + pp->view = VIEW_WALK; + } + else if (!strcasecmp(view_mode,"turn")) + { + pp->view = VIEW_TURN; + } + else if (!strcasecmp(view_mode,"walk-turn")) + { + pp->view = VIEW_WALKTURN; + } + else + { + pp->view = random() % NUM_VIEW_MODES; + } + + /* Set the 3d projection mode. */ + if (!strcasecmp(proj_3d,"random")) + { + /* Orthographic projection only makes sense in turn mode. */ + if (pp->view == VIEW_TURN) + pp->projection_3d = random() % NUM_DISP_3D_MODES; + else + pp->projection_3d = DISP_3D_PERSPECTIVE; + } + else if (!strcasecmp(proj_3d,"perspective")) + { + pp->projection_3d = DISP_3D_PERSPECTIVE; + } + else if (!strcasecmp(proj_3d,"orthographic")) + { + pp->projection_3d = DISP_3D_ORTHOGRAPHIC; + } + else + { + /* Orthographic projection only makes sense in turn mode. */ + if (pp->view == VIEW_TURN) + pp->projection_3d = random() % NUM_DISP_3D_MODES; + else + pp->projection_3d = DISP_3D_PERSPECTIVE; + } + + /* Set the 4d projection mode. */ + if (!strcasecmp(proj_4d,"random")) + { + pp->projection_4d = random() % NUM_DISP_4D_MODES; + } + else if (!strcasecmp(proj_4d,"perspective")) + { + pp->projection_4d = DISP_4D_PERSPECTIVE; + } + else if (!strcasecmp(proj_4d,"orthographic")) + { + pp->projection_4d = DISP_4D_ORTHOGRAPHIC; + } + else + { + pp->projection_4d = random() % NUM_DISP_4D_MODES; + } + + /* Modify the speeds to a useful range in walk-and-turn mode. */ + if (pp->view == VIEW_WALKTURN) + { + speed_wx *= 0.2; + speed_wy *= 0.2; + speed_wz *= 0.2; + speed_xy *= 0.2; + speed_xz *= 0.2; + speed_yz *= 0.2; + } + + /* make multiple screens rotate at slightly different rates. */ + pp->speed_scale = 0.9 + frand(0.3); + + if ((pp->glx_context = init_GL(mi)) != NULL) + { + reshape_projectiveplane(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + init(mi); + } + else + { + MI_CLEARWINDOW(mi); + } +} + +/* + *----------------------------------------------------------------------------- + * Called by the mainline code periodically to update the display. + *----------------------------------------------------------------------------- + */ +ENTRYPOINT void draw_projectiveplane(ModeInfo *mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + projectiveplanestruct *pp; + + if (projectiveplane == NULL) + return; + pp = &projectiveplane[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + if (!pp->glx_context) + return; + + glXMakeCurrent(display,window,*(pp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + + display_projectiveplane(mi); + + if (MI_IS_FPS(mi)) + do_fps (mi); + + glFlush(); + + glXSwapBuffers(display,window); +} + + +#ifndef STANDALONE +ENTRYPOINT void change_projectiveplane(ModeInfo *mi) +{ + projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)]; + + if (!pp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(pp->glx_context)); + init(mi); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("ProjectivePlane", projectiveplane) + +#endif /* USE_GL */ diff --git a/hacks/glx/projectiveplane.man b/hacks/glx/projectiveplane.man new file mode 100644 index 0000000..8adea81 --- /dev/null +++ b/hacks/glx/projectiveplane.man @@ -0,0 +1,400 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +projectiveplane - Draws a 4d embedding of the real projective plane. +.SH SYNOPSIS +.B projectiveplane +[\-display \fIhost:display.screen\fP] +[\-install] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fIusecs\fP] +[\-fps] +[\-mode \fIdisplay-mode\fP] +[\-wireframe] +[\-surface] +[\-transparent] +[\-appearance \fIappearance\fP] +[\-solid] +[\-distance-bands] +[\-direction-bands] +[\-colors \fIcolor-scheme\fP] +[\-twosided-colors] +[\-distance-colors] +[\-direction-colors] +[\-depth-colors] +[\-view-mode \fIview-mode\fP] +[\-walk] +[\-turn] +[\-walk-turn] +[\-orientation-marks] +[\-projection-3d \fImode\fP] +[\-perspective-3d] +[\-orthographic-3d] +[\-projection-4d \fImode\fP] +[\-perspective-4d] +[\-orthographic-4d] +[\-speed-wx \fIfloat\fP] +[\-speed-wy \fIfloat\fP] +[\-speed-wz \fIfloat\fP] +[\-speed-xy \fIfloat\fP] +[\-speed-xz \fIfloat\fP] +[\-speed-yz \fIfloat\fP] +[\-walk-direction \fIfloat\fP] +[\-walk-speed \fIfloat\fP] +.SH DESCRIPTION +The \fIprojectiveplane\fP program shows a 4d embedding of the real +projective plane. You can walk on the projective plane, see it turn +in 4d, or walk on it while it turns in 4d. The fact that the surface +is an embedding of the real projective plane in 4d can be seen in the +depth colors mode: set all rotation speeds to 0 and the projection +mode to 4d orthographic projection. In its default orientation, the +embedding of the real projective plane will then project to the Roman +surface, which has three lines of self-intersection. However, at the +three lines of self-intersection the parts of the surface that +intersect have different colors, i.e., different 4d depths. +.PP +The real projective plane is a non-orientable surface. To make this +apparent, the two-sided color mode can be used. Alternatively, +orientation markers (curling arrows) can be drawn as a texture map on +the surface of the projective plane. While walking on the projective +plane, you will notice that the orientation of the curling arrows +changes (which it must because the projective plane is +non-orientable). +.PP +The real projective plane is a model for the projective geometry in 2d +space. One point can be singled out as the origin. A line can be +singled out as the line at infinity, i.e., a line that lies at an +infinite distance to the origin. The line at infinity is +topologically a circle. Points on the line at infinity are also used +to model directions in projective geometry. The origin can be +visualized in different manners. When using distance colors, the +origin is the point that is displayed as fully saturated red, which is +easier to see as the center of the reddish area on the projective +plane. Alternatively, when using distance bands, the origin is the +center of the only band that projects to a disk. When using direction +bands, the origin is the point where all direction bands collapse to a +point. Finally, when orientation markers are being displayed, the +origin the the point where all orientation markers are compressed to a +point. The line at infinity can also be visualized in different ways. +When using distance colors, the line at infinity is the line that is +displayed as fully saturated magenta. When two-sided colors are used, +the line at infinity lies at the points where the red and green +"sides" of the projective plane meet (of course, the real projective +plane only has one side, so this is a design choice of the +visualization). Alternatively, when orientation markers are being +displayed, the line at infinity is the place where the orientation +markers change their orientation. +.PP +Note that when the projective plane is displayed with bands, the +orientation markers are placed in the middle of the bands. For +distance bands, the bands are chosen in such a way that the band at +the origin is only half as wide as the remaining bands, which results +in a disk being displayed at the origin that has the same diameter as +the remaining bands. This choice, however, also implies that the band +at infinity is half as wide as the other bands. Since the projective +plane is attached to itself (in a complicated fashion) at the line at +infinity, effectively the band at infinity is again as wide as the +remaining bands. However, since the orientation markers are displayed +in the middle of the bands, this means that only one half of the +orientation markers will be displayed twice at the line at infinity if +distance bands are used. If direction bands are used or if the +projective plane is displayed as a solid surface, the orientation +markers are displayed fully at the respective sides of the line at +infinity. +.PP +The program projects the 4d projective plane to 3d using either a +perspective or an orthographic projection. Which of the two +alternatives looks more appealing is up to you. However, two famous +surfaces are obtained if orthographic 4d projection is used: The Roman +surface and the cross cap. If the projective plane is rotated in 4d, +the result of the projection for certain rotations is a Roman surface +and for certain rotations it is a cross cap. The easiest way to see +this is to set all rotation speeds to 0 and the rotation speed around +the yz plane to a value different from 0. However, for any 4d +rotation speeds, the projections will generally cycle between the +Roman surface and the cross cap. The difference is where the origin +and the line at infinity will lie with respect to the +self-intersections in the projections to 3d. +.PP +The projected projective plane can then be projected to the screen +either perspectively or orthographically. When using the walking +modes, perspective projection to the screen will be used. +.PP +There are three display modes for the projective plane: mesh +(wireframe), solid, or transparent. Furthermore, the appearance of +the projective plane can be as a solid object or as a set of +see-through bands. The bands can be distance bands, i.e., bands that +lie at increasing distances from the origin, or direction bands, i.e., +bands that lie at increasing angles with respect to the origin. +.PP +When the projective plane is displayed with direction bands, you will +be able to see that each direction band (modulo the "pinching" at the +origin) is a Moebius strip, which also shows that the projective plane +is non-orientable. +.PP +Finally, the colors with with the projective plane is drawn can be set +to two-sided, distance, direction, or depth. In two-sided mode, the +projective plane is drawn with red on one "side" and green on the +"other side". As described above, the projective plane only has one +side, so the color jumps from red to green along the line at infinity. +This mode enables you to see that the projective plane is +non-orientable. In distance mode, the projective plane is displayed +with fully saturated colors that depend on the distance of the points +on the projective plane to the origin. The origin is displayed in +red, the line at infinity is displayed in magenta. If the projective +plane is displayed as distance bands, each band will be displayed with +a different color. In direction mode, the projective plane is +displayed with fully saturated colors that depend on the angle of the +points on the projective plane with respect to the origin. Angles in +opposite directions to the origin (e.g., 15 and 205 degrees) are +displayed in the same color since they are projectively equivalent. +If the projective plane is displayed as direction bands, each band +will be displayed with a different color. Finally, in depth mode the +projective plane with colors chosen depending on the 4d "depth" (i.e., +the w coordinate) of the points on the projective plane at its default +orientation in 4d. As discussed above, this mode enables you to see +that the projective plane does not intersect itself in 4d. +.PP +The rotation speed for each of the six planes around which the +projective plane rotates can be chosen. For the walk-and-turn mode, +only the rotation speeds around the true 4d planes are used (the xy, +xz, and yz planes). +.PP +Furthermore, in the walking modes the walking direction in the 2d base +square of the projective plane and the walking speed can be chosen. +The walking direction is measured as an angle in degrees in the 2d +square that forms the coordinate system of the surface of the +projective plane. A value of 0 or 180 means that the walk is along a +circle at a randomly chosen distance from the origin (parallel to a +distance band). A value of 90 or 270 means that the walk is directly +from the origin to the line at infinity and back (analogous to a +direction band). Any other value results in a curved path from the +origin to the line at infinity and back. +.PP +This program is somewhat inspired by Thomas Banchoff's book "Beyond +the Third Dimension: Geometry, Computer Graphics, and Higher +Dimensions", Scientific American Library, 1990. +.SH OPTIONS +.I projectiveplane +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual +class, or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +How much of a delay should be introduced between steps of the +animation. Default 10000, or 1/100th second. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.PP +The following four options are mutually exclusive. They determine how +the projective plane is displayed. +.TP 8 +.B \-mode random +Display the projective plane in a random display mode (default). +.TP 8 +.B \-mode wireframe \fP(Shortcut: \fB\-wireframe\fP) +Display the projective plane as a wireframe mesh. +.TP 8 +.B \-mode surface \fP(Shortcut: \fB\-surface\fP) +Display the projective plane as a solid surface. +.TP 8 +.B \-mode transparent \fP(Shortcut: \fB\-transparent\fP) +Display the projective plane as a transparent surface. +.PP +The following three options are mutually exclusive. They determine +the appearance of the projective plane. +.TP 8 +.B \-appearance random +Display the projective plane with a random appearance (default). +.TP 8 +.B \-appearance solid \fP(Shortcut: \fB\-solid\fP) +Display the projective plane as a solid object. +.TP 8 +.B \-appearance distance-bands \fP(Shortcut: \fB\-distance-bands\fP) +Display the projective plane as see-through bands that lie at +increasing distances from the origin. +.PP +.TP 8 +.B \-appearance direction-bands \fP(Shortcut: \fB\-direction-bands\fP) +Display the projective plane as see-through bands that lie at +increasing angles with respect to the origin. +.PP +The following four options are mutually exclusive. They determine how +to color the projective plane. +.TP 8 +.B \-colors random +Display the projective plane with a random color scheme (default). +.TP 8 +.B \-colors twosided \fP(Shortcut: \fB\-twosided-colors\fP) +Display the projective plane with two colors: red on one "side" and +green on the "other side." Note that the line at infinity lies at the +points where the red and green "sides" of the projective plane meet, +i.e., where the orientation of the projective plane reverses. +.TP 8 +.B \-colors distance \fP(Shortcut: \fB\-distance-colors\fP) +Display the projective plane with fully saturated colors that depend +on the distance of the points on the projective plane to the origin. +The origin is displayed in red, the line at infinity is displayed in +magenta. If the projective plane is displayed as distance bands, each +band will be displayed with a different color. +.TP 8 +.B \-colors direction \fP(Shortcut: \fB\-direction-colors\fP) +Display the projective plane with fully saturated colors that depend +on the angle of the points on the projective plane with respect to the +origin. Angles in opposite directions to the origin (e.g., 15 and 205 +degrees) are displayed in the same color since they are projectively +equivalent. If the projective plane is displayed as direction bands, +each band will be displayed with a different color. +.TP 8 +.B \-colors depth \fP(Shortcut: \fB\-depth\fP) +Display the projective plane with colors chosen depending on the 4d +"depth" (i.e., the w coordinate) of the points on the projective plane +at its default orientation in 4d. +.PP +The following four options are mutually exclusive. They determine how +to view the projective plane. +.TP 8 +.B \-view-mode random +View the projective plane in a random view mode (default). +.TP 8 +.B \-view-mode turn \fP(Shortcut: \fB\-turn\fP) +View the projective plane while it turns in 4d. +.TP 8 +.B \-view-mode walk \fP(Shortcut: \fB\-walk\fP) +View the projective plane as if walking on its surface. +.TP 8 +.B \-view-mode walk-turn \fP(Shortcut: \fB\-walk-turn\fP) +View the projective plane as if walking on its surface. Additionally, +the projective plane turns around the true 4d planes (the xy, xz, and +yz planes). +.PP +The following options determine whether orientation marks are shown on +the projective plane. +.TP 8 +.B \-orientation-marks +Display orientation marks on the projective plane. +.TP 8 +.B \-no-orientation-marks +Don't display orientation marks on the projective plane (default). +.PP +The following three options are mutually exclusive. They determine +how the projective plane is projected from 3d to 2d (i.e., to the +screen). +.TP 8 +.B \-projection-3d random +Project the projective plane from 3d to 2d using a random projection +mode (default). +.TP 8 +.B \-projection-3d perspective \fP(Shortcut: \fB\-perspective-3d\fP) +Project the projective plane from 3d to 2d using a perspective +projection. +.TP 8 +.B \-projection-3d orthographic \fP(Shortcut: \fB\-orthographic-3d\fP) +Project the projective plane from 3d to 2d using an orthographic +projection. +.PP +The following three options are mutually exclusive. They determine +how the projective plane is projected from 4d to 3d. +.TP 8 +.B \-projection-4d random +Project the projective plane from 4d to 3d using a random projection +mode (default). +.TP 8 +.B \-projection-4d perspective \fP(Shortcut: \fB\-perspective-4d\fP) +Project the projective plane from 4d to 3d using a perspective +projection. +.TP 8 +.B \-projection-4d orthographic \fP(Shortcut: \fB\-orthographic-4d\fP) +Project the projective plane from 4d to 3d using an orthographic +projection. +.PP +The following six options determine the rotation speed of the +projective plane around the six possible hyperplanes. The rotation +speed is measured in degrees per frame. The speeds should be set to +relatively small values, e.g., less than 4 in magnitude. In walk +mode, all speeds are ignored. In walk-and-turn mode, the 3d rotation +speeds are ignored (i.e., the wx, wy, and wz speeds). In +walk-and-turn mode, smaller speeds must be used than in the turn mode +to achieve a nice visualization. Therefore, in walk-and-turn mode the +speeds you have selected are divided by 5 internally. +.TP 8 +.B \-speed-wx \fIfloat\fP +Rotation speed around the wx plane (default: 1.1). +.TP 8 +.B \-speed-wy \fIfloat\fP +Rotation speed around the wy plane (default: 1.3). +.TP 8 +.B \-speed-wz \fIfloat\fP +Rotation speed around the wz plane (default: 1.5). +.TP 8 +.B \-speed-xy \fIfloat\fP +Rotation speed around the xy plane (default: 1.7). +.TP 8 +.B \-speed-xz \fIfloat\fP +Rotation speed around the xz plane (default: 1.9). +.TP 8 +.B \-speed-yz \fIfloat\fP +Rotation speed around the yz plane (default: 2.1). +.PP +The following two options determine the walking speed and direction. +.TP 8 +.B \-walk-direction \fIfloat\fP +The walking direction is measured as an angle in degrees in the 2d +square that forms the coordinate system of the surface of the +projective plane (default: 83.0). A value of 0 or 180 means that the +walk is along a circle at a randomly chosen distance from the origin +(parallel to a distance band). A value of 90 or 270 means that the +walk is directly from the origin to the line at infinity and back +(analogous to a direction band). Any other value results in a curved +path from the origin to the line at infinity and back. +.TP 8 +.B \-walk-speed \fIfloat\fP +The walking speed is measured in percent of some sensible maximum +speed (default: 20.0). +.SH INTERACTION +If you run this program in standalone mode in its turn mode, you can +rotate the projective plane by dragging the mouse while pressing the +left mouse button. This rotates the projective plane in 3D, i.e., +around the wx, wy, and wz planes. If you press the shift key while +dragging the mouse with the left button pressed the projective plane +is rotated in 4D, i.e., around the xy, xz, and yz planes. To examine +the projective plane at your leisure, it is best to set all speeds to +0. Otherwise, the projective plane will rotate while the left mouse +button is not pressed. This kind of interaction is not available in +the two walk modes. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2005-2014 by Carsten Steger. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Carsten Steger , 03-oct-2014. diff --git a/hacks/glx/providence.c b/hacks/glx/providence.c new file mode 100644 index 0000000..d628845 --- /dev/null +++ b/hacks/glx/providence.c @@ -0,0 +1,799 @@ +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Copyright 2004 Blair Tennessy + */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" + +# define free_providence 0 +# define release_providence 0 +#include "xlockmore.h" +#else +#include "xlock.h" +#endif + +#include "gltrackball.h" + +#define DEF_SOLIDPROVIDENCE "False" +#define DEF_EYE "True" + +static int eye; + +static XrmOptionDescRec opts[] = { + {"-eye", ".providence.eye", XrmoptionNoArg, "on"}, + {"+eye", ".providence.eye", XrmoptionNoArg, "off"} +}; + +static argtype vars[] = { + {&eye, "eye", "Eye", DEF_EYE, t_Bool} +}; + +static OptionStruct desc[] = { + {"-/+eye", "turn on/off eye of providence"} +}; + +ENTRYPOINT ModeSpecOpt providence_opts = { + sizeof opts / sizeof opts[0], opts, + sizeof vars / sizeof vars[0], vars, desc +}; + +#ifdef USE_MODULES +ModStruct providence_description = { + "providence", "init_providence", "draw_providence", + (char *) NULL, "draw_providence", "change_providence", + (char *) NULL, &providence_opts, 1000, 1, 1, 1, 4, 1.0, "", + "draws pyramid with glory", 0, NULL +}; +#endif + +#define Scale4Window 0.3 +#define Scale4Iconic 0.4 + +#define sqr(A) ((A)*(A)) + +#ifndef Pi +#define Pi M_PI +#endif + +/* brick texture */ +#define checkImageWidth 64 +#define checkImageHeight 64 + +#define EYE_PARTICLE_COUNT 2000 + +#define LOOKUPSIZE (3600/5) /* 3600 was way too much RAM on iOS */ +#define EYELENGTH 300 + +#define EPSILON 0.0001 +#define PARTICLE_COUNT 2000 +#define FPS 50 + + +typedef struct { + GLint WindH, WindW; + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + GLfloat position0[4]; + GLubyte checkImage[checkImageWidth][checkImageHeight][3]; + GLuint bricktexture; + + int mono, wire; + double camera_velocity; + double camera_z; + + int pyramidlist; + double currenttime; + double theta; + double theta_scale; + + double particles[PARTICLE_COUNT][5]; + int eyeparticles[EYE_PARTICLE_COUNT][2]; + double lookup[LOOKUPSIZE][EYELENGTH][2]; + double lookup2[LOOKUPSIZE][EYELENGTH][2]; + +} providencestruct; + +/* lighting variables */ +/*static const GLfloat front_shininess[] = {60.0};*/ +/*static const GLfloat front_specular[] = {0.2, 0.2, 0.2, 1.0};*/ +/*static const GLfloat ambient[] = {0.8, 0.8, 0.8, 1.0};*/ +static const GLfloat ambient2[] = {0.25, 0.25, 0.25, 1.0}; +static const GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const GLfloat lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0}; +static const GLfloat lmodel_twoside[] = {GL_TRUE}; + +/* gray-gray */ + +static const GLfloat MaterialGlory[] = {0.04, 0.30, 0.22, 0.7}; +static const GLfloat MaterialGloryB[] = {0.07, 0.50, 0.36, 0.6}; + +static const GLfloat MaterialGloryF[] = {0.07, 0.50, 0.36, 1.0}; +/* static const GLfloat MaterialGloryF[] = {0.06, 0.38, 0.27, 1.0}; */ +/*static const GLfloat MaterialGloryE[] = {0.06, 0.38, 0.27, 0.3};*/ +static const GLfloat MaterialGloryM[] = {0.5, 0.5, 0.5, 0.5}; +static const GLfloat MaterialGloryMB[] = {0.36, 0.36, 0.36, 0.4}; +/*static const GLfloat MaterialGreenback[4] = {0.04, 0.30, 0.22, 1.0};*/ +/*static const GLfloat MaterialBlack[4] = {0.0, 0.0, 0.0, 1.0};*/ + +static const GLfloat MaterialGray5[] = {0.5, 0.5, 0.5, 1.0}; +/*static const GLfloat MaterialGray6[] = {0.6, 0.6, 0.6, 1.0};*/ + +static providencestruct *providence = (providencestruct *) NULL; + +#define NUM_SCENES 2 + +/* build brick texture */ +static void make_brick(providencestruct *mp) +{ + int i, j, c; + + for (i = 0; i < checkImageWidth; i++) { + for (j = 0; j < checkImageHeight; j++) { + c = i % 16 == 15 ? 255 : (j + 48*(i / 16))%64 == 0 ? 255 : + 102 + random() % 102; + mp->checkImage[i][j][0] = (GLubyte) c; + mp->checkImage[i][j][1] = (GLubyte) c; + mp->checkImage[i][j][2] = (GLubyte) c; + } + } + + glGenTextures(1, &mp->bricktexture); + glBindTexture(GL_TEXTURE_2D, mp->bricktexture); + + glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, + checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, + &mp->checkImage[0][0]); +} + + +/* build eye lookup table */ +static void build_eye(providencestruct *mp) +{ + int i, j; + double x; + double inc = 0.1 / EYELENGTH; + double inc2 = 2.4*Pi / EYELENGTH; + + /* describe all values tangentially out from pupil */ + for(i = 0; i < LOOKUPSIZE; ++i) { + double r = i * 2*Pi / LOOKUPSIZE;/*x + inc;*/ + double sr = sin(r); + double cr = cos(r); + x = 0.07; + + for(j = 0; j < EYELENGTH; ++j) { + mp->lookup[i][j][0] = x*sr; + mp->lookup[i][j][1] = x*cr; + x += inc; + } + } + + /* lookup2: dollar sign */ + for(i = 0; i < LOOKUPSIZE; ++i) { + double y = -1.2*Pi; + + for(j = 0; j < EYELENGTH; ++j) { + if(i % 2) { + mp->lookup2[i][j][0] = sin(y)/6.0 + i/36000.0 - 0.05; + mp->lookup2[i][j][1] = i%4 ? y/12.0 - 0.05 : 1.2*Pi-y/12.0 + 0.05; + } + else { + mp->lookup2[i][j][0] = i/36000.0 - 0.05; + mp->lookup2[i][j][1] = y/9.0 - 0.05; + } + y += inc2; + } + } +} + + +static double min(double a, double b) +{ + return a < b ? a : b; +} + +static double max(double a, double b) +{ + return a > b ? a : b; +} + +static void init_particle(providencestruct *mp, double particle[5]) +{ + /* position along glory */ + double p = (random() % 485410) / 100000.0; + + /* on a plane */ + particle[2] = 0.0; + + if(p < 1.5) { + particle[0] = p - 0.75; + particle[1] = -0.75001; + } + else if(p < 1.5 + sqrt(45)/4.0) { + double d = p - 1.5; + particle[0] = 0.75 - d*cos(atan(2.0)); + particle[1] = d*sin(atan(2.0)) - 0.75; + } + else { + double d = 4.8541 - p; + particle[0] = -0.75 + d*cos(atan(2.0)); + particle[1] = d*sin(atan(2.0)) - 0.75; + } + + particle[3] = mp->currenttime; + particle[4] = 1.25 + (random()%10)/10.0; +} + +/* init glory particles */ +static void init_particles(providencestruct *mp) +{ + int i; + for(i = 0; i < PARTICLE_COUNT; ++i) { + init_particle(mp, mp->particles[i]); + + /* set initial time */ + mp->particles[i][3] = mp->currenttime - (random()%1250)/1000.0; + } + + /* init eye particles */ + for(i = 0; i < EYE_PARTICLE_COUNT; ++i) { + mp->eyeparticles[i][0] = random()%LOOKUPSIZE; + mp->eyeparticles[i][1] = random()%EYELENGTH; + } +} + + +/* ugg, should be a priority queue if next event times known */ +static void update_particles(providencestruct *mp) +{ + int i; + + for(i = 0; i < PARTICLE_COUNT; ++i) { + /* check for time elapse */ + if(mp->currenttime > mp->particles[i][3] + mp->particles[i][4]) + init_particle(mp, mp->particles[i]); + } + + /* now update eye particles */ + for(i = 0; i < EYE_PARTICLE_COUNT; ++i) { +/* int x = eyeparticles[i][1] + random()%16; */ + int x = mp->eyeparticles[i][1] + random()%(cos(mp->theta) < 0.0 ? 8 : 16); + + /* reset if dead */ + if(x >= EYELENGTH || random()%(cos(mp->theta) < 0.0 ? 40 : 10) == 0) { + +/* if(x > EYELENGTH || (x > EYELENGTH/(2/3.0) && random()%7 == 0)) { */ + mp->eyeparticles[i][0] = random()%LOOKUPSIZE; + mp->eyeparticles[i][1] = random()%40; + } + else { + mp->eyeparticles[i][1] = x; + } + } +} + +/* draw the pyramid */ +static void draw_seal(providencestruct *mp) +{ + int i; + double base = sqrt(2.0); + double top = 1.0 / sqrt(2.0); + double tmod = 7.0/6.0; + + glPushMatrix(); + + /* set options for mono, wireframe */ + if(mp->wire) { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + } + else { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, mp->bricktexture); + + glEnable(GL_LIGHTING); + + glColor4fv(mp->mono ? MaterialGray5 : MaterialGloryF); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGray5 : MaterialGloryF); + } + + glRotatef(45.0, 0.0, 1.0, 0.0); + glTranslatef(0.0, -3.25, 0.0); + + for(i = 0; i < 4; ++i) { + glRotatef(i*90.0, 0.0, 1.0, 0.0); + + glBegin(GL_QUADS); + glNormal3f(1 / sqrt(6.0), 2 / sqrt(6.0), 1 / sqrt(6.0)); + glTexCoord2f(-base, 0.0); + glVertex3f(-base, 0.0, base); + glTexCoord2f(base, 0.0); + glVertex3f(base, 0.0, base); + glTexCoord2f(top, 13.0/4.0); + glVertex3f(top, 2.0, top); + glTexCoord2f(-top, 13.0/4.0); + glVertex3f(-top, 2.0, top); + glEnd(); + } + + glBegin(GL_QUADS); + + /* top */ + glNormal3f(0.0, 1.0, 0.0); + glTexCoord2f(0.02, 0.0); + glVertex3f(-top, 2.0, top); + glTexCoord2f(2.0*top, 0.0); + glVertex3f(top, 2.0, top); + glTexCoord2f(2.0*top, tmod*2.1*top); + glVertex3f(top, 2.0, -top); + glTexCoord2f(0.02, tmod*2.1*top); + glVertex3f(-top, 2.0, -top); + + /* base */ + glNormal3f(0.0, -1.0, 0.0); + glTexCoord2f(-base, 0.0); + glVertex3f(-base, 0.0, -base); + glTexCoord2f(top, 0.0); + glVertex3f(base, 0.0, -base); + glTexCoord2f(top, top*13.0/4.0); + glVertex3f(base, 0.0, base); + glTexCoord2f(-top, top*13.0/4.0); + glVertex3f(-base, 0.0, base); + + glEnd(); + + glPopMatrix(); + glDisable(GL_TEXTURE_2D); +} + +/* draw glory */ +static void draw_glory(providencestruct *mp) +{ + int i; + + if(mp->wire) { + glBegin(GL_TRIANGLES); + glVertex3f(-0.75, -0.75, 0.0); + glVertex3f(0.75, -0.75, 0.0); + glVertex3f(0.0, 0.75, 0.0); + + glVertex3f(0.0, 0.75, 0.0); + glVertex3f(0.75, -0.75, 0.0); + glVertex3f(-0.75, -0.75, 0.0); + glEnd(); + return; + } + + /* draw particles */ + glDisable(GL_LIGHTING); + glPushMatrix(); + glEnable(GL_BLEND); + + /* glory colour lines */ + glColor4fv(mp->mono ? MaterialGloryM : MaterialGlory); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGloryM : MaterialGlory); + + glBegin(GL_LINES); + for(i = 0; i < PARTICLE_COUNT/2; ++i) { + double t = mp->currenttime - mp->particles[i][3]; + double th = atan(mp->particles[i][1] / mp->particles[i][0]); + if(mp->particles[i][0] < 0.0) + th += Pi; + + glVertex3f(mp->particles[i][0], mp->particles[i][1], mp->particles[i][2]); + glVertex3f(mp->particles[i][0] + 0.2*cos(th)*t, + mp->particles[i][1] + 0.2*sin(th)*t, + mp->particles[i][2]); + } + glEnd(); + + /* gloryb colour lines */ + glColor4fv(mp->mono ? MaterialGloryMB : MaterialGloryB); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGloryMB : MaterialGloryB); + glBegin(GL_LINES); + for(; i < PARTICLE_COUNT; ++i) { + double t = mp->currenttime - mp->particles[i][3]; + double th = atan(mp->particles[i][1] / mp->particles[i][0]); + if(mp->particles[i][0] < 0.0) + th += Pi; + + glVertex3f(mp->particles[i][0], mp->particles[i][1], mp->particles[i][2]); + glVertex3f(mp->particles[i][0] + 0.2*cos(th)*t, + mp->particles[i][1] + 0.2*sin(th)*t, + mp->particles[i][2]); + } + glEnd(); + + glPopMatrix(); + glEnable(GL_LIGHTING); +} + +/* draw eye of providence */ +static void draw_eye(providencestruct *mp) +{ + int i; + + /* draw wireeye */ + if(mp->wire) { + glBegin(GL_TRIANGLES); + glVertex3f(-0.25, -0.25, 0.0); + glVertex3f(0.25, -0.25, 0.0); + glVertex3f(0.0, 0.25, 0.0); + glEnd(); + return; + } + + /* draw particles */ + glDisable(GL_LIGHTING); + glPushMatrix(); + glEnable(GL_BLEND); + + /* eye */ + glColor4fv(mp->mono ? MaterialGloryM : MaterialGlory); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGloryM : MaterialGlory); + + /* draw eye particles on z = 0 plane */ + glBegin(GL_POINTS); + for(i = 0; i < EYE_PARTICLE_COUNT/2; ++i) { + glVertex3f(mp->lookup[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][0], + mp->lookup[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][1], + 0.0); + } + glEnd(); + + /* eye */ + glColor4fv(mp->mono ? MaterialGloryMB : MaterialGloryB); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGloryMB : MaterialGloryB); + + /* draw eye particles on z = 0 plane */ + glBegin(GL_POINTS); + for(; i < EYE_PARTICLE_COUNT; ++i) { + glVertex3f(mp->lookup[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][0], + mp->lookup[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][1], + 0.0); + } + glEnd(); + + + /* draw scaled particles */ + glPushMatrix(); + glScalef(3.3, 2.2, 3.3); + + /* eye */ + glColor4fv(mp->mono ? MaterialGloryMB : MaterialGloryB); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGloryMB : MaterialGloryB); + + /* draw eye particles on z = 0 plane */ + glBegin(GL_POINTS); + for(i = 0; i < EYE_PARTICLE_COUNT/2; ++i) { + glVertex3f(mp->lookup[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][0], + mp->lookup[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][1], + 0.0); + } + glEnd(); + + glColor4fv(mp->mono ? MaterialGloryM : MaterialGlory); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGloryM : MaterialGlory); + + /* draw eye particles on z = 0 plane */ + glBegin(GL_POINTS); + for(; i < EYE_PARTICLE_COUNT; ++i) { + glVertex3f(mp->lookup[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][0], + mp->lookup[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][1], + 0.0); + } + glEnd(); + + glPopMatrix(); + + glPopMatrix(); + glEnable(GL_LIGHTING); +} + +/* draw eye of providence */ +static void draw_eye2(providencestruct *mp) +{ + int i; + + /* draw wireeye */ + if(mp->wire) { + glBegin(GL_TRIANGLES); + glVertex3f(0.0, 0.25, 0.0); + glVertex3f(0.25, -0.25, 0.0); + glVertex3f(-0.25, -0.25, 0.0); + glEnd(); + return; + } + + /* draw particles */ + glDisable(GL_LIGHTING); + glPushMatrix(); + glEnable(GL_BLEND); + + /* eye */ + glColor4fv(mp->mono ? MaterialGloryM : MaterialGlory); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGloryM : MaterialGlory); + + /* draw eye particles on z = 0 plane */ + glBegin(GL_POINTS); + for(i = 0; i < EYE_PARTICLE_COUNT/2; ++i) { + glVertex3f(mp->lookup2[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][0], + mp->lookup2[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][1], + 0.0); + } + glEnd(); + + /* eye */ + glColor4fv(mp->mono ? MaterialGloryMB : MaterialGloryB); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, + mp->mono ? MaterialGloryMB : MaterialGloryB); + + /* draw eye particles on z = 0 plane */ + glBegin(GL_POINTS); + for(; i < EYE_PARTICLE_COUNT; ++i) { + glVertex3f(mp->lookup2[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][0], + mp->lookup2[mp->eyeparticles[i][0]][mp->eyeparticles[i][1]][1], + 0.0); + } + glEnd(); + + glPopMatrix(); + glEnable(GL_LIGHTING); +} + +/* draw the scene */ +static void draw_providence_strip(ModeInfo *mi) +{ + providencestruct *mp = &providence[MI_SCREEN(mi)]; + glTranslatef(0.0, 1.414, 0.0); + + mp->position0[0] = 1.6*sin(mp->theta); + mp->position0[1] = 1.2; + mp->position0[2] = 1.6*cos(mp->theta); + mp->position0[3] = 0.0; + glLightfv(GL_LIGHT0, GL_POSITION, mp->position0); + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient2); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + /* draw pyramid, glory */ + glDisable(GL_BLEND); + glCallList(mp->pyramidlist); + draw_glory(mp); + if(eye) { + if(cos(mp->theta) < 0.0) + draw_eye2(mp); + else + draw_eye(mp); + } + + return; +} + +ENTRYPOINT void reshape_providence(ModeInfo * mi, int width, int height) +{ + providencestruct *mp = &providence[MI_SCREEN(mi)]; + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 3; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, mp->WindW = (GLint) width, mp->WindH = (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45, 1/h, 0.001, 25.0); + + glMatrixMode(GL_MODELVIEW); + glLineWidth(2.0); + glPointSize(2.0); +} + +static void pinit(providencestruct *mp) +{ + glClearDepth(1.0); + + mp->currenttime = 0.0; + init_particles(mp); + make_brick(mp); + build_eye(mp); + + /* build pyramid list */ + mp->pyramidlist = glGenLists(1); + glNewList(mp->pyramidlist, GL_COMPILE); + draw_seal(mp); + glEndList(); +} + +/* event handling */ +ENTRYPOINT Bool providence_handle_event(ModeInfo *mi, XEvent *event) +{ + providencestruct *mp = &providence[MI_SCREEN(mi)]; + + switch(event->xany.type) { + case ButtonPress: + switch(event->xbutton.button) { + case Button4: + mp->camera_velocity += 1.0; + return True; + case Button5: + mp->camera_velocity -= 1.0; + return True; + default: + break; + } + break; + default: + break; + } + + if (gltrackball_event_handler (event, mp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &mp->button_down_p)) + return True; + + return False; +} + +ENTRYPOINT void init_providence(ModeInfo *mi) +{ + providencestruct *mp; + + MI_INIT(mi, providence); + mp = &providence[MI_SCREEN(mi)]; + mp->trackball = gltrackball_init (False); + + mp->position0[0] = 1; + mp->position0[1] = 5; + mp->position0[2] = 1; + mp->position0[3] = 1; + + mp->camera_velocity = -8.0; + + mp->mono = MI_IS_MONO(mi); + mp->wire = MI_IS_WIREFRAME(mi); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + mp->wire = 0; +# endif + + /* make multiple screens rotate at slightly different rates. */ + mp->theta_scale = 0.7 + frand(0.6); + + if((mp->glx_context = init_GL(mi)) != NULL) { + reshape_providence(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + /* glDrawBuffer(GL_BACK); */ + pinit(mp); + } + else + MI_CLEARWINDOW(mi); +} + +ENTRYPOINT void draw_providence(ModeInfo * mi) +{ + providencestruct *mp; + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if(!providence) + return; + mp = &providence[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + + if(!mp->glx_context) + return; + + glXMakeCurrent(display, window, *(mp->glx_context)); + + /* setup twoside lighting */ + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient2); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, mp->position0); + + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + glEnable(GL_NORMALIZE); + glFrontFace(GL_CCW); +/* glDisable(GL_CULL_FACE); */ + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LEQUAL); + + 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_REPEAT); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glRotatef(current_device_rotation(), 0, 0, 1); + + /* modify camera */ + if(fabs(mp->camera_velocity) > EPSILON) { + mp->camera_z = max(min(mp->camera_z + 0.1*mp->camera_velocity, -4.0), -12.0); + mp->camera_velocity = 0.95*mp->camera_velocity; + } + + /* rotate providence */ + glTranslatef(0.0, 0.0, mp->camera_z + sin(mp->theta/4.0)); + glRotatef(10.0+20.0*sin(mp->theta/2.0), 1.0, 0.0, 0.0); + gltrackball_rotate(mp->trackball); + glRotatef(mp->theta * 180.0 / Pi, 0.0, -1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + /* draw providence */ + draw_providence_strip(mi); + glPopMatrix(); + + if(MI_IS_FPS(mi)) do_fps (mi); + glFlush(); + + glXSwapBuffers(display, window); + + /* update */ + mp->currenttime += 1.0 / FPS; + mp->theta = mp->currenttime / 2.0 * mp->theta_scale; + update_particles(mp); +} + +#ifndef STANDALONE +ENTRYPOINT void change_providence(ModeInfo * mi) +{ + providencestruct *mp = &providence[MI_SCREEN(mi)]; + + if (!mp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context)); + pinit(); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("Providence", providence) diff --git a/hacks/glx/providence.man b/hacks/glx/providence.man new file mode 100644 index 0000000..ea7286d --- /dev/null +++ b/hacks/glx/providence.man @@ -0,0 +1,66 @@ +.TH XScreenSaver 1 "May 2004" +.SH NAME +providence - eye in glory screenhack +.SH SYNOPSIS +.B providence +[\-display \fIhost:display.screen\fP] +[\-window] +[\-root] + [\-install] +[\-visual \fIvisual\fP] +[\-delay \fImicroseconds\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIprovidence\fP code displays an eye, shrouded in glory, set upon the +base of a pyramid. +.SH OPTIONS +.I providence +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-eye +Draw an eye/$. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-wireframe +Render in wireframe (with hidden line removal) instead of as textured solids. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 2004 by Blair Tennessy. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Blair Tennessy , 11-May-2004. + diff --git a/hacks/glx/pulsar.c b/hacks/glx/pulsar.c new file mode 100644 index 0000000..285b5de --- /dev/null +++ b/hacks/glx/pulsar.c @@ -0,0 +1,515 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* pulsar --- pulsar module for xpulsar */ +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + + * Revision History: + * 4-Apr-1999: dek@cgl.ucsf.edu Created module "pulsar" + * 27-Apr-1999: dek@cgl.ucsf.edu Submitted module "pulsar" + * 4-May-1999: jwz@jwz.org Added module "pulsar" + * 4-May-1999: dek@cgl.ucsf.edu Submitted module "pulsar" updates + * + * Notes: + * The pulsar pulsar draws a number of rotating, pulsing rectangles + * on your screen. Depending on the options you choose, you can set a number + * of interesting OpenGL parameters, including alpha blending, depth testing, fog, + * lighting, texturing, mipmapping, bilinear filtering, and line antialiasing. + * Additionally, there is a "frames per second" meter which gives an estimate of + * the speed of your graphics card. + * + * Example command-line switches: + * Only draw a single quad, and don't fill it (boring but fast) + * pulsar -wire -quads 1 -fps + * + * Only try this with hardware graphics acceleration (PPro 200 w/ a Voodoo 2 runs great) + * pulsar -quads 10 -texture -mipmap -texture_quality -light -fog -fps + * + */ + +#include +#include +#include + +#ifdef STANDALONE +#define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + +# define release_pulsar 0 +# define pulsar_handle_event xlockmore_no_events +# include "xlockmore.h" /* from the xpulsar distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL /* whole file */ + +#ifdef HAVE_XMU +# ifndef VMS +# include +#else /* VMS */ +# include +# endif /* VMS */ +#endif + +#include "ximage-loader.h" + +/* Functions for loading and storing textures */ + +#define checkImageWidth 64 +#define checkImageHeight 64 + +/* Functions for handling the frames per second timer */ + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define WIDTH 800 +#define HEIGHT 600 + +#define NUM_QUADS 5 +#define DEF_QUADS "5" +#define DEF_LIGHT "False" +#define DEF_WIRE "False" +#define DEF_BLEND "True" +#define DEF_FOG "False" +#define DEF_ANTIALIAS "False" +#define DEF_TEXTURE "False" +#define DEF_TEXTURE_QUALITY "False" +#define DEF_MIPMAP "False" +#define DEF_DO_DEPTH "False" +#define DEF_IMAGE "BUILTIN" + +static int num_quads; +static int do_light; +static int do_wire; +static int do_blend; +static int do_fog; +static int do_antialias; +static int do_texture; +static int do_texture_quality; +static int do_mipmap; +static int do_depth; +static char *which_image; + + +static XrmOptionDescRec opts[] = { + {"-quads", ".pulsar.quads", XrmoptionSepArg, 0 }, + {"-light", ".pulsar.light", XrmoptionNoArg, "true" }, + {"+light", ".pulsar.light", XrmoptionNoArg, "false" }, + {"-wire", ".pulsar.wire", XrmoptionNoArg, "true" }, + {"+wire", ".pulsar.wire", XrmoptionNoArg, "false" }, + {"-blend", ".pulsar.blend", XrmoptionNoArg, "true" }, + {"+blend", ".pulsar.blend", XrmoptionNoArg, "false" }, + {"-fog", ".pulsar.fog", XrmoptionNoArg, "true" }, + {"+fog", ".pulsar.fog", XrmoptionNoArg, "false" }, + {"-antialias", ".pulsar.antialias", XrmoptionNoArg, "true" }, + {"+antialias", ".pulsar.antialias", XrmoptionNoArg, "false" }, + {"-texture", ".pulsar.texture", XrmoptionNoArg, "true" }, + {"+texture", ".pulsar.texture", XrmoptionNoArg, "false" }, + {"-texture_quality", ".pulsar.textureQuality", XrmoptionNoArg, "true" }, + {"+texture_quality", ".pulsar.textureQuality", XrmoptionNoArg, "false" }, + {"-mipmap", ".pulsar.mipmap", XrmoptionNoArg, "true" }, + {"+mipmap", ".pulsar.mipmap", XrmoptionNoArg, "false" }, + {"-do_depth", ".pulsar.doDepth", XrmoptionNoArg, "true" }, + {"+do_depth", ".pulsar.doDepth", XrmoptionNoArg, "false" }, + {"-image", ".pulsar.image", XrmoptionSepArg, 0 }, +}; + + +static argtype vars[] = { + {&num_quads, "quads", "Quads", DEF_QUADS, t_Int}, + {&do_light, "light", "Light", DEF_LIGHT, t_Bool}, + {&do_wire, "wire", "Wire", DEF_WIRE, t_Bool}, + {&do_blend, "blend", "Blend", DEF_BLEND, t_Bool}, + {&do_fog, "fog", "Fog", DEF_FOG, t_Bool}, + {&do_antialias, "antialias", "Antialias", DEF_ANTIALIAS, t_Bool}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_texture_quality, "textureQuality", "TextureQuality", DEF_TEXTURE_QUALITY, t_Bool}, + {&do_mipmap, "mipmap", "Mipmap", DEF_MIPMAP, t_Bool}, + {&do_depth, "doDepth", "DoDepth", DEF_DO_DEPTH, t_Bool}, + {&which_image, "image", "Image", DEF_IMAGE, t_String}, +}; + + +static OptionStruct desc[] = +{ + {"-quads num", "how many quads to draw"}, + {"-/+ light", "whether to do enable lighting (slower)"}, + {"-/+ wire", "whether to do use wireframe instead of filled (faster)"}, + {"-/+ blend", "whether to do enable blending (slower)"}, + {"-/+ fog", "whether to do enable fog (?)"}, + {"-/+ antialias", "whether to do enable antialiased lines (slower)"}, + {"-/+ texture", "whether to do enable texturing (much slower)"}, + {"-/+ texture_quality", "whether to do enable linear/mipmap filtering (much much slower)"}, + {"-/+ mipmap", "whether to do enable mipmaps (much slower)"}, + {"-/+ depth", "whether to do enable depth buffer checking (slower)"}, + {"-image ", "texture image to load"}, +}; + +ENTRYPOINT ModeSpecOpt pulsar_opts = {countof(opts), opts, countof(vars), vars, desc}; + +#ifdef USE_MODULES +ModStruct pulsar_description = +{"pulsar", "init_pulsar", "draw_pulsar", NULL, + "draw_pulsar", "init_pulsar", "free_pulsar", &pulsar_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "OpenGL pulsar", 0, NULL}; +#endif + +struct quad +{ + GLfloat tx, ty, tz; + GLfloat rx, ry, rz; + + GLfloat dtx, dty, dtz; + GLfloat drx, dry, drz; + +}; + + +/* structure for holding the pulsar data */ +typedef struct { + int screen_width, screen_height; + GLXContext *glx_context; + Window window; + XColor fg, bg; + + GLint quad_list; + float scale_x, scale_y, scale_z; + int frame; + + struct quad *quads; + +} pulsarstruct; + +static pulsarstruct *Pulsar = NULL; + +static GLubyte * +Generate_Image(int *width, int *height, int *format) +{ + GLubyte *result; + int i, j, c; + int counter=0; + + *width = checkImageWidth; + *height = checkImageHeight; + result = (GLubyte *)malloc(4 * (*width) * (*height)); + + counter = 0; + for (i = 0; i < checkImageWidth; i++) { + for (j = 0; j < checkImageHeight; j++) { + c = (((((i&0x8)==0))^(((j&0x8))==0)))*255; + result[counter++] = (GLubyte) c; + result[counter++] = (GLubyte) c; + result[counter++] = (GLubyte) c; + result[counter++] = (GLubyte) 255; + } + } + + *format = GL_RGBA; + return result; +} + + +/* Create a texture in OpenGL. First an image is loaded + and stored in a raster buffer, then it's */ +static void Create_Texture(ModeInfo *mi, const char *filename) +{ + int height, width; + GLubyte *image; + int format; + + if ( !strncmp(filename, "BUILTIN", 7)) + { + BUILTIN: + image = Generate_Image(&width, &height, &format); + } + else + { + XImage *ximage = file_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + filename); + if (! ximage) + goto BUILTIN; + image = (GLubyte *) ximage->data; + width = ximage->width; + height = ximage->height; + format = GL_RGBA; + } + + /* GL_MODULATE or GL_DECAL depending on what you want */ + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + /* perhaps we can edge a bit more speed at the expense of quality */ + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + + if (do_texture_quality) { + /* with texture_quality, the min and mag filters look *much* nice but are *much* slower */ + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + } + else { + /* default is to do it quick and dirty */ + /* if you have mipmaps turned on, but not texture quality, nothing will happen! */ + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } + + /* mipmaps make the image look much nicer */ + if (do_mipmap) + { + int status; + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, format, + GL_UNSIGNED_BYTE, image); + if (status) + { + const char *s = (char *) gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, width, height, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + } + else + { + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, + format, GL_UNSIGNED_BYTE, image); + check_gl_error("texture"); + } +} + +static void resetProjection(void) +{ + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1, 1, -1, 1, 1, 100); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +} + + +static void GenerateQuad(pulsarstruct *gp) +{ + int i; + + gp->quad_list = glGenLists(1); + glNewList(gp->quad_list,GL_COMPILE); +#if 1 + glBegin(GL_QUADS); + glColor4f(1,0,0,.4); glNormal3f(0,0,1); glTexCoord2f(0,0); glVertex2f(-1, -1); + glColor4f(0,1,0,.4); glNormal3f(0,0,1); glTexCoord2f(0,1); glVertex2f(-1, 1); + glColor4f(0,0,1,.4); glNormal3f(0,0,1); glTexCoord2f(1,1); glVertex2f( 1, 1); + glColor4f(1,1,1,1); glNormal3f(0,0,1); glTexCoord2f(1,0); glVertex2f( 1, -1); +#else + glBegin(GL_TRIANGLE_STRIP); + glColor4f(0,1,0,.4); glNormal3f(0,0,1); glTexCoord2f(0,1); glVertex2f(-1, 1); + glColor4f(1,0,0,.4); glNormal3f(0,0,1); glTexCoord2f(0,0); glVertex2f(-1, -1); + glColor4f(0,0,1,.4); glNormal3f(0,0,1); glTexCoord2f(1,1); glVertex2f( 1, 1); + glColor4f(1,1,1,.4); glNormal3f(0,0,1); glTexCoord2f(1,0); glVertex2f( 1, -1); +#endif + glEnd(); + glEndList(); + + gp->quads = (struct quad *) malloc(sizeof(struct quad) * num_quads); + for (i=0; i < num_quads; i++) + { + gp->quads[i].rx = 0.; + gp->quads[i].ry = 0.; + gp->quads[i].rz = 0.; + gp->quads[i].tx = 0.; + gp->quads[i].ty = 0.; + gp->quads[i].tz = -10; + + gp->quads[i].drx = frand(5.0); + gp->quads[i].dry = frand(5.0); + gp->quads[i].drz = 0; + } +} + +static void initializeGL(ModeInfo *mi, GLsizei width, GLsizei height) +{ + pulsarstruct *gp = &Pulsar[MI_SCREEN(mi)]; + GLfloat fogColor[4] = { 0.1, 0.1, 0.1, 0.1 }; + + glViewport( 0, 0, width, height ); + resetProjection(); + + if (do_depth) + glEnable(GL_DEPTH_TEST); + + if (do_antialias) { + do_blend = 1; + glEnable(GL_LINE_SMOOTH); + } + + if (do_blend) { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + + if (do_light) { + glShadeModel(GL_SMOOTH); + glEnable(GL_COLOR_MATERIAL); + glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); + } + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + do_wire = 0; +# endif + + if (do_wire) + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + else + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + if (do_fog) { + glEnable(GL_FOG); + glFogi(GL_FOG_MODE, GL_LINEAR); + glFogfv(GL_FOG_COLOR, fogColor); + glFogf(GL_FOG_DENSITY, 0.35); +/* glHint(GL_FOG_HINT, GL_FASTEST); */ + glFogf(GL_FOG_START, 50.0); + glFogf(GL_FOG_END, 100.0); + } + + + if (do_texture) + Create_Texture(mi, which_image); + + GenerateQuad(gp); +} + +static void drawQuads(pulsarstruct *gp) +{ + int i; + for (i=0; i < num_quads; i++) + { + glPushMatrix(); + glTranslatef(gp->quads[i].tx,0,0); + glTranslatef(0,gp->quads[i].ty,0); + glTranslatef(0,0,gp->quads[i].tz); + glRotatef(gp->quads[i].rx, 1,0,0); + glRotatef(gp->quads[i].ry, 0,1,0); + glRotatef(gp->quads[i].rz, 0,0,1); + glCallList(gp->quad_list); + glPopMatrix(); + + gp->quads[i].rx += gp->quads[i].drx; + gp->quads[i].ry += gp->quads[i].dry; + gp->quads[i].rz += gp->quads[i].drz; + + } +} + +static GLvoid drawScene(ModeInfo * mi) +{ + pulsarstruct *gp = &Pulsar[MI_SCREEN(mi)]; +/* check_gl_error ("drawScene"); */ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + /* we have to do this here because the FPS meter turns these 3 features off!! */ + { + if (do_light) { + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + } + + if (do_texture) { + glEnable(GL_TEXTURE_2D); + } + + if (do_blend) { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + } + + resetProjection(); + + /* use XYZ scaling factors to change the size of the pulsar */ + glScalef(gp->scale_x, gp->scale_y, gp->scale_z); + drawQuads(gp); + mi->polygon_count = num_quads; + + /* update the scaling factors- cyclic */ + gp->scale_x = cos(gp->frame/360.)*10.; + gp->scale_y = sin(gp->frame/360.)*10.; + gp->scale_z = 1; + + /* increment frame-counter */ + gp->frame++; + +/* check_gl_error ("drawScene"); */ +} + + +ENTRYPOINT void draw_pulsar(ModeInfo * mi) +{ + pulsarstruct *gp = &Pulsar[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!gp->glx_context) + return; + + glXMakeCurrent(display, window, *(gp->glx_context)); + drawScene(mi); + if (mi->fps_p) do_fps (mi); + glXSwapBuffers(display, window); +} + +/* Standard reshape function */ +ENTRYPOINT void +reshape_pulsar(ModeInfo *mi, int width, int height) +{ + glViewport( 0, 0, MI_WIDTH(mi), MI_HEIGHT(mi) ); + resetProjection(); +} + +ENTRYPOINT void +init_pulsar(ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + + pulsarstruct *gp; + + MI_INIT (mi, Pulsar); + gp = &Pulsar[screen]; + + gp->window = MI_WINDOW(mi); + + gp->scale_x = gp->scale_y = gp->scale_z = 1; + + if ((gp->glx_context = init_GL(mi)) != NULL) { + reshape_pulsar(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + initializeGL(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } else { + MI_CLEARWINDOW(mi); + } +} + + +/* all sorts of nice cleanup code should go here! */ +ENTRYPOINT void free_pulsar(ModeInfo * mi) +{ + pulsarstruct *gp = &Pulsar[MI_SCREEN(mi)]; + free(gp->quads); +} +#endif + +XSCREENSAVER_MODULE ("Pulsar", pulsar) diff --git a/hacks/glx/pulsar.man b/hacks/glx/pulsar.man new file mode 100644 index 0000000..f3b1009 --- /dev/null +++ b/hacks/glx/pulsar.man @@ -0,0 +1,102 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +pulsar - intersecting planes, alpha blending, fog, and textures. +.SH SYNOPSIS +.B pulsar +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-no-light] +[\-wire] +[\-delay \fInumber\fP] +[\-quads \fInumber\fP] +[\-image \fIfile\fP] +[\-light] +[\-fog] +[\-texture] +[\-mipmap] +[\-no-blend] +[\-antialias] +[\-texture_quality] +[\-do_depth] +[\-fps] +.SH DESCRIPTION +Draws some intersecting planes, making use of alpha blending, fog, +textures, and mipmaps, plus a ``frames per second'' meter so that you can +tell how fast your graphics card is... Requires OpenGL. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-light | \-no-light +Use Flat Coloring. +.TP 8 +.B \-wire +Render in wireframe instead of solid. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-image \fIfile\fP +The texture map to use. +.TP 8 +.B \-quads \fInumber\fP +Quad Count. 1 - 50. Default: 5. +.TP 8 +.B \-light | \-no-light +Whether to enable lighting. +.TP 8 +.B \-fog | \-no-fog +Whether to enable fog. +.TP 8 +.B \-texture | \-no-texture +Whether to enable texturing. +.TP 8 +.B \-mipmap | \-no-mipmap +Whether to enable texture mipmaps. +.TP 8 +.B \-blend | \-no-blend +Whether to enable blending. +.TP 8 +.B \-antialias | \-no-antialias +Whether to anti-alias lines. +.TP 8 +.B \-texture_quality | \-no-texture_quality +Whether to enable texture filtering. +.TP 8 +.B \-do_depth | \-no-do_depth +Whether to enable depth buffer. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by David Konerding. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +David Konerding. diff --git a/hacks/glx/quasicrystal.c b/hacks/glx/quasicrystal.c new file mode 100644 index 0000000..b82f470 --- /dev/null +++ b/hacks/glx/quasicrystal.c @@ -0,0 +1,478 @@ +/* quasicrystal, Copyright (c) 2013 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Overlapping sine waves create interesting plane-tiling interference + * patterns. Created by jwz, Jul 2013. Inspired by + * http://mainisusuallyafunction.blogspot.com/2011/10/quasicrystals-as-sums-of-waves-in-plane.html + */ + + +#define DEFAULTS "*delay: 30000 \n" \ + "*spin: True \n" \ + "*wander: True \n" \ + "*symmetric: True \n" \ + "*count: 17 \n" \ + "*contrast: 30 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_quasicrystal 0 +# define release_quasicrystal 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPEED "1.0" + +typedef struct { + rotator *rot, *rot2; + GLuint texid; +} plane; + +typedef struct { + GLXContext *glx_context; + Bool button_down_p; + Bool symmetric_p; + GLfloat contrast; + int count; + int ncolors, ccolor; + XColor *colors; + plane *planes; + int mousex, mousey; + +} quasicrystal_configuration; + +static quasicrystal_configuration *bps = NULL; + +static GLfloat speed; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-symmetry", ".symmetric", XrmoptionNoArg, "True" }, + { "-symmetric", ".symmetric", XrmoptionNoArg, "True" }, + { "-no-symmetry", ".symmetric", XrmoptionNoArg, "False" }, + { "-nonsymmetric", ".symmetric", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-contrast", ".contrast", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt quasicrystal_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_quasicrystal (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho (0, 1, 1, 0, -1, 1); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef (0.5, 0.5, 0); + glScalef (h, 1, 1); + if (width > height) + glScalef (1/h, 1/h, 1); + glTranslatef (-0.5, -0.5, 0); + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +quasicrystal_handle_event (ModeInfo *mi, XEvent *event) +{ + quasicrystal_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + bp->button_down_p = True; + bp->mousex = event->xbutton.x; + bp->mousey = event->xbutton.y; + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + bp->button_down_p = False; + return True; + } + else if (event->xany.type == ButtonPress && /* wheel up or right */ + (event->xbutton.button == Button4 || + event->xbutton.button == Button7)) + { + UP: + if (bp->contrast <= 0) return False; + bp->contrast--; + return True; + } + else if (event->xany.type == ButtonPress && /* wheel down or left */ + (event->xbutton.button == Button5 || + event->xbutton.button == Button6)) + { + DOWN: + if (bp->contrast >= 100) return False; + bp->contrast++; + return True; + } + else if (event->xany.type == MotionNotify && + bp->button_down_p) + { + /* Dragging up and down tweaks contrast */ + + int dx = event->xmotion.x - bp->mousex; + int dy = event->xmotion.y - bp->mousey; + + if (abs(dy) > abs(dx)) + { + bp->contrast += dy / 40.0; + if (bp->contrast < 0) bp->contrast = 0; + if (bp->contrast > 100) bp->contrast = 100; + } + + bp->mousex = event->xmotion.x; + bp->mousey = event->xmotion.y; + return True; + } + else + { + if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == '<' || c == ',' || c == '-' || c == '_' || + keysym == XK_Left || keysym == XK_Up || keysym == XK_Prior) + goto UP; + else if (c == '>' || c == '.' || c == '=' || c == '+' || + keysym == XK_Right || keysym == XK_Down || + keysym == XK_Next) + goto DOWN; + } + + return screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event); + } + + return False; +} + + + +ENTRYPOINT void +init_quasicrystal (ModeInfo *mi) +{ + quasicrystal_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + unsigned char *tex_data = 0; + int tex_width; + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_quasicrystal (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glDisable (GL_DEPTH_TEST); + glEnable (GL_CULL_FACE); + + bp->count = MI_COUNT(mi); + if (bp->count < 1) bp->count = 1; + + if (! wire) + { + unsigned char *o; + + tex_width = 4096; + glGetIntegerv (GL_MAX_TEXTURE_SIZE, &tex_width); + if (tex_width > 4096) tex_width = 4096; + + tex_data = (unsigned char *) calloc (4, tex_width); + o = tex_data; + for (i = 0; i < tex_width; i++) + { + unsigned char y = 255 * (1 + sin (i * M_PI * 2 / tex_width)) / 2; + *o++ = y; + *o++ = y; + *o++ = y; + *o++ = 255; + } + } + + bp->symmetric_p = + get_boolean_resource (MI_DISPLAY (mi), "symmetric", "Symmetric"); + + bp->contrast = get_float_resource (MI_DISPLAY (mi), "contrast", "Contrast"); + if (bp->contrast < 0 || bp->contrast > 100) + { + fprintf (stderr, "%s: contrast must be between 0 and 100%%.\n", progname); + bp->contrast = 0; + } + + { + Bool spinp = get_boolean_resource (MI_DISPLAY (mi), "spin", "Spin"); + Bool wanderp = get_boolean_resource (MI_DISPLAY (mi), "wander", "Wander"); + double spin_speed = 0.01; + double wander_speed = 0.0001; + double spin_accel = 10.0; + double scale_speed = 0.005; + + bp->planes = (plane *) calloc (sizeof (*bp->planes), bp->count); + + bp->ncolors = 256; /* ncolors affects color-cycling speed */ + bp->colors = (XColor *) calloc (bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, bp->colors, &bp->ncolors, + False, 0, False); + bp->ccolor = 0; + + for (i = 0; i < bp->count; i++) + { + plane *p = &bp->planes[i]; + p->rot = make_rotator (0, 0, + spinp ? spin_speed : 0, + spin_accel, + wanderp ? wander_speed : 0, + True); + p->rot2 = make_rotator (0, 0, + 0, 0, + scale_speed, + True); + if (! wire) + { + clear_gl_error(); + + glGenTextures (1, &p->texid); + glBindTexture (GL_TEXTURE_1D, p->texid); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glTexImage1D (GL_TEXTURE_1D, 0, GL_RGBA, + tex_width, 0, + GL_RGBA, GL_UNSIGNED_BYTE, tex_data); + check_gl_error("texture"); + + glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + } + } + } + + if (tex_data) free (tex_data); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + +ENTRYPOINT void +draw_quasicrystal (ModeInfo *mi) +{ + quasicrystal_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + double r=0, ps=0; + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + mi->polygon_count = 0; + + glShadeModel(GL_FLAT); + glDisable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); + glDisable (GL_LIGHTING); + if (!wire) + { + glEnable (GL_TEXTURE_1D); +# ifdef HAVE_JWZGLES + glEnable (GL_TEXTURE_2D); /* jwzgles needs this, bleh. */ +# endif + } + + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glPushMatrix (); + glTranslatef (0.5, 0.5, 0); + glScalef (3, 3, 3); + + if (wire) glScalef (0.2, 0.2, 0.2); + + for (i = 0; i < bp->count; i++) + { + plane *p = &bp->planes[i]; + double x, y, z; + double scale = (wire ? 10 : 700.0 / bp->count); + double pscale; + + glPushMatrix(); + + get_position (p->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 0.3333, + (y - 0.5) * 0.3333, + 0); + + /* With -symmetry, keep the planes' scales in sync. + Otherwise, they scale independently. + */ + if (bp->symmetric_p && i > 0) + pscale = ps; + else + { + get_position (p->rot2, &x, &y, &z, !bp->button_down_p); + pscale = 1 + (4 * z); + ps = pscale; + } + + scale *= pscale; + + + /* With -symmetry, evenly distribute the planes' rotation. + Otherwise, they rotate independently. + */ + if (bp->symmetric_p && i > 0) + z = r + (i * M_PI * 2 / bp->count); + else + { + get_rotation (p->rot, &x, &y, &z, !bp->button_down_p); + r = z; + } + + + glRotatef (z * 360, 0, 0, 1); + glTranslatef (-0.5, -0.5, 0); + + glColor4f (1, 1, 1, (wire ? 0.5 : 1.0 / bp->count)); + + if (!wire) + glBindTexture (GL_TEXTURE_1D, p->texid); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f (0, 0, 1); + glTexCoord2f (-scale/2, scale/2); glVertex3f (0, 1, 0); + glTexCoord2f ( scale/2, scale/2); glVertex3f (1, 1, 0); + glTexCoord2f ( scale/2, -scale/2); glVertex3f (1, 0, 0); + glTexCoord2f (-scale/2, -scale/2); glVertex3f (0, 0, 0); + glEnd(); + + if (wire) + { + float j; + glDisable (GL_TEXTURE_1D); + glColor4f (1, 1, 1, 1.0 / bp->count); + for (j = 0; j < 1; j += (1 / scale)) + { + glBegin (GL_LINES); + glVertex3f (j, 0, 0); + glVertex3f (j, 1, 0); + mi->polygon_count++; + glEnd(); + } + } + + glPopMatrix(); + + mi->polygon_count++; + } + + /* Colorize the grayscale image. */ + { + GLfloat c[4]; + c[0] = bp->colors[bp->ccolor].red / 65536.0; + c[1] = bp->colors[bp->ccolor].green / 65536.0; + c[2] = bp->colors[bp->ccolor].blue / 65536.0; + c[3] = 1; + + /* Brighten the colors. */ + c[0] = (0.6666 + c[0]/3); + c[1] = (0.6666 + c[1]/3); + c[2] = (0.6666 + c[2]/3); + + glBlendFunc (GL_DST_COLOR, GL_SRC_COLOR); + glDisable (GL_TEXTURE_1D); + glColor4fv (c); + glTranslatef (-0.5, -0.5, 0); + glBegin (GL_QUADS); + glVertex3f (0, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); + glVertex3f (0, 0, 0); + glEnd(); + mi->polygon_count++; + } + + /* Clip the colors to simulate contrast. */ + + if (bp->contrast > 0) + { + /* If c > 0, map 0 - 100 to 0.5 - 1.0, and use (s & ~d) */ + GLfloat c = 1 - (bp->contrast / 2 / 100.0); + glDisable (GL_TEXTURE_1D); + glDisable (GL_BLEND); + glEnable (GL_COLOR_LOGIC_OP); + glLogicOp (GL_AND_REVERSE); + glColor4f (c, c, c, 1); + glBegin (GL_QUADS); + glVertex3f (0, 1, 0); + glVertex3f (1, 1, 0); + glVertex3f (1, 0, 0); + glVertex3f (0, 0, 0); + glEnd(); + mi->polygon_count++; + glDisable (GL_COLOR_LOGIC_OP); + } + + /* Rotate colors. */ + bp->ccolor++; + if (bp->ccolor >= bp->ncolors) + bp->ccolor = 0; + + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("QuasiCrystal", quasicrystal) + +#endif /* USE_GL */ diff --git a/hacks/glx/quasicrystal.man b/hacks/glx/quasicrystal.man new file mode 100644 index 0000000..804d3a3 --- /dev/null +++ b/hacks/glx/quasicrystal.man @@ -0,0 +1,83 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +quasicrystal - aperiodic plane tilings. +.SH SYNOPSIS +.B quasicrystal +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +[\-contrast \fIpercent\fP] +[\-no-wander] +[\-no-spin] +[\-asymmetric] +[\-fps] +.SH DESCRIPTION +A quasicrystal is a structure that is ordered but aperiodic. +Two-dimensional quasicrystals can be generated by adding a set of planes +where x is the sine of y. Different complex aperiodic plane tilings are +produced depending on the period, position, and rotation of the component +planes, and whether the rotation of the planes is evenly distributed around +the circle (the "symmetric" option, above) or random. See also the +"RD-Bomb", "CWaves" and "Penrose" screen savers. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2 for twice as fast, 0.5 for half as fast. +.TP 8 +.B \-contrast \fIcontrast\fP +Contrast. Sort of. Default 30%. +.TP 8 +.B \-count \fInumber\fP +How many planes to use. Default 17. +.TP 8 +.B \-wander | \-no-wander +Whether the planes should displace horizontally and vertically. +.TP 8 +.B \-spin | \-no-spin +Whether the planes should rotate. +.TP 8 +.B \-asymmetric +Allow each plane to rotate freely instead of being constrained to an +even distribution around the circle. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2013 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/queens.c b/hacks/glx/queens.c new file mode 100644 index 0000000..bc9b202 --- /dev/null +++ b/hacks/glx/queens.c @@ -0,0 +1,610 @@ +/* + * queens - solves n queens problem, displays + * i make no claims that this is an optimal solution to the problem, + * good enough for xss + * hacked from glchess + * + * version 1.0 - May 10, 2002 + * + * Copyright (C) 2002 Blair Tennessy (tennessy@cs.ubc.ca) + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef STANDALONE +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_queens 0 +# define release_queens 0 +# include "xlockmore.h" + +#else +# include "xlock.h" +#endif + +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#ifdef USE_GL + +#include "gltrackball.h" +#include "chessmodels.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +static XrmOptionDescRec opts[] = { + {"+rotate", ".queens.rotate", XrmoptionNoArg, "false" }, + {"-rotate", ".queens.rotate", XrmoptionNoArg, "true" }, + {"+flat", ".queens.flat", XrmoptionNoArg, "false" }, + {"-flat", ".queens.flat", XrmoptionNoArg, "true" }, +}; + +static int rotate, wire, clearbits, flat; + +static argtype vars[] = { + {&rotate, "rotate", "Rotate", "True", t_Bool}, + {&flat, "flat", "Flat", "False", t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt queens_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct queens_description = +{"queens", "init_queens", "draw_queens", NULL, + "draw_queens", "init_queens", NULL, &queens_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Queens", 0, NULL}; + +#endif + +#define NONE 0 +#define MINBOARD 5 +#define MAXBOARD 10 +#define COLORSETS 5 + +typedef struct { + GLXContext *glx_context; + Window window; + trackball_state *trackball; + Bool button_down_p; + GLfloat position[4]; + int queen_list; + + int board[MAXBOARD][MAXBOARD]; + int steps, colorset, BOARDSIZE; + double theta; + int queen_polys; + +} Queenscreen; + +static Queenscreen *qss = NULL; + +/* definition of white/black colors */ +static const GLfloat colors[COLORSETS][2][3] = + { + {{0.43, 0.54, 0.76}, {0.8, 0.8, 0.8}}, + {{0.5, 0.7, 0.9}, {0.2, 0.3, 0.6}}, + {{0.53725490196, 0.360784313725, 0.521568627451}, {0.6, 0.6, 0.6}}, + {{0.15, 0.77, 0.54}, {0.5, 0.5, 0.5}}, + {{0.9, 0.45, 0.0}, {0.5, 0.5, 0.5}}, + }; + +ENTRYPOINT Bool +queens_handle_event (ModeInfo *mi, XEvent *event) +{ + Queenscreen *qs = &qss[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, qs->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &qs->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + qs->steps = 1024 - 1; + return True; + } + + return False; +} + + + +/* returns true if placing a queen on column c causes a conflict */ +static int conflictsCols(Queenscreen *qs, int c) +{ + int i; + + for(i = 0; i < qs->BOARDSIZE; ++i) + if(qs->board[i][c]) + return 1; + + return 0; +} + +/* returns true if placing a queen on (r,c) causes a diagonal conflict */ +static int conflictsDiag(Queenscreen *qs, int r, int c) +{ + int i; + + /* positive slope */ + int n = r < c ? r : c; + for(i = 0; i < qs->BOARDSIZE-abs(r-c); ++i) + if(qs->board[r-n+i][c-n+i]) + return 1; + + /* negative slope */ + n = r < qs->BOARDSIZE - (c+1) ? r : qs->BOARDSIZE - (c+1); + for(i = 0; i < qs->BOARDSIZE-abs(qs->BOARDSIZE - (1+r+c)); ++i) + if(qs->board[r-n+i][c+n-i]) + return 1; + + return 0; +} + +/* returns true if placing a queen at (r,c) causes a conflict */ +static int conflicts(Queenscreen *qs, int r, int c) +{ + return !conflictsCols(qs, c) ? conflictsDiag(qs, r, c) : 1; +} + +/* clear board */ +static void blank(Queenscreen *qs) +{ + int i, j; + + for(i = 0; i < MAXBOARD; ++i) + for(j = 0; j < MAXBOARD; ++j) + qs->board[i][j] = NONE; +} + +/* recursively determine solution */ +static int findSolution(Queenscreen *qs, int row, int col) +{ + if(row == qs->BOARDSIZE) + return 1; + + while(col < qs->BOARDSIZE) { + if(!conflicts(qs, row, col)) { + qs->board[row][col] = 1; + + if(findSolution(qs, row+1, 0)) + return 1; + + qs->board[row][col] = 0; + } + + ++col; + } + + return 0; +} + +/** driver for finding solution */ +static void go(Queenscreen *qs) { while(!findSolution(qs, 0, random()%qs->BOARDSIZE)); } + +/* lighting variables */ +static const GLfloat front_shininess[] = {60.0}; +static const GLfloat front_specular[] = {0.4, 0.4, 0.4, 1.0}; +static const GLfloat ambient[] = {0.3, 0.3, 0.3, 1.0}; +static const GLfloat diffuse[] = {0.8, 0.8, 0.8, 1.0}; + +/* configure lighting */ +static void setup_lights(Queenscreen *qs) +{ + + /* setup twoside lighting */ + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, qs->position); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + /* setup material properties */ + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +} + +#define checkImageWidth 8 +#define checkImageHeight 8 +/*static GLubyte checkImage[checkImageWidth][checkImageHeight][3];*/ + +/* return alpha value for fading */ +static GLfloat findAlpha(Queenscreen *qs) +{ + return qs->steps < 128 ? qs->steps/128.0 : qs->steps < 1024-128 ?1.0:(1024-qs->steps)/128.0; +} + +/* draw pieces */ +static int drawPieces(Queenscreen *qs) +{ + int i, j; + int polys = 0; + + for(i = 0; i < qs->BOARDSIZE; ++i) { + for(j = 0; j < qs->BOARDSIZE; ++j) { + if(qs->board[i][j]) { + glColor3fv(colors[qs->colorset][i%2]); + glCallList(qs->queen_list); + polys += qs->queen_polys; + } + + glTranslatef(1.0, 0.0, 0.0); + } + + glTranslatef(-1.0*qs->BOARDSIZE, 0.0, 1.0); + } + return polys; +} + +/** reflectionboard */ +static int draw_reflections(Queenscreen *qs) +{ + int i, j; + int polys = 0; + + glEnable(GL_STENCIL_TEST); + glStencilFunc(GL_ALWAYS, 1, 1); + glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); + glColorMask(0,0,0,0); + glDisable(GL_CULL_FACE); + + glDisable(GL_DEPTH_TEST); + glBegin(GL_QUADS); + + /* only draw white squares */ + for(i = 0; i < qs->BOARDSIZE; ++i) { + for(j = (qs->BOARDSIZE+i) % 2; j < qs->BOARDSIZE; j += 2) { + glVertex3f(i, 0.0, j + 1.0); + glVertex3f(i + 1.0, 0.0, j + 1.0); + glVertex3f(i + 1.0, 0.0, j); + glVertex3f(i, 0.0, j); + polys++; + } + } + glEnd(); + glEnable(GL_DEPTH_TEST); + + glColorMask(1, 1, 1, 1); + glStencilFunc(GL_EQUAL, 1, 1); + glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); + + glPushMatrix(); + glScalef(1.0, -1.0, 1.0); + glTranslatef(0.5, 0.001, 0.5); + glLightfv(GL_LIGHT0, GL_POSITION, qs->position); + polys += drawPieces(qs); + glPopMatrix(); + glDisable(GL_STENCIL_TEST); + + /* replace lights */ + glLightfv(GL_LIGHT0, GL_POSITION, qs->position); + + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + glColorMask(1,1,1,1); + return polys; +} + +/* draw board */ +static int drawBoard(Queenscreen *qs) +{ + int i, j; + int polys = 0; + + glBegin(GL_QUADS); + + for(i = 0; i < qs->BOARDSIZE; ++i) + for(j = 0; j < qs->BOARDSIZE; ++j) { + int par = (i-j+qs->BOARDSIZE)%2; + glColor4f(colors[qs->colorset][par][0], + colors[qs->colorset][par][1], + colors[qs->colorset][par][2], + 0.70); + glNormal3f(0.0, 1.0, 0.0); + glVertex3f(i, 0.0, j + 1.0); + glVertex3f(i + 1.0, 0.0, j + 1.0); + glVertex3f(i + 1.0, 0.0, j); + glVertex3f(i, 0.0, j); + polys++; + } + + glEnd(); + + { + GLfloat off = 0.01; + GLfloat w = qs->BOARDSIZE; + GLfloat h = 0.1; + + /* Give the board a slight lip. */ + /* #### oops, normals are wrong here, but you can't tell */ + + glColor3f(0.3, 0.3, 0.3); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, -h, w); + glVertex3f (0, 0, w); + + glVertex3f (0, 0, w); + glVertex3f (0, -h, w); + glVertex3f (w, -h, w); + glVertex3f (w, 0, w); + + glVertex3f (w, 0, w); + glVertex3f (w, -h, w); + glVertex3f (w, -h, 0); + glVertex3f (w, 0, 0); + + glVertex3f (w, 0, 0); + glVertex3f (w, -h, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, 0, 0); + + glVertex3f (0, -h, 0); + glVertex3f (w, -h, 0); + glVertex3f (w, -h, w); + glVertex3f (0, -h, w); + glEnd(); + polys += 4; + + /* Fill in the underside of the board with an invisible black box + to hide the reflections that are not on tiles. Probably there's + a way to do this with stencils instead. + */ + w -= off*2; + h = 5; + + glPushMatrix(); + glTranslatef (off, 0, off); + glDisable(GL_LIGHTING); + glColor3f(0,0,0); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, -h, w); + glVertex3f (0, 0, w); + + glVertex3f (0, 0, w); + glVertex3f (0, -h, w); + glVertex3f (w, -h, w); + glVertex3f (w, 0, w); + + glVertex3f (w, 0, w); + glVertex3f (w, -h, w); + glVertex3f (w, -h, 0); + glVertex3f (w, 0, 0); + + glVertex3f (w, 0, 0); + glVertex3f (w, -h, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, 0, 0); + + glVertex3f (0, -h, 0); + glVertex3f (w, -h, 0); + glVertex3f (w, -h, w); + glVertex3f (0, -h, w); + glEnd(); + polys += 4; + glPopMatrix(); + if (!wire) + glEnable(GL_LIGHTING); + } + + return polys; +} + +static int display(ModeInfo *mi, Queenscreen *qs) +{ + int max = 1024; + int polys = 0; + glClear(clearbits); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glRotatef(current_device_rotation(), 0, 0, 1); + + /* setup light attenuation */ + /* #### apparently this does nothing */ + glEnable(GL_COLOR_MATERIAL); + glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.8/(0.01+findAlpha(qs))); + glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.06); + + /** setup perspective */ + glTranslatef(0.0, 0.0, -1.5*qs->BOARDSIZE); + glRotatef(30.0, 1.0, 0.0, 0.0); + gltrackball_rotate (qs->trackball); + glRotatef(qs->theta*100, 0.0, 1.0, 0.0); + glTranslatef(-0.5*qs->BOARDSIZE, 0.0, -0.5*qs->BOARDSIZE); + + /* find light positions */ + qs->position[0] = qs->BOARDSIZE/2.0 + qs->BOARDSIZE/1.4*-sin(qs->theta*100*M_PI/180.0); + qs->position[2] = qs->BOARDSIZE/2.0 + qs->BOARDSIZE/1.4*cos(qs->theta*100*M_PI/180.0); + qs->position[1] = 6.0; + + if(!wire) { + glEnable(GL_LIGHTING); + glLightfv(GL_LIGHT0, GL_POSITION, qs->position); + glEnable(GL_LIGHT0); + } + + /* Since the lighting attenuation trick up there doesn't seem to be working, + let's drop the old board down and drop the new board in. */ + if (qs->steps < (max/8.0)) { + GLfloat y = qs->steps / (max/8.0); + y = sin (M_PI/2 * y); + glTranslatef (0, 10 - (y * 10), 0); + } else if (qs->steps > max-(max/8.0)) { + GLfloat y = (qs->steps - (max-(max/8.0))) / (GLfloat) (max/8.0); + y = 1 - sin (M_PI/2 * (1-y)); + glTranslatef (0, -y * 15, 0); + } + + /* draw reflections */ + if(!wire) { + polys += draw_reflections(qs); + glEnable(GL_BLEND); + } + polys += drawBoard(qs); + if(!wire) + glDisable(GL_BLEND); + + glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.1); + + glTranslatef(0.5, 0.0, 0.5); + polys += drawPieces(qs); + + /* rotate camera */ + if(!qs->button_down_p) + qs->theta += .002; + + /* zero out board, find new solution of size MINBOARD <= i <= MAXBOARD */ + if(++qs->steps == max) { + qs->steps = 0; + blank(qs); + qs->BOARDSIZE = MINBOARD + (random() % (MAXBOARD - MINBOARD + 1)); + qs->colorset = (qs->colorset+1)%COLORSETS; + go(qs); + } + return polys; +} + +#define EPSILON 0.001 + +#if 0 +/** draws cylindermodel */ +static int draw_model(int chunks, const GLfloat model[][3], int r) +{ + int i = 0; + int polys = 0; + glPushMatrix(); + glRotatef(-90.0, 1.0, 0.0, 0.0); + + for(i = 0; i < chunks; ++i) { + if(model[i][0] > EPSILON || model[i][1] > EPSILON) { + polys += tube (0, 0, 0, + 0, 0, model[i][1], + model[i][0], 0, + r, False, False, False); +/* gluCylinder(quadric, model[i][0], model[i][1], model[i][2], r, 1); + polys += r;*/ + } + glTranslatef(0.0, 0.0, model[i][2]); + } + + glPopMatrix(); + return polys; +} +#endif + +ENTRYPOINT void reshape_queens(ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + h = height / (GLfloat) width; + } + glViewport(0,y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45, 1/h, 2.0, 30.0); + glMatrixMode(GL_MODELVIEW); +} + +ENTRYPOINT void init_queens(ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + Queenscreen *qs; + int poly_counts[PIECES]; + wire = MI_IS_WIREFRAME(mi); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + wire = 0; +# endif + + MI_INIT (mi, qss); + + qs = &qss[screen]; + qs->window = MI_WINDOW(mi); + + if((qs->glx_context = init_GL(mi))) + reshape_queens(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + else + MI_CLEARWINDOW(mi); + + qs->trackball = gltrackball_init (False); + + qs->BOARDSIZE = 8; /* 8 cuz its classic */ + + chessmodels_gen_lists(-1, poly_counts); + qs->queen_list = QUEEN; + qs->queen_polys = poly_counts[QUEEN]; + + /* find a solution */ + go(qs); +} + +ENTRYPOINT void draw_queens(ModeInfo *mi) +{ + Queenscreen *qs = &qss[MI_SCREEN(mi)]; + Window w = MI_WINDOW(mi); + Display *disp = MI_DISPLAY(mi); + + if(!qs->glx_context) + return; + + glXMakeCurrent(disp, w, *(qs->glx_context)); + + if(flat) + glShadeModel(GL_FLAT); + + clearbits = GL_COLOR_BUFFER_BIT; + + glColorMaterial(GL_FRONT, GL_DIFFUSE); + glEnable(GL_COLOR_MATERIAL); + + if(!wire) { + setup_lights(qs); + glEnable(GL_DEPTH_TEST); + clearbits |= GL_DEPTH_BUFFER_BIT; + clearbits |= GL_STENCIL_BUFFER_BIT; + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + } + else + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + + mi->polygon_count = display(mi, qs); + mi->recursion_depth = qs->BOARDSIZE; + + if(mi->fps_p) do_fps(mi); + glFinish(); + glXSwapBuffers(disp, w); +} + +XSCREENSAVER_MODULE ("Queens", queens) + +#endif diff --git a/hacks/glx/queens.man b/hacks/glx/queens.man new file mode 100644 index 0000000..47fc3f4 --- /dev/null +++ b/hacks/glx/queens.man @@ -0,0 +1,66 @@ +.TH XScreenSaver 1 "May 2002" +.SH NAME +queens \- n queens screensaver +.SH SYNOPSIS +.B queens +[\-display \fIhost:display.screen\fP] +[\-window] +[\-root] +[\-install] +[\-visual \fIvisual\fP] +[\-delay \fImicroseconds\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +The \fIqueens\fP program solves the n-queens problem (where, in this +program, N is between 5 and 10 queens) using a straightforward +backtracking algorithm. The problem is: how may one place N queens +on an NxN chessboard such that no queen can attack a sister? +.SH OPTIONS +.I queens +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH BUGS +It's not unknown for this and other OpenGL hacks to fail under hardware accelaration (UtahGLX) and take the X server with them. Texture images must be 16x16 or 32x32 or 64x64 etc. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 2002 by Blair Tennessy. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Blair Tennessy , 20-April-2002. + diff --git a/hacks/glx/quickhull.c b/hacks/glx/quickhull.c new file mode 100644 index 0000000..4c46ca0 --- /dev/null +++ b/hacks/glx/quickhull.c @@ -0,0 +1,1368 @@ +/* quickhull, Copyright (c) 2016 Karim Naaji, karim.naaji@gmail.com + https://github.com/karimnaaji/3d-quickhull + + LICENCE: + The MIT License (MIT) + + Copyright (c) 2016 Karim Naaji, karim.naaji@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE + + REFERENCES: + [1] http://box2d.org/files/GDC2014/DirkGregorius_ImplementingQuickHull.pdf + [2] http://www.cs.smith.edu/~orourke/books/compgeom.html + [3] http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml + [4] http://doc.cgal.org/latest/HalfedgeDS/index.html + [5] http://thomasdiewald.com/blog/?p=1888 + [6] https://fgiesen.wordpress.com/2012/02/21/half-edge-based-mesh-representations-theory/ + + HOWTO: + #define QUICKHULL_DEBUG // Only if assertions need to be checked + #include "quickhull.h" + + HISTORY: + - 25-Feb-2018: jwz: adapted for xscreensaver + - 1.0.1 (2016-11-01): Various improvements over epsilon issues and + degenerate faces + Debug functionalities to test final results dynamically + API to export hull meshes in OBJ files + - 1.0 (2016-09-10): Initial + + TODO: + - use float* from public interface + - reduce memory usage +*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +extern const char *progname; + +#include "quickhull.h" + +#include "screenhackI.h" /* for jwxyz_abort */ + +#include /* sqrt & fabs */ +#include /* FILE */ +#include /* memcpy */ + +/* Quickhull helpers, define your own if needed */ +#ifndef QUICKHULL_HELPERS +#include /* malloc, free, realloc */ +#define QUICKHULL_HELPERS 1 +#define QH_MALLOC(T, N) ((T*) malloc(N * sizeof(T))) +#define QH_REALLOC(T, P, N) ((T*)realloc(P, sizeof(T) * N)) +#define QH_FREE(T) free(T) +#define QH_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#ifdef QUICKHULL_DEBUG +#define QH_ASSERT(STMT) if (!(STMT)) { *(int *)0 = 0; } +#define QH_LOG(FMT, ...) printf(FMT, ## __VA_ARGS__) +#else +#define QH_ASSERT(STMT) +#define QH_LOG(FMT, ...) +#endif /* QUICKHULL_DEBUG */ +#endif /* QUICKHULL_HELPERS */ + +#ifndef QH_FLT_MAX +#define QH_FLT_MAX 1e+37F +#endif + +#ifndef QH_FLT_EPS +#define QH_FLT_EPS 1E-5F +#endif + +#ifndef QH_VERTEX_SET_SIZE +#define QH_VERTEX_SET_SIZE 128 +#endif + +typedef long qh_index_t; + +typedef struct qh_half_edge { + qh_index_t opposite_he; /* index of the opposite half edge */ + qh_index_t next_he; /* index of the next half edge */ + qh_index_t previous_he; /* index of the previous half edge */ + qh_index_t he; /* index of the current half edge */ + qh_index_t to_vertex; /* index of the next vertex */ + qh_index_t adjacent_face; /* index of the ajacent face */ +} qh_half_edge_t; + +typedef struct qh_index_set { + qh_index_t* indices; + unsigned int size; + unsigned int capacity; +} qh_index_set_t; + +typedef struct qh_face { + qh_index_set_t iset; + qh_vec3_t normal; + qh_vertex_t centroid; + qh_index_t edges[3]; + qh_index_t face; + double sdist; + int visitededges; +} qh_face_t; + +typedef struct qh_index_stack { + qh_index_t* begin; + unsigned int size; +} qh_index_stack_t; + +typedef struct qh_context { + qh_face_t* faces; + qh_half_edge_t* edges; + qh_vertex_t* vertices; + qh_vertex_t centroid; + qh_index_stack_t facestack; + qh_index_stack_t scratch; + qh_index_stack_t horizonedges; + qh_index_stack_t newhorizonedges; + char* valid; + unsigned int nedges; + unsigned int nvertices; + unsigned int nfaces; + + #ifdef QUICKHULL_DEBUG + unsigned int maxfaces; + unsigned int maxedges; + #endif +} qh_context_t; + +static void +qh__find_6eps(qh_vertex_t* vertices, unsigned int nvertices, qh_index_t* eps) +{ + qh_vertex_t* ptr = vertices; + + double minxy = +QH_FLT_MAX; + double minxz = +QH_FLT_MAX; + double minyz = +QH_FLT_MAX; + + double maxxy = -QH_FLT_MAX; + double maxxz = -QH_FLT_MAX; + double maxyz = -QH_FLT_MAX; + + int i = 0; + for (i = 0; i < 6; ++i) { + eps[i] = 0; + } + + for (i = 0; i < nvertices; ++i) { + if (ptr->z < minxy) { + eps[0] = i; + minxy = ptr->z; + } + if (ptr->y < minxz) { + eps[1] = i; + minxz = ptr->y; + } + if (ptr->x < minyz) { + eps[2] = i; + minyz = ptr->x; + } + if (ptr->z > maxxy) { + eps[3] = i; + maxxy = ptr->z; + } + if (ptr->y > maxxz) { + eps[4] = i; + maxxz = ptr->y; + } + if (ptr->x > maxyz) { + eps[5] = i; + maxyz = ptr->x; + } + ptr++; + } +} + +static double +qh__vertex_segment_length2(qh_vertex_t* p, qh_vertex_t* a, qh_vertex_t* b) +{ + double dx = b->x - a->x; + double dy = b->y - a->y; + double dz = b->z - a->z; + + double d = dx * dx + dy * dy + dz * dz; + + double x = a->x; + double y = a->y; + double z = a->z; + + if (d != 0) { + double t = ((p->x - a->x) * dx + + (p->y - a->y) * dy + + (p->z - a->z) * dz) / d; + + if (t > 1) { + x = b->x; + y = b->y; + z = b->z; + } else if (t > 0) { + x += dx * t; + y += dy * t; + z += dz * t; + } + } + + dx = p->x - x; + dy = p->y - y; + dz = p->z - z; + + return dx * dx + dy * dy + dz * dz; +} + +static void +qh__vec3_sub(qh_vec3_t* a, qh_vec3_t* b) +{ + a->x -= b->x; + a->y -= b->y; + a->z -= b->z; +} + +static void +qh__vec3_add(qh_vec3_t* a, qh_vec3_t* b) +{ + a->x += b->x; + a->y += b->y; + a->z += b->z; +} + +static void +qh__vec3_multiply(qh_vec3_t* a, double v) +{ + a->x *= v; + a->y *= v; + a->z *= v; +} + +static int +qh__vertex_equals_epsilon(qh_vertex_t* a, qh_vertex_t* b, double epsilon) +{ + return fabs(a->x - b->x) <= epsilon && + fabs(a->y - b->y) <= epsilon && + fabs(a->z - b->z) <= epsilon; +} + +static double +qh__vec3_length2(qh_vec3_t* v) +{ + return v->x * v->x + v->y * v->y + v->z * v->z; +} + +static double +qh__vec3_dot(qh_vec3_t* v1, qh_vec3_t* v2) +{ + return v1->x * v2->x + v1->y * v2->y + v1->z * v2->z; +} + +static void +qh__vec3_normalize(qh_vec3_t* v) +{ + qh__vec3_multiply(v, 1.f / sqrt(qh__vec3_length2(v))); +} + +static void +qh__find_2dps_6eps(qh_vertex_t* vertices, qh_index_t* eps, + int* ii, int* jj) +{ + int i, j; + double max = -QH_FLT_MAX; + + for (i = 0; i < 6; ++i) { + for (j = 0; j < 6; ++j) { + qh_vertex_t d; + double d2; + + if (i == j) { + continue; + } + + d = vertices[eps[i]]; + qh__vec3_sub(&d, &vertices[eps[j]]); + d2 = qh__vec3_length2(&d); + + if (d2 > max) { + *ii = i; + *jj = j; + max = d2; + } + } + } +} + +static qh_vec3_t +qh__vec3_cross(qh_vec3_t* v1, qh_vec3_t* v2) +{ + qh_vec3_t cross; + + cross.x = v1->y * v2->z - v1->z * v2->y; + cross.y = v1->z * v2->x - v1->x * v2->z; + cross.z = v1->x * v2->y - v1->y * v2->x; + + return cross; +} + +static qh_vertex_t +qh__face_centroid(qh_index_t vertices[3], qh_context_t* context) +{ + qh_vertex_t centroid; + int i; + + centroid.x = centroid.y = centroid.z = 0.0; + for (i = 0; i < 3; ++i) { + qh__vec3_add(¢roid, context->vertices + vertices[i]); + } + + qh__vec3_multiply(¢roid, 1.0 / 3.0); + + return centroid; +} + +static double +qh__dist_point_plane(qh_vertex_t* v, qh_vec3_t* normal, double sdist) +{ + return fabs(qh__vec3_dot(v, normal) - sdist); +} + +static void +qh__init_half_edge(qh_half_edge_t* half_edge) { + half_edge->adjacent_face = -1; + half_edge->he = -1; + half_edge->next_he = -1; + half_edge->opposite_he = -1; + half_edge->to_vertex = -1; + half_edge->previous_he = -1; +} + +static qh_half_edge_t* +qh__next_edge(qh_context_t* context) +{ + qh_half_edge_t* edge = context->edges + context->nedges; + qh__init_half_edge(edge); + + edge->he = context->nedges; + context->nedges++; + + QH_ASSERT(context->nedges < context->maxedges); + + return edge; +} + +static qh_face_t* +qh__next_face(qh_context_t* context) +{ + qh_face_t* face = context->faces + context->nfaces; + + face->face = context->nfaces; + face->iset.indices = NULL; + context->valid[context->nfaces] = 1; + context->nfaces++; + + QH_ASSERT(context->nfaces < context->maxfaces); + + return face; +} + +static qh_vec3_t +qh__edge_vec3(qh_half_edge_t* edge, qh_context_t* context) +{ + qh_half_edge_t prevhe = context->edges[edge->previous_he]; + qh_vec3_t v0, v1; + + v0 = context->vertices[prevhe.to_vertex]; + v1 = context->vertices[edge->to_vertex]; + + qh__vec3_sub(&v1, &v0); + qh__vec3_normalize(&v1); + + return v1; +} + +static void +qh__face_init(qh_face_t* face, qh_index_t vertices[3], + qh_context_t* context) +{ + qh_half_edge_t* e0 = qh__next_edge(context); + qh_half_edge_t* e1 = qh__next_edge(context); + qh_half_edge_t* e2 = qh__next_edge(context); + qh_vec3_t v0, v1; + qh_vertex_t centroid, normal; + + e2->to_vertex = vertices[0]; + e0->to_vertex = vertices[1]; + e1->to_vertex = vertices[2]; + + e0->next_he = e1->he; + e2->previous_he = e1->he; + face->edges[1] = e1->he; + + e1->next_he = e2->he; + e0->previous_he = e2->he; + face->edges[2] = e2->he; + v1 = qh__edge_vec3(e2, context); + + e2->next_he = e0->he; + e1->previous_he = e0->he; + face->edges[0] = e0->he; + v0 = qh__edge_vec3(e0, context); + + e2->adjacent_face = face->face; + e1->adjacent_face = face->face; + e0->adjacent_face = face->face; + + qh__vec3_multiply(&v1, -1.f); + normal = qh__vec3_cross(&v0, &v1); + + qh__vec3_normalize(&normal); + centroid = qh__face_centroid(vertices, context); + face->centroid = centroid; + face->sdist = qh__vec3_dot(&normal, ¢roid); + face->normal = normal; + face->iset.indices = QH_MALLOC(qh_index_t, QH_VERTEX_SET_SIZE); + face->iset.capacity = QH_VERTEX_SET_SIZE; + face->iset.size = 0; + face->visitededges = 0; +} + +static void +qh__tetrahedron_basis(qh_context_t* context, qh_index_t vertices[3]) +{ + qh_index_t eps[6]; + int i, j = 0, k = 0, l = 0; + double max = -QH_FLT_MAX; + + qh__find_6eps(context->vertices, context->nvertices, eps); + qh__find_2dps_6eps(context->vertices, eps, &j, &k); + + for (i = 0; i < 6; ++i) { + double d2; + + if (i == j || i == k) { + continue; + } + + d2 = qh__vertex_segment_length2(context->vertices + eps[i], + context->vertices + eps[j], + context->vertices + eps[k]); + + if (d2 > max) { + max = d2; + l = i; + } + } + + vertices[0] = eps[j]; + vertices[1] = eps[k]; + vertices[2] = eps[l]; +} + +static void +qh__push_stack(qh_index_stack_t* stack, qh_index_t index) +{ + stack->begin[stack->size] = index; + stack->size++; +} + +static qh_index_t +qh__pop_stack(qh_index_stack_t* stack) +{ + qh_index_t top = -1; + + if (stack->size > 0) { + top = stack->begin[stack->size - 1]; + stack->size--; + } + + return top; +} + +static qh_index_t +qh__furthest_point_from_plane(qh_context_t* context, + qh_index_t* indices, + int nindices, + qh_vec3_t* normal, + double sdist) +{ + int i, j = -1; + double max = -QH_FLT_MAX; + + for (i = 0; i < nindices; ++i) { + qh_index_t index = indices ? *(indices + i) : i; + double dist = qh__dist_point_plane(context->vertices + index, + normal, sdist); + + if (dist > max) { + j = i; + max = dist; + } + } + + return j; +} + +static int +qh__face_can_see_vertex(qh_face_t* face, qh_vertex_t* v) +{ + qh_vec3_t tov = *v; + + qh__vec3_sub(&tov, &face->centroid); + return qh__vec3_dot(&tov, &face->normal) > 0; +} + +static int +qh__face_can_see_vertex_epsilon(qh_context_t* context, qh_face_t* face, + qh_vertex_t* v, double epsilon) +{ + double dot; + qh_vec3_t tov = *v; + + qh__vec3_sub(&tov, &face->centroid); + dot = qh__vec3_dot(&tov, &face->normal); + + if (dot > epsilon) { + return 1; + } else { + dot = fabs(dot); + + if (dot <= epsilon && dot >= 0) { + qh_vec3_t n = face->normal; + + /* allow epsilon degeneration along the face normal */ + qh__vec3_multiply(&n, epsilon); + qh__vec3_add(v, &n); + + return 1; + } + } + + return 0; +} + +static inline void +qh__assert_half_edge(qh_half_edge_t* edge, qh_context_t* context) +{ + QH_ASSERT(edge->opposite_he != -1); + QH_ASSERT(edge->he != -1); + QH_ASSERT(edge->adjacent_face != -1); + QH_ASSERT(edge->next_he != -1); + QH_ASSERT(edge->previous_he != -1); + QH_ASSERT(edge->to_vertex != -1); + QH_ASSERT(context->edges[edge->opposite_he].to_vertex != edge->to_vertex); +} + +static inline void +qh__assert_face(qh_face_t* face, qh_context_t* context) +{ + int i; + + for (i = 0; i < 3; ++i) { + qh__assert_half_edge(context->edges + face->edges[i], context); + } + + QH_ASSERT(context->valid[face->face]); +} + +#ifdef QUICKHULL_DEBUG + +void +qh__log_face(qh_context_t* context, qh_face_t const* face) { + QH_LOG("Face %ld:\n", face->face); + for (int i = 0; i < 3; ++i) { + qh_half_edge_t edge = context->edges[face->edges[i]]; + QH_LOG("\te%d %ld\n", i, edge.he); + QH_LOG("\t\te%d.opposite_he %ld\n", i, edge.opposite_he); + QH_LOG("\t\te%d.next_he %ld\n", i, edge.next_he); + QH_LOG("\t\te%d.previous_he %ld\n", i, edge.previous_he); + QH_LOG("\t\te%d.to_vertex %ld\n", i, edge.to_vertex); + QH_LOG("\t\te%d.adjacent_face %ld\n", i, edge.adjacent_face); + } + QH_LOG("\tnormal %f %f %f\n", face->normal.x, face->normal.y, + face->normal.z); + QH_LOG("\tsdist %f\n", face->sdist); + QH_LOG("\tcentroid %f %f %f\n", face->centroid.x, face->centroid.y, + face->centroid.z); +} + +static int +qh__test_hull(qh_context_t* context, double epsilon, int testiset) +{ + unsigned int i, j, k; + + for (i = 0; i < context->nvertices; ++i) { + qh_index_t vindex = i; + char valid = 1; + + for (j = 0; j < context->nfaces; ++j) { + if (!context->valid[j]) { + continue; + } + qh_face_t* face = context->faces + j; + + qh_half_edge_t* e0 = context->edges + face->edges[0]; + qh_half_edge_t* e1 = context->edges + face->edges[1]; + qh_half_edge_t* e2 = context->edges + face->edges[2]; + + if (e0->to_vertex == vindex || + e1->to_vertex == vindex || + e2->to_vertex == vindex) { + valid = 0; + break; + } + + if (testiset) { + for (k = 0; k < face->iset.size; ++k) { + if (vindex == face->iset.indices[k]) { + valid = 0; + } + } + } + } + + if (!valid) { + continue; + } + + for (j = 0; j < context->nfaces; ++j) { + if (!context->valid[j]) { + continue; + } + qh_face_t* face = context->faces + j; + + qh_vertex_t vertex = context->vertices[vindex]; + qh__vec3_sub(&vertex, &face->centroid); + if (qh__vec3_dot(&face->normal, &vertex) > epsilon) { + #ifdef QUICKHULL_DEBUG + qh__log_face(context, face); + #endif + return 0; + } + } + } + + return 1; +} +#endif /* QUICKHULL_DEBUG */ + + +static void +#ifdef QUICKHULL_DEBUG +qh__build_hull(qh_context_t* context, double epsilon, unsigned int step, + unsigned int* failurestep) +#else +qh__build_hull(qh_context_t* context, double epsilon) +#endif +{ + qh_index_t topface = qh__pop_stack(&context->facestack); + int i, j, k; + + #ifdef QUICKHULL_DEBUG + unsigned int iteration = 0; + #endif + + while (topface != -1) { + qh_face_t* face = context->faces + topface; + qh_index_t fvi, apex; + qh_vertex_t* fv; + int reversed = 0; + + #ifdef QUICKHULL_DEBUG + if (!context->valid[topface] || face->iset.size == 0 || iteration == step) + #else + if (!context->valid[topface] || face->iset.size == 0) + #endif + { + topface = qh__pop_stack(&context->facestack); + continue; + } + + #ifdef QUICKHULL_DEBUG + if (failurestep != NULL && !qh__test_hull(context, epsilon, 1)) { + if (*failurestep == 0) { + *failurestep = iteration; + break; + } + } + + iteration++; + #endif + + fvi = qh__furthest_point_from_plane(context, face->iset.indices, + face->iset.size, &face->normal, face->sdist); + fv = context->vertices + *(face->iset.indices + fvi); + + qh__assert_face(face, context); + + /* Reset visited flag for faces */ + { + for (i = 0; i < context->nfaces; ++i) { + context->faces[i].visitededges = 0; + } + } + + /* Find horizon edge */ + { + qh_index_t tovisit = topface; + qh_face_t* facetovisit = context->faces + tovisit; + + /* Release scratch */ + context->scratch.size = 0; + + while (tovisit != -1) { + if (facetovisit->visitededges >= 3) { + context->valid[tovisit] = 0; + tovisit = qh__pop_stack(&context->scratch); + facetovisit = context->faces + tovisit; + } else { + qh_index_t edgeindex = facetovisit->edges[facetovisit->visitededges]; + qh_half_edge_t* edge; + qh_half_edge_t* oppedge; + qh_face_t* adjface; + + facetovisit->visitededges++; + + edge = context->edges + edgeindex; + oppedge = context->edges + edge->opposite_he; + adjface = context->faces + oppedge->adjacent_face; + + if (!context->valid[oppedge->adjacent_face]) { continue; } + + qh__assert_half_edge(oppedge, context); + qh__assert_half_edge(edge, context); + qh__assert_face(adjface, context); + + if (!qh__face_can_see_vertex(adjface, fv)) { + qh__push_stack(&context->horizonedges, edge->he); + } else { + context->valid[tovisit] = 0; + qh__push_stack(&context->scratch, adjface->face); + } + } + } + } + + apex = face->iset.indices[fvi]; + + /* Sort horizon edges in CCW order */ + { + qh_vertex_t triangle[3]; + int vindex = 0; + qh_vec3_t v0, v1, toapex; + qh_vertex_t n; + + for (i = 0; i < context->horizonedges.size; ++i) { + qh_index_t he0 = context->horizonedges.begin[i]; + qh_index_t he0vert = context->edges[he0].to_vertex; + qh_index_t phe0 = context->edges[he0].previous_he; + qh_index_t phe0vert = context->edges[phe0].to_vertex; + + for (j = i + 2; j < context->horizonedges.size; ++j) { + qh_index_t he1 = context->horizonedges.begin[j]; + qh_index_t he1vert = context->edges[he1].to_vertex; + qh_index_t phe1 = context->edges[he1].previous_he; + qh_index_t phe1vert = context->edges[phe1].to_vertex; + + if (phe1vert == he0vert || phe0vert == he1vert) { + QH_SWAP(qh_index_t, context->horizonedges.begin[j], + context->horizonedges.begin[i + 1]); + break; + } + } + + if (vindex < 3) { + triangle[vindex++] = + context->vertices[context->edges[he0].to_vertex]; + } + } + + if (vindex == 3) { + /* Detect first triangle face ordering */ + v0 = triangle[0]; + v1 = triangle[2]; + + qh__vec3_sub(&v0, &triangle[1]); + qh__vec3_sub(&v1, &triangle[1]); + + n = qh__vec3_cross(&v0, &v1); + + /* Get the vector to the apex */ + toapex = triangle[0]; + + qh__vec3_sub(&toapex, context->vertices + apex); + + reversed = qh__vec3_dot(&n, &toapex) < 0.f; + } + } + + /* Create new faces */ + { + qh_index_t top = qh__pop_stack(&context->horizonedges); + qh_index_t last = qh__pop_stack(&context->horizonedges); + qh_index_t first = top; + int looped = 0; + + QH_ASSERT(context->newhorizonedges.size == 0); + + /* Release scratch */ + context->scratch.size = 0; + + while (!looped) { + qh_half_edge_t* prevhe; + qh_half_edge_t* nexthe; + qh_half_edge_t* oppedge; + /* qh_vec3_t normal; */ + /* qh_vertex_t fcentroid; */ + qh_index_t verts[3]; + qh_face_t* newface; + + if (last == -1) { + looped = 1; + last = first; + } + + prevhe = context->edges + last; + nexthe = context->edges + top; + + if (reversed) { + QH_SWAP(qh_half_edge_t*, prevhe, nexthe); + } + + verts[0] = prevhe->to_vertex; + verts[1] = nexthe->to_vertex; + verts[2] = apex; + + context->valid[nexthe->adjacent_face] = 0; + + oppedge = context->edges + nexthe->opposite_he; + newface = qh__next_face(context); + + qh__face_init(newface, verts, context); + + oppedge->opposite_he = context->edges[newface->edges[0]].he; + context->edges[newface->edges[0]].opposite_he = oppedge->he; + + qh__push_stack(&context->scratch, newface->face); + qh__push_stack(&context->newhorizonedges, newface->edges[0]); + + top = last; + last = qh__pop_stack(&context->horizonedges); + } + } + + /* Attach point sets to newly created faces */ + { + for (k = 0; k < context->nfaces; ++k) { + qh_face_t* f = context->faces + k; + + if (context->valid[k] || f->iset.size == 0) { + continue; + } + + if (f->visitededges == 3) { + context->valid[k] = 0; + } + + for (i = 0; i < f->iset.size; ++i) { + qh_index_t vertex = f->iset.indices[i]; + /* qh_vertex_t* v = context->vertices + vertex; */ + qh_face_t* dface = NULL; + + for (j = 0; j < context->scratch.size; ++j) { + qh_face_t* newface = context->faces + context->scratch.begin[j]; + qh_half_edge_t* e0 = context->edges + newface->edges[0]; + qh_half_edge_t* e1 = context->edges + newface->edges[1]; + qh_half_edge_t* e2 = context->edges + newface->edges[2]; + /* qh_vertex_t cv; */ + + if (e0->to_vertex == vertex || + e1->to_vertex == vertex || + e2->to_vertex == vertex) { + continue; + } + + if (qh__face_can_see_vertex_epsilon(context, newface, + context->vertices + vertex, + epsilon)) { + dface = newface; + break; + } + } + + if (dface) { + if (dface->iset.size + 1 >= dface->iset.capacity) { + dface->iset.capacity *= 2; + dface->iset.indices = QH_REALLOC(qh_index_t, + dface->iset.indices, dface->iset.capacity); + } + + dface->iset.indices[dface->iset.size++] = vertex; + } + } + + f->iset.size = 0; + } + } + + /* Link new faces together */ + { + for (i = 0; i < context->newhorizonedges.size; ++i) { + qh_index_t phe0, nhe1; + qh_half_edge_t* he0; + qh_half_edge_t* he1; + int ii; + + if (reversed) { + ii = (i == 0) ? context->newhorizonedges.size - 1 : (i-1); + } else { + ii = (i+1) % context->newhorizonedges.size; + } + + phe0 = context->edges[context->newhorizonedges.begin[i]].previous_he; + nhe1 = context->edges[context->newhorizonedges.begin[ii]].next_he; + + he0 = context->edges + phe0; + he1 = context->edges + nhe1; + + QH_ASSERT(he1->to_vertex == apex); + QH_ASSERT(he0->opposite_he == -1); + QH_ASSERT(he1->opposite_he == -1); + + he0->opposite_he = he1->he; + he1->opposite_he = he0->he; + } + + context->newhorizonedges.size = 0; + } + + /* Push new face to stack */ + { + for (i = 0; i < context->scratch.size; ++i) { + qh_face_t* face = context->faces + context->scratch.begin[i]; + + if (face->iset.size > 0) { + qh__push_stack(&context->facestack, face->face); + } + } + + /* Release scratch */ + context->scratch.size = 0; + } + + topface = qh__pop_stack(&context->facestack); + + /* TODO: push all non-valid faces for reuse in face stack memory pool */ + } +} + +#ifdef QUICKHULL_FILES +void +qh_mesh_export(qh_mesh_t const* mesh, char const* filename) +{ + FILE* objfile = fopen(filename, "wt"); + fprintf(objfile, "o\n"); + + for (int i = 0; i < mesh->nvertices; ++i) { + qh_vertex_t v = mesh->vertices[i]; + fprintf(objfile, "v %f %f %f\n", v.x, v.y, v.z); + } + + for (int i = 0; i < mesh->nnormals; ++i) { + qh_vec3_t n = mesh->normals[i]; + fprintf(objfile, "vn %f %f %f\n", n.x, n.y, n.z); + } + + for (int i = 0, j = 0; i < mesh->nindices; i += 3, j++) { + fprintf(objfile, "f %u/%u %u/%u %u/%u\n", + mesh->indices[i+0] + 1, mesh->normalindices[j] + 1, + mesh->indices[i+1] + 1, mesh->normalindices[j] + 1, + mesh->indices[i+2] + 1, mesh->normalindices[j] + 1); + } + + fclose(objfile); +} +#endif /* QUICKHULL_FILES */ + +static qh_face_t* +qh__build_tetrahedron(qh_context_t* context, double epsilon) +{ + int i, j; + qh_index_t vertices[3]; + qh_index_t apex; + qh_face_t* faces; + qh_vertex_t normal, centroid, vapex, tcentroid; + + /* Get the initial tetrahedron basis (first face) */ + qh__tetrahedron_basis(context, &vertices[0]); + + /* Find apex from the tetrahedron basis */ + { + double sdist; + qh_vec3_t v0, v1; + + v0 = context->vertices[vertices[1]]; + v1 = context->vertices[vertices[2]]; + + qh__vec3_sub(&v0, context->vertices + vertices[0]); + qh__vec3_sub(&v1, context->vertices + vertices[0]); + + normal = qh__vec3_cross(&v0, &v1); + qh__vec3_normalize(&normal); + + centroid = qh__face_centroid(vertices, context); + sdist = qh__vec3_dot(&normal, ¢roid); + + apex = qh__furthest_point_from_plane(context, NULL, + context->nvertices, &normal, sdist); + vapex = context->vertices[apex]; + + qh__vec3_sub(&vapex, ¢roid); + + /* Whether the face is looking towards the apex */ + if (qh__vec3_dot(&vapex, &normal) > 0) { + QH_SWAP(qh_index_t, vertices[1], vertices[2]); + } + } + + faces = qh__next_face(context); + qh__face_init(&faces[0], vertices, context); + + /* Build faces from the tetrahedron basis to the apex */ + { + qh_index_t facevertices[3]; + for (i = 0; i < 3; ++i) { + qh_half_edge_t* edge = context->edges + faces[0].edges[i]; + qh_half_edge_t prevedge = context->edges[edge->previous_he]; + qh_face_t* face = faces+i+1; + qh_half_edge_t* e0; + + facevertices[0] = edge->to_vertex; + facevertices[1] = prevedge.to_vertex; + facevertices[2] = apex; + + qh__next_face(context); + qh__face_init(face, facevertices, context); + + e0 = context->edges + faces[i+1].edges[0]; + edge->opposite_he = e0->he; + e0->opposite_he = edge->he; + } + } + + /* Attach half edges to faces tied to the apex */ + { + for (i = 0; i < 3; ++i) { + qh_face_t* face; + qh_face_t* nextface; + qh_half_edge_t* e1; + qh_half_edge_t* e2; + + j = (i+2) % 3; + + face = faces+i+1; + nextface = faces+j+1; + + e1 = context->edges + face->edges[1]; + e2 = context->edges + nextface->edges[2]; + + QH_ASSERT(e1->opposite_he == -1); + QH_ASSERT(e2->opposite_he == -1); + + e1->opposite_he = e2->he; + e2->opposite_he = e1->he; + + qh__assert_half_edge(e1, context); + qh__assert_half_edge(e2, context); + } + } + + /* Create initial point set; every point is */ + /* attached to the first face it can see */ + { + for (i = 0; i < context->nvertices; ++i) { + /* qh_vertex_t* v; */ + qh_face_t* dface = NULL; + + if (vertices[0] == i || vertices[1] == i || vertices[2] == i) { + continue; + } + + for (j = 0; j < 4; ++j) { + if (qh__face_can_see_vertex_epsilon(context, context->faces + j, + context->vertices + i, epsilon)) { + dface = context->faces + j; + break; + } + } + + if (dface) { + int valid = 1; + int j; + + for (j = 0; j < 3; ++j) { + qh_half_edge_t* e = context->edges + dface->edges[j]; + if (i == e->to_vertex) { + valid = 0; + break; + } + } + + if (!valid) { continue; } + + if (dface->iset.size + 1 >= dface->iset.capacity) { + dface->iset.capacity *= 2; + dface->iset.indices = QH_REALLOC(qh_index_t, + dface->iset.indices, dface->iset.capacity); + } + + dface->iset.indices[dface->iset.size++] = i; + } + } + } + + /* Add initial tetrahedron faces to the face stack */ + tcentroid.x = tcentroid.y = tcentroid.z = 0.0; + for (i = 0; i < 4; ++i) { + context->valid[i] = 1; + qh__assert_face(context->faces + i, context); + qh__push_stack(&context->facestack, i); + qh__vec3_add(&tcentroid, &context->faces[i].centroid); + } + + /* Assign the tetrahedron centroid */ + qh__vec3_multiply(&tcentroid, 0.25); + context->centroid = tcentroid; + + QH_ASSERT(context->nedges == context->nfaces * 3); + QH_ASSERT(context->nfaces == 4); + QH_ASSERT(context->facestack.size == 4); + + return faces; +} + +static void +qh__remove_vertex_duplicates(qh_context_t* context, double epsilon) +{ + int i, j, k; + for (i = 0; i < context->nvertices; ++i) { + qh_vertex_t* v = context->vertices + i; + if (v->x == 0) v->x = 0; + if (v->y == 0) v->y = 0; + if (v->z == 0) v->z = 0; + for (j = i + 1; j < context->nvertices; ++j) { + if (qh__vertex_equals_epsilon(context->vertices + i, + context->vertices + j, epsilon)) + { + for (k = j; k < context->nvertices - 1; ++k) { + context->vertices[k] = context->vertices[k+1]; + } + context->nvertices--; + } + } + } +} + +static void +qh__init_context(qh_context_t* context, qh_vertex_t const* vertices, + unsigned int nvertices) +{ + /* TODO: */ + /* size_t nedges = 3 * nvertices - 6; */ + /* size_t nfaces = 2 * nvertices - 4; */ + unsigned int nfaces = nvertices * (nvertices - 1); + unsigned int nedges = nfaces * 3; + + context->edges = QH_MALLOC(qh_half_edge_t, nedges); + context->faces = QH_MALLOC(qh_face_t, nfaces); + context->facestack.begin = QH_MALLOC(qh_index_t, nfaces); + context->scratch.begin = QH_MALLOC(qh_index_t, nfaces); + context->horizonedges.begin = QH_MALLOC(qh_index_t, nedges); + context->newhorizonedges.begin = QH_MALLOC(qh_index_t, nedges); + context->valid = QH_MALLOC(char, nfaces); + + if (!(context->edges && + context->faces && + context->facestack.begin && + context->scratch.begin && + context->horizonedges.begin && + context->newhorizonedges.begin && + context->valid)) { +# ifdef HAVE_JWXYZ + jwxyz_abort ("%s: out of memory", progname); +# else + fprintf (stderr, "%s: out of memory\n", progname); + exit (1); +# endif + } + + + context->vertices = QH_MALLOC(qh_vertex_t, nvertices); + memcpy(context->vertices, vertices, sizeof(qh_vertex_t) * nvertices); + + context->nvertices = nvertices; + context->nedges = 0; + context->nfaces = 0; + context->facestack.size = 0; + context->scratch.size = 0; + context->horizonedges.size = 0; + context->newhorizonedges.size = 0; + + #ifdef QUICKHULL_DEBUG + context->maxfaces = nfaces; + context->maxedges = nedges; + #endif +} + +static void +qh__free_context(qh_context_t* context) +{ + int i; + + for (i = 0; i < context->nfaces; ++i) { + QH_FREE(context->faces[i].iset.indices); + context->faces[i].iset.size = 0; + } + + context->nvertices = 0; + context->nfaces = 0; + + QH_FREE(context->edges); + + QH_FREE(context->faces); + QH_FREE(context->facestack.begin); + QH_FREE(context->scratch.begin); + QH_FREE(context->horizonedges.begin); + QH_FREE(context->newhorizonedges.begin); + QH_FREE(context->vertices); + QH_FREE(context->valid); +} + +void +qh_free_mesh(qh_mesh_t mesh) +{ + QH_FREE(mesh.vertices); + QH_FREE(mesh.indices); + QH_FREE(mesh.normalindices); + QH_FREE(mesh.normals); +} + +static double +qh__compute_epsilon(qh_vertex_t const* vertices, unsigned int nvertices) +{ + double epsilon; + unsigned int i; + + double maxxi = -QH_FLT_MAX; + double maxyi = -QH_FLT_MAX; + + for (i = 0; i < nvertices; ++i) { + double fxi = fabs(vertices[i].x); + double fyi = fabs(vertices[i].y); + + if (fxi > maxxi) { + maxxi = fxi; + } + if (fyi > maxyi) { + maxyi = fyi; + } + } + + epsilon = 2 * (maxxi + maxyi) * QH_FLT_EPS; + + return epsilon; +} + +qh_mesh_t +qh_quickhull3d(qh_vertex_t const* vertices, unsigned int nvertices) +{ + qh_mesh_t m; + qh_context_t context; + /* unsigned int* indices; */ + unsigned int nfaces = 0, i, index, nindices; + double epsilon; + + epsilon = qh__compute_epsilon(vertices, nvertices); + + qh__init_context(&context, vertices, nvertices); + + qh__remove_vertex_duplicates(&context, epsilon); + + /* Build the initial tetrahedron */ + qh__build_tetrahedron(&context, epsilon); + + /* Build the convex hull */ + #ifdef QUICKHULL_DEBUG + qh__build_hull(&context, epsilon, -1, NULL); + #else + qh__build_hull(&context, epsilon); + #endif + + /* QH_ASSERT(qh__test_hull(&context, epsilon)); */ + + for (i = 0; i < context.nfaces; ++i) { + if (context.valid[i]) { nfaces++; } + } + + nindices = nfaces * 3; + + m.normals = QH_MALLOC(qh_vertex_t, nfaces); + m.normalindices = QH_MALLOC(unsigned int, nfaces); + m.vertices = QH_MALLOC(qh_vertex_t, nindices); + m.indices = QH_MALLOC(unsigned int, nindices); + m.nindices = nindices; + m.nnormals = nfaces; + m.nvertices = 0; + + { + index = 0; + for (i = 0; i < context.nfaces; ++i) { + if (!context.valid[i]) { continue; } + m.normals[index] = context.faces[i].normal; + index++; + } + + index = 0; + for (i = 0; i < context.nfaces; ++i) { + if (!context.valid[i]) { continue; } + m.normalindices[index] = index; + index++; + } + + index = 0; + for (i = 0; i < context.nfaces; ++i) { + if (!context.valid[i]) { continue; } + m.indices[index+0] = index+0; + m.indices[index+1] = index+1; + m.indices[index+2] = index+2; + index += 3; + } + + for (i = 0; i < context.nfaces; ++i) { + if (!context.valid[i]) { continue; } + qh_half_edge_t e0 = context.edges[context.faces[i].edges[0]]; + qh_half_edge_t e1 = context.edges[context.faces[i].edges[1]]; + qh_half_edge_t e2 = context.edges[context.faces[i].edges[2]]; + + m.vertices[m.nvertices++] = context.vertices[e0.to_vertex]; + m.vertices[m.nvertices++] = context.vertices[e1.to_vertex]; + m.vertices[m.nvertices++] = context.vertices[e2.to_vertex]; + } + } + + qh__free_context(&context); + + return m; +} diff --git a/hacks/glx/quickhull.h b/hacks/glx/quickhull.h new file mode 100644 index 0000000..0dd0faa --- /dev/null +++ b/hacks/glx/quickhull.h @@ -0,0 +1,56 @@ +/* quickhull, Copyright (c) 2016 Karim Naaji, karim.naaji@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE +*/ + +#ifndef __QUICKHULL_H__ +#define __QUICKHULL_H__ + +typedef struct qh_vertex { + union { + double v[3]; + struct { + double x; + double y; + double z; + }; + }; +} qh_vertex_t; + +typedef qh_vertex_t qh_vec3_t; + +typedef struct qh_mesh { + qh_vertex_t* vertices; + qh_vec3_t* normals; + unsigned int* indices; + unsigned int* normalindices; + unsigned int nindices; + unsigned int nvertices; + unsigned int nnormals; +} qh_mesh_t; + +extern qh_mesh_t qh_quickhull3d(qh_vertex_t const* vertices, + unsigned int nvertices); + +extern void qh_free_mesh(qh_mesh_t mesh); + +#ifdef QUICKHULL_FILES +extern void qh_mesh_export(qh_mesh_t const* mesh, char const* filename); +#endif + +#endif /* __QUICKHULL_H__ */ diff --git a/hacks/glx/raverhoop.c b/hacks/glx/raverhoop.c new file mode 100644 index 0000000..5cf35f7 --- /dev/null +++ b/hacks/glx/raverhoop.c @@ -0,0 +1,767 @@ +/* raverhoop, Copyright (c) 2016 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Simulates an LED hula hoop in a dark room. Oontz oontz oontz. + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*ncolors: 12 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_hoop 0 +# define release_hoop 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "False" +#define DEF_WANDER "False" +#define DEF_LIGHTS "200" +#define DEF_SPEED "1.0" +#define DEF_LIGHT_SPEED "1.0" +#define DEF_SUSTAIN "1.0" + +typedef struct { + GLfloat x,y,z; +} XYZ; + +typedef struct afterimage afterimage; +struct afterimage { + GLfloat color[4]; + XYZ position; + afterimage *next; +}; + +typedef struct { + GLfloat color[4]; + int duty_cycle[10]; /* off, on, off, on... values add to 100 */ + GLfloat ratio; + Bool on; +} light; + + +typedef struct oscillator oscillator; +struct oscillator { + GLfloat ratio, from, to, speed, *var; + int remaining; + oscillator *next; +}; + + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int nlights; + light *lights; + GLfloat radius; + GLfloat axial_radius; + XYZ midpoint; + GLfloat tilt; + GLfloat spin; + GLfloat th; + GLfloat speed; + afterimage *trail; + oscillator *oscillators; + +} hoop_configuration; + +static hoop_configuration *bps = NULL; + +static Bool do_spin; +static Bool do_wander; +static int nlights; +static GLfloat speed, light_speed, sustain; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-lights", ".lights", XrmoptionSepArg, 0 }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-light-speed", ".lightSpeed", XrmoptionSepArg, 0 }, + { "-sustain", ".sustain", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&nlights, "lights", "Lights", DEF_LIGHTS, t_Int}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&light_speed, "lightSpeed", "Speed", DEF_LIGHT_SPEED, t_Float}, + {&sustain, "sustain", "Sustain", DEF_SUSTAIN, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt hoop_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static void +decay_afterimages (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + afterimage *prev = 0; + afterimage *a = bp->trail; + GLfloat tick = 0.05 / sustain; + + while (a) + { + afterimage *next = a->next; + a->color[3] -= tick; + if (a->color[3] < 0) + { + if (prev) + prev->next = next; + else + bp->trail = next; + free (a); + } + else + prev = a; + a = next; + } +} + +static void +add_afterimage (ModeInfo *mi, GLfloat x, GLfloat y, GLfloat z, + GLfloat color[4]) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + afterimage *a = (afterimage *) calloc (1, sizeof (*a)); + afterimage *b; + a->position.x = x; + a->position.y = y; + a->position.z = z; + memcpy (a->color, color, sizeof(a->color)); + + /* Put it at the end so that the older, dimmer ones are laid down on + the frame buffer before the newer, brighter ones. */ + if (!bp->trail) + bp->trail = a; + else + { + for (b = bp->trail; b->next; b = b->next) + ; + b->next = a; + } +} + + +static void +tick_light (light *L) +{ + int i; + int n = 0; + + L->ratio += 0.05 * light_speed; + while (L->ratio > 1) + L->ratio -= 1; + + for (i = 0; i < countof(L->duty_cycle); i++) + { + n += L->duty_cycle[i]; + if (n > 100) abort(); + if (n / 100.0 > L->ratio) + { + L->on = (i & 1); + break; + } + } +} + + + +static void +tick_hoop (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat m0[16]; + int i; + + glGetFloatv (GL_MODELVIEW_MATRIX, m0); + + for (i = 0; i < bp->nlights; i++) + { + light *L = &bp->lights[i]; + GLfloat m1[16]; + GLfloat th = M_PI * 2 * i / bp->nlights; + GLfloat x = cos (th); + GLfloat y = sin (th); + GLfloat z; + + tick_light (L); + if (! L->on) + continue; + + glPushMatrix(); + + glTranslatef (bp->midpoint.x, bp->midpoint.y, bp->midpoint.z); + glRotatef (bp->th * 180 / M_PI, 0, 0, 1); + glRotatef (bp->tilt, 0, 1, 0); + glRotatef (bp->spin, 1, 0, 0); + glTranslatef (x * bp->radius, y * bp->radius, 0); + glGetFloatv (GL_MODELVIEW_MATRIX, m1); + glPopMatrix(); + + /* After all of our translations and rotations, figure out where + it actually ended up. + */ + x = m1[12] - m0[12]; + y = m1[13] - m0[13]; + z = m1[14] - m0[14]; + add_afterimage (mi, x, y, z, L->color); + } +} + + +static void +draw_lights (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + afterimage *a; + GLfloat m[4][4]; + + if (wire) + { + int n = 360; + int i; + glPushMatrix(); + + glBegin (GL_LINES); + glVertex3f (0, 0, -bp->radius); + glVertex3f (0, 0, bp->radius); + glEnd(); + + glTranslatef (bp->midpoint.x, bp->midpoint.y, bp->midpoint.z); + glRotatef (bp->th * 180 / M_PI, 0, 0, 1); + glRotatef (bp->tilt, 0, 1, 0); + glRotatef (bp->spin, 1, 0, 0); + + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + for (i = 0; i <= n; i++) + { + GLfloat th = i * M_PI * 2 / n; + glVertex3f (bp->radius * -cos(th), + bp->radius * -sin(th), 0); + } + for (i = 0; i <= n; i++) + { + GLfloat th = i * M_PI * 2 / n; + glVertex3f (bp->axial_radius * -cos(th), + bp->axial_radius * -sin(th), 0); + } + glEnd(); + glPopMatrix(); + } + + /* Billboard the lights to always face the camera */ + glGetFloatv (GL_MODELVIEW_MATRIX, &m[0][0]); + m[0][0] = 1; m[1][0] = 0; m[2][0] = 0; + m[0][1] = 0; m[1][1] = 1; m[2][1] = 0; + m[0][2] = 0; m[1][2] = 0; m[2][2] = 1; + glLoadIdentity(); + glMultMatrixf (&m[0][0]); + + for (a = bp->trail; a; a = a->next) + { + glPushMatrix(); + + glTranslatef (a->position.x, a->position.y, a->position.z); + + if (wire) + { + GLfloat c[3]; + c[0] = a->color[0] * a->color[3]; + c[1] = a->color[1] * a->color[3]; + c[2] = a->color[2] * a->color[3]; + glColor3fv (c); + } + else + glColor4fv (a->color); + + glRotatef (45, 0, 0, 1); + glScalef (0.15, 0.15, 0.15); + glBegin (GL_QUADS); + glTexCoord2f (0, 0); glVertex3f (-1, -1, 0); + glTexCoord2f (1, 0); glVertex3f ( 1, -1, 0); + glTexCoord2f (1, 1); glVertex3f ( 1, 1, 0); + glTexCoord2f (0, 1); glVertex3f (-1, 1, 0); + glEnd(); + mi->polygon_count++; + + glPopMatrix(); + } +} + + +static GLfloat +ease_fn (GLfloat r) +{ + return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */ +} + + +static GLfloat +ease_ratio (GLfloat r) +{ + GLfloat ease = 0.35; + if (r <= 0) return 0; + else if (r >= 1) return 1; + else if (r <= ease) return ease * ease_fn (r / ease); + else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease); + else return r; +} + + +static void +tick_oscillators (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + oscillator *prev = 0; + oscillator *a = bp->oscillators; + GLfloat tick = 0.1 / speed; + + while (a) + { + oscillator *next = a->next; + a->ratio += tick * a->speed; + if (a->ratio > 1) + a->ratio = 1; + + *a->var = a->from + (a->to - a->from) * ease_ratio (a->ratio); + + if (a->ratio < 1) /* mid cycle */ + prev = a; + else if (--a->remaining <= 0) /* ended, and expired */ + { + if (prev) + prev->next = next; + else + bp->oscillators = next; + free (a); + } + else /* keep going the other way */ + { + GLfloat swap = a->from; + a->from = a->to; + a->to = swap; + a->ratio = 0; + prev = a; + } + + a = next; + } +} + + +static void +calm_oscillators (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + oscillator *a; + for (a = bp->oscillators; a && a->next; a = a->next) + a->remaining = 1; +} + + +static void +add_oscillator (ModeInfo *mi, GLfloat *var, GLfloat speed, GLfloat to, + int repeat) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + oscillator *a; + + /* If an oscillator is already running on this variable, don't + add another. */ + for (a = bp->oscillators; a && a->next; a = a->next) + if (a->var == var) + return; + + a = (oscillator *) calloc (1, sizeof (*a)); + if (repeat <= 0) abort(); + a->ratio = 0; + a->from = *var; + a->to = to; + a->speed = speed; + a->var = var; + a->remaining = repeat; + a->next = bp->oscillators; + bp->oscillators = a; +# if 0 + fprintf (stderr, "%s: %3d %6.2f -> %6.2f %s\n", + progname, repeat, *var, to, + (var == &bp->midpoint.z ? "z" : + var == &bp->tilt ? "tilt" : + var == &bp->axial_radius ? "r" : + var == &bp->speed ? "speed" : "?")); +# endif +} + + +static void +add_random_oscillator (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + int n = random() % 12; + switch (n) { + case 0: case 1: case 2: + add_oscillator (mi, &bp->midpoint.z, 1, + bp->radius * (0.8 + frand(0.2)) + * (random() & 1 ? 1 : -1), + (3 + (random() % 10))); + break; + case 3: case 4: case 5: + add_oscillator (mi, &bp->tilt, 1, + -(GLfloat) (random() % 15), + 3 + (random() % 20)); + break; + case 6: case 7: case 8: + add_oscillator (mi, &bp->axial_radius, 1, + 0.1 + bp->radius * frand(1.4), + 1 + (random() % 4)); + break; + case 9: case 10: + add_oscillator (mi, &bp->speed, 3, + (0.7 + frand(0.9)) * (random() & 1 ? 1 : -1), + ((random() % 5) + ? 1 + : 2 + (random() % 5))); + break; + case 11: + add_oscillator (mi, &bp->spin, 0.1, + 180 * (1 + (random() % 2)), + 2 * (1 + (random() % 5))); + break; + default: + abort(); + break; + } +} + + +static void +randomize_colors (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + int ncolors = MI_NCOLORS(mi); + GLfloat *colors; + int ncycles; + int i; + + if (ncolors < 1) + ncolors = 1; + if (ncolors > bp->nlights) + ncolors = bp->nlights; + + if (! (random() % 10)) + ncolors = 1; + + colors = calloc (ncolors, 4 * sizeof(*colors)); + for (i = 0; i < ncolors; i++) + { + GLfloat *c = &colors[i * 4]; +# define QUANTIZE() (((random() % 16) << 4) | 0xF) / 255.0 + c[0] = QUANTIZE(); + c[1] = QUANTIZE(); + c[2] = QUANTIZE(); + c[3] = 1; + } + + switch (random() % 5) { + case 0: ncycles = 1; break; + case 2: ncycles = ncolors * (1 + (random() % 5)); break; + default: ncycles = ncolors; break; + } + + for (i = 0; i < bp->nlights; i++) + { + light *L = &bp->lights[i]; + int n = i * ncolors / bp->nlights; + int m = i * ncycles / bp->nlights; + if (n >= ncolors) abort(); + if (m >= ncycles) abort(); + memcpy (L->color, &colors[n], sizeof (L->color)); + + if (ncycles <= 1) + { + L->duty_cycle[0] = 0; + L->duty_cycle[1] = 100; + } + else if (m & 1) + { + L->duty_cycle[0] = 50; + L->duty_cycle[1] = 50; + } + else + { + L->duty_cycle[0] = 0; + L->duty_cycle[1] = 50; + L->duty_cycle[2] = 50; + } + } + free (colors); +} + + +static void +move_hoop (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + + bp->th += 0.2 * speed * bp->speed; + while (bp->th > M_PI*2) + bp->th -= M_PI*2; + while (bp->th < 0) + bp->th += M_PI*2; + + bp->midpoint.x = bp->axial_radius * cos (bp->th); + bp->midpoint.y = bp->axial_radius * sin (bp->th); + + tick_oscillators (mi); + + if (! (random() % 80)) + add_random_oscillator (mi); + + if (! (random() % 120)) + randomize_colors (mi); +} + + +static void +build_texture (ModeInfo *mi) +{ + int x, y; + int size = 128; + int s2 = size / 2; + int bpl = size * 2; + unsigned char *data = malloc (bpl * size); + + for (y = 0; y < size; y++) + { + for (x = 0; x < size; x++) + { + double dist = (sqrt (((s2 - x) * (s2 - x)) + + ((s2 - y) * (s2 - y))) + / s2); + unsigned char *c = &data [y * bpl + x * 2]; + c[0] = 0xFF; + c[1] = 0xFF * sin (dist > 1 ? 0 : (1 - dist)); + } + } + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + check_gl_error ("texture param"); + + glTexImage2D (GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, size, size, 0, + GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data); + check_gl_error ("light texture"); + free (data); +} + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_hoop (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +hoop_handle_event (ModeInfo *mi, XEvent *event) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') + { + randomize_colors (mi); + calm_oscillators (mi); + add_random_oscillator (mi); + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_hoop (ModeInfo *mi) +{ + hoop_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_hoop (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glDisable (GL_LIGHTING); + glDisable (GL_DEPTH_TEST); + glEnable (GL_CULL_FACE); + glEnable (GL_NORMALIZE); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE); + glPolygonMode (GL_FRONT, GL_FILL); + glShadeModel (GL_FLAT); + + if (! wire) + { + build_texture (mi); + glEnable (GL_TEXTURE_2D); + } + + { + double spin_speed = 0.3; + double wander_speed = 0.005; + double spin_accel = 2.0; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False); + bp->trackball = gltrackball_init (True); + } + + bp->radius = 30; + bp->axial_radius = bp->radius * 0.3; + bp->tilt = - (GLfloat) (5 + (random() % 12)); + bp->speed = (random() % 1 ? 1 : -1); + bp->nlights = nlights; + bp->lights = (light *) calloc (bp->nlights, sizeof (*bp->lights)); + randomize_colors (mi); + move_hoop (mi); + add_random_oscillator (mi); +} + + +ENTRYPOINT void +draw_hoop (ModeInfo *mi) +{ + hoop_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 7, + (y - 0.5) * 0.5, + (z - 0.5) * 15); + + gltrackball_rotate (bp->trackball); + glRotatef (current_device_rotation(), 0, 0, 1); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glScalef (0.2, 0.2, 0.2); + +# ifdef HAVE_MOBILE + glScalef (0.7, 0.7, 0.7); +# endif + + glRotatef (70, 1, 0, 0); + + if (! bp->button_down_p) + move_hoop (mi); + + decay_afterimages (mi); + tick_hoop (mi); + draw_lights (mi); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("RaverHoop", raverhoop, hoop) + +#endif /* USE_GL */ diff --git a/hacks/glx/raverhoop.man b/hacks/glx/raverhoop.man new file mode 100644 index 0000000..e7e70fa --- /dev/null +++ b/hacks/glx/raverhoop.man @@ -0,0 +1,83 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +raverhoop - Simulates an LED hula hoop in a dark room. +.SH SYNOPSIS +.B raverhoop +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-ncolors \fInumber\fP] +[\-lights \fInumber\fP] +[\-speed \fInumber\fP] +[\-light-speed \fInumber\fP] +[\-sustain \fInumber\fP] +[\-no-wander] +[\-no-spin] +[\-fps] +.SH DESCRIPTION +Simulates an LED hula hoop in a dark room. Oontz oontz oontz. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-ncolors \fInumber\fP +The number of colors to use on the hoop. Default: 12. +.TP 8 +.B \-lights \fInumber\fP +The number of LEDs comprising the hoop. Default: 200. +.TP 8 +.B \-speed \fInumber\fP +Speed of the motion of the object. +2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-light-speed \fInumber\fP +Speed at which the lights animate. +2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-sustain \fInumber\fP +Speed at which the after-images / vapor trails fade away. +2.0 means they last twice as long, 0.5 means half as long. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the scene itself should spin. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/razzledazzle.c b/hacks/glx/razzledazzle.c new file mode 100644 index 0000000..a3c8f98 --- /dev/null +++ b/hacks/glx/razzledazzle.c @@ -0,0 +1,725 @@ +/* razzledazzle, Copyright (c) 2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*ncolors: 2 \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_dazzle 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "normals.h" +#include "gllist.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPEED "1.0" +#define DEF_DENSITY "5.0" +#define DEF_THICKNESS "0.1" +#define DEF_MODE "Random" + +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) +#undef RANDSIGN +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +extern const struct gllist + *ships_ship1, *ships_ship2, *ships_ship3, *ships_ship4, + *ships_ship5, *ships_ship6, *ships_ship7, *ships_ship8; + +static const struct gllist * const *all_ships[] = { + &ships_ship1, &ships_ship2, &ships_ship3, &ships_ship4, + &ships_ship5, &ships_ship6, &ships_ship7, &ships_ship8, +}; + + +typedef enum { LEFT, RIGHT, UP, DOWN } direction; + +typedef struct node node; + +struct node { + long gx, gy; + GLfloat x, y; + GLfloat dx, dy; + int nstripes; + Bool horiz_p; + Bool drawn_p; + GLfloat color1[4], color2[4]; +}; + +typedef struct { + GLXContext *glx_context; + Bool button_down_p; + GLfloat xoff, yoff, dx, dy; + node *nodes; + node *dragging; + int drag_x, drag_y; + int ncolors; + XColor *colors; + GLuint *dlists; + enum { SHIPS, FLAT, RANDOM } mode; + int which_ship; + long frames; +} dazzle_configuration; + +static dazzle_configuration *bps = NULL; + +static GLfloat speed, thickness, density; +static char *mode_arg; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-density", ".density", XrmoptionSepArg, 0 }, + { "-mode", ".mode", XrmoptionSepArg, 0 }, + { "-ships", ".mode", XrmoptionNoArg, "ships" }, + { "-flat", ".mode", XrmoptionNoArg, "flat" }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float}, + {&density, "density", "Density", DEF_DENSITY, t_Float}, + {&mode_arg, "mode", "Mode", DEF_MODE, t_String}, +}; + +ENTRYPOINT ModeSpecOpt dazzle_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + +static void +draw_grid (ModeInfo *mi, int gx, int gy) +{ + dazzle_configuration *bp = &bps[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + long x, y; + long wh = density * 2; + + if (wire) + glColor3f (1, 1, 1); + + if (!wire) + glBegin (GL_QUADS); + + for (y = 0; y < wh; y++) + for (x = 0; x < wh; x++) + { + node *n0 = &bp->nodes[(y % wh) * wh + (x % wh)]; + node *n1 = &bp->nodes[(y % wh) * wh + ((x+1) % wh)]; + node *n2 = &bp->nodes[((y+1) % wh) * wh + ((x+1) % wh)]; + node *n3 = &bp->nodes[((y+1) % wh) * wh + (x % wh)]; + int nstripes, i; + Bool horiz_p, visible; + GLfloat x0, y0, x1, y1, x2, y2, x3, y3; + GLfloat xoff = (x < wh-1 ? 0 : wh); + GLfloat yoff = (y < wh-1 ? 0 : wh); + GLfloat bx = fmod ((double) bp->xoff, 2.0); + GLfloat by = fmod ((double) bp->yoff, 2.0); + + bx += gx*2; + by += gy*2; + + if (wire) + { + GLfloat a; + glColor3f (0, 0, 1); + glBegin (GL_LINE_LOOP); + for (a = 0; a < 360; a += 10) + glVertex3f ((n0->x / density-1) + 0.05 * cos(a * M_PI/180) + bx, + (n0->y / density-1) + 0.05 * sin(a * M_PI/180) + by, + 0); + glEnd(); + } + + x0 = n0->x / density - 1 + bx; + y0 = n0->y / density - 1 + by; + + x1 = (n1->x+xoff) / density - 1 + bx; + y1 = n1->y / density - 1 + by; + x2 = (n2->x+xoff) / density - 1 + bx; + y2 = (n2->y+yoff) / density - 1 + by; + x3 = n3->x / density - 1 + bx; + y3 = (n3->y+yoff) / density - 1 + by; + + if (wire) + { + if (gx == 0 && gy == 0) + { + glLineWidth (4); + glColor3f(1, 0, 0); + } + else + glColor3f(0.5, 0, 0.5); + if (wire) glBegin (GL_LINE_LOOP); + glVertex3f (x0, y0, 0); + glVertex3f (x1, y1, 0); + glVertex3f (x2, y2, 0); + glVertex3f (x3, y3, 0); + mi->polygon_count++; + if (wire) glEnd(); + glLineWidth (1); + } + + /* This isn't quite right: just because all corners are off screen + doesn't mean the quad isn't visible. We need to intersect the + edges with the screen rectangle. + */ + { + GLfloat max = 0.75; + visible = ((x0 >= -max && y0 >= -max && x0 <= max && y0 <= max) || + (x1 >= -max && y1 >= -max && x1 <= max && y1 <= max) || + (x2 >= -max && y2 >= -max && x2 <= max && y2 <= max) || + (x3 >= -max && y3 >= -max && x3 <= max && y3 <= max)); + } + + if (!visible) continue; + + if (visible) + n0->drawn_p = True; + + nstripes = n0->nstripes; + horiz_p = n0->horiz_p; + + for (i = 0; i < nstripes; i++) + { + GLfloat ss = (GLfloat) i / nstripes; + GLfloat ss1 = (GLfloat) (i+1) / nstripes; + if (i & 1) + glColor4fv (n0->color1); + else if (wire) + continue; + else + glColor4fv (n0->color2); + + if (horiz_p) + { + x0 = n0->x + (n3->x - n0->x) * ss; + y0 = n0->y + ((n3->y+yoff) - n0->y) * ss; + x1 = (n1->x+xoff) + ((n2->x+xoff) - (n1->x+xoff)) * ss; + y1 = n1->y + ((n2->y+yoff) - n1->y) * ss; + + x2 = (n1->x+xoff) + ((n2->x+xoff) - (n1->x+xoff)) * ss1; + y2 = n1->y + ((n2->y+yoff) - n1->y) * ss1; + x3 = n0->x + (n3->x - n0->x) * ss1; + y3 = n0->y + ((n3->y+yoff) - n0->y) * ss1; + } + else + { + x0 = n0->x + ((n1->x+xoff) - n0->x) * ss; + y0 = n0->y + (n1->y - n0->y) * ss; + x1 = n3->x + ((n2->x+xoff) - n3->x) * ss; + y1 = (n3->y+yoff) + ((n2->y+yoff) - (n3->y+yoff)) * ss; + + x2 = n3->x + ((n2->x+xoff) - n3->x) * ss1; + y2 = (n3->y+yoff) + ((n2->y+yoff) - (n3->y+yoff)) * ss1; + x3 = n0->x + ((n1->x+xoff) - n0->x) * ss1; + y3 = n0->y + (n1->y - n0->y) * ss1; + } + + if (wire) glBegin (GL_LINES); + glVertex3f (x0 / density - 1 + bx, y0 / density - 1 + by, 0); + glVertex3f (x1 / density - 1 + bx, y1 / density - 1 + by, 0); + glVertex3f (x2 / density - 1 + bx, y2 / density - 1 + by, 0); + glVertex3f (x3 / density - 1 + bx, y3 / density - 1 + by, 0); + mi->polygon_count++; + if (wire) glEnd(); + } + } + + if (!wire) + glEnd(); +} + + +static void +move_grid (ModeInfo *mi) +{ + dazzle_configuration *bp = &bps[MI_SCREEN(mi)]; + long x, y; + long wh = density * 2; + Bool wire = MI_IS_WIREFRAME(mi); + GLfloat max = 1.0 / density * 3; + + if (bp->button_down_p) + return; + + bp->xoff += bp->dx; + bp->yoff += bp->dy; + + if (! (random() % 50)) + { + bp->dx += frand(0.0002) * RANDSIGN() * speed; + bp->dy += frand(0.0002) * RANDSIGN() * speed; + } + + if (bp->dx > 0.003 * speed) bp->dx = 0.003 * speed; + if (bp->dy > 0.003 * speed) bp->dy = 0.003 * speed; + + for (y = 0; y < wh; y++) + for (x = 0; x < wh; x++) + { + node *n = &bp->nodes[y * wh + x]; + GLfloat x2 = n->x + n->dx; + GLfloat y2 = n->y + n->dy; + + if (x2 < n->gx + max && x2 >= n->gx - max && + y2 < n->gy + max && y2 >= n->gy - max) + { + n->x = x2; + n->y = y2; + } + + if (! (random() % 50)) + { + n->dx += frand(0.0005) * RANDSIGN() * speed; + n->dy += frand(0.0005) * RANDSIGN() * speed; + } + + /* If this quad was not drawn, it's ok to re-randomize stripes, */ + if (! n->drawn_p) + { + int i = random() % bp->ncolors; + int j = (i + bp->ncolors / 2) % bp->ncolors; + GLfloat cscale = 0.3; + + n->color1[0] = bp->colors[i].red / 65536.0; + n->color1[1] = bp->colors[i].green / 65536.0; + n->color1[2] = bp->colors[i].blue / 65536.0; + n->color1[3] = 1.0; + + n->color2[0] = bp->colors[j].red / 65536.0; + n->color2[1] = bp->colors[j].green / 65536.0; + n->color2[2] = bp->colors[j].blue / 65536.0; + n->color2[3] = 1.0; + + if (! wire) + { + n->color1[0] = cscale * n->color1[0] + 1 - cscale; + n->color1[1] = cscale * n->color1[1] + 1 - cscale; + n->color1[2] = cscale * n->color1[2] + 1 - cscale; + n->color2[0] = cscale * n->color2[0]; + n->color2[1] = cscale * n->color2[1]; + n->color2[2] = cscale * n->color2[2]; + } + + n->horiz_p = random() & 1; + n->nstripes = 2 + (int) (BELLRAND(1.0 / thickness)); + } + n->drawn_p = False; + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_dazzle (ModeInfo *mi, int width, int height) +{ + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho (0, 1, 1, 0, -1, 1); + + if (width > height * 5) { /* tiny window: show middle */ + GLfloat s = (GLfloat)height/width; + glOrtho (0, 1, 0.5-s, 0.5+s, -1, 1); + } + +# ifdef USE_IPHONE /* So much WTF */ + { + int rot = current_device_rotation(); + + glTranslatef (0.5, 0.5, 0); + + if (rot == 180 || rot == -180) { + glTranslatef (1, 1, 0); + } else if (rot == 90 || rot == -270) { + glRotatef (180, 0, 0, 1); + glTranslatef (0, 1, 0); + } else if (rot == -90 || rot == 270) { + glRotatef (180, 0, 0, 1); + glTranslatef (1, 0, 0); + } + + glTranslatef(-0.5, -0.5, 0); + } +# endif + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +dazzle_randomize (ModeInfo *mi) +{ + dazzle_configuration *bp = &bps[MI_SCREEN(mi)]; + long x, y; + long wh = density * 2; + + bp->ncolors = MI_NCOLORS(mi) - 1; + if (bp->ncolors < 1) bp->ncolors = 1; + if (bp->colors) free (bp->colors); + bp->colors = (XColor *) calloc (bp->ncolors, sizeof(XColor)); + if (bp->ncolors < 3) + make_random_colormap (0, 0, 0, bp->colors, &bp->ncolors, + True, False, 0, False); + else + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, False, False); + if (bp->ncolors < 1) abort(); + + bp->dragging = 0; + if (bp->nodes) free (bp->nodes); + + bp->nodes = (node *) calloc (wh * wh, sizeof (node)); + for (y = 0; y < wh; y++) + for (x = 0; x < wh; x++) + { + node *n = &bp->nodes[wh * y + x]; + n->gx = n->x = x; + n->gy = n->y = y; + } + + bp->dx = bp->dy = 0; + bp->xoff = bp->yoff = 0; + for (x = 0; x < 1000; x++) + move_grid (mi); + + bp->dx = frand(0.0005) * RANDSIGN() * speed; + bp->dy = frand(0.0005) * RANDSIGN() * speed; + + if (bp->mode == SHIPS || bp->mode == RANDOM) + { + bp->which_ship = random() % countof(all_ships); + if (bp->mode == RANDOM && !(random() % 3)) + bp->which_ship = -1; + } + + if (bp->which_ship != -1) + { + bp->dx /= 10; + bp->dy /= 10; + } +} + + +ENTRYPOINT Bool +dazzle_handle_event (ModeInfo *mi, XEvent *event) +{ + dazzle_configuration *bp = &bps[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + GLfloat bx = fmod ((double) bp->xoff, 2.0); + GLfloat by = fmod ((double) bp->yoff, 2.0); + long wh = density * 2; + + if (event->xany.type == ButtonPress) + { + GLfloat x = (GLfloat) event->xbutton.x / MI_WIDTH (mi) - 0.5; + GLfloat y = (GLfloat) event->xbutton.y / MI_HEIGHT (mi) - 0.5; + node *nn = 0; + int xoff = 0, yoff = 0; + GLfloat d2 = 999999; + long x0, y0, x1, y1; + + if (wire) x /= 0.2, y /= 0.2; + + for (y0 = -1; y0 <= 1; y0++) + for (x0 = -1; x0 <= 1; x0++) + for (y1 = 0; y1 < wh; y1++) + for (x1 = 0; x1 < wh; x1++) + { + node *n0 = &bp->nodes[(y1 % wh) * wh + (x1 % wh)]; + double dist2; + GLfloat x2 = n0->x / density - 1 + bx + x0*2; + GLfloat y2 = n0->y / density - 1 + by + y0*2; + + dist2 = (x - x2) * (x - x2) + (y - y2) * (y - y2); + if (dist2 < d2) + { + d2 = dist2; + nn = n0; + xoff = x0; + yoff = y0; + } + } + + bp->button_down_p = True; + bp->dragging = nn; + bp->drag_x = xoff; + bp->drag_y = yoff; + return True; + } + else if (event->xany.type == ButtonRelease) + { + bp->dragging = 0; + bp->button_down_p = False; + return True; + } + else if (event->xany.type == MotionNotify && bp->dragging) + { + GLfloat x = (GLfloat) event->xmotion.x / MI_WIDTH (mi) - 0.5; + GLfloat y = (GLfloat) event->xmotion.y / MI_HEIGHT (mi) - 0.5; + if (wire) x /= 0.2, y /= 0.2; + x -= bx; + y -= by; + x -= bp->drag_x * 2; + y -= bp->drag_y * 2; + bp->dragging->x = x * density + density; + bp->dragging->y = y * density + density; + bp->dragging->dx = bp->dragging->dy = 0; + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + dazzle_randomize (mi); + return True; + } + + return False; +} + + +ENTRYPOINT void +init_dazzle (ModeInfo *mi) +{ + dazzle_configuration *bp; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + if (!mode_arg || !*mode_arg || !strcasecmp(mode_arg, "random")) + bp->mode = RANDOM; + else if (!strcasecmp(mode_arg, "ship") || !strcasecmp(mode_arg, "ships")) + bp->mode = SHIPS; + else if (!strcasecmp(mode_arg, "flat")) + bp->mode = FLAT; + else + { + fprintf (stderr, "%s: mode must be ship, flat or random, not %s\n", + progname, mode_arg); + exit (1); + } + + bp->which_ship = -1; + if (bp->mode == SHIPS || bp->mode == RANDOM) + { + int i; + bp->dlists = (GLuint *) calloc (countof(all_ships)+1, sizeof(GLuint)); + for (i = 0; i < countof(all_ships); i++) + { + const struct gllist *gll = *all_ships[i]; + + bp->dlists[i] = glGenLists (1); + glNewList (bp->dlists[i], GL_COMPILE); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glMatrixMode(GL_MODELVIEW); + + if (random() & 1) + { + glScalef (-1, 1, 1); + glTranslatef (-1, 0, 0); + } + renderList (gll, MI_IS_WIREFRAME(mi)); + + glMatrixMode(GL_TEXTURE); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + glEndList (); + } + } + + dazzle_randomize (mi); + reshape_dazzle (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); +} + + +ENTRYPOINT void +draw_dazzle (ModeInfo *mi) +{ + dazzle_configuration *bp = &bps[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int x, y; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + glDisable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glDisable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + mi->polygon_count = 0; + + glTranslatef (0.5, 0.5, 0); + + if (wire) + glScalef (0.2, 0.2, 1); + + move_grid (mi); + + for (y = -1; y <= 1; y++) + for (x = -1; x <= 1; x++) + draw_grid (mi, x, y); + + if (bp->which_ship != -1) + { +# ifdef USE_IPHONE + int rot = current_device_rotation(); +# endif + + if (wire) + glColor3f (1, 0, 0); + else + { + glColor3f (0, 0, 0); + + /* Draw into the depth buffer but not the frame buffer */ + glColorMask (GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + glClear (GL_DEPTH_BUFFER_BIT); + glEnable (GL_DEPTH_TEST); + } + +# ifdef USE_IPHONE + glRotatef (90, 0, 0, 1); + if (rot == 90 || rot == -270) + glRotatef (180, 0, 0, 1); +# endif + + glPushMatrix(); + glRotatef (90, 1, 0, 0); + glScalef (0.9, 0.9, 0.9); + glTranslatef (-0.5, 0, -0.2); + +# ifdef USE_IPHONE + if (rot == 0 || rot == 180 || rot == -180) + glScalef (1, 1, (GLfloat) MI_HEIGHT(mi) / MI_WIDTH(mi)); + else +# endif + glScalef (1, 1, (GLfloat) MI_WIDTH(mi) / MI_HEIGHT(mi)); + + /* Wave boat horizontally and vertically */ + glTranslatef (cos ((double) bp->frames / 80 * M_PI * speed) / 200, + 0, + cos ((double) bp->frames / 60 * M_PI * speed) / 300); + + glCallList (bp->dlists[bp->which_ship]); + mi->polygon_count += (*all_ships[bp->which_ship])->points / 3; + glPopMatrix(); + + /* Wave horizon vertically */ + glTranslatef (0, + cos ((double) bp->frames / 120 * M_PI * speed) / 200, + 0); + + if (! wire) + { + glColorMask (GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + + /* Black out everything that isn't a ship. */ +# if 0 + glBegin (GL_QUADS); + glVertex3f (-1, -1, 0); + glVertex3f (-1, 1, 0); + glVertex3f ( 1, 1, 0); + glVertex3f ( 1, -1, 0); + glEnd(); +# else + { + GLfloat horizon = 0.15; + + glColor3f (0.7, 0.7, 1.0); + glBegin (GL_QUADS); + glVertex3f (-1, -1, 0); + glVertex3f (-1, horizon, 0); + glVertex3f ( 1, horizon, 0); + glVertex3f ( 1, -1, 0); + glEnd(); + + glColor3f (0.0, 0.05, 0.2); + glBegin (GL_QUADS); + glVertex3f (-1, horizon, 0); + glVertex3f (-1, 1, 0); + glVertex3f ( 1, 1, 0); + glVertex3f ( 1, horizon, 0); + glEnd(); + } +# endif + + glDisable (GL_DEPTH_TEST); + } + } + + if (wire) + { + glColor3f(0,1,1); + glLineWidth(4); + glBegin(GL_LINE_LOOP); + glVertex3f(-0.5, -0.5, 0); + glVertex3f(-0.5, 0.5, 0); + glVertex3f( 0.5, 0.5, 0); + glVertex3f( 0.5, -0.5, 0); + glEnd(); + glLineWidth(1); + } + + glPopMatrix (); + + bp->frames++; + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + + +ENTRYPOINT void +free_dazzle (ModeInfo *mi) +{ + dazzle_configuration *bp = &bps[MI_SCREEN(mi)]; + if (bp->nodes) free (bp->nodes); + if (bp->colors) free (bp->colors); + if (bp->dlists) + { + int i; + for (i = 0; i < countof(all_ships); i++) + glDeleteLists (bp->dlists[i], 1); + free (bp->dlists); + } +} + +XSCREENSAVER_MODULE_2 ("RazzleDazzle", razzledazzle, dazzle) + +#endif /* USE_GL */ diff --git a/hacks/glx/razzledazzle.man b/hacks/glx/razzledazzle.man new file mode 100644 index 0000000..f4baef4 --- /dev/null +++ b/hacks/glx/razzledazzle.man @@ -0,0 +1,76 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +razzledazzle - screen saver. +.SH SYNOPSIS +.B razzledazzle +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-ncolors \fInumber\fP] +[\-density \fInumber\fP] +[\-thickness \fInumber\fP] +[\-mode \fIstring\fP] +[\-fps] +.SH DESCRIPTION +Generates an infinitely-scrolling sequence of dazzle camouflage patterns. +Dazzle Ships were military vessels during World War I and early in World +War II that were painted not to conceal but to confuse: with these Cubist +overlapping stripes, it was very hard to estimate their size, range and +heading. This was a big deal before the invention of Radar. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-ncolors \fInumber\fP +Colors. Default: 2. +.TP 8 +.B \-density \fInumber\fP +Thickness of the grid, and overall complexity. 1 - 10. Default: 5.0. +.TP 8 +.B \-thickness \fInumber\fP +Thickness of the lines. 0.05 - 1.0. Default: 0.1. +.TP 8 +.B \-mode \fIstring\fP +Random, Ships or Flat. Default Random. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2018 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/robot-wireframe.c b/hacks/glx/robot-wireframe.c new file mode 100644 index 0000000..1d7b0db --- /dev/null +++ b/hacks/glx/robot-wireframe.c @@ -0,0 +1,154 @@ +/* Generated from "robot-wireframe.dxf" on Aug-22-2014. + Wireframe. + */ + +#include "gllist.h" + +static const float robot_wireframe_data[] = { + 729.885788,421.399756,2459.256694, + 959.278463,553.839679,1921.436233, + 729.885788,421.399756,2824.242214, + -0,842.799512,2824.242214, + -0,842.799512,2824.242214, + -0,842.799512,2459.256694, + -0,842.799512,2459.256694, + 729.885788,421.399756,2459.256694, + 0,0,3212.282649, + -0,842.799512,2824.242214, + 665.532008,384.245084,587.016307, + -0,768.490168,587.016307, + 750.739667,433.439749,887.912962, + 0,866.879498,887.912962, + 690.700937,398.776372,934.321154, + 750.739667,433.439749,887.912962, + 959.278463,-553.839679,1921.436233, + 959.278463,553.839679,1921.436233, + 959.278463,553.839679,1921.436233, + 690.700937,398.776372,934.321154, + 690.700937,-398.776372,934.321154, + 690.700937,398.776372,934.321154, + 665.532008,-384.245084,587.016307, + 665.532008,384.245084,587.016307, + 750.739667,-433.439749,887.912962, + 750.739667,433.439749,887.912962, + 750.739667,433.439749,887.912962, + 665.532008,384.245084,587.016307, + -0,-797.552743,934.321154, + 690.700937,-398.776372,934.321154, + -0,-1107.679357,1921.436233, + 959.278463,-553.839679,1921.436233, + 959.278463,-553.839679,1921.436233, + 690.700937,-398.776372,934.321154, + 0,-866.879498,887.912962, + -0,-797.552743,934.321154, + -0,-797.552743,934.321154, + -0,-1107.679357,1921.436233, + 690.700937,-398.776372,934.321154, + 750.739667,-433.439749,887.912962, + 750.739667,-433.439749,887.912962, + 665.532008,-384.245084,587.016307, + 729.885788,421.399756,2824.242214, + 729.885788,421.399756,2459.256694, + 729.885788,421.399756,2459.256694, + 729.885788,-421.399756,2459.256694, + 729.885788,-421.399756,2824.242214, + 729.885788,421.399756,2824.242214, + 0,-866.879498,887.912962, + 750.739667,-433.439749,887.912962, + 0,-768.490168,587.016307, + 0,-866.879498,887.912962, + 0,-768.490168,587.016307, + 665.532008,-384.245084,587.016307, + 0,0,3212.282649, + 729.885788,-421.399756,2824.242214, + -0,-1107.679357,1921.436233, + 0,-842.799512,2459.256694, + 729.885788,-421.399756,2459.256694, + 959.278463,-553.839679,1921.436233, + 0,-842.799512,2824.242214, + 0,0,3212.282649, + 0,0,3212.282649, + 729.885788,421.399756,2824.242214, + 0,866.879498,887.912962, + -0,768.490168,587.016307, + 690.700937,398.776372,934.321154, + 0,797.552743,934.321154, + 0,797.552743,934.321154, + 0,866.879498,887.912962, + 959.278463,553.839679,1921.436233, + 0,1107.679357,1921.436233, + 0,1107.679357,1921.436233, + 0,797.552743,934.321154, + -0,842.799512,2459.256694, + 0,1107.679357,1921.436233, + -0,842.799512,2824.242214, + -729.885788,421.399756,2824.242214, + -729.885788,421.399756,2824.242214, + -729.885788,421.399756,2459.256694, + -729.885788,421.399756,2459.256694, + -0,842.799512,2459.256694, + 0,0,3212.282649, + -729.885788,421.399756,2824.242214, + -0,768.490168,587.016307, + -665.532008,384.245084,587.016307, + 0,866.879498,887.912962, + -750.739667,433.439749,887.912962, + -750.739667,433.439749,887.912962, + -665.532008,384.245084,587.016307, + 0,797.552743,934.321154, + -690.700937,398.776372,934.321154, + -690.700937,398.776372,934.321154, + -750.739667,433.439749,887.912962, + 0,1107.679357,1921.436233, + -959.278463,553.839679,1921.436233, + -959.278463,553.839679,1921.436233, + -690.700937,398.776372,934.321154, + -729.885788,421.399756,2459.256694, + -959.278463,553.839679,1921.436233, + -729.885788,421.399756,2824.242214, + -729.885788,-421.399756,2824.242214, + -729.885788,-421.399756,2824.242214, + -729.885788,-421.399756,2459.256694, + -729.885788,-421.399756,2459.256694, + -729.885788,421.399756,2459.256694, + 0,0,3212.282649, + -729.885788,-421.399756,2824.242214, + -665.532008,384.245084,587.016307, + -665.532008,-384.245084,587.016307, + -750.739667,433.439749,887.912962, + -750.739667,-433.439749,887.912962, + -750.739667,-433.439749,887.912962, + -665.532008,-384.245084,587.016307, + -690.700937,398.776372,934.321154, + -690.700937,-398.776372,934.321154, + -690.700937,-398.776372,934.321154, + -750.739667,-433.439749,887.912962, + -959.278463,553.839679,1921.436233, + -959.278463,-553.839679,1921.436233, + -959.278463,-553.839679,1921.436233, + -690.700937,-398.776372,934.321154, + -729.885788,-421.399756,2459.256694, + -959.278463,-553.839679,1921.436233, + -729.885788,-421.399756,2824.242214, + 0,-842.799512,2824.242214, + 0,-842.799512,2459.256694, + -729.885788,-421.399756,2459.256694, + -665.532008,-384.245084,587.016307, + 0,-768.490168,587.016307, + -750.739667,-433.439749,887.912962, + 0,-866.879498,887.912962, + -690.700937,-398.776372,934.321154, + -0,-797.552743,934.321154, + -959.278463,-553.839679,1921.436233, + -0,-1107.679357,1921.436233, + 0,-842.799512,2459.256694, + 0,-842.799512,2824.242214, + 0,-842.799512,2824.242214, + 729.885788,-421.399756,2824.242214, + 729.885788,-421.399756,2824.242214, + 729.885788,-421.399756,2459.256694, + 729.885788,-421.399756,2459.256694, + 0,-842.799512,2459.256694 +}; +static const struct gllist robot_wireframe_frame = { GL_V3F, GL_LINES, 144, robot_wireframe_data, 0 }; +const struct gllist *robot_wireframe = &robot_wireframe_frame; diff --git a/hacks/glx/robot-wireframe.dxf b/hacks/glx/robot-wireframe.dxf new file mode 100644 index 0000000..526e835 --- /dev/null +++ b/hacks/glx/robot-wireframe.dxf @@ -0,0 +1,1160 @@ + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 8 +Layer0 +10 +729.885787538951 +20 +421.399755913295 +30 +2459.25669423824 +11 +959.278462610949 +21 +553.839678616242 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +729.885787538951 +20 +421.399755913295 +30 +2824.24221446634 +11 +-1.80477854883065e-13 +21 +842.79951182659 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +842.79951182659 +30 +2824.24221446634 +11 +-1.80477854883065e-13 +21 +842.79951182659 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +842.79951182659 +30 +2459.25669423824 +11 +729.885787538951 +21 +421.399755913295 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +1.80477854883065e-13 +20 +1.40989300234651e-13 +30 +3212.28264895843 +11 +-1.80477854883065e-13 +21 +842.79951182659 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +665.532008182011 +20 +384.245084078196 +30 +587.016306884026 +11 +-1.80477854883065e-13 +21 +768.490168156393 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +750.739667090951 +20 +433.43974888629 +30 +887.912962275779 +11 +0.0 +21 +866.879497772581 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +690.700936565691 +20 +398.776371655728 +30 +934.321154257257 +11 +750.739667090951 +21 +433.43974888629 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +959.278462610949 +20 +-553.839678616242 +30 +1921.43623303429 +11 +959.278462610949 +21 +553.839678616242 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +959.278462610949 +20 +553.839678616242 +30 +1921.43623303429 +11 +690.700936565691 +21 +398.776371655728 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +690.700936565691 +20 +-398.776371655728 +30 +934.321154257257 +11 +690.700936565691 +21 +398.776371655728 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +665.532008182011 +20 +-384.245084078196 +30 +587.016306884026 +11 +665.532008182011 +21 +384.245084078196 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +750.739667090951 +20 +-433.43974888629 +30 +887.912962275779 +11 +750.739667090951 +21 +433.43974888629 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +750.739667090951 +20 +433.43974888629 +30 +887.912962275779 +11 +665.532008182011 +21 +384.245084078196 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +-797.552743311456 +30 +934.321154257257 +11 +690.700936565691 +21 +-398.776371655728 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +-1107.67935723248 +30 +1921.43623303429 +11 +959.278462610949 +21 +-553.839678616242 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +959.278462610949 +20 +-553.839678616242 +30 +1921.43623303429 +11 +690.700936565691 +21 +-398.776371655728 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +-866.87949777258 +30 +887.912962275779 +11 +-1.80477854883065e-13 +21 +-797.552743311456 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +-797.552743311456 +30 +934.321154257257 +11 +-1.80477854883065e-13 +21 +-1107.67935723248 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +690.700936565691 +20 +-398.776371655728 +30 +934.321154257257 +11 +750.739667090951 +21 +-433.43974888629 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +750.739667090951 +20 +-433.43974888629 +30 +887.912962275779 +11 +665.532008182011 +21 +-384.245084078196 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +729.885787538951 +20 +421.399755913295 +30 +2824.24221446634 +11 +729.885787538951 +21 +421.399755913295 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +729.885787538951 +20 +421.399755913295 +30 +2459.25669423824 +11 +729.885787538951 +21 +-421.399755913295 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +729.885787538951 +20 +-421.399755913295 +30 +2824.24221446634 +11 +729.885787538951 +21 +421.399755913295 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +-866.87949777258 +30 +887.912962275779 +11 +750.739667090951 +21 +-433.43974888629 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +-768.490168156392 +30 +587.016306884026 +11 +0.0 +21 +-866.87949777258 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +-768.490168156392 +30 +587.016306884026 +11 +665.532008182011 +21 +-384.245084078196 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +1.80477854883065e-13 +20 +1.40989300234651e-13 +30 +3212.28264895843 +11 +729.885787538951 +21 +-421.399755913295 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +-1107.67935723248 +30 +1921.43623303429 +11 +0.0 +21 +-842.79951182659 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +729.885787538951 +20 +-421.399755913295 +30 +2459.25669423824 +11 +959.278462610949 +21 +-553.839678616242 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +-842.79951182659 +30 +2824.24221446634 +11 +1.80477854883065e-13 +21 +1.40989300234651e-13 +31 +3212.28264895843 + 0 +LINE + 8 +Layer0 +10 +1.80477854883065e-13 +20 +1.40989300234651e-13 +30 +3212.28264895843 +11 +729.885787538951 +21 +421.399755913295 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +866.879497772581 +30 +887.912962275779 +11 +-1.80477854883065e-13 +21 +768.490168156393 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +690.700936565691 +20 +398.776371655728 +30 +934.321154257257 +11 +0.0 +21 +797.552743311456 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +797.552743311456 +30 +934.321154257257 +11 +0.0 +21 +866.879497772581 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +959.278462610949 +20 +553.839678616242 +30 +1921.43623303429 +11 +0.0 +21 +1107.67935723248 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +1107.67935723248 +30 +1921.43623303429 +11 +0.0 +21 +797.552743311456 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +842.79951182659 +30 +2459.25669423824 +11 +0.0 +21 +1107.67935723248 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +842.79951182659 +30 +2824.24221446634 +11 +-729.88578753895 +21 +421.399755913295 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +-729.88578753895 +20 +421.399755913295 +30 +2824.24221446634 +11 +-729.88578753895 +21 +421.399755913295 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +-729.88578753895 +20 +421.399755913295 +30 +2459.25669423824 +11 +-1.80477854883065e-13 +21 +842.79951182659 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +1.80477854883065e-13 +20 +1.40989300234651e-13 +30 +3212.28264895843 +11 +-729.88578753895 +21 +421.399755913295 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +-1.80477854883065e-13 +20 +768.490168156393 +30 +587.016306884026 +11 +-665.532008182011 +21 +384.245084078197 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +866.879497772581 +30 +887.912962275779 +11 +-750.739667090951 +21 +433.439748886291 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +-750.739667090951 +20 +433.439748886291 +30 +887.912962275779 +11 +-665.532008182011 +21 +384.245084078197 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +797.552743311456 +30 +934.321154257257 +11 +-690.700936565691 +21 +398.776371655728 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +-690.700936565691 +20 +398.776371655728 +30 +934.321154257257 +11 +-750.739667090951 +21 +433.439748886291 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +1107.67935723248 +30 +1921.43623303429 +11 +-959.278462610949 +21 +553.839678616243 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +-959.278462610949 +20 +553.839678616243 +30 +1921.43623303429 +11 +-690.700936565691 +21 +398.776371655728 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +-729.88578753895 +20 +421.399755913295 +30 +2459.25669423824 +11 +-959.278462610949 +21 +553.839678616243 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +-729.88578753895 +20 +421.399755913295 +30 +2824.24221446634 +11 +-729.88578753895 +21 +-421.399755913294 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +-729.88578753895 +20 +-421.399755913294 +30 +2824.24221446634 +11 +-729.88578753895 +21 +-421.399755913294 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +-729.88578753895 +20 +-421.399755913294 +30 +2459.25669423824 +11 +-729.88578753895 +21 +421.399755913295 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +1.80477854883065e-13 +20 +1.40989300234651e-13 +30 +3212.28264895843 +11 +-729.88578753895 +21 +-421.399755913294 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +-665.532008182011 +20 +384.245084078197 +30 +587.016306884026 +11 +-665.532008182012 +21 +-384.245084078196 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +-750.739667090951 +20 +433.439748886291 +30 +887.912962275779 +11 +-750.739667090951 +21 +-433.43974888629 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +-750.739667090951 +20 +-433.43974888629 +30 +887.912962275779 +11 +-665.532008182012 +21 +-384.245084078196 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +-690.700936565691 +20 +398.776371655728 +30 +934.321154257257 +11 +-690.700936565691 +21 +-398.776371655727 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +-690.700936565691 +20 +-398.776371655727 +30 +934.321154257257 +11 +-750.739667090951 +21 +-433.43974888629 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +-959.278462610949 +20 +553.839678616243 +30 +1921.43623303429 +11 +-959.27846261095 +21 +-553.839678616242 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +-959.27846261095 +20 +-553.839678616242 +30 +1921.43623303429 +11 +-690.700936565691 +21 +-398.776371655727 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +-729.88578753895 +20 +-421.399755913294 +30 +2459.25669423824 +11 +-959.27846261095 +21 +-553.839678616242 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +-729.88578753895 +20 +-421.399755913294 +30 +2824.24221446634 +11 +0.0 +21 +-842.79951182659 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +-842.79951182659 +30 +2459.25669423824 +11 +-729.88578753895 +21 +-421.399755913294 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +-665.532008182012 +20 +-384.245084078196 +30 +587.016306884026 +11 +0.0 +21 +-768.490168156392 +31 +587.016306884026 + 0 +LINE + 8 +Layer0 +10 +-750.739667090951 +20 +-433.43974888629 +30 +887.912962275779 +11 +0.0 +21 +-866.87949777258 +31 +887.912962275779 + 0 +LINE + 8 +Layer0 +10 +-690.700936565691 +20 +-398.776371655727 +30 +934.321154257257 +11 +-1.80477854883065e-13 +21 +-797.552743311456 +31 +934.321154257257 + 0 +LINE + 8 +Layer0 +10 +-959.27846261095 +20 +-553.839678616242 +30 +1921.43623303429 +11 +-1.80477854883065e-13 +21 +-1107.67935723248 +31 +1921.43623303429 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +-842.79951182659 +30 +2459.25669423824 +11 +0.0 +21 +-842.79951182659 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +0.0 +20 +-842.79951182659 +30 +2824.24221446634 +11 +729.885787538951 +21 +-421.399755913295 +31 +2824.24221446634 + 0 +LINE + 8 +Layer0 +10 +729.885787538951 +20 +-421.399755913295 +30 +2824.24221446634 +11 +729.885787538951 +21 +-421.399755913295 +31 +2459.25669423824 + 0 +LINE + 8 +Layer0 +10 +729.885787538951 +20 +-421.399755913295 +30 +2459.25669423824 +11 +0.0 +21 +-842.79951182659 +31 +2459.25669423824 + 0 +ENDSEC + 0 +EOF diff --git a/hacks/glx/robot.c b/hacks/glx/robot.c new file mode 100644 index 0000000..84ee59b --- /dev/null +++ b/hacks/glx/robot.c @@ -0,0 +1,18539 @@ +/* Generated from "robot.dxf" on Aug-22-2014. + Smoothed vertex normals. + Components: arm_half, body_half_inside, body_half_outside, crank_full, + gearbox_half, hand_half, leg_half, rotator_half. + */ + +#include "gllist.h" + +static const float robot_arm_half_data[] = { + 0.906212,-0.041413,0.420791,1080.0746,-794.16656,2070.082615, + 0.825188,-0.112749,0.553491,1071.440608,-804.05311,2084.867737, + 0.920546,-0.079115,0.382538,1080.0746,-800.976533,2069.412397, + 0.825188,-0.112749,0.553491,1071.440608,-804.05311,2084.867737, + 0.906212,-0.041413,0.420791,1080.0746,-794.16656,2070.082615, + 0.804658,-0.058153,0.590884,1071.440608,-794.16656,2085.840744, + 0.804658,-0.058153,0.590884,1071.440608,-794.16656,2085.840744, + 0.712409,-0.124297,0.690669,1059.821204,-806.749751,2098.414453, + 0.825188,-0.112749,0.553491,1071.440608,-804.05311,2084.867737, + 0.712409,-0.124297,0.690669,1059.821204,-806.749751,2098.414453, + 0.804658,-0.058153,0.590884,1071.440608,-794.16656,2085.840744, + 0.67288,-0.072454,0.736195,1059.821204,-794.16656,2099.652855, + 0.573227,-0.159742,0.803675,1045.662989,-808.962833,2109.531981, + 0.67288,-0.072454,0.736195,1059.821204,-794.16656,2099.652855, + 0.516952,-0.083841,0.851898,1045.662989,-794.16656,2110.988188, + 0.67288,-0.072454,0.736195,1059.821204,-794.16656,2099.652855, + 0.573227,-0.159742,0.803675,1045.662989,-808.962833,2109.531981, + 0.712409,-0.124297,0.690669,1059.821204,-806.749751,2098.414453, + 0.404534,-0.178287,0.896976,1029.509968,-810.607297,2117.793029, + 0.516952,-0.083841,0.851898,1045.662989,-794.16656,2110.988188, + 0.343284,-0.091992,0.934716,1029.509968,-794.16656,2119.41108, + 0.516952,-0.083841,0.851898,1045.662989,-794.16656,2110.988188, + 0.404534,-0.178287,0.896976,1029.509968,-810.607297,2117.793029, + 0.573227,-0.159742,0.803675,1045.662989,-808.962833,2109.531981, + 0.221931,-0.19009,0.956354,1011.982852,-811.619949,2122.880135, + 0.343284,-0.091992,0.934716,1029.509968,-794.16656,2119.41108, + 0.158161,-0.096711,0.982666,1011.982852,-794.16656,2124.597848, + 0.343284,-0.091992,0.934716,1029.509968,-794.16656,2119.41108, + 0.221931,-0.19009,0.956354,1011.982852,-811.619949,2122.880135, + 0.404534,-0.178287,0.896976,1029.509968,-810.607297,2117.793029, + 0.095481,-0.194061,0.976332,993.755282,-811.961287,2124.594866, + 0.158161,-0.096711,0.982666,1011.982852,-794.16656,2124.597848, + 0.095023,-0.097501,0.990689,993.755282,-794.16656,2126.346173, + 0.158161,-0.096711,0.982666,1011.982852,-794.16656,2124.597848, + 0.095481,-0.194061,0.976332,993.755282,-811.961287,2124.594866, + 0.221931,-0.19009,0.956354,1011.982852,-811.619949,2122.880135, + 0,-0.162686,0.986678,947.039602,-835.292444,2241.800118, + 0,-0.097944,0.995192,993.755282,-794.16656,2245.847611, + 0,-0.097944,0.995192,947.039602,-794.16656,2245.847611, + 0,-0.097944,0.995192,993.755282,-794.16656,2245.847611, + 0,-0.162686,0.986678,947.039602,-835.292444,2241.800118, + 0,-0.227008,0.973893,993.755282,-835.292444,2241.800118, + -0.698037,-0.116492,0.706522,947.039602,-835.292444,2241.800118, + -0.696496,-0.070281,0.71411,900.323922,-794.16656,2200.284205, + -0.698044,-0.162549,0.697361,900.323922,-826.396761,2197.1122, + -0.696496,-0.070281,0.71411,900.323922,-794.16656,2200.284205, + -0.698037,-0.116492,0.706522,947.039602,-835.292444,2241.800118, + -0.696496,-0.070281,0.71411,947.039602,-794.16656,2245.847611, + 0.696496,-0.070281,0.71411,900.323922,-794.16656,2200.284205, + 0.698037,-0.116492,0.706522,853.608242,-835.292444,2241.800118, + 0.698044,-0.162549,0.697361,900.323922,-826.396761,2197.1122, + 0.698037,-0.116492,0.706522,853.608242,-835.292444,2241.800118, + 0.696496,-0.070281,0.71411,900.323922,-794.16656,2200.284205, + 0.696496,-0.070281,0.71411,853.608242,-794.16656,2245.847611, + -0.698037,-0.116492,0.706522,853.608242,-835.292444,2241.800118, + -0.696496,-0.070281,0.71411,806.892562,-794.16656,2200.284205, + -0.698044,-0.162549,0.697361,806.892562,-826.396761,2197.1122, + -0.696496,-0.070281,0.71411,806.892562,-794.16656,2200.284205, + -0.698037,-0.116492,0.706522,853.608242,-835.292444,2241.800118, + -0.696496,-0.070281,0.71411,853.608242,-794.16656,2245.847611, + 0.696496,-0.070281,0.71411,806.892562,-794.16656,2200.284205, + 0.698037,-0.116492,0.706522,760.176882,-835.292444,2241.800118, + 0.698044,-0.162549,0.697361,806.892562,-826.396761,2197.1122, + 0.698037,-0.116492,0.706522,760.176882,-835.292444,2241.800118, + 0.696496,-0.070281,0.71411,806.892562,-794.16656,2200.284205, + 0.696496,-0.070281,0.71411,760.176882,-794.16656,2245.847611, + -0.698037,-0.116492,0.706522,760.176882,-835.292444,2241.800118, + -0.696496,-0.070281,0.71411,713.461202,-794.16656,2200.284205, + -0.698044,-0.162549,0.697361,713.461202,-826.396761,2197.1122, + -0.696496,-0.070281,0.71411,713.461202,-794.16656,2200.284205, + -0.698037,-0.116492,0.706522,760.176882,-835.292444,2241.800118, + -0.696496,-0.070281,0.71411,760.176882,-794.16656,2245.847611, + 0.696496,-0.070281,0.71411,713.461202,-794.16656,2200.284205, + 0.698037,-0.116492,0.706522,666.745522,-835.292444,2241.800118, + 0.698044,-0.162549,0.697361,713.461202,-826.396761,2197.1122, + 0.698037,-0.116492,0.706522,666.745522,-835.292444,2241.800118, + 0.696496,-0.070281,0.71411,713.461202,-794.16656,2200.284205, + 0.696496,-0.070281,0.71411,666.745522,-794.16656,2245.847611, + 0,-0.162686,0.986678,635.537065,-835.292444,2241.800118, + 0,-0.097944,0.995192,666.745522,-794.16656,2245.847611, + 0,-0.097944,0.995192,635.537065,-794.16656,2245.847611, + 0,-0.097944,0.995192,666.745522,-794.16656,2245.847611, + 0,-0.162686,0.986678,635.537065,-835.292444,2241.800118, + 0,-0.227008,0.973893,666.745522,-835.292444,2241.800118, + 0,-0.162686,0.986678,200.646178,-826.396761,2197.1122, + 0,-0.097944,0.995192,635.537065,-794.16656,2200.284205, + 0,-0.097944,0.995192,200.646178,-794.16656,2200.284205, + 0,-0.097944,0.995192,635.537065,-794.16656,2200.284205, + 0,-0.162686,0.986678,200.646178,-826.396761,2197.1122, + 0,-0.227008,0.973893,635.537065,-826.396761,2197.1122, + 0,-0.162686,0.986678,97.301517,-810.693775,2118.227454, + 0,-0.097944,0.995192,200.646178,-794.16656,2119.854015, + 0,-0.097944,0.995192,97.301517,-794.16656,2119.854015, + 0,-0.097944,0.995192,200.646178,-794.16656,2119.854015, + 0,-0.162686,0.986678,97.301517,-810.693775,2118.227454, + 0,-0.227008,0.973893,200.646178,-810.693775,2118.227454, + 0,-0.162686,0.986678,45.307526,-820.853629,2169.265997, + 0,-0.097944,0.995192,97.301517,-794.16656,2171.892463, + 0,-0.097944,0.995192,45.307526,-794.16656,2171.892463, + 0,-0.097944,0.995192,97.301517,-794.16656,2171.892463, + 0,-0.162686,0.986678,45.307526,-820.853629,2169.265997, + 0,-0.227008,0.973893,97.301517,-820.853629,2169.265997, + 0.972352,-0.022872,0.232398,1085.391405,-794.16656,2052.984082, + 0.920546,-0.079115,0.382538,1080.0746,-800.976533,2069.412397, + 0.975625,-0.048525,0.214014,1085.391405,-797.638259,2052.642407, + 0.920546,-0.079115,0.382538,1080.0746,-800.976533,2069.412397, + 0.972352,-0.022872,0.232398,1085.391405,-794.16656,2052.984082, + 0.906212,-0.041413,0.420791,1080.0746,-794.16656,2070.082615, + 0.920546,-0.079115,0.382538,1080.0746,-800.976533,2069.412397, + 0.82521,-0.218488,0.520857,1071.440608,-813.559725,2081.986111, + 0.920558,-0.152171,0.359746,1080.0746,-807.524802,2067.427498, + 0.82521,-0.218488,0.520857,1071.440608,-813.559725,2081.986111, + 0.920546,-0.079115,0.382538,1080.0746,-800.976533,2069.412397, + 0.825188,-0.112749,0.553491,1071.440608,-804.05311,2084.867737, + 0.825188,-0.112749,0.553491,1071.440608,-804.05311,2084.867737, + 0.698346,-0.251899,0.66997,1059.821204,-818.849378,2094.746838, + 0.82521,-0.218488,0.520857,1071.440608,-813.559725,2081.986111, + 0.698346,-0.251899,0.66997,1059.821204,-818.849378,2094.746838, + 0.825188,-0.112749,0.553491,1071.440608,-804.05311,2084.867737, + 0.712409,-0.124297,0.690669,1059.821204,-806.749751,2098.414453, + 0.573227,-0.159742,0.803675,1045.662989,-808.962833,2109.531981, + 0.698346,-0.251899,0.66997,1059.821204,-818.849378,2094.746838, + 0.712409,-0.124297,0.690669,1059.821204,-806.749751,2098.414453, + 0.698346,-0.251899,0.66997,1059.821204,-818.849378,2094.746838, + 0.573227,-0.159742,0.803675,1045.662989,-808.962833,2109.531981, + 0.546331,-0.318715,0.77456,1045.662989,-823.190494,2105.21932, + 0.404534,-0.178287,0.896976,1029.509968,-810.607297,2117.793029, + 0.546331,-0.318715,0.77456,1045.662989,-823.190494,2105.21932, + 0.573227,-0.159742,0.803675,1045.662989,-808.962833,2109.531981, + 0.546331,-0.318715,0.77456,1045.662989,-823.190494,2105.21932, + 0.404534,-0.178287,0.896976,1029.509968,-810.607297,2117.793029, + 0.374869,-0.353462,0.857052,1029.509968,-826.416226,2113.001057, + 0.221931,-0.19009,0.956354,1011.982852,-811.619949,2122.880135, + 0.374869,-0.353462,0.857052,1029.509968,-826.416226,2113.001057, + 0.404534,-0.178287,0.896976,1029.509968,-810.607297,2117.793029, + 0.374869,-0.353462,0.857052,1029.509968,-826.416226,2113.001057, + 0.221931,-0.19009,0.956354,1011.982852,-811.619949,2122.880135, + 0.190537,-0.374884,0.90728,1011.982852,-828.402613,2117.793006, + 0.095481,-0.194061,0.976332,993.755282,-811.961287,2124.594866, + 0.190537,-0.374884,0.90728,1011.982852,-828.402613,2117.793006, + 0.221931,-0.19009,0.956354,1011.982852,-811.619949,2122.880135, + 0.190537,-0.374884,0.90728,1011.982852,-828.402613,2117.793006, + 0.095481,-0.194061,0.976332,993.755282,-811.961287,2124.594866, + 0.095439,-0.410655,0.906782,993.755282,-829.072173,2119.408248, + 0,-0.351934,0.936025,947.039602,-874.837884,2229.81318, + 0,-0.227008,0.973893,993.755282,-835.292444,2241.800118, + 0,-0.162686,0.986678,947.039602,-835.292444,2241.800118, + 0,-0.227008,0.973893,993.755282,-835.292444,2241.800118, + 0,-0.351934,0.936025,947.039602,-874.837884,2229.81318, + 0,-0.412538,0.91094,993.755282,-874.837884,2229.81318, + -0.698064,-0.251996,0.670228,947.039602,-874.837884,2229.81318, + -0.698044,-0.162549,0.697361,900.323922,-826.396761,2197.1122, + -0.698076,-0.295386,0.652255,900.323922,-857.388373,2187.718082, + -0.698044,-0.162549,0.697361,900.323922,-826.396761,2197.1122, + -0.698064,-0.251996,0.670228,947.039602,-874.837884,2229.81318, + -0.698037,-0.116492,0.706522,947.039602,-835.292444,2241.800118, + 0.698044,-0.162549,0.697361,900.323922,-826.396761,2197.1122, + 0.698064,-0.251996,0.670228,853.608242,-874.837884,2229.81318, + 0.698076,-0.295386,0.652255,900.323922,-857.388373,2187.718082, + 0.698064,-0.251996,0.670228,853.608242,-874.837884,2229.81318, + 0.698044,-0.162549,0.697361,900.323922,-826.396761,2197.1122, + 0.698037,-0.116492,0.706522,853.608242,-835.292444,2241.800118, + -0.698064,-0.251996,0.670228,853.608242,-874.837884,2229.81318, + -0.698044,-0.162549,0.697361,806.892562,-826.396761,2197.1122, + -0.698076,-0.295386,0.652255,806.892562,-857.388373,2187.718082, + -0.698044,-0.162549,0.697361,806.892562,-826.396761,2197.1122, + -0.698064,-0.251996,0.670228,853.608242,-874.837884,2229.81318, + -0.698037,-0.116492,0.706522,853.608242,-835.292444,2241.800118, + 0.698044,-0.162549,0.697361,806.892562,-826.396761,2197.1122, + 0.698064,-0.251996,0.670228,760.176882,-874.837884,2229.81318, + 0.698076,-0.295386,0.652255,806.892562,-857.388373,2187.718082, + 0.698064,-0.251996,0.670228,760.176882,-874.837884,2229.81318, + 0.698044,-0.162549,0.697361,806.892562,-826.396761,2197.1122, + 0.698037,-0.116492,0.706522,760.176882,-835.292444,2241.800118, + -0.698064,-0.251996,0.670228,760.176882,-874.837884,2229.81318, + -0.698044,-0.162549,0.697361,713.461202,-826.396761,2197.1122, + -0.698076,-0.295386,0.652255,713.461202,-857.388373,2187.718082, + -0.698044,-0.162549,0.697361,713.461202,-826.396761,2197.1122, + -0.698064,-0.251996,0.670228,760.176882,-874.837884,2229.81318, + -0.698037,-0.116492,0.706522,760.176882,-835.292444,2241.800118, + 0.698044,-0.162549,0.697361,713.461202,-826.396761,2197.1122, + 0.698064,-0.251996,0.670228,666.745522,-874.837884,2229.81318, + 0.698076,-0.295386,0.652255,713.461202,-857.388373,2187.718082, + 0.698064,-0.251996,0.670228,666.745522,-874.837884,2229.81318, + 0.698044,-0.162549,0.697361,713.461202,-826.396761,2197.1122, + 0.698037,-0.116492,0.706522,666.745522,-835.292444,2241.800118, + 0,-0.351934,0.936025,635.537065,-874.837884,2229.81318, + 0,-0.227008,0.973893,666.745522,-835.292444,2241.800118, + 0,-0.162686,0.986678,635.537065,-835.292444,2241.800118, + 0,-0.227008,0.973893,666.745522,-835.292444,2241.800118, + 0,-0.351934,0.936025,635.537065,-874.837884,2229.81318, + 0,-0.412538,0.91094,666.745522,-874.837884,2229.81318, + 0,-0.351934,0.936025,200.646178,-857.388373,2187.718082, + 0,-0.227008,0.973893,635.537065,-826.396761,2197.1122, + 0,-0.162686,0.986678,200.646178,-826.396761,2197.1122, + 0,-0.227008,0.973893,635.537065,-826.396761,2197.1122, + 0,-0.351934,0.936025,200.646178,-857.388373,2187.718082, + 0,-0.412538,0.91094,635.537065,-857.388373,2187.718082, + 0,-0.351934,0.936025,97.301517,-826.585858,2113.410276, + 0,-0.227008,0.973893,200.646178,-810.693775,2118.227454, + 0,-0.162686,0.986678,97.301517,-810.693775,2118.227454, + 0,-0.227008,0.973893,200.646178,-810.693775,2118.227454, + 0,-0.351934,0.936025,97.301517,-826.585858,2113.410276, + 0,-0.412538,0.91094,200.646178,-826.585858,2113.410276, + 0,-0.351934,0.936025,45.307526,-846.515129,2161.487533, + 0,-0.227008,0.973893,97.301517,-820.853629,2169.265997, + 0,-0.162686,0.986678,45.307526,-820.853629,2169.265997, + 0,-0.227008,0.973893,97.301517,-820.853629,2169.265997, + 0,-0.351934,0.936025,45.307526,-846.515129,2161.487533, + 0,-0.412538,0.91094,97.301517,-846.515129,2161.487533, + 0.975625,-0.048525,0.214014,1085.391405,-797.638259,2052.642407, + 0.920558,-0.152171,0.359746,1080.0746,-807.524802,2067.427498, + 0.975629,-0.089314,0.200429,1085.391405,-800.976542,2051.630513, + 0.920558,-0.152171,0.359746,1080.0746,-807.524802,2067.427498, + 0.975625,-0.048525,0.214014,1085.391405,-797.638259,2052.642407, + 0.920546,-0.079115,0.382538,1080.0746,-800.976533,2069.412397, + 0.920558,-0.152171,0.359746,1080.0746,-807.524802,2067.427498, + 0.825241,-0.315841,0.468211,1071.440608,-822.321072,2077.306602, + 0.920575,-0.219382,0.323131,1080.0746,-813.559722,2064.204197, + 0.825241,-0.315841,0.468211,1071.440608,-822.321072,2077.306602, + 0.920558,-0.152171,0.359746,1080.0746,-807.524802,2067.427498, + 0.82521,-0.218488,0.520857,1071.440608,-813.559725,2081.986111, + 0.82521,-0.218488,0.520857,1071.440608,-813.559725,2081.986111, + 0.688423,-0.395152,0.608218,1059.821204,-830.000457,2088.790953, + 0.825241,-0.315841,0.468211,1071.440608,-822.321072,2077.306602, + 0.688423,-0.395152,0.608218,1059.821204,-830.000457,2088.790953, + 0.82521,-0.218488,0.520857,1071.440608,-813.559725,2081.986111, + 0.698346,-0.251899,0.66997,1059.821204,-818.849378,2094.746838, + 0.546331,-0.318715,0.77456,1045.662989,-823.190494,2105.21932, + 0.688423,-0.395152,0.608218,1059.821204,-830.000457,2088.790953, + 0.698346,-0.251899,0.66997,1059.821204,-818.849378,2094.746838, + 0.688423,-0.395152,0.608218,1059.821204,-830.000457,2088.790953, + 0.546331,-0.318715,0.77456,1045.662989,-823.190494,2105.21932, + 0.529849,-0.456252,0.714909,1045.662989,-836.302781,2098.215938, + 0.374869,-0.353462,0.857052,1029.509968,-826.416226,2113.001057, + 0.529849,-0.456252,0.714909,1045.662989,-836.302781,2098.215938, + 0.546331,-0.318715,0.77456,1045.662989,-823.190494,2105.21932, + 0.529849,-0.456252,0.714909,1045.662989,-836.302781,2098.215938, + 0.374869,-0.353462,0.857052,1029.509968,-826.416226,2113.001057, + 0.374908,-0.513801,0.771655,1029.509968,-840.985818,2105.219317, + 0.190537,-0.374884,0.90728,1011.982852,-828.402613,2117.793006, + 0.374908,-0.513801,0.771655,1029.509968,-840.985818,2105.219317, + 0.374869,-0.353462,0.857052,1029.509968,-826.416226,2113.001057, + 0.374908,-0.513801,0.771655,1029.509968,-840.985818,2105.219317, + 0.190537,-0.374884,0.90728,1011.982852,-828.402613,2117.793006, + 0.190559,-0.544614,0.816751,1011.982852,-843.869605,2109.531957, + 0.095439,-0.410655,0.906782,993.755282,-829.072173,2119.408248, + 0.190559,-0.544614,0.816751,1011.982852,-843.869605,2109.531957, + 0.190537,-0.374884,0.90728,1011.982852,-828.402613,2117.793006, + 0.190559,-0.544614,0.816751,1011.982852,-843.869605,2109.531957, + 0.095439,-0.410655,0.906782,993.755282,-829.072173,2119.408248, + 0.095452,-0.57961,0.809284,993.755282,-844.841655,2110.985636, + 0,-0.527706,0.849427,947.039602,-911.28317,2210.34745, + 0,-0.412538,0.91094,993.755282,-874.837884,2229.81318, + 0,-0.351934,0.936025,947.039602,-874.837884,2229.81318, + 0,-0.412538,0.91094,993.755282,-874.837884,2229.81318, + 0,-0.527706,0.849427,947.039602,-911.28317,2210.34745, + 0,-0.582269,0.812996,993.755282,-911.28317,2210.34745, + -0.698105,-0.377833,0.608187,947.039602,-911.28317,2210.34745, + -0.698076,-0.295386,0.652255,900.323922,-857.388373,2187.718082, + -0.698122,-0.416891,0.58209,900.323922,-885.950406,2172.462863, + -0.698076,-0.295386,0.652255,900.323922,-857.388373,2187.718082, + -0.698105,-0.377833,0.608187,947.039602,-911.28317,2210.34745, + -0.698064,-0.251996,0.670228,947.039602,-874.837884,2229.81318, + 0.698076,-0.295386,0.652255,900.323922,-857.388373,2187.718082, + 0.698105,-0.377833,0.608187,853.608242,-911.28317,2210.34745, + 0.698122,-0.416891,0.58209,900.323922,-885.950406,2172.462863, + 0.698105,-0.377833,0.608187,853.608242,-911.28317,2210.34745, + 0.698076,-0.295386,0.652255,900.323922,-857.388373,2187.718082, + 0.698064,-0.251996,0.670228,853.608242,-874.837884,2229.81318, + -0.698105,-0.377833,0.608187,853.608242,-911.28317,2210.34745, + -0.698076,-0.295386,0.652255,806.892562,-857.388373,2187.718082, + -0.698122,-0.416891,0.58209,806.892562,-885.950406,2172.462863, + -0.698076,-0.295386,0.652255,806.892562,-857.388373,2187.718082, + -0.698105,-0.377833,0.608187,853.608242,-911.28317,2210.34745, + -0.698064,-0.251996,0.670228,853.608242,-874.837884,2229.81318, + 0.698076,-0.295386,0.652255,806.892562,-857.388373,2187.718082, + 0.698105,-0.377833,0.608187,760.176882,-911.28317,2210.34745, + 0.698122,-0.416891,0.58209,806.892562,-885.950406,2172.462863, + 0.698105,-0.377833,0.608187,760.176882,-911.28317,2210.34745, + 0.698076,-0.295386,0.652255,806.892562,-857.388373,2187.718082, + 0.698064,-0.251996,0.670228,760.176882,-874.837884,2229.81318, + -0.698105,-0.377833,0.608187,760.176882,-911.28317,2210.34745, + -0.698076,-0.295386,0.652255,713.461202,-857.388373,2187.718082, + -0.698122,-0.416891,0.58209,713.461202,-885.950406,2172.462863, + -0.698076,-0.295386,0.652255,713.461202,-857.388373,2187.718082, + -0.698105,-0.377833,0.608187,760.176882,-911.28317,2210.34745, + -0.698064,-0.251996,0.670228,760.176882,-874.837884,2229.81318, + 0.698076,-0.295386,0.652255,713.461202,-857.388373,2187.718082, + 0.698105,-0.377833,0.608187,666.745522,-911.28317,2210.34745, + 0.698122,-0.416891,0.58209,713.461202,-885.950406,2172.462863, + 0.698105,-0.377833,0.608187,666.745522,-911.28317,2210.34745, + 0.698076,-0.295386,0.652255,713.461202,-857.388373,2187.718082, + 0.698064,-0.251996,0.670228,666.745522,-874.837884,2229.81318, + 0,-0.527706,0.849427,635.537065,-911.28317,2210.34745, + 0,-0.412538,0.91094,666.745522,-874.837884,2229.81318, + 0,-0.351934,0.936025,635.537065,-874.837884,2229.81318, + 0,-0.412538,0.91094,666.745522,-874.837884,2229.81318, + 0,-0.527706,0.849427,635.537065,-911.28317,2210.34745, + 0,-0.582269,0.812996,666.745522,-911.28317,2210.34745, + 0,-0.527706,0.849427,200.646178,-885.950406,2172.462863, + 0,-0.412538,0.91094,635.537065,-857.388373,2187.718082, + 0,-0.351934,0.936025,200.646178,-857.388373,2187.718082, + 0,-0.412538,0.91094,635.537065,-857.388373,2187.718082, + 0,-0.527706,0.849427,200.646178,-885.950406,2172.462863, + 0,-0.582269,0.812996,635.537065,-885.950406,2172.462863, + 0,-0.527706,0.849427,97.301517,-841.232085,2105.587604, + 0,-0.412538,0.91094,200.646178,-826.585858,2113.410276, + 0,-0.351934,0.936025,97.301517,-826.585858,2113.410276, + 0,-0.412538,0.91094,200.646178,-826.585858,2113.410276, + 0,-0.527706,0.849427,97.301517,-841.232085,2105.587604, + 0,-0.582269,0.812996,200.646178,-841.232085,2105.587604, + 0,-0.527706,0.849427,45.307526,-870.164903,2148.855992, + 0,-0.412538,0.91094,97.301517,-846.515129,2161.487533, + 0,-0.351934,0.936025,45.307526,-846.515129,2161.487533, + 0,-0.412538,0.91094,97.301517,-846.515129,2161.487533, + 0,-0.527706,0.849427,45.307526,-870.164903,2148.855992, + 0,-0.582269,0.812996,97.301517,-870.164903,2148.855992, + 0.975629,-0.089314,0.200429,1085.391405,-800.976542,2051.630513, + 0.920575,-0.219382,0.323131,1080.0746,-813.559722,2064.204197, + 0.975635,-0.126671,0.179142,1085.391405,-804.053121,2049.987287, + 0.920575,-0.219382,0.323131,1080.0746,-813.559722,2064.204197, + 0.975629,-0.089314,0.200429,1085.391405,-800.976542,2051.630513, + 0.920558,-0.152171,0.359746,1080.0746,-807.524802,2067.427498, + 0.920575,-0.219382,0.323131,1080.0746,-813.559722,2064.204197, + 0.825279,-0.401066,0.397569,1071.440608,-830.000457,2071.009044, + 0.920595,-0.278166,0.274097,1080.0746,-818.849373,2059.866364, + 0.825279,-0.401066,0.397569,1071.440608,-830.000457,2071.009044, + 0.920575,-0.219382,0.323131,1080.0746,-813.559722,2064.204197, + 0.825241,-0.315841,0.468211,1071.440608,-822.321072,2077.306602, + 0.825241,-0.315841,0.468211,1071.440608,-822.321072,2077.306602, + 0.698637,-0.507317,0.504516,1059.821204,-839.77446,2080.775682, + 0.825279,-0.401066,0.397569,1071.440608,-830.000457,2071.009044, + 0.698637,-0.507317,0.504516,1059.821204,-839.77446,2080.775682, + 0.825241,-0.315841,0.468211,1071.440608,-822.321072,2077.306602, + 0.688423,-0.395152,0.608218,1059.821204,-830.000457,2088.790953, + 0.688423,-0.395152,0.608218,1059.821204,-830.000457,2088.790953, + 0.546216,-0.572323,0.611633,1045.662989,-847.795796,2088.790972, + 0.698637,-0.507317,0.504516,1059.821204,-839.77446,2080.775682, + 0.546216,-0.572323,0.611633,1045.662989,-847.795796,2088.790972, + 0.688423,-0.395152,0.608218,1059.821204,-830.000457,2088.790953, + 0.529849,-0.456252,0.714909,1045.662989,-836.302781,2098.215938, + 0.374908,-0.513801,0.771655,1029.509968,-840.985818,2105.219317, + 0.546216,-0.572323,0.611633,1045.662989,-847.795796,2088.790972, + 0.529849,-0.456252,0.714909,1045.662989,-836.302781,2098.215938, + 0.546216,-0.572323,0.611633,1045.662989,-847.795796,2088.790972, + 0.374908,-0.513801,0.771655,1029.509968,-840.985818,2105.219317, + 0.374954,-0.654439,0.656596,1029.509968,-853.756172,2094.746857, + 0.190559,-0.544614,0.816751,1011.982852,-843.869605,2109.531957, + 0.374954,-0.654439,0.656596,1029.509968,-853.756172,2094.746857, + 0.374908,-0.513801,0.771655,1029.509968,-840.985818,2105.219317, + 0.374954,-0.654439,0.656596,1029.509968,-853.756172,2094.746857, + 0.190559,-0.544614,0.816751,1011.982852,-843.869605,2109.531957, + 0.190585,-0.693466,0.694825,1011.982852,-857.426537,2098.414455, + 0.095452,-0.57961,0.809284,993.755282,-844.841655,2110.985636, + 0.190585,-0.693466,0.694825,1011.982852,-857.426537,2098.414455, + 0.190559,-0.544614,0.816751,1011.982852,-843.869605,2109.531957, + 0.190585,-0.693466,0.694825,1011.982852,-857.426537,2098.414455, + 0.095452,-0.57961,0.809284,993.755282,-844.841655,2110.985636, + 0.095465,-0.726343,0.680671,993.755282,-858.663722,2099.650708, + 0,-0.706845,0.707368,947.039602,-943.22773,2184.150985, + 0,-0.582269,0.812996,993.755282,-911.28317,2210.34745, + 0,-0.527706,0.849427,947.039602,-911.28317,2210.34745, + 0,-0.582269,0.812996,993.755282,-911.28317,2210.34745, + 0,-0.706845,0.707368,947.039602,-943.22773,2184.150985, + 0,-0.706845,0.707368,993.755282,-943.22773,2184.150985, + -0.698156,-0.489171,0.522771,947.039602,-943.22773,2184.150985, + -0.698122,-0.416891,0.58209,900.323922,-885.950406,2172.462863, + -0.698174,-0.522394,0.489549,900.323922,-910.985237,2151.932791, + -0.698122,-0.416891,0.58209,900.323922,-885.950406,2172.462863, + -0.698156,-0.489171,0.522771,947.039602,-943.22773,2184.150985, + -0.698105,-0.377833,0.608187,947.039602,-911.28317,2210.34745, + 0.698122,-0.416891,0.58209,900.323922,-885.950406,2172.462863, + 0.698156,-0.489171,0.522771,853.608242,-943.22773,2184.150985, + 0.698174,-0.522394,0.489549,900.323922,-910.985237,2151.932791, + 0.698156,-0.489171,0.522771,853.608242,-943.22773,2184.150985, + 0.698122,-0.416891,0.58209,900.323922,-885.950406,2172.462863, + 0.698105,-0.377833,0.608187,853.608242,-911.28317,2210.34745, + -0.698156,-0.489171,0.522771,853.608242,-943.22773,2184.150985, + -0.698122,-0.416891,0.58209,806.892562,-885.950406,2172.462863, + -0.698174,-0.522394,0.489549,806.892562,-910.985237,2151.932791, + -0.698122,-0.416891,0.58209,806.892562,-885.950406,2172.462863, + -0.698156,-0.489171,0.522771,853.608242,-943.22773,2184.150985, + -0.698105,-0.377833,0.608187,853.608242,-911.28317,2210.34745, + 0.698122,-0.416891,0.58209,806.892562,-885.950406,2172.462863, + 0.698156,-0.489171,0.522771,760.176882,-943.22773,2184.150985, + 0.698174,-0.522394,0.489549,806.892562,-910.985237,2151.932791, + 0.698156,-0.489171,0.522771,760.176882,-943.22773,2184.150985, + 0.698122,-0.416891,0.58209,806.892562,-885.950406,2172.462863, + 0.698105,-0.377833,0.608187,760.176882,-911.28317,2210.34745, + -0.698156,-0.489171,0.522771,760.176882,-943.22773,2184.150985, + -0.698122,-0.416891,0.58209,713.461202,-885.950406,2172.462863, + -0.698174,-0.522394,0.489549,713.461202,-910.985237,2151.932791, + -0.698122,-0.416891,0.58209,713.461202,-885.950406,2172.462863, + -0.698156,-0.489171,0.522771,760.176882,-943.22773,2184.150985, + -0.698105,-0.377833,0.608187,760.176882,-911.28317,2210.34745, + 0.698122,-0.416891,0.58209,713.461202,-885.950406,2172.462863, + 0.698156,-0.489171,0.522771,666.745522,-943.22773,2184.150985, + 0.698174,-0.522394,0.489549,713.461202,-910.985237,2151.932791, + 0.698156,-0.489171,0.522771,666.745522,-943.22773,2184.150985, + 0.698122,-0.416891,0.58209,713.461202,-885.950406,2172.462863, + 0.698105,-0.377833,0.608187,666.745522,-911.28317,2210.34745, + 0,-0.706845,0.707368,635.537065,-943.22773,2184.150985, + 0,-0.582269,0.812996,666.745522,-911.28317,2210.34745, + 0,-0.527706,0.849427,635.537065,-911.28317,2210.34745, + 0,-0.582269,0.812996,666.745522,-911.28317,2210.34745, + 0,-0.706845,0.707368,635.537065,-943.22773,2184.150985, + 0,-0.706845,0.707368,666.745522,-943.22773,2184.150985, + 0,-0.706845,0.707368,200.646178,-910.985237,2151.932791, + 0,-0.582269,0.812996,635.537065,-885.950406,2172.462863, + 0,-0.527706,0.849427,200.646178,-885.950406,2172.462863, + 0,-0.582269,0.812996,635.537065,-885.950406,2172.462863, + 0,-0.706845,0.707368,200.646178,-910.985237,2151.932791, + 0,-0.706845,0.707368,635.537065,-910.985237,2151.932791, + 0,-0.706845,0.707368,97.301517,-854.069611,2095.060059, + 0,-0.582269,0.812996,200.646178,-841.232085,2105.587604, + 0,-0.527706,0.849427,97.301517,-841.232085,2105.587604, + 0,-0.582269,0.812996,200.646178,-841.232085,2105.587604, + 0,-0.706845,0.707368,97.301517,-854.069611,2095.060059, + 0,-0.706845,0.707368,200.646178,-854.069611,2095.060059, + 0,-0.706845,0.707368,45.307526,-890.894103,2131.856798, + 0,-0.582269,0.812996,97.301517,-870.164903,2148.855992, + 0,-0.527706,0.849427,45.307526,-870.164903,2148.855992, + 0,-0.582269,0.812996,97.301517,-870.164903,2148.855992, + 0,-0.706845,0.707368,45.307526,-890.894103,2131.856798, + 0,-0.706845,0.707368,97.301517,-890.894103,2131.856798, + 0.975635,-0.126671,0.179142,1085.391405,-804.053121,2049.987287, + 0.920595,-0.278166,0.274097,1080.0746,-818.849373,2059.866364, + 0.975641,-0.159161,0.15097,1085.391405,-806.749765,2047.775876, + 0.920595,-0.278166,0.274097,1080.0746,-818.849373,2059.866364, + 0.975635,-0.126671,0.179142,1085.391405,-804.053121,2049.987287, + 0.920575,-0.219382,0.323131,1080.0746,-813.559722,2064.204197, + 0.920595,-0.278166,0.274097,1080.0746,-818.849373,2059.866364, + 0.825316,-0.470886,0.311641,1071.440608,-836.302765,2063.335447, + 0.920615,-0.326262,0.214527,1080.0746,-823.190478,2054.5807, + 0.825316,-0.470886,0.311641,1071.440608,-836.302765,2063.335447, + 0.920595,-0.278166,0.274097,1080.0746,-818.849373,2059.866364, + 0.825279,-0.401066,0.397569,1071.440608,-830.000457,2071.009044, + 0.825279,-0.401066,0.397569,1071.440608,-830.000457,2071.009044, + 0.712575,-0.576041,0.400516,1059.821204,-847.795777,2071.009045, + 0.825316,-0.470886,0.311641,1071.440608,-836.302765,2063.335447, + 0.712575,-0.576041,0.400516,1059.821204,-847.795777,2071.009045, + 0.825279,-0.401066,0.397569,1071.440608,-830.000457,2071.009044, + 0.698637,-0.507317,0.504516,1059.821204,-839.77446,2080.775682, + 0.698637,-0.507317,0.504516,1059.821204,-839.77446,2080.775682, + 0.558056,-0.682755,0.471614,1045.662989,-857.22787,2077.306618, + 0.712575,-0.576041,0.400516,1059.821204,-847.795777,2071.009045, + 0.558056,-0.682755,0.471614,1045.662989,-857.22787,2077.306618, + 0.698637,-0.507317,0.504516,1059.821204,-839.77446,2080.775682, + 0.546216,-0.572323,0.611633,1045.662989,-847.795796,2088.790972, + 0.558056,-0.682755,0.471614,1045.662989,-857.22787,2077.306618, + 0.374954,-0.654439,0.656596,1029.509968,-853.756172,2094.746857, + 0.374999,-0.769959,0.516274,1029.509968,-864.236531,2081.986126, + 0.374954,-0.654439,0.656596,1029.509968,-853.756172,2094.746857, + 0.558056,-0.682755,0.471614,1045.662989,-857.22787,2077.306618, + 0.546216,-0.572323,0.611633,1045.662989,-847.795796,2088.790972, + 0.374999,-0.769959,0.516274,1029.509968,-864.236531,2081.986126, + 0.190585,-0.693466,0.694825,1011.982852,-857.426537,2098.414455, + 0.190611,-0.815706,0.54616,1011.982852,-868.552424,2084.86774, + 0.190585,-0.693466,0.694825,1011.982852,-857.426537,2098.414455, + 0.374999,-0.769959,0.516274,1029.509968,-864.236531,2081.986126, + 0.374954,-0.654439,0.656596,1029.509968,-853.756172,2094.746857, + 0.190611,-0.815706,0.54616,1011.982852,-868.552424,2084.86774, + 0.095465,-0.726343,0.680671,993.755282,-858.663722,2099.650708, + 0.095479,-0.845197,0.525857,993.755282,-870.007199,2085.839058, + 0.095465,-0.726343,0.680671,993.755282,-858.663722,2099.650708, + 0.190611,-0.815706,0.54616,1011.982852,-868.552424,2084.86774, + 0.190585,-0.693466,0.694825,1011.982852,-857.426537,2098.414455, + 0,-0.812587,0.582839,993.755282,-969.443953,2152.230499, + 0,-0.706845,0.707368,947.039602,-943.22773,2184.150985, + 0,-0.849076,0.52827,947.039602,-969.443953,2152.230499, + 0,-0.706845,0.707368,947.039602,-943.22773,2184.150985, + 0,-0.812587,0.582839,993.755282,-969.443953,2152.230499, + 0,-0.706845,0.707368,993.755282,-943.22773,2184.150985, + -0.698208,-0.581726,0.417253,947.039602,-969.443953,2152.230499, + -0.698174,-0.522394,0.489549,900.323922,-910.985237,2151.932791, + -0.698225,-0.607835,0.378179,900.323922,-931.530793,2126.916827, + -0.698174,-0.522394,0.489549,900.323922,-910.985237,2151.932791, + -0.698208,-0.581726,0.417253,947.039602,-969.443953,2152.230499, + -0.698156,-0.489171,0.522771,947.039602,-943.22773,2184.150985, + 0.698174,-0.522394,0.489549,900.323922,-910.985237,2151.932791, + 0.698208,-0.581726,0.417253,853.608242,-969.443953,2152.230499, + 0.698225,-0.607835,0.378179,900.323922,-931.530793,2126.916827, + 0.698208,-0.581726,0.417253,853.608242,-969.443953,2152.230499, + 0.698174,-0.522394,0.489549,900.323922,-910.985237,2151.932791, + 0.698156,-0.489171,0.522771,853.608242,-943.22773,2184.150985, + -0.698208,-0.581726,0.417253,853.608242,-969.443953,2152.230499, + -0.698174,-0.522394,0.489549,806.892562,-910.985237,2151.932791, + -0.698225,-0.607835,0.378179,806.892562,-931.530793,2126.916827, + -0.698174,-0.522394,0.489549,806.892562,-910.985237,2151.932791, + -0.698208,-0.581726,0.417253,853.608242,-969.443953,2152.230499, + -0.698156,-0.489171,0.522771,853.608242,-943.22773,2184.150985, + 0.698174,-0.522394,0.489549,806.892562,-910.985237,2151.932791, + 0.698208,-0.581726,0.417253,760.176882,-969.443953,2152.230499, + 0.698225,-0.607835,0.378179,806.892562,-931.530793,2126.916827, + 0.698208,-0.581726,0.417253,760.176882,-969.443953,2152.230499, + 0.698174,-0.522394,0.489549,806.892562,-910.985237,2151.932791, + 0.698156,-0.489171,0.522771,760.176882,-943.22773,2184.150985, + -0.698208,-0.581726,0.417253,760.176882,-969.443953,2152.230499, + -0.698174,-0.522394,0.489549,713.461202,-910.985237,2151.932791, + -0.698225,-0.607835,0.378179,713.461202,-931.530793,2126.916827, + -0.698174,-0.522394,0.489549,713.461202,-910.985237,2151.932791, + -0.698208,-0.581726,0.417253,760.176882,-969.443953,2152.230499, + -0.698156,-0.489171,0.522771,760.176882,-943.22773,2184.150985, + 0.698174,-0.522394,0.489549,713.461202,-910.985237,2151.932791, + 0.698208,-0.581726,0.417253,666.745522,-969.443953,2152.230499, + 0.698225,-0.607835,0.378179,713.461202,-931.530793,2126.916827, + 0.698208,-0.581726,0.417253,666.745522,-969.443953,2152.230499, + 0.698174,-0.522394,0.489549,713.461202,-910.985237,2151.932791, + 0.698156,-0.489171,0.522771,666.745522,-943.22773,2184.150985, + 0,-0.812587,0.582839,666.745522,-969.443953,2152.230499, + 0,-0.706845,0.707368,635.537065,-943.22773,2184.150985, + 0,-0.849076,0.52827,635.537065,-969.443953,2152.230499, + 0,-0.706845,0.707368,635.537065,-943.22773,2184.150985, + 0,-0.812587,0.582839,666.745522,-969.443953,2152.230499, + 0,-0.706845,0.707368,666.745522,-943.22773,2184.150985, + 0,-0.812587,0.582839,635.537065,-931.530793,2126.916827, + 0,-0.706845,0.707368,200.646178,-910.985237,2151.932791, + 0,-0.849076,0.52827,200.646178,-931.530793,2126.916827, + 0,-0.706845,0.707368,200.646178,-910.985237,2151.932791, + 0,-0.812587,0.582839,635.537065,-931.530793,2126.916827, + 0,-0.706845,0.707368,635.537065,-910.985237,2151.932791, + 0,-0.812587,0.582839,200.646178,-864.605096,2082.232208, + 0,-0.706845,0.707368,97.301517,-854.069611,2095.060059, + 0,-0.849076,0.52827,97.301517,-864.605096,2082.232208, + 0,-0.706845,0.707368,97.301517,-854.069611,2095.060059, + 0,-0.812587,0.582839,200.646178,-864.605096,2082.232208, + 0,-0.706845,0.707368,200.646178,-854.069611,2095.060059, + 0,-0.812587,0.582839,97.301517,-907.906118,2111.143221, + 0,-0.706845,0.707368,45.307526,-890.894103,2131.856798, + 0,-0.849076,0.52827,45.307526,-907.906118,2111.143221, + 0,-0.706845,0.707368,45.307526,-890.894103,2131.856798, + 0,-0.812587,0.582839,97.301517,-907.906118,2111.143221, + 0,-0.706845,0.707368,97.301517,-890.894103,2131.856798, + 0.975641,-0.159161,0.15097,1085.391405,-806.749765,2047.775876, + 0.920615,-0.326262,0.214527,1080.0746,-823.190478,2054.5807, + 0.975648,-0.185535,0.116996,1085.391405,-808.962844,2045.081264, + 0.920615,-0.326262,0.214527,1080.0746,-823.190478,2054.5807, + 0.975641,-0.159161,0.15097,1085.391405,-806.749765,2047.775876, + 0.920595,-0.278166,0.274097,1080.0746,-818.849373,2059.866364, + 0.920615,-0.326262,0.214527,1080.0746,-823.190478,2054.5807, + 0.825347,-0.522611,0.213727,1071.440608,-840.985802,2054.580703, + 0.920631,-0.361821,0.14671,1080.0746,-826.416209,2048.550328, + 0.825347,-0.522611,0.213727,1071.440608,-840.985802,2054.580703, + 0.920615,-0.326262,0.214527,1080.0746,-823.190478,2054.5807, + 0.825316,-0.470886,0.311641,1071.440608,-836.302765,2063.335447, + 0.825316,-0.470886,0.311641,1071.440608,-836.302765,2063.335447, + 0.698533,-0.651683,0.295568,1059.821204,-853.756153,2059.866369, + 0.825347,-0.522611,0.213727,1071.440608,-840.985802,2054.580703, + 0.698533,-0.651683,0.295568,1059.821204,-853.756153,2059.866369, + 0.825316,-0.470886,0.311641,1071.440608,-836.302765,2063.335447, + 0.712575,-0.576041,0.400516,1059.821204,-847.795777,2071.009045, + 0.698533,-0.651683,0.295568,1059.821204,-853.756153,2059.866369, + 0.558056,-0.682755,0.471614,1045.662989,-857.22787,2077.306618, + 0.546532,-0.77294,0.322284,1045.662989,-864.236534,2064.204213, + 0.558056,-0.682755,0.471614,1045.662989,-857.22787,2077.306618, + 0.698533,-0.651683,0.295568,1059.821204,-853.756153,2059.866369, + 0.712575,-0.576041,0.400516,1059.821204,-847.795777,2071.009045, + 0.546532,-0.77294,0.322284,1045.662989,-864.236534,2064.204213, + 0.374999,-0.769959,0.516274,1029.509968,-864.236531,2081.986126, + 0.375038,-0.855898,0.356068,1029.509968,-872.024141,2067.427515, + 0.374999,-0.769959,0.516274,1029.509968,-864.236531,2081.986126, + 0.546532,-0.77294,0.322284,1045.662989,-864.236534,2064.204213, + 0.558056,-0.682755,0.471614,1045.662989,-857.22787,2077.306618, + 0.375038,-0.855898,0.356068,1029.509968,-872.024141,2067.427515, + 0.190611,-0.815706,0.54616,1011.982852,-868.552424,2084.86774, + 0.190633,-0.906609,0.376455,1011.982852,-876.819704,2069.412405, + 0.190611,-0.815706,0.54616,1011.982852,-868.552424,2084.86774, + 0.375038,-0.855898,0.356068,1029.509968,-872.024141,2067.427515, + 0.374999,-0.769959,0.516274,1029.509968,-864.236531,2081.986126, + 0.190633,-0.906609,0.376455,1011.982852,-876.819704,2069.412405, + 0.095479,-0.845197,0.525857,993.755282,-870.007199,2085.839058, + 0.09549,-0.931577,0.35078,993.755282,-878.436163,2070.08146, + 0.095479,-0.845197,0.525857,993.755282,-870.007199,2085.839058, + 0.190633,-0.906609,0.376455,1011.982852,-876.819704,2069.412405, + 0.190611,-0.815706,0.54616,1011.982852,-868.552424,2084.86774, + 0,-0.91071,0.413047,993.755282,-988.924364,2115.81268, + 0,-0.849076,0.52827,947.039602,-969.443953,2152.230499, + 0,-0.935853,0.352391,947.039602,-988.924364,2115.81268, + 0,-0.849076,0.52827,947.039602,-969.443953,2152.230499, + 0,-0.91071,0.413047,993.755282,-988.924364,2115.81268, + 0,-0.812587,0.582839,993.755282,-969.443953,2152.230499, + -0.698254,-0.651931,0.295681,947.039602,-988.924364,2115.81268, + -0.698225,-0.607835,0.378179,900.323922,-931.530793,2126.916827, + -0.698266,-0.669919,0.252256,900.323922,-946.797518,2098.376319, + -0.698225,-0.607835,0.378179,900.323922,-931.530793,2126.916827, + -0.698254,-0.651931,0.295681,947.039602,-988.924364,2115.81268, + -0.698208,-0.581726,0.417253,947.039602,-969.443953,2152.230499, + 0.698225,-0.607835,0.378179,900.323922,-931.530793,2126.916827, + 0.698254,-0.651931,0.295681,853.608242,-988.924364,2115.81268, + 0.698266,-0.669919,0.252256,900.323922,-946.797518,2098.376319, + 0.698254,-0.651931,0.295681,853.608242,-988.924364,2115.81268, + 0.698225,-0.607835,0.378179,900.323922,-931.530793,2126.916827, + 0.698208,-0.581726,0.417253,853.608242,-969.443953,2152.230499, + -0.698254,-0.651931,0.295681,853.608242,-988.924364,2115.81268, + -0.698225,-0.607835,0.378179,806.892562,-931.530793,2126.916827, + -0.698266,-0.669919,0.252256,806.892562,-946.797518,2098.376319, + -0.698225,-0.607835,0.378179,806.892562,-931.530793,2126.916827, + -0.698254,-0.651931,0.295681,853.608242,-988.924364,2115.81268, + -0.698208,-0.581726,0.417253,853.608242,-969.443953,2152.230499, + 0.698225,-0.607835,0.378179,806.892562,-931.530793,2126.916827, + 0.698254,-0.651931,0.295681,760.176882,-988.924364,2115.81268, + 0.698266,-0.669919,0.252256,806.892562,-946.797518,2098.376319, + 0.698254,-0.651931,0.295681,760.176882,-988.924364,2115.81268, + 0.698225,-0.607835,0.378179,806.892562,-931.530793,2126.916827, + 0.698208,-0.581726,0.417253,760.176882,-969.443953,2152.230499, + -0.698254,-0.651931,0.295681,760.176882,-988.924364,2115.81268, + -0.698225,-0.607835,0.378179,713.461202,-931.530793,2126.916827, + -0.698266,-0.669919,0.252256,713.461202,-946.797518,2098.376319, + -0.698225,-0.607835,0.378179,713.461202,-931.530793,2126.916827, + -0.698254,-0.651931,0.295681,760.176882,-988.924364,2115.81268, + -0.698208,-0.581726,0.417253,760.176882,-969.443953,2152.230499, + 0.698225,-0.607835,0.378179,713.461202,-931.530793,2126.916827, + 0.698254,-0.651931,0.295681,666.745522,-988.924364,2115.81268, + 0.698266,-0.669919,0.252256,713.461202,-946.797518,2098.376319, + 0.698254,-0.651931,0.295681,666.745522,-988.924364,2115.81268, + 0.698225,-0.607835,0.378179,713.461202,-931.530793,2126.916827, + 0.698208,-0.581726,0.417253,666.745522,-969.443953,2152.230499, + 0,-0.91071,0.413047,666.745522,-988.924364,2115.81268, + 0,-0.849076,0.52827,635.537065,-969.443953,2152.230499, + 0,-0.935853,0.352391,635.537065,-988.924364,2115.81268, + 0,-0.849076,0.52827,635.537065,-969.443953,2152.230499, + 0,-0.91071,0.413047,666.745522,-988.924364,2115.81268, + 0,-0.812587,0.582839,666.745522,-969.443953,2152.230499, + 0,-0.91071,0.413047,635.537065,-946.797518,2098.376319, + 0,-0.849076,0.52827,200.646178,-931.530793,2126.916827, + 0,-0.935853,0.352391,200.646178,-946.797518,2098.376319, + 0,-0.849076,0.52827,200.646178,-931.530793,2126.916827, + 0,-0.91071,0.413047,635.537065,-946.797518,2098.376319, + 0,-0.812587,0.582839,635.537065,-931.530793,2126.916827, + 0,-0.91071,0.413047,200.646178,-872.433668,2067.597018, + 0,-0.849076,0.52827,97.301517,-864.605096,2082.232208, + 0,-0.935853,0.352391,97.301517,-872.433668,2067.597018, + 0,-0.849076,0.52827,97.301517,-864.605096,2082.232208, + 0,-0.91071,0.413047,200.646178,-872.433668,2067.597018, + 0,-0.812587,0.582839,200.646178,-864.605096,2082.232208, + 0,-0.91071,0.413047,97.301517,-920.547185,2087.51127, + 0,-0.849076,0.52827,45.307526,-907.906118,2111.143221, + 0,-0.935853,0.352391,45.307526,-920.547185,2087.51127, + 0,-0.849076,0.52827,45.307526,-907.906118,2111.143221, + 0,-0.91071,0.413047,97.301517,-920.547185,2087.51127, + 0,-0.812587,0.582839,97.301517,-907.906118,2111.143221, + 0.975648,-0.185535,0.116996,1085.391405,-808.962844,2045.081264, + 0.920631,-0.361821,0.14671,1080.0746,-826.416209,2048.550328, + 0.975653,-0.204779,0.078525,1085.391405,-810.60731,2042.007003, + 0.920631,-0.361821,0.14671,1080.0746,-826.416209,2048.550328, + 0.975648,-0.185535,0.116996,1085.391405,-808.962844,2045.081264, + 0.920615,-0.326262,0.214527,1080.0746,-823.190478,2054.5807, + 0.920631,-0.361821,0.14671,1080.0746,-826.416209,2048.550328, + 0.825368,-0.554249,0.10759,1071.440608,-843.869602,2045.081252, + 0.920642,-0.383474,0.073251,1080.0746,-828.402605,2042.006994, + 0.825368,-0.554249,0.10759,1071.440608,-843.869602,2045.081252, + 0.920631,-0.361821,0.14671,1080.0746,-826.416209,2048.550328, + 0.825347,-0.522611,0.213727,1071.440608,-840.985802,2054.580703, + 0.825347,-0.522611,0.213727,1071.440608,-840.985802,2054.580703, + 0.698565,-0.696813,0.162664,1059.821204,-857.426535,2047.775861, + 0.825368,-0.554249,0.10759,1071.440608,-843.869602,2045.081252, + 0.698565,-0.696813,0.162664,1059.821204,-857.426535,2047.775861, + 0.825347,-0.522611,0.213727,1071.440608,-840.985802,2054.580703, + 0.698533,-0.651683,0.295568,1059.821204,-853.756153,2059.866369, + 0.698565,-0.696813,0.162664,1059.821204,-857.426535,2047.775861, + 0.546532,-0.77294,0.322284,1045.662989,-864.236534,2064.204213, + 0.546562,-0.820963,0.165195,1045.662989,-868.552448,2049.987275, + 0.546532,-0.77294,0.322284,1045.662989,-864.236534,2064.204213, + 0.698565,-0.696813,0.162664,1059.821204,-857.426535,2047.775861, + 0.698533,-0.651683,0.295568,1059.821204,-853.756153,2059.866369, + 0.546562,-0.820963,0.165195,1045.662989,-868.552448,2049.987275, + 0.375038,-0.855898,0.356068,1029.509968,-872.024141,2067.427515, + 0.375063,-0.90893,0.182138,1029.509968,-876.819727,2051.6305, + 0.375038,-0.855898,0.356068,1029.509968,-872.024141,2067.427515, + 0.546562,-0.820963,0.165195,1045.662989,-868.552448,2049.987275, + 0.546532,-0.77294,0.322284,1045.662989,-864.236534,2064.204213, + 0.375063,-0.90893,0.182138,1029.509968,-876.819727,2051.6305, + 0.190633,-0.906609,0.376455,1011.982852,-876.819704,2069.412405, + 0.190647,-0.962652,0.192235,1011.982852,-881.910669,2052.642388, + 0.190633,-0.906609,0.376455,1011.982852,-876.819704,2069.412405, + 0.375063,-0.90893,0.182138,1029.509968,-876.819727,2051.6305, + 0.375038,-0.855898,0.356068,1029.509968,-872.024141,2067.427515, + 0.190647,-0.962652,0.192235,1011.982852,-881.910669,2052.642388, + 0.09549,-0.931577,0.35078,993.755282,-878.436163,2070.08146, + 0.095497,-0.98213,0.162176,993.755282,-883.626694,2052.983469, + 0.09549,-0.931577,0.35078,993.755282,-878.436163,2070.08146, + 0.190647,-0.962652,0.192235,1011.982852,-881.910669,2052.642388, + 0.190633,-0.906609,0.376455,1011.982852,-876.819704,2069.412405, + 0,-0.973818,0.227328,993.755282,-1000.920342,2076.297043, + 0,-0.935853,0.352391,947.039602,-988.924364,2115.81268, + 0,-0.986639,0.16292,947.039602,-1000.920342,2076.297043, + 0,-0.935853,0.352391,947.039602,-988.924364,2115.81268, + 0,-0.973818,0.227328,993.755282,-1000.920342,2076.297043, + 0,-0.91071,0.413047,993.755282,-988.924364,2115.81268, + -0.698482,-0.701857,0.139712,947.039602,-1000.920342,2076.297043, + -0.698266,-0.669919,0.252256,900.323922,-946.797518,2098.376319, + -0.698482,-0.701857,0.139712,900.323922,-956.19872,2067.408064, + -0.698266,-0.669919,0.252256,900.323922,-946.797518,2098.376319, + -0.698482,-0.701857,0.139712,947.039602,-1000.920342,2076.297043, + -0.698254,-0.651931,0.295681,947.039602,-988.924364,2115.81268, + 0.698266,-0.669919,0.252256,900.323922,-946.797518,2098.376319, + 0.698286,-0.697077,0.162726,853.608242,-1000.920342,2076.297043, + 0.698293,-0.706248,0.116621,900.323922,-956.19872,2067.408064, + 0.698286,-0.697077,0.162726,853.608242,-1000.920342,2076.297043, + 0.698266,-0.669919,0.252256,900.323922,-946.797518,2098.376319, + 0.698254,-0.651931,0.295681,853.608242,-988.924364,2115.81268, + -0.698482,-0.701857,0.139712,853.608242,-1000.920342,2076.297043, + -0.698266,-0.669919,0.252256,806.892562,-946.797518,2098.376319, + -0.698482,-0.701857,0.139712,806.892562,-956.19872,2067.408064, + -0.698266,-0.669919,0.252256,806.892562,-946.797518,2098.376319, + -0.698482,-0.701857,0.139712,853.608242,-1000.920342,2076.297043, + -0.698254,-0.651931,0.295681,853.608242,-988.924364,2115.81268, + 0.698266,-0.669919,0.252256,806.892562,-946.797518,2098.376319, + 0.698286,-0.697077,0.162726,760.176882,-1000.920342,2076.297043, + 0.698293,-0.706248,0.116621,806.892562,-956.19872,2067.408064, + 0.698286,-0.697077,0.162726,760.176882,-1000.920342,2076.297043, + 0.698266,-0.669919,0.252256,806.892562,-946.797518,2098.376319, + 0.698254,-0.651931,0.295681,760.176882,-988.924364,2115.81268, + -0.698482,-0.701857,0.139712,760.176882,-1000.920342,2076.297043, + -0.698266,-0.669919,0.252256,713.461202,-946.797518,2098.376319, + -0.698482,-0.701857,0.139712,713.461202,-956.19872,2067.408064, + -0.698266,-0.669919,0.252256,713.461202,-946.797518,2098.376319, + -0.698482,-0.701857,0.139712,760.176882,-1000.920342,2076.297043, + -0.698254,-0.651931,0.295681,760.176882,-988.924364,2115.81268, + 0.698266,-0.669919,0.252256,713.461202,-946.797518,2098.376319, + 0.698286,-0.697077,0.162726,666.745522,-1000.920342,2076.297043, + 0.698293,-0.706248,0.116621,713.461202,-956.19872,2067.408064, + 0.698286,-0.697077,0.162726,666.745522,-1000.920342,2076.297043, + 0.698266,-0.669919,0.252256,713.461202,-946.797518,2098.376319, + 0.698254,-0.651931,0.295681,666.745522,-988.924364,2115.81268, + 0,-0.973818,0.227328,666.745522,-1000.920342,2076.297043, + 0,-0.935853,0.352391,635.537065,-988.924364,2115.81268, + 0,-0.986639,0.16292,635.537065,-1000.920342,2076.297043, + 0,-0.935853,0.352391,635.537065,-988.924364,2115.81268, + 0,-0.973818,0.227328,666.745522,-1000.920342,2076.297043, + 0,-0.91071,0.413047,666.745522,-988.924364,2115.81268, + 0,-0.973818,0.227328,635.537065,-956.19872,2067.408064, + 0,-0.935853,0.352391,200.646178,-946.797518,2098.376319, + 0,-0.986639,0.16292,200.646178,-956.19872,2067.408064, + 0,-0.935853,0.352391,200.646178,-946.797518,2098.376319, + 0,-0.973818,0.227328,635.537065,-956.19872,2067.408064, + 0,-0.91071,0.413047,635.537065,-946.797518,2098.376319, + 0,-0.973818,0.227328,200.646178,-877.254479,2051.716912, + 0,-0.935853,0.352391,97.301517,-872.433668,2067.597018, + 0,-0.986639,0.16292,97.301517,-877.254479,2051.716912, + 0,-0.935853,0.352391,97.301517,-872.433668,2067.597018, + 0,-0.973818,0.227328,200.646178,-877.254479,2051.716912, + 0,-0.91071,0.413047,200.646178,-872.433668,2067.597018, + 0,-0.973818,0.227328,97.301517,-928.331516,2061.86911, + 0,-0.935853,0.352391,45.307526,-920.547185,2087.51127, + 0,-0.986639,0.16292,45.307526,-928.331516,2061.86911, + 0,-0.935853,0.352391,45.307526,-920.547185,2087.51127, + 0,-0.973818,0.227328,97.301517,-928.331516,2061.86911, + 0,-0.91071,0.413047,97.301517,-920.547185,2087.51127, + 0.975653,-0.204779,0.078525,1085.391405,-810.60731,2042.007003, + 0.920642,-0.383474,0.073251,1080.0746,-828.402605,2042.006994, + 0.975657,-0.216153,0.037036,1085.391405,-811.619967,2038.671235, + 0.920642,-0.383474,0.073251,1080.0746,-828.402605,2042.006994, + 0.975653,-0.204779,0.078525,1085.391405,-810.60731,2042.007003, + 0.920631,-0.361821,0.14671,1080.0746,-826.416209,2048.550328, + 0.920642,-0.383474,0.073251,1080.0746,-828.402605,2042.006994, + 0.842436,-0.536198,0.052851,1071.440608,-844.843343,2035.202153, + 0.932578,-0.359229,0.035408,1080.0746,-829.073329,2035.202153, + 0.842436,-0.536198,0.052851,1071.440608,-844.843343,2035.202153, + 0.920642,-0.383474,0.073251,1080.0746,-828.402605,2042.006994, + 0.825368,-0.554249,0.10759,1071.440608,-843.869602,2045.081252, + 0.825368,-0.554249,0.10759,1071.440608,-843.869602,2045.081252, + 0.69704,-0.713574,0.070334,1059.821204,-858.665871,2035.202153, + 0.842436,-0.536198,0.052851,1071.440608,-844.843343,2035.202153, + 0.69704,-0.713574,0.070334,1059.821204,-858.665871,2035.202153, + 0.825368,-0.554249,0.10759,1071.440608,-843.869602,2045.081252, + 0.698565,-0.696813,0.162664,1059.821204,-857.426535,2047.775861, + 0.69704,-0.713574,0.070334,1059.821204,-858.665871,2035.202153, + 0.546562,-0.820963,0.165195,1045.662989,-868.552448,2049.987275, + 0.517228,-0.851721,0.08395,1045.662989,-870.009753,2035.202153, + 0.546562,-0.820963,0.165195,1045.662989,-868.552448,2049.987275, + 0.69704,-0.713574,0.070334,1059.821204,-858.665871,2035.202153, + 0.698565,-0.696813,0.162664,1059.821204,-857.426535,2047.775861, + 0.517228,-0.851721,0.08395,1045.662989,-870.009753,2035.202153, + 0.375063,-0.90893,0.182138,1029.509968,-876.819727,2051.6305, + 0.343504,-0.934622,0.092122,1029.509968,-878.438998,2035.202153, + 0.375063,-0.90893,0.182138,1029.509968,-876.819727,2051.6305, + 0.517228,-0.851721,0.08395,1045.662989,-870.009753,2035.202153, + 0.546562,-0.820963,0.165195,1045.662989,-868.552448,2049.987275, + 0.343504,-0.934622,0.092122,1029.509968,-878.438998,2035.202153, + 0.190647,-0.962652,0.192235,1011.982852,-881.910669,2052.642388, + 0.158272,-0.982634,0.096854,1011.982852,-883.629678,2035.202153, + 0.190647,-0.962652,0.192235,1011.982852,-881.910669,2052.642388, + 0.343504,-0.934622,0.092122,1029.509968,-878.438998,2035.202153, + 0.375063,-0.90893,0.182138,1029.509968,-876.819727,2051.6305, + 0.158272,-0.982634,0.096854,1011.982852,-883.629678,2035.202153, + 0.095497,-0.98213,0.162176,993.755282,-883.626694,2052.983469, + 0.095093,-0.990668,0.097646,993.755282,-885.379322,2035.202153, + 0.095497,-0.98213,0.162176,993.755282,-883.626694,2052.983469, + 0.158272,-0.982634,0.096854,1011.982852,-883.629678,2035.202153, + 0.190647,-0.962652,0.192235,1011.982852,-881.910669,2052.642388, + 0,-0.995178,0.09809,993.755282,-1004.970888,2035.202153, + 0,-0.986639,0.16292,947.039602,-1000.920342,2076.297043, + 0,-0.995178,0.09809,947.039602,-1004.970888,2035.202153, + 0,-0.986639,0.16292,947.039602,-1000.920342,2076.297043, + 0,-0.995178,0.09809,993.755282,-1004.970888,2035.202153, + 0,-0.973818,0.227328,993.755282,-1000.920342,2076.297043, + -0.698482,-0.701857,0.139712,947.039602,-1000.920342,2076.297043, + -0.696761,-0.713844,0.070361,900.323922,-959.373118,2035.202153, + -0.696761,-0.713844,0.070361,947.039602,-1004.970888,2035.202153, + -0.696761,-0.713844,0.070361,900.323922,-959.373118,2035.202153, + -0.698482,-0.701857,0.139712,947.039602,-1000.920342,2076.297043, + -0.698482,-0.701857,0.139712,900.323922,-956.19872,2067.408064, + 0.698293,-0.706248,0.116621,900.323922,-956.19872,2067.408064, + 0.696761,-0.713844,0.070361,853.608242,-1004.970888,2035.202153, + 0.696761,-0.713844,0.070361,900.323922,-959.373118,2035.202153, + 0.696761,-0.713844,0.070361,853.608242,-1004.970888,2035.202153, + 0.698293,-0.706248,0.116621,900.323922,-956.19872,2067.408064, + 0.698286,-0.697077,0.162726,853.608242,-1000.920342,2076.297043, + -0.698482,-0.701857,0.139712,853.608242,-1000.920342,2076.297043, + -0.696761,-0.713844,0.070361,806.892562,-959.373118,2035.202153, + -0.696761,-0.713844,0.070361,853.608242,-1004.970888,2035.202153, + -0.696761,-0.713844,0.070361,806.892562,-959.373118,2035.202153, + -0.698482,-0.701857,0.139712,853.608242,-1000.920342,2076.297043, + -0.698482,-0.701857,0.139712,806.892562,-956.19872,2067.408064, + 0.698293,-0.706248,0.116621,806.892562,-956.19872,2067.408064, + 0.696761,-0.713844,0.070361,760.176882,-1004.970888,2035.202153, + 0.696761,-0.713844,0.070361,806.892562,-959.373118,2035.202153, + 0.696761,-0.713844,0.070361,760.176882,-1004.970888,2035.202153, + 0.698293,-0.706248,0.116621,806.892562,-956.19872,2067.408064, + 0.698286,-0.697077,0.162726,760.176882,-1000.920342,2076.297043, + -0.698482,-0.701857,0.139712,760.176882,-1000.920342,2076.297043, + -0.696761,-0.713844,0.070361,713.461202,-959.373118,2035.202153, + -0.696761,-0.713844,0.070361,760.176882,-1004.970888,2035.202153, + -0.696761,-0.713844,0.070361,713.461202,-959.373118,2035.202153, + -0.698482,-0.701857,0.139712,760.176882,-1000.920342,2076.297043, + -0.698482,-0.701857,0.139712,713.461202,-956.19872,2067.408064, + 0.698293,-0.706248,0.116621,713.461202,-956.19872,2067.408064, + 0.696761,-0.713844,0.070361,666.745522,-1004.970888,2035.202153, + 0.696761,-0.713844,0.070361,713.461202,-959.373118,2035.202153, + 0.696761,-0.713844,0.070361,666.745522,-1004.970888,2035.202153, + 0.698293,-0.706248,0.116621,713.461202,-956.19872,2067.408064, + 0.698286,-0.697077,0.162726,666.745522,-1000.920342,2076.297043, + 0,-0.995178,0.09809,666.745522,-1004.970888,2035.202153, + 0,-0.986639,0.16292,635.537065,-1000.920342,2076.297043, + 0,-0.995178,0.09809,635.537065,-1004.970888,2035.202153, + 0,-0.986639,0.16292,635.537065,-1000.920342,2076.297043, + 0,-0.995178,0.09809,666.745522,-1004.970888,2035.202153, + 0,-0.973818,0.227328,666.745522,-1000.920342,2076.297043, + 0,-0.995178,0.09809,635.537065,-959.373118,2035.202153, + 0,-0.986639,0.16292,200.646178,-956.19872,2067.408064, + 0,-0.995178,0.09809,200.646178,-959.373118,2035.202153, + 0,-0.986639,0.16292,200.646178,-956.19872,2067.408064, + 0,-0.995178,0.09809,635.537065,-959.373118,2035.202153, + 0,-0.973818,0.227328,635.537065,-956.19872,2067.408064, + 0,-0.995178,0.09809,200.646178,-878.882267,2035.202153, + 0,-0.986639,0.16292,97.301517,-877.254479,2051.716912, + 0,-0.995178,0.09809,97.301517,-878.882267,2035.202153, + 0,-0.986639,0.16292,97.301517,-877.254479,2051.716912, + 0,-0.995178,0.09809,200.646178,-878.882267,2035.202153, + 0,-0.973818,0.227328,200.646178,-877.254479,2051.716912, + 0,-0.995178,0.09809,97.301517,-930.959963,2035.202153, + 0,-0.986639,0.16292,45.307526,-928.331516,2061.86911, + 0,-0.995178,0.09809,45.307526,-930.959963,2035.202153, + 0,-0.986639,0.16292,45.307526,-928.331516,2061.86911, + 0,-0.995178,0.09809,97.301517,-930.959963,2035.202153, + 0,-0.973818,0.227328,97.301517,-928.331516,2061.86911, + 0.975657,-0.216153,0.037036,1085.391405,-811.619967,2038.671235, + 0.932578,-0.359229,0.035408,1080.0746,-829.073329,2035.202153, + 0.979702,-0.199495,0.019663,1085.391405,-811.9619,2035.202153, + 0.932578,-0.359229,0.035408,1080.0746,-829.073329,2035.202153, + 0.975657,-0.216153,0.037036,1085.391405,-811.619967,2038.671235, + 0.920642,-0.383474,0.073251,1080.0746,-828.402605,2042.006994, + -1,0,0,635.537065,-835.292444,2241.800118, + -1,0,0,635.537065,-794.16656,2200.284205, + -1,0,0,635.537065,-826.396761,2197.1122, + -1,0,0,635.537065,-794.16656,2200.284205, + -1,0,0,635.537065,-835.292444,2241.800118, + -1,0,0,635.537065,-794.16656,2245.847611, + 0.972352,-0.022872,0.232398,1085.391405,-794.16656,2052.984082, + 0.975625,-0.048525,0.214014,1085.391405,-797.638259,2052.642407, + 0.995845,-0.06437,0.064418,1087.186642,-794.16656,2035.202153, + 0.975625,-0.048525,0.214014,1085.391405,-797.638259,2052.642407, + 0.975629,-0.089314,0.200429,1085.391405,-800.976542,2051.630513, + 0.995845,-0.06437,0.064418,1087.186642,-794.16656,2035.202153, + 0.975629,-0.089314,0.200429,1085.391405,-800.976542,2051.630513, + 0.975635,-0.126671,0.179142,1085.391405,-804.053121,2049.987287, + 0.995845,-0.06437,0.064418,1087.186642,-794.16656,2035.202153, + 0.975635,-0.126671,0.179142,1085.391405,-804.053121,2049.987287, + 0.975641,-0.159161,0.15097,1085.391405,-806.749765,2047.775876, + 0.995845,-0.06437,0.064418,1087.186642,-794.16656,2035.202153, + 0.975641,-0.159161,0.15097,1085.391405,-806.749765,2047.775876, + 0.975648,-0.185535,0.116996,1085.391405,-808.962844,2045.081264, + 0.995845,-0.06437,0.064418,1087.186642,-794.16656,2035.202153, + 0.975648,-0.185535,0.116996,1085.391405,-808.962844,2045.081264, + 0.975653,-0.204779,0.078525,1085.391405,-810.60731,2042.007003, + 0.995845,-0.06437,0.064418,1087.186642,-794.16656,2035.202153, + 0.975653,-0.204779,0.078525,1085.391405,-810.60731,2042.007003, + 0.975657,-0.216153,0.037036,1085.391405,-811.619967,2038.671235, + 0.995845,-0.06437,0.064418,1087.186642,-794.16656,2035.202153, + 0.975657,-0.216153,0.037036,1085.391405,-811.619967,2038.671235, + 0.979702,-0.199495,0.019663,1085.391405,-811.9619,2035.202153, + 0.995845,-0.06437,0.064418,1087.186642,-794.16656,2035.202153, + 1,0,0,993.755282,-883.626694,2052.983469, + 1,0,0,993.755282,-1004.970888,2035.202153, + 1,0,0,993.755282,-885.379322,2035.202153, + 1,0,0,993.755282,-1004.970888,2035.202153, + 1,0,0,993.755282,-883.626694,2052.983469, + 1,0,0,993.755282,-1000.920342,2076.297043, + 1,0,0,97.301517,-872.433668,2067.597018, + 1,0,0,97.301517,-928.331516,2061.86911, + 1,0,0,97.301517,-877.254479,2051.716912, + 1,0,0,97.301517,-928.331516,2061.86911, + 1,0,0,97.301517,-872.433668,2067.597018, + 1,0,0,97.301517,-920.547185,2087.51127, + -1,0,0,45.307526,-920.547185,2087.51127, + -1,0,0,45.307526,-794.16656,2035.202153, + -1,0,0,45.307526,-928.331516,2061.86911, + -1,0,0,200.646178,-826.396761,2197.1122, + -1,0,0,200.646178,-794.16656,2119.854015, + -1,0,0,200.646178,-810.693775,2118.227454, + -1,0,0,200.646178,-794.16656,2119.854015, + -1,0,0,200.646178,-826.396761,2197.1122, + -1,0,0,200.646178,-794.16656,2200.284205, + -1,0,0,45.307526,-928.331516,2061.86911, + -1,0,0,45.307526,-794.16656,2035.202153, + -1,0,0,45.307526,-930.959963,2035.202153, + -1,0,0,45.307526,-794.16656,2171.892463, + -1,0,0,45.307526,-794.16656,2035.202153, + -1,0,0,45.307526,-820.853629,2169.265997, + -1,0,0,45.307526,-907.906118,2111.143221, + -1,0,0,45.307526,-794.16656,2035.202153, + -1,0,0,45.307526,-920.547185,2087.51127, + -1,0,0,45.307526,-890.894103,2131.856798, + -1,0,0,45.307526,-794.16656,2035.202153, + -1,0,0,45.307526,-907.906118,2111.143221, + -1,0,0,45.307526,-870.164903,2148.855992, + -1,0,0,45.307526,-794.16656,2035.202153, + -1,0,0,45.307526,-890.894103,2131.856798, + -1,0,0,45.307526,-846.515129,2161.487533, + -1,0,0,45.307526,-794.16656,2035.202153, + -1,0,0,45.307526,-870.164903,2148.855992, + -1,0,0,45.307526,-820.853629,2169.265997, + -1,0,0,45.307526,-794.16656,2035.202153, + -1,0,0,45.307526,-846.515129,2161.487533, + -1,0,0,200.646178,-956.19872,2067.408064, + -1,0,0,200.646178,-878.882267,2035.202153, + -1,0,0,200.646178,-959.373118,2035.202153, + -1,0,0,200.646178,-878.882267,2035.202153, + -1,0,0,200.646178,-956.19872,2067.408064, + -1,0,0,200.646178,-877.254479,2051.716912, + -1,0,0,200.646178,-956.19872,2067.408064, + -1,0,0,200.646178,-872.433668,2067.597018, + -1,0,0,200.646178,-877.254479,2051.716912, + -1,0,0,200.646178,-872.433668,2067.597018, + -1,0,0,200.646178,-956.19872,2067.408064, + -1,0,0,200.646178,-946.797518,2098.376319, + -1,0,0,200.646178,-946.797518,2098.376319, + -1,0,0,200.646178,-864.605096,2082.232208, + -1,0,0,200.646178,-872.433668,2067.597018, + -1,0,0,200.646178,-864.605096,2082.232208, + -1,0,0,200.646178,-946.797518,2098.376319, + -1,0,0,200.646178,-931.530793,2126.916827, + -1,0,0,200.646178,-931.530793,2126.916827, + -1,0,0,200.646178,-854.069611,2095.060059, + -1,0,0,200.646178,-864.605096,2082.232208, + -1,0,0,200.646178,-854.069611,2095.060059, + -1,0,0,200.646178,-931.530793,2126.916827, + -1,0,0,200.646178,-910.985237,2151.932791, + -1,0,0,200.646178,-910.985237,2151.932791, + -1,0,0,200.646178,-841.232085,2105.587604, + -1,0,0,200.646178,-854.069611,2095.060059, + -1,0,0,200.646178,-841.232085,2105.587604, + -1,0,0,200.646178,-910.985237,2151.932791, + -1,0,0,200.646178,-885.950406,2172.462863, + -1,0,0,200.646178,-885.950406,2172.462863, + -1,0,0,200.646178,-826.585858,2113.410276, + -1,0,0,200.646178,-841.232085,2105.587604, + -1,0,0,200.646178,-826.585858,2113.410276, + -1,0,0,200.646178,-885.950406,2172.462863, + -1,0,0,200.646178,-857.388373,2187.718082, + -1,0,0,200.646178,-857.388373,2187.718082, + -1,0,0,200.646178,-810.693775,2118.227454, + -1,0,0,200.646178,-826.585858,2113.410276, + -1,0,0,200.646178,-810.693775,2118.227454, + -1,0,0,200.646178,-857.388373,2187.718082, + -1,0,0,200.646178,-826.396761,2197.1122, + -1,0,0,635.537065,-1000.920342,2076.297043, + -1,0,0,635.537065,-959.373118,2035.202153, + -1,0,0,635.537065,-1004.970888,2035.202153, + -1,0,0,635.537065,-959.373118,2035.202153, + -1,0,0,635.537065,-1000.920342,2076.297043, + -1,0,0,635.537065,-956.19872,2067.408064, + -1,0,0,635.537065,-1000.920342,2076.297043, + -1,0,0,635.537065,-946.797518,2098.376319, + -1,0,0,635.537065,-956.19872,2067.408064, + -1,0,0,635.537065,-946.797518,2098.376319, + -1,0,0,635.537065,-1000.920342,2076.297043, + -1,0,0,635.537065,-988.924364,2115.81268, + -1,0,0,635.537065,-988.924364,2115.81268, + -1,0,0,635.537065,-931.530793,2126.916827, + -1,0,0,635.537065,-946.797518,2098.376319, + -1,0,0,635.537065,-931.530793,2126.916827, + -1,0,0,635.537065,-988.924364,2115.81268, + -1,0,0,635.537065,-969.443953,2152.230499, + -1,0,0,635.537065,-969.443953,2152.230499, + -1,0,0,635.537065,-910.985237,2151.932791, + -1,0,0,635.537065,-931.530793,2126.916827, + -1,0,0,635.537065,-910.985237,2151.932791, + -1,0,0,635.537065,-969.443953,2152.230499, + -1,0,0,635.537065,-943.22773,2184.150985, + -1,0,0,635.537065,-943.22773,2184.150985, + -1,0,0,635.537065,-885.950406,2172.462863, + -1,0,0,635.537065,-910.985237,2151.932791, + -1,0,0,635.537065,-885.950406,2172.462863, + -1,0,0,635.537065,-943.22773,2184.150985, + -1,0,0,635.537065,-911.28317,2210.34745, + -1,0,0,635.537065,-911.28317,2210.34745, + -1,0,0,635.537065,-857.388373,2187.718082, + -1,0,0,635.537065,-885.950406,2172.462863, + -1,0,0,635.537065,-857.388373,2187.718082, + -1,0,0,635.537065,-911.28317,2210.34745, + -1,0,0,635.537065,-874.837884,2229.81318, + -1,0,0,635.537065,-874.837884,2229.81318, + -1,0,0,635.537065,-826.396761,2197.1122, + -1,0,0,635.537065,-857.388373,2187.718082, + -1,0,0,635.537065,-826.396761,2197.1122, + -1,0,0,635.537065,-874.837884,2229.81318, + -1,0,0,635.537065,-835.292444,2241.800118, + 1,0,0,993.755282,-794.16656,2126.346173, + 1,0,0,993.755282,-835.292444,2241.800118, + 1,0,0,993.755282,-811.961287,2124.594866, + 1,0,0,993.755282,-835.292444,2241.800118, + 1,0,0,993.755282,-794.16656,2126.346173, + 1,0,0,993.755282,-794.16656,2245.847611, + 1,0,0,993.755282,-878.436163,2070.08146, + 1,0,0,993.755282,-1000.920342,2076.297043, + 1,0,0,993.755282,-883.626694,2052.983469, + 1,0,0,993.755282,-1000.920342,2076.297043, + 1,0,0,993.755282,-878.436163,2070.08146, + 1,0,0,993.755282,-988.924364,2115.81268, + 1,0,0,993.755282,-870.007199,2085.839058, + 1,0,0,993.755282,-988.924364,2115.81268, + 1,0,0,993.755282,-878.436163,2070.08146, + 1,0,0,993.755282,-988.924364,2115.81268, + 1,0,0,993.755282,-870.007199,2085.839058, + 1,0,0,993.755282,-969.443953,2152.230499, + 1,0,0,993.755282,-858.663722,2099.650708, + 1,0,0,993.755282,-969.443953,2152.230499, + 1,0,0,993.755282,-870.007199,2085.839058, + 1,0,0,993.755282,-969.443953,2152.230499, + 1,0,0,993.755282,-858.663722,2099.650708, + 1,0,0,993.755282,-943.22773,2184.150985, + 1,0,0,993.755282,-844.841655,2110.985636, + 1,0,0,993.755282,-943.22773,2184.150985, + 1,0,0,993.755282,-858.663722,2099.650708, + 1,0,0,993.755282,-943.22773,2184.150985, + 1,0,0,993.755282,-844.841655,2110.985636, + 1,0,0,993.755282,-911.28317,2210.34745, + 1,0,0,993.755282,-829.072173,2119.408248, + 1,0,0,993.755282,-911.28317,2210.34745, + 1,0,0,993.755282,-844.841655,2110.985636, + 1,0,0,993.755282,-911.28317,2210.34745, + 1,0,0,993.755282,-829.072173,2119.408248, + 1,0,0,993.755282,-874.837884,2229.81318, + 1,0,0,993.755282,-811.961287,2124.594866, + 1,0,0,993.755282,-874.837884,2229.81318, + 1,0,0,993.755282,-829.072173,2119.408248, + 1,0,0,993.755282,-874.837884,2229.81318, + 1,0,0,993.755282,-811.961287,2124.594866, + 1,0,0,993.755282,-835.292444,2241.800118, + 1,0,0,97.301517,-877.254479,2051.716912, + 1,0,0,97.301517,-930.959963,2035.202153, + 1,0,0,97.301517,-878.882267,2035.202153, + 1,0,0,97.301517,-930.959963,2035.202153, + 1,0,0,97.301517,-877.254479,2051.716912, + 1,0,0,97.301517,-928.331516,2061.86911, + 1,0,0,97.301517,-854.069611,2095.060059, + 1,0,0,97.301517,-907.906118,2111.143221, + 1,0,0,97.301517,-864.605096,2082.232208, + 1,0,0,97.301517,-907.906118,2111.143221, + 1,0,0,97.301517,-854.069611,2095.060059, + 1,0,0,97.301517,-890.894103,2131.856798, + 1,0,0,97.301517,-864.605096,2082.232208, + 1,0,0,97.301517,-920.547185,2087.51127, + 1,0,0,97.301517,-872.433668,2067.597018, + 1,0,0,97.301517,-920.547185,2087.51127, + 1,0,0,97.301517,-864.605096,2082.232208, + 1,0,0,97.301517,-907.906118,2111.143221, + 1,0,0,97.301517,-826.585858,2113.410276, + 1,0,0,97.301517,-870.164903,2148.855992, + 1,0,0,97.301517,-841.232085,2105.587604, + 1,0,0,97.301517,-870.164903,2148.855992, + 1,0,0,97.301517,-826.585858,2113.410276, + 1,0,0,97.301517,-846.515129,2161.487533, + 1,0,0,97.301517,-841.232085,2105.587604, + 1,0,0,97.301517,-890.894103,2131.856798, + 1,0,0,97.301517,-854.069611,2095.060059, + 1,0,0,97.301517,-890.894103,2131.856798, + 1,0,0,97.301517,-841.232085,2105.587604, + 1,0,0,97.301517,-870.164903,2148.855992, + 1,0,0,97.301517,-794.16656,2119.854015, + 1,0,0,97.301517,-820.853629,2169.265997, + 1,0,0,97.301517,-810.693775,2118.227454, + 1,0,0,97.301517,-820.853629,2169.265997, + 1,0,0,97.301517,-794.16656,2119.854015, + 1,0,0,97.301517,-794.16656,2171.892463, + 1,0,0,97.301517,-810.693775,2118.227454, + 1,0,0,97.301517,-846.515129,2161.487533, + 1,0,0,97.301517,-826.585858,2113.410276, + 1,0,0,97.301517,-846.515129,2161.487533, + 1,0,0,97.301517,-810.693775,2118.227454, + 1,0,0,97.301517,-820.853629,2169.265997 +}; +static const struct gllist robot_arm_half_frame = { GL_N3F_V3F, GL_TRIANGLES, 1104, robot_arm_half_data, 0 }; +const struct gllist *robot_arm_half = &robot_arm_half_frame; + +static const float robot_body_half_inside_data[] = { + 0.870883,0.172314,0.460294,-899.612557,-178.944064,1773.56823, + 0.925281,0.091132,0.36817,-944.844672,0,1835.635445, + 0.91848,0.181999,0.3511,-926.689746,-184.330051,1835.635445, + 0.925281,0.091132,0.36817,-944.844672,0,1835.635445, + 0.870883,0.172314,0.460294,-899.612557,-178.944064,1773.56823, + 0.875139,0.086194,0.476133,-917.237009,0,1773.56823, + 0.962266,0.094775,-0.255071,-964.850983,0,2169.851549, + 0.91848,0.181999,-0.3511,-926.689746,-184.330051,2234.768955, + 0.952958,0.189085,-0.236891,-946.311642,-188.233089,2169.851549, + 0.91848,0.181999,-0.3511,-926.689746,-184.330051,2234.768955, + 0.962266,0.094775,-0.255071,-964.850983,0,2169.851549, + 0.925281,0.091132,-0.36817,-944.844672,0,2234.768955, + 0.973826,0.193469,0.119297,-958.198007,-190.597434,1967.393306, + 0.995185,0.098017,-0,-981.029284,-0,2035.2022, + 0.973856,0.227168,-0,-962.179081,-191.389319,2035.2022, + 0.995185,0.098017,-0,-981.029284,-0,2035.2022, + 0.973826,0.193469,0.119297,-958.198007,-190.597434,1967.393306, + 0.985604,0.097074,0.138423,-976.970216,-0,1967.393306, + 0.740863,0.278762,0.611076,-776.888194,-321.797626,1661.47676, + 0.810848,0.160167,0.562913,-865.466789,-172.152048,1715.237645, + 0.764021,0.315278,0.562913,-815.251889,-337.688389,1715.237645, + 0.810848,0.160167,0.562913,-865.466789,-172.152048,1715.237645, + 0.740863,0.278762,0.611076,-776.888194,-321.797626,1661.47676, + 0.781011,0.12887,0.611076,-824.740108,-164.051007,1661.47676, + 0.662575,0.661607,0.3511,-668.106075,-668.106075,1835.635445, + 0.808059,0.539373,0.236891,-802.244273,-536.042486,1900.552851, + 0.687306,0.686654,0.236891,-682.252673,-682.252673,1900.552851, + 0.808059,0.539373,0.236891,-802.244273,-536.042486,1900.552851, + 0.662575,0.661607,0.3511,-668.106075,-668.106075,1835.635445, + 0.778916,0.519633,0.3511,-785.609633,-524.927574,1835.635445, + 0.876472,0.172332,0.449554,-721.176029,-143.450831,680.911024, + 0.966069,0.095149,0.240119,-756.121025,0,741.194313, + 0.961634,0.1904,0.197505,-741.592372,-147.511894,741.194313, + 0.966069,0.095149,0.240119,-756.121025,0,741.194313, + 0.876472,0.172332,0.449554,-721.176029,-143.450831,680.911024, + 0.869022,0.085591,0.487313,-735.304703,0,680.911024, + 0.91848,0.181999,-0.3511,-926.689746,-184.330051,2234.768955, + 0.820532,0.338904,-0.460294,-847.416499,-351.011407,2296.83617, + 0.865325,0.357689,-0.3511,-872.922654,-361.576402,2234.768955, + 0.820532,0.338904,-0.460294,-847.416499,-351.011407,2296.83617, + 0.91848,0.181999,-0.3511,-926.689746,-184.330051,2234.768955, + 0.870883,0.172314,-0.460294,-899.612557,-178.944064,2296.83617, + 0.160167,0.810848,-0.562913,-172.152048,-865.466789,2355.166755, + -0.000898,0.887766,-0.460294,0,-917.237009,2296.83617, + 0.172314,0.870883,-0.460294,-178.944064,-899.612557,2296.83617, + -0.000898,0.887766,-0.460294,0,-917.237009,2296.83617, + 0.160167,0.810848,-0.562913,-172.152048,-865.466789,2355.166755, + -0.001099,0.826515,-0.562913,0,-882.422286,2355.166755, + 0.632456,0.632456,-0.447214,-429.428666,-429.428666,1287.75132, + 0.521108,0.727062,-0.447021,-389.30762,-582.640028,1100.8886, + 0.632456,0.632456,-0.447214,-495.494614,-495.494614,1100.8886, + 0.521108,0.727062,-0.447021,-389.30762,-582.640028,1100.8886, + 0.632456,0.632456,-0.447214,-429.428666,-429.428666,1287.75132, + 0.472298,0.759676,-0.447021,-337.399938,-504.954691,1287.75132, + 0.189085,0.952958,-0.236891,-188.233089,-946.311642,2169.851549, + 0.014067,0.991704,-0.12777,0,-976.970216,2103.011094, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.014067,0.991704,-0.12777,0,-976.970216,2103.011094, + 0.189085,0.952958,-0.236891,-188.233089,-946.311642,2169.851549, + 0,0.966617,-0.256224,0,-964.850983,2169.851549, + 0.181999,0.91848,-0.3511,-184.330051,-926.689746,2234.768955, + 0,0.966617,-0.256224,0,-964.850983,2169.851549, + 0.189085,0.952958,-0.236891,-188.233089,-946.311642,2169.851549, + 0,0.966617,-0.256224,0,-964.850983,2169.851549, + 0.181999,0.91848,-0.3511,-184.330051,-926.689746,2234.768955, + -0.014053,0.939213,-0.343046,0,-944.844672,2234.768955, + 0.172314,0.870883,-0.460294,-178.944064,-899.612557,2296.83617, + -0.014053,0.939213,-0.343046,0,-944.844672,2234.768955, + 0.181999,0.91848,-0.3511,-184.330051,-926.689746,2234.768955, + -0.014053,0.939213,-0.343046,0,-944.844672,2234.768955, + 0.172314,0.870883,-0.460294,-178.944064,-899.612557,2296.83617, + -0.000898,0.887766,-0.460294,0,-917.237009,2296.83617, + 0.174075,0.870533,0.460294,-178.944064,-899.612557,1773.56823, + 0.001099,0.826515,0.562913,0,-882.422286,1715.237645, + 0.162323,0.81042,0.562913,-172.152048,-865.466789,1715.237645, + 0.001099,0.826515,0.562913,0,-882.422286,1715.237645, + 0.174075,0.870533,0.460294,-178.944064,-899.612557,1773.56823, + 0.000898,0.887766,0.460294,0,-917.237009,1773.56823, + 0.687306,0.686654,0.236891,-682.252673,-682.252673,1900.552851, + 0.52077,0.778156,0.3511,-524.927574,-785.609633,1835.635445, + 0.662575,0.661607,0.3511,-668.106075,-668.106075,1835.635445, + 0.52077,0.778156,0.3511,-524.927574,-785.609633,1835.635445, + 0.687306,0.686654,0.236891,-682.252673,-682.252673,1900.552851, + 0.54014,0.807547,0.236891,-536.042486,-802.244273,1900.552851, + 0.692994,0.720844,0.011969,-693.692459,-693.692459,2035.2022, + 0.551796,0.825403,0.119297,-542.77557,-812.321046,1967.393306, + 0.702221,0.701893,0.119297,-690.822265,-690.822265,1967.393306, + 0.551796,0.825403,0.119297,-542.77557,-812.321046,1967.393306, + 0.692994,0.720844,0.011969,-693.692459,-693.692459,2035.2022, + 0.55557,0.83147,0,-545.030668,-815.696038,2035.2022, + 0.814754,0.369253,-0.447021,-690.554573,-286.03707,1287.75132, + 0.759676,0.472298,-0.447021,-543.79736,-363.353779,1474.61404, + 0.727062,0.521108,-0.447021,-621.482696,-415.261462,1287.75132, + 0.759676,0.472298,-0.447021,-543.79736,-363.353779,1474.61404, + 0.814754,0.369253,-0.447021,-690.554573,-286.03707,1287.75132, + 0.837219,0.315017,-0.447021,-604.235252,-250.282436,1474.61404, + 0,0,-1,-747.450884,0,2408.92764, + 0,0,-1,-824.740108,-164.051007,2408.92764, + 0,0,-1,-840.897722,0,2408.92764, + 0,0,-1,-824.740108,-164.051007,2408.92764, + 0,0,-1,-747.450884,0,2408.92764, + 0,0,-1,-776.888194,-321.797626,2408.92764, + 0,0,-1,-776.888194,-321.797626,2408.92764, + 0,0,-1,-747.450884,0,2408.92764, + 0,0,-1,-733.088824,-145.820434,2408.92764, + 0,0,-1,-776.888194,-321.797626,2408.92764, + 0,0,-1,-733.088824,-145.820434,2408.92764, + 0,0,-1,-699.180902,-467.177743,2408.92764, + 0,0,-1,-699.180902,-467.177743,2408.92764, + 0,0,-1,-733.088824,-145.820434,2408.92764, + 0,0,-1,-690.554573,-286.03707,2408.92764, + 0,0,-1,-699.180902,-467.177743,2408.92764, + 0,0,-1,-690.554573,-286.03707,2408.92764, + 0,0,-1,-594.604481,-594.604481,2408.92764, + 0,0,-1,-594.604481,-594.604481,2408.92764, + 0,0,-1,-690.554573,-286.03707,2408.92764, + 0,0,-1,-621.482696,-415.261462,2408.92764, + 0,0,-1,-594.604481,-594.604481,2408.92764, + 0,0,-1,-621.482696,-415.261462,2408.92764, + 0,0,-1,-528.527588,-528.527588,2408.92764, + 0,0,-1,-594.604481,-594.604481,2408.92764, + 0,0,-1,-528.527588,-528.527588,2408.92764, + 0,0,-1,-467.177743,-699.180902,2408.92764, + 0,0,-1,-467.177743,-699.180902,2408.92764, + 0,0,-1,-528.527588,-528.527588,2408.92764, + 0,0,-1,-415.261462,-621.482696,2408.92764, + 0,0,-1,-467.177743,-699.180902,2408.92764, + 0,0,-1,-415.261462,-621.482696,2408.92764, + 0,0,-1,-321.797626,-776.888194,2408.92764, + 0,0,-1,-321.797626,-776.888194,2408.92764, + 0,0,-1,-415.261462,-621.482696,2408.92764, + 0,0,-1,-286.03707,-690.554573,2408.92764, + 0,0,-1,-321.797626,-776.888194,2408.92764, + 0,0,-1,-286.03707,-690.554573,2408.92764, + 0,0,-1,-164.051007,-824.740108,2408.92764, + 0,0,-1,-164.051007,-824.740108,2408.92764, + 0,0,-1,-286.03707,-690.554573,2408.92764, + 0,0,-1,-145.820434,-733.088824,2408.92764, + 0,0,-1,-164.051007,-824.740108,2408.92764, + 0,0,-1,-145.820434,-733.088824,2408.92764, + 0,0,-1,0,-840.897722,2408.92764, + 0,0,-1,0,-840.897722,2408.92764, + 0,0,-1,-145.820434,-733.088824,2408.92764, + 0,0,-1,0,-747.450884,2408.92764, + 0,0,-1,0,-840.897722,2408.92764, + 0,0,-1,0,-747.450884,2408.92764, + 0,0,-1,145.820434,-733.088824,2408.92764, + 0,0,-1,0,-840.897722,2408.92764, + 0,0,-1,145.820434,-733.088824,2408.92764, + 0,0,-1,164.051007,-824.740108,2408.92764, + 0,0,-1,164.051007,-824.740108,2408.92764, + 0,0,-1,145.820434,-733.088824,2408.92764, + 0,0,-1,286.03707,-690.554573,2408.92764, + 0,0,-1,164.051007,-824.740108,2408.92764, + 0,0,-1,286.03707,-690.554573,2408.92764, + 0,0,-1,321.797626,-776.888194,2408.92764, + 0,0,-1,321.797626,-776.888194,2408.92764, + 0,0,-1,286.03707,-690.554573,2408.92764, + 0,0,-1,415.261462,-621.482696,2408.92764, + 0,0,-1,321.797626,-776.888194,2408.92764, + 0,0,-1,415.261462,-621.482696,2408.92764, + 0,0,-1,467.177743,-699.180902,2408.92764, + 0,0,-1,467.177743,-699.180902,2408.92764, + 0,0,-1,415.261462,-621.482696,2408.92764, + 0,0,-1,528.527588,-528.527588,2408.92764, + 0,0,-1,467.177743,-699.180902,2408.92764, + 0,0,-1,528.527588,-528.527588,2408.92764, + 0,0,-1,594.604481,-594.604481,2408.92764, + 0,0,-1,594.604481,-594.604481,2408.92764, + 0,0,-1,528.527588,-528.527588,2408.92764, + 0,0,-1,621.482696,-415.261462,2408.92764, + 0,0,-1,594.604481,-594.604481,2408.92764, + 0,0,-1,621.482696,-415.261462,2408.92764, + 0,0,-1,699.180902,-467.177743,2408.92764, + 0,0,-1,699.180902,-467.177743,2408.92764, + 0,0,-1,621.482696,-415.261462,2408.92764, + 0,0,-1,690.554573,-286.03707,2408.92764, + 0,0,-1,699.180902,-467.177743,2408.92764, + 0,0,-1,690.554573,-286.03707,2408.92764, + 0,0,-1,733.088824,-145.820434,2408.92764, + 0,0,-1,699.180902,-467.177743,2408.92764, + 0,0,-1,733.088824,-145.820434,2408.92764, + 0,0,-1,776.888194,-321.797626,2408.92764, + 0,0,-1,776.888194,-321.797626,2408.92764, + 0,0,-1,733.088824,-145.820434,2408.92764, + 0,0,-1,747.450884,-0,2408.92764, + 0,0,-1,776.888194,-321.797626,2408.92764, + 0,0,-1,747.450884,-0,2408.92764, + 0,0,-1,840.897722,-0,2408.92764, + 0,0,-1,776.888194,-321.797626,2408.92764, + 0,0,-1,840.897722,-0,2408.92764, + 0,0,-1,824.740108,-164.051007,2408.92764, + 0,0,1,-824.740108,-164.051007,1661.47676, + 0,0,1,-700.735204,0,1661.47676, + 0,0,1,-840.897722,0,1661.47676, + 0,0,1,-700.735204,0,1661.47676, + 0,0,1,-824.740108,-164.051007,1661.47676, + 0,0,1,-776.888194,-321.797626,1661.47676, + 0,0,1,-700.735204,0,1661.47676, + 0,0,1,-776.888194,-321.797626,1661.47676, + 0,0,1,-699.180902,-467.177743,1661.47676, + 0,0,1,-700.735204,0,1661.47676, + 0,0,1,-699.180902,-467.177743,1661.47676, + 0,0,1,-687.270773,-136.706657,1661.47676, + 0,0,1,-687.270773,-136.706657,1661.47676, + 0,0,1,-699.180902,-467.177743,1661.47676, + 0,0,1,-594.604481,-594.604481,1661.47676, + 0,0,1,-687.270773,-136.706657,1661.47676, + 0,0,1,-594.604481,-594.604481,1661.47676, + 0,0,1,-647.394912,-268.159753,1661.47676, + 0,0,1,-647.394912,-268.159753,1661.47676, + 0,0,1,-594.604481,-594.604481,1661.47676, + 0,0,1,-582.640028,-389.30762,1661.47676, + 0,0,1,-582.640028,-389.30762,1661.47676, + 0,0,1,-594.604481,-594.604481,1661.47676, + 0,0,1,-467.177743,-699.180902,1661.47676, + 0,0,1,-582.640028,-389.30762,1661.47676, + 0,0,1,-467.177743,-699.180902,1661.47676, + 0,0,1,-495.494614,-495.494614,1661.47676, + 0,0,1,-495.494614,-495.494614,1661.47676, + 0,0,1,-467.177743,-699.180902,1661.47676, + 0,0,1,-389.30762,-582.640028,1661.47676, + 0,0,1,-389.30762,-582.640028,1661.47676, + 0,0,1,-467.177743,-699.180902,1661.47676, + 0,0,1,-321.797626,-776.888194,1661.47676, + 0,0,1,-389.30762,-582.640028,1661.47676, + 0,0,1,-321.797626,-776.888194,1661.47676, + 0,0,1,-268.159753,-647.394912,1661.47676, + 0,0,1,-268.159753,-647.394912,1661.47676, + 0,0,1,-321.797626,-776.888194,1661.47676, + 0,0,1,-164.051007,-824.740108,1661.47676, + 0,0,1,-268.159753,-647.394912,1661.47676, + 0,0,1,-164.051007,-824.740108,1661.47676, + 0,0,1,-136.706657,-687.270773,1661.47676, + 0,0,1,-136.706657,-687.270773,1661.47676, + 0,0,1,-164.051007,-824.740108,1661.47676, + 0,0,1,0,-840.897722,1661.47676, + 0,0,1,-136.706657,-687.270773,1661.47676, + 0,0,1,0,-840.897722,1661.47676, + 0,0,1,0,-700.735204,1661.47676, + 0,0,1,0,-700.735204,1661.47676, + 0,0,1,0,-840.897722,1661.47676, + 0,0,1,164.051007,-824.740108,1661.47676, + 0,0,1,0,-700.735204,1661.47676, + 0,0,1,164.051007,-824.740108,1661.47676, + 0,0,1,136.706657,-687.270773,1661.47676, + 0,0,1,136.706657,-687.270773,1661.47676, + 0,0,1,164.051007,-824.740108,1661.47676, + 0,0,1,268.159753,-647.394912,1661.47676, + 0,0,1,268.159753,-647.394912,1661.47676, + 0,0,1,164.051007,-824.740108,1661.47676, + 0,0,1,321.797626,-776.888194,1661.47676, + 0,0,1,268.159753,-647.394912,1661.47676, + 0,0,1,321.797626,-776.888194,1661.47676, + 0,0,1,389.30762,-582.640028,1661.47676, + 0,0,1,389.30762,-582.640028,1661.47676, + 0,0,1,321.797626,-776.888194,1661.47676, + 0,0,1,467.177743,-699.180902,1661.47676, + 0,0,1,389.30762,-582.640028,1661.47676, + 0,0,1,467.177743,-699.180902,1661.47676, + 0,0,1,495.494614,-495.494614,1661.47676, + 0,0,1,495.494614,-495.494614,1661.47676, + 0,0,1,467.177743,-699.180902,1661.47676, + 0,0,1,594.604481,-594.604481,1661.47676, + 0,0,1,495.494614,-495.494614,1661.47676, + 0,0,1,594.604481,-594.604481,1661.47676, + 0,0,1,582.640028,-389.30762,1661.47676, + 0,0,1,582.640028,-389.30762,1661.47676, + 0,0,1,594.604481,-594.604481,1661.47676, + 0,0,1,647.394912,-268.159753,1661.47676, + 0,0,1,647.394912,-268.159753,1661.47676, + 0,0,1,594.604481,-594.604481,1661.47676, + 0,0,1,699.180902,-467.177743,1661.47676, + 0,0,1,647.394912,-268.159753,1661.47676, + 0,0,1,699.180902,-467.177743,1661.47676, + 0,0,1,687.270773,-136.706657,1661.47676, + 0,0,1,687.270773,-136.706657,1661.47676, + 0,0,1,699.180902,-467.177743,1661.47676, + 0,0,1,700.735204,-0,1661.47676, + 0,0,1,700.735204,-0,1661.47676, + 0,0,1,699.180902,-467.177743,1661.47676, + 0,0,1,776.888194,-321.797626,1661.47676, + 0,0,1,700.735204,-0,1661.47676, + 0,0,1,776.888194,-321.797626,1661.47676, + 0,0,1,840.897722,-0,1661.47676, + 0,0,1,840.897722,-0,1661.47676, + 0,0,1,776.888194,-321.797626,1661.47676, + 0,0,1,824.740108,-164.051007,1661.47676, + 0,0,1,-778.906876,-154.934211,1474.61404, + 0,0,1,-654.019524,0,1474.61404, + 0,0,1,-794.166564,0,1474.61404, + 0,0,1,-654.019524,0,1474.61404, + 0,0,1,-778.906876,-154.934211,1474.61404, + 0,0,1,-733.714234,-303.914386,1474.61404, + 0,0,1,-654.019524,0,1474.61404, + 0,0,1,-733.714234,-303.914386,1474.61404, + 0,0,1,-660.325365,-441.215303,1474.61404, + 0,0,1,-654.019524,0,1474.61404, + 0,0,1,-660.325365,-441.215303,1474.61404, + 0,0,1,-641.452722,-127.592879,1474.61404, + 0,0,1,-641.452722,-127.592879,1474.61404, + 0,0,1,-660.325365,-441.215303,1474.61404, + 0,0,1,-561.560563,-561.560563,1474.61404, + 0,0,1,-641.452722,-127.592879,1474.61404, + 0,0,1,-561.560563,-561.560563,1474.61404, + 0,0,1,-604.235252,-250.282436,1474.61404, + 0,0,1,-604.235252,-250.282436,1474.61404, + 0,0,1,-561.560563,-561.560563,1474.61404, + 0,0,1,-543.79736,-363.353779,1474.61404, + 0,0,1,-543.79736,-363.353779,1474.61404, + 0,0,1,-561.560563,-561.560563,1474.61404, + 0,0,1,-441.215303,-660.325365,1474.61404, + 0,0,1,-543.79736,-363.353779,1474.61404, + 0,0,1,-441.215303,-660.325365,1474.61404, + 0,0,1,-462.46164,-462.46164,1474.61404, + 0,0,1,-462.46164,-462.46164,1474.61404, + 0,0,1,-441.215303,-660.325365,1474.61404, + 0,0,1,-363.353779,-543.79736,1474.61404, + 0,0,1,-363.353779,-543.79736,1474.61404, + 0,0,1,-441.215303,-660.325365,1474.61404, + 0,0,1,-303.914386,-733.714234,1474.61404, + 0,0,1,-363.353779,-543.79736,1474.61404, + 0,0,1,-303.914386,-733.714234,1474.61404, + 0,0,1,-250.282436,-604.235252,1474.61404, + 0,0,1,-250.282436,-604.235252,1474.61404, + 0,0,1,-303.914386,-733.714234,1474.61404, + 0,0,1,-154.934211,-778.906876,1474.61404, + 0,0,1,-250.282436,-604.235252,1474.61404, + 0,0,1,-154.934211,-778.906876,1474.61404, + 0,0,1,-127.592879,-641.452722,1474.61404, + 0,0,1,-127.592879,-641.452722,1474.61404, + 0,0,1,-154.934211,-778.906876,1474.61404, + 0,0,1,0,-794.166564,1474.61404, + 0,0,1,-127.592879,-641.452722,1474.61404, + 0,0,1,0,-794.166564,1474.61404, + 0,0,1,0,-654.019524,1474.61404, + 0,0,1,0,-654.019524,1474.61404, + 0,0,1,0,-794.166564,1474.61404, + 0,0,1,154.934211,-778.906876,1474.61404, + 0,0,1,0,-654.019524,1474.61404, + 0,0,1,154.934211,-778.906876,1474.61404, + 0,0,1,127.592879,-641.452722,1474.61404, + 0,0,1,127.592879,-641.452722,1474.61404, + 0,0,1,154.934211,-778.906876,1474.61404, + 0,0,1,250.282436,-604.235252,1474.61404, + 0,0,1,250.282436,-604.235252,1474.61404, + 0,0,1,154.934211,-778.906876,1474.61404, + 0,0,1,303.914386,-733.714234,1474.61404, + 0,0,1,250.282436,-604.235252,1474.61404, + 0,0,1,303.914386,-733.714234,1474.61404, + 0,0,1,363.353779,-543.79736,1474.61404, + 0,0,1,363.353779,-543.79736,1474.61404, + 0,0,1,303.914386,-733.714234,1474.61404, + 0,0,1,441.215303,-660.325365,1474.61404, + 0,0,1,363.353779,-543.79736,1474.61404, + 0,0,1,441.215303,-660.325365,1474.61404, + 0,0,1,462.46164,-462.46164,1474.61404, + 0,0,1,462.46164,-462.46164,1474.61404, + 0,0,1,441.215303,-660.325365,1474.61404, + 0,0,1,561.560563,-561.560563,1474.61404, + 0,0,1,462.46164,-462.46164,1474.61404, + 0,0,1,561.560563,-561.560563,1474.61404, + 0,0,1,543.79736,-363.353779,1474.61404, + 0,0,1,543.79736,-363.353779,1474.61404, + 0,0,1,561.560563,-561.560563,1474.61404, + 0,0,1,604.235252,-250.282436,1474.61404, + 0,0,1,604.235252,-250.282436,1474.61404, + 0,0,1,561.560563,-561.560563,1474.61404, + 0,0,1,660.325365,-441.215303,1474.61404, + 0,0,1,604.235252,-250.282436,1474.61404, + 0,0,1,660.325365,-441.215303,1474.61404, + 0,0,1,641.452722,-127.592879,1474.61404, + 0,0,1,641.452722,-127.592879,1474.61404, + 0,0,1,660.325365,-441.215303,1474.61404, + 0,0,1,654.019524,-0,1474.61404, + 0,0,1,654.019524,-0,1474.61404, + 0,0,1,660.325365,-441.215303,1474.61404, + 0,0,1,794.166564,-0,1474.61404, + 0,0,1,794.166564,-0,1474.61404, + 0,0,1,660.325365,-441.215303,1474.61404, + 0,0,1,733.714234,-303.914386,1474.61404, + 0,0,1,794.166564,-0,1474.61404, + 0,0,1,733.714234,-303.914386,1474.61404, + 0,0,1,778.906876,-154.934211,1474.61404, + 0,0,1,-687.270773,-136.706657,1100.8886, + 0,0,1,-467.156804,0,1100.8886, + 0,0,1,-700.735204,0,1100.8886, + 0,0,1,-467.156804,0,1100.8886, + 0,0,1,-687.270773,-136.706657,1100.8886, + 0,0,1,-647.394912,-268.159753,1100.8886, + 0,0,1,-467.156804,0,1100.8886, + 0,0,1,-647.394912,-268.159753,1100.8886, + 0,0,1,-582.640028,-389.30762,1100.8886, + 0,0,1,-467.156804,0,1100.8886, + 0,0,1,-582.640028,-389.30762,1100.8886, + 0,0,1,-495.494614,-495.494614,1100.8886, + 0,0,1,-467.156804,0,1100.8886, + 0,0,1,-495.494614,-495.494614,1100.8886, + 0,0,1,-458.180517,-91.137771,1100.8886, + 0,0,1,-458.180517,-91.137771,1100.8886, + 0,0,1,-495.494614,-495.494614,1100.8886, + 0,0,1,-389.30762,-582.640028,1100.8886, + 0,0,1,-458.180517,-91.137771,1100.8886, + 0,0,1,-389.30762,-582.640028,1100.8886, + 0,0,1,-431.596609,-178.773169,1100.8886, + 0,0,1,-431.596609,-178.773169,1100.8886, + 0,0,1,-389.30762,-582.640028,1100.8886, + 0,0,1,-388.426686,-259.538414,1100.8886, + 0,0,1,-388.426686,-259.538414,1100.8886, + 0,0,1,-389.30762,-582.640028,1100.8886, + 0,0,1,-268.159753,-647.394912,1100.8886, + 0,0,1,-388.426686,-259.538414,1100.8886, + 0,0,1,-268.159753,-647.394912,1100.8886, + 0,0,1,-330.329744,-330.329744,1100.8886, + 0,0,1,-330.329744,-330.329744,1100.8886, + 0,0,1,-268.159753,-647.394912,1100.8886, + 0,0,1,-259.538414,-388.426686,1100.8886, + 0,0,1,-259.538414,-388.426686,1100.8886, + 0,0,1,-268.159753,-647.394912,1100.8886, + 0,0,1,-136.706657,-687.270773,1100.8886, + 0,0,1,-259.538414,-388.426686,1100.8886, + 0,0,1,-136.706657,-687.270773,1100.8886, + 0,0,1,-178.773169,-431.596609,1100.8886, + 0,0,1,-178.773169,-431.596609,1100.8886, + 0,0,1,-136.706657,-687.270773,1100.8886, + 0,0,1,-91.137771,-458.180517,1100.8886, + 0,0,1,-91.137771,-458.180517,1100.8886, + 0,0,1,-136.706657,-687.270773,1100.8886, + 0,0,1,0,-700.735204,1100.8886, + 0,0,1,-91.137771,-458.180517,1100.8886, + 0,0,1,0,-700.735204,1100.8886, + 0,0,1,0,-467.156804,1100.8886, + 0,0,1,0,-467.156804,1100.8886, + 0,0,1,0,-700.735204,1100.8886, + 0,0,1,136.706657,-687.270773,1100.8886, + 0,0,1,0,-467.156804,1100.8886, + 0,0,1,136.706657,-687.270773,1100.8886, + 0,0,1,91.137771,-458.180517,1100.8886, + 0,0,1,91.137771,-458.180517,1100.8886, + 0,0,1,136.706657,-687.270773,1100.8886, + 0,0,1,178.773169,-431.596609,1100.8886, + 0,0,1,178.773169,-431.596609,1100.8886, + 0,0,1,136.706657,-687.270773,1100.8886, + 0,0,1,268.159753,-647.394912,1100.8886, + 0,0,1,178.773169,-431.596609,1100.8886, + 0,0,1,268.159753,-647.394912,1100.8886, + 0,0,1,259.538414,-388.426686,1100.8886, + 0,0,1,259.538414,-388.426686,1100.8886, + 0,0,1,268.159753,-647.394912,1100.8886, + 0,0,1,330.329744,-330.329744,1100.8886, + 0,0,1,330.329744,-330.329744,1100.8886, + 0,0,1,268.159753,-647.394912,1100.8886, + 0,0,1,389.30762,-582.640028,1100.8886, + 0,0,1,330.329744,-330.329744,1100.8886, + 0,0,1,389.30762,-582.640028,1100.8886, + 0,0,1,388.426686,-259.538414,1100.8886, + 0,0,1,388.426686,-259.538414,1100.8886, + 0,0,1,389.30762,-582.640028,1100.8886, + 0,0,1,431.596609,-178.773169,1100.8886, + 0,0,1,431.596609,-178.773169,1100.8886, + 0,0,1,389.30762,-582.640028,1100.8886, + 0,0,1,495.494614,-495.494614,1100.8886, + 0,0,1,431.596609,-178.773169,1100.8886, + 0,0,1,495.494614,-495.494614,1100.8886, + 0,0,1,458.180517,-91.137771,1100.8886, + 0,0,1,458.180517,-91.137771,1100.8886, + 0,0,1,495.494614,-495.494614,1100.8886, + 0,0,1,467.156804,0,1100.8886, + 0,0,1,467.156804,0,1100.8886, + 0,0,1,495.494614,-495.494614,1100.8886, + 0,0,1,700.735204,-0,1100.8886, + 0,0,1,700.735204,-0,1100.8886, + 0,0,1,495.494614,-495.494614,1100.8886, + 0,0,1,582.640028,-389.30762,1100.8886, + 0,0,1,700.735204,-0,1100.8886, + 0,0,1,582.640028,-389.30762,1100.8886, + 0,0,1,647.394912,-268.159753,1100.8886, + 0,0,1,700.735204,-0,1100.8886, + 0,0,1,647.394912,-268.159753,1100.8886, + 0,0,1,687.270773,-136.706657,1100.8886, + 0,0,1,-733.088824,-145.820434,1287.75132, + 0,0,1,-607.303844,0,1287.75132, + 0,0,1,-747.450884,0,1287.75132, + 0,0,1,-607.303844,0,1287.75132, + 0,0,1,-733.088824,-145.820434,1287.75132, + 0,0,1,-690.554573,-286.03707,1287.75132, + 0,0,1,-607.303844,0,1287.75132, + 0,0,1,-690.554573,-286.03707,1287.75132, + 0,0,1,-621.482696,-415.261462,1287.75132, + 0,0,1,-607.303844,0,1287.75132, + 0,0,1,-621.482696,-415.261462,1287.75132, + 0,0,1,-595.634671,-118.479102,1287.75132, + 0,0,1,-595.634671,-118.479102,1287.75132, + 0,0,1,-621.482696,-415.261462,1287.75132, + 0,0,1,-528.527588,-528.527588,1287.75132, + 0,0,1,-595.634671,-118.479102,1287.75132, + 0,0,1,-528.527588,-528.527588,1287.75132, + 0,0,1,-561.075591,-232.405119,1287.75132, + 0,0,1,-561.075591,-232.405119,1287.75132, + 0,0,1,-528.527588,-528.527588,1287.75132, + 0,0,1,-504.954691,-337.399938,1287.75132, + 0,0,1,-504.954691,-337.399938,1287.75132, + 0,0,1,-528.527588,-528.527588,1287.75132, + 0,0,1,-415.261462,-621.482696,1287.75132, + 0,0,1,-504.954691,-337.399938,1287.75132, + 0,0,1,-415.261462,-621.482696,1287.75132, + 0,0,1,-429.428666,-429.428666,1287.75132, + 0,0,1,-429.428666,-429.428666,1287.75132, + 0,0,1,-415.261462,-621.482696,1287.75132, + 0,0,1,-337.399938,-504.954691,1287.75132, + 0,0,1,-337.399938,-504.954691,1287.75132, + 0,0,1,-415.261462,-621.482696,1287.75132, + 0,0,1,-286.03707,-690.554573,1287.75132, + 0,0,1,-337.399938,-504.954691,1287.75132, + 0,0,1,-286.03707,-690.554573,1287.75132, + 0,0,1,-232.405119,-561.075591,1287.75132, + 0,0,1,-232.405119,-561.075591,1287.75132, + 0,0,1,-286.03707,-690.554573,1287.75132, + 0,0,1,-145.820434,-733.088824,1287.75132, + 0,0,1,-232.405119,-561.075591,1287.75132, + 0,0,1,-145.820434,-733.088824,1287.75132, + 0,0,1,-118.479102,-595.634671,1287.75132, + 0,0,1,-118.479102,-595.634671,1287.75132, + 0,0,1,-145.820434,-733.088824,1287.75132, + 0,0,1,0,-747.450884,1287.75132, + 0,0,1,-118.479102,-595.634671,1287.75132, + 0,0,1,0,-747.450884,1287.75132, + 0,0,1,0,-607.303844,1287.75132, + 0,0,1,0,-607.303844,1287.75132, + 0,0,1,0,-747.450884,1287.75132, + 0,0,1,145.820434,-733.088824,1287.75132, + 0,0,1,0,-607.303844,1287.75132, + 0,0,1,145.820434,-733.088824,1287.75132, + 0,0,1,118.479102,-595.634671,1287.75132, + 0,0,1,118.479102,-595.634671,1287.75132, + 0,0,1,145.820434,-733.088824,1287.75132, + 0,0,1,232.405119,-561.075591,1287.75132, + 0,0,1,232.405119,-561.075591,1287.75132, + 0,0,1,145.820434,-733.088824,1287.75132, + 0,0,1,286.03707,-690.554573,1287.75132, + 0,0,1,232.405119,-561.075591,1287.75132, + 0,0,1,286.03707,-690.554573,1287.75132, + 0,0,1,337.399938,-504.954691,1287.75132, + 0,0,1,337.399938,-504.954691,1287.75132, + 0,0,1,286.03707,-690.554573,1287.75132, + 0,0,1,415.261462,-621.482696,1287.75132, + 0,0,1,337.399938,-504.954691,1287.75132, + 0,0,1,415.261462,-621.482696,1287.75132, + 0,0,1,429.428666,-429.428666,1287.75132, + 0,0,1,429.428666,-429.428666,1287.75132, + 0,0,1,415.261462,-621.482696,1287.75132, + 0,0,1,528.527588,-528.527588,1287.75132, + 0,0,1,429.428666,-429.428666,1287.75132, + 0,0,1,528.527588,-528.527588,1287.75132, + 0,0,1,504.954691,-337.399938,1287.75132, + 0,0,1,504.954691,-337.399938,1287.75132, + 0,0,1,528.527588,-528.527588,1287.75132, + 0,0,1,561.075591,-232.405119,1287.75132, + 0,0,1,561.075591,-232.405119,1287.75132, + 0,0,1,528.527588,-528.527588,1287.75132, + 0,0,1,621.482696,-415.261462,1287.75132, + 0,0,1,561.075591,-232.405119,1287.75132, + 0,0,1,621.482696,-415.261462,1287.75132, + 0,0,1,595.634671,-118.479102,1287.75132, + 0,0,1,595.634671,-118.479102,1287.75132, + 0,0,1,621.482696,-415.261462,1287.75132, + 0,0,1,607.303844,-0,1287.75132, + 0,0,1,607.303844,-0,1287.75132, + 0,0,1,621.482696,-415.261462,1287.75132, + 0,0,1,747.450884,-0,1287.75132, + 0,0,1,747.450884,-0,1287.75132, + 0,0,1,621.482696,-415.261462,1287.75132, + 0,0,1,690.554573,-286.03707,1287.75132, + 0,0,1,747.450884,-0,1287.75132, + 0,0,1,690.554573,-286.03707,1287.75132, + 0,0,1,733.088824,-145.820434,1287.75132, + 0.024376,0.742479,0.669425,0,-699.298837,628.271002, + 0.105345,0.638437,0.762431,-126.938055,-638.160695,587.016307, + 0.168758,0.723457,0.669425,-136.426435,-685.862006,628.271002, + 0.105345,0.638437,0.762431,-126.938055,-638.160695,587.016307, + 0.024376,0.742479,0.669425,0,-699.298837,628.271002, + -0.021232,0.646722,0.762431,0,-650.663002,587.016307, + 0.380165,0.917193,0.119297,-373.870315,-902.602786,1967.393306, + 0.18999,0.952778,0.236891,-188.233089,-946.311642,1900.552851, + 0.372217,0.897406,0.236891,-369.232486,-891.406075,1900.552851, + 0.18999,0.952778,0.236891,-188.233089,-946.311642,1900.552851, + 0.380165,0.917193,0.119297,-373.870315,-902.602786,1967.393306, + 0.193925,0.973736,0.119297,-190.597434,-958.198007,1967.393306, + 0.632456,0.632456,-0.447214,-462.46164,-462.46164,1474.61404, + 0.521108,0.727062,-0.447021,-415.261462,-621.482696,1287.75132, + 0.632456,0.632456,-0.447214,-528.527588,-528.527588,1287.75132, + 0.521108,0.727062,-0.447021,-415.261462,-621.482696,1287.75132, + 0.632456,0.632456,-0.447214,-462.46164,-462.46164,1474.61404, + 0.472298,0.759676,-0.447021,-363.353779,-543.79736,1474.61404, + 0.917371,0.379736,-0.119297,-902.602786,-373.870315,2103.011094, + 0.808059,0.539373,-0.236891,-802.244273,-536.042486,2169.851549, + 0.825661,0.55141,-0.119297,-812.321046,-542.77557,2103.011094, + 0.808059,0.539373,-0.236891,-802.244273,-536.042486,2169.851549, + 0.917371,0.379736,-0.119297,-902.602786,-373.870315,2103.011094, + 0.897759,0.371365,-0.236891,-891.406075,-369.232486,2169.851549, + 0.812792,0.582554,0,-815.696038,-545.030668,2035.2022, + 0.7036,0.7036,-0.099466,-690.822265,-690.822265,2103.011094, + 0.692994,0.720844,0.011969,-693.692459,-693.692459,2035.2022, + 0.7036,0.7036,-0.099466,-690.822265,-690.822265,2103.011094, + 0.812792,0.582554,0,-815.696038,-545.030668,2035.2022, + 0.825661,0.55141,-0.119297,-812.321046,-542.77557,2103.011094, + 0.825661,0.55141,-0.119297,-812.321046,-542.77557,2103.011094, + 0.690185,0.690185,-0.217461,-682.252673,-682.252673,2169.851549, + 0.7036,0.7036,-0.099466,-690.822265,-690.822265,2103.011094, + 0.690185,0.690185,-0.217461,-682.252673,-682.252673,2169.851549, + 0.825661,0.55141,-0.119297,-812.321046,-542.77557,2103.011094, + 0.808059,0.539373,-0.236891,-802.244273,-536.042486,2169.851549, + 0.808059,0.539373,-0.236891,-802.244273,-536.042486,2169.851549, + 0.666912,0.666912,-0.332349,-668.106075,-668.106075,2234.768955, + 0.690185,0.690185,-0.217461,-682.252673,-682.252673,2169.851549, + 0.666912,0.666912,-0.332349,-668.106075,-668.106075,2234.768955, + 0.808059,0.539373,-0.236891,-802.244273,-536.042486,2169.851549, + 0.778916,0.519633,-0.3511,-785.609633,-524.927574,2234.768955, + 0.778916,0.519633,-0.3511,-785.609633,-524.927574,2234.768955, + 0.634114,0.634114,-0.442491,-648.584509,-648.584509,2296.83617, + 0.666912,0.666912,-0.332349,-668.106075,-668.106075,2234.768955, + 0.634114,0.634114,-0.442491,-648.584509,-648.584509,2296.83617, + 0.778916,0.519633,-0.3511,-785.609633,-524.927574,2234.768955, + 0.738649,0.49247,-0.460294,-762.654701,-509.589579,2296.83617, + -0.69529,0.261614,0.669425,646.067883,-267.610079,628.271002, + -0.630153,0.146993,0.762431,638.160695,-126.938055,587.016307, + -0.589368,0.267106,0.762431,601.13423,-248.997951,587.016307, + -0.630153,0.146993,0.762431,638.160695,-126.938055,587.016307, + -0.69529,0.261614,0.669425,646.067883,-267.610079,628.271002, + -0.732968,0.120943,0.669425,685.862006,-136.426435,628.271002, + -0.869022,0.085591,0.487313,735.304703,-0,680.911024, + -0.732968,0.120943,0.669425,685.862006,-136.426435,628.271002, + -0.876472,0.172332,0.449554,721.176029,-143.450831,680.911024, + -0.732968,0.120943,0.669425,685.862006,-136.426435,628.271002, + -0.869022,0.085591,0.487313,735.304703,-0,680.911024, + -0.740721,0.072955,0.66784,699.298837,-0,628.271002, + -0.966069,0.095149,0.240119,756.121025,-0,741.194313, + -0.876472,0.172332,0.449554,721.176029,-143.450831,680.911024, + -0.961634,0.1904,0.197505,741.592372,-147.511894,741.194313, + -0.876472,0.172332,0.449554,721.176029,-143.450831,680.911024, + -0.966069,0.095149,0.240119,756.121025,-0,741.194313, + -0.869022,0.085591,0.487313,735.304703,-0,680.911024, + 0.687833,0.458274,0.562913,-733.707316,-490.247555,1715.237645, + 0.820532,0.338904,0.460294,-847.416499,-351.011407,1773.56823, + 0.738649,0.49247,0.460294,-762.654701,-509.589579,1773.56823, + 0.820532,0.338904,0.460294,-847.416499,-351.011407,1773.56823, + 0.687833,0.458274,0.562913,-733.707316,-490.247555,1715.237645, + 0.764021,0.315278,0.562913,-815.251889,-337.688389,1715.237645, + -0.992863,0.097788,-0.068268,760.268019,-0,804.835469, + -0.961634,0.1904,0.197505,741.592372,-147.511894,741.194313, + -0.971564,0.226633,-0.06856,745.659682,-148.320933,804.835469, + -0.961634,0.1904,0.197505,741.592372,-147.511894,741.194313, + -0.992863,0.097788,-0.068268,760.268019,-0,804.835469, + -0.966069,0.095149,0.240119,756.121025,-0,741.194313, + -0.966549,0.159485,-0.200867,733.088824,-145.820434,867.310387, + -0.992863,0.097788,-0.068268,760.268019,-0,804.835469, + -0.971564,0.226633,-0.06856,745.659682,-148.320933,804.835469, + -0.992863,0.097788,-0.068268,760.268019,-0,804.835469, + -0.966549,0.159485,-0.200867,733.088824,-145.820434,867.310387, + -0.975069,0.096036,-0.200042,747.450884,-0,867.310387, + -0.638915,0.062928,-0.766699,467.156804,0,1100.8886, + -0.631844,0.104257,-0.768052,733.088824,-145.820434,867.310387, + -0.623645,0.145475,-0.768052,458.180517,-91.137771,1100.8886, + -0.631844,0.104257,-0.768052,733.088824,-145.820434,867.310387, + -0.638915,0.062928,-0.766699,467.156804,0,1100.8886, + -0.638915,0.062928,-0.766699,747.450884,-0,867.310387, + 0.814754,0.369253,-0.447021,-733.714234,-303.914386,1474.61404, + 0.759676,0.472298,-0.447021,-582.640028,-389.30762,1661.47676, + 0.727062,0.521108,-0.447021,-660.325365,-441.215303,1474.61404, + 0.759676,0.472298,-0.447021,-582.640028,-389.30762,1661.47676, + 0.814754,0.369253,-0.447021,-733.714234,-303.914386,1474.61404, + 0.837219,0.315017,-0.447021,-647.394912,-268.159753,1661.47676, + 0.764021,0.315278,-0.562913,-815.251889,-337.688389,2355.166755, + 0.672244,0.417941,-0.611076,-699.180902,-467.177743,2408.92764, + 0.687833,0.458274,-0.562913,-733.707316,-490.247555,2355.166755, + 0.672244,0.417941,-0.611076,-699.180902,-467.177743,2408.92764, + 0.764021,0.315278,-0.562913,-815.251889,-337.688389,2355.166755, + 0.740863,0.278762,-0.611076,-776.888194,-321.797626,2408.92764, + 0.820532,0.338904,-0.460294,-847.416499,-351.011407,2296.83617, + 0.687833,0.458274,-0.562913,-733.707316,-490.247555,2355.166755, + 0.738649,0.49247,-0.460294,-762.654701,-509.589579,2296.83617, + 0.687833,0.458274,-0.562913,-733.707316,-490.247555,2355.166755, + 0.820532,0.338904,-0.460294,-847.416499,-351.011407,2296.83617, + 0.764021,0.315278,-0.562913,-815.251889,-337.688389,2355.166755, + 0.781011,0.12887,0.611076,-824.740108,-164.051007,1661.47676, + 0.812508,0.080025,0.577431,-882.422286,0,1715.237645, + 0.810848,0.160167,0.562913,-865.466789,-172.152048,1715.237645, + 0.812508,0.080025,0.577431,-882.422286,0,1715.237645, + 0.781011,0.12887,0.611076,-824.740108,-164.051007,1661.47676, + 0.789019,0.077712,0.609434,-840.897722,0,1661.47676, + 0.623645,0.145475,-0.768052,-458.180517,-91.137771,1100.8886, + 0.599364,0.22552,-0.768052,-690.554573,-286.03707,867.310387, + 0.631844,0.104257,-0.768052,-733.088824,-145.820434,867.310387, + 0.599364,0.22552,-0.768052,-690.554573,-286.03707,867.310387, + 0.623645,0.145475,-0.768052,-458.180517,-91.137771,1100.8886, + 0.583281,0.264347,-0.768052,-431.596609,-178.773169,1100.8886, + 0.810848,0.160167,-0.562913,-865.466789,-172.152048,2355.166755, + 0.740863,0.278762,-0.611076,-776.888194,-321.797626,2408.92764, + 0.764021,0.315278,-0.562913,-815.251889,-337.688389,2355.166755, + 0.740863,0.278762,-0.611076,-776.888194,-321.797626,2408.92764, + 0.810848,0.160167,-0.562913,-865.466789,-172.152048,2355.166755, + 0.781011,0.12887,-0.611076,-824.740108,-164.051007,2408.92764, + 0.871137,0.203207,-0.447021,-733.088824,-145.820434,1287.75132, + 0.837219,0.315017,-0.447021,-604.235252,-250.282436,1474.61404, + 0.814754,0.369253,-0.447021,-690.554573,-286.03707,1287.75132, + 0.837219,0.315017,-0.447021,-604.235252,-250.282436,1474.61404, + 0.871137,0.203207,-0.447021,-733.088824,-145.820434,1287.75132, + 0.882589,0.145631,-0.447021,-641.452722,-127.592879,1474.61404, + 0.973856,0.227168,-0,-962.179081,-191.389319,2035.2022, + 0.917371,0.379736,-0.119297,-902.602786,-373.870315,2103.011094, + 0.910825,0.412792,0,-906.352876,-375.423654,2035.2022, + 0.917371,0.379736,-0.119297,-902.602786,-373.870315,2103.011094, + 0.973856,0.227168,-0,-962.179081,-191.389319,2035.2022, + 0.973826,0.193469,-0.119297,-958.198007,-190.597434,2103.011094, + 0.973856,0.227168,-0,-733.088824,-145.820434,2408.92764, + 0.935939,0.352162,-0,-690.554573,-286.03707,2549.07468, + 0.910825,0.412792,0,-690.554573,-286.03707,2408.92764, + 0.935939,0.352162,-0,-690.554573,-286.03707,2549.07468, + 0.973856,0.227168,-0,-733.088824,-145.820434,2408.92764, + 0.986659,0.162803,-0,-733.088824,-145.820434,2549.07468, + 0.961634,0.1904,0.197505,-741.592372,-147.511894,741.194313, + 0.992863,0.097788,-0.068268,-760.268019,0,804.835469, + 0.971564,0.226633,-0.06856,-745.659682,-148.320933,804.835469, + 0.992863,0.097788,-0.068268,-760.268019,0,804.835469, + 0.961634,0.1904,0.197505,-741.592372,-147.511894,741.194313, + 0.966069,0.095149,0.240119,-756.121025,0,741.194313, + -0.001099,0.826515,-0.562913,0,-882.422286,2355.166755, + -0.197225,0.872604,-0.446838,178.944064,-899.612557,2296.83617, + -0.000898,0.887766,-0.460294,0,-917.237009,2296.83617, + -0.197225,0.872604,-0.446838,178.944064,-899.612557,2296.83617, + -0.001099,0.826515,-0.562913,0,-882.422286,2355.166755, + -0.162323,0.81042,-0.562913,172.152048,-865.466789,2355.166755, + -0.025974,0.791146,-0.611076,0,-840.897722,2408.92764, + -0.162323,0.81042,-0.562913,172.152048,-865.466789,2355.166755, + -0.001099,0.826515,-0.562913,0,-882.422286,2355.166755, + -0.162323,0.81042,-0.562913,172.152048,-865.466789,2355.166755, + -0.025974,0.791146,-0.611076,0,-840.897722,2408.92764, + -0.179819,0.770877,-0.611076,164.051007,-824.740108,2408.92764, + 0.764021,0.315278,0.562913,-815.251889,-337.688389,1715.237645, + 0.870883,0.172314,0.460294,-899.612557,-178.944064,1773.56823, + 0.820532,0.338904,0.460294,-847.416499,-351.011407,1773.56823, + 0.870883,0.172314,0.460294,-899.612557,-178.944064,1773.56823, + 0.764021,0.315278,0.562913,-815.251889,-337.688389,1715.237645, + 0.810848,0.160167,0.562913,-865.466789,-172.152048,1715.237645, + 0.687833,0.458274,-0.562913,-733.707316,-490.247555,2355.166755, + 0.559613,0.559613,-0.611282,-594.604481,-594.604481,2408.92764, + 0.59226,0.59226,-0.546311,-623.966782,-623.966782,2355.166755, + 0.559613,0.559613,-0.611282,-594.604481,-594.604481,2408.92764, + 0.687833,0.458274,-0.562913,-733.707316,-490.247555,2355.166755, + 0.672244,0.417941,-0.611076,-699.180902,-467.177743,2408.92764, + 0.693789,0.692567,0.197505,-534.658304,-534.658304,741.194313, + 0.497902,0.741616,0.449554,-408.513405,-611.383516,680.911024, + 0.633017,0.630231,0.449554,-519.938942,-519.938942,680.911024, + 0.497902,0.741616,0.449554,-408.513405,-611.383516,680.911024, + 0.693789,0.692567,0.197505,-534.658304,-534.658304,741.194313, + 0.545345,0.814611,0.197505,-420.078334,-628.691656,741.194313, + 0.692336,0.720367,-0.041734,-537.590672,-537.590672,804.835469, + 0.545345,0.814611,0.197505,-420.078334,-628.691656,741.194313, + 0.693789,0.692567,0.197505,-534.658304,-534.658304,741.194313, + 0.545345,0.814611,0.197505,-420.078334,-628.691656,741.194313, + 0.692336,0.720367,-0.041734,-537.590672,-537.590672,804.835469, + 0.554012,0.829678,-0.068597,-422.38228,-632.139755,804.835469, + 0.69268,0.69268,-0.200971,-528.527588,-528.527588,867.310387, + 0.554012,0.829678,-0.068597,-422.38228,-632.139755,804.835469, + 0.692336,0.720367,-0.041734,-537.590672,-537.590672,804.835469, + 0.554012,0.829678,-0.068597,-422.38228,-632.139755,804.835469, + 0.69268,0.69268,-0.200971,-528.527588,-528.527588,867.310387, + 0.517227,0.831943,-0.200867,-415.261462,-621.482696,867.310387, + 0.43772,0.467437,-0.768052,-330.329744,-330.329744,1100.8886, + 0.37306,0.520502,-0.768052,-415.261462,-621.482696,867.310387, + 0.467437,0.43772,-0.768052,-528.527588,-528.527588,867.310387, + 0.37306,0.520502,-0.768052,-415.261462,-621.482696,867.310387, + 0.43772,0.467437,-0.768052,-330.329744,-330.329744,1100.8886, + 0.338117,0.54385,-0.768052,-259.538414,-388.426686,1100.8886, + 0.908682,0.411821,-0.06856,-702.396062,-290.941975,804.835469, + 0.831943,0.517227,-0.200867,-621.482696,-415.261462,867.310387, + 0.81088,0.581183,-0.06856,-632.139755,-422.38228,804.835469, + 0.831943,0.517227,-0.200867,-621.482696,-415.261462,867.310387, + 0.908682,0.411821,-0.06856,-702.396062,-290.941975,804.835469, + 0.916863,0.344985,-0.200867,-690.554573,-286.03707,867.310387, + 0.738649,0.49247,-0.460294,-762.654701,-509.589579,2296.83617, + 0.59226,0.59226,-0.546311,-623.966782,-623.966782,2355.166755, + 0.634114,0.634114,-0.442491,-648.584509,-648.584509,2296.83617, + 0.59226,0.59226,-0.546311,-623.966782,-623.966782,2355.166755, + 0.738649,0.49247,-0.460294,-762.654701,-509.589579,2296.83617, + 0.687833,0.458274,-0.562913,-733.707316,-490.247555,2355.166755, + -0.01288,0.939228,0.343052,0,-944.844672,1835.635445, + -0.172314,0.870883,0.460294,178.944064,-899.612557,1773.56823, + 0.000898,0.887766,0.460294,0,-917.237009,1773.56823, + -0.172314,0.870883,0.460294,178.944064,-899.612557,1773.56823, + -0.01288,0.939228,0.343052,0,-944.844672,1835.635445, + -0.204727,0.913717,0.351011,184.330051,-926.689746,1835.635445, + 0.472298,0.759676,-0.447021,-363.353779,-543.79736,1474.61404, + 0.369253,0.814754,-0.447021,-286.03707,-690.554573,1287.75132, + 0.521108,0.727062,-0.447021,-415.261462,-621.482696,1287.75132, + 0.369253,0.814754,-0.447021,-286.03707,-690.554573,1287.75132, + 0.472298,0.759676,-0.447021,-363.353779,-543.79736,1474.61404, + 0.315017,0.837219,-0.447021,-250.282436,-604.235252,1474.61404, + 0.727062,0.521108,-0.447021,-582.640028,-389.30762,1100.8886, + 0.632456,0.632456,-0.447214,-429.428666,-429.428666,1287.75132, + 0.632456,0.632456,-0.447214,-495.494614,-495.494614,1100.8886, + 0.632456,0.632456,-0.447214,-429.428666,-429.428666,1287.75132, + 0.727062,0.521108,-0.447021,-582.640028,-389.30762,1100.8886, + 0.759676,0.472298,-0.447021,-504.954691,-337.399938,1287.75132, + -0.032813,0.999462,-0,0,-747.450884,2549.07468, + -0.162803,0.986659,-0,145.820434,-733.088824,2408.92764, + 0.032813,0.999462,-0,0,-747.450884,2408.92764, + -0.162803,0.986659,-0,145.820434,-733.088824,2408.92764, + -0.032813,0.999462,-0,0,-747.450884,2549.07468, + -0.227168,0.973856,-0,145.820434,-733.088824,2549.07468, + 0.672244,0.417941,0.611076,-699.180902,-467.177743,1661.47676, + 0.764021,0.315278,0.562913,-815.251889,-337.688389,1715.237645, + 0.687833,0.458274,0.562913,-733.707316,-490.247555,1715.237645, + 0.764021,0.315278,0.562913,-815.251889,-337.688389,1715.237645, + 0.672244,0.417941,0.611076,-699.180902,-467.177743,1661.47676, + 0.740863,0.278762,0.611076,-776.888194,-321.797626,1661.47676, + 0.917371,0.379736,0.119297,-902.602786,-373.870315,1967.393306, + 0.973856,0.227168,-0,-962.179081,-191.389319,2035.2022, + 0.910825,0.412792,0,-906.352876,-375.423654,2035.2022, + 0.973856,0.227168,-0,-962.179081,-191.389319,2035.2022, + 0.917371,0.379736,0.119297,-902.602786,-373.870315,1967.393306, + 0.973826,0.193469,0.119297,-958.198007,-190.597434,1967.393306, + 0.814754,0.369253,-0.447021,-647.394912,-268.159753,1100.8886, + 0.759676,0.472298,-0.447021,-504.954691,-337.399938,1287.75132, + 0.727062,0.521108,-0.447021,-582.640028,-389.30762,1100.8886, + 0.759676,0.472298,-0.447021,-504.954691,-337.399938,1287.75132, + 0.814754,0.369253,-0.447021,-647.394912,-268.159753,1100.8886, + 0.837219,0.315017,-0.447021,-561.075591,-232.405119,1287.75132, + 0.995185,0.098017,-0,-747.450884,0,2408.92764, + 0.986659,0.162803,-0,-733.088824,-145.820434,2549.07468, + 0.973856,0.227168,-0,-733.088824,-145.820434,2408.92764, + 0.986659,0.162803,-0,-733.088824,-145.820434,2549.07468, + 0.995185,0.098017,-0,-747.450884,0,2408.92764, + 0.995185,0.098017,0,-747.450884,0,2549.07468, + 0.630892,0.392232,0.669425,-581.445733,-388.509618,628.271002, + 0.589368,0.267106,0.762431,-601.13423,-248.997951,587.016307, + 0.69529,0.261614,0.669425,-646.067883,-267.610079,628.271002, + 0.589368,0.267106,0.762431,-601.13423,-248.997951,587.016307, + 0.630892,0.392232,0.669425,-581.445733,-388.509618,628.271002, + 0.525933,0.376953,0.762431,-541.006514,-361.488996,587.016307, + 0.542249,0.507776,0.669425,-494.47895,-494.47895,628.271002, + 0.743805,0.494626,0.449554,-611.383516,-408.513405,680.911024, + 0.633017,0.630231,0.449554,-519.938942,-519.938942,680.911024, + 0.743805,0.494626,0.449554,-611.383516,-408.513405,680.911024, + 0.542249,0.507776,0.669425,-494.47895,-494.47895,628.271002, + 0.630892,0.392232,0.669425,-581.445733,-388.509618,628.271002, + 0.693789,0.692567,0.197505,-534.658304,-534.658304,741.194313, + 0.81088,0.581183,-0.06856,-632.139755,-422.38228,804.835469, + 0.692336,0.720367,-0.041734,-537.590672,-537.590672,804.835469, + 0.81088,0.581183,-0.06856,-632.139755,-422.38228,804.835469, + 0.693789,0.692567,0.197505,-534.658304,-534.658304,741.194313, + 0.815571,0.543908,0.197505,-628.691656,-420.078334,741.194313, + 0.81088,0.581183,-0.06856,-632.139755,-422.38228,804.835469, + 0.69268,0.69268,-0.200971,-528.527588,-528.527588,867.310387, + 0.692336,0.720367,-0.041734,-537.590672,-537.590672,804.835469, + 0.69268,0.69268,-0.200971,-528.527588,-528.527588,867.310387, + 0.81088,0.581183,-0.06856,-632.139755,-422.38228,804.835469, + 0.831943,0.517227,-0.200867,-621.482696,-415.261462,867.310387, + 0.520502,0.37306,-0.768052,-388.426686,-259.538414,1100.8886, + 0.467437,0.43772,-0.768052,-528.527588,-528.527588,867.310387, + 0.54385,0.338117,-0.768052,-621.482696,-415.261462,867.310387, + 0.467437,0.43772,-0.768052,-528.527588,-528.527588,867.310387, + 0.520502,0.37306,-0.768052,-388.426686,-259.538414,1100.8886, + 0.43772,0.467437,-0.768052,-330.329744,-330.329744,1100.8886, + 0.12887,0.781011,-0.611076,-164.051007,-824.740108,2408.92764, + -0.001099,0.826515,-0.562913,0,-882.422286,2355.166755, + 0.160167,0.810848,-0.562913,-172.152048,-865.466789,2355.166755, + -0.001099,0.826515,-0.562913,0,-882.422286,2355.166755, + 0.12887,0.781011,-0.611076,-164.051007,-824.740108,2408.92764, + -0.025974,0.791146,-0.611076,0,-840.897722,2408.92764, + 0.702221,0.701893,0.119297,-690.822265,-690.822265,1967.393306, + 0.54014,0.807547,0.236891,-536.042486,-802.244273,1900.552851, + 0.687306,0.686654,0.236891,-682.252673,-682.252673,1900.552851, + 0.54014,0.807547,0.236891,-536.042486,-802.244273,1900.552851, + 0.702221,0.701893,0.119297,-690.822265,-690.822265,1967.393306, + 0.551796,0.825403,0.119297,-542.77557,-812.321046,1967.393306, + -0.882589,0.145631,-0.447021,595.634671,-118.479102,1287.75132, + -0.890977,0.087754,-0.445488,700.735204,-0,1100.8886, + -0.871137,0.203207,-0.447021,687.270773,-136.706657,1100.8886, + -0.890977,0.087754,-0.445488,700.735204,-0,1100.8886, + -0.882589,0.145631,-0.447021,595.634671,-118.479102,1287.75132, + -0.890977,0.087754,-0.445488,607.303844,-0,1287.75132, + 0.00197,0.893251,0.449554,0,-735.304703,680.911024, + -0.130866,0.717913,0.683722,136.426435,-685.862006,628.271002, + 0.024376,0.742479,0.669425,0,-699.298837,628.271002, + -0.130866,0.717913,0.683722,136.426435,-685.862006,628.271002, + 0.00197,0.893251,0.449554,0,-735.304703,680.911024, + -0.172332,0.876472,0.449554,143.450831,-721.176029,680.911024, + 0.778916,0.519633,0.3511,-785.609633,-524.927574,1835.635445, + 0.897759,0.371365,0.236891,-891.406075,-369.232486,1900.552851, + 0.808059,0.539373,0.236891,-802.244273,-536.042486,1900.552851, + 0.897759,0.371365,0.236891,-891.406075,-369.232486,1900.552851, + 0.778916,0.519633,0.3511,-785.609633,-524.927574,1835.635445, + 0.865325,0.357689,0.3511,-872.922654,-361.576402,1835.635445, + 0.875139,0.086194,-0.476133,-917.237009,0,2296.83617, + 0.810848,0.160167,-0.562913,-865.466789,-172.152048,2355.166755, + 0.870883,0.172314,-0.460294,-899.612557,-178.944064,2296.83617, + 0.810848,0.160167,-0.562913,-865.466789,-172.152048,2355.166755, + 0.875139,0.086194,-0.476133,-917.237009,0,2296.83617, + 0.812508,0.080025,-0.577431,-882.422286,0,2355.166755, + 0.315278,0.764021,-0.562913,-337.688389,-815.251889,2355.166755, + 0.172314,0.870883,-0.460294,-178.944064,-899.612557,2296.83617, + 0.338904,0.820532,-0.460294,-351.011407,-847.416499,2296.83617, + 0.172314,0.870883,-0.460294,-178.944064,-899.612557,2296.83617, + 0.315278,0.764021,-0.562913,-337.688389,-815.251889,2355.166755, + 0.160167,0.810848,-0.562913,-172.152048,-865.466789,2355.166755, + 0.278762,0.740863,-0.611076,-321.797626,-776.888194,2408.92764, + 0.160167,0.810848,-0.562913,-172.152048,-865.466789,2355.166755, + 0.315278,0.764021,-0.562913,-337.688389,-815.251889,2355.166755, + 0.160167,0.810848,-0.562913,-172.152048,-865.466789,2355.166755, + 0.278762,0.740863,-0.611076,-321.797626,-776.888194,2408.92764, + 0.12887,0.781011,-0.611076,-164.051007,-824.740108,2408.92764, + 0.890977,0.087754,-0.445488,-747.450884,0,1287.75132, + 0.882589,0.145631,-0.447021,-641.452722,-127.592879,1474.61404, + 0.871137,0.203207,-0.447021,-733.088824,-145.820434,1287.75132, + 0.882589,0.145631,-0.447021,-641.452722,-127.592879,1474.61404, + 0.890977,0.087754,-0.445488,-747.450884,0,1287.75132, + 0.890977,0.087754,-0.445488,-654.019524,0,1474.61404, + 0.585212,0.583657,0.562913,-623.966782,-623.966782,1715.237645, + 0.461133,0.643383,0.611076,-467.177743,-699.180902,1661.47676, + 0.577791,0.541058,0.611076,-594.604481,-594.604481,1661.47676, + 0.461133,0.643383,0.611076,-467.177743,-699.180902,1661.47676, + 0.585212,0.583657,0.562913,-623.966782,-623.966782,1715.237645, + 0.460101,0.686612,0.562913,-490.247555,-733.707316,1715.237645, + 0.371365,0.897759,-0.236891,-369.232486,-891.406075,2169.851549, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.379736,0.917371,-0.119297,-373.870315,-902.602786,2103.011094, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.371365,0.897759,-0.236891,-369.232486,-891.406075,2169.851549, + 0.189085,0.952958,-0.236891,-188.233089,-946.311642,2169.851549, + 0.910825,0.412792,0,-690.554573,-286.03707,2408.92764, + 0.849252,0.527988,0,-621.482696,-415.261462,2549.07468, + 0.812792,0.582554,0,-621.482696,-415.261462,2408.92764, + 0.849252,0.527988,0,-621.482696,-415.261462,2549.07468, + 0.910825,0.412792,0,-690.554573,-286.03707,2408.92764, + 0.935939,0.352162,-0,-690.554573,-286.03707,2549.07468, + 0.432767,0.603806,0.669425,-388.509618,-581.445733,628.271002, + 0.442288,0.472315,0.762431,-460.088221,-460.088221,587.016307, + 0.542249,0.507776,0.669425,-494.47895,-494.47895,628.271002, + 0.442288,0.472315,0.762431,-460.088221,-460.088221,587.016307, + 0.432767,0.603806,0.669425,-388.509618,-581.445733,628.271002, + 0.341645,0.549525,0.762431,-361.488996,-541.006514,587.016307, + 0.551796,0.825403,0.119297,-542.77557,-812.321046,1967.393306, + 0.372217,0.897406,0.236891,-369.232486,-891.406075,1900.552851, + 0.54014,0.807547,0.236891,-536.042486,-802.244273,1900.552851, + 0.372217,0.897406,0.236891,-369.232486,-891.406075,1900.552851, + 0.551796,0.825403,0.119297,-542.77557,-812.321046,1967.393306, + 0.380165,0.917193,0.119297,-373.870315,-902.602786,1967.393306, + 0.871137,0.203207,-0.447021,-778.906876,-154.934211,1474.61404, + 0.837219,0.315017,-0.447021,-647.394912,-268.159753,1661.47676, + 0.814754,0.369253,-0.447021,-733.714234,-303.914386,1474.61404, + 0.837219,0.315017,-0.447021,-647.394912,-268.159753,1661.47676, + 0.871137,0.203207,-0.447021,-778.906876,-154.934211,1474.61404, + 0.882589,0.145631,-0.447021,-687.270773,-136.706657,1661.47676, + 0.372217,0.897406,0.236891,-369.232486,-891.406075,1900.552851, + 0.183341,0.918213,0.3511,-184.330051,-926.689746,1835.635445, + 0.358953,0.864801,0.3511,-361.576402,-872.922654,1835.635445, + 0.183341,0.918213,0.3511,-184.330051,-926.689746,1835.635445, + 0.372217,0.897406,0.236891,-369.232486,-891.406075,1900.552851, + 0.18999,0.952778,0.236891,-188.233089,-946.311642,1900.552851, + 0.906011,0.374347,0.197505,-698.56474,-289.354989,741.194313, + 0.971564,0.226633,-0.06856,-745.659682,-148.320933,804.835469, + 0.908682,0.411821,-0.06856,-702.396062,-290.941975,804.835469, + 0.971564,0.226633,-0.06856,-745.659682,-148.320933,804.835469, + 0.906011,0.374347,0.197505,-698.56474,-289.354989,741.194313, + 0.961634,0.1904,0.197505,-741.592372,-147.511894,741.194313, + 0.145631,0.882589,-0.447021,-127.592879,-641.452722,1474.61404, + 0.029352,0.894042,-0.447021,0,-747.450884,1287.75132, + 0.203207,0.871137,-0.447021,-145.820434,-733.088824,1287.75132, + 0.029352,0.894042,-0.447021,0,-747.450884,1287.75132, + 0.145631,0.882589,-0.447021,-127.592879,-641.452722,1474.61404, + -0.029352,0.894042,-0.447021,0,-654.019524,1474.61404, + 0.995185,0.098017,-0,-981.029284,-0,2035.2022, + 0.973826,0.193469,-0.119297,-958.198007,-190.597434,2103.011094, + 0.973856,0.227168,-0,-962.179081,-191.389319,2035.2022, + 0.973826,0.193469,-0.119297,-958.198007,-190.597434,2103.011094, + 0.995185,0.098017,-0,-981.029284,-0,2035.2022, + 0.985604,0.097074,-0.138423,-976.970216,0,2103.011094, + 0.810848,0.160167,0.562913,-865.466789,-172.152048,1715.237645, + 0.875139,0.086194,0.476133,-917.237009,0,1773.56823, + 0.870883,0.172314,0.460294,-899.612557,-178.944064,1773.56823, + 0.875139,0.086194,0.476133,-917.237009,0,1773.56823, + 0.810848,0.160167,0.562913,-865.466789,-172.152048,1715.237645, + 0.812508,0.080025,0.577431,-882.422286,0,1715.237645, + 0.925281,0.091132,-0.36817,-944.844672,0,2234.768955, + 0.870883,0.172314,-0.460294,-899.612557,-178.944064,2296.83617, + 0.91848,0.181999,-0.3511,-926.689746,-184.330051,2234.768955, + 0.870883,0.172314,-0.460294,-899.612557,-178.944064,2296.83617, + 0.925281,0.091132,-0.36817,-944.844672,0,2234.768955, + 0.875139,0.086194,-0.476133,-917.237009,0,2296.83617, + 0.738649,0.49247,0.460294,-762.654701,-509.589579,1773.56823, + 0.865325,0.357689,0.3511,-872.922654,-361.576402,1835.635445, + 0.778916,0.519633,0.3511,-785.609633,-524.927574,1835.635445, + 0.865325,0.357689,0.3511,-872.922654,-361.576402,1835.635445, + 0.738649,0.49247,0.460294,-762.654701,-509.589579,1773.56823, + 0.820532,0.338904,0.460294,-847.416499,-351.011407,1773.56823, + 0.82601,0.340012,0.449554,-679.332965,-281.388928,680.911024, + 0.961634,0.1904,0.197505,-741.592372,-147.511894,741.194313, + 0.906011,0.374347,0.197505,-698.56474,-289.354989,741.194313, + 0.961634,0.1904,0.197505,-741.592372,-147.511894,741.194313, + 0.82601,0.340012,0.449554,-679.332965,-281.388928,680.911024, + 0.876472,0.172332,0.449554,-721.176029,-143.450831,680.911024, + 0.472298,0.759676,-0.447021,-389.30762,-582.640028,1661.47676, + 0.369253,0.814754,-0.447021,-303.914386,-733.714234,1474.61404, + 0.521108,0.727062,-0.447021,-441.215303,-660.325365,1474.61404, + 0.369253,0.814754,-0.447021,-303.914386,-733.714234,1474.61404, + 0.472298,0.759676,-0.447021,-389.30762,-582.640028,1661.47676, + 0.315017,0.837219,-0.447021,-268.159753,-647.394912,1661.47676, + 0.577791,0.541058,0.611076,-594.604481,-594.604481,1661.47676, + 0.687833,0.458274,0.562913,-733.707316,-490.247555,1715.237645, + 0.585212,0.583657,0.562913,-623.966782,-623.966782,1715.237645, + 0.687833,0.458274,0.562913,-733.707316,-490.247555,1715.237645, + 0.577791,0.541058,0.611076,-594.604481,-594.604481,1661.47676, + 0.672244,0.417941,0.611076,-699.180902,-467.177743,1661.47676, + 0.585212,0.583657,0.562913,-623.966782,-623.966782,1715.237645, + 0.738649,0.49247,0.460294,-762.654701,-509.589579,1773.56823, + 0.62838,0.627111,0.460294,-648.584509,-648.584509,1773.56823, + 0.738649,0.49247,0.460294,-762.654701,-509.589579,1773.56823, + 0.585212,0.583657,0.562913,-623.966782,-623.966782,1715.237645, + 0.687833,0.458274,0.562913,-733.707316,-490.247555,1715.237645, + 0.633017,0.630231,0.449554,-519.938942,-519.938942,680.911024, + 0.815571,0.543908,0.197505,-628.691656,-420.078334,741.194313, + 0.693789,0.692567,0.197505,-534.658304,-534.658304,741.194313, + 0.815571,0.543908,0.197505,-628.691656,-420.078334,741.194313, + 0.633017,0.630231,0.449554,-519.938942,-519.938942,680.911024, + 0.743805,0.494626,0.449554,-611.383516,-408.513405,680.911024, + 0.732968,0.120943,0.669425,-685.862006,-136.426435,628.271002, + 0.645559,0.063582,0.761059,-650.663002,0,587.016307, + 0.740721,0.072955,0.66784,-699.298837,0,628.271002, + 0.645559,0.063582,0.761059,-650.663002,0,587.016307, + 0.732968,0.120943,0.669425,-685.862006,-136.426435,628.271002, + 0.630153,0.146993,0.762431,-638.160695,-126.938055,587.016307, + 0.7036,0.7036,-0.099466,-690.822265,-690.822265,2103.011094, + 0.55557,0.83147,0,-545.030668,-815.696038,2035.2022, + 0.692994,0.720844,0.011969,-693.692459,-693.692459,2035.2022, + 0.55557,0.83147,0,-545.030668,-815.696038,2035.2022, + 0.7036,0.7036,-0.099466,-690.822265,-690.822265,2103.011094, + 0.55141,0.825661,-0.119297,-542.77557,-812.321046,2103.011094, + 0.690185,0.690185,-0.217461,-682.252673,-682.252673,2169.851549, + 0.55141,0.825661,-0.119297,-542.77557,-812.321046,2103.011094, + 0.7036,0.7036,-0.099466,-690.822265,-690.822265,2103.011094, + 0.55141,0.825661,-0.119297,-542.77557,-812.321046,2103.011094, + 0.690185,0.690185,-0.217461,-682.252673,-682.252673,2169.851549, + 0.539373,0.808059,-0.236891,-536.042486,-802.244273,2169.851549, + -0.032144,0.979091,-0.200867,0,-747.450884,867.310387, + -0.194925,0.978416,-0.068597,148.320933,-745.659682,804.835469, + -0.0003,0.997644,-0.068597,0,-760.268019,804.835469, + -0.194925,0.978416,-0.068597,148.320933,-745.659682,804.835469, + -0.032144,0.979091,-0.200867,0,-747.450884,867.310387, + -0.222538,0.954007,-0.200867,145.820434,-733.088824,867.310387, + -0.104257,0.631844,-0.768052,91.137771,-458.180517,1100.8886, + 0,0.640184,-0.768222,0,-747.450884,867.310387, + 0,0.640184,-0.768222,0,-467.156804,1100.8886, + 0,0.640184,-0.768222,0,-747.450884,867.310387, + -0.104257,0.631844,-0.768052,91.137771,-458.180517,1100.8886, + -0.145475,0.623645,-0.768052,145.820434,-733.088824,867.310387, + 0.820532,0.338904,0.460294,-847.416499,-351.011407,1773.56823, + 0.91848,0.181999,0.3511,-926.689746,-184.330051,1835.635445, + 0.865325,0.357689,0.3511,-872.922654,-361.576402,1835.635445, + 0.91848,0.181999,0.3511,-926.689746,-184.330051,1835.635445, + 0.820532,0.338904,0.460294,-847.416499,-351.011407,1773.56823, + 0.870883,0.172314,0.460294,-899.612557,-178.944064,1773.56823, + 0.193925,0.973736,0.119297,-190.597434,-958.198007,1967.393306, + 0.000461,0.971536,0.236891,0,-964.850983,1900.552851, + 0.18999,0.952778,0.236891,-188.233089,-946.311642,1900.552851, + 0.000461,0.971536,0.236891,0,-964.850983,1900.552851, + 0.193925,0.973736,0.119297,-190.597434,-958.198007,1967.393306, + 0.024785,0.994227,0.104395,0,-976.970216,1967.393306, + 0.000864,0.980301,0.197505,0,-756.121025,741.194313, + -0.172332,0.876472,0.449554,143.450831,-721.176029,680.911024, + 0.00197,0.893251,0.449554,0,-735.304703,680.911024, + -0.172332,0.876472,0.449554,143.450831,-721.176029,680.911024, + 0.000864,0.980301,0.197505,0,-756.121025,741.194313, + -0.1904,0.961634,0.197505,147.511894,-741.592372,741.194313, + -0.0003,0.997644,-0.068597,0,-760.268019,804.835469, + -0.1904,0.961634,0.197505,147.511894,-741.592372,741.194313, + 0.000864,0.980301,0.197505,0,-756.121025,741.194313, + -0.1904,0.961634,0.197505,147.511894,-741.592372,741.194313, + -0.0003,0.997644,-0.068597,0,-760.268019,804.835469, + -0.194925,0.978416,-0.068597,148.320933,-745.659682,804.835469, + 0.992863,0.097788,-0.068268,-760.268019,0,804.835469, + 0.966549,0.159485,-0.200867,-733.088824,-145.820434,867.310387, + 0.971564,0.226633,-0.06856,-745.659682,-148.320933,804.835469, + 0.966549,0.159485,-0.200867,-733.088824,-145.820434,867.310387, + 0.992863,0.097788,-0.068268,-760.268019,0,804.835469, + 0.975069,0.096036,-0.200042,-747.450884,0,867.310387, + 0.865325,0.357689,0.3511,-872.922654,-361.576402,1835.635445, + 0.952958,0.189085,0.236891,-946.311642,-188.233089,1900.552851, + 0.897759,0.371365,0.236891,-891.406075,-369.232486,1900.552851, + 0.952958,0.189085,0.236891,-946.311642,-188.233089,1900.552851, + 0.865325,0.357689,0.3511,-872.922654,-361.576402,1835.635445, + 0.91848,0.181999,0.3511,-926.689746,-184.330051,1835.635445, + -0.882589,0.145631,-0.447021,641.452722,-127.592879,1474.61404, + -0.890977,0.087754,-0.445488,747.450884,-0,1287.75132, + -0.871137,0.203207,-0.447021,733.088824,-145.820434,1287.75132, + -0.890977,0.087754,-0.445488,747.450884,-0,1287.75132, + -0.882589,0.145631,-0.447021,641.452722,-127.592879,1474.61404, + -0.890977,0.087754,-0.445488,654.019524,-0,1474.61404, + 0.971564,0.226633,-0.06856,-745.659682,-148.320933,804.835469, + 0.916863,0.344985,-0.200867,-690.554573,-286.03707,867.310387, + 0.908682,0.411821,-0.06856,-702.396062,-290.941975,804.835469, + 0.916863,0.344985,-0.200867,-690.554573,-286.03707,867.310387, + 0.971564,0.226633,-0.06856,-745.659682,-148.320933,804.835469, + 0.966549,0.159485,-0.200867,-733.088824,-145.820434,867.310387, + 0.379736,0.917371,-0.119297,-373.870315,-902.602786,2103.011094, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.382683,0.92388,0,-375.423654,-906.352876,2035.2022, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.379736,0.917371,-0.119297,-373.870315,-902.602786,2103.011094, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.338117,0.54385,-0.768052,-259.538414,-388.426686,1100.8886, + 0.264347,0.583281,-0.768052,-286.03707,-690.554573,867.310387, + 0.37306,0.520502,-0.768052,-415.261462,-621.482696,867.310387, + 0.264347,0.583281,-0.768052,-286.03707,-690.554573,867.310387, + 0.338117,0.54385,-0.768052,-259.538414,-388.426686,1100.8886, + 0.22552,0.599364,-0.768052,-178.773169,-431.596609,1100.8886, + 0.815571,0.543908,0.197505,-628.691656,-420.078334,741.194313, + 0.908682,0.411821,-0.06856,-702.396062,-290.941975,804.835469, + 0.81088,0.581183,-0.06856,-632.139755,-422.38228,804.835469, + 0.908682,0.411821,-0.06856,-702.396062,-290.941975,804.835469, + 0.815571,0.543908,0.197505,-628.691656,-420.078334,741.194313, + 0.906011,0.374347,0.197505,-698.56474,-289.354989,741.194313, + 0.890977,0.087754,-0.445488,-794.166564,0,1474.61404, + 0.882589,0.145631,-0.447021,-687.270773,-136.706657,1661.47676, + 0.871137,0.203207,-0.447021,-778.906876,-154.934211,1474.61404, + 0.882589,0.145631,-0.447021,-687.270773,-136.706657,1661.47676, + 0.890977,0.087754,-0.445488,-794.166564,0,1474.61404, + 0.890977,0.087754,-0.445488,-700.735204,0,1661.47676, + 0.472298,0.759676,-0.447021,-337.399938,-504.954691,1287.75132, + 0.369253,0.814754,-0.447021,-268.159753,-647.394912,1100.8886, + 0.521108,0.727062,-0.447021,-389.30762,-582.640028,1100.8886, + 0.369253,0.814754,-0.447021,-268.159753,-647.394912,1100.8886, + 0.472298,0.759676,-0.447021,-337.399938,-504.954691,1287.75132, + 0.315017,0.837219,-0.447021,-232.405119,-561.075591,1287.75132, + 0.985604,0.097074,-0.138423,-976.970216,0,2103.011094, + 0.952958,0.189085,-0.236891,-946.311642,-188.233089,2169.851549, + 0.973826,0.193469,-0.119297,-958.198007,-190.597434,2103.011094, + 0.952958,0.189085,-0.236891,-946.311642,-188.233089,2169.851549, + 0.985604,0.097074,-0.138423,-976.970216,0,2103.011094, + 0.962266,0.094775,-0.255071,-964.850983,0,2169.851549, + -0.82601,0.340012,0.449554,679.332965,-281.388928,680.911024, + -0.630892,0.392232,0.669425,581.445733,-388.509618,628.271002, + -0.743805,0.494626,0.449554,611.383516,-408.513405,680.911024, + -0.630892,0.392232,0.669425,581.445733,-388.509618,628.271002, + -0.82601,0.340012,0.449554,679.332965,-281.388928,680.911024, + -0.69529,0.261614,0.669425,646.067883,-267.610079,628.271002, + 0.162803,0.986659,-0,-145.820434,-733.088824,2549.07468, + 0.032813,0.999462,-0,0,-747.450884,2408.92764, + 0.227168,0.973856,-0,-145.820434,-733.088824,2408.92764, + 0.032813,0.999462,-0,0,-747.450884,2408.92764, + 0.162803,0.986659,-0,-145.820434,-733.088824,2549.07468, + -0.032813,0.999462,-0,0,-747.450884,2549.07468, + 0.727062,0.521108,-0.447021,-621.482696,-415.261462,1287.75132, + 0.632456,0.632456,-0.447214,-462.46164,-462.46164,1474.61404, + 0.632456,0.632456,-0.447214,-528.527588,-528.527588,1287.75132, + 0.632456,0.632456,-0.447214,-462.46164,-462.46164,1474.61404, + 0.727062,0.521108,-0.447021,-621.482696,-415.261462,1287.75132, + 0.759676,0.472298,-0.447021,-543.79736,-363.353779,1474.61404, + 0.666912,0.666912,-0.332349,-668.106075,-668.106075,2234.768955, + 0.539373,0.808059,-0.236891,-536.042486,-802.244273,2169.851549, + 0.690185,0.690185,-0.217461,-682.252673,-682.252673,2169.851549, + 0.539373,0.808059,-0.236891,-536.042486,-802.244273,2169.851549, + 0.666912,0.666912,-0.332349,-668.106075,-668.106075,2234.768955, + 0.519633,0.778916,-0.3511,-524.927574,-785.609633,2234.768955, + 0.69529,0.261614,0.669425,-646.067883,-267.610079,628.271002, + 0.630153,0.146993,0.762431,-638.160695,-126.938055,587.016307, + 0.732968,0.120943,0.669425,-685.862006,-136.426435,628.271002, + 0.630153,0.146993,0.762431,-638.160695,-126.938055,587.016307, + 0.69529,0.261614,0.669425,-646.067883,-267.610079,628.271002, + 0.589368,0.267106,0.762431,-601.13423,-248.997951,587.016307, + 0.638915,0.062928,-0.766699,-467.156804,0,1100.8886, + 0.631844,0.104257,-0.768052,-733.088824,-145.820434,867.310387, + 0.638915,0.062928,-0.766699,-747.450884,0,867.310387, + 0.631844,0.104257,-0.768052,-733.088824,-145.820434,867.310387, + 0.638915,0.062928,-0.766699,-467.156804,0,1100.8886, + 0.623645,0.145475,-0.768052,-458.180517,-91.137771,1100.8886, + 0.897759,0.371365,0.236891,-891.406075,-369.232486,1900.552851, + 0.973826,0.193469,0.119297,-958.198007,-190.597434,1967.393306, + 0.917371,0.379736,0.119297,-902.602786,-373.870315,1967.393306, + 0.973826,0.193469,0.119297,-958.198007,-190.597434,1967.393306, + 0.897759,0.371365,0.236891,-891.406075,-369.232486,1900.552851, + 0.952958,0.189085,0.236891,-946.311642,-188.233089,1900.552851, + 0.62838,0.627111,0.460294,-648.584509,-648.584509,1773.56823, + 0.460101,0.686612,0.562913,-490.247555,-733.707316,1715.237645, + 0.585212,0.583657,0.562913,-623.966782,-623.966782,1715.237645, + 0.460101,0.686612,0.562913,-490.247555,-733.707316,1715.237645, + 0.62838,0.627111,0.460294,-648.584509,-648.584509,1773.56823, + 0.493963,0.737652,0.460294,-509.589579,-762.654701,1773.56823, + 0.662575,0.661607,0.3511,-668.106075,-668.106075,1835.635445, + 0.493963,0.737652,0.460294,-509.589579,-762.654701,1773.56823, + 0.62838,0.627111,0.460294,-648.584509,-648.584509,1773.56823, + 0.493963,0.737652,0.460294,-509.589579,-762.654701,1773.56823, + 0.662575,0.661607,0.3511,-668.106075,-668.106075,1835.635445, + 0.52077,0.778156,0.3511,-524.927574,-785.609633,1835.635445, + 0.517227,0.831943,-0.200867,-415.261462,-621.482696,867.310387, + 0.381505,0.921818,-0.068597,-290.941975,-702.396062,804.835469, + 0.554012,0.829678,-0.068597,-422.38228,-632.139755,804.835469, + 0.381505,0.921818,-0.068597,-290.941975,-702.396062,804.835469, + 0.517227,0.831943,-0.200867,-415.261462,-621.482696,867.310387, + 0.344985,0.916863,-0.200867,-286.03707,-690.554573,867.310387, + 0.62838,0.627111,0.460294,-648.584509,-648.584509,1773.56823, + 0.778916,0.519633,0.3511,-785.609633,-524.927574,1835.635445, + 0.662575,0.661607,0.3511,-668.106075,-668.106075,1835.635445, + 0.778916,0.519633,0.3511,-785.609633,-524.927574,1835.635445, + 0.62838,0.627111,0.460294,-648.584509,-648.584509,1773.56823, + 0.738649,0.49247,0.460294,-762.654701,-509.589579,1773.56823, + 0.727062,0.521108,-0.447021,-660.325365,-441.215303,1474.61404, + 0.632456,0.632456,-0.447214,-495.494614,-495.494614,1661.47676, + 0.632456,0.632456,-0.447214,-561.560563,-561.560563,1474.61404, + 0.632456,0.632456,-0.447214,-495.494614,-495.494614,1661.47676, + 0.727062,0.521108,-0.447021,-660.325365,-441.215303,1474.61404, + 0.759676,0.472298,-0.447021,-582.640028,-389.30762,1661.47676, + 0.687306,0.686654,0.236891,-682.252673,-682.252673,1900.552851, + 0.825661,0.55141,0.119297,-812.321046,-542.77557,1967.393306, + 0.702221,0.701893,0.119297,-690.822265,-690.822265,1967.393306, + 0.825661,0.55141,0.119297,-812.321046,-542.77557,1967.393306, + 0.687306,0.686654,0.236891,-682.252673,-682.252673,1900.552851, + 0.808059,0.539373,0.236891,-802.244273,-536.042486,1900.552851, + 0.702221,0.701893,0.119297,-690.822265,-690.822265,1967.393306, + 0.812792,0.582554,0,-815.696038,-545.030668,2035.2022, + 0.692994,0.720844,0.011969,-693.692459,-693.692459,2035.2022, + 0.812792,0.582554,0,-815.696038,-545.030668,2035.2022, + 0.702221,0.701893,0.119297,-690.822265,-690.822265,1967.393306, + 0.825661,0.55141,0.119297,-812.321046,-542.77557,1967.393306, + 0.634114,0.634114,-0.442491,-648.584509,-648.584509,2296.83617, + 0.519633,0.778916,-0.3511,-524.927574,-785.609633,2234.768955, + 0.666912,0.666912,-0.332349,-668.106075,-668.106075,2234.768955, + 0.519633,0.778916,-0.3511,-524.927574,-785.609633,2234.768955, + 0.634114,0.634114,-0.442491,-648.584509,-648.584509,2296.83617, + 0.49247,0.738649,-0.460294,-509.589579,-762.654701,2296.83617, + 0.59226,0.59226,-0.546311,-623.966782,-623.966782,2355.166755, + 0.49247,0.738649,-0.460294,-509.589579,-762.654701,2296.83617, + 0.634114,0.634114,-0.442491,-648.584509,-648.584509,2296.83617, + 0.49247,0.738649,-0.460294,-509.589579,-762.654701,2296.83617, + 0.59226,0.59226,-0.546311,-623.966782,-623.966782,2355.166755, + 0.458274,0.687833,-0.562913,-490.247555,-733.707316,2355.166755, + 0.632456,0.632456,-0.447214,-495.494614,-495.494614,1661.47676, + 0.521108,0.727062,-0.447021,-441.215303,-660.325365,1474.61404, + 0.632456,0.632456,-0.447214,-561.560563,-561.560563,1474.61404, + 0.521108,0.727062,-0.447021,-441.215303,-660.325365,1474.61404, + 0.632456,0.632456,-0.447214,-495.494614,-495.494614,1661.47676, + 0.472298,0.759676,-0.447021,-389.30762,-582.640028,1661.47676, + 0.583281,0.264347,-0.768052,-431.596609,-178.773169,1100.8886, + 0.54385,0.338117,-0.768052,-621.482696,-415.261462,867.310387, + 0.599364,0.22552,-0.768052,-690.554573,-286.03707,867.310387, + 0.54385,0.338117,-0.768052,-621.482696,-415.261462,867.310387, + 0.583281,0.264347,-0.768052,-431.596609,-178.773169,1100.8886, + 0.520502,0.37306,-0.768052,-388.426686,-259.538414,1100.8886, + 0.497902,0.741616,0.449554,-408.513405,-611.383516,680.911024, + 0.306655,0.676633,0.669425,-267.610079,-646.067883,628.271002, + 0.432767,0.603806,0.669425,-388.509618,-581.445733,628.271002, + 0.306655,0.676633,0.669425,-267.610079,-646.067883,628.271002, + 0.497902,0.741616,0.449554,-408.513405,-611.383516,680.911024, + 0.343652,0.824502,0.449554,-281.388928,-679.332965,680.911024, + 0.545345,0.814611,0.197505,-420.078334,-628.691656,741.194313, + 0.343652,0.824502,0.449554,-281.388928,-679.332965,680.911024, + 0.497902,0.741616,0.449554,-408.513405,-611.383516,680.911024, + 0.343652,0.824502,0.449554,-281.388928,-679.332965,680.911024, + 0.545345,0.814611,0.197505,-420.078334,-628.691656,741.194313, + 0.375943,0.90535,0.197505,-289.354989,-698.56474,741.194313, + 0.554012,0.829678,-0.068597,-422.38228,-632.139755,804.835469, + 0.375943,0.90535,0.197505,-289.354989,-698.56474,741.194313, + 0.545345,0.814611,0.197505,-420.078334,-628.691656,741.194313, + 0.375943,0.90535,0.197505,-289.354989,-698.56474,741.194313, + 0.554012,0.829678,-0.068597,-422.38228,-632.139755,804.835469, + 0.381505,0.921818,-0.068597,-290.941975,-702.396062,804.835469, + 0.000898,0.887766,0.460294,0,-917.237009,1773.56823, + -0.160167,0.810848,0.562913,172.152048,-865.466789,1715.237645, + 0.001099,0.826515,0.562913,0,-882.422286,1715.237645, + -0.160167,0.810848,0.562913,172.152048,-865.466789,1715.237645, + 0.000898,0.887766,0.460294,0,-917.237009,1773.56823, + -0.172314,0.870883,0.460294,178.944064,-899.612557,1773.56823, + 0.559613,0.559613,-0.611282,-594.604481,-594.604481,2408.92764, + 0.458274,0.687833,-0.562913,-490.247555,-733.707316,2355.166755, + 0.59226,0.59226,-0.546311,-623.966782,-623.966782,2355.166755, + 0.458274,0.687833,-0.562913,-490.247555,-733.707316,2355.166755, + 0.559613,0.559613,-0.611282,-594.604481,-594.604481,2408.92764, + 0.417941,0.672244,-0.611076,-467.177743,-699.180902,2408.92764, + 0.707107,0.707107,-0,-528.527588,-528.527588,2549.07468, + 0.582554,0.812792,-0,-415.261462,-621.482696,2408.92764, + 0.707107,0.707107,0,-528.527588,-528.527588,2408.92764, + 0.582554,0.812792,-0,-415.261462,-621.482696,2408.92764, + 0.707107,0.707107,-0,-528.527588,-528.527588,2549.07468, + 0.527988,0.849252,-0,-415.261462,-621.482696,2549.07468, + 0.812792,0.582554,0,-621.482696,-415.261462,2408.92764, + 0.707107,0.707107,-0,-528.527588,-528.527588,2549.07468, + 0.707107,0.707107,0,-528.527588,-528.527588,2408.92764, + 0.707107,0.707107,-0,-528.527588,-528.527588,2549.07468, + 0.812792,0.582554,0,-621.482696,-415.261462,2408.92764, + 0.849252,0.527988,0,-621.482696,-415.261462,2549.07468, + -0.882589,0.145631,-0.447021,687.270773,-136.706657,1661.47676, + -0.890977,0.087754,-0.445488,794.166564,-0,1474.61404, + -0.871137,0.203207,-0.447021,778.906876,-154.934211,1474.61404, + -0.890977,0.087754,-0.445488,794.166564,-0,1474.61404, + -0.882589,0.145631,-0.447021,687.270773,-136.706657,1661.47676, + -0.890977,0.087754,-0.445488,700.735204,-0,1661.47676, + -0.812508,0.080025,0.577431,882.422286,-0,1715.237645, + -0.781011,0.12887,0.611076,824.740108,-164.051007,1661.47676, + -0.810848,0.160167,0.562913,865.466789,-172.152048,1715.237645, + -0.781011,0.12887,0.611076,824.740108,-164.051007,1661.47676, + -0.812508,0.080025,0.577431,882.422286,-0,1715.237645, + -0.789019,0.077712,0.609434,840.897722,-0,1661.47676, + 0.519633,0.778916,-0.3511,-524.927574,-785.609633,2234.768955, + 0.371365,0.897759,-0.236891,-369.232486,-891.406075,2169.851549, + 0.539373,0.808059,-0.236891,-536.042486,-802.244273,2169.851549, + 0.371365,0.897759,-0.236891,-369.232486,-891.406075,2169.851549, + 0.519633,0.778916,-0.3511,-524.927574,-785.609633,2234.768955, + 0.357689,0.865325,-0.3511,-361.576402,-872.922654,2234.768955, + 0.49247,0.738649,-0.460294,-509.589579,-762.654701,2296.83617, + 0.357689,0.865325,-0.3511,-361.576402,-872.922654,2234.768955, + 0.519633,0.778916,-0.3511,-524.927574,-785.609633,2234.768955, + 0.357689,0.865325,-0.3511,-361.576402,-872.922654,2234.768955, + 0.49247,0.738649,-0.460294,-509.589579,-762.654701,2296.83617, + 0.338904,0.820532,-0.460294,-351.011407,-847.416499,2296.83617, + 0.460101,0.686612,0.562913,-490.247555,-733.707316,1715.237645, + 0.326755,0.720984,0.611076,-321.797626,-776.888194,1661.47676, + 0.461133,0.643383,0.611076,-467.177743,-699.180902,1661.47676, + 0.326755,0.720984,0.611076,-321.797626,-776.888194,1661.47676, + 0.460101,0.686612,0.562913,-490.247555,-733.707316,1715.237645, + 0.317309,0.76318,0.562913,-337.688389,-815.251889,1715.237645, + 0.542249,0.507776,0.669425,-494.47895,-494.47895,628.271002, + 0.525933,0.376953,0.762431,-541.006514,-361.488996,587.016307, + 0.630892,0.392232,0.669425,-581.445733,-388.509618,628.271002, + 0.525933,0.376953,0.762431,-541.006514,-361.488996,587.016307, + 0.542249,0.507776,0.669425,-494.47895,-494.47895,628.271002, + 0.442288,0.472315,0.762431,-460.088221,-460.088221,587.016307, + 0.493963,0.737652,0.460294,-509.589579,-762.654701,1773.56823, + 0.317309,0.76318,0.562913,-337.688389,-815.251889,1715.237645, + 0.460101,0.686612,0.562913,-490.247555,-733.707316,1715.237645, + 0.317309,0.76318,0.562913,-337.688389,-815.251889,1715.237645, + 0.493963,0.737652,0.460294,-509.589579,-762.654701,1773.56823, + 0.340563,0.819845,0.460294,-351.011407,-847.416499,1773.56823, + 0.52077,0.778156,0.3511,-524.927574,-785.609633,1835.635445, + 0.340563,0.819845,0.460294,-351.011407,-847.416499,1773.56823, + 0.493963,0.737652,0.460294,-509.589579,-762.654701,1773.56823, + 0.340563,0.819845,0.460294,-351.011407,-847.416499,1773.56823, + 0.52077,0.778156,0.3511,-524.927574,-785.609633,1835.635445, + 0.358953,0.864801,0.3511,-361.576402,-872.922654,1835.635445, + 0.54014,0.807547,0.236891,-536.042486,-802.244273,1900.552851, + 0.358953,0.864801,0.3511,-361.576402,-872.922654,1835.635445, + 0.52077,0.778156,0.3511,-524.927574,-785.609633,1835.635445, + 0.358953,0.864801,0.3511,-361.576402,-872.922654,1835.635445, + 0.54014,0.807547,0.236891,-536.042486,-802.244273,1900.552851, + 0.372217,0.897406,0.236891,-369.232486,-891.406075,1900.552851, + -0.029352,0.894042,-0.447021,0,-700.735204,1661.47676, + -0.145631,0.882589,-0.447021,154.934211,-778.906876,1474.61404, + 0.029352,0.894042,-0.447021,0,-794.166564,1474.61404, + -0.145631,0.882589,-0.447021,154.934211,-778.906876,1474.61404, + -0.029352,0.894042,-0.447021,0,-700.735204,1661.47676, + -0.203207,0.871137,-0.447021,136.706657,-687.270773,1661.47676, + 0.55141,0.825661,-0.119297,-542.77557,-812.321046,2103.011094, + 0.382683,0.92388,0,-375.423654,-906.352876,2035.2022, + 0.55557,0.83147,0,-545.030668,-815.696038,2035.2022, + 0.382683,0.92388,0,-375.423654,-906.352876,2035.2022, + 0.55141,0.825661,-0.119297,-542.77557,-812.321046,2103.011094, + 0.379736,0.917371,-0.119297,-373.870315,-902.602786,2103.011094, + 0.539373,0.808059,-0.236891,-536.042486,-802.244273,2169.851549, + 0.379736,0.917371,-0.119297,-373.870315,-902.602786,2103.011094, + 0.55141,0.825661,-0.119297,-542.77557,-812.321046,2103.011094, + 0.379736,0.917371,-0.119297,-373.870315,-902.602786,2103.011094, + 0.539373,0.808059,-0.236891,-536.042486,-802.244273,2169.851549, + 0.371365,0.897759,-0.236891,-369.232486,-891.406075,2169.851549, + 0.897759,0.371365,-0.236891,-891.406075,-369.232486,2169.851549, + 0.778916,0.519633,-0.3511,-785.609633,-524.927574,2234.768955, + 0.808059,0.539373,-0.236891,-802.244273,-536.042486,2169.851549, + 0.778916,0.519633,-0.3511,-785.609633,-524.927574,2234.768955, + 0.897759,0.371365,-0.236891,-891.406075,-369.232486,2169.851549, + 0.865325,0.357689,-0.3511,-872.922654,-361.576402,2234.768955, + 0.865325,0.357689,-0.3511,-872.922654,-361.576402,2234.768955, + 0.738649,0.49247,-0.460294,-762.654701,-509.589579,2296.83617, + 0.778916,0.519633,-0.3511,-785.609633,-524.927574,2234.768955, + 0.738649,0.49247,-0.460294,-762.654701,-509.589579,2296.83617, + 0.865325,0.357689,-0.3511,-872.922654,-361.576402,2234.768955, + 0.820532,0.338904,-0.460294,-847.416499,-351.011407,2296.83617, + 0.743805,0.494626,0.449554,-611.383516,-408.513405,680.911024, + 0.906011,0.374347,0.197505,-698.56474,-289.354989,741.194313, + 0.815571,0.543908,0.197505,-628.691656,-420.078334,741.194313, + 0.906011,0.374347,0.197505,-698.56474,-289.354989,741.194313, + 0.743805,0.494626,0.449554,-611.383516,-408.513405,680.911024, + 0.82601,0.340012,0.449554,-679.332965,-281.388928,680.911024, + 0.55557,0.83147,0,-545.030668,-815.696038,2035.2022, + 0.380165,0.917193,0.119297,-373.870315,-902.602786,1967.393306, + 0.551796,0.825403,0.119297,-542.77557,-812.321046,1967.393306, + 0.380165,0.917193,0.119297,-373.870315,-902.602786,1967.393306, + 0.55557,0.83147,0,-545.030668,-815.696038,2035.2022, + 0.382683,0.92388,0,-375.423654,-906.352876,2035.2022, + 0.458274,0.687833,-0.562913,-490.247555,-733.707316,2355.166755, + 0.338904,0.820532,-0.460294,-351.011407,-847.416499,2296.83617, + 0.49247,0.738649,-0.460294,-509.589579,-762.654701,2296.83617, + 0.338904,0.820532,-0.460294,-351.011407,-847.416499,2296.83617, + 0.458274,0.687833,-0.562913,-490.247555,-733.707316,2355.166755, + 0.315278,0.764021,-0.562913,-337.688389,-815.251889,2355.166755, + 0.417941,0.672244,-0.611076,-467.177743,-699.180902,2408.92764, + 0.315278,0.764021,-0.562913,-337.688389,-815.251889,2355.166755, + 0.458274,0.687833,-0.562913,-490.247555,-733.707316,2355.166755, + 0.315278,0.764021,-0.562913,-337.688389,-815.251889,2355.166755, + 0.417941,0.672244,-0.611076,-467.177743,-699.180902,2408.92764, + 0.278762,0.740863,-0.611076,-321.797626,-776.888194,2408.92764, + 0.306655,0.676633,0.669425,-267.610079,-646.067883,628.271002, + 0.341645,0.549525,0.762431,-361.488996,-541.006514,587.016307, + 0.432767,0.603806,0.669425,-388.509618,-581.445733,628.271002, + 0.341645,0.549525,0.762431,-361.488996,-541.006514,587.016307, + 0.306655,0.676633,0.669425,-267.610079,-646.067883,628.271002, + 0.227874,0.605618,0.762431,-248.997951,-601.13423,587.016307, + 0.527988,0.849252,-0,-415.261462,-621.482696,2549.07468, + 0.412792,0.910825,-0,-286.03707,-690.554573,2408.92764, + 0.582554,0.812792,-0,-415.261462,-621.482696,2408.92764, + 0.412792,0.910825,-0,-286.03707,-690.554573,2408.92764, + 0.527988,0.849252,-0,-415.261462,-621.482696,2549.07468, + 0.352162,0.935939,-0,-286.03707,-690.554573,2549.07468, + 0.343652,0.824502,0.449554,-281.388928,-679.332965,680.911024, + 0.168758,0.723457,0.669425,-136.426435,-685.862006,628.271002, + 0.306655,0.676633,0.669425,-267.610079,-646.067883,628.271002, + 0.168758,0.723457,0.669425,-136.426435,-685.862006,628.271002, + 0.343652,0.824502,0.449554,-281.388928,-679.332965,680.911024, + 0.176197,0.875703,0.449554,-143.450831,-721.176029,680.911024, + 0.381505,0.921818,-0.068597,-290.941975,-702.396062,804.835469, + 0.192095,0.961297,0.197505,-147.511894,-741.592372,741.194313, + 0.375943,0.90535,0.197505,-289.354989,-698.56474,741.194313, + 0.192095,0.961297,0.197505,-147.511894,-741.592372,741.194313, + 0.381505,0.921818,-0.068597,-290.941975,-702.396062,804.835469, + 0.194336,0.978533,-0.068597,-148.320933,-745.659682,804.835469, + 0.001099,0.826515,0.562913,0,-882.422286,1715.237645, + -0.12887,0.781011,0.611076,164.051007,-824.740108,1661.47676, + 0.025974,0.791146,0.611076,0,-840.897722,1661.47676, + -0.12887,0.781011,0.611076,164.051007,-824.740108,1661.47676, + 0.001099,0.826515,0.562913,0,-882.422286,1715.237645, + -0.160167,0.810848,0.562913,172.152048,-865.466789,1715.237645, + 0.375943,0.90535,0.197505,-289.354989,-698.56474,741.194313, + 0.176197,0.875703,0.449554,-143.450831,-721.176029,680.911024, + 0.343652,0.824502,0.449554,-281.388928,-679.332965,680.911024, + 0.176197,0.875703,0.449554,-143.450831,-721.176029,680.911024, + 0.375943,0.90535,0.197505,-289.354989,-698.56474,741.194313, + 0.192095,0.961297,0.197505,-147.511894,-741.592372,741.194313, + 0.162323,0.81042,0.562913,-172.152048,-865.466789,1715.237645, + 0.025974,0.791146,0.611076,0,-840.897722,1661.47676, + 0.179819,0.770877,0.611076,-164.051007,-824.740108,1661.47676, + 0.025974,0.791146,0.611076,0,-840.897722,1661.47676, + 0.162323,0.81042,0.562913,-172.152048,-865.466789,1715.237645, + 0.001099,0.826515,0.562913,0,-882.422286,1715.237645, + 0.344985,0.916863,-0.200867,-286.03707,-690.554573,867.310387, + 0.194336,0.978533,-0.068597,-148.320933,-745.659682,804.835469, + 0.381505,0.921818,-0.068597,-290.941975,-702.396062,804.835469, + 0.194336,0.978533,-0.068597,-148.320933,-745.659682,804.835469, + 0.344985,0.916863,-0.200867,-286.03707,-690.554573,867.310387, + 0.159485,0.966549,-0.200867,-145.820434,-733.088824,867.310387, + 0.22552,0.599364,-0.768052,-178.773169,-431.596609,1100.8886, + 0.145475,0.623645,-0.768052,-145.820434,-733.088824,867.310387, + 0.264347,0.583281,-0.768052,-286.03707,-690.554573,867.310387, + 0.145475,0.623645,-0.768052,-145.820434,-733.088824,867.310387, + 0.22552,0.599364,-0.768052,-178.773169,-431.596609,1100.8886, + 0.104257,0.631844,-0.768052,-91.137771,-458.180517,1100.8886, + 0.315017,0.837219,-0.447021,-232.405119,-561.075591,1287.75132, + 0.203207,0.871137,-0.447021,-136.706657,-687.270773,1100.8886, + 0.369253,0.814754,-0.447021,-268.159753,-647.394912,1100.8886, + 0.203207,0.871137,-0.447021,-136.706657,-687.270773,1100.8886, + 0.315017,0.837219,-0.447021,-232.405119,-561.075591,1287.75132, + 0.145631,0.882589,-0.447021,-118.479102,-595.634671,1287.75132, + 0.315017,0.837219,-0.447021,-250.282436,-604.235252,1474.61404, + 0.203207,0.871137,-0.447021,-145.820434,-733.088824,1287.75132, + 0.369253,0.814754,-0.447021,-286.03707,-690.554573,1287.75132, + 0.203207,0.871137,-0.447021,-145.820434,-733.088824,1287.75132, + 0.315017,0.837219,-0.447021,-250.282436,-604.235252,1474.61404, + 0.145631,0.882589,-0.447021,-127.592879,-641.452722,1474.61404, + 0.315017,0.837219,-0.447021,-268.159753,-647.394912,1661.47676, + 0.203207,0.871137,-0.447021,-154.934211,-778.906876,1474.61404, + 0.369253,0.814754,-0.447021,-303.914386,-733.714234,1474.61404, + 0.203207,0.871137,-0.447021,-154.934211,-778.906876,1474.61404, + 0.315017,0.837219,-0.447021,-268.159753,-647.394912,1661.47676, + 0.145631,0.882589,-0.447021,-136.706657,-687.270773,1661.47676, + 0.317309,0.76318,0.562913,-337.688389,-815.251889,1715.237645, + 0.179819,0.770877,0.611076,-164.051007,-824.740108,1661.47676, + 0.326755,0.720984,0.611076,-321.797626,-776.888194,1661.47676, + 0.179819,0.770877,0.611076,-164.051007,-824.740108,1661.47676, + 0.317309,0.76318,0.562913,-337.688389,-815.251889,1715.237645, + 0.162323,0.81042,0.562913,-172.152048,-865.466789,1715.237645, + 0.340563,0.819845,0.460294,-351.011407,-847.416499,1773.56823, + 0.162323,0.81042,0.562913,-172.152048,-865.466789,1715.237645, + 0.317309,0.76318,0.562913,-337.688389,-815.251889,1715.237645, + 0.162323,0.81042,0.562913,-172.152048,-865.466789,1715.237645, + 0.340563,0.819845,0.460294,-351.011407,-847.416499,1773.56823, + 0.174075,0.870533,0.460294,-178.944064,-899.612557,1773.56823, + 0.358953,0.864801,0.3511,-361.576402,-872.922654,1835.635445, + 0.174075,0.870533,0.460294,-178.944064,-899.612557,1773.56823, + 0.340563,0.819845,0.460294,-351.011407,-847.416499,1773.56823, + 0.174075,0.870533,0.460294,-178.944064,-899.612557,1773.56823, + 0.358953,0.864801,0.3511,-361.576402,-872.922654,1835.635445, + 0.183341,0.918213,0.3511,-184.330051,-926.689746,1835.635445, + 0.382683,0.92388,0,-375.423654,-906.352876,2035.2022, + 0.193925,0.973736,0.119297,-190.597434,-958.198007,1967.393306, + 0.380165,0.917193,0.119297,-373.870315,-902.602786,1967.393306, + 0.193925,0.973736,0.119297,-190.597434,-958.198007,1967.393306, + 0.382683,0.92388,0,-375.423654,-906.352876,2035.2022, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.338904,0.820532,-0.460294,-351.011407,-847.416499,2296.83617, + 0.181999,0.91848,-0.3511,-184.330051,-926.689746,2234.768955, + 0.357689,0.865325,-0.3511,-361.576402,-872.922654,2234.768955, + 0.181999,0.91848,-0.3511,-184.330051,-926.689746,2234.768955, + 0.338904,0.820532,-0.460294,-351.011407,-847.416499,2296.83617, + 0.172314,0.870883,-0.460294,-178.944064,-899.612557,2296.83617, + 0.357689,0.865325,-0.3511,-361.576402,-872.922654,2234.768955, + 0.189085,0.952958,-0.236891,-188.233089,-946.311642,2169.851549, + 0.371365,0.897759,-0.236891,-369.232486,-891.406075,2169.851549, + 0.189085,0.952958,-0.236891,-188.233089,-946.311642,2169.851549, + 0.357689,0.865325,-0.3511,-361.576402,-872.922654,2234.768955, + 0.181999,0.91848,-0.3511,-184.330051,-926.689746,2234.768955, + 0.352162,0.935939,-0,-286.03707,-690.554573,2549.07468, + 0.227168,0.973856,-0,-145.820434,-733.088824,2408.92764, + 0.412792,0.910825,-0,-286.03707,-690.554573,2408.92764, + 0.227168,0.973856,-0,-145.820434,-733.088824,2408.92764, + 0.352162,0.935939,-0,-286.03707,-690.554573,2549.07468, + 0.162803,0.986659,-0,-145.820434,-733.088824,2549.07468, + 0.168758,0.723457,0.669425,-136.426435,-685.862006,628.271002, + 0.227874,0.605618,0.762431,-248.997951,-601.13423,587.016307, + 0.306655,0.676633,0.669425,-267.610079,-646.067883,628.271002, + 0.227874,0.605618,0.762431,-248.997951,-601.13423,587.016307, + 0.168758,0.723457,0.669425,-136.426435,-685.862006,628.271002, + 0.105345,0.638437,0.762431,-126.938055,-638.160695,587.016307, + 0.176197,0.875703,0.449554,-143.450831,-721.176029,680.911024, + 0.024376,0.742479,0.669425,0,-699.298837,628.271002, + 0.168758,0.723457,0.669425,-136.426435,-685.862006,628.271002, + 0.024376,0.742479,0.669425,0,-699.298837,628.271002, + 0.176197,0.875703,0.449554,-143.450831,-721.176029,680.911024, + 0.00197,0.893251,0.449554,0,-735.304703,680.911024, + 0.192095,0.961297,0.197505,-147.511894,-741.592372,741.194313, + 0.00197,0.893251,0.449554,0,-735.304703,680.911024, + 0.176197,0.875703,0.449554,-143.450831,-721.176029,680.911024, + 0.00197,0.893251,0.449554,0,-735.304703,680.911024, + 0.192095,0.961297,0.197505,-147.511894,-741.592372,741.194313, + 0.000864,0.980301,0.197505,0,-756.121025,741.194313, + 0.194336,0.978533,-0.068597,-148.320933,-745.659682,804.835469, + 0.000864,0.980301,0.197505,0,-756.121025,741.194313, + 0.192095,0.961297,0.197505,-147.511894,-741.592372,741.194313, + 0.000864,0.980301,0.197505,0,-756.121025,741.194313, + 0.194336,0.978533,-0.068597,-148.320933,-745.659682,804.835469, + -0.0003,0.997644,-0.068597,0,-760.268019,804.835469, + 0.159485,0.966549,-0.200867,-145.820434,-733.088824,867.310387, + -0.0003,0.997644,-0.068597,0,-760.268019,804.835469, + 0.194336,0.978533,-0.068597,-148.320933,-745.659682,804.835469, + -0.0003,0.997644,-0.068597,0,-760.268019,804.835469, + 0.159485,0.966549,-0.200867,-145.820434,-733.088824,867.310387, + -0.032144,0.979091,-0.200867,0,-747.450884,867.310387, + 0.104257,0.631844,-0.768052,-91.137771,-458.180517,1100.8886, + 0,0.640184,-0.768222,0,-747.450884,867.310387, + 0.145475,0.623645,-0.768052,-145.820434,-733.088824,867.310387, + 0,0.640184,-0.768222,0,-747.450884,867.310387, + 0.104257,0.631844,-0.768052,-91.137771,-458.180517,1100.8886, + 0,0.640184,-0.768222,0,-467.156804,1100.8886, + 0.145631,0.882589,-0.447021,-118.479102,-595.634671,1287.75132, + 0.029352,0.894042,-0.447021,0,-700.735204,1100.8886, + 0.203207,0.871137,-0.447021,-136.706657,-687.270773,1100.8886, + 0.029352,0.894042,-0.447021,0,-700.735204,1100.8886, + 0.145631,0.882589,-0.447021,-118.479102,-595.634671,1287.75132, + -0.029352,0.894042,-0.447021,0,-607.303844,1287.75132, + 0.732968,0.120943,0.669425,-685.862006,-136.426435,628.271002, + 0.869022,0.085591,0.487313,-735.304703,0,680.911024, + 0.876472,0.172332,0.449554,-721.176029,-143.450831,680.911024, + 0.869022,0.085591,0.487313,-735.304703,0,680.911024, + 0.732968,0.120943,0.669425,-685.862006,-136.426435,628.271002, + 0.740721,0.072955,0.66784,-699.298837,0,628.271002, + -0.875139,0.086194,0.476133,917.237009,-0,1773.56823, + -0.810848,0.160167,0.562913,865.466789,-172.152048,1715.237645, + -0.870883,0.172314,0.460294,899.612557,-178.944064,1773.56823, + -0.810848,0.160167,0.562913,865.466789,-172.152048,1715.237645, + -0.875139,0.086194,0.476133,917.237009,-0,1773.56823, + -0.812508,0.080025,0.577431,882.422286,-0,1715.237645, + -0.029352,0.894042,-0.447021,0,-654.019524,1474.61404, + -0.145631,0.882589,-0.447021,145.820434,-733.088824,1287.75132, + 0.029352,0.894042,-0.447021,0,-747.450884,1287.75132, + -0.145631,0.882589,-0.447021,145.820434,-733.088824,1287.75132, + -0.029352,0.894042,-0.447021,0,-654.019524,1474.61404, + -0.203207,0.871137,-0.447021,127.592879,-641.452722,1474.61404, + 0.145631,0.882589,-0.447021,-136.706657,-687.270773,1661.47676, + 0.029352,0.894042,-0.447021,0,-794.166564,1474.61404, + 0.203207,0.871137,-0.447021,-154.934211,-778.906876,1474.61404, + 0.029352,0.894042,-0.447021,0,-794.166564,1474.61404, + 0.145631,0.882589,-0.447021,-136.706657,-687.270773,1661.47676, + -0.029352,0.894042,-0.447021,0,-700.735204,1661.47676, + -0.925281,0.091132,0.36817,944.844672,-0,1835.635445, + -0.870883,0.172314,0.460294,899.612557,-178.944064,1773.56823, + -0.91848,0.181999,0.3511,926.689746,-184.330051,1835.635445, + -0.870883,0.172314,0.460294,899.612557,-178.944064,1773.56823, + -0.925281,0.091132,0.36817,944.844672,-0,1835.635445, + -0.875139,0.086194,0.476133,917.237009,-0,1773.56823, + -0.000898,0.887766,-0.460294,0,-917.237009,2296.83617, + -0.183341,0.918213,-0.3511,184.330051,-926.689746,2234.768955, + -0.014053,0.939213,-0.343046,0,-944.844672,2234.768955, + -0.183341,0.918213,-0.3511,184.330051,-926.689746,2234.768955, + -0.000898,0.887766,-0.460294,0,-917.237009,2296.83617, + -0.197225,0.872604,-0.446838,178.944064,-899.612557,2296.83617, + 0.183341,0.918213,0.3511,-184.330051,-926.689746,1835.635445, + 0.000898,0.887766,0.460294,0,-917.237009,1773.56823, + 0.174075,0.870533,0.460294,-178.944064,-899.612557,1773.56823, + 0.000898,0.887766,0.460294,0,-917.237009,1773.56823, + 0.183341,0.918213,0.3511,-184.330051,-926.689746,1835.635445, + -0.01288,0.939228,0.343052,0,-944.844672,1835.635445, + 0.18999,0.952778,0.236891,-188.233089,-946.311642,1900.552851, + -0.01288,0.939228,0.343052,0,-944.844672,1835.635445, + 0.183341,0.918213,0.3511,-184.330051,-926.689746,1835.635445, + -0.01288,0.939228,0.343052,0,-944.844672,1835.635445, + 0.18999,0.952778,0.236891,-188.233089,-946.311642,1900.552851, + 0.000461,0.971536,0.236891,0,-964.850983,1900.552851, + -0.172332,0.876472,0.449554,143.450831,-721.176029,680.911024, + -0.2815,0.687288,0.669621,267.610079,-646.067883,628.271002, + -0.130866,0.717913,0.683722,136.426435,-685.862006,628.271002, + -0.2815,0.687288,0.669621,267.610079,-646.067883,628.271002, + -0.172332,0.876472,0.449554,143.450831,-721.176029,680.911024, + -0.340012,0.82601,0.449554,281.388928,-679.332965,680.911024, + -0.1904,0.961634,0.197505,147.511894,-741.592372,741.194313, + -0.340012,0.82601,0.449554,281.388928,-679.332965,680.911024, + -0.172332,0.876472,0.449554,143.450831,-721.176029,680.911024, + -0.340012,0.82601,0.449554,281.388928,-679.332965,680.911024, + -0.1904,0.961634,0.197505,147.511894,-741.592372,741.194313, + -0.374347,0.906011,0.197505,289.354989,-698.56474,741.194313, + -0.194925,0.978416,-0.068597,148.320933,-745.659682,804.835469, + -0.374347,0.906011,0.197505,289.354989,-698.56474,741.194313, + -0.1904,0.961634,0.197505,147.511894,-741.592372,741.194313, + -0.374347,0.906011,0.197505,289.354989,-698.56474,741.194313, + -0.194925,0.978416,-0.068597,148.320933,-745.659682,804.835469, + -0.382059,0.921588,-0.068597,290.941975,-702.396062,804.835469, + -0.222538,0.954007,-0.200867,145.820434,-733.088824,867.310387, + -0.382059,0.921588,-0.068597,290.941975,-702.396062,804.835469, + -0.194925,0.978416,-0.068597,148.320933,-745.659682,804.835469, + -0.382059,0.921588,-0.068597,290.941975,-702.396062,804.835469, + -0.222538,0.954007,-0.200867,145.820434,-733.088824,867.310387, + -0.404379,0.892261,-0.200867,286.03707,-690.554573,867.310387, + -0.22552,0.599364,-0.768052,178.773169,-431.596609,1100.8886, + -0.145475,0.623645,-0.768052,145.820434,-733.088824,867.310387, + -0.104257,0.631844,-0.768052,91.137771,-458.180517,1100.8886, + -0.145475,0.623645,-0.768052,145.820434,-733.088824,867.310387, + -0.22552,0.599364,-0.768052,178.773169,-431.596609,1100.8886, + -0.264347,0.583281,-0.768052,286.03707,-690.554573,867.310387, + -0.203207,0.871137,-0.447021,118.479102,-595.634671,1287.75132, + -0.315017,0.837219,-0.447021,268.159753,-647.394912,1100.8886, + -0.145631,0.882589,-0.447021,136.706657,-687.270773,1100.8886, + -0.315017,0.837219,-0.447021,268.159753,-647.394912,1100.8886, + -0.203207,0.871137,-0.447021,118.479102,-595.634671,1287.75132, + -0.369253,0.814754,-0.447021,232.405119,-561.075591,1287.75132, + -0.203207,0.871137,-0.447021,127.592879,-641.452722,1474.61404, + -0.315017,0.837219,-0.447021,286.03707,-690.554573,1287.75132, + -0.145631,0.882589,-0.447021,145.820434,-733.088824,1287.75132, + -0.315017,0.837219,-0.447021,286.03707,-690.554573,1287.75132, + -0.203207,0.871137,-0.447021,127.592879,-641.452722,1474.61404, + -0.369253,0.814754,-0.447021,250.282436,-604.235252,1474.61404, + -0.203207,0.871137,-0.447021,136.706657,-687.270773,1661.47676, + -0.315017,0.837219,-0.447021,303.914386,-733.714234,1474.61404, + -0.145631,0.882589,-0.447021,154.934211,-778.906876,1474.61404, + -0.315017,0.837219,-0.447021,303.914386,-733.714234,1474.61404, + -0.203207,0.871137,-0.447021,136.706657,-687.270773,1661.47676, + -0.369253,0.814754,-0.447021,268.159753,-647.394912,1661.47676, + -0.160167,0.810848,0.562913,172.152048,-865.466789,1715.237645, + -0.278762,0.740863,0.611076,321.797626,-776.888194,1661.47676, + -0.12887,0.781011,0.611076,164.051007,-824.740108,1661.47676, + -0.278762,0.740863,0.611076,321.797626,-776.888194,1661.47676, + -0.160167,0.810848,0.562913,172.152048,-865.466789,1715.237645, + -0.315278,0.764021,0.562913,337.688389,-815.251889,1715.237645, + -0.962266,0.094775,0.255071,964.850983,-0,1900.552851, + -0.91848,0.181999,0.3511,926.689746,-184.330051,1835.635445, + -0.952958,0.189085,0.236891,946.311642,-188.233089,1900.552851, + -0.91848,0.181999,0.3511,926.689746,-184.330051,1835.635445, + -0.962266,0.094775,0.255071,964.850983,-0,1900.552851, + -0.925281,0.091132,0.36817,944.844672,-0,1835.635445, + 0.812508,0.080025,-0.577431,-882.422286,0,2355.166755, + 0.781011,0.12887,-0.611076,-824.740108,-164.051007,2408.92764, + 0.810848,0.160167,-0.562913,-865.466789,-172.152048,2355.166755, + 0.781011,0.12887,-0.611076,-824.740108,-164.051007,2408.92764, + 0.812508,0.080025,-0.577431,-882.422286,0,2355.166755, + 0.789019,0.077712,-0.609434,-840.897722,0,2408.92764, + -0.172314,0.870883,0.460294,178.944064,-899.612557,1773.56823, + -0.315278,0.764021,0.562913,337.688389,-815.251889,1715.237645, + -0.160167,0.810848,0.562913,172.152048,-865.466789,1715.237645, + -0.315278,0.764021,0.562913,337.688389,-815.251889,1715.237645, + -0.172314,0.870883,0.460294,178.944064,-899.612557,1773.56823, + -0.32859,0.82894,0.452643,351.011407,-847.416499,1773.56823, + 0.871137,0.203207,-0.447021,-687.270773,-136.706657,1100.8886, + 0.837219,0.315017,-0.447021,-561.075591,-232.405119,1287.75132, + 0.814754,0.369253,-0.447021,-647.394912,-268.159753,1100.8886, + 0.837219,0.315017,-0.447021,-561.075591,-232.405119,1287.75132, + 0.871137,0.203207,-0.447021,-687.270773,-136.706657,1100.8886, + 0.882589,0.145631,-0.447021,-595.634671,-118.479102,1287.75132, + -0.985604,0.097074,0.138423,976.970216,-0,1967.393306, + -0.952958,0.189085,0.236891,946.311642,-188.233089,1900.552851, + -0.973826,0.193469,0.119297,958.198007,-190.597434,1967.393306, + -0.952958,0.189085,0.236891,946.311642,-188.233089,1900.552851, + -0.985604,0.097074,0.138423,976.970216,-0,1967.393306, + -0.962266,0.094775,0.255071,964.850983,-0,1900.552851, + -0.162323,0.81042,-0.562913,172.152048,-865.466789,2355.166755, + -0.353801,0.818498,-0.452643,351.011407,-847.416499,2296.83617, + -0.197225,0.872604,-0.446838,178.944064,-899.612557,2296.83617, + -0.353801,0.818498,-0.452643,351.011407,-847.416499,2296.83617, + -0.162323,0.81042,-0.562913,172.152048,-865.466789,2355.166755, + -0.317309,0.76318,-0.562913,337.688389,-815.251889,2355.166755, + -0.995185,0.098017,-0,981.029284,-0,2035.2022, + -0.973826,0.193469,0.119297,958.198007,-190.597434,1967.393306, + -0.973856,0.227168,-0,962.179081,-191.389319,2035.2022, + -0.973826,0.193469,0.119297,958.198007,-190.597434,1967.393306, + -0.995185,0.098017,-0,981.029284,-0,2035.2022, + -0.985604,0.097074,0.138423,976.970216,-0,1967.393306, + -0.179819,0.770877,-0.611076,164.051007,-824.740108,2408.92764, + -0.317309,0.76318,-0.562913,337.688389,-815.251889,2355.166755, + -0.162323,0.81042,-0.562913,172.152048,-865.466789,2355.166755, + -0.317309,0.76318,-0.562913,337.688389,-815.251889,2355.166755, + -0.179819,0.770877,-0.611076,164.051007,-824.740108,2408.92764, + -0.326755,0.720984,-0.611076,321.797626,-776.888194,2408.92764, + -0.227168,0.973856,-0,145.820434,-733.088824,2549.07468, + -0.352162,0.935939,-0,286.03707,-690.554573,2408.92764, + -0.162803,0.986659,-0,145.820434,-733.088824,2408.92764, + -0.352162,0.935939,-0,286.03707,-690.554573,2408.92764, + -0.227168,0.973856,-0,145.820434,-733.088824,2549.07468, + -0.412792,0.910825,-0,286.03707,-690.554573,2549.07468, + -0.130866,0.717913,0.683722,136.426435,-685.862006,628.271002, + -0.227874,0.605618,0.762431,248.997951,-601.13423,587.016307, + -0.126198,0.634438,0.762603,126.938055,-638.160695,587.016307, + -0.227874,0.605618,0.762431,248.997951,-601.13423,587.016307, + -0.130866,0.717913,0.683722,136.426435,-685.862006,628.271002, + -0.2815,0.687288,0.669621,267.610079,-646.067883,628.271002, + -0.340012,0.82601,0.449554,281.388928,-679.332965,680.911024, + -0.410175,0.619164,0.669621,388.509618,-581.445733,628.271002, + -0.2815,0.687288,0.669621,267.610079,-646.067883,628.271002, + -0.410175,0.619164,0.669621,388.509618,-581.445733,628.271002, + -0.340012,0.82601,0.449554,281.388928,-679.332965,680.911024, + -0.494626,0.743805,0.449554,408.513405,-611.383516,680.911024, + -0.374347,0.906011,0.197505,289.354989,-698.56474,741.194313, + -0.494626,0.743805,0.449554,408.513405,-611.383516,680.911024, + -0.340012,0.82601,0.449554,281.388928,-679.332965,680.911024, + -0.494626,0.743805,0.449554,408.513405,-611.383516,680.911024, + -0.374347,0.906011,0.197505,289.354989,-698.56474,741.194313, + -0.543908,0.815571,0.197505,420.078334,-628.691656,741.194313, + -0.382059,0.921588,-0.068597,290.941975,-702.396062,804.835469, + -0.543908,0.815571,0.197505,420.078334,-628.691656,741.194313, + -0.374347,0.906011,0.197505,289.354989,-698.56474,741.194313, + -0.543908,0.815571,0.197505,420.078334,-628.691656,741.194313, + -0.382059,0.921588,-0.068597,290.941975,-702.396062,804.835469, + -0.554511,0.829344,-0.068597,422.38228,-632.139755,804.835469, + -0.404379,0.892261,-0.200867,286.03707,-690.554573,867.310387, + -0.554511,0.829344,-0.068597,422.38228,-632.139755,804.835469, + -0.382059,0.921588,-0.068597,290.941975,-702.396062,804.835469, + -0.554511,0.829344,-0.068597,422.38228,-632.139755,804.835469, + -0.404379,0.892261,-0.200867,286.03707,-690.554573,867.310387, + -0.570681,0.796226,-0.200867,415.261462,-621.482696,867.310387, + -0.973826,0.193469,-0.119297,958.198007,-190.597434,2103.011094, + -0.995185,0.098017,-0,981.029284,-0,2035.2022, + -0.973856,0.227168,-0,962.179081,-191.389319,2035.2022, + -0.995185,0.098017,-0,981.029284,-0,2035.2022, + -0.973826,0.193469,-0.119297,958.198007,-190.597434,2103.011094, + -0.985604,0.097074,-0.138423,976.970216,-0,2103.011094, + -0.952958,0.189085,-0.236891,946.311642,-188.233089,2169.851549, + -0.985604,0.097074,-0.138423,976.970216,-0,2103.011094, + -0.973826,0.193469,-0.119297,958.198007,-190.597434,2103.011094, + -0.985604,0.097074,-0.138423,976.970216,-0,2103.011094, + -0.952958,0.189085,-0.236891,946.311642,-188.233089,2169.851549, + -0.962266,0.094775,-0.255071,964.850983,-0,2169.851549, + -0.338117,0.54385,-0.768052,259.538414,-388.426686,1100.8886, + -0.264347,0.583281,-0.768052,286.03707,-690.554573,867.310387, + -0.22552,0.599364,-0.768052,178.773169,-431.596609,1100.8886, + -0.264347,0.583281,-0.768052,286.03707,-690.554573,867.310387, + -0.338117,0.54385,-0.768052,259.538414,-388.426686,1100.8886, + -0.37306,0.520502,-0.768052,415.261462,-621.482696,867.310387, + -0.369253,0.814754,-0.447021,232.405119,-561.075591,1287.75132, + -0.472298,0.759676,-0.447021,389.30762,-582.640028,1100.8886, + -0.315017,0.837219,-0.447021,268.159753,-647.394912,1100.8886, + -0.472298,0.759676,-0.447021,389.30762,-582.640028,1100.8886, + -0.369253,0.814754,-0.447021,232.405119,-561.075591,1287.75132, + -0.521108,0.727062,-0.447021,337.399938,-504.954691,1287.75132, + 0.870883,0.172314,-0.460294,-899.612557,-178.944064,2296.83617, + 0.764021,0.315278,-0.562913,-815.251889,-337.688389,2355.166755, + 0.820532,0.338904,-0.460294,-847.416499,-351.011407,2296.83617, + 0.764021,0.315278,-0.562913,-815.251889,-337.688389,2355.166755, + 0.870883,0.172314,-0.460294,-899.612557,-178.944064,2296.83617, + 0.810848,0.160167,-0.562913,-865.466789,-172.152048,2355.166755, + 0.973826,0.193469,-0.119297,-958.198007,-190.597434,2103.011094, + 0.897759,0.371365,-0.236891,-891.406075,-369.232486,2169.851549, + 0.917371,0.379736,-0.119297,-902.602786,-373.870315,2103.011094, + 0.897759,0.371365,-0.236891,-891.406075,-369.232486,2169.851549, + 0.973826,0.193469,-0.119297,-958.198007,-190.597434,2103.011094, + 0.952958,0.189085,-0.236891,-946.311642,-188.233089,2169.851549, + -0.369253,0.814754,-0.447021,250.282436,-604.235252,1474.61404, + -0.472298,0.759676,-0.447021,415.261462,-621.482696,1287.75132, + -0.315017,0.837219,-0.447021,286.03707,-690.554573,1287.75132, + -0.472298,0.759676,-0.447021,415.261462,-621.482696,1287.75132, + -0.369253,0.814754,-0.447021,250.282436,-604.235252,1474.61404, + -0.521108,0.727062,-0.447021,363.353779,-543.79736,1474.61404, + -0.369253,0.814754,-0.447021,268.159753,-647.394912,1661.47676, + -0.472298,0.759676,-0.447021,441.215303,-660.325365,1474.61404, + -0.315017,0.837219,-0.447021,303.914386,-733.714234,1474.61404, + -0.472298,0.759676,-0.447021,441.215303,-660.325365,1474.61404, + -0.369253,0.814754,-0.447021,268.159753,-647.394912,1661.47676, + -0.521108,0.727062,-0.447021,389.30762,-582.640028,1661.47676, + -0.315278,0.764021,0.562913,337.688389,-815.251889,1715.237645, + -0.417941,0.672244,0.611076,467.177743,-699.180902,1661.47676, + -0.278762,0.740863,0.611076,321.797626,-776.888194,1661.47676, + -0.417941,0.672244,0.611076,467.177743,-699.180902,1661.47676, + -0.315278,0.764021,0.562913,337.688389,-815.251889,1715.237645, + -0.458274,0.687833,0.562913,490.247555,-733.707316,1715.237645, + -0.32859,0.82894,0.452643,351.011407,-847.416499,1773.56823, + -0.458274,0.687833,0.562913,490.247555,-733.707316,1715.237645, + -0.315278,0.764021,0.562913,337.688389,-815.251889,1715.237645, + -0.458274,0.687833,0.562913,490.247555,-733.707316,1715.237645, + -0.32859,0.82894,0.452643,351.011407,-847.416499,1773.56823, + -0.477566,0.756484,0.446838,509.589579,-762.654701,1773.56823, + 0.808059,0.539373,0.236891,-802.244273,-536.042486,1900.552851, + 0.917371,0.379736,0.119297,-902.602786,-373.870315,1967.393306, + 0.825661,0.55141,0.119297,-812.321046,-542.77557,1967.393306, + 0.917371,0.379736,0.119297,-902.602786,-373.870315,1967.393306, + 0.808059,0.539373,0.236891,-802.244273,-536.042486,1900.552851, + 0.897759,0.371365,0.236891,-891.406075,-369.232486,1900.552851, + 0.825661,0.55141,0.119297,-812.321046,-542.77557,1967.393306, + 0.910825,0.412792,0,-906.352876,-375.423654,2035.2022, + 0.812792,0.582554,0,-815.696038,-545.030668,2035.2022, + 0.910825,0.412792,0,-906.352876,-375.423654,2035.2022, + 0.825661,0.55141,0.119297,-812.321046,-542.77557,1967.393306, + 0.917371,0.379736,0.119297,-902.602786,-373.870315,1967.393306, + 0.910825,0.412792,0,-906.352876,-375.423654,2035.2022, + 0.825661,0.55141,-0.119297,-812.321046,-542.77557,2103.011094, + 0.812792,0.582554,0,-815.696038,-545.030668,2035.2022, + 0.825661,0.55141,-0.119297,-812.321046,-542.77557,2103.011094, + 0.910825,0.412792,0,-906.352876,-375.423654,2035.2022, + 0.917371,0.379736,-0.119297,-902.602786,-373.870315,2103.011094, + 0.630892,0.392232,0.669425,-581.445733,-388.509618,628.271002, + 0.82601,0.340012,0.449554,-679.332965,-281.388928,680.911024, + 0.743805,0.494626,0.449554,-611.383516,-408.513405,680.911024, + 0.82601,0.340012,0.449554,-679.332965,-281.388928,680.911024, + 0.630892,0.392232,0.669425,-581.445733,-388.509618,628.271002, + 0.69529,0.261614,0.669425,-646.067883,-267.610079,628.271002, + -0.317309,0.76318,-0.562913,337.688389,-815.251889,2355.166755, + -0.468784,0.754023,-0.460099,509.589579,-762.654701,2296.83617, + -0.353801,0.818498,-0.452643,351.011407,-847.416499,2296.83617, + -0.468784,0.754023,-0.460099,509.589579,-762.654701,2296.83617, + -0.317309,0.76318,-0.562913,337.688389,-815.251889,2355.166755, + -0.460101,0.686612,-0.562913,490.247555,-733.707316,2355.166755, + -0.326755,0.720984,-0.611076,321.797626,-776.888194,2408.92764, + -0.460101,0.686612,-0.562913,490.247555,-733.707316,2355.166755, + -0.317309,0.76318,-0.562913,337.688389,-815.251889,2355.166755, + -0.460101,0.686612,-0.562913,490.247555,-733.707316,2355.166755, + -0.326755,0.720984,-0.611076,321.797626,-776.888194,2408.92764, + -0.461133,0.643383,-0.611076,467.177743,-699.180902,2408.92764, + -0.412792,0.910825,-0,286.03707,-690.554573,2549.07468, + -0.527988,0.849252,-0,415.261462,-621.482696,2408.92764, + -0.352162,0.935939,-0,286.03707,-690.554573,2408.92764, + -0.527988,0.849252,-0,415.261462,-621.482696,2408.92764, + -0.412792,0.910825,-0,286.03707,-690.554573,2549.07468, + -0.582554,0.812792,-0,415.261462,-621.482696,2549.07468, + -0.2815,0.687288,0.669621,267.610079,-646.067883,628.271002, + -0.341645,0.549525,0.762431,361.488996,-541.006514,587.016307, + -0.227874,0.605618,0.762431,248.997951,-601.13423,587.016307, + -0.341645,0.549525,0.762431,361.488996,-541.006514,587.016307, + -0.2815,0.687288,0.669621,267.610079,-646.067883,628.271002, + -0.410175,0.619164,0.669621,388.509618,-581.445733,628.271002, + -0.494626,0.743805,0.449554,408.513405,-611.383516,680.911024, + -0.540644,0.52765,0.655203,494.47895,-494.47895,628.271002, + -0.410175,0.619164,0.669621,388.509618,-581.445733,628.271002, + -0.540644,0.52765,0.655203,494.47895,-494.47895,628.271002, + -0.494626,0.743805,0.449554,408.513405,-611.383516,680.911024, + -0.645232,0.645232,0.409086,519.938942,-519.938942,680.911024, + -0.543908,0.815571,0.197505,420.078334,-628.691656,741.194313, + -0.645232,0.645232,0.409086,519.938942,-519.938942,680.911024, + -0.494626,0.743805,0.449554,408.513405,-611.383516,680.911024, + -0.645232,0.645232,0.409086,519.938942,-519.938942,680.911024, + -0.543908,0.815571,0.197505,420.078334,-628.691656,741.194313, + -0.698738,0.698738,0.153394,534.658304,-534.658304,741.194313, + -0.554511,0.829344,-0.068597,422.38228,-632.139755,804.835469, + -0.698738,0.698738,0.153394,534.658304,-534.658304,741.194313, + -0.543908,0.815571,0.197505,420.078334,-628.691656,741.194313, + -0.698738,0.698738,0.153394,534.658304,-534.658304,741.194313, + -0.554511,0.829344,-0.068597,422.38228,-632.139755,804.835469, + -0.689987,0.717509,-0.095383,537.590672,-537.590672,804.835469, + -0.570681,0.796226,-0.200867,415.261462,-621.482696,867.310387, + -0.689987,0.717509,-0.095383,537.590672,-537.590672,804.835469, + -0.554511,0.829344,-0.068597,422.38228,-632.139755,804.835469, + -0.689987,0.717509,-0.095383,537.590672,-537.590672,804.835469, + -0.570681,0.796226,-0.200867,415.261462,-621.482696,867.310387, + -0.715051,0.669593,-0.200867,528.527588,-528.527588,867.310387, + -0.43772,0.467437,-0.768052,330.329744,-330.329744,1100.8886, + -0.37306,0.520502,-0.768052,415.261462,-621.482696,867.310387, + -0.338117,0.54385,-0.768052,259.538414,-388.426686,1100.8886, + -0.37306,0.520502,-0.768052,415.261462,-621.482696,867.310387, + -0.43772,0.467437,-0.768052,330.329744,-330.329744,1100.8886, + -0.467437,0.43772,-0.768052,528.527588,-528.527588,867.310387, + -0.521108,0.727062,-0.447021,337.399938,-504.954691,1287.75132, + -0.611428,0.652938,-0.447021,495.494614,-495.494614,1100.8886, + -0.472298,0.759676,-0.447021,389.30762,-582.640028,1100.8886, + -0.611428,0.652938,-0.447021,495.494614,-495.494614,1100.8886, + -0.521108,0.727062,-0.447021,337.399938,-504.954691,1287.75132, + -0.652938,0.611428,-0.447021,429.428666,-429.428666,1287.75132, + -0.521108,0.727062,-0.447021,363.353779,-543.79736,1474.61404, + -0.611428,0.652938,-0.447021,528.527588,-528.527588,1287.75132, + -0.472298,0.759676,-0.447021,415.261462,-621.482696,1287.75132, + -0.611428,0.652938,-0.447021,528.527588,-528.527588,1287.75132, + -0.521108,0.727062,-0.447021,363.353779,-543.79736,1474.61404, + -0.652938,0.611428,-0.447021,462.46164,-462.46164,1474.61404, + -0.029352,0.894042,-0.447021,0,-607.303844,1287.75132, + -0.145631,0.882589,-0.447021,136.706657,-687.270773,1100.8886, + 0.029352,0.894042,-0.447021,0,-700.735204,1100.8886, + -0.145631,0.882589,-0.447021,136.706657,-687.270773,1100.8886, + -0.029352,0.894042,-0.447021,0,-607.303844,1287.75132, + -0.203207,0.871137,-0.447021,118.479102,-595.634671,1287.75132, + -0.521108,0.727062,-0.447021,389.30762,-582.640028,1661.47676, + -0.611428,0.652938,-0.447021,561.560563,-561.560563,1474.61404, + -0.472298,0.759676,-0.447021,441.215303,-660.325365,1474.61404, + -0.611428,0.652938,-0.447021,561.560563,-561.560563,1474.61404, + -0.521108,0.727062,-0.447021,389.30762,-582.640028,1661.47676, + -0.652938,0.611428,-0.447021,495.494614,-495.494614,1661.47676, + -0.91848,0.181999,-0.3511,926.689746,-184.330051,2234.768955, + -0.962266,0.094775,-0.255071,964.850983,-0,2169.851549, + -0.952958,0.189085,-0.236891,946.311642,-188.233089,2169.851549, + -0.962266,0.094775,-0.255071,964.850983,-0,2169.851549, + -0.91848,0.181999,-0.3511,926.689746,-184.330051,2234.768955, + -0.925281,0.091132,-0.36817,944.844672,-0,2234.768955, + -0.458274,0.687833,0.562913,490.247555,-733.707316,1715.237645, + -0.559613,0.559613,0.611282,594.604481,-594.604481,1661.47676, + -0.417941,0.672244,0.611076,467.177743,-699.180902,1661.47676, + -0.559613,0.559613,0.611282,594.604481,-594.604481,1661.47676, + -0.458274,0.687833,0.562913,490.247555,-733.707316,1715.237645, + -0.59226,0.59226,0.546311,623.966782,-623.966782,1715.237645, + -0.477566,0.756484,0.446838,509.589579,-762.654701,1773.56823, + -0.59226,0.59226,0.546311,623.966782,-623.966782,1715.237645, + -0.458274,0.687833,0.562913,490.247555,-733.707316,1715.237645, + -0.59226,0.59226,0.546311,623.966782,-623.966782,1715.237645, + -0.477566,0.756484,0.446838,509.589579,-762.654701,1773.56823, + -0.621118,0.652965,0.433416,648.584509,-648.584509,1773.56823, + -0.460101,0.686612,-0.562913,490.247555,-733.707316,2355.166755, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.468784,0.754023,-0.460099,509.589579,-762.654701,2296.83617, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.460101,0.686612,-0.562913,490.247555,-733.707316,2355.166755, + -0.585212,0.583657,-0.562913,623.966782,-623.966782,2355.166755, + -0.870883,0.172314,-0.460294,899.612557,-178.944064,2296.83617, + -0.925281,0.091132,-0.36817,944.844672,-0,2234.768955, + -0.91848,0.181999,-0.3511,926.689746,-184.330051,2234.768955, + -0.925281,0.091132,-0.36817,944.844672,-0,2234.768955, + -0.870883,0.172314,-0.460294,899.612557,-178.944064,2296.83617, + -0.875139,0.086194,-0.476133,917.237009,-0,2296.83617, + -0.810848,0.160167,-0.562913,865.466789,-172.152048,2355.166755, + -0.875139,0.086194,-0.476133,917.237009,-0,2296.83617, + -0.870883,0.172314,-0.460294,899.612557,-178.944064,2296.83617, + -0.875139,0.086194,-0.476133,917.237009,-0,2296.83617, + -0.810848,0.160167,-0.562913,865.466789,-172.152048,2355.166755, + -0.812508,0.080025,-0.577431,882.422286,-0,2355.166755, + -0.781011,0.12887,-0.611076,824.740108,-164.051007,2408.92764, + -0.812508,0.080025,-0.577431,882.422286,-0,2355.166755, + -0.810848,0.160167,-0.562913,865.466789,-172.152048,2355.166755, + -0.812508,0.080025,-0.577431,882.422286,-0,2355.166755, + -0.781011,0.12887,-0.611076,824.740108,-164.051007,2408.92764, + -0.789019,0.077712,-0.609434,840.897722,-0,2408.92764, + -0.995185,0.098017,-0,747.450884,-0,2549.07468, + -0.980785,0.19509,-0,733.088824,-145.820434,2408.92764, + -0.980785,0.19509,-0,733.088824,-145.820434,2549.07468, + -0.980785,0.19509,-0,733.088824,-145.820434,2408.92764, + -0.995185,0.098017,-0,747.450884,-0,2549.07468, + -0.995185,0.098017,0,747.450884,-0,2408.92764, + -0.461133,0.643383,-0.611076,467.177743,-699.180902,2408.92764, + -0.585212,0.583657,-0.562913,623.966782,-623.966782,2355.166755, + -0.460101,0.686612,-0.562913,490.247555,-733.707316,2355.166755, + -0.585212,0.583657,-0.562913,623.966782,-623.966782,2355.166755, + -0.461133,0.643383,-0.611076,467.177743,-699.180902,2408.92764, + -0.577791,0.541058,-0.611076,594.604481,-594.604481,2408.92764, + -0.582554,0.812792,-0,415.261462,-621.482696,2549.07468, + -0.683524,0.729928,-0,528.527588,-528.527588,2408.92764, + -0.527988,0.849252,-0,415.261462,-621.482696,2408.92764, + -0.683524,0.729928,-0,528.527588,-528.527588,2408.92764, + -0.582554,0.812792,-0,415.261462,-621.482696,2549.07468, + -0.729928,0.683524,-0,528.527588,-528.527588,2549.07468, + -0.410175,0.619164,0.669621,388.509618,-581.445733,628.271002, + -0.442288,0.472315,0.762431,460.088221,-460.088221,587.016307, + -0.341645,0.549525,0.762431,361.488996,-541.006514,587.016307, + -0.442288,0.472315,0.762431,460.088221,-460.088221,587.016307, + -0.410175,0.619164,0.669621,388.509618,-581.445733,628.271002, + -0.540644,0.52765,0.655203,494.47895,-494.47895,628.271002, + -0.743805,0.494626,0.449554,611.383516,-408.513405,680.911024, + -0.540644,0.52765,0.655203,494.47895,-494.47895,628.271002, + -0.645232,0.645232,0.409086,519.938942,-519.938942,680.911024, + -0.540644,0.52765,0.655203,494.47895,-494.47895,628.271002, + -0.743805,0.494626,0.449554,611.383516,-408.513405,680.911024, + -0.630892,0.392232,0.669425,581.445733,-388.509618,628.271002, + -0.815571,0.543908,0.197505,628.691656,-420.078334,741.194313, + -0.645232,0.645232,0.409086,519.938942,-519.938942,680.911024, + -0.698738,0.698738,0.153394,534.658304,-534.658304,741.194313, + -0.645232,0.645232,0.409086,519.938942,-519.938942,680.911024, + -0.815571,0.543908,0.197505,628.691656,-420.078334,741.194313, + -0.743805,0.494626,0.449554,611.383516,-408.513405,680.911024, + -0.81088,0.581183,-0.06856,632.139755,-422.38228,804.835469, + -0.698738,0.698738,0.153394,534.658304,-534.658304,741.194313, + -0.689987,0.717509,-0.095383,537.590672,-537.590672,804.835469, + -0.698738,0.698738,0.153394,534.658304,-534.658304,741.194313, + -0.81088,0.581183,-0.06856,632.139755,-422.38228,804.835469, + -0.815571,0.543908,0.197505,628.691656,-420.078334,741.194313, + -0.715051,0.669593,-0.200867,528.527588,-528.527588,867.310387, + -0.81088,0.581183,-0.06856,632.139755,-422.38228,804.835469, + -0.689987,0.717509,-0.095383,537.590672,-537.590672,804.835469, + -0.81088,0.581183,-0.06856,632.139755,-422.38228,804.835469, + -0.715051,0.669593,-0.200867,528.527588,-528.527588,867.310387, + -0.831943,0.517227,-0.200867,621.482696,-415.261462,867.310387, + -0.520502,0.37306,-0.768052,388.426686,-259.538414,1100.8886, + -0.467437,0.43772,-0.768052,528.527588,-528.527588,867.310387, + -0.43772,0.467437,-0.768052,330.329744,-330.329744,1100.8886, + -0.467437,0.43772,-0.768052,528.527588,-528.527588,867.310387, + -0.520502,0.37306,-0.768052,388.426686,-259.538414,1100.8886, + -0.54385,0.338117,-0.768052,621.482696,-415.261462,867.310387, + 0.952958,0.189085,-0.236891,-946.311642,-188.233089,2169.851549, + 0.865325,0.357689,-0.3511,-872.922654,-361.576402,2234.768955, + 0.897759,0.371365,-0.236891,-891.406075,-369.232486,2169.851549, + 0.865325,0.357689,-0.3511,-872.922654,-361.576402,2234.768955, + 0.952958,0.189085,-0.236891,-946.311642,-188.233089,2169.851549, + 0.91848,0.181999,-0.3511,-926.689746,-184.330051,2234.768955, + -0.652938,0.611428,-0.447021,429.428666,-429.428666,1287.75132, + -0.727062,0.521108,-0.447021,582.640028,-389.30762,1100.8886, + -0.611428,0.652938,-0.447021,495.494614,-495.494614,1100.8886, + -0.727062,0.521108,-0.447021,582.640028,-389.30762,1100.8886, + -0.652938,0.611428,-0.447021,429.428666,-429.428666,1287.75132, + -0.759676,0.472298,-0.447021,504.954691,-337.399938,1287.75132, + -0.652938,0.611428,-0.447021,462.46164,-462.46164,1474.61404, + -0.727062,0.521108,-0.447021,621.482696,-415.261462,1287.75132, + -0.611428,0.652938,-0.447021,528.527588,-528.527588,1287.75132, + -0.727062,0.521108,-0.447021,621.482696,-415.261462,1287.75132, + -0.652938,0.611428,-0.447021,462.46164,-462.46164,1474.61404, + -0.759676,0.472298,-0.447021,543.79736,-363.353779,1474.61404, + -0.652938,0.611428,-0.447021,495.494614,-495.494614,1661.47676, + -0.727062,0.521108,-0.447021,660.325365,-441.215303,1474.61404, + -0.611428,0.652938,-0.447021,561.560563,-561.560563,1474.61404, + -0.727062,0.521108,-0.447021,660.325365,-441.215303,1474.61404, + -0.652938,0.611428,-0.447021,495.494614,-495.494614,1661.47676, + -0.759676,0.472298,-0.447021,582.640028,-389.30762,1661.47676, + -0.732968,0.120943,0.669425,685.862006,-136.426435,628.271002, + -0.645559,0.063582,0.761059,650.663002,-0,587.016307, + -0.630153,0.146993,0.762431,638.160695,-126.938055,587.016307, + -0.645559,0.063582,0.761059,650.663002,-0,587.016307, + -0.732968,0.120943,0.669425,685.862006,-136.426435,628.271002, + -0.740721,0.072955,0.66784,699.298837,-0,628.271002, + -0.687833,0.458274,0.562913,733.707316,-490.247555,1715.237645, + -0.559613,0.559613,0.611282,594.604481,-594.604481,1661.47676, + -0.59226,0.59226,0.546311,623.966782,-623.966782,1715.237645, + -0.559613,0.559613,0.611282,594.604481,-594.604481,1661.47676, + -0.687833,0.458274,0.562913,733.707316,-490.247555,1715.237645, + -0.672244,0.417941,0.611076,699.180902,-467.177743,1661.47676, + -0.738649,0.49247,0.460294,762.654701,-509.589579,1773.56823, + -0.59226,0.59226,0.546311,623.966782,-623.966782,1715.237645, + -0.621118,0.652965,0.433416,648.584509,-648.584509,1773.56823, + -0.59226,0.59226,0.546311,623.966782,-623.966782,1715.237645, + -0.738649,0.49247,0.460294,762.654701,-509.589579,1773.56823, + -0.687833,0.458274,0.562913,733.707316,-490.247555,1715.237645, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.621118,0.652965,0.433416,648.584509,-648.584509,1773.56823, + -0.662575,0.661607,0.3511,668.106075,-668.106075,1835.635445, + -0.621118,0.652965,0.433416,648.584509,-648.584509,1773.56823, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.738649,0.49247,0.460294,762.654701,-509.589579,1773.56823, + -0.130866,0.717913,0.683722,136.426435,-685.862006,628.271002, + -0.021232,0.646722,0.762431,0,-650.663002,587.016307, + 0.024376,0.742479,0.669425,0,-699.298837,628.271002, + -0.021232,0.646722,0.762431,0,-650.663002,587.016307, + -0.130866,0.717913,0.683722,136.426435,-685.862006,628.271002, + -0.126198,0.634438,0.762603,126.938055,-638.160695,587.016307, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.662575,0.661607,-0.3511,668.106075,-668.106075,2234.768955, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.738649,0.49247,-0.460294,762.654701,-509.589579,2296.83617, + -0.585212,0.583657,-0.562913,623.966782,-623.966782,2355.166755, + -0.738649,0.49247,-0.460294,762.654701,-509.589579,2296.83617, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.738649,0.49247,-0.460294,762.654701,-509.589579,2296.83617, + -0.585212,0.583657,-0.562913,623.966782,-623.966782,2355.166755, + -0.687833,0.458274,-0.562913,733.707316,-490.247555,2355.166755, + -0.577791,0.541058,-0.611076,594.604481,-594.604481,2408.92764, + -0.687833,0.458274,-0.562913,733.707316,-490.247555,2355.166755, + -0.585212,0.583657,-0.562913,623.966782,-623.966782,2355.166755, + -0.687833,0.458274,-0.562913,733.707316,-490.247555,2355.166755, + -0.577791,0.541058,-0.611076,594.604481,-594.604481,2408.92764, + -0.672244,0.417941,-0.611076,699.180902,-467.177743,2408.92764, + -0.729928,0.683524,-0,528.527588,-528.527588,2549.07468, + -0.812792,0.582554,-0,621.482696,-415.261462,2408.92764, + -0.683524,0.729928,-0,528.527588,-528.527588,2408.92764, + -0.812792,0.582554,-0,621.482696,-415.261462,2408.92764, + -0.729928,0.683524,-0,528.527588,-528.527588,2549.07468, + -0.849252,0.527988,-0,621.482696,-415.261462,2549.07468, + -0.540644,0.52765,0.655203,494.47895,-494.47895,628.271002, + -0.525933,0.376953,0.762431,541.006514,-361.488996,587.016307, + -0.442288,0.472315,0.762431,460.088221,-460.088221,587.016307, + -0.525933,0.376953,0.762431,541.006514,-361.488996,587.016307, + -0.540644,0.52765,0.655203,494.47895,-494.47895,628.271002, + -0.630892,0.392232,0.669425,581.445733,-388.509618,628.271002, + -0.906011,0.374347,0.197505,698.56474,-289.354989,741.194313, + -0.743805,0.494626,0.449554,611.383516,-408.513405,680.911024, + -0.815571,0.543908,0.197505,628.691656,-420.078334,741.194313, + -0.743805,0.494626,0.449554,611.383516,-408.513405,680.911024, + -0.906011,0.374347,0.197505,698.56474,-289.354989,741.194313, + -0.82601,0.340012,0.449554,679.332965,-281.388928,680.911024, + -0.908682,0.411821,-0.06856,702.396062,-290.941975,804.835469, + -0.815571,0.543908,0.197505,628.691656,-420.078334,741.194313, + -0.81088,0.581183,-0.06856,632.139755,-422.38228,804.835469, + -0.815571,0.543908,0.197505,628.691656,-420.078334,741.194313, + -0.908682,0.411821,-0.06856,702.396062,-290.941975,804.835469, + -0.906011,0.374347,0.197505,698.56474,-289.354989,741.194313, + -0.831943,0.517227,-0.200867,621.482696,-415.261462,867.310387, + -0.908682,0.411821,-0.06856,702.396062,-290.941975,804.835469, + -0.81088,0.581183,-0.06856,632.139755,-422.38228,804.835469, + -0.908682,0.411821,-0.06856,702.396062,-290.941975,804.835469, + -0.831943,0.517227,-0.200867,621.482696,-415.261462,867.310387, + -0.916863,0.344985,-0.200867,690.554573,-286.03707,867.310387, + -0.759676,0.472298,-0.447021,543.79736,-363.353779,1474.61404, + -0.814754,0.369253,-0.447021,690.554573,-286.03707,1287.75132, + -0.727062,0.521108,-0.447021,621.482696,-415.261462,1287.75132, + -0.814754,0.369253,-0.447021,690.554573,-286.03707,1287.75132, + -0.759676,0.472298,-0.447021,543.79736,-363.353779,1474.61404, + -0.837219,0.315017,-0.447021,604.235252,-250.282436,1474.61404, + -0.583281,0.264347,-0.768052,431.596609,-178.773169,1100.8886, + -0.54385,0.338117,-0.768052,621.482696,-415.261462,867.310387, + -0.520502,0.37306,-0.768052,388.426686,-259.538414,1100.8886, + -0.54385,0.338117,-0.768052,621.482696,-415.261462,867.310387, + -0.583281,0.264347,-0.768052,431.596609,-178.773169,1100.8886, + -0.599364,0.22552,-0.768052,690.554573,-286.03707,867.310387, + -0.759676,0.472298,-0.447021,504.954691,-337.399938,1287.75132, + -0.814754,0.369253,-0.447021,647.394912,-268.159753,1100.8886, + -0.727062,0.521108,-0.447021,582.640028,-389.30762,1100.8886, + -0.814754,0.369253,-0.447021,647.394912,-268.159753,1100.8886, + -0.759676,0.472298,-0.447021,504.954691,-337.399938,1287.75132, + -0.837219,0.315017,-0.447021,561.075591,-232.405119,1287.75132, + 0.952958,0.189085,0.236891,-946.311642,-188.233089,1900.552851, + 0.985604,0.097074,0.138423,-976.970216,-0,1967.393306, + 0.973826,0.193469,0.119297,-958.198007,-190.597434,1967.393306, + 0.985604,0.097074,0.138423,-976.970216,-0,1967.393306, + 0.952958,0.189085,0.236891,-946.311642,-188.233089,1900.552851, + 0.962266,0.094775,0.255071,-964.850983,-0,1900.552851, + -0.759676,0.472298,-0.447021,582.640028,-389.30762,1661.47676, + -0.814754,0.369253,-0.447021,733.714234,-303.914386,1474.61404, + -0.727062,0.521108,-0.447021,660.325365,-441.215303,1474.61404, + -0.814754,0.369253,-0.447021,733.714234,-303.914386,1474.61404, + -0.759676,0.472298,-0.447021,582.640028,-389.30762,1661.47676, + -0.837219,0.315017,-0.447021,647.394912,-268.159753,1661.47676, + -0.764021,0.315278,0.562913,815.251889,-337.688389,1715.237645, + -0.672244,0.417941,0.611076,699.180902,-467.177743,1661.47676, + -0.687833,0.458274,0.562913,733.707316,-490.247555,1715.237645, + -0.672244,0.417941,0.611076,699.180902,-467.177743,1661.47676, + -0.764021,0.315278,0.562913,815.251889,-337.688389,1715.237645, + -0.740863,0.278762,0.611076,776.888194,-321.797626,1661.47676, + -0.820532,0.338904,0.460294,847.416499,-351.011407,1773.56823, + -0.687833,0.458274,0.562913,733.707316,-490.247555,1715.237645, + -0.738649,0.49247,0.460294,762.654701,-509.589579,1773.56823, + -0.687833,0.458274,0.562913,733.707316,-490.247555,1715.237645, + -0.820532,0.338904,0.460294,847.416499,-351.011407,1773.56823, + -0.764021,0.315278,0.562913,815.251889,-337.688389,1715.237645, + -0.865325,0.357689,0.3511,872.922654,-361.576402,1835.635445, + -0.738649,0.49247,0.460294,762.654701,-509.589579,1773.56823, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.738649,0.49247,0.460294,762.654701,-509.589579,1773.56823, + -0.865325,0.357689,0.3511,872.922654,-361.576402,1835.635445, + -0.820532,0.338904,0.460294,847.416499,-351.011407,1773.56823, + -0.897759,0.371365,0.236891,891.406075,-369.232486,1900.552851, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.799622,0.563457,0.207656,802.244273,-536.042486,1900.552851, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.897759,0.371365,0.236891,891.406075,-369.232486,1900.552851, + -0.865325,0.357689,0.3511,872.922654,-361.576402,1835.635445, + -0.910825,0.412792,0,906.352876,-375.423654,2035.2022, + -0.819909,0.56476,0.093785,812.321046,-542.77557,1967.393306, + -0.831469,0.55557,-0,815.696038,-545.030668,2035.2022, + -0.819909,0.56476,0.093785,812.321046,-542.77557,1967.393306, + -0.910825,0.412792,0,906.352876,-375.423654,2035.2022, + -0.917371,0.379736,0.119297,902.602786,-373.870315,1967.393306, + -0.917371,0.379736,0.119297,902.602786,-373.870315,1967.393306, + -0.799622,0.563457,0.207656,802.244273,-536.042486,1900.552851, + -0.819909,0.56476,0.093785,812.321046,-542.77557,1967.393306, + -0.799622,0.563457,0.207656,802.244273,-536.042486,1900.552851, + -0.917371,0.379736,0.119297,902.602786,-373.870315,1967.393306, + -0.897759,0.371365,0.236891,891.406075,-369.232486,1900.552851, + -0.819909,0.56476,-0.093785,812.321046,-542.77557,2103.011094, + -0.910825,0.412792,0,906.352876,-375.423654,2035.2022, + -0.831469,0.55557,-0,815.696038,-545.030668,2035.2022, + -0.910825,0.412792,0,906.352876,-375.423654,2035.2022, + -0.819909,0.56476,-0.093785,812.321046,-542.77557,2103.011094, + -0.917371,0.379736,-0.119297,902.602786,-373.870315,2103.011094, + 0.91848,0.181999,0.3511,-926.689746,-184.330051,1835.635445, + 0.962266,0.094775,0.255071,-964.850983,-0,1900.552851, + 0.952958,0.189085,0.236891,-946.311642,-188.233089,1900.552851, + 0.962266,0.094775,0.255071,-964.850983,-0,1900.552851, + 0.91848,0.181999,0.3511,-926.689746,-184.330051,1835.635445, + 0.925281,0.091132,0.36817,-944.844672,0,1835.635445, + -0.799622,0.563457,-0.207656,802.244273,-536.042486,2169.851549, + -0.917371,0.379736,-0.119297,902.602786,-373.870315,2103.011094, + -0.819909,0.56476,-0.093785,812.321046,-542.77557,2103.011094, + -0.917371,0.379736,-0.119297,902.602786,-373.870315,2103.011094, + -0.799622,0.563457,-0.207656,802.244273,-536.042486,2169.851549, + -0.897759,0.371365,-0.236891,891.406075,-369.232486,2169.851549, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.897759,0.371365,-0.236891,891.406075,-369.232486,2169.851549, + -0.799622,0.563457,-0.207656,802.244273,-536.042486,2169.851549, + -0.897759,0.371365,-0.236891,891.406075,-369.232486,2169.851549, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.865325,0.357689,-0.3511,872.922654,-361.576402,2234.768955, + 0.633017,0.630231,0.449554,-519.938942,-519.938942,680.911024, + 0.432767,0.603806,0.669425,-388.509618,-581.445733,628.271002, + 0.542249,0.507776,0.669425,-494.47895,-494.47895,628.271002, + 0.432767,0.603806,0.669425,-388.509618,-581.445733,628.271002, + 0.633017,0.630231,0.449554,-519.938942,-519.938942,680.911024, + 0.497902,0.741616,0.449554,-408.513405,-611.383516,680.911024, + -0.738649,0.49247,-0.460294,762.654701,-509.589579,2296.83617, + -0.865325,0.357689,-0.3511,872.922654,-361.576402,2234.768955, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.865325,0.357689,-0.3511,872.922654,-361.576402,2234.768955, + -0.738649,0.49247,-0.460294,762.654701,-509.589579,2296.83617, + -0.820532,0.338904,-0.460294,847.416499,-351.011407,2296.83617, + -0.687833,0.458274,-0.562913,733.707316,-490.247555,2355.166755, + -0.820532,0.338904,-0.460294,847.416499,-351.011407,2296.83617, + -0.738649,0.49247,-0.460294,762.654701,-509.589579,2296.83617, + -0.820532,0.338904,-0.460294,847.416499,-351.011407,2296.83617, + -0.687833,0.458274,-0.562913,733.707316,-490.247555,2355.166755, + -0.764021,0.315278,-0.562913,815.251889,-337.688389,2355.166755, + -0.672244,0.417941,-0.611076,699.180902,-467.177743,2408.92764, + -0.764021,0.315278,-0.562913,815.251889,-337.688389,2355.166755, + -0.687833,0.458274,-0.562913,733.707316,-490.247555,2355.166755, + -0.764021,0.315278,-0.562913,815.251889,-337.688389,2355.166755, + -0.672244,0.417941,-0.611076,699.180902,-467.177743,2408.92764, + -0.740863,0.278762,-0.611076,776.888194,-321.797626,2408.92764, + -0.849252,0.527988,-0,621.482696,-415.261462,2549.07468, + -0.910825,0.412792,-0,690.554573,-286.03707,2408.92764, + -0.812792,0.582554,-0,621.482696,-415.261462,2408.92764, + -0.910825,0.412792,-0,690.554573,-286.03707,2408.92764, + -0.849252,0.527988,-0,621.482696,-415.261462,2549.07468, + -0.935939,0.352162,-0,690.554573,-286.03707,2549.07468, + -0.630892,0.392232,0.669425,581.445733,-388.509618,628.271002, + -0.589368,0.267106,0.762431,601.13423,-248.997951,587.016307, + -0.525933,0.376953,0.762431,541.006514,-361.488996,587.016307, + -0.589368,0.267106,0.762431,601.13423,-248.997951,587.016307, + -0.630892,0.392232,0.669425,581.445733,-388.509618,628.271002, + -0.69529,0.261614,0.669425,646.067883,-267.610079,628.271002, + -0.876472,0.172332,0.449554,721.176029,-143.450831,680.911024, + -0.69529,0.261614,0.669425,646.067883,-267.610079,628.271002, + -0.82601,0.340012,0.449554,679.332965,-281.388928,680.911024, + -0.69529,0.261614,0.669425,646.067883,-267.610079,628.271002, + -0.876472,0.172332,0.449554,721.176029,-143.450831,680.911024, + -0.732968,0.120943,0.669425,685.862006,-136.426435,628.271002, + -0.961634,0.1904,0.197505,741.592372,-147.511894,741.194313, + -0.82601,0.340012,0.449554,679.332965,-281.388928,680.911024, + -0.906011,0.374347,0.197505,698.56474,-289.354989,741.194313, + -0.82601,0.340012,0.449554,679.332965,-281.388928,680.911024, + -0.961634,0.1904,0.197505,741.592372,-147.511894,741.194313, + -0.876472,0.172332,0.449554,721.176029,-143.450831,680.911024, + -0.971564,0.226633,-0.06856,745.659682,-148.320933,804.835469, + -0.906011,0.374347,0.197505,698.56474,-289.354989,741.194313, + -0.908682,0.411821,-0.06856,702.396062,-290.941975,804.835469, + -0.906011,0.374347,0.197505,698.56474,-289.354989,741.194313, + -0.971564,0.226633,-0.06856,745.659682,-148.320933,804.835469, + -0.961634,0.1904,0.197505,741.592372,-147.511894,741.194313, + -0.916863,0.344985,-0.200867,690.554573,-286.03707,867.310387, + -0.971564,0.226633,-0.06856,745.659682,-148.320933,804.835469, + -0.908682,0.411821,-0.06856,702.396062,-290.941975,804.835469, + -0.971564,0.226633,-0.06856,745.659682,-148.320933,804.835469, + -0.916863,0.344985,-0.200867,690.554573,-286.03707,867.310387, + -0.966549,0.159485,-0.200867,733.088824,-145.820434,867.310387, + -0.623645,0.145475,-0.768052,458.180517,-91.137771,1100.8886, + -0.599364,0.22552,-0.768052,690.554573,-286.03707,867.310387, + -0.583281,0.264347,-0.768052,431.596609,-178.773169,1100.8886, + -0.599364,0.22552,-0.768052,690.554573,-286.03707,867.310387, + -0.623645,0.145475,-0.768052,458.180517,-91.137771,1100.8886, + -0.631844,0.104257,-0.768052,733.088824,-145.820434,867.310387, + -0.837219,0.315017,-0.447021,561.075591,-232.405119,1287.75132, + -0.871137,0.203207,-0.447021,687.270773,-136.706657,1100.8886, + -0.814754,0.369253,-0.447021,647.394912,-268.159753,1100.8886, + -0.871137,0.203207,-0.447021,687.270773,-136.706657,1100.8886, + -0.837219,0.315017,-0.447021,561.075591,-232.405119,1287.75132, + -0.882589,0.145631,-0.447021,595.634671,-118.479102,1287.75132, + -0.837219,0.315017,-0.447021,604.235252,-250.282436,1474.61404, + -0.871137,0.203207,-0.447021,733.088824,-145.820434,1287.75132, + -0.814754,0.369253,-0.447021,690.554573,-286.03707,1287.75132, + -0.871137,0.203207,-0.447021,733.088824,-145.820434,1287.75132, + -0.837219,0.315017,-0.447021,604.235252,-250.282436,1474.61404, + -0.882589,0.145631,-0.447021,641.452722,-127.592879,1474.61404, + -0.837219,0.315017,-0.447021,647.394912,-268.159753,1661.47676, + -0.871137,0.203207,-0.447021,778.906876,-154.934211,1474.61404, + -0.814754,0.369253,-0.447021,733.714234,-303.914386,1474.61404, + -0.871137,0.203207,-0.447021,778.906876,-154.934211,1474.61404, + -0.837219,0.315017,-0.447021,647.394912,-268.159753,1661.47676, + -0.882589,0.145631,-0.447021,687.270773,-136.706657,1661.47676, + -0.810848,0.160167,0.562913,865.466789,-172.152048,1715.237645, + -0.740863,0.278762,0.611076,776.888194,-321.797626,1661.47676, + -0.764021,0.315278,0.562913,815.251889,-337.688389,1715.237645, + -0.740863,0.278762,0.611076,776.888194,-321.797626,1661.47676, + -0.810848,0.160167,0.562913,865.466789,-172.152048,1715.237645, + -0.781011,0.12887,0.611076,824.740108,-164.051007,1661.47676, + -0.870883,0.172314,0.460294,899.612557,-178.944064,1773.56823, + -0.764021,0.315278,0.562913,815.251889,-337.688389,1715.237645, + -0.820532,0.338904,0.460294,847.416499,-351.011407,1773.56823, + -0.764021,0.315278,0.562913,815.251889,-337.688389,1715.237645, + -0.870883,0.172314,0.460294,899.612557,-178.944064,1773.56823, + -0.810848,0.160167,0.562913,865.466789,-172.152048,1715.237645, + -0.91848,0.181999,0.3511,926.689746,-184.330051,1835.635445, + -0.820532,0.338904,0.460294,847.416499,-351.011407,1773.56823, + -0.865325,0.357689,0.3511,872.922654,-361.576402,1835.635445, + -0.820532,0.338904,0.460294,847.416499,-351.011407,1773.56823, + -0.91848,0.181999,0.3511,926.689746,-184.330051,1835.635445, + -0.870883,0.172314,0.460294,899.612557,-178.944064,1773.56823, + -0.952958,0.189085,0.236891,946.311642,-188.233089,1900.552851, + -0.865325,0.357689,0.3511,872.922654,-361.576402,1835.635445, + -0.897759,0.371365,0.236891,891.406075,-369.232486,1900.552851, + -0.865325,0.357689,0.3511,872.922654,-361.576402,1835.635445, + -0.952958,0.189085,0.236891,946.311642,-188.233089,1900.552851, + -0.91848,0.181999,0.3511,926.689746,-184.330051,1835.635445, + -0.973826,0.193469,0.119297,958.198007,-190.597434,1967.393306, + -0.897759,0.371365,0.236891,891.406075,-369.232486,1900.552851, + -0.917371,0.379736,0.119297,902.602786,-373.870315,1967.393306, + -0.897759,0.371365,0.236891,891.406075,-369.232486,1900.552851, + -0.973826,0.193469,0.119297,958.198007,-190.597434,1967.393306, + -0.952958,0.189085,0.236891,946.311642,-188.233089,1900.552851, + -0.973856,0.227168,-0,962.179081,-191.389319,2035.2022, + -0.917371,0.379736,0.119297,902.602786,-373.870315,1967.393306, + -0.910825,0.412792,0,906.352876,-375.423654,2035.2022, + -0.917371,0.379736,0.119297,902.602786,-373.870315,1967.393306, + -0.973856,0.227168,-0,962.179081,-191.389319,2035.2022, + -0.973826,0.193469,0.119297,958.198007,-190.597434,1967.393306, + -0.917371,0.379736,-0.119297,902.602786,-373.870315,2103.011094, + -0.973856,0.227168,-0,962.179081,-191.389319,2035.2022, + -0.910825,0.412792,0,906.352876,-375.423654,2035.2022, + -0.973856,0.227168,-0,962.179081,-191.389319,2035.2022, + -0.917371,0.379736,-0.119297,902.602786,-373.870315,2103.011094, + -0.973826,0.193469,-0.119297,958.198007,-190.597434,2103.011094, + -0.897759,0.371365,-0.236891,891.406075,-369.232486,2169.851549, + -0.973826,0.193469,-0.119297,958.198007,-190.597434,2103.011094, + -0.917371,0.379736,-0.119297,902.602786,-373.870315,2103.011094, + -0.973826,0.193469,-0.119297,958.198007,-190.597434,2103.011094, + -0.897759,0.371365,-0.236891,891.406075,-369.232486,2169.851549, + -0.952958,0.189085,-0.236891,946.311642,-188.233089,2169.851549, + -0.865325,0.357689,-0.3511,872.922654,-361.576402,2234.768955, + -0.952958,0.189085,-0.236891,946.311642,-188.233089,2169.851549, + -0.897759,0.371365,-0.236891,891.406075,-369.232486,2169.851549, + -0.952958,0.189085,-0.236891,946.311642,-188.233089,2169.851549, + -0.865325,0.357689,-0.3511,872.922654,-361.576402,2234.768955, + -0.91848,0.181999,-0.3511,926.689746,-184.330051,2234.768955, + -0.740863,0.278762,-0.611076,776.888194,-321.797626,2408.92764, + -0.810848,0.160167,-0.562913,865.466789,-172.152048,2355.166755, + -0.764021,0.315278,-0.562913,815.251889,-337.688389,2355.166755, + -0.810848,0.160167,-0.562913,865.466789,-172.152048,2355.166755, + -0.740863,0.278762,-0.611076,776.888194,-321.797626,2408.92764, + -0.781011,0.12887,-0.611076,824.740108,-164.051007,2408.92764, + -0.820532,0.338904,-0.460294,847.416499,-351.011407,2296.83617, + -0.91848,0.181999,-0.3511,926.689746,-184.330051,2234.768955, + -0.865325,0.357689,-0.3511,872.922654,-361.576402,2234.768955, + -0.91848,0.181999,-0.3511,926.689746,-184.330051,2234.768955, + -0.820532,0.338904,-0.460294,847.416499,-351.011407,2296.83617, + -0.870883,0.172314,-0.460294,899.612557,-178.944064,2296.83617, + -0.764021,0.315278,-0.562913,815.251889,-337.688389,2355.166755, + -0.870883,0.172314,-0.460294,899.612557,-178.944064,2296.83617, + -0.820532,0.338904,-0.460294,847.416499,-351.011407,2296.83617, + -0.870883,0.172314,-0.460294,899.612557,-178.944064,2296.83617, + -0.764021,0.315278,-0.562913,815.251889,-337.688389,2355.166755, + -0.810848,0.160167,-0.562913,865.466789,-172.152048,2355.166755, + -0.935939,0.352162,-0,690.554573,-286.03707,2549.07468, + -0.980785,0.19509,-0,733.088824,-145.820434,2408.92764, + -0.910825,0.412792,-0,690.554573,-286.03707,2408.92764, + -0.980785,0.19509,-0,733.088824,-145.820434,2408.92764, + -0.935939,0.352162,-0,690.554573,-286.03707,2549.07468, + -0.980785,0.19509,-0,733.088824,-145.820434,2549.07468, + 0.890977,0.087754,-0.445488,-700.735204,0,1100.8886, + 0.882589,0.145631,-0.447021,-595.634671,-118.479102,1287.75132, + 0.871137,0.203207,-0.447021,-687.270773,-136.706657,1100.8886, + 0.882589,0.145631,-0.447021,-595.634671,-118.479102,1287.75132, + 0.890977,0.087754,-0.445488,-700.735204,0,1100.8886, + 0.890977,0.087754,-0.445488,-607.303844,0,1287.75132, + 0.69529,0.261614,0.669425,-646.067883,-267.610079,628.271002, + 0.876472,0.172332,0.449554,-721.176029,-143.450831,680.911024, + 0.82601,0.340012,0.449554,-679.332965,-281.388928,680.911024, + 0.876472,0.172332,0.449554,-721.176029,-143.450831,680.911024, + 0.69529,0.261614,0.669425,-646.067883,-267.610079,628.271002, + 0.732968,0.120943,0.669425,-685.862006,-136.426435,628.271002, + -0.377198,0.832286,0.406229,357.792969,-863.788639,1813.40854, + -0.477566,0.756484,0.446838,509.589579,-762.654701,1773.56823, + -0.32859,0.82894,0.452643,351.011407,-847.416499,1773.56823, + -0.477566,0.756484,0.446838,509.589579,-762.654701,1773.56823, + -0.377198,0.832286,0.406229,357.792969,-863.788639,1813.40854, + -0.431053,0.806443,0.404776,395.941832,-839.735343,1806.112064, + -0.477566,0.756484,0.446838,509.589579,-762.654701,1773.56823, + -0.431053,0.806443,0.404776,395.941832,-839.735343,1806.112064, + -0.431053,0.806443,0.404776,476.980677,-794.166464,1801.623942, + -0.532321,0.742706,0.406229,517.019027,-773.773655,1803.632468, + -0.477566,0.756484,0.446838,509.589579,-762.654701,1773.56823, + -0.431053,0.806443,0.404776,476.980677,-794.166464,1801.623942, + -0.532321,0.742706,0.406229,517.019027,-773.773655,1803.632468, + -0.621118,0.652965,0.433416,648.584509,-648.584509,1773.56823, + -0.477566,0.756484,0.446838,509.589579,-762.654701,1773.56823, + -0.621118,0.652965,0.433416,648.584509,-648.584509,1773.56823, + -0.532321,0.742706,0.406229,517.019027,-773.773655,1803.632468, + -0.580099,0.706853,0.404776,549.426369,-748.597589,1806.112103, + -0.621118,0.652965,0.433416,648.584509,-648.584509,1773.56823, + -0.580099,0.706853,0.404776,549.426369,-748.597589,1806.112103, + -0.580099,0.706853,0.404776,612.093113,-704.779902,1819.404068, + -0.621118,0.652965,0.433416,648.584509,-648.584509,1773.56823, + -0.580099,0.706853,0.404776,612.093113,-704.779902,1819.404068, + -0.662575,0.661607,0.3511,668.106075,-668.106075,1835.635445, + -0.662575,0.661607,0.3511,668.106075,-668.106075,1835.635445, + -0.580099,0.706853,0.404776,612.093113,-704.779902,1819.404068, + -0.594359,0.724228,0.349616,660.420878,-674.413152,1835.635445, + -0.204727,0.913717,0.351011,184.330051,-926.689746,1835.635445, + -0.32859,0.82894,0.452643,351.011407,-847.416499,1773.56823, + -0.172314,0.870883,0.460294,178.944064,-899.612557,1773.56823, + -0.32859,0.82894,0.452643,351.011407,-847.416499,1773.56823, + -0.204727,0.913717,0.351011,184.330051,-926.689746,1835.635445, + -0.265441,0.875041,0.404776,301.781055,-883.553039,1819.403991, + -0.32859,0.82894,0.452643,351.011407,-847.416499,1773.56823, + -0.265441,0.875041,0.404776,301.781055,-883.553039,1819.403991, + -0.377198,0.832286,0.406229,357.792969,-863.788639,1813.40854, + -0.265441,0.875041,0.404776,301.781055,-883.553039,1819.403991, + -0.204727,0.913717,0.351011,184.330051,-926.689746,1835.635445, + -0.271966,0.896551,0.349616,226.426278,-913.919995,1835.635445, + -0.204727,0.913717,0.351011,184.330051,-926.689746,1835.635445, + -0.277526,0.914879,0.293216,199.065204,-923.935663,1840.988923, + -0.271966,0.896551,0.349616,226.426278,-913.919995,1835.635445, + -0.277526,0.914879,0.293216,199.065204,-923.935663,1840.988923, + -0.204727,0.913717,0.351011,184.330051,-926.689746,1835.635445, + -0.186438,0.937285,0.294512,184.93882,-929.750234,1845.760812, + -0.01288,0.939228,0.343052,0,-944.844672,1835.635445, + -0.093709,0.951442,0.293216,104.493637,-940.355693,1854.464465, + -0.204727,0.913717,0.351011,184.330051,-926.689746,1835.635445, + -0.093709,0.951442,0.293216,104.493637,-940.355693,1854.464465, + -0.01288,0.939228,0.343052,0,-944.844672,1835.635445, + 0.000461,0.971536,0.236891,0,-964.850983,1900.552851, + -0.204727,0.913717,0.351011,184.330051,-926.689746,1835.635445, + -0.093709,0.951442,0.293216,104.493637,-940.355693,1854.464465, + -0.186438,0.937285,0.294512,184.93882,-929.750234,1845.760812, + -0.093709,0.951442,0.293216,104.493637,-940.355693,1854.464465, + 0.000461,0.971536,0.236891,0,-964.850983,1900.552851, + -0.095693,0.97159,0.216463,104.493633,-954.559259,1900.552851, + -0.760725,0.624311,0.177575,750.933323,-599.953185,1905.43317, + -0.799622,0.563457,0.207656,802.244273,-536.042486,1900.552851, + -0.747441,0.613409,0.255071,746.507157,-603.958357,1900.552851, + -0.799622,0.563457,0.207656,802.244273,-536.042486,1900.552851, + -0.760725,0.624311,0.177575,750.933323,-599.953185,1905.43317, + -0.760725,0.624311,0.177575,778.074089,-578.368237,1945.815784, + -0.799622,0.563457,0.207656,802.244273,-536.042486,1900.552851, + -0.760725,0.624311,0.177575,778.074089,-578.368237,1945.815784, + -0.765569,0.628286,0.138423,788.482625,-571.822771,1967.393306, + -0.799622,0.563457,0.207656,802.244273,-536.042486,1900.552851, + -0.765569,0.628286,0.138423,788.482625,-571.822771,1967.393306, + -0.819909,0.56476,0.093785,812.321046,-542.77557,1967.393306, + -0.739034,0.606509,0.293216,673.273867,-664.397292,1840.989037, + -0.662575,0.661607,0.3511,668.106075,-668.106075,1835.635445, + -0.675745,0.675745,0.294512,668.764074,-668.764074,1838.654942, + -0.662575,0.661607,0.3511,668.106075,-668.106075,1835.635445, + -0.739034,0.606509,0.293216,673.273867,-664.397292,1840.989037, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.739034,0.606509,0.293216,673.273867,-664.397292,1840.989037, + -0.739034,0.606509,0.293216,713.8475,-629.001642,1870.037509, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.739034,0.606509,0.293216,713.8475,-629.001642,1870.037509, + -0.747441,0.613409,0.255071,746.507157,-603.958357,1900.552851, + -0.766636,0.549472,0.33219,785.609633,-524.927574,1835.635445, + -0.747441,0.613409,0.255071,746.507157,-603.958357,1900.552851, + -0.799622,0.563457,0.207656,802.244273,-536.042486,1900.552851, + -0.675745,0.675745,0.294512,668.764074,-668.764074,1838.654942, + -0.662575,0.661607,0.3511,668.106075,-668.106075,1835.635445, + -0.594359,0.724228,0.349616,660.420878,-674.413152,1835.635445, + -0.819909,0.56476,-0.093785,812.321046,-542.77557,2103.011094, + -0.771642,0.633271,-0.059467,795.73322,-565.076313,2080.771204, + -0.765569,0.628286,-0.138423,788.48267,-571.822716,2103.011094, + -0.771642,0.633271,-0.059467,795.73322,-565.076313,2080.771204, + -0.819909,0.56476,-0.093785,812.321046,-542.77557,2103.011094, + -0.77301,0.634393,-0,802.928322,-560.588162,2035.202339, + -0.77301,0.634393,-0,802.928322,-560.588162,2035.202339, + -0.819909,0.56476,-0.093785,812.321046,-542.77557,2103.011094, + -0.831469,0.55557,-0,815.696038,-545.030668,2035.2022, + -0.771643,0.63327,0.059467,795.733256,-565.076295,1989.63347, + -0.819909,0.56476,0.093785,812.321046,-542.77557,1967.393306, + -0.765569,0.628286,0.138423,788.482625,-571.822771,1967.393306, + -0.819909,0.56476,0.093785,812.321046,-542.77557,1967.393306, + -0.771643,0.63327,0.059467,795.733256,-565.076295,1989.63347, + -0.77301,0.634393,-0,802.928322,-560.588162,2035.202339, + -0.819909,0.56476,0.093785,812.321046,-542.77557,1967.393306, + -0.77301,0.634393,-0,802.928322,-560.588162,2035.202339, + -0.831469,0.55557,-0,815.696038,-545.030668,2035.2022, + 0.014067,0.991704,-0.12777,0,-976.970216,2103.011094, + -0.095693,0.97159,-0.216463,104.493598,-954.559262,2169.851549, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.095693,0.97159,-0.216463,104.493598,-954.559262,2169.851549, + 0.014067,0.991704,-0.12777,0,-976.970216,2103.011094, + 0,0.966617,-0.256224,0,-964.850983,2169.851549, + 0,0.966617,-0.256224,0,-964.850983,2169.851549, + -0.093709,0.951442,-0.293216,104.49359,-940.355699,2215.939931, + -0.095693,0.97159,-0.216463,104.493598,-954.559262,2169.851549, + -0.093709,0.951442,-0.293216,104.49359,-940.355699,2215.939931, + 0,0.966617,-0.256224,0,-964.850983,2169.851549, + -0.014053,0.939213,-0.343046,0,-944.844672,2234.768955, + -0.093709,0.951442,-0.293216,104.49359,-940.355699,2215.939931, + -0.014053,0.939213,-0.343046,0,-944.844672,2234.768955, + -0.15559,0.942942,-0.294368,184.938818,-929.750222,2224.643627, + -0.15559,0.942942,-0.294368,184.938818,-929.750222,2224.643627, + -0.014053,0.939213,-0.343046,0,-944.844672,2234.768955, + -0.183341,0.918213,-0.3511,184.330051,-926.689746,2234.768955, + -0.183341,0.918213,-0.3511,184.330051,-926.689746,2234.768955, + -0.277526,0.914879,-0.293216,199.064977,-923.935741,2229.415451, + -0.15559,0.942942,-0.294368,184.938818,-929.750222,2224.643627, + -0.277526,0.914879,-0.293216,199.064977,-923.935741,2229.415451, + -0.183341,0.918213,-0.3511,184.330051,-926.689746,2234.768955, + -0.269895,0.889723,-0.36817,226.426113,-913.920046,2234.768955, + -0.197225,0.872604,-0.446838,178.944064,-899.612557,2296.83617, + -0.269895,0.889723,-0.36817,226.426113,-913.920046,2234.768955, + -0.183341,0.918213,-0.3511,184.330051,-926.689746,2234.768955, + -0.269895,0.889723,-0.36817,226.426113,-913.920046,2234.768955, + -0.197225,0.872604,-0.446838,178.944064,-899.612557,2296.83617, + -0.265441,0.875041,-0.404776,301.780746,-883.553125,2251.000425, + -0.265441,0.875041,-0.404776,301.780746,-883.553125,2251.000425, + -0.197225,0.872604,-0.446838,178.944064,-899.612557,2296.83617, + -0.321796,0.855234,-0.406229,357.792956,-863.788608,2256.995935, + -0.321796,0.855234,-0.406229,357.792956,-863.788608,2256.995935, + -0.197225,0.872604,-0.446838,178.944064,-899.612557,2296.83617, + -0.353801,0.818498,-0.452643,351.011407,-847.416499,2296.83617, + -0.353801,0.818498,-0.452643,351.011407,-847.416499,2296.83617, + -0.431053,0.806443,-0.404776,395.941605,-839.735435,2264.292394, + -0.321796,0.855234,-0.406229,357.792956,-863.788608,2256.995935, + -0.431053,0.806443,-0.404776,395.941605,-839.735435,2264.292394, + -0.353801,0.818498,-0.452643,351.011407,-847.416499,2296.83617, + -0.431053,0.806443,-0.404776,476.98041,-794.166558,2268.780556, + -0.431053,0.806443,-0.404776,476.98041,-794.166558,2268.780556, + -0.468784,0.754023,-0.460099,509.589579,-762.654701,2296.83617, + -0.532321,0.742706,-0.406229,517.019001,-773.773617,2266.772036, + -0.468784,0.754023,-0.460099,509.589579,-762.654701,2296.83617, + -0.431053,0.806443,-0.404776,476.98041,-794.166558,2268.780556, + -0.353801,0.818498,-0.452643,351.011407,-847.416499,2296.83617, + -0.580099,0.706853,-0.404776,612.09289,-704.779988,2251.000501, + -0.662575,0.661607,-0.3511,668.106075,-668.106075,2234.768955, + -0.594359,0.724228,-0.349616,660.421224,-674.412869,2234.768955, + -0.662575,0.661607,-0.3511,668.106075,-668.106075,2234.768955, + -0.580099,0.706853,-0.404776,612.09289,-704.779988,2251.000501, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.580099,0.706853,-0.404776,612.09289,-704.779988,2251.000501, + -0.580099,0.706853,-0.404776,549.426162,-748.59768,2264.292433, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.580099,0.706853,-0.404776,549.426162,-748.59768,2264.292433, + -0.532321,0.742706,-0.406229,517.019001,-773.773617,2266.772036, + -0.61303,0.654649,-0.442299,648.584509,-648.584509,2296.83617, + -0.532321,0.742706,-0.406229,517.019001,-773.773617,2266.772036, + -0.468784,0.754023,-0.460099,509.589579,-762.654701,2296.83617, + -0.662575,0.661607,-0.3511,668.106075,-668.106075,2234.768955, + -0.739034,0.606509,-0.293216,673.273723,-664.39737,2229.415565, + -0.675745,0.675745,-0.294512,668.764043,-668.764043,2231.749598, + -0.739034,0.606509,-0.293216,673.273723,-664.39737,2229.415565, + -0.662575,0.661607,-0.3511,668.106075,-668.106075,2234.768955, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.739034,0.606509,-0.293216,673.273723,-664.39737,2229.415565, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.739034,0.606509,-0.293216,713.847356,-629.001708,2200.367118, + -0.739034,0.606509,-0.293216,713.847356,-629.001708,2200.367118, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.747441,0.613409,-0.255071,746.507278,-603.95821,2169.851549, + -0.747441,0.613409,-0.255071,746.507278,-603.95821,2169.851549, + -0.766636,0.549472,-0.33219,785.609633,-524.927574,2234.768955, + -0.799622,0.563457,-0.207656,802.244273,-536.042486,2169.851549, + -0.662575,0.661607,-0.3511,668.106075,-668.106075,2234.768955, + -0.675745,0.675745,-0.294512,668.764043,-668.764043,2231.749598, + -0.594359,0.724228,-0.349616,660.421224,-674.412869,2234.768955, + -0.799622,0.563457,-0.207656,802.244273,-536.042486,2169.851549, + -0.760725,0.624311,-0.177575,750.933223,-599.953237,2164.971478, + -0.747441,0.613409,-0.255071,746.507278,-603.95821,2169.851549, + -0.760725,0.624311,-0.177575,750.933223,-599.953237,2164.971478, + -0.799622,0.563457,-0.207656,802.244273,-536.042486,2169.851549, + -0.760725,0.624311,-0.177575,778.073998,-578.368273,2124.58888, + -0.760725,0.624311,-0.177575,778.073998,-578.368273,2124.58888, + -0.799622,0.563457,-0.207656,802.244273,-536.042486,2169.851549, + -0.765569,0.628286,-0.138423,788.48267,-571.822716,2103.011094, + -0.765569,0.628286,-0.138423,788.48267,-571.822716,2103.011094, + -0.799622,0.563457,-0.207656,802.244273,-536.042486,2169.851549, + -0.819909,0.56476,-0.093785,812.321046,-542.77557,2103.011094, + 0.024785,0.994227,0.104395,0,-976.970216,1967.393306, + -0.095693,0.97159,0.216463,104.493633,-954.559259,1900.552851, + 0.000461,0.971536,0.236891,0,-964.850983,1900.552851, + -0.095693,0.97159,0.216463,104.493633,-954.559259,1900.552851, + 0.024785,0.994227,0.104395,0,-976.970216,1967.393306, + -0.097677,0.991736,0.083183,104.493626,-966.678492,1967.393306, + -0,0.803137,-0.595794,104.493586,-599.95327,1905.433085, + 0,0.707107,-0.707107,713.8475,-629.001642,1870.037509, + 0,0.707107,-0.707107,104.493594,-629.001722,1870.037429, + 0,0.707107,-0.707107,713.8475,-629.001642,1870.037509, + -0,0.803137,-0.595794,104.493586,-599.95327,1905.433085, + -0,0.773011,-0.634393,746.507157,-603.958357,1900.552851, + -0,0.773011,-0.634393,746.507157,-603.958357,1900.552851, + -0,0.803137,-0.595794,104.493586,-599.95327,1905.433085, + -0,0.849252,-0.527988,750.933323,-599.953185,1905.43317, + -0,0.910825,-0.412792,104.493578,-578.368325,1945.815695, + -0,0.849252,-0.527988,750.933323,-599.953185,1905.43317, + -0,0.803137,-0.595794,104.493586,-599.95327,1905.433085, + -0,0.849252,-0.527988,750.933323,-599.953185,1905.43317, + -0,0.910825,-0.412792,104.493578,-578.368325,1945.815695, + -0,0.935939,-0.352162,778.074089,-578.368237,1945.815784, + -0,0.582554,0.812792,104.493552,-664.397445,2229.41549, + -0,0.683524,0.729928,713.847356,-629.001708,2200.367118, + -0,0.741031,0.671471,104.493551,-629.001789,2200.367038, + -0,0.683524,0.729928,713.847356,-629.001708,2200.367118, + -0,0.582554,0.812792,104.493552,-664.397445,2229.41549, + -0,0.505553,0.862796,673.273723,-664.39737,2229.415565, + -0,-0.527988,0.849252,104.493586,-923.935753,2229.415438, + -0,-0.400805,0.916164,301.780746,-883.553125,2251.000425, + -0,-0.352162,0.935939,104.493578,-883.553151,2251.000399, + -0,-0.400805,0.916164,301.780746,-883.553125,2251.000425, + -0,-0.527988,0.849252,104.493586,-923.935753,2229.415438, + -0,-0.55557,0.83147,199.064977,-923.935741,2229.415451, + -0,-0.400805,0.916164,301.780746,-883.553125,2251.000425, + -0,-0.55557,0.83147,199.064977,-923.935741,2229.415451, + -0,-0.471397,0.881921,226.426113,-913.920046,2234.768955, + 0,0,-1,476.980677,-794.166464,1801.623942, + 0,-0.162803,-0.986659,104.493631,-839.735381,1806.112026, + 0,0.032813,-0.999462,104.493625,-794.166513,1801.623893, + 0,-0.162803,-0.986659,104.493631,-839.735381,1806.112026, + 0,0,-1,476.980677,-794.166464,1801.623942, + 0,-0.243095,-0.970002,395.941832,-839.735343,1806.112064, + 0,-0.243095,-0.970002,395.941832,-839.735343,1806.112064, + 0,-0.352162,-0.935939,104.493635,-883.553065,1819.403965, + 0,-0.162803,-0.986659,104.493631,-839.735381,1806.112026, + 0,-0.352162,-0.935939,104.493635,-883.553065,1819.403965, + 0,-0.243095,-0.970002,395.941832,-839.735343,1806.112064, + 0,-0.400804,-0.916164,301.781055,-883.553039,1819.403991, + 0,-0.400804,-0.916164,301.781055,-883.553039,1819.403991, + 0,-0.243095,-0.970002,395.941832,-839.735343,1806.112064, + 0,-0.290284,-0.95694,357.792969,-863.788639,1813.40854, + 0,-0.400804,-0.916164,301.781055,-883.553039,1819.403991, + 0,-0.527988,-0.849252,104.493637,-923.935675,1840.98891, + 0,-0.352162,-0.935939,104.493635,-883.553065,1819.403965, + 0,-0.527988,-0.849252,104.493637,-923.935675,1840.98891, + 0,-0.400804,-0.916164,301.781055,-883.553039,1819.403991, + 0,-0.55557,-0.83147,199.065204,-923.935663,1840.988923, + 0,-0.55557,-0.83147,199.065204,-923.935663,1840.988923, + 0,-0.400804,-0.916164,301.781055,-883.553039,1819.403991, + 0,-0.471397,-0.881921,226.426278,-913.919995,1835.635445, + 0,0.707107,-0.707107,713.8475,-629.001642,1870.037509, + 0,0.582554,-0.812792,104.493603,-664.397367,1840.988962, + 0,0.707107,-0.707107,104.493594,-629.001722,1870.037429, + 0,0.582554,-0.812792,104.493603,-664.397367,1840.988962, + 0,0.707107,-0.707107,713.8475,-629.001642,1870.037509, + 0,0.505553,-0.862796,673.273867,-664.397292,1840.989037, + 0,0.505553,-0.862796,673.273867,-664.397292,1840.989037, + 0,0.412793,-0.910825,104.493611,-704.779969,1819.404001, + 0,0.582554,-0.812792,104.493603,-664.397367,1840.988962, + 0,0.412793,-0.910825,104.493611,-704.779969,1819.404001, + 0,0.505553,-0.862796,673.273867,-664.397292,1840.989037, + 0,0.382684,-0.923879,612.093113,-704.779902,1819.404068, + 0,0.382684,-0.923879,612.093113,-704.779902,1819.404068, + 0,0.505553,-0.862796,673.273867,-664.397292,1840.989037, + 0,0.471397,-0.881921,660.420878,-674.413152,1835.635445, + 0,0.471397,-0.881921,660.420878,-674.413152,1835.635445, + 0,0.505553,-0.862796,673.273867,-664.397292,1840.989037, + 0,0.471397,-0.881921,668.764074,-668.764074,1838.654942, + 0,0.382684,-0.923879,612.093113,-704.779902,1819.404068, + 0,0.227168,-0.973856,104.493619,-748.597647,1806.112044, + 0,0.412793,-0.910825,104.493611,-704.779969,1819.404001, + 0,0.227168,-0.973856,104.493619,-748.597647,1806.112044, + 0,0.382684,-0.923879,612.093113,-704.779902,1819.404068, + 0,0.146613,-0.989194,549.426369,-748.597589,1806.112103, + -0,0.227167,0.973856,104.493558,-748.597739,2264.292374, + -0,0.382683,0.92388,612.09289,-704.779988,2251.000501, + -0,0.412792,0.910825,104.493554,-704.780055,2251.000435, + -0,0.382683,0.92388,612.09289,-704.779988,2251.000501, + -0,0.227167,0.973856,104.493558,-748.597739,2264.292374, + -0,0.146613,0.989194,549.426162,-748.59768,2264.292433, + -0,0.741031,0.671471,104.493551,-629.001789,2200.367038, + -0,0.812792,0.582554,750.933223,-599.953237,2164.971478, + -0,0.849252,0.527988,104.493552,-599.953322,2164.971393, + -0,0.812792,0.582554,750.933223,-599.953237,2164.971478, + -0,0.741031,0.671471,104.493551,-629.001789,2200.367038, + -0,0.77301,0.634393,746.507278,-603.95821,2169.851549, + -0,0.77301,0.634393,746.507278,-603.95821,2169.851549, + -0,0.741031,0.671471,104.493551,-629.001789,2200.367038, + -0,0.683524,0.729928,713.847356,-629.001708,2200.367118, + -0,0.849252,0.527988,104.493552,-599.953322,2164.971393, + -0,0.910825,0.412793,778.073998,-578.368273,2124.58888, + -0,0.941584,0.336778,104.493554,-578.368361,2124.588791, + -0,0.910825,0.412793,778.073998,-578.368273,2124.58888, + -0,0.849252,0.527988,104.493552,-599.953322,2164.971393, + -0,0.812792,0.582554,750.933223,-599.953237,2164.971478, + -0,0.941584,0.336778,104.493554,-578.368361,2124.588791, + -0,0.973856,0.227168,795.73322,-565.076313,2080.771204, + -0,0.986659,0.162803,104.493558,-565.076404,2080.771113, + -0,0.973856,0.227168,795.73322,-565.076313,2080.771204, + -0,0.941584,0.336778,104.493554,-578.368361,2124.588791, + -0,0.95694,0.290285,788.48267,-571.822716,2103.011094, + -0,0.95694,0.290285,788.48267,-571.822716,2103.011094, + -0,0.941584,0.336778,104.493554,-578.368361,2124.588791, + -0,0.910825,0.412793,778.073998,-578.368273,2124.58888, + -0,0.986659,0.162803,104.493558,-565.076404,2080.771113, + -0,0.999462,0.032813,802.928322,-560.588162,2035.202339, + -0,0.999462,-0.032813,104.493564,-560.588253,2035.202247, + -0,0.999462,0.032813,802.928322,-560.588162,2035.202339, + -0,0.986659,0.162803,104.493558,-565.076404,2080.771113, + -0,0.973856,0.227168,795.73322,-565.076313,2080.771204, + -0,0.999462,-0.032813,104.493564,-560.588253,2035.202247, + -0,0.986659,-0.162803,795.733256,-565.076295,1989.63347, + -0,0.970002,-0.243095,104.49357,-565.076386,1989.633379, + -0,0.986659,-0.162803,795.733256,-565.076295,1989.63347, + -0,0.999462,-0.032813,104.493564,-560.588253,2035.202247, + -0,0.999462,0.032813,802.928322,-560.588162,2035.202339, + -0,0.970002,-0.243095,104.49357,-565.076386,1989.633379, + -0,0.935939,-0.352162,778.074089,-578.368237,1945.815784, + -0,0.910825,-0.412792,104.493578,-578.368325,1945.815695, + -0,0.935939,-0.352162,778.074089,-578.368237,1945.815784, + -0,0.970002,-0.243095,104.49357,-565.076386,1989.633379, + -0,0.95694,-0.290284,788.482625,-571.822771,1967.393306, + -0,0.95694,-0.290284,788.482625,-571.822771,1967.393306, + -0,0.970002,-0.243095,104.49357,-565.076386,1989.633379, + -0,0.986659,-0.162803,795.733256,-565.076295,1989.63347, + -0,-0.162803,0.986659,104.49357,-839.735473,2264.292356, + -0,-0,1,476.98041,-794.166558,2268.780556, + -0,0.032813,0.999462,104.493564,-794.166607,2268.780507, + -0,-0,1,476.98041,-794.166558,2268.780556, + -0,-0.162803,0.986659,104.49357,-839.735473,2264.292356, + -0,-0.243095,0.970002,395.941605,-839.735435,2264.292394, + -0,0.032813,0.999462,104.493564,-794.166607,2268.780507, + -0,0.146613,0.989194,549.426162,-748.59768,2264.292433, + -0,0.227167,0.973856,104.493558,-748.597739,2264.292374, + -0,0.146613,0.989194,549.426162,-748.59768,2264.292433, + -0,0.032813,0.999462,104.493564,-794.166607,2268.780507, + -0,-0,1,476.98041,-794.166558,2268.780556, + -0,0.146613,0.989194,549.426162,-748.59768,2264.292433, + -0,-0,1,476.98041,-794.166558,2268.780556, + -0,0.098017,0.995185,517.019001,-773.773617,2266.772036, + -0,-0.634393,0.77301,104.49359,-940.355699,2215.939931, + -0,-0.55557,0.83147,199.064977,-923.935741,2229.415451, + -0,-0.527988,0.849252,104.493586,-923.935753,2229.415438, + -0,-0.55557,0.83147,199.064977,-923.935741,2229.415451, + -0,-0.634393,0.77301,104.49359,-940.355699,2215.939931, + -0,-0.634393,0.77301,184.938818,-929.750222,2224.643627, + -1,-0,-0,104.493608,-966.678494,2103.011094, + -1,-0,-0,104.493626,-966.678492,1967.393306, + -1,-0,-0,104.493618,-970.737561,2035.2022, + -1,-0,-0,104.493626,-966.678492,1967.393306, + -1,-0,-0,104.493608,-966.678494,2103.011094, + -1,-0,-0,104.493598,-954.559262,2169.851549, + -1,-0,-0,104.493626,-966.678492,1967.393306, + -1,-0,-0,104.493598,-954.559262,2169.851549, + -1,-0,-0,104.493633,-954.559259,1900.552851, + -1,-0,-0,104.493633,-954.559259,1900.552851, + -1,-0,-0,104.493598,-954.559262,2169.851549, + -1,-0,-0,104.49359,-940.355699,2215.939931, + -1,-0,-0,104.493633,-954.559259,1900.552851, + -1,-0,-0,104.49359,-940.355699,2215.939931, + -1,-0,-0,104.493637,-940.355693,1854.464465, + -1,-0,-0,104.493637,-940.355693,1854.464465, + -1,-0,-0,104.49359,-940.355699,2215.939931, + -1,-0,-0,104.493586,-923.935753,2229.415438, + -1,-0,-0,104.493637,-940.355693,1854.464465, + -1,-0,-0,104.493586,-923.935753,2229.415438, + -1,-0,-0,104.493637,-923.935675,1840.98891, + -1,-0,-0,104.493637,-923.935675,1840.98891, + -1,-0,-0,104.493586,-923.935753,2229.415438, + -1,-0,-0,104.493578,-883.553151,2251.000399, + -1,-0,-0,104.493637,-923.935675,1840.98891, + -1,-0,-0,104.493578,-883.553151,2251.000399, + -1,-0,-0,104.493635,-883.553065,1819.403965, + -1,-0,-0,104.493635,-883.553065,1819.403965, + -1,-0,-0,104.493578,-883.553151,2251.000399, + -1,-0,-0,104.493606,-882.926352,2035.2022, + -1,-0,-0,104.493606,-882.926352,2035.2022, + -1,-0,-0,104.493578,-883.553151,2251.000399, + -1,-0,-0,104.493604,-881.220857,2052.518376, + -1,-0,-0,104.493604,-881.220857,2052.518376, + -1,-0,-0,104.493578,-883.553151,2251.000399, + -1,-0,-0,104.49357,-839.735473,2264.292356, + -1,-0,-0,104.493604,-881.220857,2052.518376, + -1,-0,-0,104.49357,-839.735473,2264.292356, + -1,-0,-0,104.493601,-876.169915,2069.169102, + -1,-0,-0,104.493601,-876.169915,2069.169102, + -1,-0,-0,104.49357,-839.735473,2264.292356, + -1,-0,-0,104.493598,-867.96763,2084.514498, + -1,-0,-0,104.493598,-867.96763,2084.514498, + -1,-0,-0,104.49357,-839.735473,2264.292356, + -1,-0,-0,104.493594,-856.929211,2097.964851, + -1,-0,-0,104.493594,-856.929211,2097.964851, + -1,-0,-0,104.49357,-839.735473,2264.292356, + -1,-0,-0,104.493591,-843.478858,2109.00327, + -1,-0,-0,104.493591,-843.478858,2109.00327, + -1,-0,-0,104.49357,-839.735473,2264.292356, + -1,-0,-0,104.493588,-828.133462,2117.205555, + -1,-0,-0,104.493588,-828.133462,2117.205555, + -1,-0,-0,104.49357,-839.735473,2264.292356, + -1,-0,-0,104.493564,-794.166607,2268.780507, + -1,-0,-0,104.493588,-828.133462,2117.205555, + -1,-0,-0,104.493564,-794.166607,2268.780507, + -1,-0,-0,104.493585,-811.482736,2122.256498, + -1,-0,-0,104.493585,-811.482736,2122.256498, + -1,-0,-0,104.493564,-794.166607,2268.780507, + -1,-0,-0,104.493583,-794.16656,2123.961992, + -1,-0,-0,104.493583,-794.16656,2123.961992, + -1,-0,-0,104.493564,-794.166607,2268.780507, + -1,-0,-0,104.493558,-748.597739,2264.292374, + -1,-0,-0,104.493583,-794.16656,2123.961992, + -1,-0,-0,104.493558,-748.597739,2264.292374, + -1,-0,-0,104.493581,-776.850384,2122.256498, + -1,-0,-0,104.493581,-776.850384,2122.256498, + -1,-0,-0,104.493558,-748.597739,2264.292374, + -1,-0,-0,104.493579,-760.199658,2117.205555, + -1,-0,-0,104.493579,-760.199658,2117.205555, + -1,-0,-0,104.493558,-748.597739,2264.292374, + -1,-0,-0,104.493578,-744.854262,2109.00327, + -1,-0,-0,104.493578,-744.854262,2109.00327, + -1,-0,-0,104.493558,-748.597739,2264.292374, + -1,-0,-0,104.493554,-704.780055,2251.000435, + -1,-0,-0,104.493578,-744.854262,2109.00327, + -1,-0,-0,104.493554,-704.780055,2251.000435, + -1,-0,-0,104.493578,-731.403909,2097.964851, + -1,-0,-0,104.493578,-731.403909,2097.964851, + -1,-0,-0,104.493554,-704.780055,2251.000435, + -1,-0,-0,104.493578,-720.36549,2084.514498, + -1,-0,-0,104.493578,-720.36549,2084.514498, + -1,-0,-0,104.493554,-704.780055,2251.000435, + -1,-0,-0,104.493579,-712.163205,2069.169102, + -1,-0,-0,104.493579,-712.163205,2069.169102, + -1,-0,-0,104.493554,-704.780055,2251.000435, + -1,-0,-0,104.493581,-707.112263,2052.518376, + -1,-0,-0,104.493581,-707.112263,2052.518376, + -1,-0,-0,104.493554,-704.780055,2251.000435, + -1,-0,-0,104.493583,-705.406768,2035.2022, + -1,-0,-0,104.493635,-883.553065,1819.403965, + -1,-0,-0,104.493608,-881.220857,2017.886024, + -1,-0,-0,104.493631,-839.735381,1806.112026, + -1,-0,-0,104.493608,-881.220857,2017.886024, + -1,-0,-0,104.493635,-883.553065,1819.403965, + -1,-0,-0,104.493606,-882.926352,2035.2022, + -1,-0,-0,104.493631,-839.735381,1806.112026, + -1,-0,-0,104.493608,-881.220857,2017.886024, + -1,-0,-0,104.49361,-876.169915,2001.235298, + -1,-0,-0,104.493631,-839.735381,1806.112026, + -1,-0,-0,104.49361,-876.169915,2001.235298, + -1,-0,-0,104.493611,-867.96763,1985.889902, + -1,-0,-0,104.493631,-839.735381,1806.112026, + -1,-0,-0,104.493611,-867.96763,1985.889902, + -1,-0,-0,104.493611,-856.929211,1972.439549, + -1,-0,-0,104.493631,-839.735381,1806.112026, + -1,-0,-0,104.493611,-856.929211,1972.439549, + -1,-0,-0,104.493611,-843.478858,1961.40113, + -1,-0,-0,104.493631,-839.735381,1806.112026, + -1,-0,-0,104.493611,-843.478858,1961.40113, + -1,-0,-0,104.49361,-828.133462,1953.198845, + -1,-0,-0,104.493631,-839.735381,1806.112026, + -1,-0,-0,104.49361,-828.133462,1953.198845, + -1,-0,-0,104.493625,-794.166513,1801.623893, + -1,-0,-0,104.493625,-794.166513,1801.623893, + -1,-0,-0,104.49361,-828.133462,1953.198845, + -1,-0,-0,104.493608,-811.482736,1948.147903, + -1,-0,-0,104.493625,-794.166513,1801.623893, + -1,-0,-0,104.493608,-811.482736,1948.147903, + -1,-0,-0,104.493606,-794.16656,1946.442408, + -1,-0,-0,104.493625,-794.166513,1801.623893, + -1,-0,-0,104.493606,-794.16656,1946.442408, + -1,-0,-0,104.493604,-776.850384,1948.147903, + -1,-0,-0,104.493625,-794.166513,1801.623893, + -1,-0,-0,104.493604,-776.850384,1948.147903, + -1,-0,-0,104.493619,-748.597647,1806.112044, + -1,-0,-0,104.493619,-748.597647,1806.112044, + -1,-0,-0,104.493604,-776.850384,1948.147903, + -1,-0,-0,104.493601,-760.199658,1953.198845, + -1,-0,-0,104.493619,-748.597647,1806.112044, + -1,-0,-0,104.493601,-760.199658,1953.198845, + -1,-0,-0,104.493598,-744.854262,1961.40113, + -1,-0,-0,104.493619,-748.597647,1806.112044, + -1,-0,-0,104.493598,-744.854262,1961.40113, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493598,-744.854262,1961.40113, + -1,-0,-0,104.493594,-731.403909,1972.439549, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493594,-731.403909,1972.439549, + -1,-0,-0,104.493591,-720.36549,1985.889902, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493591,-720.36549,1985.889902, + -1,-0,-0,104.493588,-712.163205,2001.235298, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493588,-712.163205,2001.235298, + -1,-0,-0,104.493585,-707.112263,2017.886024, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493585,-707.112263,2017.886024, + -1,-0,-0,104.493583,-705.406768,2035.2022, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493583,-705.406768,2035.2022, + -1,-0,-0,104.493554,-704.780055,2251.000435, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493554,-704.780055,2251.000435, + -1,-0,-0,104.493552,-664.397445,2229.41549, + -1,-0,-0,104.493611,-704.779969,1819.404001, + -1,-0,-0,104.493552,-664.397445,2229.41549, + -1,-0,-0,104.493603,-664.397367,1840.988962, + -1,-0,-0,104.493603,-664.397367,1840.988962, + -1,-0,-0,104.493552,-664.397445,2229.41549, + -1,-0,-0,104.493551,-629.001789,2200.367038, + -1,-0,-0,104.493603,-664.397367,1840.988962, + -1,-0,-0,104.493551,-629.001789,2200.367038, + -1,-0,-0,104.493594,-629.001722,1870.037429, + -1,-0,-0,104.493594,-629.001722,1870.037429, + -1,-0,-0,104.493551,-629.001789,2200.367038, + -1,-0,-0,104.493552,-599.953322,2164.971393, + -1,-0,-0,104.493594,-629.001722,1870.037429, + -1,-0,-0,104.493552,-599.953322,2164.971393, + -1,-0,-0,104.493586,-599.95327,1905.433085, + -1,-0,-0,104.493586,-599.95327,1905.433085, + -1,-0,-0,104.493552,-599.953322,2164.971393, + -1,-0,-0,104.493554,-578.368361,2124.588791, + -1,-0,-0,104.493586,-599.95327,1905.433085, + -1,-0,-0,104.493554,-578.368361,2124.588791, + -1,-0,-0,104.493578,-578.368325,1945.815695, + -1,-0,-0,104.493578,-578.368325,1945.815695, + -1,-0,-0,104.493554,-578.368361,2124.588791, + -1,-0,-0,104.493558,-565.076404,2080.771113, + -1,-0,-0,104.493578,-578.368325,1945.815695, + -1,-0,-0,104.493558,-565.076404,2080.771113, + -1,-0,-0,104.49357,-565.076386,1989.633379, + -1,-0,-0,104.49357,-565.076386,1989.633379, + -1,-0,-0,104.493558,-565.076404,2080.771113, + -1,-0,-0,104.493564,-560.588253,2035.202247, + 0,-0.55557,-0.83147,199.065204,-923.935663,1840.988923, + 0,-0.634393,-0.773011,104.493637,-940.355693,1854.464465, + 0,-0.527988,-0.849252,104.493637,-923.935675,1840.98891, + 0,-0.634393,-0.773011,104.493637,-940.355693,1854.464465, + 0,-0.55557,-0.83147,199.065204,-923.935663,1840.988923, + 0,-0.634393,-0.773011,184.93882,-929.750234,1845.760812, + -0,-0.352162,0.935939,104.493578,-883.553151,2251.000399, + -0,-0.243095,0.970002,395.941605,-839.735435,2264.292394, + -0,-0.162803,0.986659,104.49357,-839.735473,2264.292356, + -0,-0.243095,0.970002,395.941605,-839.735435,2264.292394, + -0,-0.352162,0.935939,104.493578,-883.553151,2251.000399, + -0,-0.400805,0.916164,301.780746,-883.553125,2251.000425, + -0,-0.243095,0.970002,395.941605,-839.735435,2264.292394, + -0,-0.400805,0.916164,301.780746,-883.553125,2251.000425, + -0,-0.290285,0.95694,357.792956,-863.788608,2256.995935, + -0,0.412792,0.910825,104.493554,-704.780055,2251.000435, + -0,0.505553,0.862796,673.273723,-664.39737,2229.415565, + -0,0.582554,0.812792,104.493552,-664.397445,2229.41549, + -0,0.505553,0.862796,673.273723,-664.39737,2229.415565, + -0,0.412792,0.910825,104.493554,-704.780055,2251.000435, + -0,0.382683,0.92388,612.09289,-704.779988,2251.000501, + -0,0.505553,0.862796,673.273723,-664.39737,2229.415565, + -0,0.382683,0.92388,612.09289,-704.779988,2251.000501, + -0,0.471397,0.881921,660.421224,-674.412869,2234.768955, + -0,0.505553,0.862796,673.273723,-664.39737,2229.415565, + -0,0.471397,0.881921,660.421224,-674.412869,2234.768955, + -0,0.471397,0.881921,668.764043,-668.764043,2231.749598, + 0,0.146613,-0.989194,549.426369,-748.597589,1806.112103, + 0,0.032813,-0.999462,104.493625,-794.166513,1801.623893, + 0,0.227168,-0.973856,104.493619,-748.597647,1806.112044, + 0,0.032813,-0.999462,104.493625,-794.166513,1801.623893, + 0,0.146613,-0.989194,549.426369,-748.597589,1806.112103, + 0,0,-1,476.980677,-794.166464,1801.623942, + 0,0,-1,476.980677,-794.166464,1801.623942, + 0,0.146613,-0.989194,549.426369,-748.597589,1806.112103, + 0,0.098017,-0.995185,517.019027,-773.773655,1803.632468, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.024785,0.994227,0.104395,0,-976.970216,1967.393306, + 0.193925,0.973736,0.119297,-190.597434,-958.198007,1967.393306, + 0.024785,0.994227,0.104395,0,-976.970216,1967.393306, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097844,0.993424,0.059467,-10.248119,-977.344466,1990.507106, + 0.024785,0.994227,0.104395,0,-976.970216,1967.393306, + 0.097844,0.993424,0.059467,-10.248119,-977.344466,1990.507106, + 0.097844,0.993424,0.059467,-1.468161,-978.157452,1989.642356, + 0.097844,0.993424,0.059467,-10.248119,-977.344466,1990.507106, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097844,0.993424,0.059467,-18.690668,-976.666251,1993.068126, + 0.097844,0.993424,0.059467,-18.690668,-976.666251,1993.068126, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097844,0.993424,0.059467,-26.471367,-976.14887,1997.226995, + 0.097844,0.993424,0.059467,-26.471367,-976.14887,1997.226995, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097844,0.993424,0.059467,-33.291206,-975.812207,2002.823893, + 0.097844,0.993424,0.059467,-33.291206,-975.812207,2002.823893, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097844,0.993424,0.059467,-38.888103,-975.6692,2009.643732, + 0.097844,0.993424,0.059467,-38.888103,-975.6692,2009.643732, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097844,0.993424,0.059467,-43.046973,-975.725342,2017.42443, + 0.097844,0.993424,0.059467,-43.046973,-975.725342,2017.42443, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097844,0.993424,0.059467,-45.607992,-975.978478,2025.866979, + 0.097844,0.993424,0.059467,-45.607992,-975.978478,2025.866979, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097844,0.993424,0.059467,-46.472742,-976.41888,2034.646937, + 0.097844,0.993424,0.059467,-46.472742,-976.41888,2034.646937, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097998,0.994989,-0.019853,-46.418054,-976.457504,2035.2022, + -0.032754,0.997678,0.059721,0,-978.310709,1989.786957, + 0.024785,0.994227,0.104395,0,-976.970216,1967.393306, + 0.097844,0.993424,0.059467,-1.468161,-978.157452,1989.642356, + -0.097998,0.994989,-0.019853,43.481732,-976.746707,2035.2022, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097998,0.994989,-0.019853,43.481732,-976.746707,2035.2022, + -0.097844,0.993424,-0.059467,42.671671,-976.334157,2043.426896, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097844,0.993424,-0.059467,42.671671,-976.334157,2043.426896, + -0.097844,0.993424,-0.059467,40.110651,-976.081021,2051.869445, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097844,0.993424,-0.059467,40.110651,-976.081021,2051.869445, + -0.097844,0.993424,-0.059467,35.951781,-976.024878,2059.650143, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097844,0.993424,-0.059467,35.951781,-976.024878,2059.650143, + -0.097844,0.993424,-0.059467,30.354884,-976.167886,2066.469982, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097844,0.993424,-0.059467,30.354884,-976.167886,2066.469982, + -0.097844,0.993424,-0.059467,23.535045,-976.504549,2072.06688, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097844,0.993424,-0.059467,23.535045,-976.504549,2072.06688, + -0.097844,0.993424,-0.059467,15.754347,-977.02193,2076.225749, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097844,0.993424,-0.059467,15.754347,-977.02193,2076.225749, + -0.097844,0.993424,-0.059467,7.311798,-977.700144,2078.786769, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.097844,0.993424,-0.059467,7.311798,-977.700144,2078.786769, + -0.032754,0.997678,-0.059721,0,-978.377185,2079.506918, + -0.097775,0.992726,-0.070245,104.493608,-966.678494,2103.011094, + -0.032754,0.997678,-0.059721,0,-978.377185,2079.506918, + 0.014067,0.991704,-0.12777,0,-976.970216,2103.011094, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097998,0.994989,-0.019853,-46.418054,-976.457504,2035.2022, + 0.139589,0.989621,0.034132,-191.389319,-962.179081,2035.2022, + 0.097998,0.994989,-0.019853,-46.418054,-976.457504,2035.2022, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097844,0.993424,-0.059467,-45.607992,-976.044955,2043.426896, + 0.097844,0.993424,-0.059467,-45.607992,-976.044955,2043.426896, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097844,0.993424,-0.059467,-43.046973,-975.791819,2051.869445, + 0.097844,0.993424,-0.059467,-43.046973,-975.791819,2051.869445, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097844,0.993424,-0.059467,-38.888103,-975.735676,2059.650143, + 0.097844,0.993424,-0.059467,-38.888103,-975.735676,2059.650143, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097844,0.993424,-0.059467,-33.291206,-975.878684,2066.469982, + 0.097844,0.993424,-0.059467,-33.291206,-975.878684,2066.469982, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097844,0.993424,-0.059467,-26.471367,-976.215347,2072.06688, + 0.097844,0.993424,-0.059467,-26.471367,-976.215347,2072.06688, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097844,0.993424,-0.059467,-18.690668,-976.732727,2076.225749, + 0.097844,0.993424,-0.059467,-18.690668,-976.732727,2076.225749, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097844,0.993424,-0.059467,-10.248119,-977.410942,2078.786769, + 0.097844,0.993424,-0.059467,-10.248119,-977.410942,2078.786769, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + 0.097844,0.993424,-0.059467,-1.468161,-978.223928,2079.651519, + 0.097844,0.993424,-0.059467,-1.468161,-978.223928,2079.651519, + 0.014067,0.991704,-0.12777,0,-976.970216,2103.011094, + -0.032754,0.997678,-0.059721,0,-978.377185,2079.506918, + 0.014067,0.991704,-0.12777,0,-976.970216,2103.011094, + 0.097844,0.993424,-0.059467,-1.468161,-978.223928,2079.651519, + 0.138896,0.986639,-0.085149,-190.597434,-958.198007,2103.011094, + -0.032754,0.997678,0.059721,0,-978.310709,1989.786957, + -0.097677,0.991736,0.083183,104.493626,-966.678492,1967.393306, + 0.024785,0.994227,0.104395,0,-976.970216,1967.393306, + -0.097677,0.991736,0.083183,104.493626,-966.678492,1967.393306, + -0.032754,0.997678,0.059721,0,-978.310709,1989.786957, + -0.097844,0.993424,0.059467,7.311798,-977.633668,1990.507106, + -0.097677,0.991736,0.083183,104.493626,-966.678492,1967.393306, + -0.097844,0.993424,0.059467,7.311798,-977.633668,1990.507106, + -0.097844,0.993424,0.059467,15.754347,-976.955453,1993.068126, + -0.097677,0.991736,0.083183,104.493626,-966.678492,1967.393306, + -0.097844,0.993424,0.059467,15.754347,-976.955453,1993.068126, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097844,0.993424,0.059467,15.754347,-976.955453,1993.068126, + -0.097844,0.993424,0.059467,23.535045,-976.438073,1997.226995, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097844,0.993424,0.059467,23.535045,-976.438073,1997.226995, + -0.097844,0.993424,0.059467,30.354884,-976.10141,2002.823893, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097844,0.993424,0.059467,30.354884,-976.10141,2002.823893, + -0.097844,0.993424,0.059467,35.951781,-975.958402,2009.643732, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097844,0.993424,0.059467,35.951781,-975.958402,2009.643732, + -0.097844,0.993424,0.059467,40.110651,-976.014545,2017.42443, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097844,0.993424,0.059467,40.110651,-976.014545,2017.42443, + -0.097844,0.993424,0.059467,42.671671,-976.267681,2025.866979, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097844,0.993424,0.059467,42.671671,-976.267681,2025.866979, + -0.097844,0.993424,0.059467,43.536421,-976.708082,2034.646937, + -0.097912,0.994118,0.046284,104.493618,-970.737561,2035.2022, + -0.097844,0.993424,0.059467,43.536421,-976.708082,2034.646937, + -0.097998,0.994989,-0.019853,43.481732,-976.746707,2035.2022 +}; +static const struct gllist robot_body_half_inside_frame = { GL_N3F_V3F, GL_TRIANGLES, 3072, robot_body_half_inside_data, 0 }; +const struct gllist *robot_body_half_inside = &robot_body_half_inside_frame; + +static const float robot_body_half_outside_data[] = { + -0.000001,0.92388,0.382683,104.49361,-876.169915,2001.235298, + -0.000001,0.973856,0.227168,180.675225,-881.220765,2017.886009, + -0.000001,0.92388,0.382683,180.675225,-876.169825,2001.235293, + -0.000001,0.973856,0.227168,180.675225,-881.220765,2017.886009, + -0.000001,0.92388,0.382683,104.49361,-876.169915,2001.235298, + -0.000001,0.986659,0.162803,104.493608,-881.220857,2017.886024, + 0,-0.707107,0.707107,180.675225,-731.403895,1972.439559, + 0,-0.812792,0.582554,104.493591,-720.36549,1985.889902, + 0,-0.707107,0.707107,104.493594,-731.403909,1972.439549, + 0,-0.812792,0.582554,104.493591,-720.36549,1985.889902, + 0,-0.707107,0.707107,180.675225,-731.403895,1972.439559, + 0,-0.849252,0.527988,180.675225,-720.365482,1985.889904, + -0.000001,0.527988,0.849252,104.493611,-843.478858,1961.40113, + -0.000001,0.412792,0.910825,180.675225,-828.133397,1953.198865, + -0.000001,0.352162,0.935939,104.49361,-828.133462,1953.198845, + -0.000001,0.412792,0.910825,180.675225,-828.133397,1953.198865, + -0.000001,0.527988,0.849252,104.493611,-843.478858,1961.40113, + -0.000001,0.582554,0.812792,180.675225,-843.478786,1961.401146, + -0.873668,-0.191744,0.447144,-778.906876,-154.934211,1614.76108, + -0.890977,-0.087754,0.445488,-878.796251,-89.364884,1427.89836, + -0.877241,-0.174494,0.447214,-870.542978,-173.161765,1427.89836, + -0.890977,-0.087754,0.445488,-878.796251,-89.364884,1427.89836, + -0.873668,-0.191744,0.447144,-778.906876,-154.934211,1614.76108, + -0.890977,-0.087754,0.445488,-794.166564,0,1614.76108, + -0.890977,-0.087754,0.445488,-878.796251,-89.364884,1427.89836, + -0.890977,-0.087754,0.445488,-794.166564,0,1614.76108, + -0.890977,-0.087754,0.445488,-887.597924,0,1427.89836, + 0.843385,-0.187656,0.503476,978.352295,-194.606371,2361.464898, + 0.777333,-0.292484,0.556961,863.20747,-357.552241,2455.64332, + 0.79057,-0.348586,0.503476,921.587711,-381.734129,2361.464898, + 0.777333,-0.292484,0.556961,863.20747,-357.552241,2455.64332, + 0.843385,-0.187656,0.503476,978.352295,-194.606371,2361.464898, + 0.795831,-0.241413,0.555314,887.227327,-278.369385,2455.64332, + 0.795831,-0.241413,0.555314,887.227327,-278.369385,2455.64332, + 0.843385,-0.187656,0.503476,978.352295,-194.606371,2361.464898, + 0.795831,-0.241413,0.555314,914.651021,-187.965581,2455.64332, + 0.795831,-0.241413,0.555314,914.651021,-187.965581,2455.64332, + 0.843385,-0.187656,0.503476,978.352295,-194.606371,2361.464898, + 0.819458,-0.135214,0.556961,916.376162,-182.278552,2455.64332, + 0.472298,-0.759676,0.447021,415.261462,-621.482696,1427.89836, + 0.369253,-0.814754,0.447021,321.791703,-776.873894,1241.03564, + 0.521108,-0.727062,0.447021,467.169144,-699.168033,1241.03564, + 0.369253,-0.814754,0.447021,321.791703,-776.873894,1241.03564, + 0.472298,-0.759676,0.447021,415.261462,-621.482696,1427.89836, + 0.315017,-0.837219,0.447021,286.03707,-690.554573,1427.89836, + -0.551707,-0.826255,-0.113678,-470.848959,-704.675266,796.15315, + -0.684138,-0.684138,-0.252806,-590.997993,-590.997993,738.078199, + -0.532672,-0.798598,-0.280182,-464.344144,-694.940121,738.078199, + -0.684138,-0.684138,-0.252806,-590.997993,-590.997993,738.078199, + -0.551707,-0.826255,-0.113678,-470.848959,-704.675266,796.15315, + -0.704523,-0.704523,-0.085417,-599.277053,-599.277053,796.15315, + 0.162803,-0.986659,0,164.047988,-824.724927,2549.07468, + 0.032813,-0.999462,0,0,-840.882244,2455.64332, + 0.227168,-0.973856,0,164.047988,-824.724927,2455.64332, + 0.032813,-0.999462,0,0,-840.882244,2455.64332, + 0.162803,-0.986659,0,164.047988,-824.724927,2549.07468, + -0.032813,-0.999462,0,0,-840.882244,2549.07468, + 0,0,-1,0,-840.882244,2549.07468, + 0,0,-1,164.047988,-824.724927,2549.07468, + 0,0,-1,126.90366,-828.383324,2549.07468, + 0,0,1,0,-840.882244,2549.07468, + 0,0,1,126.90366,-828.383324,2549.07468, + 0,0,1,42.432775,-836.70298,2549.07468, + 0.683524,-0.729928,0,594.593537,-594.593537,2549.07468, + 0.582554,-0.812792,0,467.169144,-699.168033,2455.64332, + 0.729928,-0.683524,0,594.593537,-594.593537,2455.64332, + 0.582554,-0.812792,0,467.169144,-699.168033,2455.64332, + 0.683524,-0.729928,0,594.593537,-594.593537,2549.07468, + 0.527988,-0.849252,0,467.169144,-699.168033,2549.07468, + 0,0,1,467.169144,-699.168033,2549.07468, + 0,0,1,594.593537,-594.593537,2549.07468, + 0,0,1,578.083233,-608.143192,2549.07468, + 0,0,-1,467.169144,-699.168033,2549.07468, + 0,0,-1,578.083233,-608.143192,2549.07468, + 0,0,-1,512.438727,-662.016247,2549.07468, + -0.882512,-0.08692,-0.462187,-814.429823,0,682.822311, + -0.796215,-0.15672,-0.584364,-768.954752,-152.95461,631.979457, + -0.881651,-0.17413,-0.438601,-798.780783,-158.887376,682.822311, + -0.796215,-0.15672,-0.584364,-768.954752,-152.95461,631.979457, + -0.882512,-0.08692,-0.462187,-814.429823,0,682.822311, + -0.792149,-0.07802,-0.60532,-784.019466,0,631.979457, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.208122,-0.927269,0.31122,203.671281,-1023.924672,2258.006804, + 0.393751,-0.867338,0.304443,399.515588,-964.515951,2258.006804, + 0.208122,-0.927269,0.31122,203.671281,-1023.924672,2258.006804, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.169277,-0.85787,0.485186,194.606371,-978.352295,2361.464898, + 0.292484,-0.777333,0.556961,357.552241,-863.20747,2455.64332, + 0.169277,-0.85787,0.485186,194.606371,-978.352295,2361.464898, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.169277,-0.85787,0.485186,194.606371,-978.352295,2361.464898, + 0.292484,-0.777333,0.556961,357.552241,-863.20747,2455.64332, + 0.135214,-0.819458,0.556961,182.278552,-916.376162,2455.64332, + 0,0,-1,182.278552,-916.376162,2455.64332, + 0,0,-1,357.552241,-863.20747,2455.64332, + 0,0,-1,323.520353,-873.53093,2455.64332, + 0,0,-1,182.278552,-916.376162,2455.64332, + 0,0,-1,323.520353,-873.53093,2455.64332, + 0,0,-1,233.2619,-900.910533,2455.64332, + 0.881651,-0.17413,-0.438601,798.780783,-158.887376,682.822311, + 0.947451,-0.093316,-0.305988,835.797377,0,738.078199, + 0.941653,-0.186514,-0.280182,819.737765,-163.055979,738.078199, + 0.947451,-0.093316,-0.305988,835.797377,0,738.078199, + 0.881651,-0.17413,-0.438601,798.780783,-158.887376,682.822311, + 0.882512,-0.08692,-0.462187,814.429823,0,682.822311, + -0.057894,0.301631,-0.951665,-723.842933,-790.8427,2109.126834, + -0.223394,0.469138,-0.854403,-768.60281,-861.729009,2086.282702, + 0.032027,0.211366,-0.976882,-783.644995,-846.504457,2095.122795, + -0.223394,0.469138,-0.854403,-768.60281,-861.729009,2086.282702, + -0.057894,0.301631,-0.951665,-723.842933,-790.8427,2109.126834, + -0.298975,0.546381,-0.782357,-703.270205,-808.916878,2098.19893, + -0.925561,-0.183175,0.331336,-1023.924672,-203.671281,2258.006804, + -0.976104,-0.096138,0.19488,-1072.403033,0,2148.211628, + -0.966926,-0.191862,0.168059,-1051.797109,-209.215453,2148.211628, + -0.976104,-0.096138,0.19488,-1072.403033,0,2148.211628, + -0.925561,-0.183175,0.331336,-1023.924672,-203.671281,2258.006804, + -0.929871,-0.091584,0.356303,-1043.984543,0,2258.006804, + 0.176337,-0.98433,0,279.79211,-1038.255787,2035.202177, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.146586,-0.98666,-0.07081,287.457755,-1035.930439,2011.592523, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.176337,-0.98433,0,279.79211,-1038.255787,2035.202177, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.176337,-0.98433,0,279.79211,-1038.255787,2035.202177, + 0.117205,-0.990162,0.07644,287.45777,-1035.930435,2058.811877, + 0,-0.582554,0.812792,806.222013,-670.885845,1850.699619, + 0,-0.707107,0.707107,180.675225,-637.259985,1878.295649, + 0,-0.527988,0.849252,180.675225,-670.885845,1850.699619, + 0,-0.707107,0.707107,180.675225,-637.259985,1878.295649, + 0,-0.582554,0.812792,806.222013,-670.885845,1850.699619, + 0,-0.707107,0.707107,843.013698,-637.259985,1878.295649, + 0,-0.527988,-0.849252,806.222028,-670.885845,2219.704735, + 0,-0.412792,-0.910825,180.675225,-709.249312,2240.210435, + 0,-0.582554,-0.812792,180.675225,-670.885845,2219.704735, + 0,-0.412792,-0.910825,180.675225,-709.249312,2240.210435, + 0,-0.527988,-0.849252,806.222028,-670.885845,2219.704735, + 0,-0.336778,-0.941584,767.904956,-709.249312,2240.210435, + 0,-0.336778,-0.941584,767.904956,-709.249312,2240.210435, + 0,-0.227168,-0.973856,180.675225,-750.8761,2252.837783, + 0,-0.412792,-0.910825,180.675225,-709.249312,2240.210435, + 0,-0.227168,-0.973856,180.675225,-750.8761,2252.837783, + 0,-0.336778,-0.941584,767.904956,-709.249312,2240.210435, + 0,-0.19509,-0.980785,724.871896,-750.8761,2252.837783, + 0,-0.19509,-0.980785,724.871896,-750.8761,2252.837783, + 0,-0.336778,-0.941584,767.904956,-709.249312,2240.210435, + 0,-0.290285,-0.95694,739.77113,-739.77113,2249.469127, + -0.360223,-0.872041,-0.331336,-399.515588,-964.515951,1812.397596, + -0.479152,-0.718908,-0.503571,-554.192058,-829.407027,1708.939502, + -0.329694,-0.798573,-0.503571,-381.734129,-921.587711,1708.939502, + -0.479152,-0.718908,-0.503571,-554.192058,-829.407027,1708.939502, + -0.360223,-0.872041,-0.331336,-399.515588,-964.515951,1812.397596, + -0.523429,-0.785009,-0.331336,-580.006736,-868.041423,1812.397596, + 0.376942,-0.89216,0.24893,-644.282481,-861.55593,2059.381644, + 0.314449,-0.823891,0.471514,-740.177565,-890.06034,2085.821102, + 0.392379,-0.910791,0.128444,-731.284145,-899.775643,2054.145111, + 0.314449,-0.823891,0.471514,-740.177565,-890.06034,2085.821102, + 0.376942,-0.89216,0.24893,-644.282481,-861.55593,2059.381644, + 0.267392,-0.774255,0.573613,-655.637458,-847.372595,2104.031681, + 0.702746,-0.7023,-0.113678,599.277053,-599.277053,796.15315, + 0.811513,-0.581637,0.056077,706.098253,-471.799769,855.371869, + 0.69246,-0.720397,0.039075,600.487204,-600.487204,855.371869, + 0.811513,-0.581637,0.056077,706.098253,-471.799769,855.371869, + 0.702746,-0.7023,-0.113678,599.277053,-599.277053,796.15315, + 0.826255,-0.551707,-0.113678,704.675266,-470.848959,796.15315, + 0.472298,-0.759676,0.447021,389.30762,-582.640028,1241.03564, + 0.369253,-0.814754,0.447021,303.914386,-733.714234,1054.17292, + 0.521108,-0.727062,0.447021,441.215303,-660.325365,1054.17292, + 0.369253,-0.814754,0.447021,303.914386,-733.714234,1054.17292, + 0.472298,-0.759676,0.447021,389.30762,-582.640028,1241.03564, + 0.315017,-0.837219,0.447021,268.159753,-647.394912,1241.03564, + 0.819458,-0.135214,-0.556961,916.376162,-182.278552,1614.76108, + 0.850126,-0.08373,-0.51988,997.51935,0,1708.939502, + 0.843385,-0.187656,-0.503476,978.352295,-194.606371,1708.939502, + 0.850126,-0.08373,-0.51988,997.51935,0,1708.939502, + 0.819458,-0.135214,-0.556961,916.376162,-182.278552,1614.76108, + 0.827636,-0.081515,-0.555314,925.063958,-94.069878,1614.76108, + 0.850126,-0.08373,-0.51988,997.51935,0,1708.939502, + 0.827636,-0.081515,-0.555314,925.063958,-94.069878,1614.76108, + 0.827636,-0.081515,-0.555314,934.329033,0,1614.76108, + -0.722676,-0.676733,0.140615,-594.593537,-594.593537,914.026067, + -0.811513,-0.581637,0.056077,-706.098253,-471.799769,855.371869, + -0.691243,-0.718915,0.073102,-600.487204,-600.487204,855.371869, + -0.811513,-0.581637,0.056077,-706.098253,-471.799769,855.371869, + -0.722676,-0.676733,0.140615,-594.593537,-594.593537,914.026067, + -0.840814,-0.522742,0.140615,-699.168033,-467.169144,914.026067, + 0.79057,-0.348586,-0.503476,921.587711,-381.734129,1708.939502, + 0.925561,-0.183175,-0.331336,1023.924672,-203.671281,1812.397596, + 0.872041,-0.360223,-0.331336,964.515951,-399.515588,1812.397596, + 0.925561,-0.183175,-0.331336,1023.924672,-203.671281,1812.397596, + 0.79057,-0.348586,-0.503476,921.587711,-381.734129,1708.939502, + 0.843385,-0.187656,-0.503476,978.352295,-194.606371,1708.939502, + 0.706214,-0.448152,-0.548107,-781.183382,-739.911027,2076.744949, + 0.548529,-0.297921,-0.781255,-815.31953,-815.188756,2086.221945, + 0.706214,-0.448152,-0.548107,-827.129718,-803.865138,2069.836076, + 0.548529,-0.297921,-0.781255,-815.31953,-815.188756,2086.221945, + 0.706214,-0.448152,-0.548107,-781.183382,-739.911027,2076.744949, + 0.471095,-0.222728,-0.8535,-766.822004,-754.694855,2097.204109, + 0.212519,0.031556,-0.976647,-746.579505,-772.239793,2108.608099, + 0.032027,0.211366,-0.976882,-783.644995,-846.504457,2095.122795, + 0.324878,-0.080164,-0.942352,-800.049726,-830.161694,2095.10146, + 0.032027,0.211366,-0.976882,-783.644995,-846.504457,2095.122795, + 0.212519,0.031556,-0.976647,-746.579505,-772.239793,2108.608099, + -0.057894,0.301631,-0.951665,-723.842933,-790.8427,2109.126834, + -0.298975,0.546381,-0.782357,-703.270205,-808.916878,2098.19893, + -0.464702,0.719023,-0.516777,-757.213206,-873.517548,2069.927006, + -0.223394,0.469138,-0.854403,-768.60281,-861.729009,2086.282702, + -0.464702,0.719023,-0.516777,-757.213206,-873.517548,2069.927006, + -0.298975,0.546381,-0.782357,-703.270205,-808.916878,2098.19893, + -0.450105,0.703799,-0.549611,-688.216174,-823.53445,2077.427173, + 0.471095,-0.222728,-0.8535,-766.822004,-754.694855,2097.204109, + 0.324878,-0.080164,-0.942352,-800.049726,-830.161694,2095.10146, + 0.548529,-0.297921,-0.781255,-815.31953,-815.188756,2086.221945, + 0.324878,-0.080164,-0.942352,-800.049726,-830.161694,2095.10146, + 0.471095,-0.222728,-0.8535,-766.822004,-754.694855,2097.204109, + 0.387184,-0.145107,-0.910512,-761.149822,-761.149822,2100.644855, + 0.324878,-0.080164,-0.942352,-800.049726,-830.161694,2095.10146, + 0.387184,-0.145107,-0.910512,-761.149822,-761.149822,2100.644855, + 0.212519,0.031556,-0.976647,-746.579505,-772.239793,2108.608099, + 0.349001,-0.053498,0.935594,-801.544846,-831.814429,1978.709589, + 0.49294,-0.19858,0.847098,-766.912924,-754.581509,1973.179733, + 0.568521,-0.275822,0.775053,-816.587031,-816.589878,1987.549682, + 0.49294,-0.19858,0.847098,-766.912924,-754.581509,1973.179733, + 0.349001,-0.053498,0.935594,-801.544846,-831.814429,1978.709589, + 0.410493,-0.119341,0.904021,-761.145932,-761.145932,1969.694508, + 0.410493,-0.119341,0.904021,-761.145932,-761.145932,1969.694508, + 0.349001,-0.053498,0.935594,-801.544846,-831.814429,1978.709589, + 0.237519,0.059192,0.969578,-746.546206,-772.245717,1961.599842, + -0.183175,-0.925561,-0.331336,-203.671281,-1023.924672,1812.397596, + -0.329694,-0.798573,-0.503571,-381.734129,-921.587711,1708.939502, + -0.167565,-0.847548,-0.503571,-194.606371,-978.352295,1708.939502, + -0.329694,-0.798573,-0.503571,-381.734129,-921.587711,1708.939502, + -0.183175,-0.925561,-0.331336,-203.671281,-1023.924672,1812.397596, + -0.360223,-0.872041,-0.331336,-399.515588,-964.515951,1812.397596, + 0.727062,-0.521108,0.447021,699.168033,-467.169144,1241.03564, + 0.632456,-0.632456,0.447214,528.527588,-528.527588,1427.89836, + 0.632456,-0.632456,0.447214,594.593537,-594.593537,1241.03564, + 0.632456,-0.632456,0.447214,528.527588,-528.527588,1427.89836, + 0.727062,-0.521108,0.447021,699.168033,-467.169144,1241.03564, + 0.759676,-0.472298,0.447021,621.482696,-415.261462,1427.89836, + 0.727062,-0.521108,0.447021,738.010701,-493.122985,1427.89836, + 0.632456,-0.632456,0.447214,561.560563,-561.560563,1614.76108, + 0.632456,-0.632456,0.447214,627.626511,-627.626511,1427.89836, + 0.632456,-0.632456,0.447214,561.560563,-561.560563,1614.76108, + 0.727062,-0.521108,0.447021,738.010701,-493.122985,1427.89836, + 0.759676,-0.472298,0.447021,660.325365,-441.215303,1614.76108, + 0.606233,-0.567693,-0.556961,660.670395,-660.670395,1614.76108, + 0.707373,-0.49612,-0.503476,829.407027,-554.192058,1708.939502, + 0.606593,-0.621557,-0.495693,705.352697,-705.352697,1708.939502, + 0.707373,-0.49612,-0.503476,829.407027,-554.192058,1708.939502, + 0.606233,-0.567693,-0.556961,660.670395,-660.670395,1614.76108, + 0.642867,-0.527587,-0.555314,705.689443,-605.814526,1614.76108, + 0.707373,-0.49612,-0.503476,829.407027,-554.192058,1708.939502, + 0.642867,-0.527587,-0.555314,705.689443,-605.814526,1614.76108, + 0.642867,-0.527587,-0.555314,765.568628,-532.851527,1614.76108, + 0.707373,-0.49612,-0.503476,829.407027,-554.192058,1708.939502, + 0.642867,-0.527587,-0.555314,765.568628,-532.851527,1614.76108, + 0.705336,-0.438515,-0.556961,776.866198,-519.085398,1614.76108, + 0.606593,-0.621557,-0.495693,705.352697,-705.352697,1708.939502, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.606593,-0.621557,-0.495693,705.352697,-705.352697,1708.939502, + 0.707373,-0.49612,-0.503476,829.407027,-554.192058,1708.939502, + 0.916164,-0.400805,0,776.873894,-321.791703,2455.64332, + 0.95694,-0.290285,-0,798.491403,-250.528327,2549.07468, + 0.92388,-0.382683,0,776.873894,-321.791703,2549.07468, + 0.95694,-0.290285,-0,798.491403,-250.528327,2549.07468, + 0.916164,-0.400805,0,776.873894,-321.791703,2455.64332, + 0.976753,-0.214369,-0,824.724927,-164.047988,2455.64332, + 0.95694,-0.290285,-0,798.491403,-250.528327,2549.07468, + 0.976753,-0.214369,-0,824.724927,-164.047988,2455.64332, + 0.95694,-0.290285,-0,823.172321,-169.166243,2549.07468, + 0.95694,-0.290285,-0,823.172321,-169.166243,2549.07468, + 0.976753,-0.214369,-0,824.724927,-164.047988,2455.64332, + 0.980785,-0.19509,0,824.724927,-164.047988,2549.07468, + 0,-0.19509,-0.980785,724.871896,-750.8761,2252.837783, + 0,-0.032813,-0.999462,180.675225,-794.166513,2257.101517, + 0,-0.227168,-0.973856,180.675225,-750.8761,2252.837783, + 0,-0.032813,-0.999462,180.675225,-794.166513,2257.101517, + 0,-0.19509,-0.980785,724.871896,-750.8761,2252.837783, + -0,0.032813,-0.999462,670.391152,-794.166513,2257.101517, + 0,-0.881921,-0.471397,892.684338,-596.472605,2133.803565, + 0,-0.92388,-0.382683,180.675225,-589.158255,2120.119378, + 0,-0.92388,-0.382683,897.900698,-589.158255,2120.119378, + 0,-0.92388,-0.382683,180.675225,-589.158255,2120.119378, + 0,-0.881921,-0.471397,892.684338,-596.472605,2133.803565, + 0,-0.84225,-0.539087,180.675225,-609.663955,2158.482845, + 0,-0.84225,-0.539087,180.675225,-609.663955,2158.482845, + 0,-0.881921,-0.471397,892.684338,-596.472605,2133.803565, + 0,-0.881921,-0.471397,884.794335,-604.173876,2148.211628, + 0,-0.84225,-0.539087,180.675225,-609.663955,2158.482845, + 0,-0.881921,-0.471397,884.794335,-604.173876,2148.211628, + 0,-0.83147,-0.55557,876.866129,-609.663955,2158.482845, + 0,0.352162,0.935939,653.750225,-879.083714,1830.193918, + 0,0.227168,0.973856,180.675225,-837.456927,1817.56657, + 0,0.412792,0.910825,180.675225,-879.083714,1830.193918, + 0,0.227168,0.973856,180.675225,-837.456927,1817.56657, + 0,0.352162,0.935939,653.750225,-879.083714,1830.193918, + 0,0.162803,0.986659,653.750225,-837.456927,1817.56657, + 0.636324,-0.634602,-0.438601,575.888851,-575.888851,682.822311, + 0.798598,-0.532672,-0.280182,694.940121,-464.344144,738.078199, + 0.679334,-0.678235,-0.280182,590.997993,-590.997993,738.078199, + 0.798598,-0.532672,-0.280182,694.940121,-464.344144,738.078199, + 0.636324,-0.634602,-0.438601,575.888851,-575.888851,682.822311, + 0.747902,-0.498268,-0.438601,677.173649,-452.472967,682.822311, + 0.192603,-0.882117,-0.429853,406.150723,-980.534583,1879.384872, + 0.184965,-0.925205,-0.331336,203.671281,-1023.924672,1812.397596, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.184965,-0.925205,-0.331336,203.671281,-1023.924672,1812.397596, + 0.192603,-0.882117,-0.429853,406.150723,-980.534583,1879.384872, + 0.215316,-0.958117,-0.188816,209.215453,-1051.797109,1922.192772, + 0.215316,-0.958117,-0.188816,209.215453,-1051.797109,1922.192772, + 0.192603,-0.882117,-0.429853,406.150723,-980.534583,1879.384872, + 0.115001,-0.89802,-0.424659,369.41032,-997.119327,1899.593442, + 0.215316,-0.958117,-0.188816,209.215453,-1051.797109,1922.192772, + 0.115001,-0.89802,-0.424659,369.41032,-997.119327,1899.593442, + 0.146136,-0.933668,-0.326969,349.642862,-1009.198921,1922.192772, + -0.79057,-0.348586,0.503476,-921.587711,-381.734129,2361.464898, + -0.925561,-0.183175,0.331336,-1023.924672,-203.671281,2258.006804, + -0.872041,-0.360223,0.331336,-964.515951,-399.515588,2258.006804, + -0.925561,-0.183175,0.331336,-1023.924672,-203.671281,2258.006804, + -0.79057,-0.348586,0.503476,-921.587711,-381.734129,2361.464898, + -0.843385,-0.187656,0.503476,-978.352295,-194.606371,2361.464898, + 0.979923,-0.19486,0.0422,1059.217255,-210.691412,2058.811877, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.923514,-0.382532,0.028131,997.760837,-413.286071,2058.811877, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.979923,-0.19486,0.0422,1059.217255,-210.691412,2058.811877, + 0.966926,-0.191862,0.168059,1051.797109,-209.215453,2148.211628, + -0.785009,-0.523429,0.331336,-868.041423,-580.006736,2258.006804, + -0.910916,-0.376813,0.168059,-990.771213,-410.390874,2148.211628, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.910916,-0.376813,0.168059,-990.771213,-410.390874,2148.211628, + -0.785009,-0.523429,0.331336,-868.041423,-580.006736,2258.006804, + -0.872041,-0.360223,0.331336,-964.515951,-399.515588,2258.006804, + -0.707373,-0.49612,0.503476,-829.407027,-554.192058,2361.464898, + -0.872041,-0.360223,0.331336,-964.515951,-399.515588,2258.006804, + -0.785009,-0.523429,0.331336,-868.041423,-580.006736,2258.006804, + -0.872041,-0.360223,0.331336,-964.515951,-399.515588,2258.006804, + -0.707373,-0.49612,0.503476,-829.407027,-554.192058,2361.464898, + -0.79057,-0.348586,0.503476,-921.587711,-381.734129,2361.464898, + -0.705336,-0.438515,0.556961,-776.866198,-519.085398,2455.64332, + -0.79057,-0.348586,0.503476,-921.587711,-381.734129,2361.464898, + -0.707373,-0.49612,0.503476,-829.407027,-554.192058,2361.464898, + -0.79057,-0.348586,0.503476,-921.587711,-381.734129,2361.464898, + -0.705336,-0.438515,0.556961,-776.866198,-519.085398,2455.64332, + -0.733442,-0.392033,0.555314,-813.095616,-451.304926,2455.64332, + -0.79057,-0.348586,0.503476,-921.587711,-381.734129,2361.464898, + -0.733442,-0.392033,0.555314,-813.095616,-451.304926,2455.64332, + -0.733442,-0.392033,0.555314,-857.607798,-368.02849,2455.64332, + -0.79057,-0.348586,0.503476,-921.587711,-381.734129,2361.464898, + -0.733442,-0.392033,0.555314,-857.607798,-368.02849,2455.64332, + -0.777333,-0.292484,0.556961,-863.20747,-357.552241,2455.64332, + -0.436098,0.719283,0.540788,-758.060123,-874.453748,2003.996308, + -0.505482,0.778826,0.371374,-683.32915,-829.573232,2011.592523, + -0.436098,0.719283,0.540788,-687.957453,-823.760435,1993.102587, + -0.505482,0.778826,0.371374,-683.32915,-829.573232,2011.592523, + -0.436098,0.719283,0.540788,-758.060123,-874.453748,2003.996308, + -0.544468,0.817693,0.186902,-751.507545,-880.404128,2025.39393, + -0.505482,0.778826,0.371374,-683.32915,-829.573232,2011.592523, + -0.544468,0.817693,0.186902,-751.507545,-880.404128,2025.39393, + -0.544468,0.817693,0.186902,-680.414811,-831.964968,2020.575089, + 0.057027,0.239002,0.969343,-785.140115,-848.157193,1978.730924, + 0.237519,0.059192,0.969578,-746.546206,-772.245717,1961.599842, + 0.349001,-0.053498,0.935594,-801.544846,-831.814429,1978.709589, + 0.237519,0.059192,0.969578,-746.546206,-772.245717,1961.599842, + 0.057027,0.239002,0.969343,-785.140115,-848.157193,1978.730924, + -0.033544,0.328548,0.943892,-723.636295,-790.983771,1961.015863, + -0.464702,0.719023,-0.516777,-757.213206,-873.517548,2069.927006, + -0.549387,0.812256,-0.195995,-680.521947,-831.877044,2050.149043, + -0.549387,0.812256,-0.195995,-751.210147,-880.075378,2048.545713, + -0.549387,0.812256,-0.195995,-680.521947,-831.877044,2050.149043, + -0.464702,0.719023,-0.516777,-757.213206,-873.517548,2069.927006, + -0.515137,0.768153,-0.38023,-683.397325,-829.517282,2058.811877, + -0.515137,0.768153,-0.38023,-683.397325,-829.517282,2058.811877, + -0.464702,0.719023,-0.516777,-757.213206,-873.517548,2069.927006, + -0.450105,0.703799,-0.549611,-688.216174,-823.53445,2077.427173, + 0.568521,-0.275822,0.775053,-816.587031,-816.589878,1987.549682, + 0.720221,-0.432668,0.542292,-781.308062,-739.778792,1993.802906, + 0.720221,-0.432668,0.542292,-827.976635,-804.801338,2003.905378, + 0.720221,-0.432668,0.542292,-781.308062,-739.778792,1993.802906, + 0.568521,-0.275822,0.775053,-816.587031,-816.589878,1987.549682, + 0.49294,-0.19858,0.847098,-766.912924,-754.581509,1973.179733, + -0.532672,-0.798598,-0.280182,-464.344144,-694.940121,738.078199, + -0.644016,-0.644016,-0.412901,-575.888851,-575.888851,682.822311, + -0.498268,-0.747902,-0.438601,-452.472967,-677.173649,682.822311, + -0.644016,-0.644016,-0.412901,-575.888851,-575.888851,682.822311, + -0.532672,-0.798598,-0.280182,-464.344144,-694.940121,738.078199, + -0.684138,-0.684138,-0.252806,-590.997993,-590.997993,738.078199, + 0.468978,-0.782653,-0.409285,577.578281,-864.406983,1802.66502, + 0.331547,-0.797805,-0.503571,381.734129,-921.587711,1708.939502, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.331547,-0.797805,-0.503571,381.734129,-921.587711,1708.939502, + 0.468978,-0.782653,-0.409285,577.578281,-864.406983,1802.66502, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.468978,-0.782653,-0.409285,577.578281,-864.406983,1802.66502, + 0.430365,-0.805157,-0.408054,540.896876,-887.575434,1809.693092, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.430365,-0.805157,-0.408054,540.896876,-887.575434,1809.693092, + 0.445004,-0.832543,-0.329915,533.995007,-892.635204,1812.397596, + -0.770284,-0.632155,-0.083921,-781.354664,-731.718944,1933.517963, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.75819,-0.62223,-0.19488,-761.987077,-753.814953,1922.192772, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.770284,-0.632155,-0.083921,-781.354664,-731.718944,1933.517963, + -0.770284,-0.632155,-0.083921,-804.883918,-707.527533,1967.257586, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.770284,-0.632155,-0.083921,-804.883918,-707.527533,1967.257586, + -0.772328,-0.633835,-0.041994,-818.480102,-696.846173,2011.592491, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.772328,-0.633835,-0.041994,-818.480102,-696.846173,2011.592491, + -0.841785,-0.538757,-0.033753,-897.96103,-599.998378,2011.592523, + -0.966926,-0.191862,0.168059,-1051.797109,-209.215453,2148.211628, + -0.994307,-0.097931,0.041998,-1079.968548,0,2058.811877, + -0.972989,-0.226965,0.042178,-1059.217255,-210.691412,2058.811877, + -0.994307,-0.097931,0.041998,-1079.968548,0,2058.811877, + -0.966926,-0.191862,0.168059,-1051.797109,-209.215453,2148.211628, + -0.976104,-0.096138,0.19488,-1072.403033,0,2148.211628, + 0,0,1,-832.543812,-84.66152,2549.07468, + 0,0,1,-747.450884,0,2549.07468, + 0,0,1,-840.882244,0,2549.07468, + 0,0,1,-747.450884,0,2549.07468, + 0,0,1,-832.543812,-84.66152,2549.07468, + 0,0,1,-824.724927,-164.047988,2549.07468, + 0,0,1,-747.450884,0,2549.07468, + 0,0,1,-824.724927,-164.047988,2549.07468, + 0,0,1,-823.172319,-169.16625,2549.07468, + 0,0,1,-747.450884,0,2549.07468, + 0,0,1,-823.172319,-169.16625,2549.07468, + 0,0,1,-798.491399,-250.528339,2549.07468, + 0,0,1,-747.450884,0,2549.07468, + 0,0,1,-798.491399,-250.528339,2549.07468, + 0,0,1,-776.873894,-321.791703,2549.07468, + 0,0,1,-747.450884,0,2549.07468, + 0,0,1,-776.873894,-321.791703,2549.07468, + 0,0,1,-771.834238,-331.220236,2549.07468, + 0,0,1,-747.450884,0,2549.07468, + 0,0,1,-771.834238,-331.220236,2549.07468, + 0,0,1,-731.773964,-406.167737,2549.07468, + 0,0,1,-747.450884,0,2549.07468, + 0,0,1,-731.773964,-406.167737,2549.07468, + 0,0,1,-733.088824,-145.820434,2549.07468, + 0,0,1,-733.088824,-145.820434,2549.07468, + 0,0,1,-731.773964,-406.167737,2549.07468, + 0,0,1,-690.554573,-286.03707,2549.07468, + 0,0,1,-690.554573,-286.03707,2549.07468, + 0,0,1,-731.773964,-406.167737,2549.07468, + 0,0,1,-699.168033,-467.169144,2549.07468, + 0,0,1,-690.554573,-286.03707,2549.07468, + 0,0,1,-699.168033,-467.169144,2549.07468, + 0,0,1,-689.000369,-479.558478,2549.07468, + 0,0,1,-690.554573,-286.03707,2549.07468, + 0,0,1,-689.000369,-479.558478,2549.07468, + 0,0,1,-621.482696,-415.261462,2549.07468, + 0,0,1,-621.482696,-415.261462,2549.07468, + 0,0,1,-689.000369,-479.558478,2549.07468, + 0,0,1,-635.110018,-545.224061,2549.07468, + 0,0,1,-621.482696,-415.261462,2549.07468, + 0,0,1,-635.110018,-545.224061,2549.07468, + 0,0,1,-594.593537,-594.593537,2549.07468, + 0,0,1,-621.482696,-415.261462,2549.07468, + 0,0,1,-594.593537,-594.593537,2549.07468, + 0,0,1,-528.527588,-528.527588,2549.07468, + 0,0,1,-528.527588,-528.527588,2549.07468, + 0,0,1,-594.593537,-594.593537,2549.07468, + 0,0,1,-578.083211,-608.143211,2549.07468, + 0,0,1,-528.527588,-528.527588,2549.07468, + 0,0,1,-578.083211,-608.143211,2549.07468, + 0,0,1,-512.438676,-662.016288,2549.07468, + 0,0,1,-528.527588,-528.527588,2549.07468, + 0,0,1,-512.438676,-662.016288,2549.07468, + 0,0,1,-415.261462,-621.482696,2549.07468, + 0,0,1,-415.261462,-621.482696,2549.07468, + 0,0,1,-512.438676,-662.016288,2549.07468, + 0,0,1,-467.169144,-699.168033,2549.07468, + 0,0,1,-415.261462,-621.482696,2549.07468, + 0,0,1,-467.169144,-699.168033,2549.07468, + 0,0,1,-443.63534,-711.747113,2549.07468, + 0,0,1,-415.261462,-621.482696,2549.07468, + 0,0,1,-443.63534,-711.747113,2549.07468, + 0,0,1,-368.760189,-751.768716,2549.07468, + 0,0,1,-415.261462,-621.482696,2549.07468, + 0,0,1,-368.760189,-751.768716,2549.07468, + 0,0,1,-286.03707,-690.554573,2549.07468, + 0,0,1,-286.03707,-690.554573,2549.07468, + 0,0,1,-368.760189,-751.768716,2549.07468, + 0,0,1,-321.791703,-776.873894,2549.07468, + 0,0,1,-286.03707,-690.554573,2549.07468, + 0,0,1,-321.791703,-776.873894,2549.07468, + 0,0,1,-291.163467,-786.164868,2549.07468, + 0,0,1,-286.03707,-690.554573,2549.07468, + 0,0,1,-291.163467,-786.164868,2549.07468, + 0,0,1,-209.932195,-810.806105,2549.07468, + 0,0,1,-286.03707,-690.554573,2549.07468, + 0,0,1,-209.932195,-810.806105,2549.07468, + 0,0,1,-145.820434,-733.088824,2549.07468, + 0,0,1,-145.820434,-733.088824,2549.07468, + 0,0,1,-209.932195,-810.806105,2549.07468, + 0,0,1,-164.047988,-824.724927,2549.07468, + 0,0,1,-145.820434,-733.088824,2549.07468, + 0,0,1,-164.047988,-824.724927,2549.07468, + 0,0,1,-126.903621,-828.383328,2549.07468, + 0,0,1,-145.820434,-733.088824,2549.07468, + 0,0,1,-126.903621,-828.383328,2549.07468, + 0,0,1,0,-747.450884,2549.07468, + 0,0,1,0,-747.450884,2549.07468, + 0,0,1,-126.903621,-828.383328,2549.07468, + 0,0,1,-42.432781,-836.702979,2549.07468, + 0,0,1,0,-747.450884,2549.07468, + 0,0,1,-42.432781,-836.702979,2549.07468, + 0,0,1,0,-840.882244,2549.07468, + 0,0,1,0,-747.450884,2549.07468, + 0,0,1,0,-840.882244,2549.07468, + 0,0,1,42.432775,-836.70298,2549.07468, + 0,0,1,0,-747.450884,2549.07468, + 0,0,1,42.432775,-836.70298,2549.07468, + 0,0,1,145.820434,-733.088824,2549.07468, + 0,0,1,145.820434,-733.088824,2549.07468, + 0,0,1,42.432775,-836.70298,2549.07468, + 0,0,1,126.90366,-828.383324,2549.07468, + 0,0,1,145.820434,-733.088824,2549.07468, + 0,0,1,126.90366,-828.383324,2549.07468, + 0,0,1,164.047988,-824.724927,2549.07468, + 0,0,1,145.820434,-733.088824,2549.07468, + 0,0,1,164.047988,-824.724927,2549.07468, + 0,0,1,286.03707,-690.554573,2549.07468, + 0,0,1,286.03707,-690.554573,2549.07468, + 0,0,1,164.047988,-824.724927,2549.07468, + 0,0,1,209.932273,-810.806081,2549.07468, + 0,0,1,286.03707,-690.554573,2549.07468, + 0,0,1,209.932273,-810.806081,2549.07468, + 0,0,1,291.163503,-786.164857,2549.07468, + 0,0,1,286.03707,-690.554573,2549.07468, + 0,0,1,291.163503,-786.164857,2549.07468, + 0,0,1,415.261462,-621.482696,2549.07468, + 0,0,1,415.261462,-621.482696,2549.07468, + 0,0,1,291.163503,-786.164857,2549.07468, + 0,0,1,321.791703,-776.873894,2549.07468, + 0,0,1,415.261462,-621.482696,2549.07468, + 0,0,1,321.791703,-776.873894,2549.07468, + 0,0,1,368.760184,-751.768718,2549.07468, + 0,0,1,415.261462,-621.482696,2549.07468, + 0,0,1,368.760184,-751.768718,2549.07468, + 0,0,1,443.635404,-711.747079,2549.07468, + 0,0,1,415.261462,-621.482696,2549.07468, + 0,0,1,443.635404,-711.747079,2549.07468, + 0,0,1,528.527588,-528.527588,2549.07468, + 0,0,1,528.527588,-528.527588,2549.07468, + 0,0,1,443.635404,-711.747079,2549.07468, + 0,0,1,467.169144,-699.168033,2549.07468, + 0,0,1,528.527588,-528.527588,2549.07468, + 0,0,1,467.169144,-699.168033,2549.07468, + 0,0,1,512.438727,-662.016247,2549.07468, + 0,0,1,528.527588,-528.527588,2549.07468, + 0,0,1,512.438727,-662.016247,2549.07468, + 0,0,1,578.083233,-608.143192,2549.07468, + 0,0,1,528.527588,-528.527588,2549.07468, + 0,0,1,578.083233,-608.143192,2549.07468, + 0,0,1,621.482696,-415.261462,2549.07468, + 0,0,1,621.482696,-415.261462,2549.07468, + 0,0,1,578.083233,-608.143192,2549.07468, + 0,0,1,594.593537,-594.593537,2549.07468, + 0,0,1,621.482696,-415.261462,2549.07468, + 0,0,1,594.593537,-594.593537,2549.07468, + 0,0,1,635.110016,-545.224064,2549.07468, + 0,0,1,621.482696,-415.261462,2549.07468, + 0,0,1,635.110016,-545.224064,2549.07468, + 0,0,1,690.554573,-286.03707,2549.07468, + 0,0,1,690.554573,-286.03707,2549.07468, + 0,0,1,635.110016,-545.224064,2549.07468, + 0,0,1,689.000383,-479.558461,2549.07468, + 0,0,1,690.554573,-286.03707,2549.07468, + 0,0,1,689.000383,-479.558461,2549.07468, + 0,0,1,699.168033,-467.169144,2549.07468, + 0,0,1,690.554573,-286.03707,2549.07468, + 0,0,1,699.168033,-467.169144,2549.07468, + 0,0,1,733.088824,-145.820434,2549.07468, + 0,0,1,733.088824,-145.820434,2549.07468, + 0,0,1,699.168033,-467.169144,2549.07468, + 0,0,1,731.773963,-406.167739,2549.07468, + 0,0,1,733.088824,-145.820434,2549.07468, + 0,0,1,731.773963,-406.167739,2549.07468, + 0,0,1,771.834246,-331.220222,2549.07468, + 0,0,1,733.088824,-145.820434,2549.07468, + 0,0,1,771.834246,-331.220222,2549.07468, + 0,0,1,747.450884,0,2549.07468, + 0,0,1,747.450884,0,2549.07468, + 0,0,1,771.834246,-331.220222,2549.07468, + 0,0,1,840.882244,0,2549.07468, + 0,0,1,840.882244,0,2549.07468, + 0,0,1,771.834246,-331.220222,2549.07468, + 0,0,1,776.873894,-321.791703,2549.07468, + 0,0,1,840.882244,0,2549.07468, + 0,0,1,776.873894,-321.791703,2549.07468, + 0,0,1,798.491403,-250.528327,2549.07468, + 0,0,1,840.882244,0,2549.07468, + 0,0,1,798.491403,-250.528327,2549.07468, + 0,0,1,823.172321,-169.166243,2549.07468, + 0,0,1,840.882244,0,2549.07468, + 0,0,1,823.172321,-169.166243,2549.07468, + 0,0,1,824.724927,-164.047988,2549.07468, + 0,0,1,840.882244,0,2549.07468, + 0,0,1,824.724927,-164.047988,2549.07468, + 0,0,1,832.543812,-84.661515,2549.07468, + 0.832671,-0.532692,-0.151323,891.670534,-595.795203,1922.192772, + 0.828508,-0.553591,-0.084324,892.684335,-596.472603,1936.600792, + 0.75819,-0.62223,-0.19488,884.794356,-604.173851,1922.192772, + 0.832671,-0.532692,-0.151323,891.670534,-595.795203,1922.192772, + 0.87881,-0.469734,-0.083921,897.900693,-589.158255,1950.284976, + 0.828508,-0.553591,-0.084324,892.684335,-596.472603,1936.600792, + 0.87881,-0.469734,-0.083921,897.900693,-589.158255,1950.284976, + 0.832671,-0.532692,-0.151323,891.670534,-595.795203,1922.192772, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.87881,-0.469734,-0.083921,897.900693,-589.158255,1950.284976, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.87881,-0.469734,-0.083921,908.62526,-576.530907,1991.911763, + 0.87881,-0.469734,-0.083921,908.62526,-576.530907,1991.911763, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.880538,-0.470657,-0.055991,911.540742,-574.592523,2011.592523, + 0.880538,-0.470657,-0.055991,911.540742,-574.592523,2011.592523, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.91563,-0.400602,-0.033753,997.760837,-413.286071,2011.592523, + 0.702746,-0.7023,-0.113678,599.277053,-599.277053,796.15315, + 0.533964,-0.797735,-0.280182,464.344144,-694.940121,738.078199, + 0.679334,-0.678235,-0.280182,590.997993,-590.997993,738.078199, + 0.533964,-0.797735,-0.280182,464.344144,-694.940121,738.078199, + 0.702746,-0.7023,-0.113678,599.277053,-599.277053,796.15315, + 0.552231,-0.825905,-0.113678,470.848959,-704.675266,796.15315, + 0,-0.849252,0.527988,180.675225,-720.365482,1985.889904, + 0,-0.92388,0.382683,104.493588,-712.163205,2001.235298, + 0,-0.812792,0.582554,104.493591,-720.36549,1985.889902, + 0,-0.92388,0.382683,104.493588,-712.163205,2001.235298, + 0,-0.849252,0.527988,180.675225,-720.365482,1985.889904, + 0,-0.92388,0.382683,180.675225,-712.163201,2001.235293, + -0.747902,-0.498268,-0.438601,-677.173649,-452.472967,682.822311, + -0.586347,-0.571185,-0.574408,-554.385481,-554.385481,631.979457, + -0.644016,-0.644016,-0.412901,-575.888851,-575.888851,682.822311, + -0.586347,-0.571185,-0.574408,-554.385481,-554.385481,631.979457, + -0.747902,-0.498268,-0.438601,-677.173649,-452.472967,682.822311, + -0.692236,-0.442144,-0.570366,-651.888362,-435.577878,631.979457, + -0.798598,-0.532672,-0.280182,-694.940121,-464.344144,738.078199, + -0.644016,-0.644016,-0.412901,-575.888851,-575.888851,682.822311, + -0.684138,-0.684138,-0.252806,-590.997993,-590.997993,738.078199, + -0.644016,-0.644016,-0.412901,-575.888851,-575.888851,682.822311, + -0.798598,-0.532672,-0.280182,-694.940121,-464.344144,738.078199, + -0.747902,-0.498268,-0.438601,-677.173649,-452.472967,682.822311, + 0.903939,-0,-0.427662,-43.046973,-1075.728791,2051.869445, + 0.849252,-0,-0.527988,-38.888103,-1076.067465,2059.650143, + 0.881921,-0,-0.471397,-39.336165,-1076.094273,2058.811877, + 0.849252,-0,-0.527988,-38.888103,-1076.067465,2059.650143, + 0.903939,-0,-0.427662,-43.046973,-1075.728791,2051.869445, + 0.83147,-0,-0.55557,-38.888103,-975.735676,2059.650143, + 0.83147,-0,-0.55557,-38.888103,-975.735676,2059.650143, + 0.903939,-0,-0.427662,-43.046973,-1075.728791,2051.869445, + 0.935939,0,-0.352162,-43.046973,-975.791819,2051.869445, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.770284,-0.632156,0.083915,-780.975409,-732.347203,2135.633781, + -0.75819,-0.62223,0.194878,-759.379832,-756.991889,2148.211628, + -0.770284,-0.632156,0.083915,-780.975409,-732.347203,2135.633781, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.770287,-0.632154,0.083906,-804.422958,-708.167768,2102.551876, + -0.770287,-0.632154,0.083906,-804.422958,-708.167768,2102.551876, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.771796,-0.633401,0.055987,-818.273878,-697.096462,2058.801607, + -0.771796,-0.633401,0.055987,-818.273878,-697.096462,2058.801607, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.819881,-0.571538,0.033755,-897.96103,-599.998378,2058.811877, + -0.567399,-0.80612,-0.168011,-595.795203,-891.670534,1922.192772, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.523429,-0.785009,-0.331336,-580.006736,-868.041423,1812.397596, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.567399,-0.80612,-0.168011,-595.795203,-891.670534,1922.192772, + -0.61434,-0.748575,-0.249443,-712.20051,-793.069744,1912.981477, + -0.61434,-0.748575,-0.249443,-712.20051,-793.069744,1912.981477, + -0.567399,-0.80612,-0.168011,-595.795203,-891.670534,1922.192772, + -0.625455,-0.762119,-0.167272,-697.040319,-808.580815,1922.192772, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.61434,-0.748575,-0.249443,-750.03201,-762.726244,1915.0942, + -0.684548,-0.684548,-0.250574,-757.858868,-757.858868,1919.763614, + -0.61434,-0.748575,-0.249443,-750.03201,-762.726244,1915.0942, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.61434,-0.748575,-0.249443,-712.20051,-793.069744,1912.981477, + -0.567399,-0.80612,-0.168011,-595.795203,-891.670534,1922.192772, + -0.632155,-0.770284,-0.083921,-679.407718,-824.046894,1931.329012, + -0.625455,-0.762119,-0.167272,-697.040319,-808.580815,1922.192772, + -0.632155,-0.770284,-0.083921,-679.407718,-824.046894,1931.329012, + -0.567399,-0.80612,-0.168011,-595.795203,-891.670534,1922.192772, + -0.575005,-0.816448,-0.052732,-599.998378,-897.96103,2011.592523, + -0.632155,-0.770284,-0.083921,-679.407718,-824.046894,1931.329012, + -0.575005,-0.816448,-0.052732,-599.998378,-897.96103,2011.592523, + -0.632155,-0.770284,-0.083921,-654.791104,-848.015122,1965.894902, + -0.632155,-0.770284,-0.083921,-654.791104,-848.015122,1965.894902, + -0.575005,-0.816448,-0.052732,-599.998378,-897.96103,2011.592523, + -0.632155,-0.770284,-0.083921,-643.970452,-861.831591,2011.202527, + -0.632155,-0.770284,-0.083921,-643.970452,-861.831591,2011.202527, + -0.575005,-0.816448,-0.052732,-599.998378,-897.96103,2011.592523, + -0.634145,-0.772707,-0.027996,-644.00684,-861.844218,2011.592523, + 0.700074,-0.700074,0.140689,594.593537,-594.593537,914.026067, + 0.554566,-0.830246,0.056107,471.799769,-706.098253,855.371869, + 0.69246,-0.720397,0.039075,600.487204,-600.487204,855.371869, + 0.554566,-0.830246,0.056107,471.799769,-706.098253,855.371869, + 0.700074,-0.700074,0.140689,594.593537,-594.593537,914.026067, + 0.522742,-0.840814,0.140615,467.169144,-699.168033,914.026067, + 0.349653,-0.487843,0.799845,467.169144,-699.168033,914.026067, + 0.410255,-0.438107,0.799845,462.46164,-462.46164,1054.17292, + 0.316902,-0.509726,0.799845,363.353779,-543.79736,1054.17292, + 0.410255,-0.438107,0.799845,462.46164,-462.46164,1054.17292, + 0.349653,-0.487843,0.799845,467.169144,-699.168033,914.026067, + 0.438107,-0.410255,0.799845,594.593537,-594.593537,914.026067, + 0.632456,-0.632456,0.447214,495.494614,-495.494614,1241.03564, + 0.521108,-0.727062,0.447021,441.215303,-660.325365,1054.17292, + 0.632456,-0.632456,0.447214,561.560563,-561.560563,1054.17292, + 0.521108,-0.727062,0.447021,441.215303,-660.325365,1054.17292, + 0.632456,-0.632456,0.447214,495.494614,-495.494614,1241.03564, + 0.472298,-0.759676,0.447021,389.30762,-582.640028,1241.03564, + 0.632456,-0.632456,0.447214,528.527588,-528.527588,1427.89836, + 0.521108,-0.727062,0.447021,467.169144,-699.168033,1241.03564, + 0.632456,-0.632456,0.447214,594.593537,-594.593537,1241.03564, + 0.521108,-0.727062,0.447021,467.169144,-699.168033,1241.03564, + 0.632456,-0.632456,0.447214,528.527588,-528.527588,1427.89836, + 0.472298,-0.759676,0.447021,415.261462,-621.482696,1427.89836, + -0.819458,-0.135214,0.556961,-916.376162,-182.278552,2455.64332, + -0.850126,-0.08373,0.51988,-997.51935,0,2361.464898, + -0.843385,-0.187656,0.503476,-978.352295,-194.606371,2361.464898, + -0.850126,-0.08373,0.51988,-997.51935,0,2361.464898, + -0.819458,-0.135214,0.556961,-916.376162,-182.278552,2455.64332, + -0.827636,-0.081515,0.555314,-925.063958,-94.069883,2455.64332, + -0.850126,-0.08373,0.51988,-997.51935,0,2361.464898, + -0.827636,-0.081515,0.555314,-925.063958,-94.069883,2455.64332, + -0.827636,-0.081515,0.555314,-934.329033,0,2455.64332, + -0.644814,-0.619901,0.447144,-561.560563,-561.560563,1614.76108, + -0.692067,-0.567965,0.445488,-670.393897,-575.514299,1427.89836, + -0.632456,-0.632456,0.447214,-627.626511,-627.626511,1427.89836, + -0.692067,-0.567965,0.445488,-670.393897,-575.514299,1427.89836, + -0.644814,-0.619901,0.447144,-561.560563,-561.560563,1614.76108, + -0.692067,-0.567965,0.445488,-727.278191,-506.200587,1427.89836, + -0.692067,-0.567965,0.445488,-727.278191,-506.200587,1427.89836, + -0.644814,-0.619901,0.447144,-561.560563,-561.560563,1614.76108, + -0.743689,-0.496917,0.447214,-660.325365,-441.215303,1614.76108, + -0.692067,-0.567965,0.445488,-727.278191,-506.200587,1427.89836, + -0.743689,-0.496917,0.447214,-660.325365,-441.215303,1614.76108, + -0.743689,-0.496917,0.447214,-738.010701,-493.122985,1427.89836, + 0.850126,-0.08373,0.51988,997.51935,0,2361.464898, + 0.819458,-0.135214,0.556961,916.376162,-182.278552,2455.64332, + 0.843385,-0.187656,0.503476,978.352295,-194.606371,2361.464898, + 0.819458,-0.135214,0.556961,916.376162,-182.278552,2455.64332, + 0.850126,-0.08373,0.51988,997.51935,0,2361.464898, + 0.827636,-0.081515,0.555314,925.063958,-94.069877,2455.64332, + 0.827636,-0.081515,0.555314,925.063958,-94.069877,2455.64332, + 0.850126,-0.08373,0.51988,997.51935,0,2361.464898, + 0.827636,-0.081515,0.555314,934.329033,0,2455.64332, + 0.091725,-0.593783,0.79938,-757.051053,-872.595836,2110.051763, + -0.079281,-0.419958,0.904074,-713.051374,-793.031289,2155.442781, + -0.164361,-0.334551,0.927934,-779.335772,-850.040945,2123.148196, + -0.079281,-0.419958,0.904074,-713.051374,-793.031289,2155.442781, + 0.091725,-0.593783,0.79938,-757.051053,-872.595836,2110.051763, + 0.005714,-0.4979,0.867215,-700.811797,-805.485643,2148.211628, + 0.005714,-0.4979,0.867215,-700.811797,-805.485643,2148.211628, + 0.091725,-0.593783,0.79938,-757.051053,-872.595836,2110.051763, + 0.113282,-0.616155,0.779436,-680.351355,-823.413171,2137.783955, + -0.453201,-0.045611,0.890241,-803.639077,-825.829444,2123.116588, + -0.617596,0.111962,0.778485,-780.975409,-732.347203,2135.633781, + -0.617596,0.111962,0.778485,-826.261008,-803.647314,2109.961752, + -0.617596,0.111962,0.778485,-780.975409,-732.347203,2135.633781, + -0.453201,-0.045611,0.890241,-803.639077,-825.829444,2123.116588, + -0.49905,0.004957,0.866559,-759.379832,-756.991889,2148.211628, + -0.49905,0.004957,0.866559,-759.379832,-756.991889,2148.211628, + -0.453201,-0.045611,0.890241,-803.639077,-825.829444,2123.116588, + -0.49905,0.004957,0.866559,-758.175253,-758.175253,2148.912113, + -0.49905,0.004957,0.866559,-758.175253,-758.175253,2148.912113, + -0.453201,-0.045611,0.890241,-803.639077,-825.829444,2123.116588, + -0.335138,-0.164419,0.927712,-750.226481,-763.163738,2153.518338, + -0.554824,-0.830073,0.056107,-471.799769,-706.098253,855.371869, + -0.704523,-0.704523,-0.085417,-599.277053,-599.277053,796.15315, + -0.551707,-0.826255,-0.113678,-470.848959,-704.675266,796.15315, + -0.704523,-0.704523,-0.085417,-599.277053,-599.277053,796.15315, + -0.554824,-0.830073,0.056107,-471.799769,-706.098253,855.371869, + -0.691243,-0.718915,0.073102,-600.487204,-600.487204,855.371869, + 0.169277,-0.85787,0.485186,194.606371,-978.352295,2361.464898, + -0.000913,-0.943512,0.331336,0,-1043.984543,2258.006804, + 0.208122,-0.927269,0.31122,203.671281,-1023.924672,2258.006804, + -0.000913,-0.943512,0.331336,0,-1043.984543,2258.006804, + 0.169277,-0.85787,0.485186,194.606371,-978.352295,2361.464898, + -0.001338,-0.87441,0.485186,0,-997.51935,2361.464898, + -0.617596,0.111962,0.778485,-780.975409,-732.347203,2135.633781, + -0.776009,0.265205,0.572256,-843.757583,-786.871584,2085.686391, + -0.617596,0.111962,0.778485,-826.261008,-803.647314,2109.961752, + -0.776009,0.265205,0.572256,-843.757583,-786.871584,2085.686391, + -0.617596,0.111962,0.778485,-780.975409,-732.347203,2135.633781, + -0.825684,0.31192,0.470055,-804.422958,-708.167768,2102.551876, + -0.772331,-0.633831,-0.041995,-786.927339,-735.293322,2011.59251, + -0.704588,-0.704588,-0.084324,-761.145932,-761.145932,1969.694508, + -0.688905,-0.723623,-0.042187,-763.653083,-763.653083,2011.592523, + -0.704588,-0.704588,-0.084324,-761.145932,-761.145932,1969.694508, + -0.772331,-0.633831,-0.041995,-786.927339,-735.293322,2011.59251, + -0.770284,-0.632155,-0.083921,-766.912924,-754.581509,1973.179733, + -0.770284,-0.632155,-0.083921,-766.912924,-754.581509,1973.179733, + -0.772331,-0.633831,-0.041995,-786.927339,-735.293322,2011.59251, + -0.770284,-0.632155,-0.083921,-781.308062,-739.778792,1993.802906, + -0.511487,-0.733787,0.447144,-441.215303,-660.325365,1614.76108, + -0.567965,-0.692067,0.445488,-540.907488,-698.794973,1427.89836, + -0.496917,-0.743689,0.447214,-493.122985,-738.010701,1427.89836, + -0.567965,-0.692067,0.445488,-540.907488,-698.794973,1427.89836, + -0.511487,-0.733787,0.447144,-441.215303,-660.325365,1614.76108, + -0.567965,-0.692067,0.445488,-610.198918,-641.928967,1427.89836, + -0.567965,-0.692067,0.445488,-610.198918,-641.928967,1427.89836, + -0.644814,-0.619901,0.447144,-561.560563,-561.560563,1614.76108, + -0.632456,-0.632456,0.447214,-627.626511,-627.626511,1427.89836, + -0.644814,-0.619901,0.447144,-561.560563,-561.560563,1614.76108, + -0.567965,-0.692067,0.445488,-610.198918,-641.928967,1427.89836, + -0.511487,-0.733787,0.447144,-441.215303,-660.325365,1614.76108, + -0.376813,-0.910916,-0.168059,-410.390874,-990.771213,1922.192772, + -0.523429,-0.785009,-0.331336,-580.006736,-868.041423,1812.397596, + -0.360223,-0.872041,-0.331336,-399.515588,-964.515951,1812.397596, + -0.523429,-0.785009,-0.331336,-580.006736,-868.041423,1812.397596, + -0.376813,-0.910916,-0.168059,-410.390874,-990.771213,1922.192772, + -0.567399,-0.80612,-0.168011,-595.795203,-891.670534,1922.192772, + -0.382289,-0.923079,-0.0422,-413.286071,-997.760837,2011.592523, + -0.567399,-0.80612,-0.168011,-595.795203,-891.670534,1922.192772, + -0.376813,-0.910916,-0.168059,-410.390874,-990.771213,1922.192772, + -0.567399,-0.80612,-0.168011,-595.795203,-891.670534,1922.192772, + -0.382289,-0.923079,-0.0422,-413.286071,-997.760837,2011.592523, + -0.575005,-0.816448,-0.052732,-599.998378,-897.96103,2011.592523, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.376813,-0.910916,-0.168059,-410.390874,-990.771213,1922.192772, + -0.168431,-0.974672,-0.147124,-209.215453,-1051.797109,1922.192772, + -0.376813,-0.910916,-0.168059,-410.390874,-990.771213,1922.192772, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.382289,-0.923079,-0.0422,-413.286071,-997.760837,2011.592523, + -0.171901,-0.857347,0.485186,-194.606371,-978.352295,2361.464898, + -0.36191,-0.871342,0.331336,-399.515588,-964.515951,2258.006804, + -0.184965,-0.925205,0.331336,-203.671281,-1023.924672,2258.006804, + -0.36191,-0.871342,0.331336,-399.515588,-964.515951,2258.006804, + -0.171901,-0.857347,0.485186,-194.606371,-978.352295,2361.464898, + -0.335858,-0.807337,0.485186,-381.734129,-921.587711,2361.464898, + -0.881921,-0.471397,-0,-731.773964,-406.167737,2549.07468, + -0.820367,-0.571838,-0,-699.168033,-467.169144,2455.64332, + -0.83147,-0.55557,-0,-699.168033,-467.169144,2549.07468, + -0.820367,-0.571838,-0,-699.168033,-467.169144,2455.64332, + -0.881921,-0.471397,-0,-731.773964,-406.167737,2549.07468, + -0.916164,-0.400805,-0,-776.873894,-321.791703,2455.64332, + -0.916164,-0.400805,-0,-776.873894,-321.791703,2455.64332, + -0.881921,-0.471397,-0,-731.773964,-406.167737,2549.07468, + -0.881921,-0.471397,-0,-771.834238,-331.220236,2549.07468, + -0.916164,-0.400805,-0,-776.873894,-321.791703,2455.64332, + -0.881921,-0.471397,-0,-771.834238,-331.220236,2549.07468, + -0.92388,-0.382683,-0,-776.873894,-321.791703,2549.07468, + -0.972323,-0.22681,0.056077,-832.899679,-165.674047,855.371869, + -0.918011,-0.379912,-0.113678,-782.993204,-324.326404,796.15315, + -0.909392,-0.412143,0.056077,-784.574342,-324.981333,855.371869, + -0.918011,-0.379912,-0.113678,-782.993204,-324.326404,796.15315, + -0.972323,-0.22681,0.056077,-832.899679,-165.674047,855.371869, + -0.974489,-0.193517,-0.113678,-831.221151,-165.340167,796.15315, + 0.147851,-0.963743,-0.222127,320.792433,-1019.675597,1941.793256, + 0.215316,-0.958117,-0.188816,209.215453,-1051.797109,1922.192772, + 0.146136,-0.933668,-0.326969,349.642862,-1009.198921,1922.192772, + 0.215316,-0.958117,-0.188816,209.215453,-1051.797109,1922.192772, + 0.147851,-0.963743,-0.222127,320.792433,-1019.675597,1941.793256, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.147851,-0.963743,-0.222127,320.792433,-1019.675597,1941.793256, + 0.117291,-0.984202,-0.132626,288.287532,-1033.56568,1987.582722, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.117291,-0.984202,-0.132626,288.287532,-1033.56568,1987.582722, + 0.146586,-0.98666,-0.07081,287.457755,-1035.930439,2011.592523, + 0.62118,-0.639379,0.453133,705.352697,-705.352697,2361.464898, + 0.598874,-0.72973,0.329915,653.750225,-807.521706,2258.006804, + 0.665498,-0.684813,0.29689,738.20855,-738.20855,2258.006804, + 0.598874,-0.72973,0.329915,653.750225,-807.521706,2258.006804, + 0.62118,-0.639379,0.453133,705.352697,-705.352697,2361.464898, + 0.579174,-0.705726,0.408054,653.750225,-795.278128,2279.181966, + 0.579174,-0.705726,0.408054,600.307509,-841.785968,2274.601344, + 0.51982,-0.710547,0.474247,554.192058,-829.407027,2361.464898, + 0.481686,-0.774776,0.409514,577.578294,-864.407003,2267.739328, + 0.51982,-0.710547,0.474247,554.192058,-829.407027,2361.464898, + 0.579174,-0.705726,0.408054,600.307509,-841.785968,2274.601344, + 0.579174,-0.705726,0.408054,653.750225,-795.278128,2279.181966, + 0.51982,-0.710547,0.474247,554.192058,-829.407027,2361.464898, + 0.579174,-0.705726,0.408054,653.750225,-795.278128,2279.181966, + 0.62118,-0.639379,0.453133,705.352697,-705.352697,2361.464898, + 0.720221,-0.432668,0.542292,-781.308062,-739.778792,1993.802906, + 0.803422,-0.523835,0.283037,-833.979694,-798.243508,2025.286671, + 0.720221,-0.432668,0.542292,-827.976635,-804.801338,2003.905378, + 0.803422,-0.523835,0.283037,-833.979694,-798.243508,2025.286671, + 0.720221,-0.432668,0.542292,-781.308062,-739.778792,1993.802906, + 0.780247,-0.502047,0.373046,-786.927339,-735.293322,2011.59251, + 0.803422,-0.523835,0.283037,-833.979694,-798.243508,2025.286671, + 0.780247,-0.502047,0.373046,-786.927339,-735.293322,2011.59251, + 0.82593,-0.549829,0.124608,-789.394717,-732.286733,2020.799449, + -0.032813,-0,-0.999462,-1.468161,-978.223928,2079.651519, + -0.098017,-0,-0.995185,0,-1078.217216,2079.506918, + 0.032813,-0,-0.999462,-1.468161,-1078.060378,2079.651519, + -0.098017,-0,-0.995185,0,-1078.217216,2079.506918, + -0.032813,-0,-0.999462,-1.468161,-978.223928,2079.651519, + -0.098017,-0,-0.995185,0,-978.377185,2079.506918, + -0.098017,-0,-0.995185,0,-1078.217216,2079.506918, + -0.098017,-0,-0.995185,0,-978.377185,2079.506918, + -0.162803,-0,-0.986659,7.311798,-977.700144,2078.786769, + -0.098017,-0,-0.995185,0,-1078.217216,2079.506918, + -0.162803,-0,-0.986659,7.311798,-977.700144,2078.786769, + -0.227168,0,-0.973856,7.311798,-1077.55801,2078.786769, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.748575,-0.61434,-0.249443,767.904941,-709.249312,1830.193918, + 0.684548,-0.684548,-0.250574,739.771122,-739.771122,1820.935228, + 0.748575,-0.61434,-0.249443,767.904941,-709.249312,1830.193918, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.748575,-0.61434,-0.249443,767.904941,-709.249312,1830.193918, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.748575,-0.61434,-0.249443,806.222013,-670.885845,1850.699619, + 0.748575,-0.61434,-0.249443,806.222013,-670.885845,1850.699619, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.748575,-0.61434,-0.249443,843.013698,-637.259985,1878.295649, + 0.748575,-0.61434,-0.249443,843.013698,-637.259985,1878.295649, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.748575,-0.61434,-0.249443,876.866113,-609.663955,1911.921509, + 0.748575,-0.61434,-0.249443,876.866113,-609.663955,1911.921509, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.75819,-0.62223,-0.19488,884.794356,-604.173851,1922.192772, + 0.75819,-0.62223,-0.19488,884.794356,-604.173851,1922.192772, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.832671,-0.532692,-0.151323,891.670534,-595.795203,1922.192772, + -0.592199,-0.097715,0.799845,-824.724927,-164.047988,914.026067, + -0.598955,-0.058992,0.798607,-654.019524,0,1054.17292, + -0.598955,-0.058992,0.798607,-840.882244,0,914.026067, + -0.598955,-0.058992,0.798607,-654.019524,0,1054.17292, + -0.592199,-0.097715,0.799845,-824.724927,-164.047988,914.026067, + -0.584514,-0.136347,0.799845,-641.452722,-127.592879,1054.17292, + -0.976104,-0.096138,-0.19488,-1072.403033,0,1922.192772, + -0.925561,-0.183175,-0.331336,-1023.924672,-203.671281,1812.397596, + -0.966926,-0.191862,-0.168059,-1051.797109,-209.215453,1922.192772, + -0.925561,-0.183175,-0.331336,-1023.924672,-203.671281,1812.397596, + -0.976104,-0.096138,-0.19488,-1072.403033,0,1922.192772, + -0.929871,-0.091584,-0.356303,-1043.984543,0,1812.397596, + -0.976856,-0.161185,0.140615,-824.724927,-164.047988,914.026067, + -0.993632,-0.097864,0.055838,-849.217148,0,855.371869, + -0.972323,-0.22681,0.056077,-832.899679,-165.674047,855.371869, + -0.993632,-0.097864,0.055838,-849.217148,0,855.371869, + -0.976856,-0.161185,0.140615,-824.724927,-164.047988,914.026067, + -0.98538,-0.097051,0.140025,-840.882244,0,914.026067, + 0.208122,-0.927269,0.31122,203.671281,-1023.924672,2258.006804, + -0.000463,-0.985777,0.168059,0,-1072.403033,2148.211628, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + -0.000463,-0.985777,0.168059,0,-1072.403033,2148.211628, + 0.208122,-0.927269,0.31122,203.671281,-1023.924672,2258.006804, + -0.000913,-0.943512,0.331336,0,-1043.984543,2258.006804, + 0.352162,-0.935939,0,321.791703,-776.873894,2549.07468, + 0.227168,-0.973856,0,164.047988,-824.724927,2455.64332, + 0.412792,-0.910825,0,321.791703,-776.873894,2455.64332, + 0.227168,-0.973856,0,164.047988,-824.724927,2455.64332, + 0.352162,-0.935939,0,321.791703,-776.873894,2549.07468, + 0.162803,-0.986659,0,164.047988,-824.724927,2549.07468, + 0,0,1,164.047988,-824.724927,2549.07468, + 0,0,1,321.791703,-776.873894,2549.07468, + 0,0,1,291.163503,-786.164857,2549.07468, + 0,0,1,164.047988,-824.724927,2549.07468, + 0,0,1,291.163503,-786.164857,2549.07468, + 0,0,1,209.932273,-810.806081,2549.07468, + 0,0.162803,0.986659,653.750225,-837.456927,1817.56657, + 0,0.049186,0.99879,180.675225,-794.166513,1813.302837, + 0,0.227168,0.973856,180.675225,-837.456927,1817.56657, + 0,0.049186,0.99879,180.675225,-794.166513,1813.302837, + 0,0.162803,0.986659,653.750225,-837.456927,1817.56657, + 0,0.098017,0.995185,653.750225,-808.286776,1814.693561, + 0,-0.032813,0.999462,670.391133,-794.166513,1813.302837, + 0,0.049186,0.99879,180.675225,-794.166513,1813.302837, + 0,0.098017,0.995185,653.750225,-808.286776,1814.693561, + 0,-0.812792,0.582554,876.866113,-609.663955,1911.921509, + 0,-0.707107,0.707107,180.675225,-637.259985,1878.295649, + 0,-0.707107,0.707107,843.013698,-637.259985,1878.295649, + 0,-0.707107,0.707107,180.675225,-637.259985,1878.295649, + 0,-0.812792,0.582554,876.866113,-609.663955,1911.921509, + -0,-0.849252,0.527988,180.675225,-609.663955,1911.921509, + -0.438107,-0.410255,0.799845,-594.593537,-594.593537,914.026067, + -0.487843,-0.349653,0.799845,-543.79736,-363.353779,1054.17292, + -0.509726,-0.316902,0.799845,-699.168033,-467.169144,914.026067, + -0.487843,-0.349653,0.799845,-543.79736,-363.353779,1054.17292, + -0.438107,-0.410255,0.799845,-594.593537,-594.593537,914.026067, + -0.410255,-0.438107,0.799845,-462.46164,-462.46164,1054.17292, + 0.19509,-0,-0.980785,-10.248119,-977.410942,2078.786769, + 0.382683,-0,-0.92388,-18.690668,-1076.654017,2076.225749, + 0.382683,0,-0.92388,-18.690668,-976.732727,2076.225749, + 0.382683,-0,-0.92388,-18.690668,-1076.654017,2076.225749, + 0.19509,-0,-0.980785,-10.248119,-977.410942,2078.786769, + 0.19509,-0,-0.980785,-10.248119,-1077.268807,2078.786769, + 0,-0.973856,-0.227168,908.625264,-576.530907,2078.49259, + 0,-0.92388,-0.382683,180.675225,-589.158255,2120.119378, + 0,-0.989194,-0.146613,180.675225,-576.530907,2078.49259, + 0,-0.92388,-0.382683,180.675225,-589.158255,2120.119378, + 0,-0.973856,-0.227168,908.625264,-576.530907,2078.49259, + 0,-0.92388,-0.382683,897.900698,-589.158255,2120.119378, + 0.679334,-0.678235,-0.280182,590.997993,-590.997993,738.078199, + 0.826255,-0.551707,-0.113678,704.675266,-470.848959,796.15315, + 0.702746,-0.7023,-0.113678,599.277053,-599.277053,796.15315, + 0.826255,-0.551707,-0.113678,704.675266,-470.848959,796.15315, + 0.679334,-0.678235,-0.280182,590.997993,-590.997993,738.078199, + 0.798598,-0.532672,-0.280182,694.940121,-464.344144,738.078199, + -0.882589,-0.145631,0.447021,-733.088824,-145.820434,1427.89836, + -0.890977,-0.087754,0.445488,-840.882244,0,1241.03564, + -0.871137,-0.203207,0.447021,-824.724927,-164.047988,1241.03564, + -0.890977,-0.087754,0.445488,-840.882244,0,1241.03564, + -0.882589,-0.145631,0.447021,-733.088824,-145.820434,1427.89836, + -0.890977,-0.087754,0.445488,-747.450884,0,1427.89836, + 0,-0.973856,0.227168,908.62526,-576.530907,1991.911763, + 0,-0.916164,0.400805,180.675225,-589.158255,1950.284976, + 0,-0.92388,0.382683,897.900693,-589.158255,1950.284976, + 0,-0.916164,0.400805,180.675225,-589.158255,1950.284976, + 0,-0.973856,0.227168,908.62526,-576.530907,1991.911763, + -0,-0.986659,0.162803,180.675225,-576.530907,1991.911763, + -0.349653,-0.487843,0.799845,-467.169144,-699.168033,914.026067, + -0.410255,-0.438107,0.799845,-462.46164,-462.46164,1054.17292, + -0.438107,-0.410255,0.799845,-594.593537,-594.593537,914.026067, + -0.410255,-0.438107,0.799845,-462.46164,-462.46164,1054.17292, + -0.349653,-0.487843,0.799845,-467.169144,-699.168033,914.026067, + -0.316902,-0.509726,0.799845,-363.353779,-543.79736,1054.17292, + 0,-0.999462,0.032813,180.675225,-705.406768,2035.202177, + 0,-0.986659,0.162803,104.493585,-707.112263,2017.886024, + 0,-0.973856,0.227168,180.675225,-707.112262,2017.886009, + 0,-0.986659,0.162803,104.493585,-707.112263,2017.886024, + 0,-0.999462,0.032813,180.675225,-705.406768,2035.202177, + -0,-0.999462,-0.032813,104.493583,-705.406768,2035.2022, + -0.637426,0.090042,-0.765232,-781.354664,-731.718944,1933.517963, + -0.475897,-0.070701,-0.876654,-805.854069,-828.277941,1950.684188, + -0.637426,0.090042,-0.765232,-828.138788,-805.72305,1963.780621, + -0.475897,-0.070701,-0.876654,-805.854069,-828.277941,1950.684188, + -0.637426,0.090042,-0.765232,-781.354664,-731.718944,1933.517963, + -0.521142,-0.019464,-0.853248,-761.987077,-753.814953,1922.192772, + -0.475897,-0.070701,-0.876654,-805.854069,-828.277941,1950.684188, + -0.521142,-0.019464,-0.853248,-761.987077,-753.814953,1922.192772, + -0.521142,-0.019464,-0.853248,-757.858868,-757.858868,1919.763614, + -0.475897,-0.070701,-0.876654,-805.854069,-828.277941,1950.684188, + -0.521142,-0.019464,-0.853248,-757.858868,-757.858868,1919.763614, + -0.358793,-0.190568,-0.913757,-750.03201,-762.726244,1915.0942, + 0.749001,-0.123588,-0.65094,731.120069,-145.428824,587.016307, + 0.792149,-0.07802,-0.60532,784.019466,0,631.979457, + 0.787008,-0.166056,-0.594175,768.954752,-152.95461,631.979457, + 0.792149,-0.07802,-0.60532,784.019466,0,631.979457, + 0.749001,-0.123588,-0.65094,731.120069,-145.428824,587.016307, + 0.756844,-0.074543,-0.649331,745.443558,0,587.016307, + 1,0,0,180.675225,-1011.80212,1991.911763, + 1,0,0,180.675225,-1011.80212,2078.49259, + 1,0,0,180.675225,-1016.065853,2035.202177, + 1,0,0,180.675225,-1011.80212,2078.49259, + 1,0,0,180.675225,-1011.80212,1991.911763, + 1,0,0,180.675225,-999.174772,1950.284976, + 1,0,0,180.675225,-1011.80212,2078.49259, + 1,0,0,180.675225,-999.174772,1950.284976, + 1,0,0,180.675225,-999.174772,2120.119378, + 1,0,0,180.675225,-999.174772,2120.119378, + 1,0,0,180.675225,-999.174772,1950.284976, + 1,0,0,180.675225,-978.669071,1911.921509, + 1,0,0,180.675225,-999.174772,2120.119378, + 1,0,0,180.675225,-978.669071,1911.921509, + 1,0,0,180.675225,-978.669071,2158.482845, + 1,0,0,180.675225,-978.669071,2158.482845, + 1,0,0,180.675225,-978.669071,1911.921509, + 1,0,0,180.675225,-951.073041,1878.295649, + 1,0,0,180.675225,-978.669071,2158.482845, + 1,0,0,180.675225,-951.073041,1878.295649, + 1,0,0,180.675225,-951.073041,2192.108705, + 1,0,0,180.675225,-951.073041,2192.108705, + 1,0,0,180.675225,-951.073041,1878.295649, + 1,0,0,180.675225,-917.447181,1850.699619, + 1,0,0,180.675225,-951.073041,2192.108705, + 1,0,0,180.675225,-917.447181,1850.699619, + 1,0,0,180.675225,-917.447181,2219.704735, + 1,0,0,180.675225,-917.447181,2219.704735, + 1,0,0,180.675225,-917.447181,1850.699619, + 1,0,0,180.675225,-879.083714,1830.193918, + 1,0,0,180.675225,-917.447181,2219.704735, + 1,0,0,180.675225,-879.083714,1830.193918, + 1,0,0,180.675225,-882.926259,2035.202177, + 1,0,0,180.675225,-882.926259,2035.202177, + 1,0,0,180.675225,-879.083714,1830.193918, + 1,0,0,180.675225,-881.220765,2017.886009, + 1,0,0,180.675225,-881.220765,2017.886009, + 1,0,0,180.675225,-879.083714,1830.193918, + 1,0,0,180.675225,-876.169825,2001.235293, + 1,0,0,180.675225,-876.169825,2001.235293, + 1,0,0,180.675225,-879.083714,1830.193918, + 1,0,0,180.675225,-837.456927,1817.56657, + 1,0,0,180.675225,-876.169825,2001.235293, + 1,0,0,180.675225,-837.456927,1817.56657, + 1,0,0,180.675225,-867.967544,1985.889904, + 1,0,0,180.675225,-867.967544,1985.889904, + 1,0,0,180.675225,-837.456927,1817.56657, + 1,0,0,180.675225,-856.929131,1972.439559, + 1,0,0,180.675225,-856.929131,1972.439559, + 1,0,0,180.675225,-837.456927,1817.56657, + 1,0,0,180.675225,-843.478786,1961.401146, + 1,0,0,180.675225,-843.478786,1961.401146, + 1,0,0,180.675225,-837.456927,1817.56657, + 1,0,0,180.675225,-828.133397,1953.198865, + 1,0,0,180.675225,-828.133397,1953.198865, + 1,0,0,180.675225,-837.456927,1817.56657, + 1,0,0,180.675225,-794.166513,1813.302837, + 1,0,0,180.675225,-828.133397,1953.198865, + 1,0,0,180.675225,-794.166513,1813.302837, + 1,0,0,180.675225,-811.482681,1948.147925, + 1,0,0,180.675225,-811.482681,1948.147925, + 1,0,0,180.675225,-794.166513,1813.302837, + 1,0,0,180.675225,-794.166513,1946.442431, + 1,0,0,180.675225,-794.166513,1946.442431, + 1,0,0,180.675225,-794.166513,1813.302837, + 1,0,0,180.675225,-750.8761,1817.56657, + 1,0,0,180.675225,-794.166513,1946.442431, + 1,0,0,180.675225,-750.8761,1817.56657, + 1,0,0,180.675225,-776.850346,1948.147925, + 1,0,0,180.675225,-776.850346,1948.147925, + 1,0,0,180.675225,-750.8761,1817.56657, + 1,0,0,180.675225,-760.199629,1953.198865, + 1,0,0,180.675225,-760.199629,1953.198865, + 1,0,0,180.675225,-750.8761,1817.56657, + 1,0,0,180.675225,-744.854241,1961.401146, + 1,0,0,180.675225,-744.854241,1961.401146, + 1,0,0,180.675225,-750.8761,1817.56657, + 1,0,0,180.675225,-709.249312,1830.193918, + 1,0,0,180.675225,-744.854241,1961.401146, + 1,0,0,180.675225,-709.249312,1830.193918, + 1,0,0,180.675225,-731.403895,1972.439559, + 1,0,0,180.675225,-731.403895,1972.439559, + 1,0,0,180.675225,-709.249312,1830.193918, + 1,0,0,180.675225,-720.365482,1985.889904, + 1,0,0,180.675225,-720.365482,1985.889904, + 1,0,0,180.675225,-709.249312,1830.193918, + 1,0,0,180.675225,-712.163201,2001.235293, + 1,0,0,180.675225,-712.163201,2001.235293, + 1,0,0,180.675225,-709.249312,1830.193918, + 1,0,0,180.675225,-707.112262,2017.886009, + 1,0,0,180.675225,-707.112262,2017.886009, + 1,0,0,180.675225,-709.249312,1830.193918, + 1,0,0,180.675225,-670.885845,1850.699619, + 1,0,0,180.675225,-707.112262,2017.886009, + 1,0,0,180.675225,-670.885845,1850.699619, + 1,0,0,180.675225,-705.406768,2035.202177, + 1,0,0,180.675225,-882.926259,2035.202177, + 1,0,0,180.675225,-879.083714,2240.210435, + 1,0,0,180.675225,-917.447181,2219.704735, + 1,0,0,180.675225,-879.083714,2240.210435, + 1,0,0,180.675225,-882.926259,2035.202177, + 1,0,0,180.675225,-881.220765,2052.518344, + 1,0,0,180.675225,-879.083714,2240.210435, + 1,0,0,180.675225,-881.220765,2052.518344, + 1,0,0,180.675225,-876.169825,2069.169061, + 1,0,0,180.675225,-879.083714,2240.210435, + 1,0,0,180.675225,-876.169825,2069.169061, + 1,0,0,180.675225,-837.456927,2252.837783, + 1,0,0,180.675225,-837.456927,2252.837783, + 1,0,0,180.675225,-876.169825,2069.169061, + 1,0,0,180.675225,-867.967544,2084.514449, + 1,0,0,180.675225,-837.456927,2252.837783, + 1,0,0,180.675225,-867.967544,2084.514449, + 1,0,0,180.675225,-856.929131,2097.964794, + 1,0,0,180.675225,-837.456927,2252.837783, + 1,0,0,180.675225,-856.929131,2097.964794, + 1,0,0,180.675225,-843.478786,2109.003208, + 1,0,0,180.675225,-837.456927,2252.837783, + 1,0,0,180.675225,-843.478786,2109.003208, + 1,0,0,180.675225,-828.133397,2117.205489, + 1,0,0,180.675225,-837.456927,2252.837783, + 1,0,0,180.675225,-828.133397,2117.205489, + 1,0,0,180.675225,-794.166513,2257.101517, + 1,0,0,180.675225,-794.166513,2257.101517, + 1,0,0,180.675225,-828.133397,2117.205489, + 1,0,0,180.675225,-811.482681,2122.256428, + 1,0,0,180.675225,-794.166513,2257.101517, + 1,0,0,180.675225,-811.482681,2122.256428, + 1,0,0,180.675225,-794.166513,2123.961922, + 1,0,0,180.675225,-794.166513,2257.101517, + 1,0,0,180.675225,-794.166513,2123.961922, + 1,0,0,180.675225,-776.850346,2122.256428, + 1,0,0,180.675225,-794.166513,2257.101517, + 1,0,0,180.675225,-776.850346,2122.256428, + 1,0,0,180.675225,-750.8761,2252.837783, + 1,0,0,180.675225,-750.8761,2252.837783, + 1,0,0,180.675225,-776.850346,2122.256428, + 1,0,0,180.675225,-760.199629,2117.205489, + 1,0,0,180.675225,-750.8761,2252.837783, + 1,0,0,180.675225,-760.199629,2117.205489, + 1,0,0,180.675225,-744.854241,2109.003208, + 1,0,0,180.675225,-750.8761,2252.837783, + 1,0,0,180.675225,-744.854241,2109.003208, + 1,0,0,180.675225,-709.249312,2240.210435, + 1,0,0,180.675225,-709.249312,2240.210435, + 1,0,0,180.675225,-744.854241,2109.003208, + 1,0,0,180.675225,-731.403895,2097.964794, + 1,0,0,180.675225,-709.249312,2240.210435, + 1,0,0,180.675225,-731.403895,2097.964794, + 1,0,0,180.675225,-720.365482,2084.514449, + 1,0,0,180.675225,-709.249312,2240.210435, + 1,0,0,180.675225,-720.365482,2084.514449, + 1,0,0,180.675225,-712.163201,2069.169061, + 1,0,0,180.675225,-709.249312,2240.210435, + 1,0,0,180.675225,-712.163201,2069.169061, + 1,0,0,180.675225,-707.112262,2052.518344, + 1,0,0,180.675225,-709.249312,2240.210435, + 1,0,0,180.675225,-707.112262,2052.518344, + 1,0,0,180.675225,-670.885845,2219.704735, + 1,0,0,180.675225,-670.885845,2219.704735, + 1,0,0,180.675225,-707.112262,2052.518344, + 1,0,0,180.675225,-705.406768,2035.202177, + 1,0,0,180.675225,-670.885845,2219.704735, + 1,0,0,180.675225,-705.406768,2035.202177, + 1,0,0,180.675225,-670.885845,1850.699619, + 1,0,0,180.675225,-670.885845,2219.704735, + 1,0,0,180.675225,-670.885845,1850.699619, + 1,0,0,180.675225,-637.259985,1878.295649, + 1,0,0,180.675225,-670.885845,2219.704735, + 1,0,0,180.675225,-637.259985,1878.295649, + 1,0,0,180.675225,-637.259985,2192.108705, + 1,0,0,180.675225,-637.259985,2192.108705, + 1,0,0,180.675225,-637.259985,1878.295649, + 1,0,0,180.675225,-609.663955,1911.921509, + 1,0,0,180.675225,-637.259985,2192.108705, + 1,0,0,180.675225,-609.663955,1911.921509, + 1,0,0,180.675225,-609.663955,2158.482845, + 1,0,0,180.675225,-609.663955,2158.482845, + 1,0,0,180.675225,-609.663955,1911.921509, + 1,0,0,180.675225,-589.158255,1950.284976, + 1,0,0,180.675225,-609.663955,2158.482845, + 1,0,0,180.675225,-589.158255,1950.284976, + 1,0,0,180.675225,-589.158255,2120.119378, + 1,0,0,180.675225,-589.158255,2120.119378, + 1,0,0,180.675225,-589.158255,1950.284976, + 1,0,0,180.675225,-576.530907,1991.911763, + 1,0,0,180.675225,-589.158255,2120.119378, + 1,0,0,180.675225,-576.530907,1991.911763, + 1,0,0,180.675225,-576.530907,2078.49259, + 1,0,0,180.675225,-576.530907,2078.49259, + 1,0,0,180.675225,-576.530907,1991.911763, + 1,0,0,180.675225,-572.267173,2035.202177, + -0.796215,-0.15672,-0.584364,-768.954752,-152.95461,631.979457, + -0.710498,-0.267337,-0.65094,-688.700045,-285.268899,587.016307, + -0.750341,-0.309043,-0.584364,-724.339538,-300.03126,631.979457, + -0.710498,-0.267337,-0.65094,-688.700045,-285.268899,587.016307, + -0.796215,-0.15672,-0.584364,-768.954752,-152.95461,631.979457, + -0.749001,-0.123588,-0.65094,-731.120069,-145.428824,587.016307, + -0.881651,-0.17413,-0.438601,-798.780783,-158.887376,682.822311, + -0.750341,-0.309043,-0.584364,-724.339538,-300.03126,631.979457, + -0.830739,-0.342785,-0.438601,-752.435044,-311.6688,682.822311, + -0.750341,-0.309043,-0.584364,-724.339538,-300.03126,631.979457, + -0.881651,-0.17413,-0.438601,-798.780783,-158.887376,682.822311, + -0.796215,-0.15672,-0.584364,-768.954752,-152.95461,631.979457, + -0.941653,-0.186514,-0.280182,-819.737765,-163.055979,738.078199, + -0.830739,-0.342785,-0.438601,-752.435044,-311.6688,682.822311, + -0.887172,-0.366638,-0.280182,-772.17609,-319.845809,738.078199, + -0.830739,-0.342785,-0.438601,-752.435044,-311.6688,682.822311, + -0.941653,-0.186514,-0.280182,-819.737765,-163.055979,738.078199, + -0.881651,-0.17413,-0.438601,-798.780783,-158.887376,682.822311, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.972989,-0.226965,-0.042178,1059.217255,-210.691412,2011.592523, + 0.91563,-0.400602,-0.033753,997.760837,-413.286071,2011.592523, + 0.972989,-0.226965,-0.042178,1059.217255,-210.691412,2011.592523, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.966926,-0.191862,-0.168059,1051.797109,-209.215453,1922.192772, + -0.184965,-0.925205,0.331336,-203.671281,-1023.924672,2258.006804, + -0.377668,-0.910562,0.168059,-410.390874,-990.771213,2148.211628, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.377668,-0.910562,0.168059,-410.390874,-990.771213,2148.211628, + -0.184965,-0.925205,0.331336,-203.671281,-1023.924672,2258.006804, + -0.36191,-0.871342,0.331336,-399.515588,-964.515951,2258.006804, + -0.194936,-0.97921,0.056107,-165.674047,-832.899679,855.371869, + -0.379912,-0.918011,-0.113678,-324.326404,-782.993204,796.15315, + -0.193517,-0.974489,-0.113678,-165.340167,-831.221151,796.15315, + -0.379912,-0.918011,-0.113678,-324.326404,-782.993204,796.15315, + -0.194936,-0.97921,0.056107,-165.674047,-832.899679,855.371869, + -0.382224,-0.922365,0.056107,-324.981333,-784.574342,855.371869, + -0.972989,-0.226965,0.042178,-1059.217255,-210.691412,2058.811877, + -0.923079,-0.382289,-0.0422,-997.760837,-413.286071,2011.592523, + -0.910015,-0.412425,0.042178,-997.760837,-413.286071,2058.811877, + -0.923079,-0.382289,-0.0422,-997.760837,-413.286071,2011.592523, + -0.972989,-0.226965,0.042178,-1059.217255,-210.691412,2058.811877, + -0.979923,-0.19486,-0.0422,-1059.217255,-210.691412,2011.592523, + -0.979923,-0.19486,-0.0422,-1059.217255,-210.691412,2011.592523, + -0.910916,-0.376813,-0.168059,-990.771213,-410.390874,1922.192772, + -0.923079,-0.382289,-0.0422,-997.760837,-413.286071,2011.592523, + -0.910916,-0.376813,-0.168059,-990.771213,-410.390874,1922.192772, + -0.979923,-0.19486,-0.0422,-1059.217255,-210.691412,2011.592523, + -0.966926,-0.191862,-0.168059,-1051.797109,-209.215453,1922.192772, + 0.843385,-0.187656,-0.503476,978.352295,-194.606371,1708.939502, + 0.929871,-0.091584,-0.356303,1043.984543,0,1812.397596, + 0.925561,-0.183175,-0.331336,1023.924672,-203.671281,1812.397596, + 0.929871,-0.091584,-0.356303,1043.984543,0,1812.397596, + 0.843385,-0.187656,-0.503476,978.352295,-194.606371,1708.939502, + 0.850126,-0.08373,-0.51988,997.51935,0,1708.939502, + -0.168431,-0.974672,-0.147124,-209.215453,-1051.797109,1922.192772, + -0.360223,-0.872041,-0.331336,-399.515588,-964.515951,1812.397596, + -0.183175,-0.925561,-0.331336,-203.671281,-1023.924672,1812.397596, + -0.360223,-0.872041,-0.331336,-399.515588,-964.515951,1812.397596, + -0.168431,-0.974672,-0.147124,-209.215453,-1051.797109,1922.192772, + -0.376813,-0.910916,-0.168059,-410.390874,-990.771213,1922.192772, + 0.925561,-0.183175,0.331336,1023.924672,-203.671281,2258.006804, + 0.79057,-0.348586,0.503476,921.587711,-381.734129,2361.464898, + 0.872041,-0.360223,0.331336,964.515951,-399.515588,2258.006804, + 0.79057,-0.348586,0.503476,921.587711,-381.734129,2361.464898, + 0.925561,-0.183175,0.331336,1023.924672,-203.671281,2258.006804, + 0.843385,-0.187656,0.503476,978.352295,-194.606371,2361.464898, + -0.900096,0.367041,-0.234753,-853.905696,-778.543243,2019.687273, + -0.837602,0.298772,-0.457337,-804.883918,-707.527533,1967.257586, + -0.790546,0.249135,-0.559436,-845.012276,-788.258547,1988.011282, + -0.837602,0.298772,-0.457337,-804.883918,-707.527533,1967.257586, + -0.900096,0.367041,-0.234753,-853.905696,-778.543243,2019.687273, + -0.915533,0.385671,-0.11427,-818.480102,-696.846173,2011.592491, + -0.561756,-0.21137,0.799845,-776.873894,-321.791703,914.026067, + -0.584514,-0.136347,0.799845,-641.452722,-127.592879,1054.17292, + -0.592199,-0.097715,0.799845,-824.724927,-164.047988,914.026067, + -0.584514,-0.136347,0.799845,-641.452722,-127.592879,1054.17292, + -0.561756,-0.21137,0.799845,-776.873894,-321.791703,914.026067, + -0.546683,-0.247761,0.799845,-604.235252,-250.282436,1054.17292, + 0.014463,-0.987633,-0.156114,0,-1072.403033,1922.192772, + -0.183175,-0.925561,-0.331336,-203.671281,-1023.924672,1812.397596, + 0.000913,-0.943512,-0.331336,0,-1043.984543,1812.397596, + -0.183175,-0.925561,-0.331336,-203.671281,-1023.924672,1812.397596, + 0.014463,-0.987633,-0.156114,0,-1072.403033,1922.192772, + -0.168431,-0.974672,-0.147124,-209.215453,-1051.797109,1922.192772, + 0,-0.903939,-0.427662,653.750225,-1019.675597,1941.793256, + 0.115001,-0.89802,-0.424659,369.41032,-997.119327,1899.593442, + 0,-0.812792,-0.582554,653.750225,-997.119327,1899.593442, + 0.115001,-0.89802,-0.424659,369.41032,-997.119327,1899.593442, + 0,-0.903939,-0.427662,653.750225,-1019.675597,1941.793256, + 0.146136,-0.933668,-0.326969,349.642862,-1009.198921,1922.192772, + 0.146136,-0.933668,-0.326969,349.642862,-1009.198921,1922.192772, + 0,-0.903939,-0.427662,653.750225,-1019.675597,1941.793256, + 0.147851,-0.963743,-0.222127,320.792433,-1019.675597,1941.793256, + 0.972989,-0.226965,-0.042178,1059.217255,-210.691412,2011.592523, + 0.923514,-0.382532,0.028131,997.760837,-413.286071,2058.811877, + 0.91563,-0.400602,-0.033753,997.760837,-413.286071,2011.592523, + 0.923514,-0.382532,0.028131,997.760837,-413.286071,2058.811877, + 0.972989,-0.226965,-0.042178,1059.217255,-210.691412,2011.592523, + 0.979923,-0.19486,0.0422,1059.217255,-210.691412,2058.811877, + -0.985217,-0.097035,-0.141176,-847.505736,0,796.15315, + -0.941653,-0.186514,-0.280182,-819.737765,-163.055979,738.078199, + -0.974489,-0.193517,-0.113678,-831.221151,-165.340167,796.15315, + -0.941653,-0.186514,-0.280182,-819.737765,-163.055979,738.078199, + -0.985217,-0.097035,-0.141176,-847.505736,0,796.15315, + -0.947451,-0.093316,-0.305988,-835.797377,0,738.078199, + 0.135214,-0.819458,0.556961,182.278552,-916.376162,2455.64332, + -0.001338,-0.87441,0.485186,0,-997.51935,2361.464898, + 0.169277,-0.85787,0.485186,194.606371,-978.352295,2361.464898, + -0.001338,-0.87441,0.485186,0,-997.51935,2361.464898, + 0.135214,-0.819458,0.556961,182.278552,-916.376162,2455.64332, + -0.027252,-0.830091,0.556961,0,-934.329033,2455.64332, + 0,0,-1,0,-934.329033,2455.64332, + 0,0,-1,182.278552,-916.376162,2455.64332, + 0,0,-1,141.006388,-920.441116,2455.64332, + 0,0,1,0,-934.329033,2455.64332, + 0,0,1,141.006388,-920.441116,2455.64332, + 0,0,1,47.148335,-929.685327,2455.64332, + -0.849252,-0,-0.527988,35.951781,-1076.356667,2059.650143, + -0.903939,-0,-0.427662,40.110651,-1076.017993,2051.869445, + -0.881921,-0,-0.471397,36.399844,-1076.383476,2058.811877, + -0.903939,-0,-0.427662,40.110651,-1076.017993,2051.869445, + -0.849252,-0,-0.527988,35.951781,-1076.356667,2059.650143, + -0.83147,0,-0.55557,35.951781,-976.024878,2059.650143, + -0.903939,-0,-0.427662,40.110651,-1076.017993,2051.869445, + -0.83147,0,-0.55557,35.951781,-976.024878,2059.650143, + -0.935939,0,-0.352162,40.110651,-976.081021,2051.869445, + 0.19509,-0,-0.980785,-10.248119,-977.410942,2078.786769, + 0.032813,-0,-0.999462,-1.468161,-1078.060378,2079.651519, + 0.19509,-0,-0.980785,-10.248119,-1077.268807,2078.786769, + 0.032813,-0,-0.999462,-1.468161,-1078.060378,2079.651519, + 0.19509,-0,-0.980785,-10.248119,-977.410942,2078.786769, + -0.032813,-0,-0.999462,-1.468161,-978.223928,2079.651519, + 0,-0.881921,0.471397,884.794356,-604.173851,1922.192772, + -0,-0.849252,0.527988,180.675225,-609.663955,1911.921509, + 0,-0.812792,0.582554,876.866113,-609.663955,1911.921509, + -0,-0.849252,0.527988,180.675225,-609.663955,1911.921509, + 0,-0.881921,0.471397,884.794356,-604.173851,1922.192772, + 0,-0.916164,0.400805,180.675225,-589.158255,1950.284976, + 0,-0.916164,0.400805,180.675225,-589.158255,1950.284976, + 0,-0.881921,0.471397,884.794356,-604.173851,1922.192772, + 0,-0.881921,0.471397,892.684335,-596.472603,1936.600792, + 0,-0.916164,0.400805,180.675225,-589.158255,1950.284976, + 0,-0.881921,0.471397,892.684335,-596.472603,1936.600792, + 0,-0.92388,0.382683,897.900693,-589.158255,1950.284976, + -0.436098,0.719283,0.540788,-758.060123,-874.453748,2003.996308, + -0.278983,0.56848,0.77395,-702.965588,-809.153242,1972.08037, + -0.201549,0.493286,0.846195,-769.870311,-863.13013,1987.610439, + -0.278983,0.56848,0.77395,-702.965588,-809.153242,1972.08037, + -0.436098,0.719283,0.540788,-758.060123,-874.453748,2003.996308, + -0.436098,0.719283,0.540788,-687.957453,-823.760435,1993.102587, + 0.37075,-0.899004,-0.2331,-643.970452,-861.831591,2011.202527, + 0.302536,-0.83706,-0.455854,-741.432258,-891.447302,1988.145993, + 0.252855,-0.790324,-0.558079,-654.791104,-848.015122,1965.894902, + 0.302536,-0.83706,-0.455854,-741.432258,-891.447302,1988.145993, + 0.37075,-0.899004,-0.2331,-643.970452,-861.831591,2011.202527, + 0.392989,-0.915858,-0.082244,-731.724734,-900.26268,2019.846175, + 0,0.999462,0.032813,180.675225,-1016.065853,2035.202177, + 0,0.986659,0.162803,653.750225,-1011.80212,1991.911763, + 0,0.973856,0.227168,180.675225,-1011.80212,1991.911763, + 0,0.986659,0.162803,653.750225,-1011.80212,1991.911763, + 0,0.999462,0.032813,180.675225,-1016.065853,2035.202177, + 0,0.999462,-0.032813,653.750225,-1016.065853,2035.202177, + 0.679334,-0.678235,-0.280182,590.997993,-590.997993,738.078199, + 0.500293,-0.746549,-0.438601,452.472967,-677.173649,682.822311, + 0.636324,-0.634602,-0.438601,575.888851,-575.888851,682.822311, + 0.500293,-0.746549,-0.438601,452.472967,-677.173649,682.822311, + 0.679334,-0.678235,-0.280182,590.997993,-590.997993,738.078199, + 0.533964,-0.797735,-0.280182,464.344144,-694.940121,738.078199, + 0.966926,-0.191862,0.168059,1051.797109,-209.215453,2148.211628, + 0.872041,-0.360223,0.331336,964.515951,-399.515588,2258.006804, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.872041,-0.360223,0.331336,964.515951,-399.515588,2258.006804, + 0.966926,-0.191862,0.168059,1051.797109,-209.215453,2148.211628, + 0.925561,-0.183175,0.331336,1023.924672,-203.671281,2258.006804, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-878.796251,-89.364884,1427.89836, + 0,0,-1,-887.597924,0,1427.89836, + 0,0,-1,-878.796251,-89.364884,1427.89836, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-870.542978,-173.161765,1427.89836, + 0,0,-1,-870.542978,-173.161765,1427.89836, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-868.904109,-178.564394,1427.89836, + 0,0,-1,-868.904109,-178.564394,1427.89836, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-842.852042,-264.446548,1427.89836, + 0,0,-1,-842.852042,-264.446548,1427.89836, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-820.033555,-339.66902,1427.89836, + 0,0,-1,-820.033555,-339.66902,1427.89836, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-814.713927,-349.621343,1427.89836, + 0,0,-1,-814.713927,-349.621343,1427.89836, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-772.428086,-428.732587,1427.89836, + 0,0,-1,-772.428086,-428.732587,1427.89836, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-738.010701,-493.122985,1427.89836, + 0,0,-1,-738.010701,-493.122985,1427.89836, + 0,0,-1,-747.450884,0,1427.89836, + 0,0,-1,-733.088824,-145.820434,1427.89836, + 0,0,-1,-738.010701,-493.122985,1427.89836, + 0,0,-1,-733.088824,-145.820434,1427.89836, + 0,0,-1,-727.278191,-506.200587,1427.89836, + 0,0,-1,-727.278191,-506.200587,1427.89836, + 0,0,-1,-733.088824,-145.820434,1427.89836, + 0,0,-1,-690.554573,-286.03707,1427.89836, + 0,0,-1,-727.278191,-506.200587,1427.89836, + 0,0,-1,-690.554573,-286.03707,1427.89836, + 0,0,-1,-670.393897,-575.514299,1427.89836, + 0,0,-1,-670.393897,-575.514299,1427.89836, + 0,0,-1,-690.554573,-286.03707,1427.89836, + 0,0,-1,-621.482696,-415.261462,1427.89836, + 0,0,-1,-670.393897,-575.514299,1427.89836, + 0,0,-1,-621.482696,-415.261462,1427.89836, + 0,0,-1,-627.626511,-627.626511,1427.89836, + 0,0,-1,-627.626511,-627.626511,1427.89836, + 0,0,-1,-621.482696,-415.261462,1427.89836, + 0,0,-1,-610.198918,-641.928967,1427.89836, + 0,0,-1,-610.198918,-641.928967,1427.89836, + 0,0,-1,-621.482696,-415.261462,1427.89836, + 0,0,-1,-528.527588,-528.527588,1427.89836, + 0,0,-1,-610.198918,-641.928967,1427.89836, + 0,0,-1,-528.527588,-528.527588,1427.89836, + 0,0,-1,-540.907488,-698.794973,1427.89836, + 0,0,-1,-540.907488,-698.794973,1427.89836, + 0,0,-1,-528.527588,-528.527588,1427.89836, + 0,0,-1,-493.122985,-738.010701,1427.89836, + 0,0,-1,-493.122985,-738.010701,1427.89836, + 0,0,-1,-528.527588,-528.527588,1427.89836, + 0,0,-1,-415.261462,-621.482696,1427.89836, + 0,0,-1,-493.122985,-738.010701,1427.89836, + 0,0,-1,-415.261462,-621.482696,1427.89836, + 0,0,-1,-468.281767,-751.288609,1427.89836, + 0,0,-1,-468.281767,-751.288609,1427.89836, + 0,0,-1,-415.261462,-621.482696,1427.89836, + 0,0,-1,-389.246833,-793.533662,1427.89836, + 0,0,-1,-389.246833,-793.533662,1427.89836, + 0,0,-1,-415.261462,-621.482696,1427.89836, + 0,0,-1,-286.03707,-690.554573,1427.89836, + 0,0,-1,-389.246833,-793.533662,1427.89836, + 0,0,-1,-286.03707,-690.554573,1427.89836, + 0,0,-1,-339.66902,-820.033555,1427.89836, + 0,0,-1,-339.66902,-820.033555,1427.89836, + 0,0,-1,-286.03707,-690.554573,1427.89836, + 0,0,-1,-307.339193,-829.840701,1427.89836, + 0,0,-1,-307.339193,-829.840701,1427.89836, + 0,0,-1,-286.03707,-690.554573,1427.89836, + 0,0,-1,-221.595076,-855.850894,1427.89836, + 0,0,-1,-221.595076,-855.850894,1427.89836, + 0,0,-1,-286.03707,-690.554573,1427.89836, + 0,0,-1,-145.820434,-733.088824,1427.89836, + 0,0,-1,-221.595076,-855.850894,1427.89836, + 0,0,-1,-145.820434,-733.088824,1427.89836, + 0,0,-1,-173.161765,-870.542978,1427.89836, + 0,0,-1,-173.161765,-870.542978,1427.89836, + 0,0,-1,-145.820434,-733.088824,1427.89836, + 0,0,-1,-44.790103,-883.186483,1427.89836, + 0,0,-1,-44.790103,-883.186483,1427.89836, + 0,0,-1,-145.820434,-733.088824,1427.89836, + 0,0,-1,0,-747.450884,1427.89836, + 0,0,-1,-44.790103,-883.186483,1427.89836, + 0,0,-1,0,-747.450884,1427.89836, + 0,0,-1,0,-887.597924,1427.89836, + 0,0,-1,0,-887.597924,1427.89836, + 0,0,-1,0,-747.450884,1427.89836, + 0,0,-1,145.820434,-733.088824,1427.89836, + 0,0,-1,0,-887.597924,1427.89836, + 0,0,-1,145.820434,-733.088824,1427.89836, + 0,0,-1,44.790142,-883.18648,1427.89836, + 0,0,-1,44.790142,-883.18648,1427.89836, + 0,0,-1,145.820434,-733.088824,1427.89836, + 0,0,-1,133.953889,-874.404617,1427.89836, + 0,0,-1,133.953889,-874.404617,1427.89836, + 0,0,-1,145.820434,-733.088824,1427.89836, + 0,0,-1,173.161765,-870.542978,1427.89836, + 0,0,-1,173.161765,-870.542978,1427.89836, + 0,0,-1,145.820434,-733.088824,1427.89836, + 0,0,-1,286.03707,-690.554573,1427.89836, + 0,0,-1,173.161765,-870.542978,1427.89836, + 0,0,-1,286.03707,-690.554573,1427.89836, + 0,0,-1,221.595155,-855.85087,1427.89836, + 0,0,-1,221.595155,-855.85087,1427.89836, + 0,0,-1,286.03707,-690.554573,1427.89836, + 0,0,-1,307.339229,-829.84069,1427.89836, + 0,0,-1,307.339229,-829.84069,1427.89836, + 0,0,-1,286.03707,-690.554573,1427.89836, + 0,0,-1,415.261462,-621.482696,1427.89836, + 0,0,-1,307.339229,-829.84069,1427.89836, + 0,0,-1,415.261462,-621.482696,1427.89836, + 0,0,-1,339.66902,-820.033555,1427.89836, + 0,0,-1,339.66902,-820.033555,1427.89836, + 0,0,-1,415.261462,-621.482696,1427.89836, + 0,0,-1,389.246864,-793.533645,1427.89836, + 0,0,-1,389.246864,-793.533645,1427.89836, + 0,0,-1,415.261462,-621.482696,1427.89836, + 0,0,-1,468.281762,-751.288612,1427.89836, + 0,0,-1,468.281762,-751.288612,1427.89836, + 0,0,-1,415.261462,-621.482696,1427.89836, + 0,0,-1,528.527588,-528.527588,1427.89836, + 0,0,-1,468.281762,-751.288612,1427.89836, + 0,0,-1,528.527588,-528.527588,1427.89836, + 0,0,-1,493.122985,-738.010701,1427.89836, + 0,0,-1,493.122985,-738.010701,1427.89836, + 0,0,-1,528.527588,-528.527588,1427.89836, + 0,0,-1,540.907511,-698.794954,1427.89836, + 0,0,-1,540.907511,-698.794954,1427.89836, + 0,0,-1,528.527588,-528.527588,1427.89836, + 0,0,-1,621.482696,-415.261462,1427.89836, + 0,0,-1,540.907511,-698.794954,1427.89836, + 0,0,-1,621.482696,-415.261462,1427.89836, + 0,0,-1,627.626511,-627.626511,1427.89836, + 0,0,-1,627.626511,-627.626511,1427.89836, + 0,0,-1,621.482696,-415.261462,1427.89836, + 0,0,-1,690.554573,-286.03707,1427.89836, + 0,0,-1,627.626511,-627.626511,1427.89836, + 0,0,-1,690.554573,-286.03707,1427.89836, + 0,0,-1,738.010701,-493.122985,1427.89836, + 0,0,-1,738.010701,-493.122985,1427.89836, + 0,0,-1,690.554573,-286.03707,1427.89836, + 0,0,-1,733.088824,-145.820434,1427.89836, + 0,0,-1,738.010701,-493.122985,1427.89836, + 0,0,-1,733.088824,-145.820434,1427.89836, + 0,0,-1,747.450884,0,1427.89836, + 0,0,-1,738.010701,-493.122985,1427.89836, + 0,0,-1,747.450884,0,1427.89836, + 0,0,-1,820.033555,-339.66902,1427.89836, + 0,0,-1,820.033555,-339.66902,1427.89836, + 0,0,-1,747.450884,0,1427.89836, + 0,0,-1,887.597924,0,1427.89836, + 0,0,-1,820.033555,-339.66902,1427.89836, + 0,0,-1,887.597924,0,1427.89836, + 0,0,-1,870.542978,-173.161765,1427.89836, + 0.456892,-0.661987,-0.594157,435.577878,-651.888362,631.979457, + 0.313363,-0.691434,-0.65094,285.268899,-688.700045,587.016307, + 0.421653,-0.631049,-0.651142,414.146251,-619.813666,587.016307, + 0.313363,-0.691434,-0.65094,285.268899,-688.700045,587.016307, + 0.456892,-0.661987,-0.594157,435.577878,-651.888362,631.979457, + 0.312045,-0.749097,-0.584364,300.03126,-724.339538,631.979457, + -0.707373,-0.49612,-0.503476,-829.407027,-554.192058,1708.939502, + -0.606233,-0.567693,-0.556961,-660.670395,-660.670395,1614.76108, + -0.614068,-0.630655,-0.474547,-705.352697,-705.352697,1708.939502, + -0.606233,-0.567693,-0.556961,-660.670395,-660.670395,1614.76108, + -0.707373,-0.49612,-0.503476,-829.407027,-554.192058,1708.939502, + -0.642867,-0.527587,-0.555314,-705.689426,-605.814546,1614.76108, + -0.642867,-0.527587,-0.555314,-705.689426,-605.814546,1614.76108, + -0.707373,-0.49612,-0.503476,-829.407027,-554.192058,1708.939502, + -0.642867,-0.527587,-0.555314,-765.568614,-532.851545,1614.76108, + -0.642867,-0.527587,-0.555314,-765.568614,-532.851545,1614.76108, + -0.707373,-0.49612,-0.503476,-829.407027,-554.192058,1708.939502, + -0.705336,-0.438515,-0.556961,-776.866198,-519.085398,1614.76108, + 0.345035,-0.829807,-0.438601,311.6688,-752.435044,682.822311, + 0.159907,-0.795581,-0.584364,152.95461,-768.954752,631.979457, + 0.312045,-0.749097,-0.584364,300.03126,-724.339538,631.979457, + 0.159907,-0.795581,-0.584364,152.95461,-768.954752,631.979457, + 0.345035,-0.829807,-0.438601,311.6688,-752.435044,682.822311, + 0.176518,-0.881175,-0.438601,158.887376,-798.780783,682.822311, + 0.368074,-0.886578,-0.280182,319.845809,-772.17609,738.078199, + 0.176518,-0.881175,-0.438601,158.887376,-798.780783,682.822311, + 0.345035,-0.829807,-0.438601,311.6688,-752.435044,682.822311, + 0.176518,-0.881175,-0.438601,158.887376,-798.780783,682.822311, + 0.368074,-0.886578,-0.280182,319.845809,-772.17609,738.078199, + 0.188038,-0.94135,-0.280182,163.055979,-819.737765,738.078199, + 0.727062,-0.521108,0.447021,660.325365,-441.215303,1054.17292, + 0.632456,-0.632456,0.447214,495.494614,-495.494614,1241.03564, + 0.632456,-0.632456,0.447214,561.560563,-561.560563,1054.17292, + 0.632456,-0.632456,0.447214,495.494614,-495.494614,1241.03564, + 0.727062,-0.521108,0.447021,660.325365,-441.215303,1054.17292, + 0.759676,-0.472298,0.447021,582.640028,-389.30762,1241.03564, + 0.636324,-0.634602,-0.438601,575.888851,-575.888851,682.822311, + 0.456892,-0.661987,-0.594157,435.577878,-651.888362,631.979457, + 0.592439,-0.554776,-0.584157,554.385481,-554.385481,631.979457, + 0.456892,-0.661987,-0.594157,435.577878,-651.888362,631.979457, + 0.636324,-0.634602,-0.438601,575.888851,-575.888851,682.822311, + 0.500293,-0.746549,-0.438601,452.472967,-677.173649,682.822311, + -0.999806,-0,-0.019694,43.536421,-1075.680584,2034.646937, + -0.986659,-0,0.162803,42.671671,-976.267681,2025.866979, + -0.973856,-0,0.227168,42.671671,-1075.765755,2025.866979, + -0.986659,-0,0.162803,42.671671,-976.267681,2025.866979, + -0.999806,-0,-0.019694,43.536421,-1075.680584,2034.646937, + -1,-0,-0,43.536421,-976.708082,2034.646937, + 0,0.227168,-0.973856,653.750225,-837.456927,2252.837783, + 0,0.352162,-0.935939,180.675225,-879.083714,2240.210435, + -0,0.146613,-0.989194,180.675225,-837.456927,2252.837783, + 0,0.352162,-0.935939,180.675225,-879.083714,2240.210435, + 0,0.227168,-0.973856,653.750225,-837.456927,2252.837783, + 0,0.412792,-0.910825,653.750225,-879.083714,2240.210435, + -0.825684,0.31192,0.470055,-804.422958,-708.167768,2102.551876, + -0.904882,0.382198,0.187384,-853.465107,-778.056207,2053.98621, + -0.776009,0.265205,0.572256,-843.757583,-786.871584,2085.686391, + -0.904882,0.382198,0.187384,-853.465107,-778.056207,2053.98621, + -0.825684,0.31192,0.470055,-804.422958,-708.167768,2102.551876, + -0.904884,0.382185,0.187402,-818.273878,-697.096462,2058.801607, + 0,-0.995185,-0.098017,911.540741,-574.592525,2058.811877, + 0,-0.995185,-0.098017,907.767925,-572.267173,2035.202247, + 0,-1,-0,912.783669,-572.267169,2035.202245, + 0,-0.995185,-0.098017,907.767925,-572.267173,2035.202247, + 0,-0.989194,-0.146613,180.675225,-576.530907,2078.49259, + 0,-0.999462,0.032813,180.675225,-572.267173,2035.202177, + 0,-0.989194,-0.146613,180.675225,-576.530907,2078.49259, + 0,-0.995185,-0.098017,907.767925,-572.267173,2035.202247, + 0,-0.995185,-0.098017,911.540741,-574.592525,2058.811877, + 0,-0.989194,-0.146613,180.675225,-576.530907,2078.49259, + 0,-0.995185,-0.098017,911.540741,-574.592525,2058.811877, + 0,-0.973856,-0.227168,908.625264,-576.530907,2078.49259, + 0.518883,-0.55411,-0.65094,527.108195,-527.108195,587.016307, + 0.456892,-0.661987,-0.594157,435.577878,-651.888362,631.979457, + 0.421653,-0.631049,-0.651142,414.146251,-619.813666,587.016307, + 0.456892,-0.661987,-0.594157,435.577878,-651.888362,631.979457, + 0.518883,-0.55411,-0.65094,527.108195,-527.108195,587.016307, + 0.592439,-0.554776,-0.584157,554.385481,-554.385481,631.979457, + 0.144571,-0.892809,0.426605,369.410361,-997.119327,2170.810911, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.146136,-0.933668,0.326969,349.642944,-1009.198896,2148.211628, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.144571,-0.892809,0.426605,369.410361,-997.119327,2170.810911, + 0.208122,-0.927269,0.31122,203.671281,-1023.924672,2258.006804, + 0.208122,-0.927269,0.31122,203.671281,-1023.924672,2258.006804, + 0.144571,-0.892809,0.426605,369.410361,-997.119327,2170.810911, + 0.211506,-0.883105,0.418796,406.150729,-980.534599,2191.019462, + 0.208122,-0.927269,0.31122,203.671281,-1023.924672,2258.006804, + 0.211506,-0.883105,0.418796,406.150729,-980.534599,2191.019462, + 0.393751,-0.867338,0.304443,399.515588,-964.515951,2258.006804, + -0.837219,-0.315017,0.447021,-647.394912,-268.159753,1241.03564, + -0.871137,-0.203207,0.447021,-778.906876,-154.934211,1054.17292, + -0.814754,-0.369253,0.447021,-733.714234,-303.914386,1054.17292, + -0.871137,-0.203207,0.447021,-778.906876,-154.934211,1054.17292, + -0.837219,-0.315017,0.447021,-647.394912,-268.159753,1241.03564, + -0.882589,-0.145631,0.447021,-687.270773,-136.706657,1241.03564, + -0.974489,-0.193517,-0.113678,-831.221151,-165.340167,796.15315, + -0.887172,-0.366638,-0.280182,-772.17609,-319.845809,738.078199, + -0.918011,-0.379912,-0.113678,-782.993204,-324.326404,796.15315, + -0.887172,-0.366638,-0.280182,-772.17609,-319.845809,738.078199, + -0.974489,-0.193517,-0.113678,-831.221151,-165.340167,796.15315, + -0.941653,-0.186514,-0.280182,-819.737765,-163.055979,738.078199, + -0.830739,-0.342785,-0.438601,-752.435044,-311.6688,682.822311, + -0.692236,-0.442144,-0.570366,-651.888362,-435.577878,631.979457, + -0.747902,-0.498268,-0.438601,-677.173649,-452.472967,682.822311, + -0.692236,-0.442144,-0.570366,-651.888362,-435.577878,631.979457, + -0.830739,-0.342785,-0.438601,-752.435044,-311.6688,682.822311, + -0.750341,-0.309043,-0.584364,-724.339538,-300.03126,631.979457, + -0.887172,-0.366638,-0.280182,-772.17609,-319.845809,738.078199, + -0.747902,-0.498268,-0.438601,-677.173649,-452.472967,682.822311, + -0.798598,-0.532672,-0.280182,-694.940121,-464.344144,738.078199, + -0.747902,-0.498268,-0.438601,-677.173649,-452.472967,682.822311, + -0.887172,-0.366638,-0.280182,-772.17609,-319.845809,738.078199, + -0.830739,-0.342785,-0.438601,-752.435044,-311.6688,682.822311, + -0.521108,-0.727062,0.447021,-389.30762,-582.640028,1241.03564, + -0.611428,-0.652938,0.447021,-561.560563,-561.560563,1054.17292, + -0.472298,-0.759676,0.447021,-441.215303,-660.325365,1054.17292, + -0.611428,-0.652938,0.447021,-561.560563,-561.560563,1054.17292, + -0.521108,-0.727062,0.447021,-389.30762,-582.640028,1241.03564, + -0.652938,-0.611428,0.447021,-495.494614,-495.494614,1241.03564, + -0.521108,-0.727062,0.447021,-415.261462,-621.482696,1427.89836, + -0.611428,-0.652938,0.447021,-594.593537,-594.593537,1241.03564, + -0.472298,-0.759676,0.447021,-467.169144,-699.168033,1241.03564, + -0.611428,-0.652938,0.447021,-594.593537,-594.593537,1241.03564, + -0.521108,-0.727062,0.447021,-415.261462,-621.482696,1427.89836, + -0.652938,-0.611428,0.447021,-528.527588,-528.527588,1427.89836, + -0.850126,-0.08373,-0.51988,-997.51935,0,1708.939502, + -0.819458,-0.135214,-0.556961,-916.376162,-182.278552,1614.76108, + -0.843385,-0.187656,-0.503476,-978.352295,-194.606371,1708.939502, + -0.819458,-0.135214,-0.556961,-916.376162,-182.278552,1614.76108, + -0.850126,-0.08373,-0.51988,-997.51935,0,1708.939502, + -0.827636,-0.081515,-0.555314,-925.063958,-94.069882,1614.76108, + -0.827636,-0.081515,-0.555314,-925.063958,-94.069882,1614.76108, + -0.850126,-0.08373,-0.51988,-997.51935,0,1708.939502, + -0.827636,-0.081515,-0.555314,-934.329033,0,1614.76108, + -0.843385,-0.187656,0.503476,-978.352295,-194.606371,2361.464898, + -0.929871,-0.091584,0.356303,-1043.984543,0,2258.006804, + -0.925561,-0.183175,0.331336,-1023.924672,-203.671281,2258.006804, + -0.929871,-0.091584,0.356303,-1043.984543,0,2258.006804, + -0.843385,-0.187656,0.503476,-978.352295,-194.606371,2361.464898, + -0.850126,-0.08373,0.51988,-997.51935,0,2361.464898, + 0.890977,-0.087754,0.445488,794.166564,0,1054.17292, + 0.882589,-0.145631,0.447021,687.270773,-136.706657,1241.03564, + 0.871137,-0.203207,0.447021,778.906876,-154.934211,1054.17292, + 0.882589,-0.145631,0.447021,687.270773,-136.706657,1241.03564, + 0.890977,-0.087754,0.445488,794.166564,0,1054.17292, + 0.890977,-0.087754,0.445488,700.735204,0,1241.03564, + -0.995185,-0.098017,-0,-832.543812,-84.66152,2549.07468, + -0.976753,-0.214369,-0,-824.724927,-164.047988,2455.64332, + -0.980785,-0.19509,0,-824.724927,-164.047988,2549.07468, + -0.976753,-0.214369,-0,-824.724927,-164.047988,2455.64332, + -0.995185,-0.098017,-0,-832.543812,-84.66152,2549.07468, + -0.995185,-0.098017,-0,-840.882244,0,2455.64332, + -0.995185,-0.098017,-0,-840.882244,0,2455.64332, + -0.995185,-0.098017,-0,-832.543812,-84.66152,2549.07468, + -0.995185,-0.098017,0,-840.882244,0,2549.07468, + -0.759676,-0.472298,0.447021,-621.482696,-415.261462,1427.89836, + -0.814754,-0.369253,0.447021,-776.873894,-321.791703,1241.03564, + -0.727062,-0.521108,0.447021,-699.168033,-467.169144,1241.03564, + -0.814754,-0.369253,0.447021,-776.873894,-321.791703,1241.03564, + -0.759676,-0.472298,0.447021,-621.482696,-415.261462,1427.89836, + -0.837219,-0.315017,0.447021,-690.554573,-286.03707,1427.89836, + 0.533964,-0.797735,-0.280182,464.344144,-694.940121,738.078199, + 0.345035,-0.829807,-0.438601,311.6688,-752.435044,682.822311, + 0.500293,-0.746549,-0.438601,452.472967,-677.173649,682.822311, + 0.345035,-0.829807,-0.438601,311.6688,-752.435044,682.822311, + 0.533964,-0.797735,-0.280182,464.344144,-694.940121,738.078199, + 0.368074,-0.886578,-0.280182,319.845809,-772.17609,738.078199, + 0.552231,-0.825905,-0.113678,470.848959,-704.675266,796.15315, + 0.368074,-0.886578,-0.280182,319.845809,-772.17609,738.078199, + 0.533964,-0.797735,-0.280182,464.344144,-694.940121,738.078199, + 0.368074,-0.886578,-0.280182,319.845809,-772.17609,738.078199, + 0.552231,-0.825905,-0.113678,470.848959,-704.675266,796.15315, + 0.380494,-0.91777,-0.113678,324.326404,-782.993204,796.15315, + 0.872041,-0.360223,0.331336,964.515951,-399.515588,2258.006804, + 0.707373,-0.49612,0.503476,829.407027,-554.192058,2361.464898, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.707373,-0.49612,0.503476,829.407027,-554.192058,2361.464898, + 0.872041,-0.360223,0.331336,964.515951,-399.515588,2258.006804, + 0.79057,-0.348586,0.503476,921.587711,-381.734129,2361.464898, + -0.382396,-0.923034,0.0422,-413.286071,-997.760837,2058.811877, + -0.575005,-0.816448,-0.052732,-599.998378,-897.96103,2011.592523, + -0.382289,-0.923079,-0.0422,-413.286071,-997.760837,2011.592523, + -0.575005,-0.816448,-0.052732,-599.998378,-897.96103,2011.592523, + -0.382396,-0.923034,0.0422,-413.286071,-997.760837,2058.811877, + -0.555123,-0.830697,0.0422,-599.998378,-897.96103,2058.811877, + -0.909392,-0.412143,0.056077,-784.574342,-324.981333,855.371869, + -0.826255,-0.551707,-0.113678,-704.675266,-470.848959,796.15315, + -0.811513,-0.581637,0.056077,-706.098253,-471.799769,855.371869, + -0.826255,-0.551707,-0.113678,-704.675266,-470.848959,796.15315, + -0.909392,-0.412143,0.056077,-784.574342,-324.981333,855.371869, + -0.918011,-0.379912,-0.113678,-782.993204,-324.326404,796.15315, + 0.582554,-0,0.812792,-26.471367,-1076.145653,1997.226995, + 0.683524,-0,0.729928,-33.291206,-975.812207,2002.823893, + 0.729928,0,0.683524,-33.291206,-1075.947599,2002.823893, + 0.683524,-0,0.729928,-33.291206,-975.812207,2002.823893, + 0.582554,-0,0.812792,-26.471367,-1076.145653,1997.226995, + 0.527988,0,0.849252,-26.471367,-976.14887,1997.226995, + 0.83147,-0,-0.55557,-38.888103,-975.735676,2059.650143, + 0.707107,-0,-0.707107,-33.291206,-1076.041578,2066.469982, + 0.849252,-0,-0.527988,-38.888103,-1076.067465,2059.650143, + 0.707107,-0,-0.707107,-33.291206,-1076.041578,2066.469982, + 0.83147,-0,-0.55557,-38.888103,-975.735676,2059.650143, + 0.707107,0,-0.707107,-33.291206,-975.878684,2066.469982, + -0.527988,0,0.849252,23.535045,-1076.434855,1997.226995, + -0.382683,-0,0.92388,15.754347,-976.955453,1993.068126, + -0.382683,0,0.92388,15.754347,-1076.84924,1993.068126, + -0.382683,-0,0.92388,15.754347,-976.955453,1993.068126, + -0.527988,0,0.849252,23.535045,-1076.434855,1997.226995, + -0.582554,0,0.812792,23.535045,-976.438073,1997.226995, + -0.227168,-0,0.973856,7.311798,-1077.464031,1990.507106, + -0.382683,-0,0.92388,15.754347,-976.955453,1993.068126, + -0.162803,-0,0.986659,7.311798,-977.633668,1990.507106, + -0.382683,-0,0.92388,15.754347,-976.955453,1993.068126, + -0.227168,-0,0.973856,7.311798,-1077.464031,1990.507106, + -0.382683,0,0.92388,15.754347,-1076.84924,1993.068126, + -0.935939,0,-0.352162,40.110651,-976.081021,2051.869445, + -0.973856,-0,-0.227168,42.671671,-1075.765755,2043.426896, + -0.903939,-0,-0.427662,40.110651,-1076.017993,2051.869445, + -0.973856,-0,-0.227168,42.671671,-1075.765755,2043.426896, + -0.935939,0,-0.352162,40.110651,-976.081021,2051.869445, + -0.986659,-0,-0.162803,42.671671,-976.334157,2043.426896, + -0.377668,-0.910562,0.168059,-410.390874,-990.771213,2148.211628, + -0.555123,-0.830697,0.0422,-599.998378,-897.96103,2058.811877, + -0.382396,-0.923034,0.0422,-413.286071,-997.760837,2058.811877, + -0.555123,-0.830697,0.0422,-599.998378,-897.96103,2058.811877, + -0.377668,-0.910562,0.168059,-410.390874,-990.771213,2148.211628, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.759676,-0.472298,0.447021,-582.640028,-389.30762,1241.03564, + -0.814754,-0.369253,0.447021,-733.714234,-303.914386,1054.17292, + -0.727062,-0.521108,0.447021,-660.325365,-441.215303,1054.17292, + -0.814754,-0.369253,0.447021,-733.714234,-303.914386,1054.17292, + -0.759676,-0.472298,0.447021,-582.640028,-389.30762,1241.03564, + -0.837219,-0.315017,0.447021,-647.394912,-268.159753,1241.03564, + -0.993624,-0.097863,-0.055991,-1079.968548,0,2011.592523, + -0.966926,-0.191862,-0.168059,-1051.797109,-209.215453,1922.192772, + -0.979923,-0.19486,-0.0422,-1059.217255,-210.691412,2011.592523, + -0.966926,-0.191862,-0.168059,-1051.797109,-209.215453,1922.192772, + -0.993624,-0.097863,-0.055991,-1079.968548,0,2011.592523, + -0.976104,-0.096138,-0.19488,-1072.403033,0,1922.192772, + 0.69246,-0.720397,0.039075,600.487204,-600.487204,855.371869, + 0.552231,-0.825905,-0.113678,470.848959,-704.675266,796.15315, + 0.702746,-0.7023,-0.113678,599.277053,-599.277053,796.15315, + 0.552231,-0.825905,-0.113678,470.848959,-704.675266,796.15315, + 0.69246,-0.720397,0.039075,600.487204,-600.487204,855.371869, + 0.554566,-0.830246,0.056107,471.799769,-706.098253,855.371869, + -0.000001,0.812792,-0.582554,104.493598,-867.96763,2084.514498, + -0.000001,0.729928,-0.683524,180.675225,-856.929131,2097.964794, + -0.000001,0.849252,-0.527988,180.675225,-867.967544,2084.514449, + -0.000001,0.729928,-0.683524,180.675225,-856.929131,2097.964794, + -0.000001,0.812792,-0.582554,104.493598,-867.96763,2084.514498, + -0.000001,0.683524,-0.729928,104.493594,-856.929211,2097.964851, + -0.000001,0.582554,-0.812792,180.675225,-843.478786,2109.003208, + -0.000001,0.683524,-0.729928,104.493594,-856.929211,2097.964851, + -0.000001,0.527988,-0.849252,104.493591,-843.478858,2109.00327, + -0.000001,0.683524,-0.729928,104.493594,-856.929211,2097.964851, + -0.000001,0.582554,-0.812792,180.675225,-843.478786,2109.003208, + -0.000001,0.729928,-0.683524,180.675225,-856.929131,2097.964794, + -0.000001,0.412792,-0.910825,180.675225,-828.133397,2117.205489, + -0.000001,0.527988,-0.849252,104.493591,-843.478858,2109.00327, + -0.000001,0.352162,-0.935939,104.493588,-828.133462,2117.205555, + -0.000001,0.527988,-0.849252,104.493591,-843.478858,2109.00327, + -0.000001,0.412792,-0.910825,180.675225,-828.133397,2117.205489, + -0.000001,0.582554,-0.812792,180.675225,-843.478786,2109.003208, + -0.000001,0.227168,-0.973856,180.675225,-811.482681,2122.256428, + -0.000001,0.352162,-0.935939,104.493588,-828.133462,2117.205555, + -0.000001,0.162803,-0.986659,104.493585,-811.482736,2122.256498, + -0.000001,0.352162,-0.935939,104.493588,-828.133462,2117.205555, + -0.000001,0.227168,-0.973856,180.675225,-811.482681,2122.256428, + -0.000001,0.412792,-0.910825,180.675225,-828.133397,2117.205489, + -0.000001,0.032813,-0.999462,180.675225,-794.166513,2123.961922, + -0.000001,0.162803,-0.986659,104.493585,-811.482736,2122.256498, + -0.000001,-0.032813,-0.999462,104.493583,-794.16656,2123.961992, + -0.000001,0.162803,-0.986659,104.493585,-811.482736,2122.256498, + -0.000001,0.032813,-0.999462,180.675225,-794.166513,2123.961922, + -0.000001,0.227168,-0.973856,180.675225,-811.482681,2122.256428, + -0.000001,-0.162803,-0.986659,180.675225,-776.850346,2122.256428, + -0.000001,-0.032813,-0.999462,104.493583,-794.16656,2123.961992, + -0.000001,-0.227168,-0.973856,104.493581,-776.850384,2122.256498, + -0.000001,-0.032813,-0.999462,104.493583,-794.16656,2123.961992, + -0.000001,-0.162803,-0.986659,180.675225,-776.850346,2122.256428, + -0.000001,0.032813,-0.999462,180.675225,-794.166513,2123.961922, + -0.000001,-0.352162,-0.935939,180.675225,-760.199629,2117.205489, + -0.000001,-0.227168,-0.973856,104.493581,-776.850384,2122.256498, + -0.000001,-0.412792,-0.910825,104.493579,-760.199658,2117.205555, + -0.000001,-0.227168,-0.973856,104.493581,-776.850384,2122.256498, + -0.000001,-0.352162,-0.935939,180.675225,-760.199629,2117.205489, + -0.000001,-0.162803,-0.986659,180.675225,-776.850346,2122.256428, + -0.000001,-0.527988,-0.849252,180.675225,-744.854241,2109.003208, + -0.000001,-0.412792,-0.910825,104.493579,-760.199658,2117.205555, + -0.000001,-0.582554,-0.812792,104.493578,-744.854262,2109.00327, + -0.000001,-0.412792,-0.910825,104.493579,-760.199658,2117.205555, + -0.000001,-0.527988,-0.849252,180.675225,-744.854241,2109.003208, + -0.000001,-0.352162,-0.935939,180.675225,-760.199629,2117.205489, + -0,-0.707107,-0.707107,180.675225,-731.403895,2097.964794, + -0.000001,-0.582554,-0.812792,104.493578,-744.854262,2109.00327, + -0,-0.707107,-0.707107,104.493578,-731.403909,2097.964851, + -0.000001,-0.582554,-0.812792,104.493578,-744.854262,2109.00327, + -0,-0.707107,-0.707107,180.675225,-731.403895,2097.964794, + -0.000001,-0.527988,-0.849252,180.675225,-744.854241,2109.003208, + -0,-0.707107,-0.707107,180.675225,-731.403895,2097.964794, + -0,-0.812792,-0.582554,104.493578,-720.36549,2084.514498, + -0,-0.849252,-0.527988,180.675225,-720.365482,2084.514449, + -0,-0.812792,-0.582554,104.493578,-720.36549,2084.514498, + -0,-0.707107,-0.707107,180.675225,-731.403895,2097.964794, + -0,-0.707107,-0.707107,104.493578,-731.403909,2097.964851, + -0,-0.849252,-0.527988,180.675225,-720.365482,2084.514449, + -0,-0.910825,-0.412792,104.493579,-712.163205,2069.169102, + -0,-0.935939,-0.352162,180.675225,-712.163201,2069.169061, + -0,-0.910825,-0.412792,104.493579,-712.163205,2069.169102, + -0,-0.849252,-0.527988,180.675225,-720.365482,2084.514449, + -0,-0.812792,-0.582554,104.493578,-720.36549,2084.514498, + -0,-0.935939,-0.352162,180.675225,-712.163201,2069.169061, + -0,-0.973856,-0.227168,104.493581,-707.112263,2052.518376, + -0,-0.986659,-0.162803,180.675225,-707.112262,2052.518344, + -0,-0.973856,-0.227168,104.493581,-707.112263,2052.518376, + -0,-0.935939,-0.352162,180.675225,-712.163201,2069.169061, + -0,-0.910825,-0.412792,104.493579,-712.163205,2069.169102, + -0,-0.986659,-0.162803,180.675225,-707.112262,2052.518344, + -0,-0.999462,-0.032813,104.493583,-705.406768,2035.2022, + 0,-0.999462,0.032813,180.675225,-705.406768,2035.202177, + -0,-0.999462,-0.032813,104.493583,-705.406768,2035.2022, + -0,-0.986659,-0.162803,180.675225,-707.112262,2052.518344, + -0,-0.973856,-0.227168,104.493581,-707.112263,2052.518376, + 0.438515,-0.705336,0.556961,519.085398,-776.866198,2455.64332, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.51982,-0.710547,0.474247,554.192058,-829.407027,2361.464898, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.438515,-0.705336,0.556961,519.085398,-776.866198,2455.64332, + 0.292484,-0.777333,0.556961,357.552241,-863.20747,2455.64332, + 0,0,1,357.552241,-863.20747,2455.64332, + 0,0,1,519.085398,-776.866198,2455.64332, + 0,0,1,492.936359,-790.843151,2455.64332, + 0,0,-1,357.552241,-863.20747,2455.64332, + 0,0,-1,492.936359,-790.843151,2455.64332, + 0,0,-1,409.740311,-835.312366,2455.64332, + -0.947451,-0.093316,-0.305988,-835.797377,0,738.078199, + -0.881651,-0.17413,-0.438601,-798.780783,-158.887376,682.822311, + -0.941653,-0.186514,-0.280182,-819.737765,-163.055979,738.078199, + -0.881651,-0.17413,-0.438601,-798.780783,-158.887376,682.822311, + -0.947451,-0.093316,-0.305988,-835.797377,0,738.078199, + -0.882512,-0.08692,-0.462187,-814.429823,0,682.822311, + -0.538332,-0.779667,0.319873,-580.006736,-868.041423,2258.006804, + -0.62223,-0.75819,0.19488,-700.811797,-805.485643,2148.211628, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.62223,-0.75819,0.19488,-700.811797,-805.485643,2148.211628, + -0.538332,-0.779667,0.319873,-580.006736,-868.041423,2258.006804, + -0.61434,-0.748575,0.249443,-713.051374,-793.031289,2155.442781, + -0.61434,-0.748575,0.249443,-750.226481,-763.163738,2153.518338, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.684548,-0.684548,0.250574,-758.175253,-758.175253,2148.912113, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.61434,-0.748575,0.249443,-750.226481,-763.163738,2153.518338, + -0.61434,-0.748575,0.249443,-713.051374,-793.031289,2155.442781, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.61434,-0.748575,0.249443,-713.051374,-793.031289,2155.442781, + -0.538332,-0.779667,0.319873,-580.006736,-868.041423,2258.006804, + 0.252855,-0.790324,-0.558079,-654.791104,-848.015122,1965.894902, + 0.071382,-0.616271,-0.784292,-758.928833,-874.671572,1963.870632, + 0.093452,-0.638076,-0.764282,-679.407718,-824.046894,1931.329012, + 0.071382,-0.616271,-0.784292,-758.928833,-874.671572,1963.870632, + 0.252855,-0.790324,-0.558079,-654.791104,-848.015122,1965.894902, + 0.302536,-0.83706,-0.455854,-741.432258,-891.447302,1988.145993, + 0.032813,0,0.999462,-1.468161,-1077.966399,1989.642356, + 0.162803,0,0.986659,-10.248119,-977.344466,1990.507106, + 0.227168,0,0.973856,-10.248119,-1077.174828,1990.507106, + 0.162803,0,0.986659,-10.248119,-977.344466,1990.507106, + 0.032813,0,0.999462,-1.468161,-1077.966399,1989.642356, + -0.032813,-0,0.999462,-1.468161,-978.157452,1989.642356, + 0.554566,-0.830246,0.056107,471.799769,-706.098253,855.371869, + 0.380494,-0.91777,-0.113678,324.326404,-782.993204,796.15315, + 0.552231,-0.825905,-0.113678,470.848959,-704.675266,796.15315, + 0.380494,-0.91777,-0.113678,324.326404,-782.993204,796.15315, + 0.554566,-0.830246,0.056107,471.799769,-706.098253,855.371869, + 0.381937,-0.922484,0.056107,324.981333,-784.574342,855.371869, + 0.482193,-0.753361,0.447144,441.215303,-660.325365,1614.76108, + 0.422036,-0.789573,0.445488,468.281762,-751.288612,1427.89836, + 0.496917,-0.743689,0.447214,493.122985,-738.010701,1427.89836, + 0.422036,-0.789573,0.445488,468.281762,-751.288612,1427.89836, + 0.482193,-0.753361,0.447144,441.215303,-660.325365,1614.76108, + 0.422036,-0.789573,0.445488,389.246864,-793.533645,1427.89836, + 0.422036,-0.789573,0.445488,389.246864,-793.533645,1427.89836, + 0.325954,-0.832956,0.447144,303.914386,-733.714234,1614.76108, + 0.342282,-0.826343,0.447214,339.66902,-820.033555,1427.89836, + 0.325954,-0.832956,0.447144,303.914386,-733.714234,1614.76108, + 0.422036,-0.789573,0.445488,389.246864,-793.533645,1427.89836, + 0.482193,-0.753361,0.447144,441.215303,-660.325365,1614.76108, + 0.87881,-0.469734,0.083921,897.900698,-589.158255,2120.119378, + 0.832671,-0.532692,0.151323,891.670534,-595.795203,2148.211628, + 0.828508,-0.553591,0.084324,892.684338,-596.472605,2133.803565, + 0.832671,-0.532692,0.151323,891.670534,-595.795203,2148.211628, + 0.87881,-0.469734,0.083921,897.900698,-589.158255,2120.119378, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.87881,-0.469734,0.083921,897.900698,-589.158255,2120.119378, + 0.87881,-0.469734,0.083921,908.625264,-576.530907,2078.49259, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.87881,-0.469734,0.083921,908.625264,-576.530907,2078.49259, + 0.880538,-0.470657,0.055991,911.540741,-574.592525,2058.811877, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.880538,-0.470657,0.055991,911.540741,-574.592525,2058.811877, + 0.923514,-0.382532,0.028131,997.760837,-413.286071,2058.811877, + -0.000001,0.352162,0.935939,104.49361,-828.133462,1953.198845, + -0,0.227168,0.973856,180.675225,-811.482681,1948.147925, + -0,0.162803,0.986659,104.493608,-811.482736,1948.147903, + -0,0.227168,0.973856,180.675225,-811.482681,1948.147925, + -0.000001,0.352162,0.935939,104.49361,-828.133462,1953.198845, + -0.000001,0.412792,0.910825,180.675225,-828.133397,1953.198865, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.392033,-0.733442,-0.555314,492.936359,-790.843151,1614.76108, + 0.461345,-0.690452,-0.557168,519.085398,-776.866198,1614.76108, + 0.392033,-0.733442,-0.555314,492.936359,-790.843151,1614.76108, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.392033,-0.733442,-0.555314,409.740311,-835.312366,1614.76108, + 0.392033,-0.733442,-0.555314,409.740311,-835.312366,1614.76108, + 0.331547,-0.797805,-0.503571,381.734129,-921.587711,1708.939502, + 0.31778,-0.767189,-0.557168,357.552241,-863.20747,1614.76108, + 0.331547,-0.797805,-0.503571,381.734129,-921.587711,1708.939502, + 0.392033,-0.733442,-0.555314,409.740311,-835.312366,1614.76108, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + -0,-0.582554,0.812792,104.493598,-744.854262,1961.40113, + 0,-0.707107,0.707107,180.675225,-731.403895,1972.439559, + 0,-0.707107,0.707107,104.493594,-731.403909,1972.439549, + 0,-0.707107,0.707107,180.675225,-731.403895,1972.439559, + -0,-0.582554,0.812792,104.493598,-744.854262,1961.40113, + -0,-0.527988,0.849252,180.675225,-744.854241,1961.401146, + -0.000001,0.973856,-0.227168,104.493604,-881.220857,2052.518376, + -0.000001,0.935939,-0.352162,180.675225,-876.169825,2069.169061, + -0.000001,0.986659,-0.162803,180.675225,-881.220765,2052.518344, + -0.000001,0.935939,-0.352162,180.675225,-876.169825,2069.169061, + -0.000001,0.973856,-0.227168,104.493604,-881.220857,2052.518376, + -0.000001,0.910825,-0.412792,104.493601,-876.169915,2069.169102, + -0.000001,0.910825,-0.412792,104.493601,-876.169915,2069.169102, + -0.000001,0.849252,-0.527988,180.675225,-867.967544,2084.514449, + -0.000001,0.935939,-0.352162,180.675225,-876.169825,2069.169061, + -0.000001,0.849252,-0.527988,180.675225,-867.967544,2084.514449, + -0.000001,0.910825,-0.412792,104.493601,-876.169915,2069.169102, + -0.000001,0.812792,-0.582554,104.493598,-867.96763,2084.514498, + -0.000001,0.999462,-0.032813,104.493606,-882.926352,2035.2022, + -0.000001,0.986659,-0.162803,180.675225,-881.220765,2052.518344, + -0.000001,0.999462,0.032813,180.675225,-882.926259,2035.202177, + -0.000001,0.986659,-0.162803,180.675225,-881.220765,2052.518344, + -0.000001,0.999462,-0.032813,104.493606,-882.926352,2035.2022, + -0.000001,0.973856,-0.227168,104.493604,-881.220857,2052.518376, + -0,-0.227168,0.973856,104.493604,-776.850384,1948.147903, + -0,-0.352162,0.935939,180.675225,-760.199629,1953.198865, + -0,-0.412792,0.910825,104.493601,-760.199658,1953.198845, + -0,-0.352162,0.935939,180.675225,-760.199629,1953.198865, + -0,-0.227168,0.973856,104.493604,-776.850384,1948.147903, + -0,-0.162803,0.986659,180.675225,-776.850346,1948.147925, + -0,-0.336778,0.941584,653.750225,-887.575434,2260.711261, + -0,-0.290285,0.95694,577.578294,-864.407003,2267.739328, + -0,-0.412792,0.910825,540.89692,-887.575434,2260.711261, + -0,-0.290285,0.95694,577.578294,-864.407003,2267.739328, + -0,-0.336778,0.941584,653.750225,-887.575434,2260.711261, + -0,-0.227168,0.973856,600.307509,-841.785968,2274.601344, + -0,-0.227168,0.973856,600.307509,-841.785968,2274.601344, + -0,-0.336778,0.941584,653.750225,-887.575434,2260.711261, + 0,-0.19509,0.980785,653.750225,-841.785968,2274.601344, + -0.329694,-0.798573,-0.503571,-381.734129,-921.587711,1708.939502, + -0.392033,-0.733442,-0.555314,-409.740279,-835.312382,1614.76108, + -0.31778,-0.767189,-0.557168,-357.552241,-863.20747,1614.76108, + -0.392033,-0.733442,-0.555314,-409.740279,-835.312382,1614.76108, + -0.329694,-0.798573,-0.503571,-381.734129,-921.587711,1708.939502, + -0.392033,-0.733442,-0.555314,-492.936329,-790.843167,1614.76108, + -0.392033,-0.733442,-0.555314,-492.936329,-790.843167,1614.76108, + -0.479152,-0.718908,-0.503571,-554.192058,-829.407027,1708.939502, + -0.461345,-0.690452,-0.557168,-519.085398,-776.866198,1614.76108, + -0.479152,-0.718908,-0.503571,-554.192058,-829.407027,1708.939502, + -0.392033,-0.733442,-0.555314,-492.936329,-790.843167,1614.76108, + -0.329694,-0.798573,-0.503571,-381.734129,-921.587711,1708.939502, + 0.918011,-0.379912,-0.113678,782.993204,-324.326404,796.15315, + 0.972323,-0.22681,0.056077,832.899679,-165.674047,855.371869, + 0.909392,-0.412143,0.056077,784.574342,-324.981333,855.371869, + 0.972323,-0.22681,0.056077,832.899679,-165.674047,855.371869, + 0.918011,-0.379912,-0.113678,782.993204,-324.326404,796.15315, + 0.974489,-0.193517,-0.113678,831.221151,-165.340167,796.15315, + 0.82593,-0.549829,0.124608,-789.394717,-732.286733,2020.799449, + 0.80808,-0.541317,-0.232341,-833.682296,-797.914759,2048.438454, + 0.803422,-0.523835,0.283037,-833.979694,-798.243508,2025.286671, + 0.80808,-0.541317,-0.232341,-833.682296,-797.914759,2048.438454, + 0.82593,-0.549829,0.124608,-789.394717,-732.286733,2020.799449, + 0.814584,-0.546562,-0.194222,-789.342859,-732.349615,2049.894341, + -0.000155,-0.998425,0.056107,0,-849.217148,855.371869, + -0.193517,-0.974489,-0.113678,-165.340167,-831.221151,796.15315, + 0.000315,-0.993518,-0.113678,0,-847.505736,796.15315, + -0.193517,-0.974489,-0.113678,-165.340167,-831.221151,796.15315, + -0.000155,-0.998425,0.056107,0,-849.217148,855.371869, + -0.194936,-0.97921,0.056107,-165.674047,-832.899679,855.371869, + 0.731226,-0.321864,-0.601425,724.339538,-300.03126,631.979457, + 0.881651,-0.17413,-0.438601,798.780783,-158.887376,682.822311, + 0.830739,-0.342785,-0.438601,752.435044,-311.6688,682.822311, + 0.881651,-0.17413,-0.438601,798.780783,-158.887376,682.822311, + 0.731226,-0.321864,-0.601425,724.339538,-300.03126,631.979457, + 0.787008,-0.166056,-0.594175,768.954752,-152.95461,631.979457, + 0.500293,-0.746549,-0.438601,452.472967,-677.173649,682.822311, + 0.312045,-0.749097,-0.584364,300.03126,-724.339538,631.979457, + 0.456892,-0.661987,-0.594157,435.577878,-651.888362,631.979457, + 0.312045,-0.749097,-0.584364,300.03126,-724.339538,631.979457, + 0.500293,-0.746549,-0.438601,452.472967,-677.173649,682.822311, + 0.345035,-0.829807,-0.438601,311.6688,-752.435044,682.822311, + -0.750341,-0.309043,-0.584364,-724.339538,-300.03126,631.979457, + -0.631049,-0.421653,-0.651142,-619.813666,-414.146251,587.016307, + -0.692236,-0.442144,-0.570366,-651.888362,-435.577878,631.979457, + -0.631049,-0.421653,-0.651142,-619.813666,-414.146251,587.016307, + -0.750341,-0.309043,-0.584364,-724.339538,-300.03126,631.979457, + -0.710498,-0.267337,-0.65094,-688.700045,-285.268899,587.016307, + 0.227168,0,0.973856,-10.248119,-1077.174828,1990.507106, + 0.352162,0,0.935939,-18.690668,-976.666251,1993.068126, + 0.412792,0,0.910825,-18.690668,-1076.560038,1993.068126, + 0.352162,0,0.935939,-18.690668,-976.666251,1993.068126, + 0.227168,0,0.973856,-10.248119,-1077.174828,1990.507106, + 0.162803,0,0.986659,-10.248119,-977.344466,1990.507106, + 0.312045,-0.749097,-0.584364,300.03126,-724.339538,631.979457, + 0.172449,-0.739282,-0.65094,145.428824,-731.120069,587.016307, + 0.313363,-0.691434,-0.65094,285.268899,-688.700045,587.016307, + 0.172449,-0.739282,-0.65094,145.428824,-731.120069,587.016307, + 0.312045,-0.749097,-0.584364,300.03126,-724.339538,631.979457, + 0.159907,-0.795581,-0.584364,152.95461,-768.954752,631.979457, + -0.652938,-0.611428,0.447021,-495.494614,-495.494614,1241.03564, + -0.727062,-0.521108,0.447021,-660.325365,-441.215303,1054.17292, + -0.611428,-0.652938,0.447021,-561.560563,-561.560563,1054.17292, + -0.727062,-0.521108,0.447021,-660.325365,-441.215303,1054.17292, + -0.652938,-0.611428,0.447021,-495.494614,-495.494614,1241.03564, + -0.759676,-0.472298,0.447021,-582.640028,-389.30762,1241.03564, + -0.652938,-0.611428,0.447021,-528.527588,-528.527588,1427.89836, + -0.727062,-0.521108,0.447021,-699.168033,-467.169144,1241.03564, + -0.611428,-0.652938,0.447021,-594.593537,-594.593537,1241.03564, + -0.727062,-0.521108,0.447021,-699.168033,-467.169144,1241.03564, + -0.652938,-0.611428,0.447021,-528.527588,-528.527588,1427.89836, + -0.759676,-0.472298,0.447021,-621.482696,-415.261462,1427.89836, + -0.777333,-0.292484,0.556961,-863.20747,-357.552241,2455.64332, + -0.843385,-0.187656,0.503476,-978.352295,-194.606371,2361.464898, + -0.79057,-0.348586,0.503476,-921.587711,-381.734129,2361.464898, + -0.843385,-0.187656,0.503476,-978.352295,-194.606371,2361.464898, + -0.777333,-0.292484,0.556961,-863.20747,-357.552241,2455.64332, + -0.795831,-0.241413,0.555314,-887.227323,-278.369396,2455.64332, + -0.843385,-0.187656,0.503476,-978.352295,-194.606371,2361.464898, + -0.795831,-0.241413,0.555314,-887.227323,-278.369396,2455.64332, + -0.795831,-0.241413,0.555314,-914.651019,-187.965588,2455.64332, + -0.843385,-0.187656,0.503476,-978.352295,-194.606371,2361.464898, + -0.795831,-0.241413,0.555314,-914.651019,-187.965588,2455.64332, + -0.819458,-0.135214,0.556961,-916.376162,-182.278552,2455.64332, + 0,0,-1,-650.663002,0,587.016307, + 0,0,-1,-731.120069,-145.428824,587.016307, + 0,0,-1,-745.443558,0,587.016307, + 0,0,-1,-731.120069,-145.428824,587.016307, + 0,0,-1,-650.663002,0,587.016307, + 0,0,-1,-688.700045,-285.268899,587.016307, + 0,0,-1,-688.700045,-285.268899,587.016307, + 0,0,-1,-650.663002,0,587.016307, + 0,0,-1,-619.813666,-414.146251,587.016307, + 0,0,-1,-619.813666,-414.146251,587.016307, + 0,0,-1,-650.663002,0,587.016307, + 0,0,-1,-638.160695,-126.938055,587.016307, + 0,0,-1,-619.813666,-414.146251,587.016307, + 0,0,-1,-638.160695,-126.938055,587.016307, + 0,0,-1,-601.13423,-248.997951,587.016307, + 0,0,-1,-619.813666,-414.146251,587.016307, + 0,0,-1,-601.13423,-248.997951,587.016307, + 0,0,-1,-527.108195,-527.108195,587.016307, + 0,0,-1,-527.108195,-527.108195,587.016307, + 0,0,-1,-601.13423,-248.997951,587.016307, + 0,0,-1,-541.006514,-361.488996,587.016307, + 0,0,-1,-527.108195,-527.108195,587.016307, + 0,0,-1,-541.006514,-361.488996,587.016307, + 0,0,-1,-460.088221,-460.088221,587.016307, + 0,0,-1,-527.108195,-527.108195,587.016307, + 0,0,-1,-460.088221,-460.088221,587.016307, + 0,0,-1,-414.146251,-619.813666,587.016307, + 0,0,-1,-414.146251,-619.813666,587.016307, + 0,0,-1,-460.088221,-460.088221,587.016307, + 0,0,-1,-361.488996,-541.006514,587.016307, + 0,0,-1,-414.146251,-619.813666,587.016307, + 0,0,-1,-361.488996,-541.006514,587.016307, + 0,0,-1,-285.268899,-688.700045,587.016307, + 0,0,-1,-285.268899,-688.700045,587.016307, + 0,0,-1,-361.488996,-541.006514,587.016307, + 0,0,-1,-248.997951,-601.13423,587.016307, + 0,0,-1,-285.268899,-688.700045,587.016307, + 0,0,-1,-248.997951,-601.13423,587.016307, + 0,0,-1,-145.428824,-731.120069,587.016307, + 0,0,-1,-145.428824,-731.120069,587.016307, + 0,0,-1,-248.997951,-601.13423,587.016307, + 0,0,-1,-126.938055,-638.160695,587.016307, + 0,0,-1,-145.428824,-731.120069,587.016307, + 0,0,-1,-126.938055,-638.160695,587.016307, + 0,0,-1,0,-745.443558,587.016307, + 0,0,-1,0,-745.443558,587.016307, + 0,0,-1,-126.938055,-638.160695,587.016307, + 0,0,-1,0,-650.663002,587.016307, + 0,0,-1,0,-745.443558,587.016307, + 0,0,-1,0,-650.663002,587.016307, + 0,0,-1,126.938055,-638.160695,587.016307, + 0,0,-1,0,-745.443558,587.016307, + 0,0,-1,126.938055,-638.160695,587.016307, + 0,0,-1,145.428824,-731.120069,587.016307, + 0,0,-1,145.428824,-731.120069,587.016307, + 0,0,-1,126.938055,-638.160695,587.016307, + 0,0,-1,248.997951,-601.13423,587.016307, + 0,0,-1,145.428824,-731.120069,587.016307, + 0,0,-1,248.997951,-601.13423,587.016307, + 0,0,-1,285.268899,-688.700045,587.016307, + 0,0,-1,285.268899,-688.700045,587.016307, + 0,0,-1,248.997951,-601.13423,587.016307, + 0,0,-1,361.488996,-541.006514,587.016307, + 0,0,-1,285.268899,-688.700045,587.016307, + 0,0,-1,361.488996,-541.006514,587.016307, + 0,0,-1,414.146251,-619.813666,587.016307, + 0,0,-1,414.146251,-619.813666,587.016307, + 0,0,-1,361.488996,-541.006514,587.016307, + 0,0,-1,460.088221,-460.088221,587.016307, + 0,0,-1,414.146251,-619.813666,587.016307, + 0,0,-1,460.088221,-460.088221,587.016307, + 0,0,-1,527.108195,-527.108195,587.016307, + 0,0,-1,527.108195,-527.108195,587.016307, + 0,0,-1,460.088221,-460.088221,587.016307, + 0,0,-1,541.006514,-361.488996,587.016307, + 0,0,-1,527.108195,-527.108195,587.016307, + 0,0,-1,541.006514,-361.488996,587.016307, + 0,0,-1,610.800046,-425.129379,587.016307, + 0,0,-1,610.800046,-425.129379,587.016307, + 0,0,-1,541.006514,-361.488996,587.016307, + 0,0,-1,601.13423,-248.997951,587.016307, + 0,0,-1,610.800046,-425.129379,587.016307, + 0,0,-1,601.13423,-248.997951,587.016307, + 0,0,-1,638.160695,-126.938055,587.016307, + 0,0,-1,610.800046,-425.129379,587.016307, + 0,0,-1,638.160695,-126.938055,587.016307, + 0,0,-1,619.813666,-414.146251,587.016307, + 0,0,-1,619.813666,-414.146251,587.016307, + 0,0,-1,638.160695,-126.938055,587.016307, + 0,0,-1,648.718891,-360.068379,587.016307, + 0,0,-1,648.718891,-360.068379,587.016307, + 0,0,-1,638.160695,-126.938055,587.016307, + 0,0,-1,650.663002,0,587.016307, + 0,0,-1,648.718891,-360.068379,587.016307, + 0,0,-1,650.663002,0,587.016307, + 0,0,-1,684.232405,-293.627267,587.016307, + 0,0,-1,684.232405,-293.627267,587.016307, + 0,0,-1,650.663002,0,587.016307, + 0,0,-1,745.443558,0,587.016307, + 0,0,-1,684.232405,-293.627267,587.016307, + 0,0,-1,745.443558,0,587.016307, + 0,0,-1,688.700045,-285.268899,587.016307, + 0,0,-1,688.700045,-285.268899,587.016307, + 0,0,-1,745.443558,0,587.016307, + 0,0,-1,707.864018,-222.093747,587.016307, + 0,0,-1,707.864018,-222.093747,587.016307, + 0,0,-1,745.443558,0,587.016307, + 0,0,-1,731.120069,-145.428824,587.016307, + -0.918011,-0.379912,-0.113678,-782.993204,-324.326404,796.15315, + -0.798598,-0.532672,-0.280182,-694.940121,-464.344144,738.078199, + -0.826255,-0.551707,-0.113678,-704.675266,-470.848959,796.15315, + -0.798598,-0.532672,-0.280182,-694.940121,-464.344144,738.078199, + -0.918011,-0.379912,-0.113678,-782.993204,-324.326404,796.15315, + -0.887172,-0.366638,-0.280182,-772.17609,-319.845809,738.078199, + 0.966926,-0.191862,-0.168059,1051.797109,-209.215453,1922.192772, + 0.994307,-0.097931,-0.041998,1079.968548,0,2011.592523, + 0.972989,-0.226965,-0.042178,1059.217255,-210.691412,2011.592523, + 0.994307,-0.097931,-0.041998,1079.968548,0,2011.592523, + 0.966926,-0.191862,-0.168059,1051.797109,-209.215453,1922.192772, + 0.976104,-0.096138,-0.19488,1072.403033,0,1922.192772, + -0.032696,-0.995906,-0.084279,0,-1078.123237,1989.786957, + -0.168431,-0.974672,-0.147124,-209.215453,-1051.797109,1922.192772, + 0.014463,-0.987633,-0.156114,0,-1072.403033,1922.192772, + -0.168431,-0.974672,-0.147124,-209.215453,-1051.797109,1922.192772, + -0.032696,-0.995906,-0.084279,0,-1078.123237,1989.786957, + -0.097671,-0.991674,-0.083921,-1.468161,-1077.966399,1989.642356, + -0.168431,-0.974672,-0.147124,-209.215453,-1051.797109,1922.192772, + -0.097671,-0.991674,-0.083921,-10.248119,-1077.174828,1990.507106, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.097671,-0.991674,-0.083921,-10.248119,-1077.174828,1990.507106, + -0.168431,-0.974672,-0.147124,-209.215453,-1051.797109,1922.192772, + -0.097671,-0.991674,-0.083921,-1.468161,-1077.966399,1989.642356, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.097671,-0.991674,-0.083921,-10.248119,-1077.174828,1990.507106, + -0.097671,-0.991674,-0.083921,-18.690668,-1076.560038,1993.068126, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.097671,-0.991674,-0.083921,-18.690668,-1076.560038,1993.068126, + -0.097671,-0.991674,-0.083921,-26.471367,-1076.145653,1997.226995, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.097671,-0.991674,-0.083921,-26.471367,-1076.145653,1997.226995, + -0.097671,-0.991674,-0.083921,-33.291206,-1075.947599,2002.823893, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.097671,-0.991674,-0.083921,-33.291206,-1075.947599,2002.823893, + -0.097671,-0.991674,-0.083921,-38.888103,-1075.973486,2009.643732, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.097671,-0.991674,-0.083921,-38.888103,-1075.973486,2009.643732, + -0.097931,-0.994307,-0.041998,-39.929753,-1076.03581,2011.592523, + -0.973856,-0,0.227168,42.671671,-1075.765755,2025.866979, + -0.935939,0,0.352162,40.110651,-976.014545,2017.42443, + -0.903939,-0,0.427662,40.110651,-1076.017993,2017.42443, + -0.935939,0,0.352162,40.110651,-976.014545,2017.42443, + -0.973856,-0,0.227168,42.671671,-1075.765755,2025.866979, + -0.986659,-0,0.162803,42.671671,-976.267681,2025.866979, + 0.909392,-0.412143,0.056077,784.574342,-324.981333,855.371869, + 0.840814,-0.522742,0.140615,699.168033,-467.169144,914.026067, + 0.811513,-0.581637,0.056077,706.098253,-471.799769,855.371869, + 0.840814,-0.522742,0.140615,699.168033,-467.169144,914.026067, + 0.909392,-0.412143,0.056077,784.574342,-324.981333,855.371869, + 0.92664,-0.348663,0.140615,776.873894,-321.791703,914.026067, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-925.063958,-94.069882,1614.76108, + 0,0,-1,-934.329033,0,1614.76108, + 0,0,-1,-925.063958,-94.069882,1614.76108, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-916.376162,-182.278552,1614.76108, + 0,0,-1,-916.376162,-182.278552,1614.76108, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-914.651019,-187.965588,1614.76108, + 0,0,-1,-914.651019,-187.965588,1614.76108, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-887.227324,-278.369395,1614.76108, + 0,0,-1,-887.227324,-278.369395,1614.76108, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-863.20747,-357.552241,1614.76108, + 0,0,-1,-863.20747,-357.552241,1614.76108, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-857.607798,-368.02849,1614.76108, + 0,0,-1,-857.607798,-368.02849,1614.76108, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-813.095616,-451.304926,1614.76108, + 0,0,-1,-813.095616,-451.304926,1614.76108, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-776.866198,-519.085398,1614.76108, + 0,0,-1,-776.866198,-519.085398,1614.76108, + 0,0,-1,-794.166564,0,1614.76108, + 0,0,-1,-778.906876,-154.934211,1614.76108, + 0,0,-1,-776.866198,-519.085398,1614.76108, + 0,0,-1,-778.906876,-154.934211,1614.76108, + 0,0,-1,-733.714234,-303.914386,1614.76108, + 0,0,-1,-776.866198,-519.085398,1614.76108, + 0,0,-1,-733.714234,-303.914386,1614.76108, + 0,0,-1,-765.568614,-532.851545,1614.76108, + 0,0,-1,-765.568614,-532.851545,1614.76108, + 0,0,-1,-733.714234,-303.914386,1614.76108, + 0,0,-1,-705.689426,-605.814546,1614.76108, + 0,0,-1,-705.689426,-605.814546,1614.76108, + 0,0,-1,-733.714234,-303.914386,1614.76108, + 0,0,-1,-660.325365,-441.215303,1614.76108, + 0,0,-1,-705.689426,-605.814546,1614.76108, + 0,0,-1,-660.325365,-441.215303,1614.76108, + 0,0,-1,-660.670395,-660.670395,1614.76108, + 0,0,-1,-660.670395,-660.670395,1614.76108, + 0,0,-1,-660.325365,-441.215303,1614.76108, + 0,0,-1,-642.325255,-675.725862,1614.76108, + 0,0,-1,-642.325255,-675.725862,1614.76108, + 0,0,-1,-660.325365,-441.215303,1614.76108, + 0,0,-1,-561.560563,-561.560563,1614.76108, + 0,0,-1,-642.325255,-675.725862,1614.76108, + 0,0,-1,-561.560563,-561.560563,1614.76108, + 0,0,-1,-569.385752,-735.585765,1614.76108, + 0,0,-1,-569.385752,-735.585765,1614.76108, + 0,0,-1,-561.560563,-561.560563,1614.76108, + 0,0,-1,-519.085398,-776.866198,1614.76108, + 0,0,-1,-519.085398,-776.866198,1614.76108, + 0,0,-1,-561.560563,-561.560563,1614.76108, + 0,0,-1,-441.215303,-660.325365,1614.76108, + 0,0,-1,-519.085398,-776.866198,1614.76108, + 0,0,-1,-441.215303,-660.325365,1614.76108, + 0,0,-1,-492.936329,-790.843167,1614.76108, + 0,0,-1,-492.936329,-790.843167,1614.76108, + 0,0,-1,-441.215303,-660.325365,1614.76108, + 0,0,-1,-409.740279,-835.312382,1614.76108, + 0,0,-1,-409.740279,-835.312382,1614.76108, + 0,0,-1,-441.215303,-660.325365,1614.76108, + 0,0,-1,-303.914386,-733.714234,1614.76108, + 0,0,-1,-409.740279,-835.312382,1614.76108, + 0,0,-1,-303.914386,-733.714234,1614.76108, + 0,0,-1,-357.552241,-863.20747,1614.76108, + 0,0,-1,-357.552241,-863.20747,1614.76108, + 0,0,-1,-303.914386,-733.714234,1614.76108, + 0,0,-1,-323.520318,-873.530941,1614.76108, + 0,0,-1,-323.520318,-873.530941,1614.76108, + 0,0,-1,-303.914386,-733.714234,1614.76108, + 0,0,-1,-233.261862,-900.910544,1614.76108, + 0,0,-1,-233.261862,-900.910544,1614.76108, + 0,0,-1,-303.914386,-733.714234,1614.76108, + 0,0,-1,-154.934211,-778.906876,1614.76108, + 0,0,-1,-233.261862,-900.910544,1614.76108, + 0,0,-1,-154.934211,-778.906876,1614.76108, + 0,0,-1,-182.278552,-916.376162,1614.76108, + 0,0,-1,-182.278552,-916.376162,1614.76108, + 0,0,-1,-154.934211,-778.906876,1614.76108, + 0,0,-1,-141.006395,-920.441115,1614.76108, + 0,0,-1,-141.006395,-920.441115,1614.76108, + 0,0,-1,-154.934211,-778.906876,1614.76108, + 0,0,-1,0,-794.166564,1614.76108, + 0,0,-1,-141.006395,-920.441115,1614.76108, + 0,0,-1,0,-794.166564,1614.76108, + 0,0,-1,-47.148297,-929.685331,1614.76108, + 0,0,-1,-47.148297,-929.685331,1614.76108, + 0,0,-1,0,-794.166564,1614.76108, + 0,0,-1,0,-934.329033,1614.76108, + 0,0,-1,0,-934.329033,1614.76108, + 0,0,-1,0,-794.166564,1614.76108, + 0,0,-1,154.934211,-778.906876,1614.76108, + 0,0,-1,0,-934.329033,1614.76108, + 0,0,-1,154.934211,-778.906876,1614.76108, + 0,0,-1,47.148336,-929.685327,1614.76108, + 0,0,-1,47.148336,-929.685327,1614.76108, + 0,0,-1,154.934211,-778.906876,1614.76108, + 0,0,-1,141.006389,-920.441115,1614.76108, + 0,0,-1,141.006389,-920.441115,1614.76108, + 0,0,-1,154.934211,-778.906876,1614.76108, + 0,0,-1,182.278552,-916.376162,1614.76108, + 0,0,-1,182.278552,-916.376162,1614.76108, + 0,0,-1,154.934211,-778.906876,1614.76108, + 0,0,-1,303.914386,-733.714234,1614.76108, + 0,0,-1,182.278552,-916.376162,1614.76108, + 0,0,-1,303.914386,-733.714234,1614.76108, + 0,0,-1,233.261899,-900.910533,1614.76108, + 0,0,-1,233.261899,-900.910533,1614.76108, + 0,0,-1,303.914386,-733.714234,1614.76108, + 0,0,-1,323.520353,-873.53093,1614.76108, + 0,0,-1,323.520353,-873.53093,1614.76108, + 0,0,-1,303.914386,-733.714234,1614.76108, + 0,0,-1,441.215303,-660.325365,1614.76108, + 0,0,-1,323.520353,-873.53093,1614.76108, + 0,0,-1,441.215303,-660.325365,1614.76108, + 0,0,-1,357.552241,-863.20747,1614.76108, + 0,0,-1,357.552241,-863.20747,1614.76108, + 0,0,-1,441.215303,-660.325365,1614.76108, + 0,0,-1,409.740311,-835.312366,1614.76108, + 0,0,-1,409.740311,-835.312366,1614.76108, + 0,0,-1,441.215303,-660.325365,1614.76108, + 0,0,-1,492.936359,-790.843151,1614.76108, + 0,0,-1,492.936359,-790.843151,1614.76108, + 0,0,-1,441.215303,-660.325365,1614.76108, + 0,0,-1,561.560563,-561.560563,1614.76108, + 0,0,-1,492.936359,-790.843151,1614.76108, + 0,0,-1,561.560563,-561.560563,1614.76108, + 0,0,-1,519.085398,-776.866198,1614.76108, + 0,0,-1,519.085398,-776.866198,1614.76108, + 0,0,-1,561.560563,-561.560563,1614.76108, + 0,0,-1,569.385776,-735.585745,1614.76108, + 0,0,-1,569.385776,-735.585745,1614.76108, + 0,0,-1,561.560563,-561.560563,1614.76108, + 0,0,-1,660.325365,-441.215303,1614.76108, + 0,0,-1,569.385776,-735.585745,1614.76108, + 0,0,-1,660.325365,-441.215303,1614.76108, + 0,0,-1,642.325277,-675.725844,1614.76108, + 0,0,-1,642.325277,-675.725844,1614.76108, + 0,0,-1,660.325365,-441.215303,1614.76108, + 0,0,-1,660.670395,-660.670395,1614.76108, + 0,0,-1,660.670395,-660.670395,1614.76108, + 0,0,-1,660.325365,-441.215303,1614.76108, + 0,0,-1,733.714234,-303.914386,1614.76108, + 0,0,-1,660.670395,-660.670395,1614.76108, + 0,0,-1,733.714234,-303.914386,1614.76108, + 0,0,-1,705.689443,-605.814526,1614.76108, + 0,0,-1,705.689443,-605.814526,1614.76108, + 0,0,-1,733.714234,-303.914386,1614.76108, + 0,0,-1,765.568628,-532.851527,1614.76108, + 0,0,-1,765.568628,-532.851527,1614.76108, + 0,0,-1,733.714234,-303.914386,1614.76108, + 0,0,-1,778.906876,-154.934211,1614.76108, + 0,0,-1,765.568628,-532.851527,1614.76108, + 0,0,-1,778.906876,-154.934211,1614.76108, + 0,0,-1,776.866198,-519.085398,1614.76108, + 0,0,-1,776.866198,-519.085398,1614.76108, + 0,0,-1,778.906876,-154.934211,1614.76108, + 0,0,-1,813.095625,-451.304909,1614.76108, + 0,0,-1,813.095625,-451.304909,1614.76108, + 0,0,-1,778.906876,-154.934211,1614.76108, + 0,0,-1,794.166564,0,1614.76108, + 0,0,-1,813.095625,-451.304909,1614.76108, + 0,0,-1,794.166564,0,1614.76108, + 0,0,-1,934.329033,0,1614.76108, + 0,0,-1,813.095625,-451.304909,1614.76108, + 0,0,-1,934.329033,0,1614.76108, + 0,0,-1,857.607806,-368.028476,1614.76108, + 0,0,-1,857.607806,-368.028476,1614.76108, + 0,0,-1,934.329033,0,1614.76108, + 0,0,-1,863.20747,-357.552241,1614.76108, + 0,0,-1,863.20747,-357.552241,1614.76108, + 0,0,-1,934.329033,0,1614.76108, + 0,0,-1,887.227327,-278.369384,1614.76108, + 0,0,-1,887.227327,-278.369384,1614.76108, + 0,0,-1,934.329033,0,1614.76108, + 0,0,-1,914.651021,-187.96558,1614.76108, + 0,0,-1,914.651021,-187.96558,1614.76108, + 0,0,-1,934.329033,0,1614.76108, + 0,0,-1,925.063958,-94.069878,1614.76108, + 0,0,-1,914.651021,-187.96558,1614.76108, + 0,0,-1,925.063958,-94.069878,1614.76108, + 0,0,-1,916.376162,-182.278552,1614.76108, + 0.798598,-0.532672,-0.280182,694.940121,-464.344144,738.078199, + 0.918011,-0.379912,-0.113678,782.993204,-324.326404,796.15315, + 0.826255,-0.551707,-0.113678,704.675266,-470.848959,796.15315, + 0.918011,-0.379912,-0.113678,782.993204,-324.326404,796.15315, + 0.798598,-0.532672,-0.280182,694.940121,-464.344144,738.078199, + 0.887172,-0.366638,-0.280182,772.17609,-319.845809,738.078199, + -0.358504,-0.819473,0.447144,-303.914386,-733.714234,1614.76108, + -0.422036,-0.789573,0.445488,-389.246833,-793.533662,1427.89836, + -0.342282,-0.826343,0.447214,-339.66902,-820.033555,1427.89836, + -0.422036,-0.789573,0.445488,-389.246833,-793.533662,1427.89836, + -0.358504,-0.819473,0.447144,-303.914386,-733.714234,1614.76108, + -0.422036,-0.789573,0.445488,-468.281767,-751.288609,1427.89836, + -0.422036,-0.789573,0.445488,-468.281767,-751.288609,1427.89836, + -0.511487,-0.733787,0.447144,-441.215303,-660.325365,1614.76108, + -0.496917,-0.743689,0.447214,-493.122985,-738.010701,1427.89836, + -0.511487,-0.733787,0.447144,-441.215303,-660.325365,1614.76108, + -0.422036,-0.789573,0.445488,-468.281767,-751.288609,1427.89836, + -0.358504,-0.819473,0.447144,-303.914386,-733.714234,1614.76108, + -0.707107,0,-0.707107,30.354884,-1076.33078,2066.469982, + -0.83147,0,-0.55557,35.951781,-976.024878,2059.650143, + -0.849252,-0,-0.527988,35.951781,-1076.356667,2059.650143, + -0.83147,0,-0.55557,35.951781,-976.024878,2059.650143, + -0.707107,0,-0.707107,30.354884,-1076.33078,2066.469982, + -0.707107,0,-0.707107,30.354884,-976.167886,2066.469982, + -0.55557,0,-0.83147,23.535045,-976.504549,2072.06688, + -0.707107,0,-0.707107,30.354884,-1076.33078,2066.469982, + -0.55557,0,-0.83147,23.535045,-1076.528834,2072.06688, + -0.707107,0,-0.707107,30.354884,-1076.33078,2066.469982, + -0.55557,0,-0.83147,23.535045,-976.504549,2072.06688, + -0.707107,0,-0.707107,30.354884,-976.167886,2066.469982, + -0.705651,-0.708302,0.019122,-758.928833,-874.671572,1963.870632, + -0.705651,-0.708302,0.019122,-785.140115,-848.157193,1978.730924, + -0.705651,-0.708302,0.019122,-801.544846,-831.814429,1978.709589, + -0.705651,-0.708302,0.019122,-785.140115,-848.157193,1978.730924, + -0.705651,-0.708302,0.019122,-758.928833,-874.671572,1963.870632, + -0.705651,-0.708302,0.019122,-741.432258,-891.447302,1988.145993, + -0.705651,-0.708302,0.019122,-785.140115,-848.157193,1978.730924, + -0.705651,-0.708302,0.019122,-741.432258,-891.447302,1988.145993, + -0.705651,-0.708302,0.019122,-769.870311,-863.13013,1987.610439, + -0.705651,-0.708302,0.019122,-769.870311,-863.13013,1987.610439, + -0.705651,-0.708302,0.019122,-741.432258,-891.447302,1988.145993, + -0.705651,-0.708302,0.019122,-758.060123,-874.453748,2003.996308, + -0.705651,-0.708302,0.019122,-758.060123,-874.453748,2003.996308, + -0.705651,-0.708302,0.019122,-741.432258,-891.447302,1988.145993, + -0.705651,-0.708302,0.019122,-731.724734,-900.26268,2019.846175, + -0.705651,-0.708302,0.019122,-758.060123,-874.453748,2003.996308, + -0.705651,-0.708302,0.019122,-731.724734,-900.26268,2019.846175, + -0.705651,-0.708302,0.019122,-751.507545,-880.404128,2025.39393, + -0.705651,-0.708302,0.019122,-751.507545,-880.404128,2025.39393, + -0.705651,-0.708302,0.019122,-731.724734,-900.26268,2019.846175, + -0.705651,-0.708302,0.019122,-731.284145,-899.775643,2054.145111, + -0.705651,-0.708302,0.019122,-751.507545,-880.404128,2025.39393, + -0.705651,-0.708302,0.019122,-731.284145,-899.775643,2054.145111, + -0.705651,-0.708302,0.019122,-751.210147,-880.075378,2048.545713, + -0.705651,-0.708302,0.019122,-751.210147,-880.075378,2048.545713, + -0.705651,-0.708302,0.019122,-731.284145,-899.775643,2054.145111, + -0.705651,-0.708302,0.019122,-757.213206,-873.517548,2069.927006, + -0.705651,-0.708302,0.019122,-757.213206,-873.517548,2069.927006, + -0.705651,-0.708302,0.019122,-731.284145,-899.775643,2054.145111, + -0.705651,-0.708302,0.019122,-740.177565,-890.06034,2085.821102, + -0.705651,-0.708302,0.019122,-757.213206,-873.517548,2069.927006, + -0.705651,-0.708302,0.019122,-740.177565,-890.06034,2085.821102, + -0.705651,-0.708302,0.019122,-768.60281,-861.729009,2086.282702, + -0.705651,-0.708302,0.019122,-768.60281,-861.729009,2086.282702, + -0.705651,-0.708302,0.019122,-740.177565,-890.06034,2085.821102, + -0.705651,-0.708302,0.019122,-757.051053,-872.595836,2110.051763, + -0.705651,-0.708302,0.019122,-768.60281,-861.729009,2086.282702, + -0.705651,-0.708302,0.019122,-757.051053,-872.595836,2110.051763, + -0.705651,-0.708302,0.019122,-783.644995,-846.504457,2095.122795, + -0.705651,-0.708302,0.019122,-783.644995,-846.504457,2095.122795, + -0.705651,-0.708302,0.019122,-757.051053,-872.595836,2110.051763, + -0.705651,-0.708302,0.019122,-826.261008,-803.647314,2109.961752, + -0.705651,-0.708302,0.019122,-826.261008,-803.647314,2109.961752, + -0.705651,-0.708302,0.019122,-757.051053,-872.595836,2110.051763, + -0.705651,-0.708302,0.019122,-803.639077,-825.829444,2123.116588, + -0.705651,-0.708302,0.019122,-803.639077,-825.829444,2123.116588, + -0.705651,-0.708302,0.019122,-757.051053,-872.595836,2110.051763, + -0.705651,-0.708302,0.019122,-779.335772,-850.040945,2123.148196, + -0.705651,-0.708302,0.019122,-781.550765,-852.489443,1950.715796, + -0.705651,-0.708302,0.019122,-828.138788,-805.72305,1963.780621, + -0.705651,-0.708302,0.019122,-805.854069,-828.277941,1950.684188, + -0.705651,-0.708302,0.019122,-828.138788,-805.72305,1963.780621, + -0.705651,-0.708302,0.019122,-781.550765,-852.489443,1950.715796, + -0.705651,-0.708302,0.019122,-758.928833,-874.671572,1963.870632, + -0.705651,-0.708302,0.019122,-828.138788,-805.72305,1963.780621, + -0.705651,-0.708302,0.019122,-758.928833,-874.671572,1963.870632, + -0.705651,-0.708302,0.019122,-845.012276,-788.258547,1988.011282, + -0.705651,-0.708302,0.019122,-845.012276,-788.258547,1988.011282, + -0.705651,-0.708302,0.019122,-758.928833,-874.671572,1963.870632, + -0.705651,-0.708302,0.019122,-801.544846,-831.814429,1978.709589, + -0.705651,-0.708302,0.019122,-845.012276,-788.258547,1988.011282, + -0.705651,-0.708302,0.019122,-801.544846,-831.814429,1978.709589, + -0.705651,-0.708302,0.019122,-816.587031,-816.589878,1987.549682, + -0.705651,-0.708302,0.019122,-845.012276,-788.258547,1988.011282, + -0.705651,-0.708302,0.019122,-816.587031,-816.589878,1987.549682, + -0.705651,-0.708302,0.019122,-827.976635,-804.801338,2003.905378, + -0.705651,-0.708302,0.019122,-845.012276,-788.258547,1988.011282, + -0.705651,-0.708302,0.019122,-827.976635,-804.801338,2003.905378, + -0.705651,-0.708302,0.019122,-853.905696,-778.543243,2019.687273, + -0.705651,-0.708302,0.019122,-853.905696,-778.543243,2019.687273, + -0.705651,-0.708302,0.019122,-827.976635,-804.801338,2003.905378, + -0.705651,-0.708302,0.019122,-833.979694,-798.243508,2025.286671, + -0.705651,-0.708302,0.019122,-853.905696,-778.543243,2019.687273, + -0.705651,-0.708302,0.019122,-833.979694,-798.243508,2025.286671, + -0.705651,-0.708302,0.019122,-853.465107,-778.056207,2053.98621, + -0.705651,-0.708302,0.019122,-853.465107,-778.056207,2053.98621, + -0.705651,-0.708302,0.019122,-833.979694,-798.243508,2025.286671, + -0.705651,-0.708302,0.019122,-833.682296,-797.914759,2048.438454, + -0.705651,-0.708302,0.019122,-853.465107,-778.056207,2053.98621, + -0.705651,-0.708302,0.019122,-833.682296,-797.914759,2048.438454, + -0.705651,-0.708302,0.019122,-827.129718,-803.865138,2069.836076, + -0.705651,-0.708302,0.019122,-853.465107,-778.056207,2053.98621, + -0.705651,-0.708302,0.019122,-827.129718,-803.865138,2069.836076, + -0.705651,-0.708302,0.019122,-843.757583,-786.871584,2085.686391, + -0.705651,-0.708302,0.019122,-843.757583,-786.871584,2085.686391, + -0.705651,-0.708302,0.019122,-827.129718,-803.865138,2069.836076, + -0.705651,-0.708302,0.019122,-815.31953,-815.188756,2086.221945, + -0.705651,-0.708302,0.019122,-843.757583,-786.871584,2085.686391, + -0.705651,-0.708302,0.019122,-815.31953,-815.188756,2086.221945, + -0.705651,-0.708302,0.019122,-826.261008,-803.647314,2109.961752, + -0.705651,-0.708302,0.019122,-826.261008,-803.647314,2109.961752, + -0.705651,-0.708302,0.019122,-815.31953,-815.188756,2086.221945, + -0.705651,-0.708302,0.019122,-800.049726,-830.161694,2095.10146, + -0.705651,-0.708302,0.019122,-826.261008,-803.647314,2109.961752, + -0.705651,-0.708302,0.019122,-800.049726,-830.161694,2095.10146, + -0.705651,-0.708302,0.019122,-783.644995,-846.504457,2095.122795, + 0.986659,-0,0.162803,-45.607992,-975.978478,2025.866979, + 0.999806,0,-0.019694,-46.472742,-1075.391382,2034.646937, + 0.973856,0,0.227168,-45.607992,-1075.476552,2025.866979, + 0.999806,0,-0.019694,-46.472742,-1075.391382,2034.646937, + 0.986659,-0,0.162803,-45.607992,-975.978478,2025.866979, + 1,0,0,-46.472742,-976.41888,2034.646937, + 0,0.986659,-0.162803,180.675225,-1011.80212,2078.49259, + 0,0.999462,-0.032813,653.750225,-1016.065853,2035.202177, + 0,0.999462,0.032813,180.675225,-1016.065853,2035.202177, + 0,0.999462,-0.032813,653.750225,-1016.065853,2035.202177, + 0,0.986659,-0.162803,180.675225,-1011.80212,2078.49259, + 0,0.973856,-0.227168,653.750225,-1011.80212,2078.49259, + 0,-0.707107,-0.707107,653.750225,-966.763694,1862.604996, + 0.14518,-0.877819,-0.456461,406.150723,-980.534583,1879.384872, + 0,-0.707107,-0.707107,422.745208,-966.763694,1862.604996, + 0.14518,-0.877819,-0.456461,406.150723,-980.534583,1879.384872, + 0,-0.707107,-0.707107,653.750225,-966.763694,1862.604996, + 0,-0.812792,-0.582554,653.750225,-997.119327,1899.593442, + 0.14518,-0.877819,-0.456461,406.150723,-980.534583,1879.384872, + 0,-0.812792,-0.582554,653.750225,-997.119327,1899.593442, + 0.115001,-0.89802,-0.424659,369.41032,-997.119327,1899.593442, + 0,-0.19509,-0.980785,653.750225,-841.785968,1795.80301, + 0,-0.227168,-0.973856,600.307476,-841.785968,1795.80301, + 0,-0.098017,-0.995185,653.750225,-795.278099,1791.222384, + -0.352162,0,-0.935939,15.754347,-977.02193,2076.225749, + -0.227168,0,-0.973856,7.311798,-1077.55801,2078.786769, + -0.162803,-0,-0.986659,7.311798,-977.700144,2078.786769, + -0.227168,0,-0.973856,7.311798,-1077.55801,2078.786769, + -0.352162,0,-0.935939,15.754347,-977.02193,2076.225749, + -0.412792,0,-0.910825,15.754347,-1076.943219,2076.225749, + -0.000463,-0.985777,0.168059,0,-1072.403033,2148.211628, + -0.097671,-0.991674,0.083921,-1.468161,-1078.060378,2079.651519, + 0.032696,-0.995906,0.084279,0,-1078.217216,2079.506918, + -0.097671,-0.991674,0.083921,-38.888103,-1076.067465,2059.650143, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.097931,-0.994307,0.041998,-39.336165,-1076.094273,2058.811877, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.097671,-0.991674,0.083921,-38.888103,-1076.067465,2059.650143, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.097671,-0.991674,0.083921,-38.888103,-1076.067465,2059.650143, + -0.097671,-0.991674,0.083921,-33.291206,-1076.041578,2066.469982, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.097671,-0.991674,0.083921,-33.291206,-1076.041578,2066.469982, + -0.097671,-0.991674,0.083921,-26.471367,-1076.239632,2072.06688, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.097671,-0.991674,0.083921,-26.471367,-1076.239632,2072.06688, + -0.097671,-0.991674,0.083921,-18.690668,-1076.654017,2076.225749, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.097671,-0.991674,0.083921,-18.690668,-1076.654017,2076.225749, + -0.097671,-0.991674,0.083921,-10.248119,-1077.268807,2078.786769, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.097671,-0.991674,0.083921,-10.248119,-1077.268807,2078.786769, + -0.097671,-0.991674,0.083921,-1.468161,-1078.060378,2079.651519, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.097671,-0.991674,0.083921,-1.468161,-1078.060378,2079.651519, + -0.000463,-0.985777,0.168059,0,-1072.403033,2148.211628, + -0.75819,-0.62223,-0.19488,-761.987077,-753.814953,1922.192772, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.684548,-0.684548,-0.250574,-757.858868,-757.858868,1919.763614, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.75819,-0.62223,-0.19488,-761.987077,-753.814953,1922.192772, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.785009,-0.523429,-0.331336,-868.041423,-580.006736,1812.397596, + -0,-0.894427,0.447214,0,-794.166564,1614.76108, + -0.087754,-0.890977,0.445488,-44.790103,-883.186483,1427.89836, + -0,-0.894427,0.447214,0,-887.597924,1427.89836, + -0.087754,-0.890977,0.445488,-44.790103,-883.186483,1427.89836, + -0.191744,-0.873668,0.447144,-154.934211,-778.906876,1614.76108, + -0.174494,-0.877241,0.447214,-173.161765,-870.542978,1427.89836, + -0.191744,-0.873668,0.447144,-154.934211,-778.906876,1614.76108, + -0.087754,-0.890977,0.445488,-44.790103,-883.186483,1427.89836, + -0,-0.894427,0.447214,0,-794.166564,1614.76108, + -0.029352,-0.894042,0.447021,0,-747.450884,1427.89836, + -0.145631,-0.882589,0.447021,-164.047988,-824.724927,1241.03564, + 0.029352,-0.894042,0.447021,0,-840.882244,1241.03564, + -0.145631,-0.882589,0.447021,-164.047988,-824.724927,1241.03564, + -0.029352,-0.894042,0.447021,0,-747.450884,1427.89836, + -0.203207,-0.871137,0.447021,-145.820434,-733.088824,1427.89836, + -0.632155,-0.770284,-0.083921,-702.965588,-809.153242,1972.08037, + -0.632155,-0.770284,-0.083921,-746.546206,-772.245717,1961.599842, + -0.632155,-0.770284,-0.083921,-723.636295,-790.983771,1961.015863, + -0.632155,-0.770284,-0.083921,-746.546206,-772.245717,1961.599842, + -0.632155,-0.770284,-0.083921,-702.965588,-809.153242,1972.08037, + -0.704588,-0.704588,-0.084324,-761.145932,-761.145932,1969.694508, + -0.704588,-0.704588,-0.084324,-761.145932,-761.145932,1969.694508, + -0.632155,-0.770284,-0.083921,-702.965588,-809.153242,1972.08037, + -0.688905,-0.723623,-0.042187,-763.653083,-763.653083,2011.592523, + -0.688905,-0.723623,-0.042187,-763.653083,-763.653083,2011.592523, + -0.632155,-0.770284,-0.083921,-702.965588,-809.153242,1972.08037, + -0.632155,-0.770284,-0.083921,-687.957453,-823.760435,1993.102587, + -0.688905,-0.723623,-0.042187,-763.653083,-763.653083,2011.592523, + -0.632155,-0.770284,-0.083921,-687.957453,-823.760435,1993.102587, + -0.633834,-0.772328,-0.041998,-683.32915,-829.573232,2011.592523, + -0.000913,-0.943512,0.331336,0,-1043.984543,2258.006804, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.000463,-0.985777,0.168059,0,-1072.403033,2148.211628, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.000913,-0.943512,0.331336,0,-1043.984543,2258.006804, + -0.184965,-0.925205,0.331336,-203.671281,-1023.924672,2258.006804, + -0.10232,-0.445425,-0.889453,-712.20051,-793.069744,1912.981477, + 0.071382,-0.616271,-0.784292,-758.928833,-874.671572,1963.870632, + -0.188016,-0.3607,-0.913535,-781.550765,-852.489443,1950.715796, + 0.071382,-0.616271,-0.784292,-758.928833,-874.671572,1963.870632, + -0.10232,-0.445425,-0.889453,-712.20051,-793.069744,1912.981477, + -0.016378,-0.522321,-0.852592,-697.040319,-808.580815,1922.192772, + 0.071382,-0.616271,-0.784292,-758.928833,-874.671572,1963.870632, + -0.016378,-0.522321,-0.852592,-697.040319,-808.580815,1922.192772, + 0.093452,-0.638076,-0.764282,-679.407718,-824.046894,1931.329012, + -0.098017,-0,0.995185,0,-1078.123237,1989.786957, + -0.032813,-0,0.999462,-1.468161,-978.157452,1989.642356, + 0.032813,0,0.999462,-1.468161,-1077.966399,1989.642356, + -0.032813,-0,0.999462,-1.468161,-978.157452,1989.642356, + -0.098017,-0,0.995185,0,-1078.123237,1989.786957, + -0.098017,-0,0.995185,0,-978.310709,1989.786957, + -0.098017,-0,0.995185,0,-978.310709,1989.786957, + -0.098017,-0,0.995185,0,-1078.123237,1989.786957, + -0.162803,-0,0.986659,7.311798,-977.633668,1990.507106, + -0.162803,-0,0.986659,7.311798,-977.633668,1990.507106, + -0.098017,-0,0.995185,0,-1078.123237,1989.786957, + -0.227168,-0,0.973856,7.311798,-1077.464031,1990.507106, + 0.587181,-0.587181,0.557168,660.670395,-660.670395,2455.64332, + 0.51982,-0.710547,0.474247,554.192058,-829.407027,2361.464898, + 0.62118,-0.639379,0.453133,705.352697,-705.352697,2361.464898, + 0.51982,-0.710547,0.474247,554.192058,-829.407027,2361.464898, + 0.587181,-0.587181,0.557168,660.670395,-660.670395,2455.64332, + 0.438515,-0.705336,0.556961,519.085398,-776.866198,2455.64332, + 0,0,1,519.085398,-776.866198,2455.64332, + 0,0,1,660.670395,-660.670395,2455.64332, + 0,0,1,642.325277,-675.725844,2455.64332, + 0,0,-1,519.085398,-776.866198,2455.64332, + 0,0,-1,642.325277,-675.725844,2455.64332, + 0,0,-1,569.385776,-735.585746,2455.64332, + 0.832671,-0.532692,0.151323,891.670534,-595.795203,2148.211628, + 0.75819,-0.62223,0.19488,884.794335,-604.173876,2148.211628, + 0.828508,-0.553591,0.084324,892.684338,-596.472605,2133.803565, + 0.665498,-0.684813,0.29689,738.20855,-738.20855,2258.006804, + 0.61434,-0.748575,0.249443,724.871896,-750.8761,2252.837783, + 0.684548,-0.684548,0.250574,739.77113,-739.77113,2249.469127, + 0.61434,-0.748575,0.249443,724.871896,-750.8761,2252.837783, + 0.665498,-0.684813,0.29689,738.20855,-738.20855,2258.006804, + 0.61434,-0.748575,0.249443,670.391152,-794.166513,2257.101517, + 0.61434,-0.748575,0.249443,670.391152,-794.166513,2257.101517, + 0.598874,-0.72973,0.329915,653.750225,-807.521706,2258.006804, + 0.61434,-0.748575,0.249443,653.750225,-808.286792,2255.71079, + 0.598874,-0.72973,0.329915,653.750225,-807.521706,2258.006804, + 0.61434,-0.748575,0.249443,670.391152,-794.166513,2257.101517, + 0.665498,-0.684813,0.29689,738.20855,-738.20855,2258.006804, + 0.401793,-0.915697,0.007841,-644.00684,-861.844218,2011.592523, + 0.392989,-0.915858,-0.082244,-731.724734,-900.26268,2019.846175, + 0.37075,-0.899004,-0.2331,-643.970452,-861.831591,2011.202527, + 0.392989,-0.915858,-0.082244,-731.724734,-900.26268,2019.846175, + 0.401793,-0.915697,0.007841,-644.00684,-861.844218,2011.592523, + 0.401793,-0.915697,0.007841,-644.327894,-861.580736,2058.811877, + 0.392989,-0.915858,-0.082244,-731.724734,-900.26268,2019.846175, + 0.401793,-0.915697,0.007841,-644.327894,-861.580736,2058.811877, + 0.392379,-0.910791,0.128444,-731.284145,-899.775643,2054.145111, + 0.392379,-0.910791,0.128444,-731.284145,-899.775643,2054.145111, + 0.401793,-0.915697,0.007841,-644.327894,-861.580736,2058.811877, + 0.376942,-0.89216,0.24893,-644.282481,-861.55593,2059.381644, + -0.36191,-0.871342,0.331336,-399.515588,-964.515951,2258.006804, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.377668,-0.910562,0.168059,-410.390874,-990.771213,2148.211628, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.36191,-0.871342,0.331336,-399.515588,-964.515951,2258.006804, + -0.538332,-0.779667,0.319873,-580.006736,-868.041423,2258.006804, + 0.826255,-0.551707,-0.113678,704.675266,-470.848959,796.15315, + 0.909392,-0.412143,0.056077,784.574342,-324.981333,855.371869, + 0.811513,-0.581637,0.056077,706.098253,-471.799769,855.371869, + 0.909392,-0.412143,0.056077,784.574342,-324.981333,855.371869, + 0.826255,-0.551707,-0.113678,704.675266,-470.848959,796.15315, + 0.918011,-0.379912,-0.113678,782.993204,-324.326404,796.15315, + 0.887172,-0.366638,-0.280182,772.17609,-319.845809,738.078199, + 0.974489,-0.193517,-0.113678,831.221151,-165.340167,796.15315, + 0.918011,-0.379912,-0.113678,782.993204,-324.326404,796.15315, + 0.974489,-0.193517,-0.113678,831.221151,-165.340167,796.15315, + 0.887172,-0.366638,-0.280182,772.17609,-319.845809,738.078199, + 0.941653,-0.186514,-0.280182,819.737765,-163.055979,738.078199, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.098017,-0.995185,0,40.110651,-1076.017993,2017.42443, + 0.097931,-0.994307,-0.041998,36.993432,-1076.325013,2011.592523, + 0.098017,-0.995185,0,40.110651,-1076.017993,2017.42443, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.098017,-0.995185,0,40.110651,-1076.017993,2017.42443, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.098017,-0.995185,-0,42.671671,-1075.765755,2025.866979, + 0.098017,-0.995185,-0,42.671671,-1075.765755,2025.866979, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.098017,-0.995185,-0,43.536421,-1075.680584,2034.646937, + 0.098017,-0.995185,-0,43.536421,-1075.680584,2034.646937, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.098017,-0.995185,0,42.671671,-1075.765755,2043.426896, + 0.098017,-0.995185,0,42.671671,-1075.765755,2043.426896, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.098017,-0.995185,-0,40.110651,-1076.017993,2051.869445, + 0.098017,-0.995185,-0,40.110651,-1076.017993,2051.869445, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.097863,-0.993624,0.055991,36.399844,-1076.383476,2058.811877, + 0.80808,-0.541317,-0.232341,-833.682296,-797.914759,2048.438454, + 0.706214,-0.448152,-0.548107,-781.183382,-739.911027,2076.744949, + 0.706214,-0.448152,-0.548107,-827.129718,-803.865138,2069.836076, + 0.706214,-0.448152,-0.548107,-781.183382,-739.911027,2076.744949, + 0.80808,-0.541317,-0.232341,-833.682296,-797.914759,2048.438454, + 0.770593,-0.512719,-0.378558,-786.924742,-735.296195,2058.807508, + 0.770593,-0.512719,-0.378558,-786.924742,-735.296195,2058.807508, + 0.80808,-0.541317,-0.232341,-833.682296,-797.914759,2048.438454, + 0.814584,-0.546562,-0.194222,-789.342859,-732.349615,2049.894341, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.014463,-0.987633,-0.156114,0,-1072.403033,1922.192772, + 0.215316,-0.958117,-0.188816,209.215453,-1051.797109,1922.192772, + 0.014463,-0.987633,-0.156114,0,-1072.403033,1922.192772, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.097671,-0.991674,-0.083921,7.311798,-1077.464031,1990.507106, + 0.014463,-0.987633,-0.156114,0,-1072.403033,1922.192772, + 0.097671,-0.991674,-0.083921,7.311798,-1077.464031,1990.507106, + -0.032696,-0.995906,-0.084279,0,-1078.123237,1989.786957, + 0.097671,-0.991674,-0.083921,7.311798,-1077.464031,1990.507106, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.097671,-0.991674,-0.083921,15.754347,-1076.84924,1993.068126, + 0.097671,-0.991674,-0.083921,15.754347,-1076.84924,1993.068126, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.097671,-0.991674,-0.083921,23.535045,-1076.434855,1997.226995, + 0.097671,-0.991674,-0.083921,23.535045,-1076.434855,1997.226995, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.097671,-0.991674,-0.083921,30.354884,-1076.236801,2002.823893, + 0.097671,-0.991674,-0.083921,30.354884,-1076.236801,2002.823893, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.097671,-0.991674,-0.083921,35.951781,-1076.262688,2009.643732, + 0.097671,-0.991674,-0.083921,35.951781,-1076.262688,2009.643732, + 0.167148,-0.984089,-0.060252,210.691412,-1059.217255,2011.592523, + 0.097931,-0.994307,-0.041998,36.993432,-1076.325013,2011.592523, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.382396,-0.923034,0.0422,-413.286071,-997.760837,2058.811877, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.382396,-0.923034,0.0422,-413.286071,-997.760837,2058.811877, + -0.145329,-0.981317,0.126081,-209.215453,-1051.797109,2148.211628, + -0.377668,-0.910562,0.168059,-410.390874,-990.771213,2148.211628, + -0.369253,-0.814754,0.447021,-268.159753,-647.394912,1241.03564, + -0.472298,-0.759676,0.447021,-441.215303,-660.325365,1054.17292, + -0.315017,-0.837219,0.447021,-303.914386,-733.714234,1054.17292, + -0.472298,-0.759676,0.447021,-441.215303,-660.325365,1054.17292, + -0.369253,-0.814754,0.447021,-268.159753,-647.394912,1241.03564, + -0.521108,-0.727062,0.447021,-389.30762,-582.640028,1241.03564, + 0.941653,-0.186514,-0.280182,819.737765,-163.055979,738.078199, + 0.985217,-0.097035,-0.141176,847.505736,0,796.15315, + 0.974489,-0.193517,-0.113678,831.221151,-165.340167,796.15315, + 0.985217,-0.097035,-0.141176,847.505736,0,796.15315, + 0.941653,-0.186514,-0.280182,819.737765,-163.055979,738.078199, + 0.947451,-0.093316,-0.305988,835.797377,0,738.078199, + -0.019694,-0.599883,0.799845,0,-840.882244,914.026067, + -0.097715,-0.592199,0.799845,-127.592879,-641.452722,1054.17292, + -0.136347,-0.584514,0.799845,-164.047988,-824.724927,914.026067, + -0.097715,-0.592199,0.799845,-127.592879,-641.452722,1054.17292, + -0.019694,-0.599883,0.799845,0,-840.882244,914.026067, + 0.019694,-0.599883,0.799845,0,-654.019524,1054.17292, + 1,0,0,653.750225,-1033.56568,1987.582722, + 1,0,0,653.750225,-1033.56568,2082.821632, + 1,0,0,653.750225,-1038.255787,2035.202177, + 1,0,0,653.750225,-1033.56568,2082.821632, + 1,0,0,653.750225,-1033.56568,1987.582722, + 1,0,0,653.750225,-1019.675597,1941.793256, + 1,0,0,653.750225,-1033.56568,2082.821632, + 1,0,0,653.750225,-1019.675597,1941.793256, + 1,0,0,653.750225,-1019.675597,2128.611098, + 1,0,0,653.750225,-1019.675597,2128.611098, + 1,0,0,653.750225,-1019.675597,1941.793256, + 1,0,0,653.750225,-1016.065853,2035.202177, + 1,0,0,653.750225,-1016.065853,2035.202177, + 1,0,0,653.750225,-1019.675597,1941.793256, + 1,0,0,653.750225,-1011.80212,1991.911763, + 1,0,0,653.750225,-1011.80212,1991.911763, + 1,0,0,653.750225,-1019.675597,1941.793256, + 1,0,0,653.750225,-997.119327,1899.593442, + 1,0,0,653.750225,-1011.80212,1991.911763, + 1,0,0,653.750225,-997.119327,1899.593442, + 1,0,0,653.750225,-999.174772,1950.284976, + 1,0,0,653.750225,-999.174772,1950.284976, + 1,0,0,653.750225,-997.119327,1899.593442, + 1,0,0,653.750225,-978.669071,1911.921509, + 1,0,0,653.750225,-978.669071,1911.921509, + 1,0,0,653.750225,-997.119327,1899.593442, + 1,0,0,653.750225,-966.763694,1862.604996, + 1,0,0,653.750225,-978.669071,1911.921509, + 1,0,0,653.750225,-966.763694,1862.604996, + 1,0,0,653.750225,-951.073041,1878.295649, + 1,0,0,653.750225,-951.073041,1878.295649, + 1,0,0,653.750225,-966.763694,1862.604996, + 1,0,0,653.750225,-929.775248,1832.249363, + 1,0,0,653.750225,-951.073041,1878.295649, + 1,0,0,653.750225,-929.775248,1832.249363, + 1,0,0,653.750225,-917.447181,1850.699619, + 1,0,0,653.750225,-917.447181,1850.699619, + 1,0,0,653.750225,-929.775248,1832.249363, + 1,0,0,653.750225,-887.575434,1809.693092, + 1,0,0,653.750225,-917.447181,1850.699619, + 1,0,0,653.750225,-887.575434,1809.693092, + 1,0,0,653.750225,-879.083714,1830.193918, + 1,0,0,653.750225,-879.083714,1830.193918, + 1,0,0,653.750225,-887.575434,1809.693092, + 1,0,-0,653.750225,-841.785968,1795.80301, + 1,0,0,653.750225,-879.083714,1830.193918, + 1,0,-0,653.750225,-841.785968,1795.80301, + 1,0,0,653.750225,-837.456927,1817.56657, + 1,0,0,653.750225,-837.456927,1817.56657, + 1,0,-0,653.750225,-841.785968,1795.80301, + 1,0,-0,653.750225,-795.278099,1791.222384, + 1,0,0,653.750225,-837.456927,1817.56657, + 1,0,-0,653.750225,-795.278099,1791.222384, + 1,0,0,653.750225,-807.521706,1812.397596, + 1,0,0,653.750225,-837.456927,1817.56657, + 1,0,0,653.750225,-807.521706,1812.397596, + 1,0,0,653.750225,-808.286776,1814.693561, + 1,0,0,653.750225,-1019.675597,2128.611098, + 1,0,0,653.750225,-1011.80212,2078.49259, + 1,0,0,653.750225,-997.119327,2170.810911, + 1,0,0,653.750225,-1011.80212,2078.49259, + 1,0,0,653.750225,-1019.675597,2128.611098, + 1,0,0,653.750225,-1016.065853,2035.202177, + 1,0,0,653.750225,-997.119327,2170.810911, + 1,0,0,653.750225,-1011.80212,2078.49259, + 1,0,0,653.750225,-999.174772,2120.119378, + 1,0,0,653.750225,-997.119327,2170.810911, + 1,0,0,653.750225,-999.174772,2120.119378, + 1,0,0,653.750225,-978.669071,2158.482845, + 1,0,0,653.750225,-997.119327,2170.810911, + 1,0,0,653.750225,-978.669071,2158.482845, + 1,0,0,653.750225,-966.763694,2207.799357, + 1,0,0,653.750225,-966.763694,2207.799357, + 1,0,0,653.750225,-978.669071,2158.482845, + 1,0,0,653.750225,-951.073041,2192.108705, + 1,0,0,653.750225,-966.763694,2207.799357, + 1,0,0,653.750225,-951.073041,2192.108705, + 1,0,0,653.750225,-929.775248,2238.154991, + 1,0,0,653.750225,-929.775248,2238.154991, + 1,0,0,653.750225,-951.073041,2192.108705, + 1,0,0,653.750225,-917.447181,2219.704735, + 1,0,0,653.750225,-929.775248,2238.154991, + 1,0,0,653.750225,-917.447181,2219.704735, + 1,0,0,653.750225,-887.575434,2260.711261, + 1,0,0,653.750225,-887.575434,2260.711261, + 1,0,0,653.750225,-917.447181,2219.704735, + 1,0,0,653.750225,-879.083714,2240.210435, + 1,0,0,653.750225,-887.575434,2260.711261, + 1,0,0,653.750225,-879.083714,2240.210435, + 1,0,0,653.750225,-841.785968,2274.601344, + 1,0,0,653.750225,-841.785968,2274.601344, + 1,0,0,653.750225,-879.083714,2240.210435, + 1,0,0,653.750225,-837.456927,2252.837783, + 1,0,0,653.750225,-841.785968,2274.601344, + 1,0,0,653.750225,-837.456927,2252.837783, + 1,0,0,653.750225,-795.278128,2279.181966, + 1,0,0,653.750225,-795.278128,2279.181966, + 1,0,0,653.750225,-837.456927,2252.837783, + 1,-0,0,653.750225,-807.521706,2258.006804, + 1,-0,0,653.750225,-807.521706,2258.006804, + 1,0,0,653.750225,-837.456927,2252.837783, + 1,0,0,653.750225,-808.286792,2255.71079, + -0.15672,-0.796215,-0.584364,-152.95461,-768.954752,631.979457, + -0.267337,-0.710498,-0.65094,-285.268899,-688.700045,587.016307, + -0.123588,-0.749001,-0.65094,-145.428824,-731.120069,587.016307, + -0.267337,-0.710498,-0.65094,-285.268899,-688.700045,587.016307, + -0.15672,-0.796215,-0.584364,-152.95461,-768.954752,631.979457, + -0.309043,-0.750341,-0.584364,-300.03126,-724.339538,631.979457, + 0.729928,-0.683524,0,594.593537,-594.593537,2455.64332, + 0.77301,-0.634393,-0,635.110016,-545.224064,2549.07468, + 0.683524,-0.729928,0,594.593537,-594.593537,2549.07468, + 0.77301,-0.634393,-0,635.110016,-545.224064,2549.07468, + 0.729928,-0.683524,0,594.593537,-594.593537,2455.64332, + 0.820367,-0.571838,-0,699.168033,-467.169144,2455.64332, + 0.77301,-0.634393,-0,635.110016,-545.224064,2549.07468, + 0.820367,-0.571838,-0,699.168033,-467.169144,2455.64332, + 0.77301,-0.634393,-0,689.000383,-479.558461,2549.07468, + 0.77301,-0.634393,-0,689.000383,-479.558461,2549.07468, + 0.820367,-0.571838,-0,699.168033,-467.169144,2455.64332, + 0.83147,-0.55557,-0,699.168033,-467.169144,2549.07468, + -0.188671,-0.808825,0.556961,-182.278552,-916.376162,2455.64332, + -0.335858,-0.807337,0.485186,-381.734129,-921.587711,2361.464898, + -0.171901,-0.857347,0.485186,-194.606371,-978.352295,2361.464898, + -0.335858,-0.807337,0.485186,-381.734129,-921.587711,2361.464898, + -0.188671,-0.808825,0.556961,-182.278552,-916.376162,2455.64332, + -0.34284,-0.756475,0.556961,-357.552241,-863.20747,2455.64332, + 0,0,-1,-357.552241,-863.20747,2455.64332, + 0,0,-1,-182.278552,-916.376162,2455.64332, + 0,0,-1,-233.261861,-900.910544,2455.64332, + 0,0,-1,-357.552241,-863.20747,2455.64332, + 0,0,-1,-233.261861,-900.910544,2455.64332, + 0,0,-1,-323.520318,-873.530941,2455.64332, + -0.227168,-0.973856,-0,-164.047988,-824.724927,2549.07468, + -0.352162,-0.935939,-0,-321.791703,-776.873894,2455.64332, + -0.162803,-0.986659,0,-164.047988,-824.724927,2455.64332, + -0.352162,-0.935939,-0,-321.791703,-776.873894,2455.64332, + -0.227168,-0.973856,-0,-164.047988,-824.724927,2549.07468, + -0.412792,-0.910825,-0,-321.791703,-776.873894,2549.07468, + 0,0,-1,-321.791703,-776.873894,2549.07468, + 0,0,-1,-164.047988,-824.724927,2549.07468, + 0,0,-1,-209.932195,-810.806105,2549.07468, + 0,0,1,-321.791703,-776.873894,2549.07468, + 0,0,1,-209.932195,-810.806105,2549.07468, + 0,0,1,-291.163467,-786.164868,2549.07468, + -0.17413,-0.881651,-0.438601,-158.887376,-798.780783,682.822311, + -0.309043,-0.750341,-0.584364,-300.03126,-724.339538,631.979457, + -0.15672,-0.796215,-0.584364,-152.95461,-768.954752,631.979457, + -0.309043,-0.750341,-0.584364,-300.03126,-724.339538,631.979457, + -0.17413,-0.881651,-0.438601,-158.887376,-798.780783,682.822311, + -0.342785,-0.830739,-0.438601,-311.6688,-752.435044,682.822311, + -0.186514,-0.941653,-0.280182,-163.055979,-819.737765,738.078199, + -0.342785,-0.830739,-0.438601,-311.6688,-752.435044,682.822311, + -0.17413,-0.881651,-0.438601,-158.887376,-798.780783,682.822311, + -0.342785,-0.830739,-0.438601,-311.6688,-752.435044,682.822311, + -0.186514,-0.941653,-0.280182,-163.055979,-819.737765,738.078199, + -0.366638,-0.887172,-0.280182,-319.845809,-772.17609,738.078199, + -0.193517,-0.974489,-0.113678,-165.340167,-831.221151,796.15315, + -0.366638,-0.887172,-0.280182,-319.845809,-772.17609,738.078199, + -0.186514,-0.941653,-0.280182,-163.055979,-819.737765,738.078199, + -0.366638,-0.887172,-0.280182,-319.845809,-772.17609,738.078199, + -0.193517,-0.974489,-0.113678,-165.340167,-831.221151,796.15315, + -0.379912,-0.918011,-0.113678,-324.326404,-782.993204,796.15315, + 0.440459,-0.824041,0.356303,533.995171,-892.635117,2258.006804, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.393751,-0.867338,0.304443,399.515588,-964.515951,2258.006804, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.440459,-0.824041,0.356303,533.995171,-892.635117,2258.006804, + 0.430365,-0.805157,0.408054,540.89692,-887.575434,2260.711261, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.430365,-0.805157,0.408054,540.89692,-887.575434,2260.711261, + 0.481686,-0.774776,0.409514,577.578294,-864.407003,2267.739328, + 0.366496,-0.808673,0.460139,381.734129,-921.587711,2361.464898, + 0.481686,-0.774776,0.409514,577.578294,-864.407003,2267.739328, + 0.51982,-0.710547,0.474247,554.192058,-829.407027,2361.464898, + 0.194135,-0.974366,-0.113678,165.340167,-831.221151,796.15315, + 0.000777,-0.959946,-0.280182,0,-835.797377,738.078199, + 0.188038,-0.94135,-0.280182,163.055979,-819.737765,738.078199, + 0.000777,-0.959946,-0.280182,0,-835.797377,738.078199, + 0.194135,-0.974366,-0.113678,165.340167,-831.221151,796.15315, + 0.000315,-0.993518,-0.113678,0,-847.505736,796.15315, + -0.910916,-0.376813,0.168059,-990.771213,-410.390874,2148.211628, + -0.972989,-0.226965,0.042178,-1059.217255,-210.691412,2058.811877, + -0.910015,-0.412425,0.042178,-997.760837,-413.286071,2058.811877, + -0.972989,-0.226965,0.042178,-1059.217255,-210.691412,2058.811877, + -0.910916,-0.376813,0.168059,-990.771213,-410.390874,2148.211628, + -0.966926,-0.191862,0.168059,-1051.797109,-209.215453,2148.211628, + 0,0.707107,-0.707107,180.675225,-951.073041,2192.108705, + 0,0.812792,-0.582554,653.750225,-978.669071,2158.482845, + 0,0.849252,-0.527988,180.675225,-978.669071,2158.482845, + 0,0.812792,-0.582554,653.750225,-978.669071,2158.482845, + 0,0.707107,-0.707107,180.675225,-951.073041,2192.108705, + 0,0.707107,-0.707107,653.750225,-951.073041,2192.108705, + 0,0.935939,-0.352162,180.675225,-999.174772,2120.119378, + 0,0.973856,-0.227168,653.750225,-1011.80212,2078.49259, + 0,0.986659,-0.162803,180.675225,-1011.80212,2078.49259, + 0,0.973856,-0.227168,653.750225,-1011.80212,2078.49259, + 0,0.935939,-0.352162,180.675225,-999.174772,2120.119378, + 0,0.910825,-0.412792,653.750225,-999.174772,2120.119378, + 0.587879,-0.48246,-0.649331,610.800046,-425.129379,587.016307, + 0.592439,-0.554776,-0.584157,554.385481,-554.385481,631.979457, + 0.518883,-0.55411,-0.65094,527.108195,-527.108195,587.016307, + 0.592439,-0.554776,-0.584157,554.385481,-554.385481,631.979457, + 0.587879,-0.48246,-0.649331,610.800046,-425.129379,587.016307, + 0.675632,-0.449489,-0.584364,651.888362,-435.577878,631.979457, + 0.675632,-0.449489,-0.584364,651.888362,-435.577878,631.979457, + 0.587879,-0.48246,-0.649331,610.800046,-425.129379,587.016307, + 0.644692,-0.400811,-0.65094,619.813666,-414.146251,587.016307, + 0,-0.720896,0.693044,653.750225,-966.763694,2207.799357, + 0.144571,-0.892809,0.426605,369.410361,-997.119327,2170.810911, + 0,-0.85779,0.514001,653.750225,-997.119327,2170.810911, + 0.144571,-0.892809,0.426605,369.410361,-997.119327,2170.810911, + 0,-0.720896,0.693044,653.750225,-966.763694,2207.799357, + 0.14518,-0.877819,0.456461,406.150729,-980.534599,2191.019462, + 0.14518,-0.877819,0.456461,406.150729,-980.534599,2191.019462, + 0,-0.720896,0.693044,653.750225,-966.763694,2207.799357, + 0,-0.707107,0.707107,422.745234,-966.763694,2207.799357, + 0.710498,-0.267337,-0.65094,688.700045,-285.268899,587.016307, + 0.787008,-0.166056,-0.594175,768.954752,-152.95461,631.979457, + 0.731226,-0.321864,-0.601425,724.339538,-300.03126,631.979457, + 0.787008,-0.166056,-0.594175,768.954752,-152.95461,631.979457, + 0.710498,-0.267337,-0.65094,688.700045,-285.268899,587.016307, + 0.727759,-0.220763,-0.649331,707.864018,-222.093747,587.016307, + 0.787008,-0.166056,-0.594175,768.954752,-152.95461,631.979457, + 0.727759,-0.220763,-0.649331,707.864018,-222.093747,587.016307, + 0.749001,-0.123588,-0.65094,731.120069,-145.428824,587.016307, + 0.871137,-0.203207,0.447021,778.906876,-154.934211,1054.17292, + 0.837219,-0.315017,0.447021,647.394912,-268.159753,1241.03564, + 0.814754,-0.369253,0.447021,733.714234,-303.914386,1054.17292, + 0.837219,-0.315017,0.447021,647.394912,-268.159753,1241.03564, + 0.871137,-0.203207,0.447021,778.906876,-154.934211,1054.17292, + 0.882589,-0.145631,0.447021,687.270773,-136.706657,1241.03564, + -0.191744,-0.873668,0.447144,-154.934211,-778.906876,1614.76108, + -0.259888,-0.856737,0.445488,-221.595076,-855.850894,1427.89836, + -0.174494,-0.877241,0.447214,-173.161765,-870.542978,1427.89836, + -0.259888,-0.856737,0.445488,-221.595076,-855.850894,1427.89836, + -0.191744,-0.873668,0.447144,-154.934211,-778.906876,1614.76108, + -0.259888,-0.856737,0.445488,-307.339193,-829.840701,1427.89836, + -0.259888,-0.856737,0.445488,-307.339193,-829.840701,1427.89836, + -0.358504,-0.819473,0.447144,-303.914386,-733.714234,1614.76108, + -0.342282,-0.826343,0.447214,-339.66902,-820.033555,1427.89836, + -0.358504,-0.819473,0.447144,-303.914386,-733.714234,1614.76108, + -0.259888,-0.856737,0.445488,-307.339193,-829.840701,1427.89836, + -0.191744,-0.873668,0.447144,-154.934211,-778.906876,1614.76108, + -0.167565,-0.847548,-0.503571,-194.606371,-978.352295,1708.939502, + -0.241413,-0.795831,-0.555314,-233.261862,-900.910544,1614.76108, + -0.162003,-0.814444,-0.557168,-182.278552,-916.376162,1614.76108, + -0.241413,-0.795831,-0.555314,-233.261862,-900.910544,1614.76108, + -0.167565,-0.847548,-0.503571,-194.606371,-978.352295,1708.939502, + -0.241413,-0.795831,-0.555314,-323.520318,-873.530941,1614.76108, + -0.241413,-0.795831,-0.555314,-323.520318,-873.530941,1614.76108, + -0.329694,-0.798573,-0.503571,-381.734129,-921.587711,1708.939502, + -0.31778,-0.767189,-0.557168,-357.552241,-863.20747,1614.76108, + -0.329694,-0.798573,-0.503571,-381.734129,-921.587711,1708.939502, + -0.241413,-0.795831,-0.555314,-323.520318,-873.530941,1614.76108, + -0.167565,-0.847548,-0.503571,-194.606371,-978.352295,1708.939502, + -0.819881,-0.571538,0.033755,-897.96103,-599.998378,2058.811877, + -0.772328,-0.633835,-0.041994,-818.480102,-696.846173,2011.592491, + -0.771796,-0.633401,0.055987,-818.273878,-697.096462,2058.801607, + -0.772328,-0.633835,-0.041994,-818.480102,-696.846173,2011.592491, + -0.819881,-0.571538,0.033755,-897.96103,-599.998378,2058.811877, + -0.841785,-0.538757,-0.033753,-897.96103,-599.998378,2011.592523, + 0.117054,-0.588471,0.8,164.047988,-824.724927,914.026067, + 0.019694,-0.599883,0.799845,0,-654.019524,1054.17292, + -0.019694,-0.599883,0.799845,0,-840.882244,914.026067, + 0.019694,-0.599883,0.799845,0,-654.019524,1054.17292, + 0.117054,-0.588471,0.8,164.047988,-824.724927,914.026067, + 0.117054,-0.588471,0.8,127.592879,-641.452722,1054.17292, + 0,0.910825,0.412792,180.675225,-999.174772,1950.284976, + 0,0.849252,0.527988,653.750225,-978.669071,1911.921509, + 0,0.812792,0.582554,180.675225,-978.669071,1911.921509, + 0,0.849252,0.527988,653.750225,-978.669071,1911.921509, + 0,0.910825,0.412792,180.675225,-999.174772,1950.284976, + 0,0.935939,0.352162,653.750225,-999.174772,1950.284976, + 0.925561,-0.183175,-0.331336,1023.924672,-203.671281,1812.397596, + 0.976104,-0.096138,-0.19488,1072.403033,0,1922.192772, + 0.966926,-0.191862,-0.168059,1051.797109,-209.215453,1922.192772, + 0.976104,-0.096138,-0.19488,1072.403033,0,1922.192772, + 0.925561,-0.183175,-0.331336,1023.924672,-203.671281,1812.397596, + 0.929871,-0.091584,-0.356303,1043.984543,0,1812.397596, + -0,0.032813,-0.999462,670.391152,-794.166513,2257.101517, + -0,0.146613,-0.989194,180.675225,-837.456927,2252.837783, + 0,-0.032813,-0.999462,180.675225,-794.166513,2257.101517, + -0,0.146613,-0.989194,180.675225,-837.456927,2252.837783, + -0,0.032813,-0.999462,670.391152,-794.166513,2257.101517, + -0,0.098017,-0.995185,653.750225,-808.286792,2255.71079, + 0,0.227168,-0.973856,653.750225,-837.456927,2252.837783, + -0,0.146613,-0.989194,180.675225,-837.456927,2252.837783, + -0,0.098017,-0.995185,653.750225,-808.286792,2255.71079, + 0.456496,-0.854043,0.249443,422.745234,-966.763694,2207.799357, + 0.393751,-0.867338,0.304443,399.515588,-964.515951,2258.006804, + 0.340939,-0.906111,0.250448,406.150729,-980.534599,2191.019462, + 0.393751,-0.867338,0.304443,399.515588,-964.515951,2258.006804, + 0.456496,-0.854043,0.249443,422.745234,-966.763694,2207.799357, + 0.456496,-0.854043,0.249443,475.358507,-929.775248,2238.154991, + 0.393751,-0.867338,0.304443,399.515588,-964.515951,2258.006804, + 0.456496,-0.854043,0.249443,475.358507,-929.775248,2238.154991, + 0.440459,-0.824041,0.356303,533.995171,-892.635117,2258.006804, + -0.098017,-0.995185,-0,-43.046973,-1075.728791,2017.42443, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.097931,-0.994307,-0.041998,-39.929753,-1076.03581,2011.592523, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.098017,-0.995185,-0,-43.046973,-1075.728791,2017.42443, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.098017,-0.995185,-0,-43.046973,-1075.728791,2017.42443, + -0.098017,-0.995185,-0,-45.607992,-1075.476552,2025.866979, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.098017,-0.995185,-0,-45.607992,-1075.476552,2025.866979, + -0.098017,-0.995185,-0,-46.472742,-1075.391382,2034.646937, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.098017,-0.995185,-0,-46.472742,-1075.391382,2034.646937, + -0.098017,-0.995185,0,-45.607992,-1075.476552,2043.426896, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.098017,-0.995185,0,-45.607992,-1075.476552,2043.426896, + -0.098017,-0.995185,0,-43.046973,-1075.728791,2051.869445, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.098017,-0.995185,0,-43.046973,-1075.728791,2051.869445, + -0.097931,-0.994307,0.041998,-39.336165,-1076.094273,2058.811877, + -0.925561,-0.183175,-0.331336,-1023.924672,-203.671281,1812.397596, + -0.79057,-0.348586,-0.503476,-921.587711,-381.734129,1708.939502, + -0.872041,-0.360223,-0.331336,-964.515951,-399.515588,1812.397596, + -0.79057,-0.348586,-0.503476,-921.587711,-381.734129,1708.939502, + -0.925561,-0.183175,-0.331336,-1023.924672,-203.671281,1812.397596, + -0.843385,-0.187656,-0.503476,-978.352295,-194.606371,1708.939502, + -0.966926,-0.191862,-0.168059,-1051.797109,-209.215453,1922.192772, + -0.872041,-0.360223,-0.331336,-964.515951,-399.515588,1812.397596, + -0.910916,-0.376813,-0.168059,-990.771213,-410.390874,1922.192772, + -0.872041,-0.360223,-0.331336,-964.515951,-399.515588,1812.397596, + -0.966926,-0.191862,-0.168059,-1051.797109,-209.215453,1922.192772, + -0.925561,-0.183175,-0.331336,-1023.924672,-203.671281,1812.397596, + -0.634393,-0.77301,-0,-680.414811,-831.964968,2020.575089, + -0.688905,-0.723623,-0.042187,-763.653083,-763.653083,2011.592523, + -0.633834,-0.772328,-0.041998,-683.32915,-829.573232,2011.592523, + -0.688905,-0.723623,-0.042187,-763.653083,-763.653083,2011.592523, + -0.634393,-0.77301,-0,-680.414811,-831.964968,2020.575089, + -0.683228,-0.729664,0.028116,-763.653083,-763.653083,2058.811877, + -0.683228,-0.729664,0.028116,-763.653083,-763.653083,2058.811877, + -0.634393,-0.77301,-0,-680.414811,-831.964968,2020.575089, + -0.634393,-0.77301,-0,-680.521947,-831.877044,2050.149043, + -0.683228,-0.729664,0.028116,-763.653083,-763.653083,2058.811877, + -0.634393,-0.77301,-0,-680.521947,-831.877044,2050.149043, + -0.633398,-0.771798,0.055991,-683.397325,-829.517282,2058.811877, + 0.814754,-0.369253,0.447021,733.714234,-303.914386,1054.17292, + 0.759676,-0.472298,0.447021,582.640028,-389.30762,1241.03564, + 0.727062,-0.521108,0.447021,660.325365,-441.215303,1054.17292, + 0.759676,-0.472298,0.447021,582.640028,-389.30762,1241.03564, + 0.814754,-0.369253,0.447021,733.714234,-303.914386,1054.17292, + 0.837219,-0.315017,0.447021,647.394912,-268.159753,1241.03564, + -0.819473,-0.358504,0.447144,-733.714234,-303.914386,1614.76108, + -0.856737,-0.259888,0.445488,-842.852042,-264.446548,1427.89836, + -0.826343,-0.342282,0.447214,-820.033555,-339.66902,1427.89836, + -0.856737,-0.259888,0.445488,-842.852042,-264.446548,1427.89836, + -0.819473,-0.358504,0.447144,-733.714234,-303.914386,1614.76108, + -0.873668,-0.191744,0.447144,-778.906876,-154.934211,1614.76108, + -0.856737,-0.259888,0.445488,-842.852042,-264.446548,1427.89836, + -0.873668,-0.191744,0.447144,-778.906876,-154.934211,1614.76108, + -0.856737,-0.259888,0.445488,-868.904109,-178.564394,1427.89836, + -0.856737,-0.259888,0.445488,-868.904109,-178.564394,1427.89836, + -0.873668,-0.191744,0.447144,-778.906876,-154.934211,1614.76108, + -0.877241,-0.174494,0.447214,-870.542978,-173.161765,1427.89836, + -0.843385,-0.187656,-0.503476,-978.352295,-194.606371,1708.939502, + -0.777333,-0.292484,-0.556961,-863.20747,-357.552241,1614.76108, + -0.79057,-0.348586,-0.503476,-921.587711,-381.734129,1708.939502, + -0.777333,-0.292484,-0.556961,-863.20747,-357.552241,1614.76108, + -0.843385,-0.187656,-0.503476,-978.352295,-194.606371,1708.939502, + -0.795831,-0.241413,-0.555314,-887.227324,-278.369395,1614.76108, + -0.795831,-0.241413,-0.555314,-887.227324,-278.369395,1614.76108, + -0.843385,-0.187656,-0.503476,-978.352295,-194.606371,1708.939502, + -0.795831,-0.241413,-0.555314,-914.651019,-187.965588,1614.76108, + -0.795831,-0.241413,-0.555314,-914.651019,-187.965588,1614.76108, + -0.843385,-0.187656,-0.503476,-978.352295,-194.606371,1708.939502, + -0.819458,-0.135214,-0.556961,-916.376162,-182.278552,1614.76108, + 0.747902,-0.498268,-0.438601,677.173649,-452.472967,682.822311, + 0.887172,-0.366638,-0.280182,772.17609,-319.845809,738.078199, + 0.798598,-0.532672,-0.280182,694.940121,-464.344144,738.078199, + 0.887172,-0.366638,-0.280182,772.17609,-319.845809,738.078199, + 0.747902,-0.498268,-0.438601,677.173649,-452.472967,682.822311, + 0.830739,-0.342785,-0.438601,752.435044,-311.6688,682.822311, + -0.342785,-0.830739,-0.438601,-311.6688,-752.435044,682.822311, + -0.449489,-0.675632,-0.584364,-435.577878,-651.888362,631.979457, + -0.309043,-0.750341,-0.584364,-300.03126,-724.339538,631.979457, + -0.449489,-0.675632,-0.584364,-435.577878,-651.888362,631.979457, + -0.342785,-0.830739,-0.438601,-311.6688,-752.435044,682.822311, + -0.498268,-0.747902,-0.438601,-452.472967,-677.173649,682.822311, + -0.366638,-0.887172,-0.280182,-319.845809,-772.17609,738.078199, + -0.498268,-0.747902,-0.438601,-452.472967,-677.173649,682.822311, + -0.342785,-0.830739,-0.438601,-311.6688,-752.435044,682.822311, + -0.498268,-0.747902,-0.438601,-452.472967,-677.173649,682.822311, + -0.366638,-0.887172,-0.280182,-319.845809,-772.17609,738.078199, + -0.532672,-0.798598,-0.280182,-464.344144,-694.940121,738.078199, + -0.986659,-0,-0.162803,42.671671,-976.334157,2043.426896, + -0.999806,-0,-0.019694,43.536421,-1075.680584,2034.646937, + -0.973856,-0,-0.227168,42.671671,-1075.765755,2043.426896, + -0.999806,-0,-0.019694,43.536421,-1075.680584,2034.646937, + -0.986659,-0,-0.162803,42.671671,-976.334157,2043.426896, + -0.995185,-0,-0.098017,43.481732,-976.746707,2035.2022, + -1,-0,-0,43.536421,-976.708082,2034.646937, + -0.999806,-0,-0.019694,43.536421,-1075.680584,2034.646937, + -0.995185,-0,-0.098017,43.481732,-976.746707,2035.2022, + 0.729928,0,0.683524,-33.291206,-1075.947599,2002.823893, + 0.83147,0,0.55557,-38.888103,-975.6692,2009.643732, + 0.849252,-0,0.527988,-38.888103,-1075.973486,2009.643732, + 0.83147,0,0.55557,-38.888103,-975.6692,2009.643732, + 0.729928,0,0.683524,-33.291206,-1075.947599,2002.823893, + 0.683524,-0,0.729928,-33.291206,-975.812207,2002.823893, + -0.837219,-0.315017,0.447021,-690.554573,-286.03707,1427.89836, + -0.871137,-0.203207,0.447021,-824.724927,-164.047988,1241.03564, + -0.814754,-0.369253,0.447021,-776.873894,-321.791703,1241.03564, + -0.871137,-0.203207,0.447021,-824.724927,-164.047988,1241.03564, + -0.837219,-0.315017,0.447021,-690.554573,-286.03707,1427.89836, + -0.882589,-0.145631,0.447021,-733.088824,-145.820434,1427.89836, + 0.675632,-0.449489,-0.584364,651.888362,-435.577878,631.979457, + 0.830739,-0.342785,-0.438601,752.435044,-311.6688,682.822311, + 0.747902,-0.498268,-0.438601,677.173649,-452.472967,682.822311, + 0.830739,-0.342785,-0.438601,752.435044,-311.6688,682.822311, + 0.675632,-0.449489,-0.584364,651.888362,-435.577878,631.979457, + 0.731226,-0.321864,-0.601425,724.339538,-300.03126,631.979457, + -0.032813,-0.999462,0,0,-840.882244,2549.07468, + -0.162803,-0.986659,0,-164.047988,-824.724927,2455.64332, + 0.032813,-0.999462,0,0,-840.882244,2455.64332, + -0.162803,-0.986659,0,-164.047988,-824.724927,2455.64332, + -0.032813,-0.999462,0,0,-840.882244,2549.07468, + -0.227168,-0.973856,-0,-164.047988,-824.724927,2549.07468, + 0,0,-1,-164.047988,-824.724927,2549.07468, + 0,0,-1,0,-840.882244,2549.07468, + 0,0,-1,-42.432781,-836.702979,2549.07468, + 0,0,1,-164.047988,-824.724927,2549.07468, + 0,0,1,-42.432781,-836.702979,2549.07468, + 0,0,1,-126.903621,-828.383328,2549.07468, + -0.811513,-0.581637,0.056077,-706.098253,-471.799769,855.371869, + -0.704523,-0.704523,-0.085417,-599.277053,-599.277053,796.15315, + -0.691243,-0.718915,0.073102,-600.487204,-600.487204,855.371869, + -0.704523,-0.704523,-0.085417,-599.277053,-599.277053,796.15315, + -0.811513,-0.581637,0.056077,-706.098253,-471.799769,855.371869, + -0.826255,-0.551707,-0.113678,-704.675266,-470.848959,796.15315, + 0.55557,-0,-0.83147,-26.471367,-976.215347,2072.06688, + 0.382683,-0,-0.92388,-18.690668,-1076.654017,2076.225749, + 0.55557,-0,-0.83147,-26.471367,-1076.239632,2072.06688, + 0.382683,-0,-0.92388,-18.690668,-1076.654017,2076.225749, + 0.55557,-0,-0.83147,-26.471367,-976.215347,2072.06688, + 0.382683,0,-0.92388,-18.690668,-976.732727,2076.225749, + -0.412792,-0.910825,-0,-321.791703,-776.873894,2549.07468, + -0.527988,-0.849252,-0,-467.169144,-699.168033,2455.64332, + -0.352162,-0.935939,-0,-321.791703,-776.873894,2455.64332, + -0.527988,-0.849252,-0,-467.169144,-699.168033,2455.64332, + -0.412792,-0.910825,-0,-321.791703,-776.873894,2549.07468, + -0.582554,-0.812792,-0,-467.169144,-699.168033,2549.07468, + 0,0,-1,-467.169144,-699.168033,2549.07468, + 0,0,-1,-321.791703,-776.873894,2549.07468, + 0,0,-1,-368.760189,-751.768716,2549.07468, + 0,0,1,-467.169144,-699.168033,2549.07468, + 0,0,1,-368.760189,-751.768716,2549.07468, + 0,0,1,-443.63534,-711.747113,2549.07468, + -0.309043,-0.750341,-0.584364,-300.03126,-724.339538,631.979457, + -0.400811,-0.644692,-0.65094,-414.146251,-619.813666,587.016307, + -0.267337,-0.710498,-0.65094,-285.268899,-688.700045,587.016307, + -0.400811,-0.644692,-0.65094,-414.146251,-619.813666,587.016307, + -0.309043,-0.750341,-0.584364,-300.03126,-724.339538,631.979457, + -0.449489,-0.675632,-0.584364,-435.577878,-651.888362,631.979457, + 0.561756,-0.21137,0.799845,776.873894,-321.791703,914.026067, + 0.584514,-0.136347,0.799845,641.452722,-127.592879,1054.17292, + 0.546683,-0.247761,0.799845,604.235252,-250.282436,1054.17292, + 0.584514,-0.136347,0.799845,641.452722,-127.592879,1054.17292, + 0.561756,-0.21137,0.799845,776.873894,-321.791703,914.026067, + 0.592199,-0.097715,0.799845,824.724927,-164.047988,914.026067, + 0.55557,-0,-0.83147,-26.471367,-976.215347,2072.06688, + 0.707107,-0,-0.707107,-33.291206,-1076.041578,2066.469982, + 0.707107,0,-0.707107,-33.291206,-975.878684,2066.469982, + 0.707107,-0,-0.707107,-33.291206,-1076.041578,2066.469982, + 0.55557,-0,-0.83147,-26.471367,-976.215347,2072.06688, + 0.55557,-0,-0.83147,-26.471367,-1076.239632,2072.06688, + 0,-0.720896,0.693044,653.750225,-966.763694,2207.799357, + 0,-0.582554,0.812792,475.358507,-929.775248,2238.154991, + 0,-0.707107,0.707107,422.745234,-966.763694,2207.799357, + 0,-0.582554,0.812792,475.358507,-929.775248,2238.154991, + 0,-0.720896,0.693044,653.750225,-966.763694,2207.799357, + -0,-0.514001,0.85779,653.750225,-929.775248,2238.154991, + 0,-0.471397,-0.881921,533.995007,-892.635204,1812.397596, + 0,-0.514001,-0.85779,653.750225,-929.775248,1832.249363, + 0,-0.582554,-0.812792,475.358482,-929.775248,1832.249363, + 0,-0.514001,-0.85779,653.750225,-929.775248,1832.249363, + 0,-0.471397,-0.881921,533.995007,-892.635204,1812.397596, + 0,-0.412792,-0.910825,540.896876,-887.575434,1809.693092, + 0,-0.514001,-0.85779,653.750225,-929.775248,1832.249363, + 0,-0.412792,-0.910825,540.896876,-887.575434,1809.693092, + 0,-0.336778,-0.941584,653.750225,-887.575434,1809.693092, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.832671,-0.532692,0.151323,891.670534,-595.795203,2148.211628, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.901839,-0.40872,0.140121,990.771213,-410.390874,2148.211628, + 0.872041,-0.360223,0.331336,964.515951,-399.515588,2258.006804, + -0.790546,0.249135,-0.559436,-845.012276,-788.258547,1988.011282, + -0.637426,0.090042,-0.765232,-781.354664,-731.718944,1933.517963, + -0.637426,0.090042,-0.765232,-828.138788,-805.72305,1963.780621, + -0.637426,0.090042,-0.765232,-781.354664,-731.718944,1933.517963, + -0.790546,0.249135,-0.559436,-845.012276,-788.258547,1988.011282, + -0.837602,0.298772,-0.457337,-804.883918,-707.527533,1967.257586, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.382289,-0.923079,-0.0422,-413.286071,-997.760837,2011.592523, + -0.150758,-0.986668,-0.06131,-210.691412,-1059.217255,2011.592523, + -0.382289,-0.923079,-0.0422,-413.286071,-997.760837,2011.592523, + -0.150979,-0.98827,0.022991,-210.691412,-1059.217255,2058.811877, + -0.382396,-0.923034,0.0422,-413.286071,-997.760837,2058.811877, + 0.644692,-0.400811,-0.65094,619.813666,-414.146251,587.016307, + 0.731226,-0.321864,-0.601425,724.339538,-300.03126,631.979457, + 0.675632,-0.449489,-0.584364,651.888362,-435.577878,631.979457, + 0.731226,-0.321864,-0.601425,724.339538,-300.03126,631.979457, + 0.644692,-0.400811,-0.65094,619.813666,-414.146251,587.016307, + 0.670707,-0.3585,-0.649331,648.718891,-360.068379,587.016307, + 0.731226,-0.321864,-0.601425,724.339538,-300.03126,631.979457, + 0.670707,-0.3585,-0.649331,648.718891,-360.068379,587.016307, + 0.670707,-0.3585,-0.649331,684.232405,-293.627267,587.016307, + 0.731226,-0.321864,-0.601425,724.339538,-300.03126,631.979457, + 0.670707,-0.3585,-0.649331,684.232405,-293.627267,587.016307, + 0.710498,-0.267337,-0.65094,688.700045,-285.268899,587.016307, + 0.000913,-0.943512,-0.331336,0,-1043.984543,1812.397596, + -0.167565,-0.847548,-0.503571,-194.606371,-978.352295,1708.939502, + 0.001003,-0.863953,-0.503571,0,-997.51935,1708.939502, + -0.167565,-0.847548,-0.503571,-194.606371,-978.352295,1708.939502, + 0.000913,-0.943512,-0.331336,0,-1043.984543,1812.397596, + -0.183175,-0.925561,-0.331336,-203.671281,-1023.924672,1812.397596, + -0.369253,-0.814754,0.447021,-286.03707,-690.554573,1427.89836, + -0.472298,-0.759676,0.447021,-467.169144,-699.168033,1241.03564, + -0.315017,-0.837219,0.447021,-321.791703,-776.873894,1241.03564, + -0.472298,-0.759676,0.447021,-467.169144,-699.168033,1241.03564, + -0.369253,-0.814754,0.447021,-286.03707,-690.554573,1427.89836, + -0.521108,-0.727062,0.447021,-415.261462,-621.482696,1427.89836, + 0,0,1,-925.063958,-94.069883,2455.64332, + 0,0,1,-840.882244,0,2455.64332, + 0,0,1,-934.329033,0,2455.64332, + 0,0,1,-840.882244,0,2455.64332, + 0,0,1,-925.063958,-94.069883,2455.64332, + 0,0,1,-916.376162,-182.278552,2455.64332, + 0,0,1,-840.882244,0,2455.64332, + 0,0,1,-916.376162,-182.278552,2455.64332, + 0,0,1,-914.651019,-187.965588,2455.64332, + 0,0,1,-840.882244,0,2455.64332, + 0,0,1,-914.651019,-187.965588,2455.64332, + 0,0,1,-887.227323,-278.369396,2455.64332, + 0,0,1,-840.882244,0,2455.64332, + 0,0,1,-887.227323,-278.369396,2455.64332, + 0,0,1,-863.20747,-357.552241,2455.64332, + 0,0,1,-840.882244,0,2455.64332, + 0,0,1,-863.20747,-357.552241,2455.64332, + 0,0,1,-857.607798,-368.02849,2455.64332, + 0,0,1,-840.882244,0,2455.64332, + 0,0,1,-857.607798,-368.02849,2455.64332, + 0,0,1,-813.095616,-451.304926,2455.64332, + 0,0,1,-840.882244,0,2455.64332, + 0,0,1,-813.095616,-451.304926,2455.64332, + 0,0,1,-824.724927,-164.047988,2455.64332, + 0,0,1,-824.724927,-164.047988,2455.64332, + 0,0,1,-813.095616,-451.304926,2455.64332, + 0,0,1,-776.873894,-321.791703,2455.64332, + 0,0,1,-776.873894,-321.791703,2455.64332, + 0,0,1,-813.095616,-451.304926,2455.64332, + 0,0,1,-776.866198,-519.085398,2455.64332, + 0,0,1,-776.873894,-321.791703,2455.64332, + 0,0,1,-776.866198,-519.085398,2455.64332, + 0,0,1,-699.168033,-467.169144,2455.64332, + 0,0,1,-699.168033,-467.169144,2455.64332, + 0,0,1,-776.866198,-519.085398,2455.64332, + 0,0,1,-765.568614,-532.851545,2455.64332, + 0,0,1,-699.168033,-467.169144,2455.64332, + 0,0,1,-765.568614,-532.851545,2455.64332, + 0,0,1,-705.689427,-605.814545,2455.64332, + 0,0,1,-699.168033,-467.169144,2455.64332, + 0,0,1,-705.689427,-605.814545,2455.64332, + 0,0,1,-660.670395,-660.670395,2455.64332, + 0,0,1,-699.168033,-467.169144,2455.64332, + 0,0,1,-660.670395,-660.670395,2455.64332, + 0,0,1,-594.593537,-594.593537,2455.64332, + 0,0,1,-594.593537,-594.593537,2455.64332, + 0,0,1,-660.670395,-660.670395,2455.64332, + 0,0,1,-642.325255,-675.725862,2455.64332, + 0,0,1,-594.593537,-594.593537,2455.64332, + 0,0,1,-642.325255,-675.725862,2455.64332, + 0,0,1,-569.38575,-735.585766,2455.64332, + 0,0,1,-594.593537,-594.593537,2455.64332, + 0,0,1,-569.38575,-735.585766,2455.64332, + 0,0,1,-467.169144,-699.168033,2455.64332, + 0,0,1,-467.169144,-699.168033,2455.64332, + 0,0,1,-569.38575,-735.585766,2455.64332, + 0,0,1,-519.085398,-776.866198,2455.64332, + 0,0,1,-467.169144,-699.168033,2455.64332, + 0,0,1,-519.085398,-776.866198,2455.64332, + 0,0,1,-492.936329,-790.843167,2455.64332, + 0,0,1,-467.169144,-699.168033,2455.64332, + 0,0,1,-492.936329,-790.843167,2455.64332, + 0,0,1,-409.740281,-835.312381,2455.64332, + 0,0,1,-467.169144,-699.168033,2455.64332, + 0,0,1,-409.740281,-835.312381,2455.64332, + 0,0,1,-321.791703,-776.873894,2455.64332, + 0,0,1,-321.791703,-776.873894,2455.64332, + 0,0,1,-409.740281,-835.312381,2455.64332, + 0,0,1,-357.552241,-863.20747,2455.64332, + 0,0,1,-321.791703,-776.873894,2455.64332, + 0,0,1,-357.552241,-863.20747,2455.64332, + 0,0,1,-323.520318,-873.530941,2455.64332, + 0,0,1,-321.791703,-776.873894,2455.64332, + 0,0,1,-323.520318,-873.530941,2455.64332, + 0,0,1,-233.261861,-900.910544,2455.64332, + 0,0,1,-321.791703,-776.873894,2455.64332, + 0,0,1,-233.261861,-900.910544,2455.64332, + 0,0,1,-164.047988,-824.724927,2455.64332, + 0,0,1,-164.047988,-824.724927,2455.64332, + 0,0,1,-233.261861,-900.910544,2455.64332, + 0,0,1,-182.278552,-916.376162,2455.64332, + 0,0,1,-164.047988,-824.724927,2455.64332, + 0,0,1,-182.278552,-916.376162,2455.64332, + 0,0,1,-141.006393,-920.441115,2455.64332, + 0,0,1,-164.047988,-824.724927,2455.64332, + 0,0,1,-141.006393,-920.441115,2455.64332, + 0,0,1,0,-840.882244,2455.64332, + 0,0,1,0,-840.882244,2455.64332, + 0,0,1,-141.006393,-920.441115,2455.64332, + 0,0,1,-47.148298,-929.685331,2455.64332, + 0,0,1,0,-840.882244,2455.64332, + 0,0,1,-47.148298,-929.685331,2455.64332, + 0,0,1,0,-934.329033,2455.64332, + 0,0,1,0,-840.882244,2455.64332, + 0,0,1,0,-934.329033,2455.64332, + 0,0,1,164.047988,-824.724927,2455.64332, + 0,0,1,164.047988,-824.724927,2455.64332, + 0,0,1,0,-934.329033,2455.64332, + 0,0,1,47.148335,-929.685327,2455.64332, + 0,0,1,164.047988,-824.724927,2455.64332, + 0,0,1,47.148335,-929.685327,2455.64332, + 0,0,1,141.006388,-920.441116,2455.64332, + 0,0,1,164.047988,-824.724927,2455.64332, + 0,0,1,141.006388,-920.441116,2455.64332, + 0,0,1,182.278552,-916.376162,2455.64332, + 0,0,1,164.047988,-824.724927,2455.64332, + 0,0,1,182.278552,-916.376162,2455.64332, + 0,0,1,321.791703,-776.873894,2455.64332, + 0,0,1,321.791703,-776.873894,2455.64332, + 0,0,1,182.278552,-916.376162,2455.64332, + 0,0,1,233.2619,-900.910533,2455.64332, + 0,0,1,321.791703,-776.873894,2455.64332, + 0,0,1,233.2619,-900.910533,2455.64332, + 0,0,1,323.520353,-873.53093,2455.64332, + 0,0,1,321.791703,-776.873894,2455.64332, + 0,0,1,323.520353,-873.53093,2455.64332, + 0,0,1,467.169144,-699.168033,2455.64332, + 0,0,1,467.169144,-699.168033,2455.64332, + 0,0,1,323.520353,-873.53093,2455.64332, + 0,0,1,357.552241,-863.20747,2455.64332, + 0,0,1,467.169144,-699.168033,2455.64332, + 0,0,1,357.552241,-863.20747,2455.64332, + 0,0,1,409.740311,-835.312366,2455.64332, + 0,0,1,467.169144,-699.168033,2455.64332, + 0,0,1,409.740311,-835.312366,2455.64332, + 0,0,1,492.936359,-790.843151,2455.64332, + 0,0,1,467.169144,-699.168033,2455.64332, + 0,0,1,492.936359,-790.843151,2455.64332, + 0,0,1,594.593537,-594.593537,2455.64332, + 0,0,1,594.593537,-594.593537,2455.64332, + 0,0,1,492.936359,-790.843151,2455.64332, + 0,0,1,519.085398,-776.866198,2455.64332, + 0,0,1,594.593537,-594.593537,2455.64332, + 0,0,1,519.085398,-776.866198,2455.64332, + 0,0,1,569.385776,-735.585746,2455.64332, + 0,0,1,594.593537,-594.593537,2455.64332, + 0,0,1,569.385776,-735.585746,2455.64332, + 0,0,1,642.325277,-675.725844,2455.64332, + 0,0,1,594.593537,-594.593537,2455.64332, + 0,0,1,642.325277,-675.725844,2455.64332, + 0,0,1,699.168033,-467.169144,2455.64332, + 0,0,1,699.168033,-467.169144,2455.64332, + 0,0,1,642.325277,-675.725844,2455.64332, + 0,0,1,660.670395,-660.670395,2455.64332, + 0,0,1,699.168033,-467.169144,2455.64332, + 0,0,1,660.670395,-660.670395,2455.64332, + 0,0,1,705.689443,-605.814526,2455.64332, + 0,0,1,699.168033,-467.169144,2455.64332, + 0,0,1,705.689443,-605.814526,2455.64332, + 0,0,1,776.873894,-321.791703,2455.64332, + 0,0,1,776.873894,-321.791703,2455.64332, + 0,0,1,705.689443,-605.814526,2455.64332, + 0,0,1,765.568628,-532.851527,2455.64332, + 0,0,1,776.873894,-321.791703,2455.64332, + 0,0,1,765.568628,-532.851527,2455.64332, + 0,0,1,776.866198,-519.085398,2455.64332, + 0,0,1,776.873894,-321.791703,2455.64332, + 0,0,1,776.866198,-519.085398,2455.64332, + 0,0,1,813.095624,-451.30491,2455.64332, + 0,0,1,776.873894,-321.791703,2455.64332, + 0,0,1,813.095624,-451.30491,2455.64332, + 0,0,1,824.724927,-164.047988,2455.64332, + 0,0,1,824.724927,-164.047988,2455.64332, + 0,0,1,813.095624,-451.30491,2455.64332, + 0,0,1,857.607805,-368.028476,2455.64332, + 0,0,1,824.724927,-164.047988,2455.64332, + 0,0,1,857.607805,-368.028476,2455.64332, + 0,0,1,840.882244,0,2455.64332, + 0,0,1,840.882244,0,2455.64332, + 0,0,1,857.607805,-368.028476,2455.64332, + 0,0,1,934.329033,0,2455.64332, + 0,0,1,934.329033,0,2455.64332, + 0,0,1,857.607805,-368.028476,2455.64332, + 0,0,1,863.20747,-357.552241,2455.64332, + 0,0,1,934.329033,0,2455.64332, + 0,0,1,863.20747,-357.552241,2455.64332, + 0,0,1,887.227327,-278.369385,2455.64332, + 0,0,1,934.329033,0,2455.64332, + 0,0,1,887.227327,-278.369385,2455.64332, + 0,0,1,914.651021,-187.965581,2455.64332, + 0,0,1,934.329033,0,2455.64332, + 0,0,1,914.651021,-187.965581,2455.64332, + 0,0,1,925.063958,-94.069877,2455.64332, + 0,0,1,925.063958,-94.069877,2455.64332, + 0,0,1,914.651021,-187.965581,2455.64332, + 0,0,1,916.376162,-182.278552,2455.64332, + 0.146874,-0.976542,0.157463,288.287545,-1033.56568,2082.821632, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.117205,-0.990162,0.07644,287.45777,-1035.930435,2058.811877, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.146874,-0.976542,0.157463,288.287545,-1033.56568,2082.821632, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.146874,-0.976542,0.157463,288.287545,-1033.56568,2082.821632, + 0.118798,-0.950331,0.287676,320.792446,-1019.675597,2128.611098, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.118798,-0.950331,0.287676,320.792446,-1019.675597,2128.611098, + 0.146136,-0.933668,0.326969,349.642944,-1009.198896,2148.211628, + 0.001003,-0.863953,-0.503571,0,-997.51935,1708.939502, + -0.081515,-0.827636,-0.555314,-47.148297,-929.685331,1614.76108, + 0,-0.8304,-0.557168,0,-934.329033,1614.76108, + -0.081515,-0.827636,-0.555314,-47.148297,-929.685331,1614.76108, + 0.001003,-0.863953,-0.503571,0,-997.51935,1708.939502, + -0.081515,-0.827636,-0.555314,-141.006395,-920.441115,1614.76108, + -0.081515,-0.827636,-0.555314,-141.006395,-920.441115,1614.76108, + -0.167565,-0.847548,-0.503571,-194.606371,-978.352295,1708.939502, + -0.162003,-0.814444,-0.557168,-182.278552,-916.376162,1614.76108, + -0.167565,-0.847548,-0.503571,-194.606371,-978.352295,1708.939502, + -0.081515,-0.827636,-0.555314,-141.006395,-920.441115,1614.76108, + 0.001003,-0.863953,-0.503571,0,-997.51935,1708.939502, + -0.544468,0.817693,0.186902,-751.507545,-880.404128,2025.39393, + -0.549387,0.812256,-0.195995,-680.521947,-831.877044,2050.149043, + -0.544468,0.817693,0.186902,-680.414811,-831.964968,2020.575089, + -0.549387,0.812256,-0.195995,-680.521947,-831.877044,2050.149043, + -0.544468,0.817693,0.186902,-751.507545,-880.404128,2025.39393, + -0.549387,0.812256,-0.195995,-751.210147,-880.075378,2048.545713, + -0.707107,0,0.707107,30.354884,-1076.236801,2002.823893, + -0.582554,0,0.812792,23.535045,-976.438073,1997.226995, + -0.527988,0,0.849252,23.535045,-1076.434855,1997.226995, + -0.582554,0,0.812792,23.535045,-976.438073,1997.226995, + -0.707107,0,0.707107,30.354884,-1076.236801,2002.823893, + -0.707107,0,0.707107,30.354884,-976.10141,2002.823893, + 0.161185,-0.976856,0.140615,164.047988,-824.724927,914.026067, + -0.000155,-0.998425,0.056107,0,-849.217148,855.371869, + 0.19463,-0.979271,0.056107,165.674047,-832.899679,855.371869, + -0.000155,-0.998425,0.056107,0,-849.217148,855.371869, + 0.161185,-0.976856,0.140615,164.047988,-824.724927,914.026067, + -0.032487,-0.989531,0.140615,0,-840.882244,914.026067, + 0.19463,-0.979271,0.056107,165.674047,-832.899679,855.371869, + 0.000315,-0.993518,-0.113678,0,-847.505736,796.15315, + 0.194135,-0.974366,-0.113678,165.340167,-831.221151,796.15315, + 0.000315,-0.993518,-0.113678,0,-847.505736,796.15315, + 0.19463,-0.979271,0.056107,165.674047,-832.899679,855.371869, + -0.000155,-0.998425,0.056107,0,-849.217148,855.371869, + 0.707373,-0.49612,-0.503476,829.407027,-554.192058,1708.939502, + 0.872041,-0.360223,-0.331336,964.515951,-399.515588,1812.397596, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.872041,-0.360223,-0.331336,964.515951,-399.515588,1812.397596, + 0.707373,-0.49612,-0.503476,829.407027,-554.192058,1708.939502, + 0.79057,-0.348586,-0.503476,921.587711,-381.734129,1708.939502, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.832671,-0.532692,-0.151323,891.670534,-595.795203,1922.192772, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.769936,-0.566074,-0.294549,868.041423,-580.006736,1812.397596, + 0.872041,-0.360223,-0.331336,964.515951,-399.515588,1812.397596, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.62118,-0.639379,0.453133,705.352697,-705.352697,2361.464898, + 0.665498,-0.684813,0.29689,738.20855,-738.20855,2258.006804, + 0.62118,-0.639379,0.453133,705.352697,-705.352697,2361.464898, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.707373,-0.49612,0.503476,829.407027,-554.192058,2361.464898, + 0.707373,-0.49612,0.503476,829.407027,-554.192058,2361.464898, + 0.587181,-0.587181,0.557168,660.670395,-660.670395,2455.64332, + 0.62118,-0.639379,0.453133,705.352697,-705.352697,2361.464898, + 0.587181,-0.587181,0.557168,660.670395,-660.670395,2455.64332, + 0.707373,-0.49612,0.503476,829.407027,-554.192058,2361.464898, + 0.642867,-0.527587,0.555314,705.689443,-605.814526,2455.64332, + 0.642867,-0.527587,0.555314,705.689443,-605.814526,2455.64332, + 0.707373,-0.49612,0.503476,829.407027,-554.192058,2361.464898, + 0.642867,-0.527587,0.555314,765.568628,-532.851527,2455.64332, + 0.642867,-0.527587,0.555314,765.568628,-532.851527,2455.64332, + 0.707373,-0.49612,0.503476,829.407027,-554.192058,2361.464898, + 0.705336,-0.438515,0.556961,776.866198,-519.085398,2455.64332, + 0.705336,-0.438515,-0.556961,776.866198,-519.085398,1614.76108, + 0.79057,-0.348586,-0.503476,921.587711,-381.734129,1708.939502, + 0.707373,-0.49612,-0.503476,829.407027,-554.192058,1708.939502, + 0.79057,-0.348586,-0.503476,921.587711,-381.734129,1708.939502, + 0.705336,-0.438515,-0.556961,776.866198,-519.085398,1614.76108, + 0.733442,-0.392033,-0.555314,813.095625,-451.304909,1614.76108, + 0.79057,-0.348586,-0.503476,921.587711,-381.734129,1708.939502, + 0.733442,-0.392033,-0.555314,813.095625,-451.304909,1614.76108, + 0.733442,-0.392033,-0.555314,857.607806,-368.028476,1614.76108, + 0.79057,-0.348586,-0.503476,921.587711,-381.734129,1708.939502, + 0.733442,-0.392033,-0.555314,857.607806,-368.028476,1614.76108, + 0.777333,-0.292484,-0.556961,863.20747,-357.552241,1614.76108, + 0.814754,-0.369253,0.447021,776.873894,-321.791703,1241.03564, + 0.759676,-0.472298,0.447021,621.482696,-415.261462,1427.89836, + 0.727062,-0.521108,0.447021,699.168033,-467.169144,1241.03564, + 0.759676,-0.472298,0.447021,621.482696,-415.261462,1427.89836, + 0.814754,-0.369253,0.447021,776.873894,-321.791703,1241.03564, + 0.837219,-0.315017,0.447021,690.554573,-286.03707,1427.89836, + 0.814754,-0.369253,0.447021,820.033555,-339.66902,1427.89836, + 0.759676,-0.472298,0.447021,660.325365,-441.215303,1614.76108, + 0.727062,-0.521108,0.447021,738.010701,-493.122985,1427.89836, + 0.759676,-0.472298,0.447021,660.325365,-441.215303,1614.76108, + 0.814754,-0.369253,0.447021,820.033555,-339.66902,1427.89836, + 0.837219,-0.315017,0.447021,733.714234,-303.914386,1614.76108, + 0.001625,-0.81149,-0.584364,0,-784.019466,631.979457, + -0.123588,-0.749001,-0.65094,-145.428824,-731.120069,587.016307, + 0.024909,-0.75872,-0.65094,0,-745.443558,587.016307, + -0.123588,-0.749001,-0.65094,-145.428824,-731.120069,587.016307, + 0.001625,-0.81149,-0.584364,0,-784.019466,631.979457, + -0.15672,-0.796215,-0.584364,-152.95461,-768.954752,631.979457, + -0.34284,-0.756475,0.556961,-357.552241,-863.20747,2455.64332, + -0.486909,-0.726302,0.485186,-554.192058,-829.407027,2361.464898, + -0.335858,-0.807337,0.485186,-381.734129,-921.587711,2361.464898, + -0.486909,-0.726302,0.485186,-554.192058,-829.407027,2361.464898, + -0.34284,-0.756475,0.556961,-357.552241,-863.20747,2455.64332, + -0.483833,-0.675055,0.556961,-519.085398,-776.866198,2455.64332, + 0,0,-1,-519.085398,-776.866198,2455.64332, + 0,0,-1,-357.552241,-863.20747,2455.64332, + 0,0,-1,-409.740281,-835.312381,2455.64332, + 0,0,-1,-519.085398,-776.866198,2455.64332, + 0,0,-1,-409.740281,-835.312381,2455.64332, + 0,0,-1,-492.936329,-790.843167,2455.64332, + 0.993632,-0.097864,0.055838,849.217148,0,855.371869, + 0.976856,-0.161185,0.140615,824.724927,-164.047988,914.026067, + 0.972323,-0.22681,0.056077,832.899679,-165.674047,855.371869, + 0.976856,-0.161185,0.140615,824.724927,-164.047988,914.026067, + 0.993632,-0.097864,0.055838,849.217148,0,855.371869, + 0.98538,-0.097051,0.140025,840.882244,0,914.026067, + 0.976104,-0.096138,0.19488,1072.403033,0,2148.211628, + 0.925561,-0.183175,0.331336,1023.924672,-203.671281,2258.006804, + 0.966926,-0.191862,0.168059,1051.797109,-209.215453,2148.211628, + 0.925561,-0.183175,0.331336,1023.924672,-203.671281,2258.006804, + 0.976104,-0.096138,0.19488,1072.403033,0,2148.211628, + 0.929871,-0.091584,0.356303,1043.984543,0,2258.006804, + 0,0.707107,0.707107,653.750225,-951.073041,1878.295649, + 0,0.582554,0.812792,180.675225,-917.447181,1850.699619, + 0,0.707107,0.707107,180.675225,-951.073041,1878.295649, + 0,0.582554,0.812792,180.675225,-917.447181,1850.699619, + 0,0.707107,0.707107,653.750225,-951.073041,1878.295649, + 0,0.527988,0.849252,653.750225,-917.447181,1850.699619, + -0.379912,-0.918011,-0.113678,-324.326404,-782.993204,796.15315, + -0.532672,-0.798598,-0.280182,-464.344144,-694.940121,738.078199, + -0.366638,-0.887172,-0.280182,-319.845809,-772.17609,738.078199, + -0.532672,-0.798598,-0.280182,-464.344144,-694.940121,738.078199, + -0.379912,-0.918011,-0.113678,-324.326404,-782.993204,796.15315, + -0.551707,-0.826255,-0.113678,-470.848959,-704.675266,796.15315, + -0.382224,-0.922365,0.056107,-324.981333,-784.574342,855.371869, + -0.551707,-0.826255,-0.113678,-470.848959,-704.675266,796.15315, + -0.379912,-0.918011,-0.113678,-324.326404,-782.993204,796.15315, + -0.551707,-0.826255,-0.113678,-470.848959,-704.675266,796.15315, + -0.382224,-0.922365,0.056107,-324.981333,-784.574342,855.371869, + -0.554824,-0.830073,0.056107,-471.799769,-706.098253,855.371869, + -0.408691,-0.901776,0.140615,-321.791703,-776.873894,914.026067, + -0.554824,-0.830073,0.056107,-471.799769,-706.098253,855.371869, + -0.382224,-0.922365,0.056107,-324.981333,-784.574342,855.371869, + -0.554824,-0.830073,0.056107,-471.799769,-706.098253,855.371869, + -0.408691,-0.901776,0.140615,-321.791703,-776.873894,914.026067, + -0.576766,-0.804716,0.140615,-467.169144,-699.168033,914.026067, + -0.224911,-0.96418,0.140615,-164.047988,-824.724927,914.026067, + -0.382224,-0.922365,0.056107,-324.981333,-784.574342,855.371869, + -0.194936,-0.97921,0.056107,-165.674047,-832.899679,855.371869, + -0.382224,-0.922365,0.056107,-324.981333,-784.574342,855.371869, + -0.224911,-0.96418,0.140615,-164.047988,-824.724927,914.026067, + -0.408691,-0.901776,0.140615,-321.791703,-776.873894,914.026067, + 0,0.973856,0.227168,180.675225,-1011.80212,1991.911763, + 0,0.935939,0.352162,653.750225,-999.174772,1950.284976, + 0,0.910825,0.412792,180.675225,-999.174772,1950.284976, + 0,0.935939,0.352162,653.750225,-999.174772,1950.284976, + 0,0.973856,0.227168,180.675225,-1011.80212,1991.911763, + 0,0.986659,0.162803,653.750225,-1011.80212,1991.911763, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.633398,-0.771798,0.055991,-644.327894,-861.580736,2058.811877, + -0.555123,-0.830697,0.0422,-599.998378,-897.96103,2058.811877, + -0.633398,-0.771798,0.055991,-644.327894,-861.580736,2058.811877, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.632155,-0.770284,0.083921,-644.282481,-861.55593,2059.381644, + -0.632155,-0.770284,0.083921,-644.282481,-861.55593,2059.381644, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.632155,-0.770284,0.083921,-655.637458,-847.372595,2104.031681, + -0.632155,-0.770284,0.083921,-655.637458,-847.372595,2104.031681, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.632155,-0.770284,0.083921,-680.351355,-823.413171,2137.783955, + -0.632155,-0.770284,0.083921,-680.351355,-823.413171,2137.783955, + -0.577307,-0.804415,0.140118,-595.795203,-891.670534,2148.211628, + -0.62223,-0.75819,0.19488,-700.811797,-805.485643,2148.211628, + 0.169533,-0.847157,-0.503571,194.606371,-978.352295,1708.939502, + 0.081515,-0.827636,-0.555314,141.006389,-920.441115,1614.76108, + 0.162003,-0.814444,-0.557168,182.278552,-916.376162,1614.76108, + 0.081515,-0.827636,-0.555314,141.006389,-920.441115,1614.76108, + 0.169533,-0.847157,-0.503571,194.606371,-978.352295,1708.939502, + 0.081515,-0.827636,-0.555314,47.148336,-929.685327,1614.76108, + 0.081515,-0.827636,-0.555314,47.148336,-929.685327,1614.76108, + 0.001003,-0.863953,-0.503571,0,-997.51935,1708.939502, + 0,-0.8304,-0.557168,0,-934.329033,1614.76108, + 0.001003,-0.863953,-0.503571,0,-997.51935,1708.939502, + 0.081515,-0.827636,-0.555314,47.148336,-929.685327,1614.76108, + 0.169533,-0.847157,-0.503571,194.606371,-978.352295,1708.939502, + 0.935939,0,0.352162,-43.046973,-975.725342,2017.42443, + 0.973856,0,0.227168,-45.607992,-1075.476552,2025.866979, + 0.903939,-0,0.427662,-43.046973,-1075.728791,2017.42443, + 0.973856,0,0.227168,-45.607992,-1075.476552,2025.866979, + 0.935939,0,0.352162,-43.046973,-975.725342,2017.42443, + 0.986659,-0,0.162803,-45.607992,-975.978478,2025.866979, + 0.79057,-0.348586,0.503476,921.587711,-381.734129,2361.464898, + 0.705336,-0.438515,0.556961,776.866198,-519.085398,2455.64332, + 0.707373,-0.49612,0.503476,829.407027,-554.192058,2361.464898, + 0.705336,-0.438515,0.556961,776.866198,-519.085398,2455.64332, + 0.79057,-0.348586,0.503476,921.587711,-381.734129,2361.464898, + 0.733442,-0.392033,0.555314,813.095624,-451.30491,2455.64332, + 0.733442,-0.392033,0.555314,813.095624,-451.30491,2455.64332, + 0.79057,-0.348586,0.503476,921.587711,-381.734129,2361.464898, + 0.733442,-0.392033,0.555314,857.607805,-368.028476,2455.64332, + 0.733442,-0.392033,0.555314,857.607805,-368.028476,2455.64332, + 0.79057,-0.348586,0.503476,921.587711,-381.734129,2361.464898, + 0.777333,-0.292484,0.556961,863.20747,-357.552241,2455.64332, + -0.95694,-0.290285,-0,-798.491399,-250.528339,2549.07468, + -0.916164,-0.400805,-0,-776.873894,-321.791703,2455.64332, + -0.92388,-0.382683,-0,-776.873894,-321.791703,2549.07468, + -0.916164,-0.400805,-0,-776.873894,-321.791703,2455.64332, + -0.95694,-0.290285,-0,-798.491399,-250.528339,2549.07468, + -0.976753,-0.214369,-0,-824.724927,-164.047988,2455.64332, + -0.976753,-0.214369,-0,-824.724927,-164.047988,2455.64332, + -0.95694,-0.290285,-0,-798.491399,-250.528339,2549.07468, + -0.95694,-0.290285,0,-823.172319,-169.16625,2549.07468, + -0.976753,-0.214369,-0,-824.724927,-164.047988,2455.64332, + -0.95694,-0.290285,0,-823.172319,-169.16625,2549.07468, + -0.980785,-0.19509,0,-824.724927,-164.047988,2549.07468, + 0,-0.85779,0.514001,653.750225,-997.119327,2170.810911, + 0.118798,-0.950331,0.287676,320.792446,-1019.675597,2128.611098, + 0,-0.935939,0.352162,653.750225,-1019.675597,2128.611098, + 0.118798,-0.950331,0.287676,320.792446,-1019.675597,2128.611098, + 0,-0.85779,0.514001,653.750225,-997.119327,2170.810911, + 0.146136,-0.933668,0.326969,349.642944,-1009.198896,2148.211628, + 0.146136,-0.933668,0.326969,349.642944,-1009.198896,2148.211628, + 0,-0.85779,0.514001,653.750225,-997.119327,2170.810911, + 0.144571,-0.892809,0.426605,369.410361,-997.119327,2170.810911, + -0.029352,-0.894042,0.447021,0,-700.735204,1241.03564, + -0.145631,-0.882589,0.447021,-154.934211,-778.906876,1054.17292, + 0.029352,-0.894042,0.447021,0,-794.166564,1054.17292, + -0.145631,-0.882589,0.447021,-154.934211,-778.906876,1054.17292, + -0.029352,-0.894042,0.447021,0,-700.735204,1241.03564, + -0.203207,-0.871137,0.447021,-136.706657,-687.270773,1241.03564, + -0.136347,-0.584514,0.799845,-164.047988,-824.724927,914.026067, + -0.21137,-0.561756,0.799845,-250.282436,-604.235252,1054.17292, + -0.247761,-0.546683,0.799845,-321.791703,-776.873894,914.026067, + -0.21137,-0.561756,0.799845,-250.282436,-604.235252,1054.17292, + -0.136347,-0.584514,0.799845,-164.047988,-824.724927,914.026067, + -0.097715,-0.592199,0.799845,-127.592879,-641.452722,1054.17292, + -0.203207,-0.871137,0.447021,-136.706657,-687.270773,1241.03564, + -0.315017,-0.837219,0.447021,-303.914386,-733.714234,1054.17292, + -0.145631,-0.882589,0.447021,-154.934211,-778.906876,1054.17292, + -0.315017,-0.837219,0.447021,-303.914386,-733.714234,1054.17292, + -0.203207,-0.871137,0.447021,-136.706657,-687.270773,1241.03564, + -0.369253,-0.814754,0.447021,-268.159753,-647.394912,1241.03564, + -0.203207,-0.871137,0.447021,-145.820434,-733.088824,1427.89836, + -0.315017,-0.837219,0.447021,-321.791703,-776.873894,1241.03564, + -0.145631,-0.882589,0.447021,-164.047988,-824.724927,1241.03564, + -0.315017,-0.837219,0.447021,-321.791703,-776.873894,1241.03564, + -0.203207,-0.871137,0.447021,-145.820434,-733.088824,1427.89836, + -0.369253,-0.814754,0.447021,-286.03707,-690.554573,1427.89836, + 0.820367,-0.571838,-0,699.168033,-467.169144,2455.64332, + 0.881921,-0.471397,-0,731.773963,-406.167739,2549.07468, + 0.83147,-0.55557,-0,699.168033,-467.169144,2549.07468, + 0.881921,-0.471397,-0,731.773963,-406.167739,2549.07468, + 0.820367,-0.571838,-0,699.168033,-467.169144,2455.64332, + 0.916164,-0.400805,0,776.873894,-321.791703,2455.64332, + 0.881921,-0.471397,-0,731.773963,-406.167739,2549.07468, + 0.916164,-0.400805,0,776.873894,-321.791703,2455.64332, + 0.881921,-0.471397,0,771.834246,-331.220222,2549.07468, + 0.881921,-0.471397,0,771.834246,-331.220222,2549.07468, + 0.916164,-0.400805,0,776.873894,-321.791703,2455.64332, + 0.92388,-0.382683,0,776.873894,-321.791703,2549.07468, + 0.000315,-0.993518,-0.113678,0,-847.505736,796.15315, + -0.186514,-0.941653,-0.280182,-163.055979,-819.737765,738.078199, + 0.000777,-0.959946,-0.280182,0,-835.797377,738.078199, + -0.186514,-0.941653,-0.280182,-163.055979,-819.737765,738.078199, + 0.000315,-0.993518,-0.113678,0,-847.505736,796.15315, + -0.193517,-0.974489,-0.113678,-165.340167,-831.221151,796.15315, + 1,0,0,-46.472742,-976.41888,2034.646937, + 0.995185,0,-0.098017,-46.418054,-976.457504,2035.2022, + 0.999806,0,-0.019694,-46.472742,-1075.391382,2034.646937, + 0.999806,0,-0.019694,-46.472742,-1075.391382,2034.646937, + 0.986659,0,-0.162803,-45.607992,-976.044955,2043.426896, + 0.973856,0,-0.227168,-45.607992,-1075.476552,2043.426896, + 0.986659,0,-0.162803,-45.607992,-976.044955,2043.426896, + 0.999806,0,-0.019694,-46.472742,-1075.391382,2034.646937, + 0.995185,0,-0.098017,-46.418054,-976.457504,2035.2022, + 0.001218,-0.898681,-0.438601,0,-814.429823,682.822311, + -0.15672,-0.796215,-0.584364,-152.95461,-768.954752,631.979457, + 0.001625,-0.81149,-0.584364,0,-784.019466,631.979457, + -0.15672,-0.796215,-0.584364,-152.95461,-768.954752,631.979457, + 0.001218,-0.898681,-0.438601,0,-814.429823,682.822311, + -0.17413,-0.881651,-0.438601,-158.887376,-798.780783,682.822311, + 0.000777,-0.959946,-0.280182,0,-835.797377,738.078199, + -0.17413,-0.881651,-0.438601,-158.887376,-798.780783,682.822311, + 0.001218,-0.898681,-0.438601,0,-814.429823,682.822311, + -0.17413,-0.881651,-0.438601,-158.887376,-798.780783,682.822311, + 0.000777,-0.959946,-0.280182,0,-835.797377,738.078199, + -0.186514,-0.941653,-0.280182,-163.055979,-819.737765,738.078199, + -0.785009,-0.523429,-0.331336,-868.041423,-580.006736,1812.397596, + -0.614068,-0.630655,-0.474547,-705.352697,-705.352697,1708.939502, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.614068,-0.630655,-0.474547,-705.352697,-705.352697,1708.939502, + -0.785009,-0.523429,-0.331336,-868.041423,-580.006736,1812.397596, + -0.707373,-0.49612,-0.503476,-829.407027,-554.192058,1708.939502, + 0,-0.999806,-0.019694,653.750225,-1038.255787,2035.202177, + 0.117291,-0.984202,-0.132626,288.287532,-1033.56568,1987.582722, + 0,-0.973856,-0.227168,653.750225,-1033.56568,1987.582722, + 0.117291,-0.984202,-0.132626,288.287532,-1033.56568,1987.582722, + 0,-0.999806,-0.019694,653.750225,-1038.255787,2035.202177, + 0.146586,-0.98666,-0.07081,287.457755,-1035.930439,2011.592523, + 0.146586,-0.98666,-0.07081,287.457755,-1035.930439,2011.592523, + 0,-0.999806,-0.019694,653.750225,-1038.255787,2035.202177, + 0.176337,-0.98433,0,279.79211,-1038.255787,2035.202177, + 0.974489,-0.193517,-0.113678,831.221151,-165.340167,796.15315, + 0.993632,-0.097864,0.055838,849.217148,0,855.371869, + 0.972323,-0.22681,0.056077,832.899679,-165.674047,855.371869, + 0.993632,-0.097864,0.055838,849.217148,0,855.371869, + 0.974489,-0.193517,-0.113678,831.221151,-165.340167,796.15315, + 0.985217,-0.097035,-0.141176,847.505736,0,796.15315, + 0,-0.582554,-0.812792,475.358482,-929.775248,1832.249363, + 0,-0.707107,-0.707107,653.750225,-966.763694,1862.604996, + 0,-0.707107,-0.707107,422.745208,-966.763694,1862.604996, + 0,-0.707107,-0.707107,653.750225,-966.763694,1862.604996, + 0,-0.582554,-0.812792,475.358482,-929.775248,1832.249363, + 0,-0.514001,-0.85779,653.750225,-929.775248,1832.249363, + 0,-0.999806,-0.019694,653.750225,-1038.255787,2035.202177, + 0.117205,-0.990162,0.07644,287.45777,-1035.930435,2058.811877, + 0.176337,-0.98433,0,279.79211,-1038.255787,2035.202177, + 0.117205,-0.990162,0.07644,287.45777,-1035.930435,2058.811877, + 0,-0.999806,-0.019694,653.750225,-1038.255787,2035.202177, + 0,-0.986659,0.162803,653.750225,-1033.56568,2082.821632, + 0.117205,-0.990162,0.07644,287.45777,-1035.930435,2058.811877, + 0,-0.986659,0.162803,653.750225,-1033.56568,2082.821632, + 0.146874,-0.976542,0.157463,288.287545,-1033.56568,2082.821632, + 0,0.582554,-0.812792,653.750225,-917.447181,2219.704735, + 0,0.707107,-0.707107,180.675225,-951.073041,2192.108705, + 0,0.527988,-0.849252,180.675225,-917.447181,2219.704735, + 0,0.707107,-0.707107,180.675225,-951.073041,2192.108705, + 0,0.582554,-0.812792,653.750225,-917.447181,2219.704735, + 0,0.707107,-0.707107,653.750225,-951.073041,2192.108705, + 0.315017,-0.837219,0.447021,286.03707,-690.554573,1427.89836, + 0.203207,-0.871137,0.447021,164.047988,-824.724927,1241.03564, + 0.369253,-0.814754,0.447021,321.791703,-776.873894,1241.03564, + 0.203207,-0.871137,0.447021,164.047988,-824.724927,1241.03564, + 0.315017,-0.837219,0.447021,286.03707,-690.554573,1427.89836, + 0.145631,-0.882589,0.447021,145.820434,-733.088824,1427.89836, + 0.890977,-0.087754,0.445488,840.882244,0,1241.03564, + 0.882589,-0.145631,0.447021,733.088824,-145.820434,1427.89836, + 0.871137,-0.203207,0.447021,824.724927,-164.047988,1241.03564, + 0.882589,-0.145631,0.447021,733.088824,-145.820434,1427.89836, + 0.890977,-0.087754,0.445488,840.882244,0,1241.03564, + 0.890977,-0.087754,0.445488,747.450884,0,1427.89836, + 0.830739,-0.342785,-0.438601,752.435044,-311.6688,682.822311, + 0.941653,-0.186514,-0.280182,819.737765,-163.055979,738.078199, + 0.887172,-0.366638,-0.280182,772.17609,-319.845809,738.078199, + 0.941653,-0.186514,-0.280182,819.737765,-163.055979,738.078199, + 0.830739,-0.342785,-0.438601,752.435044,-311.6688,682.822311, + 0.881651,-0.17413,-0.438601,798.780783,-158.887376,682.822311, + -0.993632,-0.097864,0.055838,-849.217148,0,855.371869, + -0.974489,-0.193517,-0.113678,-831.221151,-165.340167,796.15315, + -0.972323,-0.22681,0.056077,-832.899679,-165.674047,855.371869, + -0.974489,-0.193517,-0.113678,-831.221151,-165.340167,796.15315, + -0.993632,-0.097864,0.055838,-849.217148,0,855.371869, + -0.985217,-0.097035,-0.141176,-847.505736,0,796.15315, + 0.215316,-0.958117,-0.188816,209.215453,-1051.797109,1922.192772, + 0.000913,-0.943512,-0.331336,0,-1043.984543,1812.397596, + 0.184965,-0.925205,-0.331336,203.671281,-1023.924672,1812.397596, + 0.000913,-0.943512,-0.331336,0,-1043.984543,1812.397596, + 0.215316,-0.958117,-0.188816,209.215453,-1051.797109,1922.192772, + 0.014463,-0.987633,-0.156114,0,-1072.403033,1922.192772, + 0,0.527988,0.849252,653.750225,-917.447181,1850.699619, + 0,0.412792,0.910825,180.675225,-879.083714,1830.193918, + 0,0.582554,0.812792,180.675225,-917.447181,1850.699619, + 0,0.412792,0.910825,180.675225,-879.083714,1830.193918, + 0,0.527988,0.849252,653.750225,-917.447181,1850.699619, + 0,0.352162,0.935939,653.750225,-879.083714,1830.193918, + 0.527988,-0.849252,0,467.169144,-699.168033,2549.07468, + 0.412792,-0.910825,0,321.791703,-776.873894,2455.64332, + 0.582554,-0.812792,0,467.169144,-699.168033,2455.64332, + 0.412792,-0.910825,0,321.791703,-776.873894,2455.64332, + 0.527988,-0.849252,0,467.169144,-699.168033,2549.07468, + 0.352162,-0.935939,0,321.791703,-776.873894,2549.07468, + 0,0,-1,321.791703,-776.873894,2549.07468, + 0,0,-1,467.169144,-699.168033,2549.07468, + 0,0,-1,443.635404,-711.747079,2549.07468, + 0,0,1,321.791703,-776.873894,2549.07468, + 0,0,1,443.635404,-711.747079,2549.07468, + 0,0,1,368.760184,-751.768718,2549.07468, + 0.994307,-0.097931,-0.041998,1079.968548,0,2011.592523, + 0.979923,-0.19486,0.0422,1059.217255,-210.691412,2058.811877, + 0.972989,-0.226965,-0.042178,1059.217255,-210.691412,2011.592523, + 0.979923,-0.19486,0.0422,1059.217255,-210.691412,2058.811877, + 0.994307,-0.097931,-0.041998,1079.968548,0,2011.592523, + 0.993624,-0.097863,0.055991,1079.968548,0,2058.811877, + 0.606593,-0.621557,-0.495693,705.352697,-705.352697,1708.939502, + 0.527587,-0.642867,-0.555314,642.325277,-675.725844,1614.76108, + 0.606233,-0.567693,-0.556961,660.670395,-660.670395,1614.76108, + 0.527587,-0.642867,-0.555314,642.325277,-675.725844,1614.76108, + 0.606593,-0.621557,-0.495693,705.352697,-705.352697,1708.939502, + 0.527587,-0.642867,-0.555314,569.385776,-735.585745,1614.76108, + 0.527587,-0.642867,-0.555314,569.385776,-735.585745,1614.76108, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.461345,-0.690452,-0.557168,519.085398,-776.866198,1614.76108, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.527587,-0.642867,-0.555314,569.385776,-735.585745,1614.76108, + 0.606593,-0.621557,-0.495693,705.352697,-705.352697,1708.939502, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.606593,-0.621557,-0.495693,705.352697,-705.352697,1708.939502, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.579174,-0.705726,-0.408054,653.750225,-795.278099,1791.222384, + 0.579174,-0.705726,-0.408054,653.750225,-795.278099,1791.222384, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.604517,-0.736606,-0.303266,653.750225,-807.521706,1812.397596, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.579174,-0.705726,-0.408054,600.307476,-841.785968,1795.80301, + 0.468978,-0.782653,-0.409285,577.578281,-864.406983,1802.66502, + 0.579174,-0.705726,-0.408054,600.307476,-841.785968,1795.80301, + 0.501364,-0.716458,-0.4851,554.192058,-829.407027,1708.939502, + 0.579174,-0.705726,-0.408054,653.750225,-795.278099,1791.222384, + 0.592439,-0.554776,-0.584157,554.385481,-554.385481,631.979457, + 0.747902,-0.498268,-0.438601,677.173649,-452.472967,682.822311, + 0.636324,-0.634602,-0.438601,575.888851,-575.888851,682.822311, + 0.747902,-0.498268,-0.438601,677.173649,-452.472967,682.822311, + 0.592439,-0.554776,-0.584157,554.385481,-554.385481,631.979457, + 0.675632,-0.449489,-0.584364,651.888362,-435.577878,631.979457, + 0.849252,-0,0.527988,-38.888103,-1075.973486,2009.643732, + 0.903939,-0,0.427662,-43.046973,-1075.728791,2017.42443, + 0.881921,-0,0.471397,-39.929753,-1076.03581,2011.592523, + 0.903939,-0,0.427662,-43.046973,-1075.728791,2017.42443, + 0.849252,-0,0.527988,-38.888103,-1075.973486,2009.643732, + 0.83147,0,0.55557,-38.888103,-975.6692,2009.643732, + 0.903939,-0,0.427662,-43.046973,-1075.728791,2017.42443, + 0.83147,0,0.55557,-38.888103,-975.6692,2009.643732, + 0.935939,0,0.352162,-43.046973,-975.725342,2017.42443, + 0,-0.19509,0.980785,653.750225,-841.785968,2274.601344, + 0,-0.098017,0.995185,653.750225,-795.278128,2279.181966, + -0,-0.227168,0.973856,600.307509,-841.785968,2274.601344, + 0,0.812792,0.582554,180.675225,-978.669071,1911.921509, + 0,0.707107,0.707107,653.750225,-951.073041,1878.295649, + 0,0.707107,0.707107,180.675225,-951.073041,1878.295649, + 0,0.707107,0.707107,653.750225,-951.073041,1878.295649, + 0,0.812792,0.582554,180.675225,-978.669071,1911.921509, + 0,0.849252,0.527988,653.750225,-978.669071,1911.921509, + -0.001338,-0.87441,0.485186,0,-997.51935,2361.464898, + -0.184965,-0.925205,0.331336,-203.671281,-1023.924672,2258.006804, + -0.000913,-0.943512,0.331336,0,-1043.984543,2258.006804, + -0.184965,-0.925205,0.331336,-203.671281,-1023.924672,2258.006804, + -0.001338,-0.87441,0.485186,0,-997.51935,2361.464898, + -0.171901,-0.857347,0.485186,-194.606371,-978.352295,2361.464898, + -0.335858,-0.807337,0.485186,-381.734129,-921.587711,2361.464898, + -0.538332,-0.779667,0.319873,-580.006736,-868.041423,2258.006804, + -0.36191,-0.871342,0.331336,-399.515588,-964.515951,2258.006804, + -0.538332,-0.779667,0.319873,-580.006736,-868.041423,2258.006804, + -0.335858,-0.807337,0.485186,-381.734129,-921.587711,2361.464898, + -0.486909,-0.726302,0.485186,-554.192058,-829.407027,2361.464898, + -0,-0.514001,0.85779,653.750225,-929.775248,2238.154991, + -0,-0.471397,0.881921,533.995171,-892.635117,2258.006804, + 0,-0.582554,0.812792,475.358507,-929.775248,2238.154991, + -0,-0.471397,0.881921,533.995171,-892.635117,2258.006804, + -0,-0.514001,0.85779,653.750225,-929.775248,2238.154991, + -0,-0.412792,0.910825,540.89692,-887.575434,2260.711261, + -0,-0.412792,0.910825,540.89692,-887.575434,2260.711261, + -0,-0.514001,0.85779,653.750225,-929.775248,2238.154991, + -0,-0.336778,0.941584,653.750225,-887.575434,2260.711261, + 0.412792,0,0.910825,-18.690668,-1076.560038,1993.068126, + 0.527988,0,0.849252,-26.471367,-976.14887,1997.226995, + 0.582554,-0,0.812792,-26.471367,-1076.145653,1997.226995, + 0.527988,0,0.849252,-26.471367,-976.14887,1997.226995, + 0.412792,0,0.910825,-18.690668,-1076.560038,1993.068126, + 0.352162,0,0.935939,-18.690668,-976.666251,1993.068126, + 0.509726,-0.316902,0.799845,699.168033,-467.169144,914.026067, + 0.546683,-0.247761,0.799845,604.235252,-250.282436,1054.17292, + 0.487843,-0.349653,0.799845,543.79736,-363.353779,1054.17292, + 0.546683,-0.247761,0.799845,604.235252,-250.282436,1054.17292, + 0.509726,-0.316902,0.799845,699.168033,-467.169144,914.026067, + 0.561756,-0.21137,0.799845,776.873894,-321.791703,914.026067, + -0.83147,0,0.55557,35.951781,-975.958402,2009.643732, + -0.707107,0,0.707107,30.354884,-1076.236801,2002.823893, + -0.849252,-0,0.527988,35.951781,-1076.262688,2009.643732, + -0.707107,0,0.707107,30.354884,-1076.236801,2002.823893, + -0.83147,0,0.55557,35.951781,-975.958402,2009.643732, + -0.707107,0,0.707107,30.354884,-976.10141,2002.823893, + 0.973856,0,-0.227168,-45.607992,-1075.476552,2043.426896, + 0.935939,0,-0.352162,-43.046973,-975.791819,2051.869445, + 0.903939,-0,-0.427662,-43.046973,-1075.728791,2051.869445, + 0.935939,0,-0.352162,-43.046973,-975.791819,2051.869445, + 0.973856,0,-0.227168,-45.607992,-1075.476552,2043.426896, + 0.986659,0,-0.162803,-45.607992,-976.044955,2043.426896, + 0,-0.707107,-0.707107,843.013714,-637.259985,2192.108705, + 0,-0.84225,-0.539087,180.675225,-609.663955,2158.482845, + 0,-0.83147,-0.55557,876.866129,-609.663955,2158.482845, + 0,-0.84225,-0.539087,180.675225,-609.663955,2158.482845, + 0,-0.707107,-0.707107,843.013714,-637.259985,2192.108705, + 0,-0.707107,-0.707107,180.675225,-637.259985,2192.108705, + -0.479152,-0.718908,-0.503571,-554.192058,-829.407027,1708.939502, + -0.527587,-0.642867,-0.555314,-569.385752,-735.585765,1614.76108, + -0.461345,-0.690452,-0.557168,-519.085398,-776.866198,1614.76108, + -0.527587,-0.642867,-0.555314,-569.385752,-735.585765,1614.76108, + -0.479152,-0.718908,-0.503571,-554.192058,-829.407027,1708.939502, + -0.527587,-0.642867,-0.555314,-642.325255,-675.725862,1614.76108, + -0.527587,-0.642867,-0.555314,-642.325255,-675.725862,1614.76108, + -0.614068,-0.630655,-0.474547,-705.352697,-705.352697,1708.939502, + -0.606233,-0.567693,-0.556961,-660.670395,-660.670395,1614.76108, + -0.614068,-0.630655,-0.474547,-705.352697,-705.352697,1708.939502, + -0.527587,-0.642867,-0.555314,-642.325255,-675.725862,1614.76108, + -0.479152,-0.718908,-0.503571,-554.192058,-829.407027,1708.939502, + -0.994307,-0.097931,0.041998,-1079.968548,0,2058.811877, + -0.979923,-0.19486,-0.0422,-1059.217255,-210.691412,2011.592523, + -0.972989,-0.226965,0.042178,-1059.217255,-210.691412,2058.811877, + -0.979923,-0.19486,-0.0422,-1059.217255,-210.691412,2011.592523, + -0.994307,-0.097931,0.041998,-1079.968548,0,2058.811877, + -0.993624,-0.097863,-0.055991,-1079.968548,0,2011.592523, + -0.882589,-0.145631,0.447021,-687.270773,-136.706657,1241.03564, + -0.890977,-0.087754,0.445488,-794.166564,0,1054.17292, + -0.871137,-0.203207,0.447021,-778.906876,-154.934211,1054.17292, + -0.890977,-0.087754,0.445488,-794.166564,0,1054.17292, + -0.882589,-0.145631,0.447021,-687.270773,-136.706657,1241.03564, + -0.890977,-0.087754,0.445488,-700.735204,0,1241.03564, + 0.61434,-0.748575,-0.249443,653.750225,-808.286776,1814.693561, + 0.604517,-0.736606,-0.303266,653.750225,-807.521706,1812.397596, + 0.61434,-0.748575,-0.249443,670.391133,-794.166513,1813.302837, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.61434,-0.748575,-0.249443,670.391133,-794.166513,1813.302837, + 0.604517,-0.736606,-0.303266,653.750225,-807.521706,1812.397596, + 0.61434,-0.748575,-0.249443,670.391133,-794.166513,1813.302837, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.61434,-0.748575,-0.249443,724.871877,-750.8761,1817.56657, + 0.61434,-0.748575,-0.249443,724.871877,-750.8761,1817.56657, + 0.647345,-0.690701,-0.322298,738.20855,-738.20855,1812.397596, + 0.684548,-0.684548,-0.250574,739.771122,-739.771122,1820.935228, + 0.381937,-0.922484,0.056107,324.981333,-784.574342,855.371869, + 0.194135,-0.974366,-0.113678,165.340167,-831.221151,796.15315, + 0.380494,-0.91777,-0.113678,324.326404,-782.993204,796.15315, + 0.194135,-0.974366,-0.113678,165.340167,-831.221151,796.15315, + 0.381937,-0.922484,0.056107,324.981333,-784.574342,855.371869, + 0.19463,-0.979271,0.056107,165.674047,-832.899679,855.371869, + 0.787008,-0.166056,-0.594175,768.954752,-152.95461,631.979457, + 0.882512,-0.08692,-0.462187,814.429823,0,682.822311, + 0.881651,-0.17413,-0.438601,798.780783,-158.887376,682.822311, + 0.882512,-0.08692,-0.462187,814.429823,0,682.822311, + 0.787008,-0.166056,-0.594175,768.954752,-152.95461,631.979457, + 0.792149,-0.07802,-0.60532,784.019466,0,631.979457, + 0.331547,-0.797805,-0.503571,381.734129,-921.587711,1708.939502, + 0.241413,-0.795831,-0.555314,323.520353,-873.53093,1614.76108, + 0.31778,-0.767189,-0.557168,357.552241,-863.20747,1614.76108, + 0.241413,-0.795831,-0.555314,323.520353,-873.53093,1614.76108, + 0.331547,-0.797805,-0.503571,381.734129,-921.587711,1708.939502, + 0.241413,-0.795831,-0.555314,233.261899,-900.910533,1614.76108, + 0.241413,-0.795831,-0.555314,233.261899,-900.910533,1614.76108, + 0.169533,-0.847157,-0.503571,194.606371,-978.352295,1708.939502, + 0.162003,-0.814444,-0.557168,182.278552,-916.376162,1614.76108, + 0.169533,-0.847157,-0.503571,194.606371,-978.352295,1708.939502, + 0.241413,-0.795831,-0.555314,233.261899,-900.910533,1614.76108, + 0.331547,-0.797805,-0.503571,381.734129,-921.587711,1708.939502, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.169533,-0.847157,-0.503571,194.606371,-978.352295,1708.939502, + 0.331547,-0.797805,-0.503571,381.734129,-921.587711,1708.939502, + 0.169533,-0.847157,-0.503571,194.606371,-978.352295,1708.939502, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.184965,-0.925205,-0.331336,203.671281,-1023.924672,1812.397596, + 0,0,-1,-654.019524,0,1054.17292, + 0,0,-1,-778.906876,-154.934211,1054.17292, + 0,0,-1,-794.166564,0,1054.17292, + 0,0,-1,-778.906876,-154.934211,1054.17292, + 0,0,-1,-654.019524,0,1054.17292, + 0,0,-1,-733.714234,-303.914386,1054.17292, + 0,0,-1,-733.714234,-303.914386,1054.17292, + 0,0,-1,-654.019524,0,1054.17292, + 0,0,-1,-660.325365,-441.215303,1054.17292, + 0,0,-1,-660.325365,-441.215303,1054.17292, + 0,0,-1,-654.019524,0,1054.17292, + 0,0,-1,-641.452722,-127.592879,1054.17292, + 0,0,-1,-660.325365,-441.215303,1054.17292, + 0,0,-1,-641.452722,-127.592879,1054.17292, + 0,0,-1,-561.560563,-561.560563,1054.17292, + 0,0,-1,-561.560563,-561.560563,1054.17292, + 0,0,-1,-641.452722,-127.592879,1054.17292, + 0,0,-1,-604.235252,-250.282436,1054.17292, + 0,0,-1,-561.560563,-561.560563,1054.17292, + 0,0,-1,-604.235252,-250.282436,1054.17292, + 0,0,-1,-543.79736,-363.353779,1054.17292, + 0,0,-1,-561.560563,-561.560563,1054.17292, + 0,0,-1,-543.79736,-363.353779,1054.17292, + 0,0,-1,-441.215303,-660.325365,1054.17292, + 0,0,-1,-441.215303,-660.325365,1054.17292, + 0,0,-1,-543.79736,-363.353779,1054.17292, + 0,0,-1,-462.46164,-462.46164,1054.17292, + 0,0,-1,-441.215303,-660.325365,1054.17292, + 0,0,-1,-462.46164,-462.46164,1054.17292, + 0,0,-1,-363.353779,-543.79736,1054.17292, + 0,0,-1,-441.215303,-660.325365,1054.17292, + 0,0,-1,-363.353779,-543.79736,1054.17292, + 0,0,-1,-303.914386,-733.714234,1054.17292, + 0,0,-1,-303.914386,-733.714234,1054.17292, + 0,0,-1,-363.353779,-543.79736,1054.17292, + 0,0,-1,-250.282436,-604.235252,1054.17292, + 0,0,-1,-303.914386,-733.714234,1054.17292, + 0,0,-1,-250.282436,-604.235252,1054.17292, + 0,0,-1,-154.934211,-778.906876,1054.17292, + 0,0,-1,-154.934211,-778.906876,1054.17292, + 0,0,-1,-250.282436,-604.235252,1054.17292, + 0,0,-1,-127.592879,-641.452722,1054.17292, + 0,0,-1,-154.934211,-778.906876,1054.17292, + 0,0,-1,-127.592879,-641.452722,1054.17292, + 0,0,-1,0,-794.166564,1054.17292, + 0,0,-1,0,-794.166564,1054.17292, + 0,0,-1,-127.592879,-641.452722,1054.17292, + 0,0,-1,0,-654.019524,1054.17292, + 0,0,-1,0,-794.166564,1054.17292, + 0,0,-1,0,-654.019524,1054.17292, + 0,0,-1,127.592879,-641.452722,1054.17292, + 0,0,-1,0,-794.166564,1054.17292, + 0,0,-1,127.592879,-641.452722,1054.17292, + 0,0,-1,154.934211,-778.906876,1054.17292, + 0,0,-1,154.934211,-778.906876,1054.17292, + 0,0,-1,127.592879,-641.452722,1054.17292, + 0,0,-1,250.282436,-604.235252,1054.17292, + 0,0,-1,154.934211,-778.906876,1054.17292, + 0,0,-1,250.282436,-604.235252,1054.17292, + 0,0,-1,303.914386,-733.714234,1054.17292, + 0,0,-1,303.914386,-733.714234,1054.17292, + 0,0,-1,250.282436,-604.235252,1054.17292, + 0,0,-1,363.353779,-543.79736,1054.17292, + 0,0,-1,303.914386,-733.714234,1054.17292, + 0,0,-1,363.353779,-543.79736,1054.17292, + 0,0,-1,441.215303,-660.325365,1054.17292, + 0,0,-1,441.215303,-660.325365,1054.17292, + 0,0,-1,363.353779,-543.79736,1054.17292, + 0,0,-1,462.46164,-462.46164,1054.17292, + 0,0,-1,441.215303,-660.325365,1054.17292, + 0,0,-1,462.46164,-462.46164,1054.17292, + 0,0,-1,561.560563,-561.560563,1054.17292, + 0,0,-1,561.560563,-561.560563,1054.17292, + 0,0,-1,462.46164,-462.46164,1054.17292, + 0,0,-1,543.79736,-363.353779,1054.17292, + 0,0,-1,561.560563,-561.560563,1054.17292, + 0,0,-1,543.79736,-363.353779,1054.17292, + 0,0,-1,604.235252,-250.282436,1054.17292, + 0,0,-1,561.560563,-561.560563,1054.17292, + 0,0,-1,604.235252,-250.282436,1054.17292, + 0,0,-1,660.325365,-441.215303,1054.17292, + 0,0,-1,660.325365,-441.215303,1054.17292, + 0,0,-1,604.235252,-250.282436,1054.17292, + 0,0,-1,641.452722,-127.592879,1054.17292, + 0,0,-1,660.325365,-441.215303,1054.17292, + 0,0,-1,641.452722,-127.592879,1054.17292, + 0,0,-1,654.019524,0,1054.17292, + 0,0,-1,660.325365,-441.215303,1054.17292, + 0,0,-1,654.019524,0,1054.17292, + 0,0,-1,794.166564,0,1054.17292, + 0,0,-1,660.325365,-441.215303,1054.17292, + 0,0,-1,794.166564,0,1054.17292, + 0,0,-1,733.714234,-303.914386,1054.17292, + 0,0,-1,733.714234,-303.914386,1054.17292, + 0,0,-1,794.166564,0,1054.17292, + 0,0,-1,778.906876,-154.934211,1054.17292, + -0.027252,-0.830091,0.556961,0,-934.329033,2455.64332, + -0.171901,-0.857347,0.485186,-194.606371,-978.352295,2361.464898, + -0.001338,-0.87441,0.485186,0,-997.51935,2361.464898, + -0.171901,-0.857347,0.485186,-194.606371,-978.352295,2361.464898, + -0.027252,-0.830091,0.556961,0,-934.329033,2455.64332, + -0.188671,-0.808825,0.556961,-182.278552,-916.376162,2455.64332, + 0,0,1,-182.278552,-916.376162,2455.64332, + 0,0,1,0,-934.329033,2455.64332, + 0,0,1,-47.148298,-929.685331,2455.64332, + 0,0,-1,-182.278552,-916.376162,2455.64332, + 0,0,-1,-47.148298,-929.685331,2455.64332, + 0,0,-1,-141.006393,-920.441115,2455.64332, + 0,-0.707107,-0.707107,843.013714,-637.259985,2192.108705, + 0,-0.582554,-0.812792,180.675225,-670.885845,2219.704735, + 0,-0.707107,-0.707107,180.675225,-637.259985,2192.108705, + 0,-0.582554,-0.812792,180.675225,-670.885845,2219.704735, + 0,-0.707107,-0.707107,843.013714,-637.259985,2192.108705, + 0,-0.527988,-0.849252,806.222028,-670.885845,2219.704735, + -0.77301,-0.634393,-0,-635.110018,-545.224061,2549.07468, + -0.707107,-0.707107,-0,-594.593537,-594.593537,2455.64332, + -0.707107,-0.707107,-0,-594.593537,-594.593537,2549.07468, + -0.707107,-0.707107,-0,-594.593537,-594.593537,2455.64332, + -0.77301,-0.634393,-0,-635.110018,-545.224061,2549.07468, + -0.820367,-0.571838,-0,-699.168033,-467.169144,2455.64332, + -0.820367,-0.571838,-0,-699.168033,-467.169144,2455.64332, + -0.77301,-0.634393,-0,-635.110018,-545.224061,2549.07468, + -0.77301,-0.634393,-0,-689.000369,-479.558478,2549.07468, + -0.820367,-0.571838,-0,-699.168033,-467.169144,2455.64332, + -0.77301,-0.634393,-0,-689.000369,-479.558478,2549.07468, + -0.83147,-0.55557,-0,-699.168033,-467.169144,2549.07468, + 0.777333,-0.292484,-0.556961,863.20747,-357.552241,1614.76108, + 0.843385,-0.187656,-0.503476,978.352295,-194.606371,1708.939502, + 0.79057,-0.348586,-0.503476,921.587711,-381.734129,1708.939502, + 0.843385,-0.187656,-0.503476,978.352295,-194.606371,1708.939502, + 0.777333,-0.292484,-0.556961,863.20747,-357.552241,1614.76108, + 0.795831,-0.241413,-0.555314,887.227327,-278.369384,1614.76108, + 0.843385,-0.187656,-0.503476,978.352295,-194.606371,1708.939502, + 0.795831,-0.241413,-0.555314,887.227327,-278.369384,1614.76108, + 0.795831,-0.241413,-0.555314,914.651021,-187.96558,1614.76108, + 0.843385,-0.187656,-0.503476,978.352295,-194.606371,1708.939502, + 0.795831,-0.241413,-0.555314,914.651021,-187.96558,1614.76108, + 0.819458,-0.135214,-0.556961,916.376162,-182.278552,1614.76108, + 0.176518,-0.881175,-0.438601,158.887376,-798.780783,682.822311, + 0.001625,-0.81149,-0.584364,0,-784.019466,631.979457, + 0.159907,-0.795581,-0.584364,152.95461,-768.954752,631.979457, + 0.001625,-0.81149,-0.584364,0,-784.019466,631.979457, + 0.176518,-0.881175,-0.438601,158.887376,-798.780783,682.822311, + 0.001218,-0.898681,-0.438601,0,-814.429823,682.822311, + -0.523429,-0.785009,-0.331336,-580.006736,-868.041423,1812.397596, + -0.614068,-0.630655,-0.474547,-705.352697,-705.352697,1708.939502, + -0.479152,-0.718908,-0.503571,-554.192058,-829.407027,1708.939502, + -0.614068,-0.630655,-0.474547,-705.352697,-705.352697,1708.939502, + -0.523429,-0.785009,-0.331336,-580.006736,-868.041423,1812.397596, + -0.669886,-0.684903,-0.286639,-738.20855,-738.20855,1812.397596, + -0.910015,-0.412425,0.042178,-997.760837,-413.286071,2058.811877, + -0.841785,-0.538757,-0.033753,-897.96103,-599.998378,2011.592523, + -0.819881,-0.571538,0.033755,-897.96103,-599.998378,2058.811877, + -0.841785,-0.538757,-0.033753,-897.96103,-599.998378,2011.592523, + -0.910015,-0.412425,0.042178,-997.760837,-413.286071,2058.811877, + -0.923079,-0.382289,-0.0422,-997.760837,-413.286071,2011.592523, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.910015,-0.412425,0.042178,-997.760837,-413.286071,2058.811877, + -0.819881,-0.571538,0.033755,-897.96103,-599.998378,2058.811877, + -0.910015,-0.412425,0.042178,-997.760837,-413.286071,2058.811877, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.910916,-0.376813,0.168059,-990.771213,-410.390874,2148.211628, + -0.576766,-0.804716,0.140615,-467.169144,-699.168033,914.026067, + -0.691243,-0.718915,0.073102,-600.487204,-600.487204,855.371869, + -0.554824,-0.830073,0.056107,-471.799769,-706.098253,855.371869, + -0.691243,-0.718915,0.073102,-600.487204,-600.487204,855.371869, + -0.576766,-0.804716,0.140615,-467.169144,-699.168033,914.026067, + -0.722676,-0.676733,0.140615,-594.593537,-594.593537,914.026067, + 0.159907,-0.795581,-0.584364,152.95461,-768.954752,631.979457, + 0.024909,-0.75872,-0.65094,0,-745.443558,587.016307, + 0.172449,-0.739282,-0.65094,145.428824,-731.120069,587.016307, + 0.024909,-0.75872,-0.65094,0,-745.443558,587.016307, + 0.159907,-0.795581,-0.584364,152.95461,-768.954752,631.979457, + 0.001625,-0.81149,-0.584364,0,-784.019466,631.979457, + -0.631049,-0.421653,-0.651142,-619.813666,-414.146251,587.016307, + -0.586347,-0.571185,-0.574408,-554.385481,-554.385481,631.979457, + -0.692236,-0.442144,-0.570366,-651.888362,-435.577878,631.979457, + -0.586347,-0.571185,-0.574408,-554.385481,-554.385481,631.979457, + -0.631049,-0.421653,-0.651142,-619.813666,-414.146251,587.016307, + -0.518883,-0.55411,-0.65094,-527.108195,-527.108195,587.016307, + 0.456496,-0.854043,-0.249443,475.358482,-929.775248,1832.249363, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.445004,-0.832543,-0.329915,533.995007,-892.635204,1812.397596, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.456496,-0.854043,-0.249443,475.358482,-929.775248,1832.249363, + 0.456496,-0.854043,-0.249443,422.745208,-966.763694,1862.604996, + 0.388566,-0.856387,-0.340026,399.515588,-964.515951,1812.397596, + 0.456496,-0.854043,-0.249443,422.745208,-966.763694,1862.604996, + 0.326059,-0.911614,-0.25029,406.150723,-980.534583,1879.384872, + -0.483833,-0.675055,0.556961,-519.085398,-776.866198,2455.64332, + -0.619247,-0.617355,0.485186,-705.352697,-705.352697,2361.464898, + -0.486909,-0.726302,0.485186,-554.192058,-829.407027,2361.464898, + -0.619247,-0.617355,0.485186,-705.352697,-705.352697,2361.464898, + -0.483833,-0.675055,0.556961,-519.085398,-776.866198,2455.64332, + -0.606233,-0.567693,0.556961,-660.670395,-660.670395,2455.64332, + 0,0,-1,-660.670395,-660.670395,2455.64332, + 0,0,-1,-519.085398,-776.866198,2455.64332, + 0,0,-1,-569.38575,-735.585766,2455.64332, + 0,0,-1,-660.670395,-660.670395,2455.64332, + 0,0,-1,-569.38575,-735.585766,2455.64332, + 0,0,-1,-642.325255,-675.725862,2455.64332, + 0.380494,-0.91777,-0.113678,324.326404,-782.993204,796.15315, + 0.188038,-0.94135,-0.280182,163.055979,-819.737765,738.078199, + 0.368074,-0.886578,-0.280182,319.845809,-772.17609,738.078199, + 0.188038,-0.94135,-0.280182,163.055979,-819.737765,738.078199, + 0.380494,-0.91777,-0.113678,324.326404,-782.993204,796.15315, + 0.194135,-0.974366,-0.113678,165.340167,-831.221151,796.15315, + 0.976753,-0.214369,-0,824.724927,-164.047988,2455.64332, + 0.995185,-0.098017,-0,832.543812,-84.661515,2549.07468, + 0.980785,-0.19509,0,824.724927,-164.047988,2549.07468, + 0.995185,-0.098017,-0,832.543812,-84.661515,2549.07468, + 0.976753,-0.214369,-0,824.724927,-164.047988,2455.64332, + 0.995185,-0.098017,-0,840.882244,0,2455.64332, + 0.995185,-0.098017,-0,832.543812,-84.661515,2549.07468, + 0.995185,-0.098017,-0,840.882244,0,2455.64332, + 0.995185,-0.098017,0,840.882244,0,2549.07468, + -0.929871,-0.091584,-0.356303,-1043.984543,0,1812.397596, + -0.843385,-0.187656,-0.503476,-978.352295,-194.606371,1708.939502, + -0.925561,-0.183175,-0.331336,-1023.924672,-203.671281,1812.397596, + -0.843385,-0.187656,-0.503476,-978.352295,-194.606371,1708.939502, + -0.929871,-0.091584,-0.356303,-1043.984543,0,1812.397596, + -0.850126,-0.08373,-0.51988,-997.51935,0,1708.939502, + -0.518883,-0.55411,-0.65094,-527.108195,-527.108195,587.016307, + -0.449489,-0.675632,-0.584364,-435.577878,-651.888362,631.979457, + -0.586347,-0.571185,-0.574408,-554.385481,-554.385481,631.979457, + -0.449489,-0.675632,-0.584364,-435.577878,-651.888362,631.979457, + -0.518883,-0.55411,-0.65094,-527.108195,-527.108195,587.016307, + -0.400811,-0.644692,-0.65094,-414.146251,-619.813666,587.016307, + -0.498268,-0.747902,-0.438601,-452.472967,-677.173649,682.822311, + -0.586347,-0.571185,-0.574408,-554.385481,-554.385481,631.979457, + -0.449489,-0.675632,-0.584364,-435.577878,-651.888362,631.979457, + -0.586347,-0.571185,-0.574408,-554.385481,-554.385481,631.979457, + -0.498268,-0.747902,-0.438601,-452.472967,-677.173649,682.822311, + -0.644016,-0.644016,-0.412901,-575.888851,-575.888851,682.822311, + 0.91563,-0.400602,-0.033753,997.760837,-413.286071,2011.592523, + 0.881921,-0.471397,-0,912.783669,-572.267169,2035.202245, + 0.880538,-0.470657,-0.055991,911.540742,-574.592523,2011.592523, + 0.881921,-0.471397,-0,912.783669,-572.267169,2035.202245, + 0.923514,-0.382532,0.028131,997.760837,-413.286071,2058.811877, + 0.880538,-0.470657,0.055991,911.540741,-574.592525,2058.811877, + 0.923514,-0.382532,0.028131,997.760837,-413.286071,2058.811877, + 0.881921,-0.471397,-0,912.783669,-572.267169,2035.202245, + 0.91563,-0.400602,-0.033753,997.760837,-413.286071,2011.592523, + 0.184965,-0.925205,-0.331336,203.671281,-1023.924672,1812.397596, + 0.001003,-0.863953,-0.503571,0,-997.51935,1708.939502, + 0.169533,-0.847157,-0.503571,194.606371,-978.352295,1708.939502, + 0.001003,-0.863953,-0.503571,0,-997.51935,1708.939502, + 0.184965,-0.925205,-0.331336,203.671281,-1023.924672,1812.397596, + 0.000913,-0.943512,-0.331336,0,-1043.984543,1812.397596, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.097863,-0.993624,0.055991,36.399844,-1076.383476,2058.811877, + 0.168583,-0.985419,0.023006,210.691412,-1059.217255,2058.811877, + 0.097863,-0.993624,0.055991,36.399844,-1076.383476,2058.811877, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.097671,-0.991674,0.083921,35.951781,-1076.356667,2059.650143, + 0.097671,-0.991674,0.083921,35.951781,-1076.356667,2059.650143, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.097671,-0.991674,0.083921,30.354884,-1076.33078,2066.469982, + 0.097671,-0.991674,0.083921,30.354884,-1076.33078,2066.469982, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.097671,-0.991674,0.083921,23.535045,-1076.528834,2072.06688, + 0.097671,-0.991674,0.083921,23.535045,-1076.528834,2072.06688, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.097671,-0.991674,0.083921,15.754347,-1076.943219,2076.225749, + 0.097671,-0.991674,0.083921,15.754347,-1076.943219,2076.225749, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.097671,-0.991674,0.083921,7.311798,-1077.55801,2078.786769, + 0.097671,-0.991674,0.083921,7.311798,-1077.55801,2078.786769, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + 0.032696,-0.995906,0.084279,0,-1078.217216,2079.506918, + 0.032696,-0.995906,0.084279,0,-1078.217216,2079.506918, + 0.165848,-0.978799,0.120197,209.215453,-1051.797109,2148.211628, + -0.000463,-0.985777,0.168059,0,-1072.403033,2148.211628, + 0.592199,-0.097715,0.799845,824.724927,-164.047988,914.026067, + 0.598955,-0.058992,0.798607,654.019524,0,1054.17292, + 0.584514,-0.136347,0.799845,641.452722,-127.592879,1054.17292, + 0.598955,-0.058992,0.798607,654.019524,0,1054.17292, + 0.592199,-0.097715,0.799845,824.724927,-164.047988,914.026067, + 0.598955,-0.058992,0.798607,840.882244,0,914.026067, + 0,0.412792,-0.910825,653.750225,-879.083714,2240.210435, + 0,0.527988,-0.849252,180.675225,-917.447181,2219.704735, + 0,0.352162,-0.935939,180.675225,-879.083714,2240.210435, + 0,0.527988,-0.849252,180.675225,-917.447181,2219.704735, + 0,0.412792,-0.910825,653.750225,-879.083714,2240.210435, + 0,0.582554,-0.812792,653.750225,-917.447181,2219.704735, + 0.145631,-0.882589,0.447021,145.820434,-733.088824,1427.89836, + 0.029352,-0.894042,0.447021,0,-840.882244,1241.03564, + 0.203207,-0.871137,0.447021,164.047988,-824.724927,1241.03564, + 0.029352,-0.894042,0.447021,0,-840.882244,1241.03564, + 0.145631,-0.882589,0.447021,145.820434,-733.088824,1427.89836, + -0.029352,-0.894042,0.447021,0,-747.450884,1427.89836, + -0.247761,-0.546683,0.799845,-321.791703,-776.873894,914.026067, + -0.316902,-0.509726,0.799845,-363.353779,-543.79736,1054.17292, + -0.349653,-0.487843,0.799845,-467.169144,-699.168033,914.026067, + -0.316902,-0.509726,0.799845,-363.353779,-543.79736,1054.17292, + -0.247761,-0.546683,0.799845,-321.791703,-776.873894,914.026067, + -0.21137,-0.561756,0.799845,-250.282436,-604.235252,1054.17292, + 0,-0.290285,-0.95694,577.578281,-864.406983,1802.66502, + 0,-0.336778,-0.941584,653.750225,-887.575434,1809.693092, + 0,-0.412792,-0.910825,540.896876,-887.575434,1809.693092, + 0,-0.336778,-0.941584,653.750225,-887.575434,1809.693092, + 0,-0.290285,-0.95694,577.578281,-864.406983,1802.66502, + 0,-0.227168,-0.973856,600.307476,-841.785968,1795.80301, + 0,-0.336778,-0.941584,653.750225,-887.575434,1809.693092, + 0,-0.227168,-0.973856,600.307476,-841.785968,1795.80301, + 0,-0.19509,-0.980785,653.750225,-841.785968,1795.80301, + 0,-0.973856,-0.227168,653.750225,-1033.56568,1987.582722, + 0.147851,-0.963743,-0.222127,320.792433,-1019.675597,1941.793256, + 0,-0.903939,-0.427662,653.750225,-1019.675597,1941.793256, + 0.147851,-0.963743,-0.222127,320.792433,-1019.675597,1941.793256, + 0,-0.973856,-0.227168,653.750225,-1033.56568,1987.582722, + 0.117291,-0.984202,-0.132626,288.287532,-1033.56568,1987.582722, + 0.145631,-0.882589,0.447021,136.706657,-687.270773,1241.03564, + 0.029352,-0.894042,0.447021,0,-794.166564,1054.17292, + 0.203207,-0.871137,0.447021,154.934211,-778.906876,1054.17292, + 0.029352,-0.894042,0.447021,0,-794.166564,1054.17292, + 0.145631,-0.882589,0.447021,136.706657,-687.270773,1241.03564, + -0.029352,-0.894042,0.447021,0,-700.735204,1241.03564, + -0.555123,-0.830697,0.0422,-599.998378,-897.96103,2058.811877, + -0.634145,-0.772707,-0.027996,-644.00684,-861.844218,2011.592523, + -0.575005,-0.816448,-0.052732,-599.998378,-897.96103,2011.592523, + -0.634145,-0.772707,-0.027996,-644.00684,-861.844218,2011.592523, + -0.555123,-0.830697,0.0422,-599.998378,-897.96103,2058.811877, + -0.633398,-0.771798,0.055991,-644.327894,-861.580736,2058.811877, + -0.032487,-0.989531,0.140615,0,-840.882244,914.026067, + -0.194936,-0.97921,0.056107,-165.674047,-832.899679,855.371869, + -0.000155,-0.998425,0.056107,0,-849.217148,855.371869, + -0.194936,-0.97921,0.056107,-165.674047,-832.899679,855.371869, + -0.032487,-0.989531,0.140615,0,-840.882244,914.026067, + -0.224911,-0.96418,0.140615,-164.047988,-824.724927,914.026067, + 0.993624,-0.097863,0.055991,1079.968548,0,2058.811877, + 0.966926,-0.191862,0.168059,1051.797109,-209.215453,2148.211628, + 0.979923,-0.19486,0.0422,1059.217255,-210.691412,2058.811877, + 0.966926,-0.191862,0.168059,1051.797109,-209.215453,2148.211628, + 0.993624,-0.097863,0.055991,1079.968548,0,2058.811877, + 0.976104,-0.096138,0.19488,1072.403033,0,2148.211628, + -0.55557,0,-0.83147,23.535045,-976.504549,2072.06688, + -0.412792,0,-0.910825,15.754347,-1076.943219,2076.225749, + -0.352162,0,-0.935939,15.754347,-977.02193,2076.225749, + -0.412792,0,-0.910825,15.754347,-1076.943219,2076.225749, + -0.55557,0,-0.83147,23.535045,-976.504549,2072.06688, + -0.55557,0,-0.83147,23.535045,-1076.528834,2072.06688, + -0.509726,-0.316902,0.799845,-699.168033,-467.169144,914.026067, + -0.546683,-0.247761,0.799845,-604.235252,-250.282436,1054.17292, + -0.561756,-0.21137,0.799845,-776.873894,-321.791703,914.026067, + -0.546683,-0.247761,0.799845,-604.235252,-250.282436,1054.17292, + -0.509726,-0.316902,0.799845,-699.168033,-467.169144,914.026067, + -0.487843,-0.349653,0.799845,-543.79736,-363.353779,1054.17292, + 0.188038,-0.94135,-0.280182,163.055979,-819.737765,738.078199, + 0.001218,-0.898681,-0.438601,0,-814.429823,682.822311, + 0.176518,-0.881175,-0.438601,158.887376,-798.780783,682.822311, + 0.001218,-0.898681,-0.438601,0,-814.429823,682.822311, + 0.188038,-0.94135,-0.280182,163.055979,-819.737765,738.078199, + 0.000777,-0.959946,-0.280182,0,-835.797377,738.078199, + -0.92664,-0.348663,0.140615,-776.873894,-321.791703,914.026067, + -0.972323,-0.22681,0.056077,-832.899679,-165.674047,855.371869, + -0.909392,-0.412143,0.056077,-784.574342,-324.981333,855.371869, + -0.972323,-0.22681,0.056077,-832.899679,-165.674047,855.371869, + -0.92664,-0.348663,0.140615,-776.873894,-321.791703,914.026067, + -0.976856,-0.161185,0.140615,-824.724927,-164.047988,914.026067, + -0.743689,-0.496917,0.447214,-660.325365,-441.215303,1614.76108, + -0.789573,-0.422036,0.445488,-772.428086,-428.732587,1427.89836, + -0.743689,-0.496917,0.447214,-738.010701,-493.122985,1427.89836, + -0.789573,-0.422036,0.445488,-772.428086,-428.732587,1427.89836, + -0.743689,-0.496917,0.447214,-660.325365,-441.215303,1614.76108, + -0.819473,-0.358504,0.447144,-733.714234,-303.914386,1614.76108, + -0.789573,-0.422036,0.445488,-772.428086,-428.732587,1427.89836, + -0.819473,-0.358504,0.447144,-733.714234,-303.914386,1614.76108, + -0.789573,-0.422036,0.445488,-814.713927,-349.621343,1427.89836, + -0.789573,-0.422036,0.445488,-814.713927,-349.621343,1427.89836, + -0.819473,-0.358504,0.447144,-733.714234,-303.914386,1614.76108, + -0.826343,-0.342282,0.447214,-820.033555,-339.66902,1427.89836, + -0.79057,-0.348586,-0.503476,-921.587711,-381.734129,1708.939502, + -0.705336,-0.438515,-0.556961,-776.866198,-519.085398,1614.76108, + -0.707373,-0.49612,-0.503476,-829.407027,-554.192058,1708.939502, + -0.705336,-0.438515,-0.556961,-776.866198,-519.085398,1614.76108, + -0.79057,-0.348586,-0.503476,-921.587711,-381.734129,1708.939502, + -0.733442,-0.392033,-0.555314,-813.095616,-451.304926,1614.76108, + -0.733442,-0.392033,-0.555314,-813.095616,-451.304926,1614.76108, + -0.79057,-0.348586,-0.503476,-921.587711,-381.734129,1708.939502, + -0.733442,-0.392033,-0.555314,-857.607798,-368.02849,1614.76108, + -0.733442,-0.392033,-0.555314,-857.607798,-368.02849,1614.76108, + -0.79057,-0.348586,-0.503476,-921.587711,-381.734129,1708.939502, + -0.777333,-0.292484,-0.556961,-863.20747,-357.552241,1614.76108, + 0.871137,-0.203207,0.447021,824.724927,-164.047988,1241.03564, + 0.837219,-0.315017,0.447021,690.554573,-286.03707,1427.89836, + 0.814754,-0.369253,0.447021,776.873894,-321.791703,1241.03564, + 0.837219,-0.315017,0.447021,690.554573,-286.03707,1427.89836, + 0.871137,-0.203207,0.447021,824.724927,-164.047988,1241.03564, + 0.882589,-0.145631,0.447021,733.088824,-145.820434,1427.89836, + 0,0,-1,-700.735204,0,1241.03564, + 0,0,-1,-824.724927,-164.047988,1241.03564, + 0,0,-1,-840.882244,0,1241.03564, + 0,0,-1,-824.724927,-164.047988,1241.03564, + 0,0,-1,-700.735204,0,1241.03564, + 0,0,-1,-776.873894,-321.791703,1241.03564, + 0,0,-1,-776.873894,-321.791703,1241.03564, + 0,0,-1,-700.735204,0,1241.03564, + 0,0,-1,-699.168033,-467.169144,1241.03564, + 0,0,-1,-699.168033,-467.169144,1241.03564, + 0,0,-1,-700.735204,0,1241.03564, + 0,0,-1,-687.270773,-136.706657,1241.03564, + 0,0,-1,-699.168033,-467.169144,1241.03564, + 0,0,-1,-687.270773,-136.706657,1241.03564, + 0,0,-1,-594.593537,-594.593537,1241.03564, + 0,0,-1,-594.593537,-594.593537,1241.03564, + 0,0,-1,-687.270773,-136.706657,1241.03564, + 0,0,-1,-647.394912,-268.159753,1241.03564, + 0,0,-1,-594.593537,-594.593537,1241.03564, + 0,0,-1,-647.394912,-268.159753,1241.03564, + 0,0,-1,-582.640028,-389.30762,1241.03564, + 0,0,-1,-594.593537,-594.593537,1241.03564, + 0,0,-1,-582.640028,-389.30762,1241.03564, + 0,0,-1,-467.169144,-699.168033,1241.03564, + 0,0,-1,-467.169144,-699.168033,1241.03564, + 0,0,-1,-582.640028,-389.30762,1241.03564, + 0,0,-1,-495.494614,-495.494614,1241.03564, + 0,0,-1,-467.169144,-699.168033,1241.03564, + 0,0,-1,-495.494614,-495.494614,1241.03564, + 0,0,-1,-389.30762,-582.640028,1241.03564, + 0,0,-1,-467.169144,-699.168033,1241.03564, + 0,0,-1,-389.30762,-582.640028,1241.03564, + 0,0,-1,-321.791703,-776.873894,1241.03564, + 0,0,-1,-321.791703,-776.873894,1241.03564, + 0,0,-1,-389.30762,-582.640028,1241.03564, + 0,0,-1,-268.159753,-647.394912,1241.03564, + 0,0,-1,-321.791703,-776.873894,1241.03564, + 0,0,-1,-268.159753,-647.394912,1241.03564, + 0,0,-1,-164.047988,-824.724927,1241.03564, + 0,0,-1,-164.047988,-824.724927,1241.03564, + 0,0,-1,-268.159753,-647.394912,1241.03564, + 0,0,-1,-136.706657,-687.270773,1241.03564, + 0,0,-1,-164.047988,-824.724927,1241.03564, + 0,0,-1,-136.706657,-687.270773,1241.03564, + 0,0,-1,0,-840.882244,1241.03564, + 0,0,-1,0,-840.882244,1241.03564, + 0,0,-1,-136.706657,-687.270773,1241.03564, + 0,0,-1,0,-700.735204,1241.03564, + 0,0,-1,0,-840.882244,1241.03564, + 0,0,-1,0,-700.735204,1241.03564, + 0,0,-1,136.706657,-687.270773,1241.03564, + 0,0,-1,0,-840.882244,1241.03564, + 0,0,-1,136.706657,-687.270773,1241.03564, + 0,0,-1,164.047988,-824.724927,1241.03564, + 0,0,-1,164.047988,-824.724927,1241.03564, + 0,0,-1,136.706657,-687.270773,1241.03564, + 0,0,-1,268.159753,-647.394912,1241.03564, + 0,0,-1,164.047988,-824.724927,1241.03564, + 0,0,-1,268.159753,-647.394912,1241.03564, + 0,0,-1,321.791703,-776.873894,1241.03564, + 0,0,-1,321.791703,-776.873894,1241.03564, + 0,0,-1,268.159753,-647.394912,1241.03564, + 0,0,-1,389.30762,-582.640028,1241.03564, + 0,0,-1,321.791703,-776.873894,1241.03564, + 0,0,-1,389.30762,-582.640028,1241.03564, + 0,0,-1,467.169144,-699.168033,1241.03564, + 0,0,-1,467.169144,-699.168033,1241.03564, + 0,0,-1,389.30762,-582.640028,1241.03564, + 0,0,-1,495.494614,-495.494614,1241.03564, + 0,0,-1,467.169144,-699.168033,1241.03564, + 0,0,-1,495.494614,-495.494614,1241.03564, + 0,0,-1,594.593537,-594.593537,1241.03564, + 0,0,-1,594.593537,-594.593537,1241.03564, + 0,0,-1,495.494614,-495.494614,1241.03564, + 0,0,-1,582.640028,-389.30762,1241.03564, + 0,0,-1,594.593537,-594.593537,1241.03564, + 0,0,-1,582.640028,-389.30762,1241.03564, + 0,0,-1,647.394912,-268.159753,1241.03564, + 0,0,-1,594.593537,-594.593537,1241.03564, + 0,0,-1,647.394912,-268.159753,1241.03564, + 0,0,-1,699.168033,-467.169144,1241.03564, + 0,0,-1,699.168033,-467.169144,1241.03564, + 0,0,-1,647.394912,-268.159753,1241.03564, + 0,0,-1,687.270773,-136.706657,1241.03564, + 0,0,-1,699.168033,-467.169144,1241.03564, + 0,0,-1,687.270773,-136.706657,1241.03564, + 0,0,-1,700.735204,0,1241.03564, + 0,0,-1,699.168033,-467.169144,1241.03564, + 0,0,-1,700.735204,0,1241.03564, + 0,0,-1,776.873894,-321.791703,1241.03564, + 0,0,-1,776.873894,-321.791703,1241.03564, + 0,0,-1,700.735204,0,1241.03564, + 0,0,-1,840.882244,0,1241.03564, + 0,0,-1,776.873894,-321.791703,1241.03564, + 0,0,-1,840.882244,0,1241.03564, + 0,0,-1,824.724927,-164.047988,1241.03564, + 0.15719,-0.880542,0.447144,154.934211,-778.906876,1614.76108, + 0.087754,-0.890977,0.445488,133.953889,-874.404617,1427.89836, + 0.174494,-0.877241,0.447214,173.161765,-870.542978,1427.89836, + 0.087754,-0.890977,0.445488,133.953889,-874.404617,1427.89836, + 0.15719,-0.880542,0.447144,154.934211,-778.906876,1614.76108, + 0.087754,-0.890977,0.445488,44.790142,-883.18648,1427.89836, + 0.087754,-0.890977,0.445488,44.790142,-883.18648,1427.89836, + -0,-0.894427,0.447214,0,-794.166564,1614.76108, + -0,-0.894427,0.447214,0,-887.597924,1427.89836, + -0,-0.894427,0.447214,0,-794.166564,1614.76108, + 0.087754,-0.890977,0.445488,44.790142,-883.18648,1427.89836, + 0.15719,-0.880542,0.447144,154.934211,-778.906876,1614.76108, + 0,-0.935939,0.352162,653.750225,-1019.675597,2128.611098, + 0.146874,-0.976542,0.157463,288.287545,-1033.56568,2082.821632, + 0,-0.986659,0.162803,653.750225,-1033.56568,2082.821632, + 0.146874,-0.976542,0.157463,288.287545,-1033.56568,2082.821632, + 0,-0.935939,0.352162,653.750225,-1019.675597,2128.611098, + 0.118798,-0.950331,0.287676,320.792446,-1019.675597,2128.611098, + -0.582554,-0.812792,-0,-467.169144,-699.168033,2549.07468, + -0.707107,-0.707107,-0,-594.593537,-594.593537,2455.64332, + -0.527988,-0.849252,-0,-467.169144,-699.168033,2455.64332, + -0.707107,-0.707107,-0,-594.593537,-594.593537,2455.64332, + -0.582554,-0.812792,-0,-467.169144,-699.168033,2549.07468, + -0.707107,-0.707107,-0,-594.593537,-594.593537,2549.07468, + 0,0,1,-594.593537,-594.593537,2549.07468, + 0,0,1,-467.169144,-699.168033,2549.07468, + 0,0,1,-512.438676,-662.016288,2549.07468, + 0,0,1,-594.593537,-594.593537,2549.07468, + 0,0,1,-512.438676,-662.016288,2549.07468, + 0,0,1,-578.083211,-608.143211,2549.07468, + -0.840814,-0.522742,0.140615,-699.168033,-467.169144,914.026067, + -0.909392,-0.412143,0.056077,-784.574342,-324.981333,855.371869, + -0.811513,-0.581637,0.056077,-706.098253,-471.799769,855.371869, + -0.909392,-0.412143,0.056077,-784.574342,-324.981333,855.371869, + -0.840814,-0.522742,0.140615,-699.168033,-467.169144,914.026067, + -0.92664,-0.348663,0.140615,-776.873894,-321.791703,914.026067, + -0.923079,-0.382289,-0.0422,-997.760837,-413.286071,2011.592523, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.841785,-0.538757,-0.033753,-897.96103,-599.998378,2011.592523, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.923079,-0.382289,-0.0422,-997.760837,-413.286071,2011.592523, + -0.910916,-0.376813,-0.168059,-990.771213,-410.390874,1922.192772, + -0.910916,-0.376813,-0.168059,-990.771213,-410.390874,1922.192772, + -0.785009,-0.523429,-0.331336,-868.041423,-580.006736,1812.397596, + -0.804773,-0.576807,-0.140121,-891.670534,-595.795203,1922.192772, + -0.785009,-0.523429,-0.331336,-868.041423,-580.006736,1812.397596, + -0.910916,-0.376813,-0.168059,-990.771213,-410.390874,1922.192772, + -0.872041,-0.360223,-0.331336,-964.515951,-399.515588,1812.397596, + -0.872041,-0.360223,-0.331336,-964.515951,-399.515588,1812.397596, + -0.707373,-0.49612,-0.503476,-829.407027,-554.192058,1708.939502, + -0.785009,-0.523429,-0.331336,-868.041423,-580.006736,1812.397596, + -0.707373,-0.49612,-0.503476,-829.407027,-554.192058,1708.939502, + -0.872041,-0.360223,-0.331336,-964.515951,-399.515588,1812.397596, + -0.79057,-0.348586,-0.503476,-921.587711,-381.734129,1708.939502, + -0.674254,-0.733678,0.084249,-761.149822,-761.149822,2100.644855, + -0.772335,-0.633825,0.041998,-786.924742,-735.296195,2058.807508, + -0.683228,-0.729664,0.028116,-763.653083,-763.653083,2058.811877, + -0.772335,-0.633825,0.041998,-786.924742,-735.296195,2058.807508, + -0.674254,-0.733678,0.084249,-761.149822,-761.149822,2100.644855, + -0.770291,-0.632147,0.083917,-766.822004,-754.694855,2097.204109, + -0.772335,-0.633825,0.041998,-786.924742,-735.296195,2058.807508, + -0.770291,-0.632147,0.083917,-766.822004,-754.694855,2097.204109, + -0.770291,-0.632147,0.083917,-781.183382,-739.911027,2076.744949, + 0.890977,-0.087754,0.445488,887.597924,0,1427.89836, + 0.882589,-0.145631,0.447021,778.906876,-154.934211,1614.76108, + 0.871137,-0.203207,0.447021,870.542978,-173.161765,1427.89836, + 0.882589,-0.145631,0.447021,778.906876,-154.934211,1614.76108, + 0.890977,-0.087754,0.445488,887.597924,0,1427.89836, + 0.890977,-0.087754,0.445488,794.166564,0,1614.76108, + -0.872041,-0.360223,0.331336,-964.515951,-399.515588,2258.006804, + -0.966926,-0.191862,0.168059,-1051.797109,-209.215453,2148.211628, + -0.910916,-0.376813,0.168059,-990.771213,-410.390874,2148.211628, + -0.966926,-0.191862,0.168059,-1051.797109,-209.215453,2148.211628, + -0.872041,-0.360223,0.331336,-964.515951,-399.515588,2258.006804, + -0.925561,-0.183175,0.331336,-1023.924672,-203.671281,2258.006804, + 0.522742,-0.840814,0.140615,467.169144,-699.168033,914.026067, + 0.381937,-0.922484,0.056107,324.981333,-784.574342,855.371869, + 0.554566,-0.830246,0.056107,471.799769,-706.098253,855.371869, + 0.381937,-0.922484,0.056107,324.981333,-784.574342,855.371869, + 0.522742,-0.840814,0.140615,467.169144,-699.168033,914.026067, + 0.348663,-0.92664,0.140615,321.791703,-776.873894,914.026067, + 0.247761,-0.546683,0.799845,321.791703,-776.873894,914.026067, + 0.316902,-0.509726,0.799845,363.353779,-543.79736,1054.17292, + 0.21137,-0.561756,0.799845,250.282436,-604.235252,1054.17292, + 0.316902,-0.509726,0.799845,363.353779,-543.79736,1054.17292, + 0.247761,-0.546683,0.799845,321.791703,-776.873894,914.026067, + 0.349653,-0.487843,0.799845,467.169144,-699.168033,914.026067, + 0.872041,-0.360223,-0.331336,964.515951,-399.515588,1812.397596, + 0.966926,-0.191862,-0.168059,1051.797109,-209.215453,1922.192772, + 0.901839,-0.40872,-0.140121,990.771213,-410.390874,1922.192772, + 0.966926,-0.191862,-0.168059,1051.797109,-209.215453,1922.192772, + 0.872041,-0.360223,-0.331336,964.515951,-399.515588,1812.397596, + 0.925561,-0.183175,-0.331336,1023.924672,-203.671281,1812.397596, + 0.929871,-0.091584,0.356303,1043.984543,0,2258.006804, + 0.843385,-0.187656,0.503476,978.352295,-194.606371,2361.464898, + 0.925561,-0.183175,0.331336,1023.924672,-203.671281,2258.006804, + 0.843385,-0.187656,0.503476,978.352295,-194.606371,2361.464898, + 0.929871,-0.091584,0.356303,1043.984543,0,2258.006804, + 0.850126,-0.08373,0.51988,997.51935,0,2361.464898, + 0.748575,-0.61434,0.249443,767.904956,-709.249312,2240.210435, + 0.665498,-0.684813,0.29689,738.20855,-738.20855,2258.006804, + 0.684548,-0.684548,0.250574,739.77113,-739.77113,2249.469127, + 0.665498,-0.684813,0.29689,738.20855,-738.20855,2258.006804, + 0.748575,-0.61434,0.249443,767.904956,-709.249312,2240.210435, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.748575,-0.61434,0.249443,767.904956,-709.249312,2240.210435, + 0.748575,-0.61434,0.249443,806.222028,-670.885845,2219.704735, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.748575,-0.61434,0.249443,806.222028,-670.885845,2219.704735, + 0.748575,-0.61434,0.249443,843.013714,-637.259985,2192.108705, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.748575,-0.61434,0.249443,843.013714,-637.259985,2192.108705, + 0.748575,-0.61434,0.249443,876.866129,-609.663955,2158.482845, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.748575,-0.61434,0.249443,876.866129,-609.663955,2158.482845, + 0.75819,-0.62223,0.19488,884.794335,-604.173876,2148.211628, + 0.769936,-0.566074,0.294549,868.041423,-580.006736,2258.006804, + 0.75819,-0.62223,0.19488,884.794335,-604.173876,2148.211628, + 0.832671,-0.532692,0.151323,891.670534,-595.795203,2148.211628, + -0.619247,-0.617355,0.485186,-705.352697,-705.352697,2361.464898, + -0.785009,-0.523429,0.331336,-868.041423,-580.006736,2258.006804, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.785009,-0.523429,0.331336,-868.041423,-580.006736,2258.006804, + -0.619247,-0.617355,0.485186,-705.352697,-705.352697,2361.464898, + -0.707373,-0.49612,0.503476,-829.407027,-554.192058,2361.464898, + -0,-0.995185,0.098017,911.540742,-574.592523,2011.592523, + -0,-0.986659,0.162803,180.675225,-576.530907,1991.911763, + 0,-0.973856,0.227168,908.62526,-576.530907,1991.911763, + -0,-0.986659,0.162803,180.675225,-576.530907,1991.911763, + -0,-0.995185,0.098017,911.540742,-574.592523,2011.592523, + 0,-0.999462,0.032813,180.675225,-572.267173,2035.202177, + 0,-0.999462,0.032813,180.675225,-572.267173,2035.202177, + -0,-0.995185,0.098017,911.540742,-574.592523,2011.592523, + 0,-1,-0,912.783669,-572.267169,2035.202245, + 0,-0.520969,-0.853575,180.675225,-572.267173,2035.202177, + 0,-0.520969,-0.853575,912.783669,-572.267169,2035.202245, + 0,-0.520969,-0.853575,907.767925,-572.267173,2035.202247, + -0,-0.382683,0.92388,767.904941,-709.249312,1830.193918, + 0,-0.527988,0.849252,180.675225,-670.885845,1850.699619, + 0,-0.352162,0.935939,180.675225,-709.249312,1830.193918, + 0,-0.527988,0.849252,180.675225,-670.885845,1850.699619, + -0,-0.382683,0.92388,767.904941,-709.249312,1830.193918, + 0,-0.582554,0.812792,806.222013,-670.885845,1850.699619, + 0.325954,-0.832956,0.447144,303.914386,-733.714234,1614.76108, + 0.259888,-0.856737,0.445488,307.339229,-829.84069,1427.89836, + 0.342282,-0.826343,0.447214,339.66902,-820.033555,1427.89836, + 0.259888,-0.856737,0.445488,307.339229,-829.84069,1427.89836, + 0.325954,-0.832956,0.447144,303.914386,-733.714234,1614.76108, + 0.259888,-0.856737,0.445488,221.595155,-855.85087,1427.89836, + 0.259888,-0.856737,0.445488,221.595155,-855.85087,1427.89836, + 0.15719,-0.880542,0.447144,154.934211,-778.906876,1614.76108, + 0.174494,-0.877241,0.447214,173.161765,-870.542978,1427.89836, + 0.15719,-0.880542,0.447144,154.934211,-778.906876,1614.76108, + 0.259888,-0.856737,0.445488,221.595155,-855.85087,1427.89836, + 0.325954,-0.832956,0.447144,303.914386,-733.714234,1614.76108, + -0.903939,-0,0.427662,40.110651,-1076.017993,2017.42443, + -0.849252,-0,0.527988,35.951781,-1076.262688,2009.643732, + -0.881921,-0,0.471397,36.993432,-1076.325013,2011.592523, + -0.849252,-0,0.527988,35.951781,-1076.262688,2009.643732, + -0.903939,-0,0.427662,40.110651,-1076.017993,2017.42443, + -0.83147,0,0.55557,35.951781,-975.958402,2009.643732, + -0.83147,0,0.55557,35.951781,-975.958402,2009.643732, + -0.903939,-0,0.427662,40.110651,-1076.017993,2017.42443, + -0.935939,0,0.352162,40.110651,-976.014545,2017.42443, + -0.904882,0.382198,0.187384,-853.465107,-778.056207,2053.98621, + -0.915533,0.385671,-0.11427,-818.480102,-696.846173,2011.592491, + -0.900096,0.367041,-0.234753,-853.905696,-778.543243,2019.687273, + -0.915533,0.385671,-0.11427,-818.480102,-696.846173,2011.592491, + -0.904882,0.382198,0.187384,-853.465107,-778.056207,2053.98621, + -0.904884,0.382185,0.187402,-818.273878,-697.096462,2058.801607, + 0.117054,-0.588471,0.8,164.047988,-824.724927,914.026067, + 0.21137,-0.561756,0.799845,250.282436,-604.235252,1054.17292, + 0.117054,-0.588471,0.8,127.592879,-641.452722,1054.17292, + 0.21137,-0.561756,0.799845,250.282436,-604.235252,1054.17292, + 0.117054,-0.588471,0.8,164.047988,-824.724927,914.026067, + 0.247761,-0.546683,0.799845,321.791703,-776.873894,914.026067, + 0.315017,-0.837219,0.447021,268.159753,-647.394912,1241.03564, + 0.203207,-0.871137,0.447021,154.934211,-778.906876,1054.17292, + 0.369253,-0.814754,0.447021,303.914386,-733.714234,1054.17292, + 0.203207,-0.871137,0.447021,154.934211,-778.906876,1054.17292, + 0.315017,-0.837219,0.447021,268.159753,-647.394912,1241.03564, + 0.145631,-0.882589,0.447021,136.706657,-687.270773,1241.03564, + -0.792149,-0.07802,-0.60532,-784.019466,0,631.979457, + -0.749001,-0.123588,-0.65094,-731.120069,-145.428824,587.016307, + -0.796215,-0.15672,-0.584364,-768.954752,-152.95461,631.979457, + -0.749001,-0.123588,-0.65094,-731.120069,-145.428824,587.016307, + -0.792149,-0.07802,-0.60532,-784.019466,0,631.979457, + -0.756844,-0.074543,-0.649331,-745.443558,0,587.016307, + -0.606233,-0.567693,0.556961,-660.670395,-660.670395,2455.64332, + -0.707373,-0.49612,0.503476,-829.407027,-554.192058,2361.464898, + -0.619247,-0.617355,0.485186,-705.352697,-705.352697,2361.464898, + -0.707373,-0.49612,0.503476,-829.407027,-554.192058,2361.464898, + -0.606233,-0.567693,0.556961,-660.670395,-660.670395,2455.64332, + -0.642867,-0.527587,0.555314,-705.689427,-605.814545,2455.64332, + -0.707373,-0.49612,0.503476,-829.407027,-554.192058,2361.464898, + -0.642867,-0.527587,0.555314,-705.689427,-605.814545,2455.64332, + -0.642867,-0.527587,0.555314,-765.568614,-532.851545,2455.64332, + -0.707373,-0.49612,0.503476,-829.407027,-554.192058,2361.464898, + -0.642867,-0.527587,0.555314,-765.568614,-532.851545,2455.64332, + -0.705336,-0.438515,0.556961,-776.866198,-519.085398,2455.64332, + 0.811513,-0.581637,0.056077,706.098253,-471.799769,855.371869, + 0.700074,-0.700074,0.140689,594.593537,-594.593537,914.026067, + 0.69246,-0.720397,0.039075,600.487204,-600.487204,855.371869, + 0.700074,-0.700074,0.140689,594.593537,-594.593537,914.026067, + 0.811513,-0.581637,0.056077,706.098253,-471.799769,855.371869, + 0.840814,-0.522742,0.140615,699.168033,-467.169144,914.026067, + 0.348663,-0.92664,0.140615,321.791703,-776.873894,914.026067, + 0.19463,-0.979271,0.056107,165.674047,-832.899679,855.371869, + 0.381937,-0.922484,0.056107,324.981333,-784.574342,855.371869, + 0.19463,-0.979271,0.056107,165.674047,-832.899679,855.371869, + 0.348663,-0.92664,0.140615,321.791703,-776.873894,914.026067, + 0.161185,-0.976856,0.140615,164.047988,-824.724927,914.026067, + 0,-0.032813,0.999462,670.391133,-794.166513,1813.302837, + 0,-0.162803,0.986659,180.675225,-750.8761,1817.56657, + 0,0.049186,0.99879,180.675225,-794.166513,1813.302837, + 0,-0.162803,0.986659,180.675225,-750.8761,1817.56657, + 0,-0.032813,0.999462,670.391133,-794.166513,1813.302837, + -0,-0.243095,0.970002,724.871877,-750.8761,1817.56657, + 0,0.849252,-0.527988,180.675225,-978.669071,2158.482845, + 0,0.910825,-0.412792,653.750225,-999.174772,2120.119378, + 0,0.935939,-0.352162,180.675225,-999.174772,2120.119378, + 0,0.910825,-0.412792,653.750225,-999.174772,2120.119378, + 0,0.849252,-0.527988,180.675225,-978.669071,2158.482845, + 0,0.812792,-0.582554,653.750225,-978.669071,2158.482845, + 0,-0.973856,0.227168,180.675225,-707.112262,2017.886009, + 0,-0.92388,0.382683,104.493588,-712.163205,2001.235298, + 0,-0.92388,0.382683,180.675225,-712.163201,2001.235293, + 0,-0.92388,0.382683,104.493588,-712.163205,2001.235298, + 0,-0.973856,0.227168,180.675225,-707.112262,2017.886009, + 0,-0.986659,0.162803,104.493585,-707.112263,2017.886024, + 0.632456,-0.632456,0.447214,561.560563,-561.560563,1614.76108, + 0.567965,-0.692067,0.445488,540.907511,-698.794954,1427.89836, + 0.632456,-0.632456,0.447214,627.626511,-627.626511,1427.89836, + 0.567965,-0.692067,0.445488,540.907511,-698.794954,1427.89836, + 0.482193,-0.753361,0.447144,441.215303,-660.325365,1614.76108, + 0.496917,-0.743689,0.447214,493.122985,-738.010701,1427.89836, + 0.482193,-0.753361,0.447144,441.215303,-660.325365,1614.76108, + 0.567965,-0.692067,0.445488,540.907511,-698.794954,1427.89836, + 0.632456,-0.632456,0.447214,561.560563,-561.560563,1614.76108, + -0.358793,-0.190568,-0.913757,-750.03201,-762.726244,1915.0942, + -0.188016,-0.3607,-0.913535,-781.550765,-852.489443,1950.715796, + -0.475897,-0.070701,-0.876654,-805.854069,-828.277941,1950.684188, + -0.188016,-0.3607,-0.913535,-781.550765,-852.489443,1950.715796, + -0.358793,-0.190568,-0.913757,-750.03201,-762.726244,1915.0942, + -0.10232,-0.445425,-0.889453,-712.20051,-793.069744,1912.981477, + 0.438107,-0.410255,0.799845,594.593537,-594.593537,914.026067, + 0.487843,-0.349653,0.799845,543.79736,-363.353779,1054.17292, + 0.410255,-0.438107,0.799845,462.46164,-462.46164,1054.17292, + 0.487843,-0.349653,0.799845,543.79736,-363.353779,1054.17292, + 0.438107,-0.410255,0.799845,594.593537,-594.593537,914.026067, + 0.509726,-0.316902,0.799845,699.168033,-467.169144,914.026067, + -0.633398,-0.771798,0.055991,-683.397325,-829.517282,2058.811877, + -0.674254,-0.733678,0.084249,-761.149822,-761.149822,2100.644855, + -0.683228,-0.729664,0.028116,-763.653083,-763.653083,2058.811877, + -0.674254,-0.733678,0.084249,-761.149822,-761.149822,2100.644855, + -0.633398,-0.771798,0.055991,-683.397325,-829.517282,2058.811877, + -0.632155,-0.770284,0.083921,-688.216174,-823.53445,2077.427173, + -0.674254,-0.733678,0.084249,-761.149822,-761.149822,2100.644855, + -0.632155,-0.770284,0.083921,-688.216174,-823.53445,2077.427173, + -0.632155,-0.770284,0.083921,-703.270205,-808.916878,2098.19893, + -0.674254,-0.733678,0.084249,-761.149822,-761.149822,2100.644855, + -0.632155,-0.770284,0.083921,-703.270205,-808.916878,2098.19893, + -0.632155,-0.770284,0.083921,-723.842933,-790.8427,2109.126834, + -0.674254,-0.733678,0.084249,-761.149822,-761.149822,2100.644855, + -0.632155,-0.770284,0.083921,-723.842933,-790.8427,2109.126834, + -0.632155,-0.770284,0.083921,-746.579505,-772.239793,2108.608099, + -0.826255,-0.551707,-0.113678,-704.675266,-470.848959,796.15315, + -0.684138,-0.684138,-0.252806,-590.997993,-590.997993,738.078199, + -0.704523,-0.704523,-0.085417,-599.277053,-599.277053,796.15315, + -0.684138,-0.684138,-0.252806,-590.997993,-590.997993,738.078199, + -0.826255,-0.551707,-0.113678,-704.675266,-470.848959,796.15315, + -0.798598,-0.532672,-0.280182,-694.940121,-464.344144,738.078199, + -0.164361,-0.334551,0.927934,-779.335772,-850.040945,2123.148196, + -0.335138,-0.164419,0.927712,-750.226481,-763.163738,2153.518338, + -0.453201,-0.045611,0.890241,-803.639077,-825.829444,2123.116588, + -0.335138,-0.164419,0.927712,-750.226481,-763.163738,2153.518338, + -0.164361,-0.334551,0.927934,-779.335772,-850.040945,2123.148196, + -0.079281,-0.419958,0.904074,-713.051374,-793.031289,2155.442781, + -0,-0.243095,0.970002,724.871877,-750.8761,1817.56657, + 0,-0.352162,0.935939,180.675225,-709.249312,1830.193918, + 0,-0.162803,0.986659,180.675225,-750.8761,1817.56657, + 0,-0.352162,0.935939,180.675225,-709.249312,1830.193918, + -0,-0.243095,0.970002,724.871877,-750.8761,1817.56657, + -0,-0.382683,0.92388,767.904941,-709.249312,1830.193918, + -0,-0.382683,0.92388,767.904941,-709.249312,1830.193918, + -0,-0.243095,0.970002,724.871877,-750.8761,1817.56657, + -0,-0.290285,0.95694,739.771122,-739.771122,1820.935228, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.75819,-0.62223,0.194878,-759.379832,-756.991889,2148.211628, + -0.684548,-0.684548,0.250574,-758.175253,-758.175253,2148.912113, + -0.75819,-0.62223,0.194878,-759.379832,-756.991889,2148.211628, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.804774,-0.576808,0.140116,-891.670534,-595.795203,2148.211628, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.785009,-0.523429,0.331336,-868.041423,-580.006736,2258.006804, + -0.201549,0.493286,0.846195,-769.870311,-863.13013,1987.610439, + -0.033544,0.328548,0.943892,-723.636295,-790.983771,1961.015863, + 0.057027,0.239002,0.969343,-785.140115,-848.157193,1978.730924, + -0.033544,0.328548,0.943892,-723.636295,-790.983771,1961.015863, + -0.201549,0.493286,0.846195,-769.870311,-863.13013,1987.610439, + -0.278983,0.56848,0.77395,-702.965588,-809.153242,1972.08037, + 0.267392,-0.774255,0.573613,-655.637458,-847.372595,2104.031681, + 0.091725,-0.593783,0.79938,-757.051053,-872.595836,2110.051763, + 0.314449,-0.823891,0.471514,-740.177565,-890.06034,2085.821102, + 0.091725,-0.593783,0.79938,-757.051053,-872.595836,2110.051763, + 0.267392,-0.774255,0.573613,-655.637458,-847.372595,2104.031681, + 0.113282,-0.616155,0.779436,-680.351355,-823.413171,2137.783955, + -0.772335,-0.633825,0.041998,-786.924742,-735.296195,2058.807508, + -0.688905,-0.723623,-0.042187,-763.653083,-763.653083,2011.592523, + -0.683228,-0.729664,0.028116,-763.653083,-763.653083,2058.811877, + -0.688905,-0.723623,-0.042187,-763.653083,-763.653083,2011.592523, + -0.772335,-0.633825,0.041998,-786.924742,-735.296195,2058.807508, + -0.772331,-0.633831,-0.041995,-786.927339,-735.293322,2011.59251, + -0.772331,-0.633831,-0.041995,-786.927339,-735.293322,2011.59251, + -0.772335,-0.633825,0.041998,-786.924742,-735.296195,2058.807508, + -0.773018,-0.634385,0.000005,-789.342859,-732.349615,2049.894341, + -0.772331,-0.633831,-0.041995,-786.927339,-735.293322,2011.59251, + -0.773018,-0.634385,0.000005,-789.342859,-732.349615,2049.894341, + -0.773009,-0.634395,0.000007,-789.394717,-732.286733,2020.799449, + -0.000001,0.683524,0.729928,104.493611,-856.929211,1972.439549, + -0.000001,0.582554,0.812792,180.675225,-843.478786,1961.401146, + -0.000001,0.527988,0.849252,104.493611,-843.478858,1961.40113, + -0.000001,0.582554,0.812792,180.675225,-843.478786,1961.401146, + -0.000001,0.683524,0.729928,104.493611,-856.929211,1972.439549, + -0.000001,0.729928,0.683524,180.675225,-856.929131,1972.439559, + -0,-0.412792,0.910825,104.493601,-760.199658,1953.198845, + -0,-0.527988,0.849252,180.675225,-744.854241,1961.401146, + -0,-0.582554,0.812792,104.493598,-744.854262,1961.40113, + -0,-0.527988,0.849252,180.675225,-744.854241,1961.401146, + -0,-0.412792,0.910825,104.493601,-760.199658,1953.198845, + -0,-0.352162,0.935939,180.675225,-760.199629,1953.198865, + -0.000001,0.986659,0.162803,104.493608,-881.220857,2017.886024, + -0.000001,0.999462,0.032813,180.675225,-882.926259,2035.202177, + -0.000001,0.973856,0.227168,180.675225,-881.220765,2017.886009, + -0.000001,0.999462,0.032813,180.675225,-882.926259,2035.202177, + -0.000001,0.986659,0.162803,104.493608,-881.220857,2017.886024, + -0.000001,0.999462,-0.032813,104.493606,-882.926352,2035.2022, + 0.972323,-0.22681,0.056077,832.899679,-165.674047,855.371869, + 0.92664,-0.348663,0.140615,776.873894,-321.791703,914.026067, + 0.909392,-0.412143,0.056077,784.574342,-324.981333,855.371869, + 0.92664,-0.348663,0.140615,776.873894,-321.791703,914.026067, + 0.972323,-0.22681,0.056077,832.899679,-165.674047,855.371869, + 0.976856,-0.161185,0.140615,824.724927,-164.047988,914.026067, + -0.486909,-0.726302,0.485186,-554.192058,-829.407027,2361.464898, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.538332,-0.779667,0.319873,-580.006736,-868.041423,2258.006804, + -0.666389,-0.680555,0.304582,-738.20855,-738.20855,2258.006804, + -0.486909,-0.726302,0.485186,-554.192058,-829.407027,2361.464898, + -0.619247,-0.617355,0.485186,-705.352697,-705.352697,2361.464898, + -0,0.162803,0.986659,104.493608,-811.482736,1948.147903, + -0,0.032813,0.999462,180.675225,-794.166513,1946.442431, + -0,-0.032813,0.999462,104.493606,-794.16656,1946.442408, + -0,0.032813,0.999462,180.675225,-794.166513,1946.442431, + -0,0.162803,0.986659,104.493608,-811.482736,1948.147903, + -0,0.227168,0.973856,180.675225,-811.482681,1948.147925, + -0.000001,0.92388,0.382683,104.49361,-876.169915,2001.235298, + -0.000001,0.849252,0.527988,180.675225,-867.967544,1985.889904, + -0.000001,0.812792,0.582554,104.493611,-867.96763,1985.889902, + -0.000001,0.849252,0.527988,180.675225,-867.967544,1985.889904, + -0.000001,0.92388,0.382683,104.49361,-876.169915,2001.235298, + -0.000001,0.92388,0.382683,180.675225,-876.169825,2001.235293, + 0.871137,-0.203207,0.447021,870.542978,-173.161765,1427.89836, + 0.837219,-0.315017,0.447021,733.714234,-303.914386,1614.76108, + 0.814754,-0.369253,0.447021,820.033555,-339.66902,1427.89836, + 0.837219,-0.315017,0.447021,733.714234,-303.914386,1614.76108, + 0.871137,-0.203207,0.447021,870.542978,-173.161765,1427.89836, + 0.882589,-0.145631,0.447021,778.906876,-154.934211,1614.76108, + -0,-0.032813,0.999462,104.493606,-794.16656,1946.442408, + -0,-0.162803,0.986659,180.675225,-776.850346,1948.147925, + -0,-0.227168,0.973856,104.493604,-776.850384,1948.147903, + -0,-0.162803,0.986659,180.675225,-776.850346,1948.147925, + -0,-0.032813,0.999462,104.493606,-794.16656,1946.442408, + -0,0.032813,0.999462,180.675225,-794.166513,1946.442431, + -0.000001,0.812792,0.582554,104.493611,-867.96763,1985.889902, + -0.000001,0.729928,0.683524,180.675225,-856.929131,1972.439559, + -0.000001,0.683524,0.729928,104.493611,-856.929211,1972.439549, + -0.000001,0.729928,0.683524,180.675225,-856.929131,1972.439559, + -0.000001,0.812792,0.582554,104.493611,-867.96763,1985.889902, + -0.000001,0.849252,0.527988,180.675225,-867.967544,1985.889904 +}; +static const struct gllist robot_body_half_outside_frame = { GL_N3F_V3F, GL_TRIANGLES, 4980, robot_body_half_outside_data, 0 }; +const struct gllist *robot_body_half_outside = &robot_body_half_outside_frame; + +static const float robot_crank_full_data[] = { + 0.494392,-0.002816,-0.869234,21.079139,-1635.024615,2001.52588, + 0.264054,-0.000004,-0.964508,7.982213,-1575.775514,1996.029042, + 0.604615,-0.002819,-0.796513,22.36552,-1575.775401,2002.065588, + 0.264054,-0.000004,-0.964508,7.982213,-1575.775514,1996.029042, + 0.494392,-0.002816,-0.869234,21.079139,-1635.024615,2001.52588, + 0.134401,-0.000005,-0.990927,7.982547,-1635.024718,1996.029357, + -0.29795,0.65913,-0.690488,-67.67685,-1260.036772,1941.044079, + -0.157155,0.595594,-0.787762,-7.617619,-1175.364474,1995.955026, + -0.310189,0.662309,-0.682004,-26.493073,-1260.036639,1922.313042, + 0.263844,0.659288,-0.704078,18.723832,-1260.036393,1920.768168, + 0.188248,0.621463,-0.760491,7.980911,-1175.364562,1996.027815, + 0.276537,0.662012,-0.696611,61.090003,-1260.03607,1936.644652, + 0.000006,-1,0.000005,39.173475,-1635.024291,2043.184745, + 0.000006,-1,0.000005,33.136928,-1635.024249,2057.568052, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.701587,-0.662307,0.262918,98.556303,-1491.102301,2096.293522, + 0.679262,-0.618094,0.395681,33.136594,-1575.775046,2057.567737, + 0.698932,-0.659128,0.277569,114.432787,-1491.102437,2053.927351, + -0.968686,-0.000003,0.24829,22.124996,-1479.423627,2131.053624, + -0.968686,-0.000002,0.24829,26.490435,-1260.035141,2148.088903, + -0.968685,-0.000002,0.248291,22.123694,-1271.716449,2131.052397, + -0.968686,-0.000002,0.24829,26.490435,-1260.035141,2148.088903, + -0.968686,-0.000003,0.24829,22.124996,-1479.423627,2131.053624, + -0.968686,-0.000003,0.248288,26.491737,-1491.102432,2148.090131, + -0.24829,-0.000002,-0.968686,-39.245963,-1575.775532,2042.8185, + -0.248291,-0.000005,-0.968685,-112.887948,-1491.103676,2061.693954, + -0.248289,-0.000005,-0.968686,-95.851569,-1479.424684,2057.327217, + 0.509398,-0.000001,-0.860531,-83.423414,-1271.715068,1983.068468, + 0.509398,-0.000001,-0.860531,-98.556338,-1491.104061,1974.110878, + 0.509398,-0.000001,-0.860531,-98.55764,-1260.03677,1974.10965, + 0.509398,-0.000001,-0.860531,-98.556338,-1491.104061,1974.110878, + 0.509398,-0.000001,-0.860531,-83.423414,-1271.715068,1983.068468, + 0.509399,-0.000001,-0.860531,-83.422112,-1479.425008,1983.069695, + 0.509398,-0.000001,-0.860531,-33.136629,-1575.775657,2012.836663, + 0.509398,-0.000001,-0.860531,-98.556338,-1491.104061,1974.110878, + 0.509399,-0.000001,-0.860531,-83.422112,-1479.425008,1983.069695, + 0.134401,-0.000005,-0.990927,7.982547,-1635.024718,1996.029357, + -0.125147,-0.000006,-0.992138,-7.616317,-1575.775602,1995.956254, + 0.264054,-0.000004,-0.964508,7.982213,-1575.775514,1996.029042, + -0.125147,-0.000006,-0.992138,-7.616317,-1575.775602,1995.956254, + 0.134401,-0.000005,-0.990927,7.982547,-1635.024718,1996.029357, + -0.255041,-0.000007,-0.96693,-7.615983,-1635.024806,1995.956569, + 0.968687,0.000002,-0.248286,-7.616317,-1575.775602,1995.956254, + 0.968687,0.000003,-0.248285,-26.491771,-1491.10393,1922.314269, + 0.968687,0.000003,-0.248287,-22.125162,-1479.424895,1939.350652, + -0.989965,-0.000002,-0.141315,7.982213,-1575.775514,1996.029042, + -0.989965,-0.000005,-0.141313,16.239785,-1479.424685,1938.180011, + -0.989965,-0.000005,-0.141316,18.725134,-1491.103683,1920.769396, + 0.860529,0.000003,0.509402,22.36552,-1575.775401,2002.065588, + 0.860528,0.000006,0.509402,61.091305,-1491.10336,1936.64588, + 0.86053,0.000006,0.5094,52.13236,-1479.42441,1951.780109, + -0.600085,-0.000006,-0.799936,94.156876,-1491.10301,1967.52667, + -0.600085,-0.000004,-0.799936,80.08694,-1271.715963,1978.079227, + -0.600083,-0.000002,-0.799938,94.155574,-1260.035719,1967.525442, + -0.600085,-0.000004,-0.799936,80.08694,-1271.715963,1978.079227, + -0.600085,-0.000006,-0.799936,94.156876,-1491.10301,1967.52667, + -0.600087,-0.000006,-0.799935,80.088242,-1479.424113,1978.080455, + -0.600086,-0.000003,-0.799936,33.343877,-1575.77528,2013.146883, + -0.600087,-0.000006,-0.799935,80.088242,-1479.424113,1978.080455, + -0.600085,-0.000006,-0.799936,94.156876,-1491.10301,1967.52667, + -0.011122,0.512212,-0.858787,16.238483,-1271.715391,1938.178783, + -0.157155,0.595594,-0.787762,-7.617619,-1175.364474,1995.955026, + 0.188248,0.621463,-0.760491,7.980911,-1175.364562,1996.027815, + -0.026244,0.509307,-0.860185,-22.126464,-1271.715181,1939.349424, + -0.157155,0.595594,-0.787762,-7.617619,-1175.364474,1995.955026, + -0.011122,0.512212,-0.858787,16.238483,-1271.715391,1938.178783, + 0.670858,0.621465,-0.404636,33.342575,-1175.364796,2013.145656, + 0.599391,0.512211,-0.615118,80.08694,-1271.715963,1978.079227, + 0.503006,0.570988,-0.648812,22.364218,-1175.364675,2002.064361, + 0.589687,0.509305,-0.6268,52.131057,-1271.715666,1951.778881, + 0.503006,0.570988,-0.648812,22.364218,-1175.364675,2002.064361, + 0.599391,0.512211,-0.615118,80.08694,-1271.715963,1978.079227, + 0.011083,0.509565,0.860361,22.123694,-1271.716449,2131.052397, + 0.200522,0.618102,0.760093,7.61498,-1175.364977,2074.446919, + -0.134987,0.595762,0.791736,-7.983549,-1175.364888,2074.374131, + 0.026184,0.512918,0.858038,-16.241253,-1271.716239,2132.223038, + 0.011083,0.509565,0.860361,22.123694,-1271.716449,2131.052397, + -0.134987,0.595762,0.791736,-7.983549,-1175.364888,2074.374131, + -0.600529,0.509567,0.616204,-52.133828,-1271.715965,2118.62294, + -0.458828,0.595592,0.659353,-22.366857,-1175.364775,2068.337584, + -0.655293,0.595761,0.464393,-33.345214,-1175.364654,2057.256289, + -0.588208,0.51292,0.62524,-80.08971,-1271.715667,2092.322594, + -0.600529,0.509567,0.616204,-52.133828,-1271.715965,2118.62294, + -0.655293,0.595761,0.464393,-33.345214,-1175.364654,2057.256289, + -0.860359,0.509569,0.011083,-95.852871,-1271.715393,2057.325989, + -0.818468,0.567229,-0.091441,-39.174477,-1175.364462,2027.218743, + -0.858036,0.512921,0.026184,-97.023513,-1271.715182,2018.961042, + -0.860359,0.509569,0.011083,-95.852871,-1271.715393,2057.325989, + -0.790675,0.595591,0.141793,-39.247265,-1175.364544,2042.817272, + -0.818468,0.567229,-0.091441,-39.174477,-1175.364462,2027.218743, + 0.964508,-0.000007,0.264054,39.184537,1078.14493,2043.195173, + 0.805975,-0.000008,0.59195,33.135292,-1175.365031,2057.56651, + 0.990927,-0.000006,0.134401,39.171839,-1175.364988,2043.183203, + 0.805975,-0.000008,0.59195,33.135292,-1175.365031,2057.56651, + 0.964508,-0.000007,0.264054,39.184537,1078.14493,2043.195173, + 0.828868,-0.000008,0.559444,33.147991,1078.144888,2057.578481, + -0.052104,-0.998211,0.029324,60.450424,1076.228739,1995.974225, + -0.058592,-0.99822,0.011094,39.257325,1078.145013,2027.596644, + -0.047585,-0.998218,0.036011,33.355273,1078.145123,2013.157627, + -0.058592,-0.99822,0.011094,39.257325,1078.145013,2027.596644, + -0.052104,-0.998211,0.029324,60.450424,1076.228739,1995.974225, + -0.058629,-0.998221,0.010878,70.865779,1076.228541,2022.090119, + 0.000006,-1,0.000005,39.246263,-1635.024374,2027.586215, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,33.344211,-1635.024484,2013.147198, + 0.600091,0.000004,0.799931,-80.08971,-1271.715667,2092.322594, + 0.600091,-0.000003,0.799932,-33.345214,-1175.364654,2057.256289, + 0.600093,0.000002,0.79993,-94.158213,-1260.036061,2102.876503, + 0.799933,0.000001,-0.600089,67.674211,-1260.035009,2129.357866, + 0.799933,0,-0.600089,57.120298,-1271.716562,2115.289236, + 0.799934,-0,-0.600089,22.053997,-1175.365027,2068.544867, + 0.141315,-0.000004,-0.989965,97.022044,-1479.423628,2051.442006, + 0.141353,-0.000057,-0.989959,97.020742,-1271.716448,2051.440779, + 0.141386,0.000019,-0.989955,114.431485,-1260.035146,2053.926124, + 0.141353,-0.000057,-0.989959,97.020742,-1271.716448,2051.440779, + 0.141456,0.000042,-0.989944,80.510481,-1244.216424,2049.079715, + 0.141386,0.000019,-0.989955,114.431485,-1260.035146,2053.926124, + 0.141386,0.000019,-0.989955,114.431485,-1260.035146,2053.926124, + 0.141456,0.000042,-0.989944,80.510481,-1244.216424,2049.079715, + 0.141525,0.000193,-0.989935,39.171839,-1175.364988,2043.183203, + 0.157159,-0.595592,0.787764,7.616282,-1575.7751,2074.448146, + 0.297952,-0.659128,0.690489,67.675513,-1491.1023,2129.359093, + 0.310189,-0.662307,0.682006,26.491737,-1491.102432,2148.090131, + 0.041321,0.973936,0.223028,6.624005,1105.461218,2070.640199, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + -0.038908,0.962171,0.269655,-7.432857,1105.461298,2070.454406, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + -0.218012,0.962233,0.163028,-30.156931,1105.461509,2054.832348, + -0.139076,0.962205,0.234133,-20.348604,1105.4614,2064.903427, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + -0.296253,0.953532,0.054877,-35.364608,1105.461607,2041.774401, + -0.218012,0.962233,0.163028,-30.156931,1105.461509,2054.832348, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + -0.261885,0.962249,-0.074108,-35.178814,1105.461681,2027.717539, + -0.296253,0.953532,0.054877,-35.364608,1105.461607,2041.774401, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + -0.213632,0.962233,-0.168727,-29.627835,1105.461718,2014.801793, + -0.261885,0.962249,-0.074108,-35.178814,1105.461681,2027.717539, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + -0.031768,0.962171,-0.270589,-6.49881,1105.461668,1999.785789, + -0.132844,0.962206,-0.237725,-19.556757,1105.461714,2004.993466, + 0.047203,0.973936,-0.221856,7.558052,1105.461588,1999.971583, + -0.031768,0.962171,-0.270589,-6.49881,1105.461668,1999.785789, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + 0.139273,0.962112,-0.234402,20.473799,1105.461485,2005.522562, + 0.047203,0.973936,-0.221856,7.558052,1105.461588,1999.971583, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + 0.21845,0.962084,-0.163322,30.282126,1105.461377,2015.59364, + 0.139273,0.962112,-0.234402,20.473799,1105.461485,2005.522562, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + 0.296962,0.953305,-0.054991,35.489803,1105.461278,2028.651587, + 0.21845,0.962084,-0.163322,30.282126,1105.461377,2015.59364, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + 0.296962,0.953305,-0.054991,35.489803,1105.461278,2028.651587, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + 0.262503,0.962067,0.074285,35.304009,1105.461204,2042.708449, + 0.262503,0.962067,0.074285,35.304009,1105.461204,2042.708449, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + 0.214052,0.962084,0.169045,29.75303,1105.461167,2055.624196, + 0.214052,0.962084,0.169045,29.75303,1105.461167,2055.624196, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + 0.133025,0.962112,0.238003,19.681952,1105.461172,2065.432522, + 0.133025,0.962112,0.238003,19.681952,1105.461172,2065.432522, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + 0.041321,0.973936,0.223028,6.624005,1105.461218,2070.640199, + -0.261885,0.962249,-0.074108,-35.178814,1105.461681,2027.717539, + -0.380743,0.896586,-0.226203,-59.369433,1087.682068,1994.390591, + -0.438262,0.896618,-0.063262,-70.471391,1087.681993,2020.222085, + -0.380743,0.896586,-0.226203,-59.369433,1087.682068,1994.390591, + -0.261885,0.962249,-0.074108,-35.178814,1105.461681,2027.717539, + -0.213632,0.962233,-0.168727,-29.627835,1105.461718,2014.801793, + 0.381511,0.896149,0.22664,59.392298,1087.680965,2076.035397, + 0.262503,0.962067,0.074285,35.304009,1105.461204,2042.708449, + 0.214052,0.962084,0.169045,29.75303,1105.461167,2055.624196, + 0.262503,0.962067,0.074285,35.304009,1105.461204,2042.708449, + 0.381511,0.896149,0.22664,59.392298,1087.680965,2076.035397, + 0.439265,0.896117,0.063408,70.494256,1087.68104,2050.203904, + 0.08063,0.896706,0.435221,13.134247,1087.681066,2106.067405, + 0.133025,0.962112,0.238003,19.681952,1105.461172,2065.432522, + 0.041321,0.973936,0.223028,6.624005,1105.461218,2070.640199, + 0.133025,0.962112,0.238003,19.681952,1105.461172,2065.432522, + 0.08063,0.896706,0.435221,13.134247,1087.681066,2106.067405, + 0.265666,0.896215,0.355276,39.250141,1087.680974,2095.65205, + 0.439265,0.896117,0.063408,70.494256,1087.68104,2050.203904, + 0.296962,0.953305,-0.054991,35.489803,1105.461278,2028.651587, + 0.262503,0.962067,0.074285,35.304009,1105.461204,2042.708449, + 0.296962,0.953305,-0.054991,35.489803,1105.461278,2028.651587, + 0.439265,0.896117,0.063408,70.494256,1087.68104,2050.203904, + 0.435624,0.896507,-0.080672,70.865843,1087.681187,2022.09018, + -0.386582,0.896588,0.216066,-60.427624,1087.681648,2074.451703, + -0.296253,0.953532,0.054877,-35.364608,1105.461607,2041.774401, + -0.434637,0.897,0.080508,-70.842978,1087.681846,2048.335808, + -0.296253,0.953532,0.054877,-35.364608,1105.461607,2041.774401, + -0.386582,0.896588,0.216066,-60.427624,1087.681648,2074.451703, + -0.218012,0.962233,0.163028,-30.156931,1105.461509,2054.832348, + -0.213632,0.962233,-0.168727,-29.627835,1105.461718,2014.801793, + -0.26527,0.896521,-0.354799,-39.227276,1087.682058,1974.773938, + -0.380743,0.896586,-0.226203,-59.369433,1087.682068,1994.390591, + -0.26527,0.896521,-0.354799,-39.227276,1087.682058,1974.773938, + -0.213632,0.962233,-0.168727,-29.627835,1105.461718,2014.801793, + -0.132844,0.962206,-0.237725,-19.556757,1105.461714,2004.993466, + 0.139273,0.962112,-0.234402,20.473799,1105.461485,2005.522562, + 0.092108,0.896703,-0.432943,15.002342,1087.681806,1964.730171, + 0.047203,0.973936,-0.221856,7.558052,1105.461588,1999.971583, + 0.092108,0.896703,-0.432943,15.002342,1087.681806,1964.730171, + 0.139273,0.962112,-0.234402,20.473799,1105.461485,2005.522562, + 0.27497,0.896212,-0.34813,40.833836,1087.681602,1975.832129, + -0.296253,0.953532,0.054877,-35.364608,1105.461607,2041.774401, + -0.438262,0.896618,-0.063262,-70.471391,1087.681993,2020.222085, + -0.434637,0.897,0.080508,-70.842978,1087.681846,2048.335808, + -0.438262,0.896618,-0.063262,-70.471391,1087.681993,2020.222085, + -0.296253,0.953532,0.054877,-35.364608,1105.461607,2041.774401, + -0.261885,0.962249,-0.074108,-35.178814,1105.461681,2027.717539, + 0.296962,0.953305,-0.054991,35.489803,1105.461278,2028.651587, + 0.387375,0.896148,-0.216472,60.450489,1087.681384,1995.974286, + 0.21845,0.962084,-0.163322,30.282126,1105.461377,2015.59364, + 0.387375,0.896148,-0.216472,60.450489,1087.681384,1995.974286, + 0.296962,0.953305,-0.054991,35.489803,1105.461278,2028.651587, + 0.435624,0.896507,-0.080672,70.865843,1087.681187,2022.09018, + -0.12065,0.896435,0.426435,-14.979477,1087.681226,2105.695818, + -0.139076,0.962205,0.234133,-20.348604,1105.4614,2064.903427, + -0.274547,0.896523,0.347663,-40.810971,1087.681431,2094.593859, + -0.139076,0.962205,0.234133,-20.348604,1105.4614,2064.903427, + -0.12065,0.896435,0.426435,-14.979477,1087.681226,2105.695818, + -0.038908,0.962171,0.269655,-7.432857,1105.461298,2070.454406, + -0.274547,0.896523,0.347663,-40.810971,1087.681431,2094.593859, + -0.218012,0.962233,0.163028,-30.156931,1105.461509,2054.832348, + -0.386582,0.896588,0.216066,-60.427624,1087.681648,2074.451703, + -0.218012,0.962233,0.163028,-30.156931,1105.461509,2054.832348, + -0.274547,0.896523,0.347663,-40.810971,1087.681431,2094.593859, + -0.139076,0.962205,0.234133,-20.348604,1105.4614,2064.903427, + -0.132844,0.962206,-0.237725,-19.556757,1105.461714,2004.993466, + -0.109341,0.896433,-0.42948,-13.111382,1087.681967,1964.358584, + -0.26527,0.896521,-0.354799,-39.227276,1087.682058,1974.773938, + -0.109341,0.896433,-0.42948,-13.111382,1087.681967,1964.358584, + -0.132844,0.962206,-0.237725,-19.556757,1105.461714,2004.993466, + -0.031768,0.962171,-0.270589,-6.49881,1105.461668,1999.785789, + 0.21845,0.962084,-0.163322,30.282126,1105.461377,2015.59364, + 0.27497,0.896212,-0.34813,40.833836,1087.681602,1975.832129, + 0.139273,0.962112,-0.234402,20.473799,1105.461485,2005.522562, + 0.27497,0.896212,-0.34813,40.833836,1087.681602,1975.832129, + 0.21845,0.962084,-0.163322,30.282126,1105.461377,2015.59364, + 0.387375,0.896148,-0.216472,60.450489,1087.681384,1995.974286, + 0.08063,0.896706,0.435221,13.134247,1087.681066,2106.067405, + -0.038908,0.962171,0.269655,-7.432857,1105.461298,2070.454406, + -0.12065,0.896435,0.426435,-14.979477,1087.681226,2105.695818, + -0.038908,0.962171,0.269655,-7.432857,1105.461298,2070.454406, + 0.08063,0.896706,0.435221,13.134247,1087.681066,2106.067405, + 0.041321,0.973936,0.223028,6.624005,1105.461218,2070.640199, + -0.031768,0.962171,-0.270589,-6.49881,1105.461668,1999.785789, + 0.092108,0.896703,-0.432943,15.002342,1087.681806,1964.730171, + -0.109341,0.896433,-0.42948,-13.111382,1087.681967,1964.358584, + 0.092108,0.896703,-0.432943,15.002342,1087.681806,1964.730171, + -0.031768,0.962171,-0.270589,-6.49881,1105.461668,1999.785789, + 0.047203,0.973936,-0.221856,7.558052,1105.461588,1999.971583, + 0.265666,0.896215,0.355276,39.250141,1087.680974,2095.65205, + 0.214052,0.962084,0.169045,29.75303,1105.461167,2055.624196, + 0.133025,0.962112,0.238003,19.681952,1105.461172,2065.432522, + 0.214052,0.962084,0.169045,29.75303,1105.461167,2055.624196, + 0.265666,0.896215,0.355276,39.250141,1087.680974,2095.65205, + 0.381511,0.896149,0.22664,59.392298,1087.680965,2076.035397, + -0.828868,0.000008,-0.559444,-33.137931,-1175.36442,2012.835435, + -0.828868,0.000008,-0.559444,-33.129537,314.385267,2012.843349, + -0.584403,0.000008,-0.811464,-22.056636,-1175.364424,2001.857078, + 0.000006,1,0.000005,-33.345214,-1175.364654,2057.256289, + 0.000006,1,0.000005,-39.174477,-1175.364462,2027.218743, + 0.000006,1,0.000005,-39.247265,-1175.364544,2042.817272, + 0.000006,1,0.000005,-39.174477,-1175.364462,2027.218743, + 0.000006,1,0.000005,-33.345214,-1175.364654,2057.256289, + 0.000006,1,0.000005,-33.137931,-1175.36442,2012.835435, + 0.000006,1,0.000005,-33.137931,-1175.36442,2012.835435, + 0.000006,1,0.000005,-33.345214,-1175.364654,2057.256289, + 0.000006,1,0.000005,-22.366857,-1175.364775,2068.337584, + 0.000006,1,0.000005,-33.137931,-1175.36442,2012.835435, + 0.000006,1,0.000005,-22.366857,-1175.364775,2068.337584, + 0.000006,1,0.000005,-22.056636,-1175.364424,2001.857078, + 0.000006,1,0.000005,-22.056636,-1175.364424,2001.857078, + 0.000006,1,0.000005,-22.366857,-1175.364775,2068.337584, + 0.000006,1,0.000005,-7.983549,-1175.364888,2074.374131, + 0.000006,1,0.000005,-22.056636,-1175.364424,2001.857078, + 0.000006,1,0.000005,-7.983549,-1175.364888,2074.374131, + 0.000006,1,0.000005,-7.617619,-1175.364474,1995.955026, + 0.000006,1,0.000005,-7.617619,-1175.364474,1995.955026, + 0.000006,1,0.000005,-7.983549,-1175.364888,2074.374131, + 0.000006,1,0.000005,7.61498,-1175.364977,2074.446919, + 0.000006,1,0.000005,-7.617619,-1175.364474,1995.955026, + 0.000006,1,0.000005,7.61498,-1175.364977,2074.446919, + 0.000006,1,0.000005,7.980911,-1175.364562,1996.027815, + 0.000006,1,0.000005,7.980911,-1175.364562,1996.027815, + 0.000006,1,0.000005,7.61498,-1175.364977,2074.446919, + 0.000006,1,0.000005,22.053997,-1175.365027,2068.544867, + 0.000006,1,0.000005,7.980911,-1175.364562,1996.027815, + 0.000006,1,0.000005,22.053997,-1175.365027,2068.544867, + 0.000006,1,0.000005,22.364218,-1175.364675,2002.064361, + 0.000006,1,0.000005,22.364218,-1175.364675,2002.064361, + 0.000006,1,0.000005,22.053997,-1175.365027,2068.544867, + 0.000006,1,0.000005,33.135292,-1175.365031,2057.56651, + 0.000006,1,0.000005,22.364218,-1175.364675,2002.064361, + 0.000006,1,0.000005,33.135292,-1175.365031,2057.56651, + 0.000006,1,0.000005,33.342575,-1175.364796,2013.145656, + 0.000006,1,0.000005,33.342575,-1175.364796,2013.145656, + 0.000006,1,0.000005,33.135292,-1175.365031,2057.56651, + 0.000006,1,0.000005,39.171839,-1175.364988,2043.183203, + 0.000006,1,0.000005,33.342575,-1175.364796,2013.145656, + 0.000006,1,0.000005,39.171839,-1175.364988,2043.183203, + 0.000006,1,0.000005,39.244627,-1175.364906,2027.584673, + -0.968686,-0.000002,0.24829,26.490435,-1260.035141,2148.088903, + -0.968686,0.000002,0.248289,7.61498,-1175.364977,2074.446919, + -0.968685,-0.000002,0.248291,22.123694,-1271.716449,2131.052397, + 0.616202,0.509565,0.600532,83.420644,-1271.716562,2087.333353, + 0.679257,0.618102,0.395677,33.135292,-1175.365031,2057.56651, + 0.514085,0.56723,0.643402,22.053997,-1175.365027,2068.544867, + 0.625238,0.512917,0.588212,57.120298,-1271.716562,2115.289236, + 0.616202,0.509565,0.600532,83.420644,-1271.716562,2087.333353, + 0.514085,0.56723,0.643402,22.053997,-1175.365027,2068.544867, + 0.858794,0.512199,-0.011179,97.020742,-1271.716448,2051.440779, + 0.860187,0.509303,-0.026244,95.850101,-1271.716238,2013.075832, + 0.826538,0.557702,-0.076187,39.244627,-1175.364906,2027.584673, + 0.858794,0.512199,-0.011179,97.020742,-1271.716448,2051.440779, + 0.826538,0.557702,-0.076187,39.244627,-1175.364906,2027.584673, + 0.85719,0.514985,0.003946,80.510481,-1244.216424,2049.079715, + 0.85719,0.514985,0.003946,80.510481,-1244.216424,2049.079715, + 0.826538,0.557702,-0.076187,39.244627,-1175.364906,2027.584673, + 0.789459,0.595062,0.15052,39.171839,-1175.364988,2043.183203, + 0.679262,-0.618094,0.395681,33.136594,-1575.775046,2057.567737, + 0.789465,-0.595053,0.150522,39.173141,-1575.775088,2043.18443, + 0.698932,-0.659128,0.277569,114.432787,-1491.102437,2053.927351, + -0.510751,-0.000002,0.859729,-40.810971,1087.681431,2094.593859, + -0.272291,-0.000004,0.962215,-14.979542,1076.228581,2105.695757, + -0.142868,-0.000004,0.989742,-14.979477,1087.681226,2105.695818, + -0.272291,-0.000004,0.962215,-14.979542,1076.228581,2105.695757, + -0.510751,-0.000002,0.859729,-40.810971,1087.681431,2094.593859, + -0.619788,-0.000001,0.784769,-40.811035,1076.228785,2094.593798, + 0.246765,-0.000007,0.969075,13.134247,1087.681066,2106.067405, + 0.48785,-0.000007,0.872928,39.250077,1076.228329,2095.65199, + 0.59883,-0.000008,0.800876,39.250141,1087.680974,2095.65205, + 0.48785,-0.000007,0.872928,39.250077,1076.228329,2095.65199, + 0.246765,-0.000007,0.969075,13.134247,1087.681066,2106.067405, + 0.11666,-0.000006,0.993172,13.134182,1076.228421,2106.067344, + -0.246765,0.000007,-0.969075,-13.111446,1076.229321,1964.358523, + -0.48785,0.000007,-0.872928,-39.227276,1087.682058,1974.773938, + -0.11666,0.000006,-0.993172,-13.111382,1087.681967,1964.358584, + -0.48785,0.000007,-0.872928,-39.227276,1087.682058,1974.773938, + -0.246765,0.000007,-0.969075,-13.111446,1076.229321,1964.358523, + -0.59883,0.000008,-0.800876,-39.22734,1076.229413,1974.773877, + 0.872928,-0.000002,-0.48785,60.450489,1087.681384,1995.974286, + 0.969075,-0.000004,-0.246765,70.865779,1076.228541,2022.090119, + 0.800876,-0.000001,-0.59883,60.450424,1076.228739,1995.974225, + 0.969075,-0.000004,-0.246765,70.865779,1076.228541,2022.090119, + 0.872928,-0.000002,-0.48785,60.450489,1087.681384,1995.974286, + 0.993172,-0.000005,-0.11666,70.865843,1087.681187,2022.09018, + -0.584403,0.000008,-0.811464,-22.056636,-1175.364424,2001.857078, + -0.828868,0.000008,-0.559444,-33.125233,1078.145499,2012.847406, + -0.495296,0.000007,-0.868724,-22.043938,1078.145495,2001.869049, + -0.828868,0.000008,-0.559444,-33.125233,1078.145499,2012.847406, + -0.584403,0.000008,-0.811464,-22.056636,-1175.364424,2001.857078, + -0.828868,0.000008,-0.559444,-33.129537,314.385267,2012.843349, + 0.613055,0.000001,-0.79004,22.376916,1078.145244,2002.076332, + 0.795727,-0.000001,-0.605656,33.342575,-1175.364796,2013.145656, + 0.503381,0.000002,-0.864064,22.364218,-1175.364675,2002.064361, + 0.795727,-0.000001,-0.605656,33.342575,-1175.364796,2013.145656, + 0.613055,0.000001,-0.79004,22.376916,1078.145244,2002.076332, + 0.868724,-0.000002,-0.495296,33.355273,1078.145123,2013.157627, + -0.029512,-0.998207,-0.052072,22.066696,1078.144892,2068.556838, + -0.011125,-0.99822,-0.058587,13.134182,1076.228421,2106.067344, + -0.011411,-0.99822,-0.058537,7.627679,1078.144942,2074.45889, + -0.011125,-0.99822,-0.058587,13.134182,1076.228421,2106.067344, + -0.029512,-0.998207,-0.052072,22.066696,1078.144892,2068.556838, + -0.035923,-0.998214,-0.047727,39.250077,1076.228329,2095.65199, + 0.030169,-0.998218,-0.051488,-22.354159,1078.145144,2068.349555, + 0.016094,-0.998211,-0.057584,-14.979542,1076.228581,2105.695757, + 0.036903,-0.998211,-0.04704,-40.811035,1076.228785,2094.593798, + 0.016094,-0.998211,-0.057584,-14.979542,1076.228581,2105.695757, + 0.030169,-0.998218,-0.051488,-22.354159,1078.145144,2068.349555, + 0.00817,-0.998218,-0.059117,-7.970851,1078.145031,2074.386102, + -0.012151,-0.998221,0.058373,15.002278,1076.229161,1964.73011, + -0.03018,-0.998218,0.051478,22.376916,1078.145244,2002.076332, + -0.011868,-0.998221,0.058436,7.993609,1078.145357,1996.039785, + -0.03018,-0.998218,0.051478,22.376916,1078.145244,2002.076332, + -0.012151,-0.998221,0.058373,15.002278,1076.229161,1964.73011, + -0.036914,-0.998211,0.047029,40.833771,1076.228956,1975.832068, + -0.012151,-0.998221,0.058373,15.002278,1076.229161,1964.73011, + 0.00733,-0.998208,0.05939,-7.604921,1078.145445,1995.966997, + 0.014915,-0.998215,0.057829,-13.111446,1076.229321,1964.358523, + 0.00733,-0.998208,0.05939,-7.604921,1078.145445,1995.966997, + -0.012151,-0.998221,0.058373,15.002278,1076.229161,1964.73011, + -0.011868,-0.998221,0.058436,7.993609,1078.145357,1996.039785, + 0.968687,-0.000002,-0.248286,-7.617619,-1175.364474,1995.955026, + 0.968687,0.000002,-0.248285,-22.126464,-1271.715181,1939.349424, + 0.968687,0.000001,-0.248284,-26.493073,-1260.036639,1922.313042, + -0.989965,0.000002,-0.141315,7.980911,-1175.364562,1996.027815, + -0.989964,-0.000002,-0.141318,18.723832,-1260.036393,1920.768168, + -0.989965,-0.000004,-0.141316,16.238483,-1271.715391,1938.178783, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,-22.055,-1635.024856,2001.85862, + 0.000006,-1,0.000005,-7.615983,-1635.024806,1995.956569, + 0.000006,-1,0.000005,33.136928,-1635.024249,2057.568052, + 0.000006,-1,0.000005,22.055633,-1635.024253,2068.546409, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,-39.172841,-1635.024818,2027.220285, + 0.000006,-1,0.000005,-33.136295,-1635.02486,2012.836977, + 0.000006,-1,0.000005,7.616616,-1635.024303,2074.448461, + 0.000006,-1,0.000005,-7.981913,-1635.024391,2074.375673, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + -0.5094,0.000001,0.86053,83.420644,-1271.716562,2087.333353, + -0.5094,0.000001,0.86053,98.556303,-1491.102301,2096.293522, + -0.5094,0.000001,0.86053,98.555001,-1260.035011,2096.292295, + -0.5094,0.000001,0.86053,98.556303,-1491.102301,2096.293522, + -0.5094,0.000001,0.86053,83.420644,-1271.716562,2087.333353, + -0.509399,0.000001,0.86053,83.421946,-1479.423514,2087.334581, + 0.141313,-0.000003,-0.989965,114.432787,-1491.102437,2053.927351, + 0.141315,-0.000004,-0.989965,97.022044,-1479.423628,2051.442006, + 0.141386,0.000019,-0.989955,114.431485,-1260.035146,2053.926124, + -0.134401,-0.000005,0.990927,-7.970851,1078.145031,2074.386102, + 0.190512,-0.000006,0.981685,7.61498,-1175.364977,2074.446919, + 0.255041,-0.000007,0.96693,7.627679,1078.144942,2074.45889, + 0.190512,-0.000006,0.981685,7.61498,-1175.364977,2074.446919, + -0.134401,-0.000005,0.990927,-7.970851,1078.145031,2074.386102, + -0.264054,-0.000004,0.964508,-7.983549,-1175.364888,2074.374131, + -0.936408,-0.000007,-0.350914,-98.556338,-1491.104061,1974.110878, + -0.936408,-0.000007,-0.350914,-114.434123,-1260.036635,2016.475821, + -0.936408,-0.000007,-0.350914,-98.55764,-1260.03677,1974.10965, + -0.936408,-0.000007,-0.350914,-114.434123,-1260.036635,2016.475821, + -0.936408,-0.000007,-0.350914,-98.556338,-1491.104061,1974.110878, + -0.936408,-0.000007,-0.350914,-114.432821,-1491.103925,2016.477049, + -0.188244,-0.621459,0.760495,-7.982247,-1575.775188,2074.375358, + -0.263845,-0.659285,0.70408,-18.725169,-1491.102679,2149.635004, + -0.276534,-0.662009,0.696616,-61.09134,-1491.103002,2133.75852, + 0.000006,-1,0.000005,22.055633,-1635.024253,2068.546409, + 0.000006,-1,0.000005,7.616616,-1635.024303,2074.448461, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,21.079139,-1635.024615,2001.52588, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,7.982547,-1635.024718,1996.029357, + 0.799934,0.000001,-0.600088,67.675513,-1491.1023,2129.359093, + 0.799934,0,-0.600089,22.055299,-1575.77505,2068.546095, + 0.799933,0.000001,-0.600089,57.1216,-1479.423514,2115.290463, + -0.276536,0.662015,0.696609,-61.092642,-1260.035711,2133.757293, + -0.134987,0.595762,0.791736,-7.983549,-1175.364888,2074.374131, + -0.458828,0.595592,0.659353,-22.366857,-1175.364775,2068.337584, + -0.276536,0.662015,0.696609,-61.092642,-1260.035711,2133.757293, + -0.263852,0.659293,0.704071,-18.726471,-1260.035388,2149.633777, + -0.134987,0.595762,0.791736,-7.983549,-1175.364888,2074.374131, + 0.297947,0.65914,0.69048,67.674211,-1260.035009,2129.357866, + 0.514085,0.56723,0.643402,22.053997,-1175.365027,2068.544867, + 0.200522,0.618102,0.760093,7.61498,-1175.364977,2074.446919, + -0.14131,0.000004,0.989965,-114.432821,-1491.103925,2016.477049, + -0.141312,0.000003,0.989965,-97.022211,-1479.424894,2018.96227, + -0.14131,0.000003,0.989965,-97.023513,-1271.715182,2018.961042, + -0.141311,0.000002,0.989965,-39.173175,-1575.775614,2027.21997, + -0.141312,0.000003,0.989965,-97.022211,-1479.424894,2018.96227, + -0.14131,0.000004,0.989965,-114.432821,-1491.103925,2016.477049, + -0.14131,0.000003,0.989965,-97.023513,-1271.715182,2018.961042, + -0.141311,-0.000002,0.989965,-39.174477,-1175.364462,2027.218743, + -0.141308,0.000001,0.989966,-114.434123,-1260.036635,2016.475821, + -0.14131,0.000004,0.989965,-114.432821,-1491.103925,2016.477049, + -0.14131,0.000003,0.989965,-97.023513,-1271.715182,2018.961042, + -0.141308,0.000001,0.989966,-114.434123,-1260.036635,2016.475821, + -0.552864,-0.002116,0.833269,-22.365555,-1575.775301,2068.338812, + -0.868724,-0.000002,0.495296,-33.343912,-1575.775422,2057.257517, + -0.789247,-0.002827,0.614069,-33.343578,-1635.024625,2057.257832, + -0.789247,-0.002827,0.614069,-33.343578,-1635.024625,2057.257832, + -0.546267,-0.004228,0.837601,-21.078506,-1635.024494,2068.87915, + -0.552864,-0.002116,0.833269,-22.365555,-1575.775301,2068.338812, + 0.494392,-0.002816,-0.869234,21.079139,-1635.024615,2001.52588, + 0.623957,-0.133857,-0.769909,22.36552,-1575.775401,2002.065588, + 0.829674,-0.002123,-0.558245,33.344211,-1635.024484,2013.147198, + 0.829674,-0.002123,-0.558245,33.344211,-1635.024484,2013.147198, + 0.604615,-0.002819,-0.796513,22.36552,-1575.775401,2002.065588, + 0.834053,0.000002,-0.551684,33.343877,-1575.77528,2013.146883, + 0.962215,-0.000007,0.272291,70.494256,1087.68104,2050.203904, + 0.824055,-0.000008,0.566511,59.392233,1076.228319,2076.035337, + 0.989742,-0.000006,0.142868,70.494191,1076.228394,2050.203843, + 0.824055,-0.000008,0.566511,59.392233,1076.228319,2076.035337, + 0.962215,-0.000007,0.272291,70.494256,1087.68104,2050.203904, + 0.824055,-0.000008,0.566511,59.392298,1087.680965,2076.035397, + 0.510751,0.000002,-0.859729,40.833771,1076.228956,1975.832068, + 0.272291,0.000004,-0.962215,15.002342,1087.681806,1964.730171, + 0.619788,0.000001,-0.784769,40.833836,1087.681602,1975.832129, + 0.272291,0.000004,-0.962215,15.002342,1087.681806,1964.730171, + 0.510751,0.000002,-0.859729,40.833771,1076.228956,1975.832068, + 0.142868,0.000004,-0.989742,15.002278,1076.229161,1964.73011, + -0.962215,0.000007,-0.272291,-70.471455,1076.229348,2020.222024, + -0.824055,0.000008,-0.566511,-59.369433,1087.682068,1994.390591, + -0.824055,0.000008,-0.566511,-59.369497,1076.229422,1994.39053, + -0.824055,0.000008,-0.566511,-59.369433,1087.682068,1994.390591, + -0.962215,0.000007,-0.272291,-70.471455,1076.229348,2020.222024, + -0.989742,0.000006,-0.142868,-70.471391,1087.681993,2020.222085, + -0.872928,0.000002,0.48785,-60.427688,1076.229003,2074.451642, + -0.969075,0.000004,0.246765,-70.842978,1087.681846,2048.335808, + -0.993172,0.000005,0.11666,-70.843043,1076.2292,2048.335748, + -0.969075,0.000004,0.246765,-70.842978,1087.681846,2048.335808, + -0.872928,0.000002,0.48785,-60.427688,1076.229003,2074.451642, + -0.800876,0.000001,0.59883,-60.427624,1087.681648,2074.451703, + 0.910274,0.000003,-0.414007,112.886611,-1260.035395,2008.709218, + 0.910274,0.000003,-0.414007,94.156876,-1491.10301,1967.52667, + 0.910274,0.000003,-0.414007,94.155574,-1260.035719,1967.525442, + 0.910274,0.000003,-0.414007,94.156876,-1491.10301,1967.52667, + 0.910274,0.000003,-0.414007,112.886611,-1260.035395,2008.709218, + 0.910274,0.000003,-0.414007,112.887913,-1491.102686,2008.710446, + -0.688119,-0.66201,0.297042,-112.887948,-1491.103676,2061.693954, + -0.790675,-0.595591,0.141793,-39.245963,-1575.775532,2042.8185, + -0.670858,-0.621461,0.404642,-33.343912,-1575.775422,2057.257517, + -0.552864,-0.002116,0.833269,-22.365555,-1575.775301,2068.338812, + -0.264054,0.000004,0.964508,-7.981913,-1635.024391,2074.375673, + -0.134401,0.000005,0.990927,-7.982247,-1575.775188,2074.375358, + -0.264054,0.000004,0.964508,-7.981913,-1635.024391,2074.375673, + -0.552864,-0.002116,0.833269,-22.365555,-1575.775301,2068.338812, + -0.546267,-0.004228,0.837601,-21.078506,-1635.024494,2068.87915, + 0.551684,-0.000008,0.834053,22.053997,-1175.365027,2068.544867, + 0.805975,-0.000008,0.59195,33.135292,-1175.365031,2057.56651, + 0.518094,-0.000007,0.855324,22.062392,314.38466,2068.552781, + 0.134993,-0.595761,-0.791736,7.982213,-1575.775514,1996.029042, + 0.276542,-0.66201,-0.696611,61.091305,-1491.10336,1936.64588, + 0.458836,-0.595589,-0.65935,22.36552,-1575.775401,2002.065588, + -0.29795,0.65913,-0.690488,-67.67685,-1260.036772,1941.044079, + -0.514083,0.56723,-0.643404,-22.056636,-1175.364424,2001.857078, + -0.157155,0.595594,-0.787762,-7.617619,-1175.364474,1995.955026, + 0.655297,-0.595759,-0.464388,33.343877,-1575.77528,2013.146883, + 0.600534,-0.509567,-0.616198,52.13236,-1479.42441,1951.780109, + 0.588214,-0.51292,-0.625234,80.088242,-1479.424113,1978.080455, + 0.047573,-0.998218,-0.036022,-33.332516,1078.145264,2057.26826, + 0.036903,-0.998211,-0.04704,-40.811035,1076.228785,2094.593798, + 0.052093,-0.998211,-0.029335,-60.427688,1076.229003,2074.451642, + 0.036903,-0.998211,-0.04704,-40.811035,1076.228785,2094.593798, + 0.047573,-0.998218,-0.036022,-33.332516,1078.145264,2057.26826, + 0.030169,-0.998218,-0.051488,-22.354159,1078.145144,2068.349555, + -0.248291,-0.000004,-0.968685,-95.852871,-1271.715393,2057.325989, + -0.248291,-0.000005,-0.968685,-112.887948,-1491.103676,2061.693954, + -0.248293,-0.000002,-0.968685,-112.88925,-1260.036386,2061.692727, + -0.248291,-0.000005,-0.968685,-112.887948,-1491.103676,2061.693954, + -0.248291,-0.000004,-0.968685,-95.852871,-1271.715393,2057.325989, + -0.248289,-0.000005,-0.968686,-95.851569,-1479.424684,2057.327217, + -0.502999,-0.570987,0.648819,-22.365555,-1575.775301,2068.338812, + -0.188244,-0.621459,0.760495,-7.982247,-1575.775188,2074.375358, + -0.276534,-0.662009,0.696616,-61.09134,-1491.103002,2133.75852, + 0.992138,-0.000005,-0.125147,39.257325,1078.145013,2027.596644, + 0.990927,-0.000006,0.134401,39.171839,-1175.364988,2043.183203, + 0.96693,-0.000004,-0.255041,39.244627,-1175.364906,2027.584673, + 0.990927,-0.000006,0.134401,39.171839,-1175.364988,2043.183203, + 0.992138,-0.000005,-0.125147,39.257325,1078.145013,2027.596644, + 0.964508,-0.000007,0.264054,39.184537,1078.14493,2043.195173, + 0.101709,0.000005,-0.994814,7.980911,-1175.364562,1996.027815, + -0.125147,0.000006,-0.992138,-7.604921,1078.145445,1995.966997, + 0.264054,0.000004,-0.964508,7.993609,1078.145357,1996.039785, + -0.125147,0.000006,-0.992138,-7.604921,1078.145445,1995.966997, + 0.101709,0.000005,-0.994814,7.980911,-1175.364562,1996.027815, + -0.229384,0.000006,-0.973336,-7.609225,314.385213,1995.96294, + -0.058592,-0.99822,0.011094,39.257325,1078.145013,2027.596644, + -0.059147,-0.998214,-0.008352,70.494191,1076.228394,2050.203843, + -0.057687,-0.998207,-0.015958,39.184537,1078.14493,2043.195173, + -0.059147,-0.998214,-0.008352,70.494191,1076.228394,2050.203843, + -0.058592,-0.99822,0.011094,39.257325,1078.145013,2027.596644, + -0.058629,-0.998221,0.010878,70.865779,1076.228541,2022.090119, + -0.414007,-0.000007,-0.910274,-26.491771,-1491.10393,1922.314269, + -0.414007,-0.000007,-0.910274,-67.67685,-1260.036772,1941.044079, + -0.414007,-0.000007,-0.910274,-26.493073,-1260.036639,1922.313042, + -0.414007,-0.000007,-0.910274,-67.67685,-1260.036772,1941.044079, + -0.414007,-0.000007,-0.910274,-26.491771,-1491.10393,1922.314269, + -0.414007,-0.000007,-0.910274,-67.675548,-1491.104063,1941.045307, + -0.047191,-0.998207,-0.036817,33.147991,1078.144888,2057.578481, + -0.035923,-0.998214,-0.047727,39.250077,1076.228329,2095.65199, + -0.029512,-0.998207,-0.052072,22.066696,1078.144892,2068.556838, + -0.035923,-0.998214,-0.047727,39.250077,1076.228329,2095.65199, + -0.047191,-0.998207,-0.036817,33.147991,1078.144888,2057.578481, + -0.051451,-0.998214,-0.030349,59.392233,1076.228319,2076.035337, + -0.350914,0.000003,0.936408,-61.092642,-1260.035711,2133.757293, + -0.350914,0.000003,0.936408,-18.725169,-1491.102679,2149.635004, + -0.350914,0.000003,0.936408,-18.726471,-1260.035388,2149.633777, + -0.350914,0.000003,0.936408,-18.725169,-1491.102679,2149.635004, + -0.350914,0.000003,0.936408,-61.092642,-1260.035711,2133.757293, + -0.350914,0.000003,0.936408,-61.09134,-1491.103002,2133.75852, + -0.799934,-0,0.600088,-22.055334,-1575.775652,2001.858305, + -0.799934,-0.000001,0.600088,-57.121766,-1479.425008,1955.113813, + -0.799934,-0.000001,0.600088,-67.675548,-1491.104063,1941.045307, + -0.860533,-0.000006,-0.509395,-52.132526,-1479.424112,2118.624167, + -0.860533,-0.000004,-0.509395,-61.092642,-1260.035711,2133.757293, + -0.860534,-0.000003,-0.509393,-52.133828,-1271.715965,2118.62294, + -0.860533,-0.000004,-0.509395,-61.092642,-1260.035711,2133.757293, + -0.860533,-0.000006,-0.509395,-52.132526,-1479.424112,2118.624167, + -0.860531,-0.000005,-0.509397,-61.09134,-1491.103002,2133.75852, + 0.058581,-0.998221,-0.011105,-39.234567,1078.145374,2042.829243, + 0.052093,-0.998211,-0.029335,-60.427688,1076.229003,2074.451642, + 0.058617,-0.998221,-0.010888,-70.843043,1076.2292,2048.335748, + 0.052093,-0.998211,-0.029335,-60.427688,1076.229003,2074.451642, + 0.058581,-0.998221,-0.011105,-39.234567,1078.145374,2042.829243, + 0.047573,-0.998218,-0.036022,-33.332516,1078.145264,2057.26826, + -0.968686,-0.000003,0.248288,26.491737,-1491.102432,2148.090131, + -0.968686,-0.000003,0.24829,22.124996,-1479.423627,2131.053624, + -0.968686,-0.000002,0.248289,7.616282,-1575.7751,2074.448146, + -0.134401,0.000005,0.990927,-7.982247,-1575.775188,2074.375358, + 0.125147,0.000006,0.992138,7.616616,-1635.024303,2074.448461, + 0.255041,0.000007,0.96693,7.616282,-1575.7751,2074.448146, + 0.125147,0.000006,0.992138,7.616616,-1635.024303,2074.448461, + -0.134401,0.000005,0.990927,-7.982247,-1575.775188,2074.375358, + -0.264054,0.000004,0.964508,-7.981913,-1635.024391,2074.375673, + -0.600085,-0.000004,-0.799936,80.08694,-1271.715963,1978.079227, + -0.600086,0.000003,-0.799936,33.342575,-1175.364796,2013.145656, + -0.600083,-0.000002,-0.799938,94.155574,-1260.035719,1967.525442, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,-7.981913,-1635.024391,2074.375673, + 0.000006,-1,0.000005,-21.078506,-1635.024494,2068.87915, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,-39.24563,-1635.024735,2042.818814, + 0.000006,-1,0.000005,-39.172841,-1635.024818,2027.220285, + 0.000006,-1,0.000005,33.344211,-1635.024484,2013.147198, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,21.079139,-1635.024615,2001.52588, + 0.000006,-1,0.000005,39.246263,-1635.024374,2027.586215, + 0.000006,-1,0.000005,39.173475,-1635.024291,2043.184745, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,-33.343578,-1635.024625,2057.257832, + 0.000006,-1,0.000005,-39.24563,-1635.024735,2042.818814, + 0.989966,0.000004,0.141309,-18.726471,-1260.035388,2149.633777, + 0.989966,0.000002,0.141307,-16.241253,-1271.716239,2132.223038, + 0.989965,-0.000002,0.14131,-7.983549,-1175.364888,2074.374131, + -0.860533,-0.000004,-0.509395,-61.092642,-1260.035711,2133.757293, + -0.860532,0.000003,-0.509396,-22.366857,-1175.364775,2068.337584, + -0.860534,-0.000003,-0.509393,-52.133828,-1271.715965,2118.62294, + 0.014915,-0.998215,0.057829,-13.111446,1076.229321,1964.358523, + 0.029501,-0.998208,0.052061,-22.043938,1078.145495,2001.869049, + 0.035912,-0.998215,0.047716,-39.22734,1076.229413,1974.773877, + 0.029501,-0.998208,0.052061,-22.043938,1078.145495,2001.869049, + 0.014915,-0.998215,0.057829,-13.111446,1076.229321,1964.358523, + 0.00733,-0.998208,0.05939,-7.604921,1078.145445,1995.966997, + -0.503381,-0.000002,0.864064,-22.354159,1078.145144,2068.349555, + -0.264054,-0.000004,0.964508,-7.983549,-1175.364888,2074.374131, + -0.134401,-0.000005,0.990927,-7.970851,1078.145031,2074.386102, + -0.264054,-0.000004,0.964508,-7.983549,-1175.364888,2074.374131, + -0.503381,-0.000002,0.864064,-22.354159,1078.145144,2068.349555, + -0.613055,-0.000001,0.79004,-22.366857,-1175.364775,2068.337584, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,-33.136295,-1635.02486,2012.836977, + 0.000006,-1,0.000005,-22.055,-1635.024856,2001.85862, + -0.248291,-0.000004,-0.968685,-95.852871,-1271.715393,2057.325989, + -0.248293,-0.000002,-0.968685,-112.88925,-1260.036386,2061.692727, + -0.24829,0.000002,-0.968686,-39.247265,-1175.364544,2042.817272, + 0.864064,0.000008,0.503381,33.136594,-1575.775046,2057.567737, + 0.964508,0.000007,0.264054,39.173475,-1635.024291,2043.184745, + 0.990927,0.000006,0.134401,39.173141,-1575.775088,2043.18443, + 0.964508,0.000007,0.264054,39.173475,-1635.024291,2043.184745, + 0.864064,0.000008,0.503381,33.136594,-1575.775046,2057.567737, + 0.79004,0.000008,0.613055,33.136928,-1635.024249,2057.568052, + 0.141314,-0.000002,-0.989965,39.173141,-1575.775088,2043.18443, + 0.141315,-0.000004,-0.989965,97.022044,-1479.423628,2051.442006, + 0.141313,-0.000003,-0.989965,114.432787,-1491.102437,2053.927351, + -0.59883,0.000008,-0.800876,-39.22734,1076.229413,1974.773877, + -0.824055,0.000008,-0.566511,-59.369433,1087.682068,1994.390591, + -0.48785,0.000007,-0.872928,-39.227276,1087.682058,1974.773938, + -0.824055,0.000008,-0.566511,-59.369433,1087.682068,1994.390591, + -0.59883,0.000008,-0.800876,-39.22734,1076.229413,1974.773877, + -0.824055,0.000008,-0.566511,-59.369497,1076.229422,1994.39053, + 0.035912,-0.998215,0.047716,-39.22734,1076.229413,1974.773877, + 0.04718,-0.998208,0.036806,-33.125233,1078.145499,2012.847406, + 0.05144,-0.998215,0.030339,-59.369497,1076.229422,1994.39053, + 0.04718,-0.998208,0.036806,-33.125233,1078.145499,2012.847406, + 0.035912,-0.998215,0.047716,-39.22734,1076.229413,1974.773877, + 0.029501,-0.998208,0.052061,-22.043938,1078.145495,2001.869049, + 0.05144,-0.998215,0.030339,-59.369497,1076.229422,1994.39053, + 0.057675,-0.998208,0.015947,-39.161779,1078.145457,2027.230714, + 0.059136,-0.998215,0.008341,-70.471455,1076.229348,2020.222024, + 0.057675,-0.998208,0.015947,-39.161779,1078.145457,2027.230714, + 0.05144,-0.998215,0.030339,-59.369497,1076.229422,1994.39053, + 0.04718,-0.998208,0.036806,-33.125233,1078.145499,2012.847406, + 0.989965,0.000004,0.141311,-18.725169,-1491.102679,2149.635004, + 0.989965,0.000002,0.14131,-7.982247,-1575.775188,2074.375358, + 0.989966,0.000005,0.141309,-16.239951,-1479.423837,2132.224265, + 0.600091,0.000003,0.799932,-33.343912,-1575.775422,2057.257517, + 0.600089,0.000006,0.799933,-80.088408,-1479.424409,2092.323821, + 0.600091,0.000006,0.799931,-94.156911,-1491.103352,2102.87773, + -0.864064,-0.000008,-0.503381,-33.136295,-1635.02486,2012.836977, + -0.964508,-0.000007,-0.264054,-39.173175,-1575.775614,2027.21997, + -0.79004,-0.000008,-0.613055,-33.136629,-1575.775657,2012.836663, + -0.964508,-0.000007,-0.264054,-39.173175,-1575.775614,2027.21997, + -0.864064,-0.000008,-0.503381,-33.136295,-1635.02486,2012.836977, + -0.990927,-0.000006,-0.134401,-39.172841,-1635.024818,2027.220285, + 0.00817,-0.998218,-0.059117,-7.970851,1078.145031,2074.386102, + -0.011125,-0.99822,-0.058587,13.134182,1076.228421,2106.067344, + 0.016094,-0.998211,-0.057584,-14.979542,1076.228581,2105.695757, + -0.011125,-0.99822,-0.058587,13.134182,1076.228421,2106.067344, + 0.00817,-0.998218,-0.059117,-7.970851,1078.145031,2074.386102, + -0.011411,-0.99822,-0.058537,7.627679,1078.144942,2074.45889, + -0.057687,-0.998207,-0.015958,39.184537,1078.14493,2043.195173, + -0.051451,-0.998214,-0.030349,59.392233,1076.228319,2076.035337, + -0.047191,-0.998207,-0.036817,33.147991,1078.144888,2057.578481, + -0.051451,-0.998214,-0.030349,59.392233,1076.228319,2076.035337, + -0.057687,-0.998207,-0.015958,39.184537,1078.14493,2043.195173, + -0.059147,-0.998214,-0.008352,70.494191,1076.228394,2050.203843, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + -0.139076,0.962205,0.234133,-20.348604,1105.4614,2064.903427, + -0.038908,0.962171,0.269655,-7.432857,1105.461298,2070.454406, + -0.619788,-0.000001,0.784769,-40.811035,1076.228785,2094.593798, + -0.800876,0.000001,0.59883,-60.427624,1087.681648,2074.451703, + -0.872928,0.000002,0.48785,-60.427688,1076.229003,2074.451642, + -0.800876,0.000001,0.59883,-60.427624,1087.681648,2074.451703, + -0.619788,-0.000001,0.784769,-40.811035,1076.228785,2094.593798, + -0.510751,-0.000002,0.859729,-40.810971,1087.681431,2094.593859, + -0.860531,-0.000005,-0.509397,-61.09134,-1491.103002,2133.75852, + -0.860533,-0.000006,-0.509395,-52.132526,-1479.424112,2118.624167, + -0.860532,-0.000003,-0.509396,-22.365555,-1575.775301,2068.338812, + -0.860359,-0.509569,0.011083,-95.851569,-1479.424684,2057.327217, + -0.818467,-0.56723,-0.09144,-39.173175,-1575.775614,2027.21997, + -0.790675,-0.595591,0.141793,-39.245963,-1575.775532,2042.8185, + -0.698931,0.65913,-0.277566,-114.434123,-1260.036635,2016.475821, + -0.679261,0.618097,-0.395679,-33.137931,-1175.36442,2012.835435, + -0.701586,0.662308,-0.262917,-98.55764,-1260.03677,1974.10965, + 0.968687,0.000002,-0.248285,-22.126464,-1271.715181,1939.349424, + 0.968687,0.000003,-0.248285,-26.491771,-1491.10393,1922.314269, + 0.968687,0.000001,-0.248284,-26.493073,-1260.036639,1922.313042, + 0.968687,0.000003,-0.248285,-26.491771,-1491.10393,1922.314269, + 0.968687,0.000002,-0.248285,-22.126464,-1271.715181,1939.349424, + 0.968687,0.000003,-0.248287,-22.125162,-1479.424895,1939.350652, + 0.860529,-0.000003,0.509402,22.364218,-1175.364675,2002.064361, + 0.860528,0.000004,0.509402,52.131057,-1271.715666,1951.778881, + 0.860527,0.000002,0.509404,61.090003,-1260.03607,1936.644652, + -0.599385,-0.512211,0.615124,-80.088408,-1479.424409,2092.323821, + -0.670858,-0.621461,0.404642,-33.343912,-1575.775422,2057.257517, + -0.502999,-0.570987,0.648819,-22.365555,-1575.775301,2068.338812, + 0.414007,0.000007,0.910274,26.490435,-1260.035141,2148.088903, + 0.414007,0.000007,0.910274,67.675513,-1491.1023,2129.359093, + 0.414007,0.000007,0.910274,67.674211,-1260.035009,2129.357866, + 0.414007,0.000007,0.910274,67.675513,-1491.1023,2129.359093, + 0.414007,0.000007,0.910274,26.490435,-1260.035141,2148.088903, + 0.414007,0.000007,0.910274,26.491737,-1491.102432,2148.090131, + 0.990927,0.000006,0.134401,39.173141,-1575.775088,2043.18443, + 0.992138,0.000005,-0.125147,39.246263,-1635.024374,2027.586215, + 0.96693,0.000004,-0.255041,39.245929,-1575.77517,2027.5859, + 0.992138,0.000005,-0.125147,39.246263,-1635.024374,2027.586215, + 0.990927,0.000006,0.134401,39.173141,-1575.775088,2043.18443, + 0.964508,0.000007,0.264054,39.173475,-1635.024291,2043.184745, + -0.990927,-0.000006,-0.134401,-39.172841,-1635.024818,2027.220285, + -0.992138,-0.000005,0.125147,-39.245963,-1575.775532,2042.8185, + -0.964508,-0.000007,-0.264054,-39.173175,-1575.775614,2027.21997, + -0.992138,-0.000005,0.125147,-39.245963,-1575.775532,2042.8185, + -0.990927,-0.000006,-0.134401,-39.172841,-1635.024818,2027.220285, + -0.96693,-0.000004,0.255041,-39.24563,-1635.024735,2042.818814, + -0.190512,0.000006,-0.981685,-7.617619,-1175.364474,1995.955026, + -0.229384,0.000006,-0.973336,-7.609225,314.385213,1995.96294, + 0.101709,0.000005,-0.994814,7.980911,-1175.364562,1996.027815, + 0.685212,-0,-0.728344,80.088242,-1479.424113,1978.080455, + 0.685212,-0,-0.728344,52.131057,-1271.715666,1951.778881, + 0.685212,-0,-0.728344,80.08694,-1271.715963,1978.079227, + 0.685212,-0,-0.728344,52.131057,-1271.715666,1951.778881, + 0.685212,-0,-0.728344,80.088242,-1479.424113,1978.080455, + 0.685212,-0,-0.728344,52.13236,-1479.42441,1951.780109, + 0.157159,-0.595592,0.787764,7.616282,-1575.7751,2074.448146, + 0.02625,-0.509303,0.860187,22.124996,-1479.423627,2131.053624, + 0.011128,-0.512209,0.858789,-16.239951,-1479.423837,2132.224265, + -0.229384,0.000006,-0.973336,-7.609225,314.385213,1995.96294, + -0.495296,0.000007,-0.868724,-22.043938,1078.145495,2001.869049, + -0.125147,0.000006,-0.992138,-7.604921,1078.145445,1995.966997, + -0.495296,0.000007,-0.868724,-22.043938,1078.145495,2001.869049, + -0.229384,0.000006,-0.973336,-7.609225,314.385213,1995.96294, + -0.584403,0.000008,-0.811464,-22.056636,-1175.364424,2001.857078, + -0.584403,0.000008,-0.811464,-22.056636,-1175.364424,2001.857078, + -0.229384,0.000006,-0.973336,-7.609225,314.385213,1995.96294, + -0.190512,0.000006,-0.981685,-7.617619,-1175.364474,1995.955026, + -0.993172,0.000005,0.11666,-70.843043,1076.2292,2048.335748, + -0.989742,0.000006,-0.142868,-70.471391,1087.681993,2020.222085, + -0.962215,0.000007,-0.272291,-70.471455,1076.229348,2020.222024, + -0.989742,0.000006,-0.142868,-70.471391,1087.681993,2020.222085, + -0.993172,0.000005,0.11666,-70.843043,1076.2292,2048.335748, + -0.969075,0.000004,0.246765,-70.842978,1087.681846,2048.335808, + 0.157159,-0.595592,0.787764,7.616282,-1575.7751,2074.448146, + 0.514086,-0.567226,0.643405,22.055299,-1575.77505,2068.546095, + 0.297952,-0.659128,0.690489,67.675513,-1491.1023,2129.359093, + 0.728344,0.000009,0.685212,57.120298,-1271.716562,2115.289236, + 0.728344,0.000009,0.685212,83.421946,-1479.423514,2087.334581, + 0.728344,0.000009,0.685212,83.420644,-1271.716562,2087.333353, + 0.728344,0.000009,0.685212,83.421946,-1479.423514,2087.334581, + 0.728344,0.000009,0.685212,57.120298,-1271.716562,2115.289236, + 0.728344,0.000009,0.685212,57.1216,-1479.423514,2115.290463, + -0.989965,-0.000005,-0.141316,18.725134,-1491.103683,1920.769396, + -0.989965,-0.000004,-0.141316,16.238483,-1271.715391,1938.178783, + -0.989964,-0.000002,-0.141318,18.723832,-1260.036393,1920.768168, + -0.989965,-0.000004,-0.141316,16.238483,-1271.715391,1938.178783, + -0.989965,-0.000005,-0.141316,18.725134,-1491.103683,1920.769396, + -0.989965,-0.000005,-0.141313,16.239785,-1479.424685,1938.180011, + 0.310182,0.662318,0.681999,26.490435,-1260.035141,2148.088903, + 0.297947,0.65914,0.69048,67.674211,-1260.035009,2129.357866, + 0.200522,0.618102,0.760093,7.61498,-1175.364977,2074.446919, + 0.701579,0.662318,0.26291,98.555001,-1260.035011,2096.292295, + 0.698924,0.659139,0.277563,114.431485,-1260.035146,2053.926124, + 0.679257,0.618102,0.395677,33.135292,-1175.365031,2057.56651, + 0.670858,0.621465,-0.404636,33.342575,-1175.364796,2013.145656, + 0.688116,0.662016,-0.297036,112.886611,-1260.035395,2008.709218, + 0.684421,0.659292,-0.311291,94.155574,-1260.035719,1967.525442, + 0.679257,0.618102,0.395677,33.135292,-1175.365031,2057.56651, + 0.698924,0.659139,0.277563,114.431485,-1260.035146,2053.926124, + 0.789459,0.595062,0.15052,39.171839,-1175.364988,2043.183203, + 0.989966,0.000004,0.141309,-18.726471,-1260.035388,2149.633777, + 0.989966,0.000005,0.141309,-16.239951,-1479.423837,2132.224265, + 0.989966,0.000002,0.141307,-16.241253,-1271.716239,2132.223038, + 0.989966,0.000005,0.141309,-16.239951,-1479.423837,2132.224265, + 0.989966,0.000004,0.141309,-18.726471,-1260.035388,2149.633777, + 0.989965,0.000004,0.141311,-18.725169,-1491.102679,2149.635004, + -0.000006,1,-0.000005,-33.343912,-1575.775422,2057.257517, + -0.000006,1,-0.000005,-39.173175,-1575.775614,2027.21997, + -0.000006,1,-0.000005,-39.245963,-1575.775532,2042.8185, + -0.000006,1,-0.000005,-39.173175,-1575.775614,2027.21997, + -0.000006,1,-0.000005,-33.343912,-1575.775422,2057.257517, + -0.000006,1,-0.000005,-33.136629,-1575.775657,2012.836663, + -0.000006,1,-0.000005,-33.136629,-1575.775657,2012.836663, + -0.000006,1,-0.000005,-33.343912,-1575.775422,2057.257517, + -0.000006,1,-0.000005,-22.365555,-1575.775301,2068.338812, + -0.000006,1,-0.000005,-33.136629,-1575.775657,2012.836663, + -0.000006,1,-0.000005,-22.365555,-1575.775301,2068.338812, + -0.000006,1,-0.000005,-22.055334,-1575.775652,2001.858305, + -0.000006,1,-0.000005,-22.055334,-1575.775652,2001.858305, + -0.000006,1,-0.000005,-22.365555,-1575.775301,2068.338812, + -0.000006,1,-0.000005,-7.982247,-1575.775188,2074.375358, + -0.000006,1,-0.000005,-22.055334,-1575.775652,2001.858305, + -0.000006,1,-0.000005,-7.982247,-1575.775188,2074.375358, + -0.000006,1,-0.000005,-7.616317,-1575.775602,1995.956254, + -0.000006,1,-0.000005,-7.616317,-1575.775602,1995.956254, + -0.000006,1,-0.000005,-7.982247,-1575.775188,2074.375358, + -0.000006,1,-0.000005,7.616282,-1575.7751,2074.448146, + -0.000006,1,-0.000005,-7.616317,-1575.775602,1995.956254, + -0.000006,1,-0.000005,7.616282,-1575.7751,2074.448146, + -0.000006,1,-0.000005,7.982213,-1575.775514,1996.029042, + -0.000006,1,-0.000005,7.982213,-1575.775514,1996.029042, + -0.000006,1,-0.000005,7.616282,-1575.7751,2074.448146, + -0.000006,1,-0.000005,22.055299,-1575.77505,2068.546095, + -0.000006,1,-0.000005,7.982213,-1575.775514,1996.029042, + -0.000006,1,-0.000005,22.055299,-1575.77505,2068.546095, + -0.000006,1,-0.000005,22.36552,-1575.775401,2002.065588, + -0.000006,1,-0.000005,22.36552,-1575.775401,2002.065588, + -0.000006,1,-0.000005,22.055299,-1575.77505,2068.546095, + -0.000006,1,-0.000005,33.136594,-1575.775046,2057.567737, + -0.000006,1,-0.000005,22.36552,-1575.775401,2002.065588, + -0.000006,1,-0.000005,33.136594,-1575.775046,2057.567737, + -0.000006,1,-0.000005,33.343877,-1575.77528,2013.146883, + -0.000006,1,-0.000005,33.343877,-1575.77528,2013.146883, + -0.000006,1,-0.000005,33.136594,-1575.775046,2057.567737, + -0.000006,1,-0.000005,39.173141,-1575.775088,2043.18443, + -0.000006,1,-0.000005,33.343877,-1575.77528,2013.146883, + -0.000006,1,-0.000005,39.173141,-1575.775088,2043.18443, + -0.000006,1,-0.000005,39.245929,-1575.77517,2027.5859, + 0.605656,0.000008,0.795727,22.055299,-1575.77505,2068.546095, + 0.79004,0.000008,0.613055,33.136928,-1635.024249,2057.568052, + 0.864064,0.000008,0.503381,33.136594,-1575.775046,2057.567737, + 0.79004,0.000008,0.613055,33.136928,-1635.024249,2057.568052, + 0.605656,0.000008,0.795727,22.055299,-1575.77505,2068.546095, + 0.495296,0.000007,0.868724,22.055633,-1635.024253,2068.546409, + -0.868724,0.000002,0.495296,-33.345214,-1175.364654,2057.256289, + -0.96693,0.000004,0.255041,-39.234567,1078.145374,2042.829243, + -0.992138,0.000005,0.125147,-39.247265,-1175.364544,2042.817272, + -0.96693,0.000004,0.255041,-39.234567,1078.145374,2042.829243, + -0.868724,0.000002,0.495296,-33.345214,-1175.364654,2057.256289, + -0.795727,0.000001,0.605656,-33.332516,1078.145264,2057.26826, + 0.503381,0.000002,-0.864064,22.364218,-1175.364675,2002.064361, + 0.264054,0.000004,-0.964508,7.993609,1078.145357,1996.039785, + 0.613055,0.000001,-0.79004,22.376916,1078.145244,2002.076332, + 0.264054,0.000004,-0.964508,7.993609,1078.145357,1996.039785, + 0.503381,0.000002,-0.864064,22.364218,-1175.364675,2002.064361, + 0.101709,0.000005,-0.994814,7.980911,-1175.364562,1996.027815, + 0.868724,-0.000002,-0.495296,33.355273,1078.145123,2013.157627, + 0.96693,-0.000004,-0.255041,39.244627,-1175.364906,2027.584673, + 0.795727,-0.000001,-0.605656,33.342575,-1175.364796,2013.145656, + 0.96693,-0.000004,-0.255041,39.244627,-1175.364906,2027.584673, + 0.868724,-0.000002,-0.495296,33.355273,1078.145123,2013.157627, + 0.992138,-0.000005,-0.125147,39.257325,1078.145013,2027.596644, + -0.684425,-0.659287,0.311293,-94.156911,-1491.103352,2102.87773, + -0.688119,-0.66201,0.297042,-112.887948,-1491.103676,2061.693954, + -0.670858,-0.621461,0.404642,-33.343912,-1575.775422,2057.257517, + -0.142868,-0.000004,0.989742,-14.979477,1087.681226,2105.695818, + 0.11666,-0.000006,0.993172,13.134182,1076.228421,2106.067344, + 0.246765,-0.000007,0.969075,13.134247,1087.681066,2106.067405, + 0.11666,-0.000006,0.993172,13.134182,1076.228421,2106.067344, + -0.142868,-0.000004,0.989742,-14.979477,1087.681226,2105.695818, + -0.272291,-0.000004,0.962215,-14.979542,1076.228581,2105.695757, + 0.255041,-0.000007,0.96693,7.627679,1078.144942,2074.45889, + 0.518094,-0.000007,0.855324,22.062392,314.38466,2068.552781, + 0.605656,-0.000008,0.795727,22.066696,1078.144892,2068.556838, + 0.518094,-0.000007,0.855324,22.062392,314.38466,2068.552781, + 0.255041,-0.000007,0.96693,7.627679,1078.144942,2074.45889, + 0.190512,-0.000006,0.981685,7.61498,-1175.364977,2074.446919, + 0.518094,-0.000007,0.855324,22.062392,314.38466,2068.552781, + 0.190512,-0.000006,0.981685,7.61498,-1175.364977,2074.446919, + 0.551684,-0.000008,0.834053,22.053997,-1175.365027,2068.544867, + -0.188244,-0.621459,0.760495,-7.982247,-1575.775188,2074.375358, + 0.157159,-0.595592,0.787764,7.616282,-1575.7751,2074.448146, + 0.011128,-0.512209,0.858789,-16.239951,-1479.423837,2132.224265, + 0.514086,-0.567226,0.643405,22.055299,-1575.77505,2068.546095, + 0.679262,-0.618094,0.395681,33.136594,-1575.775046,2057.567737, + 0.616202,-0.509565,0.600532,83.421946,-1479.423514,2087.334581, + -0.685212,0,0.728344,-80.08971,-1271.715667,2092.322594, + -0.685212,0,0.728344,-52.132526,-1479.424112,2118.624167, + -0.685212,0,0.728344,-52.133828,-1271.715965,2118.62294, + -0.685212,0,0.728344,-52.132526,-1479.424112,2118.624167, + -0.685212,0,0.728344,-80.08971,-1271.715667,2092.322594, + -0.685212,0,0.728344,-80.088408,-1479.424409,2092.323821, + -0.799934,-0.000001,0.600088,-67.675548,-1491.104063,1941.045307, + -0.799934,-0.000001,0.600088,-57.123068,-1271.715068,1955.112585, + -0.799935,-0,0.600087,-67.67685,-1260.036772,1941.044079, + -0.799934,-0.000001,0.600088,-57.123068,-1271.715068,1955.112585, + -0.799934,-0.000001,0.600088,-67.675548,-1491.104063,1941.045307, + -0.799934,-0.000001,0.600088,-57.121766,-1479.425008,1955.113813, + -0.613055,-0.000001,0.79004,-22.366857,-1175.364775,2068.337584, + -0.795727,0.000001,0.605656,-33.332516,1078.145264,2057.26826, + -0.868724,0.000002,0.495296,-33.345214,-1175.364654,2057.256289, + -0.795727,0.000001,0.605656,-33.332516,1078.145264,2057.26826, + -0.613055,-0.000001,0.79004,-22.366857,-1175.364775,2068.337584, + -0.503381,-0.000002,0.864064,-22.354159,1078.145144,2068.349555, + 0.605656,-0.000008,0.795727,22.066696,1078.144892,2068.556838, + 0.805975,-0.000008,0.59195,33.135292,-1175.365031,2057.56651, + 0.828868,-0.000008,0.559444,33.147991,1078.144888,2057.578481, + 0.805975,-0.000008,0.59195,33.135292,-1175.365031,2057.56651, + 0.605656,-0.000008,0.795727,22.066696,1078.144892,2068.556838, + 0.518094,-0.000007,0.855324,22.062392,314.38466,2068.552781, + 0.059136,-0.998215,0.008341,-70.471455,1076.229348,2020.222024, + 0.058581,-0.998221,-0.011105,-39.234567,1078.145374,2042.829243, + 0.058617,-0.998221,-0.010888,-70.843043,1076.2292,2048.335748, + 0.058581,-0.998221,-0.011105,-39.234567,1078.145374,2042.829243, + 0.059136,-0.998215,0.008341,-70.471455,1076.229348,2020.222024, + 0.057675,-0.998208,0.015947,-39.161779,1078.145457,2027.230714, + -0.036914,-0.998211,0.047029,40.833771,1076.228956,1975.832068, + -0.047585,-0.998218,0.036011,33.355273,1078.145123,2013.157627, + -0.03018,-0.998218,0.051478,22.376916,1078.145244,2002.076332, + -0.047585,-0.998218,0.036011,33.355273,1078.145123,2013.157627, + -0.036914,-0.998211,0.047029,40.833771,1076.228956,1975.832068, + -0.052104,-0.998211,0.029324,60.450424,1076.228739,1995.974225, + 0.655297,-0.595759,-0.464388,33.343877,-1575.77528,2013.146883, + 0.561851,-0.416707,-0.714617,22.36552,-1575.775401,2002.065588, + 0.600534,-0.509567,-0.616198,52.13236,-1479.42441,1951.780109, + -0.818467,-0.56723,-0.09144,-39.173175,-1575.775614,2027.21997, + -0.69893,-0.659132,-0.277564,-114.432821,-1491.103925,2016.477049, + -0.67926,-0.618099,-0.395677,-33.136629,-1575.775657,2012.836663, + 0.59883,-0.000008,0.800876,39.250141,1087.680974,2095.65205, + 0.824055,-0.000008,0.566511,59.392233,1076.228319,2076.035337, + 0.824055,-0.000008,0.566511,59.392298,1087.680965,2076.035397, + 0.824055,-0.000008,0.566511,59.392233,1076.228319,2076.035337, + 0.59883,-0.000008,0.800876,39.250141,1087.680974,2095.65205, + 0.48785,-0.000007,0.872928,39.250077,1076.228329,2095.65199, + -0.514083,-0.567231,-0.643403,-22.055334,-1575.775652,2001.858305, + -0.6162,-0.509569,-0.600531,-83.422112,-1479.425008,1983.069695, + -0.625236,-0.512922,-0.58821,-57.121766,-1479.425008,1955.113813, + 0.858789,-0.512209,-0.011122,97.022044,-1479.423628,2051.442006, + 0.789465,-0.595053,0.150522,39.173141,-1575.775088,2043.18443, + 0.81446,-0.570986,-0.103102,39.245929,-1575.77517,2027.5859, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,-21.078506,-1635.024494,2068.87915, + 0.000006,-1,0.000005,-33.343578,-1635.024625,2057.257832, + 0.000006,-1,0.000005,7.982547,-1635.024718,1996.029357, + 0.000006,-1,0.000005,0.000317,-1635.024555,2035.202515, + 0.000006,-1,0.000005,-7.615983,-1635.024806,1995.956569, + -0.514083,0.56723,-0.643404,-22.056636,-1175.364424,2001.857078, + -0.625236,0.512922,-0.58821,-57.123068,-1271.715068,1955.112585, + -0.6162,0.509569,-0.600531,-83.423414,-1271.715068,1983.068468, + -0.999535,-0.000006,0.030499,-97.022211,-1479.424894,2018.96227, + -0.999535,-0.000006,0.030499,-95.852871,-1271.715393,2057.325989, + -0.999535,-0.000006,0.030499,-97.023513,-1271.715182,2018.961042, + -0.999535,-0.000006,0.030499,-95.852871,-1271.715393,2057.325989, + -0.999535,-0.000006,0.030499,-97.022211,-1479.424894,2018.96227, + -0.999535,-0.000006,0.030499,-95.851569,-1479.424684,2057.327217, + 0.000006,1,0.000005,0.062597,1105.461443,2035.212994, + -0.132844,0.962206,-0.237725,-19.556757,1105.461714,2004.993466, + -0.213632,0.962233,-0.168727,-29.627835,1105.461718,2014.801793, + -0.255041,-0.000007,-0.96693,-7.615983,-1635.024806,1995.956569, + -0.495296,-0.000007,-0.868724,-22.055334,-1575.775652,2001.858305, + -0.125147,-0.000006,-0.992138,-7.616317,-1575.775602,1995.956254, + -0.495296,-0.000007,-0.868724,-22.055334,-1575.775652,2001.858305, + -0.255041,-0.000007,-0.96693,-7.615983,-1635.024806,1995.956569, + -0.605656,-0.000008,-0.795727,-22.055,-1635.024856,2001.85862, + -0.68812,0.662011,0.297038,-112.88925,-1260.036386,2061.692727, + -0.655293,0.595761,0.464393,-33.345214,-1175.364654,2057.256289, + -0.790675,0.595591,0.141793,-39.247265,-1175.364544,2042.817272, + 0.799933,0.000001,-0.600089,67.674211,-1260.035009,2129.357866, + 0.799933,0.000001,-0.600089,57.1216,-1479.423514,2115.290463, + 0.799933,0,-0.600089,57.120298,-1271.716562,2115.289236, + 0.799933,0.000001,-0.600089,57.1216,-1479.423514,2115.290463, + 0.799933,0.000001,-0.600089,67.674211,-1260.035009,2129.357866, + 0.799934,0.000001,-0.600088,67.675513,-1491.1023,2129.359093, + 0.134993,-0.595761,-0.791736,7.982213,-1575.775514,1996.029042, + 0.263853,-0.659287,-0.704075,18.725134,-1491.103683,1920.769396, + 0.276542,-0.66201,-0.696611,61.091305,-1491.10336,1936.64588, + 0.625238,-0.512917,0.588212,57.1216,-1479.423514,2115.290463, + 0.514086,-0.567226,0.643405,22.055299,-1575.77505,2068.546095, + 0.616202,-0.509565,0.600532,83.421946,-1479.423514,2087.334581, + 0.248284,0.000004,0.968687,95.850101,-1271.716238,2013.075832, + 0.248282,0.000002,0.968688,112.886611,-1260.035395,2008.709218, + 0.248285,-0.000002,0.968687,39.244627,-1175.364906,2027.584673, + -0.5094,0.000001,0.86053,83.420644,-1271.716562,2087.333353, + -0.5094,0.000001,0.86053,98.555001,-1260.035011,2096.292295, + -0.509399,-0.000001,0.86053,33.135292,-1175.365031,2057.56651, + 0.248285,0.000002,0.968687,39.245929,-1575.77517,2027.5859, + 0.248284,0.000005,0.968687,112.887913,-1491.102686,2008.710446, + 0.248287,0.000005,0.968687,95.851403,-1479.423838,2013.077059, + -0.509399,0.000001,0.86053,33.136594,-1575.775046,2057.567737, + -0.5094,0.000001,0.86053,98.556303,-1491.102301,2096.293522, + -0.509399,0.000001,0.86053,83.421946,-1479.423514,2087.334581, + 0.993172,-0.000005,-0.11666,70.865843,1087.681187,2022.09018, + 0.989742,-0.000006,0.142868,70.494191,1076.228394,2050.203843, + 0.969075,-0.000004,-0.246765,70.865779,1076.228541,2022.090119, + 0.989742,-0.000006,0.142868,70.494191,1076.228394,2050.203843, + 0.993172,-0.000005,-0.11666,70.865843,1087.681187,2022.09018, + 0.962215,-0.000007,0.272291,70.494256,1087.68104,2050.203904, + -0.514083,-0.567231,-0.643403,-22.055334,-1575.775652,2001.858305, + -0.297947,-0.659132,-0.690487,-67.675548,-1491.104063,1941.045307, + -0.20052,-0.618098,-0.760096,-7.616317,-1575.775602,1995.956254, + 0.655297,-0.595759,-0.464388,33.343877,-1575.77528,2013.146883, + 0.684431,-0.659285,-0.311285,94.156876,-1491.10301,1967.52667, + 0.688124,-0.662008,-0.297034,112.887913,-1491.102686,2008.710446, + -0.955293,0.000007,-0.29566,-39.174477,-1175.364462,2027.218743, + -0.828868,0.000008,-0.559444,-33.129537,314.385267,2012.843349, + -0.828868,0.000008,-0.559444,-33.137931,-1175.36442,2012.835435, + -0.828868,0.000008,-0.559444,-33.129537,314.385267,2012.843349, + -0.955293,0.000007,-0.29566,-39.174477,-1175.364462,2027.218743, + -0.828868,0.000008,-0.559444,-33.125233,1078.145499,2012.847406, + -0.828868,0.000008,-0.559444,-33.125233,1078.145499,2012.847406, + -0.955293,0.000007,-0.29566,-39.174477,-1175.364462,2027.218743, + -0.990927,0.000006,-0.134401,-39.161779,1078.145457,2027.230714, + -0.20052,-0.618098,-0.760096,-7.616317,-1575.775602,1995.956254, + -0.297947,-0.659132,-0.690487,-67.675548,-1491.104063,1941.045307, + -0.310184,-0.662311,-0.682004,-26.491771,-1491.10393,1922.314269, + 0.255041,0.000007,0.96693,7.616282,-1575.7751,2074.448146, + 0.495296,0.000007,0.868724,22.055633,-1635.024253,2068.546409, + 0.605656,0.000008,0.795727,22.055299,-1575.77505,2068.546095, + 0.495296,0.000007,0.868724,22.055633,-1635.024253,2068.546409, + 0.255041,0.000007,0.96693,7.616282,-1575.7751,2074.448146, + 0.125147,0.000006,0.992138,7.616616,-1635.024303,2074.448461, + -0.96693,-0.000004,0.255041,-39.24563,-1635.024735,2042.818814, + -0.868724,-0.000002,0.495296,-33.343912,-1575.775422,2057.257517, + -0.992138,-0.000005,0.125147,-39.245963,-1575.775532,2042.8185, + -0.868724,-0.000002,0.495296,-33.343912,-1575.775422,2057.257517, + -0.96693,-0.000004,0.255041,-39.24563,-1635.024735,2042.818814, + -0.789247,-0.002827,0.614069,-33.343578,-1635.024625,2057.257832, + -0.818468,0.567229,-0.091441,-39.174477,-1175.364462,2027.218743, + -0.679261,0.618097,-0.395679,-33.137931,-1175.36442,2012.835435, + -0.698931,0.65913,-0.277566,-114.434123,-1260.036635,2016.475821, + -0.684428,0.659289,0.311283,-94.158213,-1260.036061,2102.876503, + -0.655293,0.595761,0.464393,-33.345214,-1175.364654,2057.256289, + -0.68812,0.662011,0.297038,-112.88925,-1260.036386,2061.692727, + 0.030499,0.000006,0.999535,-16.241253,-1271.716239,2132.223038, + 0.030499,0.000006,0.999535,22.124996,-1479.423627,2131.053624, + 0.030499,0.000006,0.999535,22.123694,-1271.716449,2131.052397, + 0.030499,0.000006,0.999535,22.124996,-1479.423627,2131.053624, + 0.030499,0.000006,0.999535,-16.241253,-1271.716239,2132.223038, + 0.030499,0.000006,0.999535,-16.239951,-1479.423837,2132.224265, + -0.605656,-0.000008,-0.795727,-22.055,-1635.024856,2001.85862, + -0.79004,-0.000008,-0.613055,-33.136629,-1575.775657,2012.836663, + -0.495296,-0.000007,-0.868724,-22.055334,-1575.775652,2001.858305, + -0.79004,-0.000008,-0.613055,-33.136629,-1575.775657,2012.836663, + -0.605656,-0.000008,-0.795727,-22.055,-1635.024856,2001.85862, + -0.864064,-0.000008,-0.503381,-33.136295,-1635.02486,2012.836977, + 0.999535,0.000006,-0.030499,97.020742,-1271.716448,2051.440779, + 0.999535,0.000006,-0.030499,95.851403,-1479.423838,2013.077059, + 0.999535,0.000006,-0.030499,95.850101,-1271.716238,2013.075832, + 0.999535,0.000006,-0.030499,95.851403,-1479.423838,2013.077059, + 0.999535,0.000006,-0.030499,97.020742,-1271.716448,2051.440779, + 0.999535,0.000006,-0.030499,97.022044,-1479.423628,2051.442006, + -0.69893,-0.659132,-0.277564,-114.432821,-1491.103925,2016.477049, + -0.701584,-0.662311,-0.262913,-98.556338,-1491.104061,1974.110878, + -0.67926,-0.618099,-0.395677,-33.136629,-1575.775657,2012.836663, + 0.826538,0.557702,-0.076187,39.244627,-1175.364906,2027.584673, + 0.688116,0.662016,-0.297036,112.886611,-1260.035395,2008.709218, + 0.670858,0.621465,-0.404636,33.342575,-1175.364796,2013.145656, + 0.509398,-0.000001,-0.860531,-83.423414,-1271.715068,1983.068468, + 0.509398,-0.000001,-0.860531,-98.55764,-1260.03677,1974.10965, + 0.509398,0.000001,-0.860531,-33.137931,-1175.36442,2012.835435, + -0.799934,0,0.600088,-22.056636,-1175.364424,2001.857078, + -0.799935,-0,0.600087,-67.67685,-1260.036772,1941.044079, + -0.799934,-0.000001,0.600088,-57.123068,-1271.715068,1955.112585, + 0.142868,0.000004,-0.989742,15.002278,1076.229161,1964.73011, + -0.11666,0.000006,-0.993172,-13.111382,1087.681967,1964.358584, + 0.272291,0.000004,-0.962215,15.002342,1087.681806,1964.730171, + -0.11666,0.000006,-0.993172,-13.111382,1087.681967,1964.358584, + 0.142868,0.000004,-0.989742,15.002278,1076.229161,1964.73011, + -0.246765,0.000007,-0.969075,-13.111446,1076.229321,1964.358523, + -0.992138,0.000005,0.125147,-39.247265,-1175.364544,2042.817272, + -0.990927,0.000006,-0.134401,-39.161779,1078.145457,2027.230714, + -0.955293,0.000007,-0.29566,-39.174477,-1175.364462,2027.218743, + -0.990927,0.000006,-0.134401,-39.161779,1078.145457,2027.230714, + -0.992138,0.000005,0.125147,-39.247265,-1175.364544,2042.817272, + -0.96693,0.000004,0.255041,-39.234567,1078.145374,2042.829243, + -0.6162,0.509569,-0.600531,-83.423414,-1271.715068,1983.068468, + -0.679261,0.618097,-0.395679,-33.137931,-1175.36442,2012.835435, + -0.514083,0.56723,-0.643404,-22.056636,-1175.364424,2001.857078, + 0.134993,-0.595761,-0.791736,7.982213,-1575.775514,1996.029042, + -0.011077,-0.509569,-0.860359,-22.125162,-1479.424895,1939.350652, + -0.026179,-0.512921,-0.858036,16.239785,-1479.424685,1938.180011, + -0.20052,-0.618098,-0.760096,-7.616317,-1575.775602,1995.956254, + -0.011077,-0.509569,-0.860359,-22.125162,-1479.424895,1939.350652, + 0.134993,-0.595761,-0.791736,7.982213,-1575.775514,1996.029042, + 0.936408,0.000007,0.350914,98.555001,-1260.035011,2096.292295, + 0.936408,0.000007,0.350914,114.432787,-1491.102437,2053.927351, + 0.936408,0.000007,0.350914,114.431485,-1260.035146,2053.926124, + 0.936408,0.000007,0.350914,114.432787,-1491.102437,2053.927351, + 0.936408,0.000007,0.350914,98.555001,-1260.035011,2096.292295, + 0.936408,0.000007,0.350914,98.556303,-1491.102301,2096.293522, + -0.728344,-0.000009,-0.685212,-57.121766,-1479.425008,1955.113813, + -0.728344,-0.000009,-0.685212,-83.423414,-1271.715068,1983.068468, + -0.728344,-0.000009,-0.685212,-57.123068,-1271.715068,1955.112585, + -0.728344,-0.000009,-0.685212,-83.423414,-1271.715068,1983.068468, + -0.728344,-0.000009,-0.685212,-57.121766,-1479.425008,1955.113813, + -0.728344,-0.000009,-0.685212,-83.422112,-1479.425008,1983.069695, + -0.030499,-0.000006,-0.999535,16.239785,-1479.424685,1938.180011, + -0.030499,-0.000006,-0.999535,-22.126464,-1271.715181,1939.349424, + -0.030499,-0.000006,-0.999535,16.238483,-1271.715391,1938.178783, + -0.030499,-0.000006,-0.999535,-22.126464,-1271.715181,1939.349424, + -0.030499,-0.000006,-0.999535,16.239785,-1479.424685,1938.180011, + -0.030499,-0.000006,-0.999535,-22.125162,-1479.424895,1939.350652, + -0.502999,-0.570987,0.648819,-22.365555,-1575.775301,2068.338812, + -0.589681,-0.509305,0.626805,-52.132526,-1479.424112,2118.624167, + -0.599385,-0.512211,0.615124,-80.088408,-1479.424409,2092.323821, + 0.858789,-0.512209,-0.011122,97.022044,-1479.423628,2051.442006, + 0.81446,-0.570986,-0.103102,39.245929,-1575.77517,2027.5859, + 0.860187,-0.509303,-0.026244,95.851403,-1479.423838,2013.077059, + 0.276537,0.662012,-0.696611,61.090003,-1260.03607,1936.644652, + 0.188248,0.621463,-0.760491,7.980911,-1175.364562,1996.027815, + 0.503006,0.570988,-0.648812,22.364218,-1175.364675,2002.064361, + 0.81446,-0.570986,-0.103102,39.245929,-1575.77517,2027.5859, + 0.655297,-0.595759,-0.464388,33.343877,-1575.77528,2013.146883, + 0.688124,-0.662008,-0.297034,112.887913,-1491.102686,2008.710446, + -0.67926,-0.618099,-0.395677,-33.136629,-1575.775657,2012.836663, + -0.6162,-0.509569,-0.600531,-83.422112,-1479.425008,1983.069695, + -0.514083,-0.567231,-0.643403,-22.055334,-1575.775652,2001.858305, + 0.860528,0.000004,0.509402,52.131057,-1271.715666,1951.778881, + 0.860528,0.000006,0.509402,61.091305,-1491.10336,1936.64588, + 0.860527,0.000002,0.509404,61.090003,-1260.03607,1936.644652, + 0.860528,0.000006,0.509402,61.091305,-1491.10336,1936.64588, + 0.860528,0.000004,0.509402,52.131057,-1271.715666,1951.778881, + 0.86053,0.000006,0.5094,52.13236,-1479.42441,1951.780109, + 0.350914,-0.000003,-0.936408,61.091305,-1491.10336,1936.64588, + 0.350914,-0.000003,-0.936408,18.723832,-1260.036393,1920.768168, + 0.350914,-0.000003,-0.936408,61.090003,-1260.03607,1936.644652, + 0.350914,-0.000003,-0.936408,18.723832,-1260.036393,1920.768168, + 0.350914,-0.000003,-0.936408,61.091305,-1491.10336,1936.64588, + 0.350914,-0.000003,-0.936408,18.725134,-1491.103683,1920.769396, + 0.600091,0.000006,0.799931,-94.156911,-1491.103352,2102.87773, + 0.600091,0.000004,0.799931,-80.08971,-1271.715667,2092.322594, + 0.600093,0.000002,0.79993,-94.158213,-1260.036061,2102.876503, + 0.600091,0.000004,0.799931,-80.08971,-1271.715667,2092.322594, + 0.600091,0.000006,0.799931,-94.156911,-1491.103352,2102.87773, + 0.600089,0.000006,0.799933,-80.088408,-1479.424409,2092.323821, + 0.248284,0.000004,0.968687,95.850101,-1271.716238,2013.075832, + 0.248284,0.000005,0.968687,112.887913,-1491.102686,2008.710446, + 0.248282,0.000002,0.968688,112.886611,-1260.035395,2008.709218, + 0.248284,0.000005,0.968687,112.887913,-1491.102686,2008.710446, + 0.248284,0.000004,0.968687,95.850101,-1271.716238,2013.075832, + 0.248287,0.000005,0.968687,95.851403,-1479.423838,2013.077059, + -0.860359,-0.509569,0.011083,-95.851569,-1479.424684,2057.327217, + -0.858036,-0.512921,0.026184,-97.022211,-1479.424894,2018.96227, + -0.818467,-0.56723,-0.09144,-39.173175,-1575.775614,2027.21997, + 0.96693,0.000004,-0.255041,39.245929,-1575.77517,2027.5859, + 0.829674,-0.002123,-0.558245,33.344211,-1635.024484,2013.147198, + 0.834053,0.000002,-0.551684,33.343877,-1575.77528,2013.146883, + 0.829674,-0.002123,-0.558245,33.344211,-1635.024484,2013.147198, + 0.96693,0.000004,-0.255041,39.245929,-1575.77517,2027.5859, + 0.992138,0.000005,-0.125147,39.246263,-1635.024374,2027.586215, + 0.619788,0.000001,-0.784769,40.833836,1087.681602,1975.832129, + 0.800876,-0.000001,-0.59883,60.450424,1076.228739,1995.974225, + 0.510751,0.000002,-0.859729,40.833771,1076.228956,1975.832068, + 0.800876,-0.000001,-0.59883,60.450424,1076.228739,1995.974225, + 0.619788,0.000001,-0.784769,40.833836,1087.681602,1975.832129, + 0.872928,-0.000002,-0.48785,60.450489,1087.681384,1995.974286, + -0.910274,-0.000003,0.414007,-112.887948,-1491.103676,2061.693954, + -0.910274,-0.000003,0.414007,-94.158213,-1260.036061,2102.876503, + -0.910274,-0.000003,0.414007,-112.88925,-1260.036386,2061.692727, + -0.910274,-0.000003,0.414007,-94.158213,-1260.036061,2102.876503, + -0.910274,-0.000003,0.414007,-112.887948,-1491.103676,2061.693954, + -0.910274,-0.000003,0.414007,-94.156911,-1491.103352,2102.87773 +}; +static const struct gllist robot_crank_full_frame = { GL_N3F_V3F, GL_TRIANGLES, 1164, robot_crank_full_data, 0 }; +const struct gllist *robot_crank_full = &robot_crank_full_frame; + +static const float robot_gearbox_half_data[] = { + 0.412791,0,-0.910826,-16.408995,-70.07352,1719.887419, + 0.527987,0,-0.849253,-23.822213,-116.7892,1715.924987, + 0.582553,0,-0.812793,-23.822213,-70.07352,1715.924987, + 0.527987,0,-0.849253,-23.822213,-116.7892,1715.924987, + 0.412791,0,-0.910826,-16.408995,-70.07352,1719.887419, + 0.352161,0,-0.93594,-16.408995,-116.7892,1719.887419, + 0,-1,0,712.934349,-116.7892,1614.073004, + 0,-1,0,-758.547422,-116.7892,1522.846858, + 0,-1,0,758.547422,-116.7892,1522.846858, + 0,-1,0,-758.547422,-116.7892,1522.846858, + 0,-1,0,712.934349,-116.7892,1614.073004, + 0,-1,0,-712.590311,-116.7892,1614.76108, + 0,-1,0,-712.590311,-116.7892,1614.76108, + 0,-1,0,712.934349,-116.7892,1614.073004, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,-712.590311,-116.7892,1614.76108, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,8.365227,-116.7892,1638.217273, + 0,-1,0,8.365227,-116.7892,1638.217273, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,16.409035,-116.7892,1640.657321, + 0,-1,0,16.409035,-116.7892,1640.657321, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,23.822253,-116.7892,1644.619753, + 0,-1,0,23.822253,-116.7892,1644.619753, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,30.319996,-116.7892,1649.952295, + 0,-1,0,30.319996,-116.7892,1649.952295, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,35.652559,-116.7892,1656.450021, + 0,-1,0,35.652559,-116.7892,1656.450021, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,39.615015,-116.7892,1663.863226, + 0,-1,0,39.615015,-116.7892,1663.863226, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,42.05509,-116.7892,1671.907025, + 0,-1,0,42.05509,-116.7892,1671.907025, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,42.879011,-116.7892,1680.2723, + 0,-1,0,42.879011,-116.7892,1680.2723, + 0,-1,0,93.432274,-116.7892,1614.761079, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,8.365227,-116.7892,1638.217273, + 0,-1,0,-0.00005,-116.7892,1637.393379, + 0,-1,0,42.879011,-116.7892,1680.2723, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,42.055117,-116.7892,1688.637578, + 0,-1,0,42.055117,-116.7892,1688.637578, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,39.615069,-116.7892,1696.681385, + 0,-1,0,39.615069,-116.7892,1696.681385, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,35.652637,-116.7892,1704.094603, + 0,-1,0,35.652637,-116.7892,1704.094603, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,30.320095,-116.7892,1710.592346, + 0,-1,0,30.320095,-116.7892,1710.592346, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,23.822369,-116.7892,1715.924909, + 0,-1,0,23.822369,-116.7892,1715.924909, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,16.409164,-116.7892,1719.887366, + 0,-1,0,16.409164,-116.7892,1719.887366, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,42.879011,-116.7892,2035.202107, + 0,-1,0,16.409164,-116.7892,1719.887366, + 0,-1,0,42.879011,-116.7892,2035.202107, + 0,-1,0,42.055094,-116.7892,2026.836831, + 0,-1,0,16.409164,-116.7892,1719.887366, + 0,-1,0,42.055094,-116.7892,2026.836831, + 0,-1,0,8.365365,-116.7892,1722.32744, + 0,-1,0,8.365365,-116.7892,1722.32744, + 0,-1,0,42.055094,-116.7892,2026.836831, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,42.055094,-116.7892,2026.836831, + 0,-1,0,39.615024,-116.7892,2018.793031, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,39.615024,-116.7892,2018.793031, + 0,-1,0,35.652572,-116.7892,2011.379823, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,35.652572,-116.7892,2011.379823, + 0,-1,0,30.320012,-116.7892,2004.882095, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,30.320012,-116.7892,2004.882095, + 0,-1,0,23.822272,-116.7892,1999.549549, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,23.822272,-116.7892,1999.549549, + 0,-1,0,16.409056,-116.7892,1995.587113, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,16.409056,-116.7892,1995.587113, + 0,-1,0,8.36525,-116.7892,1993.147061, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,8.36525,-116.7892,1993.147061, + 0,-1,0,-0.000027,-116.7892,1992.323162, + 0,-1,0,42.879011,-116.7892,2035.202107, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,42.055112,-116.7892,2043.567384, + 0,-1,0,42.055112,-116.7892,2043.567384, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,39.61506,-116.7892,2051.61119, + 0,-1,0,39.61506,-116.7892,2051.61119, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,35.652624,-116.7892,2059.024406, + 0,-1,0,35.652624,-116.7892,2059.024406, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,30.320078,-116.7892,2065.522146, + 0,-1,0,30.320078,-116.7892,2065.522146, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,23.82235,-116.7892,2070.854706, + 0,-1,0,23.82235,-116.7892,2070.854706, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,16.409142,-116.7892,2074.817158, + 0,-1,0,16.409142,-116.7892,2074.817158, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,8.365342,-116.7892,2077.257228, + 0,-1,0,8.365342,-116.7892,2077.257228, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,39.615042,-116.7892,2409.402612, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,39.615042,-116.7892,2409.402612, + 0,-1,0,35.652598,-116.7892,2401.9894, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,35.652598,-116.7892,2401.9894, + 0,-1,0,30.320045,-116.7892,2395.491666, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,30.320045,-116.7892,2395.491666, + 0,-1,0,23.822311,-116.7892,2390.159113, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,23.822311,-116.7892,2390.159113, + 0,-1,0,16.409099,-116.7892,2386.196669, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,16.409099,-116.7892,2386.196669, + 0,-1,0,8.365296,-116.7892,2383.756608, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,8.365296,-116.7892,2383.756608, + 0,-1,0,0.00002,-116.7892,2382.9327, + 0,-1,0,39.615042,-116.7892,2409.402612, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,42.055103,-116.7892,2417.446415, + 0,-1,0,42.055103,-116.7892,2417.446415, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,42.879011,-116.7892,2425.811691, + 0,-1,0,42.879011,-116.7892,2425.811691, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,42.055103,-116.7892,2434.176967, + 0,-1,0,42.055103,-116.7892,2434.176967, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,39.615042,-116.7892,2442.220771, + 0,-1,0,39.615042,-116.7892,2442.220771, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,35.652598,-116.7892,2449.633982, + 0,-1,0,35.652598,-116.7892,2449.633982, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,30.320045,-116.7892,2456.131717, + 0,-1,0,30.320045,-116.7892,2456.131717, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,23.822311,-116.7892,2461.464269, + 0,-1,0,23.822311,-116.7892,2461.464269, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,16.409099,-116.7892,2465.426714, + 0,-1,0,16.409099,-116.7892,2465.426714, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,8.365296,-116.7892,2467.866775, + 0,-1,0,8.365296,-116.7892,2467.866775, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0,-1,0,0.00002,-116.7892,2468.690683, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-42.878972,-116.7892,1680.27244, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-42.878972,-116.7892,1680.27244, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-42.055077,-116.7892,1671.907163, + 0,-1,0,-42.055077,-116.7892,1671.907163, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-39.615029,-116.7892,1663.863355, + 0,-1,0,-39.615029,-116.7892,1663.863355, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-35.652597,-116.7892,1656.450137, + 0,-1,0,-35.652597,-116.7892,1656.450137, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-30.320055,-116.7892,1649.952394, + 0,-1,0,-30.320055,-116.7892,1649.952394, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-23.82233,-116.7892,1644.619831, + 0,-1,0,-23.82233,-116.7892,1644.619831, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-16.409125,-116.7892,1640.657374, + 0,-1,0,-16.409125,-116.7892,1640.657374, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-8.365325,-116.7892,1638.2173, + 0,-1,0,-8.365325,-116.7892,1638.2173, + 0,-1,0,-93.431364,-116.7892,1614.76108, + 0,-1,0,-0.00005,-116.7892,1637.393379, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-42.878972,-116.7892,1680.27244, + 0,-1,0,-42.05505,-116.7892,1688.637715, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-42.05505,-116.7892,1688.637715, + 0,-1,0,-39.614976,-116.7892,1696.681514, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-39.614976,-116.7892,1696.681514, + 0,-1,0,-35.65252,-116.7892,1704.09472, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-35.65252,-116.7892,1704.09472, + 0,-1,0,-30.319956,-116.7892,1710.592445, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-30.319956,-116.7892,1710.592445, + 0,-1,0,-23.822213,-116.7892,1715.924987, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-23.822213,-116.7892,1715.924987, + 0,-1,0,-16.408995,-116.7892,1719.887419, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-16.408995,-116.7892,1719.887419, + 0,-1,0,-42.878972,-116.7892,2035.2022, + 0,-1,0,-42.878972,-116.7892,2035.2022, + 0,-1,0,-16.408995,-116.7892,1719.887419, + 0,-1,0,-42.055073,-116.7892,2026.836923, + 0,-1,0,-42.055073,-116.7892,2026.836923, + 0,-1,0,-16.408995,-116.7892,1719.887419, + 0,-1,0,-8.365188,-116.7892,1722.327467, + 0,-1,0,-42.055073,-116.7892,2026.836923, + 0,-1,0,-8.365188,-116.7892,1722.327467, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,-42.055073,-116.7892,2026.836923, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,-39.615021,-116.7892,2018.793117, + 0,-1,0,-39.615021,-116.7892,2018.793117, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,-35.652584,-116.7892,2011.379901, + 0,-1,0,-35.652584,-116.7892,2011.379901, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,-30.320039,-116.7892,2004.882161, + 0,-1,0,-30.320039,-116.7892,2004.882161, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,-23.82231,-116.7892,1999.549601, + 0,-1,0,-23.82231,-116.7892,1999.549601, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,-16.409103,-116.7892,1995.587149, + 0,-1,0,-16.409103,-116.7892,1995.587149, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,-8.365302,-116.7892,1993.147079, + 0,-1,0,-8.365302,-116.7892,1993.147079, + 0,-1,0,0.00009,-116.7892,1723.151361, + 0,-1,0,-0.000027,-116.7892,1992.323162, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-42.878972,-116.7892,2035.2022, + 0,-1,0,-42.055055,-116.7892,2043.567475, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-42.055055,-116.7892,2043.567475, + 0,-1,0,-39.614985,-116.7892,2051.611276, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-39.614985,-116.7892,2051.611276, + 0,-1,0,-35.652533,-116.7892,2059.024483, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-35.652533,-116.7892,2059.024483, + 0,-1,0,-30.319973,-116.7892,2065.522212, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-30.319973,-116.7892,2065.522212, + 0,-1,0,-23.822233,-116.7892,2070.854758, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-23.822233,-116.7892,2070.854758, + 0,-1,0,-16.409017,-116.7892,2074.817194, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-16.409017,-116.7892,2074.817194, + 0,-1,0,-8.365211,-116.7892,2077.257246, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-8.365211,-116.7892,2077.257246, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,-39.615003,-116.7892,2409.402612, + 0,-1,0,-39.615003,-116.7892,2409.402612, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,-35.652558,-116.7892,2401.9894, + 0,-1,0,-35.652558,-116.7892,2401.9894, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,-30.320006,-116.7892,2395.491666, + 0,-1,0,-30.320006,-116.7892,2395.491666, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,-23.822271,-116.7892,2390.159113, + 0,-1,0,-23.822271,-116.7892,2390.159113, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,-16.40906,-116.7892,2386.196669, + 0,-1,0,-16.40906,-116.7892,2386.196669, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,-8.365256,-116.7892,2383.756608, + 0,-1,0,-8.365256,-116.7892,2383.756608, + 0,-1,0,0.000066,-116.7892,2078.081145, + 0,-1,0,0.00002,-116.7892,2382.9327, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-39.615003,-116.7892,2409.402612, + 0,-1,0,-42.055064,-116.7892,2417.446415, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-42.055064,-116.7892,2417.446415, + 0,-1,0,-42.878972,-116.7892,2425.811691, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-42.878972,-116.7892,2425.811691, + 0,-1,0,-42.055064,-116.7892,2434.176967, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-42.055064,-116.7892,2434.176967, + 0,-1,0,-39.615003,-116.7892,2442.220771, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-39.615003,-116.7892,2442.220771, + 0,-1,0,-35.652558,-116.7892,2449.633982, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-35.652558,-116.7892,2449.633982, + 0,-1,0,-30.320006,-116.7892,2456.131717, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-30.320006,-116.7892,2456.131717, + 0,-1,0,-23.822271,-116.7892,2461.464269, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-23.822271,-116.7892,2461.464269, + 0,-1,0,-16.40906,-116.7892,2465.426714, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-16.40906,-116.7892,2465.426714, + 0,-1,0,-8.365256,-116.7892,2467.866775, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,-8.365256,-116.7892,2467.866775, + 0,-1,0,0.00002,-116.7892,2468.690683, + 0,-1,0,-93.431364,-116.7892,2549.07468, + 0,-1,0,0.00002,-116.7892,2468.690683, + 0,-1,0,93.431356,-116.7892,2549.07468, + 0.582553,0,-0.812793,-23.822213,-70.07352,1715.924987, + 0.707106,0,-0.707108,-30.319956,-116.7892,1710.592445, + 0.707106,0,-0.707108,-30.319956,-70.07352,1710.592445, + 0.707106,0,-0.707108,-30.319956,-116.7892,1710.592445, + 0.582553,0,-0.812793,-23.822213,-70.07352,1715.924987, + 0.527987,0,-0.849253,-23.822213,-116.7892,1715.924987, + -0.973856,0,-0.227168,-42.055064,-116.7892,2417.446415, + -0.935939,0,-0.352162,-39.615003,-741.88772,2409.402612, + -0.986659,0,-0.162803,-42.055064,-741.90215,2417.446415, + -0.935939,0,-0.352162,-39.615003,-741.88772,2409.402612, + -0.973856,0,-0.227168,-42.055064,-116.7892,2417.446415, + -0.910825,0,-0.412792,-39.615003,-116.7892,2409.402612, + 0,0,1,-39.361125,-835.428664,2408.92764, + 0,0,1,39.361165,-741.420677,2408.92764, + 0,0,1,-39.361125,-741.886218,2408.92764, + 0,0,1,39.361165,-741.420677,2408.92764, + 0,0,1,-39.361125,-835.428664,2408.92764, + 0,0,1,39.361165,-835.428664,2408.92764, + 0.162803,0,-0.986659,8.365296,-116.7892,2383.756608, + 0.032813,0,-0.999462,0.00002,-858.151437,2382.9327, + -0.032813,0,-0.999462,0.00002,-116.7892,2382.9327, + 0.032813,0,-0.999462,0.00002,-858.151437,2382.9327, + 0.162803,0,-0.986659,8.365296,-116.7892,2383.756608, + 0.227168,0,-0.973856,8.365296,-857.431241,2383.756608, + -0.890977,-0.087754,0.445488,-717.191404,-70.07352,1614.76108, + -0.890977,-0.087754,0.445488,-758.547422,-116.7892,1522.846858, + -0.890977,-0.087754,0.445488,-712.590311,-116.7892,1614.76108, + -0.890977,-0.087754,0.445488,-758.547422,-116.7892,1522.846858, + -0.890977,-0.087754,0.445488,-717.191404,-70.07352,1614.76108, + -0.890977,-0.087754,0.445488,-763.148515,-70.07352,1522.846858, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-8.365325,-70.07352,1638.2173, + 0,1,0,-0.00005,-70.07352,1637.393379, + 0,1,0,-8.365325,-70.07352,1638.2173, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-16.409125,-70.07352,1640.657374, + 0,1,0,-16.409125,-70.07352,1640.657374, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-23.82233,-70.07352,1644.619831, + 0,1,0,-23.82233,-70.07352,1644.619831, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-30.320055,-70.07352,1649.952394, + 0,1,0,-30.320055,-70.07352,1649.952394, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-35.652597,-70.07352,1656.450137, + 0,1,0,-35.652597,-70.07352,1656.450137, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-39.615029,-70.07352,1663.863355, + 0,1,0,-39.615029,-70.07352,1663.863355, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-42.055077,-70.07352,1671.907163, + 0,1,0,-42.055077,-70.07352,1671.907163, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-42.878972,-70.07352,1680.27244, + 0,1,0,-42.878972,-70.07352,1680.27244, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-42.878972,-70.07352,1680.27244, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-42.05505,-70.07352,1688.637715, + 0,1,0,-42.05505,-70.07352,1688.637715, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-39.614976,-70.07352,1696.681514, + 0,1,0,-39.614976,-70.07352,1696.681514, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-35.65252,-70.07352,1704.09472, + 0,1,0,-35.65252,-70.07352,1704.09472, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-30.319956,-70.07352,1710.592445, + 0,1,0,-30.319956,-70.07352,1710.592445, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-23.822213,-70.07352,1715.924987, + 0,1,0,-23.822213,-70.07352,1715.924987, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-16.408995,-70.07352,1719.887419, + 0,1,0,-16.408995,-70.07352,1719.887419, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-42.878972,-70.07352,2035.2022, + 0,1,0,-16.408995,-70.07352,1719.887419, + 0,1,0,-42.878972,-70.07352,2035.2022, + 0,1,0,-42.055073,-70.07352,2026.836923, + 0,1,0,-16.408995,-70.07352,1719.887419, + 0,1,0,-42.055073,-70.07352,2026.836923, + 0,1,0,-8.365188,-70.07352,1722.327467, + 0,1,0,-8.365188,-70.07352,1722.327467, + 0,1,0,-42.055073,-70.07352,2026.836923, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,-42.055073,-70.07352,2026.836923, + 0,1,0,-39.615021,-70.07352,2018.793117, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,-39.615021,-70.07352,2018.793117, + 0,1,0,-35.652584,-70.07352,2011.379901, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,-35.652584,-70.07352,2011.379901, + 0,1,0,-30.320039,-70.07352,2004.882161, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,-30.320039,-70.07352,2004.882161, + 0,1,0,-23.82231,-70.07352,1999.549601, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,-23.82231,-70.07352,1999.549601, + 0,1,0,-16.409103,-70.07352,1995.587149, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,-16.409103,-70.07352,1995.587149, + 0,1,0,-8.365302,-70.07352,1993.147079, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,-8.365302,-70.07352,1993.147079, + 0,1,0,-0.000027,-70.07352,1992.323162, + 0,1,0,-42.878972,-70.07352,2035.2022, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-42.055055,-70.07352,2043.567475, + 0,1,0,-42.055055,-70.07352,2043.567475, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-39.614985,-70.07352,2051.611276, + 0,1,0,-39.614985,-70.07352,2051.611276, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-35.652533,-70.07352,2059.024483, + 0,1,0,-35.652533,-70.07352,2059.024483, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-30.319973,-70.07352,2065.522212, + 0,1,0,-30.319973,-70.07352,2065.522212, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-23.822233,-70.07352,2070.854758, + 0,1,0,-23.822233,-70.07352,2070.854758, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-16.409017,-70.07352,2074.817194, + 0,1,0,-16.409017,-70.07352,2074.817194, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-8.365211,-70.07352,2077.257246, + 0,1,0,-8.365211,-70.07352,2077.257246, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-39.615003,-70.07352,2409.402612, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,-39.615003,-70.07352,2409.402612, + 0,1,0,-35.652558,-70.07352,2401.9894, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,-35.652558,-70.07352,2401.9894, + 0,1,0,-30.320006,-70.07352,2395.491666, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,-30.320006,-70.07352,2395.491666, + 0,1,0,-23.822271,-70.07352,2390.159113, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,-23.822271,-70.07352,2390.159113, + 0,1,0,-16.40906,-70.07352,2386.196669, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,-16.40906,-70.07352,2386.196669, + 0,1,0,-8.365256,-70.07352,2383.756608, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,-8.365256,-70.07352,2383.756608, + 0,1,0,0.00002,-70.07352,2382.9327, + 0,1,0,-39.615003,-70.07352,2409.402612, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-42.055064,-70.07352,2417.446415, + 0,1,0,-42.055064,-70.07352,2417.446415, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-42.878972,-70.07352,2425.811691, + 0,1,0,-42.878972,-70.07352,2425.811691, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-42.055064,-70.07352,2434.176967, + 0,1,0,-42.055064,-70.07352,2434.176967, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-39.615003,-70.07352,2442.220771, + 0,1,0,-39.615003,-70.07352,2442.220771, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-35.652558,-70.07352,2449.633982, + 0,1,0,-35.652558,-70.07352,2449.633982, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-30.320006,-70.07352,2456.131717, + 0,1,0,-30.320006,-70.07352,2456.131717, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-23.822271,-70.07352,2461.464269, + 0,1,0,-23.822271,-70.07352,2461.464269, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-16.40906,-70.07352,2465.426714, + 0,1,0,-16.40906,-70.07352,2465.426714, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,-8.365256,-70.07352,2467.866775, + 0,1,0,-8.365256,-70.07352,2467.866775, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0,1,0,0.00002,-70.07352,2468.690683, + 0,1,0,-717.191404,-70.07352,1614.76108, + 0,1,0,763.148515,-70.07352,1522.846858, + 0,1,0,-763.148515,-70.07352,1522.846858, + 0,1,0,763.148515,-70.07352,1522.846858, + 0,1,0,-717.191404,-70.07352,1614.76108, + 0,1,0,717.537999,-70.07352,1614.067891, + 0,1,0,717.537999,-70.07352,1614.067891, + 0,1,0,-717.191404,-70.07352,1614.76108, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,-717.191404,-70.07352,1614.76108, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,8.365227,-70.07352,1638.217273, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,8.365227,-70.07352,1638.217273, + 0,1,0,16.409035,-70.07352,1640.657321, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,16.409035,-70.07352,1640.657321, + 0,1,0,23.822253,-70.07352,1644.619753, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,23.822253,-70.07352,1644.619753, + 0,1,0,30.319996,-70.07352,1649.952295, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,30.319996,-70.07352,1649.952295, + 0,1,0,35.652559,-70.07352,1656.450021, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,35.652559,-70.07352,1656.450021, + 0,1,0,39.615015,-70.07352,1663.863226, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,39.615015,-70.07352,1663.863226, + 0,1,0,42.05509,-70.07352,1671.907025, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,42.05509,-70.07352,1671.907025, + 0,1,0,42.879011,-70.07352,1680.2723, + 0,1,0,93.432274,-70.07352,1614.761079, + 0,1,0,42.879011,-70.07352,1680.2723, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,8.365227,-70.07352,1638.217273, + 0,1,0,-93.431364,-70.07352,1614.76108, + 0,1,0,-0.00005,-70.07352,1637.393379, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,42.879011,-70.07352,1680.2723, + 0,1,0,42.055117,-70.07352,1688.637578, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,42.055117,-70.07352,1688.637578, + 0,1,0,39.615069,-70.07352,1696.681385, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,39.615069,-70.07352,1696.681385, + 0,1,0,35.652637,-70.07352,1704.094603, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,35.652637,-70.07352,1704.094603, + 0,1,0,30.320095,-70.07352,1710.592346, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,30.320095,-70.07352,1710.592346, + 0,1,0,23.822369,-70.07352,1715.924909, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,23.822369,-70.07352,1715.924909, + 0,1,0,16.409164,-70.07352,1719.887366, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,16.409164,-70.07352,1719.887366, + 0,1,0,42.879011,-70.07352,2035.202107, + 0,1,0,42.879011,-70.07352,2035.202107, + 0,1,0,16.409164,-70.07352,1719.887366, + 0,1,0,42.055094,-70.07352,2026.836831, + 0,1,0,42.055094,-70.07352,2026.836831, + 0,1,0,16.409164,-70.07352,1719.887366, + 0,1,0,8.365365,-70.07352,1722.32744, + 0,1,0,42.055094,-70.07352,2026.836831, + 0,1,0,8.365365,-70.07352,1722.32744, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,42.055094,-70.07352,2026.836831, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,39.615024,-70.07352,2018.793031, + 0,1,0,39.615024,-70.07352,2018.793031, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,35.652572,-70.07352,2011.379823, + 0,1,0,35.652572,-70.07352,2011.379823, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,30.320012,-70.07352,2004.882095, + 0,1,0,30.320012,-70.07352,2004.882095, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,23.822272,-70.07352,1999.549549, + 0,1,0,23.822272,-70.07352,1999.549549, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,16.409056,-70.07352,1995.587113, + 0,1,0,16.409056,-70.07352,1995.587113, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,8.36525,-70.07352,1993.147061, + 0,1,0,8.36525,-70.07352,1993.147061, + 0,1,0,0.00009,-70.07352,1723.151361, + 0,1,0,-0.000027,-70.07352,1992.323162, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,42.879011,-70.07352,2035.202107, + 0,1,0,42.055112,-70.07352,2043.567384, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,42.055112,-70.07352,2043.567384, + 0,1,0,39.61506,-70.07352,2051.61119, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,39.61506,-70.07352,2051.61119, + 0,1,0,35.652624,-70.07352,2059.024406, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,35.652624,-70.07352,2059.024406, + 0,1,0,30.320078,-70.07352,2065.522146, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,30.320078,-70.07352,2065.522146, + 0,1,0,23.82235,-70.07352,2070.854706, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,23.82235,-70.07352,2070.854706, + 0,1,0,16.409142,-70.07352,2074.817158, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,16.409142,-70.07352,2074.817158, + 0,1,0,8.365342,-70.07352,2077.257228, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,8.365342,-70.07352,2077.257228, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,39.615042,-70.07352,2409.402612, + 0,1,0,39.615042,-70.07352,2409.402612, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,35.652598,-70.07352,2401.9894, + 0,1,0,35.652598,-70.07352,2401.9894, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,30.320045,-70.07352,2395.491666, + 0,1,0,30.320045,-70.07352,2395.491666, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,23.822311,-70.07352,2390.159113, + 0,1,0,23.822311,-70.07352,2390.159113, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,16.409099,-70.07352,2386.196669, + 0,1,0,16.409099,-70.07352,2386.196669, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,8.365296,-70.07352,2383.756608, + 0,1,0,8.365296,-70.07352,2383.756608, + 0,1,0,0.000066,-70.07352,2078.081145, + 0,1,0,0.00002,-70.07352,2382.9327, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,39.615042,-70.07352,2409.402612, + 0,1,0,42.055103,-70.07352,2417.446415, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,42.055103,-70.07352,2417.446415, + 0,1,0,42.879011,-70.07352,2425.811691, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,42.879011,-70.07352,2425.811691, + 0,1,0,42.055103,-70.07352,2434.176967, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,42.055103,-70.07352,2434.176967, + 0,1,0,39.615042,-70.07352,2442.220771, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,39.615042,-70.07352,2442.220771, + 0,1,0,35.652598,-70.07352,2449.633982, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,35.652598,-70.07352,2449.633982, + 0,1,0,30.320045,-70.07352,2456.131717, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,30.320045,-70.07352,2456.131717, + 0,1,0,23.822311,-70.07352,2461.464269, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,23.822311,-70.07352,2461.464269, + 0,1,0,16.409099,-70.07352,2465.426714, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,16.409099,-70.07352,2465.426714, + 0,1,0,8.365296,-70.07352,2467.866775, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,8.365296,-70.07352,2467.866775, + 0,1,0,0.00002,-70.07352,2468.690683, + 0,1,0,93.431356,-70.07352,2549.07468, + 0,1,0,0.00002,-70.07352,2468.690683, + 0,1,0,-93.431364,-70.07352,2549.07468, + 0.890977,-0.087754,0.445488,763.148515,-70.07352,1522.846858, + 0.890977,-0.087754,0.445488,712.934349,-116.7892,1614.073004, + 0.890977,-0.087754,0.445488,758.547422,-116.7892,1522.846858, + 0.890977,-0.087754,0.445488,712.934349,-116.7892,1614.073004, + 0.890977,-0.087754,0.445488,763.148515,-70.07352,1522.846858, + 0.890977,-0.087754,0.445488,717.537999,-70.07352,1614.067891, + -1,0,0,-42.878972,-116.7892,2425.811691, + -0.986659,0,-0.162803,-42.055064,-741.90215,2417.446415, + -1,0,0,-42.878972,-741.907022,2425.811691, + -0.986659,0,-0.162803,-42.055064,-741.90215,2417.446415, + -1,0,0,-42.878972,-116.7892,2425.811691, + -0.973856,0,-0.227168,-42.055064,-116.7892,2417.446415, + -0.352162,-0,0.935939,-16.40906,-741.750486,2465.426714, + -0.19509,-0,0.980785,-8.365256,-116.7892,2467.866775, + -0.412792,-0,0.910825,-16.40906,-116.7892,2465.426714, + -0.19509,-0,0.980785,-8.365256,-116.7892,2467.866775, + -0.352162,-0,0.935939,-16.40906,-741.750486,2465.426714, + -0.19509,0,0.980785,-8.365256,-741.702917,2467.866775, + 0,0,-1,763.148515,-70.07352,1522.846858, + 0,0,-1,-758.547422,-116.7892,1522.846858, + 0,0,-1,-763.148515,-70.07352,1522.846858, + 0,0,-1,-758.547422,-116.7892,1522.846858, + 0,0,-1,763.148515,-70.07352,1522.846858, + 0,0,-1,758.547422,-116.7892,1522.846858, + -0.582554,-0,-0.812792,-23.822271,-116.7892,2390.159113, + -0.683524,-0,-0.729928,-30.320006,-847.173358,2395.491666, + -0.729928,0,-0.683524,-30.320006,-116.7892,2395.491666, + -0.683524,-0,-0.729928,-30.320006,-847.173358,2395.491666, + -0.582554,-0,-0.812792,-23.822271,-116.7892,2390.159113, + -0.527988,-0,-0.849252,-23.822271,-851.834664,2390.159113, + 0.862796,0,-0.505553,35.652598,-116.7892,2401.9894, + 0.881921,-0,-0.471397,39.361165,-835.428664,2408.92764, + 0.812792,0,-0.582554,35.652598,-841.493539,2401.9894, + 0.881921,-0,-0.471397,39.361165,-835.428664,2408.92764, + 0.862796,0,-0.505553,35.652598,-116.7892,2401.9894, + 0.881921,0,-0.471397,39.361165,-741.420677,2408.92764, + 0.881921,0,-0.471397,39.361165,-741.420677,2408.92764, + 0.862796,0,-0.505553,35.652598,-116.7892,2401.9894, + 0.910825,0,-0.412792,39.615042,-741.419175,2409.402612, + 0.910825,0,-0.412792,39.615042,-741.419175,2409.402612, + 0.862796,0,-0.505553,35.652598,-116.7892,2401.9894, + 0.935939,0,-0.352162,39.615042,-116.7892,2409.402612, + -0.412792,-0,-0.910825,-16.40906,-116.7892,2386.196669, + -0.527988,-0,-0.849252,-23.822271,-851.834664,2390.159113, + -0.582554,-0,-0.812792,-23.822271,-116.7892,2390.159113, + -0.527988,-0,-0.849252,-23.822271,-851.834664,2390.159113, + -0.412792,-0,-0.910825,-16.40906,-116.7892,2386.196669, + -0.352162,-0,-0.935939,-16.40906,-855.298327,2386.196669, + 0.001111,-0,0.999999,712.934349,-116.7892,1614.073004, + 0.001111,-0,0.999999,93.432274,-70.07352,1614.761079, + 0.001111,0,0.999999,93.432274,-116.7892,1614.761079, + 0.001111,-0,0.999999,93.432274,-70.07352,1614.761079, + 0.001111,-0,0.999999,712.934349,-116.7892,1614.073004, + 0.001111,-0,0.999999,717.537999,-70.07352,1614.067891, + 0.812792,0,0.582554,35.652598,-741.442608,2449.633982, + 0.729928,0,0.683524,30.320045,-116.7892,2456.131717, + 0.683524,-0,0.729928,30.320045,-741.474143,2456.131717, + 0.729928,0,0.683524,30.320045,-116.7892,2456.131717, + 0.812792,0,0.582554,35.652598,-741.442608,2449.633982, + 0.849252,0,0.527988,35.652598,-116.7892,2449.633982, + -0.52799,0,-0.849251,23.822369,-70.07352,1715.924909, + -0.412794,0,-0.910824,16.409164,-116.7892,1719.887366, + -0.352164,0,-0.935938,16.409164,-70.07352,1719.887366, + -0.412794,0,-0.910824,16.409164,-116.7892,1719.887366, + -0.52799,0,-0.849251,23.822369,-70.07352,1715.924909, + -0.582555,0,-0.812791,23.822369,-116.7892,1715.924909, + -0.910824,0,0.412794,39.615015,-70.07352,1663.863226, + -0.849251,0,0.52799,35.652559,-116.7892,1656.450021, + -0.935938,0,0.352164,39.615015,-116.7892,1663.863226, + -0.849251,0,0.52799,35.652559,-116.7892,1656.450021, + -0.910824,0,0.412794,39.615015,-70.07352,1663.863226, + -0.812791,0,0.582555,35.652559,-70.07352,1656.450021, + -0.352164,0,-0.935938,16.409164,-70.07352,1719.887366, + -0.227169,0,-0.973855,8.365365,-116.7892,1722.32744, + -0.162805,0,-0.986658,8.365365,-70.07352,1722.32744, + -0.227169,0,-0.973855,8.365365,-116.7892,1722.32744, + -0.352164,0,-0.935938,16.409164,-70.07352,1719.887366, + -0.412794,0,-0.910824,16.409164,-116.7892,1719.887366, + 0.93594,0,0.352161,-39.615029,-70.07352,1663.863355, + 0.973856,0,0.227166,-42.055077,-116.7892,1671.907163, + 0.910826,0,0.412791,-39.615029,-116.7892,1663.863355, + 0.973856,0,0.227166,-42.055077,-116.7892,1671.907163, + 0.93594,0,0.352161,-39.615029,-70.07352,1663.863355, + 0.986659,0,0.162801,-42.055077,-70.07352,1671.907163, + -0.973856,0,-0.227168,-42.055064,0,2417.446415, + -0.935939,0,-0.352162,-39.615003,-70.07352,2409.402612, + -0.986659,0,-0.162803,-42.055064,-70.07352,2417.446415, + -0.935939,0,-0.352162,-39.615003,-70.07352,2409.402612, + -0.973856,0,-0.227168,-42.055064,0,2417.446415, + -0.910825,0,-0.412792,-39.615003,0,2409.402612, + -0.999462,0,-0.032813,-42.878972,0,2425.811691, + -0.986659,0,-0.162803,-42.055064,-70.07352,2417.446415, + -0.999462,0,0.032813,-42.878972,-70.07352,2425.811691, + -0.986659,0,-0.162803,-42.055064,-70.07352,2417.446415, + -0.999462,0,-0.032813,-42.878972,0,2425.811691, + -0.973856,0,-0.227168,-42.055064,0,2417.446415, + -0.412792,0,-0.910825,-16.40906,0,2386.196669, + -0.527988,0,-0.849252,-23.822271,-70.07352,2390.159113, + -0.582554,0,-0.812792,-23.822271,0,2390.159113, + -0.527988,0,-0.849252,-23.822271,-70.07352,2390.159113, + -0.412792,0,-0.910825,-16.40906,0,2386.196669, + -0.352162,0,-0.935939,-16.40906,-70.07352,2386.196669, + 0.352162,0,-0.935939,16.409099,0,2386.196669, + 0.227168,0,-0.973856,8.365296,-70.07352,2383.756608, + 0.162803,0,-0.986659,8.365296,0,2383.756608, + 0.227168,0,-0.973856,8.365296,-70.07352,2383.756608, + 0.352162,0,-0.935939,16.409099,0,2386.196669, + 0.412792,0,-0.910825,16.409099,-70.07352,2386.196669, + 0.527988,0,0.849252,23.822311,-70.07352,2461.464269, + 0.412792,0,0.910825,16.409099,0,2465.426714, + 0.352162,0,0.935939,16.409099,-70.07352,2465.426714, + 0.412792,0,0.910825,16.409099,0,2465.426714, + 0.527988,0,0.849252,23.822311,-70.07352,2461.464269, + 0.582554,0,0.812792,23.822311,0,2461.464269, + 0.582555,0,0.812791,-23.82233,-116.7892,1644.619831, + 0.707108,0,0.707106,-30.320055,-70.07352,1649.952394, + 0.707108,0,0.707106,-30.320055,-116.7892,1649.952394, + 0.707108,0,0.707106,-30.320055,-70.07352,1649.952394, + 0.582555,0,0.812791,-23.82233,-116.7892,1644.619831, + 0.52799,0,0.849251,-23.82233,-70.07352,1644.619831, + 0.812791,0,-0.582555,-35.65252,-70.07352,1704.09472, + 0.707106,0,-0.707108,-30.319956,-116.7892,1710.592445, + 0.849251,0,-0.52799,-35.65252,-116.7892,1704.09472, + 0.707106,0,-0.707108,-30.319956,-116.7892,1710.592445, + 0.812791,0,-0.582555,-35.65252,-70.07352,1704.09472, + 0.707106,0,-0.707108,-30.319956,-70.07352,1710.592445, + 0.227166,0,-0.973856,-8.365188,-70.07352,1722.327467, + 0.352161,0,-0.93594,-16.408995,-116.7892,1719.887419, + 0.412791,0,-0.910826,-16.408995,-70.07352,1719.887419, + 0.352161,0,-0.93594,-16.408995,-116.7892,1719.887419, + 0.227166,0,-0.973856,-8.365188,-70.07352,1722.327467, + 0.162801,0,-0.986659,-8.365188,-116.7892,1722.327467, + -0.527987,0,0.849253,23.822253,-116.7892,1644.619753, + -0.412791,0,0.910826,16.409035,-70.07352,1640.657321, + -0.352161,0,0.93594,16.409035,-116.7892,1640.657321, + -0.412791,0,0.910826,16.409035,-70.07352,1640.657321, + -0.527987,0,0.849253,23.822253,-116.7892,1644.619753, + -0.582553,0,0.812793,23.822253,-70.07352,1644.619753, + 0.986659,0,0.162801,-42.055077,-70.07352,1671.907163, + 0.999462,0,0.032811,-42.878972,-116.7892,1680.27244, + 0.973856,0,0.227166,-42.055077,-116.7892,1671.907163, + 0.999462,0,0.032811,-42.878972,-116.7892,1680.27244, + 0.986659,0,0.162801,-42.055077,-70.07352,1671.907163, + 0.999461,0,-0.032814,-42.878972,-70.07352,1680.27244, + -0.849253,0,-0.527987,35.652637,-70.07352,1704.094603, + -0.910826,0,-0.412791,39.615069,-116.7892,1696.681385, + -0.812793,0,-0.582553,35.652637,-116.7892,1704.094603, + -0.910826,0,-0.412791,39.615069,-116.7892,1696.681385, + -0.849253,0,-0.527987,35.652637,-70.07352,1704.094603, + -0.93594,0,-0.352161,39.615069,-70.07352,1696.681385, + -0.986659,0,-0.162801,42.055117,-70.07352,1688.637578, + -0.999462,0,-0.032811,42.879011,-116.7892,1680.2723, + -0.973856,0,-0.227166,42.055117,-116.7892,1688.637578, + -0.999462,0,-0.032811,42.879011,-116.7892,1680.2723, + -0.986659,0,-0.162801,42.055117,-70.07352,1688.637578, + -0.999461,0,0.032814,42.879011,-70.07352,1680.2723, + -0.986659,0,0.162803,-42.055064,-741.90215,2434.176967, + -1,0,0,-42.878972,-116.7892,2425.811691, + -1,0,0,-42.878972,-741.907022,2425.811691, + -1,0,0,-42.878972,-116.7892,2425.811691, + -0.986659,0,0.162803,-42.055064,-741.90215,2434.176967, + -0.973856,-0,0.227168,-42.055064,-116.7892,2434.176967, + 1,0,-0,42.879011,-741.399873,2425.811691, + 0.986659,0,0.162803,42.055103,-116.7892,2434.176967, + 0.973856,0,0.227168,42.055103,-741.404745,2434.176967, + 0.986659,0,0.162803,42.055103,-116.7892,2434.176967, + 1,0,-0,42.879011,-741.399873,2425.811691, + 1,0,-0,42.879011,-116.7892,2425.811691, + -0,0,1,0.00002,-741.653448,2468.690683, + -0.19509,-0,0.980785,-8.365256,-116.7892,2467.866775, + -0.19509,0,0.980785,-8.365256,-741.702917,2467.866775, + -0.19509,-0,0.980785,-8.365256,-116.7892,2467.866775, + -0,0,1,0.00002,-741.653448,2468.690683, + -0,-0,1,0.00002,-116.7892,2468.690683, + -0.527988,-0,0.849252,-23.822271,-741.794326,2461.464269, + -0.412792,-0,0.910825,-16.40906,-116.7892,2465.426714, + -0.582554,-0,0.812792,-23.822271,-116.7892,2461.464269, + -0.412792,-0,0.910825,-16.40906,-116.7892,2465.426714, + -0.527988,-0,0.849252,-23.822271,-741.794326,2461.464269, + -0.352162,-0,0.935939,-16.40906,-741.750486,2465.426714, + -0.582554,0,-0.812792,-23.822271,0,2390.159113, + -0.707107,0,-0.707107,-30.320006,-70.07352,2395.491666, + -0.707107,0,-0.707107,-30.320006,0,2395.491666, + -0.707107,0,-0.707107,-30.320006,-70.07352,2395.491666, + -0.582554,0,-0.812792,-23.822271,0,2390.159113, + -0.527988,0,-0.849252,-23.822271,-70.07352,2390.159113, + -0.986659,0,0.162803,-42.055064,0,2434.176967, + -0.999462,0,0.032813,-42.878972,-70.07352,2425.811691, + -0.973856,0,0.227168,-42.055064,-70.07352,2434.176967, + -0.999462,0,0.032813,-42.878972,-70.07352,2425.811691, + -0.986659,0,0.162803,-42.055064,0,2434.176967, + -0.999462,0,-0.032813,-42.878972,0,2425.811691, + 0.986659,0,-0.162803,42.055103,0,2417.446415, + 0.999462,0,-0.032813,42.879011,-70.07352,2425.811691, + 0.973856,0,-0.227168,42.055103,-70.07352,2417.446415, + 0.999462,0,-0.032813,42.879011,-70.07352,2425.811691, + 0.986659,0,-0.162803,42.055103,0,2417.446415, + 0.999462,0,0.032813,42.879011,0,2425.811691, + -0.032813,0,-0.999462,0.00002,0,2382.9327, + -0.162803,0,-0.986659,-8.365256,-70.07352,2383.756608, + -0.227168,0,-0.973856,-8.365256,0,2383.756608, + -0.162803,0,-0.986659,-8.365256,-70.07352,2383.756608, + -0.032813,0,-0.999462,0.00002,0,2382.9327, + 0.032813,0,-0.999462,0.00002,-70.07352,2382.9327, + -0.582554,0,0.812792,-23.822271,-70.07352,2461.464269, + -0.707107,0,0.707107,-30.320006,0,2456.131717, + -0.707107,0,0.707107,-30.320006,-70.07352,2456.131717, + -0.707107,0,0.707107,-30.320006,0,2456.131717, + -0.582554,0,0.812792,-23.822271,-70.07352,2461.464269, + -0.527988,0,0.849252,-23.822271,0,2461.464269, + 0.352162,0,0.935939,16.409099,-70.07352,2465.426714, + 0.227168,0,0.973856,8.365296,0,2467.866775, + 0.162803,0,0.986659,8.365296,-70.07352,2467.866775, + 0.227168,0,0.973856,8.365296,0,2467.866775, + 0.352162,0,0.935939,16.409099,-70.07352,2465.426714, + 0.412792,0,0.910825,16.409099,0,2465.426714, + -0.849252,-0,0.527988,-35.652558,-741.864287,2449.633982, + -0.910825,-0,0.412792,-39.615003,-116.7892,2442.220771, + -0.935939,-0,0.352162,-39.615003,-741.88772,2442.220771, + -0.910825,-0,0.412792,-39.615003,-116.7892,2442.220771, + -0.849252,-0,0.527988,-35.652558,-741.864287,2449.633982, + -0.812792,-0,0.582554,-35.652558,-116.7892,2449.633982, + -0.999461,0,0.032814,42.879011,-70.07352,2035.202107, + -0.986658,0,0.162804,42.055094,-116.7892,2026.836831, + -0.999462,0,-0.032812,42.879011,-116.7892,2035.202107, + -0.986658,0,0.162804,42.055094,-116.7892,2026.836831, + -0.999461,0,0.032814,42.879011,-70.07352,2035.202107, + -0.973855,0,0.227169,42.055094,-70.07352,2026.836831, + 0.986659,-0,-0.162803,42.055103,-116.7892,2417.446415, + 1,0,-0,42.879011,-741.399873,2425.811691, + 0.973856,0,-0.227168,42.055103,-741.404745,2417.446415, + 1,0,-0,42.879011,-741.399873,2425.811691, + 0.986659,-0,-0.162803,42.055103,-116.7892,2417.446415, + 1,0,-0,42.879011,-116.7892,2425.811691, + 0.582555,0,0.812791,-23.82231,-116.7892,1999.549601, + 0.707108,0,0.707106,-30.320039,-70.07352,2004.882161, + 0.707108,0,0.707106,-30.320039,-116.7892,2004.882161, + 0.707108,0,0.707106,-30.320039,-70.07352,2004.882161, + 0.582555,0,0.812791,-23.82231,-116.7892,1999.549601, + 0.527989,0,0.849251,-23.82231,-70.07352,1999.549601, + 0.707107,0,-0.707107,30.320045,0,2395.491666, + 0.582554,0,-0.812792,23.822311,-70.07352,2390.159113, + 0.527988,0,-0.849252,23.822311,0,2390.159113, + 0.582554,0,-0.812792,23.822311,-70.07352,2390.159113, + 0.707107,0,-0.707107,30.320045,0,2395.491666, + 0.707107,0,-0.707107,30.320045,-70.07352,2395.491666, + 0.849252,0,-0.527988,35.652598,0,2401.9894, + 0.910825,0,-0.412792,39.615042,-70.07352,2409.402612, + 0.812792,0,-0.582554,35.652598,-70.07352,2401.9894, + 0.910825,0,-0.412792,39.615042,-70.07352,2409.402612, + 0.849252,0,-0.527988,35.652598,0,2401.9894, + 0.935939,0,-0.352162,39.615042,0,2409.402612, + -0.162804,0,-0.986658,8.365342,-70.07352,2077.257228, + -0.032814,0,-0.999461,0.000066,-116.7892,2078.081145, + 0.032812,0,-0.999462,0.000066,-70.07352,2078.081145, + -0.032814,0,-0.999461,0.000066,-116.7892,2078.081145, + -0.162804,0,-0.986658,8.365342,-70.07352,2077.257228, + -0.227169,0,-0.973855,8.365342,-116.7892,2077.257228, + -0.973855,0,0.227169,42.055094,-70.07352,2026.836831, + -0.935939,0,0.352163,39.615024,-116.7892,2018.793031, + -0.986658,0,0.162804,42.055094,-116.7892,2026.836831, + -0.935939,0,0.352163,39.615024,-116.7892,2018.793031, + -0.973855,0,0.227169,42.055094,-70.07352,2026.836831, + -0.910825,0,0.412793,39.615024,-70.07352,2018.793031, + -0.707108,0,-0.707106,30.320095,-70.07352,1710.592346, + -0.582555,0,-0.812791,23.822369,-116.7892,1715.924909, + -0.52799,0,-0.849251,23.822369,-70.07352,1715.924909, + -0.582555,0,-0.812791,23.822369,-116.7892,1715.924909, + -0.707108,0,-0.707106,30.320095,-70.07352,1710.592346, + -0.707108,0,-0.707106,30.320095,-116.7892,1710.592346, + 0.412793,0,0.910825,-16.409103,-116.7892,1995.587149, + 0.527989,0,0.849251,-23.82231,-70.07352,1999.549601, + 0.582555,0,0.812791,-23.82231,-116.7892,1999.549601, + 0.527989,0,0.849251,-23.82231,-70.07352,1999.549601, + 0.412793,0,0.910825,-16.409103,-116.7892,1995.587149, + 0.352163,0,0.935939,-16.409103,-70.07352,1995.587149, + -0.812792,0,-0.582554,-35.652558,-841.493539,2401.9894, + -0.729928,0,-0.683524,-30.320006,-116.7892,2395.491666, + -0.683524,-0,-0.729928,-30.320006,-847.173358,2395.491666, + -0.729928,0,-0.683524,-30.320006,-116.7892,2395.491666, + -0.812792,0,-0.582554,-35.652558,-841.493539,2401.9894, + -0.85779,0,-0.514001,-35.652558,-116.7892,2401.9894, + 0,0,1,-712.590311,-116.7892,1614.76108, + 0,0,1,-93.431364,-70.07352,1614.76108, + 0,0,1,-717.191404,-70.07352,1614.76108, + 0,0,1,-93.431364,-70.07352,1614.76108, + 0,0,1,-712.590311,-116.7892,1614.76108, + 0,0,1,-93.431364,-116.7892,1614.76108, + 0.227168,0,0.973856,8.365296,-741.603978,2467.866775, + 0.382683,-0,0.92388,16.409099,-116.7892,2465.426714, + 0.162803,0,0.986659,8.365296,-116.7892,2467.866775, + 0.382683,-0,0.92388,16.409099,-116.7892,2465.426714, + 0.227168,0,0.973856,8.365296,-741.603978,2467.866775, + 0.382683,0,0.92388,16.409099,-741.556409,2465.426714, + 0.973855,0,-0.227169,-42.05505,-70.07352,1688.637715, + 0.935938,0,-0.352164,-39.614976,-116.7892,1696.681514, + 0.986658,0,-0.162805,-42.05505,-116.7892,1688.637715, + 0.935938,0,-0.352164,-39.614976,-116.7892,1696.681514, + 0.973855,0,-0.227169,-42.05505,-70.07352,1688.637715, + 0.910824,0,-0.412794,-39.614976,-70.07352,1696.681514, + -0.973855,0,0.227169,42.05509,-70.07352,1671.907025, + -0.935938,0,0.352164,39.615015,-116.7892,1663.863226, + -0.986658,0,0.162805,42.05509,-116.7892,1671.907025, + -0.935938,0,0.352164,39.615015,-116.7892,1663.863226, + -0.973855,0,0.227169,42.05509,-70.07352,1671.907025, + -0.910824,0,0.412794,39.615015,-70.07352,1663.863226, + -0.849252,0,0.527988,-35.652558,0,2449.633982, + -0.910825,0,0.412792,-39.615003,-70.07352,2442.220771, + -0.812792,0,0.582554,-35.652558,-70.07352,2449.633982, + -0.910825,0,0.412792,-39.615003,-70.07352,2442.220771, + -0.849252,0,0.527988,-35.652558,0,2449.633982, + -0.935939,0,0.352162,-39.615003,0,2442.220771, + -1,0,0,-93.431364,-70.07352,2549.07468, + -1,0,0,-93.431364,-116.7892,1614.76108, + -1,0,0,-93.431364,-116.7892,2549.07468, + -1,0,0,-93.431364,-116.7892,1614.76108, + -1,0,0,-93.431364,-70.07352,2549.07468, + -1,0,0,-93.431364,-70.07352,1614.76108, + 0.032812,0,-0.999462,0.000066,-70.07352,2078.081145, + 0.162802,0,-0.986659,-8.365211,-116.7892,2077.257246, + 0.227167,0,-0.973856,-8.365211,-70.07352,2077.257246, + 0.162802,0,-0.986659,-8.365211,-116.7892,2077.257246, + 0.032812,0,-0.999462,0.000066,-70.07352,2078.081145, + -0.032814,0,-0.999461,0.000066,-116.7892,2078.081145, + -0.707108,0,-0.707106,30.320078,-70.07352,2065.522146, + -0.582555,0,-0.812791,23.82235,-116.7892,2070.854706, + -0.527989,0,-0.849251,23.82235,-70.07352,2070.854706, + -0.582555,0,-0.812791,23.82235,-116.7892,2070.854706, + -0.707108,0,-0.707106,30.320078,-70.07352,2065.522146, + -0.707108,0,-0.707106,30.320078,-116.7892,2065.522146, + 0.412791,0,-0.910826,-16.409017,-70.07352,2074.817194, + 0.527987,0,-0.849252,-23.822233,-116.7892,2070.854758, + 0.582553,0,-0.812793,-23.822233,-70.07352,2070.854758, + 0.527987,0,-0.849252,-23.822233,-116.7892,2070.854758, + 0.412791,0,-0.910826,-16.409017,-70.07352,2074.817194, + 0.352161,0,-0.935939,-16.409017,-116.7892,2074.817194, + -0,0,1,0.00002,-741.653448,2468.690683, + 0.162803,0,0.986659,8.365296,-116.7892,2467.866775, + -0,-0,1,0.00002,-116.7892,2468.690683, + 0.162803,0,0.986659,8.365296,-116.7892,2467.866775, + -0,0,1,0.00002,-741.653448,2468.690683, + 0.227168,0,0.973856,8.365296,-741.603978,2467.866775, + -0.227168,0,-0.973856,-8.365256,0,2383.756608, + -0.352162,0,-0.935939,-16.40906,-70.07352,2386.196669, + -0.412792,0,-0.910825,-16.40906,0,2386.196669, + -0.352162,0,-0.935939,-16.40906,-70.07352,2386.196669, + -0.227168,0,-0.973856,-8.365256,0,2383.756608, + -0.162803,0,-0.986659,-8.365256,-70.07352,2383.756608, + 0.707107,0,-0.707107,30.320045,-116.7892,2395.491666, + 0.812792,0,-0.582554,35.652598,-841.493539,2401.9894, + 0.707107,0,-0.707107,30.320045,-847.173358,2395.491666, + 0.812792,0,-0.582554,35.652598,-841.493539,2401.9894, + 0.707107,0,-0.707107,30.320045,-116.7892,2395.491666, + 0.862796,0,-0.505553,35.652598,-116.7892,2401.9894, + -0.812791,0,0.582555,35.652572,-70.07352,2011.379823, + -0.707106,0,0.707108,30.320012,-116.7892,2004.882095, + -0.849251,0,0.527989,35.652572,-116.7892,2011.379823, + -0.707106,0,0.707108,30.320012,-116.7892,2004.882095, + -0.812791,0,0.582555,35.652572,-70.07352,2011.379823, + -0.707106,0,0.707108,30.320012,-70.07352,2004.882095, + 0.412794,0,0.910824,-16.409125,-116.7892,1640.657374, + 0.52799,0,0.849251,-23.82233,-70.07352,1644.619831, + 0.582555,0,0.812791,-23.82233,-116.7892,1644.619831, + 0.52799,0,0.849251,-23.82233,-70.07352,1644.619831, + 0.412794,0,0.910824,-16.409125,-116.7892,1640.657374, + 0.352164,0,0.935938,-16.409125,-70.07352,1640.657374, + 0.812792,0,0.582554,35.652598,0,2449.633982, + 0.707107,0,0.707107,30.320045,-70.07352,2456.131717, + 0.849252,0,0.527988,35.652598,-70.07352,2449.633982, + 0.707107,0,0.707107,30.320045,-70.07352,2456.131717, + 0.812792,0,0.582554,35.652598,0,2449.633982, + 0.707107,0,0.707107,30.320045,0,2456.131717, + 0.032814,0,0.999461,-0.000027,-116.7892,1992.323162, + 0.162804,0,0.986658,-8.365302,-70.07352,1993.147079, + 0.227169,0,0.973855,-8.365302,-116.7892,1993.147079, + 0.162804,0,0.986658,-8.365302,-70.07352,1993.147079, + 0.032814,0,0.999461,-0.000027,-116.7892,1992.323162, + -0.032812,0,0.999462,-0.000027,-70.07352,1992.323162, + -0.986659,0,-0.162802,42.055112,-70.07352,2043.567384, + -0.999462,0,-0.032812,42.879011,-116.7892,2035.202107, + -0.973856,0,-0.227167,42.055112,-116.7892,2043.567384, + -0.999462,0,-0.032812,42.879011,-116.7892,2035.202107, + -0.986659,0,-0.162802,42.055112,-70.07352,2043.567384, + -0.999461,0,0.032814,42.879011,-70.07352,2035.202107, + -0.162805,0,-0.986658,8.365365,-70.07352,1722.32744, + -0.032814,0,-0.999461,0.00009,-116.7892,1723.151361, + 0.032811,0,-0.999462,0.00009,-70.07352,1723.151361, + -0.032814,0,-0.999461,0.00009,-116.7892,1723.151361, + -0.162805,0,-0.986658,8.365365,-70.07352,1722.32744, + -0.227169,0,-0.973855,8.365365,-116.7892,1722.32744, + -0.032813,0,0.999462,0.00002,-70.07352,2468.690683, + -0.162803,0,0.986659,-8.365256,0,2467.866775, + -0.227168,0,0.973856,-8.365256,-70.07352,2467.866775, + -0.162803,0,0.986659,-8.365256,0,2467.866775, + -0.032813,0,0.999462,0.00002,-70.07352,2468.690683, + 0.032813,0,0.999462,0.00002,0,2468.690683, + -0.935939,-0,0.352162,-39.615003,-741.88772,2442.220771, + -0.973856,-0,0.227168,-42.055064,-116.7892,2434.176967, + -0.986659,0,0.162803,-42.055064,-741.90215,2434.176967, + -0.973856,-0,0.227168,-42.055064,-116.7892,2434.176967, + -0.935939,-0,0.352162,-39.615003,-741.88772,2442.220771, + -0.910825,-0,0.412792,-39.615003,-116.7892,2442.220771, + 0.032811,0,-0.999462,0.00009,-70.07352,1723.151361, + 0.162801,0,-0.986659,-8.365188,-116.7892,1722.327467, + 0.227166,0,-0.973856,-8.365188,-70.07352,1722.327467, + 0.162801,0,-0.986659,-8.365188,-116.7892,1722.327467, + 0.032811,0,-0.999462,0.00009,-70.07352,1723.151361, + -0.032814,0,-0.999461,0.00009,-116.7892,1723.151361, + 0.227169,0,0.973855,-8.365325,-116.7892,1638.2173, + 0.352164,0,0.935938,-16.409125,-70.07352,1640.657374, + 0.412794,0,0.910824,-16.409125,-116.7892,1640.657374, + 0.352164,0,0.935938,-16.409125,-70.07352,1640.657374, + 0.227169,0,0.973855,-8.365325,-116.7892,1638.2173, + 0.162805,0,0.986658,-8.365325,-70.07352,1638.2173, + 0,0,1,93.431356,-116.7892,2549.07468, + 0,0,1,-93.431364,-70.07352,2549.07468, + 0,0,1,-93.431364,-116.7892,2549.07468, + 0,0,1,-93.431364,-70.07352,2549.07468, + 0,0,1,93.431356,-116.7892,2549.07468, + 0,0,1,93.431356,-70.07352,2549.07468, + 0.973856,0,0.227168,42.055103,-741.404745,2434.176967, + 0.935939,0,0.352162,39.615042,-116.7892,2442.220771, + 0.910825,0,0.412792,39.615042,-741.419175,2442.220771, + 0.935939,0,0.352162,39.615042,-116.7892,2442.220771, + 0.973856,0,0.227168,42.055103,-741.404745,2434.176967, + 0.986659,0,0.162803,42.055103,-116.7892,2434.176967, + -0.227168,-0,-0.973856,-8.365256,-116.7892,2383.756608, + -0.352162,-0,-0.935939,-16.40906,-855.298327,2386.196669, + -0.412792,-0,-0.910825,-16.40906,-116.7892,2386.196669, + -0.352162,-0,-0.935939,-16.40906,-855.298327,2386.196669, + -0.227168,-0,-0.973856,-8.365256,-116.7892,2383.756608, + -0.162803,0,-0.986659,-8.365256,-857.431241,2383.756608, + -0.352161,0,0.935939,16.409056,-116.7892,1995.587113, + -0.227167,0,0.973856,8.36525,-70.07352,1993.147061, + -0.162802,0,0.986659,8.36525,-116.7892,1993.147061, + -0.227167,0,0.973856,8.36525,-70.07352,1993.147061, + -0.352161,0,0.935939,16.409056,-116.7892,1995.587113, + -0.412791,0,0.910826,16.409056,-70.07352,1995.587113, + -0.999461,0,0.032814,42.879011,-70.07352,1680.2723, + -0.986658,0,0.162805,42.05509,-116.7892,1671.907025, + -0.999462,0,-0.032811,42.879011,-116.7892,1680.2723, + -0.986658,0,0.162805,42.05509,-116.7892,1671.907025, + -0.999461,0,0.032814,42.879011,-70.07352,1680.2723, + -0.973855,0,0.227169,42.05509,-70.07352,1671.907025, + -0.93594,0,-0.352161,39.615069,-70.07352,1696.681385, + -0.973856,0,-0.227166,42.055117,-116.7892,1688.637578, + -0.910826,0,-0.412791,39.615069,-116.7892,1696.681385, + -0.973856,0,-0.227166,42.055117,-116.7892,1688.637578, + -0.93594,0,-0.352161,39.615069,-70.07352,1696.681385, + -0.986659,0,-0.162801,42.055117,-70.07352,1688.637578, + 0.849253,0,0.527987,-35.652597,-70.07352,1656.450137, + 0.910826,0,0.412791,-39.615029,-116.7892,1663.863355, + 0.812793,0,0.582553,-35.652597,-116.7892,1656.450137, + 0.910826,0,0.412791,-39.615029,-116.7892,1663.863355, + 0.849253,0,0.527987,-35.652597,-70.07352,1656.450137, + 0.93594,0,0.352161,-39.615029,-70.07352,1663.863355, + -0.935939,0,-0.352161,39.61506,-70.07352,2051.61119, + -0.973856,0,-0.227167,42.055112,-116.7892,2043.567384, + -0.910826,0,-0.412791,39.61506,-116.7892,2051.61119, + -0.973856,0,-0.227167,42.055112,-116.7892,2043.567384, + -0.935939,0,-0.352161,39.61506,-70.07352,2051.61119, + -0.986659,0,-0.162802,42.055112,-70.07352,2043.567384, + -0,-0.752904,0.658131,8.365296,-857.431241,2383.756608, + -0,-0.752904,0.658131,-8.365256,-857.431241,2383.756608, + -0,-0.752904,0.658131,0.00002,-858.151437,2382.9327, + -0,-0.752904,0.658131,-8.365256,-857.431241,2383.756608, + -0,-0.752904,0.658131,8.365296,-857.431241,2383.756608, + -0,-0.752904,0.658131,16.409099,-855.298327,2386.196669, + -0,-0.752904,0.658131,-8.365256,-857.431241,2383.756608, + -0,-0.752904,0.658131,16.409099,-855.298327,2386.196669, + -0,-0.752904,0.658131,-16.40906,-855.298327,2386.196669, + -0,-0.752904,0.658131,-16.40906,-855.298327,2386.196669, + -0,-0.752904,0.658131,16.409099,-855.298327,2386.196669, + -0,-0.752904,0.658131,23.822311,-851.834664,2390.159113, + -0,-0.752904,0.658131,-16.40906,-855.298327,2386.196669, + -0,-0.752904,0.658131,23.822311,-851.834664,2390.159113, + 0,-0.752904,0.658131,-23.822271,-851.834664,2390.159113, + 0,-0.752904,0.658131,-23.822271,-851.834664,2390.159113, + -0,-0.752904,0.658131,23.822311,-851.834664,2390.159113, + 0,-0.752904,0.658131,30.320045,-847.173358,2395.491666, + 0,-0.752904,0.658131,-23.822271,-851.834664,2390.159113, + 0,-0.752904,0.658131,30.320045,-847.173358,2395.491666, + -0,-0.752904,0.658131,-30.320006,-847.173358,2395.491666, + -0,-0.752904,0.658131,-30.320006,-847.173358,2395.491666, + 0,-0.752904,0.658131,30.320045,-847.173358,2395.491666, + -0,-0.752904,0.658131,35.652598,-841.493539,2401.9894, + -0,-0.752904,0.658131,-30.320006,-847.173358,2395.491666, + -0,-0.752904,0.658131,35.652598,-841.493539,2401.9894, + -0,-0.752904,0.658131,-35.652558,-841.493539,2401.9894, + -0,-0.752904,0.658131,-35.652558,-841.493539,2401.9894, + -0,-0.752904,0.658131,35.652598,-841.493539,2401.9894, + -0,-0.752904,0.658131,39.361165,-835.428664,2408.92764, + -0,-0.752904,0.658131,-35.652558,-841.493539,2401.9894, + -0,-0.752904,0.658131,39.361165,-835.428664,2408.92764, + 0,-0.752904,0.658131,-39.361125,-835.428664,2408.92764, + 0.352162,0,-0.935939,16.409099,-116.7892,2386.196669, + 0.227168,0,-0.973856,8.365296,-857.431241,2383.756608, + 0.162803,0,-0.986659,8.365296,-116.7892,2383.756608, + 0.227168,0,-0.973856,8.365296,-857.431241,2383.756608, + 0.352162,0,-0.935939,16.409099,-116.7892,2386.196669, + 0.412792,0,-0.910825,16.409099,-855.298327,2386.196669, + -0.707107,-0,0.707107,-30.320006,-741.832752,2456.131717, + -0.582554,-0,0.812792,-23.822271,-116.7892,2461.464269, + -0.707107,-0,0.707107,-30.320006,-116.7892,2456.131717, + -0.582554,-0,0.812792,-23.822271,-116.7892,2461.464269, + -0.707107,-0,0.707107,-30.320006,-741.832752,2456.131717, + -0.527988,-0,0.849252,-23.822271,-741.794326,2461.464269, + 1,0,0.000001,93.432274,-70.07352,1614.761079, + 1,0,0.000001,93.431356,-116.7892,2549.07468, + 1,0,0.000001,93.432274,-116.7892,1614.761079, + 1,0,0.000001,93.431356,-116.7892,2549.07468, + 1,0,0.000001,93.432274,-70.07352,1614.761079, + 1,0,0.000001,93.431356,-70.07352,2549.07468, + -0.707107,-0,0.707107,-30.320006,-741.832752,2456.131717, + -0.812792,-0,0.582554,-35.652558,-116.7892,2449.633982, + -0.849252,-0,0.527988,-35.652558,-741.864287,2449.633982, + -0.812792,-0,0.582554,-35.652558,-116.7892,2449.633982, + -0.707107,-0,0.707107,-30.320006,-741.832752,2456.131717, + -0.707107,-0,0.707107,-30.320006,-116.7892,2456.131717, + 0.527988,0,-0.849252,23.822311,-116.7892,2390.159113, + 0.412792,0,-0.910825,16.409099,-855.298327,2386.196669, + 0.352162,0,-0.935939,16.409099,-116.7892,2386.196669, + 0.412792,0,-0.910825,16.409099,-855.298327,2386.196669, + 0.527988,0,-0.849252,23.822311,-116.7892,2390.159113, + 0.582554,0,-0.812792,23.822311,-851.834664,2390.159113, + -0.707108,0,-0.707106,30.320078,-70.07352,2065.522146, + -0.812793,0,-0.582553,35.652624,-116.7892,2059.024406, + -0.707108,0,-0.707106,30.320078,-116.7892,2065.522146, + -0.812793,0,-0.582553,35.652624,-116.7892,2059.024406, + -0.707108,0,-0.707106,30.320078,-70.07352,2065.522146, + -0.849252,0,-0.527987,35.652624,-70.07352,2059.024406, + -0.352161,0,0.93594,16.409035,-116.7892,1640.657321, + -0.227166,0,0.973856,8.365227,-70.07352,1638.217273, + -0.162801,0,0.986659,8.365227,-116.7892,1638.217273, + -0.227166,0,0.973856,8.365227,-70.07352,1638.217273, + -0.352161,0,0.93594,16.409035,-116.7892,1640.657321, + -0.412791,0,0.910826,16.409035,-70.07352,1640.657321, + 0.935939,0,-0.352162,39.615042,0,2409.402612, + 0.973856,0,-0.227168,42.055103,-70.07352,2417.446415, + 0.910825,0,-0.412792,39.615042,-70.07352,2409.402612, + 0.973856,0,-0.227168,42.055103,-70.07352,2417.446415, + 0.935939,0,-0.352162,39.615042,0,2409.402612, + 0.986659,0,-0.162803,42.055103,0,2417.446415, + 0.005914,-0.999983,0,39.361165,-741.420677,2408.92764, + 0.005914,-0.999983,0,-39.615003,-741.88772,2409.402612, + 0.005914,-0.999983,0,-39.361125,-741.886218,2408.92764, + 0.005914,-0.999983,0,-39.615003,-741.88772,2409.402612, + 0.005914,-0.999983,0,39.361165,-741.420677,2408.92764, + 0.005914,-0.999983,-0,39.615042,-741.419175,2409.402612, + 0.005914,-0.999983,0,-39.615003,-741.88772,2409.402612, + 0.005914,-0.999983,-0,39.615042,-741.419175,2409.402612, + 0.005914,-0.999983,-0,-42.055064,-741.90215,2417.446415, + 0.005914,-0.999983,-0,-42.055064,-741.90215,2417.446415, + 0.005914,-0.999983,-0,39.615042,-741.419175,2409.402612, + 0.005914,-0.999983,0,42.055103,-741.404745,2417.446415, + 0.005914,-0.999983,-0,-42.055064,-741.90215,2417.446415, + 0.005914,-0.999983,0,42.055103,-741.404745,2417.446415, + 0.005914,-0.999983,0,42.879011,-741.399873,2425.811691, + 0.005914,-0.999983,-0,-42.055064,-741.90215,2417.446415, + 0.005914,-0.999983,0,42.879011,-741.399873,2425.811691, + 0.005914,-0.999983,0,-42.878972,-741.907022,2425.811691, + 0.005914,-0.999983,0,-42.878972,-741.907022,2425.811691, + 0.005914,-0.999983,0,42.879011,-741.399873,2425.811691, + 0.005914,-0.999983,-0,42.055103,-741.404745,2434.176967, + 0.005914,-0.999983,0,-42.878972,-741.907022,2425.811691, + 0.005914,-0.999983,-0,42.055103,-741.404745,2434.176967, + 0.005914,-0.999983,-0,-42.055064,-741.90215,2434.176967, + 0.005914,-0.999983,-0,-42.055064,-741.90215,2434.176967, + 0.005914,-0.999983,-0,42.055103,-741.404745,2434.176967, + 0.005914,-0.999983,0,39.615042,-741.419175,2442.220771, + 0.005914,-0.999983,-0,-42.055064,-741.90215,2434.176967, + 0.005914,-0.999983,0,39.615042,-741.419175,2442.220771, + 0.005914,-0.999983,-0,-39.615003,-741.88772,2442.220771, + 0.005914,-0.999983,-0,-39.615003,-741.88772,2442.220771, + 0.005914,-0.999983,0,39.615042,-741.419175,2442.220771, + 0.005914,-0.999983,-0,35.652598,-741.442608,2449.633982, + 0.005914,-0.999983,-0,-39.615003,-741.88772,2442.220771, + 0.005914,-0.999983,-0,35.652598,-741.442608,2449.633982, + 0.005914,-0.999983,0,-35.652558,-741.864287,2449.633982, + 0.005914,-0.999983,0,-35.652558,-741.864287,2449.633982, + 0.005914,-0.999983,-0,35.652598,-741.442608,2449.633982, + 0.005914,-0.999983,0,30.320045,-741.474143,2456.131717, + 0.005914,-0.999983,0,-35.652558,-741.864287,2449.633982, + 0.005914,-0.999983,0,30.320045,-741.474143,2456.131717, + 0.005914,-0.999983,-0,-30.320006,-741.832752,2456.131717, + 0.005914,-0.999983,-0,-30.320006,-741.832752,2456.131717, + 0.005914,-0.999983,0,30.320045,-741.474143,2456.131717, + 0.005914,-0.999983,0,23.822311,-741.512569,2461.464269, + 0.005914,-0.999983,-0,-30.320006,-741.832752,2456.131717, + 0.005914,-0.999983,0,23.822311,-741.512569,2461.464269, + 0.005914,-0.999983,-0,-23.822271,-741.794326,2461.464269, + 0.005914,-0.999983,-0,-23.822271,-741.794326,2461.464269, + 0.005914,-0.999983,0,23.822311,-741.512569,2461.464269, + 0.005914,-0.999983,0,-16.40906,-741.750486,2465.426714, + 0.005914,-0.999983,0,-16.40906,-741.750486,2465.426714, + 0.005914,-0.999983,0,23.822311,-741.512569,2461.464269, + 0.005914,-0.999983,0,16.409099,-741.556409,2465.426714, + 0.005914,-0.999983,0,-16.40906,-741.750486,2465.426714, + 0.005914,-0.999983,0,16.409099,-741.556409,2465.426714, + 0.005914,-0.999983,0,-8.365256,-741.702917,2467.866775, + 0.005914,-0.999983,0,-8.365256,-741.702917,2467.866775, + 0.005914,-0.999983,0,16.409099,-741.556409,2465.426714, + 0.005914,-0.999983,0,8.365296,-741.603978,2467.866775, + 0.005914,-0.999983,0,-8.365256,-741.702917,2467.866775, + 0.005914,-0.999983,0,8.365296,-741.603978,2467.866775, + 0.005914,-0.999983,0,0.00002,-741.653448,2468.690683, + 0.162803,0,0.986659,8.365296,-70.07352,2467.866775, + 0.032813,0,0.999462,0.00002,0,2468.690683, + -0.032813,0,0.999462,0.00002,-70.07352,2468.690683, + 0.032813,0,0.999462,0.00002,0,2468.690683, + 0.162803,0,0.986659,8.365296,-70.07352,2467.866775, + 0.227168,0,0.973856,8.365296,0,2467.866775, + -0.910825,0,0.412793,39.615024,-70.07352,2018.793031, + -0.849251,0,0.527989,35.652572,-116.7892,2011.379823, + -0.935939,0,0.352163,39.615024,-116.7892,2018.793031, + -0.849251,0,0.527989,35.652572,-116.7892,2011.379823, + -0.910825,0,0.412793,39.615024,-70.07352,2018.793031, + -0.812791,0,0.582555,35.652572,-70.07352,2011.379823, + -0.527987,0,0.849252,23.822272,-116.7892,1999.549549, + -0.412791,0,0.910826,16.409056,-70.07352,1995.587113, + -0.352161,0,0.935939,16.409056,-116.7892,1995.587113, + -0.412791,0,0.910826,16.409056,-70.07352,1995.587113, + -0.527987,0,0.849252,23.822272,-116.7892,1999.549549, + -0.582553,0,0.812793,23.822272,-70.07352,1999.549549, + 0.999461,0,-0.032814,-42.878972,-70.07352,1680.27244, + 0.986658,0,-0.162805,-42.05505,-116.7892,1688.637715, + 0.999462,0,0.032811,-42.878972,-116.7892,1680.27244, + 0.986658,0,-0.162805,-42.05505,-116.7892,1688.637715, + 0.999461,0,-0.032814,-42.878972,-70.07352,1680.27244, + 0.973855,0,-0.227169,-42.05505,-70.07352,1688.637715, + -0.812792,0,-0.582554,-35.652558,0,2401.9894, + -0.707107,0,-0.707107,-30.320006,-70.07352,2395.491666, + -0.849252,0,-0.527988,-35.652558,-70.07352,2401.9894, + -0.707107,0,-0.707107,-30.320006,-70.07352,2395.491666, + -0.812792,0,-0.582554,-35.652558,0,2401.9894, + -0.707107,0,-0.707107,-30.320006,0,2395.491666, + 0.707107,0,-0.707107,30.320045,-116.7892,2395.491666, + 0.582554,0,-0.812792,23.822311,-851.834664,2390.159113, + 0.527988,0,-0.849252,23.822311,-116.7892,2390.159113, + 0.582554,0,-0.812792,23.822311,-851.834664,2390.159113, + 0.707107,0,-0.707107,30.320045,-116.7892,2395.491666, + 0.707107,0,-0.707107,30.320045,-847.173358,2395.491666, + -0.910825,0,-0.412792,-39.615003,-116.7892,2409.402612, + -0.881921,0,-0.471397,-39.361125,-741.886218,2408.92764, + -0.935939,0,-0.352162,-39.615003,-741.88772,2409.402612, + -0.881921,-0,-0.471397,-39.361125,-835.428664,2408.92764, + -0.85779,0,-0.514001,-35.652558,-116.7892,2401.9894, + -0.812792,0,-0.582554,-35.652558,-841.493539,2401.9894, + -0.85779,0,-0.514001,-35.652558,-116.7892,2401.9894, + -0.881921,-0,-0.471397,-39.361125,-835.428664,2408.92764, + -0.881921,0,-0.471397,-39.361125,-741.886218,2408.92764, + -0.85779,0,-0.514001,-35.652558,-116.7892,2401.9894, + -0.881921,0,-0.471397,-39.361125,-741.886218,2408.92764, + -0.910825,0,-0.412792,-39.615003,-116.7892,2409.402612, + 0.162803,0,-0.986659,8.365296,0,2383.756608, + 0.032813,0,-0.999462,0.00002,-70.07352,2382.9327, + -0.032813,0,-0.999462,0.00002,0,2382.9327, + 0.032813,0,-0.999462,0.00002,-70.07352,2382.9327, + 0.162803,0,-0.986659,8.365296,0,2383.756608, + 0.227168,0,-0.973856,8.365296,-70.07352,2383.756608, + 0.032814,0,0.999461,-0.00005,-116.7892,1637.393379, + 0.162805,0,0.986658,-8.365325,-70.07352,1638.2173, + 0.227169,0,0.973855,-8.365325,-116.7892,1638.2173, + 0.162805,0,0.986658,-8.365325,-70.07352,1638.2173, + 0.032814,0,0.999461,-0.00005,-116.7892,1637.393379, + -0.032811,0,0.999462,-0.00005,-70.07352,1637.393379, + 0.227169,0,0.973855,-8.365302,-116.7892,1993.147079, + 0.352163,0,0.935939,-16.409103,-70.07352,1995.587149, + 0.412793,0,0.910825,-16.409103,-116.7892,1995.587149, + 0.352163,0,0.935939,-16.409103,-70.07352,1995.587149, + 0.227169,0,0.973855,-8.365302,-116.7892,1993.147079, + 0.162804,0,0.986658,-8.365302,-70.07352,1993.147079, + -0.352163,0,-0.935939,16.409142,-70.07352,2074.817158, + -0.227169,0,-0.973855,8.365342,-116.7892,2077.257228, + -0.162804,0,-0.986658,8.365342,-70.07352,2077.257228, + -0.227169,0,-0.973855,8.365342,-116.7892,2077.257228, + -0.352163,0,-0.935939,16.409142,-70.07352,2074.817158, + -0.412793,0,-0.910825,16.409142,-116.7892,2074.817158, + 0.707107,0,-0.707107,30.320045,0,2395.491666, + 0.812792,0,-0.582554,35.652598,-70.07352,2401.9894, + 0.707107,0,-0.707107,30.320045,-70.07352,2395.491666, + 0.812792,0,-0.582554,35.652598,-70.07352,2401.9894, + 0.707107,0,-0.707107,30.320045,0,2395.491666, + 0.849252,0,-0.527988,35.652598,0,2401.9894, + -0.227168,0,0.973856,-8.365256,-70.07352,2467.866775, + -0.352162,0,0.935939,-16.40906,0,2465.426714, + -0.412792,0,0.910825,-16.40906,-70.07352,2465.426714, + -0.352162,0,0.935939,-16.40906,0,2465.426714, + -0.227168,0,0.973856,-8.365256,-70.07352,2467.866775, + -0.162803,0,0.986659,-8.365256,0,2467.866775, + -0.527989,0,-0.849251,23.82235,-70.07352,2070.854706, + -0.412793,0,-0.910825,16.409142,-116.7892,2074.817158, + -0.352163,0,-0.935939,16.409142,-70.07352,2074.817158, + -0.412793,0,-0.910825,16.409142,-116.7892,2074.817158, + -0.527989,0,-0.849251,23.82235,-70.07352,2070.854706, + -0.582555,0,-0.812791,23.82235,-116.7892,2070.854706, + -0.707106,0,0.707108,30.320012,-116.7892,2004.882095, + -0.582553,0,0.812793,23.822272,-70.07352,1999.549549, + -0.527987,0,0.849252,23.822272,-116.7892,1999.549549, + -0.582553,0,0.812793,23.822272,-70.07352,1999.549549, + -0.707106,0,0.707108,30.320012,-116.7892,2004.882095, + -0.707106,0,0.707108,30.320012,-70.07352,2004.882095, + 0.707107,0,0.707107,30.320045,-70.07352,2456.131717, + 0.582554,0,0.812792,23.822311,0,2461.464269, + 0.527988,0,0.849252,23.822311,-70.07352,2461.464269, + 0.582554,0,0.812792,23.822311,0,2461.464269, + 0.707107,0,0.707107,30.320045,-70.07352,2456.131717, + 0.707107,0,0.707107,30.320045,0,2456.131717, + -0.412792,0,0.910825,-16.40906,-70.07352,2465.426714, + -0.527988,0,0.849252,-23.822271,0,2461.464269, + -0.582554,0,0.812792,-23.822271,-70.07352,2461.464269, + -0.527988,0,0.849252,-23.822271,0,2461.464269, + -0.412792,0,0.910825,-16.40906,-70.07352,2465.426714, + -0.352162,0,0.935939,-16.40906,0,2465.426714, + -0.162802,0,0.986659,8.36525,-116.7892,1993.147061, + -0.032812,0,0.999462,-0.000027,-70.07352,1992.323162, + 0.032814,0,0.999461,-0.000027,-116.7892,1992.323162, + -0.032812,0,0.999462,-0.000027,-70.07352,1992.323162, + -0.162802,0,0.986659,8.36525,-116.7892,1993.147061, + -0.227167,0,0.973856,8.36525,-70.07352,1993.147061, + 0.527988,0,-0.849252,23.822311,0,2390.159113, + 0.412792,0,-0.910825,16.409099,-70.07352,2386.196669, + 0.352162,0,-0.935939,16.409099,0,2386.196669, + 0.412792,0,-0.910825,16.409099,-70.07352,2386.196669, + 0.527988,0,-0.849252,23.822311,0,2390.159113, + 0.582554,0,-0.812792,23.822311,-70.07352,2390.159113, + -0.812791,0,0.582555,35.652559,-70.07352,1656.450021, + -0.707106,0,0.707108,30.319996,-116.7892,1649.952295, + -0.849251,0,0.52799,35.652559,-116.7892,1656.450021, + -0.707106,0,0.707108,30.319996,-116.7892,1649.952295, + -0.812791,0,0.582555,35.652559,-70.07352,1656.450021, + -0.707106,0,0.707108,30.319996,-70.07352,1649.952295, + 0.910824,0,-0.412794,-39.614976,-70.07352,1696.681514, + 0.849251,0,-0.52799,-35.65252,-116.7892,1704.09472, + 0.935938,0,-0.352164,-39.614976,-116.7892,1696.681514, + 0.849251,0,-0.52799,-35.65252,-116.7892,1704.09472, + 0.910824,0,-0.412794,-39.614976,-70.07352,1696.681514, + 0.812791,0,-0.582555,-35.65252,-70.07352,1704.09472, + 0.935939,0,-0.352162,39.615042,-116.7892,2409.402612, + 0.973856,0,-0.227168,42.055103,-741.404745,2417.446415, + 0.910825,0,-0.412792,39.615042,-741.419175,2409.402612, + 0.973856,0,-0.227168,42.055103,-741.404745,2417.446415, + 0.935939,0,-0.352162,39.615042,-116.7892,2409.402612, + 0.986659,-0,-0.162803,42.055103,-116.7892,2417.446415, + -0.707107,0,0.707107,-30.320006,0,2456.131717, + -0.812792,0,0.582554,-35.652558,-70.07352,2449.633982, + -0.707107,0,0.707107,-30.320006,-70.07352,2456.131717, + -0.812792,0,0.582554,-35.652558,-70.07352,2449.633982, + -0.707107,0,0.707107,-30.320006,0,2456.131717, + -0.849252,0,0.527988,-35.652558,0,2449.633982, + 0.910825,0,0.412792,39.615042,0,2442.220771, + 0.849252,0,0.527988,35.652598,-70.07352,2449.633982, + 0.935939,0,0.352162,39.615042,-70.07352,2442.220771, + 0.849252,0,0.527988,35.652598,-70.07352,2449.633982, + 0.910825,0,0.412792,39.615042,0,2442.220771, + 0.812792,0,0.582554,35.652598,0,2449.633982, + 0.527988,-0,0.849252,23.822311,-741.512569,2461.464269, + 0.382683,-0,0.92388,16.409099,-116.7892,2465.426714, + 0.382683,0,0.92388,16.409099,-741.556409,2465.426714, + 0.382683,-0,0.92388,16.409099,-116.7892,2465.426714, + 0.527988,-0,0.849252,23.822311,-741.512569,2461.464269, + 0.582554,-0,0.812792,23.822311,-116.7892,2461.464269, + 0.910825,0,0.412792,39.615042,-741.419175,2442.220771, + 0.849252,0,0.527988,35.652598,-116.7892,2449.633982, + 0.812792,0,0.582554,35.652598,-741.442608,2449.633982, + 0.849252,0,0.527988,35.652598,-116.7892,2449.633982, + 0.910825,0,0.412792,39.615042,-741.419175,2442.220771, + 0.935939,0,0.352162,39.615042,-116.7892,2442.220771, + 0.973855,0,-0.227169,-42.055055,-70.07352,2043.567475, + 0.935939,0,-0.352163,-39.614985,-116.7892,2051.611276, + 0.986658,0,-0.162804,-42.055055,-116.7892,2043.567475, + 0.935939,0,-0.352163,-39.614985,-116.7892,2051.611276, + 0.973855,0,-0.227169,-42.055055,-70.07352,2043.567475, + 0.910825,0,-0.412793,-39.614985,-70.07352,2051.611276, + -0.910825,0,-0.412792,-39.615003,0,2409.402612, + -0.849252,0,-0.527988,-35.652558,-70.07352,2401.9894, + -0.935939,0,-0.352162,-39.615003,-70.07352,2409.402612, + -0.849252,0,-0.527988,-35.652558,-70.07352,2401.9894, + -0.910825,0,-0.412792,-39.615003,0,2409.402612, + -0.812792,0,-0.582554,-35.652558,0,2401.9894, + 0.227167,0,-0.973856,-8.365211,-70.07352,2077.257246, + 0.352161,0,-0.935939,-16.409017,-116.7892,2074.817194, + 0.412791,0,-0.910826,-16.409017,-70.07352,2074.817194, + 0.352161,0,-0.935939,-16.409017,-116.7892,2074.817194, + 0.227167,0,-0.973856,-8.365211,-70.07352,2077.257246, + 0.162802,0,-0.986659,-8.365211,-116.7892,2077.257246, + -0.849252,0,-0.527987,35.652624,-70.07352,2059.024406, + -0.910826,0,-0.412791,39.61506,-116.7892,2051.61119, + -0.812793,0,-0.582553,35.652624,-116.7892,2059.024406, + -0.910826,0,-0.412791,39.61506,-116.7892,2051.61119, + -0.849252,0,-0.527987,35.652624,-70.07352,2059.024406, + -0.935939,0,-0.352161,39.61506,-70.07352,2051.61119, + 0.812791,0,-0.582555,-35.652533,-70.07352,2059.024483, + 0.707106,0,-0.707108,-30.319973,-116.7892,2065.522212, + 0.849251,0,-0.527989,-35.652533,-116.7892,2059.024483, + 0.707106,0,-0.707108,-30.319973,-116.7892,2065.522212, + 0.812791,0,-0.582555,-35.652533,-70.07352,2059.024483, + 0.707106,0,-0.707108,-30.319973,-70.07352,2065.522212, + -0.707108,0,-0.707106,30.320095,-70.07352,1710.592346, + -0.812793,0,-0.582553,35.652637,-116.7892,1704.094603, + -0.707108,0,-0.707106,30.320095,-116.7892,1710.592346, + -0.812793,0,-0.582553,35.652637,-116.7892,1704.094603, + -0.707108,0,-0.707106,30.320095,-70.07352,1710.592346, + -0.849253,0,-0.527987,35.652637,-70.07352,1704.094603, + 0.910825,0,-0.412793,-39.614985,-70.07352,2051.611276, + 0.849251,0,-0.527989,-35.652533,-116.7892,2059.024483, + 0.935939,0,-0.352163,-39.614985,-116.7892,2051.611276, + 0.849251,0,-0.527989,-35.652533,-116.7892,2059.024483, + 0.910825,0,-0.412793,-39.614985,-70.07352,2051.611276, + 0.812791,0,-0.582555,-35.652533,-70.07352,2059.024483, + 0.582553,0,-0.812793,-23.822233,-70.07352,2070.854758, + 0.707106,0,-0.707108,-30.319973,-116.7892,2065.522212, + 0.707106,0,-0.707108,-30.319973,-70.07352,2065.522212, + 0.707106,0,-0.707108,-30.319973,-116.7892,2065.522212, + 0.582553,0,-0.812793,-23.822233,-70.07352,2070.854758, + 0.527987,0,-0.849252,-23.822233,-116.7892,2070.854758, + 0.707108,0,0.707106,-30.320039,-70.07352,2004.882161, + 0.812793,0,0.582553,-35.652584,-116.7892,2011.379901, + 0.707108,0,0.707106,-30.320039,-116.7892,2004.882161, + 0.812793,0,0.582553,-35.652584,-116.7892,2011.379901, + 0.707108,0,0.707106,-30.320039,-70.07352,2004.882161, + 0.849252,0,0.527987,-35.652584,-70.07352,2011.379901, + 0.935939,0,0.352161,-39.615021,-70.07352,2018.793117, + 0.973856,0,0.227167,-42.055073,-116.7892,2026.836923, + 0.910826,0,0.412791,-39.615021,-116.7892,2018.793117, + 0.973856,0,0.227167,-42.055073,-116.7892,2026.836923, + 0.935939,0,0.352161,-39.615021,-70.07352,2018.793117, + 0.986659,0,0.162802,-42.055073,-70.07352,2026.836923, + 0.986659,0,0.162802,-42.055073,-70.07352,2026.836923, + 0.999462,0,0.032812,-42.878972,-116.7892,2035.2022, + 0.973856,0,0.227167,-42.055073,-116.7892,2026.836923, + 0.999462,0,0.032812,-42.878972,-116.7892,2035.2022, + 0.986659,0,0.162802,-42.055073,-70.07352,2026.836923, + 0.999461,0,-0.032814,-42.878972,-70.07352,2035.2022, + 0.707108,0,0.707106,-30.320055,-70.07352,1649.952394, + 0.812793,0,0.582553,-35.652597,-116.7892,1656.450137, + 0.707108,0,0.707106,-30.320055,-116.7892,1649.952394, + 0.812793,0,0.582553,-35.652597,-116.7892,1656.450137, + 0.707108,0,0.707106,-30.320055,-70.07352,1649.952394, + 0.849253,0,0.527987,-35.652597,-70.07352,1656.450137, + 0.683524,-0,0.729928,30.320045,-741.474143,2456.131717, + 0.582554,-0,0.812792,23.822311,-116.7892,2461.464269, + 0.527988,-0,0.849252,23.822311,-741.512569,2461.464269, + 0.582554,-0,0.812792,23.822311,-116.7892,2461.464269, + 0.683524,-0,0.729928,30.320045,-741.474143,2456.131717, + 0.729928,0,0.683524,30.320045,-116.7892,2456.131717, + -0.162801,0,0.986659,8.365227,-116.7892,1638.217273, + -0.032811,0,0.999462,-0.00005,-70.07352,1637.393379, + 0.032814,0,0.999461,-0.00005,-116.7892,1637.393379, + -0.032811,0,0.999462,-0.00005,-70.07352,1637.393379, + -0.162801,0,0.986659,8.365227,-116.7892,1638.217273, + -0.227166,0,0.973856,8.365227,-70.07352,1638.217273, + -0.935939,0,0.352162,-39.615003,0,2442.220771, + -0.973856,0,0.227168,-42.055064,-70.07352,2434.176967, + -0.910825,0,0.412792,-39.615003,-70.07352,2442.220771, + -0.973856,0,0.227168,-42.055064,-70.07352,2434.176967, + -0.935939,0,0.352162,-39.615003,0,2442.220771, + -0.986659,0,0.162803,-42.055064,0,2434.176967, + -0.707106,0,0.707108,30.319996,-116.7892,1649.952295, + -0.582553,0,0.812793,23.822253,-70.07352,1644.619753, + -0.527987,0,0.849253,23.822253,-116.7892,1644.619753, + -0.582553,0,0.812793,23.822253,-70.07352,1644.619753, + -0.707106,0,0.707108,30.319996,-116.7892,1649.952295, + -0.707106,0,0.707108,30.319996,-70.07352,1649.952295, + -0.032813,0,-0.999462,0.00002,-116.7892,2382.9327, + -0.162803,0,-0.986659,-8.365256,-857.431241,2383.756608, + -0.227168,-0,-0.973856,-8.365256,-116.7892,2383.756608, + -0.162803,0,-0.986659,-8.365256,-857.431241,2383.756608, + -0.032813,0,-0.999462,0.00002,-116.7892,2382.9327, + 0.032813,0,-0.999462,0.00002,-858.151437,2382.9327, + 0.999462,0,0.032813,42.879011,0,2425.811691, + 0.986659,0,0.162803,42.055103,-70.07352,2434.176967, + 0.999462,0,-0.032813,42.879011,-70.07352,2425.811691, + 0.986659,0,0.162803,42.055103,-70.07352,2434.176967, + 0.999462,0,0.032813,42.879011,0,2425.811691, + 0.973856,0,0.227168,42.055103,0,2434.176967, + 0.973856,0,0.227168,42.055103,0,2434.176967, + 0.935939,0,0.352162,39.615042,-70.07352,2442.220771, + 0.986659,0,0.162803,42.055103,-70.07352,2434.176967, + 0.935939,0,0.352162,39.615042,-70.07352,2442.220771, + 0.973856,0,0.227168,42.055103,0,2434.176967, + 0.910825,0,0.412792,39.615042,0,2442.220771, + 0.849252,0,0.527987,-35.652584,-70.07352,2011.379901, + 0.910826,0,0.412791,-39.615021,-116.7892,2018.793117, + 0.812793,0,0.582553,-35.652584,-116.7892,2011.379901, + 0.910826,0,0.412791,-39.615021,-116.7892,2018.793117, + 0.849252,0,0.527987,-35.652584,-70.07352,2011.379901, + 0.935939,0,0.352161,-39.615021,-70.07352,2018.793117, + 0.999461,0,-0.032814,-42.878972,-70.07352,2035.2022, + 0.986658,0,-0.162804,-42.055055,-116.7892,2043.567475, + 0.999462,0,0.032812,-42.878972,-116.7892,2035.2022, + 0.986658,0,-0.162804,-42.055055,-116.7892,2043.567475, + 0.999461,0,-0.032814,-42.878972,-70.07352,2035.2022, + 0.973855,0,-0.227169,-42.055055,-70.07352,2043.567475 +}; +static const struct gllist robot_gearbox_half_frame = { GL_N3F_V3F, GL_TRIANGLES, 1578, robot_gearbox_half_data, 0 }; +const struct gllist *robot_gearbox_half = &robot_gearbox_half_frame; + +static const float robot_hand_half_data[] = { + -0.418515,-0.90821,0,1034.126632,-1016.895232,2093.596753, + -0.476936,-0.878938,0,993.755282,-994.9886,1976.807553, + -0.358044,-0.933705,0,1034.126632,-1016.895232,1976.807553, + -0.476936,-0.878938,0,993.755282,-994.9886,1976.807553, + -0.418515,-0.90821,0,1034.126632,-1016.895232,2093.596753, + -0.476936,-0.878938,0,993.755282,-994.9886,2093.596753, + 0.878938,-0.476936,0,1351.758968,-887.662995,1976.807553, + 0.845913,-0.533321,0,1329.088262,-929.442444,2093.596753, + 0.809111,-0.587656,0,1329.088262,-929.442444,1976.807553, + 0.845913,-0.533321,0,1329.088262,-929.442444,2093.596753, + 0.878938,-0.476936,0,1351.758968,-887.662995,1976.807553, + 0.878938,-0.476936,0,1351.758968,-887.662995,2093.596753, + 0.702644,-0.711542,0,1298.7024,-965.996278,2093.596753, + 0.577428,-0.816441,0,1261.769095,-995.919752,1976.807553, + 0.702644,-0.711542,0,1298.7024,-965.996278,1976.807553, + 0.577428,-0.816441,0,1261.769095,-995.919752,1976.807553, + 0.702644,-0.711542,0,1298.7024,-965.996278,2093.596753, + 0.522634,-0.852557,0,1261.769095,-995.919752,2093.596753, + 0,0,-1,993.755282,-887.662995,1976.807553, + 0,0,-1,1034.126632,-1016.895232,1976.807553, + 0,0,-1,993.755282,-994.9886,1976.807553, + 0,0,-1,1034.126632,-1016.895232,1976.807553, + 0,0,-1,993.755282,-887.662995,1976.807553, + 0,0,-1,1351.758968,-887.662995,1976.807553, + 0,0,-1,1034.126632,-1016.895232,1976.807553, + 0,0,-1,1351.758968,-887.662995,1976.807553, + 0,0,-1,1079.526136,-1030.979562,1976.807553, + 0,0,-1,1079.526136,-1030.979562,1976.807553, + 0,0,-1,1351.758968,-887.662995,1976.807553, + 0,0,-1,1126.801018,-1035.936261,1976.807553, + 0,0,-1,1126.801018,-1035.936261,1976.807553, + 0,0,-1,1351.758968,-887.662995,1976.807553, + 0,0,-1,1174.13453,-1031.574846,1976.807553, + 0,0,-1,1174.13453,-1031.574846,1976.807553, + 0,0,-1,1351.758968,-887.662995,1976.807553, + 0,0,-1,1219.707673,-1018.062925,1976.807553, + 0,0,-1,1219.707673,-1018.062925,1976.807553, + 0,0,-1,1351.758968,-887.662995,1976.807553, + 0,0,-1,1261.769095,-995.919752,1976.807553, + 0,0,-1,1261.769095,-995.919752,1976.807553, + 0,0,-1,1351.758968,-887.662995,1976.807553, + 0,0,-1,1298.7024,-965.996278,1976.807553, + 0,0,-1,1298.7024,-965.996278,1976.807553, + 0,0,-1,1351.758968,-887.662995,1976.807553, + 0,0,-1,1329.088262,-929.442444,1976.807553, + 0,0,1,1034.126632,-1016.895232,2093.596753, + 0,0,1,993.755282,-887.662995,2093.596753, + 0,0,1,993.755282,-994.9886,2093.596753, + 0,0,1,993.755282,-887.662995,2093.596753, + 0,0,1,1034.126632,-1016.895232,2093.596753, + 0,0,1,1351.758968,-887.662995,2093.596753, + 0,0,1,1351.758968,-887.662995,2093.596753, + 0,0,1,1034.126632,-1016.895232,2093.596753, + 0,0,1,1079.526136,-1030.979562,2093.596753, + 0,0,1,1351.758968,-887.662995,2093.596753, + 0,0,1,1079.526136,-1030.979562,2093.596753, + 0,0,1,1126.801018,-1035.936261,2093.596753, + 0,0,1,1351.758968,-887.662995,2093.596753, + 0,0,1,1126.801018,-1035.936261,2093.596753, + 0,0,1,1174.13453,-1031.574846,2093.596753, + 0,0,1,1351.758968,-887.662995,2093.596753, + 0,0,1,1174.13453,-1031.574846,2093.596753, + 0,0,1,1219.707673,-1018.062925,2093.596753, + 0,0,1,1351.758968,-887.662995,2093.596753, + 0,0,1,1219.707673,-1018.062925,2093.596753, + 0,0,1,1261.769095,-995.919752,2093.596753, + 0,0,1,1351.758968,-887.662995,2093.596753, + 0,0,1,1261.769095,-995.919752,2093.596753, + 0,0,1,1298.7024,-965.996278,2093.596753, + 0,0,1,1351.758968,-887.662995,2093.596753, + 0,0,1,1298.7024,-965.996278,2093.596753, + 0,0,1,1329.088262,-929.442444,2093.596753, + -0,1,0,993.755282,-887.662995,2093.596753, + -0,1,0,1351.758968,-887.662995,1976.807553, + -0,1,0,993.755282,-887.662995,1976.807553, + -0,1,0,1351.758968,-887.662995,1976.807553, + -0,1,0,993.755282,-887.662995,2093.596753, + -0,1,0,1351.758968,-887.662995,2093.596753, + 0.809111,-0.587656,0,1329.088262,-929.442444,1976.807553, + 0.702644,-0.711542,0,1298.7024,-965.996278,2093.596753, + 0.702644,-0.711542,0,1298.7024,-965.996278,1976.807553, + 0.702644,-0.711542,0,1298.7024,-965.996278,2093.596753, + 0.809111,-0.587656,0,1329.088262,-929.442444,1976.807553, + 0.845913,-0.533321,0,1329.088262,-929.442444,2093.596753, + -0.039101,-0.999235,0,1126.801018,-1035.936261,2093.596753, + -0.169008,-0.985615,0,1079.526136,-1030.979562,1976.807553, + 0.026524,-0.999648,0,1126.801018,-1035.936261,1976.807553, + -0.169008,-0.985615,0,1079.526136,-1030.979562,1976.807553, + -0.039101,-0.999235,0,1126.801018,-1035.936261,2093.596753, + -0.233291,-0.972407,0,1079.526136,-1030.979562,2093.596753, + 0.156592,-0.987663,0,1174.13453,-1031.574846,2093.596753, + 0.026524,-0.999648,0,1126.801018,-1035.936261,1976.807553, + 0.221036,-0.975266,0,1174.13453,-1031.574846,1976.807553, + 0.026524,-0.999648,0,1126.801018,-1035.936261,1976.807553, + 0.156592,-0.987663,0,1174.13453,-1031.574846,2093.596753, + -0.039101,-0.999235,0,1126.801018,-1035.936261,2093.596753, + -0.233291,-0.972407,0,1079.526136,-1030.979562,2093.596753, + -0.358044,-0.933705,0,1034.126632,-1016.895232,1976.807553, + -0.169008,-0.985615,0,1079.526136,-1030.979562,1976.807553, + -0.358044,-0.933705,0,1034.126632,-1016.895232,1976.807553, + -0.233291,-0.972407,0,1079.526136,-1030.979562,2093.596753, + -0.418515,-0.90821,0,1034.126632,-1016.895232,2093.596753, + 0.346266,-0.938136,0,1219.707673,-1018.062925,2093.596753, + 0.221036,-0.975266,0,1174.13453,-1031.574846,1976.807553, + 0.407053,-0.913404,0,1219.707673,-1018.062925,1976.807553, + 0.221036,-0.975266,0,1174.13453,-1031.574846,1976.807553, + 0.346266,-0.938136,0,1219.707673,-1018.062925,2093.596753, + 0.156592,-0.987663,0,1174.13453,-1031.574846,2093.596753, + 0.522634,-0.852557,0,1261.769095,-995.919752,2093.596753, + 0.407053,-0.913404,0,1219.707673,-1018.062925,1976.807553, + 0.577428,-0.816441,0,1261.769095,-995.919752,1976.807553, + 0.407053,-0.913404,0,1219.707673,-1018.062925,1976.807553, + 0.522634,-0.852557,0,1261.769095,-995.919752,2093.596753, + 0.346266,-0.938136,0,1219.707673,-1018.062925,2093.596753 +}; +static const struct gllist robot_hand_half_frame = { GL_N3F_V3F, GL_TRIANGLES, 114, robot_hand_half_data, 0 }; +const struct gllist *robot_hand_half = &robot_hand_half_frame; + +static const float robot_leg_half_data[] = { + -0.935939,0,-0.352162,166.455213,-280.29408,1639.761005, + -0.973856,0,-0.227168,176.700984,-186.86272,1605.985223, + -0.986659,0,-0.162803,176.700984,-280.29408,1605.985223, + -0.973856,0,-0.227168,176.700984,-186.86272,1605.985223, + -0.935939,0,-0.352162,166.455213,-280.29408,1639.761005, + -0.910825,0,-0.412792,166.455213,-186.86272,1639.761005, + -0.83147,0,-0.55557,149.816983,-280.29408,1670.888943, + -0.910825,0,-0.412792,166.455213,-186.86272,1639.761005, + -0.935939,0,-0.352162,166.455213,-280.29408,1639.761005, + -0.910825,0,-0.412792,166.455213,-186.86272,1639.761005, + -0.83147,0,-0.55557,149.816983,-280.29408,1670.888943, + -0.83147,0,-0.55557,149.816983,-186.86272,1670.888943, + 1,-0,0,93.530885,-186.86272,242.726639, + 1,-0,0,93.530885,-280.29408,1315.222366, + 1,-0,0,93.530885,-280.29408,242.726639, + 1,-0,0,93.530885,-280.29408,1315.222366, + 1,-0,0,93.530885,-186.86272,242.726639, + 1,-0,0,93.530885,-186.86272,1315.222366, + -0.582554,0,0.812792,100.141826,-280.29408,1421.155065, + -0.707107,0,0.707107,127.425692,-186.86272,1443.546356, + -0.527988,0,0.849252,100.141826,-186.86272,1421.155065, + -0.707107,0,0.707107,127.425692,-186.86272,1443.546356, + -0.582554,0,0.812792,100.141826,-280.29408,1421.155065, + -0.707107,0,0.707107,127.425692,-280.29408,1443.546356, + -0.615705,0.787976,-0,653.291518,-646.340639,5.83946, + -0.559296,0.828968,-0,642.023926,-654.528574,-0, + -0.530018,0.847987,-0,642.023926,-654.528574,5.83946, + -0.559296,0.828968,-0,642.023926,-654.528574,-0, + -0.615705,0.787976,-0,653.291518,-646.340639,5.83946, + -0.642837,0.766003,-0,653.291518,-646.340639,-0, + -0.83147,0,-0.55557,149.816983,-280.29408,1670.888943, + -0.729928,0,-0.683524,127.425692,-186.86272,1698.17281, + -0.83147,0,-0.55557,149.816983,-186.86272,1670.888943, + -0.729928,0,-0.683524,127.425692,-186.86272,1698.17281, + -0.83147,0,-0.55557,149.816983,-280.29408,1670.888943, + -0.683524,0,-0.729928,127.425692,-280.29408,1698.17281, + 0,1,0,806.270901,56.185652,23.357838, + 0,1,0,847.545902,56.185652,0, + 0,1,0,806.270901,56.185652,0, + 0,1,0,847.545902,56.185652,0, + 0,1,0,806.270901,56.185652,23.357838, + 0,1,0,847.545902,56.185652,23.357838, + 0.487279,-0.526963,0.696326,461.27,-697.739849,192.761586, + 0.603343,-0.550894,0.576621,464.090792,-720.287768,170.665181, + 0.603343,-0.467182,0.646311,464.09079,-696.627201,191.294034, + 0.603343,-0.550894,0.576621,464.090792,-720.287768,170.665181, + 0.487279,-0.526963,0.696326,461.27,-697.739849,192.761586, + 0.487279,-0.616933,0.618023,461.270002,-721.590015,171.967428, + 0.998111,-0.031311,0.052854,793.410423,-566.321374,23.357838, + 0.991932,-0.07777,0.100113,792.007218,-582.090797,40.223697, + 0.998111,-0.038222,0.048094,793.309566,-569.30368,23.357838, + 0.991932,-0.07777,0.100113,792.007218,-582.090797,40.223697, + 0.998111,-0.031311,0.052854,793.410423,-566.321374,23.357838, + 0.991932,-0.063402,0.109777,792.007217,-577.494024,43.23773, + 0.127347,-0.864568,0.486113,624.955342,-738.83011,109.90761, + 0.030867,-0.796473,0.603886,599.602156,-724.524748,134.576836, + 0.030867,-0.871333,0.489721,599.602151,-740.19647,110.675522, + 0.030867,-0.796473,0.603886,599.602156,-724.524748,134.576836, + 0.127347,-0.864568,0.486113,624.955342,-738.83011,109.90761, + 0.127347,-0.790262,0.59939,624.955347,-723.275771,133.6299, + -0.285905,0.891387,-0.351693,436.335613,-749.104397,83.53758, + -0.415875,0.883495,-0.215602,439.690597,-756.366969,56.464997, + -0.285905,0.930996,-0.226946,436.335601,-757.591911,56.762987, + -0.415875,0.883495,-0.215602,439.690597,-756.366969,56.464997, + -0.285905,0.891387,-0.351693,436.335613,-749.104397,83.53758, + -0.415875,0.845875,-0.333982,439.690608,-747.931487,83.075452, + -0.415875,0.845875,-0.333982,439.690608,-747.931487,83.075452, + -0.537771,0.818998,-0.200111,442.839466,-754.702001,56.059962, + -0.415875,0.883495,-0.215602,439.690597,-756.366969,56.464997, + -0.537771,0.818998,-0.200111,442.839466,-754.702001,56.059962, + -0.415875,0.845875,-0.333982,439.690608,-747.931487,83.075452, + -0.537771,0.78409,-0.309846,442.839477,-746.337241,82.447316, + 0.361665,-0.92741,0.095445,458.222215,-789.666464,31.875739, + 0.229025,-0.94575,0.230443,455.006085,-785.239687,63.48879, + 0.229024,-0.96833,0.09942,455.006069,-790.65817,31.977188, + 0.229025,-0.94575,0.230443,455.006085,-785.239687,63.48879, + 0.361665,-0.92741,0.095445,458.222215,-789.666464,31.875739, + 0.361665,-0.905753,0.220929,458.222231,-784.271055,63.253152, + 0,1,0,764.9959,-186.86272,23.357838, + 0,1,0,0.001765,-186.86272,5.83946, + 0,1,0,0.001765,-186.86272,23.357838, + 0,1,0,0.001765,-186.86272,5.83946, + 0,1,0,764.9959,-186.86272,23.357838, + 0,1,0,764.9959,-186.86272,5.83946, + 0.932875,-0.177759,0.313282,472.107204,-665.162054,199.228412, + 0.874212,-0.294445,0.386077,470.677524,-692.04293,185.247507, + 0.932875,-0.218791,0.286137,472.107209,-690.197308,182.813182, + 0.874212,-0.294445,0.386077,470.677524,-692.04293,185.247507, + 0.932875,-0.177759,0.313282,472.107204,-665.162054,199.228412, + 0.874212,-0.239089,0.422598,470.677518,-666.658744,201.891525, + -0.022507,0.01679,-0.999606,602.133251,-548.673148,186.220487, + 0,0,-1,454.66772,-186.86272,186.220487, + -0.030004,0,-0.99955,602.133251,-186.86272,186.220487, + 0,0,-1,454.66772,-186.86272,186.220487, + -0.022507,0.01679,-0.999606,602.133251,-548.673148,186.220487, + -0,0.022395,-0.999749,454.66772,-548.673192,186.220487, + 0.381503,-0.21794,0.898308,673.957358,-603.792753,197.311473, + 0.499663,-0.316836,0.806196,696.758793,-625.025898,178.836737, + 0.499663,-0.204023,0.84185,696.758783,-601.14038,186.408417, + 0.499663,-0.316836,0.806196,696.758793,-625.025898,178.836737, + 0.381503,-0.21794,0.898308,673.957358,-603.792753,197.311473, + 0.381503,-0.338316,0.860231,673.957369,-629.139245,189.276665, + 0,-0.016797,0.999859,473.71772,-549.195746,217.326639, + 0.020529,0,0.999789,599.602099,-186.86272,217.326639, + 0,0,1,473.71772,-186.86272,217.326639, + 0.020529,0,0.999789,599.602099,-186.86272,217.326639, + 0,-0.016797,0.999859,473.71772,-549.195746,217.326639, + 0.041063,-0.016783,0.999016,599.602099,-549.195708,217.326639, + 0,-1,-0,93.530885,-280.29408,242.726639, + 0,-1,-0,0.112465,-280.29408,1390.81149, + 0,-1,-0,0.000488,-280.29408,242.726639, + 0,-1,-0,0.112465,-280.29408,1390.81149, + 0,-1,-0,93.530885,-280.29408,242.726639, + 0,-1,-0,35.238106,-280.29408,1394.271064, + 0,-1,-0,35.238106,-280.29408,1394.271064, + 0,-1,-0,93.530885,-280.29408,242.726639, + 0,-1,-0,69.013887,-280.29408,1404.516835, + 0,-1,-0,69.013887,-280.29408,1404.516835, + 0,-1,-0,93.530885,-280.29408,242.726639, + 0,-1,-0,93.530885,-280.29408,1315.222366, + 0,-1,-0,69.013887,-280.29408,1404.516835, + 0,-1,-0,93.530885,-280.29408,1315.222366, + 0,-1,-0,100.141826,-280.29408,1421.155065, + 0,-1,-0,100.141826,-280.29408,1421.155065, + 0,-1,-0,93.530885,-280.29408,1315.222366, + 0,-1,-0,221.73981,-280.29408,1435.598634, + 0,-1,-0,100.141826,-280.29408,1421.155065, + 0,-1,-0,221.73981,-280.29408,1435.598634, + 0,-1,0,127.425692,-280.29408,1443.546356, + 0,-1,0,127.425692,-280.29408,1443.546356, + 0,-1,-0,221.73981,-280.29408,1435.598634, + 0,-1,0,149.816983,-280.29408,1470.830222, + 0,-1,0,149.816983,-280.29408,1470.830222, + 0,-1,-0,221.73981,-280.29408,1435.598634, + 0,-1,0,166.455213,-280.29408,1501.958161, + 0,-1,0,166.455213,-280.29408,1501.958161, + 0,-1,-0,221.73981,-280.29408,1435.598634, + 0,-1,0,176.700984,-280.29408,1535.733942, + 0,-1,0,176.700984,-280.29408,1535.733942, + 0,-1,-0,221.73981,-280.29408,1435.598634, + 0,-1,0,180.160558,-280.29408,1570.859583, + 0,-1,0,180.160558,-280.29408,1570.859583, + 0,-1,-0,221.73981,-280.29408,1435.598634, + 0,-1,0,180.185724,-280.29408,1903.252111, + 0,-1,0,35.243015,-280.29408,2079.865312, + 0,-1,0,0.179984,-280.29408,2125.502553, + 0,-1,0,0.112465,-280.29408,2083.325369, + 0,-1,0,0.179984,-280.29408,2125.502553, + 0,-1,0,35.243015,-280.29408,2079.865312, + 0,-1,0,46.868397,-280.29408,2125.502553, + 0,-1,0,46.868397,-280.29408,2125.502553, + 0,-1,0,35.243015,-280.29408,2079.865312, + 0,-1,0,69.023518,-280.29408,2069.618109, + 0,-1,0,46.868397,-280.29408,2125.502553, + 0,-1,0,69.023518,-280.29408,2069.618109, + 0,-1,0,46.868397,-280.29408,2499.208064, + 0,-1,0,46.868397,-280.29408,2499.208064, + 0,-1,0,69.023518,-280.29408,2069.618109, + 0,-1,0,93.652471,-280.29408,2499.208064, + 0,-1,0,93.652471,-280.29408,2499.208064, + 0,-1,0,69.023518,-280.29408,2069.618109, + -0,-1,0,100.155807,-280.29408,2052.977553, + 0,-1,0,93.652471,-280.29408,2499.208064, + -0,-1,0,100.155807,-280.29408,2052.977553, + -0,-1,0,123.089852,-280.29408,2224.766097, + -0,-1,0,123.089852,-280.29408,2224.766097, + -0,-1,0,100.155807,-280.29408,2052.977553, + -0,-1,0,127.443487,-280.29408,2030.583133, + -0,-1,0,123.089852,-280.29408,2224.766097, + -0,-1,0,127.443487,-280.29408,2030.583133, + 0,-1,0,221.73981,-280.29408,2013.443961, + 0,-1,0,221.73981,-280.29408,2013.443961, + -0,-1,0,127.443487,-280.29408,2030.583133, + 0,-1,0,149.837908,-280.29408,2003.295453, + 0,-1,0,221.73981,-280.29408,2013.443961, + 0,-1,0,149.837908,-280.29408,2003.295453, + 0,-1,0,166.478463,-280.29408,1972.163164, + 0,-1,0,221.73981,-280.29408,2013.443961, + 0,-1,0,166.478463,-280.29408,1972.163164, + 0,-1,0,176.725666,-280.29408,1938.382661, + 0,-1,0,221.73981,-280.29408,2013.443961, + 0,-1,0,176.725666,-280.29408,1938.382661, + 0,-1,0,180.185724,-280.29408,1903.252111, + 0,-1,0,221.73981,-280.29408,2013.443961, + 0,-1,0,180.185724,-280.29408,1903.252111, + 0,-1,-0,221.73981,-280.29408,1435.598634, + 0,-1,0,100.141826,-280.29408,1720.5641, + 0,-1,0,100.155807,-280.29408,1753.526669, + 0,-1,0,69.327289,-280.29408,1737.048483, + 0,-1,0,100.155807,-280.29408,1753.526669, + 0,-1,0,100.141826,-280.29408,1720.5641, + 0,-1,0,127.425692,-280.29408,1698.17281, + 0,-1,0,100.155807,-280.29408,1753.526669, + 0,-1,0,127.425692,-280.29408,1698.17281, + 0,-1,0,127.443487,-280.29408,1775.921089, + 0,-1,0,127.443487,-280.29408,1775.921089, + 0,-1,0,127.425692,-280.29408,1698.17281, + 0,-1,0,149.816983,-280.29408,1670.888943, + 0,-1,0,127.443487,-280.29408,1775.921089, + 0,-1,0,149.816983,-280.29408,1670.888943, + 0,-1,0,149.837908,-280.29408,1803.208769, + 0,-1,0,149.837908,-280.29408,1803.208769, + 0,-1,0,149.816983,-280.29408,1670.888943, + 0,-1,0,166.455213,-280.29408,1639.761005, + 0,-1,0,149.837908,-280.29408,1803.208769, + 0,-1,0,166.455213,-280.29408,1639.761005, + 0,-1,0,166.478463,-280.29408,1834.341059, + 0,-1,0,166.478463,-280.29408,1834.341059, + 0,-1,0,166.455213,-280.29408,1639.761005, + 0,-1,0,176.700984,-280.29408,1605.985223, + 0,-1,0,166.478463,-280.29408,1834.341059, + 0,-1,0,176.700984,-280.29408,1605.985223, + 0,-1,0,176.725666,-280.29408,1868.121561, + 0,-1,0,176.725666,-280.29408,1868.121561, + 0,-1,0,176.700984,-280.29408,1605.985223, + 0,-1,0,180.160558,-280.29408,1570.859583, + 0,-1,0,176.725666,-280.29408,1868.121561, + 0,-1,0,180.160558,-280.29408,1570.859583, + 0,-1,0,180.185724,-280.29408,1903.252111, + -0.952384,0.284225,-0.110366,453.575559,-733.364268,77.335952, + -0.985345,0.149457,-0.082208,454.431271,-719.259121,98.908612, + -0.985345,0.159265,-0.061075,454.431263,-730.119577,76.057541, + -0.985345,0.149457,-0.082208,454.431271,-719.259121,98.908612, + -0.952384,0.284225,-0.110366,453.575559,-733.364268,77.335952, + -0.952384,0.266534,-0.148066,453.575567,-722.299342,100.61724, + 0.854897,-0.518797,-0,813.090986,-692.336727,-0, + 0.806461,-0.591287,-0,794.401548,-720.307447,23.357838, + 0.779867,-0.625945,-0,794.401548,-720.307447,-0, + 0.806461,-0.591287,-0,794.401548,-720.307447,23.357838, + 0.854897,-0.518797,-0,813.090986,-692.336727,-0, + 0.87674,-0.480964,-0,813.090986,-692.336727,23.357838, + 0.995804,-0.010878,0.090867,473.642039,-579.415029,219.678492, + 0.973657,-0.055392,0.221186,473.101737,-608.824017,217.993091, + 0.995804,-0.023158,0.088537,473.642053,-608.036762,214.756927, + 0.973657,-0.055392,0.221186,473.101737,-608.824017,217.993091, + 0.995804,-0.010878,0.090867,473.642039,-579.415029,219.678492, + 0.973657,-0.024735,0.226671,473.101722,-579.75396,222.991746, + 0.924993,-0.331932,0.184956,779.024167,-635.678246,51.93544, + 0.867227,-0.463727,0.18131,767.829328,-662.181333,49.28971, + 0.924993,-0.354039,0.138,779.024163,-640.917494,40.911739, + 0.867227,-0.463727,0.18131,767.829328,-662.181333,49.28971, + 0.924993,-0.331932,0.184956,779.024167,-635.678246,51.93544, + 0.867227,-0.434695,0.24281,767.829333,-655.602109,63.132805, + 0.924993,-0.230673,0.301955,779.024169,-611.764971,79.363123, + 0.867227,-0.352996,0.351156,767.829337,-637.125516,87.502929, + 0.924993,-0.269668,0.267706,779.02417,-620.964741,71.342153, + 0.867227,-0.352996,0.351156,767.829337,-637.125516,87.502929, + 0.924993,-0.230673,0.301955,779.024169,-611.764971,79.363123, + 0.867227,-0.301852,0.395982,767.829336,-625.572837,97.575321, + -0.832687,0.392486,-0.390624,450.471126,-695.789522,146.166935, + -0.901181,0.263001,-0.344532,452.247014,-673.811262,161.200429, + -0.901181,0.307496,-0.305481,452.247015,-693.58391,143.961322, + -0.901181,0.263001,-0.344532,452.247014,-673.811262,161.200429, + -0.832687,0.392486,-0.390624,450.471126,-695.789522,146.166935, + -0.832687,0.335596,-0.440463,450.471124,-675.695751,163.686019, + 0,0,-1,847.545902,-186.86272,0, + -0,0,-1,806.270901,56.185652,0, + 0,0,-1,847.545902,56.185652,0, + -0,0,-1,806.270901,56.185652,0, + 0,0,-1,847.545902,-186.86272,0, + -0,0,-1,700.992217,-563.749227,-0, + -0,0,-1,700.992217,-563.749227,-0, + 0,0,-1,847.545902,-186.86272,0, + 0,0,-1,847.545902,-563.749227,0, + -0,0,-1,700.992217,-563.749227,-0, + 0,0,-1,847.545902,-563.749227,0, + -0,0,-1,843.130723,-608.452917,-0, + -0,0,-1,700.992217,-563.749227,-0, + -0,0,-1,843.130723,-608.452917,-0, + -0,-0,-1,698.091838,-577.372321,-0, + -0,-0,-1,698.091838,-577.372321,-0, + -0,0,-1,843.130723,-608.452917,-0, + -0,0,-1,693.784142,-590.617874,-0, + -0,0,-1,693.784142,-590.617874,-0, + -0,0,-1,843.130723,-608.452917,-0, + -0,0,-1,688.11627,-603.340929,-0, + -0,0,-1,688.11627,-603.340929,-0, + -0,0,-1,843.130723,-608.452917,-0, + -0,0,-1,681.15025,-615.40225,-0, + -0,0,-1,681.15025,-615.40225,-0, + -0,0,-1,843.130723,-608.452917,-0, + -0,0,-1,838.782877,-630.311015,-0, + -0,0,-1,681.15025,-615.40225,-0, + -0,0,-1,838.782877,-630.311015,-0, + -0,0,-1,672.962315,-626.669842,-0, + -0,0,-1,672.962315,-626.669842,-0, + -0,0,-1,838.782877,-630.311015,-0, + -0,0,-1,663.642072,-637.020396,-0, + -0,0,-1,663.642072,-637.020396,-0, + -0,0,-1,838.782877,-630.311015,-0, + -0,0,-1,827.969621,-662.165838,-0, + -0,0,-1,663.642072,-637.020396,-0, + -0,0,-1,827.969621,-662.165838,-0, + -0,0,-1,653.291518,-646.340639,-0, + -0,0,-1,653.291518,-646.340639,-0, + -0,0,-1,827.969621,-662.165838,-0, + -0,0,-1,642.023926,-654.528574,-0, + -0,0,-1,642.023926,-654.528574,-0, + -0,0,-1,827.969621,-662.165838,-0, + -0,0,-1,629.962605,-661.494594,-0, + -0,0,-1,629.962605,-661.494594,-0, + -0,0,-1,827.969621,-662.165838,-0, + -0,0,-1,617.239549,-667.162466,-0, + -0,0,-1,617.239549,-667.162466,-0, + -0,0,-1,827.969621,-662.165838,-0, + -0,0,-1,813.090986,-692.336727,-0, + -0,0,-1,617.239549,-667.162466,-0, + -0,0,-1,813.090986,-692.336727,-0, + -0,0,-1,603.993997,-671.470162,-0, + -0,0,-1,603.993997,-671.470162,-0, + -0,0,-1,813.090986,-692.336727,-0, + -0,0,-1,590.370902,-674.370541,0, + -0,0,-1,590.370902,-674.370541,0, + -0,0,-1,813.090986,-692.336727,-0, + -0,0,-1,0.000468,-674.370541,0, + -0,0,-1,0.000468,-674.370541,0, + -0,0,-1,813.090986,-692.336727,-0, + -0,-0,-1,0.000468,-820.924227,0, + -0,-0,-1,0.000468,-820.924227,0, + -0,0,-1,813.090986,-692.336727,-0, + -0,0,-1,794.401548,-720.307447,-0, + -0,-0,-1,0.000468,-820.924227,0, + -0,0,-1,794.401548,-720.307447,-0, + -0,0,-1,772.221089,-745.599413,-0, + -0,-0,-1,0.000468,-820.924227,0, + -0,0,-1,772.221089,-745.599413,-0, + -0,-0,-1,746.929123,-767.779872,-0, + -0,-0,-1,0.000468,-820.924227,0, + -0,-0,-1,746.929123,-767.779872,-0, + -0,-0,-1,718.958402,-786.46931,-0, + -0,-0,-1,0.000468,-820.924227,0, + -0,-0,-1,718.958402,-786.46931,-0, + -0,-0,-1,688.787514,-801.347945,-0, + -0,-0,-1,0.000468,-820.924227,0, + -0,-0,-1,688.787514,-801.347945,-0, + -0,-0,-1,656.93269,-812.161201,-0, + -0,-0,-1,0.000468,-820.924227,0, + -0,-0,-1,656.93269,-812.161201,-0, + -0,-0,-1,623.938976,-818.724059,-0, + -0,-0,-1,0.000468,-820.924227,0, + -0,-0,-1,623.938976,-818.724059,-0, + 0,-0,-1,590.370902,-820.924227,0, + -0.412792,0,0.910825,69.013887,-280.29408,1404.516835, + -0.527988,0,0.849252,100.141826,-186.86272,1421.155065, + -0.352162,0,0.935939,69.013887,-186.86272,1404.516835, + -0.527988,0,0.849252,100.141826,-186.86272,1421.155065, + -0.412792,0,0.910825,69.013887,-280.29408,1404.516835, + -0.582554,0,0.812792,100.141826,-280.29408,1421.155065, + -0.112343,0.23471,-0.965552,623.546346,-599.640892,180.244333, + -0.022557,0.101727,-0.994557,602.133267,-575.89875,185.30549, + -0.112343,0.100949,-0.988528,623.546333,-575.800358,184.343761, + -0.022557,0.101727,-0.994557,602.133267,-575.89875,185.30549, + -0.112343,0.23471,-0.965552,623.546346,-599.640892,180.244333, + -0.022557,0.236303,-0.971418,602.13328,-599.869416,181.183686, + -0.649152,0.701164,-0.294909,445.721732,-744.352284,81.665241, + -0.748179,0.578988,-0.324038,448.282012,-730.404697,105.172511, + -0.748179,0.617743,-0.242119,448.282005,-742.014746,80.744249, + -0.748179,0.578988,-0.324038,448.282012,-730.404697,105.172511, + -0.649152,0.701164,-0.294909,445.721732,-744.352284,81.665241, + -0.649152,0.654437,-0.387703,445.72174,-732.59493,106.40344, + 0.874212,-0.050786,0.482881,470.677482,-580.392895,229.237697, + 0.79876,-0.143441,0.5843,468.840142,-610.976426,226.840986, + 0.874212,-0.116112,0.471456,470.677497,-610.308103,224.093716, + 0.79876,-0.143441,0.5843,468.840142,-610.976426,226.840986, + 0.874212,-0.050786,0.482881,470.677482,-580.392895,229.237697, + 0.79876,-0.062483,0.598396,468.840127,-580.680624,232.05041, + 0.988867,-0.134398,0.063875,792.007216,-595.005501,23.357838, + 0.969153,-0.229071,0.090936,787.130187,-618.467587,32.066457, + 0.98147,-0.179832,0.066156,791.767078,-596.364536,23.357838, + 0.969153,-0.229071,0.090936,787.130187,-618.467587,32.066457, + 0.988867,-0.134398,0.063875,792.007216,-595.005501,23.357838, + 0.991932,-0.111235,0.060808,792.007217,-592.860317,27.871437, + 0.969153,-0.229071,0.090936,787.130187,-618.467587,32.066457, + 0.991932,-0.111235,0.060808,792.007217,-592.860317,27.871437, + 0.966794,-0.223491,0.12394,787.130189,-614.643058,40.113503, + 0.382469,-0.01552,0.923838,458.222196,-549.595395,241.116069, + 0.466054,-0,0.884757,461.269937,-186.86272,239.686382, + 0.339245,0,0.940698,458.222196,-186.86272,241.116069, + 0.466054,-0,0.884757,461.269937,-186.86272,239.686382, + 0.382469,-0.01552,0.923838,458.222196,-549.595395,241.116069, + 0.506559,-0.014482,0.862083,461.269937,-549.571376,239.686382, + 0.707932,-0.563451,0.425857,736.997696,-679.337949,100.317733, + 0.616524,-0.682339,0.392825,717.894074,-705.391609,91.114894, + 0.717149,-0.603071,0.349289,736.997692,-690.762817,82.893397, + 0.616524,-0.682339,0.392825,717.894074,-705.391609,91.114894, + 0.707932,-0.563451,0.425857,736.997696,-679.337949,100.317733, + 0.609002,-0.620953,0.493491,717.894078,-692.709977,110.455949, + -0.928388,0.225646,-0.295263,753.576412,-604.820821,70.203974, + -0.9698,0.12079,-0.21189,760.201826,-585.915972,58.223185, + -0.9698,0.148537,-0.193454,760.201828,-592.476195,53.921748, + -0.9698,0.12079,-0.21189,760.201826,-585.915972,58.223185, + -0.928388,0.225646,-0.295263,753.576412,-604.820821,70.203974, + -0.928388,0.183307,-0.323257,753.57641,-595.926736,76.035688, + -0.985345,0.018907,-0.169523,454.43124,-576.627626,192.429881, + -0.999453,0.000944,-0.033066,454.797637,-548.733344,189.801127, + -0.999454,0.00493,-0.032673,454.797654,-576.264066,188.875876, + -0.999453,0.000944,-0.033066,454.797637,-548.733344,189.801127, + -0.985345,0.018907,-0.169523,454.43124,-576.627626,192.429881, + -0.985283,0.003254,-0.170901,454.431224,-548.79322,193.365338, + -0.415875,0.214324,-0.883806,439.690597,-606.087584,206.744382, + -0.285905,0.097067,-0.953329,436.335587,-578.704167,212.729198, + -0.415875,0.091892,-0.904767,439.690582,-578.575874,211.475076, + -0.285905,0.097067,-0.953329,436.335587,-578.704167,212.729198, + -0.415875,0.214324,-0.883806,439.690597,-606.087584,206.744382, + -0.285905,0.226068,-0.93121,436.335601,-606.385575,207.969324, + -0.537771,0.08495,-0.8388,442.839452,-578.401496,209.770445, + -0.41512,0.01512,-0.909641,439.690565,-549.114088,212.465226, + -0.536932,0.013961,-0.84351,442.839435,-549.085368,210.7557, + -0.41512,0.01512,-0.909641,439.690565,-549.114088,212.465226, + -0.537771,0.08495,-0.8388,442.839452,-578.401496,209.770445, + -0.415875,0.091892,-0.904767,439.690582,-578.575874,211.475076, + 0.499663,-0.204023,0.84185,696.758783,-601.14038,186.408417, + 0.609101,-0.289877,0.738219,717.894067,-619.848758,165.69683, + 0.609101,-0.186578,0.770833,717.894058,-597.802054,172.685609, + 0.609101,-0.289877,0.738219,717.894067,-619.848758,165.69683, + 0.499663,-0.204023,0.84185,696.758783,-601.14038,186.408417, + 0.499663,-0.316836,0.806196,696.758793,-625.025898,178.836737, + 0.995804,-0.08054,0.043457,473.642074,-743.137303,112.328326, + 0.973657,-0.212704,0.08215,473.101749,-758.702385,87.31918, + 0.995804,-0.08571,0.032077,473.642065,-755.603683,86.09829, + 0.973657,-0.212704,0.08215,473.101749,-758.702385,87.31918, + 0.995804,-0.08054,0.043457,473.642074,-743.137303,112.328326, + 0.973657,-0.199526,0.110368,473.101758,-746.040734,113.960076, + 0.237659,-0.971349,-0,656.93269,-812.161201,-0, + 0.152151,-0.988357,-0,623.938976,-818.724059,23.357838, + 0.108839,-0.994059,-0,623.938976,-818.724059,-0, + 0.152151,-0.988357,-0,623.938976,-818.724059,23.357838, + 0.237659,-0.971349,-0,656.93269,-812.161201,-0, + 0.279856,-0.960042,-0,656.93269,-812.161201,23.357838, + 0.932875,-0.038122,0.358177,472.107168,-580.082016,226.198682, + 0.874212,-0.116112,0.471456,470.677497,-610.308103,224.093716, + 0.932875,-0.086574,0.349641,472.107183,-609.58601,221.125411, + 0.874212,-0.116112,0.471456,470.677497,-610.308103,224.093716, + 0.932875,-0.038122,0.358177,472.107168,-580.082016,226.198682, + 0.874212,-0.050786,0.482881,470.677482,-580.392895,229.237697, + -0.040706,0.101643,-0.993988,429.267738,-578.813573,213.798664, + -0,0.022395,-0.999749,0.016247,-549.153365,214.795487, + -0.040617,0.016774,-0.999034,429.26772,-549.153238,214.795487, + -0,0.022395,-0.999749,0.016247,-549.153365,214.795487, + -0.040706,0.101643,-0.993988,429.267738,-578.813573,213.798664, + -0,0.124431,-0.992228,0.016265,-578.81381,213.79866, + 0.707841,-0.682368,0.182581,466.630415,-778.937032,61.955552, + 0.603443,-0.741548,0.293196,464.090775,-771.60356,92.402256, + 0.603443,-0.774584,0.189413,464.090763,-781.089165,62.479098, + 0.603443,-0.741548,0.293196,464.090775,-771.60356,92.402256, + 0.707841,-0.682368,0.182581,466.630415,-778.937032,61.955552, + 0.707841,-0.651123,0.273862,466.630427,-769.542842,91.59033, + -0.999454,0.009337,-0.031696,454.797666,-600.717836,184.671001, + -0.999345,-0.004503,0.035903,454.667737,-575.898832,185.305489, + -0.999345,-0.009353,0.034955,454.667749,-599.869485,181.183687, + -0.999345,-0.004503,0.035903,454.667737,-575.898832,185.305489, + -0.999454,0.009337,-0.031696,454.797666,-600.717836,184.671001, + -0.999454,0.00493,-0.032673,454.797654,-576.264066,188.875876, + 0.966794,-0.223491,0.12394,787.130189,-614.643058,40.113503, + 0.924993,-0.354039,0.138,779.024163,-640.917494,40.911739, + 0.969153,-0.229071,0.090936,787.130187,-618.467587,32.066457, + 0.924993,-0.354039,0.138,779.024163,-640.917494,40.911739, + 0.966794,-0.223491,0.12394,787.130189,-614.643058,40.113503, + 0.924993,-0.331932,0.184956,779.024167,-635.678246,51.93544, + 0.707841,-0.682368,0.182581,736.997677,-706.002952,44.212918, + 0.609101,-0.737549,0.291577,717.894067,-715.319418,70.22617, + 0.609101,-0.770402,0.188354,717.894058,-722.308196,48.179466, + 0.609101,-0.737549,0.291577,717.894067,-715.319418,70.22617, + 0.707841,-0.682368,0.182581,736.997677,-706.002952,44.212918, + 0.707841,-0.651123,0.273862,736.997686,-699.706769,64.074769, + -0.795651,0.010475,-0.605664,732.466031,-547.618545,123.445905, + -0.858411,0,-0.512963,744.275028,-186.86272,105.557439, + -0.869747,0.008617,-0.493422,744.275028,-547.318028,105.557439, + -0.858411,0,-0.512963,744.275028,-186.86272,105.557439, + -0.795651,0.010475,-0.605664,732.466031,-547.618545,123.445905, + -0.7818,0,-0.623529,732.466031,-186.86272,123.445905, + 0.091928,-0.967513,0.235514,451.683317,-785.765921,63.616808, + 0.011271,-0.930329,0.366553,448.317768,-776.152256,94.194451, + 0.01127,-0.9716,0.236362,448.317755,-785.839647,63.634744, + 0.011271,-0.930329,0.366553,448.317768,-776.152256,94.194451, + 0.091928,-0.967513,0.235514,451.683317,-785.765921,63.616808, + 0.091928,-0.926396,0.365157,451.68333,-776.081661,94.166635, + -0.494423,0.614096,-0.615169,684.332898,-669.009253,119.386665, + -0.606606,0.622389,-0.494632,702.22136,-673.696701,96.040736, + -0.494423,0.692194,-0.52575,684.332897,-683.128909,103.191916, + -0.606606,0.622389,-0.494632,702.22136,-673.696701,96.040736, + -0.494423,0.614096,-0.615169,684.332898,-669.009253,119.386665, + -0.606606,0.549182,-0.574829,702.221362,-660.639487,111.0169, + -0.244971,0.228806,-0.942145,644.636243,-598.733545,176.514546, + -0.112343,0.100949,-0.988528,623.546333,-575.800358,184.343761, + -0.244971,0.09829,-0.964535,644.636231,-575.409716,180.525125, + -0.112343,0.100949,-0.988528,623.546333,-575.800358,184.343761, + -0.244971,0.228806,-0.942145,644.636243,-598.733545,176.514546, + -0.112343,0.23471,-0.965552,623.546346,-599.640892,180.244333, + 0.874212,-0.116112,0.471456,470.677497,-610.308103,224.093716, + 0.79876,-0.221723,0.559304,468.840155,-640.279768,217.551861, + 0.874212,-0.179273,0.451236,470.677509,-639.24332,214.921287, + 0.79876,-0.221723,0.559304,468.840155,-640.279768,217.551861, + 0.874212,-0.116112,0.471456,470.677497,-610.308103,224.093716, + 0.79876,-0.143441,0.5843,468.840142,-610.976426,226.840986, + 0.989572,-0,0.144037,221.73981,-186.86272,2013.443961, + 1,-0,0,221.73981,-280.29408,1435.598634, + 1,-0,0,221.73981,-186.86272,1435.598634, + 1,-0,0,221.73981,-280.29408,1435.598634, + 0.989572,-0,0.144037,221.73981,-186.86272,2013.443961, + 0.957608,-0,0.288074,221.73981,-280.29408,2013.443961, + 0.362412,-0.932018,-0,688.787514,-801.347945,-0, + 0.279856,-0.960042,-0,656.93269,-812.161201,23.357838, + 0.237659,-0.971349,-0,656.93269,-812.161201,-0, + 0.279856,-0.960042,-0,656.93269,-812.161201,23.357838, + 0.362412,-0.932018,-0,688.787514,-801.347945,-0, + 0.402772,-0.9153,-0,688.787514,-801.347945,23.357838, + -0.986659,0,-0.162803,176.725666,-280.29408,1938.382661, + -0.999462,0,-0.032813,180.185724,-186.86272,1903.252111, + -0.999462,0,0.032813,180.185724,-280.29408,1903.252111, + -0.999462,0,-0.032813,180.185724,-186.86272,1903.252111, + -0.986659,0,-0.162803,176.725666,-280.29408,1938.382661, + -0.973856,0,-0.227168,176.725666,-186.86272,1938.382661, + -0.707841,0.151267,-0.689985,718.363091,-588.820775,135.766294, + -0.796291,0.062774,-0.601647,732.466044,-569.495502,122.710666, + -0.796291,0.144172,-0.587481,732.466052,-584.996349,120.045264, + -0.796291,0.062774,-0.601647,732.466044,-569.495502,122.710666, + -0.707841,0.151267,-0.689985,718.363091,-588.820775,135.766294, + -0.707841,0.055835,-0.704162,718.363082,-571.142012,138.806193, + -0.373111,0.655639,-0.656449,665.021391,-675.601701,125.979113, + -0.244971,0.585448,-0.772813,644.636264,-662.459295,146.227532, + -0.373111,0.560072,-0.739667,665.02139,-658.447133,140.935603, + -0.244971,0.585448,-0.772813,644.636264,-662.459295,146.227532, + -0.373111,0.655639,-0.656449,665.021391,-675.601701,125.979113, + -0.244971,0.685296,-0.685827,644.636265,-680.297547,130.67496, + -0.714681,0.677849,-0.172485,718.363091,-685.388881,39.198188, + -0.796291,0.563252,-0.220608,732.466058,-664.91507,50.366817, + -0.809671,0.570253,-0.138724,732.466052,-669.667851,35.373762, + -0.796291,0.563252,-0.220608,732.466058,-664.91507,50.366817, + -0.714681,0.677849,-0.172485,718.363091,-685.388881,39.198188, + -0.707841,0.651123,-0.273862,718.363098,-679.96832,56.297814, + 0.256673,-0.899078,0.354651,649.884111,-746.45866,82.495079, + 0.127347,-0.864568,0.486113,624.955342,-738.83011,109.90761, + 0.127347,-0.922744,0.363767,624.955334,-751.006818,84.287065, + 0.127347,-0.864568,0.486113,624.955342,-738.83011,109.90761, + 0.256673,-0.899078,0.354651,649.884111,-746.45866,82.495079, + 0.256673,-0.842365,0.473857,649.884119,-734.568562,107.512581, + 0.381503,-0.898037,0.219052,673.957358,-746.934061,54.170165, + 0.256673,-0.899078,0.354651,649.884111,-746.45866,82.495079, + 0.256673,-0.939019,0.228829,649.8841,-754.828812,56.090715, + 0.256673,-0.899078,0.354651,649.884111,-746.45866,82.495079, + 0.381503,-0.898037,0.219052,673.957358,-746.934061,54.170165, + 0.381503,-0.859811,0.339381,673.957369,-738.899253,79.516658, + -0.040706,0.871018,-0.489562,429.267772,-737.984764,109.432572, + -0.150375,0.919722,-0.362627,432.838941,-749.833439,83.824825, + -0.040706,0.929604,-0.366305,429.267763,-750.104609,83.931667, + -0.150375,0.919722,-0.362627,432.838941,-749.833439,83.824825, + -0.040706,0.871018,-0.489562,429.267772,-737.984764,109.432572, + -0.150375,0.86173,-0.484571,432.838949,-737.730682,109.289775, + -0.928388,0.346265,-0.134897,753.576407,-630.223631,36.698359, + -0.9698,0.213348,-0.118196,760.201826,-607.845772,36.293385, + -0.9721,0.218065,-0.086424,760.201824,-611.21315,29.208214, + -0.9698,0.213348,-0.118196,760.201826,-607.845772,36.293385, + -0.928388,0.346265,-0.134897,753.576407,-630.223631,36.698359, + -0.928388,0.324653,-0.180823,753.57641,-625.658276,46.304148, + 0.105242,-0.993886,0.033402,624.955304,-764.585289,23.357838, + 0.030866,-0.994332,0.101738,599.602117,-765.945157,29.449075, + 0.020529,-0.999225,0.033582,599.602113,-766.149871,23.357838, + 0.030866,-0.994332,0.101738,599.602117,-765.945157,29.449075, + 0.105242,-0.993886,0.033402,624.955304,-764.585289,23.357838, + 0.127347,-0.98669,0.101126,624.955308,-764.385936,29.28956, + 0.603443,-0.29142,0.742247,464.090775,-642.024843,221.980973, + 0.700875,-0.343846,0.624935,466.630436,-669.291161,206.575475, + 0.707841,-0.243878,0.662936,466.630427,-641.212918,219.920255, + 0.700875,-0.343846,0.624935,466.630436,-669.291161,206.575475, + 0.603443,-0.29142,0.742247,464.090775,-642.024843,221.980973, + 0.592261,-0.384709,0.707974,464.090784,-670.376318,208.506333, + 0.867227,-0.397554,0.299779,767.829336,-647.197908,75.95025, + 0.794465,-0.530011,0.296503,753.739286,-674.070091,73.511955, + 0.867227,-0.434695,0.24281,767.829333,-655.602109,63.132805, + 0.794465,-0.530011,0.296503,753.739286,-674.070091,73.511955, + 0.867227,-0.397554,0.299779,767.829336,-647.197908,75.95025, + 0.794465,-0.484664,0.36596,753.739289,-664.079301,88.749145, + 0.999748,-0.019808,0.010545,473.717772,-740.196479,110.67556, + 0.995804,-0.08571,0.032077,473.642065,-755.603683,86.09829, + 0.999748,-0.02106,0.007747,473.717764,-752.465075,84.861676, + 0.995804,-0.08571,0.032077,473.642065,-755.603683,86.09829, + 0.999748,-0.019808,0.010545,473.717772,-740.196479,110.67556, + 0.995804,-0.08054,0.043457,473.642074,-743.137303,112.328326, + 0.251027,-0.016259,0.967844,455.00605,-549.612103,242.110623, + 0.339245,0,0.940698,458.222196,-186.86272,241.116069, + 0.20592,0,0.978569,455.00605,-186.86272,242.110623, + 0.339245,0,0.940698,458.222196,-186.86272,241.116069, + 0.251027,-0.016259,0.967844,455.00605,-549.612103,242.110623, + 0.382469,-0.01552,0.923838,458.222196,-549.595395,241.116069, + 0.999747,-0.000377,0.02248,473.71772,-549.195746,217.326639, + 0.995804,-0.010878,0.090867,473.642039,-579.415029,219.678492, + 0.999748,-0.002792,0.022266,473.717738,-579.071732,216.322569, + 0.995804,-0.010878,0.090867,473.642039,-579.415029,219.678492, + 0.999747,-0.000377,0.02248,473.71772,-549.195746,217.326639, + 0.994417,-0.002312,0.105501,473.642021,-549.252285,220.6922, + -0.796291,0.144172,-0.587481,732.466052,-584.996349,120.045264, + -0.870211,0.051465,-0.489984,744.27504,-567.670824,104.873423, + -0.870211,0.117753,-0.4784,744.275047,-580.75808,102.623043, + -0.870211,0.051465,-0.489984,744.27504,-567.670824,104.873423, + -0.796291,0.144172,-0.587481,732.466052,-584.996349,120.045264, + -0.796291,0.062774,-0.601647,732.466044,-569.495502,122.710666, + 0.932875,-0.350339,0.083707,472.107183,-770.747999,59.963422, + 0.885205,-0.462786,0.04734,470.677482,-778.860284,30.770308, + 0.940951,-0.336786,0.034451,472.107168,-775.82127,30.459429, + 0.885205,-0.462786,0.04734,470.677482,-778.860284,30.770308, + 0.932875,-0.350339,0.083707,472.107183,-770.747999,59.963422, + 0.874212,-0.47211,0.113426,470.677497,-773.716304,60.685516, + -0.638578,0.17117,-0.75028,445.721721,-605.178251,203.006401, + -0.537771,0.08495,-0.8388,442.839452,-578.401496,209.770445, + -0.649249,0.076378,-0.756731,445.721707,-578.184383,207.648051, + -0.537771,0.08495,-0.8388,442.839452,-578.401496,209.770445, + -0.638578,0.17117,-0.75028,445.721721,-605.178251,203.006401, + -0.537771,0.198458,-0.8194,442.839466,-605.68255,205.079413, + 0.999748,-0.013961,0.017568,473.717777,-684.199453,174.902175, + 0.995804,-0.065815,0.063588,473.64208,-708.127668,158.505081, + 0.999748,-0.016225,0.015501,473.717779,-705.742288,156.119701, + 0.995804,-0.065815,0.063588,473.64208,-708.127668,158.505081, + 0.999748,-0.013961,0.017568,473.717777,-684.199453,174.902175, + 0.995804,-0.056536,0.071964,473.642079,-686.237536,177.590351, + -0.537771,0.198458,-0.8194,442.839466,-605.68255,205.079413, + -0.415875,0.091892,-0.904767,439.690582,-578.575874,211.475076, + -0.537771,0.08495,-0.8388,442.839452,-578.401496,209.770445, + -0.415875,0.091892,-0.904767,439.690582,-578.575874,211.475076, + -0.537771,0.198458,-0.8194,442.839466,-605.68255,205.079413, + -0.415875,0.214324,-0.883806,439.690597,-606.087584,206.744382, + 0.973657,-0.024735,0.226671,473.101722,-579.75396,222.991746, + 0.932875,-0.086574,0.349641,472.107183,-609.58601,221.125411, + 0.973657,-0.055392,0.221186,473.101737,-608.824017,217.993091, + 0.932875,-0.086574,0.349641,472.107183,-609.58601,221.125411, + 0.973657,-0.024735,0.226671,473.101722,-579.75396,222.991746, + 0.932875,-0.038122,0.358177,472.107168,-580.082016,226.198682, + 0.79876,-0.143441,0.5843,468.840142,-610.976426,226.840986, + 0.707841,-0.243878,0.662936,466.630427,-641.212918,219.920255, + 0.79876,-0.221723,0.559304,468.840155,-640.279768,217.551861, + 0.707841,-0.243878,0.662936,466.630427,-641.212918,219.920255, + 0.79876,-0.143441,0.5843,468.840142,-610.976426,226.840986, + 0.707841,-0.151267,0.689985,466.630415,-611.57814,229.314444, + 0.928983,-0.005506,0.370082,472.10715,-549.362134,227.231115, + 0.874212,-0.050786,0.482881,470.677482,-580.392895,229.237697, + 0.932875,-0.038122,0.358177,472.107168,-580.082016,226.198682, + 0.874212,-0.050786,0.482881,470.677482,-580.392895,229.237697, + 0.928983,-0.005506,0.370082,472.10715,-549.362134,227.231115, + 0.866918,-0.01021,0.498346,470.677463,-549.413334,230.278856, + 0.991932,-0.101911,0.075398,792.007218,-589.846284,32.468209, + 0.966794,-0.223491,0.12394,787.130189,-614.643058,40.113503, + 0.991932,-0.111235,0.060808,792.007217,-592.860317,27.871437, + 0.966794,-0.223491,0.12394,787.130189,-614.643058,40.113503, + 0.991932,-0.101911,0.075398,792.007218,-589.846284,32.468209, + 0.966794,-0.204518,0.153238,787.130191,-609.757662,47.564335, + 0.969153,-0.229071,0.090936,787.130187,-618.467587,32.066457, + 0.933102,-0.349421,0.085002,779.024159,-644.605714,29.276931, + 0.966774,-0.246753,0.066789,787.130183,-621.159902,23.573317, + 0.933102,-0.349421,0.085002,779.024159,-644.605714,29.276931, + 0.969153,-0.229071,0.090936,787.130187,-618.467587,32.066457, + 0.924993,-0.354039,0.138,779.024163,-640.917494,40.911739, + 0.960042,-0.279856,-0,838.782877,-630.311015,-0, + 0.932018,-0.362412,-0,827.969621,-662.165838,23.357838, + 0.9153,-0.402772,-0,827.969621,-662.165838,-0, + 0.932018,-0.362412,-0,827.969621,-662.165838,23.357838, + 0.960042,-0.279856,-0,838.782877,-630.311015,-0, + 0.971349,-0.237659,-0,838.782877,-630.311015,23.357838, + -0.729928,0,-0.683524,127.443487,-280.29408,2030.583133, + -0.812792,0,-0.582554,149.837908,-186.86272,2003.295453, + -0.849252,0,-0.527988,149.837908,-280.29408,2003.295453, + -0.812792,0,-0.582554,149.837908,-186.86272,2003.295453, + -0.729928,0,-0.683524,127.443487,-280.29408,2030.583133, + -0.683524,0,-0.729928,127.443487,-186.86272,2030.583133, + 0.946935,-0,0.321426,123.089852,-186.86272,2224.766097, + 0.957608,-0,0.288074,221.73981,-280.29408,2013.443961, + 0.989572,-0,0.144037,221.73981,-186.86272,2013.443961, + 0.957608,-0,0.288074,221.73981,-280.29408,2013.443961, + 0.946935,-0,0.321426,123.089852,-186.86272,2224.766097, + 0.976682,-0,0.214689,123.089852,-280.29408,2224.766097, + 0.932875,-0.314728,0.175187,472.107204,-748.850999,115.539467, + 0.874212,-0.45225,0.176701,470.677509,-764.543874,89.620732, + 0.932875,-0.335664,0.130666,472.107195,-761.701654,88.500895, + 0.874212,-0.45225,0.176701,470.677509,-764.543874,89.620732, + 0.932875,-0.314728,0.175187,472.107204,-748.850999,115.539467, + 0.874212,-0.423953,0.236679,470.677518,-751.514112,117.036157, + -0.985345,0.149457,-0.082208,454.431271,-719.259121,98.908612, + -0.999454,0.027255,-0.01868,454.797688,-702.539296,117.908241, + -0.999454,0.029547,-0.014792,454.797683,-716.144717,97.158293, + -0.999454,0.027255,-0.01868,454.797688,-702.539296,117.908241, + -0.985345,0.149457,-0.082208,454.431271,-719.259121,98.908612, + -0.985345,0.136861,-0.101808,454.431275,-705.386141,120.066621, + 0.361665,-0.219818,0.906024,458.222231,-612.875739,234.648467, + 0.487278,-0.319392,0.812741,461.269985,-642.699947,223.694428, + 0.487278,-0.205664,0.848683,461.269972,-612.537006,233.256044, + 0.487278,-0.319392,0.812741,461.269985,-642.699947,223.694428, + 0.361665,-0.219818,0.906024,458.222231,-612.875739,234.648467, + 0.361665,-0.341228,0.867619,458.222244,-643.22526,225.027705, + -0.9698,0.09079,-0.226373,760.201824,-578.830801,61.590563, + -0.993727,0.027914,-0.108296,764.031421,-566.356087,43.420852, + -0.993727,0.042411,-0.103482,764.031423,-571.081703,41.922837, + -0.993727,0.027914,-0.108296,764.031421,-566.356087,43.420852, + -0.9698,0.09079,-0.226373,760.201824,-578.830801,61.590563, + -0.9698,0.059096,-0.236633,760.201821,-571.352859,63.961061, + -0.040706,0.929604,-0.366305,429.267763,-750.104609,83.931667, + -0.150374,0.960557,-0.233917,432.83893,-758.353294,56.948209, + -0.040706,0.970848,-0.236215,429.267752,-758.636494,57.017104, + -0.150374,0.960557,-0.233917,432.83893,-758.353294,56.948209, + -0.040706,0.929604,-0.366305,429.267763,-750.104609,83.931667, + -0.150375,0.919722,-0.362627,432.838941,-749.833439,83.824825, + -0.985345,0.063975,-0.158123,454.431263,-625.680129,180.496989, + -0.999454,0.009337,-0.031696,454.797666,-600.717836,184.671001, + -0.999454,0.013569,-0.030128,454.797676,-624.370524,177.173126, + -0.999454,0.009337,-0.031696,454.797666,-600.717836,184.671001, + -0.985345,0.063975,-0.158123,454.431263,-625.680129,180.496989, + -0.985345,0.041831,-0.165366,454.431253,-601.562294,188.142314, + 0.874212,-0.45225,0.176701,470.677509,-764.543874,89.620732, + 0.79876,-0.584897,0.140986,468.840142,-776.463573,61.353839, + 0.874212,-0.47211,0.113426,470.677497,-773.716304,60.685516, + 0.79876,-0.584897,0.140986,468.840142,-776.463573,61.353839, + 0.874212,-0.45225,0.176701,470.677509,-764.543874,89.620732, + 0.79876,-0.56023,0.219373,468.840155,-767.174448,90.657181, + -0.494423,0.808436,-0.31934,684.332887,-704.132939,65.818702, + -0.599001,0.779767,-0.182103,702.221343,-699.124264,42.539571, + -0.494423,0.84441,-0.206198,684.332878,-710.625471,45.337452, + -0.599001,0.779767,-0.182103,702.221343,-699.124264,42.539571, + -0.494423,0.808436,-0.31934,684.332887,-704.132939,65.818702, + -0.606705,0.739249,-0.292265,702.221351,-693.120267,61.479696, + 0.506559,-0.014482,0.862083,461.269937,-549.571376,239.686382, + 0.583909,-0,0.811819,464.090728,-186.86272,237.849027, + 0.466054,-0,0.884757,461.269937,-186.86272,239.686382, + 0.583909,-0,0.811819,464.090728,-186.86272,237.849027, + 0.506559,-0.014482,0.862083,461.269937,-549.571376,239.686382, + 0.620913,-0.013167,0.783769,464.090728,-549.540509,237.849027, + 0.030867,-0.971194,0.236282,599.602131,-761.101673,57.616723, + 0,-0.938509,0.345255,473.717764,-752.465075,84.861676, + 0,-0.976801,0.214147,473.717752,-761.101674,57.616782, + 0,-0.938509,0.345255,473.717764,-752.465075,84.861676, + 0.030867,-0.971194,0.236282,599.602131,-761.101673,57.616723, + 0.030867,-0.929938,0.366419,599.602143,-752.465071,84.861627, + -0.936465,0.339085,-0.089746,753.576403,-633.437458,26.560066, + -0.96393,0.253712,-0.080426,760.201822,-613.067712,23.357838, + -0.951243,0.299703,-0.072908,757.969157,-620.274076,23.357838, + -0.96393,0.253712,-0.080426,760.201822,-613.067712,23.357838, + -0.936465,0.339085,-0.089746,753.576403,-633.437458,26.560066, + -0.9721,0.218065,-0.086424,760.201824,-611.21315,29.208214, + -0.9721,0.218065,-0.086424,760.201824,-611.21315,29.208214, + -0.936465,0.339085,-0.089746,753.576403,-633.437458,26.560066, + -0.928388,0.346265,-0.134897,753.576407,-630.223631,36.698359, + 0.00966,-0.995709,0.092029,448.317739,-791.272422,32.040027, + 0,-0.976801,0.214147,0.000035,-785.83965,63.634954, + 0,-0.994809,0.101765,0.000019,-791.272419,32.040275, + 0,-0.976801,0.214147,0.000035,-785.83965,63.634954, + 0.00966,-0.995709,0.092029,448.317739,-791.272422,32.040027, + 0.01127,-0.9716,0.236362,448.317755,-785.839647,63.634744, + -0.952384,0.073533,-0.295901,453.575549,-602.386639,191.530944, + -0.985345,0.018907,-0.169523,454.43124,-576.627626,192.429881, + -0.985345,0.041831,-0.165366,454.431253,-601.562294,188.142314, + -0.985345,0.018907,-0.169523,454.43124,-576.627626,192.429881, + -0.952384,0.073533,-0.295901,453.575549,-602.386639,191.530944, + -0.952384,0.032525,-0.303161,453.575536,-576.982526,195.899232, + 0.98147,-0.179832,0.066156,791.767078,-596.364536,23.357838, + 0.966774,-0.246753,0.066789,787.130183,-621.159902,23.573317, + 0.981395,-0.183023,0.058018,787.308111,-620.274132,23.357838, + 0.966774,-0.246753,0.066789,787.130183,-621.159902,23.573317, + 0.98147,-0.179832,0.066156,791.767078,-596.364536,23.357838, + 0.969153,-0.229071,0.090936,787.130187,-618.467587,32.066457, + 0.924993,-0.303632,0.228462,779.024169,-628.985711,62.142384, + 0.867227,-0.434695,0.24281,767.829333,-655.602109,63.132805, + 0.924993,-0.331932,0.184956,779.024167,-635.678246,51.93544, + 0.867227,-0.434695,0.24281,767.829333,-655.602109,63.132805, + 0.924993,-0.303632,0.228462,779.024169,-628.985711,62.142384, + 0.867227,-0.397554,0.299779,767.829336,-647.197908,75.95025, + 0.707841,-0.651123,0.273862,466.630427,-769.542842,91.59033, + 0.611311,-0.685845,0.394863,464.090784,-758.12892,120.753731, + 0.603443,-0.741548,0.293196,464.090775,-771.60356,92.402256, + 0.611311,-0.685845,0.394863,464.090784,-758.12892,120.753731, + 0.707841,-0.651123,0.273862,466.630427,-769.542842,91.59033, + 0.717647,-0.602641,0.349008,466.630436,-756.198062,119.668573, + -0.952384,0.266534,-0.148066,453.575567,-722.299342,100.61724, + -0.985345,0.136861,-0.101808,454.431275,-705.386141,120.066621, + -0.985345,0.149457,-0.082208,454.431271,-719.259121,98.908612, + -0.985345,0.136861,-0.101808,454.431275,-705.386141,120.066621, + -0.952384,0.266534,-0.148066,453.575567,-722.299342,100.61724, + -0.952384,0.243872,-0.183005,453.575571,-708.165176,122.173591, + 0,-0.016797,0.999859,0,-549.622587,242.726639, + -0,-0,1,93.530885,-280.29408,242.726639, + 0,0,1,0.000488,-280.29408,242.726639, + -0,-0,1,93.530885,-280.29408,242.726639, + 0,-0.016797,0.999859,0,-549.622587,242.726639, + 0.012852,-0.014396,0.999814,448.31772,-549.622454,242.726639, + -0,-0,1,93.530885,-280.29408,242.726639, + 0.007496,-0,0.999972,448.31772,-186.86272,242.726639, + -0,-0,1,93.530885,-186.86272,242.726639, + 0.007496,-0,0.999972,448.31772,-186.86272,242.726639, + -0,-0,1,93.530885,-280.29408,242.726639, + 0.012852,-0.014396,0.999814,448.31772,-549.622454,242.726639, + 0.277314,-0.016138,0.960644,649.884069,-549.087494,210.885907, + 0.360344,0,0.932819,673.957328,-186.86272,202.77988, + 0.234823,0,0.972038,649.884069,-186.86272,210.885907, + 0.360344,0,0.932819,673.957328,-186.86272,202.77988, + 0.277314,-0.016138,0.960644,649.884069,-549.087494,210.885907, + 0.401003,-0.015387,0.915947,673.957328,-548.951312,202.77988, + 0.499663,-0.754768,0.425045,696.7588,-717.703482,98.034266, + 0.381503,-0.736251,0.558918,673.957381,-712.905798,125.767735, + 0.381503,-0.805545,0.453379,673.957376,-727.485522,103.531853, + 0.381503,-0.736251,0.558918,673.957381,-712.905798,125.767735, + 0.499663,-0.754768,0.425045,696.7588,-717.703482,98.034266, + 0.499663,-0.689808,0.523929,696.758805,-703.964135,118.988469, + -0,0.938509,-0.345255,0.01629,-750.104623,83.931833, + -0.040706,0.970848,-0.236215,429.267752,-758.636494,57.017104, + -0,0.976801,-0.214147,0.016279,-758.636496,57.017305, + -0.040706,0.970848,-0.236215,429.267752,-758.636494,57.017104, + -0,0.938509,-0.345255,0.01629,-750.104623,83.931833, + -0.040706,0.929604,-0.366305,429.267763,-750.104609,83.931667, + -0.999454,0.031287,-0.010628,454.797676,-726.795714,74.747937, + -0.999345,-0.03194,0.017004,454.667766,-713.015957,95.399907, + -0.999345,-0.033959,0.012493,454.667758,-723.45653,73.432296, + -0.999345,-0.03194,0.017004,454.667766,-713.015957,95.399907, + -0.999454,0.031287,-0.010628,454.797676,-726.795714,74.747937, + -0.999454,0.029547,-0.014792,454.797683,-716.144717,97.158293, + 0.256673,-0.228081,0.939201,649.8841,-605.713302,205.206225, + 0.381503,-0.338316,0.860231,673.957369,-629.139245,189.276665, + 0.381503,-0.21794,0.898308,673.957358,-603.792753,197.311473, + 0.381503,-0.338316,0.860231,673.957369,-629.139245,189.276665, + 0.256673,-0.228081,0.939201,649.8841,-605.713302,205.206225, + 0.256673,-0.353935,0.899361,649.884111,-632.117666,196.836073, + -0.373111,0.862993,-0.340635,665.021379,-712.807071,69.236324, + -0.494423,0.84441,-0.206198,684.332878,-710.625471,45.337452, + -0.373111,0.90136,-0.219861,665.02137,-719.684398,47.541206, + -0.494423,0.84441,-0.206198,684.332878,-710.625471,45.337452, + -0.373111,0.862993,-0.340635,665.021379,-712.807071,69.236324, + -0.494423,0.808436,-0.31934,684.332887,-704.132939,65.818702, + -0.716622,0.0095,-0.697397,718.363068,-547.889718,139.587655, + -0.7818,0,-0.623529,732.466031,-186.86272,123.445905, + -0.795651,0.010475,-0.605664,732.466031,-547.618545,123.445905, + -0.7818,0,-0.623529,732.466031,-186.86272,123.445905, + -0.716622,0.0095,-0.697397,718.363068,-547.889718,139.587655, + -0.691044,0,-0.722813,718.363068,-186.86272,139.587655, + -0.373111,0.808526,-0.455054,665.021386,-703.037584,89.791929, + -0.494423,0.808436,-0.31934,684.332887,-704.132939,65.818702, + -0.373111,0.862993,-0.340635,665.021379,-712.807071,69.236324, + -0.494423,0.808436,-0.31934,684.332887,-704.132939,65.818702, + -0.373111,0.808526,-0.455054,665.021386,-703.037584,89.791929, + -0.494423,0.75738,-0.426523,684.332893,-694.910066,85.224197, + 0.966794,-0.204518,0.153238,787.130191,-609.757662,47.564335, + 0.924993,-0.331932,0.184956,779.024167,-635.678246,51.93544, + 0.966794,-0.223491,0.12394,787.130189,-614.643058,40.113503, + 0.924993,-0.331932,0.184956,779.024167,-635.678246,51.93544, + 0.966794,-0.204518,0.153238,787.130191,-609.757662,47.564335, + 0.924993,-0.303632,0.228462,779.024169,-628.985711,62.142384, + 0.794465,-0.14471,0.589818,753.739273,-589.30933,137.774661, + 0.707841,-0.243878,0.662936,736.997686,-613.697356,150.084182, + 0.794465,-0.223732,0.564597,753.73928,-606.678073,132.26879, + 0.707841,-0.243878,0.662936,736.997686,-613.697356,150.084182, + 0.794465,-0.14471,0.589818,753.739273,-589.30933,137.774661, + 0.707841,-0.151267,0.689985,736.997677,-593.835505,156.380365, + 0.487278,-0.088099,0.868791,461.269956,-581.352493,238.618284, + 0.603443,-0.187559,0.775035,464.090763,-612.101686,231.466578, + 0.603443,-0.080198,0.793363,464.090747,-581.165077,236.78619, + 0.603443,-0.187559,0.775035,464.090763,-612.101686,231.466578, + 0.487278,-0.088099,0.868791,461.269956,-581.352493,238.618284, + 0.487278,-0.205664,0.848683,461.269972,-612.537006,233.256044, + -0.606705,0.739249,-0.292265,702.221351,-693.120267,61.479696, + -0.714681,0.677849,-0.172485,718.363091,-685.388881,39.198188, + -0.599001,0.779767,-0.182103,702.221343,-699.124264,42.539571, + -0.714681,0.677849,-0.172485,718.363091,-685.388881,39.198188, + -0.606705,0.739249,-0.292265,702.221351,-693.120267,61.479696, + -0.707841,0.651123,-0.273862,718.363098,-679.96832,56.297814, + -0.150375,0.919722,-0.362627,432.838941,-749.833439,83.824825, + -0.285905,0.930996,-0.226946,436.335601,-757.591911,56.762987, + -0.150374,0.960557,-0.233917,432.83893,-758.353294,56.948209, + -0.285905,0.930996,-0.226946,436.335601,-757.591911,56.762987, + -0.150375,0.919722,-0.362627,432.838941,-749.833439,83.824825, + -0.285905,0.891387,-0.351693,436.335613,-749.104397,83.53758, + 0.01127,-0.9716,0.236362,448.317755,-785.839647,63.634744, + 0,-0.938509,0.345255,0.000048,-776.152271,94.194624, + 0,-0.976801,0.214147,0.000035,-785.83965,63.634954, + 0,-0.938509,0.345255,0.000048,-776.152271,94.194624, + 0.01127,-0.9716,0.236362,448.317755,-785.839647,63.634744, + 0.011271,-0.930329,0.366553,448.317768,-776.152256,94.194451, + -0.901181,0.378553,-0.211115,452.247009,-725.206979,102.251354, + -0.952384,0.243872,-0.183005,453.575571,-708.165176,122.173591, + -0.952384,0.266534,-0.148066,453.575567,-722.299342,100.61724, + -0.952384,0.243872,-0.183005,453.575571,-708.165176,122.173591, + -0.901181,0.378553,-0.211115,452.247009,-725.206979,102.251354, + -0.901181,0.346254,-0.26073,452.247014,-710.823017,124.188674, + -0.9698,0.213348,-0.118196,760.201826,-607.845772,36.293385, + -0.993727,0.090031,-0.066344,764.031425,-586.699189,30.082194, + -0.993727,0.098232,-0.053457,764.031424,-589.417442,25.936523, + -0.993727,0.090031,-0.066344,764.031425,-586.699189,30.082194, + -0.9698,0.213348,-0.118196,760.201826,-607.845772,36.293385, + -0.9698,0.195252,-0.146165,760.201828,-603.544336,42.853607, + -0.537771,0.671316,-0.510036,442.83949,-719.276356,130.597708, + -0.649152,0.654437,-0.387703,445.72174,-732.59493,106.40344, + -0.537771,0.734555,-0.413801,442.839485,-734.454802,107.448703, + -0.649152,0.654437,-0.387703,445.72174,-732.59493,106.40344, + -0.537771,0.671316,-0.510036,442.83949,-719.276356,130.597708, + -0.649152,0.595502,-0.473264,445.721745,-717.576266,129.308758, + -0.707841,0.055835,-0.704162,718.363082,-571.142012,138.806193, + -0.613495,0.011257,-0.789618,702.221319,-548.126642,153.690618, + -0.716622,0.0095,-0.697397,718.363068,-547.889718,139.587655, + -0.613495,0.011257,-0.789618,702.221319,-548.126642,153.690618, + -0.707841,0.055835,-0.704162,718.363082,-571.142012,138.806193, + -0.606705,0.079969,-0.790894,702.221333,-572.580561,152.868772, + -0.285905,0.76333,-0.579298,436.335626,-721.646389,132.394587, + -0.415875,0.792474,-0.446131,439.690616,-735.948584,108.28822, + -0.285905,0.835148,-0.469878,436.335621,-737.047581,108.905866, + -0.415875,0.792474,-0.446131,439.690616,-735.948584,108.28822, + -0.285905,0.76333,-0.579298,436.335626,-721.646389,132.394587, + -0.415875,0.72429,-0.549957,439.690621,-720.641807,131.632947, + -0.691044,0,-0.722813,718.363068,-186.86272,139.587655, + -0.613495,0.011257,-0.789618,702.221319,-548.126642,153.690618, + -0.605809,0,-0.79561,702.221319,-186.86272,153.690618, + -0.613495,0.011257,-0.789618,702.221319,-548.126642,153.690618, + -0.691044,0,-0.722813,718.363068,-186.86272,139.587655, + -0.716622,0.0095,-0.697397,718.363068,-547.889718,139.587655, + 0.999748,-0.02106,0.007747,473.717764,-752.465075,84.861676, + 0.995804,-0.089282,0.020098,473.642053,-764.379515,58.414175, + 0.999748,-0.021919,0.004805,473.717752,-761.101674,57.616782, + 0.995804,-0.089282,0.020098,473.642053,-764.379515,58.414175, + 0.999748,-0.02106,0.007747,473.717764,-752.465075,84.861676, + 0.995804,-0.08571,0.032077,473.642065,-755.603683,86.09829, + -0.438529,0.898717,-0,629.962605,-661.494594,5.83946, + -0.374833,0.927092,-0,617.239549,-667.162466,-0, + -0.342242,0.939612,-0,617.239549,-667.162466,5.83946, + -0.374833,0.927092,-0,617.239549,-667.162466,-0, + -0.438529,0.898717,-0,629.962605,-661.494594,5.83946, + -0.469634,0.882861,-0,629.962605,-661.494594,-0, + -0.022557,0.236303,-0.971418,602.13328,-599.869416,181.183686, + -0,0.124431,-0.992228,454.667737,-575.898832,185.305489, + -0.022557,0.101727,-0.994557,602.133267,-575.89875,185.30549, + -0,0.124431,-0.992228,454.667737,-575.898832,185.305489, + -0.022557,0.236303,-0.971418,602.13328,-599.869416,181.183686, + -0,0.258478,-0.966017,454.667749,-599.869485,181.183687, + -0.881047,0.459625,-0.111811,744.275047,-652.24563,31.135492, + -0.928388,0.346265,-0.134897,753.576407,-630.223631,36.698359, + -0.936465,0.339085,-0.089746,753.576403,-633.437458,26.560066, + -0.928388,0.346265,-0.134897,753.576407,-630.223631,36.698359, + -0.881047,0.459625,-0.111811,744.275047,-652.24563,31.135492, + -0.870211,0.458871,-0.17936,744.275052,-648.232891,43.794023, + 0.79876,-0.062483,0.598396,468.840127,-580.680624,232.05041, + 0.707841,-0.151267,0.689985,466.630415,-611.57814,229.314444, + 0.79876,-0.143441,0.5843,468.840142,-610.976426,226.840986, + 0.707841,-0.151267,0.689985,466.630415,-611.57814,229.314444, + 0.79876,-0.062483,0.598396,468.840127,-580.680624,232.05041, + 0.707841,-0.055835,0.704162,466.630399,-580.939677,234.58279, + -0.748179,0.617743,-0.242119,448.282005,-742.014746,80.744249, + -0.832687,0.483376,-0.27015,450.47112,-727.926176,103.779563, + -0.832687,0.515679,-0.201762,450.471112,-739.369533,79.702032, + -0.832687,0.483376,-0.27015,450.47112,-727.926176,103.779563, + -0.748179,0.617743,-0.242119,448.282005,-742.014746,80.744249, + -0.748179,0.578988,-0.324038,448.282012,-730.404697,105.172511, + 0.603443,-0.080198,0.793363,464.090747,-581.165077,236.78619, + 0.707841,-0.151267,0.689985,466.630415,-611.57814,229.314444, + 0.707841,-0.055835,0.704162,466.630399,-580.939677,234.58279, + 0.707841,-0.151267,0.689985,466.630415,-611.57814,229.314444, + 0.603443,-0.080198,0.793363,464.090747,-581.165077,236.78619, + 0.603443,-0.187559,0.775035,464.090763,-612.101686,231.466578, + 0.361665,-0.094307,0.927526,458.222215,-581.498327,240.043877, + 0.487278,-0.205664,0.848683,461.269972,-612.537006,233.256044, + 0.487278,-0.088099,0.868791,461.269956,-581.352493,238.618284, + 0.487278,-0.205664,0.848683,461.269972,-612.537006,233.256044, + 0.361665,-0.094307,0.927526,458.222215,-581.498327,240.043877, + 0.361665,-0.219818,0.906024,458.222231,-612.875739,234.648467, + -0.683524,0,-0.729928,127.443487,-186.86272,2030.583133, + -0.582554,0,-0.812792,100.155807,-280.29408,2052.977553, + -0.527988,0,-0.849252,100.155807,-186.86272,2052.977553, + -0.582554,0,-0.812792,100.155807,-280.29408,2052.977553, + -0.683524,0,-0.729928,127.443487,-186.86272,2030.583133, + -0.729928,0,-0.683524,127.443487,-280.29408,2030.583133, + -0.227168,0,0.973856,35.238106,-280.29408,1394.271064, + -0.352162,0,0.935939,69.013887,-186.86272,1404.516835, + -0.162803,0,0.986659,35.238106,-186.86272,1394.271064, + -0.352162,0,0.935939,69.013887,-186.86272,1404.516835, + -0.227168,0,0.973856,35.238106,-280.29408,1394.271064, + -0.412792,0,0.910825,69.013887,-280.29408,1404.516835, + -0.415875,0.792474,-0.446131,439.690616,-735.948584,108.28822, + -0.537771,0.78409,-0.309846,442.839477,-746.337241,82.447316, + -0.415875,0.845875,-0.333982,439.690608,-747.931487,83.075452, + -0.537771,0.78409,-0.309846,442.839477,-746.337241,82.447316, + -0.415875,0.792474,-0.446131,439.690616,-735.948584,108.28822, + -0.537771,0.734555,-0.413801,442.839485,-734.454802,107.448703, + 0.041063,-0.016783,0.999016,599.602099,-549.195708,217.326639, + 0.127347,-0.100746,0.986728,624.955308,-578.912147,214.763349, + 0.148826,-0.01661,0.988724,624.95529,-549.169432,215.762941, + 0.127347,-0.100746,0.986728,624.955308,-578.912147,214.763349, + 0.041063,-0.016783,0.999016,599.602099,-549.195708,217.326639, + 0.030866,-0.101695,0.994337,599.602117,-579.071663,216.32257, + 0,-0.258478,0.966017,0.000035,-613.257542,236.217062, + 0.011271,-0.366548,0.930331,448.317768,-643.817038,226.529669, + 0.01127,-0.236356,0.971601,448.317755,-613.257332,236.21706, + 0.011271,-0.366548,0.930331,448.317768,-643.817038,226.529669, + 0,-0.258478,0.966017,0.000035,-613.257542,236.217062, + 0,-0.387702,0.921785,0.000048,-643.817211,226.529683, + 0,-0.124431,0.992228,473.717738,-579.071732,216.322569, + 0.030867,-0.23624,0.971204,599.602131,-607.23931,211.479086, + 0.030866,-0.101695,0.994337,599.602117,-579.071663,216.32257, + 0.030867,-0.23624,0.971204,599.602131,-607.23931,211.479086, + 0,-0.124431,0.992228,473.717738,-579.071732,216.322569, + 0,-0.258478,0.966017,473.717752,-607.239369,211.479086, + 0.924993,-0.354039,0.138,779.024163,-640.917494,40.911739, + 0.87794,-0.465203,0.113169,767.829322,-666.812843,34.679214, + 0.933102,-0.349421,0.085002,779.024159,-644.605714,29.276931, + 0.87794,-0.465203,0.113169,767.829322,-666.812843,34.679214, + 0.924993,-0.354039,0.138,779.024163,-640.917494,40.911739, + 0.867227,-0.463727,0.18131,767.829328,-662.181333,49.28971, + 0.999748,-0.002792,0.022266,473.717738,-579.071732,216.322569, + 0.995804,-0.023158,0.088537,473.642053,-608.036762,214.756927, + 0.999748,-0.0058,0.021677,473.717752,-607.239369,211.479086, + 0.995804,-0.023158,0.088537,473.642053,-608.036762,214.756927, + 0.999748,-0.002792,0.022266,473.717738,-579.071732,216.322569, + 0.995804,-0.010878,0.090867,473.642039,-579.415029,219.678492, + -0.373111,0.655639,-0.656449,665.021391,-675.601701,125.979113, + -0.494423,0.692194,-0.52575,684.332897,-683.128909,103.191916, + -0.373111,0.738976,-0.560984,665.02139,-690.558191,108.824546, + -0.494423,0.692194,-0.52575,684.332897,-683.128909,103.191916, + -0.373111,0.655639,-0.656449,665.021391,-675.601701,125.979113, + -0.494423,0.614096,-0.615169,684.332898,-669.009253,119.386665, + -0.9698,0.0263,-0.242479,760.201817,-563.621651,65.290458, + -0.9937,0.002257,-0.112046,764.031409,-546.296855,44.770904, + -0.993727,0.012896,-0.111089,764.031418,-561.470422,44.260952, + -0.9937,0.002257,-0.112046,764.031409,-546.296855,44.770904, + -0.9698,0.0263,-0.242479,760.201817,-563.621651,65.290458, + -0.969674,0.004471,-0.24436,760.201807,-546.651151,65.860802, + 0.229024,-0.098699,0.968404,455.006069,-581.599776,241.035583, + 0.361665,-0.219818,0.906024,458.222231,-612.875739,234.648467, + 0.361665,-0.094307,0.927526,458.222215,-581.498327,240.043877, + 0.361665,-0.219818,0.906024,458.222231,-612.875739,234.648467, + 0.229024,-0.098699,0.968404,455.006069,-581.599776,241.035583, + 0.229025,-0.229739,0.945922,455.006085,-613.111378,235.617099, + -0.985345,0.041831,-0.165366,454.431253,-601.562294,188.142314, + -0.999454,0.00493,-0.032673,454.797654,-576.264066,188.875876, + -0.999454,0.009337,-0.031696,454.797666,-600.717836,184.671001, + -0.999454,0.00493,-0.032673,454.797654,-576.264066,188.875876, + -0.985345,0.041831,-0.165366,454.431253,-601.562294,188.142314, + -0.985345,0.018907,-0.169523,454.43124,-576.627626,192.429881, + -0.9698,0.059096,-0.236633,760.201821,-571.352859,63.961061, + -0.993727,0.012896,-0.111089,764.031418,-561.470422,44.260952, + -0.993727,0.027914,-0.108296,764.031421,-566.356087,43.420852, + -0.993727,0.012896,-0.111089,764.031418,-561.470422,44.260952, + -0.9698,0.059096,-0.236633,760.201821,-571.352859,63.961061, + -0.9698,0.0263,-0.242479,760.201817,-563.621651,65.290458, + 0.973657,-0.055392,0.221186,473.101737,-608.824017,217.993091, + 0.932875,-0.133411,0.334583,472.107195,-638.123482,212.079066, + 0.973657,-0.085015,0.211575,473.101749,-636.941768,209.079797, + 0.932875,-0.133411,0.334583,472.107195,-638.123482,212.079066, + 0.973657,-0.055392,0.221186,473.101737,-608.824017,217.993091, + 0.932875,-0.086574,0.349641,472.107183,-609.58601,221.125411, + 0.999748,-0.0087,0.020685,473.717764,-634.484263,202.842487, + 0.995804,-0.046203,0.078997,473.642074,-661.950913,193.514715, + 0.999748,-0.011437,0.019306,473.717772,-660.298148,190.573891, + 0.995804,-0.046203,0.078997,473.642074,-661.950913,193.514715, + 0.999748,-0.0087,0.020685,473.717764,-634.484263,202.842487, + 0.995804,-0.035007,0.084556,473.642065,-635.720877,205.981096, + -0.244971,0.845012,-0.475335,644.636259,-708.826871,93.045557, + -0.373111,0.862993,-0.340635,665.021379,-712.807071,69.236324, + -0.244971,0.901902,-0.355754,644.636252,-718.985715,71.670721, + -0.373111,0.862993,-0.340635,665.021379,-712.807071,69.236324, + -0.244971,0.845012,-0.475335,644.636259,-708.826871,93.045557, + -0.373111,0.808526,-0.455054,665.021386,-703.037584,89.791929, + -0.9721,0.218065,-0.086424,760.201824,-611.21315,29.208214, + -0.99093,0.121368,-0.057682,764.031423,-590.643016,23.357838, + -0.983984,0.16585,-0.065345,763.093075,-596.364509,23.357838, + -0.99093,0.121368,-0.057682,764.031423,-590.643016,23.357838, + -0.9721,0.218065,-0.086424,760.201824,-611.21315,29.208214, + -0.993727,0.098232,-0.053457,764.031424,-589.417442,25.936523, + -0.993727,0.098232,-0.053457,764.031424,-589.417442,25.936523, + -0.9721,0.218065,-0.086424,760.201824,-611.21315,29.208214, + -0.9698,0.213348,-0.118196,760.201826,-607.845772,36.293385, + -0.748179,0.529432,-0.399912,448.282017,-715.574197,127.790857, + -0.832687,0.392486,-0.390624,450.471126,-695.789522,146.166935, + -0.832687,0.442054,-0.333498,450.471124,-713.308606,126.073164, + -0.832687,0.392486,-0.390624,450.471126,-695.789522,146.166935, + -0.748179,0.529432,-0.399912,448.282017,-715.574197,127.790857, + -0.748179,0.469999,-0.468325,448.282019,-697.799917,148.177329, + 0.499663,-0.805647,0.318231,696.758793,-728.459324,75.40331, + 0.381503,-0.805545,0.453379,673.957376,-727.485522,103.531853, + 0.381503,-0.859811,0.339381,673.957369,-738.899253,79.516658, + 0.381503,-0.805545,0.453379,673.957376,-727.485522,103.531853, + 0.499663,-0.805647,0.318231,696.758793,-728.459324,75.40331, + 0.499663,-0.754768,0.425045,696.7588,-717.703482,98.034266, + 0.256673,-0.842365,0.473857,649.884119,-734.568562,107.512581, + 0.127347,-0.790262,0.59939,624.955347,-723.275771,133.6299, + 0.127347,-0.864568,0.486113,624.955342,-738.83011,109.90761, + 0.127347,-0.790262,0.59939,624.955347,-723.275771,133.6299, + 0.256673,-0.842365,0.473857,649.884119,-734.568562,107.512581, + 0.256673,-0.769937,0.584223,649.884124,-719.380332,130.676509, + 0.932875,-0.335664,0.130666,472.107195,-761.701654,88.500895, + 0.874212,-0.47211,0.113426,470.677497,-773.716304,60.685516, + 0.932875,-0.350339,0.083707,472.107183,-770.747999,59.963422, + 0.874212,-0.47211,0.113426,470.677497,-773.716304,60.685516, + 0.932875,-0.335664,0.130666,472.107195,-761.701654,88.500895, + 0.874212,-0.45225,0.176701,470.677509,-764.543874,89.620732, + -0.040706,0.970848,-0.236215,429.267752,-758.636494,57.017104, + -0.150374,0.983472,-0.100844,432.838915,-763.131306,29.161323, + -0.040706,0.99398,-0.101718,429.267738,-763.421251,29.190985, + -0.150374,0.983472,-0.100844,432.838915,-763.131306,29.161323, + -0.040706,0.970848,-0.236215,429.267752,-758.636494,57.017104, + -0.150374,0.960557,-0.233917,432.83893,-758.353294,56.948209, + -0.040706,0.706494,-0.706547,429.267778,-703.948313,154.325725, + -0.150375,0.787661,-0.597476,432.838954,-722.270805,132.867998, + -0.040706,0.796183,-0.603686,429.267777,-722.503059,133.044086, + -0.150375,0.787661,-0.597476,432.838954,-722.270805,132.867998, + -0.040706,0.706494,-0.706547,429.267778,-703.948313,154.325725, + -0.150375,0.698898,-0.699234,432.838956,-703.74222,154.119632, + -0.656747,0.730839,-0.185896,445.721721,-752.628988,55.555664, + -0.754707,0.651908,-0.073718,448.28198,-754.771252,28.306118, + -0.649249,0.756522,-0.078421,445.721707,-757.270639,28.561795, + -0.754707,0.651908,-0.073718,448.28198,-754.771252,28.306118, + -0.656747,0.730839,-0.185896,445.721721,-752.628988,55.555664, + -0.757296,0.632534,-0.162491,448.281994,-750.187755,54.961789, + 0.361665,-0.742579,0.563715,458.222259,-743.526109,148.983038, + 0.229025,-0.688056,0.688568,455.006115,-723.308225,173.685638, + 0.229025,-0.775467,0.588387,455.006113,-744.32049,149.585311, + 0.229025,-0.688056,0.688568,455.006115,-723.308225,173.685638, + 0.361665,-0.742579,0.563715,458.222259,-743.526109,148.983038, + 0.361665,-0.658837,0.659646,458.22226,-722.603323,172.980735, + -0.748179,0.469999,-0.468325,448.282019,-697.799917,148.177329, + -0.832687,0.335596,-0.440463,450.471124,-675.695751,163.686019, + -0.832687,0.392486,-0.390624,450.471126,-695.789522,146.166935, + -0.832687,0.335596,-0.440463,450.471124,-675.695751,163.686019, + -0.748179,0.469999,-0.468325,448.282019,-697.799917,148.177329, + -0.748179,0.401798,-0.528002,448.282017,-677.413444,165.951609, + 0.932875,-0.255741,0.253655,472.107211,-712.762199,163.139612, + 0.874212,-0.387747,0.292242,470.677524,-734.870094,142.420342, + 0.932875,-0.28792,0.21644,472.107209,-732.43577,140.574721, + 0.874212,-0.387747,0.292242,470.677524,-734.870094,142.420342, + 0.932875,-0.255741,0.253655,472.107211,-712.762199,163.139612, + 0.874212,-0.344308,0.342352,470.677525,-714.922322,165.299734, + 0.874212,-0.344308,0.342352,470.677525,-714.922322,165.299734, + 0.79876,-0.480196,0.362483,468.840169,-737.123146,144.128529, + 0.874212,-0.387747,0.292242,470.677524,-734.870094,142.420342, + 0.79876,-0.480196,0.362483,468.840169,-737.123146,144.128529, + 0.874212,-0.344308,0.342352,470.677525,-714.922322,165.299734, + 0.79876,-0.426323,0.424536,468.840171,-716.92159,167.299002, + 0.011271,-0.930329,0.366553,448.317768,-776.152256,94.194451, + 0,-0.882708,0.469921,0.000057,-762.391004,123.149179, + 0,-0.938509,0.345255,0.000048,-776.152271,94.194624, + 0,-0.882708,0.469921,0.000057,-762.391004,123.149179, + 0.011271,-0.930329,0.366553,448.317768,-776.152256,94.194451, + 0.011271,-0.871702,0.489906,448.317778,-762.390973,123.149041, + -0.999454,0.024455,-0.02222,454.797689,-686.233268,136.610681, + -0.999345,-0.022513,0.028328,454.66777,-665.3625,150.056742, + -0.999345,-0.026163,0.024996,454.667771,-683.695448,134.072861, + -0.999345,-0.022513,0.028328,454.66777,-665.3625,150.056742, + -0.999454,0.024455,-0.02222,454.797689,-686.233268,136.610681, + -0.999454,0.021199,-0.025346,454.797688,-667.530829,152.916709, + -0.537771,0.308263,-0.784714,442.839477,-632.069904,196.714653, + -0.415875,0.214324,-0.883806,439.690597,-606.087584,206.744382, + -0.537771,0.198458,-0.8194,442.839466,-605.68255,205.079413, + -0.415875,0.214324,-0.883806,439.690597,-606.087584,206.744382, + -0.537771,0.308263,-0.784714,442.839477,-632.069904,196.714653, + -0.415875,0.332758,-0.846357,439.690608,-632.698039,198.308899, + -0.748179,0.578988,-0.324038,448.282012,-730.404697,105.172511, + -0.832687,0.442054,-0.333498,450.471124,-713.308606,126.073164, + -0.832687,0.483376,-0.27015,450.47112,-727.926176,103.779563, + -0.832687,0.442054,-0.333498,450.471124,-713.308606,126.073164, + -0.748179,0.578988,-0.324038,448.282012,-730.404697,105.172511, + -0.748179,0.529432,-0.399912,448.282017,-715.574197,127.790857, + -0.415875,0.091892,-0.904767,439.690582,-578.575874,211.475076, + -0.285329,0.015988,-0.958296,436.33557,-549.135218,213.722949, + -0.41512,0.01512,-0.909641,439.690565,-549.114088,212.465226, + -0.285329,0.015988,-0.958296,436.33557,-549.135218,213.722949, + -0.415875,0.091892,-0.904767,439.690582,-578.575874,211.475076, + -0.285905,0.097067,-0.953329,436.335587,-578.704167,212.729198, + -0.832687,0.204213,-0.514714,450.471112,-629.324619,189.746946, + -0.901181,0.103838,-0.42082,452.246991,-603.175034,194.771794, + -0.901181,0.160213,-0.402745,452.247002,-628.181199,186.84487, + -0.901181,0.103838,-0.42082,452.246991,-603.175034,194.771794, + -0.832687,0.204213,-0.514714,450.471112,-629.324619,189.746946, + -0.832687,0.13217,-0.53774,450.471101,-603.912334,197.80261, + 0.381503,-0.91951,0.094637,673.957345,-751.440053,27.965226, + 0.256673,-0.939019,0.228829,649.8841,-754.828812,56.090715, + 0.256672,-0.961442,0.098738,649.884086,-759.522868,28.792076, + 0.256673,-0.939019,0.228829,649.8841,-754.828812,56.090715, + 0.381503,-0.91951,0.094637,673.957345,-751.440053,27.965226, + 0.381503,-0.898037,0.219052,673.957358,-746.934061,54.170165, + 0.625544,-0.013105,0.780079,717.89403,-548.526532,177.494989, + 0.691408,-0,0.722464,736.997652,-186.86272,160.753391, + 0.590628,-0,0.806944,717.89403,-186.86272,177.494989, + 0.691408,-0,0.722464,736.997652,-186.86272,160.753391, + 0.625544,-0.013105,0.780079,717.89403,-548.526532,177.494989, + 0.716411,-0.0095,0.697614,736.997652,-548.24528,160.753391, + -0.022557,0.36647,-0.930156,602.133289,-623.054827,173.833938, + -0,0.258478,-0.966017,454.667749,-599.869485,181.183687, + -0.022557,0.236303,-0.971418,602.13328,-599.869416,181.183686, + -0,0.258478,-0.966017,454.667749,-599.869485,181.183687, + -0.022557,0.36647,-0.930156,602.133289,-623.054827,173.833938, + -0,0.387702,-0.921785,454.667758,-623.054884,173.833943, + 0.499663,-0.689808,0.523929,696.758805,-703.964135,118.988469, + 0.381503,-0.653222,0.654031,673.957383,-695.432071,145.809483, + 0.381503,-0.736251,0.558918,673.957381,-712.905798,125.767735, + 0.381503,-0.653222,0.654031,673.957383,-695.432071,145.809483, + 0.499663,-0.689808,0.523929,696.758805,-703.964135,118.988469, + 0.499663,-0.61198,0.61304,696.758806,-687.497596,137.875009, + -0.901181,0.40379,-0.157562,452.247002,-736.467457,78.558611, + -0.952384,0.266534,-0.148066,453.575567,-722.299342,100.61724, + -0.952384,0.284225,-0.110366,453.575559,-733.364268,77.335952, + -0.952384,0.266534,-0.148066,453.575567,-722.299342,100.61724, + -0.901181,0.40379,-0.157562,452.247002,-736.467457,78.558611, + -0.901181,0.378553,-0.211115,452.247009,-725.206979,102.251354, + 0.381503,-0.805545,0.453379,673.957376,-727.485522,103.531853, + 0.256673,-0.769937,0.584223,649.884124,-719.380332,130.676509, + 0.256673,-0.842365,0.473857,649.884119,-734.568562,107.512581, + 0.256673,-0.769937,0.584223,649.884124,-719.380332,130.676509, + 0.381503,-0.805545,0.453379,673.957376,-727.485522,103.531853, + 0.381503,-0.736251,0.558918,673.957381,-712.905798,125.767735, + -0.606606,0.46573,-0.644302,702.22136,-645.663324,124.074113, + -0.494423,0.4252,-0.758123,684.332893,-634.846784,145.287478, + -0.595888,0.383438,-0.705615,702.221357,-629.047597,134.968788, + -0.494423,0.4252,-0.758123,684.332893,-634.846784,145.287478, + -0.606606,0.46573,-0.644302,702.22136,-645.663324,124.074113, + -0.494423,0.524541,-0.693111,684.332897,-652.814504,133.506322, + -0.244971,0.585448,-0.772813,644.636264,-662.459295,146.227532, + -0.112343,0.486683,-0.866325,623.546362,-644.548798,162.550587, + -0.244971,0.474679,-0.845381,644.636259,-642.668145,159.204284, + -0.112343,0.486683,-0.866325,623.546362,-644.548798,162.550587, + -0.244971,0.585448,-0.772813,644.636264,-662.459295,146.227532, + -0.112343,0.600194,-0.791925,623.546367,-664.778393,149.286355, + 0.030867,-0.871333,0.489721,599.602151,-740.19647,110.675522, + 0,-0.81044,0.585821,473.717777,-724.524762,134.576865, + 0,-0.882708,0.469921,473.717772,-740.196479,110.67556, + 0,-0.81044,0.585821,473.717777,-724.524762,134.576865, + 0.030867,-0.871333,0.489721,599.602151,-740.19647,110.675522, + 0.030867,-0.796473,0.603886,599.602156,-724.524748,134.576836, + 0.993395,-0.114677,0.003853,473.642035,-769.517334,23.357838, + 0.978666,-0.204393,0.020908,473.101722,-772.614333,30.131373, + 0.967989,-0.250852,0.00843,473.101718,-772.841978,23.357838, + 0.978666,-0.204393,0.020908,473.101722,-772.614333,30.131373, + 0.993395,-0.114677,0.003853,473.642035,-769.517334,23.357838, + 0.997653,-0.068124,0.006968,473.642039,-769.30108,29.792441, + -0.040706,0.603626,-0.796228,429.267777,-682.666673,172.880471, + -0,0.509694,-0.860356,0.016298,-659.055291,188.362206, + -0.040706,0.489496,-0.871055,429.267772,-659.055159,188.362176, + -0,0.509694,-0.860356,0.016298,-659.055291,188.362206, + -0.040706,0.603626,-0.796228,429.267777,-682.666673,172.880471, + -0,0.622177,-0.782877,0.016303,-682.666775,172.880521, + -0.150375,0.597097,-0.787948,432.838954,-682.490586,172.648217, + -0.040706,0.489496,-0.871055,429.267772,-659.055159,188.362176, + -0.150375,0.484157,-0.861963,432.838949,-658.912362,188.108094, + -0.040706,0.489496,-0.871055,429.267772,-659.055159,188.362176, + -0.150375,0.597097,-0.787948,432.838954,-682.490586,172.648217, + -0.040706,0.603626,-0.796228,429.267777,-682.666673,172.880471, + 0.707932,-0.427595,0.562134,466.630442,-695.289055,189.529057, + 0.603343,-0.550894,0.576621,464.090792,-720.287768,170.665181, + 0.707932,-0.500206,0.498623,466.630444,-718.721598,169.09901, + 0.603343,-0.550894,0.576621,464.090792,-720.287768,170.665181, + 0.707932,-0.427595,0.562134,466.630442,-695.289055,189.529057, + 0.603343,-0.467182,0.646311,464.09079,-696.627201,191.294034, + 0.011271,-0.604116,0.796817,448.317783,-699.580941,195.189934, + 0.091928,-0.70401,0.704215,451.683346,-723.691181,174.068594, + 0.091928,-0.601482,0.793579,451.683345,-699.535099,195.12947, + 0.091928,-0.70401,0.704215,451.683346,-723.691181,174.068594, + 0.011271,-0.604116,0.796817,448.317783,-699.580941,195.189934, + 0.011271,-0.70706,0.707064,448.317785,-723.744835,174.122247, + -0.150375,0.362184,-0.919897,432.838941,-633.447412,200.210852, + -0.040706,0.236142,-0.970866,429.267752,-606.639691,209.013907, + -0.150374,0.233455,-0.96067,432.83893,-606.570796,208.730707, + -0.040706,0.236142,-0.970866,429.267752,-606.639691,209.013907, + -0.150375,0.362184,-0.919897,432.838941,-633.447412,200.210852, + -0.040706,0.366235,-0.929632,429.267763,-633.554255,200.482022, + 0.091928,-0.235232,0.967582,451.683317,-613.239395,236.143333, + 0.229025,-0.356494,0.905793,455.006098,-643.590692,225.955193, + 0.229025,-0.229739,0.945922,455.006085,-613.111378,235.617099, + 0.229025,-0.356494,0.905793,455.006098,-643.590692,225.955193, + 0.091928,-0.235232,0.967582,451.683317,-613.239395,236.143333, + 0.091928,-0.364886,0.926503,451.68333,-643.789223,226.459074, + 0,0,1,0.179984,-280.29408,2125.502553, + 0,0,1,46.868397,-186.86272,2125.502553, + 0,0,1,0.179984,-186.86272,2125.502553, + 0,0,1,46.868397,-186.86272,2125.502553, + 0,0,1,0.179984,-280.29408,2125.502553, + 0,0,1,46.868397,-280.29408,2125.502553, + -0.606606,0.46573,-0.644302,702.22136,-645.663324,124.074113, + -0.701084,0.343733,-0.624763,718.363103,-622.121887,122.645633, + -0.707932,0.427569,-0.562154,718.363107,-637.122986,112.809644, + -0.701084,0.343733,-0.624763,718.363103,-622.121887,122.645633, + -0.606606,0.46573,-0.644302,702.22136,-645.663324,124.074113, + -0.595888,0.383438,-0.705615,702.221357,-629.047597,134.968788, + 0.783922,-0.620509,0.020854,468.840122,-781.931785,23.357838, + 0.714887,-0.69482,0.078501,466.630399,-784.205377,31.31709, + 0.690548,-0.722878,0.024294,466.630394,-784.472872,23.357838, + 0.714887,-0.69482,0.078501,466.630399,-784.205377,31.31709, + 0.783922,-0.620509,0.020854,468.840122,-781.931785,23.357838, + 0.812465,-0.579983,0.059329,468.840127,-781.672997,31.058037, + -0.952384,0.216659,-0.21453,453.575573,-691.225448,141.602861, + -0.985345,0.104291,-0.134978,454.431275,-669.689209,155.763554, + -0.985345,0.121711,-0.119507,454.431277,-688.759444,139.136857, + -0.985345,0.104291,-0.134978,454.431275,-669.689209,155.763554, + -0.952384,0.216659,-0.21453,453.575573,-691.225448,141.602861, + -0.952384,0.185405,-0.242052,453.575571,-671.796178,158.542589, + 0.229024,-0.96833,0.09942,455.006069,-790.65817,31.977188, + 0.091928,-0.967513,0.235514,451.683317,-785.765921,63.616808, + 0.091928,-0.990581,0.101478,451.683301,-791.19694,32.032304, + 0.091928,-0.967513,0.235514,451.683317,-785.765921,63.616808, + 0.229024,-0.96833,0.09942,455.006069,-790.65817,31.977188, + 0.229025,-0.94575,0.230443,455.006085,-785.239687,63.48879, + -0.796291,0.366435,-0.481296,732.466066,-627.348021,99.916734, + -0.870211,0.242544,-0.428841,744.275056,-605.410265,92.910065, + -0.870211,0.298718,-0.391791,744.275058,-616.515297,85.628667, + -0.870211,0.242544,-0.428841,744.275056,-605.410265,92.910065, + -0.796291,0.366435,-0.481296,732.466066,-627.348021,99.916734, + -0.796291,0.297433,-0.526739,732.466063,-614.194966,108.540989, + 0.487278,-0.205664,0.848683,461.269972,-612.537006,233.256044, + 0.603443,-0.29142,0.742247,464.090775,-642.024843,221.980973, + 0.603443,-0.187559,0.775035,464.090763,-612.101686,231.466578, + 0.603443,-0.29142,0.742247,464.090775,-642.024843,221.980973, + 0.487278,-0.205664,0.848683,461.269972,-612.537006,233.256044, + 0.487278,-0.319392,0.812741,461.269985,-642.699947,223.694428, + -0.112343,0.600194,-0.791925,623.546367,-664.778393,149.286355, + -0.022557,0.4898,-0.871543,602.133296,-645.022449,163.39336, + -0.112343,0.486683,-0.866325,623.546362,-644.548798,162.550587, + -0.022557,0.4898,-0.871543,602.133296,-645.022449,163.39336, + -0.112343,0.600194,-0.791925,623.546367,-664.778393,149.286355, + -0.022557,0.603993,-0.79667,602.133301,-665.362465,150.056725, + -0,0.723053,-0.690793,0.016305,-703.948386,154.325799, + -0.040706,0.796183,-0.603686,429.267777,-722.503059,133.044086, + -0,0.81044,-0.585821,0.016303,-722.503108,133.044187, + -0.040706,0.796183,-0.603686,429.267777,-722.503059,133.044086, + -0,0.723053,-0.690793,0.016305,-703.948386,154.325799, + -0.040706,0.706494,-0.706547,429.267778,-703.948313,154.325725, + -0.649152,0.44561,-0.616469,445.721745,-678.931346,167.953679, + -0.537771,0.412318,-0.735388,442.839485,-657.07129,184.832214, + -0.649152,0.35745,-0.67144,445.72174,-656.026027,182.972343, + -0.537771,0.412318,-0.735388,442.839485,-657.07129,184.832214, + -0.649152,0.44561,-0.616469,445.721745,-678.931346,167.953679, + -0.537771,0.508681,-0.672344,442.83949,-680.220296,169.653769, + 0.603343,-0.62433,0.496175,464.09079,-740.916622,147.004613, + 0.487279,-0.616933,0.618023,461.270002,-721.590015,171.967428, + 0.487279,-0.695395,0.528191,461.27,-742.384174,148.117261, + 0.487279,-0.616933,0.618023,461.270002,-721.590015,171.967428, + 0.603343,-0.62433,0.496175,464.09079,-740.916622,147.004613, + 0.603343,-0.550894,0.576621,464.090792,-720.287768,170.665181, + 0.487279,-0.695395,0.528191,461.27,-742.384174,148.117261, + 0.361665,-0.658837,0.659646,458.22226,-722.603323,172.980735, + 0.361665,-0.742579,0.563715,458.222259,-743.526109,148.983038, + 0.361665,-0.658837,0.659646,458.22226,-722.603323,172.980735, + 0.487279,-0.695395,0.528191,461.27,-742.384174,148.117261, + 0.487279,-0.616933,0.618023,461.270002,-721.590015,171.967428, + 0.114758,-0.016686,0.993253,451.683281,-549.621181,242.65094, + 0.20592,0,0.978569,455.00605,-186.86272,242.110623, + 0.068639,0,0.997642,451.683281,-186.86272,242.65094, + 0.20592,0,0.978569,455.00605,-186.86272,242.110623, + 0.114758,-0.016686,0.993253,451.683281,-549.621181,242.65094, + 0.251027,-0.016259,0.967844,455.00605,-549.612103,242.110623, + 0.707932,-0.500166,0.498664,736.997697,-665.645303,116.022715, + 0.609002,-0.620953,0.493491,717.894078,-692.709977,110.455949, + 0.707932,-0.563451,0.425857,736.997696,-679.337949,100.317733, + 0.609002,-0.620953,0.493491,717.894078,-692.709977,110.455949, + 0.707932,-0.500166,0.498664,736.997697,-665.645303,116.022715, + 0.609002,-0.547915,0.573503,717.894079,-677.511106,127.888519, + 0.609002,-0.620953,0.493491,717.894078,-692.709977,110.455949, + 0.499663,-0.61198,0.61304,696.758806,-687.497596,137.875009, + 0.499663,-0.689808,0.523929,696.758805,-703.964135,118.988469, + 0.499663,-0.61198,0.61304,696.758806,-687.497596,137.875009, + 0.609002,-0.620953,0.493491,717.894078,-692.709977,110.455949, + 0.609002,-0.547915,0.573503,717.894079,-677.511106,127.888519, + 0.855563,-0.510212,0.087731,767.829317,-668.759577,23.357838, + 0.800126,-0.584324,0.13551,753.739273,-687.397248,39.686742, + 0.780232,-0.616443,0.105998,753.739265,-690.205036,23.357838, + 0.800126,-0.584324,0.13551,753.739273,-687.397248,39.686742, + 0.855563,-0.510212,0.087731,767.829317,-668.759577,23.357838, + 0.87794,-0.465203,0.113169,767.829322,-666.812843,34.679214, + -0.537771,0.595553,-0.596756,442.839492,-701.085065,151.462478, + -0.415875,0.548909,-0.725084,439.690621,-681.255534,171.01922, + -0.537771,0.508681,-0.672344,442.83949,-680.220296,169.653769, + -0.415875,0.548909,-0.725084,439.690621,-681.255534,171.01922, + -0.537771,0.595553,-0.596756,442.839492,-701.085065,151.462478, + -0.415875,0.642593,-0.643523,439.690622,-702.296712,152.674124, + 0.361665,-0.905753,0.220929,458.222231,-784.271055,63.253152, + 0.229025,-0.905527,0.357167,455.006098,-775.57778,93.968105, + 0.229025,-0.94575,0.230443,455.006085,-785.239687,63.48879, + 0.229025,-0.905527,0.357167,455.006098,-775.57778,93.968105, + 0.361665,-0.905753,0.220929,458.222231,-784.271055,63.253152, + 0.361665,-0.867199,0.342292,458.222244,-774.650293,93.602673, + 0.229025,-0.94575,0.230443,455.006085,-785.239687,63.48879, + 0.091928,-0.926396,0.365157,451.68333,-776.081661,94.166635, + 0.091928,-0.967513,0.235514,451.683317,-785.765921,63.616808, + 0.091928,-0.926396,0.365157,451.68333,-776.081661,94.166635, + 0.229025,-0.94575,0.230443,455.006085,-785.239687,63.48879, + 0.229025,-0.905527,0.357167,455.006098,-775.57778,93.968105, + 0.986627,-0.162996,-0,843.130723,-608.452917,-0, + 0.971349,-0.237659,-0,838.782877,-630.311015,23.357838, + 0.960042,-0.279856,-0,838.782877,-630.311015,-0, + 0.971349,-0.237659,-0,838.782877,-630.311015,23.357838, + 0.986627,-0.162996,-0,843.130723,-608.452917,-0, + 0.991423,-0.130694,-0,843.130723,-608.452917,23.357838, + 0.691493,-0.722383,-0,772.221089,-745.599413,-0, + 0.625945,-0.779867,-0,746.929123,-767.779872,23.357838, + 0.591287,-0.806461,-0,746.929123,-767.779872,-0, + 0.625945,-0.779867,-0,746.929123,-767.779872,23.357838, + 0.691493,-0.722383,-0,772.221089,-745.599413,-0, + 0.722383,-0.691493,-0,772.221089,-745.599413,23.357838, + -0.614316,0.68383,-0.393691,702.221357,-684.591376,79.42501, + -0.707932,0.563466,-0.425837,718.363107,-662.432231,87.500399, + -0.71736,0.602889,-0.34917,718.363103,-672.268221,72.499299, + -0.707932,0.563466,-0.425837,718.363107,-662.432231,87.500399, + -0.614316,0.68383,-0.393691,702.221357,-684.591376,79.42501, + -0.606606,0.622389,-0.494632,702.22136,-673.696701,96.040736, + -0.537771,0.818998,-0.200111,442.839466,-754.702001,56.059962, + -0.649249,0.756522,-0.078421,445.721707,-757.270639,28.561795, + -0.537771,0.838627,-0.086642,442.839452,-759.393033,28.778909, + -0.649249,0.756522,-0.078421,445.721707,-757.270639,28.561795, + -0.537771,0.818998,-0.200111,442.839466,-754.702001,56.059962, + -0.656747,0.730839,-0.185896,445.721721,-752.628988,55.555664, + 1,-0,-0,847.545902,-186.86272,0, + 0.999698,-0.024594,-0,847.545902,-563.749227,23.357838, + 0.997846,-0.065595,-0,847.545902,-563.749227,0, + 0.999698,-0.024594,-0,847.545902,-563.749227,23.357838, + 1,-0,-0,847.545902,-186.86272,0, + 1,-0,-0,847.545902,56.185652,0, + 0.999698,-0.024594,-0,847.545902,-563.749227,23.357838, + 1,-0,-0,847.545902,56.185652,0, + 1,-0,-0,847.545902,56.185652,23.357838, + -0.754707,0.651908,-0.073718,448.28198,-754.771252,28.306118, + -0.819027,0.573431,-0.019271,450.471085,-752.099463,23.357838, + -0.731829,0.681103,-0.02289,448.281977,-754.937554,23.357838, + -0.819027,0.573431,-0.019271,450.471085,-752.099463,23.357838, + -0.754707,0.651908,-0.073718,448.28198,-754.771252,28.306118, + -0.845271,0.531564,-0.054376,450.471088,-751.942886,28.016787, + 0.780232,-0,0.62549,753.73925,-186.86272,141.649769, + 0.716411,-0.0095,0.697614,736.997652,-548.24528,160.753391, + 0.793821,-0.010508,0.608061,753.73925,-547.924349,141.649769, + 0.716411,-0.0095,0.697614,736.997652,-548.24528,160.753391, + 0.780232,-0,0.62549,753.73925,-186.86272,141.649769, + 0.691408,-0,0.722464,736.997652,-186.86272,160.753391, + -0.999454,0.021199,-0.025346,454.797688,-667.530829,152.916709, + -0.999345,-0.018443,0.031131,454.667766,-645.022494,163.39337, + -0.999345,-0.022513,0.028328,454.66777,-665.3625,150.056742, + -0.999345,-0.018443,0.031131,454.667766,-645.022494,163.39337, + -0.999454,0.021199,-0.025346,454.797688,-667.530829,152.916709, + -0.999454,0.017548,-0.027998,454.797683,-646.780881,166.522129, + -0.613495,0.011257,-0.789618,702.221319,-548.126642,153.690618, + -0.512963,0,-0.858411,684.332852,-186.86272,165.499615, + -0.605809,0,-0.79561,702.221319,-186.86272,153.690618, + -0.512963,0,-0.858411,684.332852,-186.86272,165.499615, + -0.613495,0.011257,-0.789618,702.221319,-548.126642,153.690618, + -0.493603,0.014422,-0.869568,684.332852,-548.325029,165.499615, + -0.150375,0.787661,-0.597476,432.838954,-722.270805,132.867998, + -0.285905,0.835148,-0.469878,436.335621,-737.047581,108.905866, + -0.150375,0.86173,-0.484571,432.838949,-737.730682,109.289775, + -0.285905,0.835148,-0.469878,436.335621,-737.047581,108.905866, + -0.150375,0.787661,-0.597476,432.838954,-722.270805,132.867998, + -0.285905,0.76333,-0.579298,436.335626,-721.646389,132.394587, + -0.040617,0.016774,-0.999034,429.26772,-549.153238,214.795487, + 0,0,-1,0.016247,-186.86272,214.795487, + -0.054143,0,-0.998533,429.26772,-186.86272,214.795487, + 0,0,-1,0.016247,-186.86272,214.795487, + -0.040617,0.016774,-0.999034,429.26772,-549.153238,214.795487, + -0,0.022395,-0.999749,0.016247,-549.153365,214.795487, + -0.415875,0.642593,-0.643523,439.690622,-702.296712,152.674124, + -0.285905,0.578577,-0.763876,436.335626,-682.017175,172.023802, + -0.415875,0.548909,-0.725084,439.690621,-681.255534,171.01922, + -0.285905,0.578577,-0.763876,436.335626,-682.017175,172.023802, + -0.415875,0.642593,-0.643523,439.690622,-702.296712,152.674124, + -0.285905,0.677271,-0.67791,436.335627,-703.188138,153.565551, + 0.381503,-0.859811,0.339381,673.957369,-738.899253,79.516658, + 0.256673,-0.842365,0.473857,649.884119,-734.568562,107.512581, + 0.256673,-0.899078,0.354651,649.884111,-746.45866,82.495079, + 0.256673,-0.842365,0.473857,649.884119,-734.568562,107.512581, + 0.381503,-0.859811,0.339381,673.957369,-738.899253,79.516658, + 0.381503,-0.805545,0.453379,673.957376,-727.485522,103.531853, + -0.870211,0.458871,-0.17936,744.275052,-648.232891,43.794023, + -0.928388,0.324653,-0.180823,753.57641,-625.658276,46.304148, + -0.928388,0.346265,-0.134897,753.576407,-630.223631,36.698359, + -0.928388,0.324653,-0.180823,753.57641,-625.658276,46.304148, + -0.870211,0.458871,-0.17936,744.275052,-648.232891,43.794023, + -0.870211,0.43015,-0.240215,744.275056,-642.532652,55.787678, + 0.487278,-0.868635,0.089632,461.269956,-788.240871,31.729906, + 0.361665,-0.905753,0.220929,458.222231,-784.271055,63.253152, + 0.361665,-0.92741,0.095445,458.222215,-789.666464,31.875739, + 0.361665,-0.905753,0.220929,458.222231,-784.271055,63.253152, + 0.487278,-0.868635,0.089632,461.269956,-788.240871,31.729906, + 0.487278,-0.848318,0.207161,461.269972,-782.878631,62.914419, + 0.947715,-0.314502,0.054079,787.130183,-621.196954,23.357838, + 0.933102,-0.349421,0.085002,779.024159,-644.605714,29.276931, + 0.916097,-0.395156,0.067947,779.024156,-645.623514,23.357838, + 0.933102,-0.349421,0.085002,779.024159,-644.605714,29.276931, + 0.947715,-0.314502,0.054079,787.130183,-621.196954,23.357838, + 0.966774,-0.246753,0.066789,787.130183,-621.159902,23.573317, + 0.916097,-0.395156,0.067947,779.024156,-645.623514,23.357838, + 0.87794,-0.465203,0.113169,767.829322,-666.812843,34.679214, + 0.855563,-0.510212,0.087731,767.829317,-668.759577,23.357838, + 0.87794,-0.465203,0.113169,767.829322,-666.812843,34.679214, + 0.916097,-0.395156,0.067947,779.024156,-645.623514,23.357838, + 0.933102,-0.349421,0.085002,779.024159,-644.605714,29.276931, + 0.487278,-0.812176,0.320826,461.269985,-773.317015,93.077359, + 0.361665,-0.812468,0.457269,458.222253,-760.983658,122.358117, + 0.361665,-0.867199,0.342292,458.222244,-774.650293,93.602673, + 0.361665,-0.812468,0.457269,458.222253,-760.983658,122.358117, + 0.487278,-0.812176,0.320826,461.269985,-773.317015,93.077359, + 0.487279,-0.760883,0.428506,461.269994,-759.734399,121.656023, + 0.973657,-0.162317,0.16014,473.101765,-710.482719,160.860131, + 0.932875,-0.28792,0.21644,472.107209,-732.43577,140.574721, + 0.973657,-0.182625,0.136528,473.101763,-729.866936,138.627118, + 0.932875,-0.28792,0.21644,472.107209,-732.43577,140.574721, + 0.973657,-0.162317,0.16014,473.101765,-710.482719,160.860131, + 0.932875,-0.255741,0.253655,472.107211,-712.762199,163.139612, + 0.091928,-0.990581,0.101478,451.683301,-791.19694,32.032304, + 0.01127,-0.9716,0.236362,448.317755,-785.839647,63.634744, + 0.00966,-0.995709,0.092029,448.317739,-791.272422,32.040027, + 0.01127,-0.9716,0.236362,448.317755,-785.839647,63.634744, + 0.091928,-0.990581,0.101478,451.683301,-791.19694,32.032304, + 0.091928,-0.967513,0.235514,451.683317,-785.765921,63.616808, + 0.229025,-0.775467,0.588387,455.006113,-744.32049,149.585311, + 0.091928,-0.70401,0.704215,451.683346,-723.691181,174.068594, + 0.091928,-0.793404,0.601714,451.683345,-744.752058,149.912511, + 0.091928,-0.70401,0.704215,451.683346,-723.691181,174.068594, + 0.229025,-0.775467,0.588387,455.006113,-744.32049,149.585311, + 0.229025,-0.688056,0.688568,455.006115,-723.308225,173.685638, + 0.091928,-0.793404,0.601714,451.683345,-744.752058,149.912511, + 0.011271,-0.70706,0.707064,448.317785,-723.744835,174.122247, + 0.011271,-0.796813,0.60412,448.317783,-744.812521,149.958353, + 0.011271,-0.70706,0.707064,448.317785,-723.744835,174.122247, + 0.091928,-0.793404,0.601714,451.683345,-744.752058,149.912511, + 0.091928,-0.70401,0.704215,451.683346,-723.691181,174.068594, + 0.011271,-0.796813,0.60412,448.317783,-744.812521,149.958353, + 0,-0.723053,0.690793,0.000065,-723.744912,174.122324, + 0,-0.81044,0.585821,0.000063,-744.812573,149.958459, + 0,-0.723053,0.690793,0.000065,-723.744912,174.122324, + 0.011271,-0.796813,0.60412,448.317783,-744.812521,149.958353, + 0.011271,-0.70706,0.707064,448.317785,-723.744835,174.122247, + 0.256673,-0.353935,0.899361,649.884111,-632.117666,196.836073, + 0.381503,-0.452381,0.806106,673.957376,-653.15444,177.862935, + 0.381503,-0.338316,0.860231,673.957369,-629.139245,189.276665, + 0.381503,-0.452381,0.806106,673.957376,-653.15444,177.862935, + 0.256673,-0.353935,0.899361,649.884111,-632.117666,196.836073, + 0.256673,-0.473186,0.842742,649.884119,-657.135168,184.945974, + 0.779867,-0.625945,-0,794.401548,-720.307447,-0, + 0.722383,-0.691493,-0,772.221089,-745.599413,23.357838, + 0.691493,-0.722383,-0,772.221089,-745.599413,-0, + 0.722383,-0.691493,-0,772.221089,-745.599413,23.357838, + 0.779867,-0.625945,-0,794.401548,-720.307447,-0, + 0.806461,-0.591287,-0,794.401548,-720.307447,23.357838, + 0.620913,-0.013167,0.783769,464.090728,-549.540509,237.849027, + 0.707107,0,0.707107,466.63038,-186.86272,235.639299, + 0.583909,-0,0.811819,464.090728,-186.86272,237.849027, + 0.707107,0,0.707107,466.63038,-186.86272,235.639299, + 0.620913,-0.013167,0.783769,464.090728,-549.540509,237.849027, + 0.707157,-0.011876,0.706957,466.63038,-549.503387,235.639299, + 0.793821,-0.010508,0.608061,753.73925,-547.924349,141.649769, + 0.707841,-0.055835,0.704162,736.997667,-573.300963,159.911321, + 0.794465,-0.062988,0.604035,753.739264,-571.352333,140.862403, + 0.707841,-0.055835,0.704162,736.997667,-573.300963,159.911321, + 0.793821,-0.010508,0.608061,753.73925,-547.924349,141.649769, + 0.716411,-0.0095,0.697614,736.997652,-548.24528,160.753391, + 0.625544,-0.013105,0.780079,717.89403,-548.526532,177.494989, + 0.707841,-0.055835,0.704162,736.997667,-573.300963,159.911321, + 0.716411,-0.0095,0.697614,736.997652,-548.24528,160.753391, + 0.707841,-0.055835,0.704162,736.997667,-573.300963,159.911321, + 0.625544,-0.013105,0.780079,717.89403,-548.526532,177.494989, + 0.609101,-0.079799,0.789068,717.894046,-575.008662,176.604979, + 0.499663,-0.423738,0.755502,696.7588,-647.656853,168.080895, + 0.609002,-0.464655,0.642816,717.894078,-660.078536,143.08739, + 0.598552,-0.382497,0.703869,717.894074,-640.737481,155.769021, + 0.609002,-0.464655,0.642816,717.894078,-660.078536,143.08739, + 0.499663,-0.423738,0.755502,696.7588,-647.656853,168.080895, + 0.499663,-0.522735,0.690714,696.758805,-668.611056,154.341548, + -0.9721,0.218065,-0.086424,760.201824,-611.21315,29.208214, + -0.983984,0.16585,-0.065345,763.093075,-596.364509,23.357838, + -0.96393,0.253712,-0.080426,760.201822,-613.067712,23.357838, + -0.537771,0.78409,-0.309846,442.839477,-746.337241,82.447316, + -0.656747,0.730839,-0.185896,445.721721,-752.628988,55.555664, + -0.537771,0.818998,-0.200111,442.839466,-754.702001,56.059962, + -0.656747,0.730839,-0.185896,445.721721,-752.628988,55.555664, + -0.537771,0.78409,-0.309846,442.839477,-746.337241,82.447316, + -0.649152,0.701164,-0.294909,445.721732,-744.352284,81.665241, + 0.995804,-0.089282,0.020098,473.642053,-764.379515,58.414175, + 0.978666,-0.204393,0.020908,473.101722,-772.614333,30.131373, + 0.997653,-0.068124,0.006968,473.642039,-769.30108,29.792441, + 0.978666,-0.204393,0.020908,473.101722,-772.614333,30.131373, + 0.995804,-0.089282,0.020098,473.642053,-764.379515,58.414175, + 0.973657,-0.221914,0.0524,473.101737,-767.615679,59.201429, + 0.973657,-0.221914,0.0524,473.101737,-767.615679,59.201429, + 0.940951,-0.336786,0.034451,472.107168,-775.82127,30.459429, + 0.978666,-0.204393,0.020908,473.101722,-772.614333,30.131373, + 0.940951,-0.336786,0.034451,472.107168,-775.82127,30.459429, + 0.973657,-0.221914,0.0524,473.101737,-767.615679,59.201429, + 0.932875,-0.350339,0.083707,472.107183,-770.747999,59.963422, + -0.757296,0.632534,-0.162491,448.281994,-750.187755,54.961789, + -0.832687,0.515679,-0.201762,450.471112,-739.369533,79.702032, + -0.832687,0.538362,-0.129611,450.471101,-747.425197,54.289747, + -0.832687,0.515679,-0.201762,450.471112,-739.369533,79.702032, + -0.757296,0.632534,-0.162491,448.281994,-750.187755,54.961789, + -0.748179,0.617743,-0.242119,448.282005,-742.014746,80.744249, + 0.701238,-0.343649,0.624636,736.997692,-632.515985,141.14023, + 0.609002,-0.464655,0.642816,717.894078,-660.078536,143.08739, + 0.707932,-0.427549,0.562168,736.997696,-649.94032,129.715362, + 0.609002,-0.464655,0.642816,717.894078,-660.078536,143.08739, + 0.701238,-0.343649,0.624636,736.997692,-632.515985,141.14023, + 0.598552,-0.382497,0.703869,717.894074,-640.737481,155.769021, + -0.656747,0.730839,-0.185896,445.721721,-752.628988,55.555664, + -0.748179,0.617743,-0.242119,448.282005,-742.014746,80.744249, + -0.757296,0.632534,-0.162491,448.281994,-750.187755,54.961789, + -0.748179,0.617743,-0.242119,448.282005,-742.014746,80.744249, + -0.656747,0.730839,-0.185896,445.721721,-752.628988,55.555664, + -0.649152,0.701164,-0.294909,445.721732,-744.352284,81.665241, + -0.985345,0.121711,-0.119507,454.431277,-688.759444,139.136857, + -0.999454,0.021199,-0.025346,454.797688,-667.530829,152.916709, + -0.999454,0.024455,-0.02222,454.797689,-686.233268,136.610681, + -0.999454,0.021199,-0.025346,454.797688,-667.530829,152.916709, + -0.985345,0.121711,-0.119507,454.431277,-688.759444,139.136857, + -0.985345,0.104291,-0.134978,454.431275,-669.689209,155.763554, + 0.361665,-0.867199,0.342292,458.222244,-774.650293,93.602673, + 0.229025,-0.848411,0.477229,455.006107,-761.852699,122.846525, + 0.229025,-0.905527,0.357167,455.006098,-775.57778,93.968105, + 0.229025,-0.848411,0.477229,455.006107,-761.852699,122.846525, + 0.361665,-0.867199,0.342292,458.222244,-774.650293,93.602673, + 0.361665,-0.812468,0.457269,458.222253,-760.983658,122.358117, + 0.932875,-0.086574,0.349641,472.107183,-609.58601,221.125411, + 0.874212,-0.179273,0.451236,470.677509,-639.24332,214.921287, + 0.932875,-0.133411,0.334583,472.107195,-638.123482,212.079066, + 0.874212,-0.179273,0.451236,470.677509,-639.24332,214.921287, + 0.932875,-0.086574,0.349641,472.107183,-609.58601,221.125411, + 0.874212,-0.116112,0.471456,470.677497,-610.308103,224.093716, + -0.150374,0.960557,-0.233917,432.83893,-758.353294,56.948209, + -0.285905,0.953237,-0.097966,436.335587,-762.351785,29.08158, + -0.150374,0.983472,-0.100844,432.838915,-763.131306,29.161323, + -0.285905,0.953237,-0.097966,436.335587,-762.351785,29.08158, + -0.150374,0.960557,-0.233917,432.83893,-758.353294,56.948209, + -0.285905,0.930996,-0.226946,436.335601,-757.591911,56.762987, + -0.939612,0.342242,0,693.784142,-590.617874,-0, + -0.961178,0.27593,0,698.091838,-577.372321,5.83946, + -0.970224,0.242209,-0,698.091838,-577.372321,-0, + -0.961178,0.27593,0,698.091838,-577.372321,5.83946, + -0.939612,0.342242,0,693.784142,-590.617874,-0, + -0.927092,0.374833,-0,693.784142,-590.617874,5.83946, + 0,1,-0,0.000468,-674.370541,5.83946, + -0.104693,0.994505,-0,590.370902,-674.370541,0, + 0,1,-0,0.000468,-674.370541,0, + -0.104693,0.994505,-0,590.370902,-674.370541,0, + 0,1,-0,0.000468,-674.370541,5.83946, + -0.104693,0.994505,-0,590.370902,-674.370541,5.83946, + -0.242209,0.970224,-0,603.993997,-671.470162,5.83946, + -0.104693,0.994505,-0,590.370902,-674.370541,0, + -0.104693,0.994505,-0,590.370902,-674.370541,5.83946, + -0.104693,0.994505,-0,590.370902,-674.370541,0, + -0.242209,0.970224,-0,603.993997,-671.470162,5.83946, + -0.27593,0.961178,-0,603.993997,-671.470162,-0, + -0.342242,0.939612,-0,617.239549,-667.162466,5.83946, + -0.27593,0.961178,-0,603.993997,-671.470162,-0, + -0.242209,0.970224,-0,603.993997,-671.470162,5.83946, + -0.27593,0.961178,-0,603.993997,-671.470162,-0, + -0.342242,0.939612,-0,617.239549,-667.162466,5.83946, + -0.374833,0.927092,-0,617.239549,-667.162466,-0, + 0.480964,-0.87674,-0,718.958402,-786.46931,-0, + 0.402772,-0.9153,-0,688.787514,-801.347945,23.357838, + 0.362412,-0.932018,-0,688.787514,-801.347945,-0, + 0.402772,-0.9153,-0,688.787514,-801.347945,23.357838, + 0.480964,-0.87674,-0,718.958402,-786.46931,-0, + 0.518797,-0.854897,-0,718.958402,-786.46931,23.357838, + -0.606606,0.549182,-0.574829,702.221362,-660.639487,111.0169, + -0.707932,0.427569,-0.562154,718.363107,-637.122986,112.809644, + -0.707932,0.500183,-0.498647,718.363108,-650.643847,101.02126, + -0.707932,0.427569,-0.562154,718.363107,-637.122986,112.809644, + -0.606606,0.549182,-0.574829,702.221362,-660.639487,111.0169, + -0.606606,0.46573,-0.644302,702.22136,-645.663324,124.074113, + 0.994447,0,0.105242,792.007202,-186.86272,48.711029, + 0.998104,-0.001034,0.061542,793.5709,-545.937124,23.357838, + 0.998103,0,0.06156,793.5709,-186.86272,23.357838, + 0.998104,-0.001034,0.061542,793.5709,-545.937124,23.357838, + 0.994447,0,0.105242,792.007202,-186.86272,48.711029, + 0.98887,-0.002499,0.148764,792.007202,-546.363038,48.711029, + 0.714887,-0.69482,0.078501,466.630399,-784.205377,31.31709, + 0.603443,-0.774584,0.189413,464.090763,-781.089165,62.479098, + 0.603443,-0.793169,0.082097,464.090747,-786.408778,31.542489, + 0.603443,-0.774584,0.189413,464.090763,-781.089165,62.479098, + 0.714887,-0.69482,0.078501,466.630399,-784.205377,31.31709, + 0.707841,-0.682368,0.182581,466.630415,-778.937032,61.955552, + 0.855563,-0,0.517699,767.829302,-186.86272,120.514493, + 0.793821,-0.010508,0.608061,753.73925,-547.924349,141.649769, + 0.866755,-0.008697,0.498658,767.829302,-547.569289,120.514493, + 0.793821,-0.010508,0.608061,753.73925,-547.924349,141.649769, + 0.855563,-0,0.517699,767.829302,-186.86272,120.514493, + 0.780232,-0,0.62549,753.73925,-186.86272,141.649769, + 0.79876,-0.364496,0.47867,468.840169,-693.751117,187.500559, + 0.707932,-0.500206,0.498623,466.630444,-718.721598,169.09901, + 0.79876,-0.426323,0.424536,468.840171,-716.92159,167.299002, + 0.707932,-0.500206,0.498623,466.630444,-718.721598,169.09901, + 0.79876,-0.364496,0.47867,468.840169,-693.751117,187.500559, + 0.707932,-0.427595,0.562134,466.630442,-695.289055,189.529057, + -0.494423,0.524541,-0.693111,684.332897,-652.814504,133.506322, + -0.373111,0.454056,-0.809087,665.021386,-639.414516,153.414997, + -0.494423,0.4252,-0.758123,684.332893,-634.846784,145.287478, + -0.373111,0.454056,-0.809087,665.021386,-639.414516,153.414997, + -0.494423,0.524541,-0.693111,684.332897,-652.814504,133.506322, + -0.373111,0.560072,-0.739667,665.02139,-658.447133,140.935603, + 0.973657,-0.113053,0.198017,473.101758,-663.582664,196.418147, + 0.932875,-0.218791,0.286137,472.107209,-690.197308,182.813182, + 0.973657,-0.138981,0.180764,473.101763,-688.249706,180.244348, + 0.932875,-0.218791,0.286137,472.107209,-690.197308,182.813182, + 0.973657,-0.113053,0.198017,473.101758,-663.582664,196.418147, + 0.932875,-0.177759,0.313282,472.107204,-665.162054,199.228412, + -0.022557,0.871531,-0.489821,602.133296,-713.015947,95.399861, + -0.112343,0.924436,-0.364414,623.546355,-722.557073,73.077847, + -0.022557,0.930148,-0.366491,602.133289,-723.456525,73.43224, + -0.112343,0.924436,-0.364414,623.546355,-722.557073,73.077847, + -0.022557,0.871531,-0.489821,602.133296,-713.015947,95.399861, + -0.112343,0.866156,-0.486984,623.546362,-712.173175,94.926211, + -0.112343,0.866156,-0.486984,623.546362,-712.173175,94.926211, + -0.244971,0.901902,-0.355754,644.636252,-718.985715,71.670721, + -0.112343,0.924436,-0.364414,623.546355,-722.557073,73.077847, + -0.244971,0.901902,-0.355754,644.636252,-718.985715,71.670721, + -0.112343,0.866156,-0.486984,623.546362,-712.173175,94.926211, + -0.244971,0.845012,-0.475335,644.636259,-708.826871,93.045557, + 0.499663,-0.841496,0.20548,696.758783,-736.031005,51.517793, + 0.381503,-0.859811,0.339381,673.957369,-738.899253,79.516658, + 0.381503,-0.898037,0.219052,673.957358,-746.934061,54.170165, + 0.381503,-0.859811,0.339381,673.957369,-738.899253,79.516658, + 0.499663,-0.841496,0.20548,696.758783,-736.031005,51.517793, + 0.499663,-0.805647,0.318231,696.758793,-728.459324,75.40331, + 0.021811,-0.999762,0,590.370902,-820.924227,0, + -0,-1,-0,0.000797,-820.924227,17.047527, + 0,-1,0,0.000468,-820.924227,0, + -0,-1,-0,0.000797,-820.924227,17.047527, + 0.032719,-0.999465,-0,590.370902,-820.924227,23.357838, + 0,-1,-0,0.000468,-820.924227,23.357838, + 0.032719,-0.999465,-0,590.370902,-820.924227,23.357838, + -0,-1,-0,0.000797,-820.924227,17.047527, + 0.021811,-0.999762,0,590.370902,-820.924227,0, + 0.401003,-0.015387,0.915947,673.957328,-548.951312,202.77988, + 0.479633,0,0.877469,696.758754,-186.86272,191.585041, + 0.360344,0,0.932819,673.957328,-186.86272,202.77988, + 0.479633,0,0.877469,696.758754,-186.86272,191.585041, + 0.401003,-0.015387,0.915947,673.957328,-548.951312,202.77988, + 0.517753,-0.01437,0.85541,696.758754,-548.76324,191.585041, + -0.747451,0.007439,-0.664276,448.281963,-549.007501,206.120647, + -0.665822,0,-0.746111,445.72169,-186.86272,208.627211, + -0.747409,0,-0.664364,448.281963,-186.86272,206.120647, + -0.665822,0,-0.746111,445.72169,-186.86272,208.627211, + -0.747451,0.007439,-0.664276,448.281963,-549.007501,206.120647, + -0.648424,0.012535,-0.761176,445.72169,-549.049611,208.627211, + -0.832687,0.272446,-0.482085,450.47112,-653.402151,178.303588, + -0.901181,0.160213,-0.402745,452.247002,-628.181199,186.84487, + -0.901181,0.2136,-0.377157,452.247009,-651.873941,175.584392, + -0.901181,0.160213,-0.402745,452.247002,-628.181199,186.84487, + -0.832687,0.272446,-0.482085,450.47112,-653.402151,178.303588, + -0.832687,0.204213,-0.514714,450.471112,-629.324619,189.746946, + -0.741547,0.152765,-0.653277,448.281994,-604.584377,200.565168, + -0.832687,0.057661,-0.550734,450.471088,-577.639374,202.320298, + -0.832687,0.13217,-0.53774,450.471101,-603.912334,197.80261, + -0.832687,0.057661,-0.550734,450.471088,-577.639374,202.320298, + -0.741547,0.152765,-0.653277,448.281994,-604.584377,200.565168, + -0.748094,0.052453,-0.661516,448.28198,-577.928705,205.148665, + 0.499663,-0.861647,0.088896,696.75877,-740.277271,26.823309, + 0.381503,-0.898037,0.219052,673.957358,-746.934061,54.170165, + 0.381503,-0.91951,0.094637,673.957345,-751.440053,27.965226, + 0.381503,-0.898037,0.219052,673.957358,-746.934061,54.170165, + 0.499663,-0.861647,0.088896,696.75877,-740.277271,26.823309, + 0.499663,-0.841496,0.20548,696.758783,-736.031005,51.517793, + 0.603443,-0.793169,0.082097,464.090747,-786.408778,31.542489, + 0.487278,-0.848318,0.207161,461.269972,-782.878631,62.914419, + 0.487278,-0.868635,0.089632,461.269956,-788.240871,31.729906, + 0.487278,-0.848318,0.207161,461.269972,-782.878631,62.914419, + 0.603443,-0.793169,0.082097,464.090747,-786.408778,31.542489, + 0.603443,-0.774584,0.189413,464.090763,-781.089165,62.479098, + -0.373111,0.560072,-0.739667,665.02139,-658.447133,140.935603, + -0.244971,0.474679,-0.845381,644.636259,-642.668145,159.204284, + -0.373111,0.454056,-0.809087,665.021386,-639.414516,153.414997, + -0.244971,0.474679,-0.845381,644.636259,-642.668145,159.204284, + -0.373111,0.560072,-0.739667,665.02139,-658.447133,140.935603, + -0.244971,0.585448,-0.772813,644.636264,-662.459295,146.227532, + 0.924681,-0,0.380742,779.024141,-186.86272,97.713067, + 0.9608,-0.004657,0.277203,787.130168,-546.781824,73.639808, + 0.972038,0,0.234823,787.130168,-186.86272,73.639808, + 0.9608,-0.004657,0.277203,787.130168,-546.781824,73.639808, + 0.924681,-0,0.380742,779.024141,-186.86272,97.713067, + 0.919603,-0.008082,0.392766,779.024141,-547.186239,97.713067, + 0.794465,-0.430275,0.42859,753.73929,-652.105388,102.482801, + 0.707932,-0.563451,0.425857,736.997696,-679.337949,100.317733, + 0.794465,-0.484664,0.36596,753.739289,-664.079301,88.749145, + 0.707932,-0.563451,0.425857,736.997696,-679.337949,100.317733, + 0.794465,-0.430275,0.42859,753.73929,-652.105388,102.482801, + 0.707932,-0.500166,0.498664,736.997697,-665.645303,116.022715, + -0.993727,0.068775,-0.088188,764.031425,-579.704781,37.076602, + -0.998991,0.022887,-0.038633,764.878707,-566.321382,23.357838, + -0.998991,0.027938,-0.035154,764.805052,-569.303684,23.357838, + -0.998991,0.022887,-0.038633,764.878707,-566.321382,23.357838, + -0.993727,0.068775,-0.088188,764.031425,-579.704781,37.076602, + -0.993727,0.056116,-0.096737,764.031424,-575.55911,39.794854, + -0.022557,0.971412,-0.236325,602.13328,-730.806273,50.246828, + -0.112343,0.988493,-0.101292,623.546333,-733.966349,26.17777, + -0.022557,0.994554,-0.10175,602.133267,-734.928078,26.276163, + -0.112343,0.988493,-0.101292,623.546333,-733.966349,26.17777, + -0.022557,0.971412,-0.236325,602.13328,-730.806273,50.246828, + -0.112343,0.96547,-0.235045,623.546346,-729.866921,50.018304, + -0,0.882708,-0.469921,454.667766,-713.015957,95.399907, + -0.022557,0.930148,-0.366491,602.133289,-723.456525,73.43224, + -0,0.938509,-0.345255,454.667758,-723.45653,73.432296, + -0.022557,0.930148,-0.366491,602.133289,-723.456525,73.43224, + -0,0.882708,-0.469921,454.667766,-713.015957,95.399907, + -0.022557,0.871531,-0.489821,602.133296,-713.015947,95.399861, + 0.874212,-0.423953,0.236679,470.677518,-751.514112,117.036157, + 0.79876,-0.56023,0.219373,468.840155,-767.174448,90.657181, + 0.874212,-0.45225,0.176701,470.677509,-764.543874,89.620732, + 0.79876,-0.56023,0.219373,468.840155,-767.174448,90.657181, + 0.874212,-0.423953,0.236679,470.677518,-751.514112,117.036157, + 0.79876,-0.525111,0.293667,468.840164,-753.978916,118.421396, + 0.108839,-0.994059,-0,623.938976,-818.724059,-0, + 0.032719,-0.999465,-0,590.370902,-820.924227,23.357838, + 0.021811,-0.999762,0,590.370902,-820.924227,0, + 0.032719,-0.999465,-0,590.370902,-820.924227,23.357838, + 0.108839,-0.994059,-0,623.938976,-818.724059,-0, + 0.152151,-0.988357,-0,623.938976,-818.724059,23.357838, + 0.79876,-0.584897,0.140986,468.840142,-776.463573,61.353839, + 0.714887,-0.69482,0.078501,466.630399,-784.205377,31.31709, + 0.812465,-0.579983,0.059329,468.840127,-781.672997,31.058037, + 0.714887,-0.69482,0.078501,466.630399,-784.205377,31.31709, + 0.79876,-0.584897,0.140986,468.840142,-776.463573,61.353839, + 0.707841,-0.682368,0.182581,466.630415,-778.937032,61.955552, + 0.866755,-0.008697,0.498658,767.829302,-547.569289,120.514493, + 0.794465,-0.062988,0.604035,753.739264,-571.352333,140.862403, + 0.867227,-0.051963,0.495193,767.829315,-569.19647,119.787648, + 0.794465,-0.062988,0.604035,753.739264,-571.352333,140.862403, + 0.866755,-0.008697,0.498658,767.829302,-547.569289,120.514493, + 0.793821,-0.010508,0.608061,753.73925,-547.924349,141.649769, + -0.999951,0.009862,-0.001008,454.797654,-738.498463,26.641479, + -0.999345,-0.035345,0.007749,454.667749,-730.806274,50.246897, + -0.999345,-0.035987,0.003682,454.667737,-734.928076,26.276244, + -0.999345,-0.035345,0.007749,454.667749,-730.806274,50.246897, + -0.999951,0.009862,-0.001008,454.797654,-738.498463,26.641479, + -0.999454,0.032443,-0.006265,454.797666,-734.293588,51.095248, + -0.754707,0.651908,-0.073718,448.28198,-754.771252,28.306118, + -0.832687,0.538362,-0.129611,450.471101,-747.425197,54.289747, + -0.845271,0.531564,-0.054376,450.471088,-751.942886,28.016787, + -0.832687,0.538362,-0.129611,450.471101,-747.425197,54.289747, + -0.754707,0.651908,-0.073718,448.28198,-754.771252,28.306118, + -0.757296,0.632534,-0.162491,448.281994,-750.187755,54.961789, + -0.870211,0.117753,-0.4784,744.275047,-580.75808,102.623043, + -0.928388,0.039234,-0.369537,753.576397,-565.700992,85.617213, + -0.928388,0.089223,-0.360743,753.576403,-576.182654,83.81487, + -0.928388,0.039234,-0.369537,753.576397,-565.700992,85.617213, + -0.870211,0.117753,-0.4784,744.275047,-580.75808,102.623043, + -0.870211,0.051465,-0.489984,744.27504,-567.670824,104.873423, + -0.150052,0.016548,-0.98854,432.838898,-549.148352,214.504709, + -0.054143,0,-0.998533,429.26772,-186.86272,214.795487, + -0.172878,0,-0.984943,432.838898,-186.86272,214.504709, + -0.054143,0,-0.998533,429.26772,-186.86272,214.795487, + -0.150052,0.016548,-0.98854,432.838898,-549.148352,214.504709, + -0.040617,0.016774,-0.999034,429.26772,-549.153238,214.795487, + -0,0.81044,-0.585821,454.66777,-699.67933,115.739913, + -0.022557,0.871531,-0.489821,602.133296,-713.015947,95.399861, + -0,0.882708,-0.469921,454.667766,-713.015957,95.399907, + -0.022557,0.871531,-0.489821,602.133296,-713.015947,95.399861, + -0,0.81044,-0.585821,454.66777,-699.67933,115.739913, + -0.022557,0.796656,-0.604012,602.133301,-699.679313,115.739878, + 0.79876,-0.525111,0.293667,468.840164,-753.978916,118.421396, + 0.707841,-0.651123,0.273862,466.630427,-769.542842,91.59033, + 0.79876,-0.56023,0.219373,468.840155,-767.174448,90.657181, + 0.707841,-0.651123,0.273862,466.630427,-769.542842,91.59033, + 0.79876,-0.525111,0.293667,468.840164,-753.978916,118.421396, + 0.717647,-0.602641,0.349008,466.630436,-756.198062,119.668573, + -0.901181,0.2136,-0.377157,452.247009,-651.873941,175.584392, + -0.952384,0.113168,-0.283121,453.575559,-626.95854,183.741681, + -0.952384,0.150692,-0.265059,453.575567,-650.239827,172.676755, + -0.952384,0.113168,-0.283121,453.575559,-626.95854,183.741681, + -0.901181,0.2136,-0.377157,452.247009,-651.873941,175.584392, + -0.901181,0.160213,-0.402745,452.247002,-628.181199,186.84487, + -0.599001,0.779767,-0.182103,702.221343,-699.124264,42.539571, + -0.691044,0.712358,-0.122491,718.363083,-688.112661,23.357838, + -0.605809,0.784102,-0.134828,702.221333,-702.422602,23.357838, + -0.691044,0.712358,-0.122491,718.363083,-688.112661,23.357838, + -0.599001,0.779767,-0.182103,702.221343,-699.124264,42.539571, + -0.714681,0.677849,-0.172485,718.363091,-685.388881,39.198188, + 0,-0.016797,0.999859,0,-549.622587,242.726639, + 0.01127,-0.101755,0.994746,448.317739,-581.662615,241.649835, + 0.012852,-0.014396,0.999814,448.31772,-549.622454,242.726639, + 0.01127,-0.101755,0.994746,448.317739,-581.662615,241.649835, + 0,-0.016797,0.999859,0,-549.622587,242.726639, + 0,-0.124431,0.992228,0.000019,-581.662862,241.649831, + -0.649152,0.525457,-0.549997,445.721747,-699.576473,149.953886, + -0.537771,0.508681,-0.672344,442.83949,-680.220296,169.653769, + -0.649152,0.44561,-0.616469,445.721745,-678.931346,167.953679, + -0.537771,0.508681,-0.672344,442.83949,-680.220296,169.653769, + -0.649152,0.525457,-0.549997,445.721747,-699.576473,149.953886, + -0.537771,0.595553,-0.596756,442.839492,-701.085065,151.462478, + 0.012852,-0.014396,0.999814,448.31772,-549.622454,242.726639, + 0.091928,-0.101189,0.990611,451.683301,-581.654891,241.574352, + 0.114758,-0.016686,0.993253,451.683281,-549.621181,242.65094, + 0.091928,-0.101189,0.990611,451.683301,-581.654891,241.574352, + 0.012852,-0.014396,0.999814,448.31772,-549.622454,242.726639, + 0.01127,-0.101755,0.994746,448.317739,-581.662615,241.649835, + -0.901181,0.160213,-0.402745,452.247002,-628.181199,186.84487, + -0.952384,0.073533,-0.295901,453.575549,-602.386639,191.530944, + -0.952384,0.113168,-0.283121,453.575559,-626.95854,183.741681, + -0.952384,0.073533,-0.295901,453.575549,-602.386639,191.530944, + -0.901181,0.160213,-0.402745,452.247002,-628.181199,186.84487, + -0.901181,0.103838,-0.42082,452.246991,-603.175034,194.771794, + -0.415875,0.72429,-0.549957,439.690621,-720.641807,131.632947, + -0.537771,0.734555,-0.413801,442.839485,-734.454802,107.448703, + -0.415875,0.792474,-0.446131,439.690616,-735.948584,108.28822, + -0.537771,0.734555,-0.413801,442.839485,-734.454802,107.448703, + -0.415875,0.72429,-0.549957,439.690621,-720.641807,131.632947, + -0.537771,0.671316,-0.510036,442.83949,-719.276356,130.597708, + 0.966794,-0.15555,0.202766,787.130191,-597.186922,60.135075, + 0.924993,-0.269668,0.267706,779.02417,-620.964741,71.342153, + 0.966794,-0.181729,0.179678,787.130191,-603.902541,54.279953, + 0.924993,-0.269668,0.267706,779.02417,-620.964741,71.342153, + 0.966794,-0.15555,0.202766,787.130191,-597.186922,60.135075, + 0.924993,-0.230673,0.301955,779.024169,-611.764971,79.363123, + 0.603443,-0.187559,0.775035,464.090763,-612.101686,231.466578, + 0.707841,-0.243878,0.662936,466.630427,-641.212918,219.920255, + 0.707841,-0.151267,0.689985,466.630415,-611.57814,229.314444, + 0.707841,-0.243878,0.662936,466.630427,-641.212918,219.920255, + 0.603443,-0.187559,0.775035,464.090763,-612.101686,231.466578, + 0.603443,-0.29142,0.742247,464.090775,-642.024843,221.980973, + -0.530018,0.847987,-0,642.023926,-654.528574,5.83946, + -0.469634,0.882861,-0,629.962605,-661.494594,-0, + -0.438529,0.898717,-0,629.962605,-661.494594,5.83946, + -0.469634,0.882861,-0,629.962605,-661.494594,-0, + -0.530018,0.847987,-0,642.023926,-654.528574,5.83946, + -0.559296,0.828968,-0,642.023926,-654.528574,-0, + -0.847987,0.530018,-0,681.15025,-615.40225,-0, + -0.882861,0.469634,-0,688.11627,-603.340929,5.83946, + -0.898717,0.438529,-0,688.11627,-603.340929,-0, + -0.882861,0.469634,-0,688.11627,-603.340929,5.83946, + -0.847987,0.530018,-0,681.15025,-615.40225,-0, + -0.828968,0.559296,-0,681.15025,-615.40225,5.83946, + -0.982194,0.18787,-0,700.992217,-563.749227,5.83946, + -0.985885,0.167425,-0,806.270901,56.185652,0, + -0.982194,0.18787,-0,700.992217,-563.749227,-0, + -0.985885,0.167425,-0,806.270901,56.185652,0, + -0.982194,0.18787,-0,700.992217,-563.749227,5.83946, + -0.985885,0.167425,-0,764.9959,-186.86272,5.83946, + -0.985885,0.167425,-0,806.270901,56.185652,0, + -0.985885,0.167425,-0,764.9959,-186.86272,5.83946, + -0.985885,0.167425,0,806.270901,56.185652,23.357838, + -0.985885,0.167425,0,806.270901,56.185652,23.357838, + -0.985885,0.167425,-0,764.9959,-186.86272,5.83946, + -0.997977,0.055997,-0.030099,764.9959,-186.86272,23.357838, + 0.994417,-0.002312,0.105501,473.642021,-549.252285,220.6922, + 0.973657,-0.024735,0.226671,473.101722,-579.75396,222.991746, + 0.995804,-0.010878,0.090867,473.642039,-579.415029,219.678492, + 0.973657,-0.024735,0.226671,473.101722,-579.75396,222.991746, + 0.994417,-0.002312,0.105501,473.642021,-549.252285,220.6922, + 0.973547,-0.004216,0.228449,473.101704,-549.308105,224.014969, + 0.998104,-0.001034,0.061542,793.5709,-545.937124,23.357838, + 0.991932,-0.01438,0.125953,792.007211,-561.87231,48.189795, + 0.998111,-0.007644,0.060955,793.543158,-559.332109,23.357838, + 0.991932,-0.01438,0.125953,792.007211,-561.87231,48.189795, + 0.998104,-0.001034,0.061542,793.5709,-545.937124,23.357838, + 0.98887,-0.002499,0.148764,792.007202,-546.363038,48.711029, + 0.381503,-0.736251,0.558918,673.957381,-712.905798,125.767735, + 0.256673,-0.683145,0.68369,649.884126,-701.177315,151.554728, + 0.256673,-0.769937,0.584223,649.884124,-719.380332,130.676509, + 0.256673,-0.683145,0.68369,649.884126,-701.177315,151.554728, + 0.381503,-0.736251,0.558918,673.957381,-712.905798,125.767735, + 0.381503,-0.653222,0.654031,673.957383,-695.432071,145.809483, + 0.256673,-0.769937,0.584223,649.884124,-719.380332,130.676509, + 0.127347,-0.701215,0.701485,624.955349,-704.633973,155.011385, + 0.127347,-0.790262,0.59939,624.955347,-723.275771,133.6299, + 0.127347,-0.701215,0.701485,624.955349,-704.633973,155.011385, + 0.256673,-0.769937,0.584223,649.884124,-719.380332,130.676509, + 0.256673,-0.683145,0.68369,649.884126,-701.177315,151.554728, + 0.127347,-0.790262,0.59939,624.955347,-723.275771,133.6299, + 0.030867,-0.706755,0.706785,599.602158,-705.742267,156.119679, + 0.030867,-0.796473,0.603886,599.602156,-724.524748,134.576836, + 0.030867,-0.706755,0.706785,599.602158,-705.742267,156.119679, + 0.127347,-0.790262,0.59939,624.955347,-723.275771,133.6299, + 0.127347,-0.701215,0.701485,624.955349,-704.633973,155.011385, + 0.030867,-0.796473,0.603886,599.602156,-724.524748,134.576836, + 0,-0.723053,0.690793,473.717779,-705.742288,156.119701, + 0,-0.81044,0.585821,473.717777,-724.524762,134.576865, + 0,-0.723053,0.690793,473.717779,-705.742288,156.119701, + 0.030867,-0.796473,0.603886,599.602156,-724.524748,134.576836, + 0.030867,-0.706755,0.706785,599.602158,-705.742267,156.119679, + 0.999748,-0.016225,0.015501,473.717779,-705.742288,156.119701, + 0.995804,-0.073866,0.054027,473.642079,-727.212939,136.614949, + 0.999748,-0.018186,0.013146,473.717777,-724.524762,134.576865, + 0.995804,-0.073866,0.054027,473.642079,-727.212939,136.614949, + 0.999748,-0.016225,0.015501,473.717779,-705.742288,156.119701, + 0.995804,-0.065815,0.063588,473.64208,-708.127668,158.505081, + 0,-0.999436,0.033589,0.00089,-791.564218,23.357838, + 0.00966,-0.995709,0.092029,448.317739,-791.272422,32.040027, + 0,-0.994809,0.101765,0.000019,-791.272419,32.040275, + 0.00966,-0.995709,0.092029,448.317739,-791.272422,32.040027, + 0,-0.999436,0.033589,0.00089,-791.564218,23.357838, + 0.011244,-0.999373,0.033587,448.317734,-791.564213,23.357838, + -0.970224,0.242209,-0,698.091838,-577.372321,-0, + -0.982194,0.18787,-0,700.992217,-563.749227,5.83946, + -0.982194,0.18787,-0,700.992217,-563.749227,-0, + -0.982194,0.18787,-0,700.992217,-563.749227,5.83946, + -0.970224,0.242209,-0,698.091838,-577.372321,-0, + -0.961178,0.27593,0,698.091838,-577.372321,5.83946, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.9959,-186.86272,23.357838, + 0,-0,1,0.001765,-186.86272,23.357838, + -0,-0,1,764.9959,-186.86272,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.9959,-545.937132,23.357838, + -0,-0,1,764.9959,-545.937132,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.975642,-559.332125,23.357838, + -0,-0,1,764.975642,-559.332125,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.959284,-561.475403,23.357838, + -0,-0,1,764.959284,-561.475403,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.928093,-563.76708,23.357838, + -0,-0,1,764.928093,-563.76708,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.878707,-566.321382,23.357838, + -0,-0,1,764.878707,-566.321382,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.805052,-569.303684,23.357838, + -0,-0,1,764.805052,-569.303684,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.696221,-572.980425,23.357838, + -0,-0,1,764.696221,-572.980425,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.531578,-577.829947,23.357838, + -0,-0,1,764.531578,-577.829947,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.267941,-584.829097,23.357838, + -0,-0,1,764.267941,-584.829097,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,764.031423,-590.643016,23.357838, + -0,-0,1,764.031423,-590.643016,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,763.093075,-596.364509,23.357838, + -0,0,1,763.093075,-596.364509,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,760.201822,-613.067712,23.357838, + -0,0,1,760.201822,-613.067712,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,757.969157,-620.274076,23.357838, + -0,0,1,757.969157,-620.274076,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,753.576401,-633.988087,23.357838, + -0,0,1,753.576401,-633.988087,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,744.275043,-653.583014,23.357838, + -0,0,1,744.275043,-653.583014,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,732.466046,-671.734013,23.357838, + -0,0,1,732.466046,-671.734013,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,718.363083,-688.112661,23.357838, + -0,0,1,718.363083,-688.112661,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,702.221333,-702.422602,23.357838, + -0,0,1,702.221333,-702.422602,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,696.28309,-706.40024,23.357838, + -0,0,1,696.28309,-706.40024,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,684.332867,-714.293585,23.357838, + -0,0,1,684.332867,-714.293585,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,454.667735,-735.026158,23.357838, + -0,0,1,684.332867,-714.293585,23.357838, + -0,0,1,454.667735,-735.026158,23.357838, + -0,-0,1,665.021358,-723.600195,23.357838, + -0,-0,1,665.021358,-723.600195,23.357838, + -0,0,1,454.667735,-735.026158,23.357838, + -0,-0,1,644.63623,-730.229356,23.357838, + -0,-0,1,644.63623,-730.229356,23.357838, + -0,0,1,454.667735,-735.026158,23.357838, + -0,-0,1,623.546332,-734.061121,23.357838, + -0,-0,1,623.546332,-734.061121,23.357838, + -0,0,1,454.667735,-735.026158,23.357838, + -0,-0,1,602.133266,-735.026157,23.357838, + -0,0,1,454.667735,-735.026158,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,-0,1,454.797652,-738.60882,23.357838, + -0,-0,1,454.797652,-738.60882,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,454.431238,-742.175043,23.357838, + -0,0,1,454.431238,-742.175043,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,453.575534,-745.656322,23.357838, + -0,0,1,453.575534,-745.656322,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,452.246975,-748.985782,23.357838, + -0,0,1,452.246975,-748.985782,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,450.471085,-752.099463,23.357838, + -0,0,1,450.471085,-752.099463,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,448.281977,-754.937554,23.357838, + -0,0,1,448.281977,-754.937554,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,445.721704,-757.445533,23.357838, + -0,0,1,445.721704,-757.445533,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,442.839449,-759.575224,23.357838, + -0,0,1,442.839449,-759.575224,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,439.690579,-761.285715,23.357838, + -0,0,1,439.690579,-761.285715,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,436.335584,-762.544148,23.357838, + -0,0,1,436.335584,-762.544148,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,432.838912,-763.326349,23.357838, + -0,0,1,432.838912,-763.326349,23.357838, + -0,0,1,0.00829,-763.617296,23.357836, + -0,0,1,429.267734,-763.617291,23.357838, + 0.999748,-0.018186,0.013146,473.717777,-724.524762,134.576865, + 0.995804,-0.08054,0.043457,473.642074,-743.137303,112.328326, + 0.999748,-0.019808,0.010545,473.717772,-740.196479,110.67556, + 0.995804,-0.08054,0.043457,473.642074,-743.137303,112.328326, + 0.999748,-0.018186,0.013146,473.717777,-724.524762,134.576865, + 0.995804,-0.073866,0.054027,473.642079,-727.212939,136.614949, + 0.609101,-0.737549,0.291577,717.894067,-715.319418,70.22617, + 0.499663,-0.754768,0.425045,696.7588,-717.703482,98.034266, + 0.499663,-0.805647,0.318231,696.758793,-728.459324,75.40331, + 0.499663,-0.754768,0.425045,696.7588,-717.703482,98.034266, + 0.609101,-0.737549,0.291577,717.894067,-715.319418,70.22617, + 0.616524,-0.682339,0.392825,717.894074,-705.391609,91.114894, + -0.614316,0.68383,-0.393691,702.221357,-684.591376,79.42501, + -0.707841,0.651123,-0.273862,718.363098,-679.96832,56.297814, + -0.606705,0.739249,-0.292265,702.221351,-693.120267,61.479696, + -0.707841,0.651123,-0.273862,718.363098,-679.96832,56.297814, + -0.614316,0.68383,-0.393691,702.221357,-684.591376,79.42501, + -0.71736,0.602889,-0.34917,718.363103,-672.268221,72.499299, + 0.874212,-0.47211,0.113426,470.677497,-773.716304,60.685516, + 0.812465,-0.579983,0.059329,468.840127,-781.672997,31.058037, + 0.885205,-0.462786,0.04734,470.677482,-778.860284,30.770308, + 0.812465,-0.579983,0.059329,468.840127,-781.672997,31.058037, + 0.874212,-0.47211,0.113426,470.677497,-773.716304,60.685516, + 0.79876,-0.584897,0.140986,468.840142,-776.463573,61.353839, + 0.867227,-0.463727,0.18131,767.829328,-662.181333,49.28971, + 0.800126,-0.584324,0.13551,753.739273,-687.397248,39.686742, + 0.87794,-0.465203,0.113169,767.829322,-666.812843,34.679214, + 0.800126,-0.584324,0.13551,753.739273,-687.397248,39.686742, + 0.867227,-0.463727,0.18131,767.829328,-662.181333,49.28971, + 0.794465,-0.565471,0.221515,753.73928,-681.891377,57.055486, + -0.832687,0.483376,-0.27015,450.47112,-727.926176,103.779563, + -0.901181,0.346254,-0.26073,452.247014,-710.823017,124.188674, + -0.901181,0.378553,-0.211115,452.247009,-725.206979,102.251354, + -0.901181,0.346254,-0.26073,452.247014,-710.823017,124.188674, + -0.832687,0.483376,-0.27015,450.47112,-727.926176,103.779563, + -0.832687,0.442054,-0.333498,450.471124,-713.308606,126.073164, + -0.832687,0.515679,-0.201762,450.471112,-739.369533,79.702032, + -0.901181,0.378553,-0.211115,452.247009,-725.206979,102.251354, + -0.901181,0.40379,-0.157562,452.247002,-736.467457,78.558611, + -0.901181,0.378553,-0.211115,452.247009,-725.206979,102.251354, + -0.832687,0.515679,-0.201762,450.471112,-739.369533,79.702032, + -0.832687,0.483376,-0.27015,450.47112,-727.926176,103.779563, + 0.148826,-0.01661,0.988724,624.95529,-549.169432,215.762941, + 0.234823,0,0.972038,649.884069,-186.86272,210.885907, + 0.105242,0,0.994447,624.95529,-186.86272,215.762941, + 0.234823,0,0.972038,649.884069,-186.86272,210.885907, + 0.148826,-0.01661,0.988724,624.95529,-549.169432,215.762941, + 0.277314,-0.016138,0.960644,649.884069,-549.087494,210.885907, + -0.9937,0.002257,-0.112046,764.031409,-546.296855,44.770904, + -0.997977,0.055997,-0.030099,764.9959,-186.86272,23.357838, + -0.998987,0.001007,-0.04498,764.9959,-545.937132,23.357838, + -0.997977,0.055997,-0.030099,764.9959,-186.86272,23.357838, + -0.9937,0.002257,-0.112046,764.031409,-546.296855,44.770904, + -0.99093,0,-0.134378,764.031409,-186.86272,44.770904, + -0.112343,0.486683,-0.866325,623.546362,-644.548798,162.550587, + -0.022557,0.36647,-0.930156,602.133289,-623.054827,173.833938, + -0.112343,0.364093,-0.924562,623.546355,-622.700434,172.934486, + -0.022557,0.36647,-0.930156,602.133289,-623.054827,173.833938, + -0.112343,0.486683,-0.866325,623.546362,-644.548798,162.550587, + -0.022557,0.4898,-0.871543,602.133296,-645.022449,163.39336, + -0.649152,0.35745,-0.67144,445.72174,-656.026027,182.972343, + -0.748179,0.244321,-0.616875,448.282005,-630.366836,192.392159, + -0.748179,0.326101,-0.577828,448.282012,-654.795099,180.782109, + -0.748179,0.244321,-0.616875,448.282005,-630.366836,192.392159, + -0.649152,0.35745,-0.67144,445.72174,-656.026027,182.972343, + -0.649152,0.262621,-0.713885,445.721732,-631.287828,194.729696, + 0.229025,-0.229739,0.945922,455.006085,-613.111378,235.617099, + 0.361665,-0.341228,0.867619,458.222244,-643.22526,225.027705, + 0.361665,-0.219818,0.906024,458.222231,-612.875739,234.648467, + 0.361665,-0.341228,0.867619,458.222244,-643.22526,225.027705, + 0.229025,-0.229739,0.945922,455.006085,-613.111378,235.617099, + 0.229025,-0.356494,0.905793,455.006098,-643.590692,225.955193, + -0,0.81044,-0.585821,0.016303,-722.503108,133.044187, + -0.040706,0.871018,-0.489562,429.267772,-737.984764,109.432572, + -0,0.882708,-0.469921,0.016298,-737.984793,109.432704, + -0.040706,0.871018,-0.489562,429.267772,-737.984764,109.432572, + -0,0.81044,-0.585821,0.016303,-722.503108,133.044187, + -0.040706,0.796183,-0.603686,429.267777,-722.503059,133.044086, + -0.040706,0.796183,-0.603686,429.267777,-722.503059,133.044086, + -0.150375,0.86173,-0.484571,432.838949,-737.730682,109.289775, + -0.040706,0.871018,-0.489562,429.267772,-737.984764,109.432572, + -0.150375,0.86173,-0.484571,432.838949,-737.730682,109.289775, + -0.040706,0.796183,-0.603686,429.267777,-722.503059,133.044086, + -0.150375,0.787661,-0.597476,432.838954,-722.270805,132.867998, + 0.127347,-0.98669,0.101126,624.955308,-764.385936,29.28956, + 0.030867,-0.971194,0.236282,599.602131,-761.101673,57.616723, + 0.030866,-0.994332,0.101738,599.602117,-765.945157,29.449075, + 0.030867,-0.971194,0.236282,599.602131,-761.101673,57.616723, + 0.127347,-0.98669,0.101126,624.955308,-764.385936,29.28956, + 0.127347,-0.963706,0.234635,624.955322,-759.578731,57.246228, + -0.928106,0.006604,-0.372257,753.576386,-546.993607,86.24593, + -0.96393,0,-0.266155,760.201807,-186.86272,65.860802, + -0.969674,0.004471,-0.24436,760.201807,-546.651151,65.860802, + -0.96393,0,-0.266155,760.201807,-186.86272,65.860802, + -0.928106,0.006604,-0.372257,753.576386,-546.993607,86.24593, + -0.919489,0,-0.393115,753.576386,-186.86272,86.24593, + -0.969674,0.004471,-0.24436,760.201807,-546.651151,65.860802, + -0.99093,0,-0.134378,764.031409,-186.86272,44.770904, + -0.9937,0.002257,-0.112046,764.031409,-546.296855,44.770904, + -0.99093,0,-0.134378,764.031409,-186.86272,44.770904, + -0.969674,0.004471,-0.24436,760.201807,-546.651151,65.860802, + -0.96393,0,-0.266155,760.201807,-186.86272,65.860802, + -0.494423,0.75738,-0.426523,684.332893,-694.910066,85.224197, + -0.606705,0.739249,-0.292265,702.221351,-693.120267,61.479696, + -0.494423,0.808436,-0.31934,684.332887,-704.132939,65.818702, + -0.606705,0.739249,-0.292265,702.221351,-693.120267,61.479696, + -0.494423,0.75738,-0.426523,684.332893,-694.910066,85.224197, + -0.614316,0.68383,-0.393691,702.221357,-684.591376,79.42501, + -0.649152,0.595502,-0.473264,445.721745,-717.576266,129.308758, + -0.748179,0.469999,-0.468325,448.282019,-697.799917,148.177329, + -0.748179,0.529432,-0.399912,448.282017,-715.574197,127.790857, + -0.748179,0.469999,-0.468325,448.282019,-697.799917,148.177329, + -0.649152,0.595502,-0.473264,445.721745,-717.576266,129.308758, + -0.649152,0.525457,-0.549997,445.721747,-699.576473,149.953886, + -0.022557,0.603993,-0.79667,602.133301,-665.362465,150.056725, + -0,0.509694,-0.860356,454.667766,-645.022494,163.39337, + -0.022557,0.4898,-0.871543,602.133296,-645.022449,163.39336, + -0,0.509694,-0.860356,454.667766,-645.022494,163.39337, + -0.022557,0.603993,-0.79667,602.133301,-665.362465,150.056725, + -0,0.622177,-0.782877,454.66777,-665.3625,150.056742, + 0.127347,-0.963706,0.234635,624.955322,-759.578731,57.246228, + 0.030867,-0.929938,0.366419,599.602143,-752.465071,84.861627, + 0.030867,-0.971194,0.236282,599.602131,-761.101673,57.616723, + 0.030867,-0.929938,0.366419,599.602143,-752.465071,84.861627, + 0.127347,-0.963706,0.234635,624.955322,-759.578731,57.246228, + 0.127347,-0.922744,0.363767,624.955334,-751.006818,84.287065, + -0,0.882708,-0.469921,0.016298,-737.984793,109.432704, + -0.040706,0.929604,-0.366305,429.267763,-750.104609,83.931667, + -0,0.938509,-0.345255,0.01629,-750.104623,83.931833, + -0.040706,0.929604,-0.366305,429.267763,-750.104609,83.931667, + -0,0.882708,-0.469921,0.016298,-737.984793,109.432704, + -0.040706,0.871018,-0.489562,429.267772,-737.984764,109.432572, + 0.999748,-0.021919,0.004805,473.717752,-761.101674,57.616782, + 0.997653,-0.068124,0.006968,473.642039,-769.30108,29.792441, + 0.999748,-0.022318,0.002282,473.717738,-765.945156,29.449145, + 0.997653,-0.068124,0.006968,473.642039,-769.30108,29.792441, + 0.999748,-0.021919,0.004805,473.717752,-761.101674,57.616782, + 0.995804,-0.089282,0.020098,473.642053,-764.379515,58.414175, + 0.091928,-0.601482,0.793579,451.683345,-699.535099,195.12947, + 0.229025,-0.688056,0.688568,455.006115,-723.308225,173.685638, + 0.229025,-0.58781,0.775904,455.006113,-699.207898,194.697902, + 0.229025,-0.688056,0.688568,455.006115,-723.308225,173.685638, + 0.091928,-0.601482,0.793579,451.683345,-699.535099,195.12947, + 0.091928,-0.70401,0.704215,451.683346,-723.691181,174.068594, + 0.995804,-0.035007,0.084556,473.642065,-635.720877,205.981096, + 0.973657,-0.113053,0.198017,473.101758,-663.582664,196.418147, + 0.995804,-0.046203,0.078997,473.642074,-661.950913,193.514715, + 0.973657,-0.113053,0.198017,473.101758,-663.582664,196.418147, + 0.995804,-0.035007,0.084556,473.642065,-635.720877,205.981096, + 0.973657,-0.085015,0.211575,473.101749,-636.941768,209.079797, + 0.609101,-0.770402,0.188354,717.894058,-722.308196,48.179466, + 0.499663,-0.805647,0.318231,696.758793,-728.459324,75.40331, + 0.499663,-0.841496,0.20548,696.758783,-736.031005,51.517793, + 0.499663,-0.805647,0.318231,696.758793,-728.459324,75.40331, + 0.609101,-0.770402,0.188354,717.894058,-722.308196,48.179466, + 0.609101,-0.737549,0.291577,717.894067,-715.319418,70.22617, + -0.537771,0.734555,-0.413801,442.839485,-734.454802,107.448703, + -0.649152,0.701164,-0.294909,445.721732,-744.352284,81.665241, + -0.537771,0.78409,-0.309846,442.839477,-746.337241,82.447316, + -0.649152,0.701164,-0.294909,445.721732,-744.352284,81.665241, + -0.537771,0.734555,-0.413801,442.839485,-734.454802,107.448703, + -0.649152,0.654437,-0.387703,445.72174,-732.59493,106.40344, + 0.381503,-0.452381,0.806106,673.957376,-653.15444,177.862935, + 0.499663,-0.522735,0.690714,696.758805,-668.611056,154.341548, + 0.499663,-0.423738,0.755502,696.7588,-647.656853,168.080895, + 0.499663,-0.522735,0.690714,696.758805,-668.611056,154.341548, + 0.381503,-0.452381,0.806106,673.957376,-653.15444,177.862935, + 0.381503,-0.558006,0.736942,673.957381,-675.390322,163.28321, + 0.256673,-0.473186,0.842742,649.884119,-657.135168,184.945974, + 0.381503,-0.558006,0.736942,673.957381,-675.390322,163.28321, + 0.381503,-0.452381,0.806106,673.957376,-653.15444,177.862935, + 0.381503,-0.558006,0.736942,673.957381,-675.390322,163.28321, + 0.256673,-0.473186,0.842742,649.884119,-657.135168,184.945974, + 0.256673,-0.583609,0.770402,649.884124,-680.299096,169.757745, + 0.127347,-0.48578,0.864755,624.955342,-659.530197,189.207523, + 0.256673,-0.583609,0.770402,649.884124,-680.299096,169.757745, + 0.256673,-0.473186,0.842742,649.884119,-657.135168,184.945974, + 0.256673,-0.583609,0.770402,649.884124,-680.299096,169.757745, + 0.127347,-0.48578,0.864755,624.955342,-659.530197,189.207523, + 0.127347,-0.599085,0.790493,624.955347,-683.252488,173.653183, + 0.030867,-0.489683,0.871354,599.602151,-660.298109,190.573883, + 0.127347,-0.599085,0.790493,624.955347,-683.252488,173.653183, + 0.127347,-0.48578,0.864755,624.955342,-659.530197,189.207523, + 0.127347,-0.599085,0.790493,624.955347,-683.252488,173.653183, + 0.030867,-0.489683,0.871354,599.602151,-660.298109,190.573883, + 0.030867,-0.603851,0.796499,599.602156,-684.199423,174.90216, + 0,-0.509694,0.860356,473.717772,-660.298148,190.573891, + 0.030867,-0.603851,0.796499,599.602156,-684.199423,174.90216, + 0.030867,-0.489683,0.871354,599.602151,-660.298109,190.573883, + 0.030867,-0.603851,0.796499,599.602156,-684.199423,174.90216, + 0,-0.509694,0.860356,473.717772,-660.298148,190.573891, + 0,-0.622177,0.782877,473.717777,-684.199453,174.902175, + 0.999748,-0.011437,0.019306,473.717772,-660.298148,190.573891, + 0.995804,-0.056536,0.071964,473.642079,-686.237536,177.590351, + 0.999748,-0.013961,0.017568,473.717777,-684.199453,174.902175, + 0.995804,-0.056536,0.071964,473.642079,-686.237536,177.590351, + 0.999748,-0.011437,0.019306,473.717772,-660.298148,190.573891, + 0.995804,-0.046203,0.078997,473.642074,-661.950913,193.514715, + 0.995804,-0.046203,0.078997,473.642074,-661.950913,193.514715, + 0.973657,-0.138981,0.180764,473.101763,-688.249706,180.244348, + 0.995804,-0.056536,0.071964,473.642079,-686.237536,177.590351, + 0.973657,-0.138981,0.180764,473.101763,-688.249706,180.244348, + 0.995804,-0.046203,0.078997,473.642074,-661.950913,193.514715, + 0.973657,-0.113053,0.198017,473.101758,-663.582664,196.418147, + -0.285905,0.677271,-0.67791,436.335627,-703.188138,153.565551, + -0.415875,0.72429,-0.549957,439.690621,-720.641807,131.632947, + -0.285905,0.76333,-0.579298,436.335626,-721.646389,132.394587, + -0.415875,0.72429,-0.549957,439.690621,-720.641807,131.632947, + -0.285905,0.677271,-0.67791,436.335627,-703.188138,153.565551, + -0.415875,0.642593,-0.643523,439.690622,-702.296712,152.674124, + 0.997846,-0.065595,-0,847.545902,-563.749227,0, + 0.991423,-0.130694,-0,843.130723,-608.452917,23.357838, + 0.986627,-0.162996,-0,843.130723,-608.452917,-0, + 0.991423,-0.130694,-0,843.130723,-608.452917,23.357838, + 0.997846,-0.065595,-0,847.545902,-563.749227,0, + 0.999698,-0.024594,-0,847.545902,-563.749227,23.357838, + 0.012852,-0.014396,0.999814,448.31772,-549.622454,242.726639, + 0.068639,0,0.997642,451.683281,-186.86272,242.65094, + 0.007496,-0,0.999972,448.31772,-186.86272,242.726639, + 0.068639,0,0.997642,451.683281,-186.86272,242.65094, + 0.012852,-0.014396,0.999814,448.31772,-549.622454,242.726639, + 0.114758,-0.016686,0.993253,451.683281,-549.621181,242.65094, + 0.874212,-0.294445,0.386077,470.677524,-692.04293,185.247507, + 0.79876,-0.426323,0.424536,468.840171,-716.92159,167.299002, + 0.874212,-0.344308,0.342352,470.677525,-714.922322,165.299734, + 0.79876,-0.426323,0.424536,468.840171,-716.92159,167.299002, + 0.874212,-0.294445,0.386077,470.677524,-692.04293,185.247507, + 0.79876,-0.364496,0.47867,468.840169,-693.751117,187.500559, + 0,-0.622177,0.782877,473.717777,-684.199453,174.902175, + 0.030867,-0.706755,0.706785,599.602158,-705.742267,156.119679, + 0.030867,-0.603851,0.796499,599.602156,-684.199423,174.90216, + 0.030867,-0.706755,0.706785,599.602158,-705.742267,156.119679, + 0,-0.622177,0.782877,473.717777,-684.199453,174.902175, + 0,-0.723053,0.690793,473.717779,-705.742288,156.119701, + 0.973657,-0.182625,0.136528,473.101763,-729.866936,138.627118, + 0.932875,-0.314728,0.175187,472.107204,-748.850999,115.539467, + 0.973657,-0.199526,0.110368,473.101758,-746.040734,113.960076, + 0.932875,-0.314728,0.175187,472.107204,-748.850999,115.539467, + 0.973657,-0.182625,0.136528,473.101763,-729.866936,138.627118, + 0.932875,-0.28792,0.21644,472.107209,-732.43577,140.574721, + 0.932875,-0.28792,0.21644,472.107209,-732.43577,140.574721, + 0.874212,-0.423953,0.236679,470.677518,-751.514112,117.036157, + 0.932875,-0.314728,0.175187,472.107204,-748.850999,115.539467, + 0.874212,-0.423953,0.236679,470.677518,-751.514112,117.036157, + 0.932875,-0.28792,0.21644,472.107209,-732.43577,140.574721, + 0.874212,-0.387747,0.292242,470.677524,-734.870094,142.420342, + 0.874212,-0.387747,0.292242,470.677524,-734.870094,142.420342, + 0.79876,-0.525111,0.293667,468.840164,-753.978916,118.421396, + 0.874212,-0.423953,0.236679,470.677518,-751.514112,117.036157, + 0.79876,-0.525111,0.293667,468.840164,-753.978916,118.421396, + 0.874212,-0.387747,0.292242,470.677524,-734.870094,142.420342, + 0.79876,-0.480196,0.362483,468.840169,-737.123146,144.128529, + -0.901181,0.307496,-0.305481,452.247015,-693.58391,143.961322, + -0.952384,0.185405,-0.242052,453.575571,-671.796178,158.542589, + -0.952384,0.216659,-0.21453,453.575573,-691.225448,141.602861, + -0.952384,0.185405,-0.242052,453.575571,-671.796178,158.542589, + -0.901181,0.307496,-0.305481,452.247015,-693.58391,143.961322, + -0.901181,0.263001,-0.344532,452.247014,-673.811262,161.200429, + 0.20592,-0.978017,0.032869,455.006064,-790.947849,23.357838, + 0.091928,-0.990581,0.101478,451.683301,-791.19694,32.032304, + 0.068639,-0.997079,0.03351,451.683295,-791.488471,23.357838, + 0.091928,-0.990581,0.101478,451.683301,-791.19694,32.032304, + 0.20592,-0.978017,0.032869,455.006064,-790.947849,23.357838, + 0.229024,-0.96833,0.09942,455.006069,-790.65817,31.977188, + 0.972038,0,0.234823,787.130168,-186.86272,73.639808, + 0.98887,-0.002499,0.148764,792.007202,-546.363038,48.711029, + 0.994447,0,0.105242,792.007202,-186.86272,48.711029, + 0.98887,-0.002499,0.148764,792.007202,-546.363038,48.711029, + 0.972038,0,0.234823,787.130168,-186.86272,73.639808, + 0.9608,-0.004657,0.277203,787.130168,-546.781824,73.639808, + -0,0.976801,-0.214147,454.667749,-730.806274,50.246897, + -0.022557,0.994554,-0.10175,602.133267,-734.928078,26.276163, + -0,0.996871,-0.079045,454.667737,-734.928076,26.276244, + -0.022557,0.994554,-0.10175,602.133267,-734.928078,26.276163, + -0,0.976801,-0.214147,454.667749,-730.806274,50.246897, + -0.022557,0.971412,-0.236325,602.13328,-730.806273,50.246828, + 0.79876,-0.480196,0.362483,468.840169,-737.123146,144.128529, + 0.717647,-0.602641,0.349008,466.630436,-756.198062,119.668573, + 0.79876,-0.525111,0.293667,468.840164,-753.978916,118.421396, + 0.717647,-0.602641,0.349008,466.630436,-756.198062,119.668573, + 0.79876,-0.480196,0.362483,468.840169,-737.123146,144.128529, + 0.707932,-0.563486,0.425811,466.630442,-739.151644,145.666467, + -0.244971,0.355055,-0.902178,644.636252,-621.293309,169.363128, + -0.112343,0.23471,-0.965552,623.546346,-599.640892,180.244333, + -0.244971,0.228806,-0.942145,644.636243,-598.733545,176.514546, + -0.112343,0.23471,-0.965552,623.546346,-599.640892,180.244333, + -0.244971,0.355055,-0.902178,644.636252,-621.293309,169.363128, + -0.112343,0.364093,-0.924562,623.546355,-622.700434,172.934486, + 0,-0.258478,0.966017,473.717752,-607.239369,211.479086, + 0.030867,-0.366379,0.929954,599.602143,-634.484215,202.842483, + 0.030867,-0.23624,0.971204,599.602131,-607.23931,211.479086, + 0.030867,-0.366379,0.929954,599.602143,-634.484215,202.842483, + 0,-0.258478,0.966017,473.717752,-607.239369,211.479086, + 0,-0.387702,0.921785,473.717764,-634.484263,202.842487, + 0.794465,-0.565471,0.221515,753.73928,-681.891377,57.055486, + 0.707841,-0.682368,0.182581,736.997677,-706.002952,44.212918, + 0.800126,-0.584324,0.13551,753.739273,-687.397248,39.686742, + 0.707841,-0.682368,0.182581,736.997677,-706.002952,44.212918, + 0.794465,-0.565471,0.221515,753.73928,-681.891377,57.055486, + 0.707841,-0.651123,0.273862,736.997686,-699.706769,64.074769, + 0.616524,-0.682339,0.392825,717.894074,-705.391609,91.114894, + 0.499663,-0.689808,0.523929,696.758805,-703.964135,118.988469, + 0.499663,-0.754768,0.425045,696.7588,-717.703482,98.034266, + 0.499663,-0.689808,0.523929,696.758805,-703.964135,118.988469, + 0.616524,-0.682339,0.392825,717.894074,-705.391609,91.114894, + 0.609002,-0.620953,0.493491,717.894078,-692.709977,110.455949, + 0.995785,-0,0.091715,473.642021,-186.86272,220.6922, + 0.999747,-0.000377,0.02248,473.71772,-549.195746,217.326639, + 0.999747,0,0.022487,473.71772,-186.86272,217.326639, + 0.999747,-0.000377,0.02248,473.71772,-549.195746,217.326639, + 0.995785,-0,0.091715,473.642021,-186.86272,220.6922, + 0.994417,-0.002312,0.105501,473.642021,-549.252285,220.6922, + 0.361665,-0.341228,0.867619,458.222244,-643.22526,225.027705, + 0.487279,-0.427162,0.761638,461.269994,-671.27861,210.111812, + 0.487278,-0.319392,0.812741,461.269985,-642.699947,223.694428, + 0.487279,-0.427162,0.761638,461.269994,-671.27861,210.111812, + 0.361665,-0.341228,0.867619,458.222244,-643.22526,225.027705, + 0.361665,-0.456272,0.813028,458.222253,-671.980704,211.361071, + -0.985345,0.084925,-0.14793,454.431271,-648.531199,169.636534, + -0.999454,0.013569,-0.030128,454.797676,-624.370524,177.173126, + -0.999454,0.017548,-0.027998,454.797683,-646.780881,166.522129, + -0.999454,0.013569,-0.030128,454.797676,-624.370524,177.173126, + -0.985345,0.084925,-0.14793,454.431271,-648.531199,169.636534, + -0.985345,0.063975,-0.158123,454.431263,-625.680129,180.496989, + -0,0.976801,-0.214147,0.016279,-758.636496,57.017305, + -0.040706,0.99398,-0.101718,429.267738,-763.421251,29.190985, + -0,0.996871,-0.079045,0.016265,-763.421248,29.191222, + -0.040706,0.99398,-0.101718,429.267738,-763.421251,29.190985, + -0,0.976801,-0.214147,0.016279,-758.636496,57.017305, + -0.040706,0.970848,-0.236215,429.267752,-758.636494,57.017104, + -0.832126,0.009639,-0.554503,450.471071,-548.95985,203.284158, + -0.890491,0,-0.455,452.246961,-186.86272,200.172234, + -0.90081,0.007643,-0.434147,452.246961,-548.907571,200.172234, + -0.890491,0,-0.455,452.246961,-186.86272,200.172234, + -0.832126,0.009639,-0.554503,450.471071,-548.95985,203.284158, + -0.819027,0,-0.573755,450.471071,-186.86272,203.284158, + 0.229025,-0.356494,0.905793,455.006098,-643.590692,225.955193, + 0.361665,-0.456272,0.813028,458.222253,-671.980704,211.361071, + 0.361665,-0.341228,0.867619,458.222244,-643.22526,225.027705, + 0.361665,-0.456272,0.813028,458.222253,-671.980704,211.361071, + 0.229025,-0.356494,0.905793,455.006098,-643.590692,225.955193, + 0.229025,-0.476597,0.848766,455.006107,-672.469112,212.230111, + -0.993727,0.098232,-0.053457,764.031424,-589.417442,25.936523, + -0.998992,0.039135,-0.021994,764.267941,-584.829097,23.357838, + -0.99093,0.121368,-0.057682,764.031423,-590.643016,23.357838, + -0.150375,0.86173,-0.484571,432.838949,-737.730682,109.289775, + -0.285905,0.891387,-0.351693,436.335613,-749.104397,83.53758, + -0.150375,0.919722,-0.362627,432.838941,-749.833439,83.824825, + -0.285905,0.891387,-0.351693,436.335613,-749.104397,83.53758, + -0.150375,0.86173,-0.484571,432.838949,-737.730682,109.289775, + -0.285905,0.835148,-0.469878,436.335621,-737.047581,108.905866, + 0.995804,-0.073866,0.054027,473.642079,-727.212939,136.614949, + 0.973657,-0.199526,0.110368,473.101758,-746.040734,113.960076, + 0.995804,-0.08054,0.043457,473.642074,-743.137303,112.328326, + 0.973657,-0.199526,0.110368,473.101758,-746.040734,113.960076, + 0.995804,-0.073866,0.054027,473.642079,-727.212939,136.614949, + 0.973657,-0.182625,0.136528,473.101763,-729.866936,138.627118, + 0.707932,-0.427549,0.562168,736.997696,-649.94032,129.715362, + 0.609002,-0.547915,0.573503,717.894079,-677.511106,127.888519, + 0.707932,-0.500166,0.498664,736.997697,-665.645303,116.022715, + 0.609002,-0.547915,0.573503,717.894079,-677.511106,127.888519, + 0.707932,-0.427549,0.562168,736.997696,-649.94032,129.715362, + 0.609002,-0.464655,0.642816,717.894078,-660.078536,143.08739, + 0.499663,-0.522735,0.690714,696.758805,-668.611056,154.341548, + 0.609002,-0.547915,0.573503,717.894079,-677.511106,127.888519, + 0.609002,-0.464655,0.642816,717.894078,-660.078536,143.08739, + 0.609002,-0.547915,0.573503,717.894079,-677.511106,127.888519, + 0.499663,-0.522735,0.690714,696.758805,-668.611056,154.341548, + 0.499663,-0.61198,0.61304,696.758806,-687.497596,137.875009, + 0.381503,-0.558006,0.736942,673.957381,-675.390322,163.28321, + 0.499663,-0.61198,0.61304,696.758806,-687.497596,137.875009, + 0.499663,-0.522735,0.690714,696.758805,-668.611056,154.341548, + 0.499663,-0.61198,0.61304,696.758806,-687.497596,137.875009, + 0.381503,-0.558006,0.736942,673.957381,-675.390322,163.28321, + 0.381503,-0.653222,0.654031,673.957383,-695.432071,145.809483, + 0.256673,-0.583609,0.770402,649.884124,-680.299096,169.757745, + 0.381503,-0.653222,0.654031,673.957383,-695.432071,145.809483, + 0.381503,-0.558006,0.736942,673.957381,-675.390322,163.28321, + 0.381503,-0.653222,0.654031,673.957383,-695.432071,145.809483, + 0.256673,-0.583609,0.770402,649.884124,-680.299096,169.757745, + 0.256673,-0.683145,0.68369,649.884126,-701.177315,151.554728, + 0.127347,-0.599085,0.790493,624.955347,-683.252488,173.653183, + 0.256673,-0.683145,0.68369,649.884126,-701.177315,151.554728, + 0.256673,-0.583609,0.770402,649.884124,-680.299096,169.757745, + 0.256673,-0.683145,0.68369,649.884126,-701.177315,151.554728, + 0.127347,-0.599085,0.790493,624.955347,-683.252488,173.653183, + 0.127347,-0.701215,0.701485,624.955349,-704.633973,155.011385, + 0.867227,-0.434695,0.24281,767.829333,-655.602109,63.132805, + 0.794465,-0.565471,0.221515,753.73928,-681.891377,57.055486, + 0.867227,-0.463727,0.18131,767.829328,-662.181333,49.28971, + 0.794465,-0.565471,0.221515,753.73928,-681.891377,57.055486, + 0.867227,-0.434695,0.24281,767.829333,-655.602109,63.132805, + 0.794465,-0.530011,0.296503,753.739286,-674.070091,73.511955, + 0.794465,-0.530011,0.296503,753.739286,-674.070091,73.511955, + 0.707841,-0.651123,0.273862,736.997686,-699.706769,64.074769, + 0.794465,-0.565471,0.221515,753.73928,-681.891377,57.055486, + 0.707841,-0.651123,0.273862,736.997686,-699.706769,64.074769, + 0.794465,-0.530011,0.296503,753.739286,-674.070091,73.511955, + 0.717149,-0.603071,0.349289,736.997692,-690.762817,82.893397, + 0.707841,-0.651123,0.273862,736.997686,-699.706769,64.074769, + 0.616524,-0.682339,0.392825,717.894074,-705.391609,91.114894, + 0.609101,-0.737549,0.291577,717.894067,-715.319418,70.22617, + 0.616524,-0.682339,0.392825,717.894074,-705.391609,91.114894, + 0.707841,-0.651123,0.273862,736.997686,-699.706769,64.074769, + 0.717149,-0.603071,0.349289,736.997692,-690.762817,82.893397, + 0.487278,-0.319392,0.812741,461.269985,-642.699947,223.694428, + 0.592261,-0.384709,0.707974,464.090784,-670.376318,208.506333, + 0.603443,-0.29142,0.742247,464.090775,-642.024843,221.980973, + 0.592261,-0.384709,0.707974,464.090784,-670.376318,208.506333, + 0.487278,-0.319392,0.812741,461.269985,-642.699947,223.694428, + 0.487279,-0.427162,0.761638,461.269994,-671.27861,210.111812, + 0.603443,-0.774584,0.189413,464.090763,-781.089165,62.479098, + 0.487278,-0.812176,0.320826,461.269985,-773.317015,93.077359, + 0.487278,-0.848318,0.207161,461.269972,-782.878631,62.914419, + 0.487278,-0.812176,0.320826,461.269985,-773.317015,93.077359, + 0.603443,-0.774584,0.189413,464.090763,-781.089165,62.479098, + 0.603443,-0.741548,0.293196,464.090775,-771.60356,92.402256, + -0.832687,0.538362,-0.129611,450.471101,-747.425197,54.289747, + -0.901181,0.40379,-0.157562,452.247002,-736.467457,78.558611, + -0.901181,0.421494,-0.101069,452.246991,-744.394382,53.552447, + -0.901181,0.40379,-0.157562,452.247002,-736.467457,78.558611, + -0.832687,0.538362,-0.129611,450.471101,-747.425197,54.289747, + -0.832687,0.515679,-0.201762,450.471112,-739.369533,79.702032, + -0.901181,0.421494,-0.101069,452.246991,-744.394382,53.552447, + -0.952384,0.284225,-0.110366,453.575559,-733.364268,77.335952, + -0.952384,0.296613,-0.070606,453.575549,-741.153531,52.764052, + -0.952384,0.284225,-0.110366,453.575559,-733.364268,77.335952, + -0.901181,0.421494,-0.101069,452.246991,-744.394382,53.552447, + -0.901181,0.40379,-0.157562,452.247002,-736.467457,78.558611, + -0.952384,0.296613,-0.070606,453.575549,-741.153531,52.764052, + -0.985345,0.159265,-0.061075,454.431263,-730.119577,76.057541, + -0.985345,0.166102,-0.038803,454.431253,-737.764902,51.939707, + -0.985345,0.159265,-0.061075,454.431263,-730.119577,76.057541, + -0.952384,0.296613,-0.070606,453.575549,-741.153531,52.764052, + -0.952384,0.284225,-0.110366,453.575559,-733.364268,77.335952, + -0.985345,0.166102,-0.038803,454.431253,-737.764902,51.939707, + -0.999454,0.031287,-0.010628,454.797676,-726.795714,74.747937, + -0.999454,0.032443,-0.006265,454.797666,-734.293588,51.095248, + -0.999454,0.031287,-0.010628,454.797676,-726.795714,74.747937, + -0.985345,0.166102,-0.038803,454.431253,-737.764902,51.939707, + -0.985345,0.159265,-0.061075,454.431263,-730.119577,76.057541, + -0.999454,0.032443,-0.006265,454.797666,-734.293588,51.095248, + -0.999345,-0.033959,0.012493,454.667758,-723.45653,73.432296, + -0.999345,-0.035345,0.007749,454.667749,-730.806274,50.246897, + -0.999345,-0.033959,0.012493,454.667758,-723.45653,73.432296, + -0.999454,0.032443,-0.006265,454.797666,-734.293588,51.095248, + -0.999454,0.031287,-0.010628,454.797676,-726.795714,74.747937, + -0,0.938509,-0.345255,454.667758,-723.45653,73.432296, + -0.022557,0.971412,-0.236325,602.13328,-730.806273,50.246828, + -0,0.976801,-0.214147,454.667749,-730.806274,50.246897, + -0.022557,0.971412,-0.236325,602.13328,-730.806273,50.246828, + -0,0.938509,-0.345255,454.667758,-723.45653,73.432296, + -0.022557,0.930148,-0.366491,602.133289,-723.456525,73.43224, + -0.022557,0.930148,-0.366491,602.133289,-723.456525,73.43224, + -0.112343,0.96547,-0.235045,623.546346,-729.866921,50.018304, + -0.022557,0.971412,-0.236325,602.13328,-730.806273,50.246828, + -0.112343,0.96547,-0.235045,623.546346,-729.866921,50.018304, + -0.022557,0.930148,-0.366491,602.133289,-723.456525,73.43224, + -0.112343,0.924436,-0.364414,623.546355,-722.557073,73.077847, + -0.112343,0.924436,-0.364414,623.546355,-722.557073,73.077847, + -0.244971,0.941967,-0.229537,644.636243,-726.137133,49.110957, + -0.112343,0.96547,-0.235045,623.546346,-729.866921,50.018304, + -0.244971,0.941967,-0.229537,644.636243,-726.137133,49.110957, + -0.112343,0.924436,-0.364414,623.546355,-722.557073,73.077847, + -0.244971,0.901902,-0.355754,644.636252,-718.985715,71.670721, + -0.244971,0.901902,-0.355754,644.636252,-718.985715,71.670721, + -0.373111,0.90136,-0.219861,665.02137,-719.684398,47.541206, + -0.244971,0.941967,-0.229537,644.636243,-726.137133,49.110957, + -0.373111,0.90136,-0.219861,665.02137,-719.684398,47.541206, + -0.244971,0.901902,-0.355754,644.636252,-718.985715,71.670721, + -0.373111,0.862993,-0.340635,665.021379,-712.807071,69.236324, + -0.787976,0.615705,-0,672.962315,-626.669842,-0, + -0.828968,0.559296,-0,681.15025,-615.40225,5.83946, + -0.847987,0.530018,-0,681.15025,-615.40225,-0, + -0.828968,0.559296,-0,681.15025,-615.40225,5.83946, + -0.787976,0.615705,-0,672.962315,-626.669842,-0, + -0.766003,0.642837,-0,672.962315,-626.669842,5.83946, + -0,-0,-1,700.992217,-563.749227,5.83946, + -0,0,-1,0.001765,-186.86272,5.83946, + 0,0,-1,764.9959,-186.86272,5.83946, + -0,0,-1,0.001765,-186.86272,5.83946, + -0,-0,-1,700.992217,-563.749227,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,700.992217,-563.749227,5.83946, + -0,-0,-1,698.091838,-577.372321,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,698.091838,-577.372321,5.83946, + -0,-0,-1,693.784142,-590.617874,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,693.784142,-590.617874,5.83946, + -0,-0,-1,688.11627,-603.340929,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,688.11627,-603.340929,5.83946, + -0,-0,-1,681.15025,-615.40225,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,681.15025,-615.40225,5.83946, + -0,-0,-1,672.962315,-626.669842,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,672.962315,-626.669842,5.83946, + -0,-0,-1,663.642072,-637.020396,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,663.642072,-637.020396,5.83946, + -0,-0,-1,653.291518,-646.340639,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,653.291518,-646.340639,5.83946, + -0,-0,-1,642.023926,-654.528574,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,642.023926,-654.528574,5.83946, + -0,-0,-1,629.962605,-661.494594,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,629.962605,-661.494594,5.83946, + -0,-0,-1,617.239549,-667.162466,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,617.239549,-667.162466,5.83946, + -0,-0,-1,603.993997,-671.470162,5.83946, + -0,-0,-1,0.000468,-674.370541,5.83946, + -0,-0,-1,603.993997,-671.470162,5.83946, + 0,-0,-1,590.370902,-674.370541,5.83946, + -0.898717,0.438529,-0,688.11627,-603.340929,-0, + -0.927092,0.374833,-0,693.784142,-590.617874,5.83946, + -0.939612,0.342242,0,693.784142,-590.617874,-0, + -0.927092,0.374833,-0,693.784142,-590.617874,5.83946, + -0.898717,0.438529,-0,688.11627,-603.340929,-0, + -0.882861,0.469634,-0,688.11627,-603.340929,5.83946, + -0.719343,0.694655,-0,663.642072,-637.020396,-0, + -0.766003,0.642837,-0,672.962315,-626.669842,5.83946, + -0.787976,0.615705,-0,672.962315,-626.669842,-0, + -0.766003,0.642837,-0,672.962315,-626.669842,5.83946, + -0.719343,0.694655,-0,663.642072,-637.020396,-0, + -0.694655,0.719343,-0,663.642072,-637.020396,5.83946, + -0.694655,0.719343,-0,663.642072,-637.020396,5.83946, + -0.642837,0.766003,-0,653.291518,-646.340639,-0, + -0.615705,0.787976,-0,653.291518,-646.340639,5.83946, + -0.642837,0.766003,-0,653.291518,-646.340639,-0, + -0.694655,0.719343,-0,663.642072,-637.020396,5.83946, + -0.719343,0.694655,-0,663.642072,-637.020396,-0, + -0.985345,0.159265,-0.061075,454.431263,-730.119577,76.057541, + -0.999454,0.029547,-0.014792,454.797683,-716.144717,97.158293, + -0.999454,0.031287,-0.010628,454.797676,-726.795714,74.747937, + -0.999454,0.029547,-0.014792,454.797683,-716.144717,97.158293, + -0.985345,0.159265,-0.061075,454.431263,-730.119577,76.057541, + -0.985345,0.149457,-0.082208,454.431271,-719.259121,98.908612, + -0.040706,0.489496,-0.871055,429.267772,-659.055159,188.362176, + -0,0.387702,-0.921785,0.01629,-633.55442,200.482036, + -0.040706,0.366235,-0.929632,429.267763,-633.554255,200.482022, + -0,0.387702,-0.921785,0.01629,-633.55442,200.482036, + -0.040706,0.489496,-0.871055,429.267772,-659.055159,188.362176, + -0,0.509694,-0.860356,0.016298,-659.055291,188.362206, + 0.091928,-0.364886,0.926503,451.68333,-643.789223,226.459074, + 0.229025,-0.476597,0.848766,455.006107,-672.469112,212.230111, + 0.229025,-0.356494,0.905793,455.006098,-643.590692,225.955193, + 0.229025,-0.476597,0.848766,455.006107,-672.469112,212.230111, + 0.091928,-0.364886,0.926503,451.68333,-643.789223,226.459074, + 0.091928,-0.487734,0.868139,451.683339,-672.734453,212.70224, + -0.244971,0.685296,-0.685827,644.636265,-680.297547,130.67496, + -0.373111,0.738976,-0.560984,665.02139,-690.558191,108.824546, + -0.244971,0.772358,-0.586047,644.636264,-695.850119,112.836708, + -0.373111,0.738976,-0.560984,665.02139,-690.558191,108.824546, + -0.244971,0.685296,-0.685827,644.636265,-680.297547,130.67496, + -0.373111,0.655639,-0.656449,665.021391,-675.601701,125.979113, + 0.487278,-0.848318,0.207161,461.269972,-782.878631,62.914419, + 0.361665,-0.867199,0.342292,458.222244,-774.650293,93.602673, + 0.361665,-0.905753,0.220929,458.222231,-784.271055,63.253152, + 0.361665,-0.867199,0.342292,458.222244,-774.650293,93.602673, + 0.487278,-0.848318,0.207161,461.269972,-782.878631,62.914419, + 0.487278,-0.812176,0.320826,461.269985,-773.317015,93.077359, + -0.748179,0.244321,-0.616875,448.282005,-630.366836,192.392159, + -0.832687,0.13217,-0.53774,450.471101,-603.912334,197.80261, + -0.832687,0.204213,-0.514714,450.471112,-629.324619,189.746946, + -0.832687,0.13217,-0.53774,450.471101,-603.912334,197.80261, + -0.748179,0.244321,-0.616875,448.282005,-630.366836,192.392159, + -0.741547,0.152765,-0.653277,448.281994,-604.584377,200.565168, + 0.79876,-0.221723,0.559304,468.840155,-640.279768,217.551861, + 0.700875,-0.343846,0.624935,466.630436,-669.291161,206.575475, + 0.79876,-0.29587,0.523873,468.840164,-668.043983,204.356329, + 0.700875,-0.343846,0.624935,466.630436,-669.291161,206.575475, + 0.79876,-0.221723,0.559304,468.840155,-640.279768,217.551861, + 0.707841,-0.243878,0.662936,466.630427,-641.212918,219.920255, + -0.999454,0.017548,-0.027998,454.797683,-646.780881,166.522129, + -0.999345,-0.014029,0.033354,454.667758,-623.054884,173.833943, + -0.999345,-0.018443,0.031131,454.667766,-645.022494,163.39337, + -0.999345,-0.014029,0.033354,454.667758,-623.054884,173.833943, + -0.999454,0.017548,-0.027998,454.797683,-646.780881,166.522129, + -0.999454,0.013569,-0.030128,454.797676,-624.370524,177.173126, + -0.022557,0.4898,-0.871543,602.133296,-645.022449,163.39336, + -0,0.387702,-0.921785,454.667758,-623.054884,173.833943, + -0.022557,0.36647,-0.930156,602.133289,-623.054827,173.833938, + -0,0.387702,-0.921785,454.667758,-623.054884,173.833943, + -0.022557,0.4898,-0.871543,602.133296,-645.022449,163.39336, + -0,0.509694,-0.860356,454.667766,-645.022494,163.39337, + 0.603443,-0.741548,0.293196,464.090775,-771.60356,92.402256, + 0.487279,-0.760883,0.428506,461.269994,-759.734399,121.656023, + 0.487278,-0.812176,0.320826,461.269985,-773.317015,93.077359, + 0.487279,-0.760883,0.428506,461.269994,-759.734399,121.656023, + 0.603443,-0.741548,0.293196,464.090775,-771.60356,92.402256, + 0.611311,-0.685845,0.394863,464.090784,-758.12892,120.753731, + 0.229025,-0.476597,0.848766,455.006107,-672.469112,212.230111, + 0.361665,-0.562804,0.74327,458.222259,-698.605625,193.903521, + 0.361665,-0.456272,0.813028,458.222253,-671.980704,211.361071, + 0.361665,-0.562804,0.74327,458.222259,-698.605625,193.903521, + 0.229025,-0.476597,0.848766,455.006107,-672.469112,212.230111, + 0.229025,-0.58781,0.775904,455.006113,-699.207898,194.697902, + -0.527988,0,-0.849252,100.155807,-186.86272,2052.977553, + -0.382683,0,-0.92388,69.023518,-280.29408,2069.618109, + -0.382683,0,-0.92388,69.023518,-186.86272,2069.618109, + -0.382683,0,-0.92388,69.023518,-280.29408,2069.618109, + -0.527988,0,-0.849252,100.155807,-186.86272,2052.977553, + -0.582554,0,-0.812792,100.155807,-280.29408,2052.977553, + -0.582554,0,0.812792,100.155807,-280.29408,1753.526669, + -0.707107,0,0.707107,127.443487,-186.86272,1775.921089, + -0.527988,0,0.849252,100.155807,-186.86272,1753.526669, + -0.707107,0,0.707107,127.443487,-186.86272,1775.921089, + -0.582554,0,0.812792,100.155807,-280.29408,1753.526669, + -0.707107,0,0.707107,127.443487,-280.29408,1775.921089, + -0.812792,0,0.582554,149.837908,-280.29408,1803.208769, + -0.707107,0,0.707107,127.443487,-186.86272,1775.921089, + -0.707107,0,0.707107,127.443487,-280.29408,1775.921089, + -0.707107,0,0.707107,127.443487,-186.86272,1775.921089, + -0.812792,0,0.582554,149.837908,-280.29408,1803.208769, + -0.849252,0,0.527988,149.837908,-186.86272,1803.208769, + -0.849252,0,-0.527988,149.837908,-280.29408,2003.295453, + -0.910825,0,-0.412792,166.478463,-186.86272,1972.163164, + -0.935939,0,-0.352162,166.478463,-280.29408,1972.163164, + -0.910825,0,-0.412792,166.478463,-186.86272,1972.163164, + -0.849252,0,-0.527988,149.837908,-280.29408,2003.295453, + -0.812792,0,-0.582554,149.837908,-186.86272,2003.295453, + -0.870211,0.298718,-0.391791,744.275058,-616.515297,85.628667, + -0.928388,0.183307,-0.323257,753.57641,-595.926736,76.035688, + -0.928388,0.225646,-0.295263,753.576412,-604.820821,70.203974, + -0.928388,0.183307,-0.323257,753.57641,-595.926736,76.035688, + -0.870211,0.298718,-0.391791,744.275058,-616.515297,85.628667, + -0.870211,0.242544,-0.428841,744.275056,-605.410265,92.910065, + 0.973657,-0.085015,0.211575,473.101749,-636.941768,209.079797, + 0.932875,-0.177759,0.313282,472.107204,-665.162054,199.228412, + 0.973657,-0.113053,0.198017,473.101758,-663.582664,196.418147, + 0.932875,-0.177759,0.313282,472.107204,-665.162054,199.228412, + 0.973657,-0.085015,0.211575,473.101749,-636.941768,209.079797, + 0.932875,-0.133411,0.334583,472.107195,-638.123482,212.079066, + -0.112343,0.364093,-0.924562,623.546355,-622.700434,172.934486, + -0.022557,0.236303,-0.971418,602.13328,-599.869416,181.183686, + -0.112343,0.23471,-0.965552,623.546346,-599.640892,180.244333, + -0.022557,0.236303,-0.971418,602.13328,-599.869416,181.183686, + -0.112343,0.364093,-0.924562,623.546355,-622.700434,172.934486, + -0.022557,0.36647,-0.930156,602.133289,-623.054827,173.833938, + 0,-0.622177,0.782877,0.000063,-699.581047,195.189986, + 0.011271,-0.70706,0.707064,448.317785,-723.744835,174.122247, + 0.011271,-0.604116,0.796817,448.317783,-699.580941,195.189934, + 0.011271,-0.70706,0.707064,448.317785,-723.744835,174.122247, + 0,-0.622177,0.782877,0.000063,-699.581047,195.189986, + 0,-0.723053,0.690793,0.000065,-723.744912,174.122324, + -0.999454,0.027255,-0.01868,454.797688,-702.539296,117.908241, + -0.999345,-0.026163,0.024996,454.667771,-683.695448,134.072861, + -0.999345,-0.029325,0.021198,454.66777,-699.67933,115.739913, + -0.999345,-0.026163,0.024996,454.667771,-683.695448,134.072861, + -0.999454,0.027255,-0.01868,454.797688,-702.539296,117.908241, + -0.999454,0.024455,-0.02222,454.797689,-686.233268,136.610681, + -0,0.723053,-0.690793,454.667771,-683.695448,134.072861, + -0.022557,0.796656,-0.604012,602.133301,-699.679313,115.739878, + -0,0.81044,-0.585821,454.66777,-699.67933,115.739913, + -0.022557,0.796656,-0.604012,602.133301,-699.679313,115.739878, + -0,0.723053,-0.690793,454.667771,-683.695448,134.072861, + -0.022557,0.706919,-0.706935,602.133302,-683.695423,134.072836, + 0.361665,-0.456272,0.813028,458.222253,-671.980704,211.361071, + 0.487279,-0.526963,0.696326,461.27,-697.739849,192.761586, + 0.487279,-0.427162,0.761638,461.269994,-671.27861,210.111812, + 0.487279,-0.526963,0.696326,461.27,-697.739849,192.761586, + 0.361665,-0.456272,0.813028,458.222253,-671.980704,211.361071, + 0.361665,-0.562804,0.74327,458.222259,-698.605625,193.903521, + 0.030866,-0.101695,0.994337,599.602117,-579.071663,216.32257, + 0.127347,-0.234264,0.963796,624.955322,-606.868816,209.956143, + 0.127347,-0.100746,0.986728,624.955308,-578.912147,214.763349, + 0.127347,-0.234264,0.963796,624.955322,-606.868816,209.956143, + 0.030866,-0.101695,0.994337,599.602117,-579.071663,216.32257, + 0.030867,-0.23624,0.971204,599.602131,-607.23931,211.479086, + 0.091928,-0.926396,0.365157,451.68333,-776.081661,94.166635, + 0.011271,-0.871702,0.489906,448.317778,-762.390973,123.149041, + 0.011271,-0.930329,0.366553,448.317768,-776.152256,94.194451, + 0.011271,-0.871702,0.489906,448.317778,-762.390973,123.149041, + 0.091928,-0.926396,0.365157,451.68333,-776.081661,94.166635, + 0.091928,-0.867996,0.487987,451.683339,-762.324827,123.111865, + -0.796291,0.563252,-0.220608,732.466058,-664.91507,50.366817, + -0.870211,0.43015,-0.240215,744.275056,-642.532652,55.787678, + -0.870211,0.458871,-0.17936,744.275052,-648.232891,43.794023, + -0.870211,0.43015,-0.240215,744.275056,-642.532652,55.787678, + -0.796291,0.563252,-0.220608,732.466058,-664.91507,50.366817, + -0.796291,0.527936,-0.295302,732.466063,-658.163576,64.572379, + 0.229025,-0.905527,0.357167,455.006098,-775.57778,93.968105, + 0.091928,-0.867996,0.487987,451.683339,-762.324827,123.111865, + 0.091928,-0.926396,0.365157,451.68333,-776.081661,94.166635, + 0.091928,-0.867996,0.487987,451.683339,-762.324827,123.111865, + 0.229025,-0.905527,0.357167,455.006098,-775.57778,93.968105, + 0.229025,-0.848411,0.477229,455.006107,-761.852699,122.846525, + -0.112099,0.016649,-0.993558,623.546317,-548.656939,185.255996, + -0.030004,0,-0.99955,602.133251,-186.86272,186.220487, + -0.134378,0,-0.99093,623.546317,-186.86272,185.255996, + -0.030004,0,-0.99955,602.133251,-186.86272,186.220487, + -0.112099,0.016649,-0.993558,623.546317,-548.656939,185.255996, + -0.022507,0.01679,-0.999606,602.133251,-548.673148,186.220487, + 0.867227,-0.051963,0.495193,767.829315,-569.19647,119.787648, + 0.794465,-0.14471,0.589818,753.739273,-589.30933,137.774661, + 0.867227,-0.118957,0.483493,767.829322,-584.301801,117.190256, + 0.794465,-0.14471,0.589818,753.739273,-589.30933,137.774661, + 0.867227,-0.051963,0.495193,767.829315,-569.19647,119.787648, + 0.794465,-0.062988,0.604035,753.739264,-571.352333,140.862403, + 0.794465,-0.062988,0.604035,753.739264,-571.352333,140.862403, + 0.707841,-0.151267,0.689985,736.997677,-593.835505,156.380365, + 0.794465,-0.14471,0.589818,753.739273,-589.30933,137.774661, + 0.707841,-0.151267,0.689985,736.997677,-593.835505,156.380365, + 0.794465,-0.062988,0.604035,753.739264,-571.352333,140.862403, + 0.707841,-0.055835,0.704162,736.997667,-573.300963,159.911321, + 0.995804,-0.056536,0.071964,473.642079,-686.237536,177.590351, + 0.973657,-0.162317,0.16014,473.101765,-710.482719,160.860131, + 0.995804,-0.065815,0.063588,473.64208,-708.127668,158.505081, + 0.973657,-0.162317,0.16014,473.101765,-710.482719,160.860131, + 0.995804,-0.056536,0.071964,473.642079,-686.237536,177.590351, + 0.973657,-0.138981,0.180764,473.101763,-688.249706,180.244348, + -0.9698,0.173513,-0.171408,760.201828,-598.389085,48.766498, + -0.993727,0.068775,-0.088188,764.031425,-579.704781,37.076602, + -0.993727,0.08015,-0.077994,764.031425,-583.441377,33.81879, + -0.993727,0.068775,-0.088188,764.031425,-579.704781,37.076602, + -0.9698,0.173513,-0.171408,760.201828,-598.389085,48.766498, + -0.9698,0.148537,-0.193454,760.201828,-592.476195,53.921748, + -0.649152,0.654437,-0.387703,445.72174,-732.59493,106.40344, + -0.748179,0.529432,-0.399912,448.282017,-715.574197,127.790857, + -0.748179,0.578988,-0.324038,448.282012,-730.404697,105.172511, + -0.748179,0.529432,-0.399912,448.282017,-715.574197,127.790857, + -0.649152,0.654437,-0.387703,445.72174,-732.59493,106.40344, + -0.649152,0.595502,-0.473264,445.721745,-717.576266,129.308758, + -0.022557,0.796656,-0.604012,602.133301,-699.679313,115.739878, + -0.112343,0.866156,-0.486984,623.546362,-712.173175,94.926211, + -0.022557,0.871531,-0.489821,602.133296,-713.015947,95.399861, + -0.112343,0.866156,-0.486984,623.546362,-712.173175,94.926211, + -0.022557,0.796656,-0.604012,602.133301,-699.679313,115.739878, + -0.112343,0.791717,-0.600469,623.546367,-698.908942,115.155806, + 0.707932,-0.563486,0.425811,466.630442,-739.151644,145.666467, + 0.611311,-0.685845,0.394863,464.090784,-758.12892,120.753731, + 0.717647,-0.602641,0.349008,466.630436,-756.198062,119.668573, + 0.611311,-0.685845,0.394863,464.090784,-758.12892,120.753731, + 0.707932,-0.563486,0.425811,466.630442,-739.151644,145.666467, + 0.603343,-0.62433,0.496175,464.09079,-740.916622,147.004613, + 0.611311,-0.685845,0.394863,464.090784,-758.12892,120.753731, + 0.487279,-0.695395,0.528191,461.27,-742.384174,148.117261, + 0.487279,-0.760883,0.428506,461.269994,-759.734399,121.656023, + 0.487279,-0.695395,0.528191,461.27,-742.384174,148.117261, + 0.611311,-0.685845,0.394863,464.090784,-758.12892,120.753731, + 0.603343,-0.62433,0.496175,464.09079,-740.916622,147.004613, + 0.487279,-0.760883,0.428506,461.269994,-759.734399,121.656023, + 0.361665,-0.742579,0.563715,458.222259,-743.526109,148.983038, + 0.361665,-0.812468,0.457269,458.222253,-760.983658,122.358117, + 0.361665,-0.742579,0.563715,458.222259,-743.526109,148.983038, + 0.487279,-0.760883,0.428506,461.269994,-759.734399,121.656023, + 0.487279,-0.695395,0.528191,461.27,-742.384174,148.117261, + -0.71736,0.602889,-0.34917,718.363103,-672.268221,72.499299, + -0.796291,0.482772,-0.364488,732.466066,-649.539321,77.725434, + -0.796291,0.527936,-0.295302,732.466063,-658.163576,64.572379, + -0.796291,0.482772,-0.364488,732.466066,-649.539321,77.725434, + -0.71736,0.602889,-0.34917,718.363103,-672.268221,72.499299, + -0.707932,0.563466,-0.425837,718.363107,-662.432231,87.500399, + -0.796291,0.527936,-0.295302,732.466063,-658.163576,64.572379, + -0.870211,0.393404,-0.29659,744.275058,-635.251255,66.89271, + -0.870211,0.43015,-0.240215,744.275056,-642.532652,55.787678, + -0.870211,0.393404,-0.29659,744.275058,-635.251255,66.89271, + -0.796291,0.527936,-0.295302,732.466063,-658.163576,64.572379, + -0.796291,0.482772,-0.364488,732.466066,-649.539321,77.725434, + -0.870211,0.43015,-0.240215,744.275056,-642.532652,55.787678, + -0.928388,0.296985,-0.223376,753.576412,-619.826561,55.198234, + -0.928388,0.324653,-0.180823,753.57641,-625.658276,46.304148, + -0.928388,0.296985,-0.223376,753.576412,-619.826561,55.198234, + -0.870211,0.43015,-0.240215,744.275056,-642.532652,55.787678, + -0.870211,0.393404,-0.29659,744.275058,-635.251255,66.89271, + -0.928388,0.324653,-0.180823,753.57641,-625.658276,46.304148, + -0.9698,0.195252,-0.146165,760.201828,-603.544336,42.853607, + -0.9698,0.213348,-0.118196,760.201826,-607.845772,36.293385, + -0.9698,0.195252,-0.146165,760.201828,-603.544336,42.853607, + -0.928388,0.324653,-0.180823,753.57641,-625.658276,46.304148, + -0.928388,0.296985,-0.223376,753.576412,-619.826561,55.198234, + 0.991932,-0.090686,0.088582,792.007219,-586.233981,36.611394, + 0.966794,-0.204518,0.153238,787.130191,-609.757662,47.564335, + 0.991932,-0.101911,0.075398,792.007218,-589.846284,32.468209, + 0.966794,-0.204518,0.153238,787.130191,-609.757662,47.564335, + 0.991932,-0.090686,0.088582,792.007219,-586.233981,36.611394, + 0.966794,-0.181729,0.179678,787.130191,-603.902541,54.279953, + 0.966794,-0.181729,0.179678,787.130191,-603.902541,54.279953, + 0.924993,-0.303632,0.228462,779.024169,-628.985711,62.142384, + 0.966794,-0.204518,0.153238,787.130191,-609.757662,47.564335, + 0.924993,-0.303632,0.228462,779.024169,-628.985711,62.142384, + 0.966794,-0.181729,0.179678,787.130191,-603.902541,54.279953, + 0.924993,-0.269668,0.267706,779.02417,-620.964741,71.342153, + 0.924993,-0.269668,0.267706,779.02417,-620.964741,71.342153, + 0.867227,-0.397554,0.299779,767.829336,-647.197908,75.95025, + 0.924993,-0.303632,0.228462,779.024169,-628.985711,62.142384, + 0.867227,-0.397554,0.299779,767.829336,-647.197908,75.95025, + 0.924993,-0.269668,0.267706,779.02417,-620.964741,71.342153, + 0.867227,-0.352996,0.351156,767.829337,-637.125516,87.502929, + 0.867227,-0.352996,0.351156,767.829337,-637.125516,87.502929, + 0.794465,-0.484664,0.36596,753.739289,-664.079301,88.749145, + 0.867227,-0.397554,0.299779,767.829336,-647.197908,75.95025, + 0.794465,-0.484664,0.36596,753.739289,-664.079301,88.749145, + 0.867227,-0.352996,0.351156,767.829337,-637.125516,87.502929, + 0.794465,-0.430275,0.42859,753.73929,-652.105388,102.482801, + -0.928388,0.296985,-0.223376,753.576412,-619.826561,55.198234, + -0.9698,0.173513,-0.171408,760.201828,-598.389085,48.766498, + -0.9698,0.195252,-0.146165,760.201828,-603.544336,42.853607, + -0.9698,0.173513,-0.171408,760.201828,-598.389085,48.766498, + -0.928388,0.296985,-0.223376,753.576412,-619.826561,55.198234, + -0.928388,0.263776,-0.261761,753.576413,-612.83728,63.214693, + 0.780232,-0.616443,0.105998,753.739265,-690.205036,23.357838, + 0.714403,-0.693748,0.091332,736.997667,-709.533908,23.678376, + 0.752834,-0.654794,0.066982,739.751559,-706.400475,23.357838, + 0.714403,-0.693748,0.091332,736.997667,-709.533908,23.678376, + 0.780232,-0.616443,0.105998,753.739265,-690.205036,23.357838, + 0.800126,-0.584324,0.13551,753.739273,-687.397248,39.686742, + 0.714403,-0.693748,0.091332,736.997667,-709.533908,23.678376, + 0.800126,-0.584324,0.13551,753.739273,-687.397248,39.686742, + 0.707841,-0.682368,0.182581,736.997677,-706.002952,44.212918, + 0.714403,-0.693748,0.091332,736.997667,-709.533908,23.678376, + 0.609101,-0.770402,0.188354,717.894058,-722.308196,48.179466, + 0.609101,-0.788882,0.081617,717.894046,-726.227566,25.386075, + 0.609101,-0.770402,0.188354,717.894058,-722.308196,48.179466, + 0.714403,-0.693748,0.091332,736.997667,-709.533908,23.678376, + 0.707841,-0.682368,0.182581,736.997677,-706.002952,44.212918, + 0.609101,-0.788882,0.081617,717.894046,-726.227566,25.386075, + 0.499663,-0.841496,0.20548,696.758783,-736.031005,51.517793, + 0.499663,-0.861647,0.088896,696.75877,-740.277271,26.823309, + 0.499663,-0.841496,0.20548,696.758783,-736.031005,51.517793, + 0.609101,-0.788882,0.081617,717.894046,-726.227566,25.386075, + 0.609101,-0.770402,0.188354,717.894058,-722.308196,48.179466, + -0.606606,0.549182,-0.574829,702.221362,-660.639487,111.0169, + -0.494423,0.524541,-0.693111,684.332897,-652.814504,133.506322, + -0.606606,0.46573,-0.644302,702.22136,-645.663324,124.074113, + -0.494423,0.524541,-0.693111,684.332897,-652.814504,133.506322, + -0.606606,0.549182,-0.574829,702.221362,-660.639487,111.0169, + -0.494423,0.614096,-0.615169,684.332898,-669.009253,119.386665, + -0.150374,0.100371,-0.983521,432.838915,-578.78391,213.508718, + -0.040617,0.016774,-0.999034,429.26772,-549.153238,214.795487, + -0.150052,0.016548,-0.98854,432.838898,-549.148352,214.504709, + -0.040617,0.016774,-0.999034,429.26772,-549.153238,214.795487, + -0.150374,0.100371,-0.983521,432.838915,-578.78391,213.508718, + -0.040706,0.101643,-0.993988,429.267738,-578.813573,213.798664, + -0.748179,0.401798,-0.528002,448.282017,-677.413444,165.951609, + -0.832687,0.272446,-0.482085,450.47112,-653.402151,178.303588, + -0.832687,0.335596,-0.440463,450.471124,-675.695751,163.686019, + -0.832687,0.272446,-0.482085,450.47112,-653.402151,178.303588, + -0.748179,0.401798,-0.528002,448.282017,-677.413444,165.951609, + -0.748179,0.326101,-0.577828,448.282012,-654.795099,180.782109, + -0.832687,0.335596,-0.440463,450.471124,-675.695751,163.686019, + -0.901181,0.2136,-0.377157,452.247009,-651.873941,175.584392, + -0.901181,0.263001,-0.344532,452.247014,-673.811262,161.200429, + -0.901181,0.2136,-0.377157,452.247009,-651.873941,175.584392, + -0.832687,0.335596,-0.440463,450.471124,-675.695751,163.686019, + -0.832687,0.272446,-0.482085,450.47112,-653.402151,178.303588, + -0.901181,0.263001,-0.344532,452.247014,-673.811262,161.200429, + -0.952384,0.150692,-0.265059,453.575567,-650.239827,172.676755, + -0.952384,0.185405,-0.242052,453.575571,-671.796178,158.542589, + -0.952384,0.150692,-0.265059,453.575567,-650.239827,172.676755, + -0.901181,0.263001,-0.344532,452.247014,-673.811262,161.200429, + -0.901181,0.2136,-0.377157,452.247009,-651.873941,175.584392, + -0.952384,0.185405,-0.242052,453.575571,-671.796178,158.542589, + -0.985345,0.084925,-0.14793,454.431271,-648.531199,169.636534, + -0.985345,0.104291,-0.134978,454.431275,-669.689209,155.763554, + -0.985345,0.084925,-0.14793,454.431271,-648.531199,169.636534, + -0.952384,0.185405,-0.242052,453.575571,-671.796178,158.542589, + -0.952384,0.150692,-0.265059,453.575567,-650.239827,172.676755, + 0.9608,-0.004657,0.277203,787.130168,-546.781824,73.639808, + 0.924993,-0.040048,0.377867,779.024152,-566.870657,97.051514, + 0.966794,-0.027448,0.254079,787.130178,-564.415116,73.047189, + 0.924993,-0.040048,0.377867,779.024152,-566.870657,97.051514, + 0.9608,-0.004657,0.277203,787.130168,-546.781824,73.639808, + 0.919603,-0.008082,0.392766,779.024141,-547.186239,97.713067, + 0.919603,-0.008082,0.392766,779.024141,-547.186239,97.713067, + 0.867227,-0.051963,0.495193,767.829315,-569.19647,119.787648, + 0.924993,-0.040048,0.377867,779.024152,-566.870657,97.051514, + 0.867227,-0.051963,0.495193,767.829315,-569.19647,119.787648, + 0.919603,-0.008082,0.392766,779.024141,-547.186239,97.713067, + 0.866755,-0.008697,0.498658,767.829302,-547.569289,120.514493, + 0.591287,-0.806461,-0,746.929123,-767.779872,-0, + 0.518797,-0.854897,-0,718.958402,-786.46931,23.357838, + 0.480964,-0.87674,-0,718.958402,-786.46931,-0, + 0.518797,-0.854897,-0,718.958402,-786.46931,23.357838, + 0.591287,-0.806461,-0,746.929123,-767.779872,-0, + 0.625945,-0.779867,-0,746.929123,-767.779872,23.357838, + 0.9153,-0.402772,-0,827.969621,-662.165838,-0, + 0.87674,-0.480964,-0,813.090986,-692.336727,23.357838, + 0.854897,-0.518797,-0,813.090986,-692.336727,-0, + 0.87674,-0.480964,-0,813.090986,-692.336727,23.357838, + 0.9153,-0.402772,-0,827.969621,-662.165838,-0, + 0.932018,-0.362412,-0,827.969621,-662.165838,23.357838, + 0.973657,-0.199526,0.110368,473.101758,-746.040734,113.960076, + 0.932875,-0.335664,0.130666,472.107195,-761.701654,88.500895, + 0.973657,-0.212704,0.08215,473.101749,-758.702385,87.31918, + 0.932875,-0.335664,0.130666,472.107195,-761.701654,88.500895, + 0.973657,-0.199526,0.110368,473.101758,-746.040734,113.960076, + 0.932875,-0.314728,0.175187,472.107204,-748.850999,115.539467, + -0.870211,0.181845,-0.457892,744.275052,-593.41661,98.610304, + -0.928388,0.089223,-0.360743,753.576403,-576.182654,83.81487, + -0.928388,0.137548,-0.34522,753.576407,-586.320946,80.601044, + -0.928388,0.089223,-0.360743,753.576403,-576.182654,83.81487, + -0.870211,0.181845,-0.457892,744.275052,-593.41661,98.610304, + -0.870211,0.117753,-0.4784,744.275047,-580.75808,102.623043, + -0.9698,0.195252,-0.146165,760.201828,-603.544336,42.853607, + -0.993727,0.08015,-0.077994,764.031425,-583.441377,33.81879, + -0.993727,0.090031,-0.066344,764.031425,-586.699189,30.082194, + -0.993727,0.08015,-0.077994,764.031425,-583.441377,33.81879, + -0.9698,0.195252,-0.146165,760.201828,-603.544336,42.853607, + -0.9698,0.173513,-0.171408,760.201828,-598.389085,48.766498, + 0.794465,-0.484664,0.36596,753.739289,-664.079301,88.749145, + 0.717149,-0.603071,0.349289,736.997692,-690.762817,82.893397, + 0.794465,-0.530011,0.296503,753.739286,-674.070091,73.511955, + 0.717149,-0.603071,0.349289,736.997692,-690.762817,82.893397, + 0.794465,-0.484664,0.36596,753.739289,-664.079301,88.749145, + 0.707932,-0.563451,0.425857,736.997696,-679.337949,100.317733, + 0.79876,-0.426323,0.424536,468.840171,-716.92159,167.299002, + 0.707932,-0.563486,0.425811,466.630442,-739.151644,145.666467, + 0.79876,-0.480196,0.362483,468.840169,-737.123146,144.128529, + 0.707932,-0.563486,0.425811,466.630442,-739.151644,145.666467, + 0.79876,-0.426323,0.424536,468.840171,-716.92159,167.299002, + 0.707932,-0.500206,0.498623,466.630444,-718.721598,169.09901, + 0.707932,-0.500206,0.498623,466.630444,-718.721598,169.09901, + 0.603343,-0.62433,0.496175,464.09079,-740.916622,147.004613, + 0.707932,-0.563486,0.425811,466.630442,-739.151644,145.666467, + 0.603343,-0.62433,0.496175,464.09079,-740.916622,147.004613, + 0.707932,-0.500206,0.498623,466.630444,-718.721598,169.09901, + 0.603343,-0.550894,0.576621,464.090792,-720.287768,170.665181, + -0.707841,0.651123,-0.273862,718.363098,-679.96832,56.297814, + -0.796291,0.527936,-0.295302,732.466063,-658.163576,64.572379, + -0.796291,0.563252,-0.220608,732.466058,-664.91507,50.366817, + -0.796291,0.527936,-0.295302,732.466063,-658.163576,64.572379, + -0.707841,0.651123,-0.273862,718.363098,-679.96832,56.297814, + -0.71736,0.602889,-0.34917,718.363103,-672.268221,72.499299, + 0.011271,-0.366548,0.930331,448.317768,-643.817038,226.529669, + 0.091928,-0.487734,0.868139,451.683339,-672.734453,212.70224, + 0.091928,-0.364886,0.926503,451.68333,-643.789223,226.459074, + 0.091928,-0.487734,0.868139,451.683339,-672.734453,212.70224, + 0.011271,-0.366548,0.930331,448.317768,-643.817038,226.529669, + 0.011271,-0.489901,0.871705,448.317778,-672.771628,212.768386, + 0.874212,-0.179273,0.451236,470.677509,-639.24332,214.921287, + 0.79876,-0.29587,0.523873,468.840164,-668.043983,204.356329, + 0.874212,-0.239089,0.422598,470.677518,-666.658744,201.891525, + 0.79876,-0.29587,0.523873,468.840164,-668.043983,204.356329, + 0.874212,-0.179273,0.451236,470.677509,-639.24332,214.921287, + 0.79876,-0.221723,0.559304,468.840155,-640.279768,217.551861, + 0.874212,-0.239089,0.422598,470.677518,-666.658744,201.891525, + 0.79876,-0.364496,0.47867,468.840169,-693.751117,187.500559, + 0.874212,-0.294445,0.386077,470.677524,-692.04293,185.247507, + 0.79876,-0.364496,0.47867,468.840169,-693.751117,187.500559, + 0.874212,-0.239089,0.422598,470.677518,-666.658744,201.891525, + 0.79876,-0.29587,0.523873,468.840164,-668.043983,204.356329, + 0.79876,-0.29587,0.523873,468.840164,-668.043983,204.356329, + 0.707932,-0.427595,0.562134,466.630442,-695.289055,189.529057, + 0.79876,-0.364496,0.47867,468.840169,-693.751117,187.500559, + 0.707932,-0.427595,0.562134,466.630442,-695.289055,189.529057, + 0.79876,-0.29587,0.523873,468.840164,-668.043983,204.356329, + 0.700875,-0.343846,0.624935,466.630436,-669.291161,206.575475, + 0.700875,-0.343846,0.624935,466.630436,-669.291161,206.575475, + 0.603343,-0.467182,0.646311,464.09079,-696.627201,191.294034, + 0.707932,-0.427595,0.562134,466.630442,-695.289055,189.529057, + 0.603343,-0.467182,0.646311,464.09079,-696.627201,191.294034, + 0.700875,-0.343846,0.624935,466.630436,-669.291161,206.575475, + 0.592261,-0.384709,0.707974,464.090784,-670.376318,208.506333, + 0.487279,-0.427162,0.761638,461.269994,-671.27861,210.111812, + 0.603343,-0.467182,0.646311,464.09079,-696.627201,191.294034, + 0.592261,-0.384709,0.707974,464.090784,-670.376318,208.506333, + 0.603343,-0.467182,0.646311,464.09079,-696.627201,191.294034, + 0.487279,-0.427162,0.761638,461.269994,-671.27861,210.111812, + 0.487279,-0.526963,0.696326,461.27,-697.739849,192.761586, + -0,0.996871,-0.079045,0.016265,-763.421248,29.191222, + -0.027072,0.999069,-0.033577,429.267734,-763.617291,23.357838, + -0,0.999436,-0.033589,0.00829,-763.617296,23.357836, + -0.027072,0.999069,-0.033577,429.267734,-763.617291,23.357838, + -0,0.996871,-0.079045,0.016265,-763.421248,29.191222, + -0.040706,0.99398,-0.101718,429.267738,-763.421251,29.190985, + -0.415875,0.904633,-0.093201,439.690582,-761.097663,28.953287, + -0.517204,0.855379,-0.028747,442.839449,-759.575224,23.357838, + -0.393899,0.918635,-0.030873,439.690579,-761.285715,23.357838, + -0.517204,0.855379,-0.028747,442.839449,-759.575224,23.357838, + -0.415875,0.904633,-0.093201,439.690582,-761.097663,28.953287, + -0.537771,0.838627,-0.086642,442.839452,-759.393033,28.778909, + -0.809671,0.570253,-0.138724,732.466052,-669.667851,35.373762, + -0.858411,0.505544,-0.086929,744.275043,-653.583014,23.357838, + -0.7818,0.61451,-0.105666,732.466046,-671.734013,23.357838, + -0.858411,0.505544,-0.086929,744.275043,-653.583014,23.357838, + -0.809671,0.570253,-0.138724,732.466052,-669.667851,35.373762, + -0.881047,0.459625,-0.111811,744.275047,-652.24563,31.135492, + -0.373111,0.90136,-0.219861,665.02137,-719.684398,47.541206, + -0.482609,0.869945,-0.101409,684.332867,-714.266541,24.162533, + -0.373111,0.922912,-0.094985,665.021359,-723.541264,25.111307, + -0.482609,0.869945,-0.101409,684.332867,-714.266541,24.162533, + -0.373111,0.90136,-0.219861,665.02137,-719.684398,47.541206, + -0.494423,0.84441,-0.206198,684.332878,-710.625471,45.337452, + 0.583909,-0.811361,0.027268,464.090742,-786.683847,23.357838, + 0.487278,-0.868635,0.089632,461.269956,-788.240871,31.729906, + 0.466054,-0.884257,0.029718,461.269951,-788.52224,23.357838, + 0.487278,-0.868635,0.089632,461.269956,-788.240871,31.729906, + 0.583909,-0.811361,0.027268,464.090742,-786.683847,23.357838, + 0.603443,-0.793169,0.082097,464.090747,-786.408778,31.542489, + -0.244971,0.941967,-0.229537,644.636243,-726.137133,49.110957, + -0.373111,0.922912,-0.094985,665.021359,-723.541264,25.111307, + -0.244971,0.964459,-0.099038,644.636231,-730.147713,25.787129, + -0.373111,0.922912,-0.094985,665.021359,-723.541264,25.111307, + -0.244971,0.941967,-0.229537,644.636243,-726.137133,49.110957, + -0.373111,0.90136,-0.219861,665.02137,-719.684398,47.541206, + -0.999462,0,0.032813,180.160558,-280.29408,1570.859583, + -0.986659,0,0.162803,176.700984,-186.86272,1535.733942, + -0.973856,0,0.227168,176.700984,-280.29408,1535.733942, + -0.986659,0,0.162803,176.700984,-186.86272,1535.733942, + -0.999462,0,0.032813,180.160558,-280.29408,1570.859583, + -0.999462,0,-0.032813,180.160558,-186.86272,1570.859583, + -0.973856,0,0.227168,176.700984,-280.29408,1535.733942, + -0.935939,0,0.352162,166.455213,-186.86272,1501.958161, + -0.910825,0,0.412792,166.455213,-280.29408,1501.958161, + -0.935939,0,0.352162,166.455213,-186.86272,1501.958161, + -0.973856,0,0.227168,176.700984,-280.29408,1535.733942, + -0.986659,0,0.162803,176.700984,-186.86272,1535.733942, + -0.910825,0,0.412792,166.455213,-280.29408,1501.958161, + -0.849252,0,0.527988,149.816983,-186.86272,1470.830222, + -0.812792,0,0.582554,149.816983,-280.29408,1470.830222, + -0.849252,0,0.527988,149.816983,-186.86272,1470.830222, + -0.910825,0,0.412792,166.455213,-280.29408,1501.958161, + -0.935939,0,0.352162,166.455213,-186.86272,1501.958161, + -0.812792,0,0.582554,149.816983,-280.29408,1470.830222, + -0.707107,0,0.707107,127.425692,-186.86272,1443.546356, + -0.707107,0,0.707107,127.425692,-280.29408,1443.546356, + -0.707107,0,0.707107,127.425692,-186.86272,1443.546356, + -0.812792,0,0.582554,149.816983,-280.29408,1470.830222, + -0.849252,0,0.527988,149.816983,-186.86272,1470.830222, + 0,-0.387702,0.921785,473.717764,-634.484263,202.842487, + 0.030867,-0.489683,0.871354,599.602151,-660.298109,190.573883, + 0.030867,-0.366379,0.929954,599.602143,-634.484215,202.842483, + 0.030867,-0.489683,0.871354,599.602151,-660.298109,190.573883, + 0,-0.387702,0.921785,473.717764,-634.484263,202.842487, + 0,-0.509694,0.860356,473.717772,-660.298148,190.573891, + -0.649152,0.262621,-0.713885,445.721732,-631.287828,194.729696, + -0.537771,0.198458,-0.8194,442.839466,-605.68255,205.079413, + -0.638578,0.17117,-0.75028,445.721721,-605.178251,203.006401, + -0.537771,0.198458,-0.8194,442.839466,-605.68255,205.079413, + -0.649152,0.262621,-0.713885,445.721732,-631.287828,194.729696, + -0.537771,0.308263,-0.784714,442.839477,-632.069904,196.714653, + -0.112343,0.96547,-0.235045,623.546346,-729.866921,50.018304, + -0.244971,0.964459,-0.099038,644.636231,-730.147713,25.787129, + -0.112343,0.988493,-0.101292,623.546333,-733.966349,26.17777, + -0.244971,0.964459,-0.099038,644.636231,-730.147713,25.787129, + -0.112343,0.96547,-0.235045,623.546346,-729.866921,50.018304, + -0.244971,0.941967,-0.229537,644.636243,-726.137133,49.110957, + -0.989023,0.146995,-0.015036,454.43124,-742.052468,27.005038, + -0.999454,0.032443,-0.006265,454.797666,-734.293588,51.095248, + -0.999951,0.009862,-0.001008,454.797654,-738.498463,26.641479, + -0.999454,0.032443,-0.006265,454.797666,-734.293588,51.095248, + -0.989023,0.146995,-0.015036,454.43124,-742.052468,27.005038, + -0.985345,0.166102,-0.038803,454.431253,-737.764902,51.939707, + -0.881047,0.459625,-0.111811,744.275047,-652.24563,31.135492, + -0.919489,0.387429,-0.066619,753.576401,-633.988087,23.357838, + -0.858411,0.505544,-0.086929,744.275043,-653.583014,23.357838, + -0.919489,0.387429,-0.066619,753.576401,-633.988087,23.357838, + -0.881047,0.459625,-0.111811,744.275047,-652.24563,31.135492, + -0.936465,0.339085,-0.089746,753.576403,-633.437458,26.560066, + -0.845271,0.531564,-0.054376,450.471088,-751.942886,28.016787, + -0.901181,0.421494,-0.101069,452.246991,-744.394382,53.552447, + -0.91096,0.410353,-0.041977,452.246978,-748.839872,27.699361, + -0.901181,0.421494,-0.101069,452.246991,-744.394382,53.552447, + -0.845271,0.531564,-0.054376,450.471088,-751.942886,28.016787, + -0.832687,0.538362,-0.129611,450.471101,-747.425197,54.289747, + 0.114758,-0.016686,0.993253,451.683281,-549.621181,242.65094, + 0.229024,-0.098699,0.968404,455.006069,-581.599776,241.035583, + 0.251027,-0.016259,0.967844,455.00605,-549.612103,242.110623, + 0.229024,-0.098699,0.968404,455.006069,-581.599776,241.035583, + 0.114758,-0.016686,0.993253,451.683281,-549.621181,242.65094, + 0.091928,-0.101189,0.990611,451.683301,-581.654891,241.574352, + 0.998111,-0.038222,0.048094,793.309566,-569.30368,23.357838, + 0.991932,-0.090686,0.088582,792.007219,-586.233981,36.611394, + 0.998111,-0.044419,0.042437,793.160542,-572.980425,23.357838, + 0.991932,-0.090686,0.088582,792.007219,-586.233981,36.611394, + 0.998111,-0.038222,0.048094,793.309566,-569.30368,23.357838, + 0.991932,-0.07777,0.100113,792.007218,-582.090797,40.223697, + -0.040706,0.366235,-0.929632,429.267763,-633.554255,200.482022, + -0,0.258478,-0.966017,0.016279,-606.639892,209.013909, + -0.040706,0.236142,-0.970866,429.267752,-606.639691,209.013907, + -0,0.258478,-0.966017,0.016279,-606.639892,209.013909, + -0.040706,0.366235,-0.929632,429.267763,-633.554255,200.482022, + -0,0.387702,-0.921785,0.01629,-633.55442,200.482036, + -0.707841,0.243878,-0.662936,718.363098,-605.920401,130.345733, + -0.606705,0.186995,-0.77262,702.221343,-592.162158,149.501677, + -0.707841,0.151267,-0.689985,718.363091,-588.820775,135.766294, + -0.606705,0.186995,-0.77262,702.221343,-592.162158,149.501677, + -0.707841,0.243878,-0.662936,718.363098,-605.920401,130.345733, + -0.606705,0.290533,-0.739932,702.221351,-611.102283,143.49768, + 0.924993,-0.091165,0.368885,779.024159,-578.899518,94.983127, + 0.867227,-0.183731,0.462774,767.829328,-598.912297,112.558746, + 0.924993,-0.140582,0.353021,779.024163,-590.534326,91.294907, + 0.867227,-0.183731,0.462774,767.829328,-598.912297,112.558746, + 0.924993,-0.091165,0.368885,779.024159,-578.899518,94.983127, + 0.867227,-0.118957,0.483493,767.829322,-584.301801,117.190256, + 0.994297,-0,0.106651,93.652471,-186.86272,2499.208064, + 0.976682,-0,0.214689,123.089852,-280.29408,2224.766097, + 0.946935,-0,0.321426,123.089852,-186.86272,2224.766097, + 0.976682,-0,0.214689,123.089852,-280.29408,2224.766097, + 0.994297,-0,0.106651,93.652471,-186.86272,2499.208064, + 0.994297,-0,0.106651,93.652471,-280.29408,2499.208064, + 0.466054,-0.884257,0.029718,461.269951,-788.52224,23.357838, + 0.361665,-0.92741,0.095445,458.222215,-789.666464,31.875739, + 0.339245,-0.940167,0.031597,458.22221,-789.952733,23.357838, + 0.361665,-0.92741,0.095445,458.222215,-789.666464,31.875739, + 0.466054,-0.884257,0.029718,461.269951,-788.52224,23.357838, + 0.487278,-0.868635,0.089632,461.269956,-788.240871,31.729906, + -0.91096,0.410353,-0.041977,452.246978,-748.839872,27.699361, + -0.952384,0.296613,-0.070606,453.575549,-741.153531,52.764052, + -0.959176,0.281343,-0.02878,453.575536,-745.52182,27.359938, + -0.952384,0.296613,-0.070606,453.575549,-741.153531,52.764052, + -0.91096,0.410353,-0.041977,452.246978,-748.839872,27.699361, + -0.901181,0.421494,-0.101069,452.246991,-744.394382,53.552447, + -0.649249,0.756522,-0.078421,445.721707,-757.270639,28.561795, + -0.731829,0.681103,-0.02289,448.281977,-754.937554,23.357838, + -0.630573,0.775692,-0.026069,445.721704,-757.445533,23.357838, + -0.731829,0.681103,-0.02289,448.281977,-754.937554,23.357838, + -0.649249,0.756522,-0.078421,445.721707,-757.270639,28.561795, + -0.754707,0.651908,-0.073718,448.28198,-754.771252,28.306118, + -0.150374,0.983472,-0.100844,432.838915,-763.131306,29.161323, + -0.263028,0.964244,-0.032406,436.335584,-762.544148,23.357838, + -0.127104,0.99133,-0.033316,432.838912,-763.326349,23.357838, + -0.263028,0.964244,-0.032406,436.335584,-762.544148,23.357838, + -0.150374,0.983472,-0.100844,432.838915,-763.131306,29.161323, + -0.285905,0.953237,-0.097966,436.335587,-762.351785,29.08158, + -0,0.996871,-0.079045,454.667737,-734.928076,26.276244, + -0.015002,0.999323,-0.033585,602.133266,-735.026157,23.357838, + -0,0.999436,-0.033589,454.667735,-735.026158,23.357838, + -0.015002,0.999323,-0.033585,602.133266,-735.026157,23.357838, + -0,0.996871,-0.079045,454.667737,-734.928076,26.276244, + -0.022557,0.994554,-0.10175,602.133267,-734.928078,26.276163, + 0.794465,-0.298581,0.528844,753.739286,-623.134542,124.447504, + 0.707932,-0.427549,0.562168,736.997696,-649.94032,129.715362, + 0.794465,-0.367859,0.483224,753.739289,-638.371733,114.456714, + 0.707932,-0.427549,0.562168,736.997696,-649.94032,129.715362, + 0.794465,-0.298581,0.528844,753.739286,-623.134542,124.447504, + 0.701238,-0.343649,0.624636,736.997692,-632.515985,141.14023, + -0.606606,0.622389,-0.494632,702.22136,-673.696701,96.040736, + -0.707932,0.500183,-0.498647,718.363108,-650.643847,101.02126, + -0.707932,0.563466,-0.425837,718.363107,-662.432231,87.500399, + -0.707932,0.500183,-0.498647,718.363108,-650.643847,101.02126, + -0.606606,0.622389,-0.494632,702.22136,-673.696701,96.040736, + -0.606606,0.549182,-0.574829,702.221362,-660.639487,111.0169, + -0.707932,0.563466,-0.425837,718.363107,-662.432231,87.500399, + -0.796291,0.428601,-0.426873,732.466067,-639.203194,89.580607, + -0.796291,0.482772,-0.364488,732.466066,-649.539321,77.725434, + -0.796291,0.428601,-0.426873,732.466067,-639.203194,89.580607, + -0.707932,0.563466,-0.425837,718.363107,-662.432231,87.500399, + -0.707932,0.500183,-0.498647,718.363108,-650.643847,101.02126, + -0.796291,0.482772,-0.364488,732.466066,-649.539321,77.725434, + -0.870211,0.349319,-0.347431,744.275059,-626.524536,76.901948, + -0.870211,0.393404,-0.29659,744.275058,-635.251255,66.89271, + -0.870211,0.349319,-0.347431,744.275059,-626.524536,76.901948, + -0.796291,0.482772,-0.364488,732.466066,-649.539321,77.725434, + -0.796291,0.428601,-0.426873,732.466067,-639.203194,89.580607, + 0.030867,-0.929938,0.366419,599.602143,-752.465071,84.861627, + 0,-0.882708,0.469921,473.717772,-740.196479,110.67556, + 0,-0.938509,0.345255,473.717764,-752.465075,84.861676, + 0,-0.882708,0.469921,473.717772,-740.196479,110.67556, + 0.030867,-0.929938,0.366419,599.602143,-752.465071,84.861627, + 0.030867,-0.871333,0.489721,599.602151,-740.19647,110.675522, + -0.999454,0.00493,-0.032673,454.797654,-576.264066,188.875876, + -0.999343,-0.000812,0.036246,454.66772,-548.673192,186.220487, + -0.999345,-0.004503,0.035903,454.667737,-575.898832,185.305489, + -0.999343,-0.000812,0.036246,454.66772,-548.673192,186.220487, + -0.999454,0.00493,-0.032673,454.797654,-576.264066,188.875876, + -0.999453,0.000944,-0.033066,454.797637,-548.733344,189.801127, + 0.867227,-0.118957,0.483493,767.829322,-584.301801,117.190256, + 0.794465,-0.223732,0.564597,753.73928,-606.678073,132.26879, + 0.867227,-0.183731,0.462774,767.829328,-598.912297,112.558746, + 0.794465,-0.223732,0.564597,753.73928,-606.678073,132.26879, + 0.867227,-0.118957,0.483493,767.829322,-584.301801,117.190256, + 0.794465,-0.14471,0.589818,753.739273,-589.30933,137.774661, + -0.022557,0.101727,-0.994557,602.133267,-575.89875,185.30549, + -0,0.022395,-0.999749,454.66772,-548.673192,186.220487, + -0.022507,0.01679,-0.999606,602.133251,-548.673148,186.220487, + -0,0.022395,-0.999749,454.66772,-548.673192,186.220487, + -0.022557,0.101727,-0.994557,602.133267,-575.89875,185.30549, + -0,0.124431,-0.992228,454.667737,-575.898832,185.305489, + -0.112343,0.100949,-0.988528,623.546333,-575.800358,184.343761, + -0.022507,0.01679,-0.999606,602.133251,-548.673148,186.220487, + -0.112099,0.016649,-0.993558,623.546317,-548.656939,185.255996, + -0.022507,0.01679,-0.999606,602.133251,-548.673148,186.220487, + -0.112343,0.100949,-0.988528,623.546333,-575.800358,184.343761, + -0.022557,0.101727,-0.994557,602.133267,-575.89875,185.30549, + -0.707932,0.427569,-0.562154,718.363107,-637.122986,112.809644, + -0.796291,0.297433,-0.526739,732.466063,-614.194966,108.540989, + -0.796291,0.366435,-0.481296,732.466066,-627.348021,99.916734, + -0.796291,0.297433,-0.526739,732.466063,-614.194966,108.540989, + -0.707932,0.427569,-0.562154,718.363107,-637.122986,112.809644, + -0.701084,0.343733,-0.624763,718.363103,-622.121887,122.645633, + -0.999454,0.013569,-0.030128,454.797676,-624.370524,177.173126, + -0.999345,-0.009353,0.034955,454.667749,-599.869485,181.183687, + -0.999345,-0.014029,0.033354,454.667758,-623.054884,173.833943, + -0.999345,-0.009353,0.034955,454.667749,-599.869485,181.183687, + -0.999454,0.013569,-0.030128,454.797676,-624.370524,177.173126, + -0.999454,0.009337,-0.031696,454.797666,-600.717836,184.671001, + -0.606705,0.290533,-0.739932,702.221351,-611.102283,143.49768, + -0.494423,0.204724,-0.844769,684.332878,-594.960039,161.002883, + -0.606705,0.186995,-0.77262,702.221343,-592.162158,149.501677, + -0.494423,0.204724,-0.844769,684.332878,-594.960039,161.002883, + -0.606705,0.290533,-0.739932,702.221351,-611.102283,143.49768, + -0.494423,0.317928,-0.808992,684.332887,-615.44129,154.510351, + 0.98887,-0.002499,0.148764,792.007202,-546.363038,48.711029, + 0.966794,-0.027448,0.254079,787.130178,-564.415116,73.047189, + 0.991932,-0.01438,0.125953,792.007211,-561.87231,48.189795, + 0.966794,-0.027448,0.254079,787.130178,-564.415116,73.047189, + 0.98887,-0.002499,0.148764,792.007202,-546.363038,48.711029, + 0.9608,-0.004657,0.277203,787.130168,-546.781824,73.639808, + -0.928388,0.263776,-0.261761,753.576413,-612.83728,63.214693, + -0.9698,0.148537,-0.193454,760.201828,-592.476195,53.921748, + -0.9698,0.173513,-0.171408,760.201828,-598.389085,48.766498, + -0.9698,0.148537,-0.193454,760.201828,-592.476195,53.921748, + -0.928388,0.263776,-0.261761,753.576413,-612.83728,63.214693, + -0.928388,0.225646,-0.295263,753.576412,-604.820821,70.203974, + 0.041063,-0.016783,0.999016,599.602099,-549.195708,217.326639, + 0.105242,0,0.994447,624.95529,-186.86272,215.762941, + 0.020529,0,0.999789,599.602099,-186.86272,217.326639, + 0.105242,0,0.994447,624.95529,-186.86272,215.762941, + 0.041063,-0.016783,0.999016,599.602099,-549.195708,217.326639, + 0.148826,-0.01661,0.988724,624.95529,-549.169432,215.762941, + -0.606705,0.079969,-0.790894,702.221333,-572.580561,152.868772, + -0.493603,0.014422,-0.869568,684.332852,-548.325029,165.499615, + -0.613495,0.011257,-0.789618,702.221319,-548.126642,153.690618, + -0.493603,0.014422,-0.869568,684.332852,-548.325029,165.499615, + -0.606705,0.079969,-0.790894,702.221333,-572.580561,152.868772, + -0.494423,0.087701,-0.864786,684.332867,-573.78512,164.643953, + -0.112343,0.791717,-0.600469,623.546367,-698.908942,115.155806, + -0.244971,0.845012,-0.475335,644.636259,-708.826871,93.045557, + -0.112343,0.866156,-0.486984,623.546362,-712.173175,94.926211, + -0.244971,0.845012,-0.475335,644.636259,-708.826871,93.045557, + -0.112343,0.791717,-0.600469,623.546367,-698.908942,115.155806, + -0.244971,0.772358,-0.586047,644.636264,-695.850119,112.836708, + -0.244971,0.772358,-0.586047,644.636264,-695.850119,112.836708, + -0.373111,0.808526,-0.455054,665.021386,-703.037584,89.791929, + -0.244971,0.845012,-0.475335,644.636259,-708.826871,93.045557, + -0.373111,0.808526,-0.455054,665.021386,-703.037584,89.791929, + -0.244971,0.772358,-0.586047,644.636264,-695.850119,112.836708, + -0.373111,0.738976,-0.560984,665.02139,-690.558191,108.824546, + -0.536932,0.013961,-0.84351,442.839435,-549.085368,210.7557, + -0.436021,0,-0.899936,439.690565,-186.86272,212.465226, + -0.556264,0,-0.831005,442.839435,-186.86272,210.7557, + -0.436021,0,-0.899936,439.690565,-186.86272,212.465226, + -0.536932,0.013961,-0.84351,442.839435,-549.085368,210.7557, + -0.41512,0.01512,-0.909641,439.690565,-549.114088,212.465226, + 0,0,1,46.868397,-280.29408,2499.208064, + 0,0,1,93.652471,-186.86272,2499.208064, + 0,0,1,46.868397,-186.86272,2499.208064, + 0,0,1,93.652471,-186.86272,2499.208064, + 0,0,1,46.868397,-280.29408,2499.208064, + 0,0,1,93.652471,-280.29408,2499.208064, + -0.373111,0.738976,-0.560984,665.02139,-690.558191,108.824546, + -0.494423,0.75738,-0.426523,684.332893,-694.910066,85.224197, + -0.373111,0.808526,-0.455054,665.021386,-703.037584,89.791929, + -0.494423,0.75738,-0.426523,684.332893,-694.910066,85.224197, + -0.373111,0.738976,-0.560984,665.02139,-690.558191,108.824546, + -0.494423,0.692194,-0.52575,684.332897,-683.128909,103.191916, + 0.030867,-0.366379,0.929954,599.602143,-634.484215,202.842483, + 0.127347,-0.48578,0.864755,624.955342,-659.530197,189.207523, + 0.127347,-0.363412,0.922884,624.955334,-633.909652,201.38423, + 0.127347,-0.48578,0.864755,624.955342,-659.530197,189.207523, + 0.030867,-0.366379,0.929954,599.602143,-634.484215,202.842483, + 0.030867,-0.489683,0.871354,599.602151,-660.298109,190.573883, + -0.714681,0.677849,-0.172485,718.363091,-685.388881,39.198188, + -0.7818,0.61451,-0.105666,732.466046,-671.734013,23.357838, + -0.691044,0.712358,-0.122491,718.363083,-688.112661,23.357838, + -0.7818,0.61451,-0.105666,732.466046,-671.734013,23.357838, + -0.714681,0.677849,-0.172485,718.363091,-685.388881,39.198188, + -0.809671,0.570253,-0.138724,732.466052,-669.667851,35.373762, + 0.234823,-0.97149,0.03265,649.884083,-759.705502,23.357838, + 0.127347,-0.98669,0.101126,624.955308,-764.385936,29.28956, + 0.105242,-0.993886,0.033402,624.955304,-764.585289,23.357838, + 0.127347,-0.98669,0.101126,624.955308,-764.385936,29.28956, + 0.234823,-0.97149,0.03265,649.884083,-759.705502,23.357838, + 0.256672,-0.961442,0.098738,649.884086,-759.522868,28.792076, + -0.993727,0.027914,-0.108296,764.031421,-566.356087,43.420852, + -0.998991,0.005587,-0.044554,764.975642,-559.332125,23.357838, + -0.998991,0.011606,-0.043377,764.959284,-561.475403,23.357838, + -0.998991,0.005587,-0.044554,764.975642,-559.332125,23.357838, + -0.993727,0.027914,-0.108296,764.031421,-566.356087,43.420852, + -0.993727,0.012896,-0.111089,764.031418,-561.470422,44.260952, + -0.150375,0.484157,-0.861963,432.838949,-658.912362,188.108094, + -0.040706,0.366235,-0.929632,429.267763,-633.554255,200.482022, + -0.150375,0.362184,-0.919897,432.838941,-633.447412,200.210852, + -0.040706,0.366235,-0.929632,429.267763,-633.554255,200.482022, + -0.150375,0.484157,-0.861963,432.838949,-658.912362,188.108094, + -0.040706,0.489496,-0.871055,429.267772,-659.055159,188.362176, + -0.244466,0.016195,-0.969523,644.636215,-548.592598,181.426394, + -0.134378,0,-0.99093,623.546317,-186.86272,185.255996, + -0.266155,0,-0.96393,644.636215,-186.86272,181.426394, + -0.134378,0,-0.99093,623.546317,-186.86272,185.255996, + -0.244466,0.016195,-0.969523,644.636215,-548.592598,181.426394, + -0.112099,0.016649,-0.993558,623.546317,-548.656939,185.255996, + -0.999454,0.029547,-0.014792,454.797683,-716.144717,97.158293, + -0.999345,-0.029325,0.021198,454.66777,-699.67933,115.739913, + -0.999345,-0.03194,0.017004,454.667766,-713.015957,95.399907, + -0.999345,-0.029325,0.021198,454.66777,-699.67933,115.739913, + -0.999454,0.029547,-0.014792,454.797683,-716.144717,97.158293, + -0.999454,0.027255,-0.01868,454.797688,-702.539296,117.908241, + -0.870211,0.393404,-0.29659,744.275058,-635.251255,66.89271, + -0.928388,0.263776,-0.261761,753.576413,-612.83728,63.214693, + -0.928388,0.296985,-0.223376,753.576412,-619.826561,55.198234, + -0.928388,0.263776,-0.261761,753.576413,-612.83728,63.214693, + -0.870211,0.393404,-0.29659,744.275058,-635.251255,66.89271, + -0.870211,0.349319,-0.347431,744.275059,-626.524536,76.901948, + -0.928388,0.089223,-0.360743,753.576403,-576.182654,83.81487, + -0.9698,0.0263,-0.242479,760.201817,-563.621651,65.290458, + -0.9698,0.059096,-0.236633,760.201821,-571.352859,63.961061, + -0.9698,0.0263,-0.242479,760.201817,-563.621651,65.290458, + -0.928388,0.089223,-0.360743,753.576403,-576.182654,83.81487, + -0.928388,0.039234,-0.369537,753.576397,-565.700992,85.617213, + -0.494423,0.692194,-0.52575,684.332897,-683.128909,103.191916, + -0.614316,0.68383,-0.393691,702.221357,-684.591376,79.42501, + -0.494423,0.75738,-0.426523,684.332893,-694.910066,85.224197, + -0.614316,0.68383,-0.393691,702.221357,-684.591376,79.42501, + -0.494423,0.692194,-0.52575,684.332897,-683.128909,103.191916, + -0.606606,0.622389,-0.494632,702.22136,-673.696701,96.040736, + -0.373111,0.33957,-0.863412,665.021379,-618.858911,163.184484, + -0.244971,0.228806,-0.942145,644.636243,-598.733545,176.514546, + -0.373111,0.218748,-0.901631,665.02137,-597.163793,170.061811, + -0.244971,0.228806,-0.942145,644.636243,-598.733545,176.514546, + -0.373111,0.33957,-0.863412,665.021379,-618.858911,163.184484, + -0.244971,0.355055,-0.902178,644.636252,-621.293309,169.363128, + -0.959176,0.281343,-0.02878,453.575536,-745.52182,27.359938, + -0.985345,0.166102,-0.038803,454.431253,-737.764902,51.939707, + -0.989023,0.146995,-0.015036,454.43124,-742.052468,27.005038, + -0.985345,0.166102,-0.038803,454.431253,-737.764902,51.939707, + -0.959176,0.281343,-0.02878,453.575536,-745.52182,27.359938, + -0.952384,0.296613,-0.070606,453.575549,-741.153531,52.764052, + -0.985345,0.104291,-0.134978,454.431275,-669.689209,155.763554, + -0.999454,0.017548,-0.027998,454.797683,-646.780881,166.522129, + -0.999454,0.021199,-0.025346,454.797688,-667.530829,152.916709, + -0.999454,0.017548,-0.027998,454.797683,-646.780881,166.522129, + -0.985345,0.104291,-0.134978,454.431275,-669.689209,155.763554, + -0.985345,0.084925,-0.14793,454.431271,-648.531199,169.636534, + 0.866918,-0.01021,0.498346,470.677463,-549.413334,230.278856, + 0.79876,-0.062483,0.598396,468.840127,-580.680624,232.05041, + 0.874212,-0.050786,0.482881,470.677482,-580.392895,229.237697, + 0.79876,-0.062483,0.598396,468.840127,-580.680624,232.05041, + 0.866918,-0.01021,0.498346,470.677463,-549.413334,230.278856, + 0.792107,-0.00894,0.610317,468.840108,-549.460722,233.099647, + -0.648424,0.012535,-0.761176,445.72169,-549.049611,208.627211, + -0.556264,0,-0.831005,442.839435,-186.86272,210.7557, + -0.665822,0,-0.746111,445.72169,-186.86272,208.627211, + -0.556264,0,-0.831005,442.839435,-186.86272,210.7557, + -0.648424,0.012535,-0.761176,445.72169,-549.049611,208.627211, + -0.536932,0.013961,-0.84351,442.839435,-549.085368,210.7557, + 0.381503,-0.338316,0.860231,673.957369,-629.139245,189.276665, + 0.499663,-0.423738,0.755502,696.7588,-647.656853,168.080895, + 0.499663,-0.316836,0.806196,696.758793,-625.025898,178.836737, + 0.499663,-0.423738,0.755502,696.7588,-647.656853,168.080895, + 0.381503,-0.338316,0.860231,673.957369,-629.139245,189.276665, + 0.381503,-0.452381,0.806106,673.957376,-653.15444,177.862935, + 0.609101,-0.079799,0.789068,717.894046,-575.008662,176.604979, + 0.707841,-0.151267,0.689985,736.997677,-593.835505,156.380365, + 0.707841,-0.055835,0.704162,736.997667,-573.300963,159.911321, + 0.707841,-0.151267,0.689985,736.997677,-593.835505,156.380365, + 0.609101,-0.079799,0.789068,717.894046,-575.008662,176.604979, + 0.609101,-0.186578,0.770833,717.894058,-597.802054,172.685609, + -0.649249,0.076378,-0.756731,445.721707,-578.184383,207.648051, + -0.536932,0.013961,-0.84351,442.839435,-549.085368,210.7557, + -0.648424,0.012535,-0.761176,445.72169,-549.049611,208.627211, + -0.536932,0.013961,-0.84351,442.839435,-549.085368,210.7557, + -0.649249,0.076378,-0.756731,445.721707,-578.184383,207.648051, + -0.537771,0.08495,-0.8388,442.839452,-578.401496,209.770445, + -0.537771,0.838627,-0.086642,442.839452,-759.393033,28.778909, + -0.630573,0.775692,-0.026069,445.721704,-757.445533,23.357838, + -0.517204,0.855379,-0.028747,442.839449,-759.575224,23.357838, + -0.630573,0.775692,-0.026069,445.721704,-757.445533,23.357838, + -0.537771,0.838627,-0.086642,442.839452,-759.393033,28.778909, + -0.649249,0.756522,-0.078421,445.721707,-757.270639,28.561795, + 0.590628,-0.806489,0.027104,717.894045,-726.295731,23.357838, + 0.499663,-0.861647,0.088896,696.75877,-740.277271,26.823309, + 0.479633,-0.876974,0.029473,696.758768,-740.393738,23.357838, + 0.499663,-0.861647,0.088896,696.75877,-740.277271,26.823309, + 0.590628,-0.806489,0.027104,717.894045,-726.295731,23.357838, + 0.609101,-0.788882,0.081617,717.894046,-726.227566,25.386075, + 0.251027,-0.016259,0.967844,455.00605,-549.612103,242.110623, + 0.361665,-0.094307,0.927526,458.222215,-581.498327,240.043877, + 0.382469,-0.01552,0.923838,458.222196,-549.595395,241.116069, + 0.361665,-0.094307,0.927526,458.222215,-581.498327,240.043877, + 0.251027,-0.016259,0.967844,455.00605,-549.612103,242.110623, + 0.229024,-0.098699,0.968404,455.006069,-581.599776,241.035583, + 0.924993,-0.140582,0.353021,779.024163,-590.534326,91.294907, + 0.867227,-0.245078,0.433421,767.829333,-612.755392,105.979521, + 0.924993,-0.187375,0.330572,779.024167,-601.558028,86.055659, + 0.867227,-0.245078,0.433421,767.829333,-612.755392,105.979521, + 0.924993,-0.140582,0.353021,779.024163,-590.534326,91.294907, + 0.867227,-0.183731,0.462774,767.829328,-598.912297,112.558746, + 0.867227,-0.183731,0.462774,767.829328,-598.912297,112.558746, + 0.794465,-0.298581,0.528844,753.739286,-623.134542,124.447504, + 0.867227,-0.245078,0.433421,767.829333,-612.755392,105.979521, + 0.794465,-0.298581,0.528844,753.739286,-623.134542,124.447504, + 0.867227,-0.183731,0.462774,767.829328,-598.912297,112.558746, + 0.794465,-0.223732,0.564597,753.73928,-606.678073,132.26879, + 0.794465,-0.223732,0.564597,753.73928,-606.678073,132.26879, + 0.701238,-0.343649,0.624636,736.997692,-632.515985,141.14023, + 0.794465,-0.298581,0.528844,753.739286,-623.134542,124.447504, + 0.701238,-0.343649,0.624636,736.997692,-632.515985,141.14023, + 0.794465,-0.223732,0.564597,753.73928,-606.678073,132.26879, + 0.707841,-0.243878,0.662936,736.997686,-613.697356,150.084182, + 0.609101,-0.289877,0.738219,717.894067,-619.848758,165.69683, + 0.701238,-0.343649,0.624636,736.997692,-632.515985,141.14023, + 0.707841,-0.243878,0.662936,736.997686,-613.697356,150.084182, + 0.701238,-0.343649,0.624636,736.997692,-632.515985,141.14023, + 0.609101,-0.289877,0.738219,717.894067,-619.848758,165.69683, + 0.598552,-0.382497,0.703869,717.894074,-640.737481,155.769021, + 0.499663,-0.316836,0.806196,696.758793,-625.025898,178.836737, + 0.598552,-0.382497,0.703869,717.894074,-640.737481,155.769021, + 0.609101,-0.289877,0.738219,717.894067,-619.848758,165.69683, + 0.598552,-0.382497,0.703869,717.894074,-640.737481,155.769021, + 0.499663,-0.316836,0.806196,696.758793,-625.025898,178.836737, + 0.499663,-0.423738,0.755502,696.7588,-647.656853,168.080895, + -0.796291,0.428601,-0.426873,732.466067,-639.203194,89.580607, + -0.870211,0.298718,-0.391791,744.275058,-616.515297,85.628667, + -0.870211,0.349319,-0.347431,744.275059,-626.524536,76.901948, + -0.870211,0.298718,-0.391791,744.275058,-616.515297,85.628667, + -0.796291,0.428601,-0.426873,732.466067,-639.203194,89.580607, + -0.796291,0.366435,-0.481296,732.466066,-627.348021,99.916734, + 0.256673,-0.939019,0.228829,649.8841,-754.828812,56.090715, + 0.127347,-0.922744,0.363767,624.955334,-751.006818,84.287065, + 0.127347,-0.963706,0.234635,624.955322,-759.578731,57.246228, + 0.127347,-0.922744,0.363767,624.955334,-751.006818,84.287065, + 0.256673,-0.939019,0.228829,649.8841,-754.828812,56.090715, + 0.256673,-0.899078,0.354651,649.884111,-746.45866,82.495079, + 0.79876,-0.56023,0.219373,468.840155,-767.174448,90.657181, + 0.707841,-0.682368,0.182581,466.630415,-778.937032,61.955552, + 0.79876,-0.584897,0.140986,468.840142,-776.463573,61.353839, + 0.707841,-0.682368,0.182581,466.630415,-778.937032,61.955552, + 0.79876,-0.56023,0.219373,468.840155,-767.174448,90.657181, + 0.707841,-0.651123,0.273862,466.630427,-769.542842,91.59033, + 0.973547,-0.004216,0.228449,473.101704,-549.308105,224.014969, + 0.932875,-0.038122,0.358177,472.107168,-580.082016,226.198682, + 0.973657,-0.024735,0.226671,473.101722,-579.75396,222.991746, + 0.932875,-0.038122,0.358177,472.107168,-580.082016,226.198682, + 0.973547,-0.004216,0.228449,473.101704,-549.308105,224.014969, + 0.928983,-0.005506,0.370082,472.10715,-549.362134,227.231115, + 0.127347,-0.922744,0.363767,624.955334,-751.006818,84.287065, + 0.030867,-0.871333,0.489721,599.602151,-740.19647,110.675522, + 0.030867,-0.929938,0.366419,599.602143,-752.465071,84.861627, + 0.030867,-0.871333,0.489721,599.602151,-740.19647,110.675522, + 0.127347,-0.922744,0.363767,624.955334,-751.006818,84.287065, + 0.127347,-0.864568,0.486113,624.955342,-738.83011,109.90761, + -0.986659,0,-0.162803,176.700984,-280.29408,1605.985223, + -0.999462,0,-0.032813,180.160558,-186.86272,1570.859583, + -0.999462,0,0.032813,180.160558,-280.29408,1570.859583, + -0.999462,0,-0.032813,180.160558,-186.86272,1570.859583, + -0.986659,0,-0.162803,176.700984,-280.29408,1605.985223, + -0.973856,0,-0.227168,176.700984,-186.86272,1605.985223, + -0.809671,0.570253,-0.138724,732.466052,-669.667851,35.373762, + -0.870211,0.458871,-0.17936,744.275052,-648.232891,43.794023, + -0.881047,0.459625,-0.111811,744.275047,-652.24563,31.135492, + -0.870211,0.458871,-0.17936,744.275052,-648.232891,43.794023, + -0.809671,0.570253,-0.138724,732.466052,-669.667851,35.373762, + -0.796291,0.563252,-0.220608,732.466058,-664.91507,50.366817, + -0.285905,0.097067,-0.953329,436.335587,-578.704167,212.729198, + -0.150052,0.016548,-0.98854,432.838898,-549.148352,214.504709, + -0.285329,0.015988,-0.958296,436.33557,-549.135218,213.722949, + -0.150052,0.016548,-0.98854,432.838898,-549.148352,214.504709, + -0.285905,0.097067,-0.953329,436.335587,-578.704167,212.729198, + -0.150374,0.100371,-0.983521,432.838915,-578.78391,213.508718, + 0.995804,-0.08571,0.032077,473.642065,-755.603683,86.09829, + 0.973657,-0.221914,0.0524,473.101737,-767.615679,59.201429, + 0.995804,-0.089282,0.020098,473.642053,-764.379515,58.414175, + 0.973657,-0.221914,0.0524,473.101737,-767.615679,59.201429, + 0.995804,-0.08571,0.032077,473.642065,-755.603683,86.09829, + 0.973657,-0.212704,0.08215,473.101749,-758.702385,87.31918, + -0.285905,0.835148,-0.469878,436.335621,-737.047581,108.905866, + -0.415875,0.845875,-0.333982,439.690608,-747.931487,83.075452, + -0.285905,0.891387,-0.351693,436.335613,-749.104397,83.53758, + -0.415875,0.845875,-0.333982,439.690608,-747.931487,83.075452, + -0.285905,0.835148,-0.469878,436.335621,-737.047581,108.905866, + -0.415875,0.792474,-0.446131,439.690616,-735.948584,108.28822, + 0,-0.016797,0.999859,473.71772,-549.195746,217.326639, + 0.030866,-0.101695,0.994337,599.602117,-579.071663,216.32257, + 0.041063,-0.016783,0.999016,599.602099,-549.195708,217.326639, + 0.030866,-0.101695,0.994337,599.602117,-579.071663,216.32257, + 0,-0.016797,0.999859,473.71772,-549.195746,217.326639, + 0,-0.124431,0.992228,473.717738,-579.071732,216.322569, + 0.479633,-0.876974,0.029473,696.758768,-740.393738,23.357838, + 0.381503,-0.91951,0.094637,673.957345,-751.440053,27.965226, + 0.360344,-0.932293,0.031332,673.957342,-751.594898,23.357838, + 0.381503,-0.91951,0.094637,673.957345,-751.440053,27.965226, + 0.479633,-0.876974,0.029473,696.758768,-740.393738,23.357838, + 0.499663,-0.861647,0.088896,696.75877,-740.277271,26.823309, + -0.707932,0.500183,-0.498647,718.363108,-650.643847,101.02126, + -0.796291,0.366435,-0.481296,732.466066,-627.348021,99.916734, + -0.796291,0.428601,-0.426873,732.466067,-639.203194,89.580607, + -0.796291,0.366435,-0.481296,732.466066,-627.348021,99.916734, + -0.707932,0.500183,-0.498647,718.363108,-650.643847,101.02126, + -0.707932,0.427569,-0.562154,718.363107,-637.122986,112.809644, + 0.966794,-0.061815,0.247969,787.130183,-573.195905,71.537315, + 0.924993,-0.140582,0.353021,779.024163,-590.534326,91.294907, + 0.966794,-0.095028,0.237232,787.130187,-581.689044,68.845, + 0.924993,-0.140582,0.353021,779.024163,-590.534326,91.294907, + 0.966794,-0.061815,0.247969,787.130183,-573.195905,71.537315, + 0.924993,-0.091165,0.368885,779.024159,-578.899518,94.983127, + -0.285905,0.350852,-0.891718,436.335613,-633.160168,199.481809, + -0.150374,0.233455,-0.96067,432.83893,-606.570796,208.730707, + -0.285905,0.226068,-0.93121,436.335601,-606.385575,207.969324, + -0.150374,0.233455,-0.96067,432.83893,-606.570796,208.730707, + -0.285905,0.350852,-0.891718,436.335613,-633.160168,199.481809, + -0.150375,0.362184,-0.919897,432.838941,-633.447412,200.210852, + 0.998111,-0.023817,0.056627,793.478048,-563.767069,23.357838, + 0.991932,-0.063402,0.109777,792.007217,-577.494024,43.23773, + 0.998111,-0.031311,0.052854,793.410423,-566.321374,23.357838, + 0.991932,-0.063402,0.109777,792.007217,-577.494024,43.23773, + 0.998111,-0.023817,0.056627,793.478048,-563.767069,23.357838, + 0.991932,-0.047852,0.117393,792.007216,-572.529419,45.597264, + 0.127347,-0.363412,0.922884,624.955334,-633.909652,201.38423, + 0.256673,-0.473186,0.842742,649.884119,-657.135168,184.945974, + 0.256673,-0.353935,0.899361,649.884111,-632.117666,196.836073, + 0.256673,-0.473186,0.842742,649.884119,-657.135168,184.945974, + 0.127347,-0.363412,0.922884,624.955334,-633.909652,201.38423, + 0.127347,-0.48578,0.864755,624.955342,-659.530197,189.207523, + -0.91096,0.410353,-0.041977,452.246978,-748.839872,27.699361, + -0.94485,0.32732,-0.011,453.575534,-745.656322,23.357838, + -0.890491,0.454743,-0.015282,452.246975,-748.985782,23.357838, + -0.94485,0.32732,-0.011,453.575534,-745.656322,23.357838, + -0.91096,0.410353,-0.041977,452.246978,-748.839872,27.699361, + -0.959176,0.281343,-0.02878,453.575536,-745.52182,27.359938, + -0.999951,0.009862,-0.001008,454.797654,-738.498463,26.641479, + -0.999342,-0.036239,0.001219,454.667735,-735.026158,23.357838, + -0.998419,0.056178,-0.001887,454.797652,-738.60882,23.357838, + -0.999342,-0.036239,0.001219,454.667735,-735.026158,23.357838, + -0.999951,0.009862,-0.001008,454.797654,-738.498463,26.641479, + -0.999345,-0.035987,0.003682,454.667737,-734.928076,26.276244, + -0.415875,0.883495,-0.215602,439.690597,-756.366969,56.464997, + -0.537771,0.838627,-0.086642,442.839452,-759.393033,28.778909, + -0.415875,0.904633,-0.093201,439.690582,-761.097663,28.953287, + -0.537771,0.838627,-0.086642,442.839452,-759.393033,28.778909, + -0.415875,0.883495,-0.215602,439.690597,-756.366969,56.464997, + -0.537771,0.818998,-0.200111,442.839466,-754.702001,56.059962, + 0.030867,-0.603851,0.796499,599.602156,-684.199423,174.90216, + 0.127347,-0.701215,0.701485,624.955349,-704.633973,155.011385, + 0.127347,-0.599085,0.790493,624.955347,-683.252488,173.653183, + 0.127347,-0.701215,0.701485,624.955349,-704.633973,155.011385, + 0.030867,-0.603851,0.796499,599.602156,-684.199423,174.90216, + 0.030867,-0.706755,0.706785,599.602158,-705.742267,156.119679, + -0.537771,0.508681,-0.672344,442.83949,-680.220296,169.653769, + -0.415875,0.444984,-0.793119,439.690616,-657.910808,186.325996, + -0.537771,0.412318,-0.735388,442.839485,-657.07129,184.832214, + -0.415875,0.444984,-0.793119,439.690616,-657.910808,186.325996, + -0.537771,0.508681,-0.672344,442.83949,-680.220296,169.653769, + -0.415875,0.548909,-0.725084,439.690621,-681.255534,171.01922, + -0.244971,0.474679,-0.845381,644.636259,-642.668145,159.204284, + -0.112343,0.364093,-0.924562,623.546355,-622.700434,172.934486, + -0.244971,0.355055,-0.902178,644.636252,-621.293309,169.363128, + -0.112343,0.364093,-0.924562,623.546355,-622.700434,172.934486, + -0.244971,0.474679,-0.845381,644.636259,-642.668145,159.204284, + -0.112343,0.486683,-0.866325,623.546362,-644.548798,162.550587, + -0.373111,0.454056,-0.809087,665.021386,-639.414516,153.414997, + -0.244971,0.355055,-0.902178,644.636252,-621.293309,169.363128, + -0.373111,0.33957,-0.863412,665.021379,-618.858911,163.184484, + -0.244971,0.355055,-0.902178,644.636252,-621.293309,169.363128, + -0.373111,0.454056,-0.809087,665.021386,-639.414516,153.414997, + -0.244971,0.474679,-0.845381,644.636259,-642.668145,159.204284, + -0.494423,0.4252,-0.758123,684.332893,-634.846784,145.287478, + -0.373111,0.33957,-0.863412,665.021379,-618.858911,163.184484, + -0.494423,0.317928,-0.808992,684.332887,-615.44129,154.510351, + -0.373111,0.33957,-0.863412,665.021379,-618.858911,163.184484, + -0.494423,0.4252,-0.758123,684.332893,-634.846784,145.287478, + -0.373111,0.454056,-0.809087,665.021386,-639.414516,153.414997, + -0.595888,0.383438,-0.705615,702.221357,-629.047597,134.968788, + -0.494423,0.317928,-0.808992,684.332887,-615.44129,154.510351, + -0.606705,0.290533,-0.739932,702.221351,-611.102283,143.49768, + -0.494423,0.317928,-0.808992,684.332887,-615.44129,154.510351, + -0.595888,0.383438,-0.705615,702.221357,-629.047597,134.968788, + -0.494423,0.4252,-0.758123,684.332893,-634.846784,145.287478, + -0.701084,0.343733,-0.624763,718.363103,-622.121887,122.645633, + -0.606705,0.290533,-0.739932,702.221351,-611.102283,143.49768, + -0.707841,0.243878,-0.662936,718.363098,-605.920401,130.345733, + -0.606705,0.290533,-0.739932,702.221351,-611.102283,143.49768, + -0.701084,0.343733,-0.624763,718.363103,-622.121887,122.645633, + -0.595888,0.383438,-0.705615,702.221357,-629.047597,134.968788, + -0.701084,0.343733,-0.624763,718.363103,-622.121887,122.645633, + -0.796291,0.222882,-0.562356,732.466058,-599.989405,115.292483, + -0.796291,0.297433,-0.526739,732.466063,-614.194966,108.540989, + -0.796291,0.222882,-0.562356,732.466058,-599.989405,115.292483, + -0.701084,0.343733,-0.624763,718.363103,-622.121887,122.645633, + -0.707841,0.243878,-0.662936,718.363098,-605.920401,130.345733, + -0.993727,0.090031,-0.066344,764.031425,-586.699189,30.082194, + -0.998991,0.032467,-0.031019,764.696221,-572.980425,23.357838, + -0.998991,0.036391,-0.026305,764.531578,-577.829947,23.357838, + -0.998991,0.032467,-0.031019,764.696221,-572.980425,23.357838, + -0.993727,0.090031,-0.066344,764.031425,-586.699189,30.082194, + -0.993727,0.08015,-0.077994,764.031425,-583.441377,33.81879, + 0.998111,-0.049787,0.035988,792.935095,-577.829952,23.357838, + 0.991932,-0.111235,0.060808,792.007217,-592.860317,27.871437, + 0.998112,-0.05354,0.03009,792.574093,-584.829111,23.357838, + 0.991932,-0.111235,0.060808,792.007217,-592.860317,27.871437, + 0.998111,-0.049787,0.035988,792.935095,-577.829952,23.357838, + 0.991932,-0.101911,0.075398,792.007218,-589.846284,32.468209, + -0.993727,0.012896,-0.111089,764.031418,-561.470422,44.260952, + -0.998987,0.001007,-0.04498,764.9959,-545.937132,23.357838, + -0.998991,0.005587,-0.044554,764.975642,-559.332125,23.357838, + -0.998987,0.001007,-0.04498,764.9959,-545.937132,23.357838, + -0.993727,0.012896,-0.111089,764.031418,-561.470422,44.260952, + -0.9937,0.002257,-0.112046,764.031409,-546.296855,44.770904, + 0.924681,-0,0.380742,779.024141,-186.86272,97.713067, + 0.866755,-0.008697,0.498658,767.829302,-547.569289,120.514493, + 0.919603,-0.008082,0.392766,779.024141,-547.186239,97.713067, + 0.866755,-0.008697,0.498658,767.829302,-547.569289,120.514493, + 0.924681,-0,0.380742,779.024141,-186.86272,97.713067, + 0.855563,-0,0.517699,767.829302,-186.86272,120.514493, + -0.901181,0.346254,-0.26073,452.247014,-710.823017,124.188674, + -0.952384,0.216659,-0.21453,453.575573,-691.225448,141.602861, + -0.952384,0.243872,-0.183005,453.575571,-708.165176,122.173591, + -0.952384,0.216659,-0.21453,453.575573,-691.225448,141.602861, + -0.901181,0.346254,-0.26073,452.247014,-710.823017,124.188674, + -0.901181,0.307496,-0.305481,452.247015,-693.58391,143.961322, + -0.952384,0.243872,-0.183005,453.575571,-708.165176,122.173591, + -0.985345,0.121711,-0.119507,454.431277,-688.759444,139.136857, + -0.985345,0.136861,-0.101808,454.431275,-705.386141,120.066621, + -0.985345,0.121711,-0.119507,454.431277,-688.759444,139.136857, + -0.952384,0.243872,-0.183005,453.575571,-708.165176,122.173591, + -0.952384,0.216659,-0.21453,453.575573,-691.225448,141.602861, + -0.285905,0.930996,-0.226946,436.335601,-757.591911,56.762987, + -0.415875,0.904633,-0.093201,439.690582,-761.097663,28.953287, + -0.285905,0.953237,-0.097966,436.335587,-762.351785,29.08158, + -0.415875,0.904633,-0.093201,439.690582,-761.097663,28.953287, + -0.285905,0.930996,-0.226946,436.335601,-757.591911,56.762987, + -0.415875,0.883495,-0.215602,439.690597,-756.366969,56.464997, + 0.229025,-0.58781,0.775904,455.006113,-699.207898,194.697902, + 0.361665,-0.658837,0.659646,458.22226,-722.603323,172.980735, + 0.361665,-0.562804,0.74327,458.222259,-698.605625,193.903521, + 0.361665,-0.658837,0.659646,458.22226,-722.603323,172.980735, + 0.229025,-0.58781,0.775904,455.006113,-699.207898,194.697902, + 0.229025,-0.688056,0.688568,455.006115,-723.308225,173.685638, + 0.361665,-0.562804,0.74327,458.222259,-698.605625,193.903521, + 0.487279,-0.616933,0.618023,461.270002,-721.590015,171.967428, + 0.487279,-0.526963,0.696326,461.27,-697.739849,192.761586, + 0.487279,-0.616933,0.618023,461.270002,-721.590015,171.967428, + 0.361665,-0.562804,0.74327,458.222259,-698.605625,193.903521, + 0.361665,-0.658837,0.659646,458.22226,-722.603323,172.980735, + -0.845271,0.531564,-0.054376,450.471088,-751.942886,28.016787, + -0.890491,0.454743,-0.015282,452.246975,-748.985782,23.357838, + -0.819027,0.573431,-0.019271,450.471085,-752.099463,23.357838, + -0.890491,0.454743,-0.015282,452.246975,-748.985782,23.357838, + -0.845271,0.531564,-0.054376,450.471088,-751.942886,28.016787, + -0.91096,0.410353,-0.041977,452.246978,-748.839872,27.699361, + -0.494423,0.84441,-0.206198,684.332878,-710.625471,45.337452, + -0.551599,0.82639,-0.113216,696.28309,-706.40024,23.357838, + -0.482609,0.869945,-0.101409,684.332867,-714.266541,24.162533, + -0.551599,0.82639,-0.113216,696.28309,-706.40024,23.357838, + -0.494423,0.84441,-0.206198,684.332878,-710.625471,45.337452, + -0.599001,0.779767,-0.182103,702.221343,-699.124264,42.539571, + -0.551599,0.82639,-0.113216,696.28309,-706.40024,23.357838, + -0.599001,0.779767,-0.182103,702.221343,-699.124264,42.539571, + -0.605809,0.784102,-0.134828,702.221333,-702.422602,23.357838, + -0.796291,0.297433,-0.526739,732.466063,-614.194966,108.540989, + -0.870211,0.181845,-0.457892,744.275052,-593.41661,98.610304, + -0.870211,0.242544,-0.428841,744.275056,-605.410265,92.910065, + -0.870211,0.181845,-0.457892,744.275052,-593.41661,98.610304, + -0.796291,0.297433,-0.526739,732.466063,-614.194966,108.540989, + -0.796291,0.222882,-0.562356,732.466058,-599.989405,115.292483, + -0.870211,0.242544,-0.428841,744.275056,-605.410265,92.910065, + -0.928388,0.137548,-0.34522,753.576407,-586.320946,80.601044, + -0.928388,0.183307,-0.323257,753.57641,-595.926736,76.035688, + -0.928388,0.137548,-0.34522,753.576407,-586.320946,80.601044, + -0.870211,0.242544,-0.428841,744.275056,-605.410265,92.910065, + -0.870211,0.181845,-0.457892,744.275052,-593.41661,98.610304, + -0.928388,0.183307,-0.323257,753.57641,-595.926736,76.035688, + -0.9698,0.09079,-0.226373,760.201824,-578.830801,61.590563, + -0.9698,0.12079,-0.21189,760.201826,-585.915972,58.223185, + -0.9698,0.09079,-0.226373,760.201824,-578.830801,61.590563, + -0.928388,0.183307,-0.323257,753.57641,-595.926736,76.035688, + -0.928388,0.137548,-0.34522,753.576407,-586.320946,80.601044, + -0.9698,0.12079,-0.21189,760.201826,-585.915972,58.223185, + -0.993727,0.042411,-0.103482,764.031423,-571.081703,41.922837, + -0.993727,0.056116,-0.096737,764.031424,-575.55911,39.794854, + -0.993727,0.042411,-0.103482,764.031423,-571.081703,41.922837, + -0.9698,0.12079,-0.21189,760.201826,-585.915972,58.223185, + -0.9698,0.09079,-0.226373,760.201824,-578.830801,61.590563, + -0.993727,0.056116,-0.096737,764.031424,-575.55911,39.794854, + -0.998991,0.017409,-0.041391,764.928093,-563.76708,23.357838, + -0.998991,0.022887,-0.038633,764.878707,-566.321382,23.357838, + -0.998991,0.017409,-0.041391,764.928093,-563.76708,23.357838, + -0.993727,0.056116,-0.096737,764.031424,-575.55911,39.794854, + -0.993727,0.042411,-0.103482,764.031423,-571.081703,41.922837, + 0.991932,-0.063402,0.109777,792.007217,-577.494024,43.23773, + 0.966794,-0.15555,0.202766,787.130191,-597.186922,60.135075, + 0.991932,-0.07777,0.100113,792.007218,-582.090797,40.223697, + 0.966794,-0.15555,0.202766,787.130191,-597.186922,60.135075, + 0.991932,-0.063402,0.109777,792.007217,-577.494024,43.23773, + 0.966794,-0.126469,0.22207,787.130189,-589.736091,65.02047, + 0.966794,-0.126469,0.22207,787.130189,-589.736091,65.02047, + 0.924993,-0.230673,0.301955,779.024169,-611.764971,79.363123, + 0.966794,-0.15555,0.202766,787.130191,-597.186922,60.135075, + 0.924993,-0.230673,0.301955,779.024169,-611.764971,79.363123, + 0.966794,-0.126469,0.22207,787.130189,-589.736091,65.02047, + 0.924993,-0.187375,0.330572,779.024167,-601.558028,86.055659, + 0.924993,-0.187375,0.330572,779.024167,-601.558028,86.055659, + 0.867227,-0.301852,0.395982,767.829336,-625.572837,97.575321, + 0.924993,-0.230673,0.301955,779.024169,-611.764971,79.363123, + 0.867227,-0.301852,0.395982,767.829336,-625.572837,97.575321, + 0.924993,-0.187375,0.330572,779.024167,-601.558028,86.055659, + 0.867227,-0.245078,0.433421,767.829333,-612.755392,105.979521, + 0.867227,-0.245078,0.433421,767.829333,-612.755392,105.979521, + 0.794465,-0.367859,0.483224,753.739289,-638.371733,114.456714, + 0.867227,-0.301852,0.395982,767.829336,-625.572837,97.575321, + 0.794465,-0.367859,0.483224,753.739289,-638.371733,114.456714, + 0.867227,-0.245078,0.433421,767.829333,-612.755392,105.979521, + 0.794465,-0.298581,0.528844,753.739286,-623.134542,124.447504, + -0.244971,0.09829,-0.964535,644.636231,-575.409716,180.525125, + -0.112099,0.016649,-0.993558,623.546317,-548.656939,185.255996, + -0.244466,0.016195,-0.969523,644.636215,-548.592598,181.426394, + -0.112099,0.016649,-0.993558,623.546317,-548.656939,185.255996, + -0.244971,0.09829,-0.964535,644.636231,-575.409716,180.525125, + -0.112343,0.100949,-0.988528,623.546333,-575.800358,184.343761, + -0.373111,0.093846,-0.923028,665.021359,-574.733894,173.918677, + -0.244466,0.016195,-0.969523,644.636215,-548.592598,181.426394, + -0.372406,0.015448,-0.927941,665.021343,-548.48129,174.800973, + -0.244466,0.016195,-0.969523,644.636215,-548.592598,181.426394, + -0.373111,0.093846,-0.923028,665.021359,-574.733894,173.918677, + -0.244971,0.09829,-0.964535,644.636231,-575.409716,180.525125, + 0.923987,-0.382207,0.012845,472.107164,-776.05994,23.357838, + 0.885205,-0.462786,0.04734,470.677482,-778.860284,30.770308, + 0.862236,-0.50622,0.017013,470.677477,-779.109402,23.357838, + 0.885205,-0.462786,0.04734,470.677482,-778.860284,30.770308, + 0.923987,-0.382207,0.012845,472.107164,-776.05994,23.357838, + 0.940951,-0.336786,0.034451,472.107168,-775.82127,30.459429, + -0.040706,0.99398,-0.101718,429.267738,-763.421251,29.190985, + -0.127104,0.99133,-0.033316,432.838912,-763.326349,23.357838, + -0.027072,0.999069,-0.033577,429.267734,-763.617291,23.357838, + -0.127104,0.99133,-0.033316,432.838912,-763.326349,23.357838, + -0.040706,0.99398,-0.101718,429.267738,-763.421251,29.190985, + -0.150374,0.983472,-0.100844,432.838915,-763.131306,29.161323, + -0.959176,0.281343,-0.02878,453.575536,-745.52182,27.359938, + -0.981057,0.193609,-0.006506,454.431238,-742.175043,23.357838, + -0.94485,0.32732,-0.011,453.575534,-745.656322,23.357838, + -0.981057,0.193609,-0.006506,454.431238,-742.175043,23.357838, + -0.959176,0.281343,-0.02878,453.575536,-745.52182,27.359938, + -0.989023,0.146995,-0.015036,454.43124,-742.052468,27.005038, + 0.998111,-0.044419,0.042437,793.160542,-572.980425,23.357838, + 0.991932,-0.101911,0.075398,792.007218,-589.846284,32.468209, + 0.998111,-0.049787,0.035988,792.935095,-577.829952,23.357838, + 0.991932,-0.101911,0.075398,792.007218,-589.846284,32.468209, + 0.998111,-0.044419,0.042437,793.160542,-572.980425,23.357838, + 0.991932,-0.090686,0.088582,792.007219,-586.233981,36.611394, + 0.690548,-0.722878,0.024294,466.630394,-784.472872,23.357838, + 0.603443,-0.793169,0.082097,464.090747,-786.408778,31.542489, + 0.583909,-0.811361,0.027268,464.090742,-786.683847,23.357838, + 0.603443,-0.793169,0.082097,464.090747,-786.408778,31.542489, + 0.690548,-0.722878,0.024294,466.630394,-784.472872,23.357838, + 0.714887,-0.69482,0.078501,466.630399,-784.205377,31.31709, + -0.551599,0.82639,-0.113216,696.28309,-706.40024,23.357838, + -0.473888,0.880088,-0.029578,684.332867,-714.293585,23.357838, + -0.482609,0.869945,-0.101409,684.332867,-714.266541,24.162533, + -0.989023,0.146995,-0.015036,454.43124,-742.052468,27.005038, + -0.998419,0.056178,-0.001887,454.797652,-738.60882,23.357838, + -0.981057,0.193609,-0.006506,454.431238,-742.175043,23.357838, + -0.998419,0.056178,-0.001887,454.797652,-738.60882,23.357838, + -0.989023,0.146995,-0.015036,454.43124,-742.052468,27.005038, + -0.999951,0.009862,-0.001008,454.797654,-738.498463,26.641479, + 0.862236,-0.50622,0.017013,470.677477,-779.109402,23.357838, + 0.812465,-0.579983,0.059329,468.840127,-781.672997,31.058037, + 0.783922,-0.620509,0.020854,468.840122,-781.931785,23.357838, + 0.812465,-0.579983,0.059329,468.840127,-781.672997,31.058037, + 0.862236,-0.50622,0.017013,470.677477,-779.109402,23.357838, + 0.885205,-0.462786,0.04734,470.677482,-778.860284,30.770308, + -0.993727,0.08015,-0.077994,764.031425,-583.441377,33.81879, + -0.998991,0.027938,-0.035154,764.805052,-569.303684,23.357838, + -0.998991,0.032467,-0.031019,764.696221,-572.980425,23.357838, + -0.998991,0.027938,-0.035154,764.805052,-569.303684,23.357838, + -0.993727,0.08015,-0.077994,764.031425,-583.441377,33.81879, + -0.993727,0.068775,-0.088188,764.031425,-579.704781,37.076602, + 0.020529,-0.999225,0.033582,599.602113,-766.149871,23.357838, + 0,-0.996871,0.079045,473.717738,-765.945156,29.449145, + 0,-0.999436,0.033589,473.717734,-766.149872,23.357838, + 0,-0.996871,0.079045,473.717738,-765.945156,29.449145, + 0.020529,-0.999225,0.033582,599.602113,-766.149871,23.357838, + 0.030866,-0.994332,0.101738,599.602117,-765.945157,29.449075, + -0.683524,0,-0.729928,127.425692,-280.29408,1698.17281, + -0.582647,0,-0.812725,100.141826,-186.86272,1720.5641, + -0.729928,0,-0.683524,127.425692,-186.86272,1698.17281, + -0.582647,0,-0.812725,100.141826,-186.86272,1720.5641, + -0.683524,0,-0.729928,127.425692,-280.29408,1698.17281, + -0.528184,0,-0.84913,100.141826,-280.29408,1720.5641, + -0.832687,0.442054,-0.333498,450.471124,-713.308606,126.073164, + -0.901181,0.307496,-0.305481,452.247015,-693.58391,143.961322, + -0.901181,0.346254,-0.26073,452.247014,-710.823017,124.188674, + -0.901181,0.307496,-0.305481,452.247015,-693.58391,143.961322, + -0.832687,0.442054,-0.333498,450.471124,-713.308606,126.073164, + -0.832687,0.392486,-0.390624,450.471126,-695.789522,146.166935, + -0.649152,0.44561,-0.616469,445.721745,-678.931346,167.953679, + -0.748179,0.326101,-0.577828,448.282012,-654.795099,180.782109, + -0.748179,0.401798,-0.528002,448.282017,-677.413444,165.951609, + -0.748179,0.326101,-0.577828,448.282012,-654.795099,180.782109, + -0.649152,0.44561,-0.616469,445.721745,-678.931346,167.953679, + -0.649152,0.35745,-0.67144,445.72174,-656.026027,182.972343, + -0.372406,0.015448,-0.927941,665.021343,-548.48129,174.800973, + -0.266155,0,-0.96393,644.636215,-186.86272,181.426394, + -0.393115,0,-0.919489,665.021343,-186.86272,174.800973, + -0.266155,0,-0.96393,644.636215,-186.86272,181.426394, + -0.372406,0.015448,-0.927941,665.021343,-548.48129,174.800973, + -0.244466,0.016195,-0.969523,644.636215,-548.592598,181.426394, + 0.792107,-0.00894,0.610317,468.840108,-549.460722,233.099647, + 0.707841,-0.055835,0.704162,466.630399,-580.939677,234.58279, + 0.79876,-0.062483,0.598396,468.840127,-580.680624,232.05041, + 0.707841,-0.055835,0.704162,466.630399,-580.939677,234.58279, + 0.792107,-0.00894,0.610317,468.840108,-549.460722,233.099647, + 0.707157,-0.011876,0.706957,466.63038,-549.503387,235.639299, + 0.517753,-0.01437,0.85541,696.758754,-548.76324,191.585041, + 0.609101,-0.079799,0.789068,717.894046,-575.008662,176.604979, + 0.625544,-0.013105,0.780079,717.89403,-548.526532,177.494989, + 0.609101,-0.079799,0.789068,717.894046,-575.008662,176.604979, + 0.517753,-0.01437,0.85541,696.758754,-548.76324,191.585041, + 0.499663,-0.087405,0.861799,696.75877,-576.445897,190.654684, + 0.499663,-0.087405,0.861799,696.75877,-576.445897,190.654684, + 0.609101,-0.186578,0.770833,717.894058,-597.802054,172.685609, + 0.609101,-0.079799,0.789068,717.894046,-575.008662,176.604979, + 0.609101,-0.186578,0.770833,717.894058,-597.802054,172.685609, + 0.499663,-0.087405,0.861799,696.75877,-576.445897,190.654684, + 0.499663,-0.204023,0.84185,696.758783,-601.14038,186.408417, + 0.381503,-0.093498,0.919627,673.957345,-577.587813,201.817466, + 0.499663,-0.204023,0.84185,696.758783,-601.14038,186.408417, + 0.499663,-0.087405,0.861799,696.75877,-576.445897,190.654684, + 0.499663,-0.204023,0.84185,696.758783,-601.14038,186.408417, + 0.381503,-0.093498,0.919627,673.957345,-577.587813,201.817466, + 0.381503,-0.21794,0.898308,673.957358,-603.792753,197.311473, + 0.256672,-0.097972,0.96152,649.884086,-578.414663,209.900281, + 0.381503,-0.21794,0.898308,673.957358,-603.792753,197.311473, + 0.381503,-0.093498,0.919627,673.957345,-577.587813,201.817466, + 0.381503,-0.21794,0.898308,673.957358,-603.792753,197.311473, + 0.256672,-0.097972,0.96152,649.884086,-578.414663,209.900281, + 0.256673,-0.228081,0.939201,649.8841,-605.713302,205.206225, + 0.127347,-0.100746,0.986728,624.955308,-578.912147,214.763349, + 0.256673,-0.228081,0.939201,649.8841,-605.713302,205.206225, + 0.256672,-0.097972,0.96152,649.884086,-578.414663,209.900281, + 0.256673,-0.228081,0.939201,649.8841,-605.713302,205.206225, + 0.127347,-0.100746,0.986728,624.955308,-578.912147,214.763349, + 0.127347,-0.234264,0.963796,624.955322,-606.868816,209.956143, + -0.993727,0.042411,-0.103482,764.031423,-571.081703,41.922837, + -0.998991,0.011606,-0.043377,764.959284,-561.475403,23.357838, + -0.998991,0.017409,-0.041391,764.928093,-563.76708,23.357838, + -0.998991,0.011606,-0.043377,764.959284,-561.475403,23.357838, + -0.993727,0.042411,-0.103482,764.031423,-571.081703,41.922837, + -0.993727,0.027914,-0.108296,764.031421,-566.356087,43.420852, + -0.494423,0.614096,-0.615169,684.332898,-669.009253,119.386665, + -0.373111,0.560072,-0.739667,665.02139,-658.447133,140.935603, + -0.494423,0.524541,-0.693111,684.332897,-652.814504,133.506322, + -0.373111,0.560072,-0.739667,665.02139,-658.447133,140.935603, + -0.494423,0.614096,-0.615169,684.332898,-669.009253,119.386665, + -0.373111,0.655639,-0.656449,665.021391,-675.601701,125.979113, + 0.517753,-0.01437,0.85541,696.758754,-548.76324,191.585041, + 0.590628,-0,0.806944,717.89403,-186.86272,177.494989, + 0.479633,0,0.877469,696.758754,-186.86272,191.585041, + 0.590628,-0,0.806944,717.89403,-186.86272,177.494989, + 0.517753,-0.01437,0.85541,696.758754,-548.76324,191.585041, + 0.625544,-0.013105,0.780079,717.89403,-548.526532,177.494989, + -0.928388,0.137548,-0.34522,753.576407,-586.320946,80.601044, + -0.9698,0.059096,-0.236633,760.201821,-571.352859,63.961061, + -0.9698,0.09079,-0.226373,760.201824,-578.830801,61.590563, + -0.9698,0.059096,-0.236633,760.201821,-571.352859,63.961061, + -0.928388,0.137548,-0.34522,753.576407,-586.320946,80.601044, + -0.928388,0.089223,-0.360743,753.576403,-576.182654,83.81487, + -0.494423,0.317928,-0.808992,684.332887,-615.44129,154.510351, + -0.373111,0.218748,-0.901631,665.02137,-597.163793,170.061811, + -0.494423,0.204724,-0.844769,684.332878,-594.960039,161.002883, + -0.373111,0.218748,-0.901631,665.02137,-597.163793,170.061811, + -0.494423,0.317928,-0.808992,684.332887,-615.44129,154.510351, + -0.373111,0.33957,-0.863412,665.021379,-618.858911,163.184484, + 0.127347,-0.234264,0.963796,624.955322,-606.868816,209.956143, + 0.256673,-0.353935,0.899361,649.884111,-632.117666,196.836073, + 0.256673,-0.228081,0.939201,649.8841,-605.713302,205.206225, + 0.256673,-0.353935,0.899361,649.884111,-632.117666,196.836073, + 0.127347,-0.234264,0.963796,624.955322,-606.868816,209.956143, + 0.127347,-0.363412,0.922884,624.955334,-633.909652,201.38423, + -0.285905,0.953237,-0.097966,436.335587,-762.351785,29.08158, + -0.393899,0.918635,-0.030873,439.690579,-761.285715,23.357838, + -0.263028,0.964244,-0.032406,436.335584,-762.544148,23.357838, + -0.393899,0.918635,-0.030873,439.690579,-761.285715,23.357838, + -0.285905,0.953237,-0.097966,436.335587,-762.351785,29.08158, + -0.415875,0.904633,-0.093201,439.690582,-761.097663,28.953287, + 0.999747,-0.022474,0.000755,473.717734,-766.149872,23.357838, + 0.997653,-0.068124,0.006968,473.642039,-769.30108,29.792441, + 0.993395,-0.114677,0.003853,473.642035,-769.517334,23.357838, + 0.997653,-0.068124,0.006968,473.642039,-769.30108,29.792441, + 0.999747,-0.022474,0.000755,473.717734,-766.149872,23.357838, + 0.999748,-0.022318,0.002282,473.717738,-765.945156,29.449145, + -0.373111,0.922912,-0.094985,665.021359,-723.541264,25.111307, + -0.473888,0.880088,-0.029578,684.332867,-714.293585,23.357838, + -0.351418,0.935691,-0.031446,665.021358,-723.600195,23.357838, + -0.473888,0.880088,-0.029578,684.332867,-714.293585,23.357838, + -0.373111,0.922912,-0.094985,665.021359,-723.541264,25.111307, + -0.482609,0.869945,-0.101409,684.332867,-714.266541,24.162533, + -0.244971,0.964459,-0.099038,644.636231,-730.147713,25.787129, + -0.351418,0.935691,-0.031446,665.021358,-723.600195,23.357838, + -0.222589,0.974362,-0.032746,644.63623,-730.229356,23.357838, + -0.351418,0.935691,-0.031446,665.021358,-723.600195,23.357838, + -0.244971,0.964459,-0.099038,644.636231,-730.147713,25.787129, + -0.373111,0.922912,-0.094985,665.021359,-723.541264,25.111307, + -0.022557,0.994554,-0.10175,602.133267,-734.928078,26.276163, + -0.089733,0.995404,-0.033453,623.546332,-734.061121,23.357838, + -0.015002,0.999323,-0.033585,602.133266,-735.026157,23.357838, + -0.089733,0.995404,-0.033453,623.546332,-734.061121,23.357838, + -0.022557,0.994554,-0.10175,602.133267,-734.928078,26.276163, + -0.112343,0.988493,-0.101292,623.546333,-733.966349,26.17777, + 0.691408,-0.722056,0.024266,736.997667,-709.544681,23.357838, + 0.609101,-0.788882,0.081617,717.894046,-726.227566,25.386075, + 0.590628,-0.806489,0.027104,717.894045,-726.295731,23.357838, + 0.609101,-0.788882,0.081617,717.894046,-726.227566,25.386075, + 0.691408,-0.722056,0.024266,736.997667,-709.544681,23.357838, + 0.714403,-0.693748,0.091332,736.997667,-709.533908,23.678376, + -0.936465,0.339085,-0.089746,753.576403,-633.437458,26.560066, + -0.951243,0.299703,-0.072908,757.969157,-620.274076,23.357838, + -0.919489,0.387429,-0.066619,753.576401,-633.988087,23.357838, + 0.967989,-0.250852,0.00843,473.101718,-772.841978,23.357838, + 0.940951,-0.336786,0.034451,472.107168,-775.82127,30.459429, + 0.923987,-0.382207,0.012845,472.107164,-776.05994,23.357838, + 0.940951,-0.336786,0.034451,472.107168,-775.82127,30.459429, + 0.967989,-0.250852,0.00843,473.101718,-772.841978,23.357838, + 0.978666,-0.204393,0.020908,473.101722,-772.614333,30.131373, + 0.360344,-0.932293,0.031332,673.957342,-751.594898,23.357838, + 0.256672,-0.961442,0.098738,649.884086,-759.522868,28.792076, + 0.234823,-0.97149,0.03265,649.884083,-759.705502,23.357838, + 0.256672,-0.961442,0.098738,649.884086,-759.522868,28.792076, + 0.360344,-0.932293,0.031332,673.957342,-751.594898,23.357838, + 0.381503,-0.91951,0.094637,673.957345,-751.440053,27.965226, + 0.068639,-0.997079,0.03351,451.683295,-791.488471,23.357838, + 0.00966,-0.995709,0.092029,448.317739,-791.272422,32.040027, + 0.011244,-0.999373,0.033587,448.317734,-791.564213,23.357838, + 0.00966,-0.995709,0.092029,448.317739,-791.272422,32.040027, + 0.068639,-0.997079,0.03351,451.683295,-791.488471,23.357838, + 0.091928,-0.990581,0.101478,451.683301,-791.19694,32.032304, + 0.714403,-0.693748,0.091332,736.997667,-709.533908,23.678376, + 0.691408,-0.722056,0.024266,736.997667,-709.544681,23.357838, + 0.752834,-0.654794,0.066982,739.751559,-706.400475,23.357838, + -0.112343,0.988493,-0.101292,623.546333,-733.966349,26.17777, + -0.222589,0.974362,-0.032746,644.63623,-730.229356,23.357838, + -0.089733,0.995404,-0.033453,623.546332,-734.061121,23.357838, + -0.222589,0.974362,-0.032746,644.63623,-730.229356,23.357838, + -0.112343,0.988493,-0.101292,623.546333,-733.966349,26.17777, + -0.244971,0.964459,-0.099038,644.636231,-730.147713,25.787129, + 0.999748,-0.0058,0.021677,473.717752,-607.239369,211.479086, + 0.995804,-0.035007,0.084556,473.642065,-635.720877,205.981096, + 0.999748,-0.0087,0.020685,473.717764,-634.484263,202.842487, + 0.995804,-0.035007,0.084556,473.642065,-635.720877,205.981096, + 0.999748,-0.0058,0.021677,473.717752,-607.239369,211.479086, + 0.995804,-0.023158,0.088537,473.642053,-608.036762,214.756927, + 0.091928,-0.487734,0.868139,451.683339,-672.734453,212.70224, + 0.229025,-0.58781,0.775904,455.006113,-699.207898,194.697902, + 0.229025,-0.476597,0.848766,455.006107,-672.469112,212.230111, + 0.229025,-0.58781,0.775904,455.006113,-699.207898,194.697902, + 0.091928,-0.487734,0.868139,451.683339,-672.734453,212.70224, + 0.091928,-0.601482,0.793579,451.683345,-699.535099,195.12947, + 0.011271,-0.489901,0.871705,448.317778,-672.771628,212.768386, + 0.091928,-0.601482,0.793579,451.683345,-699.535099,195.12947, + 0.091928,-0.487734,0.868139,451.683339,-672.734453,212.70224, + 0.091928,-0.601482,0.793579,451.683345,-699.535099,195.12947, + 0.011271,-0.489901,0.871705,448.317778,-672.771628,212.768386, + 0.011271,-0.604116,0.796817,448.317783,-699.580941,195.189934, + -0.415875,0.642593,-0.643523,439.690622,-702.296712,152.674124, + -0.537771,0.671316,-0.510036,442.83949,-719.276356,130.597708, + -0.415875,0.72429,-0.549957,439.690621,-720.641807,131.632947, + -0.537771,0.671316,-0.510036,442.83949,-719.276356,130.597708, + -0.415875,0.642593,-0.643523,439.690622,-702.296712,152.674124, + -0.537771,0.595553,-0.596756,442.839492,-701.085065,151.462478, + -0.537771,0.595553,-0.596756,442.839492,-701.085065,151.462478, + -0.649152,0.595502,-0.473264,445.721745,-717.576266,129.308758, + -0.537771,0.671316,-0.510036,442.83949,-719.276356,130.597708, + -0.649152,0.595502,-0.473264,445.721745,-717.576266,129.308758, + -0.537771,0.595553,-0.596756,442.839492,-701.085065,151.462478, + -0.649152,0.525457,-0.549997,445.721747,-699.576473,149.953886, + -0.150375,0.698898,-0.699234,432.838956,-703.74222,154.119632, + -0.285905,0.76333,-0.579298,436.335626,-721.646389,132.394587, + -0.150375,0.787661,-0.597476,432.838954,-722.270805,132.867998, + -0.285905,0.76333,-0.579298,436.335626,-721.646389,132.394587, + -0.150375,0.698898,-0.699234,432.838956,-703.74222,154.119632, + -0.285905,0.677271,-0.67791,436.335627,-703.188138,153.565551, + -0.112343,0.702509,-0.702752,623.546368,-683.011825,133.389238, + -0.244971,0.772358,-0.586047,644.636264,-695.850119,112.836708, + -0.112343,0.791717,-0.600469,623.546367,-698.908942,115.155806, + -0.244971,0.772358,-0.586047,644.636264,-695.850119,112.836708, + -0.112343,0.702509,-0.702752,623.546368,-683.011825,133.389238, + -0.244971,0.685296,-0.685827,644.636265,-680.297547,130.67496, + 0.382469,-0.01552,0.923838,458.222196,-549.595395,241.116069, + 0.487278,-0.088099,0.868791,461.269956,-581.352493,238.618284, + 0.506559,-0.014482,0.862083,461.269937,-549.571376,239.686382, + 0.487278,-0.088099,0.868791,461.269956,-581.352493,238.618284, + 0.382469,-0.01552,0.923838,458.222196,-549.595395,241.116069, + 0.361665,-0.094307,0.927526,458.222215,-581.498327,240.043877, + -0.19509,0,-0.980785,35.243015,-186.86272,2079.865312, + -0.098017,0,-0.995185,0.112465,-280.29408,2083.325369, + -0.098017,0,-0.995185,0.112465,-186.86272,2083.325369, + -0.098017,0,-0.995185,0.112465,-280.29408,2083.325369, + -0.19509,0,-0.980785,35.243015,-186.86272,2079.865312, + -0.19509,0,-0.980785,35.243015,-280.29408,2079.865312, + -0.382683,0,-0.92388,69.023518,-280.29408,2069.618109, + -0.19509,0,-0.980785,35.243015,-186.86272,2079.865312, + -0.382683,0,-0.92388,69.023518,-186.86272,2069.618109, + -0.19509,0,-0.980785,35.243015,-186.86272,2079.865312, + -0.382683,0,-0.92388,69.023518,-280.29408,2069.618109, + -0.19509,0,-0.980785,35.243015,-280.29408,2079.865312, + 0.684487,-0,-0.729025,221.73981,-186.86272,1435.598634, + 0.684487,-0,-0.729025,93.530885,-280.29408,1315.222366, + 0.684487,-0,-0.729025,93.530885,-186.86272,1315.222366, + 0.684487,-0,-0.729025,93.530885,-280.29408,1315.222366, + 0.684487,-0,-0.729025,221.73981,-186.86272,1435.598634, + 0.684487,-0,-0.729025,221.73981,-280.29408,1435.598634, + -0.494423,0.087701,-0.864786,684.332867,-573.78512,164.643953, + -0.372406,0.015448,-0.927941,665.021343,-548.48129,174.800973, + -0.493603,0.014422,-0.869568,684.332852,-548.325029,165.499615, + -0.372406,0.015448,-0.927941,665.021343,-548.48129,174.800973, + -0.494423,0.087701,-0.864786,684.332867,-573.78512,164.643953, + -0.373111,0.093846,-0.923028,665.021359,-574.733894,173.918677, + -0.985345,0.136861,-0.101808,454.431275,-705.386141,120.066621, + -0.999454,0.024455,-0.02222,454.797689,-686.233268,136.610681, + -0.999454,0.027255,-0.01868,454.797688,-702.539296,117.908241, + -0.999454,0.024455,-0.02222,454.797689,-686.233268,136.610681, + -0.985345,0.136861,-0.101808,454.431275,-705.386141,120.066621, + -0.985345,0.121711,-0.119507,454.431277,-688.759444,139.136857, + -0.022557,0.706919,-0.706935,602.133302,-683.695423,134.072836, + -0.112343,0.791717,-0.600469,623.546367,-698.908942,115.155806, + -0.022557,0.796656,-0.604012,602.133301,-699.679313,115.739878, + -0.112343,0.791717,-0.600469,623.546367,-698.908942,115.155806, + -0.022557,0.706919,-0.706935,602.133302,-683.695423,134.072836, + -0.112343,0.702509,-0.702752,623.546368,-683.011825,133.389238, + -0.741547,0.152765,-0.653277,448.281994,-604.584377,200.565168, + -0.649249,0.076378,-0.756731,445.721707,-578.184383,207.648051, + -0.748094,0.052453,-0.661516,448.28198,-577.928705,205.148665, + -0.649249,0.076378,-0.756731,445.721707,-578.184383,207.648051, + -0.741547,0.152765,-0.653277,448.281994,-604.584377,200.565168, + -0.638578,0.17117,-0.75028,445.721721,-605.178251,203.006401, + 0.030867,-0.23624,0.971204,599.602131,-607.23931,211.479086, + 0.127347,-0.363412,0.922884,624.955334,-633.909652,201.38423, + 0.127347,-0.234264,0.963796,624.955322,-606.868816,209.956143, + 0.127347,-0.363412,0.922884,624.955334,-633.909652,201.38423, + 0.030867,-0.23624,0.971204,599.602131,-607.23931,211.479086, + 0.030867,-0.366379,0.929954,599.602143,-634.484215,202.842483, + 0.991932,-0.047852,0.117393,792.007216,-572.529419,45.597264, + 0.966794,-0.126469,0.22207,787.130189,-589.736091,65.02047, + 0.991932,-0.063402,0.109777,792.007217,-577.494024,43.23773, + 0.966794,-0.126469,0.22207,787.130189,-589.736091,65.02047, + 0.991932,-0.047852,0.117393,792.007216,-572.529419,45.597264, + 0.966794,-0.095028,0.237232,787.130187,-581.689044,68.845, + 0.966794,-0.095028,0.237232,787.130187,-581.689044,68.845, + 0.924993,-0.187375,0.330572,779.024167,-601.558028,86.055659, + 0.966794,-0.126469,0.22207,787.130189,-589.736091,65.02047, + 0.924993,-0.187375,0.330572,779.024167,-601.558028,86.055659, + 0.966794,-0.095028,0.237232,787.130187,-581.689044,68.845, + 0.924993,-0.140582,0.353021,779.024163,-590.534326,91.294907, + -0.707841,0.055835,-0.704162,718.363082,-571.142012,138.806193, + -0.795651,0.010475,-0.605664,732.466031,-547.618545,123.445905, + -0.796291,0.062774,-0.601647,732.466044,-569.495502,122.710666, + -0.795651,0.010475,-0.605664,732.466031,-547.618545,123.445905, + -0.707841,0.055835,-0.704162,718.363082,-571.142012,138.806193, + -0.716622,0.0095,-0.697397,718.363068,-547.889718,139.587655, + -0.796291,0.062774,-0.601647,732.466044,-569.495502,122.710666, + -0.869747,0.008617,-0.493422,744.275028,-547.318028,105.557439, + -0.870211,0.051465,-0.489984,744.27504,-567.670824,104.873423, + -0.869747,0.008617,-0.493422,744.275028,-547.318028,105.557439, + -0.796291,0.062774,-0.601647,732.466044,-569.495502,122.710666, + -0.795651,0.010475,-0.605664,732.466031,-547.618545,123.445905, + -0.870211,0.051465,-0.489984,744.27504,-567.670824,104.873423, + -0.928106,0.006604,-0.372257,753.576386,-546.993607,86.24593, + -0.928388,0.039234,-0.369537,753.576397,-565.700992,85.617213, + -0.928106,0.006604,-0.372257,753.576386,-546.993607,86.24593, + -0.870211,0.051465,-0.489984,744.27504,-567.670824,104.873423, + -0.869747,0.008617,-0.493422,744.275028,-547.318028,105.557439, + -0.928388,0.039234,-0.369537,753.576397,-565.700992,85.617213, + -0.969674,0.004471,-0.24436,760.201807,-546.651151,65.860802, + -0.9698,0.0263,-0.242479,760.201817,-563.621651,65.290458, + -0.969674,0.004471,-0.24436,760.201807,-546.651151,65.860802, + -0.928388,0.039234,-0.369537,753.576397,-565.700992,85.617213, + -0.928106,0.006604,-0.372257,753.576386,-546.993607,86.24593, + 0.991932,-0.07777,0.100113,792.007218,-582.090797,40.223697, + 0.966794,-0.181729,0.179678,787.130191,-603.902541,54.279953, + 0.991932,-0.090686,0.088582,792.007219,-586.233981,36.611394, + 0.966794,-0.181729,0.179678,787.130191,-603.902541,54.279953, + 0.991932,-0.07777,0.100113,792.007218,-582.090797,40.223697, + 0.966794,-0.15555,0.202766,787.130191,-597.186922,60.135075, + -0.040706,0.706494,-0.706547,429.267778,-703.948313,154.325725, + -0,0.622177,-0.782877,0.016303,-682.666775,172.880521, + -0.040706,0.603626,-0.796228,429.267777,-682.666673,172.880471, + -0,0.622177,-0.782877,0.016303,-682.666775,172.880521, + -0.040706,0.706494,-0.706547,429.267778,-703.948313,154.325725, + -0,0.723053,-0.690793,0.016305,-703.948386,154.325799, + -0.150375,0.698898,-0.699234,432.838956,-703.74222,154.119632, + -0.040706,0.603626,-0.796228,429.267777,-682.666673,172.880471, + -0.150375,0.597097,-0.787948,432.838954,-682.490586,172.648217, + -0.040706,0.603626,-0.796228,429.267777,-682.666673,172.880471, + -0.150375,0.698898,-0.699234,432.838956,-703.74222,154.119632, + -0.040706,0.706494,-0.706547,429.267778,-703.948313,154.325725, + -0.285905,0.677271,-0.67791,436.335627,-703.188138,153.565551, + -0.150375,0.597097,-0.787948,432.838954,-682.490586,172.648217, + -0.285905,0.578577,-0.763876,436.335626,-682.017175,172.023802, + -0.150375,0.597097,-0.787948,432.838954,-682.490586,172.648217, + -0.285905,0.677271,-0.67791,436.335627,-703.188138,153.565551, + -0.150375,0.698898,-0.699234,432.838956,-703.74222,154.119632, + 0.620913,-0.013167,0.783769,464.090728,-549.540509,237.849027, + 0.707841,-0.055835,0.704162,466.630399,-580.939677,234.58279, + 0.707157,-0.011876,0.706957,466.63038,-549.503387,235.639299, + 0.707841,-0.055835,0.704162,466.630399,-580.939677,234.58279, + 0.620913,-0.013167,0.783769,464.090728,-549.540509,237.849027, + 0.603443,-0.080198,0.793363,464.090747,-581.165077,236.78619, + -0.748094,0.052453,-0.661516,448.28198,-577.928705,205.148665, + -0.648424,0.012535,-0.761176,445.72169,-549.049611,208.627211, + -0.747451,0.007439,-0.664276,448.281963,-549.007501,206.120647, + -0.648424,0.012535,-0.761176,445.72169,-549.049611,208.627211, + -0.748094,0.052453,-0.661516,448.28198,-577.928705,205.148665, + -0.649249,0.076378,-0.756731,445.721707,-578.184383,207.648051, + -0.748094,0.052453,-0.661516,448.28198,-577.928705,205.148665, + -0.832126,0.009639,-0.554503,450.471071,-548.95985,203.284158, + -0.832687,0.057661,-0.550734,450.471088,-577.639374,202.320298, + -0.832126,0.009639,-0.554503,450.471071,-548.95985,203.284158, + -0.748094,0.052453,-0.661516,448.28198,-577.928705,205.148665, + -0.747451,0.007439,-0.664276,448.281963,-549.007501,206.120647, + -0.832687,0.057661,-0.550734,450.471088,-577.639374,202.320298, + -0.90081,0.007643,-0.434147,452.246961,-548.907571,200.172234, + -0.901181,0.045526,-0.431045,452.246978,-577.321949,199.217285, + -0.90081,0.007643,-0.434147,452.246961,-548.907571,200.172234, + -0.832687,0.057661,-0.550734,450.471088,-577.639374,202.320298, + -0.832126,0.009639,-0.554503,450.471071,-548.95985,203.284158, + -0.901181,0.045526,-0.431045,452.246978,-577.321949,199.217285, + -0.95219,0.005502,-0.305456,453.575519,-548.85167,196.844653, + -0.952384,0.032525,-0.303161,453.575536,-576.982526,195.899232, + -0.95219,0.005502,-0.305456,453.575519,-548.85167,196.844653, + -0.901181,0.045526,-0.431045,452.246978,-577.321949,199.217285, + -0.90081,0.007643,-0.434147,452.246961,-548.907571,200.172234, + -0.952384,0.032525,-0.303161,453.575536,-576.982526,195.899232, + -0.985283,0.003254,-0.170901,454.431224,-548.79322,193.365338, + -0.985345,0.018907,-0.169523,454.43124,-576.627626,192.429881, + -0.985283,0.003254,-0.170901,454.431224,-548.79322,193.365338, + -0.952384,0.032525,-0.303161,453.575536,-576.982526,195.899232, + -0.95219,0.005502,-0.305456,453.575519,-548.85167,196.844653, + 0.794465,-0.367859,0.483224,753.739289,-638.371733,114.456714, + 0.707932,-0.500166,0.498664,736.997697,-665.645303,116.022715, + 0.794465,-0.430275,0.42859,753.73929,-652.105388,102.482801, + 0.707932,-0.500166,0.498664,736.997697,-665.645303,116.022715, + 0.794465,-0.367859,0.483224,753.739289,-638.371733,114.456714, + 0.707932,-0.427549,0.562168,736.997696,-649.94032,129.715362, + 0.967989,-0,0.250993,473.101704,-186.86272,224.014969, + 0.928983,-0.005506,0.370082,472.10715,-549.362134,227.231115, + 0.973547,-0.004216,0.228449,473.101704,-549.308105,224.014969, + 0.928983,-0.005506,0.370082,472.10715,-549.362134,227.231115, + 0.967989,-0,0.250993,473.101704,-186.86272,224.014969, + 0.932593,0,0.360931,472.10715,-186.86272,227.231115, + -0.901181,0.103838,-0.42082,452.246991,-603.175034,194.771794, + -0.952384,0.032525,-0.303161,453.575536,-576.982526,195.899232, + -0.952384,0.073533,-0.295901,453.575549,-602.386639,191.530944, + -0.952384,0.032525,-0.303161,453.575536,-576.982526,195.899232, + -0.901181,0.103838,-0.42082,452.246991,-603.175034,194.771794, + -0.901181,0.045526,-0.431045,452.246978,-577.321949,199.217285, + -0.285329,0.015988,-0.958296,436.33557,-549.135218,213.722949, + -0.172878,0,-0.984943,432.838898,-186.86272,214.504709, + -0.307402,0,-0.95158,436.33557,-186.86272,213.722949, + -0.172878,0,-0.984943,432.838898,-186.86272,214.504709, + -0.285329,0.015988,-0.958296,436.33557,-549.135218,213.722949, + -0.150052,0.016548,-0.98854,432.838898,-549.148352,214.504709, + 0.998111,-0.007644,0.060955,793.543158,-559.332109,23.357838, + 0.991932,-0.031409,0.122818,792.007213,-567.289597,47.258281, + 0.998111,-0.015878,0.059345,793.520758,-561.475389,23.357838, + 0.991932,-0.031409,0.122818,792.007213,-567.289597,47.258281, + 0.998111,-0.007644,0.060955,793.543158,-559.332109,23.357838, + 0.991932,-0.01438,0.125953,792.007211,-561.87231,48.189795, + 0.991932,-0.01438,0.125953,792.007211,-561.87231,48.189795, + 0.966794,-0.061815,0.247969,787.130183,-573.195905,71.537315, + 0.991932,-0.031409,0.122818,792.007213,-567.289597,47.258281, + 0.966794,-0.061815,0.247969,787.130183,-573.195905,71.537315, + 0.991932,-0.01438,0.125953,792.007211,-561.87231,48.189795, + 0.966794,-0.027448,0.254079,787.130178,-564.415116,73.047189, + 0.966794,-0.027448,0.254079,787.130178,-564.415116,73.047189, + 0.924993,-0.091165,0.368885,779.024159,-578.899518,94.983127, + 0.966794,-0.061815,0.247969,787.130183,-573.195905,71.537315, + 0.924993,-0.091165,0.368885,779.024159,-578.899518,94.983127, + 0.966794,-0.027448,0.254079,787.130178,-564.415116,73.047189, + 0.924993,-0.040048,0.377867,779.024152,-566.870657,97.051514, + 0.924993,-0.040048,0.377867,779.024152,-566.870657,97.051514, + 0.867227,-0.118957,0.483493,767.829322,-584.301801,117.190256, + 0.924993,-0.091165,0.368885,779.024159,-578.899518,94.983127, + 0.867227,-0.118957,0.483493,767.829322,-584.301801,117.190256, + 0.924993,-0.040048,0.377867,779.024152,-566.870657,97.051514, + 0.867227,-0.051963,0.495193,767.829315,-569.19647,119.787648, + 0.277314,-0.016138,0.960644,649.884069,-549.087494,210.885907, + 0.381503,-0.093498,0.919627,673.957345,-577.587813,201.817466, + 0.401003,-0.015387,0.915947,673.957328,-548.951312,202.77988, + 0.381503,-0.093498,0.919627,673.957345,-577.587813,201.817466, + 0.277314,-0.016138,0.960644,649.884069,-549.087494,210.885907, + 0.256672,-0.097972,0.96152,649.884086,-578.414663,209.900281, + 0.148826,-0.01661,0.988724,624.95529,-549.169432,215.762941, + 0.256672,-0.097972,0.96152,649.884086,-578.414663,209.900281, + 0.277314,-0.016138,0.960644,649.884069,-549.087494,210.885907, + 0.256672,-0.097972,0.96152,649.884086,-578.414663,209.900281, + 0.148826,-0.01661,0.988724,624.95529,-549.169432,215.762941, + 0.127347,-0.100746,0.986728,624.955308,-578.912147,214.763349, + 0.867227,-0.301852,0.395982,767.829336,-625.572837,97.575321, + 0.794465,-0.430275,0.42859,753.73929,-652.105388,102.482801, + 0.867227,-0.352996,0.351156,767.829337,-637.125516,87.502929, + 0.794465,-0.430275,0.42859,753.73929,-652.105388,102.482801, + 0.867227,-0.301852,0.395982,767.829336,-625.572837,97.575321, + 0.794465,-0.367859,0.483224,753.739289,-638.371733,114.456714, + -0.41512,0.01512,-0.909641,439.690565,-549.114088,212.465226, + -0.307402,0,-0.95158,436.33557,-186.86272,213.722949, + -0.436021,0,-0.899936,439.690565,-186.86272,212.465226, + -0.307402,0,-0.95158,436.33557,-186.86272,213.722949, + -0.41512,0.01512,-0.909641,439.690565,-549.114088,212.465226, + -0.285329,0.015988,-0.958296,436.33557,-549.135218,213.722949, + 0.998111,-0.015878,0.059345,793.520758,-561.475389,23.357838, + 0.991932,-0.047852,0.117393,792.007216,-572.529419,45.597264, + 0.998111,-0.023817,0.056627,793.478048,-563.767069,23.357838, + 0.991932,-0.047852,0.117393,792.007216,-572.529419,45.597264, + 0.998111,-0.015878,0.059345,793.520758,-561.475389,23.357838, + 0.991932,-0.031409,0.122818,792.007213,-567.289597,47.258281, + -0,1,0,35.238106,-186.86272,1394.271064, + -0,1,0,18.722685,-186.86272,1315.222366, + -0,1,0,0.112465,-186.86272,1390.81149, + -0,1,0,18.722685,-186.86272,1315.222366, + -0,1,0,35.238106,-186.86272,1394.271064, + 0,1,0,56.126785,-186.86272,1315.222366, + 0,1,0,56.126785,-186.86272,1315.222366, + -0,1,0,35.238106,-186.86272,1394.271064, + -0,1,0,69.013887,-186.86272,1404.516835, + 0,1,0,56.126785,-186.86272,1315.222366, + -0,1,0,69.013887,-186.86272,1404.516835, + 0,1,0,56.126785,-186.86272,268.426375, + -0,1,0,100.155807,-186.86272,1753.526669, + 0,1,0,100.141826,-186.86272,1720.5641, + -0,1,0,69.327289,-186.86272,1737.048483, + 0,1,0,100.141826,-186.86272,1720.5641, + -0,1,0,100.155807,-186.86272,1753.526669, + 0,1,0,127.425692,-186.86272,1698.17281, + 0,1,0,127.425692,-186.86272,1698.17281, + -0,1,0,100.155807,-186.86272,1753.526669, + 0,1,0,127.443487,-186.86272,1775.921089, + 0,1,0,127.425692,-186.86272,1698.17281, + 0,1,0,127.443487,-186.86272,1775.921089, + 0,1,0,149.816983,-186.86272,1670.888943, + 0,1,0,149.816983,-186.86272,1670.888943, + 0,1,0,127.443487,-186.86272,1775.921089, + 0,1,0,149.837908,-186.86272,1803.208769, + 0,1,0,149.816983,-186.86272,1670.888943, + 0,1,0,149.837908,-186.86272,1803.208769, + 0,1,0,166.455213,-186.86272,1639.761005, + 0,1,0,166.455213,-186.86272,1639.761005, + 0,1,0,149.837908,-186.86272,1803.208769, + 0,1,0,166.478463,-186.86272,1834.341059, + 0,1,0,166.455213,-186.86272,1639.761005, + 0,1,0,166.478463,-186.86272,1834.341059, + 0,1,0,176.700984,-186.86272,1605.985223, + 0,1,0,176.700984,-186.86272,1605.985223, + 0,1,0,166.478463,-186.86272,1834.341059, + 0,1,0,176.725666,-186.86272,1868.121561, + 0,1,0,176.700984,-186.86272,1605.985223, + 0,1,0,176.725666,-186.86272,1868.121561, + 0,1,0,180.160558,-186.86272,1570.859583, + 0,1,0,180.160558,-186.86272,1570.859583, + 0,1,0,176.725666,-186.86272,1868.121561, + 0,1,0,180.185724,-186.86272,1903.252111, + 0,1,0,93.652471,-186.86272,2499.208064, + 0,1,0,46.868397,-186.86272,2125.502553, + 0,1,0,46.868397,-186.86272,2499.208064, + 0,1,0,46.868397,-186.86272,2125.502553, + 0,1,0,93.652471,-186.86272,2499.208064, + 0,1,0,69.023518,-186.86272,2069.618109, + 0,1,0,69.023518,-186.86272,2069.618109, + 0,1,0,93.652471,-186.86272,2499.208064, + 0,1,-0,100.155807,-186.86272,2052.977553, + 0,1,-0,100.155807,-186.86272,2052.977553, + 0,1,0,93.652471,-186.86272,2499.208064, + 0,1,-0,123.089852,-186.86272,2224.766097, + 0,1,-0,100.155807,-186.86272,2052.977553, + 0,1,-0,123.089852,-186.86272,2224.766097, + 0,1,-0,127.443487,-186.86272,2030.583133, + 0,1,-0,127.443487,-186.86272,2030.583133, + 0,1,-0,123.089852,-186.86272,2224.766097, + -0,1,-0,221.73981,-186.86272,2013.443961, + 0,1,-0,127.443487,-186.86272,2030.583133, + -0,1,-0,221.73981,-186.86272,2013.443961, + 0,1,0,149.837908,-186.86272,2003.295453, + 0,1,0,149.837908,-186.86272,2003.295453, + -0,1,-0,221.73981,-186.86272,2013.443961, + 0,1,0,166.478463,-186.86272,1972.163164, + 0,1,0,166.478463,-186.86272,1972.163164, + -0,1,-0,221.73981,-186.86272,2013.443961, + 0,1,0,176.725666,-186.86272,1938.382661, + 0,1,0,176.725666,-186.86272,1938.382661, + -0,1,-0,221.73981,-186.86272,2013.443961, + 0,1,0,180.185724,-186.86272,1903.252111, + -0,1,0,100.141826,-186.86272,1421.155065, + -0,1,0,93.530885,-186.86272,1315.222366, + -0,1,0,69.013887,-186.86272,1404.516835, + -0,1,0,93.530885,-186.86272,1315.222366, + -0,1,0,100.141826,-186.86272,1421.155065, + -0,1,0,221.73981,-186.86272,1435.598634, + -0,1,0,221.73981,-186.86272,1435.598634, + -0,1,0,100.141826,-186.86272,1421.155065, + 0,1,0,127.425692,-186.86272,1443.546356, + -0,1,0,221.73981,-186.86272,1435.598634, + 0,1,0,127.425692,-186.86272,1443.546356, + 0,1,0,149.816983,-186.86272,1470.830222, + -0,1,0,221.73981,-186.86272,1435.598634, + 0,1,0,149.816983,-186.86272,1470.830222, + 0,1,0,166.455213,-186.86272,1501.958161, + -0,1,0,221.73981,-186.86272,1435.598634, + 0,1,0,166.455213,-186.86272,1501.958161, + 0,1,0,176.700984,-186.86272,1535.733942, + -0,1,0,221.73981,-186.86272,1435.598634, + 0,1,0,176.700984,-186.86272,1535.733942, + 0,1,0,180.160558,-186.86272,1570.859583, + -0,1,0,221.73981,-186.86272,1435.598634, + 0,1,0,180.160558,-186.86272,1570.859583, + 0,1,0,180.185724,-186.86272,1903.252111, + -0,1,0,221.73981,-186.86272,1435.598634, + 0,1,0,180.185724,-186.86272,1903.252111, + -0,1,-0,221.73981,-186.86272,2013.443961, + -0,1,-0,0.016247,-186.86272,214.795487, + -0,1,-0,93.530885,-186.86272,242.726639, + 0,1,-0,429.26772,-186.86272,214.795487, + -0,1,-0,93.530885,-186.86272,242.726639, + -0,1,-0,0.016247,-186.86272,214.795487, + -0,1,-0,18.722685,-186.86272,268.426375, + -0,1,-0,18.722685,-186.86272,268.426375, + -0,1,-0,0.016247,-186.86272,214.795487, + -0,1,0,0.112465,-186.86272,1390.81149, + -0,1,-0,18.722685,-186.86272,268.426375, + -0,1,0,0.112465,-186.86272,1390.81149, + -0,1,0,18.722685,-186.86272,1315.222366, + -0,1,-0,93.530885,-186.86272,242.726639, + -0,1,-0,18.722685,-186.86272,268.426375, + 0,1,0,56.126785,-186.86272,268.426375, + -0,1,-0,93.530885,-186.86272,242.726639, + 0,1,0,56.126785,-186.86272,268.426375, + -0,1,0,69.013887,-186.86272,1404.516835, + -0,1,-0,93.530885,-186.86272,242.726639, + -0,1,0,69.013887,-186.86272,1404.516835, + -0,1,0,93.530885,-186.86272,1315.222366, + 0,1,-0,429.26772,-186.86272,214.795487, + -0,1,-0,93.530885,-186.86272,242.726639, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,-0,429.26772,-186.86272,214.795487, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,0,432.838898,-186.86272,214.504709, + 0,1,0,432.838898,-186.86272,214.504709, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,0,436.33557,-186.86272,213.722949, + 0,1,0,436.33557,-186.86272,213.722949, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,0,439.690565,-186.86272,212.465226, + 0,1,0,439.690565,-186.86272,212.465226, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,0,442.839435,-186.86272,210.7557, + 0,1,0,442.839435,-186.86272,210.7557, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,0,445.72169,-186.86272,208.627211, + 0,1,0,445.72169,-186.86272,208.627211, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,0,448.281963,-186.86272,206.120647, + 0,1,0,448.281963,-186.86272,206.120647, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,0,450.471071,-186.86272,203.284158, + 0,1,0,450.471071,-186.86272,203.284158, + 0,1,-0,448.31772,-186.86272,242.726639, + 0,1,0,451.683281,-186.86272,242.65094, + 0,1,0,450.471071,-186.86272,203.284158, + 0,1,0,451.683281,-186.86272,242.65094, + 0,1,0,452.246961,-186.86272,200.172234, + 0,1,0,452.246961,-186.86272,200.172234, + 0,1,0,451.683281,-186.86272,242.65094, + 0,1,0,455.00605,-186.86272,242.110623, + 0,1,0,452.246961,-186.86272,200.172234, + 0,1,0,455.00605,-186.86272,242.110623, + 0,1,0,453.575519,-186.86272,196.844653, + 0,1,0,453.575519,-186.86272,196.844653, + 0,1,0,455.00605,-186.86272,242.110623, + 0,1,0,454.431224,-186.86272,193.365338, + 0,1,0,454.431224,-186.86272,193.365338, + 0,1,0,455.00605,-186.86272,242.110623, + 0,1,0,454.797637,-186.86272,189.801127, + 0,1,0,454.797637,-186.86272,189.801127, + 0,1,0,602.133251,-186.86272,186.220487, + 0,1,0,454.66772,-186.86272,186.220487, + 0,1,0,602.133251,-186.86272,186.220487, + 0,1,0,454.797637,-186.86272,189.801127, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,454.797637,-186.86272,189.801127, + 0,1,0,455.00605,-186.86272,242.110623, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,455.00605,-186.86272,242.110623, + 0,1,0,458.222196,-186.86272,241.116069, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,458.222196,-186.86272,241.116069, + 0,1,0,461.269937,-186.86272,239.686382, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,461.269937,-186.86272,239.686382, + 0,1,0,464.090728,-186.86272,237.849027, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,464.090728,-186.86272,237.849027, + 0,1,0,466.63038,-186.86272,235.639299, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,466.63038,-186.86272,235.639299, + 0,1,0,468.840108,-186.86272,233.099647, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,468.840108,-186.86272,233.099647, + 0,1,0,470.677463,-186.86272,230.278856, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,470.677463,-186.86272,230.278856, + 0,1,0,472.10715,-186.86272,227.231115, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,472.10715,-186.86272,227.231115, + 0,1,0,473.101704,-186.86272,224.014969, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,473.101704,-186.86272,224.014969, + 0,1,0,473.642021,-186.86272,220.6922, + 0,1,0,602.133251,-186.86272,186.220487, + 0,1,0,473.71772,-186.86272,217.326639, + 0,1,0,599.602099,-186.86272,217.326639, + 0,1,0,602.133251,-186.86272,186.220487, + 0,1,0,599.602099,-186.86272,217.326639, + 0,1,0,624.95529,-186.86272,215.762941, + 0,1,0,602.133251,-186.86272,186.220487, + 0,1,0,624.95529,-186.86272,215.762941, + 0,1,0,623.546317,-186.86272,185.255996, + 0,1,0,623.546317,-186.86272,185.255996, + 0,1,0,624.95529,-186.86272,215.762941, + 0,1,0,644.636215,-186.86272,181.426394, + 0,1,0,644.636215,-186.86272,181.426394, + 0,1,0,624.95529,-186.86272,215.762941, + 0,1,0,649.884069,-186.86272,210.885907, + 0,1,0,644.636215,-186.86272,181.426394, + 0,1,0,649.884069,-186.86272,210.885907, + 0,1,0,665.021343,-186.86272,174.800973, + 0,1,0,665.021343,-186.86272,174.800973, + 0,1,0,649.884069,-186.86272,210.885907, + 0,1,0,673.957328,-186.86272,202.77988, + 0,1,0,665.021343,-186.86272,174.800973, + 0,1,0,673.957328,-186.86272,202.77988, + 0,1,0,684.332852,-186.86272,165.499615, + 0,1,0,684.332852,-186.86272,165.499615, + 0,1,0,673.957328,-186.86272,202.77988, + 0,1,0,696.758754,-186.86272,191.585041, + 0,1,0,684.332852,-186.86272,165.499615, + 0,1,0,696.758754,-186.86272,191.585041, + 0,1,0,702.221319,-186.86272,153.690618, + 0,1,0,702.221319,-186.86272,153.690618, + 0,1,0,696.758754,-186.86272,191.585041, + 0,1,0,717.89403,-186.86272,177.494989, + 0,1,0,702.221319,-186.86272,153.690618, + 0,1,0,717.89403,-186.86272,177.494989, + 0,1,0,718.363068,-186.86272,139.587655, + 0,1,0,718.363068,-186.86272,139.587655, + 0,1,0,717.89403,-186.86272,177.494989, + 0,1,0,736.997652,-186.86272,160.753391, + 0,1,0,718.363068,-186.86272,139.587655, + 0,1,0,736.997652,-186.86272,160.753391, + 0,1,0,732.466031,-186.86272,123.445905, + 0,1,0,732.466031,-186.86272,123.445905, + 0,1,0,736.997652,-186.86272,160.753391, + 0,1,0,744.275028,-186.86272,105.557439, + 0,1,0,744.275028,-186.86272,105.557439, + 0,1,0,736.997652,-186.86272,160.753391, + 0,1,0,753.73925,-186.86272,141.649769, + 0,1,0,744.275028,-186.86272,105.557439, + 0,1,0,753.73925,-186.86272,141.649769, + 0,1,0,753.576386,-186.86272,86.24593, + 0,1,0,753.576386,-186.86272,86.24593, + 0,1,0,753.73925,-186.86272,141.649769, + 0,1,0,760.201807,-186.86272,65.860802, + 0,1,0,760.201807,-186.86272,65.860802, + 0,1,0,753.73925,-186.86272,141.649769, + 0,1,0,767.829302,-186.86272,120.514493, + 0,1,0,760.201807,-186.86272,65.860802, + 0,1,0,767.829302,-186.86272,120.514493, + 0,1,0,764.031409,-186.86272,44.770904, + 0,1,0,764.031409,-186.86272,44.770904, + 0,1,0,767.829302,-186.86272,120.514493, + 0,1,0,764.9959,-186.86272,23.357838, + 0,1,0,764.9959,-186.86272,23.357838, + 0,1,0,767.829302,-186.86272,120.514493, + 0,1,0,793.5709,-186.86272,23.357838, + 0,1,0,793.5709,-186.86272,23.357838, + 0,1,0,767.829302,-186.86272,120.514493, + 0,1,0,779.024141,-186.86272,97.713067, + 0,1,0,793.5709,-186.86272,23.357838, + 0,1,0,779.024141,-186.86272,97.713067, + 0,1,0,787.130168,-186.86272,73.639808, + 0,1,0,793.5709,-186.86272,23.357838, + 0,1,0,787.130168,-186.86272,73.639808, + 0,1,0,792.007202,-186.86272,48.711029, + 0,1,0,0.179984,-186.86272,2125.502553, + 0,1,0,35.243015,-186.86272,2079.865312, + 0,1,0,0.112465,-186.86272,2083.325369, + 0,1,0,35.243015,-186.86272,2079.865312, + 0,1,0,0.179984,-186.86272,2125.502553, + 0,1,0,46.868397,-186.86272,2125.502553, + 0,1,0,35.243015,-186.86272,2079.865312, + 0,1,0,46.868397,-186.86272,2125.502553, + 0,1,0,69.023518,-186.86272,2069.618109, + -0.935939,0,-0.352162,166.478463,-280.29408,1972.163164, + -0.973856,0,-0.227168,176.725666,-186.86272,1938.382661, + -0.986659,0,-0.162803,176.725666,-280.29408,1938.382661, + -0.973856,0,-0.227168,176.725666,-186.86272,1938.382661, + -0.935939,0,-0.352162,166.478463,-280.29408,1972.163164, + -0.910825,0,-0.412792,166.478463,-186.86272,1972.163164, + -0.098017,0,0.995185,0.112465,-280.29408,1390.81149, + -0.162803,0,0.986659,35.238106,-186.86272,1394.271064, + -0.098017,0,0.995185,0.112465,-186.86272,1390.81149, + -0.162803,0,0.986659,35.238106,-186.86272,1394.271064, + -0.098017,0,0.995185,0.112465,-280.29408,1390.81149, + -0.227168,0,0.973856,35.238106,-280.29408,1394.271064, + -0.471397,0,0.881921,69.327289,-280.29408,1737.048483, + -0.527988,0,0.849252,100.155807,-186.86272,1753.526669, + -0.471397,0,0.881921,69.327289,-186.86272,1737.048483, + -0.527988,0,0.849252,100.155807,-186.86272,1753.526669, + -0.471397,0,0.881921,69.327289,-280.29408,1737.048483, + -0.582554,0,0.812792,100.155807,-280.29408,1753.526669, + -0.528184,0,-0.84913,100.141826,-280.29408,1720.5641, + -0.471701,0,-0.881759,69.327289,-186.86272,1737.048483, + -0.582647,0,-0.812725,100.141826,-186.86272,1720.5641, + -0.471701,0,-0.881759,69.327289,-186.86272,1737.048483, + -0.528184,0,-0.84913,100.141826,-280.29408,1720.5641, + -0.471701,0,-0.881759,69.327289,-280.29408,1737.048483, + -0.999462,0,0.032813,180.185724,-280.29408,1903.252111, + -0.986659,0,0.162803,176.725666,-186.86272,1868.121561, + -0.973856,0,0.227168,176.725666,-280.29408,1868.121561, + -0.986659,0,0.162803,176.725666,-186.86272,1868.121561, + -0.999462,0,0.032813,180.185724,-280.29408,1903.252111, + -0.999462,0,-0.032813,180.185724,-186.86272,1903.252111, + -0.973856,0,0.227168,176.725666,-280.29408,1868.121561, + -0.935939,0,0.352162,166.478463,-186.86272,1834.341059, + -0.910825,0,0.412792,166.478463,-280.29408,1834.341059, + -0.935939,0,0.352162,166.478463,-186.86272,1834.341059, + -0.973856,0,0.227168,176.725666,-280.29408,1868.121561, + -0.986659,0,0.162803,176.725666,-186.86272,1868.121561, + -0.910825,0,0.412792,166.478463,-280.29408,1834.341059, + -0.849252,0,0.527988,149.837908,-186.86272,1803.208769, + -0.812792,0,0.582554,149.837908,-280.29408,1803.208769, + -0.849252,0,0.527988,149.837908,-186.86272,1803.208769, + -0.910825,0,0.412792,166.478463,-280.29408,1834.341059, + -0.935939,0,0.352162,166.478463,-186.86272,1834.341059, + -0.748179,0.326101,-0.577828,448.282012,-654.795099,180.782109, + -0.832687,0.204213,-0.514714,450.471112,-629.324619,189.746946, + -0.832687,0.272446,-0.482085,450.47112,-653.402151,178.303588, + -0.832687,0.204213,-0.514714,450.471112,-629.324619,189.746946, + -0.748179,0.326101,-0.577828,448.282012,-654.795099,180.782109, + -0.748179,0.244321,-0.616875,448.282005,-630.366836,192.392159, + 0.256672,-0.961442,0.098738,649.884086,-759.522868,28.792076, + 0.127347,-0.963706,0.234635,624.955322,-759.578731,57.246228, + 0.127347,-0.98669,0.101126,624.955308,-764.385936,29.28956, + 0.127347,-0.963706,0.234635,624.955322,-759.578731,57.246228, + 0.256672,-0.961442,0.098738,649.884086,-759.522868,28.792076, + 0.256673,-0.939019,0.228829,649.8841,-754.828812,56.090715, + -0.747451,0.007439,-0.664276,448.281963,-549.007501,206.120647, + -0.819027,0,-0.573755,450.471071,-186.86272,203.284158, + -0.832126,0.009639,-0.554503,450.471071,-548.95985,203.284158, + -0.819027,0,-0.573755,450.471071,-186.86272,203.284158, + -0.747451,0.007439,-0.664276,448.281963,-549.007501,206.120647, + -0.747409,0,-0.664364,448.281963,-186.86272,206.120647, + -0.493603,0.014422,-0.869568,684.332852,-548.325029,165.499615, + -0.393115,0,-0.919489,665.021343,-186.86272,174.800973, + -0.512963,0,-0.858411,684.332852,-186.86272,165.499615, + -0.393115,0,-0.919489,665.021343,-186.86272,174.800973, + -0.493603,0.014422,-0.869568,684.332852,-548.325029,165.499615, + -0.372406,0.015448,-0.927941,665.021343,-548.48129,174.800973, + 0.030866,-0.994332,0.101738,599.602117,-765.945157,29.449075, + 0,-0.976801,0.214147,473.717752,-761.101674,57.616782, + 0,-0.996871,0.079045,473.717738,-765.945156,29.449145, + 0,-0.976801,0.214147,473.717752,-761.101674,57.616782, + 0.030866,-0.994332,0.101738,599.602117,-765.945157,29.449075, + 0.030867,-0.971194,0.236282,599.602131,-761.101673,57.616723, + -0.707841,0.243878,-0.662936,718.363098,-605.920401,130.345733, + -0.796291,0.144172,-0.587481,732.466052,-584.996349,120.045264, + -0.796291,0.222882,-0.562356,732.466058,-599.989405,115.292483, + -0.796291,0.144172,-0.587481,732.466052,-584.996349,120.045264, + -0.707841,0.243878,-0.662936,718.363098,-605.920401,130.345733, + -0.707841,0.151267,-0.689985,718.363091,-588.820775,135.766294, + -1,0,0,46.868397,-280.29408,2499.208064, + -1,0,0,46.868397,-186.86272,2125.502553, + -1,0,0,46.868397,-280.29408,2125.502553, + -1,0,0,46.868397,-186.86272,2125.502553, + -1,0,0,46.868397,-280.29408,2499.208064, + -1,0,0,46.868397,-186.86272,2499.208064, + 0.401003,-0.015387,0.915947,673.957328,-548.951312,202.77988, + 0.499663,-0.087405,0.861799,696.75877,-576.445897,190.654684, + 0.517753,-0.01437,0.85541,696.758754,-548.76324,191.585041, + 0.499663,-0.087405,0.861799,696.75877,-576.445897,190.654684, + 0.401003,-0.015387,0.915947,673.957328,-548.951312,202.77988, + 0.381503,-0.093498,0.919627,673.957345,-577.587813,201.817466, + -0.285905,0.578577,-0.763876,436.335626,-682.017175,172.023802, + -0.150375,0.484157,-0.861963,432.838949,-658.912362,188.108094, + -0.285905,0.46909,-0.835591,436.335621,-658.528453,187.424994, + -0.150375,0.484157,-0.861963,432.838949,-658.912362,188.108094, + -0.285905,0.578577,-0.763876,436.335626,-682.017175,172.023802, + -0.150375,0.597097,-0.787948,432.838954,-682.490586,172.648217, + 0.339245,-0.940167,0.031597,458.22221,-789.952733,23.357838, + 0.229024,-0.96833,0.09942,455.006069,-790.65817,31.977188, + 0.20592,-0.978017,0.032869,455.006064,-790.947849,23.357838, + 0.229024,-0.96833,0.09942,455.006069,-790.65817,31.977188, + 0.339245,-0.940167,0.031597,458.22221,-789.952733,23.357838, + 0.361665,-0.92741,0.095445,458.222215,-789.666464,31.875739, + -0,-0,1,764.9959,-186.86272,23.357838, + -0,-0,1,847.545902,56.185652,23.357838, + -0,-0,1,806.270901,56.185652,23.357838, + -0,-0,1,847.545902,56.185652,23.357838, + -0,-0,1,764.9959,-186.86272,23.357838, + -0,-0,1,793.5709,-186.86272,23.357838, + -0,-0,1,793.5709,-186.86272,23.357838, + -0,-0,1,847.545902,-563.749227,23.357838, + -0,-0,1,847.545902,56.185652,23.357838, + -0,-0,1,847.545902,-563.749227,23.357838, + -0,-0,1,793.5709,-186.86272,23.357838, + -0,-0,1,793.5709,-545.937124,23.357838, + -0,-0,1,847.545902,-563.749227,23.357838, + -0,-0,1,793.5709,-545.937124,23.357838, + -0,-0,1,793.543158,-559.332109,23.357838, + -0,-0,1,847.545902,-563.749227,23.357838, + -0,-0,1,793.543158,-559.332109,23.357838, + -0,-0,1,793.520758,-561.475389,23.357838, + -0,-0,1,847.545902,-563.749227,23.357838, + -0,-0,1,793.520758,-561.475389,23.357838, + -0,-0,1,793.478048,-563.767069,23.357838, + -0,-0,1,847.545902,-563.749227,23.357838, + -0,-0,1,793.478048,-563.767069,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,793.478048,-563.767069,23.357838, + -0,-0,1,793.410423,-566.321374,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,793.410423,-566.321374,23.357838, + -0,-0,1,793.309566,-569.30368,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,793.309566,-569.30368,23.357838, + -0,-0,1,793.160542,-572.980425,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,793.160542,-572.980425,23.357838, + -0,-0,1,792.935095,-577.829952,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,792.935095,-577.829952,23.357838, + -0,-0,1,792.574093,-584.829111,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,792.574093,-584.829111,23.357838, + -0,-0,1,792.007216,-595.005501,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,792.007216,-595.005501,23.357838, + -0,-0,1,791.767078,-596.364536,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,-0,1,791.767078,-596.364536,23.357838, + -0,0,1,787.308111,-620.274132,23.357838, + -0,-0,1,843.130723,-608.452917,23.357838, + -0,0,1,787.308111,-620.274132,23.357838, + -0,0,1,838.782877,-630.311015,23.357838, + -0,0,1,838.782877,-630.311015,23.357838, + -0,0,1,787.308111,-620.274132,23.357838, + -0,0,1,787.130183,-621.196954,23.357838, + -0,0,1,838.782877,-630.311015,23.357838, + -0,0,1,787.130183,-621.196954,23.357838, + -0,0,1,779.024156,-645.623514,23.357838, + -0,0,1,838.782877,-630.311015,23.357838, + -0,0,1,779.024156,-645.623514,23.357838, + -0,0,1,827.969621,-662.165838,23.357838, + -0,0,1,827.969621,-662.165838,23.357838, + -0,0,1,779.024156,-645.623514,23.357838, + -0,0,1,767.829317,-668.759577,23.357838, + -0,0,1,827.969621,-662.165838,23.357838, + -0,0,1,767.829317,-668.759577,23.357838, + -0,0,1,813.090986,-692.336727,23.357838, + -0,0,1,813.090986,-692.336727,23.357838, + -0,0,1,767.829317,-668.759577,23.357838, + -0,0,1,753.739265,-690.205036,23.357838, + -0,0,1,813.090986,-692.336727,23.357838, + -0,0,1,753.739265,-690.205036,23.357838, + -0,0,1,739.751559,-706.400475,23.357838, + -0,0,1,813.090986,-692.336727,23.357838, + -0,0,1,739.751559,-706.400475,23.357838, + -0,0,1,794.401548,-720.307447,23.357838, + -0,0,1,794.401548,-720.307447,23.357838, + -0,0,1,739.751559,-706.400475,23.357838, + -0,0,1,736.997667,-709.544681,23.357838, + -0,0,1,794.401548,-720.307447,23.357838, + -0,0,1,736.997667,-709.544681,23.357838, + -0,0,1,717.894045,-726.295731,23.357838, + -0,0,1,794.401548,-720.307447,23.357838, + -0,0,1,717.894045,-726.295731,23.357838, + -0,0,1,772.221089,-745.599413,23.357838, + -0,0,1,772.221089,-745.599413,23.357838, + -0,0,1,717.894045,-726.295731,23.357838, + -0,0,1,696.758768,-740.393738,23.357838, + -0,0,1,772.221089,-745.599413,23.357838, + -0,0,1,696.758768,-740.393738,23.357838, + -0,0,1,673.957342,-751.594898,23.357838, + -0,0,1,772.221089,-745.599413,23.357838, + -0,0,1,673.957342,-751.594898,23.357838, + -0,0,1,746.929123,-767.779872,23.357838, + -0,0,1,746.929123,-767.779872,23.357838, + -0,0,1,673.957342,-751.594898,23.357838, + -0,0,1,649.884083,-759.705502,23.357838, + -0,0,1,746.929123,-767.779872,23.357838, + -0,0,1,649.884083,-759.705502,23.357838, + -0,0,1,624.955304,-764.585289,23.357838, + -0,0,1,746.929123,-767.779872,23.357838, + -0,0,1,624.955304,-764.585289,23.357838, + -0,0,1,599.602113,-766.149871,23.357838, + -0,0,1,746.929123,-767.779872,23.357838, + -0,0,1,599.602113,-766.149871,23.357838, + -0,0,1,473.717734,-766.149872,23.357838, + -0,0,1,746.929123,-767.779872,23.357838, + -0,0,1,473.717734,-766.149872,23.357838, + -0,0,1,473.642035,-769.517334,23.357838, + -0,0,1,746.929123,-767.779872,23.357838, + -0,0,1,473.642035,-769.517334,23.357838, + -0,0,1,718.958402,-786.46931,23.357838, + -0,0,1,718.958402,-786.46931,23.357838, + -0,0,1,473.642035,-769.517334,23.357838, + -0,-0,1,473.101718,-772.841978,23.357838, + -0,0,1,718.958402,-786.46931,23.357838, + -0,-0,1,473.101718,-772.841978,23.357838, + -0,-0,1,472.107164,-776.05994,23.357838, + -0,0,1,718.958402,-786.46931,23.357838, + -0,-0,1,472.107164,-776.05994,23.357838, + -0,0,1,470.677477,-779.109402,23.357838, + -0,0,1,718.958402,-786.46931,23.357838, + -0,0,1,470.677477,-779.109402,23.357838, + -0,0,1,468.840122,-781.931785,23.357838, + -0,0,1,718.958402,-786.46931,23.357838, + -0,0,1,468.840122,-781.931785,23.357838, + -0,0,1,466.630394,-784.472872,23.357838, + -0,0,1,718.958402,-786.46931,23.357838, + -0,0,1,466.630394,-784.472872,23.357838, + -0,0,1,464.090742,-786.683847,23.357838, + -0,0,1,718.958402,-786.46931,23.357838, + -0,0,1,464.090742,-786.683847,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + -0,0,1,464.090742,-786.683847,23.357838, + -0,0,1,461.269951,-788.52224,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + -0,0,1,461.269951,-788.52224,23.357838, + -0,0,1,458.22221,-789.952733,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + -0,0,1,458.22221,-789.952733,23.357838, + -0,0,1,455.006064,-790.947849,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + -0,0,1,455.006064,-790.947849,23.357838, + -0,0,1,451.683295,-791.488471,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + -0,0,1,451.683295,-791.488471,23.357838, + -0,0,1,448.317734,-791.564213,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + -0,0,1,448.317734,-791.564213,23.357838, + 0,0,1,0.00089,-791.564218,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + 0,0,1,0.00089,-791.564218,23.357838, + 0,0,1,0.000468,-820.924227,23.357838, + -0,0,1,688.787514,-801.347945,23.357838, + 0,0,1,0.000468,-820.924227,23.357838, + 0,0,1,656.93269,-812.161201,23.357838, + 0,0,1,656.93269,-812.161201,23.357838, + 0,0,1,0.000468,-820.924227,23.357838, + 0,0,1,623.938976,-818.724059,23.357838, + 0,0,1,623.938976,-818.724059,23.357838, + 0,0,1,0.000468,-820.924227,23.357838, + 0,0,1,590.370902,-820.924227,23.357838, + 0,-0.509694,0.860356,0.000057,-672.771767,212.768417, + 0.011271,-0.604116,0.796817,448.317783,-699.580941,195.189934, + 0.011271,-0.489901,0.871705,448.317778,-672.771628,212.768386, + 0.011271,-0.604116,0.796817,448.317783,-699.580941,195.189934, + 0,-0.509694,0.860356,0.000057,-672.771767,212.768417, + 0,-0.622177,0.782877,0.000063,-699.581047,195.189986, + -0.649152,0.262621,-0.713885,445.721732,-631.287828,194.729696, + -0.741547,0.152765,-0.653277,448.281994,-604.584377,200.565168, + -0.748179,0.244321,-0.616875,448.282005,-630.366836,192.392159, + -0.741547,0.152765,-0.653277,448.281994,-604.584377,200.565168, + -0.649152,0.262621,-0.713885,445.721732,-631.287828,194.729696, + -0.638578,0.17117,-0.75028,445.721721,-605.178251,203.006401, + -0.415875,0.548909,-0.725084,439.690621,-681.255534,171.01922, + -0.285905,0.46909,-0.835591,436.335621,-658.528453,187.424994, + -0.415875,0.444984,-0.793119,439.690616,-657.910808,186.325996, + -0.285905,0.46909,-0.835591,436.335621,-658.528453,187.424994, + -0.415875,0.548909,-0.725084,439.690621,-681.255534,171.01922, + -0.285905,0.578577,-0.763876,436.335626,-682.017175,172.023802, + 0.973657,-0.212704,0.08215,473.101749,-758.702385,87.31918, + 0.932875,-0.350339,0.083707,472.107183,-770.747999,59.963422, + 0.973657,-0.221914,0.0524,473.101737,-767.615679,59.201429, + 0.932875,-0.350339,0.083707,472.107183,-770.747999,59.963422, + 0.973657,-0.212704,0.08215,473.101749,-758.702385,87.31918, + 0.932875,-0.335664,0.130666,472.107195,-761.701654,88.500895, + -0.649152,0.525457,-0.549997,445.721747,-699.576473,149.953886, + -0.748179,0.401798,-0.528002,448.282017,-677.413444,165.951609, + -0.748179,0.469999,-0.468325,448.282019,-697.799917,148.177329, + -0.748179,0.401798,-0.528002,448.282017,-677.413444,165.951609, + -0.649152,0.525457,-0.549997,445.721747,-699.576473,149.953886, + -0.649152,0.44561,-0.616469,445.721745,-678.931346,167.953679, + 0.995804,-0.065815,0.063588,473.64208,-708.127668,158.505081, + 0.973657,-0.182625,0.136528,473.101763,-729.866936,138.627118, + 0.995804,-0.073866,0.054027,473.642079,-727.212939,136.614949, + 0.973657,-0.182625,0.136528,473.101763,-729.866936,138.627118, + 0.995804,-0.065815,0.063588,473.64208,-708.127668,158.505081, + 0.973657,-0.162317,0.16014,473.101765,-710.482719,160.860131, + -0.9698,0.148537,-0.193454,760.201828,-592.476195,53.921748, + -0.993727,0.056116,-0.096737,764.031424,-575.55911,39.794854, + -0.993727,0.068775,-0.088188,764.031425,-579.704781,37.076602, + -0.993727,0.056116,-0.096737,764.031424,-575.55911,39.794854, + -0.9698,0.148537,-0.193454,760.201828,-592.476195,53.921748, + -0.9698,0.12079,-0.21189,760.201826,-585.915972,58.223185, + -0.870211,0.349319,-0.347431,744.275059,-626.524536,76.901948, + -0.928388,0.225646,-0.295263,753.576412,-604.820821,70.203974, + -0.928388,0.263776,-0.261761,753.576413,-612.83728,63.214693, + -0.928388,0.225646,-0.295263,753.576412,-604.820821,70.203974, + -0.870211,0.349319,-0.347431,744.275059,-626.524536,76.901948, + -0.870211,0.298718,-0.391791,744.275058,-616.515297,85.628667, + -0.869747,0.008617,-0.493422,744.275028,-547.318028,105.557439, + -0.919489,0,-0.393115,753.576386,-186.86272,86.24593, + -0.928106,0.006604,-0.372257,753.576386,-546.993607,86.24593, + -0.919489,0,-0.393115,753.576386,-186.86272,86.24593, + -0.869747,0.008617,-0.493422,744.275028,-547.318028,105.557439, + -0.858411,0,-0.512963,744.275028,-186.86272,105.557439, + -0.373111,0.218748,-0.901631,665.02137,-597.163793,170.061811, + -0.244971,0.09829,-0.964535,644.636231,-575.409716,180.525125, + -0.373111,0.093846,-0.923028,665.021359,-574.733894,173.918677, + -0.244971,0.09829,-0.964535,644.636231,-575.409716,180.525125, + -0.373111,0.218748,-0.901631,665.02137,-597.163793,170.061811, + -0.244971,0.228806,-0.942145,644.636243,-598.733545,176.514546, + 0.991932,-0.031409,0.122818,792.007213,-567.289597,47.258281, + 0.966794,-0.095028,0.237232,787.130187,-581.689044,68.845, + 0.991932,-0.047852,0.117393,792.007216,-572.529419,45.597264, + 0.966794,-0.095028,0.237232,787.130187,-581.689044,68.845, + 0.991932,-0.031409,0.122818,792.007213,-567.289597,47.258281, + 0.966794,-0.061815,0.247969,787.130183,-573.195905,71.537315, + 0.091928,-0.101189,0.990611,451.683301,-581.654891,241.574352, + 0.229025,-0.229739,0.945922,455.006085,-613.111378,235.617099, + 0.229024,-0.098699,0.968404,455.006069,-581.599776,241.035583, + 0.229025,-0.229739,0.945922,455.006085,-613.111378,235.617099, + 0.091928,-0.101189,0.990611,451.683301,-581.654891,241.574352, + 0.091928,-0.235232,0.967582,451.683317,-613.239395,236.143333, + 0.01127,-0.101755,0.994746,448.317739,-581.662615,241.649835, + 0.091928,-0.235232,0.967582,451.683317,-613.239395,236.143333, + 0.091928,-0.101189,0.990611,451.683301,-581.654891,241.574352, + 0.091928,-0.235232,0.967582,451.683317,-613.239395,236.143333, + 0.01127,-0.101755,0.994746,448.317739,-581.662615,241.649835, + 0.01127,-0.236356,0.971601,448.317755,-613.257332,236.21706, + -0.494423,0.204724,-0.844769,684.332878,-594.960039,161.002883, + -0.373111,0.093846,-0.923028,665.021359,-574.733894,173.918677, + -0.494423,0.087701,-0.864786,684.332867,-573.78512,164.643953, + -0.373111,0.093846,-0.923028,665.021359,-574.733894,173.918677, + -0.494423,0.204724,-0.844769,684.332878,-594.960039,161.002883, + -0.373111,0.218748,-0.901631,665.02137,-597.163793,170.061811, + 0,-0.124431,0.992228,0.000019,-581.662862,241.649831, + 0.01127,-0.236356,0.971601,448.317755,-613.257332,236.21706, + 0.01127,-0.101755,0.994746,448.317739,-581.662615,241.649835, + 0.01127,-0.236356,0.971601,448.317755,-613.257332,236.21706, + 0,-0.124431,0.992228,0.000019,-581.662862,241.649831, + 0,-0.258478,0.966017,0.000035,-613.257542,236.217062, + 0.995804,-0.023158,0.088537,473.642053,-608.036762,214.756927, + 0.973657,-0.085015,0.211575,473.101749,-636.941768,209.079797, + 0.995804,-0.035007,0.084556,473.642065,-635.720877,205.981096, + 0.973657,-0.085015,0.211575,473.101749,-636.941768,209.079797, + 0.995804,-0.023158,0.088537,473.642053,-608.036762,214.756927, + 0.973657,-0.055392,0.221186,473.101737,-608.824017,217.993091, + 0.973657,-0.138981,0.180764,473.101763,-688.249706,180.244348, + 0.932875,-0.255741,0.253655,472.107211,-712.762199,163.139612, + 0.973657,-0.162317,0.16014,473.101765,-710.482719,160.860131, + 0.932875,-0.255741,0.253655,472.107211,-712.762199,163.139612, + 0.973657,-0.138981,0.180764,473.101763,-688.249706,180.244348, + 0.932875,-0.218791,0.286137,472.107209,-690.197308,182.813182, + 0.932875,-0.218791,0.286137,472.107209,-690.197308,182.813182, + 0.874212,-0.344308,0.342352,470.677525,-714.922322,165.299734, + 0.932875,-0.255741,0.253655,472.107211,-712.762199,163.139612, + 0.874212,-0.344308,0.342352,470.677525,-714.922322,165.299734, + 0.932875,-0.218791,0.286137,472.107209,-690.197308,182.813182, + 0.874212,-0.294445,0.386077,470.677524,-692.04293,185.247507, + -0.952384,0.113168,-0.283121,453.575559,-626.95854,183.741681, + -0.985345,0.041831,-0.165366,454.431253,-601.562294,188.142314, + -0.985345,0.063975,-0.158123,454.431263,-625.680129,180.496989, + -0.985345,0.041831,-0.165366,454.431253,-601.562294,188.142314, + -0.952384,0.113168,-0.283121,453.575559,-626.95854,183.741681, + -0.952384,0.073533,-0.295901,453.575549,-602.386639,191.530944, + 0.01127,-0.236356,0.971601,448.317755,-613.257332,236.21706, + 0.091928,-0.364886,0.926503,451.68333,-643.789223,226.459074, + 0.091928,-0.235232,0.967582,451.683317,-613.239395,236.143333, + 0.091928,-0.364886,0.926503,451.68333,-643.789223,226.459074, + 0.01127,-0.236356,0.971601,448.317755,-613.257332,236.21706, + 0.011271,-0.366548,0.930331,448.317768,-643.817038,226.529669, + 0.609101,-0.186578,0.770833,717.894058,-597.802054,172.685609, + 0.707841,-0.243878,0.662936,736.997686,-613.697356,150.084182, + 0.707841,-0.151267,0.689985,736.997677,-593.835505,156.380365, + 0.707841,-0.243878,0.662936,736.997686,-613.697356,150.084182, + 0.609101,-0.186578,0.770833,717.894058,-597.802054,172.685609, + 0.609101,-0.289877,0.738219,717.894067,-619.848758,165.69683, + -0.040706,0.236142,-0.970866,429.267752,-606.639691,209.013907, + -0,0.124431,-0.992228,0.016265,-578.81381,213.79866, + -0.040706,0.101643,-0.993988,429.267738,-578.813573,213.798664, + -0,0.124431,-0.992228,0.016265,-578.81381,213.79866, + -0.040706,0.236142,-0.970866,429.267752,-606.639691,209.013907, + -0,0.258478,-0.966017,0.016279,-606.639892,209.013909, + -0.606705,0.186995,-0.77262,702.221343,-592.162158,149.501677, + -0.494423,0.087701,-0.864786,684.332867,-573.78512,164.643953, + -0.606705,0.079969,-0.790894,702.221333,-572.580561,152.868772, + -0.494423,0.087701,-0.864786,684.332867,-573.78512,164.643953, + -0.606705,0.186995,-0.77262,702.221343,-592.162158,149.501677, + -0.494423,0.204724,-0.844769,684.332878,-594.960039,161.002883, + -0.150374,0.233455,-0.96067,432.83893,-606.570796,208.730707, + -0.040706,0.101643,-0.993988,429.267738,-578.813573,213.798664, + -0.150374,0.100371,-0.983521,432.838915,-578.78391,213.508718, + -0.040706,0.101643,-0.993988,429.267738,-578.813573,213.798664, + -0.150374,0.233455,-0.96067,432.83893,-606.570796,208.730707, + -0.040706,0.236142,-0.970866,429.267752,-606.639691,209.013907, + -0.285905,0.226068,-0.93121,436.335601,-606.385575,207.969324, + -0.150374,0.100371,-0.983521,432.838915,-578.78391,213.508718, + -0.285905,0.097067,-0.953329,436.335587,-578.704167,212.729198, + -0.150374,0.100371,-0.983521,432.838915,-578.78391,213.508718, + -0.285905,0.226068,-0.93121,436.335601,-606.385575,207.969324, + -0.150374,0.233455,-0.96067,432.83893,-606.570796,208.730707, + -0.707841,0.151267,-0.689985,718.363091,-588.820775,135.766294, + -0.606705,0.079969,-0.790894,702.221333,-572.580561,152.868772, + -0.707841,0.055835,-0.704162,718.363082,-571.142012,138.806193, + -0.606705,0.079969,-0.790894,702.221333,-572.580561,152.868772, + -0.707841,0.151267,-0.689985,718.363091,-588.820775,135.766294, + -0.606705,0.186995,-0.77262,702.221343,-592.162158,149.501677, + -0.993727,0.098232,-0.053457,764.031424,-589.417442,25.936523, + -0.998991,0.036391,-0.026305,764.531578,-577.829947,23.357838, + -0.998992,0.039135,-0.021994,764.267941,-584.829097,23.357838, + -0.998991,0.036391,-0.026305,764.531578,-577.829947,23.357838, + -0.993727,0.098232,-0.053457,764.031424,-589.417442,25.936523, + -0.993727,0.090031,-0.066344,764.031425,-586.699189,30.082194, + 0.991932,-0.111235,0.060808,792.007217,-592.860317,27.871437, + 0.988867,-0.134398,0.063875,792.007216,-595.005501,23.357838, + 0.998112,-0.05354,0.03009,792.574093,-584.829111,23.357838, + 0.361665,-0.812468,0.457269,458.222253,-760.983658,122.358117, + 0.229025,-0.775467,0.588387,455.006113,-744.32049,149.585311, + 0.229025,-0.848411,0.477229,455.006107,-761.852699,122.846525, + 0.229025,-0.775467,0.588387,455.006113,-744.32049,149.585311, + 0.361665,-0.812468,0.457269,458.222253,-760.983658,122.358117, + 0.361665,-0.742579,0.563715,458.222259,-743.526109,148.983038, + 0.229025,-0.848411,0.477229,455.006107,-761.852699,122.846525, + 0.091928,-0.793404,0.601714,451.683345,-744.752058,149.912511, + 0.091928,-0.867996,0.487987,451.683339,-762.324827,123.111865, + 0.091928,-0.793404,0.601714,451.683345,-744.752058,149.912511, + 0.229025,-0.848411,0.477229,455.006107,-761.852699,122.846525, + 0.229025,-0.775467,0.588387,455.006113,-744.32049,149.585311, + 0.091928,-0.867996,0.487987,451.683339,-762.324827,123.111865, + 0.011271,-0.796813,0.60412,448.317783,-744.812521,149.958353, + 0.011271,-0.871702,0.489906,448.317778,-762.390973,123.149041, + 0.011271,-0.796813,0.60412,448.317783,-744.812521,149.958353, + 0.091928,-0.867996,0.487987,451.683339,-762.324827,123.111865, + 0.091928,-0.793404,0.601714,451.683345,-744.752058,149.912511, + 0.011271,-0.871702,0.489906,448.317778,-762.390973,123.149041, + 0,-0.81044,0.585821,0.000063,-744.812573,149.958459, + 0,-0.882708,0.469921,0.000057,-762.391004,123.149179, + 0,-0.81044,0.585821,0.000063,-744.812573,149.958459, + 0.011271,-0.871702,0.489906,448.317778,-762.390973,123.149041, + 0.011271,-0.796813,0.60412,448.317783,-744.812521,149.958353, + 0.506559,-0.014482,0.862083,461.269937,-549.571376,239.686382, + 0.603443,-0.080198,0.793363,464.090747,-581.165077,236.78619, + 0.620913,-0.013167,0.783769,464.090728,-549.540509,237.849027, + 0.603443,-0.080198,0.793363,464.090747,-581.165077,236.78619, + 0.506559,-0.014482,0.862083,461.269937,-549.571376,239.686382, + 0.487278,-0.088099,0.868791,461.269956,-581.352493,238.618284, + -0.022557,0.706919,-0.706935,602.133302,-683.695423,134.072836, + -0,0.622177,-0.782877,454.66777,-665.3625,150.056742, + -0.022557,0.603993,-0.79667,602.133301,-665.362465,150.056725, + -0,0.622177,-0.782877,454.66777,-665.3625,150.056742, + -0.022557,0.706919,-0.706935,602.133302,-683.695423,134.072836, + -0,0.723053,-0.690793,454.667771,-683.695448,134.072861, + -0.112343,0.702509,-0.702752,623.546368,-683.011825,133.389238, + -0.022557,0.603993,-0.79667,602.133301,-665.362465,150.056725, + -0.112343,0.600194,-0.791925,623.546367,-664.778393,149.286355, + -0.022557,0.603993,-0.79667,602.133301,-665.362465,150.056725, + -0.112343,0.702509,-0.702752,623.546368,-683.011825,133.389238, + -0.022557,0.706919,-0.706935,602.133302,-683.695423,134.072836, + -0.244971,0.685296,-0.685827,644.636265,-680.297547,130.67496, + -0.112343,0.600194,-0.791925,623.546367,-664.778393,149.286355, + -0.244971,0.585448,-0.772813,644.636264,-662.459295,146.227532, + -0.112343,0.600194,-0.791925,623.546367,-664.778393,149.286355, + -0.244971,0.685296,-0.685827,644.636265,-680.297547,130.67496, + -0.112343,0.702509,-0.702752,623.546368,-683.011825,133.389238, + -0.832687,0.13217,-0.53774,450.471101,-603.912334,197.80261, + -0.901181,0.045526,-0.431045,452.246978,-577.321949,199.217285, + -0.901181,0.103838,-0.42082,452.246991,-603.175034,194.771794, + -0.901181,0.045526,-0.431045,452.246978,-577.321949,199.217285, + -0.832687,0.13217,-0.53774,450.471101,-603.912334,197.80261, + -0.832687,0.057661,-0.550734,450.471088,-577.639374,202.320298, + 0.995785,-0,0.091715,473.642021,-186.86272,220.6922, + 0.973547,-0.004216,0.228449,473.101704,-549.308105,224.014969, + 0.994417,-0.002312,0.105501,473.642021,-549.252285,220.6922, + 0.973547,-0.004216,0.228449,473.101704,-549.308105,224.014969, + 0.995785,-0,0.091715,473.642021,-186.86272,220.6922, + 0.967989,-0,0.250993,473.101704,-186.86272,224.014969, + 0.873731,0,0.48641,470.677463,-186.86272,230.278856, + 0.928983,-0.005506,0.370082,472.10715,-549.362134,227.231115, + 0.932593,0,0.360931,472.10715,-186.86272,227.231115, + 0.928983,-0.005506,0.370082,472.10715,-549.362134,227.231115, + 0.873731,0,0.48641,470.677463,-186.86272,230.278856, + 0.866918,-0.01021,0.498346,470.677463,-549.413334,230.278856, + 0.873731,0,0.48641,470.677463,-186.86272,230.278856, + 0.792107,-0.00894,0.610317,468.840108,-549.460722,233.099647, + 0.866918,-0.01021,0.498346,470.677463,-549.413334,230.278856, + 0.792107,-0.00894,0.610317,468.840108,-549.460722,233.099647, + 0.873731,0,0.48641,470.677463,-186.86272,230.278856, + 0.798084,0,0.602546,468.840108,-186.86272,233.099647, + 0.707107,0,0.707107,466.63038,-186.86272,235.639299, + 0.792107,-0.00894,0.610317,468.840108,-549.460722,233.099647, + 0.798084,0,0.602546,468.840108,-186.86272,233.099647, + 0.792107,-0.00894,0.610317,468.840108,-549.460722,233.099647, + 0.707107,0,0.707107,466.63038,-186.86272,235.639299, + 0.707157,-0.011876,0.706957,466.63038,-549.503387,235.639299, + -0.415875,0.332758,-0.846357,439.690608,-632.698039,198.308899, + -0.285905,0.226068,-0.93121,436.335601,-606.385575,207.969324, + -0.415875,0.214324,-0.883806,439.690597,-606.087584,206.744382, + -0.285905,0.226068,-0.93121,436.335601,-606.385575,207.969324, + -0.415875,0.332758,-0.846357,439.690608,-632.698039,198.308899, + -0.285905,0.350852,-0.891718,436.335613,-633.160168,199.481809, + -0.796291,0.222882,-0.562356,732.466058,-599.989405,115.292483, + -0.870211,0.117753,-0.4784,744.275047,-580.75808,102.623043, + -0.870211,0.181845,-0.457892,744.275052,-593.41661,98.610304, + -0.870211,0.117753,-0.4784,744.275047,-580.75808,102.623043, + -0.796291,0.222882,-0.562356,732.466058,-599.989405,115.292483, + -0.796291,0.144172,-0.587481,732.466052,-584.996349,120.045264, + 0.932875,-0.133411,0.334583,472.107195,-638.123482,212.079066, + 0.874212,-0.239089,0.422598,470.677518,-666.658744,201.891525, + 0.932875,-0.177759,0.313282,472.107204,-665.162054,199.228412, + 0.874212,-0.239089,0.422598,470.677518,-666.658744,201.891525, + 0.932875,-0.133411,0.334583,472.107195,-638.123482,212.079066, + 0.874212,-0.179273,0.451236,470.677509,-639.24332,214.921287, + 0,-0.387702,0.921785,0.000048,-643.817211,226.529683, + 0.011271,-0.489901,0.871705,448.317778,-672.771628,212.768386, + 0.011271,-0.366548,0.930331,448.317768,-643.817038,226.529669, + 0.011271,-0.489901,0.871705,448.317778,-672.771628,212.768386, + 0,-0.387702,0.921785,0.000048,-643.817211,226.529683, + 0,-0.509694,0.860356,0.000057,-672.771767,212.768417, + -0.285905,0.46909,-0.835591,436.335621,-658.528453,187.424994, + -0.150375,0.362184,-0.919897,432.838941,-633.447412,200.210852, + -0.285905,0.350852,-0.891718,436.335613,-633.160168,199.481809, + -0.150375,0.362184,-0.919897,432.838941,-633.447412,200.210852, + -0.285905,0.46909,-0.835591,436.335621,-658.528453,187.424994, + -0.150375,0.484157,-0.861963,432.838949,-658.912362,188.108094, + -0.415875,0.444984,-0.793119,439.690616,-657.910808,186.325996, + -0.285905,0.350852,-0.891718,436.335613,-633.160168,199.481809, + -0.415875,0.332758,-0.846357,439.690608,-632.698039,198.308899, + -0.285905,0.350852,-0.891718,436.335613,-633.160168,199.481809, + -0.415875,0.444984,-0.793119,439.690616,-657.910808,186.325996, + -0.285905,0.46909,-0.835591,436.335621,-658.528453,187.424994, + -0.537771,0.412318,-0.735388,442.839485,-657.07129,184.832214, + -0.415875,0.332758,-0.846357,439.690608,-632.698039,198.308899, + -0.537771,0.308263,-0.784714,442.839477,-632.069904,196.714653, + -0.415875,0.332758,-0.846357,439.690608,-632.698039,198.308899, + -0.537771,0.412318,-0.735388,442.839485,-657.07129,184.832214, + -0.415875,0.444984,-0.793119,439.690616,-657.910808,186.325996, + -0.649152,0.35745,-0.67144,445.72174,-656.026027,182.972343, + -0.537771,0.308263,-0.784714,442.839477,-632.069904,196.714653, + -0.649152,0.262621,-0.713885,445.721732,-631.287828,194.729696, + -0.537771,0.308263,-0.784714,442.839477,-632.069904,196.714653, + -0.649152,0.35745,-0.67144,445.72174,-656.026027,182.972343, + -0.537771,0.412318,-0.735388,442.839485,-657.07129,184.832214, + -0.952384,0.150692,-0.265059,453.575567,-650.239827,172.676755, + -0.985345,0.063975,-0.158123,454.431263,-625.680129,180.496989, + -0.985345,0.084925,-0.14793,454.431271,-648.531199,169.636534, + -0.985345,0.063975,-0.158123,454.431263,-625.680129,180.496989, + -0.952384,0.150692,-0.265059,453.575567,-650.239827,172.676755, + -0.952384,0.113168,-0.283121,453.575559,-626.95854,183.741681, + -0.90081,0.007643,-0.434147,452.246961,-548.907571,200.172234, + -0.94485,0,-0.327505,453.575519,-186.86272,196.844653, + -0.95219,0.005502,-0.305456,453.575519,-548.85167,196.844653, + -0.94485,0,-0.327505,453.575519,-186.86272,196.844653, + -0.90081,0.007643,-0.434147,452.246961,-548.907571,200.172234, + -0.890491,0,-0.455,452.246961,-186.86272,200.172234, + -0.95219,0.005502,-0.305456,453.575519,-548.85167,196.844653, + -0.981057,0,-0.193718,454.431224,-186.86272,193.365338, + -0.985283,0.003254,-0.170901,454.431224,-548.79322,193.365338, + -0.981057,0,-0.193718,454.431224,-186.86272,193.365338, + -0.95219,0.005502,-0.305456,453.575519,-548.85167,196.844653, + -0.94485,0,-0.327505,453.575519,-186.86272,196.844653, + -0.985283,0.003254,-0.170901,454.431224,-548.79322,193.365338, + -0.998419,0,-0.05621,454.797637,-186.86272,189.801127, + -0.999453,0.000944,-0.033066,454.797637,-548.733344,189.801127, + -0.998419,0,-0.05621,454.797637,-186.86272,189.801127, + -0.985283,0.003254,-0.170901,454.431224,-548.79322,193.365338, + -0.981057,0,-0.193718,454.431224,-186.86272,193.365338, + -0.999453,0.000944,-0.033066,454.797637,-548.733344,189.801127, + -0.999342,-0,0.036259,454.66772,-186.86272,186.220487, + -0.999343,-0.000812,0.036246,454.66772,-548.673192,186.220487, + -0.999342,-0,0.036259,454.66772,-186.86272,186.220487, + -0.999453,0.000944,-0.033066,454.797637,-548.733344,189.801127, + -0.998419,0,-0.05621,454.797637,-186.86272,189.801127, + -0,1,-0,56.126785,-233.5784,1315.222366, + -0,1,-0,18.722685,-233.5784,268.426375, + 0,1,-0,18.722685,-233.5784,1315.222366, + -0,1,-0,18.722685,-233.5784,268.426375, + -0,1,-0,56.126785,-233.5784,1315.222366, + -0,1,0,56.126785,-233.5784,268.426375, + 0,0,1,18.722685,-186.86272,268.426375, + 0,0,1,56.126785,-233.5784,268.426375, + 0,0,1,56.126785,-186.86272,268.426375, + 0,0,1,56.126785,-233.5784,268.426375, + 0,0,1,18.722685,-186.86272,268.426375, + 0,0,1,18.722685,-233.5784,268.426375, + 1,0,-0,18.722685,-186.86272,1315.222366, + 1,0,-0,18.722685,-233.5784,268.426375, + 1,0,0,18.722685,-186.86272,268.426375, + 1,0,-0,18.722685,-233.5784,268.426375, + 1,0,-0,18.722685,-186.86272,1315.222366, + 1,0,-0,18.722685,-233.5784,1315.222366, + 0,0,-1,56.126785,-233.5784,1315.222366, + 0,0,-1,18.722685,-186.86272,1315.222366, + 0,0,-1,56.126785,-186.86272,1315.222366, + 0,0,-1,18.722685,-186.86272,1315.222366, + 0,0,-1,56.126785,-233.5784,1315.222366, + 0,0,-1,18.722685,-233.5784,1315.222366, + -1,-0,0,56.126785,-233.5784,1315.222366, + -1,-0,0,56.126785,-186.86272,268.426375, + -1,-0,0,56.126785,-233.5784,268.426375, + -1,-0,0,56.126785,-186.86272,268.426375, + -1,-0,0,56.126785,-233.5784,1315.222366, + -1,-0,0,56.126785,-186.86272,1315.222366 +}; +static const struct gllist robot_leg_half_frame = { GL_N3F_V3F, GL_TRIANGLES, 5190, robot_leg_half_data, 0 }; +const struct gllist *robot_leg_half = &robot_leg_half_frame; + +static const float robot_rotator_half_data[] = { + 0.707107,0,-0.707106,123.957535,-140.14704,1438.610184, + 0.812792,0,-0.582553,145.758595,-327.00976,1465.174884, + 0.707107,0,-0.707106,123.957535,-327.00976,1438.610184, + 0.812792,0,-0.582553,145.758595,-327.00976,1465.174884, + 0.707107,0,-0.707106,123.957535,-140.14704,1438.610184, + 0.849252,0,-0.527988,145.758595,-140.14704,1465.174884, + -0.812792,-0,-0.582554,-145.758282,-327.00976,1465.174712, + -0.707106,-0,-0.707107,-123.957191,-140.14704,1438.610037, + -0.707106,-0,-0.707107,-123.957191,-327.00976,1438.610037, + -0.707106,-0,-0.707107,-123.957191,-140.14704,1438.610037, + -0.812792,-0,-0.582554,-145.758282,-327.00976,1465.174712, + -0.849251,0,-0.527989,-145.758282,-140.14704,1465.174712, + 0.227167,0,0.973856,34.199757,-140.14704,1734.501295, + 0.352162,0,0.935939,67.085244,-327.00976,1724.525612, + 0.412792,0,0.910825,67.085244,-140.14704,1724.525612, + 0.352162,0,0.935939,67.085244,-327.00976,1724.525612, + 0.227167,0,0.973856,34.199757,-140.14704,1734.501295, + 0.162802,0,0.986659,34.199757,-327.00976,1734.501295, + -0.227167,0,-0.973856,-34.199559,-327.00976,1390.633652, + -0.352162,0,-0.935939,-67.085047,-140.14704,1400.609334, + -0.162802,0,-0.986659,-34.199559,-140.14704,1390.633652, + -0.352162,0,-0.935939,-67.085047,-140.14704,1400.609334, + -0.227167,0,-0.973856,-34.199559,-327.00976,1390.633652, + -0.412792,-0,-0.910825,-67.085047,-327.00976,1400.609334, + 0.849252,0,-0.527988,145.758595,-140.14704,1465.174884, + 0.910825,0,-0.412792,161.958238,-327.00976,1495.482328, + 0.812792,0,-0.582553,145.758595,-327.00976,1465.174884, + 0.910825,0,-0.412792,161.958238,-327.00976,1495.482328, + 0.849252,0,-0.527988,145.758595,-140.14704,1465.174884, + 0.935939,0,-0.352162,161.958238,-140.14704,1495.482328, + 0.032812,0,0.999462,-0.000005,-140.14704,1737.869657, + 0.162802,0,0.986659,34.199757,-327.00976,1734.501295, + 0.227167,0,0.973856,34.199757,-140.14704,1734.501295, + 0.162802,0,0.986659,34.199757,-327.00976,1734.501295, + 0.032812,0,0.999462,-0.000005,-140.14704,1737.869657, + -0.032813,-0,0.999461,-0.000005,-327.00976,1737.869657, + 0.973856,0,0.227168,171.93388,-140.14704,1596.767334, + 0.935939,0,0.352163,161.958159,-327.00976,1629.65281, + 0.986659,0,0.162804,171.93388,-327.00976,1596.767334, + 0.935939,0,0.352163,161.958159,-327.00976,1629.65281, + 0.973856,0,0.227168,171.93388,-140.14704,1596.767334, + 0.910825,0,0.412793,161.958159,-140.14704,1629.65281, + -0.412792,-0,-0.910825,-67.085047,-327.00976,1400.609334, + -0.527988,-0,-0.849252,-97.39249,-140.14704,1416.808977, + -0.352162,0,-0.935939,-67.085047,-140.14704,1400.609334, + -0.527988,-0,-0.849252,-97.39249,-140.14704,1416.808977, + -0.412792,-0,-0.910825,-67.085047,-327.00976,1400.609334, + -0.582553,-0,-0.812792,-97.39249,-327.00976,1416.808977, + 0.999461,0,0.032813,175.302282,-140.14704,1562.567577, + 0.986659,0,0.162804,171.93388,-327.00976,1596.767334, + 0.999462,0,-0.032812,175.302282,-327.00976,1562.567577, + 0.986659,0,0.162804,171.93388,-327.00976,1596.767334, + 0.999461,0,0.032813,175.302282,-140.14704,1562.567577, + 0.973856,0,0.227168,171.93388,-140.14704,1596.767334, + -0.707107,-0,0.707106,-123.957337,-327.00976,1686.524763, + -0.812792,-0,0.582553,-145.758398,-140.14704,1659.960062, + -0.849252,-0,0.527988,-145.758398,-327.00976,1659.960062, + -0.812792,-0,0.582553,-145.758398,-140.14704,1659.960062, + -0.707107,-0,0.707106,-123.957337,-327.00976,1686.524763, + -0.707107,-0,0.707106,-123.957337,-140.14704,1686.524763, + 0.910825,0,0.412793,161.958159,-140.14704,1629.65281, + 0.849251,0,0.527989,145.75848,-327.00976,1659.960235, + 0.935939,0,0.352163,161.958159,-327.00976,1629.65281, + 0.849251,0,0.527989,145.75848,-327.00976,1659.960235, + 0.910825,0,0.412793,161.958159,-140.14704,1629.65281, + 0.812792,-0,0.582554,145.75848,-140.14704,1659.960235, + -0.582553,-0,-0.812792,-97.39249,-327.00976,1416.808977, + -0.707106,-0,-0.707107,-123.957191,-140.14704,1438.610037, + -0.527988,-0,-0.849252,-97.39249,-140.14704,1416.808977, + -0.707106,-0,-0.707107,-123.957191,-140.14704,1438.610037, + -0.582553,-0,-0.812792,-97.39249,-327.00976,1416.808977, + -0.707106,-0,-0.707107,-123.957191,-327.00976,1438.610037, + -0.935939,-0,0.352162,-161.95804,-327.00976,1629.652619, + -0.973856,-0,0.227167,-171.933723,-140.14704,1596.767131, + -0.986659,-0,0.162802,-171.933723,-327.00976,1596.767131, + -0.973856,-0,0.227167,-171.933723,-140.14704,1596.767131, + -0.935939,-0,0.352162,-161.95804,-327.00976,1629.652619, + -0.910825,-0,0.412792,-161.95804,-140.14704,1629.652619, + 0.412792,0,0.910825,67.085244,-140.14704,1724.525612, + 0.527988,0,0.849252,97.392688,-327.00976,1708.32597, + 0.582553,-0,0.812792,97.392688,-140.14704,1708.32597, + 0.527988,0,0.849252,97.392688,-327.00976,1708.32597, + 0.412792,0,0.910825,67.085244,-140.14704,1724.525612, + 0.352162,0,0.935939,67.085244,-327.00976,1724.525612, + -0.352163,-0,0.935939,-67.085238,-140.14704,1724.525533, + -0.227168,-0,0.973856,-34.199762,-327.00976,1734.501255, + -0.162804,-0,0.986659,-34.199762,-140.14704,1734.501255, + -0.227168,-0,0.973856,-34.199762,-327.00976,1734.501255, + -0.352163,-0,0.935939,-67.085238,-140.14704,1724.525533, + -0.412793,-0,0.910825,-67.085238,-327.00976,1724.525533, + 0.162804,0,-0.986659,34.19996,-327.00976,1390.633692, + 0.032813,0,-0.999461,0.000202,-140.14704,1387.26529, + 0.227168,0,-0.973856,34.19996,-140.14704,1390.633692, + 0.032813,0,-0.999461,0.000202,-140.14704,1387.26529, + 0.162804,0,-0.986659,34.19996,-327.00976,1390.633692, + -0.032812,0,-0.999462,0.000202,-327.00976,1387.26529, + -0.032812,0,-0.999462,0.000202,-327.00976,1387.26529, + -0.162802,0,-0.986659,-34.199559,-140.14704,1390.633652, + 0.032813,0,-0.999461,0.000202,-140.14704,1387.26529, + -0.162802,0,-0.986659,-34.199559,-140.14704,1390.633652, + -0.032812,0,-0.999462,0.000202,-327.00976,1387.26529, + -0.227167,0,-0.973856,-34.199559,-327.00976,1390.633652, + 0.752338,0,0.658777,21.00973,-0,1702.42617, + 0.896537,0,0.442969,27.450543,-140.14704,1692.786831, + 0.947173,0,0.320723,27.450543,-0,1692.786831, + 0.896537,0,0.442969,27.450543,-140.14704,1692.786831, + 0.752338,0,0.658777,21.00973,-0,1702.42617, + 0.658776,0,0.75234,21.00973,-140.14704,1702.42617, + 0.352163,0,-0.935939,67.085436,-327.00976,1400.609414, + 0.227168,0,-0.973856,34.19996,-140.14704,1390.633692, + 0.412793,0,-0.910825,67.085436,-140.14704,1400.609414, + 0.227168,0,-0.973856,34.19996,-140.14704,1390.633692, + 0.352163,0,-0.935939,67.085436,-327.00976,1400.609414, + 0.162804,0,-0.986659,34.19996,-327.00976,1390.633692, + 0.582553,-0,0.812792,97.392688,-140.14704,1708.32597, + 0.707106,-0,0.707107,123.957388,-327.00976,1686.524909, + 0.707106,-0,0.707107,123.957388,-140.14704,1686.524909, + 0.707106,-0,0.707107,123.957388,-327.00976,1686.524909, + 0.582553,-0,0.812792,97.392688,-140.14704,1708.32597, + 0.527988,0,0.849252,97.392688,-327.00976,1708.32597, + 0.935939,0,-0.352162,161.958238,-140.14704,1495.482328, + 0.973856,0,-0.227167,171.93392,-327.00976,1528.367816, + 0.910825,0,-0.412792,161.958238,-327.00976,1495.482328, + 0.973856,0,-0.227167,171.93392,-327.00976,1528.367816, + 0.935939,0,-0.352162,161.958238,-140.14704,1495.482328, + 0.986659,0,-0.162802,171.93392,-140.14704,1528.367816, + 0.986659,0,-0.162802,171.93392,-140.14704,1528.367816, + 0.999462,0,-0.032812,175.302282,-327.00976,1562.567577, + 0.973856,0,-0.227167,171.93392,-327.00976,1528.367816, + 0.999462,0,-0.032812,175.302282,-327.00976,1562.567577, + 0.986659,0,-0.162802,171.93392,-140.14704,1528.367816, + 0.999461,0,0.032813,175.302282,-140.14704,1562.567577, + 0.555571,0,-0.831469,97.39286,-327.00976,1416.809092, + 0.412793,0,-0.910825,67.085436,-140.14704,1400.609414, + 0.555571,0,-0.831469,97.39286,-140.14704,1416.809092, + 0.412793,0,-0.910825,67.085436,-140.14704,1400.609414, + 0.555571,0,-0.831469,97.39286,-327.00976,1416.809092, + 0.352163,0,-0.935939,67.085436,-327.00976,1400.609414, + -0.849252,-0,0.527988,-145.758398,-327.00976,1659.960062, + -0.910825,-0,0.412792,-161.95804,-140.14704,1629.652619, + -0.935939,-0,0.352162,-161.95804,-327.00976,1629.652619, + -0.910825,-0,0.412792,-161.95804,-140.14704,1629.652619, + -0.849252,-0,0.527988,-145.758398,-327.00976,1659.960062, + -0.812792,-0,0.582553,-145.758398,-140.14704,1659.960062, + 0.707107,0,-0.707106,123.957535,-140.14704,1438.610184, + 0.555571,0,-0.831469,97.39286,-327.00976,1416.809092, + 0.555571,0,-0.831469,97.39286,-140.14704,1416.809092, + 0.555571,0,-0.831469,97.39286,-327.00976,1416.809092, + 0.707107,0,-0.707106,123.957535,-140.14704,1438.610184, + 0.707107,0,-0.707106,123.957535,-327.00976,1438.610184, + -0.986659,-0,0.162802,-171.933723,-327.00976,1596.767131, + -0.999462,-0,0.032812,-175.302085,-140.14704,1562.56737, + -0.999461,-0,-0.032813,-175.302085,-327.00976,1562.56737, + -0.999462,-0,0.032812,-175.302085,-140.14704,1562.56737, + -0.986659,-0,0.162802,-171.933723,-327.00976,1596.767131, + -0.973856,-0,0.227167,-171.933723,-140.14704,1596.767131, + -0.999461,-0,-0.032813,-175.302085,-327.00976,1562.56737, + -0.986659,-0,-0.162804,-171.933682,-140.14704,1528.367612, + -0.973856,-0,-0.227168,-171.933682,-327.00976,1528.367612, + -0.986659,-0,-0.162804,-171.933682,-140.14704,1528.367612, + -0.999461,-0,-0.032813,-175.302085,-327.00976,1562.56737, + -0.999462,-0,0.032812,-175.302085,-140.14704,1562.56737, + -0.973856,-0,-0.227168,-171.933682,-327.00976,1528.367612, + -0.935939,0,-0.352163,-161.957961,-140.14704,1495.482136, + -0.910825,0,-0.412793,-161.957961,-327.00976,1495.482136, + -0.935939,0,-0.352163,-161.957961,-140.14704,1495.482136, + -0.973856,-0,-0.227168,-171.933682,-327.00976,1528.367612, + -0.986659,-0,-0.162804,-171.933682,-140.14704,1528.367612, + -0.910825,0,-0.412793,-161.957961,-327.00976,1495.482136, + -0.849251,0,-0.527989,-145.758282,-140.14704,1465.174712, + -0.812792,-0,-0.582554,-145.758282,-327.00976,1465.174712, + -0.849251,0,-0.527989,-145.758282,-140.14704,1465.174712, + -0.910825,0,-0.412793,-161.957961,-327.00976,1495.482136, + -0.935939,0,-0.352163,-161.957961,-140.14704,1495.482136, + 0.812792,-0,0.582554,145.75848,-140.14704,1659.960235, + 0.707106,-0,0.707107,123.957388,-327.00976,1686.524909, + 0.849251,0,0.527989,145.75848,-327.00976,1659.960235, + 0.707106,-0,0.707107,123.957388,-327.00976,1686.524909, + 0.812792,-0,0.582554,145.75848,-140.14704,1659.960235, + 0.707106,-0,0.707107,123.957388,-140.14704,1686.524909, + -0.555571,-0,0.831469,-97.392662,-140.14704,1708.325854, + -0.412793,-0,0.910825,-67.085238,-327.00976,1724.525533, + -0.352163,-0,0.935939,-67.085238,-140.14704,1724.525533, + -0.412793,-0,0.910825,-67.085238,-327.00976,1724.525533, + -0.555571,-0,0.831469,-97.392662,-140.14704,1708.325854, + -0.555571,-0,0.831469,-97.392662,-327.00976,1708.325854, + -0.707107,-0,0.707106,-123.957337,-327.00976,1686.524763, + -0.555571,-0,0.831469,-97.392662,-140.14704,1708.325854, + -0.707107,-0,0.707106,-123.957337,-140.14704,1686.524763, + -0.555571,-0,0.831469,-97.392662,-140.14704,1708.325854, + -0.707107,-0,0.707106,-123.957337,-327.00976,1686.524763, + -0.555571,-0,0.831469,-97.392662,-327.00976,1708.325854, + 0.707107,-0,-0.707106,21.009767,-140.14704,1660.406714, + 0.382684,-0,-0.923879,11.370427,-0,1653.965901, + 0.707107,0,-0.707106,21.009767,-0,1660.406714, + 0.382684,-0,-0.923879,11.370427,-0,1653.965901, + 0.707107,-0,-0.707106,21.009767,-140.14704,1660.406714, + 0.382684,-0,-0.923879,11.370427,-140.14704,1653.965901, + -0.442967,-0,-0.896538,-11.370339,-140.14704,1653.965881, + -0.707106,-0,-0.707107,-21.00969,-0,1660.406677, + -0.320721,-0,-0.947174,-11.370339,-0,1653.965881, + -0.707106,-0,-0.707107,-21.00969,-0,1660.406677, + -0.442967,-0,-0.896538,-11.370339,-140.14704,1653.965881, + -0.707106,-0,-0.707107,-21.00969,-140.14704,1660.406677, + -0.000001,0,1,-0.000006,-0,1711.128666, + 0.320721,0,0.947174,11.370379,-140.14704,1708.866966, + 0.442967,0,0.896538,11.370379,-0,1708.866966, + 0.320721,0,0.947174,11.370379,-140.14704,1708.866966, + -0.000001,0,1,-0.000006,-0,1711.128666, + -0.000001,0,1,-0.000006,-140.14704,1711.128666, + -0.896537,-0,-0.442969,-27.450503,-140.14704,1670.046016, + -0.707106,-0,-0.707107,-21.00969,-0,1660.406677, + -0.707106,-0,-0.707107,-21.00969,-140.14704,1660.406677, + -0.707106,-0,-0.707107,-21.00969,-0,1660.406677, + -0.896537,-0,-0.442969,-27.450503,-140.14704,1670.046016, + -0.947173,-0,-0.320723,-27.450503,-0,1670.046016, + 0.442967,0,0.896538,11.370379,-0,1708.866966, + 0.658776,0,0.75234,21.00973,-140.14704,1702.42617, + 0.752338,0,0.658777,21.00973,-0,1702.42617, + 0.658776,0,0.75234,21.00973,-140.14704,1702.42617, + 0.442967,0,0.896538,11.370379,-0,1708.866966, + 0.320721,0,0.947174,11.370379,-140.14704,1708.866966, + 0.947173,0,0.320723,27.450543,-0,1692.786831, + 0.997809,0,0.06616,29.712263,-140.14704,1681.41645, + 0.997809,0,-0.066158,29.712263,-0,1681.41645, + 0.997809,0,0.06616,29.712263,-140.14704,1681.41645, + 0.947173,0,0.320723,27.450543,-0,1692.786831, + 0.896537,0,0.442969,27.450543,-140.14704,1692.786831, + 0.997809,0,-0.066158,29.712263,-0,1681.41645, + 0.947174,0,-0.320721,27.450563,-140.14704,1670.046065, + 0.896538,0,-0.442967,27.450563,-0,1670.046065, + 0.947174,0,-0.320721,27.450563,-140.14704,1670.046065, + 0.997809,0,-0.066158,29.712263,-0,1681.41645, + 0.997809,0,0.06616,29.712263,-140.14704,1681.41645, + -0.707107,-0,0.707106,-21.009727,-0,1702.426133, + -0.382684,-0,0.923879,-11.370387,-140.14704,1708.866946, + -0.382684,-0,0.923879,-11.370387,-0,1708.866946, + -0.382684,-0,0.923879,-11.370387,-140.14704,1708.866946, + -0.707107,-0,0.707106,-21.009727,-0,1702.426133, + -0.707107,-0,0.707106,-21.009727,-140.14704,1702.426133, + -0,1,0,-171.933723,-140.14704,1596.767131, + -0,1,0,-171.933682,-140.14704,1528.367612, + -0,1,0,-175.302085,-140.14704,1562.56737, + -0,1,0,-171.933682,-140.14704,1528.367612, + -0,1,0,-171.933723,-140.14704,1596.767131, + 0,1,0,-161.95804,-140.14704,1629.652619, + -0,1,0,-171.933682,-140.14704,1528.367612, + 0,1,0,-161.95804,-140.14704,1629.652619, + 0,1,0,-161.957961,-140.14704,1495.482136, + 0,1,0,-161.957961,-140.14704,1495.482136, + 0,1,0,-161.95804,-140.14704,1629.652619, + -0,1,0,-145.758398,-140.14704,1659.960062, + 0,1,0,-161.957961,-140.14704,1495.482136, + -0,1,0,-145.758398,-140.14704,1659.960062, + -0,1,0,-145.758282,-140.14704,1465.174712, + -0,1,0,-145.758282,-140.14704,1465.174712, + -0,1,0,-145.758398,-140.14704,1659.960062, + -0,1,0,-123.957337,-140.14704,1686.524763, + -0,1,0,-145.758282,-140.14704,1465.174712, + -0,1,0,-123.957337,-140.14704,1686.524763, + 0,1,0,-123.957191,-140.14704,1438.610037, + 0,1,0,-123.957191,-140.14704,1438.610037, + -0,1,0,-123.957337,-140.14704,1686.524763, + -0,1,0,-97.392662,-140.14704,1708.325854, + 0,1,0,-123.957191,-140.14704,1438.610037, + -0,1,0,-97.392662,-140.14704,1708.325854, + -0,1,0,-97.39249,-140.14704,1416.808977, + -0,1,0,-97.39249,-140.14704,1416.808977, + -0,1,0,-97.392662,-140.14704,1708.325854, + -0,1,0,-85.022439,-140.14704,1562.567379, + -0,1,0,-85.022439,-140.14704,1562.567379, + -0,1,0,-97.392662,-140.14704,1708.325854, + -0,1,0,-83.388773,-140.14704,1579.154455, + -0,1,0,-83.388773,-140.14704,1579.154455, + -0,1,0,-97.392662,-140.14704,1708.325854, + 0,1,0,-67.085238,-140.14704,1724.525533, + -0,1,0,-83.388773,-140.14704,1579.154455, + 0,1,0,-67.085238,-140.14704,1724.525533, + 0,1,0,-78.55052,-140.14704,1595.104103, + 0,1,0,-78.55052,-140.14704,1595.104103, + 0,1,0,-67.085238,-140.14704,1724.525533, + 0,1,0,-70.69361,-140.14704,1609.803386, + 0,1,0,-70.69361,-140.14704,1609.803386, + 0,1,0,-67.085238,-140.14704,1724.525533, + -0,1,0,-60.119981,-140.14704,1622.687419, + -0,1,0,-60.119981,-140.14704,1622.687419, + 0,1,0,-67.085238,-140.14704,1724.525533, + -0,1,0,-34.199762,-140.14704,1734.501255, + -0,1,0,-60.119981,-140.14704,1622.687419, + -0,1,0,-34.199762,-140.14704,1734.501255, + -0,1,0,-47.235971,-140.14704,1633.261077, + -0,1,0,-47.235971,-140.14704,1633.261077, + -0,1,0,-34.199762,-140.14704,1734.501255, + -0,1,0,-32.536705,-140.14704,1641.118019, + -0,1,0,-32.536705,-140.14704,1641.118019, + -0,1,0,-34.199762,-140.14704,1734.501255, + -0,1,0,-29.712222,-140.14704,1681.416397, + -0,1,0,-29.712222,-140.14704,1681.416397, + -0,1,0,-34.199762,-140.14704,1734.501255, + -0,1,0,-27.450523,-140.14704,1692.786782, + -0,1,0,-27.450523,-140.14704,1692.786782, + -0,1,0,-34.199762,-140.14704,1734.501255, + -0,1,0,-0.000005,-140.14704,1737.869657, + -0,1,0,-27.450523,-140.14704,1692.786782, + -0,1,0,-0.000005,-140.14704,1737.869657, + 0,1,0,-21.009727,-140.14704,1702.426133, + 0,1,0,-21.009727,-140.14704,1702.426133, + -0,1,0,-0.000005,-140.14704,1737.869657, + 0,1,0,-11.370387,-140.14704,1708.866946, + 0,1,0,-11.370387,-140.14704,1708.866946, + -0,1,0,-0.000005,-140.14704,1737.869657, + 0,1,0,-0.000006,-140.14704,1711.128666, + 0,1,0,-0.000006,-140.14704,1711.128666, + -0,1,0,-0.000005,-140.14704,1737.869657, + 0,1,0,11.370379,-140.14704,1708.866966, + 0,1,0,11.370379,-140.14704,1708.866966, + -0,1,0,-0.000005,-140.14704,1737.869657, + -0,1,0,34.199757,-140.14704,1734.501295, + 0,1,0,11.370379,-140.14704,1708.866966, + -0,1,0,34.199757,-140.14704,1734.501295, + 0,1,0,21.00973,-140.14704,1702.42617, + 0,1,0,21.00973,-140.14704,1702.42617, + -0,1,0,34.199757,-140.14704,1734.501295, + 0,1,0,27.450543,-140.14704,1692.786831, + 0,1,0,27.450543,-140.14704,1692.786831, + -0,1,0,34.199757,-140.14704,1734.501295, + -0,1,0,29.712263,-140.14704,1681.41645, + -0,1,0,29.712263,-140.14704,1681.41645, + -0,1,0,34.199757,-140.14704,1734.501295, + -0,1,0,32.536728,-140.14704,1641.118092, + -0,1,0,32.536728,-140.14704,1641.118092, + -0,1,0,34.199757,-140.14704,1734.501295, + 0,1,0,47.236011,-140.14704,1633.261182, + 0,1,0,47.236011,-140.14704,1633.261182, + -0,1,0,34.199757,-140.14704,1734.501295, + -0,1,0,67.085244,-140.14704,1724.525612, + 0,1,0,47.236011,-140.14704,1633.261182, + -0,1,0,67.085244,-140.14704,1724.525612, + -0,1,0,60.120045,-140.14704,1622.687553, + -0,1,0,60.120045,-140.14704,1622.687553, + -0,1,0,67.085244,-140.14704,1724.525612, + -0,1,0,70.693703,-140.14704,1609.803543, + -0,1,0,70.693703,-140.14704,1609.803543, + -0,1,0,67.085244,-140.14704,1724.525612, + 0,1,0,97.392688,-140.14704,1708.32597, + -0,1,0,70.693703,-140.14704,1609.803543, + 0,1,0,97.392688,-140.14704,1708.32597, + 0,1,0,78.550645,-140.14704,1595.104277, + 0,1,0,78.550645,-140.14704,1595.104277, + 0,1,0,97.392688,-140.14704,1708.32597, + 0,1,0,83.388934,-140.14704,1579.15464, + 0,1,0,83.388934,-140.14704,1579.15464, + 0,1,0,97.392688,-140.14704,1708.32597, + 0,1,0,85.022636,-140.14704,1562.567568, + -0,1,0,-97.39249,-140.14704,1416.808977, + 0,1,0,-83.388736,-140.14704,1545.980306, + -0,1,0,-67.085047,-140.14704,1400.609334, + 0,1,0,-83.388736,-140.14704,1545.980306, + -0,1,0,-97.39249,-140.14704,1416.808977, + -0,1,0,-85.022439,-140.14704,1562.567379, + -0,1,0,-67.085047,-140.14704,1400.609334, + 0,1,0,-83.388736,-140.14704,1545.980306, + -0,1,0,-78.550447,-140.14704,1530.030669, + -0,1,0,-67.085047,-140.14704,1400.609334, + -0,1,0,-78.550447,-140.14704,1530.030669, + -0,1,0,-70.693505,-140.14704,1515.331404, + -0,1,0,-67.085047,-140.14704,1400.609334, + -0,1,0,-70.693505,-140.14704,1515.331404, + 0,1,0,-60.119847,-140.14704,1502.447394, + -0,1,0,-67.085047,-140.14704,1400.609334, + 0,1,0,-60.119847,-140.14704,1502.447394, + -0,1,0,-34.199559,-140.14704,1390.633652, + -0,1,0,-34.199559,-140.14704,1390.633652, + 0,1,0,-60.119847,-140.14704,1502.447394, + 0,1,0,-47.235814,-140.14704,1491.873764, + -0,1,0,-34.199559,-140.14704,1390.633652, + 0,1,0,-47.235814,-140.14704,1491.873764, + -0,1,0,-32.53653,-140.14704,1484.016855, + -0,1,0,-34.199559,-140.14704,1390.633652, + -0,1,0,-32.53653,-140.14704,1484.016855, + -0,1,0,0.000202,-140.14704,1387.26529, + -0,1,0,0.000202,-140.14704,1387.26529, + -0,1,0,-32.53653,-140.14704,1484.016855, + -0,1,0,-16.586883,-140.14704,1479.178602, + -0,1,0,0.000202,-140.14704,1387.26529, + -0,1,0,-16.586883,-140.14704,1479.178602, + -0,1,0,0.000193,-140.14704,1477.544936, + -0,1,0,0.000202,-140.14704,1387.26529, + -0,1,0,0.000193,-140.14704,1477.544936, + -0,1,0,16.587266,-140.14704,1479.178638, + -0,1,0,0.000202,-140.14704,1387.26529, + -0,1,0,16.587266,-140.14704,1479.178638, + -0,1,0,34.19996,-140.14704,1390.633692, + -0,1,0,34.19996,-140.14704,1390.633692, + -0,1,0,16.587266,-140.14704,1479.178638, + -0,1,0,32.536903,-140.14704,1484.016927, + -0,1,0,34.19996,-140.14704,1390.633692, + -0,1,0,32.536903,-140.14704,1484.016927, + -0,1,0,47.236168,-140.14704,1491.87387, + -0,1,0,34.19996,-140.14704,1390.633692, + -0,1,0,47.236168,-140.14704,1491.87387, + -0,1,0,67.085436,-140.14704,1400.609414, + -0,1,0,67.085436,-140.14704,1400.609414, + -0,1,0,47.236168,-140.14704,1491.87387, + -0,1,0,60.120178,-140.14704,1502.447527, + -0,1,0,67.085436,-140.14704,1400.609414, + -0,1,0,60.120178,-140.14704,1502.447527, + -0,1,0,70.693808,-140.14704,1515.331561, + -0,1,0,67.085436,-140.14704,1400.609414, + -0,1,0,70.693808,-140.14704,1515.331561, + 0,1,0,97.39286,-140.14704,1416.809092, + 0,1,0,97.39286,-140.14704,1416.809092, + -0,1,0,70.693808,-140.14704,1515.331561, + -0,1,0,78.550717,-140.14704,1530.030844, + 0,1,0,97.39286,-140.14704,1416.809092, + -0,1,0,78.550717,-140.14704,1530.030844, + 0,1,0,83.388971,-140.14704,1545.980492, + 0,1,0,97.39286,-140.14704,1416.809092, + 0,1,0,83.388971,-140.14704,1545.980492, + 0,1,0,85.022636,-140.14704,1562.567568, + 0,1,0,97.39286,-140.14704,1416.809092, + 0,1,0,85.022636,-140.14704,1562.567568, + 0,1,0,97.392688,-140.14704,1708.32597, + 0,1,0,97.39286,-140.14704,1416.809092, + 0,1,0,97.392688,-140.14704,1708.32597, + -0,1,0,123.957388,-140.14704,1686.524909, + 0,1,0,97.39286,-140.14704,1416.809092, + -0,1,0,123.957388,-140.14704,1686.524909, + -0,1,0,123.957535,-140.14704,1438.610184, + -0,1,0,123.957535,-140.14704,1438.610184, + -0,1,0,123.957388,-140.14704,1686.524909, + -0,1,0,145.75848,-140.14704,1659.960235, + -0,1,0,123.957535,-140.14704,1438.610184, + -0,1,0,145.75848,-140.14704,1659.960235, + -0,1,0,145.758595,-140.14704,1465.174884, + -0,1,0,145.758595,-140.14704,1465.174884, + -0,1,0,145.75848,-140.14704,1659.960235, + 0,1,0,161.958159,-140.14704,1629.65281, + -0,1,0,145.758595,-140.14704,1465.174884, + 0,1,0,161.958159,-140.14704,1629.65281, + 0,1,0,161.958238,-140.14704,1495.482328, + 0,1,0,161.958238,-140.14704,1495.482328, + 0,1,0,161.958159,-140.14704,1629.65281, + -0,1,0,171.93388,-140.14704,1596.767334, + 0,1,0,161.958238,-140.14704,1495.482328, + -0,1,0,171.93388,-140.14704,1596.767334, + -0,1,0,171.93392,-140.14704,1528.367816, + -0,1,0,171.93392,-140.14704,1528.367816, + -0,1,0,171.93388,-140.14704,1596.767334, + -0,1,0,175.302282,-140.14704,1562.567577, + -0,1,0,-32.536705,-140.14704,1641.118019, + 0,1,0,-27.450503,-140.14704,1670.046016, + -0,1,0,-16.587068,-140.14704,1645.956308, + 0,1,0,-27.450503,-140.14704,1670.046016, + -0,1,0,-32.536705,-140.14704,1641.118019, + -0,1,0,-29.712222,-140.14704,1681.416397, + -0,1,0,-16.587068,-140.14704,1645.956308, + 0,1,0,-27.450503,-140.14704,1670.046016, + 0,1,0,-21.00969,-140.14704,1660.406677, + -0,1,0,-16.587068,-140.14704,1645.956308, + 0,1,0,-21.00969,-140.14704,1660.406677, + -0,1,0,-11.370339,-140.14704,1653.965881, + -0,1,0,-16.587068,-140.14704,1645.956308, + -0,1,0,-11.370339,-140.14704,1653.965881, + 0,1,0,0.000004,-140.14704,1647.590011, + 0,1,0,0.000004,-140.14704,1647.590011, + -0,1,0,-11.370339,-140.14704,1653.965881, + 0,1,0,0.000046,-140.14704,1651.704181, + 0,1,0,0.000004,-140.14704,1647.590011, + 0,1,0,0.000046,-140.14704,1651.704181, + -0,1,0,16.58708,-140.14704,1645.956345, + -0,1,0,16.58708,-140.14704,1645.956345, + 0,1,0,0.000046,-140.14704,1651.704181, + -0,1,0,11.370427,-140.14704,1653.965901, + -0,1,0,16.58708,-140.14704,1645.956345, + -0,1,0,11.370427,-140.14704,1653.965901, + -0,1,0,21.009767,-140.14704,1660.406714, + -0,1,0,16.58708,-140.14704,1645.956345, + -0,1,0,21.009767,-140.14704,1660.406714, + -0,1,0,32.536728,-140.14704,1641.118092, + -0,1,0,32.536728,-140.14704,1641.118092, + -0,1,0,21.009767,-140.14704,1660.406714, + -0,1,0,27.450563,-140.14704,1670.046065, + -0,1,0,32.536728,-140.14704,1641.118092, + -0,1,0,27.450563,-140.14704,1670.046065, + -0,1,0,29.712263,-140.14704,1681.41645, + -0.162804,-0,0.986659,-34.199762,-140.14704,1734.501255, + -0.032813,-0,0.999461,-0.000005,-327.00976,1737.869657, + 0.032812,0,0.999462,-0.000005,-140.14704,1737.869657, + -0.032813,-0,0.999461,-0.000005,-327.00976,1737.869657, + -0.162804,-0,0.986659,-34.199762,-140.14704,1734.501255, + -0.227168,-0,0.973856,-34.199762,-327.00976,1734.501255, + 0.812791,0,0.582555,-70.693505,-301.60976,1515.331404, + 0.729927,0,0.683525,-60.119847,-327.00976,1502.447394, + 0.683523,0,0.729929,-60.119847,-301.60976,1502.447394, + 0.729927,0,0.683525,-60.119847,-327.00976,1502.447394, + 0.812791,0,0.582555,-70.693505,-301.60976,1515.331404, + 0.849251,0,0.527989,-70.693505,-327.00976,1515.331404, + 0,-1,0,-83.388736,-301.60976,1545.980306, + 0,-1,0,-83.388773,-301.60976,1579.154455, + 0,-1,0,-85.022439,-301.60976,1562.567379, + 0,-1,0,-83.388773,-301.60976,1579.154455, + 0,-1,0,-83.388736,-301.60976,1545.980306, + 0,-1,0,-78.55052,-301.60976,1595.104103, + 0,-1,0,-78.55052,-301.60976,1595.104103, + 0,-1,0,-83.388736,-301.60976,1545.980306, + 0,-1,-0,-78.550447,-301.60976,1530.030669, + 0,-1,0,-78.55052,-301.60976,1595.104103, + 0,-1,-0,-78.550447,-301.60976,1530.030669, + 0,-1,-0,-70.69361,-301.60976,1609.803386, + 0,-1,-0,-70.69361,-301.60976,1609.803386, + 0,-1,-0,-78.550447,-301.60976,1530.030669, + -0,-1,-0,-70.693505,-301.60976,1515.331404, + 0,-1,-0,-70.69361,-301.60976,1609.803386, + -0,-1,-0,-70.693505,-301.60976,1515.331404, + -0,-1,-0,-60.119981,-301.60976,1622.687419, + -0,-1,-0,-60.119981,-301.60976,1622.687419, + -0,-1,-0,-70.693505,-301.60976,1515.331404, + -0,-1,-0,-60.119847,-301.60976,1502.447394, + -0,-1,-0,-60.119981,-301.60976,1622.687419, + -0,-1,-0,-60.119847,-301.60976,1502.447394, + 0,-1,-0,-47.235971,-301.60976,1633.261077, + 0,-1,-0,-47.235971,-301.60976,1633.261077, + -0,-1,-0,-60.119847,-301.60976,1502.447394, + -0,-1,-0,-47.235814,-301.60976,1491.873764, + 0,-1,-0,-47.235971,-301.60976,1633.261077, + -0,-1,-0,-47.235814,-301.60976,1491.873764, + 0,-1,-0,-32.536705,-301.60976,1641.118019, + 0,-1,-0,-32.536705,-301.60976,1641.118019, + -0,-1,-0,-47.235814,-301.60976,1491.873764, + 0,-1,-0,-32.53653,-301.60976,1484.016855, + 0,-1,-0,-32.536705,-301.60976,1641.118019, + 0,-1,-0,-32.53653,-301.60976,1484.016855, + 0,-1,-0,-16.587068,-301.60976,1645.956308, + 0,-1,-0,-16.587068,-301.60976,1645.956308, + 0,-1,-0,-32.53653,-301.60976,1484.016855, + 0,-1,-0,-16.586883,-301.60976,1479.178602, + 0,-1,-0,-16.587068,-301.60976,1645.956308, + 0,-1,-0,-16.586883,-301.60976,1479.178602, + -0,-1,-0,0.000004,-301.60976,1647.590011, + -0,-1,-0,0.000004,-301.60976,1647.590011, + 0,-1,-0,-16.586883,-301.60976,1479.178602, + -0,-1,-0,0.000193,-301.60976,1477.544936, + -0,-1,-0,0.000004,-301.60976,1647.590011, + -0,-1,-0,0.000193,-301.60976,1477.544936, + -0,-1,-0,16.58708,-301.60976,1645.956345, + -0,-1,-0,16.58708,-301.60976,1645.956345, + -0,-1,-0,0.000193,-301.60976,1477.544936, + 0,-1,-0,16.587266,-301.60976,1479.178638, + -0,-1,-0,16.58708,-301.60976,1645.956345, + 0,-1,-0,16.587266,-301.60976,1479.178638, + -0,-1,-0,32.536728,-301.60976,1641.118092, + -0,-1,-0,32.536728,-301.60976,1641.118092, + 0,-1,-0,16.587266,-301.60976,1479.178638, + 0,-1,-0,32.536903,-301.60976,1484.016927, + -0,-1,-0,32.536728,-301.60976,1641.118092, + 0,-1,-0,32.536903,-301.60976,1484.016927, + -0,-1,-0,47.236011,-301.60976,1633.261182, + -0,-1,-0,47.236011,-301.60976,1633.261182, + 0,-1,-0,32.536903,-301.60976,1484.016927, + 0,-1,-0,47.236168,-301.60976,1491.87387, + -0,-1,-0,47.236011,-301.60976,1633.261182, + 0,-1,-0,47.236168,-301.60976,1491.87387, + 0,-1,-0,60.120045,-301.60976,1622.687553, + 0,-1,-0,60.120045,-301.60976,1622.687553, + 0,-1,-0,47.236168,-301.60976,1491.87387, + 0,-1,-0,60.120178,-301.60976,1502.447527, + 0,-1,-0,60.120045,-301.60976,1622.687553, + 0,-1,-0,60.120178,-301.60976,1502.447527, + 0,-1,-0,70.693703,-301.60976,1609.803543, + 0,-1,-0,70.693703,-301.60976,1609.803543, + 0,-1,-0,60.120178,-301.60976,1502.447527, + 0,-1,-0,70.693808,-301.60976,1515.331561, + 0,-1,-0,70.693703,-301.60976,1609.803543, + 0,-1,-0,70.693808,-301.60976,1515.331561, + -0,-1,-0,78.550645,-301.60976,1595.104277, + -0,-1,-0,78.550645,-301.60976,1595.104277, + 0,-1,-0,70.693808,-301.60976,1515.331561, + 0,-1,-0,78.550717,-301.60976,1530.030844, + -0,-1,-0,78.550645,-301.60976,1595.104277, + 0,-1,-0,78.550717,-301.60976,1530.030844, + -0,-1,-0,83.388934,-301.60976,1579.15464, + -0,-1,-0,83.388934,-301.60976,1579.15464, + 0,-1,-0,78.550717,-301.60976,1530.030844, + -0,-1,-0,83.388971,-301.60976,1545.980492, + -0,-1,-0,83.388934,-301.60976,1579.15464, + -0,-1,-0,83.388971,-301.60976,1545.980492, + -0,-1,-0,85.022636,-301.60976,1562.567568, + 0.973855,0,0.227169,-83.388736,-301.60976,1545.980306, + 0.935939,0,0.352163,-78.550447,-327.00976,1530.030669, + 0.910825,0,0.412793,-78.550447,-301.60976,1530.030669, + 0.935939,0,0.352163,-78.550447,-327.00976,1530.030669, + 0.973855,0,0.227169,-83.388736,-301.60976,1545.980306, + 0.986658,0,0.162804,-83.388736,-327.00976,1545.980306, + 0.582555,0,-0.812791,-47.235971,-327.00976,1633.261077, + 0.707108,0,-0.707106,-60.119981,-301.60976,1622.687419, + 0.527989,0,-0.849251,-47.235971,-301.60976,1633.261077, + 0.707108,0,-0.707106,-60.119981,-301.60976,1622.687419, + 0.582555,0,-0.812791,-47.235971,-327.00976,1633.261077, + 0.707108,0,-0.707106,-60.119981,-327.00976,1622.687419, + 0.999461,0,0.032814,-85.022439,-301.60976,1562.567379, + 0.986658,0,0.162804,-83.388736,-327.00976,1545.980306, + 0.973855,0,0.227169,-83.388736,-301.60976,1545.980306, + 0.986658,0,0.162804,-83.388736,-327.00976,1545.980306, + 0.999461,0,0.032814,-85.022439,-301.60976,1562.567379, + 0.999462,0,-0.032812,-85.022439,-327.00976,1562.567379, + 0.412793,0,-0.910825,-32.536705,-327.00976,1641.118019, + 0.527989,0,-0.849251,-47.235971,-301.60976,1633.261077, + 0.352163,0,-0.935939,-32.536705,-301.60976,1641.118019, + 0.527989,0,-0.849251,-47.235971,-301.60976,1633.261077, + 0.412793,0,-0.910825,-32.536705,-327.00976,1641.118019, + 0.582555,0,-0.812791,-47.235971,-327.00976,1633.261077, + 0.935939,0,-0.352161,-78.55052,-301.60976,1595.104103, + 0.973856,0,-0.227166,-83.388773,-327.00976,1579.154455, + 0.986659,0,-0.162802,-83.388773,-301.60976,1579.154455, + 0.973856,0,-0.227166,-83.388773,-327.00976,1579.154455, + 0.935939,0,-0.352161,-78.55052,-301.60976,1595.104103, + 0.910826,0,-0.412791,-78.55052,-327.00976,1595.104103, + -0.582555,-0,0.812791,47.236168,-165.54704,1491.87387, + -0.683525,-0,0.729927,60.120178,-140.14704,1502.447527, + -0.527989,-0,0.849251,47.236168,-140.14704,1491.87387, + -0.683525,-0,0.729927,60.120178,-140.14704,1502.447527, + -0.582555,-0,0.812791,47.236168,-165.54704,1491.87387, + -0.729929,-0,0.683523,60.120178,-165.54704,1502.447527, + -0.729929,-0,0.683523,60.120178,-165.54704,1502.447527, + -0.812793,-0,0.582553,70.693808,-140.14704,1515.331561, + -0.683525,-0,0.729927,60.120178,-140.14704,1502.447527, + -0.812793,-0,0.582553,70.693808,-140.14704,1515.331561, + -0.729929,-0,0.683523,60.120178,-165.54704,1502.447527, + -0.849252,-0,0.527987,70.693808,-165.54704,1515.331561, + -0.849252,-0,0.527987,70.693808,-165.54704,1515.331561, + -0.910826,-0,0.412791,78.550717,-140.14704,1530.030844, + -0.812793,-0,0.582553,70.693808,-140.14704,1515.331561, + -0.910826,-0,0.412791,78.550717,-140.14704,1530.030844, + -0.849252,-0,0.527987,70.693808,-165.54704,1515.331561, + -0.935939,-0,0.352161,78.550717,-165.54704,1530.030844, + -0,-1,-0,-97.39249,-327.00976,1416.808977, + -0,-1,-0,-83.388736,-327.00976,1545.980306, + -0,-1,-0,-85.022439,-327.00976,1562.567379, + -0,-1,-0,-83.388736,-327.00976,1545.980306, + -0,-1,-0,-97.39249,-327.00976,1416.808977, + 0,-1,-0,-67.085047,-327.00976,1400.609334, + -0,-1,-0,-83.388736,-327.00976,1545.980306, + 0,-1,-0,-67.085047,-327.00976,1400.609334, + 0,-1,-0,-78.550447,-327.00976,1530.030669, + 0,-1,-0,-78.550447,-327.00976,1530.030669, + 0,-1,-0,-67.085047,-327.00976,1400.609334, + 0,-1,-0,-70.693505,-327.00976,1515.331404, + 0,-1,-0,-70.693505,-327.00976,1515.331404, + 0,-1,-0,-67.085047,-327.00976,1400.609334, + -0,-1,-0,-60.119847,-327.00976,1502.447394, + -0,-1,-0,-60.119847,-327.00976,1502.447394, + 0,-1,-0,-67.085047,-327.00976,1400.609334, + 0,-1,-0,-34.199559,-327.00976,1390.633652, + -0,-1,-0,-60.119847,-327.00976,1502.447394, + 0,-1,-0,-34.199559,-327.00976,1390.633652, + -0,-1,-0,-47.235814,-327.00976,1491.873764, + -0,-1,-0,-47.235814,-327.00976,1491.873764, + 0,-1,-0,-34.199559,-327.00976,1390.633652, + 0,-1,-0,-32.53653,-327.00976,1484.016855, + 0,-1,-0,-32.53653,-327.00976,1484.016855, + 0,-1,-0,-34.199559,-327.00976,1390.633652, + 0,-1,-0,0.000202,-327.00976,1387.26529, + 0,-1,-0,-32.53653,-327.00976,1484.016855, + 0,-1,-0,0.000202,-327.00976,1387.26529, + 0,-1,-0,-16.586883,-327.00976,1479.178602, + 0,-1,-0,-16.586883,-327.00976,1479.178602, + 0,-1,-0,0.000202,-327.00976,1387.26529, + 0,-1,-0,0.000193,-327.00976,1477.544936, + 0,-1,-0,0.000193,-327.00976,1477.544936, + 0,-1,-0,0.000202,-327.00976,1387.26529, + 0,-1,-0,16.587266,-327.00976,1479.178638, + 0,-1,-0,16.587266,-327.00976,1479.178638, + 0,-1,-0,0.000202,-327.00976,1387.26529, + 0,-1,-0,34.19996,-327.00976,1390.633692, + 0,-1,-0,16.587266,-327.00976,1479.178638, + 0,-1,-0,34.19996,-327.00976,1390.633692, + 0,-1,-0,32.536903,-327.00976,1484.016927, + 0,-1,-0,32.536903,-327.00976,1484.016927, + 0,-1,-0,34.19996,-327.00976,1390.633692, + 0,-1,-0,47.236168,-327.00976,1491.87387, + 0,-1,-0,47.236168,-327.00976,1491.87387, + 0,-1,-0,34.19996,-327.00976,1390.633692, + 0,-1,-0,67.085436,-327.00976,1400.609414, + 0,-1,-0,47.236168,-327.00976,1491.87387, + 0,-1,-0,67.085436,-327.00976,1400.609414, + 0,-1,-0,60.120178,-327.00976,1502.447527, + 0,-1,-0,60.120178,-327.00976,1502.447527, + 0,-1,-0,67.085436,-327.00976,1400.609414, + 0,-1,-0,70.693808,-327.00976,1515.331561, + 0,-1,-0,70.693808,-327.00976,1515.331561, + 0,-1,-0,67.085436,-327.00976,1400.609414, + -0,-1,-0,97.39286,-327.00976,1416.809092, + 0,-1,-0,70.693808,-327.00976,1515.331561, + -0,-1,-0,97.39286,-327.00976,1416.809092, + 0,-1,-0,78.550717,-327.00976,1530.030844, + 0,-1,-0,78.550717,-327.00976,1530.030844, + -0,-1,-0,97.39286,-327.00976,1416.809092, + -0,-1,-0,83.388971,-327.00976,1545.980492, + -0,-1,-0,83.388971,-327.00976,1545.980492, + -0,-1,-0,97.39286,-327.00976,1416.809092, + -0,-1,-0,85.022636,-327.00976,1562.567568, + -0,-1,-0,85.022636,-327.00976,1562.567568, + -0,-1,-0,97.39286,-327.00976,1416.809092, + -0,-1,-0,97.392688,-327.00976,1708.32597, + -0,-1,-0,97.392688,-327.00976,1708.32597, + -0,-1,-0,97.39286,-327.00976,1416.809092, + 0,-1,-0,123.957388,-327.00976,1686.524909, + 0,-1,-0,123.957388,-327.00976,1686.524909, + -0,-1,-0,97.39286,-327.00976,1416.809092, + 0,-1,-0,123.957535,-327.00976,1438.610184, + 0,-1,-0,123.957388,-327.00976,1686.524909, + 0,-1,-0,123.957535,-327.00976,1438.610184, + 0,-1,-0,145.75848,-327.00976,1659.960235, + 0,-1,-0,145.75848,-327.00976,1659.960235, + 0,-1,-0,123.957535,-327.00976,1438.610184, + 0,-1,-0,145.758595,-327.00976,1465.174884, + 0,-1,-0,145.75848,-327.00976,1659.960235, + 0,-1,-0,145.758595,-327.00976,1465.174884, + 0,-1,-0,161.958159,-327.00976,1629.65281, + 0,-1,-0,161.958159,-327.00976,1629.65281, + 0,-1,-0,145.758595,-327.00976,1465.174884, + -0,-1,-0,161.958238,-327.00976,1495.482328, + 0,-1,-0,161.958159,-327.00976,1629.65281, + -0,-1,-0,161.958238,-327.00976,1495.482328, + -0,-1,-0,171.93388,-327.00976,1596.767334, + -0,-1,-0,171.93388,-327.00976,1596.767334, + -0,-1,-0,161.958238,-327.00976,1495.482328, + -0,-1,-0,171.93392,-327.00976,1528.367816, + -0,-1,-0,171.93388,-327.00976,1596.767334, + -0,-1,-0,171.93392,-327.00976,1528.367816, + 0,-1,0,175.302282,-327.00976,1562.567577, + 0,-1,-0,-171.933682,-327.00976,1528.367612, + 0,-1,-0,-171.933723,-327.00976,1596.767131, + 0,-1,-0,-175.302085,-327.00976,1562.56737, + 0,-1,-0,-171.933723,-327.00976,1596.767131, + 0,-1,-0,-171.933682,-327.00976,1528.367612, + -0,-1,-0,-161.95804,-327.00976,1629.652619, + -0,-1,-0,-161.95804,-327.00976,1629.652619, + 0,-1,-0,-171.933682,-327.00976,1528.367612, + -0,-1,-0,-161.957961,-327.00976,1495.482136, + -0,-1,-0,-161.95804,-327.00976,1629.652619, + -0,-1,-0,-161.957961,-327.00976,1495.482136, + 0,-1,-0,-145.758398,-327.00976,1659.960062, + 0,-1,-0,-145.758398,-327.00976,1659.960062, + -0,-1,-0,-161.957961,-327.00976,1495.482136, + 0,-1,-0,-145.758282,-327.00976,1465.174712, + 0,-1,-0,-145.758398,-327.00976,1659.960062, + 0,-1,-0,-145.758282,-327.00976,1465.174712, + 0,-1,-0,-123.957337,-327.00976,1686.524763, + 0,-1,-0,-123.957337,-327.00976,1686.524763, + 0,-1,-0,-145.758282,-327.00976,1465.174712, + 0,-1,-0,-123.957191,-327.00976,1438.610037, + 0,-1,-0,-123.957337,-327.00976,1686.524763, + 0,-1,-0,-123.957191,-327.00976,1438.610037, + 0,-1,-0,-97.392662,-327.00976,1708.325854, + 0,-1,-0,-97.392662,-327.00976,1708.325854, + 0,-1,-0,-123.957191,-327.00976,1438.610037, + -0,-1,-0,-97.39249,-327.00976,1416.808977, + 0,-1,-0,-97.392662,-327.00976,1708.325854, + -0,-1,-0,-97.39249,-327.00976,1416.808977, + -0,-1,-0,-85.022439,-327.00976,1562.567379, + 0,-1,-0,-97.392662,-327.00976,1708.325854, + -0,-1,-0,-85.022439,-327.00976,1562.567379, + 0,-1,-0,-83.388773,-327.00976,1579.154455, + 0,-1,-0,-97.392662,-327.00976,1708.325854, + 0,-1,-0,-83.388773,-327.00976,1579.154455, + 0,-1,-0,-67.085238,-327.00976,1724.525533, + 0,-1,-0,-67.085238,-327.00976,1724.525533, + 0,-1,-0,-83.388773,-327.00976,1579.154455, + 0,-1,-0,-78.55052,-327.00976,1595.104103, + 0,-1,-0,-67.085238,-327.00976,1724.525533, + 0,-1,-0,-78.55052,-327.00976,1595.104103, + -0,-1,-0,-70.69361,-327.00976,1609.803386, + 0,-1,-0,-67.085238,-327.00976,1724.525533, + -0,-1,-0,-70.69361,-327.00976,1609.803386, + -0,-1,-0,-60.119981,-327.00976,1622.687419, + 0,-1,-0,-67.085238,-327.00976,1724.525533, + -0,-1,-0,-60.119981,-327.00976,1622.687419, + 0,-1,-0,-34.199762,-327.00976,1734.501255, + 0,-1,-0,-34.199762,-327.00976,1734.501255, + -0,-1,-0,-60.119981,-327.00976,1622.687419, + 0,-1,-0,-47.235971,-327.00976,1633.261077, + 0,-1,-0,-34.199762,-327.00976,1734.501255, + 0,-1,-0,-47.235971,-327.00976,1633.261077, + 0,-1,-0,-32.536705,-327.00976,1641.118019, + 0,-1,-0,-34.199762,-327.00976,1734.501255, + 0,-1,-0,-32.536705,-327.00976,1641.118019, + 0,-1,-0,-0.000005,-327.00976,1737.869657, + 0,-1,-0,-0.000005,-327.00976,1737.869657, + 0,-1,-0,-32.536705,-327.00976,1641.118019, + 0,-1,-0,-16.587068,-327.00976,1645.956308, + 0,-1,-0,-0.000005,-327.00976,1737.869657, + 0,-1,-0,-16.587068,-327.00976,1645.956308, + -0,-1,-0,0.000004,-327.00976,1647.590011, + 0,-1,-0,-0.000005,-327.00976,1737.869657, + -0,-1,-0,0.000004,-327.00976,1647.590011, + -0,-1,-0,34.199757,-327.00976,1734.501295, + -0,-1,-0,34.199757,-327.00976,1734.501295, + -0,-1,-0,0.000004,-327.00976,1647.590011, + -0,-1,-0,16.58708,-327.00976,1645.956345, + -0,-1,-0,34.199757,-327.00976,1734.501295, + -0,-1,-0,16.58708,-327.00976,1645.956345, + -0,-1,-0,32.536728,-327.00976,1641.118092, + -0,-1,-0,34.199757,-327.00976,1734.501295, + -0,-1,-0,32.536728,-327.00976,1641.118092, + -0,-1,-0,47.236011,-327.00976,1633.261182, + -0,-1,-0,34.199757,-327.00976,1734.501295, + -0,-1,-0,47.236011,-327.00976,1633.261182, + 0,-1,-0,67.085244,-327.00976,1724.525612, + 0,-1,-0,67.085244,-327.00976,1724.525612, + -0,-1,-0,47.236011,-327.00976,1633.261182, + 0,-1,-0,60.120045,-327.00976,1622.687553, + 0,-1,-0,67.085244,-327.00976,1724.525612, + 0,-1,-0,60.120045,-327.00976,1622.687553, + 0,-1,-0,70.693703,-327.00976,1609.803543, + 0,-1,-0,67.085244,-327.00976,1724.525612, + 0,-1,-0,70.693703,-327.00976,1609.803543, + -0,-1,-0,97.392688,-327.00976,1708.32597, + -0,-1,-0,97.392688,-327.00976,1708.32597, + 0,-1,-0,70.693703,-327.00976,1609.803543, + -0,-1,-0,78.550645,-327.00976,1595.104277, + -0,-1,-0,97.392688,-327.00976,1708.32597, + -0,-1,-0,78.550645,-327.00976,1595.104277, + -0,-1,-0,83.388934,-327.00976,1579.15464, + -0,-1,-0,97.392688,-327.00976,1708.32597, + -0,-1,-0,83.388934,-327.00976,1579.15464, + -0,-1,-0,85.022636,-327.00976,1562.567568, + 0,1,0,-83.388773,-165.54704,1579.154455, + 0,1,0,-83.388736,-165.54704,1545.980306, + 0,1,0,-85.022439,-165.54704,1562.567379, + 0,1,0,-83.388736,-165.54704,1545.980306, + 0,1,0,-83.388773,-165.54704,1579.154455, + 0,1,0,-78.55052,-165.54704,1595.104103, + 0,1,0,-83.388736,-165.54704,1545.980306, + 0,1,0,-78.55052,-165.54704,1595.104103, + 0,1,0,-78.550447,-165.54704,1530.030669, + 0,1,0,-78.550447,-165.54704,1530.030669, + 0,1,0,-78.55052,-165.54704,1595.104103, + 0,1,0,-70.69361,-165.54704,1609.803386, + 0,1,0,-78.550447,-165.54704,1530.030669, + 0,1,0,-70.69361,-165.54704,1609.803386, + -0,1,0,-70.693505,-165.54704,1515.331404, + -0,1,0,-70.693505,-165.54704,1515.331404, + 0,1,0,-70.69361,-165.54704,1609.803386, + -0,1,0,-60.119981,-165.54704,1622.687419, + -0,1,0,-70.693505,-165.54704,1515.331404, + -0,1,0,-60.119981,-165.54704,1622.687419, + 0,1,0,-60.119847,-165.54704,1502.447394, + 0,1,0,-60.119847,-165.54704,1502.447394, + -0,1,0,-60.119981,-165.54704,1622.687419, + -0,1,0,-47.235971,-165.54704,1633.261077, + 0,1,0,-60.119847,-165.54704,1502.447394, + -0,1,0,-47.235971,-165.54704,1633.261077, + 0,1,0,-47.235814,-165.54704,1491.873764, + 0,1,0,-47.235814,-165.54704,1491.873764, + -0,1,0,-47.235971,-165.54704,1633.261077, + -0,1,0,-32.536705,-165.54704,1641.118019, + 0,1,0,-47.235814,-165.54704,1491.873764, + -0,1,0,-32.536705,-165.54704,1641.118019, + -0,1,0,-32.53653,-165.54704,1484.016855, + -0,1,0,-32.53653,-165.54704,1484.016855, + -0,1,0,-32.536705,-165.54704,1641.118019, + -0,1,0,-16.587068,-165.54704,1645.956308, + -0,1,0,-32.53653,-165.54704,1484.016855, + -0,1,0,-16.587068,-165.54704,1645.956308, + -0,1,0,-16.586883,-165.54704,1479.178602, + -0,1,0,-16.586883,-165.54704,1479.178602, + -0,1,0,-16.587068,-165.54704,1645.956308, + -0,1,0,0.000004,-165.54704,1647.590011, + -0,1,0,-16.586883,-165.54704,1479.178602, + -0,1,0,0.000004,-165.54704,1647.590011, + 0,1,0,0.000193,-165.54704,1477.544936, + 0,1,0,0.000193,-165.54704,1477.544936, + -0,1,0,0.000004,-165.54704,1647.590011, + 0,1,0,16.58708,-165.54704,1645.956345, + 0,1,0,0.000193,-165.54704,1477.544936, + 0,1,0,16.58708,-165.54704,1645.956345, + -0,1,0,16.587266,-165.54704,1479.178638, + -0,1,0,16.587266,-165.54704,1479.178638, + 0,1,0,16.58708,-165.54704,1645.956345, + 0,1,0,32.536728,-165.54704,1641.118092, + -0,1,0,16.587266,-165.54704,1479.178638, + 0,1,0,32.536728,-165.54704,1641.118092, + -0,1,0,32.536903,-165.54704,1484.016927, + -0,1,0,32.536903,-165.54704,1484.016927, + 0,1,0,32.536728,-165.54704,1641.118092, + 0,1,0,47.236011,-165.54704,1633.261182, + -0,1,0,32.536903,-165.54704,1484.016927, + 0,1,0,47.236011,-165.54704,1633.261182, + -0,1,0,47.236168,-165.54704,1491.87387, + -0,1,0,47.236168,-165.54704,1491.87387, + 0,1,0,47.236011,-165.54704,1633.261182, + -0,1,0,60.120045,-165.54704,1622.687553, + -0,1,0,47.236168,-165.54704,1491.87387, + -0,1,0,60.120045,-165.54704,1622.687553, + -0,1,0,60.120178,-165.54704,1502.447527, + -0,1,0,60.120178,-165.54704,1502.447527, + -0,1,0,60.120045,-165.54704,1622.687553, + -0,1,0,70.693703,-165.54704,1609.803543, + -0,1,0,60.120178,-165.54704,1502.447527, + -0,1,0,70.693703,-165.54704,1609.803543, + -0,1,0,70.693808,-165.54704,1515.331561, + -0,1,0,70.693808,-165.54704,1515.331561, + -0,1,0,70.693703,-165.54704,1609.803543, + 0,1,0,78.550645,-165.54704,1595.104277, + -0,1,0,70.693808,-165.54704,1515.331561, + 0,1,0,78.550645,-165.54704,1595.104277, + -0,1,0,78.550717,-165.54704,1530.030844, + -0,1,0,78.550717,-165.54704,1530.030844, + 0,1,0,78.550645,-165.54704,1595.104277, + 0,1,0,83.388934,-165.54704,1579.15464, + -0,1,0,78.550717,-165.54704,1530.030844, + 0,1,0,83.388934,-165.54704,1579.15464, + 0,1,0,83.388971,-165.54704,1545.980492, + 0,1,0,83.388971,-165.54704,1545.980492, + 0,1,0,83.388934,-165.54704,1579.15464, + 0,1,0,85.022636,-165.54704,1562.567568, + -0.032814,-0,0.999461,0.000193,-140.14704,1477.544936, + -0.162804,-0,0.986658,16.587266,-165.54704,1479.178638, + -0.227169,-0,0.973855,16.587266,-140.14704,1479.178638, + -0.162804,-0,0.986658,16.587266,-165.54704,1479.178638, + -0.032814,-0,0.999461,0.000193,-140.14704,1477.544936, + 0.032812,0,0.999462,0.000193,-165.54704,1477.544936, + -0.227169,-0,0.973855,16.587266,-140.14704,1479.178638, + -0.382684,-0,0.923879,32.536903,-165.54704,1484.016927, + -0.382684,-0,0.923879,32.536903,-140.14704,1484.016927, + -0.382684,-0,0.923879,32.536903,-165.54704,1484.016927, + -0.227169,-0,0.973855,16.587266,-140.14704,1479.178638, + -0.162804,-0,0.986658,16.587266,-165.54704,1479.178638, + -0.382684,-0,0.923879,32.536903,-165.54704,1484.016927, + -0.527989,-0,0.849251,47.236168,-140.14704,1491.87387, + -0.382684,-0,0.923879,32.536903,-140.14704,1484.016927, + -0.527989,-0,0.849251,47.236168,-140.14704,1491.87387, + -0.382684,-0,0.923879,32.536903,-165.54704,1484.016927, + -0.582555,-0,0.812791,47.236168,-165.54704,1491.87387, + -0.935939,-0,0.352161,78.550717,-165.54704,1530.030844, + -0.973856,-0,0.227166,83.388971,-140.14704,1545.980492, + -0.910826,-0,0.412791,78.550717,-140.14704,1530.030844, + -0.973856,-0,0.227166,83.388971,-140.14704,1545.980492, + -0.935939,-0,0.352161,78.550717,-165.54704,1530.030844, + -0.986659,-0,0.162802,83.388971,-165.54704,1545.980492, + -0.986659,-0,0.162802,83.388971,-165.54704,1545.980492, + -0.999462,-0,0.032812,85.022636,-140.14704,1562.567568, + -0.973856,-0,0.227166,83.388971,-140.14704,1545.980492, + -0.999462,-0,0.032812,85.022636,-140.14704,1562.567568, + -0.986659,-0,0.162802,83.388971,-165.54704,1545.980492, + -0.999461,-0,-0.032814,85.022636,-165.54704,1562.567568, + -0.999461,-0,-0.032814,85.022636,-165.54704,1562.567568, + -0.986658,-0,-0.162804,83.388934,-140.14704,1579.15464, + -0.999462,-0,0.032812,85.022636,-140.14704,1562.567568, + -0.986658,-0,-0.162804,83.388934,-140.14704,1579.15464, + -0.999461,-0,-0.032814,85.022636,-165.54704,1562.567568, + -0.973855,-0,-0.227169,83.388934,-165.54704,1579.15464, + -0.973855,-0,-0.227169,83.388934,-165.54704,1579.15464, + -0.935939,-0,-0.352163,78.550645,-140.14704,1595.104277, + -0.986658,-0,-0.162804,83.388934,-140.14704,1579.15464, + -0.935939,-0,-0.352163,78.550645,-140.14704,1595.104277, + -0.973855,-0,-0.227169,83.388934,-165.54704,1579.15464, + -0.910825,-0,-0.412793,78.550645,-165.54704,1595.104277, + -0.910825,-0,-0.412793,78.550645,-165.54704,1595.104277, + -0.849251,-0,-0.527989,70.693703,-140.14704,1609.803543, + -0.935939,-0,-0.352163,78.550645,-140.14704,1595.104277, + -0.849251,-0,-0.527989,70.693703,-140.14704,1609.803543, + -0.910825,-0,-0.412793,78.550645,-165.54704,1595.104277, + -0.812791,-0,-0.582555,70.693703,-165.54704,1609.803543, + -0.812791,-0,-0.582555,70.693703,-165.54704,1609.803543, + -0.729927,-0,-0.683525,60.120045,-140.14704,1622.687553, + -0.849251,-0,-0.527989,70.693703,-140.14704,1609.803543, + -0.729927,-0,-0.683525,60.120045,-140.14704,1622.687553, + -0.812791,-0,-0.582555,70.693703,-165.54704,1609.803543, + -0.683523,-0,-0.729929,60.120045,-165.54704,1622.687553, + -0.683523,-0,-0.729929,60.120045,-165.54704,1622.687553, + -0.582553,-0,-0.812793,47.236011,-140.14704,1633.261182, + -0.729927,-0,-0.683525,60.120045,-140.14704,1622.687553, + -0.582553,-0,-0.812793,47.236011,-140.14704,1633.261182, + -0.683523,-0,-0.729929,60.120045,-165.54704,1622.687553, + -0.527987,-0,-0.849252,47.236011,-165.54704,1633.261182, + -0.527987,-0,-0.849252,47.236011,-165.54704,1633.261182, + -0.412791,-0,-0.910826,32.536728,-140.14704,1641.118092, + -0.582553,-0,-0.812793,47.236011,-140.14704,1633.261182, + -0.412791,-0,-0.910826,32.536728,-140.14704,1641.118092, + -0.527987,-0,-0.849252,47.236011,-165.54704,1633.261182, + -0.352161,-0,-0.935939,32.536728,-165.54704,1641.118092, + -0.352161,-0,-0.935939,32.536728,-165.54704,1641.118092, + -0.227166,-0,-0.973856,16.58708,-140.14704,1645.956345, + -0.412791,-0,-0.910826,32.536728,-140.14704,1641.118092, + -0.227166,-0,-0.973856,16.58708,-140.14704,1645.956345, + -0.352161,-0,-0.935939,32.536728,-165.54704,1641.118092, + -0.162802,-0,-0.986659,16.58708,-165.54704,1645.956345, + -0.162802,-0,-0.986659,16.58708,-165.54704,1645.956345, + -0.032812,-0,-0.999462,0.000004,-140.14704,1647.590011, + -0.227166,-0,-0.973856,16.58708,-140.14704,1645.956345, + -0.032812,-0,-0.999462,0.000004,-140.14704,1647.590011, + -0.162802,-0,-0.986659,16.58708,-165.54704,1645.956345, + 0.032814,0,-0.999461,0.000004,-165.54704,1647.590011, + 0.032814,0,-0.999461,0.000004,-165.54704,1647.590011, + 0.162804,0,-0.986658,-16.587068,-140.14704,1645.956308, + -0.032812,-0,-0.999462,0.000004,-140.14704,1647.590011, + 0.162804,0,-0.986658,-16.587068,-140.14704,1645.956308, + 0.032814,0,-0.999461,0.000004,-165.54704,1647.590011, + 0.227169,0,-0.973855,-16.587068,-165.54704,1645.956308, + 0.227169,0,-0.973855,-16.587068,-165.54704,1645.956308, + 0.352163,0,-0.935939,-32.536705,-140.14704,1641.118019, + 0.162804,0,-0.986658,-16.587068,-140.14704,1645.956308, + 0.352163,0,-0.935939,-32.536705,-140.14704,1641.118019, + 0.227169,0,-0.973855,-16.587068,-165.54704,1645.956308, + 0.412793,0,-0.910825,-32.536705,-165.54704,1641.118019, + 0.412793,0,-0.910825,-32.536705,-165.54704,1641.118019, + 0.527989,0,-0.849251,-47.235971,-140.14704,1633.261077, + 0.352163,0,-0.935939,-32.536705,-140.14704,1641.118019, + 0.527989,0,-0.849251,-47.235971,-140.14704,1633.261077, + 0.412793,0,-0.910825,-32.536705,-165.54704,1641.118019, + 0.582555,0,-0.812791,-47.235971,-165.54704,1633.261077, + 0.582555,0,-0.812791,-47.235971,-165.54704,1633.261077, + 0.707108,-0,-0.707106,-60.119981,-140.14704,1622.687419, + 0.527989,0,-0.849251,-47.235971,-140.14704,1633.261077, + 0.707108,-0,-0.707106,-60.119981,-140.14704,1622.687419, + 0.582555,0,-0.812791,-47.235971,-165.54704,1633.261077, + 0.707108,0,-0.707106,-60.119981,-165.54704,1622.687419, + 0.707108,-0,-0.707106,-60.119981,-140.14704,1622.687419, + 0.812793,-0,-0.582553,-70.69361,-165.54704,1609.803386, + 0.849252,-0,-0.527987,-70.69361,-140.14704,1609.803386, + 0.812793,-0,-0.582553,-70.69361,-165.54704,1609.803386, + 0.707108,-0,-0.707106,-60.119981,-140.14704,1622.687419, + 0.707108,0,-0.707106,-60.119981,-165.54704,1622.687419, + 0.849252,-0,-0.527987,-70.69361,-140.14704,1609.803386, + 0.910826,-0,-0.412791,-78.55052,-165.54704,1595.104103, + 0.935939,0,-0.352161,-78.55052,-140.14704,1595.104103, + 0.910826,-0,-0.412791,-78.55052,-165.54704,1595.104103, + 0.849252,-0,-0.527987,-70.69361,-140.14704,1609.803386, + 0.812793,-0,-0.582553,-70.69361,-165.54704,1609.803386, + 0.935939,0,-0.352161,-78.55052,-140.14704,1595.104103, + 0.973856,0,-0.227166,-83.388773,-165.54704,1579.154455, + 0.986659,0,-0.162802,-83.388773,-140.14704,1579.154455, + 0.973856,0,-0.227166,-83.388773,-165.54704,1579.154455, + 0.935939,0,-0.352161,-78.55052,-140.14704,1595.104103, + 0.910826,-0,-0.412791,-78.55052,-165.54704,1595.104103, + 0.986659,0,-0.162802,-83.388773,-140.14704,1579.154455, + 0.999462,0,-0.032812,-85.022439,-165.54704,1562.567379, + 0.999461,0,0.032814,-85.022439,-140.14704,1562.567379, + 0.999462,0,-0.032812,-85.022439,-165.54704,1562.567379, + 0.986659,0,-0.162802,-83.388773,-140.14704,1579.154455, + 0.973856,0,-0.227166,-83.388773,-165.54704,1579.154455, + 0.999461,0,0.032814,-85.022439,-140.14704,1562.567379, + 0.986658,0,0.162804,-83.388736,-165.54704,1545.980306, + 0.973855,0,0.227169,-83.388736,-140.14704,1545.980306, + 0.986658,0,0.162804,-83.388736,-165.54704,1545.980306, + 0.999461,0,0.032814,-85.022439,-140.14704,1562.567379, + 0.999462,0,-0.032812,-85.022439,-165.54704,1562.567379, + 0.973855,0,0.227169,-83.388736,-140.14704,1545.980306, + 0.935939,0,0.352163,-78.550447,-165.54704,1530.030669, + 0.910825,0,0.412793,-78.550447,-140.14704,1530.030669, + 0.935939,0,0.352163,-78.550447,-165.54704,1530.030669, + 0.973855,0,0.227169,-83.388736,-140.14704,1545.980306, + 0.986658,0,0.162804,-83.388736,-165.54704,1545.980306, + 0.910825,0,0.412793,-78.550447,-140.14704,1530.030669, + 0.849251,0,0.527989,-70.693505,-165.54704,1515.331404, + 0.812791,0,0.582555,-70.693505,-140.14704,1515.331404, + 0.849251,0,0.527989,-70.693505,-165.54704,1515.331404, + 0.910825,0,0.412793,-78.550447,-140.14704,1530.030669, + 0.935939,0,0.352163,-78.550447,-165.54704,1530.030669, + 0.812791,0,0.582555,-70.693505,-140.14704,1515.331404, + 0.729927,0,0.683525,-60.119847,-165.54704,1502.447394, + 0.683523,0,0.729929,-60.119847,-140.14704,1502.447394, + 0.729927,0,0.683525,-60.119847,-165.54704,1502.447394, + 0.812791,0,0.582555,-70.693505,-140.14704,1515.331404, + 0.849251,0,0.527989,-70.693505,-165.54704,1515.331404, + 0.683523,0,0.729929,-60.119847,-140.14704,1502.447394, + 0.582553,0,0.812793,-47.235814,-165.54704,1491.873764, + 0.527987,0,0.849252,-47.235814,-140.14704,1491.873764, + 0.582553,0,0.812793,-47.235814,-165.54704,1491.873764, + 0.683523,0,0.729929,-60.119847,-140.14704,1502.447394, + 0.729927,0,0.683525,-60.119847,-165.54704,1502.447394, + 0.527987,0,0.849252,-47.235814,-140.14704,1491.873764, + 0.412791,0,0.910826,-32.53653,-165.54704,1484.016855, + 0.352161,0,0.935939,-32.53653,-140.14704,1484.016855, + 0.412791,0,0.910826,-32.53653,-165.54704,1484.016855, + 0.527987,0,0.849252,-47.235814,-140.14704,1491.873764, + 0.582553,0,0.812793,-47.235814,-165.54704,1491.873764, + 0.352161,0,0.935939,-32.53653,-140.14704,1484.016855, + 0.227166,0,0.973856,-16.586883,-165.54704,1479.178602, + 0.162802,0,0.986659,-16.586883,-140.14704,1479.178602, + 0.227166,0,0.973856,-16.586883,-165.54704,1479.178602, + 0.352161,0,0.935939,-32.53653,-140.14704,1484.016855, + 0.412791,0,0.910826,-32.53653,-165.54704,1484.016855, + 0.162802,0,0.986659,-16.586883,-140.14704,1479.178602, + 0.032812,0,0.999462,0.000193,-165.54704,1477.544936, + -0.032814,-0,0.999461,0.000193,-140.14704,1477.544936, + 0.032812,0,0.999462,0.000193,-165.54704,1477.544936, + 0.162802,0,0.986659,-16.586883,-140.14704,1479.178602, + 0.227166,0,0.973856,-16.586883,-165.54704,1479.178602, + 0.849252,0,-0.527987,-70.69361,-301.60976,1609.803386, + 0.910826,0,-0.412791,-78.55052,-327.00976,1595.104103, + 0.935939,0,-0.352161,-78.55052,-301.60976,1595.104103, + 0.910826,0,-0.412791,-78.55052,-327.00976,1595.104103, + 0.849252,0,-0.527987,-70.69361,-301.60976,1609.803386, + 0.812793,0,-0.582553,-70.69361,-327.00976,1609.803386, + -0.162802,-0,-0.986659,16.58708,-327.00976,1645.956345, + -0.032812,-0,-0.999462,0.000004,-301.60976,1647.590011, + -0.227166,-0,-0.973856,16.58708,-301.60976,1645.956345, + -0.032812,-0,-0.999462,0.000004,-301.60976,1647.590011, + -0.162802,-0,-0.986659,16.58708,-327.00976,1645.956345, + 0.032814,0,-0.999461,0.000004,-327.00976,1647.590011, + 0.227169,0,-0.973855,-16.587068,-327.00976,1645.956308, + 0.352163,0,-0.935939,-32.536705,-301.60976,1641.118019, + 0.162804,0,-0.986658,-16.587068,-301.60976,1645.956308, + 0.352163,0,-0.935939,-32.536705,-301.60976,1641.118019, + 0.227169,0,-0.973855,-16.587068,-327.00976,1645.956308, + 0.412793,0,-0.910825,-32.536705,-327.00976,1641.118019, + 0.032814,0,-0.999461,0.000004,-327.00976,1647.590011, + 0.162804,0,-0.986658,-16.587068,-301.60976,1645.956308, + -0.032812,-0,-0.999462,0.000004,-301.60976,1647.590011, + 0.162804,0,-0.986658,-16.587068,-301.60976,1645.956308, + 0.032814,0,-0.999461,0.000004,-327.00976,1647.590011, + 0.227169,0,-0.973855,-16.587068,-327.00976,1645.956308, + 0.527987,0,0.849252,-47.235814,-301.60976,1491.873764, + 0.412791,0,0.910826,-32.53653,-327.00976,1484.016855, + 0.352161,0,0.935939,-32.53653,-301.60976,1484.016855, + 0.412791,0,0.910826,-32.53653,-327.00976,1484.016855, + 0.527987,0,0.849252,-47.235814,-301.60976,1491.873764, + 0.582553,0,0.812793,-47.235814,-327.00976,1491.873764, + 0.910825,0,0.412793,-78.550447,-301.60976,1530.030669, + 0.849251,0,0.527989,-70.693505,-327.00976,1515.331404, + 0.812791,0,0.582555,-70.693505,-301.60976,1515.331404, + 0.849251,0,0.527989,-70.693505,-327.00976,1515.331404, + 0.910825,0,0.412793,-78.550447,-301.60976,1530.030669, + 0.935939,0,0.352163,-78.550447,-327.00976,1530.030669, + 0.707108,0,-0.707106,-60.119981,-301.60976,1622.687419, + 0.812793,0,-0.582553,-70.69361,-327.00976,1609.803386, + 0.849252,0,-0.527987,-70.69361,-301.60976,1609.803386, + 0.812793,0,-0.582553,-70.69361,-327.00976,1609.803386, + 0.707108,0,-0.707106,-60.119981,-301.60976,1622.687419, + 0.707108,0,-0.707106,-60.119981,-327.00976,1622.687419, + 0.352161,0,0.935939,-32.53653,-301.60976,1484.016855, + 0.227166,0,0.973856,-16.586883,-327.00976,1479.178602, + 0.162802,0,0.986659,-16.586883,-301.60976,1479.178602, + 0.227166,0,0.973856,-16.586883,-327.00976,1479.178602, + 0.352161,0,0.935939,-32.53653,-301.60976,1484.016855, + 0.412791,0,0.910826,-32.53653,-327.00976,1484.016855, + 0.683523,0,0.729929,-60.119847,-301.60976,1502.447394, + 0.582553,0,0.812793,-47.235814,-327.00976,1491.873764, + 0.527987,0,0.849252,-47.235814,-301.60976,1491.873764, + 0.582553,0,0.812793,-47.235814,-327.00976,1491.873764, + 0.683523,0,0.729929,-60.119847,-301.60976,1502.447394, + 0.729927,0,0.683525,-60.119847,-327.00976,1502.447394, + 0.986659,0,-0.162802,-83.388773,-301.60976,1579.154455, + 0.999462,0,-0.032812,-85.022439,-327.00976,1562.567379, + 0.999461,0,0.032814,-85.022439,-301.60976,1562.567379, + 0.999462,0,-0.032812,-85.022439,-327.00976,1562.567379, + 0.986659,0,-0.162802,-83.388773,-301.60976,1579.154455, + 0.973856,0,-0.227166,-83.388773,-327.00976,1579.154455, + 0.162802,0,0.986659,-16.586883,-301.60976,1479.178602, + 0.032812,0,0.999462,0.000193,-327.00976,1477.544936, + -0.032814,-0,0.999461,0.000193,-301.60976,1477.544936, + 0.032812,0,0.999462,0.000193,-327.00976,1477.544936, + 0.162802,0,0.986659,-16.586883,-301.60976,1479.178602, + 0.227166,0,0.973856,-16.586883,-327.00976,1479.178602, + -0.032814,-0,0.999461,0.000193,-301.60976,1477.544936, + -0.162804,-0,0.986658,16.587266,-327.00976,1479.178638, + -0.227169,-0,0.973855,16.587266,-301.60976,1479.178638, + -0.162804,-0,0.986658,16.587266,-327.00976,1479.178638, + -0.032814,-0,0.999461,0.000193,-301.60976,1477.544936, + 0.032812,0,0.999462,0.000193,-327.00976,1477.544936, + -0.227169,-0,0.973855,16.587266,-301.60976,1479.178638, + -0.382684,-0,0.923879,32.536903,-327.00976,1484.016927, + -0.382684,-0,0.923879,32.536903,-301.60976,1484.016927, + -0.382684,-0,0.923879,32.536903,-327.00976,1484.016927, + -0.227169,-0,0.973855,16.587266,-301.60976,1479.178638, + -0.162804,-0,0.986658,16.587266,-327.00976,1479.178638, + -0.382684,-0,0.923879,32.536903,-327.00976,1484.016927, + -0.527989,-0,0.849251,47.236168,-301.60976,1491.87387, + -0.382684,-0,0.923879,32.536903,-301.60976,1484.016927, + -0.527989,-0,0.849251,47.236168,-301.60976,1491.87387, + -0.382684,-0,0.923879,32.536903,-327.00976,1484.016927, + -0.582555,-0,0.812791,47.236168,-327.00976,1491.87387, + -0.582555,-0,0.812791,47.236168,-327.00976,1491.87387, + -0.707108,-0,0.707106,60.120178,-301.60976,1502.447527, + -0.527989,-0,0.849251,47.236168,-301.60976,1491.87387, + -0.707108,-0,0.707106,60.120178,-301.60976,1502.447527, + -0.582555,-0,0.812791,47.236168,-327.00976,1491.87387, + -0.707108,-0,0.707106,60.120178,-327.00976,1502.447527, + -0.812793,-0,0.582553,70.693808,-327.00976,1515.331561, + -0.707108,-0,0.707106,60.120178,-301.60976,1502.447527, + -0.707108,-0,0.707106,60.120178,-327.00976,1502.447527, + -0.707108,-0,0.707106,60.120178,-301.60976,1502.447527, + -0.812793,-0,0.582553,70.693808,-327.00976,1515.331561, + -0.849252,-0,0.527987,70.693808,-301.60976,1515.331561, + -0.910826,-0,0.412791,78.550717,-327.00976,1530.030844, + -0.849252,-0,0.527987,70.693808,-301.60976,1515.331561, + -0.812793,-0,0.582553,70.693808,-327.00976,1515.331561, + -0.849252,-0,0.527987,70.693808,-301.60976,1515.331561, + -0.910826,-0,0.412791,78.550717,-327.00976,1530.030844, + -0.935939,-0,0.352161,78.550717,-301.60976,1530.030844, + -0.973856,-0,0.227166,83.388971,-327.00976,1545.980492, + -0.935939,-0,0.352161,78.550717,-301.60976,1530.030844, + -0.910826,-0,0.412791,78.550717,-327.00976,1530.030844, + -0.935939,-0,0.352161,78.550717,-301.60976,1530.030844, + -0.973856,-0,0.227166,83.388971,-327.00976,1545.980492, + -0.986659,-0,0.162802,83.388971,-301.60976,1545.980492, + -0.999462,-0,0.032812,85.022636,-327.00976,1562.567568, + -0.986659,-0,0.162802,83.388971,-301.60976,1545.980492, + -0.973856,-0,0.227166,83.388971,-327.00976,1545.980492, + -0.986659,-0,0.162802,83.388971,-301.60976,1545.980492, + -0.999462,-0,0.032812,85.022636,-327.00976,1562.567568, + -0.999461,-0,-0.032814,85.022636,-301.60976,1562.567568, + -0.986658,-0,-0.162804,83.388934,-327.00976,1579.15464, + -0.999461,-0,-0.032814,85.022636,-301.60976,1562.567568, + -0.999462,-0,0.032812,85.022636,-327.00976,1562.567568, + -0.999461,-0,-0.032814,85.022636,-301.60976,1562.567568, + -0.986658,-0,-0.162804,83.388934,-327.00976,1579.15464, + -0.973855,-0,-0.227169,83.388934,-301.60976,1579.15464, + -0.935939,-0,-0.352163,78.550645,-327.00976,1595.104277, + -0.973855,-0,-0.227169,83.388934,-301.60976,1579.15464, + -0.986658,-0,-0.162804,83.388934,-327.00976,1579.15464, + -0.973855,-0,-0.227169,83.388934,-301.60976,1579.15464, + -0.935939,-0,-0.352163,78.550645,-327.00976,1595.104277, + -0.910825,-0,-0.412793,78.550645,-301.60976,1595.104277, + -0.849251,-0,-0.527989,70.693703,-327.00976,1609.803543, + -0.910825,-0,-0.412793,78.550645,-301.60976,1595.104277, + -0.935939,-0,-0.352163,78.550645,-327.00976,1595.104277, + -0.910825,-0,-0.412793,78.550645,-301.60976,1595.104277, + -0.849251,-0,-0.527989,70.693703,-327.00976,1609.803543, + -0.812791,-0,-0.582555,70.693703,-301.60976,1609.803543, + -0.707106,-0,-0.707108,60.120045,-327.00976,1622.687553, + -0.812791,-0,-0.582555,70.693703,-301.60976,1609.803543, + -0.849251,-0,-0.527989,70.693703,-327.00976,1609.803543, + -0.812791,-0,-0.582555,70.693703,-301.60976,1609.803543, + -0.707106,-0,-0.707108,60.120045,-327.00976,1622.687553, + -0.707106,-0,-0.707108,60.120045,-301.60976,1622.687553, + -0.707106,-0,-0.707108,60.120045,-327.00976,1622.687553, + -0.582553,-0,-0.812793,47.236011,-301.60976,1633.261182, + -0.707106,-0,-0.707108,60.120045,-301.60976,1622.687553, + -0.582553,-0,-0.812793,47.236011,-301.60976,1633.261182, + -0.707106,-0,-0.707108,60.120045,-327.00976,1622.687553, + -0.527987,-0,-0.849252,47.236011,-327.00976,1633.261182, + -0.527987,-0,-0.849252,47.236011,-327.00976,1633.261182, + -0.412791,-0,-0.910826,32.536728,-301.60976,1641.118092, + -0.582553,-0,-0.812793,47.236011,-301.60976,1633.261182, + -0.412791,-0,-0.910826,32.536728,-301.60976,1641.118092, + -0.527987,-0,-0.849252,47.236011,-327.00976,1633.261182, + -0.352161,-0,-0.935939,32.536728,-327.00976,1641.118092, + -0.352161,-0,-0.935939,32.536728,-327.00976,1641.118092, + -0.227166,-0,-0.973856,16.58708,-301.60976,1645.956345, + -0.412791,-0,-0.910826,32.536728,-301.60976,1641.118092, + -0.227166,-0,-0.973856,16.58708,-301.60976,1645.956345, + -0.352161,-0,-0.935939,32.536728,-327.00976,1641.118092, + -0.162802,-0,-0.986659,16.58708,-327.00976,1645.956345, + -1,-0,-0.000001,-29.712222,-140.14704,1681.416397, + -0.947173,-0,-0.320723,-27.450503,-0,1670.046016, + -0.896537,-0,-0.442969,-27.450503,-140.14704,1670.046016, + -0.947173,-0,-0.320723,-27.450503,-0,1670.046016, + -1,-0,-0.000001,-29.712222,-140.14704,1681.416397, + -1,-0,-0.000001,-29.712222,-0,1681.416397, + 0.382684,-0,-0.923879,11.370427,-0,1653.965901, + 0.000001,-0,-1,0.000046,-140.14704,1651.704181, + 0.000001,-0,-1,0.000046,-0,1651.704181, + 0.000001,-0,-1,0.000046,-140.14704,1651.704181, + 0.382684,-0,-0.923879,11.370427,-0,1653.965901, + 0.382684,-0,-0.923879,11.370427,-140.14704,1653.965901, + -0.896538,-0,0.442967,-27.450523,-140.14704,1692.786782, + -0.707107,-0,0.707106,-21.009727,-0,1702.426133, + -0.947174,-0,0.320721,-27.450523,-0,1692.786782, + -0.707107,-0,0.707106,-21.009727,-0,1702.426133, + -0.896538,-0,0.442967,-27.450523,-140.14704,1692.786782, + -0.707107,-0,0.707106,-21.009727,-140.14704,1702.426133, + 0.896538,0,-0.442967,27.450563,-0,1670.046065, + 0.707107,-0,-0.707106,21.009767,-140.14704,1660.406714, + 0.707107,0,-0.707106,21.009767,-0,1660.406714, + 0.707107,-0,-0.707106,21.009767,-140.14704,1660.406714, + 0.896538,0,-0.442967,27.450563,-0,1670.046065, + 0.947174,0,-0.320721,27.450563,-140.14704,1670.046065, + -1,-0,-0.000001,-29.712222,-140.14704,1681.416397, + -0.947174,-0,0.320721,-27.450523,-0,1692.786782, + -1,-0,-0.000001,-29.712222,-0,1681.416397, + -0.947174,-0,0.320721,-27.450523,-0,1692.786782, + -1,-0,-0.000001,-29.712222,-140.14704,1681.416397, + -0.896538,-0,0.442967,-27.450523,-140.14704,1692.786782, + 0.000001,-0,-1,0.000046,-140.14704,1651.704181, + -0.320721,-0,-0.947174,-11.370339,-0,1653.965881, + 0.000001,-0,-1,0.000046,-0,1651.704181, + -0.320721,-0,-0.947174,-11.370339,-0,1653.965881, + 0.000001,-0,-1,0.000046,-140.14704,1651.704181, + -0.442967,-0,-0.896538,-11.370339,-140.14704,1653.965881, + -0.382684,-0,0.923879,-11.370387,-140.14704,1708.866946, + -0.000001,0,1,-0.000006,-0,1711.128666, + -0.382684,-0,0.923879,-11.370387,-0,1708.866946, + -0.000001,0,1,-0.000006,-0,1711.128666, + -0.382684,-0,0.923879,-11.370387,-140.14704,1708.866946, + -0.000001,0,1,-0.000006,-140.14704,1711.128666 +}; +static const struct gllist robot_rotator_half_frame = { GL_N3F_V3F, GL_TRIANGLES, 1290, robot_rotator_half_data, 0 }; +const struct gllist *robot_rotator_half = &robot_rotator_half_frame; diff --git a/hacks/glx/robot.dxf b/hacks/glx/robot.dxf new file mode 100644 index 0000000..33337a2 --- /dev/null +++ b/hacks/glx/robot.dxf @@ -0,0 +1,185616 @@ + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 8 +body_half_outside +10 +49.3833285852636 +20 +-973.755695339679 +30 +2091.49823824434 +11 +-1.46818399649623 +21 +-975.178141079999 +31 +2078.18338184642 + 0 +LINE + 8 +body_half_outside +10 +49.3833285852636 +20 +-973.755695339679 +30 +2091.49823824434 +11 +104.493582702864 +21 +-954.855979397759 +31 +2142.57132329634 + 0 +LINE + 8 +body_half_outside +10 +49.3833285852636 +20 +-973.755695339678 +30 +1978.90616179826 +11 +104.493582702864 +21 +-970.431454266559 +31 +2000.14082085794 + 0 +LINE + 8 +body_half_outside +10 +47.4423855126237 +20 +-935.483454058559 +30 +2215.03930219042 +11 +104.493582702864 +21 +-941.451475609919 +31 +2182.48702219986 + 0 +LINE + 8 +body_half_outside +10 +49.3833285852636 +20 +-973.755695339678 +30 +1978.90616179826 +11 +7.02533393134383 +21 +-975.148943779999 +31 +1991.94707744866 + 0 +LINE + 8 +body_half_outside +10 +104.493582702864 +20 +-954.855979397759 +30 +2142.57132329634 +11 +48.5792115854235 +21 +-957.900066537919 +31 +2152.7213325213 + 0 +LINE + 8 +body_half_outside +10 +48.5792115854235 +20 +-957.900066537919 +30 +2152.7213325213 +11 +104.493582702864 +21 +-941.451475609919 +31 +2182.48702219986 + 0 +3DFACE + 8 +body_half_outside +10 +104.493609641047 +20 +-876.169915138752 +30 +2001.23529816273 +11 +180.675224578544 +21 +-881.220764951522 +31 +2017.88600937388 +12 +180.675224578544 +22 +-876.169825263419 +32 +2001.23529268221 +13 +180.675224578544 +23 +-876.169825263419 +33 +2001.23529268221 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-881.220764951522 +30 +2017.88600937388 +11 +104.493609641047 +21 +-876.169915138752 +31 +2001.23529816273 +12 +104.493608114757 +22 +-881.220857485245 +32 +2017.88602361794 +13 +104.493608114757 +23 +-881.220857485245 +33 +2017.88602361794 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-731.403895497386 +30 +1972.43955887653 +11 +104.493591159588 +21 +-720.365490157703 +31 +1985.88990169709 +12 +104.493594381798 +22 +-731.40390918009 +32 +1972.4395492014 +13 +104.493594381798 +23 +-731.40390918009 +33 +1972.4395492014 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493591159588 +20 +-720.365490157703 +30 +1985.88990169709 +11 +180.675224578544 +21 +-731.403895497386 +31 +1972.43955887653 +12 +180.675224578544 +22 +-720.365482284693 +32 +1985.88990429309 +13 +180.675224578544 +23 +-720.365482284693 +33 +1985.88990429309 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493610580936 +20 +-843.478858324204 +30 +1961.40113017901 +11 +180.675224578544 +21 +-828.133397265575 +31 +1953.19886468436 +12 +104.493609641054 +22 +-828.133461858565 +32 +1953.19884488255 +13 +104.493609641054 +23 +-828.133461858565 +33 +1953.19884488255 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-828.133397265575 +30 +1953.19886468436 +11 +104.493610580936 +21 +-843.478858324204 +31 +1961.40113017901 +12 +180.675224578544 +22 +-843.478785654691 +32 +1961.40114566384 +13 +180.675224578544 +23 +-843.478785654691 +33 +1961.40114566384 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-778.906875772646 +20 +-154.93421062823 +30 +1614.7610800213 +11 +-878.79625075709 +21 +-89.3648841254364 +31 +1427.8983600213 +12 +-870.542978388701 +22 +-173.161764737035 +32 +1427.8983600213 +13 +-870.542978388701 +23 +-173.161764737035 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-878.79625075709 +20 +-89.3648841254364 +30 +1427.8983600213 +11 +-778.906875772646 +21 +-154.93421062823 +31 +1614.7610800213 +12 +-794.166563605455 +22 +1.80477854883065e-13 +32 +1614.7610800213 +13 +-794.166563605455 +23 +1.80477854883065e-13 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-878.79625075709 +20 +-89.3648841254364 +30 +1427.8983600213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-887.597923605455 +22 +3.60955709766131e-13 +32 +1427.8983600213 +13 +-887.597923605455 +23 +3.60955709766131e-13 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +978.352295145615 +20 +-194.606371158736 +30 +2361.46489814399 +11 +863.207469797099 +21 +-357.552241131722 +31 +2455.6433200213 +12 +921.587710511789 +22 +-381.734128610352 +32 +2361.46489814399 +13 +921.587710511789 +23 +-381.734128610352 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +863.207469797099 +20 +-357.552241131722 +30 +2455.6433200213 +11 +978.352295145615 +21 +-194.606371158736 +31 +2361.46489814399 +12 +887.227326571027 +22 +-278.369385106107 +32 +2455.6433200213 +13 +887.227326571027 +23 +-278.369385106107 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +887.227326571027 +20 +-278.369385106107 +30 +2455.6433200213 +11 +978.352295145615 +21 +-194.606371158736 +31 +2361.46489814399 +12 +914.651020883606 +22 +-187.965580500561 +32 +2455.6433200213 +13 +914.651020883606 +23 +-187.965580500561 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +914.651020883606 +20 +-187.965580500561 +30 +2455.6433200213 +11 +978.352295145615 +21 +-194.606371158736 +31 +2361.46489814399 +12 +916.376162171087 +22 +-182.278551827737 +32 +2455.6433200213 +13 +916.376162171087 +23 +-182.278551827737 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +415.26146157539 +20 +-621.482696406623 +30 +1427.8983600213 +11 +321.791703197793 +21 +-776.873894119249 +31 +1241.03564002131 +12 +467.169144021928 +22 +-699.168033082722 +32 +1241.03564002131 +13 +467.169144021928 +23 +-699.168033082722 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.873894119249 +30 +1241.03564002131 +11 +415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +286.037069662455 +22 +-690.554572920556 +32 +1427.8983600213 +13 +286.037069662455 +23 +-690.554572920556 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-470.848959476119 +20 +-704.67526609701 +30 +796.153149972084 +11 +-590.997993226901 +21 +-590.997993226901 +31 +738.078199114136 +12 +-464.344143695271 +22 +-694.940121314314 +32 +738.078199114136 +13 +-464.344143695271 +23 +-694.940121314314 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-590.997993226901 +20 +-590.997993226901 +30 +738.078199114136 +11 +-470.848959476119 +21 +-704.67526609701 +31 +796.153149972084 +12 +-599.277053327022 +22 +-599.277053327022 +32 +796.153149972084 +13 +-599.277053327022 +23 +-599.277053327022 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +2549.0746800213 +11 +0.0 +21 +-840.882243605455 +31 +2455.6433200213 +12 +164.047987682633 +22 +-824.724927080674 +32 +2455.6433200213 +13 +164.047987682633 +23 +-824.724927080674 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +2455.6433200213 +11 +164.047987682633 +21 +-824.724927080674 +31 +2549.0746800213 +12 +0.0 +22 +-840.882243605455 +32 +2549.0746800213 +13 +0.0 +23 +-840.882243605455 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +2549.0746800213 +11 +164.047987682633 +21 +-824.724927080674 +31 +2549.0746800213 +12 +126.903660366379 +22 +-828.38332400481 +32 +2549.0746800213 +13 +126.903660366379 +23 +-828.38332400481 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +2549.0746800213 +11 +126.903660366379 +21 +-828.38332400481 +31 +2549.0746800213 +12 +42.4327751671525 +22 +-836.702980030903 +32 +2549.0746800213 +13 +42.4327751671525 +23 +-836.702980030903 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +2549.0746800213 +11 +467.169144021928 +21 +-699.168033082722 +31 +2455.6433200213 +12 +594.593536632776 +22 +-594.593536632776 +32 +2455.6433200213 +13 +594.593536632776 +23 +-594.593536632776 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +594.593536632776 +21 +-594.593536632776 +31 +2549.0746800213 +12 +467.169144021928 +22 +-699.168033082722 +32 +2549.0746800213 +13 +467.169144021928 +23 +-699.168033082722 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +2549.0746800213 +11 +594.593536632776 +21 +-594.593536632776 +31 +2549.0746800213 +12 +578.083233221301 +22 +-608.143192472719 +32 +2549.0746800213 +13 +578.083233221301 +23 +-608.143192472719 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +2549.0746800213 +11 +578.083233221301 +21 +-608.143192472719 +31 +2549.0746800213 +12 +512.438726622327 +22 +-662.016246772909 +32 +2549.0746800213 +13 +512.438726622327 +23 +-662.016246772909 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-814.429823327873 +20 +1.80477854883065e-13 +30 +682.822310520627 +11 +-768.954752250597 +21 +-152.954610178005 +31 +631.979456702016 +12 +-798.780782641381 +22 +-158.887376492573 +32 +682.822310520627 +13 +-798.780782641381 +23 +-158.887376492573 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-768.954752250597 +20 +-152.954610178005 +30 +631.979456702016 +11 +-814.429823327873 +21 +1.80477854883065e-13 +31 +682.822310520627 +12 +-784.019466456977 +22 +1.80477854883065e-13 +32 +631.979456702016 +13 +-784.019466456977 +23 +1.80477854883065e-13 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +381.734128610352 +20 +-921.587710511788 +30 +2361.46489814399 +11 +203.671280618918 +21 +-1023.92467246733 +31 +2258.00680432354 +12 +399.51558814382 +22 +-964.515951276275 +32 +2258.00680432354 +13 +399.51558814382 +23 +-964.515951276275 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +203.671280618918 +20 +-1023.92467246733 +30 +2258.00680432354 +11 +381.734128610352 +21 +-921.587710511788 +31 +2361.46489814399 +12 +194.606371158736 +22 +-978.352295145615 +32 +2361.46489814399 +13 +194.606371158736 +23 +-978.352295145615 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +357.552241131722 +20 +-863.2074697971 +30 +2455.6433200213 +11 +194.606371158736 +21 +-978.352295145615 +31 +2361.46489814399 +12 +381.734128610352 +22 +-921.587710511788 +32 +2361.46489814399 +13 +381.734128610352 +23 +-921.587710511788 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +194.606371158736 +20 +-978.352295145615 +30 +2361.46489814399 +11 +357.552241131722 +21 +-863.2074697971 +31 +2455.6433200213 +12 +182.278551827736 +22 +-916.376162171087 +32 +2455.6433200213 +13 +182.278551827736 +23 +-916.376162171087 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +182.278551827736 +20 +-916.376162171087 +30 +2455.6433200213 +11 +357.552241131722 +21 +-863.2074697971 +31 +2455.6433200213 +12 +323.520353242804 +22 +-873.5309301251 +32 +2455.6433200213 +13 +323.520353242804 +23 +-873.5309301251 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +182.278551827736 +20 +-916.376162171087 +30 +2455.6433200213 +11 +323.520353242804 +21 +-873.5309301251 +31 +2455.6433200213 +12 +233.261899594599 +22 +-900.91053270681 +32 +2455.6433200213 +13 +233.261899594599 +23 +-900.91053270681 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +798.780782641381 +20 +-158.887376492573 +30 +682.822310520627 +11 +835.797377356766 +21 +1.80477854883065e-13 +31 +738.078199114136 +12 +819.73776511114 +22 +-163.055979488767 +32 +738.078199114136 +13 +819.73776511114 +23 +-163.055979488767 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +835.797377356766 +20 +1.80477854883065e-13 +30 +738.078199114136 +11 +798.780782641381 +21 +-158.887376492573 +31 +682.822310520627 +12 +814.429823327873 +22 +1.80477854883065e-13 +32 +682.822310520627 +13 +814.429823327873 +23 +1.80477854883065e-13 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-723.84293286299 +20 +-790.84270017674 +30 +2109.1268343449 +11 +-768.602809842621 +21 +-861.72900857618 +31 +2086.28270221439 +12 +-783.644995364665 +22 +-846.504456965985 +32 +2095.12279472996 +13 +-783.644995364665 +23 +-846.504456965985 +33 +2095.12279472996 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-768.602809842621 +20 +-861.72900857618 +30 +2086.28270221439 +11 +-723.84293286299 +21 +-790.84270017674 +31 +2109.1268343449 +12 +-703.270205185374 +22 +-808.916878172158 +32 +2098.19892992261 +13 +-703.270205185374 +23 +-808.916878172158 +33 +2098.19892992261 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1023.92467246733 +20 +-203.671280618918 +30 +2258.00680432354 +11 +-1072.40303302985 +21 +3.60955709766131e-13 +31 +2148.21162800104 +12 +-1051.79710945546 +22 +-209.215453044867 +32 +2148.21162800104 +13 +-1051.79710945546 +23 +-209.215453044867 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1072.40303302985 +20 +3.60955709766131e-13 +30 +2148.21162800104 +11 +-1023.92467246733 +21 +-203.671280618918 +31 +2258.00680432354 +12 +-1043.98454271904 +22 +3.60955709766131e-13 +32 +2258.00680432354 +13 +-1043.98454271904 +23 +3.60955709766131e-13 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +279.792110043812 +20 +-1038.25578712258 +30 +2035.20217666346 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +287.457754814725 +22 +-1035.93043920361 +32 +2011.5925230317 +13 +287.457754814725 +23 +-1035.93043920361 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +279.792110043812 +21 +-1038.25578712258 +31 +2035.20217666346 +12 +210.691411720441 +22 +-1059.21725479392 +32 +2058.8118770109 +13 +210.691411720441 +23 +-1059.21725479392 +33 +2058.8118770109 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +279.792110043812 +21 +-1038.25578712258 +31 +2035.20217666346 +12 +287.457769982496 +22 +-1035.93043460251 +32 +2058.8118770109 +13 +287.457769982496 +23 +-1035.93043460251 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +806.222012671193 +20 +-670.885845335315 +30 +1850.69961858573 +11 +180.675224578544 +21 +-637.259985333474 +31 +1878.29564871262 +12 +180.675224578544 +22 +-670.885845335315 +32 +1850.69961858573 +13 +180.675224578544 +23 +-670.885845335315 +33 +1850.69961858573 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-637.259985333474 +30 +1878.29564871262 +11 +806.222012671193 +21 +-670.885845335315 +31 +1850.69961858573 +12 +843.01369820043 +22 +-637.259985333474 +32 +1878.29564871262 +13 +843.01369820043 +23 +-637.259985333474 +33 +1878.29564871262 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +806.222028237971 +20 +-670.885845335315 +30 +2219.70473474119 +11 +180.675224578544 +21 +-709.249312269842 +31 +2240.21043503138 +12 +180.675224578544 +22 +-670.885845335315 +32 +2219.70473474119 +13 +180.675224578544 +23 +-670.885845335315 +33 +2219.70473474119 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-709.249312269842 +30 +2240.21043503138 +11 +806.222028237971 +21 +-670.885845335315 +31 +2219.70473474119 +12 +767.904956185432 +22 +-709.249312269841 +32 +2240.21043503138 +13 +767.904956185432 +23 +-709.249312269841 +33 +2240.21043503138 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +767.904956185432 +20 +-709.249312269841 +30 +2240.21043503138 +11 +180.675224578544 +21 +-750.87609961724 +31 +2252.83778292244 +12 +180.675224578544 +22 +-709.249312269842 +32 +2240.21043503138 +13 +180.675224578544 +23 +-709.249312269842 +33 +2240.21043503138 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-750.87609961724 +30 +2252.83778292244 +11 +767.904956185432 +21 +-709.249312269841 +31 +2240.21043503138 +12 +724.871895956044 +22 +-750.87609961724 +32 +2252.83778292244 +13 +724.871895956044 +23 +-750.87609961724 +33 +2252.83778292244 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +724.871895956044 +20 +-750.87609961724 +30 +2252.83778292244 +11 +767.904956185432 +21 +-709.249312269841 +31 +2240.21043503138 +12 +739.771130343929 +22 +-739.771130343928 +32 +2249.46912732182 +13 +739.771130343929 +23 +-739.771130343928 +33 +2249.46912732182 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-399.515588143821 +20 +-964.515951276276 +30 +1812.39759571907 +11 +-554.192057578438 +21 +-829.407026995335 +31 +1708.93950189862 +12 +-381.734128610353 +22 +-921.587710511788 +32 +1708.93950189862 +13 +-381.734128610353 +23 +-921.587710511788 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-554.192057578438 +20 +-829.407026995335 +30 +1708.93950189862 +11 +-399.515588143821 +21 +-964.515951276276 +31 +1812.39759571907 +12 +-580.006735667279 +22 +-868.04142298445 +32 +1812.39759571907 +13 +-580.006735667279 +23 +-868.04142298445 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-644.282480658799 +20 +-861.555930289753 +30 +2059.38164426315 +11 +-740.177565197592 +21 +-890.060339871748 +31 +2085.82110165668 +12 +-731.284144746345 +22 +-899.775643285913 +32 +2054.14511148709 +13 +-731.284144746345 +23 +-899.775643285913 +33 +2054.14511148709 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-740.177565197592 +20 +-890.060339871748 +30 +2085.82110165668 +11 +-644.282480658799 +21 +-861.555930289753 +31 +2059.38164426315 +12 +-655.637457605706 +22 +-847.372595440649 +32 +2104.03168141582 +13 +-655.637457605706 +23 +-847.372595440649 +33 +2104.03168141582 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +599.277053327022 +20 +-599.277053327022 +30 +796.153149972084 +11 +706.098253038493 +21 +-471.799768952456 +31 +855.37186879426 +12 +600.487204246519 +22 +-600.48720424652 +32 +855.37186879426 +13 +600.487204246519 +23 +-600.48720424652 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +706.098253038493 +20 +-471.799768952456 +30 +855.37186879426 +11 +599.277053327022 +21 +-599.277053327022 +31 +796.153149972084 +12 +704.67526609701 +22 +-470.84895947612 +32 +796.153149972084 +13 +704.67526609701 +23 +-470.84895947612 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +389.307620352121 +20 +-582.640028068573 +30 +1241.03564002131 +11 +303.914386430124 +21 +-733.714233519903 +31 +1054.1729200213 +12 +441.215302798659 +22 +-660.325364744672 +32 +1054.1729200213 +13 +441.215302798659 +23 +-660.325364744672 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +303.914386430124 +20 +-733.714233519903 +30 +1054.1729200213 +11 +389.307620352121 +21 +-582.640028068573 +31 +1241.03564002131 +12 +268.159752894785 +22 +-647.394912321209 +32 +1241.03564002131 +13 +268.159752894785 +23 +-647.394912321209 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +916.376162171087 +20 +-182.278551827737 +30 +1614.7610800213 +11 +997.519349743285 +21 +1.80477854883065e-13 +31 +1708.93950189862 +12 +978.352295145615 +22 +-194.606371158736 +32 +1708.93950189862 +13 +978.352295145615 +23 +-194.606371158736 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +997.519349743285 +20 +1.80477854883065e-13 +30 +1708.93950189862 +11 +916.376162171087 +21 +-182.278551827737 +31 +1614.7610800213 +12 +925.063958273825 +22 +-94.0698777038381 +32 +1614.7610800213 +13 +925.063958273825 +23 +-94.0698777038381 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +997.519349743285 +20 +1.80477854883065e-13 +30 +1708.93950189862 +11 +925.063958273825 +21 +-94.0698777038381 +31 +1614.7610800213 +12 +934.329032542513 +22 +1.80477854883065e-13 +32 +1614.7610800213 +13 +934.329032542513 +23 +1.80477854883065e-13 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632776 +20 +-594.593536632776 +30 +914.026066884025 +11 +-706.098253038492 +21 +-471.799768952456 +31 +855.37186879426 +12 +-600.487204246519 +22 +-600.487204246519 +32 +855.37186879426 +13 +-600.487204246519 +23 +-600.487204246519 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-706.098253038492 +20 +-471.799768952456 +30 +855.37186879426 +11 +-594.593536632776 +21 +-594.593536632776 +31 +914.026066884025 +12 +-699.168033082722 +22 +-467.169144021929 +32 +914.026066884025 +13 +-699.168033082722 +23 +-467.169144021929 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +921.587710511789 +20 +-381.734128610352 +30 +1708.93950189862 +11 +1023.92467246733 +21 +-203.671280618918 +31 +1812.39759571907 +12 +964.515951276275 +22 +-399.515588143821 +32 +1812.39759571907 +13 +964.515951276275 +23 +-399.515588143821 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1023.92467246733 +20 +-203.671280618918 +30 +1812.39759571907 +11 +921.587710511789 +21 +-381.734128610352 +31 +1708.93950189862 +12 +978.352295145615 +22 +-194.606371158736 +32 +1708.93950189862 +13 +978.352295145615 +23 +-194.606371158736 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-781.183382327347 +20 +-739.911027417745 +30 +2076.74494872451 +11 +-815.319529832985 +21 +-815.188756027286 +31 +2086.22194499561 +12 +-827.129718036832 +22 +-803.86513828916 +32 +2069.83607643134 +13 +-827.129718036832 +23 +-803.86513828916 +33 +2069.83607643134 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-815.319529832985 +20 +-815.188756027286 +30 +2086.22194499561 +11 +-781.183382327347 +21 +-739.911027417745 +31 +2076.74494872451 +12 +-766.822004083969 +22 +-754.694855069672 +32 +2097.20410948883 +13 +-766.822004083969 +23 +-754.694855069672 +33 +2097.20410948883 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-746.579505030633 +20 +-772.239793008819 +30 +2108.60809856919 +11 +-783.644995364665 +21 +-846.504456965985 +31 +2095.12279472996 +12 +-800.049725864573 +22 +-830.16169359091 +32 +2095.10145963194 +13 +-800.049725864573 +23 +-830.16169359091 +33 +2095.10145963194 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-783.644995364665 +20 +-846.504456965985 +30 +2095.12279472996 +11 +-746.579505030633 +21 +-772.239793008819 +31 +2108.60809856919 +12 +-723.84293286299 +22 +-790.84270017674 +32 +2109.1268343449 +13 +-723.84293286299 +23 +-790.84270017674 +33 +2109.1268343449 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-703.270205185374 +20 +-808.916878172158 +30 +2098.19892992261 +11 +-757.213205686422 +21 +-873.517548449742 +31 +2069.9270060351 +12 +-768.602809842621 +22 +-861.72900857618 +32 +2086.28270221439 +13 +-768.602809842621 +23 +-861.72900857618 +33 +2086.28270221439 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-757.213205686422 +20 +-873.517548449742 +30 +2069.9270060351 +11 +-703.270205185374 +21 +-808.916878172158 +31 +2098.19892992261 +12 +-688.216174174222 +22 +-823.534449985187 +32 +2077.42717273413 +13 +-688.216174174222 +23 +-823.534449985187 +33 +2077.42717273413 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-766.822004083969 +20 +-754.694855069672 +30 +2097.20410948883 +11 +-800.049725864573 +21 +-830.16169359091 +31 +2095.10145963194 +12 +-815.319529832985 +22 +-815.188756027286 +32 +2086.22194499561 +13 +-815.319529832985 +23 +-815.188756027286 +33 +2086.22194499561 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-800.049725864573 +20 +-830.16169359091 +30 +2095.10145963194 +11 +-766.822004083969 +21 +-754.694855069672 +31 +2097.20410948883 +12 +-761.149821895316 +22 +-761.14982219046 +32 +2100.64485501639 +13 +-761.149821895316 +23 +-761.14982219046 +33 +2100.64485501639 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-800.049725864573 +20 +-830.16169359091 +30 +2095.10145963194 +11 +-761.149821895316 +21 +-761.14982219046 +31 +2100.64485501639 +12 +-746.579505030633 +22 +-772.239793008819 +32 +2108.60809856919 +13 +-746.579505030633 +23 +-772.239793008819 +33 +2108.60809856919 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-801.544845731016 +20 +-831.814429411314 +30 +1978.70958937363 +11 +-766.91292419702 +21 +-754.581509059306 +31 +1973.17973333127 +12 +-816.587031253059 +22 +-816.589877801121 +32 +1987.54968188919 +13 +-816.587031253059 +23 +-816.589877801121 +33 +1987.54968188919 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-766.91292419702 +20 +-754.581509059306 +30 +1973.17973333127 +11 +-801.544845731016 +21 +-831.814429411314 +31 +1978.70958937363 +12 +-761.145931803741 +22 +-761.14593180374 +32 +1969.69450846846 +13 +-761.145931803741 +23 +-761.14593180374 +33 +1969.69450846846 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-761.145931803741 +20 +-761.14593180374 +30 +1969.69450846846 +11 +-801.544845731016 +21 +-831.814429411314 +31 +1978.70958937363 +12 +-746.546206077474 +22 +-772.245716838241 +32 +1961.59984211439 +13 +-746.546206077474 +23 +-772.245716838241 +33 +1961.59984211439 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-203.671280618918 +20 +-1023.92467246733 +30 +1812.39759571907 +11 +-381.734128610353 +21 +-921.587710511788 +31 +1708.93950189862 +12 +-194.606371158736 +22 +-978.352295145615 +32 +1708.93950189862 +13 +-194.606371158736 +23 +-978.352295145615 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-381.734128610353 +20 +-921.587710511788 +30 +1708.93950189862 +11 +-203.671280618918 +21 +-1023.92467246733 +31 +1812.39759571907 +12 +-399.515588143821 +22 +-964.515951276276 +32 +1812.39759571907 +13 +-399.515588143821 +23 +-964.515951276276 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021928 +30 +1241.03564002131 +11 +528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +594.593536632776 +22 +-594.593536632775 +32 +1241.03564002131 +13 +594.593536632776 +23 +-594.593536632775 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +528.527588401294 +20 +-528.527588401294 +30 +1427.8983600213 +11 +699.168033082722 +21 +-467.169144021928 +31 +1241.03564002131 +12 +621.482696406623 +22 +-415.26146157539 +32 +1427.8983600213 +13 +621.482696406623 +23 +-415.26146157539 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +738.010701420772 +20 +-493.122985245198 +30 +1427.8983600213 +11 +561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +627.626510748516 +22 +-627.626510748516 +32 +1427.8983600213 +13 +627.626510748516 +23 +-627.626510748516 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +561.560562517035 +20 +-561.560562517035 +30 +1614.7610800213 +11 +738.010701420772 +21 +-493.122985245198 +31 +1427.8983600213 +12 +660.325364744673 +22 +-441.215302798659 +32 +1614.7610800213 +13 +660.325364744673 +23 +-441.215302798659 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +660.670394770277 +20 +-660.670394770277 +30 +1614.7610800213 +11 +829.407026995336 +21 +-554.192057578438 +31 +1708.93950189862 +12 +705.352696568272 +22 +-705.352696568272 +32 +1708.93950189862 +13 +705.352696568272 +23 +-705.352696568272 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +829.407026995336 +20 +-554.192057578438 +30 +1708.93950189862 +11 +660.670394770277 +21 +-660.670394770277 +31 +1614.7610800213 +12 +705.689442544718 +22 +-605.814526338507 +32 +1614.7610800213 +13 +705.689442544718 +23 +-605.814526338507 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +829.407026995336 +20 +-554.192057578438 +30 +1708.93950189862 +11 +705.689442544718 +21 +-605.814526338507 +31 +1614.7610800213 +12 +765.568628348261 +22 +-532.851527327553 +32 +1614.7610800213 +13 +765.568628348261 +23 +-532.851527327553 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +829.407026995336 +20 +-554.192057578438 +30 +1708.93950189862 +11 +765.568628348261 +21 +-532.851527327553 +31 +1614.7610800213 +12 +776.866198451135 +22 +-519.085398326623 +32 +1614.7610800213 +13 +776.866198451135 +23 +-519.085398326623 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +705.352696568272 +20 +-705.352696568272 +30 +1708.93950189862 +11 +868.04142298445 +21 +-580.006735667279 +31 +1812.39759571907 +12 +738.20854961057 +22 +-738.20854961057 +32 +1812.39759571907 +13 +738.20854961057 +23 +-738.20854961057 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +1812.39759571907 +11 +705.352696568272 +21 +-705.352696568272 +31 +1708.93950189862 +12 +829.407026995336 +22 +-554.192057578438 +32 +1708.93950189862 +13 +829.407026995336 +23 +-554.192057578438 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +2455.6433200213 +11 +798.491402853314 +21 +-250.528327323719 +31 +2549.0746800213 +12 +776.87389411925 +22 +-321.791703197793 +32 +2549.0746800213 +13 +776.87389411925 +23 +-321.791703197793 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +798.491402853314 +20 +-250.528327323719 +30 +2549.0746800213 +11 +776.87389411925 +21 +-321.791703197793 +31 +2455.6433200213 +12 +824.724927080674 +22 +-164.047987682633 +32 +2455.6433200213 +13 +824.724927080674 +23 +-164.047987682633 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +798.491402853314 +20 +-250.528327323719 +30 +2549.0746800213 +11 +824.724927080674 +21 +-164.047987682633 +31 +2455.6433200213 +12 +823.17232140581 +22 +-169.166242665351 +32 +2549.0746800213 +13 +823.17232140581 +23 +-169.166242665351 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +823.17232140581 +20 +-169.166242665351 +30 +2549.0746800213 +11 +824.724927080674 +21 +-164.047987682633 +31 +2455.6433200213 +12 +824.724927080674 +22 +-164.047987682633 +32 +2549.0746800213 +13 +824.724927080674 +23 +-164.047987682633 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +724.871895956044 +20 +-750.87609961724 +30 +2252.83778292244 +11 +180.675224578544 +21 +-794.16651328432 +31 +2257.10151651642 +12 +180.675224578544 +22 +-750.87609961724 +32 +2252.83778292244 +13 +180.675224578544 +23 +-750.87609961724 +33 +2252.83778292244 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +2257.10151651642 +11 +724.871895956044 +21 +-750.87609961724 +31 +2252.83778292244 +12 +670.391151613542 +22 +-794.16651328432 +32 +2257.10151651642 +13 +670.391151613542 +23 +-794.16651328432 +33 +2257.10151651642 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +892.684338449561 +20 +-596.472605357118 +30 +2133.80356487023 +11 +180.675224578544 +21 +-589.158254916404 +31 +2120.11937767794 +12 +897.900697882446 +22 +-589.158254916404 +32 +2120.11937767794 +13 +897.900697882446 +23 +-589.158254916404 +33 +2120.11937767794 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-589.158254916404 +30 +2120.11937767794 +11 +892.684338449561 +21 +-596.472605357118 +31 +2133.80356487023 +12 +180.675224578544 +22 +-609.663955206589 +32 +2158.48284461247 +13 +180.675224578544 +23 +-609.663955206589 +33 +2158.48284461247 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-609.663955206589 +30 +2158.48284461247 +11 +892.684338449561 +21 +-596.472605357118 +31 +2133.80356487023 +12 +884.794335210004 +22 +-604.173875548016 +32 +2148.21162800104 +13 +884.794335210004 +23 +-604.173875548016 +33 +2148.21162800104 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-609.663955206589 +30 +2158.48284461247 +11 +884.794335210004 +21 +-604.173875548016 +31 +2148.21162800104 +12 +876.866128931272 +22 +-609.663955206588 +32 +2158.48284461247 +13 +876.866128931272 +23 +-609.663955206588 +33 +2158.48284461247 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-879.083714298799 +30 +1830.19391829555 +11 +180.675224578544 +21 +-837.4569269514 +31 +1817.56657040449 +12 +180.675224578544 +22 +-879.083714298798 +32 +1830.19391829555 +13 +180.675224578544 +23 +-879.083714298798 +33 +1830.19391829555 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-837.4569269514 +30 +1817.56657040449 +11 +653.750224578544 +21 +-879.083714298799 +31 +1830.19391829555 +12 +653.750224578544 +22 +-837.4569269514 +32 +1817.56657040449 +13 +653.750224578544 +23 +-837.4569269514 +33 +1817.56657040449 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +575.888850875701 +20 +-575.888850875701 +30 +682.822310520627 +11 +694.940121314314 +21 +-464.344143695271 +31 +738.078199114136 +12 +590.997993226901 +22 +-590.997993226901 +32 +738.078199114136 +13 +590.997993226901 +23 +-590.997993226901 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +694.940121314314 +20 +-464.344143695271 +30 +738.078199114136 +11 +575.888850875701 +21 +-575.888850875701 +31 +682.822310520627 +12 +677.173649450057 +22 +-452.47296672438 +32 +682.822310520627 +13 +677.173649450057 +23 +-452.47296672438 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +406.150722558891 +20 +-980.534582769308 +30 +1879.38487239655 +11 +203.671280618918 +21 +-1023.92467246733 +31 +1812.39759571907 +12 +399.51558814382 +22 +-964.515951276276 +32 +1812.39759571907 +13 +399.51558814382 +23 +-964.515951276276 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +203.671280618918 +20 +-1023.92467246733 +30 +1812.39759571907 +11 +406.150722558891 +21 +-980.534582769308 +31 +1879.38487239655 +12 +209.215453044867 +22 +-1051.79710945546 +32 +1922.19277204157 +13 +209.215453044867 +23 +-1051.79710945546 +33 +1922.19277204157 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +209.215453044867 +20 +-1051.79710945546 +30 +1922.19277204157 +11 +406.150722558891 +21 +-980.534582769308 +31 +1879.38487239655 +12 +369.41031965462 +22 +-997.119327169824 +32 +1899.59344191956 +13 +369.41031965462 +23 +-997.119327169824 +33 +1899.59344191956 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +209.215453044867 +20 +-1051.79710945546 +30 +1922.19277204157 +11 +369.41031965462 +21 +-997.119327169824 +31 +1899.59344191956 +12 +349.642861592144 +22 +-1009.19892078507 +32 +1922.19277204157 +13 +349.642861592144 +23 +-1009.19892078507 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-921.587710511788 +20 +-381.734128610352 +30 +2361.46489814399 +11 +-1023.92467246733 +21 +-203.671280618918 +31 +2258.00680432354 +12 +-964.515951276275 +22 +-399.515588143821 +32 +2258.00680432354 +13 +-964.515951276275 +23 +-399.515588143821 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1023.92467246733 +20 +-203.671280618918 +30 +2258.00680432354 +11 +-921.587710511788 +21 +-381.734128610352 +31 +2361.46489814399 +12 +-978.352295145615 +22 +-194.606371158736 +32 +2361.46489814399 +13 +-978.352295145615 +23 +-194.606371158736 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1059.21725479392 +20 +-210.691411720441 +30 +2058.8118770109 +11 +990.771212819308 +21 +-410.390873558597 +31 +2148.21162800104 +12 +997.760836892423 +22 +-413.286070645571 +32 +2058.8118770109 +13 +997.760836892423 +23 +-413.286070645571 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +990.771212819308 +20 +-410.390873558597 +30 +2148.21162800104 +11 +1059.21725479392 +21 +-210.691411720441 +31 +2058.8118770109 +12 +1051.79710945546 +22 +-209.215453044867 +32 +2148.21162800104 +13 +1051.79710945546 +23 +-209.215453044867 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-868.041422984449 +20 +-580.006735667279 +30 +2258.00680432354 +11 +-990.771212819307 +21 +-410.390873558597 +31 +2148.21162800104 +12 +-891.670534105406 +22 +-595.795202951324 +32 +2148.21162800104 +13 +-891.670534105406 +23 +-595.795202951324 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-990.771212819307 +20 +-410.390873558597 +30 +2148.21162800104 +11 +-868.041422984449 +21 +-580.006735667279 +31 +2258.00680432354 +12 +-964.515951276275 +22 +-399.515588143821 +32 +2258.00680432354 +13 +-964.515951276275 +23 +-399.515588143821 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-829.407026995335 +20 +-554.192057578438 +30 +2361.46489814399 +11 +-964.515951276275 +21 +-399.515588143821 +31 +2258.00680432354 +12 +-868.041422984449 +22 +-580.006735667279 +32 +2258.00680432354 +13 +-868.041422984449 +23 +-580.006735667279 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-964.515951276275 +20 +-399.515588143821 +30 +2258.00680432354 +11 +-829.407026995335 +21 +-554.192057578438 +31 +2361.46489814399 +12 +-921.587710511788 +22 +-381.734128610352 +32 +2361.46489814399 +13 +-921.587710511788 +23 +-381.734128610352 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-776.866198451135 +20 +-519.085398326623 +30 +2455.6433200213 +11 +-921.587710511788 +21 +-381.734128610352 +31 +2361.46489814399 +12 +-829.407026995335 +22 +-554.192057578438 +32 +2361.46489814399 +13 +-829.407026995335 +23 +-554.192057578438 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-921.587710511788 +20 +-381.734128610352 +30 +2361.46489814399 +11 +-776.866198451135 +21 +-519.085398326623 +31 +2455.6433200213 +12 +-813.095615905849 +22 +-451.304925633068 +32 +2455.6433200213 +13 +-813.095615905849 +23 +-451.304925633068 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-921.587710511788 +20 +-381.734128610352 +30 +2361.46489814399 +11 +-813.095615905849 +21 +-451.304925633068 +31 +2455.6433200213 +12 +-857.607798059122 +22 +-368.028490102694 +32 +2455.6433200213 +13 +-857.607798059122 +23 +-368.028490102694 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-921.587710511788 +20 +-381.734128610352 +30 +2361.46489814399 +11 +-857.607798059122 +21 +-368.028490102694 +31 +2455.6433200213 +12 +-863.207469797099 +22 +-357.552241131722 +32 +2455.6433200213 +13 +-863.207469797099 +23 +-357.552241131722 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-758.060123058849 +20 +-874.453748088142 +30 +2003.99630767223 +11 +-683.329149560927 +21 +-829.573232448602 +31 +2011.5925230317 +12 +-687.957452549297 +22 +-823.760435027841 +32 +1993.10258668608 +13 +-687.957452549297 +23 +-823.760435027841 +33 +1993.10258668608 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-683.329149560927 +20 +-829.573232448602 +30 +2011.5925230317 +11 +-758.060123058849 +21 +-874.453748088142 +31 +2003.99630767223 +12 +-751.507544713982 +22 +-880.404127848991 +32 +2025.39393021379 +13 +-751.507544713982 +23 +-880.404127848991 +33 +2025.39393021379 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-683.329149560927 +20 +-829.573232448602 +30 +2011.5925230317 +11 +-751.507544713982 +21 +-880.404127848991 +31 +2025.39393021379 +12 +-680.414811030127 +22 +-831.964968270127 +32 +2020.57508939225 +13 +-680.414811030127 +23 +-831.964968270127 +33 +2020.57508939225 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-785.140115231108 +20 +-848.157192786392 +30 +1978.73092447164 +11 +-746.546206077474 +21 +-772.245716838241 +31 +1961.59984211439 +12 +-801.544845731016 +22 +-831.814429411314 +32 +1978.70958937363 +13 +-801.544845731016 +23 +-831.814429411314 +33 +1978.70958937363 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-746.546206077474 +20 +-772.245716838241 +30 +1961.59984211439 +11 +-785.140115231108 +21 +-848.157192786392 +31 +1978.73092447164 +12 +-723.636295253065 +22 +-790.983771266745 +32 +1961.01586348506 +13 +-723.636295253065 +23 +-790.983771266745 +33 +1961.01586348506 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-757.213205686422 +20 +-873.517548449742 +30 +2069.9270060351 +11 +-680.521947020029 +21 +-831.877044035484 +31 +2050.14904337117 +12 +-751.210146881832 +22 +-880.075378254302 +32 +2048.54571267062 +13 +-751.210146881832 +23 +-880.075378254302 +33 +2048.54571267062 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-680.521947020029 +20 +-831.877044035484 +30 +2050.14904337117 +11 +-757.213205686422 +21 +-873.517548449742 +31 +2069.9270060351 +12 +-683.397324988288 +22 +-829.51728232132 +32 +2058.8118770109 +13 +-683.397324988288 +23 +-829.51728232132 +33 +2058.8118770109 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-683.397324988288 +20 +-829.51728232132 +30 +2058.8118770109 +11 +-757.213205686422 +21 +-873.517548449742 +31 +2069.9270060351 +12 +-688.216174174222 +22 +-823.534449985187 +32 +2077.42717273413 +13 +-688.216174174222 +23 +-823.534449985187 +33 +2077.42717273413 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-816.587031253059 +20 +-816.589877801121 +30 +1987.54968188919 +11 +-781.308061641118 +21 +-739.778791807586 +31 +1993.80290570042 +12 +-827.976635409257 +22 +-804.801337927561 +32 +2003.90537806848 +13 +-827.976635409257 +23 +-804.801337927561 +33 +2003.90537806848 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-781.308061641118 +20 +-739.778791807586 +30 +1993.80290570042 +11 +-816.587031253059 +21 +-816.589877801121 +31 +1987.54968188919 +12 +-766.91292419702 +22 +-754.581509059306 +32 +1973.17973333127 +13 +-766.91292419702 +23 +-754.581509059306 +33 +1973.17973333127 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-464.344143695271 +20 +-694.940121314314 +30 +738.078199114136 +11 +-575.888850875701 +21 +-575.888850875701 +31 +682.822310520627 +12 +-452.472966724379 +22 +-677.173649450057 +32 +682.822310520627 +13 +-452.472966724379 +23 +-677.173649450057 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-575.888850875701 +20 +-575.888850875701 +30 +682.822310520627 +11 +-464.344143695271 +21 +-694.940121314314 +31 +738.078199114136 +12 +-590.997993226901 +22 +-590.997993226901 +32 +738.078199114136 +13 +-590.997993226901 +23 +-590.997993226901 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +577.57828073944 +20 +-864.406983345072 +30 +1802.66501966685 +11 +381.734128610352 +21 +-921.587710511788 +31 +1708.93950189862 +12 +554.192057578438 +22 +-829.407026995336 +32 +1708.93950189862 +13 +554.192057578438 +23 +-829.407026995336 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +381.734128610352 +20 +-921.587710511788 +30 +1708.93950189862 +11 +577.57828073944 +21 +-864.406983345072 +31 +1802.66501966685 +12 +399.51558814382 +22 +-964.515951276276 +32 +1812.39759571907 +13 +399.51558814382 +23 +-964.515951276276 +33 +1812.39759571907 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +399.51558814382 +20 +-964.515951276276 +30 +1812.39759571907 +11 +577.57828073944 +21 +-864.406983345072 +31 +1802.66501966685 +12 +540.896876185886 +22 +-887.575434400246 +32 +1809.69309245876 +13 +540.896876185886 +23 +-887.575434400246 +33 +1809.69309245876 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +399.51558814382 +20 +-964.515951276276 +30 +1812.39759571907 +11 +540.896876185886 +21 +-887.575434400246 +31 +1809.69309245876 +12 +533.995007415167 +22 +-892.635204119545 +32 +1812.39759571907 +13 +533.995007415167 +23 +-892.635204119545 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-781.35466353334 +20 +-731.718944065101 +30 +1933.51796332002 +11 +-891.670534105406 +21 +-595.795202951324 +31 +1922.19277204157 +12 +-761.987076679027 +22 +-753.814953035805 +32 +1922.19277204157 +13 +-761.987076679027 +23 +-753.814953035805 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-891.670534105406 +20 +-595.795202951324 +30 +1922.19277204157 +11 +-781.35466353334 +21 +-731.718944065101 +31 +1933.51796332002 +12 +-804.883917627287 +22 +-707.527532613081 +32 +1967.25758629213 +13 +-804.883917627287 +23 +-707.527532613081 +33 +1967.25758629213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-891.670534105406 +20 +-595.795202951324 +30 +1922.19277204157 +11 +-804.883917627287 +21 +-707.527532613081 +31 +1967.25758629213 +12 +-818.480102290147 +22 +-696.846172894875 +32 +2011.59249120966 +13 +-818.480102290147 +23 +-696.846172894875 +33 +2011.59249120966 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-891.670534105406 +20 +-595.795202951324 +30 +1922.19277204157 +11 +-818.480102290147 +21 +-696.846172894875 +31 +2011.59249120966 +12 +-897.961029579872 +22 +-599.99837764929 +32 +2011.5925230317 +13 +-897.961029579872 +23 +-599.99837764929 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1051.79710945546 +20 +-209.215453044867 +30 +2148.21162800104 +11 +-1079.96854760957 +21 +3.60955709766131e-13 +31 +2058.8118770109 +12 +-1059.21725479392 +22 +-210.691411720441 +32 +2058.8118770109 +13 +-1059.21725479392 +23 +-210.691411720441 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1079.96854760957 +20 +3.60955709766131e-13 +30 +2058.8118770109 +11 +-1051.79710945546 +21 +-209.215453044867 +31 +2148.21162800104 +12 +-1072.40303302985 +22 +3.60955709766131e-13 +32 +2148.21162800104 +13 +-1072.40303302985 +23 +3.60955709766131e-13 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-832.543811724793 +20 +-84.6615196498334 +30 +2549.0746800213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +2549.0746800213 +12 +-840.882243605455 +22 +1.80477854883065e-13 +32 +2549.0746800213 +13 +-840.882243605455 +23 +1.80477854883065e-13 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-747.450883605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +-832.543811724793 +21 +-84.6615196498334 +31 +2549.0746800213 +12 +-824.724927080674 +22 +-164.047987682633 +32 +2549.0746800213 +13 +-824.724927080674 +23 +-164.047987682633 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-747.450883605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +-824.724927080674 +21 +-164.047987682633 +31 +2549.0746800213 +12 +-823.172319072743 +22 +-169.166250356441 +32 +2549.0746800213 +13 +-823.172319072743 +23 +-169.166250356441 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-747.450883605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +-823.172319072743 +21 +-169.166250356441 +31 +2549.0746800213 +12 +-798.491399420167 +22 +-250.528338641286 +32 +2549.0746800213 +13 +-798.491399420167 +23 +-250.528338641286 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-747.450883605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +-798.491399420167 +21 +-250.528338641286 +31 +2549.0746800213 +12 +-776.87389411925 +22 +-321.791703197793 +32 +2549.0746800213 +13 +-776.87389411925 +23 +-321.791703197793 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-747.450883605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +-776.87389411925 +21 +-321.791703197793 +31 +2549.0746800213 +12 +-771.834238188426 +22 +-331.220236285058 +32 +2549.0746800213 +13 +-771.834238188426 +23 +-331.220236285058 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-747.450883605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +-771.834238188426 +21 +-331.220236285058 +31 +2549.0746800213 +12 +-731.773964383885 +22 +-406.167737113607 +32 +2549.0746800213 +13 +-731.773964383885 +23 +-406.167737113607 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-747.450883605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +-731.773964383885 +21 +-406.167737113607 +31 +2549.0746800213 +12 +-733.088824464619 +22 +-145.820433573828 +32 +2549.0746800213 +13 +-733.088824464619 +23 +-145.820433573828 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-733.088824464619 +20 +-145.820433573828 +30 +2549.0746800213 +11 +-731.773964383885 +21 +-406.167737113607 +31 +2549.0746800213 +12 +-690.554572920556 +22 +-286.037069662455 +32 +2549.0746800213 +13 +-690.554572920556 +23 +-286.037069662455 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-690.554572920556 +20 +-286.037069662455 +30 +2549.0746800213 +11 +-731.773964383885 +21 +-406.167737113607 +31 +2549.0746800213 +12 +-699.168033082722 +22 +-467.169144021929 +32 +2549.0746800213 +13 +-699.168033082722 +23 +-467.169144021929 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-690.554572920556 +20 +-286.037069662455 +30 +2549.0746800213 +11 +-699.168033082722 +21 +-467.169144021929 +31 +2549.0746800213 +12 +-689.000369065216 +22 +-479.558478474255 +32 +2549.0746800213 +13 +-689.000369065216 +23 +-479.558478474255 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-690.554572920556 +20 +-286.037069662455 +30 +2549.0746800213 +11 +-689.000369065216 +21 +-479.558478474255 +31 +2549.0746800213 +12 +-621.482696406623 +22 +-415.26146157539 +32 +2549.0746800213 +13 +-621.482696406623 +23 +-415.26146157539 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-621.482696406623 +20 +-415.26146157539 +30 +2549.0746800213 +11 +-689.000369065216 +21 +-479.558478474255 +31 +2549.0746800213 +12 +-635.110018052195 +22 +-545.224061178794 +32 +2549.0746800213 +13 +-635.110018052195 +23 +-545.224061178794 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-621.482696406623 +20 +-415.26146157539 +30 +2549.0746800213 +11 +-635.110018052195 +21 +-545.224061178794 +31 +2549.0746800213 +12 +-594.593536632776 +22 +-594.593536632776 +32 +2549.0746800213 +13 +-594.593536632776 +23 +-594.593536632776 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-621.482696406623 +20 +-415.26146157539 +30 +2549.0746800213 +11 +-594.593536632776 +21 +-594.593536632776 +31 +2549.0746800213 +12 +-528.527588401294 +22 +-528.527588401294 +32 +2549.0746800213 +13 +-528.527588401294 +23 +-528.527588401294 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +-594.593536632776 +21 +-594.593536632776 +31 +2549.0746800213 +12 +-578.08321102903 +22 +-608.143210685445 +32 +2549.0746800213 +13 +-578.08321102903 +23 +-608.143210685445 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +-578.08321102903 +21 +-608.143210685445 +31 +2549.0746800213 +12 +-512.438676164039 +22 +-662.016288182956 +32 +2549.0746800213 +13 +-512.438676164039 +23 +-662.016288182956 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +-512.438676164039 +21 +-662.016288182956 +31 +2549.0746800213 +12 +-415.26146157539 +22 +-621.482696406623 +32 +2549.0746800213 +13 +-415.26146157539 +23 +-621.482696406623 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-415.26146157539 +20 +-621.482696406623 +30 +2549.0746800213 +11 +-512.438676164039 +21 +-662.016288182956 +31 +2549.0746800213 +12 +-467.169144021929 +22 +-699.168033082722 +32 +2549.0746800213 +13 +-467.169144021929 +23 +-699.168033082722 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-415.26146157539 +20 +-621.482696406623 +30 +2549.0746800213 +11 +-467.169144021929 +21 +-699.168033082722 +31 +2549.0746800213 +12 +-443.635339973588 +22 +-711.747113417844 +32 +2549.0746800213 +13 +-443.635339973588 +23 +-711.747113417844 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-415.26146157539 +20 +-621.482696406623 +30 +2549.0746800213 +11 +-443.635339973588 +21 +-711.747113417844 +31 +2549.0746800213 +12 +-368.760188696337 +22 +-751.768715581535 +32 +2549.0746800213 +13 +-368.760188696337 +23 +-751.768715581535 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-415.26146157539 +20 +-621.482696406623 +30 +2549.0746800213 +11 +-368.760188696337 +21 +-751.768715581535 +31 +2549.0746800213 +12 +-286.037069662455 +22 +-690.554572920556 +32 +2549.0746800213 +13 +-286.037069662455 +23 +-690.554572920556 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +-368.760188696337 +21 +-751.768715581535 +31 +2549.0746800213 +12 +-321.791703197793 +22 +-776.87389411925 +32 +2549.0746800213 +13 +-321.791703197793 +23 +-776.87389411925 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +-321.791703197793 +21 +-776.87389411925 +31 +2549.0746800213 +12 +-291.163466606751 +22 +-786.164868113883 +32 +2549.0746800213 +13 +-291.163466606751 +23 +-786.164868113883 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +-291.163466606751 +21 +-786.164868113883 +31 +2549.0746800213 +12 +-209.932194866118 +22 +-810.806105001612 +32 +2549.0746800213 +13 +-209.932194866118 +23 +-810.806105001612 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +-209.932194866118 +21 +-810.806105001612 +31 +2549.0746800213 +12 +-145.820433573828 +22 +-733.088824464619 +32 +2549.0746800213 +13 +-145.820433573828 +23 +-733.088824464619 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-145.820433573828 +20 +-733.088824464619 +30 +2549.0746800213 +11 +-209.932194866118 +21 +-810.806105001612 +31 +2549.0746800213 +12 +-164.047987682633 +22 +-824.724927080674 +32 +2549.0746800213 +13 +-164.047987682633 +23 +-824.724927080674 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-145.820433573828 +20 +-733.088824464619 +30 +2549.0746800213 +11 +-164.047987682633 +21 +-824.724927080674 +31 +2549.0746800213 +12 +-126.903621448811 +22 +-828.383327837855 +32 +2549.0746800213 +13 +-126.903621448811 +23 +-828.383327837855 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-145.820433573828 +20 +-733.088824464619 +30 +2549.0746800213 +11 +-126.903621448811 +21 +-828.383327837855 +31 +2549.0746800213 +12 +0.0 +22 +-747.450883605455 +32 +2549.0746800213 +13 +0.0 +23 +-747.450883605455 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-747.450883605455 +30 +2549.0746800213 +11 +-126.903621448811 +21 +-828.383327837855 +31 +2549.0746800213 +12 +-42.4327807980229 +22 +-836.702979476311 +32 +2549.0746800213 +13 +-42.4327807980229 +23 +-836.702979476311 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-747.450883605455 +30 +2549.0746800213 +11 +-42.4327807980229 +21 +-836.702979476311 +31 +2549.0746800213 +12 +0.0 +22 +-840.882243605455 +32 +2549.0746800213 +13 +0.0 +23 +-840.882243605455 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-747.450883605455 +30 +2549.0746800213 +11 +0.0 +21 +-840.882243605455 +31 +2549.0746800213 +12 +42.4327751671525 +22 +-836.702980030903 +32 +2549.0746800213 +13 +42.4327751671525 +23 +-836.702980030903 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-747.450883605455 +30 +2549.0746800213 +11 +42.4327751671525 +21 +-836.702980030903 +31 +2549.0746800213 +12 +145.820433573828 +22 +-733.088824464618 +32 +2549.0746800213 +13 +145.820433573828 +23 +-733.088824464618 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +145.820433573828 +20 +-733.088824464618 +30 +2549.0746800213 +11 +42.4327751671525 +21 +-836.702980030903 +31 +2549.0746800213 +12 +126.903660366379 +22 +-828.38332400481 +32 +2549.0746800213 +13 +126.903660366379 +23 +-828.38332400481 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +145.820433573828 +20 +-733.088824464618 +30 +2549.0746800213 +11 +126.903660366379 +21 +-828.38332400481 +31 +2549.0746800213 +12 +164.047987682633 +22 +-824.724927080674 +32 +2549.0746800213 +13 +164.047987682633 +23 +-824.724927080674 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +145.820433573828 +20 +-733.088824464618 +30 +2549.0746800213 +11 +164.047987682633 +21 +-824.724927080674 +31 +2549.0746800213 +12 +286.037069662455 +22 +-690.554572920556 +32 +2549.0746800213 +13 +286.037069662455 +23 +-690.554572920556 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +164.047987682633 +21 +-824.724927080674 +31 +2549.0746800213 +12 +209.932273259994 +22 +-810.806081221089 +32 +2549.0746800213 +13 +209.932273259994 +23 +-810.806081221089 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +209.932273259994 +21 +-810.806081221089 +31 +2549.0746800213 +12 +291.163503259545 +22 +-786.16485699538 +32 +2549.0746800213 +13 +291.163503259545 +23 +-786.16485699538 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +291.163503259545 +21 +-786.16485699538 +31 +2549.0746800213 +12 +415.26146157539 +22 +-621.482696406623 +32 +2549.0746800213 +13 +415.26146157539 +23 +-621.482696406623 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +415.26146157539 +20 +-621.482696406623 +30 +2549.0746800213 +11 +291.163503259545 +21 +-786.16485699538 +31 +2549.0746800213 +12 +321.791703197793 +22 +-776.87389411925 +32 +2549.0746800213 +13 +321.791703197793 +23 +-776.87389411925 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +415.26146157539 +20 +-621.482696406623 +30 +2549.0746800213 +11 +321.791703197793 +21 +-776.87389411925 +31 +2549.0746800213 +12 +368.760184385968 +22 +-751.768717885475 +32 +2549.0746800213 +13 +368.760184385968 +23 +-751.768717885475 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +415.26146157539 +20 +-621.482696406623 +30 +2549.0746800213 +11 +368.760184385968 +21 +-751.768717885475 +31 +2549.0746800213 +12 +443.635403824213 +22 +-711.747079288974 +32 +2549.0746800213 +13 +443.635403824213 +23 +-711.747079288974 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +415.26146157539 +20 +-621.482696406623 +30 +2549.0746800213 +11 +443.635403824213 +21 +-711.747079288974 +31 +2549.0746800213 +12 +528.527588401294 +22 +-528.527588401294 +32 +2549.0746800213 +13 +528.527588401294 +23 +-528.527588401294 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +443.635403824213 +21 +-711.747079288974 +31 +2549.0746800213 +12 +467.169144021928 +22 +-699.168033082722 +32 +2549.0746800213 +13 +467.169144021928 +23 +-699.168033082722 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +467.169144021928 +21 +-699.168033082722 +31 +2549.0746800213 +12 +512.438726622327 +22 +-662.016246772909 +32 +2549.0746800213 +13 +512.438726622327 +23 +-662.016246772909 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +512.438726622327 +21 +-662.016246772909 +31 +2549.0746800213 +12 +578.083233221301 +22 +-608.143192472719 +32 +2549.0746800213 +13 +578.083233221301 +23 +-608.143192472719 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +578.083233221301 +21 +-608.143192472719 +31 +2549.0746800213 +12 +621.482696406623 +22 +-415.26146157539 +32 +2549.0746800213 +13 +621.482696406623 +23 +-415.26146157539 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +621.482696406623 +20 +-415.26146157539 +30 +2549.0746800213 +11 +578.083233221301 +21 +-608.143192472719 +31 +2549.0746800213 +12 +594.593536632776 +22 +-594.593536632776 +32 +2549.0746800213 +13 +594.593536632776 +23 +-594.593536632776 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +621.482696406623 +20 +-415.26146157539 +30 +2549.0746800213 +11 +594.593536632776 +21 +-594.593536632776 +31 +2549.0746800213 +12 +635.110015865962 +22 +-545.224063842726 +32 +2549.0746800213 +13 +635.110015865962 +23 +-545.224063842726 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +621.482696406623 +20 +-415.26146157539 +30 +2549.0746800213 +11 +635.110015865962 +21 +-545.224063842726 +31 +2549.0746800213 +12 +690.554572920556 +22 +-286.037069662455 +32 +2549.0746800213 +13 +690.554572920556 +23 +-286.037069662455 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +690.554572920556 +20 +-286.037069662455 +30 +2549.0746800213 +11 +635.110015865962 +21 +-545.224063842726 +31 +2549.0746800213 +12 +689.000383427084 +22 +-479.558460974267 +32 +2549.0746800213 +13 +689.000383427084 +23 +-479.558460974267 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +690.554572920556 +20 +-286.037069662455 +30 +2549.0746800213 +11 +689.000383427084 +21 +-479.558460974267 +31 +2549.0746800213 +12 +699.168033082722 +22 +-467.169144021929 +32 +2549.0746800213 +13 +699.168033082722 +23 +-467.169144021929 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +690.554572920556 +20 +-286.037069662455 +30 +2549.0746800213 +11 +699.168033082722 +21 +-467.169144021929 +31 +2549.0746800213 +12 +733.088824464618 +22 +-145.820433573828 +32 +2549.0746800213 +13 +733.088824464618 +23 +-145.820433573828 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +733.088824464618 +20 +-145.820433573828 +30 +2549.0746800213 +11 +699.168033082722 +21 +-467.169144021929 +31 +2549.0746800213 +12 +731.773963185201 +22 +-406.167739356189 +32 +2549.0746800213 +13 +731.773963185201 +23 +-406.167739356189 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +733.088824464618 +20 +-145.820433573828 +30 +2549.0746800213 +11 +731.773963185201 +21 +-406.167739356189 +31 +2549.0746800213 +12 +771.834245650684 +22 +-331.220222324155 +32 +2549.0746800213 +13 +771.834245650684 +23 +-331.220222324155 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +733.088824464618 +20 +-145.820433573828 +30 +2549.0746800213 +11 +771.834245650684 +21 +-331.220222324155 +31 +2549.0746800213 +12 +747.450883605455 +22 +1.80477854883065e-13 +32 +2549.0746800213 +13 +747.450883605455 +23 +1.80477854883065e-13 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +747.450883605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +771.834245650684 +21 +-331.220222324155 +31 +2549.0746800213 +12 +840.882243605455 +22 +1.80477854883065e-13 +32 +2549.0746800213 +13 +840.882243605455 +23 +1.80477854883065e-13 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +840.882243605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +771.834245650684 +21 +-331.220222324155 +31 +2549.0746800213 +12 +776.87389411925 +22 +-321.791703197793 +32 +2549.0746800213 +13 +776.87389411925 +23 +-321.791703197793 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +840.882243605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +776.87389411925 +21 +-321.791703197793 +31 +2549.0746800213 +12 +798.491402853314 +22 +-250.528327323719 +32 +2549.0746800213 +13 +798.491402853314 +23 +-250.528327323719 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +840.882243605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +798.491402853314 +21 +-250.528327323719 +31 +2549.0746800213 +12 +823.17232140581 +22 +-169.166242665351 +32 +2549.0746800213 +13 +823.17232140581 +23 +-169.166242665351 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +840.882243605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +823.17232140581 +21 +-169.166242665351 +31 +2549.0746800213 +12 +824.724927080674 +22 +-164.047987682633 +32 +2549.0746800213 +13 +824.724927080674 +23 +-164.047987682633 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +840.882243605455 +20 +1.80477854883065e-13 +30 +2549.0746800213 +11 +824.724927080674 +21 +-164.047987682633 +31 +2549.0746800213 +12 +832.543812136584 +22 +-84.6615154688545 +32 +2549.0746800213 +13 +832.543812136584 +23 +-84.6615154688545 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +891.670534105407 +20 +-595.795202951324 +30 +1922.19277204157 +11 +892.68433542823 +21 +-596.472603338329 +31 +1936.60079223358 +12 +884.794355702396 +22 +-604.173850577965 +32 +1922.19277204157 +13 +884.794355702396 +23 +-604.173850577965 +33 +1922.19277204157 +70 +0 + 0 +3DFACE + 8 +body_half_outside +10 +891.670534105407 +20 +-595.795202951324 +30 +1922.19277204157 +11 +897.90069342138 +21 +-589.158254916404 +31 +1950.28497564898 +12 +892.68433542823 +22 +-596.472603338329 +32 +1936.60079223358 +13 +892.68433542823 +23 +-596.472603338329 +33 +1936.60079223358 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +897.90069342138 +20 +-589.158254916404 +30 +1950.28497564898 +11 +891.670534105407 +21 +-595.795202951324 +31 +1922.19277204157 +12 +990.771212819308 +22 +-410.390873558597 +32 +1922.19277204157 +13 +990.771212819308 +23 +-410.390873558597 +33 +1922.19277204157 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +897.90069342138 +20 +-589.158254916404 +30 +1950.28497564898 +11 +990.771212819308 +21 +-410.390873558597 +31 +1922.19277204157 +12 +908.625259608371 +22 +-576.530907025343 +32 +1991.91176299638 +13 +908.625259608371 +23 +-576.530907025343 +33 +1991.91176299638 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +908.625259608371 +20 +-576.530907025343 +30 +1991.91176299638 +11 +990.771212819308 +21 +-410.390873558597 +31 +1922.19277204157 +12 +911.540741979581 +22 +-574.59252267949 +32 +2011.5925230317 +13 +911.540741979581 +23 +-574.59252267949 +33 +2011.5925230317 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +911.540741979581 +20 +-574.59252267949 +30 +2011.5925230317 +11 +990.771212819308 +21 +-410.390873558597 +31 +1922.19277204157 +12 +997.760836892423 +22 +-413.286070645571 +32 +2011.5925230317 +13 +997.760836892423 +23 +-413.286070645571 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +599.277053327022 +20 +-599.277053327022 +30 +796.153149972084 +11 +464.344143695271 +21 +-694.940121314314 +31 +738.078199114136 +12 +590.997993226901 +22 +-590.997993226901 +32 +738.078199114136 +13 +590.997993226901 +23 +-590.997993226901 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +464.344143695271 +20 +-694.940121314314 +30 +738.078199114136 +11 +599.277053327022 +21 +-599.277053327022 +31 +796.153149972084 +12 +470.84895947612 +22 +-704.67526609701 +32 +796.153149972084 +13 +470.84895947612 +23 +-704.67526609701 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-720.365482284693 +30 +1985.88990429309 +11 +104.493588061205 +21 +-712.163204861239 +31 +2001.23529816273 +12 +104.493591159588 +22 +-720.365490157703 +32 +1985.88990169709 +13 +104.493591159588 +23 +-720.365490157703 +33 +1985.88990169709 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493588061205 +20 +-712.163204861239 +30 +2001.23529816273 +11 +180.675224578544 +21 +-720.365482284693 +31 +1985.88990429309 +12 +180.675224578544 +22 +-712.163201305221 +32 +2001.23529268221 +13 +180.675224578544 +23 +-712.163201305221 +33 +2001.23529268221 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-677.173649450057 +20 +-452.47296672438 +30 +682.822310520627 +11 +-554.385481313987 +21 +-554.385481313987 +31 +631.979456702016 +12 +-575.888850875701 +22 +-575.888850875701 +32 +682.822310520627 +13 +-575.888850875701 +23 +-575.888850875701 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-554.385481313987 +20 +-554.385481313987 +30 +631.979456702016 +11 +-677.173649450057 +21 +-452.47296672438 +31 +682.822310520627 +12 +-651.888361812631 +22 +-435.577877671407 +32 +631.979456702016 +13 +-651.888361812631 +23 +-435.577877671407 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-694.940121314314 +20 +-464.344143695271 +30 +738.078199114136 +11 +-575.888850875701 +21 +-575.888850875701 +31 +682.822310520627 +12 +-590.997993226901 +22 +-590.997993226901 +32 +738.078199114136 +13 +-590.997993226901 +23 +-590.997993226901 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-575.888850875701 +20 +-575.888850875701 +30 +682.822310520627 +11 +-694.940121314314 +21 +-464.344143695271 +31 +738.078199114136 +12 +-677.173649450057 +22 +-452.47296672438 +32 +682.822310520627 +13 +-677.173649450057 +23 +-452.47296672438 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-43.0469725205787 +20 +-1075.72879087574 +30 +2051.86944523768 +11 +-38.8881027186488 +21 +-1076.06746493881 +31 +2059.65014337885 +12 +-39.3361654272124 +22 +-1076.09427347395 +32 +2058.8118770109 +13 +-39.3361654272124 +23 +-1076.09427347395 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-38.8881027186488 +20 +-1076.06746493881 +30 +2059.65014337885 +11 +-43.0469725205787 +21 +-1075.72879087574 +31 +2051.86944523768 +12 +-38.8881027186484 +22 +-975.735675994198 +32 +2059.65014337885 +13 +-38.8881027186484 +23 +-975.735675994198 +33 +2059.65014337885 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-38.8881027186484 +20 +-975.735675994198 +30 +2059.65014337885 +11 +-43.0469725205787 +21 +-1075.72879087574 +31 +2051.86944523768 +12 +-43.0469725205787 +22 +-975.791818816059 +32 +2051.86944523768 +13 +-43.0469725205787 +23 +-975.791818816059 +33 +2051.86944523768 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-891.670534105406 +20 +-595.795202951324 +30 +2148.21162800104 +11 +-780.975408992987 +21 +-732.34720289276 +31 +2135.63378054399 +12 +-759.379832416841 +22 +-756.991889361348 +32 +2148.21162800104 +13 +-759.379832416841 +23 +-756.991889361348 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-780.975408992987 +20 +-732.34720289276 +30 +2135.63378054399 +11 +-891.670534105406 +21 +-595.795202951324 +31 +2148.21162800104 +12 +-804.422958470166 +22 +-708.167767562713 +32 +2102.55187642937 +13 +-804.422958470166 +23 +-708.167767562713 +33 +2102.55187642937 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-804.422958470166 +20 +-708.167767562713 +30 +2102.55187642937 +11 +-891.670534105406 +21 +-595.795202951324 +31 +2148.21162800104 +12 +-818.273878310588 +22 +-697.096462294947 +32 +2058.80160712022 +13 +-818.273878310588 +23 +-697.096462294947 +33 +2058.80160712022 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-818.273878310588 +20 +-697.096462294947 +30 +2058.80160712022 +11 +-891.670534105406 +21 +-595.795202951324 +31 +2148.21162800104 +12 +-897.961029579872 +22 +-599.99837764929 +32 +2058.8118770109 +13 +-897.961029579872 +23 +-599.99837764929 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-595.795202951324 +20 +-891.670534105406 +30 +1922.19277204157 +11 +-738.20854961057 +21 +-738.20854961057 +31 +1812.39759571907 +12 +-580.006735667279 +22 +-868.04142298445 +32 +1812.39759571907 +13 +-580.006735667279 +23 +-868.04142298445 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-738.20854961057 +20 +-738.20854961057 +30 +1812.39759571907 +11 +-595.795202951324 +21 +-891.670534105406 +31 +1922.19277204157 +12 +-712.200510303116 +22 +-793.069743896677 +32 +1912.98147661467 +13 +-712.200510303116 +23 +-793.069743896677 +33 +1912.98147661467 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +-712.200510303116 +20 +-793.069743896677 +30 +1912.98147661467 +11 +-595.795202951324 +21 +-891.670534105406 +31 +1922.19277204157 +12 +-697.04031921187 +22 +-808.580814515394 +32 +1922.19277204157 +13 +-697.04031921187 +23 +-808.580814515394 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-738.20854961057 +20 +-738.20854961057 +30 +1812.39759571907 +11 +-750.032010089465 +21 +-762.726244296354 +31 +1915.09420023775 +12 +-757.858868059522 +22 +-757.858868059522 +32 +1919.76361420147 +13 +-757.858868059522 +23 +-757.858868059522 +33 +1919.76361420147 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-750.032010089465 +20 +-762.726244296354 +30 +1915.09420023775 +11 +-738.20854961057 +21 +-738.20854961057 +31 +1812.39759571907 +12 +-712.200510303116 +22 +-793.069743896677 +32 +1912.98147661467 +13 +-712.200510303116 +23 +-793.069743896677 +33 +1912.98147661467 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-595.795202951324 +20 +-891.670534105406 +30 +1922.19277204157 +11 +-679.407718084958 +21 +-824.046894149155 +31 +1931.32901160226 +12 +-697.04031921187 +22 +-808.580814515394 +32 +1922.19277204157 +13 +-697.04031921187 +23 +-808.580814515394 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-679.407718084958 +20 +-824.046894149155 +30 +1931.32901160226 +11 +-595.795202951324 +21 +-891.670534105406 +31 +1922.19277204157 +12 +-599.99837764929 +22 +-897.961029579872 +32 +2011.5925230317 +13 +-599.99837764929 +23 +-897.961029579872 +33 +2011.5925230317 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-679.407718084958 +20 +-824.046894149155 +30 +1931.32901160226 +11 +-599.99837764929 +21 +-897.961029579872 +31 +2011.5925230317 +12 +-654.791104458432 +22 +-848.015122202593 +32 +1965.89490198638 +13 +-654.791104458432 +23 +-848.015122202593 +33 +1965.89490198638 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-654.791104458432 +20 +-848.015122202593 +30 +1965.89490198638 +11 +-599.99837764929 +21 +-897.961029579872 +31 +2011.5925230317 +12 +-643.970452120392 +22 +-861.831591212861 +32 +2011.20252653019 +13 +-643.970452120392 +23 +-861.831591212861 +33 +2011.20252653019 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-643.970452120392 +20 +-861.831591212861 +30 +2011.20252653019 +11 +-599.99837764929 +21 +-897.961029579872 +31 +2011.5925230317 +12 +-644.006839982028 +22 +-861.844217926399 +32 +2011.59252303171 +13 +-644.006839982028 +23 +-861.844217926399 +33 +2011.59252303171 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +914.026066884025 +11 +471.799768952456 +21 +-706.098253038493 +31 +855.37186879426 +12 +600.487204246519 +22 +-600.48720424652 +32 +855.37186879426 +13 +600.487204246519 +23 +-600.48720424652 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +471.799768952456 +20 +-706.098253038493 +30 +855.37186879426 +11 +594.593536632776 +21 +-594.593536632776 +31 +914.026066884025 +12 +467.169144021928 +22 +-699.168033082722 +32 +914.026066884025 +13 +467.169144021928 +23 +-699.168033082722 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +914.026066884025 +11 +462.461640169813 +21 +-462.461640169813 +31 +1054.1729200213 +12 +363.353779128852 +22 +-543.797359730523 +32 +1054.1729200213 +13 +363.353779128852 +23 +-543.797359730523 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +462.461640169813 +20 +-462.461640169813 +30 +1054.1729200213 +11 +467.169144021928 +21 +-699.168033082722 +31 +914.026066884025 +12 +594.593536632776 +22 +-594.593536632776 +32 +914.026066884025 +13 +594.593536632776 +23 +-594.593536632776 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +495.494614285553 +20 +-495.494614285553 +30 +1241.03564002131 +11 +441.215302798659 +21 +-660.325364744672 +31 +1054.1729200213 +12 +561.560562517035 +22 +-561.560562517035 +32 +1054.1729200213 +13 +561.560562517035 +23 +-561.560562517035 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +441.215302798659 +20 +-660.325364744672 +30 +1054.1729200213 +11 +495.494614285553 +21 +-495.494614285553 +31 +1241.03564002131 +12 +389.307620352121 +22 +-582.640028068573 +32 +1241.03564002131 +13 +389.307620352121 +23 +-582.640028068573 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +528.527588401294 +20 +-528.527588401294 +30 +1427.8983600213 +11 +467.169144021928 +21 +-699.168033082722 +31 +1241.03564002131 +12 +594.593536632776 +22 +-594.593536632775 +32 +1241.03564002131 +13 +594.593536632776 +23 +-594.593536632775 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +1241.03564002131 +11 +528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +415.26146157539 +22 +-621.482696406623 +32 +1427.8983600213 +13 +415.26146157539 +23 +-621.482696406623 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-916.376162171087 +20 +-182.278551827736 +30 +2455.6433200213 +11 +-997.519349743285 +21 +3.60955709766131e-13 +31 +2361.46489814399 +12 +-978.352295145615 +22 +-194.606371158736 +32 +2361.46489814399 +13 +-978.352295145615 +23 +-194.606371158736 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-997.519349743285 +20 +3.60955709766131e-13 +30 +2361.46489814399 +11 +-916.376162171087 +21 +-182.278551827736 +31 +2455.6433200213 +12 +-925.06395772174 +22 +-94.0698833092507 +32 +2455.6433200213 +13 +-925.06395772174 +23 +-94.0698833092507 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-997.519349743285 +20 +3.60955709766131e-13 +30 +2361.46489814399 +11 +-925.06395772174 +21 +-94.0698833092507 +31 +2455.6433200213 +12 +-934.329032542513 +22 +3.60955709766131e-13 +32 +2455.6433200213 +13 +-934.329032542513 +23 +3.60955709766131e-13 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-561.560562517035 +20 +-561.560562517035 +30 +1614.7610800213 +11 +-670.393897307106 +21 +-575.514299446691 +31 +1427.8983600213 +12 +-627.626510748516 +22 +-627.626510748516 +32 +1427.8983600213 +13 +-627.626510748516 +23 +-627.626510748516 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-670.393897307106 +20 +-575.514299446691 +30 +1427.8983600213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +-727.278190985583 +22 +-506.200587048885 +32 +1427.8983600213 +13 +-727.278190985583 +23 +-506.200587048885 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-727.278190985583 +20 +-506.200587048885 +30 +1427.8983600213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +-660.325364744672 +22 +-441.215302798659 +32 +1614.7610800213 +13 +-660.325364744672 +23 +-441.215302798659 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-727.278190985583 +20 +-506.200587048885 +30 +1427.8983600213 +11 +-660.325364744672 +21 +-441.215302798659 +31 +1614.7610800213 +12 +-738.010701420772 +22 +-493.122985245198 +32 +1427.8983600213 +13 +-738.010701420772 +23 +-493.122985245198 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +997.519349743285 +20 +1.80477854883065e-13 +30 +2361.46489814399 +11 +916.376162171087 +21 +-182.278551827737 +31 +2455.6433200213 +12 +978.352295145615 +22 +-194.606371158736 +32 +2361.46489814399 +13 +978.352295145615 +23 +-194.606371158736 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +916.376162171087 +20 +-182.278551827737 +30 +2455.6433200213 +11 +997.519349743285 +21 +1.80477854883065e-13 +31 +2361.46489814399 +12 +925.063958382437 +22 +-94.0698766010765 +32 +2455.6433200213 +13 +925.063958382437 +23 +-94.0698766010765 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +925.063958382437 +20 +-94.0698766010765 +30 +2455.6433200213 +11 +997.519349743285 +21 +1.80477854883065e-13 +31 +2361.46489814399 +12 +934.329032542513 +22 +1.80477854883065e-13 +32 +2455.6433200213 +13 +934.329032542513 +23 +1.80477854883065e-13 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-757.051052836406 +20 +-872.59583635536 +30 +2110.05176266305 +11 +-713.051374182295 +21 +-793.031288591004 +31 +2155.44278114838 +12 +-779.335772128321 +22 +-850.040945080999 +32 +2123.14819601944 +13 +-779.335772128321 +23 +-850.040945080999 +33 +2123.14819601944 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-713.051374182295 +20 +-793.031288591004 +30 +2155.44278114838 +11 +-757.051052836406 +21 +-872.59583635536 +31 +2110.05176266305 +12 +-700.811796716974 +22 +-805.485642916867 +32 +2148.21162800104 +13 +-700.811796716974 +23 +-805.485642916867 +33 +2148.21162800104 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-700.811796716974 +20 +-805.485642916867 +30 +2148.21162800104 +11 +-757.051052836406 +21 +-872.59583635536 +31 +2110.05176266305 +12 +-680.351354626835 +22 +-823.413171149779 +32 +2137.7839549476 +13 +-680.351354626835 +23 +-823.413171149779 +33 +2137.7839549476 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-803.639076572628 +20 +-825.829443784589 +30 +2123.11658846682 +11 +-780.975408992987 +21 +-732.34720289276 +31 +2135.63378054399 +12 +-826.261008377686 +22 +-803.647314060702 +32 +2109.96175196855 +13 +-826.261008377686 +23 +-803.647314060702 +33 +2109.96175196855 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-780.975408992987 +20 +-732.34720289276 +30 +2135.63378054399 +11 +-803.639076572628 +21 +-825.829443784589 +31 +2123.11658846682 +12 +-759.379832416841 +22 +-756.991889361348 +32 +2148.21162800104 +13 +-759.379832416841 +23 +-756.991889361348 +33 +2148.21162800104 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-759.379832416841 +20 +-756.991889361348 +30 +2148.21162800104 +11 +-803.639076572628 +21 +-825.829443784589 +31 +2123.11658846682 +12 +-758.175252738136 +22 +-758.175252738136 +32 +2148.91211343617 +13 +-758.175252738136 +23 +-758.175252738136 +33 +2148.91211343617 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-758.175252738136 +20 +-758.175252738136 +30 +2148.91211343617 +11 +-803.639076572628 +21 +-825.829443784589 +31 +2123.11658846682 +12 +-750.226480623555 +22 +-763.163737563064 +32 +2153.51833793914 +13 +-750.226480623555 +23 +-763.163737563064 +33 +2153.51833793914 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-471.799768952456 +20 +-706.098253038492 +30 +855.37186879426 +11 +-599.277053327022 +21 +-599.277053327022 +31 +796.153149972084 +12 +-470.848959476119 +22 +-704.67526609701 +32 +796.153149972084 +13 +-470.848959476119 +23 +-704.67526609701 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-599.277053327022 +20 +-599.277053327022 +30 +796.153149972084 +11 +-471.799768952456 +21 +-706.098253038492 +31 +855.37186879426 +12 +-600.487204246519 +22 +-600.487204246519 +32 +855.37186879426 +13 +-600.487204246519 +23 +-600.487204246519 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +194.606371158736 +20 +-978.352295145615 +30 +2361.46489814399 +11 +1.80477854883065e-13 +21 +-1043.98454271904 +31 +2258.00680432354 +12 +203.671280618918 +22 +-1023.92467246733 +32 +2258.00680432354 +13 +203.671280618918 +23 +-1023.92467246733 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1043.98454271904 +30 +2258.00680432354 +11 +194.606371158736 +21 +-978.352295145615 +31 +2361.46489814399 +12 +1.80477854883065e-13 +22 +-997.519349743284 +32 +2361.46489814399 +13 +1.80477854883065e-13 +23 +-997.519349743284 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-780.975408992987 +20 +-732.34720289276 +30 +2135.63378054399 +11 +-843.757583494495 +21 +-786.871584078293 +31 +2085.68639113261 +12 +-826.261008377686 +22 +-803.647314060702 +32 +2109.96175196855 +13 +-826.261008377686 +23 +-803.647314060702 +33 +2109.96175196855 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-843.757583494495 +20 +-786.871584078293 +30 +2085.68639113261 +11 +-780.975408992987 +21 +-732.34720289276 +31 +2135.63378054399 +12 +-804.422958470166 +22 +-708.167767562713 +32 +2102.55187642937 +13 +-804.422958470166 +23 +-708.167767562713 +33 +2102.55187642937 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-786.927339360508 +20 +-735.2933223192 +30 +2011.59250954971 +11 +-761.145931803741 +21 +-761.14593180374 +31 +1969.69450846846 +12 +-763.653083482914 +22 +-763.653083482914 +32 +2011.5925230317 +13 +-763.653083482914 +23 +-763.653083482914 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-761.145931803741 +20 +-761.14593180374 +30 +1969.69450846846 +11 +-786.927339360508 +21 +-735.2933223192 +31 +2011.59250954971 +12 +-766.91292419702 +22 +-754.581509059306 +32 +1973.17973333127 +13 +-766.91292419702 +23 +-754.581509059306 +33 +1973.17973333127 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-766.91292419702 +20 +-754.581509059306 +30 +1973.17973333127 +11 +-786.927339360508 +21 +-735.2933223192 +31 +2011.59250954971 +12 +-781.308061641118 +22 +-739.778791807586 +32 +1993.80290570042 +13 +-781.308061641118 +23 +-739.778791807586 +33 +1993.80290570042 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-441.215302798659 +20 +-660.325364744672 +30 +1614.7610800213 +11 +-540.907488126092 +21 +-698.794973376131 +31 +1427.8983600213 +12 +-493.122985245198 +22 +-738.010701420772 +32 +1427.8983600213 +13 +-493.122985245198 +23 +-738.010701420772 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-540.907488126092 +20 +-698.794973376131 +30 +1427.8983600213 +11 +-441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +-610.198917737466 +22 +-641.92896670788 +32 +1427.8983600213 +13 +-610.198917737466 +23 +-641.92896670788 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-610.198917737466 +20 +-641.92896670788 +30 +1427.8983600213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +-627.626510748516 +22 +-627.626510748516 +32 +1427.8983600213 +13 +-627.626510748516 +23 +-627.626510748516 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-561.560562517035 +20 +-561.560562517035 +30 +1614.7610800213 +11 +-610.198917737466 +21 +-641.92896670788 +31 +1427.8983600213 +12 +-441.215302798659 +22 +-660.325364744672 +32 +1614.7610800213 +13 +-441.215302798659 +23 +-660.325364744672 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-410.390873558597 +20 +-990.771212819307 +30 +1922.19277204157 +11 +-580.006735667279 +21 +-868.04142298445 +31 +1812.39759571907 +12 +-399.515588143821 +22 +-964.515951276276 +32 +1812.39759571907 +13 +-399.515588143821 +23 +-964.515951276276 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-580.006735667279 +20 +-868.04142298445 +30 +1812.39759571907 +11 +-410.390873558597 +21 +-990.771212819307 +31 +1922.19277204157 +12 +-595.795202951324 +22 +-891.670534105406 +32 +1922.19277204157 +13 +-595.795202951324 +23 +-891.670534105406 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-413.286070645571 +20 +-997.760836892423 +30 +2011.5925230317 +11 +-595.795202951324 +21 +-891.670534105406 +31 +1922.19277204157 +12 +-410.390873558597 +22 +-990.771212819307 +32 +1922.19277204157 +13 +-410.390873558597 +23 +-990.771212819307 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-595.795202951324 +20 +-891.670534105406 +30 +1922.19277204157 +11 +-413.286070645571 +21 +-997.760836892423 +31 +2011.5925230317 +12 +-599.99837764929 +22 +-897.961029579872 +32 +2011.5925230317 +13 +-599.99837764929 +23 +-897.961029579872 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +-410.390873558597 +21 +-990.771212819307 +31 +1922.19277204157 +12 +-209.215453044867 +22 +-1051.79710945546 +32 +1922.19277204157 +13 +-209.215453044867 +23 +-1051.79710945546 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-410.390873558597 +20 +-990.771212819307 +30 +1922.19277204157 +11 +-210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +-413.286070645571 +22 +-997.760836892423 +32 +2011.5925230317 +13 +-413.286070645571 +23 +-997.760836892423 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-194.606371158736 +20 +-978.352295145615 +30 +2361.46489814399 +11 +-399.515588143821 +21 +-964.515951276275 +31 +2258.00680432354 +12 +-203.671280618918 +22 +-1023.92467246733 +32 +2258.00680432354 +13 +-203.671280618918 +23 +-1023.92467246733 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-399.515588143821 +20 +-964.515951276275 +30 +2258.00680432354 +11 +-194.606371158736 +21 +-978.352295145615 +31 +2361.46489814399 +12 +-381.734128610353 +22 +-921.587710511788 +32 +2361.46489814399 +13 +-381.734128610353 +23 +-921.587710511788 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-731.773964383885 +20 +-406.167737113607 +30 +2549.0746800213 +11 +-699.168033082722 +21 +-467.169144021928 +31 +2455.6433200213 +12 +-699.168033082722 +22 +-467.169144021929 +32 +2549.0746800213 +13 +-699.168033082722 +23 +-467.169144021929 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +-731.773964383885 +21 +-406.167737113607 +31 +2549.0746800213 +12 +-776.873894119249 +22 +-321.791703197793 +32 +2455.6433200213 +13 +-776.873894119249 +23 +-321.791703197793 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-776.873894119249 +20 +-321.791703197793 +30 +2455.6433200213 +11 +-731.773964383885 +21 +-406.167737113607 +31 +2549.0746800213 +12 +-771.834238188426 +22 +-331.220236285058 +32 +2549.0746800213 +13 +-771.834238188426 +23 +-331.220236285058 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-776.873894119249 +20 +-321.791703197793 +30 +2455.6433200213 +11 +-771.834238188426 +21 +-331.220236285058 +31 +2549.0746800213 +12 +-776.87389411925 +22 +-321.791703197793 +32 +2549.0746800213 +13 +-776.87389411925 +23 +-321.791703197793 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-832.899678896021 +20 +-165.674046918964 +30 +855.37186879426 +11 +-782.993203577332 +21 +-324.326404167689 +31 +796.153149972084 +12 +-784.574341950659 +22 +-324.981333125909 +32 +855.37186879426 +13 +-784.574341950659 +23 +-324.981333125909 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-782.993203577332 +20 +-324.326404167689 +30 +796.153149972084 +11 +-832.899678896021 +21 +-165.674046918964 +31 +855.37186879426 +12 +-831.221151351825 +22 +-165.340167031437 +32 +796.153149972084 +13 +-831.221151351825 +23 +-165.340167031437 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +320.792432759964 +20 +-1019.67559748903 +30 +1941.79325554754 +11 +209.215453044867 +21 +-1051.79710945546 +31 +1922.19277204157 +12 +349.642861592144 +22 +-1009.19892078507 +32 +1922.19277204157 +13 +349.642861592144 +23 +-1009.19892078507 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +209.215453044867 +20 +-1051.79710945546 +30 +1922.19277204157 +11 +320.792432759964 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +210.691411720441 +22 +-1059.21725479392 +32 +2011.5925230317 +13 +210.691411720441 +23 +-1059.21725479392 +33 +2011.5925230317 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +320.792432759964 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +288.287531523413 +22 +-1033.5656801692 +32 +1987.58272162968 +13 +288.287531523413 +23 +-1033.5656801692 +33 +1987.58272162968 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +288.287531523413 +21 +-1033.5656801692 +31 +1987.58272162968 +12 +287.457754814725 +22 +-1035.93043920361 +32 +2011.5925230317 +13 +287.457754814725 +23 +-1035.93043920361 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +705.352696568272 +20 +-705.352696568272 +30 +2361.46489814399 +11 +653.750224578544 +21 +-807.521705673266 +31 +2258.00680432354 +12 +738.20854961057 +22 +-738.208549610569 +32 +2258.00680432354 +13 +738.20854961057 +23 +-738.208549610569 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-807.521705673266 +30 +2258.00680432354 +11 +705.352696568272 +21 +-705.352696568272 +31 +2361.46489814399 +12 +653.750224578543 +22 +-795.278127928135 +32 +2279.18196601546 +13 +653.750224578543 +23 +-795.278127928135 +33 +2279.18196601546 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +600.307509232711 +20 +-841.785968318108 +30 +2274.60134354834 +11 +554.192057578438 +21 +-829.407026995336 +31 +2361.46489814399 +12 +577.578293884962 +22 +-864.407003018736 +32 +2267.73932769213 +13 +577.578293884962 +23 +-864.407003018736 +33 +2267.73932769213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +554.192057578438 +20 +-829.407026995336 +30 +2361.46489814399 +11 +600.307509232711 +21 +-841.785968318108 +31 +2274.60134354834 +12 +653.750224578543 +22 +-795.278127928135 +32 +2279.18196601546 +13 +653.750224578543 +23 +-795.278127928135 +33 +2279.18196601546 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +554.192057578438 +20 +-829.407026995336 +30 +2361.46489814399 +11 +653.750224578543 +21 +-795.278127928135 +31 +2279.18196601546 +12 +705.352696568272 +22 +-705.352696568272 +32 +2361.46489814399 +13 +705.352696568272 +23 +-705.352696568272 +33 +2361.46489814399 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-781.308061641118 +20 +-739.778791807586 +30 +1993.80290570042 +11 +-833.979694213849 +21 +-798.243508123 +31 +2025.28667143296 +12 +-827.976635409257 +22 +-804.801337927561 +32 +2003.90537806848 +13 +-827.976635409257 +23 +-804.801337927561 +33 +2003.90537806848 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-833.979694213849 +20 +-798.243508123 +30 +2025.28667143296 +11 +-781.308061641118 +21 +-739.778791807586 +31 +1993.80290570042 +12 +-786.927339360508 +22 +-735.2933223192 +32 +2011.59250954971 +13 +-786.927339360508 +23 +-735.2933223192 +33 +2011.59250954971 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-833.979694213849 +20 +-798.243508123 +30 +2025.28667143296 +11 +-786.927339360508 +21 +-735.2933223192 +31 +2011.59250954971 +12 +-789.394716623343 +22 +-732.286733093936 +32 +2020.79944934296 +13 +-789.394716623343 +23 +-732.286733093936 +33 +2020.79944934296 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1.46816063865592 +20 +-978.223928142328 +30 +2079.65151912724 +11 +1.80477854883065e-13 +21 +-1078.21721573187 +31 +2079.50691792559 +12 +-1.4681606386561 +22 +-1078.06037755542 +32 +2079.65151912724 +13 +-1.4681606386561 +23 +-1078.06037755542 +33 +2079.65151912724 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1078.21721573187 +30 +2079.50691792559 +11 +-1.46816063865592 +21 +-978.223928142328 +31 +2079.65151912724 +12 +0.0 +22 +-978.377185230535 +32 +2079.50691792559 +13 +0.0 +23 +-978.377185230535 +33 +2079.50691792559 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1078.21721573187 +30 +2079.50691792559 +11 +0.0 +21 +-978.377185230535 +31 +2079.50691792559 +12 +7.31179769318775 +22 +-977.70014443868 +32 +2078.78676870972 +13 +7.31179769318775 +23 +-977.70014443868 +33 +2078.78676870972 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1078.21721573187 +30 +2079.50691792559 +11 +7.31179769318775 +21 +-977.70014443868 +31 +2078.78676870972 +12 +7.31179769318775 +22 +-1077.55800963197 +32 +2078.78676870972 +13 +7.31179769318775 +23 +-1077.55800963197 +33 +2078.78676870972 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +738.20854961057 +20 +-738.20854961057 +30 +1812.39759571907 +11 +767.904940618653 +21 +-709.249312269841 +31 +1830.19391829555 +12 +739.771122243662 +22 +-739.771122243661 +32 +1820.9352284623 +13 +739.771122243662 +23 +-739.771122243661 +33 +1820.9352284623 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +767.904940618653 +20 +-709.249312269841 +30 +1830.19391829555 +11 +738.20854961057 +21 +-738.20854961057 +31 +1812.39759571907 +12 +868.04142298445 +22 +-580.006735667279 +32 +1812.39759571907 +13 +868.04142298445 +23 +-580.006735667279 +33 +1812.39759571907 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +767.904940618653 +20 +-709.249312269841 +30 +1830.19391829555 +11 +868.04142298445 +21 +-580.006735667279 +31 +1812.39759571907 +12 +806.222012671193 +22 +-670.885845335315 +32 +1850.69961858573 +13 +806.222012671193 +23 +-670.885845335315 +33 +1850.69961858573 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +806.222012671193 +20 +-670.885845335315 +30 +1850.69961858573 +11 +868.04142298445 +21 +-580.006735667279 +31 +1812.39759571907 +12 +843.01369820043 +22 +-637.259985333474 +32 +1878.29564871262 +13 +843.01369820043 +23 +-637.259985333474 +33 +1878.29564871262 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +843.01369820043 +20 +-637.259985333474 +30 +1878.29564871262 +11 +868.04142298445 +21 +-580.006735667279 +31 +1812.39759571907 +12 +876.866113364493 +22 +-609.663955206589 +32 +1911.92150871446 +13 +876.866113364493 +23 +-609.663955206589 +33 +1911.92150871446 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +876.866113364493 +20 +-609.663955206589 +30 +1911.92150871446 +11 +868.04142298445 +21 +-580.006735667279 +31 +1812.39759571907 +12 +884.794355702396 +22 +-604.173850577965 +32 +1922.19277204157 +13 +884.794355702396 +23 +-604.173850577965 +33 +1922.19277204157 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +884.794355702396 +20 +-604.173850577965 +30 +1922.19277204157 +11 +868.04142298445 +21 +-580.006735667279 +31 +1812.39759571907 +12 +891.670534105407 +22 +-595.795202951324 +32 +1922.19277204157 +13 +891.670534105407 +23 +-595.795202951324 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-824.724927080674 +20 +-164.047987682633 +30 +914.026066884025 +11 +-654.019523605455 +21 +1.80477854883065e-13 +31 +1054.1729200213 +12 +-840.882243605455 +22 +1.80477854883065e-13 +32 +914.026066884025 +13 +-840.882243605455 +23 +1.80477854883065e-13 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-654.019523605455 +20 +1.80477854883065e-13 +30 +1054.1729200213 +11 +-824.724927080674 +21 +-164.047987682633 +31 +914.026066884025 +12 +-641.452721848564 +22 +-127.592879465023 +32 +1054.1729200213 +13 +-641.452721848564 +23 +-127.592879465023 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1072.40303302985 +20 +3.60955709766131e-13 +30 +1922.19277204157 +11 +-1023.92467246733 +21 +-203.671280618918 +31 +1812.39759571907 +12 +-1051.79710945546 +22 +-209.215453044867 +32 +1922.19277204157 +13 +-1051.79710945546 +23 +-209.215453044867 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1023.92467246733 +20 +-203.671280618918 +30 +1812.39759571907 +11 +-1072.40303302985 +21 +3.60955709766131e-13 +31 +1922.19277204157 +12 +-1043.98454271904 +22 +3.60955709766131e-13 +32 +1812.39759571907 +13 +-1043.98454271904 +23 +3.60955709766131e-13 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-824.724927080674 +20 +-164.047987682633 +30 +914.026066884025 +11 +-849.217148276931 +21 +3.60955709766131e-13 +31 +855.37186879426 +12 +-832.899678896021 +22 +-165.674046918964 +32 +855.37186879426 +13 +-832.899678896021 +23 +-165.674046918964 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-849.217148276931 +20 +3.60955709766131e-13 +30 +855.37186879426 +11 +-824.724927080674 +21 +-164.047987682633 +31 +914.026066884025 +12 +-840.882243605455 +22 +1.80477854883065e-13 +32 +914.026066884025 +13 +-840.882243605455 +23 +1.80477854883065e-13 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +203.671280618918 +20 +-1023.92467246733 +30 +2258.00680432354 +11 +1.80477854883065e-13 +21 +-1072.40303302985 +31 +2148.21162800104 +12 +209.215453044867 +22 +-1051.79710945546 +32 +2148.21162800104 +13 +209.215453044867 +23 +-1051.79710945546 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1072.40303302985 +30 +2148.21162800104 +11 +203.671280618918 +21 +-1023.92467246733 +31 +2258.00680432354 +12 +1.80477854883065e-13 +22 +-1043.98454271904 +32 +2258.00680432354 +13 +1.80477854883065e-13 +23 +-1043.98454271904 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +2549.0746800213 +11 +164.047987682633 +21 +-824.724927080674 +31 +2455.6433200213 +12 +321.791703197793 +22 +-776.87389411925 +32 +2455.6433200213 +13 +321.791703197793 +23 +-776.87389411925 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +321.791703197793 +21 +-776.87389411925 +31 +2549.0746800213 +12 +164.047987682633 +22 +-824.724927080674 +32 +2549.0746800213 +13 +164.047987682633 +23 +-824.724927080674 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +2549.0746800213 +11 +321.791703197793 +21 +-776.87389411925 +31 +2549.0746800213 +12 +291.163503259545 +22 +-786.16485699538 +32 +2549.0746800213 +13 +291.163503259545 +23 +-786.16485699538 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +2549.0746800213 +11 +291.163503259545 +21 +-786.16485699538 +31 +2549.0746800213 +12 +209.932273259994 +22 +-810.806081221089 +32 +2549.0746800213 +13 +209.932273259994 +23 +-810.806081221089 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-837.4569269514 +30 +1817.56657040449 +11 +180.675224578544 +21 +-794.16651328432 +31 +1813.3028368105 +12 +180.675224578544 +22 +-837.4569269514 +32 +1817.56657040449 +13 +180.675224578544 +23 +-837.4569269514 +33 +1817.56657040449 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +1813.3028368105 +11 +653.750224578544 +21 +-837.4569269514 +31 +1817.56657040449 +12 +653.750224578543 +22 +-808.286776169451 +32 +1814.69356131783 +13 +653.750224578543 +23 +-808.286776169451 +33 +1814.69356131783 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +670.391132645368 +20 +-794.16651328432 +30 +1813.3028368105 +11 +180.675224578544 +21 +-794.16651328432 +31 +1813.3028368105 +12 +653.750224578543 +22 +-808.286776169451 +32 +1814.69356131783 +13 +653.750224578543 +23 +-808.286776169451 +33 +1814.69356131783 +70 +2 + 0 +3DFACE + 8 +body_half_outside +10 +876.866113364493 +20 +-609.663955206589 +30 +1911.92150871446 +11 +180.675224578544 +21 +-637.259985333474 +31 +1878.29564871262 +12 +843.01369820043 +22 +-637.259985333474 +32 +1878.29564871262 +13 +843.01369820043 +23 +-637.259985333474 +33 +1878.29564871262 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-637.259985333474 +30 +1878.29564871262 +11 +876.866113364493 +21 +-609.663955206589 +31 +1911.92150871446 +12 +180.675224578544 +22 +-609.663955206589 +32 +1911.92150871446 +13 +180.675224578544 +23 +-609.663955206589 +33 +1911.92150871446 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632776 +20 +-594.593536632776 +30 +914.026066884025 +11 +-543.797359730523 +21 +-363.353779128852 +31 +1054.1729200213 +12 +-699.168033082722 +22 +-467.169144021929 +32 +914.026066884025 +13 +-699.168033082722 +23 +-467.169144021929 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-543.797359730523 +20 +-363.353779128852 +30 +1054.1729200213 +11 +-594.593536632776 +21 +-594.593536632776 +31 +914.026066884025 +12 +-462.461640169813 +22 +-462.461640169813 +32 +1054.1729200213 +13 +-462.461640169813 +23 +-462.461640169813 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-10.2481189704998 +20 +-977.41094203537 +30 +2078.78676870972 +11 +-18.690668427508 +21 +-1076.65401668716 +31 +2076.22574933075 +12 +-18.690668427508 +22 +-976.732727149702 +32 +2076.22574933075 +13 +-18.690668427508 +23 +-976.732727149702 +33 +2076.22574933075 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-18.690668427508 +20 +-1076.65401668716 +30 +2076.22574933075 +11 +-10.2481189704998 +21 +-977.41094203537 +31 +2078.78676870972 +12 +-10.2481189705 +22 +-1077.26880722866 +32 +2078.78676870972 +13 +-10.2481189705 +23 +-1077.26880722866 +33 +2078.78676870972 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +908.625264240696 +20 +-576.530906699202 +30 +2078.49259036266 +11 +180.675224578544 +21 +-589.158254916404 +31 +2120.11937767794 +12 +180.675224578544 +22 +-576.530907025343 +32 +2078.49259033054 +13 +180.675224578544 +23 +-576.530907025343 +33 +2078.49259033054 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-589.158254916404 +30 +2120.11937767794 +11 +908.625264240696 +21 +-576.530906699202 +31 +2078.49259036266 +12 +897.900697882446 +22 +-589.158254916404 +32 +2120.11937767794 +13 +897.900697882446 +23 +-589.158254916404 +33 +2120.11937767794 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +590.997993226901 +20 +-590.997993226901 +30 +738.078199114136 +11 +704.67526609701 +21 +-470.84895947612 +31 +796.153149972084 +12 +599.277053327022 +22 +-599.277053327022 +32 +796.153149972084 +13 +599.277053327022 +23 +-599.277053327022 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +704.67526609701 +20 +-470.84895947612 +30 +796.153149972084 +11 +590.997993226901 +21 +-590.997993226901 +31 +738.078199114136 +12 +694.940121314314 +22 +-464.344143695271 +32 +738.078199114136 +13 +694.940121314314 +23 +-464.344143695271 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-733.088824464619 +20 +-145.820433573828 +30 +1427.8983600213 +11 +-840.882243605455 +21 +1.80477854883065e-13 +31 +1241.03564002131 +12 +-824.724927080674 +22 +-164.047987682633 +32 +1241.03564002131 +13 +-824.724927080674 +23 +-164.047987682633 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +1241.03564002131 +11 +-733.088824464619 +21 +-145.820433573828 +31 +1427.8983600213 +12 +-747.450883605455 +22 +1.80477854883065e-13 +32 +1427.8983600213 +13 +-747.450883605455 +23 +1.80477854883065e-13 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +908.625259608371 +20 +-576.530907025343 +30 +1991.91176299638 +11 +180.675224578544 +21 +-589.158254916404 +31 +1950.28497564898 +12 +897.90069342138 +22 +-589.158254916404 +32 +1950.28497564898 +13 +897.90069342138 +23 +-589.158254916404 +33 +1950.28497564898 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-589.158254916404 +30 +1950.28497564898 +11 +908.625259608371 +21 +-576.530907025343 +31 +1991.91176299638 +12 +180.675224578544 +22 +-576.530907025343 +32 +1991.91176299638 +13 +180.675224578544 +23 +-576.530907025343 +33 +1991.91176299638 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021929 +20 +-699.168033082722 +30 +914.026066884025 +11 +-462.461640169813 +21 +-462.461640169813 +31 +1054.1729200213 +12 +-594.593536632776 +22 +-594.593536632776 +32 +914.026066884025 +13 +-594.593536632776 +23 +-594.593536632776 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-462.461640169813 +20 +-462.461640169813 +30 +1054.1729200213 +11 +-467.169144021929 +21 +-699.168033082722 +31 +914.026066884025 +12 +-363.353779128852 +22 +-543.797359730523 +32 +1054.1729200213 +13 +-363.353779128852 +23 +-543.797359730523 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-705.406767999999 +30 +2035.20217666346 +11 +104.493585205719 +21 +-707.112262514746 +31 +2017.88602361794 +12 +180.675224578544 +22 +-707.112261617118 +32 +2017.88600937388 +13 +180.675224578544 +23 +-707.112261617118 +33 +2017.88600937388 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493585205719 +20 +-707.112262514746 +30 +2017.88602361794 +11 +180.675224578544 +21 +-705.406767999999 +31 +2035.20217666346 +12 +104.493582702864 +22 +-705.406767999999 +32 +2035.2022000213 +13 +104.493582702864 +23 +-705.406767999999 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-781.35466353334 +20 +-731.718944065101 +30 +1933.51796332002 +11 +-805.85406896736 +21 +-828.277941296301 +31 +1950.68418808414 +12 +-828.138788259274 +22 +-805.723050021943 +32 +1963.78062144053 +13 +-828.138788259274 +23 +-805.723050021943 +33 +1963.78062144053 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-805.85406896736 +20 +-828.277941296301 +30 +1950.68418808414 +11 +-781.35466353334 +21 +-731.718944065101 +31 +1933.51796332002 +12 +-761.987076679027 +22 +-753.814953035805 +32 +1922.19277204157 +13 +-761.987076679027 +23 +-753.814953035805 +33 +1922.19277204157 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-805.85406896736 +20 +-828.277941296301 +30 +1950.68418808414 +11 +-761.987076679027 +21 +-753.814953035805 +31 +1922.19277204157 +12 +-757.858868059522 +22 +-757.858868059522 +32 +1919.76361420147 +13 +-757.858868059522 +23 +-757.858868059522 +33 +1919.76361420147 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-805.85406896736 +20 +-828.277941296301 +30 +1950.68418808414 +11 +-757.858868059522 +21 +-757.858868059522 +31 +1919.76361420147 +12 +-750.032010089465 +22 +-762.726244296354 +32 +1915.09420023775 +13 +-750.032010089465 +23 +-762.726244296354 +33 +1915.09420023775 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +731.120068617964 +20 +-145.428823687577 +30 +587.016306884026 +11 +784.019466456977 +21 +1.80477854883065e-13 +31 +631.979456702016 +12 +768.954752250597 +22 +-152.954610178005 +32 +631.979456702016 +13 +768.954752250597 +23 +-152.954610178005 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +784.019466456977 +20 +1.80477854883065e-13 +30 +631.979456702016 +11 +731.120068617964 +21 +-145.428823687577 +31 +587.016306884026 +12 +745.443557551535 +22 +1.80477854883065e-13 +32 +587.016306884026 +13 +745.443557551535 +23 +1.80477854883065e-13 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-1011.8021195433 +30 +1991.91176299638 +11 +180.675224578544 +21 +-1011.8021195433 +31 +2078.49259033054 +12 +180.675224578544 +22 +-1016.06585313728 +32 +2035.20217666346 +13 +180.675224578544 +23 +-1016.06585313728 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-1011.8021195433 +30 +2078.49259033054 +11 +180.675224578544 +21 +-1011.8021195433 +31 +1991.91176299638 +12 +180.675224578544 +22 +-999.174771652236 +32 +1950.28497564898 +13 +180.675224578544 +23 +-999.174771652236 +33 +1950.28497564898 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-1011.8021195433 +30 +2078.49259033054 +11 +180.675224578544 +21 +-999.174771652236 +31 +1950.28497564898 +12 +180.675224578544 +22 +-999.174771652236 +32 +2120.11937767794 +13 +180.675224578544 +23 +-999.174771652236 +33 +2120.11937767794 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-999.174771652236 +30 +2120.11937767794 +11 +180.675224578544 +21 +-999.174771652236 +31 +1950.28497564898 +12 +180.675224578544 +22 +-978.669071362051 +32 +1911.92150871446 +13 +180.675224578544 +23 +-978.669071362051 +33 +1911.92150871446 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-999.174771652236 +30 +2120.11937767794 +11 +180.675224578544 +21 +-978.669071362051 +31 +1911.92150871446 +12 +180.675224578544 +22 +-978.669071362051 +32 +2158.48284461247 +13 +180.675224578544 +23 +-978.669071362051 +33 +2158.48284461247 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-978.669071362051 +30 +2158.48284461247 +11 +180.675224578544 +21 +-978.669071362051 +31 +1911.92150871446 +12 +180.675224578544 +22 +-951.073041235166 +32 +1878.29564871262 +13 +180.675224578544 +23 +-951.073041235166 +33 +1878.29564871262 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-978.669071362051 +30 +2158.48284461247 +11 +180.675224578544 +21 +-951.073041235166 +31 +1878.29564871262 +12 +180.675224578544 +22 +-951.073041235166 +32 +2192.10870461431 +13 +180.675224578544 +23 +-951.073041235166 +33 +2192.10870461431 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-951.073041235166 +30 +2192.10870461431 +11 +180.675224578544 +21 +-951.073041235166 +31 +1878.29564871262 +12 +180.675224578544 +22 +-917.447181233325 +32 +1850.69961858573 +13 +180.675224578544 +23 +-917.447181233325 +33 +1850.69961858573 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-951.073041235166 +30 +2192.10870461431 +11 +180.675224578544 +21 +-917.447181233325 +31 +1850.69961858573 +12 +180.675224578544 +22 +-917.447181233325 +32 +2219.70473474119 +13 +180.675224578544 +23 +-917.447181233325 +33 +2219.70473474119 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-917.447181233325 +30 +2219.70473474119 +11 +180.675224578544 +21 +-917.447181233325 +31 +1850.69961858573 +12 +180.675224578544 +22 +-879.083714298798 +32 +1830.19391829555 +13 +180.675224578544 +23 +-879.083714298798 +33 +1830.19391829555 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-917.447181233325 +30 +2219.70473474119 +11 +180.675224578544 +21 +-879.083714298798 +31 +1830.19391829555 +12 +180.675224578544 +22 +-882.926258568641 +32 +2035.20217666346 +13 +180.675224578544 +23 +-882.926258568641 +33 +2035.20217666346 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-882.926258568641 +30 +2035.20217666346 +11 +180.675224578544 +21 +-879.083714298798 +31 +1830.19391829555 +12 +180.675224578544 +22 +-881.220764951522 +32 +2017.88600937388 +13 +180.675224578544 +23 +-881.220764951522 +33 +2017.88600937388 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-881.220764951522 +30 +2017.88600937388 +11 +180.675224578544 +21 +-879.083714298798 +31 +1830.19391829555 +12 +180.675224578544 +22 +-876.169825263419 +32 +2001.23529268221 +13 +180.675224578544 +23 +-876.169825263419 +33 +2001.23529268221 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-876.169825263419 +30 +2001.23529268221 +11 +180.675224578544 +21 +-879.083714298798 +31 +1830.19391829555 +12 +180.675224578544 +22 +-837.4569269514 +32 +1817.56657040449 +13 +180.675224578544 +23 +-837.4569269514 +33 +1817.56657040449 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-876.169825263419 +30 +2001.23529268221 +11 +180.675224578544 +21 +-837.4569269514 +31 +1817.56657040449 +12 +180.675224578544 +22 +-867.967544283947 +32 +1985.88990429309 +13 +180.675224578544 +23 +-867.967544283947 +33 +1985.88990429309 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-867.967544283947 +30 +1985.88990429309 +11 +180.675224578544 +21 +-837.4569269514 +31 +1817.56657040449 +12 +180.675224578544 +22 +-856.929131071254 +32 +1972.43955887653 +13 +180.675224578544 +23 +-856.929131071254 +33 +1972.43955887653 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-856.929131071254 +30 +1972.43955887653 +11 +180.675224578544 +21 +-837.4569269514 +31 +1817.56657040449 +12 +180.675224578544 +22 +-843.478785654691 +32 +1961.40114566384 +13 +180.675224578544 +23 +-843.478785654691 +33 +1961.40114566384 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-843.478785654691 +30 +1961.40114566384 +11 +180.675224578544 +21 +-837.4569269514 +31 +1817.56657040449 +12 +180.675224578544 +22 +-828.133397265575 +32 +1953.19886468436 +13 +180.675224578544 +23 +-828.133397265575 +33 +1953.19886468436 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-828.133397265575 +30 +1953.19886468436 +11 +180.675224578544 +21 +-837.4569269514 +31 +1817.56657040449 +12 +180.675224578544 +22 +-794.16651328432 +32 +1813.3028368105 +13 +180.675224578544 +23 +-794.16651328432 +33 +1813.3028368105 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-828.133397265575 +30 +1953.19886468436 +11 +180.675224578544 +21 +-794.16651328432 +31 +1813.3028368105 +12 +180.675224578544 +22 +-811.482680573908 +32 +1948.14792499626 +13 +180.675224578544 +23 +-811.482680573908 +33 +1948.14792499626 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-811.482680573908 +30 +1948.14792499626 +11 +180.675224578544 +21 +-794.16651328432 +31 +1813.3028368105 +12 +180.675224578544 +22 +-794.16651328432 +32 +1946.44243137914 +13 +180.675224578544 +23 +-794.16651328432 +33 +1946.44243137914 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +1946.44243137914 +11 +180.675224578544 +21 +-794.16651328432 +31 +1813.3028368105 +12 +180.675224578544 +22 +-750.87609961724 +32 +1817.56657040449 +13 +180.675224578544 +23 +-750.87609961724 +33 +1817.56657040449 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +1946.44243137914 +11 +180.675224578544 +21 +-750.87609961724 +31 +1817.56657040449 +12 +180.675224578544 +22 +-776.850345994732 +32 +1948.14792499626 +13 +180.675224578544 +23 +-776.850345994732 +33 +1948.14792499626 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-776.850345994732 +30 +1948.14792499626 +11 +180.675224578544 +21 +-750.87609961724 +31 +1817.56657040449 +12 +180.675224578544 +22 +-760.199629303065 +32 +1953.19886468436 +13 +180.675224578544 +23 +-760.199629303065 +33 +1953.19886468436 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-760.199629303065 +30 +1953.19886468436 +11 +180.675224578544 +21 +-750.87609961724 +31 +1817.56657040449 +12 +180.675224578544 +22 +-744.854240913949 +32 +1961.40114566384 +13 +180.675224578544 +23 +-744.854240913949 +33 +1961.40114566384 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-744.854240913949 +30 +1961.40114566384 +11 +180.675224578544 +21 +-750.87609961724 +31 +1817.56657040449 +12 +180.675224578544 +22 +-709.249312269842 +32 +1830.19391829555 +13 +180.675224578544 +23 +-709.249312269842 +33 +1830.19391829555 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-744.854240913949 +30 +1961.40114566384 +11 +180.675224578544 +21 +-709.249312269842 +31 +1830.19391829555 +12 +180.675224578544 +22 +-731.403895497386 +32 +1972.43955887653 +13 +180.675224578544 +23 +-731.403895497386 +33 +1972.43955887653 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-731.403895497386 +30 +1972.43955887653 +11 +180.675224578544 +21 +-709.249312269842 +31 +1830.19391829555 +12 +180.675224578544 +22 +-720.365482284693 +32 +1985.88990429309 +13 +180.675224578544 +23 +-720.365482284693 +33 +1985.88990429309 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-720.365482284693 +30 +1985.88990429309 +11 +180.675224578544 +21 +-709.249312269842 +31 +1830.19391829555 +12 +180.675224578544 +22 +-712.163201305221 +32 +2001.23529268221 +13 +180.675224578544 +23 +-712.163201305221 +33 +2001.23529268221 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-712.163201305221 +30 +2001.23529268221 +11 +180.675224578544 +21 +-709.249312269842 +31 +1830.19391829555 +12 +180.675224578544 +22 +-707.112261617118 +32 +2017.88600937388 +13 +180.675224578544 +23 +-707.112261617118 +33 +2017.88600937388 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-707.112261617118 +30 +2017.88600937388 +11 +180.675224578544 +21 +-709.249312269842 +31 +1830.19391829555 +12 +180.675224578544 +22 +-670.885845335315 +32 +1850.69961858573 +13 +180.675224578544 +23 +-670.885845335315 +33 +1850.69961858573 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-707.112261617118 +30 +2017.88600937388 +11 +180.675224578544 +21 +-670.885845335315 +31 +1850.69961858573 +12 +180.675224578544 +22 +-705.406767999999 +32 +2035.20217666346 +13 +180.675224578544 +23 +-705.406767999999 +33 +2035.20217666346 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-882.926258568641 +30 +2035.20217666346 +11 +180.675224578544 +21 +-879.083714298798 +31 +2240.21043503138 +12 +180.675224578544 +22 +-917.447181233325 +32 +2219.70473474119 +13 +180.675224578544 +23 +-917.447181233325 +33 +2219.70473474119 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-879.083714298798 +30 +2240.21043503138 +11 +180.675224578544 +21 +-882.926258568641 +31 +2035.20217666346 +12 +180.675224578544 +22 +-881.220764951522 +32 +2052.51834395305 +13 +180.675224578544 +23 +-881.220764951522 +33 +2052.51834395305 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-879.083714298798 +30 +2240.21043503138 +11 +180.675224578544 +21 +-881.220764951522 +31 +2052.51834395305 +12 +180.675224578544 +22 +-876.169825263419 +32 +2069.16906064472 +13 +180.675224578544 +23 +-876.169825263419 +33 +2069.16906064472 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-879.083714298798 +30 +2240.21043503138 +11 +180.675224578544 +21 +-876.169825263419 +31 +2069.16906064472 +12 +180.675224578544 +22 +-837.4569269514 +32 +2252.83778292244 +13 +180.675224578544 +23 +-837.4569269514 +33 +2252.83778292244 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-837.4569269514 +30 +2252.83778292244 +11 +180.675224578544 +21 +-876.169825263419 +31 +2069.16906064472 +12 +180.675224578544 +22 +-867.967544283947 +32 +2084.51444903383 +13 +180.675224578544 +23 +-867.967544283947 +33 +2084.51444903383 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-837.4569269514 +30 +2252.83778292244 +11 +180.675224578544 +21 +-867.967544283947 +31 +2084.51444903383 +12 +180.675224578544 +22 +-856.929131071254 +32 +2097.9647944504 +13 +180.675224578544 +23 +-856.929131071254 +33 +2097.9647944504 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-837.4569269514 +30 +2252.83778292244 +11 +180.675224578544 +21 +-856.929131071254 +31 +2097.9647944504 +12 +180.675224578544 +22 +-843.478785654691 +32 +2109.00320766309 +13 +180.675224578544 +23 +-843.478785654691 +33 +2109.00320766309 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-837.4569269514 +30 +2252.83778292244 +11 +180.675224578544 +21 +-843.478785654691 +31 +2109.00320766309 +12 +180.675224578544 +22 +-828.133397265575 +32 +2117.20548864256 +13 +180.675224578544 +23 +-828.133397265575 +33 +2117.20548864256 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-837.4569269514 +30 +2252.83778292244 +11 +180.675224578544 +21 +-828.133397265575 +31 +2117.20548864256 +12 +180.675224578544 +22 +-794.16651328432 +32 +2257.10151651642 +13 +180.675224578544 +23 +-794.16651328432 +33 +2257.10151651642 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +2257.10151651642 +11 +180.675224578544 +21 +-828.133397265575 +31 +2117.20548864256 +12 +180.675224578544 +22 +-811.482680573908 +32 +2122.25642833066 +13 +180.675224578544 +23 +-811.482680573908 +33 +2122.25642833066 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +2257.10151651642 +11 +180.675224578544 +21 +-811.482680573908 +31 +2122.25642833066 +12 +180.675224578544 +22 +-794.16651328432 +32 +2123.96192194778 +13 +180.675224578544 +23 +-794.16651328432 +33 +2123.96192194778 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +2257.10151651642 +11 +180.675224578544 +21 +-794.16651328432 +31 +2123.96192194778 +12 +180.675224578544 +22 +-776.850345994732 +32 +2122.25642833066 +13 +180.675224578544 +23 +-776.850345994732 +33 +2122.25642833066 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +2257.10151651642 +11 +180.675224578544 +21 +-776.850345994732 +31 +2122.25642833066 +12 +180.675224578544 +22 +-750.87609961724 +32 +2252.83778292244 +13 +180.675224578544 +23 +-750.87609961724 +33 +2252.83778292244 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-750.87609961724 +30 +2252.83778292244 +11 +180.675224578544 +21 +-776.850345994732 +31 +2122.25642833066 +12 +180.675224578544 +22 +-760.199629303065 +32 +2117.20548864256 +13 +180.675224578544 +23 +-760.199629303065 +33 +2117.20548864256 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-750.87609961724 +30 +2252.83778292244 +11 +180.675224578544 +21 +-760.199629303065 +31 +2117.20548864256 +12 +180.675224578544 +22 +-744.854240913949 +32 +2109.00320766309 +13 +180.675224578544 +23 +-744.854240913949 +33 +2109.00320766309 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-750.87609961724 +30 +2252.83778292244 +11 +180.675224578544 +21 +-744.854240913949 +31 +2109.00320766309 +12 +180.675224578544 +22 +-709.249312269842 +32 +2240.21043503138 +13 +180.675224578544 +23 +-709.249312269842 +33 +2240.21043503138 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-709.249312269842 +30 +2240.21043503138 +11 +180.675224578544 +21 +-744.854240913949 +31 +2109.00320766309 +12 +180.675224578544 +22 +-731.403895497386 +32 +2097.9647944504 +13 +180.675224578544 +23 +-731.403895497386 +33 +2097.9647944504 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-709.249312269842 +30 +2240.21043503138 +11 +180.675224578544 +21 +-731.403895497386 +31 +2097.9647944504 +12 +180.675224578544 +22 +-720.365482284693 +32 +2084.51444903383 +13 +180.675224578544 +23 +-720.365482284693 +33 +2084.51444903383 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-709.249312269842 +30 +2240.21043503138 +11 +180.675224578544 +21 +-720.365482284693 +31 +2084.51444903383 +12 +180.675224578544 +22 +-712.163201305221 +32 +2069.16906064472 +13 +180.675224578544 +23 +-712.163201305221 +33 +2069.16906064472 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-709.249312269842 +30 +2240.21043503138 +11 +180.675224578544 +21 +-712.163201305221 +31 +2069.16906064472 +12 +180.675224578544 +22 +-707.112261617118 +32 +2052.51834395305 +13 +180.675224578544 +23 +-707.112261617118 +33 +2052.51834395305 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-709.249312269842 +30 +2240.21043503138 +11 +180.675224578544 +21 +-707.112261617118 +31 +2052.51834395305 +12 +180.675224578544 +22 +-670.885845335315 +32 +2219.70473474119 +13 +180.675224578544 +23 +-670.885845335315 +33 +2219.70473474119 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-670.885845335315 +30 +2219.70473474119 +11 +180.675224578544 +21 +-707.112261617118 +31 +2052.51834395305 +12 +180.675224578544 +22 +-705.406767999999 +32 +2035.20217666346 +13 +180.675224578544 +23 +-705.406767999999 +33 +2035.20217666346 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-670.885845335315 +30 +2219.70473474119 +11 +180.675224578544 +21 +-705.406767999999 +31 +2035.20217666346 +12 +180.675224578544 +22 +-670.885845335315 +32 +1850.69961858573 +13 +180.675224578544 +23 +-670.885845335315 +33 +1850.69961858573 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-670.885845335315 +30 +2219.70473474119 +11 +180.675224578544 +21 +-670.885845335315 +31 +1850.69961858573 +12 +180.675224578544 +22 +-637.259985333474 +32 +1878.29564871262 +13 +180.675224578544 +23 +-637.259985333474 +33 +1878.29564871262 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-670.885845335315 +30 +2219.70473474119 +11 +180.675224578544 +21 +-637.259985333474 +31 +1878.29564871262 +12 +180.675224578544 +22 +-637.259985333474 +32 +2192.10870461431 +13 +180.675224578544 +23 +-637.259985333474 +33 +2192.10870461431 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-637.259985333474 +30 +2192.10870461431 +11 +180.675224578544 +21 +-637.259985333474 +31 +1878.29564871262 +12 +180.675224578544 +22 +-609.663955206589 +32 +1911.92150871446 +13 +180.675224578544 +23 +-609.663955206589 +33 +1911.92150871446 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-637.259985333474 +30 +2192.10870461431 +11 +180.675224578544 +21 +-609.663955206589 +31 +1911.92150871446 +12 +180.675224578544 +22 +-609.663955206589 +32 +2158.48284461247 +13 +180.675224578544 +23 +-609.663955206589 +33 +2158.48284461247 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-609.663955206589 +30 +2158.48284461247 +11 +180.675224578544 +21 +-609.663955206589 +31 +1911.92150871446 +12 +180.675224578544 +22 +-589.158254916404 +32 +1950.28497564898 +13 +180.675224578544 +23 +-589.158254916404 +33 +1950.28497564898 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-609.663955206589 +30 +2158.48284461247 +11 +180.675224578544 +21 +-589.158254916404 +31 +1950.28497564898 +12 +180.675224578544 +22 +-589.158254916404 +32 +2120.11937767794 +13 +180.675224578544 +23 +-589.158254916404 +33 +2120.11937767794 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-589.158254916404 +30 +2120.11937767794 +11 +180.675224578544 +21 +-589.158254916404 +31 +1950.28497564898 +12 +180.675224578544 +22 +-576.530907025343 +32 +1991.91176299638 +13 +180.675224578544 +23 +-576.530907025343 +33 +1991.91176299638 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-589.158254916404 +30 +2120.11937767794 +11 +180.675224578544 +21 +-576.530907025343 +31 +1991.91176299638 +12 +180.675224578544 +22 +-576.530907025343 +32 +2078.49259033054 +13 +180.675224578544 +23 +-576.530907025343 +33 +2078.49259033054 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-576.530907025343 +30 +2078.49259033054 +11 +180.675224578544 +21 +-576.530907025343 +31 +1991.91176299638 +12 +180.675224578544 +22 +-572.26717343136 +32 +2035.20217666346 +13 +180.675224578544 +23 +-572.26717343136 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-768.954752250597 +20 +-152.954610178005 +30 +631.979456702016 +11 +-688.700045464263 +21 +-285.268899238265 +31 +587.016306884026 +12 +-724.33953815002 +22 +-300.031260464802 +32 +631.979456702016 +13 +-724.33953815002 +23 +-300.031260464802 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-688.700045464263 +20 +-285.268899238265 +30 +587.016306884026 +11 +-768.954752250597 +21 +-152.954610178005 +31 +631.979456702016 +12 +-731.120068617964 +22 +-145.428823687577 +32 +587.016306884026 +13 +-731.120068617964 +23 +-145.428823687577 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-798.780782641381 +20 +-158.887376492573 +30 +682.822310520627 +11 +-724.33953815002 +21 +-300.031260464802 +31 +631.979456702016 +12 +-752.435044439405 +22 +-311.668800211604 +32 +682.822310520627 +13 +-752.435044439405 +23 +-311.668800211604 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-724.33953815002 +20 +-300.031260464802 +30 +631.979456702016 +11 +-798.780782641381 +21 +-158.887376492573 +31 +682.822310520627 +12 +-768.954752250597 +22 +-152.954610178005 +32 +631.979456702016 +13 +-768.954752250597 +23 +-152.954610178005 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-819.73776511114 +20 +-163.055979488767 +30 +738.078199114136 +11 +-752.435044439405 +21 +-311.668800211604 +31 +682.822310520627 +12 +-772.176090266528 +22 +-319.845809128627 +32 +738.078199114136 +13 +-772.176090266528 +23 +-319.845809128627 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-752.435044439405 +20 +-311.668800211604 +30 +682.822310520627 +11 +-819.73776511114 +21 +-163.055979488767 +31 +738.078199114136 +12 +-798.780782641381 +22 +-158.887376492573 +32 +682.822310520627 +13 +-798.780782641381 +23 +-158.887376492573 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +990.771212819308 +20 +-410.390873558597 +30 +1922.19277204157 +11 +1059.21725479392 +21 +-210.691411720441 +31 +2011.5925230317 +12 +997.760836892423 +22 +-413.286070645571 +32 +2011.5925230317 +13 +997.760836892423 +23 +-413.286070645571 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1059.21725479392 +20 +-210.691411720441 +30 +2011.5925230317 +11 +990.771212819308 +21 +-410.390873558597 +31 +1922.19277204157 +12 +1051.79710945546 +22 +-209.215453044867 +32 +1922.19277204157 +13 +1051.79710945546 +23 +-209.215453044867 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-203.671280618918 +20 +-1023.92467246733 +30 +2258.00680432354 +11 +-410.390873558597 +21 +-990.771212819307 +31 +2148.21162800104 +12 +-209.215453044867 +22 +-1051.79710945546 +32 +2148.21162800104 +13 +-209.215453044867 +23 +-1051.79710945546 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-410.390873558597 +20 +-990.771212819307 +30 +2148.21162800104 +11 +-203.671280618918 +21 +-1023.92467246733 +31 +2258.00680432354 +12 +-399.515588143821 +22 +-964.515951276275 +32 +2258.00680432354 +13 +-399.515588143821 +23 +-964.515951276275 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-165.674046918965 +20 +-832.899678896021 +30 +855.37186879426 +11 +-324.326404167689 +21 +-782.993203577332 +31 +796.153149972084 +12 +-165.340167031437 +22 +-831.221151351825 +32 +796.153149972084 +13 +-165.340167031437 +23 +-831.221151351825 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-324.326404167689 +20 +-782.993203577332 +30 +796.153149972084 +11 +-165.674046918965 +21 +-832.899678896021 +31 +855.37186879426 +12 +-324.981333125909 +22 +-784.574341950658 +32 +855.37186879426 +13 +-324.981333125909 +23 +-784.574341950658 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1059.21725479392 +20 +-210.691411720441 +30 +2058.8118770109 +11 +-997.760836892423 +21 +-413.286070645571 +31 +2011.5925230317 +12 +-997.760836892423 +22 +-413.286070645571 +32 +2058.8118770109 +13 +-997.760836892423 +23 +-413.286070645571 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-997.760836892423 +20 +-413.286070645571 +30 +2011.5925230317 +11 +-1059.21725479392 +21 +-210.691411720441 +31 +2058.8118770109 +12 +-1059.21725479392 +22 +-210.691411720441 +32 +2011.5925230317 +13 +-1059.21725479392 +23 +-210.691411720441 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1059.21725479392 +20 +-210.691411720441 +30 +2011.5925230317 +11 +-990.771212819307 +21 +-410.390873558597 +31 +1922.19277204157 +12 +-997.760836892423 +22 +-413.286070645571 +32 +2011.5925230317 +13 +-997.760836892423 +23 +-413.286070645571 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-990.771212819307 +20 +-410.390873558597 +30 +1922.19277204157 +11 +-1059.21725479392 +21 +-210.691411720441 +31 +2011.5925230317 +12 +-1051.79710945546 +22 +-209.215453044867 +32 +1922.19277204157 +13 +-1051.79710945546 +23 +-209.215453044867 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +978.352295145615 +20 +-194.606371158736 +30 +1708.93950189862 +11 +1043.98454271904 +21 +1.80477854883065e-13 +31 +1812.39759571907 +12 +1023.92467246733 +22 +-203.671280618918 +32 +1812.39759571907 +13 +1023.92467246733 +23 +-203.671280618918 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1043.98454271904 +20 +1.80477854883065e-13 +30 +1812.39759571907 +11 +978.352295145615 +21 +-194.606371158736 +31 +1708.93950189862 +12 +997.519349743285 +22 +1.80477854883065e-13 +32 +1708.93950189862 +13 +997.519349743285 +23 +1.80477854883065e-13 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +1922.19277204157 +11 +-399.515588143821 +21 +-964.515951276276 +31 +1812.39759571907 +12 +-203.671280618918 +22 +-1023.92467246733 +32 +1812.39759571907 +13 +-203.671280618918 +23 +-1023.92467246733 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-399.515588143821 +20 +-964.515951276276 +30 +1812.39759571907 +11 +-209.215453044867 +21 +-1051.79710945546 +31 +1922.19277204157 +12 +-410.390873558597 +22 +-990.771212819307 +32 +1922.19277204157 +13 +-410.390873558597 +23 +-990.771212819307 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1023.92467246733 +20 +-203.671280618918 +30 +2258.00680432354 +11 +921.587710511789 +21 +-381.734128610352 +31 +2361.46489814399 +12 +964.515951276275 +22 +-399.51558814382 +32 +2258.00680432354 +13 +964.515951276275 +23 +-399.51558814382 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +921.587710511789 +20 +-381.734128610352 +30 +2361.46489814399 +11 +1023.92467246733 +21 +-203.671280618918 +31 +2258.00680432354 +12 +978.352295145615 +22 +-194.606371158736 +32 +2361.46489814399 +13 +978.352295145615 +23 +-194.606371158736 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-853.905696349335 +20 +-778.54324309139 +30 +2019.68727261649 +11 +-804.883917627287 +21 +-707.527532613081 +31 +1967.25758629213 +12 +-845.012275898089 +22 +-788.258546505553 +32 +1988.01128244689 +13 +-845.012275898089 +23 +-788.258546505553 +33 +1988.01128244689 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-804.883917627287 +20 +-707.527532613081 +30 +1967.25758629213 +11 +-853.905696349335 +21 +-778.54324309139 +31 +2019.68727261649 +12 +-818.480102290147 +22 +-696.846172894875 +32 +2011.59249120966 +13 +-818.480102290147 +23 +-696.846172894875 +33 +2011.59249120966 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-776.87389411925 +20 +-321.791703197793 +30 +914.026066884025 +11 +-641.452721848564 +21 +-127.592879465023 +31 +1054.1729200213 +12 +-824.724927080674 +22 +-164.047987682633 +32 +914.026066884025 +13 +-824.724927080674 +23 +-164.047987682633 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-641.452721848564 +20 +-127.592879465023 +30 +1054.1729200213 +11 +-776.87389411925 +21 +-321.791703197793 +31 +914.026066884025 +12 +-604.235251721862 +22 +-250.282436127116 +32 +1054.1729200213 +13 +-604.235251721862 +23 +-250.282436127116 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1072.40303302985 +30 +1922.19277204157 +11 +-203.671280618918 +21 +-1023.92467246733 +31 +1812.39759571907 +12 +1.80477854883065e-13 +22 +-1043.98454271904 +32 +1812.39759571907 +13 +1.80477854883065e-13 +23 +-1043.98454271904 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-203.671280618918 +20 +-1023.92467246733 +30 +1812.39759571907 +11 +1.80477854883065e-13 +21 +-1072.40303302985 +31 +1922.19277204157 +12 +-209.215453044867 +22 +-1051.79710945546 +32 +1922.19277204157 +13 +-209.215453044867 +23 +-1051.79710945546 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1019.67559748903 +30 +1941.79325554754 +11 +369.41031965462 +21 +-997.119327169824 +31 +1899.59344191956 +12 +653.750224578544 +22 +-997.119327169824 +32 +1899.59344191956 +13 +653.750224578544 +23 +-997.119327169824 +33 +1899.59344191956 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +369.41031965462 +20 +-997.119327169824 +30 +1899.59344191956 +11 +653.750224578544 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +349.642861592144 +22 +-1009.19892078507 +32 +1922.19277204157 +13 +349.642861592144 +23 +-1009.19892078507 +33 +1922.19277204157 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +349.642861592144 +20 +-1009.19892078507 +30 +1922.19277204157 +11 +653.750224578544 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +320.792432759964 +22 +-1019.67559748903 +32 +1941.79325554754 +13 +320.792432759964 +23 +-1019.67559748903 +33 +1941.79325554754 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1059.21725479392 +20 +-210.691411720441 +30 +2011.5925230317 +11 +997.760836892423 +21 +-413.286070645571 +31 +2058.8118770109 +12 +997.760836892423 +22 +-413.286070645571 +32 +2011.5925230317 +13 +997.760836892423 +23 +-413.286070645571 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +997.760836892423 +20 +-413.286070645571 +30 +2058.8118770109 +11 +1059.21725479392 +21 +-210.691411720441 +31 +2011.5925230317 +12 +1059.21725479392 +22 +-210.691411720441 +32 +2058.8118770109 +13 +1059.21725479392 +23 +-210.691411720441 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-847.505736434059 +20 +1.80477854883065e-13 +30 +796.153149972084 +11 +-819.73776511114 +21 +-163.055979488767 +31 +738.078199114136 +12 +-831.221151351825 +22 +-165.340167031437 +32 +796.153149972084 +13 +-831.221151351825 +23 +-165.340167031437 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-819.73776511114 +20 +-163.055979488767 +30 +738.078199114136 +11 +-847.505736434059 +21 +1.80477854883065e-13 +31 +796.153149972084 +12 +-835.797377356766 +22 +1.80477854883065e-13 +32 +738.078199114136 +13 +-835.797377356766 +23 +1.80477854883065e-13 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +182.278551827736 +20 +-916.376162171087 +30 +2455.6433200213 +11 +1.80477854883065e-13 +21 +-997.519349743284 +31 +2361.46489814399 +12 +194.606371158736 +22 +-978.352295145615 +32 +2361.46489814399 +13 +194.606371158736 +23 +-978.352295145615 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-997.519349743284 +30 +2361.46489814399 +11 +182.278551827736 +21 +-916.376162171087 +31 +2455.6433200213 +12 +1.80477854883065e-13 +22 +-934.329032542513 +32 +2455.6433200213 +13 +1.80477854883065e-13 +23 +-934.329032542513 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-934.329032542513 +30 +2455.6433200213 +11 +182.278551827736 +21 +-916.376162171087 +31 +2455.6433200213 +12 +141.00638791784 +22 +-920.44111551416 +32 +2455.6433200213 +13 +141.00638791784 +23 +-920.44111551416 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-934.329032542513 +30 +2455.6433200213 +11 +141.00638791784 +21 +-920.44111551416 +31 +2455.6433200213 +12 +47.148335412588 +22 +-929.685326821772 +32 +2455.6433200213 +13 +47.148335412588 +23 +-929.685326821772 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +35.9517814413365 +20 +-1076.35666734212 +30 +2059.65014337885 +11 +40.1106512432663 +21 +-1076.01799327905 +31 +2051.86944523768 +12 +36.3998441498995 +22 +-1076.38347587727 +32 +2058.8118770109 +13 +36.3998441498995 +23 +-1076.38347587727 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +40.1106512432663 +20 +-1076.01799327905 +30 +2051.86944523768 +11 +35.9517814413365 +21 +-1076.35666734212 +31 +2059.65014337885 +12 +35.9517814413358 +22 +-976.024878397508 +32 +2059.65014337886 +13 +35.9517814413358 +23 +-976.024878397508 +33 +2059.65014337886 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +40.1106512432663 +20 +-1076.01799327905 +30 +2051.86944523768 +11 +35.9517814413358 +21 +-976.024878397508 +31 +2059.65014337886 +12 +40.1106512432667 +22 +-976.081021219369 +32 +2051.86944523768 +13 +40.1106512432667 +23 +-976.081021219369 +33 +2051.86944523768 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-10.2481189704998 +20 +-977.41094203537 +30 +2078.78676870972 +11 +-1.4681606386561 +21 +-1078.06037755542 +31 +2079.65151912724 +12 +-10.2481189705 +22 +-1077.26880722866 +32 +2078.78676870972 +13 +-10.2481189705 +23 +-1077.26880722866 +33 +2078.78676870972 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1.4681606386561 +20 +-1078.06037755542 +30 +2079.65151912724 +11 +-10.2481189704998 +21 +-977.41094203537 +31 +2078.78676870972 +12 +-1.46816063865592 +22 +-978.223928142328 +32 +2079.65151912724 +13 +-1.46816063865592 +23 +-978.223928142328 +33 +2079.65151912724 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +884.794355702396 +20 +-604.173850577965 +30 +1922.19277204157 +11 +180.675224578544 +21 +-609.663955206589 +31 +1911.92150871446 +12 +876.866113364493 +22 +-609.663955206589 +32 +1911.92150871446 +13 +876.866113364493 +23 +-609.663955206589 +33 +1911.92150871446 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-609.663955206589 +30 +1911.92150871446 +11 +884.794355702396 +21 +-604.173850577965 +31 +1922.19277204157 +12 +180.675224578544 +22 +-589.158254916404 +32 +1950.28497564898 +13 +180.675224578544 +23 +-589.158254916404 +33 +1950.28497564898 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-589.158254916404 +30 +1950.28497564898 +11 +884.794355702396 +21 +-604.173850577965 +31 +1922.19277204157 +12 +892.68433542823 +22 +-596.472603338329 +32 +1936.60079223358 +13 +892.68433542823 +23 +-596.472603338329 +33 +1936.60079223358 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-589.158254916404 +30 +1950.28497564898 +11 +892.68433542823 +21 +-596.472603338329 +31 +1936.60079223358 +12 +897.90069342138 +22 +-589.158254916404 +32 +1950.28497564898 +13 +897.90069342138 +23 +-589.158254916404 +33 +1950.28497564898 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-758.060123058849 +20 +-874.453748088142 +30 +2003.99630767223 +11 +-702.965588161926 +21 +-809.153241506708 +31 +1972.08037046597 +12 +-769.870311262695 +22 +-863.130130350016 +32 +1987.61043910797 +13 +-769.870311262695 +23 +-863.130130350016 +33 +1987.61043910797 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-702.965588161926 +20 +-809.153241506708 +30 +1972.08037046597 +11 +-758.060123058849 +21 +-874.453748088142 +31 +2003.99630767223 +12 +-687.957452549297 +22 +-823.760435027841 +32 +1993.10258668608 +13 +-687.957452549297 +23 +-823.760435027841 +33 +1993.10258668608 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-643.970452120392 +20 +-861.831591212861 +30 +2011.20252653019 +11 +-741.432257601186 +21 +-891.447302299009 +31 +1988.14599297097 +12 +-654.791104458432 +22 +-848.015122202593 +32 +1965.89490198638 +13 +-654.791104458432 +23 +-848.015122202593 +33 +1965.89490198638 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-741.432257601186 +20 +-891.447302299009 +30 +1988.14599297097 +11 +-643.970452120392 +21 +-861.831591212861 +31 +2011.20252653019 +12 +-731.724734127308 +22 +-900.26267972249 +32 +2019.84617451401 +13 +-731.724734127308 +23 +-900.26267972249 +33 +2019.84617451401 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-1016.06585313728 +30 +2035.20217666346 +11 +653.750224578544 +21 +-1011.8021195433 +31 +1991.91176299638 +12 +180.675224578544 +22 +-1011.8021195433 +32 +1991.91176299638 +13 +180.675224578544 +23 +-1011.8021195433 +33 +1991.91176299638 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1011.8021195433 +30 +1991.91176299638 +11 +180.675224578544 +21 +-1016.06585313728 +31 +2035.20217666346 +12 +653.750224578544 +22 +-1016.06585313728 +32 +2035.20217666346 +13 +653.750224578544 +23 +-1016.06585313728 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +590.997993226901 +20 +-590.997993226901 +30 +738.078199114136 +11 +452.472966724379 +21 +-677.173649450057 +31 +682.822310520627 +12 +575.888850875701 +22 +-575.888850875701 +32 +682.822310520627 +13 +575.888850875701 +23 +-575.888850875701 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +452.472966724379 +20 +-677.173649450057 +30 +682.822310520627 +11 +590.997993226901 +21 +-590.997993226901 +31 +738.078199114136 +12 +464.344143695271 +22 +-694.940121314314 +32 +738.078199114136 +13 +464.344143695271 +23 +-694.940121314314 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1051.79710945546 +20 +-209.215453044867 +30 +2148.21162800104 +11 +964.515951276275 +21 +-399.51558814382 +31 +2258.00680432354 +12 +990.771212819308 +22 +-410.390873558597 +32 +2148.21162800104 +13 +990.771212819308 +23 +-410.390873558597 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +964.515951276275 +20 +-399.51558814382 +30 +2258.00680432354 +11 +1051.79710945546 +21 +-209.215453044867 +31 +2148.21162800104 +12 +1023.92467246733 +22 +-203.671280618918 +32 +2258.00680432354 +13 +1023.92467246733 +23 +-203.671280618918 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-747.450883605455 +20 +1.80477854883065e-13 +30 +1427.8983600213 +11 +-878.79625075709 +21 +-89.3648841254364 +31 +1427.8983600213 +12 +-887.597923605455 +22 +3.60955709766131e-13 +32 +1427.8983600213 +13 +-887.597923605455 +23 +3.60955709766131e-13 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-878.79625075709 +20 +-89.3648841254364 +30 +1427.8983600213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +-870.542978388701 +22 +-173.161764737035 +32 +1427.8983600213 +13 +-870.542978388701 +23 +-173.161764737035 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-870.542978388701 +20 +-173.161764737035 +30 +1427.8983600213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +-868.904108801094 +22 +-178.564393729439 +32 +1427.8983600213 +13 +-868.904108801094 +23 +-178.564393729439 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-868.904108801094 +20 +-178.564393729439 +30 +1427.8983600213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +-842.852042179446 +22 +-264.446547810842 +32 +1427.8983600213 +13 +-842.852042179446 +23 +-264.446547810842 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-842.852042179446 +20 +-264.446547810842 +30 +1427.8983600213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +-820.033554718597 +22 +-339.669019965462 +32 +1427.8983600213 +13 +-820.033554718597 +23 +-339.669019965462 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-820.033554718597 +20 +-339.669019965462 +30 +1427.8983600213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +-814.713927134819 +22 +-349.621343174435 +32 +1427.8983600213 +13 +-814.713927134819 +23 +-349.621343174435 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-814.713927134819 +20 +-349.621343174435 +30 +1427.8983600213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +-772.428086079136 +22 +-428.73258747146 +32 +1427.8983600213 +13 +-772.428086079136 +23 +-428.73258747146 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-772.428086079136 +20 +-428.73258747146 +30 +1427.8983600213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +-738.010701420772 +22 +-493.122985245198 +32 +1427.8983600213 +13 +-738.010701420772 +23 +-493.122985245198 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-738.010701420772 +20 +-493.122985245198 +30 +1427.8983600213 +11 +-747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +-733.088824464619 +22 +-145.820433573828 +32 +1427.8983600213 +13 +-733.088824464619 +23 +-145.820433573828 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-738.010701420772 +20 +-493.122985245198 +30 +1427.8983600213 +11 +-733.088824464619 +21 +-145.820433573828 +31 +1427.8983600213 +12 +-727.278190985583 +22 +-506.200587048885 +32 +1427.8983600213 +13 +-727.278190985583 +23 +-506.200587048885 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-727.278190985583 +20 +-506.200587048885 +30 +1427.8983600213 +11 +-733.088824464619 +21 +-145.820433573828 +31 +1427.8983600213 +12 +-690.554572920556 +22 +-286.037069662455 +32 +1427.8983600213 +13 +-690.554572920556 +23 +-286.037069662455 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-727.278190985583 +20 +-506.200587048885 +30 +1427.8983600213 +11 +-690.554572920556 +21 +-286.037069662455 +31 +1427.8983600213 +12 +-670.393897307106 +22 +-575.514299446691 +32 +1427.8983600213 +13 +-670.393897307106 +23 +-575.514299446691 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-670.393897307106 +20 +-575.514299446691 +30 +1427.8983600213 +11 +-690.554572920556 +21 +-286.037069662455 +31 +1427.8983600213 +12 +-621.482696406623 +22 +-415.26146157539 +32 +1427.8983600213 +13 +-621.482696406623 +23 +-415.26146157539 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-670.393897307106 +20 +-575.514299446691 +30 +1427.8983600213 +11 +-621.482696406623 +21 +-415.26146157539 +31 +1427.8983600213 +12 +-627.626510748516 +22 +-627.626510748516 +32 +1427.8983600213 +13 +-627.626510748516 +23 +-627.626510748516 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-627.626510748516 +20 +-627.626510748516 +30 +1427.8983600213 +11 +-621.482696406623 +21 +-415.26146157539 +31 +1427.8983600213 +12 +-610.198917737466 +22 +-641.92896670788 +32 +1427.8983600213 +13 +-610.198917737466 +23 +-641.92896670788 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-610.198917737466 +20 +-641.92896670788 +30 +1427.8983600213 +11 +-621.482696406623 +21 +-415.26146157539 +31 +1427.8983600213 +12 +-528.527588401294 +22 +-528.527588401294 +32 +1427.8983600213 +13 +-528.527588401294 +23 +-528.527588401294 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-610.198917737466 +20 +-641.92896670788 +30 +1427.8983600213 +11 +-528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +-540.907488126092 +22 +-698.794973376131 +32 +1427.8983600213 +13 +-540.907488126092 +23 +-698.794973376131 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-540.907488126092 +20 +-698.794973376131 +30 +1427.8983600213 +11 +-528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +-493.122985245198 +22 +-738.010701420772 +32 +1427.8983600213 +13 +-493.122985245198 +23 +-738.010701420772 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-493.122985245198 +20 +-738.010701420772 +30 +1427.8983600213 +11 +-528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +-415.26146157539 +22 +-621.482696406623 +32 +1427.8983600213 +13 +-415.26146157539 +23 +-621.482696406623 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-493.122985245198 +20 +-738.010701420772 +30 +1427.8983600213 +11 +-415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +-468.281766857471 +22 +-751.288609279597 +32 +1427.8983600213 +13 +-468.281766857471 +23 +-751.288609279597 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-468.281766857471 +20 +-751.288609279597 +30 +1427.8983600213 +11 +-415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +-389.246833055444 +22 +-793.533661525914 +32 +1427.8983600213 +13 +-389.246833055444 +23 +-793.533661525914 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-389.246833055444 +20 +-793.533661525914 +30 +1427.8983600213 +11 +-415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +-286.037069662455 +22 +-690.554572920556 +32 +1427.8983600213 +13 +-286.037069662455 +23 +-690.554572920556 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-389.246833055444 +20 +-793.533661525914 +30 +1427.8983600213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +-339.669019965462 +22 +-820.033554718597 +32 +1427.8983600213 +13 +-339.669019965462 +23 +-820.033554718597 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-339.669019965462 +20 +-820.033554718597 +30 +1427.8983600213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +-307.339192645458 +22 +-829.840700617718 +32 +1427.8983600213 +13 +-307.339192645458 +23 +-829.840700617718 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-307.339192645458 +20 +-829.840700617718 +30 +1427.8983600213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +-221.595075742173 +22 +-855.85089411917 +32 +1427.8983600213 +13 +-221.595075742173 +23 +-855.85089411917 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-221.595075742173 +20 +-855.85089411917 +30 +1427.8983600213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +-145.820433573828 +22 +-733.088824464619 +32 +1427.8983600213 +13 +-145.820433573828 +23 +-733.088824464619 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-221.595075742173 +20 +-855.85089411917 +30 +1427.8983600213 +11 +-145.820433573828 +21 +-733.088824464619 +31 +1427.8983600213 +12 +-173.161764737035 +22 +-870.542978388701 +32 +1427.8983600213 +13 +-173.161764737035 +23 +-870.542978388701 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-173.161764737035 +20 +-870.542978388701 +30 +1427.8983600213 +11 +-145.820433573828 +21 +-733.088824464619 +31 +1427.8983600213 +12 +-44.7901031548271 +22 +-883.186483489224 +32 +1427.8983600213 +13 +-44.7901031548271 +23 +-883.186483489224 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-44.7901031548271 +20 +-883.186483489224 +30 +1427.8983600213 +11 +-145.820433573828 +21 +-733.088824464619 +31 +1427.8983600213 +12 +0.0 +22 +-747.450883605455 +32 +1427.8983600213 +13 +0.0 +23 +-747.450883605455 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-44.7901031548271 +20 +-883.186483489224 +30 +1427.8983600213 +11 +0.0 +21 +-747.450883605455 +31 +1427.8983600213 +12 +1.80477854883065e-13 +22 +-887.597923605455 +32 +1427.8983600213 +13 +1.80477854883065e-13 +23 +-887.597923605455 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-887.597923605455 +30 +1427.8983600213 +11 +0.0 +21 +-747.450883605455 +31 +1427.8983600213 +12 +145.820433573828 +22 +-733.088824464618 +32 +1427.8983600213 +13 +145.820433573828 +23 +-733.088824464618 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-887.597923605455 +30 +1427.8983600213 +11 +145.820433573828 +21 +-733.088824464618 +31 +1427.8983600213 +12 +44.7901424632535 +22 +-883.186479617682 +32 +1427.8983600213 +13 +44.7901424632535 +23 +-883.186479617682 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +44.7901424632535 +20 +-883.186479617682 +30 +1427.8983600213 +11 +145.820433573828 +21 +-733.088824464618 +31 +1427.8983600213 +12 +133.953889402395 +22 +-874.404617053063 +32 +1427.8983600213 +13 +133.953889402395 +23 +-874.404617053063 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +133.953889402395 +20 +-874.404617053063 +30 +1427.8983600213 +11 +145.820433573828 +21 +-733.088824464618 +31 +1427.8983600213 +12 +173.161764737035 +22 +-870.542978388701 +32 +1427.8983600213 +13 +173.161764737035 +23 +-870.542978388701 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +173.161764737035 +20 +-870.542978388701 +30 +1427.8983600213 +11 +145.820433573828 +21 +-733.088824464618 +31 +1427.8983600213 +12 +286.037069662455 +22 +-690.554572920556 +32 +1427.8983600213 +13 +286.037069662455 +23 +-690.554572920556 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +173.161764737035 +20 +-870.542978388701 +30 +1427.8983600213 +11 +286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +221.595154594654 +22 +-855.850870199531 +32 +1427.8983600213 +13 +221.595154594654 +23 +-855.850870199531 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +221.595154594654 +20 +-855.850870199531 +30 +1427.8983600213 +11 +286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +307.339228961076 +22 +-829.840689601495 +32 +1427.8983600213 +13 +307.339228961076 +23 +-829.840689601495 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +307.339228961076 +20 +-829.840689601495 +30 +1427.8983600213 +11 +286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +415.26146157539 +22 +-621.482696406623 +32 +1427.8983600213 +13 +415.26146157539 +23 +-621.482696406623 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +307.339228961076 +20 +-829.840689601495 +30 +1427.8983600213 +11 +415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +339.669019965462 +22 +-820.033554718597 +32 +1427.8983600213 +13 +339.669019965462 +23 +-820.033554718597 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +339.669019965462 +20 +-820.033554718597 +30 +1427.8983600213 +11 +415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +389.246864354028 +22 +-793.533644796473 +32 +1427.8983600213 +13 +389.246864354028 +23 +-793.533644796473 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +389.246864354028 +20 +-793.533644796473 +30 +1427.8983600213 +11 +415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +468.281762027731 +22 +-751.288611861147 +32 +1427.8983600213 +13 +468.281762027731 +23 +-751.288611861147 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +468.281762027731 +20 +-751.288611861147 +30 +1427.8983600213 +11 +415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +528.527588401294 +22 +-528.527588401294 +32 +1427.8983600213 +13 +528.527588401294 +23 +-528.527588401294 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +468.281762027731 +20 +-751.288611861147 +30 +1427.8983600213 +11 +528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +493.122985245198 +22 +-738.010701420772 +32 +1427.8983600213 +13 +493.122985245198 +23 +-738.010701420772 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +493.122985245198 +20 +-738.010701420772 +30 +1427.8983600213 +11 +528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +540.907511486368 +22 +-698.794954204847 +32 +1427.8983600213 +13 +540.907511486368 +23 +-698.794954204847 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +540.907511486368 +20 +-698.794954204847 +30 +1427.8983600213 +11 +528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +621.482696406623 +22 +-415.26146157539 +32 +1427.8983600213 +13 +621.482696406623 +23 +-415.26146157539 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +540.907511486368 +20 +-698.794954204847 +30 +1427.8983600213 +11 +621.482696406623 +21 +-415.26146157539 +31 +1427.8983600213 +12 +627.626510748516 +22 +-627.626510748516 +32 +1427.8983600213 +13 +627.626510748516 +23 +-627.626510748516 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +627.626510748516 +20 +-627.626510748516 +30 +1427.8983600213 +11 +621.482696406623 +21 +-415.26146157539 +31 +1427.8983600213 +12 +690.554572920556 +22 +-286.037069662455 +32 +1427.8983600213 +13 +690.554572920556 +23 +-286.037069662455 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +627.626510748516 +20 +-627.626510748516 +30 +1427.8983600213 +11 +690.554572920556 +21 +-286.037069662455 +31 +1427.8983600213 +12 +738.010701420772 +22 +-493.122985245198 +32 +1427.8983600213 +13 +738.010701420772 +23 +-493.122985245198 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +738.010701420772 +20 +-493.122985245198 +30 +1427.8983600213 +11 +690.554572920556 +21 +-286.037069662455 +31 +1427.8983600213 +12 +733.088824464618 +22 +-145.820433573828 +32 +1427.8983600213 +13 +733.088824464618 +23 +-145.820433573828 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +738.010701420772 +20 +-493.122985245198 +30 +1427.8983600213 +11 +733.088824464618 +21 +-145.820433573828 +31 +1427.8983600213 +12 +747.450883605455 +22 +1.80477854883065e-13 +32 +1427.8983600213 +13 +747.450883605455 +23 +1.80477854883065e-13 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +738.010701420772 +20 +-493.122985245198 +30 +1427.8983600213 +11 +747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +820.033554718597 +22 +-339.669019965462 +32 +1427.8983600213 +13 +820.033554718597 +23 +-339.669019965462 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +820.033554718597 +20 +-339.669019965462 +30 +1427.8983600213 +11 +747.450883605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +887.597923605455 +22 +1.80477854883065e-13 +32 +1427.8983600213 +13 +887.597923605455 +23 +1.80477854883065e-13 +33 +1427.8983600213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +820.033554718597 +20 +-339.669019965462 +30 +1427.8983600213 +11 +887.597923605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +870.542978388702 +22 +-173.161764737035 +32 +1427.8983600213 +13 +870.542978388702 +23 +-173.161764737035 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +435.577877671407 +20 +-651.888361812631 +30 +631.979456702016 +11 +285.268899238265 +21 +-688.700045464263 +31 +587.016306884026 +12 +414.146250971868 +22 +-619.813665790805 +32 +587.016306884026 +13 +414.146250971868 +23 +-619.813665790805 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +285.268899238265 +20 +-688.700045464263 +30 +587.016306884026 +11 +435.577877671407 +21 +-651.888361812631 +31 +631.979456702016 +12 +300.031260464802 +22 +-724.33953815002 +32 +631.979456702016 +13 +300.031260464802 +23 +-724.33953815002 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-829.407026995335 +20 +-554.192057578438 +30 +1708.93950189862 +11 +-660.670394770277 +21 +-660.670394770277 +31 +1614.7610800213 +12 +-705.352696568271 +22 +-705.352696568271 +32 +1708.93950189862 +13 +-705.352696568271 +23 +-705.352696568271 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-660.670394770277 +20 +-660.670394770277 +30 +1614.7610800213 +11 +-829.407026995335 +21 +-554.192057578438 +31 +1708.93950189862 +12 +-705.689426216297 +22 +-605.814546234746 +32 +1614.7610800213 +13 +-705.689426216297 +23 +-605.814546234746 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-705.689426216297 +20 +-605.814546234746 +30 +1614.7610800213 +11 +-829.407026995335 +21 +-554.192057578438 +31 +1708.93950189862 +12 +-765.568613986399 +22 +-532.851544827532 +32 +1614.7610800213 +13 +-765.568613986399 +23 +-532.851544827532 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-765.568613986399 +20 +-532.851544827532 +30 +1614.7610800213 +11 +-829.407026995335 +21 +-554.192057578438 +31 +1708.93950189862 +12 +-776.866198451135 +22 +-519.085398326623 +32 +1614.7610800213 +13 +-776.866198451135 +23 +-519.085398326623 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +311.668800211604 +20 +-752.435044439405 +30 +682.822310520627 +11 +152.954610178005 +21 +-768.954752250597 +31 +631.979456702016 +12 +300.031260464802 +22 +-724.33953815002 +32 +631.979456702016 +13 +300.031260464802 +23 +-724.33953815002 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +152.954610178005 +20 +-768.954752250597 +30 +631.979456702016 +11 +311.668800211604 +21 +-752.435044439405 +31 +682.822310520627 +12 +158.887376492573 +22 +-798.780782641381 +32 +682.822310520627 +13 +158.887376492573 +23 +-798.780782641381 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +319.845809128627 +20 +-772.176090266528 +30 +738.078199114136 +11 +158.887376492573 +21 +-798.780782641381 +31 +682.822310520627 +12 +311.668800211604 +22 +-752.435044439405 +32 +682.822310520627 +13 +311.668800211604 +23 +-752.435044439405 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +158.887376492573 +20 +-798.780782641381 +30 +682.822310520627 +11 +319.845809128627 +21 +-772.176090266528 +31 +738.078199114136 +12 +163.055979488767 +22 +-819.73776511114 +32 +738.078199114136 +13 +163.055979488767 +23 +-819.73776511114 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +660.325364744673 +20 +-441.215302798659 +30 +1054.1729200213 +11 +495.494614285553 +21 +-495.494614285553 +31 +1241.03564002131 +12 +561.560562517035 +22 +-561.560562517035 +32 +1054.1729200213 +13 +561.560562517035 +23 +-561.560562517035 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +495.494614285553 +20 +-495.494614285553 +30 +1241.03564002131 +11 +660.325364744673 +21 +-441.215302798659 +31 +1054.1729200213 +12 +582.640028068573 +22 +-389.307620352121 +32 +1241.03564002131 +13 +582.640028068573 +23 +-389.307620352121 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +575.888850875701 +20 +-575.888850875701 +30 +682.822310520627 +11 +435.577877671407 +21 +-651.888361812631 +31 +631.979456702016 +12 +554.385481313987 +22 +-554.385481313987 +32 +631.979456702016 +13 +554.385481313987 +23 +-554.385481313987 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +435.577877671407 +20 +-651.888361812631 +30 +631.979456702016 +11 +575.888850875701 +21 +-575.888850875701 +31 +682.822310520627 +12 +452.472966724379 +22 +-677.173649450057 +32 +682.822310520627 +13 +452.472966724379 +23 +-677.173649450057 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +43.536421039762 +20 +-1075.68058440422 +30 +2034.64693744883 +11 +42.6716706222411 +21 +-976.267680774437 +31 +2025.86697911698 +12 +42.6716706222413 +22 +-1075.76575488639 +32 +2025.86697911698 +13 +42.6716706222413 +23 +-1075.76575488639 +33 +2025.86697911698 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +42.6716706222411 +20 +-976.267680774437 +30 +2025.86697911698 +11 +43.536421039762 +21 +-1075.68058440422 +31 +2034.64693744883 +12 +43.5364210397618 +22 +-976.708082157409 +32 +2034.64693744883 +13 +43.5364210397618 +23 +-976.708082157409 +33 +2034.64693744883 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-837.4569269514 +30 +2252.83778292244 +11 +180.675224578544 +21 +-879.083714298798 +31 +2240.21043503138 +12 +180.675224578544 +22 +-837.4569269514 +32 +2252.83778292244 +13 +180.675224578544 +23 +-837.4569269514 +33 +2252.83778292244 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-879.083714298798 +30 +2240.21043503138 +11 +653.750224578544 +21 +-837.4569269514 +31 +2252.83778292244 +12 +653.750224578544 +22 +-879.083714298799 +32 +2240.21043503138 +13 +653.750224578544 +23 +-879.083714298799 +33 +2240.21043503138 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-804.422958470166 +20 +-708.167767562713 +30 +2102.55187642937 +11 +-853.465106968372 +21 +-778.056206654812 +31 +2053.98620958956 +12 +-843.757583494495 +22 +-786.871584078293 +32 +2085.68639113261 +13 +-843.757583494495 +23 +-786.871584078293 +33 +2085.68639113261 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-853.465106968372 +20 +-778.056206654812 +30 +2053.98620958956 +11 +-804.422958470166 +21 +-708.167767562713 +31 +2102.55187642937 +12 +-818.273878310588 +22 +-697.096462294947 +32 +2058.80160712022 +13 +-818.273878310588 +23 +-697.096462294947 +33 +2058.80160712022 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +911.54074094115 +20 +-574.592524622259 +30 +2058.8118770109 +11 +907.767925107023 +21 +-572.267173431359 +31 +2035.20224673698 +12 +912.783669278017 +22 +-572.267169258698 +32 +2035.20224467364 +13 +912.783669278017 +23 +-572.267169258698 +33 +2035.20224467364 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +907.767925107023 +20 +-572.267173431359 +30 +2035.20224673698 +11 +180.675224578544 +21 +-576.530907025343 +31 +2078.49259033054 +12 +180.675224578544 +22 +-572.26717343136 +32 +2035.20217666346 +13 +180.675224578544 +23 +-572.26717343136 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-576.530907025343 +30 +2078.49259033054 +11 +907.767925107023 +21 +-572.267173431359 +31 +2035.20224673698 +12 +911.54074094115 +22 +-574.592524622259 +32 +2058.8118770109 +13 +911.54074094115 +23 +-574.592524622259 +33 +2058.8118770109 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-576.530907025343 +30 +2078.49259033054 +11 +911.54074094115 +21 +-574.592524622259 +31 +2058.8118770109 +12 +908.625264240696 +22 +-576.530906699202 +32 +2078.49259036266 +13 +908.625264240696 +23 +-576.530906699202 +33 +2078.49259036266 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +527.108194536515 +20 +-527.108194536515 +30 +587.016306884026 +11 +435.577877671407 +21 +-651.888361812631 +31 +631.979456702016 +12 +414.146250971868 +22 +-619.813665790805 +32 +587.016306884026 +13 +414.146250971868 +23 +-619.813665790805 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +435.577877671407 +20 +-651.888361812631 +30 +631.979456702016 +11 +527.108194536515 +21 +-527.108194536515 +31 +587.016306884026 +12 +554.385481313987 +22 +-554.385481313987 +32 +631.979456702016 +13 +554.385481313987 +23 +-554.385481313987 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +369.410361108008 +20 +-997.119327169824 +30 +2170.81091140737 +11 +209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +349.642943907379 +22 +-1009.19889581502 +32 +2148.21162800104 +13 +349.642943907379 +23 +-1009.19889581502 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +369.410361108008 +21 +-997.119327169824 +31 +2170.81091140737 +12 +203.671280618918 +22 +-1023.92467246733 +32 +2258.00680432354 +13 +203.671280618918 +23 +-1023.92467246733 +33 +2258.00680432354 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +203.671280618918 +20 +-1023.92467246733 +30 +2258.00680432354 +11 +369.410361108008 +21 +-997.119327169824 +31 +2170.81091140737 +12 +406.150729088795 +22 +-980.53459853389 +32 +2191.01946172118 +13 +406.150729088795 +23 +-980.53459853389 +33 +2191.01946172118 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +203.671280618918 +20 +-1023.92467246733 +30 +2258.00680432354 +11 +406.150729088795 +21 +-980.53459853389 +31 +2191.01946172118 +12 +399.51558814382 +22 +-964.515951276275 +32 +2258.00680432354 +13 +399.51558814382 +23 +-964.515951276275 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-647.394912321209 +20 +-268.159752894786 +30 +1241.03564002131 +11 +-778.906875772646 +21 +-154.93421062823 +31 +1054.1729200213 +12 +-733.714233519903 +22 +-303.914386430124 +32 +1054.1729200213 +13 +-733.714233519903 +23 +-303.914386430124 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-778.906875772646 +20 +-154.93421062823 +30 +1054.1729200213 +11 +-647.394912321209 +21 +-268.159752894786 +31 +1241.03564002131 +12 +-687.270773156591 +22 +-136.706656519425 +32 +1241.03564002131 +13 +-687.270773156591 +23 +-136.706656519425 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-831.221151351825 +20 +-165.340167031437 +30 +796.153149972084 +11 +-772.176090266528 +21 +-319.845809128627 +31 +738.078199114136 +12 +-782.993203577332 +22 +-324.326404167689 +32 +796.153149972084 +13 +-782.993203577332 +23 +-324.326404167689 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-772.176090266528 +20 +-319.845809128627 +30 +738.078199114136 +11 +-831.221151351825 +21 +-165.340167031437 +31 +796.153149972084 +12 +-819.73776511114 +22 +-163.055979488767 +32 +738.078199114136 +13 +-819.73776511114 +23 +-163.055979488767 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-752.435044439405 +20 +-311.668800211604 +30 +682.822310520627 +11 +-651.888361812631 +21 +-435.577877671407 +31 +631.979456702016 +12 +-677.173649450057 +22 +-452.47296672438 +32 +682.822310520627 +13 +-677.173649450057 +23 +-452.47296672438 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-651.888361812631 +20 +-435.577877671407 +30 +631.979456702016 +11 +-752.435044439405 +21 +-311.668800211604 +31 +682.822310520627 +12 +-724.33953815002 +22 +-300.031260464802 +32 +631.979456702016 +13 +-724.33953815002 +23 +-300.031260464802 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-772.176090266528 +20 +-319.845809128627 +30 +738.078199114136 +11 +-677.173649450057 +21 +-452.47296672438 +31 +682.822310520627 +12 +-694.940121314314 +22 +-464.344143695271 +32 +738.078199114136 +13 +-694.940121314314 +23 +-464.344143695271 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-677.173649450057 +20 +-452.47296672438 +30 +682.822310520627 +11 +-772.176090266528 +21 +-319.845809128627 +31 +738.078199114136 +12 +-752.435044439405 +22 +-311.668800211604 +32 +682.822310520627 +13 +-752.435044439405 +23 +-311.668800211604 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-389.307620352121 +20 +-582.640028068573 +30 +1241.03564002131 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1054.1729200213 +12 +-441.215302798659 +22 +-660.325364744672 +32 +1054.1729200213 +13 +-441.215302798659 +23 +-660.325364744672 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-561.560562517035 +20 +-561.560562517035 +30 +1054.1729200213 +11 +-389.307620352121 +21 +-582.640028068573 +31 +1241.03564002131 +12 +-495.494614285553 +22 +-495.494614285553 +32 +1241.03564002131 +13 +-495.494614285553 +23 +-495.494614285553 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-415.26146157539 +20 +-621.482696406623 +30 +1427.8983600213 +11 +-594.593536632775 +21 +-594.593536632776 +31 +1241.03564002131 +12 +-467.169144021928 +22 +-699.168033082722 +32 +1241.03564002131 +13 +-467.169144021928 +23 +-699.168033082722 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +1241.03564002131 +11 +-415.26146157539 +21 +-621.482696406623 +31 +1427.8983600213 +12 +-528.527588401294 +22 +-528.527588401294 +32 +1427.8983600213 +13 +-528.527588401294 +23 +-528.527588401294 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-997.519349743285 +20 +3.60955709766131e-13 +30 +1708.93950189862 +11 +-916.376162171087 +21 +-182.278551827736 +31 +1614.7610800213 +12 +-978.352295145615 +22 +-194.606371158736 +32 +1708.93950189862 +13 +-978.352295145615 +23 +-194.606371158736 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-916.376162171087 +20 +-182.278551827736 +30 +1614.7610800213 +11 +-997.519349743285 +21 +3.60955709766131e-13 +31 +1708.93950189862 +12 +-925.063957882084 +22 +-94.0698816812515 +32 +1614.7610800213 +13 +-925.063957882084 +23 +-94.0698816812515 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-925.063957882084 +20 +-94.0698816812515 +30 +1614.7610800213 +11 +-997.519349743285 +21 +3.60955709766131e-13 +31 +1708.93950189862 +12 +-934.329032542513 +22 +3.60955709766131e-13 +32 +1614.7610800213 +13 +-934.329032542513 +23 +3.60955709766131e-13 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-978.352295145615 +20 +-194.606371158736 +30 +2361.46489814399 +11 +-1043.98454271904 +21 +3.60955709766131e-13 +31 +2258.00680432354 +12 +-1023.92467246733 +22 +-203.671280618918 +32 +2258.00680432354 +13 +-1023.92467246733 +23 +-203.671280618918 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1043.98454271904 +20 +3.60955709766131e-13 +30 +2258.00680432354 +11 +-978.352295145615 +21 +-194.606371158736 +31 +2361.46489814399 +12 +-997.519349743285 +22 +3.60955709766131e-13 +32 +2361.46489814399 +13 +-997.519349743285 +23 +3.60955709766131e-13 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +794.166563605455 +20 +1.80477854883065e-13 +30 +1054.1729200213 +11 +687.270773156591 +21 +-136.706656519426 +31 +1241.03564002131 +12 +778.906875772646 +22 +-154.93421062823 +32 +1054.1729200213 +13 +778.906875772646 +23 +-154.93421062823 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +687.270773156591 +20 +-136.706656519426 +30 +1241.03564002131 +11 +794.166563605455 +21 +1.80477854883065e-13 +31 +1054.1729200213 +12 +700.735203605455 +22 +0.0 +32 +1241.03564002131 +13 +700.735203605455 +23 +0.0 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-832.543811724793 +20 +-84.6615196498334 +30 +2549.0746800213 +11 +-824.724927080674 +21 +-164.047987682633 +31 +2455.6433200213 +12 +-824.724927080674 +22 +-164.047987682633 +32 +2549.0746800213 +13 +-824.724927080674 +23 +-164.047987682633 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-824.724927080674 +20 +-164.047987682633 +30 +2455.6433200213 +11 +-832.543811724793 +21 +-84.6615196498334 +31 +2549.0746800213 +12 +-840.882243605455 +22 +1.80477854883065e-13 +32 +2455.6433200213 +13 +-840.882243605455 +23 +1.80477854883065e-13 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +-832.543811724793 +21 +-84.6615196498334 +31 +2549.0746800213 +12 +-840.882243605455 +22 +1.80477854883065e-13 +32 +2549.0746800213 +13 +-840.882243605455 +23 +1.80477854883065e-13 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-621.482696406623 +20 +-415.26146157539 +30 +1427.8983600213 +11 +-776.873894119249 +21 +-321.791703197793 +31 +1241.03564002131 +12 +-699.168033082722 +22 +-467.169144021928 +32 +1241.03564002131 +13 +-699.168033082722 +23 +-467.169144021928 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-776.873894119249 +20 +-321.791703197793 +30 +1241.03564002131 +11 +-621.482696406623 +21 +-415.26146157539 +31 +1427.8983600213 +12 +-690.554572920556 +22 +-286.037069662455 +32 +1427.8983600213 +13 +-690.554572920556 +23 +-286.037069662455 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +464.344143695271 +20 +-694.940121314314 +30 +738.078199114136 +11 +311.668800211604 +21 +-752.435044439405 +31 +682.822310520627 +12 +452.472966724379 +22 +-677.173649450057 +32 +682.822310520627 +13 +452.472966724379 +23 +-677.173649450057 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +311.668800211604 +20 +-752.435044439405 +30 +682.822310520627 +11 +464.344143695271 +21 +-694.940121314314 +31 +738.078199114136 +12 +319.845809128627 +22 +-772.176090266528 +32 +738.078199114136 +13 +319.845809128627 +23 +-772.176090266528 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +470.84895947612 +20 +-704.67526609701 +30 +796.153149972084 +11 +319.845809128627 +21 +-772.176090266528 +31 +738.078199114136 +12 +464.344143695271 +22 +-694.940121314314 +32 +738.078199114136 +13 +464.344143695271 +23 +-694.940121314314 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +319.845809128627 +20 +-772.176090266528 +30 +738.078199114136 +11 +470.84895947612 +21 +-704.67526609701 +31 +796.153149972084 +12 +324.326404167689 +22 +-782.993203577332 +32 +796.153149972084 +13 +324.326404167689 +23 +-782.993203577332 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +964.515951276275 +20 +-399.51558814382 +30 +2258.00680432354 +11 +829.407026995336 +21 +-554.192057578438 +31 +2361.46489814399 +12 +868.04142298445 +22 +-580.006735667279 +32 +2258.00680432354 +13 +868.04142298445 +23 +-580.006735667279 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +829.407026995336 +20 +-554.192057578438 +30 +2361.46489814399 +11 +964.515951276275 +21 +-399.51558814382 +31 +2258.00680432354 +12 +921.587710511789 +22 +-381.734128610352 +32 +2361.46489814399 +13 +921.587710511789 +23 +-381.734128610352 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-413.286070645571 +20 +-997.760836892423 +30 +2058.8118770109 +11 +-599.99837764929 +21 +-897.961029579872 +31 +2011.5925230317 +12 +-413.286070645571 +22 +-997.760836892423 +32 +2011.5925230317 +13 +-413.286070645571 +23 +-997.760836892423 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-599.99837764929 +20 +-897.961029579872 +30 +2011.5925230317 +11 +-413.286070645571 +21 +-997.760836892423 +31 +2058.8118770109 +12 +-599.99837764929 +22 +-897.961029579872 +32 +2058.8118770109 +13 +-599.99837764929 +23 +-897.961029579872 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-784.574341950659 +20 +-324.981333125909 +30 +855.37186879426 +11 +-704.67526609701 +21 +-470.84895947612 +31 +796.153149972084 +12 +-706.098253038492 +22 +-471.799768952456 +32 +855.37186879426 +13 +-706.098253038492 +23 +-471.799768952456 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-704.67526609701 +20 +-470.84895947612 +30 +796.153149972084 +11 +-784.574341950659 +21 +-324.981333125909 +31 +855.37186879426 +12 +-782.993203577332 +22 +-324.326404167689 +32 +796.153149972084 +13 +-782.993203577332 +23 +-324.326404167689 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-26.4713665686843 +20 +-1076.14565304285 +30 +1997.22699536883 +11 +-33.2912055279291 +21 +-975.812207442705 +31 +2002.82389255955 +12 +-33.2912055279292 +22 +-1075.947598755 +32 +2002.82389255955 +13 +-33.2912055279292 +23 +-1075.947598755 +33 +2002.82389255955 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-33.2912055279291 +20 +-975.812207442705 +30 +2002.82389255955 +11 +-26.4713665686843 +21 +-1076.14565304285 +31 +1997.22699536883 +12 +-26.4713665686843 +22 +-976.148870417647 +32 +1997.22699536883 +13 +-26.4713665686843 +23 +-976.148870417647 +33 +1997.22699536883 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-38.8881027186484 +20 +-975.735675994198 +30 +2059.65014337885 +11 +-33.2912055279292 +21 +-1076.04157769881 +31 +2066.4699823381 +12 +-38.8881027186488 +22 +-1076.06746493881 +32 +2059.65014337885 +13 +-38.8881027186488 +23 +-1076.06746493881 +33 +2059.65014337885 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-33.2912055279292 +20 +-1076.04157769881 +30 +2066.4699823381 +11 +-38.8881027186484 +21 +-975.735675994198 +31 +2059.65014337885 +12 +-33.2912055279292 +22 +-975.878683928089 +32 +2066.4699823381 +13 +-33.2912055279292 +23 +-975.878683928089 +33 +2066.4699823381 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +23.5350452913723 +20 +-1076.43485544616 +30 +1997.22699536883 +11 +15.754347150196 +21 +-976.955453067628 +31 +1993.0681255669 +12 +15.754347150196 +22 +-1076.84924014666 +32 +1993.0681255669 +13 +15.754347150196 +23 +-1076.84924014666 +33 +1993.0681255669 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +15.754347150196 +20 +-976.955453067628 +30 +1993.0681255669 +11 +23.5350452913723 +21 +-1076.43485544616 +31 +1997.22699536883 +12 +23.5350452913723 +22 +-976.438072820957 +32 +1997.22699536883 +13 +23.5350452913723 +23 +-976.438072820957 +33 +1997.22699536883 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +7.31179769318775 +20 +-1077.46403068815 +30 +1990.50710618793 +11 +15.754347150196 +21 +-976.955453067628 +31 +1993.0681255669 +12 +7.31179769318757 +22 +-977.633667953296 +32 +1990.50710618793 +13 +7.31179769318757 +23 +-977.633667953296 +33 +1990.50710618793 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +15.754347150196 +20 +-976.955453067628 +30 +1993.0681255669 +11 +7.31179769318775 +21 +-1077.46403068815 +31 +1990.50710618793 +12 +15.754347150196 +22 +-1076.84924014666 +32 +1993.0681255669 +13 +15.754347150196 +23 +-1076.84924014666 +33 +1993.0681255669 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +40.1106512432667 +20 +-976.081021219369 +30 +2051.86944523768 +11 +42.6716706222413 +21 +-1075.76575488639 +31 +2043.42689578067 +12 +40.1106512432663 +22 +-1076.01799327905 +32 +2051.86944523768 +13 +40.1106512432663 +23 +-1076.01799327905 +33 +2051.86944523768 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +42.6716706222413 +20 +-1075.76575488639 +30 +2043.42689578067 +11 +40.1106512432667 +21 +-976.081021219369 +31 +2051.86944523768 +12 +42.6716706222411 +22 +-976.334157259822 +32 +2043.42689578067 +13 +42.6716706222411 +23 +-976.334157259822 +33 +2043.42689578067 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-410.390873558597 +20 +-990.771212819307 +30 +2148.21162800104 +11 +-599.99837764929 +21 +-897.961029579872 +31 +2058.8118770109 +12 +-413.286070645571 +22 +-997.760836892423 +32 +2058.8118770109 +13 +-413.286070645571 +23 +-997.760836892423 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-599.99837764929 +20 +-897.961029579872 +30 +2058.8118770109 +11 +-410.390873558597 +21 +-990.771212819307 +31 +2148.21162800104 +12 +-595.795202951324 +22 +-891.670534105406 +32 +2148.21162800104 +13 +-595.795202951324 +23 +-891.670534105406 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-582.640028068573 +20 +-389.307620352121 +30 +1241.03564002131 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1054.1729200213 +12 +-660.325364744672 +22 +-441.215302798659 +32 +1054.1729200213 +13 +-660.325364744672 +23 +-441.215302798659 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-733.714233519903 +20 +-303.914386430124 +30 +1054.1729200213 +11 +-582.640028068573 +21 +-389.307620352121 +31 +1241.03564002131 +12 +-647.394912321209 +22 +-268.159752894786 +32 +1241.03564002131 +13 +-647.394912321209 +23 +-268.159752894786 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1079.96854760957 +20 +3.60955709766131e-13 +30 +2011.5925230317 +11 +-1051.79710945546 +21 +-209.215453044867 +31 +1922.19277204157 +12 +-1059.21725479392 +22 +-210.691411720441 +32 +2011.5925230317 +13 +-1059.21725479392 +23 +-210.691411720441 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1051.79710945546 +20 +-209.215453044867 +30 +1922.19277204157 +11 +-1079.96854760957 +21 +3.60955709766131e-13 +31 +2011.5925230317 +12 +-1072.40303302985 +22 +3.60955709766131e-13 +32 +1922.19277204157 +13 +-1072.40303302985 +23 +3.60955709766131e-13 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +600.487204246519 +20 +-600.48720424652 +30 +855.37186879426 +11 +470.84895947612 +21 +-704.67526609701 +31 +796.153149972084 +12 +599.277053327022 +22 +-599.277053327022 +32 +796.153149972084 +13 +599.277053327022 +23 +-599.277053327022 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +470.84895947612 +20 +-704.67526609701 +30 +796.153149972084 +11 +600.487204246519 +21 +-600.48720424652 +31 +855.37186879426 +12 +471.799768952456 +22 +-706.098253038493 +32 +855.37186879426 +13 +471.799768952456 +23 +-706.098253038493 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493597603992 +20 +-867.967629842289 +30 +2084.51449834551 +11 +180.675224578544 +21 +-856.929131071254 +31 +2097.9647944504 +12 +180.675224578544 +22 +-867.967544283947 +32 +2084.51444903383 +13 +180.675224578544 +23 +-867.967544283947 +33 +2084.51444903383 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-856.929131071254 +30 +2097.9647944504 +11 +104.493597603992 +21 +-867.967629842289 +31 +2084.51449834551 +12 +104.493594381781 +22 +-856.929210819903 +32 +2097.96485084121 +13 +104.493594381781 +23 +-856.929210819903 +33 +2097.96485084121 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-843.478785654691 +30 +2109.00320766309 +11 +104.493594381781 +21 +-856.929210819903 +31 +2097.96485084121 +12 +104.493591159571 +22 +-843.478858324207 +32 +2109.0032698636 +13 +104.493591159571 +23 +-843.478858324207 +33 +2109.0032698636 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493594381781 +20 +-856.929210819903 +30 +2097.96485084121 +11 +180.675224578544 +21 +-843.478785654691 +31 +2109.00320766309 +12 +180.675224578544 +22 +-856.929131071254 +32 +2097.9647944504 +13 +180.675224578544 +23 +-856.929131071254 +33 +2097.9647944504 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-828.133397265575 +30 +2117.20548864256 +11 +104.493591159571 +21 +-843.478858324207 +31 +2109.0032698636 +12 +104.493588061189 +22 +-828.133461858568 +32 +2117.20555516006 +13 +104.493588061189 +23 +-828.133461858568 +33 +2117.20555516006 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493591159571 +20 +-843.478858324207 +30 +2109.0032698636 +11 +180.675224578544 +21 +-828.133397265575 +31 +2117.20548864256 +12 +180.675224578544 +22 +-843.478785654691 +32 +2109.00320766309 +13 +180.675224578544 +23 +-843.478785654691 +33 +2109.00320766309 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-811.482680573908 +30 +2122.25642833066 +11 +104.493588061189 +21 +-828.133461858568 +31 +2117.20555516006 +12 +104.493585205705 +22 +-811.482736403362 +32 +2122.25649750655 +13 +104.493585205705 +23 +-811.482736403362 +33 +2122.25649750655 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493588061189 +20 +-828.133461858568 +30 +2117.20555516006 +11 +180.675224578544 +21 +-811.482680573908 +31 +2122.25642833066 +12 +180.675224578544 +22 +-828.133397265575 +32 +2117.20548864256 +13 +180.675224578544 +23 +-828.133397265575 +33 +2117.20548864256 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +2123.96192194778 +11 +104.493585205705 +21 +-811.482736403362 +31 +2122.25649750655 +12 +104.493582702852 +22 +-794.166559999998 +32 +2123.9619920213 +13 +104.493582702852 +23 +-794.166559999998 +33 +2123.9619920213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493585205705 +20 +-811.482736403362 +30 +2122.25649750655 +11 +180.675224578544 +21 +-794.16651328432 +31 +2123.96192194778 +12 +180.675224578544 +22 +-811.482680573908 +32 +2122.25642833066 +13 +180.675224578544 +23 +-811.482680573908 +33 +2122.25642833066 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-776.850345994732 +30 +2122.25642833066 +11 +104.493582702852 +21 +-794.166559999998 +31 +2123.9619920213 +12 +104.493580648814 +22 +-776.850383596634 +32 +2122.25649750655 +13 +104.493580648814 +23 +-776.850383596634 +33 +2122.25649750655 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493582702852 +20 +-794.166559999998 +30 +2123.9619920213 +11 +180.675224578544 +21 +-776.850345994732 +31 +2122.25642833066 +12 +180.675224578544 +22 +-794.16651328432 +32 +2123.96192194778 +13 +180.675224578544 +23 +-794.16651328432 +33 +2123.96192194778 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-760.199629303065 +30 +2117.20548864256 +11 +104.493580648814 +21 +-776.850383596634 +31 +2122.25649750655 +12 +104.493579122526 +22 +-760.199658141427 +32 +2117.20555516006 +13 +104.493579122526 +23 +-760.199658141427 +33 +2117.20555516006 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493580648814 +20 +-776.850383596634 +30 +2122.25649750655 +11 +180.675224578544 +21 +-760.199629303065 +31 +2117.20548864256 +12 +180.675224578544 +22 +-776.850345994732 +32 +2122.25642833066 +13 +180.675224578544 +23 +-776.850345994732 +33 +2122.25642833066 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-744.854240913949 +30 +2109.00320766309 +11 +104.493579122526 +21 +-760.199658141427 +31 +2117.20555516006 +12 +104.493578182644 +22 +-744.854261675788 +32 +2109.0032698636 +13 +104.493578182644 +23 +-744.854261675788 +33 +2109.0032698636 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493579122526 +20 +-760.199658141427 +30 +2117.20555516006 +11 +180.675224578544 +21 +-744.854240913949 +31 +2109.00320766309 +12 +180.675224578544 +22 +-760.199629303065 +32 +2117.20548864256 +13 +180.675224578544 +23 +-760.199629303065 +33 +2117.20548864256 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-731.403895497386 +30 +2097.9647944504 +11 +104.493578182644 +21 +-744.854261675788 +31 +2109.0032698636 +12 +104.493577865285 +22 +-731.403909180092 +32 +2097.96485084121 +13 +104.493577865285 +23 +-731.403909180092 +33 +2097.96485084121 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493578182644 +20 +-744.854261675788 +30 +2109.0032698636 +11 +180.675224578544 +21 +-731.403895497386 +31 +2097.9647944504 +12 +180.675224578544 +22 +-744.854240913949 +32 +2109.00320766309 +13 +180.675224578544 +23 +-744.854240913949 +33 +2109.00320766309 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-731.403895497386 +30 +2097.9647944504 +11 +104.493578182647 +21 +-720.365490157705 +31 +2084.51449834551 +12 +180.675224578544 +22 +-720.365482284693 +32 +2084.51444903383 +13 +180.675224578544 +23 +-720.365482284693 +33 +2084.51444903383 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493578182647 +20 +-720.365490157705 +30 +2084.51449834551 +11 +180.675224578544 +21 +-731.403895497386 +31 +2097.9647944504 +12 +104.493577865285 +22 +-731.403909180092 +32 +2097.96485084121 +13 +104.493577865285 +23 +-731.403909180092 +33 +2097.96485084121 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-720.365482284693 +30 +2084.51444903383 +11 +104.493579122533 +21 +-712.163204861241 +31 +2069.16910187987 +12 +180.675224578544 +22 +-712.163201305221 +32 +2069.16906064472 +13 +180.675224578544 +23 +-712.163201305221 +33 +2069.16906064472 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493579122533 +20 +-712.163204861241 +30 +2069.16910187987 +11 +180.675224578544 +21 +-720.365482284693 +31 +2084.51444903383 +12 +104.493578182647 +22 +-720.365490157705 +32 +2084.51449834551 +13 +104.493578182647 +23 +-720.365490157705 +33 +2084.51449834551 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-712.163201305221 +30 +2069.16906064472 +11 +104.493580648823 +21 +-707.112262514747 +31 +2052.51837642467 +12 +180.675224578544 +22 +-707.112261617118 +32 +2052.51834395305 +13 +180.675224578544 +23 +-707.112261617118 +33 +2052.51834395305 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493580648823 +20 +-707.112262514747 +30 +2052.51837642467 +11 +180.675224578544 +21 +-712.163201305221 +31 +2069.16906064472 +12 +104.493579122533 +22 +-712.163204861241 +32 +2069.16910187987 +13 +104.493579122533 +23 +-712.163204861241 +33 +2069.16910187987 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-707.112261617118 +30 +2052.51834395305 +11 +104.493582702864 +21 +-705.406767999999 +31 +2035.2022000213 +12 +180.675224578544 +22 +-705.406767999999 +32 +2035.20217666346 +13 +180.675224578544 +23 +-705.406767999999 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493582702864 +20 +-705.406767999999 +30 +2035.2022000213 +11 +180.675224578544 +21 +-707.112261617118 +31 +2052.51834395305 +12 +104.493580648823 +22 +-707.112262514747 +32 +2052.51837642467 +13 +104.493580648823 +23 +-707.112262514747 +33 +2052.51837642467 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +519.085398326623 +20 +-776.866198451135 +30 +2455.6433200213 +11 +381.734128610352 +21 +-921.587710511788 +31 +2361.46489814399 +12 +554.192057578438 +22 +-829.407026995336 +32 +2361.46489814399 +13 +554.192057578438 +23 +-829.407026995336 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +381.734128610352 +20 +-921.587710511788 +30 +2361.46489814399 +11 +519.085398326623 +21 +-776.866198451135 +31 +2455.6433200213 +12 +357.552241131722 +22 +-863.2074697971 +32 +2455.6433200213 +13 +357.552241131722 +23 +-863.2074697971 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +357.552241131722 +20 +-863.2074697971 +30 +2455.6433200213 +11 +519.085398326623 +21 +-776.866198451135 +31 +2455.6433200213 +12 +492.936359391337 +22 +-790.843150956456 +32 +2455.6433200213 +13 +492.936359391337 +23 +-790.843150956456 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +357.552241131722 +20 +-863.2074697971 +30 +2455.6433200213 +11 +492.936359391337 +21 +-790.843150956456 +31 +2455.6433200213 +12 +409.740310523406 +22 +-835.312365543472 +32 +2455.6433200213 +13 +409.740310523406 +23 +-835.312365543472 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-835.797377356766 +20 +1.80477854883065e-13 +30 +738.078199114136 +11 +-798.780782641381 +21 +-158.887376492573 +31 +682.822310520627 +12 +-819.73776511114 +22 +-163.055979488767 +32 +738.078199114136 +13 +-819.73776511114 +23 +-163.055979488767 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-798.780782641381 +20 +-158.887376492573 +30 +682.822310520627 +11 +-835.797377356766 +21 +1.80477854883065e-13 +31 +738.078199114136 +12 +-814.429823327873 +22 +1.80477854883065e-13 +32 +682.822310520627 +13 +-814.429823327873 +23 +1.80477854883065e-13 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-580.006735667279 +20 +-868.041422984449 +30 +2258.00680432354 +11 +-700.811796716974 +21 +-805.485642916867 +31 +2148.21162800104 +12 +-595.795202951324 +22 +-891.670534105406 +32 +2148.21162800104 +13 +-595.795202951324 +23 +-891.670534105406 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-700.811796716974 +20 +-805.485642916867 +30 +2148.21162800104 +11 +-580.006735667279 +21 +-868.041422984449 +31 +2258.00680432354 +12 +-713.051374182295 +22 +-793.031288591004 +32 +2155.44278114838 +13 +-713.051374182295 +23 +-793.031288591004 +33 +2155.44278114838 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-750.226480623555 +20 +-763.163737563064 +30 +2153.51833793914 +11 +-738.208549610569 +21 +-738.20854961057 +31 +2258.00680432354 +12 +-758.175252738136 +22 +-758.175252738136 +32 +2148.91211343617 +13 +-758.175252738136 +23 +-758.175252738136 +33 +2148.91211343617 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-738.208549610569 +20 +-738.20854961057 +30 +2258.00680432354 +11 +-750.226480623555 +21 +-763.163737563064 +31 +2153.51833793914 +12 +-713.051374182295 +22 +-793.031288591004 +32 +2155.44278114838 +13 +-713.051374182295 +23 +-793.031288591004 +33 +2155.44278114838 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-738.208549610569 +20 +-738.20854961057 +30 +2258.00680432354 +11 +-713.051374182295 +21 +-793.031288591004 +31 +2155.44278114838 +12 +-580.006735667279 +22 +-868.041422984449 +32 +2258.00680432354 +13 +-580.006735667279 +23 +-868.041422984449 +33 +2258.00680432354 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-654.791104458432 +20 +-848.015122202593 +30 +1965.89490198638 +11 +-758.928832717995 +21 +-874.671572316599 +31 +1963.87063213502 +12 +-679.407718084958 +22 +-824.046894149155 +32 +1931.32901160226 +13 +-679.407718084958 +23 +-824.046894149155 +33 +1931.32901160226 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-758.928832717995 +20 +-874.671572316599 +30 +1963.87063213502 +11 +-654.791104458432 +21 +-848.015122202593 +31 +1965.89490198638 +12 +-741.432257601186 +22 +-891.447302299009 +32 +1988.14599297097 +13 +-741.432257601186 +23 +-891.447302299009 +33 +1988.14599297097 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1.4681606386561 +20 +-1077.9663986116 +30 +1989.64235577041 +11 +-10.2481189704998 +21 +-977.344465549986 +31 +1990.50710618793 +12 +-10.2481189704998 +22 +-1077.17482828484 +32 +1990.50710618793 +13 +-10.2481189704998 +23 +-1077.17482828484 +33 +1990.50710618793 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-10.2481189704998 +20 +-977.344465549986 +30 +1990.50710618793 +11 +-1.4681606386561 +21 +-1077.9663986116 +31 +1989.64235577041 +12 +-1.4681606386561 +22 +-978.157451656943 +32 +1989.64235577041 +13 +-1.4681606386561 +23 +-978.157451656943 +33 +1989.64235577041 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +471.799768952456 +20 +-706.098253038493 +30 +855.37186879426 +11 +324.326404167689 +21 +-782.993203577332 +31 +796.153149972084 +12 +470.84895947612 +22 +-704.67526609701 +32 +796.153149972084 +13 +470.84895947612 +23 +-704.67526609701 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +324.326404167689 +20 +-782.993203577332 +30 +796.153149972084 +11 +471.799768952456 +21 +-706.098253038493 +31 +855.37186879426 +12 +324.981333125909 +22 +-784.574341950659 +32 +855.37186879426 +13 +324.981333125909 +23 +-784.574341950659 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +441.215302798659 +20 +-660.325364744672 +30 +1614.7610800213 +11 +468.281762027731 +21 +-751.288611861147 +31 +1427.8983600213 +12 +493.122985245198 +22 +-738.010701420772 +32 +1427.8983600213 +13 +493.122985245198 +23 +-738.010701420772 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +468.281762027731 +20 +-751.288611861147 +30 +1427.8983600213 +11 +441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +389.246864354028 +22 +-793.533644796473 +32 +1427.8983600213 +13 +389.246864354028 +23 +-793.533644796473 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +389.246864354028 +20 +-793.533644796473 +30 +1427.8983600213 +11 +303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +339.669019965462 +22 +-820.033554718597 +32 +1427.8983600213 +13 +339.669019965462 +23 +-820.033554718597 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +303.914386430124 +20 +-733.714233519903 +30 +1614.7610800213 +11 +389.246864354028 +21 +-793.533644796473 +31 +1427.8983600213 +12 +441.215302798659 +22 +-660.325364744672 +32 +1614.7610800213 +13 +441.215302798659 +23 +-660.325364744672 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +897.900697882446 +20 +-589.158254916404 +30 +2120.11937767794 +11 +891.670534105407 +21 +-595.795202951324 +31 +2148.21162800104 +12 +892.684338449561 +22 +-596.472605357118 +32 +2133.80356487023 +13 +892.684338449561 +23 +-596.472605357118 +33 +2133.80356487023 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +891.670534105407 +20 +-595.795202951324 +30 +2148.21162800104 +11 +897.900697882446 +21 +-589.158254916404 +31 +2120.11937767794 +12 +990.771212819308 +22 +-410.390873558597 +32 +2148.21162800104 +13 +990.771212819308 +23 +-410.390873558597 +33 +2148.21162800104 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +990.771212819308 +20 +-410.390873558597 +30 +2148.21162800104 +11 +897.900697882446 +21 +-589.158254916404 +31 +2120.11937767794 +12 +908.625264240696 +22 +-576.530906699202 +32 +2078.49259036266 +13 +908.625264240696 +23 +-576.530906699202 +33 +2078.49259036266 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +990.771212819308 +20 +-410.390873558597 +30 +2148.21162800104 +11 +908.625264240696 +21 +-576.530906699202 +31 +2078.49259036266 +12 +911.54074094115 +22 +-574.592524622259 +32 +2058.8118770109 +13 +911.54074094115 +23 +-574.592524622259 +33 +2058.8118770109 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +990.771212819308 +20 +-410.390873558597 +30 +2148.21162800104 +11 +911.54074094115 +21 +-574.592524622259 +31 +2058.8118770109 +12 +997.760836892423 +22 +-413.286070645571 +32 +2058.8118770109 +13 +997.760836892423 +23 +-413.286070645571 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493609641054 +20 +-828.133461858565 +30 +1953.19884488255 +11 +180.675224578544 +21 +-811.482680573908 +31 +1948.14792499626 +12 +104.493608114766 +22 +-811.482736403359 +32 +1948.14790253605 +13 +104.493608114766 +23 +-811.482736403359 +33 +1948.14790253605 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-811.482680573908 +30 +1948.14792499626 +11 +104.493609641054 +21 +-828.133461858565 +31 +1953.19884488255 +12 +180.675224578544 +22 +-828.133397265575 +32 +1953.19886468436 +13 +180.675224578544 +23 +-828.133397265575 +33 +1953.19886468436 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +554.192057578438 +20 +-829.407026995336 +30 +1708.93950189862 +11 +492.936358899678 +21 +-790.843151219254 +31 +1614.7610800213 +12 +519.085398326623 +22 +-776.866198451135 +32 +1614.7610800213 +13 +519.085398326623 +23 +-776.866198451135 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +492.936358899678 +20 +-790.843151219254 +30 +1614.7610800213 +11 +554.192057578438 +21 +-829.407026995336 +31 +1708.93950189862 +12 +409.740310523407 +22 +-835.312365543471 +32 +1614.7610800213 +13 +409.740310523407 +23 +-835.312365543471 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +409.740310523407 +20 +-835.312365543471 +30 +1614.7610800213 +11 +381.734128610352 +21 +-921.587710511788 +31 +1708.93950189862 +12 +357.552241131722 +22 +-863.2074697971 +32 +1614.7610800213 +13 +357.552241131722 +23 +-863.2074697971 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +381.734128610352 +20 +-921.587710511788 +30 +1708.93950189862 +11 +409.740310523407 +21 +-835.312365543471 +31 +1614.7610800213 +12 +554.192057578438 +22 +-829.407026995336 +32 +1708.93950189862 +13 +554.192057578438 +23 +-829.407026995336 +33 +1708.93950189862 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +104.493597604008 +20 +-744.854261675785 +30 +1961.40113017901 +11 +180.675224578544 +21 +-731.403895497386 +31 +1972.43955887653 +12 +104.493594381798 +22 +-731.40390918009 +32 +1972.4395492014 +13 +104.493594381798 +23 +-731.40390918009 +33 +1972.4395492014 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-731.403895497386 +30 +1972.43955887653 +11 +104.493597604008 +21 +-744.854261675785 +31 +1961.40113017901 +12 +180.675224578544 +22 +-744.854240913949 +32 +1961.40114566384 +13 +180.675224578544 +23 +-744.854240913949 +33 +1961.40114566384 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493603557861 +20 +-881.220857485246 +30 +2052.51837642467 +11 +180.675224578544 +21 +-876.169825263419 +31 +2069.16906064472 +12 +180.675224578544 +22 +-881.220764951522 +32 +2052.51834395305 +13 +180.675224578544 +23 +-881.220764951522 +33 +2052.51834395305 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-876.169825263419 +30 +2069.16906064472 +11 +104.493603557861 +21 +-881.220857485246 +31 +2052.51837642467 +12 +104.493600702375 +22 +-876.169915138753 +32 +2069.16910187987 +13 +104.493600702375 +23 +-876.169915138753 +33 +2069.16910187987 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493600702375 +20 +-876.169915138753 +30 +2069.16910187987 +11 +180.675224578544 +21 +-867.967544283947 +31 +2084.51444903383 +12 +180.675224578544 +22 +-876.169825263419 +32 +2069.16906064472 +13 +180.675224578544 +23 +-876.169825263419 +33 +2069.16906064472 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-867.967544283947 +30 +2084.51444903383 +11 +104.493600702375 +21 +-876.169915138753 +31 +2069.16910187987 +12 +104.493597603992 +22 +-867.967629842289 +32 +2084.51449834551 +13 +104.493597603992 +23 +-867.967629842289 +33 +2084.51449834551 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493606060716 +20 +-882.926351999993 +30 +2035.2022000213 +11 +180.675224578544 +21 +-881.220764951522 +31 +2052.51834395305 +12 +180.675224578544 +22 +-882.926258568641 +32 +2035.20217666346 +13 +180.675224578544 +23 +-882.926258568641 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-881.220764951522 +30 +2052.51834395305 +11 +104.493606060716 +21 +-882.926351999993 +31 +2035.2022000213 +12 +104.493603557861 +22 +-881.220857485246 +32 +2052.51837642467 +13 +104.493603557861 +23 +-881.220857485246 +33 +2052.51837642467 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493603557875 +20 +-776.850383596631 +30 +1948.14790253605 +11 +180.675224578544 +21 +-760.199629303065 +31 +1953.19886468436 +12 +104.49360070239 +22 +-760.199658141424 +32 +1953.19884488255 +13 +104.49360070239 +23 +-760.199658141424 +33 +1953.19884488255 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-760.199629303065 +30 +1953.19886468436 +11 +104.493603557875 +21 +-776.850383596631 +31 +1948.14790253605 +12 +180.675224578544 +22 +-776.850345994732 +32 +1948.14792499626 +13 +180.675224578544 +23 +-776.850345994732 +33 +1948.14792499626 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-887.575434400246 +30 +2260.71126086817 +11 +577.578293884962 +21 +-864.407003018736 +31 +2267.73932769213 +12 +540.896920479706 +22 +-887.575434400246 +32 +2260.71126086817 +13 +540.896920479706 +23 +-887.575434400246 +33 +2260.71126086817 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +577.578293884962 +20 +-864.407003018736 +30 +2267.73932769213 +11 +653.750224578544 +21 +-887.575434400246 +31 +2260.71126086817 +12 +600.307509232711 +22 +-841.785968318108 +32 +2274.60134354834 +13 +600.307509232711 +23 +-841.785968318108 +33 +2274.60134354834 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +600.307509232711 +20 +-841.785968318108 +30 +2274.60134354834 +11 +653.750224578544 +21 +-887.575434400246 +31 +2260.71126086817 +12 +653.750224578544 +22 +-841.785968318108 +32 +2274.60134354834 +13 +653.750224578544 +23 +-841.785968318108 +33 +2274.60134354834 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-381.734128610353 +20 +-921.587710511788 +30 +1708.93950189862 +11 +-409.740279224824 +21 +-835.312382272912 +31 +1614.7610800213 +12 +-357.552241131723 +22 +-863.207469797099 +32 +1614.7610800213 +13 +-357.552241131723 +23 +-863.207469797099 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-409.740279224824 +20 +-835.312382272912 +30 +1614.7610800213 +11 +-381.734128610353 +21 +-921.587710511788 +31 +1708.93950189862 +12 +-492.936329267328 +22 +-790.843167058075 +32 +1614.7610800213 +13 +-492.936329267328 +23 +-790.843167058075 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-492.936329267328 +20 +-790.843167058075 +30 +1614.7610800213 +11 +-554.192057578438 +21 +-829.407026995335 +31 +1708.93950189862 +12 +-519.085398326623 +22 +-776.866198451135 +32 +1614.7610800213 +13 +-519.085398326623 +23 +-776.866198451135 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-554.192057578438 +20 +-829.407026995335 +30 +1708.93950189862 +11 +-492.936329267328 +21 +-790.843167058075 +31 +1614.7610800213 +12 +-381.734128610353 +22 +-921.587710511788 +32 +1708.93950189862 +13 +-381.734128610353 +23 +-921.587710511788 +33 +1708.93950189862 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +782.993203577332 +20 +-324.326404167689 +30 +796.153149972084 +11 +832.899678896021 +21 +-165.674046918965 +31 +855.37186879426 +12 +784.574341950659 +22 +-324.981333125909 +32 +855.37186879426 +13 +784.574341950659 +23 +-324.981333125909 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +832.899678896021 +20 +-165.674046918965 +30 +855.37186879426 +11 +782.993203577332 +21 +-324.326404167689 +31 +796.153149972084 +12 +831.221151351825 +22 +-165.340167031437 +32 +796.153149972084 +13 +831.221151351825 +23 +-165.340167031437 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-789.394716623343 +20 +-732.286733093936 +30 +2020.79944934296 +11 +-833.682296381699 +21 +-797.91475852831 +31 +2048.43845388979 +12 +-833.979694213849 +22 +-798.243508123 +32 +2025.28667143296 +13 +-833.979694213849 +23 +-798.243508123 +33 +2025.28667143296 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-833.682296381699 +20 +-797.91475852831 +30 +2048.43845388979 +11 +-789.394716623343 +21 +-732.286733093936 +31 +2020.79944934296 +12 +-789.34285913936 +22 +-732.349614898499 +32 +2049.89434090933 +13 +-789.34285913936 +23 +-732.349614898499 +33 +2049.89434090933 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-849.217148276931 +30 +855.37186879426 +11 +-165.340167031437 +21 +-831.221151351825 +31 +796.153149972084 +12 +1.80477854883065e-13 +22 +-847.505736434059 +32 +796.153149972084 +13 +1.80477854883065e-13 +23 +-847.505736434059 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-165.340167031437 +20 +-831.221151351825 +30 +796.153149972084 +11 +1.80477854883065e-13 +21 +-849.217148276931 +31 +855.37186879426 +12 +-165.674046918965 +22 +-832.899678896021 +32 +855.37186879426 +13 +-165.674046918965 +23 +-832.899678896021 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +724.33953815002 +20 +-300.031260464802 +30 +631.979456702016 +11 +798.780782641381 +21 +-158.887376492573 +31 +682.822310520627 +12 +752.435044439405 +22 +-311.668800211604 +32 +682.822310520627 +13 +752.435044439405 +23 +-311.668800211604 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +798.780782641381 +20 +-158.887376492573 +30 +682.822310520627 +11 +724.33953815002 +21 +-300.031260464802 +31 +631.979456702016 +12 +768.954752250597 +22 +-152.954610178005 +32 +631.979456702016 +13 +768.954752250597 +23 +-152.954610178005 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +452.472966724379 +20 +-677.173649450057 +30 +682.822310520627 +11 +300.031260464802 +21 +-724.33953815002 +31 +631.979456702016 +12 +435.577877671407 +22 +-651.888361812631 +32 +631.979456702016 +13 +435.577877671407 +23 +-651.888361812631 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +300.031260464802 +20 +-724.33953815002 +30 +631.979456702016 +11 +452.472966724379 +21 +-677.173649450057 +31 +682.822310520627 +12 +311.668800211604 +22 +-752.435044439405 +32 +682.822310520627 +13 +311.668800211604 +23 +-752.435044439405 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-724.33953815002 +20 +-300.031260464802 +30 +631.979456702016 +11 +-619.813665790805 +21 +-414.146250971868 +31 +587.016306884026 +12 +-651.888361812631 +22 +-435.577877671407 +32 +631.979456702016 +13 +-651.888361812631 +23 +-435.577877671407 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-619.813665790805 +20 +-414.146250971868 +30 +587.016306884026 +11 +-724.33953815002 +21 +-300.031260464802 +31 +631.979456702016 +12 +-688.700045464263 +22 +-285.268899238265 +32 +587.016306884026 +13 +-688.700045464263 +23 +-285.268899238265 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-10.2481189704998 +20 +-1077.17482828484 +30 +1990.50710618793 +11 +-18.6906684275082 +21 +-976.666250664317 +31 +1993.0681255669 +12 +-18.6906684275082 +22 +-1076.56003774335 +32 +1993.0681255669 +13 +-18.6906684275082 +23 +-1076.56003774335 +33 +1993.0681255669 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-18.6906684275082 +20 +-976.666250664317 +30 +1993.0681255669 +11 +-10.2481189704998 +21 +-1077.17482828484 +31 +1990.50710618793 +12 +-10.2481189704998 +22 +-977.344465549986 +32 +1990.50710618793 +13 +-10.2481189704998 +23 +-977.344465549986 +33 +1990.50710618793 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +300.031260464802 +20 +-724.33953815002 +30 +631.979456702016 +11 +145.428823687577 +21 +-731.120068617964 +31 +587.016306884026 +12 +285.268899238265 +22 +-688.700045464263 +32 +587.016306884026 +13 +285.268899238265 +23 +-688.700045464263 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +145.428823687577 +20 +-731.120068617964 +30 +587.016306884026 +11 +300.031260464802 +21 +-724.33953815002 +31 +631.979456702016 +12 +152.954610178005 +22 +-768.954752250597 +32 +631.979456702016 +13 +152.954610178005 +23 +-768.954752250597 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-495.494614285553 +20 +-495.494614285553 +30 +1241.03564002131 +11 +-660.325364744672 +21 +-441.215302798659 +31 +1054.1729200213 +12 +-561.560562517035 +22 +-561.560562517035 +32 +1054.1729200213 +13 +-561.560562517035 +23 +-561.560562517035 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-660.325364744672 +20 +-441.215302798659 +30 +1054.1729200213 +11 +-495.494614285553 +21 +-495.494614285553 +31 +1241.03564002131 +12 +-582.640028068573 +22 +-389.307620352121 +32 +1241.03564002131 +13 +-582.640028068573 +23 +-389.307620352121 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-528.527588401294 +20 +-528.527588401294 +30 +1427.8983600213 +11 +-699.168033082722 +21 +-467.169144021928 +31 +1241.03564002131 +12 +-594.593536632775 +22 +-594.593536632776 +32 +1241.03564002131 +13 +-594.593536632775 +23 +-594.593536632776 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +1241.03564002131 +11 +-528.527588401294 +21 +-528.527588401294 +31 +1427.8983600213 +12 +-621.482696406623 +22 +-415.26146157539 +32 +1427.8983600213 +13 +-621.482696406623 +23 +-415.26146157539 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-863.207469797099 +20 +-357.552241131722 +30 +2455.6433200213 +11 +-978.352295145615 +21 +-194.606371158736 +31 +2361.46489814399 +12 +-921.587710511788 +22 +-381.734128610352 +32 +2361.46489814399 +13 +-921.587710511788 +23 +-381.734128610352 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-978.352295145615 +20 +-194.606371158736 +30 +2361.46489814399 +11 +-863.207469797099 +21 +-357.552241131722 +31 +2455.6433200213 +12 +-887.22732313789 +22 +-278.369396423646 +32 +2455.6433200213 +13 +-887.22732313789 +23 +-278.369396423646 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-978.352295145615 +20 +-194.606371158736 +30 +2361.46489814399 +11 +-887.22732313789 +21 +-278.369396423646 +31 +2455.6433200213 +12 +-914.651018565421 +22 +-187.965588142593 +32 +2455.6433200213 +13 +-914.651018565421 +23 +-187.965588142593 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-978.352295145615 +20 +-194.606371158736 +30 +2361.46489814399 +11 +-914.651018565421 +21 +-187.965588142593 +31 +2455.6433200213 +12 +-916.376162171087 +22 +-182.278551827736 +32 +2455.6433200213 +13 +-916.376162171087 +23 +-182.278551827736 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-650.663001997456 +20 +1.80477854883065e-13 +30 +587.016306884026 +11 +-731.120068617964 +21 +-145.428823687577 +31 +587.016306884026 +12 +-745.443557551536 +22 +1.80477854883065e-13 +32 +587.016306884026 +13 +-745.443557551536 +23 +1.80477854883065e-13 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-731.120068617964 +20 +-145.428823687577 +30 +587.016306884026 +11 +-650.663001997456 +21 +1.80477854883065e-13 +31 +587.016306884026 +12 +-688.700045464263 +22 +-285.268899238265 +32 +587.016306884026 +13 +-688.700045464263 +23 +-285.268899238265 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-688.700045464263 +20 +-285.268899238265 +30 +587.016306884026 +11 +-650.663001997456 +21 +1.80477854883065e-13 +31 +587.016306884026 +12 +-619.813665790805 +22 +-414.146250971868 +32 +587.016306884026 +13 +-619.813665790805 +23 +-414.146250971868 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-619.813665790805 +20 +-414.146250971868 +30 +587.016306884026 +11 +-650.663001997456 +21 +1.80477854883065e-13 +31 +587.016306884026 +12 +-638.160694862082 +22 +-126.938054583664 +32 +587.016306884026 +13 +-638.160694862082 +23 +-126.938054583664 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-619.813665790805 +20 +-414.146250971868 +30 +587.016306884026 +11 +-638.160694862082 +21 +-126.938054583664 +31 +587.016306884026 +12 +-601.1342301078 +22 +-248.997950917359 +32 +587.016306884026 +13 +-601.1342301078 +23 +-248.997950917359 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-619.813665790805 +20 +-414.146250971868 +30 +587.016306884026 +11 +-601.1342301078 +21 +-248.997950917359 +31 +587.016306884026 +12 +-527.108194536515 +22 +-527.108194536515 +32 +587.016306884026 +13 +-527.108194536515 +23 +-527.108194536515 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-527.108194536515 +20 +-527.108194536515 +30 +587.016306884026 +11 +-601.1342301078 +21 +-248.997950917359 +31 +587.016306884026 +12 +-541.006514010435 +22 +-361.48899563696 +32 +587.016306884026 +13 +-541.006514010435 +23 +-361.48899563696 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-527.108194536515 +20 +-527.108194536515 +30 +587.016306884026 +11 +-541.006514010435 +21 +-361.48899563696 +31 +587.016306884026 +12 +-460.088220979597 +22 +-460.088220979597 +32 +587.016306884026 +13 +-460.088220979597 +23 +-460.088220979597 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-527.108194536515 +20 +-527.108194536515 +30 +587.016306884026 +11 +-460.088220979597 +21 +-460.088220979597 +31 +587.016306884026 +12 +-414.146250971868 +22 +-619.813665790805 +32 +587.016306884026 +13 +-414.146250971868 +23 +-619.813665790805 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-414.146250971868 +20 +-619.813665790805 +30 +587.016306884026 +11 +-460.088220979597 +21 +-460.088220979597 +31 +587.016306884026 +12 +-361.48899563696 +22 +-541.006514010435 +32 +587.016306884026 +13 +-361.48899563696 +23 +-541.006514010435 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-414.146250971868 +20 +-619.813665790805 +30 +587.016306884026 +11 +-361.48899563696 +21 +-541.006514010435 +31 +587.016306884026 +12 +-285.268899238265 +22 +-688.700045464263 +32 +587.016306884026 +13 +-285.268899238265 +23 +-688.700045464263 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-285.268899238265 +20 +-688.700045464263 +30 +587.016306884026 +11 +-361.48899563696 +21 +-541.006514010435 +31 +587.016306884026 +12 +-248.99795091736 +22 +-601.1342301078 +32 +587.016306884026 +13 +-248.99795091736 +23 +-601.1342301078 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-285.268899238265 +20 +-688.700045464263 +30 +587.016306884026 +11 +-248.99795091736 +21 +-601.1342301078 +31 +587.016306884026 +12 +-145.428823687577 +22 +-731.120068617964 +32 +587.016306884026 +13 +-145.428823687577 +23 +-731.120068617964 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-145.428823687577 +20 +-731.120068617964 +30 +587.016306884026 +11 +-248.99795091736 +21 +-601.1342301078 +31 +587.016306884026 +12 +-126.938054583664 +22 +-638.160694862082 +32 +587.016306884026 +13 +-126.938054583664 +23 +-638.160694862082 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-145.428823687577 +20 +-731.120068617964 +30 +587.016306884026 +11 +-126.938054583664 +21 +-638.160694862082 +31 +587.016306884026 +12 +0.0 +22 +-745.443557551535 +32 +587.016306884026 +13 +0.0 +23 +-745.443557551535 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-745.443557551535 +30 +587.016306884026 +11 +-126.938054583664 +21 +-638.160694862082 +31 +587.016306884026 +12 +0.0 +22 +-650.663001997455 +32 +587.016306884026 +13 +0.0 +23 +-650.663001997455 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-745.443557551535 +30 +587.016306884026 +11 +0.0 +21 +-650.663001997455 +31 +587.016306884026 +12 +126.938054583664 +22 +-638.160694862082 +32 +587.016306884026 +13 +126.938054583664 +23 +-638.160694862082 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-745.443557551535 +30 +587.016306884026 +11 +126.938054583664 +21 +-638.160694862082 +31 +587.016306884026 +12 +145.428823687577 +22 +-731.120068617964 +32 +587.016306884026 +13 +145.428823687577 +23 +-731.120068617964 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +145.428823687577 +20 +-731.120068617964 +30 +587.016306884026 +11 +126.938054583664 +21 +-638.160694862082 +31 +587.016306884026 +12 +248.997950917359 +22 +-601.1342301078 +32 +587.016306884026 +13 +248.997950917359 +23 +-601.1342301078 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +145.428823687577 +20 +-731.120068617964 +30 +587.016306884026 +11 +248.997950917359 +21 +-601.1342301078 +31 +587.016306884026 +12 +285.268899238265 +22 +-688.700045464263 +32 +587.016306884026 +13 +285.268899238265 +23 +-688.700045464263 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +285.268899238265 +20 +-688.700045464263 +30 +587.016306884026 +11 +248.997950917359 +21 +-601.1342301078 +31 +587.016306884026 +12 +361.48899563696 +22 +-541.006514010435 +32 +587.016306884026 +13 +361.48899563696 +23 +-541.006514010435 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +285.268899238265 +20 +-688.700045464263 +30 +587.016306884026 +11 +361.48899563696 +21 +-541.006514010435 +31 +587.016306884026 +12 +414.146250971868 +22 +-619.813665790805 +32 +587.016306884026 +13 +414.146250971868 +23 +-619.813665790805 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +414.146250971868 +20 +-619.813665790805 +30 +587.016306884026 +11 +361.48899563696 +21 +-541.006514010435 +31 +587.016306884026 +12 +460.088220979597 +22 +-460.088220979597 +32 +587.016306884026 +13 +460.088220979597 +23 +-460.088220979597 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +414.146250971868 +20 +-619.813665790805 +30 +587.016306884026 +11 +460.088220979597 +21 +-460.088220979597 +31 +587.016306884026 +12 +527.108194536515 +22 +-527.108194536515 +32 +587.016306884026 +13 +527.108194536515 +23 +-527.108194536515 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +527.108194536515 +20 +-527.108194536515 +30 +587.016306884026 +11 +460.088220979597 +21 +-460.088220979597 +31 +587.016306884026 +12 +541.006514010435 +22 +-361.48899563696 +32 +587.016306884026 +13 +541.006514010435 +23 +-361.48899563696 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +527.108194536515 +20 +-527.108194536515 +30 +587.016306884026 +11 +541.006514010435 +21 +-361.48899563696 +31 +587.016306884026 +12 +610.800045742856 +22 +-425.129378778605 +32 +587.016306884026 +13 +610.800045742856 +23 +-425.129378778605 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +610.800045742856 +20 +-425.129378778605 +30 +587.016306884026 +11 +541.006514010435 +21 +-361.48899563696 +31 +587.016306884026 +12 +601.1342301078 +22 +-248.997950917359 +32 +587.016306884026 +13 +601.1342301078 +23 +-248.997950917359 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +610.800045742856 +20 +-425.129378778605 +30 +587.016306884026 +11 +601.1342301078 +21 +-248.997950917359 +31 +587.016306884026 +12 +638.160694862082 +22 +-126.938054583664 +32 +587.016306884026 +13 +638.160694862082 +23 +-126.938054583664 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +610.800045742856 +20 +-425.129378778605 +30 +587.016306884026 +11 +638.160694862082 +21 +-126.938054583664 +31 +587.016306884026 +12 +619.813665790805 +22 +-414.146250971868 +32 +587.016306884026 +13 +619.813665790805 +23 +-414.146250971868 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +619.813665790805 +20 +-414.146250971868 +30 +587.016306884026 +11 +638.160694862082 +21 +-126.938054583664 +31 +587.016306884026 +12 +648.718890655847 +22 +-360.068378836192 +32 +587.016306884026 +13 +648.718890655847 +23 +-360.068378836192 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +648.718890655847 +20 +-360.068378836192 +30 +587.016306884026 +11 +638.160694862082 +21 +-126.938054583664 +31 +587.016306884026 +12 +650.663001997456 +22 +0.0 +32 +587.016306884026 +13 +650.663001997456 +23 +0.0 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +648.718890655847 +20 +-360.068378836192 +30 +587.016306884026 +11 +650.663001997456 +21 +0.0 +31 +587.016306884026 +12 +684.232404647772 +22 +-293.627267317059 +32 +587.016306884026 +13 +684.232404647772 +23 +-293.627267317059 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +684.232404647772 +20 +-293.627267317059 +30 +587.016306884026 +11 +650.663001997456 +21 +0.0 +31 +587.016306884026 +12 +745.443557551535 +22 +1.80477854883065e-13 +32 +587.016306884026 +13 +745.443557551535 +23 +1.80477854883065e-13 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +684.232404647772 +20 +-293.627267317059 +30 +587.016306884026 +11 +745.443557551535 +21 +1.80477854883065e-13 +31 +587.016306884026 +12 +688.700045464263 +22 +-285.268899238265 +32 +587.016306884026 +13 +688.700045464263 +23 +-285.268899238265 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +688.700045464263 +20 +-285.268899238265 +30 +587.016306884026 +11 +745.443557551535 +21 +1.80477854883065e-13 +31 +587.016306884026 +12 +707.864018296911 +22 +-222.093747280928 +32 +587.016306884026 +13 +707.864018296911 +23 +-222.093747280928 +33 +587.016306884026 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +707.864018296911 +20 +-222.093747280928 +30 +587.016306884026 +11 +745.443557551535 +21 +1.80477854883065e-13 +31 +587.016306884026 +12 +731.120068617964 +22 +-145.428823687577 +32 +587.016306884026 +13 +731.120068617964 +23 +-145.428823687577 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-782.993203577332 +20 +-324.326404167689 +30 +796.153149972084 +11 +-694.940121314314 +21 +-464.344143695271 +31 +738.078199114136 +12 +-704.67526609701 +22 +-470.84895947612 +32 +796.153149972084 +13 +-704.67526609701 +23 +-470.84895947612 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-694.940121314314 +20 +-464.344143695271 +30 +738.078199114136 +11 +-782.993203577332 +21 +-324.326404167689 +31 +796.153149972084 +12 +-772.176090266528 +22 +-319.845809128627 +32 +738.078199114136 +13 +-772.176090266528 +23 +-319.845809128627 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1051.79710945546 +20 +-209.215453044867 +30 +1922.19277204157 +11 +1079.96854760957 +21 +1.80477854883065e-13 +31 +2011.5925230317 +12 +1059.21725479392 +22 +-210.691411720441 +32 +2011.5925230317 +13 +1059.21725479392 +23 +-210.691411720441 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1079.96854760957 +20 +1.80477854883065e-13 +30 +2011.5925230317 +11 +1051.79710945546 +21 +-209.215453044867 +31 +1922.19277204157 +12 +1072.40303302985 +22 +1.80477854883065e-13 +32 +1922.19277204157 +13 +1072.40303302985 +23 +1.80477854883065e-13 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1078.12323678805 +30 +1989.78695697206 +11 +-209.215453044867 +21 +-1051.79710945546 +31 +1922.19277204157 +12 +1.80477854883065e-13 +22 +-1072.40303302985 +32 +1922.19277204157 +13 +1.80477854883065e-13 +23 +-1072.40303302985 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +1922.19277204157 +11 +1.80477854883065e-13 +21 +-1078.12323678805 +31 +1989.78695697206 +12 +-1.4681606386561 +22 +-1077.9663986116 +32 +1989.64235577041 +13 +-1.4681606386561 +23 +-1077.9663986116 +33 +1989.64235577041 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +1922.19277204157 +11 +-10.2481189704998 +21 +-1077.17482828484 +31 +1990.50710618793 +12 +-210.691411720441 +22 +-1059.21725479392 +32 +2011.5925230317 +13 +-210.691411720441 +23 +-1059.21725479392 +33 +2011.5925230317 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-10.2481189704998 +20 +-1077.17482828484 +30 +1990.50710618793 +11 +-209.215453044867 +21 +-1051.79710945546 +31 +1922.19277204157 +12 +-1.4681606386561 +22 +-1077.9663986116 +32 +1989.64235577041 +13 +-1.4681606386561 +23 +-1077.9663986116 +33 +1989.64235577041 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +-10.2481189704998 +21 +-1077.17482828484 +31 +1990.50710618793 +12 +-18.6906684275082 +22 +-1076.56003774335 +32 +1993.0681255669 +13 +-18.6906684275082 +23 +-1076.56003774335 +33 +1993.0681255669 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +-18.6906684275082 +21 +-1076.56003774335 +31 +1993.0681255669 +12 +-26.4713665686843 +22 +-1076.14565304285 +32 +1997.22699536883 +13 +-26.4713665686843 +23 +-1076.14565304285 +33 +1997.22699536883 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +-26.4713665686843 +21 +-1076.14565304285 +31 +1997.22699536883 +12 +-33.2912055279292 +22 +-1075.947598755 +32 +2002.82389255955 +13 +-33.2912055279292 +23 +-1075.947598755 +33 +2002.82389255955 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +-33.2912055279292 +21 +-1075.947598755 +31 +2002.82389255955 +12 +-38.8881027186482 +22 +-1075.973485995 +32 +2009.6437315188 +13 +-38.8881027186482 +23 +-1075.973485995 +33 +2009.6437315188 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +-38.8881027186482 +21 +-1075.973485995 +31 +2009.6437315188 +12 +-39.9297534839436 +22 +-1076.03581015323 +32 +2011.5925230317 +13 +-39.9297534839436 +23 +-1076.03581015323 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +42.6716706222413 +20 +-1075.76575488639 +30 +2025.86697911698 +11 +40.110651243267 +21 +-976.014544733984 +31 +2017.42442965997 +12 +40.1106512432667 +22 +-1076.01799327905 +32 +2017.42442965997 +13 +40.1106512432667 +23 +-1076.01799327905 +33 +2017.42442965997 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +40.110651243267 +20 +-976.014544733984 +30 +2017.42442965997 +11 +42.6716706222413 +21 +-1075.76575488639 +31 +2025.86697911698 +12 +42.6716706222411 +22 +-976.267680774437 +32 +2025.86697911698 +13 +42.6716706222411 +23 +-976.267680774437 +33 +2025.86697911698 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +784.574341950659 +20 +-324.981333125909 +30 +855.37186879426 +11 +699.168033082722 +21 +-467.169144021929 +31 +914.026066884025 +12 +706.098253038493 +22 +-471.799768952456 +32 +855.37186879426 +13 +706.098253038493 +23 +-471.799768952456 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021929 +30 +914.026066884025 +11 +784.574341950659 +21 +-324.981333125909 +31 +855.37186879426 +12 +776.87389411925 +22 +-321.791703197793 +32 +914.026066884025 +13 +776.87389411925 +23 +-321.791703197793 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-794.166563605455 +20 +1.80477854883065e-13 +30 +1614.7610800213 +11 +-925.063957882084 +21 +-94.0698816812515 +31 +1614.7610800213 +12 +-934.329032542513 +22 +3.60955709766131e-13 +32 +1614.7610800213 +13 +-934.329032542513 +23 +3.60955709766131e-13 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-925.063957882084 +20 +-94.0698816812515 +30 +1614.7610800213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-916.376162171087 +22 +-182.278551827736 +32 +1614.7610800213 +13 +-916.376162171087 +23 +-182.278551827736 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-916.376162171087 +20 +-182.278551827736 +30 +1614.7610800213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-914.651018607606 +22 +-187.965588003526 +32 +1614.7610800213 +13 +-914.651018607606 +23 +-187.965588003526 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-914.651018607606 +20 +-187.965588003526 +30 +1614.7610800213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-887.227323624272 +22 +-278.369394820258 +32 +1614.7610800213 +13 +-887.227323624272 +23 +-278.369394820258 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-887.227323624272 +20 +-278.369394820258 +30 +1614.7610800213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-863.207469797099 +22 +-357.552241131722 +32 +1614.7610800213 +13 +-863.207469797099 +23 +-357.552241131722 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-863.207469797099 +20 +-357.552241131722 +30 +1614.7610800213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-857.607798337338 +22 +-368.028489582189 +32 +1614.7610800213 +13 +-857.607798337338 +23 +-368.028489582189 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-857.607798337338 +20 +-368.028489582189 +30 +1614.7610800213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-813.095615539802 +22 +-451.304926317894 +32 +1614.7610800213 +13 +-813.095615539802 +23 +-451.304926317894 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-813.095615539802 +20 +-451.304926317894 +30 +1614.7610800213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-776.866198451135 +22 +-519.085398326623 +32 +1614.7610800213 +13 +-776.866198451135 +23 +-519.085398326623 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-776.866198451135 +20 +-519.085398326623 +30 +1614.7610800213 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +-778.906875772646 +22 +-154.93421062823 +32 +1614.7610800213 +13 +-778.906875772646 +23 +-154.93421062823 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-776.866198451135 +20 +-519.085398326623 +30 +1614.7610800213 +11 +-778.906875772646 +21 +-154.93421062823 +31 +1614.7610800213 +12 +-733.714233519903 +22 +-303.914386430124 +32 +1614.7610800213 +13 +-733.714233519903 +23 +-303.914386430124 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-776.866198451135 +20 +-519.085398326623 +30 +1614.7610800213 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +-765.568613986399 +22 +-532.851544827532 +32 +1614.7610800213 +13 +-765.568613986399 +23 +-532.851544827532 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-765.568613986399 +20 +-532.851544827532 +30 +1614.7610800213 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +-705.689426216297 +22 +-605.814546234746 +32 +1614.7610800213 +13 +-705.689426216297 +23 +-605.814546234746 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-705.689426216297 +20 +-605.814546234746 +30 +1614.7610800213 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +-660.325364744672 +22 +-441.215302798659 +32 +1614.7610800213 +13 +-660.325364744672 +23 +-441.215302798659 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-705.689426216297 +20 +-605.814546234746 +30 +1614.7610800213 +11 +-660.325364744672 +21 +-441.215302798659 +31 +1614.7610800213 +12 +-660.670394770277 +22 +-660.670394770277 +32 +1614.7610800213 +13 +-660.670394770277 +23 +-660.670394770277 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-660.670394770277 +20 +-660.670394770277 +30 +1614.7610800213 +11 +-660.325364744672 +21 +-441.215302798659 +31 +1614.7610800213 +12 +-642.32525459148 +22 +-675.725862229795 +32 +1614.7610800213 +13 +-642.32525459148 +23 +-675.725862229795 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-642.32525459148 +20 +-675.725862229795 +30 +1614.7610800213 +11 +-660.325364744672 +21 +-441.215302798659 +31 +1614.7610800213 +12 +-561.560562517035 +22 +-561.560562517035 +32 +1614.7610800213 +13 +-561.560562517035 +23 +-561.560562517035 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-642.32525459148 +20 +-675.725862229795 +30 +1614.7610800213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +-569.385752125536 +22 +-735.58576491719 +32 +1614.7610800213 +13 +-569.385752125536 +23 +-735.58576491719 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-569.385752125536 +20 +-735.58576491719 +30 +1614.7610800213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +-519.085398326623 +22 +-776.866198451135 +32 +1614.7610800213 +13 +-519.085398326623 +23 +-776.866198451135 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-519.085398326623 +20 +-776.866198451135 +30 +1614.7610800213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +-441.215302798659 +22 +-660.325364744672 +32 +1614.7610800213 +13 +-441.215302798659 +23 +-660.325364744672 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-519.085398326623 +20 +-776.866198451135 +30 +1614.7610800213 +11 +-441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +-492.936329267328 +22 +-790.843167058075 +32 +1614.7610800213 +13 +-492.936329267328 +23 +-790.843167058075 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-492.936329267328 +20 +-790.843167058075 +30 +1614.7610800213 +11 +-441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +-409.740279224824 +22 +-835.312382272912 +32 +1614.7610800213 +13 +-409.740279224824 +23 +-835.312382272912 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-409.740279224824 +20 +-835.312382272912 +30 +1614.7610800213 +11 +-441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +-303.914386430124 +22 +-733.714233519903 +32 +1614.7610800213 +13 +-303.914386430124 +23 +-733.714233519903 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-409.740279224824 +20 +-835.312382272912 +30 +1614.7610800213 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +-357.552241131723 +22 +-863.207469797099 +32 +1614.7610800213 +13 +-357.552241131723 +23 +-863.207469797099 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-357.552241131723 +20 +-863.207469797099 +30 +1614.7610800213 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +-323.520317681463 +22 +-873.530940912515 +32 +1614.7610800213 +13 +-323.520317681463 +23 +-873.530940912515 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-323.520317681463 +20 +-873.530940912515 +30 +1614.7610800213 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +-233.261861972698 +22 +-900.910544119288 +32 +1614.7610800213 +13 +-233.261861972698 +23 +-900.910544119288 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-233.261861972698 +20 +-900.910544119288 +30 +1614.7610800213 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +-154.93421062823 +22 +-778.906875772646 +32 +1614.7610800213 +13 +-154.93421062823 +23 +-778.906875772646 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-233.261861972698 +20 +-900.910544119288 +30 +1614.7610800213 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +-182.278551827737 +22 +-916.376162171087 +32 +1614.7610800213 +13 +-182.278551827737 +23 +-916.376162171087 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-182.278551827737 +20 +-916.376162171087 +30 +1614.7610800213 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +-141.006394822338 +22 +-920.441114834126 +32 +1614.7610800213 +13 +-141.006394822338 +23 +-920.441114834126 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-141.006394822338 +20 +-920.441114834126 +30 +1614.7610800213 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +0.0 +22 +-794.166563605455 +32 +1614.7610800213 +13 +0.0 +23 +-794.166563605455 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-141.006394822338 +20 +-920.441114834126 +30 +1614.7610800213 +11 +0.0 +21 +-794.166563605455 +31 +1614.7610800213 +12 +-47.1482966446679 +22 +-929.685330640079 +32 +1614.7610800213 +13 +-47.1482966446679 +23 +-929.685330640079 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-47.1482966446679 +20 +-929.685330640079 +30 +1614.7610800213 +11 +0.0 +21 +-794.166563605455 +31 +1614.7610800213 +12 +1.80477854883065e-13 +22 +-934.329032542513 +32 +1614.7610800213 +13 +1.80477854883065e-13 +23 +-934.329032542513 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-934.329032542513 +30 +1614.7610800213 +11 +0.0 +21 +-794.166563605455 +31 +1614.7610800213 +12 +154.93421062823 +22 +-778.906875772646 +32 +1614.7610800213 +13 +154.93421062823 +23 +-778.906875772646 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-934.329032542513 +30 +1614.7610800213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +47.1483359530928 +22 +-929.685326768537 +32 +1614.7610800213 +13 +47.1483359530928 +23 +-929.685326768537 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +47.1483359530928 +20 +-929.685326768537 +30 +1614.7610800213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +141.006388747634 +22 +-920.441115432432 +32 +1614.7610800213 +13 +141.006388747634 +23 +-920.441115432432 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +141.006388747634 +20 +-920.441115432432 +30 +1614.7610800213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +182.278551827736 +22 +-916.376162171087 +32 +1614.7610800213 +13 +182.278551827736 +23 +-916.376162171087 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +182.278551827736 +20 +-916.376162171087 +30 +1614.7610800213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +303.914386430124 +22 +-733.714233519903 +32 +1614.7610800213 +13 +303.914386430124 +23 +-733.714233519903 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +182.278551827736 +20 +-916.376162171087 +30 +1614.7610800213 +11 +303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +233.261898600639 +22 +-900.910533008324 +32 +1614.7610800213 +13 +233.261898600639 +23 +-900.910533008324 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +233.261898600639 +20 +-900.910533008324 +30 +1614.7610800213 +11 +303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +323.520353196241 +22 +-873.530930139225 +32 +1614.7610800213 +13 +323.520353196241 +23 +-873.530930139225 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +323.520353196241 +20 +-873.530930139225 +30 +1614.7610800213 +11 +303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +441.215302798659 +22 +-660.325364744672 +32 +1614.7610800213 +13 +441.215302798659 +23 +-660.325364744672 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +323.520353196241 +20 +-873.530930139225 +30 +1614.7610800213 +11 +441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +357.552241131722 +22 +-863.2074697971 +32 +1614.7610800213 +13 +357.552241131722 +23 +-863.2074697971 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +357.552241131722 +20 +-863.2074697971 +30 +1614.7610800213 +11 +441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +409.740310523407 +22 +-835.312365543471 +32 +1614.7610800213 +13 +409.740310523407 +23 +-835.312365543471 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +409.740310523407 +20 +-835.312365543471 +30 +1614.7610800213 +11 +441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +492.936358899678 +22 +-790.843151219254 +32 +1614.7610800213 +13 +492.936358899678 +23 +-790.843151219254 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +492.936358899678 +20 +-790.843151219254 +30 +1614.7610800213 +11 +441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +561.560562517035 +22 +-561.560562517035 +32 +1614.7610800213 +13 +561.560562517035 +23 +-561.560562517035 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +492.936358899678 +20 +-790.843151219254 +30 +1614.7610800213 +11 +561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +519.085398326623 +22 +-776.866198451135 +32 +1614.7610800213 +13 +519.085398326623 +23 +-776.866198451135 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +519.085398326623 +20 +-776.866198451135 +30 +1614.7610800213 +11 +561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +569.38577628374 +22 +-735.585745091064 +32 +1614.7610800213 +13 +569.38577628374 +23 +-735.585745091064 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +569.38577628374 +20 +-735.585745091064 +30 +1614.7610800213 +11 +561.560562517035 +21 +-561.560562517035 +31 +1614.7610800213 +12 +660.325364744673 +22 +-441.215302798659 +32 +1614.7610800213 +13 +660.325364744673 +23 +-441.215302798659 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +569.38577628374 +20 +-735.585745091064 +30 +1614.7610800213 +11 +660.325364744673 +21 +-441.215302798659 +31 +1614.7610800213 +12 +642.325276783758 +22 +-675.725844017062 +32 +1614.7610800213 +13 +642.325276783758 +23 +-675.725844017062 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +642.325276783758 +20 +-675.725844017062 +30 +1614.7610800213 +11 +660.325364744673 +21 +-441.215302798659 +31 +1614.7610800213 +12 +660.670394770277 +22 +-660.670394770277 +32 +1614.7610800213 +13 +660.670394770277 +23 +-660.670394770277 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +660.670394770277 +20 +-660.670394770277 +30 +1614.7610800213 +11 +660.325364744673 +21 +-441.215302798659 +31 +1614.7610800213 +12 +733.714233519903 +22 +-303.914386430124 +32 +1614.7610800213 +13 +733.714233519903 +23 +-303.914386430124 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +660.670394770277 +20 +-660.670394770277 +30 +1614.7610800213 +11 +733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +705.689442544718 +22 +-605.814526338507 +32 +1614.7610800213 +13 +705.689442544718 +23 +-605.814526338507 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +705.689442544718 +20 +-605.814526338507 +30 +1614.7610800213 +11 +733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +765.568628348261 +22 +-532.851527327553 +32 +1614.7610800213 +13 +765.568628348261 +23 +-532.851527327553 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +765.568628348261 +20 +-532.851527327553 +30 +1614.7610800213 +11 +733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +778.906875772646 +22 +-154.93421062823 +32 +1614.7610800213 +13 +778.906875772646 +23 +-154.93421062823 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +765.568628348261 +20 +-532.851527327553 +30 +1614.7610800213 +11 +778.906875772646 +21 +-154.93421062823 +31 +1614.7610800213 +12 +776.866198451135 +22 +-519.085398326623 +32 +1614.7610800213 +13 +776.866198451135 +23 +-519.085398326623 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +776.866198451135 +20 +-519.085398326623 +30 +1614.7610800213 +11 +778.906875772646 +21 +-154.93421062823 +31 +1614.7610800213 +12 +813.09562491145 +22 +-451.304908784773 +32 +1614.7610800213 +13 +813.09562491145 +23 +-451.304908784773 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +813.09562491145 +20 +-451.304908784773 +30 +1614.7610800213 +11 +778.906875772646 +21 +-154.93421062823 +31 +1614.7610800213 +12 +794.166563605455 +22 +1.80477854883065e-13 +32 +1614.7610800213 +13 +794.166563605455 +23 +1.80477854883065e-13 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +813.09562491145 +20 +-451.304908784773 +30 +1614.7610800213 +11 +794.166563605455 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +934.329032542513 +22 +1.80477854883065e-13 +32 +1614.7610800213 +13 +934.329032542513 +23 +1.80477854883065e-13 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +813.09562491145 +20 +-451.304908784773 +30 +1614.7610800213 +11 +934.329032542513 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +857.607805708123 +22 +-368.02847579242 +32 +1614.7610800213 +13 +857.607805708123 +23 +-368.02847579242 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +857.607805708123 +20 +-368.02847579242 +30 +1614.7610800213 +11 +934.329032542513 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +863.207469797099 +22 +-357.552241131722 +32 +1614.7610800213 +13 +863.207469797099 +23 +-357.552241131722 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +863.207469797099 +20 +-357.552241131722 +30 +1614.7610800213 +11 +934.329032542513 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +887.227327057414 +22 +-278.369383502706 +32 +1614.7610800213 +13 +887.227327057414 +23 +-278.369383502706 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +887.227327057414 +20 +-278.369383502706 +30 +1614.7610800213 +11 +934.329032542513 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +914.651020925795 +22 +-187.965580361484 +32 +1614.7610800213 +13 +914.651020925795 +23 +-187.965580361484 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +914.651020925795 +20 +-187.965580361484 +30 +1614.7610800213 +11 +934.329032542513 +21 +1.80477854883065e-13 +31 +1614.7610800213 +12 +925.063958273825 +22 +-94.0698777038381 +32 +1614.7610800213 +13 +925.063958273825 +23 +-94.0698777038381 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +914.651020925795 +20 +-187.965580361484 +30 +1614.7610800213 +11 +925.063958273825 +21 +-94.0698777038381 +31 +1614.7610800213 +12 +916.376162171087 +22 +-182.278551827737 +32 +1614.7610800213 +13 +916.376162171087 +23 +-182.278551827737 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +694.940121314314 +20 +-464.344143695271 +30 +738.078199114136 +11 +782.993203577332 +21 +-324.326404167689 +31 +796.153149972084 +12 +704.67526609701 +22 +-470.84895947612 +32 +796.153149972084 +13 +704.67526609701 +23 +-470.84895947612 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +782.993203577332 +20 +-324.326404167689 +30 +796.153149972084 +11 +694.940121314314 +21 +-464.344143695271 +31 +738.078199114136 +12 +772.176090266528 +22 +-319.845809128627 +32 +738.078199114136 +13 +772.176090266528 +23 +-319.845809128627 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-303.914386430124 +20 +-733.714233519903 +30 +1614.7610800213 +11 +-389.246833055444 +21 +-793.533661525914 +31 +1427.8983600213 +12 +-339.669019965462 +22 +-820.033554718597 +32 +1427.8983600213 +13 +-339.669019965462 +23 +-820.033554718597 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-389.246833055444 +20 +-793.533661525914 +30 +1427.8983600213 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +-468.281766857471 +22 +-751.288609279597 +32 +1427.8983600213 +13 +-468.281766857471 +23 +-751.288609279597 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-468.281766857471 +20 +-751.288609279597 +30 +1427.8983600213 +11 +-441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +-493.122985245198 +22 +-738.010701420772 +32 +1427.8983600213 +13 +-493.122985245198 +23 +-738.010701420772 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-441.215302798659 +20 +-660.325364744672 +30 +1614.7610800213 +11 +-468.281766857471 +21 +-751.288609279597 +31 +1427.8983600213 +12 +-303.914386430124 +22 +-733.714233519903 +32 +1614.7610800213 +13 +-303.914386430124 +23 +-733.714233519903 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +30.354884250617 +20 +-1076.33078010212 +30 +2066.4699823381 +11 +35.9517814413358 +21 +-976.024878397508 +31 +2059.65014337886 +12 +35.9517814413365 +22 +-1076.35666734212 +32 +2059.65014337885 +13 +35.9517814413365 +23 +-1076.35666734212 +33 +2059.65014337885 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +35.9517814413358 +20 +-976.024878397508 +30 +2059.65014337886 +11 +30.354884250617 +21 +-1076.33078010212 +31 +2066.4699823381 +12 +30.354884250617 +22 +-976.1678863314 +32 +2066.4699823381 +13 +30.354884250617 +23 +-976.1678863314 +33 +2066.4699823381 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +23.5350452913725 +20 +-976.504549306342 +30 +2072.06687952882 +11 +30.354884250617 +21 +-1076.33078010212 +31 +2066.4699823381 +12 +23.5350452913723 +22 +-1076.52883438997 +32 +2072.06687952882 +13 +23.5350452913723 +23 +-1076.52883438997 +33 +2072.06687952882 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +30.354884250617 +20 +-1076.33078010212 +30 +2066.4699823381 +11 +23.5350452913725 +21 +-976.504549306342 +31 +2072.06687952882 +12 +30.354884250617 +22 +-976.1678863314 +32 +2066.4699823381 +13 +30.354884250617 +23 +-976.1678863314 +33 +2066.4699823381 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-758.928832717995 +20 +-874.671572316599 +30 +1963.87063213502 +11 +-785.140115231108 +21 +-848.157192786392 +31 +1978.73092447164 +12 +-801.544845731016 +22 +-831.814429411314 +32 +1978.70958937363 +13 +-801.544845731016 +23 +-831.814429411314 +33 +1978.70958937363 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-785.140115231108 +20 +-848.157192786392 +30 +1978.73092447164 +11 +-758.928832717995 +21 +-874.671572316599 +31 +1963.87063213502 +12 +-741.432257601186 +22 +-891.447302299009 +32 +1988.14599297097 +13 +-741.432257601186 +23 +-891.447302299009 +33 +1988.14599297097 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-785.140115231108 +20 +-848.157192786392 +30 +1978.73092447164 +11 +-741.432257601186 +21 +-891.447302299009 +31 +1988.14599297097 +12 +-769.870311262695 +22 +-863.130130350016 +32 +1987.61043910797 +13 +-769.870311262695 +23 +-863.130130350016 +33 +1987.61043910797 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-769.870311262695 +20 +-863.130130350016 +30 +1987.61043910797 +11 +-741.432257601186 +21 +-891.447302299009 +31 +1988.14599297097 +12 +-758.060123058849 +22 +-874.453748088142 +32 +2003.99630767223 +13 +-758.060123058849 +23 +-874.453748088142 +33 +2003.99630767223 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-758.060123058849 +20 +-874.453748088142 +30 +2003.99630767223 +11 +-741.432257601186 +21 +-891.447302299009 +31 +1988.14599297097 +12 +-731.724734127308 +22 +-900.26267972249 +32 +2019.84617451401 +13 +-731.724734127308 +23 +-900.26267972249 +33 +2019.84617451401 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-758.060123058849 +20 +-874.453748088142 +30 +2003.99630767223 +11 +-731.724734127308 +21 +-900.26267972249 +31 +2019.84617451401 +12 +-751.507544713982 +22 +-880.404127848991 +32 +2025.39393021379 +13 +-751.507544713982 +23 +-880.404127848991 +33 +2025.39393021379 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-751.507544713982 +20 +-880.404127848991 +30 +2025.39393021379 +11 +-731.724734127308 +21 +-900.26267972249 +31 +2019.84617451401 +12 +-731.284144746345 +22 +-899.775643285913 +32 +2054.14511148709 +13 +-731.284144746345 +23 +-899.775643285913 +33 +2054.14511148709 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-751.507544713982 +20 +-880.404127848991 +30 +2025.39393021379 +11 +-731.284144746345 +21 +-899.775643285913 +31 +2054.14511148709 +12 +-751.210146881832 +22 +-880.075378254302 +32 +2048.54571267062 +13 +-751.210146881832 +23 +-880.075378254302 +33 +2048.54571267062 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-751.210146881832 +20 +-880.075378254302 +30 +2048.54571267062 +11 +-731.284144746345 +21 +-899.775643285913 +31 +2054.14511148709 +12 +-757.213205686422 +22 +-873.517548449742 +32 +2069.9270060351 +13 +-757.213205686422 +23 +-873.517548449742 +33 +2069.9270060351 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-757.213205686422 +20 +-873.517548449742 +30 +2069.9270060351 +11 +-731.284144746345 +21 +-899.775643285913 +31 +2054.14511148709 +12 +-740.177565197592 +22 +-890.060339871748 +32 +2085.82110165668 +13 +-740.177565197592 +23 +-890.060339871748 +33 +2085.82110165668 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-757.213205686422 +20 +-873.517548449742 +30 +2069.9270060351 +11 +-740.177565197592 +21 +-890.060339871748 +31 +2085.82110165668 +12 +-768.602809842621 +22 +-861.72900857618 +32 +2086.28270221439 +13 +-768.602809842621 +23 +-861.72900857618 +33 +2086.28270221439 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-768.602809842621 +20 +-861.72900857618 +30 +2086.28270221439 +11 +-740.177565197592 +21 +-890.060339871748 +31 +2085.82110165668 +12 +-757.051052836406 +22 +-872.59583635536 +32 +2110.05176266305 +13 +-757.051052836406 +23 +-872.59583635536 +33 +2110.05176266305 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-768.602809842621 +20 +-861.72900857618 +30 +2086.28270221439 +11 +-757.051052836406 +21 +-872.59583635536 +31 +2110.05176266305 +12 +-783.644995364665 +22 +-846.504456965985 +32 +2095.12279472996 +13 +-783.644995364665 +23 +-846.504456965985 +33 +2095.12279472996 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-783.644995364665 +20 +-846.504456965985 +30 +2095.12279472996 +11 +-757.051052836406 +21 +-872.59583635536 +31 +2110.05176266305 +12 +-826.261008377686 +22 +-803.647314060702 +32 +2109.96175196855 +13 +-826.261008377686 +23 +-803.647314060702 +33 +2109.96175196855 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +-826.261008377686 +20 +-803.647314060702 +30 +2109.96175196855 +11 +-757.051052836406 +21 +-872.59583635536 +31 +2110.05176266305 +12 +-803.639076572628 +22 +-825.829443784589 +32 +2123.11658846682 +13 +-803.639076572628 +23 +-825.829443784589 +33 +2123.11658846682 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-803.639076572628 +20 +-825.829443784589 +30 +2123.11658846682 +11 +-757.051052836406 +21 +-872.59583635536 +31 +2110.05176266305 +12 +-779.335772128321 +22 +-850.040945080999 +32 +2123.14819601944 +13 +-779.335772128321 +23 +-850.040945080999 +33 +2123.14819601944 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-781.550764523053 +20 +-852.489442592712 +30 +1950.71579563676 +11 +-828.138788259274 +21 +-805.723050021943 +31 +1963.78062144053 +12 +-805.85406896736 +22 +-828.277941296301 +32 +1950.68418808414 +13 +-805.85406896736 +23 +-828.277941296301 +33 +1950.68418808414 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-828.138788259274 +20 +-805.723050021943 +30 +1963.78062144053 +11 +-781.550764523053 +21 +-852.489442592712 +31 +1950.71579563676 +12 +-758.928832717995 +22 +-874.671572316599 +32 +1963.87063213502 +13 +-758.928832717995 +23 +-874.671572316599 +33 +1963.87063213502 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-828.138788259274 +20 +-805.723050021943 +30 +1963.78062144053 +11 +-758.928832717995 +21 +-874.671572316599 +31 +1963.87063213502 +12 +-845.012275898089 +22 +-788.258546505553 +32 +1988.01128244689 +13 +-845.012275898089 +23 +-788.258546505553 +33 +1988.01128244689 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-845.012275898089 +20 +-788.258546505553 +30 +1988.01128244689 +11 +-758.928832717995 +21 +-874.671572316599 +31 +1963.87063213502 +12 +-801.544845731016 +22 +-831.814429411314 +32 +1978.70958937363 +13 +-801.544845731016 +23 +-831.814429411314 +33 +1978.70958937363 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +-845.012275898089 +20 +-788.258546505553 +30 +1988.01128244689 +11 +-801.544845731016 +21 +-831.814429411314 +31 +1978.70958937363 +12 +-816.587031253059 +22 +-816.589877801121 +32 +1987.54968188919 +13 +-816.587031253059 +23 +-816.589877801121 +33 +1987.54968188919 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-845.012275898089 +20 +-788.258546505553 +30 +1988.01128244689 +11 +-816.587031253059 +21 +-816.589877801121 +31 +1987.54968188919 +12 +-827.976635409257 +22 +-804.801337927561 +32 +2003.90537806848 +13 +-827.976635409257 +23 +-804.801337927561 +33 +2003.90537806848 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-845.012275898089 +20 +-788.258546505553 +30 +1988.01128244689 +11 +-827.976635409257 +21 +-804.801337927561 +31 +2003.90537806848 +12 +-853.905696349335 +22 +-778.54324309139 +32 +2019.68727261649 +13 +-853.905696349335 +23 +-778.54324309139 +33 +2019.68727261649 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-853.905696349335 +20 +-778.54324309139 +30 +2019.68727261649 +11 +-827.976635409257 +21 +-804.801337927561 +31 +2003.90537806848 +12 +-833.979694213849 +22 +-798.243508123 +32 +2025.28667143296 +13 +-833.979694213849 +23 +-798.243508123 +33 +2025.28667143296 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-853.905696349335 +20 +-778.54324309139 +30 +2019.68727261649 +11 +-833.979694213849 +21 +-798.243508123 +31 +2025.28667143296 +12 +-853.465106968372 +22 +-778.056206654812 +32 +2053.98620958956 +13 +-853.465106968372 +23 +-778.056206654812 +33 +2053.98620958956 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-853.465106968372 +20 +-778.056206654812 +30 +2053.98620958956 +11 +-833.979694213849 +21 +-798.243508123 +31 +2025.28667143296 +12 +-833.682296381699 +22 +-797.91475852831 +32 +2048.43845388979 +13 +-833.682296381699 +23 +-797.91475852831 +33 +2048.43845388979 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-853.465106968372 +20 +-778.056206654812 +30 +2053.98620958956 +11 +-833.682296381699 +21 +-797.91475852831 +31 +2048.43845388979 +12 +-827.129718036832 +22 +-803.86513828916 +32 +2069.83607643134 +13 +-827.129718036832 +23 +-803.86513828916 +33 +2069.83607643134 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-853.465106968372 +20 +-778.056206654812 +30 +2053.98620958956 +11 +-827.129718036832 +21 +-803.86513828916 +31 +2069.83607643134 +12 +-843.757583494495 +22 +-786.871584078293 +32 +2085.68639113261 +13 +-843.757583494495 +23 +-786.871584078293 +33 +2085.68639113261 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-843.757583494495 +20 +-786.871584078293 +30 +2085.68639113261 +11 +-827.129718036832 +21 +-803.86513828916 +31 +2069.83607643134 +12 +-815.319529832985 +22 +-815.188756027286 +32 +2086.22194499561 +13 +-815.319529832985 +23 +-815.188756027286 +33 +2086.22194499561 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-843.757583494495 +20 +-786.871584078293 +30 +2085.68639113261 +11 +-815.319529832985 +21 +-815.188756027286 +31 +2086.22194499561 +12 +-826.261008377686 +22 +-803.647314060702 +32 +2109.96175196855 +13 +-826.261008377686 +23 +-803.647314060702 +33 +2109.96175196855 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-826.261008377686 +20 +-803.647314060702 +30 +2109.96175196855 +11 +-815.319529832985 +21 +-815.188756027286 +31 +2086.22194499561 +12 +-800.049725864573 +22 +-830.16169359091 +32 +2095.10145963194 +13 +-800.049725864573 +23 +-830.16169359091 +33 +2095.10145963194 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-826.261008377686 +20 +-803.647314060702 +30 +2109.96175196855 +11 +-800.049725864573 +21 +-830.16169359091 +31 +2095.10145963194 +12 +-783.644995364665 +22 +-846.504456965985 +32 +2095.12279472996 +13 +-783.644995364665 +23 +-846.504456965985 +33 +2095.12279472996 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-45.6079918995534 +20 +-975.978478371127 +30 +2025.86697911698 +11 +-46.4727423170739 +21 +-1075.39138200091 +31 +2034.64693744883 +12 +-45.6079918995535 +22 +-1075.47655248308 +32 +2025.86697911698 +13 +-45.6079918995535 +23 +-1075.47655248308 +33 +2025.86697911698 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-46.4727423170739 +20 +-1075.39138200091 +30 +2034.64693744883 +11 +-45.6079918995534 +21 +-975.978478371127 +31 +2025.86697911698 +12 +-46.4727423170739 +22 +-976.418879754098 +32 +2034.64693744883 +13 +-46.4727423170739 +23 +-976.418879754098 +33 +2034.64693744883 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-1011.8021195433 +30 +2078.49259033054 +11 +653.750224578544 +21 +-1016.06585313728 +31 +2035.20217666346 +12 +180.675224578544 +22 +-1016.06585313728 +32 +2035.20217666346 +13 +180.675224578544 +23 +-1016.06585313728 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1016.06585313728 +30 +2035.20217666346 +11 +180.675224578544 +21 +-1011.8021195433 +31 +2078.49259033054 +12 +653.750224578544 +22 +-1011.8021195433 +32 +2078.49259033054 +13 +653.750224578544 +23 +-1011.8021195433 +33 +2078.49259033054 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-966.763694030251 +30 +1862.60499591753 +11 +406.150722558891 +21 +-980.534582769308 +31 +1879.38487239655 +12 +422.745208264425 +22 +-966.763694030251 +32 +1862.60499591753 +13 +422.745208264425 +23 +-966.763694030251 +33 +1862.60499591753 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +406.150722558891 +20 +-980.534582769308 +30 +1879.38487239655 +11 +653.750224578544 +21 +-966.763694030251 +31 +1862.60499591753 +12 +653.750224578544 +22 +-997.119327169824 +32 +1899.59344191956 +13 +653.750224578544 +23 +-997.119327169824 +33 +1899.59344191956 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +406.150722558891 +20 +-980.534582769308 +30 +1879.38487239655 +11 +653.750224578544 +21 +-997.119327169824 +31 +1899.59344191956 +12 +369.41031965462 +22 +-997.119327169824 +32 +1899.59344191956 +13 +369.41031965462 +23 +-997.119327169824 +33 +1899.59344191956 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-841.785968318108 +30 +1795.80300977859 +11 +600.307476319437 +21 +-841.785968318108 +31 +1795.80300977859 +12 +653.750224578543 +22 +-795.278099285779 +32 +1791.22238449044 +13 +653.750224578543 +23 +-795.278099285779 +33 +1791.22238449044 +70 +0 + 0 +3DFACE + 8 +body_half_outside +10 +15.754347150196 +20 +-977.021929553012 +30 +2076.22574933075 +11 +7.31179769318775 +21 +-1077.55800963197 +31 +2078.78676870972 +12 +7.31179769318775 +22 +-977.70014443868 +32 +2078.78676870972 +13 +7.31179769318775 +23 +-977.70014443868 +33 +2078.78676870972 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +7.31179769318775 +20 +-1077.55800963197 +30 +2078.78676870972 +11 +15.754347150196 +21 +-977.021929553012 +31 +2076.22574933075 +12 +15.754347150196 +22 +-1076.94321909047 +32 +2076.22574933075 +13 +15.754347150196 +23 +-1076.94321909047 +33 +2076.22574933075 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1072.40303302985 +30 +2148.21162800104 +11 +-1.4681606386561 +21 +-1078.06037755542 +31 +2079.65151912724 +12 +1.80477854883065e-13 +22 +-1078.21721573187 +32 +2079.50691792559 +13 +1.80477854883065e-13 +23 +-1078.21721573187 +33 +2079.50691792559 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-38.8881027186488 +20 +-1076.06746493881 +30 +2059.65014337885 +11 +-210.691411720441 +21 +-1059.21725479392 +31 +2058.8118770109 +12 +-39.3361654272124 +22 +-1076.09427347395 +32 +2058.8118770109 +13 +-39.3361654272124 +23 +-1076.09427347395 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +-38.8881027186488 +21 +-1076.06746493881 +31 +2059.65014337885 +12 +-209.215453044867 +22 +-1051.79710945546 +32 +2148.21162800104 +13 +-209.215453044867 +23 +-1051.79710945546 +33 +2148.21162800104 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +-38.8881027186488 +21 +-1076.06746493881 +31 +2059.65014337885 +12 +-33.2912055279292 +22 +-1076.04157769881 +32 +2066.4699823381 +13 +-33.2912055279292 +23 +-1076.04157769881 +33 +2066.4699823381 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +-33.2912055279292 +21 +-1076.04157769881 +31 +2066.4699823381 +12 +-26.4713665686845 +22 +-1076.23963198666 +32 +2072.06687952882 +13 +-26.4713665686845 +23 +-1076.23963198666 +33 +2072.06687952882 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +-26.4713665686845 +21 +-1076.23963198666 +31 +2072.06687952882 +12 +-18.690668427508 +22 +-1076.65401668716 +32 +2076.22574933075 +13 +-18.690668427508 +23 +-1076.65401668716 +33 +2076.22574933075 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +-18.690668427508 +21 +-1076.65401668716 +31 +2076.22574933075 +12 +-10.2481189705 +22 +-1077.26880722866 +32 +2078.78676870972 +13 +-10.2481189705 +23 +-1077.26880722866 +33 +2078.78676870972 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +-10.2481189705 +21 +-1077.26880722866 +31 +2078.78676870972 +12 +-1.4681606386561 +22 +-1078.06037755542 +32 +2079.65151912724 +13 +-1.4681606386561 +23 +-1078.06037755542 +33 +2079.65151912724 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +-1.4681606386561 +21 +-1078.06037755542 +31 +2079.65151912724 +12 +1.80477854883065e-13 +22 +-1072.40303302985 +32 +2148.21162800104 +13 +1.80477854883065e-13 +23 +-1072.40303302985 +33 +2148.21162800104 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-761.987076679027 +20 +-753.814953035805 +30 +1922.19277204157 +11 +-738.20854961057 +21 +-738.20854961057 +31 +1812.39759571907 +12 +-757.858868059522 +22 +-757.858868059522 +32 +1919.76361420147 +13 +-757.858868059522 +23 +-757.858868059522 +33 +1919.76361420147 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-738.20854961057 +20 +-738.20854961057 +30 +1812.39759571907 +11 +-761.987076679027 +21 +-753.814953035805 +31 +1922.19277204157 +12 +-891.670534105406 +22 +-595.795202951324 +32 +1922.19277204157 +13 +-891.670534105406 +23 +-595.795202951324 +33 +1922.19277204157 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-738.20854961057 +20 +-738.20854961057 +30 +1812.39759571907 +11 +-891.670534105406 +21 +-595.795202951324 +31 +1922.19277204157 +12 +-868.04142298445 +22 +-580.00673566728 +32 +1812.39759571907 +13 +-868.04142298445 +23 +-580.00673566728 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-794.166563605455 +30 +1614.7610800213 +11 +-44.7901031548271 +21 +-883.186483489224 +31 +1427.8983600213 +12 +1.80477854883065e-13 +22 +-887.597923605455 +32 +1427.8983600213 +13 +1.80477854883065e-13 +23 +-887.597923605455 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-44.7901031548271 +20 +-883.186483489224 +30 +1427.8983600213 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +-173.161764737035 +22 +-870.542978388701 +32 +1427.8983600213 +13 +-173.161764737035 +23 +-870.542978388701 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-154.93421062823 +20 +-778.906875772646 +30 +1614.7610800213 +11 +-44.7901031548271 +21 +-883.186483489224 +31 +1427.8983600213 +12 +0.0 +22 +-794.166563605455 +32 +1614.7610800213 +13 +0.0 +23 +-794.166563605455 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-747.450883605455 +30 +1427.8983600213 +11 +-164.047987682633 +21 +-824.724927080674 +31 +1241.03564002131 +12 +0.0 +22 +-840.882243605455 +32 +1241.03564002131 +13 +0.0 +23 +-840.882243605455 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +1241.03564002131 +11 +0.0 +21 +-747.450883605455 +31 +1427.8983600213 +12 +-145.820433573828 +22 +-733.088824464619 +32 +1427.8983600213 +13 +-145.820433573828 +23 +-733.088824464619 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-702.965588161926 +20 +-809.153241506708 +30 +1972.08037046597 +11 +-746.546206077474 +21 +-772.245716838241 +31 +1961.59984211439 +12 +-723.636295253065 +22 +-790.983771266745 +32 +1961.01586348506 +13 +-723.636295253065 +23 +-790.983771266745 +33 +1961.01586348506 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-746.546206077474 +20 +-772.245716838241 +30 +1961.59984211439 +11 +-702.965588161926 +21 +-809.153241506708 +31 +1972.08037046597 +12 +-761.145931803741 +22 +-761.14593180374 +32 +1969.69450846846 +13 +-761.145931803741 +23 +-761.14593180374 +33 +1969.69450846846 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-761.145931803741 +20 +-761.14593180374 +30 +1969.69450846846 +11 +-702.965588161926 +21 +-809.153241506708 +31 +1972.08037046597 +12 +-763.653083482914 +22 +-763.653083482914 +32 +2011.5925230317 +13 +-763.653083482914 +23 +-763.653083482914 +33 +2011.5925230317 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-763.653083482914 +20 +-763.653083482914 +30 +2011.5925230317 +11 +-702.965588161926 +21 +-809.153241506708 +31 +1972.08037046597 +12 +-687.957452549297 +22 +-823.760435027841 +32 +1993.10258668608 +13 +-687.957452549297 +23 +-823.760435027841 +33 +1993.10258668608 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-763.653083482914 +20 +-763.653083482914 +30 +2011.5925230317 +11 +-687.957452549297 +21 +-823.760435027841 +31 +1993.10258668608 +12 +-683.329149560927 +22 +-829.573232448602 +32 +2011.5925230317 +13 +-683.329149560927 +23 +-829.573232448602 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1043.98454271904 +30 +2258.00680432354 +11 +-209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +1.80477854883065e-13 +22 +-1072.40303302985 +32 +2148.21162800104 +13 +1.80477854883065e-13 +23 +-1072.40303302985 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +1.80477854883065e-13 +21 +-1043.98454271904 +31 +2258.00680432354 +12 +-203.671280618918 +22 +-1023.92467246733 +32 +2258.00680432354 +13 +-203.671280618918 +23 +-1023.92467246733 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-712.200510303116 +20 +-793.069743896677 +30 +1912.98147661467 +11 +-758.928832717995 +21 +-874.671572316599 +31 +1963.87063213502 +12 +-781.550764523053 +22 +-852.489442592712 +32 +1950.71579563676 +13 +-781.550764523053 +23 +-852.489442592712 +33 +1950.71579563676 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-758.928832717995 +20 +-874.671572316599 +30 +1963.87063213502 +11 +-712.200510303116 +21 +-793.069743896677 +31 +1912.98147661467 +12 +-697.04031921187 +22 +-808.580814515394 +32 +1922.19277204157 +13 +-697.04031921187 +23 +-808.580814515394 +33 +1922.19277204157 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-758.928832717995 +20 +-874.671572316599 +30 +1963.87063213502 +11 +-697.04031921187 +21 +-808.580814515394 +31 +1922.19277204157 +12 +-679.407718084958 +22 +-824.046894149155 +32 +1931.32901160226 +13 +-679.407718084958 +23 +-824.046894149155 +33 +1931.32901160226 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1078.12323678805 +30 +1989.78695697206 +11 +-1.4681606386561 +21 +-978.157451656943 +31 +1989.64235577041 +12 +-1.4681606386561 +22 +-1077.9663986116 +32 +1989.64235577041 +13 +-1.4681606386561 +23 +-1077.9663986116 +33 +1989.64235577041 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1.4681606386561 +20 +-978.157451656943 +30 +1989.64235577041 +11 +1.80477854883065e-13 +21 +-1078.12323678805 +31 +1989.78695697206 +12 +0.0 +22 +-978.310708745151 +32 +1989.78695697206 +13 +0.0 +23 +-978.310708745151 +33 +1989.78695697206 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-978.310708745151 +30 +1989.78695697206 +11 +1.80477854883065e-13 +21 +-1078.12323678805 +31 +1989.78695697206 +12 +7.31179769318757 +22 +-977.633667953296 +32 +1990.50710618793 +13 +7.31179769318757 +23 +-977.633667953296 +33 +1990.50710618793 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +7.31179769318757 +20 +-977.633667953296 +30 +1990.50710618793 +11 +1.80477854883065e-13 +21 +-1078.12323678805 +31 +1989.78695697206 +12 +7.31179769318775 +22 +-1077.46403068815 +32 +1990.50710618793 +13 +7.31179769318775 +23 +-1077.46403068815 +33 +1990.50710618793 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +660.670394770277 +20 +-660.670394770277 +30 +2455.6433200213 +11 +554.192057578438 +21 +-829.407026995336 +31 +2361.46489814399 +12 +705.352696568272 +22 +-705.352696568272 +32 +2361.46489814399 +13 +705.352696568272 +23 +-705.352696568272 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +554.192057578438 +20 +-829.407026995336 +30 +2361.46489814399 +11 +660.670394770277 +21 +-660.670394770277 +31 +2455.6433200213 +12 +519.085398326623 +22 +-776.866198451135 +32 +2455.6433200213 +13 +519.085398326623 +23 +-776.866198451135 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +519.085398326623 +20 +-776.866198451135 +30 +2455.6433200213 +11 +660.670394770277 +21 +-660.670394770277 +31 +2455.6433200213 +12 +642.325277330117 +22 +-675.725843568677 +32 +2455.6433200213 +13 +642.325277330117 +23 +-675.725843568677 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +519.085398326623 +20 +-776.866198451135 +30 +2455.6433200213 +11 +642.325277330117 +21 +-675.725843568677 +31 +2455.6433200213 +12 +569.3857757708 +22 +-735.585745512023 +32 +2455.6433200213 +13 +569.3857757708 +23 +-735.585745512023 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +891.670534105407 +20 +-595.795202951324 +30 +2148.21162800104 +11 +884.794335210004 +21 +-604.173875548016 +31 +2148.21162800104 +12 +892.684338449561 +22 +-596.472605357118 +32 +2133.80356487023 +13 +892.684338449561 +23 +-596.472605357118 +33 +2133.80356487023 +70 +0 + 0 +3DFACE + 8 +body_half_outside +10 +738.20854961057 +20 +-738.208549610569 +30 +2258.00680432354 +11 +724.871895956044 +21 +-750.87609961724 +31 +2252.83778292244 +12 +739.771130343929 +22 +-739.771130343928 +32 +2249.46912732182 +13 +739.771130343929 +23 +-739.771130343928 +33 +2249.46912732182 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +724.871895956044 +20 +-750.87609961724 +30 +2252.83778292244 +11 +738.20854961057 +21 +-738.208549610569 +31 +2258.00680432354 +12 +670.391151613542 +22 +-794.16651328432 +32 +2257.10151651642 +13 +670.391151613542 +23 +-794.16651328432 +33 +2257.10151651642 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +670.391151613542 +20 +-794.16651328432 +30 +2257.10151651642 +11 +653.750224578544 +21 +-807.521705673266 +31 +2258.00680432354 +12 +653.750224578544 +22 +-808.286792264463 +32 +2255.71079042387 +13 +653.750224578544 +23 +-808.286792264463 +33 +2255.71079042387 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-807.521705673266 +30 +2258.00680432354 +11 +670.391151613542 +21 +-794.16651328432 +31 +2257.10151651642 +12 +738.20854961057 +22 +-738.208549610569 +32 +2258.00680432354 +13 +738.20854961057 +23 +-738.208549610569 +33 +2258.00680432354 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-644.006839982028 +20 +-861.844217926399 +30 +2011.59252303171 +11 +-731.724734127308 +21 +-900.26267972249 +31 +2019.84617451401 +12 +-643.970452120392 +22 +-861.831591212861 +32 +2011.20252653019 +13 +-643.970452120392 +23 +-861.831591212861 +33 +2011.20252653019 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-731.724734127308 +20 +-900.26267972249 +30 +2019.84617451401 +11 +-644.006839982028 +21 +-861.844217926399 +31 +2011.59252303171 +12 +-644.327893757466 +22 +-861.580735902195 +32 +2058.8118770109 +13 +-644.327893757466 +23 +-861.580735902195 +33 +2058.8118770109 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-731.724734127308 +20 +-900.26267972249 +30 +2019.84617451401 +11 +-644.327893757466 +21 +-861.580735902195 +31 +2058.8118770109 +12 +-731.284144746345 +22 +-899.775643285913 +32 +2054.14511148709 +13 +-731.284144746345 +23 +-899.775643285913 +33 +2054.14511148709 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-731.284144746345 +20 +-899.775643285913 +30 +2054.14511148709 +11 +-644.327893757466 +21 +-861.580735902195 +31 +2058.8118770109 +12 +-644.282480658799 +22 +-861.555930289753 +32 +2059.38164426315 +13 +-644.282480658799 +23 +-861.555930289753 +33 +2059.38164426315 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-399.515588143821 +20 +-964.515951276275 +30 +2258.00680432354 +11 +-595.795202951324 +21 +-891.670534105406 +31 +2148.21162800104 +12 +-410.390873558597 +22 +-990.771212819307 +32 +2148.21162800104 +13 +-410.390873558597 +23 +-990.771212819307 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-595.795202951324 +20 +-891.670534105406 +30 +2148.21162800104 +11 +-399.515588143821 +21 +-964.515951276275 +31 +2258.00680432354 +12 +-580.006735667279 +22 +-868.041422984449 +32 +2258.00680432354 +13 +-580.006735667279 +23 +-868.041422984449 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +704.67526609701 +20 +-470.84895947612 +30 +796.153149972084 +11 +784.574341950659 +21 +-324.981333125909 +31 +855.37186879426 +12 +706.098253038493 +22 +-471.799768952456 +32 +855.37186879426 +13 +706.098253038493 +23 +-471.799768952456 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +784.574341950659 +20 +-324.981333125909 +30 +855.37186879426 +11 +704.67526609701 +21 +-470.84895947612 +31 +796.153149972084 +12 +782.993203577332 +22 +-324.326404167689 +32 +796.153149972084 +13 +782.993203577332 +23 +-324.326404167689 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +772.176090266528 +20 +-319.845809128627 +30 +738.078199114136 +11 +831.221151351825 +21 +-165.340167031437 +31 +796.153149972084 +12 +782.993203577332 +22 +-324.326404167689 +32 +796.153149972084 +13 +782.993203577332 +23 +-324.326404167689 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +831.221151351825 +20 +-165.340167031437 +30 +796.153149972084 +11 +772.176090266528 +21 +-319.845809128627 +31 +738.078199114136 +12 +819.73776511114 +22 +-163.055979488767 +32 +738.078199114136 +13 +819.73776511114 +23 +-163.055979488767 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +40.1106512432667 +21 +-1076.01799327905 +31 +2017.42442965997 +12 +36.9934322066314 +22 +-1076.32501255654 +32 +2011.5925230317 +13 +36.9934322066314 +23 +-1076.32501255654 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +40.1106512432667 +20 +-1076.01799327905 +30 +2017.42442965997 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +210.691411720441 +22 +-1059.21725479392 +32 +2058.8118770109 +13 +210.691411720441 +23 +-1059.21725479392 +33 +2058.8118770109 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +40.1106512432667 +20 +-1076.01799327905 +30 +2017.42442965997 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2058.8118770109 +12 +42.6716706222413 +22 +-1075.76575488639 +32 +2025.86697911698 +13 +42.6716706222413 +23 +-1075.76575488639 +33 +2025.86697911698 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +42.6716706222413 +20 +-1075.76575488639 +30 +2025.86697911698 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2058.8118770109 +12 +43.536421039762 +22 +-1075.68058440422 +32 +2034.64693744883 +13 +43.536421039762 +23 +-1075.68058440422 +33 +2034.64693744883 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +43.536421039762 +20 +-1075.68058440422 +30 +2034.64693744883 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2058.8118770109 +12 +42.6716706222413 +22 +-1075.76575488639 +32 +2043.42689578067 +13 +42.6716706222413 +23 +-1075.76575488639 +33 +2043.42689578067 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +42.6716706222413 +20 +-1075.76575488639 +30 +2043.42689578067 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2058.8118770109 +12 +40.1106512432663 +22 +-1076.01799327905 +32 +2051.86944523768 +13 +40.1106512432663 +23 +-1076.01799327905 +33 +2051.86944523768 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +40.1106512432663 +20 +-1076.01799327905 +30 +2051.86944523768 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2058.8118770109 +12 +36.3998441498995 +22 +-1076.38347587727 +32 +2058.8118770109 +13 +36.3998441498995 +23 +-1076.38347587727 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-833.682296381699 +20 +-797.91475852831 +30 +2048.43845388979 +11 +-781.183382327347 +21 +-739.911027417745 +31 +2076.74494872451 +12 +-827.129718036832 +22 +-803.86513828916 +32 +2069.83607643134 +13 +-827.129718036832 +23 +-803.86513828916 +33 +2069.83607643134 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-781.183382327347 +20 +-739.911027417745 +30 +2076.74494872451 +11 +-833.682296381699 +21 +-797.91475852831 +31 +2048.43845388979 +12 +-786.92474167715 +22 +-735.296194513125 +32 +2058.80750841657 +13 +-786.92474167715 +23 +-735.296194513125 +33 +2058.80750841657 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-786.92474167715 +20 +-735.296194513125 +30 +2058.80750841657 +11 +-833.682296381699 +21 +-797.91475852831 +31 +2048.43845388979 +12 +-789.34285913936 +22 +-732.349614898499 +32 +2049.89434090933 +13 +-789.34285913936 +23 +-732.349614898499 +33 +2049.89434090933 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +1.80477854883065e-13 +21 +-1072.40303302985 +31 +1922.19277204157 +12 +209.215453044867 +22 +-1051.79710945546 +32 +1922.19277204157 +13 +209.215453044867 +23 +-1051.79710945546 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1072.40303302985 +30 +1922.19277204157 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +7.31179769318775 +22 +-1077.46403068815 +32 +1990.50710618793 +13 +7.31179769318775 +23 +-1077.46403068815 +33 +1990.50710618793 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1072.40303302985 +30 +1922.19277204157 +11 +7.31179769318775 +21 +-1077.46403068815 +31 +1990.50710618793 +12 +1.80477854883065e-13 +22 +-1078.12323678805 +32 +1989.78695697206 +13 +1.80477854883065e-13 +23 +-1078.12323678805 +33 +1989.78695697206 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +7.31179769318775 +20 +-1077.46403068815 +30 +1990.50710618793 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +15.754347150196 +22 +-1076.84924014666 +32 +1993.0681255669 +13 +15.754347150196 +23 +-1076.84924014666 +33 +1993.0681255669 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +15.754347150196 +20 +-1076.84924014666 +30 +1993.0681255669 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +23.5350452913723 +22 +-1076.43485544616 +32 +1997.22699536883 +13 +23.5350452913723 +23 +-1076.43485544616 +33 +1997.22699536883 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +23.5350452913723 +20 +-1076.43485544616 +30 +1997.22699536883 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +30.3548842506176 +22 +-1076.23680115831 +32 +2002.82389255955 +13 +30.3548842506176 +23 +-1076.23680115831 +33 +2002.82389255955 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +30.3548842506176 +20 +-1076.23680115831 +30 +2002.82389255955 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +35.9517814413362 +22 +-1076.26268839831 +32 +2009.6437315188 +13 +35.9517814413362 +23 +-1076.26268839831 +33 +2009.6437315188 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +35.9517814413362 +20 +-1076.26268839831 +30 +2009.6437315188 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +36.9934322066314 +22 +-1076.32501255654 +32 +2011.5925230317 +13 +36.9934322066314 +23 +-1076.32501255654 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +-413.286070645571 +21 +-997.760836892423 +31 +2058.8118770109 +12 +-210.691411720441 +22 +-1059.21725479392 +32 +2058.8118770109 +13 +-210.691411720441 +23 +-1059.21725479392 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-413.286070645571 +20 +-997.760836892423 +30 +2058.8118770109 +11 +-209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +-410.390873558597 +22 +-990.771212819307 +32 +2148.21162800104 +13 +-410.390873558597 +23 +-990.771212819307 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-268.159752894786 +20 +-647.394912321209 +30 +1241.03564002131 +11 +-441.215302798659 +21 +-660.325364744672 +31 +1054.1729200213 +12 +-303.914386430124 +22 +-733.714233519903 +32 +1054.1729200213 +13 +-303.914386430124 +23 +-733.714233519903 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-441.215302798659 +20 +-660.325364744672 +30 +1054.1729200213 +11 +-268.159752894786 +21 +-647.394912321209 +31 +1241.03564002131 +12 +-389.307620352121 +22 +-582.640028068573 +32 +1241.03564002131 +13 +-389.307620352121 +23 +-582.640028068573 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +819.73776511114 +20 +-163.055979488767 +30 +738.078199114136 +11 +847.505736434059 +21 +1.80477854883065e-13 +31 +796.153149972084 +12 +831.221151351825 +22 +-165.340167031437 +32 +796.153149972084 +13 +831.221151351825 +23 +-165.340167031437 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +847.505736434059 +20 +1.80477854883065e-13 +30 +796.153149972084 +11 +819.73776511114 +21 +-163.055979488767 +31 +738.078199114136 +12 +835.797377356766 +22 +1.80477854883065e-13 +32 +738.078199114136 +13 +835.797377356766 +23 +1.80477854883065e-13 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +914.026066884025 +11 +-127.592879465023 +21 +-641.452721848564 +31 +1054.1729200213 +12 +-164.047987682633 +22 +-824.724927080674 +32 +914.026066884025 +13 +-164.047987682633 +23 +-824.724927080674 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-127.592879465023 +20 +-641.452721848564 +30 +1054.1729200213 +11 +0.0 +21 +-840.882243605455 +31 +914.026066884025 +12 +0.0 +22 +-654.019523605455 +32 +1054.1729200213 +13 +0.0 +23 +-654.019523605455 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1033.56568016919 +30 +1987.58272162967 +11 +653.750224578544 +21 +-1033.56568016919 +31 +2082.82163169725 +12 +653.750224578544 +22 +-1038.25578712258 +32 +2035.20217666346 +13 +653.750224578544 +23 +-1038.25578712258 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1033.56568016919 +30 +2082.82163169725 +11 +653.750224578544 +21 +-1033.56568016919 +31 +1987.58272162967 +12 +653.750224578544 +22 +-1019.67559748903 +32 +1941.79325554754 +13 +653.750224578544 +23 +-1019.67559748903 +33 +1941.79325554754 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1033.56568016919 +30 +2082.82163169725 +11 +653.750224578544 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +653.750224578544 +22 +-1019.67559748903 +32 +2128.61109777939 +13 +653.750224578544 +23 +-1019.67559748903 +33 +2128.61109777939 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1019.67559748903 +30 +2128.61109777939 +11 +653.750224578544 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +653.750224578544 +22 +-1016.06585313728 +32 +2035.20217666346 +13 +653.750224578544 +23 +-1016.06585313728 +33 +2035.20217666346 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1016.06585313728 +30 +2035.20217666346 +11 +653.750224578544 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +653.750224578544 +22 +-1011.8021195433 +32 +1991.91176299638 +13 +653.750224578544 +23 +-1011.8021195433 +33 +1991.91176299638 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1011.8021195433 +30 +1991.91176299638 +11 +653.750224578544 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +653.750224578544 +22 +-997.119327169824 +32 +1899.59344191956 +13 +653.750224578544 +23 +-997.119327169824 +33 +1899.59344191956 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1011.8021195433 +30 +1991.91176299638 +11 +653.750224578544 +21 +-997.119327169824 +31 +1899.59344191956 +12 +653.750224578544 +22 +-999.174771652236 +32 +1950.28497564898 +13 +653.750224578544 +23 +-999.174771652236 +33 +1950.28497564898 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-999.174771652236 +30 +1950.28497564898 +11 +653.750224578544 +21 +-997.119327169824 +31 +1899.59344191956 +12 +653.750224578544 +22 +-978.669071362052 +32 +1911.92150871446 +13 +653.750224578544 +23 +-978.669071362052 +33 +1911.92150871446 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-978.669071362052 +30 +1911.92150871446 +11 +653.750224578544 +21 +-997.119327169824 +31 +1899.59344191956 +12 +653.750224578544 +22 +-966.763694030251 +32 +1862.60499591753 +13 +653.750224578544 +23 +-966.763694030251 +33 +1862.60499591753 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-978.669071362052 +30 +1911.92150871446 +11 +653.750224578544 +21 +-966.763694030251 +31 +1862.60499591753 +12 +653.750224578544 +22 +-951.073041235167 +32 +1878.29564871262 +13 +653.750224578544 +23 +-951.073041235167 +33 +1878.29564871262 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-951.073041235167 +30 +1878.29564871262 +11 +653.750224578544 +21 +-966.763694030251 +31 +1862.60499591753 +12 +653.750224578544 +22 +-929.775248028225 +32 +1832.24936277796 +13 +653.750224578544 +23 +-929.775248028225 +33 +1832.24936277796 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-951.073041235167 +30 +1878.29564871262 +11 +653.750224578544 +21 +-929.775248028225 +31 +1832.24936277796 +12 +653.750224578544 +22 +-917.447181233325 +32 +1850.69961858573 +13 +653.750224578544 +23 +-917.447181233325 +33 +1850.69961858573 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-917.447181233325 +30 +1850.69961858573 +11 +653.750224578544 +21 +-929.775248028225 +31 +1832.24936277796 +12 +653.750224578544 +22 +-887.575434400246 +32 +1809.69309245876 +13 +653.750224578544 +23 +-887.575434400246 +33 +1809.69309245876 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-917.447181233325 +30 +1850.69961858573 +11 +653.750224578544 +21 +-887.575434400246 +31 +1809.69309245876 +12 +653.750224578544 +22 +-879.083714298799 +32 +1830.19391829555 +13 +653.750224578544 +23 +-879.083714298799 +33 +1830.19391829555 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-879.083714298799 +30 +1830.19391829555 +11 +653.750224578544 +21 +-887.575434400246 +31 +1809.69309245876 +12 +653.750224578544 +22 +-841.785968318108 +32 +1795.80300977859 +13 +653.750224578544 +23 +-841.785968318108 +33 +1795.80300977859 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-879.083714298799 +30 +1830.19391829555 +11 +653.750224578544 +21 +-841.785968318108 +31 +1795.80300977859 +12 +653.750224578544 +22 +-837.4569269514 +32 +1817.56657040449 +13 +653.750224578544 +23 +-837.4569269514 +33 +1817.56657040449 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-837.4569269514 +30 +1817.56657040449 +11 +653.750224578544 +21 +-841.785968318108 +31 +1795.80300977859 +12 +653.750224578543 +22 +-795.278099285779 +32 +1791.22238449044 +13 +653.750224578543 +23 +-795.278099285779 +33 +1791.22238449044 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-837.4569269514 +30 +1817.56657040449 +11 +653.750224578543 +21 +-795.278099285779 +31 +1791.22238449044 +12 +653.750224578544 +22 +-807.521705673267 +32 +1812.39759571907 +13 +653.750224578544 +23 +-807.521705673267 +33 +1812.39759571907 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-837.4569269514 +30 +1817.56657040449 +11 +653.750224578544 +21 +-807.521705673267 +31 +1812.39759571907 +12 +653.750224578543 +22 +-808.286776169451 +32 +1814.69356131783 +13 +653.750224578543 +23 +-808.286776169451 +33 +1814.69356131783 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1019.67559748903 +30 +2128.61109777939 +11 +653.750224578544 +21 +-1011.8021195433 +31 +2078.49259033054 +12 +653.750224578544 +22 +-997.119327169824 +32 +2170.81091140737 +13 +653.750224578544 +23 +-997.119327169824 +33 +2170.81091140737 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1011.8021195433 +30 +2078.49259033054 +11 +653.750224578544 +21 +-1019.67559748903 +31 +2128.61109777939 +12 +653.750224578544 +22 +-1016.06585313728 +32 +2035.20217666346 +13 +653.750224578544 +23 +-1016.06585313728 +33 +2035.20217666346 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-997.119327169824 +30 +2170.81091140737 +11 +653.750224578544 +21 +-1011.8021195433 +31 +2078.49259033054 +12 +653.750224578544 +22 +-999.174771652236 +32 +2120.11937767794 +13 +653.750224578544 +23 +-999.174771652236 +33 +2120.11937767794 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-997.119327169824 +30 +2170.81091140737 +11 +653.750224578544 +21 +-999.174771652236 +31 +2120.11937767794 +12 +653.750224578544 +22 +-978.669071362051 +32 +2158.48284461247 +13 +653.750224578544 +23 +-978.669071362051 +33 +2158.48284461247 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-997.119327169824 +30 +2170.81091140737 +11 +653.750224578544 +21 +-978.669071362051 +31 +2158.48284461247 +12 +653.750224578544 +22 +-966.763694030251 +32 +2207.79935740939 +13 +653.750224578544 +23 +-966.763694030251 +33 +2207.79935740939 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-966.763694030251 +30 +2207.79935740939 +11 +653.750224578544 +21 +-978.669071362051 +31 +2158.48284461247 +12 +653.750224578544 +22 +-951.073041235167 +32 +2192.10870461431 +13 +653.750224578544 +23 +-951.073041235167 +33 +2192.10870461431 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-966.763694030251 +30 +2207.79935740939 +11 +653.750224578544 +21 +-951.073041235167 +31 +2192.10870461431 +12 +653.750224578544 +22 +-929.775248028225 +32 +2238.15499054897 +13 +653.750224578544 +23 +-929.775248028225 +33 +2238.15499054897 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-929.775248028225 +30 +2238.15499054897 +11 +653.750224578544 +21 +-951.073041235167 +31 +2192.10870461431 +12 +653.750224578544 +22 +-917.447181233325 +32 +2219.70473474119 +13 +653.750224578544 +23 +-917.447181233325 +33 +2219.70473474119 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-929.775248028225 +30 +2238.15499054897 +11 +653.750224578544 +21 +-917.447181233325 +31 +2219.70473474119 +12 +653.750224578544 +22 +-887.575434400246 +32 +2260.71126086817 +13 +653.750224578544 +23 +-887.575434400246 +33 +2260.71126086817 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-887.575434400246 +30 +2260.71126086817 +11 +653.750224578544 +21 +-917.447181233325 +31 +2219.70473474119 +12 +653.750224578544 +22 +-879.083714298799 +32 +2240.21043503138 +13 +653.750224578544 +23 +-879.083714298799 +33 +2240.21043503138 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-887.575434400246 +30 +2260.71126086817 +11 +653.750224578544 +21 +-879.083714298799 +31 +2240.21043503138 +12 +653.750224578544 +22 +-841.785968318108 +32 +2274.60134354834 +13 +653.750224578544 +23 +-841.785968318108 +33 +2274.60134354834 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-841.785968318108 +30 +2274.60134354834 +11 +653.750224578544 +21 +-879.083714298799 +31 +2240.21043503138 +12 +653.750224578544 +22 +-837.4569269514 +32 +2252.83778292244 +13 +653.750224578544 +23 +-837.4569269514 +33 +2252.83778292244 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-841.785968318108 +30 +2274.60134354834 +11 +653.750224578544 +21 +-837.4569269514 +31 +2252.83778292244 +12 +653.750224578543 +22 +-795.278127928135 +32 +2279.18196601546 +13 +653.750224578543 +23 +-795.278127928135 +33 +2279.18196601546 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578543 +20 +-795.278127928135 +30 +2279.18196601546 +11 +653.750224578544 +21 +-837.4569269514 +31 +2252.83778292244 +12 +653.750224578544 +22 +-807.521705673266 +32 +2258.00680432354 +13 +653.750224578544 +23 +-807.521705673266 +33 +2258.00680432354 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-807.521705673266 +30 +2258.00680432354 +11 +653.750224578544 +21 +-837.4569269514 +31 +2252.83778292244 +12 +653.750224578544 +22 +-808.286792264463 +32 +2255.71079042387 +13 +653.750224578544 +23 +-808.286792264463 +33 +2255.71079042387 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-152.954610178005 +20 +-768.954752250597 +30 +631.979456702016 +11 +-285.268899238265 +21 +-688.700045464263 +31 +587.016306884026 +12 +-145.428823687577 +22 +-731.120068617964 +32 +587.016306884026 +13 +-145.428823687577 +23 +-731.120068617964 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-285.268899238265 +20 +-688.700045464263 +30 +587.016306884026 +11 +-152.954610178005 +21 +-768.954752250597 +31 +631.979456702016 +12 +-300.031260464802 +22 +-724.33953815002 +32 +631.979456702016 +13 +-300.031260464802 +23 +-724.33953815002 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +2455.6433200213 +11 +635.110015865962 +21 +-545.224063842726 +31 +2549.0746800213 +12 +594.593536632776 +22 +-594.593536632776 +32 +2549.0746800213 +13 +594.593536632776 +23 +-594.593536632776 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +635.110015865962 +20 +-545.224063842726 +30 +2549.0746800213 +11 +594.593536632776 +21 +-594.593536632776 +31 +2455.6433200213 +12 +699.168033082722 +22 +-467.169144021928 +32 +2455.6433200213 +13 +699.168033082722 +23 +-467.169144021928 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +635.110015865962 +20 +-545.224063842726 +30 +2549.0746800213 +11 +699.168033082722 +21 +-467.169144021928 +31 +2455.6433200213 +12 +689.000383427084 +22 +-479.558460974267 +32 +2549.0746800213 +13 +689.000383427084 +23 +-479.558460974267 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +689.000383427084 +20 +-479.558460974267 +30 +2549.0746800213 +11 +699.168033082722 +21 +-467.169144021928 +31 +2455.6433200213 +12 +699.168033082722 +22 +-467.169144021929 +32 +2549.0746800213 +13 +699.168033082722 +23 +-467.169144021929 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-182.278551827737 +20 +-916.376162171087 +30 +2455.6433200213 +11 +-381.734128610353 +21 +-921.587710511788 +31 +2361.46489814399 +12 +-194.606371158736 +22 +-978.352295145615 +32 +2361.46489814399 +13 +-194.606371158736 +23 +-978.352295145615 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-381.734128610353 +20 +-921.587710511788 +30 +2361.46489814399 +11 +-182.278551827737 +21 +-916.376162171087 +31 +2455.6433200213 +12 +-357.552241131723 +22 +-863.207469797099 +32 +2455.6433200213 +13 +-357.552241131723 +23 +-863.207469797099 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-357.552241131723 +20 +-863.207469797099 +30 +2455.6433200213 +11 +-182.278551827737 +21 +-916.376162171087 +31 +2455.6433200213 +12 +-233.261861254001 +22 +-900.910544337303 +32 +2455.6433200213 +13 +-233.261861254001 +23 +-900.910544337303 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-357.552241131723 +20 +-863.207469797099 +30 +2455.6433200213 +11 +-233.261861254001 +21 +-900.910544337303 +31 +2455.6433200213 +12 +-323.520317728025 +22 +-873.53094089839 +32 +2455.6433200213 +13 +-323.520317728025 +23 +-873.53094089839 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +2549.0746800213 +11 +-321.791703197793 +21 +-776.873894119249 +31 +2455.6433200213 +12 +-164.047987682633 +22 +-824.724927080674 +32 +2455.6433200213 +13 +-164.047987682633 +23 +-824.724927080674 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.873894119249 +30 +2455.6433200213 +11 +-164.047987682633 +21 +-824.724927080674 +31 +2549.0746800213 +12 +-321.791703197793 +22 +-776.87389411925 +32 +2549.0746800213 +13 +-321.791703197793 +23 +-776.87389411925 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.87389411925 +30 +2549.0746800213 +11 +-164.047987682633 +21 +-824.724927080674 +31 +2549.0746800213 +12 +-209.932194866118 +22 +-810.806105001612 +32 +2549.0746800213 +13 +-209.932194866118 +23 +-810.806105001612 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.87389411925 +30 +2549.0746800213 +11 +-209.932194866118 +21 +-810.806105001612 +31 +2549.0746800213 +12 +-291.163466606751 +22 +-786.164868113883 +32 +2549.0746800213 +13 +-291.163466606751 +23 +-786.164868113883 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-158.887376492573 +20 +-798.780782641381 +30 +682.822310520627 +11 +-300.031260464802 +21 +-724.33953815002 +31 +631.979456702016 +12 +-152.954610178005 +22 +-768.954752250597 +32 +631.979456702016 +13 +-152.954610178005 +23 +-768.954752250597 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-300.031260464802 +20 +-724.33953815002 +30 +631.979456702016 +11 +-158.887376492573 +21 +-798.780782641381 +31 +682.822310520627 +12 +-311.668800211604 +22 +-752.435044439405 +32 +682.822310520627 +13 +-311.668800211604 +23 +-752.435044439405 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-163.055979488767 +20 +-819.73776511114 +30 +738.078199114136 +11 +-311.668800211604 +21 +-752.435044439405 +31 +682.822310520627 +12 +-158.887376492573 +22 +-798.780782641381 +32 +682.822310520627 +13 +-158.887376492573 +23 +-798.780782641381 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-311.668800211604 +20 +-752.435044439405 +30 +682.822310520627 +11 +-163.055979488767 +21 +-819.73776511114 +31 +738.078199114136 +12 +-319.845809128627 +22 +-772.176090266528 +32 +738.078199114136 +13 +-319.845809128627 +23 +-772.176090266528 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-165.340167031437 +20 +-831.221151351825 +30 +796.153149972084 +11 +-319.845809128627 +21 +-772.176090266528 +31 +738.078199114136 +12 +-163.055979488767 +22 +-819.73776511114 +32 +738.078199114136 +13 +-163.055979488767 +23 +-819.73776511114 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-319.845809128627 +20 +-772.176090266528 +30 +738.078199114136 +11 +-165.340167031437 +21 +-831.221151351825 +31 +796.153149972084 +12 +-324.326404167689 +22 +-782.993203577332 +32 +796.153149972084 +13 +-324.326404167689 +23 +-782.993203577332 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +533.995170927003 +20 +-892.63511672065 +30 +2258.00680432354 +11 +381.734128610352 +21 +-921.587710511788 +31 +2361.46489814399 +12 +399.51558814382 +22 +-964.515951276275 +32 +2258.00680432354 +13 +399.51558814382 +23 +-964.515951276275 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +381.734128610352 +20 +-921.587710511788 +30 +2361.46489814399 +11 +533.995170927003 +21 +-892.63511672065 +31 +2258.00680432354 +12 +540.896920479706 +22 +-887.575434400246 +32 +2260.71126086817 +13 +540.896920479706 +23 +-887.575434400246 +33 +2260.71126086817 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +381.734128610352 +20 +-921.587710511788 +30 +2361.46489814399 +11 +540.896920479706 +21 +-887.575434400246 +31 +2260.71126086817 +12 +577.578293884962 +22 +-864.407003018736 +32 +2267.73932769213 +13 +577.578293884962 +23 +-864.407003018736 +33 +2267.73932769213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +381.734128610352 +20 +-921.587710511788 +30 +2361.46489814399 +11 +577.578293884962 +21 +-864.407003018736 +31 +2267.73932769213 +12 +554.192057578438 +22 +-829.407026995336 +32 +2361.46489814399 +13 +554.192057578438 +23 +-829.407026995336 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +165.340167031437 +20 +-831.221151351825 +30 +796.153149972084 +11 +1.80477854883065e-13 +21 +-835.797377356766 +31 +738.078199114136 +12 +163.055979488767 +22 +-819.73776511114 +32 +738.078199114136 +13 +163.055979488767 +23 +-819.73776511114 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-835.797377356766 +30 +738.078199114136 +11 +165.340167031437 +21 +-831.221151351825 +31 +796.153149972084 +12 +1.80477854883065e-13 +22 +-847.505736434059 +32 +796.153149972084 +13 +1.80477854883065e-13 +23 +-847.505736434059 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-990.771212819307 +20 +-410.390873558597 +30 +2148.21162800104 +11 +-1059.21725479392 +21 +-210.691411720441 +31 +2058.8118770109 +12 +-997.760836892423 +22 +-413.286070645571 +32 +2058.8118770109 +13 +-997.760836892423 +23 +-413.286070645571 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1059.21725479392 +20 +-210.691411720441 +30 +2058.8118770109 +11 +-990.771212819307 +21 +-410.390873558597 +31 +2148.21162800104 +12 +-1051.79710945546 +22 +-209.215453044867 +32 +2148.21162800104 +13 +-1051.79710945546 +23 +-209.215453044867 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-951.073041235166 +30 +2192.10870461431 +11 +653.750224578544 +21 +-978.669071362051 +31 +2158.48284461247 +12 +180.675224578544 +22 +-978.669071362051 +32 +2158.48284461247 +13 +180.675224578544 +23 +-978.669071362051 +33 +2158.48284461247 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-978.669071362051 +30 +2158.48284461247 +11 +180.675224578544 +21 +-951.073041235166 +31 +2192.10870461431 +12 +653.750224578544 +22 +-951.073041235167 +32 +2192.10870461431 +13 +653.750224578544 +23 +-951.073041235167 +33 +2192.10870461431 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-999.174771652236 +30 +2120.11937767794 +11 +653.750224578544 +21 +-1011.8021195433 +31 +2078.49259033054 +12 +180.675224578544 +22 +-1011.8021195433 +32 +2078.49259033054 +13 +180.675224578544 +23 +-1011.8021195433 +33 +2078.49259033054 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1011.8021195433 +30 +2078.49259033054 +11 +180.675224578544 +21 +-999.174771652236 +31 +2120.11937767794 +12 +653.750224578544 +22 +-999.174771652236 +32 +2120.11937767794 +13 +653.750224578544 +23 +-999.174771652236 +33 +2120.11937767794 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +610.800045742856 +20 +-425.129378778605 +30 +587.016306884026 +11 +554.385481313987 +21 +-554.385481313987 +31 +631.979456702016 +12 +527.108194536515 +22 +-527.108194536515 +32 +587.016306884026 +13 +527.108194536515 +23 +-527.108194536515 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +554.385481313987 +20 +-554.385481313987 +30 +631.979456702016 +11 +610.800045742856 +21 +-425.129378778605 +31 +587.016306884026 +12 +651.888361812631 +22 +-435.577877671407 +32 +631.979456702016 +13 +651.888361812631 +23 +-435.577877671407 +33 +631.979456702016 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +651.888361812631 +20 +-435.577877671407 +30 +631.979456702016 +11 +610.800045742856 +21 +-425.129378778605 +31 +587.016306884026 +12 +619.813665790805 +22 +-414.146250971868 +32 +587.016306884026 +13 +619.813665790805 +23 +-414.146250971868 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-966.763694030251 +30 +2207.79935740939 +11 +369.410361108008 +21 +-997.119327169824 +31 +2170.81091140737 +12 +653.750224578544 +22 +-997.119327169824 +32 +2170.81091140737 +13 +653.750224578544 +23 +-997.119327169824 +33 +2170.81091140737 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +369.410361108008 +20 +-997.119327169824 +30 +2170.81091140737 +11 +653.750224578544 +21 +-966.763694030251 +31 +2207.79935740939 +12 +406.150729088795 +22 +-980.53459853389 +32 +2191.01946172118 +13 +406.150729088795 +23 +-980.53459853389 +33 +2191.01946172118 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +406.150729088795 +20 +-980.53459853389 +30 +2191.01946172118 +11 +653.750224578544 +21 +-966.763694030251 +31 +2207.79935740939 +12 +422.745233791294 +22 +-966.763694030251 +32 +2207.79935740939 +13 +422.745233791294 +23 +-966.763694030251 +33 +2207.79935740939 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +688.700045464263 +20 +-285.268899238265 +30 +587.016306884026 +11 +768.954752250597 +21 +-152.954610178005 +31 +631.979456702016 +12 +724.33953815002 +22 +-300.031260464802 +32 +631.979456702016 +13 +724.33953815002 +23 +-300.031260464802 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +768.954752250597 +20 +-152.954610178005 +30 +631.979456702016 +11 +688.700045464263 +21 +-285.268899238265 +31 +587.016306884026 +12 +707.864018296911 +22 +-222.093747280928 +32 +587.016306884026 +13 +707.864018296911 +23 +-222.093747280928 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +768.954752250597 +20 +-152.954610178005 +30 +631.979456702016 +11 +707.864018296911 +21 +-222.093747280928 +31 +587.016306884026 +12 +731.120068617964 +22 +-145.428823687577 +32 +587.016306884026 +13 +731.120068617964 +23 +-145.428823687577 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +778.906875772646 +20 +-154.93421062823 +30 +1054.1729200213 +11 +647.394912321209 +21 +-268.159752894786 +31 +1241.03564002131 +12 +733.714233519903 +22 +-303.914386430124 +32 +1054.1729200213 +13 +733.714233519903 +23 +-303.914386430124 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +647.394912321209 +20 +-268.159752894786 +30 +1241.03564002131 +11 +778.906875772646 +21 +-154.93421062823 +31 +1054.1729200213 +12 +687.270773156591 +22 +-136.706656519426 +32 +1241.03564002131 +13 +687.270773156591 +23 +-136.706656519426 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-154.93421062823 +20 +-778.906875772646 +30 +1614.7610800213 +11 +-221.595075742173 +21 +-855.85089411917 +31 +1427.8983600213 +12 +-173.161764737035 +22 +-870.542978388701 +32 +1427.8983600213 +13 +-173.161764737035 +23 +-870.542978388701 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-221.595075742173 +20 +-855.85089411917 +30 +1427.8983600213 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +-307.339192645458 +22 +-829.840700617718 +32 +1427.8983600213 +13 +-307.339192645458 +23 +-829.840700617718 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-307.339192645458 +20 +-829.840700617718 +30 +1427.8983600213 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +-339.669019965462 +22 +-820.033554718597 +32 +1427.8983600213 +13 +-339.669019965462 +23 +-820.033554718597 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-303.914386430124 +20 +-733.714233519903 +30 +1614.7610800213 +11 +-307.339192645458 +21 +-829.840700617718 +31 +1427.8983600213 +12 +-154.93421062823 +22 +-778.906875772646 +32 +1614.7610800213 +13 +-154.93421062823 +23 +-778.906875772646 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-194.606371158736 +20 +-978.352295145615 +30 +1708.93950189862 +11 +-233.261861972698 +21 +-900.910544119288 +31 +1614.7610800213 +12 +-182.278551827737 +22 +-916.376162171087 +32 +1614.7610800213 +13 +-182.278551827737 +23 +-916.376162171087 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-233.261861972698 +20 +-900.910544119288 +30 +1614.7610800213 +11 +-194.606371158736 +21 +-978.352295145615 +31 +1708.93950189862 +12 +-323.520317681463 +22 +-873.530940912515 +32 +1614.7610800213 +13 +-323.520317681463 +23 +-873.530940912515 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-323.520317681463 +20 +-873.530940912515 +30 +1614.7610800213 +11 +-381.734128610353 +21 +-921.587710511788 +31 +1708.93950189862 +12 +-357.552241131723 +22 +-863.207469797099 +32 +1614.7610800213 +13 +-357.552241131723 +23 +-863.207469797099 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-381.734128610353 +20 +-921.587710511788 +30 +1708.93950189862 +11 +-323.520317681463 +21 +-873.530940912515 +31 +1614.7610800213 +12 +-194.606371158736 +22 +-978.352295145615 +32 +1708.93950189862 +13 +-194.606371158736 +23 +-978.352295145615 +33 +1708.93950189862 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-897.961029579872 +20 +-599.99837764929 +30 +2058.8118770109 +11 +-818.480102290147 +21 +-696.846172894875 +31 +2011.59249120966 +12 +-818.273878310588 +22 +-697.096462294947 +32 +2058.80160712022 +13 +-818.273878310588 +23 +-697.096462294947 +33 +2058.80160712022 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-818.480102290147 +20 +-696.846172894875 +30 +2011.59249120966 +11 +-897.961029579872 +21 +-599.99837764929 +31 +2058.8118770109 +12 +-897.961029579872 +22 +-599.99837764929 +32 +2011.5925230317 +13 +-897.961029579872 +23 +-599.99837764929 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +914.026066884025 +11 +0.0 +21 +-654.019523605455 +31 +1054.1729200213 +12 +0.0 +22 +-840.882243605455 +32 +914.026066884025 +13 +0.0 +23 +-840.882243605455 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-654.019523605455 +30 +1054.1729200213 +11 +164.047987682633 +21 +-824.724927080674 +31 +914.026066884025 +12 +127.592879465023 +22 +-641.452721848564 +32 +1054.1729200213 +13 +127.592879465023 +23 +-641.452721848564 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-999.174771652236 +30 +1950.28497564898 +11 +653.750224578544 +21 +-978.669071362052 +31 +1911.92150871446 +12 +180.675224578544 +22 +-978.669071362051 +32 +1911.92150871446 +13 +180.675224578544 +23 +-978.669071362051 +33 +1911.92150871446 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-978.669071362052 +30 +1911.92150871446 +11 +180.675224578544 +21 +-999.174771652236 +31 +1950.28497564898 +12 +653.750224578544 +22 +-999.174771652236 +32 +1950.28497564898 +13 +653.750224578544 +23 +-999.174771652236 +33 +1950.28497564898 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1023.92467246733 +20 +-203.671280618918 +30 +1812.39759571907 +11 +1072.40303302985 +21 +1.80477854883065e-13 +31 +1922.19277204157 +12 +1051.79710945546 +22 +-209.215453044867 +32 +1922.19277204157 +13 +1051.79710945546 +23 +-209.215453044867 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1072.40303302985 +20 +1.80477854883065e-13 +30 +1922.19277204157 +11 +1023.92467246733 +21 +-203.671280618918 +31 +1812.39759571907 +12 +1043.98454271904 +22 +1.80477854883065e-13 +32 +1812.39759571907 +13 +1043.98454271904 +23 +1.80477854883065e-13 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +670.391151613542 +20 +-794.16651328432 +30 +2257.10151651642 +11 +180.675224578544 +21 +-837.4569269514 +31 +2252.83778292244 +12 +180.675224578544 +22 +-794.16651328432 +32 +2257.10151651642 +13 +180.675224578544 +23 +-794.16651328432 +33 +2257.10151651642 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-837.4569269514 +30 +2252.83778292244 +11 +670.391151613542 +21 +-794.16651328432 +31 +2257.10151651642 +12 +653.750224578544 +22 +-808.286792264463 +32 +2255.71079042387 +13 +653.750224578544 +23 +-808.286792264463 +33 +2255.71079042387 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-837.4569269514 +30 +2252.83778292244 +11 +180.675224578544 +21 +-837.4569269514 +31 +2252.83778292244 +12 +653.750224578544 +22 +-808.286792264463 +32 +2255.71079042387 +13 +653.750224578544 +23 +-808.286792264463 +33 +2255.71079042387 +70 +2 + 0 +3DFACE + 8 +body_half_outside +10 +422.745233791294 +20 +-966.763694030251 +30 +2207.79935740939 +11 +399.51558814382 +21 +-964.515951276275 +31 +2258.00680432354 +12 +406.150729088795 +22 +-980.53459853389 +32 +2191.01946172118 +13 +406.150729088795 +23 +-980.53459853389 +33 +2191.01946172118 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +399.51558814382 +20 +-964.515951276275 +30 +2258.00680432354 +11 +422.745233791294 +21 +-966.763694030251 +31 +2207.79935740939 +12 +475.358507495069 +22 +-929.775248028225 +32 +2238.15499054897 +13 +475.358507495069 +23 +-929.775248028225 +33 +2238.15499054897 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +399.51558814382 +20 +-964.515951276275 +30 +2258.00680432354 +11 +475.358507495069 +21 +-929.775248028225 +31 +2238.15499054897 +12 +533.995170927003 +22 +-892.63511672065 +32 +2258.00680432354 +13 +533.995170927003 +23 +-892.63511672065 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-43.0469725205787 +20 +-1075.72879087574 +30 +2017.42442965997 +11 +-210.691411720441 +21 +-1059.21725479392 +31 +2011.5925230317 +12 +-39.9297534839436 +22 +-1076.03581015323 +32 +2011.5925230317 +13 +-39.9297534839436 +23 +-1076.03581015323 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2011.5925230317 +11 +-43.0469725205787 +21 +-1075.72879087574 +31 +2017.42442965997 +12 +-210.691411720441 +22 +-1059.21725479392 +32 +2058.8118770109 +13 +-210.691411720441 +23 +-1059.21725479392 +33 +2058.8118770109 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +-43.0469725205787 +21 +-1075.72879087574 +31 +2017.42442965997 +12 +-45.6079918995535 +22 +-1075.47655248308 +32 +2025.86697911698 +13 +-45.6079918995535 +23 +-1075.47655248308 +33 +2025.86697911698 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +-45.6079918995535 +21 +-1075.47655248308 +31 +2025.86697911698 +12 +-46.4727423170739 +22 +-1075.39138200091 +32 +2034.64693744883 +13 +-46.4727423170739 +23 +-1075.39138200091 +33 +2034.64693744883 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +-46.4727423170739 +21 +-1075.39138200091 +31 +2034.64693744883 +12 +-45.6079918995532 +22 +-1075.47655248308 +32 +2043.42689578067 +13 +-45.6079918995532 +23 +-1075.47655248308 +33 +2043.42689578067 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +-45.6079918995532 +21 +-1075.47655248308 +31 +2043.42689578067 +12 +-43.0469725205787 +22 +-1075.72879087574 +32 +2051.86944523768 +13 +-43.0469725205787 +23 +-1075.72879087574 +33 +2051.86944523768 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +-43.0469725205787 +21 +-1075.72879087574 +31 +2051.86944523768 +12 +-39.3361654272124 +22 +-1076.09427347395 +32 +2058.8118770109 +13 +-39.3361654272124 +23 +-1076.09427347395 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1023.92467246733 +20 +-203.671280618918 +30 +1812.39759571907 +11 +-921.587710511788 +21 +-381.734128610352 +31 +1708.93950189862 +12 +-964.515951276276 +22 +-399.515588143821 +32 +1812.39759571907 +13 +-964.515951276276 +23 +-399.515588143821 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-921.587710511788 +20 +-381.734128610352 +30 +1708.93950189862 +11 +-1023.92467246733 +21 +-203.671280618918 +31 +1812.39759571907 +12 +-978.352295145615 +22 +-194.606371158736 +32 +1708.93950189862 +13 +-978.352295145615 +23 +-194.606371158736 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1051.79710945546 +20 +-209.215453044867 +30 +1922.19277204157 +11 +-964.515951276276 +21 +-399.515588143821 +31 +1812.39759571907 +12 +-990.771212819307 +22 +-410.390873558597 +32 +1922.19277204157 +13 +-990.771212819307 +23 +-410.390873558597 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-964.515951276276 +20 +-399.515588143821 +30 +1812.39759571907 +11 +-1051.79710945546 +21 +-209.215453044867 +31 +1922.19277204157 +12 +-1023.92467246733 +22 +-203.671280618918 +32 +1812.39759571907 +13 +-1023.92467246733 +23 +-203.671280618918 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-680.414811030127 +20 +-831.964968270127 +30 +2020.57508939225 +11 +-763.653083482914 +21 +-763.653083482914 +31 +2011.5925230317 +12 +-683.329149560927 +22 +-829.573232448602 +32 +2011.5925230317 +13 +-683.329149560927 +23 +-829.573232448602 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-763.653083482914 +20 +-763.653083482914 +30 +2011.5925230317 +11 +-680.414811030127 +21 +-831.964968270127 +31 +2020.57508939225 +12 +-763.653083482914 +22 +-763.653083482914 +32 +2058.8118770109 +13 +-763.653083482914 +23 +-763.653083482914 +33 +2058.8118770109 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-763.653083482914 +20 +-763.653083482914 +30 +2058.8118770109 +11 +-680.414811030127 +21 +-831.964968270127 +31 +2020.57508939225 +12 +-680.521947020029 +22 +-831.877044035484 +32 +2050.14904337117 +13 +-680.521947020029 +23 +-831.877044035484 +33 +2050.14904337117 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-763.653083482914 +20 +-763.653083482914 +30 +2058.8118770109 +11 +-680.521947020029 +21 +-831.877044035484 +31 +2050.14904337117 +12 +-683.397324988288 +22 +-829.51728232132 +32 +2058.8118770109 +13 +-683.397324988288 +23 +-829.51728232132 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +733.714233519903 +20 +-303.914386430124 +30 +1054.1729200213 +11 +582.640028068573 +21 +-389.307620352121 +31 +1241.03564002131 +12 +660.325364744673 +22 +-441.215302798659 +32 +1054.1729200213 +13 +660.325364744673 +23 +-441.215302798659 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +582.640028068573 +20 +-389.307620352121 +30 +1241.03564002131 +11 +733.714233519903 +21 +-303.914386430124 +31 +1054.1729200213 +12 +647.394912321209 +22 +-268.159752894786 +32 +1241.03564002131 +13 +647.394912321209 +23 +-268.159752894786 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-733.714233519903 +20 +-303.914386430124 +30 +1614.7610800213 +11 +-842.852042179446 +21 +-264.446547810842 +31 +1427.8983600213 +12 +-820.033554718597 +22 +-339.669019965462 +32 +1427.8983600213 +13 +-820.033554718597 +23 +-339.669019965462 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-842.852042179446 +20 +-264.446547810842 +30 +1427.8983600213 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +-778.906875772646 +22 +-154.93421062823 +32 +1614.7610800213 +13 +-778.906875772646 +23 +-154.93421062823 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-842.852042179446 +20 +-264.446547810842 +30 +1427.8983600213 +11 +-778.906875772646 +21 +-154.93421062823 +31 +1614.7610800213 +12 +-868.904108801094 +22 +-178.564393729439 +32 +1427.8983600213 +13 +-868.904108801094 +23 +-178.564393729439 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-868.904108801094 +20 +-178.564393729439 +30 +1427.8983600213 +11 +-778.906875772646 +21 +-154.93421062823 +31 +1614.7610800213 +12 +-870.542978388701 +22 +-173.161764737035 +32 +1427.8983600213 +13 +-870.542978388701 +23 +-173.161764737035 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-978.352295145615 +20 +-194.606371158736 +30 +1708.93950189862 +11 +-863.207469797099 +21 +-357.552241131722 +31 +1614.7610800213 +12 +-921.587710511788 +22 +-381.734128610352 +32 +1708.93950189862 +13 +-921.587710511788 +23 +-381.734128610352 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-863.207469797099 +20 +-357.552241131722 +30 +1614.7610800213 +11 +-978.352295145615 +21 +-194.606371158736 +31 +1708.93950189862 +12 +-887.227323624272 +22 +-278.369394820258 +32 +1614.7610800213 +13 +-887.227323624272 +23 +-278.369394820258 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-887.227323624272 +20 +-278.369394820258 +30 +1614.7610800213 +11 +-978.352295145615 +21 +-194.606371158736 +31 +1708.93950189862 +12 +-914.651018607606 +22 +-187.965588003526 +32 +1614.7610800213 +13 +-914.651018607606 +23 +-187.965588003526 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-914.651018607606 +20 +-187.965588003526 +30 +1614.7610800213 +11 +-978.352295145615 +21 +-194.606371158736 +31 +1708.93950189862 +12 +-916.376162171087 +22 +-182.278551827736 +32 +1614.7610800213 +13 +-916.376162171087 +23 +-182.278551827736 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +677.173649450057 +20 +-452.47296672438 +30 +682.822310520627 +11 +772.176090266528 +21 +-319.845809128627 +31 +738.078199114136 +12 +694.940121314314 +22 +-464.344143695271 +32 +738.078199114136 +13 +694.940121314314 +23 +-464.344143695271 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +772.176090266528 +20 +-319.845809128627 +30 +738.078199114136 +11 +677.173649450057 +21 +-452.47296672438 +31 +682.822310520627 +12 +752.435044439405 +22 +-311.668800211604 +32 +682.822310520627 +13 +752.435044439405 +23 +-311.668800211604 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-311.668800211604 +20 +-752.435044439405 +30 +682.822310520627 +11 +-435.577877671407 +21 +-651.888361812631 +31 +631.979456702016 +12 +-300.031260464802 +22 +-724.33953815002 +32 +631.979456702016 +13 +-300.031260464802 +23 +-724.33953815002 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-435.577877671407 +20 +-651.888361812631 +30 +631.979456702016 +11 +-311.668800211604 +21 +-752.435044439405 +31 +682.822310520627 +12 +-452.472966724379 +22 +-677.173649450057 +32 +682.822310520627 +13 +-452.472966724379 +23 +-677.173649450057 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-319.845809128627 +20 +-772.176090266528 +30 +738.078199114136 +11 +-452.472966724379 +21 +-677.173649450057 +31 +682.822310520627 +12 +-311.668800211604 +22 +-752.435044439405 +32 +682.822310520627 +13 +-311.668800211604 +23 +-752.435044439405 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-452.472966724379 +20 +-677.173649450057 +30 +682.822310520627 +11 +-319.845809128627 +21 +-772.176090266528 +31 +738.078199114136 +12 +-464.344143695271 +22 +-694.940121314314 +32 +738.078199114136 +13 +-464.344143695271 +23 +-694.940121314314 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +42.6716706222411 +20 +-976.334157259822 +30 +2043.42689578067 +11 +43.536421039762 +21 +-1075.68058440422 +31 +2034.64693744883 +12 +42.6716706222413 +22 +-1075.76575488639 +32 +2043.42689578067 +13 +42.6716706222413 +23 +-1075.76575488639 +33 +2043.42689578067 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +43.536421039762 +20 +-1075.68058440422 +30 +2034.64693744883 +11 +42.6716706222411 +21 +-976.334157259822 +31 +2043.42689578067 +12 +43.4817324497669 +22 +-976.746706756077 +32 +2035.2022000213 +13 +43.4817324497669 +23 +-976.746706756077 +33 +2035.2022000213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +43.5364210397618 +20 +-976.708082157409 +30 +2034.64693744883 +11 +43.536421039762 +21 +-1075.68058440422 +31 +2034.64693744883 +12 +43.4817324497669 +22 +-976.746706756077 +32 +2035.2022000213 +13 +43.4817324497669 +23 +-976.746706756077 +33 +2035.2022000213 +70 +2 + 0 +3DFACE + 8 +body_half_outside +10 +-33.2912055279292 +20 +-1075.947598755 +30 +2002.82389255955 +11 +-38.8881027186488 +21 +-975.669199508814 +31 +2009.6437315188 +12 +-38.8881027186482 +22 +-1075.973485995 +32 +2009.6437315188 +13 +-38.8881027186482 +23 +-1075.973485995 +33 +2009.6437315188 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-38.8881027186488 +20 +-975.669199508814 +30 +2009.6437315188 +11 +-33.2912055279292 +21 +-1075.947598755 +31 +2002.82389255955 +12 +-33.2912055279291 +22 +-975.812207442705 +32 +2002.82389255955 +13 +-33.2912055279291 +23 +-975.812207442705 +33 +2002.82389255955 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-690.554572920556 +20 +-286.037069662455 +30 +1427.8983600213 +11 +-824.724927080674 +21 +-164.047987682633 +31 +1241.03564002131 +12 +-776.873894119249 +22 +-321.791703197793 +32 +1241.03564002131 +13 +-776.873894119249 +23 +-321.791703197793 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-824.724927080674 +20 +-164.047987682633 +30 +1241.03564002131 +11 +-690.554572920556 +21 +-286.037069662455 +31 +1427.8983600213 +12 +-733.088824464619 +22 +-145.820433573828 +32 +1427.8983600213 +13 +-733.088824464619 +23 +-145.820433573828 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +651.888361812631 +20 +-435.577877671407 +30 +631.979456702016 +11 +752.435044439405 +21 +-311.668800211604 +31 +682.822310520627 +12 +677.173649450057 +22 +-452.47296672438 +32 +682.822310520627 +13 +677.173649450057 +23 +-452.47296672438 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +752.435044439405 +20 +-311.668800211604 +30 +682.822310520627 +11 +651.888361812631 +21 +-435.577877671407 +31 +631.979456702016 +12 +724.33953815002 +22 +-300.031260464802 +32 +631.979456702016 +13 +724.33953815002 +23 +-300.031260464802 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +2549.0746800213 +11 +-164.047987682633 +21 +-824.724927080674 +31 +2455.6433200213 +12 +0.0 +22 +-840.882243605455 +32 +2455.6433200213 +13 +0.0 +23 +-840.882243605455 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +0.0 +21 +-840.882243605455 +31 +2549.0746800213 +12 +-164.047987682633 +22 +-824.724927080674 +32 +2549.0746800213 +13 +-164.047987682633 +23 +-824.724927080674 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +2549.0746800213 +11 +0.0 +21 +-840.882243605455 +31 +2549.0746800213 +12 +-42.4327807980229 +22 +-836.702979476311 +32 +2549.0746800213 +13 +-42.4327807980229 +23 +-836.702979476311 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +2549.0746800213 +11 +-42.4327807980229 +21 +-836.702979476311 +31 +2549.0746800213 +12 +-126.903621448811 +22 +-828.383327837855 +32 +2549.0746800213 +13 +-126.903621448811 +23 +-828.383327837855 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-706.098253038492 +20 +-471.799768952456 +30 +855.37186879426 +11 +-599.277053327022 +21 +-599.277053327022 +31 +796.153149972084 +12 +-600.487204246519 +22 +-600.487204246519 +32 +855.37186879426 +13 +-600.487204246519 +23 +-600.487204246519 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-599.277053327022 +20 +-599.277053327022 +30 +796.153149972084 +11 +-706.098253038492 +21 +-471.799768952456 +31 +855.37186879426 +12 +-704.67526609701 +22 +-470.84895947612 +32 +796.153149972084 +13 +-704.67526609701 +23 +-470.84895947612 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-26.4713665686843 +20 +-976.215346903032 +30 +2072.06687952882 +11 +-18.690668427508 +21 +-1076.65401668716 +31 +2076.22574933075 +12 +-26.4713665686845 +22 +-1076.23963198666 +32 +2072.06687952882 +13 +-26.4713665686845 +23 +-1076.23963198666 +33 +2072.06687952882 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-18.690668427508 +20 +-1076.65401668716 +30 +2076.22574933075 +11 +-26.4713665686843 +21 +-976.215346903032 +31 +2072.06687952882 +12 +-18.690668427508 +22 +-976.732727149702 +32 +2076.22574933075 +13 +-18.690668427508 +23 +-976.732727149702 +33 +2076.22574933075 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.87389411925 +30 +2549.0746800213 +11 +-467.169144021928 +21 +-699.168033082722 +31 +2455.6433200213 +12 +-321.791703197793 +22 +-776.873894119249 +32 +2455.6433200213 +13 +-321.791703197793 +23 +-776.873894119249 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +-321.791703197793 +21 +-776.87389411925 +31 +2549.0746800213 +12 +-467.169144021929 +22 +-699.168033082722 +32 +2549.0746800213 +13 +-467.169144021929 +23 +-699.168033082722 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021929 +20 +-699.168033082722 +30 +2549.0746800213 +11 +-321.791703197793 +21 +-776.87389411925 +31 +2549.0746800213 +12 +-368.760188696337 +22 +-751.768715581535 +32 +2549.0746800213 +13 +-368.760188696337 +23 +-751.768715581535 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021929 +20 +-699.168033082722 +30 +2549.0746800213 +11 +-368.760188696337 +21 +-751.768715581535 +31 +2549.0746800213 +12 +-443.635339973588 +22 +-711.747113417844 +32 +2549.0746800213 +13 +-443.635339973588 +23 +-711.747113417844 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-300.031260464802 +20 +-724.33953815002 +30 +631.979456702016 +11 +-414.146250971868 +21 +-619.813665790805 +31 +587.016306884026 +12 +-285.268899238265 +22 +-688.700045464263 +32 +587.016306884026 +13 +-285.268899238265 +23 +-688.700045464263 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-414.146250971868 +20 +-619.813665790805 +30 +587.016306884026 +11 +-300.031260464802 +21 +-724.33953815002 +31 +631.979456702016 +12 +-435.577877671407 +22 +-651.888361812631 +32 +631.979456702016 +13 +-435.577877671407 +23 +-651.888361812631 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +914.026066884025 +11 +641.452721848564 +21 +-127.592879465023 +31 +1054.1729200213 +12 +604.235251721863 +22 +-250.282436127116 +32 +1054.1729200213 +13 +604.235251721863 +23 +-250.282436127116 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +641.452721848564 +20 +-127.592879465023 +30 +1054.1729200213 +11 +776.87389411925 +21 +-321.791703197793 +31 +914.026066884025 +12 +824.724927080674 +22 +-164.047987682633 +32 +914.026066884025 +13 +824.724927080674 +23 +-164.047987682633 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-26.4713665686843 +20 +-976.215346903032 +30 +2072.06687952882 +11 +-33.2912055279292 +21 +-1076.04157769881 +31 +2066.4699823381 +12 +-33.2912055279292 +22 +-975.878683928089 +32 +2066.4699823381 +13 +-33.2912055279292 +23 +-975.878683928089 +33 +2066.4699823381 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-33.2912055279292 +20 +-1076.04157769881 +30 +2066.4699823381 +11 +-26.4713665686843 +21 +-976.215346903032 +31 +2072.06687952882 +12 +-26.4713665686845 +22 +-1076.23963198666 +32 +2072.06687952882 +13 +-26.4713665686845 +23 +-1076.23963198666 +33 +2072.06687952882 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-966.763694030251 +30 +2207.79935740939 +11 +475.358507495069 +21 +-929.775248028225 +31 +2238.15499054897 +12 +422.745233791294 +22 +-966.763694030251 +32 +2207.79935740939 +13 +422.745233791294 +23 +-966.763694030251 +33 +2207.79935740939 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +475.358507495069 +20 +-929.775248028225 +30 +2238.15499054897 +11 +653.750224578544 +21 +-966.763694030251 +31 +2207.79935740939 +12 +653.750224578544 +22 +-929.775248028225 +32 +2238.15499054897 +13 +653.750224578544 +23 +-929.775248028225 +33 +2238.15499054897 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +533.995007415167 +20 +-892.635204119545 +30 +1812.39759571907 +11 +653.750224578544 +21 +-929.775248028225 +31 +1832.24936277796 +12 +475.358481968201 +22 +-929.775248028225 +32 +1832.24936277796 +13 +475.358481968201 +23 +-929.775248028225 +33 +1832.24936277796 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-929.775248028225 +30 +1832.24936277796 +11 +533.995007415167 +21 +-892.635204119545 +31 +1812.39759571907 +12 +540.896876185886 +22 +-887.575434400246 +32 +1809.69309245876 +13 +540.896876185886 +23 +-887.575434400246 +33 +1809.69309245876 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-929.775248028225 +30 +1832.24936277796 +11 +540.896876185886 +21 +-887.575434400246 +31 +1809.69309245876 +12 +653.750224578544 +22 +-887.575434400246 +32 +1809.69309245876 +13 +653.750224578544 +23 +-887.575434400246 +33 +1809.69309245876 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +990.771212819308 +20 +-410.390873558597 +30 +2148.21162800104 +11 +868.04142298445 +21 +-580.006735667279 +31 +2258.00680432354 +12 +891.670534105407 +22 +-595.795202951324 +32 +2148.21162800104 +13 +891.670534105407 +23 +-595.795202951324 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +2258.00680432354 +11 +990.771212819308 +21 +-410.390873558597 +31 +2148.21162800104 +12 +964.515951276275 +22 +-399.51558814382 +32 +2258.00680432354 +13 +964.515951276275 +23 +-399.51558814382 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-845.012275898089 +20 +-788.258546505553 +30 +1988.01128244689 +11 +-781.35466353334 +21 +-731.718944065101 +31 +1933.51796332002 +12 +-828.138788259274 +22 +-805.723050021943 +32 +1963.78062144053 +13 +-828.138788259274 +23 +-805.723050021943 +33 +1963.78062144053 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-781.35466353334 +20 +-731.718944065101 +30 +1933.51796332002 +11 +-845.012275898089 +21 +-788.258546505553 +31 +1988.01128244689 +12 +-804.883917627287 +22 +-707.527532613081 +32 +1967.25758629213 +13 +-804.883917627287 +23 +-707.527532613081 +33 +1967.25758629213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +-413.286070645571 +21 +-997.760836892423 +31 +2011.5925230317 +12 +-210.691411720441 +22 +-1059.21725479392 +32 +2011.5925230317 +13 +-210.691411720441 +23 +-1059.21725479392 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-413.286070645571 +20 +-997.760836892423 +30 +2011.5925230317 +11 +-210.691411720441 +21 +-1059.21725479392 +31 +2058.8118770109 +12 +-413.286070645571 +22 +-997.760836892423 +32 +2058.8118770109 +13 +-413.286070645571 +23 +-997.760836892423 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +619.813665790805 +20 +-414.146250971868 +30 +587.016306884026 +11 +724.33953815002 +21 +-300.031260464802 +31 +631.979456702016 +12 +651.888361812631 +22 +-435.577877671407 +32 +631.979456702016 +13 +651.888361812631 +23 +-435.577877671407 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +724.33953815002 +20 +-300.031260464802 +30 +631.979456702016 +11 +619.813665790805 +21 +-414.146250971868 +31 +587.016306884026 +12 +648.718890655847 +22 +-360.068378836192 +32 +587.016306884026 +13 +648.718890655847 +23 +-360.068378836192 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +724.33953815002 +20 +-300.031260464802 +30 +631.979456702016 +11 +648.718890655847 +21 +-360.068378836192 +31 +587.016306884026 +12 +684.232404647772 +22 +-293.627267317059 +32 +587.016306884026 +13 +684.232404647772 +23 +-293.627267317059 +33 +587.016306884026 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +724.33953815002 +20 +-300.031260464802 +30 +631.979456702016 +11 +684.232404647772 +21 +-293.627267317059 +31 +587.016306884026 +12 +688.700045464263 +22 +-285.268899238265 +32 +587.016306884026 +13 +688.700045464263 +23 +-285.268899238265 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1043.98454271904 +30 +1812.39759571907 +11 +-194.606371158736 +21 +-978.352295145615 +31 +1708.93950189862 +12 +1.80477854883065e-13 +22 +-997.519349743284 +32 +1708.93950189862 +13 +1.80477854883065e-13 +23 +-997.519349743284 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-194.606371158736 +20 +-978.352295145615 +30 +1708.93950189862 +11 +1.80477854883065e-13 +21 +-1043.98454271904 +31 +1812.39759571907 +12 +-203.671280618918 +22 +-1023.92467246733 +32 +1812.39759571907 +13 +-203.671280618918 +23 +-1023.92467246733 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-286.037069662455 +20 +-690.554572920556 +30 +1427.8983600213 +11 +-467.169144021928 +21 +-699.168033082722 +31 +1241.03564002131 +12 +-321.791703197793 +22 +-776.873894119249 +32 +1241.03564002131 +13 +-321.791703197793 +23 +-776.873894119249 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +1241.03564002131 +11 +-286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +-415.26146157539 +22 +-621.482696406623 +32 +1427.8983600213 +13 +-415.26146157539 +23 +-621.482696406623 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-925.06395772174 +20 +-94.0698833092507 +30 +2455.6433200213 +11 +-840.882243605455 +21 +1.80477854883065e-13 +31 +2455.6433200213 +12 +-934.329032542513 +22 +3.60955709766131e-13 +32 +2455.6433200213 +13 +-934.329032542513 +23 +3.60955709766131e-13 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +-925.06395772174 +21 +-94.0698833092507 +31 +2455.6433200213 +12 +-916.376162171087 +22 +-182.278551827736 +32 +2455.6433200213 +13 +-916.376162171087 +23 +-182.278551827736 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +-916.376162171087 +21 +-182.278551827736 +31 +2455.6433200213 +12 +-914.651018565421 +22 +-187.965588142593 +32 +2455.6433200213 +13 +-914.651018565421 +23 +-187.965588142593 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +-914.651018565421 +21 +-187.965588142593 +31 +2455.6433200213 +12 +-887.22732313789 +22 +-278.369396423646 +32 +2455.6433200213 +13 +-887.22732313789 +23 +-278.369396423646 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +-887.22732313789 +21 +-278.369396423646 +31 +2455.6433200213 +12 +-863.207469797099 +22 +-357.552241131722 +32 +2455.6433200213 +13 +-863.207469797099 +23 +-357.552241131722 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +-863.207469797099 +21 +-357.552241131722 +31 +2455.6433200213 +12 +-857.607798059122 +22 +-368.028490102694 +32 +2455.6433200213 +13 +-857.607798059122 +23 +-368.028490102694 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +-857.607798059122 +21 +-368.028490102694 +31 +2455.6433200213 +12 +-813.095615905849 +22 +-451.304925633068 +32 +2455.6433200213 +13 +-813.095615905849 +23 +-451.304925633068 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +-813.095615905849 +21 +-451.304925633068 +31 +2455.6433200213 +12 +-824.724927080674 +22 +-164.047987682633 +32 +2455.6433200213 +13 +-824.724927080674 +23 +-164.047987682633 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-824.724927080674 +20 +-164.047987682633 +30 +2455.6433200213 +11 +-813.095615905849 +21 +-451.304925633068 +31 +2455.6433200213 +12 +-776.873894119249 +22 +-321.791703197793 +32 +2455.6433200213 +13 +-776.873894119249 +23 +-321.791703197793 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-776.873894119249 +20 +-321.791703197793 +30 +2455.6433200213 +11 +-813.095615905849 +21 +-451.304925633068 +31 +2455.6433200213 +12 +-776.866198451135 +22 +-519.085398326623 +32 +2455.6433200213 +13 +-776.866198451135 +23 +-519.085398326623 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-776.873894119249 +20 +-321.791703197793 +30 +2455.6433200213 +11 +-776.866198451135 +21 +-519.085398326623 +31 +2455.6433200213 +12 +-699.168033082722 +22 +-467.169144021928 +32 +2455.6433200213 +13 +-699.168033082722 +23 +-467.169144021928 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +-776.866198451135 +21 +-519.085398326623 +31 +2455.6433200213 +12 +-765.568613945096 +22 +-532.851544877859 +32 +2455.6433200213 +13 +-765.568613945096 +23 +-532.851544877859 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +-765.568613945096 +21 +-532.851544877859 +31 +2455.6433200213 +12 +-705.689427437034 +22 +-605.814544747273 +32 +2455.6433200213 +13 +-705.689427437034 +23 +-605.814544747273 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +-705.689427437034 +21 +-605.814544747273 +31 +2455.6433200213 +12 +-660.670394770277 +22 +-660.670394770277 +32 +2455.6433200213 +13 +-660.670394770277 +23 +-660.670394770277 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +-660.670394770277 +21 +-660.670394770277 +31 +2455.6433200213 +12 +-594.593536632775 +22 +-594.593536632776 +32 +2455.6433200213 +13 +-594.593536632775 +23 +-594.593536632776 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +2455.6433200213 +11 +-660.670394770277 +21 +-660.670394770277 +31 +2455.6433200213 +12 +-642.325255137832 +22 +-675.725861781415 +32 +2455.6433200213 +13 +-642.325255137832 +23 +-675.725861781415 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +2455.6433200213 +11 +-642.325255137832 +21 +-675.725861781415 +31 +2455.6433200213 +12 +-569.385750357394 +22 +-735.585766368266 +32 +2455.6433200213 +13 +-569.385750357394 +23 +-735.585766368266 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +2455.6433200213 +11 +-569.385750357394 +21 +-735.585766368266 +31 +2455.6433200213 +12 +-467.169144021928 +22 +-699.168033082722 +32 +2455.6433200213 +13 +-467.169144021928 +23 +-699.168033082722 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +-569.385750357394 +21 +-735.585766368266 +31 +2455.6433200213 +12 +-519.085398326623 +22 +-776.866198451135 +32 +2455.6433200213 +13 +-519.085398326623 +23 +-776.866198451135 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +-519.085398326623 +21 +-776.866198451135 +31 +2455.6433200213 +12 +-492.93632885036 +22 +-790.843167280949 +32 +2455.6433200213 +13 +-492.93632885036 +23 +-790.843167280949 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +-492.93632885036 +21 +-790.843167280949 +31 +2455.6433200213 +12 +-409.740280777215 +22 +-835.312381443142 +32 +2455.6433200213 +13 +-409.740280777215 +23 +-835.312381443142 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +-409.740280777215 +21 +-835.312381443142 +31 +2455.6433200213 +12 +-321.791703197793 +22 +-776.873894119249 +32 +2455.6433200213 +13 +-321.791703197793 +23 +-776.873894119249 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.873894119249 +30 +2455.6433200213 +11 +-409.740280777215 +21 +-835.312381443142 +31 +2455.6433200213 +12 +-357.552241131723 +22 +-863.207469797099 +32 +2455.6433200213 +13 +-357.552241131723 +23 +-863.207469797099 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.873894119249 +30 +2455.6433200213 +11 +-357.552241131723 +21 +-863.207469797099 +31 +2455.6433200213 +12 +-323.520317728025 +22 +-873.53094089839 +32 +2455.6433200213 +13 +-323.520317728025 +23 +-873.53094089839 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.873894119249 +30 +2455.6433200213 +11 +-323.520317728025 +21 +-873.53094089839 +31 +2455.6433200213 +12 +-233.261861254001 +22 +-900.910544337303 +32 +2455.6433200213 +13 +-233.261861254001 +23 +-900.910544337303 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.873894119249 +30 +2455.6433200213 +11 +-233.261861254001 +21 +-900.910544337303 +31 +2455.6433200213 +12 +-164.047987682633 +22 +-824.724927080674 +32 +2455.6433200213 +13 +-164.047987682633 +23 +-824.724927080674 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +-233.261861254001 +21 +-900.910544337303 +31 +2455.6433200213 +12 +-182.278551827737 +22 +-916.376162171087 +32 +2455.6433200213 +13 +-182.278551827737 +23 +-916.376162171087 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +-182.278551827737 +21 +-916.376162171087 +31 +2455.6433200213 +12 +-141.006393478031 +22 +-920.441114966529 +32 +2455.6433200213 +13 +-141.006393478031 +23 +-920.441114966529 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +-141.006393478031 +21 +-920.441114966529 +31 +2455.6433200213 +12 +0.0 +22 +-840.882243605455 +32 +2455.6433200213 +13 +0.0 +23 +-840.882243605455 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +2455.6433200213 +11 +-141.006393478031 +21 +-920.441114966529 +31 +2455.6433200213 +12 +-47.1482978123039 +22 +-929.685330525077 +32 +2455.6433200213 +13 +-47.1482978123039 +23 +-929.685330525077 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +2455.6433200213 +11 +-47.1482978123039 +21 +-929.685330525077 +31 +2455.6433200213 +12 +1.80477854883065e-13 +22 +-934.329032542513 +32 +2455.6433200213 +13 +1.80477854883065e-13 +23 +-934.329032542513 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +2455.6433200213 +11 +1.80477854883065e-13 +21 +-934.329032542513 +31 +2455.6433200213 +12 +164.047987682633 +22 +-824.724927080674 +32 +2455.6433200213 +13 +164.047987682633 +23 +-824.724927080674 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +1.80477854883065e-13 +21 +-934.329032542513 +31 +2455.6433200213 +12 +47.148335412588 +22 +-929.685326821772 +32 +2455.6433200213 +13 +47.148335412588 +23 +-929.685326821772 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +47.148335412588 +21 +-929.685326821772 +31 +2455.6433200213 +12 +141.00638791784 +22 +-920.44111551416 +32 +2455.6433200213 +13 +141.00638791784 +23 +-920.44111551416 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +141.00638791784 +21 +-920.44111551416 +31 +2455.6433200213 +12 +182.278551827736 +22 +-916.376162171087 +32 +2455.6433200213 +13 +182.278551827736 +23 +-916.376162171087 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +2455.6433200213 +11 +182.278551827736 +21 +-916.376162171087 +31 +2455.6433200213 +12 +321.791703197793 +22 +-776.87389411925 +32 +2455.6433200213 +13 +321.791703197793 +23 +-776.87389411925 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +2455.6433200213 +11 +182.278551827736 +21 +-916.376162171087 +31 +2455.6433200213 +12 +233.261899594599 +22 +-900.91053270681 +32 +2455.6433200213 +13 +233.261899594599 +23 +-900.91053270681 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +2455.6433200213 +11 +233.261899594599 +21 +-900.91053270681 +31 +2455.6433200213 +12 +323.520353242804 +22 +-873.5309301251 +32 +2455.6433200213 +13 +323.520353242804 +23 +-873.5309301251 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +2455.6433200213 +11 +323.520353242804 +21 +-873.5309301251 +31 +2455.6433200213 +12 +467.169144021928 +22 +-699.168033082722 +32 +2455.6433200213 +13 +467.169144021928 +23 +-699.168033082722 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +323.520353242804 +21 +-873.5309301251 +31 +2455.6433200213 +12 +357.552241131722 +22 +-863.2074697971 +32 +2455.6433200213 +13 +357.552241131722 +23 +-863.2074697971 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +357.552241131722 +21 +-863.2074697971 +31 +2455.6433200213 +12 +409.740310523406 +22 +-835.312365543472 +32 +2455.6433200213 +13 +409.740310523406 +23 +-835.312365543472 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +409.740310523406 +21 +-835.312365543472 +31 +2455.6433200213 +12 +492.936359391337 +22 +-790.843150956456 +32 +2455.6433200213 +13 +492.936359391337 +23 +-790.843150956456 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +2455.6433200213 +11 +492.936359391337 +21 +-790.843150956456 +31 +2455.6433200213 +12 +594.593536632776 +22 +-594.593536632776 +32 +2455.6433200213 +13 +594.593536632776 +23 +-594.593536632776 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +2455.6433200213 +11 +492.936359391337 +21 +-790.843150956456 +31 +2455.6433200213 +12 +519.085398326623 +22 +-776.866198451135 +32 +2455.6433200213 +13 +519.085398326623 +23 +-776.866198451135 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +2455.6433200213 +11 +519.085398326623 +21 +-776.866198451135 +31 +2455.6433200213 +12 +569.3857757708 +22 +-735.585745512023 +32 +2455.6433200213 +13 +569.3857757708 +23 +-735.585745512023 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +2455.6433200213 +11 +569.3857757708 +21 +-735.585745512023 +31 +2455.6433200213 +12 +642.325277330117 +22 +-675.725843568677 +32 +2455.6433200213 +13 +642.325277330117 +23 +-675.725843568677 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +2455.6433200213 +11 +642.325277330117 +21 +-675.725843568677 +31 +2455.6433200213 +12 +699.168033082722 +22 +-467.169144021928 +32 +2455.6433200213 +13 +699.168033082722 +23 +-467.169144021928 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +642.325277330117 +21 +-675.725843568677 +31 +2455.6433200213 +12 +660.670394770277 +22 +-660.670394770277 +32 +2455.6433200213 +13 +660.670394770277 +23 +-660.670394770277 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +660.670394770277 +21 +-660.670394770277 +31 +2455.6433200213 +12 +705.689442886146 +22 +-605.814525922476 +32 +2455.6433200213 +13 +705.689442886146 +23 +-605.814525922476 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +705.689442886146 +21 +-605.814525922476 +31 +2455.6433200213 +12 +776.87389411925 +22 +-321.791703197793 +32 +2455.6433200213 +13 +776.87389411925 +23 +-321.791703197793 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +2455.6433200213 +11 +705.689442886146 +21 +-605.814525922476 +31 +2455.6433200213 +12 +765.568628306957 +22 +-532.851527377882 +32 +2455.6433200213 +13 +765.568628306957 +23 +-532.851527377882 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +2455.6433200213 +11 +765.568628306957 +21 +-532.851527377882 +31 +2455.6433200213 +12 +776.866198451135 +22 +-519.085398326623 +32 +2455.6433200213 +13 +776.866198451135 +23 +-519.085398326623 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +2455.6433200213 +11 +776.866198451135 +21 +-519.085398326623 +31 +2455.6433200213 +12 +813.095624444942 +22 +-451.304909657549 +32 +2455.6433200213 +13 +813.095624444942 +23 +-451.304909657549 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +2455.6433200213 +11 +813.095624444942 +21 +-451.304909657549 +31 +2455.6433200213 +12 +824.724927080674 +22 +-164.047987682633 +32 +2455.6433200213 +13 +824.724927080674 +23 +-164.047987682633 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +824.724927080674 +20 +-164.047987682633 +30 +2455.6433200213 +11 +813.095624444942 +21 +-451.304909657549 +31 +2455.6433200213 +12 +857.607805429898 +22 +-368.028476312943 +32 +2455.6433200213 +13 +857.607805429898 +23 +-368.028476312943 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +824.724927080674 +20 +-164.047987682633 +30 +2455.6433200213 +11 +857.607805429898 +21 +-368.028476312943 +31 +2455.6433200213 +12 +840.882243605455 +22 +1.80477854883065e-13 +32 +2455.6433200213 +13 +840.882243605455 +23 +1.80477854883065e-13 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +840.882243605455 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +857.607805429898 +21 +-368.028476312943 +31 +2455.6433200213 +12 +934.329032542513 +22 +1.80477854883065e-13 +32 +2455.6433200213 +13 +934.329032542513 +23 +1.80477854883065e-13 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +934.329032542513 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +857.607805429898 +21 +-368.028476312943 +31 +2455.6433200213 +12 +863.207469797099 +22 +-357.552241131722 +32 +2455.6433200213 +13 +863.207469797099 +23 +-357.552241131722 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +934.329032542513 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +863.207469797099 +21 +-357.552241131722 +31 +2455.6433200213 +12 +887.227326571027 +22 +-278.369385106107 +32 +2455.6433200213 +13 +887.227326571027 +23 +-278.369385106107 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +934.329032542513 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +887.227326571027 +21 +-278.369385106107 +31 +2455.6433200213 +12 +914.651020883606 +22 +-187.965580500561 +32 +2455.6433200213 +13 +914.651020883606 +23 +-187.965580500561 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +934.329032542513 +20 +1.80477854883065e-13 +30 +2455.6433200213 +11 +914.651020883606 +21 +-187.965580500561 +31 +2455.6433200213 +12 +925.063958382437 +22 +-94.0698766010765 +32 +2455.6433200213 +13 +925.063958382437 +23 +-94.0698766010765 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +925.063958382437 +20 +-94.0698766010765 +30 +2455.6433200213 +11 +914.651020883606 +21 +-187.965580500561 +31 +2455.6433200213 +12 +916.376162171087 +22 +-182.278551827737 +32 +2455.6433200213 +13 +916.376162171087 +23 +-182.278551827737 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +288.287545076695 +20 +-1033.5656801692 +30 +2082.82163169725 +11 +210.691411720441 +21 +-1059.21725479392 +31 +2058.8118770109 +12 +287.457769982496 +22 +-1035.93043460251 +32 +2058.8118770109 +13 +287.457769982496 +23 +-1035.93043460251 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +210.691411720441 +20 +-1059.21725479392 +30 +2058.8118770109 +11 +288.287545076695 +21 +-1033.5656801692 +31 +2082.82163169725 +12 +209.215453044867 +22 +-1051.79710945546 +32 +2148.21162800104 +13 +209.215453044867 +23 +-1051.79710945546 +33 +2148.21162800104 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +288.287545076695 +21 +-1033.5656801692 +31 +2082.82163169725 +12 +320.792446313246 +22 +-1019.67559748903 +32 +2128.61109777939 +13 +320.792446313246 +23 +-1019.67559748903 +33 +2128.61109777939 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +320.792446313246 +21 +-1019.67559748903 +31 +2128.61109777939 +12 +349.642943907379 +22 +-1009.19889581502 +32 +2148.21162800104 +13 +349.642943907379 +23 +-1009.19889581502 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-997.519349743284 +30 +1708.93950189862 +11 +-47.1482966446679 +21 +-929.685330640079 +31 +1614.7610800213 +12 +1.80477854883065e-13 +22 +-934.329032542513 +32 +1614.7610800213 +13 +1.80477854883065e-13 +23 +-934.329032542513 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-47.1482966446679 +20 +-929.685330640079 +30 +1614.7610800213 +11 +1.80477854883065e-13 +21 +-997.519349743284 +31 +1708.93950189862 +12 +-141.006394822338 +22 +-920.441114834126 +32 +1614.7610800213 +13 +-141.006394822338 +23 +-920.441114834126 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-141.006394822338 +20 +-920.441114834126 +30 +1614.7610800213 +11 +-194.606371158736 +21 +-978.352295145615 +31 +1708.93950189862 +12 +-182.278551827737 +22 +-916.376162171087 +32 +1614.7610800213 +13 +-182.278551827737 +23 +-916.376162171087 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-194.606371158736 +20 +-978.352295145615 +30 +1708.93950189862 +11 +-141.006394822338 +21 +-920.441114834126 +31 +1614.7610800213 +12 +1.80477854883065e-13 +22 +-997.519349743284 +32 +1708.93950189862 +13 +1.80477854883065e-13 +23 +-997.519349743284 +33 +1708.93950189862 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-751.507544713982 +20 +-880.404127848991 +30 +2025.39393021379 +11 +-680.521947020029 +21 +-831.877044035484 +31 +2050.14904337117 +12 +-680.414811030127 +22 +-831.964968270127 +32 +2020.57508939225 +13 +-680.414811030127 +23 +-831.964968270127 +33 +2020.57508939225 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-680.521947020029 +20 +-831.877044035484 +30 +2050.14904337117 +11 +-751.507544713982 +21 +-880.404127848991 +31 +2025.39393021379 +12 +-751.210146881832 +22 +-880.075378254302 +32 +2048.54571267062 +13 +-751.210146881832 +23 +-880.075378254302 +33 +2048.54571267062 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +30.3548842506176 +20 +-1076.23680115831 +30 +2002.82389255955 +11 +23.5350452913723 +21 +-976.438072820957 +31 +1997.22699536883 +12 +23.5350452913723 +22 +-1076.43485544616 +32 +1997.22699536883 +13 +23.5350452913723 +23 +-1076.43485544616 +33 +1997.22699536883 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +23.5350452913723 +20 +-976.438072820957 +30 +1997.22699536883 +11 +30.3548842506176 +21 +-1076.23680115831 +31 +2002.82389255955 +12 +30.3548842506176 +22 +-976.101409846015 +32 +2002.82389255955 +13 +30.3548842506176 +23 +-976.101409846015 +33 +2002.82389255955 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +914.026066884025 +11 +1.80477854883065e-13 +21 +-849.217148276931 +31 +855.37186879426 +12 +165.674046918965 +22 +-832.899678896021 +32 +855.37186879426 +13 +165.674046918965 +23 +-832.899678896021 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-849.217148276931 +30 +855.37186879426 +11 +164.047987682633 +21 +-824.724927080674 +31 +914.026066884025 +12 +0.0 +22 +-840.882243605455 +32 +914.026066884025 +13 +0.0 +23 +-840.882243605455 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +165.674046918965 +20 +-832.899678896021 +30 +855.37186879426 +11 +1.80477854883065e-13 +21 +-847.505736434059 +31 +796.153149972084 +12 +165.340167031437 +22 +-831.221151351825 +32 +796.153149972084 +13 +165.340167031437 +23 +-831.221151351825 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-847.505736434059 +30 +796.153149972084 +11 +165.674046918965 +21 +-832.899678896021 +31 +855.37186879426 +12 +1.80477854883065e-13 +22 +-849.217148276931 +32 +855.37186879426 +13 +1.80477854883065e-13 +23 +-849.217148276931 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +829.407026995336 +20 +-554.192057578438 +30 +1708.93950189862 +11 +964.515951276275 +21 +-399.515588143821 +31 +1812.39759571907 +12 +868.04142298445 +22 +-580.006735667279 +32 +1812.39759571907 +13 +868.04142298445 +23 +-580.006735667279 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +964.515951276275 +20 +-399.515588143821 +30 +1812.39759571907 +11 +829.407026995336 +21 +-554.192057578438 +31 +1708.93950189862 +12 +921.587710511789 +22 +-381.734128610352 +32 +1708.93950189862 +13 +921.587710511789 +23 +-381.734128610352 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +1812.39759571907 +11 +990.771212819308 +21 +-410.390873558597 +31 +1922.19277204157 +12 +891.670534105407 +22 +-595.795202951324 +32 +1922.19277204157 +13 +891.670534105407 +23 +-595.795202951324 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +990.771212819308 +20 +-410.390873558597 +30 +1922.19277204157 +11 +868.04142298445 +21 +-580.006735667279 +31 +1812.39759571907 +12 +964.515951276275 +22 +-399.515588143821 +32 +1812.39759571907 +13 +964.515951276275 +23 +-399.515588143821 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +2258.00680432354 +11 +705.352696568272 +21 +-705.352696568272 +31 +2361.46489814399 +12 +738.20854961057 +22 +-738.208549610569 +32 +2258.00680432354 +13 +738.20854961057 +23 +-738.208549610569 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +705.352696568272 +20 +-705.352696568272 +30 +2361.46489814399 +11 +868.04142298445 +21 +-580.006735667279 +31 +2258.00680432354 +12 +829.407026995336 +22 +-554.192057578438 +32 +2361.46489814399 +13 +829.407026995336 +23 +-554.192057578438 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +829.407026995336 +20 +-554.192057578438 +30 +2361.46489814399 +11 +660.670394770277 +21 +-660.670394770277 +31 +2455.6433200213 +12 +705.352696568272 +22 +-705.352696568272 +32 +2361.46489814399 +13 +705.352696568272 +23 +-705.352696568272 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +660.670394770277 +20 +-660.670394770277 +30 +2455.6433200213 +11 +829.407026995336 +21 +-554.192057578438 +31 +2361.46489814399 +12 +705.689442886146 +22 +-605.814525922476 +32 +2455.6433200213 +13 +705.689442886146 +23 +-605.814525922476 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +705.689442886146 +20 +-605.814525922476 +30 +2455.6433200213 +11 +829.407026995336 +21 +-554.192057578438 +31 +2361.46489814399 +12 +765.568628306957 +22 +-532.851527377882 +32 +2455.6433200213 +13 +765.568628306957 +23 +-532.851527377882 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +765.568628306957 +20 +-532.851527377882 +30 +2455.6433200213 +11 +829.407026995336 +21 +-554.192057578438 +31 +2361.46489814399 +12 +776.866198451135 +22 +-519.085398326623 +32 +2455.6433200213 +13 +776.866198451135 +23 +-519.085398326623 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +776.866198451135 +20 +-519.085398326623 +30 +1614.7610800213 +11 +921.587710511789 +21 +-381.734128610352 +31 +1708.93950189862 +12 +829.407026995336 +22 +-554.192057578438 +32 +1708.93950189862 +13 +829.407026995336 +23 +-554.192057578438 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +921.587710511789 +20 +-381.734128610352 +30 +1708.93950189862 +11 +776.866198451135 +21 +-519.085398326623 +31 +1614.7610800213 +12 +813.09562491145 +22 +-451.304908784773 +32 +1614.7610800213 +13 +813.09562491145 +23 +-451.304908784773 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +921.587710511789 +20 +-381.734128610352 +30 +1708.93950189862 +11 +813.09562491145 +21 +-451.304908784773 +31 +1614.7610800213 +12 +857.607805708123 +22 +-368.02847579242 +32 +1614.7610800213 +13 +857.607805708123 +23 +-368.02847579242 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +921.587710511789 +20 +-381.734128610352 +30 +1708.93950189862 +11 +857.607805708123 +21 +-368.02847579242 +31 +1614.7610800213 +12 +863.207469797099 +22 +-357.552241131722 +32 +1614.7610800213 +13 +863.207469797099 +23 +-357.552241131722 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +1241.03564002131 +11 +621.482696406623 +21 +-415.26146157539 +31 +1427.8983600213 +12 +699.168033082722 +22 +-467.169144021928 +32 +1241.03564002131 +13 +699.168033082722 +23 +-467.169144021928 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +621.482696406623 +20 +-415.26146157539 +30 +1427.8983600213 +11 +776.87389411925 +21 +-321.791703197793 +31 +1241.03564002131 +12 +690.554572920556 +22 +-286.037069662455 +32 +1427.8983600213 +13 +690.554572920556 +23 +-286.037069662455 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +820.033554718597 +20 +-339.669019965462 +30 +1427.8983600213 +11 +660.325364744673 +21 +-441.215302798659 +31 +1614.7610800213 +12 +738.010701420772 +22 +-493.122985245198 +32 +1427.8983600213 +13 +738.010701420772 +23 +-493.122985245198 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +660.325364744673 +20 +-441.215302798659 +30 +1614.7610800213 +11 +820.033554718597 +21 +-339.669019965462 +31 +1427.8983600213 +12 +733.714233519903 +22 +-303.914386430124 +32 +1614.7610800213 +13 +733.714233519903 +23 +-303.914386430124 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-784.019466456977 +30 +631.979456702016 +11 +-145.428823687577 +21 +-731.120068617964 +31 +587.016306884026 +12 +0.0 +22 +-745.443557551535 +32 +587.016306884026 +13 +0.0 +23 +-745.443557551535 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-145.428823687577 +20 +-731.120068617964 +30 +587.016306884026 +11 +0.0 +21 +-784.019466456977 +31 +631.979456702016 +12 +-152.954610178005 +22 +-768.954752250597 +32 +631.979456702016 +13 +-152.954610178005 +23 +-768.954752250597 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-357.552241131723 +20 +-863.207469797099 +30 +2455.6433200213 +11 +-554.192057578438 +21 +-829.407026995335 +31 +2361.46489814399 +12 +-381.734128610353 +22 +-921.587710511788 +32 +2361.46489814399 +13 +-381.734128610353 +23 +-921.587710511788 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-554.192057578438 +20 +-829.407026995335 +30 +2361.46489814399 +11 +-357.552241131723 +21 +-863.207469797099 +31 +2455.6433200213 +12 +-519.085398326623 +22 +-776.866198451135 +32 +2455.6433200213 +13 +-519.085398326623 +23 +-776.866198451135 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-519.085398326623 +20 +-776.866198451135 +30 +2455.6433200213 +11 +-357.552241131723 +21 +-863.207469797099 +31 +2455.6433200213 +12 +-409.740280777215 +22 +-835.312381443142 +32 +2455.6433200213 +13 +-409.740280777215 +23 +-835.312381443142 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-519.085398326623 +20 +-776.866198451135 +30 +2455.6433200213 +11 +-409.740280777215 +21 +-835.312381443142 +31 +2455.6433200213 +12 +-492.93632885036 +22 +-790.843167280949 +32 +2455.6433200213 +13 +-492.93632885036 +23 +-790.843167280949 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +849.217148276931 +20 +1.80477854883065e-13 +30 +855.37186879426 +11 +824.724927080674 +21 +-164.047987682633 +31 +914.026066884025 +12 +832.899678896021 +22 +-165.674046918965 +32 +855.37186879426 +13 +832.899678896021 +23 +-165.674046918965 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +824.724927080674 +20 +-164.047987682633 +30 +914.026066884025 +11 +849.217148276931 +21 +1.80477854883065e-13 +31 +855.37186879426 +12 +840.882243605455 +22 +1.80477854883065e-13 +32 +914.026066884025 +13 +840.882243605455 +23 +1.80477854883065e-13 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1072.40303302985 +20 +1.80477854883065e-13 +30 +2148.21162800104 +11 +1023.92467246733 +21 +-203.671280618918 +31 +2258.00680432354 +12 +1051.79710945546 +22 +-209.215453044867 +32 +2148.21162800104 +13 +1051.79710945546 +23 +-209.215453044867 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1023.92467246733 +20 +-203.671280618918 +30 +2258.00680432354 +11 +1072.40303302985 +21 +1.80477854883065e-13 +31 +2148.21162800104 +12 +1043.98454271904 +22 +1.80477854883065e-13 +32 +2258.00680432354 +13 +1043.98454271904 +23 +1.80477854883065e-13 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-951.073041235167 +30 +1878.29564871262 +11 +180.675224578544 +21 +-917.447181233325 +31 +1850.69961858573 +12 +180.675224578544 +22 +-951.073041235166 +32 +1878.29564871262 +13 +180.675224578544 +23 +-951.073041235166 +33 +1878.29564871262 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-917.447181233325 +30 +1850.69961858573 +11 +653.750224578544 +21 +-951.073041235167 +31 +1878.29564871262 +12 +653.750224578544 +22 +-917.447181233325 +32 +1850.69961858573 +13 +653.750224578544 +23 +-917.447181233325 +33 +1850.69961858573 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-324.326404167689 +20 +-782.993203577332 +30 +796.153149972084 +11 +-464.344143695271 +21 +-694.940121314314 +31 +738.078199114136 +12 +-319.845809128627 +22 +-772.176090266528 +32 +738.078199114136 +13 +-319.845809128627 +23 +-772.176090266528 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-464.344143695271 +20 +-694.940121314314 +30 +738.078199114136 +11 +-324.326404167689 +21 +-782.993203577332 +31 +796.153149972084 +12 +-470.848959476119 +22 +-704.67526609701 +32 +796.153149972084 +13 +-470.848959476119 +23 +-704.67526609701 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-324.981333125909 +20 +-784.574341950658 +30 +855.37186879426 +11 +-470.848959476119 +21 +-704.67526609701 +31 +796.153149972084 +12 +-324.326404167689 +22 +-782.993203577332 +32 +796.153149972084 +13 +-324.326404167689 +23 +-782.993203577332 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-470.848959476119 +20 +-704.67526609701 +30 +796.153149972084 +11 +-324.981333125909 +21 +-784.574341950658 +31 +855.37186879426 +12 +-471.799768952456 +22 +-706.098253038492 +32 +855.37186879426 +13 +-471.799768952456 +23 +-706.098253038492 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.87389411925 +30 +914.026066884025 +11 +-471.799768952456 +21 +-706.098253038492 +31 +855.37186879426 +12 +-324.981333125909 +22 +-784.574341950658 +32 +855.37186879426 +13 +-324.981333125909 +23 +-784.574341950658 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-471.799768952456 +20 +-706.098253038492 +30 +855.37186879426 +11 +-321.791703197793 +21 +-776.87389411925 +31 +914.026066884025 +12 +-467.169144021929 +22 +-699.168033082722 +32 +914.026066884025 +13 +-467.169144021929 +23 +-699.168033082722 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +914.026066884025 +11 +-324.981333125909 +21 +-784.574341950658 +31 +855.37186879426 +12 +-165.674046918965 +22 +-832.899678896021 +32 +855.37186879426 +13 +-165.674046918965 +23 +-832.899678896021 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-324.981333125909 +20 +-784.574341950658 +30 +855.37186879426 +11 +-164.047987682633 +21 +-824.724927080674 +31 +914.026066884025 +12 +-321.791703197793 +22 +-776.87389411925 +32 +914.026066884025 +13 +-321.791703197793 +23 +-776.87389411925 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-1011.8021195433 +30 +1991.91176299638 +11 +653.750224578544 +21 +-999.174771652236 +31 +1950.28497564898 +12 +180.675224578544 +22 +-999.174771652236 +32 +1950.28497564898 +13 +180.675224578544 +23 +-999.174771652236 +33 +1950.28497564898 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-999.174771652236 +30 +1950.28497564898 +11 +180.675224578544 +21 +-1011.8021195433 +31 +1991.91176299638 +12 +653.750224578544 +22 +-1011.8021195433 +32 +1991.91176299638 +13 +653.750224578544 +23 +-1011.8021195433 +33 +1991.91176299638 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-595.795202951324 +20 +-891.670534105406 +30 +2148.21162800104 +11 +-644.327893757466 +21 +-861.580735902195 +31 +2058.8118770109 +12 +-599.99837764929 +22 +-897.961029579872 +32 +2058.8118770109 +13 +-599.99837764929 +23 +-897.961029579872 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-644.327893757466 +20 +-861.580735902195 +30 +2058.8118770109 +11 +-595.795202951324 +21 +-891.670534105406 +31 +2148.21162800104 +12 +-644.282480658799 +22 +-861.555930289753 +32 +2059.38164426315 +13 +-644.282480658799 +23 +-861.555930289753 +33 +2059.38164426315 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-644.282480658799 +20 +-861.555930289753 +30 +2059.38164426315 +11 +-595.795202951324 +21 +-891.670534105406 +31 +2148.21162800104 +12 +-655.637457605706 +22 +-847.372595440649 +32 +2104.03168141582 +13 +-655.637457605706 +23 +-847.372595440649 +33 +2104.03168141582 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-655.637457605706 +20 +-847.372595440649 +30 +2104.03168141582 +11 +-595.795202951324 +21 +-891.670534105406 +31 +2148.21162800104 +12 +-680.351354626835 +22 +-823.413171149779 +32 +2137.7839549476 +13 +-680.351354626835 +23 +-823.413171149779 +33 +2137.7839549476 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-680.351354626835 +20 +-823.413171149779 +30 +2137.7839549476 +11 +-595.795202951324 +21 +-891.670534105406 +31 +2148.21162800104 +12 +-700.811796716974 +22 +-805.485642916867 +32 +2148.21162800104 +13 +-700.811796716974 +23 +-805.485642916867 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +194.606371158736 +20 +-978.352295145615 +30 +1708.93950189862 +11 +141.006388747634 +21 +-920.441115432432 +31 +1614.7610800213 +12 +182.278551827736 +22 +-916.376162171087 +32 +1614.7610800213 +13 +182.278551827736 +23 +-916.376162171087 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +141.006388747634 +20 +-920.441115432432 +30 +1614.7610800213 +11 +194.606371158736 +21 +-978.352295145615 +31 +1708.93950189862 +12 +47.1483359530928 +22 +-929.685326768537 +32 +1614.7610800213 +13 +47.1483359530928 +23 +-929.685326768537 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +47.1483359530928 +20 +-929.685326768537 +30 +1614.7610800213 +11 +1.80477854883065e-13 +21 +-997.519349743284 +31 +1708.93950189862 +12 +1.80477854883065e-13 +22 +-934.329032542513 +32 +1614.7610800213 +13 +1.80477854883065e-13 +23 +-934.329032542513 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-997.519349743284 +30 +1708.93950189862 +11 +47.1483359530928 +21 +-929.685326768537 +31 +1614.7610800213 +12 +194.606371158736 +22 +-978.352295145615 +32 +1708.93950189862 +13 +194.606371158736 +23 +-978.352295145615 +33 +1708.93950189862 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-43.0469725205791 +20 +-975.725342330674 +30 +2017.42442965997 +11 +-45.6079918995535 +21 +-1075.47655248308 +31 +2025.86697911698 +12 +-43.0469725205787 +22 +-1075.72879087574 +32 +2017.42442965997 +13 +-43.0469725205787 +23 +-1075.72879087574 +33 +2017.42442965997 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-45.6079918995535 +20 +-1075.47655248308 +30 +2025.86697911698 +11 +-43.0469725205791 +21 +-975.725342330674 +31 +2017.42442965997 +12 +-45.6079918995534 +22 +-975.978478371127 +32 +2025.86697911698 +13 +-45.6079918995534 +23 +-975.978478371127 +33 +2025.86697911698 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +921.587710511789 +20 +-381.734128610352 +30 +2361.46489814399 +11 +776.866198451135 +21 +-519.085398326623 +31 +2455.6433200213 +12 +829.407026995336 +22 +-554.192057578438 +32 +2361.46489814399 +13 +829.407026995336 +23 +-554.192057578438 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +776.866198451135 +20 +-519.085398326623 +30 +2455.6433200213 +11 +921.587710511789 +21 +-381.734128610352 +31 +2361.46489814399 +12 +813.095624444942 +22 +-451.304909657549 +32 +2455.6433200213 +13 +813.095624444942 +23 +-451.304909657549 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +813.095624444942 +20 +-451.304909657549 +30 +2455.6433200213 +11 +921.587710511789 +21 +-381.734128610352 +31 +2361.46489814399 +12 +857.607805429898 +22 +-368.028476312943 +32 +2455.6433200213 +13 +857.607805429898 +23 +-368.028476312943 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +857.607805429898 +20 +-368.028476312943 +30 +2455.6433200213 +11 +921.587710511789 +21 +-381.734128610352 +31 +2361.46489814399 +12 +863.207469797099 +22 +-357.552241131722 +32 +2455.6433200213 +13 +863.207469797099 +23 +-357.552241131722 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-798.491399420167 +20 +-250.528338641286 +30 +2549.0746800213 +11 +-776.873894119249 +21 +-321.791703197793 +31 +2455.6433200213 +12 +-776.87389411925 +22 +-321.791703197793 +32 +2549.0746800213 +13 +-776.87389411925 +23 +-321.791703197793 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-776.873894119249 +20 +-321.791703197793 +30 +2455.6433200213 +11 +-798.491399420167 +21 +-250.528338641286 +31 +2549.0746800213 +12 +-824.724927080674 +22 +-164.047987682633 +32 +2455.6433200213 +13 +-824.724927080674 +23 +-164.047987682633 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-824.724927080674 +20 +-164.047987682633 +30 +2455.6433200213 +11 +-798.491399420167 +21 +-250.528338641286 +31 +2549.0746800213 +12 +-823.172319072743 +22 +-169.166250356441 +32 +2549.0746800213 +13 +-823.172319072743 +23 +-169.166250356441 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-824.724927080674 +20 +-164.047987682633 +30 +2455.6433200213 +11 +-823.172319072743 +21 +-169.166250356441 +31 +2549.0746800213 +12 +-824.724927080674 +22 +-164.047987682633 +32 +2549.0746800213 +13 +-824.724927080674 +23 +-164.047987682633 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-997.119327169824 +30 +2170.81091140737 +11 +320.792446313246 +21 +-1019.67559748903 +31 +2128.61109777939 +12 +653.750224578544 +22 +-1019.67559748903 +32 +2128.61109777939 +13 +653.750224578544 +23 +-1019.67559748903 +33 +2128.61109777939 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +320.792446313246 +20 +-1019.67559748903 +30 +2128.61109777939 +11 +653.750224578544 +21 +-997.119327169824 +31 +2170.81091140737 +12 +349.642943907379 +22 +-1009.19889581502 +32 +2148.21162800104 +13 +349.642943907379 +23 +-1009.19889581502 +33 +2148.21162800104 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +349.642943907379 +20 +-1009.19889581502 +30 +2148.21162800104 +11 +653.750224578544 +21 +-997.119327169824 +31 +2170.81091140737 +12 +369.410361108008 +22 +-997.119327169824 +32 +2170.81091140737 +13 +369.410361108008 +23 +-997.119327169824 +33 +2170.81091140737 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-700.735203605455 +30 +1241.03564002131 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1054.1729200213 +12 +0.0 +22 +-794.166563605455 +32 +1054.1729200213 +13 +0.0 +23 +-794.166563605455 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-154.93421062823 +20 +-778.906875772646 +30 +1054.1729200213 +11 +0.0 +21 +-700.735203605455 +31 +1241.03564002131 +12 +-136.706656519425 +22 +-687.270773156591 +32 +1241.03564002131 +13 +-136.706656519425 +23 +-687.270773156591 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +914.026066884025 +11 +-250.282436127117 +21 +-604.235251721862 +31 +1054.1729200213 +12 +-321.791703197793 +22 +-776.87389411925 +32 +914.026066884025 +13 +-321.791703197793 +23 +-776.87389411925 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-250.282436127117 +20 +-604.235251721862 +30 +1054.1729200213 +11 +-164.047987682633 +21 +-824.724927080674 +31 +914.026066884025 +12 +-127.592879465023 +22 +-641.452721848564 +32 +1054.1729200213 +13 +-127.592879465023 +23 +-641.452721848564 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-136.706656519425 +20 +-687.270773156591 +30 +1241.03564002131 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1054.1729200213 +12 +-154.93421062823 +22 +-778.906875772646 +32 +1054.1729200213 +13 +-154.93421062823 +23 +-778.906875772646 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-303.914386430124 +20 +-733.714233519903 +30 +1054.1729200213 +11 +-136.706656519425 +21 +-687.270773156591 +31 +1241.03564002131 +12 +-268.159752894786 +22 +-647.394912321209 +32 +1241.03564002131 +13 +-268.159752894786 +23 +-647.394912321209 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-145.820433573828 +20 +-733.088824464619 +30 +1427.8983600213 +11 +-321.791703197793 +21 +-776.873894119249 +31 +1241.03564002131 +12 +-164.047987682633 +22 +-824.724927080674 +32 +1241.03564002131 +13 +-164.047987682633 +23 +-824.724927080674 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.873894119249 +30 +1241.03564002131 +11 +-145.820433573828 +21 +-733.088824464619 +31 +1427.8983600213 +12 +-286.037069662455 +22 +-690.554572920556 +32 +1427.8983600213 +13 +-286.037069662455 +23 +-690.554572920556 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +731.773963185201 +21 +-406.167739356189 +31 +2549.0746800213 +12 +699.168033082722 +22 +-467.169144021929 +32 +2549.0746800213 +13 +699.168033082722 +23 +-467.169144021929 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +731.773963185201 +20 +-406.167739356189 +30 +2549.0746800213 +11 +699.168033082722 +21 +-467.169144021928 +31 +2455.6433200213 +12 +776.87389411925 +22 +-321.791703197793 +32 +2455.6433200213 +13 +776.87389411925 +23 +-321.791703197793 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +731.773963185201 +20 +-406.167739356189 +30 +2549.0746800213 +11 +776.87389411925 +21 +-321.791703197793 +31 +2455.6433200213 +12 +771.834245650684 +22 +-331.220222324155 +32 +2549.0746800213 +13 +771.834245650684 +23 +-331.220222324155 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +771.834245650684 +20 +-331.220222324155 +30 +2549.0746800213 +11 +776.87389411925 +21 +-321.791703197793 +31 +2455.6433200213 +12 +776.87389411925 +22 +-321.791703197793 +32 +2549.0746800213 +13 +776.87389411925 +23 +-321.791703197793 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-847.505736434059 +30 +796.153149972084 +11 +-163.055979488767 +21 +-819.73776511114 +31 +738.078199114136 +12 +1.80477854883065e-13 +22 +-835.797377356766 +32 +738.078199114136 +13 +1.80477854883065e-13 +23 +-835.797377356766 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-163.055979488767 +20 +-819.73776511114 +30 +738.078199114136 +11 +1.80477854883065e-13 +21 +-847.505736434059 +31 +796.153149972084 +12 +-165.340167031437 +22 +-831.221151351825 +32 +796.153149972084 +13 +-165.340167031437 +23 +-831.221151351825 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-46.4727423170739 +20 +-976.418879754098 +30 +2034.64693744883 +11 +-46.4180537270787 +21 +-976.457504352767 +31 +2035.20220002131 +12 +-46.4727423170739 +22 +-1075.39138200091 +32 +2034.64693744883 +13 +-46.4727423170739 +23 +-1075.39138200091 +33 +2034.64693744883 +70 +2 + 0 +3DFACE + 8 +body_half_outside +10 +-46.4727423170739 +20 +-1075.39138200091 +30 +2034.64693744883 +11 +-45.6079918995534 +21 +-976.044954856512 +31 +2043.42689578067 +12 +-45.6079918995532 +22 +-1075.47655248308 +32 +2043.42689578067 +13 +-45.6079918995532 +23 +-1075.47655248308 +33 +2043.42689578067 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-45.6079918995534 +20 +-976.044954856512 +30 +2043.42689578067 +11 +-46.4727423170739 +21 +-1075.39138200091 +31 +2034.64693744883 +12 +-46.4180537270787 +22 +-976.457504352767 +32 +2035.20220002131 +13 +-46.4180537270787 +23 +-976.457504352767 +33 +2035.20220002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-814.429823327873 +30 +682.822310520627 +11 +-152.954610178005 +21 +-768.954752250597 +31 +631.979456702016 +12 +0.0 +22 +-784.019466456977 +32 +631.979456702016 +13 +0.0 +23 +-784.019466456977 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-152.954610178005 +20 +-768.954752250597 +30 +631.979456702016 +11 +0.0 +21 +-814.429823327873 +31 +682.822310520627 +12 +-158.887376492573 +22 +-798.780782641381 +32 +682.822310520627 +13 +-158.887376492573 +23 +-798.780782641381 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-835.797377356766 +30 +738.078199114136 +11 +-158.887376492573 +21 +-798.780782641381 +31 +682.822310520627 +12 +0.0 +22 +-814.429823327873 +32 +682.822310520627 +13 +0.0 +23 +-814.429823327873 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-158.887376492573 +20 +-798.780782641381 +30 +682.822310520627 +11 +1.80477854883065e-13 +21 +-835.797377356766 +31 +738.078199114136 +12 +-163.055979488767 +22 +-819.73776511114 +32 +738.078199114136 +13 +-163.055979488767 +23 +-819.73776511114 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-868.04142298445 +20 +-580.00673566728 +30 +1812.39759571907 +11 +-705.352696568271 +21 +-705.352696568271 +31 +1708.93950189862 +12 +-738.20854961057 +22 +-738.20854961057 +32 +1812.39759571907 +13 +-738.20854961057 +23 +-738.20854961057 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-705.352696568271 +20 +-705.352696568271 +30 +1708.93950189862 +11 +-868.04142298445 +21 +-580.00673566728 +31 +1812.39759571907 +12 +-829.407026995335 +22 +-554.192057578438 +32 +1708.93950189862 +13 +-829.407026995335 +23 +-554.192057578438 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1038.25578712258 +30 +2035.20217666346 +11 +288.287531523413 +21 +-1033.5656801692 +31 +1987.58272162968 +12 +653.750224578544 +22 +-1033.56568016919 +32 +1987.58272162967 +13 +653.750224578544 +23 +-1033.56568016919 +33 +1987.58272162967 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +288.287531523413 +20 +-1033.5656801692 +30 +1987.58272162968 +11 +653.750224578544 +21 +-1038.25578712258 +31 +2035.20217666346 +12 +287.457754814725 +22 +-1035.93043920361 +32 +2011.5925230317 +13 +287.457754814725 +23 +-1035.93043920361 +33 +2011.5925230317 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +287.457754814725 +20 +-1035.93043920361 +30 +2011.5925230317 +11 +653.750224578544 +21 +-1038.25578712258 +31 +2035.20217666346 +12 +279.792110043812 +22 +-1038.25578712258 +32 +2035.20217666346 +13 +279.792110043812 +23 +-1038.25578712258 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +831.221151351825 +20 +-165.340167031437 +30 +796.153149972084 +11 +849.217148276931 +21 +1.80477854883065e-13 +31 +855.37186879426 +12 +832.899678896021 +22 +-165.674046918965 +32 +855.37186879426 +13 +832.899678896021 +23 +-165.674046918965 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +849.217148276931 +20 +1.80477854883065e-13 +30 +855.37186879426 +11 +831.221151351825 +21 +-165.340167031437 +31 +796.153149972084 +12 +847.505736434059 +22 +1.80477854883065e-13 +32 +796.153149972084 +13 +847.505736434059 +23 +1.80477854883065e-13 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +475.358481968201 +20 +-929.775248028225 +30 +1832.24936277796 +11 +653.750224578544 +21 +-966.763694030251 +31 +1862.60499591753 +12 +422.745208264425 +22 +-966.763694030251 +32 +1862.60499591753 +13 +422.745208264425 +23 +-966.763694030251 +33 +1862.60499591753 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-966.763694030251 +30 +1862.60499591753 +11 +475.358481968201 +21 +-929.775248028225 +31 +1832.24936277796 +12 +653.750224578544 +22 +-929.775248028225 +32 +1832.24936277796 +13 +653.750224578544 +23 +-929.775248028225 +33 +1832.24936277796 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1038.25578712258 +30 +2035.20217666346 +11 +287.457769982496 +21 +-1035.93043460251 +31 +2058.8118770109 +12 +279.792110043812 +22 +-1038.25578712258 +32 +2035.20217666346 +13 +279.792110043812 +23 +-1038.25578712258 +33 +2035.20217666346 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +287.457769982496 +20 +-1035.93043460251 +30 +2058.8118770109 +11 +653.750224578544 +21 +-1038.25578712258 +31 +2035.20217666346 +12 +653.750224578544 +22 +-1033.56568016919 +32 +2082.82163169725 +13 +653.750224578544 +23 +-1033.56568016919 +33 +2082.82163169725 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +287.457769982496 +20 +-1035.93043460251 +30 +2058.8118770109 +11 +653.750224578544 +21 +-1033.56568016919 +31 +2082.82163169725 +12 +288.287545076695 +22 +-1033.5656801692 +32 +2082.82163169725 +13 +288.287545076695 +23 +-1033.5656801692 +33 +2082.82163169725 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-917.447181233325 +30 +2219.70473474119 +11 +180.675224578544 +21 +-951.073041235166 +31 +2192.10870461431 +12 +180.675224578544 +22 +-917.447181233325 +32 +2219.70473474119 +13 +180.675224578544 +23 +-917.447181233325 +33 +2219.70473474119 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-951.073041235166 +30 +2192.10870461431 +11 +653.750224578544 +21 +-917.447181233325 +31 +2219.70473474119 +12 +653.750224578544 +22 +-951.073041235167 +32 +2192.10870461431 +13 +653.750224578544 +23 +-951.073041235167 +33 +2192.10870461431 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +286.037069662455 +20 +-690.554572920556 +30 +1427.8983600213 +11 +164.047987682633 +21 +-824.724927080674 +31 +1241.03564002131 +12 +321.791703197793 +22 +-776.873894119249 +32 +1241.03564002131 +13 +321.791703197793 +23 +-776.873894119249 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +1241.03564002131 +11 +286.037069662455 +21 +-690.554572920556 +31 +1427.8983600213 +12 +145.820433573828 +22 +-733.088824464618 +32 +1427.8983600213 +13 +145.820433573828 +23 +-733.088824464618 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +840.882243605455 +20 +1.80477854883065e-13 +30 +1241.03564002131 +11 +733.088824464618 +21 +-145.820433573828 +31 +1427.8983600213 +12 +824.724927080674 +22 +-164.047987682633 +32 +1241.03564002131 +13 +824.724927080674 +23 +-164.047987682633 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +733.088824464618 +20 +-145.820433573828 +30 +1427.8983600213 +11 +840.882243605455 +21 +1.80477854883065e-13 +31 +1241.03564002131 +12 +747.450883605455 +22 +1.80477854883065e-13 +32 +1427.8983600213 +13 +747.450883605455 +23 +1.80477854883065e-13 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +752.435044439405 +20 +-311.668800211604 +30 +682.822310520627 +11 +819.73776511114 +21 +-163.055979488767 +31 +738.078199114136 +12 +772.176090266528 +22 +-319.845809128627 +32 +738.078199114136 +13 +772.176090266528 +23 +-319.845809128627 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +819.73776511114 +20 +-163.055979488767 +30 +738.078199114136 +11 +752.435044439405 +21 +-311.668800211604 +31 +682.822310520627 +12 +798.780782641381 +22 +-158.887376492573 +32 +682.822310520627 +13 +798.780782641381 +23 +-158.887376492573 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-849.217148276931 +20 +3.60955709766131e-13 +30 +855.37186879426 +11 +-831.221151351825 +21 +-165.340167031437 +31 +796.153149972084 +12 +-832.899678896021 +22 +-165.674046918964 +32 +855.37186879426 +13 +-832.899678896021 +23 +-165.674046918964 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-831.221151351825 +20 +-165.340167031437 +30 +796.153149972084 +11 +-849.217148276931 +21 +3.60955709766131e-13 +31 +855.37186879426 +12 +-847.505736434059 +22 +1.80477854883065e-13 +32 +796.153149972084 +13 +-847.505736434059 +23 +1.80477854883065e-13 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +209.215453044867 +20 +-1051.79710945546 +30 +1922.19277204157 +11 +1.80477854883065e-13 +21 +-1043.98454271904 +31 +1812.39759571907 +12 +203.671280618918 +22 +-1023.92467246733 +32 +1812.39759571907 +13 +203.671280618918 +23 +-1023.92467246733 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1043.98454271904 +30 +1812.39759571907 +11 +209.215453044867 +21 +-1051.79710945546 +31 +1922.19277204157 +12 +1.80477854883065e-13 +22 +-1072.40303302985 +32 +1922.19277204157 +13 +1.80477854883065e-13 +23 +-1072.40303302985 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-917.447181233325 +30 +1850.69961858573 +11 +180.675224578544 +21 +-879.083714298798 +31 +1830.19391829555 +12 +180.675224578544 +22 +-917.447181233325 +32 +1850.69961858573 +13 +180.675224578544 +23 +-917.447181233325 +33 +1850.69961858573 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-879.083714298798 +30 +1830.19391829555 +11 +653.750224578544 +21 +-917.447181233325 +31 +1850.69961858573 +12 +653.750224578544 +22 +-879.083714298799 +32 +1830.19391829555 +13 +653.750224578544 +23 +-879.083714298799 +33 +1830.19391829555 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +2549.0746800213 +11 +321.791703197793 +21 +-776.87389411925 +31 +2455.6433200213 +12 +467.169144021928 +22 +-699.168033082722 +32 +2455.6433200213 +13 +467.169144021928 +23 +-699.168033082722 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +2455.6433200213 +11 +467.169144021928 +21 +-699.168033082722 +31 +2549.0746800213 +12 +321.791703197793 +22 +-776.87389411925 +32 +2549.0746800213 +13 +321.791703197793 +23 +-776.87389411925 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +2549.0746800213 +11 +467.169144021928 +21 +-699.168033082722 +31 +2549.0746800213 +12 +443.635403824213 +22 +-711.747079288974 +32 +2549.0746800213 +13 +443.635403824213 +23 +-711.747079288974 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +2549.0746800213 +11 +443.635403824213 +21 +-711.747079288974 +31 +2549.0746800213 +12 +368.760184385968 +22 +-751.768717885475 +32 +2549.0746800213 +13 +368.760184385968 +23 +-751.768717885475 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1079.96854760957 +20 +1.80477854883065e-13 +30 +2011.5925230317 +11 +1059.21725479392 +21 +-210.691411720441 +31 +2058.8118770109 +12 +1059.21725479392 +22 +-210.691411720441 +32 +2011.5925230317 +13 +1059.21725479392 +23 +-210.691411720441 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1059.21725479392 +20 +-210.691411720441 +30 +2058.8118770109 +11 +1079.96854760957 +21 +1.80477854883065e-13 +31 +2011.5925230317 +12 +1079.96854760957 +22 +1.80477854883065e-13 +32 +2058.8118770109 +13 +1079.96854760957 +23 +1.80477854883065e-13 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +705.352696568272 +20 +-705.352696568272 +30 +1708.93950189862 +11 +642.325276783758 +21 +-675.725844017062 +31 +1614.7610800213 +12 +660.670394770277 +22 +-660.670394770277 +32 +1614.7610800213 +13 +660.670394770277 +23 +-660.670394770277 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +642.325276783758 +20 +-675.725844017062 +30 +1614.7610800213 +11 +705.352696568272 +21 +-705.352696568272 +31 +1708.93950189862 +12 +569.38577628374 +22 +-735.585745091064 +32 +1614.7610800213 +13 +569.38577628374 +23 +-735.585745091064 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +569.38577628374 +20 +-735.585745091064 +30 +1614.7610800213 +11 +554.192057578438 +21 +-829.407026995336 +31 +1708.93950189862 +12 +519.085398326623 +22 +-776.866198451135 +32 +1614.7610800213 +13 +519.085398326623 +23 +-776.866198451135 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +554.192057578438 +20 +-829.407026995336 +30 +1708.93950189862 +11 +569.38577628374 +21 +-735.585745091064 +31 +1614.7610800213 +12 +705.352696568272 +22 +-705.352696568272 +32 +1708.93950189862 +13 +705.352696568272 +23 +-705.352696568272 +33 +1708.93950189862 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +738.20854961057 +20 +-738.20854961057 +30 +1812.39759571907 +11 +554.192057578438 +21 +-829.407026995336 +31 +1708.93950189862 +12 +705.352696568272 +22 +-705.352696568272 +32 +1708.93950189862 +13 +705.352696568272 +23 +-705.352696568272 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +554.192057578438 +20 +-829.407026995336 +30 +1708.93950189862 +11 +738.20854961057 +21 +-738.20854961057 +31 +1812.39759571907 +12 +653.750224578543 +22 +-795.278099285779 +32 +1791.22238449044 +13 +653.750224578543 +23 +-795.278099285779 +33 +1791.22238449044 +70 +15 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578543 +20 +-795.278099285779 +30 +1791.22238449044 +11 +738.20854961057 +21 +-738.20854961057 +31 +1812.39759571907 +12 +653.750224578544 +22 +-807.521705673267 +32 +1812.39759571907 +13 +653.750224578544 +23 +-807.521705673267 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +554.192057578438 +20 +-829.407026995336 +30 +1708.93950189862 +11 +600.307476319437 +21 +-841.785968318108 +31 +1795.80300977859 +12 +577.57828073944 +22 +-864.406983345072 +32 +1802.66501966685 +13 +577.57828073944 +23 +-864.406983345072 +33 +1802.66501966685 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +600.307476319437 +20 +-841.785968318108 +30 +1795.80300977859 +11 +554.192057578438 +21 +-829.407026995336 +31 +1708.93950189862 +12 +653.750224578543 +22 +-795.278099285779 +32 +1791.22238449044 +13 +653.750224578543 +23 +-795.278099285779 +33 +1791.22238449044 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +554.385481313987 +20 +-554.385481313987 +30 +631.979456702016 +11 +677.173649450057 +21 +-452.47296672438 +31 +682.822310520627 +12 +575.888850875701 +22 +-575.888850875701 +32 +682.822310520627 +13 +575.888850875701 +23 +-575.888850875701 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +677.173649450057 +20 +-452.47296672438 +30 +682.822310520627 +11 +554.385481313987 +21 +-554.385481313987 +31 +631.979456702016 +12 +651.888361812631 +22 +-435.577877671407 +32 +631.979456702016 +13 +651.888361812631 +23 +-435.577877671407 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-38.8881027186482 +20 +-1075.973485995 +30 +2009.6437315188 +11 +-43.0469725205787 +21 +-1075.72879087574 +31 +2017.42442965997 +12 +-39.9297534839436 +22 +-1076.03581015323 +32 +2011.5925230317 +13 +-39.9297534839436 +23 +-1076.03581015323 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-43.0469725205787 +20 +-1075.72879087574 +30 +2017.42442965997 +11 +-38.8881027186482 +21 +-1075.973485995 +31 +2009.6437315188 +12 +-38.8881027186488 +22 +-975.669199508814 +32 +2009.6437315188 +13 +-38.8881027186488 +23 +-975.669199508814 +33 +2009.6437315188 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-43.0469725205787 +20 +-1075.72879087574 +30 +2017.42442965997 +11 +-38.8881027186488 +21 +-975.669199508814 +31 +2009.6437315188 +12 +-43.0469725205791 +22 +-975.725342330674 +32 +2017.42442965997 +13 +-43.0469725205791 +23 +-975.725342330674 +33 +2017.42442965997 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-841.785968318108 +30 +2274.60134354834 +11 +653.750224578543 +21 +-795.278127928135 +31 +2279.18196601546 +12 +600.307509232711 +22 +-841.785968318108 +32 +2274.60134354834 +13 +600.307509232711 +23 +-841.785968318108 +33 +2274.60134354834 +70 +0 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-978.669071362051 +30 +1911.92150871446 +11 +653.750224578544 +21 +-951.073041235167 +31 +1878.29564871262 +12 +180.675224578544 +22 +-951.073041235166 +32 +1878.29564871262 +13 +180.675224578544 +23 +-951.073041235166 +33 +1878.29564871262 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-951.073041235167 +30 +1878.29564871262 +11 +180.675224578544 +21 +-978.669071362051 +31 +1911.92150871446 +12 +653.750224578544 +22 +-978.669071362052 +32 +1911.92150871446 +13 +653.750224578544 +23 +-978.669071362052 +33 +1911.92150871446 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-997.519349743284 +30 +2361.46489814399 +11 +-203.671280618918 +21 +-1023.92467246733 +31 +2258.00680432354 +12 +1.80477854883065e-13 +22 +-1043.98454271904 +32 +2258.00680432354 +13 +1.80477854883065e-13 +23 +-1043.98454271904 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-203.671280618918 +20 +-1023.92467246733 +30 +2258.00680432354 +11 +1.80477854883065e-13 +21 +-997.519349743284 +31 +2361.46489814399 +12 +-194.606371158736 +22 +-978.352295145615 +32 +2361.46489814399 +13 +-194.606371158736 +23 +-978.352295145615 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-381.734128610353 +20 +-921.587710511788 +30 +2361.46489814399 +11 +-580.006735667279 +21 +-868.041422984449 +31 +2258.00680432354 +12 +-399.515588143821 +22 +-964.515951276275 +32 +2258.00680432354 +13 +-399.515588143821 +23 +-964.515951276275 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-580.006735667279 +20 +-868.041422984449 +30 +2258.00680432354 +11 +-381.734128610353 +21 +-921.587710511788 +31 +2361.46489814399 +12 +-554.192057578438 +22 +-829.407026995335 +32 +2361.46489814399 +13 +-554.192057578438 +23 +-829.407026995335 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-929.775248028225 +30 +2238.15499054897 +11 +533.995170927003 +21 +-892.63511672065 +31 +2258.00680432354 +12 +475.358507495069 +22 +-929.775248028225 +32 +2238.15499054897 +13 +475.358507495069 +23 +-929.775248028225 +33 +2238.15499054897 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +533.995170927003 +20 +-892.63511672065 +30 +2258.00680432354 +11 +653.750224578544 +21 +-929.775248028225 +31 +2238.15499054897 +12 +540.896920479706 +22 +-887.575434400246 +32 +2260.71126086817 +13 +540.896920479706 +23 +-887.575434400246 +33 +2260.71126086817 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +540.896920479706 +20 +-887.575434400246 +30 +2260.71126086817 +11 +653.750224578544 +21 +-929.775248028225 +31 +2238.15499054897 +12 +653.750224578544 +22 +-887.575434400246 +32 +2260.71126086817 +13 +653.750224578544 +23 +-887.575434400246 +33 +2260.71126086817 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-18.6906684275082 +20 +-1076.56003774335 +30 +1993.0681255669 +11 +-26.4713665686843 +21 +-976.148870417647 +31 +1997.22699536883 +12 +-26.4713665686843 +22 +-1076.14565304285 +32 +1997.22699536883 +13 +-26.4713665686843 +23 +-1076.14565304285 +33 +1997.22699536883 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-26.4713665686843 +20 +-976.148870417647 +30 +1997.22699536883 +11 +-18.6906684275082 +21 +-1076.56003774335 +31 +1993.0681255669 +12 +-18.6906684275082 +22 +-976.666250664317 +32 +1993.0681255669 +13 +-18.6906684275082 +23 +-976.666250664317 +33 +1993.0681255669 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021929 +30 +914.026066884025 +11 +604.235251721863 +21 +-250.282436127116 +31 +1054.1729200213 +12 +543.797359730523 +22 +-363.353779128852 +32 +1054.1729200213 +13 +543.797359730523 +23 +-363.353779128852 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +604.235251721863 +20 +-250.282436127116 +30 +1054.1729200213 +11 +699.168033082722 +21 +-467.169144021929 +31 +914.026066884025 +12 +776.87389411925 +22 +-321.791703197793 +32 +914.026066884025 +13 +776.87389411925 +23 +-321.791703197793 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +35.9517814413364 +20 +-975.958401912124 +30 +2009.6437315188 +11 +30.3548842506176 +21 +-1076.23680115831 +31 +2002.82389255955 +12 +35.9517814413362 +22 +-1076.26268839831 +32 +2009.6437315188 +13 +35.9517814413362 +23 +-1076.26268839831 +33 +2009.6437315188 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +30.3548842506176 +20 +-1076.23680115831 +30 +2002.82389255955 +11 +35.9517814413364 +21 +-975.958401912124 +31 +2009.6437315188 +12 +30.3548842506176 +22 +-976.101409846015 +32 +2002.82389255955 +13 +30.3548842506176 +23 +-976.101409846015 +33 +2002.82389255955 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-45.6079918995532 +20 +-1075.47655248308 +30 +2043.42689578067 +11 +-43.0469725205787 +21 +-975.791818816059 +31 +2051.86944523768 +12 +-43.0469725205787 +22 +-1075.72879087574 +32 +2051.86944523768 +13 +-43.0469725205787 +23 +-1075.72879087574 +33 +2051.86944523768 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-43.0469725205787 +20 +-975.791818816059 +30 +2051.86944523768 +11 +-45.6079918995532 +21 +-1075.47655248308 +31 +2043.42689578067 +12 +-45.6079918995534 +22 +-976.044954856512 +32 +2043.42689578067 +13 +-45.6079918995534 +23 +-976.044954856512 +33 +2043.42689578067 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +843.013713767209 +20 +-637.259985333474 +30 +2192.10870461431 +11 +180.675224578544 +21 +-609.663955206589 +31 +2158.48284461247 +12 +876.866128931272 +22 +-609.663955206588 +32 +2158.48284461247 +13 +876.866128931272 +23 +-609.663955206588 +33 +2158.48284461247 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-609.663955206589 +30 +2158.48284461247 +11 +843.013713767209 +21 +-637.259985333474 +31 +2192.10870461431 +12 +180.675224578544 +22 +-637.259985333474 +32 +2192.10870461431 +13 +180.675224578544 +23 +-637.259985333474 +33 +2192.10870461431 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-554.192057578438 +20 +-829.407026995335 +30 +1708.93950189862 +11 +-569.385752125536 +21 +-735.58576491719 +31 +1614.7610800213 +12 +-519.085398326623 +22 +-776.866198451135 +32 +1614.7610800213 +13 +-519.085398326623 +23 +-776.866198451135 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-569.385752125536 +20 +-735.58576491719 +30 +1614.7610800213 +11 +-554.192057578438 +21 +-829.407026995335 +31 +1708.93950189862 +12 +-642.32525459148 +22 +-675.725862229795 +32 +1614.7610800213 +13 +-642.32525459148 +23 +-675.725862229795 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-642.32525459148 +20 +-675.725862229795 +30 +1614.7610800213 +11 +-705.352696568271 +21 +-705.352696568271 +31 +1708.93950189862 +12 +-660.670394770277 +22 +-660.670394770277 +32 +1614.7610800213 +13 +-660.670394770277 +23 +-660.670394770277 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-705.352696568271 +20 +-705.352696568271 +30 +1708.93950189862 +11 +-642.32525459148 +21 +-675.725862229795 +31 +1614.7610800213 +12 +-554.192057578438 +22 +-829.407026995335 +32 +1708.93950189862 +13 +-554.192057578438 +23 +-829.407026995335 +33 +1708.93950189862 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-1079.96854760957 +20 +3.60955709766131e-13 +30 +2058.8118770109 +11 +-1059.21725479392 +21 +-210.691411720441 +31 +2011.5925230317 +12 +-1059.21725479392 +22 +-210.691411720441 +32 +2058.8118770109 +13 +-1059.21725479392 +23 +-210.691411720441 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1059.21725479392 +20 +-210.691411720441 +30 +2011.5925230317 +11 +-1079.96854760957 +21 +3.60955709766131e-13 +31 +2058.8118770109 +12 +-1079.96854760957 +22 +3.60955709766131e-13 +32 +2011.5925230317 +13 +-1079.96854760957 +23 +3.60955709766131e-13 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-687.270773156591 +20 +-136.706656519425 +30 +1241.03564002131 +11 +-794.166563605455 +21 +1.80477854883065e-13 +31 +1054.1729200213 +12 +-778.906875772646 +22 +-154.93421062823 +32 +1054.1729200213 +13 +-778.906875772646 +23 +-154.93421062823 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-794.166563605455 +20 +1.80477854883065e-13 +30 +1054.1729200213 +11 +-687.270773156591 +21 +-136.706656519425 +31 +1241.03564002131 +12 +-700.735203605455 +22 +1.80477854883065e-13 +32 +1241.03564002131 +13 +-700.735203605455 +23 +1.80477854883065e-13 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578543 +20 +-808.286776169451 +30 +1814.69356131783 +11 +653.750224578544 +21 +-807.521705673267 +31 +1812.39759571907 +12 +670.391132645368 +22 +-794.16651328432 +32 +1813.3028368105 +13 +670.391132645368 +23 +-794.16651328432 +33 +1813.3028368105 +70 +2 + 0 +3DFACE + 8 +body_half_outside +10 +738.20854961057 +20 +-738.20854961057 +30 +1812.39759571907 +11 +670.391132645368 +21 +-794.16651328432 +31 +1813.3028368105 +12 +653.750224578544 +22 +-807.521705673267 +32 +1812.39759571907 +13 +653.750224578544 +23 +-807.521705673267 +33 +1812.39759571907 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +670.391132645368 +20 +-794.16651328432 +30 +1813.3028368105 +11 +738.20854961057 +21 +-738.20854961057 +31 +1812.39759571907 +12 +724.87187698787 +22 +-750.87609961724 +32 +1817.56657040449 +13 +724.87187698787 +23 +-750.87609961724 +33 +1817.56657040449 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +724.87187698787 +20 +-750.87609961724 +30 +1817.56657040449 +11 +738.20854961057 +21 +-738.20854961057 +31 +1812.39759571907 +12 +739.771122243662 +22 +-739.771122243661 +32 +1820.9352284623 +13 +739.771122243662 +23 +-739.771122243661 +33 +1820.9352284623 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +324.981333125909 +20 +-784.574341950659 +30 +855.37186879426 +11 +165.340167031437 +21 +-831.221151351825 +31 +796.153149972084 +12 +324.326404167689 +22 +-782.993203577332 +32 +796.153149972084 +13 +324.326404167689 +23 +-782.993203577332 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +165.340167031437 +20 +-831.221151351825 +30 +796.153149972084 +11 +324.981333125909 +21 +-784.574341950659 +31 +855.37186879426 +12 +165.674046918965 +22 +-832.899678896021 +32 +855.37186879426 +13 +165.674046918965 +23 +-832.899678896021 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +768.954752250597 +20 +-152.954610178005 +30 +631.979456702016 +11 +814.429823327873 +21 +1.80477854883065e-13 +31 +682.822310520627 +12 +798.780782641381 +22 +-158.887376492573 +32 +682.822310520627 +13 +798.780782641381 +23 +-158.887376492573 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +814.429823327873 +20 +1.80477854883065e-13 +30 +682.822310520627 +11 +768.954752250597 +21 +-152.954610178005 +31 +631.979456702016 +12 +784.019466456977 +22 +1.80477854883065e-13 +32 +631.979456702016 +13 +784.019466456977 +23 +1.80477854883065e-13 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +381.734128610352 +20 +-921.587710511788 +30 +1708.93950189862 +11 +323.520353196241 +21 +-873.530930139225 +31 +1614.7610800213 +12 +357.552241131722 +22 +-863.2074697971 +32 +1614.7610800213 +13 +357.552241131722 +23 +-863.2074697971 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +323.520353196241 +20 +-873.530930139225 +30 +1614.7610800213 +11 +381.734128610352 +21 +-921.587710511788 +31 +1708.93950189862 +12 +233.261898600639 +22 +-900.910533008324 +32 +1614.7610800213 +13 +233.261898600639 +23 +-900.910533008324 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +233.261898600639 +20 +-900.910533008324 +30 +1614.7610800213 +11 +194.606371158736 +21 +-978.352295145615 +31 +1708.93950189862 +12 +182.278551827736 +22 +-916.376162171087 +32 +1614.7610800213 +13 +182.278551827736 +23 +-916.376162171087 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +194.606371158736 +20 +-978.352295145615 +30 +1708.93950189862 +11 +233.261898600639 +21 +-900.910533008324 +31 +1614.7610800213 +12 +381.734128610352 +22 +-921.587710511788 +32 +1708.93950189862 +13 +381.734128610352 +23 +-921.587710511788 +33 +1708.93950189862 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +399.51558814382 +20 +-964.515951276276 +30 +1812.39759571907 +11 +194.606371158736 +21 +-978.352295145615 +31 +1708.93950189862 +12 +381.734128610352 +22 +-921.587710511788 +32 +1708.93950189862 +13 +381.734128610352 +23 +-921.587710511788 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +194.606371158736 +20 +-978.352295145615 +30 +1708.93950189862 +11 +399.51558814382 +21 +-964.515951276276 +31 +1812.39759571907 +12 +203.671280618918 +22 +-1023.92467246733 +32 +1812.39759571907 +13 +203.671280618918 +23 +-1023.92467246733 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-654.019523605455 +20 +1.80477854883065e-13 +30 +1054.1729200213 +11 +-778.906875772646 +21 +-154.93421062823 +31 +1054.1729200213 +12 +-794.166563605455 +22 +1.80477854883065e-13 +32 +1054.1729200213 +13 +-794.166563605455 +23 +1.80477854883065e-13 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-778.906875772646 +20 +-154.93421062823 +30 +1054.1729200213 +11 +-654.019523605455 +21 +1.80477854883065e-13 +31 +1054.1729200213 +12 +-733.714233519903 +22 +-303.914386430124 +32 +1054.1729200213 +13 +-733.714233519903 +23 +-303.914386430124 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-733.714233519903 +20 +-303.914386430124 +30 +1054.1729200213 +11 +-654.019523605455 +21 +1.80477854883065e-13 +31 +1054.1729200213 +12 +-660.325364744672 +22 +-441.215302798659 +32 +1054.1729200213 +13 +-660.325364744672 +23 +-441.215302798659 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-660.325364744672 +20 +-441.215302798659 +30 +1054.1729200213 +11 +-654.019523605455 +21 +1.80477854883065e-13 +31 +1054.1729200213 +12 +-641.452721848564 +22 +-127.592879465023 +32 +1054.1729200213 +13 +-641.452721848564 +23 +-127.592879465023 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-660.325364744672 +20 +-441.215302798659 +30 +1054.1729200213 +11 +-641.452721848564 +21 +-127.592879465023 +31 +1054.1729200213 +12 +-561.560562517035 +22 +-561.560562517035 +32 +1054.1729200213 +13 +-561.560562517035 +23 +-561.560562517035 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-561.560562517035 +20 +-561.560562517035 +30 +1054.1729200213 +11 +-641.452721848564 +21 +-127.592879465023 +31 +1054.1729200213 +12 +-604.235251721862 +22 +-250.282436127116 +32 +1054.1729200213 +13 +-604.235251721862 +23 +-250.282436127116 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-561.560562517035 +20 +-561.560562517035 +30 +1054.1729200213 +11 +-604.235251721862 +21 +-250.282436127116 +31 +1054.1729200213 +12 +-543.797359730523 +22 +-363.353779128852 +32 +1054.1729200213 +13 +-543.797359730523 +23 +-363.353779128852 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-561.560562517035 +20 +-561.560562517035 +30 +1054.1729200213 +11 +-543.797359730523 +21 +-363.353779128852 +31 +1054.1729200213 +12 +-441.215302798659 +22 +-660.325364744672 +32 +1054.1729200213 +13 +-441.215302798659 +23 +-660.325364744672 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-441.215302798659 +20 +-660.325364744672 +30 +1054.1729200213 +11 +-543.797359730523 +21 +-363.353779128852 +31 +1054.1729200213 +12 +-462.461640169813 +22 +-462.461640169813 +32 +1054.1729200213 +13 +-462.461640169813 +23 +-462.461640169813 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-441.215302798659 +20 +-660.325364744672 +30 +1054.1729200213 +11 +-462.461640169813 +21 +-462.461640169813 +31 +1054.1729200213 +12 +-363.353779128852 +22 +-543.797359730523 +32 +1054.1729200213 +13 +-363.353779128852 +23 +-543.797359730523 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-441.215302798659 +20 +-660.325364744672 +30 +1054.1729200213 +11 +-363.353779128852 +21 +-543.797359730523 +31 +1054.1729200213 +12 +-303.914386430124 +22 +-733.714233519903 +32 +1054.1729200213 +13 +-303.914386430124 +23 +-733.714233519903 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-303.914386430124 +20 +-733.714233519903 +30 +1054.1729200213 +11 +-363.353779128852 +21 +-543.797359730523 +31 +1054.1729200213 +12 +-250.282436127117 +22 +-604.235251721862 +32 +1054.1729200213 +13 +-250.282436127117 +23 +-604.235251721862 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-303.914386430124 +20 +-733.714233519903 +30 +1054.1729200213 +11 +-250.282436127117 +21 +-604.235251721862 +31 +1054.1729200213 +12 +-154.93421062823 +22 +-778.906875772646 +32 +1054.1729200213 +13 +-154.93421062823 +23 +-778.906875772646 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-154.93421062823 +20 +-778.906875772646 +30 +1054.1729200213 +11 +-250.282436127117 +21 +-604.235251721862 +31 +1054.1729200213 +12 +-127.592879465023 +22 +-641.452721848564 +32 +1054.1729200213 +13 +-127.592879465023 +23 +-641.452721848564 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-154.93421062823 +20 +-778.906875772646 +30 +1054.1729200213 +11 +-127.592879465023 +21 +-641.452721848564 +31 +1054.1729200213 +12 +0.0 +22 +-794.166563605455 +32 +1054.1729200213 +13 +0.0 +23 +-794.166563605455 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-794.166563605455 +30 +1054.1729200213 +11 +-127.592879465023 +21 +-641.452721848564 +31 +1054.1729200213 +12 +0.0 +22 +-654.019523605455 +32 +1054.1729200213 +13 +0.0 +23 +-654.019523605455 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-794.166563605455 +30 +1054.1729200213 +11 +0.0 +21 +-654.019523605455 +31 +1054.1729200213 +12 +127.592879465023 +22 +-641.452721848564 +32 +1054.1729200213 +13 +127.592879465023 +23 +-641.452721848564 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-794.166563605455 +30 +1054.1729200213 +11 +127.592879465023 +21 +-641.452721848564 +31 +1054.1729200213 +12 +154.93421062823 +22 +-778.906875772646 +32 +1054.1729200213 +13 +154.93421062823 +23 +-778.906875772646 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +154.93421062823 +20 +-778.906875772646 +30 +1054.1729200213 +11 +127.592879465023 +21 +-641.452721848564 +31 +1054.1729200213 +12 +250.282436127116 +22 +-604.235251721862 +32 +1054.1729200213 +13 +250.282436127116 +23 +-604.235251721862 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +154.93421062823 +20 +-778.906875772646 +30 +1054.1729200213 +11 +250.282436127116 +21 +-604.235251721862 +31 +1054.1729200213 +12 +303.914386430124 +22 +-733.714233519903 +32 +1054.1729200213 +13 +303.914386430124 +23 +-733.714233519903 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +303.914386430124 +20 +-733.714233519903 +30 +1054.1729200213 +11 +250.282436127116 +21 +-604.235251721862 +31 +1054.1729200213 +12 +363.353779128852 +22 +-543.797359730523 +32 +1054.1729200213 +13 +363.353779128852 +23 +-543.797359730523 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +303.914386430124 +20 +-733.714233519903 +30 +1054.1729200213 +11 +363.353779128852 +21 +-543.797359730523 +31 +1054.1729200213 +12 +441.215302798659 +22 +-660.325364744672 +32 +1054.1729200213 +13 +441.215302798659 +23 +-660.325364744672 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +441.215302798659 +20 +-660.325364744672 +30 +1054.1729200213 +11 +363.353779128852 +21 +-543.797359730523 +31 +1054.1729200213 +12 +462.461640169813 +22 +-462.461640169813 +32 +1054.1729200213 +13 +462.461640169813 +23 +-462.461640169813 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +441.215302798659 +20 +-660.325364744672 +30 +1054.1729200213 +11 +462.461640169813 +21 +-462.461640169813 +31 +1054.1729200213 +12 +561.560562517035 +22 +-561.560562517035 +32 +1054.1729200213 +13 +561.560562517035 +23 +-561.560562517035 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +561.560562517035 +20 +-561.560562517035 +30 +1054.1729200213 +11 +462.461640169813 +21 +-462.461640169813 +31 +1054.1729200213 +12 +543.797359730523 +22 +-363.353779128852 +32 +1054.1729200213 +13 +543.797359730523 +23 +-363.353779128852 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +561.560562517035 +20 +-561.560562517035 +30 +1054.1729200213 +11 +543.797359730523 +21 +-363.353779128852 +31 +1054.1729200213 +12 +604.235251721863 +22 +-250.282436127116 +32 +1054.1729200213 +13 +604.235251721863 +23 +-250.282436127116 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +561.560562517035 +20 +-561.560562517035 +30 +1054.1729200213 +11 +604.235251721863 +21 +-250.282436127116 +31 +1054.1729200213 +12 +660.325364744673 +22 +-441.215302798659 +32 +1054.1729200213 +13 +660.325364744673 +23 +-441.215302798659 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +660.325364744673 +20 +-441.215302798659 +30 +1054.1729200213 +11 +604.235251721863 +21 +-250.282436127116 +31 +1054.1729200213 +12 +641.452721848564 +22 +-127.592879465023 +32 +1054.1729200213 +13 +641.452721848564 +23 +-127.592879465023 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +660.325364744673 +20 +-441.215302798659 +30 +1054.1729200213 +11 +641.452721848564 +21 +-127.592879465023 +31 +1054.1729200213 +12 +654.019523605455 +22 +0.0 +32 +1054.1729200213 +13 +654.019523605455 +23 +0.0 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +660.325364744673 +20 +-441.215302798659 +30 +1054.1729200213 +11 +654.019523605455 +21 +0.0 +31 +1054.1729200213 +12 +794.166563605455 +22 +1.80477854883065e-13 +32 +1054.1729200213 +13 +794.166563605455 +23 +1.80477854883065e-13 +33 +1054.1729200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +660.325364744673 +20 +-441.215302798659 +30 +1054.1729200213 +11 +794.166563605455 +21 +1.80477854883065e-13 +31 +1054.1729200213 +12 +733.714233519903 +22 +-303.914386430124 +32 +1054.1729200213 +13 +733.714233519903 +23 +-303.914386430124 +33 +1054.1729200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +733.714233519903 +20 +-303.914386430124 +30 +1054.1729200213 +11 +794.166563605455 +21 +1.80477854883065e-13 +31 +1054.1729200213 +12 +778.906875772646 +22 +-154.93421062823 +32 +1054.1729200213 +13 +778.906875772646 +23 +-154.93421062823 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-934.329032542513 +30 +2455.6433200213 +11 +-194.606371158736 +21 +-978.352295145615 +31 +2361.46489814399 +12 +1.80477854883065e-13 +22 +-997.519349743284 +32 +2361.46489814399 +13 +1.80477854883065e-13 +23 +-997.519349743284 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-194.606371158736 +20 +-978.352295145615 +30 +2361.46489814399 +11 +1.80477854883065e-13 +21 +-934.329032542513 +31 +2455.6433200213 +12 +-182.278551827737 +22 +-916.376162171087 +32 +2455.6433200213 +13 +-182.278551827737 +23 +-916.376162171087 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-182.278551827737 +20 +-916.376162171087 +30 +2455.6433200213 +11 +1.80477854883065e-13 +21 +-934.329032542513 +31 +2455.6433200213 +12 +-47.1482978123039 +22 +-929.685330525077 +32 +2455.6433200213 +13 +-47.1482978123039 +23 +-929.685330525077 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-182.278551827737 +20 +-916.376162171087 +30 +2455.6433200213 +11 +-47.1482978123039 +21 +-929.685330525077 +31 +2455.6433200213 +12 +-141.006393478031 +22 +-920.441114966529 +32 +2455.6433200213 +13 +-141.006393478031 +23 +-920.441114966529 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +843.013713767209 +20 +-637.259985333474 +30 +2192.10870461431 +11 +180.675224578544 +21 +-670.885845335315 +31 +2219.70473474119 +12 +180.675224578544 +22 +-637.259985333474 +32 +2192.10870461431 +13 +180.675224578544 +23 +-637.259985333474 +33 +2192.10870461431 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-670.885845335315 +30 +2219.70473474119 +11 +843.013713767209 +21 +-637.259985333474 +31 +2192.10870461431 +12 +806.222028237971 +22 +-670.885845335315 +32 +2219.70473474119 +13 +806.222028237971 +23 +-670.885845335315 +33 +2219.70473474119 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-635.110018052195 +20 +-545.224061178794 +30 +2549.0746800213 +11 +-594.593536632775 +21 +-594.593536632776 +31 +2455.6433200213 +12 +-594.593536632776 +22 +-594.593536632776 +32 +2549.0746800213 +13 +-594.593536632776 +23 +-594.593536632776 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +2455.6433200213 +11 +-635.110018052195 +21 +-545.224061178794 +31 +2549.0746800213 +12 +-699.168033082722 +22 +-467.169144021928 +32 +2455.6433200213 +13 +-699.168033082722 +23 +-467.169144021928 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +-635.110018052195 +21 +-545.224061178794 +31 +2549.0746800213 +12 +-689.000369065216 +22 +-479.558478474255 +32 +2549.0746800213 +13 +-689.000369065216 +23 +-479.558478474255 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +2455.6433200213 +11 +-689.000369065216 +21 +-479.558478474255 +31 +2549.0746800213 +12 +-699.168033082722 +22 +-467.169144021929 +32 +2549.0746800213 +13 +-699.168033082722 +23 +-467.169144021929 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +863.207469797099 +20 +-357.552241131722 +30 +1614.7610800213 +11 +978.352295145615 +21 +-194.606371158736 +31 +1708.93950189862 +12 +921.587710511789 +22 +-381.734128610352 +32 +1708.93950189862 +13 +921.587710511789 +23 +-381.734128610352 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +978.352295145615 +20 +-194.606371158736 +30 +1708.93950189862 +11 +863.207469797099 +21 +-357.552241131722 +31 +1614.7610800213 +12 +887.227327057414 +22 +-278.369383502706 +32 +1614.7610800213 +13 +887.227327057414 +23 +-278.369383502706 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +978.352295145615 +20 +-194.606371158736 +30 +1708.93950189862 +11 +887.227327057414 +21 +-278.369383502706 +31 +1614.7610800213 +12 +914.651020925795 +22 +-187.965580361484 +32 +1614.7610800213 +13 +914.651020925795 +23 +-187.965580361484 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +978.352295145615 +20 +-194.606371158736 +30 +1708.93950189862 +11 +914.651020925795 +21 +-187.965580361484 +31 +1614.7610800213 +12 +916.376162171087 +22 +-182.278551827737 +32 +1614.7610800213 +13 +916.376162171087 +23 +-182.278551827737 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +158.887376492573 +20 +-798.780782641381 +30 +682.822310520627 +11 +0.0 +21 +-784.019466456977 +31 +631.979456702016 +12 +152.954610178005 +22 +-768.954752250597 +32 +631.979456702016 +13 +152.954610178005 +23 +-768.954752250597 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-784.019466456977 +30 +631.979456702016 +11 +158.887376492573 +21 +-798.780782641381 +31 +682.822310520627 +12 +0.0 +22 +-814.429823327873 +32 +682.822310520627 +13 +0.0 +23 +-814.429823327873 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-580.006735667279 +20 +-868.04142298445 +30 +1812.39759571907 +11 +-705.352696568271 +21 +-705.352696568271 +31 +1708.93950189862 +12 +-554.192057578438 +22 +-829.407026995335 +32 +1708.93950189862 +13 +-554.192057578438 +23 +-829.407026995335 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-705.352696568271 +20 +-705.352696568271 +30 +1708.93950189862 +11 +-580.006735667279 +21 +-868.04142298445 +31 +1812.39759571907 +12 +-738.20854961057 +22 +-738.20854961057 +32 +1812.39759571907 +13 +-738.20854961057 +23 +-738.20854961057 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-997.760836892423 +20 +-413.286070645571 +30 +2058.8118770109 +11 +-897.961029579872 +21 +-599.99837764929 +31 +2011.5925230317 +12 +-897.961029579872 +22 +-599.99837764929 +32 +2058.8118770109 +13 +-897.961029579872 +23 +-599.99837764929 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-897.961029579872 +20 +-599.99837764929 +30 +2011.5925230317 +11 +-997.760836892423 +21 +-413.286070645571 +31 +2058.8118770109 +12 +-997.760836892423 +22 +-413.286070645571 +32 +2011.5925230317 +13 +-997.760836892423 +23 +-413.286070645571 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-891.670534105406 +20 +-595.795202951324 +30 +2148.21162800104 +11 +-997.760836892423 +21 +-413.286070645571 +31 +2058.8118770109 +12 +-897.961029579872 +22 +-599.99837764929 +32 +2058.8118770109 +13 +-897.961029579872 +23 +-599.99837764929 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-997.760836892423 +20 +-413.286070645571 +30 +2058.8118770109 +11 +-891.670534105406 +21 +-595.795202951324 +31 +2148.21162800104 +12 +-990.771212819307 +22 +-410.390873558597 +32 +2148.21162800104 +13 +-990.771212819307 +23 +-410.390873558597 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021929 +20 +-699.168033082722 +30 +914.026066884025 +11 +-600.487204246519 +21 +-600.487204246519 +31 +855.37186879426 +12 +-471.799768952456 +22 +-706.098253038492 +32 +855.37186879426 +13 +-471.799768952456 +23 +-706.098253038492 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-600.487204246519 +20 +-600.487204246519 +30 +855.37186879426 +11 +-467.169144021929 +21 +-699.168033082722 +31 +914.026066884025 +12 +-594.593536632776 +22 +-594.593536632776 +32 +914.026066884025 +13 +-594.593536632776 +23 +-594.593536632776 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +152.954610178005 +20 +-768.954752250597 +30 +631.979456702016 +11 +0.0 +21 +-745.443557551535 +31 +587.016306884026 +12 +145.428823687577 +22 +-731.120068617964 +32 +587.016306884026 +13 +145.428823687577 +23 +-731.120068617964 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-745.443557551535 +30 +587.016306884026 +11 +152.954610178005 +21 +-768.954752250597 +31 +631.979456702016 +12 +0.0 +22 +-784.019466456977 +32 +631.979456702016 +13 +0.0 +23 +-784.019466456977 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-619.813665790805 +20 +-414.146250971868 +30 +587.016306884026 +11 +-554.385481313987 +21 +-554.385481313987 +31 +631.979456702016 +12 +-651.888361812631 +22 +-435.577877671407 +32 +631.979456702016 +13 +-651.888361812631 +23 +-435.577877671407 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-554.385481313987 +20 +-554.385481313987 +30 +631.979456702016 +11 +-619.813665790805 +21 +-414.146250971868 +31 +587.016306884026 +12 +-527.108194536515 +22 +-527.108194536515 +32 +587.016306884026 +13 +-527.108194536515 +23 +-527.108194536515 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +475.358481968201 +20 +-929.775248028225 +30 +1832.24936277796 +11 +399.51558814382 +21 +-964.515951276276 +31 +1812.39759571907 +12 +533.995007415167 +22 +-892.635204119545 +32 +1812.39759571907 +13 +533.995007415167 +23 +-892.635204119545 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +399.51558814382 +20 +-964.515951276276 +30 +1812.39759571907 +11 +475.358481968201 +21 +-929.775248028225 +31 +1832.24936277796 +12 +422.745208264425 +22 +-966.763694030251 +32 +1862.60499591753 +13 +422.745208264425 +23 +-966.763694030251 +33 +1862.60499591753 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +399.51558814382 +20 +-964.515951276276 +30 +1812.39759571907 +11 +422.745208264425 +21 +-966.763694030251 +31 +1862.60499591753 +12 +406.150722558891 +22 +-980.534582769308 +32 +1879.38487239655 +13 +406.150722558891 +23 +-980.534582769308 +33 +1879.38487239655 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-519.085398326623 +20 +-776.866198451135 +30 +2455.6433200213 +11 +-705.352696568271 +21 +-705.352696568271 +31 +2361.46489814399 +12 +-554.192057578438 +22 +-829.407026995335 +32 +2361.46489814399 +13 +-554.192057578438 +23 +-829.407026995335 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-705.352696568271 +20 +-705.352696568271 +30 +2361.46489814399 +11 +-519.085398326623 +21 +-776.866198451135 +31 +2455.6433200213 +12 +-660.670394770277 +22 +-660.670394770277 +32 +2455.6433200213 +13 +-660.670394770277 +23 +-660.670394770277 +33 +2455.6433200213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-660.670394770277 +20 +-660.670394770277 +30 +2455.6433200213 +11 +-519.085398326623 +21 +-776.866198451135 +31 +2455.6433200213 +12 +-569.385750357394 +22 +-735.585766368266 +32 +2455.6433200213 +13 +-569.385750357394 +23 +-735.585766368266 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-660.670394770277 +20 +-660.670394770277 +30 +2455.6433200213 +11 +-569.385750357394 +21 +-735.585766368266 +31 +2455.6433200213 +12 +-642.325255137832 +22 +-675.725861781415 +32 +2455.6433200213 +13 +-642.325255137832 +23 +-675.725861781415 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +324.326404167689 +20 +-782.993203577332 +30 +796.153149972084 +11 +163.055979488767 +21 +-819.73776511114 +31 +738.078199114136 +12 +319.845809128627 +22 +-772.176090266528 +32 +738.078199114136 +13 +319.845809128627 +23 +-772.176090266528 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +163.055979488767 +20 +-819.73776511114 +30 +738.078199114136 +11 +324.326404167689 +21 +-782.993203577332 +31 +796.153149972084 +12 +165.340167031437 +22 +-831.221151351825 +32 +796.153149972084 +13 +165.340167031437 +23 +-831.221151351825 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +824.724927080674 +20 +-164.047987682633 +30 +2455.6433200213 +11 +832.543812136584 +21 +-84.6615154688545 +31 +2549.0746800213 +12 +824.724927080674 +22 +-164.047987682633 +32 +2549.0746800213 +13 +824.724927080674 +23 +-164.047987682633 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +832.543812136584 +20 +-84.6615154688545 +30 +2549.0746800213 +11 +824.724927080674 +21 +-164.047987682633 +31 +2455.6433200213 +12 +840.882243605455 +22 +1.80477854883065e-13 +32 +2455.6433200213 +13 +840.882243605455 +23 +1.80477854883065e-13 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +832.543812136584 +20 +-84.6615154688545 +30 +2549.0746800213 +11 +840.882243605455 +21 +1.80477854883065e-13 +31 +2455.6433200213 +12 +840.882243605455 +22 +1.80477854883065e-13 +32 +2549.0746800213 +13 +840.882243605455 +23 +1.80477854883065e-13 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1043.98454271904 +20 +3.60955709766131e-13 +30 +1812.39759571907 +11 +-978.352295145615 +21 +-194.606371158736 +31 +1708.93950189862 +12 +-1023.92467246733 +22 +-203.671280618918 +32 +1812.39759571907 +13 +-1023.92467246733 +23 +-203.671280618918 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-978.352295145615 +20 +-194.606371158736 +30 +1708.93950189862 +11 +-1043.98454271904 +21 +3.60955709766131e-13 +31 +1812.39759571907 +12 +-997.519349743285 +22 +3.60955709766131e-13 +32 +1708.93950189862 +13 +-997.519349743285 +23 +3.60955709766131e-13 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-527.108194536515 +20 +-527.108194536515 +30 +587.016306884026 +11 +-435.577877671407 +21 +-651.888361812631 +31 +631.979456702016 +12 +-554.385481313987 +22 +-554.385481313987 +32 +631.979456702016 +13 +-554.385481313987 +23 +-554.385481313987 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-435.577877671407 +20 +-651.888361812631 +30 +631.979456702016 +11 +-527.108194536515 +21 +-527.108194536515 +31 +587.016306884026 +12 +-414.146250971868 +22 +-619.813665790805 +32 +587.016306884026 +13 +-414.146250971868 +23 +-619.813665790805 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-452.472966724379 +20 +-677.173649450057 +30 +682.822310520627 +11 +-554.385481313987 +21 +-554.385481313987 +31 +631.979456702016 +12 +-435.577877671407 +22 +-651.888361812631 +32 +631.979456702016 +13 +-435.577877671407 +23 +-651.888361812631 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-554.385481313987 +20 +-554.385481313987 +30 +631.979456702016 +11 +-452.472966724379 +21 +-677.173649450057 +31 +682.822310520627 +12 +-575.888850875701 +22 +-575.888850875701 +32 +682.822310520627 +13 +-575.888850875701 +23 +-575.888850875701 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +997.760836892423 +20 +-413.286070645571 +30 +2011.5925230317 +11 +912.783669278017 +21 +-572.267169258698 +31 +2035.20224467364 +12 +911.540741979581 +22 +-574.59252267949 +32 +2011.5925230317 +13 +911.540741979581 +23 +-574.59252267949 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +912.783669278017 +20 +-572.267169258698 +30 +2035.20224467364 +11 +997.760836892423 +21 +-413.286070645571 +31 +2058.8118770109 +12 +911.54074094115 +22 +-574.592524622259 +32 +2058.8118770109 +13 +911.54074094115 +23 +-574.592524622259 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +997.760836892423 +20 +-413.286070645571 +30 +2058.8118770109 +11 +912.783669278017 +21 +-572.267169258698 +31 +2035.20224467364 +12 +997.760836892423 +22 +-413.286070645571 +32 +2011.5925230317 +13 +997.760836892423 +23 +-413.286070645571 +33 +2011.5925230317 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +203.671280618918 +20 +-1023.92467246733 +30 +1812.39759571907 +11 +1.80477854883065e-13 +21 +-997.519349743284 +31 +1708.93950189862 +12 +194.606371158736 +22 +-978.352295145615 +32 +1708.93950189862 +13 +194.606371158736 +23 +-978.352295145615 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-997.519349743284 +30 +1708.93950189862 +11 +203.671280618918 +21 +-1023.92467246733 +31 +1812.39759571907 +12 +1.80477854883065e-13 +22 +-1043.98454271904 +32 +1812.39759571907 +13 +1.80477854883065e-13 +23 +-1043.98454271904 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +209.215453044867 +20 +-1051.79710945546 +30 +2148.21162800104 +11 +36.3998441498995 +21 +-1076.38347587727 +31 +2058.8118770109 +12 +210.691411720441 +22 +-1059.21725479392 +32 +2058.8118770109 +13 +210.691411720441 +23 +-1059.21725479392 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +36.3998441498995 +20 +-1076.38347587727 +30 +2058.8118770109 +11 +209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +35.9517814413365 +22 +-1076.35666734212 +32 +2059.65014337885 +13 +35.9517814413365 +23 +-1076.35666734212 +33 +2059.65014337885 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +35.9517814413365 +20 +-1076.35666734212 +30 +2059.65014337885 +11 +209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +30.354884250617 +22 +-1076.33078010212 +32 +2066.4699823381 +13 +30.354884250617 +23 +-1076.33078010212 +33 +2066.4699823381 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +30.354884250617 +20 +-1076.33078010212 +30 +2066.4699823381 +11 +209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +23.5350452913723 +22 +-1076.52883438997 +32 +2072.06687952882 +13 +23.5350452913723 +23 +-1076.52883438997 +33 +2072.06687952882 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +23.5350452913723 +20 +-1076.52883438997 +30 +2072.06687952882 +11 +209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +15.754347150196 +22 +-1076.94321909047 +32 +2076.22574933075 +13 +15.754347150196 +23 +-1076.94321909047 +33 +2076.22574933075 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +15.754347150196 +20 +-1076.94321909047 +30 +2076.22574933075 +11 +209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +7.31179769318775 +22 +-1077.55800963197 +32 +2078.78676870972 +13 +7.31179769318775 +23 +-1077.55800963197 +33 +2078.78676870972 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +7.31179769318775 +20 +-1077.55800963197 +30 +2078.78676870972 +11 +209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +1.80477854883065e-13 +22 +-1078.21721573187 +32 +2079.50691792559 +13 +1.80477854883065e-13 +23 +-1078.21721573187 +33 +2079.50691792559 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +1.80477854883065e-13 +20 +-1078.21721573187 +30 +2079.50691792559 +11 +209.215453044867 +21 +-1051.79710945546 +31 +2148.21162800104 +12 +1.80477854883065e-13 +22 +-1072.40303302985 +32 +2148.21162800104 +13 +1.80477854883065e-13 +23 +-1072.40303302985 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +824.724927080674 +20 +-164.047987682633 +30 +914.026066884025 +11 +654.019523605455 +21 +0.0 +31 +1054.1729200213 +12 +641.452721848564 +22 +-127.592879465023 +32 +1054.1729200213 +13 +641.452721848564 +23 +-127.592879465023 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +654.019523605455 +20 +0.0 +30 +1054.1729200213 +11 +824.724927080674 +21 +-164.047987682633 +31 +914.026066884025 +12 +840.882243605455 +22 +1.80477854883065e-13 +32 +914.026066884025 +13 +840.882243605455 +23 +1.80477854883065e-13 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-879.083714298799 +30 +2240.21043503138 +11 +180.675224578544 +21 +-917.447181233325 +31 +2219.70473474119 +12 +180.675224578544 +22 +-879.083714298798 +32 +2240.21043503138 +13 +180.675224578544 +23 +-879.083714298798 +33 +2240.21043503138 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-917.447181233325 +30 +2219.70473474119 +11 +653.750224578544 +21 +-879.083714298799 +31 +2240.21043503138 +12 +653.750224578544 +22 +-917.447181233325 +32 +2219.70473474119 +13 +653.750224578544 +23 +-917.447181233325 +33 +2219.70473474119 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +145.820433573828 +20 +-733.088824464618 +30 +1427.8983600213 +11 +0.0 +21 +-840.882243605455 +31 +1241.03564002131 +12 +164.047987682633 +22 +-824.724927080674 +32 +1241.03564002131 +13 +164.047987682633 +23 +-824.724927080674 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +1241.03564002131 +11 +145.820433573828 +21 +-733.088824464618 +31 +1427.8983600213 +12 +0.0 +22 +-747.450883605455 +32 +1427.8983600213 +13 +0.0 +23 +-747.450883605455 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.87389411925 +30 +914.026066884025 +11 +-363.353779128852 +21 +-543.797359730523 +31 +1054.1729200213 +12 +-467.169144021929 +22 +-699.168033082722 +32 +914.026066884025 +13 +-467.169144021929 +23 +-699.168033082722 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-363.353779128852 +20 +-543.797359730523 +30 +1054.1729200213 +11 +-321.791703197793 +21 +-776.87389411925 +31 +914.026066884025 +12 +-250.282436127117 +22 +-604.235251721862 +32 +1054.1729200213 +13 +-250.282436127117 +23 +-604.235251721862 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +577.57828073944 +20 +-864.406983345072 +30 +1802.66501966685 +11 +653.750224578544 +21 +-887.575434400246 +31 +1809.69309245876 +12 +540.896876185886 +22 +-887.575434400246 +32 +1809.69309245876 +13 +540.896876185886 +23 +-887.575434400246 +33 +1809.69309245876 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-887.575434400246 +30 +1809.69309245876 +11 +577.57828073944 +21 +-864.406983345072 +31 +1802.66501966685 +12 +600.307476319437 +22 +-841.785968318108 +32 +1795.80300977859 +13 +600.307476319437 +23 +-841.785968318108 +33 +1795.80300977859 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-887.575434400246 +30 +1809.69309245876 +11 +600.307476319437 +21 +-841.785968318108 +31 +1795.80300977859 +12 +653.750224578544 +22 +-841.785968318108 +32 +1795.80300977859 +13 +653.750224578544 +23 +-841.785968318108 +33 +1795.80300977859 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1033.56568016919 +30 +1987.58272162967 +11 +320.792432759964 +21 +-1019.67559748903 +31 +1941.79325554754 +12 +653.750224578544 +22 +-1019.67559748903 +32 +1941.79325554754 +13 +653.750224578544 +23 +-1019.67559748903 +33 +1941.79325554754 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +320.792432759964 +20 +-1019.67559748903 +30 +1941.79325554754 +11 +653.750224578544 +21 +-1033.56568016919 +31 +1987.58272162967 +12 +288.287531523413 +22 +-1033.5656801692 +32 +1987.58272162968 +13 +288.287531523413 +23 +-1033.5656801692 +33 +1987.58272162968 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +136.706656519425 +20 +-687.270773156591 +30 +1241.03564002131 +11 +0.0 +21 +-794.166563605455 +31 +1054.1729200213 +12 +154.93421062823 +22 +-778.906875772646 +32 +1054.1729200213 +13 +154.93421062823 +23 +-778.906875772646 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-794.166563605455 +30 +1054.1729200213 +11 +136.706656519425 +21 +-687.270773156591 +31 +1241.03564002131 +12 +0.0 +22 +-700.735203605455 +32 +1241.03564002131 +13 +0.0 +23 +-700.735203605455 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-599.99837764929 +20 +-897.961029579872 +30 +2058.8118770109 +11 +-644.006839982028 +21 +-861.844217926399 +31 +2011.59252303171 +12 +-599.99837764929 +22 +-897.961029579872 +32 +2011.5925230317 +13 +-599.99837764929 +23 +-897.961029579872 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-644.006839982028 +20 +-861.844217926399 +30 +2011.59252303171 +11 +-599.99837764929 +21 +-897.961029579872 +31 +2058.8118770109 +12 +-644.327893757466 +22 +-861.580735902195 +32 +2058.8118770109 +13 +-644.327893757466 +23 +-861.580735902195 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +914.026066884025 +11 +-165.674046918965 +21 +-832.899678896021 +31 +855.37186879426 +12 +1.80477854883065e-13 +22 +-849.217148276931 +32 +855.37186879426 +13 +1.80477854883065e-13 +23 +-849.217148276931 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-165.674046918965 +20 +-832.899678896021 +30 +855.37186879426 +11 +0.0 +21 +-840.882243605455 +31 +914.026066884025 +12 +-164.047987682633 +22 +-824.724927080674 +32 +914.026066884025 +13 +-164.047987682633 +23 +-824.724927080674 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1079.96854760957 +20 +1.80477854883065e-13 +30 +2058.8118770109 +11 +1051.79710945546 +21 +-209.215453044867 +31 +2148.21162800104 +12 +1059.21725479392 +22 +-210.691411720441 +32 +2058.8118770109 +13 +1059.21725479392 +23 +-210.691411720441 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1051.79710945546 +20 +-209.215453044867 +30 +2148.21162800104 +11 +1079.96854760957 +21 +1.80477854883065e-13 +31 +2058.8118770109 +12 +1072.40303302985 +22 +1.80477854883065e-13 +32 +2148.21162800104 +13 +1072.40303302985 +23 +1.80477854883065e-13 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +23.5350452913725 +20 +-976.504549306342 +30 +2072.06687952882 +11 +15.754347150196 +21 +-1076.94321909047 +31 +2076.22574933075 +12 +15.754347150196 +22 +-977.021929553012 +32 +2076.22574933075 +13 +15.754347150196 +23 +-977.021929553012 +33 +2076.22574933075 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +15.754347150196 +20 +-1076.94321909047 +30 +2076.22574933075 +11 +23.5350452913725 +21 +-976.504549306342 +31 +2072.06687952882 +12 +23.5350452913723 +22 +-1076.52883438997 +32 +2072.06687952882 +13 +23.5350452913723 +23 +-1076.52883438997 +33 +2072.06687952882 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021929 +30 +914.026066884025 +11 +-604.235251721862 +21 +-250.282436127116 +31 +1054.1729200213 +12 +-776.87389411925 +22 +-321.791703197793 +32 +914.026066884025 +13 +-776.87389411925 +23 +-321.791703197793 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-604.235251721862 +20 +-250.282436127116 +30 +1054.1729200213 +11 +-699.168033082722 +21 +-467.169144021929 +31 +914.026066884025 +12 +-543.797359730523 +22 +-363.353779128852 +32 +1054.1729200213 +13 +-543.797359730523 +23 +-363.353779128852 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +163.055979488767 +20 +-819.73776511114 +30 +738.078199114136 +11 +0.0 +21 +-814.429823327873 +31 +682.822310520627 +12 +158.887376492573 +22 +-798.780782641381 +32 +682.822310520627 +13 +158.887376492573 +23 +-798.780782641381 +33 +682.822310520627 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-814.429823327873 +30 +682.822310520627 +11 +163.055979488767 +21 +-819.73776511114 +31 +738.078199114136 +12 +1.80477854883065e-13 +22 +-835.797377356766 +32 +738.078199114136 +13 +1.80477854883065e-13 +23 +-835.797377356766 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-776.87389411925 +20 +-321.791703197793 +30 +914.026066884025 +11 +-832.899678896021 +21 +-165.674046918964 +31 +855.37186879426 +12 +-784.574341950659 +22 +-324.981333125909 +32 +855.37186879426 +13 +-784.574341950659 +23 +-324.981333125909 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-832.899678896021 +20 +-165.674046918964 +30 +855.37186879426 +11 +-776.87389411925 +21 +-321.791703197793 +31 +914.026066884025 +12 +-824.724927080674 +22 +-164.047987682633 +32 +914.026066884025 +13 +-824.724927080674 +23 +-164.047987682633 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-660.325364744672 +20 +-441.215302798659 +30 +1614.7610800213 +11 +-772.428086079136 +21 +-428.73258747146 +31 +1427.8983600213 +12 +-738.010701420772 +22 +-493.122985245198 +32 +1427.8983600213 +13 +-738.010701420772 +23 +-493.122985245198 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-772.428086079136 +20 +-428.73258747146 +30 +1427.8983600213 +11 +-660.325364744672 +21 +-441.215302798659 +31 +1614.7610800213 +12 +-733.714233519903 +22 +-303.914386430124 +32 +1614.7610800213 +13 +-733.714233519903 +23 +-303.914386430124 +33 +1614.7610800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-772.428086079136 +20 +-428.73258747146 +30 +1427.8983600213 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +-814.713927134819 +22 +-349.621343174435 +32 +1427.8983600213 +13 +-814.713927134819 +23 +-349.621343174435 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-814.713927134819 +20 +-349.621343174435 +30 +1427.8983600213 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +-820.033554718597 +22 +-339.669019965462 +32 +1427.8983600213 +13 +-820.033554718597 +23 +-339.669019965462 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-921.587710511788 +20 +-381.734128610352 +30 +1708.93950189862 +11 +-776.866198451135 +21 +-519.085398326623 +31 +1614.7610800213 +12 +-829.407026995335 +22 +-554.192057578438 +32 +1708.93950189862 +13 +-829.407026995335 +23 +-554.192057578438 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-776.866198451135 +20 +-519.085398326623 +30 +1614.7610800213 +11 +-921.587710511788 +21 +-381.734128610352 +31 +1708.93950189862 +12 +-813.095615539802 +22 +-451.304926317894 +32 +1614.7610800213 +13 +-813.095615539802 +23 +-451.304926317894 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-813.095615539802 +20 +-451.304926317894 +30 +1614.7610800213 +11 +-921.587710511788 +21 +-381.734128610352 +31 +1708.93950189862 +12 +-857.607798337338 +22 +-368.028489582189 +32 +1614.7610800213 +13 +-857.607798337338 +23 +-368.028489582189 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-857.607798337338 +20 +-368.028489582189 +30 +1614.7610800213 +11 +-921.587710511788 +21 +-381.734128610352 +31 +1708.93950189862 +12 +-863.207469797099 +22 +-357.552241131722 +32 +1614.7610800213 +13 +-863.207469797099 +23 +-357.552241131722 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +824.724927080674 +20 +-164.047987682633 +30 +1241.03564002131 +11 +690.554572920556 +21 +-286.037069662455 +31 +1427.8983600213 +12 +776.87389411925 +22 +-321.791703197793 +32 +1241.03564002131 +13 +776.87389411925 +23 +-321.791703197793 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +690.554572920556 +20 +-286.037069662455 +30 +1427.8983600213 +11 +824.724927080674 +21 +-164.047987682633 +31 +1241.03564002131 +12 +733.088824464618 +22 +-145.820433573828 +32 +1427.8983600213 +13 +733.088824464618 +23 +-145.820433573828 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-700.735203605455 +20 +1.80477854883065e-13 +30 +1241.03564002131 +11 +-824.724927080674 +21 +-164.047987682633 +31 +1241.03564002131 +12 +-840.882243605455 +22 +1.80477854883065e-13 +32 +1241.03564002131 +13 +-840.882243605455 +23 +1.80477854883065e-13 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-824.724927080674 +20 +-164.047987682633 +30 +1241.03564002131 +11 +-700.735203605455 +21 +1.80477854883065e-13 +31 +1241.03564002131 +12 +-776.873894119249 +22 +-321.791703197793 +32 +1241.03564002131 +13 +-776.873894119249 +23 +-321.791703197793 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-776.873894119249 +20 +-321.791703197793 +30 +1241.03564002131 +11 +-700.735203605455 +21 +1.80477854883065e-13 +31 +1241.03564002131 +12 +-699.168033082722 +22 +-467.169144021928 +32 +1241.03564002131 +13 +-699.168033082722 +23 +-467.169144021928 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +1241.03564002131 +11 +-700.735203605455 +21 +1.80477854883065e-13 +31 +1241.03564002131 +12 +-687.270773156591 +22 +-136.706656519425 +32 +1241.03564002131 +13 +-687.270773156591 +23 +-136.706656519425 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021928 +30 +1241.03564002131 +11 +-687.270773156591 +21 +-136.706656519425 +31 +1241.03564002131 +12 +-594.593536632775 +22 +-594.593536632776 +32 +1241.03564002131 +13 +-594.593536632775 +23 +-594.593536632776 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +1241.03564002131 +11 +-687.270773156591 +21 +-136.706656519425 +31 +1241.03564002131 +12 +-647.394912321209 +22 +-268.159752894786 +32 +1241.03564002131 +13 +-647.394912321209 +23 +-268.159752894786 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +1241.03564002131 +11 +-647.394912321209 +21 +-268.159752894786 +31 +1241.03564002131 +12 +-582.640028068573 +22 +-389.307620352121 +32 +1241.03564002131 +13 +-582.640028068573 +23 +-389.307620352121 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +1241.03564002131 +11 +-582.640028068573 +21 +-389.307620352121 +31 +1241.03564002131 +12 +-467.169144021928 +22 +-699.168033082722 +32 +1241.03564002131 +13 +-467.169144021928 +23 +-699.168033082722 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +1241.03564002131 +11 +-582.640028068573 +21 +-389.307620352121 +31 +1241.03564002131 +12 +-495.494614285553 +22 +-495.494614285553 +32 +1241.03564002131 +13 +-495.494614285553 +23 +-495.494614285553 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +1241.03564002131 +11 +-495.494614285553 +21 +-495.494614285553 +31 +1241.03564002131 +12 +-389.307620352121 +22 +-582.640028068573 +32 +1241.03564002131 +13 +-389.307620352121 +23 +-582.640028068573 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021928 +20 +-699.168033082722 +30 +1241.03564002131 +11 +-389.307620352121 +21 +-582.640028068573 +31 +1241.03564002131 +12 +-321.791703197793 +22 +-776.873894119249 +32 +1241.03564002131 +13 +-321.791703197793 +23 +-776.873894119249 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.873894119249 +30 +1241.03564002131 +11 +-389.307620352121 +21 +-582.640028068573 +31 +1241.03564002131 +12 +-268.159752894786 +22 +-647.394912321209 +32 +1241.03564002131 +13 +-268.159752894786 +23 +-647.394912321209 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-321.791703197793 +20 +-776.873894119249 +30 +1241.03564002131 +11 +-268.159752894786 +21 +-647.394912321209 +31 +1241.03564002131 +12 +-164.047987682633 +22 +-824.724927080674 +32 +1241.03564002131 +13 +-164.047987682633 +23 +-824.724927080674 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +1241.03564002131 +11 +-268.159752894786 +21 +-647.394912321209 +31 +1241.03564002131 +12 +-136.706656519425 +22 +-687.270773156591 +32 +1241.03564002131 +13 +-136.706656519425 +23 +-687.270773156591 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-164.047987682633 +20 +-824.724927080674 +30 +1241.03564002131 +11 +-136.706656519425 +21 +-687.270773156591 +31 +1241.03564002131 +12 +0.0 +22 +-840.882243605455 +32 +1241.03564002131 +13 +0.0 +23 +-840.882243605455 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +1241.03564002131 +11 +-136.706656519425 +21 +-687.270773156591 +31 +1241.03564002131 +12 +0.0 +22 +-700.735203605455 +32 +1241.03564002131 +13 +0.0 +23 +-700.735203605455 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +1241.03564002131 +11 +0.0 +21 +-700.735203605455 +31 +1241.03564002131 +12 +136.706656519425 +22 +-687.270773156591 +32 +1241.03564002131 +13 +136.706656519425 +23 +-687.270773156591 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-840.882243605455 +30 +1241.03564002131 +11 +136.706656519425 +21 +-687.270773156591 +31 +1241.03564002131 +12 +164.047987682633 +22 +-824.724927080674 +32 +1241.03564002131 +13 +164.047987682633 +23 +-824.724927080674 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +1241.03564002131 +11 +136.706656519425 +21 +-687.270773156591 +31 +1241.03564002131 +12 +268.159752894785 +22 +-647.394912321209 +32 +1241.03564002131 +13 +268.159752894785 +23 +-647.394912321209 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +1241.03564002131 +11 +268.159752894785 +21 +-647.394912321209 +31 +1241.03564002131 +12 +321.791703197793 +22 +-776.873894119249 +32 +1241.03564002131 +13 +321.791703197793 +23 +-776.873894119249 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.873894119249 +30 +1241.03564002131 +11 +268.159752894785 +21 +-647.394912321209 +31 +1241.03564002131 +12 +389.307620352121 +22 +-582.640028068573 +32 +1241.03564002131 +13 +389.307620352121 +23 +-582.640028068573 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.873894119249 +30 +1241.03564002131 +11 +389.307620352121 +21 +-582.640028068573 +31 +1241.03564002131 +12 +467.169144021928 +22 +-699.168033082722 +32 +1241.03564002131 +13 +467.169144021928 +23 +-699.168033082722 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +1241.03564002131 +11 +389.307620352121 +21 +-582.640028068573 +31 +1241.03564002131 +12 +495.494614285553 +22 +-495.494614285553 +32 +1241.03564002131 +13 +495.494614285553 +23 +-495.494614285553 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +1241.03564002131 +11 +495.494614285553 +21 +-495.494614285553 +31 +1241.03564002131 +12 +594.593536632776 +22 +-594.593536632775 +32 +1241.03564002131 +13 +594.593536632776 +23 +-594.593536632775 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632775 +30 +1241.03564002131 +11 +495.494614285553 +21 +-495.494614285553 +31 +1241.03564002131 +12 +582.640028068573 +22 +-389.307620352121 +32 +1241.03564002131 +13 +582.640028068573 +23 +-389.307620352121 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632775 +30 +1241.03564002131 +11 +582.640028068573 +21 +-389.307620352121 +31 +1241.03564002131 +12 +647.394912321209 +22 +-268.159752894786 +32 +1241.03564002131 +13 +647.394912321209 +23 +-268.159752894786 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632775 +30 +1241.03564002131 +11 +647.394912321209 +21 +-268.159752894786 +31 +1241.03564002131 +12 +699.168033082722 +22 +-467.169144021928 +32 +1241.03564002131 +13 +699.168033082722 +23 +-467.169144021928 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021928 +30 +1241.03564002131 +11 +647.394912321209 +21 +-268.159752894786 +31 +1241.03564002131 +12 +687.270773156591 +22 +-136.706656519426 +32 +1241.03564002131 +13 +687.270773156591 +23 +-136.706656519426 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021928 +30 +1241.03564002131 +11 +687.270773156591 +21 +-136.706656519426 +31 +1241.03564002131 +12 +700.735203605455 +22 +0.0 +32 +1241.03564002131 +13 +700.735203605455 +23 +0.0 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +699.168033082722 +20 +-467.169144021928 +30 +1241.03564002131 +11 +700.735203605455 +21 +0.0 +31 +1241.03564002131 +12 +776.87389411925 +22 +-321.791703197793 +32 +1241.03564002131 +13 +776.87389411925 +23 +-321.791703197793 +33 +1241.03564002131 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +1241.03564002131 +11 +700.735203605455 +21 +0.0 +31 +1241.03564002131 +12 +840.882243605455 +22 +1.80477854883065e-13 +32 +1241.03564002131 +13 +840.882243605455 +23 +1.80477854883065e-13 +33 +1241.03564002131 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +1241.03564002131 +11 +840.882243605455 +21 +1.80477854883065e-13 +31 +1241.03564002131 +12 +824.724927080674 +22 +-164.047987682633 +32 +1241.03564002131 +13 +824.724927080674 +23 +-164.047987682633 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +154.93421062823 +20 +-778.906875772646 +30 +1614.7610800213 +11 +133.953889402395 +21 +-874.404617053063 +31 +1427.8983600213 +12 +173.161764737035 +22 +-870.542978388701 +32 +1427.8983600213 +13 +173.161764737035 +23 +-870.542978388701 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +133.953889402395 +20 +-874.404617053063 +30 +1427.8983600213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +44.7901424632535 +22 +-883.186479617682 +32 +1427.8983600213 +13 +44.7901424632535 +23 +-883.186479617682 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +44.7901424632535 +20 +-883.186479617682 +30 +1427.8983600213 +11 +0.0 +21 +-794.166563605455 +31 +1614.7610800213 +12 +1.80477854883065e-13 +22 +-887.597923605455 +32 +1427.8983600213 +13 +1.80477854883065e-13 +23 +-887.597923605455 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +0.0 +20 +-794.166563605455 +30 +1614.7610800213 +11 +44.7901424632535 +21 +-883.186479617682 +31 +1427.8983600213 +12 +154.93421062823 +22 +-778.906875772646 +32 +1614.7610800213 +13 +154.93421062823 +23 +-778.906875772646 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-1019.67559748903 +30 +2128.61109777939 +11 +288.287545076695 +21 +-1033.5656801692 +31 +2082.82163169725 +12 +653.750224578544 +22 +-1033.56568016919 +32 +2082.82163169725 +13 +653.750224578544 +23 +-1033.56568016919 +33 +2082.82163169725 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +288.287545076695 +20 +-1033.5656801692 +30 +2082.82163169725 +11 +653.750224578544 +21 +-1019.67559748903 +31 +2128.61109777939 +12 +320.792446313246 +22 +-1019.67559748903 +32 +2128.61109777939 +13 +320.792446313246 +23 +-1019.67559748903 +33 +2128.61109777939 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-467.169144021929 +20 +-699.168033082722 +30 +2549.0746800213 +11 +-594.593536632775 +21 +-594.593536632776 +31 +2455.6433200213 +12 +-467.169144021928 +22 +-699.168033082722 +32 +2455.6433200213 +13 +-467.169144021928 +23 +-699.168033082722 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632775 +20 +-594.593536632776 +30 +2455.6433200213 +11 +-467.169144021929 +21 +-699.168033082722 +31 +2549.0746800213 +12 +-594.593536632776 +22 +-594.593536632776 +32 +2549.0746800213 +13 +-594.593536632776 +23 +-594.593536632776 +33 +2549.0746800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632776 +20 +-594.593536632776 +30 +2549.0746800213 +11 +-467.169144021929 +21 +-699.168033082722 +31 +2549.0746800213 +12 +-512.438676164039 +22 +-662.016288182956 +32 +2549.0746800213 +13 +-512.438676164039 +23 +-662.016288182956 +33 +2549.0746800213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-594.593536632776 +20 +-594.593536632776 +30 +2549.0746800213 +11 +-512.438676164039 +21 +-662.016288182956 +31 +2549.0746800213 +12 +-578.08321102903 +22 +-608.143210685445 +32 +2549.0746800213 +13 +-578.08321102903 +23 +-608.143210685445 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-699.168033082722 +20 +-467.169144021929 +30 +914.026066884025 +11 +-784.574341950659 +21 +-324.981333125909 +31 +855.37186879426 +12 +-706.098253038492 +22 +-471.799768952456 +32 +855.37186879426 +13 +-706.098253038492 +23 +-471.799768952456 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-784.574341950659 +20 +-324.981333125909 +30 +855.37186879426 +11 +-699.168033082722 +21 +-467.169144021929 +31 +914.026066884025 +12 +-776.87389411925 +22 +-321.791703197793 +32 +914.026066884025 +13 +-776.87389411925 +23 +-321.791703197793 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-997.760836892423 +20 +-413.286070645571 +30 +2011.5925230317 +11 +-891.670534105406 +21 +-595.795202951324 +31 +1922.19277204157 +12 +-897.961029579872 +22 +-599.99837764929 +32 +2011.5925230317 +13 +-897.961029579872 +23 +-599.99837764929 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-891.670534105406 +20 +-595.795202951324 +30 +1922.19277204157 +11 +-997.760836892423 +21 +-413.286070645571 +31 +2011.5925230317 +12 +-990.771212819307 +22 +-410.390873558597 +32 +1922.19277204157 +13 +-990.771212819307 +23 +-410.390873558597 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-990.771212819307 +20 +-410.390873558597 +30 +1922.19277204157 +11 +-868.04142298445 +21 +-580.00673566728 +31 +1812.39759571907 +12 +-891.670534105406 +22 +-595.795202951324 +32 +1922.19277204157 +13 +-891.670534105406 +23 +-595.795202951324 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-868.04142298445 +20 +-580.00673566728 +30 +1812.39759571907 +11 +-990.771212819307 +21 +-410.390873558597 +31 +1922.19277204157 +12 +-964.515951276276 +22 +-399.515588143821 +32 +1812.39759571907 +13 +-964.515951276276 +23 +-399.515588143821 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-964.515951276276 +20 +-399.515588143821 +30 +1812.39759571907 +11 +-829.407026995335 +21 +-554.192057578438 +31 +1708.93950189862 +12 +-868.04142298445 +22 +-580.00673566728 +32 +1812.39759571907 +13 +-868.04142298445 +23 +-580.00673566728 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-829.407026995335 +20 +-554.192057578438 +30 +1708.93950189862 +11 +-964.515951276276 +21 +-399.515588143821 +31 +1812.39759571907 +12 +-921.587710511788 +22 +-381.734128610352 +32 +1708.93950189862 +13 +-921.587710511788 +23 +-381.734128610352 +33 +1708.93950189862 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-761.149821895316 +20 +-761.14982219046 +30 +2100.64485501639 +11 +-786.92474167715 +21 +-735.296194513125 +31 +2058.80750841657 +12 +-763.653083482914 +22 +-763.653083482914 +32 +2058.8118770109 +13 +-763.653083482914 +23 +-763.653083482914 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-786.92474167715 +20 +-735.296194513125 +30 +2058.80750841657 +11 +-761.149821895316 +21 +-761.14982219046 +31 +2100.64485501639 +12 +-766.822004083969 +22 +-754.694855069672 +32 +2097.20410948883 +13 +-766.822004083969 +23 +-754.694855069672 +33 +2097.20410948883 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-786.92474167715 +20 +-735.296194513125 +30 +2058.80750841657 +11 +-766.822004083969 +21 +-754.694855069672 +31 +2097.20410948883 +12 +-781.183382327347 +22 +-739.911027417745 +32 +2076.74494872451 +13 +-781.183382327347 +23 +-739.911027417745 +33 +2076.74494872451 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +887.597923605455 +20 +1.80477854883065e-13 +30 +1427.8983600213 +11 +778.906875772646 +21 +-154.93421062823 +31 +1614.7610800213 +12 +870.542978388702 +22 +-173.161764737035 +32 +1427.8983600213 +13 +870.542978388702 +23 +-173.161764737035 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +778.906875772646 +20 +-154.93421062823 +30 +1614.7610800213 +11 +887.597923605455 +21 +1.80477854883065e-13 +31 +1427.8983600213 +12 +794.166563605455 +22 +1.80477854883065e-13 +32 +1614.7610800213 +13 +794.166563605455 +23 +1.80477854883065e-13 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-964.515951276275 +20 +-399.515588143821 +30 +2258.00680432354 +11 +-1051.79710945546 +21 +-209.215453044867 +31 +2148.21162800104 +12 +-990.771212819307 +22 +-410.390873558597 +32 +2148.21162800104 +13 +-990.771212819307 +23 +-410.390873558597 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-1051.79710945546 +20 +-209.215453044867 +30 +2148.21162800104 +11 +-964.515951276275 +21 +-399.515588143821 +31 +2258.00680432354 +12 +-1023.92467246733 +22 +-203.671280618918 +32 +2258.00680432354 +13 +-1023.92467246733 +23 +-203.671280618918 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +467.169144021928 +20 +-699.168033082722 +30 +914.026066884025 +11 +324.981333125909 +21 +-784.574341950659 +31 +855.37186879426 +12 +471.799768952456 +22 +-706.098253038493 +32 +855.37186879426 +13 +471.799768952456 +23 +-706.098253038493 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +324.981333125909 +20 +-784.574341950659 +30 +855.37186879426 +11 +467.169144021928 +21 +-699.168033082722 +31 +914.026066884025 +12 +321.791703197793 +22 +-776.87389411925 +32 +914.026066884025 +13 +321.791703197793 +23 +-776.87389411925 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +914.026066884025 +11 +363.353779128852 +21 +-543.797359730523 +31 +1054.1729200213 +12 +250.282436127116 +22 +-604.235251721862 +32 +1054.1729200213 +13 +250.282436127116 +23 +-604.235251721862 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +363.353779128852 +20 +-543.797359730523 +30 +1054.1729200213 +11 +321.791703197793 +21 +-776.87389411925 +31 +914.026066884025 +12 +467.169144021928 +22 +-699.168033082722 +32 +914.026066884025 +13 +467.169144021928 +23 +-699.168033082722 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +964.515951276275 +20 +-399.515588143821 +30 +1812.39759571907 +11 +1051.79710945546 +21 +-209.215453044867 +31 +1922.19277204157 +12 +990.771212819308 +22 +-410.390873558597 +32 +1922.19277204157 +13 +990.771212819308 +23 +-410.390873558597 +33 +1922.19277204157 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1051.79710945546 +20 +-209.215453044867 +30 +1922.19277204157 +11 +964.515951276275 +21 +-399.515588143821 +31 +1812.39759571907 +12 +1023.92467246733 +22 +-203.671280618918 +32 +1812.39759571907 +13 +1023.92467246733 +23 +-203.671280618918 +33 +1812.39759571907 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +1043.98454271904 +20 +1.80477854883065e-13 +30 +2258.00680432354 +11 +978.352295145615 +21 +-194.606371158736 +31 +2361.46489814399 +12 +1023.92467246733 +22 +-203.671280618918 +32 +2258.00680432354 +13 +1023.92467246733 +23 +-203.671280618918 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +978.352295145615 +20 +-194.606371158736 +30 +2361.46489814399 +11 +1043.98454271904 +21 +1.80477854883065e-13 +31 +2258.00680432354 +12 +997.519349743285 +22 +1.80477854883065e-13 +32 +2361.46489814399 +13 +997.519349743285 +23 +1.80477854883065e-13 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +767.904956185432 +20 +-709.249312269841 +30 +2240.21043503138 +11 +738.20854961057 +21 +-738.208549610569 +31 +2258.00680432354 +12 +739.771130343929 +22 +-739.771130343928 +32 +2249.46912732182 +13 +739.771130343929 +23 +-739.771130343928 +33 +2249.46912732182 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +738.20854961057 +20 +-738.208549610569 +30 +2258.00680432354 +11 +767.904956185432 +21 +-709.249312269841 +31 +2240.21043503138 +12 +868.04142298445 +22 +-580.006735667279 +32 +2258.00680432354 +13 +868.04142298445 +23 +-580.006735667279 +33 +2258.00680432354 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +2258.00680432354 +11 +767.904956185432 +21 +-709.249312269841 +31 +2240.21043503138 +12 +806.222028237971 +22 +-670.885845335315 +32 +2219.70473474119 +13 +806.222028237971 +23 +-670.885845335315 +33 +2219.70473474119 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +2258.00680432354 +11 +806.222028237971 +21 +-670.885845335315 +31 +2219.70473474119 +12 +843.013713767209 +22 +-637.259985333474 +32 +2192.10870461431 +13 +843.013713767209 +23 +-637.259985333474 +33 +2192.10870461431 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +2258.00680432354 +11 +843.013713767209 +21 +-637.259985333474 +31 +2192.10870461431 +12 +876.866128931272 +22 +-609.663955206588 +32 +2158.48284461247 +13 +876.866128931272 +23 +-609.663955206588 +33 +2158.48284461247 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +2258.00680432354 +11 +876.866128931272 +21 +-609.663955206588 +31 +2158.48284461247 +12 +884.794335210004 +22 +-604.173875548016 +32 +2148.21162800104 +13 +884.794335210004 +23 +-604.173875548016 +33 +2148.21162800104 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +868.04142298445 +20 +-580.006735667279 +30 +2258.00680432354 +11 +884.794335210004 +21 +-604.173875548016 +31 +2148.21162800104 +12 +891.670534105407 +22 +-595.795202951324 +32 +2148.21162800104 +13 +891.670534105407 +23 +-595.795202951324 +33 +2148.21162800104 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-705.352696568271 +20 +-705.352696568271 +30 +2361.46489814399 +11 +-868.041422984449 +21 +-580.006735667279 +31 +2258.00680432354 +12 +-738.208549610569 +22 +-738.20854961057 +32 +2258.00680432354 +13 +-738.208549610569 +23 +-738.20854961057 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-868.041422984449 +20 +-580.006735667279 +30 +2258.00680432354 +11 +-705.352696568271 +21 +-705.352696568271 +31 +2361.46489814399 +12 +-829.407026995335 +22 +-554.192057578438 +32 +2361.46489814399 +13 +-829.407026995335 +23 +-554.192057578438 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +911.540741979581 +20 +-574.59252267949 +30 +2011.5925230317 +11 +180.675224578544 +21 +-576.530907025343 +31 +1991.91176299638 +12 +908.625259608371 +22 +-576.530907025343 +32 +1991.91176299638 +13 +908.625259608371 +23 +-576.530907025343 +33 +1991.91176299638 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-576.530907025343 +30 +1991.91176299638 +11 +911.540741979581 +21 +-574.59252267949 +31 +2011.5925230317 +12 +180.675224578544 +22 +-572.26717343136 +32 +2035.20217666346 +13 +180.675224578544 +23 +-572.26717343136 +33 +2035.20217666346 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-572.26717343136 +30 +2035.20217666346 +11 +911.540741979581 +21 +-574.59252267949 +31 +2011.5925230317 +12 +912.783669278017 +22 +-572.267169258698 +32 +2035.20224467364 +13 +912.783669278017 +23 +-572.267169258698 +33 +2035.20224467364 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-572.26717343136 +30 +2035.20217666346 +11 +912.783669278017 +21 +-572.267169258698 +31 +2035.20224467364 +12 +907.767925107023 +22 +-572.267173431359 +32 +2035.20224673698 +13 +907.767925107023 +23 +-572.267173431359 +33 +2035.20224673698 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +767.904940618653 +20 +-709.249312269841 +30 +1830.19391829555 +11 +180.675224578544 +21 +-670.885845335315 +31 +1850.69961858573 +12 +180.675224578544 +22 +-709.249312269842 +32 +1830.19391829555 +13 +180.675224578544 +23 +-709.249312269842 +33 +1830.19391829555 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-670.885845335315 +30 +1850.69961858573 +11 +767.904940618653 +21 +-709.249312269841 +31 +1830.19391829555 +12 +806.222012671193 +22 +-670.885845335315 +32 +1850.69961858573 +13 +806.222012671193 +23 +-670.885845335315 +33 +1850.69961858573 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +303.914386430124 +20 +-733.714233519903 +30 +1614.7610800213 +11 +307.339228961076 +21 +-829.840689601495 +31 +1427.8983600213 +12 +339.669019965462 +22 +-820.033554718597 +32 +1427.8983600213 +13 +339.669019965462 +23 +-820.033554718597 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +307.339228961076 +20 +-829.840689601495 +30 +1427.8983600213 +11 +303.914386430124 +21 +-733.714233519903 +31 +1614.7610800213 +12 +221.595154594654 +22 +-855.850870199531 +32 +1427.8983600213 +13 +221.595154594654 +23 +-855.850870199531 +33 +1427.8983600213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +221.595154594654 +20 +-855.850870199531 +30 +1427.8983600213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1614.7610800213 +12 +173.161764737035 +22 +-870.542978388701 +32 +1427.8983600213 +13 +173.161764737035 +23 +-870.542978388701 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +154.93421062823 +20 +-778.906875772646 +30 +1614.7610800213 +11 +221.595154594654 +21 +-855.850870199531 +31 +1427.8983600213 +12 +303.914386430124 +22 +-733.714233519903 +32 +1614.7610800213 +13 +303.914386430124 +23 +-733.714233519903 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +40.1106512432667 +20 +-1076.01799327905 +30 +2017.42442965997 +11 +35.9517814413362 +21 +-1076.26268839831 +31 +2009.6437315188 +12 +36.9934322066314 +22 +-1076.32501255654 +32 +2011.5925230317 +13 +36.9934322066314 +23 +-1076.32501255654 +33 +2011.5925230317 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +35.9517814413362 +20 +-1076.26268839831 +30 +2009.6437315188 +11 +40.1106512432667 +21 +-1076.01799327905 +31 +2017.42442965997 +12 +35.9517814413364 +22 +-975.958401912124 +32 +2009.6437315188 +13 +35.9517814413364 +23 +-975.958401912124 +33 +2009.6437315188 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +35.9517814413364 +20 +-975.958401912124 +30 +2009.6437315188 +11 +40.1106512432667 +21 +-1076.01799327905 +31 +2017.42442965997 +12 +40.110651243267 +22 +-976.014544733984 +32 +2017.42442965997 +13 +40.110651243267 +23 +-976.014544733984 +33 +2017.42442965997 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-853.465106968372 +20 +-778.056206654812 +30 +2053.98620958956 +11 +-818.480102290147 +21 +-696.846172894875 +31 +2011.59249120966 +12 +-853.905696349335 +22 +-778.54324309139 +32 +2019.68727261649 +13 +-853.905696349335 +23 +-778.54324309139 +33 +2019.68727261649 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-818.480102290147 +20 +-696.846172894875 +30 +2011.59249120966 +11 +-853.465106968372 +21 +-778.056206654812 +31 +2053.98620958956 +12 +-818.273878310588 +22 +-697.096462294947 +32 +2058.80160712022 +13 +-818.273878310588 +23 +-697.096462294947 +33 +2058.80160712022 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +164.047987682633 +20 +-824.724927080674 +30 +914.026066884025 +11 +250.282436127116 +21 +-604.235251721862 +31 +1054.1729200213 +12 +127.592879465023 +22 +-641.452721848564 +32 +1054.1729200213 +13 +127.592879465023 +23 +-641.452721848564 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +250.282436127116 +20 +-604.235251721862 +30 +1054.1729200213 +11 +164.047987682633 +21 +-824.724927080674 +31 +914.026066884025 +12 +321.791703197793 +22 +-776.87389411925 +32 +914.026066884025 +13 +321.791703197793 +23 +-776.87389411925 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +268.159752894785 +20 +-647.394912321209 +30 +1241.03564002131 +11 +154.93421062823 +21 +-778.906875772646 +31 +1054.1729200213 +12 +303.914386430124 +22 +-733.714233519903 +32 +1054.1729200213 +13 +303.914386430124 +23 +-733.714233519903 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +154.93421062823 +20 +-778.906875772646 +30 +1054.1729200213 +11 +268.159752894785 +21 +-647.394912321209 +31 +1241.03564002131 +12 +136.706656519425 +22 +-687.270773156591 +32 +1241.03564002131 +13 +136.706656519425 +23 +-687.270773156591 +33 +1241.03564002131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-784.019466456977 +20 +1.80477854883065e-13 +30 +631.979456702016 +11 +-731.120068617964 +21 +-145.428823687577 +31 +587.016306884026 +12 +-768.954752250597 +22 +-152.954610178005 +32 +631.979456702016 +13 +-768.954752250597 +23 +-152.954610178005 +33 +631.979456702016 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-731.120068617964 +20 +-145.428823687577 +30 +587.016306884026 +11 +-784.019466456977 +21 +1.80477854883065e-13 +31 +631.979456702016 +12 +-745.443557551536 +22 +1.80477854883065e-13 +32 +587.016306884026 +13 +-745.443557551536 +23 +1.80477854883065e-13 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-660.670394770277 +20 +-660.670394770277 +30 +2455.6433200213 +11 +-829.407026995335 +21 +-554.192057578438 +31 +2361.46489814399 +12 +-705.352696568271 +22 +-705.352696568271 +32 +2361.46489814399 +13 +-705.352696568271 +23 +-705.352696568271 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-829.407026995335 +20 +-554.192057578438 +30 +2361.46489814399 +11 +-660.670394770277 +21 +-660.670394770277 +31 +2455.6433200213 +12 +-705.689427437034 +22 +-605.814544747273 +32 +2455.6433200213 +13 +-705.689427437034 +23 +-605.814544747273 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-829.407026995335 +20 +-554.192057578438 +30 +2361.46489814399 +11 +-705.689427437034 +21 +-605.814544747273 +31 +2455.6433200213 +12 +-765.568613945096 +22 +-532.851544877859 +32 +2455.6433200213 +13 +-765.568613945096 +23 +-532.851544877859 +33 +2455.6433200213 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-829.407026995335 +20 +-554.192057578438 +30 +2361.46489814399 +11 +-765.568613945096 +21 +-532.851544877859 +31 +2455.6433200213 +12 +-776.866198451135 +22 +-519.085398326623 +32 +2455.6433200213 +13 +-776.866198451135 +23 +-519.085398326623 +33 +2455.6433200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +706.098253038493 +20 +-471.799768952456 +30 +855.37186879426 +11 +594.593536632776 +21 +-594.593536632776 +31 +914.026066884025 +12 +600.487204246519 +22 +-600.48720424652 +32 +855.37186879426 +13 +600.487204246519 +23 +-600.48720424652 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +914.026066884025 +11 +706.098253038493 +21 +-471.799768952456 +31 +855.37186879426 +12 +699.168033082722 +22 +-467.169144021929 +32 +914.026066884025 +13 +699.168033082722 +23 +-467.169144021929 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +321.791703197793 +20 +-776.87389411925 +30 +914.026066884025 +11 +165.674046918965 +21 +-832.899678896021 +31 +855.37186879426 +12 +324.981333125909 +22 +-784.574341950659 +32 +855.37186879426 +13 +324.981333125909 +23 +-784.574341950659 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +165.674046918965 +20 +-832.899678896021 +30 +855.37186879426 +11 +321.791703197793 +21 +-776.87389411925 +31 +914.026066884025 +12 +164.047987682633 +22 +-824.724927080674 +32 +914.026066884025 +13 +164.047987682633 +23 +-824.724927080674 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +670.391132645368 +20 +-794.16651328432 +30 +1813.3028368105 +11 +180.675224578544 +21 +-750.87609961724 +31 +1817.56657040449 +12 +180.675224578544 +22 +-794.16651328432 +32 +1813.3028368105 +13 +180.675224578544 +23 +-794.16651328432 +33 +1813.3028368105 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-750.87609961724 +30 +1817.56657040449 +11 +670.391132645368 +21 +-794.16651328432 +31 +1813.3028368105 +12 +724.87187698787 +22 +-750.87609961724 +32 +1817.56657040449 +13 +724.87187698787 +23 +-750.87609961724 +33 +1817.56657040449 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-978.669071362051 +30 +2158.48284461247 +11 +653.750224578544 +21 +-999.174771652236 +31 +2120.11937767794 +12 +180.675224578544 +22 +-999.174771652236 +32 +2120.11937767794 +13 +180.675224578544 +23 +-999.174771652236 +33 +2120.11937767794 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +653.750224578544 +20 +-999.174771652236 +30 +2120.11937767794 +11 +180.675224578544 +21 +-978.669071362051 +31 +2158.48284461247 +12 +653.750224578544 +22 +-978.669071362051 +32 +2158.48284461247 +13 +653.750224578544 +23 +-978.669071362051 +33 +2158.48284461247 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-707.112261617118 +30 +2017.88600937388 +11 +104.493588061205 +21 +-712.163204861239 +31 +2001.23529816273 +12 +180.675224578544 +22 +-712.163201305221 +32 +2001.23529268221 +13 +180.675224578544 +23 +-712.163201305221 +33 +2001.23529268221 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493588061205 +20 +-712.163204861239 +30 +2001.23529816273 +11 +180.675224578544 +21 +-707.112261617118 +31 +2017.88600937388 +12 +104.493585205719 +22 +-707.112262514746 +32 +2017.88602361794 +13 +104.493585205719 +23 +-707.112262514746 +33 +2017.88602361794 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +561.560562517035 +20 +-561.560562517035 +30 +1614.7610800213 +11 +540.907511486368 +21 +-698.794954204847 +31 +1427.8983600213 +12 +627.626510748516 +22 +-627.626510748516 +32 +1427.8983600213 +13 +627.626510748516 +23 +-627.626510748516 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +540.907511486368 +20 +-698.794954204847 +30 +1427.8983600213 +11 +441.215302798659 +21 +-660.325364744672 +31 +1614.7610800213 +12 +493.122985245198 +22 +-738.010701420772 +32 +1427.8983600213 +13 +493.122985245198 +23 +-738.010701420772 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +441.215302798659 +20 +-660.325364744672 +30 +1614.7610800213 +11 +540.907511486368 +21 +-698.794954204847 +31 +1427.8983600213 +12 +561.560562517035 +22 +-561.560562517035 +32 +1614.7610800213 +13 +561.560562517035 +23 +-561.560562517035 +33 +1614.7610800213 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-750.032010089465 +20 +-762.726244296354 +30 +1915.09420023775 +11 +-781.550764523053 +21 +-852.489442592712 +31 +1950.71579563676 +12 +-805.85406896736 +22 +-828.277941296301 +32 +1950.68418808414 +13 +-805.85406896736 +23 +-828.277941296301 +33 +1950.68418808414 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-781.550764523053 +20 +-852.489442592712 +30 +1950.71579563676 +11 +-750.032010089465 +21 +-762.726244296354 +31 +1915.09420023775 +12 +-712.200510303116 +22 +-793.069743896677 +32 +1912.98147661467 +13 +-712.200510303116 +23 +-793.069743896677 +33 +1912.98147661467 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +594.593536632776 +20 +-594.593536632776 +30 +914.026066884025 +11 +543.797359730523 +21 +-363.353779128852 +31 +1054.1729200213 +12 +462.461640169813 +22 +-462.461640169813 +32 +1054.1729200213 +13 +462.461640169813 +23 +-462.461640169813 +33 +1054.1729200213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +543.797359730523 +20 +-363.353779128852 +30 +1054.1729200213 +11 +594.593536632776 +21 +-594.593536632776 +31 +914.026066884025 +12 +699.168033082722 +22 +-467.169144021929 +32 +914.026066884025 +13 +699.168033082722 +23 +-467.169144021929 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-683.397324988288 +20 +-829.51728232132 +30 +2058.8118770109 +11 +-761.149821895316 +21 +-761.14982219046 +31 +2100.64485501639 +12 +-763.653083482914 +22 +-763.653083482914 +32 +2058.8118770109 +13 +-763.653083482914 +23 +-763.653083482914 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-761.149821895316 +20 +-761.14982219046 +30 +2100.64485501639 +11 +-683.397324988288 +21 +-829.51728232132 +31 +2058.8118770109 +12 +-688.216174174222 +22 +-823.534449985187 +32 +2077.42717273413 +13 +-688.216174174222 +23 +-823.534449985187 +33 +2077.42717273413 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-761.149821895316 +20 +-761.14982219046 +30 +2100.64485501639 +11 +-688.216174174222 +21 +-823.534449985187 +31 +2077.42717273413 +12 +-703.270205185374 +22 +-808.916878172158 +32 +2098.19892992261 +13 +-703.270205185374 +23 +-808.916878172158 +33 +2098.19892992261 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-761.149821895316 +20 +-761.14982219046 +30 +2100.64485501639 +11 +-703.270205185374 +21 +-808.916878172158 +31 +2098.19892992261 +12 +-723.84293286299 +22 +-790.84270017674 +32 +2109.1268343449 +13 +-723.84293286299 +23 +-790.84270017674 +33 +2109.1268343449 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-761.149821895316 +20 +-761.14982219046 +30 +2100.64485501639 +11 +-723.84293286299 +21 +-790.84270017674 +31 +2109.1268343449 +12 +-746.579505030633 +22 +-772.239793008819 +32 +2108.60809856919 +13 +-746.579505030633 +23 +-772.239793008819 +33 +2108.60809856919 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-704.67526609701 +20 +-470.84895947612 +30 +796.153149972084 +11 +-590.997993226901 +21 +-590.997993226901 +31 +738.078199114136 +12 +-599.277053327022 +22 +-599.277053327022 +32 +796.153149972084 +13 +-599.277053327022 +23 +-599.277053327022 +33 +796.153149972084 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-590.997993226901 +20 +-590.997993226901 +30 +738.078199114136 +11 +-704.67526609701 +21 +-470.84895947612 +31 +796.153149972084 +12 +-694.940121314314 +22 +-464.344143695271 +32 +738.078199114136 +13 +-694.940121314314 +23 +-464.344143695271 +33 +738.078199114136 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-779.335772128321 +20 +-850.040945080999 +30 +2123.14819601944 +11 +-750.226480623555 +21 +-763.163737563064 +31 +2153.51833793914 +12 +-803.639076572628 +22 +-825.829443784589 +32 +2123.11658846682 +13 +-803.639076572628 +23 +-825.829443784589 +33 +2123.11658846682 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-750.226480623555 +20 +-763.163737563064 +30 +2153.51833793914 +11 +-779.335772128321 +21 +-850.040945080999 +31 +2123.14819601944 +12 +-713.051374182295 +22 +-793.031288591004 +32 +2155.44278114838 +13 +-713.051374182295 +23 +-793.031288591004 +33 +2155.44278114838 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +724.87187698787 +20 +-750.87609961724 +30 +1817.56657040449 +11 +180.675224578544 +21 +-709.249312269842 +31 +1830.19391829555 +12 +180.675224578544 +22 +-750.87609961724 +32 +1817.56657040449 +13 +180.675224578544 +23 +-750.87609961724 +33 +1817.56657040449 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-709.249312269842 +30 +1830.19391829555 +11 +724.87187698787 +21 +-750.87609961724 +31 +1817.56657040449 +12 +767.904940618653 +22 +-709.249312269841 +32 +1830.19391829555 +13 +767.904940618653 +23 +-709.249312269841 +33 +1830.19391829555 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +767.904940618653 +20 +-709.249312269841 +30 +1830.19391829555 +11 +724.87187698787 +21 +-750.87609961724 +31 +1817.56657040449 +12 +739.771122243662 +22 +-739.771122243661 +32 +1820.9352284623 +13 +739.771122243662 +23 +-739.771122243661 +33 +1820.9352284623 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-738.208549610569 +20 +-738.20854961057 +30 +2258.00680432354 +11 +-759.379832416841 +21 +-756.991889361348 +31 +2148.21162800104 +12 +-758.175252738136 +22 +-758.175252738136 +32 +2148.91211343617 +13 +-758.175252738136 +23 +-758.175252738136 +33 +2148.91211343617 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-759.379832416841 +20 +-756.991889361348 +30 +2148.21162800104 +11 +-738.208549610569 +21 +-738.20854961057 +31 +2258.00680432354 +12 +-891.670534105406 +22 +-595.795202951324 +32 +2148.21162800104 +13 +-891.670534105406 +23 +-595.795202951324 +33 +2148.21162800104 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-891.670534105406 +20 +-595.795202951324 +30 +2148.21162800104 +11 +-738.208549610569 +21 +-738.20854961057 +31 +2258.00680432354 +12 +-868.041422984449 +22 +-580.006735667279 +32 +2258.00680432354 +13 +-868.041422984449 +23 +-580.006735667279 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-769.870311262695 +20 +-863.130130350016 +30 +1987.61043910797 +11 +-723.636295253065 +21 +-790.983771266745 +31 +1961.01586348506 +12 +-785.140115231108 +22 +-848.157192786392 +32 +1978.73092447164 +13 +-785.140115231108 +23 +-848.157192786392 +33 +1978.73092447164 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-723.636295253065 +20 +-790.983771266745 +30 +1961.01586348506 +11 +-769.870311262695 +21 +-863.130130350016 +31 +1987.61043910797 +12 +-702.965588161926 +22 +-809.153241506708 +32 +1972.08037046597 +13 +-702.965588161926 +23 +-809.153241506708 +33 +1972.08037046597 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-655.637457605706 +20 +-847.372595440649 +30 +2104.03168141582 +11 +-757.051052836406 +21 +-872.59583635536 +31 +2110.05176266305 +12 +-740.177565197592 +22 +-890.060339871748 +32 +2085.82110165668 +13 +-740.177565197592 +23 +-890.060339871748 +33 +2085.82110165668 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-757.051052836406 +20 +-872.59583635536 +30 +2110.05176266305 +11 +-655.637457605706 +21 +-847.372595440649 +31 +2104.03168141582 +12 +-680.351354626835 +22 +-823.413171149779 +32 +2137.7839549476 +13 +-680.351354626835 +23 +-823.413171149779 +33 +2137.7839549476 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-786.92474167715 +20 +-735.296194513125 +30 +2058.80750841657 +11 +-763.653083482914 +21 +-763.653083482914 +31 +2011.5925230317 +12 +-763.653083482914 +22 +-763.653083482914 +32 +2058.8118770109 +13 +-763.653083482914 +23 +-763.653083482914 +33 +2058.8118770109 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-763.653083482914 +20 +-763.653083482914 +30 +2011.5925230317 +11 +-786.92474167715 +21 +-735.296194513125 +31 +2058.80750841657 +12 +-786.927339360508 +22 +-735.2933223192 +32 +2011.59250954971 +13 +-786.927339360508 +23 +-735.2933223192 +33 +2011.59250954971 +70 +3 + 0 +3DFACE + 8 +body_half_outside +10 +-786.927339360508 +20 +-735.2933223192 +30 +2011.59250954971 +11 +-786.92474167715 +21 +-735.296194513125 +31 +2058.80750841657 +12 +-789.34285913936 +22 +-732.349614898499 +32 +2049.89434090933 +13 +-789.34285913936 +23 +-732.349614898499 +33 +2049.89434090933 +70 +13 + 0 +3DFACE + 8 +body_half_outside +10 +-786.927339360508 +20 +-735.2933223192 +30 +2011.59250954971 +11 +-789.34285913936 +21 +-732.349614898499 +31 +2049.89434090933 +12 +-789.394716623343 +22 +-732.286733093936 +32 +2020.79944934296 +13 +-789.394716623343 +23 +-732.286733093936 +33 +2020.79944934296 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493610898294 +20 +-856.9292108199 +30 +1972.4395492014 +11 +180.675224578544 +21 +-843.478785654691 +31 +1961.40114566384 +12 +104.493610580936 +22 +-843.478858324204 +32 +1961.40113017901 +13 +104.493610580936 +23 +-843.478858324204 +33 +1961.40113017901 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-843.478785654691 +30 +1961.40114566384 +11 +104.493610898294 +21 +-856.9292108199 +31 +1972.4395492014 +12 +180.675224578544 +22 +-856.929131071254 +32 +1972.43955887653 +13 +180.675224578544 +23 +-856.929131071254 +33 +1972.43955887653 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.49360070239 +20 +-760.199658141424 +30 +1953.19884488255 +11 +180.675224578544 +21 +-744.854240913949 +31 +1961.40114566384 +12 +104.493597604008 +22 +-744.854261675785 +32 +1961.40113017901 +13 +104.493597604008 +23 +-744.854261675785 +33 +1961.40113017901 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-744.854240913949 +30 +1961.40114566384 +11 +104.49360070239 +21 +-760.199658141424 +31 +1953.19884488255 +12 +180.675224578544 +22 +-760.199629303065 +32 +1953.19886468436 +13 +180.675224578544 +23 +-760.199629303065 +33 +1953.19886468436 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493608114757 +20 +-881.220857485245 +30 +2017.88602361794 +11 +180.675224578544 +21 +-882.926258568641 +31 +2035.20217666346 +12 +180.675224578544 +22 +-881.220764951522 +32 +2017.88600937388 +13 +180.675224578544 +23 +-881.220764951522 +33 +2017.88600937388 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-882.926258568641 +30 +2035.20217666346 +11 +104.493608114757 +21 +-881.220857485245 +31 +2017.88602361794 +12 +104.493606060716 +22 +-882.926351999993 +32 +2035.2022000213 +13 +104.493606060716 +23 +-882.926351999993 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +832.899678896021 +20 +-165.674046918965 +30 +855.37186879426 +11 +776.87389411925 +21 +-321.791703197793 +31 +914.026066884025 +12 +784.574341950659 +22 +-324.981333125909 +32 +855.37186879426 +13 +784.574341950659 +23 +-324.981333125909 +33 +855.37186879426 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +776.87389411925 +20 +-321.791703197793 +30 +914.026066884025 +11 +832.899678896021 +21 +-165.674046918965 +31 +855.37186879426 +12 +824.724927080674 +22 +-164.047987682633 +32 +914.026066884025 +13 +824.724927080674 +23 +-164.047987682633 +33 +914.026066884025 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-554.192057578438 +20 +-829.407026995335 +30 +2361.46489814399 +11 +-738.208549610569 +21 +-738.20854961057 +31 +2258.00680432354 +12 +-580.006735667279 +22 +-868.041422984449 +32 +2258.00680432354 +13 +-580.006735667279 +23 +-868.041422984449 +33 +2258.00680432354 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +-738.208549610569 +20 +-738.20854961057 +30 +2258.00680432354 +11 +-554.192057578438 +21 +-829.407026995335 +31 +2361.46489814399 +12 +-705.352696568271 +22 +-705.352696568271 +32 +2361.46489814399 +13 +-705.352696568271 +23 +-705.352696568271 +33 +2361.46489814399 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493608114766 +20 +-811.482736403359 +30 +1948.14790253605 +11 +180.675224578544 +21 +-794.16651328432 +31 +1946.44243137914 +12 +104.493606060728 +22 +-794.166559999995 +32 +1946.44240802131 +13 +104.493606060728 +23 +-794.166559999995 +33 +1946.44240802131 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-794.16651328432 +30 +1946.44243137914 +11 +104.493608114766 +21 +-811.482736403359 +31 +1948.14790253605 +12 +180.675224578544 +22 +-811.482680573908 +32 +1948.14792499626 +13 +180.675224578544 +23 +-811.482680573908 +33 +1948.14792499626 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493609641047 +20 +-876.169915138752 +30 +2001.23529816273 +11 +180.675224578544 +21 +-867.967544283947 +31 +1985.88990429309 +12 +104.493610580933 +22 +-867.967629842287 +32 +1985.88990169709 +13 +104.493610580933 +23 +-867.967629842287 +33 +1985.88990169709 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-867.967544283947 +30 +1985.88990429309 +11 +104.493609641047 +21 +-876.169915138752 +31 +2001.23529816273 +12 +180.675224578544 +22 +-876.169825263419 +32 +2001.23529268221 +13 +180.675224578544 +23 +-876.169825263419 +33 +2001.23529268221 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +870.542978388702 +20 +-173.161764737035 +30 +1427.8983600213 +11 +733.714233519903 +21 +-303.914386430124 +31 +1614.7610800213 +12 +820.033554718597 +22 +-339.669019965462 +32 +1427.8983600213 +13 +820.033554718597 +23 +-339.669019965462 +33 +1427.8983600213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +733.714233519903 +20 +-303.914386430124 +30 +1614.7610800213 +11 +870.542978388702 +21 +-173.161764737035 +31 +1427.8983600213 +12 +778.906875772646 +22 +-154.93421062823 +32 +1614.7610800213 +13 +778.906875772646 +23 +-154.93421062823 +33 +1614.7610800213 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493606060728 +20 +-794.166559999995 +30 +1946.44240802131 +11 +180.675224578544 +21 +-776.850345994732 +31 +1948.14792499626 +12 +104.493603557875 +22 +-776.850383596631 +32 +1948.14790253605 +13 +104.493603557875 +23 +-776.850383596631 +33 +1948.14790253605 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-776.850345994732 +30 +1948.14792499626 +11 +104.493606060728 +21 +-794.166559999995 +31 +1946.44240802131 +12 +180.675224578544 +22 +-794.16651328432 +32 +1946.44243137914 +13 +180.675224578544 +23 +-794.16651328432 +33 +1946.44243137914 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +104.493610580933 +20 +-867.967629842287 +30 +1985.88990169709 +11 +180.675224578544 +21 +-856.929131071254 +31 +1972.43955887653 +12 +104.493610898294 +22 +-856.9292108199 +32 +1972.4395492014 +13 +104.493610898294 +23 +-856.9292108199 +33 +1972.4395492014 +70 +1 + 0 +3DFACE + 8 +body_half_outside +10 +180.675224578544 +20 +-856.929131071254 +30 +1972.43955887653 +11 +104.493610580933 +21 +-867.967629842287 +31 +1985.88990169709 +12 +180.675224578544 +22 +-867.967544283947 +32 +1985.88990429309 +13 +180.675224578544 +23 +-867.967544283947 +33 +1985.88990429309 +70 +1 + 0 +LINE + 8 +gearbox_half +10 +30.4100782304564 +20 +-746.49013258163 +30 +2453.45715065631 +11 +24.34322336653 +21 +-746.490281375615 +31 +2458.93184091804 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +40.5223071141985 +21 +-746.489826768683 +31 +2418.48410781754 + 0 +LINE + 8 +gearbox_half +10 +38.1044882661712 +20 +-746.472597450548 +30 +2441.59510408829 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +28.6886074277319 +21 +-845.586914684007 +31 +2396.25770684411 + 0 +LINE + 8 +gearbox_half +10 +-8.80083252567691 +20 +-746.490516835407 +30 +2466.03430060887 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +24.34322336653 +21 +-746.490281375615 +31 +2458.93184091804 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +-38.4950902517974 +21 +-746.468944067437 +31 +2440.30734482534 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +1.97523338443695e-05 +21 +-746.466300328333 +31 +2408.44996985759 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +-33.4678737118522 +21 +-842.638323863285 +31 +2401.89221007289 + 0 +LINE + 8 +gearbox_half +10 +1.97523338443695e-05 +20 +-746.466300328333 +30 +2408.44996985759 +11 +-8.51065249376504e-06 +21 +-839.802827497933 +31 +2407.23923490746 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +-28.6885754589981 +21 +-845.586914071948 +31 +2396.25770800615 + 0 +LINE + 8 +gearbox_half +10 +-15.9204113486204 +20 +-849.898361163922 +30 +2387.78046547824 +11 +-8.51065249376504e-06 +21 +-839.802827497933 +31 +2407.23923490746 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +8.20040795902847 +21 +-851.106221594429 +31 +2385.4069325561 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +40.5223036225517 +21 +-746.489826768019 +31 +2433.13926654555 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +22.8299783182512 +21 +-848.019743175159 +31 +2391.47368489106 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +-8.20037490092574 +21 +-851.106218203592 +31 +2385.40693910603 + 0 +LINE + 8 +gearbox_half +10 +2.12757738010438e-05 +20 +-746.490561947348 +30 +2467.05568035128 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +38.4951388369074 +20 +-746.468944065183 +30 +2440.307304368 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +-40.5222597845463 +20 +-746.489826767721 +30 +2433.13935135064 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +15.9204143676902 +21 +-849.898373872036 +31 +2387.78044098382 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +33.4679083982488 +21 +-842.638324380738 +31 +2401.8922090971 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +-40.5222636135967 +21 +-746.489826768433 +31 +2418.48410805367 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +1.72997611565862e-05 +21 +-851.533505856544 +31 +2384.56770196969 + 0 +LINE + 8 +gearbox_half +10 +30.4100782304564 +20 +-746.49013258163 +30 +2453.45715065631 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +-8.51065249376504e-06 +20 +-839.802827497933 +30 +2407.23923490746 +11 +-22.8299485734197 +21 +-848.019743098533 +31 +2391.47368503808 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +-38.4950971525309 +21 +-746.468944065041 +31 +2411.31607076746 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +35.1336643413592 +21 +-746.489997426872 +31 +2447.15311715482 + 0 +LINE + 8 +gearbox_half +10 +-35.1336147072826 +20 +-746.489997435648 +30 +2447.15314153492 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +-41.243969438466 +20 +-746.489812236375 +30 +2425.81166701568 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +41.2440089431315 +21 +-746.489812235881 +31 +2425.81169037352 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +-17.0525826131802 +21 +-746.490415123346 +31 +2463.2377628621 + 0 +LINE + 8 +gearbox_half +10 +-24.3431841465257 +20 +-746.490281376331 +30 +2458.9318438987 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +17.0526628275986 +20 +-746.490415117915 +30 +2463.23773775863 +11 +2.7574625836424e-05 +21 +-746.482315034391 +31 +2425.81166985652 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +8.80087264672179 +21 +-746.490516834585 +31 +2466.03429657022 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +38.4951397868556 +21 +-746.468944064851 +31 +2411.31607056148 + 0 +LINE + 8 +gearbox_half +10 +2.7574625836424e-05 +20 +-746.482315034391 +30 +2425.81166985652 +11 +-30.4100395457505 +21 +-746.490132582396 +31 +2453.45715336784 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4089950656911 +20 +-70.0735200000139 +30 +1719.8874193002 +11 +-23.8222131580276 +21 +-116.789200000014 +31 +1715.92498725262 +12 +-23.8222131580276 +22 +-70.0735200000139 +32 +1715.92498725262 +13 +-23.8222131580276 +23 +-70.0735200000139 +33 +1715.92498725262 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222131580276 +20 +-116.789200000014 +30 +1715.92498725262 +11 +-16.4089950656911 +21 +-70.0735200000139 +31 +1719.8874193002 +12 +-16.4089950656911 +22 +-116.789200000014 +32 +1719.8874193002 +13 +-16.4089950656911 +23 +-116.789200000014 +33 +1719.8874193002 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +712.934349429914 +20 +-116.789200000014 +30 +1614.07300396247 +11 +-758.547422188618 +21 +-116.789200000014 +31 +1522.84685844505 +12 +758.547422188619 +22 +-116.789200000014 +32 +1522.84685844505 +13 +758.547422188619 +23 +-116.789200000014 +33 +1522.84685844505 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-758.547422188618 +20 +-116.789200000014 +30 +1522.84685844505 +11 +712.934349429914 +21 +-116.789200000014 +31 +1614.07300396247 +12 +-712.59031140046 +22 +-116.789200000014 +32 +1614.76108002137 +13 +-712.59031140046 +23 +-116.789200000014 +33 +1614.76108002137 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-712.59031140046 +20 +-116.789200000014 +30 +1614.76108002137 +11 +712.934349429914 +21 +-116.789200000014 +31 +1614.07300396247 +12 +93.4322738363532 +22 +-116.789200000014 +32 +1614.76107890595 +13 +93.4322738363532 +23 +-116.789200000014 +33 +1614.76107890595 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-712.59031140046 +20 +-116.789200000014 +30 +1614.76108002137 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +-93.4313636055058 +22 +-116.789200000014 +32 +1614.76108002137 +13 +-93.4313636055058 +23 +-116.789200000014 +33 +1614.76108002137 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +1614.76108002137 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +8.36522724084684 +22 +-116.789200000014 +32 +1638.21727291857 +13 +8.36522724084684 +23 +-116.789200000014 +33 +1638.21727291857 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +8.36522724084684 +20 +-116.789200000014 +30 +1638.21727291857 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +16.4090345703586 +22 +-116.789200000014 +32 +1640.65732084063 +13 +16.4090345703586 +23 +-116.789200000014 +33 +1640.65732084063 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090345703586 +20 +-116.789200000014 +30 +1640.65732084063 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +23.8222526626951 +22 +-116.789200000014 +32 +1644.61975288821 +13 +23.8222526626951 +23 +-116.789200000014 +33 +1644.61975288821 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +23.8222526626951 +20 +-116.789200000014 +30 +1644.61975288821 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +30.3199957039486 +22 +-116.789200000014 +32 +1649.95229501988 +13 +30.3199957039486 +23 +-116.789200000014 +33 +1649.95229501988 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +30.3199957039486 +20 +-116.789200000014 +30 +1649.95229501988 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +35.65255907302 +22 +-116.789200000014 +32 +1656.45002063205 +13 +35.65255907302 +23 +-116.789200000014 +33 +1656.45002063205 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +35.65255907302 +20 +-116.789200000014 +30 +1656.45002063205 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +39.6150153501718 +22 +-116.789200000014 +32 +1663.86322577341 +13 +39.6150153501718 +23 +-116.789200000014 +33 +1663.86322577341 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150153501718 +20 +-116.789200000014 +30 +1663.86322577341 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +42.0550895628442 +22 +-116.789200000014 +32 +1671.90702512775 +13 +42.0550895628442 +23 +-116.789200000014 +33 +1671.90702512775 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +42.0550895628442 +20 +-116.789200000014 +30 +1671.90702512775 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +42.8790110274535 +22 +-116.789200000014 +32 +1680.2722999969 +13 +42.8790110274535 +23 +-116.789200000014 +33 +1680.2722999969 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790110274535 +20 +-116.789200000014 +30 +1680.2722999969 +11 +93.4322738363532 +21 +-116.789200000014 +31 +1614.76107890595 +12 +93.4313563944944 +22 +-116.789200000014 +32 +2549.07468002137 +13 +93.4313563944944 +23 +-116.789200000014 +33 +2549.07468002137 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +1614.76108002137 +11 +8.36522724084684 +21 +-116.789200000014 +31 +1638.21727291857 +12 +-5.03211860767294e-05 +22 +-116.789200000014 +32 +1637.3933787953 +13 +-5.03211860767294e-05 +23 +-116.789200000014 +33 +1637.3933787953 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790110274535 +20 +-116.789200000014 +30 +1680.2722999969 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +42.0551169041753 +22 +-116.789200000014 +32 +1688.63757755893 +13 +42.0551169041753 +23 +-116.789200000014 +33 +1688.63757755893 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +42.0551169041753 +20 +-116.789200000014 +30 +1688.63757755893 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +39.615068982122 +22 +-116.789200000014 +32 +1696.68138488844 +13 +39.615068982122 +23 +-116.789200000014 +33 +1696.68138488844 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +39.615068982122 +20 +-116.789200000014 +30 +1696.68138488844 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +35.6526369345435 +22 +-116.789200000014 +32 +1704.09460298078 +13 +35.6526369345435 +23 +-116.789200000014 +33 +1704.09460298078 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +35.6526369345435 +20 +-116.789200000014 +30 +1704.09460298078 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +30.3200948028707 +22 +-116.789200000014 +32 +1710.59234602203 +13 +30.3200948028707 +23 +-116.789200000014 +33 +1710.59234602203 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200948028707 +20 +-116.789200000014 +30 +1710.59234602203 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +23.8223691906999 +22 +-116.789200000014 +32 +1715.9249093911 +13 +23.8223691906999 +23 +-116.789200000014 +33 +1715.9249093911 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223691906999 +20 +-116.789200000014 +30 +1715.9249093911 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +16.4091640493401 +22 +-116.789200000014 +32 +1719.88736566825 +13 +16.4091640493401 +23 +-116.789200000014 +33 +1719.88736566825 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +16.4091640493401 +20 +-116.789200000014 +30 +1719.88736566825 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +42.8790110274535 +22 +-116.789200000014 +32 +2035.20210659002 +13 +42.8790110274535 +23 +-116.789200000014 +33 +2035.20210659002 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +16.4091640493401 +20 +-116.789200000014 +30 +1719.88736566825 +11 +42.8790110274535 +21 +-116.789200000014 +31 +2035.20210659002 +12 +42.0550941197328 +22 +-116.789200000014 +32 +2026.83683127205 +13 +42.0550941197328 +23 +-116.789200000014 +33 +2026.83683127205 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +16.4091640493401 +20 +-116.789200000014 +30 +1719.88736566825 +11 +42.0550941197328 +21 +-116.789200000014 +31 +2026.83683127205 +12 +8.36536469500046 +22 +-116.789200000014 +32 +1722.32743988093 +13 +8.36536469500046 +23 +-116.789200000014 +33 +1722.32743988093 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.36536469500046 +20 +-116.789200000014 +30 +1722.32743988093 +11 +42.0550941197328 +21 +-116.789200000014 +31 +2026.83683127205 +12 +8.98258536075502e-05 +22 +-116.789200000014 +32 +1723.15136134553 +13 +8.98258536075502e-05 +23 +-116.789200000014 +33 +1723.15136134553 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-116.789200000014 +30 +1723.15136134553 +11 +42.0550941197328 +21 +-116.789200000014 +31 +2026.83683127205 +12 +39.6150242888304 +22 +-116.789200000014 +32 +2018.79303058852 +13 +39.6150242888304 +23 +-116.789200000014 +33 +2018.79303058852 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-116.789200000014 +30 +1723.15136134553 +11 +39.6150242888304 +21 +-116.789200000014 +31 +2018.79303058852 +12 +35.652572049941 +22 +-116.789200000014 +32 +2011.37982328866 +13 +35.652572049941 +23 +-116.789200000014 +33 +2011.37982328866 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-116.789200000014 +30 +1723.15136134553 +11 +35.652572049941 +21 +-116.789200000014 +31 +2011.37982328866 +12 +30.3200122204362 +22 +-116.789200000014 +32 +2004.88209477165 +13 +30.3200122204362 +23 +-116.789200000014 +33 +2004.88209477165 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-116.789200000014 +30 +1723.15136134553 +11 +30.3200122204362 +21 +-116.789200000014 +31 +2004.88209477165 +12 +23.8222720840299 +22 +-116.789200000014 +32 +1999.54954910041 +13 +23.8222720840299 +23 +-116.789200000014 +33 +1999.54954910041 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-116.789200000014 +30 +1723.15136134553 +11 +23.8222720840299 +21 +-116.789200000014 +31 +1999.54954910041 +12 +16.4090561501895 +22 +-116.789200000014 +32 +1995.58711301456 +13 +16.4090561501895 +23 +-116.789200000014 +33 +1995.58711301456 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-116.789200000014 +30 +1723.15136134553 +11 +16.4090561501895 +21 +-116.789200000014 +31 +1995.58711301456 +12 +8.36525014987311 +22 +-116.789200000014 +32 +1993.14706071074 +13 +8.36525014987311 +23 +-116.789200000014 +33 +1993.14706071074 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-116.789200000014 +30 +1723.15136134553 +11 +8.36525014987311 +21 +-116.789200000014 +31 +1993.14706071074 +12 +-2.69633454074381e-05 +22 +-116.789200000014 +32 +1992.32316203057 +13 +-2.69633454074381e-05 +23 +-116.789200000014 +33 +1992.32316203057 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790110274535 +20 +-116.789200000014 +30 +2035.20210659002 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +42.0551123472866 +22 +-116.789200000014 +32 +2043.56738370323 +13 +42.0551123472866 +23 +-116.789200000014 +33 +2043.56738370323 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +42.0551123472866 +20 +-116.789200000014 +30 +2043.56738370323 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +39.6150600434633 +22 +-116.789200000014 +32 +2051.61118970355 +13 +39.6150600434633 +23 +-116.789200000014 +33 +2051.61118970355 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150600434633 +20 +-116.789200000014 +30 +2051.61118970355 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +35.6526239576226 +22 +-116.789200000014 +32 +2059.02440563739 +13 +35.6526239576226 +23 +-116.789200000014 +33 +2059.02440563739 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +35.6526239576226 +20 +-116.789200000014 +30 +2059.02440563739 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +30.3200782863833 +22 +-116.789200000014 +32 +2065.5221457738 +13 +30.3200782863833 +23 +-116.789200000014 +33 +2065.5221457738 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200782863833 +20 +-116.789200000014 +30 +2065.5221457738 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +23.8223497693652 +22 +-116.789200000014 +32 +2070.8547056033 +13 +23.8223497693652 +23 +-116.789200000014 +33 +2070.8547056033 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223497693652 +20 +-116.789200000014 +30 +2070.8547056033 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +16.4091424695092 +22 +-116.789200000014 +32 +2074.81715784219 +13 +16.4091424695092 +23 +-116.789200000014 +33 +2074.81715784219 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +16.4091424695092 +20 +-116.789200000014 +30 +2074.81715784219 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +8.3653417859741 +22 +-116.789200000014 +32 +2077.25722767309 +13 +8.3653417859741 +23 +-116.789200000014 +33 +2077.25722767309 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.3653417859741 +20 +-116.789200000014 +30 +2077.25722767309 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +6.64680129382589e-05 +22 +-116.789200000014 +32 +2078.08114458081 +13 +6.64680129382589e-05 +23 +-116.789200000014 +33 +2078.08114458081 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-116.789200000014 +30 +2078.08114458081 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +39.6150423666468 +22 +-116.789200000014 +32 +2409.40261154673 +13 +39.6150423666468 +23 +-116.789200000014 +33 +2409.40261154673 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-116.789200000014 +30 +2078.08114458081 +11 +39.6150423666468 +21 +-116.789200000014 +31 +2409.40261154673 +12 +35.652598194651 +22 +-116.789200000014 +32 +2401.98939991186 +13 +35.652598194651 +23 +-116.789200000014 +33 +2401.98939991186 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-116.789200000014 +30 +2078.08114458081 +11 +35.652598194651 +21 +-116.789200000014 +31 +2401.98939991186 +12 +30.3200454313183 +22 +-116.789200000014 +32 +2395.49166556936 +13 +30.3200454313183 +23 +-116.789200000014 +33 +2395.49166556936 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-116.789200000014 +30 +2078.08114458081 +11 +30.3200454313183 +21 +-116.789200000014 +31 +2395.49166556936 +12 +23.8223110888135 +22 +-116.789200000014 +32 +2390.15911280603 +13 +23.8223110888135 +23 +-116.789200000014 +33 +2390.15911280603 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-116.789200000014 +30 +2078.08114458081 +11 +23.8223110888135 +21 +-116.789200000014 +31 +2390.15911280603 +12 +16.4090994539476 +22 +-116.789200000014 +32 +2386.19666863403 +13 +16.4090994539476 +23 +-116.789200000014 +33 +2386.19666863403 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-116.789200000014 +30 +2078.08114458081 +11 +16.4090994539476 +21 +-116.789200000014 +31 +2386.19666863403 +12 +8.36529609247169 +22 +-116.789200000014 +32 +2383.75660756074 +13 +8.36529609247169 +23 +-116.789200000014 +33 +2383.75660756074 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-116.789200000014 +30 +2078.08114458081 +11 +8.36529609247169 +21 +-116.789200000014 +31 +2383.75660756074 +12 +1.98565501612791e-05 +22 +-116.789200000014 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +-116.789200000014 +33 +2382.93269976479 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666468 +20 +-116.789200000014 +30 +2409.40261154673 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +42.05510343994 +22 +-116.789200000014 +32 +2417.44641490821 +13 +42.05510343994 +23 +-116.789200000014 +33 +2417.44641490821 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +42.05510343994 +20 +-116.789200000014 +30 +2417.44641490821 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +42.8790112358864 +22 +-116.789200000014 +32 +2425.81169114413 +13 +42.8790112358864 +23 +-116.789200000014 +33 +2425.81169114413 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790112358864 +20 +-116.789200000014 +30 +2425.81169114413 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +42.05510343994 +22 +-116.789200000014 +32 +2434.17696738005 +13 +42.05510343994 +23 +-116.789200000014 +33 +2434.17696738005 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +42.05510343994 +20 +-116.789200000014 +30 +2434.17696738005 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +39.6150423666468 +22 +-116.789200000014 +32 +2442.22077074152 +13 +39.6150423666468 +23 +-116.789200000014 +33 +2442.22077074152 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666468 +20 +-116.789200000014 +30 +2442.22077074152 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +35.652598194651 +22 +-116.789200000014 +32 +2449.63398237639 +13 +35.652598194651 +23 +-116.789200000014 +33 +2449.63398237639 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +35.652598194651 +20 +-116.789200000014 +30 +2449.63398237639 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +30.3200454313183 +22 +-116.789200000014 +32 +2456.13171671889 +13 +30.3200454313183 +23 +-116.789200000014 +33 +2456.13171671889 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +-116.789200000014 +30 +2456.13171671889 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +23.8223110888135 +22 +-116.789200000014 +32 +2461.46426948223 +13 +23.8223110888135 +23 +-116.789200000014 +33 +2461.46426948223 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888135 +20 +-116.789200000014 +30 +2461.46426948223 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +16.4090994539477 +22 +-116.789200000014 +32 +2465.42671365422 +13 +16.4090994539477 +23 +-116.789200000014 +33 +2465.42671365422 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539477 +20 +-116.789200000014 +30 +2465.42671365422 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +8.36529609247169 +22 +-116.789200000014 +32 +2467.86677472752 +13 +8.36529609247169 +23 +-116.789200000014 +33 +2467.86677472752 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +-116.789200000014 +30 +2467.86677472752 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +1.98565501612791e-05 +22 +-116.789200000014 +32 +2468.69068252346 +13 +1.98565501612791e-05 +23 +-116.789200000014 +33 +2468.69068252346 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +1614.76108002137 +11 +-42.878971522786 +21 +-116.789200000014 +31 +1680.27244014393 +12 +-93.4313636055058 +22 +-116.789200000014 +32 +2549.07468002137 +13 +-93.4313636055058 +23 +-116.789200000014 +33 +2549.07468002137 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-116.789200000014 +30 +1680.27244014393 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-42.0550773995078 +22 +-116.789200000014 +32 +1671.9071625819 +13 +-42.0550773995078 +23 +-116.789200000014 +33 +1671.9071625819 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550773995078 +20 +-116.789200000014 +30 +1671.9071625819 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-39.6150294774544 +22 +-116.789200000014 +32 +1663.86335525239 +13 +-39.6150294774544 +23 +-116.789200000014 +33 +1663.86335525239 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150294774544 +20 +-116.789200000014 +30 +1663.86335525239 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-35.652597429876 +22 +-116.789200000014 +32 +1656.45013716005 +13 +-35.652597429876 +23 +-116.789200000014 +33 +1656.45013716005 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.652597429876 +20 +-116.789200000014 +30 +1656.45013716005 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-30.3200552982032 +22 +-116.789200000014 +32 +1649.9523941188 +13 +-30.3200552982032 +23 +-116.789200000014 +33 +1649.9523941188 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200552982032 +20 +-116.789200000014 +30 +1649.9523941188 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-23.8223296860324 +22 +-116.789200000014 +32 +1644.61983074973 +13 +-23.8223296860324 +23 +-116.789200000014 +33 +1644.61983074973 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8223296860324 +20 +-116.789200000014 +30 +1644.61983074973 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-16.4091245446726 +22 +-116.789200000014 +32 +1640.65737447258 +13 +-16.4091245446726 +23 +-116.789200000014 +33 +1640.65737447258 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4091245446726 +20 +-116.789200000014 +30 +1640.65737447258 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-8.36532519033293 +22 +-116.789200000014 +32 +1638.2173002599 +13 +-8.36532519033293 +23 +-116.789200000014 +33 +1638.2173002599 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36532519033293 +20 +-116.789200000014 +30 +1638.2173002599 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-5.03211860767294e-05 +22 +-116.789200000014 +32 +1637.3933787953 +13 +-5.03211860767294e-05 +23 +-116.789200000014 +33 +1637.3933787953 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-42.878971522786 +21 +-116.789200000014 +31 +1680.27244014393 +12 +-42.0550500581767 +22 +-116.789200000014 +32 +1688.63771501308 +13 +-42.0550500581767 +23 +-116.789200000014 +33 +1688.63771501308 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-42.0550500581767 +21 +-116.789200000014 +31 +1688.63771501308 +12 +-39.6149758455043 +22 +-116.789200000014 +32 +1696.68151436742 +13 +-39.6149758455043 +23 +-116.789200000014 +33 +1696.68151436742 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-39.6149758455043 +21 +-116.789200000014 +31 +1696.68151436742 +12 +-35.6525195683525 +22 +-116.789200000014 +32 +1704.09471950878 +13 +-35.6525195683525 +23 +-116.789200000014 +33 +1704.09471950878 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-35.6525195683525 +21 +-116.789200000014 +31 +1704.09471950878 +12 +-30.3199561992811 +22 +-116.789200000014 +32 +1710.59244512095 +13 +-30.3199561992811 +23 +-116.789200000014 +33 +1710.59244512095 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-30.3199561992811 +21 +-116.789200000014 +31 +1710.59244512095 +12 +-23.8222131580276 +22 +-116.789200000014 +32 +1715.92498725262 +13 +-23.8222131580276 +23 +-116.789200000014 +33 +1715.92498725262 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-23.8222131580276 +21 +-116.789200000014 +31 +1715.92498725262 +12 +-16.4089950656911 +22 +-116.789200000014 +32 +1719.8874193002 +13 +-16.4089950656911 +23 +-116.789200000014 +33 +1719.8874193002 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-16.4089950656911 +21 +-116.789200000014 +31 +1719.8874193002 +12 +-42.878971522786 +22 +-116.789200000014 +32 +2035.20220002137 +13 +-42.878971522786 +23 +-116.789200000014 +33 +2035.20220002137 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-116.789200000014 +30 +2035.20220002137 +11 +-16.4089950656911 +21 +-116.789200000014 +31 +1719.8874193002 +12 +-42.0550728426191 +22 +-116.789200000014 +32 +2026.83692290816 +13 +-42.0550728426191 +23 +-116.789200000014 +33 +2026.83692290816 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550728426191 +20 +-116.789200000014 +30 +2026.83692290816 +11 +-16.4089950656911 +21 +-116.789200000014 +31 +1719.8874193002 +12 +-8.36518773617931 +22 +-116.789200000014 +32 +1722.32746722226 +13 +-8.36518773617931 +23 +-116.789200000014 +33 +1722.32746722226 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550728426191 +20 +-116.789200000014 +30 +2026.83692290816 +11 +-8.36518773617931 +21 +-116.789200000014 +31 +1722.32746722226 +12 +8.98258536075502e-05 +22 +-116.789200000014 +32 +1723.15136134553 +13 +8.98258536075502e-05 +23 +-116.789200000014 +33 +1723.15136134553 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550728426191 +20 +-116.789200000014 +30 +2026.83692290816 +11 +8.98258536075502e-05 +21 +-116.789200000014 +31 +1723.15136134553 +12 +-39.6150205387958 +22 +-116.789200000014 +32 +2018.79311690784 +13 +-39.6150205387958 +23 +-116.789200000014 +33 +2018.79311690784 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150205387958 +20 +-116.789200000014 +30 +2018.79311690784 +11 +8.98258536075502e-05 +21 +-116.789200000014 +31 +1723.15136134553 +12 +-35.652584452955 +22 +-116.789200000014 +32 +2011.379900974 +13 +-35.652584452955 +23 +-116.789200000014 +33 +2011.379900974 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.652584452955 +20 +-116.789200000014 +30 +2011.379900974 +11 +8.98258536075502e-05 +21 +-116.789200000014 +31 +1723.15136134553 +12 +-30.3200387817157 +22 +-116.789200000014 +32 +2004.88216083759 +13 +-30.3200387817157 +23 +-116.789200000014 +33 +2004.88216083759 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200387817157 +20 +-116.789200000014 +30 +2004.88216083759 +11 +8.98258536075502e-05 +21 +-116.789200000014 +31 +1723.15136134553 +12 +-23.8223102646976 +22 +-116.789200000014 +32 +1999.54960100809 +13 +-23.8223102646976 +23 +-116.789200000014 +33 +1999.54960100809 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8223102646976 +20 +-116.789200000014 +30 +1999.54960100809 +11 +8.98258536075502e-05 +21 +-116.789200000014 +31 +1723.15136134553 +12 +-16.4091029648416 +22 +-116.789200000014 +32 +1995.5871487692 +13 +-16.4091029648416 +23 +-116.789200000014 +33 +1995.5871487692 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4091029648416 +20 +-116.789200000014 +30 +1995.5871487692 +11 +8.98258536075502e-05 +21 +-116.789200000014 +31 +1723.15136134553 +12 +-8.36530228130657 +22 +-116.789200000014 +32 +1993.1470789383 +13 +-8.36530228130657 +23 +-116.789200000014 +33 +1993.1470789383 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36530228130657 +20 +-116.789200000014 +30 +1993.1470789383 +11 +8.98258536075502e-05 +21 +-116.789200000014 +31 +1723.15136134553 +12 +-2.69633454074381e-05 +22 +-116.789200000014 +32 +1992.32316203057 +13 +-2.69633454074381e-05 +23 +-116.789200000014 +33 +1992.32316203057 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-42.878971522786 +21 +-116.789200000014 +31 +2035.20220002137 +12 +-42.0550546150653 +22 +-116.789200000014 +32 +2043.56747533934 +13 +-42.0550546150653 +23 +-116.789200000014 +33 +2043.56747533934 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-42.0550546150653 +21 +-116.789200000014 +31 +2043.56747533934 +12 +-39.6149847841629 +22 +-116.789200000014 +32 +2051.61127602287 +13 +-39.6149847841629 +23 +-116.789200000014 +33 +2051.61127602287 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-39.6149847841629 +21 +-116.789200000014 +31 +2051.61127602287 +12 +-35.6525325452735 +22 +-116.789200000014 +32 +2059.02448332273 +13 +-35.6525325452735 +23 +-116.789200000014 +33 +2059.02448332273 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-35.6525325452735 +21 +-116.789200000014 +31 +2059.02448332273 +12 +-30.3199727157687 +22 +-116.789200000014 +32 +2065.52221183974 +13 +-30.3199727157687 +23 +-116.789200000014 +33 +2065.52221183974 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-30.3199727157687 +21 +-116.789200000014 +31 +2065.52221183974 +12 +-23.8222325793624 +22 +-116.789200000014 +32 +2070.85475751098 +13 +-23.8222325793624 +23 +-116.789200000014 +33 +2070.85475751098 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-23.8222325793624 +21 +-116.789200000014 +31 +2070.85475751098 +12 +-16.4090166455219 +22 +-116.789200000014 +32 +2074.81719359682 +13 +-16.4090166455219 +23 +-116.789200000014 +33 +2074.81719359682 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-16.4090166455219 +21 +-116.789200000014 +31 +2074.81719359682 +12 +-8.36521064520558 +22 +-116.789200000014 +32 +2077.25724590065 +13 +-8.36521064520558 +23 +-116.789200000014 +33 +2077.25724590065 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-8.36521064520558 +21 +-116.789200000014 +31 +2077.25724590065 +12 +6.64680129382589e-05 +22 +-116.789200000014 +32 +2078.08114458081 +13 +6.64680129382589e-05 +23 +-116.789200000014 +33 +2078.08114458081 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +6.64680129382589e-05 +21 +-116.789200000014 +31 +2078.08114458081 +12 +-39.6150026535464 +22 +-116.789200000014 +32 +2409.40261154673 +13 +-39.6150026535464 +23 +-116.789200000014 +33 +2409.40261154673 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +-116.789200000014 +30 +2409.40261154673 +11 +6.64680129382589e-05 +21 +-116.789200000014 +31 +2078.08114458081 +12 +-35.6525584815506 +22 +-116.789200000014 +32 +2401.98939991186 +13 +-35.6525584815506 +23 +-116.789200000014 +33 +2401.98939991186 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-116.789200000014 +30 +2401.98939991186 +11 +6.64680129382589e-05 +21 +-116.789200000014 +31 +2078.08114458081 +12 +-30.3200057182179 +22 +-116.789200000014 +32 +2395.49166556936 +13 +-30.3200057182179 +23 +-116.789200000014 +33 +2395.49166556936 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182179 +20 +-116.789200000014 +30 +2395.49166556936 +11 +6.64680129382589e-05 +21 +-116.789200000014 +31 +2078.08114458081 +12 +-23.8222713757131 +22 +-116.789200000014 +32 +2390.15911280603 +13 +-23.8222713757131 +23 +-116.789200000014 +33 +2390.15911280603 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222713757131 +20 +-116.789200000014 +30 +2390.15911280603 +11 +6.64680129382589e-05 +21 +-116.789200000014 +31 +2078.08114458081 +12 +-16.4090597408473 +22 +-116.789200000014 +32 +2386.19666863403 +13 +-16.4090597408473 +23 +-116.789200000014 +33 +2386.19666863403 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408473 +20 +-116.789200000014 +30 +2386.19666863403 +11 +6.64680129382589e-05 +21 +-116.789200000014 +31 +2078.08114458081 +12 +-8.36525637937127 +22 +-116.789200000014 +32 +2383.75660756074 +13 +-8.36525637937127 +23 +-116.789200000014 +33 +2383.75660756074 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-116.789200000014 +30 +2383.75660756074 +11 +6.64680129382589e-05 +21 +-116.789200000014 +31 +2078.08114458081 +12 +1.98565501612791e-05 +22 +-116.789200000014 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +-116.789200000014 +33 +2382.93269976479 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-39.6150026535464 +21 +-116.789200000014 +31 +2409.40261154673 +12 +-42.0550637268397 +22 +-116.789200000014 +32 +2417.44641490821 +13 +-42.0550637268397 +23 +-116.789200000014 +33 +2417.44641490821 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-42.0550637268397 +21 +-116.789200000014 +31 +2417.44641490821 +12 +-42.878971522786 +22 +-116.789200000014 +32 +2425.81169114413 +13 +-42.878971522786 +23 +-116.789200000014 +33 +2425.81169114413 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-42.878971522786 +21 +-116.789200000014 +31 +2425.81169114413 +12 +-42.0550637268397 +22 +-116.789200000014 +32 +2434.17696738005 +13 +-42.0550637268397 +23 +-116.789200000014 +33 +2434.17696738005 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-42.0550637268397 +21 +-116.789200000014 +31 +2434.17696738005 +12 +-39.6150026535464 +22 +-116.789200000014 +32 +2442.22077074152 +13 +-39.6150026535464 +23 +-116.789200000014 +33 +2442.22077074152 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-39.6150026535464 +21 +-116.789200000014 +31 +2442.22077074152 +12 +-35.6525584815506 +22 +-116.789200000014 +32 +2449.63398237639 +13 +-35.6525584815506 +23 +-116.789200000014 +33 +2449.63398237639 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-35.6525584815506 +21 +-116.789200000014 +31 +2449.63398237639 +12 +-30.3200057182179 +22 +-116.789200000014 +32 +2456.13171671889 +13 +-30.3200057182179 +23 +-116.789200000014 +33 +2456.13171671889 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-30.3200057182179 +21 +-116.789200000014 +31 +2456.13171671889 +12 +-23.8222713757131 +22 +-116.789200000014 +32 +2461.46426948223 +13 +-23.8222713757131 +23 +-116.789200000014 +33 +2461.46426948223 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-23.8222713757131 +21 +-116.789200000014 +31 +2461.46426948223 +12 +-16.4090597408473 +22 +-116.789200000014 +32 +2465.42671365422 +13 +-16.4090597408473 +23 +-116.789200000014 +33 +2465.42671365422 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-16.4090597408473 +21 +-116.789200000014 +31 +2465.42671365422 +12 +-8.36525637937127 +22 +-116.789200000014 +32 +2467.86677472752 +13 +-8.36525637937127 +23 +-116.789200000014 +33 +2467.86677472752 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-8.36525637937127 +21 +-116.789200000014 +31 +2467.86677472752 +12 +1.98565501612791e-05 +22 +-116.789200000014 +32 +2468.69068252346 +13 +1.98565501612791e-05 +23 +-116.789200000014 +33 +2468.69068252346 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +2549.07468002137 +11 +1.98565501612791e-05 +21 +-116.789200000014 +31 +2468.69068252346 +12 +93.4313563944944 +22 +-116.789200000014 +32 +2549.07468002137 +13 +93.4313563944944 +23 +-116.789200000014 +33 +2549.07468002137 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222131580276 +20 +-70.0735200000139 +30 +1715.92498725262 +11 +-30.3199561992811 +21 +-116.789200000014 +31 +1710.59244512095 +12 +-30.3199561992811 +22 +-70.0735200000139 +32 +1710.59244512095 +13 +-30.3199561992811 +23 +-70.0735200000139 +33 +1710.59244512095 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3199561992811 +20 +-116.789200000014 +30 +1710.59244512095 +11 +-23.8222131580276 +21 +-70.0735200000139 +31 +1715.92498725262 +12 +-23.8222131580276 +22 +-116.789200000014 +32 +1715.92498725262 +13 +-23.8222131580276 +23 +-116.789200000014 +33 +1715.92498725262 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-116.789200000014 +30 +2417.44641490821 +11 +-39.615002653547 +21 +-741.887719751186 +31 +2409.40261154673 +12 +-42.0550637268399 +22 +-741.902149593115 +32 +2417.44641490821 +13 +-42.0550637268399 +23 +-741.902149593115 +33 +2417.44641490821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.615002653547 +20 +-741.887719751186 +30 +2409.40261154673 +11 +-42.0550637268397 +21 +-116.789200000014 +31 +2417.44641490821 +12 +-39.6150026535464 +22 +-116.789200000014 +32 +2409.40261154673 +13 +-39.6150026535464 +23 +-116.789200000014 +33 +2409.40261154673 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.3611250839466 +20 +-835.428664280087 +30 +2408.9276400213 +11 +39.3611647970476 +21 +-741.420676682108 +31 +2408.9276400213 +12 +-39.3611250839469 +22 +-741.886218389914 +32 +2408.9276400213 +13 +-39.3611250839469 +23 +-741.886218389914 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.3611647970476 +20 +-741.420676682108 +30 +2408.9276400213 +11 +-39.3611250839466 +21 +-835.428664280087 +31 +2408.9276400213 +12 +39.3611647970471 +22 +-835.428664280087 +32 +2408.9276400213 +13 +39.3611647970471 +23 +-835.428664280087 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +-116.789200000014 +30 +2383.75660756074 +11 +1.98565501612791e-05 +21 +-858.151437401893 +31 +2382.93269976479 +12 +1.98565501612791e-05 +22 +-116.789200000014 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +-116.789200000014 +33 +2382.93269976479 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +1.98565501612791e-05 +20 +-858.151437401893 +30 +2382.93269976479 +11 +8.36529609247169 +21 +-116.789200000014 +31 +2383.75660756074 +12 +8.36529609247169 +22 +-857.431240712237 +32 +2383.75660756074 +13 +8.36529609247169 +23 +-857.431240712237 +33 +2383.75660756074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-717.191404282444 +20 +-70.0735200000139 +30 +1614.76108002137 +11 +-758.547422188618 +21 +-116.789200000014 +31 +1522.84685844505 +12 +-712.59031140046 +22 +-116.789200000014 +32 +1614.76108002137 +13 +-712.59031140046 +23 +-116.789200000014 +33 +1614.76108002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-758.547422188618 +20 +-116.789200000014 +30 +1522.84685844505 +11 +-717.191404282444 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-763.148515070603 +22 +-70.0735200000139 +32 +1522.84685844505 +13 +-763.148515070603 +23 +-70.0735200000139 +33 +1522.84685844505 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-70.0735200000139 +30 +1614.76108002137 +11 +-8.36532519033293 +21 +-70.0735200000139 +31 +1638.2173002599 +12 +-5.03211860767294e-05 +22 +-70.0735200000139 +32 +1637.3933787953 +13 +-5.03211860767294e-05 +23 +-70.0735200000139 +33 +1637.3933787953 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36532519033293 +20 +-70.0735200000139 +30 +1638.2173002599 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-16.4091245446726 +22 +-70.0735200000139 +32 +1640.65737447258 +13 +-16.4091245446726 +23 +-70.0735200000139 +33 +1640.65737447258 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4091245446726 +20 +-70.0735200000139 +30 +1640.65737447258 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-23.8223296860324 +22 +-70.0735200000139 +32 +1644.61983074973 +13 +-23.8223296860324 +23 +-70.0735200000139 +33 +1644.61983074973 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8223296860324 +20 +-70.0735200000139 +30 +1644.61983074973 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-30.3200552982032 +22 +-70.0735200000139 +32 +1649.9523941188 +13 +-30.3200552982032 +23 +-70.0735200000139 +33 +1649.9523941188 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200552982032 +20 +-70.0735200000139 +30 +1649.9523941188 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-35.652597429876 +22 +-70.0735200000139 +32 +1656.45013716005 +13 +-35.652597429876 +23 +-70.0735200000139 +33 +1656.45013716005 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.652597429876 +20 +-70.0735200000139 +30 +1656.45013716005 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-39.6150294774544 +22 +-70.0735200000139 +32 +1663.86335525239 +13 +-39.6150294774544 +23 +-70.0735200000139 +33 +1663.86335525239 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150294774544 +20 +-70.0735200000139 +30 +1663.86335525239 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-42.0550773995078 +22 +-70.0735200000139 +32 +1671.9071625819 +13 +-42.0550773995078 +23 +-70.0735200000139 +33 +1671.9071625819 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550773995078 +20 +-70.0735200000139 +30 +1671.9071625819 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-42.878971522786 +22 +-70.0735200000139 +32 +1680.27244014393 +13 +-42.878971522786 +23 +-70.0735200000139 +33 +1680.27244014393 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-70.0735200000139 +30 +1680.27244014393 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-93.4313636055058 +22 +-70.0735200000139 +32 +2549.07468002137 +13 +-93.4313636055058 +23 +-70.0735200000139 +33 +2549.07468002137 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-70.0735200000139 +30 +1680.27244014393 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-42.0550500581767 +22 +-70.0735200000139 +32 +1688.63771501308 +13 +-42.0550500581767 +23 +-70.0735200000139 +33 +1688.63771501308 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550500581767 +20 +-70.0735200000139 +30 +1688.63771501308 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-39.6149758455043 +22 +-70.0735200000139 +32 +1696.68151436742 +13 +-39.6149758455043 +23 +-70.0735200000139 +33 +1696.68151436742 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6149758455043 +20 +-70.0735200000139 +30 +1696.68151436742 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-35.6525195683525 +22 +-70.0735200000139 +32 +1704.09471950878 +13 +-35.6525195683525 +23 +-70.0735200000139 +33 +1704.09471950878 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525195683525 +20 +-70.0735200000139 +30 +1704.09471950878 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-30.3199561992811 +22 +-70.0735200000139 +32 +1710.59244512095 +13 +-30.3199561992811 +23 +-70.0735200000139 +33 +1710.59244512095 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3199561992811 +20 +-70.0735200000139 +30 +1710.59244512095 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-23.8222131580276 +22 +-70.0735200000139 +32 +1715.92498725262 +13 +-23.8222131580276 +23 +-70.0735200000139 +33 +1715.92498725262 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222131580276 +20 +-70.0735200000139 +30 +1715.92498725262 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-16.4089950656911 +22 +-70.0735200000139 +32 +1719.8874193002 +13 +-16.4089950656911 +23 +-70.0735200000139 +33 +1719.8874193002 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4089950656911 +20 +-70.0735200000139 +30 +1719.8874193002 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-42.878971522786 +22 +-70.0735200000139 +32 +2035.20220002137 +13 +-42.878971522786 +23 +-70.0735200000139 +33 +2035.20220002137 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4089950656911 +20 +-70.0735200000139 +30 +1719.8874193002 +11 +-42.878971522786 +21 +-70.0735200000139 +31 +2035.20220002137 +12 +-42.0550728426191 +22 +-70.0735200000139 +32 +2026.83692290816 +13 +-42.0550728426191 +23 +-70.0735200000139 +33 +2026.83692290816 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4089950656911 +20 +-70.0735200000139 +30 +1719.8874193002 +11 +-42.0550728426191 +21 +-70.0735200000139 +31 +2026.83692290816 +12 +-8.36518773617931 +22 +-70.0735200000139 +32 +1722.32746722226 +13 +-8.36518773617931 +23 +-70.0735200000139 +33 +1722.32746722226 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36518773617931 +20 +-70.0735200000139 +30 +1722.32746722226 +11 +-42.0550728426191 +21 +-70.0735200000139 +31 +2026.83692290816 +12 +8.98258536075502e-05 +22 +-70.0735200000139 +32 +1723.15136134553 +13 +8.98258536075502e-05 +23 +-70.0735200000139 +33 +1723.15136134553 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-70.0735200000139 +30 +1723.15136134553 +11 +-42.0550728426191 +21 +-70.0735200000139 +31 +2026.83692290816 +12 +-39.6150205387958 +22 +-70.0735200000139 +32 +2018.79311690784 +13 +-39.6150205387958 +23 +-70.0735200000139 +33 +2018.79311690784 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-70.0735200000139 +30 +1723.15136134553 +11 +-39.6150205387958 +21 +-70.0735200000139 +31 +2018.79311690784 +12 +-35.652584452955 +22 +-70.0735200000139 +32 +2011.379900974 +13 +-35.652584452955 +23 +-70.0735200000139 +33 +2011.379900974 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-70.0735200000139 +30 +1723.15136134553 +11 +-35.652584452955 +21 +-70.0735200000139 +31 +2011.379900974 +12 +-30.3200387817157 +22 +-70.0735200000139 +32 +2004.88216083759 +13 +-30.3200387817157 +23 +-70.0735200000139 +33 +2004.88216083759 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-70.0735200000139 +30 +1723.15136134553 +11 +-30.3200387817157 +21 +-70.0735200000139 +31 +2004.88216083759 +12 +-23.8223102646976 +22 +-70.0735200000139 +32 +1999.54960100809 +13 +-23.8223102646976 +23 +-70.0735200000139 +33 +1999.54960100809 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-70.0735200000139 +30 +1723.15136134553 +11 +-23.8223102646976 +21 +-70.0735200000139 +31 +1999.54960100809 +12 +-16.4091029648416 +22 +-70.0735200000139 +32 +1995.5871487692 +13 +-16.4091029648416 +23 +-70.0735200000139 +33 +1995.5871487692 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-70.0735200000139 +30 +1723.15136134553 +11 +-16.4091029648416 +21 +-70.0735200000139 +31 +1995.5871487692 +12 +-8.36530228130657 +22 +-70.0735200000139 +32 +1993.1470789383 +13 +-8.36530228130657 +23 +-70.0735200000139 +33 +1993.1470789383 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-70.0735200000139 +30 +1723.15136134553 +11 +-8.36530228130657 +21 +-70.0735200000139 +31 +1993.1470789383 +12 +-2.69633454074381e-05 +22 +-70.0735200000139 +32 +1992.32316203057 +13 +-2.69633454074381e-05 +23 +-70.0735200000139 +33 +1992.32316203057 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-70.0735200000139 +30 +2035.20220002137 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-42.0550546150653 +22 +-70.0735200000139 +32 +2043.56747533934 +13 +-42.0550546150653 +23 +-70.0735200000139 +33 +2043.56747533934 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550546150653 +20 +-70.0735200000139 +30 +2043.56747533934 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-39.6149847841629 +22 +-70.0735200000139 +32 +2051.61127602287 +13 +-39.6149847841629 +23 +-70.0735200000139 +33 +2051.61127602287 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6149847841629 +20 +-70.0735200000139 +30 +2051.61127602287 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-35.6525325452735 +22 +-70.0735200000139 +32 +2059.02448332273 +13 +-35.6525325452735 +23 +-70.0735200000139 +33 +2059.02448332273 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525325452735 +20 +-70.0735200000139 +30 +2059.02448332273 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-30.3199727157687 +22 +-70.0735200000139 +32 +2065.52221183974 +13 +-30.3199727157687 +23 +-70.0735200000139 +33 +2065.52221183974 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3199727157687 +20 +-70.0735200000139 +30 +2065.52221183974 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-23.8222325793624 +22 +-70.0735200000139 +32 +2070.85475751098 +13 +-23.8222325793624 +23 +-70.0735200000139 +33 +2070.85475751098 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222325793624 +20 +-70.0735200000139 +30 +2070.85475751098 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-16.4090166455219 +22 +-70.0735200000139 +32 +2074.81719359682 +13 +-16.4090166455219 +23 +-70.0735200000139 +33 +2074.81719359682 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090166455219 +20 +-70.0735200000139 +30 +2074.81719359682 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-8.36521064520558 +22 +-70.0735200000139 +32 +2077.25724590065 +13 +-8.36521064520558 +23 +-70.0735200000139 +33 +2077.25724590065 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36521064520558 +20 +-70.0735200000139 +30 +2077.25724590065 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +6.64680129382589e-05 +22 +-70.0735200000139 +32 +2078.08114458081 +13 +6.64680129382589e-05 +23 +-70.0735200000139 +33 +2078.08114458081 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-70.0735200000139 +30 +2078.08114458081 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-39.6150026535464 +22 +-70.0735200000139 +32 +2409.40261154673 +13 +-39.6150026535464 +23 +-70.0735200000139 +33 +2409.40261154673 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-70.0735200000139 +30 +2078.08114458081 +11 +-39.6150026535464 +21 +-70.0735200000139 +31 +2409.40261154673 +12 +-35.6525584815506 +22 +-70.0735200000139 +32 +2401.98939991186 +13 +-35.6525584815506 +23 +-70.0735200000139 +33 +2401.98939991186 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-70.0735200000139 +30 +2078.08114458081 +11 +-35.6525584815506 +21 +-70.0735200000139 +31 +2401.98939991186 +12 +-30.3200057182179 +22 +-70.0735200000139 +32 +2395.49166556936 +13 +-30.3200057182179 +23 +-70.0735200000139 +33 +2395.49166556936 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-70.0735200000139 +30 +2078.08114458081 +11 +-30.3200057182179 +21 +-70.0735200000139 +31 +2395.49166556936 +12 +-23.8222713757131 +22 +-70.0735200000139 +32 +2390.15911280603 +13 +-23.8222713757131 +23 +-70.0735200000139 +33 +2390.15911280603 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-70.0735200000139 +30 +2078.08114458081 +11 +-23.8222713757131 +21 +-70.0735200000139 +31 +2390.15911280603 +12 +-16.4090597408473 +22 +-70.0735200000139 +32 +2386.19666863403 +13 +-16.4090597408473 +23 +-70.0735200000139 +33 +2386.19666863403 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-70.0735200000139 +30 +2078.08114458081 +11 +-16.4090597408473 +21 +-70.0735200000139 +31 +2386.19666863403 +12 +-8.36525637937127 +22 +-70.0735200000139 +32 +2383.75660756074 +13 +-8.36525637937127 +23 +-70.0735200000139 +33 +2383.75660756074 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-70.0735200000139 +30 +2078.08114458081 +11 +-8.36525637937127 +21 +-70.0735200000139 +31 +2383.75660756074 +12 +1.98565501612791e-05 +22 +-70.0735200000139 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +-70.0735200000139 +33 +2382.93269976479 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +-70.0735200000139 +30 +2409.40261154673 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-42.0550637268397 +22 +-70.0735200000139 +32 +2417.44641490821 +13 +-42.0550637268397 +23 +-70.0735200000139 +33 +2417.44641490821 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-70.0735200000139 +30 +2417.44641490821 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-42.878971522786 +22 +-70.0735200000139 +32 +2425.81169114413 +13 +-42.878971522786 +23 +-70.0735200000139 +33 +2425.81169114413 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-70.0735200000139 +30 +2425.81169114413 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-42.0550637268397 +22 +-70.0735200000139 +32 +2434.17696738005 +13 +-42.0550637268397 +23 +-70.0735200000139 +33 +2434.17696738005 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-70.0735200000139 +30 +2434.17696738005 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-39.6150026535464 +22 +-70.0735200000139 +32 +2442.22077074152 +13 +-39.6150026535464 +23 +-70.0735200000139 +33 +2442.22077074152 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +-70.0735200000139 +30 +2442.22077074152 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-35.6525584815506 +22 +-70.0735200000139 +32 +2449.63398237639 +13 +-35.6525584815506 +23 +-70.0735200000139 +33 +2449.63398237639 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-70.0735200000139 +30 +2449.63398237639 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-30.3200057182179 +22 +-70.0735200000139 +32 +2456.13171671889 +13 +-30.3200057182179 +23 +-70.0735200000139 +33 +2456.13171671889 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182179 +20 +-70.0735200000139 +30 +2456.13171671889 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-23.8222713757131 +22 +-70.0735200000139 +32 +2461.46426948223 +13 +-23.8222713757131 +23 +-70.0735200000139 +33 +2461.46426948223 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222713757131 +20 +-70.0735200000139 +30 +2461.46426948223 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-16.4090597408473 +22 +-70.0735200000139 +32 +2465.42671365422 +13 +-16.4090597408473 +23 +-70.0735200000139 +33 +2465.42671365422 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408473 +20 +-70.0735200000139 +30 +2465.42671365422 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-8.36525637937127 +22 +-70.0735200000139 +32 +2467.86677472752 +13 +-8.36525637937127 +23 +-70.0735200000139 +33 +2467.86677472752 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-70.0735200000139 +30 +2467.86677472752 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +1.98565501612791e-05 +22 +-70.0735200000139 +32 +2468.69068252346 +13 +1.98565501612791e-05 +23 +-70.0735200000139 +33 +2468.69068252346 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-717.191404282444 +20 +-70.0735200000139 +30 +1614.76108002137 +11 +763.148515070603 +21 +-70.0735200000139 +31 +1522.84685844505 +12 +-763.148515070603 +22 +-70.0735200000139 +32 +1522.84685844505 +13 +-763.148515070603 +23 +-70.0735200000139 +33 +1522.84685844505 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +763.148515070603 +20 +-70.0735200000139 +30 +1522.84685844505 +11 +-717.191404282444 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +717.537998926308 +22 +-70.0735200000139 +32 +1614.06789073365 +13 +717.537998926308 +23 +-70.0735200000139 +33 +1614.06789073365 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +717.537998926308 +20 +-70.0735200000139 +30 +1614.06789073365 +11 +-717.191404282444 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +93.4322738363532 +22 +-70.0735200000139 +32 +1614.76107890595 +13 +93.4322738363532 +23 +-70.0735200000139 +33 +1614.76107890595 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +-717.191404282444 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-93.4313636055058 +22 +-70.0735200000139 +32 +1614.76108002137 +13 +-93.4313636055058 +23 +-70.0735200000139 +33 +1614.76108002137 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +8.36522724084684 +22 +-70.0735200000139 +32 +1638.21727291857 +13 +8.36522724084684 +23 +-70.0735200000139 +33 +1638.21727291857 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +8.36522724084684 +21 +-70.0735200000139 +31 +1638.21727291857 +12 +16.4090345703586 +22 +-70.0735200000139 +32 +1640.65732084063 +13 +16.4090345703586 +23 +-70.0735200000139 +33 +1640.65732084063 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +16.4090345703586 +21 +-70.0735200000139 +31 +1640.65732084063 +12 +23.8222526626951 +22 +-70.0735200000139 +32 +1644.61975288821 +13 +23.8222526626951 +23 +-70.0735200000139 +33 +1644.61975288821 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +23.8222526626951 +21 +-70.0735200000139 +31 +1644.61975288821 +12 +30.3199957039486 +22 +-70.0735200000139 +32 +1649.95229501988 +13 +30.3199957039486 +23 +-70.0735200000139 +33 +1649.95229501988 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +30.3199957039486 +21 +-70.0735200000139 +31 +1649.95229501988 +12 +35.65255907302 +22 +-70.0735200000139 +32 +1656.45002063205 +13 +35.65255907302 +23 +-70.0735200000139 +33 +1656.45002063205 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +35.65255907302 +21 +-70.0735200000139 +31 +1656.45002063205 +12 +39.6150153501718 +22 +-70.0735200000139 +32 +1663.86322577341 +13 +39.6150153501718 +23 +-70.0735200000139 +33 +1663.86322577341 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +39.6150153501718 +21 +-70.0735200000139 +31 +1663.86322577341 +12 +42.0550895628442 +22 +-70.0735200000139 +32 +1671.90702512775 +13 +42.0550895628442 +23 +-70.0735200000139 +33 +1671.90702512775 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +42.0550895628442 +21 +-70.0735200000139 +31 +1671.90702512775 +12 +42.8790110274535 +22 +-70.0735200000139 +32 +1680.2722999969 +13 +42.8790110274535 +23 +-70.0735200000139 +33 +1680.2722999969 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +42.8790110274535 +21 +-70.0735200000139 +31 +1680.2722999969 +12 +93.4313563944944 +22 +-70.0735200000139 +32 +2549.07468002137 +13 +93.4313563944944 +23 +-70.0735200000139 +33 +2549.07468002137 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.36522724084684 +20 +-70.0735200000139 +30 +1638.21727291857 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-5.03211860767294e-05 +22 +-70.0735200000139 +32 +1637.3933787953 +13 +-5.03211860767294e-05 +23 +-70.0735200000139 +33 +1637.3933787953 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +42.8790110274535 +21 +-70.0735200000139 +31 +1680.2722999969 +12 +42.0551169041753 +22 +-70.0735200000139 +32 +1688.63757755893 +13 +42.0551169041753 +23 +-70.0735200000139 +33 +1688.63757755893 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +42.0551169041753 +21 +-70.0735200000139 +31 +1688.63757755893 +12 +39.615068982122 +22 +-70.0735200000139 +32 +1696.68138488844 +13 +39.615068982122 +23 +-70.0735200000139 +33 +1696.68138488844 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +39.615068982122 +21 +-70.0735200000139 +31 +1696.68138488844 +12 +35.6526369345435 +22 +-70.0735200000139 +32 +1704.09460298078 +13 +35.6526369345435 +23 +-70.0735200000139 +33 +1704.09460298078 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +35.6526369345435 +21 +-70.0735200000139 +31 +1704.09460298078 +12 +30.3200948028707 +22 +-70.0735200000139 +32 +1710.59234602203 +13 +30.3200948028707 +23 +-70.0735200000139 +33 +1710.59234602203 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +30.3200948028707 +21 +-70.0735200000139 +31 +1710.59234602203 +12 +23.8223691906999 +22 +-70.0735200000139 +32 +1715.9249093911 +13 +23.8223691906999 +23 +-70.0735200000139 +33 +1715.9249093911 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +23.8223691906999 +21 +-70.0735200000139 +31 +1715.9249093911 +12 +16.4091640493401 +22 +-70.0735200000139 +32 +1719.88736566825 +13 +16.4091640493401 +23 +-70.0735200000139 +33 +1719.88736566825 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +16.4091640493401 +21 +-70.0735200000139 +31 +1719.88736566825 +12 +42.8790110274535 +22 +-70.0735200000139 +32 +2035.20210659002 +13 +42.8790110274535 +23 +-70.0735200000139 +33 +2035.20210659002 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790110274535 +20 +-70.0735200000139 +30 +2035.20210659002 +11 +16.4091640493401 +21 +-70.0735200000139 +31 +1719.88736566825 +12 +42.0550941197328 +22 +-70.0735200000139 +32 +2026.83683127205 +13 +42.0550941197328 +23 +-70.0735200000139 +33 +2026.83683127205 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +42.0550941197328 +20 +-70.0735200000139 +30 +2026.83683127205 +11 +16.4091640493401 +21 +-70.0735200000139 +31 +1719.88736566825 +12 +8.36536469500046 +22 +-70.0735200000139 +32 +1722.32743988093 +13 +8.36536469500046 +23 +-70.0735200000139 +33 +1722.32743988093 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +42.0550941197328 +20 +-70.0735200000139 +30 +2026.83683127205 +11 +8.36536469500046 +21 +-70.0735200000139 +31 +1722.32743988093 +12 +8.98258536075502e-05 +22 +-70.0735200000139 +32 +1723.15136134553 +13 +8.98258536075502e-05 +23 +-70.0735200000139 +33 +1723.15136134553 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +42.0550941197328 +20 +-70.0735200000139 +30 +2026.83683127205 +11 +8.98258536075502e-05 +21 +-70.0735200000139 +31 +1723.15136134553 +12 +39.6150242888304 +22 +-70.0735200000139 +32 +2018.79303058852 +13 +39.6150242888304 +23 +-70.0735200000139 +33 +2018.79303058852 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150242888304 +20 +-70.0735200000139 +30 +2018.79303058852 +11 +8.98258536075502e-05 +21 +-70.0735200000139 +31 +1723.15136134553 +12 +35.652572049941 +22 +-70.0735200000139 +32 +2011.37982328866 +13 +35.652572049941 +23 +-70.0735200000139 +33 +2011.37982328866 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +35.652572049941 +20 +-70.0735200000139 +30 +2011.37982328866 +11 +8.98258536075502e-05 +21 +-70.0735200000139 +31 +1723.15136134553 +12 +30.3200122204362 +22 +-70.0735200000139 +32 +2004.88209477165 +13 +30.3200122204362 +23 +-70.0735200000139 +33 +2004.88209477165 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200122204362 +20 +-70.0735200000139 +30 +2004.88209477165 +11 +8.98258536075502e-05 +21 +-70.0735200000139 +31 +1723.15136134553 +12 +23.8222720840299 +22 +-70.0735200000139 +32 +1999.54954910041 +13 +23.8222720840299 +23 +-70.0735200000139 +33 +1999.54954910041 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +23.8222720840299 +20 +-70.0735200000139 +30 +1999.54954910041 +11 +8.98258536075502e-05 +21 +-70.0735200000139 +31 +1723.15136134553 +12 +16.4090561501895 +22 +-70.0735200000139 +32 +1995.58711301456 +13 +16.4090561501895 +23 +-70.0735200000139 +33 +1995.58711301456 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090561501895 +20 +-70.0735200000139 +30 +1995.58711301456 +11 +8.98258536075502e-05 +21 +-70.0735200000139 +31 +1723.15136134553 +12 +8.36525014987311 +22 +-70.0735200000139 +32 +1993.14706071074 +13 +8.36525014987311 +23 +-70.0735200000139 +33 +1993.14706071074 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.36525014987311 +20 +-70.0735200000139 +30 +1993.14706071074 +11 +8.98258536075502e-05 +21 +-70.0735200000139 +31 +1723.15136134553 +12 +-2.69633454074381e-05 +22 +-70.0735200000139 +32 +1992.32316203057 +13 +-2.69633454074381e-05 +23 +-70.0735200000139 +33 +1992.32316203057 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +42.8790110274535 +21 +-70.0735200000139 +31 +2035.20210659002 +12 +42.0551123472866 +22 +-70.0735200000139 +32 +2043.56738370323 +13 +42.0551123472866 +23 +-70.0735200000139 +33 +2043.56738370323 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +42.0551123472866 +21 +-70.0735200000139 +31 +2043.56738370323 +12 +39.6150600434633 +22 +-70.0735200000139 +32 +2051.61118970355 +13 +39.6150600434633 +23 +-70.0735200000139 +33 +2051.61118970355 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +39.6150600434633 +21 +-70.0735200000139 +31 +2051.61118970355 +12 +35.6526239576226 +22 +-70.0735200000139 +32 +2059.02440563739 +13 +35.6526239576226 +23 +-70.0735200000139 +33 +2059.02440563739 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +35.6526239576226 +21 +-70.0735200000139 +31 +2059.02440563739 +12 +30.3200782863833 +22 +-70.0735200000139 +32 +2065.5221457738 +13 +30.3200782863833 +23 +-70.0735200000139 +33 +2065.5221457738 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +30.3200782863833 +21 +-70.0735200000139 +31 +2065.5221457738 +12 +23.8223497693652 +22 +-70.0735200000139 +32 +2070.8547056033 +13 +23.8223497693652 +23 +-70.0735200000139 +33 +2070.8547056033 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +23.8223497693652 +21 +-70.0735200000139 +31 +2070.8547056033 +12 +16.4091424695092 +22 +-70.0735200000139 +32 +2074.81715784219 +13 +16.4091424695092 +23 +-70.0735200000139 +33 +2074.81715784219 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +16.4091424695092 +21 +-70.0735200000139 +31 +2074.81715784219 +12 +8.3653417859741 +22 +-70.0735200000139 +32 +2077.25722767309 +13 +8.3653417859741 +23 +-70.0735200000139 +33 +2077.25722767309 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +8.3653417859741 +21 +-70.0735200000139 +31 +2077.25722767309 +12 +6.64680129382589e-05 +22 +-70.0735200000139 +32 +2078.08114458081 +13 +6.64680129382589e-05 +23 +-70.0735200000139 +33 +2078.08114458081 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +6.64680129382589e-05 +21 +-70.0735200000139 +31 +2078.08114458081 +12 +39.6150423666467 +22 +-70.0735200000139 +32 +2409.40261154673 +13 +39.6150423666467 +23 +-70.0735200000139 +33 +2409.40261154673 +70 +15 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666467 +20 +-70.0735200000139 +30 +2409.40261154673 +11 +6.64680129382589e-05 +21 +-70.0735200000139 +31 +2078.08114458081 +12 +35.652598194651 +22 +-70.0735200000139 +32 +2401.98939991186 +13 +35.652598194651 +23 +-70.0735200000139 +33 +2401.98939991186 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +35.652598194651 +20 +-70.0735200000139 +30 +2401.98939991186 +11 +6.64680129382589e-05 +21 +-70.0735200000139 +31 +2078.08114458081 +12 +30.3200454313183 +22 +-70.0735200000139 +32 +2395.49166556936 +13 +30.3200454313183 +23 +-70.0735200000139 +33 +2395.49166556936 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +-70.0735200000139 +30 +2395.49166556936 +11 +6.64680129382589e-05 +21 +-70.0735200000139 +31 +2078.08114458081 +12 +23.8223110888135 +22 +-70.0735200000139 +32 +2390.15911280603 +13 +23.8223110888135 +23 +-70.0735200000139 +33 +2390.15911280603 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888135 +20 +-70.0735200000139 +30 +2390.15911280603 +11 +6.64680129382589e-05 +21 +-70.0735200000139 +31 +2078.08114458081 +12 +16.4090994539476 +22 +-70.0735200000139 +32 +2386.19666863403 +13 +16.4090994539476 +23 +-70.0735200000139 +33 +2386.19666863403 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539476 +20 +-70.0735200000139 +30 +2386.19666863403 +11 +6.64680129382589e-05 +21 +-70.0735200000139 +31 +2078.08114458081 +12 +8.36529609247169 +22 +-70.0735200000139 +32 +2383.75660756074 +13 +8.36529609247169 +23 +-70.0735200000139 +33 +2383.75660756074 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +-70.0735200000139 +30 +2383.75660756074 +11 +6.64680129382589e-05 +21 +-70.0735200000139 +31 +2078.08114458081 +12 +1.98565501612791e-05 +22 +-70.0735200000139 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +-70.0735200000139 +33 +2382.93269976479 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +39.6150423666467 +21 +-70.0735200000139 +31 +2409.40261154673 +12 +42.05510343994 +22 +-70.0735200000139 +32 +2417.44641490821 +13 +42.05510343994 +23 +-70.0735200000139 +33 +2417.44641490821 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +42.05510343994 +21 +-70.0735200000139 +31 +2417.44641490821 +12 +42.8790112358864 +22 +-70.0735200000139 +32 +2425.81169114413 +13 +42.8790112358864 +23 +-70.0735200000139 +33 +2425.81169114413 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +42.8790112358864 +21 +-70.0735200000139 +31 +2425.81169114413 +12 +42.05510343994 +22 +-70.0735200000139 +32 +2434.17696738005 +13 +42.05510343994 +23 +-70.0735200000139 +33 +2434.17696738005 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +42.05510343994 +21 +-70.0735200000139 +31 +2434.17696738005 +12 +39.6150423666467 +22 +-70.0735200000139 +32 +2442.22077074152 +13 +39.6150423666467 +23 +-70.0735200000139 +33 +2442.22077074152 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +39.6150423666467 +21 +-70.0735200000139 +31 +2442.22077074152 +12 +35.652598194651 +22 +-70.0735200000139 +32 +2449.63398237639 +13 +35.652598194651 +23 +-70.0735200000139 +33 +2449.63398237639 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +35.652598194651 +21 +-70.0735200000139 +31 +2449.63398237639 +12 +30.3200454313183 +22 +-70.0735200000139 +32 +2456.13171671889 +13 +30.3200454313183 +23 +-70.0735200000139 +33 +2456.13171671889 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +30.3200454313183 +21 +-70.0735200000139 +31 +2456.13171671889 +12 +23.8223110888135 +22 +-70.0735200000139 +32 +2461.46426948223 +13 +23.8223110888135 +23 +-70.0735200000139 +33 +2461.46426948223 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +23.8223110888135 +21 +-70.0735200000139 +31 +2461.46426948223 +12 +16.4090994539477 +22 +-70.0735200000139 +32 +2465.42671365422 +13 +16.4090994539477 +23 +-70.0735200000139 +33 +2465.42671365422 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +16.4090994539477 +21 +-70.0735200000139 +31 +2465.42671365422 +12 +8.36529609247169 +22 +-70.0735200000139 +32 +2467.86677472752 +13 +8.36529609247169 +23 +-70.0735200000139 +33 +2467.86677472752 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +8.36529609247169 +21 +-70.0735200000139 +31 +2467.86677472752 +12 +1.98565501612791e-05 +22 +-70.0735200000139 +32 +2468.69068252346 +13 +1.98565501612791e-05 +23 +-70.0735200000139 +33 +2468.69068252346 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +1.98565501612791e-05 +21 +-70.0735200000139 +31 +2468.69068252346 +12 +-93.4313636055058 +22 +-70.0735200000139 +32 +2549.07468002137 +13 +-93.4313636055058 +23 +-70.0735200000139 +33 +2549.07468002137 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +763.148515070603 +20 +-70.0735200000139 +30 +1522.84685844505 +11 +712.934349429914 +21 +-116.789200000014 +31 +1614.07300396247 +12 +758.547422188619 +22 +-116.789200000014 +32 +1522.84685844505 +13 +758.547422188619 +23 +-116.789200000014 +33 +1522.84685844505 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +712.934349429914 +20 +-116.789200000014 +30 +1614.07300396247 +11 +763.148515070603 +21 +-70.0735200000139 +31 +1522.84685844505 +12 +717.537998926308 +22 +-70.0735200000139 +32 +1614.06789073365 +13 +717.537998926308 +23 +-70.0735200000139 +33 +1614.06789073365 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-116.789200000014 +30 +2425.81169114413 +11 +-42.0550637268399 +21 +-741.902149593115 +31 +2417.44641490821 +12 +-42.878971522786 +22 +-741.907021954462 +32 +2425.81169114413 +13 +-42.878971522786 +23 +-741.907021954462 +33 +2425.81169114413 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268399 +20 +-741.902149593115 +30 +2417.44641490821 +11 +-42.878971522786 +21 +-116.789200000014 +31 +2425.81169114413 +12 +-42.0550637268397 +22 +-116.789200000014 +32 +2417.44641490821 +13 +-42.0550637268397 +23 +-116.789200000014 +33 +2417.44641490821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408471 +20 +-741.750486264824 +30 +2465.42671365422 +11 +-8.36525637937127 +21 +-116.789200000014 +31 +2467.86677472752 +12 +-16.4090597408473 +22 +-116.789200000014 +32 +2465.42671365422 +13 +-16.4090597408473 +23 +-116.789200000014 +33 +2465.42671365422 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-116.789200000014 +30 +2467.86677472752 +11 +-16.4090597408471 +21 +-741.750486264824 +31 +2465.42671365422 +12 +-8.36525637937127 +22 +-741.702917450962 +32 +2467.86677472752 +13 +-8.36525637937127 +23 +-741.702917450962 +33 +2467.86677472752 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +763.148515070603 +20 +-70.0735200000139 +30 +1522.84685844505 +11 +-758.547422188618 +21 +-116.789200000014 +31 +1522.84685844505 +12 +-763.148515070603 +22 +-70.0735200000139 +32 +1522.84685844505 +13 +-763.148515070603 +23 +-70.0735200000139 +33 +1522.84685844505 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-758.547422188618 +20 +-116.789200000014 +30 +1522.84685844505 +11 +763.148515070603 +21 +-70.0735200000139 +31 +1522.84685844505 +12 +758.547422188619 +22 +-116.789200000014 +32 +1522.84685844505 +13 +758.547422188619 +23 +-116.789200000014 +33 +1522.84685844505 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222713757131 +20 +-116.789200000014 +30 +2390.15911280603 +11 +-30.3200057182178 +21 +-847.173357521512 +31 +2395.49166556936 +12 +-30.3200057182179 +22 +-116.789200000014 +32 +2395.49166556936 +13 +-30.3200057182179 +23 +-116.789200000014 +33 +2395.49166556936 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182178 +20 +-847.173357521512 +30 +2395.49166556936 +11 +-23.8222713757131 +21 +-116.789200000014 +31 +2390.15911280603 +12 +-23.822271375713 +22 +-851.834664122165 +32 +2390.15911280603 +13 +-23.822271375713 +23 +-851.834664122165 +33 +2390.15911280603 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.652598194651 +20 +-116.789200000014 +30 +2401.98939991186 +11 +39.3611647970471 +21 +-835.428664280087 +31 +2408.9276400213 +12 +35.6525981946511 +22 +-841.49353899477 +32 +2401.98939991186 +13 +35.6525981946511 +23 +-841.49353899477 +33 +2401.98939991186 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.3611647970471 +20 +-835.428664280087 +30 +2408.9276400213 +11 +35.652598194651 +21 +-116.789200000014 +31 +2401.98939991186 +12 +39.3611647970476 +22 +-741.420676682108 +32 +2408.9276400213 +13 +39.3611647970476 +23 +-741.420676682108 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +39.3611647970476 +20 +-741.420676682108 +30 +2408.9276400213 +11 +35.652598194651 +21 +-116.789200000014 +31 +2401.98939991186 +12 +39.6150423666477 +22 +-741.419175320836 +32 +2409.40261154673 +13 +39.6150423666477 +23 +-741.419175320836 +33 +2409.40261154673 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666477 +20 +-741.419175320836 +30 +2409.40261154673 +11 +35.652598194651 +21 +-116.789200000014 +31 +2401.98939991186 +12 +39.6150423666468 +22 +-116.789200000014 +32 +2409.40261154673 +13 +39.6150423666468 +23 +-116.789200000014 +33 +2409.40261154673 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408473 +20 +-116.789200000014 +30 +2386.19666863403 +11 +-23.822271375713 +21 +-851.834664122165 +31 +2390.15911280603 +12 +-23.8222713757131 +22 +-116.789200000014 +32 +2390.15911280603 +13 +-23.8222713757131 +23 +-116.789200000014 +33 +2390.15911280603 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.822271375713 +20 +-851.834664122165 +30 +2390.15911280603 +11 +-16.4090597408473 +21 +-116.789200000014 +31 +2386.19666863403 +12 +-16.4090597408471 +22 +-855.298327398157 +32 +2386.19666863403 +13 +-16.4090597408471 +23 +-855.298327398157 +33 +2386.19666863403 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +712.934349429914 +20 +-116.789200000014 +30 +1614.07300396247 +11 +93.4322738363532 +21 +-70.0735200000139 +31 +1614.76107890595 +12 +93.4322738363532 +22 +-116.789200000014 +32 +1614.76107890595 +13 +93.4322738363532 +23 +-116.789200000014 +33 +1614.76107890595 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +712.934349429914 +21 +-116.789200000014 +31 +1614.07300396247 +12 +717.537998926308 +22 +-70.0735200000139 +32 +1614.06789073365 +13 +717.537998926308 +23 +-70.0735200000139 +33 +1614.06789073365 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.6525981946522 +20 +-741.442608112612 +30 +2449.63398237639 +11 +30.3200454313183 +21 +-116.789200000014 +31 +2456.13171671889 +12 +30.3200454313182 +22 +-741.474143345189 +32 +2456.13171671889 +13 +30.3200454313182 +23 +-741.474143345189 +33 +2456.13171671889 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +-116.789200000014 +30 +2456.13171671889 +11 +35.6525981946522 +21 +-741.442608112612 +31 +2449.63398237639 +12 +35.652598194651 +22 +-116.789200000014 +32 +2449.63398237639 +13 +35.652598194651 +23 +-116.789200000014 +33 +2449.63398237639 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223691906999 +20 +-70.0735200000139 +30 +1715.9249093911 +11 +16.4091640493401 +21 +-116.789200000014 +31 +1719.88736566825 +12 +16.4091640493401 +22 +-70.0735200000139 +32 +1719.88736566825 +13 +16.4091640493401 +23 +-70.0735200000139 +33 +1719.88736566825 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4091640493401 +20 +-116.789200000014 +30 +1719.88736566825 +11 +23.8223691906999 +21 +-70.0735200000139 +31 +1715.9249093911 +12 +23.8223691906999 +22 +-116.789200000014 +32 +1715.9249093911 +13 +23.8223691906999 +23 +-116.789200000014 +33 +1715.9249093911 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150153501718 +20 +-70.0735200000139 +30 +1663.86322577341 +11 +35.65255907302 +21 +-116.789200000014 +31 +1656.45002063205 +12 +39.6150153501718 +22 +-116.789200000014 +32 +1663.86322577341 +13 +39.6150153501718 +23 +-116.789200000014 +33 +1663.86322577341 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.65255907302 +20 +-116.789200000014 +30 +1656.45002063205 +11 +39.6150153501718 +21 +-70.0735200000139 +31 +1663.86322577341 +12 +35.65255907302 +22 +-70.0735200000139 +32 +1656.45002063205 +13 +35.65255907302 +23 +-70.0735200000139 +33 +1656.45002063205 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4091640493401 +20 +-70.0735200000139 +30 +1719.88736566825 +11 +8.36536469500046 +21 +-116.789200000014 +31 +1722.32743988093 +12 +8.36536469500046 +22 +-70.0735200000139 +32 +1722.32743988093 +13 +8.36536469500046 +23 +-70.0735200000139 +33 +1722.32743988093 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36536469500046 +20 +-116.789200000014 +30 +1722.32743988093 +11 +16.4091640493401 +21 +-70.0735200000139 +31 +1719.88736566825 +12 +16.4091640493401 +22 +-116.789200000014 +32 +1719.88736566825 +13 +16.4091640493401 +23 +-116.789200000014 +33 +1719.88736566825 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150294774544 +20 +-70.0735200000139 +30 +1663.86335525239 +11 +-42.0550773995078 +21 +-116.789200000014 +31 +1671.9071625819 +12 +-39.6150294774544 +22 +-116.789200000014 +32 +1663.86335525239 +13 +-39.6150294774544 +23 +-116.789200000014 +33 +1663.86335525239 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550773995078 +20 +-116.789200000014 +30 +1671.9071625819 +11 +-39.6150294774544 +21 +-70.0735200000139 +31 +1663.86335525239 +12 +-42.0550773995078 +22 +-70.0735200000139 +32 +1671.9071625819 +13 +-42.0550773995078 +23 +-70.0735200000139 +33 +1671.9071625819 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +0.0 +30 +2417.44641490821 +11 +-39.6150026535464 +21 +-70.0735200000139 +31 +2409.40261154673 +12 +-42.0550637268397 +22 +-70.0735200000139 +32 +2417.44641490821 +13 +-42.0550637268397 +23 +-70.0735200000139 +33 +2417.44641490821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +-70.0735200000139 +30 +2409.40261154673 +11 +-42.0550637268397 +21 +0.0 +31 +2417.44641490821 +12 +-39.6150026535464 +22 +0.0 +32 +2409.40261154673 +13 +-39.6150026535464 +23 +0.0 +33 +2409.40261154673 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +0.0 +30 +2425.81169114413 +11 +-42.0550637268397 +21 +-70.0735200000139 +31 +2417.44641490821 +12 +-42.878971522786 +22 +-70.0735200000139 +32 +2425.81169114413 +13 +-42.878971522786 +23 +-70.0735200000139 +33 +2425.81169114413 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-70.0735200000139 +30 +2417.44641490821 +11 +-42.878971522786 +21 +0.0 +31 +2425.81169114413 +12 +-42.0550637268397 +22 +0.0 +32 +2417.44641490821 +13 +-42.0550637268397 +23 +0.0 +33 +2417.44641490821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408473 +20 +0.0 +30 +2386.19666863403 +11 +-23.8222713757131 +21 +-70.0735200000139 +31 +2390.15911280603 +12 +-23.8222713757131 +22 +0.0 +32 +2390.15911280603 +13 +-23.8222713757131 +23 +0.0 +33 +2390.15911280603 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222713757131 +20 +-70.0735200000139 +30 +2390.15911280603 +11 +-16.4090597408473 +21 +0.0 +31 +2386.19666863403 +12 +-16.4090597408473 +22 +-70.0735200000139 +32 +2386.19666863403 +13 +-16.4090597408473 +23 +-70.0735200000139 +33 +2386.19666863403 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539476 +20 +0.0 +30 +2386.19666863403 +11 +8.36529609247169 +21 +-70.0735200000139 +31 +2383.75660756074 +12 +8.36529609247169 +22 +0.0 +32 +2383.75660756074 +13 +8.36529609247169 +23 +0.0 +33 +2383.75660756074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +-70.0735200000139 +30 +2383.75660756074 +11 +16.4090994539476 +21 +0.0 +31 +2386.19666863403 +12 +16.4090994539476 +22 +-70.0735200000139 +32 +2386.19666863403 +13 +16.4090994539476 +23 +-70.0735200000139 +33 +2386.19666863403 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888135 +20 +-70.0735200000139 +30 +2461.46426948223 +11 +16.4090994539477 +21 +0.0 +31 +2465.42671365422 +12 +16.4090994539477 +22 +-70.0735200000139 +32 +2465.42671365422 +13 +16.4090994539477 +23 +-70.0735200000139 +33 +2465.42671365422 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539477 +20 +0.0 +30 +2465.42671365422 +11 +23.8223110888135 +21 +-70.0735200000139 +31 +2461.46426948223 +12 +23.8223110888135 +22 +0.0 +32 +2461.46426948223 +13 +23.8223110888135 +23 +0.0 +33 +2461.46426948223 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8223296860324 +20 +-116.789200000014 +30 +1644.61983074973 +11 +-30.3200552982032 +21 +-70.0735200000139 +31 +1649.9523941188 +12 +-30.3200552982032 +22 +-116.789200000014 +32 +1649.9523941188 +13 +-30.3200552982032 +23 +-116.789200000014 +33 +1649.9523941188 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200552982032 +20 +-70.0735200000139 +30 +1649.9523941188 +11 +-23.8223296860324 +21 +-116.789200000014 +31 +1644.61983074973 +12 +-23.8223296860324 +22 +-70.0735200000139 +32 +1644.61983074973 +13 +-23.8223296860324 +23 +-70.0735200000139 +33 +1644.61983074973 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525195683525 +20 +-70.0735200000139 +30 +1704.09471950878 +11 +-30.3199561992811 +21 +-116.789200000014 +31 +1710.59244512095 +12 +-35.6525195683525 +22 +-116.789200000014 +32 +1704.09471950878 +13 +-35.6525195683525 +23 +-116.789200000014 +33 +1704.09471950878 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3199561992811 +20 +-116.789200000014 +30 +1710.59244512095 +11 +-35.6525195683525 +21 +-70.0735200000139 +31 +1704.09471950878 +12 +-30.3199561992811 +22 +-70.0735200000139 +32 +1710.59244512095 +13 +-30.3199561992811 +23 +-70.0735200000139 +33 +1710.59244512095 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36518773617931 +20 +-70.0735200000139 +30 +1722.32746722226 +11 +-16.4089950656911 +21 +-116.789200000014 +31 +1719.8874193002 +12 +-16.4089950656911 +22 +-70.0735200000139 +32 +1719.8874193002 +13 +-16.4089950656911 +23 +-70.0735200000139 +33 +1719.8874193002 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4089950656911 +20 +-116.789200000014 +30 +1719.8874193002 +11 +-8.36518773617931 +21 +-70.0735200000139 +31 +1722.32746722226 +12 +-8.36518773617931 +22 +-116.789200000014 +32 +1722.32746722226 +13 +-8.36518773617931 +23 +-116.789200000014 +33 +1722.32746722226 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8222526626951 +20 +-116.789200000014 +30 +1644.61975288821 +11 +16.4090345703586 +21 +-70.0735200000139 +31 +1640.65732084063 +12 +16.4090345703586 +22 +-116.789200000014 +32 +1640.65732084063 +13 +16.4090345703586 +23 +-116.789200000014 +33 +1640.65732084063 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090345703586 +20 +-70.0735200000139 +30 +1640.65732084063 +11 +23.8222526626951 +21 +-116.789200000014 +31 +1644.61975288821 +12 +23.8222526626951 +22 +-70.0735200000139 +32 +1644.61975288821 +13 +23.8222526626951 +23 +-70.0735200000139 +33 +1644.61975288821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550773995078 +20 +-70.0735200000139 +30 +1671.9071625819 +11 +-42.878971522786 +21 +-116.789200000014 +31 +1680.27244014393 +12 +-42.0550773995078 +22 +-116.789200000014 +32 +1671.9071625819 +13 +-42.0550773995078 +23 +-116.789200000014 +33 +1671.9071625819 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-116.789200000014 +30 +1680.27244014393 +11 +-42.0550773995078 +21 +-70.0735200000139 +31 +1671.9071625819 +12 +-42.878971522786 +22 +-70.0735200000139 +32 +1680.27244014393 +13 +-42.878971522786 +23 +-70.0735200000139 +33 +1680.27244014393 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.6526369345435 +20 +-70.0735200000139 +30 +1704.09460298078 +11 +39.615068982122 +21 +-116.789200000014 +31 +1696.68138488844 +12 +35.6526369345435 +22 +-116.789200000014 +32 +1704.09460298078 +13 +35.6526369345435 +23 +-116.789200000014 +33 +1704.09460298078 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.615068982122 +20 +-116.789200000014 +30 +1696.68138488844 +11 +35.6526369345435 +21 +-70.0735200000139 +31 +1704.09460298078 +12 +39.615068982122 +22 +-70.0735200000139 +32 +1696.68138488844 +13 +39.615068982122 +23 +-70.0735200000139 +33 +1696.68138488844 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0551169041753 +20 +-70.0735200000139 +30 +1688.63757755893 +11 +42.8790110274535 +21 +-116.789200000014 +31 +1680.2722999969 +12 +42.0551169041753 +22 +-116.789200000014 +32 +1688.63757755893 +13 +42.0551169041753 +23 +-116.789200000014 +33 +1688.63757755893 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790110274535 +20 +-116.789200000014 +30 +1680.2722999969 +11 +42.0551169041753 +21 +-70.0735200000139 +31 +1688.63757755893 +12 +42.8790110274535 +22 +-70.0735200000139 +32 +1680.2722999969 +13 +42.8790110274535 +23 +-70.0735200000139 +33 +1680.2722999969 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-741.902149593115 +30 +2434.17696738005 +11 +-42.878971522786 +21 +-116.789200000014 +31 +2425.81169114413 +12 +-42.878971522786 +22 +-741.907021954462 +32 +2425.81169114413 +13 +-42.878971522786 +23 +-741.907021954462 +33 +2425.81169114413 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-116.789200000014 +30 +2425.81169114413 +11 +-42.0550637268397 +21 +-741.902149593115 +31 +2434.17696738005 +12 +-42.0550637268397 +22 +-116.789200000014 +32 +2434.17696738005 +13 +-42.0550637268397 +23 +-116.789200000014 +33 +2434.17696738005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790112358864 +20 +-741.39987311756 +30 +2425.81169114413 +11 +42.05510343994 +21 +-116.789200000014 +31 +2434.17696738005 +12 +42.0551034399401 +22 +-741.404745478907 +32 +2434.17696738005 +13 +42.0551034399401 +23 +-741.404745478907 +33 +2434.17696738005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.05510343994 +20 +-116.789200000014 +30 +2434.17696738005 +11 +42.8790112358864 +21 +-741.39987311756 +31 +2425.81169114413 +12 +42.8790112358864 +22 +-116.789200000014 +32 +2425.81169114413 +13 +42.8790112358864 +23 +-116.789200000014 +33 +2425.81169114413 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +1.9856550251518e-05 +20 +-741.653447536011 +30 +2468.69068252346 +11 +-8.36525637937127 +21 +-116.789200000014 +31 +2467.86677472752 +12 +-8.36525637937127 +22 +-741.702917450962 +32 +2467.86677472752 +13 +-8.36525637937127 +23 +-741.702917450962 +33 +2467.86677472752 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-116.789200000014 +30 +2467.86677472752 +11 +1.9856550251518e-05 +21 +-741.653447536011 +31 +2468.69068252346 +12 +1.98565501612791e-05 +22 +-116.789200000014 +32 +2468.69068252346 +13 +1.98565501612791e-05 +23 +-116.789200000014 +33 +2468.69068252346 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.822271375713 +20 +-741.794325934758 +30 +2461.46426948223 +11 +-16.4090597408473 +21 +-116.789200000014 +31 +2465.42671365422 +12 +-23.8222713757131 +22 +-116.789200000014 +32 +2461.46426948223 +13 +-23.8222713757131 +23 +-116.789200000014 +33 +2461.46426948223 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408473 +20 +-116.789200000014 +30 +2465.42671365422 +11 +-23.822271375713 +21 +-741.794325934758 +31 +2461.46426948223 +12 +-16.4090597408471 +22 +-741.750486264824 +32 +2465.42671365422 +13 +-16.4090597408471 +23 +-741.750486264824 +33 +2465.42671365422 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222713757131 +20 +0.0 +30 +2390.15911280603 +11 +-30.3200057182179 +21 +-70.0735200000139 +31 +2395.49166556936 +12 +-30.3200057182179 +22 +0.0 +32 +2395.49166556936 +13 +-30.3200057182179 +23 +0.0 +33 +2395.49166556936 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182179 +20 +-70.0735200000139 +30 +2395.49166556936 +11 +-23.8222713757131 +21 +0.0 +31 +2390.15911280603 +12 +-23.8222713757131 +22 +-70.0735200000139 +32 +2390.15911280603 +13 +-23.8222713757131 +23 +-70.0735200000139 +33 +2390.15911280603 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +0.0 +30 +2434.17696738005 +11 +-42.878971522786 +21 +-70.0735200000139 +31 +2425.81169114413 +12 +-42.0550637268397 +22 +-70.0735200000139 +32 +2434.17696738005 +13 +-42.0550637268397 +23 +-70.0735200000139 +33 +2434.17696738005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-70.0735200000139 +30 +2425.81169114413 +11 +-42.0550637268397 +21 +0.0 +31 +2434.17696738005 +12 +-42.878971522786 +22 +0.0 +32 +2425.81169114413 +13 +-42.878971522786 +23 +0.0 +33 +2425.81169114413 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.05510343994 +20 +0.0 +30 +2417.44641490821 +11 +42.8790112358864 +21 +-70.0735200000139 +31 +2425.81169114413 +12 +42.05510343994 +22 +-70.0735200000139 +32 +2417.44641490821 +13 +42.05510343994 +23 +-70.0735200000139 +33 +2417.44641490821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790112358864 +20 +-70.0735200000139 +30 +2425.81169114413 +11 +42.05510343994 +21 +0.0 +31 +2417.44641490821 +12 +42.8790112358864 +22 +0.0 +32 +2425.81169114413 +13 +42.8790112358864 +23 +0.0 +33 +2425.81169114413 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +1.98565501612791e-05 +20 +0.0 +30 +2382.93269976479 +11 +-8.36525637937127 +21 +-70.0735200000139 +31 +2383.75660756074 +12 +-8.36525637937127 +22 +0.0 +32 +2383.75660756074 +13 +-8.36525637937127 +23 +0.0 +33 +2383.75660756074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-70.0735200000139 +30 +2383.75660756074 +11 +1.98565501612791e-05 +21 +0.0 +31 +2382.93269976479 +12 +1.98565501612791e-05 +22 +-70.0735200000139 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +-70.0735200000139 +33 +2382.93269976479 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222713757131 +20 +-70.0735200000139 +30 +2461.46426948223 +11 +-30.3200057182179 +21 +0.0 +31 +2456.13171671889 +12 +-30.3200057182179 +22 +-70.0735200000139 +32 +2456.13171671889 +13 +-30.3200057182179 +23 +-70.0735200000139 +33 +2456.13171671889 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182179 +20 +0.0 +30 +2456.13171671889 +11 +-23.8222713757131 +21 +-70.0735200000139 +31 +2461.46426948223 +12 +-23.8222713757131 +22 +0.0 +32 +2461.46426948223 +13 +-23.8222713757131 +23 +0.0 +33 +2461.46426948223 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539477 +20 +-70.0735200000139 +30 +2465.42671365422 +11 +8.36529609247169 +21 +0.0 +31 +2467.86677472752 +12 +8.36529609247169 +22 +-70.0735200000139 +32 +2467.86677472752 +13 +8.36529609247169 +23 +-70.0735200000139 +33 +2467.86677472752 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +0.0 +30 +2467.86677472752 +11 +16.4090994539477 +21 +-70.0735200000139 +31 +2465.42671365422 +12 +16.4090994539477 +22 +0.0 +32 +2465.42671365422 +13 +16.4090994539477 +23 +0.0 +33 +2465.42671365422 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-741.864286959411 +30 +2449.63398237639 +11 +-39.6150026535464 +21 +-116.789200000014 +31 +2442.22077074152 +12 +-39.6150026535458 +22 +-741.887719751186 +32 +2442.22077074152 +13 +-39.6150026535458 +23 +-741.887719751186 +33 +2442.22077074152 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +-116.789200000014 +30 +2442.22077074152 +11 +-35.6525584815506 +21 +-741.864286959411 +31 +2449.63398237639 +12 +-35.6525584815506 +22 +-116.789200000014 +32 +2449.63398237639 +13 +-35.6525584815506 +23 +-116.789200000014 +33 +2449.63398237639 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790110274535 +20 +-70.0735200000139 +30 +2035.20210659002 +11 +42.0550941197328 +21 +-116.789200000014 +31 +2026.83683127205 +12 +42.8790110274535 +22 +-116.789200000014 +32 +2035.20210659002 +13 +42.8790110274535 +23 +-116.789200000014 +33 +2035.20210659002 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0550941197328 +20 +-116.789200000014 +30 +2026.83683127205 +11 +42.8790110274535 +21 +-70.0735200000139 +31 +2035.20210659002 +12 +42.0550941197328 +22 +-70.0735200000139 +32 +2026.83683127205 +13 +42.0550941197328 +23 +-70.0735200000139 +33 +2026.83683127205 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.05510343994 +20 +-116.789200000014 +30 +2417.44641490821 +11 +42.8790112358864 +21 +-741.39987311756 +31 +2425.81169114413 +12 +42.0551034399399 +22 +-741.404745478908 +32 +2417.44641490821 +13 +42.0551034399399 +23 +-741.404745478908 +33 +2417.44641490821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790112358864 +20 +-741.39987311756 +30 +2425.81169114413 +11 +42.05510343994 +21 +-116.789200000014 +31 +2417.44641490821 +12 +42.8790112358864 +22 +-116.789200000014 +32 +2425.81169114413 +13 +42.8790112358864 +23 +-116.789200000014 +33 +2425.81169114413 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8223102646976 +20 +-116.789200000014 +30 +1999.54960100809 +11 +-30.3200387817157 +21 +-70.0735200000139 +31 +2004.88216083759 +12 +-30.3200387817157 +22 +-116.789200000014 +32 +2004.88216083759 +13 +-30.3200387817157 +23 +-116.789200000014 +33 +2004.88216083759 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200387817157 +20 +-70.0735200000139 +30 +2004.88216083759 +11 +-23.8223102646976 +21 +-116.789200000014 +31 +1999.54960100809 +12 +-23.8223102646976 +22 +-70.0735200000139 +32 +1999.54960100809 +13 +-23.8223102646976 +23 +-70.0735200000139 +33 +1999.54960100809 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +0.0 +30 +2395.49166556936 +11 +23.8223110888135 +21 +-70.0735200000139 +31 +2390.15911280603 +12 +23.8223110888135 +22 +0.0 +32 +2390.15911280603 +13 +23.8223110888135 +23 +0.0 +33 +2390.15911280603 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888135 +20 +-70.0735200000139 +30 +2390.15911280603 +11 +30.3200454313183 +21 +0.0 +31 +2395.49166556936 +12 +30.3200454313183 +22 +-70.0735200000139 +32 +2395.49166556936 +13 +30.3200454313183 +23 +-70.0735200000139 +33 +2395.49166556936 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.652598194651 +20 +0.0 +30 +2401.98939991186 +11 +39.6150423666467 +21 +-70.0735200000139 +31 +2409.40261154673 +12 +35.652598194651 +22 +-70.0735200000139 +32 +2401.98939991186 +13 +35.652598194651 +23 +-70.0735200000139 +33 +2401.98939991186 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666467 +20 +-70.0735200000139 +30 +2409.40261154673 +11 +35.652598194651 +21 +0.0 +31 +2401.98939991186 +12 +39.6150423666467 +22 +0.0 +32 +2409.40261154673 +13 +39.6150423666467 +23 +0.0 +33 +2409.40261154673 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.3653417859741 +20 +-70.0735200000139 +30 +2077.25722767309 +11 +6.64680129382589e-05 +21 +-116.789200000014 +31 +2078.08114458081 +12 +6.64680129382589e-05 +22 +-70.0735200000139 +32 +2078.08114458081 +13 +6.64680129382589e-05 +23 +-70.0735200000139 +33 +2078.08114458081 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-116.789200000014 +30 +2078.08114458081 +11 +8.3653417859741 +21 +-70.0735200000139 +31 +2077.25722767309 +12 +8.3653417859741 +22 +-116.789200000014 +32 +2077.25722767309 +13 +8.3653417859741 +23 +-116.789200000014 +33 +2077.25722767309 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0550941197328 +20 +-70.0735200000139 +30 +2026.83683127205 +11 +39.6150242888304 +21 +-116.789200000014 +31 +2018.79303058852 +12 +42.0550941197328 +22 +-116.789200000014 +32 +2026.83683127205 +13 +42.0550941197328 +23 +-116.789200000014 +33 +2026.83683127205 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150242888304 +20 +-116.789200000014 +30 +2018.79303058852 +11 +42.0550941197328 +21 +-70.0735200000139 +31 +2026.83683127205 +12 +39.6150242888304 +22 +-70.0735200000139 +32 +2018.79303058852 +13 +39.6150242888304 +23 +-70.0735200000139 +33 +2018.79303058852 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200948028707 +20 +-70.0735200000139 +30 +1710.59234602203 +11 +23.8223691906999 +21 +-116.789200000014 +31 +1715.9249093911 +12 +23.8223691906999 +22 +-70.0735200000139 +32 +1715.9249093911 +13 +23.8223691906999 +23 +-70.0735200000139 +33 +1715.9249093911 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223691906999 +20 +-116.789200000014 +30 +1715.9249093911 +11 +30.3200948028707 +21 +-70.0735200000139 +31 +1710.59234602203 +12 +30.3200948028707 +22 +-116.789200000014 +32 +1710.59234602203 +13 +30.3200948028707 +23 +-116.789200000014 +33 +1710.59234602203 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4091029648416 +20 +-116.789200000014 +30 +1995.5871487692 +11 +-23.8223102646976 +21 +-70.0735200000139 +31 +1999.54960100809 +12 +-23.8223102646976 +22 +-116.789200000014 +32 +1999.54960100809 +13 +-23.8223102646976 +23 +-116.789200000014 +33 +1999.54960100809 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8223102646976 +20 +-70.0735200000139 +30 +1999.54960100809 +11 +-16.4091029648416 +21 +-116.789200000014 +31 +1995.5871487692 +12 +-16.4091029648416 +22 +-70.0735200000139 +32 +1995.5871487692 +13 +-16.4091029648416 +23 +-70.0735200000139 +33 +1995.5871487692 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815511 +20 +-841.493538994769 +30 +2401.98939991186 +11 +-30.3200057182179 +21 +-116.789200000014 +31 +2395.49166556936 +12 +-30.3200057182178 +22 +-847.173357521512 +32 +2395.49166556936 +13 +-30.3200057182178 +23 +-847.173357521512 +33 +2395.49166556936 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182179 +20 +-116.789200000014 +30 +2395.49166556936 +11 +-35.6525584815511 +21 +-841.493538994769 +31 +2401.98939991186 +12 +-35.6525584815506 +22 +-116.789200000014 +32 +2401.98939991186 +13 +-35.6525584815506 +23 +-116.789200000014 +33 +2401.98939991186 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-712.59031140046 +20 +-116.789200000014 +30 +1614.76108002137 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +1614.76108002137 +12 +-717.191404282444 +22 +-70.0735200000139 +32 +1614.76108002137 +13 +-717.191404282444 +23 +-70.0735200000139 +33 +1614.76108002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-70.0735200000139 +30 +1614.76108002137 +11 +-712.59031140046 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-93.4313636055058 +22 +-116.789200000014 +32 +1614.76108002137 +13 +-93.4313636055058 +23 +-116.789200000014 +33 +1614.76108002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247178 +20 +-741.60397762106 +30 +2467.86677472752 +11 +16.4090994539477 +21 +-116.789200000014 +31 +2465.42671365422 +12 +8.36529609247169 +22 +-116.789200000014 +32 +2467.86677472752 +13 +8.36529609247169 +23 +-116.789200000014 +33 +2467.86677472752 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539477 +20 +-116.789200000014 +30 +2465.42671365422 +11 +8.36529609247178 +21 +-741.60397762106 +31 +2467.86677472752 +12 +16.4090994539477 +22 +-741.556408807198 +32 +2465.42671365422 +13 +16.4090994539477 +23 +-741.556408807198 +33 +2465.42671365422 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550500581767 +20 +-70.0735200000139 +30 +1688.63771501308 +11 +-39.6149758455043 +21 +-116.789200000014 +31 +1696.68151436742 +12 +-42.0550500581767 +22 +-116.789200000014 +32 +1688.63771501308 +13 +-42.0550500581767 +23 +-116.789200000014 +33 +1688.63771501308 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6149758455043 +20 +-116.789200000014 +30 +1696.68151436742 +11 +-42.0550500581767 +21 +-70.0735200000139 +31 +1688.63771501308 +12 +-39.6149758455043 +22 +-70.0735200000139 +32 +1696.68151436742 +13 +-39.6149758455043 +23 +-70.0735200000139 +33 +1696.68151436742 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0550895628442 +20 +-70.0735200000139 +30 +1671.90702512775 +11 +39.6150153501718 +21 +-116.789200000014 +31 +1663.86322577341 +12 +42.0550895628442 +22 +-116.789200000014 +32 +1671.90702512775 +13 +42.0550895628442 +23 +-116.789200000014 +33 +1671.90702512775 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150153501718 +20 +-116.789200000014 +30 +1663.86322577341 +11 +42.0550895628442 +21 +-70.0735200000139 +31 +1671.90702512775 +12 +39.6150153501718 +22 +-70.0735200000139 +32 +1663.86322577341 +13 +39.6150153501718 +23 +-70.0735200000139 +33 +1663.86322577341 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +0.0 +30 +2449.63398237639 +11 +-39.6150026535464 +21 +-70.0735200000139 +31 +2442.22077074152 +12 +-35.6525584815506 +22 +-70.0735200000139 +32 +2449.63398237639 +13 +-35.6525584815506 +23 +-70.0735200000139 +33 +2449.63398237639 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +-70.0735200000139 +30 +2442.22077074152 +11 +-35.6525584815506 +21 +0.0 +31 +2449.63398237639 +12 +-39.6150026535464 +22 +0.0 +32 +2442.22077074152 +13 +-39.6150026535464 +23 +0.0 +33 +2442.22077074152 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +-93.4313636055058 +21 +-116.789200000014 +31 +1614.76108002137 +12 +-93.4313636055058 +22 +-116.789200000014 +32 +2549.07468002137 +13 +-93.4313636055058 +23 +-116.789200000014 +33 +2549.07468002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-116.789200000014 +30 +1614.76108002137 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-93.4313636055058 +22 +-70.0735200000139 +32 +1614.76108002137 +13 +-93.4313636055058 +23 +-70.0735200000139 +33 +1614.76108002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +6.64680129382589e-05 +20 +-70.0735200000139 +30 +2078.08114458081 +11 +-8.36521064520558 +21 +-116.789200000014 +31 +2077.25724590065 +12 +-8.36521064520558 +22 +-70.0735200000139 +32 +2077.25724590065 +13 +-8.36521064520558 +23 +-70.0735200000139 +33 +2077.25724590065 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36521064520558 +20 +-116.789200000014 +30 +2077.25724590065 +11 +6.64680129382589e-05 +21 +-70.0735200000139 +31 +2078.08114458081 +12 +6.64680129382589e-05 +22 +-116.789200000014 +32 +2078.08114458081 +13 +6.64680129382589e-05 +23 +-116.789200000014 +33 +2078.08114458081 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200782863833 +20 +-70.0735200000139 +30 +2065.5221457738 +11 +23.8223497693652 +21 +-116.789200000014 +31 +2070.8547056033 +12 +23.8223497693652 +22 +-70.0735200000139 +32 +2070.8547056033 +13 +23.8223497693652 +23 +-70.0735200000139 +33 +2070.8547056033 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223497693652 +20 +-116.789200000014 +30 +2070.8547056033 +11 +30.3200782863833 +21 +-70.0735200000139 +31 +2065.5221457738 +12 +30.3200782863833 +22 +-116.789200000014 +32 +2065.5221457738 +13 +30.3200782863833 +23 +-116.789200000014 +33 +2065.5221457738 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090166455219 +20 +-70.0735200000139 +30 +2074.81719359682 +11 +-23.8222325793624 +21 +-116.789200000014 +31 +2070.85475751098 +12 +-23.8222325793624 +22 +-70.0735200000139 +32 +2070.85475751098 +13 +-23.8222325793624 +23 +-70.0735200000139 +33 +2070.85475751098 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222325793624 +20 +-116.789200000014 +30 +2070.85475751098 +11 +-16.4090166455219 +21 +-70.0735200000139 +31 +2074.81719359682 +12 +-16.4090166455219 +22 +-116.789200000014 +32 +2074.81719359682 +13 +-16.4090166455219 +23 +-116.789200000014 +33 +2074.81719359682 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +1.9856550251518e-05 +20 +-741.653447536011 +30 +2468.69068252346 +11 +8.36529609247169 +21 +-116.789200000014 +31 +2467.86677472752 +12 +1.98565501612791e-05 +22 +-116.789200000014 +32 +2468.69068252346 +13 +1.98565501612791e-05 +23 +-116.789200000014 +33 +2468.69068252346 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +-116.789200000014 +30 +2467.86677472752 +11 +1.9856550251518e-05 +21 +-741.653447536011 +31 +2468.69068252346 +12 +8.36529609247178 +22 +-741.60397762106 +32 +2467.86677472752 +13 +8.36529609247178 +23 +-741.60397762106 +33 +2467.86677472752 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +0.0 +30 +2383.75660756074 +11 +-16.4090597408473 +21 +-70.0735200000139 +31 +2386.19666863403 +12 +-16.4090597408473 +22 +0.0 +32 +2386.19666863403 +13 +-16.4090597408473 +23 +0.0 +33 +2386.19666863403 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408473 +20 +-70.0735200000139 +30 +2386.19666863403 +11 +-8.36525637937127 +21 +0.0 +31 +2383.75660756074 +12 +-8.36525637937127 +22 +-70.0735200000139 +32 +2383.75660756074 +13 +-8.36525637937127 +23 +-70.0735200000139 +33 +2383.75660756074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +-116.789200000014 +30 +2395.49166556936 +11 +35.6525981946511 +21 +-841.49353899477 +31 +2401.98939991186 +12 +30.3200454313184 +22 +-847.173357521512 +32 +2395.49166556936 +13 +30.3200454313184 +23 +-847.173357521512 +33 +2395.49166556936 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.6525981946511 +20 +-841.49353899477 +30 +2401.98939991186 +11 +30.3200454313183 +21 +-116.789200000014 +31 +2395.49166556936 +12 +35.652598194651 +22 +-116.789200000014 +32 +2401.98939991186 +13 +35.652598194651 +23 +-116.789200000014 +33 +2401.98939991186 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.652572049941 +20 +-70.0735200000139 +30 +2011.37982328866 +11 +30.3200122204362 +21 +-116.789200000014 +31 +2004.88209477165 +12 +35.652572049941 +22 +-116.789200000014 +32 +2011.37982328866 +13 +35.652572049941 +23 +-116.789200000014 +33 +2011.37982328866 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200122204362 +20 +-116.789200000014 +30 +2004.88209477165 +11 +35.652572049941 +21 +-70.0735200000139 +31 +2011.37982328866 +12 +30.3200122204362 +22 +-70.0735200000139 +32 +2004.88209477165 +13 +30.3200122204362 +23 +-70.0735200000139 +33 +2004.88209477165 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4091245446726 +20 +-116.789200000014 +30 +1640.65737447258 +11 +-23.8223296860324 +21 +-70.0735200000139 +31 +1644.61983074973 +12 +-23.8223296860324 +22 +-116.789200000014 +32 +1644.61983074973 +13 +-23.8223296860324 +23 +-116.789200000014 +33 +1644.61983074973 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8223296860324 +20 +-70.0735200000139 +30 +1644.61983074973 +11 +-16.4091245446726 +21 +-116.789200000014 +31 +1640.65737447258 +12 +-16.4091245446726 +22 +-70.0735200000139 +32 +1640.65737447258 +13 +-16.4091245446726 +23 +-70.0735200000139 +33 +1640.65737447258 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.652598194651 +20 +0.0 +30 +2449.63398237639 +11 +30.3200454313183 +21 +-70.0735200000139 +31 +2456.13171671889 +12 +35.652598194651 +22 +-70.0735200000139 +32 +2449.63398237639 +13 +35.652598194651 +23 +-70.0735200000139 +33 +2449.63398237639 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +-70.0735200000139 +30 +2456.13171671889 +11 +35.652598194651 +21 +0.0 +31 +2449.63398237639 +12 +30.3200454313183 +22 +0.0 +32 +2456.13171671889 +13 +30.3200454313183 +23 +0.0 +33 +2456.13171671889 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-2.69633454074381e-05 +20 +-116.789200000014 +30 +1992.32316203057 +11 +-8.36530228130657 +21 +-70.0735200000139 +31 +1993.1470789383 +12 +-8.36530228130657 +22 +-116.789200000014 +32 +1993.1470789383 +13 +-8.36530228130657 +23 +-116.789200000014 +33 +1993.1470789383 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36530228130657 +20 +-70.0735200000139 +30 +1993.1470789383 +11 +-2.69633454074381e-05 +21 +-116.789200000014 +31 +1992.32316203057 +12 +-2.69633454074381e-05 +22 +-70.0735200000139 +32 +1992.32316203057 +13 +-2.69633454074381e-05 +23 +-70.0735200000139 +33 +1992.32316203057 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0551123472866 +20 +-70.0735200000139 +30 +2043.56738370323 +11 +42.8790110274535 +21 +-116.789200000014 +31 +2035.20210659002 +12 +42.0551123472866 +22 +-116.789200000014 +32 +2043.56738370323 +13 +42.0551123472866 +23 +-116.789200000014 +33 +2043.56738370323 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790110274535 +20 +-116.789200000014 +30 +2035.20210659002 +11 +42.0551123472866 +21 +-70.0735200000139 +31 +2043.56738370323 +12 +42.8790110274535 +22 +-70.0735200000139 +32 +2035.20210659002 +13 +42.8790110274535 +23 +-70.0735200000139 +33 +2035.20210659002 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36536469500046 +20 +-70.0735200000139 +30 +1722.32743988093 +11 +8.98258536075502e-05 +21 +-116.789200000014 +31 +1723.15136134553 +12 +8.98258536075502e-05 +22 +-70.0735200000139 +32 +1723.15136134553 +13 +8.98258536075502e-05 +23 +-70.0735200000139 +33 +1723.15136134553 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-116.789200000014 +30 +1723.15136134553 +11 +8.36536469500046 +21 +-70.0735200000139 +31 +1722.32743988093 +12 +8.36536469500046 +22 +-116.789200000014 +32 +1722.32743988093 +13 +8.36536469500046 +23 +-116.789200000014 +33 +1722.32743988093 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +1.98565501612791e-05 +20 +-70.0735200000139 +30 +2468.69068252346 +11 +-8.36525637937127 +21 +0.0 +31 +2467.86677472752 +12 +-8.36525637937127 +22 +-70.0735200000139 +32 +2467.86677472752 +13 +-8.36525637937127 +23 +-70.0735200000139 +33 +2467.86677472752 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +0.0 +30 +2467.86677472752 +11 +1.98565501612791e-05 +21 +-70.0735200000139 +31 +2468.69068252346 +12 +1.98565501612791e-05 +22 +0.0 +32 +2468.69068252346 +13 +1.98565501612791e-05 +23 +0.0 +33 +2468.69068252346 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535458 +20 +-741.887719751186 +30 +2442.22077074152 +11 +-42.0550637268397 +21 +-116.789200000014 +31 +2434.17696738005 +12 +-42.0550637268397 +22 +-741.902149593115 +32 +2434.17696738005 +13 +-42.0550637268397 +23 +-741.902149593115 +33 +2434.17696738005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-116.789200000014 +30 +2434.17696738005 +11 +-39.6150026535458 +21 +-741.887719751186 +31 +2442.22077074152 +12 +-39.6150026535464 +22 +-116.789200000014 +32 +2442.22077074152 +13 +-39.6150026535464 +23 +-116.789200000014 +33 +2442.22077074152 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.98258536075502e-05 +20 +-70.0735200000139 +30 +1723.15136134553 +11 +-8.36518773617931 +21 +-116.789200000014 +31 +1722.32746722226 +12 +-8.36518773617931 +22 +-70.0735200000139 +32 +1722.32746722226 +13 +-8.36518773617931 +23 +-70.0735200000139 +33 +1722.32746722226 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36518773617931 +20 +-116.789200000014 +30 +1722.32746722226 +11 +8.98258536075502e-05 +21 +-70.0735200000139 +31 +1723.15136134553 +12 +8.98258536075502e-05 +22 +-116.789200000014 +32 +1723.15136134553 +13 +8.98258536075502e-05 +23 +-116.789200000014 +33 +1723.15136134553 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36532519033293 +20 +-116.789200000014 +30 +1638.2173002599 +11 +-16.4091245446726 +21 +-70.0735200000139 +31 +1640.65737447258 +12 +-16.4091245446726 +22 +-116.789200000014 +32 +1640.65737447258 +13 +-16.4091245446726 +23 +-116.789200000014 +33 +1640.65737447258 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4091245446726 +20 +-70.0735200000139 +30 +1640.65737447258 +11 +-8.36532519033293 +21 +-116.789200000014 +31 +1638.2173002599 +12 +-8.36532519033293 +22 +-70.0735200000139 +32 +1638.2173002599 +13 +-8.36532519033293 +23 +-70.0735200000139 +33 +1638.2173002599 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-116.789200000014 +30 +2549.07468002137 +11 +-93.4313636055058 +21 +-70.0735200000139 +31 +2549.07468002137 +12 +-93.4313636055058 +22 +-116.789200000014 +32 +2549.07468002137 +13 +-93.4313636055058 +23 +-116.789200000014 +33 +2549.07468002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-93.4313636055058 +20 +-70.0735200000139 +30 +2549.07468002137 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +93.4313563944944 +22 +-70.0735200000139 +32 +2549.07468002137 +13 +93.4313563944944 +23 +-70.0735200000139 +33 +2549.07468002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0551034399401 +20 +-741.404745478907 +30 +2434.17696738005 +11 +39.6150423666468 +21 +-116.789200000014 +31 +2442.22077074152 +12 +39.6150423666469 +22 +-741.419175320836 +32 +2442.22077074152 +13 +39.6150423666469 +23 +-741.419175320836 +33 +2442.22077074152 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666468 +20 +-116.789200000014 +30 +2442.22077074152 +11 +42.0551034399401 +21 +-741.404745478907 +31 +2434.17696738005 +12 +42.05510343994 +22 +-116.789200000014 +32 +2434.17696738005 +13 +42.05510343994 +23 +-116.789200000014 +33 +2434.17696738005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-116.789200000014 +30 +2383.75660756074 +11 +-16.4090597408471 +21 +-855.298327398157 +31 +2386.19666863403 +12 +-16.4090597408473 +22 +-116.789200000014 +32 +2386.19666863403 +13 +-16.4090597408473 +23 +-116.789200000014 +33 +2386.19666863403 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408471 +20 +-855.298327398157 +30 +2386.19666863403 +11 +-8.36525637937127 +21 +-116.789200000014 +31 +2383.75660756074 +12 +-8.36525637937127 +22 +-857.431240712236 +32 +2383.75660756074 +13 +-8.36525637937127 +23 +-857.431240712236 +33 +2383.75660756074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090561501895 +20 +-116.789200000014 +30 +1995.58711301456 +11 +8.36525014987311 +21 +-70.0735200000139 +31 +1993.14706071074 +12 +8.36525014987311 +22 +-116.789200000014 +32 +1993.14706071074 +13 +8.36525014987311 +23 +-116.789200000014 +33 +1993.14706071074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36525014987311 +20 +-70.0735200000139 +30 +1993.14706071074 +11 +16.4090561501895 +21 +-116.789200000014 +31 +1995.58711301456 +12 +16.4090561501895 +22 +-70.0735200000139 +32 +1995.58711301456 +13 +16.4090561501895 +23 +-70.0735200000139 +33 +1995.58711301456 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790110274535 +20 +-70.0735200000139 +30 +1680.2722999969 +11 +42.0550895628442 +21 +-116.789200000014 +31 +1671.90702512775 +12 +42.8790110274535 +22 +-116.789200000014 +32 +1680.2722999969 +13 +42.8790110274535 +23 +-116.789200000014 +33 +1680.2722999969 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0550895628442 +20 +-116.789200000014 +30 +1671.90702512775 +11 +42.8790110274535 +21 +-70.0735200000139 +31 +1680.2722999969 +12 +42.0550895628442 +22 +-70.0735200000139 +32 +1671.90702512775 +13 +42.0550895628442 +23 +-70.0735200000139 +33 +1671.90702512775 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.615068982122 +20 +-70.0735200000139 +30 +1696.68138488844 +11 +42.0551169041753 +21 +-116.789200000014 +31 +1688.63757755893 +12 +39.615068982122 +22 +-116.789200000014 +32 +1696.68138488844 +13 +39.615068982122 +23 +-116.789200000014 +33 +1696.68138488844 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0551169041753 +20 +-116.789200000014 +30 +1688.63757755893 +11 +39.615068982122 +21 +-70.0735200000139 +31 +1696.68138488844 +12 +42.0551169041753 +22 +-70.0735200000139 +32 +1688.63757755893 +13 +42.0551169041753 +23 +-70.0735200000139 +33 +1688.63757755893 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.652597429876 +20 +-70.0735200000139 +30 +1656.45013716005 +11 +-39.6150294774544 +21 +-116.789200000014 +31 +1663.86335525239 +12 +-35.652597429876 +22 +-116.789200000014 +32 +1656.45013716005 +13 +-35.652597429876 +23 +-116.789200000014 +33 +1656.45013716005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150294774544 +20 +-116.789200000014 +30 +1663.86335525239 +11 +-35.652597429876 +21 +-70.0735200000139 +31 +1656.45013716005 +12 +-39.6150294774544 +22 +-70.0735200000139 +32 +1663.86335525239 +13 +-39.6150294774544 +23 +-70.0735200000139 +33 +1663.86335525239 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150600434633 +20 +-70.0735200000139 +30 +2051.61118970355 +11 +42.0551123472866 +21 +-116.789200000014 +31 +2043.56738370323 +12 +39.6150600434633 +22 +-116.789200000014 +32 +2051.61118970355 +13 +39.6150600434633 +23 +-116.789200000014 +33 +2051.61118970355 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0551123472866 +20 +-116.789200000014 +30 +2043.56738370323 +11 +39.6150600434633 +21 +-70.0735200000139 +31 +2051.61118970355 +12 +42.0551123472866 +22 +-70.0735200000139 +32 +2043.56738370323 +13 +42.0551123472866 +23 +-70.0735200000139 +33 +2043.56738370323 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +-857.431240712237 +30 +2383.75660756074 +11 +-8.36525637937127 +21 +-857.431240712236 +31 +2383.75660756074 +12 +1.98565501612791e-05 +22 +-858.151437401893 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +-858.151437401893 +33 +2382.93269976479 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-857.431240712236 +30 +2383.75660756074 +11 +8.36529609247169 +21 +-857.431240712237 +31 +2383.75660756074 +12 +16.4090994539476 +22 +-855.298327398158 +32 +2386.19666863403 +13 +16.4090994539476 +23 +-855.298327398158 +33 +2386.19666863403 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-857.431240712236 +30 +2383.75660756074 +11 +16.4090994539476 +21 +-855.298327398158 +31 +2386.19666863403 +12 +-16.4090597408471 +22 +-855.298327398157 +32 +2386.19666863403 +13 +-16.4090597408471 +23 +-855.298327398157 +33 +2386.19666863403 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408471 +20 +-855.298327398157 +30 +2386.19666863403 +11 +16.4090994539476 +21 +-855.298327398158 +31 +2386.19666863403 +12 +23.8223110888136 +22 +-851.834664122165 +32 +2390.15911280603 +13 +23.8223110888136 +23 +-851.834664122165 +33 +2390.15911280603 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408471 +20 +-855.298327398157 +30 +2386.19666863403 +11 +23.8223110888136 +21 +-851.834664122165 +31 +2390.15911280603 +12 +-23.822271375713 +22 +-851.834664122165 +32 +2390.15911280603 +13 +-23.822271375713 +23 +-851.834664122165 +33 +2390.15911280603 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.822271375713 +20 +-851.834664122165 +30 +2390.15911280603 +11 +23.8223110888136 +21 +-851.834664122165 +31 +2390.15911280603 +12 +30.3200454313184 +22 +-847.173357521512 +32 +2395.49166556936 +13 +30.3200454313184 +23 +-847.173357521512 +33 +2395.49166556936 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-23.822271375713 +20 +-851.834664122165 +30 +2390.15911280603 +11 +30.3200454313184 +21 +-847.173357521512 +31 +2395.49166556936 +12 +-30.3200057182178 +22 +-847.173357521512 +32 +2395.49166556936 +13 +-30.3200057182178 +23 +-847.173357521512 +33 +2395.49166556936 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182178 +20 +-847.173357521512 +30 +2395.49166556936 +11 +30.3200454313184 +21 +-847.173357521512 +31 +2395.49166556936 +12 +35.6525981946511 +22 +-841.49353899477 +32 +2401.98939991186 +13 +35.6525981946511 +23 +-841.49353899477 +33 +2401.98939991186 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182178 +20 +-847.173357521512 +30 +2395.49166556936 +11 +35.6525981946511 +21 +-841.49353899477 +31 +2401.98939991186 +12 +-35.6525584815511 +22 +-841.493538994769 +32 +2401.98939991186 +13 +-35.6525584815511 +23 +-841.493538994769 +33 +2401.98939991186 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815511 +20 +-841.493538994769 +30 +2401.98939991186 +11 +35.6525981946511 +21 +-841.49353899477 +31 +2401.98939991186 +12 +39.3611647970471 +22 +-835.428664280087 +32 +2408.9276400213 +13 +39.3611647970471 +23 +-835.428664280087 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815511 +20 +-841.493538994769 +30 +2401.98939991186 +11 +39.3611647970471 +21 +-835.428664280087 +31 +2408.9276400213 +12 +-39.3611250839466 +22 +-835.428664280087 +32 +2408.9276400213 +13 +-39.3611250839466 +23 +-835.428664280087 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539476 +20 +-116.789200000014 +30 +2386.19666863403 +11 +8.36529609247169 +21 +-857.431240712237 +31 +2383.75660756074 +12 +8.36529609247169 +22 +-116.789200000014 +32 +2383.75660756074 +13 +8.36529609247169 +23 +-116.789200000014 +33 +2383.75660756074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +-857.431240712237 +30 +2383.75660756074 +11 +16.4090994539476 +21 +-116.789200000014 +31 +2386.19666863403 +12 +16.4090994539476 +22 +-855.298327398158 +32 +2386.19666863403 +13 +16.4090994539476 +23 +-855.298327398158 +33 +2386.19666863403 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182176 +20 +-741.832751726833 +30 +2456.13171671889 +11 +-23.8222713757131 +21 +-116.789200000014 +31 +2461.46426948223 +12 +-30.3200057182179 +22 +-116.789200000014 +32 +2456.13171671889 +13 +-30.3200057182179 +23 +-116.789200000014 +33 +2456.13171671889 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222713757131 +20 +-116.789200000014 +30 +2461.46426948223 +11 +-30.3200057182176 +21 +-741.832751726833 +31 +2456.13171671889 +12 +-23.822271375713 +22 +-741.794325934758 +32 +2461.46426948223 +13 +-23.822271375713 +23 +-741.794325934758 +33 +2461.46426948223 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +93.4322738363532 +20 +-70.0735200000139 +30 +1614.76107890595 +11 +93.4313563944944 +21 +-116.789200000014 +31 +2549.07468002137 +12 +93.4322738363532 +22 +-116.789200000014 +32 +1614.76107890595 +13 +93.4322738363532 +23 +-116.789200000014 +33 +1614.76107890595 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +93.4313563944944 +20 +-116.789200000014 +30 +2549.07468002137 +11 +93.4322738363532 +21 +-70.0735200000139 +31 +1614.76107890595 +12 +93.4313563944944 +22 +-70.0735200000139 +32 +2549.07468002137 +13 +93.4313563944944 +23 +-70.0735200000139 +33 +2549.07468002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182176 +20 +-741.832751726833 +30 +2456.13171671889 +11 +-35.6525584815506 +21 +-116.789200000014 +31 +2449.63398237639 +12 +-35.6525584815506 +22 +-741.864286959411 +32 +2449.63398237639 +13 +-35.6525584815506 +23 +-741.864286959411 +33 +2449.63398237639 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-116.789200000014 +30 +2449.63398237639 +11 +-30.3200057182176 +21 +-741.832751726833 +31 +2456.13171671889 +12 +-30.3200057182179 +22 +-116.789200000014 +32 +2456.13171671889 +13 +-30.3200057182179 +23 +-116.789200000014 +33 +2456.13171671889 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888135 +20 +-116.789200000014 +30 +2390.15911280603 +11 +16.4090994539476 +21 +-855.298327398158 +31 +2386.19666863403 +12 +16.4090994539476 +22 +-116.789200000014 +32 +2386.19666863403 +13 +16.4090994539476 +23 +-116.789200000014 +33 +2386.19666863403 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539476 +20 +-855.298327398158 +30 +2386.19666863403 +11 +23.8223110888135 +21 +-116.789200000014 +31 +2390.15911280603 +12 +23.8223110888136 +22 +-851.834664122165 +32 +2390.15911280603 +13 +23.8223110888136 +23 +-851.834664122165 +33 +2390.15911280603 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200782863833 +20 +-70.0735200000139 +30 +2065.5221457738 +11 +35.6526239576226 +21 +-116.789200000014 +31 +2059.02440563739 +12 +30.3200782863833 +22 +-116.789200000014 +32 +2065.5221457738 +13 +30.3200782863833 +23 +-116.789200000014 +33 +2065.5221457738 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.6526239576226 +20 +-116.789200000014 +30 +2059.02440563739 +11 +30.3200782863833 +21 +-70.0735200000139 +31 +2065.5221457738 +12 +35.6526239576226 +22 +-70.0735200000139 +32 +2059.02440563739 +13 +35.6526239576226 +23 +-70.0735200000139 +33 +2059.02440563739 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090345703586 +20 +-116.789200000014 +30 +1640.65732084063 +11 +8.36522724084684 +21 +-70.0735200000139 +31 +1638.21727291857 +12 +8.36522724084684 +22 +-116.789200000014 +32 +1638.21727291857 +13 +8.36522724084684 +23 +-116.789200000014 +33 +1638.21727291857 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36522724084684 +20 +-70.0735200000139 +30 +1638.21727291857 +11 +16.4090345703586 +21 +-116.789200000014 +31 +1640.65732084063 +12 +16.4090345703586 +22 +-70.0735200000139 +32 +1640.65732084063 +13 +16.4090345703586 +23 +-70.0735200000139 +33 +1640.65732084063 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666467 +20 +0.0 +30 +2409.40261154673 +11 +42.05510343994 +21 +-70.0735200000139 +31 +2417.44641490821 +12 +39.6150423666467 +22 +-70.0735200000139 +32 +2409.40261154673 +13 +39.6150423666467 +23 +-70.0735200000139 +33 +2409.40261154673 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.05510343994 +20 +-70.0735200000139 +30 +2417.44641490821 +11 +39.6150423666467 +21 +0.0 +31 +2409.40261154673 +12 +42.05510343994 +22 +0.0 +32 +2417.44641490821 +13 +42.05510343994 +23 +0.0 +33 +2417.44641490821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.3611647970476 +20 +-741.420676682108 +30 +2408.9276400213 +11 +-39.615002653547 +21 +-741.887719751186 +31 +2409.40261154673 +12 +-39.3611250839469 +22 +-741.886218389914 +32 +2408.9276400213 +13 +-39.3611250839469 +23 +-741.886218389914 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.615002653547 +20 +-741.887719751186 +30 +2409.40261154673 +11 +39.3611647970476 +21 +-741.420676682108 +31 +2408.9276400213 +12 +39.6150423666477 +22 +-741.419175320836 +32 +2409.40261154673 +13 +39.6150423666477 +23 +-741.419175320836 +33 +2409.40261154673 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-39.615002653547 +20 +-741.887719751186 +30 +2409.40261154673 +11 +39.6150423666477 +21 +-741.419175320836 +31 +2409.40261154673 +12 +-42.0550637268399 +22 +-741.902149593115 +32 +2417.44641490821 +13 +-42.0550637268399 +23 +-741.902149593115 +33 +2417.44641490821 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268399 +20 +-741.902149593115 +30 +2417.44641490821 +11 +39.6150423666477 +21 +-741.419175320836 +31 +2409.40261154673 +12 +42.0551034399399 +22 +-741.404745478908 +32 +2417.44641490821 +13 +42.0551034399399 +23 +-741.404745478908 +33 +2417.44641490821 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268399 +20 +-741.902149593115 +30 +2417.44641490821 +11 +42.0551034399399 +21 +-741.404745478908 +31 +2417.44641490821 +12 +42.8790112358864 +22 +-741.39987311756 +32 +2425.81169114413 +13 +42.8790112358864 +23 +-741.39987311756 +33 +2425.81169114413 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268399 +20 +-741.902149593115 +30 +2417.44641490821 +11 +42.8790112358864 +21 +-741.39987311756 +31 +2425.81169114413 +12 +-42.878971522786 +22 +-741.907021954462 +32 +2425.81169114413 +13 +-42.878971522786 +23 +-741.907021954462 +33 +2425.81169114413 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-741.907021954462 +30 +2425.81169114413 +11 +42.8790112358864 +21 +-741.39987311756 +31 +2425.81169114413 +12 +42.0551034399401 +22 +-741.404745478907 +32 +2434.17696738005 +13 +42.0551034399401 +23 +-741.404745478907 +33 +2434.17696738005 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-741.907021954462 +30 +2425.81169114413 +11 +42.0551034399401 +21 +-741.404745478907 +31 +2434.17696738005 +12 +-42.0550637268397 +22 +-741.902149593115 +32 +2434.17696738005 +13 +-42.0550637268397 +23 +-741.902149593115 +33 +2434.17696738005 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-741.902149593115 +30 +2434.17696738005 +11 +42.0551034399401 +21 +-741.404745478907 +31 +2434.17696738005 +12 +39.6150423666469 +22 +-741.419175320836 +32 +2442.22077074152 +13 +39.6150423666469 +23 +-741.419175320836 +33 +2442.22077074152 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-741.902149593115 +30 +2434.17696738005 +11 +39.6150423666469 +21 +-741.419175320836 +31 +2442.22077074152 +12 +-39.6150026535458 +22 +-741.887719751186 +32 +2442.22077074152 +13 +-39.6150026535458 +23 +-741.887719751186 +33 +2442.22077074152 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535458 +20 +-741.887719751186 +30 +2442.22077074152 +11 +39.6150423666469 +21 +-741.419175320836 +31 +2442.22077074152 +12 +35.6525981946522 +22 +-741.442608112612 +32 +2449.63398237639 +13 +35.6525981946522 +23 +-741.442608112612 +33 +2449.63398237639 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535458 +20 +-741.887719751186 +30 +2442.22077074152 +11 +35.6525981946522 +21 +-741.442608112612 +31 +2449.63398237639 +12 +-35.6525584815506 +22 +-741.864286959411 +32 +2449.63398237639 +13 +-35.6525584815506 +23 +-741.864286959411 +33 +2449.63398237639 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-741.864286959411 +30 +2449.63398237639 +11 +35.6525981946522 +21 +-741.442608112612 +31 +2449.63398237639 +12 +30.3200454313182 +22 +-741.474143345189 +32 +2456.13171671889 +13 +30.3200454313182 +23 +-741.474143345189 +33 +2456.13171671889 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-741.864286959411 +30 +2449.63398237639 +11 +30.3200454313182 +21 +-741.474143345189 +31 +2456.13171671889 +12 +-30.3200057182176 +22 +-741.832751726833 +32 +2456.13171671889 +13 +-30.3200057182176 +23 +-741.832751726833 +33 +2456.13171671889 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182176 +20 +-741.832751726833 +30 +2456.13171671889 +11 +30.3200454313182 +21 +-741.474143345189 +31 +2456.13171671889 +12 +23.8223110888134 +22 +-741.512569137265 +32 +2461.46426948223 +13 +23.8223110888134 +23 +-741.512569137265 +33 +2461.46426948223 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182176 +20 +-741.832751726833 +30 +2456.13171671889 +11 +23.8223110888134 +21 +-741.512569137265 +31 +2461.46426948223 +12 +-23.822271375713 +22 +-741.794325934758 +32 +2461.46426948223 +13 +-23.822271375713 +23 +-741.794325934758 +33 +2461.46426948223 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-23.822271375713 +20 +-741.794325934758 +30 +2461.46426948223 +11 +23.8223110888134 +21 +-741.512569137265 +31 +2461.46426948223 +12 +-16.4090597408471 +22 +-741.750486264824 +32 +2465.42671365422 +13 +-16.4090597408471 +23 +-741.750486264824 +33 +2465.42671365422 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408471 +20 +-741.750486264824 +30 +2465.42671365422 +11 +23.8223110888134 +21 +-741.512569137265 +31 +2461.46426948223 +12 +16.4090994539477 +22 +-741.556408807198 +32 +2465.42671365422 +13 +16.4090994539477 +23 +-741.556408807198 +33 +2465.42671365422 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408471 +20 +-741.750486264824 +30 +2465.42671365422 +11 +16.4090994539477 +21 +-741.556408807198 +31 +2465.42671365422 +12 +-8.36525637937127 +22 +-741.702917450962 +32 +2467.86677472752 +13 +-8.36525637937127 +23 +-741.702917450962 +33 +2467.86677472752 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-741.702917450962 +30 +2467.86677472752 +11 +16.4090994539477 +21 +-741.556408807198 +31 +2465.42671365422 +12 +8.36529609247178 +22 +-741.60397762106 +32 +2467.86677472752 +13 +8.36529609247178 +23 +-741.60397762106 +33 +2467.86677472752 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-741.702917450962 +30 +2467.86677472752 +11 +8.36529609247178 +21 +-741.60397762106 +31 +2467.86677472752 +12 +1.9856550251518e-05 +22 +-741.653447536011 +32 +2468.69068252346 +13 +1.9856550251518e-05 +23 +-741.653447536011 +33 +2468.69068252346 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +-70.0735200000139 +30 +2467.86677472752 +11 +1.98565501612791e-05 +21 +0.0 +31 +2468.69068252346 +12 +1.98565501612791e-05 +22 +-70.0735200000139 +32 +2468.69068252346 +13 +1.98565501612791e-05 +23 +-70.0735200000139 +33 +2468.69068252346 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +1.98565501612791e-05 +20 +0.0 +30 +2468.69068252346 +11 +8.36529609247169 +21 +-70.0735200000139 +31 +2467.86677472752 +12 +8.36529609247169 +22 +0.0 +32 +2467.86677472752 +13 +8.36529609247169 +23 +0.0 +33 +2467.86677472752 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150242888304 +20 +-70.0735200000139 +30 +2018.79303058852 +11 +35.652572049941 +21 +-116.789200000014 +31 +2011.37982328866 +12 +39.6150242888304 +22 +-116.789200000014 +32 +2018.79303058852 +13 +39.6150242888304 +23 +-116.789200000014 +33 +2018.79303058852 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.652572049941 +20 +-116.789200000014 +30 +2011.37982328866 +11 +39.6150242888304 +21 +-70.0735200000139 +31 +2018.79303058852 +12 +35.652572049941 +22 +-70.0735200000139 +32 +2011.37982328866 +13 +35.652572049941 +23 +-70.0735200000139 +33 +2011.37982328866 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8222720840299 +20 +-116.789200000014 +30 +1999.54954910041 +11 +16.4090561501895 +21 +-70.0735200000139 +31 +1995.58711301456 +12 +16.4090561501895 +22 +-116.789200000014 +32 +1995.58711301456 +13 +16.4090561501895 +23 +-116.789200000014 +33 +1995.58711301456 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090561501895 +20 +-70.0735200000139 +30 +1995.58711301456 +11 +23.8222720840299 +21 +-116.789200000014 +31 +1999.54954910041 +12 +23.8222720840299 +22 +-70.0735200000139 +32 +1999.54954910041 +13 +23.8222720840299 +23 +-70.0735200000139 +33 +1999.54954910041 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-70.0735200000139 +30 +1680.27244014393 +11 +-42.0550500581767 +21 +-116.789200000014 +31 +1688.63771501308 +12 +-42.878971522786 +22 +-116.789200000014 +32 +1680.27244014393 +13 +-42.878971522786 +23 +-116.789200000014 +33 +1680.27244014393 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550500581767 +20 +-116.789200000014 +30 +1688.63771501308 +11 +-42.878971522786 +21 +-70.0735200000139 +31 +1680.27244014393 +12 +-42.0550500581767 +22 +-70.0735200000139 +32 +1688.63771501308 +13 +-42.0550500581767 +23 +-70.0735200000139 +33 +1688.63771501308 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +0.0 +30 +2401.98939991186 +11 +-30.3200057182179 +21 +-70.0735200000139 +31 +2395.49166556936 +12 +-35.6525584815506 +22 +-70.0735200000139 +32 +2401.98939991186 +13 +-35.6525584815506 +23 +-70.0735200000139 +33 +2401.98939991186 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182179 +20 +-70.0735200000139 +30 +2395.49166556936 +11 +-35.6525584815506 +21 +0.0 +31 +2401.98939991186 +12 +-30.3200057182179 +22 +0.0 +32 +2395.49166556936 +13 +-30.3200057182179 +23 +0.0 +33 +2395.49166556936 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +-116.789200000014 +30 +2395.49166556936 +11 +23.8223110888136 +21 +-851.834664122165 +31 +2390.15911280603 +12 +23.8223110888135 +22 +-116.789200000014 +32 +2390.15911280603 +13 +23.8223110888135 +23 +-116.789200000014 +33 +2390.15911280603 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888136 +20 +-851.834664122165 +30 +2390.15911280603 +11 +30.3200454313183 +21 +-116.789200000014 +31 +2395.49166556936 +12 +30.3200454313184 +22 +-847.173357521512 +32 +2395.49166556936 +13 +30.3200454313184 +23 +-847.173357521512 +33 +2395.49166556936 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +-116.789200000014 +30 +2409.40261154673 +11 +-39.3611250839469 +21 +-741.886218389914 +31 +2408.9276400213 +12 +-39.615002653547 +22 +-741.887719751186 +32 +2409.40261154673 +13 +-39.615002653547 +23 +-741.887719751186 +33 +2409.40261154673 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.3611250839466 +20 +-835.428664280087 +30 +2408.9276400213 +11 +-35.6525584815506 +21 +-116.789200000014 +31 +2401.98939991186 +12 +-35.6525584815511 +22 +-841.493538994769 +32 +2401.98939991186 +13 +-35.6525584815511 +23 +-841.493538994769 +33 +2401.98939991186 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-116.789200000014 +30 +2401.98939991186 +11 +-39.3611250839466 +21 +-835.428664280087 +31 +2408.9276400213 +12 +-39.3611250839469 +22 +-741.886218389914 +32 +2408.9276400213 +13 +-39.3611250839469 +23 +-741.886218389914 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-116.789200000014 +30 +2401.98939991186 +11 +-39.3611250839469 +21 +-741.886218389914 +31 +2408.9276400213 +12 +-39.6150026535464 +22 +-116.789200000014 +32 +2409.40261154673 +13 +-39.6150026535464 +23 +-116.789200000014 +33 +2409.40261154673 +70 +3 + 0 +3DFACE + 8 +gearbox_half +10 +8.36529609247169 +20 +0.0 +30 +2383.75660756074 +11 +1.98565501612791e-05 +21 +-70.0735200000139 +31 +2382.93269976479 +12 +1.98565501612791e-05 +22 +0.0 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +0.0 +33 +2382.93269976479 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +1.98565501612791e-05 +20 +-70.0735200000139 +30 +2382.93269976479 +11 +8.36529609247169 +21 +0.0 +31 +2383.75660756074 +12 +8.36529609247169 +22 +-70.0735200000139 +32 +2383.75660756074 +13 +8.36529609247169 +23 +-70.0735200000139 +33 +2383.75660756074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-5.03211860767294e-05 +20 +-116.789200000014 +30 +1637.3933787953 +11 +-8.36532519033293 +21 +-70.0735200000139 +31 +1638.2173002599 +12 +-8.36532519033293 +22 +-116.789200000014 +32 +1638.2173002599 +13 +-8.36532519033293 +23 +-116.789200000014 +33 +1638.2173002599 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36532519033293 +20 +-70.0735200000139 +30 +1638.2173002599 +11 +-5.03211860767294e-05 +21 +-116.789200000014 +31 +1637.3933787953 +12 +-5.03211860767294e-05 +22 +-70.0735200000139 +32 +1637.3933787953 +13 +-5.03211860767294e-05 +23 +-70.0735200000139 +33 +1637.3933787953 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36530228130657 +20 +-116.789200000014 +30 +1993.1470789383 +11 +-16.4091029648416 +21 +-70.0735200000139 +31 +1995.5871487692 +12 +-16.4091029648416 +22 +-116.789200000014 +32 +1995.5871487692 +13 +-16.4091029648416 +23 +-116.789200000014 +33 +1995.5871487692 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4091029648416 +20 +-70.0735200000139 +30 +1995.5871487692 +11 +-8.36530228130657 +21 +-116.789200000014 +31 +1993.1470789383 +12 +-8.36530228130657 +22 +-70.0735200000139 +32 +1993.1470789383 +13 +-8.36530228130657 +23 +-70.0735200000139 +33 +1993.1470789383 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4091424695092 +20 +-70.0735200000139 +30 +2074.81715784219 +11 +8.3653417859741 +21 +-116.789200000014 +31 +2077.25722767309 +12 +8.3653417859741 +22 +-70.0735200000139 +32 +2077.25722767309 +13 +8.3653417859741 +23 +-70.0735200000139 +33 +2077.25722767309 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.3653417859741 +20 +-116.789200000014 +30 +2077.25722767309 +11 +16.4091424695092 +21 +-70.0735200000139 +31 +2074.81715784219 +12 +16.4091424695092 +22 +-116.789200000014 +32 +2074.81715784219 +13 +16.4091424695092 +23 +-116.789200000014 +33 +2074.81715784219 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +0.0 +30 +2395.49166556936 +11 +35.652598194651 +21 +-70.0735200000139 +31 +2401.98939991186 +12 +30.3200454313183 +22 +-70.0735200000139 +32 +2395.49166556936 +13 +30.3200454313183 +23 +-70.0735200000139 +33 +2395.49166556936 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.652598194651 +20 +-70.0735200000139 +30 +2401.98939991186 +11 +30.3200454313183 +21 +0.0 +31 +2395.49166556936 +12 +35.652598194651 +22 +0.0 +32 +2401.98939991186 +13 +35.652598194651 +23 +0.0 +33 +2401.98939991186 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-70.0735200000139 +30 +2467.86677472752 +11 +-16.4090597408473 +21 +0.0 +31 +2465.42671365422 +12 +-16.4090597408473 +22 +-70.0735200000139 +32 +2465.42671365422 +13 +-16.4090597408473 +23 +-70.0735200000139 +33 +2465.42671365422 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408473 +20 +0.0 +30 +2465.42671365422 +11 +-8.36525637937127 +21 +-70.0735200000139 +31 +2467.86677472752 +12 +-8.36525637937127 +22 +0.0 +32 +2467.86677472752 +13 +-8.36525637937127 +23 +0.0 +33 +2467.86677472752 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223497693652 +20 +-70.0735200000139 +30 +2070.8547056033 +11 +16.4091424695092 +21 +-116.789200000014 +31 +2074.81715784219 +12 +16.4091424695092 +22 +-70.0735200000139 +32 +2074.81715784219 +13 +16.4091424695092 +23 +-70.0735200000139 +33 +2074.81715784219 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4091424695092 +20 +-116.789200000014 +30 +2074.81715784219 +11 +23.8223497693652 +21 +-70.0735200000139 +31 +2070.8547056033 +12 +23.8223497693652 +22 +-116.789200000014 +32 +2070.8547056033 +13 +23.8223497693652 +23 +-116.789200000014 +33 +2070.8547056033 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200122204362 +20 +-116.789200000014 +30 +2004.88209477165 +11 +23.8222720840299 +21 +-70.0735200000139 +31 +1999.54954910041 +12 +23.8222720840299 +22 +-116.789200000014 +32 +1999.54954910041 +13 +23.8222720840299 +23 +-116.789200000014 +33 +1999.54954910041 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8222720840299 +20 +-70.0735200000139 +30 +1999.54954910041 +11 +30.3200122204362 +21 +-116.789200000014 +31 +2004.88209477165 +12 +30.3200122204362 +22 +-70.0735200000139 +32 +2004.88209477165 +13 +30.3200122204362 +23 +-70.0735200000139 +33 +2004.88209477165 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313183 +20 +-70.0735200000139 +30 +2456.13171671889 +11 +23.8223110888135 +21 +0.0 +31 +2461.46426948223 +12 +23.8223110888135 +22 +-70.0735200000139 +32 +2461.46426948223 +13 +23.8223110888135 +23 +-70.0735200000139 +33 +2461.46426948223 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888135 +20 +0.0 +30 +2461.46426948223 +11 +30.3200454313183 +21 +-70.0735200000139 +31 +2456.13171671889 +12 +30.3200454313183 +22 +0.0 +32 +2456.13171671889 +13 +30.3200454313183 +23 +0.0 +33 +2456.13171671889 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090597408473 +20 +-70.0735200000139 +30 +2465.42671365422 +11 +-23.8222713757131 +21 +0.0 +31 +2461.46426948223 +12 +-23.8222713757131 +22 +-70.0735200000139 +32 +2461.46426948223 +13 +-23.8222713757131 +23 +-70.0735200000139 +33 +2461.46426948223 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222713757131 +20 +0.0 +30 +2461.46426948223 +11 +-16.4090597408473 +21 +-70.0735200000139 +31 +2465.42671365422 +12 +-16.4090597408473 +22 +0.0 +32 +2465.42671365422 +13 +-16.4090597408473 +23 +0.0 +33 +2465.42671365422 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36525014987311 +20 +-116.789200000014 +30 +1993.14706071074 +11 +-2.69633454074381e-05 +21 +-70.0735200000139 +31 +1992.32316203057 +12 +-2.69633454074381e-05 +22 +-116.789200000014 +32 +1992.32316203057 +13 +-2.69633454074381e-05 +23 +-116.789200000014 +33 +1992.32316203057 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-2.69633454074381e-05 +20 +-70.0735200000139 +30 +1992.32316203057 +11 +8.36525014987311 +21 +-116.789200000014 +31 +1993.14706071074 +12 +8.36525014987311 +22 +-70.0735200000139 +32 +1993.14706071074 +13 +8.36525014987311 +23 +-70.0735200000139 +33 +1993.14706071074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888135 +20 +0.0 +30 +2390.15911280603 +11 +16.4090994539476 +21 +-70.0735200000139 +31 +2386.19666863403 +12 +16.4090994539476 +22 +0.0 +32 +2386.19666863403 +13 +16.4090994539476 +23 +0.0 +33 +2386.19666863403 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539476 +20 +-70.0735200000139 +30 +2386.19666863403 +11 +23.8223110888135 +21 +0.0 +31 +2390.15911280603 +12 +23.8223110888135 +22 +-70.0735200000139 +32 +2390.15911280603 +13 +23.8223110888135 +23 +-70.0735200000139 +33 +2390.15911280603 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.65255907302 +20 +-70.0735200000139 +30 +1656.45002063205 +11 +30.3199957039486 +21 +-116.789200000014 +31 +1649.95229501988 +12 +35.65255907302 +22 +-116.789200000014 +32 +1656.45002063205 +13 +35.65255907302 +23 +-116.789200000014 +33 +1656.45002063205 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3199957039486 +20 +-116.789200000014 +30 +1649.95229501988 +11 +35.65255907302 +21 +-70.0735200000139 +31 +1656.45002063205 +12 +30.3199957039486 +22 +-70.0735200000139 +32 +1649.95229501988 +13 +30.3199957039486 +23 +-70.0735200000139 +33 +1649.95229501988 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6149758455043 +20 +-70.0735200000139 +30 +1696.68151436742 +11 +-35.6525195683525 +21 +-116.789200000014 +31 +1704.09471950878 +12 +-39.6149758455043 +22 +-116.789200000014 +32 +1696.68151436742 +13 +-39.6149758455043 +23 +-116.789200000014 +33 +1696.68151436742 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525195683525 +20 +-116.789200000014 +30 +1704.09471950878 +11 +-39.6149758455043 +21 +-70.0735200000139 +31 +1696.68151436742 +12 +-35.6525195683525 +22 +-70.0735200000139 +32 +1704.09471950878 +13 +-35.6525195683525 +23 +-70.0735200000139 +33 +1704.09471950878 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666468 +20 +-116.789200000014 +30 +2409.40261154673 +11 +42.0551034399399 +21 +-741.404745478908 +31 +2417.44641490821 +12 +39.6150423666477 +22 +-741.419175320836 +32 +2409.40261154673 +13 +39.6150423666477 +23 +-741.419175320836 +33 +2409.40261154673 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.0551034399399 +20 +-741.404745478908 +30 +2417.44641490821 +11 +39.6150423666468 +21 +-116.789200000014 +31 +2409.40261154673 +12 +42.05510343994 +22 +-116.789200000014 +32 +2417.44641490821 +13 +42.05510343994 +23 +-116.789200000014 +33 +2417.44641490821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200057182179 +20 +0.0 +30 +2456.13171671889 +11 +-35.6525584815506 +21 +-70.0735200000139 +31 +2449.63398237639 +12 +-30.3200057182179 +22 +-70.0735200000139 +32 +2456.13171671889 +13 +-30.3200057182179 +23 +-70.0735200000139 +33 +2456.13171671889 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-70.0735200000139 +30 +2449.63398237639 +11 +-30.3200057182179 +21 +0.0 +31 +2456.13171671889 +12 +-35.6525584815506 +22 +0.0 +32 +2449.63398237639 +13 +-35.6525584815506 +23 +0.0 +33 +2449.63398237639 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666467 +20 +0.0 +30 +2442.22077074152 +11 +35.652598194651 +21 +-70.0735200000139 +31 +2449.63398237639 +12 +39.6150423666467 +22 +-70.0735200000139 +32 +2442.22077074152 +13 +39.6150423666467 +23 +-70.0735200000139 +33 +2442.22077074152 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.652598194651 +20 +-70.0735200000139 +30 +2449.63398237639 +11 +39.6150423666467 +21 +0.0 +31 +2442.22077074152 +12 +35.652598194651 +22 +0.0 +32 +2449.63398237639 +13 +35.652598194651 +23 +0.0 +33 +2449.63398237639 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888134 +20 +-741.512569137265 +30 +2461.46426948223 +11 +16.4090994539477 +21 +-116.789200000014 +31 +2465.42671365422 +12 +16.4090994539477 +22 +-741.556408807198 +32 +2465.42671365422 +13 +16.4090994539477 +23 +-741.556408807198 +33 +2465.42671365422 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +16.4090994539477 +20 +-116.789200000014 +30 +2465.42671365422 +11 +23.8223110888134 +21 +-741.512569137265 +31 +2461.46426948223 +12 +23.8223110888135 +22 +-116.789200000014 +32 +2461.46426948223 +13 +23.8223110888135 +23 +-116.789200000014 +33 +2461.46426948223 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666469 +20 +-741.419175320836 +30 +2442.22077074152 +11 +35.652598194651 +21 +-116.789200000014 +31 +2449.63398237639 +12 +35.6525981946522 +22 +-741.442608112612 +32 +2449.63398237639 +13 +35.6525981946522 +23 +-741.442608112612 +33 +2449.63398237639 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.652598194651 +20 +-116.789200000014 +30 +2449.63398237639 +11 +39.6150423666469 +21 +-741.419175320836 +31 +2442.22077074152 +12 +39.6150423666468 +22 +-116.789200000014 +32 +2442.22077074152 +13 +39.6150423666468 +23 +-116.789200000014 +33 +2442.22077074152 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550546150653 +20 +-70.0735200000139 +30 +2043.56747533934 +11 +-39.6149847841629 +21 +-116.789200000014 +31 +2051.61127602287 +12 +-42.0550546150653 +22 +-116.789200000014 +32 +2043.56747533934 +13 +-42.0550546150653 +23 +-116.789200000014 +33 +2043.56747533934 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6149847841629 +20 +-116.789200000014 +30 +2051.61127602287 +11 +-42.0550546150653 +21 +-70.0735200000139 +31 +2043.56747533934 +12 +-39.6149847841629 +22 +-70.0735200000139 +32 +2051.61127602287 +13 +-39.6149847841629 +23 +-70.0735200000139 +33 +2051.61127602287 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +0.0 +30 +2409.40261154673 +11 +-35.6525584815506 +21 +-70.0735200000139 +31 +2401.98939991186 +12 +-39.6150026535464 +22 +-70.0735200000139 +32 +2409.40261154673 +13 +-39.6150026535464 +23 +-70.0735200000139 +33 +2409.40261154673 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525584815506 +20 +-70.0735200000139 +30 +2401.98939991186 +11 +-39.6150026535464 +21 +0.0 +31 +2409.40261154673 +12 +-35.6525584815506 +22 +0.0 +32 +2401.98939991186 +13 +-35.6525584815506 +23 +0.0 +33 +2401.98939991186 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36521064520558 +20 +-70.0735200000139 +30 +2077.25724590065 +11 +-16.4090166455219 +21 +-116.789200000014 +31 +2074.81719359682 +12 +-16.4090166455219 +22 +-70.0735200000139 +32 +2074.81719359682 +13 +-16.4090166455219 +23 +-70.0735200000139 +33 +2074.81719359682 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-16.4090166455219 +20 +-116.789200000014 +30 +2074.81719359682 +11 +-8.36521064520558 +21 +-70.0735200000139 +31 +2077.25724590065 +12 +-8.36521064520558 +22 +-116.789200000014 +32 +2077.25724590065 +13 +-8.36521064520558 +23 +-116.789200000014 +33 +2077.25724590065 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.6526239576226 +20 +-70.0735200000139 +30 +2059.02440563739 +11 +39.6150600434633 +21 +-116.789200000014 +31 +2051.61118970355 +12 +35.6526239576226 +22 +-116.789200000014 +32 +2059.02440563739 +13 +35.6526239576226 +23 +-116.789200000014 +33 +2059.02440563739 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150600434633 +20 +-116.789200000014 +30 +2051.61118970355 +11 +35.6526239576226 +21 +-70.0735200000139 +31 +2059.02440563739 +12 +39.6150600434633 +22 +-70.0735200000139 +32 +2051.61118970355 +13 +39.6150600434633 +23 +-70.0735200000139 +33 +2051.61118970355 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525325452735 +20 +-70.0735200000139 +30 +2059.02448332273 +11 +-30.3199727157687 +21 +-116.789200000014 +31 +2065.52221183974 +12 +-35.6525325452735 +22 +-116.789200000014 +32 +2059.02448332273 +13 +-35.6525325452735 +23 +-116.789200000014 +33 +2059.02448332273 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3199727157687 +20 +-116.789200000014 +30 +2065.52221183974 +11 +-35.6525325452735 +21 +-70.0735200000139 +31 +2059.02448332273 +12 +-30.3199727157687 +22 +-70.0735200000139 +32 +2065.52221183974 +13 +-30.3199727157687 +23 +-70.0735200000139 +33 +2065.52221183974 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200948028707 +20 +-70.0735200000139 +30 +1710.59234602203 +11 +35.6526369345435 +21 +-116.789200000014 +31 +1704.09460298078 +12 +30.3200948028707 +22 +-116.789200000014 +32 +1710.59234602203 +13 +30.3200948028707 +23 +-116.789200000014 +33 +1710.59234602203 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +35.6526369345435 +20 +-116.789200000014 +30 +1704.09460298078 +11 +30.3200948028707 +21 +-70.0735200000139 +31 +1710.59234602203 +12 +35.6526369345435 +22 +-70.0735200000139 +32 +1704.09460298078 +13 +35.6526369345435 +23 +-70.0735200000139 +33 +1704.09460298078 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6149847841629 +20 +-70.0735200000139 +30 +2051.61127602287 +11 +-35.6525325452735 +21 +-116.789200000014 +31 +2059.02448332273 +12 +-39.6149847841629 +22 +-116.789200000014 +32 +2051.61127602287 +13 +-39.6149847841629 +23 +-116.789200000014 +33 +2051.61127602287 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.6525325452735 +20 +-116.789200000014 +30 +2059.02448332273 +11 +-39.6149847841629 +21 +-70.0735200000139 +31 +2051.61127602287 +12 +-35.6525325452735 +22 +-70.0735200000139 +32 +2059.02448332273 +13 +-35.6525325452735 +23 +-70.0735200000139 +33 +2059.02448332273 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-23.8222325793624 +20 +-70.0735200000139 +30 +2070.85475751098 +11 +-30.3199727157687 +21 +-116.789200000014 +31 +2065.52221183974 +12 +-30.3199727157687 +22 +-70.0735200000139 +32 +2065.52221183974 +13 +-30.3199727157687 +23 +-70.0735200000139 +33 +2065.52221183974 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3199727157687 +20 +-116.789200000014 +30 +2065.52221183974 +11 +-23.8222325793624 +21 +-70.0735200000139 +31 +2070.85475751098 +12 +-23.8222325793624 +22 +-116.789200000014 +32 +2070.85475751098 +13 +-23.8222325793624 +23 +-116.789200000014 +33 +2070.85475751098 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200387817157 +20 +-70.0735200000139 +30 +2004.88216083759 +11 +-35.652584452955 +21 +-116.789200000014 +31 +2011.379900974 +12 +-30.3200387817157 +22 +-116.789200000014 +32 +2004.88216083759 +13 +-30.3200387817157 +23 +-116.789200000014 +33 +2004.88216083759 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.652584452955 +20 +-116.789200000014 +30 +2011.379900974 +11 +-30.3200387817157 +21 +-70.0735200000139 +31 +2004.88216083759 +12 +-35.652584452955 +22 +-70.0735200000139 +32 +2011.379900974 +13 +-35.652584452955 +23 +-70.0735200000139 +33 +2011.379900974 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150205387958 +20 +-70.0735200000139 +30 +2018.79311690784 +11 +-42.0550728426191 +21 +-116.789200000014 +31 +2026.83692290816 +12 +-39.6150205387958 +22 +-116.789200000014 +32 +2018.79311690784 +13 +-39.6150205387958 +23 +-116.789200000014 +33 +2018.79311690784 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550728426191 +20 +-116.789200000014 +30 +2026.83692290816 +11 +-39.6150205387958 +21 +-70.0735200000139 +31 +2018.79311690784 +12 +-42.0550728426191 +22 +-70.0735200000139 +32 +2026.83692290816 +13 +-42.0550728426191 +23 +-70.0735200000139 +33 +2026.83692290816 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550728426191 +20 +-70.0735200000139 +30 +2026.83692290816 +11 +-42.878971522786 +21 +-116.789200000014 +31 +2035.20220002137 +12 +-42.0550728426191 +22 +-116.789200000014 +32 +2026.83692290816 +13 +-42.0550728426191 +23 +-116.789200000014 +33 +2026.83692290816 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-116.789200000014 +30 +2035.20220002137 +11 +-42.0550728426191 +21 +-70.0735200000139 +31 +2026.83692290816 +12 +-42.878971522786 +22 +-70.0735200000139 +32 +2035.20220002137 +13 +-42.878971522786 +23 +-70.0735200000139 +33 +2035.20220002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-30.3200552982032 +20 +-70.0735200000139 +30 +1649.9523941188 +11 +-35.652597429876 +21 +-116.789200000014 +31 +1656.45013716005 +12 +-30.3200552982032 +22 +-116.789200000014 +32 +1649.9523941188 +13 +-30.3200552982032 +23 +-116.789200000014 +33 +1649.9523941188 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.652597429876 +20 +-116.789200000014 +30 +1656.45013716005 +11 +-30.3200552982032 +21 +-70.0735200000139 +31 +1649.9523941188 +12 +-35.652597429876 +22 +-70.0735200000139 +32 +1656.45013716005 +13 +-35.652597429876 +23 +-70.0735200000139 +33 +1656.45013716005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3200454313182 +20 +-741.474143345189 +30 +2456.13171671889 +11 +23.8223110888135 +21 +-116.789200000014 +31 +2461.46426948223 +12 +23.8223110888134 +22 +-741.512569137265 +32 +2461.46426948223 +13 +23.8223110888134 +23 +-741.512569137265 +33 +2461.46426948223 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8223110888135 +20 +-116.789200000014 +30 +2461.46426948223 +11 +30.3200454313182 +21 +-741.474143345189 +31 +2456.13171671889 +12 +30.3200454313183 +22 +-116.789200000014 +32 +2456.13171671889 +13 +30.3200454313183 +23 +-116.789200000014 +33 +2456.13171671889 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +8.36522724084684 +20 +-116.789200000014 +30 +1638.21727291857 +11 +-5.03211860767294e-05 +21 +-70.0735200000139 +31 +1637.3933787953 +12 +-5.03211860767294e-05 +22 +-116.789200000014 +32 +1637.3933787953 +13 +-5.03211860767294e-05 +23 +-116.789200000014 +33 +1637.3933787953 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-5.03211860767294e-05 +20 +-70.0735200000139 +30 +1637.3933787953 +11 +8.36522724084684 +21 +-116.789200000014 +31 +1638.21727291857 +12 +8.36522724084684 +22 +-70.0735200000139 +32 +1638.21727291857 +13 +8.36522724084684 +23 +-70.0735200000139 +33 +1638.21727291857 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150026535464 +20 +0.0 +30 +2442.22077074152 +11 +-42.0550637268397 +21 +-70.0735200000139 +31 +2434.17696738005 +12 +-39.6150026535464 +22 +-70.0735200000139 +32 +2442.22077074152 +13 +-39.6150026535464 +23 +-70.0735200000139 +33 +2442.22077074152 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550637268397 +20 +-70.0735200000139 +30 +2434.17696738005 +11 +-39.6150026535464 +21 +0.0 +31 +2442.22077074152 +12 +-42.0550637268397 +22 +0.0 +32 +2434.17696738005 +13 +-42.0550637268397 +23 +0.0 +33 +2434.17696738005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +30.3199957039486 +20 +-116.789200000014 +30 +1649.95229501988 +11 +23.8222526626951 +21 +-70.0735200000139 +31 +1644.61975288821 +12 +23.8222526626951 +22 +-116.789200000014 +32 +1644.61975288821 +13 +23.8222526626951 +23 +-116.789200000014 +33 +1644.61975288821 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +23.8222526626951 +20 +-70.0735200000139 +30 +1644.61975288821 +11 +30.3199957039486 +21 +-116.789200000014 +31 +1649.95229501988 +12 +30.3199957039486 +22 +-70.0735200000139 +32 +1649.95229501988 +13 +30.3199957039486 +23 +-70.0735200000139 +33 +1649.95229501988 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +1.98565501612791e-05 +20 +-116.789200000014 +30 +2382.93269976479 +11 +-8.36525637937127 +21 +-857.431240712236 +31 +2383.75660756074 +12 +-8.36525637937127 +22 +-116.789200000014 +32 +2383.75660756074 +13 +-8.36525637937127 +23 +-116.789200000014 +33 +2383.75660756074 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-8.36525637937127 +20 +-857.431240712236 +30 +2383.75660756074 +11 +1.98565501612791e-05 +21 +-116.789200000014 +31 +2382.93269976479 +12 +1.98565501612791e-05 +22 +-858.151437401893 +32 +2382.93269976479 +13 +1.98565501612791e-05 +23 +-858.151437401893 +33 +2382.93269976479 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.8790112358864 +20 +0.0 +30 +2425.81169114413 +11 +42.05510343994 +21 +-70.0735200000139 +31 +2434.17696738005 +12 +42.8790112358864 +22 +-70.0735200000139 +32 +2425.81169114413 +13 +42.8790112358864 +23 +-70.0735200000139 +33 +2425.81169114413 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.05510343994 +20 +-70.0735200000139 +30 +2434.17696738005 +11 +42.8790112358864 +21 +0.0 +31 +2425.81169114413 +12 +42.05510343994 +22 +0.0 +32 +2434.17696738005 +13 +42.05510343994 +23 +0.0 +33 +2434.17696738005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +42.05510343994 +20 +0.0 +30 +2434.17696738005 +11 +39.6150423666467 +21 +-70.0735200000139 +31 +2442.22077074152 +12 +42.05510343994 +22 +-70.0735200000139 +32 +2434.17696738005 +13 +42.05510343994 +23 +-70.0735200000139 +33 +2434.17696738005 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +39.6150423666467 +20 +-70.0735200000139 +30 +2442.22077074152 +11 +42.05510343994 +21 +0.0 +31 +2434.17696738005 +12 +39.6150423666467 +22 +0.0 +32 +2442.22077074152 +13 +39.6150423666467 +23 +0.0 +33 +2442.22077074152 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-35.652584452955 +20 +-70.0735200000139 +30 +2011.379900974 +11 +-39.6150205387958 +21 +-116.789200000014 +31 +2018.79311690784 +12 +-35.652584452955 +22 +-116.789200000014 +32 +2011.379900974 +13 +-35.652584452955 +23 +-116.789200000014 +33 +2011.379900974 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-39.6150205387958 +20 +-116.789200000014 +30 +2018.79311690784 +11 +-35.652584452955 +21 +-70.0735200000139 +31 +2011.379900974 +12 +-39.6150205387958 +22 +-70.0735200000139 +32 +2018.79311690784 +13 +-39.6150205387958 +23 +-70.0735200000139 +33 +2018.79311690784 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.878971522786 +20 +-70.0735200000139 +30 +2035.20220002137 +11 +-42.0550546150653 +21 +-116.789200000014 +31 +2043.56747533934 +12 +-42.878971522786 +22 +-116.789200000014 +32 +2035.20220002137 +13 +-42.878971522786 +23 +-116.789200000014 +33 +2035.20220002137 +70 +1 + 0 +3DFACE + 8 +gearbox_half +10 +-42.0550546150653 +20 +-116.789200000014 +30 +2043.56747533934 +11 +-42.878971522786 +21 +-70.0735200000139 +31 +2035.20220002137 +12 +-42.0550546150653 +22 +-70.0735200000139 +32 +2043.56747533934 +13 +-42.0550546150653 +23 +-70.0735200000139 +33 +2043.56747533934 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-899.612557411553 +20 +-178.944063519201 +30 +1773.56823006635 +11 +-944.844671731792 +21 +0.0 +31 +1835.6354447734 +12 +-926.689746301964 +22 +-184.330051263378 +32 +1835.6354447734 +13 +-926.689746301964 +23 +-184.330051263378 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-944.844671731792 +20 +0.0 +30 +1835.6354447734 +11 +-899.612557411553 +21 +-178.944063519201 +31 +1773.56823006635 +12 +-917.237009349992 +22 +0.0 +32 +1773.56823006635 +13 +-917.237009349992 +23 +0.0 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-964.850983209364 +20 +0.0 +30 +2169.85154878419 +11 +-926.689746301964 +21 +-184.330051263378 +31 +2234.76895526921 +12 +-946.311642114328 +22 +-188.233089011893 +32 +2169.85154878419 +13 +-946.311642114328 +23 +-188.233089011893 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-926.689746301964 +20 +-184.330051263378 +30 +2234.76895526921 +11 +-964.850983209364 +21 +0.0 +31 +2169.85154878419 +12 +-944.844671731792 +22 +0.0 +32 +2234.76895526921 +13 +-944.844671731792 +23 +0.0 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-958.198006960111 +20 +-190.597433982906 +30 +1967.39330582966 +11 +-981.029283605455 +21 +-1.80477854883065e-13 +31 +2035.2022000213 +12 +-962.179081004757 +22 +-191.38931884584 +32 +2035.2022000213 +13 +-962.179081004757 +23 +-191.38931884584 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-981.029283605455 +20 +-1.80477854883065e-13 +30 +2035.2022000213 +11 +-958.198006960111 +21 +-190.597433982906 +31 +1967.39330582966 +12 +-976.970215709362 +22 +-1.80477854883065e-13 +32 +1967.39330582966 +13 +-976.970215709362 +23 +-1.80477854883065e-13 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-776.88819383121 +20 +-321.797626332425 +30 +1661.47676002131 +11 +-865.466789057043 +21 +-172.152047899808 +31 +1715.23764468454 +12 +-815.251888924487 +22 +-337.688389142806 +32 +1715.23764468454 +13 +-815.251888924487 +23 +-337.688389142806 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-865.466789057043 +20 +-172.152047899808 +30 +1715.23764468454 +11 +-776.88819383121 +21 +-321.797626332425 +31 +1661.47676002131 +12 +-824.740107573921 +22 +-164.051007270482 +32 +1661.47676002131 +13 +-824.740107573921 +23 +-164.051007270482 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-668.106074549528 +20 +-668.106074549528 +30 +1835.6354447734 +11 +-802.244272938819 +21 +-536.042485570818 +31 +1900.55285125842 +12 +-682.252673061849 +22 +-682.252673061849 +32 +1900.55285125842 +13 +-682.252673061849 +23 +-682.252673061849 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-802.244272938819 +20 +-536.042485570818 +30 +1900.55285125842 +11 +-668.106074549528 +21 +-668.106074549528 +31 +1835.6354447734 +12 +-785.609632890959 +22 +-524.927574441361 +32 +1835.6354447734 +13 +-785.609632890959 +23 +-524.927574441361 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-721.176029454062 +20 +-143.450831316169 +30 +680.911023534629 +11 +-756.121025443459 +21 +0.0 +31 +741.194313252463 +12 +-741.592371958341 +22 +-147.511894336929 +32 +741.194313252463 +13 +-741.592371958341 +23 +-147.511894336929 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-756.121025443459 +20 +0.0 +30 +741.194313252463 +11 +-721.176029454062 +21 +-143.450831316169 +31 +680.911023534629 +12 +-735.304703143143 +22 +0.0 +32 +680.911023534629 +13 +-735.304703143143 +23 +0.0 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-926.689746301964 +20 +-184.330051263378 +30 +2234.76895526921 +11 +-847.416499400322 +21 +-351.011407030345 +31 +2296.83616997626 +12 +-872.922653615348 +22 +-361.576402030189 +32 +2234.76895526921 +13 +-872.922653615348 +23 +-361.576402030189 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-847.416499400322 +20 +-351.011407030345 +30 +2296.83616997626 +11 +-926.689746301964 +21 +-184.330051263378 +31 +2234.76895526921 +12 +-899.612557411553 +22 +-178.9440635192 +32 +2296.83616997626 +13 +-899.612557411553 +23 +-178.9440635192 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-172.152047899808 +20 +-865.466789057043 +30 +2355.16675535807 +11 +0.0 +21 +-917.237009349992 +31 +2296.83616997626 +12 +-178.9440635192 +22 +-899.612557411553 +32 +2296.83616997626 +13 +-178.9440635192 +23 +-899.612557411553 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-917.237009349992 +30 +2296.83616997626 +11 +-172.152047899808 +21 +-865.466789057043 +31 +2355.16675535807 +12 +0.0 +22 +-882.422285845505 +32 +2355.16675535807 +13 +0.0 +23 +-882.422285845505 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-429.428666054072 +20 +-429.428666054072 +30 +1287.75132002131 +11 +-389.307620352121 +21 +-582.640028068573 +31 +1100.8886000213 +12 +-495.494614285554 +22 +-495.494614285554 +32 +1100.8886000213 +13 +-495.494614285554 +23 +-495.494614285554 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-389.307620352121 +20 +-582.640028068573 +30 +1100.8886000213 +11 +-429.428666054072 +21 +-429.428666054072 +31 +1287.75132002131 +12 +-337.399937905583 +22 +-504.954691392473 +32 +1287.75132002131 +13 +-337.399937905583 +23 +-504.954691392473 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-188.233089011893 +20 +-946.311642114328 +30 +2169.85154878419 +11 +0.0 +21 +-976.970215709361 +31 +2103.01109421295 +12 +-190.597433982906 +22 +-958.19800696011 +32 +2103.01109421295 +13 +-190.597433982906 +23 +-958.19800696011 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-976.970215709361 +30 +2103.01109421295 +11 +-188.233089011893 +21 +-946.311642114328 +31 +2169.85154878419 +12 +0.0 +22 +-964.850983209363 +32 +2169.85154878419 +13 +0.0 +23 +-964.850983209363 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-184.330051263378 +20 +-926.689746301964 +30 +2234.76895526921 +11 +0.0 +21 +-964.850983209363 +31 +2169.85154878419 +12 +-188.233089011893 +22 +-946.311642114328 +32 +2169.85154878419 +13 +-188.233089011893 +23 +-946.311642114328 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-964.850983209363 +30 +2169.85154878419 +11 +-184.330051263378 +21 +-926.689746301964 +31 +2234.76895526921 +12 +0.0 +22 +-944.844671731792 +32 +2234.76895526921 +13 +0.0 +23 +-944.844671731792 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-178.9440635192 +20 +-899.612557411553 +30 +2296.83616997626 +11 +0.0 +21 +-944.844671731792 +31 +2234.76895526921 +12 +-184.330051263378 +22 +-926.689746301964 +32 +2234.76895526921 +13 +-184.330051263378 +23 +-926.689746301964 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-944.844671731792 +30 +2234.76895526921 +11 +-178.9440635192 +21 +-899.612557411553 +31 +2296.83616997626 +12 +0.0 +22 +-917.237009349992 +32 +2296.83616997626 +13 +0.0 +23 +-917.237009349992 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-178.9440635192 +20 +-899.612557411553 +30 +1773.56823006635 +11 +0.0 +21 +-882.422285845505 +31 +1715.23764468454 +12 +-172.152047899808 +22 +-865.466789057044 +32 +1715.23764468454 +13 +-172.152047899808 +23 +-865.466789057044 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-882.422285845505 +30 +1715.23764468454 +11 +-178.9440635192 +21 +-899.612557411553 +31 +1773.56823006635 +12 +0.0 +22 +-917.237009349992 +32 +1773.56823006635 +13 +0.0 +23 +-917.237009349992 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-682.252673061849 +20 +-682.252673061849 +30 +1900.55285125842 +11 +-524.927574441361 +21 +-785.609632890959 +31 +1835.6354447734 +12 +-668.106074549528 +22 +-668.106074549528 +32 +1835.6354447734 +13 +-668.106074549528 +23 +-668.106074549528 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-524.927574441361 +20 +-785.609632890959 +30 +1835.6354447734 +11 +-682.252673061849 +21 +-682.252673061849 +31 +1900.55285125842 +12 +-536.042485570819 +22 +-802.244272938819 +32 +1900.55285125842 +13 +-536.042485570819 +23 +-802.244272938819 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-693.692458979998 +20 +-693.692458979998 +30 +2035.2022000213 +11 +-542.775570394861 +21 +-812.321046486997 +31 +1967.39330582966 +12 +-690.822264545374 +22 +-690.822264545374 +32 +1967.39330582966 +13 +-690.822264545374 +23 +-690.822264545374 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-542.775570394861 +20 +-812.321046486997 +30 +1967.39330582966 +11 +-693.692458979998 +21 +-693.692458979998 +31 +2035.2022000213 +12 +-545.030667691736 +22 +-815.696038096871 +32 +2035.2022000213 +13 +-545.030667691736 +23 +-815.696038096871 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.554572920556 +20 +-286.037069662455 +30 +1287.75132002131 +11 +-543.797359730523 +21 +-363.353779128852 +31 +1474.6140400213 +12 +-621.482696406623 +22 +-415.26146157539 +32 +1287.75132002131 +13 +-621.482696406623 +23 +-415.26146157539 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-543.797359730523 +20 +-363.353779128852 +30 +1474.6140400213 +11 +-690.554572920556 +21 +-286.037069662455 +31 +1287.75132002131 +12 +-604.235251721863 +22 +-250.282436127117 +32 +1474.6140400213 +13 +-604.235251721863 +23 +-250.282436127117 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-747.450883605455 +20 +0.0 +30 +2408.9276400213 +11 +-824.740107573921 +21 +-164.051007270482 +31 +2408.9276400213 +12 +-840.897721502147 +22 +0.0 +32 +2408.9276400213 +13 +-840.897721502147 +23 +0.0 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-824.740107573921 +20 +-164.051007270482 +30 +2408.9276400213 +11 +-747.450883605455 +21 +0.0 +31 +2408.9276400213 +12 +-776.88819383121 +22 +-321.797626332425 +32 +2408.9276400213 +13 +-776.88819383121 +23 +-321.797626332425 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-776.88819383121 +20 +-321.797626332425 +30 +2408.9276400213 +11 +-747.450883605455 +21 +0.0 +31 +2408.9276400213 +12 +-733.088824464619 +22 +-145.820433573828 +32 +2408.9276400213 +13 +-733.088824464619 +23 +-145.820433573828 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-776.88819383121 +20 +-321.797626332425 +30 +2408.9276400213 +11 +-733.088824464619 +21 +-145.820433573828 +31 +2408.9276400213 +12 +-699.180902483484 +22 +-467.1777430806 +32 +2408.9276400213 +13 +-699.180902483484 +23 +-467.1777430806 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-699.180902483484 +20 +-467.1777430806 +30 +2408.9276400213 +11 +-733.088824464619 +21 +-145.820433573828 +31 +2408.9276400213 +12 +-690.554572920556 +22 +-286.037069662455 +32 +2408.9276400213 +13 +-690.554572920556 +23 +-286.037069662455 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-699.180902483484 +20 +-467.1777430806 +30 +2408.9276400213 +11 +-690.554572920556 +21 +-286.037069662455 +31 +2408.9276400213 +12 +-594.604481158485 +22 +-594.604481158485 +32 +2408.9276400213 +13 +-594.604481158485 +23 +-594.604481158485 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-594.604481158485 +20 +-594.604481158485 +30 +2408.9276400213 +11 +-690.554572920556 +21 +-286.037069662455 +31 +2408.9276400213 +12 +-621.482696406623 +22 +-415.26146157539 +32 +2408.9276400213 +13 +-621.482696406623 +23 +-415.26146157539 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-594.604481158485 +20 +-594.604481158485 +30 +2408.9276400213 +11 +-621.482696406623 +21 +-415.26146157539 +31 +2408.9276400213 +12 +-528.527588401294 +22 +-528.527588401294 +32 +2408.9276400213 +13 +-528.527588401294 +23 +-528.527588401294 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-594.604481158485 +20 +-594.604481158485 +30 +2408.9276400213 +11 +-528.527588401294 +21 +-528.527588401294 +31 +2408.9276400213 +12 +-467.1777430806 +22 +-699.180902483483 +32 +2408.9276400213 +13 +-467.1777430806 +23 +-699.180902483483 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-467.1777430806 +20 +-699.180902483483 +30 +2408.9276400213 +11 +-528.527588401294 +21 +-528.527588401294 +31 +2408.9276400213 +12 +-415.26146157539 +22 +-621.482696406623 +32 +2408.9276400213 +13 +-415.26146157539 +23 +-621.482696406623 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-467.1777430806 +20 +-699.180902483483 +30 +2408.9276400213 +11 +-415.26146157539 +21 +-621.482696406623 +31 +2408.9276400213 +12 +-321.797626332425 +22 +-776.88819383121 +32 +2408.9276400213 +13 +-321.797626332425 +23 +-776.88819383121 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-321.797626332425 +20 +-776.88819383121 +30 +2408.9276400213 +11 +-415.26146157539 +21 +-621.482696406623 +31 +2408.9276400213 +12 +-286.037069662455 +22 +-690.554572920556 +32 +2408.9276400213 +13 +-286.037069662455 +23 +-690.554572920556 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-321.797626332425 +20 +-776.88819383121 +30 +2408.9276400213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +2408.9276400213 +12 +-164.051007270482 +22 +-824.740107573921 +32 +2408.9276400213 +13 +-164.051007270482 +23 +-824.740107573921 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-164.051007270482 +20 +-824.740107573921 +30 +2408.9276400213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +2408.9276400213 +12 +-145.820433573828 +22 +-733.088824464619 +32 +2408.9276400213 +13 +-145.820433573828 +23 +-733.088824464619 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-164.051007270482 +20 +-824.740107573921 +30 +2408.9276400213 +11 +-145.820433573828 +21 +-733.088824464619 +31 +2408.9276400213 +12 +0.0 +22 +-840.897721502147 +32 +2408.9276400213 +13 +0.0 +23 +-840.897721502147 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-840.897721502147 +30 +2408.9276400213 +11 +-145.820433573828 +21 +-733.088824464619 +31 +2408.9276400213 +12 +0.0 +22 +-747.450883605455 +32 +2408.9276400213 +13 +0.0 +23 +-747.450883605455 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-840.897721502147 +30 +2408.9276400213 +11 +0.0 +21 +-747.450883605455 +31 +2408.9276400213 +12 +145.820433573828 +22 +-733.088824464619 +32 +2408.9276400213 +13 +145.820433573828 +23 +-733.088824464619 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-840.897721502147 +30 +2408.9276400213 +11 +145.820433573828 +21 +-733.088824464619 +31 +2408.9276400213 +12 +164.051007270482 +22 +-824.740107573921 +32 +2408.9276400213 +13 +164.051007270482 +23 +-824.740107573921 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +164.051007270482 +20 +-824.740107573921 +30 +2408.9276400213 +11 +145.820433573828 +21 +-733.088824464619 +31 +2408.9276400213 +12 +286.037069662455 +22 +-690.554572920556 +32 +2408.9276400213 +13 +286.037069662455 +23 +-690.554572920556 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +164.051007270482 +20 +-824.740107573921 +30 +2408.9276400213 +11 +286.037069662455 +21 +-690.554572920556 +31 +2408.9276400213 +12 +321.797626332425 +22 +-776.88819383121 +32 +2408.9276400213 +13 +321.797626332425 +23 +-776.88819383121 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +321.797626332425 +20 +-776.88819383121 +30 +2408.9276400213 +11 +286.037069662455 +21 +-690.554572920556 +31 +2408.9276400213 +12 +415.26146157539 +22 +-621.482696406623 +32 +2408.9276400213 +13 +415.26146157539 +23 +-621.482696406623 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +321.797626332425 +20 +-776.88819383121 +30 +2408.9276400213 +11 +415.26146157539 +21 +-621.482696406623 +31 +2408.9276400213 +12 +467.1777430806 +22 +-699.180902483484 +32 +2408.9276400213 +13 +467.1777430806 +23 +-699.180902483484 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +467.1777430806 +20 +-699.180902483484 +30 +2408.9276400213 +11 +415.26146157539 +21 +-621.482696406623 +31 +2408.9276400213 +12 +528.527588401294 +22 +-528.527588401294 +32 +2408.9276400213 +13 +528.527588401294 +23 +-528.527588401294 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +467.1777430806 +20 +-699.180902483484 +30 +2408.9276400213 +11 +528.527588401294 +21 +-528.527588401294 +31 +2408.9276400213 +12 +594.604481158485 +22 +-594.604481158485 +32 +2408.9276400213 +13 +594.604481158485 +23 +-594.604481158485 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +594.604481158485 +20 +-594.604481158485 +30 +2408.9276400213 +11 +528.527588401294 +21 +-528.527588401294 +31 +2408.9276400213 +12 +621.482696406623 +22 +-415.26146157539 +32 +2408.9276400213 +13 +621.482696406623 +23 +-415.26146157539 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +594.604481158485 +20 +-594.604481158485 +30 +2408.9276400213 +11 +621.482696406623 +21 +-415.26146157539 +31 +2408.9276400213 +12 +699.180902483483 +22 +-467.1777430806 +32 +2408.9276400213 +13 +699.180902483483 +23 +-467.1777430806 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +699.180902483483 +20 +-467.1777430806 +30 +2408.9276400213 +11 +621.482696406623 +21 +-415.26146157539 +31 +2408.9276400213 +12 +690.554572920556 +22 +-286.037069662455 +32 +2408.9276400213 +13 +690.554572920556 +23 +-286.037069662455 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +699.180902483483 +20 +-467.1777430806 +30 +2408.9276400213 +11 +690.554572920556 +21 +-286.037069662455 +31 +2408.9276400213 +12 +733.088824464619 +22 +-145.820433573828 +32 +2408.9276400213 +13 +733.088824464619 +23 +-145.820433573828 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +699.180902483483 +20 +-467.1777430806 +30 +2408.9276400213 +11 +733.088824464619 +21 +-145.820433573828 +31 +2408.9276400213 +12 +776.88819383121 +22 +-321.797626332425 +32 +2408.9276400213 +13 +776.88819383121 +23 +-321.797626332425 +33 +2408.9276400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +776.88819383121 +20 +-321.797626332425 +30 +2408.9276400213 +11 +733.088824464619 +21 +-145.820433573828 +31 +2408.9276400213 +12 +747.450883605455 +22 +-1.80477854883065e-13 +32 +2408.9276400213 +13 +747.450883605455 +23 +-1.80477854883065e-13 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +776.88819383121 +20 +-321.797626332425 +30 +2408.9276400213 +11 +747.450883605455 +21 +-1.80477854883065e-13 +31 +2408.9276400213 +12 +840.897721502147 +22 +-1.80477854883065e-13 +32 +2408.9276400213 +13 +840.897721502147 +23 +-1.80477854883065e-13 +33 +2408.9276400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +776.88819383121 +20 +-321.797626332425 +30 +2408.9276400213 +11 +840.897721502147 +21 +-1.80477854883065e-13 +31 +2408.9276400213 +12 +824.740107573921 +22 +-164.051007270483 +32 +2408.9276400213 +13 +824.740107573921 +23 +-164.051007270483 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-824.740107573921 +20 +-164.051007270482 +30 +1661.47676002131 +11 +-700.735203605456 +21 +0.0 +31 +1661.47676002131 +12 +-840.897721502147 +22 +0.0 +32 +1661.47676002131 +13 +-840.897721502147 +23 +0.0 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-700.735203605456 +20 +0.0 +30 +1661.47676002131 +11 +-824.740107573921 +21 +-164.051007270482 +31 +1661.47676002131 +12 +-776.88819383121 +22 +-321.797626332425 +32 +1661.47676002131 +13 +-776.88819383121 +23 +-321.797626332425 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-700.735203605456 +20 +0.0 +30 +1661.47676002131 +11 +-776.88819383121 +21 +-321.797626332425 +31 +1661.47676002131 +12 +-699.180902483484 +22 +-467.1777430806 +32 +1661.47676002131 +13 +-699.180902483484 +23 +-467.1777430806 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-700.735203605456 +20 +0.0 +30 +1661.47676002131 +11 +-699.180902483484 +21 +-467.1777430806 +31 +1661.47676002131 +12 +-687.270773156591 +22 +-136.706656519425 +32 +1661.47676002131 +13 +-687.270773156591 +23 +-136.706656519425 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-687.270773156591 +20 +-136.706656519425 +30 +1661.47676002131 +11 +-699.180902483484 +21 +-467.1777430806 +31 +1661.47676002131 +12 +-594.604481158485 +22 +-594.604481158485 +32 +1661.47676002131 +13 +-594.604481158485 +23 +-594.604481158485 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-687.270773156591 +20 +-136.706656519425 +30 +1661.47676002131 +11 +-594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +-647.39491232121 +22 +-268.159752894786 +32 +1661.47676002131 +13 +-647.39491232121 +23 +-268.159752894786 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-647.39491232121 +20 +-268.159752894786 +30 +1661.47676002131 +11 +-594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +-582.640028068573 +22 +-389.307620352121 +32 +1661.47676002131 +13 +-582.640028068573 +23 +-389.307620352121 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-582.640028068573 +20 +-389.307620352121 +30 +1661.47676002131 +11 +-594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +-467.1777430806 +22 +-699.180902483483 +32 +1661.47676002131 +13 +-467.1777430806 +23 +-699.180902483483 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-582.640028068573 +20 +-389.307620352121 +30 +1661.47676002131 +11 +-467.1777430806 +21 +-699.180902483483 +31 +1661.47676002131 +12 +-495.494614285554 +22 +-495.494614285554 +32 +1661.47676002131 +13 +-495.494614285554 +23 +-495.494614285554 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-495.494614285554 +20 +-495.494614285554 +30 +1661.47676002131 +11 +-467.1777430806 +21 +-699.180902483483 +31 +1661.47676002131 +12 +-389.307620352121 +22 +-582.640028068573 +32 +1661.47676002131 +13 +-389.307620352121 +23 +-582.640028068573 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-389.307620352121 +20 +-582.640028068573 +30 +1661.47676002131 +11 +-467.1777430806 +21 +-699.180902483483 +31 +1661.47676002131 +12 +-321.797626332425 +22 +-776.88819383121 +32 +1661.47676002131 +13 +-321.797626332425 +23 +-776.88819383121 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-389.307620352121 +20 +-582.640028068573 +30 +1661.47676002131 +11 +-321.797626332425 +21 +-776.88819383121 +31 +1661.47676002131 +12 +-268.159752894786 +22 +-647.39491232121 +32 +1661.47676002131 +13 +-268.159752894786 +23 +-647.39491232121 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-268.159752894786 +20 +-647.39491232121 +30 +1661.47676002131 +11 +-321.797626332425 +21 +-776.88819383121 +31 +1661.47676002131 +12 +-164.051007270482 +22 +-824.740107573921 +32 +1661.47676002131 +13 +-164.051007270482 +23 +-824.740107573921 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-268.159752894786 +20 +-647.39491232121 +30 +1661.47676002131 +11 +-164.051007270482 +21 +-824.740107573921 +31 +1661.47676002131 +12 +-136.706656519425 +22 +-687.270773156591 +32 +1661.47676002131 +13 +-136.706656519425 +23 +-687.270773156591 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-136.706656519425 +20 +-687.270773156591 +30 +1661.47676002131 +11 +-164.051007270482 +21 +-824.740107573921 +31 +1661.47676002131 +12 +0.0 +22 +-840.897721502147 +32 +1661.47676002131 +13 +0.0 +23 +-840.897721502147 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-136.706656519425 +20 +-687.270773156591 +30 +1661.47676002131 +11 +0.0 +21 +-840.897721502147 +31 +1661.47676002131 +12 +0.0 +22 +-700.735203605455 +32 +1661.47676002131 +13 +0.0 +23 +-700.735203605455 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-700.735203605455 +30 +1661.47676002131 +11 +0.0 +21 +-840.897721502147 +31 +1661.47676002131 +12 +164.051007270482 +22 +-824.740107573921 +32 +1661.47676002131 +13 +164.051007270482 +23 +-824.740107573921 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-700.735203605455 +30 +1661.47676002131 +11 +164.051007270482 +21 +-824.740107573921 +31 +1661.47676002131 +12 +136.706656519425 +22 +-687.270773156591 +32 +1661.47676002131 +13 +136.706656519425 +23 +-687.270773156591 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +136.706656519425 +20 +-687.270773156591 +30 +1661.47676002131 +11 +164.051007270482 +21 +-824.740107573921 +31 +1661.47676002131 +12 +268.159752894786 +22 +-647.39491232121 +32 +1661.47676002131 +13 +268.159752894786 +23 +-647.39491232121 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +268.159752894786 +20 +-647.39491232121 +30 +1661.47676002131 +11 +164.051007270482 +21 +-824.740107573921 +31 +1661.47676002131 +12 +321.797626332425 +22 +-776.88819383121 +32 +1661.47676002131 +13 +321.797626332425 +23 +-776.88819383121 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +268.159752894786 +20 +-647.39491232121 +30 +1661.47676002131 +11 +321.797626332425 +21 +-776.88819383121 +31 +1661.47676002131 +12 +389.307620352121 +22 +-582.640028068573 +32 +1661.47676002131 +13 +389.307620352121 +23 +-582.640028068573 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +389.307620352121 +20 +-582.640028068573 +30 +1661.47676002131 +11 +321.797626332425 +21 +-776.88819383121 +31 +1661.47676002131 +12 +467.1777430806 +22 +-699.180902483484 +32 +1661.47676002131 +13 +467.1777430806 +23 +-699.180902483484 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +389.307620352121 +20 +-582.640028068573 +30 +1661.47676002131 +11 +467.1777430806 +21 +-699.180902483484 +31 +1661.47676002131 +12 +495.494614285554 +22 +-495.494614285554 +32 +1661.47676002131 +13 +495.494614285554 +23 +-495.494614285554 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +495.494614285554 +20 +-495.494614285554 +30 +1661.47676002131 +11 +467.1777430806 +21 +-699.180902483484 +31 +1661.47676002131 +12 +594.604481158485 +22 +-594.604481158485 +32 +1661.47676002131 +13 +594.604481158485 +23 +-594.604481158485 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +495.494614285554 +20 +-495.494614285554 +30 +1661.47676002131 +11 +594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +582.640028068573 +22 +-389.307620352121 +32 +1661.47676002131 +13 +582.640028068573 +23 +-389.307620352121 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +582.640028068573 +20 +-389.307620352121 +30 +1661.47676002131 +11 +594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +647.39491232121 +22 +-268.159752894786 +32 +1661.47676002131 +13 +647.39491232121 +23 +-268.159752894786 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +647.39491232121 +20 +-268.159752894786 +30 +1661.47676002131 +11 +594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +699.180902483483 +22 +-467.1777430806 +32 +1661.47676002131 +13 +699.180902483483 +23 +-467.1777430806 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +647.39491232121 +20 +-268.159752894786 +30 +1661.47676002131 +11 +699.180902483483 +21 +-467.1777430806 +31 +1661.47676002131 +12 +687.270773156591 +22 +-136.706656519426 +32 +1661.47676002131 +13 +687.270773156591 +23 +-136.706656519426 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +687.270773156591 +20 +-136.706656519426 +30 +1661.47676002131 +11 +699.180902483483 +21 +-467.1777430806 +31 +1661.47676002131 +12 +700.735203605455 +22 +-1.80477854883065e-13 +32 +1661.47676002131 +13 +700.735203605455 +23 +-1.80477854883065e-13 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +700.735203605455 +20 +-1.80477854883065e-13 +30 +1661.47676002131 +11 +699.180902483483 +21 +-467.1777430806 +31 +1661.47676002131 +12 +776.88819383121 +22 +-321.797626332425 +32 +1661.47676002131 +13 +776.88819383121 +23 +-321.797626332425 +33 +1661.47676002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +700.735203605455 +20 +-1.80477854883065e-13 +30 +1661.47676002131 +11 +776.88819383121 +21 +-321.797626332425 +31 +1661.47676002131 +12 +840.897721502147 +22 +-1.80477854883065e-13 +32 +1661.47676002131 +13 +840.897721502147 +23 +-1.80477854883065e-13 +33 +1661.47676002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +840.897721502147 +20 +-1.80477854883065e-13 +30 +1661.47676002131 +11 +776.88819383121 +21 +-321.797626332425 +31 +1661.47676002131 +12 +824.740107573921 +22 +-164.051007270483 +32 +1661.47676002131 +13 +824.740107573921 +23 +-164.051007270483 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-778.906875772646 +20 +-154.93421062823 +30 +1474.6140400213 +11 +-654.019523605455 +21 +0.0 +31 +1474.6140400213 +12 +-794.166563605455 +22 +0.0 +32 +1474.6140400213 +13 +-794.166563605455 +23 +0.0 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-654.019523605455 +20 +0.0 +30 +1474.6140400213 +11 +-778.906875772646 +21 +-154.93421062823 +31 +1474.6140400213 +12 +-733.714233519903 +22 +-303.914386430124 +32 +1474.6140400213 +13 +-733.714233519903 +23 +-303.914386430124 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-654.019523605455 +20 +0.0 +30 +1474.6140400213 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1474.6140400213 +12 +-660.325364744673 +22 +-441.215302798659 +32 +1474.6140400213 +13 +-660.325364744673 +23 +-441.215302798659 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-654.019523605455 +20 +0.0 +30 +1474.6140400213 +11 +-660.325364744673 +21 +-441.215302798659 +31 +1474.6140400213 +12 +-641.452721848564 +22 +-127.592879465023 +32 +1474.6140400213 +13 +-641.452721848564 +23 +-127.592879465023 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-641.452721848564 +20 +-127.592879465023 +30 +1474.6140400213 +11 +-660.325364744673 +21 +-441.215302798659 +31 +1474.6140400213 +12 +-561.560562517035 +22 +-561.560562517035 +32 +1474.6140400213 +13 +-561.560562517035 +23 +-561.560562517035 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-641.452721848564 +20 +-127.592879465023 +30 +1474.6140400213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1474.6140400213 +12 +-604.235251721863 +22 +-250.282436127117 +32 +1474.6140400213 +13 +-604.235251721863 +23 +-250.282436127117 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-604.235251721863 +20 +-250.282436127117 +30 +1474.6140400213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1474.6140400213 +12 +-543.797359730523 +22 +-363.353779128852 +32 +1474.6140400213 +13 +-543.797359730523 +23 +-363.353779128852 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-543.797359730523 +20 +-363.353779128852 +30 +1474.6140400213 +11 +-561.560562517035 +21 +-561.560562517035 +31 +1474.6140400213 +12 +-441.21530279866 +22 +-660.325364744672 +32 +1474.6140400213 +13 +-441.21530279866 +23 +-660.325364744672 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-543.797359730523 +20 +-363.353779128852 +30 +1474.6140400213 +11 +-441.21530279866 +21 +-660.325364744672 +31 +1474.6140400213 +12 +-462.461640169813 +22 +-462.461640169813 +32 +1474.6140400213 +13 +-462.461640169813 +23 +-462.461640169813 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-462.461640169813 +20 +-462.461640169813 +30 +1474.6140400213 +11 +-441.21530279866 +21 +-660.325364744672 +31 +1474.6140400213 +12 +-363.353779128852 +22 +-543.797359730523 +32 +1474.6140400213 +13 +-363.353779128852 +23 +-543.797359730523 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-363.353779128852 +20 +-543.797359730523 +30 +1474.6140400213 +11 +-441.21530279866 +21 +-660.325364744672 +31 +1474.6140400213 +12 +-303.914386430124 +22 +-733.714233519903 +32 +1474.6140400213 +13 +-303.914386430124 +23 +-733.714233519903 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-363.353779128852 +20 +-543.797359730523 +30 +1474.6140400213 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1474.6140400213 +12 +-250.282436127117 +22 +-604.235251721863 +32 +1474.6140400213 +13 +-250.282436127117 +23 +-604.235251721863 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-250.282436127117 +20 +-604.235251721863 +30 +1474.6140400213 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1474.6140400213 +12 +-154.93421062823 +22 +-778.906875772646 +32 +1474.6140400213 +13 +-154.93421062823 +23 +-778.906875772646 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-250.282436127117 +20 +-604.235251721863 +30 +1474.6140400213 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1474.6140400213 +12 +-127.592879465023 +22 +-641.452721848564 +32 +1474.6140400213 +13 +-127.592879465023 +23 +-641.452721848564 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-127.592879465023 +20 +-641.452721848564 +30 +1474.6140400213 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1474.6140400213 +12 +0.0 +22 +-794.166563605455 +32 +1474.6140400213 +13 +0.0 +23 +-794.166563605455 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-127.592879465023 +20 +-641.452721848564 +30 +1474.6140400213 +11 +0.0 +21 +-794.166563605455 +31 +1474.6140400213 +12 +0.0 +22 +-654.019523605455 +32 +1474.6140400213 +13 +0.0 +23 +-654.019523605455 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-654.019523605455 +30 +1474.6140400213 +11 +0.0 +21 +-794.166563605455 +31 +1474.6140400213 +12 +154.93421062823 +22 +-778.906875772646 +32 +1474.6140400213 +13 +154.93421062823 +23 +-778.906875772646 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-654.019523605455 +30 +1474.6140400213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1474.6140400213 +12 +127.592879465023 +22 +-641.452721848564 +32 +1474.6140400213 +13 +127.592879465023 +23 +-641.452721848564 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +127.592879465023 +20 +-641.452721848564 +30 +1474.6140400213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1474.6140400213 +12 +250.282436127116 +22 +-604.235251721863 +32 +1474.6140400213 +13 +250.282436127116 +23 +-604.235251721863 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +250.282436127116 +20 +-604.235251721863 +30 +1474.6140400213 +11 +154.93421062823 +21 +-778.906875772646 +31 +1474.6140400213 +12 +303.914386430124 +22 +-733.714233519903 +32 +1474.6140400213 +13 +303.914386430124 +23 +-733.714233519903 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +250.282436127116 +20 +-604.235251721863 +30 +1474.6140400213 +11 +303.914386430124 +21 +-733.714233519903 +31 +1474.6140400213 +12 +363.353779128852 +22 +-543.797359730523 +32 +1474.6140400213 +13 +363.353779128852 +23 +-543.797359730523 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +363.353779128852 +20 +-543.797359730523 +30 +1474.6140400213 +11 +303.914386430124 +21 +-733.714233519903 +31 +1474.6140400213 +12 +441.215302798659 +22 +-660.325364744673 +32 +1474.6140400213 +13 +441.215302798659 +23 +-660.325364744673 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +363.353779128852 +20 +-543.797359730523 +30 +1474.6140400213 +11 +441.215302798659 +21 +-660.325364744673 +31 +1474.6140400213 +12 +462.461640169813 +22 +-462.461640169813 +32 +1474.6140400213 +13 +462.461640169813 +23 +-462.461640169813 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +462.461640169813 +20 +-462.461640169813 +30 +1474.6140400213 +11 +441.215302798659 +21 +-660.325364744673 +31 +1474.6140400213 +12 +561.560562517035 +22 +-561.560562517035 +32 +1474.6140400213 +13 +561.560562517035 +23 +-561.560562517035 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +462.461640169813 +20 +-462.461640169813 +30 +1474.6140400213 +11 +561.560562517035 +21 +-561.560562517035 +31 +1474.6140400213 +12 +543.797359730523 +22 +-363.353779128852 +32 +1474.6140400213 +13 +543.797359730523 +23 +-363.353779128852 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +543.797359730523 +20 +-363.353779128852 +30 +1474.6140400213 +11 +561.560562517035 +21 +-561.560562517035 +31 +1474.6140400213 +12 +604.235251721863 +22 +-250.282436127116 +32 +1474.6140400213 +13 +604.235251721863 +23 +-250.282436127116 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +604.235251721863 +20 +-250.282436127116 +30 +1474.6140400213 +11 +561.560562517035 +21 +-561.560562517035 +31 +1474.6140400213 +12 +660.325364744673 +22 +-441.21530279866 +32 +1474.6140400213 +13 +660.325364744673 +23 +-441.21530279866 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +604.235251721863 +20 +-250.282436127116 +30 +1474.6140400213 +11 +660.325364744673 +21 +-441.21530279866 +31 +1474.6140400213 +12 +641.452721848564 +22 +-127.592879465023 +32 +1474.6140400213 +13 +641.452721848564 +23 +-127.592879465023 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +641.452721848564 +20 +-127.592879465023 +30 +1474.6140400213 +11 +660.325364744673 +21 +-441.21530279866 +31 +1474.6140400213 +12 +654.019523605455 +22 +-1.80477854883065e-13 +32 +1474.6140400213 +13 +654.019523605455 +23 +-1.80477854883065e-13 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +654.019523605455 +20 +-1.80477854883065e-13 +30 +1474.6140400213 +11 +660.325364744673 +21 +-441.21530279866 +31 +1474.6140400213 +12 +794.166563605455 +22 +-1.80477854883065e-13 +32 +1474.6140400213 +13 +794.166563605455 +23 +-1.80477854883065e-13 +33 +1474.6140400213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +794.166563605455 +20 +-1.80477854883065e-13 +30 +1474.6140400213 +11 +660.325364744673 +21 +-441.21530279866 +31 +1474.6140400213 +12 +733.714233519903 +22 +-303.914386430124 +32 +1474.6140400213 +13 +733.714233519903 +23 +-303.914386430124 +33 +1474.6140400213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +794.166563605455 +20 +-1.80477854883065e-13 +30 +1474.6140400213 +11 +733.714233519903 +21 +-303.914386430124 +31 +1474.6140400213 +12 +778.906875772646 +22 +-154.934210628231 +32 +1474.6140400213 +13 +778.906875772646 +23 +-154.934210628231 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-687.270773156591 +20 +-136.706656519425 +30 +1100.8886000213 +11 +-467.156803605456 +21 +0.0 +31 +1100.8886000213 +12 +-700.735203605456 +22 +0.0 +32 +1100.8886000213 +13 +-700.735203605456 +23 +0.0 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-467.156803605456 +20 +0.0 +30 +1100.8886000213 +11 +-687.270773156591 +21 +-136.706656519425 +31 +1100.8886000213 +12 +-647.39491232121 +22 +-268.159752894786 +32 +1100.8886000213 +13 +-647.39491232121 +23 +-268.159752894786 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-467.156803605456 +20 +0.0 +30 +1100.8886000213 +11 +-647.39491232121 +21 +-268.159752894786 +31 +1100.8886000213 +12 +-582.640028068573 +22 +-389.307620352121 +32 +1100.8886000213 +13 +-582.640028068573 +23 +-389.307620352121 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-467.156803605456 +20 +0.0 +30 +1100.8886000213 +11 +-582.640028068573 +21 +-389.307620352121 +31 +1100.8886000213 +12 +-495.494614285554 +22 +-495.494614285554 +32 +1100.8886000213 +13 +-495.494614285554 +23 +-495.494614285554 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-467.156803605456 +20 +0.0 +30 +1100.8886000213 +11 +-495.494614285554 +21 +-495.494614285554 +31 +1100.8886000213 +12 +-458.180516616454 +22 +-91.1377712474136 +32 +1100.8886000213 +13 +-458.180516616454 +23 +-91.1377712474136 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-458.180516616454 +20 +-91.1377712474136 +30 +1100.8886000213 +11 +-495.494614285554 +21 +-495.494614285554 +31 +1100.8886000213 +12 +-389.307620352121 +22 +-582.640028068573 +32 +1100.8886000213 +13 +-389.307620352121 +23 +-582.640028068573 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-458.180516616454 +20 +-91.1377712474136 +30 +1100.8886000213 +11 +-389.307620352121 +21 +-582.640028068573 +31 +1100.8886000213 +12 +-431.596609324475 +22 +-178.77316905644 +32 +1100.8886000213 +13 +-431.596609324475 +23 +-178.77316905644 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-431.596609324475 +20 +-178.77316905644 +30 +1100.8886000213 +11 +-389.307620352121 +21 +-582.640028068573 +31 +1100.8886000213 +12 +-388.426686378325 +22 +-259.538414235776 +32 +1100.8886000213 +13 +-388.426686378325 +23 +-259.538414235776 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-388.426686378325 +20 +-259.538414235776 +30 +1100.8886000213 +11 +-389.307620352121 +21 +-582.640028068573 +31 +1100.8886000213 +12 +-268.159752894786 +22 +-647.39491232121 +32 +1100.8886000213 +13 +-268.159752894786 +23 +-647.39491232121 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-388.426686378325 +20 +-259.538414235776 +30 +1100.8886000213 +11 +-268.159752894786 +21 +-647.39491232121 +31 +1100.8886000213 +12 +-330.32974370685 +22 +-330.32974370685 +32 +1100.8886000213 +13 +-330.32974370685 +23 +-330.32974370685 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-330.32974370685 +20 +-330.32974370685 +30 +1100.8886000213 +11 +-268.159752894786 +21 +-647.39491232121 +31 +1100.8886000213 +12 +-259.538414235776 +22 +-388.426686378324 +32 +1100.8886000213 +13 +-259.538414235776 +23 +-388.426686378324 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-259.538414235776 +20 +-388.426686378324 +30 +1100.8886000213 +11 +-268.159752894786 +21 +-647.39491232121 +31 +1100.8886000213 +12 +-136.706656519425 +22 +-687.270773156591 +32 +1100.8886000213 +13 +-136.706656519425 +23 +-687.270773156591 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-259.538414235776 +20 +-388.426686378324 +30 +1100.8886000213 +11 +-136.706656519425 +21 +-687.270773156591 +31 +1100.8886000213 +12 +-178.77316905644 +22 +-431.596609324475 +32 +1100.8886000213 +13 +-178.77316905644 +23 +-431.596609324475 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-178.77316905644 +20 +-431.596609324475 +30 +1100.8886000213 +11 +-136.706656519425 +21 +-687.270773156591 +31 +1100.8886000213 +12 +-91.1377712474136 +22 +-458.180516616454 +32 +1100.8886000213 +13 +-91.1377712474136 +23 +-458.180516616454 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-91.1377712474136 +20 +-458.180516616454 +30 +1100.8886000213 +11 +-136.706656519425 +21 +-687.270773156591 +31 +1100.8886000213 +12 +0.0 +22 +-700.735203605455 +32 +1100.8886000213 +13 +0.0 +23 +-700.735203605455 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-91.1377712474136 +20 +-458.180516616454 +30 +1100.8886000213 +11 +0.0 +21 +-700.735203605455 +31 +1100.8886000213 +12 +0.0 +22 +-467.156803605456 +32 +1100.8886000213 +13 +0.0 +23 +-467.156803605456 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-467.156803605456 +30 +1100.8886000213 +11 +0.0 +21 +-700.735203605455 +31 +1100.8886000213 +12 +136.706656519425 +22 +-687.270773156591 +32 +1100.8886000213 +13 +136.706656519425 +23 +-687.270773156591 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-467.156803605456 +30 +1100.8886000213 +11 +136.706656519425 +21 +-687.270773156591 +31 +1100.8886000213 +12 +91.1377712474136 +22 +-458.180516616454 +32 +1100.8886000213 +13 +91.1377712474136 +23 +-458.180516616454 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +91.1377712474136 +20 +-458.180516616454 +30 +1100.8886000213 +11 +136.706656519425 +21 +-687.270773156591 +31 +1100.8886000213 +12 +178.77316905644 +22 +-431.596609324475 +32 +1100.8886000213 +13 +178.77316905644 +23 +-431.596609324475 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +178.77316905644 +20 +-431.596609324475 +30 +1100.8886000213 +11 +136.706656519425 +21 +-687.270773156591 +31 +1100.8886000213 +12 +268.159752894786 +22 +-647.39491232121 +32 +1100.8886000213 +13 +268.159752894786 +23 +-647.39491232121 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +178.77316905644 +20 +-431.596609324475 +30 +1100.8886000213 +11 +268.159752894786 +21 +-647.39491232121 +31 +1100.8886000213 +12 +259.538414235775 +22 +-388.426686378325 +32 +1100.8886000213 +13 +259.538414235775 +23 +-388.426686378325 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +259.538414235775 +20 +-388.426686378325 +30 +1100.8886000213 +11 +268.159752894786 +21 +-647.39491232121 +31 +1100.8886000213 +12 +330.32974370685 +22 +-330.32974370685 +32 +1100.8886000213 +13 +330.32974370685 +23 +-330.32974370685 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +330.32974370685 +20 +-330.32974370685 +30 +1100.8886000213 +11 +268.159752894786 +21 +-647.39491232121 +31 +1100.8886000213 +12 +389.307620352121 +22 +-582.640028068573 +32 +1100.8886000213 +13 +389.307620352121 +23 +-582.640028068573 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +330.32974370685 +20 +-330.32974370685 +30 +1100.8886000213 +11 +389.307620352121 +21 +-582.640028068573 +31 +1100.8886000213 +12 +388.426686378325 +22 +-259.538414235776 +32 +1100.8886000213 +13 +388.426686378325 +23 +-259.538414235776 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +388.426686378325 +20 +-259.538414235776 +30 +1100.8886000213 +11 +389.307620352121 +21 +-582.640028068573 +31 +1100.8886000213 +12 +431.596609324475 +22 +-178.77316905644 +32 +1100.8886000213 +13 +431.596609324475 +23 +-178.77316905644 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +431.596609324475 +20 +-178.77316905644 +30 +1100.8886000213 +11 +389.307620352121 +21 +-582.640028068573 +31 +1100.8886000213 +12 +495.494614285554 +22 +-495.494614285554 +32 +1100.8886000213 +13 +495.494614285554 +23 +-495.494614285554 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +431.596609324475 +20 +-178.77316905644 +30 +1100.8886000213 +11 +495.494614285554 +21 +-495.494614285554 +31 +1100.8886000213 +12 +458.180516616454 +22 +-91.1377712474138 +32 +1100.8886000213 +13 +458.180516616454 +23 +-91.1377712474138 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +458.180516616454 +20 +-91.1377712474138 +30 +1100.8886000213 +11 +495.494614285554 +21 +-495.494614285554 +31 +1100.8886000213 +12 +467.156803605456 +22 +0.0 +32 +1100.8886000213 +13 +467.156803605456 +23 +0.0 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +467.156803605456 +20 +0.0 +30 +1100.8886000213 +11 +495.494614285554 +21 +-495.494614285554 +31 +1100.8886000213 +12 +700.735203605455 +22 +-1.80477854883065e-13 +32 +1100.8886000213 +13 +700.735203605455 +23 +-1.80477854883065e-13 +33 +1100.8886000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +700.735203605455 +20 +-1.80477854883065e-13 +30 +1100.8886000213 +11 +495.494614285554 +21 +-495.494614285554 +31 +1100.8886000213 +12 +582.640028068573 +22 +-389.307620352121 +32 +1100.8886000213 +13 +582.640028068573 +23 +-389.307620352121 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +700.735203605455 +20 +-1.80477854883065e-13 +30 +1100.8886000213 +11 +582.640028068573 +21 +-389.307620352121 +31 +1100.8886000213 +12 +647.39491232121 +22 +-268.159752894786 +32 +1100.8886000213 +13 +647.39491232121 +23 +-268.159752894786 +33 +1100.8886000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +700.735203605455 +20 +-1.80477854883065e-13 +30 +1100.8886000213 +11 +647.39491232121 +21 +-268.159752894786 +31 +1100.8886000213 +12 +687.270773156591 +22 +-136.706656519426 +32 +1100.8886000213 +13 +687.270773156591 +23 +-136.706656519426 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.088824464619 +20 +-145.820433573828 +30 +1287.75132002131 +11 +-607.303843605455 +21 +0.0 +31 +1287.75132002131 +12 +-747.450883605455 +22 +0.0 +32 +1287.75132002131 +13 +-747.450883605455 +23 +0.0 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-607.303843605455 +20 +0.0 +30 +1287.75132002131 +11 +-733.088824464619 +21 +-145.820433573828 +31 +1287.75132002131 +12 +-690.554572920556 +22 +-286.037069662455 +32 +1287.75132002131 +13 +-690.554572920556 +23 +-286.037069662455 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-607.303843605455 +20 +0.0 +30 +1287.75132002131 +11 +-690.554572920556 +21 +-286.037069662455 +31 +1287.75132002131 +12 +-621.482696406623 +22 +-415.26146157539 +32 +1287.75132002131 +13 +-621.482696406623 +23 +-415.26146157539 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-607.303843605455 +20 +0.0 +30 +1287.75132002131 +11 +-621.482696406623 +21 +-415.26146157539 +31 +1287.75132002131 +12 +-595.634670540536 +22 +-118.479102410621 +32 +1287.75132002131 +13 +-595.634670540536 +23 +-118.479102410621 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-595.634670540536 +20 +-118.479102410621 +30 +1287.75132002131 +11 +-621.482696406623 +21 +-415.26146157539 +31 +1287.75132002131 +12 +-528.527588401294 +22 +-528.527588401294 +32 +1287.75132002131 +13 +-528.527588401294 +23 +-528.527588401294 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-595.634670540536 +20 +-118.479102410621 +30 +1287.75132002131 +11 +-528.527588401294 +21 +-528.527588401294 +31 +1287.75132002131 +12 +-561.075591122516 +22 +-232.405119359447 +32 +1287.75132002131 +13 +-561.075591122516 +23 +-232.405119359447 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-561.075591122516 +20 +-232.405119359447 +30 +1287.75132002131 +11 +-528.527588401294 +21 +-528.527588401294 +31 +1287.75132002131 +12 +-504.954691392474 +22 +-337.399937905583 +32 +1287.75132002131 +13 +-504.954691392474 +23 +-337.399937905583 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-504.954691392474 +20 +-337.399937905583 +30 +1287.75132002131 +11 +-528.527588401294 +21 +-528.527588401294 +31 +1287.75132002131 +12 +-415.26146157539 +22 +-621.482696406623 +32 +1287.75132002131 +13 +-415.26146157539 +23 +-621.482696406623 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-504.954691392474 +20 +-337.399937905583 +30 +1287.75132002131 +11 +-415.26146157539 +21 +-621.482696406623 +31 +1287.75132002131 +12 +-429.428666054072 +22 +-429.428666054072 +32 +1287.75132002131 +13 +-429.428666054072 +23 +-429.428666054072 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-429.428666054072 +20 +-429.428666054072 +30 +1287.75132002131 +11 +-415.26146157539 +21 +-621.482696406623 +31 +1287.75132002131 +12 +-337.399937905583 +22 +-504.954691392473 +32 +1287.75132002131 +13 +-337.399937905583 +23 +-504.954691392473 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-337.399937905583 +20 +-504.954691392473 +30 +1287.75132002131 +11 +-415.26146157539 +21 +-621.482696406623 +31 +1287.75132002131 +12 +-286.037069662455 +22 +-690.554572920556 +32 +1287.75132002131 +13 +-286.037069662455 +23 +-690.554572920556 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-337.399937905583 +20 +-504.954691392473 +30 +1287.75132002131 +11 +-286.037069662455 +21 +-690.554572920556 +31 +1287.75132002131 +12 +-232.405119359447 +22 +-561.075591122516 +32 +1287.75132002131 +13 +-232.405119359447 +23 +-561.075591122516 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-232.405119359447 +20 +-561.075591122516 +30 +1287.75132002131 +11 +-286.037069662455 +21 +-690.554572920556 +31 +1287.75132002131 +12 +-145.820433573828 +22 +-733.088824464619 +32 +1287.75132002131 +13 +-145.820433573828 +23 +-733.088824464619 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-232.405119359447 +20 +-561.075591122516 +30 +1287.75132002131 +11 +-145.820433573828 +21 +-733.088824464619 +31 +1287.75132002131 +12 +-118.479102410621 +22 +-595.634670540536 +32 +1287.75132002131 +13 +-118.479102410621 +23 +-595.634670540536 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-118.479102410621 +20 +-595.634670540536 +30 +1287.75132002131 +11 +-145.820433573828 +21 +-733.088824464619 +31 +1287.75132002131 +12 +0.0 +22 +-747.450883605455 +32 +1287.75132002131 +13 +0.0 +23 +-747.450883605455 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-118.479102410621 +20 +-595.634670540536 +30 +1287.75132002131 +11 +0.0 +21 +-747.450883605455 +31 +1287.75132002131 +12 +0.0 +22 +-607.303843605455 +32 +1287.75132002131 +13 +0.0 +23 +-607.303843605455 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-607.303843605455 +30 +1287.75132002131 +11 +0.0 +21 +-747.450883605455 +31 +1287.75132002131 +12 +145.820433573828 +22 +-733.088824464619 +32 +1287.75132002131 +13 +145.820433573828 +23 +-733.088824464619 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-607.303843605455 +30 +1287.75132002131 +11 +145.820433573828 +21 +-733.088824464619 +31 +1287.75132002131 +12 +118.479102410621 +22 +-595.634670540536 +32 +1287.75132002131 +13 +118.479102410621 +23 +-595.634670540536 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +118.479102410621 +20 +-595.634670540536 +30 +1287.75132002131 +11 +145.820433573828 +21 +-733.088824464619 +31 +1287.75132002131 +12 +232.405119359447 +22 +-561.075591122516 +32 +1287.75132002131 +13 +232.405119359447 +23 +-561.075591122516 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +232.405119359447 +20 +-561.075591122516 +30 +1287.75132002131 +11 +145.820433573828 +21 +-733.088824464619 +31 +1287.75132002131 +12 +286.037069662455 +22 +-690.554572920556 +32 +1287.75132002131 +13 +286.037069662455 +23 +-690.554572920556 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +232.405119359447 +20 +-561.075591122516 +30 +1287.75132002131 +11 +286.037069662455 +21 +-690.554572920556 +31 +1287.75132002131 +12 +337.399937905583 +22 +-504.954691392474 +32 +1287.75132002131 +13 +337.399937905583 +23 +-504.954691392474 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +337.399937905583 +20 +-504.954691392474 +30 +1287.75132002131 +11 +286.037069662455 +21 +-690.554572920556 +31 +1287.75132002131 +12 +415.26146157539 +22 +-621.482696406623 +32 +1287.75132002131 +13 +415.26146157539 +23 +-621.482696406623 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +337.399937905583 +20 +-504.954691392474 +30 +1287.75132002131 +11 +415.26146157539 +21 +-621.482696406623 +31 +1287.75132002131 +12 +429.428666054072 +22 +-429.428666054072 +32 +1287.75132002131 +13 +429.428666054072 +23 +-429.428666054072 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +429.428666054072 +20 +-429.428666054072 +30 +1287.75132002131 +11 +415.26146157539 +21 +-621.482696406623 +31 +1287.75132002131 +12 +528.527588401294 +22 +-528.527588401294 +32 +1287.75132002131 +13 +528.527588401294 +23 +-528.527588401294 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +429.428666054072 +20 +-429.428666054072 +30 +1287.75132002131 +11 +528.527588401294 +21 +-528.527588401294 +31 +1287.75132002131 +12 +504.954691392474 +22 +-337.399937905583 +32 +1287.75132002131 +13 +504.954691392474 +23 +-337.399937905583 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +504.954691392474 +20 +-337.399937905583 +30 +1287.75132002131 +11 +528.527588401294 +21 +-528.527588401294 +31 +1287.75132002131 +12 +561.075591122516 +22 +-232.405119359447 +32 +1287.75132002131 +13 +561.075591122516 +23 +-232.405119359447 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +561.075591122516 +20 +-232.405119359447 +30 +1287.75132002131 +11 +528.527588401294 +21 +-528.527588401294 +31 +1287.75132002131 +12 +621.482696406623 +22 +-415.26146157539 +32 +1287.75132002131 +13 +621.482696406623 +23 +-415.26146157539 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +561.075591122516 +20 +-232.405119359447 +30 +1287.75132002131 +11 +621.482696406623 +21 +-415.26146157539 +31 +1287.75132002131 +12 +595.634670540536 +22 +-118.479102410621 +32 +1287.75132002131 +13 +595.634670540536 +23 +-118.479102410621 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +595.634670540536 +20 +-118.479102410621 +30 +1287.75132002131 +11 +621.482696406623 +21 +-415.26146157539 +31 +1287.75132002131 +12 +607.303843605455 +22 +-1.80477854883065e-13 +32 +1287.75132002131 +13 +607.303843605455 +23 +-1.80477854883065e-13 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +607.303843605455 +20 +-1.80477854883065e-13 +30 +1287.75132002131 +11 +621.482696406623 +21 +-415.26146157539 +31 +1287.75132002131 +12 +747.450883605455 +22 +-1.80477854883065e-13 +32 +1287.75132002131 +13 +747.450883605455 +23 +-1.80477854883065e-13 +33 +1287.75132002131 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +747.450883605455 +20 +-1.80477854883065e-13 +30 +1287.75132002131 +11 +621.482696406623 +21 +-415.26146157539 +31 +1287.75132002131 +12 +690.554572920556 +22 +-286.037069662455 +32 +1287.75132002131 +13 +690.554572920556 +23 +-286.037069662455 +33 +1287.75132002131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +747.450883605455 +20 +-1.80477854883065e-13 +30 +1287.75132002131 +11 +690.554572920556 +21 +-286.037069662455 +31 +1287.75132002131 +12 +733.088824464619 +22 +-145.820433573828 +32 +1287.75132002131 +13 +733.088824464619 +23 +-145.820433573828 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-699.298837021391 +30 +628.271001705821 +11 +-126.938054583664 +21 +-638.160694862082 +31 +587.016306884026 +12 +-136.426435300007 +22 +-685.862005953678 +32 +628.271001705821 +13 +-136.426435300007 +23 +-685.862005953678 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-126.938054583664 +20 +-638.160694862082 +30 +587.016306884026 +11 +0.0 +21 +-699.298837021391 +31 +628.271001705821 +12 +0.0 +22 +-650.663001997455 +32 +587.016306884026 +13 +0.0 +23 +-650.663001997455 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-373.870315466121 +20 +-902.602786167016 +30 +1967.39330582966 +11 +-188.233089011893 +21 +-946.311642114328 +31 +1900.55285125842 +12 +-369.232485975391 +22 +-891.406075310522 +32 +1900.55285125842 +13 +-369.232485975391 +23 +-891.406075310522 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-188.233089011893 +20 +-946.311642114328 +30 +1900.55285125842 +11 +-373.870315466121 +21 +-902.602786167016 +31 +1967.39330582966 +12 +-190.597433982906 +22 +-958.19800696011 +32 +1967.39330582966 +13 +-190.597433982906 +23 +-958.19800696011 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-462.461640169813 +20 +-462.461640169813 +30 +1474.6140400213 +11 +-415.26146157539 +21 +-621.482696406623 +31 +1287.75132002131 +12 +-528.527588401294 +22 +-528.527588401294 +32 +1287.75132002131 +13 +-528.527588401294 +23 +-528.527588401294 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-415.26146157539 +20 +-621.482696406623 +30 +1287.75132002131 +11 +-462.461640169813 +21 +-462.461640169813 +31 +1474.6140400213 +12 +-363.353779128852 +22 +-543.797359730523 +32 +1474.6140400213 +13 +-363.353779128852 +23 +-543.797359730523 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-902.602786167016 +20 +-373.87031546612 +30 +2103.01109421295 +11 +-802.244272938819 +21 +-536.042485570818 +31 +2169.85154878419 +12 +-812.321046486997 +22 +-542.775570394861 +32 +2103.01109421295 +13 +-812.321046486997 +23 +-542.775570394861 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-802.244272938819 +20 +-536.042485570818 +30 +2169.85154878419 +11 +-902.602786167016 +21 +-373.87031546612 +31 +2103.01109421295 +12 +-891.406075310522 +22 +-369.232485975391 +32 +2169.85154878419 +13 +-891.406075310522 +23 +-369.232485975391 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-815.696038096872 +20 +-545.030667691736 +30 +2035.2022000213 +11 +-690.822264545374 +21 +-690.822264545373 +31 +2103.01109421295 +12 +-693.692458979998 +22 +-693.692458979998 +32 +2035.2022000213 +13 +-693.692458979998 +23 +-693.692458979998 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.822264545374 +20 +-690.822264545373 +30 +2103.01109421295 +11 +-815.696038096872 +21 +-545.030667691736 +31 +2035.2022000213 +12 +-812.321046486997 +22 +-542.775570394861 +32 +2103.01109421295 +13 +-812.321046486997 +23 +-542.775570394861 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-812.321046486997 +20 +-542.775570394861 +30 +2103.01109421295 +11 +-682.252673061849 +21 +-682.252673061848 +31 +2169.85154878419 +12 +-690.822264545374 +22 +-690.822264545373 +32 +2103.01109421295 +13 +-690.822264545374 +23 +-690.822264545373 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-682.252673061849 +20 +-682.252673061848 +30 +2169.85154878419 +11 +-812.321046486997 +21 +-542.775570394861 +31 +2103.01109421295 +12 +-802.244272938819 +22 +-536.042485570818 +32 +2169.85154878419 +13 +-802.244272938819 +23 +-536.042485570818 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-802.244272938819 +20 +-536.042485570818 +30 +2169.85154878419 +11 +-668.106074549528 +21 +-668.106074549528 +31 +2234.76895526921 +12 +-682.252673061849 +22 +-682.252673061848 +32 +2169.85154878419 +13 +-682.252673061849 +23 +-682.252673061848 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-668.106074549528 +20 +-668.106074549528 +30 +2234.76895526921 +11 +-802.244272938819 +21 +-536.042485570818 +31 +2169.85154878419 +12 +-785.609632890959 +22 +-524.927574441361 +32 +2234.76895526921 +13 +-785.609632890959 +23 +-524.927574441361 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-785.609632890959 +20 +-524.927574441361 +30 +2234.76895526921 +11 +-648.584509266648 +21 +-648.584509266648 +31 +2296.83616997626 +12 +-668.106074549528 +22 +-668.106074549528 +32 +2234.76895526921 +13 +-668.106074549528 +23 +-668.106074549528 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-648.584509266648 +20 +-648.584509266648 +30 +2296.83616997626 +11 +-785.609632890959 +21 +-524.927574441361 +31 +2234.76895526921 +12 +-762.654700553784 +22 +-509.589579018778 +32 +2296.83616997626 +13 +-762.654700553784 +23 +-509.589579018778 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +646.067882633009 +20 +-267.610079200261 +30 +628.271001705821 +11 +638.160694862082 +21 +-126.938054583664 +31 +587.016306884026 +12 +601.1342301078 +22 +-248.997950917359 +32 +587.016306884026 +13 +601.1342301078 +23 +-248.997950917359 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +638.160694862082 +20 +-126.938054583664 +30 +587.016306884026 +11 +646.067882633009 +21 +-267.610079200261 +31 +628.271001705821 +12 +685.862005953678 +22 +-136.426435300007 +32 +628.271001705821 +13 +685.862005953678 +23 +-136.426435300007 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +735.304703143143 +20 +-1.80477854883065e-13 +30 +680.911023534629 +11 +685.862005953678 +21 +-136.426435300007 +31 +628.271001705821 +12 +721.176029454062 +22 +-143.45083131617 +32 +680.911023534629 +13 +721.176029454062 +23 +-143.45083131617 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +685.862005953678 +20 +-136.426435300007 +30 +628.271001705821 +11 +735.304703143143 +21 +-1.80477854883065e-13 +31 +680.911023534629 +12 +699.298837021391 +22 +-1.80477854883065e-13 +32 +628.271001705821 +13 +699.298837021391 +23 +-1.80477854883065e-13 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +756.121025443459 +20 +-1.80477854883065e-13 +30 +741.194313252463 +11 +721.176029454062 +21 +-143.45083131617 +31 +680.911023534629 +12 +741.592371958341 +22 +-147.51189433693 +32 +741.194313252463 +13 +741.592371958341 +23 +-147.51189433693 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +721.176029454062 +20 +-143.45083131617 +30 +680.911023534629 +11 +756.121025443459 +21 +-1.80477854883065e-13 +31 +741.194313252463 +12 +735.304703143143 +22 +-1.80477854883065e-13 +32 +680.911023534629 +13 +735.304703143143 +23 +-1.80477854883065e-13 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.707315899088 +20 +-490.247554968877 +30 +1715.23764468454 +11 +-847.416499400322 +21 +-351.011407030345 +31 +1773.56823006635 +12 +-762.654700553784 +22 +-509.589579018778 +32 +1773.56823006635 +13 +-762.654700553784 +23 +-509.589579018778 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-847.416499400322 +20 +-351.011407030345 +30 +1773.56823006635 +11 +-733.707315899088 +21 +-490.247554968877 +31 +1715.23764468454 +12 +-815.251888924487 +22 +-337.688389142806 +32 +1715.23764468454 +13 +-815.251888924487 +23 +-337.688389142806 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +760.268019036986 +20 +-1.80477854883065e-13 +30 +804.835469255871 +11 +741.592371958341 +21 +-147.51189433693 +31 +741.194313252463 +12 +745.659682232799 +22 +-148.32093265249 +32 +804.835469255871 +13 +745.659682232799 +23 +-148.32093265249 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +741.592371958341 +20 +-147.51189433693 +30 +741.194313252463 +11 +760.268019036986 +21 +-1.80477854883065e-13 +31 +804.835469255871 +12 +756.121025443459 +22 +-1.80477854883065e-13 +32 +741.194313252463 +13 +756.121025443459 +23 +-1.80477854883065e-13 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.088824464618 +20 +-145.820433573828 +30 +867.310386884026 +11 +760.268019036986 +21 +-1.80477854883065e-13 +31 +804.835469255871 +12 +745.659682232799 +22 +-148.32093265249 +32 +804.835469255871 +13 +745.659682232799 +23 +-148.32093265249 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +760.268019036986 +20 +-1.80477854883065e-13 +30 +804.835469255871 +11 +733.088824464618 +21 +-145.820433573828 +31 +867.310386884026 +12 +747.450883605455 +22 +-1.80477854883065e-13 +32 +867.310386884026 +13 +747.450883605455 +23 +-1.80477854883065e-13 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +467.156803605456 +20 +0.0 +30 +1100.8886000213 +11 +733.088824464618 +21 +-145.820433573828 +31 +867.310386884026 +12 +458.180516616454 +22 +-91.1377712474138 +32 +1100.8886000213 +13 +458.180516616454 +23 +-91.1377712474138 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.088824464618 +20 +-145.820433573828 +30 +867.310386884026 +11 +467.156803605456 +21 +0.0 +31 +1100.8886000213 +12 +747.450883605455 +22 +-1.80477854883065e-13 +32 +867.310386884026 +13 +747.450883605455 +23 +-1.80477854883065e-13 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.714233519903 +20 +-303.914386430124 +30 +1474.6140400213 +11 +-582.640028068573 +21 +-389.307620352121 +31 +1661.47676002131 +12 +-660.325364744673 +22 +-441.215302798659 +32 +1474.6140400213 +13 +-660.325364744673 +23 +-441.215302798659 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-582.640028068573 +20 +-389.307620352121 +30 +1661.47676002131 +11 +-733.714233519903 +21 +-303.914386430124 +31 +1474.6140400213 +12 +-647.39491232121 +22 +-268.159752894786 +32 +1661.47676002131 +13 +-647.39491232121 +23 +-268.159752894786 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-815.251888924486 +20 +-337.688389142806 +30 +2355.16675535807 +11 +-699.180902483484 +21 +-467.1777430806 +31 +2408.9276400213 +12 +-733.707315899088 +22 +-490.247554968877 +32 +2355.16675535807 +13 +-733.707315899088 +23 +-490.247554968877 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-699.180902483484 +20 +-467.1777430806 +30 +2408.9276400213 +11 +-815.251888924486 +21 +-337.688389142806 +31 +2355.16675535807 +12 +-776.88819383121 +22 +-321.797626332425 +32 +2408.9276400213 +13 +-776.88819383121 +23 +-321.797626332425 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-847.416499400322 +20 +-351.011407030345 +30 +2296.83616997626 +11 +-733.707315899088 +21 +-490.247554968877 +31 +2355.16675535807 +12 +-762.654700553784 +22 +-509.589579018778 +32 +2296.83616997626 +13 +-762.654700553784 +23 +-509.589579018778 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.707315899088 +20 +-490.247554968877 +30 +2355.16675535807 +11 +-847.416499400322 +21 +-351.011407030345 +31 +2296.83616997626 +12 +-815.251888924486 +22 +-337.688389142806 +32 +2355.16675535807 +13 +-815.251888924486 +23 +-337.688389142806 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-824.740107573921 +20 +-164.051007270482 +30 +1661.47676002131 +11 +-882.422285845505 +21 +0.0 +31 +1715.23764468454 +12 +-865.466789057043 +22 +-172.152047899808 +32 +1715.23764468454 +13 +-865.466789057043 +23 +-172.152047899808 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-882.422285845505 +20 +0.0 +30 +1715.23764468454 +11 +-824.740107573921 +21 +-164.051007270482 +31 +1661.47676002131 +12 +-840.897721502147 +22 +0.0 +32 +1661.47676002131 +13 +-840.897721502147 +23 +0.0 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-458.180516616454 +20 +-91.1377712474136 +30 +1100.8886000213 +11 +-690.554572920556 +21 +-286.037069662455 +31 +867.310386884026 +12 +-733.088824464618 +22 +-145.820433573828 +32 +867.310386884026 +13 +-733.088824464618 +23 +-145.820433573828 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.554572920556 +20 +-286.037069662455 +30 +867.310386884026 +11 +-458.180516616454 +21 +-91.1377712474136 +31 +1100.8886000213 +12 +-431.596609324475 +22 +-178.77316905644 +32 +1100.8886000213 +13 +-431.596609324475 +23 +-178.77316905644 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-865.466789057043 +20 +-172.152047899808 +30 +2355.16675535807 +11 +-776.88819383121 +21 +-321.797626332425 +31 +2408.9276400213 +12 +-815.251888924486 +22 +-337.688389142806 +32 +2355.16675535807 +13 +-815.251888924486 +23 +-337.688389142806 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-776.88819383121 +20 +-321.797626332425 +30 +2408.9276400213 +11 +-865.466789057043 +21 +-172.152047899808 +31 +2355.16675535807 +12 +-824.740107573921 +22 +-164.051007270482 +32 +2408.9276400213 +13 +-824.740107573921 +23 +-164.051007270482 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.088824464619 +20 +-145.820433573828 +30 +1287.75132002131 +11 +-604.235251721863 +21 +-250.282436127117 +31 +1474.6140400213 +12 +-690.554572920556 +22 +-286.037069662455 +32 +1287.75132002131 +13 +-690.554572920556 +23 +-286.037069662455 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-604.235251721863 +20 +-250.282436127117 +30 +1474.6140400213 +11 +-733.088824464619 +21 +-145.820433573828 +31 +1287.75132002131 +12 +-641.452721848564 +22 +-127.592879465023 +32 +1474.6140400213 +13 +-641.452721848564 +23 +-127.592879465023 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-962.179081004757 +20 +-191.38931884584 +30 +2035.2022000213 +11 +-902.602786167016 +21 +-373.87031546612 +31 +2103.01109421295 +12 +-906.352875917291 +22 +-375.423653500801 +32 +2035.2022000213 +13 +-906.352875917291 +23 +-375.423653500801 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-902.602786167016 +20 +-373.87031546612 +30 +2103.01109421295 +11 +-962.179081004757 +21 +-191.38931884584 +31 +2035.2022000213 +12 +-958.19800696011 +22 +-190.597433982906 +32 +2103.01109421295 +13 +-958.19800696011 +23 +-190.597433982906 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.088824464619 +20 +-145.820433573828 +30 +2408.9276400213 +11 +-690.554572920556 +21 +-286.037069662455 +31 +2549.0746800213 +12 +-690.554572920556 +22 +-286.037069662455 +32 +2408.9276400213 +13 +-690.554572920556 +23 +-286.037069662455 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.554572920556 +20 +-286.037069662455 +30 +2549.0746800213 +11 +-733.088824464619 +21 +-145.820433573828 +31 +2408.9276400213 +12 +-733.088824464618 +22 +-145.820433573828 +32 +2549.0746800213 +13 +-733.088824464618 +23 +-145.820433573828 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-741.592371958341 +20 +-147.511894336929 +30 +741.194313252463 +11 +-760.268019036986 +21 +0.0 +31 +804.835469255871 +12 +-745.659682232799 +22 +-148.32093265249 +32 +804.835469255871 +13 +-745.659682232799 +23 +-148.32093265249 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-760.268019036986 +20 +0.0 +30 +804.835469255871 +11 +-741.592371958341 +21 +-147.511894336929 +31 +741.194313252463 +12 +-756.121025443459 +22 +0.0 +32 +741.194313252463 +13 +-756.121025443459 +23 +0.0 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-882.422285845505 +30 +2355.16675535807 +11 +178.9440635192 +21 +-899.612557411553 +31 +2296.83616997626 +12 +0.0 +22 +-917.237009349992 +32 +2296.83616997626 +13 +0.0 +23 +-917.237009349992 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +178.9440635192 +20 +-899.612557411553 +30 +2296.83616997626 +11 +0.0 +21 +-882.422285845505 +31 +2355.16675535807 +12 +172.152047899807 +22 +-865.466789057043 +32 +2355.16675535807 +13 +172.152047899807 +23 +-865.466789057043 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-840.897721502147 +30 +2408.9276400213 +11 +172.152047899807 +21 +-865.466789057043 +31 +2355.16675535807 +12 +0.0 +22 +-882.422285845505 +32 +2355.16675535807 +13 +0.0 +23 +-882.422285845505 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +172.152047899807 +20 +-865.466789057043 +30 +2355.16675535807 +11 +0.0 +21 +-840.897721502147 +31 +2408.9276400213 +12 +164.051007270482 +22 +-824.740107573921 +32 +2408.9276400213 +13 +164.051007270482 +23 +-824.740107573921 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-815.251888924487 +20 +-337.688389142806 +30 +1715.23764468454 +11 +-899.612557411553 +21 +-178.944063519201 +31 +1773.56823006635 +12 +-847.416499400322 +22 +-351.011407030345 +32 +1773.56823006635 +13 +-847.416499400322 +23 +-351.011407030345 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-899.612557411553 +20 +-178.944063519201 +30 +1773.56823006635 +11 +-815.251888924487 +21 +-337.688389142806 +31 +1715.23764468454 +12 +-865.466789057043 +22 +-172.152047899808 +32 +1715.23764468454 +13 +-865.466789057043 +23 +-172.152047899808 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.707315899088 +20 +-490.247554968877 +30 +2355.16675535807 +11 +-594.604481158485 +21 +-594.604481158485 +31 +2408.9276400213 +12 +-623.966782191491 +22 +-623.96678219149 +32 +2355.16675535807 +13 +-623.966782191491 +23 +-623.96678219149 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-594.604481158485 +20 +-594.604481158485 +30 +2408.9276400213 +11 +-733.707315899088 +21 +-490.247554968877 +31 +2355.16675535807 +12 +-699.180902483484 +22 +-467.1777430806 +32 +2408.9276400213 +13 +-699.180902483484 +23 +-467.1777430806 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-534.658304488796 +20 +-534.658304488796 +30 +741.194313252463 +11 +-408.513405265646 +21 +-611.383516446667 +31 +680.911023534629 +12 +-519.938941830878 +22 +-519.938941830878 +32 +680.911023534629 +13 +-519.938941830878 +23 +-519.938941830878 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-408.513405265646 +20 +-611.383516446667 +30 +680.911023534629 +11 +-534.658304488796 +21 +-534.658304488796 +31 +741.194313252463 +12 +-420.078334296643 +22 +-628.691655879275 +32 +741.194313252463 +13 +-420.078334296643 +23 +-628.691655879275 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-537.590671780316 +20 +-537.590671780316 +30 +804.835469255871 +11 +-420.078334296643 +21 +-628.691655879275 +31 +741.194313252463 +12 +-534.658304488796 +22 +-534.658304488796 +32 +741.194313252463 +13 +-534.658304488796 +23 +-534.658304488796 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-420.078334296643 +20 +-628.691655879275 +30 +741.194313252463 +11 +-537.590671780316 +21 +-537.590671780316 +31 +804.835469255871 +12 +-422.38228049373 +22 +-632.139755034707 +32 +804.835469255871 +13 +-422.38228049373 +23 +-632.139755034707 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-528.527588401294 +20 +-528.527588401294 +30 +867.310386884026 +11 +-422.38228049373 +21 +-632.139755034707 +31 +804.835469255871 +12 +-537.590671780316 +22 +-537.590671780316 +32 +804.835469255871 +13 +-537.590671780316 +23 +-537.590671780316 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-422.38228049373 +20 +-632.139755034707 +30 +804.835469255871 +11 +-528.527588401294 +21 +-528.527588401294 +31 +867.310386884026 +12 +-415.26146157539 +22 +-621.482696406622 +32 +867.310386884026 +13 +-415.26146157539 +23 +-621.482696406622 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-330.32974370685 +20 +-330.32974370685 +30 +1100.8886000213 +11 +-415.26146157539 +21 +-621.482696406622 +31 +867.310386884026 +12 +-528.527588401294 +22 +-528.527588401294 +32 +867.310386884026 +13 +-528.527588401294 +23 +-528.527588401294 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-415.26146157539 +20 +-621.482696406622 +30 +867.310386884026 +11 +-330.32974370685 +21 +-330.32974370685 +31 +1100.8886000213 +12 +-259.538414235776 +22 +-388.426686378324 +32 +1100.8886000213 +13 +-259.538414235776 +23 +-388.426686378324 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-702.396062011173 +20 +-290.941975042481 +30 +804.835469255871 +11 +-621.482696406623 +21 +-415.26146157539 +31 +867.310386884026 +12 +-632.139755034707 +22 +-422.38228049373 +32 +804.835469255871 +13 +-632.139755034707 +23 +-422.38228049373 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-621.482696406623 +20 +-415.26146157539 +30 +867.310386884026 +11 +-702.396062011173 +21 +-290.941975042481 +31 +804.835469255871 +12 +-690.554572920556 +22 +-286.037069662455 +32 +867.310386884026 +13 +-690.554572920556 +23 +-286.037069662455 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-762.654700553784 +20 +-509.589579018778 +30 +2296.83616997626 +11 +-623.966782191491 +21 +-623.96678219149 +31 +2355.16675535807 +12 +-648.584509266648 +22 +-648.584509266648 +32 +2296.83616997626 +13 +-648.584509266648 +23 +-648.584509266648 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-623.966782191491 +20 +-623.96678219149 +30 +2355.16675535807 +11 +-762.654700553784 +21 +-509.589579018778 +31 +2296.83616997626 +12 +-733.707315899088 +22 +-490.247554968877 +32 +2355.16675535807 +13 +-733.707315899088 +23 +-490.247554968877 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-944.844671731792 +30 +1835.6354447734 +11 +178.9440635192 +21 +-899.612557411553 +31 +1773.56823006635 +12 +0.0 +22 +-917.237009349992 +32 +1773.56823006635 +13 +0.0 +23 +-917.237009349992 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +178.9440635192 +20 +-899.612557411553 +30 +1773.56823006635 +11 +0.0 +21 +-944.844671731792 +31 +1835.6354447734 +12 +184.330051263378 +22 +-926.689746301964 +32 +1835.6354447734 +13 +184.330051263378 +23 +-926.689746301964 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-363.353779128852 +20 +-543.797359730523 +30 +1474.6140400213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +1287.75132002131 +12 +-415.26146157539 +22 +-621.482696406623 +32 +1287.75132002131 +13 +-415.26146157539 +23 +-621.482696406623 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-286.037069662455 +20 +-690.554572920556 +30 +1287.75132002131 +11 +-363.353779128852 +21 +-543.797359730523 +31 +1474.6140400213 +12 +-250.282436127117 +22 +-604.235251721863 +32 +1474.6140400213 +13 +-250.282436127117 +23 +-604.235251721863 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-582.640028068573 +20 +-389.307620352121 +30 +1100.8886000213 +11 +-429.428666054072 +21 +-429.428666054072 +31 +1287.75132002131 +12 +-495.494614285554 +22 +-495.494614285554 +32 +1100.8886000213 +13 +-495.494614285554 +23 +-495.494614285554 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-429.428666054072 +20 +-429.428666054072 +30 +1287.75132002131 +11 +-582.640028068573 +21 +-389.307620352121 +31 +1100.8886000213 +12 +-504.954691392474 +22 +-337.399937905583 +32 +1287.75132002131 +13 +-504.954691392474 +23 +-337.399937905583 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-747.450883605455 +30 +2549.0746800213 +11 +145.820433573828 +21 +-733.088824464619 +31 +2408.9276400213 +12 +0.0 +22 +-747.450883605455 +32 +2408.9276400213 +13 +0.0 +23 +-747.450883605455 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +145.820433573828 +20 +-733.088824464619 +30 +2408.9276400213 +11 +0.0 +21 +-747.450883605455 +31 +2549.0746800213 +12 +145.820433573828 +22 +-733.088824464618 +32 +2549.0746800213 +13 +145.820433573828 +23 +-733.088824464618 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-699.180902483484 +20 +-467.1777430806 +30 +1661.47676002131 +11 +-815.251888924487 +21 +-337.688389142806 +31 +1715.23764468454 +12 +-733.707315899088 +22 +-490.247554968877 +32 +1715.23764468454 +13 +-733.707315899088 +23 +-490.247554968877 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-815.251888924487 +20 +-337.688389142806 +30 +1715.23764468454 +11 +-699.180902483484 +21 +-467.1777430806 +31 +1661.47676002131 +12 +-776.88819383121 +22 +-321.797626332425 +32 +1661.47676002131 +13 +-776.88819383121 +23 +-321.797626332425 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-902.602786167016 +20 +-373.87031546612 +30 +1967.39330582966 +11 +-962.179081004757 +21 +-191.38931884584 +31 +2035.2022000213 +12 +-906.352875917291 +22 +-375.423653500801 +32 +2035.2022000213 +13 +-906.352875917291 +23 +-375.423653500801 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-962.179081004757 +20 +-191.38931884584 +30 +2035.2022000213 +11 +-902.602786167016 +21 +-373.87031546612 +31 +1967.39330582966 +12 +-958.198006960111 +22 +-190.597433982906 +32 +1967.39330582966 +13 +-958.198006960111 +23 +-190.597433982906 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-647.39491232121 +20 +-268.159752894786 +30 +1100.8886000213 +11 +-504.954691392474 +21 +-337.399937905583 +31 +1287.75132002131 +12 +-582.640028068573 +22 +-389.307620352121 +32 +1100.8886000213 +13 +-582.640028068573 +23 +-389.307620352121 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-504.954691392474 +20 +-337.399937905583 +30 +1287.75132002131 +11 +-647.39491232121 +21 +-268.159752894786 +31 +1100.8886000213 +12 +-561.075591122516 +22 +-232.405119359447 +32 +1287.75132002131 +13 +-561.075591122516 +23 +-232.405119359447 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-747.450883605455 +20 +0.0 +30 +2408.9276400213 +11 +-733.088824464618 +21 +-145.820433573828 +31 +2549.0746800213 +12 +-733.088824464619 +22 +-145.820433573828 +32 +2408.9276400213 +13 +-733.088824464619 +23 +-145.820433573828 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.088824464618 +20 +-145.820433573828 +30 +2549.0746800213 +11 +-747.450883605455 +21 +0.0 +31 +2408.9276400213 +12 +-747.450883605455 +22 +0.0 +32 +2549.0746800213 +13 +-747.450883605455 +23 +0.0 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-581.445732901797 +20 +-388.509617834311 +30 +628.271001705821 +11 +-601.134230107799 +21 +-248.997950917359 +31 +587.016306884026 +12 +-646.067882633009 +22 +-267.610079200261 +32 +628.271001705821 +13 +-646.067882633009 +23 +-267.610079200261 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-601.134230107799 +20 +-248.997950917359 +30 +587.016306884026 +11 +-581.445732901797 +21 +-388.509617834311 +31 +628.271001705821 +12 +-541.006514010434 +22 +-361.48899563696 +32 +587.016306884026 +13 +-541.006514010434 +23 +-361.48899563696 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-494.478949733692 +20 +-494.478949733692 +30 +628.271001705821 +11 +-611.383516446667 +21 +-408.513405265645 +31 +680.911023534629 +12 +-519.938941830878 +22 +-519.938941830878 +32 +680.911023534629 +13 +-519.938941830878 +23 +-519.938941830878 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-611.383516446667 +20 +-408.513405265645 +30 +680.911023534629 +11 +-494.478949733692 +21 +-494.478949733692 +31 +628.271001705821 +12 +-581.445732901797 +22 +-388.509617834311 +32 +628.271001705821 +13 +-581.445732901797 +23 +-388.509617834311 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-534.658304488796 +20 +-534.658304488796 +30 +741.194313252463 +11 +-632.139755034707 +21 +-422.38228049373 +31 +804.835469255871 +12 +-537.590671780316 +22 +-537.590671780316 +32 +804.835469255871 +13 +-537.590671780316 +23 +-537.590671780316 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-632.139755034707 +20 +-422.38228049373 +30 +804.835469255871 +11 +-534.658304488796 +21 +-534.658304488796 +31 +741.194313252463 +12 +-628.691655879276 +22 +-420.078334296643 +32 +741.194313252463 +13 +-628.691655879276 +23 +-420.078334296643 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-632.139755034707 +20 +-422.38228049373 +30 +804.835469255871 +11 +-528.527588401294 +21 +-528.527588401294 +31 +867.310386884026 +12 +-537.590671780316 +22 +-537.590671780316 +32 +804.835469255871 +13 +-537.590671780316 +23 +-537.590671780316 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-528.527588401294 +20 +-528.527588401294 +30 +867.310386884026 +11 +-632.139755034707 +21 +-422.38228049373 +31 +804.835469255871 +12 +-621.482696406623 +22 +-415.26146157539 +32 +867.310386884026 +13 +-621.482696406623 +23 +-415.26146157539 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-388.426686378325 +20 +-259.538414235776 +30 +1100.8886000213 +11 +-528.527588401294 +21 +-528.527588401294 +31 +867.310386884026 +12 +-621.482696406623 +22 +-415.26146157539 +32 +867.310386884026 +13 +-621.482696406623 +23 +-415.26146157539 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-528.527588401294 +20 +-528.527588401294 +30 +867.310386884026 +11 +-388.426686378325 +21 +-259.538414235776 +31 +1100.8886000213 +12 +-330.32974370685 +22 +-330.32974370685 +32 +1100.8886000213 +13 +-330.32974370685 +23 +-330.32974370685 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-164.051007270482 +20 +-824.740107573921 +30 +2408.9276400213 +11 +0.0 +21 +-882.422285845505 +31 +2355.16675535807 +12 +-172.152047899808 +22 +-865.466789057043 +32 +2355.16675535807 +13 +-172.152047899808 +23 +-865.466789057043 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-882.422285845505 +30 +2355.16675535807 +11 +-164.051007270482 +21 +-824.740107573921 +31 +2408.9276400213 +12 +0.0 +22 +-840.897721502147 +32 +2408.9276400213 +13 +0.0 +23 +-840.897721502147 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.822264545374 +20 +-690.822264545374 +30 +1967.39330582966 +11 +-536.042485570819 +21 +-802.244272938819 +31 +1900.55285125842 +12 +-682.252673061849 +22 +-682.252673061849 +32 +1900.55285125842 +13 +-682.252673061849 +23 +-682.252673061849 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-536.042485570819 +20 +-802.244272938819 +30 +1900.55285125842 +11 +-690.822264545374 +21 +-690.822264545374 +31 +1967.39330582966 +12 +-542.775570394861 +22 +-812.321046486997 +32 +1967.39330582966 +13 +-542.775570394861 +23 +-812.321046486997 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +595.634670540536 +20 +-118.479102410621 +30 +1287.75132002131 +11 +700.735203605455 +21 +-1.80477854883065e-13 +31 +1100.8886000213 +12 +687.270773156591 +22 +-136.706656519426 +32 +1100.8886000213 +13 +687.270773156591 +23 +-136.706656519426 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +700.735203605455 +20 +-1.80477854883065e-13 +30 +1100.8886000213 +11 +595.634670540536 +21 +-118.479102410621 +31 +1287.75132002131 +12 +607.303843605455 +22 +-1.80477854883065e-13 +32 +1287.75132002131 +13 +607.303843605455 +23 +-1.80477854883065e-13 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-735.304703143143 +30 +680.911023534629 +11 +136.426435300007 +21 +-685.862005953678 +31 +628.271001705821 +12 +0.0 +22 +-699.298837021391 +32 +628.271001705821 +13 +0.0 +23 +-699.298837021391 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +136.426435300007 +20 +-685.862005953678 +30 +628.271001705821 +11 +0.0 +21 +-735.304703143143 +31 +680.911023534629 +12 +143.450831316169 +22 +-721.176029454062 +32 +680.911023534629 +13 +143.450831316169 +23 +-721.176029454062 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-785.609632890959 +20 +-524.927574441361 +30 +1835.6354447734 +11 +-891.406075310523 +21 +-369.232485975391 +31 +1900.55285125842 +12 +-802.244272938819 +22 +-536.042485570818 +32 +1900.55285125842 +13 +-802.244272938819 +23 +-536.042485570818 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-891.406075310523 +20 +-369.232485975391 +30 +1900.55285125842 +11 +-785.609632890959 +21 +-524.927574441361 +31 +1835.6354447734 +12 +-872.922653615348 +22 +-361.576402030189 +32 +1835.6354447734 +13 +-872.922653615348 +23 +-361.576402030189 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-917.237009349992 +20 +0.0 +30 +2296.83616997626 +11 +-865.466789057043 +21 +-172.152047899808 +31 +2355.16675535807 +12 +-899.612557411553 +22 +-178.9440635192 +32 +2296.83616997626 +13 +-899.612557411553 +23 +-178.9440635192 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-865.466789057043 +20 +-172.152047899808 +30 +2355.16675535807 +11 +-917.237009349992 +21 +0.0 +31 +2296.83616997626 +12 +-882.422285845505 +22 +0.0 +32 +2355.16675535807 +13 +-882.422285845505 +23 +0.0 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-337.688389142806 +20 +-815.251888924486 +30 +2355.16675535807 +11 +-178.9440635192 +21 +-899.612557411553 +31 +2296.83616997626 +12 +-351.011407030345 +22 +-847.416499400322 +32 +2296.83616997626 +13 +-351.011407030345 +23 +-847.416499400322 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-178.9440635192 +20 +-899.612557411553 +30 +2296.83616997626 +11 +-337.688389142806 +21 +-815.251888924486 +31 +2355.16675535807 +12 +-172.152047899808 +22 +-865.466789057043 +32 +2355.16675535807 +13 +-172.152047899808 +23 +-865.466789057043 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-321.797626332425 +20 +-776.88819383121 +30 +2408.9276400213 +11 +-172.152047899808 +21 +-865.466789057043 +31 +2355.16675535807 +12 +-337.688389142806 +22 +-815.251888924486 +32 +2355.16675535807 +13 +-337.688389142806 +23 +-815.251888924486 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-172.152047899808 +20 +-865.466789057043 +30 +2355.16675535807 +11 +-321.797626332425 +21 +-776.88819383121 +31 +2408.9276400213 +12 +-164.051007270482 +22 +-824.740107573921 +32 +2408.9276400213 +13 +-164.051007270482 +23 +-824.740107573921 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-747.450883605455 +20 +0.0 +30 +1287.75132002131 +11 +-641.452721848564 +21 +-127.592879465023 +31 +1474.6140400213 +12 +-733.088824464619 +22 +-145.820433573828 +32 +1287.75132002131 +13 +-733.088824464619 +23 +-145.820433573828 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-641.452721848564 +20 +-127.592879465023 +30 +1474.6140400213 +11 +-747.450883605455 +21 +0.0 +31 +1287.75132002131 +12 +-654.019523605455 +22 +0.0 +32 +1474.6140400213 +13 +-654.019523605455 +23 +0.0 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-623.966782191491 +20 +-623.966782191491 +30 +1715.23764468454 +11 +-467.1777430806 +21 +-699.180902483483 +31 +1661.47676002131 +12 +-594.604481158485 +22 +-594.604481158485 +32 +1661.47676002131 +13 +-594.604481158485 +23 +-594.604481158485 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-467.1777430806 +20 +-699.180902483483 +30 +1661.47676002131 +11 +-623.966782191491 +21 +-623.966782191491 +31 +1715.23764468454 +12 +-490.247554968878 +22 +-733.707315899088 +32 +1715.23764468454 +13 +-490.247554968878 +23 +-733.707315899088 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-369.232485975391 +20 +-891.406075310522 +30 +2169.85154878419 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-373.87031546612 +22 +-902.602786167016 +32 +2103.01109421295 +13 +-373.87031546612 +23 +-902.602786167016 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-190.597433982906 +20 +-958.19800696011 +30 +2103.01109421295 +11 +-369.232485975391 +21 +-891.406075310522 +31 +2169.85154878419 +12 +-188.233089011893 +22 +-946.311642114328 +32 +2169.85154878419 +13 +-188.233089011893 +23 +-946.311642114328 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.554572920556 +20 +-286.037069662455 +30 +2408.9276400213 +11 +-621.482696406623 +21 +-415.26146157539 +31 +2549.0746800213 +12 +-621.482696406623 +22 +-415.26146157539 +32 +2408.9276400213 +13 +-621.482696406623 +23 +-415.26146157539 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-621.482696406623 +20 +-415.26146157539 +30 +2549.0746800213 +11 +-690.554572920556 +21 +-286.037069662455 +31 +2408.9276400213 +12 +-690.554572920556 +22 +-286.037069662455 +32 +2549.0746800213 +13 +-690.554572920556 +23 +-286.037069662455 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-388.509617834311 +20 +-581.445732901797 +30 +628.271001705821 +11 +-460.088220979597 +21 +-460.088220979597 +31 +587.016306884026 +12 +-494.478949733692 +22 +-494.478949733692 +32 +628.271001705821 +13 +-494.478949733692 +23 +-494.478949733692 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-460.088220979597 +20 +-460.088220979597 +30 +587.016306884026 +11 +-388.509617834311 +21 +-581.445732901797 +31 +628.271001705821 +12 +-361.48899563696 +22 +-541.006514010434 +32 +587.016306884026 +13 +-361.48899563696 +23 +-541.006514010434 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-542.775570394861 +20 +-812.321046486997 +30 +1967.39330582966 +11 +-369.232485975391 +21 +-891.406075310522 +31 +1900.55285125842 +12 +-536.042485570819 +22 +-802.244272938819 +32 +1900.55285125842 +13 +-536.042485570819 +23 +-802.244272938819 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-369.232485975391 +20 +-891.406075310522 +30 +1900.55285125842 +11 +-542.775570394861 +21 +-812.321046486997 +31 +1967.39330582966 +12 +-373.870315466121 +22 +-902.602786167016 +32 +1967.39330582966 +13 +-373.870315466121 +23 +-902.602786167016 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-778.906875772646 +20 +-154.93421062823 +30 +1474.6140400213 +11 +-647.39491232121 +21 +-268.159752894786 +31 +1661.47676002131 +12 +-733.714233519903 +22 +-303.914386430124 +32 +1474.6140400213 +13 +-733.714233519903 +23 +-303.914386430124 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-647.39491232121 +20 +-268.159752894786 +30 +1661.47676002131 +11 +-778.906875772646 +21 +-154.93421062823 +31 +1474.6140400213 +12 +-687.270773156591 +22 +-136.706656519425 +32 +1661.47676002131 +13 +-687.270773156591 +23 +-136.706656519425 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-369.232485975391 +20 +-891.406075310522 +30 +1900.55285125842 +11 +-184.330051263378 +21 +-926.689746301964 +31 +1835.6354447734 +12 +-361.576402030189 +22 +-872.922653615348 +32 +1835.6354447734 +13 +-361.576402030189 +23 +-872.922653615348 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-184.330051263378 +20 +-926.689746301964 +30 +1835.6354447734 +11 +-369.232485975391 +21 +-891.406075310522 +31 +1900.55285125842 +12 +-188.233089011893 +22 +-946.311642114328 +32 +1900.55285125842 +13 +-188.233089011893 +23 +-946.311642114328 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-698.564739508658 +20 +-289.354989300114 +30 +741.194313252463 +11 +-745.659682232799 +21 +-148.32093265249 +31 +804.835469255871 +12 +-702.396062011173 +22 +-290.941975042481 +32 +804.835469255871 +13 +-702.396062011173 +23 +-290.941975042481 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-745.659682232799 +20 +-148.32093265249 +30 +804.835469255871 +11 +-698.564739508658 +21 +-289.354989300114 +31 +741.194313252463 +12 +-741.592371958341 +22 +-147.511894336929 +32 +741.194313252463 +13 +-741.592371958341 +23 +-147.511894336929 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-127.592879465023 +20 +-641.452721848564 +30 +1474.6140400213 +11 +0.0 +21 +-747.450883605455 +31 +1287.75132002131 +12 +-145.820433573828 +22 +-733.088824464619 +32 +1287.75132002131 +13 +-145.820433573828 +23 +-733.088824464619 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-747.450883605455 +30 +1287.75132002131 +11 +-127.592879465023 +21 +-641.452721848564 +31 +1474.6140400213 +12 +0.0 +22 +-654.019523605455 +32 +1474.6140400213 +13 +0.0 +23 +-654.019523605455 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-981.029283605455 +20 +-1.80477854883065e-13 +30 +2035.2022000213 +11 +-958.19800696011 +21 +-190.597433982906 +31 +2103.01109421295 +12 +-962.179081004757 +22 +-191.38931884584 +32 +2035.2022000213 +13 +-962.179081004757 +23 +-191.38931884584 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-958.19800696011 +20 +-190.597433982906 +30 +2103.01109421295 +11 +-981.029283605455 +21 +-1.80477854883065e-13 +31 +2035.2022000213 +12 +-976.970215709361 +22 +0.0 +32 +2103.01109421295 +13 +-976.970215709361 +23 +0.0 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-865.466789057043 +20 +-172.152047899808 +30 +1715.23764468454 +11 +-917.237009349992 +21 +0.0 +31 +1773.56823006635 +12 +-899.612557411553 +22 +-178.944063519201 +32 +1773.56823006635 +13 +-899.612557411553 +23 +-178.944063519201 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-917.237009349992 +20 +0.0 +30 +1773.56823006635 +11 +-865.466789057043 +21 +-172.152047899808 +31 +1715.23764468454 +12 +-882.422285845505 +22 +0.0 +32 +1715.23764468454 +13 +-882.422285845505 +23 +0.0 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-944.844671731792 +20 +0.0 +30 +2234.76895526921 +11 +-899.612557411553 +21 +-178.9440635192 +31 +2296.83616997626 +12 +-926.689746301964 +22 +-184.330051263378 +32 +2234.76895526921 +13 +-926.689746301964 +23 +-184.330051263378 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-899.612557411553 +20 +-178.9440635192 +30 +2296.83616997626 +11 +-944.844671731792 +21 +0.0 +31 +2234.76895526921 +12 +-917.237009349992 +22 +0.0 +32 +2296.83616997626 +13 +-917.237009349992 +23 +0.0 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-762.654700553784 +20 +-509.589579018778 +30 +1773.56823006635 +11 +-872.922653615348 +21 +-361.576402030189 +31 +1835.6354447734 +12 +-785.609632890959 +22 +-524.927574441361 +32 +1835.6354447734 +13 +-785.609632890959 +23 +-524.927574441361 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-872.922653615348 +20 +-361.576402030189 +30 +1835.6354447734 +11 +-762.654700553784 +21 +-509.589579018778 +31 +1773.56823006635 +12 +-847.416499400322 +22 +-351.011407030345 +32 +1773.56823006635 +13 +-847.416499400322 +23 +-351.011407030345 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-679.332965393238 +20 +-281.388927633011 +30 +680.911023534629 +11 +-741.592371958341 +21 +-147.511894336929 +31 +741.194313252463 +12 +-698.564739508658 +22 +-289.354989300114 +32 +741.194313252463 +13 +-698.564739508658 +23 +-289.354989300114 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-741.592371958341 +20 +-147.511894336929 +30 +741.194313252463 +11 +-679.332965393238 +21 +-281.388927633011 +31 +680.911023534629 +12 +-721.176029454062 +22 +-143.450831316169 +32 +680.911023534629 +13 +-721.176029454062 +23 +-143.450831316169 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-389.307620352121 +20 +-582.640028068573 +30 +1661.47676002131 +11 +-303.914386430124 +21 +-733.714233519903 +31 +1474.6140400213 +12 +-441.21530279866 +22 +-660.325364744672 +32 +1474.6140400213 +13 +-441.21530279866 +23 +-660.325364744672 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-303.914386430124 +20 +-733.714233519903 +30 +1474.6140400213 +11 +-389.307620352121 +21 +-582.640028068573 +31 +1661.47676002131 +12 +-268.159752894786 +22 +-647.39491232121 +32 +1661.47676002131 +13 +-268.159752894786 +23 +-647.39491232121 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-594.604481158485 +20 +-594.604481158485 +30 +1661.47676002131 +11 +-733.707315899088 +21 +-490.247554968877 +31 +1715.23764468454 +12 +-623.966782191491 +22 +-623.966782191491 +32 +1715.23764468454 +13 +-623.966782191491 +23 +-623.966782191491 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.707315899088 +20 +-490.247554968877 +30 +1715.23764468454 +11 +-594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +-699.180902483484 +22 +-467.1777430806 +32 +1661.47676002131 +13 +-699.180902483484 +23 +-467.1777430806 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-623.966782191491 +20 +-623.966782191491 +30 +1715.23764468454 +11 +-762.654700553784 +21 +-509.589579018778 +31 +1773.56823006635 +12 +-648.584509266648 +22 +-648.584509266648 +32 +1773.56823006635 +13 +-648.584509266648 +23 +-648.584509266648 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-762.654700553784 +20 +-509.589579018778 +30 +1773.56823006635 +11 +-623.966782191491 +21 +-623.966782191491 +31 +1715.23764468454 +12 +-733.707315899088 +22 +-490.247554968877 +32 +1715.23764468454 +13 +-733.707315899088 +23 +-490.247554968877 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-519.938941830878 +20 +-519.938941830878 +30 +680.911023534629 +11 +-628.691655879276 +21 +-420.078334296643 +31 +741.194313252463 +12 +-534.658304488796 +22 +-534.658304488796 +32 +741.194313252463 +13 +-534.658304488796 +23 +-534.658304488796 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-628.691655879276 +20 +-420.078334296643 +30 +741.194313252463 +11 +-519.938941830878 +21 +-519.938941830878 +31 +680.911023534629 +12 +-611.383516446667 +22 +-408.513405265645 +32 +680.911023534629 +13 +-611.383516446667 +23 +-408.513405265645 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-685.862005953678 +20 +-136.426435300007 +30 +628.271001705821 +11 +-650.663001997455 +21 +0.0 +31 +587.016306884026 +12 +-699.298837021391 +22 +0.0 +32 +628.271001705821 +13 +-699.298837021391 +23 +0.0 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-650.663001997455 +20 +0.0 +30 +587.016306884026 +11 +-685.862005953678 +21 +-136.426435300007 +31 +628.271001705821 +12 +-638.160694862082 +22 +-126.938054583664 +32 +587.016306884026 +13 +-638.160694862082 +23 +-126.938054583664 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.822264545374 +20 +-690.822264545373 +30 +2103.01109421295 +11 +-545.030667691736 +21 +-815.696038096871 +31 +2035.2022000213 +12 +-693.692458979998 +22 +-693.692458979998 +32 +2035.2022000213 +13 +-693.692458979998 +23 +-693.692458979998 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-545.030667691736 +20 +-815.696038096871 +30 +2035.2022000213 +11 +-690.822264545374 +21 +-690.822264545373 +31 +2103.01109421295 +12 +-542.775570394861 +22 +-812.321046486996 +32 +2103.01109421295 +13 +-542.775570394861 +23 +-812.321046486996 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-682.252673061849 +20 +-682.252673061848 +30 +2169.85154878419 +11 +-542.775570394861 +21 +-812.321046486996 +31 +2103.01109421295 +12 +-690.822264545374 +22 +-690.822264545373 +32 +2103.01109421295 +13 +-690.822264545374 +23 +-690.822264545373 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-542.775570394861 +20 +-812.321046486996 +30 +2103.01109421295 +11 +-682.252673061849 +21 +-682.252673061848 +31 +2169.85154878419 +12 +-536.042485570818 +22 +-802.244272938819 +32 +2169.85154878419 +13 +-536.042485570818 +23 +-802.244272938819 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-747.450883605455 +30 +867.310386884026 +11 +148.32093265249 +21 +-745.659682232799 +31 +804.835469255871 +12 +0.0 +22 +-760.268019036986 +32 +804.835469255871 +13 +0.0 +23 +-760.268019036986 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +148.32093265249 +20 +-745.659682232799 +30 +804.835469255871 +11 +0.0 +21 +-747.450883605455 +31 +867.310386884026 +12 +145.820433573828 +22 +-733.088824464618 +32 +867.310386884026 +13 +145.820433573828 +23 +-733.088824464618 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +91.1377712474136 +20 +-458.180516616454 +30 +1100.8886000213 +11 +0.0 +21 +-747.450883605455 +31 +867.310386884026 +12 +0.0 +22 +-467.156803605456 +32 +1100.8886000213 +13 +0.0 +23 +-467.156803605456 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-747.450883605455 +30 +867.310386884026 +11 +91.1377712474136 +21 +-458.180516616454 +31 +1100.8886000213 +12 +145.820433573828 +22 +-733.088824464618 +32 +867.310386884026 +13 +145.820433573828 +23 +-733.088824464618 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-847.416499400322 +20 +-351.011407030345 +30 +1773.56823006635 +11 +-926.689746301964 +21 +-184.330051263378 +31 +1835.6354447734 +12 +-872.922653615348 +22 +-361.576402030189 +32 +1835.6354447734 +13 +-872.922653615348 +23 +-361.576402030189 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-926.689746301964 +20 +-184.330051263378 +30 +1835.6354447734 +11 +-847.416499400322 +21 +-351.011407030345 +31 +1773.56823006635 +12 +-899.612557411553 +22 +-178.944063519201 +32 +1773.56823006635 +13 +-899.612557411553 +23 +-178.944063519201 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-190.597433982906 +20 +-958.19800696011 +30 +1967.39330582966 +11 +0.0 +21 +-964.850983209364 +31 +1900.55285125842 +12 +-188.233089011893 +22 +-946.311642114328 +32 +1900.55285125842 +13 +-188.233089011893 +23 +-946.311642114328 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-964.850983209364 +30 +1900.55285125842 +11 +-190.597433982906 +21 +-958.19800696011 +31 +1967.39330582966 +12 +0.0 +22 +-976.970215709361 +32 +1967.39330582966 +13 +0.0 +23 +-976.970215709361 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-756.121025443459 +30 +741.194313252463 +11 +143.450831316169 +21 +-721.176029454062 +31 +680.911023534629 +12 +0.0 +22 +-735.304703143143 +32 +680.911023534629 +13 +0.0 +23 +-735.304703143143 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +143.450831316169 +20 +-721.176029454062 +30 +680.911023534629 +11 +0.0 +21 +-756.121025443459 +31 +741.194313252463 +12 +147.511894336929 +22 +-741.592371958341 +32 +741.194313252463 +13 +147.511894336929 +23 +-741.592371958341 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-760.268019036986 +30 +804.835469255871 +11 +147.511894336929 +21 +-741.592371958341 +31 +741.194313252463 +12 +0.0 +22 +-756.121025443459 +32 +741.194313252463 +13 +0.0 +23 +-756.121025443459 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +147.511894336929 +20 +-741.592371958341 +30 +741.194313252463 +11 +0.0 +21 +-760.268019036986 +31 +804.835469255871 +12 +148.32093265249 +22 +-745.659682232799 +32 +804.835469255871 +13 +148.32093265249 +23 +-745.659682232799 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-760.268019036986 +20 +0.0 +30 +804.835469255871 +11 +-733.088824464618 +21 +-145.820433573828 +31 +867.310386884026 +12 +-745.659682232799 +22 +-148.32093265249 +32 +804.835469255871 +13 +-745.659682232799 +23 +-148.32093265249 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.088824464618 +20 +-145.820433573828 +30 +867.310386884026 +11 +-760.268019036986 +21 +0.0 +31 +804.835469255871 +12 +-747.450883605455 +22 +0.0 +32 +867.310386884026 +13 +-747.450883605455 +23 +0.0 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-872.922653615348 +20 +-361.576402030189 +30 +1835.6354447734 +11 +-946.311642114328 +21 +-188.233089011893 +31 +1900.55285125842 +12 +-891.406075310523 +22 +-369.232485975391 +32 +1900.55285125842 +13 +-891.406075310523 +23 +-369.232485975391 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-946.311642114328 +20 +-188.233089011893 +30 +1900.55285125842 +11 +-872.922653615348 +21 +-361.576402030189 +31 +1835.6354447734 +12 +-926.689746301964 +22 +-184.330051263378 +32 +1835.6354447734 +13 +-926.689746301964 +23 +-184.330051263378 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +641.452721848564 +20 +-127.592879465023 +30 +1474.6140400213 +11 +747.450883605455 +21 +-1.80477854883065e-13 +31 +1287.75132002131 +12 +733.088824464619 +22 +-145.820433573828 +32 +1287.75132002131 +13 +733.088824464619 +23 +-145.820433573828 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +747.450883605455 +20 +-1.80477854883065e-13 +30 +1287.75132002131 +11 +641.452721848564 +21 +-127.592879465023 +31 +1474.6140400213 +12 +654.019523605455 +22 +-1.80477854883065e-13 +32 +1474.6140400213 +13 +654.019523605455 +23 +-1.80477854883065e-13 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-745.659682232799 +20 +-148.32093265249 +30 +804.835469255871 +11 +-690.554572920556 +21 +-286.037069662455 +31 +867.310386884026 +12 +-702.396062011173 +22 +-290.941975042481 +32 +804.835469255871 +13 +-702.396062011173 +23 +-290.941975042481 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.554572920556 +20 +-286.037069662455 +30 +867.310386884026 +11 +-745.659682232799 +21 +-148.32093265249 +31 +804.835469255871 +12 +-733.088824464618 +22 +-145.820433573828 +32 +867.310386884026 +13 +-733.088824464618 +23 +-145.820433573828 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-373.87031546612 +20 +-902.602786167016 +30 +2103.01109421295 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-375.423653500801 +22 +-906.352875917291 +32 +2035.2022000213 +13 +-375.423653500801 +23 +-906.352875917291 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-191.38931884584 +20 +-962.179081004757 +30 +2035.2022000213 +11 +-373.87031546612 +21 +-902.602786167016 +31 +2103.01109421295 +12 +-190.597433982906 +22 +-958.19800696011 +32 +2103.01109421295 +13 +-190.597433982906 +23 +-958.19800696011 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-259.538414235776 +20 +-388.426686378324 +30 +1100.8886000213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +867.310386884026 +12 +-415.26146157539 +22 +-621.482696406622 +32 +867.310386884026 +13 +-415.26146157539 +23 +-621.482696406622 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-286.037069662455 +20 +-690.554572920556 +30 +867.310386884026 +11 +-259.538414235776 +21 +-388.426686378324 +31 +1100.8886000213 +12 +-178.77316905644 +22 +-431.596609324475 +32 +1100.8886000213 +13 +-178.77316905644 +23 +-431.596609324475 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-628.691655879276 +20 +-420.078334296643 +30 +741.194313252463 +11 +-702.396062011173 +21 +-290.941975042481 +31 +804.835469255871 +12 +-632.139755034707 +22 +-422.38228049373 +32 +804.835469255871 +13 +-632.139755034707 +23 +-422.38228049373 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-702.396062011173 +20 +-290.941975042481 +30 +804.835469255871 +11 +-628.691655879276 +21 +-420.078334296643 +31 +741.194313252463 +12 +-698.564739508658 +22 +-289.354989300114 +32 +741.194313252463 +13 +-698.564739508658 +23 +-289.354989300114 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-794.166563605455 +20 +0.0 +30 +1474.6140400213 +11 +-687.270773156591 +21 +-136.706656519425 +31 +1661.47676002131 +12 +-778.906875772646 +22 +-154.93421062823 +32 +1474.6140400213 +13 +-778.906875772646 +23 +-154.93421062823 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-687.270773156591 +20 +-136.706656519425 +30 +1661.47676002131 +11 +-794.166563605455 +21 +0.0 +31 +1474.6140400213 +12 +-700.735203605456 +22 +0.0 +32 +1661.47676002131 +13 +-700.735203605456 +23 +0.0 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-337.399937905583 +20 +-504.954691392473 +30 +1287.75132002131 +11 +-268.159752894786 +21 +-647.39491232121 +31 +1100.8886000213 +12 +-389.307620352121 +22 +-582.640028068573 +32 +1100.8886000213 +13 +-389.307620352121 +23 +-582.640028068573 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-268.159752894786 +20 +-647.39491232121 +30 +1100.8886000213 +11 +-337.399937905583 +21 +-504.954691392473 +31 +1287.75132002131 +12 +-232.405119359447 +22 +-561.075591122516 +32 +1287.75132002131 +13 +-232.405119359447 +23 +-561.075591122516 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-976.970215709361 +20 +0.0 +30 +2103.01109421295 +11 +-946.311642114328 +21 +-188.233089011893 +31 +2169.85154878419 +12 +-958.19800696011 +22 +-190.597433982906 +32 +2103.01109421295 +13 +-958.19800696011 +23 +-190.597433982906 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-946.311642114328 +20 +-188.233089011893 +30 +2169.85154878419 +11 +-976.970215709361 +21 +0.0 +31 +2103.01109421295 +12 +-964.850983209364 +22 +0.0 +32 +2169.85154878419 +13 +-964.850983209364 +23 +0.0 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +679.332965393237 +20 +-281.388927633011 +30 +680.911023534629 +11 +581.445732901797 +21 +-388.509617834311 +31 +628.271001705821 +12 +611.383516446667 +22 +-408.513405265645 +32 +680.911023534629 +13 +611.383516446667 +23 +-408.513405265645 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +581.445732901797 +20 +-388.509617834311 +30 +628.271001705821 +11 +679.332965393237 +21 +-281.388927633011 +31 +680.911023534629 +12 +646.067882633009 +22 +-267.610079200261 +32 +628.271001705821 +13 +646.067882633009 +23 +-267.610079200261 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-145.820433573828 +20 +-733.088824464618 +30 +2549.0746800213 +11 +0.0 +21 +-747.450883605455 +31 +2408.9276400213 +12 +-145.820433573828 +22 +-733.088824464619 +32 +2408.9276400213 +13 +-145.820433573828 +23 +-733.088824464619 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-747.450883605455 +30 +2408.9276400213 +11 +-145.820433573828 +21 +-733.088824464618 +31 +2549.0746800213 +12 +0.0 +22 +-747.450883605455 +32 +2549.0746800213 +13 +0.0 +23 +-747.450883605455 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-621.482696406623 +20 +-415.26146157539 +30 +1287.75132002131 +11 +-462.461640169813 +21 +-462.461640169813 +31 +1474.6140400213 +12 +-528.527588401294 +22 +-528.527588401294 +32 +1287.75132002131 +13 +-528.527588401294 +23 +-528.527588401294 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-462.461640169813 +20 +-462.461640169813 +30 +1474.6140400213 +11 +-621.482696406623 +21 +-415.26146157539 +31 +1287.75132002131 +12 +-543.797359730523 +22 +-363.353779128852 +32 +1474.6140400213 +13 +-543.797359730523 +23 +-363.353779128852 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-668.106074549528 +20 +-668.106074549528 +30 +2234.76895526921 +11 +-536.042485570818 +21 +-802.244272938819 +31 +2169.85154878419 +12 +-682.252673061849 +22 +-682.252673061848 +32 +2169.85154878419 +13 +-682.252673061849 +23 +-682.252673061848 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-536.042485570818 +20 +-802.244272938819 +30 +2169.85154878419 +11 +-668.106074549528 +21 +-668.106074549528 +31 +2234.76895526921 +12 +-524.927574441361 +22 +-785.609632890959 +32 +2234.76895526921 +13 +-524.927574441361 +23 +-785.609632890959 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-646.067882633009 +20 +-267.610079200261 +30 +628.271001705821 +11 +-638.160694862082 +21 +-126.938054583664 +31 +587.016306884026 +12 +-685.862005953678 +22 +-136.426435300007 +32 +628.271001705821 +13 +-685.862005953678 +23 +-136.426435300007 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-638.160694862082 +20 +-126.938054583664 +30 +587.016306884026 +11 +-646.067882633009 +21 +-267.610079200261 +31 +628.271001705821 +12 +-601.134230107799 +22 +-248.997950917359 +32 +587.016306884026 +13 +-601.134230107799 +23 +-248.997950917359 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-467.156803605456 +20 +0.0 +30 +1100.8886000213 +11 +-733.088824464618 +21 +-145.820433573828 +31 +867.310386884026 +12 +-747.450883605455 +22 +0.0 +32 +867.310386884026 +13 +-747.450883605455 +23 +0.0 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-733.088824464618 +20 +-145.820433573828 +30 +867.310386884026 +11 +-467.156803605456 +21 +0.0 +31 +1100.8886000213 +12 +-458.180516616454 +22 +-91.1377712474136 +32 +1100.8886000213 +13 +-458.180516616454 +23 +-91.1377712474136 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-891.406075310523 +20 +-369.232485975391 +30 +1900.55285125842 +11 +-958.198006960111 +21 +-190.597433982906 +31 +1967.39330582966 +12 +-902.602786167016 +22 +-373.87031546612 +32 +1967.39330582966 +13 +-902.602786167016 +23 +-373.87031546612 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-958.198006960111 +20 +-190.597433982906 +30 +1967.39330582966 +11 +-891.406075310523 +21 +-369.232485975391 +31 +1900.55285125842 +12 +-946.311642114328 +22 +-188.233089011893 +32 +1900.55285125842 +13 +-946.311642114328 +23 +-188.233089011893 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-648.584509266648 +20 +-648.584509266648 +30 +1773.56823006635 +11 +-490.247554968878 +21 +-733.707315899088 +31 +1715.23764468454 +12 +-623.966782191491 +22 +-623.966782191491 +32 +1715.23764468454 +13 +-623.966782191491 +23 +-623.966782191491 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-490.247554968878 +20 +-733.707315899088 +30 +1715.23764468454 +11 +-648.584509266648 +21 +-648.584509266648 +31 +1773.56823006635 +12 +-509.589579018779 +22 +-762.654700553784 +32 +1773.56823006635 +13 +-509.589579018779 +23 +-762.654700553784 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-668.106074549528 +20 +-668.106074549528 +30 +1835.6354447734 +11 +-509.589579018779 +21 +-762.654700553784 +31 +1773.56823006635 +12 +-648.584509266648 +22 +-648.584509266648 +32 +1773.56823006635 +13 +-648.584509266648 +23 +-648.584509266648 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-509.589579018779 +20 +-762.654700553784 +30 +1773.56823006635 +11 +-668.106074549528 +21 +-668.106074549528 +31 +1835.6354447734 +12 +-524.927574441361 +22 +-785.609632890959 +32 +1835.6354447734 +13 +-524.927574441361 +23 +-785.609632890959 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-415.26146157539 +20 +-621.482696406622 +30 +867.310386884026 +11 +-290.941975042481 +21 +-702.396062011173 +31 +804.835469255871 +12 +-422.38228049373 +22 +-632.139755034707 +32 +804.835469255871 +13 +-422.38228049373 +23 +-632.139755034707 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-290.941975042481 +20 +-702.396062011173 +30 +804.835469255871 +11 +-415.26146157539 +21 +-621.482696406622 +31 +867.310386884026 +12 +-286.037069662455 +22 +-690.554572920556 +32 +867.310386884026 +13 +-286.037069662455 +23 +-690.554572920556 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-648.584509266648 +20 +-648.584509266648 +30 +1773.56823006635 +11 +-785.609632890959 +21 +-524.927574441361 +31 +1835.6354447734 +12 +-668.106074549528 +22 +-668.106074549528 +32 +1835.6354447734 +13 +-668.106074549528 +23 +-668.106074549528 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-785.609632890959 +20 +-524.927574441361 +30 +1835.6354447734 +11 +-648.584509266648 +21 +-648.584509266648 +31 +1773.56823006635 +12 +-762.654700553784 +22 +-509.589579018778 +32 +1773.56823006635 +13 +-762.654700553784 +23 +-509.589579018778 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-660.325364744673 +20 +-441.215302798659 +30 +1474.6140400213 +11 +-495.494614285554 +21 +-495.494614285554 +31 +1661.47676002131 +12 +-561.560562517035 +22 +-561.560562517035 +32 +1474.6140400213 +13 +-561.560562517035 +23 +-561.560562517035 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-495.494614285554 +20 +-495.494614285554 +30 +1661.47676002131 +11 +-660.325364744673 +21 +-441.215302798659 +31 +1474.6140400213 +12 +-582.640028068573 +22 +-389.307620352121 +32 +1661.47676002131 +13 +-582.640028068573 +23 +-389.307620352121 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-682.252673061849 +20 +-682.252673061849 +30 +1900.55285125842 +11 +-812.321046486997 +21 +-542.775570394861 +31 +1967.39330582966 +12 +-690.822264545374 +22 +-690.822264545374 +32 +1967.39330582966 +13 +-690.822264545374 +23 +-690.822264545374 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-812.321046486997 +20 +-542.775570394861 +30 +1967.39330582966 +11 +-682.252673061849 +21 +-682.252673061849 +31 +1900.55285125842 +12 +-802.244272938819 +22 +-536.042485570818 +32 +1900.55285125842 +13 +-802.244272938819 +23 +-536.042485570818 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-690.822264545374 +20 +-690.822264545374 +30 +1967.39330582966 +11 +-815.696038096872 +21 +-545.030667691736 +31 +2035.2022000213 +12 +-693.692458979998 +22 +-693.692458979998 +32 +2035.2022000213 +13 +-693.692458979998 +23 +-693.692458979998 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-815.696038096872 +20 +-545.030667691736 +30 +2035.2022000213 +11 +-690.822264545374 +21 +-690.822264545374 +31 +1967.39330582966 +12 +-812.321046486997 +22 +-542.775570394861 +32 +1967.39330582966 +13 +-812.321046486997 +23 +-542.775570394861 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-648.584509266648 +20 +-648.584509266648 +30 +2296.83616997626 +11 +-524.927574441361 +21 +-785.609632890959 +31 +2234.76895526921 +12 +-668.106074549528 +22 +-668.106074549528 +32 +2234.76895526921 +13 +-668.106074549528 +23 +-668.106074549528 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-524.927574441361 +20 +-785.609632890959 +30 +2234.76895526921 +11 +-648.584509266648 +21 +-648.584509266648 +31 +2296.83616997626 +12 +-509.589579018778 +22 +-762.654700553784 +32 +2296.83616997626 +13 +-509.589579018778 +23 +-762.654700553784 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-623.966782191491 +20 +-623.96678219149 +30 +2355.16675535807 +11 +-509.589579018778 +21 +-762.654700553784 +31 +2296.83616997626 +12 +-648.584509266648 +22 +-648.584509266648 +32 +2296.83616997626 +13 +-648.584509266648 +23 +-648.584509266648 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-509.589579018778 +20 +-762.654700553784 +30 +2296.83616997626 +11 +-623.966782191491 +21 +-623.96678219149 +31 +2355.16675535807 +12 +-490.247554968877 +22 +-733.707315899088 +32 +2355.16675535807 +13 +-490.247554968877 +23 +-733.707315899088 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-495.494614285554 +20 +-495.494614285554 +30 +1661.47676002131 +11 +-441.21530279866 +21 +-660.325364744672 +31 +1474.6140400213 +12 +-561.560562517035 +22 +-561.560562517035 +32 +1474.6140400213 +13 +-561.560562517035 +23 +-561.560562517035 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-441.21530279866 +20 +-660.325364744672 +30 +1474.6140400213 +11 +-495.494614285554 +21 +-495.494614285554 +31 +1661.47676002131 +12 +-389.307620352121 +22 +-582.640028068573 +32 +1661.47676002131 +13 +-389.307620352121 +23 +-582.640028068573 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-431.596609324475 +20 +-178.77316905644 +30 +1100.8886000213 +11 +-621.482696406623 +21 +-415.26146157539 +31 +867.310386884026 +12 +-690.554572920556 +22 +-286.037069662455 +32 +867.310386884026 +13 +-690.554572920556 +23 +-286.037069662455 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-621.482696406623 +20 +-415.26146157539 +30 +867.310386884026 +11 +-431.596609324475 +21 +-178.77316905644 +31 +1100.8886000213 +12 +-388.426686378325 +22 +-259.538414235776 +32 +1100.8886000213 +13 +-388.426686378325 +23 +-259.538414235776 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-408.513405265646 +20 +-611.383516446667 +30 +680.911023534629 +11 +-267.610079200261 +21 +-646.067882633009 +31 +628.271001705821 +12 +-388.509617834311 +22 +-581.445732901797 +32 +628.271001705821 +13 +-388.509617834311 +23 +-581.445732901797 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-267.610079200261 +20 +-646.067882633009 +30 +628.271001705821 +11 +-408.513405265646 +21 +-611.383516446667 +31 +680.911023534629 +12 +-281.388927633011 +22 +-679.332965393238 +32 +680.911023534629 +13 +-281.388927633011 +23 +-679.332965393238 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-420.078334296643 +20 +-628.691655879275 +30 +741.194313252463 +11 +-281.388927633011 +21 +-679.332965393238 +31 +680.911023534629 +12 +-408.513405265646 +22 +-611.383516446667 +32 +680.911023534629 +13 +-408.513405265646 +23 +-611.383516446667 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-281.388927633011 +20 +-679.332965393238 +30 +680.911023534629 +11 +-420.078334296643 +21 +-628.691655879275 +31 +741.194313252463 +12 +-289.354989300114 +22 +-698.564739508657 +32 +741.194313252463 +13 +-289.354989300114 +23 +-698.564739508657 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-422.38228049373 +20 +-632.139755034707 +30 +804.835469255871 +11 +-289.354989300114 +21 +-698.564739508657 +31 +741.194313252463 +12 +-420.078334296643 +22 +-628.691655879275 +32 +741.194313252463 +13 +-420.078334296643 +23 +-628.691655879275 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-289.354989300114 +20 +-698.564739508657 +30 +741.194313252463 +11 +-422.38228049373 +21 +-632.139755034707 +31 +804.835469255871 +12 +-290.941975042481 +22 +-702.396062011173 +32 +804.835469255871 +13 +-290.941975042481 +23 +-702.396062011173 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-917.237009349992 +30 +1773.56823006635 +11 +172.152047899807 +21 +-865.466789057044 +31 +1715.23764468454 +12 +0.0 +22 +-882.422285845505 +32 +1715.23764468454 +13 +0.0 +23 +-882.422285845505 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +172.152047899807 +20 +-865.466789057044 +30 +1715.23764468454 +11 +0.0 +21 +-917.237009349992 +31 +1773.56823006635 +12 +178.9440635192 +22 +-899.612557411553 +32 +1773.56823006635 +13 +178.9440635192 +23 +-899.612557411553 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-594.604481158485 +20 +-594.604481158485 +30 +2408.9276400213 +11 +-490.247554968877 +21 +-733.707315899088 +31 +2355.16675535807 +12 +-623.966782191491 +22 +-623.96678219149 +32 +2355.16675535807 +13 +-623.966782191491 +23 +-623.96678219149 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-490.247554968877 +20 +-733.707315899088 +30 +2355.16675535807 +11 +-594.604481158485 +21 +-594.604481158485 +31 +2408.9276400213 +12 +-467.1777430806 +22 +-699.180902483483 +32 +2408.9276400213 +13 +-467.1777430806 +23 +-699.180902483483 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +-415.26146157539 +21 +-621.482696406623 +31 +2408.9276400213 +12 +-528.527588401294 +22 +-528.527588401294 +32 +2408.9276400213 +13 +-528.527588401294 +23 +-528.527588401294 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-415.26146157539 +20 +-621.482696406623 +30 +2408.9276400213 +11 +-528.527588401294 +21 +-528.527588401294 +31 +2549.0746800213 +12 +-415.26146157539 +22 +-621.482696406622 +32 +2549.0746800213 +13 +-415.26146157539 +23 +-621.482696406622 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-621.482696406623 +20 +-415.26146157539 +30 +2408.9276400213 +11 +-528.527588401294 +21 +-528.527588401294 +31 +2549.0746800213 +12 +-528.527588401294 +22 +-528.527588401294 +32 +2408.9276400213 +13 +-528.527588401294 +23 +-528.527588401294 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +-621.482696406623 +21 +-415.26146157539 +31 +2408.9276400213 +12 +-621.482696406623 +22 +-415.26146157539 +32 +2549.0746800213 +13 +-621.482696406623 +23 +-415.26146157539 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +687.270773156591 +20 +-136.706656519426 +30 +1661.47676002131 +11 +794.166563605455 +21 +-1.80477854883065e-13 +31 +1474.6140400213 +12 +778.906875772646 +22 +-154.934210628231 +32 +1474.6140400213 +13 +778.906875772646 +23 +-154.934210628231 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +794.166563605455 +20 +-1.80477854883065e-13 +30 +1474.6140400213 +11 +687.270773156591 +21 +-136.706656519426 +31 +1661.47676002131 +12 +700.735203605455 +22 +-1.80477854883065e-13 +32 +1661.47676002131 +13 +700.735203605455 +23 +-1.80477854883065e-13 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +882.422285845505 +20 +-1.80477854883065e-13 +30 +1715.23764468454 +11 +824.740107573921 +21 +-164.051007270483 +31 +1661.47676002131 +12 +865.466789057043 +22 +-172.152047899808 +32 +1715.23764468454 +13 +865.466789057043 +23 +-172.152047899808 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +824.740107573921 +20 +-164.051007270483 +30 +1661.47676002131 +11 +882.422285845505 +21 +-1.80477854883065e-13 +31 +1715.23764468454 +12 +840.897721502147 +22 +-1.80477854883065e-13 +32 +1661.47676002131 +13 +840.897721502147 +23 +-1.80477854883065e-13 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-524.927574441361 +20 +-785.609632890959 +30 +2234.76895526921 +11 +-369.232485975391 +21 +-891.406075310522 +31 +2169.85154878419 +12 +-536.042485570818 +22 +-802.244272938819 +32 +2169.85154878419 +13 +-536.042485570818 +23 +-802.244272938819 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-369.232485975391 +20 +-891.406075310522 +30 +2169.85154878419 +11 +-524.927574441361 +21 +-785.609632890959 +31 +2234.76895526921 +12 +-361.576402030189 +22 +-872.922653615348 +32 +2234.76895526921 +13 +-361.576402030189 +23 +-872.922653615348 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-509.589579018778 +20 +-762.654700553784 +30 +2296.83616997626 +11 +-361.576402030189 +21 +-872.922653615348 +31 +2234.76895526921 +12 +-524.927574441361 +22 +-785.609632890959 +32 +2234.76895526921 +13 +-524.927574441361 +23 +-785.609632890959 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-361.576402030189 +20 +-872.922653615348 +30 +2234.76895526921 +11 +-509.589579018778 +21 +-762.654700553784 +31 +2296.83616997626 +12 +-351.011407030345 +22 +-847.416499400322 +32 +2296.83616997626 +13 +-351.011407030345 +23 +-847.416499400322 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-490.247554968878 +20 +-733.707315899088 +30 +1715.23764468454 +11 +-321.797626332425 +21 +-776.88819383121 +31 +1661.47676002131 +12 +-467.1777430806 +22 +-699.180902483483 +32 +1661.47676002131 +13 +-467.1777430806 +23 +-699.180902483483 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-321.797626332425 +20 +-776.88819383121 +30 +1661.47676002131 +11 +-490.247554968878 +21 +-733.707315899088 +31 +1715.23764468454 +12 +-337.688389142806 +22 +-815.251888924487 +32 +1715.23764468454 +13 +-337.688389142806 +23 +-815.251888924487 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-494.478949733692 +20 +-494.478949733692 +30 +628.271001705821 +11 +-541.006514010434 +21 +-361.48899563696 +31 +587.016306884026 +12 +-581.445732901797 +22 +-388.509617834311 +32 +628.271001705821 +13 +-581.445732901797 +23 +-388.509617834311 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-541.006514010434 +20 +-361.48899563696 +30 +587.016306884026 +11 +-494.478949733692 +21 +-494.478949733692 +31 +628.271001705821 +12 +-460.088220979597 +22 +-460.088220979597 +32 +587.016306884026 +13 +-460.088220979597 +23 +-460.088220979597 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-509.589579018779 +20 +-762.654700553784 +30 +1773.56823006635 +11 +-337.688389142806 +21 +-815.251888924487 +31 +1715.23764468454 +12 +-490.247554968878 +22 +-733.707315899088 +32 +1715.23764468454 +13 +-490.247554968878 +23 +-733.707315899088 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-337.688389142806 +20 +-815.251888924487 +30 +1715.23764468454 +11 +-509.589579018779 +21 +-762.654700553784 +31 +1773.56823006635 +12 +-351.011407030345 +22 +-847.416499400322 +32 +1773.56823006635 +13 +-351.011407030345 +23 +-847.416499400322 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-524.927574441361 +20 +-785.609632890959 +30 +1835.6354447734 +11 +-351.011407030345 +21 +-847.416499400322 +31 +1773.56823006635 +12 +-509.589579018779 +22 +-762.654700553784 +32 +1773.56823006635 +13 +-509.589579018779 +23 +-762.654700553784 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-351.011407030345 +20 +-847.416499400322 +30 +1773.56823006635 +11 +-524.927574441361 +21 +-785.609632890959 +31 +1835.6354447734 +12 +-361.576402030189 +22 +-872.922653615348 +32 +1835.6354447734 +13 +-361.576402030189 +23 +-872.922653615348 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-536.042485570819 +20 +-802.244272938819 +30 +1900.55285125842 +11 +-361.576402030189 +21 +-872.922653615348 +31 +1835.6354447734 +12 +-524.927574441361 +22 +-785.609632890959 +32 +1835.6354447734 +13 +-524.927574441361 +23 +-785.609632890959 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-361.576402030189 +20 +-872.922653615348 +30 +1835.6354447734 +11 +-536.042485570819 +21 +-802.244272938819 +31 +1900.55285125842 +12 +-369.232485975391 +22 +-891.406075310522 +32 +1900.55285125842 +13 +-369.232485975391 +23 +-891.406075310522 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-700.735203605455 +30 +1661.47676002131 +11 +154.93421062823 +21 +-778.906875772646 +31 +1474.6140400213 +12 +0.0 +22 +-794.166563605455 +32 +1474.6140400213 +13 +0.0 +23 +-794.166563605455 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +154.93421062823 +20 +-778.906875772646 +30 +1474.6140400213 +11 +0.0 +21 +-700.735203605455 +31 +1661.47676002131 +12 +136.706656519425 +22 +-687.270773156591 +32 +1661.47676002131 +13 +136.706656519425 +23 +-687.270773156591 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-542.775570394861 +20 +-812.321046486996 +30 +2103.01109421295 +11 +-375.423653500801 +21 +-906.352875917291 +31 +2035.2022000213 +12 +-545.030667691736 +22 +-815.696038096871 +32 +2035.2022000213 +13 +-545.030667691736 +23 +-815.696038096871 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-375.423653500801 +20 +-906.352875917291 +30 +2035.2022000213 +11 +-542.775570394861 +21 +-812.321046486996 +31 +2103.01109421295 +12 +-373.87031546612 +22 +-902.602786167016 +32 +2103.01109421295 +13 +-373.87031546612 +23 +-902.602786167016 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-536.042485570818 +20 +-802.244272938819 +30 +2169.85154878419 +11 +-373.87031546612 +21 +-902.602786167016 +31 +2103.01109421295 +12 +-542.775570394861 +22 +-812.321046486996 +32 +2103.01109421295 +13 +-542.775570394861 +23 +-812.321046486996 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-373.87031546612 +20 +-902.602786167016 +30 +2103.01109421295 +11 +-536.042485570818 +21 +-802.244272938819 +31 +2169.85154878419 +12 +-369.232485975391 +22 +-891.406075310522 +32 +2169.85154878419 +13 +-369.232485975391 +23 +-891.406075310522 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-891.406075310522 +20 +-369.232485975391 +30 +2169.85154878419 +11 +-785.609632890959 +21 +-524.927574441361 +31 +2234.76895526921 +12 +-802.244272938819 +22 +-536.042485570818 +32 +2169.85154878419 +13 +-802.244272938819 +23 +-536.042485570818 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-785.609632890959 +20 +-524.927574441361 +30 +2234.76895526921 +11 +-891.406075310522 +21 +-369.232485975391 +31 +2169.85154878419 +12 +-872.922653615348 +22 +-361.576402030189 +32 +2234.76895526921 +13 +-872.922653615348 +23 +-361.576402030189 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-872.922653615348 +20 +-361.576402030189 +30 +2234.76895526921 +11 +-762.654700553784 +21 +-509.589579018778 +31 +2296.83616997626 +12 +-785.609632890959 +22 +-524.927574441361 +32 +2234.76895526921 +13 +-785.609632890959 +23 +-524.927574441361 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-762.654700553784 +20 +-509.589579018778 +30 +2296.83616997626 +11 +-872.922653615348 +21 +-361.576402030189 +31 +2234.76895526921 +12 +-847.416499400322 +22 +-351.011407030345 +32 +2296.83616997626 +13 +-847.416499400322 +23 +-351.011407030345 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-611.383516446667 +20 +-408.513405265645 +30 +680.911023534629 +11 +-698.564739508658 +21 +-289.354989300114 +31 +741.194313252463 +12 +-628.691655879276 +22 +-420.078334296643 +32 +741.194313252463 +13 +-628.691655879276 +23 +-420.078334296643 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-698.564739508658 +20 +-289.354989300114 +30 +741.194313252463 +11 +-611.383516446667 +21 +-408.513405265645 +31 +680.911023534629 +12 +-679.332965393238 +22 +-281.388927633011 +32 +680.911023534629 +13 +-679.332965393238 +23 +-281.388927633011 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-545.030667691736 +20 +-815.696038096871 +30 +2035.2022000213 +11 +-373.870315466121 +21 +-902.602786167016 +31 +1967.39330582966 +12 +-542.775570394861 +22 +-812.321046486997 +32 +1967.39330582966 +13 +-542.775570394861 +23 +-812.321046486997 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-373.870315466121 +20 +-902.602786167016 +30 +1967.39330582966 +11 +-545.030667691736 +21 +-815.696038096871 +31 +2035.2022000213 +12 +-375.423653500801 +22 +-906.352875917291 +32 +2035.2022000213 +13 +-375.423653500801 +23 +-906.352875917291 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-490.247554968877 +20 +-733.707315899088 +30 +2355.16675535807 +11 +-351.011407030345 +21 +-847.416499400322 +31 +2296.83616997626 +12 +-509.589579018778 +22 +-762.654700553784 +32 +2296.83616997626 +13 +-509.589579018778 +23 +-762.654700553784 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-351.011407030345 +20 +-847.416499400322 +30 +2296.83616997626 +11 +-490.247554968877 +21 +-733.707315899088 +31 +2355.16675535807 +12 +-337.688389142806 +22 +-815.251888924486 +32 +2355.16675535807 +13 +-337.688389142806 +23 +-815.251888924486 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-467.1777430806 +20 +-699.180902483483 +30 +2408.9276400213 +11 +-337.688389142806 +21 +-815.251888924486 +31 +2355.16675535807 +12 +-490.247554968877 +22 +-733.707315899088 +32 +2355.16675535807 +13 +-490.247554968877 +23 +-733.707315899088 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-337.688389142806 +20 +-815.251888924486 +30 +2355.16675535807 +11 +-467.1777430806 +21 +-699.180902483483 +31 +2408.9276400213 +12 +-321.797626332425 +22 +-776.88819383121 +32 +2408.9276400213 +13 +-321.797626332425 +23 +-776.88819383121 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-267.610079200261 +20 +-646.067882633009 +30 +628.271001705821 +11 +-361.48899563696 +21 +-541.006514010434 +31 +587.016306884026 +12 +-388.509617834311 +22 +-581.445732901797 +32 +628.271001705821 +13 +-388.509617834311 +23 +-581.445732901797 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-361.48899563696 +20 +-541.006514010434 +30 +587.016306884026 +11 +-267.610079200261 +21 +-646.067882633009 +31 +628.271001705821 +12 +-248.997950917359 +22 +-601.134230107799 +32 +587.016306884026 +13 +-248.997950917359 +23 +-601.134230107799 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-415.26146157539 +20 +-621.482696406622 +30 +2549.0746800213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +2408.9276400213 +12 +-415.26146157539 +22 +-621.482696406623 +32 +2408.9276400213 +13 +-415.26146157539 +23 +-621.482696406623 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-286.037069662455 +20 +-690.554572920556 +30 +2408.9276400213 +11 +-415.26146157539 +21 +-621.482696406622 +31 +2549.0746800213 +12 +-286.037069662455 +22 +-690.554572920556 +32 +2549.0746800213 +13 +-286.037069662455 +23 +-690.554572920556 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-281.388927633011 +20 +-679.332965393238 +30 +680.911023534629 +11 +-136.426435300007 +21 +-685.862005953678 +31 +628.271001705821 +12 +-267.610079200261 +22 +-646.067882633009 +32 +628.271001705821 +13 +-267.610079200261 +23 +-646.067882633009 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-136.426435300007 +20 +-685.862005953678 +30 +628.271001705821 +11 +-281.388927633011 +21 +-679.332965393238 +31 +680.911023534629 +12 +-143.450831316169 +22 +-721.176029454062 +32 +680.911023534629 +13 +-143.450831316169 +23 +-721.176029454062 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-290.941975042481 +20 +-702.396062011173 +30 +804.835469255871 +11 +-147.511894336929 +21 +-741.592371958341 +31 +741.194313252463 +12 +-289.354989300114 +22 +-698.564739508657 +32 +741.194313252463 +13 +-289.354989300114 +23 +-698.564739508657 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-147.511894336929 +20 +-741.592371958341 +30 +741.194313252463 +11 +-290.941975042481 +21 +-702.396062011173 +31 +804.835469255871 +12 +-148.32093265249 +22 +-745.659682232799 +32 +804.835469255871 +13 +-148.32093265249 +23 +-745.659682232799 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-882.422285845505 +30 +1715.23764468454 +11 +164.051007270482 +21 +-824.740107573921 +31 +1661.47676002131 +12 +0.0 +22 +-840.897721502147 +32 +1661.47676002131 +13 +0.0 +23 +-840.897721502147 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +164.051007270482 +20 +-824.740107573921 +30 +1661.47676002131 +11 +0.0 +21 +-882.422285845505 +31 +1715.23764468454 +12 +172.152047899807 +22 +-865.466789057044 +32 +1715.23764468454 +13 +172.152047899807 +23 +-865.466789057044 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-289.354989300114 +20 +-698.564739508657 +30 +741.194313252463 +11 +-143.450831316169 +21 +-721.176029454062 +31 +680.911023534629 +12 +-281.388927633011 +22 +-679.332965393238 +32 +680.911023534629 +13 +-281.388927633011 +23 +-679.332965393238 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-143.450831316169 +20 +-721.176029454062 +30 +680.911023534629 +11 +-289.354989300114 +21 +-698.564739508657 +31 +741.194313252463 +12 +-147.511894336929 +22 +-741.592371958341 +32 +741.194313252463 +13 +-147.511894336929 +23 +-741.592371958341 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-172.152047899808 +20 +-865.466789057044 +30 +1715.23764468454 +11 +0.0 +21 +-840.897721502147 +31 +1661.47676002131 +12 +-164.051007270482 +22 +-824.740107573921 +32 +1661.47676002131 +13 +-164.051007270482 +23 +-824.740107573921 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-840.897721502147 +30 +1661.47676002131 +11 +-172.152047899808 +21 +-865.466789057044 +31 +1715.23764468454 +12 +0.0 +22 +-882.422285845505 +32 +1715.23764468454 +13 +0.0 +23 +-882.422285845505 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-286.037069662455 +20 +-690.554572920556 +30 +867.310386884026 +11 +-148.32093265249 +21 +-745.659682232799 +31 +804.835469255871 +12 +-290.941975042481 +22 +-702.396062011173 +32 +804.835469255871 +13 +-290.941975042481 +23 +-702.396062011173 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-148.32093265249 +20 +-745.659682232799 +30 +804.835469255871 +11 +-286.037069662455 +21 +-690.554572920556 +31 +867.310386884026 +12 +-145.820433573828 +22 +-733.088824464618 +32 +867.310386884026 +13 +-145.820433573828 +23 +-733.088824464618 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-178.77316905644 +20 +-431.596609324475 +30 +1100.8886000213 +11 +-145.820433573828 +21 +-733.088824464618 +31 +867.310386884026 +12 +-286.037069662455 +22 +-690.554572920556 +32 +867.310386884026 +13 +-286.037069662455 +23 +-690.554572920556 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-145.820433573828 +20 +-733.088824464618 +30 +867.310386884026 +11 +-178.77316905644 +21 +-431.596609324475 +31 +1100.8886000213 +12 +-91.1377712474136 +22 +-458.180516616454 +32 +1100.8886000213 +13 +-91.1377712474136 +23 +-458.180516616454 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-232.405119359447 +20 +-561.075591122516 +30 +1287.75132002131 +11 +-136.706656519425 +21 +-687.270773156591 +31 +1100.8886000213 +12 +-268.159752894786 +22 +-647.39491232121 +32 +1100.8886000213 +13 +-268.159752894786 +23 +-647.39491232121 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-136.706656519425 +20 +-687.270773156591 +30 +1100.8886000213 +11 +-232.405119359447 +21 +-561.075591122516 +31 +1287.75132002131 +12 +-118.479102410621 +22 +-595.634670540536 +32 +1287.75132002131 +13 +-118.479102410621 +23 +-595.634670540536 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-250.282436127117 +20 +-604.235251721863 +30 +1474.6140400213 +11 +-145.820433573828 +21 +-733.088824464619 +31 +1287.75132002131 +12 +-286.037069662455 +22 +-690.554572920556 +32 +1287.75132002131 +13 +-286.037069662455 +23 +-690.554572920556 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-145.820433573828 +20 +-733.088824464619 +30 +1287.75132002131 +11 +-250.282436127117 +21 +-604.235251721863 +31 +1474.6140400213 +12 +-127.592879465023 +22 +-641.452721848564 +32 +1474.6140400213 +13 +-127.592879465023 +23 +-641.452721848564 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-268.159752894786 +20 +-647.39491232121 +30 +1661.47676002131 +11 +-154.93421062823 +21 +-778.906875772646 +31 +1474.6140400213 +12 +-303.914386430124 +22 +-733.714233519903 +32 +1474.6140400213 +13 +-303.914386430124 +23 +-733.714233519903 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-154.93421062823 +20 +-778.906875772646 +30 +1474.6140400213 +11 +-268.159752894786 +21 +-647.39491232121 +31 +1661.47676002131 +12 +-136.706656519425 +22 +-687.270773156591 +32 +1661.47676002131 +13 +-136.706656519425 +23 +-687.270773156591 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-337.688389142806 +20 +-815.251888924487 +30 +1715.23764468454 +11 +-164.051007270482 +21 +-824.740107573921 +31 +1661.47676002131 +12 +-321.797626332425 +22 +-776.88819383121 +32 +1661.47676002131 +13 +-321.797626332425 +23 +-776.88819383121 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-164.051007270482 +20 +-824.740107573921 +30 +1661.47676002131 +11 +-337.688389142806 +21 +-815.251888924487 +31 +1715.23764468454 +12 +-172.152047899808 +22 +-865.466789057044 +32 +1715.23764468454 +13 +-172.152047899808 +23 +-865.466789057044 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-351.011407030345 +20 +-847.416499400322 +30 +1773.56823006635 +11 +-172.152047899808 +21 +-865.466789057044 +31 +1715.23764468454 +12 +-337.688389142806 +22 +-815.251888924487 +32 +1715.23764468454 +13 +-337.688389142806 +23 +-815.251888924487 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-172.152047899808 +20 +-865.466789057044 +30 +1715.23764468454 +11 +-351.011407030345 +21 +-847.416499400322 +31 +1773.56823006635 +12 +-178.9440635192 +22 +-899.612557411553 +32 +1773.56823006635 +13 +-178.9440635192 +23 +-899.612557411553 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-361.576402030189 +20 +-872.922653615348 +30 +1835.6354447734 +11 +-178.9440635192 +21 +-899.612557411553 +31 +1773.56823006635 +12 +-351.011407030345 +22 +-847.416499400322 +32 +1773.56823006635 +13 +-351.011407030345 +23 +-847.416499400322 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-178.9440635192 +20 +-899.612557411553 +30 +1773.56823006635 +11 +-361.576402030189 +21 +-872.922653615348 +31 +1835.6354447734 +12 +-184.330051263378 +22 +-926.689746301964 +32 +1835.6354447734 +13 +-184.330051263378 +23 +-926.689746301964 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-375.423653500801 +20 +-906.352875917291 +30 +2035.2022000213 +11 +-190.597433982906 +21 +-958.19800696011 +31 +1967.39330582966 +12 +-373.870315466121 +22 +-902.602786167016 +32 +1967.39330582966 +13 +-373.870315466121 +23 +-902.602786167016 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-190.597433982906 +20 +-958.19800696011 +30 +1967.39330582966 +11 +-375.423653500801 +21 +-906.352875917291 +31 +2035.2022000213 +12 +-191.38931884584 +22 +-962.179081004757 +32 +2035.2022000213 +13 +-191.38931884584 +23 +-962.179081004757 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-351.011407030345 +20 +-847.416499400322 +30 +2296.83616997626 +11 +-184.330051263378 +21 +-926.689746301964 +31 +2234.76895526921 +12 +-361.576402030189 +22 +-872.922653615348 +32 +2234.76895526921 +13 +-361.576402030189 +23 +-872.922653615348 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-184.330051263378 +20 +-926.689746301964 +30 +2234.76895526921 +11 +-351.011407030345 +21 +-847.416499400322 +31 +2296.83616997626 +12 +-178.9440635192 +22 +-899.612557411553 +32 +2296.83616997626 +13 +-178.9440635192 +23 +-899.612557411553 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-361.576402030189 +20 +-872.922653615348 +30 +2234.76895526921 +11 +-188.233089011893 +21 +-946.311642114328 +31 +2169.85154878419 +12 +-369.232485975391 +22 +-891.406075310522 +32 +2169.85154878419 +13 +-369.232485975391 +23 +-891.406075310522 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-188.233089011893 +20 +-946.311642114328 +30 +2169.85154878419 +11 +-361.576402030189 +21 +-872.922653615348 +31 +2234.76895526921 +12 +-184.330051263378 +22 +-926.689746301964 +32 +2234.76895526921 +13 +-184.330051263378 +23 +-926.689746301964 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +-145.820433573828 +21 +-733.088824464619 +31 +2408.9276400213 +12 +-286.037069662455 +22 +-690.554572920556 +32 +2408.9276400213 +13 +-286.037069662455 +23 +-690.554572920556 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-145.820433573828 +20 +-733.088824464619 +30 +2408.9276400213 +11 +-286.037069662455 +21 +-690.554572920556 +31 +2549.0746800213 +12 +-145.820433573828 +22 +-733.088824464618 +32 +2549.0746800213 +13 +-145.820433573828 +23 +-733.088824464618 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-136.426435300007 +20 +-685.862005953678 +30 +628.271001705821 +11 +-248.997950917359 +21 +-601.134230107799 +31 +587.016306884026 +12 +-267.610079200261 +22 +-646.067882633009 +32 +628.271001705821 +13 +-267.610079200261 +23 +-646.067882633009 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-248.997950917359 +20 +-601.134230107799 +30 +587.016306884026 +11 +-136.426435300007 +21 +-685.862005953678 +31 +628.271001705821 +12 +-126.938054583664 +22 +-638.160694862082 +32 +587.016306884026 +13 +-126.938054583664 +23 +-638.160694862082 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-143.450831316169 +20 +-721.176029454062 +30 +680.911023534629 +11 +0.0 +21 +-699.298837021391 +31 +628.271001705821 +12 +-136.426435300007 +22 +-685.862005953678 +32 +628.271001705821 +13 +-136.426435300007 +23 +-685.862005953678 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-699.298837021391 +30 +628.271001705821 +11 +-143.450831316169 +21 +-721.176029454062 +31 +680.911023534629 +12 +0.0 +22 +-735.304703143143 +32 +680.911023534629 +13 +0.0 +23 +-735.304703143143 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-147.511894336929 +20 +-741.592371958341 +30 +741.194313252463 +11 +0.0 +21 +-735.304703143143 +31 +680.911023534629 +12 +-143.450831316169 +22 +-721.176029454062 +32 +680.911023534629 +13 +-143.450831316169 +23 +-721.176029454062 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-735.304703143143 +30 +680.911023534629 +11 +-147.511894336929 +21 +-741.592371958341 +31 +741.194313252463 +12 +0.0 +22 +-756.121025443459 +32 +741.194313252463 +13 +0.0 +23 +-756.121025443459 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-148.32093265249 +20 +-745.659682232799 +30 +804.835469255871 +11 +0.0 +21 +-756.121025443459 +31 +741.194313252463 +12 +-147.511894336929 +22 +-741.592371958341 +32 +741.194313252463 +13 +-147.511894336929 +23 +-741.592371958341 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-756.121025443459 +30 +741.194313252463 +11 +-148.32093265249 +21 +-745.659682232799 +31 +804.835469255871 +12 +0.0 +22 +-760.268019036986 +32 +804.835469255871 +13 +0.0 +23 +-760.268019036986 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-145.820433573828 +20 +-733.088824464618 +30 +867.310386884026 +11 +0.0 +21 +-760.268019036986 +31 +804.835469255871 +12 +-148.32093265249 +22 +-745.659682232799 +32 +804.835469255871 +13 +-148.32093265249 +23 +-745.659682232799 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-760.268019036986 +30 +804.835469255871 +11 +-145.820433573828 +21 +-733.088824464618 +31 +867.310386884026 +12 +0.0 +22 +-747.450883605455 +32 +867.310386884026 +13 +0.0 +23 +-747.450883605455 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-91.1377712474136 +20 +-458.180516616454 +30 +1100.8886000213 +11 +0.0 +21 +-747.450883605455 +31 +867.310386884026 +12 +-145.820433573828 +22 +-733.088824464618 +32 +867.310386884026 +13 +-145.820433573828 +23 +-733.088824464618 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-747.450883605455 +30 +867.310386884026 +11 +-91.1377712474136 +21 +-458.180516616454 +31 +1100.8886000213 +12 +0.0 +22 +-467.156803605456 +32 +1100.8886000213 +13 +0.0 +23 +-467.156803605456 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-118.479102410621 +20 +-595.634670540536 +30 +1287.75132002131 +11 +0.0 +21 +-700.735203605455 +31 +1100.8886000213 +12 +-136.706656519425 +22 +-687.270773156591 +32 +1100.8886000213 +13 +-136.706656519425 +23 +-687.270773156591 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-700.735203605455 +30 +1100.8886000213 +11 +-118.479102410621 +21 +-595.634670540536 +31 +1287.75132002131 +12 +0.0 +22 +-607.303843605455 +32 +1287.75132002131 +13 +0.0 +23 +-607.303843605455 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-685.862005953678 +20 +-136.426435300007 +30 +628.271001705821 +11 +-735.304703143143 +21 +0.0 +31 +680.911023534629 +12 +-721.176029454062 +22 +-143.450831316169 +32 +680.911023534629 +13 +-721.176029454062 +23 +-143.450831316169 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-735.304703143143 +20 +0.0 +30 +680.911023534629 +11 +-685.862005953678 +21 +-136.426435300007 +31 +628.271001705821 +12 +-699.298837021391 +22 +0.0 +32 +628.271001705821 +13 +-699.298837021391 +23 +0.0 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +917.237009349992 +20 +-1.80477854883065e-13 +30 +1773.56823006635 +11 +865.466789057043 +21 +-172.152047899808 +31 +1715.23764468454 +12 +899.612557411552 +22 +-178.944063519201 +32 +1773.56823006635 +13 +899.612557411552 +23 +-178.944063519201 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +865.466789057043 +20 +-172.152047899808 +30 +1715.23764468454 +11 +917.237009349992 +21 +-1.80477854883065e-13 +31 +1773.56823006635 +12 +882.422285845505 +22 +-1.80477854883065e-13 +32 +1715.23764468454 +13 +882.422285845505 +23 +-1.80477854883065e-13 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-654.019523605455 +30 +1474.6140400213 +11 +145.820433573828 +21 +-733.088824464619 +31 +1287.75132002131 +12 +0.0 +22 +-747.450883605455 +32 +1287.75132002131 +13 +0.0 +23 +-747.450883605455 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +145.820433573828 +20 +-733.088824464619 +30 +1287.75132002131 +11 +0.0 +21 +-654.019523605455 +31 +1474.6140400213 +12 +127.592879465023 +22 +-641.452721848564 +32 +1474.6140400213 +13 +127.592879465023 +23 +-641.452721848564 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-136.706656519425 +20 +-687.270773156591 +30 +1661.47676002131 +11 +0.0 +21 +-794.166563605455 +31 +1474.6140400213 +12 +-154.93421062823 +22 +-778.906875772646 +32 +1474.6140400213 +13 +-154.93421062823 +23 +-778.906875772646 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-794.166563605455 +30 +1474.6140400213 +11 +-136.706656519425 +21 +-687.270773156591 +31 +1661.47676002131 +12 +0.0 +22 +-700.735203605455 +32 +1661.47676002131 +13 +0.0 +23 +-700.735203605455 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +944.844671731792 +20 +-1.80477854883065e-13 +30 +1835.6354447734 +11 +899.612557411552 +21 +-178.944063519201 +31 +1773.56823006635 +12 +926.689746301964 +22 +-184.330051263379 +32 +1835.6354447734 +13 +926.689746301964 +23 +-184.330051263379 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +899.612557411552 +20 +-178.944063519201 +30 +1773.56823006635 +11 +944.844671731792 +21 +-1.80477854883065e-13 +31 +1835.6354447734 +12 +917.237009349992 +22 +-1.80477854883065e-13 +32 +1773.56823006635 +13 +917.237009349992 +23 +-1.80477854883065e-13 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-917.237009349992 +30 +2296.83616997626 +11 +184.330051263378 +21 +-926.689746301964 +31 +2234.76895526921 +12 +0.0 +22 +-944.844671731792 +32 +2234.76895526921 +13 +0.0 +23 +-944.844671731792 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +184.330051263378 +20 +-926.689746301964 +30 +2234.76895526921 +11 +0.0 +21 +-917.237009349992 +31 +2296.83616997626 +12 +178.9440635192 +22 +-899.612557411553 +32 +2296.83616997626 +13 +178.9440635192 +23 +-899.612557411553 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-184.330051263378 +20 +-926.689746301964 +30 +1835.6354447734 +11 +0.0 +21 +-917.237009349992 +31 +1773.56823006635 +12 +-178.9440635192 +22 +-899.612557411553 +32 +1773.56823006635 +13 +-178.9440635192 +23 +-899.612557411553 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-917.237009349992 +30 +1773.56823006635 +11 +-184.330051263378 +21 +-926.689746301964 +31 +1835.6354447734 +12 +0.0 +22 +-944.844671731792 +32 +1835.6354447734 +13 +0.0 +23 +-944.844671731792 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-188.233089011893 +20 +-946.311642114328 +30 +1900.55285125842 +11 +0.0 +21 +-944.844671731792 +31 +1835.6354447734 +12 +-184.330051263378 +22 +-926.689746301964 +32 +1835.6354447734 +13 +-184.330051263378 +23 +-926.689746301964 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-944.844671731792 +30 +1835.6354447734 +11 +-188.233089011893 +21 +-946.311642114328 +31 +1900.55285125842 +12 +0.0 +22 +-964.850983209364 +32 +1900.55285125842 +13 +0.0 +23 +-964.850983209364 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +143.450831316169 +20 +-721.176029454062 +30 +680.911023534629 +11 +267.610079200261 +21 +-646.067882633009 +31 +628.271001705821 +12 +136.426435300007 +22 +-685.862005953678 +32 +628.271001705821 +13 +136.426435300007 +23 +-685.862005953678 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +267.610079200261 +20 +-646.067882633009 +30 +628.271001705821 +11 +143.450831316169 +21 +-721.176029454062 +31 +680.911023534629 +12 +281.388927633011 +22 +-679.332965393237 +32 +680.911023534629 +13 +281.388927633011 +23 +-679.332965393237 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +147.511894336929 +20 +-741.592371958341 +30 +741.194313252463 +11 +281.388927633011 +21 +-679.332965393237 +31 +680.911023534629 +12 +143.450831316169 +22 +-721.176029454062 +32 +680.911023534629 +13 +143.450831316169 +23 +-721.176029454062 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +281.388927633011 +20 +-679.332965393237 +30 +680.911023534629 +11 +147.511894336929 +21 +-741.592371958341 +31 +741.194313252463 +12 +289.354989300114 +22 +-698.564739508657 +32 +741.194313252463 +13 +289.354989300114 +23 +-698.564739508657 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +148.32093265249 +20 +-745.659682232799 +30 +804.835469255871 +11 +289.354989300114 +21 +-698.564739508657 +31 +741.194313252463 +12 +147.511894336929 +22 +-741.592371958341 +32 +741.194313252463 +13 +147.511894336929 +23 +-741.592371958341 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +289.354989300114 +20 +-698.564739508657 +30 +741.194313252463 +11 +148.32093265249 +21 +-745.659682232799 +31 +804.835469255871 +12 +290.941975042481 +22 +-702.396062011173 +32 +804.835469255871 +13 +290.941975042481 +23 +-702.396062011173 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +145.820433573828 +20 +-733.088824464618 +30 +867.310386884026 +11 +290.941975042481 +21 +-702.396062011173 +31 +804.835469255871 +12 +148.32093265249 +22 +-745.659682232799 +32 +804.835469255871 +13 +148.32093265249 +23 +-745.659682232799 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +290.941975042481 +20 +-702.396062011173 +30 +804.835469255871 +11 +145.820433573828 +21 +-733.088824464618 +31 +867.310386884026 +12 +286.037069662455 +22 +-690.554572920556 +32 +867.310386884026 +13 +286.037069662455 +23 +-690.554572920556 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +178.77316905644 +20 +-431.596609324475 +30 +1100.8886000213 +11 +145.820433573828 +21 +-733.088824464618 +31 +867.310386884026 +12 +91.1377712474136 +22 +-458.180516616454 +32 +1100.8886000213 +13 +91.1377712474136 +23 +-458.180516616454 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +145.820433573828 +20 +-733.088824464618 +30 +867.310386884026 +11 +178.77316905644 +21 +-431.596609324475 +31 +1100.8886000213 +12 +286.037069662455 +22 +-690.554572920556 +32 +867.310386884026 +13 +286.037069662455 +23 +-690.554572920556 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +118.479102410621 +20 +-595.634670540536 +30 +1287.75132002131 +11 +268.159752894786 +21 +-647.39491232121 +31 +1100.8886000213 +12 +136.706656519425 +22 +-687.270773156591 +32 +1100.8886000213 +13 +136.706656519425 +23 +-687.270773156591 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +268.159752894786 +20 +-647.39491232121 +30 +1100.8886000213 +11 +118.479102410621 +21 +-595.634670540536 +31 +1287.75132002131 +12 +232.405119359447 +22 +-561.075591122516 +32 +1287.75132002131 +13 +232.405119359447 +23 +-561.075591122516 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +127.592879465023 +20 +-641.452721848564 +30 +1474.6140400213 +11 +286.037069662455 +21 +-690.554572920556 +31 +1287.75132002131 +12 +145.820433573828 +22 +-733.088824464619 +32 +1287.75132002131 +13 +145.820433573828 +23 +-733.088824464619 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +286.037069662455 +20 +-690.554572920556 +30 +1287.75132002131 +11 +127.592879465023 +21 +-641.452721848564 +31 +1474.6140400213 +12 +250.282436127116 +22 +-604.235251721863 +32 +1474.6140400213 +13 +250.282436127116 +23 +-604.235251721863 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +136.706656519425 +20 +-687.270773156591 +30 +1661.47676002131 +11 +303.914386430124 +21 +-733.714233519903 +31 +1474.6140400213 +12 +154.93421062823 +22 +-778.906875772646 +32 +1474.6140400213 +13 +154.93421062823 +23 +-778.906875772646 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +303.914386430124 +20 +-733.714233519903 +30 +1474.6140400213 +11 +136.706656519425 +21 +-687.270773156591 +31 +1661.47676002131 +12 +268.159752894786 +22 +-647.39491232121 +32 +1661.47676002131 +13 +268.159752894786 +23 +-647.39491232121 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +172.152047899807 +20 +-865.466789057044 +30 +1715.23764468454 +11 +321.797626332425 +21 +-776.88819383121 +31 +1661.47676002131 +12 +164.051007270482 +22 +-824.740107573921 +32 +1661.47676002131 +13 +164.051007270482 +23 +-824.740107573921 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +321.797626332425 +20 +-776.88819383121 +30 +1661.47676002131 +11 +172.152047899807 +21 +-865.466789057044 +31 +1715.23764468454 +12 +337.688389142806 +22 +-815.251888924487 +32 +1715.23764468454 +13 +337.688389142806 +23 +-815.251888924487 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +964.850983209364 +20 +-1.80477854883065e-13 +30 +1900.55285125842 +11 +926.689746301964 +21 +-184.330051263379 +31 +1835.6354447734 +12 +946.311642114328 +22 +-188.233089011893 +32 +1900.55285125842 +13 +946.311642114328 +23 +-188.233089011893 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +926.689746301964 +20 +-184.330051263379 +30 +1835.6354447734 +11 +964.850983209364 +21 +-1.80477854883065e-13 +31 +1900.55285125842 +12 +944.844671731792 +22 +-1.80477854883065e-13 +32 +1835.6354447734 +13 +944.844671731792 +23 +-1.80477854883065e-13 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-882.422285845505 +20 +0.0 +30 +2355.16675535807 +11 +-824.740107573921 +21 +-164.051007270482 +31 +2408.9276400213 +12 +-865.466789057043 +22 +-172.152047899808 +32 +2355.16675535807 +13 +-865.466789057043 +23 +-172.152047899808 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-824.740107573921 +20 +-164.051007270482 +30 +2408.9276400213 +11 +-882.422285845505 +21 +0.0 +31 +2355.16675535807 +12 +-840.897721502147 +22 +0.0 +32 +2408.9276400213 +13 +-840.897721502147 +23 +0.0 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +178.9440635192 +20 +-899.612557411553 +30 +1773.56823006635 +11 +337.688389142806 +21 +-815.251888924487 +31 +1715.23764468454 +12 +172.152047899807 +22 +-865.466789057044 +32 +1715.23764468454 +13 +172.152047899807 +23 +-865.466789057044 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +337.688389142806 +20 +-815.251888924487 +30 +1715.23764468454 +11 +178.9440635192 +21 +-899.612557411553 +31 +1773.56823006635 +12 +351.011407030345 +22 +-847.416499400322 +32 +1773.56823006635 +13 +351.011407030345 +23 +-847.416499400322 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-687.270773156591 +20 +-136.706656519425 +30 +1100.8886000213 +11 +-561.075591122516 +21 +-232.405119359447 +31 +1287.75132002131 +12 +-647.39491232121 +22 +-268.159752894786 +32 +1100.8886000213 +13 +-647.39491232121 +23 +-268.159752894786 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-561.075591122516 +20 +-232.405119359447 +30 +1287.75132002131 +11 +-687.270773156591 +21 +-136.706656519425 +31 +1100.8886000213 +12 +-595.634670540536 +22 +-118.479102410621 +32 +1287.75132002131 +13 +-595.634670540536 +23 +-118.479102410621 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +976.970215709362 +20 +-1.80477854883065e-13 +30 +1967.39330582966 +11 +946.311642114328 +21 +-188.233089011893 +31 +1900.55285125842 +12 +958.198006960111 +22 +-190.597433982906 +32 +1967.39330582966 +13 +958.198006960111 +23 +-190.597433982906 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +946.311642114328 +20 +-188.233089011893 +30 +1900.55285125842 +11 +976.970215709362 +21 +-1.80477854883065e-13 +31 +1967.39330582966 +12 +964.850983209364 +22 +-1.80477854883065e-13 +32 +1900.55285125842 +13 +964.850983209364 +23 +-1.80477854883065e-13 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +172.152047899807 +20 +-865.466789057043 +30 +2355.16675535807 +11 +351.011407030345 +21 +-847.416499400322 +31 +2296.83616997626 +12 +178.9440635192 +22 +-899.612557411553 +32 +2296.83616997626 +13 +178.9440635192 +23 +-899.612557411553 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +351.011407030345 +20 +-847.416499400322 +30 +2296.83616997626 +11 +172.152047899807 +21 +-865.466789057043 +31 +2355.16675535807 +12 +337.688389142806 +22 +-815.251888924486 +32 +2355.16675535807 +13 +337.688389142806 +23 +-815.251888924486 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +981.029283605455 +20 +-1.80477854883065e-13 +30 +2035.2022000213 +11 +958.198006960111 +21 +-190.597433982906 +31 +1967.39330582966 +12 +962.179081004756 +22 +-191.38931884584 +32 +2035.2022000213 +13 +962.179081004756 +23 +-191.38931884584 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +958.198006960111 +20 +-190.597433982906 +30 +1967.39330582966 +11 +981.029283605455 +21 +-1.80477854883065e-13 +31 +2035.2022000213 +12 +976.970215709362 +22 +-1.80477854883065e-13 +32 +1967.39330582966 +13 +976.970215709362 +23 +-1.80477854883065e-13 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +164.051007270482 +20 +-824.740107573921 +30 +2408.9276400213 +11 +337.688389142806 +21 +-815.251888924486 +31 +2355.16675535807 +12 +172.152047899807 +22 +-865.466789057043 +32 +2355.16675535807 +13 +172.152047899807 +23 +-865.466789057043 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +337.688389142806 +20 +-815.251888924486 +30 +2355.16675535807 +11 +164.051007270482 +21 +-824.740107573921 +31 +2408.9276400213 +12 +321.797626332425 +22 +-776.88819383121 +32 +2408.9276400213 +13 +321.797626332425 +23 +-776.88819383121 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +145.820433573828 +20 +-733.088824464618 +30 +2549.0746800213 +11 +286.037069662455 +21 +-690.554572920556 +31 +2408.9276400213 +12 +145.820433573828 +22 +-733.088824464619 +32 +2408.9276400213 +13 +145.820433573828 +23 +-733.088824464619 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +286.037069662455 +20 +-690.554572920556 +30 +2408.9276400213 +11 +145.820433573828 +21 +-733.088824464618 +31 +2549.0746800213 +12 +286.037069662455 +22 +-690.554572920556 +32 +2549.0746800213 +13 +286.037069662455 +23 +-690.554572920556 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +136.426435300007 +20 +-685.862005953678 +30 +628.271001705821 +11 +248.997950917359 +21 +-601.1342301078 +31 +587.016306884026 +12 +126.938054583664 +22 +-638.160694862082 +32 +587.016306884026 +13 +126.938054583664 +23 +-638.160694862082 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +248.997950917359 +20 +-601.1342301078 +30 +587.016306884026 +11 +136.426435300007 +21 +-685.862005953678 +31 +628.271001705821 +12 +267.610079200261 +22 +-646.067882633009 +32 +628.271001705821 +13 +267.610079200261 +23 +-646.067882633009 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +281.388927633011 +20 +-679.332965393237 +30 +680.911023534629 +11 +388.509617834311 +21 +-581.445732901797 +31 +628.271001705821 +12 +267.610079200261 +22 +-646.067882633009 +32 +628.271001705821 +13 +267.610079200261 +23 +-646.067882633009 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +388.509617834311 +20 +-581.445732901797 +30 +628.271001705821 +11 +281.388927633011 +21 +-679.332965393237 +31 +680.911023534629 +12 +408.513405265645 +22 +-611.383516446667 +32 +680.911023534629 +13 +408.513405265645 +23 +-611.383516446667 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +289.354989300114 +20 +-698.564739508657 +30 +741.194313252463 +11 +408.513405265645 +21 +-611.383516446667 +31 +680.911023534629 +12 +281.388927633011 +22 +-679.332965393237 +32 +680.911023534629 +13 +281.388927633011 +23 +-679.332965393237 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +408.513405265645 +20 +-611.383516446667 +30 +680.911023534629 +11 +289.354989300114 +21 +-698.564739508657 +31 +741.194313252463 +12 +420.078334296643 +22 +-628.691655879276 +32 +741.194313252463 +13 +420.078334296643 +23 +-628.691655879276 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +290.941975042481 +20 +-702.396062011173 +30 +804.835469255871 +11 +420.078334296643 +21 +-628.691655879276 +31 +741.194313252463 +12 +289.354989300114 +22 +-698.564739508657 +32 +741.194313252463 +13 +289.354989300114 +23 +-698.564739508657 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +420.078334296643 +20 +-628.691655879276 +30 +741.194313252463 +11 +290.941975042481 +21 +-702.396062011173 +31 +804.835469255871 +12 +422.38228049373 +22 +-632.139755034707 +32 +804.835469255871 +13 +422.38228049373 +23 +-632.139755034707 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +286.037069662455 +20 +-690.554572920556 +30 +867.310386884026 +11 +422.38228049373 +21 +-632.139755034707 +31 +804.835469255871 +12 +290.941975042481 +22 +-702.396062011173 +32 +804.835469255871 +13 +290.941975042481 +23 +-702.396062011173 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +422.38228049373 +20 +-632.139755034707 +30 +804.835469255871 +11 +286.037069662455 +21 +-690.554572920556 +31 +867.310386884026 +12 +415.26146157539 +22 +-621.482696406622 +32 +867.310386884026 +13 +415.26146157539 +23 +-621.482696406622 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +958.19800696011 +20 +-190.597433982906 +30 +2103.01109421295 +11 +981.029283605455 +21 +-1.80477854883065e-13 +31 +2035.2022000213 +12 +962.179081004756 +22 +-191.38931884584 +32 +2035.2022000213 +13 +962.179081004756 +23 +-191.38931884584 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +981.029283605455 +20 +-1.80477854883065e-13 +30 +2035.2022000213 +11 +958.19800696011 +21 +-190.597433982906 +31 +2103.01109421295 +12 +976.970215709361 +22 +-1.80477854883065e-13 +32 +2103.01109421295 +13 +976.970215709361 +23 +-1.80477854883065e-13 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +946.311642114328 +20 +-188.233089011893 +30 +2169.85154878419 +11 +976.970215709361 +21 +-1.80477854883065e-13 +31 +2103.01109421295 +12 +958.19800696011 +22 +-190.597433982906 +32 +2103.01109421295 +13 +958.19800696011 +23 +-190.597433982906 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +976.970215709361 +20 +-1.80477854883065e-13 +30 +2103.01109421295 +11 +946.311642114328 +21 +-188.233089011893 +31 +2169.85154878419 +12 +964.850983209363 +22 +-1.80477854883065e-13 +32 +2169.85154878419 +13 +964.850983209363 +23 +-1.80477854883065e-13 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +259.538414235775 +20 +-388.426686378325 +30 +1100.8886000213 +11 +286.037069662455 +21 +-690.554572920556 +31 +867.310386884026 +12 +178.77316905644 +22 +-431.596609324475 +32 +1100.8886000213 +13 +178.77316905644 +23 +-431.596609324475 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +286.037069662455 +20 +-690.554572920556 +30 +867.310386884026 +11 +259.538414235775 +21 +-388.426686378325 +31 +1100.8886000213 +12 +415.26146157539 +22 +-621.482696406622 +32 +867.310386884026 +13 +415.26146157539 +23 +-621.482696406622 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +232.405119359447 +20 +-561.075591122516 +30 +1287.75132002131 +11 +389.307620352121 +21 +-582.640028068573 +31 +1100.8886000213 +12 +268.159752894786 +22 +-647.39491232121 +32 +1100.8886000213 +13 +268.159752894786 +23 +-647.39491232121 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +389.307620352121 +20 +-582.640028068573 +30 +1100.8886000213 +11 +232.405119359447 +21 +-561.075591122516 +31 +1287.75132002131 +12 +337.399937905583 +22 +-504.954691392474 +32 +1287.75132002131 +13 +337.399937905583 +23 +-504.954691392474 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-899.612557411553 +20 +-178.9440635192 +30 +2296.83616997626 +11 +-815.251888924486 +21 +-337.688389142806 +31 +2355.16675535807 +12 +-847.416499400322 +22 +-351.011407030345 +32 +2296.83616997626 +13 +-847.416499400322 +23 +-351.011407030345 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-815.251888924486 +20 +-337.688389142806 +30 +2355.16675535807 +11 +-899.612557411553 +21 +-178.9440635192 +31 +2296.83616997626 +12 +-865.466789057043 +22 +-172.152047899808 +32 +2355.16675535807 +13 +-865.466789057043 +23 +-172.152047899808 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-958.19800696011 +20 +-190.597433982906 +30 +2103.01109421295 +11 +-891.406075310522 +21 +-369.232485975391 +31 +2169.85154878419 +12 +-902.602786167016 +22 +-373.87031546612 +32 +2103.01109421295 +13 +-902.602786167016 +23 +-373.87031546612 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-891.406075310522 +20 +-369.232485975391 +30 +2169.85154878419 +11 +-958.19800696011 +21 +-190.597433982906 +31 +2103.01109421295 +12 +-946.311642114328 +22 +-188.233089011893 +32 +2169.85154878419 +13 +-946.311642114328 +23 +-188.233089011893 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +250.282436127116 +20 +-604.235251721863 +30 +1474.6140400213 +11 +415.26146157539 +21 +-621.482696406623 +31 +1287.75132002131 +12 +286.037069662455 +22 +-690.554572920556 +32 +1287.75132002131 +13 +286.037069662455 +23 +-690.554572920556 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +415.26146157539 +20 +-621.482696406623 +30 +1287.75132002131 +11 +250.282436127116 +21 +-604.235251721863 +31 +1474.6140400213 +12 +363.353779128852 +22 +-543.797359730523 +32 +1474.6140400213 +13 +363.353779128852 +23 +-543.797359730523 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +268.159752894786 +20 +-647.39491232121 +30 +1661.47676002131 +11 +441.215302798659 +21 +-660.325364744673 +31 +1474.6140400213 +12 +303.914386430124 +22 +-733.714233519903 +32 +1474.6140400213 +13 +303.914386430124 +23 +-733.714233519903 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +441.215302798659 +20 +-660.325364744673 +30 +1474.6140400213 +11 +268.159752894786 +21 +-647.39491232121 +31 +1661.47676002131 +12 +389.307620352121 +22 +-582.640028068573 +32 +1661.47676002131 +13 +389.307620352121 +23 +-582.640028068573 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +337.688389142806 +20 +-815.251888924487 +30 +1715.23764468454 +11 +467.1777430806 +21 +-699.180902483484 +31 +1661.47676002131 +12 +321.797626332425 +22 +-776.88819383121 +32 +1661.47676002131 +13 +321.797626332425 +23 +-776.88819383121 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +467.1777430806 +20 +-699.180902483484 +30 +1661.47676002131 +11 +337.688389142806 +21 +-815.251888924487 +31 +1715.23764468454 +12 +490.247554968877 +22 +-733.707315899088 +32 +1715.23764468454 +13 +490.247554968877 +23 +-733.707315899088 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +351.011407030345 +20 +-847.416499400322 +30 +1773.56823006635 +11 +490.247554968877 +21 +-733.707315899088 +31 +1715.23764468454 +12 +337.688389142806 +22 +-815.251888924487 +32 +1715.23764468454 +13 +337.688389142806 +23 +-815.251888924487 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +490.247554968877 +20 +-733.707315899088 +30 +1715.23764468454 +11 +351.011407030345 +21 +-847.416499400322 +31 +1773.56823006635 +12 +509.589579018778 +22 +-762.654700553784 +32 +1773.56823006635 +13 +509.589579018778 +23 +-762.654700553784 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-802.244272938819 +20 +-536.042485570818 +30 +1900.55285125842 +11 +-902.602786167016 +21 +-373.87031546612 +31 +1967.39330582966 +12 +-812.321046486997 +22 +-542.775570394861 +32 +1967.39330582966 +13 +-812.321046486997 +23 +-542.775570394861 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-902.602786167016 +20 +-373.87031546612 +30 +1967.39330582966 +11 +-802.244272938819 +21 +-536.042485570818 +31 +1900.55285125842 +12 +-891.406075310523 +22 +-369.232485975391 +32 +1900.55285125842 +13 +-891.406075310523 +23 +-369.232485975391 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-812.321046486997 +20 +-542.775570394861 +30 +1967.39330582966 +11 +-906.352875917291 +21 +-375.423653500801 +31 +2035.2022000213 +12 +-815.696038096872 +22 +-545.030667691736 +32 +2035.2022000213 +13 +-815.696038096872 +23 +-545.030667691736 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-906.352875917291 +20 +-375.423653500801 +30 +2035.2022000213 +11 +-812.321046486997 +21 +-542.775570394861 +31 +1967.39330582966 +12 +-902.602786167016 +22 +-373.87031546612 +32 +1967.39330582966 +13 +-902.602786167016 +23 +-373.87031546612 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-906.352875917291 +20 +-375.423653500801 +30 +2035.2022000213 +11 +-812.321046486997 +21 +-542.775570394861 +31 +2103.01109421295 +12 +-815.696038096872 +22 +-545.030667691736 +32 +2035.2022000213 +13 +-815.696038096872 +23 +-545.030667691736 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-812.321046486997 +20 +-542.775570394861 +30 +2103.01109421295 +11 +-906.352875917291 +21 +-375.423653500801 +31 +2035.2022000213 +12 +-902.602786167016 +22 +-373.87031546612 +32 +2103.01109421295 +13 +-902.602786167016 +23 +-373.87031546612 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-581.445732901797 +20 +-388.509617834311 +30 +628.271001705821 +11 +-679.332965393238 +21 +-281.388927633011 +31 +680.911023534629 +12 +-611.383516446667 +22 +-408.513405265645 +32 +680.911023534629 +13 +-611.383516446667 +23 +-408.513405265645 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-679.332965393238 +20 +-281.388927633011 +30 +680.911023534629 +11 +-581.445732901797 +21 +-388.509617834311 +31 +628.271001705821 +12 +-646.067882633009 +22 +-267.610079200261 +32 +628.271001705821 +13 +-646.067882633009 +23 +-267.610079200261 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +337.688389142806 +20 +-815.251888924486 +30 +2355.16675535807 +11 +509.589579018778 +21 +-762.654700553784 +31 +2296.83616997626 +12 +351.011407030345 +22 +-847.416499400322 +32 +2296.83616997626 +13 +351.011407030345 +23 +-847.416499400322 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +509.589579018778 +20 +-762.654700553784 +30 +2296.83616997626 +11 +337.688389142806 +21 +-815.251888924486 +31 +2355.16675535807 +12 +490.247554968877 +22 +-733.707315899088 +32 +2355.16675535807 +13 +490.247554968877 +23 +-733.707315899088 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +321.797626332425 +20 +-776.88819383121 +30 +2408.9276400213 +11 +490.247554968877 +21 +-733.707315899088 +31 +2355.16675535807 +12 +337.688389142806 +22 +-815.251888924486 +32 +2355.16675535807 +13 +337.688389142806 +23 +-815.251888924486 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +490.247554968877 +20 +-733.707315899088 +30 +2355.16675535807 +11 +321.797626332425 +21 +-776.88819383121 +31 +2408.9276400213 +12 +467.1777430806 +22 +-699.180902483484 +32 +2408.9276400213 +13 +467.1777430806 +23 +-699.180902483484 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +286.037069662455 +20 +-690.554572920556 +30 +2549.0746800213 +11 +415.26146157539 +21 +-621.482696406623 +31 +2408.9276400213 +12 +286.037069662455 +22 +-690.554572920556 +32 +2408.9276400213 +13 +286.037069662455 +23 +-690.554572920556 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +415.26146157539 +20 +-621.482696406623 +30 +2408.9276400213 +11 +286.037069662455 +21 +-690.554572920556 +31 +2549.0746800213 +12 +415.26146157539 +22 +-621.482696406622 +32 +2549.0746800213 +13 +415.26146157539 +23 +-621.482696406622 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +267.610079200261 +20 +-646.067882633009 +30 +628.271001705821 +11 +361.48899563696 +21 +-541.006514010435 +31 +587.016306884026 +12 +248.997950917359 +22 +-601.1342301078 +32 +587.016306884026 +13 +248.997950917359 +23 +-601.1342301078 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +361.48899563696 +20 +-541.006514010435 +30 +587.016306884026 +11 +267.610079200261 +21 +-646.067882633009 +31 +628.271001705821 +12 +388.509617834311 +22 +-581.445732901797 +32 +628.271001705821 +13 +388.509617834311 +23 +-581.445732901797 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +408.513405265645 +20 +-611.383516446667 +30 +680.911023534629 +11 +494.478949733692 +21 +-494.478949733692 +31 +628.271001705821 +12 +388.509617834311 +22 +-581.445732901797 +32 +628.271001705821 +13 +388.509617834311 +23 +-581.445732901797 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +494.478949733692 +20 +-494.478949733692 +30 +628.271001705821 +11 +408.513405265645 +21 +-611.383516446667 +31 +680.911023534629 +12 +519.938941830878 +22 +-519.938941830878 +32 +680.911023534629 +13 +519.938941830878 +23 +-519.938941830878 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +420.078334296643 +20 +-628.691655879276 +30 +741.194313252463 +11 +519.938941830878 +21 +-519.938941830878 +31 +680.911023534629 +12 +408.513405265645 +22 +-611.383516446667 +32 +680.911023534629 +13 +408.513405265645 +23 +-611.383516446667 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +519.938941830878 +20 +-519.938941830878 +30 +680.911023534629 +11 +420.078334296643 +21 +-628.691655879276 +31 +741.194313252463 +12 +534.658304488796 +22 +-534.658304488796 +32 +741.194313252463 +13 +534.658304488796 +23 +-534.658304488796 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +422.38228049373 +20 +-632.139755034707 +30 +804.835469255871 +11 +534.658304488796 +21 +-534.658304488796 +31 +741.194313252463 +12 +420.078334296643 +22 +-628.691655879276 +32 +741.194313252463 +13 +420.078334296643 +23 +-628.691655879276 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +534.658304488796 +20 +-534.658304488796 +30 +741.194313252463 +11 +422.38228049373 +21 +-632.139755034707 +31 +804.835469255871 +12 +537.590671780316 +22 +-537.590671780316 +32 +804.835469255871 +13 +537.590671780316 +23 +-537.590671780316 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +415.26146157539 +20 +-621.482696406622 +30 +867.310386884026 +11 +537.590671780316 +21 +-537.590671780316 +31 +804.835469255871 +12 +422.38228049373 +22 +-632.139755034707 +32 +804.835469255871 +13 +422.38228049373 +23 +-632.139755034707 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +537.590671780316 +20 +-537.590671780316 +30 +804.835469255871 +11 +415.26146157539 +21 +-621.482696406622 +31 +867.310386884026 +12 +528.527588401294 +22 +-528.527588401294 +32 +867.310386884026 +13 +528.527588401294 +23 +-528.527588401294 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +330.32974370685 +20 +-330.32974370685 +30 +1100.8886000213 +11 +415.26146157539 +21 +-621.482696406622 +31 +867.310386884026 +12 +259.538414235775 +22 +-388.426686378325 +32 +1100.8886000213 +13 +259.538414235775 +23 +-388.426686378325 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +415.26146157539 +20 +-621.482696406622 +30 +867.310386884026 +11 +330.32974370685 +21 +-330.32974370685 +31 +1100.8886000213 +12 +528.527588401294 +22 +-528.527588401294 +32 +867.310386884026 +13 +528.527588401294 +23 +-528.527588401294 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +337.399937905583 +20 +-504.954691392474 +30 +1287.75132002131 +11 +495.494614285554 +21 +-495.494614285554 +31 +1100.8886000213 +12 +389.307620352121 +22 +-582.640028068573 +32 +1100.8886000213 +13 +389.307620352121 +23 +-582.640028068573 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +495.494614285554 +20 +-495.494614285554 +30 +1100.8886000213 +11 +337.399937905583 +21 +-504.954691392474 +31 +1287.75132002131 +12 +429.428666054072 +22 +-429.428666054072 +32 +1287.75132002131 +13 +429.428666054072 +23 +-429.428666054072 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +363.353779128852 +20 +-543.797359730523 +30 +1474.6140400213 +11 +528.527588401294 +21 +-528.527588401294 +31 +1287.75132002131 +12 +415.26146157539 +22 +-621.482696406623 +32 +1287.75132002131 +13 +415.26146157539 +23 +-621.482696406623 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +528.527588401294 +20 +-528.527588401294 +30 +1287.75132002131 +11 +363.353779128852 +21 +-543.797359730523 +31 +1474.6140400213 +12 +462.461640169813 +22 +-462.461640169813 +32 +1474.6140400213 +13 +462.461640169813 +23 +-462.461640169813 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-607.303843605455 +30 +1287.75132002131 +11 +136.706656519425 +21 +-687.270773156591 +31 +1100.8886000213 +12 +0.0 +22 +-700.735203605455 +32 +1100.8886000213 +13 +0.0 +23 +-700.735203605455 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +136.706656519425 +20 +-687.270773156591 +30 +1100.8886000213 +11 +0.0 +21 +-607.303843605455 +31 +1287.75132002131 +12 +118.479102410621 +22 +-595.634670540536 +32 +1287.75132002131 +13 +118.479102410621 +23 +-595.634670540536 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +389.307620352121 +20 +-582.640028068573 +30 +1661.47676002131 +11 +561.560562517035 +21 +-561.560562517035 +31 +1474.6140400213 +12 +441.215302798659 +22 +-660.325364744673 +32 +1474.6140400213 +13 +441.215302798659 +23 +-660.325364744673 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +561.560562517035 +20 +-561.560562517035 +30 +1474.6140400213 +11 +389.307620352121 +21 +-582.640028068573 +31 +1661.47676002131 +12 +495.494614285554 +22 +-495.494614285554 +32 +1661.47676002131 +13 +495.494614285554 +23 +-495.494614285554 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +926.689746301964 +20 +-184.330051263379 +30 +2234.76895526921 +11 +964.850983209363 +21 +-1.80477854883065e-13 +31 +2169.85154878419 +12 +946.311642114328 +22 +-188.233089011893 +32 +2169.85154878419 +13 +946.311642114328 +23 +-188.233089011893 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +964.850983209363 +20 +-1.80477854883065e-13 +30 +2169.85154878419 +11 +926.689746301964 +21 +-184.330051263379 +31 +2234.76895526921 +12 +944.844671731792 +22 +-1.80477854883065e-13 +32 +2234.76895526921 +13 +944.844671731792 +23 +-1.80477854883065e-13 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +490.247554968877 +20 +-733.707315899088 +30 +1715.23764468454 +11 +594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +467.1777430806 +22 +-699.180902483484 +32 +1661.47676002131 +13 +467.1777430806 +23 +-699.180902483484 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +594.604481158485 +20 +-594.604481158485 +30 +1661.47676002131 +11 +490.247554968877 +21 +-733.707315899088 +31 +1715.23764468454 +12 +623.966782191491 +22 +-623.966782191491 +32 +1715.23764468454 +13 +623.966782191491 +23 +-623.966782191491 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +509.589579018778 +20 +-762.654700553784 +30 +1773.56823006635 +11 +623.966782191491 +21 +-623.966782191491 +31 +1715.23764468454 +12 +490.247554968877 +22 +-733.707315899088 +32 +1715.23764468454 +13 +490.247554968877 +23 +-733.707315899088 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +623.966782191491 +20 +-623.966782191491 +30 +1715.23764468454 +11 +509.589579018778 +21 +-762.654700553784 +31 +1773.56823006635 +12 +648.584509266648 +22 +-648.584509266648 +32 +1773.56823006635 +13 +648.584509266648 +23 +-648.584509266648 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +490.247554968877 +20 +-733.707315899088 +30 +2355.16675535807 +11 +648.584509266648 +21 +-648.584509266648 +31 +2296.83616997626 +12 +509.589579018778 +22 +-762.654700553784 +32 +2296.83616997626 +13 +509.589579018778 +23 +-762.654700553784 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +2296.83616997626 +11 +490.247554968877 +21 +-733.707315899088 +31 +2355.16675535807 +12 +623.96678219149 +22 +-623.966782191491 +32 +2355.16675535807 +13 +623.96678219149 +23 +-623.966782191491 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +899.612557411552 +20 +-178.944063519201 +30 +2296.83616997626 +11 +944.844671731792 +21 +-1.80477854883065e-13 +31 +2234.76895526921 +12 +926.689746301964 +22 +-184.330051263379 +32 +2234.76895526921 +13 +926.689746301964 +23 +-184.330051263379 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +944.844671731792 +20 +-1.80477854883065e-13 +30 +2234.76895526921 +11 +899.612557411552 +21 +-178.944063519201 +31 +2296.83616997626 +12 +917.237009349992 +22 +-1.80477854883065e-13 +32 +2296.83616997626 +13 +917.237009349992 +23 +-1.80477854883065e-13 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +865.466789057043 +20 +-172.152047899808 +30 +2355.16675535807 +11 +917.237009349992 +21 +-1.80477854883065e-13 +31 +2296.83616997626 +12 +899.612557411552 +22 +-178.944063519201 +32 +2296.83616997626 +13 +899.612557411552 +23 +-178.944063519201 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +917.237009349992 +20 +-1.80477854883065e-13 +30 +2296.83616997626 +11 +865.466789057043 +21 +-172.152047899808 +31 +2355.16675535807 +12 +882.422285845505 +22 +-1.80477854883065e-13 +32 +2355.16675535807 +13 +882.422285845505 +23 +-1.80477854883065e-13 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +824.740107573921 +20 +-164.051007270483 +30 +2408.9276400213 +11 +882.422285845505 +21 +-1.80477854883065e-13 +31 +2355.16675535807 +12 +865.466789057043 +22 +-172.152047899808 +32 +2355.16675535807 +13 +865.466789057043 +23 +-172.152047899808 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +882.422285845505 +20 +-1.80477854883065e-13 +30 +2355.16675535807 +11 +824.740107573921 +21 +-164.051007270483 +31 +2408.9276400213 +12 +840.897721502147 +22 +-1.80477854883065e-13 +32 +2408.9276400213 +13 +840.897721502147 +23 +-1.80477854883065e-13 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +747.450883605455 +20 +-1.80477854883065e-13 +30 +2549.0746800213 +11 +733.088824464619 +21 +-145.820433573828 +31 +2408.9276400213 +12 +733.088824464618 +22 +-145.820433573828 +32 +2549.0746800213 +13 +733.088824464618 +23 +-145.820433573828 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.088824464619 +20 +-145.820433573828 +30 +2408.9276400213 +11 +747.450883605455 +21 +-1.80477854883065e-13 +31 +2549.0746800213 +12 +747.450883605455 +22 +-1.80477854883065e-13 +32 +2408.9276400213 +13 +747.450883605455 +23 +-1.80477854883065e-13 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +467.1777430806 +20 +-699.180902483484 +30 +2408.9276400213 +11 +623.96678219149 +21 +-623.966782191491 +31 +2355.16675535807 +12 +490.247554968877 +22 +-733.707315899088 +32 +2355.16675535807 +13 +490.247554968877 +23 +-733.707315899088 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +623.96678219149 +20 +-623.966782191491 +30 +2355.16675535807 +11 +467.1777430806 +21 +-699.180902483484 +31 +2408.9276400213 +12 +594.604481158485 +22 +-594.604481158485 +32 +2408.9276400213 +13 +594.604481158485 +23 +-594.604481158485 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +415.26146157539 +20 +-621.482696406622 +30 +2549.0746800213 +11 +528.527588401294 +21 +-528.527588401294 +31 +2408.9276400213 +12 +415.26146157539 +22 +-621.482696406623 +32 +2408.9276400213 +13 +415.26146157539 +23 +-621.482696406623 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +528.527588401294 +20 +-528.527588401294 +30 +2408.9276400213 +11 +415.26146157539 +21 +-621.482696406622 +31 +2549.0746800213 +12 +528.527588401294 +22 +-528.527588401294 +32 +2549.0746800213 +13 +528.527588401294 +23 +-528.527588401294 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +388.509617834311 +20 +-581.445732901797 +30 +628.271001705821 +11 +460.088220979597 +21 +-460.088220979597 +31 +587.016306884026 +12 +361.48899563696 +22 +-541.006514010435 +32 +587.016306884026 +13 +361.48899563696 +23 +-541.006514010435 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +460.088220979597 +20 +-460.088220979597 +30 +587.016306884026 +11 +388.509617834311 +21 +-581.445732901797 +31 +628.271001705821 +12 +494.478949733692 +22 +-494.478949733692 +32 +628.271001705821 +13 +494.478949733692 +23 +-494.478949733692 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +611.383516446667 +20 +-408.513405265645 +30 +680.911023534629 +11 +494.478949733692 +21 +-494.478949733692 +31 +628.271001705821 +12 +519.938941830878 +22 +-519.938941830878 +32 +680.911023534629 +13 +519.938941830878 +23 +-519.938941830878 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +494.478949733692 +20 +-494.478949733692 +30 +628.271001705821 +11 +611.383516446667 +21 +-408.513405265645 +31 +680.911023534629 +12 +581.445732901797 +22 +-388.509617834311 +32 +628.271001705821 +13 +581.445732901797 +23 +-388.509617834311 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +628.691655879276 +20 +-420.078334296643 +30 +741.194313252463 +11 +519.938941830878 +21 +-519.938941830878 +31 +680.911023534629 +12 +534.658304488796 +22 +-534.658304488796 +32 +741.194313252463 +13 +534.658304488796 +23 +-534.658304488796 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +519.938941830878 +20 +-519.938941830878 +30 +680.911023534629 +11 +628.691655879276 +21 +-420.078334296643 +31 +741.194313252463 +12 +611.383516446667 +22 +-408.513405265645 +32 +680.911023534629 +13 +611.383516446667 +23 +-408.513405265645 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +632.139755034707 +20 +-422.38228049373 +30 +804.835469255871 +11 +534.658304488796 +21 +-534.658304488796 +31 +741.194313252463 +12 +537.590671780316 +22 +-537.590671780316 +32 +804.835469255871 +13 +537.590671780316 +23 +-537.590671780316 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +534.658304488796 +20 +-534.658304488796 +30 +741.194313252463 +11 +632.139755034707 +21 +-422.38228049373 +31 +804.835469255871 +12 +628.691655879276 +22 +-420.078334296643 +32 +741.194313252463 +13 +628.691655879276 +23 +-420.078334296643 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +528.527588401294 +20 +-528.527588401294 +30 +867.310386884026 +11 +632.139755034707 +21 +-422.38228049373 +31 +804.835469255871 +12 +537.590671780316 +22 +-537.590671780316 +32 +804.835469255871 +13 +537.590671780316 +23 +-537.590671780316 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +632.139755034707 +20 +-422.38228049373 +30 +804.835469255871 +11 +528.527588401294 +21 +-528.527588401294 +31 +867.310386884026 +12 +621.482696406622 +22 +-415.26146157539 +32 +867.310386884026 +13 +621.482696406622 +23 +-415.26146157539 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +388.426686378325 +20 +-259.538414235776 +30 +1100.8886000213 +11 +528.527588401294 +21 +-528.527588401294 +31 +867.310386884026 +12 +330.32974370685 +22 +-330.32974370685 +32 +1100.8886000213 +13 +330.32974370685 +23 +-330.32974370685 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +528.527588401294 +20 +-528.527588401294 +30 +867.310386884026 +11 +388.426686378325 +21 +-259.538414235776 +31 +1100.8886000213 +12 +621.482696406622 +22 +-415.26146157539 +32 +867.310386884026 +13 +621.482696406622 +23 +-415.26146157539 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-946.311642114328 +20 +-188.233089011893 +30 +2169.85154878419 +11 +-872.922653615348 +21 +-361.576402030189 +31 +2234.76895526921 +12 +-891.406075310522 +22 +-369.232485975391 +32 +2169.85154878419 +13 +-891.406075310522 +23 +-369.232485975391 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-872.922653615348 +20 +-361.576402030189 +30 +2234.76895526921 +11 +-946.311642114328 +21 +-188.233089011893 +31 +2169.85154878419 +12 +-926.689746301964 +22 +-184.330051263378 +32 +2234.76895526921 +13 +-926.689746301964 +23 +-184.330051263378 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +429.428666054072 +20 +-429.428666054072 +30 +1287.75132002131 +11 +582.640028068573 +21 +-389.307620352121 +31 +1100.8886000213 +12 +495.494614285554 +22 +-495.494614285554 +32 +1100.8886000213 +13 +495.494614285554 +23 +-495.494614285554 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +582.640028068573 +20 +-389.307620352121 +30 +1100.8886000213 +11 +429.428666054072 +21 +-429.428666054072 +31 +1287.75132002131 +12 +504.954691392474 +22 +-337.399937905583 +32 +1287.75132002131 +13 +504.954691392474 +23 +-337.399937905583 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +462.461640169813 +20 +-462.461640169813 +30 +1474.6140400213 +11 +621.482696406623 +21 +-415.26146157539 +31 +1287.75132002131 +12 +528.527588401294 +22 +-528.527588401294 +32 +1287.75132002131 +13 +528.527588401294 +23 +-528.527588401294 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +621.482696406623 +20 +-415.26146157539 +30 +1287.75132002131 +11 +462.461640169813 +21 +-462.461640169813 +31 +1474.6140400213 +12 +543.797359730523 +22 +-363.353779128852 +32 +1474.6140400213 +13 +543.797359730523 +23 +-363.353779128852 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +495.494614285554 +20 +-495.494614285554 +30 +1661.47676002131 +11 +660.325364744673 +21 +-441.21530279866 +31 +1474.6140400213 +12 +561.560562517035 +22 +-561.560562517035 +32 +1474.6140400213 +13 +561.560562517035 +23 +-561.560562517035 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +660.325364744673 +20 +-441.21530279866 +30 +1474.6140400213 +11 +495.494614285554 +21 +-495.494614285554 +31 +1661.47676002131 +12 +582.640028068573 +22 +-389.307620352121 +32 +1661.47676002131 +13 +582.640028068573 +23 +-389.307620352121 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +685.862005953678 +20 +-136.426435300007 +30 +628.271001705821 +11 +650.663001997455 +21 +-1.80477854883065e-13 +31 +587.016306884026 +12 +638.160694862082 +22 +-126.938054583664 +32 +587.016306884026 +13 +638.160694862082 +23 +-126.938054583664 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +650.663001997455 +20 +-1.80477854883065e-13 +30 +587.016306884026 +11 +685.862005953678 +21 +-136.426435300007 +31 +628.271001705821 +12 +699.298837021391 +22 +-1.80477854883065e-13 +32 +628.271001705821 +13 +699.298837021391 +23 +-1.80477854883065e-13 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.707315899088 +20 +-490.247554968878 +30 +1715.23764468454 +11 +594.604481158485 +21 +-594.604481158485 +31 +1661.47676002131 +12 +623.966782191491 +22 +-623.966782191491 +32 +1715.23764468454 +13 +623.966782191491 +23 +-623.966782191491 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +594.604481158485 +20 +-594.604481158485 +30 +1661.47676002131 +11 +733.707315899088 +21 +-490.247554968878 +31 +1715.23764468454 +12 +699.180902483483 +22 +-467.1777430806 +32 +1661.47676002131 +13 +699.180902483483 +23 +-467.1777430806 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +762.654700553784 +20 +-509.589579018778 +30 +1773.56823006635 +11 +623.966782191491 +21 +-623.966782191491 +31 +1715.23764468454 +12 +648.584509266648 +22 +-648.584509266648 +32 +1773.56823006635 +13 +648.584509266648 +23 +-648.584509266648 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +623.966782191491 +20 +-623.966782191491 +30 +1715.23764468454 +11 +762.654700553784 +21 +-509.589579018778 +31 +1773.56823006635 +12 +733.707315899088 +22 +-490.247554968878 +32 +1715.23764468454 +13 +733.707315899088 +23 +-490.247554968878 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +785.609632890959 +20 +-524.927574441361 +30 +1835.6354447734 +11 +648.584509266648 +21 +-648.584509266648 +31 +1773.56823006635 +12 +668.106074549527 +22 +-668.106074549528 +32 +1835.6354447734 +13 +668.106074549527 +23 +-668.106074549528 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +1773.56823006635 +11 +785.609632890959 +21 +-524.927574441361 +31 +1835.6354447734 +12 +762.654700553784 +22 +-509.589579018778 +32 +1773.56823006635 +13 +762.654700553784 +23 +-509.589579018778 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +136.426435300007 +20 +-685.862005953678 +30 +628.271001705821 +11 +0.0 +21 +-650.663001997455 +31 +587.016306884026 +12 +0.0 +22 +-699.298837021391 +32 +628.271001705821 +13 +0.0 +23 +-699.298837021391 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-650.663001997455 +30 +587.016306884026 +11 +136.426435300007 +21 +-685.862005953678 +31 +628.271001705821 +12 +126.938054583664 +22 +-638.160694862082 +32 +587.016306884026 +13 +126.938054583664 +23 +-638.160694862082 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +2296.83616997626 +11 +785.609632890959 +21 +-524.927574441361 +31 +2234.76895526921 +12 +668.106074549527 +22 +-668.106074549528 +32 +2234.76895526921 +13 +668.106074549527 +23 +-668.106074549528 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +785.609632890959 +20 +-524.927574441361 +30 +2234.76895526921 +11 +648.584509266648 +21 +-648.584509266648 +31 +2296.83616997626 +12 +762.654700553784 +22 +-509.589579018778 +32 +2296.83616997626 +13 +762.654700553784 +23 +-509.589579018778 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +623.96678219149 +20 +-623.966782191491 +30 +2355.16675535807 +11 +762.654700553784 +21 +-509.589579018778 +31 +2296.83616997626 +12 +648.584509266648 +22 +-648.584509266648 +32 +2296.83616997626 +13 +648.584509266648 +23 +-648.584509266648 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +762.654700553784 +20 +-509.589579018778 +30 +2296.83616997626 +11 +623.96678219149 +21 +-623.966782191491 +31 +2355.16675535807 +12 +733.707315899088 +22 +-490.247554968877 +32 +2355.16675535807 +13 +733.707315899088 +23 +-490.247554968877 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +594.604481158485 +20 +-594.604481158485 +30 +2408.9276400213 +11 +733.707315899088 +21 +-490.247554968877 +31 +2355.16675535807 +12 +623.96678219149 +22 +-623.966782191491 +32 +2355.16675535807 +13 +623.96678219149 +23 +-623.966782191491 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.707315899088 +20 +-490.247554968877 +30 +2355.16675535807 +11 +594.604481158485 +21 +-594.604481158485 +31 +2408.9276400213 +12 +699.180902483483 +22 +-467.1777430806 +32 +2408.9276400213 +13 +699.180902483483 +23 +-467.1777430806 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +528.527588401294 +20 +-528.527588401294 +30 +2549.0746800213 +11 +621.482696406623 +21 +-415.26146157539 +31 +2408.9276400213 +12 +528.527588401294 +22 +-528.527588401294 +32 +2408.9276400213 +13 +528.527588401294 +23 +-528.527588401294 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +621.482696406623 +20 +-415.26146157539 +30 +2408.9276400213 +11 +528.527588401294 +21 +-528.527588401294 +31 +2549.0746800213 +12 +621.482696406622 +22 +-415.26146157539 +32 +2549.0746800213 +13 +621.482696406622 +23 +-415.26146157539 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +494.478949733692 +20 +-494.478949733692 +30 +628.271001705821 +11 +541.006514010434 +21 +-361.48899563696 +31 +587.016306884026 +12 +460.088220979597 +22 +-460.088220979597 +32 +587.016306884026 +13 +460.088220979597 +23 +-460.088220979597 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +541.006514010434 +20 +-361.48899563696 +30 +587.016306884026 +11 +494.478949733692 +21 +-494.478949733692 +31 +628.271001705821 +12 +581.445732901797 +22 +-388.509617834311 +32 +628.271001705821 +13 +581.445732901797 +23 +-388.509617834311 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +698.564739508658 +20 +-289.354989300114 +30 +741.194313252463 +11 +611.383516446667 +21 +-408.513405265645 +31 +680.911023534629 +12 +628.691655879276 +22 +-420.078334296643 +32 +741.194313252463 +13 +628.691655879276 +23 +-420.078334296643 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +611.383516446667 +20 +-408.513405265645 +30 +680.911023534629 +11 +698.564739508658 +21 +-289.354989300114 +31 +741.194313252463 +12 +679.332965393237 +22 +-281.388927633011 +32 +680.911023534629 +13 +679.332965393237 +23 +-281.388927633011 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +702.396062011173 +20 +-290.941975042481 +30 +804.835469255871 +11 +628.691655879276 +21 +-420.078334296643 +31 +741.194313252463 +12 +632.139755034707 +22 +-422.38228049373 +32 +804.835469255871 +13 +632.139755034707 +23 +-422.38228049373 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +628.691655879276 +20 +-420.078334296643 +30 +741.194313252463 +11 +702.396062011173 +21 +-290.941975042481 +31 +804.835469255871 +12 +698.564739508658 +22 +-289.354989300114 +32 +741.194313252463 +13 +698.564739508658 +23 +-289.354989300114 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +621.482696406622 +20 +-415.26146157539 +30 +867.310386884026 +11 +702.396062011173 +21 +-290.941975042481 +31 +804.835469255871 +12 +632.139755034707 +22 +-422.38228049373 +32 +804.835469255871 +13 +632.139755034707 +23 +-422.38228049373 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +702.396062011173 +20 +-290.941975042481 +30 +804.835469255871 +11 +621.482696406622 +21 +-415.26146157539 +31 +867.310386884026 +12 +690.554572920556 +22 +-286.037069662455 +32 +867.310386884026 +13 +690.554572920556 +23 +-286.037069662455 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +543.797359730523 +20 +-363.353779128852 +30 +1474.6140400213 +11 +690.554572920556 +21 +-286.037069662455 +31 +1287.75132002131 +12 +621.482696406623 +22 +-415.26146157539 +32 +1287.75132002131 +13 +621.482696406623 +23 +-415.26146157539 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +690.554572920556 +20 +-286.037069662455 +30 +1287.75132002131 +11 +543.797359730523 +21 +-363.353779128852 +31 +1474.6140400213 +12 +604.235251721863 +22 +-250.282436127116 +32 +1474.6140400213 +13 +604.235251721863 +23 +-250.282436127116 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +431.596609324475 +20 +-178.77316905644 +30 +1100.8886000213 +11 +621.482696406622 +21 +-415.26146157539 +31 +867.310386884026 +12 +388.426686378325 +22 +-259.538414235776 +32 +1100.8886000213 +13 +388.426686378325 +23 +-259.538414235776 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +621.482696406622 +20 +-415.26146157539 +30 +867.310386884026 +11 +431.596609324475 +21 +-178.77316905644 +31 +1100.8886000213 +12 +690.554572920556 +22 +-286.037069662455 +32 +867.310386884026 +13 +690.554572920556 +23 +-286.037069662455 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +504.954691392474 +20 +-337.399937905583 +30 +1287.75132002131 +11 +647.39491232121 +21 +-268.159752894786 +31 +1100.8886000213 +12 +582.640028068573 +22 +-389.307620352121 +32 +1100.8886000213 +13 +582.640028068573 +23 +-389.307620352121 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +647.39491232121 +20 +-268.159752894786 +30 +1100.8886000213 +11 +504.954691392474 +21 +-337.399937905583 +31 +1287.75132002131 +12 +561.075591122516 +22 +-232.405119359447 +32 +1287.75132002131 +13 +561.075591122516 +23 +-232.405119359447 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-946.311642114328 +20 +-188.233089011893 +30 +1900.55285125842 +11 +-976.970215709362 +21 +-1.80477854883065e-13 +31 +1967.39330582966 +12 +-958.198006960111 +22 +-190.597433982906 +32 +1967.39330582966 +13 +-958.198006960111 +23 +-190.597433982906 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-976.970215709362 +20 +-1.80477854883065e-13 +30 +1967.39330582966 +11 +-946.311642114328 +21 +-188.233089011893 +31 +1900.55285125842 +12 +-964.850983209364 +22 +-1.80477854883065e-13 +32 +1900.55285125842 +13 +-964.850983209364 +23 +-1.80477854883065e-13 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +582.640028068573 +20 +-389.307620352121 +30 +1661.47676002131 +11 +733.714233519903 +21 +-303.914386430124 +31 +1474.6140400213 +12 +660.325364744673 +22 +-441.21530279866 +32 +1474.6140400213 +13 +660.325364744673 +23 +-441.21530279866 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.714233519903 +20 +-303.914386430124 +30 +1474.6140400213 +11 +582.640028068573 +21 +-389.307620352121 +31 +1661.47676002131 +12 +647.39491232121 +22 +-268.159752894786 +32 +1661.47676002131 +13 +647.39491232121 +23 +-268.159752894786 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +815.251888924487 +20 +-337.688389142806 +30 +1715.23764468454 +11 +699.180902483483 +21 +-467.1777430806 +31 +1661.47676002131 +12 +733.707315899088 +22 +-490.247554968878 +32 +1715.23764468454 +13 +733.707315899088 +23 +-490.247554968878 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +699.180902483483 +20 +-467.1777430806 +30 +1661.47676002131 +11 +815.251888924487 +21 +-337.688389142806 +31 +1715.23764468454 +12 +776.88819383121 +22 +-321.797626332425 +32 +1661.47676002131 +13 +776.88819383121 +23 +-321.797626332425 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +847.416499400322 +20 +-351.011407030345 +30 +1773.56823006635 +11 +733.707315899088 +21 +-490.247554968878 +31 +1715.23764468454 +12 +762.654700553784 +22 +-509.589579018778 +32 +1773.56823006635 +13 +762.654700553784 +23 +-509.589579018778 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.707315899088 +20 +-490.247554968878 +30 +1715.23764468454 +11 +847.416499400322 +21 +-351.011407030345 +31 +1773.56823006635 +12 +815.251888924487 +22 +-337.688389142806 +32 +1715.23764468454 +13 +815.251888924487 +23 +-337.688389142806 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +872.922653615349 +20 +-361.576402030189 +30 +1835.6354447734 +11 +762.654700553784 +21 +-509.589579018778 +31 +1773.56823006635 +12 +785.609632890959 +22 +-524.927574441361 +32 +1835.6354447734 +13 +785.609632890959 +23 +-524.927574441361 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +762.654700553784 +20 +-509.589579018778 +30 +1773.56823006635 +11 +872.922653615349 +21 +-361.576402030189 +31 +1835.6354447734 +12 +847.416499400322 +22 +-351.011407030345 +32 +1773.56823006635 +13 +847.416499400322 +23 +-351.011407030345 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +891.406075310522 +20 +-369.232485975391 +30 +1900.55285125842 +11 +785.609632890959 +21 +-524.927574441361 +31 +1835.6354447734 +12 +802.244272938819 +22 +-536.042485570819 +32 +1900.55285125842 +13 +802.244272938819 +23 +-536.042485570819 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +785.609632890959 +20 +-524.927574441361 +30 +1835.6354447734 +11 +891.406075310522 +21 +-369.232485975391 +31 +1900.55285125842 +12 +872.922653615349 +22 +-361.576402030189 +32 +1835.6354447734 +13 +872.922653615349 +23 +-361.576402030189 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +906.35287591729 +20 +-375.423653500801 +30 +2035.2022000213 +11 +812.321046486997 +21 +-542.775570394861 +31 +1967.39330582966 +12 +815.696038096871 +22 +-545.030667691736 +32 +2035.2022000213 +13 +815.696038096871 +23 +-545.030667691736 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +812.321046486997 +20 +-542.775570394861 +30 +1967.39330582966 +11 +906.35287591729 +21 +-375.423653500801 +31 +2035.2022000213 +12 +902.602786167016 +22 +-373.87031546612 +32 +1967.39330582966 +13 +902.602786167016 +23 +-373.87031546612 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +902.602786167016 +20 +-373.87031546612 +30 +1967.39330582966 +11 +802.244272938819 +21 +-536.042485570819 +31 +1900.55285125842 +12 +812.321046486997 +22 +-542.775570394861 +32 +1967.39330582966 +13 +812.321046486997 +23 +-542.775570394861 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +802.244272938819 +20 +-536.042485570819 +30 +1900.55285125842 +11 +902.602786167016 +21 +-373.87031546612 +31 +1967.39330582966 +12 +891.406075310522 +22 +-369.232485975391 +32 +1900.55285125842 +13 +891.406075310522 +23 +-369.232485975391 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +812.321046486996 +20 +-542.775570394861 +30 +2103.01109421295 +11 +906.35287591729 +21 +-375.423653500801 +31 +2035.2022000213 +12 +815.696038096871 +22 +-545.030667691736 +32 +2035.2022000213 +13 +815.696038096871 +23 +-545.030667691736 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +906.35287591729 +20 +-375.423653500801 +30 +2035.2022000213 +11 +812.321046486996 +21 +-542.775570394861 +31 +2103.01109421295 +12 +902.602786167016 +22 +-373.87031546612 +32 +2103.01109421295 +13 +902.602786167016 +23 +-373.87031546612 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-926.689746301964 +20 +-184.330051263378 +30 +1835.6354447734 +11 +-964.850983209364 +21 +-1.80477854883065e-13 +31 +1900.55285125842 +12 +-946.311642114328 +22 +-188.233089011893 +32 +1900.55285125842 +13 +-946.311642114328 +23 +-188.233089011893 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-964.850983209364 +20 +-1.80477854883065e-13 +30 +1900.55285125842 +11 +-926.689746301964 +21 +-184.330051263378 +31 +1835.6354447734 +12 +-944.844671731792 +22 +0.0 +32 +1835.6354447734 +13 +-944.844671731792 +23 +0.0 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +802.244272938819 +20 +-536.042485570818 +30 +2169.85154878419 +11 +902.602786167016 +21 +-373.87031546612 +31 +2103.01109421295 +12 +812.321046486996 +22 +-542.775570394861 +32 +2103.01109421295 +13 +812.321046486996 +23 +-542.775570394861 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +902.602786167016 +20 +-373.87031546612 +30 +2103.01109421295 +11 +802.244272938819 +21 +-536.042485570818 +31 +2169.85154878419 +12 +891.406075310522 +22 +-369.232485975391 +32 +2169.85154878419 +13 +891.406075310522 +23 +-369.232485975391 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +785.609632890959 +20 +-524.927574441361 +30 +2234.76895526921 +11 +891.406075310522 +21 +-369.232485975391 +31 +2169.85154878419 +12 +802.244272938819 +22 +-536.042485570818 +32 +2169.85154878419 +13 +802.244272938819 +23 +-536.042485570818 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +891.406075310522 +20 +-369.232485975391 +30 +2169.85154878419 +11 +785.609632890959 +21 +-524.927574441361 +31 +2234.76895526921 +12 +872.922653615349 +22 +-361.576402030189 +32 +2234.76895526921 +13 +872.922653615349 +23 +-361.576402030189 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-519.938941830878 +20 +-519.938941830878 +30 +680.911023534629 +11 +-388.509617834311 +21 +-581.445732901797 +31 +628.271001705821 +12 +-494.478949733692 +22 +-494.478949733692 +32 +628.271001705821 +13 +-494.478949733692 +23 +-494.478949733692 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-388.509617834311 +20 +-581.445732901797 +30 +628.271001705821 +11 +-519.938941830878 +21 +-519.938941830878 +31 +680.911023534629 +12 +-408.513405265646 +22 +-611.383516446667 +32 +680.911023534629 +13 +-408.513405265646 +23 +-611.383516446667 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +762.654700553784 +20 +-509.589579018778 +30 +2296.83616997626 +11 +872.922653615349 +21 +-361.576402030189 +31 +2234.76895526921 +12 +785.609632890959 +22 +-524.927574441361 +32 +2234.76895526921 +13 +785.609632890959 +23 +-524.927574441361 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +872.922653615349 +20 +-361.576402030189 +30 +2234.76895526921 +11 +762.654700553784 +21 +-509.589579018778 +31 +2296.83616997626 +12 +847.416499400322 +22 +-351.011407030345 +32 +2296.83616997626 +13 +847.416499400322 +23 +-351.011407030345 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.707315899088 +20 +-490.247554968877 +30 +2355.16675535807 +11 +847.416499400322 +21 +-351.011407030345 +31 +2296.83616997626 +12 +762.654700553784 +22 +-509.589579018778 +32 +2296.83616997626 +13 +762.654700553784 +23 +-509.589579018778 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +847.416499400322 +20 +-351.011407030345 +30 +2296.83616997626 +11 +733.707315899088 +21 +-490.247554968877 +31 +2355.16675535807 +12 +815.251888924486 +22 +-337.688389142806 +32 +2355.16675535807 +13 +815.251888924486 +23 +-337.688389142806 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +699.180902483483 +20 +-467.1777430806 +30 +2408.9276400213 +11 +815.251888924486 +21 +-337.688389142806 +31 +2355.16675535807 +12 +733.707315899088 +22 +-490.247554968877 +32 +2355.16675535807 +13 +733.707315899088 +23 +-490.247554968877 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +815.251888924486 +20 +-337.688389142806 +30 +2355.16675535807 +11 +699.180902483483 +21 +-467.1777430806 +31 +2408.9276400213 +12 +776.88819383121 +22 +-321.797626332425 +32 +2408.9276400213 +13 +776.88819383121 +23 +-321.797626332425 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +621.482696406622 +20 +-415.26146157539 +30 +2549.0746800213 +11 +690.554572920556 +21 +-286.037069662455 +31 +2408.9276400213 +12 +621.482696406623 +22 +-415.26146157539 +32 +2408.9276400213 +13 +621.482696406623 +23 +-415.26146157539 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +690.554572920556 +20 +-286.037069662455 +30 +2408.9276400213 +11 +621.482696406622 +21 +-415.26146157539 +31 +2549.0746800213 +12 +690.554572920556 +22 +-286.037069662455 +32 +2549.0746800213 +13 +690.554572920556 +23 +-286.037069662455 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +581.445732901797 +20 +-388.509617834311 +30 +628.271001705821 +11 +601.1342301078 +21 +-248.997950917359 +31 +587.016306884026 +12 +541.006514010434 +22 +-361.48899563696 +32 +587.016306884026 +13 +541.006514010434 +23 +-361.48899563696 +33 +587.016306884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +601.1342301078 +20 +-248.997950917359 +30 +587.016306884026 +11 +581.445732901797 +21 +-388.509617834311 +31 +628.271001705821 +12 +646.067882633009 +22 +-267.610079200261 +32 +628.271001705821 +13 +646.067882633009 +23 +-267.610079200261 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +721.176029454062 +20 +-143.45083131617 +30 +680.911023534629 +11 +646.067882633009 +21 +-267.610079200261 +31 +628.271001705821 +12 +679.332965393237 +22 +-281.388927633011 +32 +680.911023534629 +13 +679.332965393237 +23 +-281.388927633011 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +646.067882633009 +20 +-267.610079200261 +30 +628.271001705821 +11 +721.176029454062 +21 +-143.45083131617 +31 +680.911023534629 +12 +685.862005953678 +22 +-136.426435300007 +32 +628.271001705821 +13 +685.862005953678 +23 +-136.426435300007 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +741.592371958341 +20 +-147.51189433693 +30 +741.194313252463 +11 +679.332965393237 +21 +-281.388927633011 +31 +680.911023534629 +12 +698.564739508658 +22 +-289.354989300114 +32 +741.194313252463 +13 +698.564739508658 +23 +-289.354989300114 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +679.332965393237 +20 +-281.388927633011 +30 +680.911023534629 +11 +741.592371958341 +21 +-147.51189433693 +31 +741.194313252463 +12 +721.176029454062 +22 +-143.45083131617 +32 +680.911023534629 +13 +721.176029454062 +23 +-143.45083131617 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +745.659682232799 +20 +-148.32093265249 +30 +804.835469255871 +11 +698.564739508658 +21 +-289.354989300114 +31 +741.194313252463 +12 +702.396062011173 +22 +-290.941975042481 +32 +804.835469255871 +13 +702.396062011173 +23 +-290.941975042481 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +698.564739508658 +20 +-289.354989300114 +30 +741.194313252463 +11 +745.659682232799 +21 +-148.32093265249 +31 +804.835469255871 +12 +741.592371958341 +22 +-147.51189433693 +32 +741.194313252463 +13 +741.592371958341 +23 +-147.51189433693 +33 +741.194313252463 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +690.554572920556 +20 +-286.037069662455 +30 +867.310386884026 +11 +745.659682232799 +21 +-148.32093265249 +31 +804.835469255871 +12 +702.396062011173 +22 +-290.941975042481 +32 +804.835469255871 +13 +702.396062011173 +23 +-290.941975042481 +33 +804.835469255871 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +745.659682232799 +20 +-148.32093265249 +30 +804.835469255871 +11 +690.554572920556 +21 +-286.037069662455 +31 +867.310386884026 +12 +733.088824464618 +22 +-145.820433573828 +32 +867.310386884026 +13 +733.088824464618 +23 +-145.820433573828 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +458.180516616454 +20 +-91.1377712474138 +30 +1100.8886000213 +11 +690.554572920556 +21 +-286.037069662455 +31 +867.310386884026 +12 +431.596609324475 +22 +-178.77316905644 +32 +1100.8886000213 +13 +431.596609324475 +23 +-178.77316905644 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +690.554572920556 +20 +-286.037069662455 +30 +867.310386884026 +11 +458.180516616454 +21 +-91.1377712474138 +31 +1100.8886000213 +12 +733.088824464618 +22 +-145.820433573828 +32 +867.310386884026 +13 +733.088824464618 +23 +-145.820433573828 +33 +867.310386884026 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +561.075591122516 +20 +-232.405119359447 +30 +1287.75132002131 +11 +687.270773156591 +21 +-136.706656519426 +31 +1100.8886000213 +12 +647.39491232121 +22 +-268.159752894786 +32 +1100.8886000213 +13 +647.39491232121 +23 +-268.159752894786 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +687.270773156591 +20 +-136.706656519426 +30 +1100.8886000213 +11 +561.075591122516 +21 +-232.405119359447 +31 +1287.75132002131 +12 +595.634670540536 +22 +-118.479102410621 +32 +1287.75132002131 +13 +595.634670540536 +23 +-118.479102410621 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +604.235251721863 +20 +-250.282436127116 +30 +1474.6140400213 +11 +733.088824464619 +21 +-145.820433573828 +31 +1287.75132002131 +12 +690.554572920556 +22 +-286.037069662455 +32 +1287.75132002131 +13 +690.554572920556 +23 +-286.037069662455 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.088824464619 +20 +-145.820433573828 +30 +1287.75132002131 +11 +604.235251721863 +21 +-250.282436127116 +31 +1474.6140400213 +12 +641.452721848564 +22 +-127.592879465023 +32 +1474.6140400213 +13 +641.452721848564 +23 +-127.592879465023 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +647.39491232121 +20 +-268.159752894786 +30 +1661.47676002131 +11 +778.906875772646 +21 +-154.934210628231 +31 +1474.6140400213 +12 +733.714233519903 +22 +-303.914386430124 +32 +1474.6140400213 +13 +733.714233519903 +23 +-303.914386430124 +33 +1474.6140400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +778.906875772646 +20 +-154.934210628231 +30 +1474.6140400213 +11 +647.39491232121 +21 +-268.159752894786 +31 +1661.47676002131 +12 +687.270773156591 +22 +-136.706656519426 +32 +1661.47676002131 +13 +687.270773156591 +23 +-136.706656519426 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +865.466789057043 +20 +-172.152047899808 +30 +1715.23764468454 +11 +776.88819383121 +21 +-321.797626332425 +31 +1661.47676002131 +12 +815.251888924487 +22 +-337.688389142806 +32 +1715.23764468454 +13 +815.251888924487 +23 +-337.688389142806 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +776.88819383121 +20 +-321.797626332425 +30 +1661.47676002131 +11 +865.466789057043 +21 +-172.152047899808 +31 +1715.23764468454 +12 +824.740107573921 +22 +-164.051007270483 +32 +1661.47676002131 +13 +824.740107573921 +23 +-164.051007270483 +33 +1661.47676002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +899.612557411552 +20 +-178.944063519201 +30 +1773.56823006635 +11 +815.251888924487 +21 +-337.688389142806 +31 +1715.23764468454 +12 +847.416499400322 +22 +-351.011407030345 +32 +1773.56823006635 +13 +847.416499400322 +23 +-351.011407030345 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +815.251888924487 +20 +-337.688389142806 +30 +1715.23764468454 +11 +899.612557411552 +21 +-178.944063519201 +31 +1773.56823006635 +12 +865.466789057043 +22 +-172.152047899808 +32 +1715.23764468454 +13 +865.466789057043 +23 +-172.152047899808 +33 +1715.23764468454 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +926.689746301964 +20 +-184.330051263379 +30 +1835.6354447734 +11 +847.416499400322 +21 +-351.011407030345 +31 +1773.56823006635 +12 +872.922653615349 +22 +-361.576402030189 +32 +1835.6354447734 +13 +872.922653615349 +23 +-361.576402030189 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +847.416499400322 +20 +-351.011407030345 +30 +1773.56823006635 +11 +926.689746301964 +21 +-184.330051263379 +31 +1835.6354447734 +12 +899.612557411552 +22 +-178.944063519201 +32 +1773.56823006635 +13 +899.612557411552 +23 +-178.944063519201 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +946.311642114328 +20 +-188.233089011893 +30 +1900.55285125842 +11 +872.922653615349 +21 +-361.576402030189 +31 +1835.6354447734 +12 +891.406075310522 +22 +-369.232485975391 +32 +1900.55285125842 +13 +891.406075310522 +23 +-369.232485975391 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +872.922653615349 +20 +-361.576402030189 +30 +1835.6354447734 +11 +946.311642114328 +21 +-188.233089011893 +31 +1900.55285125842 +12 +926.689746301964 +22 +-184.330051263379 +32 +1835.6354447734 +13 +926.689746301964 +23 +-184.330051263379 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +958.198006960111 +20 +-190.597433982906 +30 +1967.39330582966 +11 +891.406075310522 +21 +-369.232485975391 +31 +1900.55285125842 +12 +902.602786167016 +22 +-373.87031546612 +32 +1967.39330582966 +13 +902.602786167016 +23 +-373.87031546612 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +891.406075310522 +20 +-369.232485975391 +30 +1900.55285125842 +11 +958.198006960111 +21 +-190.597433982906 +31 +1967.39330582966 +12 +946.311642114328 +22 +-188.233089011893 +32 +1900.55285125842 +13 +946.311642114328 +23 +-188.233089011893 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +962.179081004756 +20 +-191.38931884584 +30 +2035.2022000213 +11 +902.602786167016 +21 +-373.87031546612 +31 +1967.39330582966 +12 +906.35287591729 +22 +-375.423653500801 +32 +2035.2022000213 +13 +906.35287591729 +23 +-375.423653500801 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +902.602786167016 +20 +-373.87031546612 +30 +1967.39330582966 +11 +962.179081004756 +21 +-191.38931884584 +31 +2035.2022000213 +12 +958.198006960111 +22 +-190.597433982906 +32 +1967.39330582966 +13 +958.198006960111 +23 +-190.597433982906 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +902.602786167016 +20 +-373.87031546612 +30 +2103.01109421295 +11 +962.179081004756 +21 +-191.38931884584 +31 +2035.2022000213 +12 +906.35287591729 +22 +-375.423653500801 +32 +2035.2022000213 +13 +906.35287591729 +23 +-375.423653500801 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +962.179081004756 +20 +-191.38931884584 +30 +2035.2022000213 +11 +902.602786167016 +21 +-373.87031546612 +31 +2103.01109421295 +12 +958.19800696011 +22 +-190.597433982906 +32 +2103.01109421295 +13 +958.19800696011 +23 +-190.597433982906 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +891.406075310522 +20 +-369.232485975391 +30 +2169.85154878419 +11 +958.19800696011 +21 +-190.597433982906 +31 +2103.01109421295 +12 +902.602786167016 +22 +-373.87031546612 +32 +2103.01109421295 +13 +902.602786167016 +23 +-373.87031546612 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +958.19800696011 +20 +-190.597433982906 +30 +2103.01109421295 +11 +891.406075310522 +21 +-369.232485975391 +31 +2169.85154878419 +12 +946.311642114328 +22 +-188.233089011893 +32 +2169.85154878419 +13 +946.311642114328 +23 +-188.233089011893 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +872.922653615349 +20 +-361.576402030189 +30 +2234.76895526921 +11 +946.311642114328 +21 +-188.233089011893 +31 +2169.85154878419 +12 +891.406075310522 +22 +-369.232485975391 +32 +2169.85154878419 +13 +891.406075310522 +23 +-369.232485975391 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +946.311642114328 +20 +-188.233089011893 +30 +2169.85154878419 +11 +872.922653615349 +21 +-361.576402030189 +31 +2234.76895526921 +12 +926.689746301964 +22 +-184.330051263379 +32 +2234.76895526921 +13 +926.689746301964 +23 +-184.330051263379 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +776.88819383121 +20 +-321.797626332425 +30 +2408.9276400213 +11 +865.466789057043 +21 +-172.152047899808 +31 +2355.16675535807 +12 +815.251888924486 +22 +-337.688389142806 +32 +2355.16675535807 +13 +815.251888924486 +23 +-337.688389142806 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +865.466789057043 +20 +-172.152047899808 +30 +2355.16675535807 +11 +776.88819383121 +21 +-321.797626332425 +31 +2408.9276400213 +12 +824.740107573921 +22 +-164.051007270483 +32 +2408.9276400213 +13 +824.740107573921 +23 +-164.051007270483 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +847.416499400322 +20 +-351.011407030345 +30 +2296.83616997626 +11 +926.689746301964 +21 +-184.330051263379 +31 +2234.76895526921 +12 +872.922653615349 +22 +-361.576402030189 +32 +2234.76895526921 +13 +872.922653615349 +23 +-361.576402030189 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +926.689746301964 +20 +-184.330051263379 +30 +2234.76895526921 +11 +847.416499400322 +21 +-351.011407030345 +31 +2296.83616997626 +12 +899.612557411552 +22 +-178.944063519201 +32 +2296.83616997626 +13 +899.612557411552 +23 +-178.944063519201 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +815.251888924486 +20 +-337.688389142806 +30 +2355.16675535807 +11 +899.612557411552 +21 +-178.944063519201 +31 +2296.83616997626 +12 +847.416499400322 +22 +-351.011407030345 +32 +2296.83616997626 +13 +847.416499400322 +23 +-351.011407030345 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +899.612557411552 +20 +-178.944063519201 +30 +2296.83616997626 +11 +815.251888924486 +21 +-337.688389142806 +31 +2355.16675535807 +12 +865.466789057043 +22 +-172.152047899808 +32 +2355.16675535807 +13 +865.466789057043 +23 +-172.152047899808 +33 +2355.16675535807 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +690.554572920556 +20 +-286.037069662455 +30 +2549.0746800213 +11 +733.088824464619 +21 +-145.820433573828 +31 +2408.9276400213 +12 +690.554572920556 +22 +-286.037069662455 +32 +2408.9276400213 +13 +690.554572920556 +23 +-286.037069662455 +33 +2408.9276400213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +733.088824464619 +20 +-145.820433573828 +30 +2408.9276400213 +11 +690.554572920556 +21 +-286.037069662455 +31 +2549.0746800213 +12 +733.088824464618 +22 +-145.820433573828 +32 +2549.0746800213 +13 +733.088824464618 +23 +-145.820433573828 +33 +2549.0746800213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-700.735203605456 +20 +0.0 +30 +1100.8886000213 +11 +-595.634670540536 +21 +-118.479102410621 +31 +1287.75132002131 +12 +-687.270773156591 +22 +-136.706656519425 +32 +1100.8886000213 +13 +-687.270773156591 +23 +-136.706656519425 +33 +1100.8886000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-595.634670540536 +20 +-118.479102410621 +30 +1287.75132002131 +11 +-700.735203605456 +21 +0.0 +31 +1100.8886000213 +12 +-607.303843605455 +22 +0.0 +32 +1287.75132002131 +13 +-607.303843605455 +23 +0.0 +33 +1287.75132002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-646.067882633009 +20 +-267.610079200261 +30 +628.271001705821 +11 +-721.176029454062 +21 +-143.450831316169 +31 +680.911023534629 +12 +-679.332965393238 +22 +-281.388927633011 +32 +680.911023534629 +13 +-679.332965393238 +23 +-281.388927633011 +33 +680.911023534629 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-721.176029454062 +20 +-143.450831316169 +30 +680.911023534629 +11 +-646.067882633009 +21 +-267.610079200261 +31 +628.271001705821 +12 +-685.862005953678 +22 +-136.426435300007 +32 +628.271001705821 +13 +-685.862005953678 +23 +-136.426435300007 +33 +628.271001705821 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +357.792969218307 +20 +-863.788638808576 +30 +1813.40854010679 +11 +509.589579018778 +21 +-762.654700553784 +31 +1773.56823006635 +12 +351.011407030345 +22 +-847.416499400322 +32 +1773.56823006635 +13 +351.011407030345 +23 +-847.416499400322 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +509.589579018778 +20 +-762.654700553784 +30 +1773.56823006635 +11 +357.792969218307 +21 +-863.788638808576 +31 +1813.40854010679 +12 +395.941831606783 +22 +-839.735342877931 +32 +1806.11206435201 +13 +395.941831606783 +23 +-839.735342877931 +33 +1806.11206435201 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +509.589579018778 +20 +-762.654700553784 +30 +1773.56823006635 +11 +395.941831606783 +21 +-839.735342877931 +31 +1806.11206435201 +12 +476.980677127978 +22 +-794.166464272834 +32 +1801.6239424642 +13 +476.980677127978 +23 +-794.166464272834 +33 +1801.6239424642 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +517.019026944331 +20 +-773.773655132591 +30 +1803.63246772228 +11 +509.589579018778 +21 +-762.654700553784 +31 +1773.56823006635 +12 +476.980677127978 +22 +-794.166464272834 +32 +1801.6239424642 +13 +476.980677127978 +23 +-794.166464272834 +33 +1801.6239424642 +70 +2 + 0 +3DFACE + 8 +body_half_inside +10 +517.019026944331 +20 +-773.773655132591 +30 +1803.63246772228 +11 +648.584509266648 +21 +-648.584509266648 +31 +1773.56823006635 +12 +509.589579018778 +22 +-762.654700553784 +32 +1773.56823006635 +13 +509.589579018778 +23 +-762.654700553784 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +1773.56823006635 +11 +517.019026944331 +21 +-773.773655132591 +31 +1803.63246772228 +12 +549.426368572047 +22 +-748.597588593672 +32 +1806.11210277493 +13 +549.426368572047 +23 +-748.597588593672 +33 +1806.11210277493 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +1773.56823006635 +11 +549.426368572047 +21 +-748.597588593672 +31 +1806.11210277493 +12 +612.093113289132 +22 +-704.779901967179 +32 +1819.40406801073 +13 +612.093113289132 +23 +-704.779901967179 +33 +1819.40406801073 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +1773.56823006635 +11 +612.093113289132 +21 +-704.779901967179 +31 +1819.40406801073 +12 +668.106074549527 +22 +-668.106074549528 +32 +1835.6354447734 +13 +668.106074549527 +23 +-668.106074549528 +33 +1835.6354447734 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +668.106074549527 +20 +-668.106074549528 +30 +1835.6354447734 +11 +612.093113289132 +21 +-704.779901967179 +31 +1819.40406801073 +12 +660.420878380816 +22 +-674.413152048547 +32 +1835.6354447734 +13 +660.420878380816 +23 +-674.413152048547 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +184.330051263378 +20 +-926.689746301964 +30 +1835.6354447734 +11 +351.011407030345 +21 +-847.416499400322 +31 +1773.56823006635 +12 +178.9440635192 +22 +-899.612557411553 +32 +1773.56823006635 +13 +178.9440635192 +23 +-899.612557411553 +33 +1773.56823006635 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +351.011407030345 +20 +-847.416499400322 +30 +1773.56823006635 +11 +184.330051263378 +21 +-926.689746301964 +31 +1835.6354447734 +12 +301.781055330838 +22 +-883.553038965158 +32 +1819.40399142549 +13 +301.781055330838 +23 +-883.553038965158 +33 +1819.40399142549 +70 +15 + 0 +3DFACE + 8 +body_half_inside +10 +351.011407030345 +20 +-847.416499400322 +30 +1773.56823006635 +11 +301.781055330838 +21 +-883.553038965158 +31 +1819.40399142549 +12 +357.792969218307 +22 +-863.788638808576 +32 +1813.40854010679 +13 +357.792969218307 +23 +-863.788638808576 +33 +1813.40854010679 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +301.781055330838 +20 +-883.553038965158 +30 +1819.40399142549 +11 +184.330051263378 +21 +-926.689746301964 +31 +1835.6354447734 +12 +226.426278474808 +22 +-913.919995384996 +32 +1835.6354447734 +13 +226.426278474808 +23 +-913.919995384996 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +184.330051263378 +20 +-926.689746301964 +30 +1835.6354447734 +11 +199.0652044353 +21 +-923.935662922352 +31 +1840.9889225062 +12 +226.426278474808 +22 +-913.919995384996 +32 +1835.6354447734 +13 +226.426278474808 +23 +-913.919995384996 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +199.0652044353 +20 +-923.935662922352 +30 +1840.9889225062 +11 +184.330051263378 +21 +-926.689746301964 +31 +1835.6354447734 +12 +184.938820049334 +22 +-929.750233661175 +32 +1845.76081205901 +13 +184.938820049334 +23 +-929.750233661175 +33 +1845.76081205901 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-944.844671731792 +30 +1835.6354447734 +11 +104.493637398531 +21 +-940.355693033463 +31 +1854.46446481146 +12 +184.330051263378 +22 +-926.689746301964 +32 +1835.6354447734 +13 +184.330051263378 +23 +-926.689746301964 +33 +1835.6354447734 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493637398531 +20 +-940.355693033463 +30 +1854.46446481146 +11 +0.0 +21 +-944.844671731792 +31 +1835.6354447734 +12 +0.0 +22 +-964.850983209364 +32 +1900.55285125842 +13 +0.0 +23 +-964.850983209364 +33 +1900.55285125842 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +184.330051263378 +20 +-926.689746301964 +30 +1835.6354447734 +11 +104.493637398531 +21 +-940.355693033463 +31 +1854.46446481146 +12 +184.938820049334 +22 +-929.750233661175 +32 +1845.76081205901 +13 +184.938820049334 +23 +-929.750233661175 +33 +1845.76081205901 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493637398531 +20 +-940.355693033463 +30 +1854.46446481146 +11 +0.0 +21 +-964.850983209364 +31 +1900.55285125842 +12 +104.493633203151 +22 +-954.559258633297 +32 +1900.55285125842 +13 +104.493633203151 +23 +-954.559258633297 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +750.933323308422 +20 +-599.953184983341 +30 +1905.4331697133 +11 +802.244272938819 +21 +-536.042485570819 +31 +1900.55285125842 +12 +746.507157447799 +22 +-603.958357302731 +32 +1900.55285125842 +13 +746.507157447799 +23 +-603.958357302731 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +802.244272938819 +20 +-536.042485570819 +30 +1900.55285125842 +11 +750.933323308422 +21 +-599.953184983341 +31 +1905.4331697133 +12 +778.074089358318 +22 +-578.368236816208 +32 +1945.81578372641 +13 +778.074089358318 +23 +-578.368236816208 +33 +1945.81578372641 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +802.244272938819 +20 +-536.042485570819 +30 +1900.55285125842 +11 +778.074089358318 +21 +-578.368236816208 +31 +1945.81578372641 +12 +788.482625178071 +22 +-571.822770804239 +32 +1967.39330582966 +13 +788.482625178071 +23 +-571.822770804239 +33 +1967.39330582966 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +802.244272938819 +20 +-536.042485570819 +30 +1900.55285125842 +11 +788.482625178071 +21 +-571.822770804239 +31 +1967.39330582966 +12 +812.321046486997 +22 +-542.775570394861 +32 +1967.39330582966 +13 +812.321046486997 +23 +-542.775570394861 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +673.273866809931 +20 +-664.397292109118 +30 +1840.98903680986 +11 +668.106074549527 +21 +-668.106074549528 +31 +1835.6354447734 +12 +668.764073934129 +22 +-668.76407393413 +32 +1838.65494189703 +13 +668.764073934129 +23 +-668.76407393413 +33 +1838.65494189703 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +668.106074549527 +20 +-668.106074549528 +30 +1835.6354447734 +11 +673.273866809931 +21 +-664.397292109118 +31 +1840.98903680986 +12 +785.609632890959 +22 +-524.927574441361 +32 +1835.6354447734 +13 +785.609632890959 +23 +-524.927574441361 +33 +1835.6354447734 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +785.609632890959 +20 +-524.927574441361 +30 +1835.6354447734 +11 +673.273866809931 +21 +-664.397292109118 +31 +1840.98903680986 +12 +713.847499937789 +22 +-629.001642276081 +32 +1870.0375087198 +13 +713.847499937789 +23 +-629.001642276081 +33 +1870.0375087198 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +785.609632890959 +20 +-524.927574441361 +30 +1835.6354447734 +11 +713.847499937789 +21 +-629.001642276081 +31 +1870.0375087198 +12 +746.507157447799 +22 +-603.958357302731 +32 +1900.55285125842 +13 +746.507157447799 +23 +-603.958357302731 +33 +1900.55285125842 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +785.609632890959 +20 +-524.927574441361 +30 +1835.6354447734 +11 +746.507157447799 +21 +-603.958357302731 +31 +1900.55285125842 +12 +802.244272938819 +22 +-536.042485570819 +32 +1900.55285125842 +13 +802.244272938819 +23 +-536.042485570819 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +668.764073934129 +20 +-668.76407393413 +30 +1838.65494189703 +11 +668.106074549527 +21 +-668.106074549528 +31 +1835.6354447734 +12 +660.420878380816 +22 +-674.413152048547 +32 +1835.6354447734 +13 +660.420878380816 +23 +-674.413152048547 +33 +1835.6354447734 +70 +0 + 0 +3DFACE + 8 +body_half_inside +10 +812.321046486996 +20 +-542.775570394861 +30 +2103.01109421295 +11 +795.733220134071 +21 +-565.076313257107 +31 +2080.77120383654 +12 +788.482669869741 +22 +-571.822716347281 +32 +2103.01109421295 +13 +788.482669869741 +23 +-571.822716347281 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +795.733220134071 +20 +-565.076313257107 +30 +2080.77120383654 +11 +812.321046486996 +21 +-542.775570394861 +31 +2103.01109421295 +12 +802.928322181323 +22 +-560.588161532002 +32 +2035.20233863644 +13 +802.928322181323 +23 +-560.588161532002 +33 +2035.20233863644 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +802.928322181323 +20 +-560.588161532002 +30 +2035.20233863644 +11 +812.321046486996 +21 +-542.775570394861 +31 +2103.01109421295 +12 +815.696038096871 +22 +-545.030667691736 +32 +2035.2022000213 +13 +815.696038096871 +23 +-545.030667691736 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +795.73325617356 +20 +-565.07629502955 +30 +1989.63346974763 +11 +812.321046486997 +21 +-542.775570394861 +31 +1967.39330582966 +12 +788.482625178071 +22 +-571.822770804239 +32 +1967.39330582966 +13 +788.482625178071 +23 +-571.822770804239 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +812.321046486997 +20 +-542.775570394861 +30 +1967.39330582966 +11 +795.73325617356 +21 +-565.07629502955 +31 +1989.63346974763 +12 +802.928322181323 +22 +-560.588161532002 +32 +2035.20233863644 +13 +802.928322181323 +23 +-560.588161532002 +33 +2035.20233863644 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +812.321046486997 +20 +-542.775570394861 +30 +1967.39330582966 +11 +802.928322181323 +21 +-560.588161532002 +31 +2035.20233863644 +12 +815.696038096871 +22 +-545.030667691736 +32 +2035.2022000213 +13 +815.696038096871 +23 +-545.030667691736 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-976.970215709361 +30 +2103.01109421295 +11 +104.493597769057 +21 +-954.55926212325 +31 +2169.85154878419 +12 +104.493608158504 +22 +-966.678493599977 +32 +2103.01109421295 +13 +104.493608158504 +23 +-966.678493599977 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493597769057 +20 +-954.55926212325 +30 +2169.85154878419 +11 +0.0 +21 +-976.970215709361 +31 +2103.01109421295 +12 +0.0 +22 +-964.850983209363 +32 +2169.85154878419 +13 +0.0 +23 +-964.850983209363 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-964.850983209363 +30 +2169.85154878419 +11 +104.493589835895 +21 +-940.355698951006 +31 +2215.93993123015 +12 +104.493597769057 +22 +-954.55926212325 +32 +2169.85154878419 +13 +104.493597769057 +23 +-954.55926212325 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493589835895 +20 +-940.355698951006 +30 +2215.93993123015 +11 +0.0 +21 +-964.850983209363 +31 +2169.85154878419 +12 +0.0 +22 +-944.844671731792 +32 +2234.76895526921 +13 +0.0 +23 +-944.844671731792 +33 +2234.76895526921 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493589835895 +20 +-940.355698951006 +30 +2215.93993123015 +11 +0.0 +21 +-944.844671731792 +31 +2234.76895526921 +12 +184.938817720617 +22 +-929.750221953924 +32 +2224.64362671606 +13 +184.938817720617 +23 +-929.750221953924 +33 +2224.64362671606 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +184.938817720617 +20 +-929.750221953924 +30 +2224.64362671606 +11 +0.0 +21 +-944.844671731792 +31 +2234.76895526921 +12 +184.330051263378 +22 +-926.689746301964 +32 +2234.76895526921 +13 +184.330051263378 +23 +-926.689746301964 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +184.330051263378 +20 +-926.689746301964 +30 +2234.76895526921 +11 +199.064976889088 +21 +-923.935740607716 +31 +2229.41545051599 +12 +184.938817720617 +22 +-929.750221953924 +32 +2224.64362671606 +13 +184.938817720617 +23 +-929.750221953924 +33 +2224.64362671606 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +199.064976889088 +20 +-923.935740607716 +30 +2229.41545051599 +11 +184.330051263378 +21 +-926.689746301964 +31 +2234.76895526921 +12 +226.426112851944 +22 +-913.920045626142 +32 +2234.76895526921 +13 +226.426112851944 +23 +-913.920045626142 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +178.9440635192 +20 +-899.612557411553 +30 +2296.83616997626 +11 +226.426112851944 +21 +-913.920045626142 +31 +2234.76895526921 +12 +184.330051263378 +22 +-926.689746301964 +32 +2234.76895526921 +13 +184.330051263378 +23 +-926.689746301964 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +226.426112851944 +20 +-913.920045626142 +30 +2234.76895526921 +11 +178.9440635192 +21 +-899.612557411553 +31 +2296.83616997626 +12 +301.780746126529 +22 +-883.553125284517 +32 +2251.00042478027 +13 +301.780746126529 +23 +-883.553125284517 +33 +2251.00042478027 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +301.780746126529 +20 +-883.553125284517 +30 +2251.00042478027 +11 +178.9440635192 +21 +-899.612557411553 +31 +2296.83616997626 +12 +357.792956438195 +22 +-863.788607954656 +32 +2256.9959350164 +13 +357.792956438195 +23 +-863.788607954656 +33 +2256.9959350164 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +357.792956438195 +20 +-863.788607954656 +30 +2256.9959350164 +11 +178.9440635192 +21 +-899.612557411553 +31 +2296.83616997626 +12 +351.011407030345 +22 +-847.416499400322 +32 +2296.83616997626 +13 +351.011407030345 +23 +-847.416499400322 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +351.011407030345 +20 +-847.416499400322 +30 +2296.83616997626 +11 +395.941605262448 +21 +-839.735434514061 +31 +2264.29239416004 +12 +357.792956438195 +22 +-863.788607954656 +32 +2256.9959350164 +13 +357.792956438195 +23 +-863.788607954656 +33 +2256.9959350164 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +395.941605262448 +20 +-839.735434514061 +30 +2264.29239416004 +11 +351.011407030345 +21 +-847.416499400322 +31 +2296.83616997626 +12 +476.980410282499 +22 +-794.166557704225 +32 +2268.78055560144 +13 +476.980410282499 +23 +-794.166557704225 +33 +2268.78055560144 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +476.980410282499 +20 +-794.166557704225 +30 +2268.78055560144 +11 +509.589579018778 +21 +-762.654700553784 +31 +2296.83616997626 +12 +517.019001290372 +22 +-773.773616738727 +32 +2266.77203613245 +13 +517.019001290372 +23 +-773.773616738727 +33 +2266.77203613245 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +509.589579018778 +20 +-762.654700553784 +30 +2296.83616997626 +11 +476.980410282499 +21 +-794.166557704225 +31 +2268.78055560144 +12 +351.011407030345 +22 +-847.416499400322 +32 +2296.83616997626 +13 +351.011407030345 +23 +-847.416499400322 +33 +2296.83616997626 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +612.092889952714 +20 +-704.779988286527 +30 +2251.00050136552 +11 +668.106074549527 +21 +-668.106074549528 +31 +2234.76895526921 +12 +660.421223817861 +22 +-674.412868555691 +32 +2234.76895526921 +13 +660.421223817861 +23 +-674.412868555691 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +668.106074549527 +20 +-668.106074549528 +30 +2234.76895526921 +11 +612.092889952714 +21 +-704.779988286527 +31 +2251.00050136552 +12 +648.584509266648 +22 +-648.584509266648 +32 +2296.83616997626 +13 +648.584509266648 +23 +-648.584509266648 +33 +2296.83616997626 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +2296.83616997626 +11 +612.092889952714 +21 +-704.779988286527 +31 +2251.00050136552 +12 +549.426162494113 +22 +-748.597680229798 +32 +2264.29243258297 +13 +549.426162494113 +23 +-748.597680229798 +33 +2264.29243258297 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +2296.83616997626 +11 +549.426162494113 +21 +-748.597680229798 +31 +2264.29243258297 +12 +517.019001290372 +22 +-773.773616738727 +32 +2266.77203613245 +13 +517.019001290372 +23 +-773.773616738727 +33 +2266.77203613245 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +648.584509266648 +20 +-648.584509266648 +30 +2296.83616997626 +11 +517.019001290372 +21 +-773.773616738727 +31 +2266.77203613245 +12 +509.589579018778 +22 +-762.654700553784 +32 +2296.83616997626 +13 +509.589579018778 +23 +-762.654700553784 +33 +2296.83616997626 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +668.106074549527 +20 +-668.106074549528 +30 +2234.76895526921 +11 +673.273723074262 +21 +-664.397369794469 +31 +2229.41556481967 +12 +668.764043362589 +22 +-668.76404336259 +32 +2231.74959843549 +13 +668.764043362589 +23 +-668.76404336259 +33 +2231.74959843549 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +673.273723074262 +20 +-664.397369794469 +30 +2229.41556481967 +11 +668.106074549527 +21 +-668.106074549528 +31 +2234.76895526921 +12 +785.609632890959 +22 +-524.927574441361 +32 +2234.76895526921 +13 +785.609632890959 +23 +-524.927574441361 +33 +2234.76895526921 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +673.273723074262 +20 +-664.397369794469 +30 +2229.41556481967 +11 +785.609632890959 +21 +-524.927574441361 +31 +2234.76895526921 +12 +713.847355884234 +22 +-629.001708342044 +32 +2200.36711774529 +13 +713.847355884234 +23 +-629.001708342044 +33 +2200.36711774529 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +713.847355884234 +20 +-629.001708342044 +30 +2200.36711774529 +11 +785.609632890959 +21 +-524.927574441361 +31 +2234.76895526921 +12 +746.507278280356 +22 +-603.958210067833 +32 +2169.85154878419 +13 +746.507278280356 +23 +-603.958210067833 +33 +2169.85154878419 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +746.507278280356 +20 +-603.958210067833 +30 +2169.85154878419 +11 +785.609632890959 +21 +-524.927574441361 +31 +2234.76895526921 +12 +802.244272938819 +22 +-536.042485570818 +32 +2169.85154878419 +13 +802.244272938819 +23 +-536.042485570818 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +668.106074549527 +20 +-668.106074549528 +30 +2234.76895526921 +11 +668.764043362589 +21 +-668.76404336259 +31 +2231.74959843549 +12 +660.421223817861 +22 +-674.412868555691 +32 +2234.76895526921 +13 +660.421223817861 +23 +-674.412868555691 +33 +2234.76895526921 +70 +0 + 0 +3DFACE + 8 +body_half_inside +10 +802.244272938819 +20 +-536.042485570818 +30 +2169.85154878419 +11 +750.933222864967 +21 +-599.953236891033 +31 +2164.97147813062 +12 +746.507278280356 +22 +-603.958210067833 +32 +2169.85154878419 +13 +746.507278280356 +23 +-603.958210067833 +33 +2169.85154878419 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +750.933222864967 +20 +-599.953236891033 +30 +2164.97147813062 +11 +802.244272938819 +21 +-536.042485570818 +31 +2169.85154878419 +12 +778.073998488686 +22 +-578.368272570852 +32 +2124.58887989382 +13 +778.073998488686 +23 +-578.368272570852 +33 +2124.58887989382 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +778.073998488686 +20 +-578.368272570852 +30 +2124.58887989382 +11 +802.244272938819 +21 +-536.042485570818 +31 +2169.85154878419 +12 +788.482669869741 +22 +-571.822716347281 +32 +2103.01109421295 +13 +788.482669869741 +23 +-571.822716347281 +33 +2103.01109421295 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +788.482669869741 +20 +-571.822716347281 +30 +2103.01109421295 +11 +802.244272938819 +21 +-536.042485570818 +31 +2169.85154878419 +12 +812.321046486996 +22 +-542.775570394861 +32 +2103.01109421295 +13 +812.321046486996 +23 +-542.775570394861 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-976.970215709361 +30 +1967.39330582966 +11 +104.493633203151 +21 +-954.559258633297 +31 +1900.55285125842 +12 +0.0 +22 +-964.850983209364 +32 +1900.55285125842 +13 +0.0 +23 +-964.850983209364 +33 +1900.55285125842 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493633203151 +20 +-954.559258633297 +30 +1900.55285125842 +11 +0.0 +21 +-976.970215709361 +31 +1967.39330582966 +12 +104.493626002977 +22 +-966.678491842449 +32 +1967.39330582966 +13 +104.493626002977 +23 +-966.678491842449 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493585902306 +20 +-599.953270041246 +30 +1905.43308465531 +11 +713.847499937789 +21 +-629.001642276081 +31 +1870.0375087198 +12 +104.493594381804 +22 +-629.001722454268 +32 +1870.03742854153 +13 +104.493594381804 +23 +-629.001722454268 +33 +1870.03742854153 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +713.847499937789 +20 +-629.001642276081 +30 +1870.0375087198 +11 +104.493585902306 +21 +-599.953270041246 +31 +1905.43308465531 +12 +746.507157447799 +22 +-603.958357302731 +32 +1900.55285125842 +13 +746.507157447799 +23 +-603.958357302731 +33 +1900.55285125842 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +746.507157447799 +20 +-603.958357302731 +30 +1900.55285125842 +11 +104.493585902306 +21 +-599.953270041246 +31 +1905.43308465531 +12 +750.933323308422 +22 +-599.953184983341 +32 +1905.4331697133 +13 +750.933323308422 +23 +-599.953184983341 +33 +1905.4331697133 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493577748671 +20 +-578.36832544527 +30 +1945.81569509725 +11 +750.933323308422 +21 +-599.953184983341 +31 +1905.4331697133 +12 +104.493585902306 +22 +-599.953270041246 +32 +1905.43308465531 +13 +104.493585902306 +23 +-599.953270041246 +33 +1905.43308465531 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +750.933323308422 +20 +-599.953184983341 +30 +1905.4331697133 +11 +104.493577748671 +21 +-578.36832544527 +31 +1945.81569509725 +12 +778.074089358318 +22 +-578.368236816208 +32 +1945.81578372641 +13 +778.074089358318 +23 +-578.368236816208 +33 +1945.81578372641 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493551752477 +20 +-664.397444634006 +30 +2229.41548998005 +11 +713.847355884234 +21 +-629.001708342044 +31 +2200.36711774529 +12 +104.493550917322 +22 +-629.00178852022 +32 +2200.36703756703 +13 +104.493550917322 +23 +-629.00178852022 +33 +2200.36703756703 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +713.847355884234 +20 +-629.001708342044 +30 +2200.36711774529 +11 +104.493551752477 +21 +-664.397444634006 +31 +2229.41548998005 +12 +673.273723074262 +22 +-664.397369794469 +32 +2229.41556481967 +13 +673.273723074262 +23 +-664.397369794469 +33 +2229.41556481967 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493585902279 +20 +-923.935753051327 +30 +2229.41543807237 +11 +301.780746126529 +21 +-883.553125284517 +31 +2251.00042478027 +12 +104.493577748645 +22 +-883.553151243369 +32 +2251.0003988214 +13 +104.493577748645 +23 +-883.553151243369 +33 +2251.0003988214 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +301.780746126529 +20 +-883.553125284517 +30 +2251.00042478027 +11 +104.493585902279 +21 +-923.935753051327 +31 +2229.41543807237 +12 +199.064976889088 +22 +-923.935740607716 +32 +2229.41545051599 +13 +199.064976889088 +23 +-923.935740607716 +33 +2229.41545051599 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +301.780746126529 +20 +-883.553125284517 +30 +2251.00042478027 +11 +199.064976889088 +21 +-923.935740607716 +31 +2229.41545051599 +12 +226.426112851944 +22 +-913.920045626142 +32 +2234.76895526921 +13 +226.426112851944 +23 +-913.920045626142 +33 +2234.76895526921 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +476.980677127978 +20 +-794.166464272834 +30 +1801.6239424642 +11 +104.493630521182 +21 +-839.735381226399 +31 +1806.1120260035 +12 +104.49362511582 +22 +-794.166513284314 +32 +1801.62389345267 +13 +104.49362511582 +23 +-794.166513284314 +33 +1801.62389345267 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493630521182 +20 +-839.735381226399 +30 +1806.1120260035 +11 +476.980677127978 +21 +-794.166464272834 +31 +1801.6239424642 +12 +395.941831606783 +22 +-839.735342877931 +32 +1806.11206435201 +13 +395.941831606783 +23 +-839.735342877931 +33 +1806.11206435201 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +395.941831606783 +20 +-839.735342877931 +30 +1806.11206435201 +11 +104.493634537727 +21 +-883.553064924044 +31 +1819.40396546658 +12 +104.493630521182 +22 +-839.735381226399 +32 +1806.1120260035 +13 +104.493630521182 +23 +-839.735381226399 +33 +1806.1120260035 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493634537727 +20 +-883.553064924044 +30 +1819.40396546658 +11 +395.941831606783 +21 +-839.735342877931 +31 +1806.11206435201 +12 +301.781055330838 +22 +-883.553038965158 +32 +1819.40399142549 +13 +301.781055330838 +23 +-883.553038965158 +33 +1819.40399142549 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +301.781055330838 +20 +-883.553038965158 +30 +1819.40399142549 +11 +395.941831606783 +21 +-839.735342877931 +31 +1806.11206435201 +12 +357.792969218307 +22 +-863.788638808576 +32 +1813.40854010679 +13 +357.792969218307 +23 +-863.788638808576 +33 +1813.40854010679 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +301.781055330838 +20 +-883.553038965158 +30 +1819.40399142549 +11 +104.493637011103 +21 +-923.935675365986 +31 +1840.98891006256 +12 +104.493634537727 +22 +-883.553064924044 +32 +1819.40396546658 +13 +104.493634537727 +23 +-883.553064924044 +33 +1819.40396546658 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493637011103 +20 +-923.935675365986 +30 +1840.98891006256 +11 +301.781055330838 +21 +-883.553038965158 +31 +1819.40399142549 +12 +199.0652044353 +22 +-923.935662922352 +32 +1840.9889225062 +13 +199.0652044353 +23 +-923.935662922352 +33 +1840.9889225062 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +199.0652044353 +20 +-923.935662922352 +30 +1840.9889225062 +11 +301.781055330838 +21 +-883.553038965158 +31 +1819.40399142549 +12 +226.426278474808 +22 +-913.919995384996 +32 +1835.6354447734 +13 +226.426278474808 +23 +-913.919995384996 +33 +1835.6354447734 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +713.847499937789 +20 +-629.001642276081 +30 +1870.0375087198 +11 +104.4936028613 +21 +-664.397366948665 +31 +1840.98896197024 +12 +104.493594381804 +22 +-629.001722454268 +32 +1870.03742854153 +13 +104.493594381804 +23 +-629.001722454268 +33 +1870.03742854153 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.4936028613 +20 +-664.397366948665 +30 +1840.98896197024 +11 +713.847499937789 +21 +-629.001642276081 +31 +1870.0375087198 +12 +673.273866809931 +22 +-664.397292109118 +32 +1840.98903680986 +13 +673.273866809931 +23 +-664.397292109118 +33 +1840.98903680986 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +673.273866809931 +20 +-664.397292109118 +30 +1840.98903680986 +11 +104.493611014934 +21 +-704.779968756623 +31 +1819.40400122121 +12 +104.4936028613 +22 +-664.397366948665 +32 +1840.98896197024 +13 +104.4936028613 +23 +-664.397366948665 +33 +1840.98896197024 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +673.273866809931 +21 +-664.397292109118 +31 +1840.98903680986 +12 +612.093113289132 +22 +-704.779901967179 +32 +1819.40406801073 +13 +612.093113289132 +23 +-704.779901967179 +33 +1819.40406801073 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +612.093113289132 +20 +-704.779901967179 +30 +1819.40406801073 +11 +673.273866809931 +21 +-664.397292109118 +31 +1840.98903680986 +12 +660.420878380816 +22 +-674.413152048547 +32 +1835.6354447734 +13 +660.420878380816 +23 +-674.413152048547 +33 +1835.6354447734 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +660.420878380816 +20 +-674.413152048547 +30 +1835.6354447734 +11 +673.273866809931 +21 +-664.397292109118 +31 +1840.98903680986 +12 +668.764073934129 +22 +-668.76407393413 +32 +1838.65494189703 +13 +668.764073934129 +23 +-668.76407393413 +33 +1838.65494189703 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +612.093113289132 +20 +-704.779901967179 +30 +1819.40406801073 +11 +104.493618529366 +21 +-748.597647137485 +31 +1806.11204423105 +12 +104.493611014934 +22 +-704.779968756623 +32 +1819.40400122121 +13 +104.493611014934 +23 +-704.779968756623 +33 +1819.40400122121 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493618529366 +20 +-748.597647137485 +30 +1806.11204423105 +11 +612.093113289132 +21 +-704.779901967179 +31 +1819.40406801073 +12 +549.426368572047 +22 +-748.597588593672 +32 +1806.11210277493 +13 +549.426368572047 +23 +-748.597588593672 +33 +1806.11210277493 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493558242398 +20 +-748.597738773593 +30 +2264.29237403911 +11 +612.092889952714 +21 +-704.779988286527 +31 +2251.00050136552 +12 +104.493554225852 +22 +-704.780055075949 +32 +2251.00043457603 +13 +104.493554225852 +23 +-704.780055075949 +33 +2251.00043457603 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +612.092889952714 +20 +-704.779988286527 +30 +2251.00050136552 +11 +104.493558242398 +21 +-748.597738773593 +31 +2264.29237403911 +12 +549.426162494113 +22 +-748.597680229798 +32 +2264.29243258297 +13 +549.426162494113 +23 +-748.597680229798 +33 +2264.29243258297 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493550917322 +20 +-629.00178852022 +30 +2200.36703756703 +11 +750.933222864967 +21 +-599.953236891033 +31 +2164.97147813062 +12 +104.493551752482 +22 +-599.953321948931 +32 +2164.97139307263 +13 +104.493551752482 +23 +-599.953321948931 +33 +2164.97139307263 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +750.933222864967 +20 +-599.953236891033 +30 +2164.97147813062 +11 +104.493550917322 +21 +-629.00178852022 +31 +2200.36703756703 +12 +746.507278280356 +22 +-603.958210067833 +32 +2169.85154878419 +13 +746.507278280356 +23 +-603.958210067833 +33 +2169.85154878419 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +746.507278280356 +20 +-603.958210067833 +30 +2169.85154878419 +11 +104.493550917322 +21 +-629.00178852022 +31 +2200.36703756703 +12 +713.847355884234 +22 +-629.001708342044 +32 +2200.36711774529 +13 +713.847355884234 +23 +-629.001708342044 +33 +2200.36711774529 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493551752482 +20 +-599.953321948931 +30 +2164.97139307263 +11 +778.073998488686 +21 +-578.368272570852 +31 +2124.58887989382 +12 +104.493554225863 +22 +-578.368361199906 +32 +2124.58879126467 +13 +104.493554225863 +23 +-578.368361199906 +33 +2124.58879126467 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +778.073998488686 +20 +-578.368272570852 +30 +2124.58887989382 +11 +104.493551752482 +21 +-599.953321948931 +31 +2164.97139307263 +12 +750.933222864967 +22 +-599.953236891033 +32 +2164.97147813062 +13 +750.933222864967 +23 +-599.953236891033 +33 +2164.97147813062 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493554225863 +20 +-578.368361199906 +30 +2124.58879126467 +11 +795.733220134071 +21 +-565.076313257107 +31 +2080.77120383654 +12 +104.493558242413 +22 +-565.076404209743 +32 +2080.77111288381 +13 +104.493558242413 +23 +-565.076404209743 +33 +2080.77111288381 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +795.733220134071 +20 +-565.076313257107 +30 +2080.77120383654 +11 +104.493554225863 +21 +-578.368361199906 +31 +2124.58879126467 +12 +788.482669869741 +22 +-571.822716347281 +32 +2103.01109421295 +13 +788.482669869741 +23 +-571.822716347281 +33 +2103.01109421295 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +788.482669869741 +20 +-571.822716347281 +30 +2103.01109421295 +11 +104.493554225863 +21 +-578.368361199906 +31 +2124.58879126467 +12 +778.073998488686 +22 +-578.368272570852 +32 +2124.58887989382 +13 +778.073998488686 +23 +-578.368272570852 +33 +2124.58887989382 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493558242413 +20 +-565.076404209743 +30 +2080.77111288381 +11 +802.928322181323 +21 +-560.588161532002 +31 +2035.20233863644 +12 +104.49356364778 +22 +-560.588253431361 +32 +2035.20224673698 +13 +104.49356364778 +23 +-560.588253431361 +33 +2035.20224673698 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +802.928322181323 +20 +-560.588161532002 +30 +2035.20233863644 +11 +104.493558242413 +21 +-565.076404209743 +31 +2080.77111288381 +12 +795.733220134071 +22 +-565.076313257107 +32 +2080.77120383654 +13 +795.733220134071 +23 +-565.076313257107 +33 +2080.77120383654 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.49356364778 +20 +-560.588253431361 +30 +2035.20224673698 +11 +795.73325617356 +21 +-565.07629502955 +31 +1989.63346974763 +12 +104.493570234237 +22 +-565.076385982188 +32 +1989.6333787949 +13 +104.493570234237 +23 +-565.076385982188 +33 +1989.6333787949 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +795.73325617356 +20 +-565.07629502955 +30 +1989.63346974763 +11 +104.49356364778 +21 +-560.588253431361 +31 +2035.20224673698 +12 +802.928322181323 +22 +-560.588161532002 +32 +2035.20233863644 +13 +802.928322181323 +23 +-560.588161532002 +33 +2035.20233863644 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493570234237 +20 +-565.076385982188 +30 +1989.6333787949 +11 +778.074089358318 +21 +-578.368236816208 +31 +1945.81578372641 +12 +104.493577748671 +22 +-578.36832544527 +32 +1945.81569509725 +13 +104.493577748671 +23 +-578.36832544527 +33 +1945.81569509725 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +778.074089358318 +20 +-578.368236816208 +30 +1945.81578372641 +11 +104.493570234237 +21 +-565.076385982188 +31 +1989.6333787949 +12 +788.482625178071 +22 +-571.822770804239 +32 +1967.39330582966 +13 +788.482625178071 +23 +-571.822770804239 +33 +1967.39330582966 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +788.482625178071 +20 +-571.822770804239 +30 +1967.39330582966 +11 +104.493570234237 +21 +-565.076385982188 +31 +1989.6333787949 +12 +795.73325617356 +22 +-565.07629502955 +32 +1989.63346974763 +13 +795.73325617356 +23 +-565.07629502955 +33 +1989.63346974763 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493570234214 +20 +-839.735472862507 +30 +2264.29235581156 +11 +476.980410282499 +21 +-794.166557704225 +31 +2268.78055560144 +12 +104.49356364776 +22 +-794.166606715679 +32 +2268.78050658994 +13 +104.49356364776 +23 +-794.166606715679 +33 +2268.78050658994 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +476.980410282499 +20 +-794.166557704225 +30 +2268.78055560144 +11 +104.493570234214 +21 +-839.735472862507 +31 +2264.29235581156 +12 +395.941605262448 +22 +-839.735434514061 +32 +2264.29239416004 +13 +395.941605262448 +23 +-839.735434514061 +33 +2264.29239416004 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.49356364776 +20 +-794.166606715679 +30 +2268.78050658994 +11 +549.426162494113 +21 +-748.597680229798 +31 +2264.29243258297 +12 +104.493558242398 +22 +-748.597738773593 +32 +2264.29237403911 +13 +104.493558242398 +23 +-748.597738773593 +33 +2264.29237403911 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +549.426162494113 +20 +-748.597680229798 +30 +2264.29243258297 +11 +104.49356364776 +21 +-794.166606715679 +31 +2268.78050658994 +12 +476.980410282499 +22 +-794.166557704225 +32 +2268.78055560144 +13 +476.980410282499 +23 +-794.166557704225 +33 +2268.78055560144 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +549.426162494113 +20 +-748.597680229798 +30 +2264.29243258297 +11 +476.980410282499 +21 +-794.166557704225 +31 +2268.78055560144 +12 +517.019001290372 +22 +-773.773616738727 +32 +2266.77203613245 +13 +517.019001290372 +23 +-773.773616738727 +33 +2266.77203613245 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493589835895 +20 +-940.355698951006 +30 +2215.93993123015 +11 +199.064976889088 +21 +-923.935740607716 +31 +2229.41545051599 +12 +104.493585902279 +22 +-923.935753051327 +32 +2229.41543807237 +13 +104.493585902279 +23 +-923.935753051327 +33 +2229.41543807237 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +199.064976889088 +20 +-923.935740607716 +30 +2229.41545051599 +11 +104.493589835895 +21 +-940.355698951006 +31 +2215.93993123015 +12 +184.938817720617 +22 +-929.750221953924 +32 +2224.64362671606 +13 +184.938817720617 +23 +-929.750221953924 +33 +2224.64362671606 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +104.493626002977 +21 +-966.678491842449 +31 +1967.39330582966 +12 +104.493617614829 +22 +-970.737560564704 +32 +2035.2022000213 +13 +104.493617614829 +23 +-970.737560564704 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493626002977 +20 +-966.678491842449 +30 +1967.39330582966 +11 +104.493608158504 +21 +-966.678493599977 +31 +2103.01109421295 +12 +104.493597769057 +22 +-954.55926212325 +32 +2169.85154878419 +13 +104.493597769057 +23 +-954.55926212325 +33 +2169.85154878419 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493626002977 +20 +-966.678491842449 +30 +1967.39330582966 +11 +104.493597769057 +21 +-954.55926212325 +31 +2169.85154878419 +12 +104.493633203151 +22 +-954.559258633297 +32 +1900.55285125842 +13 +104.493633203151 +23 +-954.559258633297 +33 +1900.55285125842 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493633203151 +20 +-954.559258633297 +30 +1900.55285125842 +11 +104.493597769057 +21 +-954.55926212325 +31 +2169.85154878419 +12 +104.493589835895 +22 +-940.355698951006 +32 +2215.93993123015 +13 +104.493589835895 +23 +-940.355698951006 +33 +2215.93993123015 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493633203151 +20 +-954.559258633297 +30 +1900.55285125842 +11 +104.493589835895 +21 +-940.355698951006 +31 +2215.93993123015 +12 +104.493637398531 +22 +-940.355693033463 +32 +1854.46446481146 +13 +104.493637398531 +23 +-940.355693033463 +33 +1854.46446481146 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493637398531 +20 +-940.355693033463 +30 +1854.46446481146 +11 +104.493589835895 +21 +-940.355698951006 +31 +2215.93993123015 +12 +104.493585902279 +22 +-923.935753051327 +32 +2229.41543807237 +13 +104.493585902279 +23 +-923.935753051327 +33 +2229.41543807237 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493637398531 +20 +-940.355693033463 +30 +1854.46446481146 +11 +104.493585902279 +21 +-923.935753051327 +31 +2229.41543807237 +12 +104.493637011103 +22 +-923.935675365986 +32 +1840.98891006256 +13 +104.493637011103 +23 +-923.935675365986 +33 +1840.98891006256 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493637011103 +20 +-923.935675365986 +30 +1840.98891006256 +11 +104.493585902279 +21 +-923.935753051327 +31 +2229.41543807237 +12 +104.493577748645 +22 +-883.553151243369 +32 +2251.0003988214 +13 +104.493577748645 +23 +-883.553151243369 +33 +2251.0003988214 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493637011103 +20 +-923.935675365986 +30 +1840.98891006256 +11 +104.493577748645 +21 +-883.553151243369 +31 +2251.0003988214 +12 +104.493634537727 +22 +-883.553064924044 +32 +1819.40396546658 +13 +104.493634537727 +23 +-883.553064924044 +33 +1819.40396546658 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493634537727 +20 +-883.553064924044 +30 +1819.40396546658 +11 +104.493577748645 +21 +-883.553151243369 +31 +2251.0003988214 +12 +104.493606060716 +22 +-882.926351999993 +32 +2035.2022000213 +13 +104.493606060716 +23 +-882.926351999993 +33 +2035.2022000213 +70 +15 + 0 +3DFACE + 8 +body_half_inside +10 +104.493606060716 +20 +-882.926351999993 +30 +2035.2022000213 +11 +104.493577748645 +21 +-883.553151243369 +31 +2251.0003988214 +12 +104.493603557861 +22 +-881.220857485246 +32 +2052.51837642467 +13 +104.493603557861 +23 +-881.220857485246 +33 +2052.51837642467 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493603557861 +20 +-881.220857485246 +30 +2052.51837642467 +11 +104.493577748645 +21 +-883.553151243369 +31 +2251.0003988214 +12 +104.493570234214 +22 +-839.735472862507 +32 +2264.29235581156 +13 +104.493570234214 +23 +-839.735472862507 +33 +2264.29235581156 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493603557861 +20 +-881.220857485246 +30 +2052.51837642467 +11 +104.493570234214 +21 +-839.735472862507 +31 +2264.29235581156 +12 +104.493600702375 +22 +-876.169915138753 +32 +2069.16910187987 +13 +104.493600702375 +23 +-876.169915138753 +33 +2069.16910187987 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493600702375 +20 +-876.169915138753 +30 +2069.16910187987 +11 +104.493570234214 +21 +-839.735472862507 +31 +2264.29235581156 +12 +104.493597603992 +22 +-867.967629842289 +32 +2084.51449834551 +13 +104.493597603992 +23 +-867.967629842289 +33 +2084.51449834551 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493597603992 +20 +-867.967629842289 +30 +2084.51449834551 +11 +104.493570234214 +21 +-839.735472862507 +31 +2264.29235581156 +12 +104.493594381781 +22 +-856.929210819903 +32 +2097.96485084121 +13 +104.493594381781 +23 +-856.929210819903 +33 +2097.96485084121 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493594381781 +20 +-856.929210819903 +30 +2097.96485084121 +11 +104.493570234214 +21 +-839.735472862507 +31 +2264.29235581156 +12 +104.493591159571 +22 +-843.478858324207 +32 +2109.0032698636 +13 +104.493591159571 +23 +-843.478858324207 +33 +2109.0032698636 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493591159571 +20 +-843.478858324207 +30 +2109.0032698636 +11 +104.493570234214 +21 +-839.735472862507 +31 +2264.29235581156 +12 +104.493588061189 +22 +-828.133461858568 +32 +2117.20555516006 +13 +104.493588061189 +23 +-828.133461858568 +33 +2117.20555516006 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493588061189 +20 +-828.133461858568 +30 +2117.20555516006 +11 +104.493570234214 +21 +-839.735472862507 +31 +2264.29235581156 +12 +104.49356364776 +22 +-794.166606715679 +32 +2268.78050658994 +13 +104.49356364776 +23 +-794.166606715679 +33 +2268.78050658994 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493588061189 +20 +-828.133461858568 +30 +2117.20555516006 +11 +104.49356364776 +21 +-794.166606715679 +31 +2268.78050658994 +12 +104.493585205705 +22 +-811.482736403362 +32 +2122.25649750655 +13 +104.493585205705 +23 +-811.482736403362 +33 +2122.25649750655 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493585205705 +20 +-811.482736403362 +30 +2122.25649750655 +11 +104.49356364776 +21 +-794.166606715679 +31 +2268.78050658994 +12 +104.493582702852 +22 +-794.166559999998 +32 +2123.9619920213 +13 +104.493582702852 +23 +-794.166559999998 +33 +2123.9619920213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493582702852 +20 +-794.166559999998 +30 +2123.9619920213 +11 +104.49356364776 +21 +-794.166606715679 +31 +2268.78050658994 +12 +104.493558242398 +22 +-748.597738773593 +32 +2264.29237403911 +13 +104.493558242398 +23 +-748.597738773593 +33 +2264.29237403911 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493582702852 +20 +-794.166559999998 +30 +2123.9619920213 +11 +104.493558242398 +21 +-748.597738773593 +31 +2264.29237403911 +12 +104.493580648814 +22 +-776.850383596634 +32 +2122.25649750655 +13 +104.493580648814 +23 +-776.850383596634 +33 +2122.25649750655 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493580648814 +20 +-776.850383596634 +30 +2122.25649750655 +11 +104.493558242398 +21 +-748.597738773593 +31 +2264.29237403911 +12 +104.493579122526 +22 +-760.199658141427 +32 +2117.20555516006 +13 +104.493579122526 +23 +-760.199658141427 +33 +2117.20555516006 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493579122526 +20 +-760.199658141427 +30 +2117.20555516006 +11 +104.493558242398 +21 +-748.597738773593 +31 +2264.29237403911 +12 +104.493578182644 +22 +-744.854261675788 +32 +2109.0032698636 +13 +104.493578182644 +23 +-744.854261675788 +33 +2109.0032698636 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493578182644 +20 +-744.854261675788 +30 +2109.0032698636 +11 +104.493558242398 +21 +-748.597738773593 +31 +2264.29237403911 +12 +104.493554225852 +22 +-704.780055075949 +32 +2251.00043457603 +13 +104.493554225852 +23 +-704.780055075949 +33 +2251.00043457603 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493578182644 +20 +-744.854261675788 +30 +2109.0032698636 +11 +104.493554225852 +21 +-704.780055075949 +31 +2251.00043457603 +12 +104.493577865285 +22 +-731.403909180092 +32 +2097.96485084121 +13 +104.493577865285 +23 +-731.403909180092 +33 +2097.96485084121 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493577865285 +20 +-731.403909180092 +30 +2097.96485084121 +11 +104.493554225852 +21 +-704.780055075949 +31 +2251.00043457603 +12 +104.493578182647 +22 +-720.365490157705 +32 +2084.51449834551 +13 +104.493578182647 +23 +-720.365490157705 +33 +2084.51449834551 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493578182647 +20 +-720.365490157705 +30 +2084.51449834551 +11 +104.493554225852 +21 +-704.780055075949 +31 +2251.00043457603 +12 +104.493579122533 +22 +-712.163204861241 +32 +2069.16910187987 +13 +104.493579122533 +23 +-712.163204861241 +33 +2069.16910187987 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493579122533 +20 +-712.163204861241 +30 +2069.16910187987 +11 +104.493554225852 +21 +-704.780055075949 +31 +2251.00043457603 +12 +104.493580648823 +22 +-707.112262514747 +32 +2052.51837642467 +13 +104.493580648823 +23 +-707.112262514747 +33 +2052.51837642467 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493580648823 +20 +-707.112262514747 +30 +2052.51837642467 +11 +104.493554225852 +21 +-704.780055075949 +31 +2251.00043457603 +12 +104.493582702864 +22 +-705.406767999999 +32 +2035.2022000213 +13 +104.493582702864 +23 +-705.406767999999 +33 +2035.2022000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493634537727 +20 +-883.553064924044 +30 +1819.40396546658 +11 +104.493608114757 +21 +-881.220857485245 +31 +2017.88602361794 +12 +104.493630521182 +22 +-839.735381226399 +32 +1806.1120260035 +13 +104.493630521182 +23 +-839.735381226399 +33 +1806.1120260035 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608114757 +20 +-881.220857485245 +30 +2017.88602361794 +11 +104.493634537727 +21 +-883.553064924044 +31 +1819.40396546658 +12 +104.493606060716 +22 +-882.926351999993 +32 +2035.2022000213 +13 +104.493606060716 +23 +-882.926351999993 +33 +2035.2022000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493630521182 +20 +-839.735381226399 +30 +1806.1120260035 +11 +104.493608114757 +21 +-881.220857485245 +31 +2017.88602361794 +12 +104.493609641047 +22 +-876.169915138752 +32 +2001.23529816273 +13 +104.493609641047 +23 +-876.169915138752 +33 +2001.23529816273 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493630521182 +20 +-839.735381226399 +30 +1806.1120260035 +11 +104.493609641047 +21 +-876.169915138752 +31 +2001.23529816273 +12 +104.493610580933 +22 +-867.967629842287 +32 +1985.88990169709 +13 +104.493610580933 +23 +-867.967629842287 +33 +1985.88990169709 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493630521182 +20 +-839.735381226399 +30 +1806.1120260035 +11 +104.493610580933 +21 +-867.967629842287 +31 +1985.88990169709 +12 +104.493610898294 +22 +-856.9292108199 +32 +1972.4395492014 +13 +104.493610898294 +23 +-856.9292108199 +33 +1972.4395492014 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493630521182 +20 +-839.735381226399 +30 +1806.1120260035 +11 +104.493610898294 +21 +-856.9292108199 +31 +1972.4395492014 +12 +104.493610580936 +22 +-843.478858324204 +32 +1961.40113017901 +13 +104.493610580936 +23 +-843.478858324204 +33 +1961.40113017901 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493630521182 +20 +-839.735381226399 +30 +1806.1120260035 +11 +104.493610580936 +21 +-843.478858324204 +31 +1961.40113017901 +12 +104.493609641054 +22 +-828.133461858565 +32 +1953.19884488255 +13 +104.493609641054 +23 +-828.133461858565 +33 +1953.19884488255 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493630521182 +20 +-839.735381226399 +30 +1806.1120260035 +11 +104.493609641054 +21 +-828.133461858565 +31 +1953.19884488255 +12 +104.49362511582 +22 +-794.166513284314 +32 +1801.62389345267 +13 +104.49362511582 +23 +-794.166513284314 +33 +1801.62389345267 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.49362511582 +20 +-794.166513284314 +30 +1801.62389345267 +11 +104.493609641054 +21 +-828.133461858565 +31 +1953.19884488255 +12 +104.493608114766 +22 +-811.482736403359 +32 +1948.14790253605 +13 +104.493608114766 +23 +-811.482736403359 +33 +1948.14790253605 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.49362511582 +20 +-794.166513284314 +30 +1801.62389345267 +11 +104.493608114766 +21 +-811.482736403359 +31 +1948.14790253605 +12 +104.493606060728 +22 +-794.166559999995 +32 +1946.44240802131 +13 +104.493606060728 +23 +-794.166559999995 +33 +1946.44240802131 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.49362511582 +20 +-794.166513284314 +30 +1801.62389345267 +11 +104.493606060728 +21 +-794.166559999995 +31 +1946.44240802131 +12 +104.493603557875 +22 +-776.850383596631 +32 +1948.14790253605 +13 +104.493603557875 +23 +-776.850383596631 +33 +1948.14790253605 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.49362511582 +20 +-794.166513284314 +30 +1801.62389345267 +11 +104.493603557875 +21 +-776.850383596631 +31 +1948.14790253605 +12 +104.493618529366 +22 +-748.597647137485 +32 +1806.11204423105 +13 +104.493618529366 +23 +-748.597647137485 +33 +1806.11204423105 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493618529366 +20 +-748.597647137485 +30 +1806.11204423105 +11 +104.493603557875 +21 +-776.850383596631 +31 +1948.14790253605 +12 +104.49360070239 +22 +-760.199658141424 +32 +1953.19884488255 +13 +104.49360070239 +23 +-760.199658141424 +33 +1953.19884488255 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493618529366 +20 +-748.597647137485 +30 +1806.11204423105 +11 +104.49360070239 +21 +-760.199658141424 +31 +1953.19884488255 +12 +104.493597604008 +22 +-744.854261675785 +32 +1961.40113017901 +13 +104.493597604008 +23 +-744.854261675785 +33 +1961.40113017901 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493618529366 +20 +-748.597647137485 +30 +1806.11204423105 +11 +104.493597604008 +21 +-744.854261675785 +31 +1961.40113017901 +12 +104.493611014934 +22 +-704.779968756623 +32 +1819.40400122121 +13 +104.493611014934 +23 +-704.779968756623 +33 +1819.40400122121 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +104.493597604008 +21 +-744.854261675785 +31 +1961.40113017901 +12 +104.493594381798 +22 +-731.40390918009 +32 +1972.4395492014 +13 +104.493594381798 +23 +-731.40390918009 +33 +1972.4395492014 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +104.493594381798 +21 +-731.40390918009 +31 +1972.4395492014 +12 +104.493591159588 +22 +-720.365490157703 +32 +1985.88990169709 +13 +104.493591159588 +23 +-720.365490157703 +33 +1985.88990169709 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +104.493591159588 +21 +-720.365490157703 +31 +1985.88990169709 +12 +104.493588061205 +22 +-712.163204861239 +32 +2001.23529816273 +13 +104.493588061205 +23 +-712.163204861239 +33 +2001.23529816273 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +104.493588061205 +21 +-712.163204861239 +31 +2001.23529816273 +12 +104.493585205719 +22 +-707.112262514746 +32 +2017.88602361794 +13 +104.493585205719 +23 +-707.112262514746 +33 +2017.88602361794 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +104.493585205719 +21 +-707.112262514746 +31 +2017.88602361794 +12 +104.493582702864 +22 +-705.406767999999 +32 +2035.2022000213 +13 +104.493582702864 +23 +-705.406767999999 +33 +2035.2022000213 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +104.493582702864 +21 +-705.406767999999 +31 +2035.2022000213 +12 +104.493554225852 +22 +-704.780055075949 +32 +2251.00043457603 +13 +104.493554225852 +23 +-704.780055075949 +33 +2251.00043457603 +70 +15 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +104.493554225852 +21 +-704.780055075949 +31 +2251.00043457603 +12 +104.493551752477 +22 +-664.397444634006 +32 +2229.41548998005 +13 +104.493551752477 +23 +-664.397444634006 +33 +2229.41548998005 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493611014934 +20 +-704.779968756623 +30 +1819.40400122121 +11 +104.493551752477 +21 +-664.397444634006 +31 +2229.41548998005 +12 +104.4936028613 +22 +-664.397366948665 +32 +1840.98896197024 +13 +104.4936028613 +23 +-664.397366948665 +33 +1840.98896197024 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.4936028613 +20 +-664.397366948665 +30 +1840.98896197024 +11 +104.493551752477 +21 +-664.397444634006 +31 +2229.41548998005 +12 +104.493550917322 +22 +-629.00178852022 +32 +2200.36703756703 +13 +104.493550917322 +23 +-629.00178852022 +33 +2200.36703756703 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.4936028613 +20 +-664.397366948665 +30 +1840.98896197024 +11 +104.493550917322 +21 +-629.00178852022 +31 +2200.36703756703 +12 +104.493594381804 +22 +-629.001722454268 +32 +1870.03742854153 +13 +104.493594381804 +23 +-629.001722454268 +33 +1870.03742854153 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493594381804 +20 +-629.001722454268 +30 +1870.03742854153 +11 +104.493550917322 +21 +-629.00178852022 +31 +2200.36703756703 +12 +104.493551752482 +22 +-599.953321948931 +32 +2164.97139307263 +13 +104.493551752482 +23 +-599.953321948931 +33 +2164.97139307263 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493594381804 +20 +-629.001722454268 +30 +1870.03742854153 +11 +104.493551752482 +21 +-599.953321948931 +31 +2164.97139307263 +12 +104.493585902306 +22 +-599.953270041246 +32 +1905.43308465531 +13 +104.493585902306 +23 +-599.953270041246 +33 +1905.43308465531 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493585902306 +20 +-599.953270041246 +30 +1905.43308465531 +11 +104.493551752482 +21 +-599.953321948931 +31 +2164.97139307263 +12 +104.493554225863 +22 +-578.368361199906 +32 +2124.58879126467 +13 +104.493554225863 +23 +-578.368361199906 +33 +2124.58879126467 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493585902306 +20 +-599.953270041246 +30 +1905.43308465531 +11 +104.493554225863 +21 +-578.368361199906 +31 +2124.58879126467 +12 +104.493577748671 +22 +-578.36832544527 +32 +1945.81569509725 +13 +104.493577748671 +23 +-578.36832544527 +33 +1945.81569509725 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493577748671 +20 +-578.36832544527 +30 +1945.81569509725 +11 +104.493554225863 +21 +-578.368361199906 +31 +2124.58879126467 +12 +104.493558242413 +22 +-565.076404209743 +32 +2080.77111288381 +13 +104.493558242413 +23 +-565.076404209743 +33 +2080.77111288381 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493577748671 +20 +-578.36832544527 +30 +1945.81569509725 +11 +104.493558242413 +21 +-565.076404209743 +31 +2080.77111288381 +12 +104.493570234237 +22 +-565.076385982188 +32 +1989.6333787949 +13 +104.493570234237 +23 +-565.076385982188 +33 +1989.6333787949 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493570234237 +20 +-565.076385982188 +30 +1989.6333787949 +11 +104.493558242413 +21 +-565.076404209743 +31 +2080.77111288381 +12 +104.49356364778 +22 +-560.588253431361 +32 +2035.20224673698 +13 +104.49356364778 +23 +-560.588253431361 +33 +2035.20224673698 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +199.0652044353 +20 +-923.935662922352 +30 +1840.9889225062 +11 +104.493637398531 +21 +-940.355693033463 +31 +1854.46446481146 +12 +104.493637011103 +22 +-923.935675365986 +32 +1840.98891006256 +13 +104.493637011103 +23 +-923.935675365986 +33 +1840.98891006256 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493637398531 +20 +-940.355693033463 +30 +1854.46446481146 +11 +199.0652044353 +21 +-923.935662922352 +31 +1840.9889225062 +12 +184.938820049334 +22 +-929.750233661175 +32 +1845.76081205901 +13 +184.938820049334 +23 +-929.750233661175 +33 +1845.76081205901 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493577748645 +20 +-883.553151243369 +30 +2251.0003988214 +11 +395.941605262448 +21 +-839.735434514061 +31 +2264.29239416004 +12 +104.493570234214 +22 +-839.735472862507 +32 +2264.29235581156 +13 +104.493570234214 +23 +-839.735472862507 +33 +2264.29235581156 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +395.941605262448 +20 +-839.735434514061 +30 +2264.29239416004 +11 +104.493577748645 +21 +-883.553151243369 +31 +2251.0003988214 +12 +301.780746126529 +22 +-883.553125284517 +32 +2251.00042478027 +13 +301.780746126529 +23 +-883.553125284517 +33 +2251.00042478027 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +395.941605262448 +20 +-839.735434514061 +30 +2264.29239416004 +11 +301.780746126529 +21 +-883.553125284517 +31 +2251.00042478027 +12 +357.792956438195 +22 +-863.788607954656 +32 +2256.9959350164 +13 +357.792956438195 +23 +-863.788607954656 +33 +2256.9959350164 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493554225852 +20 +-704.780055075949 +30 +2251.00043457603 +11 +673.273723074262 +21 +-664.397369794469 +31 +2229.41556481967 +12 +104.493551752477 +22 +-664.397444634006 +32 +2229.41548998005 +13 +104.493551752477 +23 +-664.397444634006 +33 +2229.41548998005 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +673.273723074262 +20 +-664.397369794469 +30 +2229.41556481967 +11 +104.493554225852 +21 +-704.780055075949 +31 +2251.00043457603 +12 +612.092889952714 +22 +-704.779988286527 +32 +2251.00050136552 +13 +612.092889952714 +23 +-704.779988286527 +33 +2251.00050136552 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +673.273723074262 +20 +-664.397369794469 +30 +2229.41556481967 +11 +612.092889952714 +21 +-704.779988286527 +31 +2251.00050136552 +12 +660.421223817861 +22 +-674.412868555691 +32 +2234.76895526921 +13 +660.421223817861 +23 +-674.412868555691 +33 +2234.76895526921 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +673.273723074262 +20 +-664.397369794469 +30 +2229.41556481967 +11 +660.421223817861 +21 +-674.412868555691 +31 +2234.76895526921 +12 +668.764043362589 +22 +-668.76404336259 +32 +2231.74959843549 +13 +668.764043362589 +23 +-668.76404336259 +33 +2231.74959843549 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +549.426368572047 +20 +-748.597588593672 +30 +1806.11210277493 +11 +104.49362511582 +21 +-794.166513284314 +31 +1801.62389345267 +12 +104.493618529366 +22 +-748.597647137485 +32 +1806.11204423105 +13 +104.493618529366 +23 +-748.597647137485 +33 +1806.11204423105 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.49362511582 +20 +-794.166513284314 +30 +1801.62389345267 +11 +549.426368572047 +21 +-748.597588593672 +31 +1806.11210277493 +12 +476.980677127978 +22 +-794.166464272834 +32 +1801.6239424642 +13 +476.980677127978 +23 +-794.166464272834 +33 +1801.6239424642 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +476.980677127978 +20 +-794.166464272834 +30 +1801.6239424642 +11 +549.426368572047 +21 +-748.597588593672 +31 +1806.11210277493 +12 +517.019026944331 +22 +-773.773655132591 +32 +1803.63246772228 +13 +517.019026944331 +23 +-773.773655132591 +33 +1803.63246772228 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-191.38931884584 +20 +-962.179081004757 +30 +2035.2022000213 +11 +0.0 +21 +-976.970215709361 +31 +1967.39330582966 +12 +-190.597433982906 +22 +-958.19800696011 +32 +1967.39330582966 +13 +-190.597433982906 +23 +-958.19800696011 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-976.970215709361 +30 +1967.39330582966 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-10.2481189704998 +22 +-977.344465549986 +32 +1990.50710618793 +13 +-10.2481189704998 +23 +-977.344465549986 +33 +1990.50710618793 +70 +15 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-976.970215709361 +30 +1967.39330582966 +11 +-10.2481189704998 +21 +-977.344465549986 +31 +1990.50710618793 +12 +-1.4681606386561 +22 +-978.157451656943 +32 +1989.64235577041 +13 +-1.4681606386561 +23 +-978.157451656943 +33 +1989.64235577041 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +-10.2481189704998 +20 +-977.344465549986 +30 +1990.50710618793 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-18.6906684275082 +22 +-976.666250664317 +32 +1993.0681255669 +13 +-18.6906684275082 +23 +-976.666250664317 +33 +1993.0681255669 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-18.6906684275082 +20 +-976.666250664317 +30 +1993.0681255669 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-26.4713665686843 +22 +-976.148870417647 +32 +1997.22699536883 +13 +-26.4713665686843 +23 +-976.148870417647 +33 +1997.22699536883 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-26.4713665686843 +20 +-976.148870417647 +30 +1997.22699536883 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-33.2912055279291 +22 +-975.812207442705 +32 +2002.82389255955 +13 +-33.2912055279291 +23 +-975.812207442705 +33 +2002.82389255955 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-33.2912055279291 +20 +-975.812207442705 +30 +2002.82389255955 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-38.8881027186488 +22 +-975.669199508814 +32 +2009.6437315188 +13 +-38.8881027186488 +23 +-975.669199508814 +33 +2009.6437315188 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-38.8881027186488 +20 +-975.669199508814 +30 +2009.6437315188 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-43.0469725205791 +22 +-975.725342330674 +32 +2017.42442965997 +13 +-43.0469725205791 +23 +-975.725342330674 +33 +2017.42442965997 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-43.0469725205791 +20 +-975.725342330674 +30 +2017.42442965997 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-45.6079918995534 +22 +-975.978478371127 +32 +2025.86697911698 +13 +-45.6079918995534 +23 +-975.978478371127 +33 +2025.86697911698 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-45.6079918995534 +20 +-975.978478371127 +30 +2025.86697911698 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-46.4727423170739 +22 +-976.418879754098 +32 +2034.64693744883 +13 +-46.4727423170739 +23 +-976.418879754098 +33 +2034.64693744883 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-46.4727423170739 +20 +-976.418879754098 +30 +2034.64693744883 +11 +-191.38931884584 +21 +-962.179081004757 +31 +2035.2022000213 +12 +-46.4180537270787 +22 +-976.457504352767 +32 +2035.20220002131 +13 +-46.4180537270787 +23 +-976.457504352767 +33 +2035.20220002131 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-978.310708745151 +30 +1989.78695697206 +11 +0.0 +21 +-976.970215709361 +31 +1967.39330582966 +12 +-1.4681606386561 +22 +-978.157451656943 +32 +1989.64235577041 +13 +-1.4681606386561 +23 +-978.157451656943 +33 +1989.64235577041 +70 +2 + 0 +3DFACE + 8 +body_half_inside +10 +43.4817324497669 +20 +-976.746706756077 +30 +2035.2022000213 +11 +104.493608158504 +21 +-966.678493599977 +31 +2103.01109421295 +12 +104.493617614829 +22 +-970.737560564704 +32 +2035.2022000213 +13 +104.493617614829 +23 +-970.737560564704 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +43.4817324497669 +21 +-976.746706756077 +31 +2035.2022000213 +12 +42.6716706222411 +22 +-976.334157259822 +32 +2043.42689578067 +13 +42.6716706222411 +23 +-976.334157259822 +33 +2043.42689578067 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +42.6716706222411 +21 +-976.334157259822 +31 +2043.42689578067 +12 +40.1106512432667 +22 +-976.081021219369 +32 +2051.86944523768 +13 +40.1106512432667 +23 +-976.081021219369 +33 +2051.86944523768 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +40.1106512432667 +21 +-976.081021219369 +31 +2051.86944523768 +12 +35.9517814413358 +22 +-976.024878397508 +32 +2059.65014337886 +13 +35.9517814413358 +23 +-976.024878397508 +33 +2059.65014337886 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +35.9517814413358 +21 +-976.024878397508 +31 +2059.65014337886 +12 +30.354884250617 +22 +-976.1678863314 +32 +2066.4699823381 +13 +30.354884250617 +23 +-976.1678863314 +33 +2066.4699823381 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +30.354884250617 +21 +-976.1678863314 +31 +2066.4699823381 +12 +23.5350452913725 +22 +-976.504549306342 +32 +2072.06687952882 +13 +23.5350452913725 +23 +-976.504549306342 +33 +2072.06687952882 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +23.5350452913725 +21 +-976.504549306342 +31 +2072.06687952882 +12 +15.754347150196 +22 +-977.021929553012 +32 +2076.22574933075 +13 +15.754347150196 +23 +-977.021929553012 +33 +2076.22574933075 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +15.754347150196 +21 +-977.021929553012 +31 +2076.22574933075 +12 +7.31179769318775 +22 +-977.70014443868 +32 +2078.78676870972 +13 +7.31179769318775 +23 +-977.70014443868 +33 +2078.78676870972 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +7.31179769318775 +21 +-977.70014443868 +31 +2078.78676870972 +12 +0.0 +22 +-978.377185230535 +32 +2079.50691792559 +13 +0.0 +23 +-978.377185230535 +33 +2079.50691792559 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493608158504 +20 +-966.678493599977 +30 +2103.01109421295 +11 +0.0 +21 +-978.377185230535 +31 +2079.50691792559 +12 +0.0 +22 +-976.970215709361 +32 +2103.01109421295 +13 +0.0 +23 +-976.970215709361 +33 +2103.01109421295 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-190.597433982906 +20 +-958.19800696011 +30 +2103.01109421295 +11 +-46.4180537270787 +21 +-976.457504352767 +31 +2035.20220002131 +12 +-191.38931884584 +22 +-962.179081004757 +32 +2035.2022000213 +13 +-191.38931884584 +23 +-962.179081004757 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +-46.4180537270787 +20 +-976.457504352767 +30 +2035.20220002131 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-45.6079918995534 +22 +-976.044954856512 +32 +2043.42689578067 +13 +-45.6079918995534 +23 +-976.044954856512 +33 +2043.42689578067 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-45.6079918995534 +20 +-976.044954856512 +30 +2043.42689578067 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-43.0469725205787 +22 +-975.791818816059 +32 +2051.86944523768 +13 +-43.0469725205787 +23 +-975.791818816059 +33 +2051.86944523768 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-43.0469725205787 +20 +-975.791818816059 +30 +2051.86944523768 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-38.8881027186484 +22 +-975.735675994198 +32 +2059.65014337885 +13 +-38.8881027186484 +23 +-975.735675994198 +33 +2059.65014337885 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-38.8881027186484 +20 +-975.735675994198 +30 +2059.65014337885 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-33.2912055279292 +22 +-975.878683928089 +32 +2066.4699823381 +13 +-33.2912055279292 +23 +-975.878683928089 +33 +2066.4699823381 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-33.2912055279292 +20 +-975.878683928089 +30 +2066.4699823381 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-26.4713665686843 +22 +-976.215346903032 +32 +2072.06687952882 +13 +-26.4713665686843 +23 +-976.215346903032 +33 +2072.06687952882 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-26.4713665686843 +20 +-976.215346903032 +30 +2072.06687952882 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-18.690668427508 +22 +-976.732727149702 +32 +2076.22574933075 +13 +-18.690668427508 +23 +-976.732727149702 +33 +2076.22574933075 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-18.690668427508 +20 +-976.732727149702 +30 +2076.22574933075 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-10.2481189704998 +22 +-977.41094203537 +32 +2078.78676870972 +13 +-10.2481189704998 +23 +-977.41094203537 +33 +2078.78676870972 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-10.2481189704998 +20 +-977.41094203537 +30 +2078.78676870972 +11 +-190.597433982906 +21 +-958.19800696011 +31 +2103.01109421295 +12 +-1.46816063865592 +22 +-978.223928142328 +32 +2079.65151912724 +13 +-1.46816063865592 +23 +-978.223928142328 +33 +2079.65151912724 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +-1.46816063865592 +20 +-978.223928142328 +30 +2079.65151912724 +11 +0.0 +21 +-976.970215709361 +31 +2103.01109421295 +12 +0.0 +22 +-978.377185230535 +32 +2079.50691792559 +13 +0.0 +23 +-978.377185230535 +33 +2079.50691792559 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-976.970215709361 +30 +2103.01109421295 +11 +-1.46816063865592 +21 +-978.223928142328 +31 +2079.65151912724 +12 +-190.597433982906 +22 +-958.19800696011 +32 +2103.01109421295 +13 +-190.597433982906 +23 +-958.19800696011 +33 +2103.01109421295 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +0.0 +20 +-978.310708745151 +30 +1989.78695697206 +11 +104.493626002977 +21 +-966.678491842449 +31 +1967.39330582966 +12 +0.0 +22 +-976.970215709361 +32 +1967.39330582966 +13 +0.0 +23 +-976.970215709361 +33 +1967.39330582966 +70 +1 + 0 +3DFACE + 8 +body_half_inside +10 +104.493626002977 +20 +-966.678491842449 +30 +1967.39330582966 +11 +0.0 +21 +-978.310708745151 +31 +1989.78695697206 +12 +7.31179769318757 +22 +-977.633667953296 +32 +1990.50710618793 +13 +7.31179769318757 +23 +-977.633667953296 +33 +1990.50710618793 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493626002977 +20 +-966.678491842449 +30 +1967.39330582966 +11 +7.31179769318757 +21 +-977.633667953296 +31 +1990.50710618793 +12 +15.754347150196 +22 +-976.955453067628 +32 +1993.0681255669 +13 +15.754347150196 +23 +-976.955453067628 +33 +1993.0681255669 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493626002977 +20 +-966.678491842449 +30 +1967.39330582966 +11 +15.754347150196 +21 +-976.955453067628 +31 +1993.0681255669 +12 +104.493617614829 +22 +-970.737560564704 +32 +2035.2022000213 +13 +104.493617614829 +23 +-970.737560564704 +33 +2035.2022000213 +70 +3 + 0 +3DFACE + 8 +body_half_inside +10 +104.493617614829 +20 +-970.737560564704 +30 +2035.2022000213 +11 +15.754347150196 +21 +-976.955453067628 +31 +1993.0681255669 +12 +23.5350452913723 +22 +-976.438072820957 +32 +1997.22699536883 +13 +23.5350452913723 +23 +-976.438072820957 +33 +1997.22699536883 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493617614829 +20 +-970.737560564704 +30 +2035.2022000213 +11 +23.5350452913723 +21 +-976.438072820957 +31 +1997.22699536883 +12 +30.3548842506176 +22 +-976.101409846015 +32 +2002.82389255955 +13 +30.3548842506176 +23 +-976.101409846015 +33 +2002.82389255955 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493617614829 +20 +-970.737560564704 +30 +2035.2022000213 +11 +30.3548842506176 +21 +-976.101409846015 +31 +2002.82389255955 +12 +35.9517814413364 +22 +-975.958401912124 +32 +2009.6437315188 +13 +35.9517814413364 +23 +-975.958401912124 +33 +2009.6437315188 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493617614829 +20 +-970.737560564704 +30 +2035.2022000213 +11 +35.9517814413364 +21 +-975.958401912124 +31 +2009.6437315188 +12 +40.110651243267 +22 +-976.014544733984 +32 +2017.42442965997 +13 +40.110651243267 +23 +-976.014544733984 +33 +2017.42442965997 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493617614829 +20 +-970.737560564704 +30 +2035.2022000213 +11 +40.110651243267 +21 +-976.014544733984 +31 +2017.42442965997 +12 +42.6716706222411 +22 +-976.267680774437 +32 +2025.86697911698 +13 +42.6716706222411 +23 +-976.267680774437 +33 +2025.86697911698 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493617614829 +20 +-970.737560564704 +30 +2035.2022000213 +11 +42.6716706222411 +21 +-976.267680774437 +31 +2025.86697911698 +12 +43.5364210397618 +22 +-976.708082157409 +32 +2034.64693744883 +13 +43.5364210397618 +23 +-976.708082157409 +33 +2034.64693744883 +70 +13 + 0 +3DFACE + 8 +body_half_inside +10 +104.493617614829 +20 +-970.737560564704 +30 +2035.2022000213 +11 +43.5364210397618 +21 +-976.708082157409 +31 +2034.64693744883 +12 +43.4817324497669 +22 +-976.746706756077 +32 +2035.2022000213 +13 +43.4817324497669 +23 +-976.746706756077 +33 +2035.2022000213 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +166.455212576234 +20 +-280.29408 +30 +1639.76100453833 +11 +176.700983922342 +21 +-186.86272 +31 +1605.98522290042 +12 +176.700983922341 +22 +-280.29408 +32 +1605.98522290042 +13 +176.700983922341 +23 +-280.29408 +33 +1605.98522290042 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +176.700983922342 +20 +-186.86272 +30 +1605.98522290042 +11 +166.455212576234 +21 +-280.29408 +31 +1639.76100453833 +12 +166.455212576235 +22 +-186.86272 +32 +1639.76100453833 +13 +166.455212576235 +23 +-186.86272 +33 +1639.76100453833 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +149.816982737509 +20 +-280.29408 +30 +1670.8889431717 +11 +166.455212576235 +21 +-186.86272 +31 +1639.76100453833 +12 +166.455212576234 +22 +-280.29408 +32 +1639.76100453833 +13 +166.455212576234 +23 +-280.29408 +33 +1639.76100453833 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +166.455212576235 +20 +-186.86272 +30 +1639.76100453833 +11 +149.816982737509 +21 +-280.29408 +31 +1670.8889431717 +12 +149.816982737509 +22 +-186.86272 +32 +1670.8889431717 +13 +149.816982737509 +23 +-186.86272 +33 +1670.8889431717 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +93.530885442671 +20 +-186.862719999999 +30 +242.726639240051 +11 +93.5308854426706 +21 +-280.294079999998 +31 +1315.22236639941 +12 +93.5308854426706 +22 +-280.294079999998 +32 +242.726639192693 +13 +93.5308854426706 +23 +-280.294079999998 +33 +242.726639192693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +93.5308854426706 +20 +-280.294079999998 +30 +1315.22236639941 +11 +93.530885442671 +21 +-186.862719999999 +31 +242.726639240051 +12 +93.530885442671 +22 +-186.862719999998 +32 +1315.22236639941 +13 +93.530885442671 +23 +-186.862719999998 +33 +1315.22236639941 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.141825844156 +20 +-280.29408 +30 +1421.1550651442 +11 +127.42569224804 +21 +-186.86272 +31 +1443.54635563367 +12 +100.141825844157 +22 +-186.86272 +32 +1421.1550651442 +13 +100.141825844157 +23 +-186.86272 +33 +1421.1550651442 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +127.42569224804 +20 +-186.86272 +30 +1443.54635563367 +11 +100.141825844156 +21 +-280.29408 +31 +1421.1550651442 +12 +127.425692248039 +22 +-280.29408 +32 +1443.54635563367 +13 +127.425692248039 +23 +-280.29408 +33 +1443.54635563367 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +653.29151769208 +20 +-646.340639254846 +30 +5.83945951983237 +11 +642.023925698404 +21 +-654.528573978645 +31 +-3.60955709766131e-12 +12 +642.023925698403 +22 +-654.528573978644 +32 +5.83945951983345 +13 +642.023925698403 +23 +-654.528573978644 +33 +5.83945951983345 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +642.023925698404 +20 +-654.528573978645 +30 +-3.60955709766131e-12 +11 +653.29151769208 +21 +-646.340639254846 +31 +5.83945951983237 +12 +653.29151769208 +22 +-646.340639254847 +32 +-4.51194637207664e-12 +13 +653.29151769208 +23 +-646.340639254847 +33 +-4.51194637207664e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +149.816982737509 +20 +-280.29408 +30 +1670.8889431717 +11 +127.425692248039 +21 +-186.862719999999 +31 +1698.17280957558 +12 +149.816982737509 +22 +-186.86272 +32 +1670.8889431717 +13 +149.816982737509 +23 +-186.86272 +33 +1670.8889431717 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +127.425692248039 +20 +-186.862719999999 +30 +1698.17280957558 +11 +149.816982737509 +21 +-280.29408 +31 +1670.8889431717 +12 +127.425692248039 +22 +-280.29408 +32 +1698.17280957558 +13 +127.425692248039 +23 +-280.29408 +33 +1698.17280957558 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +806.270901222105 +20 +56.1856515497994 +30 +23.3578380793657 +11 +847.545902396362 +21 +56.1856515498016 +31 +1.46187062455283e-11 +12 +806.270901222104 +22 +56.1856515498016 +32 +1.46187062455283e-11 +13 +806.270901222104 +23 +56.1856515498016 +33 +1.46187062455283e-11 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +847.545902396362 +20 +56.1856515498016 +30 +1.46187062455283e-11 +11 +806.270901222105 +21 +56.1856515497994 +31 +23.3578380793657 +12 +847.545902396365 +22 +56.1856515497976 +32 +23.3578380793863 +13 +847.545902396365 +23 +56.1856515497976 +33 +23.3578380793863 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269999782869 +20 +-697.7398487668 +30 +192.761586394987 +11 +464.090791712392 +21 +-720.287768351753 +31 +170.665180957976 +12 +464.090789844927 +22 +-696.627200742591 +32 +191.294034464012 +13 +464.090789844927 +23 +-696.627200742591 +33 +191.294034464012 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090791712392 +20 +-720.287768351753 +30 +170.665180957976 +11 +461.269999782869 +21 +-697.7398487668 +31 +192.761586394987 +12 +461.270001665299 +22 +-721.590015329221 +32 +171.967427935313 +13 +461.270001665299 +23 +-721.590015329221 +33 +171.967427935313 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +793.410423174187 +20 +-566.321374409616 +30 +23.357838010706 +11 +792.007218281129 +21 +-582.09079684746 +31 +40.22369700007 +12 +793.309565768095 +22 +-569.303680096418 +32 +23.3578380100164 +13 +793.309565768095 +23 +-569.303680096418 +33 +23.3578380100164 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007218281129 +20 +-582.09079684746 +30 +40.22369700007 +11 +793.410423174187 +21 +-566.321374409616 +31 +23.357838010706 +12 +792.007217306199 +22 +-577.494024343961 +32 +43.2377297488181 +13 +792.007217306199 +23 +-577.494024343961 +33 +43.2377297488181 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955341833487 +20 +-738.830110282484 +30 +109.907610082888 +11 +599.602155913773 +21 +-724.524747581215 +31 +134.576835581469 +12 +599.602150844536 +22 +-740.196470143783 +32 +110.675521501907 +13 +599.602150844536 +23 +-740.196470143783 +33 +110.675521501907 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602155913773 +20 +-724.524747581215 +30 +134.576835581469 +11 +624.955341833487 +21 +-738.830110282484 +31 +109.907610082888 +12 +624.955346864755 +22 +-723.275770827742 +32 +133.629900413365 +13 +624.955346864755 +23 +-723.275770827742 +33 +133.629900413365 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335612575248 +20 +-749.104396759147 +30 +83.5375802413299 +11 +439.690596528004 +21 +-756.366969281262 +31 +56.4649968373303 +12 +436.335601310833 +22 +-757.591910929275 +32 +56.7629871862785 +13 +436.335601310833 +23 +-757.591910929275 +33 +56.7629871862785 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690596528004 +20 +-756.366969281262 +30 +56.4649968373303 +11 +436.335612575248 +21 +-749.104396759147 +31 +83.5375802413299 +12 +439.690607723364 +22 +-747.931486742049 +32 +83.0754516399063 +13 +439.690607723364 +23 +-747.931486742049 +33 +83.0754516399063 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690607723364 +20 +-747.931486742049 +30 +83.0754516399063 +11 +442.839466299903 +21 +-754.702000509797 +31 +56.0599621810555 +12 +439.690596528004 +22 +-756.366969281262 +32 +56.4649968373303 +13 +439.690596528004 +23 +-756.366969281262 +33 +56.4649968373303 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839466299903 +20 +-754.702000509797 +30 +56.0599621810555 +11 +439.690607723364 +21 +-747.931486742049 +31 +83.0754516399063 +12 +442.839477401402 +22 +-746.337240593148 +32 +82.4473163912804 +13 +442.839477401402 +23 +-746.337240593148 +33 +82.4473163912804 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222214863865 +20 +-789.666464186592 +30 +31.8757394304439 +11 +455.006085098156 +21 +-785.239686816274 +31 +63.4887904110616 +12 +455.006069025402 +22 +-790.658170470477 +32 +31.9771884161607 +13 +455.006069025402 +23 +-790.658170470477 +33 +31.9771884161607 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006085098156 +20 +-785.239686816274 +30 +63.4887904110616 +11 +458.222214863865 +21 +-789.666464186592 +31 +31.8757394304439 +12 +458.222230868175 +22 +-784.271054681722 +32 +63.2531519626526 +13 +458.222230868175 +23 +-784.271054681722 +33 +63.2531519626526 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.995900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +0.00176534768975319 +21 +-186.86272 +31 +5.83945951983706 +12 +0.00176534768970384 +22 +-186.86272 +32 +23.3578380793295 +13 +0.00176534768970384 +23 +-186.86272 +33 +23.3578380793295 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.00176534768975319 +20 +-186.86272 +30 +5.83945951983706 +11 +764.995900047839 +21 +-186.86272 +31 +23.3578380793295 +12 +764.995900047839 +22 +-186.86272 +32 +5.83945951983706 +13 +764.995900047839 +23 +-186.86272 +33 +5.83945951983706 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.10720415349 +20 +-665.162054034067 +30 +199.228411696097 +11 +470.677523524142 +21 +-692.042929592268 +31 +185.247506781241 +12 +472.107209463225 +22 +-690.197307940468 +32 +182.813182295542 +13 +472.107209463225 +23 +-690.197307940468 +33 +182.813182295542 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677523524142 +20 +-692.042929592268 +30 +185.247506781241 +11 +472.10720415349 +21 +-665.162054034067 +31 +199.228411696097 +12 +470.677518140403 +22 +-666.658744301589 +32 +201.891525102388 +13 +470.677518140403 +23 +-666.658744301589 +33 +201.891525102388 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133251163261 +20 +-548.67314817835 +30 +186.220486963908 +11 +454.66772029492 +21 +-186.86272 +31 +186.220486963908 +12 +602.133251163261 +22 +-186.86272 +32 +186.220486963908 +13 +602.133251163261 +23 +-186.86272 +33 +186.220486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.66772029492 +20 +-186.86272 +30 +186.220486963908 +11 +602.133251163261 +21 +-548.67314817835 +31 +186.220486963908 +12 +454.66772029492 +22 +-548.673192057237 +32 +186.220486963908 +13 +454.66772029492 +23 +-548.673192057237 +33 +186.220486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957358037872 +20 +-603.792752711355 +30 +197.311473394829 +11 +696.758793128571 +21 +-625.025897634329 +31 +178.836736613072 +12 +696.758783079627 +22 +-601.140380260496 +32 +186.408417229293 +13 +696.758783079627 +23 +-601.140380260496 +33 +186.408417229293 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758793128571 +20 +-625.025897634329 +30 +178.836736613072 +11 +673.957358037872 +21 +-603.792752711355 +31 +197.311473394829 +12 +673.957368701467 +22 +-629.139245228331 +32 +189.276665394806 +13 +673.957368701467 +23 +-629.139245228331 +33 +189.276665394806 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-549.195745909472 +30 +217.326639240051 +11 +599.602098887118 +21 +-186.86272 +31 +217.326639240051 +12 +473.71772029492 +22 +-186.86272 +32 +217.326639240051 +13 +473.71772029492 +23 +-186.86272 +33 +217.326639240051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602098887118 +20 +-186.86272 +30 +217.326639240051 +11 +473.71772029492 +21 +-549.195745909472 +31 +217.326639240051 +12 +599.602098887118 +22 +-549.195708452133 +32 +217.326639240051 +13 +599.602098887118 +23 +-549.195708452133 +33 +217.326639240051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +93.5308854426706 +20 +-280.294079999998 +30 +242.726639192693 +11 +0.112465277083136 +21 +-280.29408 +31 +1390.81149035281 +12 +0.000487681863777811 +22 +-280.294079999998 +32 +242.726639192693 +13 +0.000487681863777811 +23 +-280.294079999998 +33 +242.726639192693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.112465277083136 +20 +-280.29408 +30 +1390.81149035281 +11 +93.5308854426706 +21 +-280.294079999998 +31 +242.726639192693 +12 +35.2381055728783 +22 +-280.29408 +32 +1394.27106395937 +13 +35.2381055728783 +23 +-280.29408 +33 +1394.27106395937 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +35.2381055728783 +20 +-280.29408 +30 +1394.27106395937 +11 +93.5308854426706 +21 +-280.294079999998 +31 +242.726639192693 +12 +69.0138872107921 +22 +-280.29408 +32 +1404.51683530547 +13 +69.0138872107921 +23 +-280.29408 +33 +1404.51683530547 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +69.0138872107921 +20 +-280.29408 +30 +1404.51683530547 +11 +93.5308854426706 +21 +-280.294079999998 +31 +242.726639192693 +12 +93.5308854426706 +22 +-280.294079999998 +32 +1315.22236639941 +13 +93.5308854426706 +23 +-280.294079999998 +33 +1315.22236639941 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +69.0138872107921 +20 +-280.29408 +30 +1404.51683530547 +11 +93.5308854426706 +21 +-280.294079999998 +31 +1315.22236639941 +12 +100.141825844156 +22 +-280.29408 +32 +1421.1550651442 +13 +100.141825844156 +23 +-280.29408 +33 +1421.1550651442 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +100.141825844156 +20 +-280.29408 +30 +1421.1550651442 +11 +93.5308854426706 +21 +-280.294079999998 +31 +1315.22236639941 +12 +221.73980966547 +22 +-280.29408 +32 +1435.59863370269 +13 +221.73980966547 +23 +-280.29408 +33 +1435.59863370269 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +100.141825844156 +20 +-280.29408 +30 +1421.1550651442 +11 +221.73980966547 +21 +-280.29408 +31 +1435.59863370269 +12 +127.425692248039 +22 +-280.29408 +32 +1443.54635563367 +13 +127.425692248039 +23 +-280.29408 +33 +1443.54635563367 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +127.425692248039 +20 +-280.29408 +30 +1443.54635563367 +11 +221.73980966547 +21 +-280.29408 +31 +1435.59863370269 +12 +149.816982737509 +22 +-280.29408 +32 +1470.83022203755 +13 +149.816982737509 +23 +-280.29408 +33 +1470.83022203755 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +149.816982737509 +20 +-280.29408 +30 +1470.83022203755 +11 +221.73980966547 +21 +-280.29408 +31 +1435.59863370269 +12 +166.455212576234 +22 +-280.29408 +32 +1501.95816067091 +13 +166.455212576234 +23 +-280.29408 +33 +1501.95816067091 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +166.455212576234 +20 +-280.29408 +30 +1501.95816067091 +11 +221.73980966547 +21 +-280.29408 +31 +1435.59863370269 +12 +176.700983922341 +22 +-280.29408 +32 +1535.73394230883 +13 +176.700983922341 +23 +-280.29408 +33 +1535.73394230883 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +176.700983922341 +20 +-280.29408 +30 +1535.73394230883 +11 +221.73980966547 +21 +-280.29408 +31 +1435.59863370269 +12 +180.160557528893 +22 +-280.29408 +32 +1570.85958260462 +13 +180.160557528893 +23 +-280.29408 +33 +1570.85958260462 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +180.160557528893 +20 +-280.29408 +30 +1570.85958260462 +11 +221.73980966547 +21 +-280.29408 +31 +1435.59863370269 +12 +180.185723589149 +22 +-280.29408 +32 +1903.25211107687 +13 +180.185723589149 +23 +-280.29408 +33 +1903.25211107687 +70 +15 + 0 +3DFACE + 8 +leg_half +10 +35.2430152276776 +20 +-280.294079999999 +30 +2079.8653122236 +11 +0.179983602711226 +21 +-280.294079999999 +31 +2125.50255258978 +12 +0.112465277083137 +22 +-280.294079999999 +32 +2083.32536938894 +13 +0.112465277083137 +23 +-280.294079999999 +33 +2083.32536938894 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.179983602711226 +20 +-280.294079999999 +30 +2125.50255258978 +11 +35.2430152276776 +21 +-280.294079999999 +31 +2079.8653122236 +12 +46.8683973136999 +22 +-280.294079999999 +32 +2125.50255258978 +13 +46.8683973136999 +23 +-280.294079999999 +33 +2125.50255258978 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +46.8683973136999 +20 +-280.294079999999 +30 +2125.50255258978 +11 +35.2430152276776 +21 +-280.294079999999 +31 +2079.8653122236 +12 +69.0235178451101 +22 +-280.294079999999 +32 +2069.61810878401 +13 +69.0235178451101 +23 +-280.294079999999 +33 +2069.61810878401 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +46.8683973136999 +20 +-280.294079999999 +30 +2125.50255258978 +11 +69.0235178451101 +21 +-280.294079999999 +31 +2069.61810878401 +12 +46.8683973136999 +22 +-280.294079999999 +32 +2499.20806403607 +13 +46.8683973136999 +23 +-280.294079999999 +33 +2499.20806403607 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +46.8683973136999 +20 +-280.294079999999 +30 +2499.20806403607 +11 +69.0235178451101 +21 +-280.294079999999 +31 +2069.61810878401 +12 +93.6524710483026 +22 +-280.294079999999 +32 +2499.20806403607 +13 +93.6524710483026 +23 +-280.294079999999 +33 +2499.20806403607 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +93.6524710483026 +20 +-280.294079999999 +30 +2499.20806403607 +11 +69.0235178451101 +21 +-280.294079999999 +31 +2069.61810878401 +12 +100.155807358117 +22 +-280.294079999999 +32 +2052.97755335166 +13 +100.155807358117 +23 +-280.294079999999 +33 +2052.97755335166 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +93.6524710483026 +20 +-280.294079999999 +30 +2499.20806403607 +11 +100.155807358117 +21 +-280.294079999999 +31 +2052.97755335166 +12 +123.089851596878 +22 +-280.294079999999 +32 +2224.76609686633 +13 +123.089851596878 +23 +-280.294079999999 +33 +2224.76609686633 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +123.089851596878 +20 +-280.294079999999 +30 +2224.76609686633 +11 +100.155807358117 +21 +-280.294079999999 +31 +2052.97755335166 +12 +127.443487339902 +22 +-280.29408 +32 +2030.58313313969 +13 +127.443487339902 +23 +-280.29408 +33 +2030.58313313969 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +123.089851596878 +20 +-280.294079999999 +30 +2224.76609686633 +11 +127.443487339902 +21 +-280.29408 +31 +2030.58313313969 +12 +221.73980966547 +22 +-280.29408 +32 +2013.4439613934 +13 +221.73980966547 +23 +-280.29408 +33 +2013.4439613934 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +221.73980966547 +20 +-280.29408 +30 +2013.4439613934 +11 +127.443487339902 +21 +-280.29408 +31 +2030.58313313969 +12 +149.837907551873 +22 +-280.29408 +32 +2003.29545315791 +13 +149.837907551873 +23 +-280.29408 +33 +2003.29545315791 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.73980966547 +20 +-280.29408 +30 +2013.4439613934 +11 +149.837907551873 +21 +-280.29408 +31 +2003.29545315791 +12 +166.478462984219 +22 +-280.29408 +32 +1972.1631636449 +13 +166.478462984219 +23 +-280.29408 +33 +1972.1631636449 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.73980966547 +20 +-280.29408 +30 +2013.4439613934 +11 +166.478462984219 +21 +-280.29408 +31 +1972.1631636449 +12 +176.725666423806 +22 +-280.29408 +32 +1938.38266102747 +13 +176.725666423806 +23 +-280.29408 +33 +1938.38266102747 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.73980966547 +20 +-280.29408 +30 +2013.4439613934 +11 +176.725666423806 +21 +-280.29408 +31 +1938.38266102747 +12 +180.185723589149 +22 +-280.29408 +32 +1903.25211107687 +13 +180.185723589149 +23 +-280.29408 +33 +1903.25211107687 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.73980966547 +20 +-280.29408 +30 +2013.4439613934 +11 +180.185723589149 +21 +-280.29408 +31 +1903.25211107687 +12 +221.73980966547 +22 +-280.29408 +32 +1435.59863370269 +13 +221.73980966547 +23 +-280.29408 +33 +1435.59863370269 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +100.141825844156 +20 +-280.29408 +30 +1720.56410006505 +11 +100.155807358117 +21 +-280.29408 +31 +1753.52666880208 +12 +69.3272894690769 +22 +-280.29408 +32 +1737.04848268553 +13 +69.3272894690769 +23 +-280.29408 +33 +1737.04848268553 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-280.29408 +30 +1753.52666880208 +11 +100.141825844156 +21 +-280.29408 +31 +1720.56410006505 +12 +127.425692248039 +22 +-280.29408 +32 +1698.17280957558 +13 +127.425692248039 +23 +-280.29408 +33 +1698.17280957558 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-280.29408 +30 +1753.52666880208 +11 +127.425692248039 +21 +-280.29408 +31 +1698.17280957558 +12 +127.443487339902 +22 +-280.29408 +32 +1775.92108901406 +13 +127.443487339902 +23 +-280.29408 +33 +1775.92108901406 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +127.443487339902 +20 +-280.29408 +30 +1775.92108901406 +11 +127.425692248039 +21 +-280.29408 +31 +1698.17280957558 +12 +149.816982737509 +22 +-280.29408 +32 +1670.8889431717 +13 +149.816982737509 +23 +-280.29408 +33 +1670.8889431717 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +127.443487339902 +20 +-280.29408 +30 +1775.92108901406 +11 +149.816982737509 +21 +-280.29408 +31 +1670.8889431717 +12 +149.837907551873 +22 +-280.29408 +32 +1803.20876899584 +13 +149.837907551873 +23 +-280.29408 +33 +1803.20876899584 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +149.837907551873 +20 +-280.29408 +30 +1803.20876899584 +11 +149.816982737509 +21 +-280.29408 +31 +1670.8889431717 +12 +166.455212576234 +22 +-280.29408 +32 +1639.76100453833 +13 +166.455212576234 +23 +-280.29408 +33 +1639.76100453833 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +149.837907551873 +20 +-280.29408 +30 +1803.20876899584 +11 +166.455212576234 +21 +-280.29408 +31 +1639.76100453833 +12 +166.478462984219 +22 +-280.29408 +32 +1834.34105850885 +13 +166.478462984219 +23 +-280.29408 +33 +1834.34105850885 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +166.478462984219 +20 +-280.29408 +30 +1834.34105850885 +11 +166.455212576234 +21 +-280.29408 +31 +1639.76100453833 +12 +176.700983922341 +22 +-280.29408 +32 +1605.98522290042 +13 +176.700983922341 +23 +-280.29408 +33 +1605.98522290042 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +166.478462984219 +20 +-280.29408 +30 +1834.34105850885 +11 +176.700983922341 +21 +-280.29408 +31 +1605.98522290042 +12 +176.725666423806 +22 +-280.29408 +32 +1868.12156112628 +13 +176.725666423806 +23 +-280.29408 +33 +1868.12156112628 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +176.725666423806 +20 +-280.29408 +30 +1868.12156112628 +11 +176.700983922341 +21 +-280.29408 +31 +1605.98522290042 +12 +180.160557528893 +22 +-280.29408 +32 +1570.85958260462 +13 +180.160557528893 +23 +-280.29408 +33 +1570.85958260462 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +176.725666423806 +20 +-280.29408 +30 +1868.12156112628 +11 +180.160557528893 +21 +-280.29408 +31 +1570.85958260462 +12 +180.185723589149 +22 +-280.29408 +32 +1903.25211107687 +13 +180.185723589149 +23 +-280.29408 +33 +1903.25211107687 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +453.575559198051 +20 +-733.364267924859 +30 +77.3359522782304 +11 +454.431270729568 +21 +-719.25912090813 +31 +98.9086120013344 +12 +454.431263343628 +22 +-730.119576764422 +32 +76.0575414220674 +13 +454.431263343628 +23 +-730.119576764422 +33 +76.0575414220674 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431270729568 +20 +-719.25912090813 +30 +98.9086120013344 +11 +453.575559198051 +21 +-733.364267924859 +31 +77.3359522782304 +12 +453.575566723046 +22 +-722.299342389133 +32 +100.617239704551 +13 +453.575566723046 +23 +-722.299342389133 +33 +100.617239704551 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +813.09098561462 +20 +-692.336726612815 +30 +-1.92750349015114e-10 +11 +794.401547685759 +21 +-720.307447118137 +31 +23.3578380791593 +12 +794.401547685756 +22 +-720.307447118133 +32 +-2.12061479487602e-10 +13 +794.401547685756 +23 +-720.307447118133 +33 +-2.12061479487602e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +794.401547685759 +20 +-720.307447118137 +30 +23.3578380791593 +11 +813.09098561462 +21 +-692.336726612815 +31 +-1.92750349015114e-10 +12 +813.090985614623 +22 +-692.336726612819 +32 +23.3578380791782 +13 +813.090985614623 +23 +-692.336726612819 +33 +23.3578380791782 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642038802113 +20 +-579.415028713919 +30 +219.67849237548 +11 +473.10173725466 +21 +-608.824016722648 +31 +217.993091128508 +12 +473.642053400866 +22 +-608.036762247305 +32 +214.756927441262 +13 +473.642053400866 +23 +-608.036762247305 +33 +214.756927441262 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.10173725466 +20 +-608.824016722648 +30 +217.993091128508 +11 +473.642038802113 +21 +-579.415028713919 +31 +219.67849237548 +12 +473.101722427237 +22 +-579.753960348852 +32 +222.99174608133 +13 +473.101722427237 +23 +-579.753960348852 +33 +222.99174608133 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024166993188 +20 +-635.678245979518 +30 +51.9354404084483 +11 +767.829328484993 +21 +-662.181333229905 +31 +49.2897100106075 +12 +779.024163430099 +22 +-640.917494008958 +32 +40.9117386331972 +13 +779.024163430099 +23 +-640.917494008958 +33 +40.9117386331972 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829328484993 +20 +-662.181333229905 +30 +49.2897100106075 +11 +779.024166993188 +21 +-635.678245979518 +31 +51.9354404084483 +12 +767.829332959368 +22 +-655.602108768076 +32 +63.1328050448759 +13 +767.829332959368 +23 +-655.602108768076 +33 +63.1328050448759 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024169157982 +20 +-611.764971197169 +30 +79.3631234201936 +11 +767.829336589646 +21 +-637.125515922866 +31 +87.5029285374647 +12 +779.024169884095 +22 +-620.964740882273 +32 +71.3421534984996 +13 +779.024169884095 +23 +-620.964740882273 +33 +71.3421534984996 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829336589646 +20 +-637.125515922866 +30 +87.5029285374647 +11 +779.024169157982 +21 +-611.764971197169 +31 +79.3631234201936 +12 +767.829335677824 +22 +-625.572837100386 +32 +97.5753208387769 +13 +767.829335677824 +23 +-625.572837100386 +33 +97.5753208387769 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471125884842 +20 +-695.789522350054 +30 +146.166934958744 +11 +452.247013852634 +21 +-673.811261880626 +31 +161.200429262907 +12 +452.247015413237 +22 +-693.583909707096 +32 +143.961322316008 +13 +452.247015413237 +23 +-693.583909707096 +33 +143.961322316008 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247013852634 +20 +-673.811261880626 +30 +161.200429262907 +11 +450.471125884842 +21 +-695.789522350054 +31 +146.166934958744 +12 +450.471124298894 +22 +-675.695750953173 +32 +163.686018751541 +13 +450.471124298894 +23 +-675.695750953173 +33 +163.686018751541 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +847.545902396357 +20 +-186.86272 +30 +3.60955709766131e-13 +11 +806.270901222104 +21 +56.1856515498016 +31 +1.46187062455283e-11 +12 +847.545902396362 +22 +56.1856515498016 +32 +1.46187062455283e-11 +13 +847.545902396362 +23 +56.1856515498016 +33 +1.46187062455283e-11 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +806.270901222104 +20 +56.1856515498016 +30 +1.46187062455283e-11 +11 +847.545902396357 +21 +-186.86272 +31 +3.60955709766131e-13 +12 +700.992216732393 +22 +-563.749226612815 +32 +-1.11896270027501e-11 +13 +700.992216732393 +23 +-563.749226612815 +33 +-1.11896270027501e-11 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +700.992216732393 +20 +-563.749226612815 +30 +-1.11896270027501e-11 +11 +847.545902396357 +21 +-186.86272 +31 +3.60955709766131e-13 +12 +847.545902396357 +22 +-563.749226612815 +32 +1.80477854883065e-13 +13 +847.545902396357 +23 +-563.749226612815 +33 +1.80477854883065e-13 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +700.992216732393 +20 +-563.749226612815 +30 +-1.11896270027501e-11 +11 +847.545902396357 +21 +-563.749226612815 +31 +1.80477854883065e-13 +12 +843.130722681614 +22 +-608.45291709122 +32 +-4.11489509133389e-11 +13 +843.130722681614 +23 +-608.45291709122 +33 +-4.11489509133389e-11 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +700.992216732393 +20 +-563.749226612815 +30 +-1.11896270027501e-11 +11 +843.130722681614 +21 +-608.45291709122 +31 +-4.11489509133389e-11 +12 +698.091838084213 +22 +-577.37232127131 +32 +-1.01067598734517e-11 +13 +698.091838084213 +23 +-577.37232127131 +33 +-1.01067598734517e-11 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +698.091838084213 +20 +-577.37232127131 +30 +-1.01067598734517e-11 +11 +843.130722681614 +21 +-608.45291709122 +31 +-4.11489509133389e-11 +12 +693.784141830299 +22 +-590.617873632807 +32 +-9.20437059903634e-12 +13 +693.784141830299 +23 +-590.617873632807 +33 +-9.20437059903634e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +693.784141830299 +20 +-590.617873632807 +30 +-9.20437059903634e-12 +11 +843.130722681614 +21 +-608.45291709122 +31 +-4.11489509133389e-11 +12 +688.116269958089 +22 +-603.340928801176 +32 +-8.48245917950408e-12 +13 +688.116269958089 +23 +-603.340928801176 +33 +-8.48245917950408e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +688.116269958089 +20 +-603.340928801176 +30 +-8.48245917950408e-12 +11 +843.130722681614 +21 +-608.45291709122 +31 +-4.11489509133389e-11 +12 +681.150249762187 +22 +-615.402249914861 +32 +-7.58006990508875e-12 +13 +681.150249762187 +23 +-615.402249914861 +33 +-7.58006990508875e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +681.150249762187 +20 +-615.402249914861 +30 +-7.58006990508875e-12 +11 +843.130722681614 +21 +-608.45291709122 +31 +-4.11489509133389e-11 +12 +838.782876772249 +22 +-630.311014537056 +32 +-1.18393472803291e-10 +13 +838.782876772249 +23 +-630.311014537056 +33 +-1.18393472803291e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +681.150249762187 +20 +-615.402249914861 +30 +-7.58006990508875e-12 +11 +838.782876772249 +21 +-630.311014537056 +31 +-1.18393472803291e-10 +12 +672.962315038389 +22 +-626.669841908538 +32 +-6.49720277579036e-12 +13 +672.962315038389 +23 +-626.669841908538 +33 +-6.49720277579036e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +672.962315038389 +20 +-626.669841908538 +30 +-6.49720277579036e-12 +11 +838.782876772249 +21 +-630.311014537056 +31 +-1.18393472803291e-10 +12 +663.642071806514 +22 +-637.020396022971 +32 +-5.59481350137503e-12 +13 +663.642071806514 +23 +-637.020396022971 +33 +-5.59481350137503e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +663.642071806514 +20 +-637.020396022971 +30 +-5.59481350137503e-12 +11 +838.782876772249 +21 +-630.311014537056 +31 +-1.18393472803291e-10 +12 +827.969621169947 +22 +-662.165838331307 +32 +-1.61527680120344e-10 +13 +827.969621169947 +23 +-662.165838331307 +33 +-1.61527680120344e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +663.642071806514 +20 +-637.020396022971 +30 +-5.59481350137503e-12 +11 +827.969621169947 +21 +-662.165838331307 +31 +-1.61527680120344e-10 +12 +653.29151769208 +22 +-646.340639254847 +32 +-4.51194637207664e-12 +13 +653.29151769208 +23 +-646.340639254847 +33 +-4.51194637207664e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +653.29151769208 +20 +-646.340639254847 +30 +-4.51194637207664e-12 +11 +827.969621169947 +21 +-662.165838331307 +31 +-1.61527680120344e-10 +12 +642.023925698404 +22 +-654.528573978645 +32 +-3.60955709766131e-12 +13 +642.023925698404 +23 +-654.528573978645 +33 +-3.60955709766131e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +642.023925698404 +20 +-654.528573978645 +30 +-3.60955709766131e-12 +11 +827.969621169947 +21 +-662.165838331307 +31 +-1.61527680120344e-10 +12 +629.962604584718 +22 +-661.494594174547 +32 +-2.52668996836292e-12 +13 +629.962604584718 +23 +-661.494594174547 +33 +-2.52668996836292e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +629.962604584718 +20 +-661.494594174547 +30 +-2.52668996836292e-12 +11 +827.969621169947 +21 +-662.165838331307 +31 +-1.61527680120344e-10 +12 +617.23954941635 +22 +-667.162466046757 +32 +-1.62430069394759e-12 +13 +617.23954941635 +23 +-667.162466046757 +33 +-1.62430069394759e-12 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +617.23954941635 +20 +-667.162466046757 +30 +-1.62430069394759e-12 +11 +827.969621169947 +21 +-662.165838331307 +31 +-1.61527680120344e-10 +12 +813.09098561462 +22 +-692.336726612815 +32 +-1.92750349015114e-10 +13 +813.09098561462 +23 +-692.336726612815 +33 +-1.92750349015114e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +617.23954941635 +20 +-667.162466046757 +30 +-1.62430069394759e-12 +11 +813.09098561462 +21 +-692.336726612815 +31 +-1.92750349015114e-10 +12 +603.993997054853 +22 +-671.470162300671 +32 +-5.41433564649196e-13 +13 +603.993997054853 +23 +-671.470162300671 +33 +-5.41433564649196e-13 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +603.993997054853 +20 +-671.470162300671 +30 +-5.41433564649196e-13 +11 +813.09098561462 +21 +-692.336726612815 +31 +-1.92750349015114e-10 +12 +590.370902396357 +22 +-674.370540948851 +32 +1.80477854883065e-13 +13 +590.370902396357 +23 +-674.370540948851 +33 +1.80477854883065e-13 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +590.370902396357 +20 +-674.370540948851 +30 +1.80477854883065e-13 +11 +813.09098561462 +21 +-692.336726612815 +31 +-1.92750349015114e-10 +12 +0.000467548731318024 +22 +-674.370540948851 +32 +1.80477854883065e-13 +13 +0.000467548731318024 +23 +-674.370540948851 +33 +1.80477854883065e-13 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731318024 +20 +-674.370540948851 +30 +1.80477854883065e-13 +11 +813.09098561462 +21 +-692.336726612815 +31 +-1.92750349015114e-10 +12 +0.000467548731319434 +22 +-820.924226612815 +32 +1.80477854883065e-13 +13 +0.000467548731319434 +23 +-820.924226612815 +33 +1.80477854883065e-13 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731319434 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +813.09098561462 +21 +-692.336726612815 +31 +-1.92750349015114e-10 +12 +794.401547685756 +22 +-720.307447118133 +32 +-2.12061479487602e-10 +13 +794.401547685756 +23 +-720.307447118133 +33 +-2.12061479487602e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731319434 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +794.401547685756 +21 +-720.307447118133 +31 +-2.12061479487602e-10 +12 +772.221088848008 +22 +-745.599413064465 +32 +-2.18378204408509e-10 +13 +772.221088848008 +23 +-745.599413064465 +33 +-2.18378204408509e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731319434 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +772.221088848008 +21 +-745.599413064465 +31 +-2.18378204408509e-10 +12 +746.929122901675 +22 +-767.779871902213 +32 +-2.12061479487602e-10 +13 +746.929122901675 +23 +-767.779871902213 +33 +-2.12061479487602e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731319434 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +746.929122901675 +21 +-767.779871902213 +31 +-2.12061479487602e-10 +12 +718.958402396357 +22 +-786.469309831078 +32 +-1.92750349015114e-10 +13 +718.958402396357 +23 +-786.469309831078 +33 +-1.92750349015114e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731319434 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +718.958402396357 +21 +-786.469309831078 +31 +-1.92750349015114e-10 +12 +688.787514114849 +22 +-801.347945386405 +32 +-1.61527680120344e-10 +13 +688.787514114849 +23 +-801.347945386405 +33 +-1.61527680120344e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731319434 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +688.787514114849 +21 +-801.347945386405 +31 +-1.61527680120344e-10 +12 +656.932690320598 +22 +-812.161200988706 +32 +-1.18393472803291e-10 +13 +656.932690320598 +23 +-812.161200988706 +33 +-1.18393472803291e-10 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731319434 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +656.932690320598 +21 +-812.161200988706 +31 +-1.18393472803291e-10 +12 +623.938975880549 +22 +-818.724058836624 +32 +-6.38891606286052e-11 +13 +623.938975880549 +23 +-818.724058836624 +33 +-6.38891606286052e-11 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731319434 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +623.938975880549 +21 +-818.724058836624 +31 +-6.38891606286052e-11 +12 +590.370902396357 +22 +-820.924226612815 +32 +1.80477854883065e-13 +13 +590.370902396357 +23 +-820.924226612815 +33 +1.80477854883065e-13 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +69.0138872107921 +20 +-280.29408 +30 +1404.51683530547 +11 +100.141825844157 +21 +-186.86272 +31 +1421.1550651442 +12 +69.0138872107926 +22 +-186.86272 +32 +1404.51683530547 +13 +69.0138872107926 +23 +-186.86272 +33 +1404.51683530547 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.141825844157 +20 +-186.86272 +30 +1421.1550651442 +11 +69.0138872107921 +21 +-280.29408 +31 +1404.51683530547 +12 +100.141825844156 +22 +-280.29408 +32 +1421.1550651442 +13 +100.141825844156 +23 +-280.29408 +33 +1421.1550651442 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546345594915 +20 +-599.640891643383 +30 +180.244333371467 +11 +602.133267369982 +21 +-575.898750159264 +31 +185.30549023988 +12 +623.546333434853 +22 +-575.80035767001 +32 +184.343761377095 +13 +623.546333434853 +23 +-575.80035767001 +33 +184.343761377095 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133267369982 +20 +-575.898750159264 +30 +185.30549023988 +11 +623.546345594915 +21 +-599.640891643383 +31 +180.244333371467 +12 +602.133279596418 +22 +-599.869415774734 +32 +181.183685835358 +13 +602.133279596418 +23 +-599.869415774734 +33 +181.183685835358 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721732248607 +20 +-744.352283565408 +30 +81.6652408886482 +11 +448.282012434797 +21 +-730.404696521621 +31 +105.17251147419 +12 +448.282004539076 +22 +-742.014746414944 +32 +80.7442486966709 +13 +448.282004539076 +23 +-742.014746414944 +33 +80.7442486966709 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282012434797 +20 +-730.404696521621 +30 +105.17251147419 +11 +445.721732248607 +21 +-744.352283565408 +31 +81.6652408886482 +12 +445.721740244506 +22 +-732.59492990622 +32 +106.403439896738 +13 +445.721740244506 +23 +-732.59492990622 +33 +106.403439896738 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677481847252 +20 +-580.392895076207 +30 +229.237696767784 +11 +468.840142428527 +21 +-610.976425980055 +31 +226.840985547634 +12 +470.677497105752 +22 +-610.308103138718 +32 +224.093716273781 +13 +470.677497105752 +23 +-610.308103138718 +33 +224.093716273781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840142428527 +20 +-610.976425980055 +30 +226.840985547634 +11 +470.677481847252 +21 +-580.392895076207 +31 +229.237696767784 +12 +468.840126975903 +22 +-580.680624318909 +32 +232.050409880217 +13 +468.840126975903 +23 +-580.680624318909 +33 +232.050409880217 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.00721584731 +20 +-595.005500745675 +30 +23.3578380039372 +11 +787.130186503031 +21 +-618.467587074047 +31 +32.066456918151 +12 +791.767077835926 +22 +-596.364536149864 +32 +23.3578380035618 +13 +791.767077835926 +23 +-596.364536149864 +33 +23.3578380035618 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130186503031 +20 +-618.467587074047 +30 +32.066456918151 +11 +792.00721584731 +21 +-595.005500745675 +31 +23.3578380039372 +12 +792.007217306199 +22 +-592.860317128213 +32 +27.8714369630177 +13 +792.007217306199 +23 +-592.860317128213 +33 +27.8714369630177 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +787.130186503031 +20 +-618.467587074047 +30 +32.066456918151 +11 +792.007217306199 +21 +-592.860317128213 +31 +27.8714369630177 +12 +787.130189104003 +22 +-614.643057664062 +32 +40.1135032517926 +13 +787.130189104003 +23 +-614.643057664062 +33 +40.1135032517926 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222195872847 +20 +-549.595394709904 +30 +241.116069017578 +11 +461.269937419119 +21 +-186.86272 +31 +239.686382351025 +12 +458.222195872847 +22 +-186.86272 +32 +241.116069017578 +13 +458.222195872847 +23 +-186.86272 +33 +241.116069017578 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269937419119 +20 +-186.86272 +30 +239.686382351025 +11 +458.222195872847 +21 +-549.595394709904 +31 +241.116069017578 +12 +461.269937419119 +22 +-549.571376162653 +32 +239.686382351024 +13 +461.269937419119 +23 +-549.571376162653 +33 +239.686382351024 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997695535365 +20 +-679.337949441333 +30 +100.317732616843 +11 +717.894073612081 +21 +-705.391608581792 +31 +91.1148940822994 +12 +736.997691839832 +22 +-690.762816990611 +32 +82.8933973835911 +13 +736.997691839832 +23 +-690.762816990611 +33 +82.8933973835911 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894073612081 +20 +-705.391608581792 +30 +91.1148940822994 +11 +736.997695535365 +21 +-679.337949441333 +31 +100.317732616843 +12 +717.894077714131 +22 +-692.709977485149 +32 +110.455949073024 +13 +717.894077714131 +23 +-692.709977485149 +33 +110.455949073024 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576412075941 +20 +-604.820821451585 +30 +70.2039737536023 +11 +760.201826420081 +21 +-585.915972100795 +31 +58.2231849183613 +12 +760.20182781144 +22 +-592.476194788978 +32 +53.921748202446 +13 +760.20182781144 +23 +-592.476194788978 +33 +53.921748202446 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201826420081 +20 +-585.915972100795 +30 +58.2231849183613 +11 +753.576412075941 +21 +-604.820821451585 +31 +70.2039737536023 +12 +753.576410189591 +22 +-595.926735646398 +32 +76.0356884766169 +13 +753.576410189591 +23 +-595.926735646398 +33 +76.0356884766169 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431240478811 +20 +-576.627625779333 +30 +192.429880890276 +11 +454.797637205561 +21 +-548.733344026199 +31 +189.801126938624 +12 +454.797653593913 +22 +-576.264066422956 +32 +188.875875742312 +13 +454.797653593913 +23 +-576.264066422956 +33 +188.875875742312 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797637205561 +20 +-548.733344026199 +30 +189.801126938624 +11 +454.431240478811 +21 +-576.627625779333 +31 +192.429880890276 +12 +454.431223909685 +22 +-548.793220154026 +32 +193.36533825795 +13 +454.431223909685 +23 +-548.793220154026 +33 +193.36533825795 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690596528004 +20 +-606.087584234742 +30 +206.744381898986 +11 +436.335587191701 +21 +-578.704166932226 +31 +212.72919754513 +12 +439.690582495428 +22 +-578.575873947693 +32 +211.475076092305 +13 +439.690582495428 +23 +-578.575873947693 +33 +211.475076092305 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335587191701 +20 +-578.704166932226 +30 +212.72919754513 +11 +439.690596528004 +21 +-606.087584234742 +31 +206.744381898986 +12 +436.335601310833 +22 +-606.385574583813 +32 +207.969323546969 +13 +436.335601310833 +23 +-606.385574583813 +33 +207.969323546969 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839452384975 +20 +-578.401495960111 +30 +209.770445440443 +11 +439.690564957562 +21 +-549.114088023756 +31 +212.46522637891 +12 +442.839434933817 +22 +-549.08536836124 +32 +210.755700449054 +13 +442.839434933817 +23 +-549.08536836124 +33 +210.755700449054 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690564957562 +20 +-549.114088023756 +30 +212.46522637891 +11 +442.839452384975 +21 +-578.401495960111 +31 +209.770445440443 +12 +439.690582495428 +22 +-578.575873947693 +32 +211.475076092305 +13 +439.690582495428 +23 +-578.575873947693 +33 +211.475076092305 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758783079627 +20 +-601.140380260496 +30 +186.408417229293 +11 +717.894066860413 +21 +-619.848757614325 +31 +165.696830164561 +12 +717.894057585081 +22 +-597.802053886837 +32 +172.685609040578 +13 +717.894057585081 +23 +-597.802053886837 +33 +172.685609040578 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894066860413 +20 +-619.848757614325 +30 +165.696830164561 +11 +696.758783079627 +21 +-601.140380260496 +31 +186.408417229293 +12 +696.758793128571 +22 +-625.025897634329 +32 +178.836736613072 +13 +696.758793128571 +23 +-625.025897634329 +33 +178.836736613072 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.64207352602 +20 +-743.137302565856 +30 +112.328325554405 +11 +473.101749084159 +21 +-758.702384848233 +31 +87.3191803898169 +12 +473.642065047928 +22 +-755.603683334388 +32 +86.0982896720056 +13 +473.642065047928 +23 +-755.603683334388 +33 +86.0982896720056 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101749084159 +20 +-758.702384848233 +30 +87.3191803898169 +11 +473.64207352602 +21 +-743.137302565856 +31 +112.328325554405 +12 +473.101757695049 +22 +-746.04073417303 +32 +113.960076228591 +13 +473.101757695049 +23 +-746.04073417303 +33 +113.960076228591 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +656.932690320598 +20 +-812.161200988706 +30 +-1.18393472803291e-10 +11 +623.938975880552 +21 +-818.724058836629 +31 +23.3578380793071 +12 +623.938975880549 +22 +-818.724058836624 +32 +-6.38891606286052e-11 +13 +623.938975880549 +23 +-818.724058836624 +33 +-6.38891606286052e-11 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.938975880552 +20 +-818.724058836629 +30 +23.3578380793071 +11 +656.932690320598 +21 +-812.161200988706 +31 +-1.18393472803291e-10 +12 +656.932690320601 +22 +-812.16120098871 +32 +23.3578380792528 +13 +656.932690320601 +23 +-812.16120098871 +33 +23.3578380792528 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107168359226 +20 +-580.08201644067 +30 +226.198682483658 +11 +470.677497105752 +21 +-610.308103138718 +31 +224.093716273781 +12 +472.107183407982 +22 +-609.586009613252 +32 +221.125411221167 +13 +472.107183407982 +23 +-609.586009613252 +33 +221.125411221167 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677497105752 +20 +-610.308103138718 +30 +224.093716273781 +11 +472.107168359226 +21 +-580.08201644067 +31 +226.198682483658 +12 +470.677481847252 +22 +-580.392895076207 +32 +229.237696767784 +13 +470.677481847252 +23 +-580.392895076207 +33 +229.237696767784 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267737950976 +20 +-578.813572557816 +30 +213.798663854844 +11 +0.0162469754877819 +21 +-549.153365442471 +31 +214.795486963908 +12 +429.26772029492 +22 +-549.153237717187 +32 +214.795486963908 +13 +429.26772029492 +23 +-549.153237717187 +33 +214.795486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0162469754877819 +20 +-549.153365442471 +30 +214.795486963908 +11 +429.267737950976 +21 +-578.813572557816 +31 +213.798663854844 +12 +0.0162646316092562 +22 +-578.813809543233 +32 +213.798660182835 +13 +0.0162646316092562 +23 +-578.813809543233 +33 +213.798660182835 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630414711229 +20 +-778.937031754263 +30 +61.9555523461604 +11 +464.090775113584 +21 +-771.603559996758 +31 +92.4022555870175 +12 +464.090762524528 +22 +-781.089165318495 +32 +62.4790981961044 +13 +464.090762524528 +23 +-781.089165318495 +33 +62.4790981961044 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090775113584 +20 +-771.603559996758 +30 +92.4022555870175 +11 +466.630414711229 +21 +-778.937031754263 +31 +61.9555523461604 +12 +466.630427178961 +22 +-769.542842319152 +32 +91.5903304644009 +13 +466.630427178961 +23 +-769.542842319152 +33 +91.5903304644009 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797666066761 +20 +-600.71783565349 +30 +184.671000694682 +11 +454.667736501664 +21 +-575.898831573499 +31 +185.305488978394 +12 +454.667748728094 +22 +-599.869484727166 +32 +181.183686716704 +13 +454.667748728094 +23 +-599.869484727166 +33 +181.183686716704 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667736501664 +20 +-575.898831573499 +30 +185.305488978394 +11 +454.797666066761 +21 +-600.71783565349 +31 +184.671000694682 +12 +454.797653593913 +22 +-576.264066422956 +32 +188.875875742312 +13 +454.797653593913 +23 +-576.264066422956 +33 +188.875875742312 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130189104003 +20 +-614.643057664062 +30 +40.1135032517926 +11 +779.024163430099 +21 +-640.917494008958 +31 +40.9117386331972 +12 +787.130186503031 +22 +-618.467587074047 +32 +32.066456918151 +13 +787.130186503031 +23 +-618.467587074047 +33 +32.066456918151 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024163430099 +20 +-640.917494008958 +30 +40.9117386331972 +11 +787.130189104003 +21 +-614.643057664062 +31 +40.1135032517926 +12 +779.024166993188 +22 +-635.678245979518 +32 +51.9354404084483 +13 +779.024166993188 +23 +-635.678245979518 +33 +51.9354404084483 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997677401125 +20 +-706.00295242646 +30 +44.2129177479029 +11 +717.894066860413 +21 +-715.319417548222 +31 +70.2261702210487 +12 +717.894057585081 +22 +-722.308196422019 +32 +48.1794664928565 +13 +717.894057585081 +23 +-722.308196422019 +33 +48.1794664928565 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894066860413 +20 +-715.319417548222 +30 +70.2261702210487 +11 +736.997677401125 +21 +-706.00295242646 +31 +44.2129177479029 +12 +736.997685757261 +22 +-699.706769202407 +32 +64.0747689619352 +13 +736.997685757261 +23 +-699.706769202407 +33 +64.0747689619352 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466031085639 +20 +-547.618544534505 +30 +123.445905477124 +11 +744.275027999012 +21 +-186.86272 +31 +105.557438942816 +12 +744.275027999012 +22 +-547.318028491407 +32 +105.557438942816 +13 +744.275027999012 +23 +-547.318028491407 +33 +105.557438942816 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275027999012 +20 +-186.86272 +30 +105.557438942816 +11 +732.466031085639 +21 +-547.618544534505 +31 +123.445905477124 +12 +732.466031085639 +22 +-186.86272 +32 +123.445905477124 +13 +732.466031085639 +23 +-186.86272 +33 +123.445905477124 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683316658874 +20 +-785.765920539638 +30 +63.616807647956 +11 +448.317768339636 +21 +-776.152256350036 +31 +94.1944509495159 +12 +448.317755482775 +22 +-785.839646973143 +32 +63.6347444795237 +13 +448.317755482775 +23 +-785.839646973143 +33 +63.6347444795237 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317768339636 +20 +-776.152256350036 +30 +94.1944509495159 +11 +451.683316658874 +21 +-785.765920539638 +31 +63.616807647956 +12 +451.683329511579 +22 +-776.081661498503 +32 +94.1666352734205 +13 +451.683329511579 +23 +-776.081661498503 +33 +94.1666352734205 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332897960916 +20 +-669.009252539392 +30 +119.38666515078 +11 +702.221360398304 +21 +-673.696700650341 +31 +96.0407362022104 +12 +684.332896682708 +22 +-683.128909470703 +32 +103.191916498769 +13 +684.332896682708 +23 +-683.128909470703 +33 +103.191916498769 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221360398304 +20 +-673.696700650341 +30 +96.0407362022104 +11 +684.332897960916 +21 +-669.009252539392 +31 +119.38666515078 +12 +702.221361580333 +22 +-660.639487120937 +32 +111.016899733167 +13 +702.221361580333 +23 +-660.639487120937 +33 +111.016899733167 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636242951136 +20 +-598.733544865996 +30 +176.514545976725 +11 +623.546333434853 +21 +-575.80035767001 +31 +184.343761377095 +12 +644.636231054623 +22 +-575.409716284687 +32 +180.525125445771 +13 +644.636231054623 +23 +-575.409716284687 +33 +180.525125445771 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546333434853 +20 +-575.80035767001 +30 +184.343761377095 +11 +644.636242951136 +21 +-598.733544865996 +31 +176.514545976725 +12 +623.546345594915 +22 +-599.640891643383 +32 +180.244333371467 +13 +623.546345594915 +23 +-599.640891643383 +33 +180.244333371467 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677497105752 +20 +-610.308103138718 +30 +224.093716273781 +11 +468.84015475682 +21 +-640.279768170507 +31 +217.551860904389 +12 +470.677509279169 +22 +-639.24331958749 +32 +214.92128705308 +13 +470.677509279169 +23 +-639.24331958749 +33 +214.92128705308 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.84015475682 +20 +-640.279768170507 +30 +217.551860904389 +11 +470.677497105752 +21 +-610.308103138718 +31 +224.093716273781 +12 +468.840142428527 +22 +-610.976425980055 +32 +226.840985547634 +13 +468.840142428527 +23 +-610.976425980055 +33 +226.840985547634 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +2013.4439613934 +11 +221.73980966547 +21 +-280.29408 +31 +1435.59863370269 +12 +221.739809665471 +22 +-186.86272 +32 +1435.59863370269 +13 +221.739809665471 +23 +-186.86272 +33 +1435.59863370269 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +221.73980966547 +20 +-280.29408 +30 +1435.59863370269 +11 +221.739809665471 +21 +-186.86272 +31 +2013.4439613934 +12 +221.73980966547 +22 +-280.29408 +32 +2013.4439613934 +13 +221.73980966547 +23 +-280.29408 +33 +2013.4439613934 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +688.787514114849 +20 +-801.347945386405 +30 +-1.61527680120344e-10 +11 +656.932690320601 +21 +-812.16120098871 +31 +23.3578380792528 +12 +656.932690320598 +22 +-812.161200988706 +32 +-1.18393472803291e-10 +13 +656.932690320598 +23 +-812.161200988706 +33 +-1.18393472803291e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +656.932690320601 +20 +-812.16120098871 +30 +23.3578380792528 +11 +688.787514114849 +21 +-801.347945386405 +31 +-1.61527680120344e-10 +12 +688.787514114852 +22 +-801.347945386409 +32 +23.3578380792096 +13 +688.787514114852 +23 +-801.347945386409 +33 +23.3578380792096 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +176.725666423806 +20 +-280.29408 +30 +1938.38266102747 +11 +180.18572358915 +21 +-186.86272 +31 +1903.25211107687 +12 +180.185723589149 +22 +-280.29408 +32 +1903.25211107687 +13 +180.185723589149 +23 +-280.29408 +33 +1903.25211107687 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +180.18572358915 +20 +-186.86272 +30 +1903.25211107687 +11 +176.725666423806 +21 +-280.29408 +31 +1938.38266102747 +12 +176.725666423807 +22 +-186.86272 +32 +1938.38266102747 +13 +176.725666423807 +23 +-186.86272 +33 +1938.38266102747 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363090933403 +20 +-588.820775333035 +30 +135.766293848309 +11 +732.466044108445 +21 +-569.495501821011 +31 +122.710665747149 +12 +732.466052014781 +22 +-584.996349297051 +32 +120.045263691758 +13 +732.466052014781 +23 +-584.996349297051 +33 +120.045263691758 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466044108445 +20 +-569.495501821011 +30 +122.710665747149 +11 +718.363090933403 +21 +-588.820775333035 +31 +135.766293848309 +12 +718.363081916203 +22 +-571.142011532184 +32 +138.806193017976 +13 +718.363081916203 +23 +-571.142011532184 +33 +138.806193017976 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021391353748 +20 +-675.601700530057 +30 +125.979113140781 +11 +644.636263548619 +21 +-662.459295238253 +31 +146.227531781659 +12 +665.021389999784 +22 +-658.447133448378 +32 +140.935603497775 +13 +665.021389999784 +23 +-658.447133448378 +33 +140.935603497775 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636263548619 +20 +-662.459295238253 +30 +146.227531781659 +11 +665.021391353748 +21 +-675.601700530057 +31 +125.979113140781 +12 +644.636264956545 +22 +-680.297547066858 +32 +130.674959677109 +13 +644.636264956545 +23 +-680.297547066858 +33 +130.674959677109 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363090933403 +20 +-685.388881228845 +30 +39.1981879427727 +11 +732.466058322552 +21 +-664.91507027919 +31 +50.366817478493 +12 +732.466052014781 +22 +-669.667851071909 +32 +35.3737619083722 +13 +732.466052014781 +23 +-669.667851071909 +33 +35.3737619083722 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466058322552 +20 +-664.91507027919 +30 +50.366817478493 +11 +718.363090933403 +21 +-685.388881228845 +31 +39.1981879427727 +12 +718.363098127435 +22 +-679.968320245868 +32 +56.297813526916 +13 +718.363098127435 +23 +-679.968320245868 +33 +56.297813526916 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884111397057 +20 +-746.458660352302 +30 +82.4950785735168 +11 +624.955341833487 +21 +-738.830110282484 +31 +109.907610082888 +12 +624.955333552396 +22 +-751.006817642042 +32 +84.2870649622931 +13 +624.955333552396 +23 +-751.006817642042 +33 +84.2870649622931 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955341833487 +20 +-738.830110282484 +30 +109.907610082888 +11 +649.884111397057 +21 +-746.458660352302 +31 +82.4950785735168 +12 +649.884119483233 +22 +-734.56856186502 +32 +107.512580906988 +13 +649.884119483233 +23 +-734.56856186502 +33 +107.512580906988 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957358037872 +20 +-746.934060776874 +30 +54.170165314894 +11 +649.884111397057 +21 +-746.458660352302 +31 +82.4950785735168 +12 +649.884100288402 +22 +-754.828812255533 +32 +56.0907148781112 +13 +649.884100288402 +23 +-754.828812255533 +33 +56.0907148781112 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884111397057 +20 +-746.458660352302 +30 +82.4950785735168 +11 +673.957358037872 +21 +-746.934060776874 +31 +54.170165314894 +12 +673.957368701467 +22 +-738.899252779403 +32 +79.5166578326792 +13 +673.957368701467 +23 +-738.899252779403 +33 +79.5166578326792 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267771709642 +20 +-737.984763689194 +30 +109.432571697368 +11 +432.838940960221 +21 +-749.833439201604 +31 +83.824824767603 +12 +429.267763467221 +22 +-750.104609262675 +32 +83.9316672902124 +13 +429.267763467221 +23 +-750.104609262675 +33 +83.9316672902124 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838940960221 +20 +-749.833439201604 +30 +83.824824767603 +11 +429.267771709642 +21 +-737.984763689194 +31 +109.432571697368 +12 +432.838949191021 +22 +-737.730681730485 +32 +109.289774750901 +13 +432.838949191021 +23 +-737.730681730485 +33 +109.289774750901 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576407084801 +20 +-630.223630997654 +30 +36.698358790781 +11 +760.201826420081 +21 +-607.845772298605 +31 +36.2933847183422 +12 +760.201824130007 +22 +-611.213150017197 +32 +29.2082138072124 +13 +760.201824130007 +23 +-611.213150017197 +33 +29.2082138072124 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201826420081 +20 +-607.845772298605 +30 +36.2933847183422 +11 +753.576407084801 +21 +-630.223630997654 +31 +36.698358790781 +12 +753.576410189591 +22 +-625.658275857869 +32 +46.3041482621511 +13 +753.576410189591 +23 +-625.658275857869 +33 +46.3041482621511 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955304385432 +20 +-764.585289351978 +30 +23.3578379140486 +11 +599.602116671527 +21 +-765.945156978237 +31 +29.4490754688794 +12 +599.602113045565 +22 +-766.149870997149 +32 +23.3578379057383 +13 +599.602113045565 +23 +-766.149870997149 +33 +23.3578379057383 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602116671527 +20 +-765.945156978237 +30 +29.4490754688794 +11 +624.955304385432 +21 +-764.585289351978 +31 +23.3578379140486 +12 +624.955307916438 +22 +-764.38593632126 +32 +29.2895600085649 +13 +624.955307916438 +23 +-764.38593632126 +33 +29.2895600085649 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090775113584 +20 +-642.024842985963 +30 +221.980972610863 +11 +466.630436254431 +21 +-669.291160506739 +31 +206.575474706326 +12 +466.630427178961 +22 +-641.212917863139 +32 +219.920254933339 +13 +466.630427178961 +23 +-641.212917863139 +33 +219.920254933339 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630436254431 +20 +-669.291160506739 +30 +206.575474706326 +11 +464.090775113584 +21 +-642.024842985963 +31 +221.980972610863 +12 +464.090784277369 +22 +-670.376318084996 +32 +208.5063328654 +13 +464.090784277369 +23 +-670.376318084996 +33 +208.5063328654 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829335677824 +20 +-647.197908223015 +30 +75.9502497139702 +11 +753.73928554472 +21 +-674.070091498716 +31 +73.5119548557674 +12 +767.829332959368 +22 +-655.602108768076 +32 +63.1328050448759 +13 +767.829332959368 +23 +-655.602108768076 +33 +63.1328050448759 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73928554472 +20 +-674.070091498716 +30 +73.5119548557674 +11 +767.829335677824 +21 +-647.197908223015 +31 +75.9502497139702 +12 +753.73928877638 +22 +-664.079300898903 +32 +88.749145475747 +13 +753.73928877638 +23 +-664.079300898903 +33 +88.749145475747 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717772252345 +20 +-740.196478791399 +30 +110.675560324675 +11 +473.642065047928 +21 +-755.603683334388 +31 +86.0982896720056 +12 +473.717763908762 +22 +-752.465074828487 +32 +84.861675745457 +13 +473.717763908762 +23 +-752.465074828487 +33 +84.861675745457 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642065047928 +20 +-755.603683334388 +30 +86.0982896720056 +11 +473.717772252345 +21 +-740.196478791399 +31 +110.675560324675 +12 +473.64207352602 +22 +-743.137302565856 +32 +112.328325554405 +13 +473.64207352602 +23 +-743.137302565856 +33 +112.328325554405 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.00604998394 +20 +-549.612103415805 +30 +242.110623248711 +11 +458.222195872847 +21 +-186.86272 +31 +241.116069017578 +12 +455.00604998394 +22 +-186.86272 +32 +242.110623248711 +13 +455.00604998394 +23 +-186.86272 +33 +242.110623248711 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222195872847 +20 +-186.86272 +30 +241.116069017578 +11 +455.00604998394 +21 +-549.612103415805 +31 +242.110623248711 +12 +458.222195872847 +22 +-549.595394709904 +32 +241.116069017578 +13 +458.222195872847 +23 +-549.595394709904 +33 +241.116069017578 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-549.195745909472 +30 +217.326639240051 +11 +473.642038802113 +21 +-579.415028713919 +31 +219.67849237548 +12 +473.717738079349 +22 +-579.071732366754 +32 +216.322568521811 +13 +473.717738079349 +23 +-579.071732366754 +33 +216.322568521811 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642038802113 +20 +-579.415028713919 +30 +219.67849237548 +11 +473.71772029492 +21 +-549.195745909472 +31 +217.326639240051 +12 +473.642020846985 +22 +-549.252284780773 +32 +220.6922004252 +13 +473.642020846985 +23 +-549.252284780773 +33 +220.6922004252 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466052014781 +20 +-584.996349297051 +30 +120.045263691758 +11 +744.275040114523 +21 +-567.670823535761 +31 +104.873423184286 +12 +744.275046789786 +22 +-580.758079568763 +32 +102.623043056121 +13 +744.275046789786 +23 +-580.758079568763 +33 +102.623043056121 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275040114523 +20 +-567.670823535761 +30 +104.873423184286 +11 +732.466052014781 +21 +-584.996349297051 +31 +120.045263691758 +12 +732.466044108445 +22 +-569.495501821011 +32 +122.710665747149 +13 +732.466044108445 +23 +-569.495501821011 +33 +122.710665747149 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107183407982 +20 +-770.747998603796 +30 +59.9634222143927 +11 +470.677481847252 +21 +-778.860284147472 +31 +30.7703076765303 +12 +472.107168359226 +22 +-775.821269863314 +32 +30.4594290412997 +13 +472.107168359226 +23 +-775.821269863314 +33 +30.4594290412997 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677481847252 +20 +-778.860284147472 +30 +30.7703076765303 +11 +472.107183407982 +21 +-770.747998603796 +31 +59.9634222143927 +12 +470.677497105752 +22 +-773.716303656482 +32 +60.6855157395589 +13 +470.677497105752 +23 +-773.716303656482 +33 +60.6855157395589 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721721263973 +20 +-605.178251275471 +30 +203.006401057676 +11 +442.839452384975 +21 +-578.401495960111 +31 +209.770445440443 +12 +445.721707495526 +22 +-578.184382747044 +32 +207.648051313885 +13 +445.721707495526 +23 +-578.184382747044 +33 +207.648051313885 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839452384975 +20 +-578.401495960111 +30 +209.770445440443 +11 +445.721721263973 +21 +-605.178251275471 +31 +203.006401057676 +12 +442.839466299903 +22 +-605.682549578299 +32 +205.079413127562 +13 +442.839466299903 +23 +-605.682549578299 +33 +205.079413127562 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.71777732158 +20 +-684.199452771651 +30 +174.902174757415 +11 +473.642080404707 +21 +-708.127668368109 +31 +158.505080975556 +12 +473.717779021898 +22 +-705.742288168363 +32 +156.11970077605 +13 +473.717779021898 +23 +-705.742288168363 +33 +156.11970077605 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642080404707 +20 +-708.127668368109 +30 +158.505080975556 +11 +473.71777732158 +21 +-684.199452771651 +31 +174.902174757415 +12 +473.642078676977 +22 +-686.237536190199 +32 +177.590351345444 +13 +473.642078676977 +23 +-686.237536190199 +33 +177.590351345444 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839466299903 +20 +-605.682549578299 +30 +205.079413127562 +11 +439.690582495428 +21 +-578.575873947693 +31 +211.475076092305 +12 +442.839452384975 +22 +-578.401495960111 +32 +209.770445440443 +13 +442.839452384975 +23 +-578.401495960111 +33 +209.770445440443 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690582495428 +20 +-578.575873947693 +30 +211.475076092305 +11 +442.839466299903 +21 +-605.682549578299 +31 +205.079413127562 +12 +439.690596528004 +22 +-606.087584234742 +32 +206.744381898986 +13 +439.690596528004 +23 +-606.087584234742 +33 +206.744381898986 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101722427237 +20 +-579.753960348852 +30 +222.99174608133 +11 +472.107183407982 +21 +-609.586009613252 +31 +221.125411221167 +12 +473.10173725466 +22 +-608.824016722648 +32 +217.993091128508 +13 +473.10173725466 +23 +-608.824016722648 +33 +217.993091128508 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107183407982 +20 +-609.586009613252 +30 +221.125411221167 +11 +473.101722427237 +21 +-579.753960348852 +31 +222.99174608133 +12 +472.107168359226 +22 +-580.08201644067 +32 +226.198682483658 +13 +472.107168359226 +23 +-580.08201644067 +33 +226.198682483658 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840142428527 +20 +-610.976425980055 +30 +226.840985547634 +11 +466.630427178961 +21 +-641.212917863139 +31 +219.920254933339 +12 +468.84015475682 +22 +-640.279768170507 +32 +217.551860904389 +13 +468.84015475682 +23 +-640.279768170507 +33 +217.551860904389 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630427178961 +20 +-641.212917863139 +30 +219.920254933339 +11 +468.840142428527 +21 +-610.976425980055 +31 +226.840985547634 +12 +466.630414711229 +22 +-611.578139745845 +32 +229.314444371434 +13 +466.630414711229 +23 +-611.578139745845 +33 +229.314444371434 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107150072447 +20 +-549.362133988305 +30 +227.231114817978 +11 +470.677481847252 +21 +-580.392895076207 +31 +229.237696767784 +12 +472.107168359226 +22 +-580.08201644067 +32 +226.198682483658 +13 +472.107168359226 +23 +-580.08201644067 +33 +226.198682483658 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677481847252 +20 +-580.392895076207 +30 +229.237696767784 +11 +472.107150072447 +21 +-549.362133988305 +31 +227.231114817978 +12 +470.677463405893 +22 +-549.413334136112 +32 +230.27885636425 +13 +470.677463405893 +23 +-549.413334136112 +33 +230.27885636425 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007218281129 +20 +-589.846284379929 +30 +32.4682094668199 +11 +787.130189104003 +21 +-614.643057664062 +31 +40.1135032517926 +12 +792.007217306199 +22 +-592.860317128213 +32 +27.8714369630177 +13 +792.007217306199 +23 +-592.860317128213 +33 +27.8714369630177 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130189104003 +20 +-614.643057664062 +30 +40.1135032517926 +11 +792.007218281129 +21 +-589.846284379929 +31 +32.4682094668199 +12 +787.130190684252 +22 +-609.757662381006 +32 +47.5643349390529 +13 +787.130190684252 +23 +-609.757662381006 +33 +47.5643349390529 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130186503031 +20 +-618.467587074047 +30 +32.066456918151 +11 +779.024158535186 +21 +-644.605714246329 +31 +29.2769308468913 +12 +787.130182929858 +22 +-621.15990220955 +32 +23.5733173858747 +13 +787.130182929858 +23 +-621.15990220955 +33 +23.5733173858747 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024158535186 +20 +-644.605714246329 +30 +29.2769308468913 +11 +787.130186503031 +21 +-618.467587074047 +31 +32.066456918151 +12 +779.024163430099 +22 +-640.917494008958 +32 +40.9117386331972 +13 +779.024163430099 +23 +-640.917494008958 +33 +40.9117386331972 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +838.782876772249 +20 +-630.311014537056 +30 +-1.18393472803291e-10 +11 +827.96962116995 +21 +-662.165838331311 +31 +23.3578380792096 +12 +827.969621169947 +22 +-662.165838331307 +32 +-1.61527680120344e-10 +13 +827.969621169947 +23 +-662.165838331307 +33 +-1.61527680120344e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +827.96962116995 +20 +-662.165838331311 +30 +23.3578380792096 +11 +838.782876772249 +21 +-630.311014537056 +31 +-1.18393472803291e-10 +12 +838.782876772251 +22 +-630.31101453706 +32 +23.3578380792528 +13 +838.782876772251 +23 +-630.31101453706 +33 +23.3578380792528 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +127.443487339902 +20 +-280.29408 +30 +2030.58313313969 +11 +149.837907551873 +21 +-186.86272 +31 +2003.29545315791 +12 +149.837907551873 +22 +-280.29408 +32 +2003.29545315791 +13 +149.837907551873 +23 +-280.29408 +33 +2003.29545315791 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +149.837907551873 +20 +-186.86272 +30 +2003.29545315791 +11 +127.443487339902 +21 +-280.29408 +31 +2030.58313313969 +12 +127.443487339903 +22 +-186.86272 +32 +2030.58313313969 +13 +127.443487339903 +23 +-186.86272 +33 +2030.58313313969 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +123.089851596878 +20 +-186.862719999999 +30 +2224.76609686633 +11 +221.73980966547 +21 +-280.29408 +31 +2013.4439613934 +12 +221.739809665471 +22 +-186.86272 +32 +2013.4439613934 +13 +221.739809665471 +23 +-186.86272 +33 +2013.4439613934 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +221.73980966547 +20 +-280.29408 +30 +2013.4439613934 +11 +123.089851596878 +21 +-186.862719999999 +31 +2224.76609686633 +12 +123.089851596878 +22 +-280.294079999999 +32 +2224.76609686633 +13 +123.089851596878 +23 +-280.294079999999 +33 +2224.76609686633 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.10720415349 +20 +-748.850999084323 +30 +115.539466637413 +11 +470.677509279169 +21 +-764.543874438695 +31 +89.6207321892548 +12 +472.107195414063 +22 +-761.701653732916 +32 +88.5008947532808 +13 +472.107195414063 +23 +-761.701653732916 +33 +88.5008947532808 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677509279169 +20 +-764.543874438695 +30 +89.6207321892548 +11 +472.10720415349 +21 +-748.850999084323 +31 +115.539466637413 +12 +470.677518140403 +22 +-751.514112490764 +32 +117.036156904666 +13 +470.677518140403 +23 +-751.514112490764 +33 +117.036156904666 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431270729568 +20 +-719.25912090813 +30 +98.9086120013344 +11 +454.797687662105 +21 +-702.539296405596 +31 +117.908241171874 +12 +454.797683261242 +22 +-716.144716838612 +32 +97.1582932541697 +13 +454.797683261242 +23 +-716.144716838612 +33 +97.1582932541697 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797687662105 +20 +-702.539296405596 +30 +117.908241171874 +11 +454.431270729568 +21 +-719.25912090813 +31 +98.9086120013344 +12 +454.431275216977 +22 +-705.386140960936 +32 +120.066621251022 +13 +454.431275216977 +23 +-705.386140960936 +33 +120.066621251022 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222230868175 +20 +-612.875739362874 +30 +234.648467298763 +11 +461.26998493348 +21 +-642.699946567149 +31 +223.694427829008 +12 +461.269972243544 +22 +-612.537006285544 +32 +233.256044045395 +13 +461.269972243544 +23 +-612.537006285544 +33 +233.256044045395 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.26998493348 +20 +-642.699946567149 +30 +223.694427829008 +11 +458.222230868175 +21 +-612.875739362874 +31 +234.648467298763 +12 +458.222243636608 +22 +-643.225259958184 +32 +225.027705344708 +13 +458.222243636608 +23 +-643.225259958184 +33 +225.027705344708 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201824130007 +20 +-578.830801190005 +30 +61.5905626376661 +11 +764.031420693374 +21 +-566.35608713258 +31 +43.4208517516957 +12 +764.031422681501 +22 +-571.081702518113 +32 +41.9228372915384 +13 +764.031422681501 +23 +-571.081702518113 +33 +41.9228372915384 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031420693374 +20 +-566.35608713258 +30 +43.4208517516957 +11 +760.201824130007 +21 +-578.830801190005 +31 +61.5905626376661 +12 +760.20182098394 +22 +-571.352859264312 +32 +63.961061339529 +13 +760.20182098394 +23 +-571.352859264312 +33 +63.961061339529 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267763467221 +20 +-750.104609262675 +30 +83.9316672902124 +11 +432.838929652884 +21 +-758.353294490404 +31 +56.9482088735863 +12 +429.267752143919 +22 +-758.636493889386 +32 +57.017103815686 +13 +429.267752143919 +23 +-758.636493889386 +33 +57.017103815686 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838929652884 +20 +-758.353294490404 +30 +56.9482088735863 +11 +429.267763467221 +21 +-750.104609262675 +31 +83.9316672902124 +12 +432.838940960221 +22 +-749.833439201604 +32 +83.824824767603 +13 +432.838940960221 +23 +-749.833439201604 +33 +83.824824767603 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431263343628 +20 +-625.680128816835 +30 +180.496989380173 +11 +454.797666066761 +21 +-600.71783565349 +31 +184.671000694682 +12 +454.797676017751 +22 +-624.370524419528 +32 +177.173126470384 +13 +454.797676017751 +23 +-624.370524419528 +33 +177.173126470384 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797666066761 +20 +-600.71783565349 +30 +184.671000694682 +11 +454.431263343628 +21 +-625.680128816835 +31 +180.496989380173 +12 +454.431253196946 +22 +-601.562294416642 +32 +188.142314217608 +13 +454.431253196946 +23 +-601.562294416642 +33 +188.142314217608 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677509279169 +20 +-764.543874438695 +30 +89.6207321892548 +11 +468.840142428527 +21 +-776.463572930403 +31 +61.353838580619 +12 +470.677497105752 +22 +-773.716303656482 +32 +60.6855157395589 +13 +470.677497105752 +23 +-773.716303656482 +33 +60.6855157395589 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840142428527 +20 +-776.463572930403 +30 +61.353838580619 +11 +470.677509279169 +21 +-764.543874438695 +31 +89.6207321892548 +12 +468.84015475682 +22 +-767.174448290109 +32 +90.6571807720069 +13 +468.84015475682 +23 +-767.174448290109 +33 +90.6571807720069 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332886599671 +20 +-704.132938548301 +30 +65.8187023707334 +11 +702.221343105619 +21 +-699.12426393804 +31 +42.5395709625037 +12 +684.332877982946 +22 +-710.625470617764 +32 +45.3374518452758 +13 +684.332877982946 +23 +-710.625470617764 +33 +45.3374518452758 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221343105619 +20 +-699.12426393804 +30 +42.5395709625037 +11 +684.332886599671 +21 +-704.132938548301 +31 +65.8187023707334 +12 +702.221351073972 +22 +-693.120266957808 +32 +61.4796955534277 +13 +702.221351073972 +23 +-693.120266957808 +33 +61.4796955534277 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269937419119 +20 +-549.571376162653 +30 +239.686382351024 +11 +464.090727919739 +21 +-186.86272 +31 +237.849027336606 +12 +461.269937419119 +22 +-186.86272 +32 +239.686382351025 +13 +461.269937419119 +23 +-186.86272 +33 +239.686382351025 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090727919739 +20 +-186.86272 +30 +237.849027336606 +11 +461.269937419119 +21 +-549.571376162653 +31 +239.686382351024 +12 +464.090727919739 +22 +-549.540509167097 +32 +237.849027336606 +13 +464.090727919739 +23 +-549.540509167097 +33 +237.849027336606 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602131038669 +20 +-761.101673056328 +30 +57.616722979916 +11 +473.717763908762 +21 +-752.465074828487 +31 +84.861675745457 +12 +473.717752446486 +22 +-761.101673808691 +32 +57.6167818413605 +13 +473.717752446486 +23 +-761.101673808691 +33 +57.6167818413605 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717763908762 +20 +-752.465074828487 +30 +84.861675745457 +11 +599.602131038669 +21 +-761.101673056328 +31 +57.616722979916 +12 +599.60214250095 +22 +-752.465070814344 +32 +84.8616271735756 +13 +599.60214250095 +23 +-752.465070814344 +33 +84.8616271735756 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576402819491 +20 +-633.437457700021 +30 +26.5600661905556 +11 +760.201821668678 +21 +-613.067712196625 +31 +23.3578379899606 +12 +757.969157364208 +22 +-620.27407578666 +32 +23.3578379876696 +13 +757.969157364208 +23 +-620.27407578666 +33 +23.3578379876696 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201821668678 +20 +-613.067712196625 +30 +23.3578379899606 +11 +753.576402819491 +21 +-633.437457700021 +31 +26.5600661905556 +12 +760.201824130007 +22 +-611.213150017197 +32 +29.2082138072124 +13 +760.201824130007 +23 +-611.213150017197 +33 +29.2082138072124 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +760.201824130007 +20 +-611.213150017197 +30 +29.2082138072124 +11 +753.576402819491 +21 +-633.437457700021 +31 +26.5600661905556 +12 +753.576407084801 +22 +-630.223630997654 +32 +36.698358790781 +13 +753.576407084801 +23 +-630.223630997654 +33 +36.698358790781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317739367628 +20 +-791.272422434329 +30 +32.0400273988949 +11 +3.51879034228841e-05 +21 +-785.839649652569 +31 +63.6349541054433 +12 +1.90727753096809e-05 +22 +-791.272418599218 +32 +32.0402749105959 +13 +1.90727753096809e-05 +23 +-791.272418599218 +33 +32.0402749105959 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +3.51879034228841e-05 +20 +-785.839649652569 +30 +63.6349541054433 +11 +448.317739367628 +21 +-791.272422434329 +31 +32.0400273988949 +12 +448.317755482775 +22 +-785.839646973143 +32 +63.6347444795237 +13 +448.317755482775 +23 +-785.839646973143 +33 +63.6347444795237 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575548860337 +20 +-602.386639077964 +30 +191.530943822063 +11 +454.431240478811 +21 +-576.627625779333 +31 +192.429880890276 +12 +454.431253196946 +22 +-601.562294416642 +32 +188.142314217608 +13 +454.431253196946 +23 +-601.562294416642 +33 +188.142314217608 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431240478811 +20 +-576.627625779333 +30 +192.429880890276 +11 +453.575548860337 +21 +-602.386639077964 +31 +191.530943822063 +12 +453.575535902759 +22 +-576.982525716554 +32 +195.89923246393 +13 +453.575535902759 +23 +-576.982525716554 +33 +195.89923246393 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +791.767077835926 +20 +-596.364536149864 +30 +23.3578380035618 +11 +787.130182929858 +21 +-621.15990220955 +31 +23.5733173858747 +12 +787.308111270966 +22 +-620.27413204142 +32 +23.3578379968868 +13 +787.308111270966 +23 +-620.27413204142 +33 +23.3578379968868 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130182929858 +20 +-621.15990220955 +30 +23.5733173858747 +11 +791.767077835926 +21 +-596.364536149864 +31 +23.3578380035618 +12 +787.130186503031 +22 +-618.467587074047 +32 +32.066456918151 +13 +787.130186503031 +23 +-618.467587074047 +33 +32.066456918151 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024169157982 +20 +-628.985710803041 +30 +62.1423838125873 +11 +767.829332959368 +21 +-655.602108768076 +31 +63.1328050448759 +12 +779.024166993188 +22 +-635.678245979518 +32 +51.9354404084483 +13 +779.024166993188 +23 +-635.678245979518 +33 +51.9354404084483 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829332959368 +20 +-655.602108768076 +30 +63.1328050448759 +11 +779.024169157982 +21 +-628.985710803041 +31 +62.1423838125873 +12 +767.829335677824 +22 +-647.197908223015 +32 +75.9502497139702 +13 +767.829335677824 +23 +-647.197908223015 +33 +75.9502497139702 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630427178961 +20 +-769.542842319152 +30 +91.5903304644009 +11 +464.090784277369 +21 +-758.12892025415 +31 +120.753730687408 +12 +464.090775113584 +22 +-771.603559996758 +32 +92.4022555870175 +13 +464.090775113584 +23 +-771.603559996758 +33 +92.4022555870175 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090784277369 +20 +-758.12892025415 +30 +120.753730687408 +11 +466.630427178961 +21 +-769.542842319152 +31 +91.5903304644009 +12 +466.630436254431 +22 +-756.198062094967 +32 +119.668573109345 +13 +466.630436254431 +23 +-756.198062094967 +33 +119.668573109345 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575566723046 +20 +-722.299342389133 +30 +100.617239704551 +11 +454.431275216977 +21 +-705.386140960936 +31 +120.066621251022 +12 +454.431270729568 +22 +-719.25912090813 +32 +98.9086120013344 +13 +454.431270729568 +23 +-719.25912090813 +33 +98.9086120013344 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431275216977 +20 +-705.386140960936 +30 +120.066621251022 +11 +453.575566723046 +21 +-722.299342389133 +31 +100.617239704551 +12 +453.575571294939 +22 +-708.165176005556 +32 +122.173590554812 +13 +453.575571294939 +23 +-708.165176005556 +33 +122.173590554812 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0 +20 +-549.622587401036 +30 +242.726639240051 +11 +93.5308854426706 +21 +-280.294079999998 +31 +242.726639192693 +12 +0.000487681863777811 +22 +-280.294079999998 +32 +242.726639192693 +13 +0.000487681863777811 +23 +-280.294079999998 +33 +242.726639192693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +93.5308854426706 +20 +-280.294079999998 +30 +242.726639192693 +11 +0.0 +21 +-549.622587401036 +31 +242.726639240051 +12 +448.31772029492 +22 +-549.622454002523 +32 +242.726639240051 +13 +448.31772029492 +23 +-549.622454002523 +33 +242.726639240051 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +93.5308854426706 +20 +-280.294079999998 +30 +242.726639192693 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +93.530885442671 +22 +-186.862719999999 +32 +242.726639240051 +13 +93.530885442671 +23 +-186.862719999999 +33 +242.726639240051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.31772029492 +20 +-186.86272 +30 +242.726639240051 +11 +93.5308854426706 +21 +-280.294079999998 +31 +242.726639192693 +12 +448.31772029492 +22 +-549.622454002523 +32 +242.726639240051 +13 +448.31772029492 +23 +-549.622454002523 +33 +242.726639240051 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +649.884068906774 +20 +-549.087494127121 +30 +210.885907146698 +11 +673.957327625231 +21 +-186.86272 +31 +202.779879874335 +12 +649.884068906774 +22 +-186.86272 +32 +210.885907146698 +13 +649.884068906774 +23 +-186.86272 +33 +210.885907146698 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957327625231 +20 +-186.86272 +30 +202.779879874335 +11 +649.884068906774 +21 +-549.087494127121 +31 +210.885907146698 +12 +673.957327625231 +22 +-548.951311917762 +32 +202.779879874335 +13 +673.957327625231 +23 +-548.951311917762 +33 +202.779879874335 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758800443365 +20 +-717.703482376537 +30 +98.03426599948 +11 +673.957381179691 +21 +-712.905797682657 +31 +125.767734693656 +12 +673.957376463676 +22 +-727.485522237732 +32 +103.531852556699 +13 +673.957376463676 +23 +-727.485522237732 +33 +103.531852556699 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957381179691 +20 +-712.905797682657 +30 +125.767734693656 +11 +696.758800443365 +21 +-717.703482376537 +31 +98.03426599948 +12 +696.758804887548 +22 +-703.964135051352 +32 +118.98846898236 +13 +696.758804887548 +23 +-703.964135051352 +33 +118.98846898236 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0162901478210909 +20 +-750.104622950446 +30 +83.93183291483 +11 +429.267752143919 +21 +-758.636493889386 +31 +57.017103815686 +12 +0.0162788245333154 +22 +-758.636496454861 +32 +57.0173045265452 +13 +0.0162788245333154 +23 +-758.636496454861 +33 +57.0173045265452 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267752143919 +20 +-758.636493889386 +30 +57.017103815686 +11 +0.0162901478210909 +21 +-750.104622950446 +31 +83.93183291483 +12 +429.267763467221 +22 +-750.104609262675 +32 +83.9316672902124 +13 +429.267763467221 +23 +-750.104609262675 +33 +83.9316672902124 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797676017751 +20 +-726.7957138545 +30 +74.7479370250946 +11 +454.667765582876 +21 +-713.015957461653 +31 +95.3999068495287 +12 +454.667758482489 +22 +-723.456530152174 +32 +73.4322964107047 +13 +454.667758482489 +23 +-723.456530152174 +33 +73.4322964107047 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667765582876 +20 +-713.015957461653 +30 +95.3999068495287 +11 +454.797676017751 +21 +-726.7957138545 +31 +74.7479370250946 +12 +454.797683261242 +22 +-716.144716838612 +32 +97.1582932541697 +13 +454.797683261242 +23 +-716.144716838612 +33 +97.1582932541697 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884100288402 +20 +-605.713302275367 +30 +205.206224873295 +11 +673.957368701467 +21 +-629.139245228331 +31 +189.276665394806 +12 +673.957358037872 +22 +-603.792752711355 +32 +197.311473394829 +13 +673.957358037872 +23 +-603.792752711355 +33 +197.311473394829 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957368701467 +20 +-629.139245228331 +30 +189.276665394806 +11 +649.884100288402 +21 +-605.713302275367 +31 +205.206224873295 +12 +649.884111397057 +22 +-632.11766596993 +32 +196.836072967405 +13 +649.884111397057 +23 +-632.11766596993 +33 +196.836072967405 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021379319153 +20 +-712.807071282992 +30 +69.2363238103713 +11 +684.332877982946 +21 +-710.625470617764 +31 +45.3374518452758 +12 +665.021370191738 +22 +-719.684397959595 +32 +47.5412056189011 +13 +665.021370191738 +23 +-719.684397959595 +33 +47.5412056189011 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332877982946 +20 +-710.625470617764 +30 +45.3374518452758 +11 +665.021379319153 +21 +-712.807071282992 +31 +69.2363238103713 +12 +684.332886599671 +22 +-704.132938548301 +32 +65.8187023707334 +13 +684.332886599671 +23 +-704.132938548301 +33 +65.8187023707334 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363068074693 +20 +-547.889717752797 +30 +139.587654990762 +11 +732.466031085639 +21 +-186.86272 +31 +123.445905477124 +12 +732.466031085639 +22 +-547.618544534505 +32 +123.445905477124 +13 +732.466031085639 +23 +-547.618544534505 +33 +123.445905477124 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466031085639 +20 +-186.86272 +30 +123.445905477124 +11 +718.363068074693 +21 +-547.889717752797 +31 +139.587654990762 +12 +718.363068074693 +22 +-186.86272 +32 +139.587654990762 +13 +718.363068074693 +23 +-186.86272 +33 +139.587654990762 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.02138596315 +20 +-703.037584126794 +30 +89.7919287945006 +11 +684.332886599671 +21 +-704.132938548301 +31 +65.8187023707334 +12 +665.021379319153 +22 +-712.807071282992 +32 +69.2363238103713 +13 +665.021379319153 +23 +-712.807071282992 +33 +69.2363238103713 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332886599671 +20 +-704.132938548301 +30 +65.8187023707334 +11 +665.02138596315 +21 +-703.037584126794 +31 +89.7919287945006 +12 +684.332892871929 +22 +-694.910065817882 +32 +85.2241968080869 +13 +684.332892871929 +23 +-694.910065817882 +33 +85.2241968080869 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130190684252 +20 +-609.757662381006 +30 +47.5643349390529 +11 +779.024166993188 +21 +-635.678245979518 +31 +51.9354404084483 +12 +787.130189104003 +22 +-614.643057664062 +32 +40.1135032517926 +13 +787.130189104003 +23 +-614.643057664062 +33 +40.1135032517926 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024166993188 +20 +-635.678245979518 +30 +51.9354404084483 +11 +787.130190684252 +21 +-609.757662381006 +31 +47.5643349390529 +12 +779.024169157982 +22 +-628.985710803041 +32 +62.1423838125873 +13 +779.024169157982 +23 +-628.985710803041 +33 +62.1423838125873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739272918395 +20 +-589.30932977233 +30 +137.774660970991 +11 +736.997685757261 +21 +-613.69735635364 +31 +150.084181819366 +12 +753.739280225648 +22 +-606.678073483521 +32 +132.268789859729 +13 +753.739280225648 +23 +-606.678073483521 +33 +132.268789859729 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997685757261 +20 +-613.69735635364 +30 +150.084181819366 +11 +753.739272918395 +21 +-589.30932977233 +31 +137.774660970991 +12 +736.997677401125 +22 +-593.835505140242 +32 +156.380365045419 +13 +736.997677401125 +23 +-593.835505140242 +33 +156.380365045419 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269956337624 +20 +-581.352493258009 +30 +238.618284093782 +11 +464.090762524528 +21 +-612.101685596006 +31 +231.466577935614 +12 +464.090746745054 +22 +-581.165076540648 +32 +236.786190394896 +13 +464.090746745054 +23 +-581.165076540648 +33 +236.786190394896 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090762524528 +20 +-612.101685596006 +30 +231.466577935614 +11 +461.269956337624 +21 +-581.352493258009 +31 +238.618284093782 +12 +461.269972243544 +22 +-612.537006285544 +32 +233.256044045395 +13 +461.269972243544 +23 +-612.537006285544 +33 +233.256044045395 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221351073972 +20 +-693.120266957808 +30 +61.4796955534277 +11 +718.363090933403 +21 +-685.388881228845 +31 +39.1981879427727 +12 +702.221343105619 +22 +-699.12426393804 +32 +42.5395709625037 +13 +702.221343105619 +23 +-699.12426393804 +33 +42.5395709625037 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363090933403 +20 +-685.388881228845 +30 +39.1981879427727 +11 +702.221351073972 +21 +-693.120266957808 +31 +61.4796955534277 +12 +718.363098127435 +22 +-679.968320245868 +32 +56.297813526916 +13 +718.363098127435 +23 +-679.968320245868 +33 +56.297813526916 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838940960221 +20 +-749.833439201604 +30 +83.824824767603 +11 +436.335601310833 +21 +-757.591910929275 +31 +56.7629871862785 +12 +432.838929652884 +22 +-758.353294490404 +32 +56.9482088735863 +13 +432.838929652884 +23 +-758.353294490404 +33 +56.9482088735863 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335601310833 +20 +-757.591910929275 +30 +56.7629871862785 +11 +432.838940960221 +21 +-749.833439201604 +31 +83.824824767603 +12 +436.335612575248 +22 +-749.104396759147 +32 +83.5375802413299 +13 +436.335612575248 +23 +-749.104396759147 +33 +83.5375802413299 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317755482775 +20 +-785.839646973143 +30 +63.6347444795237 +11 +4.80447490185498e-05 +21 +-776.152270645783 +31 +94.1946239307526 +12 +3.51879034228841e-05 +22 +-785.839649652569 +32 +63.6349541054433 +13 +3.51879034228841e-05 +23 +-785.839649652569 +33 +63.6349541054433 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +4.80447490185498e-05 +20 +-776.152270645783 +30 +94.1946239307526 +11 +448.317755482775 +21 +-785.839646973143 +31 +63.6347444795237 +12 +448.317768339636 +22 +-776.152256350036 +32 +94.1944509495159 +13 +448.317768339636 +23 +-776.152256350036 +33 +94.1944509495159 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247009199941 +20 +-725.20697903804 +30 +102.251353856666 +11 +453.575571294939 +21 +-708.165176005556 +31 +122.173590554812 +12 +453.575566723046 +22 +-722.299342389133 +32 +100.617239704551 +13 +453.575566723046 +23 +-722.299342389133 +33 +100.617239704551 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575571294939 +20 +-708.165176005556 +30 +122.173590554812 +11 +452.247009199941 +21 +-725.20697903804 +31 +102.251353856666 +12 +452.247013852634 +22 +-710.823016652003 +32 +124.188674487802 +13 +452.247013852634 +23 +-710.823016652003 +33 +124.188674487802 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201826420081 +20 +-607.845772298605 +30 +36.2933847183422 +11 +764.031425007948 +21 +-586.699189190326 +31 +30.0821938636906 +12 +764.031424128692 +22 +-589.417441849078 +32 +25.9365225576139 +13 +764.031424128692 +23 +-589.417441849078 +33 +25.9365225576139 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031425007948 +20 +-586.699189190326 +30 +30.0821938636906 +11 +760.201826420081 +21 +-607.845772298605 +31 +36.2933847183422 +12 +760.20182781144 +22 +-603.54433558335 +32 +42.8536074069585 +13 +760.20182781144 +23 +-603.54433558335 +33 +42.8536074069585 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839490392048 +20 +-719.276356082042 +30 +130.597708279963 +11 +445.721740244506 +21 +-732.59492990622 +31 +106.403439896738 +12 +442.839485482368 +22 +-734.454801614587 +32 +107.448702644845 +13 +442.839485482368 +23 +-734.454801614587 +33 +107.448702644845 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721740244506 +20 +-732.59492990622 +30 +106.403439896738 +11 +442.839490392048 +21 +-719.276356082042 +31 +130.597708279963 +12 +445.721745102502 +22 +-717.576266444547 +32 +129.308758123214 +13 +445.721745102502 +23 +-717.576266444547 +33 +129.308758123214 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363081916203 +20 +-571.142011532184 +30 +138.806193017976 +11 +702.221318561055 +21 +-548.126641526877 +31 +153.690618001708 +12 +718.363068074693 +22 +-547.889717752797 +32 +139.587654990762 +13 +718.363068074693 +23 +-547.889717752797 +33 +139.587654990762 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221318561055 +20 +-548.126641526877 +30 +153.690618001708 +11 +718.363081916203 +21 +-571.142011532184 +31 +138.806193017976 +12 +702.221333117862 +22 +-572.580560654599 +32 +152.868771861916 +13 +702.221333117862 +23 +-572.580560654599 +33 +152.868771861916 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335625756533 +20 +-721.646389233184 +30 +132.394587199654 +11 +439.690615872653 +21 +-735.948583762681 +31 +108.288220362449 +12 +436.335620774804 +22 +-737.047580997407 +32 +108.905866027708 +13 +436.335620774804 +23 +-737.047580997407 +33 +108.905866027708 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690615872653 +20 +-735.948583762681 +30 +108.288220362449 +11 +436.335625756533 +21 +-721.646389233184 +31 +132.394587199654 +12 +439.690620823844 +22 +-720.64180705444 +32 +131.632946903436 +13 +439.690620823844 +23 +-720.64180705444 +33 +131.632946903436 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363068074693 +20 +-186.86272 +30 +139.587654990762 +11 +702.221318561055 +21 +-548.126641526877 +31 +153.690618001708 +12 +702.221318561055 +22 +-186.86272 +32 +153.690618001708 +13 +702.221318561055 +23 +-186.86272 +33 +153.690618001708 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221318561055 +20 +-548.126641526877 +30 +153.690618001708 +11 +718.363068074693 +21 +-186.86272 +31 +139.587654990762 +12 +718.363068074693 +22 +-547.889717752797 +32 +139.587654990762 +13 +718.363068074693 +23 +-547.889717752797 +33 +139.587654990762 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717763908762 +20 +-752.465074828487 +30 +84.861675745457 +11 +473.642053400866 +21 +-764.379514823734 +31 +58.4141748490874 +12 +473.717752446486 +22 +-761.101673808691 +32 +57.6167818413605 +13 +473.717752446486 +23 +-761.101673808691 +33 +57.6167818413605 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642053400866 +20 +-764.379514823734 +30 +58.4141748490874 +11 +473.717763908762 +21 +-752.465074828487 +31 +84.861675745457 +12 +473.642065047928 +22 +-755.603683334388 +32 +86.0982896720056 +13 +473.642065047928 +23 +-755.603683334388 +33 +86.0982896720056 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +629.962604584718 +20 +-661.494594174546 +30 +5.83945951983435 +11 +617.23954941635 +21 +-667.162466046757 +31 +-1.62430069394759e-12 +12 +617.239549416349 +22 +-667.162466046756 +32 +5.83945951983507 +13 +617.239549416349 +23 +-667.162466046756 +33 +5.83945951983507 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +617.23954941635 +20 +-667.162466046757 +30 +-1.62430069394759e-12 +11 +629.962604584718 +21 +-661.494594174546 +31 +5.83945951983435 +12 +629.962604584718 +22 +-661.494594174547 +32 +-2.52668996836292e-12 +13 +629.962604584718 +23 +-661.494594174547 +33 +-2.52668996836292e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133279596418 +20 +-599.869415774734 +30 +181.183685835358 +11 +454.667736501664 +21 +-575.898831573499 +31 +185.305488978394 +12 +602.133267369982 +22 +-575.898750159264 +32 +185.30549023988 +13 +602.133267369982 +23 +-575.898750159264 +33 +185.30549023988 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667736501664 +20 +-575.898831573499 +30 +185.305488978394 +11 +602.133279596418 +21 +-599.869415774734 +31 +181.183685835358 +12 +454.667748728094 +22 +-599.869484727166 +32 +181.183686716704 +13 +454.667748728094 +23 +-599.869484727166 +33 +181.183686716704 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275046789786 +20 +-652.245630435845 +30 +31.1354921818382 +11 +753.576407084801 +21 +-630.223630997654 +31 +36.698358790781 +12 +753.576402819491 +22 +-633.437457700021 +32 +26.5600661905556 +13 +753.576402819491 +23 +-633.437457700021 +33 +26.5600661905556 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576407084801 +20 +-630.223630997654 +30 +36.698358790781 +11 +744.275046789786 +21 +-652.245630435845 +31 +31.1354921818382 +12 +744.275052115393 +22 +-648.23289118406 +32 +43.7940230954864 +13 +744.275052115393 +23 +-648.23289118406 +33 +43.7940230954864 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840126975903 +20 +-580.680624318909 +30 +232.050409880217 +11 +466.630414711229 +21 +-611.578139745845 +31 +229.314444371434 +12 +468.840142428527 +22 +-610.976425980055 +32 +226.840985547634 +13 +468.840142428527 +23 +-610.976425980055 +33 +226.840985547634 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630414711229 +20 +-611.578139745845 +30 +229.314444371434 +11 +468.840126975903 +21 +-580.680624318909 +31 +232.050409880217 +12 +466.630399083827 +22 +-580.939676928926 +32 +234.582789982374 +13 +466.630399083827 +23 +-580.939676928926 +33 +234.582789982374 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282004539076 +20 +-742.014746414944 +30 +80.7442486966709 +11 +450.471119570638 +21 +-727.926175547966 +31 +103.779563345764 +12 +450.471111788281 +22 +-739.369532914357 +32 +79.7020319508277 +13 +450.471111788281 +23 +-739.369532914357 +33 +79.7020319508277 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471119570638 +20 +-727.926175547966 +30 +103.779563345764 +11 +448.282004539076 +21 +-742.014746414944 +31 +80.7442486966709 +12 +448.282012434797 +22 +-730.404696521621 +32 +105.17251147419 +13 +448.282012434797 +23 +-730.404696521621 +33 +105.17251147419 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090746745054 +20 +-581.165076540648 +30 +236.786190394896 +11 +466.630414711229 +21 +-611.578139745845 +31 +229.314444371434 +12 +466.630399083827 +22 +-580.939676928926 +32 +234.582789982374 +13 +466.630399083827 +23 +-580.939676928926 +33 +234.582789982374 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630414711229 +20 +-611.578139745845 +30 +229.314444371434 +11 +464.090746745054 +21 +-581.165076540648 +31 +236.786190394896 +12 +464.090762524528 +22 +-612.101685596006 +32 +231.466577935614 +13 +464.090762524528 +23 +-612.101685596006 +33 +231.466577935614 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222214863865 +20 +-581.498326831209 +30 +240.043876806793 +11 +461.269972243544 +21 +-612.537006285544 +31 +233.256044045395 +12 +461.269956337624 +22 +-581.352493258009 +32 +238.618284093782 +13 +461.269956337624 +23 +-581.352493258009 +33 +238.618284093782 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269972243544 +20 +-612.537006285544 +30 +233.256044045395 +11 +458.222214863865 +21 +-581.498326831209 +31 +240.043876806793 +12 +458.222230868175 +22 +-612.875739362874 +32 +234.648467298763 +13 +458.222230868175 +23 +-612.875739362874 +33 +234.648467298763 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +127.443487339903 +20 +-186.86272 +30 +2030.58313313969 +11 +100.155807358117 +21 +-280.294079999999 +31 +2052.97755335166 +12 +100.155807358117 +22 +-186.862719999999 +32 +2052.97755335166 +13 +100.155807358117 +23 +-186.862719999999 +33 +2052.97755335166 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-280.294079999999 +30 +2052.97755335166 +11 +127.443487339903 +21 +-186.86272 +31 +2030.58313313969 +12 +127.443487339902 +22 +-280.29408 +32 +2030.58313313969 +13 +127.443487339902 +23 +-280.29408 +33 +2030.58313313969 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +35.2381055728783 +20 +-280.29408 +30 +1394.27106395937 +11 +69.0138872107926 +21 +-186.86272 +31 +1404.51683530547 +12 +35.2381055728787 +22 +-186.86272 +32 +1394.27106395937 +13 +35.2381055728787 +23 +-186.86272 +33 +1394.27106395937 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +69.0138872107926 +20 +-186.86272 +30 +1404.51683530547 +11 +35.2381055728783 +21 +-280.29408 +31 +1394.27106395937 +12 +69.0138872107921 +22 +-280.29408 +32 +1404.51683530547 +13 +69.0138872107921 +23 +-280.29408 +33 +1404.51683530547 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690615872653 +20 +-735.948583762681 +30 +108.288220362449 +11 +442.839477401402 +21 +-746.337240593148 +31 +82.4473163912804 +12 +439.690607723364 +22 +-747.931486742049 +32 +83.0754516399063 +13 +439.690607723364 +23 +-747.931486742049 +33 +83.0754516399063 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839477401402 +20 +-746.337240593148 +30 +82.4473163912804 +11 +439.690615872653 +21 +-735.948583762681 +31 +108.288220362449 +12 +442.839485482368 +22 +-734.454801614587 +32 +107.448702644845 +13 +442.839485482368 +23 +-734.454801614587 +33 +107.448702644845 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602098887118 +20 +-549.195708452133 +30 +217.326639240051 +11 +624.955307916438 +21 +-578.912147406784 +31 +214.763348941721 +12 +624.955290211342 +22 +-549.169431970937 +32 +215.762940693873 +13 +624.955290211342 +23 +-549.169431970937 +33 +215.762940693873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955307916438 +20 +-578.912147406784 +30 +214.763348941721 +11 +599.602098887118 +21 +-549.195708452133 +31 +217.326639240051 +12 +599.602116671527 +22 +-579.071662867255 +32 +216.322569598682 +13 +599.602116671527 +23 +-579.071662867255 +33 +216.322569598682 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +3.51879034228841e-05 +20 +-613.257541505822 +30 +236.217062269571 +11 +448.317768339636 +21 +-643.81703834892 +31 +226.52966896396 +12 +448.317755482775 +22 +-613.257331879904 +32 +236.217059590145 +13 +448.317755482775 +23 +-613.257331879904 +33 +236.217059590145 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317768339636 +20 +-643.81703834892 +30 +226.52966896396 +11 +3.51879034228841e-05 +21 +-613.257541505822 +31 +236.217062269571 +12 +4.80447490185498e-05 +22 +-643.817211330157 +32 +226.529683259707 +13 +4.80447490185498e-05 +23 +-643.817211330157 +33 +226.529683259707 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717738079349 +20 +-579.071732366754 +30 +216.322568521811 +11 +599.602131038669 +21 +-607.239310377804 +31 +211.479085673936 +12 +599.602116671527 +22 +-579.071662867255 +32 +216.322569598682 +13 +599.602116671527 +23 +-579.071662867255 +33 +216.322569598682 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602131038669 +20 +-607.239310377804 +30 +211.479085673936 +11 +473.717738079349 +21 +-579.071732366754 +31 +216.322568521811 +12 +473.717752446486 +22 +-607.239369239249 +32 +211.479086426299 +13 +473.717752446486 +23 +-607.239369239249 +33 +211.479086426299 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024163430099 +20 +-640.917494008958 +30 +40.9117386331972 +11 +767.82932233817 +21 +-666.812843070624 +31 +34.6792140832892 +12 +779.024158535186 +22 +-644.605714246329 +32 +29.2769308468913 +13 +779.024158535186 +23 +-644.605714246329 +33 +29.2769308468913 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.82932233817 +20 +-666.812843070624 +30 +34.6792140832892 +11 +779.024163430099 +21 +-640.917494008958 +31 +40.9117386331972 +12 +767.829328484993 +22 +-662.181333229905 +32 +49.2897100106075 +13 +767.829328484993 +23 +-662.181333229905 +33 +49.2897100106075 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717738079349 +20 +-579.071732366754 +30 +216.322568521811 +11 +473.642053400866 +21 +-608.036762247305 +31 +214.756927441262 +12 +473.717752446486 +22 +-607.239369239249 +32 +211.479086426299 +13 +473.717752446486 +23 +-607.239369239249 +33 +211.479086426299 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642053400866 +20 +-608.036762247305 +30 +214.756927441262 +11 +473.717738079349 +21 +-579.071732366754 +31 +216.322568521811 +12 +473.642038802113 +22 +-579.415028713919 +32 +219.67849237548 +13 +473.642038802113 +23 +-579.415028713919 +33 +219.67849237548 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021391353748 +20 +-675.601700530057 +30 +125.979113140781 +11 +684.332896682708 +21 +-683.128909470703 +31 +103.191916498769 +12 +665.021389999784 +22 +-690.558190885324 +32 +108.824546057595 +13 +665.021389999784 +23 +-690.558190885324 +33 +108.824546057595 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332896682708 +20 +-683.128909470703 +30 +103.191916498769 +11 +665.021391353748 +21 +-675.601700530057 +31 +125.979113140781 +12 +684.332897960916 +22 +-669.009252539392 +32 +119.38666515078 +13 +684.332897960916 +23 +-669.009252539392 +33 +119.38666515078 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201817040574 +20 +-563.621650860098 +30 +65.2904582517363 +11 +764.031409168954 +21 +-546.296855411639 +31 +44.7709041931231 +12 +764.0314182014 +22 +-561.470422367227 +32 +44.2609516834995 +13 +764.0314182014 +23 +-561.470422367227 +33 +44.2609516834995 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031409168954 +20 +-546.296855411639 +30 +44.7709041931231 +11 +760.201817040574 +21 +-563.621650860098 +31 +65.2904582517363 +12 +760.201806938459 +22 +-546.651150672583 +32 +65.8608020071314 +13 +760.201806938459 +23 +-546.651150672583 +33 +65.8608020071314 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006069025402 +20 +-581.599775817026 +30 +241.035583090668 +11 +458.222230868175 +21 +-612.875739362874 +31 +234.648467298763 +12 +458.222214863865 +22 +-581.498326831209 +32 +240.043876806793 +13 +458.222214863865 +23 +-581.498326831209 +33 +240.043876806793 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222230868175 +20 +-612.875739362874 +30 +234.648467298763 +11 +455.006069025402 +21 +-581.599775817026 +31 +241.035583090668 +12 +455.006085098156 +22 +-613.111377811381 +32 +235.617099433291 +13 +455.006085098156 +23 +-613.111377811381 +33 +235.617099433291 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431253196946 +20 +-601.562294416642 +30 +188.142314217608 +11 +454.797653593913 +21 +-576.264066422956 +31 +188.875875742312 +12 +454.797666066761 +22 +-600.71783565349 +32 +184.671000694682 +13 +454.797666066761 +23 +-600.71783565349 +33 +184.671000694682 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797653593913 +20 +-576.264066422956 +30 +188.875875742312 +11 +454.431253196946 +21 +-601.562294416642 +31 +188.142314217608 +12 +454.431240478811 +22 +-576.627625779333 +32 +192.429880890276 +13 +454.431240478811 +23 +-576.627625779333 +33 +192.429880890276 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.20182098394 +20 +-571.352859264312 +30 +63.961061339529 +11 +764.0314182014 +21 +-561.470422367227 +31 +44.2609516834995 +12 +764.031420693374 +22 +-566.35608713258 +32 +43.4208517516957 +13 +764.031420693374 +23 +-566.35608713258 +33 +43.4208517516957 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.0314182014 +20 +-561.470422367227 +30 +44.2609516834995 +11 +760.20182098394 +21 +-571.352859264312 +31 +63.961061339529 +12 +760.201817040574 +22 +-563.621650860098 +32 +65.2904582517363 +13 +760.201817040574 +23 +-563.621650860098 +33 +65.2904582517363 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.10173725466 +20 +-608.824016722648 +30 +217.993091128508 +11 +472.107195414063 +21 +-638.12348215123 +31 +212.079066347413 +12 +473.101749084159 +22 +-636.941767787464 +32 +209.079797462849 +13 +473.101749084159 +23 +-636.941767787464 +33 +209.079797462849 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107195414063 +20 +-638.12348215123 +30 +212.079066347413 +11 +473.10173725466 +21 +-608.824016722648 +31 +217.993091128508 +12 +472.107183407982 +22 +-609.586009613252 +32 +221.125411221167 +13 +472.107183407982 +23 +-609.586009613252 +33 +221.125411221167 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717763908762 +20 +-634.484263142475 +30 +202.842487443351 +11 +473.64207352602 +21 +-661.950912950484 +31 +193.514715177954 +12 +473.717772252345 +22 +-660.298147720458 +32 +190.573891403664 +13 +473.717772252345 +23 +-660.298147720458 +33 +190.573891403664 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.64207352602 +20 +-661.950912950484 +30 +193.514715177954 +11 +473.717763908762 +21 +-634.484263142475 +31 +202.842487443351 +12 +473.642065047928 +22 +-635.720877069339 +32 +205.981095949127 +13 +473.642065047928 +23 +-635.720877069339 +33 +205.981095949127 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636259351108 +20 +-708.826870972768 +30 +93.0455572990973 +11 +665.021379319153 +21 +-712.807071282992 +31 +69.2363238103713 +12 +644.636252442318 +22 +-718.985715046116 +32 +71.6707212889357 +13 +644.636252442318 +23 +-718.985715046116 +33 +71.6707212889357 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021379319153 +20 +-712.807071282992 +30 +69.2363238103713 +11 +644.636259351108 +21 +-708.826870972768 +31 +93.0455572990973 +12 +665.02138596315 +22 +-703.037584126794 +32 +89.7919287945006 +13 +665.02138596315 +23 +-703.037584126794 +33 +89.7919287945006 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201824130007 +20 +-611.213150017197 +30 +29.2082138072124 +11 +764.031423295207 +21 +-590.643016368677 +31 +23.3578379961104 +12 +763.093075318335 +22 +-596.364508960869 +32 +23.3578379945534 +13 +763.093075318335 +23 +-596.364508960869 +33 +23.3578379945534 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031423295207 +20 +-590.643016368677 +30 +23.3578379961104 +11 +760.201824130007 +21 +-611.213150017197 +31 +29.2082138072124 +12 +764.031424128692 +22 +-589.417441849078 +32 +25.9365225576139 +13 +764.031424128692 +23 +-589.417441849078 +33 +25.9365225576139 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.031424128692 +20 +-589.417441849078 +30 +25.9365225576139 +11 +760.201824130007 +21 +-611.213150017197 +31 +29.2082138072124 +12 +760.201826420081 +22 +-607.845772298605 +32 +36.2933847183422 +13 +760.201826420081 +23 +-607.845772298605 +33 +36.2933847183422 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282017231929 +20 +-715.574196634022 +30 +127.790856991425 +11 +450.471125884842 +21 +-695.789522350054 +31 +146.166934958744 +12 +450.471124298894 +22 +-713.308606140826 +32 +126.073163560098 +13 +450.471124298894 +23 +-713.308606140826 +33 +126.073163560098 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471125884842 +20 +-695.789522350054 +30 +146.166934958744 +11 +448.282017231929 +21 +-715.574196634022 +31 +127.790856991425 +12 +448.282018840978 +22 +-697.799916727886 +32 +148.177329336375 +13 +448.282018840978 +23 +-697.799916727886 +33 +148.177329336375 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758793128571 +20 +-728.459323997255 +30 +75.4033102397292 +11 +673.957376463676 +21 +-727.485522237732 +31 +103.531852556699 +12 +673.957368701467 +22 +-738.899252779403 +32 +79.5166578326792 +13 +673.957368701467 +23 +-738.899252779403 +33 +79.5166578326792 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957376463676 +20 +-727.485522237732 +30 +103.531852556699 +11 +696.758793128571 +21 +-728.459323997255 +31 +75.4033102397292 +12 +696.758800443365 +22 +-717.703482376537 +32 +98.03426599948 +13 +696.758800443365 +23 +-717.703482376537 +33 +98.03426599948 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884119483233 +20 +-734.56856186502 +30 +107.512580906988 +11 +624.955346864755 +21 +-723.275770827742 +31 +133.629900413365 +12 +624.955341833487 +22 +-738.830110282484 +32 +109.907610082888 +13 +624.955341833487 +23 +-738.830110282484 +33 +109.907610082888 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955346864755 +20 +-723.275770827742 +30 +133.629900413365 +11 +649.884119483233 +21 +-734.56856186502 +31 +107.512580906988 +12 +649.884124396077 +22 +-719.380332193364 +32 +130.67650856366 +13 +649.884124396077 +23 +-719.380332193364 +33 +130.67650856366 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107195414063 +20 +-761.701653732916 +30 +88.5008947532808 +11 +470.677497105752 +21 +-773.716303656482 +31 +60.6855157395589 +12 +472.107183407982 +22 +-770.747998603796 +32 +59.9634222143927 +13 +472.107183407982 +23 +-770.747998603796 +33 +59.9634222143927 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677497105752 +20 +-773.716303656482 +30 +60.6855157395589 +11 +472.107195414063 +21 +-761.701653732916 +31 +88.5008947532808 +12 +470.677509279169 +22 +-764.543874438695 +32 +89.6207321892548 +13 +470.677509279169 +23 +-764.543874438695 +33 +89.6207321892548 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267752143919 +20 +-758.636493889386 +30 +57.017103815686 +11 +432.838915479952 +21 +-763.131305674907 +31 +29.1613230247316 +12 +429.267737950976 +22 +-763.421251234373 +32 +29.1909851596944 +13 +429.267737950976 +23 +-763.421251234373 +33 +29.1909851596944 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838915479952 +20 +-763.131305674907 +30 +29.1613230247316 +11 +429.267752143919 +21 +-758.636493889386 +31 +57.017103815686 +12 +432.838929652884 +22 +-758.353294490404 +32 +56.9482088735863 +13 +432.838929652884 +23 +-758.353294490404 +33 +56.9482088735863 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267778397118 +20 +-703.948312537967 +30 +154.325725145835 +11 +432.838954191733 +21 +-722.270804730449 +31 +132.867998161508 +12 +429.267776717416 +22 +-722.503058608961 +32 +133.044085628428 +13 +429.267776717416 +23 +-722.503058608961 +33 +133.044085628428 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838954191733 +20 +-722.270804730449 +30 +132.867998161508 +11 +429.267778397118 +21 +-703.948312537967 +31 +154.325725145835 +12 +432.838955869068 +22 +-703.742219504346 +32 +154.119632112235 +13 +432.838955869068 +23 +-703.742219504346 +33 +154.119632112235 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721721263973 +20 +-752.62898843986 +30 +55.5556638784362 +11 +448.281980096118 +21 +-754.771251996272 +31 +28.306117626709 +12 +445.721707495526 +22 +-757.270638693351 +32 +28.5617953495419 +13 +445.721707495526 +23 +-757.270638693351 +33 +28.5617953495419 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281980096118 +20 +-754.771251996272 +30 +28.306117626709 +11 +445.721721263973 +21 +-752.62898843986 +31 +55.5556638784362 +12 +448.281993692064 +22 +-750.187755353023 +32 +54.9617894316777 +13 +448.281993692064 +23 +-750.187755353023 +33 +54.9617894316777 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222258577851 +20 +-743.526108574926 +30 +148.983037664963 +11 +455.006114828511 +21 +-723.308225016813 +31 +173.685637622731 +12 +455.006112926336 +22 +-744.320489807817 +32 +149.585310783685 +13 +455.006112926336 +23 +-744.320489807817 +33 +149.585310783685 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006114828511 +20 +-723.308225016813 +30 +173.685637622731 +11 +458.222258577851 +21 +-743.526108574926 +31 +148.983037664963 +12 +458.222260471925 +22 +-722.603322716877 +32 +172.980735322867 +13 +458.222260471925 +23 +-722.603322716877 +33 +172.980735322867 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282018840978 +20 +-697.799916727886 +30 +148.177329336375 +11 +450.471124298894 +21 +-675.695750953173 +31 +163.686018751541 +12 +450.471125884842 +22 +-695.789522350054 +32 +146.166934958744 +13 +450.471125884842 +23 +-695.789522350054 +33 +146.166934958744 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471124298894 +20 +-675.695750953173 +30 +163.686018751541 +11 +448.282018840978 +21 +-697.799916727886 +31 +148.177329336375 +12 +448.282017231929 +22 +-677.413444384727 +32 +165.951609244563 +13 +448.282017231929 +23 +-677.413444384727 +33 +165.951609244563 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107211244211 +20 +-712.762199391597 +30 +163.139611998578 +11 +470.677523524142 +21 +-734.870094172174 +31 +142.420342197022 +12 +472.107209463225 +22 +-732.435769686289 +32 +140.574720545467 +13 +472.107209463225 +23 +-732.435769686289 +33 +140.574720545467 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677523524142 +20 +-734.870094172174 +30 +142.420342197022 +11 +472.107211244211 +21 +-712.762199391597 +31 +163.139611998578 +12 +470.677525329952 +22 +-714.922321501014 +32 +165.299734107777 +13 +470.677525329952 +23 +-714.922321501014 +33 +165.299734107777 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677525329952 +20 +-714.922321501014 +30 +165.299734107777 +11 +468.840169183023 +21 +-737.123145968814 +31 +144.128529165728 +12 +470.677523524142 +22 +-734.870094172174 +32 +142.420342197022 +13 +470.677523524142 +23 +-734.870094172174 +33 +142.420342197022 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840169183023 +20 +-737.123145968814 +30 +144.128529165728 +11 +470.677525329952 +21 +-714.922321501014 +31 +165.299734107777 +12 +468.840171011807 +22 +-716.921589517517 +32 +167.299002124079 +13 +468.840171011807 +23 +-716.921589517517 +33 +167.299002124079 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317768339636 +20 +-776.152256350036 +30 +94.1944509495159 +11 +5.74034615733243e-05 +21 +-762.391004206896 +31 +123.149179321074 +12 +4.80447490185498e-05 +22 +-776.152270645783 +32 +94.1946239307526 +13 +4.80447490185498e-05 +23 +-776.152270645783 +33 +94.1946239307526 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +5.74034615733243e-05 +20 +-762.391004206896 +30 +123.149179321074 +11 +448.317768339636 +21 +-776.152256350036 +31 +94.1944509495159 +12 +448.31777769836 +22 +-762.390973409752 +32 +123.149041059795 +13 +448.31777769836 +23 +-762.390973409752 +33 +123.149041059795 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797689138238 +20 +-686.233268095701 +30 +136.610680705353 +11 +454.667769896794 +21 +-665.362499898554 +31 +150.056742450276 +12 +454.667771343765 +22 +-683.695448366281 +32 +134.072860976189 +13 +454.667771343765 +23 +-683.695448366281 +33 +134.072860976189 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667769896794 +20 +-665.362499898554 +30 +150.056742450276 +11 +454.797689138238 +21 +-686.233268095701 +31 +136.610680705353 +12 +454.797687662105 +22 +-667.530828563864 +32 +152.916709017132 +13 +454.797687662105 +23 +-667.530828563864 +33 +152.916709017132 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839477401402 +20 +-632.069903787681 +30 +196.714653208256 +11 +439.690596528004 +21 +-606.087584234742 +31 +206.744381898986 +12 +442.839466299903 +22 +-605.682549578299 +32 +205.079413127562 +13 +442.839466299903 +23 +-605.682549578299 +33 +205.079413127562 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690596528004 +20 +-606.087584234742 +30 +206.744381898986 +11 +442.839477401402 +21 +-632.069903787681 +31 +196.714653208256 +12 +439.690607723364 +22 +-632.698039036468 +32 +198.308899357094 +13 +439.690607723364 +23 +-632.698039036468 +33 +198.308899357094 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282012434797 +20 +-730.404696521621 +30 +105.17251147419 +11 +450.471124298894 +21 +-713.308606140826 +31 +126.073163560098 +12 +450.471119570638 +22 +-727.926175547966 +32 +103.779563345764 +13 +450.471119570638 +23 +-727.926175547966 +33 +103.779563345764 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471124298894 +20 +-713.308606140826 +30 +126.073163560098 +11 +448.282012434797 +21 +-730.404696521621 +31 +105.17251147419 +12 +448.282017231929 +22 +-715.574196634022 +32 +127.790856991425 +13 +448.282017231929 +23 +-715.574196634022 +33 +127.790856991425 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690582495428 +20 +-578.575873947693 +30 +211.475076092305 +11 +436.335569590044 +21 +-549.135217804424 +31 +213.722949367545 +12 +439.690564957562 +22 +-549.114088023756 +32 +212.46522637891 +13 +439.690564957562 +23 +-549.114088023756 +33 +212.46522637891 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335569590044 +20 +-549.135217804424 +30 +213.722949367545 +11 +439.690582495428 +21 +-578.575873947693 +31 +211.475076092305 +12 +436.335587191701 +22 +-578.704166932226 +32 +212.72919754513 +13 +436.335587191701 +23 +-578.704166932226 +33 +212.72919754513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471111788281 +20 +-629.324619346527 +30 +189.746945529741 +11 +452.246991021541 +21 +-603.175034087969 +31 +194.771794391524 +12 +452.247001541956 +22 +-628.181198889296 +32 +186.844869872835 +13 +452.247001541956 +23 +-628.181198889296 +33 +186.844869872835 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246991021541 +20 +-603.175034087969 +30 +194.771794391524 +11 +450.471111788281 +21 +-629.324619346527 +31 +189.746945529741 +12 +450.471101097006 +22 +-603.912334485117 +32 +197.802609624747 +13 +450.471101097006 +23 +-603.912334485117 +33 +197.802609624747 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957344671825 +20 +-751.440053094339 +30 +27.9652257853831 +11 +649.884100288402 +21 +-754.828812255533 +31 +56.0907148781112 +12 +649.884086364505 +22 +-759.522868440055 +32 +28.7920756889693 +13 +649.884086364505 +23 +-759.522868440055 +33 +28.7920756889693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884100288402 +20 +-754.828812255533 +30 +56.0907148781112 +11 +673.957344671825 +21 +-751.440053094339 +31 +27.9652257853831 +12 +673.957358037872 +22 +-746.934060776874 +32 +54.170165314894 +13 +673.957358037872 +23 +-746.934060776874 +33 +54.170165314894 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894030194972 +20 +-548.526532054241 +30 +177.494989005398 +11 +736.99765201229 +21 +-186.86272 +31 +160.753391204502 +12 +717.894030194972 +22 +-186.86272 +32 +177.494989005399 +13 +717.894030194972 +23 +-186.86272 +33 +177.494989005399 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.99765201229 +20 +-186.86272 +30 +160.753391204502 +11 +717.894030194972 +21 +-548.526532054241 +31 +177.494989005398 +12 +736.99765201229 +22 +-548.245280356442 +32 +160.753391204502 +13 +736.99765201229 +23 +-548.245280356442 +33 +160.753391204502 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133289350819 +20 +-623.054826905935 +30 +173.833938065877 +11 +454.667748728094 +21 +-599.869484727166 +31 +181.183686716704 +12 +602.133279596418 +22 +-599.869415774734 +32 +181.183685835358 +13 +602.133279596418 +23 +-599.869415774734 +33 +181.183685835358 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667748728094 +20 +-599.869484727166 +30 +181.183686716704 +11 +602.133289350819 +21 +-623.054826905935 +31 +173.833938065877 +12 +454.667758482489 +22 +-623.054883804802 +32 +173.83394276819 +13 +454.667758482489 +23 +-623.054883804802 +33 +173.83394276819 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758804887548 +20 +-703.964135051352 +30 +118.98846898236 +11 +673.957382761532 +21 +-695.432070757716 +31 +145.809483366442 +12 +673.957381179691 +22 +-712.905797682657 +32 +125.767734693656 +13 +673.957381179691 +23 +-712.905797682657 +33 +125.767734693656 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957382761532 +20 +-695.432070757716 +30 +145.809483366442 +11 +696.758804887548 +21 +-703.964135051352 +31 +118.98846898236 +12 +696.758806378212 +22 +-687.497596031337 +32 +137.875008640862 +13 +696.758806378212 +23 +-687.497596031337 +33 +137.875008640862 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247001541956 +20 +-736.467457257336 +30 +78.5586114938894 +11 +453.575566723046 +21 +-722.299342389133 +31 +100.617239704551 +12 +453.575559198051 +22 +-733.364267924859 +32 +77.3359522782304 +13 +453.575559198051 +23 +-733.364267924859 +33 +77.3359522782304 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575566723046 +20 +-722.299342389133 +30 +100.617239704551 +11 +452.247001541956 +21 +-736.467457257336 +31 +78.5586114938894 +12 +452.247009199941 +22 +-725.20697903804 +32 +102.251353856666 +13 +452.247009199941 +23 +-725.20697903804 +33 +102.251353856666 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957376463676 +20 +-727.485522237732 +30 +103.531852556699 +11 +649.884124396077 +21 +-719.380332193364 +31 +130.67650856366 +12 +649.884119483233 +22 +-734.56856186502 +32 +107.512580906988 +13 +649.884119483233 +23 +-734.56856186502 +33 +107.512580906988 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884124396077 +20 +-719.380332193364 +30 +130.67650856366 +11 +673.957376463676 +21 +-727.485522237732 +31 +103.531852556699 +12 +673.957381179691 +22 +-712.905797682657 +32 +125.767734693656 +13 +673.957381179691 +23 +-712.905797682657 +33 +125.767734693656 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221360398304 +20 +-645.663323591295 +30 +124.074113264079 +11 +684.332892871929 +21 +-634.846784199308 +31 +145.28747843271 +12 +702.22135687427 +22 +-629.047597461153 +32 +134.968788313225 +13 +702.22135687427 +23 +-629.047597461153 +33 +134.968788313225 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332892871929 +20 +-634.846784199308 +30 +145.28747843271 +11 +702.221360398304 +21 +-645.663323591295 +31 +124.074113264079 +12 +684.332896682708 +22 +-652.814503888805 +32 +133.506322083721 +13 +684.332896682708 +23 +-652.814503888805 +33 +133.506322083721 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636263548619 +20 +-662.459295238253 +30 +146.227531781659 +11 +623.546362358205 +21 +-644.548798426367 +31 +162.550587374486 +12 +644.636259351108 +22 +-642.668144691721 +32 +159.204283586808 +13 +644.636259351108 +23 +-642.668144691721 +33 +159.204283586808 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546362358205 +20 +-644.548798426367 +30 +162.550587374486 +11 +644.636263548619 +21 +-662.459295238253 +31 +146.227531781659 +12 +623.546366648706 +22 +-664.778393037384 +32 +149.286354566558 +13 +623.546366648706 +23 +-664.778393037384 +33 +149.286354566558 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602150844536 +20 +-740.196470143783 +30 +110.675521501907 +11 +473.71777732158 +21 +-724.524762147558 +31 +134.576865377446 +12 +473.717772252345 +22 +-740.196478791399 +32 +110.675560324675 +13 +473.717772252345 +23 +-740.196478791399 +33 +110.675560324675 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.71777732158 +20 +-724.524762147558 +30 +134.576865377446 +11 +599.602150844536 +21 +-740.196470143783 +31 +110.675521501907 +12 +599.602155913773 +22 +-724.524747581215 +32 +134.576835581469 +13 +599.602155913773 +23 +-724.524747581215 +33 +134.576835581469 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642034971754 +20 +-769.517333598178 +30 +23.3578378654237 +11 +473.101722427237 +21 +-772.614333460954 +31 +30.1313729498036 +12 +473.101718395121 +22 +-772.841978102158 +32 +23.3578378645206 +13 +473.101718395121 +23 +-772.841978102158 +33 +23.3578378645206 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101722427237 +20 +-772.614333460954 +30 +30.1313729498036 +11 +473.642034971754 +21 +-769.517333598178 +31 +23.3578378654237 +12 +473.642038802113 +22 +-769.301079755069 +32 +29.7924413152051 +13 +473.642038802113 +23 +-769.301079755069 +33 +29.7924413152051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267776717416 +20 +-682.666673022429 +30 +172.880471218973 +11 +0.016298390231306 +21 +-659.055291474171 +31 +188.362205788973 +12 +429.267771709642 +22 +-659.055159092928 +32 +188.362176301584 +13 +429.267771709642 +23 +-659.055159092928 +33 +188.362176301584 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.016298390231306 +20 +-659.055291474171 +30 +188.362205788973 +11 +429.267776717416 +21 +-682.666673022429 +31 +172.880471218973 +12 +0.016303397997907 +22 +-682.666774623337 +32 +172.880520888553 +13 +0.016303397997907 +23 +-682.666774623337 +33 +172.880520888553 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838954191733 +20 +-682.490585555484 +30 +172.648217340479 +11 +429.267771709642 +21 +-659.055159092928 +31 +188.362176301584 +12 +432.838949191021 +22 +-658.912362146436 +32 +188.108094342889 +13 +432.838949191021 +23 +-658.912362146436 +33 +188.108094342889 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267771709642 +20 +-659.055159092928 +30 +188.362176301584 +11 +432.838954191733 +21 +-682.490585555484 +31 +172.648217340479 +12 +429.267776717416 +22 +-682.666673022429 +32 +172.880471218973 +13 +429.267776717416 +23 +-682.666673022429 +33 +172.880471218973 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630441768332 +20 +-695.289054806558 +30 +189.529056864572 +11 +464.090791712392 +21 +-720.287768351753 +31 +170.665180957976 +12 +466.6304436178 +22 +-718.721597772832 +32 +169.099010379212 +13 +466.6304436178 +23 +-718.721597772832 +33 +169.099010379212 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090791712392 +20 +-720.287768351753 +30 +170.665180957976 +11 +466.630441768332 +21 +-695.289054806558 +31 +189.529056864572 +12 +464.090789844927 +22 +-696.627200742591 +32 +191.294034464012 +13 +464.090789844927 +23 +-696.627200742591 +33 +191.294034464012 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317783384355 +20 +-699.580940660874 +30 +195.189933989489 +11 +451.68334645801 +21 +-723.691181151156 +31 +174.068593757036 +12 +451.683344551435 +22 +-699.535098538027 +32 +195.129470137406 +13 +451.683344551435 +23 +-699.535098538027 +33 +195.129470137406 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.68334645801 +20 +-723.691181151156 +30 +174.068593757036 +11 +448.317783384355 +21 +-699.580940660874 +31 +195.189933989489 +12 +448.317785291547 +22 +-723.744834584347 +32 +174.122247190222 +13 +448.317785291547 +23 +-723.744834584347 +33 +174.122247190222 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838940960221 +20 +-633.447412164356 +30 +200.210851816573 +11 +429.267752143919 +21 +-606.639691213326 +31 +209.013906507055 +12 +432.838929652884 +22 +-606.570796271198 +32 +208.73070710808 +13 +432.838929652884 +23 +-606.570796271198 +33 +208.73070710808 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267752143919 +20 +-606.639691213326 +30 +209.013906507055 +11 +432.838940960221 +21 +-633.447412164356 +31 +200.210851816573 +12 +429.267763467221 +22 +-633.554254686993 +32 +200.482021877632 +13 +429.267763467221 +23 +-633.554254686993 +33 +200.482021877632 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683316658874 +20 +-613.239395048328 +30 +236.143333156642 +11 +455.006097921195 +21 +-643.590691959854 +31 +225.95519307716 +12 +455.006085098156 +22 +-613.111377811381 +32 +235.617099433291 +13 +455.006085098156 +23 +-613.111377811381 +33 +235.617099433291 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006097921195 +20 +-643.590691959854 +30 +225.95519307716 +11 +451.683316658874 +21 +-613.239395048328 +31 +236.143333156642 +12 +451.683329511579 +22 +-643.789222672817 +32 +226.45907411243 +13 +451.683329511579 +23 +-643.789222672817 +33 +226.45907411243 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.179983602711226 +20 +-280.294079999999 +30 +2125.50255258978 +11 +46.8683973137003 +21 +-186.862719999999 +31 +2125.50255258978 +12 +0.179983602711646 +22 +-186.862719999999 +32 +2125.50255258978 +13 +0.179983602711646 +23 +-186.862719999999 +33 +2125.50255258978 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +46.8683973137003 +20 +-186.862719999999 +30 +2125.50255258978 +11 +0.179983602711226 +21 +-280.294079999999 +31 +2125.50255258978 +12 +46.8683973136999 +22 +-280.294079999999 +32 +2125.50255258978 +13 +46.8683973136999 +23 +-280.294079999999 +33 +2125.50255258978 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221360398304 +20 +-645.663323591295 +30 +124.074113264079 +11 +718.363103364091 +21 +-622.121886696301 +31 +122.645633187677 +12 +718.363106545679 +22 +-637.12298630735 +32 +112.809643814588 +13 +718.363106545679 +23 +-637.12298630735 +33 +112.809643814588 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363103364091 +20 +-622.121886696301 +30 +122.645633187677 +11 +702.221360398304 +21 +-645.663323591295 +31 +124.074113264079 +12 +702.22135687427 +22 +-629.047597461153 +32 +134.968788313225 +13 +702.22135687427 +23 +-629.047597461153 +33 +134.968788313225 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840122392167 +20 +-781.931785179335 +30 +23.3578378611765 +11 +466.630399083827 +21 +-784.205377362117 +31 +31.3170895287116 +12 +466.630394345883 +22 +-784.472871509203 +32 +23.3578378599218 +13 +466.630394345883 +23 +-784.472871509203 +33 +23.3578378599218 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630399083827 +20 +-784.205377362117 +30 +31.3170895287116 +11 +468.840122392167 +21 +-781.931785179335 +31 +23.3578378611765 +12 +468.840126975903 +22 +-781.672997259934 +32 +31.0580369189494 +13 +468.840126975903 +23 +-781.672997259934 +33 +31.0580369189494 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575572828439 +20 +-691.225448319662 +30 +141.602860928812 +11 +454.431275216977 +21 +-669.689208643299 +31 +155.763553572255 +12 +454.431276722139 +22 +-688.759443912117 +32 +139.136856521515 +13 +454.431276722139 +23 +-688.759443912117 +33 +139.136856521515 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431275216977 +20 +-669.689208643299 +30 +155.763553572255 +11 +453.575572828439 +21 +-691.225448319662 +31 +141.602860928812 +12 +453.575571294939 +22 +-671.796177947369 +32 +158.542588616663 +13 +453.575571294939 +23 +-671.796177947369 +33 +158.542588616663 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006069025402 +20 +-790.658170470477 +30 +31.9771884161607 +11 +451.683316658874 +21 +-785.765920539638 +31 +63.616807647956 +12 +451.683300548936 +22 +-791.196939781596 +32 +32.0323039932388 +13 +451.683300548936 +23 +-791.196939781596 +33 +32.0323039932388 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683316658874 +20 +-785.765920539638 +30 +63.616807647956 +11 +455.006069025402 +21 +-790.658170470477 +31 +31.9771884161607 +12 +455.006085098156 +22 +-785.239686816274 +32 +63.4887904110616 +13 +455.006085098156 +23 +-785.239686816274 +33 +63.4887904110616 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466065703719 +20 +-627.348021252322 +30 +99.9167335104564 +11 +744.27505599199 +21 +-605.41026540619 +31 +92.9100649699753 +12 +744.27505834726 +22 +-616.515297047424 +32 +85.6286672029373 +13 +744.27505834726 +23 +-616.515297047424 +33 +85.6286672029373 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.27505599199 +20 +-605.41026540619 +30 +92.9100649699753 +11 +732.466065703719 +21 +-627.348021252322 +31 +99.9167335104564 +12 +732.466062914084 +22 +-614.194966001222 +32 +108.540988733599 +13 +732.466062914084 +23 +-614.194966001222 +33 +108.540988733599 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269972243544 +20 +-612.537006285544 +30 +233.256044045395 +11 +464.090775113584 +21 +-642.024842985963 +31 +221.980972610863 +12 +464.090762524528 +22 +-612.101685596006 +32 +231.466577935614 +13 +464.090762524528 +23 +-612.101685596006 +33 +231.466577935614 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090775113584 +20 +-642.024842985963 +30 +221.980972610863 +11 +461.269972243544 +21 +-612.537006285544 +31 +233.256044045395 +12 +461.26998493348 +22 +-642.699946567149 +32 +223.694427829008 +13 +461.26998493348 +23 +-642.699946567149 +33 +223.694427829008 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546366648706 +20 +-664.778393037384 +30 +149.286354566558 +11 +602.13329645121 +21 +-645.022448764174 +31 +163.393359945326 +12 +623.546362358205 +22 +-644.548798426367 +32 +162.550587374486 +13 +623.546362358205 +23 +-644.548798426367 +33 +162.550587374486 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.13329645121 +20 +-645.022448764174 +30 +163.393359945326 +11 +623.546366648706 +21 +-664.778393037384 +31 +149.286354566558 +12 +602.13330076513 +22 +-665.362464994464 +32 +150.056725386733 +13 +602.13330076513 +23 +-665.362464994464 +33 +150.056725386733 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0163050776986444 +20 +-703.948386395801 +30 +154.325799003669 +11 +429.267776717416 +21 +-722.503058608961 +31 +133.044085628428 +12 +0.016303397997907 +22 +-722.503108278541 +32 +133.044187229337 +13 +0.016303397997907 +23 +-722.503108278541 +33 +133.044187229337 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267776717416 +20 +-722.503058608961 +30 +133.044085628428 +11 +0.0163050776986444 +21 +-703.948386395801 +31 +154.325799003669 +12 +429.267778397118 +22 +-703.948312537967 +32 +154.325725145835 +13 +429.267778397118 +23 +-703.948312537967 +33 +154.325725145835 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721745102502 +20 +-678.931345516719 +30 +167.953679054935 +11 +442.839485482368 +21 +-657.071290040049 +31 +184.832214227177 +12 +445.721740244506 +22 +-656.026027291755 +32 +182.972342518915 +13 +445.721740244506 +23 +-656.026027291755 +33 +182.972342518915 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839485482368 +20 +-657.071290040049 +30 +184.832214227177 +11 +445.721745102502 +21 +-678.931345516719 +31 +167.953679054935 +12 +442.839490392048 +22 +-680.220295673638 +32 +169.6537686923 +13 +442.839490392048 +23 +-680.220295673638 +33 +169.6537686923 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090789844927 +20 +-740.916621855406 +30 +147.004613346736 +11 +461.270001665299 +21 +-721.590015329221 +31 +171.967427935313 +12 +461.269999782869 +22 +-742.384173786494 +32 +148.117261370797 +13 +461.269999782869 +23 +-742.384173786494 +33 +148.117261370797 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.270001665299 +20 +-721.590015329221 +30 +171.967427935313 +11 +464.090789844927 +21 +-740.916621855406 +31 +147.004613346736 +12 +464.090791712392 +22 +-720.287768351753 +32 +170.665180957976 +13 +464.090791712392 +23 +-720.287768351753 +33 +170.665180957976 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269999782869 +20 +-742.384173786494 +30 +148.117261370797 +11 +458.222260471925 +21 +-722.603322716877 +31 +172.980735322867 +12 +458.222258577851 +22 +-743.526108574926 +32 +148.983037664963 +13 +458.222258577851 +23 +-743.526108574926 +33 +148.983037664963 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222260471925 +20 +-722.603322716877 +30 +172.980735322867 +11 +461.269999782869 +21 +-742.384173786494 +31 +148.117261370797 +12 +461.270001665299 +22 +-721.590015329221 +32 +171.967427935313 +13 +461.270001665299 +23 +-721.590015329221 +33 +171.967427935313 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683281480069 +20 +-549.621181308374 +30 +242.650939792116 +11 +455.00604998394 +21 +-186.86272 +31 +242.110623248711 +12 +451.683281480069 +22 +-186.86272 +32 +242.650939792116 +13 +451.683281480069 +23 +-186.86272 +33 +242.650939792116 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.00604998394 +20 +-186.86272 +30 +242.110623248711 +11 +451.683281480069 +21 +-549.621181308374 +31 +242.650939792116 +12 +455.00604998394 +22 +-549.612103415805 +32 +242.110623248711 +13 +455.00604998394 +23 +-549.612103415805 +33 +242.110623248711 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997696774917 +20 +-665.645302851503 +30 +116.022715463229 +11 +717.894077714131 +21 +-692.709977485149 +31 +110.455949073024 +12 +736.997695535365 +22 +-679.337949441333 +32 +100.317732616843 +13 +736.997695535365 +23 +-679.337949441333 +33 +100.317732616843 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894077714131 +20 +-692.709977485149 +30 +110.455949073024 +11 +736.997696774917 +21 +-665.645302851503 +31 +116.022715463229 +12 +717.894079090038 +22 +-677.51110607242 +32 +127.888518682951 +13 +717.894079090038 +23 +-677.51110607242 +33 +127.888518682951 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894077714131 +20 +-692.709977485149 +30 +110.455949073024 +11 +696.758806378212 +21 +-687.497596031337 +31 +137.875008640862 +12 +696.758804887548 +22 +-703.964135051352 +32 +118.98846898236 +13 +696.758804887548 +23 +-703.964135051352 +33 +118.98846898236 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758806378212 +20 +-687.497596031337 +30 +137.875008640862 +11 +717.894077714131 +21 +-692.709977485149 +31 +110.455949073024 +12 +717.894079090038 +22 +-677.51110607242 +32 +127.888518682951 +13 +717.894079090038 +23 +-677.51110607242 +33 +127.888518682951 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829316563608 +20 +-668.759576574313 +30 +23.3578379800722 +11 +753.739272918395 +21 +-687.397248351576 +31 +39.6867423818656 +12 +753.739264589701 +22 +-690.205036468984 +32 +23.3578379709152 +13 +753.739264589701 +23 +-690.205036468984 +33 +23.3578379709152 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739272918395 +20 +-687.397248351576 +30 +39.6867423818656 +11 +767.829316563608 +21 +-668.759576574313 +31 +23.3578379800722 +12 +767.82932233817 +22 +-666.812843070624 +32 +34.6792140832892 +13 +767.82932233817 +23 +-666.812843070624 +33 +34.6792140832892 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839492038848 +20 +-701.085065061495 +30 +151.462477669651 +11 +439.690620823844 +21 +-681.255534297249 +31 +171.019219664594 +12 +442.839490392048 +22 +-680.220295673638 +32 +169.6537686923 +13 +442.839490392048 +23 +-680.220295673638 +33 +169.6537686923 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690620823844 +20 +-681.255534297249 +30 +171.019219664594 +11 +442.839492038848 +21 +-701.085065061495 +31 +151.462477669651 +12 +439.690622484567 +22 +-702.296711761968 +32 +152.674124370004 +13 +439.690622484567 +23 +-702.296711761968 +33 +152.674124370004 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222230868175 +20 +-784.271054681722 +30 +63.2531519626526 +11 +455.006097921195 +21 +-775.577780463213 +31 +93.968104560508 +12 +455.006085098156 +22 +-785.239686816274 +32 +63.4887904110616 +13 +455.006085098156 +23 +-785.239686816274 +33 +63.4887904110616 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006097921195 +20 +-775.577780463213 +30 +93.968104560508 +11 +458.222230868175 +21 +-784.271054681722 +31 +63.2531519626526 +12 +458.222243636608 +22 +-774.650292730724 +32 +93.6026725589312 +13 +458.222243636608 +23 +-774.650292730724 +33 +93.6026725589312 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006085098156 +20 +-785.239686816274 +30 +63.4887904110616 +11 +451.683329511579 +21 +-776.081661498503 +31 +94.1666352734205 +12 +451.683316658874 +22 +-785.765920539638 +32 +63.616807647956 +13 +451.683316658874 +23 +-785.765920539638 +33 +63.616807647956 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683329511579 +20 +-776.081661498503 +30 +94.1666352734205 +11 +455.006085098156 +21 +-785.239686816274 +31 +63.4887904110616 +12 +455.006097921195 +22 +-775.577780463213 +32 +93.968104560508 +13 +455.006097921195 +23 +-775.577780463213 +33 +93.968104560508 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +843.130722681614 +20 +-608.45291709122 +30 +-4.11489509133389e-11 +11 +838.782876772251 +21 +-630.31101453706 +31 +23.3578380792528 +12 +838.782876772249 +22 +-630.311014537056 +32 +-1.18393472803291e-10 +13 +838.782876772249 +23 +-630.311014537056 +33 +-1.18393472803291e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +838.782876772251 +20 +-630.31101453706 +30 +23.3578380792528 +11 +843.130722681614 +21 +-608.45291709122 +31 +-4.11489509133389e-11 +12 +843.130722681617 +22 +-608.452917091224 +32 +23.3578380793307 +13 +843.130722681617 +23 +-608.452917091224 +33 +23.3578380793307 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +772.221088848008 +20 +-745.599413064465 +30 +-2.18378204408509e-10 +11 +746.929122901678 +21 +-767.779871902217 +31 +23.3578380791593 +12 +746.929122901675 +22 +-767.779871902213 +32 +-2.12061479487602e-10 +13 +746.929122901675 +23 +-767.779871902213 +33 +-2.12061479487602e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +746.929122901678 +20 +-767.779871902217 +30 +23.3578380791593 +11 +772.221088848008 +21 +-745.599413064465 +31 +-2.18378204408509e-10 +12 +772.221088848011 +22 +-745.599413064469 +32 +23.3578380791531 +13 +772.221088848011 +23 +-745.599413064469 +33 +23.3578380791531 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.22135687427 +20 +-684.591375697813 +30 +79.4250100709702 +11 +718.363106545679 +21 +-662.432231199989 +31 +87.5003989193992 +12 +718.363103364091 +22 +-672.268220571567 +32 +72.49929930736 +13 +718.363103364091 +23 +-672.268220571567 +33 +72.49929930736 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363106545679 +20 +-662.432231199989 +30 +87.5003989193992 +11 +702.22135687427 +21 +-684.591375697813 +31 +79.4250100709702 +12 +702.221360398304 +22 +-673.696700650341 +32 +96.0407362022104 +13 +702.221360398304 +23 +-673.696700650341 +33 +96.0407362022104 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839466299903 +20 +-754.702000509797 +30 +56.0599621810555 +11 +445.721707495526 +21 +-757.270638693351 +31 +28.5617953495419 +12 +442.839452384975 +22 +-759.393032819931 +32 +28.7789085623947 +13 +442.839452384975 +23 +-759.393032819931 +33 +28.7789085623947 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721707495526 +20 +-757.270638693351 +30 +28.5617953495419 +11 +442.839466299903 +21 +-754.702000509797 +31 +56.0599621810555 +12 +445.721721263973 +22 +-752.62898843986 +32 +55.5556638784362 +13 +445.721721263973 +23 +-752.62898843986 +33 +55.5556638784362 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +847.545902396357 +20 +-186.86272 +30 +3.60955709766131e-13 +11 +847.54590239636 +21 +-563.749226612819 +31 +23.3578380793719 +12 +847.545902396357 +22 +-563.749226612815 +32 +1.80477854883065e-13 +13 +847.545902396357 +23 +-563.749226612815 +33 +1.80477854883065e-13 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +847.54590239636 +20 +-563.749226612819 +30 +23.3578380793719 +11 +847.545902396357 +21 +-186.86272 +31 +3.60955709766131e-13 +12 +847.545902396362 +22 +56.1856515498016 +32 +1.46187062455283e-11 +13 +847.545902396362 +23 +56.1856515498016 +33 +1.46187062455283e-11 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +847.54590239636 +20 +-563.749226612819 +30 +23.3578380793719 +11 +847.545902396362 +21 +56.1856515498016 +31 +1.46187062455283e-11 +12 +847.545902396365 +22 +56.1856515497976 +32 +23.3578380793863 +13 +847.545902396365 +23 +56.1856515497976 +33 +23.3578380793863 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281980096118 +20 +-754.771251996272 +30 +28.306117626709 +11 +450.471084922909 +21 +-752.099463345238 +31 +23.3578378619863 +12 +448.28197715053 +22 +-754.937553544539 +32 +23.3578378606726 +13 +448.28197715053 +23 +-754.937553544539 +33 +23.3578378606726 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471084922909 +20 +-752.099463345238 +30 +23.3578378619863 +11 +448.281980096118 +21 +-754.771251996272 +31 +28.306117626709 +12 +450.471087696265 +22 +-751.942885609203 +32 +28.0167869283821 +13 +450.471087696265 +23 +-751.942885609203 +33 +28.0167869283821 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739249813186 +20 +-186.86272 +30 +141.649769387185 +11 +736.99765201229 +21 +-548.245280356442 +31 +160.753391204502 +12 +753.739249813186 +22 +-547.924349168088 +32 +141.649769387184 +13 +753.739249813186 +23 +-547.924349168088 +33 +141.649769387184 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.99765201229 +20 +-548.245280356442 +30 +160.753391204502 +11 +753.739249813186 +21 +-186.86272 +31 +141.649769387185 +12 +736.99765201229 +22 +-186.86272 +32 +160.753391204502 +13 +736.99765201229 +23 +-186.86272 +33 +160.753391204502 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797687662105 +20 +-667.530828563864 +30 +152.916709017132 +11 +454.667765582876 +21 +-645.022494242574 +31 +163.393370075456 +12 +454.667769896794 +22 +-665.362499898554 +32 +150.056742450276 +13 +454.667769896794 +23 +-665.362499898554 +33 +150.056742450276 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667765582876 +20 +-645.022494242574 +30 +163.393370075456 +11 +454.797687662105 +21 +-667.530828563864 +31 +152.916709017132 +12 +454.797683261242 +22 +-646.78088064753 +32 +166.522129452237 +13 +454.797683261242 +23 +-646.78088064753 +33 +166.522129452237 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221318561055 +20 +-548.126641526877 +30 +153.690618001708 +11 +684.332852026746 +21 +-186.86272 +31 +165.499614915081 +12 +702.221318561055 +22 +-186.86272 +32 +153.690618001708 +13 +702.221318561055 +23 +-186.86272 +33 +153.690618001708 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332852026746 +20 +-186.86272 +30 +165.499614915081 +11 +702.221318561055 +21 +-548.126641526877 +31 +153.690618001708 +12 +684.332852026746 +22 +-548.325028948197 +32 +165.499614915081 +13 +684.332852026746 +23 +-548.325028948197 +33 +165.499614915081 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838954191733 +20 +-722.270804730449 +30 +132.867998161508 +11 +436.335620774804 +21 +-737.047580997407 +31 +108.905866027708 +12 +432.838949191021 +22 +-737.730681730485 +32 +109.289774750901 +13 +432.838949191021 +23 +-737.730681730485 +33 +109.289774750901 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335620774804 +20 +-737.047580997407 +30 +108.905866027708 +11 +432.838954191733 +21 +-722.270804730449 +31 +132.867998161508 +12 +436.335625756533 +22 +-721.646389233184 +32 +132.394587199654 +13 +436.335625756533 +23 +-721.646389233184 +33 +132.394587199654 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.26772029492 +20 +-549.153237717187 +30 +214.795486963908 +11 +0.0162469754877819 +21 +-186.86272 +31 +214.795486963908 +12 +429.26772029492 +22 +-186.86272 +32 +214.795486963908 +13 +429.26772029492 +23 +-186.86272 +33 +214.795486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0162469754877819 +20 +-186.86272 +30 +214.795486963908 +11 +429.26772029492 +21 +-549.153237717187 +31 +214.795486963908 +12 +0.0162469754877819 +22 +-549.153365442471 +32 +214.795486963908 +13 +0.0162469754877819 +23 +-549.153365442471 +33 +214.795486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690622484567 +20 +-702.296711761968 +30 +152.674124370004 +11 +436.335625756533 +21 +-682.017174593568 +31 +172.023801843262 +12 +439.690620823844 +22 +-681.255534297249 +32 +171.019219664594 +13 +439.690620823844 +23 +-681.255534297249 +33 +171.019219664594 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335625756533 +20 +-682.017174593568 +30 +172.023801843262 +11 +439.690622484567 +21 +-702.296711761968 +31 +152.674124370004 +12 +436.335627427501 +22 +-703.188137968552 +32 +153.565550576497 +13 +436.335627427501 +23 +-703.188137968552 +33 +153.565550576497 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957368701467 +20 +-738.899252779403 +30 +79.5166578326792 +11 +649.884119483233 +21 +-734.56856186502 +31 +107.512580906988 +12 +649.884111397057 +22 +-746.458660352302 +32 +82.4950785735168 +13 +649.884111397057 +23 +-746.458660352302 +33 +82.4950785735168 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884119483233 +20 +-734.56856186502 +30 +107.512580906988 +11 +673.957368701467 +21 +-738.899252779403 +31 +79.5166578326792 +12 +673.957376463676 +22 +-727.485522237732 +32 +103.531852556699 +13 +673.957376463676 +23 +-727.485522237732 +33 +103.531852556699 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275052115393 +20 +-648.23289118406 +30 +43.7940230954864 +11 +753.576410189591 +21 +-625.658275857869 +31 +46.3041482621511 +12 +753.576407084801 +22 +-630.223630997654 +32 +36.698358790781 +13 +753.576407084801 +23 +-630.223630997654 +33 +36.698358790781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576410189591 +20 +-625.658275857869 +30 +46.3041482621511 +11 +744.275052115393 +21 +-648.23289118406 +31 +43.7940230954864 +12 +744.27505599199 +22 +-642.532652352182 +32 +55.7876780202442 +13 +744.27505599199 +23 +-642.532652352182 +33 +55.7876780202442 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269956337624 +20 +-788.240871473567 +30 +31.7299058573872 +11 +458.222230868175 +21 +-784.271054681722 +31 +63.2531519626526 +12 +458.222214863865 +22 +-789.666464186592 +32 +31.8757394304439 +13 +458.222214863865 +23 +-789.666464186592 +33 +31.8757394304439 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222230868175 +20 +-784.271054681722 +30 +63.2531519626526 +11 +461.269956337624 +21 +-788.240871473567 +31 +31.7299058573872 +12 +461.269972243544 +22 +-782.87863142832 +32 +62.9144188854628 +13 +461.269972243544 +23 +-782.87863142832 +33 +62.9144188854628 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130182819951 +20 +-621.196954326058 +30 +23.3578379966277 +11 +779.024158535186 +21 +-644.605714246329 +31 +29.2769308468913 +12 +779.024155516104 +22 +-645.623514226953 +32 +23.3578379886926 +13 +779.024155516104 +23 +-645.623514226953 +33 +23.3578379886926 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024158535186 +20 +-644.605714246329 +30 +29.2769308468913 +11 +787.130182819951 +21 +-621.196954326058 +31 +23.3578379966277 +12 +787.130182929858 +22 +-621.15990220955 +32 +23.5733173858747 +13 +787.130182929858 +23 +-621.15990220955 +33 +23.5733173858747 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024155516104 +20 +-645.623514226953 +30 +23.3578379886926 +11 +767.82932233817 +21 +-666.812843070624 +31 +34.6792140832892 +12 +767.829316563608 +22 +-668.759576574313 +32 +23.3578379800722 +13 +767.829316563608 +23 +-668.759576574313 +33 +23.3578379800722 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.82932233817 +20 +-666.812843070624 +30 +34.6792140832892 +11 +779.024155516104 +21 +-645.623514226953 +31 +23.3578379886926 +12 +779.024158535186 +22 +-644.605714246329 +32 +29.2769308468913 +13 +779.024158535186 +23 +-644.605714246329 +33 +29.2769308468913 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.26998493348 +20 +-773.317015214971 +30 +93.0773591680305 +11 +458.222252930963 +21 +-760.983658189012 +31 +122.358116586891 +12 +458.222243636608 +22 +-774.650292730724 +32 +93.6026725589312 +13 +458.222243636608 +23 +-774.650292730724 +33 +93.6026725589312 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222252930963 +20 +-760.983658189012 +30 +122.358116586891 +11 +461.26998493348 +21 +-773.317015214971 +31 +93.0773591680305 +12 +461.269994170696 +22 +-759.734399297279 +32 +121.656022816523 +13 +461.269994170696 +23 +-759.734399297279 +33 +121.656022816523 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101764681482 +20 +-710.482718842918 +30 +160.860131450129 +11 +472.107209463225 +21 +-732.435769686289 +31 +140.574720545467 +12 +473.101762926689 +22 +-729.866935555387 +32 +138.627118353444 +13 +473.101762926689 +23 +-729.866935555387 +33 +138.627118353444 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107209463225 +20 +-732.435769686289 +30 +140.574720545467 +11 +473.101764681482 +21 +-710.482718842918 +31 +160.860131450129 +12 +472.107211244211 +22 +-712.762199391597 +32 +163.139611998578 +13 +472.107211244211 +23 +-712.762199391597 +33 +163.139611998578 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683300548936 +20 +-791.196939781596 +30 +32.0323039932388 +11 +448.317755482775 +21 +-785.839646973143 +31 +63.6347444795237 +12 +448.317739367628 +22 +-791.272422434329 +32 +32.0400273988949 +13 +448.317739367628 +23 +-791.272422434329 +33 +32.0400273988949 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317755482775 +20 +-785.839646973143 +30 +63.6347444795237 +11 +451.683300548936 +21 +-791.196939781596 +31 +32.0323039932388 +12 +451.683316658874 +22 +-785.765920539638 +32 +63.616807647956 +13 +451.683316658874 +23 +-785.765920539638 +33 +63.616807647956 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006112926336 +20 +-744.320489807817 +30 +149.585310783685 +11 +451.68334645801 +21 +-723.691181151156 +31 +174.068593757036 +12 +451.683344551435 +22 +-744.752057529093 +32 +149.912511141786 +13 +451.683344551435 +23 +-744.752057529093 +33 +149.912511141786 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.68334645801 +20 +-723.691181151156 +30 +174.068593757036 +11 +455.006112926336 +21 +-744.320489807817 +31 +149.585310783685 +12 +455.006114828511 +22 +-723.308225016813 +32 +173.685637622731 +13 +455.006114828511 +23 +-723.308225016813 +33 +173.685637622731 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683344551435 +20 +-744.752057529093 +30 +149.912511141786 +11 +448.317785291547 +21 +-723.744834584347 +31 +174.122247190222 +12 +448.317783384355 +22 +-744.812521381181 +32 +149.958353264626 +13 +448.317783384355 +23 +-744.812521381181 +33 +149.958353264626 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317785291547 +20 +-723.744834584347 +30 +174.122247190222 +11 +451.683344551435 +21 +-744.752057529093 +31 +149.912511141786 +12 +451.68334645801 +22 +-723.691181151156 +32 +174.068593757036 +13 +451.68334645801 +23 +-723.691181151156 +33 +174.068593757036 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317783384355 +20 +-744.812521381181 +30 +149.958353264626 +11 +6.49966391634282e-05 +21 +-723.744911722756 +31 +174.12232432863 +12 +6.30894498883872e-05 +22 +-744.812573256956 +32 +149.958459378386 +13 +6.30894498883872e-05 +23 +-744.812573256956 +33 +149.958459378386 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +6.49966391634282e-05 +20 +-723.744911722756 +30 +174.12232432863 +11 +448.317783384355 +21 +-744.812521381181 +31 +149.958353264626 +12 +448.317785291547 +22 +-723.744834584347 +32 +174.122247190222 +13 +448.317785291547 +23 +-723.744834584347 +33 +174.122247190222 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884111397057 +20 +-632.11766596993 +30 +196.836072967405 +11 +673.957376463676 +21 +-653.154439951202 +31 +177.862934850716 +12 +673.957368701467 +22 +-629.139245228331 +32 +189.276665394806 +13 +673.957368701467 +23 +-629.139245228331 +33 +189.276665394806 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957376463676 +20 +-653.154439951202 +30 +177.862934850716 +11 +649.884111397057 +21 +-632.11766596993 +31 +196.836072967405 +12 +649.884119483233 +22 +-657.135168302204 +32 +184.945974477603 +13 +649.884119483233 +23 +-657.135168302204 +33 +184.945974477603 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +794.401547685756 +20 +-720.307447118133 +30 +-2.12061479487602e-10 +11 +772.221088848011 +21 +-745.599413064469 +31 +23.3578380791531 +12 +772.221088848008 +22 +-745.599413064465 +32 +-2.18378204408509e-10 +13 +772.221088848008 +23 +-745.599413064465 +33 +-2.18378204408509e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +772.221088848011 +20 +-745.599413064469 +30 +23.3578380791531 +11 +794.401547685756 +21 +-720.307447118133 +31 +-2.12061479487602e-10 +12 +794.401547685759 +22 +-720.307447118137 +32 +23.3578380791593 +13 +794.401547685759 +23 +-720.307447118137 +33 +23.3578380791593 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090727919739 +20 +-549.540509167097 +30 +237.849027336606 +11 +466.630380370588 +21 +-186.86272 +31 +235.63929931572 +12 +464.090727919739 +22 +-186.86272 +32 +237.849027336606 +13 +464.090727919739 +23 +-186.86272 +33 +237.849027336606 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630380370588 +20 +-186.86272 +30 +235.63929931572 +11 +464.090727919739 +21 +-549.540509167097 +31 +237.849027336606 +12 +466.630380370588 +22 +-549.503386674047 +32 +235.63929931572 +13 +466.630380370588 +23 +-549.503386674047 +33 +235.63929931572 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739249813186 +20 +-547.924349168088 +30 +141.649769387184 +11 +736.997666927312 +21 +-573.300963343833 +31 +159.911321013811 +12 +753.73926375928 +22 +-571.352333223692 +32 +140.862402824032 +13 +753.73926375928 +23 +-571.352333223692 +33 +140.862402824032 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997666927312 +20 +-573.300963343833 +30 +159.911321013811 +11 +753.739249813186 +21 +-547.924349168088 +31 +141.649769387184 +12 +736.99765201229 +22 +-548.245280356442 +32 +160.753391204502 +13 +736.99765201229 +23 +-548.245280356442 +33 +160.753391204502 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894030194972 +20 +-548.526532054241 +30 +177.494989005398 +11 +736.997666927312 +21 +-573.300963343833 +31 +159.911321013811 +12 +736.99765201229 +22 +-548.245280356442 +32 +160.753391204502 +13 +736.99765201229 +23 +-548.245280356442 +33 +160.753391204502 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997666927312 +20 +-573.300963343833 +30 +159.911321013811 +11 +717.894030194972 +21 +-548.526532054241 +31 +177.494989005398 +12 +717.894045959123 +22 +-575.008661956696 +32 +176.604978855282 +13 +717.894045959123 +23 +-575.008661956696 +33 +176.604978855282 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758800443365 +20 +-647.656853392997 +30 +168.080894990074 +11 +717.894077714131 +21 +-660.078536464024 +31 +143.087390097436 +12 +717.894073612081 +22 +-640.737481474577 +32 +155.769021196026 +13 +717.894073612081 +23 +-640.737481474577 +33 +155.769021196026 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894077714131 +20 +-660.078536464024 +30 +143.087390097436 +11 +696.758800443365 +21 +-647.656853392997 +31 +168.080894990074 +12 +696.758804887548 +22 +-668.611056374494 +32 +154.341547662779 +13 +696.758804887548 +23 +-668.611056374494 +33 +154.341547662779 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201824130007 +20 +-611.213150017197 +30 +29.2082138072124 +11 +763.093075318335 +21 +-596.364508960869 +31 +23.3578379945534 +12 +760.201821668678 +22 +-613.067712196625 +32 +23.3578379899606 +13 +760.201821668678 +23 +-613.067712196625 +33 +23.3578379899606 +70 +0 + 0 +3DFACE + 8 +leg_half +10 +442.839477401402 +20 +-746.337240593148 +30 +82.4473163912804 +11 +445.721721263973 +21 +-752.62898843986 +31 +55.5556638784362 +12 +442.839466299903 +22 +-754.702000509797 +32 +56.0599621810555 +13 +442.839466299903 +23 +-754.702000509797 +33 +56.0599621810555 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721721263973 +20 +-752.62898843986 +30 +55.5556638784362 +11 +442.839477401402 +21 +-746.337240593148 +31 +82.4473163912804 +12 +445.721732248607 +22 +-744.352283565408 +32 +81.6652408886482 +13 +445.721732248607 +23 +-744.352283565408 +33 +81.6652408886482 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642053400866 +20 +-764.379514823734 +30 +58.4141748490874 +11 +473.101722427237 +21 +-772.614333460954 +31 +30.1313729498036 +12 +473.642038802113 +22 +-769.301079755069 +32 +29.7924413152051 +13 +473.642038802113 +23 +-769.301079755069 +33 +29.7924413152051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101722427237 +20 +-772.614333460954 +30 +30.1313729498036 +11 +473.642053400866 +21 +-764.379514823734 +31 +58.4141748490874 +12 +473.10173725466 +22 +-767.61567851106 +32 +59.2014293241045 +13 +473.10173725466 +23 +-767.61567851106 +33 +59.2014293241045 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.10173725466 +20 +-767.61567851106 +30 +59.2014293241045 +11 +472.107168359226 +21 +-775.821269863314 +31 +30.4594290412997 +12 +473.101722427237 +22 +-772.614333460954 +32 +30.1313729498036 +13 +473.101722427237 +23 +-772.614333460954 +33 +30.1313729498036 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107168359226 +20 +-775.821269863314 +30 +30.4594290412997 +11 +473.10173725466 +21 +-767.61567851106 +31 +59.2014293241045 +12 +472.107183407982 +22 +-770.747998603796 +32 +59.9634222143927 +13 +472.107183407982 +23 +-770.747998603796 +33 +59.9634222143927 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281993692064 +20 +-750.187755353023 +30 +54.9617894316777 +11 +450.471111788281 +21 +-739.369532914357 +31 +79.7020319508277 +12 +450.471101097006 +22 +-747.425197006803 +32 +54.2897470886059 +13 +450.471101097006 +23 +-747.425197006803 +33 +54.2897470886059 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471111788281 +20 +-739.369532914357 +30 +79.7020319508277 +11 +448.281993692064 +21 +-750.187755353023 +31 +54.9617894316777 +12 +448.282004539076 +22 +-742.014746414944 +32 +80.7442486966709 +13 +448.282004539076 +23 +-742.014746414944 +33 +80.7442486966709 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997691839832 +20 +-632.515984774395 +30 +141.140229605674 +11 +717.894077714131 +21 +-660.078536464024 +31 +143.087390097436 +12 +736.997695535365 +22 +-649.940320006495 +32 +129.715362054641 +13 +736.997695535365 +23 +-649.940320006495 +33 +129.715362054641 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894077714131 +20 +-660.078536464024 +30 +143.087390097436 +11 +736.997691839832 +21 +-632.515984774395 +31 +141.140229605674 +12 +717.894073612081 +22 +-640.737481474577 +32 +155.769021196026 +13 +717.894073612081 +23 +-640.737481474577 +33 +155.769021196026 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721721263973 +20 +-752.62898843986 +30 +55.5556638784362 +11 +448.282004539076 +21 +-742.014746414944 +31 +80.7442486966709 +12 +448.281993692064 +22 +-750.187755353023 +32 +54.9617894316777 +13 +448.281993692064 +23 +-750.187755353023 +33 +54.9617894316777 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282004539076 +20 +-742.014746414944 +30 +80.7442486966709 +11 +445.721721263973 +21 +-752.62898843986 +31 +55.5556638784362 +12 +445.721732248607 +22 +-744.352283565408 +32 +81.6652408886482 +13 +445.721732248607 +23 +-744.352283565408 +33 +81.6652408886482 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431276722139 +20 +-688.759443912117 +30 +139.136856521515 +11 +454.797687662105 +21 +-667.530828563864 +31 +152.916709017132 +12 +454.797689138238 +22 +-686.233268095701 +32 +136.610680705353 +13 +454.797689138238 +23 +-686.233268095701 +33 +136.610680705353 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797687662105 +20 +-667.530828563864 +30 +152.916709017132 +11 +454.431276722139 +21 +-688.759443912117 +31 +139.136856521515 +12 +454.431275216977 +22 +-669.689208643299 +32 +155.763553572255 +13 +454.431275216977 +23 +-669.689208643299 +33 +155.763553572255 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222243636608 +20 +-774.650292730724 +30 +93.6026725589312 +11 +455.006107255299 +21 +-761.852698834952 +31 +122.846524872111 +12 +455.006097921195 +22 +-775.577780463213 +32 +93.968104560508 +13 +455.006097921195 +23 +-775.577780463213 +33 +93.968104560508 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006107255299 +20 +-761.852698834952 +30 +122.846524872111 +11 +458.222243636608 +21 +-774.650292730724 +31 +93.6026725589312 +12 +458.222252930963 +22 +-760.983658189012 +32 +122.358116586891 +13 +458.222252930963 +23 +-760.983658189012 +33 +122.358116586891 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107183407982 +20 +-609.586009613252 +30 +221.125411221167 +11 +470.677509279169 +21 +-639.24331958749 +31 +214.92128705308 +12 +472.107195414063 +22 +-638.12348215123 +32 +212.079066347413 +13 +472.107195414063 +23 +-638.12348215123 +33 +212.079066347413 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677509279169 +20 +-639.24331958749 +30 +214.92128705308 +11 +472.107183407982 +21 +-609.586009613252 +31 +221.125411221167 +12 +470.677497105752 +22 +-610.308103138718 +32 +224.093716273781 +13 +470.677497105752 +23 +-610.308103138718 +33 +224.093716273781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838929652884 +20 +-758.353294490404 +30 +56.9482088735863 +11 +436.335587191701 +21 +-762.351784924648 +31 +29.0815795342117 +12 +432.838915479952 +22 +-763.131305674907 +32 +29.1613230247316 +13 +432.838915479952 +23 +-763.131305674907 +33 +29.1613230247316 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335587191701 +20 +-762.351784924648 +30 +29.0815795342117 +11 +432.838929652884 +21 +-758.353294490404 +31 +56.9482088735863 +12 +436.335601310833 +22 +-757.591910929275 +32 +56.7629871862785 +13 +436.335601310833 +23 +-757.591910929275 +33 +56.7629871862785 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +693.784141830299 +20 +-590.617873632807 +30 +-9.20437059903634e-12 +11 +698.091838084213 +21 +-577.37232127131 +31 +5.83945951982641 +12 +698.091838084213 +22 +-577.37232127131 +32 +-1.01067598734517e-11 +13 +698.091838084213 +23 +-577.37232127131 +33 +-1.01067598734517e-11 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +698.091838084213 +20 +-577.37232127131 +30 +5.83945951982641 +11 +693.784141830299 +21 +-590.617873632807 +31 +-9.20437059903634e-12 +12 +693.784141830299 +22 +-590.617873632807 +32 +5.83945951982749 +13 +693.784141830299 +23 +-590.617873632807 +33 +5.83945951982749 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +590.370902396357 +21 +-674.370540948851 +31 +1.80477854883065e-13 +12 +0.000467548731318024 +22 +-674.370540948851 +32 +1.80477854883065e-13 +13 +0.000467548731318024 +23 +-674.370540948851 +33 +1.80477854883065e-13 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +590.370902396357 +20 +-674.370540948851 +30 +1.80477854883065e-13 +11 +0.000467548731367373 +21 +-674.37054094885 +31 +5.83945951983706 +12 +590.370902396357 +22 +-674.37054094885 +32 +5.83945951983706 +13 +590.370902396357 +23 +-674.37054094885 +33 +5.83945951983706 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +603.993997054852 +20 +-671.47016230067 +30 +5.83945951983598 +11 +590.370902396357 +21 +-674.370540948851 +31 +1.80477854883065e-13 +12 +590.370902396357 +22 +-674.37054094885 +32 +5.83945951983706 +13 +590.370902396357 +23 +-674.37054094885 +33 +5.83945951983706 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +590.370902396357 +20 +-674.370540948851 +30 +1.80477854883065e-13 +11 +603.993997054852 +21 +-671.47016230067 +31 +5.83945951983598 +12 +603.993997054853 +22 +-671.470162300671 +32 +-5.41433564649196e-13 +13 +603.993997054853 +23 +-671.470162300671 +33 +-5.41433564649196e-13 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +617.239549416349 +20 +-667.162466046756 +30 +5.83945951983507 +11 +603.993997054853 +21 +-671.470162300671 +31 +-5.41433564649196e-13 +12 +603.993997054852 +22 +-671.47016230067 +32 +5.83945951983598 +13 +603.993997054852 +23 +-671.47016230067 +33 +5.83945951983598 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +603.993997054853 +20 +-671.470162300671 +30 +-5.41433564649196e-13 +11 +617.239549416349 +21 +-667.162466046756 +31 +5.83945951983507 +12 +617.23954941635 +22 +-667.162466046757 +32 +-1.62430069394759e-12 +13 +617.23954941635 +23 +-667.162466046757 +33 +-1.62430069394759e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.958402396357 +20 +-786.469309831078 +30 +-1.92750349015114e-10 +11 +688.787514114852 +21 +-801.347945386409 +31 +23.3578380792096 +12 +688.787514114849 +22 +-801.347945386405 +32 +-1.61527680120344e-10 +13 +688.787514114849 +23 +-801.347945386405 +33 +-1.61527680120344e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +718.958402396357 +21 +-786.469309831078 +31 +-1.92750349015114e-10 +12 +718.95840239636 +22 +-786.469309831082 +32 +23.3578380791782 +13 +718.95840239636 +23 +-786.469309831082 +33 +23.3578380791782 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221361580333 +20 +-660.639487120937 +30 +111.016899733167 +11 +718.363106545679 +21 +-637.12298630735 +31 +112.809643814588 +12 +718.363107612844 +22 +-650.643847155672 +32 +101.021259768909 +13 +718.363107612844 +23 +-650.643847155672 +33 +101.021259768909 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363106545679 +20 +-637.12298630735 +30 +112.809643814588 +11 +702.221361580333 +21 +-660.639487120937 +31 +111.016899733167 +12 +702.221360398304 +22 +-645.663323591295 +32 +124.074113264079 +13 +702.221360398304 +23 +-645.663323591295 +33 +124.074113264079 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.00720150166 +20 +-186.86272 +30 +48.7110294035543 +11 +793.570900047839 +21 +-545.937123520845 +31 +23.3578380793295 +12 +793.570900047839 +22 +-186.86272 +32 +23.3578380793295 +13 +793.570900047839 +23 +-186.86272 +33 +23.3578380793295 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +793.570900047839 +20 +-545.937123520845 +30 +23.3578380793295 +11 +792.00720150166 +21 +-186.86272 +31 +48.7110294035543 +12 +792.00720150166 +22 +-546.363038171439 +32 +48.7110294035543 +13 +792.00720150166 +23 +-546.363038171439 +33 +48.7110294035543 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630399083827 +20 +-784.205377362117 +30 +31.3170895287116 +11 +464.090762524528 +21 +-781.089165318495 +31 +62.4790981961044 +12 +464.090746745054 +22 +-786.408777774662 +32 +31.5424891402109 +13 +464.090746745054 +23 +-786.408777774662 +33 +31.5424891402109 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090762524528 +20 +-781.089165318495 +30 +62.4790981961044 +11 +466.630399083827 +21 +-784.205377362117 +31 +31.3170895287116 +12 +466.630414711229 +22 +-778.937031754263 +32 +61.9555523461604 +13 +466.630414711229 +23 +-778.937031754263 +33 +61.9555523461604 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829301759449 +20 +-186.86272 +30 +120.51449319742 +11 +753.739249813186 +21 +-547.924349168088 +31 +141.649769387184 +12 +767.829301759449 +22 +-547.569288532173 +32 +120.514493197419 +13 +767.829301759449 +23 +-547.569288532173 +33 +120.514493197419 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739249813186 +20 +-547.924349168088 +30 +141.649769387184 +11 +767.829301759449 +21 +-186.86272 +31 +120.51449319742 +12 +753.739249813186 +22 +-186.86272 +32 +141.649769387185 +13 +753.739249813186 +23 +-186.86272 +33 +141.649769387185 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840169183023 +20 +-693.751116561201 +30 +187.500558577709 +11 +466.6304436178 +21 +-718.721597772832 +31 +169.099010379212 +12 +468.840171011807 +22 +-716.921589517517 +32 +167.299002124079 +13 +468.840171011807 +23 +-716.921589517517 +33 +167.299002124079 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.6304436178 +20 +-718.721597772832 +30 +169.099010379212 +11 +468.840169183023 +21 +-693.751116561201 +31 +187.500558577709 +12 +466.630441768332 +22 +-695.289054806558 +32 +189.529056864572 +13 +466.630441768332 +23 +-695.289054806558 +33 +189.529056864572 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332896682708 +20 +-652.814503888805 +30 +133.506322083721 +11 +665.02138596315 +21 +-639.414516186541 +31 +153.414996741162 +12 +684.332892871929 +22 +-634.846784199308 +32 +145.28747843271 +13 +684.332892871929 +23 +-634.846784199308 +33 +145.28747843271 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.02138596315 +20 +-639.414516186541 +30 +153.414996741162 +11 +684.332896682708 +21 +-652.814503888805 +31 +133.506322083721 +12 +665.021389999784 +22 +-658.447133448378 +32 +140.935603497775 +13 +665.021389999784 +23 +-658.447133448378 +33 +140.935603497775 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101757695049 +20 +-663.582663624963 +30 +196.418146784964 +11 +472.107209463225 +21 +-690.197307940468 +31 +182.813182295542 +12 +473.101762926689 +22 +-688.249705748186 +32 +180.244348164837 +13 +473.101762926689 +23 +-688.249705748186 +33 +180.244348164837 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107209463225 +20 +-690.197307940468 +30 +182.813182295542 +11 +473.101757695049 +21 +-663.582663624963 +31 +196.418146784964 +12 +472.10720415349 +22 +-665.162054034067 +32 +199.228411696097 +13 +472.10720415349 +23 +-665.162054034067 +33 +199.228411696097 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.13329645121 +20 +-713.015947331523 +30 +95.3998613711292 +11 +623.546355296361 +21 +-722.557073202373 +31 +73.0778467179566 +12 +602.133289350819 +22 +-723.456525449862 +32 +73.4322395118387 +13 +602.133289350819 +23 +-723.456525449862 +33 +73.4322395118387 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546355296361 +20 +-722.557073202373 +30 +73.0778467179566 +11 +602.13329645121 +21 +-713.015947331523 +31 +95.3998613711292 +12 +623.546362358205 +22 +-712.173174760634 +32 +94.9262110334071 +13 +623.546362358205 +23 +-712.173174760634 +33 +94.9262110334071 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546362358205 +20 +-712.173174760634 +30 +94.9262110334071 +11 +644.636252442318 +21 +-718.985715046116 +31 +71.6707212889357 +12 +623.546355296361 +22 +-722.557073202373 +32 +73.0778467179566 +13 +623.546355296361 +23 +-722.557073202373 +33 +73.0778467179566 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636252442318 +20 +-718.985715046116 +30 +71.6707212889357 +11 +623.546362358205 +21 +-712.173174760634 +31 +94.9262110334071 +12 +644.636259351108 +22 +-708.826870972768 +32 +93.0455572990973 +13 +644.636259351108 +23 +-708.826870972768 +33 +93.0455572990973 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758783079627 +20 +-736.03100461107 +30 +51.5177928651329 +11 +673.957368701467 +21 +-738.899252779403 +31 +79.5166578326792 +12 +673.957358037872 +22 +-746.934060776874 +32 +54.170165314894 +13 +673.957358037872 +23 +-746.934060776874 +33 +54.170165314894 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957368701467 +20 +-738.899252779403 +30 +79.5166578326792 +11 +696.758783079627 +21 +-736.03100461107 +31 +51.5177928651329 +12 +696.758793128571 +22 +-728.459323997255 +32 +75.4033102397292 +13 +696.758793128571 +23 +-728.459323997255 +33 +75.4033102397292 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +590.370902396357 +20 +-820.924226612815 +30 +1.80477854883065e-13 +11 +0.000796879066902634 +21 +-820.924226610164 +31 +17.0475267240553 +12 +0.000467548731319434 +22 +-820.924226612815 +32 +1.80477854883065e-13 +13 +0.000467548731319434 +23 +-820.924226612815 +33 +1.80477854883065e-13 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.000796879066902634 +20 +-820.924226610164 +30 +17.0475267240553 +11 +590.37090239636 +21 +-820.924226612819 +31 +23.3578380793719 +12 +0.000467548734387557 +22 +-820.924226612819 +32 +23.3578380793719 +13 +0.000467548734387557 +23 +-820.924226612819 +33 +23.3578380793719 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +590.37090239636 +20 +-820.924226612819 +30 +23.3578380793719 +11 +0.000796879066902634 +21 +-820.924226610164 +31 +17.0475267240553 +12 +590.370902396357 +22 +-820.924226612815 +32 +1.80477854883065e-13 +13 +590.370902396357 +23 +-820.924226612815 +33 +1.80477854883065e-13 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +673.957327625231 +20 +-548.951311917762 +30 +202.779879874335 +11 +696.758754005207 +21 +-186.86272 +31 +191.585040951661 +12 +673.957327625231 +22 +-186.86272 +32 +202.779879874335 +13 +673.957327625231 +23 +-186.86272 +33 +202.779879874335 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758754005207 +20 +-186.86272 +30 +191.585040951661 +11 +673.957327625231 +21 +-548.951311917762 +31 +202.779879874335 +12 +696.758754005207 +22 +-548.76324041817 +32 +191.585040951661 +13 +696.758754005207 +23 +-548.76324041817 +33 +191.585040951661 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281962880048 +20 +-549.007501396503 +30 +206.120647039576 +11 +445.721690152324 +21 +-186.86272 +31 +208.627211339945 +12 +448.281962880048 +22 +-186.86272 +32 +206.120647039576 +13 +448.281962880048 +23 +-186.86272 +33 +206.120647039576 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721690152324 +20 +-186.86272 +30 +208.627211339945 +11 +448.281962880048 +21 +-549.007501396503 +31 +206.120647039576 +12 +445.721690152324 +22 +-549.049610517709 +32 +208.627211339945 +13 +445.721690152324 +23 +-549.049610517709 +33 +208.627211339945 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471119570638 +20 +-653.402150740311 +30 +178.303588160926 +11 +452.247001541956 +21 +-628.181198889296 +31 +186.844869872835 +12 +452.247009199941 +22 +-651.873941250939 +32 +175.584391651154 +13 +452.247009199941 +23 +-651.873941250939 +33 +175.584391651154 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247001541956 +20 +-628.181198889296 +30 +186.844869872835 +11 +450.471119570638 +21 +-653.402150740311 +31 +178.303588160926 +12 +450.471111788281 +22 +-629.324619346527 +32 +189.746945529741 +13 +450.471111788281 +23 +-629.324619346527 +33 +189.746945529741 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281993692064 +20 +-604.584376828467 +30 +200.565167970899 +11 +450.471087696265 +21 +-577.639374325348 +31 +202.320298229792 +12 +450.471101097006 +22 +-603.912334485117 +32 +197.802609624747 +13 +450.471101097006 +23 +-603.912334485117 +33 +197.802609624747 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471087696265 +20 +-577.639374325348 +30 +202.320298229792 +11 +448.281993692064 +21 +-604.584376828467 +31 +200.565167970899 +12 +448.281980096118 +22 +-577.92870502396 +32 +205.148664616833 +13 +448.281980096118 +23 +-577.92870502396 +33 +205.148664616833 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758770484001 +20 +-740.277270942125 +30 +26.8233094768247 +11 +673.957358037872 +21 +-746.934060776874 +31 +54.170165314894 +12 +673.957344671825 +22 +-751.440053094339 +32 +27.9652257853831 +13 +673.957344671825 +23 +-751.440053094339 +33 +27.9652257853831 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957358037872 +20 +-746.934060776874 +30 +54.170165314894 +11 +696.758770484001 +21 +-740.277270942125 +31 +26.8233094768247 +12 +696.758783079627 +22 +-736.03100461107 +32 +51.5177928651329 +13 +696.758783079627 +23 +-736.03100461107 +33 +51.5177928651329 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090746745054 +20 +-786.408777774662 +30 +31.5424891402109 +11 +461.269972243544 +21 +-782.87863142832 +31 +62.9144188854628 +12 +461.269956337624 +22 +-788.240871473567 +32 +31.7299058573872 +13 +461.269956337624 +23 +-788.240871473567 +33 +31.7299058573872 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269972243544 +20 +-782.87863142832 +30 +62.9144188854628 +11 +464.090746745054 +21 +-786.408777774662 +31 +31.5424891402109 +12 +464.090762524528 +22 +-781.089165318495 +32 +62.4790981961044 +13 +464.090762524528 +23 +-781.089165318495 +33 +62.4790981961044 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021389999784 +20 +-658.447133448378 +30 +140.935603497775 +11 +644.636259351108 +21 +-642.668144691721 +31 +159.204283586808 +12 +665.02138596315 +22 +-639.414516186541 +32 +153.414996741162 +13 +665.02138596315 +23 +-639.414516186541 +33 +153.414996741162 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636259351108 +20 +-642.668144691721 +30 +159.204283586808 +11 +665.021389999784 +21 +-658.447133448378 +31 +140.935603497775 +12 +644.636263548619 +22 +-662.459295238253 +32 +146.227531781659 +13 +644.636263548619 +23 +-662.459295238253 +33 +146.227531781659 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024140682123 +20 +-186.86272 +30 +97.713066817443 +11 +787.130167954486 +21 +-546.781824001004 +31 +73.639808098986 +12 +787.130167954486 +22 +-186.86272 +32 +73.639808098986 +13 +787.130167954486 +23 +-186.86272 +33 +73.639808098986 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130167954486 +20 +-546.781824001004 +30 +73.639808098986 +11 +779.024140682123 +21 +-186.86272 +31 +97.713066817443 +12 +779.024140682123 +22 +-547.186238711366 +32 +97.7130668174428 +13 +779.024140682123 +23 +-547.186238711366 +33 +97.7130668174428 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739289860341 +20 +-652.105388357143 +30 +102.482800970232 +11 +736.997695535365 +21 +-679.337949441333 +31 +100.317732616843 +12 +753.73928877638 +22 +-664.079300898903 +32 +88.749145475747 +13 +753.73928877638 +23 +-664.079300898903 +33 +88.749145475747 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997695535365 +20 +-679.337949441333 +30 +100.317732616843 +11 +753.739289860341 +21 +-652.105388357143 +31 +102.482800970232 +12 +736.997696774917 +22 +-665.645302851503 +32 +116.022715463229 +13 +736.997696774917 +23 +-665.645302851503 +33 +116.022715463229 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031425007948 +20 +-579.704781244013 +30 +37.0766018107078 +11 +764.878707491771 +21 +-566.32138210224 +31 +23.3578380017417 +12 +764.805052044838 +22 +-569.303684335783 +32 +23.3578380010606 +13 +764.805052044838 +23 +-569.303684335783 +33 +23.3578380010606 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.878707491771 +20 +-566.32138210224 +30 +23.3578380017417 +11 +764.031425007948 +21 +-579.704781244013 +31 +37.0766018107078 +12 +764.031424128692 +22 +-575.559109938211 +32 +39.7948544698768 +13 +764.031424128692 +23 +-575.559109938211 +33 +39.7948544698768 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133279596418 +20 +-730.806273217008 +30 +50.2468283798967 +11 +623.546333434853 +21 +-733.96634875632 +31 +26.1777702748551 +12 +602.133267369982 +22 +-734.928077619115 +32 +26.2761627640122 +13 +602.133267369982 +23 +-734.928077619115 +33 +26.2761627640122 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546333434853 +20 +-733.96634875632 +30 +26.1777702748551 +11 +602.133279596418 +21 +-730.806273217008 +31 +50.2468283798967 +12 +623.546345594915 +22 +-729.866920753093 +32 +50.0183042486409 +13 +623.546345594915 +23 +-729.866920753093 +33 +50.0183042486409 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667765582876 +20 +-713.015957461653 +30 +95.3999068495287 +11 +602.133289350819 +21 +-723.456525449862 +31 +73.4322395118387 +12 +454.667758482489 +22 +-723.456530152174 +32 +73.4322964107047 +13 +454.667758482489 +23 +-723.456530152174 +33 +73.4322964107047 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133289350819 +20 +-723.456525449862 +30 +73.4322395118387 +11 +454.667765582876 +21 +-713.015957461653 +31 +95.3999068495287 +12 +602.13329645121 +22 +-713.015947331523 +32 +95.3998613711292 +13 +602.13329645121 +23 +-713.015947331523 +33 +95.3998613711292 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677518140403 +20 +-751.514112490764 +30 +117.036156904666 +11 +468.84015475682 +21 +-767.174448290109 +31 +90.6571807720069 +12 +470.677509279169 +22 +-764.543874438695 +32 +89.6207321892548 +13 +470.677509279169 +23 +-764.543874438695 +33 +89.6207321892548 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.84015475682 +20 +-767.174448290109 +30 +90.6571807720069 +11 +470.677518140403 +21 +-751.514112490764 +31 +117.036156904666 +12 +468.84016373079 +22 +-753.978916343896 +32 +118.421395812685 +13 +468.84016373079 +23 +-753.978916343896 +33 +118.421395812685 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.938975880549 +20 +-818.724058836624 +30 +-6.38891606286052e-11 +11 +590.37090239636 +21 +-820.924226612819 +31 +23.3578380793719 +12 +590.370902396357 +22 +-820.924226612815 +32 +1.80477854883065e-13 +13 +590.370902396357 +23 +-820.924226612815 +33 +1.80477854883065e-13 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +590.37090239636 +20 +-820.924226612819 +30 +23.3578380793719 +11 +623.938975880549 +21 +-818.724058836624 +31 +-6.38891606286052e-11 +12 +623.938975880552 +22 +-818.724058836629 +32 +23.3578380793071 +13 +623.938975880552 +23 +-818.724058836629 +33 +23.3578380793071 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840142428527 +20 +-776.463572930403 +30 +61.353838580619 +11 +466.630399083827 +21 +-784.205377362117 +31 +31.3170895287116 +12 +468.840126975903 +22 +-781.672997259934 +32 +31.0580369189494 +13 +468.840126975903 +23 +-781.672997259934 +33 +31.0580369189494 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630399083827 +20 +-784.205377362117 +30 +31.3170895287116 +11 +468.840142428527 +21 +-776.463572930403 +31 +61.353838580619 +12 +466.630414711229 +22 +-778.937031754263 +32 +61.9555523461604 +13 +466.630414711229 +23 +-778.937031754263 +33 +61.9555523461604 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829301759449 +20 +-547.569288532173 +30 +120.514493197419 +11 +753.73926375928 +21 +-571.352333223692 +31 +140.862402824032 +12 +767.82931463357 +22 +-569.196470349584 +32 +119.787647909415 +13 +767.82931463357 +23 +-569.196470349584 +33 +119.787647909415 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73926375928 +20 +-571.352333223692 +30 +140.862402824032 +11 +767.829301759449 +21 +-547.569288532173 +31 +120.514493197419 +12 +753.739249813186 +22 +-547.924349168088 +32 +141.649769387184 +13 +753.739249813186 +23 +-547.924349168088 +33 +141.649769387184 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797653593913 +20 +-738.498463121584 +30 +26.6414790273437 +11 +454.667748728094 +21 +-730.806274098353 +31 +50.2468973323294 +12 +454.667736501664 +22 +-734.928076357629 +32 +26.2762441782473 +13 +454.667736501664 +23 +-734.928076357629 +33 +26.2762441782473 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667748728094 +20 +-730.806274098353 +30 +50.2468973323294 +11 +454.797653593913 +21 +-738.498463121584 +31 +26.6414790273437 +12 +454.797666066761 +22 +-734.293588076417 +32 +51.0952482583018 +13 +454.797666066761 +23 +-734.293588076417 +33 +51.0952482583018 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281980096118 +20 +-754.771251996272 +30 +28.306117626709 +11 +450.471101097006 +21 +-747.425197006803 +31 +54.2897470886059 +12 +450.471087696265 +22 +-751.942885609203 +32 +28.0167869283821 +13 +450.471087696265 +23 +-751.942885609203 +33 +28.0167869283821 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471101097006 +20 +-747.425197006803 +30 +54.2897470886059 +11 +448.281980096118 +21 +-754.771251996272 +31 +28.306117626709 +12 +448.281993692064 +22 +-750.187755353023 +32 +54.9617894316777 +13 +448.281993692064 +23 +-750.187755353023 +33 +54.9617894316777 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275046789786 +20 +-580.758079568763 +30 +102.623043056121 +11 +753.576397473233 +21 +-565.700992480648 +31 +85.6172131326287 +12 +753.576402819491 +22 +-576.182653575586 +32 +83.8148703207571 +13 +753.576402819491 +23 +-576.182653575586 +33 +83.8148703207571 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576397473233 +20 +-565.700992480648 +30 +85.6172131326287 +11 +744.275046789786 +21 +-580.758079568763 +31 +102.623043056121 +12 +744.275040114523 +22 +-567.670823535761 +32 +104.873423184286 +13 +744.275040114523 +23 +-567.670823535761 +33 +104.873423184286 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838897838644 +20 +-549.148351803013 +30 +214.504708726405 +11 +429.26772029492 +21 +-186.86272 +31 +214.795486963908 +12 +432.838897838644 +22 +-186.86272 +32 +214.504708726405 +13 +432.838897838644 +23 +-186.86272 +33 +214.504708726405 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.26772029492 +20 +-186.86272 +30 +214.795486963908 +11 +432.838897838644 +21 +-549.148351803013 +31 +214.504708726405 +12 +429.26772029492 +22 +-549.153237717187 +32 +214.795486963908 +13 +429.26772029492 +23 +-549.153237717187 +33 +214.795486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667769896794 +20 +-699.679329838522 +30 +115.739912506852 +11 +602.13329645121 +21 +-713.015947331523 +31 +95.3998613711292 +12 +454.667765582876 +22 +-713.015957461653 +32 +95.3999068495287 +13 +454.667765582876 +23 +-713.015957461653 +33 +95.3999068495287 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.13329645121 +20 +-713.015947331523 +30 +95.3998613711292 +11 +454.667769896794 +21 +-699.679329838522 +31 +115.739912506852 +12 +602.13330076513 +22 +-699.679312774979 +32 +115.739877602763 +13 +602.13330076513 +23 +-699.679312774979 +33 +115.739877602763 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.84016373079 +20 +-753.978916343896 +30 +118.421395812685 +11 +466.630427178961 +21 +-769.542842319152 +31 +91.5903304644009 +12 +468.84015475682 +22 +-767.174448290109 +32 +90.6571807720069 +13 +468.84015475682 +23 +-767.174448290109 +33 +90.6571807720069 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630427178961 +20 +-769.542842319152 +30 +91.5903304644009 +11 +468.84016373079 +21 +-753.978916343896 +31 +118.421395812685 +12 +466.630436254431 +22 +-756.198062094967 +32 +119.668573109345 +13 +466.630436254431 +23 +-756.198062094967 +33 +119.668573109345 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247009199941 +20 +-651.873941250939 +30 +175.584391651154 +11 +453.575559198051 +21 +-626.958539673324 +31 +183.741680540481 +12 +453.575566723046 +22 +-650.239827098532 +32 +172.676755002411 +13 +453.575566723046 +23 +-650.239827098532 +33 +172.676755002411 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575559198051 +20 +-626.958539673324 +30 +183.741680540481 +11 +452.247009199941 +21 +-651.873941250939 +31 +175.584391651154 +12 +452.247001541956 +22 +-628.181198889296 +32 +186.844869872835 +13 +452.247001541956 +23 +-628.181198889296 +33 +186.844869872835 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221343105619 +20 +-699.12426393804 +30 +42.5395709625037 +11 +718.363082853901 +21 +-688.112661424818 +31 +23.3578379602634 +12 +702.221333321817 +22 +-702.422601699266 +32 +23.3578379520354 +13 +702.221333321817 +23 +-702.422601699266 +33 +23.3578379520354 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363082853901 +20 +-688.112661424818 +30 +23.3578379602634 +11 +702.221343105619 +21 +-699.12426393804 +31 +42.5395709625037 +12 +718.363090933403 +22 +-685.388881228845 +32 +39.1981879427727 +13 +718.363090933403 +23 +-685.388881228845 +33 +39.1981879427727 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0 +20 +-549.622587401036 +30 +242.726639240051 +11 +448.317739367628 +21 +-581.662614799822 +31 +241.649835054513 +12 +448.31772029492 +22 +-549.622454002523 +32 +242.726639240051 +13 +448.31772029492 +23 +-549.622454002523 +33 +242.726639240051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317739367628 +20 +-581.662614799822 +30 +241.649835054513 +11 +0.0 +21 +-549.622587401036 +31 +242.726639240051 +12 +1.90727753096809e-05 +22 +-581.662862311522 +32 +241.649831219402 +13 +1.90727753096809e-05 +23 +-581.662862311522 +33 +241.649831219402 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721746731967 +20 +-699.576473436421 +30 +149.95388604473 +11 +442.839490392048 +21 +-680.220295673638 +31 +169.6537686923 +12 +445.721745102502 +22 +-678.931345516719 +32 +167.953679054935 +13 +445.721745102502 +23 +-678.931345516719 +33 +167.953679054935 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839490392048 +20 +-680.220295673638 +30 +169.6537686923 +11 +445.721746731967 +21 +-699.576473436421 +31 +149.95388604473 +12 +442.839492038848 +22 +-701.085065061495 +32 +151.462477669651 +13 +442.839492038848 +23 +-701.085065061495 +33 +151.462477669651 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.31772029492 +20 +-549.622454002523 +30 +242.726639240051 +11 +451.683300548936 +21 +-581.654891394158 +31 +241.574352401781 +12 +451.683281480069 +22 +-549.621181308374 +32 +242.650939792116 +13 +451.683281480069 +23 +-549.621181308374 +33 +242.650939792116 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683300548936 +20 +-581.654891394158 +30 +241.574352401781 +11 +448.31772029492 +21 +-549.622454002523 +31 +242.726639240051 +12 +448.317739367628 +22 +-581.662614799822 +32 +241.649835054513 +13 +448.317739367628 +23 +-581.662614799822 +33 +241.649835054513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247001541956 +20 +-628.181198889296 +30 +186.844869872835 +11 +453.575548860337 +21 +-602.386639077964 +31 +191.530943822063 +12 +453.575559198051 +22 +-626.958539673324 +32 +183.741680540481 +13 +453.575559198051 +23 +-626.958539673324 +33 +183.741680540481 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575548860337 +20 +-602.386639077964 +30 +191.530943822063 +11 +452.247001541956 +21 +-628.181198889296 +31 +186.844869872835 +12 +452.246991021541 +22 +-603.175034087969 +32 +194.771794391524 +13 +452.246991021541 +23 +-603.175034087969 +33 +194.771794391524 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690620823844 +20 +-720.64180705444 +30 +131.632946903436 +11 +442.839485482368 +21 +-734.454801614587 +31 +107.448702644845 +12 +439.690615872653 +22 +-735.948583762681 +32 +108.288220362449 +13 +439.690615872653 +23 +-735.948583762681 +33 +108.288220362449 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839485482368 +20 +-734.454801614587 +30 +107.448702644845 +11 +439.690620823844 +21 +-720.64180705444 +31 +131.632946903436 +12 +442.839490392048 +22 +-719.276356082042 +32 +130.597708279963 +13 +442.839490392048 +23 +-719.276356082042 +33 +130.597708279963 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130190684252 +20 +-597.186922321698 +30 +60.1350749996264 +11 +779.024169884095 +21 +-620.964740882273 +31 +71.3421534984996 +12 +787.130191214298 +22 +-603.902540579901 +32 +54.279953197846 +13 +787.130191214298 +23 +-603.902540579901 +33 +54.279953197846 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024169884095 +20 +-620.964740882273 +30 +71.3421534984996 +11 +787.130190684252 +21 +-597.186922321698 +31 +60.1350749996264 +12 +779.024169157982 +22 +-611.764971197169 +32 +79.3631234201936 +13 +779.024169157982 +23 +-611.764971197169 +33 +79.3631234201936 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090762524528 +20 +-612.101685596006 +30 +231.466577935614 +11 +466.630427178961 +21 +-641.212917863139 +31 +219.920254933339 +12 +466.630414711229 +22 +-611.578139745845 +32 +229.314444371434 +13 +466.630414711229 +23 +-611.578139745845 +33 +229.314444371434 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630427178961 +20 +-641.212917863139 +30 +219.920254933339 +11 +464.090762524528 +21 +-612.101685596006 +31 +231.466577935614 +12 +464.090775113584 +22 +-642.024842985963 +32 +221.980972610863 +13 +464.090775113584 +23 +-642.024842985963 +33 +221.980972610863 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +642.023925698403 +20 +-654.528573978644 +30 +5.83945951983345 +11 +629.962604584718 +21 +-661.494594174547 +31 +-2.52668996836292e-12 +12 +629.962604584718 +22 +-661.494594174546 +32 +5.83945951983435 +13 +629.962604584718 +23 +-661.494594174546 +33 +5.83945951983435 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +629.962604584718 +20 +-661.494594174547 +30 +-2.52668996836292e-12 +11 +642.023925698403 +21 +-654.528573978644 +31 +5.83945951983345 +12 +642.023925698404 +22 +-654.528573978645 +32 +-3.60955709766131e-12 +13 +642.023925698404 +23 +-654.528573978645 +33 +-3.60955709766131e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +681.150249762187 +20 +-615.402249914861 +30 +-7.58006990508875e-12 +11 +688.116269958089 +21 +-603.340928801175 +31 +5.8394595198284 +12 +688.116269958089 +22 +-603.340928801176 +32 +-8.48245917950408e-12 +13 +688.116269958089 +23 +-603.340928801176 +33 +-8.48245917950408e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +688.116269958089 +20 +-603.340928801175 +30 +5.8394595198284 +11 +681.150249762187 +21 +-615.402249914861 +31 +-7.58006990508875e-12 +12 +681.150249762187 +22 +-615.402249914861 +32 +5.83945951982948 +13 +681.150249762187 +23 +-615.402249914861 +33 +5.83945951982948 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +700.992216732393 +20 +-563.749226612814 +30 +5.83945951982569 +11 +806.270901222104 +21 +56.1856515498016 +31 +1.46187062455283e-11 +12 +700.992216732393 +22 +-563.749226612815 +32 +-1.11896270027501e-11 +13 +700.992216732393 +23 +-563.749226612815 +33 +-1.11896270027501e-11 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +806.270901222104 +20 +56.1856515498016 +30 +1.46187062455283e-11 +11 +700.992216732393 +21 +-563.749226612814 +31 +5.83945951982569 +12 +764.995900047839 +22 +-186.86272 +32 +5.83945951983706 +13 +764.995900047839 +23 +-186.86272 +33 +5.83945951983706 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +806.270901222104 +20 +56.1856515498016 +30 +1.46187062455283e-11 +11 +764.995900047839 +21 +-186.86272 +31 +5.83945951983706 +12 +806.270901222105 +22 +56.1856515497994 +32 +23.3578380793657 +13 +806.270901222105 +23 +56.1856515497994 +33 +23.3578380793657 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +806.270901222105 +20 +56.1856515497994 +30 +23.3578380793657 +11 +764.995900047839 +21 +-186.86272 +31 +5.83945951983706 +12 +764.995900047839 +22 +-186.86272 +32 +23.3578380793295 +13 +764.995900047839 +23 +-186.86272 +33 +23.3578380793295 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642020846985 +20 +-549.252284780773 +30 +220.6922004252 +11 +473.101722427237 +21 +-579.753960348852 +31 +222.99174608133 +12 +473.642038802113 +22 +-579.415028713919 +32 +219.67849237548 +13 +473.642038802113 +23 +-579.415028713919 +33 +219.67849237548 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101722427237 +20 +-579.753960348852 +30 +222.99174608133 +11 +473.642020846985 +21 +-549.252284780773 +31 +220.6922004252 +12 +473.10170430358 +22 +-549.308104906071 +32 +224.014968929071 +13 +473.10170430358 +23 +-549.308104906071 +33 +224.014968929071 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +793.570900047839 +20 +-545.937123520845 +30 +23.3578380793295 +11 +792.007210733943 +21 +-561.872310305502 +31 +48.1897945304127 +12 +793.543158239603 +22 +-559.33210911257 +32 +23.3578380122893 +13 +793.543158239603 +23 +-559.33210911257 +33 +23.3578380122893 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007210733943 +20 +-561.872310305502 +30 +48.1897945304127 +11 +793.570900047839 +21 +-545.937123520845 +31 +23.3578380793295 +12 +792.00720150166 +22 +-546.363038171439 +32 +48.7110294035543 +13 +792.00720150166 +23 +-546.363038171439 +33 +48.7110294035543 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957381179691 +20 +-712.905797682657 +30 +125.767734693656 +11 +649.884126043939 +21 +-701.17731493105 +31 +151.554727539197 +12 +649.884124396077 +22 +-719.380332193364 +32 +130.67650856366 +13 +649.884124396077 +23 +-719.380332193364 +33 +130.67650856366 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884126043939 +20 +-701.17731493105 +30 +151.554727539197 +11 +673.957381179691 +21 +-712.905797682657 +31 +125.767734693656 +12 +673.957382761532 +22 +-695.432070757716 +32 +145.809483366442 +13 +673.957382761532 +23 +-695.432070757716 +33 +145.809483366442 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884124396077 +20 +-719.380332193364 +30 +130.67650856366 +11 +624.955348552338 +21 +-704.633972822346 +31 +155.011385430145 +12 +624.955346864755 +22 +-723.275770827742 +32 +133.629900413365 +13 +624.955346864755 +23 +-723.275770827742 +33 +133.629900413365 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955348552338 +20 +-704.633972822346 +30 +155.011385430145 +11 +649.884124396077 +21 +-719.380332193364 +31 +130.67650856366 +12 +649.884126043939 +22 +-701.17731493105 +32 +151.554727539197 +13 +649.884126043939 +23 +-701.17731493105 +33 +151.554727539197 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955346864755 +20 +-723.275770827742 +30 +133.629900413365 +11 +599.602157614092 +21 +-705.742266508454 +31 +156.119679116142 +12 +599.602155913773 +22 +-724.524747581215 +32 +134.576835581469 +13 +599.602155913773 +23 +-724.524747581215 +33 +134.576835581469 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602157614092 +20 +-705.742266508454 +30 +156.119679116142 +11 +624.955346864755 +21 +-723.275770827742 +31 +133.629900413365 +12 +624.955348552338 +22 +-704.633972822346 +32 +155.011385430145 +13 +624.955348552338 +23 +-704.633972822346 +33 +155.011385430145 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602155913773 +20 +-724.524747581215 +30 +134.576835581469 +11 +473.717779021898 +21 +-705.742288168363 +31 +156.11970077605 +12 +473.71777732158 +22 +-724.524762147558 +32 +134.576865377446 +13 +473.71777732158 +23 +-724.524762147558 +33 +134.576865377446 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717779021898 +20 +-705.742288168363 +30 +156.11970077605 +11 +599.602155913773 +21 +-724.524747581215 +31 +134.576835581469 +12 +599.602157614092 +22 +-705.742266508454 +32 +156.119679116142 +13 +599.602157614092 +23 +-705.742266508454 +33 +156.119679116142 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717779021898 +20 +-705.742288168363 +30 +156.11970077605 +11 +473.642078676977 +21 +-727.212938735792 +31 +136.614948795724 +12 +473.71777732158 +22 +-724.524762147558 +32 +134.576865377446 +13 +473.71777732158 +23 +-724.524762147558 +33 +134.576865377446 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642078676977 +20 +-727.212938735792 +30 +136.614948795724 +11 +473.717779021898 +21 +-705.742288168363 +31 +156.11970077605 +12 +473.642080404707 +22 +-708.127668368109 +32 +158.505080975556 +13 +473.642080404707 +23 +-708.127668368109 +33 +158.505080975556 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.000889626013624645 +20 +-791.564217518411 +30 +23.3578380798509 +11 +448.317739367628 +21 +-791.272422434329 +31 +32.0400273988949 +12 +1.90727753096809e-05 +22 +-791.272418599218 +32 +32.0402749105959 +13 +1.90727753096809e-05 +23 +-791.272418599218 +33 +32.0402749105959 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317739367628 +20 +-791.272422434329 +30 +32.0400273988949 +11 +0.000889626013624645 +21 +-791.564217518411 +31 +23.3578380798509 +12 +448.317734199337 +22 +-791.564213042815 +32 +23.3578378526045 +13 +448.317734199337 +23 +-791.564213042815 +33 +23.3578378526045 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +698.091838084213 +20 +-577.37232127131 +30 +-1.01067598734517e-11 +11 +700.992216732393 +21 +-563.749226612814 +31 +5.83945951982569 +12 +700.992216732393 +22 +-563.749226612815 +32 +-1.11896270027501e-11 +13 +700.992216732393 +23 +-563.749226612815 +33 +-1.11896270027501e-11 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +700.992216732393 +20 +-563.749226612814 +30 +5.83945951982569 +11 +698.091838084213 +21 +-577.37232127131 +31 +-1.01067598734517e-11 +12 +698.091838084213 +22 +-577.37232127131 +32 +5.83945951982641 +13 +698.091838084213 +23 +-577.37232127131 +33 +5.83945951982641 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.00828976046904545 +20 +-763.617295762417 +30 +23.3578364570492 +11 +764.995900047839 +21 +-186.86272 +31 +23.3578380793295 +12 +0.00176534768970384 +22 +-186.86272 +32 +23.3578380793295 +13 +0.00176534768970384 +23 +-186.86272 +33 +23.3578380793295 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.995900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.995900047839 +22 +-545.937132023437 +32 +23.3578380793295 +13 +764.995900047839 +23 +-545.937132023437 +33 +23.3578380793295 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.995900047839 +20 +-545.937132023437 +30 +23.3578380793295 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.975642457445 +22 +-559.332124908489 +32 +23.3578380033138 +13 +764.975642457445 +23 +-559.332124908489 +33 +23.3578380033138 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.975642457445 +20 +-559.332124908489 +30 +23.3578380033138 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.959283764737 +22 +-561.475402706277 +32 +23.3578380028359 +13 +764.959283764737 +23 +-561.475402706277 +33 +23.3578380028359 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.959283764737 +20 +-561.475402706277 +30 +23.3578380028359 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.92809314571 +22 +-563.7670797619 +32 +23.357838002321 +13 +764.92809314571 +23 +-563.7670797619 +33 +23.357838002321 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.92809314571 +20 +-563.7670797619 +30 +23.357838002321 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.878707491771 +22 +-566.32138210224 +32 +23.3578380017417 +13 +764.878707491771 +23 +-566.32138210224 +33 +23.3578380017417 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.878707491771 +20 +-566.32138210224 +30 +23.3578380017417 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.805052044838 +22 +-569.303684335783 +32 +23.3578380010606 +13 +764.805052044838 +23 +-569.303684335783 +33 +23.3578380010606 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.805052044838 +20 +-569.303684335783 +30 +23.3578380010606 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.696220629469 +22 +-572.980425379156 +32 +23.3578380002154 +13 +764.696220629469 +23 +-572.980425379156 +33 +23.3578380002154 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.696220629469 +20 +-572.980425379156 +30 +23.3578380002154 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.531578361879 +22 +-577.829946771796 +32 +23.3578379990944 +13 +764.531578361879 +23 +-577.829946771796 +33 +23.3578379990944 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.531578361879 +20 +-577.829946771796 +30 +23.3578379990944 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.267940787943 +22 +-584.829097037034 +32 +23.3578379974678 +13 +764.267940787943 +23 +-584.829097037034 +33 +23.3578379974678 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.267940787943 +20 +-584.829097037034 +30 +23.3578379974678 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +764.031423295207 +22 +-590.643016368677 +32 +23.3578379961104 +13 +764.031423295207 +23 +-590.643016368677 +33 +23.3578379961104 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.031423295207 +20 +-590.643016368677 +30 +23.3578379961104 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +763.093075318335 +22 +-596.364508960869 +32 +23.3578379945534 +13 +763.093075318335 +23 +-596.364508960869 +33 +23.3578379945534 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +763.093075318335 +20 +-596.364508960869 +30 +23.3578379945534 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +760.201821668678 +22 +-613.067712196625 +32 +23.3578379899606 +13 +760.201821668678 +23 +-613.067712196625 +33 +23.3578379899606 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +760.201821668678 +20 +-613.067712196625 +30 +23.3578379899606 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +757.969157364208 +22 +-620.27407578666 +32 +23.3578379876696 +13 +757.969157364208 +23 +-620.27407578666 +33 +23.3578379876696 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +757.969157364208 +20 +-620.27407578666 +30 +23.3578379876696 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +753.576401186168 +22 +-633.988087312601 +32 +23.3578379832645 +13 +753.576401186168 +23 +-633.988087312601 +33 +23.3578379832645 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +753.576401186168 +20 +-633.988087312601 +30 +23.3578379832645 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +744.275042822729 +22 +-653.583013796713 +32 +23.35783797602 +13 +744.275042822729 +23 +-653.583013796713 +33 +23.35783797602 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +744.275042822729 +20 +-653.583013796713 +30 +23.35783797602 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +732.466045885959 +22 +-671.734013479962 +32 +23.3578379683062 +13 +732.466045885959 +23 +-671.734013479962 +33 +23.3578379683062 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +732.466045885959 +20 +-671.734013479962 +30 +23.3578379683062 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +718.363082853901 +22 +-688.112661424818 +32 +23.3578379602634 +13 +718.363082853901 +23 +-688.112661424818 +33 +23.3578379602634 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +718.363082853901 +20 +-688.112661424818 +30 +23.3578379602634 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +702.221333321817 +22 +-702.422601699266 +32 +23.3578379520354 +13 +702.221333321817 +23 +-702.422601699266 +33 +23.3578379520354 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +702.221333321817 +20 +-702.422601699266 +30 +23.3578379520354 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +696.283090443709 +22 +-706.400240289655 +32 +23.3578379492919 +13 +696.283090443709 +23 +-706.400240289655 +33 +23.3578379492919 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +696.283090443709 +20 +-706.400240289655 +30 +23.3578379492919 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +684.332866703488 +22 +-714.293584916115 +32 +23.3578379437967 +13 +684.332866703488 +23 +-714.293584916115 +33 +23.3578379437967 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +684.332866703488 +20 +-714.293584916115 +30 +23.3578379437967 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +454.667734764409 +22 +-735.026158016502 +32 +23.3578378670709 +13 +454.667734764409 +23 +-735.026158016502 +33 +23.3578378670709 +70 +15 + 0 +3DFACE + 8 +leg_half +10 +684.332866703488 +20 +-714.293584916115 +30 +23.3578379437967 +11 +454.667734764409 +21 +-735.026158016502 +31 +23.3578378670709 +12 +665.021357707386 +22 +-723.600194881456 +32 +23.3578379356765 +13 +665.021357707386 +23 +-723.600194881456 +33 +23.3578379356765 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +665.021357707386 +20 +-723.600194881456 +30 +23.3578379356765 +11 +454.667734764409 +21 +-735.026158016502 +31 +23.3578378670709 +12 +644.636229608527 +22 +-730.229356318714 +32 +23.35783792781 +13 +644.636229608527 +23 +-730.229356318714 +33 +23.35783792781 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +644.636229608527 +20 +-730.229356318714 +30 +23.35783792781 +11 +454.667734764409 +21 +-735.026158016502 +31 +23.3578378670709 +12 +623.546331756218 +22 +-734.061120907196 +32 +23.3578379203391 +13 +623.546331756218 +23 +-734.061120907196 +33 +23.3578379203391 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +623.546331756218 +20 +-734.061120907196 +30 +23.3578379203391 +11 +454.667734764409 +21 +-735.026158016502 +31 +23.3578378670709 +12 +602.133265632776 +22 +-735.026156540265 +32 +23.357837913399 +13 +602.133265632776 +23 +-735.026156540265 +33 +23.357837913399 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667734764409 +20 +-735.026158016502 +30 +23.3578378670709 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +454.797651639243 +22 +-738.608819575715 +32 +23.3578378663214 +13 +454.797651639243 +23 +-738.608819575715 +33 +23.3578378663214 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +454.797651639243 +20 +-738.608819575715 +30 +23.3578378663214 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +454.431238307724 +22 +-742.175043209088 +32 +23.3578378654204 +13 +454.431238307724 +23 +-742.175043209088 +33 +23.3578378654204 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +454.431238307724 +20 +-742.175043209088 +30 +23.3578378654204 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +453.575533520408 +22 +-745.656322242814 +32 +23.3578378643829 +13 +453.575533520408 +23 +-745.656322242814 +33 +23.3578378643829 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +453.575533520408 +20 +-745.656322242814 +30 +23.3578378643829 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +452.24697525056 +22 +-748.985781777358 +32 +23.3578378632311 +13 +452.24697525056 +23 +-748.985781777358 +33 +23.3578378632311 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +452.24697525056 +20 +-748.985781777358 +30 +23.3578378632311 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +450.471084922909 +22 +-752.099463345238 +32 +23.3578378619863 +13 +450.471084922909 +23 +-752.099463345238 +33 +23.3578378619863 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +450.471084922909 +20 +-752.099463345238 +30 +23.3578378619863 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +448.28197715053 +22 +-754.937553544539 +32 +23.3578378606726 +13 +448.28197715053 +23 +-754.937553544539 +33 +23.3578378606726 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +448.28197715053 +20 +-754.937553544539 +30 +23.3578378606726 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +445.72170439774 +22 +-757.445533046268 +32 +23.3578378593151 +13 +445.72170439774 +23 +-757.445533046268 +33 +23.3578378593151 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +445.72170439774 +20 +-757.445533046268 +30 +23.3578378593151 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +442.839449157947 +22 +-759.575223903305 +32 +23.3578378579396 +13 +442.839449157947 +23 +-759.575223903305 +33 +23.3578378579396 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +442.839449157947 +20 +-759.575223903305 +30 +23.3578378579396 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +439.690579164597 +22 +-761.285715042239 +32 +23.357837856573 +13 +439.690579164597 +23 +-761.285715042239 +33 +23.357837856573 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +439.690579164597 +20 +-761.285715042239 +30 +23.357837856573 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +436.335583784501 +22 +-762.544148159569 +32 +23.3578378552417 +13 +436.335583784501 +23 +-762.544148159569 +33 +23.3578378552417 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +436.335583784501 +20 +-762.544148159569 +30 +23.3578378552417 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +432.838912025282 +22 +-763.326348925263 +32 +23.3578378539704 +13 +432.838912025282 +23 +-763.326348925263 +33 +23.3578378539704 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +432.838912025282 +20 +-763.326348925263 +30 +23.3578378539704 +11 +0.00828976046904545 +21 +-763.617295762417 +31 +23.3578364570492 +12 +429.267734478649 +22 +-763.617291372796 +32 +23.3578378527852 +13 +429.267734478649 +23 +-763.617291372796 +33 +23.3578378527852 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.71777732158 +20 +-724.524762147558 +30 +134.576865377446 +11 +473.64207352602 +21 +-743.137302565856 +31 +112.328325554405 +12 +473.717772252345 +22 +-740.196478791399 +32 +110.675560324675 +13 +473.717772252345 +23 +-740.196478791399 +33 +110.675560324675 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.64207352602 +20 +-743.137302565856 +30 +112.328325554405 +11 +473.71777732158 +21 +-724.524762147558 +31 +134.576865377446 +12 +473.642078676977 +22 +-727.212938735792 +32 +136.614948795724 +13 +473.642078676977 +23 +-727.212938735792 +33 +136.614948795724 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894066860413 +20 +-715.319417548222 +30 +70.2261702210487 +11 +696.758800443365 +21 +-717.703482376537 +31 +98.03426599948 +12 +696.758793128571 +22 +-728.459323997255 +32 +75.4033102397292 +13 +696.758793128571 +23 +-728.459323997255 +33 +75.4033102397292 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758800443365 +20 +-717.703482376537 +30 +98.03426599948 +11 +717.894066860413 +21 +-715.319417548222 +31 +70.2261702210487 +12 +717.894073612081 +22 +-705.391608581792 +32 +91.1148940822994 +13 +717.894073612081 +23 +-705.391608581792 +33 +91.1148940822994 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.22135687427 +20 +-684.591375697813 +30 +79.4250100709702 +11 +718.363098127435 +21 +-679.968320245868 +31 +56.297813526916 +12 +702.221351073972 +22 +-693.120266957808 +32 +61.4796955534277 +13 +702.221351073972 +23 +-693.120266957808 +33 +61.4796955534277 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363098127435 +20 +-679.968320245868 +30 +56.297813526916 +11 +702.22135687427 +21 +-684.591375697813 +31 +79.4250100709702 +12 +718.363103364091 +22 +-672.268220571567 +32 +72.49929930736 +13 +718.363103364091 +23 +-672.268220571567 +33 +72.49929930736 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677497105752 +20 +-773.716303656482 +30 +60.6855157395589 +11 +468.840126975903 +21 +-781.672997259934 +31 +31.0580369189494 +12 +470.677481847252 +22 +-778.860284147472 +32 +30.7703076765303 +13 +470.677481847252 +23 +-778.860284147472 +33 +30.7703076765303 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840126975903 +20 +-781.672997259934 +30 +31.0580369189494 +11 +470.677497105752 +21 +-773.716303656482 +31 +60.6855157395589 +12 +468.840142428527 +22 +-776.463572930403 +32 +61.353838580619 +13 +468.840142428527 +23 +-776.463572930403 +33 +61.353838580619 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829328484993 +20 +-662.181333229905 +30 +49.2897100106075 +11 +753.739272918395 +21 +-687.397248351576 +31 +39.6867423818656 +12 +767.82932233817 +22 +-666.812843070624 +32 +34.6792140832892 +13 +767.82932233817 +23 +-666.812843070624 +33 +34.6792140832892 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739272918395 +20 +-687.397248351576 +30 +39.6867423818656 +11 +767.829328484993 +21 +-662.181333229905 +31 +49.2897100106075 +12 +753.739280225648 +22 +-681.891377242064 +32 +57.0554860936115 +13 +753.739280225648 +23 +-681.891377242064 +33 +57.0554860936115 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471119570638 +20 +-727.926175547966 +30 +103.779563345764 +11 +452.247013852634 +21 +-710.823016652003 +31 +124.188674487802 +12 +452.247009199941 +22 +-725.20697903804 +32 +102.251353856666 +13 +452.247009199941 +23 +-725.20697903804 +33 +102.251353856666 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247013852634 +20 +-710.823016652003 +30 +124.188674487802 +11 +450.471119570638 +21 +-727.926175547966 +31 +103.779563345764 +12 +450.471124298894 +22 +-713.308606140826 +32 +126.073163560098 +13 +450.471124298894 +23 +-713.308606140826 +33 +126.073163560098 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471111788281 +20 +-739.369532914357 +30 +79.7020319508277 +11 +452.247009199941 +21 +-725.20697903804 +31 +102.251353856666 +12 +452.247001541956 +22 +-736.467457257336 +32 +78.5586114938894 +13 +452.247001541956 +23 +-736.467457257336 +33 +78.5586114938894 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247009199941 +20 +-725.20697903804 +30 +102.251353856666 +11 +450.471111788281 +21 +-739.369532914357 +31 +79.7020319508277 +12 +450.471119570638 +22 +-727.926175547966 +32 +103.779563345764 +13 +450.471119570638 +23 +-727.926175547966 +33 +103.779563345764 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955290211342 +20 +-549.169431970937 +30 +215.762940693873 +11 +649.884068906774 +21 +-186.86272 +31 +210.885907146698 +12 +624.955290211342 +22 +-186.86272 +32 +215.762940693873 +13 +624.955290211342 +23 +-186.86272 +33 +215.762940693873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884068906774 +20 +-186.86272 +30 +210.885907146698 +11 +624.955290211342 +21 +-549.169431970937 +31 +215.762940693873 +12 +649.884068906774 +22 +-549.087494127121 +32 +210.885907146698 +13 +649.884068906774 +23 +-549.087494127121 +33 +210.885907146698 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031409168954 +20 +-546.296855411639 +30 +44.7709041931231 +11 +764.995900047839 +21 +-186.86272 +31 +23.3578380793295 +12 +764.995900047839 +22 +-545.937132023437 +32 +23.3578380793295 +13 +764.995900047839 +23 +-545.937132023437 +33 +23.3578380793295 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.995900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +764.031409168954 +21 +-546.296855411639 +31 +44.7709041931231 +12 +764.031409168954 +22 +-186.86272 +32 +44.7709041931231 +13 +764.031409168954 +23 +-186.86272 +33 +44.7709041931231 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546362358205 +20 +-644.548798426367 +30 +162.550587374486 +11 +602.133289350819 +21 +-623.054826905935 +31 +173.833938065877 +12 +623.546355296361 +22 +-622.700434111963 +32 +172.934485818424 +13 +623.546355296361 +23 +-622.700434111963 +33 +172.934485818424 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133289350819 +20 +-623.054826905935 +30 +173.833938065877 +11 +623.546362358205 +21 +-644.548798426367 +31 +162.550587374486 +12 +602.13329645121 +22 +-645.022448764174 +32 +163.393359945326 +13 +602.13329645121 +23 +-645.022448764174 +33 +163.393359945326 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721740244506 +20 +-656.026027291755 +30 +182.972342518915 +11 +448.282004539076 +21 +-630.366836092636 +31 +192.392159030223 +12 +448.282012434797 +22 +-654.795098868987 +32 +180.78210913444 +13 +448.282012434797 +23 +-654.795098868987 +33 +180.78210913444 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282004539076 +20 +-630.366836092636 +30 +192.392159030223 +11 +445.721740244506 +21 +-656.026027291755 +31 +182.972342518915 +12 +445.721732248607 +22 +-631.28782828485 +32 +194.729696180594 +13 +445.721732248607 +23 +-631.28782828485 +33 +194.729696180594 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006085098156 +20 +-613.111377811381 +30 +235.617099433291 +11 +458.222243636608 +21 +-643.225259958184 +31 +225.027705344708 +12 +458.222230868175 +22 +-612.875739362874 +32 +234.648467298763 +13 +458.222230868175 +23 +-612.875739362874 +33 +234.648467298763 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222243636608 +20 +-643.225259958184 +30 +225.027705344708 +11 +455.006085098156 +21 +-613.111377811381 +31 +235.617099433291 +12 +455.006097921195 +22 +-643.590691959854 +32 +225.95519307716 +13 +455.006097921195 +23 +-643.590691959854 +33 +225.95519307716 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.016303397997907 +20 +-722.503108278541 +30 +133.044187229337 +11 +429.267771709642 +21 +-737.984763689194 +31 +109.432571697368 +12 +0.016298390231306 +22 +-737.984793176583 +32 +109.432704078611 +13 +0.016298390231306 +23 +-737.984793176583 +33 +109.432704078611 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267771709642 +20 +-737.984763689194 +30 +109.432571697368 +11 +0.016303397997907 +21 +-722.503108278541 +31 +133.044187229337 +12 +429.267776717416 +22 +-722.503058608961 +32 +133.044085628428 +13 +429.267776717416 +23 +-722.503058608961 +33 +133.044085628428 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267776717416 +20 +-722.503058608961 +30 +133.044085628428 +11 +432.838949191021 +21 +-737.730681730485 +31 +109.289774750901 +12 +429.267771709642 +22 +-737.984763689194 +32 +109.432571697368 +13 +429.267771709642 +23 +-737.984763689194 +33 +109.432571697368 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838949191021 +20 +-737.730681730485 +30 +109.289774750901 +11 +429.267776717416 +21 +-722.503058608961 +31 +133.044085628428 +12 +432.838954191733 +22 +-722.270804730449 +32 +132.867998161508 +13 +432.838954191733 +23 +-722.270804730449 +33 +132.867998161508 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955307916438 +20 +-764.38593632126 +30 +29.2895600085649 +11 +599.602131038669 +21 +-761.101673056328 +31 +57.616722979916 +12 +599.602116671527 +22 +-765.945156978237 +32 +29.4490754688794 +13 +599.602116671527 +23 +-765.945156978237 +33 +29.4490754688794 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602131038669 +20 +-761.101673056328 +30 +57.616722979916 +11 +624.955307916438 +21 +-764.38593632126 +31 +29.2895600085649 +12 +624.955322175969 +22 +-759.578730682939 +32 +57.2462284142879 +13 +624.955322175969 +23 +-759.578730682939 +33 +57.2462284142879 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576386337194 +20 +-546.993607173192 +30 +86.2459300397311 +11 +760.201806938459 +21 +-186.86272 +31 +65.8608020071314 +12 +760.201806938459 +22 +-546.651150672583 +32 +65.8608020071314 +13 +760.201806938459 +23 +-546.651150672583 +33 +65.8608020071314 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201806938459 +20 +-186.86272 +30 +65.8608020071314 +11 +753.576386337194 +21 +-546.993607173192 +31 +86.2459300397311 +12 +753.576386337194 +22 +-186.86272 +32 +86.2459300397311 +13 +753.576386337194 +23 +-186.86272 +33 +86.2459300397311 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201806938459 +20 +-546.651150672583 +30 +65.8608020071314 +11 +764.031409168954 +21 +-186.86272 +31 +44.7709041931231 +12 +764.031409168954 +22 +-546.296855411639 +32 +44.7709041931231 +13 +764.031409168954 +23 +-546.296855411639 +33 +44.7709041931231 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031409168954 +20 +-186.86272 +30 +44.7709041931231 +11 +760.201806938459 +21 +-546.651150672583 +31 +65.8608020071314 +12 +760.201806938459 +22 +-186.86272 +32 +65.8608020071314 +13 +760.201806938459 +23 +-186.86272 +33 +65.8608020071314 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332892871929 +20 +-694.910065817882 +30 +85.2241968080869 +11 +702.221351073972 +21 +-693.120266957808 +31 +61.4796955534277 +12 +684.332886599671 +22 +-704.132938548301 +32 +65.8187023707334 +13 +684.332886599671 +23 +-704.132938548301 +33 +65.8187023707334 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221351073972 +20 +-693.120266957808 +30 +61.4796955534277 +11 +684.332892871929 +21 +-694.910065817882 +31 +85.2241968080869 +12 +702.22135687427 +22 +-684.591375697813 +32 +79.4250100709702 +13 +702.22135687427 +23 +-684.591375697813 +33 +79.4250100709702 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721745102502 +20 +-717.576266444547 +30 +129.308758123214 +11 +448.282018840978 +21 +-697.799916727886 +31 +148.177329336375 +12 +448.282017231929 +22 +-715.574196634022 +32 +127.790856991425 +13 +448.282017231929 +23 +-715.574196634022 +33 +127.790856991425 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282018840978 +20 +-697.799916727886 +30 +148.177329336375 +11 +445.721745102502 +21 +-717.576266444547 +31 +129.308758123214 +12 +445.721746731967 +22 +-699.576473436421 +32 +149.95388604473 +13 +445.721746731967 +23 +-699.576473436421 +33 +149.95388604473 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.13330076513 +20 +-665.362464994464 +30 +150.056725386733 +11 +454.667765582876 +21 +-645.022494242574 +31 +163.393370075456 +12 +602.13329645121 +22 +-645.022448764174 +32 +163.393359945326 +13 +602.13329645121 +23 +-645.022448764174 +33 +163.393359945326 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667765582876 +20 +-645.022494242574 +30 +163.393370075456 +11 +602.13330076513 +21 +-665.362464994464 +31 +150.056725386733 +12 +454.667769896794 +22 +-665.362499898554 +32 +150.056742450276 +13 +454.667769896794 +23 +-665.362499898554 +33 +150.056742450276 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955322175969 +20 +-759.578730682939 +30 +57.2462284142879 +11 +599.60214250095 +21 +-752.465070814344 +31 +84.8616271735756 +12 +599.602131038669 +22 +-761.101673056328 +32 +57.616722979916 +13 +599.602131038669 +23 +-761.101673056328 +33 +57.616722979916 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.60214250095 +20 +-752.465070814344 +30 +84.8616271735756 +11 +624.955322175969 +21 +-759.578730682939 +31 +57.2462284142879 +12 +624.955333552396 +22 +-751.006817642042 +32 +84.2870649622931 +13 +624.955333552396 +23 +-751.006817642042 +33 +84.2870649622931 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.016298390231306 +20 +-737.984793176583 +30 +109.432704078611 +11 +429.267763467221 +21 +-750.104609262675 +31 +83.9316672902124 +12 +0.0162901478210909 +22 +-750.104622950446 +32 +83.93183291483 +13 +0.0162901478210909 +23 +-750.104622950446 +33 +83.93183291483 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267763467221 +20 +-750.104609262675 +30 +83.9316672902124 +11 +0.016298390231306 +21 +-737.984793176583 +31 +109.432704078611 +12 +429.267771709642 +22 +-737.984763689194 +32 +109.432571697368 +13 +429.267771709642 +23 +-737.984763689194 +33 +109.432571697368 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717752446486 +20 +-761.101673808691 +30 +57.6167818413605 +11 +473.642038802113 +21 +-769.301079755069 +31 +29.7924413152051 +12 +473.717738079349 +22 +-765.945155901366 +32 +29.449144968378 +13 +473.717738079349 +23 +-765.945155901366 +33 +29.449144968378 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642038802113 +20 +-769.301079755069 +30 +29.7924413152051 +11 +473.717752446486 +21 +-761.101673808691 +31 +57.6167818413605 +12 +473.642053400866 +22 +-764.379514823734 +32 +58.4141748490874 +13 +473.642053400866 +23 +-764.379514823734 +33 +58.4141748490874 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683344551435 +20 +-699.535098538027 +30 +195.129470137406 +11 +455.006114828511 +21 +-723.308225016813 +31 +173.685637622731 +12 +455.006112926336 +22 +-699.207898179883 +32 +194.697902416163 +13 +455.006112926336 +23 +-699.207898179883 +33 +194.697902416163 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006114828511 +20 +-723.308225016813 +30 +173.685637622731 +11 +451.683344551435 +21 +-699.535098538027 +31 +195.129470137406 +12 +451.68334645801 +22 +-723.691181151156 +32 +174.068593757036 +13 +451.68334645801 +23 +-723.691181151156 +33 +174.068593757036 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642065047928 +20 +-635.720877069339 +30 +205.981095949127 +11 +473.101757695049 +21 +-663.582663624963 +31 +196.418146784964 +12 +473.64207352602 +22 +-661.950912950484 +32 +193.514715177954 +13 +473.64207352602 +23 +-661.950912950484 +33 +193.514715177954 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101757695049 +20 +-663.582663624963 +30 +196.418146784964 +11 +473.642065047928 +21 +-635.720877069339 +31 +205.981095949127 +12 +473.101749084159 +22 +-636.941767787464 +32 +209.079797462849 +13 +473.101749084159 +23 +-636.941767787464 +33 +209.079797462849 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894057585081 +20 +-722.308196422019 +30 +48.1794664928565 +11 +696.758793128571 +21 +-728.459323997255 +31 +75.4033102397292 +12 +696.758783079627 +22 +-736.03100461107 +32 +51.5177928651329 +13 +696.758783079627 +23 +-736.03100461107 +33 +51.5177928651329 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758793128571 +20 +-728.459323997255 +30 +75.4033102397292 +11 +717.894057585081 +21 +-722.308196422019 +31 +48.1794664928565 +12 +717.894066860413 +22 +-715.319417548222 +32 +70.2261702210487 +13 +717.894066860413 +23 +-715.319417548222 +33 +70.2261702210487 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839485482368 +20 +-734.454801614587 +30 +107.448702644845 +11 +445.721732248607 +21 +-744.352283565408 +31 +81.6652408886482 +12 +442.839477401402 +22 +-746.337240593148 +32 +82.4473163912804 +13 +442.839477401402 +23 +-746.337240593148 +33 +82.4473163912804 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721732248607 +20 +-744.352283565408 +30 +81.6652408886482 +11 +442.839485482368 +21 +-734.454801614587 +31 +107.448702644845 +12 +445.721740244506 +22 +-732.59492990622 +32 +106.403439896738 +13 +445.721740244506 +23 +-732.59492990622 +33 +106.403439896738 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957376463676 +20 +-653.154439951202 +30 +177.862934850716 +11 +696.758804887548 +21 +-668.611056374494 +31 +154.341547662779 +12 +696.758800443365 +22 +-647.656853392997 +32 +168.080894990074 +13 +696.758800443365 +23 +-647.656853392997 +33 +168.080894990074 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758804887548 +20 +-668.611056374494 +30 +154.341547662779 +11 +673.957376463676 +21 +-653.154439951202 +31 +177.862934850716 +12 +673.957381179691 +22 +-675.39032208669 +32 +163.283210293402 +13 +673.957381179691 +23 +-675.39032208669 +33 +163.283210293402 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884119483233 +20 +-657.135168302204 +30 +184.945974477603 +11 +673.957381179691 +21 +-675.39032208669 +31 +163.283210293402 +12 +673.957376463676 +22 +-653.154439951202 +32 +177.862934850716 +13 +673.957376463676 +23 +-653.154439951202 +33 +177.862934850716 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957381179691 +20 +-675.39032208669 +30 +163.283210293402 +11 +649.884119483233 +21 +-657.135168302204 +31 +184.945974477603 +12 +649.884124396077 +22 +-680.299095957346 +32 +169.757744803614 +13 +649.884124396077 +23 +-680.299095957346 +33 +169.757744803614 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955341833487 +20 +-659.530197478533 +30 +189.207522894826 +11 +649.884124396077 +21 +-680.299095957346 +31 +169.757744803614 +12 +649.884119483233 +22 +-657.135168302204 +32 +184.945974477603 +13 +649.884119483233 +23 +-657.135168302204 +33 +184.945974477603 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884124396077 +20 +-680.299095957346 +30 +169.757744803614 +11 +624.955341833487 +21 +-659.530197478533 +31 +189.207522894826 +12 +624.955346864755 +22 +-683.252487807443 +32 +173.653183437694 +13 +624.955346864755 +23 +-683.252487807443 +33 +173.653183437694 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602150844536 +20 +-660.298108897689 +30 +190.573882756048 +11 +624.955346864755 +21 +-683.252487807443 +31 +173.653183437694 +12 +624.955341833487 +22 +-659.530197478533 +32 +189.207522894826 +13 +624.955341833487 +23 +-659.530197478533 +33 +189.207522894826 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955346864755 +20 +-683.252487807443 +30 +173.653183437694 +11 +599.602150844536 +21 +-660.298108897689 +31 +190.573882756048 +12 +599.602155913773 +22 +-684.199422975673 +32 +174.902160191072 +13 +599.602155913773 +23 +-684.199422975673 +33 +174.902160191072 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717772252345 +20 +-660.298147720458 +30 +190.573891403664 +11 +599.602155913773 +21 +-684.199422975673 +31 +174.902160191072 +12 +599.602150844536 +22 +-660.298108897689 +32 +190.573882756048 +13 +599.602150844536 +23 +-660.298108897689 +33 +190.573882756048 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602155913773 +20 +-684.199422975673 +30 +174.902160191072 +11 +473.717772252345 +21 +-660.298147720458 +31 +190.573891403664 +12 +473.71777732158 +22 +-684.199452771651 +32 +174.902174757415 +13 +473.71777732158 +23 +-684.199452771651 +33 +174.902174757415 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717772252345 +20 +-660.298147720458 +30 +190.573891403664 +11 +473.642078676977 +21 +-686.237536190199 +31 +177.590351345444 +12 +473.71777732158 +22 +-684.199452771651 +32 +174.902174757415 +13 +473.71777732158 +23 +-684.199452771651 +33 +174.902174757415 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642078676977 +20 +-686.237536190199 +30 +177.590351345444 +11 +473.717772252345 +21 +-660.298147720458 +31 +190.573891403664 +12 +473.64207352602 +22 +-661.950912950484 +32 +193.514715177954 +13 +473.64207352602 +23 +-661.950912950484 +33 +193.514715177954 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.64207352602 +20 +-661.950912950484 +30 +193.514715177954 +11 +473.101762926689 +21 +-688.249705748186 +31 +180.244348164837 +12 +473.642078676977 +22 +-686.237536190199 +32 +177.590351345444 +13 +473.642078676977 +23 +-686.237536190199 +33 +177.590351345444 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101762926689 +20 +-688.249705748186 +30 +180.244348164837 +11 +473.64207352602 +21 +-661.950912950484 +31 +193.514715177954 +12 +473.101757695049 +22 +-663.582663624963 +32 +196.418146784964 +13 +473.101757695049 +23 +-663.582663624963 +33 +196.418146784964 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335627427501 +20 +-703.188137968552 +30 +153.565550576497 +11 +439.690620823844 +21 +-720.64180705444 +31 +131.632946903436 +12 +436.335625756533 +22 +-721.646389233184 +32 +132.394587199654 +13 +436.335625756533 +23 +-721.646389233184 +33 +132.394587199654 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690620823844 +20 +-720.64180705444 +30 +131.632946903436 +11 +436.335627427501 +21 +-703.188137968552 +31 +153.565550576497 +12 +439.690622484567 +22 +-702.296711761968 +32 +152.674124370004 +13 +439.690622484567 +23 +-702.296711761968 +33 +152.674124370004 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +847.545902396357 +20 +-563.749226612815 +30 +1.80477854883065e-13 +11 +843.130722681617 +21 +-608.452917091224 +31 +23.3578380793307 +12 +843.130722681614 +22 +-608.45291709122 +32 +-4.11489509133389e-11 +13 +843.130722681614 +23 +-608.45291709122 +33 +-4.11489509133389e-11 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +847.545902396357 +21 +-563.749226612815 +31 +1.80477854883065e-13 +12 +847.54590239636 +22 +-563.749226612819 +32 +23.3578380793719 +13 +847.54590239636 +23 +-563.749226612819 +33 +23.3578380793719 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.31772029492 +20 +-549.622454002523 +30 +242.726639240051 +11 +451.683281480069 +21 +-186.86272 +31 +242.650939792116 +12 +448.31772029492 +22 +-186.86272 +32 +242.726639240051 +13 +448.31772029492 +23 +-186.86272 +33 +242.726639240051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683281480069 +20 +-186.86272 +30 +242.650939792116 +11 +448.31772029492 +21 +-549.622454002523 +31 +242.726639240051 +12 +451.683281480069 +22 +-549.621181308374 +32 +242.650939792116 +13 +451.683281480069 +23 +-549.621181308374 +33 +242.650939792116 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677523524142 +20 +-692.042929592268 +30 +185.247506781241 +11 +468.840171011807 +21 +-716.921589517517 +31 +167.299002124079 +12 +470.677525329952 +22 +-714.922321501014 +32 +165.299734107777 +13 +470.677525329952 +23 +-714.922321501014 +33 +165.299734107777 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840171011807 +20 +-716.921589517517 +30 +167.299002124079 +11 +470.677523524142 +21 +-692.042929592268 +31 +185.247506781241 +12 +468.840169183023 +22 +-693.751116561201 +32 +187.500558577709 +13 +468.840169183023 +23 +-693.751116561201 +33 +187.500558577709 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.71777732158 +20 +-684.199452771651 +30 +174.902174757415 +11 +599.602157614092 +21 +-705.742266508454 +31 +156.119679116142 +12 +599.602155913773 +22 +-684.199422975673 +32 +174.902160191072 +13 +599.602155913773 +23 +-684.199422975673 +33 +174.902160191072 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602157614092 +20 +-705.742266508454 +30 +156.119679116142 +11 +473.71777732158 +21 +-684.199452771651 +31 +174.902174757415 +12 +473.717779021898 +22 +-705.742288168363 +32 +156.11970077605 +13 +473.717779021898 +23 +-705.742288168363 +33 +156.11970077605 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101762926689 +20 +-729.866935555387 +30 +138.627118353444 +11 +472.10720415349 +21 +-748.850999084323 +31 +115.539466637413 +12 +473.101757695049 +22 +-746.04073417303 +32 +113.960076228591 +13 +473.101757695049 +23 +-746.04073417303 +33 +113.960076228591 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.10720415349 +20 +-748.850999084323 +30 +115.539466637413 +11 +473.101762926689 +21 +-729.866935555387 +31 +138.627118353444 +12 +472.107209463225 +22 +-732.435769686289 +32 +140.574720545467 +13 +472.107209463225 +23 +-732.435769686289 +33 +140.574720545467 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107209463225 +20 +-732.435769686289 +30 +140.574720545467 +11 +470.677518140403 +21 +-751.514112490764 +31 +117.036156904666 +12 +472.10720415349 +22 +-748.850999084323 +32 +115.539466637413 +13 +472.10720415349 +23 +-748.850999084323 +33 +115.539466637413 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677518140403 +20 +-751.514112490764 +30 +117.036156904666 +11 +472.107209463225 +21 +-732.435769686289 +31 +140.574720545467 +12 +470.677523524142 +22 +-734.870094172174 +32 +142.420342197022 +13 +470.677523524142 +23 +-734.870094172174 +33 +142.420342197022 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677523524142 +20 +-734.870094172174 +30 +142.420342197022 +11 +468.84016373079 +21 +-753.978916343896 +31 +118.421395812685 +12 +470.677518140403 +22 +-751.514112490764 +32 +117.036156904666 +13 +470.677518140403 +23 +-751.514112490764 +33 +117.036156904666 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.84016373079 +20 +-753.978916343896 +30 +118.421395812685 +11 +470.677523524142 +21 +-734.870094172174 +31 +142.420342197022 +12 +468.840169183023 +22 +-737.123145968814 +32 +144.128529165728 +13 +468.840169183023 +23 +-737.123145968814 +33 +144.128529165728 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247015413237 +20 +-693.583909707096 +30 +143.961322316008 +11 +453.575571294939 +21 +-671.796177947369 +31 +158.542588616663 +12 +453.575572828439 +22 +-691.225448319662 +32 +141.602860928812 +13 +453.575572828439 +23 +-691.225448319662 +33 +141.602860928812 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575571294939 +20 +-671.796177947369 +30 +158.542588616663 +11 +452.247015413237 +21 +-693.583909707096 +31 +143.961322316008 +12 +452.247013852634 +22 +-673.811261880626 +32 +161.200429262907 +13 +452.247013852634 +23 +-673.811261880626 +33 +161.200429262907 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006063894518 +20 +-790.94784918938 +30 +23.3578378548415 +11 +451.683300548936 +21 +-791.196939781596 +31 +32.0323039932388 +12 +451.683295385243 +22 +-791.4884708222 +32 +23.3578378536789 +13 +451.683295385243 +23 +-791.4884708222 +33 +23.3578378536789 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683300548936 +20 +-791.196939781596 +30 +32.0323039932388 +11 +455.006063894518 +21 +-790.94784918938 +31 +23.3578378548415 +12 +455.006069025402 +22 +-790.658170470477 +32 +31.9771884161607 +13 +455.006069025402 +23 +-790.658170470477 +33 +31.9771884161607 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130167954486 +20 +-186.86272 +30 +73.639808098986 +11 +792.00720150166 +21 +-546.363038171439 +31 +48.7110294035543 +12 +792.00720150166 +22 +-186.86272 +32 +48.7110294035543 +13 +792.00720150166 +23 +-186.86272 +33 +48.7110294035543 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.00720150166 +20 +-546.363038171439 +30 +48.7110294035543 +11 +787.130167954486 +21 +-186.86272 +31 +73.639808098986 +12 +787.130167954486 +22 +-546.781824001004 +32 +73.639808098986 +13 +787.130167954486 +23 +-546.781824001004 +33 +73.639808098986 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667748728094 +20 +-730.806274098353 +30 +50.2468973323294 +11 +602.133267369982 +21 +-734.928077619115 +31 +26.2761627640122 +12 +454.667736501664 +22 +-734.928076357629 +32 +26.2762441782473 +13 +454.667736501664 +23 +-734.928076357629 +33 +26.2762441782473 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133267369982 +20 +-734.928077619115 +30 +26.2761627640122 +11 +454.667748728094 +21 +-730.806274098353 +31 +50.2468973323294 +12 +602.133279596418 +22 +-730.806273217008 +32 +50.2468283798967 +13 +602.133279596418 +23 +-730.806273217008 +33 +50.2468283798967 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840169183023 +20 +-737.123145968814 +30 +144.128529165728 +11 +466.630436254431 +21 +-756.198062094967 +31 +119.668573109345 +12 +468.84016373079 +22 +-753.978916343896 +32 +118.421395812685 +13 +468.84016373079 +23 +-753.978916343896 +33 +118.421395812685 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630436254431 +20 +-756.198062094967 +30 +119.668573109345 +11 +468.840169183023 +21 +-737.123145968814 +31 +144.128529165728 +12 +466.630441768332 +22 +-739.151644255831 +32 +145.666467410881 +13 +466.630441768332 +23 +-739.151644255831 +33 +145.666467410881 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636252442318 +20 +-621.293308682581 +30 +169.363127662308 +11 +623.546345594915 +21 +-599.640891643383 +31 +180.244333371467 +12 +644.636242951136 +22 +-598.733544865996 +32 +176.514545976725 +13 +644.636242951136 +23 +-598.733544865996 +33 +176.514545976725 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546345594915 +20 +-599.640891643383 +30 +180.244333371467 +11 +644.636252442318 +21 +-621.293308682581 +31 +169.363127662308 +12 +623.546355296361 +22 +-622.700434111963 +32 +172.934485818424 +13 +623.546355296361 +23 +-622.700434111963 +33 +172.934485818424 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717752446486 +20 +-607.239369239249 +30 +211.479086426299 +11 +599.60214250095 +21 +-634.484214570593 +31 +202.842483429208 +12 +599.602131038669 +22 +-607.239310377804 +32 +211.479085673936 +13 +599.602131038669 +23 +-607.239310377804 +33 +211.479085673936 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.60214250095 +20 +-634.484214570593 +30 +202.842483429208 +11 +473.717752446486 +21 +-607.239369239249 +31 +211.479086426299 +12 +473.717763908762 +22 +-634.484263142475 +32 +202.842487443351 +13 +473.717763908762 +23 +-634.484263142475 +33 +202.842487443351 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739280225648 +20 +-681.891377242064 +30 +57.0554860936115 +11 +736.997677401125 +21 +-706.00295242646 +31 +44.2129177479029 +12 +753.739272918395 +22 +-687.397248351576 +32 +39.6867423818656 +13 +753.739272918395 +23 +-687.397248351576 +33 +39.6867423818656 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997677401125 +20 +-706.00295242646 +30 +44.2129177479029 +11 +753.739280225648 +21 +-681.891377242064 +31 +57.0554860936115 +12 +736.997685757261 +22 +-699.706769202407 +32 +64.0747689619352 +13 +736.997685757261 +23 +-699.706769202407 +33 +64.0747689619352 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894073612081 +20 +-705.391608581792 +30 +91.1148940822994 +11 +696.758804887548 +21 +-703.964135051352 +31 +118.98846898236 +12 +696.758800443365 +22 +-717.703482376537 +32 +98.03426599948 +13 +696.758800443365 +23 +-717.703482376537 +33 +98.03426599948 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758804887548 +20 +-703.964135051352 +30 +118.98846898236 +11 +717.894073612081 +21 +-705.391608581792 +31 +91.1148940822994 +12 +717.894077714131 +22 +-692.709977485149 +32 +110.455949073024 +13 +717.894077714131 +23 +-692.709977485149 +33 +110.455949073024 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642020846985 +20 +-186.86272 +30 +220.692200425201 +11 +473.71772029492 +21 +-549.195745909472 +31 +217.326639240051 +12 +473.71772029492 +22 +-186.86272 +32 +217.326639240051 +13 +473.71772029492 +23 +-186.86272 +33 +217.326639240051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-549.195745909472 +30 +217.326639240051 +11 +473.642020846985 +21 +-186.86272 +31 +220.692200425201 +12 +473.642020846985 +22 +-549.252284780773 +32 +220.6922004252 +13 +473.642020846985 +23 +-549.252284780773 +33 +220.6922004252 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222243636608 +20 +-643.225259958184 +30 +225.027705344708 +11 +461.269994170696 +21 +-671.278610214274 +31 +210.111811908437 +12 +461.26998493348 +22 +-642.699946567149 +32 +223.694427829008 +13 +461.26998493348 +23 +-642.699946567149 +33 +223.694427829008 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269994170696 +20 +-671.278610214274 +30 +210.111811908437 +11 +458.222243636608 +21 +-643.225259958184 +31 +225.027705344708 +12 +458.222252930963 +22 +-671.980703984767 +32 +211.3610708001 +13 +458.222252930963 +23 +-671.980703984767 +33 +211.3610708001 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431270729568 +20 +-648.531199395009 +30 +169.63653352158 +11 +454.797676017751 +21 +-624.370524419528 +31 +177.173126470384 +12 +454.797683261242 +22 +-646.78088064753 +32 +166.522129452237 +13 +454.797683261242 +23 +-646.78088064753 +33 +166.522129452237 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797676017751 +20 +-624.370524419528 +30 +177.173126470384 +11 +454.431270729568 +21 +-648.531199395009 +31 +169.63653352158 +12 +454.431263343628 +22 +-625.680128816835 +32 +180.496989380173 +13 +454.431263343628 +23 +-625.680128816835 +33 +180.496989380173 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0162788245333154 +20 +-758.636496454861 +30 +57.0173045265452 +11 +429.267737950976 +21 +-763.421251234373 +31 +29.1909851596944 +12 +0.0162646316092562 +22 +-763.421247562364 +32 +29.1912221451116 +13 +0.0162646316092562 +23 +-763.421247562364 +33 +29.1912221451116 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267737950976 +20 +-763.421251234373 +30 +29.1909851596944 +11 +0.0162788245333154 +21 +-758.636496454861 +31 +57.0173045265452 +12 +429.267752143919 +22 +-758.636493889386 +32 +57.017103815686 +13 +429.267752143919 +23 +-758.636493889386 +33 +57.017103815686 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471070624061 +20 +-548.959849908146 +30 +203.284158309243 +11 +452.246960920592 +21 +-186.86272 +31 +200.172233713933 +12 +452.246960920592 +22 +-548.907571431286 +32 +200.172233713933 +13 +452.246960920592 +23 +-548.907571431286 +33 +200.172233713933 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246960920592 +20 +-186.86272 +30 +200.172233713933 +11 +450.471070624061 +21 +-548.959849908146 +31 +203.284158309243 +12 +450.471070624061 +22 +-186.86272 +32 +203.284158309244 +13 +450.471070624061 +23 +-186.86272 +33 +203.284158309244 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006097921195 +20 +-643.590691959854 +30 +225.95519307716 +11 +458.222252930963 +21 +-671.980703984767 +31 +211.3610708001 +12 +458.222243636608 +22 +-643.225259958184 +32 +225.027705344708 +13 +458.222243636608 +23 +-643.225259958184 +33 +225.027705344708 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222252930963 +20 +-671.980703984767 +30 +211.3610708001 +11 +455.006097921195 +21 +-643.590691959854 +31 +225.95519307716 +12 +455.006107255299 +22 +-672.469112270075 +32 +212.230111445991 +13 +455.006107255299 +23 +-672.469112270075 +33 +212.230111445991 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031424128692 +20 +-589.417441849078 +30 +25.9365225576139 +11 +764.267940787943 +21 +-584.829097037034 +31 +23.3578379974678 +12 +764.031423295207 +22 +-590.643016368677 +32 +23.3578379961104 +13 +764.031423295207 +23 +-590.643016368677 +33 +23.3578379961104 +70 +0 + 0 +3DFACE + 8 +leg_half +10 +432.838949191021 +20 +-737.730681730485 +30 +109.289774750901 +11 +436.335612575248 +21 +-749.104396759147 +31 +83.5375802413299 +12 +432.838940960221 +22 +-749.833439201604 +32 +83.824824767603 +13 +432.838940960221 +23 +-749.833439201604 +33 +83.824824767603 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335612575248 +20 +-749.104396759147 +30 +83.5375802413299 +11 +432.838949191021 +21 +-737.730681730485 +31 +109.289774750901 +12 +436.335620774804 +22 +-737.047580997407 +32 +108.905866027708 +13 +436.335620774804 +23 +-737.047580997407 +33 +108.905866027708 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642078676977 +20 +-727.212938735792 +30 +136.614948795724 +11 +473.101757695049 +21 +-746.04073417303 +31 +113.960076228591 +12 +473.64207352602 +22 +-743.137302565856 +32 +112.328325554405 +13 +473.64207352602 +23 +-743.137302565856 +33 +112.328325554405 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101757695049 +20 +-746.04073417303 +30 +113.960076228591 +11 +473.642078676977 +21 +-727.212938735792 +31 +136.614948795724 +12 +473.101762926689 +22 +-729.866935555387 +32 +138.627118353444 +13 +473.101762926689 +23 +-729.866935555387 +33 +138.627118353444 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997695535365 +20 +-649.940320006495 +30 +129.715362054641 +11 +717.894079090038 +21 +-677.51110607242 +31 +127.888518682951 +12 +736.997696774917 +22 +-665.645302851503 +32 +116.022715463229 +13 +736.997696774917 +23 +-665.645302851503 +33 +116.022715463229 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894079090038 +20 +-677.51110607242 +30 +127.888518682951 +11 +736.997695535365 +21 +-649.940320006495 +31 +129.715362054641 +12 +717.894077714131 +22 +-660.078536464024 +32 +143.087390097436 +13 +717.894077714131 +23 +-660.078536464024 +33 +143.087390097436 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758804887548 +20 +-668.611056374494 +30 +154.341547662779 +11 +717.894079090038 +21 +-677.51110607242 +31 +127.888518682951 +12 +717.894077714131 +22 +-660.078536464024 +32 +143.087390097436 +13 +717.894077714131 +23 +-660.078536464024 +33 +143.087390097436 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894079090038 +20 +-677.51110607242 +30 +127.888518682951 +11 +696.758804887548 +21 +-668.611056374494 +31 +154.341547662779 +12 +696.758806378212 +22 +-687.497596031337 +32 +137.875008640862 +13 +696.758806378212 +23 +-687.497596031337 +33 +137.875008640862 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957381179691 +20 +-675.39032208669 +30 +163.283210293402 +11 +696.758806378212 +21 +-687.497596031337 +31 +137.875008640862 +12 +696.758804887548 +22 +-668.611056374494 +32 +154.341547662779 +13 +696.758804887548 +23 +-668.611056374494 +33 +154.341547662779 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758806378212 +20 +-687.497596031337 +30 +137.875008640862 +11 +673.957381179691 +21 +-675.39032208669 +31 +163.283210293402 +12 +673.957382761532 +22 +-695.432070757716 +32 +145.809483366442 +13 +673.957382761532 +23 +-695.432070757716 +33 +145.809483366442 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884124396077 +20 +-680.299095957346 +30 +169.757744803614 +11 +673.957382761532 +21 +-695.432070757716 +31 +145.809483366442 +12 +673.957381179691 +22 +-675.39032208669 +32 +163.283210293402 +13 +673.957381179691 +23 +-675.39032208669 +33 +163.283210293402 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957382761532 +20 +-695.432070757716 +30 +145.809483366442 +11 +649.884124396077 +21 +-680.299095957346 +31 +169.757744803614 +12 +649.884126043939 +22 +-701.17731493105 +32 +151.554727539197 +13 +649.884126043939 +23 +-701.17731493105 +33 +151.554727539197 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955346864755 +20 +-683.252487807443 +30 +173.653183437694 +11 +649.884126043939 +21 +-701.17731493105 +31 +151.554727539197 +12 +649.884124396077 +22 +-680.299095957346 +32 +169.757744803614 +13 +649.884124396077 +23 +-680.299095957346 +33 +169.757744803614 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884126043939 +20 +-701.17731493105 +30 +151.554727539197 +11 +624.955346864755 +21 +-683.252487807443 +31 +173.653183437694 +12 +624.955348552338 +22 +-704.633972822346 +32 +155.011385430145 +13 +624.955348552338 +23 +-704.633972822346 +33 +155.011385430145 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829332959368 +20 +-655.602108768076 +30 +63.1328050448759 +11 +753.739280225648 +21 +-681.891377242064 +31 +57.0554860936115 +12 +767.829328484993 +22 +-662.181333229905 +32 +49.2897100106075 +13 +767.829328484993 +23 +-662.181333229905 +33 +49.2897100106075 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739280225648 +20 +-681.891377242064 +30 +57.0554860936115 +11 +767.829332959368 +21 +-655.602108768076 +31 +63.1328050448759 +12 +753.73928554472 +22 +-674.070091498716 +32 +73.5119548557674 +13 +753.73928554472 +23 +-674.070091498716 +33 +73.5119548557674 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73928554472 +20 +-674.070091498716 +30 +73.5119548557674 +11 +736.997685757261 +21 +-699.706769202407 +31 +64.0747689619352 +12 +753.739280225648 +22 +-681.891377242064 +32 +57.0554860936115 +13 +753.739280225648 +23 +-681.891377242064 +33 +57.0554860936115 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997685757261 +20 +-699.706769202407 +30 +64.0747689619352 +11 +753.73928554472 +21 +-674.070091498716 +31 +73.5119548557674 +12 +736.997691839832 +22 +-690.762816990611 +32 +82.8933973835911 +13 +736.997691839832 +23 +-690.762816990611 +33 +82.8933973835911 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997685757261 +20 +-699.706769202407 +30 +64.0747689619352 +11 +717.894073612081 +21 +-705.391608581792 +31 +91.1148940822994 +12 +717.894066860413 +22 +-715.319417548222 +32 +70.2261702210487 +13 +717.894066860413 +23 +-715.319417548222 +33 +70.2261702210487 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894073612081 +20 +-705.391608581792 +30 +91.1148940822994 +11 +736.997685757261 +21 +-699.706769202407 +31 +64.0747689619352 +12 +736.997691839832 +22 +-690.762816990611 +32 +82.8933973835911 +13 +736.997691839832 +23 +-690.762816990611 +33 +82.8933973835911 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.26998493348 +20 +-642.699946567149 +30 +223.694427829008 +11 +464.090784277369 +21 +-670.376318084996 +31 +208.5063328654 +12 +464.090775113584 +22 +-642.024842985963 +32 +221.980972610863 +13 +464.090775113584 +23 +-642.024842985963 +33 +221.980972610863 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090784277369 +20 +-670.376318084996 +30 +208.5063328654 +11 +461.26998493348 +21 +-642.699946567149 +31 +223.694427829008 +12 +461.269994170696 +22 +-671.278610214274 +32 +210.111811908437 +13 +461.269994170696 +23 +-671.278610214274 +33 +210.111811908437 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090762524528 +20 +-781.089165318495 +30 +62.4790981961044 +11 +461.26998493348 +21 +-773.317015214971 +31 +93.0773591680305 +12 +461.269972243544 +22 +-782.87863142832 +32 +62.9144188854628 +13 +461.269972243544 +23 +-782.87863142832 +33 +62.9144188854628 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.26998493348 +20 +-773.317015214971 +30 +93.0773591680305 +11 +464.090762524528 +21 +-781.089165318495 +31 +62.4790981961044 +12 +464.090775113584 +22 +-771.603559996758 +32 +92.4022555870175 +13 +464.090775113584 +23 +-771.603559996758 +33 +92.4022555870175 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471101097006 +20 +-747.425197006803 +30 +54.2897470886059 +11 +452.247001541956 +21 +-736.467457257336 +31 +78.5586114938894 +12 +452.246991021541 +22 +-744.394381773506 +32 +53.5524466917642 +13 +452.246991021541 +23 +-744.394381773506 +33 +53.5524466917642 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247001541956 +20 +-736.467457257336 +30 +78.5586114938894 +11 +450.471101097006 +21 +-747.425197006803 +31 +54.2897470886059 +12 +450.471111788281 +22 +-739.369532914357 +32 +79.7020319508277 +13 +450.471111788281 +23 +-739.369532914357 +33 +79.7020319508277 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246991021541 +20 +-744.394381773506 +30 +53.5524466917642 +11 +453.575559198051 +21 +-733.364267924859 +31 +77.3359522782304 +12 +453.575548860337 +22 +-741.153531203966 +32 +52.7640516820845 +13 +453.575548860337 +23 +-741.153531203966 +33 +52.7640516820845 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575559198051 +20 +-733.364267924859 +30 +77.3359522782304 +11 +452.246991021541 +21 +-744.394381773506 +31 +53.5524466917642 +12 +452.247001541956 +22 +-736.467457257336 +32 +78.5586114938894 +13 +452.247001541956 +23 +-736.467457257336 +33 +78.5586114938894 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575548860337 +20 +-741.153531203966 +30 +52.7640516820845 +11 +454.431263343628 +21 +-730.119576764422 +31 +76.0575414220674 +12 +454.431253196946 +22 +-737.764901599428 +32 +51.9397070211046 +13 +454.431253196946 +23 +-737.764901599428 +33 +51.9397070211046 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431263343628 +20 +-730.119576764422 +30 +76.0575414220674 +11 +453.575548860337 +21 +-741.153531203966 +31 +52.7640516820845 +12 +453.575559198051 +22 +-733.364267924859 +32 +77.3359522782304 +13 +453.575559198051 +23 +-733.364267924859 +33 +77.3359522782304 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431253196946 +20 +-737.764901599428 +30 +51.9397070211046 +11 +454.797676017751 +21 +-726.7957138545 +31 +74.7479370250946 +12 +454.797666066761 +22 +-734.293588076417 +32 +51.0952482583018 +13 +454.797666066761 +23 +-734.293588076417 +33 +51.0952482583018 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797676017751 +20 +-726.7957138545 +30 +74.7479370250946 +11 +454.431253196946 +21 +-737.764901599428 +31 +51.9397070211046 +12 +454.431263343628 +22 +-730.119576764422 +32 +76.0575414220674 +13 +454.431263343628 +23 +-730.119576764422 +33 +76.0575414220674 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797666066761 +20 +-734.293588076417 +30 +51.0952482583018 +11 +454.667758482489 +21 +-723.456530152174 +31 +73.4322964107047 +12 +454.667748728094 +22 +-730.806274098353 +32 +50.2468973323294 +13 +454.667748728094 +23 +-730.806274098353 +33 +50.2468973323294 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667758482489 +20 +-723.456530152174 +30 +73.4322964107047 +11 +454.797666066761 +21 +-734.293588076417 +31 +51.0952482583018 +12 +454.797676017751 +22 +-726.7957138545 +32 +74.7479370250946 +13 +454.797676017751 +23 +-726.7957138545 +33 +74.7479370250946 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667758482489 +20 +-723.456530152174 +30 +73.4322964107047 +11 +602.133279596418 +21 +-730.806273217008 +31 +50.2468283798967 +12 +454.667748728094 +22 +-730.806274098353 +32 +50.2468973323294 +13 +454.667748728094 +23 +-730.806274098353 +33 +50.2468973323294 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133279596418 +20 +-730.806273217008 +30 +50.2468283798967 +11 +454.667758482489 +21 +-723.456530152174 +31 +73.4322964107047 +12 +602.133289350819 +22 +-723.456525449862 +32 +73.4322395118387 +13 +602.133289350819 +23 +-723.456525449862 +33 +73.4322395118387 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133289350819 +20 +-723.456525449862 +30 +73.4322395118387 +11 +623.546345594915 +21 +-729.866920753093 +31 +50.0183042486409 +12 +602.133279596418 +22 +-730.806273217008 +32 +50.2468283798967 +13 +602.133279596418 +23 +-730.806273217008 +33 +50.2468283798967 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546345594915 +20 +-729.866920753093 +30 +50.0183042486409 +11 +602.133289350819 +21 +-723.456525449862 +31 +73.4322395118387 +12 +623.546355296361 +22 +-722.557073202373 +32 +73.0778467179566 +13 +623.546355296361 +23 +-722.557073202373 +33 +73.0778467179566 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546355296361 +20 +-722.557073202373 +30 +73.0778467179566 +11 +644.636242951136 +21 +-726.13713335826 +31 +49.1109574716297 +12 +623.546345594915 +22 +-729.866920753093 +32 +50.0183042486409 +13 +623.546345594915 +23 +-729.866920753093 +33 +50.0183042486409 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636242951136 +20 +-726.13713335826 +30 +49.1109574716297 +11 +623.546355296361 +21 +-722.557073202373 +31 +73.0778467179566 +12 +644.636252442318 +22 +-718.985715046116 +32 +71.6707212889357 +13 +644.636252442318 +23 +-718.985715046116 +33 +71.6707212889357 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636252442318 +20 +-718.985715046116 +30 +71.6707212889357 +11 +665.021370191738 +21 +-719.684397959595 +31 +47.5412056189011 +12 +644.636242951136 +22 +-726.13713335826 +32 +49.1109574716297 +13 +644.636242951136 +23 +-726.13713335826 +33 +49.1109574716297 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021370191738 +20 +-719.684397959595 +30 +47.5412056189011 +11 +644.636252442318 +21 +-718.985715046116 +31 +71.6707212889357 +12 +665.021379319153 +22 +-712.807071282992 +32 +69.2363238103713 +13 +665.021379319153 +23 +-712.807071282992 +33 +69.2363238103713 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +672.962315038389 +20 +-626.669841908538 +30 +-6.49720277579036e-12 +11 +681.150249762187 +21 +-615.402249914861 +31 +5.83945951982948 +12 +681.150249762187 +22 +-615.402249914861 +32 +-7.58006990508875e-12 +13 +681.150249762187 +23 +-615.402249914861 +33 +-7.58006990508875e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +681.150249762187 +20 +-615.402249914861 +30 +5.83945951982948 +11 +672.962315038389 +21 +-626.669841908538 +31 +-6.49720277579036e-12 +12 +672.962315038389 +22 +-626.669841908537 +32 +5.83945951983038 +13 +672.962315038389 +23 +-626.669841908537 +33 +5.83945951983038 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +700.992216732393 +20 +-563.749226612814 +30 +5.83945951982569 +11 +0.00176534768975319 +21 +-186.86272 +31 +5.83945951983706 +12 +764.995900047839 +22 +-186.86272 +32 +5.83945951983706 +13 +764.995900047839 +23 +-186.86272 +33 +5.83945951983706 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.00176534768975319 +20 +-186.86272 +30 +5.83945951983706 +11 +700.992216732393 +21 +-563.749226612814 +31 +5.83945951982569 +12 +0.000467548731367373 +22 +-674.37054094885 +32 +5.83945951983706 +13 +0.000467548731367373 +23 +-674.37054094885 +33 +5.83945951983706 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +700.992216732393 +21 +-563.749226612814 +31 +5.83945951982569 +12 +698.091838084213 +22 +-577.37232127131 +32 +5.83945951982641 +13 +698.091838084213 +23 +-577.37232127131 +33 +5.83945951982641 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +698.091838084213 +21 +-577.37232127131 +31 +5.83945951982641 +12 +693.784141830299 +22 +-590.617873632807 +32 +5.83945951982749 +13 +693.784141830299 +23 +-590.617873632807 +33 +5.83945951982749 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +693.784141830299 +21 +-590.617873632807 +31 +5.83945951982749 +12 +688.116269958089 +22 +-603.340928801175 +32 +5.8394595198284 +13 +688.116269958089 +23 +-603.340928801175 +33 +5.8394595198284 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +688.116269958089 +21 +-603.340928801175 +31 +5.8394595198284 +12 +681.150249762187 +22 +-615.402249914861 +32 +5.83945951982948 +13 +681.150249762187 +23 +-615.402249914861 +33 +5.83945951982948 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +681.150249762187 +21 +-615.402249914861 +31 +5.83945951982948 +12 +672.962315038389 +22 +-626.669841908537 +32 +5.83945951983038 +13 +672.962315038389 +23 +-626.669841908537 +33 +5.83945951983038 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +672.962315038389 +21 +-626.669841908537 +31 +5.83945951983038 +12 +663.642071806513 +22 +-637.020396022971 +32 +5.83945951983146 +13 +663.642071806513 +23 +-637.020396022971 +33 +5.83945951983146 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +663.642071806513 +21 +-637.020396022971 +31 +5.83945951983146 +12 +653.29151769208 +22 +-646.340639254846 +32 +5.83945951983237 +13 +653.29151769208 +23 +-646.340639254846 +33 +5.83945951983237 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +653.29151769208 +21 +-646.340639254846 +31 +5.83945951983237 +12 +642.023925698403 +22 +-654.528573978644 +32 +5.83945951983345 +13 +642.023925698403 +23 +-654.528573978644 +33 +5.83945951983345 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +642.023925698403 +21 +-654.528573978644 +31 +5.83945951983345 +12 +629.962604584718 +22 +-661.494594174546 +32 +5.83945951983435 +13 +629.962604584718 +23 +-661.494594174546 +33 +5.83945951983435 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +629.962604584718 +21 +-661.494594174546 +31 +5.83945951983435 +12 +617.239549416349 +22 +-667.162466046756 +32 +5.83945951983507 +13 +617.239549416349 +23 +-667.162466046756 +33 +5.83945951983507 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +617.239549416349 +21 +-667.162466046756 +31 +5.83945951983507 +12 +603.993997054852 +22 +-671.47016230067 +32 +5.83945951983598 +13 +603.993997054852 +23 +-671.47016230067 +33 +5.83945951983598 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +0.000467548731367373 +20 +-674.37054094885 +30 +5.83945951983706 +11 +603.993997054852 +21 +-671.47016230067 +31 +5.83945951983598 +12 +590.370902396357 +22 +-674.37054094885 +32 +5.83945951983706 +13 +590.370902396357 +23 +-674.37054094885 +33 +5.83945951983706 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +688.116269958089 +20 +-603.340928801176 +30 +-8.48245917950408e-12 +11 +693.784141830299 +21 +-590.617873632807 +31 +5.83945951982749 +12 +693.784141830299 +22 +-590.617873632807 +32 +-9.20437059903634e-12 +13 +693.784141830299 +23 +-590.617873632807 +33 +-9.20437059903634e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +693.784141830299 +20 +-590.617873632807 +30 +5.83945951982749 +11 +688.116269958089 +21 +-603.340928801176 +31 +-8.48245917950408e-12 +12 +688.116269958089 +22 +-603.340928801175 +32 +5.8394595198284 +13 +688.116269958089 +23 +-603.340928801175 +33 +5.8394595198284 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +663.642071806514 +20 +-637.020396022971 +30 +-5.59481350137503e-12 +11 +672.962315038389 +21 +-626.669841908537 +31 +5.83945951983038 +12 +672.962315038389 +22 +-626.669841908538 +32 +-6.49720277579036e-12 +13 +672.962315038389 +23 +-626.669841908538 +33 +-6.49720277579036e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +672.962315038389 +20 +-626.669841908537 +30 +5.83945951983038 +11 +663.642071806514 +21 +-637.020396022971 +31 +-5.59481350137503e-12 +12 +663.642071806513 +22 +-637.020396022971 +32 +5.83945951983146 +13 +663.642071806513 +23 +-637.020396022971 +33 +5.83945951983146 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +663.642071806513 +20 +-637.020396022971 +30 +5.83945951983146 +11 +653.29151769208 +21 +-646.340639254847 +31 +-4.51194637207664e-12 +12 +653.29151769208 +22 +-646.340639254846 +32 +5.83945951983237 +13 +653.29151769208 +23 +-646.340639254846 +33 +5.83945951983237 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +653.29151769208 +20 +-646.340639254847 +30 +-4.51194637207664e-12 +11 +663.642071806513 +21 +-637.020396022971 +31 +5.83945951983146 +12 +663.642071806514 +22 +-637.020396022971 +32 +-5.59481350137503e-12 +13 +663.642071806514 +23 +-637.020396022971 +33 +-5.59481350137503e-12 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431263343628 +20 +-730.119576764422 +30 +76.0575414220674 +11 +454.797683261242 +21 +-716.144716838612 +31 +97.1582932541697 +12 +454.797676017751 +22 +-726.7957138545 +32 +74.7479370250946 +13 +454.797676017751 +23 +-726.7957138545 +33 +74.7479370250946 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797683261242 +20 +-716.144716838612 +30 +97.1582932541697 +11 +454.431263343628 +21 +-730.119576764422 +31 +76.0575414220674 +12 +454.431270729568 +22 +-719.25912090813 +32 +98.9086120013344 +13 +454.431270729568 +23 +-719.25912090813 +33 +98.9086120013344 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267771709642 +20 +-659.055159092928 +30 +188.362176301584 +11 +0.0162901478210909 +21 +-633.55442031161 +31 +200.482035565403 +12 +429.267763467221 +22 +-633.554254686993 +32 +200.482021877632 +13 +429.267763467221 +23 +-633.554254686993 +33 +200.482021877632 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0162901478210909 +20 +-633.55442031161 +30 +200.482035565403 +11 +429.267771709642 +21 +-659.055159092928 +31 +188.362176301584 +12 +0.016298390231306 +22 +-659.055291474171 +32 +188.362205788973 +13 +0.016298390231306 +23 +-659.055291474171 +33 +188.362205788973 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683329511579 +20 +-643.789222672817 +30 +226.45907411243 +11 +455.006107255299 +21 +-672.469112270075 +31 +212.230111445991 +12 +455.006097921195 +22 +-643.590691959854 +32 +225.95519307716 +13 +455.006097921195 +23 +-643.590691959854 +33 +225.95519307716 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006107255299 +20 +-672.469112270075 +30 +212.230111445991 +11 +451.683329511579 +21 +-643.789222672817 +31 +226.45907411243 +12 +451.683338867278 +22 +-672.734452813075 +32 +212.702239692806 +13 +451.683338867278 +23 +-672.734452813075 +33 +212.702239692806 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636264956545 +20 +-680.297547066858 +30 +130.674959677109 +11 +665.021389999784 +21 +-690.558190885324 +31 +108.824546057595 +12 +644.636263548619 +22 +-695.850119169612 +32 +112.836707846937 +13 +644.636263548619 +23 +-695.850119169612 +33 +112.836707846937 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021389999784 +20 +-690.558190885324 +30 +108.824546057595 +11 +644.636264956545 +21 +-680.297547066858 +31 +130.674959677109 +12 +665.021391353748 +22 +-675.601700530057 +32 +125.979113140781 +13 +665.021391353748 +23 +-675.601700530057 +33 +125.979113140781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269972243544 +20 +-782.87863142832 +30 +62.9144188854628 +11 +458.222243636608 +21 +-774.650292730724 +31 +93.6026725589312 +12 +458.222230868175 +22 +-784.271054681722 +32 +63.2531519626526 +13 +458.222230868175 +23 +-784.271054681722 +33 +63.2531519626526 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222243636608 +20 +-774.650292730724 +30 +93.6026725589312 +11 +461.269972243544 +21 +-782.87863142832 +31 +62.9144188854628 +12 +461.26998493348 +22 +-773.317015214971 +32 +93.0773591680305 +13 +461.26998493348 +23 +-773.317015214971 +33 +93.0773591680305 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282004539076 +20 +-630.366836092636 +30 +192.392159030223 +11 +450.471101097006 +21 +-603.912334485117 +31 +197.802609624747 +12 +450.471111788281 +22 +-629.324619346527 +32 +189.746945529741 +13 +450.471111788281 +23 +-629.324619346527 +33 +189.746945529741 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471101097006 +20 +-603.912334485117 +30 +197.802609624747 +11 +448.282004539076 +21 +-630.366836092636 +31 +192.392159030223 +12 +448.281993692064 +22 +-604.584376828467 +32 +200.565167970899 +13 +448.281993692064 +23 +-604.584376828467 +33 +200.565167970899 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.84015475682 +20 +-640.279768170507 +30 +217.551860904389 +11 +466.630436254431 +21 +-669.291160506739 +31 +206.575474706326 +12 +468.84016373079 +22 +-668.043983209856 +32 +204.35632895538 +13 +468.84016373079 +23 +-668.043983209856 +33 +204.35632895538 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630436254431 +20 +-669.291160506739 +30 +206.575474706326 +11 +468.84015475682 +21 +-640.279768170507 +31 +217.551860904389 +12 +466.630427178961 +22 +-641.212917863139 +32 +219.920254933339 +13 +466.630427178961 +23 +-641.212917863139 +33 +219.920254933339 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797683261242 +20 +-646.78088064753 +30 +166.522129452237 +11 +454.667758482489 +21 +-623.054883804802 +31 +173.83394276819 +12 +454.667765582876 +22 +-645.022494242574 +32 +163.393370075456 +13 +454.667765582876 +23 +-645.022494242574 +33 +163.393370075456 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667758482489 +20 +-623.054883804802 +30 +173.83394276819 +11 +454.797683261242 +21 +-646.78088064753 +31 +166.522129452237 +12 +454.797676017751 +22 +-624.370524419528 +32 +177.173126470384 +13 +454.797676017751 +23 +-624.370524419528 +33 +177.173126470384 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.13329645121 +20 +-645.022448764174 +30 +163.393359945326 +11 +454.667758482489 +21 +-623.054883804802 +31 +173.83394276819 +12 +602.133289350819 +22 +-623.054826905935 +32 +173.833938065877 +13 +602.133289350819 +23 +-623.054826905935 +33 +173.833938065877 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667758482489 +20 +-623.054883804802 +30 +173.83394276819 +11 +602.13329645121 +21 +-645.022448764174 +31 +163.393359945326 +12 +454.667765582876 +22 +-645.022494242574 +32 +163.393370075456 +13 +454.667765582876 +23 +-645.022494242574 +33 +163.393370075456 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090775113584 +20 +-771.603559996758 +30 +92.4022555870175 +11 +461.269994170696 +21 +-759.734399297279 +31 +121.656022816523 +12 +461.26998493348 +22 +-773.317015214971 +32 +93.0773591680305 +13 +461.26998493348 +23 +-773.317015214971 +33 +93.0773591680305 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269994170696 +20 +-759.734399297279 +30 +121.656022816523 +11 +464.090775113584 +21 +-771.603559996758 +31 +92.4022555870175 +12 +464.090784277369 +22 +-758.12892025415 +32 +120.753730687408 +13 +464.090784277369 +23 +-758.12892025415 +33 +120.753730687408 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006107255299 +20 +-672.469112270075 +30 +212.230111445991 +11 +458.222258577851 +21 +-698.605625061081 +31 +193.903521183332 +12 +458.222252930963 +22 +-671.980703984767 +32 +211.3610708001 +13 +458.222252930963 +23 +-671.980703984767 +33 +211.3610708001 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222258577851 +20 +-698.605625061081 +30 +193.903521183332 +11 +455.006107255299 +21 +-672.469112270075 +31 +212.230111445991 +12 +455.006112926336 +22 +-699.207898179883 +32 +194.697902416163 +13 +455.006112926336 +23 +-699.207898179883 +33 +194.697902416163 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-186.862719999999 +30 +2052.97755335166 +11 +69.0235178451101 +21 +-280.294079999999 +31 +2069.61810878401 +12 +69.0235178451106 +22 +-186.862719999999 +32 +2069.61810878401 +13 +69.0235178451106 +23 +-186.862719999999 +33 +2069.61810878401 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +69.0235178451101 +20 +-280.294079999999 +30 +2069.61810878401 +11 +100.155807358117 +21 +-186.862719999999 +31 +2052.97755335166 +12 +100.155807358117 +22 +-280.294079999999 +32 +2052.97755335166 +13 +100.155807358117 +23 +-280.294079999999 +33 +2052.97755335166 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-280.29408 +30 +1753.52666880208 +11 +127.443487339903 +21 +-186.86272 +31 +1775.92108901406 +12 +100.155807358117 +22 +-186.86272 +32 +1753.52666880208 +13 +100.155807358117 +23 +-186.86272 +33 +1753.52666880208 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +127.443487339903 +20 +-186.86272 +30 +1775.92108901406 +11 +100.155807358117 +21 +-280.29408 +31 +1753.52666880208 +12 +127.443487339902 +22 +-280.29408 +32 +1775.92108901406 +13 +127.443487339902 +23 +-280.29408 +33 +1775.92108901406 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +149.837907551873 +20 +-280.29408 +30 +1803.20876899584 +11 +127.443487339903 +21 +-186.86272 +31 +1775.92108901406 +12 +127.443487339902 +22 +-280.29408 +32 +1775.92108901406 +13 +127.443487339902 +23 +-280.29408 +33 +1775.92108901406 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +127.443487339903 +20 +-186.86272 +30 +1775.92108901406 +11 +149.837907551873 +21 +-280.29408 +31 +1803.20876899584 +12 +149.837907551873 +22 +-186.86272 +32 +1803.20876899584 +13 +149.837907551873 +23 +-186.86272 +33 +1803.20876899584 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +149.837907551873 +20 +-280.29408 +30 +2003.29545315791 +11 +166.47846298422 +21 +-186.86272 +31 +1972.1631636449 +12 +166.478462984219 +22 +-280.29408 +32 +1972.1631636449 +13 +166.478462984219 +23 +-280.29408 +33 +1972.1631636449 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +166.47846298422 +20 +-186.86272 +30 +1972.1631636449 +11 +149.837907551873 +21 +-280.29408 +31 +2003.29545315791 +12 +149.837907551873 +22 +-186.86272 +32 +2003.29545315791 +13 +149.837907551873 +23 +-186.86272 +33 +2003.29545315791 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.27505834726 +20 +-616.515297047424 +30 +85.6286672029373 +11 +753.576410189591 +21 +-595.926735646398 +31 +76.0356884766169 +12 +753.576412075941 +22 +-604.820821451585 +32 +70.2039737536023 +13 +753.576412075941 +23 +-604.820821451585 +33 +70.2039737536023 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576410189591 +20 +-595.926735646398 +30 +76.0356884766169 +11 +744.27505834726 +21 +-616.515297047424 +31 +85.6286672029373 +12 +744.27505599199 +22 +-605.41026540619 +32 +92.9100649699753 +13 +744.27505599199 +23 +-605.41026540619 +33 +92.9100649699753 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101749084159 +20 +-636.941767787464 +30 +209.079797462849 +11 +472.10720415349 +21 +-665.162054034067 +31 +199.228411696097 +12 +473.101757695049 +22 +-663.582663624963 +32 +196.418146784964 +13 +473.101757695049 +23 +-663.582663624963 +33 +196.418146784964 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.10720415349 +20 +-665.162054034067 +30 +199.228411696097 +11 +473.101749084159 +21 +-636.941767787464 +31 +209.079797462849 +12 +472.107195414063 +22 +-638.12348215123 +32 +212.079066347413 +13 +472.107195414063 +23 +-638.12348215123 +33 +212.079066347413 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546355296361 +20 +-622.700434111963 +30 +172.934485818424 +11 +602.133279596418 +21 +-599.869415774734 +31 +181.183685835358 +12 +623.546345594915 +22 +-599.640891643383 +32 +180.244333371467 +13 +623.546345594915 +23 +-599.640891643383 +33 +180.244333371467 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133279596418 +20 +-599.869415774734 +30 +181.183685835358 +11 +623.546355296361 +21 +-622.700434111963 +31 +172.934485818424 +12 +602.133289350819 +22 +-623.054826905935 +32 +173.833938065877 +13 +602.133289350819 +23 +-623.054826905935 +33 +173.833938065877 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +6.30894498883872e-05 +20 +-699.581046774633 +30 +195.189985865263 +11 +448.317785291547 +21 +-723.744834584347 +31 +174.122247190222 +12 +448.317783384355 +22 +-699.580940660874 +32 +195.189933989489 +13 +448.317783384355 +23 +-699.580940660874 +33 +195.189933989489 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317785291547 +20 +-723.744834584347 +30 +174.122247190222 +11 +6.30894498883872e-05 +21 +-699.581046774633 +31 +195.189985865263 +12 +6.49966391634282e-05 +22 +-723.744911722756 +32 +174.12232432863 +13 +6.49966391634282e-05 +23 +-723.744911722756 +33 +174.12232432863 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797687662105 +20 +-702.539296405596 +30 +117.908241171874 +11 +454.667771343765 +21 +-683.695448366281 +31 +134.072860976189 +12 +454.667769896794 +22 +-699.679329838522 +32 +115.739912506852 +13 +454.667769896794 +23 +-699.679329838522 +33 +115.739912506852 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667771343765 +20 +-683.695448366281 +30 +134.072860976189 +11 +454.797687662105 +21 +-702.539296405596 +31 +117.908241171874 +12 +454.797689138238 +22 +-686.233268095701 +32 +136.610680705353 +13 +454.797689138238 +23 +-686.233268095701 +33 +136.610680705353 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667771343765 +20 +-683.695448366281 +30 +134.072860976189 +11 +602.13330076513 +21 +-699.679312774979 +31 +115.739877602763 +12 +454.667769896794 +22 +-699.679329838522 +32 +115.739912506852 +13 +454.667769896794 +23 +-699.679329838522 +33 +115.739912506852 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.13330076513 +20 +-699.679312774979 +30 +115.739877602763 +11 +454.667771343765 +21 +-683.695448366281 +31 +134.072860976189 +12 +602.133302212101 +22 +-683.695422993079 +32 +134.072835602987 +13 +602.133302212101 +23 +-683.695422993079 +33 +134.072835602987 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222252930963 +20 +-671.980703984767 +30 +211.3610708001 +11 +461.269999782869 +21 +-697.7398487668 +31 +192.761586394987 +12 +461.269994170696 +22 +-671.278610214274 +32 +210.111811908437 +13 +461.269994170696 +23 +-671.278610214274 +33 +210.111811908437 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269999782869 +20 +-697.7398487668 +30 +192.761586394987 +11 +458.222252930963 +21 +-671.980703984767 +31 +211.3610708001 +12 +458.222258577851 +22 +-698.605625061081 +32 +193.903521183332 +13 +458.222258577851 +23 +-698.605625061081 +33 +193.903521183332 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602116671527 +20 +-579.071662867255 +30 +216.322569598682 +11 +624.955322175969 +21 +-606.868815812022 +31 +209.956143300585 +12 +624.955307916438 +22 +-578.912147406784 +32 +214.763348941721 +13 +624.955307916438 +23 +-578.912147406784 +33 +214.763348941721 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955322175969 +20 +-606.868815812022 +30 +209.956143300585 +11 +599.602116671527 +21 +-579.071662867255 +31 +216.322569598682 +12 +599.602131038669 +22 +-607.239310377804 +32 +211.479085673936 +13 +599.602131038669 +23 +-607.239310377804 +33 +211.479085673936 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683329511579 +20 +-776.081661498503 +30 +94.1666352734205 +11 +448.31777769836 +21 +-762.390973409752 +31 +123.149041059795 +12 +448.317768339636 +22 +-776.152256350036 +32 +94.1944509495159 +13 +448.317768339636 +23 +-776.152256350036 +33 +94.1944509495159 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.31777769836 +20 +-762.390973409752 +30 +123.149041059795 +11 +451.683329511579 +21 +-776.081661498503 +31 +94.1666352734205 +12 +451.683338867278 +22 +-762.324827081794 +32 +123.111865415064 +13 +451.683338867278 +23 +-762.324827081794 +33 +123.111865415064 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466058322552 +20 +-664.91507027919 +30 +50.366817478493 +11 +744.27505599199 +21 +-642.532652352182 +31 +55.7876780202442 +12 +744.275052115393 +22 +-648.23289118406 +32 +43.7940230954864 +13 +744.275052115393 +23 +-648.23289118406 +33 +43.7940230954864 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.27505599199 +20 +-642.532652352182 +30 +55.7876780202442 +11 +732.466058322552 +21 +-664.91507027919 +31 +50.366817478493 +12 +732.466062914084 +22 +-658.163576116691 +32 +64.5723786137012 +13 +732.466062914084 +23 +-658.163576116691 +33 +64.5723786137012 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006097921195 +20 +-775.577780463213 +30 +93.968104560508 +11 +451.683338867278 +21 +-762.324827081794 +31 +123.111865415064 +12 +451.683329511579 +22 +-776.081661498503 +32 +94.1666352734205 +13 +451.683329511579 +23 +-776.081661498503 +33 +94.1666352734205 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683338867278 +20 +-762.324827081794 +30 +123.111865415064 +11 +455.006097921195 +21 +-775.577780463213 +31 +93.968104560508 +12 +455.006107255299 +22 +-761.852698834952 +32 +122.846524872111 +13 +455.006107255299 +23 +-761.852698834952 +33 +122.846524872111 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546317277054 +20 +-548.656939099171 +30 +185.255996085023 +11 +602.133251163261 +21 +-186.86272 +31 +186.220486963908 +12 +623.546317277054 +22 +-186.86272 +32 +185.255996085023 +13 +623.546317277054 +23 +-186.86272 +33 +185.255996085023 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133251163261 +20 +-186.86272 +30 +186.220486963908 +11 +623.546317277054 +21 +-548.656939099171 +31 +185.255996085023 +12 +602.133251163261 +22 +-548.67314817835 +32 +186.220486963908 +13 +602.133251163261 +23 +-548.67314817835 +33 +186.220486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.82931463357 +20 +-569.196470349584 +30 +119.787647909415 +11 +753.739272918395 +21 +-589.30932977233 +31 +137.774660970991 +12 +767.82932233817 +22 +-584.301801471681 +32 +117.190255690543 +13 +767.82932233817 +23 +-584.301801471681 +33 +117.190255690543 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739272918395 +20 +-589.30932977233 +30 +137.774660970991 +11 +767.82931463357 +21 +-569.196470349584 +31 +119.787647909415 +12 +753.73926375928 +22 +-571.352333223692 +32 +140.862402824032 +13 +753.73926375928 +23 +-571.352333223692 +33 +140.862402824032 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73926375928 +20 +-571.352333223692 +30 +140.862402824032 +11 +736.997677401125 +21 +-593.835505140242 +31 +156.380365045419 +12 +753.739272918395 +22 +-589.30932977233 +32 +137.774660970991 +13 +753.739272918395 +23 +-589.30932977233 +33 +137.774660970991 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997677401125 +20 +-593.835505140242 +30 +156.380365045419 +11 +753.73926375928 +21 +-571.352333223692 +31 +140.862402824032 +12 +736.997666927312 +22 +-573.300963343833 +32 +159.911321013811 +13 +736.997666927312 +23 +-573.300963343833 +33 +159.911321013811 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642078676977 +20 +-686.237536190199 +30 +177.590351345444 +11 +473.101764681482 +21 +-710.482718842918 +31 +160.860131450129 +12 +473.642080404707 +22 +-708.127668368109 +32 +158.505080975556 +13 +473.642080404707 +23 +-708.127668368109 +33 +158.505080975556 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101764681482 +20 +-710.482718842918 +30 +160.860131450129 +11 +473.642078676977 +21 +-686.237536190199 +31 +177.590351345444 +12 +473.101762926689 +22 +-688.249705748186 +32 +180.244348164837 +13 +473.101762926689 +23 +-688.249705748186 +33 +180.244348164837 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201828278129 +20 +-598.389085203732 +30 +48.7664978222319 +11 +764.031425007948 +21 +-579.704781244013 +31 +37.0766018107078 +12 +764.031425302868 +22 +-583.441376980459 +32 +33.8187896004645 +13 +764.031425302868 +23 +-583.441376980459 +33 +33.8187896004645 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031425007948 +20 +-579.704781244013 +30 +37.0766018107078 +11 +760.201828278129 +21 +-598.389085203732 +31 +48.7664978222319 +12 +760.20182781144 +22 +-592.476194788978 +32 +53.921748202446 +13 +760.20182781144 +23 +-592.476194788978 +33 +53.921748202446 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721740244506 +20 +-732.59492990622 +30 +106.403439896738 +11 +448.282017231929 +21 +-715.574196634022 +31 +127.790856991425 +12 +448.282012434797 +22 +-730.404696521621 +32 +105.17251147419 +13 +448.282012434797 +23 +-730.404696521621 +33 +105.17251147419 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282017231929 +20 +-715.574196634022 +30 +127.790856991425 +11 +445.721740244506 +21 +-732.59492990622 +31 +106.403439896738 +12 +445.721745102502 +22 +-717.576266444547 +32 +129.308758123214 +13 +445.721745102502 +23 +-717.576266444547 +33 +129.308758123214 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.13330076513 +20 +-699.679312774979 +30 +115.739877602763 +11 +623.546362358205 +21 +-712.173174760634 +31 +94.9262110334071 +12 +602.13329645121 +22 +-713.015947331523 +32 +95.3998613711292 +13 +602.13329645121 +23 +-713.015947331523 +33 +95.3998613711292 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546362358205 +20 +-712.173174760634 +30 +94.9262110334071 +11 +602.13330076513 +21 +-699.679312774979 +31 +115.739877602763 +12 +623.546366648706 +22 +-698.908941954744 +32 +115.155805645761 +13 +623.546366648706 +23 +-698.908941954744 +33 +115.155805645761 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630441768332 +20 +-739.151644255831 +30 +145.666467410881 +11 +464.090784277369 +21 +-758.12892025415 +31 +120.753730687408 +12 +466.630436254431 +22 +-756.198062094967 +32 +119.668573109345 +13 +466.630436254431 +23 +-756.198062094967 +33 +119.668573109345 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090784277369 +20 +-758.12892025415 +30 +120.753730687408 +11 +466.630441768332 +21 +-739.151644255831 +31 +145.666467410881 +12 +464.090789844927 +22 +-740.916621855406 +32 +147.004613346736 +13 +464.090789844927 +23 +-740.916621855406 +33 +147.004613346736 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090784277369 +20 +-758.12892025415 +30 +120.753730687408 +11 +461.269999782869 +21 +-742.384173786494 +31 +148.117261370797 +12 +461.269994170696 +22 +-759.734399297279 +32 +121.656022816523 +13 +461.269994170696 +23 +-759.734399297279 +33 +121.656022816523 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269999782869 +20 +-742.384173786494 +30 +148.117261370797 +11 +464.090784277369 +21 +-758.12892025415 +31 +120.753730687408 +12 +464.090789844927 +22 +-740.916621855406 +32 +147.004613346736 +13 +464.090789844927 +23 +-740.916621855406 +33 +147.004613346736 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269994170696 +20 +-759.734399297279 +30 +121.656022816523 +11 +458.222258577851 +21 +-743.526108574926 +31 +148.983037664963 +12 +458.222252930963 +22 +-760.983658189012 +32 +122.358116586891 +13 +458.222252930963 +23 +-760.983658189012 +33 +122.358116586891 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222258577851 +20 +-743.526108574926 +30 +148.983037664963 +11 +461.269994170696 +21 +-759.734399297279 +31 +121.656022816523 +12 +461.269999782869 +22 +-742.384173786494 +32 +148.117261370797 +13 +461.269999782869 +23 +-742.384173786494 +33 +148.117261370797 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363103364091 +20 +-672.268220571567 +30 +72.49929930736 +11 +732.466065703719 +21 +-649.539320894872 +31 +77.7254338656707 +12 +732.466062914084 +22 +-658.163576116691 +32 +64.5723786137012 +13 +732.466062914084 +23 +-658.163576116691 +33 +64.5723786137012 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466065703719 +20 +-649.539320894872 +30 +77.7254338656707 +11 +718.363103364091 +21 +-672.268220571567 +31 +72.49929930736 +12 +718.363106545679 +22 +-662.432231199989 +32 +87.5003989193992 +13 +718.363106545679 +23 +-662.432231199989 +33 +87.5003989193992 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466062914084 +20 +-658.163576116691 +30 +64.5723786137012 +11 +744.27505834726 +21 +-635.251254586263 +31 +66.8927096622113 +12 +744.27505599199 +22 +-642.532652352182 +32 +55.7876780202442 +13 +744.27505599199 +23 +-642.532652352182 +33 +55.7876780202442 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.27505834726 +20 +-635.251254586263 +30 +66.8927096622113 +11 +732.466062914084 +21 +-658.163576116691 +31 +64.5723786137012 +12 +732.466065703719 +22 +-649.539320894872 +32 +77.7254338656707 +13 +732.466065703719 +23 +-649.539320894872 +33 +77.7254338656707 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.27505599199 +20 +-642.532652352182 +30 +55.7876780202442 +11 +753.576412075941 +21 +-619.82656113575 +31 +55.1982340679256 +12 +753.576410189591 +22 +-625.658275857869 +32 +46.3041482621511 +13 +753.576410189591 +23 +-625.658275857869 +33 +46.3041482621511 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576412075941 +20 +-619.82656113575 +30 +55.1982340679256 +11 +744.27505599199 +21 +-642.532652352182 +31 +55.7876780202442 +12 +744.27505834726 +22 +-635.251254586263 +32 +66.8927096622113 +13 +744.27505834726 +23 +-635.251254586263 +33 +66.8927096622113 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576410189591 +20 +-625.658275857869 +30 +46.3041482621511 +11 +760.20182781144 +21 +-603.54433558335 +31 +42.8536074069585 +12 +760.201826420081 +22 +-607.845772298605 +32 +36.2933847183422 +13 +760.201826420081 +23 +-607.845772298605 +33 +36.2933847183422 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.20182781144 +20 +-603.54433558335 +30 +42.8536074069585 +11 +753.576410189591 +21 +-625.658275857869 +31 +46.3041482621511 +12 +753.576412075941 +22 +-619.82656113575 +32 +55.1982340679256 +13 +753.576412075941 +23 +-619.82656113575 +33 +55.1982340679256 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.00721860814 +20 +-586.233981212786 +30 +36.6113938325108 +11 +787.130190684252 +21 +-609.757662381006 +31 +47.5643349390529 +12 +792.007218281129 +22 +-589.846284379929 +32 +32.4682094668199 +13 +792.007218281129 +23 +-589.846284379929 +33 +32.4682094668199 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130190684252 +20 +-609.757662381006 +30 +47.5643349390529 +11 +792.00721860814 +21 +-586.233981212786 +31 +36.6113938325108 +12 +787.130191214298 +22 +-603.902540579901 +32 +54.279953197846 +13 +787.130191214298 +23 +-603.902540579901 +33 +54.279953197846 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130191214298 +20 +-603.902540579901 +30 +54.279953197846 +11 +779.024169157982 +21 +-628.985710803041 +31 +62.1423838125873 +12 +787.130190684252 +22 +-609.757662381006 +32 +47.5643349390529 +13 +787.130190684252 +23 +-609.757662381006 +33 +47.5643349390529 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024169157982 +20 +-628.985710803041 +30 +62.1423838125873 +11 +787.130191214298 +21 +-603.902540579901 +31 +54.279953197846 +12 +779.024169884095 +22 +-620.964740882273 +32 +71.3421534984996 +13 +779.024169884095 +23 +-620.964740882273 +33 +71.3421534984996 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024169884095 +20 +-620.964740882273 +30 +71.3421534984996 +11 +767.829335677824 +21 +-647.197908223015 +31 +75.9502497139702 +12 +779.024169157982 +22 +-628.985710803041 +32 +62.1423838125873 +13 +779.024169157982 +23 +-628.985710803041 +33 +62.1423838125873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829335677824 +20 +-647.197908223015 +30 +75.9502497139702 +11 +779.024169884095 +21 +-620.964740882273 +31 +71.3421534984996 +12 +767.829336589646 +22 +-637.125515922866 +32 +87.5029285374647 +13 +767.829336589646 +23 +-637.125515922866 +33 +87.5029285374647 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829336589646 +20 +-637.125515922866 +30 +87.5029285374647 +11 +753.73928877638 +21 +-664.079300898903 +31 +88.749145475747 +12 +767.829335677824 +22 +-647.197908223015 +32 +75.9502497139702 +13 +767.829335677824 +23 +-647.197908223015 +33 +75.9502497139702 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73928877638 +20 +-664.079300898903 +30 +88.749145475747 +11 +767.829336589646 +21 +-637.125515922866 +31 +87.5029285374647 +12 +753.739289860341 +22 +-652.105388357143 +32 +102.482800970232 +13 +753.739289860341 +23 +-652.105388357143 +33 +102.482800970232 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576412075941 +20 +-619.82656113575 +30 +55.1982340679256 +11 +760.201828278129 +21 +-598.389085203732 +31 +48.7664978222319 +12 +760.20182781144 +22 +-603.54433558335 +32 +42.8536074069585 +13 +760.20182781144 +23 +-603.54433558335 +33 +42.8536074069585 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201828278129 +20 +-598.389085203732 +30 +48.7664978222319 +11 +753.576412075941 +21 +-619.82656113575 +31 +55.1982340679256 +12 +753.576412708658 +22 +-612.837280222141 +32 +63.214692839186 +13 +753.576412708658 +23 +-612.837280222141 +33 +63.214692839186 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739264589701 +20 +-690.205036468984 +30 +23.3578379709152 +11 +736.997666927312 +21 +-709.533908392784 +31 +23.6783759511398 +12 +739.751559375878 +22 +-706.400475394532 +32 +23.357837962948 +13 +739.751559375878 +23 +-706.400475394532 +33 +23.357837962948 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997666927312 +20 +-709.533908392784 +30 +23.6783759511398 +11 +753.739264589701 +21 +-690.205036468984 +31 +23.3578379709152 +12 +753.739272918395 +22 +-687.397248351576 +32 +39.6867423818656 +13 +753.739272918395 +23 +-687.397248351576 +33 +39.6867423818656 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +736.997666927312 +20 +-709.533908392784 +30 +23.6783759511398 +11 +753.739272918395 +21 +-687.397248351576 +31 +39.6867423818656 +12 +736.997677401125 +22 +-706.00295242646 +32 +44.2129177479029 +13 +736.997677401125 +23 +-706.00295242646 +33 +44.2129177479029 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997666927312 +20 +-709.533908392784 +30 +23.6783759511398 +11 +717.894057585081 +21 +-722.308196422019 +31 +48.1794664928565 +12 +717.894045959123 +22 +-726.227566234427 +32 +25.3860745623198 +13 +717.894045959123 +23 +-726.227566234427 +33 +25.3860745623198 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894057585081 +20 +-722.308196422019 +30 +48.1794664928565 +11 +736.997666927312 +21 +-709.533908392784 +31 +23.6783759511398 +12 +736.997677401125 +22 +-706.00295242646 +32 +44.2129177479029 +13 +736.997677401125 +23 +-706.00295242646 +33 +44.2129177479029 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894045959123 +20 +-726.227566234427 +30 +25.3860745623198 +11 +696.758783079627 +21 +-736.03100461107 +31 +51.5177928651329 +12 +696.758770484001 +22 +-740.277270942125 +32 +26.8233094768247 +13 +696.758770484001 +23 +-740.277270942125 +33 +26.8233094768247 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758783079627 +20 +-736.03100461107 +30 +51.5177928651329 +11 +717.894045959123 +21 +-726.227566234427 +31 +25.3860745623198 +12 +717.894057585081 +22 +-722.308196422019 +32 +48.1794664928565 +13 +717.894057585081 +23 +-722.308196422019 +33 +48.1794664928565 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221361580333 +20 +-660.639487120937 +30 +111.016899733167 +11 +684.332896682708 +21 +-652.814503888805 +31 +133.506322083721 +12 +702.221360398304 +22 +-645.663323591295 +32 +124.074113264079 +13 +702.221360398304 +23 +-645.663323591295 +33 +124.074113264079 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332896682708 +20 +-652.814503888805 +30 +133.506322083721 +11 +702.221361580333 +21 +-660.639487120937 +31 +111.016899733167 +12 +684.332897960916 +22 +-669.009252539392 +32 +119.38666515078 +13 +684.332897960916 +23 +-669.009252539392 +33 +119.38666515078 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838915479952 +20 +-578.783910422824 +30 +213.508718295381 +11 +429.26772029492 +21 +-549.153237717187 +31 +214.795486963908 +12 +432.838897838644 +22 +-549.148351803013 +32 +214.504708726405 +13 +432.838897838644 +23 +-549.148351803013 +33 +214.504708726405 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.26772029492 +20 +-549.153237717187 +30 +214.795486963908 +11 +432.838915479952 +21 +-578.783910422824 +31 +213.508718295381 +12 +429.267737950976 +22 +-578.813572557816 +32 +213.798663854844 +13 +429.267737950976 +23 +-578.813572557816 +33 +213.798663854844 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282017231929 +20 +-677.413444384727 +30 +165.951609244563 +11 +450.471119570638 +21 +-653.402150740311 +31 +178.303588160926 +12 +450.471124298894 +22 +-675.695750953173 +32 +163.686018751541 +13 +450.471124298894 +23 +-675.695750953173 +33 +163.686018751541 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471119570638 +20 +-653.402150740311 +30 +178.303588160926 +11 +448.282017231929 +21 +-677.413444384727 +31 +165.951609244563 +12 +448.282012434797 +22 +-654.795098868987 +32 +180.78210913444 +13 +448.282012434797 +23 +-654.795098868987 +33 +180.78210913444 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471124298894 +20 +-675.695750953173 +30 +163.686018751541 +11 +452.247009199941 +21 +-651.873941250939 +31 +175.584391651154 +12 +452.247013852634 +22 +-673.811261880626 +32 +161.200429262907 +13 +452.247013852634 +23 +-673.811261880626 +33 +161.200429262907 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247009199941 +20 +-651.873941250939 +30 +175.584391651154 +11 +450.471124298894 +21 +-675.695750953173 +31 +163.686018751541 +12 +450.471119570638 +22 +-653.402150740311 +32 +178.303588160926 +13 +450.471119570638 +23 +-653.402150740311 +33 +178.303588160926 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247013852634 +20 +-673.811261880626 +30 +161.200429262907 +11 +453.575566723046 +21 +-650.239827098532 +31 +172.676755002411 +12 +453.575571294939 +22 +-671.796177947369 +32 +158.542588616663 +13 +453.575571294939 +23 +-671.796177947369 +33 +158.542588616663 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575566723046 +20 +-650.239827098532 +30 +172.676755002411 +11 +452.247013852634 +21 +-673.811261880626 +31 +161.200429262907 +12 +452.247009199941 +22 +-651.873941250939 +32 +175.584391651154 +13 +452.247009199941 +23 +-651.873941250939 +33 +175.584391651154 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575571294939 +20 +-671.796177947369 +30 +158.542588616663 +11 +454.431270729568 +21 +-648.531199395009 +31 +169.63653352158 +12 +454.431275216977 +22 +-669.689208643299 +32 +155.763553572255 +13 +454.431275216977 +23 +-669.689208643299 +33 +155.763553572255 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431270729568 +20 +-648.531199395009 +30 +169.63653352158 +11 +453.575571294939 +21 +-671.796177947369 +31 +158.542588616663 +12 +453.575566723046 +22 +-650.239827098532 +32 +172.676755002411 +13 +453.575566723046 +23 +-650.239827098532 +33 +172.676755002411 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130167954486 +20 +-546.781824001004 +30 +73.639808098986 +11 +779.024152399766 +21 +-566.87065726704 +31 +97.0515138238504 +12 +787.130178451143 +22 +-564.415115565838 +32 +73.0471892828083 +13 +787.130178451143 +23 +-564.415115565838 +33 +73.0471892828083 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024152399766 +20 +-566.87065726704 +30 +97.0515138238504 +11 +787.130167954486 +21 +-546.781824001004 +31 +73.639808098986 +12 +779.024140682123 +22 +-547.186238711366 +32 +97.7130668174428 +13 +779.024140682123 +23 +-547.186238711366 +33 +97.7130668174428 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024140682123 +20 +-547.186238711366 +30 +97.7130668174428 +11 +767.82931463357 +21 +-569.196470349584 +31 +119.787647909415 +12 +779.024152399766 +22 +-566.87065726704 +32 +97.0515138238504 +13 +779.024152399766 +23 +-566.87065726704 +33 +97.0515138238504 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.82931463357 +20 +-569.196470349584 +30 +119.787647909415 +11 +779.024140682123 +21 +-547.186238711366 +31 +97.7130668174428 +12 +767.829301759449 +22 +-547.569288532173 +32 +120.514493197419 +13 +767.829301759449 +23 +-547.569288532173 +33 +120.514493197419 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +746.929122901675 +20 +-767.779871902213 +30 +-2.12061479487602e-10 +11 +718.95840239636 +21 +-786.469309831082 +31 +23.3578380791782 +12 +718.958402396357 +22 +-786.469309831078 +32 +-1.92750349015114e-10 +13 +718.958402396357 +23 +-786.469309831078 +33 +-1.92750349015114e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.95840239636 +20 +-786.469309831082 +30 +23.3578380791782 +11 +746.929122901675 +21 +-767.779871902213 +31 +-2.12061479487602e-10 +12 +746.929122901678 +22 +-767.779871902217 +32 +23.3578380791593 +13 +746.929122901678 +23 +-767.779871902217 +33 +23.3578380791593 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +827.969621169947 +20 +-662.165838331307 +30 +-1.61527680120344e-10 +11 +813.090985614623 +21 +-692.336726612819 +31 +23.3578380791782 +12 +813.09098561462 +22 +-692.336726612815 +32 +-1.92750349015114e-10 +13 +813.09098561462 +23 +-692.336726612815 +33 +-1.92750349015114e-10 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +813.090985614623 +20 +-692.336726612819 +30 +23.3578380791782 +11 +827.969621169947 +21 +-662.165838331307 +31 +-1.61527680120344e-10 +12 +827.96962116995 +22 +-662.165838331311 +32 +23.3578380792096 +13 +827.96962116995 +23 +-662.165838331311 +33 +23.3578380792096 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101757695049 +20 +-746.04073417303 +30 +113.960076228591 +11 +472.107195414063 +21 +-761.701653732916 +31 +88.5008947532808 +12 +473.101749084159 +22 +-758.702384848233 +32 +87.3191803898169 +13 +473.101749084159 +23 +-758.702384848233 +33 +87.3191803898169 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107195414063 +20 +-761.701653732916 +30 +88.5008947532808 +11 +473.101757695049 +21 +-746.04073417303 +31 +113.960076228591 +12 +472.10720415349 +22 +-748.850999084323 +32 +115.539466637413 +13 +472.10720415349 +23 +-748.850999084323 +33 +115.539466637413 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275052115393 +20 +-593.416610482006 +30 +98.6103038030606 +11 +753.576402819491 +21 +-576.182653575586 +31 +83.8148703207571 +12 +753.576407084801 +22 +-586.320946175488 +32 +80.6010436173693 +13 +753.576407084801 +23 +-586.320946175488 +33 +80.6010436173693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576402819491 +20 +-576.182653575586 +30 +83.8148703207571 +11 +744.275052115393 +21 +-593.416610482006 +31 +98.6103038030606 +12 +744.275046789786 +22 +-580.758079568763 +32 +102.623043056121 +13 +744.275046789786 +23 +-580.758079568763 +33 +102.623043056121 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.20182781144 +20 +-603.54433558335 +30 +42.8536074069585 +11 +764.031425302868 +21 +-583.441376980459 +31 +33.8187896004645 +12 +764.031425007948 +22 +-586.699189190326 +32 +30.0821938636906 +13 +764.031425007948 +23 +-586.699189190326 +33 +30.0821938636906 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031425302868 +20 +-583.441376980459 +30 +33.8187896004645 +11 +760.20182781144 +21 +-603.54433558335 +31 +42.8536074069585 +12 +760.201828278129 +22 +-598.389085203732 +32 +48.7664978222319 +13 +760.201828278129 +23 +-598.389085203732 +33 +48.7664978222319 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73928877638 +20 +-664.079300898903 +30 +88.749145475747 +11 +736.997691839832 +21 +-690.762816990611 +31 +82.8933973835911 +12 +753.73928554472 +22 +-674.070091498716 +32 +73.5119548557674 +13 +753.73928554472 +23 +-674.070091498716 +33 +73.5119548557674 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997691839832 +20 +-690.762816990611 +30 +82.8933973835911 +11 +753.73928877638 +21 +-664.079300898903 +31 +88.749145475747 +12 +736.997695535365 +22 +-679.337949441333 +32 +100.317732616843 +13 +736.997695535365 +23 +-679.337949441333 +33 +100.317732616843 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840171011807 +20 +-716.921589517517 +30 +167.299002124079 +11 +466.630441768332 +21 +-739.151644255831 +31 +145.666467410881 +12 +468.840169183023 +22 +-737.123145968814 +32 +144.128529165728 +13 +468.840169183023 +23 +-737.123145968814 +33 +144.128529165728 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630441768332 +20 +-739.151644255831 +30 +145.666467410881 +11 +468.840171011807 +21 +-716.921589517517 +31 +167.299002124079 +12 +466.6304436178 +22 +-718.721597772832 +32 +169.099010379212 +13 +466.6304436178 +23 +-718.721597772832 +33 +169.099010379212 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.6304436178 +20 +-718.721597772832 +30 +169.099010379212 +11 +464.090789844927 +21 +-740.916621855406 +31 +147.004613346736 +12 +466.630441768332 +22 +-739.151644255831 +32 +145.666467410881 +13 +466.630441768332 +23 +-739.151644255831 +33 +145.666467410881 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090789844927 +20 +-740.916621855406 +30 +147.004613346736 +11 +466.6304436178 +21 +-718.721597772832 +31 +169.099010379212 +12 +464.090791712392 +22 +-720.287768351753 +32 +170.665180957976 +13 +464.090791712392 +23 +-720.287768351753 +33 +170.665180957976 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363098127435 +20 +-679.968320245868 +30 +56.297813526916 +11 +732.466062914084 +21 +-658.163576116691 +31 +64.5723786137012 +12 +732.466058322552 +22 +-664.91507027919 +32 +50.366817478493 +13 +732.466058322552 +23 +-664.91507027919 +33 +50.366817478493 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466062914084 +20 +-658.163576116691 +30 +64.5723786137012 +11 +718.363098127435 +21 +-679.968320245868 +31 +56.297813526916 +12 +718.363103364091 +22 +-672.268220571567 +32 +72.49929930736 +13 +718.363103364091 +23 +-672.268220571567 +33 +72.49929930736 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317768339636 +20 +-643.81703834892 +30 +226.52966896396 +11 +451.683338867278 +21 +-672.734452813075 +31 +212.702239692806 +12 +451.683329511579 +22 +-643.789222672817 +32 +226.45907411243 +13 +451.683329511579 +23 +-643.789222672817 +33 +226.45907411243 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683338867278 +20 +-672.734452813075 +30 +212.702239692806 +11 +448.317768339636 +21 +-643.81703834892 +31 +226.52966896396 +12 +448.31777769836 +22 +-672.771628457813 +32 +212.76838602076 +13 +448.31777769836 +23 +-672.771628457813 +33 +212.76838602076 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677509279169 +20 +-639.24331958749 +30 +214.92128705308 +11 +468.84016373079 +21 +-668.043983209856 +31 +204.35632895538 +12 +470.677518140403 +22 +-666.658744301589 +32 +201.891525102388 +13 +470.677518140403 +23 +-666.658744301589 +33 +201.891525102388 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.84016373079 +20 +-668.043983209856 +30 +204.35632895538 +11 +470.677509279169 +21 +-639.24331958749 +31 +214.92128705308 +12 +468.84015475682 +22 +-640.279768170507 +32 +217.551860904389 +13 +468.84015475682 +23 +-640.279768170507 +33 +217.551860904389 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677518140403 +20 +-666.658744301589 +30 +201.891525102388 +11 +468.840169183023 +21 +-693.751116561201 +31 +187.500558577709 +12 +470.677523524142 +22 +-692.042929592268 +32 +185.247506781241 +13 +470.677523524142 +23 +-692.042929592268 +33 +185.247506781241 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840169183023 +20 +-693.751116561201 +30 +187.500558577709 +11 +470.677518140403 +21 +-666.658744301589 +31 +201.891525102388 +12 +468.84016373079 +22 +-668.043983209856 +32 +204.35632895538 +13 +468.84016373079 +23 +-668.043983209856 +33 +204.35632895538 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.84016373079 +20 +-668.043983209856 +30 +204.35632895538 +11 +466.630441768332 +21 +-695.289054806558 +31 +189.529056864572 +12 +468.840169183023 +22 +-693.751116561201 +32 +187.500558577709 +13 +468.840169183023 +23 +-693.751116561201 +33 +187.500558577709 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630441768332 +20 +-695.289054806558 +30 +189.529056864572 +11 +468.84016373079 +21 +-668.043983209856 +31 +204.35632895538 +12 +466.630436254431 +22 +-669.291160506739 +32 +206.575474706326 +13 +466.630436254431 +23 +-669.291160506739 +33 +206.575474706326 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630436254431 +20 +-669.291160506739 +30 +206.575474706326 +11 +464.090789844927 +21 +-696.627200742591 +31 +191.294034464012 +12 +466.630441768332 +22 +-695.289054806558 +32 +189.529056864572 +13 +466.630441768332 +23 +-695.289054806558 +33 +189.529056864572 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090789844927 +20 +-696.627200742591 +30 +191.294034464012 +11 +466.630436254431 +21 +-669.291160506739 +31 +206.575474706326 +12 +464.090784277369 +22 +-670.376318084996 +32 +208.5063328654 +13 +464.090784277369 +23 +-670.376318084996 +33 +208.5063328654 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269994170696 +20 +-671.278610214274 +30 +210.111811908437 +11 +464.090789844927 +21 +-696.627200742591 +31 +191.294034464012 +12 +464.090784277369 +22 +-670.376318084996 +32 +208.5063328654 +13 +464.090784277369 +23 +-670.376318084996 +33 +208.5063328654 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090789844927 +20 +-696.627200742591 +30 +191.294034464012 +11 +461.269994170696 +21 +-671.278610214274 +31 +210.111811908437 +12 +461.269999782869 +22 +-697.7398487668 +32 +192.761586394987 +13 +461.269999782869 +23 +-697.7398487668 +33 +192.761586394987 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0162646316092562 +20 +-763.421247562364 +30 +29.1912221451116 +11 +429.267734478649 +21 +-763.617291372796 +31 +23.3578378527852 +12 +0.00828976046904545 +22 +-763.617295762417 +32 +23.3578364570492 +13 +0.00828976046904545 +23 +-763.617295762417 +33 +23.3578364570492 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267734478649 +20 +-763.617291372796 +30 +23.3578378527852 +11 +0.0162646316092562 +21 +-763.421247562364 +31 +29.1912221451116 +12 +429.267737950976 +22 +-763.421251234373 +32 +29.1909851596944 +13 +429.267737950976 +23 +-763.421251234373 +33 +29.1909851596944 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690582495428 +20 +-761.097663471809 +30 +28.9532865498045 +11 +442.839449157947 +21 +-759.575223903305 +31 +23.3578378579396 +12 +439.690579164597 +22 +-761.285715042239 +32 +23.357837856573 +13 +439.690579164597 +23 +-761.285715042239 +33 +23.357837856573 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839449157947 +20 +-759.575223903305 +30 +23.3578378579396 +11 +439.690582495428 +21 +-761.097663471809 +31 +28.9532865498045 +12 +442.839452384975 +22 +-759.393032819931 +32 +28.7789085623947 +13 +442.839452384975 +23 +-759.393032819931 +33 +28.7789085623947 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466052014781 +20 +-669.667851071909 +30 +35.3737619083722 +11 +744.275042822729 +21 +-653.583013796713 +31 +23.35783797602 +12 +732.466045885959 +22 +-671.734013479962 +32 +23.3578379683062 +13 +732.466045885959 +23 +-671.734013479962 +33 +23.3578379683062 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275042822729 +20 +-653.583013796713 +30 +23.35783797602 +11 +732.466052014781 +21 +-669.667851071909 +31 +35.3737619083722 +12 +744.275046789786 +22 +-652.245630435845 +32 +31.1354921818382 +13 +744.275046789786 +23 +-652.245630435845 +33 +31.1354921818382 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021370191738 +20 +-719.684397959595 +30 +47.5412056189011 +11 +684.332867182503 +21 +-714.266540775895 +31 +24.1625326278822 +12 +665.021358751182 +22 +-723.541264381198 +32 +25.1113068905408 +13 +665.021358751182 +23 +-723.541264381198 +33 +25.1113068905408 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332867182503 +20 +-714.266540775895 +30 +24.1625326278822 +11 +665.021370191738 +21 +-719.684397959595 +31 +47.5412056189011 +12 +684.332877982946 +22 +-710.625470617764 +32 +45.3374518452758 +13 +684.332877982946 +23 +-710.625470617764 +33 +45.3374518452758 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090741872935 +20 +-786.683847141088 +30 +23.3578378586363 +11 +461.269956337624 +21 +-788.240871473567 +31 +31.7299058573872 +12 +461.269951353941 +22 +-788.522239532049 +32 +23.3578378573451 +13 +461.269951353941 +23 +-788.522239532049 +33 +23.3578378573451 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269956337624 +20 +-788.240871473567 +30 +31.7299058573872 +11 +464.090741872935 +21 +-786.683847141088 +31 +23.3578378586363 +12 +464.090746745054 +22 +-786.408777774662 +32 +31.5424891402109 +13 +464.090746745054 +23 +-786.408777774662 +33 +31.5424891402109 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636242951136 +20 +-726.13713335826 +30 +49.1109574716297 +11 +665.021358751182 +21 +-723.541264381198 +31 +25.1113068905408 +12 +644.636231054623 +22 +-730.147712824956 +32 +25.7871288899166 +13 +644.636231054623 +23 +-730.147712824956 +33 +25.7871288899166 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021358751182 +20 +-723.541264381198 +30 +25.1113068905408 +11 +644.636242951136 +21 +-726.13713335826 +31 +49.1109574716297 +12 +665.021370191738 +22 +-719.684397959595 +32 +47.5412056189011 +13 +665.021370191738 +23 +-719.684397959595 +33 +47.5412056189011 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +180.160557528893 +20 +-280.29408 +30 +1570.85958260462 +11 +176.700983922342 +21 +-186.86272 +31 +1535.73394230883 +12 +176.700983922341 +22 +-280.29408 +32 +1535.73394230883 +13 +176.700983922341 +23 +-280.29408 +33 +1535.73394230883 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +176.700983922342 +20 +-186.86272 +30 +1535.73394230883 +11 +180.160557528893 +21 +-280.29408 +31 +1570.85958260462 +12 +180.160557528894 +22 +-186.86272 +32 +1570.85958260462 +13 +180.160557528894 +23 +-186.86272 +33 +1570.85958260462 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +176.700983922341 +20 +-280.29408 +30 +1535.73394230883 +11 +166.455212576235 +21 +-186.86272 +31 +1501.95816067091 +12 +166.455212576234 +22 +-280.29408 +32 +1501.95816067091 +13 +166.455212576234 +23 +-280.29408 +33 +1501.95816067091 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +166.455212576235 +20 +-186.86272 +30 +1501.95816067091 +11 +176.700983922341 +21 +-280.29408 +31 +1535.73394230883 +12 +176.700983922342 +22 +-186.86272 +32 +1535.73394230883 +13 +176.700983922342 +23 +-186.86272 +33 +1535.73394230883 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +166.455212576234 +20 +-280.29408 +30 +1501.95816067091 +11 +149.816982737509 +21 +-186.86272 +31 +1470.83022203755 +12 +149.816982737509 +22 +-280.29408 +32 +1470.83022203755 +13 +149.816982737509 +23 +-280.29408 +33 +1470.83022203755 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +149.816982737509 +20 +-186.86272 +30 +1470.83022203755 +11 +166.455212576234 +21 +-280.29408 +31 +1501.95816067091 +12 +166.455212576235 +22 +-186.86272 +32 +1501.95816067091 +13 +166.455212576235 +23 +-186.86272 +33 +1501.95816067091 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +149.816982737509 +20 +-280.29408 +30 +1470.83022203755 +11 +127.42569224804 +21 +-186.86272 +31 +1443.54635563367 +12 +127.425692248039 +22 +-280.29408 +32 +1443.54635563367 +13 +127.425692248039 +23 +-280.29408 +33 +1443.54635563367 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +127.42569224804 +20 +-186.86272 +30 +1443.54635563367 +11 +149.816982737509 +21 +-280.29408 +31 +1470.83022203755 +12 +149.816982737509 +22 +-186.86272 +32 +1470.83022203755 +13 +149.816982737509 +23 +-186.86272 +33 +1470.83022203755 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717763908762 +20 +-634.484263142475 +30 +202.842487443351 +11 +599.602150844536 +21 +-660.298108897689 +31 +190.573882756048 +12 +599.60214250095 +22 +-634.484214570593 +32 +202.842483429208 +13 +599.60214250095 +23 +-634.484214570593 +33 +202.842483429208 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602150844536 +20 +-660.298108897689 +30 +190.573882756048 +11 +473.717763908762 +21 +-634.484263142475 +31 +202.842487443351 +12 +473.717772252345 +22 +-660.298147720458 +32 +190.573891403664 +13 +473.717772252345 +23 +-660.298147720458 +33 +190.573891403664 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721732248607 +20 +-631.28782828485 +30 +194.729696180594 +11 +442.839466299903 +21 +-605.682549578299 +31 +205.079413127562 +12 +445.721721263973 +22 +-605.178251275471 +32 +203.006401057676 +13 +445.721721263973 +23 +-605.178251275471 +33 +203.006401057676 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839466299903 +20 +-605.682549578299 +30 +205.079413127562 +11 +445.721732248607 +21 +-631.28782828485 +31 +194.729696180594 +12 +442.839477401402 +22 +-632.069903787681 +32 +196.714653208256 +13 +442.839477401402 +23 +-632.069903787681 +33 +196.714653208256 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546345594915 +20 +-729.866920753093 +30 +50.0183042486409 +11 +644.636231054623 +21 +-730.147712824956 +31 +25.7871288899166 +12 +623.546333434853 +22 +-733.96634875632 +32 +26.1777702748551 +13 +623.546333434853 +23 +-733.96634875632 +33 +26.1777702748551 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636231054623 +20 +-730.147712824956 +30 +25.7871288899166 +11 +623.546345594915 +21 +-729.866920753093 +31 +50.0183042486409 +12 +644.636242951136 +22 +-726.13713335826 +32 +49.1109574716297 +13 +644.636242951136 +23 +-726.13713335826 +33 +49.1109574716297 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431240478811 +20 +-742.052468269584 +30 +27.0050383833634 +11 +454.797666066761 +21 +-734.293588076417 +31 +51.0952482583018 +12 +454.797653593913 +22 +-738.498463121584 +32 +26.6414790273437 +13 +454.797653593913 +23 +-738.498463121584 +33 +26.6414790273437 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797666066761 +20 +-734.293588076417 +30 +51.0952482583018 +11 +454.431240478811 +21 +-742.052468269584 +31 +27.0050383833634 +12 +454.431253196946 +22 +-737.764901599428 +32 +51.9397070211046 +13 +454.431253196946 +23 +-737.764901599428 +33 +51.9397070211046 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275046789786 +20 +-652.245630435845 +30 +31.1354921818382 +11 +753.576401186168 +21 +-633.988087312601 +31 +23.3578379832645 +12 +744.275042822729 +22 +-653.583013796713 +32 +23.35783797602 +13 +744.275042822729 +23 +-653.583013796713 +33 +23.35783797602 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576401186168 +20 +-633.988087312601 +30 +23.3578379832645 +11 +744.275046789786 +21 +-652.245630435845 +31 +31.1354921818382 +12 +753.576402819491 +22 +-633.437457700021 +32 +26.5600661905556 +13 +753.576402819491 +23 +-633.437457700021 +33 +26.5600661905556 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471087696265 +20 +-751.942885609203 +30 +28.0167869283821 +11 +452.246991021541 +21 +-744.394381773506 +31 +53.5524466917642 +12 +452.246977834961 +22 +-748.839872068014 +32 +27.6993612581553 +13 +452.246977834961 +23 +-748.839872068014 +33 +27.6993612581553 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246991021541 +20 +-744.394381773506 +30 +53.5524466917642 +11 +450.471087696265 +21 +-751.942885609203 +31 +28.0167869283821 +12 +450.471101097006 +22 +-747.425197006803 +32 +54.2897470886059 +13 +450.471101097006 +23 +-747.425197006803 +33 +54.2897470886059 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683281480069 +20 +-549.621181308374 +30 +242.650939792116 +11 +455.006069025402 +21 +-581.599775817026 +31 +241.035583090668 +12 +455.00604998394 +22 +-549.612103415805 +32 +242.110623248711 +13 +455.00604998394 +23 +-549.612103415805 +33 +242.110623248711 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006069025402 +20 +-581.599775817026 +30 +241.035583090668 +11 +451.683281480069 +21 +-549.621181308374 +31 +242.650939792116 +12 +451.683300548936 +22 +-581.654891394158 +32 +241.574352401781 +13 +451.683300548936 +23 +-581.654891394158 +33 +241.574352401781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +793.309565768095 +20 +-569.303680096418 +30 +23.3578380100164 +11 +792.00721860814 +21 +-586.233981212786 +31 +36.6113938325108 +12 +793.160541596036 +22 +-572.980425388099 +32 +23.3578380091579 +13 +793.160541596036 +23 +-572.980425388099 +33 +23.3578380091579 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.00721860814 +20 +-586.233981212786 +30 +36.6113938325108 +11 +793.309565768095 +21 +-569.303680096418 +31 +23.3578380100164 +12 +792.007218281129 +22 +-582.09079684746 +32 +40.22369700007 +13 +792.007218281129 +23 +-582.09079684746 +33 +40.22369700007 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267763467221 +20 +-633.554254686993 +30 +200.482021877632 +11 +0.0162788245333154 +21 +-606.639891924184 +31 +209.013909072529 +12 +429.267752143919 +22 +-606.639691213326 +32 +209.013906507055 +13 +429.267752143919 +23 +-606.639691213326 +33 +209.013906507055 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0162788245333154 +20 +-606.639891924184 +30 +209.013909072529 +11 +429.267763467221 +21 +-633.554254686993 +31 +200.482021877632 +12 +0.0162901478210909 +22 +-633.55442031161 +32 +200.482035565403 +13 +0.0162901478210909 +23 +-633.55442031161 +33 +200.482035565403 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363098127435 +20 +-605.920400916633 +30 +130.345732863609 +11 +702.221343105619 +21 +-592.16215835415 +31 +149.501676557166 +12 +718.363090933403 +22 +-588.820775333035 +32 +135.766293848309 +13 +718.363090933403 +23 +-588.820775333035 +33 +135.766293848309 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221343105619 +20 +-592.16215835415 +30 +149.501676557166 +11 +718.363098127435 +21 +-605.920400916633 +31 +130.345732863609 +12 +702.221351073972 +22 +-611.102282944468 +32 +143.497679575028 +13 +702.221351073972 +23 +-611.102282944468 +33 +143.497679575028 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024158535186 +20 +-578.899518233046 +30 +94.9831268667919 +11 +767.829328484993 +21 +-598.912297398533 +31 +112.558745848353 +12 +779.024163430099 +22 +-590.534326018981 +32 +91.2949066282494 +13 +779.024163430099 +23 +-590.534326018981 +33 +91.2949066282494 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829328484993 +20 +-598.912297398533 +30 +112.558745848353 +11 +779.024158535186 +21 +-578.899518233046 +31 +94.9831268667919 +12 +767.82932233817 +22 +-584.301801471681 +32 +117.190255690543 +13 +767.82932233817 +23 +-584.301801471681 +33 +117.190255690543 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +93.652471048303 +20 +-186.862719999999 +30 +2499.20806403607 +11 +123.089851596878 +21 +-280.294079999999 +31 +2224.76609686633 +12 +123.089851596878 +22 +-186.862719999999 +32 +2224.76609686633 +13 +123.089851596878 +23 +-186.862719999999 +33 +2224.76609686633 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +123.089851596878 +20 +-280.294079999999 +30 +2224.76609686633 +11 +93.652471048303 +21 +-186.862719999999 +31 +2499.20806403607 +12 +93.6524710483026 +22 +-280.294079999999 +32 +2499.20806403607 +13 +93.6524710483026 +23 +-280.294079999999 +33 +2499.20806403607 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269951353941 +20 +-788.522239532049 +30 +23.3578378573451 +11 +458.222214863865 +21 +-789.666464186592 +31 +31.8757394304439 +12 +458.222209793371 +22 +-789.952733412824 +32 +23.3578378560715 +13 +458.222209793371 +23 +-789.952733412824 +33 +23.3578378560715 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222214863865 +20 +-789.666464186592 +30 +31.8757394304439 +11 +461.269951353941 +21 +-788.522239532049 +31 +23.3578378573451 +12 +461.269956337624 +22 +-788.240871473567 +32 +31.7299058573872 +13 +461.269956337624 +23 +-788.240871473567 +33 +31.7299058573872 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246977834961 +20 +-748.839872068014 +30 +27.6993612581553 +11 +453.575548860337 +21 +-741.153531203966 +31 +52.7640516820845 +12 +453.575535902759 +22 +-745.521819843274 +32 +27.3599383202345 +13 +453.575535902759 +23 +-745.521819843274 +33 +27.3599383202345 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575548860337 +20 +-741.153531203966 +30 +52.7640516820845 +11 +452.246977834961 +21 +-748.839872068014 +31 +27.6993612581553 +12 +452.246991021541 +22 +-744.394381773506 +32 +53.5524466917642 +13 +452.246991021541 +23 +-744.394381773506 +33 +53.5524466917642 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721707495526 +20 +-757.270638693351 +30 +28.5617953495419 +11 +448.28197715053 +21 +-754.937553544539 +31 +23.3578378606726 +12 +445.72170439774 +22 +-757.445533046268 +32 +23.3578378593151 +13 +445.72170439774 +23 +-757.445533046268 +33 +23.3578378593151 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.28197715053 +20 +-754.937553544539 +30 +23.3578378606726 +11 +445.721707495526 +21 +-757.270638693351 +31 +28.5617953495419 +12 +448.281980096118 +22 +-754.771251996272 +32 +28.306117626709 +13 +448.281980096118 +23 +-754.771251996272 +33 +28.306117626709 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838915479952 +20 +-763.131305674907 +30 +29.1613230247316 +11 +436.335583784501 +21 +-762.544148159569 +31 +23.3578378552417 +12 +432.838912025282 +22 +-763.326348925263 +32 +23.3578378539704 +13 +432.838912025282 +23 +-763.326348925263 +33 +23.3578378539704 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335583784501 +20 +-762.544148159569 +30 +23.3578378552417 +11 +432.838915479952 +21 +-763.131305674907 +31 +29.1613230247316 +12 +436.335587191701 +22 +-762.351784924648 +32 +29.0815795342117 +13 +436.335587191701 +23 +-762.351784924648 +33 +29.0815795342117 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667736501664 +20 +-734.928076357629 +30 +26.2762441782473 +11 +602.133265632776 +21 +-735.026156540265 +31 +23.357837913399 +12 +454.667734764409 +22 +-735.026158016502 +32 +23.3578378670709 +13 +454.667734764409 +23 +-735.026158016502 +33 +23.3578378670709 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133265632776 +20 +-735.026156540265 +30 +23.357837913399 +11 +454.667736501664 +21 +-734.928076357629 +31 +26.2762441782473 +12 +602.133267369982 +22 +-734.928077619115 +32 +26.2761627640122 +13 +602.133267369982 +23 +-734.928077619115 +33 +26.2761627640122 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73928554472 +20 +-623.13454224489 +30 +124.447504114724 +11 +736.997695535365 +21 +-649.940320006495 +31 +129.715362054641 +12 +753.73928877638 +22 +-638.371732863863 +32 +114.456713513376 +13 +753.73928877638 +23 +-638.371732863863 +33 +114.456713513376 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997695535365 +20 +-649.940320006495 +30 +129.715362054641 +11 +753.73928554472 +21 +-623.13454224489 +31 +124.447504114724 +12 +736.997691839832 +22 +-632.515984774395 +32 +141.140229605674 +13 +736.997691839832 +23 +-632.515984774395 +33 +141.140229605674 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221360398304 +20 +-673.696700650341 +30 +96.0407362022104 +11 +718.363107612844 +21 +-650.643847155672 +31 +101.021259768909 +12 +718.363106545679 +22 +-662.432231199989 +32 +87.5003989193992 +13 +718.363106545679 +23 +-662.432231199989 +33 +87.5003989193992 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363107612844 +20 +-650.643847155672 +30 +101.021259768909 +11 +702.221360398304 +21 +-673.696700650341 +31 +96.0407362022104 +12 +702.221361580333 +22 +-660.639487120937 +32 +111.016899733167 +13 +702.221361580333 +23 +-660.639487120937 +33 +111.016899733167 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363106545679 +20 +-662.432231199989 +30 +87.5003989193992 +11 +732.466066639417 +21 +-639.203194165743 +31 +89.5806067801329 +12 +732.466065703719 +22 +-649.539320894872 +32 +77.7254338656707 +13 +732.466065703719 +23 +-649.539320894872 +33 +77.7254338656707 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466066639417 +20 +-639.203194165743 +30 +89.5806067801329 +11 +718.363106545679 +21 +-662.432231199989 +31 +87.5003989193992 +12 +718.363107612844 +22 +-650.643847155672 +32 +101.021259768909 +13 +718.363107612844 +23 +-650.643847155672 +33 +101.021259768909 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466065703719 +20 +-649.539320894872 +30 +77.7254338656707 +11 +744.275059137262 +21 +-626.524535798612 +31 +76.9019484142785 +12 +744.27505834726 +22 +-635.251254586263 +32 +66.8927096622113 +13 +744.27505834726 +23 +-635.251254586263 +33 +66.8927096622113 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275059137262 +20 +-626.524535798612 +30 +76.9019484142785 +11 +732.466065703719 +21 +-649.539320894872 +31 +77.7254338656707 +12 +732.466066639417 +22 +-639.203194165743 +32 +89.5806067801329 +13 +732.466066639417 +23 +-639.203194165743 +33 +89.5806067801329 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.60214250095 +20 +-752.465070814344 +30 +84.8616271735756 +11 +473.717772252345 +21 +-740.196478791399 +31 +110.675560324675 +12 +473.717763908762 +22 +-752.465074828487 +32 +84.861675745457 +13 +473.717763908762 +23 +-752.465074828487 +33 +84.861675745457 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717772252345 +20 +-740.196478791399 +30 +110.675560324675 +11 +599.60214250095 +21 +-752.465070814344 +31 +84.8616271735756 +12 +599.602150844536 +22 +-740.196470143783 +32 +110.675521501907 +13 +599.602150844536 +23 +-740.196470143783 +33 +110.675521501907 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797653593913 +20 +-576.264066422956 +30 +188.875875742312 +11 +454.66772029492 +21 +-548.673192057237 +31 +186.220486963908 +12 +454.667736501664 +22 +-575.898831573499 +32 +185.305488978394 +13 +454.667736501664 +23 +-575.898831573499 +33 +185.305488978394 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.66772029492 +20 +-548.673192057237 +30 +186.220486963908 +11 +454.797653593913 +21 +-576.264066422956 +31 +188.875875742312 +12 +454.797637205561 +22 +-548.733344026199 +32 +189.801126938624 +13 +454.797637205561 +23 +-548.733344026199 +33 +189.801126938624 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.82932233817 +20 +-584.301801471681 +30 +117.190255690543 +11 +753.739280225648 +21 +-606.678073483521 +31 +132.268789859729 +12 +767.829328484993 +22 +-598.912297398533 +32 +112.558745848353 +13 +767.829328484993 +23 +-598.912297398533 +33 +112.558745848353 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739280225648 +20 +-606.678073483521 +30 +132.268789859729 +11 +767.82932233817 +21 +-584.301801471681 +31 +117.190255690543 +12 +753.739272918395 +22 +-589.30932977233 +32 +137.774660970991 +13 +753.739272918395 +23 +-589.30932977233 +33 +137.774660970991 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133267369982 +20 +-575.898750159264 +30 +185.30549023988 +11 +454.66772029492 +21 +-548.673192057237 +31 +186.220486963908 +12 +602.133251163261 +22 +-548.67314817835 +32 +186.220486963908 +13 +602.133251163261 +23 +-548.67314817835 +33 +186.220486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.66772029492 +20 +-548.673192057237 +30 +186.220486963908 +11 +602.133267369982 +21 +-575.898750159264 +31 +185.30549023988 +12 +454.667736501664 +22 +-575.898831573499 +32 +185.305488978394 +13 +454.667736501664 +23 +-575.898831573499 +33 +185.305488978394 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546333434853 +20 +-575.80035767001 +30 +184.343761377095 +11 +602.133251163261 +21 +-548.67314817835 +31 +186.220486963908 +12 +623.546317277054 +22 +-548.656939099171 +32 +185.255996085023 +13 +623.546317277054 +23 +-548.656939099171 +33 +185.255996085023 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133251163261 +20 +-548.67314817835 +30 +186.220486963908 +11 +623.546333434853 +21 +-575.80035767001 +31 +184.343761377095 +12 +602.133267369982 +22 +-575.898750159264 +32 +185.30549023988 +13 +602.133267369982 +23 +-575.898750159264 +33 +185.30549023988 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363106545679 +20 +-637.12298630735 +30 +112.809643814588 +11 +732.466062914084 +21 +-614.194966001222 +31 +108.540988733599 +12 +732.466065703719 +22 +-627.348021252322 +32 +99.9167335104564 +13 +732.466065703719 +23 +-627.348021252322 +33 +99.9167335104564 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466062914084 +20 +-614.194966001222 +30 +108.540988733599 +11 +718.363106545679 +21 +-637.12298630735 +31 +112.809643814588 +12 +718.363103364091 +22 +-622.121886696301 +32 +122.645633187677 +13 +718.363103364091 +23 +-622.121886696301 +33 +122.645633187677 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797676017751 +20 +-624.370524419528 +30 +177.173126470384 +11 +454.667748728094 +21 +-599.869484727166 +31 +181.183686716704 +12 +454.667758482489 +22 +-623.054883804802 +32 +173.83394276819 +13 +454.667758482489 +23 +-623.054883804802 +33 +173.83394276819 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667748728094 +20 +-599.869484727166 +30 +181.183686716704 +11 +454.797676017751 +21 +-624.370524419528 +31 +177.173126470384 +12 +454.797666066761 +22 +-600.71783565349 +32 +184.671000694682 +13 +454.797666066761 +23 +-600.71783565349 +33 +184.671000694682 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221351073972 +20 +-611.102282944468 +30 +143.497679575028 +11 +684.332877982946 +21 +-594.96003923808 +31 +161.00288323661 +12 +702.221343105619 +22 +-592.16215835415 +32 +149.501676557166 +13 +702.221343105619 +23 +-592.16215835415 +33 +149.501676557166 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332877982946 +20 +-594.96003923808 +30 +161.00288323661 +11 +702.221351073972 +21 +-611.102282944468 +31 +143.497679575028 +12 +684.332886599671 +22 +-615.441289762884 +32 +154.510351165083 +13 +684.332886599671 +23 +-615.441289762884 +33 +154.510351165083 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.00720150166 +20 +-546.363038171439 +30 +48.7110294035543 +11 +787.130178451143 +21 +-564.415115565838 +31 +73.0471892828083 +12 +792.007210733943 +22 +-561.872310305502 +32 +48.1897945304127 +13 +792.007210733943 +23 +-561.872310305502 +33 +48.1897945304127 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130178451143 +20 +-564.415115565838 +30 +73.0471892828083 +11 +792.00720150166 +21 +-546.363038171439 +31 +48.7110294035543 +12 +787.130167954486 +22 +-546.781824001004 +32 +73.639808098986 +13 +787.130167954486 +23 +-546.781824001004 +33 +73.639808098986 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576412708658 +20 +-612.837280222141 +30 +63.214692839186 +11 +760.20182781144 +21 +-592.476194788978 +31 +53.921748202446 +12 +760.201828278129 +22 +-598.389085203732 +32 +48.7664978222319 +13 +760.201828278129 +23 +-598.389085203732 +33 +48.7664978222319 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.20182781144 +20 +-592.476194788978 +30 +53.921748202446 +11 +753.576412708658 +21 +-612.837280222141 +31 +63.214692839186 +12 +753.576412075941 +22 +-604.820821451585 +32 +70.2039737536023 +13 +753.576412075941 +23 +-604.820821451585 +33 +70.2039737536023 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602098887118 +20 +-549.195708452133 +30 +217.326639240051 +11 +624.955290211342 +21 +-186.86272 +31 +215.762940693873 +12 +599.602098887118 +22 +-186.86272 +32 +217.326639240051 +13 +599.602098887118 +23 +-186.86272 +33 +217.326639240051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955290211342 +20 +-186.86272 +30 +215.762940693873 +11 +599.602098887118 +21 +-549.195708452133 +31 +217.326639240051 +12 +624.955290211342 +22 +-549.169431970937 +32 +215.762940693873 +13 +624.955290211342 +23 +-549.169431970937 +33 +215.762940693873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221333117862 +20 +-572.580560654599 +30 +152.868771861916 +11 +684.332852026746 +21 +-548.325028948197 +31 +165.499614915081 +12 +702.221318561055 +22 +-548.126641526877 +32 +153.690618001708 +13 +702.221318561055 +23 +-548.126641526877 +33 +153.690618001708 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332852026746 +20 +-548.325028948197 +30 +165.499614915081 +11 +702.221333117862 +21 +-572.580560654599 +31 +152.868771861916 +12 +684.332867182503 +22 +-573.785120021053 +32 +164.643953396873 +13 +684.332867182503 +23 +-573.785120021053 +33 +164.643953396873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546366648706 +20 +-698.908941954744 +30 +115.155805645761 +11 +644.636259351108 +21 +-708.826870972768 +31 +93.0455572990973 +12 +623.546362358205 +22 +-712.173174760634 +32 +94.9262110334071 +13 +623.546362358205 +23 +-712.173174760634 +33 +94.9262110334071 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636259351108 +20 +-708.826870972768 +30 +93.0455572990973 +11 +623.546366648706 +21 +-698.908941954744 +31 +115.155805645761 +12 +644.636263548619 +22 +-695.850119169612 +32 +112.836707846937 +13 +644.636263548619 +23 +-695.850119169612 +33 +112.836707846937 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636263548619 +20 +-695.850119169612 +30 +112.836707846937 +11 +665.02138596315 +21 +-703.037584126794 +31 +89.7919287945006 +12 +644.636259351108 +22 +-708.826870972768 +32 +93.0455572990973 +13 +644.636259351108 +23 +-708.826870972768 +33 +93.0455572990973 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.02138596315 +20 +-703.037584126794 +30 +89.7919287945006 +11 +644.636263548619 +21 +-695.850119169612 +31 +112.836707846937 +12 +665.021389999784 +22 +-690.558190885324 +32 +108.824546057595 +13 +665.021389999784 +23 +-690.558190885324 +33 +108.824546057595 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839434933817 +20 +-549.08536836124 +30 +210.755700449054 +11 +439.690564957562 +21 +-186.86272 +31 +212.46522637891 +12 +442.839434933817 +22 +-186.86272 +32 +210.755700449054 +13 +442.839434933817 +23 +-186.86272 +33 +210.755700449054 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690564957562 +20 +-186.86272 +30 +212.46522637891 +11 +442.839434933817 +21 +-549.08536836124 +31 +210.755700449054 +12 +439.690564957562 +22 +-549.114088023756 +32 +212.46522637891 +13 +439.690564957562 +23 +-549.114088023756 +33 +212.46522637891 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +46.8683973136999 +20 +-280.294079999999 +30 +2499.20806403607 +11 +93.652471048303 +21 +-186.862719999999 +31 +2499.20806403607 +12 +46.8683973137003 +22 +-186.862719999999 +32 +2499.20806403607 +13 +46.8683973137003 +23 +-186.862719999999 +33 +2499.20806403607 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +93.652471048303 +20 +-186.862719999999 +30 +2499.20806403607 +11 +46.8683973136999 +21 +-280.294079999999 +31 +2499.20806403607 +12 +93.6524710483026 +22 +-280.294079999999 +32 +2499.20806403607 +13 +93.6524710483026 +23 +-280.294079999999 +33 +2499.20806403607 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021389999784 +20 +-690.558190885324 +30 +108.824546057595 +11 +684.332892871929 +21 +-694.910065817882 +31 +85.2241968080869 +12 +665.02138596315 +22 +-703.037584126794 +32 +89.7919287945006 +13 +665.02138596315 +23 +-703.037584126794 +33 +89.7919287945006 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332892871929 +20 +-694.910065817882 +30 +85.2241968080869 +11 +665.021389999784 +21 +-690.558190885324 +31 +108.824546057595 +12 +684.332896682708 +22 +-683.128909470703 +32 +103.191916498769 +13 +684.332896682708 +23 +-683.128909470703 +33 +103.191916498769 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.60214250095 +20 +-634.484214570593 +30 +202.842483429208 +11 +624.955341833487 +21 +-659.530197478533 +31 +189.207522894826 +12 +624.955333552396 +22 +-633.909652359165 +32 +201.384230256964 +13 +624.955333552396 +23 +-633.909652359165 +33 +201.384230256964 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955341833487 +20 +-659.530197478533 +30 +189.207522894826 +11 +599.60214250095 +21 +-634.484214570593 +31 +202.842483429208 +12 +599.602150844536 +22 +-660.298108897689 +32 +190.573882756048 +13 +599.602150844536 +23 +-660.298108897689 +33 +190.573882756048 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363090933403 +20 +-685.388881228845 +30 +39.1981879427727 +11 +732.466045885959 +21 +-671.734013479962 +31 +23.3578379683062 +12 +718.363082853901 +22 +-688.112661424818 +32 +23.3578379602634 +13 +718.363082853901 +23 +-688.112661424818 +33 +23.3578379602634 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466045885959 +20 +-671.734013479962 +30 +23.3578379683062 +11 +718.363090933403 +21 +-685.388881228845 +31 +39.1981879427727 +12 +732.466052014781 +22 +-669.667851071909 +32 +35.3737619083722 +13 +732.466052014781 +23 +-669.667851071909 +33 +35.3737619083722 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884083129639 +20 +-759.7055020414 +30 +23.3578379229566 +11 +624.955307916438 +21 +-764.38593632126 +31 +29.2895600085649 +12 +624.955304385432 +22 +-764.585289351978 +32 +23.3578379140486 +13 +624.955304385432 +23 +-764.585289351978 +33 +23.3578379140486 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955307916438 +20 +-764.38593632126 +30 +29.2895600085649 +11 +649.884083129639 +21 +-759.7055020414 +31 +23.3578379229566 +12 +649.884086364505 +22 +-759.522868440055 +32 +28.7920756889693 +13 +649.884086364505 +23 +-759.522868440055 +33 +28.7920756889693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031420693374 +20 +-566.35608713258 +30 +43.4208517516957 +11 +764.975642457445 +21 +-559.332124908489 +31 +23.3578380033138 +12 +764.959283764737 +22 +-561.475402706277 +32 +23.3578380028359 +13 +764.959283764737 +23 +-561.475402706277 +33 +23.3578380028359 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.975642457445 +20 +-559.332124908489 +30 +23.3578380033138 +11 +764.031420693374 +21 +-566.35608713258 +31 +43.4208517516957 +12 +764.0314182014 +22 +-561.470422367227 +32 +44.2609516834995 +13 +764.0314182014 +23 +-561.470422367227 +33 +44.2609516834995 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838949191021 +20 +-658.912362146436 +30 +188.108094342889 +11 +429.267763467221 +21 +-633.554254686993 +31 +200.482021877632 +12 +432.838940960221 +22 +-633.447412164356 +32 +200.210851816573 +13 +432.838940960221 +23 +-633.447412164356 +33 +200.210851816573 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267763467221 +20 +-633.554254686993 +30 +200.482021877632 +11 +432.838949191021 +21 +-658.912362146436 +31 +188.108094342889 +12 +429.267771709642 +22 +-659.055159092928 +32 +188.362176301584 +13 +429.267771709642 +23 +-659.055159092928 +33 +188.362176301584 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636215091063 +20 +-548.592598441069 +30 +181.426393854527 +11 +623.546317277054 +21 +-186.86272 +31 +185.255996085023 +12 +644.636215091063 +22 +-186.86272 +32 +181.426393854527 +13 +644.636215091063 +23 +-186.86272 +33 +181.426393854527 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546317277054 +20 +-186.86272 +30 +185.255996085023 +11 +644.636215091063 +21 +-548.592598441069 +31 +181.426393854527 +12 +623.546317277054 +22 +-548.656939099171 +32 +185.255996085023 +13 +623.546317277054 +23 +-548.656939099171 +33 +185.255996085023 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797683261242 +20 +-716.144716838612 +30 +97.1582932541697 +11 +454.667769896794 +21 +-699.679329838522 +31 +115.739912506852 +12 +454.667765582876 +22 +-713.015957461653 +32 +95.3999068495287 +13 +454.667765582876 +23 +-713.015957461653 +33 +95.3999068495287 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667769896794 +20 +-699.679329838522 +30 +115.739912506852 +11 +454.797683261242 +21 +-716.144716838612 +31 +97.1582932541697 +12 +454.797687662105 +22 +-702.539296405596 +32 +117.908241171874 +13 +454.797687662105 +23 +-702.539296405596 +33 +117.908241171874 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.27505834726 +20 +-635.251254586263 +30 +66.8927096622113 +11 +753.576412708658 +21 +-612.837280222141 +31 +63.214692839186 +12 +753.576412075941 +22 +-619.82656113575 +32 +55.1982340679256 +13 +753.576412075941 +23 +-619.82656113575 +33 +55.1982340679256 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576412708658 +20 +-612.837280222141 +30 +63.214692839186 +11 +744.27505834726 +21 +-635.251254586263 +31 +66.8927096622113 +12 +744.275059137262 +22 +-626.524535798612 +32 +76.9019484142785 +13 +744.275059137262 +23 +-626.524535798612 +33 +76.9019484142785 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576402819491 +20 +-576.182653575586 +30 +83.8148703207571 +11 +760.201817040574 +21 +-563.621650860098 +31 +65.2904582517363 +12 +760.20182098394 +22 +-571.352859264312 +32 +63.961061339529 +13 +760.20182098394 +23 +-571.352859264312 +33 +63.961061339529 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201817040574 +20 +-563.621650860098 +30 +65.2904582517363 +11 +753.576402819491 +21 +-576.182653575586 +31 +83.8148703207571 +12 +753.576397473233 +22 +-565.700992480648 +32 +85.6172131326287 +13 +753.576397473233 +23 +-565.700992480648 +33 +85.6172131326287 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332896682708 +20 +-683.128909470703 +30 +103.191916498769 +11 +702.22135687427 +21 +-684.591375697813 +31 +79.4250100709702 +12 +684.332892871929 +22 +-694.910065817882 +32 +85.2241968080869 +13 +684.332892871929 +23 +-694.910065817882 +33 +85.2241968080869 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.22135687427 +20 +-684.591375697813 +30 +79.4250100709702 +11 +684.332896682708 +21 +-683.128909470703 +31 +103.191916498769 +12 +702.221360398304 +22 +-673.696700650341 +32 +96.0407362022104 +13 +702.221360398304 +23 +-673.696700650341 +33 +96.0407362022104 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021379319153 +20 +-618.858911203396 +30 +163.184483899429 +11 +644.636242951136 +21 +-598.733544865996 +31 +176.514545976725 +12 +665.021370191738 +22 +-597.163793012617 +32 +170.061810578218 +13 +665.021370191738 +23 +-597.163793012617 +33 +170.061810578218 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636242951136 +20 +-598.733544865996 +30 +176.514545976725 +11 +665.021379319153 +21 +-618.858911203396 +31 +163.184483899429 +12 +644.636252442318 +22 +-621.293308682581 +32 +169.363127662308 +13 +644.636252442318 +23 +-621.293308682581 +33 +169.363127662308 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575535902759 +20 +-745.521819843274 +30 +27.3599383202345 +11 +454.431253196946 +21 +-737.764901599428 +31 +51.9397070211046 +12 +454.431240478811 +22 +-742.052468269584 +32 +27.0050383833634 +13 +454.431240478811 +23 +-742.052468269584 +33 +27.0050383833634 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431253196946 +20 +-737.764901599428 +30 +51.9397070211046 +11 +453.575535902759 +21 +-745.521819843274 +31 +27.3599383202345 +12 +453.575548860337 +22 +-741.153531203966 +32 +52.7640516820845 +13 +453.575548860337 +23 +-741.153531203966 +33 +52.7640516820845 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431275216977 +20 +-669.689208643299 +30 +155.763553572255 +11 +454.797683261242 +21 +-646.78088064753 +31 +166.522129452237 +12 +454.797687662105 +22 +-667.530828563864 +32 +152.916709017132 +13 +454.797687662105 +23 +-667.530828563864 +33 +152.916709017132 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797683261242 +20 +-646.78088064753 +30 +166.522129452237 +11 +454.431275216977 +21 +-669.689208643299 +31 +155.763553572255 +12 +454.431270729568 +22 +-648.531199395009 +32 +169.63653352158 +13 +454.431270729568 +23 +-648.531199395009 +33 +169.63653352158 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677463405893 +20 +-549.413334136112 +30 +230.27885636425 +11 +468.840126975903 +21 +-580.680624318909 +31 +232.050409880217 +12 +470.677481847252 +22 +-580.392895076207 +32 +229.237696767784 +13 +470.677481847252 +23 +-580.392895076207 +33 +229.237696767784 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840126975903 +20 +-580.680624318909 +30 +232.050409880217 +11 +470.677463405893 +21 +-549.413334136112 +31 +230.27885636425 +12 +468.840108391474 +22 +-549.460721801574 +32 +233.09964686487 +13 +468.840108391474 +23 +-549.460721801574 +33 +233.09964686487 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721690152324 +20 +-549.049610517709 +30 +208.627211339945 +11 +442.839434933817 +21 +-186.86272 +31 +210.755700449054 +12 +445.721690152324 +22 +-186.86272 +32 +208.627211339945 +13 +445.721690152324 +23 +-186.86272 +33 +208.627211339945 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839434933817 +20 +-186.86272 +30 +210.755700449054 +11 +445.721690152324 +21 +-549.049610517709 +31 +208.627211339945 +12 +442.839434933817 +22 +-549.08536836124 +32 +210.755700449054 +13 +442.839434933817 +23 +-549.08536836124 +33 +210.755700449054 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957368701467 +20 +-629.139245228331 +30 +189.276665394806 +11 +696.758800443365 +21 +-647.656853392997 +31 +168.080894990074 +12 +696.758793128571 +22 +-625.025897634329 +32 +178.836736613072 +13 +696.758793128571 +23 +-625.025897634329 +33 +178.836736613072 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758800443365 +20 +-647.656853392997 +30 +168.080894990074 +11 +673.957368701467 +21 +-629.139245228331 +31 +189.276665394806 +12 +673.957376463676 +22 +-653.154439951202 +32 +177.862934850716 +13 +673.957376463676 +23 +-653.154439951202 +33 +177.862934850716 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894045959123 +20 +-575.008661956696 +30 +176.604978855282 +11 +736.997677401125 +21 +-593.835505140242 +31 +156.380365045419 +12 +736.997666927312 +22 +-573.300963343833 +32 +159.911321013811 +13 +736.997666927312 +23 +-573.300963343833 +33 +159.911321013811 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997677401125 +20 +-593.835505140242 +30 +156.380365045419 +11 +717.894045959123 +21 +-575.008661956696 +31 +176.604978855282 +12 +717.894057585081 +22 +-597.802053886837 +32 +172.685609040578 +13 +717.894057585081 +23 +-597.802053886837 +33 +172.685609040578 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721707495526 +20 +-578.184382747044 +30 +207.648051313885 +11 +442.839434933817 +21 +-549.08536836124 +31 +210.755700449054 +12 +445.721690152324 +22 +-549.049610517709 +32 +208.627211339945 +13 +445.721690152324 +23 +-549.049610517709 +33 +208.627211339945 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839434933817 +20 +-549.08536836124 +30 +210.755700449054 +11 +445.721707495526 +21 +-578.184382747044 +31 +207.648051313885 +12 +442.839452384975 +22 +-578.401495960111 +32 +209.770445440443 +13 +442.839452384975 +23 +-578.401495960111 +33 +209.770445440443 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839452384975 +20 +-759.393032819931 +30 +28.7789085623947 +11 +445.72170439774 +21 +-757.445533046268 +31 +23.3578378593151 +12 +442.839449157947 +22 +-759.575223903305 +32 +23.3578378579396 +13 +442.839449157947 +23 +-759.575223903305 +33 +23.3578378579396 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.72170439774 +20 +-757.445533046268 +30 +23.3578378593151 +11 +442.839452384975 +21 +-759.393032819931 +31 +28.7789085623947 +12 +445.721707495526 +22 +-757.270638693351 +32 +28.5617953495419 +13 +445.721707495526 +23 +-757.270638693351 +33 +28.5617953495419 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894044751764 +20 +-726.295731112839 +30 +23.3578379516926 +11 +696.758770484001 +21 +-740.277270942125 +31 +26.8233094768247 +12 +696.758768421093 +22 +-740.393738342711 +32 +23.357837941943 +13 +696.758768421093 +23 +-740.393738342711 +33 +23.357837941943 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758770484001 +20 +-740.277270942125 +30 +26.8233094768247 +11 +717.894044751764 +21 +-726.295731112839 +31 +23.3578379516926 +12 +717.894045959123 +22 +-726.227566234427 +32 +25.3860745623198 +13 +717.894045959123 +23 +-726.227566234427 +33 +25.3860745623198 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.00604998394 +20 +-549.612103415805 +30 +242.110623248711 +11 +458.222214863865 +21 +-581.498326831209 +31 +240.043876806793 +12 +458.222195872847 +22 +-549.595394709904 +32 +241.116069017578 +13 +458.222195872847 +23 +-549.595394709904 +33 +241.116069017578 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222214863865 +20 +-581.498326831209 +30 +240.043876806793 +11 +455.00604998394 +21 +-549.612103415805 +31 +242.110623248711 +12 +455.006069025402 +22 +-581.599775817026 +32 +241.035583090668 +13 +455.006069025402 +23 +-581.599775817026 +33 +241.035583090668 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024163430099 +20 +-590.534326018981 +30 +91.2949066282494 +11 +767.829332959368 +21 +-612.755392432138 +31 +105.979521385129 +12 +779.024166993188 +22 +-601.558027793705 +32 +86.0556585976989 +13 +779.024166993188 +23 +-601.558027793705 +33 +86.0556585976989 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829332959368 +20 +-612.755392432138 +30 +105.979521385129 +11 +779.024163430099 +21 +-590.534326018981 +31 +91.2949066282494 +12 +767.829328484993 +22 +-598.912297398533 +32 +112.558745848353 +13 +767.829328484993 +23 +-598.912297398533 +33 +112.558745848353 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829328484993 +20 +-598.912297398533 +30 +112.558745848353 +11 +753.73928554472 +21 +-623.13454224489 +31 +124.447504114724 +12 +767.829332959368 +22 +-612.755392432138 +32 +105.979521385129 +13 +767.829332959368 +23 +-612.755392432138 +33 +105.979521385129 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73928554472 +20 +-623.13454224489 +30 +124.447504114724 +11 +767.829328484993 +21 +-598.912297398533 +31 +112.558745848353 +12 +753.739280225648 +22 +-606.678073483521 +32 +132.268789859729 +13 +753.739280225648 +23 +-606.678073483521 +33 +132.268789859729 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739280225648 +20 +-606.678073483521 +30 +132.268789859729 +11 +736.997691839832 +21 +-632.515984774395 +31 +141.140229605674 +12 +753.73928554472 +22 +-623.13454224489 +32 +124.447504114724 +13 +753.73928554472 +23 +-623.13454224489 +33 +124.447504114724 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997691839832 +20 +-632.515984774395 +30 +141.140229605674 +11 +753.739280225648 +21 +-606.678073483521 +31 +132.268789859729 +12 +736.997685757261 +22 +-613.69735635364 +32 +150.084181819366 +13 +736.997685757261 +23 +-613.69735635364 +33 +150.084181819366 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894066860413 +20 +-619.848757614325 +30 +165.696830164561 +11 +736.997691839832 +21 +-632.515984774395 +31 +141.140229605674 +12 +736.997685757261 +22 +-613.69735635364 +32 +150.084181819366 +13 +736.997685757261 +23 +-613.69735635364 +33 +150.084181819366 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997691839832 +20 +-632.515984774395 +30 +141.140229605674 +11 +717.894066860413 +21 +-619.848757614325 +31 +165.696830164561 +12 +717.894073612081 +22 +-640.737481474577 +32 +155.769021196026 +13 +717.894073612081 +23 +-640.737481474577 +33 +155.769021196026 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758793128571 +20 +-625.025897634329 +30 +178.836736613072 +11 +717.894073612081 +21 +-640.737481474577 +31 +155.769021196026 +12 +717.894066860413 +22 +-619.848757614325 +32 +165.696830164561 +13 +717.894066860413 +23 +-619.848757614325 +33 +165.696830164561 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894073612081 +20 +-640.737481474577 +30 +155.769021196026 +11 +696.758793128571 +21 +-625.025897634329 +31 +178.836736613072 +12 +696.758800443365 +22 +-647.656853392997 +32 +168.080894990074 +13 +696.758800443365 +23 +-647.656853392997 +33 +168.080894990074 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466066639417 +20 +-639.203194165743 +30 +89.5806067801329 +11 +744.27505834726 +21 +-616.515297047424 +31 +85.6286672029373 +12 +744.275059137262 +22 +-626.524535798612 +32 +76.9019484142785 +13 +744.275059137262 +23 +-626.524535798612 +33 +76.9019484142785 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.27505834726 +20 +-616.515297047424 +30 +85.6286672029373 +11 +732.466066639417 +21 +-639.203194165743 +31 +89.5806067801329 +12 +732.466065703719 +22 +-627.348021252322 +32 +99.9167335104564 +13 +732.466065703719 +23 +-627.348021252322 +33 +99.9167335104564 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884100288402 +20 +-754.828812255533 +30 +56.0907148781112 +11 +624.955333552396 +21 +-751.006817642042 +31 +84.2870649622931 +12 +624.955322175969 +22 +-759.578730682939 +32 +57.2462284142879 +13 +624.955322175969 +23 +-759.578730682939 +33 +57.2462284142879 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955333552396 +20 +-751.006817642042 +30 +84.2870649622931 +11 +649.884100288402 +21 +-754.828812255533 +31 +56.0907148781112 +12 +649.884111397057 +22 +-746.458660352302 +32 +82.4950785735168 +13 +649.884111397057 +23 +-746.458660352302 +33 +82.4950785735168 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.84015475682 +20 +-767.174448290109 +30 +90.6571807720069 +11 +466.630414711229 +21 +-778.937031754263 +31 +61.9555523461604 +12 +468.840142428527 +22 +-776.463572930403 +32 +61.353838580619 +13 +468.840142428527 +23 +-776.463572930403 +33 +61.353838580619 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630414711229 +20 +-778.937031754263 +30 +61.9555523461604 +11 +468.84015475682 +21 +-767.174448290109 +31 +90.6571807720069 +12 +466.630427178961 +22 +-769.542842319152 +32 +91.5903304644009 +13 +466.630427178961 +23 +-769.542842319152 +33 +91.5903304644009 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.10170430358 +20 +-549.308104906071 +30 +224.014968929071 +11 +472.107168359226 +21 +-580.08201644067 +31 +226.198682483658 +12 +473.101722427237 +22 +-579.753960348852 +32 +222.99174608133 +13 +473.101722427237 +23 +-579.753960348852 +33 +222.99174608133 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107168359226 +20 +-580.08201644067 +30 +226.198682483658 +11 +473.10170430358 +21 +-549.308104906071 +31 +224.014968929071 +12 +472.107150072447 +22 +-549.362133988305 +32 +227.231114817978 +13 +472.107150072447 +23 +-549.362133988305 +33 +227.231114817978 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955333552396 +20 +-751.006817642042 +30 +84.2870649622931 +11 +599.602150844536 +21 +-740.196470143783 +31 +110.675521501907 +12 +599.60214250095 +22 +-752.465070814344 +32 +84.8616271735756 +13 +599.60214250095 +23 +-752.465070814344 +33 +84.8616271735756 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602150844536 +20 +-740.196470143783 +30 +110.675521501907 +11 +624.955333552396 +21 +-751.006817642042 +31 +84.2870649622931 +12 +624.955341833487 +22 +-738.830110282484 +32 +109.907610082888 +13 +624.955341833487 +23 +-738.830110282484 +33 +109.907610082888 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +176.700983922341 +20 +-280.29408 +30 +1605.98522290042 +11 +180.160557528894 +21 +-186.86272 +31 +1570.85958260462 +12 +180.160557528893 +22 +-280.29408 +32 +1570.85958260462 +13 +180.160557528893 +23 +-280.29408 +33 +1570.85958260462 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +180.160557528894 +20 +-186.86272 +30 +1570.85958260462 +11 +176.700983922341 +21 +-280.29408 +31 +1605.98522290042 +12 +176.700983922342 +22 +-186.86272 +32 +1605.98522290042 +13 +176.700983922342 +23 +-186.86272 +33 +1605.98522290042 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466052014781 +20 +-669.667851071909 +30 +35.3737619083722 +11 +744.275052115393 +21 +-648.23289118406 +31 +43.7940230954864 +12 +744.275046789786 +22 +-652.245630435845 +32 +31.1354921818382 +13 +744.275046789786 +23 +-652.245630435845 +33 +31.1354921818382 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275052115393 +20 +-648.23289118406 +30 +43.7940230954864 +11 +732.466052014781 +21 +-669.667851071909 +31 +35.3737619083722 +12 +732.466058322552 +22 +-664.91507027919 +32 +50.366817478493 +13 +732.466058322552 +23 +-664.91507027919 +33 +50.366817478493 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335587191701 +20 +-578.704166932226 +30 +212.72919754513 +11 +432.838897838644 +21 +-549.148351803013 +31 +214.504708726405 +12 +436.335569590044 +22 +-549.135217804424 +32 +213.722949367545 +13 +436.335569590044 +23 +-549.135217804424 +33 +213.722949367545 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838897838644 +20 +-549.148351803013 +30 +214.504708726405 +11 +436.335587191701 +21 +-578.704166932226 +31 +212.72919754513 +12 +432.838915479952 +22 +-578.783910422824 +32 +213.508718295381 +13 +432.838915479952 +23 +-578.783910422824 +33 +213.508718295381 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642065047928 +20 +-755.603683334388 +30 +86.0982896720056 +11 +473.10173725466 +21 +-767.61567851106 +31 +59.2014293241045 +12 +473.642053400866 +22 +-764.379514823734 +32 +58.4141748490874 +13 +473.642053400866 +23 +-764.379514823734 +33 +58.4141748490874 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.10173725466 +20 +-767.61567851106 +30 +59.2014293241045 +11 +473.642065047928 +21 +-755.603683334388 +31 +86.0982896720056 +12 +473.101749084159 +22 +-758.702384848233 +32 +87.3191803898169 +13 +473.101749084159 +23 +-758.702384848233 +33 +87.3191803898169 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335620774804 +20 +-737.047580997407 +30 +108.905866027708 +11 +439.690607723364 +21 +-747.931486742049 +31 +83.0754516399063 +12 +436.335612575248 +22 +-749.104396759147 +32 +83.5375802413299 +13 +436.335612575248 +23 +-749.104396759147 +33 +83.5375802413299 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690607723364 +20 +-747.931486742049 +30 +83.0754516399063 +11 +436.335620774804 +21 +-737.047580997407 +31 +108.905866027708 +12 +439.690615872653 +22 +-735.948583762681 +32 +108.288220362449 +13 +439.690615872653 +23 +-735.948583762681 +33 +108.288220362449 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-549.195745909472 +30 +217.326639240051 +11 +599.602116671527 +21 +-579.071662867255 +31 +216.322569598682 +12 +599.602098887118 +22 +-549.195708452133 +32 +217.326639240051 +13 +599.602098887118 +23 +-549.195708452133 +33 +217.326639240051 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602116671527 +20 +-579.071662867255 +30 +216.322569598682 +11 +473.71772029492 +21 +-549.195745909472 +31 +217.326639240051 +12 +473.717738079349 +22 +-579.071732366754 +32 +216.322568521811 +13 +473.717738079349 +23 +-579.071732366754 +33 +216.322568521811 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758768421093 +20 +-740.393738342711 +30 +23.357837941943 +11 +673.957344671825 +21 +-751.440053094339 +31 +27.9652257853831 +12 +673.957341929162 +22 +-751.594897963598 +32 +23.3578379323091 +13 +673.957341929162 +23 +-751.594897963598 +33 +23.3578379323091 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957344671825 +20 +-751.440053094339 +30 +27.9652257853831 +11 +696.758768421093 +21 +-740.393738342711 +31 +23.357837941943 +12 +696.758770484001 +22 +-740.277270942125 +32 +26.8233094768247 +13 +696.758770484001 +23 +-740.277270942125 +33 +26.8233094768247 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363107612844 +20 +-650.643847155672 +30 +101.021259768909 +11 +732.466065703719 +21 +-627.348021252322 +31 +99.9167335104564 +12 +732.466066639417 +22 +-639.203194165743 +32 +89.5806067801329 +13 +732.466066639417 +23 +-639.203194165743 +33 +89.5806067801329 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466065703719 +20 +-627.348021252322 +30 +99.9167335104564 +11 +718.363107612844 +21 +-650.643847155672 +31 +101.021259768909 +12 +718.363106545679 +22 +-637.12298630735 +32 +112.809643814588 +13 +718.363106545679 +23 +-637.12298630735 +33 +112.809643814588 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130182929858 +20 +-573.195904769668 +30 +71.5373148305873 +11 +779.024163430099 +21 +-590.534326018981 +31 +91.2949066282494 +12 +787.130186503031 +22 +-581.689044301674 +32 +68.844999694228 +13 +787.130186503031 +23 +-581.689044301674 +33 +68.844999694228 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024163430099 +20 +-590.534326018981 +30 +91.2949066282494 +11 +787.130182929858 +21 +-573.195904769668 +31 +71.5373148305873 +12 +779.024158535186 +22 +-578.899518233046 +32 +94.9831268667919 +13 +779.024158535186 +23 +-578.899518233046 +33 +94.9831268667919 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335612575248 +20 +-633.16016763801 +30 +199.481809374145 +11 +432.838929652884 +21 +-606.570796271198 +31 +208.73070710808 +12 +436.335601310833 +22 +-606.385574583813 +32 +207.969323546969 +13 +436.335601310833 +23 +-606.385574583813 +33 +207.969323546969 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838929652884 +20 +-606.570796271198 +30 +208.73070710808 +11 +436.335612575248 +21 +-633.16016763801 +31 +199.481809374145 +12 +432.838940960221 +22 +-633.447412164356 +32 +200.210851816573 +13 +432.838940960221 +23 +-633.447412164356 +33 +200.210851816573 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +793.478047748674 +20 +-563.767069108265 +30 +23.3578380112902 +11 +792.007217306199 +21 +-577.494024343961 +31 +43.2377297488181 +12 +793.410423174187 +22 +-566.321374409616 +32 +23.357838010706 +13 +793.410423174187 +23 +-566.321374409616 +33 +23.357838010706 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007217306199 +20 +-577.494024343961 +30 +43.2377297488181 +11 +793.478047748674 +21 +-563.767069108265 +31 +23.3578380112902 +12 +792.007215701535 +22 +-572.529418663124 +32 +45.597263875134 +13 +792.007215701535 +23 +-572.529418663124 +33 +45.597263875134 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955333552396 +20 +-633.909652359165 +30 +201.384230256964 +11 +649.884119483233 +21 +-657.135168302204 +31 +184.945974477603 +12 +649.884111397057 +22 +-632.11766596993 +32 +196.836072967405 +13 +649.884111397057 +23 +-632.11766596993 +33 +196.836072967405 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884119483233 +20 +-657.135168302204 +30 +184.945974477603 +11 +624.955333552396 +21 +-633.909652359165 +31 +201.384230256964 +12 +624.955341833487 +22 +-659.530197478533 +32 +189.207522894826 +13 +624.955341833487 +23 +-659.530197478533 +33 +189.207522894826 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246977834961 +20 +-748.839872068014 +30 +27.6993612581553 +11 +453.575533520408 +21 +-745.656322242814 +31 +23.3578378643829 +12 +452.24697525056 +22 +-748.985781777358 +32 +23.3578378632311 +13 +452.24697525056 +23 +-748.985781777358 +33 +23.3578378632311 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575533520408 +20 +-745.656322242814 +30 +23.3578378643829 +11 +452.246977834961 +21 +-748.839872068014 +31 +27.6993612581553 +12 +453.575535902759 +22 +-745.521819843274 +32 +27.3599383202345 +13 +453.575535902759 +23 +-745.521819843274 +33 +27.3599383202345 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797653593913 +20 +-738.498463121584 +30 +26.6414790273437 +11 +454.667734764409 +21 +-735.026158016502 +31 +23.3578378670709 +12 +454.797651639243 +22 +-738.608819575715 +32 +23.3578378663214 +13 +454.797651639243 +23 +-738.608819575715 +33 +23.3578378663214 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667734764409 +20 +-735.026158016502 +30 +23.3578378670709 +11 +454.797653593913 +21 +-738.498463121584 +31 +26.6414790273437 +12 +454.667736501664 +22 +-734.928076357629 +32 +26.2762441782473 +13 +454.667736501664 +23 +-734.928076357629 +33 +26.2762441782473 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690596528004 +20 +-756.366969281262 +30 +56.4649968373303 +11 +442.839452384975 +21 +-759.393032819931 +31 +28.7789085623947 +12 +439.690582495428 +22 +-761.097663471809 +32 +28.9532865498045 +13 +439.690582495428 +23 +-761.097663471809 +33 +28.9532865498045 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839452384975 +20 +-759.393032819931 +30 +28.7789085623947 +11 +439.690596528004 +21 +-756.366969281262 +31 +56.4649968373303 +12 +442.839466299903 +22 +-754.702000509797 +32 +56.0599621810555 +13 +442.839466299903 +23 +-754.702000509797 +33 +56.0599621810555 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602155913773 +20 +-684.199422975673 +30 +174.902160191072 +11 +624.955348552338 +21 +-704.633972822346 +31 +155.011385430145 +12 +624.955346864755 +22 +-683.252487807443 +32 +173.653183437694 +13 +624.955346864755 +23 +-683.252487807443 +33 +173.653183437694 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955348552338 +20 +-704.633972822346 +30 +155.011385430145 +11 +599.602155913773 +21 +-684.199422975673 +31 +174.902160191072 +12 +599.602157614092 +22 +-705.742266508454 +32 +156.119679116142 +13 +599.602157614092 +23 +-705.742266508454 +33 +156.119679116142 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839490392048 +20 +-680.220295673638 +30 +169.6537686923 +11 +439.690615872653 +21 +-657.910807757804 +31 +186.325996375185 +12 +442.839485482368 +22 +-657.071290040049 +32 +184.832214227177 +13 +442.839485482368 +23 +-657.071290040049 +33 +184.832214227177 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690615872653 +20 +-657.910807757804 +30 +186.325996375185 +11 +442.839490392048 +21 +-680.220295673638 +31 +169.6537686923 +12 +439.690620823844 +22 +-681.255534297249 +32 +171.019219664594 +13 +439.690620823844 +23 +-681.255534297249 +33 +171.019219664594 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636259351108 +20 +-642.668144691721 +30 +159.204283586808 +11 +623.546355296361 +21 +-622.700434111963 +31 +172.934485818424 +12 +644.636252442318 +22 +-621.293308682581 +32 +169.363127662308 +13 +644.636252442318 +23 +-621.293308682581 +33 +169.363127662308 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546355296361 +20 +-622.700434111963 +30 +172.934485818424 +11 +644.636259351108 +21 +-642.668144691721 +31 +159.204283586808 +12 +623.546362358205 +22 +-644.548798426367 +32 +162.550587374486 +13 +623.546362358205 +23 +-644.548798426367 +33 +162.550587374486 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.02138596315 +20 +-639.414516186541 +30 +153.414996741162 +11 +644.636252442318 +21 +-621.293308682581 +31 +169.363127662308 +12 +665.021379319153 +22 +-618.858911203396 +32 +163.184483899429 +13 +665.021379319153 +23 +-618.858911203396 +33 +163.184483899429 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636252442318 +20 +-621.293308682581 +30 +169.363127662308 +11 +665.02138596315 +21 +-639.414516186541 +31 +153.414996741162 +12 +644.636259351108 +22 +-642.668144691721 +32 +159.204283586808 +13 +644.636259351108 +23 +-642.668144691721 +33 +159.204283586808 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332892871929 +20 +-634.846784199308 +30 +145.28747843271 +11 +665.021379319153 +21 +-618.858911203396 +31 +163.184483899429 +12 +684.332886599671 +22 +-615.441289762884 +32 +154.510351165083 +13 +684.332886599671 +23 +-615.441289762884 +33 +154.510351165083 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021379319153 +20 +-618.858911203396 +30 +163.184483899429 +11 +684.332892871929 +21 +-634.846784199308 +31 +145.28747843271 +12 +665.02138596315 +22 +-639.414516186541 +32 +153.414996741162 +13 +665.02138596315 +23 +-639.414516186541 +33 +153.414996741162 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.22135687427 +20 +-629.047597461153 +30 +134.968788313225 +11 +684.332886599671 +21 +-615.441289762884 +31 +154.510351165083 +12 +702.221351073972 +22 +-611.102282944468 +32 +143.497679575028 +13 +702.221351073972 +23 +-611.102282944468 +33 +143.497679575028 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332886599671 +20 +-615.441289762884 +30 +154.510351165083 +11 +702.22135687427 +21 +-629.047597461153 +31 +134.968788313225 +12 +684.332892871929 +22 +-634.846784199308 +32 +145.28747843271 +13 +684.332892871929 +23 +-634.846784199308 +33 +145.28747843271 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363103364091 +20 +-622.121886696301 +30 +122.645633187677 +11 +702.221351073972 +21 +-611.102282944468 +31 +143.497679575028 +12 +718.363098127435 +22 +-605.920400916633 +32 +130.345732863609 +13 +718.363098127435 +23 +-605.920400916633 +33 +130.345732863609 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221351073972 +20 +-611.102282944468 +30 +143.497679575028 +11 +718.363103364091 +21 +-622.121886696301 +31 +122.645633187677 +12 +702.22135687427 +22 +-629.047597461153 +32 +134.968788313225 +13 +702.22135687427 +23 +-629.047597461153 +33 +134.968788313225 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363103364091 +20 +-622.121886696301 +30 +122.645633187677 +11 +732.466058322552 +21 +-599.989404866694 +31 +115.292482897529 +12 +732.466062914084 +22 +-614.194966001222 +32 +108.540988733599 +13 +732.466062914084 +23 +-614.194966001222 +33 +108.540988733599 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466058322552 +20 +-599.989404866694 +30 +115.292482897529 +11 +718.363103364091 +21 +-622.121886696301 +31 +122.645633187677 +12 +718.363098127435 +22 +-605.920400916633 +32 +130.345732863609 +13 +718.363098127435 +23 +-605.920400916633 +33 +130.345732863609 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031425007948 +20 +-586.699189190326 +30 +30.0821938636906 +11 +764.696220629469 +21 +-572.980425379156 +31 +23.3578380002154 +12 +764.531578361879 +22 +-577.829946771796 +32 +23.3578379990944 +13 +764.531578361879 +23 +-577.829946771796 +33 +23.3578379990944 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.696220629469 +20 +-572.980425379156 +30 +23.3578380002154 +11 +764.031425007948 +21 +-586.699189190326 +31 +30.0821938636906 +12 +764.031425302868 +22 +-583.441376980459 +32 +33.8187896004645 +13 +764.031425302868 +23 +-583.441376980459 +33 +33.8187896004645 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.935095112731 +20 +-577.829952364284 +30 +23.3578380080173 +11 +792.007217306199 +21 +-592.860317128213 +31 +27.8714369630177 +12 +792.574093434967 +22 +-584.829110641297 +32 +23.3578380063606 +13 +792.574093434967 +23 +-584.829110641297 +33 +23.3578380063606 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007217306199 +20 +-592.860317128213 +30 +27.8714369630177 +11 +792.935095112731 +21 +-577.829952364284 +31 +23.3578380080173 +12 +792.007218281129 +22 +-589.846284379929 +32 +32.4682094668199 +13 +792.007218281129 +23 +-589.846284379929 +33 +32.4682094668199 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.0314182014 +20 +-561.470422367227 +30 +44.2609516834995 +11 +764.995900047839 +21 +-545.937132023437 +31 +23.3578380793295 +12 +764.975642457445 +22 +-559.332124908489 +32 +23.3578380033138 +13 +764.975642457445 +23 +-559.332124908489 +33 +23.3578380033138 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.995900047839 +20 +-545.937132023437 +30 +23.3578380793295 +11 +764.0314182014 +21 +-561.470422367227 +31 +44.2609516834995 +12 +764.031409168954 +22 +-546.296855411639 +32 +44.7709041931231 +13 +764.031409168954 +23 +-546.296855411639 +33 +44.7709041931231 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024140682123 +20 +-186.86272 +30 +97.713066817443 +11 +767.829301759449 +21 +-547.569288532173 +31 +120.514493197419 +12 +779.024140682123 +22 +-547.186238711366 +32 +97.7130668174428 +13 +779.024140682123 +23 +-547.186238711366 +33 +97.7130668174428 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829301759449 +20 +-547.569288532173 +30 +120.514493197419 +11 +779.024140682123 +21 +-186.86272 +31 +97.713066817443 +12 +767.829301759449 +22 +-186.86272 +32 +120.51449319742 +13 +767.829301759449 +23 +-186.86272 +33 +120.51449319742 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247013852634 +20 +-710.823016652003 +30 +124.188674487802 +11 +453.575572828439 +21 +-691.225448319662 +31 +141.602860928812 +12 +453.575571294939 +22 +-708.165176005556 +32 +122.173590554812 +13 +453.575571294939 +23 +-708.165176005556 +33 +122.173590554812 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575572828439 +20 +-691.225448319662 +30 +141.602860928812 +11 +452.247013852634 +21 +-710.823016652003 +31 +124.188674487802 +12 +452.247015413237 +22 +-693.583909707096 +32 +143.961322316008 +13 +452.247015413237 +23 +-693.583909707096 +33 +143.961322316008 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575571294939 +20 +-708.165176005556 +30 +122.173590554812 +11 +454.431276722139 +21 +-688.759443912117 +31 +139.136856521515 +12 +454.431275216977 +22 +-705.386140960936 +32 +120.066621251022 +13 +454.431275216977 +23 +-705.386140960936 +33 +120.066621251022 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431276722139 +20 +-688.759443912117 +30 +139.136856521515 +11 +453.575571294939 +21 +-708.165176005556 +31 +122.173590554812 +12 +453.575572828439 +22 +-691.225448319662 +32 +141.602860928812 +13 +453.575572828439 +23 +-691.225448319662 +33 +141.602860928812 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335601310833 +20 +-757.591910929275 +30 +56.7629871862785 +11 +439.690582495428 +21 +-761.097663471809 +31 +28.9532865498045 +12 +436.335587191701 +22 +-762.351784924648 +32 +29.0815795342117 +13 +436.335587191701 +23 +-762.351784924648 +33 +29.0815795342117 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690582495428 +20 +-761.097663471809 +30 +28.9532865498045 +11 +436.335601310833 +21 +-757.591910929275 +31 +56.7629871862785 +12 +439.690596528004 +22 +-756.366969281262 +32 +56.4649968373303 +13 +439.690596528004 +23 +-756.366969281262 +33 +56.4649968373303 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006112926336 +20 +-699.207898179883 +30 +194.697902416163 +11 +458.222260471925 +21 +-722.603322716877 +31 +172.980735322867 +12 +458.222258577851 +22 +-698.605625061081 +32 +193.903521183332 +13 +458.222258577851 +23 +-698.605625061081 +33 +193.903521183332 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222260471925 +20 +-722.603322716877 +30 +172.980735322867 +11 +455.006112926336 +21 +-699.207898179883 +31 +194.697902416163 +12 +455.006114828511 +22 +-723.308225016813 +32 +173.685637622731 +13 +455.006114828511 +23 +-723.308225016813 +33 +173.685637622731 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222258577851 +20 +-698.605625061081 +30 +193.903521183332 +11 +461.270001665299 +21 +-721.590015329221 +31 +171.967427935313 +12 +461.269999782869 +22 +-697.7398487668 +32 +192.761586394987 +13 +461.269999782869 +23 +-697.7398487668 +33 +192.761586394987 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.270001665299 +20 +-721.590015329221 +30 +171.967427935313 +11 +458.222258577851 +21 +-698.605625061081 +31 +193.903521183332 +12 +458.222260471925 +22 +-722.603322716877 +32 +172.980735322867 +13 +458.222260471925 +23 +-722.603322716877 +33 +172.980735322867 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471087696265 +20 +-751.942885609203 +30 +28.0167869283821 +11 +452.24697525056 +21 +-748.985781777358 +31 +23.3578378632311 +12 +450.471084922909 +22 +-752.099463345238 +32 +23.3578378619863 +13 +450.471084922909 +23 +-752.099463345238 +33 +23.3578378619863 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.24697525056 +20 +-748.985781777358 +30 +23.3578378632311 +11 +450.471087696265 +21 +-751.942885609203 +31 +28.0167869283821 +12 +452.246977834961 +22 +-748.839872068014 +32 +27.6993612581553 +13 +452.246977834961 +23 +-748.839872068014 +33 +27.6993612581553 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332877982946 +20 +-710.625470617764 +30 +45.3374518452758 +11 +696.283090443709 +21 +-706.400240289655 +31 +23.3578379492919 +12 +684.332867182503 +22 +-714.266540775895 +32 +24.1625326278822 +13 +684.332867182503 +23 +-714.266540775895 +33 +24.1625326278822 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.283090443709 +20 +-706.400240289655 +30 +23.3578379492919 +11 +684.332877982946 +21 +-710.625470617764 +31 +45.3374518452758 +12 +702.221343105619 +22 +-699.12426393804 +32 +42.5395709625037 +13 +702.221343105619 +23 +-699.12426393804 +33 +42.5395709625037 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +696.283090443709 +20 +-706.400240289655 +30 +23.3578379492919 +11 +702.221343105619 +21 +-699.12426393804 +31 +42.5395709625037 +12 +702.221333321817 +22 +-702.422601699266 +32 +23.3578379520354 +13 +702.221333321817 +23 +-702.422601699266 +33 +23.3578379520354 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466062914084 +20 +-614.194966001222 +30 +108.540988733599 +11 +744.275052115393 +21 +-593.416610482006 +31 +98.6103038030606 +12 +744.27505599199 +22 +-605.41026540619 +32 +92.9100649699753 +13 +744.27505599199 +23 +-605.41026540619 +33 +92.9100649699753 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275052115393 +20 +-593.416610482006 +30 +98.6103038030606 +11 +732.466062914084 +21 +-614.194966001222 +31 +108.540988733599 +12 +732.466058322552 +22 +-599.989404866694 +32 +115.292482897529 +13 +732.466058322552 +23 +-599.989404866694 +33 +115.292482897529 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.27505599199 +20 +-605.41026540619 +30 +92.9100649699753 +11 +753.576407084801 +21 +-586.320946175488 +31 +80.6010436173693 +12 +753.576410189591 +22 +-595.926735646398 +32 +76.0356884766169 +13 +753.576410189591 +23 +-595.926735646398 +33 +76.0356884766169 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576407084801 +20 +-586.320946175488 +30 +80.6010436173693 +11 +744.27505599199 +21 +-605.41026540619 +31 +92.9100649699753 +12 +744.275052115393 +22 +-593.416610482006 +32 +98.6103038030606 +13 +744.275052115393 +23 +-593.416610482006 +33 +98.6103038030606 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576410189591 +20 +-595.926735646398 +30 +76.0356884766169 +11 +760.201824130007 +21 +-578.830801190005 +31 +61.5905626376661 +12 +760.201826420081 +22 +-585.915972100795 +32 +58.2231849183613 +13 +760.201826420081 +23 +-585.915972100795 +33 +58.2231849183613 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201824130007 +20 +-578.830801190005 +30 +61.5905626376661 +11 +753.576410189591 +21 +-595.926735646398 +31 +76.0356884766169 +12 +753.576407084801 +22 +-586.320946175488 +32 +80.6010436173693 +13 +753.576407084801 +23 +-586.320946175488 +33 +80.6010436173693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201826420081 +20 +-585.915972100795 +30 +58.2231849183613 +11 +764.031422681501 +21 +-571.081702518113 +31 +41.9228372915384 +12 +764.031424128692 +22 +-575.559109938211 +32 +39.7948544698768 +13 +764.031424128692 +23 +-575.559109938211 +33 +39.7948544698768 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031422681501 +20 +-571.081702518113 +30 +41.9228372915384 +11 +760.201826420081 +21 +-585.915972100795 +31 +58.2231849183613 +12 +760.201824130007 +22 +-578.830801190005 +32 +61.5905626376661 +13 +760.201824130007 +23 +-578.830801190005 +33 +61.5905626376661 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031424128692 +20 +-575.559109938211 +30 +39.7948544698768 +11 +764.92809314571 +21 +-563.7670797619 +31 +23.357838002321 +12 +764.878707491771 +22 +-566.32138210224 +32 +23.3578380017417 +13 +764.878707491771 +23 +-566.32138210224 +33 +23.3578380017417 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.92809314571 +20 +-563.7670797619 +30 +23.357838002321 +11 +764.031424128692 +21 +-575.559109938211 +31 +39.7948544698768 +12 +764.031422681501 +22 +-571.081702518113 +32 +41.9228372915384 +13 +764.031422681501 +23 +-571.081702518113 +33 +41.9228372915384 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007217306199 +20 +-577.494024343961 +30 +43.2377297488181 +11 +787.130190684252 +21 +-597.186922321698 +31 +60.1350749996264 +12 +792.007218281129 +22 +-582.09079684746 +32 +40.22369700007 +13 +792.007218281129 +23 +-582.09079684746 +33 +40.22369700007 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130190684252 +20 +-597.186922321698 +30 +60.1350749996264 +11 +792.007217306199 +21 +-577.494024343961 +31 +43.2377297488181 +12 +787.130189104003 +22 +-589.736090634929 +32 +65.0204702834338 +13 +787.130189104003 +23 +-589.736090634929 +33 +65.0204702834338 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130189104003 +20 +-589.736090634929 +30 +65.0204702834338 +11 +779.024169157982 +21 +-611.764971197169 +31 +79.3631234201936 +12 +787.130190684252 +22 +-597.186922321698 +32 +60.1350749996264 +13 +787.130190684252 +23 +-597.186922321698 +33 +60.1350749996264 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024169157982 +20 +-611.764971197169 +30 +79.3631234201936 +11 +787.130189104003 +21 +-589.736090634929 +31 +65.0204702834338 +12 +779.024166993188 +22 +-601.558027793705 +32 +86.0556585976989 +13 +779.024166993188 +23 +-601.558027793705 +33 +86.0556585976989 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024166993188 +20 +-601.558027793705 +30 +86.0556585976989 +11 +767.829335677824 +21 +-625.572837100386 +31 +97.5753208387769 +12 +779.024169157982 +22 +-611.764971197169 +32 +79.3631234201936 +13 +779.024169157982 +23 +-611.764971197169 +33 +79.3631234201936 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829335677824 +20 +-625.572837100386 +30 +97.5753208387769 +11 +779.024166993188 +21 +-601.558027793705 +31 +86.0556585976989 +12 +767.829332959368 +22 +-612.755392432138 +32 +105.979521385129 +13 +767.829332959368 +23 +-612.755392432138 +33 +105.979521385129 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829332959368 +20 +-612.755392432138 +30 +105.979521385129 +11 +753.73928877638 +21 +-638.371732863863 +31 +114.456713513376 +12 +767.829335677824 +22 +-625.572837100386 +32 +97.5753208387769 +13 +767.829335677824 +23 +-625.572837100386 +33 +97.5753208387769 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73928877638 +20 +-638.371732863863 +30 +114.456713513376 +11 +767.829332959368 +21 +-612.755392432138 +31 +105.979521385129 +12 +753.73928554472 +22 +-623.13454224489 +32 +124.447504114724 +13 +753.73928554472 +23 +-623.13454224489 +33 +124.447504114724 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636231054623 +20 +-575.409716284687 +30 +180.525125445771 +11 +623.546317277054 +21 +-548.656939099171 +31 +185.255996085023 +12 +644.636215091063 +22 +-548.592598441069 +32 +181.426393854527 +13 +644.636215091063 +23 +-548.592598441069 +33 +181.426393854527 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546317277054 +20 +-548.656939099171 +30 +185.255996085023 +11 +644.636231054623 +21 +-575.409716284687 +31 +180.525125445771 +12 +623.546333434853 +22 +-575.80035767001 +32 +184.343761377095 +13 +623.546333434853 +23 +-575.80035767001 +33 +184.343761377095 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021358751182 +20 +-574.733894284646 +30 +173.91867700208 +11 +644.636215091063 +21 +-548.592598441069 +31 +181.426393854527 +12 +665.021343123663 +22 +-548.481290386566 +32 +174.800973253262 +13 +665.021343123663 +23 +-548.481290386566 +33 +174.800973253262 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636215091063 +20 +-548.592598441069 +30 +181.426393854527 +11 +665.021358751182 +21 +-574.733894284646 +31 +173.91867700208 +12 +644.636231054623 +22 +-575.409716284687 +32 +180.525125445771 +13 +644.636231054623 +23 +-575.409716284687 +33 +180.525125445771 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107164131826 +20 +-776.05993979789 +30 +23.3578378634987 +11 +470.677481847252 +21 +-778.860284147472 +31 +30.7703076765303 +12 +470.677477434794 +22 +-779.109402076299 +32 +23.3578378623763 +13 +470.677477434794 +23 +-779.109402076299 +33 +23.3578378623763 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677481847252 +20 +-778.860284147472 +30 +30.7703076765303 +11 +472.107164131826 +21 +-776.05993979789 +31 +23.3578378634987 +12 +472.107168359226 +22 +-775.821269863314 +32 +30.4594290412997 +13 +472.107168359226 +23 +-775.821269863314 +33 +30.4594290412997 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267737950976 +20 +-763.421251234373 +30 +29.1909851596944 +11 +432.838912025282 +21 +-763.326348925263 +31 +23.3578378539704 +12 +429.267734478649 +22 +-763.617291372796 +32 +23.3578378527852 +13 +429.267734478649 +23 +-763.617291372796 +33 +23.3578378527852 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838912025282 +20 +-763.326348925263 +30 +23.3578378539704 +11 +429.267737950976 +21 +-763.421251234373 +31 +29.1909851596944 +12 +432.838915479952 +22 +-763.131305674907 +32 +29.1613230247316 +13 +432.838915479952 +23 +-763.131305674907 +33 +29.1613230247316 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575535902759 +20 +-745.521819843274 +30 +27.3599383202345 +11 +454.431238307724 +21 +-742.175043209088 +31 +23.3578378654204 +12 +453.575533520408 +22 +-745.656322242814 +32 +23.3578378643829 +13 +453.575533520408 +23 +-745.656322242814 +33 +23.3578378643829 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431238307724 +20 +-742.175043209088 +30 +23.3578378654204 +11 +453.575535902759 +21 +-745.521819843274 +31 +27.3599383202345 +12 +454.431240478811 +22 +-742.052468269584 +32 +27.0050383833634 +13 +454.431240478811 +23 +-742.052468269584 +33 +27.0050383833634 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +793.160541596036 +20 +-572.980425388099 +30 +23.3578380091579 +11 +792.007218281129 +21 +-589.846284379929 +31 +32.4682094668199 +12 +792.935095112731 +22 +-577.829952364284 +32 +23.3578380080173 +13 +792.935095112731 +23 +-577.829952364284 +33 +23.3578380080173 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007218281129 +20 +-589.846284379929 +30 +32.4682094668199 +11 +793.160541596036 +21 +-572.980425388099 +31 +23.3578380091579 +12 +792.00721860814 +22 +-586.233981212786 +32 +36.6113938325108 +13 +792.00721860814 +23 +-586.233981212786 +33 +36.6113938325108 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630394345883 +20 +-784.472871509203 +30 +23.3578378599218 +11 +464.090746745054 +21 +-786.408777774662 +31 +31.5424891402109 +12 +464.090741872935 +22 +-786.683847141088 +32 +23.3578378586363 +13 +464.090741872935 +23 +-786.683847141088 +33 +23.3578378586363 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090746745054 +20 +-786.408777774662 +30 +31.5424891402109 +11 +466.630394345883 +21 +-784.472871509203 +31 +23.3578378599218 +12 +466.630399083827 +22 +-784.205377362117 +32 +31.3170895287116 +13 +466.630399083827 +23 +-784.205377362117 +33 +31.3170895287116 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.283090443709 +20 +-706.400240289655 +30 +23.3578379492919 +11 +684.332866703488 +21 +-714.293584916115 +31 +23.3578379437967 +12 +684.332867182503 +22 +-714.266540775895 +32 +24.1625326278822 +13 +684.332867182503 +23 +-714.266540775895 +33 +24.1625326278822 +70 +0 + 0 +3DFACE + 8 +leg_half +10 +454.431240478811 +20 +-742.052468269584 +30 +27.0050383833634 +11 +454.797651639243 +21 +-738.608819575715 +31 +23.3578378663214 +12 +454.431238307724 +22 +-742.175043209088 +32 +23.3578378654204 +13 +454.431238307724 +23 +-742.175043209088 +33 +23.3578378654204 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797651639243 +20 +-738.608819575715 +30 +23.3578378663214 +11 +454.431240478811 +21 +-742.052468269584 +31 +27.0050383833634 +12 +454.797653593913 +22 +-738.498463121584 +32 +26.6414790273437 +13 +454.797653593913 +23 +-738.498463121584 +33 +26.6414790273437 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677477434794 +20 +-779.109402076299 +30 +23.3578378623763 +11 +468.840126975903 +21 +-781.672997259934 +31 +31.0580369189494 +12 +468.840122392167 +22 +-781.931785179335 +32 +23.3578378611765 +13 +468.840122392167 +23 +-781.931785179335 +33 +23.3578378611765 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840126975903 +20 +-781.672997259934 +30 +31.0580369189494 +11 +470.677477434794 +21 +-779.109402076299 +31 +23.3578378623763 +12 +470.677481847252 +22 +-778.860284147472 +32 +30.7703076765303 +13 +470.677481847252 +23 +-778.860284147472 +33 +30.7703076765303 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031425302868 +20 +-583.441376980459 +30 +33.8187896004645 +11 +764.805052044838 +21 +-569.303684335783 +31 +23.3578380010606 +12 +764.696220629469 +22 +-572.980425379156 +32 +23.3578380002154 +13 +764.696220629469 +23 +-572.980425379156 +33 +23.3578380002154 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.805052044838 +20 +-569.303684335783 +30 +23.3578380010606 +11 +764.031425302868 +21 +-583.441376980459 +31 +33.8187896004645 +12 +764.031425007948 +22 +-579.704781244013 +32 +37.0766018107078 +13 +764.031425007948 +23 +-579.704781244013 +33 +37.0766018107078 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602113045565 +20 +-766.149870997149 +30 +23.3578379057383 +11 +473.717738079349 +21 +-765.945155901366 +31 +29.449144968378 +12 +473.717734453346 +22 +-766.149872257343 +32 +23.3578378661905 +13 +473.717734453346 +23 +-766.149872257343 +33 +23.3578378661905 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717738079349 +20 +-765.945155901366 +30 +29.449144968378 +11 +599.602113045565 +21 +-766.149870997149 +31 +23.3578379057383 +12 +599.602116671527 +22 +-765.945156978237 +32 +29.4490754688794 +13 +599.602116671527 +23 +-765.945156978237 +33 +29.4490754688794 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +127.425692248039 +20 +-280.29408 +30 +1698.17280957558 +11 +100.141825844156 +21 +-186.862719999999 +31 +1720.56410006505 +12 +127.425692248039 +22 +-186.862719999999 +32 +1698.17280957558 +13 +127.425692248039 +23 +-186.862719999999 +33 +1698.17280957558 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.141825844156 +20 +-186.862719999999 +30 +1720.56410006505 +11 +127.425692248039 +21 +-280.29408 +31 +1698.17280957558 +12 +100.141825844156 +22 +-280.29408 +32 +1720.56410006505 +13 +100.141825844156 +23 +-280.29408 +33 +1720.56410006505 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471124298894 +20 +-713.308606140826 +30 +126.073163560098 +11 +452.247015413237 +21 +-693.583909707096 +31 +143.961322316008 +12 +452.247013852634 +22 +-710.823016652003 +32 +124.188674487802 +13 +452.247013852634 +23 +-710.823016652003 +33 +124.188674487802 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.247015413237 +20 +-693.583909707096 +30 +143.961322316008 +11 +450.471124298894 +21 +-713.308606140826 +31 +126.073163560098 +12 +450.471125884842 +22 +-695.789522350054 +32 +146.166934958744 +13 +450.471125884842 +23 +-695.789522350054 +33 +146.166934958744 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721745102502 +20 +-678.931345516719 +30 +167.953679054935 +11 +448.282012434797 +21 +-654.795098868987 +31 +180.78210913444 +12 +448.282017231929 +22 +-677.413444384727 +32 +165.951609244563 +13 +448.282017231929 +23 +-677.413444384727 +33 +165.951609244563 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282012434797 +20 +-654.795098868987 +30 +180.78210913444 +11 +445.721745102502 +21 +-678.931345516719 +31 +167.953679054935 +12 +445.721740244506 +22 +-656.026027291755 +32 +182.972342518915 +13 +445.721740244506 +23 +-656.026027291755 +33 +182.972342518915 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021343123663 +20 +-548.481290386566 +30 +174.800973253262 +11 +644.636215091063 +21 +-186.86272 +31 +181.426393854527 +12 +665.021343123663 +22 +-186.86272 +32 +174.800973253263 +13 +665.021343123663 +23 +-186.86272 +33 +174.800973253263 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636215091063 +20 +-186.86272 +30 +181.426393854527 +11 +665.021343123663 +21 +-548.481290386566 +31 +174.800973253262 +12 +644.636215091063 +22 +-548.592598441069 +32 +181.426393854527 +13 +644.636215091063 +23 +-548.592598441069 +33 +181.426393854527 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840108391474 +20 +-549.460721801574 +30 +233.09964686487 +11 +466.630399083827 +21 +-580.939676928926 +31 +234.582789982374 +12 +468.840126975903 +22 +-580.680624318909 +32 +232.050409880217 +13 +468.840126975903 +23 +-580.680624318909 +33 +232.050409880217 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630399083827 +20 +-580.939676928926 +30 +234.582789982374 +11 +468.840108391474 +21 +-549.460721801574 +31 +233.09964686487 +12 +466.630380370588 +22 +-549.503386674047 +32 +235.63929931572 +13 +466.630380370588 +23 +-549.503386674047 +33 +235.63929931572 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758754005207 +20 +-548.76324041817 +30 +191.585040951661 +11 +717.894045959123 +21 +-575.008661956696 +31 +176.604978855282 +12 +717.894030194972 +22 +-548.526532054241 +32 +177.494989005398 +13 +717.894030194972 +23 +-548.526532054241 +33 +177.494989005398 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894045959123 +20 +-575.008661956696 +30 +176.604978855282 +11 +696.758754005207 +21 +-548.76324041817 +31 +191.585040951661 +12 +696.758770484001 +22 +-576.445896872616 +32 +190.654683562835 +13 +696.758770484001 +23 +-576.445896872616 +33 +190.654683562835 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758770484001 +20 +-576.445896872616 +30 +190.654683562835 +11 +717.894057585081 +21 +-597.802053886837 +31 +172.685609040578 +12 +717.894045959123 +22 +-575.008661956696 +32 +176.604978855282 +13 +717.894045959123 +23 +-575.008661956696 +33 +176.604978855282 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894057585081 +20 +-597.802053886837 +30 +172.685609040578 +11 +696.758770484001 +21 +-576.445896872616 +31 +190.654683562835 +12 +696.758783079627 +22 +-601.140380260496 +32 +186.408417229293 +13 +696.758783079627 +23 +-601.140380260496 +33 +186.408417229293 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957344671825 +20 +-577.587813182298 +30 +201.817465714933 +11 +696.758783079627 +21 +-601.140380260496 +31 +186.408417229293 +12 +696.758770484001 +22 +-576.445896872616 +32 +190.654683562835 +13 +696.758770484001 +23 +-576.445896872616 +33 +190.654683562835 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758783079627 +20 +-601.140380260496 +30 +186.408417229293 +11 +673.957344671825 +21 +-577.587813182298 +31 +201.817465714933 +12 +673.957358037872 +22 +-603.792752711355 +32 +197.311473394829 +13 +673.957358037872 +23 +-603.792752711355 +33 +197.311473394829 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884086364505 +20 +-578.414663086699 +30 +209.900281060566 +11 +673.957358037872 +21 +-603.792752711355 +31 +197.311473394829 +12 +673.957344671825 +22 +-577.587813182298 +32 +201.817465714933 +13 +673.957344671825 +23 +-577.587813182298 +33 +201.817465714933 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957358037872 +20 +-603.792752711355 +30 +197.311473394829 +11 +649.884086364505 +21 +-578.414663086699 +31 +209.900281060566 +12 +649.884100288402 +22 +-605.713302275367 +32 +205.206224873295 +13 +649.884100288402 +23 +-605.713302275367 +33 +205.206224873295 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955307916438 +20 +-578.912147406784 +30 +214.763348941721 +11 +649.884100288402 +21 +-605.713302275367 +31 +205.206224873295 +12 +649.884086364505 +22 +-578.414663086699 +32 +209.900281060566 +13 +649.884086364505 +23 +-578.414663086699 +33 +209.900281060566 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884100288402 +20 +-605.713302275367 +30 +205.206224873295 +11 +624.955307916438 +21 +-578.912147406784 +31 +214.763348941721 +12 +624.955322175969 +22 +-606.868815812022 +32 +209.956143300585 +13 +624.955322175969 +23 +-606.868815812022 +33 +209.956143300585 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031422681501 +20 +-571.081702518113 +30 +41.9228372915384 +11 +764.959283764737 +21 +-561.475402706277 +31 +23.3578380028359 +12 +764.92809314571 +22 +-563.7670797619 +32 +23.357838002321 +13 +764.92809314571 +23 +-563.7670797619 +33 +23.357838002321 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.959283764737 +20 +-561.475402706277 +30 +23.3578380028359 +11 +764.031422681501 +21 +-571.081702518113 +31 +41.9228372915384 +12 +764.031420693374 +22 +-566.35608713258 +32 +43.4208517516957 +13 +764.031420693374 +23 +-566.35608713258 +33 +43.4208517516957 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332897960916 +20 +-669.009252539392 +30 +119.38666515078 +11 +665.021389999784 +21 +-658.447133448378 +31 +140.935603497775 +12 +684.332896682708 +22 +-652.814503888805 +32 +133.506322083721 +13 +684.332896682708 +23 +-652.814503888805 +33 +133.506322083721 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021389999784 +20 +-658.447133448378 +30 +140.935603497775 +11 +684.332897960916 +21 +-669.009252539392 +31 +119.38666515078 +12 +665.021391353748 +22 +-675.601700530057 +32 +125.979113140781 +13 +665.021391353748 +23 +-675.601700530057 +33 +125.979113140781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758754005207 +20 +-548.76324041817 +30 +191.585040951661 +11 +717.894030194972 +21 +-186.86272 +31 +177.494989005399 +12 +696.758754005207 +22 +-186.86272 +32 +191.585040951661 +13 +696.758754005207 +23 +-186.86272 +33 +191.585040951661 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894030194972 +20 +-186.86272 +30 +177.494989005399 +11 +696.758754005207 +21 +-548.76324041817 +31 +191.585040951661 +12 +717.894030194972 +22 +-548.526532054241 +32 +177.494989005398 +13 +717.894030194972 +23 +-548.526532054241 +33 +177.494989005398 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576407084801 +20 +-586.320946175488 +30 +80.6010436173693 +11 +760.20182098394 +21 +-571.352859264312 +31 +63.961061339529 +12 +760.201824130007 +22 +-578.830801190005 +32 +61.5905626376661 +13 +760.201824130007 +23 +-578.830801190005 +33 +61.5905626376661 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.20182098394 +20 +-571.352859264312 +30 +63.961061339529 +11 +753.576407084801 +21 +-586.320946175488 +31 +80.6010436173693 +12 +753.576402819491 +22 +-576.182653575586 +32 +83.8148703207571 +13 +753.576402819491 +23 +-576.182653575586 +33 +83.8148703207571 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332886599671 +20 +-615.441289762884 +30 +154.510351165083 +11 +665.021370191738 +21 +-597.163793012617 +31 +170.061810578218 +12 +684.332877982946 +22 +-594.96003923808 +32 +161.00288323661 +13 +684.332877982946 +23 +-594.96003923808 +33 +161.00288323661 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021370191738 +20 +-597.163793012617 +30 +170.061810578218 +11 +684.332886599671 +21 +-615.441289762884 +31 +154.510351165083 +12 +665.021379319153 +22 +-618.858911203396 +32 +163.184483899429 +13 +665.021379319153 +23 +-618.858911203396 +33 +163.184483899429 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955322175969 +20 +-606.868815812022 +30 +209.956143300585 +11 +649.884111397057 +21 +-632.11766596993 +31 +196.836072967405 +12 +649.884100288402 +22 +-605.713302275367 +32 +205.206224873295 +13 +649.884100288402 +23 +-605.713302275367 +33 +205.206224873295 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884111397057 +20 +-632.11766596993 +30 +196.836072967405 +11 +624.955322175969 +21 +-606.868815812022 +31 +209.956143300585 +12 +624.955333552396 +22 +-633.909652359165 +32 +201.384230256964 +13 +624.955333552396 +23 +-633.909652359165 +33 +201.384230256964 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335587191701 +20 +-762.351784924648 +30 +29.0815795342117 +11 +439.690579164597 +21 +-761.285715042239 +31 +23.357837856573 +12 +436.335583784501 +22 +-762.544148159569 +32 +23.3578378552417 +13 +436.335583784501 +23 +-762.544148159569 +33 +23.3578378552417 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690579164597 +20 +-761.285715042239 +30 +23.357837856573 +11 +436.335587191701 +21 +-762.351784924648 +31 +29.0815795342117 +12 +439.690582495428 +22 +-761.097663471809 +32 +28.9532865498045 +13 +439.690582495428 +23 +-761.097663471809 +33 +28.9532865498045 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717734453346 +20 +-766.149872257343 +30 +23.3578378661905 +11 +473.642038802113 +21 +-769.301079755069 +31 +29.7924413152051 +12 +473.642034971754 +22 +-769.517333598178 +32 +23.3578378654237 +13 +473.642034971754 +23 +-769.517333598178 +33 +23.3578378654237 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642038802113 +20 +-769.301079755069 +30 +29.7924413152051 +11 +473.717734453346 +21 +-766.149872257343 +31 +23.3578378661905 +12 +473.717738079349 +22 +-765.945155901366 +32 +29.449144968378 +13 +473.717738079349 +23 +-765.945155901366 +33 +29.449144968378 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021358751182 +20 +-723.541264381198 +30 +25.1113068905408 +11 +684.332866703488 +21 +-714.293584916115 +31 +23.3578379437967 +12 +665.021357707386 +22 +-723.600194881456 +32 +23.3578379356765 +13 +665.021357707386 +23 +-723.600194881456 +33 +23.3578379356765 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332866703488 +20 +-714.293584916115 +30 +23.3578379437967 +11 +665.021358751182 +21 +-723.541264381198 +31 +25.1113068905408 +12 +684.332867182503 +22 +-714.266540775895 +32 +24.1625326278822 +13 +684.332867182503 +23 +-714.266540775895 +33 +24.1625326278822 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636231054623 +20 +-730.147712824956 +30 +25.7871288899166 +11 +665.021357707386 +21 +-723.600194881456 +31 +23.3578379356765 +12 +644.636229608527 +22 +-730.229356318714 +32 +23.35783792781 +13 +644.636229608527 +23 +-730.229356318714 +33 +23.35783792781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021357707386 +20 +-723.600194881456 +30 +23.3578379356765 +11 +644.636231054623 +21 +-730.147712824956 +31 +25.7871288899166 +12 +665.021358751182 +22 +-723.541264381198 +32 +25.1113068905408 +13 +665.021358751182 +23 +-723.541264381198 +33 +25.1113068905408 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133267369982 +20 +-734.928077619115 +30 +26.2761627640122 +11 +623.546331756218 +21 +-734.061120907196 +31 +23.3578379203391 +12 +602.133265632776 +22 +-735.026156540265 +32 +23.357837913399 +13 +602.133265632776 +23 +-735.026156540265 +33 +23.357837913399 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546331756218 +20 +-734.061120907196 +30 +23.3578379203391 +11 +602.133267369982 +21 +-734.928077619115 +31 +26.2761627640122 +12 +623.546333434853 +22 +-733.96634875632 +32 +26.1777702748551 +13 +623.546333434853 +23 +-733.96634875632 +33 +26.1777702748551 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997666736503 +20 +-709.544681018119 +30 +23.3578379613892 +11 +717.894045959123 +21 +-726.227566234427 +31 +25.3860745623198 +12 +717.894044751764 +22 +-726.295731112839 +32 +23.3578379516926 +13 +717.894044751764 +23 +-726.295731112839 +33 +23.3578379516926 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894045959123 +20 +-726.227566234427 +30 +25.3860745623198 +11 +736.997666736503 +21 +-709.544681018119 +31 +23.3578379613892 +12 +736.997666927312 +22 +-709.533908392784 +32 +23.6783759511398 +13 +736.997666927312 +23 +-709.533908392784 +33 +23.6783759511398 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576402819491 +20 +-633.437457700021 +30 +26.5600661905556 +11 +757.969157364208 +21 +-620.27407578666 +31 +23.3578379876696 +12 +753.576401186168 +22 +-633.988087312601 +32 +23.3578379832645 +13 +753.576401186168 +23 +-633.988087312601 +33 +23.3578379832645 +70 +0 + 0 +3DFACE + 8 +leg_half +10 +473.101718395121 +20 +-772.841978102158 +30 +23.3578378645206 +11 +472.107168359226 +21 +-775.821269863314 +31 +30.4594290412997 +12 +472.107164131826 +22 +-776.05993979789 +32 +23.3578378634987 +13 +472.107164131826 +23 +-776.05993979789 +33 +23.3578378634987 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107168359226 +20 +-775.821269863314 +30 +30.4594290412997 +11 +473.101718395121 +21 +-772.841978102158 +31 +23.3578378645206 +12 +473.101722427237 +22 +-772.614333460954 +32 +30.1313729498036 +13 +473.101722427237 +23 +-772.614333460954 +33 +30.1313729498036 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957341929162 +20 +-751.594897963598 +30 +23.3578379323091 +11 +649.884086364505 +21 +-759.522868440055 +31 +28.7920756889693 +12 +649.884083129639 +22 +-759.7055020414 +32 +23.3578379229566 +13 +649.884083129639 +23 +-759.7055020414 +33 +23.3578379229566 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884086364505 +20 +-759.522868440055 +30 +28.7920756889693 +11 +673.957341929162 +21 +-751.594897963598 +31 +23.3578379323091 +12 +673.957344671825 +22 +-751.440053094339 +32 +27.9652257853831 +13 +673.957344671825 +23 +-751.440053094339 +33 +27.9652257853831 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683295385243 +20 +-791.4884708222 +30 +23.3578378536789 +11 +448.317739367628 +21 +-791.272422434329 +31 +32.0400273988949 +12 +448.317734199337 +22 +-791.564213042815 +32 +23.3578378526045 +13 +448.317734199337 +23 +-791.564213042815 +33 +23.3578378526045 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317739367628 +20 +-791.272422434329 +30 +32.0400273988949 +11 +451.683295385243 +21 +-791.4884708222 +31 +23.3578378536789 +12 +451.683300548936 +22 +-791.196939781596 +32 +32.0323039932388 +13 +451.683300548936 +23 +-791.196939781596 +33 +32.0323039932388 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997666927312 +20 +-709.533908392784 +30 +23.6783759511398 +11 +736.997666736503 +21 +-709.544681018119 +31 +23.3578379613892 +12 +739.751559375878 +22 +-706.400475394532 +32 +23.357837962948 +13 +739.751559375878 +23 +-706.400475394532 +33 +23.357837962948 +70 +0 + 0 +3DFACE + 8 +leg_half +10 +623.546333434853 +20 +-733.96634875632 +30 +26.1777702748551 +11 +644.636229608527 +21 +-730.229356318714 +31 +23.35783792781 +12 +623.546331756218 +22 +-734.061120907196 +32 +23.3578379203391 +13 +623.546331756218 +23 +-734.061120907196 +33 +23.3578379203391 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636229608527 +20 +-730.229356318714 +30 +23.35783792781 +11 +623.546333434853 +21 +-733.96634875632 +31 +26.1777702748551 +12 +644.636231054623 +22 +-730.147712824956 +32 +25.7871288899166 +13 +644.636231054623 +23 +-730.147712824956 +33 +25.7871288899166 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717752446486 +20 +-607.239369239249 +30 +211.479086426299 +11 +473.642065047928 +21 +-635.720877069339 +31 +205.981095949127 +12 +473.717763908762 +22 +-634.484263142475 +32 +202.842487443351 +13 +473.717763908762 +23 +-634.484263142475 +33 +202.842487443351 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642065047928 +20 +-635.720877069339 +30 +205.981095949127 +11 +473.717752446486 +21 +-607.239369239249 +31 +211.479086426299 +12 +473.642053400866 +22 +-608.036762247305 +32 +214.756927441262 +13 +473.642053400866 +23 +-608.036762247305 +33 +214.756927441262 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683338867278 +20 +-672.734452813075 +30 +212.702239692806 +11 +455.006112926336 +21 +-699.207898179883 +31 +194.697902416163 +12 +455.006107255299 +22 +-672.469112270075 +32 +212.230111445991 +13 +455.006107255299 +23 +-672.469112270075 +33 +212.230111445991 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006112926336 +20 +-699.207898179883 +30 +194.697902416163 +11 +451.683338867278 +21 +-672.734452813075 +31 +212.702239692806 +12 +451.683344551435 +22 +-699.535098538027 +32 +195.129470137406 +13 +451.683344551435 +23 +-699.535098538027 +33 +195.129470137406 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.31777769836 +20 +-672.771628457813 +30 +212.76838602076 +11 +451.683344551435 +21 +-699.535098538027 +31 +195.129470137406 +12 +451.683338867278 +22 +-672.734452813075 +32 +212.702239692806 +13 +451.683338867278 +23 +-672.734452813075 +33 +212.702239692806 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683344551435 +20 +-699.535098538027 +30 +195.129470137406 +11 +448.31777769836 +21 +-672.771628457813 +31 +212.76838602076 +12 +448.317783384355 +22 +-699.580940660874 +32 +195.189933989489 +13 +448.317783384355 +23 +-699.580940660874 +33 +195.189933989489 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690622484567 +20 +-702.296711761968 +30 +152.674124370004 +11 +442.839490392048 +21 +-719.276356082042 +31 +130.597708279963 +12 +439.690620823844 +22 +-720.64180705444 +32 +131.632946903436 +13 +439.690620823844 +23 +-720.64180705444 +33 +131.632946903436 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839490392048 +20 +-719.276356082042 +30 +130.597708279963 +11 +439.690622484567 +21 +-702.296711761968 +31 +152.674124370004 +12 +442.839492038848 +22 +-701.085065061495 +32 +151.462477669651 +13 +442.839492038848 +23 +-701.085065061495 +33 +151.462477669651 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839492038848 +20 +-701.085065061495 +30 +151.462477669651 +11 +445.721745102502 +21 +-717.576266444547 +31 +129.308758123214 +12 +442.839490392048 +22 +-719.276356082042 +32 +130.597708279963 +13 +442.839490392048 +23 +-719.276356082042 +33 +130.597708279963 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721745102502 +20 +-717.576266444547 +30 +129.308758123214 +11 +442.839492038848 +21 +-701.085065061495 +31 +151.462477669651 +12 +445.721746731967 +22 +-699.576473436421 +32 +149.95388604473 +13 +445.721746731967 +23 +-699.576473436421 +33 +149.95388604473 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838955869068 +20 +-703.742219504346 +30 +154.119632112235 +11 +436.335625756533 +21 +-721.646389233184 +31 +132.394587199654 +12 +432.838954191733 +22 +-722.270804730449 +32 +132.867998161508 +13 +432.838954191733 +23 +-722.270804730449 +33 +132.867998161508 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335625756533 +20 +-721.646389233184 +30 +132.394587199654 +11 +432.838955869068 +21 +-703.742219504346 +31 +154.119632112235 +12 +436.335627427501 +22 +-703.188137968552 +32 +153.565550576497 +13 +436.335627427501 +23 +-703.188137968552 +33 +153.565550576497 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546368087822 +20 +-683.011825308716 +30 +133.389237918693 +11 +644.636263548619 +21 +-695.850119169612 +31 +112.836707846937 +12 +623.546366648706 +22 +-698.908941954744 +32 +115.155805645761 +13 +623.546366648706 +23 +-698.908941954744 +33 +115.155805645761 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636263548619 +20 +-695.850119169612 +30 +112.836707846937 +11 +623.546368087822 +21 +-683.011825308716 +31 +133.389237918693 +12 +644.636264956545 +22 +-680.297547066858 +32 +130.674959677109 +13 +644.636264956545 +23 +-680.297547066858 +33 +130.674959677109 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222195872847 +20 +-549.595394709904 +30 +241.116069017578 +11 +461.269956337624 +21 +-581.352493258009 +31 +238.618284093782 +12 +461.269937419119 +22 +-549.571376162653 +32 +239.686382351024 +13 +461.269937419119 +23 +-549.571376162653 +33 +239.686382351024 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269956337624 +20 +-581.352493258009 +30 +238.618284093782 +11 +458.222195872847 +21 +-549.595394709904 +31 +241.116069017578 +12 +458.222214863865 +22 +-581.498326831209 +32 +240.043876806793 +13 +458.222214863865 +23 +-581.498326831209 +33 +240.043876806793 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +35.243015227678 +20 +-186.862719999999 +30 +2079.8653122236 +11 +0.112465277083137 +21 +-280.294079999999 +31 +2083.32536938894 +12 +0.112465277083556 +22 +-186.862719999999 +32 +2083.32536938894 +13 +0.112465277083556 +23 +-186.862719999999 +33 +2083.32536938894 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.112465277083137 +20 +-280.294079999999 +30 +2083.32536938894 +11 +35.243015227678 +21 +-186.862719999999 +31 +2079.8653122236 +12 +35.2430152276776 +22 +-280.294079999999 +32 +2079.8653122236 +13 +35.2430152276776 +23 +-280.294079999999 +33 +2079.8653122236 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +69.0235178451101 +20 +-280.294079999999 +30 +2069.61810878401 +11 +35.243015227678 +21 +-186.862719999999 +31 +2079.8653122236 +12 +69.0235178451106 +22 +-186.862719999999 +32 +2069.61810878401 +13 +69.0235178451106 +23 +-186.862719999999 +33 +2069.61810878401 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +35.243015227678 +20 +-186.862719999999 +30 +2079.8653122236 +11 +69.0235178451101 +21 +-280.294079999999 +31 +2069.61810878401 +12 +35.2430152276776 +22 +-280.294079999999 +32 +2079.8653122236 +13 +35.2430152276776 +23 +-280.294079999999 +33 +2079.8653122236 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +1435.59863370269 +11 +93.5308854426706 +21 +-280.294079999998 +31 +1315.22236639941 +12 +93.530885442671 +22 +-186.862719999998 +32 +1315.22236639941 +13 +93.530885442671 +23 +-186.862719999998 +33 +1315.22236639941 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +93.5308854426706 +20 +-280.294079999998 +30 +1315.22236639941 +11 +221.739809665471 +21 +-186.86272 +31 +1435.59863370269 +12 +221.73980966547 +22 +-280.29408 +32 +1435.59863370269 +13 +221.73980966547 +23 +-280.29408 +33 +1435.59863370269 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332867182503 +20 +-573.785120021053 +30 +164.643953396873 +11 +665.021343123663 +21 +-548.481290386566 +31 +174.800973253262 +12 +684.332852026746 +22 +-548.325028948197 +32 +165.499614915081 +13 +684.332852026746 +23 +-548.325028948197 +33 +165.499614915081 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021343123663 +20 +-548.481290386566 +30 +174.800973253262 +11 +684.332867182503 +21 +-573.785120021053 +31 +164.643953396873 +12 +665.021358751182 +22 +-574.733894284646 +32 +173.91867700208 +13 +665.021358751182 +23 +-574.733894284646 +33 +173.91867700208 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431275216977 +20 +-705.386140960936 +30 +120.066621251022 +11 +454.797689138238 +21 +-686.233268095701 +31 +136.610680705353 +12 +454.797687662105 +22 +-702.539296405596 +32 +117.908241171874 +13 +454.797687662105 +23 +-702.539296405596 +33 +117.908241171874 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797689138238 +20 +-686.233268095701 +30 +136.610680705353 +11 +454.431275216977 +21 +-705.386140960936 +31 +120.066621251022 +12 +454.431276722139 +22 +-688.759443912117 +32 +139.136856521515 +13 +454.431276722139 +23 +-688.759443912117 +33 +139.136856521515 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133302212101 +20 +-683.695422993079 +30 +134.072835602987 +11 +623.546366648706 +21 +-698.908941954744 +31 +115.155805645761 +12 +602.13330076513 +22 +-699.679312774979 +32 +115.739877602763 +13 +602.13330076513 +23 +-699.679312774979 +33 +115.739877602763 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546366648706 +20 +-698.908941954744 +30 +115.155805645761 +11 +602.133302212101 +21 +-683.695422993079 +31 +134.072835602987 +12 +623.546368087822 +22 +-683.011825308716 +32 +133.389237918693 +13 +623.546368087822 +23 +-683.011825308716 +33 +133.389237918693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281993692064 +20 +-604.584376828467 +30 +200.565167970899 +11 +445.721707495526 +21 +-578.184382747044 +31 +207.648051313885 +12 +448.281980096118 +22 +-577.92870502396 +32 +205.148664616833 +13 +448.281980096118 +23 +-577.92870502396 +33 +205.148664616833 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721707495526 +20 +-578.184382747044 +30 +207.648051313885 +11 +448.281993692064 +21 +-604.584376828467 +31 +200.565167970899 +12 +445.721721263973 +22 +-605.178251275471 +32 +203.006401057676 +13 +445.721721263973 +23 +-605.178251275471 +33 +203.006401057676 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602131038669 +20 +-607.239310377804 +30 +211.479085673936 +11 +624.955333552396 +21 +-633.909652359165 +31 +201.384230256964 +12 +624.955322175969 +22 +-606.868815812022 +32 +209.956143300585 +13 +624.955322175969 +23 +-606.868815812022 +33 +209.956143300585 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955333552396 +20 +-633.909652359165 +30 +201.384230256964 +11 +599.602131038669 +21 +-607.239310377804 +31 +211.479085673936 +12 +599.60214250095 +22 +-634.484214570593 +32 +202.842483429208 +13 +599.60214250095 +23 +-634.484214570593 +33 +202.842483429208 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007215701535 +20 +-572.529418663124 +30 +45.597263875134 +11 +787.130189104003 +21 +-589.736090634929 +31 +65.0204702834338 +12 +792.007217306199 +22 +-577.494024343961 +32 +43.2377297488181 +13 +792.007217306199 +23 +-577.494024343961 +33 +43.2377297488181 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130189104003 +20 +-589.736090634929 +30 +65.0204702834338 +11 +792.007215701535 +21 +-572.529418663124 +31 +45.597263875134 +12 +787.130186503031 +22 +-581.689044301674 +32 +68.844999694228 +13 +787.130186503031 +23 +-581.689044301674 +33 +68.844999694228 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130186503031 +20 +-581.689044301674 +30 +68.844999694228 +11 +779.024166993188 +21 +-601.558027793705 +31 +86.0556585976989 +12 +787.130189104003 +22 +-589.736090634929 +32 +65.0204702834338 +13 +787.130189104003 +23 +-589.736090634929 +33 +65.0204702834338 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024166993188 +20 +-601.558027793705 +30 +86.0556585976989 +11 +787.130186503031 +21 +-581.689044301674 +31 +68.844999694228 +12 +779.024163430099 +22 +-590.534326018981 +32 +91.2949066282494 +13 +779.024163430099 +23 +-590.534326018981 +33 +91.2949066282494 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363081916203 +20 +-571.142011532184 +30 +138.806193017976 +11 +732.466031085639 +21 +-547.618544534505 +31 +123.445905477124 +12 +732.466044108445 +22 +-569.495501821011 +32 +122.710665747149 +13 +732.466044108445 +23 +-569.495501821011 +33 +122.710665747149 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466031085639 +20 +-547.618544534505 +30 +123.445905477124 +11 +718.363081916203 +21 +-571.142011532184 +31 +138.806193017976 +12 +718.363068074693 +22 +-547.889717752797 +32 +139.587654990762 +13 +718.363068074693 +23 +-547.889717752797 +33 +139.587654990762 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466044108445 +20 +-569.495501821011 +30 +122.710665747149 +11 +744.275027999012 +21 +-547.318028491407 +31 +105.557438942816 +12 +744.275040114523 +22 +-567.670823535761 +32 +104.873423184286 +13 +744.275040114523 +23 +-567.670823535761 +33 +104.873423184286 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275027999012 +20 +-547.318028491407 +30 +105.557438942816 +11 +732.466044108445 +21 +-569.495501821011 +31 +122.710665747149 +12 +732.466031085639 +22 +-547.618544534505 +32 +123.445905477124 +13 +732.466031085639 +23 +-547.618544534505 +33 +123.445905477124 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275040114523 +20 +-567.670823535761 +30 +104.873423184286 +11 +753.576386337194 +21 +-546.993607173192 +31 +86.2459300397311 +12 +753.576397473233 +22 +-565.700992480648 +32 +85.6172131326287 +13 +753.576397473233 +23 +-565.700992480648 +33 +85.6172131326287 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576386337194 +20 +-546.993607173192 +30 +86.2459300397311 +11 +744.275040114523 +21 +-567.670823535761 +31 +104.873423184286 +12 +744.275027999012 +22 +-547.318028491407 +32 +105.557438942816 +13 +744.275027999012 +23 +-547.318028491407 +33 +105.557438942816 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576397473233 +20 +-565.700992480648 +30 +85.6172131326287 +11 +760.201806938459 +21 +-546.651150672583 +31 +65.8608020071314 +12 +760.201817040574 +22 +-563.621650860098 +32 +65.2904582517363 +13 +760.201817040574 +23 +-563.621650860098 +33 +65.2904582517363 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.201806938459 +20 +-546.651150672583 +30 +65.8608020071314 +11 +753.576397473233 +21 +-565.700992480648 +31 +85.6172131326287 +12 +753.576386337194 +22 +-546.993607173192 +32 +86.2459300397311 +13 +753.576386337194 +23 +-546.993607173192 +33 +86.2459300397311 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007218281129 +20 +-582.09079684746 +30 +40.22369700007 +11 +787.130191214298 +21 +-603.902540579901 +31 +54.279953197846 +12 +792.00721860814 +22 +-586.233981212786 +32 +36.6113938325108 +13 +792.00721860814 +23 +-586.233981212786 +33 +36.6113938325108 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130191214298 +20 +-603.902540579901 +30 +54.279953197846 +11 +792.007218281129 +21 +-582.09079684746 +31 +40.22369700007 +12 +787.130190684252 +22 +-597.186922321698 +32 +60.1350749996264 +13 +787.130190684252 +23 +-597.186922321698 +33 +60.1350749996264 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267778397118 +20 +-703.948312537967 +30 +154.325725145835 +11 +0.016303397997907 +21 +-682.666774623337 +31 +172.880520888553 +12 +429.267776717416 +22 +-682.666673022429 +32 +172.880471218973 +13 +429.267776717416 +23 +-682.666673022429 +33 +172.880471218973 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.016303397997907 +20 +-682.666774623337 +30 +172.880520888553 +11 +429.267778397118 +21 +-703.948312537967 +31 +154.325725145835 +12 +0.0163050776986444 +22 +-703.948386395801 +32 +154.325799003669 +13 +0.0163050776986444 +23 +-703.948386395801 +33 +154.325799003669 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838955869068 +20 +-703.742219504346 +30 +154.119632112235 +11 +429.267776717416 +21 +-682.666673022429 +31 +172.880471218973 +12 +432.838954191733 +22 +-682.490585555484 +32 +172.648217340479 +13 +432.838954191733 +23 +-682.490585555484 +33 +172.648217340479 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267776717416 +20 +-682.666673022429 +30 +172.880471218973 +11 +432.838955869068 +21 +-703.742219504346 +31 +154.119632112235 +12 +429.267778397118 +22 +-703.948312537967 +32 +154.325725145835 +13 +429.267778397118 +23 +-703.948312537967 +33 +154.325725145835 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335627427501 +20 +-703.188137968552 +30 +153.565550576497 +11 +432.838954191733 +21 +-682.490585555484 +31 +172.648217340479 +12 +436.335625756533 +22 +-682.017174593568 +32 +172.023801843262 +13 +436.335625756533 +23 +-682.017174593568 +33 +172.023801843262 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838954191733 +20 +-682.490585555484 +30 +172.648217340479 +11 +436.335627427501 +21 +-703.188137968552 +31 +153.565550576497 +12 +432.838955869068 +22 +-703.742219504346 +32 +154.119632112235 +13 +432.838955869068 +23 +-703.742219504346 +33 +154.119632112235 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090727919739 +20 +-549.540509167097 +30 +237.849027336606 +11 +466.630399083827 +21 +-580.939676928926 +31 +234.582789982374 +12 +466.630380370588 +22 +-549.503386674047 +32 +235.63929931572 +13 +466.630380370588 +23 +-549.503386674047 +33 +235.63929931572 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630399083827 +20 +-580.939676928926 +30 +234.582789982374 +11 +464.090727919739 +21 +-549.540509167097 +31 +237.849027336606 +12 +464.090746745054 +22 +-581.165076540648 +32 +236.786190394896 +13 +464.090746745054 +23 +-581.165076540648 +33 +236.786190394896 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281980096118 +20 +-577.92870502396 +30 +205.148664616833 +11 +445.721690152324 +21 +-549.049610517709 +31 +208.627211339945 +12 +448.281962880048 +22 +-549.007501396503 +32 +206.120647039576 +13 +448.281962880048 +23 +-549.007501396503 +33 +206.120647039576 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721690152324 +20 +-549.049610517709 +30 +208.627211339945 +11 +448.281980096118 +21 +-577.92870502396 +31 +205.148664616833 +12 +445.721707495526 +22 +-578.184382747044 +32 +207.648051313885 +13 +445.721707495526 +23 +-578.184382747044 +33 +207.648051313885 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281980096118 +20 +-577.92870502396 +30 +205.148664616833 +11 +450.471070624061 +21 +-548.959849908146 +31 +203.284158309243 +12 +450.471087696265 +22 +-577.639374325348 +32 +202.320298229792 +13 +450.471087696265 +23 +-577.639374325348 +33 +202.320298229792 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471070624061 +20 +-548.959849908146 +30 +203.284158309243 +11 +448.281980096118 +21 +-577.92870502396 +31 +205.148664616833 +12 +448.281962880048 +22 +-549.007501396503 +32 +206.120647039576 +13 +448.281962880048 +23 +-549.007501396503 +33 +206.120647039576 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471087696265 +20 +-577.639374325348 +30 +202.320298229792 +11 +452.246960920592 +21 +-548.907571431286 +31 +200.172233713933 +12 +452.246977834961 +22 +-577.321948654809 +32 +199.217284688636 +13 +452.246977834961 +23 +-577.321948654809 +33 +199.217284688636 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246960920592 +20 +-548.907571431286 +30 +200.172233713933 +11 +450.471087696265 +21 +-577.639374325348 +31 +202.320298229792 +12 +450.471070624061 +22 +-548.959849908146 +32 +203.284158309243 +13 +450.471070624061 +23 +-548.959849908146 +33 +203.284158309243 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246977834961 +20 +-577.321948654809 +30 +199.217284688636 +11 +453.575519157163 +21 +-548.851670228397 +31 +196.84465290436 +12 +453.575535902759 +22 +-576.982525716554 +32 +195.89923246393 +13 +453.575535902759 +23 +-576.982525716554 +33 +195.89923246393 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575519157163 +20 +-548.851670228397 +30 +196.84465290436 +11 +452.246977834961 +21 +-577.321948654809 +31 +199.217284688636 +12 +452.246960920592 +22 +-548.907571431286 +32 +200.172233713933 +13 +452.246960920592 +23 +-548.907571431286 +33 +200.172233713933 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575535902759 +20 +-576.982525716554 +30 +195.89923246393 +11 +454.431223909685 +21 +-548.793220154026 +31 +193.36533825795 +12 +454.431240478811 +22 +-576.627625779333 +32 +192.429880890276 +13 +454.431240478811 +23 +-576.627625779333 +33 +192.429880890276 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431223909685 +20 +-548.793220154026 +30 +193.36533825795 +11 +453.575535902759 +21 +-576.982525716554 +31 +195.89923246393 +12 +453.575519157163 +22 +-548.851670228397 +32 +196.84465290436 +13 +453.575519157163 +23 +-548.851670228397 +33 +196.84465290436 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.73928877638 +20 +-638.371732863863 +30 +114.456713513376 +11 +736.997696774917 +21 +-665.645302851503 +31 +116.022715463229 +12 +753.739289860341 +22 +-652.105388357143 +32 +102.482800970232 +13 +753.739289860341 +23 +-652.105388357143 +33 +102.482800970232 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997696774917 +20 +-665.645302851503 +30 +116.022715463229 +11 +753.73928877638 +21 +-638.371732863863 +31 +114.456713513376 +12 +736.997695535365 +22 +-649.940320006495 +32 +129.715362054641 +13 +736.997695535365 +23 +-649.940320006495 +33 +129.715362054641 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.10170430358 +20 +-186.86272 +30 +224.014968929072 +11 +472.107150072447 +21 +-549.362133988305 +31 +227.231114817978 +12 +473.10170430358 +22 +-549.308104906071 +32 +224.014968929071 +13 +473.10170430358 +23 +-549.308104906071 +33 +224.014968929071 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107150072447 +20 +-549.362133988305 +30 +227.231114817978 +11 +473.10170430358 +21 +-186.86272 +31 +224.014968929072 +12 +472.107150072447 +22 +-186.86272 +32 +227.231114817978 +13 +472.107150072447 +23 +-186.86272 +33 +227.231114817978 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246991021541 +20 +-603.175034087969 +30 +194.771794391524 +11 +453.575535902759 +21 +-576.982525716554 +31 +195.89923246393 +12 +453.575548860337 +22 +-602.386639077964 +32 +191.530943822063 +13 +453.575548860337 +23 +-602.386639077964 +33 +191.530943822063 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575535902759 +20 +-576.982525716554 +30 +195.89923246393 +11 +452.246991021541 +21 +-603.175034087969 +31 +194.771794391524 +12 +452.246977834961 +22 +-577.321948654809 +32 +199.217284688636 +13 +452.246977834961 +23 +-577.321948654809 +33 +199.217284688636 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335569590044 +20 +-549.135217804424 +30 +213.722949367545 +11 +432.838897838644 +21 +-186.86272 +31 +214.504708726405 +12 +436.335569590044 +22 +-186.86272 +32 +213.722949367545 +13 +436.335569590044 +23 +-186.86272 +33 +213.722949367545 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838897838644 +20 +-186.86272 +30 +214.504708726405 +11 +436.335569590044 +21 +-549.135217804424 +31 +213.722949367545 +12 +432.838897838644 +22 +-549.148351803013 +32 +214.504708726405 +13 +432.838897838644 +23 +-549.148351803013 +33 +214.504708726405 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +793.543158239603 +20 +-559.33210911257 +30 +23.3578380122893 +11 +792.007213497075 +21 +-567.289596867332 +31 +47.2582811561368 +12 +793.520757722035 +22 +-561.475389395115 +32 +23.3578380118087 +13 +793.520757722035 +23 +-561.475389395115 +33 +23.3578380118087 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007213497075 +20 +-567.289596867332 +30 +47.2582811561368 +11 +793.543158239603 +21 +-559.33210911257 +31 +23.3578380122893 +12 +792.007210733943 +22 +-561.872310305502 +32 +48.1897945304127 +13 +792.007210733943 +23 +-561.872310305502 +33 +48.1897945304127 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007210733943 +20 +-561.872310305502 +30 +48.1897945304127 +11 +787.130182929858 +21 +-573.195904769668 +31 +71.5373148305873 +12 +792.007213497075 +22 +-567.289596867332 +32 +47.2582811561368 +13 +792.007213497075 +23 +-567.289596867332 +33 +47.2582811561368 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130182929858 +20 +-573.195904769668 +30 +71.5373148305873 +11 +792.007210733943 +21 +-561.872310305502 +31 +48.1897945304127 +12 +787.130178451143 +22 +-564.415115565838 +32 +73.0471892828083 +13 +787.130178451143 +23 +-564.415115565838 +33 +73.0471892828083 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130178451143 +20 +-564.415115565838 +30 +73.0471892828083 +11 +779.024158535186 +21 +-578.899518233046 +31 +94.9831268667919 +12 +787.130182929858 +22 +-573.195904769668 +32 +71.5373148305873 +13 +787.130182929858 +23 +-573.195904769668 +33 +71.5373148305873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024158535186 +20 +-578.899518233046 +30 +94.9831268667919 +11 +787.130178451143 +21 +-564.415115565838 +31 +73.0471892828083 +12 +779.024152399766 +22 +-566.87065726704 +32 +97.0515138238504 +13 +779.024152399766 +23 +-566.87065726704 +33 +97.0515138238504 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +779.024152399766 +20 +-566.87065726704 +30 +97.0515138238504 +11 +767.82932233817 +21 +-584.301801471681 +31 +117.190255690543 +12 +779.024158535186 +22 +-578.899518233046 +32 +94.9831268667919 +13 +779.024158535186 +23 +-578.899518233046 +33 +94.9831268667919 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.82932233817 +20 +-584.301801471681 +30 +117.190255690543 +11 +779.024152399766 +21 +-566.87065726704 +31 +97.0515138238504 +12 +767.82931463357 +22 +-569.196470349584 +32 +119.787647909415 +13 +767.82931463357 +23 +-569.196470349584 +33 +119.787647909415 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884068906774 +20 +-549.087494127121 +30 +210.885907146698 +11 +673.957344671825 +21 +-577.587813182298 +31 +201.817465714933 +12 +673.957327625231 +22 +-548.951311917762 +32 +202.779879874335 +13 +673.957327625231 +23 +-548.951311917762 +33 +202.779879874335 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957344671825 +20 +-577.587813182298 +30 +201.817465714933 +11 +649.884068906774 +21 +-549.087494127121 +31 +210.885907146698 +12 +649.884086364505 +22 +-578.414663086699 +32 +209.900281060566 +13 +649.884086364505 +23 +-578.414663086699 +33 +209.900281060566 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955290211342 +20 +-549.169431970937 +30 +215.762940693873 +11 +649.884086364505 +21 +-578.414663086699 +31 +209.900281060566 +12 +649.884068906774 +22 +-549.087494127121 +32 +210.885907146698 +13 +649.884068906774 +23 +-549.087494127121 +33 +210.885907146698 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884086364505 +20 +-578.414663086699 +30 +209.900281060566 +11 +624.955290211342 +21 +-549.169431970937 +31 +215.762940693873 +12 +624.955307916438 +22 +-578.912147406784 +32 +214.763348941721 +13 +624.955307916438 +23 +-578.912147406784 +33 +214.763348941721 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +767.829335677824 +20 +-625.572837100386 +30 +97.5753208387769 +11 +753.739289860341 +21 +-652.105388357143 +31 +102.482800970232 +12 +767.829336589646 +22 +-637.125515922866 +32 +87.5029285374647 +13 +767.829336589646 +23 +-637.125515922866 +33 +87.5029285374647 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.739289860341 +20 +-652.105388357143 +30 +102.482800970232 +11 +767.829335677824 +21 +-625.572837100386 +31 +97.5753208387769 +12 +753.73928877638 +22 +-638.371732863863 +32 +114.456713513376 +13 +753.73928877638 +23 +-638.371732863863 +33 +114.456713513376 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690564957562 +20 +-549.114088023756 +30 +212.46522637891 +11 +436.335569590044 +21 +-186.86272 +31 +213.722949367545 +12 +439.690564957562 +22 +-186.86272 +32 +212.46522637891 +13 +439.690564957562 +23 +-186.86272 +33 +212.46522637891 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335569590044 +20 +-186.86272 +30 +213.722949367545 +11 +439.690564957562 +21 +-549.114088023756 +31 +212.46522637891 +12 +436.335569590044 +22 +-549.135217804424 +32 +213.722949367545 +13 +436.335569590044 +23 +-549.135217804424 +33 +213.722949367545 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +793.520757722035 +20 +-561.475389395115 +30 +23.3578380118087 +11 +792.007215701535 +21 +-572.529418663124 +31 +45.597263875134 +12 +793.478047748674 +22 +-563.767069108265 +32 +23.3578380112902 +13 +793.478047748674 +23 +-563.767069108265 +33 +23.3578380112902 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007215701535 +20 +-572.529418663124 +30 +45.597263875134 +11 +793.520757722035 +21 +-561.475389395115 +31 +23.3578380118087 +12 +792.007213497075 +22 +-567.289596867332 +32 +47.2582811561368 +13 +792.007213497075 +23 +-567.289596867332 +33 +47.2582811561368 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +35.2381055728787 +20 +-186.86272 +30 +1394.27106395937 +11 +18.7226850109544 +21 +-186.862719999999 +31 +1315.22236639941 +12 +0.112465277083555 +22 +-186.86272 +32 +1390.81149035281 +13 +0.112465277083555 +23 +-186.86272 +33 +1390.81149035281 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +18.7226850109544 +20 +-186.862719999999 +30 +1315.22236639941 +11 +35.2381055728787 +21 +-186.86272 +31 +1394.27106395937 +12 +56.1267852268127 +22 +-186.862719999999 +32 +1315.22236639941 +13 +56.1267852268127 +23 +-186.862719999999 +33 +1315.22236639941 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +56.1267852268127 +20 +-186.862719999999 +30 +1315.22236639941 +11 +35.2381055728787 +21 +-186.86272 +31 +1394.27106395937 +12 +69.0138872107926 +22 +-186.86272 +32 +1404.51683530547 +13 +69.0138872107926 +23 +-186.86272 +33 +1404.51683530547 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +56.1267852268127 +20 +-186.862719999999 +30 +1315.22236639941 +11 +69.0138872107926 +21 +-186.86272 +31 +1404.51683530547 +12 +56.1267852268127 +22 +-186.862719999999 +32 +268.426375476513 +13 +56.1267852268127 +23 +-186.862719999999 +33 +268.426375476513 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-186.86272 +30 +1753.52666880208 +11 +100.141825844156 +21 +-186.862719999999 +31 +1720.56410006505 +12 +69.3272894690774 +22 +-186.86272 +32 +1737.04848268553 +13 +69.3272894690774 +23 +-186.86272 +33 +1737.04848268553 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.141825844156 +20 +-186.862719999999 +30 +1720.56410006505 +11 +100.155807358117 +21 +-186.86272 +31 +1753.52666880208 +12 +127.425692248039 +22 +-186.862719999999 +32 +1698.17280957558 +13 +127.425692248039 +23 +-186.862719999999 +33 +1698.17280957558 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +127.425692248039 +20 +-186.862719999999 +30 +1698.17280957558 +11 +100.155807358117 +21 +-186.86272 +31 +1753.52666880208 +12 +127.443487339903 +22 +-186.86272 +32 +1775.92108901406 +13 +127.443487339903 +23 +-186.86272 +33 +1775.92108901406 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +127.425692248039 +20 +-186.862719999999 +30 +1698.17280957558 +11 +127.443487339903 +21 +-186.86272 +31 +1775.92108901406 +12 +149.816982737509 +22 +-186.86272 +32 +1670.8889431717 +13 +149.816982737509 +23 +-186.86272 +33 +1670.8889431717 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +149.816982737509 +20 +-186.86272 +30 +1670.8889431717 +11 +127.443487339903 +21 +-186.86272 +31 +1775.92108901406 +12 +149.837907551873 +22 +-186.86272 +32 +1803.20876899584 +13 +149.837907551873 +23 +-186.86272 +33 +1803.20876899584 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +149.816982737509 +20 +-186.86272 +30 +1670.8889431717 +11 +149.837907551873 +21 +-186.86272 +31 +1803.20876899584 +12 +166.455212576235 +22 +-186.86272 +32 +1639.76100453833 +13 +166.455212576235 +23 +-186.86272 +33 +1639.76100453833 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +166.455212576235 +20 +-186.86272 +30 +1639.76100453833 +11 +149.837907551873 +21 +-186.86272 +31 +1803.20876899584 +12 +166.47846298422 +22 +-186.86272 +32 +1834.34105850885 +13 +166.47846298422 +23 +-186.86272 +33 +1834.34105850885 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +166.455212576235 +20 +-186.86272 +30 +1639.76100453833 +11 +166.47846298422 +21 +-186.86272 +31 +1834.34105850885 +12 +176.700983922342 +22 +-186.86272 +32 +1605.98522290042 +13 +176.700983922342 +23 +-186.86272 +33 +1605.98522290042 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +176.700983922342 +20 +-186.86272 +30 +1605.98522290042 +11 +166.47846298422 +21 +-186.86272 +31 +1834.34105850885 +12 +176.725666423807 +22 +-186.86272 +32 +1868.12156112628 +13 +176.725666423807 +23 +-186.86272 +33 +1868.12156112628 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +176.700983922342 +20 +-186.86272 +30 +1605.98522290042 +11 +176.725666423807 +21 +-186.86272 +31 +1868.12156112628 +12 +180.160557528894 +22 +-186.86272 +32 +1570.85958260462 +13 +180.160557528894 +23 +-186.86272 +33 +1570.85958260462 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +180.160557528894 +20 +-186.86272 +30 +1570.85958260462 +11 +176.725666423807 +21 +-186.86272 +31 +1868.12156112628 +12 +180.18572358915 +22 +-186.86272 +32 +1903.25211107687 +13 +180.18572358915 +23 +-186.86272 +33 +1903.25211107687 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +93.652471048303 +20 +-186.862719999999 +30 +2499.20806403607 +11 +46.8683973137003 +21 +-186.862719999999 +31 +2125.50255258978 +12 +46.8683973137003 +22 +-186.862719999999 +32 +2499.20806403607 +13 +46.8683973137003 +23 +-186.862719999999 +33 +2499.20806403607 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +46.8683973137003 +20 +-186.862719999999 +30 +2125.50255258978 +11 +93.652471048303 +21 +-186.862719999999 +31 +2499.20806403607 +12 +69.0235178451106 +22 +-186.862719999999 +32 +2069.61810878401 +13 +69.0235178451106 +23 +-186.862719999999 +33 +2069.61810878401 +70 +15 + 0 +3DFACE + 8 +leg_half +10 +69.0235178451106 +20 +-186.862719999999 +30 +2069.61810878401 +11 +93.652471048303 +21 +-186.862719999999 +31 +2499.20806403607 +12 +100.155807358117 +22 +-186.862719999999 +32 +2052.97755335166 +13 +100.155807358117 +23 +-186.862719999999 +33 +2052.97755335166 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-186.862719999999 +30 +2052.97755335166 +11 +93.652471048303 +21 +-186.862719999999 +31 +2499.20806403607 +12 +123.089851596878 +22 +-186.862719999999 +32 +2224.76609686633 +13 +123.089851596878 +23 +-186.862719999999 +33 +2224.76609686633 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-186.862719999999 +30 +2052.97755335166 +11 +123.089851596878 +21 +-186.862719999999 +31 +2224.76609686633 +12 +127.443487339903 +22 +-186.86272 +32 +2030.58313313969 +13 +127.443487339903 +23 +-186.86272 +33 +2030.58313313969 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +127.443487339903 +20 +-186.86272 +30 +2030.58313313969 +11 +123.089851596878 +21 +-186.862719999999 +31 +2224.76609686633 +12 +221.739809665471 +22 +-186.86272 +32 +2013.4439613934 +13 +221.739809665471 +23 +-186.86272 +33 +2013.4439613934 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +127.443487339903 +20 +-186.86272 +30 +2030.58313313969 +11 +221.739809665471 +21 +-186.86272 +31 +2013.4439613934 +12 +149.837907551873 +22 +-186.86272 +32 +2003.29545315791 +13 +149.837907551873 +23 +-186.86272 +33 +2003.29545315791 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +149.837907551873 +20 +-186.86272 +30 +2003.29545315791 +11 +221.739809665471 +21 +-186.86272 +31 +2013.4439613934 +12 +166.47846298422 +22 +-186.86272 +32 +1972.1631636449 +13 +166.47846298422 +23 +-186.86272 +33 +1972.1631636449 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +166.47846298422 +20 +-186.86272 +30 +1972.1631636449 +11 +221.739809665471 +21 +-186.86272 +31 +2013.4439613934 +12 +176.725666423807 +22 +-186.86272 +32 +1938.38266102747 +13 +176.725666423807 +23 +-186.86272 +33 +1938.38266102747 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +176.725666423807 +20 +-186.86272 +30 +1938.38266102747 +11 +221.739809665471 +21 +-186.86272 +31 +2013.4439613934 +12 +180.18572358915 +22 +-186.86272 +32 +1903.25211107687 +13 +180.18572358915 +23 +-186.86272 +33 +1903.25211107687 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +100.141825844157 +20 +-186.86272 +30 +1421.1550651442 +11 +93.530885442671 +21 +-186.862719999998 +31 +1315.22236639941 +12 +69.0138872107926 +22 +-186.86272 +32 +1404.51683530547 +13 +69.0138872107926 +23 +-186.86272 +33 +1404.51683530547 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +93.530885442671 +20 +-186.862719999998 +30 +1315.22236639941 +11 +100.141825844157 +21 +-186.86272 +31 +1421.1550651442 +12 +221.739809665471 +22 +-186.86272 +32 +1435.59863370269 +13 +221.739809665471 +23 +-186.86272 +33 +1435.59863370269 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +1435.59863370269 +11 +100.141825844157 +21 +-186.86272 +31 +1421.1550651442 +12 +127.42569224804 +22 +-186.86272 +32 +1443.54635563367 +13 +127.42569224804 +23 +-186.86272 +33 +1443.54635563367 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +1435.59863370269 +11 +127.42569224804 +21 +-186.86272 +31 +1443.54635563367 +12 +149.816982737509 +22 +-186.86272 +32 +1470.83022203755 +13 +149.816982737509 +23 +-186.86272 +33 +1470.83022203755 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +1435.59863370269 +11 +149.816982737509 +21 +-186.86272 +31 +1470.83022203755 +12 +166.455212576235 +22 +-186.86272 +32 +1501.95816067091 +13 +166.455212576235 +23 +-186.86272 +33 +1501.95816067091 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +1435.59863370269 +11 +166.455212576235 +21 +-186.86272 +31 +1501.95816067091 +12 +176.700983922342 +22 +-186.86272 +32 +1535.73394230883 +13 +176.700983922342 +23 +-186.86272 +33 +1535.73394230883 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +1435.59863370269 +11 +176.700983922342 +21 +-186.86272 +31 +1535.73394230883 +12 +180.160557528894 +22 +-186.86272 +32 +1570.85958260462 +13 +180.160557528894 +23 +-186.86272 +33 +1570.85958260462 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +1435.59863370269 +11 +180.160557528894 +21 +-186.86272 +31 +1570.85958260462 +12 +180.18572358915 +22 +-186.86272 +32 +1903.25211107687 +13 +180.18572358915 +23 +-186.86272 +33 +1903.25211107687 +70 +15 + 0 +3DFACE + 8 +leg_half +10 +221.739809665471 +20 +-186.86272 +30 +1435.59863370269 +11 +180.18572358915 +21 +-186.86272 +31 +1903.25211107687 +12 +221.739809665471 +22 +-186.86272 +32 +2013.4439613934 +13 +221.739809665471 +23 +-186.86272 +33 +2013.4439613934 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +0.0162469754877819 +20 +-186.86272 +30 +214.795486963908 +11 +93.530885442671 +21 +-186.862719999999 +31 +242.726639240051 +12 +429.26772029492 +22 +-186.86272 +32 +214.795486963908 +13 +429.26772029492 +23 +-186.86272 +33 +214.795486963908 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +93.530885442671 +20 +-186.862719999999 +30 +242.726639240051 +11 +0.0162469754877819 +21 +-186.86272 +31 +214.795486963908 +12 +18.7226850109544 +22 +-186.862719999999 +32 +268.426375476513 +13 +18.7226850109544 +23 +-186.862719999999 +33 +268.426375476513 +70 +15 + 0 +3DFACE + 8 +leg_half +10 +18.7226850109544 +20 +-186.862719999999 +30 +268.426375476513 +11 +0.0162469754877819 +21 +-186.86272 +31 +214.795486963908 +12 +0.112465277083555 +22 +-186.86272 +32 +1390.81149035281 +13 +0.112465277083555 +23 +-186.86272 +33 +1390.81149035281 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +18.7226850109544 +20 +-186.862719999999 +30 +268.426375476513 +11 +0.112465277083555 +21 +-186.86272 +31 +1390.81149035281 +12 +18.7226850109544 +22 +-186.862719999999 +32 +1315.22236639941 +13 +18.7226850109544 +23 +-186.862719999999 +33 +1315.22236639941 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +93.530885442671 +20 +-186.862719999999 +30 +242.726639240051 +11 +18.7226850109544 +21 +-186.862719999999 +31 +268.426375476513 +12 +56.1267852268127 +22 +-186.862719999999 +32 +268.426375476513 +13 +56.1267852268127 +23 +-186.862719999999 +33 +268.426375476513 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +93.530885442671 +20 +-186.862719999999 +30 +242.726639240051 +11 +56.1267852268127 +21 +-186.862719999999 +31 +268.426375476513 +12 +69.0138872107926 +22 +-186.86272 +32 +1404.51683530547 +13 +69.0138872107926 +23 +-186.86272 +33 +1404.51683530547 +70 +15 + 0 +3DFACE + 8 +leg_half +10 +93.530885442671 +20 +-186.862719999999 +30 +242.726639240051 +11 +69.0138872107926 +21 +-186.86272 +31 +1404.51683530547 +12 +93.530885442671 +22 +-186.862719999998 +32 +1315.22236639941 +13 +93.530885442671 +23 +-186.862719999998 +33 +1315.22236639941 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +429.26772029492 +20 +-186.86272 +30 +214.795486963908 +11 +93.530885442671 +21 +-186.862719999999 +31 +242.726639240051 +12 +448.31772029492 +22 +-186.86272 +32 +242.726639240051 +13 +448.31772029492 +23 +-186.86272 +33 +242.726639240051 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +429.26772029492 +20 +-186.86272 +30 +214.795486963908 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +432.838897838644 +22 +-186.86272 +32 +214.504708726405 +13 +432.838897838644 +23 +-186.86272 +33 +214.504708726405 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +432.838897838644 +20 +-186.86272 +30 +214.504708726405 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +436.335569590044 +22 +-186.86272 +32 +213.722949367545 +13 +436.335569590044 +23 +-186.86272 +33 +213.722949367545 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +436.335569590044 +20 +-186.86272 +30 +213.722949367545 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +439.690564957562 +22 +-186.86272 +32 +212.46522637891 +13 +439.690564957562 +23 +-186.86272 +33 +212.46522637891 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +439.690564957562 +20 +-186.86272 +30 +212.46522637891 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +442.839434933817 +22 +-186.86272 +32 +210.755700449054 +13 +442.839434933817 +23 +-186.86272 +33 +210.755700449054 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +442.839434933817 +20 +-186.86272 +30 +210.755700449054 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +445.721690152324 +22 +-186.86272 +32 +208.627211339945 +13 +445.721690152324 +23 +-186.86272 +33 +208.627211339945 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +445.721690152324 +20 +-186.86272 +30 +208.627211339945 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +448.281962880048 +22 +-186.86272 +32 +206.120647039576 +13 +448.281962880048 +23 +-186.86272 +33 +206.120647039576 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +448.281962880048 +20 +-186.86272 +30 +206.120647039576 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +450.471070624061 +22 +-186.86272 +32 +203.284158309244 +13 +450.471070624061 +23 +-186.86272 +33 +203.284158309244 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +450.471070624061 +20 +-186.86272 +30 +203.284158309244 +11 +448.31772029492 +21 +-186.86272 +31 +242.726639240051 +12 +451.683281480069 +22 +-186.86272 +32 +242.650939792116 +13 +451.683281480069 +23 +-186.86272 +33 +242.650939792116 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +450.471070624061 +20 +-186.86272 +30 +203.284158309244 +11 +451.683281480069 +21 +-186.86272 +31 +242.650939792116 +12 +452.246960920592 +22 +-186.86272 +32 +200.172233713933 +13 +452.246960920592 +23 +-186.86272 +33 +200.172233713933 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +452.246960920592 +20 +-186.86272 +30 +200.172233713933 +11 +451.683281480069 +21 +-186.86272 +31 +242.650939792116 +12 +455.00604998394 +22 +-186.86272 +32 +242.110623248711 +13 +455.00604998394 +23 +-186.86272 +33 +242.110623248711 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +452.246960920592 +20 +-186.86272 +30 +200.172233713933 +11 +455.00604998394 +21 +-186.86272 +31 +242.110623248711 +12 +453.575519157163 +22 +-186.86272 +32 +196.84465290436 +13 +453.575519157163 +23 +-186.86272 +33 +196.84465290436 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +453.575519157163 +20 +-186.86272 +30 +196.84465290436 +11 +455.00604998394 +21 +-186.86272 +31 +242.110623248711 +12 +454.431223909685 +22 +-186.86272 +32 +193.36533825795 +13 +454.431223909685 +23 +-186.86272 +33 +193.36533825795 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +454.431223909685 +20 +-186.86272 +30 +193.36533825795 +11 +455.00604998394 +21 +-186.86272 +31 +242.110623248711 +12 +454.797637205561 +22 +-186.86272 +32 +189.801126938625 +13 +454.797637205561 +23 +-186.86272 +33 +189.801126938625 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +454.797637205561 +20 +-186.86272 +30 +189.801126938625 +11 +602.133251163261 +21 +-186.86272 +31 +186.220486963908 +12 +454.66772029492 +22 +-186.86272 +32 +186.220486963908 +13 +454.66772029492 +23 +-186.86272 +33 +186.220486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133251163261 +20 +-186.86272 +30 +186.220486963908 +11 +454.797637205561 +21 +-186.86272 +31 +189.801126938625 +12 +473.71772029492 +22 +-186.86272 +32 +217.326639240051 +13 +473.71772029492 +23 +-186.86272 +33 +217.326639240051 +70 +15 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +454.797637205561 +21 +-186.86272 +31 +189.801126938625 +12 +455.00604998394 +22 +-186.86272 +32 +242.110623248711 +13 +455.00604998394 +23 +-186.86272 +33 +242.110623248711 +70 +15 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +455.00604998394 +21 +-186.86272 +31 +242.110623248711 +12 +458.222195872847 +22 +-186.86272 +32 +241.116069017578 +13 +458.222195872847 +23 +-186.86272 +33 +241.116069017578 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +458.222195872847 +21 +-186.86272 +31 +241.116069017578 +12 +461.269937419119 +22 +-186.86272 +32 +239.686382351025 +13 +461.269937419119 +23 +-186.86272 +33 +239.686382351025 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +461.269937419119 +21 +-186.86272 +31 +239.686382351025 +12 +464.090727919739 +22 +-186.86272 +32 +237.849027336606 +13 +464.090727919739 +23 +-186.86272 +33 +237.849027336606 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +464.090727919739 +21 +-186.86272 +31 +237.849027336606 +12 +466.630380370588 +22 +-186.86272 +32 +235.63929931572 +13 +466.630380370588 +23 +-186.86272 +33 +235.63929931572 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +466.630380370588 +21 +-186.86272 +31 +235.63929931572 +12 +468.840108391474 +22 +-186.86272 +32 +233.09964686487 +13 +468.840108391474 +23 +-186.86272 +33 +233.09964686487 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +468.840108391474 +21 +-186.86272 +31 +233.09964686487 +12 +470.677463405893 +22 +-186.86272 +32 +230.27885636425 +13 +470.677463405893 +23 +-186.86272 +33 +230.27885636425 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +470.677463405893 +21 +-186.86272 +31 +230.27885636425 +12 +472.107150072447 +22 +-186.86272 +32 +227.231114817978 +13 +472.107150072447 +23 +-186.86272 +33 +227.231114817978 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +472.107150072447 +21 +-186.86272 +31 +227.231114817978 +12 +473.10170430358 +22 +-186.86272 +32 +224.014968929072 +13 +473.10170430358 +23 +-186.86272 +33 +224.014968929072 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +473.71772029492 +20 +-186.86272 +30 +217.326639240051 +11 +473.10170430358 +21 +-186.86272 +31 +224.014968929072 +12 +473.642020846985 +22 +-186.86272 +32 +220.692200425201 +13 +473.642020846985 +23 +-186.86272 +33 +220.692200425201 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133251163261 +20 +-186.86272 +30 +186.220486963908 +11 +473.71772029492 +21 +-186.86272 +31 +217.326639240051 +12 +599.602098887118 +22 +-186.86272 +32 +217.326639240051 +13 +599.602098887118 +23 +-186.86272 +33 +217.326639240051 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +602.133251163261 +20 +-186.86272 +30 +186.220486963908 +11 +599.602098887118 +21 +-186.86272 +31 +217.326639240051 +12 +624.955290211342 +22 +-186.86272 +32 +215.762940693873 +13 +624.955290211342 +23 +-186.86272 +33 +215.762940693873 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +602.133251163261 +20 +-186.86272 +30 +186.220486963908 +11 +624.955290211342 +21 +-186.86272 +31 +215.762940693873 +12 +623.546317277054 +22 +-186.86272 +32 +185.255996085023 +13 +623.546317277054 +23 +-186.86272 +33 +185.255996085023 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +623.546317277054 +20 +-186.86272 +30 +185.255996085023 +11 +624.955290211342 +21 +-186.86272 +31 +215.762940693873 +12 +644.636215091063 +22 +-186.86272 +32 +181.426393854527 +13 +644.636215091063 +23 +-186.86272 +33 +181.426393854527 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +644.636215091063 +20 +-186.86272 +30 +181.426393854527 +11 +624.955290211342 +21 +-186.86272 +31 +215.762940693873 +12 +649.884068906774 +22 +-186.86272 +32 +210.885907146698 +13 +649.884068906774 +23 +-186.86272 +33 +210.885907146698 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +644.636215091063 +20 +-186.86272 +30 +181.426393854527 +11 +649.884068906774 +21 +-186.86272 +31 +210.885907146698 +12 +665.021343123663 +22 +-186.86272 +32 +174.800973253263 +13 +665.021343123663 +23 +-186.86272 +33 +174.800973253263 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +665.021343123663 +20 +-186.86272 +30 +174.800973253263 +11 +649.884068906774 +21 +-186.86272 +31 +210.885907146698 +12 +673.957327625231 +22 +-186.86272 +32 +202.779879874335 +13 +673.957327625231 +23 +-186.86272 +33 +202.779879874335 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +665.021343123663 +20 +-186.86272 +30 +174.800973253263 +11 +673.957327625231 +21 +-186.86272 +31 +202.779879874335 +12 +684.332852026746 +22 +-186.86272 +32 +165.499614915081 +13 +684.332852026746 +23 +-186.86272 +33 +165.499614915081 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +684.332852026746 +20 +-186.86272 +30 +165.499614915081 +11 +673.957327625231 +21 +-186.86272 +31 +202.779879874335 +12 +696.758754005207 +22 +-186.86272 +32 +191.585040951661 +13 +696.758754005207 +23 +-186.86272 +33 +191.585040951661 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +684.332852026746 +20 +-186.86272 +30 +165.499614915081 +11 +696.758754005207 +21 +-186.86272 +31 +191.585040951661 +12 +702.221318561055 +22 +-186.86272 +32 +153.690618001708 +13 +702.221318561055 +23 +-186.86272 +33 +153.690618001708 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +702.221318561055 +20 +-186.86272 +30 +153.690618001708 +11 +696.758754005207 +21 +-186.86272 +31 +191.585040951661 +12 +717.894030194972 +22 +-186.86272 +32 +177.494989005399 +13 +717.894030194972 +23 +-186.86272 +33 +177.494989005399 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +702.221318561055 +20 +-186.86272 +30 +153.690618001708 +11 +717.894030194972 +21 +-186.86272 +31 +177.494989005399 +12 +718.363068074693 +22 +-186.86272 +32 +139.587654990762 +13 +718.363068074693 +23 +-186.86272 +33 +139.587654990762 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +718.363068074693 +20 +-186.86272 +30 +139.587654990762 +11 +717.894030194972 +21 +-186.86272 +31 +177.494989005399 +12 +736.99765201229 +22 +-186.86272 +32 +160.753391204502 +13 +736.99765201229 +23 +-186.86272 +33 +160.753391204502 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +718.363068074693 +20 +-186.86272 +30 +139.587654990762 +11 +736.99765201229 +21 +-186.86272 +31 +160.753391204502 +12 +732.466031085639 +22 +-186.86272 +32 +123.445905477124 +13 +732.466031085639 +23 +-186.86272 +33 +123.445905477124 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +732.466031085639 +20 +-186.86272 +30 +123.445905477124 +11 +736.99765201229 +21 +-186.86272 +31 +160.753391204502 +12 +744.275027999012 +22 +-186.86272 +32 +105.557438942816 +13 +744.275027999012 +23 +-186.86272 +33 +105.557438942816 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +744.275027999012 +20 +-186.86272 +30 +105.557438942816 +11 +736.99765201229 +21 +-186.86272 +31 +160.753391204502 +12 +753.739249813186 +22 +-186.86272 +32 +141.649769387185 +13 +753.739249813186 +23 +-186.86272 +33 +141.649769387185 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +744.275027999012 +20 +-186.86272 +30 +105.557438942816 +11 +753.739249813186 +21 +-186.86272 +31 +141.649769387185 +12 +753.576386337194 +22 +-186.86272 +32 +86.2459300397311 +13 +753.576386337194 +23 +-186.86272 +33 +86.2459300397311 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +753.576386337194 +20 +-186.86272 +30 +86.2459300397311 +11 +753.739249813186 +21 +-186.86272 +31 +141.649769387185 +12 +760.201806938459 +22 +-186.86272 +32 +65.8608020071314 +13 +760.201806938459 +23 +-186.86272 +33 +65.8608020071314 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +760.201806938459 +20 +-186.86272 +30 +65.8608020071314 +11 +753.739249813186 +21 +-186.86272 +31 +141.649769387185 +12 +767.829301759449 +22 +-186.86272 +32 +120.51449319742 +13 +767.829301759449 +23 +-186.86272 +33 +120.51449319742 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +760.201806938459 +20 +-186.86272 +30 +65.8608020071314 +11 +767.829301759449 +21 +-186.86272 +31 +120.51449319742 +12 +764.031409168954 +22 +-186.86272 +32 +44.7709041931231 +13 +764.031409168954 +23 +-186.86272 +33 +44.7709041931231 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.031409168954 +20 +-186.86272 +30 +44.7709041931231 +11 +767.829301759449 +21 +-186.86272 +31 +120.51449319742 +12 +764.995900047839 +22 +-186.86272 +32 +23.3578380793295 +13 +764.995900047839 +23 +-186.86272 +33 +23.3578380793295 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +764.995900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +767.829301759449 +21 +-186.86272 +31 +120.51449319742 +12 +793.570900047839 +22 +-186.86272 +32 +23.3578380793295 +13 +793.570900047839 +23 +-186.86272 +33 +23.3578380793295 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +793.570900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +767.829301759449 +21 +-186.86272 +31 +120.51449319742 +12 +779.024140682123 +22 +-186.86272 +32 +97.713066817443 +13 +779.024140682123 +23 +-186.86272 +33 +97.713066817443 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +793.570900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +779.024140682123 +21 +-186.86272 +31 +97.713066817443 +12 +787.130167954486 +22 +-186.86272 +32 +73.639808098986 +13 +787.130167954486 +23 +-186.86272 +33 +73.639808098986 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +793.570900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +787.130167954486 +21 +-186.86272 +31 +73.639808098986 +12 +792.00720150166 +22 +-186.86272 +32 +48.7110294035543 +13 +792.00720150166 +23 +-186.86272 +33 +48.7110294035543 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.179983602711646 +20 +-186.862719999999 +30 +2125.50255258978 +11 +35.243015227678 +21 +-186.862719999999 +31 +2079.8653122236 +12 +0.112465277083556 +22 +-186.862719999999 +32 +2083.32536938894 +13 +0.112465277083556 +23 +-186.862719999999 +33 +2083.32536938894 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +35.243015227678 +20 +-186.862719999999 +30 +2079.8653122236 +11 +0.179983602711646 +21 +-186.862719999999 +31 +2125.50255258978 +12 +46.8683973137003 +22 +-186.862719999999 +32 +2125.50255258978 +13 +46.8683973137003 +23 +-186.862719999999 +33 +2125.50255258978 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +35.243015227678 +20 +-186.862719999999 +30 +2079.8653122236 +11 +46.8683973137003 +21 +-186.862719999999 +31 +2125.50255258978 +12 +69.0235178451106 +22 +-186.862719999999 +32 +2069.61810878401 +13 +69.0235178451106 +23 +-186.862719999999 +33 +2069.61810878401 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +166.478462984219 +20 +-280.29408 +30 +1972.1631636449 +11 +176.725666423807 +21 +-186.86272 +31 +1938.38266102747 +12 +176.725666423806 +22 +-280.29408 +32 +1938.38266102747 +13 +176.725666423806 +23 +-280.29408 +33 +1938.38266102747 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +176.725666423807 +20 +-186.86272 +30 +1938.38266102747 +11 +166.478462984219 +21 +-280.29408 +31 +1972.1631636449 +12 +166.47846298422 +22 +-186.86272 +32 +1972.1631636449 +13 +166.47846298422 +23 +-186.86272 +33 +1972.1631636449 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.112465277083136 +20 +-280.29408 +30 +1390.81149035281 +11 +35.2381055728787 +21 +-186.86272 +31 +1394.27106395937 +12 +0.112465277083555 +22 +-186.86272 +32 +1390.81149035281 +13 +0.112465277083555 +23 +-186.86272 +33 +1390.81149035281 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +35.2381055728787 +20 +-186.86272 +30 +1394.27106395937 +11 +0.112465277083136 +21 +-280.29408 +31 +1390.81149035281 +12 +35.2381055728783 +22 +-280.29408 +32 +1394.27106395937 +13 +35.2381055728783 +23 +-280.29408 +33 +1394.27106395937 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +69.3272894690769 +20 +-280.29408 +30 +1737.04848268553 +11 +100.155807358117 +21 +-186.86272 +31 +1753.52666880208 +12 +69.3272894690774 +22 +-186.86272 +32 +1737.04848268553 +13 +69.3272894690774 +23 +-186.86272 +33 +1737.04848268553 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.155807358117 +20 +-186.86272 +30 +1753.52666880208 +11 +69.3272894690769 +21 +-280.29408 +31 +1737.04848268553 +12 +100.155807358117 +22 +-280.29408 +32 +1753.52666880208 +13 +100.155807358117 +23 +-280.29408 +33 +1753.52666880208 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +100.141825844156 +20 +-280.29408 +30 +1720.56410006505 +11 +69.3272894690774 +21 +-186.86272 +31 +1737.04848268553 +12 +100.141825844156 +22 +-186.862719999999 +32 +1720.56410006505 +13 +100.141825844156 +23 +-186.862719999999 +33 +1720.56410006505 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +69.3272894690774 +20 +-186.86272 +30 +1737.04848268553 +11 +100.141825844156 +21 +-280.29408 +31 +1720.56410006505 +12 +69.3272894690769 +22 +-280.29408 +32 +1737.04848268553 +13 +69.3272894690769 +23 +-280.29408 +33 +1737.04848268553 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +180.185723589149 +20 +-280.29408 +30 +1903.25211107687 +11 +176.725666423807 +21 +-186.86272 +31 +1868.12156112628 +12 +176.725666423806 +22 +-280.29408 +32 +1868.12156112628 +13 +176.725666423806 +23 +-280.29408 +33 +1868.12156112628 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +176.725666423807 +20 +-186.86272 +30 +1868.12156112628 +11 +180.185723589149 +21 +-280.29408 +31 +1903.25211107687 +12 +180.18572358915 +22 +-186.86272 +32 +1903.25211107687 +13 +180.18572358915 +23 +-186.86272 +33 +1903.25211107687 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +176.725666423806 +20 +-280.29408 +30 +1868.12156112628 +11 +166.47846298422 +21 +-186.86272 +31 +1834.34105850885 +12 +166.478462984219 +22 +-280.29408 +32 +1834.34105850885 +13 +166.478462984219 +23 +-280.29408 +33 +1834.34105850885 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +166.47846298422 +20 +-186.86272 +30 +1834.34105850885 +11 +176.725666423806 +21 +-280.29408 +31 +1868.12156112628 +12 +176.725666423807 +22 +-186.86272 +32 +1868.12156112628 +13 +176.725666423807 +23 +-186.86272 +33 +1868.12156112628 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +166.478462984219 +20 +-280.29408 +30 +1834.34105850885 +11 +149.837907551873 +21 +-186.86272 +31 +1803.20876899584 +12 +149.837907551873 +22 +-280.29408 +32 +1803.20876899584 +13 +149.837907551873 +23 +-280.29408 +33 +1803.20876899584 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +149.837907551873 +20 +-186.86272 +30 +1803.20876899584 +11 +166.478462984219 +21 +-280.29408 +31 +1834.34105850885 +12 +166.47846298422 +22 +-186.86272 +32 +1834.34105850885 +13 +166.47846298422 +23 +-186.86272 +33 +1834.34105850885 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282012434797 +20 +-654.795098868987 +30 +180.78210913444 +11 +450.471111788281 +21 +-629.324619346527 +31 +189.746945529741 +12 +450.471119570638 +22 +-653.402150740311 +32 +178.303588160926 +13 +450.471119570638 +23 +-653.402150740311 +33 +178.303588160926 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471111788281 +20 +-629.324619346527 +30 +189.746945529741 +11 +448.282012434797 +21 +-654.795098868987 +31 +180.78210913444 +12 +448.282004539076 +22 +-630.366836092636 +32 +192.392159030223 +13 +448.282004539076 +23 +-630.366836092636 +33 +192.392159030223 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +649.884086364505 +20 +-759.522868440055 +30 +28.7920756889693 +11 +624.955322175969 +21 +-759.578730682939 +31 +57.2462284142879 +12 +624.955307916438 +22 +-764.38593632126 +32 +29.2895600085649 +13 +624.955307916438 +23 +-764.38593632126 +33 +29.2895600085649 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +624.955322175969 +20 +-759.578730682939 +30 +57.2462284142879 +11 +649.884086364505 +21 +-759.522868440055 +31 +28.7920756889693 +12 +649.884100288402 +22 +-754.828812255533 +32 +56.0907148781112 +13 +649.884100288402 +23 +-754.828812255533 +33 +56.0907148781112 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281962880048 +20 +-549.007501396503 +30 +206.120647039576 +11 +450.471070624061 +21 +-186.86272 +31 +203.284158309244 +12 +450.471070624061 +22 +-548.959849908146 +32 +203.284158309243 +13 +450.471070624061 +23 +-548.959849908146 +33 +203.284158309243 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471070624061 +20 +-186.86272 +30 +203.284158309244 +11 +448.281962880048 +21 +-549.007501396503 +31 +206.120647039576 +12 +448.281962880048 +22 +-186.86272 +32 +206.120647039576 +13 +448.281962880048 +23 +-186.86272 +33 +206.120647039576 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332852026746 +20 +-548.325028948197 +30 +165.499614915081 +11 +665.021343123663 +21 +-186.86272 +31 +174.800973253263 +12 +684.332852026746 +22 +-186.86272 +32 +165.499614915081 +13 +684.332852026746 +23 +-186.86272 +33 +165.499614915081 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021343123663 +20 +-186.86272 +30 +174.800973253263 +11 +684.332852026746 +21 +-548.325028948197 +31 +165.499614915081 +12 +665.021343123663 +22 +-548.481290386566 +32 +174.800973253262 +13 +665.021343123663 +23 +-548.481290386566 +33 +174.800973253262 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +599.602116671527 +20 +-765.945156978237 +30 +29.4490754688794 +11 +473.717752446486 +21 +-761.101673808691 +31 +57.6167818413605 +12 +473.717738079349 +22 +-765.945155901366 +32 +29.449144968378 +13 +473.717738079349 +23 +-765.945155901366 +33 +29.449144968378 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.717752446486 +20 +-761.101673808691 +30 +57.6167818413605 +11 +599.602116671527 +21 +-765.945156978237 +31 +29.4490754688794 +12 +599.602131038669 +22 +-761.101673056328 +32 +57.616722979916 +13 +599.602131038669 +23 +-761.101673056328 +33 +57.616722979916 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363098127435 +20 +-605.920400916633 +30 +130.345732863609 +11 +732.466052014781 +21 +-584.996349297051 +31 +120.045263691758 +12 +732.466058322552 +22 +-599.989404866694 +32 +115.292482897529 +13 +732.466058322552 +23 +-599.989404866694 +33 +115.292482897529 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466052014781 +20 +-584.996349297051 +30 +120.045263691758 +11 +718.363098127435 +21 +-605.920400916633 +31 +130.345732863609 +12 +718.363090933403 +22 +-588.820775333035 +32 +135.766293848309 +13 +718.363090933403 +23 +-588.820775333035 +33 +135.766293848309 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +46.8683973136999 +20 +-280.294079999999 +30 +2499.20806403607 +11 +46.8683973137003 +21 +-186.862719999999 +31 +2125.50255258978 +12 +46.8683973136999 +22 +-280.294079999999 +32 +2125.50255258978 +13 +46.8683973136999 +23 +-280.294079999999 +33 +2125.50255258978 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +46.8683973137003 +20 +-186.862719999999 +30 +2125.50255258978 +11 +46.8683973136999 +21 +-280.294079999999 +31 +2499.20806403607 +12 +46.8683973137003 +22 +-186.862719999999 +32 +2499.20806403607 +13 +46.8683973137003 +23 +-186.862719999999 +33 +2499.20806403607 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +673.957327625231 +20 +-548.951311917762 +30 +202.779879874335 +11 +696.758770484001 +21 +-576.445896872616 +31 +190.654683562835 +12 +696.758754005207 +22 +-548.76324041817 +32 +191.585040951661 +13 +696.758754005207 +23 +-548.76324041817 +33 +191.585040951661 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +696.758770484001 +20 +-576.445896872616 +30 +190.654683562835 +11 +673.957327625231 +21 +-548.951311917762 +31 +202.779879874335 +12 +673.957344671825 +22 +-577.587813182298 +32 +201.817465714933 +13 +673.957344671825 +23 +-577.587813182298 +33 +201.817465714933 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335625756533 +20 +-682.017174593568 +30 +172.023801843262 +11 +432.838949191021 +21 +-658.912362146436 +31 +188.108094342889 +12 +436.335620774804 +22 +-658.528453423172 +32 +187.424993609851 +13 +436.335620774804 +23 +-658.528453423172 +33 +187.424993609851 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838949191021 +20 +-658.912362146436 +30 +188.108094342889 +11 +436.335625756533 +21 +-682.017174593568 +31 +172.023801843262 +12 +432.838954191733 +22 +-682.490585555484 +32 +172.648217340479 +13 +432.838954191733 +23 +-682.490585555484 +33 +172.648217340479 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +458.222209793371 +20 +-789.952733412824 +30 +23.3578378560715 +11 +455.006069025402 +21 +-790.658170470477 +31 +31.9771884161607 +12 +455.006063894518 +22 +-790.94784918938 +32 +23.3578378548415 +13 +455.006063894518 +23 +-790.94784918938 +33 +23.3578378548415 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006069025402 +20 +-790.658170470477 +30 +31.9771884161607 +11 +458.222209793371 +21 +-789.952733412824 +31 +23.3578378560715 +12 +458.222214863865 +22 +-789.666464186592 +32 +31.8757394304439 +13 +458.222214863865 +23 +-789.666464186592 +33 +31.8757394304439 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.995900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +847.545902396365 +21 +56.1856515497976 +31 +23.3578380793863 +12 +806.270901222105 +22 +56.1856515497994 +32 +23.3578380793657 +13 +806.270901222105 +23 +56.1856515497994 +33 +23.3578380793657 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +847.545902396365 +20 +56.1856515497976 +30 +23.3578380793863 +11 +764.995900047839 +21 +-186.86272 +31 +23.3578380793295 +12 +793.570900047839 +22 +-186.86272 +32 +23.3578380793295 +13 +793.570900047839 +23 +-186.86272 +33 +23.3578380793295 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +793.570900047839 +20 +-186.86272 +30 +23.3578380793295 +11 +847.54590239636 +21 +-563.749226612819 +31 +23.3578380793719 +12 +847.545902396365 +22 +56.1856515497976 +32 +23.3578380793863 +13 +847.545902396365 +23 +56.1856515497976 +33 +23.3578380793863 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +847.54590239636 +20 +-563.749226612819 +30 +23.3578380793719 +11 +793.570900047839 +21 +-186.86272 +31 +23.3578380793295 +12 +793.570900047839 +22 +-545.937123520845 +32 +23.3578380793295 +13 +793.570900047839 +23 +-545.937123520845 +33 +23.3578380793295 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +847.54590239636 +20 +-563.749226612819 +30 +23.3578380793719 +11 +793.570900047839 +21 +-545.937123520845 +31 +23.3578380793295 +12 +793.543158239603 +22 +-559.33210911257 +32 +23.3578380122893 +13 +793.543158239603 +23 +-559.33210911257 +33 +23.3578380122893 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +847.54590239636 +20 +-563.749226612819 +30 +23.3578380793719 +11 +793.543158239603 +21 +-559.33210911257 +31 +23.3578380122893 +12 +793.520757722035 +22 +-561.475389395115 +32 +23.3578380118087 +13 +793.520757722035 +23 +-561.475389395115 +33 +23.3578380118087 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +847.54590239636 +20 +-563.749226612819 +30 +23.3578380793719 +11 +793.520757722035 +21 +-561.475389395115 +31 +23.3578380118087 +12 +793.478047748674 +22 +-563.767069108265 +32 +23.3578380112902 +13 +793.478047748674 +23 +-563.767069108265 +33 +23.3578380112902 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +847.54590239636 +20 +-563.749226612819 +30 +23.3578380793719 +11 +793.478047748674 +21 +-563.767069108265 +31 +23.3578380112902 +12 +843.130722681617 +22 +-608.452917091224 +32 +23.3578380793307 +13 +843.130722681617 +23 +-608.452917091224 +33 +23.3578380793307 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +793.478047748674 +21 +-563.767069108265 +31 +23.3578380112902 +12 +793.410423174187 +22 +-566.321374409616 +32 +23.357838010706 +13 +793.410423174187 +23 +-566.321374409616 +33 +23.357838010706 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +793.410423174187 +21 +-566.321374409616 +31 +23.357838010706 +12 +793.309565768095 +22 +-569.303680096418 +32 +23.3578380100164 +13 +793.309565768095 +23 +-569.303680096418 +33 +23.3578380100164 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +793.309565768095 +21 +-569.303680096418 +31 +23.3578380100164 +12 +793.160541596036 +22 +-572.980425388099 +32 +23.3578380091579 +13 +793.160541596036 +23 +-572.980425388099 +33 +23.3578380091579 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +793.160541596036 +21 +-572.980425388099 +31 +23.3578380091579 +12 +792.935095112731 +22 +-577.829952364284 +32 +23.3578380080173 +13 +792.935095112731 +23 +-577.829952364284 +33 +23.3578380080173 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +792.935095112731 +21 +-577.829952364284 +31 +23.3578380080173 +12 +792.574093434967 +22 +-584.829110641297 +32 +23.3578380063606 +13 +792.574093434967 +23 +-584.829110641297 +33 +23.3578380063606 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +792.574093434967 +21 +-584.829110641297 +31 +23.3578380063606 +12 +792.00721584731 +22 +-595.005500745675 +32 +23.3578380039372 +13 +792.00721584731 +23 +-595.005500745675 +33 +23.3578380039372 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +792.00721584731 +21 +-595.005500745675 +31 +23.3578380039372 +12 +791.767077835926 +22 +-596.364536149864 +32 +23.3578380035618 +13 +791.767077835926 +23 +-596.364536149864 +33 +23.3578380035618 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +791.767077835926 +21 +-596.364536149864 +31 +23.3578380035618 +12 +787.308111270966 +22 +-620.27413204142 +32 +23.3578379968868 +13 +787.308111270966 +23 +-620.27413204142 +33 +23.3578379968868 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +843.130722681617 +20 +-608.452917091224 +30 +23.3578380793307 +11 +787.308111270966 +21 +-620.27413204142 +31 +23.3578379968868 +12 +838.782876772251 +22 +-630.31101453706 +32 +23.3578380792528 +13 +838.782876772251 +23 +-630.31101453706 +33 +23.3578380792528 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +838.782876772251 +20 +-630.31101453706 +30 +23.3578380792528 +11 +787.308111270966 +21 +-620.27413204142 +31 +23.3578379968868 +12 +787.130182819951 +22 +-621.196954326058 +32 +23.3578379966277 +13 +787.130182819951 +23 +-621.196954326058 +33 +23.3578379966277 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +838.782876772251 +20 +-630.31101453706 +30 +23.3578380792528 +11 +787.130182819951 +21 +-621.196954326058 +31 +23.3578379966277 +12 +779.024155516104 +22 +-645.623514226953 +32 +23.3578379886926 +13 +779.024155516104 +23 +-645.623514226953 +33 +23.3578379886926 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +838.782876772251 +20 +-630.31101453706 +30 +23.3578380792528 +11 +779.024155516104 +21 +-645.623514226953 +31 +23.3578379886926 +12 +827.96962116995 +22 +-662.165838331311 +32 +23.3578380792096 +13 +827.96962116995 +23 +-662.165838331311 +33 +23.3578380792096 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +827.96962116995 +20 +-662.165838331311 +30 +23.3578380792096 +11 +779.024155516104 +21 +-645.623514226953 +31 +23.3578379886926 +12 +767.829316563608 +22 +-668.759576574313 +32 +23.3578379800722 +13 +767.829316563608 +23 +-668.759576574313 +33 +23.3578379800722 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +827.96962116995 +20 +-662.165838331311 +30 +23.3578380792096 +11 +767.829316563608 +21 +-668.759576574313 +31 +23.3578379800722 +12 +813.090985614623 +22 +-692.336726612819 +32 +23.3578380791782 +13 +813.090985614623 +23 +-692.336726612819 +33 +23.3578380791782 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +813.090985614623 +20 +-692.336726612819 +30 +23.3578380791782 +11 +767.829316563608 +21 +-668.759576574313 +31 +23.3578379800722 +12 +753.739264589701 +22 +-690.205036468984 +32 +23.3578379709152 +13 +753.739264589701 +23 +-690.205036468984 +33 +23.3578379709152 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +813.090985614623 +20 +-692.336726612819 +30 +23.3578380791782 +11 +753.739264589701 +21 +-690.205036468984 +31 +23.3578379709152 +12 +739.751559375878 +22 +-706.400475394532 +32 +23.357837962948 +13 +739.751559375878 +23 +-706.400475394532 +33 +23.357837962948 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +813.090985614623 +20 +-692.336726612819 +30 +23.3578380791782 +11 +739.751559375878 +21 +-706.400475394532 +31 +23.357837962948 +12 +794.401547685759 +22 +-720.307447118137 +32 +23.3578380791593 +13 +794.401547685759 +23 +-720.307447118137 +33 +23.3578380791593 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +794.401547685759 +20 +-720.307447118137 +30 +23.3578380791593 +11 +739.751559375878 +21 +-706.400475394532 +31 +23.357837962948 +12 +736.997666736503 +22 +-709.544681018119 +32 +23.3578379613892 +13 +736.997666736503 +23 +-709.544681018119 +33 +23.3578379613892 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +794.401547685759 +20 +-720.307447118137 +30 +23.3578380791593 +11 +736.997666736503 +21 +-709.544681018119 +31 +23.3578379613892 +12 +717.894044751764 +22 +-726.295731112839 +32 +23.3578379516926 +13 +717.894044751764 +23 +-726.295731112839 +33 +23.3578379516926 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +794.401547685759 +20 +-720.307447118137 +30 +23.3578380791593 +11 +717.894044751764 +21 +-726.295731112839 +31 +23.3578379516926 +12 +772.221088848011 +22 +-745.599413064469 +32 +23.3578380791531 +13 +772.221088848011 +23 +-745.599413064469 +33 +23.3578380791531 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +772.221088848011 +20 +-745.599413064469 +30 +23.3578380791531 +11 +717.894044751764 +21 +-726.295731112839 +31 +23.3578379516926 +12 +696.758768421093 +22 +-740.393738342711 +32 +23.357837941943 +13 +696.758768421093 +23 +-740.393738342711 +33 +23.357837941943 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +772.221088848011 +20 +-745.599413064469 +30 +23.3578380791531 +11 +696.758768421093 +21 +-740.393738342711 +31 +23.357837941943 +12 +673.957341929162 +22 +-751.594897963598 +32 +23.3578379323091 +13 +673.957341929162 +23 +-751.594897963598 +33 +23.3578379323091 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +772.221088848011 +20 +-745.599413064469 +30 +23.3578380791531 +11 +673.957341929162 +21 +-751.594897963598 +31 +23.3578379323091 +12 +746.929122901678 +22 +-767.779871902217 +32 +23.3578380791593 +13 +746.929122901678 +23 +-767.779871902217 +33 +23.3578380791593 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +746.929122901678 +20 +-767.779871902217 +30 +23.3578380791593 +11 +673.957341929162 +21 +-751.594897963598 +31 +23.3578379323091 +12 +649.884083129639 +22 +-759.7055020414 +32 +23.3578379229566 +13 +649.884083129639 +23 +-759.7055020414 +33 +23.3578379229566 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +746.929122901678 +20 +-767.779871902217 +30 +23.3578380791593 +11 +649.884083129639 +21 +-759.7055020414 +31 +23.3578379229566 +12 +624.955304385432 +22 +-764.585289351978 +32 +23.3578379140486 +13 +624.955304385432 +23 +-764.585289351978 +33 +23.3578379140486 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +746.929122901678 +20 +-767.779871902217 +30 +23.3578380791593 +11 +624.955304385432 +21 +-764.585289351978 +31 +23.3578379140486 +12 +599.602113045565 +22 +-766.149870997149 +32 +23.3578379057383 +13 +599.602113045565 +23 +-766.149870997149 +33 +23.3578379057383 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +746.929122901678 +20 +-767.779871902217 +30 +23.3578380791593 +11 +599.602113045565 +21 +-766.149870997149 +31 +23.3578379057383 +12 +473.717734453346 +22 +-766.149872257343 +32 +23.3578378661905 +13 +473.717734453346 +23 +-766.149872257343 +33 +23.3578378661905 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +746.929122901678 +20 +-767.779871902217 +30 +23.3578380791593 +11 +473.717734453346 +21 +-766.149872257343 +31 +23.3578378661905 +12 +473.642034971754 +22 +-769.517333598178 +32 +23.3578378654237 +13 +473.642034971754 +23 +-769.517333598178 +33 +23.3578378654237 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +746.929122901678 +20 +-767.779871902217 +30 +23.3578380791593 +11 +473.642034971754 +21 +-769.517333598178 +31 +23.3578378654237 +12 +718.95840239636 +22 +-786.469309831082 +32 +23.3578380791782 +13 +718.95840239636 +23 +-786.469309831082 +33 +23.3578380791782 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +718.95840239636 +20 +-786.469309831082 +30 +23.3578380791782 +11 +473.642034971754 +21 +-769.517333598178 +31 +23.3578378654237 +12 +473.101718395121 +22 +-772.841978102158 +32 +23.3578378645206 +13 +473.101718395121 +23 +-772.841978102158 +33 +23.3578378645206 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +718.95840239636 +20 +-786.469309831082 +30 +23.3578380791782 +11 +473.101718395121 +21 +-772.841978102158 +31 +23.3578378645206 +12 +472.107164131826 +22 +-776.05993979789 +32 +23.3578378634987 +13 +472.107164131826 +23 +-776.05993979789 +33 +23.3578378634987 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +718.95840239636 +20 +-786.469309831082 +30 +23.3578380791782 +11 +472.107164131826 +21 +-776.05993979789 +31 +23.3578378634987 +12 +470.677477434794 +22 +-779.109402076299 +32 +23.3578378623763 +13 +470.677477434794 +23 +-779.109402076299 +33 +23.3578378623763 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +718.95840239636 +20 +-786.469309831082 +30 +23.3578380791782 +11 +470.677477434794 +21 +-779.109402076299 +31 +23.3578378623763 +12 +468.840122392167 +22 +-781.931785179335 +32 +23.3578378611765 +13 +468.840122392167 +23 +-781.931785179335 +33 +23.3578378611765 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +718.95840239636 +20 +-786.469309831082 +30 +23.3578380791782 +11 +468.840122392167 +21 +-781.931785179335 +31 +23.3578378611765 +12 +466.630394345883 +22 +-784.472871509203 +32 +23.3578378599218 +13 +466.630394345883 +23 +-784.472871509203 +33 +23.3578378599218 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +718.95840239636 +20 +-786.469309831082 +30 +23.3578380791782 +11 +466.630394345883 +21 +-784.472871509203 +31 +23.3578378599218 +12 +464.090741872935 +22 +-786.683847141088 +32 +23.3578378586363 +13 +464.090741872935 +23 +-786.683847141088 +33 +23.3578378586363 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +718.95840239636 +20 +-786.469309831082 +30 +23.3578380791782 +11 +464.090741872935 +21 +-786.683847141088 +31 +23.3578378586363 +12 +688.787514114852 +22 +-801.347945386409 +32 +23.3578380792096 +13 +688.787514114852 +23 +-801.347945386409 +33 +23.3578380792096 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +464.090741872935 +21 +-786.683847141088 +31 +23.3578378586363 +12 +461.269951353941 +22 +-788.522239532049 +32 +23.3578378573451 +13 +461.269951353941 +23 +-788.522239532049 +33 +23.3578378573451 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +461.269951353941 +21 +-788.522239532049 +31 +23.3578378573451 +12 +458.222209793371 +22 +-789.952733412824 +32 +23.3578378560715 +13 +458.222209793371 +23 +-789.952733412824 +33 +23.3578378560715 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +458.222209793371 +21 +-789.952733412824 +31 +23.3578378560715 +12 +455.006063894518 +22 +-790.94784918938 +32 +23.3578378548415 +13 +455.006063894518 +23 +-790.94784918938 +33 +23.3578378548415 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +455.006063894518 +21 +-790.94784918938 +31 +23.3578378548415 +12 +451.683295385243 +22 +-791.4884708222 +32 +23.3578378536789 +13 +451.683295385243 +23 +-791.4884708222 +33 +23.3578378536789 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +451.683295385243 +21 +-791.4884708222 +31 +23.3578378536789 +12 +448.317734199337 +22 +-791.564213042815 +32 +23.3578378526045 +13 +448.317734199337 +23 +-791.564213042815 +33 +23.3578378526045 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +448.317734199337 +21 +-791.564213042815 +31 +23.3578378526045 +12 +0.000889626013624645 +22 +-791.564217518411 +32 +23.3578380798509 +13 +0.000889626013624645 +23 +-791.564217518411 +33 +23.3578380798509 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +0.000889626013624645 +21 +-791.564217518411 +31 +23.3578380798509 +12 +0.000467548734387557 +22 +-820.924226612819 +32 +23.3578380793719 +13 +0.000467548734387557 +23 +-820.924226612819 +33 +23.3578380793719 +70 +13 + 0 +3DFACE + 8 +leg_half +10 +688.787514114852 +20 +-801.347945386409 +30 +23.3578380792096 +11 +0.000467548734387557 +21 +-820.924226612819 +31 +23.3578380793719 +12 +656.932690320601 +22 +-812.16120098871 +32 +23.3578380792528 +13 +656.932690320601 +23 +-812.16120098871 +33 +23.3578380792528 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +656.932690320601 +20 +-812.16120098871 +30 +23.3578380792528 +11 +0.000467548734387557 +21 +-820.924226612819 +31 +23.3578380793719 +12 +623.938975880552 +22 +-818.724058836629 +32 +23.3578380793071 +13 +623.938975880552 +23 +-818.724058836629 +33 +23.3578380793071 +70 +3 + 0 +3DFACE + 8 +leg_half +10 +623.938975880552 +20 +-818.724058836629 +30 +23.3578380793071 +11 +0.000467548734387557 +21 +-820.924226612819 +31 +23.3578380793719 +12 +590.37090239636 +22 +-820.924226612819 +32 +23.3578380793719 +13 +590.37090239636 +23 +-820.924226612819 +33 +23.3578380793719 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +5.74034615733243e-05 +20 +-672.771766719091 +30 +212.768416817903 +11 +448.317783384355 +21 +-699.580940660874 +31 +195.189933989489 +12 +448.31777769836 +22 +-672.771628457813 +32 +212.76838602076 +13 +448.31777769836 +23 +-672.771628457813 +33 +212.76838602076 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317783384355 +20 +-699.580940660874 +30 +195.189933989489 +11 +5.74034615733243e-05 +21 +-672.771766719091 +31 +212.768416817903 +12 +6.30894498883872e-05 +22 +-699.581046774633 +32 +195.189985865263 +13 +6.30894498883872e-05 +23 +-699.581046774633 +33 +195.189985865263 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721732248607 +20 +-631.28782828485 +30 +194.729696180594 +11 +448.281993692064 +21 +-604.584376828467 +31 +200.565167970899 +12 +448.282004539076 +22 +-630.366836092636 +32 +192.392159030223 +13 +448.282004539076 +23 +-630.366836092636 +33 +192.392159030223 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.281993692064 +20 +-604.584376828467 +30 +200.565167970899 +11 +445.721732248607 +21 +-631.28782828485 +31 +194.729696180594 +12 +445.721721263973 +22 +-605.178251275471 +32 +203.006401057676 +13 +445.721721263973 +23 +-605.178251275471 +33 +203.006401057676 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690620823844 +20 +-681.255534297249 +30 +171.019219664594 +11 +436.335620774804 +21 +-658.528453423172 +31 +187.424993609851 +12 +439.690615872653 +22 +-657.910807757804 +32 +186.325996375185 +13 +439.690615872653 +23 +-657.910807757804 +33 +186.325996375185 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335620774804 +20 +-658.528453423172 +30 +187.424993609851 +11 +439.690620823844 +21 +-681.255534297249 +31 +171.019219664594 +12 +436.335625756533 +22 +-682.017174593568 +32 +172.023801843262 +13 +436.335625756533 +23 +-682.017174593568 +33 +172.023801843262 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101749084159 +20 +-758.702384848233 +30 +87.3191803898169 +11 +472.107183407982 +21 +-770.747998603796 +31 +59.9634222143927 +12 +473.10173725466 +22 +-767.61567851106 +32 +59.2014293241045 +13 +473.10173725466 +23 +-767.61567851106 +33 +59.2014293241045 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107183407982 +20 +-770.747998603796 +30 +59.9634222143927 +11 +473.101749084159 +21 +-758.702384848233 +31 +87.3191803898169 +12 +472.107195414063 +22 +-761.701653732916 +32 +88.5008947532808 +13 +472.107195414063 +23 +-761.701653732916 +33 +88.5008947532808 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721746731967 +20 +-699.576473436421 +30 +149.95388604473 +11 +448.282017231929 +21 +-677.413444384727 +31 +165.951609244563 +12 +448.282018840978 +22 +-697.799916727886 +32 +148.177329336375 +13 +448.282018840978 +23 +-697.799916727886 +33 +148.177329336375 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.282017231929 +20 +-677.413444384727 +30 +165.951609244563 +11 +445.721746731967 +21 +-699.576473436421 +31 +149.95388604473 +12 +445.721745102502 +22 +-678.931345516719 +32 +167.953679054935 +13 +445.721745102502 +23 +-678.931345516719 +33 +167.953679054935 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642080404707 +20 +-708.127668368109 +30 +158.505080975556 +11 +473.101762926689 +21 +-729.866935555387 +31 +138.627118353444 +12 +473.642078676977 +22 +-727.212938735792 +32 +136.614948795724 +13 +473.642078676977 +23 +-727.212938735792 +33 +136.614948795724 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101762926689 +20 +-729.866935555387 +30 +138.627118353444 +11 +473.642080404707 +21 +-708.127668368109 +31 +158.505080975556 +12 +473.101764681482 +22 +-710.482718842918 +32 +160.860131450129 +13 +473.101764681482 +23 +-710.482718842918 +33 +160.860131450129 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +760.20182781144 +20 +-592.476194788978 +30 +53.921748202446 +11 +764.031424128692 +21 +-575.559109938211 +31 +39.7948544698768 +12 +764.031425007948 +22 +-579.704781244013 +32 +37.0766018107078 +13 +764.031425007948 +23 +-579.704781244013 +33 +37.0766018107078 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031424128692 +20 +-575.559109938211 +30 +39.7948544698768 +11 +760.20182781144 +21 +-592.476194788978 +31 +53.921748202446 +12 +760.201826420081 +22 +-585.915972100795 +32 +58.2231849183613 +13 +760.201826420081 +23 +-585.915972100795 +33 +58.2231849183613 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275059137262 +20 +-626.524535798612 +30 +76.9019484142785 +11 +753.576412075941 +21 +-604.820821451585 +31 +70.2039737536023 +12 +753.576412708658 +22 +-612.837280222141 +32 +63.214692839186 +13 +753.576412708658 +23 +-612.837280222141 +33 +63.214692839186 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576412075941 +20 +-604.820821451585 +30 +70.2039737536023 +11 +744.275059137262 +21 +-626.524535798612 +31 +76.9019484142785 +12 +744.27505834726 +22 +-616.515297047424 +32 +85.6286672029373 +13 +744.27505834726 +23 +-616.515297047424 +33 +85.6286672029373 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275027999012 +20 +-547.318028491407 +30 +105.557438942816 +11 +753.576386337194 +21 +-186.86272 +31 +86.2459300397311 +12 +753.576386337194 +22 +-546.993607173192 +32 +86.2459300397311 +13 +753.576386337194 +23 +-546.993607173192 +33 +86.2459300397311 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +753.576386337194 +20 +-186.86272 +30 +86.2459300397311 +11 +744.275027999012 +21 +-547.318028491407 +31 +105.557438942816 +12 +744.275027999012 +22 +-186.86272 +32 +105.557438942816 +13 +744.275027999012 +23 +-186.86272 +33 +105.557438942816 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021370191738 +20 +-597.163793012617 +30 +170.061810578218 +11 +644.636231054623 +21 +-575.409716284687 +31 +180.525125445771 +12 +665.021358751182 +22 +-574.733894284646 +32 +173.91867700208 +13 +665.021358751182 +23 +-574.733894284646 +33 +173.91867700208 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636231054623 +20 +-575.409716284687 +30 +180.525125445771 +11 +665.021370191738 +21 +-597.163793012617 +31 +170.061810578218 +12 +644.636242951136 +22 +-598.733544865996 +32 +176.514545976725 +13 +644.636242951136 +23 +-598.733544865996 +33 +176.514545976725 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007213497075 +20 +-567.289596867332 +30 +47.2582811561368 +11 +787.130186503031 +21 +-581.689044301674 +31 +68.844999694228 +12 +792.007215701535 +22 +-572.529418663124 +32 +45.597263875134 +13 +792.007215701535 +23 +-572.529418663124 +33 +45.597263875134 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +787.130186503031 +20 +-581.689044301674 +30 +68.844999694228 +11 +792.007213497075 +21 +-567.289596867332 +31 +47.2582811561368 +12 +787.130182929858 +22 +-573.195904769668 +32 +71.5373148305873 +13 +787.130182929858 +23 +-573.195904769668 +33 +71.5373148305873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683300548936 +20 +-581.654891394158 +30 +241.574352401781 +11 +455.006085098156 +21 +-613.111377811381 +31 +235.617099433291 +12 +455.006069025402 +22 +-581.599775817026 +32 +241.035583090668 +13 +455.006069025402 +23 +-581.599775817026 +33 +241.035583090668 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006085098156 +20 +-613.111377811381 +30 +235.617099433291 +11 +451.683300548936 +21 +-581.654891394158 +31 +241.574352401781 +12 +451.683316658874 +22 +-613.239395048328 +32 +236.143333156642 +13 +451.683316658874 +23 +-613.239395048328 +33 +236.143333156642 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317739367628 +20 +-581.662614799822 +30 +241.649835054513 +11 +451.683316658874 +21 +-613.239395048328 +31 +236.143333156642 +12 +451.683300548936 +22 +-581.654891394158 +32 +241.574352401781 +13 +451.683300548936 +23 +-581.654891394158 +33 +241.574352401781 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683316658874 +20 +-613.239395048328 +30 +236.143333156642 +11 +448.317739367628 +21 +-581.662614799822 +31 +241.649835054513 +12 +448.317755482775 +22 +-613.257331879904 +32 +236.217059590145 +13 +448.317755482775 +23 +-613.257331879904 +33 +236.217059590145 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332877982946 +20 +-594.96003923808 +30 +161.00288323661 +11 +665.021358751182 +21 +-574.733894284646 +31 +173.91867700208 +12 +684.332867182503 +22 +-573.785120021053 +32 +164.643953396873 +13 +684.332867182503 +23 +-573.785120021053 +33 +164.643953396873 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +665.021358751182 +20 +-574.733894284646 +30 +173.91867700208 +11 +684.332877982946 +21 +-594.96003923808 +31 +161.00288323661 +12 +665.021370191738 +22 +-597.163793012617 +32 +170.061810578218 +13 +665.021370191738 +23 +-597.163793012617 +33 +170.061810578218 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +1.90727753096809e-05 +20 +-581.662862311522 +30 +241.649831219402 +11 +448.317755482775 +21 +-613.257331879904 +31 +236.217059590145 +12 +448.317739367628 +22 +-581.662614799822 +32 +241.649835054513 +13 +448.317739367628 +23 +-581.662614799822 +33 +241.649835054513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317755482775 +20 +-613.257331879904 +30 +236.217059590145 +11 +1.90727753096809e-05 +21 +-581.662862311522 +31 +241.649831219402 +12 +3.51879034228841e-05 +22 +-613.257541505822 +32 +236.217062269571 +13 +3.51879034228841e-05 +23 +-613.257541505822 +33 +236.217062269571 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642053400866 +20 +-608.036762247305 +30 +214.756927441262 +11 +473.101749084159 +21 +-636.941767787464 +31 +209.079797462849 +12 +473.642065047928 +22 +-635.720877069339 +32 +205.981095949127 +13 +473.642065047928 +23 +-635.720877069339 +33 +205.981095949127 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101749084159 +20 +-636.941767787464 +30 +209.079797462849 +11 +473.642053400866 +21 +-608.036762247305 +31 +214.756927441262 +12 +473.10173725466 +22 +-608.824016722648 +32 +217.993091128508 +13 +473.10173725466 +23 +-608.824016722648 +33 +217.993091128508 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.101762926689 +20 +-688.249705748186 +30 +180.244348164837 +11 +472.107211244211 +21 +-712.762199391597 +31 +163.139611998578 +12 +473.101764681482 +22 +-710.482718842918 +32 +160.860131450129 +13 +473.101764681482 +23 +-710.482718842918 +33 +160.860131450129 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107211244211 +20 +-712.762199391597 +30 +163.139611998578 +11 +473.101762926689 +21 +-688.249705748186 +31 +180.244348164837 +12 +472.107209463225 +22 +-690.197307940468 +32 +182.813182295542 +13 +472.107209463225 +23 +-690.197307940468 +33 +182.813182295542 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107209463225 +20 +-690.197307940468 +30 +182.813182295542 +11 +470.677525329952 +21 +-714.922321501014 +31 +165.299734107777 +12 +472.107211244211 +22 +-712.762199391597 +32 +163.139611998578 +13 +472.107211244211 +23 +-712.762199391597 +33 +163.139611998578 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677525329952 +20 +-714.922321501014 +30 +165.299734107777 +11 +472.107209463225 +21 +-690.197307940468 +31 +182.813182295542 +12 +470.677523524142 +22 +-692.042929592268 +32 +185.247506781241 +13 +470.677523524142 +23 +-692.042929592268 +33 +185.247506781241 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575559198051 +20 +-626.958539673324 +30 +183.741680540481 +11 +454.431253196946 +21 +-601.562294416642 +31 +188.142314217608 +12 +454.431263343628 +22 +-625.680128816835 +32 +180.496989380173 +13 +454.431263343628 +23 +-625.680128816835 +33 +180.496989380173 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431253196946 +20 +-601.562294416642 +30 +188.142314217608 +11 +453.575559198051 +21 +-626.958539673324 +31 +183.741680540481 +12 +453.575548860337 +22 +-602.386639077964 +32 +191.530943822063 +13 +453.575548860337 +23 +-602.386639077964 +33 +191.530943822063 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317755482775 +20 +-613.257331879904 +30 +236.217059590145 +11 +451.683329511579 +21 +-643.789222672817 +31 +226.45907411243 +12 +451.683316658874 +22 +-613.239395048328 +32 +236.143333156642 +13 +451.683316658874 +23 +-613.239395048328 +33 +236.143333156642 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683329511579 +20 +-643.789222672817 +30 +226.45907411243 +11 +448.317755482775 +21 +-613.257331879904 +31 +236.217059590145 +12 +448.317768339636 +22 +-643.81703834892 +32 +226.52966896396 +13 +448.317768339636 +23 +-643.81703834892 +33 +226.52966896396 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +717.894057585081 +20 +-597.802053886837 +30 +172.685609040578 +11 +736.997685757261 +21 +-613.69735635364 +31 +150.084181819366 +12 +736.997677401125 +22 +-593.835505140242 +32 +156.380365045419 +13 +736.997677401125 +23 +-593.835505140242 +33 +156.380365045419 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +736.997685757261 +20 +-613.69735635364 +30 +150.084181819366 +11 +717.894057585081 +21 +-597.802053886837 +31 +172.685609040578 +12 +717.894066860413 +22 +-619.848757614325 +32 +165.696830164561 +13 +717.894066860413 +23 +-619.848757614325 +33 +165.696830164561 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267752143919 +20 +-606.639691213326 +30 +209.013906507055 +11 +0.0162646316092562 +21 +-578.813809543233 +31 +213.798660182835 +12 +429.267737950976 +22 +-578.813572557816 +32 +213.798663854844 +13 +429.267737950976 +23 +-578.813572557816 +33 +213.798663854844 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +0.0162646316092562 +20 +-578.813809543233 +30 +213.798660182835 +11 +429.267752143919 +21 +-606.639691213326 +31 +209.013906507055 +12 +0.0162788245333154 +22 +-606.639891924184 +32 +209.013909072529 +13 +0.0162788245333154 +23 +-606.639891924184 +33 +209.013909072529 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221343105619 +20 +-592.16215835415 +30 +149.501676557166 +11 +684.332867182503 +21 +-573.785120021053 +31 +164.643953396873 +12 +702.221333117862 +22 +-572.580560654599 +32 +152.868771861916 +13 +702.221333117862 +23 +-572.580560654599 +33 +152.868771861916 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +684.332867182503 +20 +-573.785120021053 +30 +164.643953396873 +11 +702.221343105619 +21 +-592.16215835415 +31 +149.501676557166 +12 +684.332877982946 +22 +-594.96003923808 +32 +161.00288323661 +13 +684.332877982946 +23 +-594.96003923808 +33 +161.00288323661 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838929652884 +20 +-606.570796271198 +30 +208.73070710808 +11 +429.267737950976 +21 +-578.813572557816 +31 +213.798663854844 +12 +432.838915479952 +22 +-578.783910422824 +32 +213.508718295381 +13 +432.838915479952 +23 +-578.783910422824 +33 +213.508718295381 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +429.267737950976 +20 +-578.813572557816 +30 +213.798663854844 +11 +432.838929652884 +21 +-606.570796271198 +31 +208.73070710808 +12 +429.267752143919 +22 +-606.639691213326 +32 +209.013906507055 +13 +429.267752143919 +23 +-606.639691213326 +33 +209.013906507055 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335601310833 +20 +-606.385574583813 +30 +207.969323546969 +11 +432.838915479952 +21 +-578.783910422824 +31 +213.508718295381 +12 +436.335587191701 +22 +-578.704166932226 +32 +212.72919754513 +13 +436.335587191701 +23 +-578.704166932226 +33 +212.72919754513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838915479952 +20 +-578.783910422824 +30 +213.508718295381 +11 +436.335601310833 +21 +-606.385574583813 +31 +207.969323546969 +12 +432.838929652884 +22 +-606.570796271198 +32 +208.73070710808 +13 +432.838929652884 +23 +-606.570796271198 +33 +208.73070710808 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +718.363090933403 +20 +-588.820775333035 +30 +135.766293848309 +11 +702.221333117862 +21 +-572.580560654599 +31 +152.868771861916 +12 +718.363081916203 +22 +-571.142011532184 +32 +138.806193017976 +13 +718.363081916203 +23 +-571.142011532184 +33 +138.806193017976 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +702.221333117862 +20 +-572.580560654599 +30 +152.868771861916 +11 +718.363090933403 +21 +-588.820775333035 +31 +135.766293848309 +12 +702.221343105619 +22 +-592.16215835415 +32 +149.501676557166 +13 +702.221343105619 +23 +-592.16215835415 +33 +149.501676557166 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.031424128692 +20 +-589.417441849078 +30 +25.9365225576139 +11 +764.531578361879 +21 +-577.829946771796 +31 +23.3578379990944 +12 +764.267940787943 +22 +-584.829097037034 +32 +23.3578379974678 +13 +764.267940787943 +23 +-584.829097037034 +33 +23.3578379974678 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +764.531578361879 +20 +-577.829946771796 +30 +23.3578379990944 +11 +764.031424128692 +21 +-589.417441849078 +31 +25.9365225576139 +12 +764.031425007948 +22 +-586.699189190326 +32 +30.0821938636906 +13 +764.031425007948 +23 +-586.699189190326 +33 +30.0821938636906 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +792.007217306199 +20 +-592.860317128213 +30 +27.8714369630177 +11 +792.00721584731 +21 +-595.005500745675 +31 +23.3578380039372 +12 +792.574093434967 +22 +-584.829110641297 +32 +23.3578380063606 +13 +792.574093434967 +23 +-584.829110641297 +33 +23.3578380063606 +70 +0 + 0 +3DFACE + 8 +leg_half +10 +458.222252930963 +20 +-760.983658189012 +30 +122.358116586891 +11 +455.006112926336 +21 +-744.320489807817 +31 +149.585310783685 +12 +455.006107255299 +22 +-761.852698834952 +32 +122.846524872111 +13 +455.006107255299 +23 +-761.852698834952 +33 +122.846524872111 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006112926336 +20 +-744.320489807817 +30 +149.585310783685 +11 +458.222252930963 +21 +-760.983658189012 +31 +122.358116586891 +12 +458.222258577851 +22 +-743.526108574926 +32 +148.983037664963 +13 +458.222258577851 +23 +-743.526108574926 +33 +148.983037664963 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +455.006107255299 +20 +-761.852698834952 +30 +122.846524872111 +11 +451.683344551435 +21 +-744.752057529093 +31 +149.912511141786 +12 +451.683338867278 +22 +-762.324827081794 +32 +123.111865415064 +13 +451.683338867278 +23 +-762.324827081794 +33 +123.111865415064 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683344551435 +20 +-744.752057529093 +30 +149.912511141786 +11 +455.006107255299 +21 +-761.852698834952 +31 +122.846524872111 +12 +455.006112926336 +22 +-744.320489807817 +32 +149.585310783685 +13 +455.006112926336 +23 +-744.320489807817 +33 +149.585310783685 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +451.683338867278 +20 +-762.324827081794 +30 +123.111865415064 +11 +448.317783384355 +21 +-744.812521381181 +31 +149.958353264626 +12 +448.31777769836 +22 +-762.390973409752 +32 +123.149041059795 +13 +448.31777769836 +23 +-762.390973409752 +33 +123.149041059795 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.317783384355 +20 +-744.812521381181 +30 +149.958353264626 +11 +451.683338867278 +21 +-762.324827081794 +31 +123.111865415064 +12 +451.683344551435 +22 +-744.752057529093 +32 +149.912511141786 +13 +451.683344551435 +23 +-744.752057529093 +33 +149.912511141786 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.31777769836 +20 +-762.390973409752 +30 +123.149041059795 +11 +6.30894498883872e-05 +21 +-744.812573256956 +31 +149.958459378386 +12 +5.74034615733243e-05 +22 +-762.391004206896 +32 +123.149179321074 +13 +5.74034615733243e-05 +23 +-762.391004206896 +33 +123.149179321074 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +6.30894498883872e-05 +20 +-744.812573256956 +30 +149.958459378386 +11 +448.31777769836 +21 +-762.390973409752 +31 +123.149041059795 +12 +448.317783384355 +22 +-744.812521381181 +32 +149.958353264626 +13 +448.317783384355 +23 +-744.812521381181 +33 +149.958353264626 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +461.269937419119 +20 +-549.571376162653 +30 +239.686382351024 +11 +464.090746745054 +21 +-581.165076540648 +31 +236.786190394896 +12 +464.090727919739 +22 +-549.540509167097 +32 +237.849027336606 +13 +464.090727919739 +23 +-549.540509167097 +33 +237.849027336606 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +464.090746745054 +20 +-581.165076540648 +30 +236.786190394896 +11 +461.269937419119 +21 +-549.571376162653 +31 +239.686382351024 +12 +461.269956337624 +22 +-581.352493258009 +32 +238.618284093782 +13 +461.269956337624 +23 +-581.352493258009 +33 +238.618284093782 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.133302212101 +20 +-683.695422993079 +30 +134.072835602987 +11 +454.667769896794 +21 +-665.362499898554 +31 +150.056742450276 +12 +602.13330076513 +22 +-665.362464994464 +32 +150.056725386733 +13 +602.13330076513 +23 +-665.362464994464 +33 +150.056725386733 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.667769896794 +20 +-665.362499898554 +30 +150.056742450276 +11 +602.133302212101 +21 +-683.695422993079 +31 +134.072835602987 +12 +454.667771343765 +22 +-683.695448366281 +32 +134.072860976189 +13 +454.667771343765 +23 +-683.695448366281 +33 +134.072860976189 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546368087822 +20 +-683.011825308716 +30 +133.389237918693 +11 +602.13330076513 +21 +-665.362464994464 +31 +150.056725386733 +12 +623.546366648706 +22 +-664.778393037384 +32 +149.286354566558 +13 +623.546366648706 +23 +-664.778393037384 +33 +149.286354566558 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +602.13330076513 +20 +-665.362464994464 +30 +150.056725386733 +11 +623.546368087822 +21 +-683.011825308716 +31 +133.389237918693 +12 +602.133302212101 +22 +-683.695422993079 +32 +134.072835602987 +13 +602.133302212101 +23 +-683.695422993079 +33 +134.072835602987 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +644.636264956545 +20 +-680.297547066858 +30 +130.674959677109 +11 +623.546366648706 +21 +-664.778393037384 +31 +149.286354566558 +12 +644.636263548619 +22 +-662.459295238253 +32 +146.227531781659 +13 +644.636263548619 +23 +-662.459295238253 +33 +146.227531781659 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +623.546366648706 +20 +-664.778393037384 +30 +149.286354566558 +11 +644.636264956545 +21 +-680.297547066858 +31 +130.674959677109 +12 +623.546368087822 +22 +-683.011825308716 +32 +133.389237918693 +13 +623.546368087822 +23 +-683.011825308716 +33 +133.389237918693 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +450.471101097006 +20 +-603.912334485117 +30 +197.802609624747 +11 +452.246977834961 +21 +-577.321948654809 +31 +199.217284688636 +12 +452.246991021541 +22 +-603.175034087969 +32 +194.771794391524 +13 +452.246991021541 +23 +-603.175034087969 +33 +194.771794391524 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246977834961 +20 +-577.321948654809 +30 +199.217284688636 +11 +450.471101097006 +21 +-603.912334485117 +31 +197.802609624747 +12 +450.471087696265 +22 +-577.639374325348 +32 +202.320298229792 +13 +450.471087696265 +23 +-577.639374325348 +33 +202.320298229792 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.642020846985 +20 +-186.86272 +30 +220.692200425201 +11 +473.10170430358 +21 +-549.308104906071 +31 +224.014968929071 +12 +473.642020846985 +22 +-549.252284780773 +32 +220.6922004252 +13 +473.642020846985 +23 +-549.252284780773 +33 +220.6922004252 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +473.10170430358 +20 +-549.308104906071 +30 +224.014968929071 +11 +473.642020846985 +21 +-186.86272 +31 +220.692200425201 +12 +473.10170430358 +22 +-186.86272 +32 +224.014968929072 +13 +473.10170430358 +23 +-186.86272 +33 +224.014968929072 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677463405893 +20 +-186.86272 +30 +230.27885636425 +11 +472.107150072447 +21 +-549.362133988305 +31 +227.231114817978 +12 +472.107150072447 +22 +-186.86272 +32 +227.231114817978 +13 +472.107150072447 +23 +-186.86272 +33 +227.231114817978 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107150072447 +20 +-549.362133988305 +30 +227.231114817978 +11 +470.677463405893 +21 +-186.86272 +31 +230.27885636425 +12 +470.677463405893 +22 +-549.413334136112 +32 +230.27885636425 +13 +470.677463405893 +23 +-549.413334136112 +33 +230.27885636425 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677463405893 +20 +-186.86272 +30 +230.27885636425 +11 +468.840108391474 +21 +-549.460721801574 +31 +233.09964686487 +12 +470.677463405893 +22 +-549.413334136112 +32 +230.27885636425 +13 +470.677463405893 +23 +-549.413334136112 +33 +230.27885636425 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840108391474 +20 +-549.460721801574 +30 +233.09964686487 +11 +470.677463405893 +21 +-186.86272 +31 +230.27885636425 +12 +468.840108391474 +22 +-186.86272 +32 +233.09964686487 +13 +468.840108391474 +23 +-186.86272 +33 +233.09964686487 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +466.630380370588 +20 +-186.86272 +30 +235.63929931572 +11 +468.840108391474 +21 +-549.460721801574 +31 +233.09964686487 +12 +468.840108391474 +22 +-186.86272 +32 +233.09964686487 +13 +468.840108391474 +23 +-186.86272 +33 +233.09964686487 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +468.840108391474 +20 +-549.460721801574 +30 +233.09964686487 +11 +466.630380370588 +21 +-186.86272 +31 +235.63929931572 +12 +466.630380370588 +22 +-549.503386674047 +32 +235.63929931572 +13 +466.630380370588 +23 +-549.503386674047 +33 +235.63929931572 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690607723364 +20 +-632.698039036468 +30 +198.308899357094 +11 +436.335601310833 +21 +-606.385574583813 +31 +207.969323546969 +12 +439.690596528004 +22 +-606.087584234742 +32 +206.744381898986 +13 +439.690596528004 +23 +-606.087584234742 +33 +206.744381898986 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335601310833 +20 +-606.385574583813 +30 +207.969323546969 +11 +439.690607723364 +21 +-632.698039036468 +31 +198.308899357094 +12 +436.335612575248 +22 +-633.16016763801 +32 +199.481809374145 +13 +436.335612575248 +23 +-633.16016763801 +33 +199.481809374145 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +732.466058322552 +20 +-599.989404866694 +30 +115.292482897529 +11 +744.275046789786 +21 +-580.758079568763 +31 +102.623043056121 +12 +744.275052115393 +22 +-593.416610482006 +32 +98.6103038030606 +13 +744.275052115393 +23 +-593.416610482006 +33 +98.6103038030606 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +744.275046789786 +20 +-580.758079568763 +30 +102.623043056121 +11 +732.466058322552 +21 +-599.989404866694 +31 +115.292482897529 +12 +732.466052014781 +22 +-584.996349297051 +32 +120.045263691758 +13 +732.466052014781 +23 +-584.996349297051 +33 +120.045263691758 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +472.107195414063 +20 +-638.12348215123 +30 +212.079066347413 +11 +470.677518140403 +21 +-666.658744301589 +31 +201.891525102388 +12 +472.10720415349 +22 +-665.162054034067 +32 +199.228411696097 +13 +472.10720415349 +23 +-665.162054034067 +33 +199.228411696097 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +470.677518140403 +20 +-666.658744301589 +30 +201.891525102388 +11 +472.107195414063 +21 +-638.12348215123 +31 +212.079066347413 +12 +470.677509279169 +22 +-639.24331958749 +32 +214.92128705308 +13 +470.677509279169 +23 +-639.24331958749 +33 +214.92128705308 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +4.80447490185498e-05 +20 +-643.817211330157 +30 +226.529683259707 +11 +448.31777769836 +21 +-672.771628457813 +31 +212.76838602076 +12 +448.317768339636 +22 +-643.81703834892 +32 +226.52966896396 +13 +448.317768339636 +23 +-643.81703834892 +33 +226.52966896396 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +448.31777769836 +20 +-672.771628457813 +30 +212.76838602076 +11 +4.80447490185498e-05 +21 +-643.817211330157 +31 +226.529683259707 +12 +5.74034615733243e-05 +22 +-672.771766719091 +32 +212.768416817903 +13 +5.74034615733243e-05 +23 +-672.771766719091 +33 +212.768416817903 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335620774804 +20 +-658.528453423172 +30 +187.424993609851 +11 +432.838940960221 +21 +-633.447412164356 +31 +200.210851816573 +12 +436.335612575248 +22 +-633.16016763801 +32 +199.481809374145 +13 +436.335612575248 +23 +-633.16016763801 +33 +199.481809374145 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +432.838940960221 +20 +-633.447412164356 +30 +200.210851816573 +11 +436.335620774804 +21 +-658.528453423172 +31 +187.424993609851 +12 +432.838949191021 +22 +-658.912362146436 +32 +188.108094342889 +13 +432.838949191021 +23 +-658.912362146436 +33 +188.108094342889 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690615872653 +20 +-657.910807757804 +30 +186.325996375185 +11 +436.335612575248 +21 +-633.16016763801 +31 +199.481809374145 +12 +439.690607723364 +22 +-632.698039036468 +32 +198.308899357094 +13 +439.690607723364 +23 +-632.698039036468 +33 +198.308899357094 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +436.335612575248 +20 +-633.16016763801 +30 +199.481809374145 +11 +439.690615872653 +21 +-657.910807757804 +31 +186.325996375185 +12 +436.335620774804 +22 +-658.528453423172 +32 +187.424993609851 +13 +436.335620774804 +23 +-658.528453423172 +33 +187.424993609851 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839485482368 +20 +-657.071290040049 +30 +184.832214227177 +11 +439.690607723364 +21 +-632.698039036468 +31 +198.308899357094 +12 +442.839477401402 +22 +-632.069903787681 +32 +196.714653208256 +13 +442.839477401402 +23 +-632.069903787681 +33 +196.714653208256 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +439.690607723364 +20 +-632.698039036468 +30 +198.308899357094 +11 +442.839485482368 +21 +-657.071290040049 +31 +184.832214227177 +12 +439.690615872653 +22 +-657.910807757804 +32 +186.325996375185 +13 +439.690615872653 +23 +-657.910807757804 +33 +186.325996375185 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +445.721740244506 +20 +-656.026027291755 +30 +182.972342518915 +11 +442.839477401402 +21 +-632.069903787681 +31 +196.714653208256 +12 +445.721732248607 +22 +-631.28782828485 +32 +194.729696180594 +13 +445.721732248607 +23 +-631.28782828485 +33 +194.729696180594 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +442.839477401402 +20 +-632.069903787681 +30 +196.714653208256 +11 +445.721740244506 +21 +-656.026027291755 +31 +182.972342518915 +12 +442.839485482368 +22 +-657.071290040049 +32 +184.832214227177 +13 +442.839485482368 +23 +-657.071290040049 +33 +184.832214227177 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575566723046 +20 +-650.239827098532 +30 +172.676755002411 +11 +454.431263343628 +21 +-625.680128816835 +31 +180.496989380173 +12 +454.431270729568 +22 +-648.531199395009 +32 +169.63653352158 +13 +454.431270729568 +23 +-648.531199395009 +33 +169.63653352158 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431263343628 +20 +-625.680128816835 +30 +180.496989380173 +11 +453.575566723046 +21 +-650.239827098532 +31 +172.676755002411 +12 +453.575559198051 +22 +-626.958539673324 +32 +183.741680540481 +13 +453.575559198051 +23 +-626.958539673324 +33 +183.741680540481 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +452.246960920592 +20 +-548.907571431286 +30 +200.172233713933 +11 +453.575519157163 +21 +-186.86272 +31 +196.84465290436 +12 +453.575519157163 +22 +-548.851670228397 +32 +196.84465290436 +13 +453.575519157163 +23 +-548.851670228397 +33 +196.84465290436 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575519157163 +20 +-186.86272 +30 +196.84465290436 +11 +452.246960920592 +21 +-548.907571431286 +31 +200.172233713933 +12 +452.246960920592 +22 +-186.86272 +32 +200.172233713933 +13 +452.246960920592 +23 +-186.86272 +33 +200.172233713933 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +453.575519157163 +20 +-548.851670228397 +30 +196.84465290436 +11 +454.431223909685 +21 +-186.86272 +31 +193.36533825795 +12 +454.431223909685 +22 +-548.793220154026 +32 +193.36533825795 +13 +454.431223909685 +23 +-548.793220154026 +33 +193.36533825795 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431223909685 +20 +-186.86272 +30 +193.36533825795 +11 +453.575519157163 +21 +-548.851670228397 +31 +196.84465290436 +12 +453.575519157163 +22 +-186.86272 +32 +196.84465290436 +13 +453.575519157163 +23 +-186.86272 +33 +196.84465290436 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.431223909685 +20 +-548.793220154026 +30 +193.36533825795 +11 +454.797637205561 +21 +-186.86272 +31 +189.801126938625 +12 +454.797637205561 +22 +-548.733344026199 +32 +189.801126938624 +13 +454.797637205561 +23 +-548.733344026199 +33 +189.801126938624 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797637205561 +20 +-186.86272 +30 +189.801126938625 +11 +454.431223909685 +21 +-548.793220154026 +31 +193.36533825795 +12 +454.431223909685 +22 +-186.86272 +32 +193.36533825795 +13 +454.431223909685 +23 +-186.86272 +33 +193.36533825795 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.797637205561 +20 +-548.733344026199 +30 +189.801126938624 +11 +454.66772029492 +21 +-186.86272 +31 +186.220486963908 +12 +454.66772029492 +22 +-548.673192057237 +32 +186.220486963908 +13 +454.66772029492 +23 +-548.673192057237 +33 +186.220486963908 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +454.66772029492 +20 +-186.86272 +30 +186.220486963908 +11 +454.797637205561 +21 +-548.733344026199 +31 +189.801126938624 +12 +454.797637205561 +22 +-186.86272 +32 +189.801126938625 +13 +454.797637205561 +23 +-186.86272 +33 +189.801126938625 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +56.126785226813 +20 +-233.578399999998 +30 +1315.22236639941 +11 +18.7226850109546 +21 +-233.578399999999 +31 +268.426375476513 +12 +18.7226850109546 +22 +-233.578399999998 +32 +1315.22236639941 +13 +18.7226850109546 +23 +-233.578399999998 +33 +1315.22236639941 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +18.7226850109546 +20 +-233.578399999999 +30 +268.426375476513 +11 +56.126785226813 +21 +-233.578399999998 +31 +1315.22236639941 +12 +56.126785226813 +22 +-233.578399999998 +32 +268.426375476513 +13 +56.126785226813 +23 +-233.578399999998 +33 +268.426375476513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +18.7226850109544 +20 +-186.862719999999 +30 +268.426375476513 +11 +56.126785226813 +21 +-233.578399999998 +31 +268.426375476513 +12 +56.1267852268127 +22 +-186.862719999999 +32 +268.426375476513 +13 +56.1267852268127 +23 +-186.862719999999 +33 +268.426375476513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +56.126785226813 +20 +-233.578399999998 +30 +268.426375476513 +11 +18.7226850109544 +21 +-186.862719999999 +31 +268.426375476513 +12 +18.7226850109546 +22 +-233.578399999999 +32 +268.426375476513 +13 +18.7226850109546 +23 +-233.578399999999 +33 +268.426375476513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +18.7226850109544 +20 +-186.862719999999 +30 +1315.22236639941 +11 +18.7226850109546 +21 +-233.578399999999 +31 +268.426375476513 +12 +18.7226850109544 +22 +-186.862719999999 +32 +268.426375476513 +13 +18.7226850109544 +23 +-186.862719999999 +33 +268.426375476513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +18.7226850109546 +20 +-233.578399999999 +30 +268.426375476513 +11 +18.7226850109544 +21 +-186.862719999999 +31 +1315.22236639941 +12 +18.7226850109546 +22 +-233.578399999998 +32 +1315.22236639941 +13 +18.7226850109546 +23 +-233.578399999998 +33 +1315.22236639941 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +56.126785226813 +20 +-233.578399999998 +30 +1315.22236639941 +11 +18.7226850109544 +21 +-186.862719999999 +31 +1315.22236639941 +12 +56.1267852268127 +22 +-186.862719999999 +32 +1315.22236639941 +13 +56.1267852268127 +23 +-186.862719999999 +33 +1315.22236639941 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +18.7226850109544 +20 +-186.862719999999 +30 +1315.22236639941 +11 +56.126785226813 +21 +-233.578399999998 +31 +1315.22236639941 +12 +18.7226850109546 +22 +-233.578399999998 +32 +1315.22236639941 +13 +18.7226850109546 +23 +-233.578399999998 +33 +1315.22236639941 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +56.126785226813 +20 +-233.578399999998 +30 +1315.22236639941 +11 +56.1267852268127 +21 +-186.862719999999 +31 +268.426375476513 +12 +56.126785226813 +22 +-233.578399999998 +32 +268.426375476513 +13 +56.126785226813 +23 +-233.578399999998 +33 +268.426375476513 +70 +1 + 0 +3DFACE + 8 +leg_half +10 +56.1267852268127 +20 +-186.862719999999 +30 +268.426375476513 +11 +56.126785226813 +21 +-233.578399999998 +31 +1315.22236639941 +12 +56.1267852268127 +22 +-186.862719999999 +32 +1315.22236639941 +13 +56.1267852268127 +23 +-186.862719999999 +33 +1315.22236639941 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-794.16656 +30 +2070.08261515828 +11 +1071.44060782234 +21 +-804.053109826237 +31 +2084.86773745469 +12 +1080.07459980683 +22 +-800.976532807249 +32 +2069.41239686438 +13 +1080.07459980683 +23 +-800.976532807249 +33 +2069.41239686438 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-804.053109826237 +30 +2084.86773745469 +11 +1080.07459980683 +21 +-794.16656 +31 +2070.08261515828 +12 +1071.44060782234 +22 +-794.16656 +32 +2085.84074377127 +13 +1071.44060782234 +23 +-794.16656 +33 +2085.84074377127 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-794.16656 +30 +2085.84074377127 +11 +1059.82120360007 +21 +-806.749751362303 +31 +2098.41445288964 +12 +1071.44060782234 +22 +-804.053109826237 +32 +2084.86773745469 +13 +1071.44060782234 +23 +-804.053109826237 +33 +2084.86773745469 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-806.749751362303 +30 +2098.41445288964 +11 +1071.44060782234 +21 +-794.16656 +31 +2085.84074377127 +12 +1059.82120360007 +22 +-794.16656 +32 +2099.6528550515 +13 +1059.82120360007 +23 +-794.16656 +33 +2099.6528550515 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-808.96283299496 +30 +2109.5319806407 +11 +1059.82120360007 +21 +-794.16656 +31 +2099.6528550515 +12 +1045.6629890274 +22 +-794.16656 +32 +2110.98818804762 +13 +1045.6629890274 +23 +-794.16656 +33 +2110.98818804762 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-794.16656 +30 +2099.6528550515 +11 +1045.6629890274 +21 +-808.96283299496 +31 +2109.5319806407 +12 +1059.82120360007 +22 +-806.749751362303 +32 +2098.41445288964 +13 +1059.82120360007 +23 +-806.749751362303 +33 +2098.41445288964 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-810.607297088473 +30 +2117.79302936366 +11 +1045.6629890274 +21 +-794.16656 +31 +2110.98818804762 +12 +1029.5099682249 +22 +-794.16656 +32 +2119.41108028308 +13 +1029.5099682249 +23 +-794.16656 +33 +2119.41108028308 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-794.16656 +30 +2110.98818804762 +11 +1029.5099682249 +21 +-810.607297088473 +31 +2117.79302936366 +12 +1045.6629890274 +22 +-808.96283299496 +32 +2109.5319806407 +13 +1045.6629890274 +23 +-808.96283299496 +33 +2109.5319806407 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-811.619948505454 +30 +2122.88013508281 +11 +1029.5099682249 +21 +-794.16656 +31 +2119.41108028308 +12 +1011.98285238754 +22 +-794.16656 +32 +2124.59784829519 +13 +1011.98285238754 +23 +-794.16656 +33 +2124.59784829519 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-794.16656 +30 +2119.41108028308 +11 +1011.98285238754 +21 +-811.619948505454 +31 +2122.88013508281 +12 +1029.5099682249 +22 +-810.607297088473 +32 +2117.79302936366 +13 +1029.5099682249 +23 +-810.607297088473 +33 +2117.79302936366 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-811.961287013471 +30 +2124.59486637848 +11 +1011.98285238754 +21 +-794.16656 +31 +2124.59784829519 +12 +993.755281646067 +22 +-794.16656 +32 +2126.34617316296 +13 +993.755281646067 +23 +-794.16656 +33 +2126.34617316296 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-794.16656 +30 +2124.59784829519 +11 +993.755281646067 +21 +-811.961287013471 +31 +2124.59486637848 +12 +1011.98285238754 +22 +-811.619948505454 +32 +2122.88013508281 +13 +1011.98285238754 +23 +-811.619948505454 +33 +2122.88013508281 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-835.292444325637 +30 +2241.80011766922 +11 +993.755281646067 +21 +-794.16656 +31 +2245.84761107459 +12 +947.039601646067 +22 +-794.16656 +32 +2245.84761107459 +13 +947.039601646067 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-794.16656 +30 +2245.84761107459 +11 +947.039601646067 +21 +-835.292444325637 +31 +2241.80011766922 +12 +993.755281646067 +22 +-835.292444325637 +32 +2241.80011766922 +13 +993.755281646067 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-835.292444325637 +30 +2241.80011766922 +11 +900.323921646066 +21 +-794.16656 +31 +2200.28420494853 +12 +900.323921646066 +22 +-826.396760603478 +32 +2197.11219961575 +13 +900.323921646066 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-794.16656 +30 +2200.28420494853 +11 +947.039601646067 +21 +-835.292444325637 +31 +2241.80011766922 +12 +947.039601646067 +22 +-794.16656 +32 +2245.84761107459 +13 +947.039601646067 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-794.16656 +30 +2200.28420494853 +11 +853.608241646067 +21 +-835.292444325637 +31 +2241.80011766922 +12 +900.323921646066 +22 +-826.396760603478 +32 +2197.11219961575 +13 +900.323921646066 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-835.292444325637 +30 +2241.80011766922 +11 +900.323921646066 +21 +-794.16656 +31 +2200.28420494853 +12 +853.608241646067 +22 +-794.16656 +32 +2245.84761107459 +13 +853.608241646067 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-835.292444325637 +30 +2241.80011766922 +11 +806.892561646067 +21 +-794.16656 +31 +2200.28420494853 +12 +806.892561646067 +22 +-826.396760603478 +32 +2197.11219961575 +13 +806.892561646067 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-794.16656 +30 +2200.28420494853 +11 +853.608241646067 +21 +-835.292444325637 +31 +2241.80011766922 +12 +853.608241646067 +22 +-794.16656 +32 +2245.84761107459 +13 +853.608241646067 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-794.16656 +30 +2200.28420494853 +11 +760.176881646066 +21 +-835.292444325637 +31 +2241.80011766922 +12 +806.892561646067 +22 +-826.396760603478 +32 +2197.11219961575 +13 +806.892561646067 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-835.292444325637 +30 +2241.80011766922 +11 +806.892561646067 +21 +-794.16656 +31 +2200.28420494853 +12 +760.176881646066 +22 +-794.16656 +32 +2245.84761107459 +13 +760.176881646066 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-835.292444325637 +30 +2241.80011766922 +11 +713.461201646067 +21 +-794.16656 +31 +2200.28420494853 +12 +713.461201646067 +22 +-826.396760603478 +32 +2197.11219961575 +13 +713.461201646067 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-794.16656 +30 +2200.28420494853 +11 +760.176881646066 +21 +-835.292444325637 +31 +2241.80011766922 +12 +760.176881646066 +22 +-794.16656 +32 +2245.84761107459 +13 +760.176881646066 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-794.16656 +30 +2200.28420494853 +11 +666.745521646067 +21 +-835.292444325637 +31 +2241.80011766922 +12 +713.461201646067 +22 +-826.396760603478 +32 +2197.11219961575 +13 +713.461201646067 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-835.292444325637 +30 +2241.80011766922 +11 +713.461201646067 +21 +-794.16656 +31 +2200.28420494853 +12 +666.745521646067 +22 +-794.16656 +32 +2245.84761107459 +13 +666.745521646067 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-835.292444325637 +30 +2241.80011766922 +11 +666.745521646067 +21 +-794.16656 +31 +2245.84761107459 +12 +635.537064906387 +22 +-794.16656 +32 +2245.84761107459 +13 +635.537064906387 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-794.16656 +30 +2245.84761107459 +11 +635.537064906387 +21 +-835.292444325637 +31 +2241.80011766922 +12 +666.745521646067 +22 +-835.292444325637 +32 +2241.80011766922 +13 +666.745521646067 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-826.396760603478 +30 +2197.11219961575 +11 +635.537064906387 +21 +-794.16656 +31 +2200.28420494853 +12 +200.646177778547 +22 +-794.16656 +32 +2200.28420494853 +13 +200.646177778547 +23 +-794.16656 +33 +2200.28420494853 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-794.16656 +30 +2200.28420494853 +11 +200.646177778547 +21 +-826.396760603478 +31 +2197.11219961575 +12 +635.537064906387 +22 +-826.396760603478 +32 +2197.11219961575 +13 +635.537064906387 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-810.693774595514 +30 +2118.22745350336 +11 +200.646177778547 +21 +-794.16656 +31 +2119.85401529483 +12 +97.3015169041444 +22 +-794.16656 +32 +2119.85401529483 +13 +97.3015169041444 +23 +-794.16656 +33 +2119.85401529483 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-794.16656 +30 +2119.85401529483 +11 +97.3015169041444 +21 +-810.693774595514 +31 +2118.22745350336 +12 +200.646177778547 +22 +-810.693774595514 +32 +2118.22745350336 +13 +200.646177778547 +23 +-810.693774595514 +33 +2118.22745350336 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-820.853629053581 +30 +2169.2659973228 +11 +97.3015169041444 +21 +-794.16656 +31 +2171.89246330095 +12 +45.3075256523042 +22 +-794.16656 +32 +2171.89246330095 +13 +45.3075256523042 +23 +-794.16656 +33 +2171.89246330095 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-794.16656 +30 +2171.89246330095 +11 +45.3075256523042 +21 +-820.853629053581 +31 +2169.2659973228 +12 +97.3015169041444 +22 +-820.853629053581 +32 +2169.2659973228 +13 +97.3015169041444 +23 +-820.853629053581 +33 +2169.2659973228 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-794.16656 +30 +2052.98408188445 +11 +1080.07459980683 +21 +-800.976532807249 +31 +2069.41239686438 +12 +1085.39140477935 +22 +-797.638258585694 +32 +2052.64240711292 +13 +1085.39140477935 +23 +-797.638258585694 +33 +2052.64240711292 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-800.976532807249 +30 +2069.41239686438 +11 +1085.39140477935 +21 +-794.16656 +31 +2052.98408188445 +12 +1080.07459980683 +22 +-794.16656 +32 +2070.08261515828 +13 +1080.07459980683 +23 +-794.16656 +33 +2070.08261515828 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-800.976532807249 +30 +2069.41239686438 +11 +1071.44060782234 +21 +-813.559725087093 +31 +2081.98611059205 +12 +1080.07459980683 +22 +-807.524802178593 +32 +2067.42749809583 +13 +1080.07459980683 +23 +-807.524802178593 +33 +2067.42749809583 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-813.559725087093 +30 +2081.98611059205 +11 +1080.07459980683 +21 +-800.976532807249 +31 +2069.41239686438 +12 +1071.44060782234 +22 +-804.053109826237 +32 +2084.86773745469 +13 +1071.44060782234 +23 +-804.053109826237 +33 +2084.86773745469 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-804.053109826237 +30 +2084.86773745469 +11 +1059.82120360007 +21 +-818.84937773729 +31 +2094.74683750463 +12 +1071.44060782234 +22 +-813.559725087093 +32 +2081.98611059205 +13 +1071.44060782234 +23 +-813.559725087093 +33 +2081.98611059205 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-818.84937773729 +30 +2094.74683750463 +11 +1071.44060782234 +21 +-804.053109826237 +31 +2084.86773745469 +12 +1059.82120360007 +22 +-806.749751362303 +32 +2098.41445288964 +13 +1059.82120360007 +23 +-806.749751362303 +33 +2098.41445288964 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-808.96283299496 +30 +2109.5319806407 +11 +1059.82120360007 +21 +-818.84937773729 +31 +2094.74683750463 +12 +1059.82120360007 +22 +-806.749751362303 +32 +2098.41445288964 +13 +1059.82120360007 +23 +-806.749751362303 +33 +2098.41445288964 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-818.84937773729 +30 +2094.74683750463 +11 +1045.6629890274 +21 +-808.96283299496 +31 +2109.5319806407 +12 +1045.6629890274 +22 +-823.19049351657 +32 +2105.21931965394 +13 +1045.6629890274 +23 +-823.19049351657 +33 +2105.21931965394 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-810.607297088473 +30 +2117.79302936366 +11 +1045.6629890274 +21 +-823.19049351657 +31 +2105.21931965394 +12 +1045.6629890274 +22 +-808.96283299496 +32 +2109.5319806407 +13 +1045.6629890274 +23 +-808.96283299496 +33 +2109.5319806407 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-823.19049351657 +30 +2105.21931965394 +11 +1029.5099682249 +21 +-810.607297088473 +31 +2117.79302936366 +12 +1029.5099682249 +22 +-826.416225870708 +32 +2113.00105739483 +13 +1029.5099682249 +23 +-826.416225870708 +33 +2113.00105739483 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-811.619948505454 +30 +2122.88013508281 +11 +1029.5099682249 +21 +-826.416225870708 +31 +2113.00105739483 +12 +1029.5099682249 +22 +-810.607297088473 +32 +2117.79302936366 +13 +1029.5099682249 +23 +-810.607297088473 +33 +2117.79302936366 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-826.416225870708 +30 +2113.00105739483 +11 +1011.98285238754 +21 +-811.619948505454 +31 +2122.88013508281 +12 +1011.98285238754 +22 +-828.402613078617 +32 +2117.79300620111 +13 +1011.98285238754 +23 +-828.402613078617 +33 +2117.79300620111 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-811.961287013471 +30 +2124.59486637848 +11 +1011.98285238754 +21 +-828.402613078617 +31 +2117.79300620111 +12 +1011.98285238754 +22 +-811.619948505454 +32 +2122.88013508281 +13 +1011.98285238754 +23 +-811.619948505454 +33 +2122.88013508281 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-828.402613078617 +30 +2117.79300620111 +11 +993.755281646067 +21 +-811.961287013471 +31 +2124.59486637848 +12 +993.755281646067 +22 +-829.072172647213 +32 +2119.40824776262 +13 +993.755281646067 +23 +-829.072172647213 +33 +2119.40824776262 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-874.837883980304 +30 +2229.81318035484 +11 +993.755281646067 +21 +-835.292444325637 +31 +2241.80011766922 +12 +947.039601646067 +22 +-835.292444325637 +32 +2241.80011766922 +13 +947.039601646067 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-835.292444325637 +30 +2241.80011766922 +11 +947.039601646067 +21 +-874.837883980304 +31 +2229.81318035484 +12 +993.755281646067 +22 +-874.837883980304 +32 +2229.81318035484 +13 +993.755281646067 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-874.837883980304 +30 +2229.81318035484 +11 +900.323921646066 +21 +-826.396760603478 +31 +2197.11219961575 +12 +900.323921646066 +22 +-857.388372672667 +32 +2187.71808200347 +13 +900.323921646066 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-826.396760603478 +30 +2197.11219961575 +11 +947.039601646067 +21 +-874.837883980304 +31 +2229.81318035484 +12 +947.039601646067 +22 +-835.292444325637 +32 +2241.80011766922 +13 +947.039601646067 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-826.396760603478 +30 +2197.11219961575 +11 +853.608241646067 +21 +-874.837883980304 +31 +2229.81318035484 +12 +900.323921646066 +22 +-857.388372672667 +32 +2187.71808200347 +13 +900.323921646066 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-874.837883980304 +30 +2229.81318035484 +11 +900.323921646066 +21 +-826.396760603478 +31 +2197.11219961575 +12 +853.608241646067 +22 +-835.292444325637 +32 +2241.80011766922 +13 +853.608241646067 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-874.837883980304 +30 +2229.81318035484 +11 +806.892561646067 +21 +-826.396760603478 +31 +2197.11219961575 +12 +806.892561646067 +22 +-857.388372672667 +32 +2187.71808200347 +13 +806.892561646067 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-826.396760603478 +30 +2197.11219961575 +11 +853.608241646067 +21 +-874.837883980304 +31 +2229.81318035484 +12 +853.608241646067 +22 +-835.292444325637 +32 +2241.80011766922 +13 +853.608241646067 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-826.396760603478 +30 +2197.11219961575 +11 +760.176881646066 +21 +-874.837883980304 +31 +2229.81318035484 +12 +806.892561646067 +22 +-857.388372672667 +32 +2187.71808200347 +13 +806.892561646067 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-874.837883980304 +30 +2229.81318035484 +11 +806.892561646067 +21 +-826.396760603478 +31 +2197.11219961575 +12 +760.176881646066 +22 +-835.292444325637 +32 +2241.80011766922 +13 +760.176881646066 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-874.837883980304 +30 +2229.81318035484 +11 +713.461201646067 +21 +-826.396760603478 +31 +2197.11219961575 +12 +713.461201646067 +22 +-857.388372672667 +32 +2187.71808200347 +13 +713.461201646067 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-826.396760603478 +30 +2197.11219961575 +11 +760.176881646066 +21 +-874.837883980304 +31 +2229.81318035484 +12 +760.176881646066 +22 +-835.292444325637 +32 +2241.80011766922 +13 +760.176881646066 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-826.396760603478 +30 +2197.11219961575 +11 +666.745521646067 +21 +-874.837883980304 +31 +2229.81318035484 +12 +713.461201646067 +22 +-857.388372672667 +32 +2187.71808200347 +13 +713.461201646067 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-874.837883980304 +30 +2229.81318035484 +11 +713.461201646067 +21 +-826.396760603478 +31 +2197.11219961575 +12 +666.745521646067 +22 +-835.292444325637 +32 +2241.80011766922 +13 +666.745521646067 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-874.837883980304 +30 +2229.81318035484 +11 +666.745521646067 +21 +-835.292444325637 +31 +2241.80011766922 +12 +635.537064906387 +22 +-835.292444325637 +32 +2241.80011766922 +13 +635.537064906387 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-835.292444325637 +30 +2241.80011766922 +11 +635.537064906387 +21 +-874.837883980304 +31 +2229.81318035484 +12 +666.745521646067 +22 +-874.837883980304 +32 +2229.81318035484 +13 +666.745521646067 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-857.388372672667 +30 +2187.71808200347 +11 +635.537064906387 +21 +-826.396760603478 +31 +2197.11219961575 +12 +200.646177778547 +22 +-826.396760603478 +32 +2197.11219961575 +13 +200.646177778547 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-826.396760603478 +30 +2197.11219961575 +11 +200.646177778547 +21 +-857.388372672667 +31 +2187.71808200347 +12 +635.537064906387 +22 +-857.388372672667 +32 +2187.71808200347 +13 +635.537064906387 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-826.585857602691 +30 +2113.41027598642 +11 +200.646177778547 +21 +-810.693774595514 +31 +2118.22745350336 +12 +97.3015169041444 +22 +-810.693774595514 +32 +2118.22745350336 +13 +97.3015169041444 +23 +-810.693774595514 +33 +2118.22745350336 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-810.693774595514 +30 +2118.22745350336 +11 +97.3015169041444 +21 +-826.585857602691 +31 +2113.41027598642 +12 +200.646177778547 +22 +-826.585857602691 +32 +2113.41027598642 +13 +200.646177778547 +23 +-826.585857602691 +33 +2113.41027598642 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-846.515129009712 +30 +2161.48753300293 +11 +97.3015169041444 +21 +-820.853629053581 +31 +2169.2659973228 +12 +45.3075256523042 +22 +-820.853629053581 +32 +2169.2659973228 +13 +45.3075256523042 +23 +-820.853629053581 +33 +2169.2659973228 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-820.853629053581 +30 +2169.2659973228 +11 +45.3075256523042 +21 +-846.515129009712 +31 +2161.48753300293 +12 +97.3015169041444 +22 +-846.515129009712 +32 +2161.48753300293 +13 +97.3015169041444 +23 +-846.515129009712 +33 +2161.48753300293 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-797.638258585694 +30 +2052.64240711292 +11 +1080.07459980683 +21 +-807.524802178593 +31 +2067.42749809583 +12 +1085.39140477935 +22 +-800.976541741692 +32 +2051.63051316818 +13 +1085.39140477935 +23 +-800.976541741692 +33 +2051.63051316818 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-807.524802178593 +30 +2067.42749809583 +11 +1085.39140477935 +21 +-797.638258585694 +31 +2052.64240711292 +12 +1080.07459980683 +22 +-800.976532807249 +32 +2069.41239686438 +13 +1080.07459980683 +23 +-800.976532807249 +33 +2069.41239686438 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-807.524802178593 +30 +2067.42749809583 +11 +1071.44060782234 +21 +-822.321071889464 +31 +2077.30660248764 +12 +1080.07459980683 +22 +-813.559721794402 +32 +2064.20419739918 +13 +1080.07459980683 +23 +-813.559721794402 +33 +2064.20419739918 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-822.321071889464 +30 +2077.30660248764 +11 +1080.07459980683 +21 +-807.524802178593 +31 +2067.42749809583 +12 +1071.44060782234 +22 +-813.559725087093 +32 +2081.98611059205 +13 +1071.44060782234 +23 +-813.559725087093 +33 +2081.98611059205 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-813.559725087093 +30 +2081.98611059205 +11 +1059.82120360007 +21 +-830.000457268917 +31 +2088.79095329889 +12 +1071.44060782234 +22 +-822.321071889464 +32 +2077.30660248764 +13 +1071.44060782234 +23 +-822.321071889464 +33 +2077.30660248764 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-830.000457268917 +30 +2088.79095329889 +11 +1071.44060782234 +21 +-813.559725087093 +31 +2081.98611059205 +12 +1059.82120360007 +22 +-818.84937773729 +32 +2094.74683750463 +13 +1059.82120360007 +23 +-818.84937773729 +33 +2094.74683750463 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-823.19049351657 +30 +2105.21931965394 +11 +1059.82120360007 +21 +-830.000457268917 +31 +2088.79095329889 +12 +1059.82120360007 +22 +-818.84937773729 +32 +2094.74683750463 +13 +1059.82120360007 +23 +-818.84937773729 +33 +2094.74683750463 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-830.000457268917 +30 +2088.79095329889 +11 +1045.6629890274 +21 +-823.19049351657 +31 +2105.21931965394 +12 +1045.6629890274 +22 +-836.302780549948 +32 +2098.2159382305 +13 +1045.6629890274 +23 +-836.302780549948 +33 +2098.2159382305 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-826.416225870708 +30 +2113.00105739483 +11 +1045.6629890274 +21 +-836.302780549948 +31 +2098.2159382305 +12 +1045.6629890274 +22 +-823.19049351657 +32 +2105.21931965394 +13 +1045.6629890274 +23 +-823.19049351657 +33 +2105.21931965394 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-836.302780549948 +30 +2098.2159382305 +11 +1029.5099682249 +21 +-826.416225870708 +31 +2113.00105739483 +12 +1029.5099682249 +22 +-840.985818079353 +32 +2105.21931717198 +13 +1029.5099682249 +23 +-840.985818079353 +33 +2105.21931717198 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-828.402613078617 +30 +2117.79300620111 +11 +1029.5099682249 +21 +-840.985818079353 +31 +2105.21931717198 +12 +1029.5099682249 +22 +-826.416225870708 +32 +2113.00105739483 +13 +1029.5099682249 +23 +-826.416225870708 +33 +2113.00105739483 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-840.985818079353 +30 +2105.21931717198 +11 +1011.98285238754 +21 +-828.402613078617 +31 +2117.79300620111 +12 +1011.98285238754 +22 +-843.869605331769 +32 +2109.53195716012 +13 +1011.98285238754 +23 +-843.869605331769 +33 +2109.53195716012 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-829.072172647213 +30 +2119.40824776262 +11 +1011.98285238754 +21 +-843.869605331769 +31 +2109.53195716012 +12 +1011.98285238754 +22 +-828.402613078617 +32 +2117.79300620111 +13 +1011.98285238754 +23 +-828.402613078617 +33 +2117.79300620111 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-843.869605331769 +30 +2109.53195716012 +11 +993.755281646067 +21 +-829.072172647213 +31 +2119.40824776262 +12 +993.755281646067 +22 +-844.841655162215 +32 +2110.9856361601 +13 +993.755281646067 +23 +-844.841655162215 +33 +2110.9856361601 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-911.283169895404 +30 +2210.34745041008 +11 +993.755281646067 +21 +-874.837883980304 +31 +2229.81318035484 +12 +947.039601646067 +22 +-874.837883980304 +32 +2229.81318035484 +13 +947.039601646067 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-874.837883980304 +30 +2229.81318035484 +11 +947.039601646067 +21 +-911.283169895404 +31 +2210.34745041008 +12 +993.755281646067 +22 +-911.283169895404 +32 +2210.34745041008 +13 +993.755281646067 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-911.283169895404 +30 +2210.34745041008 +11 +900.323921646066 +21 +-857.388372672667 +31 +2187.71808200347 +12 +900.323921646066 +22 +-885.950405936049 +32 +2172.46286278326 +13 +900.323921646066 +23 +-885.950405936049 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-857.388372672667 +30 +2187.71808200347 +11 +947.039601646067 +21 +-911.283169895404 +31 +2210.34745041008 +12 +947.039601646067 +22 +-874.837883980304 +32 +2229.81318035484 +13 +947.039601646067 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-857.388372672667 +30 +2187.71808200347 +11 +853.608241646067 +21 +-911.283169895404 +31 +2210.34745041008 +12 +900.323921646066 +22 +-885.950405936049 +32 +2172.46286278326 +13 +900.323921646066 +23 +-885.950405936049 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-911.283169895404 +30 +2210.34745041008 +11 +900.323921646066 +21 +-857.388372672667 +31 +2187.71808200347 +12 +853.608241646067 +22 +-874.837883980304 +32 +2229.81318035484 +13 +853.608241646067 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-911.283169895404 +30 +2210.34745041008 +11 +806.892561646067 +21 +-857.388372672667 +31 +2187.71808200347 +12 +806.892561646067 +22 +-885.950405936049 +32 +2172.46286278326 +13 +806.892561646067 +23 +-885.950405936049 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-857.388372672667 +30 +2187.71808200347 +11 +853.608241646067 +21 +-911.283169895404 +31 +2210.34745041008 +12 +853.608241646067 +22 +-874.837883980304 +32 +2229.81318035484 +13 +853.608241646067 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-857.388372672667 +30 +2187.71808200347 +11 +760.176881646066 +21 +-911.283169895404 +31 +2210.34745041008 +12 +806.892561646067 +22 +-885.950405936049 +32 +2172.46286278326 +13 +806.892561646067 +23 +-885.950405936049 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-911.283169895404 +30 +2210.34745041008 +11 +806.892561646067 +21 +-857.388372672667 +31 +2187.71808200347 +12 +760.176881646066 +22 +-874.837883980304 +32 +2229.81318035484 +13 +760.176881646066 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-911.283169895404 +30 +2210.34745041008 +11 +713.461201646067 +21 +-857.388372672667 +31 +2187.71808200347 +12 +713.461201646067 +22 +-885.950405936049 +32 +2172.46286278326 +13 +713.461201646067 +23 +-885.950405936049 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-857.388372672667 +30 +2187.71808200347 +11 +760.176881646066 +21 +-911.283169895404 +31 +2210.34745041008 +12 +760.176881646066 +22 +-874.837883980304 +32 +2229.81318035484 +13 +760.176881646066 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-857.388372672667 +30 +2187.71808200347 +11 +666.745521646067 +21 +-911.283169895404 +31 +2210.34745041008 +12 +713.461201646067 +22 +-885.950405936049 +32 +2172.46286278326 +13 +713.461201646067 +23 +-885.950405936049 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-911.283169895404 +30 +2210.34745041008 +11 +713.461201646067 +21 +-857.388372672667 +31 +2187.71808200347 +12 +666.745521646067 +22 +-874.837883980304 +32 +2229.81318035484 +13 +666.745521646067 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-911.283169895404 +30 +2210.34745041008 +11 +666.745521646067 +21 +-874.837883980304 +31 +2229.81318035484 +12 +635.537064906387 +22 +-874.837883980304 +32 +2229.81318035484 +13 +635.537064906387 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-874.837883980304 +30 +2229.81318035484 +11 +635.537064906387 +21 +-911.283169895404 +31 +2210.34745041008 +12 +666.745521646067 +22 +-911.283169895404 +32 +2210.34745041008 +13 +666.745521646067 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-885.950405936048 +30 +2172.46286278326 +11 +635.537064906387 +21 +-857.388372672667 +31 +2187.71808200347 +12 +200.646177778547 +22 +-857.388372672667 +32 +2187.71808200347 +13 +200.646177778547 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-857.388372672667 +30 +2187.71808200347 +11 +200.646177778547 +21 +-885.950405936048 +31 +2172.46286278326 +12 +635.537064906387 +22 +-885.950405936048 +32 +2172.46286278326 +13 +635.537064906387 +23 +-885.950405936048 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-841.232085183949 +30 +2105.58760417448 +11 +200.646177778547 +21 +-826.585857602691 +31 +2113.41027598642 +12 +97.3015169041444 +22 +-826.585857602691 +32 +2113.41027598642 +13 +97.3015169041444 +23 +-826.585857602691 +33 +2113.41027598642 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-826.585857602691 +30 +2113.41027598642 +11 +97.3015169041444 +21 +-841.232085183949 +31 +2105.58760417448 +12 +200.646177778547 +22 +-841.232085183949 +32 +2105.58760417448 +13 +200.646177778547 +23 +-841.232085183949 +33 +2105.58760417448 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-870.164902816216 +30 +2148.85599236295 +11 +97.3015169041444 +21 +-846.515129009712 +31 +2161.48753300293 +12 +45.3075256523042 +22 +-846.515129009712 +32 +2161.48753300293 +13 +45.3075256523042 +23 +-846.515129009712 +33 +2161.48753300293 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-846.515129009712 +30 +2161.48753300293 +11 +45.3075256523042 +21 +-870.164902816216 +31 +2148.85599236295 +12 +97.3015169041444 +22 +-870.164902816216 +32 +2148.85599236295 +13 +97.3015169041444 +23 +-870.164902816216 +33 +2148.85599236295 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-800.976541741692 +30 +2051.63051316818 +11 +1080.07459980683 +21 +-813.559721794402 +31 +2064.20419739918 +12 +1085.39140477935 +22 +-804.053121118439 +32 +2049.98728656705 +13 +1085.39140477935 +23 +-804.053121118439 +33 +2049.98728656705 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-813.559721794402 +30 +2064.20419739918 +11 +1085.39140477935 +21 +-800.976541741692 +31 +2051.63051316818 +12 +1080.07459980683 +22 +-807.524802178593 +32 +2067.42749809583 +13 +1080.07459980683 +23 +-807.524802178593 +33 +2067.42749809583 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-813.559721794402 +30 +2064.20419739918 +11 +1071.44060782234 +21 +-830.000456589156 +31 +2071.00904401361 +12 +1080.07459980683 +22 +-818.849373078262 +32 +2059.86636441255 +13 +1080.07459980683 +23 +-818.849373078262 +33 +2059.86636441255 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-830.000456589156 +30 +2071.00904401361 +11 +1080.07459980683 +21 +-813.559721794402 +31 +2064.20419739918 +12 +1071.44060782234 +22 +-822.321071889464 +32 +2077.30660248764 +13 +1071.44060782234 +23 +-822.321071889464 +33 +2077.30660248764 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-822.321071889464 +30 +2077.30660248764 +11 +1059.82120360007 +21 +-839.774460224379 +31 +2080.77568156236 +12 +1071.44060782234 +22 +-830.000456589156 +32 +2071.00904401361 +13 +1071.44060782234 +23 +-830.000456589156 +33 +2071.00904401361 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-839.774460224379 +30 +2080.77568156236 +11 +1071.44060782234 +21 +-822.321071889464 +31 +2077.30660248764 +12 +1059.82120360007 +22 +-830.000457268917 +32 +2088.79095329889 +13 +1059.82120360007 +23 +-830.000457268917 +33 +2088.79095329889 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-830.000457268917 +30 +2088.79095329889 +11 +1045.6629890274 +21 +-847.795796257855 +31 +2088.79097239093 +12 +1059.82120360007 +22 +-839.774460224379 +32 +2080.77568156236 +13 +1059.82120360007 +23 +-839.774460224379 +33 +2080.77568156236 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-847.795796257855 +30 +2088.79097239093 +11 +1059.82120360007 +21 +-830.000457268917 +31 +2088.79095329889 +12 +1045.6629890274 +22 +-836.302780549948 +32 +2098.2159382305 +13 +1045.6629890274 +23 +-836.302780549948 +33 +2098.2159382305 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-840.985818079353 +30 +2105.21931717198 +11 +1045.6629890274 +21 +-847.795796257855 +31 +2088.79097239093 +12 +1045.6629890274 +22 +-836.302780549948 +32 +2098.2159382305 +13 +1045.6629890274 +23 +-836.302780549948 +33 +2098.2159382305 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-847.795796257855 +30 +2088.79097239093 +11 +1029.5099682249 +21 +-840.985818079353 +31 +2105.21931717198 +12 +1029.5099682249 +22 +-853.75617245655 +32 +2094.74685660782 +13 +1029.5099682249 +23 +-853.75617245655 +33 +2094.74685660782 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-843.869605331769 +30 +2109.53195716012 +11 +1029.5099682249 +21 +-853.75617245655 +31 +2094.74685660782 +12 +1029.5099682249 +22 +-840.985818079353 +32 +2105.21931717198 +13 +1029.5099682249 +23 +-840.985818079353 +33 +2105.21931717198 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-853.75617245655 +30 +2094.74685660782 +11 +1011.98285238754 +21 +-843.869605331769 +31 +2109.53195716012 +12 +1011.98285238754 +22 +-857.426537426609 +32 +2098.41445544163 +13 +1011.98285238754 +23 +-857.426537426609 +33 +2098.41445544163 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-844.841655162215 +30 +2110.9856361601 +11 +1011.98285238754 +21 +-857.426537426609 +31 +2098.41445544163 +12 +1011.98285238754 +22 +-843.869605331769 +32 +2109.53195716012 +13 +1011.98285238754 +23 +-843.869605331769 +33 +2109.53195716012 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-857.426537426609 +30 +2098.41445544163 +11 +993.755281646067 +21 +-844.841655162215 +31 +2110.9856361601 +12 +993.755281646067 +22 +-858.663722189056 +32 +2099.65070781135 +13 +993.755281646067 +23 +-858.663722189056 +33 +2099.65070781135 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-943.227730171979 +30 +2184.1509849202 +11 +993.755281646067 +21 +-911.283169895404 +31 +2210.34745041008 +12 +947.039601646067 +22 +-911.283169895404 +32 +2210.34745041008 +13 +947.039601646067 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-911.283169895404 +30 +2210.34745041008 +11 +947.039601646067 +21 +-943.227730171979 +31 +2184.1509849202 +12 +993.755281646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +993.755281646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-943.227730171979 +30 +2184.1509849202 +11 +900.323921646066 +21 +-885.950405936049 +31 +2172.46286278326 +12 +900.323921646066 +22 +-910.985237473082 +32 +2151.93279147451 +13 +900.323921646066 +23 +-910.985237473082 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-885.950405936049 +30 +2172.46286278326 +11 +947.039601646067 +21 +-943.227730171979 +31 +2184.1509849202 +12 +947.039601646067 +22 +-911.283169895404 +32 +2210.34745041008 +13 +947.039601646067 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-885.950405936049 +30 +2172.46286278326 +11 +853.608241646067 +21 +-943.227730171979 +31 +2184.1509849202 +12 +900.323921646066 +22 +-910.985237473082 +32 +2151.93279147451 +13 +900.323921646066 +23 +-910.985237473082 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-943.227730171979 +30 +2184.1509849202 +11 +900.323921646066 +21 +-885.950405936049 +31 +2172.46286278326 +12 +853.608241646067 +22 +-911.283169895404 +32 +2210.34745041008 +13 +853.608241646067 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-943.227730171979 +30 +2184.1509849202 +11 +806.892561646067 +21 +-885.950405936049 +31 +2172.46286278326 +12 +806.892561646067 +22 +-910.985237473082 +32 +2151.93279147451 +13 +806.892561646067 +23 +-910.985237473082 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-885.950405936049 +30 +2172.46286278326 +11 +853.608241646067 +21 +-943.227730171979 +31 +2184.1509849202 +12 +853.608241646067 +22 +-911.283169895404 +32 +2210.34745041008 +13 +853.608241646067 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-885.950405936049 +30 +2172.46286278326 +11 +760.176881646066 +21 +-943.227730171979 +31 +2184.1509849202 +12 +806.892561646067 +22 +-910.985237473082 +32 +2151.93279147451 +13 +806.892561646067 +23 +-910.985237473082 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-943.227730171979 +30 +2184.1509849202 +11 +806.892561646067 +21 +-885.950405936049 +31 +2172.46286278326 +12 +760.176881646066 +22 +-911.283169895404 +32 +2210.34745041008 +13 +760.176881646066 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-943.227730171979 +30 +2184.1509849202 +11 +713.461201646067 +21 +-885.950405936049 +31 +2172.46286278326 +12 +713.461201646067 +22 +-910.985237473082 +32 +2151.93279147451 +13 +713.461201646067 +23 +-910.985237473082 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-885.950405936049 +30 +2172.46286278326 +11 +760.176881646066 +21 +-943.227730171979 +31 +2184.1509849202 +12 +760.176881646066 +22 +-911.283169895404 +32 +2210.34745041008 +13 +760.176881646066 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-885.950405936049 +30 +2172.46286278326 +11 +666.745521646067 +21 +-943.227730171979 +31 +2184.1509849202 +12 +713.461201646067 +22 +-910.985237473082 +32 +2151.93279147451 +13 +713.461201646067 +23 +-910.985237473082 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-943.227730171979 +30 +2184.1509849202 +11 +713.461201646067 +21 +-885.950405936049 +31 +2172.46286278326 +12 +666.745521646067 +22 +-911.283169895404 +32 +2210.34745041008 +13 +666.745521646067 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-943.227730171979 +30 +2184.1509849202 +11 +666.745521646067 +21 +-911.283169895404 +31 +2210.34745041008 +12 +635.537064906387 +22 +-911.283169895404 +32 +2210.34745041008 +13 +635.537064906387 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-911.283169895404 +30 +2210.34745041008 +11 +635.537064906387 +21 +-943.227730171979 +31 +2184.1509849202 +12 +666.745521646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +666.745521646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-910.985237473081 +30 +2151.93279147451 +11 +635.537064906387 +21 +-885.950405936048 +31 +2172.46286278326 +12 +200.646177778547 +22 +-885.950405936048 +32 +2172.46286278326 +13 +200.646177778547 +23 +-885.950405936048 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-885.950405936048 +30 +2172.46286278326 +11 +200.646177778547 +21 +-910.985237473081 +31 +2151.93279147451 +12 +635.537064906387 +22 +-910.985237473081 +32 +2151.93279147451 +13 +635.537064906387 +23 +-910.985237473081 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-854.069611027039 +30 +2095.06005895826 +11 +200.646177778547 +21 +-841.232085183949 +31 +2105.58760417448 +12 +97.3015169041444 +22 +-841.232085183949 +32 +2105.58760417448 +13 +97.3015169041444 +23 +-841.232085183949 +33 +2105.58760417448 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-841.232085183949 +30 +2105.58760417448 +11 +97.3015169041444 +21 +-854.069611027039 +31 +2095.06005895826 +12 +200.646177778547 +22 +-854.069611027035 +32 +2095.06005895826 +13 +200.646177778547 +23 +-854.069611027035 +33 +2095.06005895826 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-890.894102928655 +30 +2131.85679842581 +11 +97.3015169041444 +21 +-870.164902816216 +31 +2148.85599236295 +12 +45.3075256523042 +22 +-870.164902816216 +32 +2148.85599236295 +13 +45.3075256523042 +23 +-870.164902816216 +33 +2148.85599236295 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-870.164902816216 +30 +2148.85599236295 +11 +45.3075256523042 +21 +-890.894102928655 +31 +2131.85679842581 +12 +97.3015169041444 +22 +-890.894102928655 +32 +2131.85679842581 +13 +97.3015169041444 +23 +-890.894102928655 +33 +2131.85679842581 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-804.053121118439 +30 +2049.98728656705 +11 +1080.07459980683 +21 +-818.849373078262 +31 +2059.86636441255 +12 +1085.39140477935 +22 +-806.74976549585 +32 +2047.77587558629 +13 +1085.39140477935 +23 +-806.74976549585 +33 +2047.77587558629 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-818.849373078262 +30 +2059.86636441255 +11 +1085.39140477935 +21 +-804.053121118439 +31 +2049.98728656705 +12 +1080.07459980683 +22 +-813.559721794402 +32 +2064.20419739918 +13 +1080.07459980683 +23 +-813.559721794402 +33 +2064.20419739918 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-818.849373078262 +30 +2059.86636441255 +11 +1071.44060782234 +21 +-836.302764738808 +31 +2063.3354468104 +12 +1080.07459980683 +22 +-823.190477697806 +32 +2054.58069962494 +13 +1080.07459980683 +23 +-823.190477697806 +33 +2054.58069962494 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-836.302764738808 +30 +2063.3354468104 +11 +1080.07459980683 +21 +-818.849373078262 +31 +2059.86636441255 +12 +1071.44060782234 +22 +-830.000456589156 +32 +2071.00904401361 +13 +1071.44060782234 +23 +-830.000456589156 +33 +2071.00904401361 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-830.000456589156 +30 +2071.00904401361 +11 +1059.82120360007 +21 +-847.795777151423 +31 +2071.00904469286 +12 +1071.44060782234 +22 +-836.302764738808 +32 +2063.3354468104 +13 +1071.44060782234 +23 +-836.302764738808 +33 +2063.3354468104 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-847.795777151423 +30 +2071.00904469286 +11 +1071.44060782234 +21 +-830.000456589156 +31 +2071.00904401361 +12 +1059.82120360007 +22 +-839.774460224379 +32 +2080.77568156236 +13 +1059.82120360007 +23 +-839.774460224379 +33 +2080.77568156236 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-839.774460224379 +30 +2080.77568156236 +11 +1045.6629890274 +21 +-857.227870491995 +31 +2077.30661828686 +12 +1059.82120360007 +22 +-847.795777151423 +32 +2071.00904469286 +13 +1059.82120360007 +23 +-847.795777151423 +33 +2071.00904469286 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-857.227870491995 +30 +2077.30661828686 +11 +1059.82120360007 +21 +-839.774460224379 +31 +2080.77568156236 +12 +1045.6629890274 +22 +-847.795796257855 +32 +2088.79097239093 +13 +1045.6629890274 +23 +-847.795796257855 +33 +2088.79097239093 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-857.227870491995 +30 +2077.30661828686 +11 +1029.5099682249 +21 +-853.75617245655 +31 +2094.74685660782 +12 +1029.5099682249 +22 +-864.236531445284 +32 +2081.98612648882 +13 +1029.5099682249 +23 +-864.236531445284 +33 +2081.98612648882 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-853.75617245655 +30 +2094.74685660782 +11 +1045.6629890274 +21 +-857.227870491995 +31 +2077.30661828686 +12 +1045.6629890274 +22 +-847.795796257855 +32 +2088.79097239093 +13 +1045.6629890274 +23 +-847.795796257855 +33 +2088.79097239093 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-864.236531445284 +30 +2081.98612648882 +11 +1011.98285238754 +21 +-857.426537426609 +31 +2098.41445544163 +12 +1011.98285238754 +22 +-868.552424065547 +32 +2084.86774040193 +13 +1011.98285238754 +23 +-868.552424065547 +33 +2084.86774040193 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-857.426537426609 +30 +2098.41445544163 +11 +1029.5099682249 +21 +-864.236531445284 +31 +2081.98612648882 +12 +1029.5099682249 +22 +-853.75617245655 +32 +2094.74685660782 +13 +1029.5099682249 +23 +-853.75617245655 +33 +2094.74685660782 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-868.552424065547 +30 +2084.86774040193 +11 +993.755281646067 +21 +-858.663722189056 +31 +2099.65070781135 +12 +993.755281646067 +22 +-870.007199443395 +32 +2085.83905765611 +13 +993.755281646067 +23 +-870.007199443395 +33 +2085.83905765611 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-858.663722189056 +30 +2099.65070781135 +11 +1011.98285238754 +21 +-868.552424065547 +31 +2084.86774040193 +12 +1011.98285238754 +22 +-857.426537426609 +32 +2098.41445544163 +13 +1011.98285238754 +23 +-857.426537426609 +33 +2098.41445544163 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-969.443953273309 +30 +2152.23049936285 +11 +947.039601646067 +21 +-943.227730171979 +31 +2184.1509849202 +12 +947.039601646067 +22 +-969.443953273309 +32 +2152.23049936285 +13 +947.039601646067 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-943.227730171979 +30 +2184.1509849202 +11 +993.755281646067 +21 +-969.443953273309 +31 +2152.23049936285 +12 +993.755281646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +993.755281646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-969.443953273309 +30 +2152.23049936285 +11 +900.323921646066 +21 +-910.985237473082 +31 +2151.93279147451 +12 +900.323921646066 +22 +-931.530792747493 +32 +2126.91682720423 +13 +900.323921646066 +23 +-931.530792747493 +33 +2126.91682720423 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-910.985237473082 +30 +2151.93279147451 +11 +947.039601646067 +21 +-969.443953273309 +31 +2152.23049936285 +12 +947.039601646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +947.039601646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-910.985237473082 +30 +2151.93279147451 +11 +853.608241646067 +21 +-969.443953273309 +31 +2152.23049936285 +12 +900.323921646066 +22 +-931.530792747493 +32 +2126.91682720423 +13 +900.323921646066 +23 +-931.530792747493 +33 +2126.91682720423 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-969.443953273309 +30 +2152.23049936285 +11 +900.323921646066 +21 +-910.985237473082 +31 +2151.93279147451 +12 +853.608241646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +853.608241646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-969.443953273309 +30 +2152.23049936285 +11 +806.892561646067 +21 +-910.985237473082 +31 +2151.93279147451 +12 +806.892561646067 +22 +-931.530792747493 +32 +2126.91682720423 +13 +806.892561646067 +23 +-931.530792747493 +33 +2126.91682720423 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-910.985237473082 +30 +2151.93279147451 +11 +853.608241646067 +21 +-969.443953273309 +31 +2152.23049936285 +12 +853.608241646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +853.608241646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-910.985237473082 +30 +2151.93279147451 +11 +760.176881646066 +21 +-969.443953273309 +31 +2152.23049936285 +12 +806.892561646067 +22 +-931.530792747493 +32 +2126.91682720423 +13 +806.892561646067 +23 +-931.530792747493 +33 +2126.91682720423 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-969.443953273309 +30 +2152.23049936285 +11 +806.892561646067 +21 +-910.985237473082 +31 +2151.93279147451 +12 +760.176881646066 +22 +-943.227730171979 +32 +2184.1509849202 +13 +760.176881646066 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-969.443953273309 +30 +2152.23049936285 +11 +713.461201646067 +21 +-910.985237473082 +31 +2151.93279147451 +12 +713.461201646067 +22 +-931.530792747493 +32 +2126.91682720423 +13 +713.461201646067 +23 +-931.530792747493 +33 +2126.91682720423 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-910.985237473082 +30 +2151.93279147451 +11 +760.176881646066 +21 +-969.443953273309 +31 +2152.23049936285 +12 +760.176881646066 +22 +-943.227730171979 +32 +2184.1509849202 +13 +760.176881646066 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-910.985237473082 +30 +2151.93279147451 +11 +666.745521646067 +21 +-969.443953273309 +31 +2152.23049936285 +12 +713.461201646067 +22 +-931.530792747493 +32 +2126.91682720423 +13 +713.461201646067 +23 +-931.530792747493 +33 +2126.91682720423 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-969.443953273309 +30 +2152.23049936285 +11 +713.461201646067 +21 +-910.985237473082 +31 +2151.93279147451 +12 +666.745521646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +666.745521646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-969.443953273309 +30 +2152.23049936285 +11 +635.537064906387 +21 +-943.227730171979 +31 +2184.1509849202 +12 +635.537064906387 +22 +-969.443953273309 +32 +2152.23049936285 +13 +635.537064906387 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-943.227730171979 +30 +2184.1509849202 +11 +666.745521646067 +21 +-969.443953273309 +31 +2152.23049936285 +12 +666.745521646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +666.745521646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-931.530792747491 +30 +2126.91682720422 +11 +200.646177778547 +21 +-910.985237473081 +31 +2151.93279147451 +12 +200.646177778547 +22 +-931.530792747491 +32 +2126.91682720422 +13 +200.646177778547 +23 +-931.530792747491 +33 +2126.91682720422 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-910.985237473081 +30 +2151.93279147451 +11 +635.537064906387 +21 +-931.530792747491 +31 +2126.91682720422 +12 +635.537064906387 +22 +-910.985237473081 +32 +2151.93279147451 +13 +635.537064906387 +23 +-910.985237473081 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-864.605096213174 +30 +2082.23220799651 +11 +97.3015169041444 +21 +-854.069611027039 +31 +2095.06005895826 +12 +97.3015169041444 +22 +-864.605096213174 +32 +2082.23220799651 +13 +97.3015169041444 +23 +-864.605096213174 +33 +2082.23220799651 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-854.069611027039 +30 +2095.06005895826 +11 +200.646177778547 +21 +-864.605096213174 +31 +2082.23220799651 +12 +200.646177778547 +22 +-854.069611027035 +32 +2095.06005895826 +13 +200.646177778547 +23 +-854.069611027035 +33 +2095.06005895826 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-907.906117811778 +30 +2111.14322068125 +11 +45.3075256523042 +21 +-890.894102928655 +31 +2131.85679842581 +12 +45.3075256523042 +22 +-907.906117811778 +32 +2111.14322068125 +13 +45.3075256523042 +23 +-907.906117811778 +33 +2111.14322068125 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-890.894102928655 +30 +2131.85679842581 +11 +97.3015169041444 +21 +-907.906117811778 +31 +2111.14322068125 +12 +97.3015169041444 +22 +-890.894102928655 +32 +2131.85679842581 +13 +97.3015169041444 +23 +-890.894102928655 +33 +2131.85679842581 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-806.74976549585 +30 +2047.77587558629 +11 +1080.07459980683 +21 +-823.190477697806 +31 +2054.58069962494 +12 +1085.39140477935 +22 +-808.9628443428 +32 +2045.0812635097 +13 +1085.39140477935 +23 +-808.9628443428 +33 +2045.0812635097 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-823.190477697806 +30 +2054.58069962494 +11 +1085.39140477935 +21 +-806.74976549585 +31 +2047.77587558629 +12 +1080.07459980683 +22 +-818.849373078262 +32 +2059.86636441255 +13 +1080.07459980683 +23 +-818.849373078262 +33 +2059.86636441255 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-823.190477697806 +30 +2054.58069962494 +11 +1071.44060782234 +21 +-840.985802170601 +31 +2054.58070291515 +12 +1080.07459980683 +22 +-826.416209437024 +32 +2048.55032816988 +13 +1080.07459980683 +23 +-826.416209437024 +33 +2048.55032816988 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-840.985802170601 +30 +2054.58070291515 +11 +1080.07459980683 +21 +-823.190477697806 +31 +2054.58069962494 +12 +1071.44060782234 +22 +-836.302764738808 +32 +2063.3354468104 +13 +1071.44060782234 +23 +-836.302764738808 +33 +2063.3354468104 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-836.302764738808 +30 +2063.3354468104 +11 +1059.82120360007 +21 +-853.75615333895 +31 +2059.86636906807 +12 +1071.44060782234 +22 +-840.985802170601 +32 +2054.58070291515 +13 +1071.44060782234 +23 +-840.985802170601 +33 +2054.58070291515 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-853.75615333895 +30 +2059.86636906807 +11 +1071.44060782234 +21 +-836.302764738808 +31 +2063.3354468104 +12 +1059.82120360007 +22 +-847.795777151423 +32 +2071.00904469286 +13 +1059.82120360007 +23 +-847.795777151423 +33 +2071.00904469286 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-853.75615333895 +30 +2059.86636906807 +11 +1045.6629890274 +21 +-857.227870491995 +31 +2077.30661828686 +12 +1045.6629890274 +22 +-864.23653392912 +32 +2064.20421320603 +13 +1045.6629890274 +23 +-864.23653392912 +33 +2064.20421320603 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-857.227870491995 +30 +2077.30661828686 +11 +1059.82120360007 +21 +-853.75615333895 +31 +2059.86636906807 +12 +1059.82120360007 +22 +-847.795777151423 +32 +2071.00904469286 +13 +1059.82120360007 +23 +-847.795777151423 +33 +2071.00904469286 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-864.23653392912 +30 +2064.20421320603 +11 +1029.5099682249 +21 +-864.236531445284 +31 +2081.98612648882 +12 +1029.5099682249 +22 +-872.024140727066 +32 +2067.42751451714 +13 +1029.5099682249 +23 +-872.024140727066 +33 +2067.42751451714 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-864.236531445284 +30 +2081.98612648882 +11 +1045.6629890274 +21 +-864.23653392912 +31 +2064.20421320603 +12 +1045.6629890274 +22 +-857.227870491995 +32 +2077.30661828686 +13 +1045.6629890274 +23 +-857.227870491995 +33 +2077.30661828686 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-872.024140727066 +30 +2067.42751451714 +11 +1011.98285238754 +21 +-868.552424065547 +31 +2084.86774040193 +12 +1011.98285238754 +22 +-876.819703664523 +32 +2069.41240470289 +13 +1011.98285238754 +23 +-876.819703664523 +33 +2069.41240470289 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-868.552424065547 +30 +2084.86774040193 +11 +1029.5099682249 +21 +-872.024140727066 +31 +2067.42751451714 +12 +1029.5099682249 +22 +-864.236531445284 +32 +2081.98612648882 +13 +1029.5099682249 +23 +-864.236531445284 +33 +2081.98612648882 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-876.819703664523 +30 +2069.41240470289 +11 +993.755281646067 +21 +-870.007199443395 +31 +2085.83905765611 +12 +993.755281646067 +22 +-878.436163455843 +32 +2070.08145966418 +13 +993.755281646067 +23 +-878.436163455843 +33 +2070.08145966418 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-870.007199443395 +30 +2085.83905765611 +11 +1011.98285238754 +21 +-876.819703664523 +31 +2069.41240470289 +12 +1011.98285238754 +22 +-868.552424065547 +32 +2084.86774040193 +13 +1011.98285238754 +23 +-868.552424065547 +33 +2084.86774040193 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-988.924364447842 +30 +2115.81268009677 +11 +947.039601646067 +21 +-969.443953273309 +31 +2152.23049936285 +12 +947.039601646067 +22 +-988.924364447842 +32 +2115.81268009677 +13 +947.039601646067 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-969.443953273309 +30 +2152.23049936285 +11 +993.755281646067 +21 +-988.924364447842 +31 +2115.81268009677 +12 +993.755281646067 +22 +-969.443953273309 +32 +2152.23049936285 +13 +993.755281646067 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-988.924364447842 +30 +2115.81268009677 +11 +900.323921646066 +21 +-931.530792747493 +31 +2126.91682720423 +12 +900.323921646066 +22 +-946.797517592165 +32 +2098.3763194502 +13 +900.323921646066 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-931.530792747493 +30 +2126.91682720423 +11 +947.039601646067 +21 +-988.924364447842 +31 +2115.81268009677 +12 +947.039601646067 +22 +-969.443953273309 +32 +2152.23049936285 +13 +947.039601646067 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-931.530792747493 +30 +2126.91682720423 +11 +853.608241646067 +21 +-988.924364447842 +31 +2115.81268009677 +12 +900.323921646066 +22 +-946.797517592165 +32 +2098.3763194502 +13 +900.323921646066 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-988.924364447842 +30 +2115.81268009677 +11 +900.323921646066 +21 +-931.530792747493 +31 +2126.91682720423 +12 +853.608241646067 +22 +-969.443953273309 +32 +2152.23049936285 +13 +853.608241646067 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-988.924364447842 +30 +2115.81268009677 +11 +806.892561646067 +21 +-931.530792747493 +31 +2126.91682720423 +12 +806.892561646067 +22 +-946.797517592165 +32 +2098.3763194502 +13 +806.892561646067 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-931.530792747493 +30 +2126.91682720423 +11 +853.608241646067 +21 +-988.924364447842 +31 +2115.81268009677 +12 +853.608241646067 +22 +-969.443953273309 +32 +2152.23049936285 +13 +853.608241646067 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-931.530792747493 +30 +2126.91682720423 +11 +760.176881646066 +21 +-988.924364447842 +31 +2115.81268009677 +12 +806.892561646067 +22 +-946.797517592165 +32 +2098.3763194502 +13 +806.892561646067 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-988.924364447842 +30 +2115.81268009677 +11 +806.892561646067 +21 +-931.530792747493 +31 +2126.91682720423 +12 +760.176881646066 +22 +-969.443953273309 +32 +2152.23049936285 +13 +760.176881646066 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-988.924364447842 +30 +2115.81268009677 +11 +713.461201646067 +21 +-931.530792747493 +31 +2126.91682720423 +12 +713.461201646067 +22 +-946.797517592165 +32 +2098.3763194502 +13 +713.461201646067 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-931.530792747493 +30 +2126.91682720423 +11 +760.176881646066 +21 +-988.924364447842 +31 +2115.81268009677 +12 +760.176881646066 +22 +-969.443953273309 +32 +2152.23049936285 +13 +760.176881646066 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-931.530792747493 +30 +2126.91682720423 +11 +666.745521646067 +21 +-988.924364447842 +31 +2115.81268009677 +12 +713.461201646067 +22 +-946.797517592165 +32 +2098.3763194502 +13 +713.461201646067 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-988.924364447842 +30 +2115.81268009677 +11 +713.461201646067 +21 +-931.530792747493 +31 +2126.91682720423 +12 +666.745521646067 +22 +-969.443953273309 +32 +2152.23049936285 +13 +666.745521646067 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-988.924364447842 +30 +2115.81268009677 +11 +635.537064906387 +21 +-969.443953273309 +31 +2152.23049936285 +12 +635.537064906387 +22 +-988.924364447842 +32 +2115.81268009677 +13 +635.537064906387 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-969.443953273309 +30 +2152.23049936285 +11 +666.745521646067 +21 +-988.924364447842 +31 +2115.81268009677 +12 +666.745521646067 +22 +-969.443953273309 +32 +2152.23049936285 +13 +666.745521646067 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-946.797517592165 +30 +2098.3763194502 +11 +200.646177778547 +21 +-931.530792747491 +31 +2126.91682720422 +12 +200.646177778547 +22 +-946.797517592165 +32 +2098.3763194502 +13 +200.646177778547 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-931.530792747491 +30 +2126.91682720422 +11 +635.537064906387 +21 +-946.797517592165 +31 +2098.3763194502 +12 +635.537064906387 +22 +-931.530792747491 +32 +2126.91682720422 +13 +635.537064906387 +23 +-931.530792747491 +33 +2126.91682720422 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-872.433667955026 +30 +2067.59701840775 +11 +97.3015169041444 +21 +-864.605096213174 +31 +2082.23220799651 +12 +97.3015169041444 +22 +-872.433667955028 +32 +2067.59701840775 +13 +97.3015169041444 +23 +-872.433667955028 +33 +2067.59701840775 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-864.605096213174 +30 +2082.23220799651 +11 +200.646177778547 +21 +-872.433667955026 +31 +2067.59701840775 +12 +200.646177778547 +22 +-864.605096213174 +32 +2082.23220799651 +13 +200.646177778547 +23 +-864.605096213174 +33 +2082.23220799651 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-920.547185274073 +30 +2087.51127030568 +11 +45.3075256523042 +21 +-907.906117811778 +31 +2111.14322068125 +12 +45.3075256523042 +22 +-920.547185274073 +32 +2087.51127030568 +13 +45.3075256523042 +23 +-920.547185274073 +33 +2087.51127030568 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-907.906117811778 +30 +2111.14322068125 +11 +97.3015169041444 +21 +-920.547185274073 +31 +2087.51127030568 +12 +97.3015169041444 +22 +-907.906117811778 +32 +2111.14322068125 +13 +97.3015169041444 +23 +-907.906117811778 +33 +2111.14322068125 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-808.9628443428 +30 +2045.0812635097 +11 +1080.07459980683 +21 +-826.416209437024 +31 +2048.55032816988 +12 +1085.39140477935 +22 +-810.607310280307 +32 +2042.00700276824 +13 +1085.39140477935 +23 +-810.607310280307 +33 +2042.00700276824 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-826.416209437024 +30 +2048.55032816988 +11 +1085.39140477935 +21 +-808.9628443428 +31 +2045.0812635097 +12 +1080.07459980683 +22 +-823.190477697806 +32 +2054.58069962494 +13 +1080.07459980683 +23 +-823.190477697806 +33 +2054.58069962494 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-826.416209437024 +30 +2048.55032816988 +11 +1071.44060782234 +21 +-843.869602382313 +31 +2045.08125222601 +12 +1080.07459980683 +22 +-828.402605234187 +32 +2042.00699384053 +13 +1080.07459980683 +23 +-828.402605234187 +33 +2042.00699384053 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-843.869602382313 +30 +2045.08125222601 +11 +1080.07459980683 +21 +-826.416209437024 +31 +2048.55032816988 +12 +1071.44060782234 +22 +-840.985802170601 +32 +2054.58070291515 +13 +1071.44060782234 +23 +-840.985802170601 +33 +2054.58070291515 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-840.985802170601 +30 +2054.58070291515 +11 +1059.82120360007 +21 +-857.426534872689 +31 +2047.77586146339 +12 +1071.44060782234 +22 +-843.869602382313 +32 +2045.08125222601 +13 +1071.44060782234 +23 +-843.869602382313 +33 +2045.08125222601 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-857.426534872689 +30 +2047.77586146339 +11 +1071.44060782234 +21 +-840.985802170601 +31 +2054.58070291515 +12 +1059.82120360007 +22 +-853.75615333895 +32 +2059.86636906807 +13 +1059.82120360007 +23 +-853.75615333895 +33 +2059.86636906807 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-857.426534872689 +30 +2047.77586146339 +11 +1045.6629890274 +21 +-864.23653392912 +31 +2064.20421320603 +12 +1045.6629890274 +22 +-868.552447563839 +32 +2049.98727522776 +13 +1045.6629890274 +23 +-868.552447563839 +33 +2049.98727522776 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-864.23653392912 +30 +2064.20421320603 +11 +1059.82120360007 +21 +-857.426534872689 +31 +2047.77586146339 +12 +1059.82120360007 +22 +-853.75615333895 +32 +2059.86636906807 +13 +1059.82120360007 +23 +-853.75615333895 +33 +2059.86636906807 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-868.552447563839 +30 +2049.98727522776 +11 +1029.5099682249 +21 +-872.024140727066 +31 +2067.42751451714 +12 +1029.5099682249 +22 +-876.819726844542 +32 +2051.63049998629 +13 +1029.5099682249 +23 +-876.819726844542 +33 +2051.63049998629 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-872.024140727066 +30 +2067.42751451714 +11 +1045.6629890274 +21 +-868.552447563839 +31 +2049.98727522776 +12 +1045.6629890274 +22 +-864.23653392912 +32 +2064.20421320603 +13 +1045.6629890274 +23 +-864.23653392912 +33 +2064.20421320603 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-876.819726844542 +30 +2051.63049998629 +11 +1011.98285238754 +21 +-876.819703664523 +31 +2069.41240470289 +12 +1011.98285238754 +22 +-881.910669304885 +32 +2052.64238822799 +13 +1011.98285238754 +23 +-881.910669304885 +33 +2052.64238822799 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-876.819703664523 +30 +2069.41240470289 +11 +1029.5099682249 +21 +-876.819726844542 +31 +2051.63049998629 +12 +1029.5099682249 +22 +-872.024140727066 +32 +2067.42751451714 +13 +1029.5099682249 +23 +-872.024140727066 +33 +2067.42751451714 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-881.910669304885 +30 +2052.64238822799 +11 +993.755281646067 +21 +-878.436163455843 +31 +2070.08145966418 +12 +993.755281646067 +22 +-883.626693866424 +32 +2052.98346948944 +13 +993.755281646067 +23 +-883.626693866424 +33 +2052.98346948944 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-878.436163455843 +30 +2070.08145966418 +11 +1011.98285238754 +21 +-881.910669304885 +31 +2052.64238822799 +12 +1011.98285238754 +22 +-876.819703664523 +32 +2069.41240470289 +13 +1011.98285238754 +23 +-876.819703664523 +33 +2069.41240470289 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +947.039601646067 +21 +-988.924364447842 +31 +2115.81268009677 +12 +947.039601646067 +22 +-1000.92034241888 +32 +2076.297043493 +13 +947.039601646067 +23 +-1000.92034241888 +33 +2076.297043493 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-988.924364447842 +30 +2115.81268009677 +11 +993.755281646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +993.755281646067 +22 +-988.924364447842 +32 +2115.81268009677 +13 +993.755281646067 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +900.323921646066 +21 +-946.797517592165 +31 +2098.3763194502 +12 +900.323921646066 +22 +-956.198720333 +32 +2067.40806391972 +13 +900.323921646066 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-946.797517592165 +30 +2098.3763194502 +11 +947.039601646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +947.039601646067 +22 +-988.924364447842 +32 +2115.81268009677 +13 +947.039601646067 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-946.797517592165 +30 +2098.3763194502 +11 +853.608241646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +900.323921646066 +22 +-956.198720333 +32 +2067.40806391972 +13 +900.323921646066 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +900.323921646066 +21 +-946.797517592165 +31 +2098.3763194502 +12 +853.608241646067 +22 +-988.924364447842 +32 +2115.81268009677 +13 +853.608241646067 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +806.892561646067 +21 +-946.797517592165 +31 +2098.3763194502 +12 +806.892561646067 +22 +-956.198720333 +32 +2067.40806391972 +13 +806.892561646067 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-946.797517592165 +30 +2098.3763194502 +11 +853.608241646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +853.608241646067 +22 +-988.924364447842 +32 +2115.81268009677 +13 +853.608241646067 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-946.797517592165 +30 +2098.3763194502 +11 +760.176881646066 +21 +-1000.92034241888 +31 +2076.297043493 +12 +806.892561646067 +22 +-956.198720333 +32 +2067.40806391972 +13 +806.892561646067 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-1000.92034241888 +30 +2076.297043493 +11 +806.892561646067 +21 +-946.797517592165 +31 +2098.3763194502 +12 +760.176881646066 +22 +-988.924364447842 +32 +2115.81268009677 +13 +760.176881646066 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-1000.92034241888 +30 +2076.297043493 +11 +713.461201646067 +21 +-946.797517592165 +31 +2098.3763194502 +12 +713.461201646067 +22 +-956.198720333 +32 +2067.40806391972 +13 +713.461201646067 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-946.797517592165 +30 +2098.3763194502 +11 +760.176881646066 +21 +-1000.92034241888 +31 +2076.297043493 +12 +760.176881646066 +22 +-988.924364447842 +32 +2115.81268009677 +13 +760.176881646066 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-946.797517592165 +30 +2098.3763194502 +11 +666.745521646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +713.461201646067 +22 +-956.198720333 +32 +2067.40806391972 +13 +713.461201646067 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +713.461201646067 +21 +-946.797517592165 +31 +2098.3763194502 +12 +666.745521646067 +22 +-988.924364447842 +32 +2115.81268009677 +13 +666.745521646067 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +635.537064906387 +21 +-988.924364447842 +31 +2115.81268009677 +12 +635.537064906387 +22 +-1000.92034241888 +32 +2076.297043493 +13 +635.537064906387 +23 +-1000.92034241888 +33 +2076.297043493 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-988.924364447842 +30 +2115.81268009677 +11 +666.745521646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +666.745521646067 +22 +-988.924364447842 +32 +2115.81268009677 +13 +666.745521646067 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-956.198720333 +30 +2067.40806391972 +11 +200.646177778547 +21 +-946.797517592165 +31 +2098.3763194502 +12 +200.646177778547 +22 +-956.198720333 +32 +2067.40806391972 +13 +200.646177778547 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-946.797517592165 +30 +2098.3763194502 +11 +635.537064906387 +21 +-956.198720333 +31 +2067.40806391972 +12 +635.537064906387 +22 +-946.797517592165 +32 +2098.3763194502 +13 +635.537064906387 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-877.254478630867 +30 +2051.71691232036 +11 +97.3015169041444 +21 +-872.433667955028 +31 +2067.59701840775 +12 +97.3015169041444 +22 +-877.254478630867 +32 +2051.71691232036 +13 +97.3015169041444 +23 +-877.254478630867 +33 +2051.71691232036 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-872.433667955028 +30 +2067.59701840775 +11 +200.646177778547 +21 +-877.254478630867 +31 +2051.71691232036 +12 +200.646177778547 +22 +-872.433667955026 +32 +2067.59701840775 +13 +200.646177778547 +23 +-872.433667955026 +33 +2067.59701840775 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-928.331516182155 +30 +2061.8691098991 +11 +45.3075256523042 +21 +-920.547185274073 +31 +2087.51127030568 +12 +45.3075256523042 +22 +-928.331516182155 +32 +2061.8691098991 +13 +45.3075256523042 +23 +-928.331516182155 +33 +2061.8691098991 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-920.547185274073 +30 +2087.51127030568 +11 +97.3015169041444 +21 +-928.331516182155 +31 +2061.8691098991 +12 +97.3015169041444 +22 +-920.547185274073 +32 +2087.51127030568 +13 +97.3015169041444 +23 +-920.547185274073 +33 +2087.51127030568 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-810.607310280307 +30 +2042.00700276824 +11 +1080.07459980683 +21 +-828.402605234187 +31 +2042.00699384053 +12 +1085.39140477935 +22 +-811.619967404623 +32 +2038.67123547813 +13 +1085.39140477935 +23 +-811.619967404623 +33 +2038.67123547813 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-828.402605234187 +30 +2042.00699384053 +11 +1085.39140477935 +21 +-810.607310280307 +31 +2042.00700276824 +12 +1080.07459980683 +22 +-826.416209437024 +32 +2048.55032816988 +13 +1080.07459980683 +23 +-826.416209437024 +33 +2048.55032816988 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-828.402605234187 +30 +2042.00699384053 +11 +1071.44060782234 +21 +-844.843342549059 +31 +2035.20215330562 +12 +1080.07459980683 +22 +-829.073329012799 +32 +2035.20215330562 +13 +1080.07459980683 +23 +-829.073329012799 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-844.843342549059 +30 +2035.20215330562 +11 +1080.07459980683 +21 +-828.402605234187 +31 +2042.00699384053 +12 +1071.44060782234 +22 +-843.869602382313 +32 +2045.08125222601 +13 +1071.44060782234 +23 +-843.869602382313 +33 +2045.08125222601 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1071.44060782234 +20 +-843.869602382313 +30 +2045.08125222601 +11 +1059.82120360007 +21 +-858.665871048675 +31 +2035.20215330562 +12 +1071.44060782234 +22 +-844.843342549059 +32 +2035.20215330562 +13 +1071.44060782234 +23 +-844.843342549059 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-858.665871048675 +30 +2035.20215330562 +11 +1071.44060782234 +21 +-843.869602382313 +31 +2045.08125222601 +12 +1059.82120360007 +22 +-857.426534872689 +32 +2047.77586146339 +13 +1059.82120360007 +23 +-857.426534872689 +33 +2047.77586146339 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1059.82120360007 +20 +-858.665871048675 +30 +2035.20215330562 +11 +1045.6629890274 +21 +-868.552447563839 +31 +2049.98727522776 +12 +1045.6629890274 +22 +-870.009753255569 +32 +2035.20215330562 +13 +1045.6629890274 +23 +-870.009753255569 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-868.552447563839 +30 +2049.98727522776 +11 +1059.82120360007 +21 +-858.665871048675 +31 +2035.20215330562 +12 +1059.82120360007 +22 +-857.426534872689 +32 +2047.77586146339 +13 +1059.82120360007 +23 +-857.426534872689 +33 +2047.77586146339 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1045.6629890274 +20 +-870.009753255569 +30 +2035.20215330562 +11 +1029.5099682249 +21 +-876.819726844542 +31 +2051.63049998629 +12 +1029.5099682249 +22 +-878.438998112613 +32 +2035.20215330562 +13 +1029.5099682249 +23 +-878.438998112613 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-876.819726844542 +30 +2051.63049998629 +11 +1045.6629890274 +21 +-870.009753255569 +31 +2035.20215330562 +12 +1045.6629890274 +22 +-868.552447563839 +32 +2049.98727522776 +13 +1045.6629890274 +23 +-868.552447563839 +33 +2049.98727522776 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1029.5099682249 +20 +-878.438998112613 +30 +2035.20215330562 +11 +1011.98285238754 +21 +-881.910669304885 +31 +2052.64238822799 +12 +1011.98285238754 +22 +-883.629678032126 +32 +2035.20215330562 +13 +1011.98285238754 +23 +-883.629678032126 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-881.910669304885 +30 +2052.64238822799 +11 +1029.5099682249 +21 +-878.438998112613 +31 +2035.20215330562 +12 +1029.5099682249 +22 +-876.819726844542 +32 +2051.63049998629 +13 +1029.5099682249 +23 +-876.819726844542 +33 +2051.63049998629 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1011.98285238754 +20 +-883.629678032126 +30 +2035.20215330562 +11 +993.755281646067 +21 +-883.626693866424 +31 +2052.98346948944 +12 +993.755281646067 +22 +-885.379321502337 +32 +2035.20215330562 +13 +993.755281646067 +23 +-885.379321502337 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-883.626693866424 +30 +2052.98346948944 +11 +1011.98285238754 +21 +-883.629678032126 +31 +2035.20215330562 +12 +1011.98285238754 +22 +-881.910669304885 +32 +2052.64238822799 +13 +1011.98285238754 +23 +-881.910669304885 +33 +2052.64238822799 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-1004.97088848041 +30 +2035.20215330562 +11 +947.039601646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +947.039601646067 +22 +-1004.97088848041 +32 +2035.20215330562 +13 +947.039601646067 +23 +-1004.97088848041 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +993.755281646067 +21 +-1004.97088848041 +31 +2035.20215330562 +12 +993.755281646067 +22 +-1000.92034241888 +32 +2076.297043493 +13 +993.755281646067 +23 +-1000.92034241888 +33 +2076.297043493 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +947.039601646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +900.323921646066 +21 +-959.37311802092 +31 +2035.20215330562 +12 +947.039601646067 +22 +-1004.97088848041 +32 +2035.20215330562 +13 +947.039601646067 +23 +-1004.97088848041 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-959.37311802092 +30 +2035.20215330562 +11 +947.039601646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +900.323921646066 +22 +-956.198720333 +32 +2067.40806391972 +13 +900.323921646066 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +900.323921646066 +20 +-956.198720333 +30 +2067.40806391972 +11 +853.608241646067 +21 +-1004.97088848041 +31 +2035.20215330562 +12 +900.323921646066 +22 +-959.37311802092 +32 +2035.20215330562 +13 +900.323921646066 +23 +-959.37311802092 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-1004.97088848041 +30 +2035.20215330562 +11 +900.323921646066 +21 +-956.198720333 +31 +2067.40806391972 +12 +853.608241646067 +22 +-1000.92034241888 +32 +2076.297043493 +13 +853.608241646067 +23 +-1000.92034241888 +33 +2076.297043493 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +853.608241646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +806.892561646067 +21 +-959.37311802092 +31 +2035.20215330562 +12 +853.608241646067 +22 +-1004.97088848041 +32 +2035.20215330562 +13 +853.608241646067 +23 +-1004.97088848041 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-959.37311802092 +30 +2035.20215330562 +11 +853.608241646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +806.892561646067 +22 +-956.198720333 +32 +2067.40806391972 +13 +806.892561646067 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +806.892561646067 +20 +-956.198720333 +30 +2067.40806391972 +11 +760.176881646066 +21 +-1004.97088848041 +31 +2035.20215330562 +12 +806.892561646067 +22 +-959.37311802092 +32 +2035.20215330562 +13 +806.892561646067 +23 +-959.37311802092 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-1004.97088848041 +30 +2035.20215330562 +11 +806.892561646067 +21 +-956.198720333 +31 +2067.40806391972 +12 +760.176881646066 +22 +-1000.92034241888 +32 +2076.297043493 +13 +760.176881646066 +23 +-1000.92034241888 +33 +2076.297043493 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +760.176881646066 +20 +-1000.92034241888 +30 +2076.297043493 +11 +713.461201646067 +21 +-959.37311802092 +31 +2035.20215330562 +12 +760.176881646066 +22 +-1004.97088848041 +32 +2035.20215330562 +13 +760.176881646066 +23 +-1004.97088848041 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-959.37311802092 +30 +2035.20215330562 +11 +760.176881646066 +21 +-1000.92034241888 +31 +2076.297043493 +12 +713.461201646067 +22 +-956.198720333 +32 +2067.40806391972 +13 +713.461201646067 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +713.461201646067 +20 +-956.198720333 +30 +2067.40806391972 +11 +666.745521646067 +21 +-1004.97088848041 +31 +2035.20215330562 +12 +713.461201646067 +22 +-959.37311802092 +32 +2035.20215330562 +13 +713.461201646067 +23 +-959.37311802092 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-1004.97088848041 +30 +2035.20215330562 +11 +713.461201646067 +21 +-956.198720333 +31 +2067.40806391972 +12 +666.745521646067 +22 +-1000.92034241888 +32 +2076.297043493 +13 +666.745521646067 +23 +-1000.92034241888 +33 +2076.297043493 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +666.745521646067 +20 +-1004.97088848041 +30 +2035.20215330562 +11 +635.537064906387 +21 +-1000.92034241888 +31 +2076.297043493 +12 +635.537064906387 +22 +-1004.97088848041 +32 +2035.20215330562 +13 +635.537064906387 +23 +-1004.97088848041 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-1000.92034241888 +30 +2076.297043493 +11 +666.745521646067 +21 +-1004.97088848041 +31 +2035.20215330562 +12 +666.745521646067 +22 +-1000.92034241888 +32 +2076.297043493 +13 +666.745521646067 +23 +-1000.92034241888 +33 +2076.297043493 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-959.37311802092 +30 +2035.20215330562 +11 +200.646177778547 +21 +-956.198720333 +31 +2067.40806391972 +12 +200.646177778547 +22 +-959.37311802092 +32 +2035.20215330562 +13 +200.646177778547 +23 +-959.37311802092 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-956.198720333 +30 +2067.40806391972 +11 +635.537064906387 +21 +-959.37311802092 +31 +2035.20215330562 +12 +635.537064906387 +22 +-956.198720333 +32 +2067.40806391972 +13 +635.537064906387 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-878.882267189965 +30 +2035.20215330562 +11 +97.3015169041444 +21 +-877.254478630867 +31 +2051.71691232036 +12 +97.3015169041444 +22 +-878.882267189966 +32 +2035.20215330562 +13 +97.3015169041444 +23 +-878.882267189966 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-877.254478630867 +30 +2051.71691232036 +11 +200.646177778547 +21 +-878.882267189965 +31 +2035.20215330562 +12 +200.646177778547 +22 +-877.254478630867 +32 +2051.71691232036 +13 +200.646177778547 +23 +-877.254478630867 +33 +2051.71691232036 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-930.959963064732 +30 +2035.20215330562 +11 +45.3075256523042 +21 +-928.331516182155 +31 +2061.8691098991 +12 +45.3075256523042 +22 +-930.959963064732 +32 +2035.20215330562 +13 +45.3075256523042 +23 +-930.959963064732 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-928.331516182155 +30 +2061.8691098991 +11 +97.3015169041444 +21 +-930.959963064732 +31 +2035.20215330562 +12 +97.3015169041444 +22 +-928.331516182155 +32 +2061.8691098991 +13 +97.3015169041444 +23 +-928.331516182155 +33 +2061.8691098991 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-811.619967404623 +30 +2038.67123547813 +11 +1080.07459980683 +21 +-829.073329012799 +31 +2035.20215330562 +12 +1085.39140477935 +22 +-811.96189987036 +32 +2035.20215330562 +13 +1085.39140477935 +23 +-811.96189987036 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1080.07459980683 +20 +-829.073329012799 +30 +2035.20215330562 +11 +1085.39140477935 +21 +-811.619967404623 +31 +2038.67123547813 +12 +1080.07459980683 +22 +-828.402605234187 +32 +2042.00699384053 +13 +1080.07459980683 +23 +-828.402605234187 +33 +2042.00699384053 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-835.292444325637 +30 +2241.80011766922 +11 +635.537064906387 +21 +-794.16656 +31 +2200.28420494853 +12 +635.537064906387 +22 +-826.396760603478 +32 +2197.11219961575 +13 +635.537064906387 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-794.16656 +30 +2200.28420494853 +11 +635.537064906387 +21 +-835.292444325637 +31 +2241.80011766922 +12 +635.537064906387 +22 +-794.16656 +32 +2245.84761107459 +13 +635.537064906387 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-794.16656 +30 +2052.98408188445 +11 +1085.39140477935 +21 +-797.638258585694 +31 +2052.64240711292 +12 +1087.18664164607 +22 +-794.16656 +32 +2035.20215330562 +13 +1087.18664164607 +23 +-794.16656 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-797.638258585694 +30 +2052.64240711292 +11 +1085.39140477935 +21 +-800.976541741692 +31 +2051.63051316818 +12 +1087.18664164607 +22 +-794.16656 +32 +2035.20215330562 +13 +1087.18664164607 +23 +-794.16656 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-800.976541741692 +30 +2051.63051316818 +11 +1085.39140477935 +21 +-804.053121118439 +31 +2049.98728656705 +12 +1087.18664164607 +22 +-794.16656 +32 +2035.20215330562 +13 +1087.18664164607 +23 +-794.16656 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-804.053121118439 +30 +2049.98728656705 +11 +1085.39140477935 +21 +-806.74976549585 +31 +2047.77587558629 +12 +1087.18664164607 +22 +-794.16656 +32 +2035.20215330562 +13 +1087.18664164607 +23 +-794.16656 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-806.74976549585 +30 +2047.77587558629 +11 +1085.39140477935 +21 +-808.9628443428 +31 +2045.0812635097 +12 +1087.18664164607 +22 +-794.16656 +32 +2035.20215330562 +13 +1087.18664164607 +23 +-794.16656 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-808.9628443428 +30 +2045.0812635097 +11 +1085.39140477935 +21 +-810.607310280307 +31 +2042.00700276824 +12 +1087.18664164607 +22 +-794.16656 +32 +2035.20215330562 +13 +1087.18664164607 +23 +-794.16656 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-810.607310280307 +30 +2042.00700276824 +11 +1085.39140477935 +21 +-811.619967404623 +31 +2038.67123547813 +12 +1087.18664164607 +22 +-794.16656 +32 +2035.20215330562 +13 +1087.18664164607 +23 +-794.16656 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +1085.39140477935 +20 +-811.619967404623 +30 +2038.67123547813 +11 +1085.39140477935 +21 +-811.96189987036 +31 +2035.20215330562 +12 +1087.18664164607 +22 +-794.16656 +32 +2035.20215330562 +13 +1087.18664164607 +23 +-794.16656 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-883.626693866424 +30 +2052.98346948944 +11 +993.755281646067 +21 +-1004.97088848041 +31 +2035.20215330562 +12 +993.755281646067 +22 +-885.379321502337 +32 +2035.20215330562 +13 +993.755281646067 +23 +-885.379321502337 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-1004.97088848041 +30 +2035.20215330562 +11 +993.755281646067 +21 +-883.626693866424 +31 +2052.98346948944 +12 +993.755281646067 +22 +-1000.92034241888 +32 +2076.297043493 +13 +993.755281646067 +23 +-1000.92034241888 +33 +2076.297043493 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-872.433667955028 +30 +2067.59701840775 +11 +97.3015169041444 +21 +-928.331516182155 +31 +2061.8691098991 +12 +97.3015169041444 +22 +-877.254478630867 +32 +2051.71691232036 +13 +97.3015169041444 +23 +-877.254478630867 +33 +2051.71691232036 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-928.331516182155 +30 +2061.8691098991 +11 +97.3015169041444 +21 +-872.433667955028 +31 +2067.59701840775 +12 +97.3015169041444 +22 +-920.547185274073 +32 +2087.51127030568 +13 +97.3015169041444 +23 +-920.547185274073 +33 +2087.51127030568 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-920.547185274073 +30 +2087.51127030568 +11 +45.3075256523042 +21 +-794.16656 +31 +2035.20215330562 +12 +45.3075256523042 +22 +-928.331516182155 +32 +2061.8691098991 +13 +45.3075256523042 +23 +-928.331516182155 +33 +2061.8691098991 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-826.396760603478 +30 +2197.11219961575 +11 +200.646177778547 +21 +-794.16656 +31 +2119.85401529483 +12 +200.646177778547 +22 +-810.693774595514 +32 +2118.22745350336 +13 +200.646177778547 +23 +-810.693774595514 +33 +2118.22745350336 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-794.16656 +30 +2119.85401529483 +11 +200.646177778547 +21 +-826.396760603478 +31 +2197.11219961575 +12 +200.646177778547 +22 +-794.16656 +32 +2200.28420494853 +13 +200.646177778547 +23 +-794.16656 +33 +2200.28420494853 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-928.331516182155 +30 +2061.8691098991 +11 +45.3075256523042 +21 +-794.16656 +31 +2035.20215330562 +12 +45.3075256523042 +22 +-930.959963064732 +32 +2035.20215330562 +13 +45.3075256523042 +23 +-930.959963064732 +33 +2035.20215330562 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-794.16656 +30 +2171.89246330095 +11 +45.3075256523042 +21 +-794.16656 +31 +2035.20215330562 +12 +45.3075256523042 +22 +-820.853629053581 +32 +2169.2659973228 +13 +45.3075256523042 +23 +-820.853629053581 +33 +2169.2659973228 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-907.906117811778 +30 +2111.14322068125 +11 +45.3075256523042 +21 +-794.16656 +31 +2035.20215330562 +12 +45.3075256523042 +22 +-920.547185274073 +32 +2087.51127030568 +13 +45.3075256523042 +23 +-920.547185274073 +33 +2087.51127030568 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-890.894102928655 +30 +2131.85679842581 +11 +45.3075256523042 +21 +-794.16656 +31 +2035.20215330562 +12 +45.3075256523042 +22 +-907.906117811778 +32 +2111.14322068125 +13 +45.3075256523042 +23 +-907.906117811778 +33 +2111.14322068125 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-870.164902816216 +30 +2148.85599236295 +11 +45.3075256523042 +21 +-794.16656 +31 +2035.20215330562 +12 +45.3075256523042 +22 +-890.894102928655 +32 +2131.85679842581 +13 +45.3075256523042 +23 +-890.894102928655 +33 +2131.85679842581 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-846.515129009712 +30 +2161.48753300293 +11 +45.3075256523042 +21 +-794.16656 +31 +2035.20215330562 +12 +45.3075256523042 +22 +-870.164902816216 +32 +2148.85599236295 +13 +45.3075256523042 +23 +-870.164902816216 +33 +2148.85599236295 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +45.3075256523042 +20 +-820.853629053581 +30 +2169.2659973228 +11 +45.3075256523042 +21 +-794.16656 +31 +2035.20215330562 +12 +45.3075256523042 +22 +-846.515129009712 +32 +2161.48753300293 +13 +45.3075256523042 +23 +-846.515129009712 +33 +2161.48753300293 +70 +0 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-956.198720333 +30 +2067.40806391972 +11 +200.646177778547 +21 +-878.882267189965 +31 +2035.20215330562 +12 +200.646177778547 +22 +-959.37311802092 +32 +2035.20215330562 +13 +200.646177778547 +23 +-959.37311802092 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-878.882267189965 +30 +2035.20215330562 +11 +200.646177778547 +21 +-956.198720333 +31 +2067.40806391972 +12 +200.646177778547 +22 +-877.254478630867 +32 +2051.71691232036 +13 +200.646177778547 +23 +-877.254478630867 +33 +2051.71691232036 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-956.198720333 +30 +2067.40806391972 +11 +200.646177778547 +21 +-872.433667955026 +31 +2067.59701840775 +12 +200.646177778547 +22 +-877.254478630867 +32 +2051.71691232036 +13 +200.646177778547 +23 +-877.254478630867 +33 +2051.71691232036 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-872.433667955026 +30 +2067.59701840775 +11 +200.646177778547 +21 +-956.198720333 +31 +2067.40806391972 +12 +200.646177778547 +22 +-946.797517592165 +32 +2098.3763194502 +13 +200.646177778547 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-946.797517592165 +30 +2098.3763194502 +11 +200.646177778547 +21 +-864.605096213174 +31 +2082.23220799651 +12 +200.646177778547 +22 +-872.433667955026 +32 +2067.59701840775 +13 +200.646177778547 +23 +-872.433667955026 +33 +2067.59701840775 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-864.605096213174 +30 +2082.23220799651 +11 +200.646177778547 +21 +-946.797517592165 +31 +2098.3763194502 +12 +200.646177778547 +22 +-931.530792747491 +32 +2126.91682720422 +13 +200.646177778547 +23 +-931.530792747491 +33 +2126.91682720422 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-931.530792747491 +30 +2126.91682720422 +11 +200.646177778547 +21 +-854.069611027035 +31 +2095.06005895826 +12 +200.646177778547 +22 +-864.605096213174 +32 +2082.23220799651 +13 +200.646177778547 +23 +-864.605096213174 +33 +2082.23220799651 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-854.069611027035 +30 +2095.06005895826 +11 +200.646177778547 +21 +-931.530792747491 +31 +2126.91682720422 +12 +200.646177778547 +22 +-910.985237473081 +32 +2151.93279147451 +13 +200.646177778547 +23 +-910.985237473081 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-910.985237473081 +30 +2151.93279147451 +11 +200.646177778547 +21 +-841.232085183949 +31 +2105.58760417448 +12 +200.646177778547 +22 +-854.069611027035 +32 +2095.06005895826 +13 +200.646177778547 +23 +-854.069611027035 +33 +2095.06005895826 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-841.232085183949 +30 +2105.58760417448 +11 +200.646177778547 +21 +-910.985237473081 +31 +2151.93279147451 +12 +200.646177778547 +22 +-885.950405936048 +32 +2172.46286278326 +13 +200.646177778547 +23 +-885.950405936048 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-885.950405936048 +30 +2172.46286278326 +11 +200.646177778547 +21 +-826.585857602691 +31 +2113.41027598642 +12 +200.646177778547 +22 +-841.232085183949 +32 +2105.58760417448 +13 +200.646177778547 +23 +-841.232085183949 +33 +2105.58760417448 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-826.585857602691 +30 +2113.41027598642 +11 +200.646177778547 +21 +-885.950405936048 +31 +2172.46286278326 +12 +200.646177778547 +22 +-857.388372672667 +32 +2187.71808200347 +13 +200.646177778547 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-857.388372672667 +30 +2187.71808200347 +11 +200.646177778547 +21 +-810.693774595514 +31 +2118.22745350336 +12 +200.646177778547 +22 +-826.585857602691 +32 +2113.41027598642 +13 +200.646177778547 +23 +-826.585857602691 +33 +2113.41027598642 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +200.646177778547 +20 +-810.693774595514 +30 +2118.22745350336 +11 +200.646177778547 +21 +-857.388372672667 +31 +2187.71808200347 +12 +200.646177778547 +22 +-826.396760603478 +32 +2197.11219961575 +13 +200.646177778547 +23 +-826.396760603478 +33 +2197.11219961575 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-1000.92034241888 +30 +2076.297043493 +11 +635.537064906387 +21 +-959.37311802092 +31 +2035.20215330562 +12 +635.537064906387 +22 +-1004.97088848041 +32 +2035.20215330562 +13 +635.537064906387 +23 +-1004.97088848041 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-959.37311802092 +30 +2035.20215330562 +11 +635.537064906387 +21 +-1000.92034241888 +31 +2076.297043493 +12 +635.537064906387 +22 +-956.198720333 +32 +2067.40806391972 +13 +635.537064906387 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-1000.92034241888 +30 +2076.297043493 +11 +635.537064906387 +21 +-946.797517592165 +31 +2098.3763194502 +12 +635.537064906387 +22 +-956.198720333 +32 +2067.40806391972 +13 +635.537064906387 +23 +-956.198720333 +33 +2067.40806391972 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-946.797517592165 +30 +2098.3763194502 +11 +635.537064906387 +21 +-1000.92034241888 +31 +2076.297043493 +12 +635.537064906387 +22 +-988.924364447842 +32 +2115.81268009677 +13 +635.537064906387 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-988.924364447842 +30 +2115.81268009677 +11 +635.537064906387 +21 +-931.530792747491 +31 +2126.91682720422 +12 +635.537064906387 +22 +-946.797517592165 +32 +2098.3763194502 +13 +635.537064906387 +23 +-946.797517592165 +33 +2098.3763194502 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-931.530792747491 +30 +2126.91682720422 +11 +635.537064906387 +21 +-988.924364447842 +31 +2115.81268009677 +12 +635.537064906387 +22 +-969.443953273309 +32 +2152.23049936285 +13 +635.537064906387 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-969.443953273309 +30 +2152.23049936285 +11 +635.537064906387 +21 +-910.985237473081 +31 +2151.93279147451 +12 +635.537064906387 +22 +-931.530792747491 +32 +2126.91682720422 +13 +635.537064906387 +23 +-931.530792747491 +33 +2126.91682720422 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-910.985237473081 +30 +2151.93279147451 +11 +635.537064906387 +21 +-969.443953273309 +31 +2152.23049936285 +12 +635.537064906387 +22 +-943.227730171979 +32 +2184.1509849202 +13 +635.537064906387 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-943.227730171979 +30 +2184.1509849202 +11 +635.537064906387 +21 +-885.950405936048 +31 +2172.46286278326 +12 +635.537064906387 +22 +-910.985237473081 +32 +2151.93279147451 +13 +635.537064906387 +23 +-910.985237473081 +33 +2151.93279147451 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-885.950405936048 +30 +2172.46286278326 +11 +635.537064906387 +21 +-943.227730171979 +31 +2184.1509849202 +12 +635.537064906387 +22 +-911.283169895404 +32 +2210.34745041008 +13 +635.537064906387 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-911.283169895404 +30 +2210.34745041008 +11 +635.537064906387 +21 +-857.388372672667 +31 +2187.71808200347 +12 +635.537064906387 +22 +-885.950405936048 +32 +2172.46286278326 +13 +635.537064906387 +23 +-885.950405936048 +33 +2172.46286278326 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-857.388372672667 +30 +2187.71808200347 +11 +635.537064906387 +21 +-911.283169895404 +31 +2210.34745041008 +12 +635.537064906387 +22 +-874.837883980304 +32 +2229.81318035484 +13 +635.537064906387 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-874.837883980304 +30 +2229.81318035484 +11 +635.537064906387 +21 +-826.396760603478 +31 +2197.11219961575 +12 +635.537064906387 +22 +-857.388372672667 +32 +2187.71808200347 +13 +635.537064906387 +23 +-857.388372672667 +33 +2187.71808200347 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +635.537064906387 +20 +-826.396760603478 +30 +2197.11219961575 +11 +635.537064906387 +21 +-874.837883980304 +31 +2229.81318035484 +12 +635.537064906387 +22 +-835.292444325637 +32 +2241.80011766922 +13 +635.537064906387 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-794.16656 +30 +2126.34617316296 +11 +993.755281646067 +21 +-835.292444325637 +31 +2241.80011766922 +12 +993.755281646067 +22 +-811.961287013471 +32 +2124.59486637848 +13 +993.755281646067 +23 +-811.961287013471 +33 +2124.59486637848 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-835.292444325637 +30 +2241.80011766922 +11 +993.755281646067 +21 +-794.16656 +31 +2126.34617316296 +12 +993.755281646067 +22 +-794.16656 +32 +2245.84761107459 +13 +993.755281646067 +23 +-794.16656 +33 +2245.84761107459 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-878.436163455843 +30 +2070.08145966418 +11 +993.755281646067 +21 +-1000.92034241888 +31 +2076.297043493 +12 +993.755281646067 +22 +-883.626693866424 +32 +2052.98346948944 +13 +993.755281646067 +23 +-883.626693866424 +33 +2052.98346948944 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-1000.92034241888 +30 +2076.297043493 +11 +993.755281646067 +21 +-878.436163455843 +31 +2070.08145966418 +12 +993.755281646067 +22 +-988.924364447842 +32 +2115.81268009677 +13 +993.755281646067 +23 +-988.924364447842 +33 +2115.81268009677 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-870.007199443395 +30 +2085.83905765611 +11 +993.755281646067 +21 +-988.924364447842 +31 +2115.81268009677 +12 +993.755281646067 +22 +-878.436163455843 +32 +2070.08145966418 +13 +993.755281646067 +23 +-878.436163455843 +33 +2070.08145966418 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-988.924364447842 +30 +2115.81268009677 +11 +993.755281646067 +21 +-870.007199443395 +31 +2085.83905765611 +12 +993.755281646067 +22 +-969.443953273309 +32 +2152.23049936285 +13 +993.755281646067 +23 +-969.443953273309 +33 +2152.23049936285 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-858.663722189056 +30 +2099.65070781135 +11 +993.755281646067 +21 +-969.443953273309 +31 +2152.23049936285 +12 +993.755281646067 +22 +-870.007199443395 +32 +2085.83905765611 +13 +993.755281646067 +23 +-870.007199443395 +33 +2085.83905765611 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-969.443953273309 +30 +2152.23049936285 +11 +993.755281646067 +21 +-858.663722189056 +31 +2099.65070781135 +12 +993.755281646067 +22 +-943.227730171979 +32 +2184.1509849202 +13 +993.755281646067 +23 +-943.227730171979 +33 +2184.1509849202 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-844.841655162215 +30 +2110.9856361601 +11 +993.755281646067 +21 +-943.227730171979 +31 +2184.1509849202 +12 +993.755281646067 +22 +-858.663722189056 +32 +2099.65070781135 +13 +993.755281646067 +23 +-858.663722189056 +33 +2099.65070781135 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-943.227730171979 +30 +2184.1509849202 +11 +993.755281646067 +21 +-844.841655162215 +31 +2110.9856361601 +12 +993.755281646067 +22 +-911.283169895404 +32 +2210.34745041008 +13 +993.755281646067 +23 +-911.283169895404 +33 +2210.34745041008 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-829.072172647213 +30 +2119.40824776262 +11 +993.755281646067 +21 +-911.283169895404 +31 +2210.34745041008 +12 +993.755281646067 +22 +-844.841655162215 +32 +2110.9856361601 +13 +993.755281646067 +23 +-844.841655162215 +33 +2110.9856361601 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-911.283169895404 +30 +2210.34745041008 +11 +993.755281646067 +21 +-829.072172647213 +31 +2119.40824776262 +12 +993.755281646067 +22 +-874.837883980304 +32 +2229.81318035484 +13 +993.755281646067 +23 +-874.837883980304 +33 +2229.81318035484 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-811.961287013471 +30 +2124.59486637848 +11 +993.755281646067 +21 +-874.837883980304 +31 +2229.81318035484 +12 +993.755281646067 +22 +-829.072172647213 +32 +2119.40824776262 +13 +993.755281646067 +23 +-829.072172647213 +33 +2119.40824776262 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +993.755281646067 +20 +-874.837883980304 +30 +2229.81318035484 +11 +993.755281646067 +21 +-811.961287013471 +31 +2124.59486637848 +12 +993.755281646067 +22 +-835.292444325637 +32 +2241.80011766922 +13 +993.755281646067 +23 +-835.292444325637 +33 +2241.80011766922 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-877.254478630867 +30 +2051.71691232036 +11 +97.3015169041444 +21 +-930.959963064732 +31 +2035.20215330562 +12 +97.3015169041444 +22 +-878.882267189966 +32 +2035.20215330562 +13 +97.3015169041444 +23 +-878.882267189966 +33 +2035.20215330562 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-930.959963064732 +30 +2035.20215330562 +11 +97.3015169041444 +21 +-877.254478630867 +31 +2051.71691232036 +12 +97.3015169041444 +22 +-928.331516182155 +32 +2061.8691098991 +13 +97.3015169041444 +23 +-928.331516182155 +33 +2061.8691098991 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-854.069611027039 +30 +2095.06005895826 +11 +97.3015169041444 +21 +-907.906117811778 +31 +2111.14322068125 +12 +97.3015169041444 +22 +-864.605096213174 +32 +2082.23220799651 +13 +97.3015169041444 +23 +-864.605096213174 +33 +2082.23220799651 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-907.906117811778 +30 +2111.14322068125 +11 +97.3015169041444 +21 +-854.069611027039 +31 +2095.06005895826 +12 +97.3015169041444 +22 +-890.894102928655 +32 +2131.85679842581 +13 +97.3015169041444 +23 +-890.894102928655 +33 +2131.85679842581 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-864.605096213174 +30 +2082.23220799651 +11 +97.3015169041444 +21 +-920.547185274073 +31 +2087.51127030568 +12 +97.3015169041444 +22 +-872.433667955028 +32 +2067.59701840775 +13 +97.3015169041444 +23 +-872.433667955028 +33 +2067.59701840775 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-920.547185274073 +30 +2087.51127030568 +11 +97.3015169041444 +21 +-864.605096213174 +31 +2082.23220799651 +12 +97.3015169041444 +22 +-907.906117811778 +32 +2111.14322068125 +13 +97.3015169041444 +23 +-907.906117811778 +33 +2111.14322068125 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-826.585857602691 +30 +2113.41027598642 +11 +97.3015169041444 +21 +-870.164902816216 +31 +2148.85599236295 +12 +97.3015169041444 +22 +-841.232085183949 +32 +2105.58760417448 +13 +97.3015169041444 +23 +-841.232085183949 +33 +2105.58760417448 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-870.164902816216 +30 +2148.85599236295 +11 +97.3015169041444 +21 +-826.585857602691 +31 +2113.41027598642 +12 +97.3015169041444 +22 +-846.515129009712 +32 +2161.48753300293 +13 +97.3015169041444 +23 +-846.515129009712 +33 +2161.48753300293 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-841.232085183949 +30 +2105.58760417448 +11 +97.3015169041444 +21 +-890.894102928655 +31 +2131.85679842581 +12 +97.3015169041444 +22 +-854.069611027039 +32 +2095.06005895826 +13 +97.3015169041444 +23 +-854.069611027039 +33 +2095.06005895826 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-890.894102928655 +30 +2131.85679842581 +11 +97.3015169041444 +21 +-841.232085183949 +31 +2105.58760417448 +12 +97.3015169041444 +22 +-870.164902816216 +32 +2148.85599236295 +13 +97.3015169041444 +23 +-870.164902816216 +33 +2148.85599236295 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-794.16656 +30 +2119.85401529483 +11 +97.3015169041444 +21 +-820.853629053581 +31 +2169.2659973228 +12 +97.3015169041444 +22 +-810.693774595514 +32 +2118.22745350336 +13 +97.3015169041444 +23 +-810.693774595514 +33 +2118.22745350336 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-820.853629053581 +30 +2169.2659973228 +11 +97.3015169041444 +21 +-794.16656 +31 +2119.85401529483 +12 +97.3015169041444 +22 +-794.16656 +32 +2171.89246330095 +13 +97.3015169041444 +23 +-794.16656 +33 +2171.89246330095 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-810.693774595514 +30 +2118.22745350336 +11 +97.3015169041444 +21 +-846.515129009712 +31 +2161.48753300293 +12 +97.3015169041444 +22 +-826.585857602691 +32 +2113.41027598642 +13 +97.3015169041444 +23 +-826.585857602691 +33 +2113.41027598642 +70 +1 + 0 +3DFACE + 8 +arm_half +10 +97.3015169041444 +20 +-846.515129009712 +30 +2161.48753300293 +11 +97.3015169041444 +21 +-810.693774595514 +31 +2118.22745350336 +12 +97.3015169041444 +22 +-820.853629053581 +32 +2169.2659973228 +13 +97.3015169041444 +23 +-820.853629053581 +33 +2169.2659973228 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +21.0791386559896 +20 +-1635.02461467787 +30 +2001.52587998687 +11 +7.98221268585839 +21 +-1575.77551414673 +31 +1996.02904198905 +12 +22.365520181431 +22 +-1575.77540103232 +32 +2002.06558825272 +13 +22.365520181431 +23 +-1575.77540103232 +33 +2002.06558825272 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.98221268585839 +20 +-1575.77551414673 +30 +1996.02904198905 +11 +21.0791386559896 +21 +-1635.02461467787 +31 +2001.52587998687 +12 +7.98254654484851 +22 +-1635.02471767319 +32 +1996.02935672895 +13 +7.98254654484851 +23 +-1635.02471767319 +33 +1996.02935672895 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-67.6768495427695 +20 +-1260.03677189865 +30 +1941.04407925614 +11 +-7.61761898721182 +21 +-1175.36447372759 +31 +1995.95502646913 +12 +-26.4930734323873 +22 +-1260.03663933705 +32 +1922.31304179217 +13 +-26.4930734323873 +23 +-1260.03663933705 +33 +1922.31304179217 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +18.7238320955074 +20 +-1260.0363927542 +30 +1920.768168456 +11 +7.98091066173456 +21 +-1175.36456200926 +31 +1996.02781452793 +12 +61.0900030665619 +22 +-1260.03606969012 +32 +1936.64465220875 +13 +61.0900030665619 +23 +-1260.03606969012 +33 +1936.64465220875 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.1734746098794 +20 +-1635.02429142183 +30 +2043.18474472703 +11 +33.1369283457947 +21 +-1635.02424903062 +31 +2057.56805222281 +12 +0.000316577896367365 +22 +-1635.02455455848 +32 +2035.20251476124 +13 +0.000316577896367365 +23 +-1635.02455455848 +33 +2035.20251476124 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +98.5563030683821 +20 +-1491.10230115877 +30 +2096.29352239028 +11 +33.1365944868046 +21 +-1575.77504550416 +31 +2057.56773748292 +12 +114.432786822367 +22 +-1491.10243675244 +32 +2053.92735141868 +13 +114.432786822367 +23 +-1491.10243675244 +33 +2053.92735141868 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +22.1249957769614 +20 +-1479.42362718516 +30 +2131.05362422024 +11 +26.4904348219512 +21 +-1260.03514143184 +31 +2148.08890332828 +12 +22.1236937528375 +22 +-1271.71644897083 +32 +2131.05239675912 +13 +22.1236937528375 +23 +-1271.71644897083 +33 +2131.05239675912 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +26.4904348219512 +20 +-1260.03514143184 +30 +2148.08890332828 +11 +22.1249957769614 +21 +-1479.42362718516 +31 +2131.05362422024 +12 +26.491736846075 +22 +-1491.10243207942 +32 +2148.0901307894 +13 +26.491736846075 +23 +-1491.10243207942 +33 +2148.0901307894 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2459633723545 +20 +-1575.77553171729 +30 +2042.81849970453 +11 +-112.887948049741 +21 +-1491.10367640812 +31 +2061.69395415194 +12 +-95.851569329198 +22 +-1479.42468360743 +32 +2057.32721685097 +13 +-95.851569329198 +23 +-1479.42468360743 +33 +2057.32721685097 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-83.4234143215687 +20 +-1271.71506812026 +30 +1983.06846791687 +11 +-98.5563376305701 +21 +-1491.10406090528 +31 +1974.11087765241 +12 +-98.5576396546941 +22 +-1260.0367702577 +32 +1974.10965019129 +13 +-98.5576396546941 +23 +-1260.0367702577 +33 +1974.10965019129 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-98.5563376305701 +20 +-1491.10406090528 +30 +1974.11087765241 +11 +-83.4234143215687 +21 +-1271.71506812026 +31 +1983.06846791687 +12 +-83.4221122974449 +22 +-1479.42500803573 +32 +1983.06969537799 +13 +-83.4221122974449 +23 +-1479.42500803573 +33 +1983.06969537799 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.1366290489928 +20 +-1575.77565655989 +30 +2012.83666255977 +11 +-98.5563376305701 +21 +-1491.10406090528 +31 +1974.11087765241 +12 +-83.4221122974449 +22 +-1479.42500803573 +32 +1983.06969537799 +13 +-83.4221122974449 +23 +-1479.42500803573 +33 +1983.06969537799 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.98254654484851 +20 +-1635.02471767319 +30 +1996.02935672895 +11 +-7.61631696308793 +21 +-1575.7756024284 +31 +1995.95625393024 +12 +7.98221268585839 +22 +-1575.77551414673 +32 +1996.02904198905 +13 +7.98221268585839 +23 +-1575.77551414673 +33 +1996.02904198905 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.61631696308793 +20 +-1575.7756024284 +30 +1995.95625393024 +11 +7.98254654484851 +21 +-1635.02471767319 +31 +1996.02935672895 +12 +-7.61598310409778 +22 +-1635.02480595485 +32 +1995.95656867013 +13 +-7.61598310409778 +23 +-1635.02480595485 +33 +1995.95656867013 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.61631696308793 +20 +-1575.7756024284 +30 +1995.95625393024 +11 +-26.4917714082634 +21 +-1491.10392998463 +31 +1922.31426925329 +12 +-22.1251619565284 +22 +-1479.42489487959 +32 +1939.3506517424 +13 +-22.1251619565284 +23 +-1479.42489487959 +33 +1939.3506517424 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.98221268585839 +20 +-1575.77551414673 +30 +1996.02904198905 +11 +16.2397851414271 +21 +-1479.42468491837 +31 +1938.18001056121 +12 +18.7251341196313 +22 +-1491.10368340178 +32 +1920.76939591712 +13 +18.7251341196313 +23 +-1491.10368340178 +33 +1920.76939591712 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +22.365520181431 +20 +-1575.77540103232 +30 +2002.06558825272 +11 +61.0913050906858 +21 +-1491.1033603377 +31 +1936.64587966987 +12 +52.132359515953 +22 +-1479.42441042435 +32 +1951.78010877195 +13 +52.132359515953 +23 +-1479.42441042435 +33 +1951.78010877195 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +94.1568760248532 +20 +-1491.10300997595 +30 +1967.52666978086 +11 +80.0869400614005 +21 +-1271.71596296923 +31 +1978.07922724613 +12 +94.1555740007292 +22 +-1260.03571932837 +32 +1967.52544231974 +13 +94.1555740007292 +23 +-1260.03571932837 +33 +1967.52544231974 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +80.0869400614005 +20 +-1271.71596296923 +30 +1978.07922724613 +11 +94.1568760248532 +21 +-1491.10300997595 +31 +1967.52666978086 +12 +80.0882420855246 +22 +-1479.42411318676 +32 +1978.08045470725 +13 +80.0882420855246 +23 +-1479.42411318676 +33 +1978.08045470725 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.3438773424362 +20 +-1575.77528030582 +30 +2013.14688327402 +11 +80.0882420855246 +21 +-1479.42411318676 +31 +1978.08045470725 +12 +94.1568760248532 +22 +-1491.10300997595 +32 +1967.52666978086 +13 +94.1568760248532 +23 +-1491.10300997595 +33 +1967.52666978086 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +16.2384831173033 +20 +-1271.71539123762 +30 +1938.17878310009 +11 +-7.61761898721182 +21 +-1175.36447372759 +31 +1995.95502646913 +12 +7.98091066173456 +22 +-1175.36456200926 +32 +1996.02781452793 +13 +7.98091066173456 +23 +-1175.36456200926 +33 +1996.02781452793 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-22.1264639806523 +20 +-1271.7151812764 +30 +1939.34942428128 +11 +-7.61761898721182 +21 +-1175.36447372759 +31 +1995.95502646913 +12 +16.2384831173033 +22 +-1271.71539123762 +32 +1938.17878310009 +13 +16.2384831173033 +23 +-1271.71539123762 +33 +1938.17878310009 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.3425753183123 +20 +-1175.36479585016 +30 +2013.1456558129 +11 +80.0869400614005 +21 +-1271.71596296923 +31 +1978.07922724613 +12 +22.3642181573071 +22 +-1175.36467512367 +32 +2002.0643607916 +13 +22.3642181573071 +23 +-1175.36467512367 +33 +2002.0643607916 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +52.1310574918292 +20 +-1271.71566573164 +30 +1951.77888131083 +11 +22.3642181573071 +21 +-1175.36467512367 +31 +2002.0643607916 +12 +80.0869400614005 +22 +-1271.71596296923 +32 +1978.07922724613 +13 +80.0869400614005 +23 +-1271.71596296923 +33 +1978.07922724613 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +22.1236937528375 +20 +-1271.71644897083 +30 +2131.05239675912 +11 +7.61498037677585 +21 +-1175.36497652034 +31 +2074.44691865133 +12 +-7.9835492721704 +22 +-1175.36488823867 +32 +2074.37413059252 +13 +-7.9835492721704 +23 +-1175.36488823867 +33 +2074.37413059252 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-16.241253345118 +20 +-1271.71623900961 +30 +2132.22303794032 +11 +22.1236937528375 +21 +-1271.71644897083 +31 +2131.05239675912 +12 +-7.9835492721704 +22 +-1175.36488823867 +32 +2074.37413059252 +13 +-7.9835492721704 +23 +-1175.36488823867 +33 +2074.37413059252 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-52.1338277196439 +20 +-1271.71596451559 +30 +2118.62293972957 +11 +-22.366856767743 +21 +-1175.36477512426 +31 +2068.33758432885 +12 +-33.3452139287482 +22 +-1175.36465439776 +32 +2057.25628930755 +13 +-33.3452139287482 +23 +-1175.36465439776 +33 +2057.25628930755 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-80.0897102892153 +20 +-1271.715667278 +30 +2092.32259379428 +11 +-52.1338277196439 +21 +-1271.71596451559 +31 +2118.62293972957 +12 +-33.3452139287482 +22 +-1175.36465439776 +32 +2057.25628930755 +13 +-33.3452139287482 +23 +-1175.36465439776 +33 +2057.25628930755 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-95.8528713533217 +20 +-1271.71539254856 +30 +2057.32598938986 +11 +-39.1744773372013 +21 +-1175.36446198731 +31 +2027.21874259443 +12 +-97.0235125333639 +22 +-1271.71518215234 +32 +2018.96104229187 +13 +-97.0235125333639 +23 +-1271.71518215234 +33 +2018.96104229187 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-95.8528713533217 +20 +-1271.71539254856 +30 +2057.32598938986 +11 +-39.2472653964783 +21 +-1175.36454443869 +31 +2042.81727224341 +12 +-39.1744773372013 +22 +-1175.36446198731 +32 +2027.21874259443 +13 +-39.1744773372013 +23 +-1175.36446198731 +33 +2027.21874259443 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.1845368645104 +20 +1078.14493048035 +30 +2043.19517347961 +11 +33.1352924626808 +21 +-1175.36503065183 +31 +2057.5665100218 +12 +39.1718387267654 +22 +-1175.36498826062 +32 +2043.18320252602 +13 +39.1718387267654 +23 +-1175.36498826062 +33 +2043.18320252602 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.1352924626808 +20 +-1175.36503065183 +30 +2057.5665100218 +11 +39.1845368645104 +21 +1078.14493048035 +31 +2043.19517347961 +12 +33.1479906004257 +22 +1078.14488808915 +32 +2057.57848097538 +13 +33.1479906004257 +23 +1078.14488808915 +33 +2057.57848097538 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +60.4504242229264 +20 +1076.22873878012 +30 +1995.97422483951 +11 +39.2573249237874 +21 +1078.14501293173 +31 +2027.59664383063 +12 +33.3552734560573 +22 +1078.14512289081 +32 +2013.15762676649 +13 +33.3552734560573 +23 +1078.14512289081 +33 +2013.15762676649 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.2573249237874 +20 +1078.14501293173 +30 +2027.59664383063 +11 +60.4504242229264 +21 +1076.22873878012 +31 +1995.97422483951 +12 +70.8657786588185 +22 +1076.22854136019 +32 +2022.0901191445 +13 +70.8657786588185 +23 +1076.22854136019 +33 +2022.0901191445 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.2462626691564 +20 +-1635.02437387321 +30 +2027.58621507805 +11 +0.000316577896367365 +21 +-1635.02455455848 +31 +2035.20251476124 +12 +33.3442112014263 +22 +-1635.02448383228 +32 +2013.14719801391 +13 +33.3442112014263 +23 +-1635.02448383228 +33 +2013.14719801391 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-80.0897102892153 +20 +-1271.715667278 +30 +2092.32259379428 +11 +-33.3452139287482 +21 +-1175.36465439776 +31 +2057.25628930755 +12 +-94.1582126111653 +22 +-1260.03606144053 +32 +2102.87650280072 +13 +-94.1582126111653 +23 +-1260.03606144053 +33 +2102.87650280072 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +67.6742109323337 +20 +-1260.03500887024 +30 +2129.35786586431 +11 +57.1202981576705 +21 +-1271.71656243456 +31 +2115.28923569394 +12 +22.0539974410672 +22 +-1175.36502652919 +32 +2068.54486718316 +13 +22.0539974410672 +23 +-1175.36502652919 +33 +2068.54486718316 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +97.0220443296732 +20 +-1479.4236280611 +30 +2051.44200620966 +11 +97.0207423055492 +21 +-1271.71644809489 +31 +2051.44077874854 +12 +114.431484798243 +22 +-1260.03514610487 +32 +2053.92612395756 +13 +114.431484798243 +23 +-1260.03514610487 +33 +2053.92612395756 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +97.0207423055492 +20 +-1271.71644809489 +30 +2051.44077874854 +11 +80.5104813608606 +21 +-1244.21642404447 +31 +2049.07971498233 +12 +114.431484798243 +22 +-1260.03514610487 +32 +2053.92612395756 +13 +114.431484798243 +23 +-1260.03514610487 +33 +2053.92612395756 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +114.431484798243 +20 +-1260.03514610487 +30 +2053.92612395756 +11 +80.5104813608606 +21 +-1244.21642404447 +31 +2049.07971498233 +12 +39.1718387267654 +22 +-1175.36498826062 +32 +2043.18320252602 +13 +39.1718387267654 +23 +-1175.36498826062 +33 +2043.18320252602 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.61628240089973 +20 +-1575.77509963565 +30 +2074.44814611245 +11 +67.6755129564576 +21 +-1491.10229951782 +31 +2129.35909332543 +12 +26.491736846075 +22 +-1491.10243207942 +32 +2148.0901307894 +13 +26.491736846075 +23 +-1491.10243207942 +33 +2148.0901307894 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +6.62400451714528 +20 +1105.46121754713 +30 +2070.64019948415 +11 +0.0625974234421623 +21 +1105.4614427137 +31 +2035.21299417206 +12 +-7.43285738619353 +22 +1105.46129774208 +32 +2070.45440584214 +13 +-7.43285738619353 +23 +1105.46129774208 +33 +2070.45440584214 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.0625974234421623 +20 +1105.4614427137 +30 +2035.21299417206 +11 +-30.1569306708265 +21 +1105.4615087748 +31 +2054.83234841933 +12 +-20.3486042412317 +22 +1105.46140000763 +32 +2064.90342673756 +13 +-20.3486042412317 +23 +1105.46140000763 +33 +2064.90342673756 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.0625974234421623 +20 +1105.4614427137 +30 +2035.21299417206 +11 +-35.3646078887726 +21 +1105.46160748476 +31 +2041.77440126683 +12 +-30.1569306708265 +22 +1105.4615087748 +32 +2054.83234841933 +13 +-30.1569306708265 +23 +1105.4615087748 +33 +2054.83234841933 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.0625974234421623 +20 +1105.4614427137 +30 +2035.21299417206 +11 +-35.1788142463492 +21 +1105.46168110983 +31 +2027.71753936346 +12 +-35.3646078887726 +22 +1105.46160748476 +32 +2041.77440126683 +13 +-35.3646078887726 +23 +1105.46160748476 +33 +2041.77440126683 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.0625974234421623 +20 +1105.4614427137 +30 +2035.21299417206 +11 +-29.6278351413918 +21 +1105.46171844124 +31 +2014.80179250824 +12 +-35.1788142463492 +22 +1105.46168110983 +32 +2027.71753936346 +13 +-35.1788142463492 +23 +1105.46168110983 +33 +2027.71753936346 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.0625974234421623 +20 +1105.4614427137 +30 +2035.21299417206 +11 +-6.49880967025258 +21 +1105.46166788026 +31 +1999.78578885998 +12 +-19.5567568228792 +22 +1105.46171379563 +32 +2004.99346607832 +13 +-19.5567568228792 +23 +1105.46171379563 +33 +2004.99346607832 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.55805223308622 +20 +1105.46158768532 +30 +1999.97158250198 +11 +-6.49880967025258 +21 +1105.46166788026 +31 +1999.78578885998 +12 +0.0625974234421623 +22 +1105.4614427137 +32 +2035.21299417206 +13 +0.0625974234421623 +23 +1105.4614427137 +33 +2035.21299417206 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +20.4737990881245 +20 +1105.46148541976 +30 +2005.52256160656 +11 +7.55805223308622 +21 +1105.46158768532 +31 +1999.97158250198 +12 +0.0625974234421623 +22 +1105.4614427137 +32 +2035.21299417206 +13 +0.0625974234421623 +23 +1105.4614427137 +33 +2035.21299417206 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +30.2821255177192 +20 +1105.46137665259 +30 +2015.5936399248 +11 +20.4737990881245 +21 +1105.46148541976 +31 +2005.52256160656 +12 +0.0625974234421623 +22 +1105.4614427137 +32 +2035.21299417206 +13 +0.0625974234421623 +23 +1105.4614427137 +33 +2035.21299417206 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +35.4898027356652 +20 +1105.46127794263 +30 +2028.65158707729 +11 +30.2821255177192 +21 +1105.46137665259 +31 +2015.5936399248 +12 +0.0625974234421623 +22 +1105.4614427137 +32 +2035.21299417206 +13 +0.0625974234421623 +23 +1105.4614427137 +33 +2035.21299417206 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +35.4898027356652 +20 +1105.46127794263 +30 +2028.65158707729 +11 +0.0625974234421623 +21 +1105.4614427137 +31 +2035.21299417206 +12 +35.3040090932419 +22 +1105.46120431757 +32 +2042.70844898066 +13 +35.3040090932419 +23 +1105.46120431757 +33 +2042.70844898066 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +35.3040090932419 +20 +1105.46120431757 +30 +2042.70844898066 +11 +0.0625974234421623 +21 +1105.4614427137 +31 +2035.21299417206 +12 +29.7530299882844 +22 +1105.46116698616 +32 +2055.62419583589 +13 +29.7530299882844 +23 +1105.46116698616 +33 +2055.62419583589 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +29.7530299882844 +20 +1105.46116698616 +30 +2055.62419583589 +11 +0.0625974234421623 +21 +1105.4614427137 +31 +2035.21299417206 +12 +19.6819516697718 +22 +1105.46117163176 +32 +2065.4325222658 +13 +19.6819516697718 +23 +1105.46117163176 +33 +2065.4325222658 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +19.6819516697718 +20 +1105.46117163176 +30 +2065.4325222658 +11 +0.0625974234421623 +21 +1105.4614427137 +31 +2035.21299417206 +12 +6.62400451714528 +22 +1105.46121754713 +32 +2070.64019948415 +13 +6.62400451714528 +23 +1105.46121754713 +33 +2070.64019948415 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-35.1788142463492 +20 +1105.46168110983 +30 +2027.71753936346 +11 +-59.3694325616239 +21 +1087.68206778655 +31 +1994.39059084441 +12 +-70.4713907715387 +22 +1087.68199312372 +32 +2020.22208455487 +13 +-70.4713907715387 +23 +1087.68199312372 +33 +2020.22208455487 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-59.3694325616239 +20 +1087.68206778655 +30 +1994.39059084441 +11 +-35.1788142463492 +21 +1105.46168110983 +31 +2027.71753936346 +12 +-29.6278351413918 +22 +1105.46171844124 +32 +2014.80179250824 +13 +-29.6278351413918 +23 +1105.46171844124 +33 +2014.80179250824 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +59.3922976977286 +20 +1087.68096487638 +30 +2076.03539749972 +11 +35.3040090932419 +21 +1105.46120431757 +31 +2042.70844898066 +12 +29.7530299882844 +22 +1105.46116698616 +32 +2055.62419583589 +13 +29.7530299882844 +23 +1105.46116698616 +33 +2055.62419583589 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +35.3040090932419 +20 +1105.46120431757 +30 +2042.70844898066 +11 +59.3922976977286 +21 +1087.68096487638 +31 +2076.03539749972 +12 +70.4942559076435 +22 +1087.68103953921 +32 +2050.20390378926 +13 +70.4942559076435 +23 +1087.68103953921 +33 +2050.20390378926 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +13.1342467554502 +20 +1087.68106599834 +30 +2106.06740479624 +11 +19.6819516697718 +21 +1105.46117163176 +31 +2065.4325222658 +12 +6.62400451714528 +22 +1105.46121754713 +32 +2070.64019948415 +13 +6.62400451714528 +23 +1105.46121754713 +33 +2070.64019948415 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +19.6819516697718 +20 +1105.46117163176 +30 +2065.4325222658 +11 +13.1342467554502 +21 +1087.68106599834 +31 +2106.06740479624 +12 +39.2501410607034 +22 +1087.68097416759 +32 +2095.65205035954 +13 +39.2501410607034 +23 +1087.68097416759 +33 +2095.65205035954 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +70.4942559076435 +20 +1087.68103953921 +30 +2050.20390378926 +11 +35.4898027356652 +21 +1105.46127794263 +31 +2028.65158707729 +12 +35.3040090932419 +22 +1105.46120431757 +32 +2042.70844898066 +13 +35.3040090932419 +23 +1105.46120431757 +33 +2042.70844898066 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +35.4898027356652 +20 +1105.46127794263 +30 +2028.65158707729 +11 +70.4942559076435 +21 +1087.68103953921 +31 +2050.20390378926 +12 +70.8658431924901 +22 +1087.68118678933 +32 +2022.09017998252 +13 +70.8658431924901 +23 +1087.68118678933 +33 +2022.09017998252 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-60.4276236204933 +20 +1087.68164845367 +30 +2074.45170266659 +11 +-35.3646078887726 +21 +1105.46160748476 +31 +2041.77440126683 +12 +-70.8429780563856 +22 +1087.6818458736 +32 +2048.3358083616 +13 +-70.8429780563856 +23 +1087.6818458736 +33 +2048.3358083616 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-35.3646078887726 +20 +1105.46160748476 +30 +2041.77440126683 +11 +-60.4276236204933 +21 +1087.68164845367 +31 +2074.45170266659 +12 +-30.1569306708265 +22 +1105.4615087748 +32 +2054.83234841933 +13 +-30.1569306708265 +23 +1105.4615087748 +33 +2054.83234841933 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-29.6278351413918 +20 +1105.46171844124 +30 +2014.80179250824 +11 +-39.2272759245986 +21 +1087.68205849534 +31 +1974.77393798458 +12 +-59.3694325616239 +22 +1087.68206778655 +32 +1994.39059084441 +13 +-59.3694325616239 +23 +1087.68206778655 +33 +1994.39059084441 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2272759245986 +20 +1087.68205849534 +30 +1974.77393798458 +11 +-29.6278351413918 +21 +1105.46171844124 +31 +2014.80179250824 +12 +-19.5567568228792 +22 +1105.46171379563 +32 +2004.99346607832 +13 +-19.5567568228792 +23 +1105.46171379563 +33 +2004.99346607832 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +20.4737990881245 +20 +1105.46148541976 +30 +2005.52256160656 +11 +15.0023421873321 +21 +1087.68180627471 +31 +1964.7301708319 +12 +7.55805223308622 +22 +1105.46158768532 +32 +1999.97158250198 +13 +7.55805223308622 +23 +1105.46158768532 +33 +1999.97158250198 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +15.0023421873321 +20 +1087.68180627471 +30 +1964.7301708319 +11 +20.4737990881245 +21 +1105.46148541976 +31 +2005.52256160656 +12 +40.8338358974086 +22 +1087.68160174359 +32 +1975.83212904106 +13 +40.8338358974086 +23 +1087.68160174359 +33 +1975.83212904106 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-35.3646078887726 +20 +1105.46160748476 +30 +2041.77440126683 +11 +-70.4713907715387 +21 +1087.68199312372 +31 +2020.22208455487 +12 +-70.8429780563856 +22 +1087.6818458736 +32 +2048.3358083616 +13 +-70.8429780563856 +23 +1087.6818458736 +33 +2048.3358083616 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-70.4713907715387 +20 +1087.68199312372 +30 +2020.22208455487 +11 +-35.3646078887726 +21 +1105.46160748476 +31 +2041.77440126683 +12 +-35.1788142463492 +22 +1105.46168110983 +32 +2027.71753936346 +13 +-35.1788142463492 +23 +1105.46168110983 +33 +2027.71753936346 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +35.4898027356652 +20 +1105.46127794263 +30 +2028.65158707729 +11 +60.4504887565981 +21 +1087.68138420926 +31 +1995.97428567753 +12 +30.2821255177192 +22 +1105.46137665259 +32 +2015.5936399248 +13 +30.2821255177192 +23 +1105.46137665259 +33 +2015.5936399248 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +60.4504887565981 +20 +1087.68138420926 +30 +1995.97428567753 +11 +35.4898027356652 +21 +1105.46127794263 +31 +2028.65158707729 +12 +70.8658431924901 +22 +1087.68118678933 +32 +2022.09017998252 +13 +70.8658431924901 +23 +1087.68118678933 +33 +2022.09017998252 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-14.9794770512274 +20 +1087.68122638822 +30 +2105.69581751223 +11 +-20.3486042412317 +21 +1105.46140000763 +31 +2064.90342673756 +12 +-40.8109707613038 +22 +1087.68143091934 +32 +2094.59385930307 +13 +-40.8109707613038 +23 +1087.68143091934 +33 +2094.59385930307 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-20.3486042412317 +20 +1105.46140000763 +30 +2064.90342673756 +11 +-14.9794770512274 +21 +1087.68122638822 +31 +2105.69581751223 +12 +-7.43285738619353 +22 +1105.46129774208 +32 +2070.45440584214 +13 +-7.43285738619353 +23 +1105.46129774208 +33 +2070.45440584214 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-40.8109707613038 +20 +1087.68143091934 +30 +2094.59385930307 +11 +-30.1569306708265 +21 +1105.4615087748 +31 +2054.83234841933 +12 +-60.4276236204933 +22 +1087.68164845367 +32 +2074.45170266659 +13 +-60.4276236204933 +23 +1087.68164845367 +33 +2074.45170266659 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-30.1569306708265 +20 +1105.4615087748 +30 +2054.83234841933 +11 +-40.8109707613038 +21 +1087.68143091934 +31 +2094.59385930307 +12 +-20.3486042412317 +22 +1105.46140000763 +32 +2064.90342673756 +13 +-20.3486042412317 +23 +1105.46140000763 +33 +2064.90342673756 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-19.5567568228792 +20 +1105.46171379563 +30 +2004.99346607832 +11 +-13.1113816193455 +21 +1087.68196666459 +31 +1964.35858354789 +12 +-39.2272759245986 +22 +1087.68205849534 +32 +1974.77393798458 +13 +-39.2272759245986 +23 +1087.68205849534 +33 +1974.77393798458 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-13.1113816193455 +20 +1087.68196666459 +30 +1964.35858354789 +11 +-19.5567568228792 +21 +1105.46171379563 +31 +2004.99346607832 +12 +-6.49880967025258 +22 +1105.46166788026 +32 +1999.78578885998 +13 +-6.49880967025258 +23 +1105.46166788026 +33 +1999.78578885998 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +30.2821255177192 +20 +1105.46137665259 +30 +2015.5936399248 +11 +40.8338358974086 +21 +1087.68160174359 +31 +1975.83212904106 +12 +20.4737990881245 +22 +1105.46148541976 +32 +2005.52256160656 +13 +20.4737990881245 +23 +1105.46148541976 +33 +2005.52256160656 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +40.8338358974086 +20 +1087.68160174359 +30 +1975.83212904106 +11 +30.2821255177192 +21 +1105.46137665259 +31 +2015.5936399248 +12 +60.4504887565981 +22 +1087.68138420926 +32 +1995.97428567753 +13 +60.4504887565981 +23 +1087.68138420926 +33 +1995.97428567753 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +13.1342467554502 +20 +1087.68106599834 +30 +2106.06740479624 +11 +-7.43285738619353 +21 +1105.46129774208 +31 +2070.45440584214 +12 +-14.9794770512274 +22 +1087.68122638822 +32 +2105.69581751223 +13 +-14.9794770512274 +23 +1087.68122638822 +33 +2105.69581751223 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.43285738619353 +20 +1105.46129774208 +30 +2070.45440584214 +11 +13.1342467554502 +21 +1087.68106599834 +31 +2106.06740479624 +12 +6.62400451714528 +22 +1105.46121754713 +32 +2070.64019948415 +13 +6.62400451714528 +23 +1105.46121754713 +33 +2070.64019948415 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-6.49880967025258 +20 +1105.46166788026 +30 +1999.78578885998 +11 +15.0023421873321 +21 +1087.68180627471 +31 +1964.7301708319 +12 +-13.1113816193455 +22 +1087.68196666459 +32 +1964.35858354789 +13 +-13.1113816193455 +23 +1087.68196666459 +33 +1964.35858354789 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +15.0023421873321 +20 +1087.68180627471 +30 +1964.7301708319 +11 +-6.49880967025258 +21 +1105.46166788026 +31 +1999.78578885998 +12 +7.55805223308622 +22 +1105.46158768532 +32 +1999.97158250198 +13 +7.55805223308622 +23 +1105.46158768532 +33 +1999.97158250198 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.2501410607034 +20 +1087.68097416759 +30 +2095.65205035954 +11 +29.7530299882844 +21 +1105.46116698616 +31 +2055.62419583589 +12 +19.6819516697718 +22 +1105.46117163176 +32 +2065.4325222658 +13 +19.6819516697718 +23 +1105.46117163176 +33 +2065.4325222658 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +29.7530299882844 +20 +1105.46116698616 +30 +2055.62419583589 +11 +39.2501410607034 +21 +1087.68097416759 +31 +2095.65205035954 +12 +59.3922976977286 +22 +1087.68096487638 +32 +2076.03539749972 +13 +59.3922976977286 +23 +1087.68096487638 +33 +2076.03539749972 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.1379310731166 +20 +-1175.3644195961 +30 +2012.83543509865 +11 +-33.1295365918798 +21 +314.385267310674 +31 +2012.8433488532 +12 +-22.056636051503 +22 +-1175.36442371874 +32 +2001.8570779373 +13 +-22.056636051503 +23 +-1175.36442371874 +33 +2001.8570779373 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-33.3452139287482 +20 +-1175.36465439776 +30 +2057.25628930755 +11 +-39.1744773372013 +21 +-1175.36446198731 +31 +2027.21874259443 +12 +-39.2472653964783 +22 +-1175.36454443869 +32 +2042.81727224341 +13 +-39.2472653964783 +23 +-1175.36454443869 +33 +2042.81727224341 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.1744773372013 +20 +-1175.36446198731 +30 +2027.21874259443 +11 +-33.3452139287482 +21 +-1175.36465439776 +31 +2057.25628930755 +12 +-33.1379310731166 +22 +-1175.3644195961 +32 +2012.83543509865 +13 +-33.1379310731166 +23 +-1175.3644195961 +33 +2012.83543509865 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +-33.1379310731166 +20 +-1175.3644195961 +30 +2012.83543509865 +11 +-33.3452139287482 +21 +-1175.36465439776 +31 +2057.25628930755 +12 +-22.366856767743 +22 +-1175.36477512426 +32 +2068.33758432885 +13 +-22.366856767743 +23 +-1175.36477512426 +33 +2068.33758432885 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +-33.1379310731166 +20 +-1175.3644195961 +30 +2012.83543509865 +11 +-22.366856767743 +21 +-1175.36477512426 +31 +2068.33758432885 +12 +-22.056636051503 +22 +-1175.36442371874 +32 +2001.8570779373 +13 +-22.056636051503 +23 +-1175.36442371874 +33 +2001.8570779373 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +-22.056636051503 +20 +-1175.36442371874 +30 +2001.8570779373 +11 +-22.366856767743 +21 +-1175.36477512426 +31 +2068.33758432885 +12 +-7.9835492721704 +22 +-1175.36488823867 +32 +2074.37413059252 +13 +-7.9835492721704 +23 +-1175.36488823867 +33 +2074.37413059252 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +-22.056636051503 +20 +-1175.36442371874 +30 +2001.8570779373 +11 +-7.9835492721704 +21 +-1175.36488823867 +31 +2074.37413059252 +12 +-7.61761898721182 +22 +-1175.36447372759 +32 +1995.95502646913 +13 +-7.61761898721182 +23 +-1175.36447372759 +33 +1995.95502646913 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +-7.61761898721182 +20 +-1175.36447372759 +30 +1995.95502646913 +11 +-7.9835492721704 +21 +-1175.36488823867 +31 +2074.37413059252 +12 +7.61498037677585 +22 +-1175.36497652034 +32 +2074.44691865133 +13 +7.61498037677585 +23 +-1175.36497652034 +33 +2074.44691865133 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +-7.61761898721182 +20 +-1175.36447372759 +30 +1995.95502646913 +11 +7.61498037677585 +21 +-1175.36497652034 +31 +2074.44691865133 +12 +7.98091066173456 +22 +-1175.36456200926 +32 +1996.02781452793 +13 +7.98091066173456 +23 +-1175.36456200926 +33 +1996.02781452793 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +7.98091066173456 +20 +-1175.36456200926 +30 +1996.02781452793 +11 +7.61498037677585 +21 +-1175.36497652034 +31 +2074.44691865133 +12 +22.0539974410672 +22 +-1175.36502652919 +32 +2068.54486718316 +13 +22.0539974410672 +23 +-1175.36502652919 +33 +2068.54486718316 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +7.98091066173456 +20 +-1175.36456200926 +30 +1996.02781452793 +11 +22.0539974410672 +21 +-1175.36502652919 +31 +2068.54486718316 +12 +22.3642181573071 +22 +-1175.36467512367 +32 +2002.0643607916 +13 +22.3642181573071 +23 +-1175.36467512367 +33 +2002.0643607916 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +22.3642181573071 +20 +-1175.36467512367 +30 +2002.0643607916 +11 +22.0539974410672 +21 +-1175.36502652919 +31 +2068.54486718316 +12 +33.1352924626808 +22 +-1175.36503065183 +32 +2057.5665100218 +13 +33.1352924626808 +23 +-1175.36503065183 +33 +2057.5665100218 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +22.3642181573071 +20 +-1175.36467512367 +30 +2002.0643607916 +11 +33.1352924626808 +21 +-1175.36503065183 +31 +2057.5665100218 +12 +33.3425753183123 +22 +-1175.36479585016 +32 +2013.1456558129 +13 +33.3425753183123 +23 +-1175.36479585016 +33 +2013.1456558129 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +33.3425753183123 +20 +-1175.36479585016 +30 +2013.1456558129 +11 +33.1352924626808 +21 +-1175.36503065183 +31 +2057.5665100218 +12 +39.1718387267654 +22 +-1175.36498826062 +32 +2043.18320252602 +13 +39.1718387267654 +23 +-1175.36498826062 +33 +2043.18320252602 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +33.3425753183123 +20 +-1175.36479585016 +30 +2013.1456558129 +11 +39.1718387267654 +21 +-1175.36498826062 +31 +2043.18320252602 +12 +39.2446267860425 +22 +-1175.36490580924 +32 +2027.58467287705 +13 +39.2446267860425 +23 +-1175.36490580924 +33 +2027.58467287705 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +26.4904348219512 +20 +-1260.03514143184 +30 +2148.08890332828 +11 +7.61498037677585 +21 +-1175.36497652034 +31 +2074.44691865133 +12 +22.1236937528375 +22 +-1271.71644897083 +32 +2131.05239675912 +13 +22.1236937528375 +23 +-1271.71644897083 +33 +2131.05239675912 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +83.4206440937541 +20 +-1271.71656212697 +30 +2087.33335312354 +11 +33.1352924626808 +21 +-1175.36503065183 +31 +2057.5665100218 +12 +22.0539974410672 +22 +-1175.36502652919 +32 +2068.54486718316 +13 +22.0539974410672 +23 +-1175.36502652919 +33 +2068.54486718316 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +57.1202981576705 +20 +-1271.71656243456 +30 +2115.28923569394 +11 +83.4206440937541 +21 +-1271.71656212697 +31 +2087.33335312354 +12 +22.0539974410672 +22 +-1175.36502652919 +32 +2068.54486718316 +13 +22.0539974410672 +23 +-1175.36502652919 +33 +2068.54486718316 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +97.0207423055492 +20 +-1271.71644809489 +30 +2051.44077874854 +11 +95.8501011255072 +21 +-1271.71623769867 +31 +2013.07583165055 +12 +39.2446267860425 +22 +-1175.36490580924 +32 +2027.58467287705 +13 +39.2446267860425 +23 +-1175.36490580924 +33 +2027.58467287705 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +97.0207423055492 +20 +-1271.71644809489 +30 +2051.44077874854 +11 +39.2446267860425 +21 +-1175.36490580924 +31 +2027.58467287705 +12 +80.5104813608606 +22 +-1244.21642404447 +32 +2049.07971498233 +13 +80.5104813608606 +23 +-1244.21642404447 +33 +2049.07971498233 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +80.5104813608606 +20 +-1244.21642404447 +30 +2049.07971498233 +11 +39.2446267860425 +21 +-1175.36490580924 +31 +2027.58467287705 +12 +39.1718387267654 +22 +-1175.36498826062 +32 +2043.18320252602 +13 +39.1718387267654 +23 +-1175.36498826062 +33 +2043.18320252602 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.1365944868046 +20 +-1575.77504550416 +30 +2057.56773748292 +11 +39.1731407508892 +21 +-1575.77508789537 +31 +2043.18442998714 +12 +114.432786822367 +22 +-1491.10243675244 +32 +2053.92735141868 +13 +114.432786822367 +23 +-1491.10243675244 +33 +2053.92735141868 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-40.8109707613038 +20 +1087.68143091934 +30 +2094.59385930307 +11 +-14.9795415848991 +21 +1076.22858095908 +31 +2105.69575667421 +12 +-14.9794770512274 +22 +1087.68122638822 +32 +2105.69581751223 +13 +-14.9794770512274 +23 +1087.68122638822 +33 +2105.69581751223 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-14.9795415848991 +20 +1076.22858095908 +30 +2105.69575667421 +11 +-40.8109707613038 +21 +1087.68143091934 +31 +2094.59385930307 +12 +-40.8110352949755 +22 +1076.22878549019 +32 +2094.59379846504 +13 +-40.8110352949755 +23 +1076.22878549019 +33 +2094.59379846504 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +13.1342467554502 +20 +1087.68106599834 +30 +2106.06740479624 +11 +39.2500765270318 +21 +1076.22832873845 +31 +2095.65198952152 +12 +39.2501410607034 +22 +1087.68097416759 +32 +2095.65205035954 +13 +39.2501410607034 +23 +1087.68097416759 +33 +2095.65205035954 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.2500765270318 +20 +1076.22832873845 +30 +2095.65198952152 +11 +13.1342467554502 +21 +1087.68106599834 +31 +2106.06740479624 +12 +13.1341822217786 +22 +1076.2284205692 +32 +2106.06734395821 +13 +13.1341822217786 +23 +1076.2284205692 +33 +2106.06734395821 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-13.1114461530171 +20 +1076.22932123545 +30 +1964.35852270987 +11 +-39.2272759245986 +21 +1087.68205849534 +31 +1974.77393798458 +12 +-13.1113816193455 +22 +1087.68196666459 +32 +1964.35858354789 +13 +-13.1113816193455 +23 +1087.68196666459 +33 +1964.35858354789 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2272759245986 +20 +1087.68205849534 +30 +1974.77393798458 +11 +-13.1114461530171 +21 +1076.22932123545 +31 +1964.35852270987 +12 +-39.2273404582702 +22 +1076.22941306619 +32 +1974.77387714657 +13 +-39.2273404582702 +23 +1076.22941306619 +33 +1974.77387714657 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +60.4504887565981 +20 +1087.68138420926 +30 +1995.97428567753 +11 +70.8657786588185 +21 +1076.22854136019 +31 +2022.0901191445 +12 +60.4504242229264 +22 +1076.22873878012 +32 +1995.97422483951 +13 +60.4504242229264 +23 +1076.22873878012 +33 +1995.97422483951 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +70.8657786588185 +20 +1076.22854136019 +30 +2022.0901191445 +11 +60.4504887565981 +21 +1087.68138420926 +31 +1995.97428567753 +12 +70.8658431924901 +22 +1087.68118678933 +32 +2022.09017998252 +13 +70.8658431924901 +23 +1087.68118678933 +33 +2022.09017998252 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.056636051503 +20 +-1175.36442371874 +30 +2001.8570779373 +11 +-33.1252329353715 +21 +1078.14549914487 +31 +2012.84740605224 +12 +-22.0439379137581 +22 +1078.14549502223 +32 +2001.86904889088 +13 +-22.0439379137581 +23 +1078.14549502223 +33 +2001.86904889088 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.1252329353715 +20 +1078.14549914487 +30 +2012.84740605224 +11 +-22.056636051503 +21 +-1175.36442371874 +31 +2001.8570779373 +12 +-33.1295365918798 +22 +314.385267310674 +32 +2012.8433488532 +13 +-33.1295365918798 +23 +314.385267310674 +33 +2012.8433488532 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.3769162950522 +20 +1078.1452436173 +30 +2002.07633174518 +11 +33.3425753183123 +21 +-1175.36479585016 +31 +2013.1456558129 +12 +22.3642181573071 +22 +-1175.36467512367 +32 +2002.0643607916 +13 +22.3642181573071 +23 +-1175.36467512367 +33 +2002.0643607916 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.3425753183123 +20 +-1175.36479585016 +30 +2013.1456558129 +11 +22.3769162950522 +21 +1078.1452436173 +31 +2002.07633174518 +12 +33.3552734560573 +22 +1078.14512289081 +32 +2013.15762676649 +13 +33.3552734560573 +23 +1078.14512289081 +33 +2013.15762676649 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.0666955788121 +20 +1078.14489221178 +30 +2068.55683813674 +11 +13.1341822217786 +21 +1076.2284205692 +31 +2106.06734395821 +12 +7.62767851452085 +22 +1078.14494222063 +32 +2074.45888960491 +13 +7.62767851452085 +23 +1078.14494222063 +33 +2074.45888960491 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +13.1341822217786 +20 +1076.2284205692 +30 +2106.06734395821 +11 +22.0666955788121 +21 +1078.14489221178 +31 +2068.55683813674 +12 +39.2500765270318 +22 +1076.22832873845 +32 +2095.65198952152 +13 +39.2500765270318 +23 +1076.22832873845 +33 +2095.65198952152 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.354158629998 +20 +1078.14514361671 +30 +2068.34955528244 +11 +-14.9795415848991 +21 +1076.22858095908 +31 +2105.69575667421 +12 +-40.8110352949755 +22 +1076.22878549019 +32 +2094.59379846504 +13 +-40.8110352949755 +23 +1076.22878549019 +33 +2094.59379846504 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-14.9795415848991 +20 +1076.22858095908 +30 +2105.69575667421 +11 +-22.354158629998 +21 +1078.14514361671 +31 +2068.34955528244 +12 +-7.97085113442526 +22 +1078.14503050231 +32 +2074.3861015461 +13 +-7.97085113442526 +23 +1078.14503050231 +33 +2074.3861015461 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +15.0022776536605 +20 +1076.22916084557 +30 +1964.73010999387 +11 +22.3769162950522 +21 +1078.1452436173 +31 +2002.07633174518 +12 +7.99360879947956 +22 +1078.14535673171 +32 +1996.03978548152 +13 +7.99360879947956 +23 +1078.14535673171 +33 +1996.03978548152 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.3769162950522 +20 +1078.1452436173 +30 +2002.07633174518 +11 +15.0022776536605 +21 +1076.22916084557 +31 +1964.73010999387 +12 +40.8337713637369 +22 +1076.22895631445 +32 +1975.83206820304 +13 +40.8337713637369 +23 +1076.22895631445 +33 +1975.83206820304 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +15.0022776536605 +20 +1076.22916084557 +30 +1964.73010999387 +11 +-7.60492084946682 +21 +1078.14544501338 +31 +1995.96699742271 +12 +-13.1114461530171 +22 +1076.22932123545 +32 +1964.35852270987 +13 +-13.1114461530171 +23 +1076.22932123545 +33 +1964.35852270987 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.60492084946682 +20 +1078.14544501338 +30 +1995.96699742271 +11 +15.0022776536605 +21 +1076.22916084557 +31 +1964.73010999387 +12 +7.99360879947956 +22 +1078.14535673171 +32 +1996.03978548152 +13 +7.99360879947956 +23 +1078.14535673171 +33 +1996.03978548152 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.61761898721182 +20 +-1175.36447372759 +30 +1995.95502646913 +11 +-22.1264639806523 +21 +-1271.7151812764 +31 +1939.34942428128 +12 +-26.4930734323873 +22 +-1260.03663933705 +32 +1922.31304179217 +13 +-26.4930734323873 +23 +-1260.03663933705 +33 +1922.31304179217 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.98091066173456 +20 +-1175.36456200926 +30 +1996.02781452793 +11 +18.7238320955074 +21 +-1260.0363927542 +31 +1920.768168456 +12 +16.2384831173033 +22 +-1271.71539123762 +32 +1938.17878310009 +13 +16.2384831173033 +23 +-1271.71539123762 +33 +1938.17878310009 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.000316577896367365 +20 +-1635.02455455848 +30 +2035.20251476124 +11 +-22.055000168389 +21 +-1635.02485596371 +31 +2001.85862013831 +12 +-7.61598310409778 +22 +-1635.02480595485 +32 +1995.95656867013 +13 +-7.61598310409778 +23 +-1635.02480595485 +33 +1995.95656867013 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.1369283457947 +20 +-1635.02424903062 +30 +2057.56805222281 +11 +22.0556333241812 +21 +-1635.02425315326 +31 +2068.54640938416 +12 +0.000316577896367365 +22 +-1635.02455455848 +32 +2035.20251476124 +13 +0.000316577896367365 +23 +-1635.02455455848 +33 +2035.20251476124 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.000316577896367365 +20 +-1635.02455455848 +30 +2035.20251476124 +11 +-39.1728414540873 +21 +-1635.02481769514 +31 +2027.22028479544 +12 +-33.1362951900026 +22 +-1635.02486008634 +32 +2012.83697729966 +13 +-33.1362951900026 +23 +-1635.02486008634 +33 +2012.83697729966 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.61661625988982 +20 +-1635.02430316211 +30 +2074.44846085234 +11 +-7.98191338905644 +21 +-1635.02439144378 +31 +2074.37567279353 +12 +0.000316577896367365 +22 +-1635.02455455848 +32 +2035.20251476124 +13 +0.000316577896367365 +23 +-1635.02455455848 +33 +2035.20251476124 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +83.4206440937541 +20 +-1271.71656212697 +30 +2087.33335312354 +11 +98.5563030683821 +21 +-1491.10230115877 +31 +2096.29352239028 +12 +98.5550010442582 +22 +-1260.03501051119 +32 +2096.29229492916 +13 +98.5550010442582 +23 +-1260.03501051119 +33 +2096.29229492916 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +98.5563030683821 +20 +-1491.10230115877 +30 +2096.29352239028 +11 +83.4206440937541 +21 +-1271.71656212697 +31 +2087.33335312354 +12 +83.421946117878 +22 +-1479.42351402902 +32 +2087.33458058465 +13 +83.421946117878 +23 +-1479.42351402902 +33 +2087.33458058465 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +114.432786822367 +20 +-1491.10243675244 +30 +2053.92735141868 +11 +97.0220443296732 +21 +-1479.4236280611 +31 +2051.44200620966 +12 +114.431484798243 +22 +-1260.03514610487 +32 +2053.92612395756 +13 +114.431484798243 +23 +-1260.03514610487 +33 +2053.92612395756 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-7.97085113442526 +20 +1078.14503050231 +30 +2074.3861015461 +11 +7.61498037677585 +21 +-1175.36497652034 +31 +2074.44691865133 +12 +7.62767851452085 +22 +1078.14494222063 +32 +2074.45888960491 +13 +7.62767851452085 +23 +1078.14494222063 +33 +2074.45888960491 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.61498037677585 +20 +-1175.36497652034 +30 +2074.44691865133 +11 +-7.97085113442526 +21 +1078.14503050231 +31 +2074.3861015461 +12 +-7.9835492721704 +22 +-1175.36488823867 +32 +2074.37413059252 +13 +-7.9835492721704 +23 +-1175.36488823867 +33 +2074.37413059252 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-98.5563376305701 +20 +-1491.10406090528 +30 +1974.11087765241 +11 +-114.43412340868 +21 +-1260.03663466403 +31 +2016.47582116289 +12 +-98.5576396546941 +22 +-1260.0367702577 +32 +1974.10965019129 +13 +-98.5576396546941 +23 +-1260.0367702577 +33 +1974.10965019129 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-114.43412340868 +20 +-1260.03663466403 +30 +2016.47582116289 +11 +-98.5563376305701 +21 +-1491.10406090528 +31 +1974.11087765241 +12 +-114.432821384555 +22 +-1491.10392531161 +32 +2016.47704862401 +13 +-114.432821384555 +23 +-1491.10392531161 +33 +2016.47704862401 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.98224724804656 +20 +-1575.77518791732 +30 +2074.37535805364 +11 +-18.7251686818196 +21 +-1491.10267866227 +31 +2149.63500412557 +12 +-61.0913396528737 +22 +-1491.10300172636 +32 +2133.75852037282 +13 +-61.0913396528737 +23 +-1491.10300172636 +33 +2133.75852037282 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +22.0556333241812 +20 +-1635.02425315326 +30 +2068.54640938416 +11 +7.61661625988982 +21 +-1635.02430316211 +31 +2074.44846085234 +12 +0.000316577896367365 +22 +-1635.02455455848 +32 +2035.20251476124 +13 +0.000316577896367365 +23 +-1635.02455455848 +33 +2035.20251476124 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +21.0791386559896 +20 +-1635.02461467787 +30 +2001.52587998687 +11 +0.000316577896367365 +21 +-1635.02455455848 +31 +2035.20251476124 +12 +7.98254654484851 +22 +-1635.02471767319 +32 +1996.02935672895 +13 +7.98254654484851 +23 +-1635.02471767319 +33 +1996.02935672895 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +67.6755129564576 +20 +-1491.10229951782 +30 +2129.35909332543 +11 +22.055299465191 +21 +-1575.7750496268 +31 +2068.54609464427 +12 +57.1216001817944 +22 +-1479.42351372144 +32 +2115.29046315506 +13 +57.1216001817944 +23 +-1479.42351372144 +33 +2115.29046315506 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-61.0926416769977 +20 +-1260.03571107878 +30 +2133.75729291171 +11 +-7.9835492721704 +21 +-1175.36488823867 +31 +2074.37413059252 +12 +-22.366856767743 +22 +-1175.36477512426 +32 +2068.33758432885 +13 +-22.366856767743 +23 +-1175.36477512426 +33 +2068.33758432885 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-61.0926416769977 +20 +-1260.03571107878 +30 +2133.75729291171 +11 +-18.7264707059435 +21 +-1260.03538801469 +31 +2149.63377666445 +12 +-7.9835492721704 +22 +-1175.36488823867 +32 +2074.37413059252 +13 +-7.9835492721704 +23 +-1175.36488823867 +33 +2074.37413059252 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +67.6742109323337 +20 +-1260.03500887024 +30 +2129.35786586431 +11 +22.0539974410672 +21 +-1175.36502652919 +31 +2068.54486718316 +12 +7.61498037677585 +22 +-1175.36497652034 +32 +2074.44691865133 +13 +7.61498037677585 +23 +-1175.36497652034 +33 +2074.44691865133 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-114.432821384555 +20 +-1491.10392531161 +30 +2016.47704862401 +11 +-97.0222105092401 +21 +-1479.42489400365 +31 +2018.96226975299 +12 +-97.0235125333639 +22 +-1271.71518215234 +32 +2018.96104229187 +13 +-97.0235125333639 +23 +-1271.71518215234 +33 +2018.96104229187 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-39.1731753130775 +20 +-1575.77561416868 +30 +2027.21997005555 +11 +-97.0222105092401 +21 +-1479.42489400365 +31 +2018.96226975299 +12 +-114.432821384555 +22 +-1491.10392531161 +32 +2016.47704862401 +13 +-114.432821384555 +23 +-1491.10392531161 +33 +2016.47704862401 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-97.0235125333639 +20 +-1271.71518215234 +30 +2018.96104229187 +11 +-39.1744773372013 +21 +-1175.36446198731 +31 +2027.21874259443 +12 +-114.43412340868 +22 +-1260.03663466403 +32 +2016.47582116289 +13 +-114.43412340868 +23 +-1260.03663466403 +33 +2016.47582116289 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-114.432821384555 +20 +-1491.10392531161 +30 +2016.47704862401 +11 +-97.0235125333639 +21 +-1271.71518215234 +31 +2018.96104229187 +12 +-114.43412340868 +22 +-1260.03663466403 +32 +2016.47582116289 +13 +-114.43412340868 +23 +-1260.03663466403 +33 +2016.47582116289 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-22.3655547436192 +20 +-1575.77530103172 +30 +2068.33881178997 +11 +-33.3439119046243 +21 +-1575.77542175822 +31 +2057.25751676867 +12 +-33.3435780456342 +22 +-1635.02462528468 +32 +2057.25783150856 +13 +-33.3435780456342 +23 +-1635.02462528468 +33 +2057.25783150856 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-33.3435780456342 +20 +-1635.02462528468 +30 +2057.25783150856 +11 +-21.0785055001976 +21 +-1635.02449443909 +31 +2068.87914953561 +12 +-22.3655547436192 +22 +-1575.77530103172 +32 +2068.33881178997 +13 +-22.3655547436192 +23 +-1575.77530103172 +33 +2068.33881178997 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +21.0791386559896 +20 +-1635.02461467787 +30 +2001.52587998687 +11 +22.365520181431 +21 +-1575.77540103232 +31 +2002.06558825272 +12 +33.3442112014263 +22 +-1635.02448383228 +32 +2013.14719801391 +13 +33.3442112014263 +23 +-1635.02448383228 +33 +2013.14719801391 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.3442112014263 +20 +-1635.02448383228 +30 +2013.14719801391 +11 +22.365520181431 +21 +-1575.77540103232 +31 +2002.06558825272 +12 +33.3438773424362 +22 +-1575.77528030582 +32 +2013.14688327402 +13 +33.3438773424362 +23 +-1575.77528030582 +33 +2013.14688327402 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +70.4942559076435 +20 +1087.68103953921 +30 +2050.20390378926 +11 +59.3922331640569 +21 +1076.22831944724 +31 +2076.0353366617 +12 +70.4941913739718 +22 +1076.22839411006 +32 +2050.20384295124 +13 +70.4941913739718 +23 +1076.22839411006 +33 +2050.20384295124 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +59.3922331640569 +20 +1076.22831944724 +30 +2076.0353366617 +11 +70.4942559076435 +21 +1087.68103953921 +31 +2050.20390378926 +12 +59.3922976977286 +22 +1087.68096487638 +32 +2076.03539749972 +13 +59.3922976977286 +23 +1087.68096487638 +33 +2076.03539749972 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +40.8337713637369 +20 +1076.22895631445 +30 +1975.83206820304 +11 +15.0023421873321 +21 +1087.68180627471 +31 +1964.7301708319 +12 +40.8338358974086 +22 +1087.68160174359 +32 +1975.83212904106 +13 +40.8338358974086 +23 +1087.68160174359 +33 +1975.83212904106 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +15.0023421873321 +20 +1087.68180627471 +30 +1964.7301708319 +11 +40.8337713637369 +21 +1076.22895631445 +31 +1975.83206820304 +12 +15.0022776536605 +22 +1076.22916084557 +32 +1964.73010999387 +13 +15.0022776536605 +23 +1076.22916084557 +33 +1964.73010999387 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-70.4714553052104 +20 +1076.22934769458 +30 +2020.22202371684 +11 +-59.3694325616239 +21 +1087.68206778655 +31 +1994.39059084441 +12 +-59.3694970952955 +22 +1076.22942235741 +32 +1994.39053000639 +13 +-59.3694970952955 +23 +1076.22942235741 +33 +1994.39053000639 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-59.3694325616239 +20 +1087.68206778655 +30 +1994.39059084441 +11 +-70.4714553052104 +21 +1076.22934769458 +31 +2020.22202371684 +12 +-70.4713907715387 +22 +1087.68199312372 +32 +2020.22208455487 +13 +-70.4713907715387 +23 +1087.68199312372 +33 +2020.22208455487 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-60.4276881541649 +20 +1076.22900302453 +30 +2074.45164182857 +11 +-70.8429780563856 +21 +1087.6818458736 +31 +2048.3358083616 +12 +-70.8430425900572 +22 +1076.22920044446 +32 +2048.33574752358 +13 +-70.8430425900572 +23 +1076.22920044446 +33 +2048.33574752358 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-70.8429780563856 +20 +1087.6818458736 +30 +2048.3358083616 +11 +-60.4276881541649 +21 +1076.22900302453 +31 +2074.45164182857 +12 +-60.4276236204933 +22 +1087.68164845367 +32 +2074.45170266659 +13 +-60.4276236204933 +23 +1087.68164845367 +33 +2074.45170266659 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +112.886611463429 +20 +-1260.03539500836 +30 +2008.70921842963 +11 +94.1568760248532 +21 +-1491.10300997595 +31 +1967.52666978086 +12 +94.1555740007292 +22 +-1260.03571932837 +32 +1967.52544231974 +13 +94.1555740007292 +23 +-1260.03571932837 +33 +1967.52544231974 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +94.1568760248532 +20 +-1491.10300997595 +30 +1967.52666978086 +11 +112.886611463429 +21 +-1260.03539500836 +31 +2008.70921842963 +12 +112.887913487553 +22 +-1491.10268565594 +32 +2008.71044589075 +13 +112.887913487553 +23 +-1491.10268565594 +33 +2008.71044589075 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-112.887948049741 +20 +-1491.10367640812 +30 +2061.69395415194 +11 +-39.2459633723545 +21 +-1575.77553171729 +31 +2042.81849970453 +12 +-33.3439119046243 +22 +-1575.77542175822 +32 +2057.25751676867 +13 +-33.3439119046243 +23 +-1575.77542175822 +33 +2057.25751676867 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-22.3655547436192 +20 +-1575.77530103172 +30 +2068.33881178997 +11 +-7.98191338905644 +21 +-1635.02439144378 +31 +2074.37567279353 +12 +-7.98224724804656 +22 +-1575.77518791732 +32 +2074.37535805364 +13 +-7.98224724804656 +23 +-1575.77518791732 +33 +2074.37535805364 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.98191338905644 +20 +-1635.02439144378 +30 +2074.37567279353 +11 +-22.3655547436192 +21 +-1575.77530103172 +31 +2068.33881178997 +12 +-21.0785055001976 +22 +-1635.02449443909 +32 +2068.87914953561 +13 +-21.0785055001976 +23 +-1635.02449443909 +33 +2068.87914953561 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.0539974410672 +20 +-1175.36502652919 +30 +2068.54486718316 +11 +33.1352924626808 +21 +-1175.36503065183 +31 +2057.5665100218 +12 +22.062391922304 +22 +314.384660377585 +32 +2068.5527809377 +13 +22.062391922304 +23 +314.384660377585 +33 +2068.5527809377 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.98221268585839 +20 +-1575.77551414673 +30 +1996.02904198905 +11 +61.0913050906858 +21 +-1491.1033603377 +31 +1936.64587966987 +12 +22.365520181431 +22 +-1575.77540103232 +32 +2002.06558825272 +13 +22.365520181431 +23 +-1575.77540103232 +33 +2002.06558825272 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-67.6768495427695 +20 +-1260.03677189865 +30 +1941.04407925614 +11 +-22.056636051503 +21 +-1175.36442371874 +31 +2001.8570779373 +12 +-7.61761898721182 +22 +-1175.36447372759 +32 +1995.95502646913 +13 +-7.61761898721182 +23 +-1175.36447372759 +33 +1995.95502646913 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.3438773424362 +20 +-1575.77528030582 +30 +2013.14688327402 +11 +52.132359515953 +21 +-1479.42441042435 +31 +1951.78010877195 +12 +80.0882420855246 +22 +-1479.42411318676 +32 +1978.08045470725 +13 +80.0882420855246 +23 +-1479.42411318676 +33 +1978.08045470725 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-33.3325157910026 +20 +1078.14526434321 +30 +2057.26826026113 +11 +-40.8110352949755 +21 +1076.22878549019 +31 +2094.59379846504 +12 +-60.4276881541649 +22 +1076.22900302453 +32 +2074.45164182857 +13 +-60.4276881541649 +23 +1076.22900302453 +33 +2074.45164182857 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-40.8110352949755 +20 +1076.22878549019 +30 +2094.59379846504 +11 +-33.3325157910026 +21 +1078.14526434321 +31 +2057.26826026113 +12 +-22.354158629998 +22 +1078.14514361671 +32 +2068.34955528244 +13 +-22.354158629998 +23 +1078.14514361671 +33 +2068.34955528244 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-95.8528713533217 +20 +-1271.71539254856 +30 +2057.32598938986 +11 +-112.887948049741 +21 +-1491.10367640812 +31 +2061.69395415194 +12 +-112.889250073865 +22 +-1260.03638576054 +32 +2061.69272669082 +13 +-112.889250073865 +23 +-1260.03638576054 +33 +2061.69272669082 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-112.887948049741 +20 +-1491.10367640812 +30 +2061.69395415194 +11 +-95.8528713533217 +21 +-1271.71539254856 +31 +2057.32598938986 +12 +-95.851569329198 +22 +-1479.42468360743 +32 +2057.32721685097 +13 +-95.851569329198 +23 +-1479.42468360743 +33 +2057.32721685097 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.3655547436192 +20 +-1575.77530103172 +30 +2068.33881178997 +11 +-7.98224724804656 +21 +-1575.77518791732 +31 +2074.37535805364 +12 +-61.0913396528737 +22 +-1491.10300172636 +32 +2133.75852037282 +13 +-61.0913396528737 +23 +-1491.10300172636 +33 +2133.75852037282 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.2573249237874 +20 +1078.14501293173 +30 +2027.59664383063 +11 +39.1718387267654 +21 +-1175.36498826062 +31 +2043.18320252602 +12 +39.2446267860425 +22 +-1175.36490580924 +32 +2027.58467287705 +13 +39.2446267860425 +23 +-1175.36490580924 +33 +2027.58467287705 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.1718387267654 +20 +-1175.36498826062 +30 +2043.18320252602 +11 +39.2573249237874 +21 +1078.14501293173 +31 +2027.59664383063 +12 +39.1845368645104 +22 +1078.14493048035 +32 +2043.19517347961 +13 +39.1845368645104 +23 +1078.14493048035 +33 +2043.19517347961 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.98091066173456 +20 +-1175.36456200926 +30 +1996.02781452793 +11 +-7.60492084946682 +21 +1078.14544501338 +31 +1995.96699742271 +12 +7.99360879947956 +22 +1078.14535673171 +32 +1996.03978548152 +13 +7.99360879947956 +23 +1078.14535673171 +33 +1996.03978548152 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.60492084946682 +20 +1078.14544501338 +30 +1995.96699742271 +11 +7.98091066173456 +21 +-1175.36456200926 +31 +1996.02781452793 +12 +-7.60922450597496 +22 +314.385213179183 +32 +1995.96294022367 +13 +-7.60922450597496 +23 +314.385213179183 +33 +1995.96294022367 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.2573249237874 +20 +1078.14501293173 +30 +2027.59664383063 +11 +70.4941913739718 +21 +1076.22839411006 +31 +2050.20384295124 +12 +39.1845368645104 +22 +1078.14493048035 +32 +2043.19517347961 +13 +39.1845368645104 +23 +1078.14493048035 +33 +2043.19517347961 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +70.4941913739718 +20 +1076.22839411006 +30 +2050.20384295124 +11 +39.2573249237874 +21 +1078.14501293173 +31 +2027.59664383063 +12 +70.8657786588185 +22 +1076.22854136019 +32 +2022.0901191445 +13 +70.8657786588185 +23 +1076.22854136019 +33 +2022.0901191445 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-26.4917714082634 +20 +-1491.10392998463 +30 +1922.31426925329 +11 +-67.6768495427695 +21 +-1260.03677189865 +31 +1941.04407925614 +12 +-26.4930734323873 +22 +-1260.03663933705 +32 +1922.31304179217 +13 +-26.4930734323873 +23 +-1260.03663933705 +33 +1922.31304179217 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-67.6768495427695 +20 +-1260.03677189865 +30 +1941.04407925614 +11 +-26.4917714082634 +21 +-1491.10392998463 +31 +1922.31426925329 +12 +-67.6755475186457 +22 +-1491.10406254623 +32 +1941.04530671726 +13 +-67.6755475186457 +23 +-1491.10406254623 +33 +1941.04530671726 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.1479906004257 +20 +1078.14488808915 +30 +2057.57848097538 +11 +39.2500765270318 +21 +1076.22832873845 +31 +2095.65198952152 +12 +22.0666955788121 +22 +1078.14489221178 +32 +2068.55683813674 +13 +22.0666955788121 +23 +1078.14489221178 +33 +2068.55683813674 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.2500765270318 +20 +1076.22832873845 +30 +2095.65198952152 +11 +33.1479906004257 +21 +1078.14488808915 +31 +2057.57848097538 +12 +59.3922331640569 +22 +1076.22831944724 +32 +2076.0353366617 +13 +59.3922331640569 +23 +1076.22831944724 +33 +2076.0353366617 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-61.0926416769977 +20 +-1260.03571107878 +30 +2133.75729291171 +11 +-18.7251686818196 +21 +-1491.10267866227 +31 +2149.63500412557 +12 +-18.7264707059435 +22 +-1260.03538801469 +32 +2149.63377666445 +13 +-18.7264707059435 +23 +-1260.03538801469 +33 +2149.63377666445 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-18.7251686818196 +20 +-1491.10267866227 +30 +2149.63500412557 +11 +-61.0926416769977 +21 +-1260.03571107878 +31 +2133.75729291171 +12 +-61.0913396528737 +22 +-1491.10300172636 +32 +2133.75852037282 +13 +-61.0913396528737 +23 +-1491.10300172636 +33 +2133.75852037282 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.0553340273792 +20 +-1575.77565243725 +30 +2001.85830539842 +11 +-57.1217663613614 +21 +-1479.42500834332 +31 +1955.11381280758 +12 +-67.6755475186457 +22 +-1491.10406254623 +32 +1941.04530671726 +13 +-67.6755475186457 +23 +-1491.10406254623 +33 +1941.04530671726 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-52.13252569552 +20 +-1479.4241116404 +30 +2118.62416719069 +11 +-61.0926416769977 +21 +-1260.03571107878 +31 +2133.75729291171 +12 +-52.1338277196439 +22 +-1271.71596451559 +32 +2118.62293972957 +13 +-52.1338277196439 +23 +-1271.71596451559 +33 +2118.62293972957 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-61.0926416769977 +20 +-1260.03571107878 +30 +2133.75729291171 +11 +-52.13252569552 +21 +-1479.4241116404 +31 +2118.62416719069 +12 +-61.0913396528737 +22 +-1491.10300172636 +32 +2133.75852037282 +13 +-61.0913396528737 +23 +-1491.10300172636 +33 +2133.75852037282 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2345672587327 +20 +1078.14537430228 +30 +2042.82924319699 +11 +-60.4276881541649 +21 +1076.22900302453 +31 +2074.45164182857 +12 +-70.8430425900572 +22 +1076.22920044446 +32 +2048.33574752358 +13 +-70.8430425900572 +23 +1076.22920044446 +33 +2048.33574752358 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-60.4276881541649 +20 +1076.22900302453 +30 +2074.45164182857 +11 +-39.2345672587327 +21 +1078.14537430228 +31 +2042.82924319699 +12 +-33.3325157910026 +22 +1078.14526434321 +32 +2057.26826026113 +13 +-33.3325157910026 +23 +1078.14526434321 +33 +2057.26826026113 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +26.491736846075 +20 +-1491.10243207942 +30 +2148.0901307894 +11 +22.1249957769614 +21 +-1479.42362718516 +31 +2131.05362422024 +12 +7.61628240089973 +22 +-1575.77509963565 +32 +2074.44814611245 +13 +7.61628240089973 +23 +-1575.77509963565 +33 +2074.44814611245 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-7.98224724804656 +20 +-1575.77518791732 +30 +2074.37535805364 +11 +7.61661625988982 +21 +-1635.02430316211 +31 +2074.44846085234 +12 +7.61628240089973 +22 +-1575.77509963565 +32 +2074.44814611245 +13 +7.61628240089973 +23 +-1575.77509963565 +33 +2074.44814611245 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.61661625988982 +20 +-1635.02430316211 +30 +2074.44846085234 +11 +-7.98224724804656 +21 +-1575.77518791732 +31 +2074.37535805364 +12 +-7.98191338905644 +22 +-1635.02439144378 +32 +2074.37567279353 +13 +-7.98191338905644 +23 +-1635.02439144378 +33 +2074.37567279353 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +80.0869400614005 +20 +-1271.71596296923 +30 +1978.07922724613 +11 +33.3425753183123 +21 +-1175.36479585016 +31 +2013.1456558129 +12 +94.1555740007292 +22 +-1260.03571932837 +32 +1967.52544231974 +13 +94.1555740007292 +23 +-1260.03571932837 +33 +1967.52544231974 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.000316577896367365 +20 +-1635.02455455848 +30 +2035.20251476124 +11 +-7.98191338905644 +21 +-1635.02439144378 +31 +2074.37567279353 +12 +-21.0785055001976 +22 +-1635.02449443909 +32 +2068.87914953561 +13 +-21.0785055001976 +23 +-1635.02449443909 +33 +2068.87914953561 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.000316577896367365 +20 +-1635.02455455848 +30 +2035.20251476124 +11 +-39.2456295133644 +21 +-1635.02473524376 +31 +2042.81881444442 +12 +-39.1728414540873 +22 +-1635.02481769514 +32 +2027.22028479544 +13 +-39.1728414540873 +23 +-1635.02481769514 +33 +2027.22028479544 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.3442112014263 +20 +-1635.02448383228 +30 +2013.14719801391 +11 +0.000316577896367365 +21 +-1635.02455455848 +31 +2035.20251476124 +12 +21.0791386559896 +22 +-1635.02461467787 +32 +2001.52587998687 +13 +21.0791386559896 +23 +-1635.02461467787 +33 +2001.52587998687 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.2462626691564 +20 +-1635.02437387321 +30 +2027.58621507805 +11 +39.1734746098794 +21 +-1635.02429142183 +31 +2043.18474472703 +12 +0.000316577896367365 +22 +-1635.02455455848 +32 +2035.20251476124 +13 +0.000316577896367365 +23 +-1635.02455455848 +33 +2035.20251476124 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.000316577896367365 +20 +-1635.02455455848 +30 +2035.20251476124 +11 +-33.3435780456342 +21 +-1635.02462528468 +31 +2057.25783150856 +12 +-39.2456295133644 +22 +-1635.02473524376 +32 +2042.81881444442 +13 +-39.2456295133644 +23 +-1635.02473524376 +33 +2042.81881444442 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-18.7264707059435 +20 +-1260.03538801469 +30 +2149.63377666445 +11 +-16.241253345118 +21 +-1271.71623900961 +31 +2132.22303794032 +12 +-7.9835492721704 +22 +-1175.36488823867 +32 +2074.37413059252 +13 +-7.9835492721704 +23 +-1175.36488823867 +33 +2074.37413059252 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-61.0926416769977 +20 +-1260.03571107878 +30 +2133.75729291171 +11 +-22.366856767743 +21 +-1175.36477512426 +31 +2068.33758432885 +12 +-52.1338277196439 +22 +-1271.71596451559 +32 +2118.62293972957 +13 +-52.1338277196439 +23 +-1271.71596451559 +33 +2118.62293972957 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-13.1114461530171 +20 +1076.22932123545 +30 +1964.35852270987 +11 +-22.0439379137581 +21 +1078.14549502223 +31 +2001.86904889088 +12 +-39.2273404582702 +22 +1076.22941306619 +32 +1974.77387714657 +13 +-39.2273404582702 +23 +1076.22941306619 +33 +1974.77387714657 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.0439379137581 +20 +1078.14549502223 +30 +2001.86904889088 +11 +-13.1114461530171 +21 +1076.22932123545 +31 +1964.35852270987 +12 +-7.60492084946682 +22 +1078.14544501338 +32 +1995.96699742271 +13 +-7.60492084946682 +23 +1078.14544501338 +33 +1995.96699742271 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.354158629998 +20 +1078.14514361671 +30 +2068.34955528244 +11 +-7.9835492721704 +21 +-1175.36488823867 +31 +2074.37413059252 +12 +-7.97085113442526 +22 +1078.14503050231 +32 +2074.3861015461 +13 +-7.97085113442526 +23 +1078.14503050231 +33 +2074.3861015461 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.9835492721704 +20 +-1175.36488823867 +30 +2074.37413059252 +11 +-22.354158629998 +21 +1078.14514361671 +31 +2068.34955528244 +12 +-22.366856767743 +22 +-1175.36477512426 +32 +2068.33758432885 +13 +-22.366856767743 +23 +-1175.36477512426 +33 +2068.33758432885 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +0.000316577896367365 +20 +-1635.02455455848 +30 +2035.20251476124 +11 +-33.1362951900026 +21 +-1635.02486008634 +31 +2012.83697729966 +12 +-22.055000168389 +22 +-1635.02485596371 +32 +2001.85862013831 +13 +-22.055000168389 +23 +-1635.02485596371 +33 +2001.85862013831 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-95.8528713533217 +20 +-1271.71539254856 +30 +2057.32598938986 +11 +-112.889250073865 +21 +-1260.03638576054 +31 +2061.69272669082 +12 +-39.2472653964783 +22 +-1175.36454443869 +32 +2042.81727224341 +13 +-39.2472653964783 +23 +-1175.36454443869 +33 +2042.81727224341 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.1365944868046 +20 +-1575.77504550416 +30 +2057.56773748292 +11 +39.1734746098794 +21 +-1635.02429142183 +31 +2043.18474472703 +12 +39.1731407508892 +22 +-1575.77508789537 +32 +2043.18442998714 +13 +39.1731407508892 +23 +-1575.77508789537 +33 +2043.18442998714 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.1734746098794 +20 +-1635.02429142183 +30 +2043.18474472703 +11 +33.1365944868046 +21 +-1575.77504550416 +31 +2057.56773748292 +12 +33.1369283457947 +22 +-1635.02424903062 +32 +2057.56805222281 +13 +33.1369283457947 +23 +-1635.02424903062 +33 +2057.56805222281 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.1731407508892 +20 +-1575.77508789537 +30 +2043.18442998714 +11 +97.0220443296732 +21 +-1479.4236280611 +31 +2051.44200620966 +12 +114.432786822367 +22 +-1491.10243675244 +32 +2053.92735141868 +13 +114.432786822367 +23 +-1491.10243675244 +33 +2053.92735141868 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-39.2273404582702 +20 +1076.22941306619 +30 +1974.77387714657 +11 +-59.3694325616239 +21 +1087.68206778655 +31 +1994.39059084441 +12 +-39.2272759245986 +22 +1087.68205849534 +32 +1974.77393798458 +13 +-39.2272759245986 +23 +1087.68205849534 +33 +1974.77393798458 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-59.3694325616239 +20 +1087.68206778655 +30 +1994.39059084441 +11 +-39.2273404582702 +21 +1076.22941306619 +31 +1974.77387714657 +12 +-59.3694970952955 +22 +1076.22942235741 +32 +1994.39053000639 +13 +-59.3694970952955 +23 +1076.22942235741 +33 +1994.39053000639 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2273404582702 +20 +1076.22941306619 +30 +1974.77387714657 +11 +-33.1252329353715 +21 +1078.14549914487 +31 +2012.84740605224 +12 +-59.3694970952955 +22 +1076.22942235741 +32 +1994.39053000639 +13 +-59.3694970952955 +23 +1076.22942235741 +33 +1994.39053000639 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.1252329353715 +20 +1078.14549914487 +30 +2012.84740605224 +11 +-39.2273404582702 +21 +1076.22941306619 +31 +1974.77387714657 +12 +-22.0439379137581 +22 +1078.14549502223 +32 +2001.86904889088 +13 +-22.0439379137581 +23 +1078.14549502223 +33 +2001.86904889088 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-59.3694970952955 +20 +1076.22942235741 +30 +1994.39053000639 +11 +-39.1617791994563 +21 +1078.14545675366 +31 +2027.23071354802 +12 +-70.4714553052104 +22 +1076.22934769458 +32 +2020.22202371684 +13 +-70.4714553052104 +23 +1076.22934769458 +33 +2020.22202371684 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.1617791994563 +20 +1078.14545675366 +30 +2027.23071354802 +11 +-59.3694970952955 +21 +1076.22942235741 +31 +1994.39053000639 +12 +-33.1252329353715 +22 +1078.14549914487 +32 +2012.84740605224 +13 +-33.1252329353715 +23 +1078.14549914487 +33 +2012.84740605224 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-18.7251686818196 +20 +-1491.10267866227 +30 +2149.63500412557 +11 +-7.98224724804656 +21 +-1575.77518791732 +31 +2074.37535805364 +12 +-16.2399513209942 +22 +-1479.42383714638 +32 +2132.22426540144 +13 +-16.2399513209942 +23 +-1479.42383714638 +33 +2132.22426540144 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-33.3439119046243 +20 +-1575.77542175822 +30 +2057.25751676867 +11 +-80.0884082650914 +21 +-1479.42440887799 +31 +2092.3238212554 +12 +-94.1569105870414 +22 +-1491.10335208811 +32 +2102.87773026184 +13 +-94.1569105870414 +23 +-1491.10335208811 +33 +2102.87773026184 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-33.1362951900026 +20 +-1635.02486008634 +30 +2012.83697729966 +11 +-39.1731753130775 +21 +-1575.77561416868 +31 +2027.21997005555 +12 +-33.1366290489928 +22 +-1575.77565655989 +32 +2012.83666255977 +13 +-33.1366290489928 +23 +-1575.77565655989 +33 +2012.83666255977 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.1731753130775 +20 +-1575.77561416868 +30 +2027.21997005555 +11 +-33.1362951900026 +21 +-1635.02486008634 +31 +2012.83697729966 +12 +-39.1728414540873 +22 +-1635.02481769514 +32 +2027.22028479544 +13 +-39.1728414540873 +23 +-1635.02481769514 +33 +2027.22028479544 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.97085113442526 +20 +1078.14503050231 +30 +2074.3861015461 +11 +13.1341822217786 +21 +1076.2284205692 +31 +2106.06734395821 +12 +-14.9795415848991 +22 +1076.22858095908 +32 +2105.69575667421 +13 +-14.9795415848991 +23 +1076.22858095908 +33 +2105.69575667421 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +13.1341822217786 +20 +1076.2284205692 +30 +2106.06734395821 +11 +-7.97085113442526 +21 +1078.14503050231 +31 +2074.3861015461 +12 +7.62767851452085 +22 +1078.14494222063 +32 +2074.45888960491 +13 +7.62767851452085 +23 +1078.14494222063 +33 +2074.45888960491 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.1845368645104 +20 +1078.14493048035 +30 +2043.19517347961 +11 +59.3922331640569 +21 +1076.22831944724 +31 +2076.0353366617 +12 +33.1479906004257 +22 +1078.14488808915 +32 +2057.57848097538 +13 +33.1479906004257 +23 +1078.14488808915 +33 +2057.57848097538 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +59.3922331640569 +20 +1076.22831944724 +30 +2076.0353366617 +11 +39.1845368645104 +21 +1078.14493048035 +31 +2043.19517347961 +12 +70.4941913739718 +22 +1076.22839411006 +32 +2050.20384295124 +13 +70.4941913739718 +23 +1076.22839411006 +33 +2050.20384295124 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +0.0625974234421623 +20 +1105.4614427137 +30 +2035.21299417206 +11 +-20.3486042412317 +21 +1105.46140000763 +31 +2064.90342673756 +12 +-7.43285738619353 +22 +1105.46129774208 +32 +2070.45440584214 +13 +-7.43285738619353 +23 +1105.46129774208 +33 +2070.45440584214 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-40.8110352949755 +20 +1076.22878549019 +30 +2094.59379846504 +11 +-60.4276236204933 +21 +1087.68164845367 +31 +2074.45170266659 +12 +-60.4276881541649 +22 +1076.22900302453 +32 +2074.45164182857 +13 +-60.4276881541649 +23 +1076.22900302453 +33 +2074.45164182857 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-60.4276236204933 +20 +1087.68164845367 +30 +2074.45170266659 +11 +-40.8110352949755 +21 +1076.22878549019 +31 +2094.59379846504 +12 +-40.8109707613038 +22 +1087.68143091934 +32 +2094.59385930307 +13 +-40.8109707613038 +23 +1087.68143091934 +33 +2094.59385930307 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-61.0913396528737 +20 +-1491.10300172636 +30 +2133.75852037282 +11 +-52.13252569552 +21 +-1479.4241116404 +31 +2118.62416719069 +12 +-22.3655547436192 +22 +-1575.77530103172 +32 +2068.33881178997 +13 +-22.3655547436192 +23 +-1575.77530103172 +33 +2068.33881178997 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-95.851569329198 +20 +-1479.42468360743 +30 +2057.32721685097 +11 +-39.1731753130775 +21 +-1575.77561416868 +31 +2027.21997005555 +12 +-39.2459633723545 +22 +-1575.77553171729 +32 +2042.81849970453 +13 +-39.2459633723545 +23 +-1575.77553171729 +33 +2042.81849970453 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-114.43412340868 +20 +-1260.03663466403 +30 +2016.47582116289 +11 +-33.1379310731166 +21 +-1175.3644195961 +31 +2012.83543509865 +12 +-98.5576396546941 +22 +-1260.0367702577 +32 +1974.10965019129 +13 +-98.5576396546941 +23 +-1260.0367702577 +33 +1974.10965019129 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-22.1264639806523 +20 +-1271.7151812764 +30 +1939.34942428128 +11 +-26.4917714082634 +21 +-1491.10392998463 +31 +1922.31426925329 +12 +-26.4930734323873 +22 +-1260.03663933705 +32 +1922.31304179217 +13 +-26.4930734323873 +23 +-1260.03663933705 +33 +1922.31304179217 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-26.4917714082634 +20 +-1491.10392998463 +30 +1922.31426925329 +11 +-22.1264639806523 +21 +-1271.7151812764 +31 +1939.34942428128 +12 +-22.1251619565284 +22 +-1479.42489487959 +32 +1939.3506517424 +13 +-22.1251619565284 +23 +-1479.42489487959 +33 +1939.3506517424 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.3642181573071 +20 +-1175.36467512367 +30 +2002.0643607916 +11 +52.1310574918292 +21 +-1271.71566573164 +31 +1951.77888131083 +12 +61.0900030665619 +22 +-1260.03606969012 +32 +1936.64465220875 +13 +61.0900030665619 +23 +-1260.03606969012 +33 +1936.64465220875 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-80.0884082650914 +20 +-1479.42440887799 +30 +2092.3238212554 +11 +-33.3439119046243 +21 +-1575.77542175822 +31 +2057.25751676867 +12 +-22.3655547436192 +22 +-1575.77530103172 +32 +2068.33881178997 +13 +-22.3655547436192 +23 +-1575.77530103172 +33 +2068.33881178997 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +26.4904348219512 +20 +-1260.03514143184 +30 +2148.08890332828 +11 +67.6755129564576 +21 +-1491.10229951782 +31 +2129.35909332543 +12 +67.6742109323337 +22 +-1260.03500887024 +32 +2129.35786586431 +13 +67.6742109323337 +23 +-1260.03500887024 +33 +2129.35786586431 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +67.6755129564576 +20 +-1491.10229951782 +30 +2129.35909332543 +11 +26.4904348219512 +21 +-1260.03514143184 +31 +2148.08890332828 +12 +26.491736846075 +22 +-1491.10243207942 +32 +2148.0901307894 +13 +26.491736846075 +23 +-1491.10243207942 +33 +2148.0901307894 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.1731407508892 +20 +-1575.77508789537 +30 +2043.18442998714 +11 +39.2462626691564 +21 +-1635.02437387321 +31 +2027.58621507805 +12 +39.2459288101664 +22 +-1575.77517034675 +32 +2027.58590033816 +13 +39.2459288101664 +23 +-1575.77517034675 +33 +2027.58590033816 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.2462626691564 +20 +-1635.02437387321 +30 +2027.58621507805 +11 +39.1731407508892 +21 +-1575.77508789537 +31 +2043.18442998714 +12 +39.1734746098794 +22 +-1635.02429142183 +32 +2043.18474472703 +13 +39.1734746098794 +23 +-1635.02429142183 +33 +2043.18474472703 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.1728414540873 +20 +-1635.02481769514 +30 +2027.22028479544 +11 +-39.2459633723545 +21 +-1575.77553171729 +31 +2042.81849970453 +12 +-39.1731753130775 +22 +-1575.77561416868 +32 +2027.21997005555 +13 +-39.1731753130775 +23 +-1575.77561416868 +33 +2027.21997005555 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2459633723545 +20 +-1575.77553171729 +30 +2042.81849970453 +11 +-39.1728414540873 +21 +-1635.02481769514 +31 +2027.22028479544 +12 +-39.2456295133644 +22 +-1635.02473524376 +32 +2042.81881444442 +13 +-39.2456295133644 +23 +-1635.02473524376 +33 +2042.81881444442 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.61761898721182 +20 +-1175.36447372759 +30 +1995.95502646913 +11 +-7.60922450597496 +21 +314.385213179183 +31 +1995.96294022367 +12 +7.98091066173456 +22 +-1175.36456200926 +32 +1996.02781452793 +13 +7.98091066173456 +23 +-1175.36456200926 +33 +1996.02781452793 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +80.0882420855246 +20 +-1479.42411318676 +30 +1978.08045470725 +11 +52.1310574918292 +21 +-1271.71566573164 +31 +1951.77888131083 +12 +80.0869400614005 +22 +-1271.71596296923 +32 +1978.07922724613 +13 +80.0869400614005 +23 +-1271.71596296923 +33 +1978.07922724613 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +52.1310574918292 +20 +-1271.71566573164 +30 +1951.77888131083 +11 +80.0882420855246 +21 +-1479.42411318676 +31 +1978.08045470725 +12 +52.132359515953 +22 +-1479.42441042435 +32 +1951.78010877195 +13 +52.132359515953 +23 +-1479.42441042435 +33 +1951.78010877195 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.61628240089973 +20 +-1575.77509963565 +30 +2074.44814611245 +11 +22.1249957769614 +21 +-1479.42362718516 +31 +2131.05362422024 +12 +-16.2399513209942 +22 +-1479.42383714638 +32 +2132.22426540144 +13 +-16.2399513209942 +23 +-1479.42383714638 +33 +2132.22426540144 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-7.60922450597496 +20 +314.385213179183 +30 +1995.96294022367 +11 +-22.0439379137581 +21 +1078.14549502223 +31 +2001.86904889088 +12 +-7.60492084946682 +22 +1078.14544501338 +32 +1995.96699742271 +13 +-7.60492084946682 +23 +1078.14544501338 +33 +1995.96699742271 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.0439379137581 +20 +1078.14549502223 +30 +2001.86904889088 +11 +-7.60922450597496 +21 +314.385213179183 +31 +1995.96294022367 +12 +-22.056636051503 +22 +-1175.36442371874 +32 +2001.8570779373 +13 +-22.056636051503 +23 +-1175.36442371874 +33 +2001.8570779373 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +-22.056636051503 +20 +-1175.36442371874 +30 +2001.8570779373 +11 +-7.60922450597496 +21 +314.385213179183 +31 +1995.96294022367 +12 +-7.61761898721182 +22 +-1175.36447372759 +32 +1995.95502646913 +13 +-7.61761898721182 +23 +-1175.36447372759 +33 +1995.95502646913 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-70.8430425900572 +20 +1076.22920044446 +30 +2048.33574752358 +11 +-70.4713907715387 +21 +1087.68199312372 +31 +2020.22208455487 +12 +-70.4714553052104 +22 +1076.22934769458 +32 +2020.22202371684 +13 +-70.4714553052104 +23 +1076.22934769458 +33 +2020.22202371684 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-70.4713907715387 +20 +1087.68199312372 +30 +2020.22208455487 +11 +-70.8430425900572 +21 +1076.22920044446 +31 +2048.33574752358 +12 +-70.8429780563856 +22 +1087.6818458736 +32 +2048.3358083616 +13 +-70.8429780563856 +23 +1087.6818458736 +33 +2048.3358083616 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.61628240089973 +20 +-1575.77509963565 +30 +2074.44814611245 +11 +22.055299465191 +21 +-1575.7750496268 +31 +2068.54609464427 +12 +67.6755129564576 +22 +-1491.10229951782 +32 +2129.35909332543 +13 +67.6755129564576 +23 +-1491.10229951782 +33 +2129.35909332543 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +57.1202981576705 +20 +-1271.71656243456 +30 +2115.28923569394 +11 +83.421946117878 +21 +-1479.42351402902 +31 +2087.33458058465 +12 +83.4206440937541 +22 +-1271.71656212697 +32 +2087.33335312354 +13 +83.4206440937541 +23 +-1271.71656212697 +33 +2087.33335312354 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +83.421946117878 +20 +-1479.42351402902 +30 +2087.33458058465 +11 +57.1202981576705 +21 +-1271.71656243456 +31 +2115.28923569394 +12 +57.1216001817944 +22 +-1479.42351372144 +32 +2115.29046315506 +13 +57.1216001817944 +23 +-1479.42351372144 +33 +2115.29046315506 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +18.7251341196313 +20 +-1491.10368340178 +30 +1920.76939591712 +11 +16.2384831173033 +21 +-1271.71539123762 +31 +1938.17878310009 +12 +18.7238320955074 +22 +-1260.0363927542 +32 +1920.768168456 +13 +18.7238320955074 +23 +-1260.0363927542 +33 +1920.768168456 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +16.2384831173033 +20 +-1271.71539123762 +30 +1938.17878310009 +11 +18.7251341196313 +21 +-1491.10368340178 +31 +1920.76939591712 +12 +16.2397851414271 +22 +-1479.42468491837 +32 +1938.18001056121 +13 +16.2397851414271 +23 +-1479.42468491837 +33 +1938.18001056121 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +26.4904348219512 +20 +-1260.03514143184 +30 +2148.08890332828 +11 +67.6742109323337 +21 +-1260.03500887024 +31 +2129.35786586431 +12 +7.61498037677585 +22 +-1175.36497652034 +32 +2074.44691865133 +13 +7.61498037677585 +23 +-1175.36497652034 +33 +2074.44691865133 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +98.5550010442582 +20 +-1260.03501051119 +30 +2096.29229492916 +11 +114.431484798243 +21 +-1260.03514610487 +31 +2053.92612395756 +12 +33.1352924626808 +22 +-1175.36503065183 +32 +2057.5665100218 +13 +33.1352924626808 +23 +-1175.36503065183 +33 +2057.5665100218 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.3425753183123 +20 +-1175.36479585016 +30 +2013.1456558129 +11 +112.886611463429 +21 +-1260.03539500836 +31 +2008.70921842963 +12 +94.1555740007292 +22 +-1260.03571932837 +32 +1967.52544231974 +13 +94.1555740007292 +23 +-1260.03571932837 +33 +1967.52544231974 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.1352924626808 +20 +-1175.36503065183 +30 +2057.5665100218 +11 +114.431484798243 +21 +-1260.03514610487 +31 +2053.92612395756 +12 +39.1718387267654 +22 +-1175.36498826062 +32 +2043.18320252602 +13 +39.1718387267654 +23 +-1175.36498826062 +33 +2043.18320252602 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-18.7264707059435 +20 +-1260.03538801469 +30 +2149.63377666445 +11 +-16.2399513209942 +21 +-1479.42383714638 +31 +2132.22426540144 +12 +-16.241253345118 +22 +-1271.71623900961 +32 +2132.22303794032 +13 +-16.241253345118 +23 +-1271.71623900961 +33 +2132.22303794032 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-16.2399513209942 +20 +-1479.42383714638 +30 +2132.22426540144 +11 +-18.7264707059435 +21 +-1260.03538801469 +31 +2149.63377666445 +12 +-18.7251686818196 +22 +-1491.10267866227 +32 +2149.63500412557 +13 +-18.7251686818196 +23 +-1491.10267866227 +33 +2149.63500412557 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.3439119046243 +20 +-1575.77542175822 +30 +2057.25751676867 +11 +-39.1731753130775 +21 +-1575.77561416868 +31 +2027.21997005555 +12 +-39.2459633723545 +22 +-1575.77553171729 +32 +2042.81849970453 +13 +-39.2459633723545 +23 +-1575.77553171729 +33 +2042.81849970453 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.1731753130775 +20 +-1575.77561416868 +30 +2027.21997005555 +11 +-33.3439119046243 +21 +-1575.77542175822 +31 +2057.25751676867 +12 +-33.1366290489928 +22 +-1575.77565655989 +32 +2012.83666255977 +13 +-33.1366290489928 +23 +-1575.77565655989 +33 +2012.83666255977 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +-33.1366290489928 +20 +-1575.77565655989 +30 +2012.83666255977 +11 +-33.3439119046243 +21 +-1575.77542175822 +31 +2057.25751676867 +12 +-22.3655547436192 +22 +-1575.77530103172 +32 +2068.33881178997 +13 +-22.3655547436192 +23 +-1575.77530103172 +33 +2068.33881178997 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +-33.1366290489928 +20 +-1575.77565655989 +30 +2012.83666255977 +11 +-22.3655547436192 +21 +-1575.77530103172 +31 +2068.33881178997 +12 +-22.0553340273792 +22 +-1575.77565243725 +32 +2001.85830539842 +13 +-22.0553340273792 +23 +-1575.77565243725 +33 +2001.85830539842 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +-22.0553340273792 +20 +-1575.77565243725 +30 +2001.85830539842 +11 +-22.3655547436192 +21 +-1575.77530103172 +31 +2068.33881178997 +12 +-7.98224724804656 +22 +-1575.77518791732 +32 +2074.37535805364 +13 +-7.98224724804656 +23 +-1575.77518791732 +33 +2074.37535805364 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +-22.0553340273792 +20 +-1575.77565243725 +30 +2001.85830539842 +11 +-7.98224724804656 +21 +-1575.77518791732 +31 +2074.37535805364 +12 +-7.61631696308793 +22 +-1575.7756024284 +32 +1995.95625393024 +13 +-7.61631696308793 +23 +-1575.7756024284 +33 +1995.95625393024 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +-7.61631696308793 +20 +-1575.7756024284 +30 +1995.95625393024 +11 +-7.98224724804656 +21 +-1575.77518791732 +31 +2074.37535805364 +12 +7.61628240089973 +22 +-1575.77509963565 +32 +2074.44814611245 +13 +7.61628240089973 +23 +-1575.77509963565 +33 +2074.44814611245 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +-7.61631696308793 +20 +-1575.7756024284 +30 +1995.95625393024 +11 +7.61628240089973 +21 +-1575.77509963565 +31 +2074.44814611245 +12 +7.98221268585839 +22 +-1575.77551414673 +32 +1996.02904198905 +13 +7.98221268585839 +23 +-1575.77551414673 +33 +1996.02904198905 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +7.98221268585839 +20 +-1575.77551414673 +30 +1996.02904198905 +11 +7.61628240089973 +21 +-1575.77509963565 +31 +2074.44814611245 +12 +22.055299465191 +22 +-1575.7750496268 +32 +2068.54609464427 +13 +22.055299465191 +23 +-1575.7750496268 +33 +2068.54609464427 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +7.98221268585839 +20 +-1575.77551414673 +30 +1996.02904198905 +11 +22.055299465191 +21 +-1575.7750496268 +31 +2068.54609464427 +12 +22.365520181431 +22 +-1575.77540103232 +32 +2002.06558825272 +13 +22.365520181431 +23 +-1575.77540103232 +33 +2002.06558825272 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +22.365520181431 +20 +-1575.77540103232 +30 +2002.06558825272 +11 +22.055299465191 +21 +-1575.7750496268 +31 +2068.54609464427 +12 +33.1365944868046 +22 +-1575.77504550416 +32 +2057.56773748292 +13 +33.1365944868046 +23 +-1575.77504550416 +33 +2057.56773748292 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +22.365520181431 +20 +-1575.77540103232 +30 +2002.06558825272 +11 +33.1365944868046 +21 +-1575.77504550416 +31 +2057.56773748292 +12 +33.3438773424362 +22 +-1575.77528030582 +32 +2013.14688327402 +13 +33.3438773424362 +23 +-1575.77528030582 +33 +2013.14688327402 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +33.3438773424362 +20 +-1575.77528030582 +30 +2013.14688327402 +11 +33.1365944868046 +21 +-1575.77504550416 +31 +2057.56773748292 +12 +39.1731407508892 +22 +-1575.77508789537 +32 +2043.18442998714 +13 +39.1731407508892 +23 +-1575.77508789537 +33 +2043.18442998714 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +33.3438773424362 +20 +-1575.77528030582 +30 +2013.14688327402 +11 +39.1731407508892 +21 +-1575.77508789537 +31 +2043.18442998714 +12 +39.2459288101664 +22 +-1575.77517034675 +32 +2027.58590033816 +13 +39.2459288101664 +23 +-1575.77517034675 +33 +2027.58590033816 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.055299465191 +20 +-1575.7750496268 +30 +2068.54609464427 +11 +33.1369283457947 +21 +-1635.02424903062 +31 +2057.56805222281 +12 +33.1365944868046 +22 +-1575.77504550416 +32 +2057.56773748292 +13 +33.1365944868046 +23 +-1575.77504550416 +33 +2057.56773748292 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.1369283457947 +20 +-1635.02424903062 +30 +2057.56805222281 +11 +22.055299465191 +21 +-1575.7750496268 +31 +2068.54609464427 +12 +22.0556333241812 +22 +-1635.02425315326 +32 +2068.54640938416 +13 +22.0556333241812 +23 +-1635.02425315326 +33 +2068.54640938416 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.3452139287482 +20 +-1175.36465439776 +30 +2057.25628930755 +11 +-39.2345672587327 +21 +1078.14537430228 +31 +2042.82924319699 +12 +-39.2472653964783 +22 +-1175.36454443869 +32 +2042.81727224341 +13 +-39.2472653964783 +23 +-1175.36454443869 +33 +2042.81727224341 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2345672587327 +20 +1078.14537430228 +30 +2042.82924319699 +11 +-33.3452139287482 +21 +-1175.36465439776 +31 +2057.25628930755 +12 +-33.3325157910026 +22 +1078.14526434321 +32 +2057.26826026113 +13 +-33.3325157910026 +23 +1078.14526434321 +33 +2057.26826026113 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.3642181573071 +20 +-1175.36467512367 +30 +2002.0643607916 +11 +7.99360879947956 +21 +1078.14535673171 +31 +1996.03978548152 +12 +22.3769162950522 +22 +1078.1452436173 +32 +2002.07633174518 +13 +22.3769162950522 +23 +1078.1452436173 +33 +2002.07633174518 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.99360879947956 +20 +1078.14535673171 +30 +1996.03978548152 +11 +22.3642181573071 +21 +-1175.36467512367 +31 +2002.0643607916 +12 +7.98091066173456 +22 +-1175.36456200926 +32 +1996.02781452793 +13 +7.98091066173456 +23 +-1175.36456200926 +33 +1996.02781452793 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.3552734560573 +20 +1078.14512289081 +30 +2013.15762676649 +11 +39.2446267860425 +21 +-1175.36490580924 +31 +2027.58467287705 +12 +33.3425753183123 +22 +-1175.36479585016 +32 +2013.1456558129 +13 +33.3425753183123 +23 +-1175.36479585016 +33 +2013.1456558129 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +39.2446267860425 +20 +-1175.36490580924 +30 +2027.58467287705 +11 +33.3552734560573 +21 +1078.14512289081 +31 +2013.15762676649 +12 +39.2573249237874 +22 +1078.14501293173 +32 +2027.59664383063 +13 +39.2573249237874 +23 +1078.14501293173 +33 +2027.59664383063 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-94.1569105870414 +20 +-1491.10335208811 +30 +2102.87773026184 +11 +-112.887948049741 +21 +-1491.10367640812 +31 +2061.69395415194 +12 +-33.3439119046243 +22 +-1575.77542175822 +32 +2057.25751676867 +13 +-33.3439119046243 +23 +-1575.77542175822 +33 +2057.25751676867 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-14.9794770512274 +20 +1087.68122638822 +30 +2105.69581751223 +11 +13.1341822217786 +21 +1076.2284205692 +31 +2106.06734395821 +12 +13.1342467554502 +22 +1087.68106599834 +32 +2106.06740479624 +13 +13.1342467554502 +23 +1087.68106599834 +33 +2106.06740479624 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +13.1341822217786 +20 +1076.2284205692 +30 +2106.06734395821 +11 +-14.9794770512274 +21 +1087.68122638822 +31 +2105.69581751223 +12 +-14.9795415848991 +22 +1076.22858095908 +32 +2105.69575667421 +13 +-14.9795415848991 +23 +1076.22858095908 +33 +2105.69575667421 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.62767851452085 +20 +1078.14494222063 +30 +2074.45888960491 +11 +22.062391922304 +21 +314.384660377585 +31 +2068.5527809377 +12 +22.0666955788121 +22 +1078.14489221178 +32 +2068.55683813674 +13 +22.0666955788121 +23 +1078.14489221178 +33 +2068.55683813674 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.062391922304 +20 +314.384660377585 +30 +2068.5527809377 +11 +7.62767851452085 +21 +1078.14494222063 +31 +2074.45888960491 +12 +7.61498037677585 +22 +-1175.36497652034 +32 +2074.44691865133 +13 +7.61498037677585 +23 +-1175.36497652034 +33 +2074.44691865133 +70 +13 + 0 +3DFACE + 8 +crank_full +10 +22.062391922304 +20 +314.384660377585 +30 +2068.5527809377 +11 +7.61498037677585 +21 +-1175.36497652034 +31 +2074.44691865133 +12 +22.0539974410672 +22 +-1175.36502652919 +32 +2068.54486718316 +13 +22.0539974410672 +23 +-1175.36502652919 +33 +2068.54486718316 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.98224724804656 +20 +-1575.77518791732 +30 +2074.37535805364 +11 +7.61628240089973 +21 +-1575.77509963565 +31 +2074.44814611245 +12 +-16.2399513209942 +22 +-1479.42383714638 +32 +2132.22426540144 +13 +-16.2399513209942 +23 +-1479.42383714638 +33 +2132.22426540144 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +22.055299465191 +20 +-1575.7750496268 +30 +2068.54609464427 +11 +33.1365944868046 +21 +-1575.77504550416 +31 +2057.56773748292 +12 +83.421946117878 +22 +-1479.42351402902 +32 +2087.33458058465 +13 +83.421946117878 +23 +-1479.42351402902 +33 +2087.33458058465 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-80.0897102892153 +20 +-1271.715667278 +30 +2092.32259379428 +11 +-52.13252569552 +21 +-1479.4241116404 +31 +2118.62416719069 +12 +-52.1338277196439 +22 +-1271.71596451559 +32 +2118.62293972957 +13 +-52.1338277196439 +23 +-1271.71596451559 +33 +2118.62293972957 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-52.13252569552 +20 +-1479.4241116404 +30 +2118.62416719069 +11 +-80.0897102892153 +21 +-1271.715667278 +31 +2092.32259379428 +12 +-80.0884082650914 +22 +-1479.42440887799 +32 +2092.3238212554 +13 +-80.0884082650914 +23 +-1479.42440887799 +33 +2092.3238212554 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-67.6755475186457 +20 +-1491.10406254623 +30 +1941.04530671726 +11 +-57.1230683854853 +21 +-1271.71506781267 +31 +1955.11258534646 +12 +-67.6768495427695 +22 +-1260.03677189865 +32 +1941.04407925614 +13 +-67.6768495427695 +23 +-1260.03677189865 +33 +1941.04407925614 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-57.1230683854853 +20 +-1271.71506781267 +30 +1955.11258534646 +11 +-67.6755475186457 +21 +-1491.10406254623 +31 +1941.04530671726 +12 +-57.1217663613614 +22 +-1479.42500834332 +32 +1955.11381280758 +13 +-57.1217663613614 +23 +-1479.42500834332 +33 +1955.11381280758 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.366856767743 +20 +-1175.36477512426 +30 +2068.33758432885 +11 +-33.3325157910026 +21 +1078.14526434321 +31 +2057.26826026113 +12 +-33.3452139287482 +22 +-1175.36465439776 +32 +2057.25628930755 +13 +-33.3452139287482 +23 +-1175.36465439776 +33 +2057.25628930755 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.3325157910026 +20 +1078.14526434321 +30 +2057.26826026113 +11 +-22.366856767743 +21 +-1175.36477512426 +31 +2068.33758432885 +12 +-22.354158629998 +22 +1078.14514361671 +32 +2068.34955528244 +13 +-22.354158629998 +23 +1078.14514361671 +33 +2068.34955528244 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.0666955788121 +20 +1078.14489221178 +30 +2068.55683813674 +11 +33.1352924626808 +21 +-1175.36503065183 +31 +2057.5665100218 +12 +33.1479906004257 +22 +1078.14488808915 +32 +2057.57848097538 +13 +33.1479906004257 +23 +1078.14488808915 +33 +2057.57848097538 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.1352924626808 +20 +-1175.36503065183 +30 +2057.5665100218 +11 +22.0666955788121 +21 +1078.14489221178 +31 +2068.55683813674 +12 +22.062391922304 +22 +314.384660377585 +32 +2068.5527809377 +13 +22.062391922304 +23 +314.384660377585 +33 +2068.5527809377 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-70.4714553052104 +20 +1076.22934769458 +30 +2020.22202371684 +11 +-39.2345672587327 +21 +1078.14537430228 +31 +2042.82924319699 +12 +-70.8430425900572 +22 +1076.22920044446 +32 +2048.33574752358 +13 +-70.8430425900572 +23 +1076.22920044446 +33 +2048.33574752358 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2345672587327 +20 +1078.14537430228 +30 +2042.82924319699 +11 +-70.4714553052104 +21 +1076.22934769458 +31 +2020.22202371684 +12 +-39.1617791994563 +22 +1078.14545675366 +32 +2027.23071354802 +13 +-39.1617791994563 +23 +1078.14545675366 +33 +2027.23071354802 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +40.8337713637369 +20 +1076.22895631445 +30 +1975.83206820304 +11 +33.3552734560573 +21 +1078.14512289081 +31 +2013.15762676649 +12 +22.3769162950522 +22 +1078.1452436173 +32 +2002.07633174518 +13 +22.3769162950522 +23 +1078.1452436173 +33 +2002.07633174518 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.3552734560573 +20 +1078.14512289081 +30 +2013.15762676649 +11 +40.8337713637369 +21 +1076.22895631445 +31 +1975.83206820304 +12 +60.4504242229264 +22 +1076.22873878012 +32 +1995.97422483951 +13 +60.4504242229264 +23 +1076.22873878012 +33 +1995.97422483951 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.3438773424362 +20 +-1575.77528030582 +30 +2013.14688327402 +11 +22.365520181431 +21 +-1575.77540103232 +31 +2002.06558825272 +12 +52.132359515953 +22 +-1479.42441042435 +32 +1951.78010877195 +13 +52.132359515953 +23 +-1479.42441042435 +33 +1951.78010877195 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-39.1731753130775 +20 +-1575.77561416868 +30 +2027.21997005555 +11 +-114.432821384555 +21 +-1491.10392531161 +31 +2016.47704862401 +12 +-33.1366290489928 +22 +-1575.77565655989 +32 +2012.83666255977 +13 +-33.1366290489928 +23 +-1575.77565655989 +33 +2012.83666255977 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.2501410607034 +20 +1087.68097416759 +30 +2095.65205035954 +11 +59.3922331640569 +21 +1076.22831944724 +31 +2076.0353366617 +12 +59.3922976977286 +22 +1087.68096487638 +32 +2076.03539749972 +13 +59.3922976977286 +23 +1087.68096487638 +33 +2076.03539749972 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +59.3922331640569 +20 +1076.22831944724 +30 +2076.0353366617 +11 +39.2501410607034 +21 +1087.68097416759 +31 +2095.65205035954 +12 +39.2500765270318 +22 +1076.22832873845 +32 +2095.65198952152 +13 +39.2500765270318 +23 +1076.22832873845 +33 +2095.65198952152 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.0553340273792 +20 +-1575.77565243725 +30 +2001.85830539842 +11 +-83.4221122974449 +21 +-1479.42500803573 +31 +1983.06969537799 +12 +-57.1217663613614 +22 +-1479.42500834332 +32 +1955.11381280758 +13 +-57.1217663613614 +23 +-1479.42500834332 +33 +1955.11381280758 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +97.0220443296732 +20 +-1479.4236280611 +30 +2051.44200620966 +11 +39.1731407508892 +21 +-1575.77508789537 +31 +2043.18442998714 +12 +39.2459288101664 +22 +-1575.77517034675 +32 +2027.58590033816 +13 +39.2459288101664 +23 +-1575.77517034675 +33 +2027.58590033816 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +0.000316577896367365 +20 +-1635.02455455848 +30 +2035.20251476124 +11 +-21.0785055001976 +21 +-1635.02449443909 +31 +2068.87914953561 +12 +-33.3435780456342 +22 +-1635.02462528468 +32 +2057.25783150856 +13 +-33.3435780456342 +23 +-1635.02462528468 +33 +2057.25783150856 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.98254654484851 +20 +-1635.02471767319 +30 +1996.02935672895 +11 +0.000316577896367365 +21 +-1635.02455455848 +31 +2035.20251476124 +12 +-7.61598310409778 +22 +-1635.02480595485 +32 +1995.95656867013 +13 +-7.61598310409778 +23 +-1635.02480595485 +33 +1995.95656867013 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-22.056636051503 +20 +-1175.36442371874 +30 +2001.8570779373 +11 +-57.1230683854853 +21 +-1271.71506781267 +31 +1955.11258534646 +12 +-83.4234143215687 +22 +-1271.71506812026 +32 +1983.06846791687 +13 +-83.4234143215687 +23 +-1271.71506812026 +33 +1983.06846791687 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-97.0222105092401 +20 +-1479.42489400365 +30 +2018.96226975299 +11 +-95.8528713533217 +21 +-1271.71539254856 +31 +2057.32598938986 +12 +-97.0235125333639 +22 +-1271.71518215234 +32 +2018.96104229187 +13 +-97.0235125333639 +23 +-1271.71518215234 +33 +2018.96104229187 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-95.8528713533217 +20 +-1271.71539254856 +30 +2057.32598938986 +11 +-97.0222105092401 +21 +-1479.42489400365 +31 +2018.96226975299 +12 +-95.851569329198 +22 +-1479.42468360743 +32 +2057.32721685097 +13 +-95.851569329198 +23 +-1479.42468360743 +33 +2057.32721685097 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +0.0625974234421623 +20 +1105.4614427137 +30 +2035.21299417206 +11 +-19.5567568228792 +21 +1105.46171379563 +31 +2004.99346607832 +12 +-29.6278351413918 +22 +1105.46171844124 +32 +2014.80179250824 +13 +-29.6278351413918 +23 +1105.46171844124 +33 +2014.80179250824 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-7.61598310409778 +20 +-1635.02480595485 +30 +1995.95656867013 +11 +-22.0553340273792 +21 +-1575.77565243725 +31 +2001.85830539842 +12 +-7.61631696308793 +22 +-1575.7756024284 +32 +1995.95625393024 +13 +-7.61631696308793 +23 +-1575.7756024284 +33 +1995.95625393024 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.0553340273792 +20 +-1575.77565243725 +30 +2001.85830539842 +11 +-7.61598310409778 +21 +-1635.02480595485 +31 +1995.95656867013 +12 +-22.055000168389 +22 +-1635.02485596371 +32 +2001.85862013831 +13 +-22.055000168389 +23 +-1635.02485596371 +33 +2001.85862013831 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-112.889250073865 +20 +-1260.03638576054 +30 +2061.69272669082 +11 +-33.3452139287482 +21 +-1175.36465439776 +31 +2057.25628930755 +12 +-39.2472653964783 +22 +-1175.36454443869 +32 +2042.81727224341 +13 +-39.2472653964783 +23 +-1175.36454443869 +33 +2042.81727224341 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +67.6742109323337 +20 +-1260.03500887024 +30 +2129.35786586431 +11 +57.1216001817944 +21 +-1479.42351372144 +31 +2115.29046315506 +12 +57.1202981576705 +22 +-1271.71656243456 +32 +2115.28923569394 +13 +57.1202981576705 +23 +-1271.71656243456 +33 +2115.28923569394 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +57.1216001817944 +20 +-1479.42351372144 +30 +2115.29046315506 +11 +67.6742109323337 +21 +-1260.03500887024 +31 +2129.35786586431 +12 +67.6755129564576 +22 +-1491.10229951782 +32 +2129.35909332543 +13 +67.6755129564576 +23 +-1491.10229951782 +33 +2129.35909332543 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +7.98221268585839 +20 +-1575.77551414673 +30 +1996.02904198905 +11 +18.7251341196313 +21 +-1491.10368340178 +31 +1920.76939591712 +12 +61.0913050906858 +22 +-1491.1033603377 +32 +1936.64587966987 +13 +61.0913050906858 +23 +-1491.1033603377 +33 +1936.64587966987 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +57.1216001817944 +20 +-1479.42351372144 +30 +2115.29046315506 +11 +22.055299465191 +21 +-1575.7750496268 +31 +2068.54609464427 +12 +83.421946117878 +22 +-1479.42351402902 +32 +2087.33458058465 +13 +83.421946117878 +23 +-1479.42351402902 +33 +2087.33458058465 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +95.8501011255072 +20 +-1271.71623769867 +30 +2013.07583165055 +11 +112.886611463429 +21 +-1260.03539500836 +31 +2008.70921842963 +12 +39.2446267860425 +22 +-1175.36490580924 +32 +2027.58467287705 +13 +39.2446267860425 +23 +-1175.36490580924 +33 +2027.58467287705 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +83.4206440937541 +20 +-1271.71656212697 +30 +2087.33335312354 +11 +98.5550010442582 +21 +-1260.03501051119 +31 +2096.29229492916 +12 +33.1352924626808 +22 +-1175.36503065183 +32 +2057.5665100218 +13 +33.1352924626808 +23 +-1175.36503065183 +33 +2057.5665100218 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.2459288101664 +20 +-1575.77517034675 +30 +2027.58590033816 +11 +112.887913487553 +21 +-1491.10268565594 +31 +2008.71044589075 +12 +95.8514031496311 +22 +-1479.42383845732 +32 +2013.07705911167 +13 +95.8514031496311 +23 +-1479.42383845732 +33 +2013.07705911167 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.1365944868046 +20 +-1575.77504550416 +30 +2057.56773748292 +11 +98.5563030683821 +21 +-1491.10230115877 +31 +2096.29352239028 +12 +83.421946117878 +22 +-1479.42351402902 +32 +2087.33458058465 +13 +83.421946117878 +23 +-1479.42351402902 +33 +2087.33458058465 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +70.8658431924901 +20 +1087.68118678933 +30 +2022.09017998252 +11 +70.4941913739718 +21 +1076.22839411006 +31 +2050.20384295124 +12 +70.8657786588185 +22 +1076.22854136019 +32 +2022.0901191445 +13 +70.8657786588185 +23 +1076.22854136019 +33 +2022.0901191445 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +70.4941913739718 +20 +1076.22839411006 +30 +2050.20384295124 +11 +70.8658431924901 +21 +1087.68118678933 +31 +2022.09017998252 +12 +70.4942559076435 +22 +1087.68103953921 +32 +2050.20390378926 +13 +70.4942559076435 +23 +1087.68103953921 +33 +2050.20390378926 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.0553340273792 +20 +-1575.77565243725 +30 +2001.85830539842 +11 +-67.6755475186457 +21 +-1491.10406254623 +31 +1941.04530671726 +12 +-7.61631696308793 +22 +-1575.7756024284 +32 +1995.95625393024 +13 +-7.61631696308793 +23 +-1575.7756024284 +33 +1995.95625393024 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +33.3438773424362 +20 +-1575.77528030582 +30 +2013.14688327402 +11 +94.1568760248532 +21 +-1491.10300997595 +31 +1967.52666978086 +12 +112.887913487553 +22 +-1491.10268565594 +32 +2008.71044589075 +13 +112.887913487553 +23 +-1491.10268565594 +33 +2008.71044589075 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-39.1744773372013 +20 +-1175.36446198731 +30 +2027.21874259443 +11 +-33.1295365918798 +21 +314.385267310674 +31 +2012.8433488532 +12 +-33.1379310731166 +22 +-1175.3644195961 +32 +2012.83543509865 +13 +-33.1379310731166 +23 +-1175.3644195961 +33 +2012.83543509865 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.1295365918798 +20 +314.385267310674 +30 +2012.8433488532 +11 +-39.1744773372013 +21 +-1175.36446198731 +31 +2027.21874259443 +12 +-33.1252329353715 +22 +1078.14549914487 +32 +2012.84740605224 +13 +-33.1252329353715 +23 +1078.14549914487 +33 +2012.84740605224 +70 +3 + 0 +3DFACE + 8 +crank_full +10 +-33.1252329353715 +20 +1078.14549914487 +30 +2012.84740605224 +11 +-39.1744773372013 +21 +-1175.36446198731 +31 +2027.21874259443 +12 +-39.1617791994563 +22 +1078.14545675366 +32 +2027.23071354802 +13 +-39.1617791994563 +23 +1078.14545675366 +33 +2027.23071354802 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-7.61631696308793 +20 +-1575.7756024284 +30 +1995.95625393024 +11 +-67.6755475186457 +21 +-1491.10406254623 +31 +1941.04530671726 +12 +-26.4917714082634 +22 +-1491.10392998463 +32 +1922.31426925329 +13 +-26.4917714082634 +23 +-1491.10392998463 +33 +1922.31426925329 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.61628240089973 +20 +-1575.77509963565 +30 +2074.44814611245 +11 +22.0556333241812 +21 +-1635.02425315326 +31 +2068.54640938416 +12 +22.055299465191 +22 +-1575.7750496268 +32 +2068.54609464427 +13 +22.055299465191 +23 +-1575.7750496268 +33 +2068.54609464427 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.0556333241812 +20 +-1635.02425315326 +30 +2068.54640938416 +11 +7.61628240089973 +21 +-1575.77509963565 +31 +2074.44814611245 +12 +7.61661625988982 +22 +-1635.02430316211 +32 +2074.44846085234 +13 +7.61661625988982 +23 +-1635.02430316211 +33 +2074.44846085234 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2456295133644 +20 +-1635.02473524376 +30 +2042.81881444442 +11 +-33.3439119046243 +21 +-1575.77542175822 +31 +2057.25751676867 +12 +-39.2459633723545 +22 +-1575.77553171729 +32 +2042.81849970453 +13 +-39.2459633723545 +23 +-1575.77553171729 +33 +2042.81849970453 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.3439119046243 +20 +-1575.77542175822 +30 +2057.25751676867 +11 +-39.2456295133644 +21 +-1635.02473524376 +31 +2042.81881444442 +12 +-33.3435780456342 +22 +-1635.02462528468 +32 +2057.25783150856 +13 +-33.3435780456342 +23 +-1635.02462528468 +33 +2057.25783150856 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.1744773372013 +20 +-1175.36446198731 +30 +2027.21874259443 +11 +-33.1379310731166 +21 +-1175.3644195961 +31 +2012.83543509865 +12 +-114.43412340868 +22 +-1260.03663466403 +32 +2016.47582116289 +13 +-114.43412340868 +23 +-1260.03663466403 +33 +2016.47582116289 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-94.1582126111653 +20 +-1260.03606144053 +30 +2102.87650280072 +11 +-33.3452139287482 +21 +-1175.36465439776 +31 +2057.25628930755 +12 +-112.889250073865 +22 +-1260.03638576054 +32 +2061.69272669082 +13 +-112.889250073865 +23 +-1260.03638576054 +33 +2061.69272669082 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-16.241253345118 +20 +-1271.71623900961 +30 +2132.22303794032 +11 +22.1249957769614 +21 +-1479.42362718516 +31 +2131.05362422024 +12 +22.1236937528375 +22 +-1271.71644897083 +32 +2131.05239675912 +13 +22.1236937528375 +23 +-1271.71644897083 +33 +2131.05239675912 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +22.1249957769614 +20 +-1479.42362718516 +30 +2131.05362422024 +11 +-16.241253345118 +21 +-1271.71623900961 +31 +2132.22303794032 +12 +-16.2399513209942 +22 +-1479.42383714638 +32 +2132.22426540144 +13 +-16.2399513209942 +23 +-1479.42383714638 +33 +2132.22426540144 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.055000168389 +20 +-1635.02485596371 +30 +2001.85862013831 +11 +-33.1366290489928 +21 +-1575.77565655989 +31 +2012.83666255977 +12 +-22.0553340273792 +22 +-1575.77565243725 +32 +2001.85830539842 +13 +-22.0553340273792 +23 +-1575.77565243725 +33 +2001.85830539842 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-33.1366290489928 +20 +-1575.77565655989 +30 +2012.83666255977 +11 +-22.055000168389 +21 +-1635.02485596371 +31 +2001.85862013831 +12 +-33.1362951900026 +22 +-1635.02486008634 +32 +2012.83697729966 +13 +-33.1362951900026 +23 +-1635.02486008634 +33 +2012.83697729966 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +97.0207423055492 +20 +-1271.71644809489 +30 +2051.44077874854 +11 +95.8514031496311 +21 +-1479.42383845732 +31 +2013.07705911167 +12 +95.8501011255072 +22 +-1271.71623769867 +32 +2013.07583165055 +13 +95.8501011255072 +23 +-1271.71623769867 +33 +2013.07583165055 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +95.8514031496311 +20 +-1479.42383845732 +30 +2013.07705911167 +11 +97.0207423055492 +21 +-1271.71644809489 +31 +2051.44077874854 +12 +97.0220443296732 +22 +-1479.4236280611 +32 +2051.44200620966 +13 +97.0220443296732 +23 +-1479.4236280611 +33 +2051.44200620966 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-114.432821384555 +20 +-1491.10392531161 +30 +2016.47704862401 +11 +-98.5563376305701 +21 +-1491.10406090528 +31 +1974.11087765241 +12 +-33.1366290489928 +22 +-1575.77565655989 +32 +2012.83666255977 +13 +-33.1366290489928 +23 +-1575.77565655989 +33 +2012.83666255977 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.2446267860425 +20 +-1175.36490580924 +30 +2027.58467287705 +11 +112.886611463429 +21 +-1260.03539500836 +31 +2008.70921842963 +12 +33.3425753183123 +22 +-1175.36479585016 +32 +2013.1456558129 +13 +33.3425753183123 +23 +-1175.36479585016 +33 +2013.1456558129 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-83.4234143215687 +20 +-1271.71506812026 +30 +1983.06846791687 +11 +-98.5576396546941 +21 +-1260.0367702577 +31 +1974.10965019129 +12 +-33.1379310731166 +22 +-1175.3644195961 +32 +2012.83543509865 +13 +-33.1379310731166 +23 +-1175.3644195961 +33 +2012.83543509865 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-22.056636051503 +20 +-1175.36442371874 +30 +2001.8570779373 +11 +-67.6768495427695 +21 +-1260.03677189865 +31 +1941.04407925614 +12 +-57.1230683854853 +22 +-1271.71506781267 +32 +1955.11258534646 +13 +-57.1230683854853 +23 +-1271.71506781267 +33 +1955.11258534646 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +15.0022776536605 +20 +1076.22916084557 +30 +1964.73010999387 +11 +-13.1113816193455 +21 +1087.68196666459 +31 +1964.35858354789 +12 +15.0023421873321 +22 +1087.68180627471 +32 +1964.7301708319 +13 +15.0023421873321 +23 +1087.68180627471 +33 +1964.7301708319 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-13.1113816193455 +20 +1087.68196666459 +30 +1964.35858354789 +11 +15.0022776536605 +21 +1076.22916084557 +31 +1964.73010999387 +12 +-13.1114461530171 +22 +1076.22932123545 +32 +1964.35852270987 +13 +-13.1114461530171 +23 +1076.22932123545 +33 +1964.35852270987 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.2472653964783 +20 +-1175.36454443869 +30 +2042.81727224341 +11 +-39.1617791994563 +21 +1078.14545675366 +31 +2027.23071354802 +12 +-39.1744773372013 +22 +-1175.36446198731 +32 +2027.21874259443 +13 +-39.1744773372013 +23 +-1175.36446198731 +33 +2027.21874259443 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-39.1617791994563 +20 +1078.14545675366 +30 +2027.23071354802 +11 +-39.2472653964783 +21 +-1175.36454443869 +31 +2042.81727224341 +12 +-39.2345672587327 +22 +1078.14537430228 +32 +2042.82924319699 +13 +-39.2345672587327 +23 +1078.14537430228 +33 +2042.82924319699 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-83.4234143215687 +20 +-1271.71506812026 +30 +1983.06846791687 +11 +-33.1379310731166 +21 +-1175.3644195961 +31 +2012.83543509865 +12 +-22.056636051503 +22 +-1175.36442371874 +32 +2001.8570779373 +13 +-22.056636051503 +23 +-1175.36442371874 +33 +2001.8570779373 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +7.98221268585839 +20 +-1575.77551414673 +30 +1996.02904198905 +11 +-22.1251619565284 +21 +-1479.42489487959 +31 +1939.3506517424 +12 +16.2397851414271 +22 +-1479.42468491837 +32 +1938.18001056121 +13 +16.2397851414271 +23 +-1479.42468491837 +33 +1938.18001056121 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-7.61631696308793 +20 +-1575.7756024284 +30 +1995.95625393024 +11 +-22.1251619565284 +21 +-1479.42489487959 +31 +1939.3506517424 +12 +7.98221268585839 +22 +-1575.77551414673 +32 +1996.02904198905 +13 +7.98221268585839 +23 +-1575.77551414673 +33 +1996.02904198905 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +98.5550010442582 +20 +-1260.03501051119 +30 +2096.29229492916 +11 +114.432786822367 +21 +-1491.10243675244 +31 +2053.92735141868 +12 +114.431484798243 +22 +-1260.03514610487 +32 +2053.92612395756 +13 +114.431484798243 +23 +-1260.03514610487 +33 +2053.92612395756 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +114.432786822367 +20 +-1491.10243675244 +30 +2053.92735141868 +11 +98.5550010442582 +21 +-1260.03501051119 +31 +2096.29229492916 +12 +98.5563030683821 +22 +-1491.10230115877 +32 +2096.29352239028 +13 +98.5563030683821 +23 +-1491.10230115877 +33 +2096.29352239028 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-57.1217663613614 +20 +-1479.42500834332 +30 +1955.11381280758 +11 +-83.4234143215687 +21 +-1271.71506812026 +31 +1983.06846791687 +12 +-57.1230683854853 +22 +-1271.71506781267 +32 +1955.11258534646 +13 +-57.1230683854853 +23 +-1271.71506781267 +33 +1955.11258534646 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-83.4234143215687 +20 +-1271.71506812026 +30 +1983.06846791687 +11 +-57.1217663613614 +21 +-1479.42500834332 +31 +1955.11381280758 +12 +-83.4221122974449 +22 +-1479.42500803573 +32 +1983.06969537799 +13 +-83.4221122974449 +23 +-1479.42500803573 +33 +1983.06969537799 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +16.2397851414271 +20 +-1479.42468491837 +30 +1938.18001056121 +11 +-22.1264639806523 +21 +-1271.7151812764 +31 +1939.34942428128 +12 +16.2384831173033 +22 +-1271.71539123762 +32 +1938.17878310009 +13 +16.2384831173033 +23 +-1271.71539123762 +33 +1938.17878310009 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.1264639806523 +20 +-1271.7151812764 +30 +1939.34942428128 +11 +16.2397851414271 +21 +-1479.42468491837 +31 +1938.18001056121 +12 +-22.1251619565284 +22 +-1479.42489487959 +32 +1939.3506517424 +13 +-22.1251619565284 +23 +-1479.42489487959 +33 +1939.3506517424 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-22.3655547436192 +20 +-1575.77530103172 +30 +2068.33881178997 +11 +-52.13252569552 +21 +-1479.4241116404 +31 +2118.62416719069 +12 +-80.0884082650914 +22 +-1479.42440887799 +32 +2092.3238212554 +13 +-80.0884082650914 +23 +-1479.42440887799 +33 +2092.3238212554 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +97.0220443296732 +20 +-1479.4236280611 +30 +2051.44200620966 +11 +39.2459288101664 +21 +-1575.77517034675 +31 +2027.58590033816 +12 +95.8514031496311 +22 +-1479.42383845732 +32 +2013.07705911167 +13 +95.8514031496311 +23 +-1479.42383845732 +33 +2013.07705911167 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +61.0900030665619 +20 +-1260.03606969012 +30 +1936.64465220875 +11 +7.98091066173456 +21 +-1175.36456200926 +31 +1996.02781452793 +12 +22.3642181573071 +22 +-1175.36467512367 +32 +2002.0643607916 +13 +22.3642181573071 +23 +-1175.36467512367 +33 +2002.0643607916 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.2459288101664 +20 +-1575.77517034675 +30 +2027.58590033816 +11 +33.3438773424362 +21 +-1575.77528030582 +31 +2013.14688327402 +12 +112.887913487553 +22 +-1491.10268565594 +32 +2008.71044589075 +13 +112.887913487553 +23 +-1491.10268565594 +33 +2008.71044589075 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +-33.1366290489928 +20 +-1575.77565655989 +30 +2012.83666255977 +11 +-83.4221122974449 +21 +-1479.42500803573 +31 +1983.06969537799 +12 +-22.0553340273792 +22 +-1575.77565243725 +32 +2001.85830539842 +13 +-22.0553340273792 +23 +-1575.77565243725 +33 +2001.85830539842 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +52.1310574918292 +20 +-1271.71566573164 +30 +1951.77888131083 +11 +61.0913050906858 +21 +-1491.1033603377 +31 +1936.64587966987 +12 +61.0900030665619 +22 +-1260.03606969012 +32 +1936.64465220875 +13 +61.0900030665619 +23 +-1260.03606969012 +33 +1936.64465220875 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +61.0913050906858 +20 +-1491.1033603377 +30 +1936.64587966987 +11 +52.1310574918292 +21 +-1271.71566573164 +31 +1951.77888131083 +12 +52.132359515953 +22 +-1479.42441042435 +32 +1951.78010877195 +13 +52.132359515953 +23 +-1479.42441042435 +33 +1951.78010877195 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +61.0913050906858 +20 +-1491.1033603377 +30 +1936.64587966987 +11 +18.7238320955074 +21 +-1260.0363927542 +31 +1920.768168456 +12 +61.0900030665619 +22 +-1260.03606969012 +32 +1936.64465220875 +13 +61.0900030665619 +23 +-1260.03606969012 +33 +1936.64465220875 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +18.7238320955074 +20 +-1260.0363927542 +30 +1920.768168456 +11 +61.0913050906858 +21 +-1491.1033603377 +31 +1936.64587966987 +12 +18.7251341196313 +22 +-1491.10368340178 +32 +1920.76939591712 +13 +18.7251341196313 +23 +-1491.10368340178 +33 +1920.76939591712 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-94.1569105870414 +20 +-1491.10335208811 +30 +2102.87773026184 +11 +-80.0897102892153 +21 +-1271.715667278 +31 +2092.32259379428 +12 +-94.1582126111653 +22 +-1260.03606144053 +32 +2102.87650280072 +13 +-94.1582126111653 +23 +-1260.03606144053 +33 +2102.87650280072 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-80.0897102892153 +20 +-1271.715667278 +30 +2092.32259379428 +11 +-94.1569105870414 +21 +-1491.10335208811 +31 +2102.87773026184 +12 +-80.0884082650914 +22 +-1479.42440887799 +32 +2092.3238212554 +13 +-80.0884082650914 +23 +-1479.42440887799 +33 +2092.3238212554 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +95.8501011255072 +20 +-1271.71623769867 +30 +2013.07583165055 +11 +112.887913487553 +21 +-1491.10268565594 +31 +2008.71044589075 +12 +112.886611463429 +22 +-1260.03539500836 +32 +2008.70921842963 +13 +112.886611463429 +23 +-1260.03539500836 +33 +2008.70921842963 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +112.887913487553 +20 +-1491.10268565594 +30 +2008.71044589075 +11 +95.8501011255072 +21 +-1271.71623769867 +31 +2013.07583165055 +12 +95.8514031496311 +22 +-1479.42383845732 +32 +2013.07705911167 +13 +95.8514031496311 +23 +-1479.42383845732 +33 +2013.07705911167 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-95.851569329198 +20 +-1479.42468360743 +30 +2057.32721685097 +11 +-97.0222105092401 +21 +-1479.42489400365 +31 +2018.96226975299 +12 +-39.1731753130775 +22 +-1575.77561416868 +32 +2027.21997005555 +13 +-39.1731753130775 +23 +-1575.77561416868 +33 +2027.21997005555 +70 +0 + 0 +3DFACE + 8 +crank_full +10 +39.2459288101664 +20 +-1575.77517034675 +30 +2027.58590033816 +11 +33.3442112014263 +21 +-1635.02448383228 +31 +2013.14719801391 +12 +33.3438773424362 +22 +-1575.77528030582 +32 +2013.14688327402 +13 +33.3438773424362 +23 +-1575.77528030582 +33 +2013.14688327402 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +33.3442112014263 +20 +-1635.02448383228 +30 +2013.14719801391 +11 +39.2459288101664 +21 +-1575.77517034675 +31 +2027.58590033816 +12 +39.2462626691564 +22 +-1635.02437387321 +32 +2027.58621507805 +13 +39.2462626691564 +23 +-1635.02437387321 +33 +2027.58621507805 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +40.8338358974086 +20 +1087.68160174359 +30 +1975.83212904106 +11 +60.4504242229264 +21 +1076.22873878012 +31 +1995.97422483951 +12 +40.8337713637369 +22 +1076.22895631445 +32 +1975.83206820304 +13 +40.8337713637369 +23 +1076.22895631445 +33 +1975.83206820304 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +60.4504242229264 +20 +1076.22873878012 +30 +1995.97422483951 +11 +40.8338358974086 +21 +1087.68160174359 +31 +1975.83212904106 +12 +60.4504887565981 +22 +1087.68138420926 +32 +1995.97428567753 +13 +60.4504887565981 +23 +1087.68138420926 +33 +1995.97428567753 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-112.887948049741 +20 +-1491.10367640812 +30 +2061.69395415194 +11 +-94.1582126111653 +21 +-1260.03606144053 +31 +2102.87650280072 +12 +-112.889250073865 +22 +-1260.03638576054 +32 +2061.69272669082 +13 +-112.889250073865 +23 +-1260.03638576054 +33 +2061.69272669082 +70 +1 + 0 +3DFACE + 8 +crank_full +10 +-94.1582126111653 +20 +-1260.03606144053 +30 +2102.87650280072 +11 +-112.887948049741 +21 +-1491.10367640812 +31 +2061.69395415194 +12 +-94.1569105870414 +22 +-1491.10335208811 +32 +2102.87773026184 +13 +-94.1569105870414 +23 +-1491.10335208811 +33 +2102.87773026184 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1034.12663189037 +20 +-1016.89523242239 +30 +2093.59675330562 +11 +993.755281646064 +21 +-994.988599868068 +31 +1976.80755330562 +12 +1034.12663189037 +22 +-1016.89523242239 +32 +1976.80755330562 +13 +1034.12663189037 +23 +-1016.89523242239 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +993.755281646064 +20 +-994.988599868068 +30 +1976.80755330562 +11 +1034.12663189037 +21 +-1016.89523242239 +31 +2093.59675330562 +12 +993.755281646064 +22 +-994.988599868068 +32 +2093.59675330562 +13 +993.755281646064 +23 +-994.988599868068 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +1976.80755330562 +11 +1329.08826166069 +21 +-929.442444481353 +31 +2093.59675330562 +12 +1329.08826166069 +22 +-929.442444481353 +32 +1976.80755330562 +13 +1329.08826166069 +23 +-929.442444481353 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1329.08826166069 +20 +-929.442444481353 +30 +2093.59675330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +1351.75896842588 +22 +-887.662995228551 +32 +2093.59675330562 +13 +1351.75896842588 +23 +-887.662995228551 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1298.70239996067 +20 +-965.996277848705 +30 +2093.59675330562 +11 +1261.76909495036 +21 +-995.919752013918 +31 +1976.80755330562 +12 +1298.70239996067 +22 +-965.996277848705 +32 +1976.80755330562 +13 +1298.70239996067 +23 +-965.996277848705 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1261.76909495036 +20 +-995.919752013918 +30 +1976.80755330562 +11 +1298.70239996067 +21 +-965.996277848705 +31 +2093.59675330562 +12 +1261.76909495036 +22 +-995.919752013918 +32 +2093.59675330562 +13 +1261.76909495036 +23 +-995.919752013918 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +993.755281646067 +20 +-887.662995228552 +30 +1976.80755330562 +11 +1034.12663189037 +21 +-1016.89523242239 +31 +1976.80755330562 +12 +993.755281646064 +22 +-994.988599868068 +32 +1976.80755330562 +13 +993.755281646064 +23 +-994.988599868068 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1034.12663189037 +20 +-1016.89523242239 +30 +1976.80755330562 +11 +993.755281646067 +21 +-887.662995228552 +31 +1976.80755330562 +12 +1351.75896842588 +22 +-887.662995228551 +32 +1976.80755330562 +13 +1351.75896842588 +23 +-887.662995228551 +33 +1976.80755330562 +70 +13 + 0 +3DFACE + 8 +hand_half +10 +1034.12663189037 +20 +-1016.89523242239 +30 +1976.80755330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +1079.52613622403 +22 +-1030.97956170564 +32 +1976.80755330562 +13 +1079.52613622403 +23 +-1030.97956170564 +33 +1976.80755330562 +70 +3 + 0 +3DFACE + 8 +hand_half +10 +1079.52613622403 +20 +-1030.97956170564 +30 +1976.80755330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +1126.80101814733 +22 +-1035.93626063118 +32 +1976.80755330562 +13 +1126.80101814733 +23 +-1035.93626063118 +33 +1976.80755330562 +70 +3 + 0 +3DFACE + 8 +hand_half +10 +1126.80101814733 +20 +-1035.93626063118 +30 +1976.80755330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +1174.13453046003 +22 +-1031.57484603905 +32 +1976.80755330562 +13 +1174.13453046003 +23 +-1031.57484603905 +33 +1976.80755330562 +70 +3 + 0 +3DFACE + 8 +hand_half +10 +1174.13453046003 +20 +-1031.57484603905 +30 +1976.80755330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +1219.70767282888 +22 +-1018.0629246461 +32 +1976.80755330562 +13 +1219.70767282888 +23 +-1018.0629246461 +33 +1976.80755330562 +70 +3 + 0 +3DFACE + 8 +hand_half +10 +1219.70767282888 +20 +-1018.0629246461 +30 +1976.80755330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +1261.76909495036 +22 +-995.919752013918 +32 +1976.80755330562 +13 +1261.76909495036 +23 +-995.919752013918 +33 +1976.80755330562 +70 +3 + 0 +3DFACE + 8 +hand_half +10 +1261.76909495036 +20 +-995.919752013918 +30 +1976.80755330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +1298.70239996067 +22 +-965.996277848705 +32 +1976.80755330562 +13 +1298.70239996067 +23 +-965.996277848705 +33 +1976.80755330562 +70 +3 + 0 +3DFACE + 8 +hand_half +10 +1298.70239996067 +20 +-965.996277848705 +30 +1976.80755330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +1329.08826166069 +22 +-929.442444481353 +32 +1976.80755330562 +13 +1329.08826166069 +23 +-929.442444481353 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1034.12663189037 +20 +-1016.89523242239 +30 +2093.59675330562 +11 +993.755281646067 +21 +-887.662995228552 +31 +2093.59675330562 +12 +993.755281646064 +22 +-994.988599868068 +32 +2093.59675330562 +13 +993.755281646064 +23 +-994.988599868068 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +993.755281646067 +20 +-887.662995228552 +30 +2093.59675330562 +11 +1034.12663189037 +21 +-1016.89523242239 +31 +2093.59675330562 +12 +1351.75896842588 +22 +-887.662995228551 +32 +2093.59675330562 +13 +1351.75896842588 +23 +-887.662995228551 +33 +2093.59675330562 +70 +3 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +2093.59675330562 +11 +1034.12663189037 +21 +-1016.89523242239 +31 +2093.59675330562 +12 +1079.52613622403 +22 +-1030.97956170564 +32 +2093.59675330562 +13 +1079.52613622403 +23 +-1030.97956170564 +33 +2093.59675330562 +70 +13 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +2093.59675330562 +11 +1079.52613622403 +21 +-1030.97956170564 +31 +2093.59675330562 +12 +1126.80101814733 +22 +-1035.93626063118 +32 +2093.59675330562 +13 +1126.80101814733 +23 +-1035.93626063118 +33 +2093.59675330562 +70 +13 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +2093.59675330562 +11 +1126.80101814733 +21 +-1035.93626063118 +31 +2093.59675330562 +12 +1174.13453046003 +22 +-1031.57484603905 +32 +2093.59675330562 +13 +1174.13453046003 +23 +-1031.57484603905 +33 +2093.59675330562 +70 +13 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +2093.59675330562 +11 +1174.13453046003 +21 +-1031.57484603905 +31 +2093.59675330562 +12 +1219.70767282888 +22 +-1018.0629246461 +32 +2093.59675330562 +13 +1219.70767282888 +23 +-1018.0629246461 +33 +2093.59675330562 +70 +13 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +2093.59675330562 +11 +1219.70767282888 +21 +-1018.0629246461 +31 +2093.59675330562 +12 +1261.76909495036 +22 +-995.919752013918 +32 +2093.59675330562 +13 +1261.76909495036 +23 +-995.919752013918 +33 +2093.59675330562 +70 +13 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +2093.59675330562 +11 +1261.76909495036 +21 +-995.919752013918 +31 +2093.59675330562 +12 +1298.70239996067 +22 +-965.996277848705 +32 +2093.59675330562 +13 +1298.70239996067 +23 +-965.996277848705 +33 +2093.59675330562 +70 +13 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +2093.59675330562 +11 +1298.70239996067 +21 +-965.996277848705 +31 +2093.59675330562 +12 +1329.08826166069 +22 +-929.442444481353 +32 +2093.59675330562 +13 +1329.08826166069 +23 +-929.442444481353 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +993.755281646067 +20 +-887.662995228552 +30 +2093.59675330562 +11 +1351.75896842588 +21 +-887.662995228551 +31 +1976.80755330562 +12 +993.755281646067 +22 +-887.662995228552 +32 +1976.80755330562 +13 +993.755281646067 +23 +-887.662995228552 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1351.75896842588 +20 +-887.662995228551 +30 +1976.80755330562 +11 +993.755281646067 +21 +-887.662995228552 +31 +2093.59675330562 +12 +1351.75896842588 +22 +-887.662995228551 +32 +2093.59675330562 +13 +1351.75896842588 +23 +-887.662995228551 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1329.08826166069 +20 +-929.442444481353 +30 +1976.80755330562 +11 +1298.70239996067 +21 +-965.996277848705 +31 +2093.59675330562 +12 +1298.70239996067 +22 +-965.996277848705 +32 +1976.80755330562 +13 +1298.70239996067 +23 +-965.996277848705 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1298.70239996067 +20 +-965.996277848705 +30 +2093.59675330562 +11 +1329.08826166069 +21 +-929.442444481353 +31 +1976.80755330562 +12 +1329.08826166069 +22 +-929.442444481353 +32 +2093.59675330562 +13 +1329.08826166069 +23 +-929.442444481353 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1126.80101814733 +20 +-1035.93626063118 +30 +2093.59675330562 +11 +1079.52613622403 +21 +-1030.97956170564 +31 +1976.80755330562 +12 +1126.80101814733 +22 +-1035.93626063118 +32 +1976.80755330562 +13 +1126.80101814733 +23 +-1035.93626063118 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1079.52613622403 +20 +-1030.97956170564 +30 +1976.80755330562 +11 +1126.80101814733 +21 +-1035.93626063118 +31 +2093.59675330562 +12 +1079.52613622403 +22 +-1030.97956170564 +32 +2093.59675330562 +13 +1079.52613622403 +23 +-1030.97956170564 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1174.13453046003 +20 +-1031.57484603905 +30 +2093.59675330562 +11 +1126.80101814733 +21 +-1035.93626063118 +31 +1976.80755330562 +12 +1174.13453046003 +22 +-1031.57484603905 +32 +1976.80755330562 +13 +1174.13453046003 +23 +-1031.57484603905 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1126.80101814733 +20 +-1035.93626063118 +30 +1976.80755330562 +11 +1174.13453046003 +21 +-1031.57484603905 +31 +2093.59675330562 +12 +1126.80101814733 +22 +-1035.93626063118 +32 +2093.59675330562 +13 +1126.80101814733 +23 +-1035.93626063118 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1079.52613622403 +20 +-1030.97956170564 +30 +2093.59675330562 +11 +1034.12663189037 +21 +-1016.89523242239 +31 +1976.80755330562 +12 +1079.52613622403 +22 +-1030.97956170564 +32 +1976.80755330562 +13 +1079.52613622403 +23 +-1030.97956170564 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1034.12663189037 +20 +-1016.89523242239 +30 +1976.80755330562 +11 +1079.52613622403 +21 +-1030.97956170564 +31 +2093.59675330562 +12 +1034.12663189037 +22 +-1016.89523242239 +32 +2093.59675330562 +13 +1034.12663189037 +23 +-1016.89523242239 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1219.70767282888 +20 +-1018.0629246461 +30 +2093.59675330562 +11 +1174.13453046003 +21 +-1031.57484603905 +31 +1976.80755330562 +12 +1219.70767282888 +22 +-1018.0629246461 +32 +1976.80755330562 +13 +1219.70767282888 +23 +-1018.0629246461 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1174.13453046003 +20 +-1031.57484603905 +30 +1976.80755330562 +11 +1219.70767282888 +21 +-1018.0629246461 +31 +2093.59675330562 +12 +1174.13453046003 +22 +-1031.57484603905 +32 +2093.59675330562 +13 +1174.13453046003 +23 +-1031.57484603905 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1261.76909495036 +20 +-995.919752013918 +30 +2093.59675330562 +11 +1219.70767282888 +21 +-1018.0629246461 +31 +1976.80755330562 +12 +1261.76909495036 +22 +-995.919752013918 +32 +1976.80755330562 +13 +1261.76909495036 +23 +-995.919752013918 +33 +1976.80755330562 +70 +1 + 0 +3DFACE + 8 +hand_half +10 +1219.70767282888 +20 +-1018.0629246461 +30 +1976.80755330562 +11 +1261.76909495036 +21 +-995.919752013918 +31 +2093.59675330562 +12 +1219.70767282888 +22 +-1018.0629246461 +32 +2093.59675330562 +13 +1219.70767282888 +23 +-1018.0629246461 +33 +2093.59675330562 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +123.957534796371 +20 +-140.147039999996 +30 +1438.61018379565 +11 +145.758594958837 +21 +-327.009759999997 +31 +1465.17488447662 +12 +123.957534796373 +22 +-327.009759999997 +32 +1438.61018379565 +13 +123.957534796373 +23 +-327.009759999997 +33 +1438.61018379565 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +145.758594958837 +20 +-327.009759999997 +30 +1465.17488447662 +11 +123.957534796371 +21 +-140.147039999996 +31 +1438.61018379565 +12 +145.758594958835 +22 +-140.147039999996 +32 +1465.17488447662 +13 +145.758594958835 +23 +-140.147039999996 +33 +1465.17488447662 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-145.758282406557 +20 +-327.009759999999 +30 +1465.17471220716 +11 +-123.957190847735 +21 +-140.147039999998 +31 +1438.61003729252 +12 +-123.957190847734 +22 +-327.009759999999 +32 +1438.61003729252 +13 +-123.957190847734 +23 +-327.009759999999 +33 +1438.61003729252 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-123.957190847735 +20 +-140.147039999998 +30 +1438.61003729252 +11 +-145.758282406557 +21 +-327.009759999999 +31 +1465.17471220716 +12 +-145.758282406558 +22 +-140.147039999998 +32 +1465.17471220716 +13 +-145.758282406558 +23 +-140.147039999998 +33 +1465.17471220716 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +34.1997565800718 +20 +-140.14704 +30 +1734.50129493144 +11 +67.0852443586779 +21 +-327.009760000001 +31 +1724.52561249664 +12 +67.0852443586765 +22 +-140.14704 +32 +1724.52561249664 +13 +67.0852443586765 +23 +-140.14704 +33 +1724.52561249664 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +67.0852443586779 +20 +-327.009760000001 +30 +1724.52561249664 +11 +34.1997565800718 +21 +-140.14704 +31 +1734.50129493144 +12 +34.1997565800732 +22 +-327.009760000001 +32 +1734.50129493144 +13 +34.1997565800732 +23 +-327.009760000001 +33 +1734.50129493144 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-34.1995591345617 +20 +-327.009759999998 +30 +1390.63365180083 +11 +-67.0850469131678 +21 +-140.147039999997 +31 +1400.60933423564 +12 +-34.1995591345631 +22 +-140.147039999997 +32 +1390.63365180084 +13 +-34.1995591345631 +23 +-140.147039999997 +33 +1390.63365180084 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-67.0850469131678 +20 +-140.147039999997 +30 +1400.60933423564 +11 +-34.1995591345617 +21 +-327.009759999998 +31 +1390.63365180083 +12 +-67.0850469131664 +22 +-327.009759999998 +32 +1400.60933423564 +13 +-67.0850469131664 +23 +-327.009759999998 +33 +1400.60933423564 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +145.758594958835 +20 +-140.147039999996 +30 +1465.17488447662 +11 +161.958237853255 +21 +-327.009759999997 +31 +1495.48232773022 +12 +145.758594958837 +22 +-327.009759999997 +32 +1465.17488447662 +13 +145.758594958837 +23 +-327.009759999997 +33 +1465.17488447662 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +161.958237853255 +20 +-327.009759999997 +30 +1495.48232773022 +11 +145.758594958835 +21 +-140.147039999996 +31 +1465.17488447662 +12 +161.958237853253 +22 +-140.147039999996 +32 +1495.48232773022 +13 +161.958237853253 +23 +-140.147039999996 +33 +1495.48232773022 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-4.87060060567757e-06 +20 +-140.14704 +30 +1737.86965702509 +11 +34.1997565800732 +21 +-327.009760000001 +31 +1734.50129493144 +12 +34.1997565800718 +22 +-140.14704 +32 +1734.50129493144 +13 +34.1997565800718 +23 +-140.14704 +33 +1734.50129493144 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +34.1997565800732 +20 +-327.009760000001 +30 +1734.50129493144 +11 +-4.87060060567757e-06 +21 +-140.14704 +31 +1737.86965702509 +12 +-4.87059913788501e-06 +22 +-327.009760000001 +32 +1737.86965702509 +13 +-4.87059913788501e-06 +23 +-327.009760000001 +33 +1737.86965702509 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +171.933879867935 +20 +-140.147039999998 +30 +1596.76733442913 +11 +161.958158566334 +21 +-327.009759999999 +31 +1629.65281041762 +12 +171.933879867937 +22 +-327.009759999998 +32 +1596.76733442913 +13 +171.933879867937 +23 +-327.009759999998 +33 +1596.76733442913 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +161.958158566334 +20 +-327.009759999999 +30 +1629.65281041762 +11 +171.933879867935 +21 +-140.147039999998 +31 +1596.76733442913 +12 +161.958158566332 +22 +-140.147039999998 +32 +1629.65281041762 +13 +161.958158566332 +23 +-140.147039999998 +33 +1629.65281041762 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-67.0850469131664 +20 +-327.009759999998 +30 +1400.60933423564 +11 +-97.3924901667671 +21 +-140.147039999998 +31 +1416.80897713006 +12 +-67.0850469131678 +22 +-140.147039999997 +32 +1400.60933423564 +13 +-67.0850469131678 +23 +-140.147039999997 +33 +1400.60933423564 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-97.3924901667671 +20 +-140.147039999998 +30 +1416.80897713006 +11 +-67.0850469131664 +21 +-327.009759999998 +31 +1400.60933423564 +12 +-97.3924901667657 +22 +-327.009759999998 +32 +1416.80897713006 +13 +-97.3924901667657 +23 +-327.009759999998 +33 +1416.80897713006 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +175.302282381704 +20 +-140.147039999997 +30 +1562.56757695949 +11 +171.933879867937 +21 +-327.009759999998 +31 +1596.76733442913 +12 +175.302282381706 +22 +-327.009759999998 +32 +1562.56757695949 +13 +175.302282381706 +23 +-327.009759999998 +33 +1562.56757695949 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +171.933879867937 +20 +-327.009759999998 +30 +1596.76733442913 +11 +175.302282381704 +21 +-140.147039999997 +31 +1562.56757695949 +12 +171.933879867935 +22 +-140.147039999998 +32 +1596.76733442913 +13 +171.933879867935 +23 +-140.147039999998 +33 +1596.76733442913 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-123.957337350861 +20 +-327.009760000002 +30 +1686.52476293663 +11 +-145.758397513327 +21 +-140.147040000001 +31 +1659.96006225566 +12 +-145.758397513325 +22 +-327.009760000002 +32 +1659.96006225566 +13 +-145.758397513325 +23 +-327.009760000002 +33 +1659.96006225566 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-145.758397513327 +20 +-140.147040000001 +30 +1659.96006225566 +11 +-123.957337350861 +21 +-327.009760000002 +31 +1686.52476293663 +12 +-123.957337350863 +22 +-140.147040000001 +32 +1686.52476293663 +13 +-123.957337350863 +23 +-140.147040000001 +33 +1686.52476293663 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +161.958158566332 +20 +-140.147039999998 +30 +1629.65281041762 +11 +145.758479852068 +21 +-327.009759999999 +31 +1659.96023452511 +12 +161.958158566334 +22 +-327.009759999999 +32 +1629.65281041762 +13 +161.958158566334 +23 +-327.009759999999 +33 +1629.65281041762 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +145.758479852068 +20 +-327.009759999999 +30 +1659.96023452511 +11 +161.958158566332 +21 +-140.147039999998 +31 +1629.65281041762 +12 +145.758479852067 +22 +-140.147039999998 +32 +1659.96023452511 +13 +145.758479852067 +23 +-140.147039999998 +33 +1659.96023452511 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-97.3924901667657 +20 +-327.009759999998 +30 +1416.80897713006 +11 +-123.957190847735 +21 +-140.147039999998 +31 +1438.61003729252 +12 +-97.3924901667671 +22 +-140.147039999998 +32 +1416.80897713006 +13 +-97.3924901667671 +23 +-140.147039999998 +33 +1416.80897713006 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-123.957190847735 +20 +-140.147039999998 +30 +1438.61003729252 +11 +-97.3924901667657 +21 +-327.009759999998 +31 +1416.80897713006 +12 +-123.957190847734 +22 +-327.009759999999 +32 +1438.61003729252 +13 +-123.957190847734 +23 +-327.009759999999 +33 +1438.61003729252 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-161.958040407743 +20 +-327.009760000001 +30 +1629.65261900206 +11 +-171.933722842549 +21 +-140.14704 +31 +1596.76713122346 +12 +-171.933722842547 +22 +-327.009760000001 +32 +1596.76713122345 +13 +-171.933722842547 +23 +-327.009760000001 +33 +1596.76713122345 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-171.933722842549 +20 +-140.14704 +30 +1596.76713122346 +11 +-161.958040407743 +21 +-327.009760000001 +31 +1629.65261900206 +12 +-161.958040407745 +22 +-140.14704 +32 +1629.65261900206 +13 +-161.958040407745 +23 +-140.14704 +33 +1629.65261900206 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +67.0852443586765 +20 +-140.14704 +30 +1724.52561249664 +11 +97.3926876122771 +21 +-327.00976 +31 +1708.32596960222 +12 +97.3926876122757 +22 +-140.147039999999 +32 +1708.32596960222 +13 +97.3926876122757 +23 +-140.147039999999 +33 +1708.32596960222 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +97.3926876122771 +20 +-327.00976 +30 +1708.32596960222 +11 +67.0852443586765 +21 +-140.14704 +31 +1724.52561249664 +12 +67.0852443586779 +22 +-327.009760000001 +32 +1724.52561249664 +13 +67.0852443586779 +23 +-327.009760000001 +33 +1724.52561249664 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-67.0852383287284 +20 +-140.147040000001 +30 +1724.52553320972 +11 +-34.199762340237 +21 +-327.009760000002 +31 +1734.50125451132 +12 +-34.1997623402384 +22 +-140.147040000001 +32 +1734.50125451132 +13 +-34.1997623402384 +23 +-140.147040000001 +33 +1734.50125451132 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-34.199762340237 +20 +-327.009760000002 +30 +1734.50125451132 +11 +-67.0852383287284 +21 +-140.147040000001 +31 +1724.52553320972 +12 +-67.085238328727 +22 +-327.009760000002 +32 +1724.52553320972 +13 +-67.085238328727 +23 +-327.009760000002 +33 +1724.52553320972 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +34.1999597857484 +20 +-327.009759999997 +30 +1390.63369222096 +11 +0.00020231610917012 +21 +-140.147039999996 +31 +1387.26528970719 +12 +34.199959785747 +22 +-140.147039999996 +32 +1390.63369222096 +13 +34.199959785747 +23 +-140.147039999996 +33 +1390.63369222096 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +0.00020231610917012 +20 +-140.147039999996 +30 +1387.26528970719 +11 +34.1999597857484 +21 +-327.009759999997 +31 +1390.63369222096 +12 +0.000202316110637912 +22 +-327.009759999997 +32 +1387.26528970719 +13 +0.000202316110637912 +23 +-327.009759999997 +33 +1387.26528970719 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +0.000202316110637912 +20 +-327.009759999997 +30 +1387.26528970719 +11 +-34.1995591345631 +21 +-140.147039999997 +31 +1390.63365180084 +12 +0.00020231610917012 +22 +-140.147039999996 +32 +1387.26528970719 +13 +0.00020231610917012 +23 +-140.147039999996 +33 +1387.26528970719 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-34.1995591345631 +20 +-140.147039999997 +30 +1390.63365180084 +11 +0.000202316110637912 +21 +-327.009759999997 +31 +1387.26528970719 +12 +-34.1995591345617 +22 +-327.009759999998 +32 +1390.63365180083 +13 +-34.1995591345617 +23 +-327.009759999998 +33 +1390.63365180083 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +21.0097297891043 +20 +-2.03037586743449e-12 +30 +1702.4261702469 +11 +27.4505428589692 +21 +-140.14704 +31 +1692.78683069265 +12 +27.4505428589688 +22 +-2.03037586743449e-12 +32 +1692.78683069265 +13 +27.4505428589688 +23 +-2.03037586743449e-12 +33 +1692.78683069265 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +27.4505428589692 +20 +-140.14704 +30 +1692.78683069265 +11 +21.0097297891043 +21 +-2.03037586743449e-12 +31 +1702.4261702469 +12 +21.0097297891047 +22 +-140.14704 +32 +1702.4261702469 +13 +21.0097297891047 +23 +-140.14704 +33 +1702.4261702469 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +67.0854357742384 +20 +-327.009759999997 +30 +1400.60941352256 +11 +34.199959785747 +21 +-140.147039999996 +31 +1390.63369222096 +12 +67.085435774237 +22 +-140.147039999996 +32 +1400.60941352256 +13 +67.085435774237 +23 +-140.147039999996 +33 +1400.60941352256 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +34.199959785747 +20 +-140.147039999996 +30 +1390.63369222096 +11 +67.0854357742384 +21 +-327.009759999997 +31 +1400.60941352256 +12 +34.1999597857484 +22 +-327.009759999997 +32 +1390.63369222096 +13 +34.1999597857484 +23 +-327.009759999997 +33 +1390.63369222096 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +97.3926876122757 +20 +-140.147039999999 +30 +1708.32596960222 +11 +123.957388293245 +21 +-327.00976 +31 +1686.52490943975 +12 +123.957388293244 +22 +-140.147039999999 +32 +1686.52490943976 +13 +123.957388293244 +23 +-140.147039999999 +33 +1686.52490943976 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +123.957388293245 +20 +-327.00976 +30 +1686.52490943975 +11 +97.3926876122757 +21 +-140.147039999999 +31 +1708.32596960222 +12 +97.3926876122771 +22 +-327.00976 +32 +1708.32596960222 +13 +97.3926876122771 +23 +-327.00976 +33 +1708.32596960222 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +161.958237853253 +20 +-140.147039999996 +30 +1495.48232773022 +11 +171.933920288059 +21 +-327.009759999998 +31 +1528.36781550882 +12 +161.958237853255 +22 +-327.009759999997 +32 +1495.48232773022 +13 +161.958237853255 +23 +-327.009759999997 +33 +1495.48232773022 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +171.933920288059 +20 +-327.009759999998 +30 +1528.36781550882 +11 +161.958237853253 +21 +-140.147039999996 +31 +1495.48232773022 +12 +171.933920288057 +22 +-140.147039999997 +32 +1528.36781550882 +13 +171.933920288057 +23 +-140.147039999997 +33 +1528.36781550882 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +171.933920288057 +20 +-140.147039999997 +30 +1528.36781550882 +11 +175.302282381706 +21 +-327.009759999998 +31 +1562.56757695949 +12 +171.933920288059 +22 +-327.009759999998 +32 +1528.36781550882 +13 +171.933920288059 +23 +-327.009759999998 +33 +1528.36781550882 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +175.302282381706 +20 +-327.009759999998 +30 +1562.56757695949 +11 +171.933920288057 +21 +-140.147039999997 +31 +1528.36781550882 +12 +175.302282381704 +22 +-140.147039999997 +32 +1562.56757695949 +13 +175.302282381704 +23 +-140.147039999997 +33 +1562.56757695949 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +97.3928598817304 +20 +-327.009759999997 +30 +1416.80909223683 +11 +67.085435774237 +21 +-140.147039999996 +31 +1400.60941352256 +12 +97.3928598817289 +22 +-140.147039999996 +32 +1416.80909223683 +13 +97.3928598817289 +23 +-140.147039999996 +33 +1416.80909223683 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +67.085435774237 +20 +-140.147039999996 +30 +1400.60941352256 +11 +97.3928598817304 +21 +-327.009759999997 +31 +1416.80909223683 +12 +67.0854357742384 +22 +-327.009759999997 +32 +1400.60941352256 +13 +67.0854357742384 +23 +-327.009759999997 +33 +1400.60941352256 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-145.758397513325 +20 +-327.009760000002 +30 +1659.96006225566 +11 +-161.958040407745 +21 +-140.14704 +31 +1629.65261900206 +12 +-161.958040407743 +22 +-327.009760000001 +32 +1629.65261900206 +13 +-161.958040407743 +23 +-327.009760000001 +33 +1629.65261900206 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-161.958040407745 +20 +-140.14704 +30 +1629.65261900206 +11 +-145.758397513325 +21 +-327.009760000002 +31 +1659.96006225566 +12 +-145.758397513327 +22 +-140.147040000001 +32 +1659.96006225566 +13 +-145.758397513327 +23 +-140.147040000001 +33 +1659.96006225566 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +123.957534796371 +20 +-140.147039999996 +30 +1438.61018379565 +11 +97.3928598817304 +21 +-327.009759999997 +31 +1416.80909223683 +12 +97.3928598817289 +22 +-140.147039999996 +32 +1416.80909223683 +13 +97.3928598817289 +23 +-140.147039999996 +33 +1416.80909223683 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +97.3928598817304 +20 +-327.009759999997 +30 +1416.80909223683 +11 +123.957534796371 +21 +-140.147039999996 +31 +1438.61018379565 +12 +123.957534796373 +22 +-327.009759999997 +32 +1438.61018379565 +13 +123.957534796373 +23 +-327.009759999997 +33 +1438.61018379565 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-171.933722842547 +20 +-327.009760000001 +30 +1596.76713122345 +11 +-175.302084936196 +21 +-140.14704 +31 +1562.56736977278 +12 +-175.302084936194 +22 +-327.009760000001 +32 +1562.56736977278 +13 +-175.302084936194 +23 +-327.009760000001 +33 +1562.56736977278 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-175.302084936196 +20 +-140.14704 +30 +1562.56736977278 +11 +-171.933722842547 +21 +-327.009760000001 +31 +1596.76713122345 +12 +-171.933722842549 +22 +-140.14704 +32 +1596.76713122346 +13 +-171.933722842549 +23 +-140.14704 +33 +1596.76713122346 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-175.302084936194 +20 +-327.009760000001 +30 +1562.56736977278 +11 +-171.933682422427 +21 +-140.147039999999 +31 +1528.36761230315 +12 +-171.933682422425 +22 +-327.00976 +32 +1528.36761230315 +13 +-171.933682422425 +23 +-327.00976 +33 +1528.36761230315 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-171.933682422427 +20 +-140.147039999999 +30 +1528.36761230315 +11 +-175.302084936194 +21 +-327.009760000001 +31 +1562.56736977278 +12 +-175.302084936196 +22 +-140.14704 +32 +1562.56736977278 +13 +-175.302084936196 +23 +-140.14704 +33 +1562.56736977278 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-171.933682422425 +20 +-327.00976 +30 +1528.36761230315 +11 +-161.957961120824 +21 +-140.147039999999 +31 +1495.48213631466 +12 +-161.957961120822 +22 +-327.00976 +32 +1495.48213631465 +13 +-161.957961120822 +23 +-327.00976 +33 +1495.48213631465 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-161.957961120824 +20 +-140.147039999999 +30 +1495.48213631466 +11 +-171.933682422425 +21 +-327.00976 +31 +1528.36761230315 +12 +-171.933682422427 +22 +-140.147039999999 +32 +1528.36761230315 +13 +-171.933682422427 +23 +-140.147039999999 +33 +1528.36761230315 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-161.957961120822 +20 +-327.00976 +30 +1495.48213631465 +11 +-145.758282406558 +21 +-140.147039999998 +31 +1465.17471220716 +12 +-145.758282406557 +22 +-327.009759999999 +32 +1465.17471220716 +13 +-145.758282406557 +23 +-327.009759999999 +33 +1465.17471220716 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-145.758282406558 +20 +-140.147039999998 +30 +1465.17471220716 +11 +-161.957961120822 +21 +-327.00976 +31 +1495.48213631465 +12 +-161.957961120824 +22 +-140.147039999999 +32 +1495.48213631466 +13 +-161.957961120824 +23 +-140.147039999999 +33 +1495.48213631466 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +145.758479852067 +20 +-140.147039999998 +30 +1659.96023452511 +11 +123.957388293245 +21 +-327.00976 +31 +1686.52490943975 +12 +145.758479852068 +22 +-327.009759999999 +32 +1659.96023452511 +13 +145.758479852068 +23 +-327.009759999999 +33 +1659.96023452511 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +123.957388293245 +20 +-327.00976 +30 +1686.52490943975 +11 +145.758479852067 +21 +-140.147039999998 +31 +1659.96023452511 +12 +123.957388293244 +22 +-140.147039999999 +32 +1686.52490943976 +13 +123.957388293244 +23 +-140.147039999999 +33 +1686.52490943976 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-97.3926624362203 +20 +-140.147040000001 +30 +1708.32585449545 +11 +-67.085238328727 +21 +-327.009760000002 +31 +1724.52553320972 +12 +-67.0852383287284 +22 +-140.147040000001 +32 +1724.52553320972 +13 +-67.0852383287284 +23 +-140.147040000001 +33 +1724.52553320972 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-67.085238328727 +20 +-327.009760000002 +30 +1724.52553320972 +11 +-97.3926624362203 +21 +-140.147040000001 +31 +1708.32585449545 +12 +-97.3926624362189 +22 +-327.009760000002 +32 +1708.32585449545 +13 +-97.3926624362189 +23 +-327.009760000002 +33 +1708.32585449545 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-123.957337350861 +20 +-327.009760000002 +30 +1686.52476293663 +11 +-97.3926624362203 +21 +-140.147040000001 +31 +1708.32585449545 +12 +-123.957337350863 +22 +-140.147040000001 +32 +1686.52476293663 +13 +-123.957337350863 +23 +-140.147040000001 +33 +1686.52476293663 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-97.3926624362203 +20 +-140.147040000001 +30 +1708.32585449545 +11 +-123.957337350861 +21 +-327.009760000002 +31 +1686.52476293663 +12 +-97.3926624362189 +22 +-327.009760000002 +32 +1708.32585449545 +13 +-97.3926624362189 +23 +-327.009760000002 +33 +1708.32585449545 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +21.0097668453905 +20 +-140.14704 +30 +1660.40671384141 +11 +11.3704272911448 +21 +-2.03037586743449e-12 +31 +1653.96590077154 +12 +21.0097668453901 +22 +-1.98525640371372e-12 +32 +1660.40671384141 +13 +21.0097668453901 +23 +-1.98525640371372e-12 +33 +1660.40671384141 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +11.3704272911448 +20 +-2.03037586743449e-12 +30 +1653.96590077154 +11 +21.0097668453905 +21 +-140.14704 +31 +1660.40671384141 +12 +11.3704272911452 +22 +-140.14704 +32 +1653.96590077155 +13 +11.3704272911452 +23 +-140.14704 +33 +1653.96590077155 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-11.370338645769 +20 +-140.14704 +30 +1653.96588071683 +11 +-21.0096895600995 +21 +-2.12061479487602e-12 +31 +1660.40667678512 +12 +-11.3703386457694 +22 +-2.07549533115525e-12 +32 +1653.96588071683 +13 +-11.3703386457694 +23 +-2.07549533115525e-12 +33 +1653.96588071683 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-21.0096895600995 +20 +-2.12061479487602e-12 +30 +1660.40667678512 +11 +-11.370338645769 +21 +-140.14704 +31 +1653.96588071683 +12 +-21.0096895600991 +22 +-140.14704 +32 +1660.40667678512 +13 +-21.0096895600991 +23 +-140.14704 +33 +1660.40667678512 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-6.0882486421221e-06 +20 +-2.12061479487602e-12 +30 +1711.12866608211 +11 +11.3703788747745 +21 +-140.14704 +31 +1708.8669663152 +12 +11.3703788747741 +22 +-2.07549533115525e-12 +32 +1708.8669663152 +13 +11.3703788747741 +23 +-2.07549533115525e-12 +33 +1708.8669663152 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +11.3703788747745 +20 +-140.14704 +30 +1708.8669663152 +11 +-6.0882486421221e-06 +21 +-2.12061479487602e-12 +31 +1711.12866608211 +12 +-6.08824821207721e-06 +22 +-140.14704 +32 +1711.12866608211 +13 +-6.08824821207721e-06 +23 +-140.14704 +33 +1711.12866608211 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-27.4505026299636 +20 +-140.14704 +30 +1670.04601633937 +11 +-21.0096895600995 +21 +-2.12061479487602e-12 +31 +1660.40667678512 +12 +-21.0096895600991 +22 +-140.14704 +32 +1660.40667678512 +13 +-21.0096895600991 +23 +-140.14704 +33 +1660.40667678512 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-21.0096895600995 +20 +-2.12061479487602e-12 +30 +1660.40667678512 +11 +-27.4505026299636 +21 +-140.14704 +31 +1670.04601633937 +12 +-27.4505026299641 +22 +-2.12061479487602e-12 +32 +1670.04601633937 +13 +-27.4505026299641 +23 +-2.12061479487602e-12 +33 +1670.04601633937 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +11.3703788747741 +20 +-2.07549533115525e-12 +30 +1708.8669663152 +11 +21.0097297891047 +21 +-140.14704 +31 +1702.4261702469 +12 +21.0097297891043 +22 +-2.03037586743449e-12 +32 +1702.4261702469 +13 +21.0097297891043 +23 +-2.03037586743449e-12 +33 +1702.4261702469 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +21.0097297891047 +20 +-140.14704 +30 +1702.4261702469 +11 +11.3703788747741 +21 +-2.07549533115525e-12 +31 +1708.8669663152 +12 +11.3703788747745 +22 +-140.14704 +32 +1708.8669663152 +13 +11.3703788747745 +23 +-140.14704 +33 +1708.8669663152 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +27.4505428589688 +20 +-2.03037586743449e-12 +30 +1692.78683069265 +11 +29.712262680597 +21 +-140.14704 +31 +1681.41644971876 +12 +29.7122626805966 +22 +-1.98525640371372e-12 +32 +1681.41644971876 +13 +29.7122626805966 +23 +-1.98525640371372e-12 +33 +1681.41644971876 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +29.712262680597 +20 +-140.14704 +30 +1681.41644971876 +11 +27.4505428589688 +21 +-2.03037586743449e-12 +31 +1692.78683069265 +12 +27.4505428589692 +22 +-140.14704 +32 +1692.78683069265 +13 +27.4505428589692 +23 +-140.14704 +33 +1692.78683069265 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +29.7122626805966 +20 +-1.98525640371372e-12 +30 +1681.41644971876 +11 +27.4505629136866 +21 +-140.14704 +31 +1670.04606475574 +12 +27.4505629136862 +22 +-1.98525640371372e-12 +32 +1670.04606475574 +13 +27.4505629136862 +23 +-1.98525640371372e-12 +33 +1670.04606475574 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +27.4505629136866 +20 +-140.14704 +30 +1670.04606475574 +11 +29.7122626805966 +21 +-1.98525640371372e-12 +31 +1681.41644971876 +12 +29.712262680597 +22 +-140.14704 +32 +1681.41644971876 +13 +29.712262680597 +23 +-140.14704 +33 +1681.41644971876 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-21.0097266163854 +20 +-2.16573425859679e-12 +30 +1702.42613319061 +11 +-11.3703870621396 +21 +-140.14704 +31 +1708.86694626048 +12 +-11.37038706214 +22 +-2.12061479487602e-12 +32 +1708.86694626048 +13 +-11.37038706214 +23 +-2.12061479487602e-12 +33 +1708.86694626048 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-11.3703870621396 +20 +-140.14704 +30 +1708.86694626048 +11 +-21.0097266163854 +21 +-2.16573425859679e-12 +31 +1702.42613319061 +12 +-21.009726616385 +22 +-140.14704 +32 +1702.42613319061 +13 +-21.009726616385 +23 +-140.14704 +33 +1702.42613319061 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-171.933722842549 +20 +-140.14704 +30 +1596.76713122346 +11 +-171.933682422427 +21 +-140.147039999999 +31 +1528.36761230315 +12 +-175.302084936196 +22 +-140.14704 +32 +1562.56736977278 +13 +-175.302084936196 +23 +-140.14704 +33 +1562.56736977278 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-171.933682422427 +20 +-140.147039999999 +30 +1528.36761230315 +11 +-171.933722842549 +21 +-140.14704 +31 +1596.76713122346 +12 +-161.958040407745 +22 +-140.14704 +32 +1629.65261900206 +13 +-161.958040407745 +23 +-140.14704 +33 +1629.65261900206 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-171.933682422427 +20 +-140.147039999999 +30 +1528.36761230315 +11 +-161.958040407745 +21 +-140.14704 +31 +1629.65261900206 +12 +-161.957961120824 +22 +-140.147039999999 +32 +1495.48213631466 +13 +-161.957961120824 +23 +-140.147039999999 +33 +1495.48213631466 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-161.957961120824 +20 +-140.147039999999 +30 +1495.48213631466 +11 +-161.958040407745 +21 +-140.14704 +31 +1629.65261900206 +12 +-145.758397513327 +22 +-140.147040000001 +32 +1659.96006225566 +13 +-145.758397513327 +23 +-140.147040000001 +33 +1659.96006225566 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-161.957961120824 +20 +-140.147039999999 +30 +1495.48213631466 +11 +-145.758397513327 +21 +-140.147040000001 +31 +1659.96006225566 +12 +-145.758282406558 +22 +-140.147039999998 +32 +1465.17471220716 +13 +-145.758282406558 +23 +-140.147039999998 +33 +1465.17471220716 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-145.758282406558 +20 +-140.147039999998 +30 +1465.17471220716 +11 +-145.758397513327 +21 +-140.147040000001 +31 +1659.96006225566 +12 +-123.957337350863 +22 +-140.147040000001 +32 +1686.52476293663 +13 +-123.957337350863 +23 +-140.147040000001 +33 +1686.52476293663 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-145.758282406558 +20 +-140.147039999998 +30 +1465.17471220716 +11 +-123.957337350863 +21 +-140.147040000001 +31 +1686.52476293663 +12 +-123.957190847735 +22 +-140.147039999998 +32 +1438.61003729252 +13 +-123.957190847735 +23 +-140.147039999998 +33 +1438.61003729252 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-123.957190847735 +20 +-140.147039999998 +30 +1438.61003729252 +11 +-123.957337350863 +21 +-140.147040000001 +31 +1686.52476293663 +12 +-97.3926624362203 +22 +-140.147040000001 +32 +1708.32585449545 +13 +-97.3926624362203 +23 +-140.147040000001 +33 +1708.32585449545 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-123.957190847735 +20 +-140.147039999998 +30 +1438.61003729252 +11 +-97.3926624362203 +21 +-140.147040000001 +31 +1708.32585449545 +12 +-97.3924901667671 +22 +-140.147039999998 +32 +1416.80897713006 +13 +-97.3924901667671 +23 +-140.147039999998 +33 +1416.80897713006 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-97.3924901667671 +20 +-140.147039999998 +30 +1416.80897713006 +11 +-97.3926624362203 +21 +-140.147040000001 +31 +1708.32585449545 +12 +-85.0224388771927 +22 +-140.147039999999 +32 +1562.56737879036 +13 +-85.0224388771927 +23 +-140.147039999999 +33 +1562.56737879036 +70 +15 + 0 +3DFACE + 8 +rotator_half +10 +-85.0224388771927 +20 +-140.147039999999 +30 +1562.56737879036 +11 +-97.3926624362203 +21 +-140.147040000001 +31 +1708.32585449545 +12 +-83.3887731086227 +22 +-140.147039999999 +32 +1579.15445484661 +13 +-83.3887731086227 +23 +-140.147039999999 +33 +1579.15445484661 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887731086227 +20 +-140.147039999999 +30 +1579.15445484661 +11 +-97.3926624362203 +21 +-140.147040000001 +31 +1708.32585449545 +12 +-67.0852383287284 +22 +-140.147040000001 +32 +1724.52553320972 +13 +-67.0852383287284 +23 +-140.147040000001 +33 +1724.52553320972 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887731086227 +20 +-140.147039999999 +30 +1579.15445484661 +11 +-67.0852383287284 +21 +-140.147040000001 +31 +1724.52553320972 +12 +-78.5505197605909 +22 +-140.147039999999 +32 +1595.10410250665 +13 +-78.5505197605909 +23 +-140.147039999999 +33 +1595.10410250665 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-78.5505197605909 +20 +-140.147039999999 +30 +1595.10410250665 +11 +-67.0852383287284 +21 +-140.147040000001 +31 +1724.52553320972 +12 +-70.6936101959386 +22 +-140.14704 +32 +1609.80338575557 +13 +-70.6936101959386 +23 +-140.14704 +33 +1609.80338575557 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-70.6936101959386 +20 +-140.14704 +30 +1609.80338575557 +11 +-67.0852383287284 +21 +-140.147040000001 +31 +1724.52553320972 +12 +-60.1199810430296 +22 +-140.14704 +32 +1622.68741938158 +13 +-60.1199810430296 +23 +-140.14704 +33 +1622.68741938158 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-60.1199810430296 +20 +-140.14704 +30 +1622.68741938158 +11 +-67.0852383287284 +21 +-140.147040000001 +31 +1724.52553320972 +12 +-34.1997623402384 +22 +-140.147040000001 +32 +1734.50125451132 +13 +-34.1997623402384 +23 +-140.147040000001 +33 +1734.50125451132 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-60.1199810430296 +20 +-140.14704 +30 +1622.68741938158 +11 +-34.1997623402384 +21 +-140.147040000001 +31 +1734.50125451132 +12 +-47.2359709404507 +22 +-140.14704 +32 +1633.26107719786 +13 +-47.2359709404507 +23 +-140.14704 +33 +1633.26107719786 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-47.2359709404507 +20 +-140.14704 +30 +1633.26107719786 +11 +-34.1997623402384 +21 +-140.147040000001 +31 +1734.50125451132 +12 +-32.5367051710078 +22 +-140.14704 +32 +1641.11801946432 +13 +-32.5367051710078 +23 +-140.14704 +33 +1641.11801946432 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-32.5367051710078 +20 +-140.14704 +30 +1641.11801946432 +11 +-34.1997623402384 +21 +-140.147040000001 +31 +1734.50125451132 +12 +-29.7122224515915 +22 +-140.14704 +32 +1681.41639731326 +13 +-29.7122224515915 +23 +-140.14704 +33 +1681.41639731326 +70 +15 + 0 +3DFACE + 8 +rotator_half +10 +-29.7122224515915 +20 +-140.14704 +30 +1681.41639731326 +11 +-34.1997623402384 +21 +-140.147040000001 +31 +1734.50125451132 +12 +-27.450522684681 +22 +-140.14704 +32 +1692.78678227628 +13 +-27.450522684681 +23 +-140.14704 +33 +1692.78678227628 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-27.450522684681 +20 +-140.14704 +30 +1692.78678227628 +11 +-34.1997623402384 +21 +-140.147040000001 +31 +1734.50125451132 +12 +-4.87060060567757e-06 +22 +-140.14704 +32 +1737.86965702509 +13 +-4.87060060567757e-06 +23 +-140.14704 +33 +1737.86965702509 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-27.450522684681 +20 +-140.14704 +30 +1692.78678227628 +11 +-4.87060060567757e-06 +21 +-140.14704 +31 +1737.86965702509 +12 +-21.009726616385 +22 +-140.14704 +32 +1702.42613319061 +13 +-21.009726616385 +23 +-140.14704 +33 +1702.42613319061 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-21.009726616385 +20 +-140.14704 +30 +1702.42613319061 +11 +-4.87060060567757e-06 +21 +-140.14704 +31 +1737.86965702509 +12 +-11.3703870621396 +22 +-140.14704 +32 +1708.86694626048 +13 +-11.3703870621396 +23 +-140.14704 +33 +1708.86694626048 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-11.3703870621396 +20 +-140.14704 +30 +1708.86694626048 +11 +-4.87060060567757e-06 +21 +-140.14704 +31 +1737.86965702509 +12 +-6.08824821207721e-06 +22 +-140.14704 +32 +1711.12866608211 +13 +-6.08824821207721e-06 +23 +-140.14704 +33 +1711.12866608211 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-6.08824821207721e-06 +20 +-140.14704 +30 +1711.12866608211 +11 +-4.87060060567757e-06 +21 +-140.14704 +31 +1737.86965702509 +12 +11.3703788747745 +22 +-140.14704 +32 +1708.8669663152 +13 +11.3703788747745 +23 +-140.14704 +33 +1708.8669663152 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +11.3703788747745 +20 +-140.14704 +30 +1708.8669663152 +11 +-4.87060060567757e-06 +21 +-140.14704 +31 +1737.86965702509 +12 +34.1997565800718 +22 +-140.14704 +32 +1734.50129493144 +13 +34.1997565800718 +23 +-140.14704 +33 +1734.50129493144 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +11.3703788747745 +20 +-140.14704 +30 +1708.8669663152 +11 +34.1997565800718 +21 +-140.14704 +31 +1734.50129493144 +12 +21.0097297891047 +22 +-140.14704 +32 +1702.4261702469 +13 +21.0097297891047 +23 +-140.14704 +33 +1702.4261702469 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +21.0097297891047 +20 +-140.14704 +30 +1702.4261702469 +11 +34.1997565800718 +21 +-140.14704 +31 +1734.50129493144 +12 +27.4505428589692 +22 +-140.14704 +32 +1692.78683069265 +13 +27.4505428589692 +23 +-140.14704 +33 +1692.78683069265 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +27.4505428589692 +20 +-140.14704 +30 +1692.78683069265 +11 +34.1997565800718 +21 +-140.14704 +31 +1734.50129493144 +12 +29.712262680597 +22 +-140.14704 +32 +1681.41644971876 +13 +29.712262680597 +23 +-140.14704 +33 +1681.41644971876 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +29.712262680597 +20 +-140.14704 +30 +1681.41644971876 +11 +34.1997565800718 +21 +-140.14704 +31 +1734.50129493144 +12 +32.5367278632675 +22 +-140.147039999999 +32 +1641.11809184948 +13 +32.5367278632675 +23 +-140.147039999999 +33 +1641.11809184948 +70 +15 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632675 +20 +-140.147039999999 +30 +1641.11809184948 +11 +34.1997565800718 +21 +-140.14704 +31 +1734.50129493144 +12 +47.2360111121902 +22 +-140.147039999999 +32 +1633.26118228483 +13 +47.2360111121902 +23 +-140.147039999999 +33 +1633.26118228483 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +47.2360111121902 +20 +-140.147039999999 +30 +1633.26118228483 +11 +34.1997565800718 +21 +-140.14704 +31 +1734.50129493144 +12 +67.0852443586765 +22 +-140.14704 +32 +1724.52561249664 +13 +67.0852443586765 +23 +-140.14704 +33 +1724.52561249664 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +47.2360111121902 +20 +-140.147039999999 +30 +1633.26118228483 +11 +67.0852443586765 +21 +-140.14704 +31 +1724.52561249664 +12 +60.1200447381919 +22 +-140.147039999999 +32 +1622.68755313192 +13 +60.1200447381919 +23 +-140.147039999999 +33 +1622.68755313192 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +60.1200447381919 +20 +-140.147039999999 +30 +1622.68755313192 +11 +67.0852443586765 +21 +-140.14704 +31 +1724.52561249664 +12 +70.6937025544744 +22 +-140.147039999998 +32 +1609.80354302934 +13 +70.6937025544744 +23 +-140.147039999998 +33 +1609.80354302934 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +70.6937025544744 +20 +-140.147039999998 +30 +1609.80354302934 +11 +67.0852443586765 +21 +-140.14704 +31 +1724.52561249664 +12 +97.3926876122757 +22 +-140.147039999999 +32 +1708.32596960222 +13 +97.3926876122757 +23 +-140.147039999999 +33 +1708.32596960222 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +70.6937025544744 +20 +-140.147039999998 +30 +1609.80354302934 +11 +97.3926876122757 +21 +-140.147039999999 +31 +1708.32596960222 +12 +78.5506448209338 +22 +-140.147039999998 +32 +1595.1042772599 +13 +78.5506448209338 +23 +-140.147039999998 +33 +1595.1042772599 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +78.5506448209338 +20 +-140.147039999998 +30 +1595.1042772599 +11 +97.3926876122757 +21 +-140.147039999999 +31 +1708.32596960222 +12 +83.3889336524938 +22 +-140.147039999998 +32 +1579.15464036367 +13 +83.3889336524938 +23 +-140.147039999998 +33 +1579.15464036367 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +83.3889336524938 +20 +-140.147039999998 +30 +1579.15464036367 +11 +97.3926876122757 +21 +-140.147039999999 +31 +1708.32596960222 +12 +85.0226363227013 +22 +-140.147039999998 +32 +1562.56756794192 +13 +85.0226363227013 +23 +-140.147039999998 +33 +1562.56756794192 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-97.3924901667671 +20 +-140.147039999998 +30 +1416.80897713006 +11 +-83.3887362069852 +21 +-140.147039999999 +31 +1545.98030636861 +12 +-67.0850469131678 +22 +-140.147039999997 +32 +1400.60933423564 +13 +-67.0850469131678 +23 +-140.147039999997 +33 +1400.60933423564 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887362069852 +20 +-140.147039999999 +30 +1545.98030636861 +11 +-97.3924901667671 +21 +-140.147039999998 +31 +1416.80897713006 +12 +-85.0224388771927 +22 +-140.147039999999 +32 +1562.56737879036 +13 +-85.0224388771927 +23 +-140.147039999999 +33 +1562.56737879036 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-67.0850469131678 +20 +-140.147039999997 +30 +1400.60933423564 +11 +-83.3887362069852 +21 +-140.147039999999 +31 +1545.98030636861 +12 +-78.5504473754252 +22 +-140.147039999999 +32 +1530.03066947238 +13 +-78.5504473754252 +23 +-140.147039999999 +33 +1530.03066947238 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-67.0850469131678 +20 +-140.147039999997 +30 +1400.60933423564 +11 +-78.5504473754252 +21 +-140.147039999999 +31 +1530.03066947238 +12 +-70.6935051089658 +22 +-140.147039999998 +32 +1515.33140370293 +13 +-70.6935051089658 +23 +-140.147039999998 +33 +1515.33140370293 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-67.0850469131678 +20 +-140.147039999997 +30 +1400.60933423564 +11 +-70.6935051089658 +21 +-140.147039999998 +31 +1515.33140370293 +12 +-60.1198472926833 +22 +-140.147039999998 +32 +1502.44739360036 +13 +-60.1198472926833 +23 +-140.147039999998 +33 +1502.44739360036 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-67.0850469131678 +20 +-140.147039999997 +30 +1400.60933423564 +11 +-60.1198472926833 +21 +-140.147039999998 +31 +1502.44739360036 +12 +-34.1995591345631 +22 +-140.147039999997 +32 +1390.63365180084 +13 +-34.1995591345631 +23 +-140.147039999997 +33 +1390.63365180084 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-34.1995591345631 +20 +-140.147039999997 +30 +1390.63365180084 +11 +-60.1198472926833 +21 +-140.147039999998 +31 +1502.44739360036 +12 +-47.2358136666817 +22 +-140.147039999998 +32 +1491.87376444745 +13 +-47.2358136666817 +23 +-140.147039999998 +33 +1491.87376444745 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-34.1995591345631 +20 +-140.147039999997 +30 +1390.63365180084 +11 +-47.2358136666817 +21 +-140.147039999998 +31 +1491.87376444745 +12 +-32.5365304177589 +22 +-140.147039999998 +32 +1484.01685488279 +13 +-32.5365304177589 +23 +-140.147039999998 +33 +1484.01685488279 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-34.1995591345631 +20 +-140.147039999997 +30 +1390.63365180084 +11 +-32.5365304177589 +21 +-140.147039999998 +31 +1484.01685488279 +12 +0.00020231610917012 +22 +-140.147039999996 +32 +1387.26528970719 +13 +0.00020231610917012 +23 +-140.147039999996 +33 +1387.26528970719 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +0.00020231610917012 +20 +-140.147039999996 +30 +1387.26528970719 +11 +-32.5365304177589 +21 +-140.147039999998 +31 +1484.01685488279 +12 +-16.586882757718 +22 +-140.147039999997 +32 +1479.17860153476 +13 +-16.586882757718 +23 +-140.147039999997 +33 +1479.17860153476 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +0.00020231610917012 +20 +-140.147039999996 +30 +1387.26528970719 +11 +-16.586882757718 +21 +-140.147039999997 +31 +1479.17860153476 +12 +0.000193298531099362 +22 +-140.147039999997 +32 +1477.54493576619 +13 +0.000193298531099362 +23 +-140.147039999997 +33 +1477.54493576619 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +0.00020231610917012 +20 +-140.147039999996 +30 +1387.26528970719 +11 +0.000193298531099362 +21 +-140.147039999997 +31 +1477.54493576619 +12 +16.5872657202861 +22 +-140.147039999997 +32 +1479.1786384364 +13 +16.5872657202861 +23 +-140.147039999997 +33 +1479.1786384364 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +0.00020231610917012 +20 +-140.147039999996 +30 +1387.26528970719 +11 +16.5872657202861 +21 +-140.147039999997 +31 +1479.1786384364 +12 +34.199959785747 +22 +-140.147039999996 +32 +1390.63369222096 +13 +34.199959785747 +23 +-140.147039999996 +33 +1390.63369222096 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +34.199959785747 +20 +-140.147039999996 +30 +1390.63369222096 +11 +16.5872657202861 +21 +-140.147039999997 +31 +1479.1786384364 +12 +32.5369026165164 +22 +-140.147039999997 +32 +1484.01692726796 +13 +32.5369026165164 +23 +-140.147039999997 +33 +1484.01692726796 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +34.199959785747 +20 +-140.147039999996 +30 +1390.63369222096 +11 +32.5369026165164 +21 +-140.147039999997 +31 +1484.01692726796 +12 +47.2361683859592 +22 +-140.147039999997 +32 +1491.87386953442 +13 +47.2361683859592 +23 +-140.147039999997 +33 +1491.87386953442 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +34.199959785747 +20 +-140.147039999996 +30 +1390.63369222096 +11 +47.2361683859592 +21 +-140.147039999997 +31 +1491.87386953442 +12 +67.085435774237 +22 +-140.147039999996 +32 +1400.60941352256 +13 +67.085435774237 +23 +-140.147039999996 +33 +1400.60941352256 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +67.085435774237 +20 +-140.147039999996 +30 +1400.60941352256 +11 +47.2361683859592 +21 +-140.147039999997 +31 +1491.87386953442 +12 +60.1201784885382 +22 +-140.147039999997 +32 +1502.4475273507 +13 +60.1201784885382 +23 +-140.147039999997 +33 +1502.4475273507 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +67.085435774237 +20 +-140.147039999996 +30 +1400.60941352256 +11 +60.1201784885382 +21 +-140.147039999997 +31 +1502.4475273507 +12 +70.6938076414472 +22 +-140.147039999997 +32 +1515.3315609767 +13 +70.6938076414472 +23 +-140.147039999997 +33 +1515.3315609767 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +67.085435774237 +20 +-140.147039999996 +30 +1400.60941352256 +11 +70.6938076414472 +21 +-140.147039999997 +31 +1515.3315609767 +12 +97.3928598817289 +22 +-140.147039999996 +32 +1416.80909223683 +13 +97.3928598817289 +23 +-140.147039999996 +33 +1416.80909223683 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +97.3928598817289 +20 +-140.147039999996 +30 +1416.80909223683 +11 +70.6938076414472 +21 +-140.147039999997 +31 +1515.3315609767 +12 +78.5507172060996 +22 +-140.147039999997 +32 +1530.03084422563 +13 +78.5507172060996 +23 +-140.147039999997 +33 +1530.03084422563 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +97.3928598817289 +20 +-140.147039999996 +30 +1416.80909223683 +11 +78.5507172060996 +21 +-140.147039999997 +31 +1530.03084422563 +12 +83.3889705541313 +22 +-140.147039999997 +32 +1545.98049188567 +13 +83.3889705541313 +23 +-140.147039999997 +33 +1545.98049188567 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +97.3928598817289 +20 +-140.147039999996 +30 +1416.80909223683 +11 +83.3889705541313 +21 +-140.147039999997 +31 +1545.98049188567 +12 +85.0226363227013 +22 +-140.147039999998 +32 +1562.56756794192 +13 +85.0226363227013 +23 +-140.147039999998 +33 +1562.56756794192 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +97.3928598817289 +20 +-140.147039999996 +30 +1416.80909223683 +11 +85.0226363227013 +21 +-140.147039999998 +31 +1562.56756794192 +12 +97.3926876122757 +22 +-140.147039999999 +32 +1708.32596960222 +13 +97.3926876122757 +23 +-140.147039999999 +33 +1708.32596960222 +70 +15 + 0 +3DFACE + 8 +rotator_half +10 +97.3928598817289 +20 +-140.147039999996 +30 +1416.80909223683 +11 +97.3926876122757 +21 +-140.147039999999 +31 +1708.32596960222 +12 +123.957388293244 +22 +-140.147039999999 +32 +1686.52490943976 +13 +123.957388293244 +23 +-140.147039999999 +33 +1686.52490943976 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +97.3928598817289 +20 +-140.147039999996 +30 +1416.80909223683 +11 +123.957388293244 +21 +-140.147039999999 +31 +1686.52490943976 +12 +123.957534796371 +22 +-140.147039999996 +32 +1438.61018379565 +13 +123.957534796371 +23 +-140.147039999996 +33 +1438.61018379565 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +123.957534796371 +20 +-140.147039999996 +30 +1438.61018379565 +11 +123.957388293244 +21 +-140.147039999999 +31 +1686.52490943976 +12 +145.758479852067 +22 +-140.147039999998 +32 +1659.96023452511 +13 +145.758479852067 +23 +-140.147039999998 +33 +1659.96023452511 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +123.957534796371 +20 +-140.147039999996 +30 +1438.61018379565 +11 +145.758479852067 +21 +-140.147039999998 +31 +1659.96023452511 +12 +145.758594958835 +22 +-140.147039999996 +32 +1465.17488447662 +13 +145.758594958835 +23 +-140.147039999996 +33 +1465.17488447662 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +145.758594958835 +20 +-140.147039999996 +30 +1465.17488447662 +11 +145.758479852067 +21 +-140.147039999998 +31 +1659.96023452511 +12 +161.958158566332 +22 +-140.147039999998 +32 +1629.65281041762 +13 +161.958158566332 +23 +-140.147039999998 +33 +1629.65281041762 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +145.758594958835 +20 +-140.147039999996 +30 +1465.17488447662 +11 +161.958158566332 +21 +-140.147039999998 +31 +1629.65281041762 +12 +161.958237853253 +22 +-140.147039999996 +32 +1495.48232773022 +13 +161.958237853253 +23 +-140.147039999996 +33 +1495.48232773022 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +161.958237853253 +20 +-140.147039999996 +30 +1495.48232773022 +11 +161.958158566332 +21 +-140.147039999998 +31 +1629.65281041762 +12 +171.933879867935 +22 +-140.147039999998 +32 +1596.76733442913 +13 +171.933879867935 +23 +-140.147039999998 +33 +1596.76733442913 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +161.958237853253 +20 +-140.147039999996 +30 +1495.48232773022 +11 +171.933879867935 +21 +-140.147039999998 +31 +1596.76733442913 +12 +171.933920288057 +22 +-140.147039999997 +32 +1528.36781550882 +13 +171.933920288057 +23 +-140.147039999997 +33 +1528.36781550882 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +171.933920288057 +20 +-140.147039999997 +30 +1528.36781550882 +11 +171.933879867935 +21 +-140.147039999998 +31 +1596.76733442913 +12 +175.302282381704 +22 +-140.147039999997 +32 +1562.56757695949 +13 +175.302282381704 +23 +-140.147039999997 +33 +1562.56757695949 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5367051710078 +20 +-140.14704 +30 +1641.11801946432 +11 +-27.4505026299636 +21 +-140.14704 +31 +1670.04601633937 +12 +-16.5870682747775 +22 +-140.14704 +32 +1645.95630829588 +13 +-16.5870682747775 +23 +-140.14704 +33 +1645.95630829588 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-27.4505026299636 +20 +-140.14704 +30 +1670.04601633937 +11 +-32.5367051710078 +21 +-140.14704 +31 +1641.11801946432 +12 +-29.7122224515915 +22 +-140.14704 +32 +1681.41639731326 +13 +-29.7122224515915 +23 +-140.14704 +33 +1681.41639731326 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747775 +20 +-140.14704 +30 +1645.95630829588 +11 +-27.4505026299636 +21 +-140.14704 +31 +1670.04601633937 +12 +-21.0096895600991 +22 +-140.14704 +32 +1660.40667678512 +13 +-21.0096895600991 +23 +-140.14704 +33 +1660.40667678512 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747775 +20 +-140.14704 +30 +1645.95630829588 +11 +-21.0096895600991 +21 +-140.14704 +31 +1660.40667678512 +12 +-11.370338645769 +22 +-140.14704 +32 +1653.96588071683 +13 +-11.370338645769 +23 +-140.14704 +33 +1653.96588071683 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747775 +20 +-140.14704 +30 +1645.95630829588 +11 +-11.370338645769 +21 +-140.14704 +31 +1653.96588071683 +12 +4.14697744393067e-06 +22 +-140.147039999999 +32 +1647.59001096608 +13 +4.14697744393067e-06 +23 +-140.147039999999 +33 +1647.59001096608 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +4.14697744393067e-06 +20 +-140.147039999999 +30 +1647.59001096608 +11 +-11.370338645769 +21 +-140.14704 +31 +1653.96588071683 +12 +4.63172537816581e-05 +22 +-140.14704 +32 +1651.70418094992 +13 +4.63172537816581e-05 +23 +-140.14704 +33 +1651.70418094992 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +4.14697744393067e-06 +20 +-140.147039999999 +30 +1647.59001096608 +11 +4.63172537816581e-05 +21 +-140.14704 +31 +1651.70418094992 +12 +16.5870802032265 +22 +-140.147039999999 +32 +1645.95634519751 +13 +16.5870802032265 +23 +-140.147039999999 +33 +1645.95634519751 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +16.5870802032265 +20 +-140.147039999999 +30 +1645.95634519751 +11 +4.63172537816581e-05 +21 +-140.14704 +31 +1651.70418094992 +12 +11.3704272911452 +22 +-140.14704 +32 +1653.96590077155 +13 +11.3704272911452 +23 +-140.14704 +33 +1653.96590077155 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +16.5870802032265 +20 +-140.147039999999 +30 +1645.95634519751 +11 +11.3704272911452 +21 +-140.14704 +31 +1653.96590077155 +12 +21.0097668453905 +22 +-140.14704 +32 +1660.40671384141 +13 +21.0097668453905 +23 +-140.14704 +33 +1660.40671384141 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +16.5870802032265 +20 +-140.147039999999 +30 +1645.95634519751 +11 +21.0097668453905 +21 +-140.14704 +31 +1660.40671384141 +12 +32.5367278632675 +22 +-140.147039999999 +32 +1641.11809184948 +13 +32.5367278632675 +23 +-140.147039999999 +33 +1641.11809184948 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632675 +20 +-140.147039999999 +30 +1641.11809184948 +11 +21.0097668453905 +21 +-140.14704 +31 +1660.40671384141 +12 +27.4505629136866 +22 +-140.14704 +32 +1670.04606475574 +13 +27.4505629136866 +23 +-140.14704 +33 +1670.04606475574 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632675 +20 +-140.147039999999 +30 +1641.11809184948 +11 +27.4505629136866 +21 +-140.14704 +31 +1670.04606475574 +12 +29.712262680597 +22 +-140.14704 +32 +1681.41644971876 +13 +29.712262680597 +23 +-140.14704 +33 +1681.41644971876 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-34.1997623402384 +20 +-140.147040000001 +30 +1734.50125451132 +11 +-4.87059913788501e-06 +21 +-327.009760000001 +31 +1737.86965702509 +12 +-4.87060060567757e-06 +22 +-140.14704 +32 +1737.86965702509 +13 +-4.87060060567757e-06 +23 +-140.14704 +33 +1737.86965702509 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-4.87059913788501e-06 +20 +-327.009760000001 +30 +1737.86965702509 +11 +-34.1997623402384 +21 +-140.147040000001 +31 +1734.50125451132 +12 +-34.199762340237 +22 +-327.009760000002 +32 +1734.50125451132 +13 +-34.199762340237 +23 +-327.009760000002 +33 +1734.50125451132 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-70.6935051089646 +20 +-301.609759999999 +30 +1515.33140370293 +11 +-60.1198472926819 +21 +-327.009759999999 +31 +1502.44739360035 +12 +-60.1198472926821 +22 +-301.609759999999 +32 +1502.44739360035 +13 +-60.1198472926821 +23 +-301.609759999999 +33 +1502.44739360035 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-60.1198472926819 +20 +-327.009759999999 +30 +1502.44739360035 +11 +-70.6935051089646 +21 +-301.609759999999 +31 +1515.33140370293 +12 +-70.6935051089644 +22 +-327.009759999999 +32 +1515.33140370293 +13 +-70.6935051089644 +23 +-327.009759999999 +33 +1515.33140370293 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887362069839 +20 +-301.60976 +30 +1545.98030636861 +11 +-83.3887731086215 +21 +-301.60976 +31 +1579.15445484661 +12 +-85.0224388771915 +22 +-301.60976 +32 +1562.56737879036 +13 +-85.0224388771915 +23 +-301.60976 +33 +1562.56737879036 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887731086215 +20 +-301.60976 +30 +1579.15445484661 +11 +-83.3887362069839 +21 +-301.60976 +31 +1545.98030636861 +12 +-78.5505197605897 +22 +-301.60976 +32 +1595.10410250665 +13 +-78.5505197605897 +23 +-301.60976 +33 +1595.10410250665 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-78.5505197605897 +20 +-301.60976 +30 +1595.10410250665 +11 +-83.3887362069839 +21 +-301.60976 +31 +1545.98030636861 +12 +-78.5504473754239 +22 +-301.60976 +32 +1530.03066947238 +13 +-78.5504473754239 +23 +-301.60976 +33 +1530.03066947238 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-78.5505197605897 +20 +-301.60976 +30 +1595.10410250665 +11 +-78.5504473754239 +21 +-301.60976 +31 +1530.03066947238 +12 +-70.6936101959373 +22 +-301.60976 +32 +1609.80338575557 +13 +-70.6936101959373 +23 +-301.60976 +33 +1609.80338575557 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-70.6936101959373 +20 +-301.60976 +30 +1609.80338575557 +11 +-78.5504473754239 +21 +-301.60976 +31 +1530.03066947238 +12 +-70.6935051089646 +22 +-301.609759999999 +32 +1515.33140370293 +13 +-70.6935051089646 +23 +-301.609759999999 +33 +1515.33140370293 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-70.6936101959373 +20 +-301.60976 +30 +1609.80338575557 +11 +-70.6935051089646 +21 +-301.609759999999 +31 +1515.33140370293 +12 +-60.1199810430283 +22 +-301.609760000001 +32 +1622.68741938157 +13 +-60.1199810430283 +23 +-301.609760000001 +33 +1622.68741938157 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-60.1199810430283 +20 +-301.609760000001 +30 +1622.68741938157 +11 +-70.6935051089646 +21 +-301.609759999999 +31 +1515.33140370293 +12 +-60.1198472926821 +22 +-301.609759999999 +32 +1502.44739360035 +13 +-60.1198472926821 +23 +-301.609759999999 +33 +1502.44739360035 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-60.1199810430283 +20 +-301.609760000001 +30 +1622.68741938157 +11 +-60.1198472926821 +21 +-301.609759999999 +31 +1502.44739360035 +12 +-47.2359709404494 +22 +-301.609760000001 +32 +1633.26107719786 +13 +-47.2359709404494 +23 +-301.609760000001 +33 +1633.26107719786 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-47.2359709404494 +20 +-301.609760000001 +30 +1633.26107719786 +11 +-60.1198472926821 +21 +-301.609759999999 +31 +1502.44739360035 +12 +-47.2358136666804 +22 +-301.609759999999 +32 +1491.87376444745 +13 +-47.2358136666804 +23 +-301.609759999999 +33 +1491.87376444745 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-47.2359709404494 +20 +-301.609760000001 +30 +1633.26107719786 +11 +-47.2358136666804 +21 +-301.609759999999 +31 +1491.87376444745 +12 +-32.5367051710066 +22 +-301.609760000001 +32 +1641.11801946432 +13 +-32.5367051710066 +23 +-301.609760000001 +33 +1641.11801946432 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-32.5367051710066 +20 +-301.609760000001 +30 +1641.11801946432 +11 +-47.2358136666804 +21 +-301.609759999999 +31 +1491.87376444745 +12 +-32.5365304177576 +22 +-301.609759999999 +32 +1484.01685488279 +13 +-32.5365304177576 +23 +-301.609759999999 +33 +1484.01685488279 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-32.5367051710066 +20 +-301.609760000001 +30 +1641.11801946432 +11 +-32.5365304177576 +21 +-301.609759999999 +31 +1484.01685488279 +12 +-16.5870682747763 +22 +-301.60976 +32 +1645.95630829588 +13 +-16.5870682747763 +23 +-301.60976 +33 +1645.95630829588 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747763 +20 +-301.60976 +30 +1645.95630829588 +11 +-32.5365304177576 +21 +-301.609759999999 +31 +1484.01685488279 +12 +-16.5868827577167 +22 +-301.609759999998 +32 +1479.17860153476 +13 +-16.5868827577167 +23 +-301.609759999998 +33 +1479.17860153476 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747763 +20 +-301.60976 +30 +1645.95630829588 +11 +-16.5868827577167 +21 +-301.609759999998 +31 +1479.17860153476 +12 +4.14697870727565e-06 +22 +-301.60976 +32 +1647.59001096608 +13 +4.14697870727565e-06 +23 +-301.60976 +33 +1647.59001096608 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +4.14697870727565e-06 +20 +-301.60976 +30 +1647.59001096608 +11 +-16.5868827577167 +21 +-301.609759999998 +31 +1479.17860153476 +12 +0.000193298532362707 +22 +-301.609759999998 +32 +1477.54493576619 +13 +0.000193298532362707 +23 +-301.609759999998 +33 +1477.54493576619 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +4.14697870727565e-06 +20 +-301.60976 +30 +1647.59001096608 +11 +0.000193298532362707 +21 +-301.609759999998 +31 +1477.54493576619 +12 +16.5870802032278 +22 +-301.60976 +32 +1645.95634519751 +13 +16.5870802032278 +23 +-301.60976 +33 +1645.95634519751 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +16.5870802032278 +20 +-301.60976 +30 +1645.95634519751 +11 +0.000193298532362707 +21 +-301.609759999998 +31 +1477.54493576619 +12 +16.5872657202874 +22 +-301.609759999998 +32 +1479.1786384364 +13 +16.5872657202874 +23 +-301.609759999998 +33 +1479.1786384364 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +16.5870802032278 +20 +-301.60976 +30 +1645.95634519751 +11 +16.5872657202874 +21 +-301.609759999998 +31 +1479.1786384364 +12 +32.5367278632687 +22 +-301.60976 +32 +1641.11809184948 +13 +32.5367278632687 +23 +-301.60976 +33 +1641.11809184948 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632687 +20 +-301.60976 +30 +1641.11809184948 +11 +16.5872657202874 +21 +-301.609759999998 +31 +1479.1786384364 +12 +32.5369026165177 +22 +-301.609759999998 +32 +1484.01692726796 +13 +32.5369026165177 +23 +-301.609759999998 +33 +1484.01692726796 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632687 +20 +-301.60976 +30 +1641.11809184948 +11 +32.5369026165177 +21 +-301.609759999998 +31 +1484.01692726796 +12 +47.2360111121915 +22 +-301.60976 +32 +1633.26118228483 +13 +47.2360111121915 +23 +-301.60976 +33 +1633.26118228483 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +47.2360111121915 +20 +-301.60976 +30 +1633.26118228483 +11 +32.5369026165177 +21 +-301.609759999998 +31 +1484.01692726796 +12 +47.2361683859605 +22 +-301.609759999998 +32 +1491.87386953442 +13 +47.2361683859605 +23 +-301.609759999998 +33 +1491.87386953442 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +47.2360111121915 +20 +-301.60976 +30 +1633.26118228483 +11 +47.2361683859605 +21 +-301.609759999998 +31 +1491.87386953442 +12 +60.1200447381932 +22 +-301.60976 +32 +1622.68755313192 +13 +60.1200447381932 +23 +-301.60976 +33 +1622.68755313192 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +60.1200447381932 +20 +-301.60976 +30 +1622.68755313192 +11 +47.2361683859605 +21 +-301.609759999998 +31 +1491.87386953442 +12 +60.1201784885394 +22 +-301.609759999998 +32 +1502.4475273507 +13 +60.1201784885394 +23 +-301.609759999998 +33 +1502.4475273507 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +60.1200447381932 +20 +-301.60976 +30 +1622.68755313192 +11 +60.1201784885394 +21 +-301.609759999998 +31 +1502.4475273507 +12 +70.6937025544757 +22 +-301.609759999999 +32 +1609.80354302934 +13 +70.6937025544757 +23 +-301.609759999999 +33 +1609.80354302934 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +70.6937025544757 +20 +-301.609759999999 +30 +1609.80354302934 +11 +60.1201784885394 +21 +-301.609759999998 +31 +1502.4475273507 +12 +70.6938076414485 +22 +-301.609759999998 +32 +1515.3315609767 +13 +70.6938076414485 +23 +-301.609759999998 +33 +1515.3315609767 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +70.6937025544757 +20 +-301.609759999999 +30 +1609.80354302934 +11 +70.6938076414485 +21 +-301.609759999998 +31 +1515.3315609767 +12 +78.550644820935 +22 +-301.609759999999 +32 +1595.1042772599 +13 +78.550644820935 +23 +-301.609759999999 +33 +1595.1042772599 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +78.550644820935 +20 +-301.609759999999 +30 +1595.1042772599 +11 +70.6938076414485 +21 +-301.609759999998 +31 +1515.3315609767 +12 +78.5507172061008 +22 +-301.609759999998 +32 +1530.03084422562 +13 +78.5507172061008 +23 +-301.609759999998 +33 +1530.03084422562 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +78.550644820935 +20 +-301.609759999999 +30 +1595.1042772599 +11 +78.5507172061008 +21 +-301.609759999998 +31 +1530.03084422562 +12 +83.388933652495 +22 +-301.609759999999 +32 +1579.15464036367 +13 +83.388933652495 +23 +-301.609759999999 +33 +1579.15464036367 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +83.388933652495 +20 +-301.609759999999 +30 +1579.15464036367 +11 +78.5507172061008 +21 +-301.609759999998 +31 +1530.03084422562 +12 +83.3889705541326 +22 +-301.609759999998 +32 +1545.98049188567 +13 +83.3889705541326 +23 +-301.609759999998 +33 +1545.98049188567 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +83.388933652495 +20 +-301.609759999999 +30 +1579.15464036367 +11 +83.3889705541326 +21 +-301.609759999998 +31 +1545.98049188567 +12 +85.0226363227026 +22 +-301.609759999999 +32 +1562.56756794191 +13 +85.0226363227026 +23 +-301.609759999999 +33 +1562.56756794191 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887362069839 +20 +-301.60976 +30 +1545.98030636861 +11 +-78.5504473754237 +21 +-327.00976 +31 +1530.03066947238 +12 +-78.5504473754239 +22 +-301.60976 +32 +1530.03066947238 +13 +-78.5504473754239 +23 +-301.60976 +33 +1530.03066947238 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-78.5504473754237 +20 +-327.00976 +30 +1530.03066947238 +11 +-83.3887362069839 +21 +-301.60976 +31 +1545.98030636861 +12 +-83.3887362069838 +22 +-327.00976 +32 +1545.98030636861 +13 +-83.3887362069838 +23 +-327.00976 +33 +1545.98030636861 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-47.2359709404492 +20 +-327.009760000001 +30 +1633.26107719786 +11 +-60.1199810430283 +21 +-301.609760000001 +31 +1622.68741938157 +12 +-47.2359709404494 +22 +-301.609760000001 +32 +1633.26107719786 +13 +-47.2359709404494 +23 +-301.609760000001 +33 +1633.26107719786 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-60.1199810430283 +20 +-301.609760000001 +30 +1622.68741938157 +11 +-47.2359709404492 +21 +-327.009760000001 +31 +1633.26107719786 +12 +-60.1199810430281 +22 +-327.009760000001 +32 +1622.68741938157 +13 +-60.1199810430281 +23 +-327.009760000001 +33 +1622.68741938157 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-85.0224388771915 +20 +-301.60976 +30 +1562.56737879036 +11 +-83.3887362069838 +21 +-327.00976 +31 +1545.98030636861 +12 +-83.3887362069839 +22 +-301.60976 +32 +1545.98030636861 +13 +-83.3887362069839 +23 +-301.60976 +33 +1545.98030636861 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887362069838 +20 +-327.00976 +30 +1545.98030636861 +11 +-85.0224388771915 +21 +-301.60976 +31 +1562.56737879036 +12 +-85.0224388771913 +22 +-327.00976 +32 +1562.56737879036 +13 +-85.0224388771913 +23 +-327.00976 +33 +1562.56737879036 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5367051710064 +20 +-327.009760000001 +30 +1641.11801946432 +11 +-47.2359709404494 +21 +-301.609760000001 +31 +1633.26107719786 +12 +-32.5367051710066 +22 +-301.609760000001 +32 +1641.11801946432 +13 +-32.5367051710066 +23 +-301.609760000001 +33 +1641.11801946432 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-47.2359709404494 +20 +-301.609760000001 +30 +1633.26107719786 +11 +-32.5367051710064 +21 +-327.009760000001 +31 +1641.11801946432 +12 +-47.2359709404492 +22 +-327.009760000001 +32 +1633.26107719786 +13 +-47.2359709404492 +23 +-327.009760000001 +33 +1633.26107719786 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-78.5505197605897 +20 +-301.60976 +30 +1595.10410250665 +11 +-83.3887731086213 +21 +-327.00976 +31 +1579.15445484661 +12 +-83.3887731086215 +22 +-301.60976 +32 +1579.15445484661 +13 +-83.3887731086215 +23 +-301.60976 +33 +1579.15445484661 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887731086213 +20 +-327.00976 +30 +1579.15445484661 +11 +-78.5505197605897 +21 +-301.60976 +31 +1595.10410250665 +12 +-78.5505197605895 +22 +-327.00976 +32 +1595.10410250665 +13 +-78.5505197605895 +23 +-327.00976 +33 +1595.10410250665 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +47.2361683859594 +20 +-165.547039999997 +30 +1491.87386953442 +11 +60.1201784885382 +21 +-140.147039999997 +31 +1502.4475273507 +12 +47.2361683859592 +22 +-140.147039999997 +32 +1491.87386953442 +13 +47.2361683859592 +23 +-140.147039999997 +33 +1491.87386953442 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +60.1201784885382 +20 +-140.147039999997 +30 +1502.4475273507 +11 +47.2361683859594 +21 +-165.547039999997 +31 +1491.87386953442 +12 +60.1201784885383 +22 +-165.547039999997 +32 +1502.4475273507 +13 +60.1201784885383 +23 +-165.547039999997 +33 +1502.4475273507 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +60.1201784885383 +20 +-165.547039999997 +30 +1502.4475273507 +11 +70.6938076414472 +21 +-140.147039999997 +31 +1515.3315609767 +12 +60.1201784885382 +22 +-140.147039999997 +32 +1502.4475273507 +13 +60.1201784885382 +23 +-140.147039999997 +33 +1502.4475273507 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +70.6938076414472 +20 +-140.147039999997 +30 +1515.3315609767 +11 +60.1201784885383 +21 +-165.547039999997 +31 +1502.4475273507 +12 +70.6938076414473 +22 +-165.547039999997 +32 +1515.3315609767 +13 +70.6938076414473 +23 +-165.547039999997 +33 +1515.3315609767 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +70.6938076414473 +20 +-165.547039999997 +30 +1515.3315609767 +11 +78.5507172060996 +21 +-140.147039999997 +31 +1530.03084422563 +12 +70.6938076414472 +22 +-140.147039999997 +32 +1515.3315609767 +13 +70.6938076414472 +23 +-140.147039999997 +33 +1515.3315609767 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +78.5507172060996 +20 +-140.147039999997 +30 +1530.03084422563 +11 +70.6938076414473 +21 +-165.547039999997 +31 +1515.3315609767 +12 +78.5507172060997 +22 +-165.547039999997 +32 +1530.03084422563 +13 +78.5507172060997 +23 +-165.547039999997 +33 +1530.03084422563 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-97.3924901667657 +20 +-327.009759999998 +30 +1416.80897713006 +11 +-83.3887362069838 +21 +-327.00976 +31 +1545.98030636861 +12 +-85.0224388771913 +22 +-327.00976 +32 +1562.56737879036 +13 +-85.0224388771913 +23 +-327.00976 +33 +1562.56737879036 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887362069838 +20 +-327.00976 +30 +1545.98030636861 +11 +-97.3924901667657 +21 +-327.009759999998 +31 +1416.80897713006 +12 +-67.0850469131664 +22 +-327.009759999998 +32 +1400.60933423564 +13 +-67.0850469131664 +23 +-327.009759999998 +33 +1400.60933423564 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887362069838 +20 +-327.00976 +30 +1545.98030636861 +11 +-67.0850469131664 +21 +-327.009759999998 +31 +1400.60933423564 +12 +-78.5504473754237 +22 +-327.00976 +32 +1530.03066947238 +13 +-78.5504473754237 +23 +-327.00976 +33 +1530.03066947238 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-78.5504473754237 +20 +-327.00976 +30 +1530.03066947238 +11 +-67.0850469131664 +21 +-327.009759999998 +31 +1400.60933423564 +12 +-70.6935051089644 +22 +-327.009759999999 +32 +1515.33140370293 +13 +-70.6935051089644 +23 +-327.009759999999 +33 +1515.33140370293 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-70.6935051089644 +20 +-327.009759999999 +30 +1515.33140370293 +11 +-67.0850469131664 +21 +-327.009759999998 +31 +1400.60933423564 +12 +-60.1198472926819 +22 +-327.009759999999 +32 +1502.44739360035 +13 +-60.1198472926819 +23 +-327.009759999999 +33 +1502.44739360035 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-60.1198472926819 +20 +-327.009759999999 +30 +1502.44739360035 +11 +-67.0850469131664 +21 +-327.009759999998 +31 +1400.60933423564 +12 +-34.1995591345617 +22 +-327.009759999998 +32 +1390.63365180083 +13 +-34.1995591345617 +23 +-327.009759999998 +33 +1390.63365180083 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-60.1198472926819 +20 +-327.009759999999 +30 +1502.44739360035 +11 +-34.1995591345617 +21 +-327.009759999998 +31 +1390.63365180083 +12 +-47.2358136666802 +22 +-327.009759999999 +32 +1491.87376444745 +13 +-47.2358136666802 +23 +-327.009759999999 +33 +1491.87376444745 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-47.2358136666802 +20 +-327.009759999999 +30 +1491.87376444745 +11 +-34.1995591345617 +21 +-327.009759999998 +31 +1390.63365180083 +12 +-32.5365304177574 +22 +-327.009759999999 +32 +1484.01685488279 +13 +-32.5365304177574 +23 +-327.009759999999 +33 +1484.01685488279 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-32.5365304177574 +20 +-327.009759999999 +30 +1484.01685488279 +11 +-34.1995591345617 +21 +-327.009759999998 +31 +1390.63365180083 +12 +0.000202316110637912 +22 +-327.009759999997 +32 +1387.26528970719 +13 +0.000202316110637912 +23 +-327.009759999997 +33 +1387.26528970719 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-32.5365304177574 +20 +-327.009759999999 +30 +1484.01685488279 +11 +0.000202316110637912 +21 +-327.009759999997 +31 +1387.26528970719 +12 +-16.5868827577165 +22 +-327.009759999998 +32 +1479.17860153476 +13 +-16.5868827577165 +23 +-327.009759999998 +33 +1479.17860153476 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-16.5868827577165 +20 +-327.009759999998 +30 +1479.17860153476 +11 +0.000202316110637912 +21 +-327.009759999997 +31 +1387.26528970719 +12 +0.000193298532564334 +22 +-327.009759999998 +32 +1477.54493576619 +13 +0.000193298532564334 +23 +-327.009759999998 +33 +1477.54493576619 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +0.000193298532564334 +20 +-327.009759999998 +30 +1477.54493576619 +11 +0.000202316110637912 +21 +-327.009759999997 +31 +1387.26528970719 +12 +16.5872657202876 +22 +-327.009759999998 +32 +1479.1786384364 +13 +16.5872657202876 +23 +-327.009759999998 +33 +1479.1786384364 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +16.5872657202876 +20 +-327.009759999998 +30 +1479.1786384364 +11 +0.000202316110637912 +21 +-327.009759999997 +31 +1387.26528970719 +12 +34.1999597857484 +22 +-327.009759999997 +32 +1390.63369222096 +13 +34.1999597857484 +23 +-327.009759999997 +33 +1390.63369222096 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +16.5872657202876 +20 +-327.009759999998 +30 +1479.1786384364 +11 +34.1999597857484 +21 +-327.009759999997 +31 +1390.63369222096 +12 +32.5369026165179 +22 +-327.009759999998 +32 +1484.01692726796 +13 +32.5369026165179 +23 +-327.009759999998 +33 +1484.01692726796 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +32.5369026165179 +20 +-327.009759999998 +30 +1484.01692726796 +11 +34.1999597857484 +21 +-327.009759999997 +31 +1390.63369222096 +12 +47.2361683859607 +22 +-327.009759999998 +32 +1491.87386953442 +13 +47.2361683859607 +23 +-327.009759999998 +33 +1491.87386953442 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +47.2361683859607 +20 +-327.009759999998 +30 +1491.87386953442 +11 +34.1999597857484 +21 +-327.009759999997 +31 +1390.63369222096 +12 +67.0854357742384 +22 +-327.009759999997 +32 +1400.60941352256 +13 +67.0854357742384 +23 +-327.009759999997 +33 +1400.60941352256 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +47.2361683859607 +20 +-327.009759999998 +30 +1491.87386953442 +11 +67.0854357742384 +21 +-327.009759999997 +31 +1400.60941352256 +12 +60.1201784885396 +22 +-327.009759999998 +32 +1502.4475273507 +13 +60.1201784885396 +23 +-327.009759999998 +33 +1502.4475273507 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +60.1201784885396 +20 +-327.009759999998 +30 +1502.4475273507 +11 +67.0854357742384 +21 +-327.009759999997 +31 +1400.60941352256 +12 +70.6938076414486 +22 +-327.009759999998 +32 +1515.3315609767 +13 +70.6938076414486 +23 +-327.009759999998 +33 +1515.3315609767 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +70.6938076414486 +20 +-327.009759999998 +30 +1515.3315609767 +11 +67.0854357742384 +21 +-327.009759999997 +31 +1400.60941352256 +12 +97.3928598817304 +22 +-327.009759999997 +32 +1416.80909223683 +13 +97.3928598817304 +23 +-327.009759999997 +33 +1416.80909223683 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +70.6938076414486 +20 +-327.009759999998 +30 +1515.3315609767 +11 +97.3928598817304 +21 +-327.009759999997 +31 +1416.80909223683 +12 +78.550717206101 +22 +-327.009759999998 +32 +1530.03084422562 +13 +78.550717206101 +23 +-327.009759999998 +33 +1530.03084422562 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +78.550717206101 +20 +-327.009759999998 +30 +1530.03084422562 +11 +97.3928598817304 +21 +-327.009759999997 +31 +1416.80909223683 +12 +83.3889705541327 +22 +-327.009759999998 +32 +1545.98049188567 +13 +83.3889705541327 +23 +-327.009759999998 +33 +1545.98049188567 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +83.3889705541327 +20 +-327.009759999998 +30 +1545.98049188567 +11 +97.3928598817304 +21 +-327.009759999997 +31 +1416.80909223683 +12 +85.0226363227028 +22 +-327.009759999999 +32 +1562.56756794191 +13 +85.0226363227028 +23 +-327.009759999999 +33 +1562.56756794191 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +85.0226363227028 +20 +-327.009759999999 +30 +1562.56756794191 +11 +97.3928598817304 +21 +-327.009759999997 +31 +1416.80909223683 +12 +97.3926876122771 +22 +-327.00976 +32 +1708.32596960222 +13 +97.3926876122771 +23 +-327.00976 +33 +1708.32596960222 +70 +15 + 0 +3DFACE + 8 +rotator_half +10 +97.3926876122771 +20 +-327.00976 +30 +1708.32596960222 +11 +97.3928598817304 +21 +-327.009759999997 +31 +1416.80909223683 +12 +123.957388293245 +22 +-327.00976 +32 +1686.52490943975 +13 +123.957388293245 +23 +-327.00976 +33 +1686.52490943975 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +123.957388293245 +20 +-327.00976 +30 +1686.52490943975 +11 +97.3928598817304 +21 +-327.009759999997 +31 +1416.80909223683 +12 +123.957534796373 +22 +-327.009759999997 +32 +1438.61018379565 +13 +123.957534796373 +23 +-327.009759999997 +33 +1438.61018379565 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +123.957388293245 +20 +-327.00976 +30 +1686.52490943975 +11 +123.957534796373 +21 +-327.009759999997 +31 +1438.61018379565 +12 +145.758479852068 +22 +-327.009759999999 +32 +1659.96023452511 +13 +145.758479852068 +23 +-327.009759999999 +33 +1659.96023452511 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +145.758479852068 +20 +-327.009759999999 +30 +1659.96023452511 +11 +123.957534796373 +21 +-327.009759999997 +31 +1438.61018379565 +12 +145.758594958837 +22 +-327.009759999997 +32 +1465.17488447662 +13 +145.758594958837 +23 +-327.009759999997 +33 +1465.17488447662 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +145.758479852068 +20 +-327.009759999999 +30 +1659.96023452511 +11 +145.758594958837 +21 +-327.009759999997 +31 +1465.17488447662 +12 +161.958158566334 +22 +-327.009759999999 +32 +1629.65281041762 +13 +161.958158566334 +23 +-327.009759999999 +33 +1629.65281041762 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +161.958158566334 +20 +-327.009759999999 +30 +1629.65281041762 +11 +145.758594958837 +21 +-327.009759999997 +31 +1465.17488447662 +12 +161.958237853255 +22 +-327.009759999997 +32 +1495.48232773022 +13 +161.958237853255 +23 +-327.009759999997 +33 +1495.48232773022 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +161.958158566334 +20 +-327.009759999999 +30 +1629.65281041762 +11 +161.958237853255 +21 +-327.009759999997 +31 +1495.48232773022 +12 +171.933879867937 +22 +-327.009759999998 +32 +1596.76733442913 +13 +171.933879867937 +23 +-327.009759999998 +33 +1596.76733442913 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +171.933879867937 +20 +-327.009759999998 +30 +1596.76733442913 +11 +161.958237853255 +21 +-327.009759999997 +31 +1495.48232773022 +12 +171.933920288059 +22 +-327.009759999998 +32 +1528.36781550882 +13 +171.933920288059 +23 +-327.009759999998 +33 +1528.36781550882 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +171.933879867937 +20 +-327.009759999998 +30 +1596.76733442913 +11 +171.933920288059 +21 +-327.009759999998 +31 +1528.36781550882 +12 +175.302282381706 +22 +-327.009759999998 +32 +1562.56757695949 +13 +175.302282381706 +23 +-327.009759999998 +33 +1562.56757695949 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-171.933682422425 +20 +-327.00976 +30 +1528.36761230315 +11 +-171.933722842547 +21 +-327.009760000001 +31 +1596.76713122345 +12 +-175.302084936194 +22 +-327.009760000001 +32 +1562.56736977278 +13 +-175.302084936194 +23 +-327.009760000001 +33 +1562.56736977278 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-171.933722842547 +20 +-327.009760000001 +30 +1596.76713122345 +11 +-171.933682422425 +21 +-327.00976 +31 +1528.36761230315 +12 +-161.958040407743 +22 +-327.009760000001 +32 +1629.65261900206 +13 +-161.958040407743 +23 +-327.009760000001 +33 +1629.65261900206 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-161.958040407743 +20 +-327.009760000001 +30 +1629.65261900206 +11 +-171.933682422425 +21 +-327.00976 +31 +1528.36761230315 +12 +-161.957961120822 +22 +-327.00976 +32 +1495.48213631465 +13 +-161.957961120822 +23 +-327.00976 +33 +1495.48213631465 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-161.958040407743 +20 +-327.009760000001 +30 +1629.65261900206 +11 +-161.957961120822 +21 +-327.00976 +31 +1495.48213631465 +12 +-145.758397513325 +22 +-327.009760000002 +32 +1659.96006225566 +13 +-145.758397513325 +23 +-327.009760000002 +33 +1659.96006225566 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-145.758397513325 +20 +-327.009760000002 +30 +1659.96006225566 +11 +-161.957961120822 +21 +-327.00976 +31 +1495.48213631465 +12 +-145.758282406557 +22 +-327.009759999999 +32 +1465.17471220716 +13 +-145.758282406557 +23 +-327.009759999999 +33 +1465.17471220716 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-145.758397513325 +20 +-327.009760000002 +30 +1659.96006225566 +11 +-145.758282406557 +21 +-327.009759999999 +31 +1465.17471220716 +12 +-123.957337350861 +22 +-327.009760000002 +32 +1686.52476293663 +13 +-123.957337350861 +23 +-327.009760000002 +33 +1686.52476293663 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-123.957337350861 +20 +-327.009760000002 +30 +1686.52476293663 +11 +-145.758282406557 +21 +-327.009759999999 +31 +1465.17471220716 +12 +-123.957190847734 +22 +-327.009759999999 +32 +1438.61003729252 +13 +-123.957190847734 +23 +-327.009759999999 +33 +1438.61003729252 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-123.957337350861 +20 +-327.009760000002 +30 +1686.52476293663 +11 +-123.957190847734 +21 +-327.009759999999 +31 +1438.61003729252 +12 +-97.3926624362189 +22 +-327.009760000002 +32 +1708.32585449545 +13 +-97.3926624362189 +23 +-327.009760000002 +33 +1708.32585449545 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-97.3926624362189 +20 +-327.009760000002 +30 +1708.32585449545 +11 +-123.957190847734 +21 +-327.009759999999 +31 +1438.61003729252 +12 +-97.3924901667657 +22 +-327.009759999998 +32 +1416.80897713006 +13 +-97.3924901667657 +23 +-327.009759999998 +33 +1416.80897713006 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-97.3926624362189 +20 +-327.009760000002 +30 +1708.32585449545 +11 +-97.3924901667657 +21 +-327.009759999998 +31 +1416.80897713006 +12 +-85.0224388771913 +22 +-327.00976 +32 +1562.56737879036 +13 +-85.0224388771913 +23 +-327.00976 +33 +1562.56737879036 +70 +15 + 0 +3DFACE + 8 +rotator_half +10 +-97.3926624362189 +20 +-327.009760000002 +30 +1708.32585449545 +11 +-85.0224388771913 +21 +-327.00976 +31 +1562.56737879036 +12 +-83.3887731086213 +22 +-327.00976 +32 +1579.15445484661 +13 +-83.3887731086213 +23 +-327.00976 +33 +1579.15445484661 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-97.3926624362189 +20 +-327.009760000002 +30 +1708.32585449545 +11 +-83.3887731086213 +21 +-327.00976 +31 +1579.15445484661 +12 +-67.085238328727 +22 +-327.009760000002 +32 +1724.52553320972 +13 +-67.085238328727 +23 +-327.009760000002 +33 +1724.52553320972 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-67.085238328727 +20 +-327.009760000002 +30 +1724.52553320972 +11 +-83.3887731086213 +21 +-327.00976 +31 +1579.15445484661 +12 +-78.5505197605895 +22 +-327.00976 +32 +1595.10410250665 +13 +-78.5505197605895 +23 +-327.00976 +33 +1595.10410250665 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-67.085238328727 +20 +-327.009760000002 +30 +1724.52553320972 +11 +-78.5505197605895 +21 +-327.00976 +31 +1595.10410250665 +12 +-70.6936101959371 +22 +-327.00976 +32 +1609.80338575557 +13 +-70.6936101959371 +23 +-327.00976 +33 +1609.80338575557 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-67.085238328727 +20 +-327.009760000002 +30 +1724.52553320972 +11 +-70.6936101959371 +21 +-327.00976 +31 +1609.80338575557 +12 +-60.1199810430281 +22 +-327.009760000001 +32 +1622.68741938157 +13 +-60.1199810430281 +23 +-327.009760000001 +33 +1622.68741938157 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-67.085238328727 +20 +-327.009760000002 +30 +1724.52553320972 +11 +-60.1199810430281 +21 +-327.009760000001 +31 +1622.68741938157 +12 +-34.199762340237 +22 +-327.009760000002 +32 +1734.50125451132 +13 +-34.199762340237 +23 +-327.009760000002 +33 +1734.50125451132 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-34.199762340237 +20 +-327.009760000002 +30 +1734.50125451132 +11 +-60.1199810430281 +21 +-327.009760000001 +31 +1622.68741938157 +12 +-47.2359709404492 +22 +-327.009760000001 +32 +1633.26107719786 +13 +-47.2359709404492 +23 +-327.009760000001 +33 +1633.26107719786 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-34.199762340237 +20 +-327.009760000002 +30 +1734.50125451132 +11 +-47.2359709404492 +21 +-327.009760000001 +31 +1633.26107719786 +12 +-32.5367051710064 +22 +-327.009760000001 +32 +1641.11801946432 +13 +-32.5367051710064 +23 +-327.009760000001 +33 +1641.11801946432 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-34.199762340237 +20 +-327.009760000002 +30 +1734.50125451132 +11 +-32.5367051710064 +21 +-327.009760000001 +31 +1641.11801946432 +12 +-4.87059913788501e-06 +22 +-327.009760000001 +32 +1737.86965702509 +13 +-4.87059913788501e-06 +23 +-327.009760000001 +33 +1737.86965702509 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-4.87059913788501e-06 +20 +-327.009760000001 +30 +1737.86965702509 +11 +-32.5367051710064 +21 +-327.009760000001 +31 +1641.11801946432 +12 +-16.5870682747761 +22 +-327.00976 +32 +1645.95630829588 +13 +-16.5870682747761 +23 +-327.00976 +33 +1645.95630829588 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-4.87059913788501e-06 +20 +-327.009760000001 +30 +1737.86965702509 +11 +-16.5870682747761 +21 +-327.00976 +31 +1645.95630829588 +12 +4.14697891172322e-06 +22 +-327.00976 +32 +1647.59001096608 +13 +4.14697891172322e-06 +23 +-327.00976 +33 +1647.59001096608 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-4.87059913788501e-06 +20 +-327.009760000001 +30 +1737.86965702509 +11 +4.14697891172322e-06 +21 +-327.00976 +31 +1647.59001096608 +12 +34.1997565800732 +22 +-327.009760000001 +32 +1734.50129493144 +13 +34.1997565800732 +23 +-327.009760000001 +33 +1734.50129493144 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +34.1997565800732 +20 +-327.009760000001 +30 +1734.50129493144 +11 +4.14697891172322e-06 +21 +-327.00976 +31 +1647.59001096608 +12 +16.587080203228 +22 +-327.00976 +32 +1645.95634519751 +13 +16.587080203228 +23 +-327.00976 +33 +1645.95634519751 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +34.1997565800732 +20 +-327.009760000001 +30 +1734.50129493144 +11 +16.587080203228 +21 +-327.00976 +31 +1645.95634519751 +12 +32.5367278632689 +22 +-327.00976 +32 +1641.11809184948 +13 +32.5367278632689 +23 +-327.00976 +33 +1641.11809184948 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +34.1997565800732 +20 +-327.009760000001 +30 +1734.50129493144 +11 +32.5367278632689 +21 +-327.00976 +31 +1641.11809184948 +12 +47.2360111121917 +22 +-327.00976 +32 +1633.26118228483 +13 +47.2360111121917 +23 +-327.00976 +33 +1633.26118228483 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +34.1997565800732 +20 +-327.009760000001 +30 +1734.50129493144 +11 +47.2360111121917 +21 +-327.00976 +31 +1633.26118228483 +12 +67.0852443586779 +22 +-327.009760000001 +32 +1724.52561249664 +13 +67.0852443586779 +23 +-327.009760000001 +33 +1724.52561249664 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +67.0852443586779 +20 +-327.009760000001 +30 +1724.52561249664 +11 +47.2360111121917 +21 +-327.00976 +31 +1633.26118228483 +12 +60.1200447381933 +22 +-327.00976 +32 +1622.68755313192 +13 +60.1200447381933 +23 +-327.00976 +33 +1622.68755313192 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +67.0852443586779 +20 +-327.009760000001 +30 +1724.52561249664 +11 +60.1200447381933 +21 +-327.00976 +31 +1622.68755313192 +12 +70.6937025544759 +22 +-327.009759999999 +32 +1609.80354302934 +13 +70.6937025544759 +23 +-327.009759999999 +33 +1609.80354302934 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +67.0852443586779 +20 +-327.009760000001 +30 +1724.52561249664 +11 +70.6937025544759 +21 +-327.009759999999 +31 +1609.80354302934 +12 +97.3926876122771 +22 +-327.00976 +32 +1708.32596960222 +13 +97.3926876122771 +23 +-327.00976 +33 +1708.32596960222 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +97.3926876122771 +20 +-327.00976 +30 +1708.32596960222 +11 +70.6937025544759 +21 +-327.009759999999 +31 +1609.80354302934 +12 +78.5506448209352 +22 +-327.009759999999 +32 +1595.1042772599 +13 +78.5506448209352 +23 +-327.009759999999 +33 +1595.1042772599 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +97.3926876122771 +20 +-327.00976 +30 +1708.32596960222 +11 +78.5506448209352 +21 +-327.009759999999 +31 +1595.1042772599 +12 +83.3889336524952 +22 +-327.009759999999 +32 +1579.15464036367 +13 +83.3889336524952 +23 +-327.009759999999 +33 +1579.15464036367 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +97.3926876122771 +20 +-327.00976 +30 +1708.32596960222 +11 +83.3889336524952 +21 +-327.009759999999 +31 +1579.15464036367 +12 +85.0226363227028 +22 +-327.009759999999 +32 +1562.56756794191 +13 +85.0226363227028 +23 +-327.009759999999 +33 +1562.56756794191 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887731086226 +20 +-165.547039999999 +30 +1579.15445484661 +11 +-83.388736206985 +21 +-165.547039999999 +31 +1545.98030636861 +12 +-85.0224388771926 +22 +-165.547039999999 +32 +1562.56737879036 +13 +-85.0224388771926 +23 +-165.547039999999 +33 +1562.56737879036 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.388736206985 +20 +-165.547039999999 +30 +1545.98030636861 +11 +-83.3887731086226 +21 +-165.547039999999 +31 +1579.15445484661 +12 +-78.5505197605908 +22 +-165.547039999999 +32 +1595.10410250665 +13 +-78.5505197605908 +23 +-165.547039999999 +33 +1595.10410250665 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-83.388736206985 +20 +-165.547039999999 +30 +1545.98030636861 +11 +-78.5505197605908 +21 +-165.547039999999 +31 +1595.10410250665 +12 +-78.550447375425 +22 +-165.547039999999 +32 +1530.03066947238 +13 +-78.550447375425 +23 +-165.547039999999 +33 +1530.03066947238 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-78.550447375425 +20 +-165.547039999999 +30 +1530.03066947238 +11 +-78.5505197605908 +21 +-165.547039999999 +31 +1595.10410250665 +12 +-70.6936101959384 +22 +-165.54704 +32 +1609.80338575558 +13 +-70.6936101959384 +23 +-165.54704 +33 +1609.80338575558 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-78.550447375425 +20 +-165.547039999999 +30 +1530.03066947238 +11 +-70.6936101959384 +21 +-165.54704 +31 +1609.80338575558 +12 +-70.6935051089657 +22 +-165.547039999998 +32 +1515.33140370293 +13 +-70.6935051089657 +23 +-165.547039999998 +33 +1515.33140370293 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-70.6935051089657 +20 +-165.547039999998 +30 +1515.33140370293 +11 +-70.6936101959384 +21 +-165.54704 +31 +1609.80338575558 +12 +-60.1199810430294 +22 +-165.54704 +32 +1622.68741938158 +13 +-60.1199810430294 +23 +-165.54704 +33 +1622.68741938158 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-70.6935051089657 +20 +-165.547039999998 +30 +1515.33140370293 +11 +-60.1199810430294 +21 +-165.54704 +31 +1622.68741938158 +12 +-60.1198472926832 +22 +-165.547039999998 +32 +1502.44739360036 +13 +-60.1198472926832 +23 +-165.547039999998 +33 +1502.44739360036 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-60.1198472926832 +20 +-165.547039999998 +30 +1502.44739360036 +11 +-60.1199810430294 +21 +-165.54704 +31 +1622.68741938158 +12 +-47.2359709404505 +22 +-165.54704 +32 +1633.26107719786 +13 +-47.2359709404505 +23 +-165.54704 +33 +1633.26107719786 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-60.1198472926832 +20 +-165.547039999998 +30 +1502.44739360036 +11 +-47.2359709404505 +21 +-165.54704 +31 +1633.26107719786 +12 +-47.2358136666815 +22 +-165.547039999998 +32 +1491.87376444745 +13 +-47.2358136666815 +23 +-165.547039999998 +33 +1491.87376444745 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-47.2358136666815 +20 +-165.547039999998 +30 +1491.87376444745 +11 +-47.2359709404505 +21 +-165.54704 +31 +1633.26107719786 +12 +-32.5367051710077 +22 +-165.54704 +32 +1641.11801946432 +13 +-32.5367051710077 +23 +-165.54704 +33 +1641.11801946432 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-47.2358136666815 +20 +-165.547039999998 +30 +1491.87376444745 +11 +-32.5367051710077 +21 +-165.54704 +31 +1641.11801946432 +12 +-32.5365304177587 +22 +-165.547039999998 +32 +1484.01685488279 +13 +-32.5365304177587 +23 +-165.547039999998 +33 +1484.01685488279 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-32.5365304177587 +20 +-165.547039999998 +30 +1484.01685488279 +11 +-32.5367051710077 +21 +-165.54704 +31 +1641.11801946432 +12 +-16.5870682747773 +22 +-165.54704 +32 +1645.95630829588 +13 +-16.5870682747773 +23 +-165.54704 +33 +1645.95630829588 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-32.5365304177587 +20 +-165.547039999998 +30 +1484.01685488279 +11 +-16.5870682747773 +21 +-165.54704 +31 +1645.95630829588 +12 +-16.5868827577177 +22 +-165.547039999997 +32 +1479.17860153476 +13 +-16.5868827577177 +23 +-165.547039999997 +33 +1479.17860153476 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +-16.5868827577177 +20 +-165.547039999997 +30 +1479.17860153476 +11 +-16.5870682747773 +21 +-165.54704 +31 +1645.95630829588 +12 +4.14697766952798e-06 +22 +-165.547039999999 +32 +1647.59001096608 +13 +4.14697766952798e-06 +23 +-165.547039999999 +33 +1647.59001096608 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +-16.5868827577177 +20 +-165.547039999997 +30 +1479.17860153476 +11 +4.14697766952798e-06 +21 +-165.547039999999 +31 +1647.59001096608 +12 +0.000193298531324959 +22 +-165.547039999997 +32 +1477.54493576619 +13 +0.000193298531324959 +23 +-165.547039999997 +33 +1477.54493576619 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +0.000193298531324959 +20 +-165.547039999997 +30 +1477.54493576619 +11 +4.14697766952798e-06 +21 +-165.547039999999 +31 +1647.59001096608 +12 +16.5870802032267 +22 +-165.547039999999 +32 +1645.95634519751 +13 +16.5870802032267 +23 +-165.547039999999 +33 +1645.95634519751 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +0.000193298531324959 +20 +-165.547039999997 +30 +1477.54493576619 +11 +16.5870802032267 +21 +-165.547039999999 +31 +1645.95634519751 +12 +16.5872657202864 +22 +-165.547039999997 +32 +1479.1786384364 +13 +16.5872657202864 +23 +-165.547039999997 +33 +1479.1786384364 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +16.5872657202864 +20 +-165.547039999997 +30 +1479.1786384364 +11 +16.5870802032267 +21 +-165.547039999999 +31 +1645.95634519751 +12 +32.5367278632676 +22 +-165.547039999999 +32 +1641.11809184948 +13 +32.5367278632676 +23 +-165.547039999999 +33 +1641.11809184948 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +16.5872657202864 +20 +-165.547039999997 +30 +1479.1786384364 +11 +32.5367278632676 +21 +-165.547039999999 +31 +1641.11809184948 +12 +32.5369026165166 +22 +-165.547039999997 +32 +1484.01692726796 +13 +32.5369026165166 +23 +-165.547039999997 +33 +1484.01692726796 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +32.5369026165166 +20 +-165.547039999997 +30 +1484.01692726796 +11 +32.5367278632676 +21 +-165.547039999999 +31 +1641.11809184948 +12 +47.2360111121904 +22 +-165.547039999999 +32 +1633.26118228483 +13 +47.2360111121904 +23 +-165.547039999999 +33 +1633.26118228483 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +32.5369026165166 +20 +-165.547039999997 +30 +1484.01692726796 +11 +47.2360111121904 +21 +-165.547039999999 +31 +1633.26118228483 +12 +47.2361683859594 +22 +-165.547039999997 +32 +1491.87386953442 +13 +47.2361683859594 +23 +-165.547039999997 +33 +1491.87386953442 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +47.2361683859594 +20 +-165.547039999997 +30 +1491.87386953442 +11 +47.2360111121904 +21 +-165.547039999999 +31 +1633.26118228483 +12 +60.1200447381921 +22 +-165.547039999999 +32 +1622.68755313192 +13 +60.1200447381921 +23 +-165.547039999999 +33 +1622.68755313192 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +47.2361683859594 +20 +-165.547039999997 +30 +1491.87386953442 +11 +60.1200447381921 +21 +-165.547039999999 +31 +1622.68755313192 +12 +60.1201784885383 +22 +-165.547039999997 +32 +1502.4475273507 +13 +60.1201784885383 +23 +-165.547039999997 +33 +1502.4475273507 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +60.1201784885383 +20 +-165.547039999997 +30 +1502.4475273507 +11 +60.1200447381921 +21 +-165.547039999999 +31 +1622.68755313192 +12 +70.6937025544746 +22 +-165.547039999998 +32 +1609.80354302934 +13 +70.6937025544746 +23 +-165.547039999998 +33 +1609.80354302934 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +60.1201784885383 +20 +-165.547039999997 +30 +1502.4475273507 +11 +70.6937025544746 +21 +-165.547039999998 +31 +1609.80354302934 +12 +70.6938076414473 +22 +-165.547039999997 +32 +1515.3315609767 +13 +70.6938076414473 +23 +-165.547039999997 +33 +1515.3315609767 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +70.6938076414473 +20 +-165.547039999997 +30 +1515.3315609767 +11 +70.6937025544746 +21 +-165.547039999998 +31 +1609.80354302934 +12 +78.5506448209339 +22 +-165.547039999998 +32 +1595.1042772599 +13 +78.5506448209339 +23 +-165.547039999998 +33 +1595.1042772599 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +70.6938076414473 +20 +-165.547039999997 +30 +1515.3315609767 +11 +78.5506448209339 +21 +-165.547039999998 +31 +1595.1042772599 +12 +78.5507172060997 +22 +-165.547039999997 +32 +1530.03084422563 +13 +78.5507172060997 +23 +-165.547039999997 +33 +1530.03084422563 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +78.5507172060997 +20 +-165.547039999997 +30 +1530.03084422563 +11 +78.5506448209339 +21 +-165.547039999998 +31 +1595.1042772599 +12 +83.3889336524939 +22 +-165.547039999998 +32 +1579.15464036367 +13 +83.3889336524939 +23 +-165.547039999998 +33 +1579.15464036367 +70 +13 + 0 +3DFACE + 8 +rotator_half +10 +78.5507172060997 +20 +-165.547039999997 +30 +1530.03084422563 +11 +83.3889336524939 +21 +-165.547039999998 +31 +1579.15464036367 +12 +83.3889705541315 +22 +-165.547039999997 +32 +1545.98049188567 +13 +83.3889705541315 +23 +-165.547039999997 +33 +1545.98049188567 +70 +3 + 0 +3DFACE + 8 +rotator_half +10 +83.3889705541315 +20 +-165.547039999997 +30 +1545.98049188567 +11 +83.3889336524939 +21 +-165.547039999998 +31 +1579.15464036367 +12 +85.0226363227015 +22 +-165.547039999998 +32 +1562.56756794192 +13 +85.0226363227015 +23 +-165.547039999998 +33 +1562.56756794192 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +0.000193298531099362 +20 +-140.147039999997 +30 +1477.54493576619 +11 +16.5872657202864 +21 +-165.547039999997 +31 +1479.1786384364 +12 +16.5872657202861 +22 +-140.147039999997 +32 +1479.1786384364 +13 +16.5872657202861 +23 +-140.147039999997 +33 +1479.1786384364 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +16.5872657202864 +20 +-165.547039999997 +30 +1479.1786384364 +11 +0.000193298531099362 +21 +-140.147039999997 +31 +1477.54493576619 +12 +0.000193298531324959 +22 +-165.547039999997 +32 +1477.54493576619 +13 +0.000193298531324959 +23 +-165.547039999997 +33 +1477.54493576619 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +16.5872657202861 +20 +-140.147039999997 +30 +1479.1786384364 +11 +32.5369026165166 +21 +-165.547039999997 +31 +1484.01692726796 +12 +32.5369026165164 +22 +-140.147039999997 +32 +1484.01692726796 +13 +32.5369026165164 +23 +-140.147039999997 +33 +1484.01692726796 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +32.5369026165166 +20 +-165.547039999997 +30 +1484.01692726796 +11 +16.5872657202861 +21 +-140.147039999997 +31 +1479.1786384364 +12 +16.5872657202864 +22 +-165.547039999997 +32 +1479.1786384364 +13 +16.5872657202864 +23 +-165.547039999997 +33 +1479.1786384364 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +32.5369026165166 +20 +-165.547039999997 +30 +1484.01692726796 +11 +47.2361683859592 +21 +-140.147039999997 +31 +1491.87386953442 +12 +32.5369026165164 +22 +-140.147039999997 +32 +1484.01692726796 +13 +32.5369026165164 +23 +-140.147039999997 +33 +1484.01692726796 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +47.2361683859592 +20 +-140.147039999997 +30 +1491.87386953442 +11 +32.5369026165166 +21 +-165.547039999997 +31 +1484.01692726796 +12 +47.2361683859594 +22 +-165.547039999997 +32 +1491.87386953442 +13 +47.2361683859594 +23 +-165.547039999997 +33 +1491.87386953442 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +78.5507172060997 +20 +-165.547039999997 +30 +1530.03084422563 +11 +83.3889705541313 +21 +-140.147039999997 +31 +1545.98049188567 +12 +78.5507172060996 +22 +-140.147039999997 +32 +1530.03084422563 +13 +78.5507172060996 +23 +-140.147039999997 +33 +1530.03084422563 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +83.3889705541313 +20 +-140.147039999997 +30 +1545.98049188567 +11 +78.5507172060997 +21 +-165.547039999997 +31 +1530.03084422563 +12 +83.3889705541315 +22 +-165.547039999997 +32 +1545.98049188567 +13 +83.3889705541315 +23 +-165.547039999997 +33 +1545.98049188567 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +83.3889705541315 +20 +-165.547039999997 +30 +1545.98049188567 +11 +85.0226363227013 +21 +-140.147039999998 +31 +1562.56756794192 +12 +83.3889705541313 +22 +-140.147039999997 +32 +1545.98049188567 +13 +83.3889705541313 +23 +-140.147039999997 +33 +1545.98049188567 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +85.0226363227013 +20 +-140.147039999998 +30 +1562.56756794192 +11 +83.3889705541315 +21 +-165.547039999997 +31 +1545.98049188567 +12 +85.0226363227015 +22 +-165.547039999998 +32 +1562.56756794192 +13 +85.0226363227015 +23 +-165.547039999998 +33 +1562.56756794192 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +85.0226363227015 +20 +-165.547039999998 +30 +1562.56756794192 +11 +83.3889336524938 +21 +-140.147039999998 +31 +1579.15464036367 +12 +85.0226363227013 +22 +-140.147039999998 +32 +1562.56756794192 +13 +85.0226363227013 +23 +-140.147039999998 +33 +1562.56756794192 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +83.3889336524938 +20 +-140.147039999998 +30 +1579.15464036367 +11 +85.0226363227015 +21 +-165.547039999998 +31 +1562.56756794192 +12 +83.3889336524939 +22 +-165.547039999998 +32 +1579.15464036367 +13 +83.3889336524939 +23 +-165.547039999998 +33 +1579.15464036367 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +83.3889336524939 +20 +-165.547039999998 +30 +1579.15464036367 +11 +78.5506448209338 +21 +-140.147039999998 +31 +1595.1042772599 +12 +83.3889336524938 +22 +-140.147039999998 +32 +1579.15464036367 +13 +83.3889336524938 +23 +-140.147039999998 +33 +1579.15464036367 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +78.5506448209338 +20 +-140.147039999998 +30 +1595.1042772599 +11 +83.3889336524939 +21 +-165.547039999998 +31 +1579.15464036367 +12 +78.5506448209339 +22 +-165.547039999998 +32 +1595.1042772599 +13 +78.5506448209339 +23 +-165.547039999998 +33 +1595.1042772599 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +78.5506448209339 +20 +-165.547039999998 +30 +1595.1042772599 +11 +70.6937025544744 +21 +-140.147039999998 +31 +1609.80354302934 +12 +78.5506448209338 +22 +-140.147039999998 +32 +1595.1042772599 +13 +78.5506448209338 +23 +-140.147039999998 +33 +1595.1042772599 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +70.6937025544744 +20 +-140.147039999998 +30 +1609.80354302934 +11 +78.5506448209339 +21 +-165.547039999998 +31 +1595.1042772599 +12 +70.6937025544746 +22 +-165.547039999998 +32 +1609.80354302934 +13 +70.6937025544746 +23 +-165.547039999998 +33 +1609.80354302934 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +70.6937025544746 +20 +-165.547039999998 +30 +1609.80354302934 +11 +60.1200447381919 +21 +-140.147039999999 +31 +1622.68755313192 +12 +70.6937025544744 +22 +-140.147039999998 +32 +1609.80354302934 +13 +70.6937025544744 +23 +-140.147039999998 +33 +1609.80354302934 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +60.1200447381919 +20 +-140.147039999999 +30 +1622.68755313192 +11 +70.6937025544746 +21 +-165.547039999998 +31 +1609.80354302934 +12 +60.1200447381921 +22 +-165.547039999999 +32 +1622.68755313192 +13 +60.1200447381921 +23 +-165.547039999999 +33 +1622.68755313192 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +60.1200447381921 +20 +-165.547039999999 +30 +1622.68755313192 +11 +47.2360111121902 +21 +-140.147039999999 +31 +1633.26118228483 +12 +60.1200447381919 +22 +-140.147039999999 +32 +1622.68755313192 +13 +60.1200447381919 +23 +-140.147039999999 +33 +1622.68755313192 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +47.2360111121902 +20 +-140.147039999999 +30 +1633.26118228483 +11 +60.1200447381921 +21 +-165.547039999999 +31 +1622.68755313192 +12 +47.2360111121904 +22 +-165.547039999999 +32 +1633.26118228483 +13 +47.2360111121904 +23 +-165.547039999999 +33 +1633.26118228483 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +47.2360111121904 +20 +-165.547039999999 +30 +1633.26118228483 +11 +32.5367278632675 +21 +-140.147039999999 +31 +1641.11809184948 +12 +47.2360111121902 +22 +-140.147039999999 +32 +1633.26118228483 +13 +47.2360111121902 +23 +-140.147039999999 +33 +1633.26118228483 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632675 +20 +-140.147039999999 +30 +1641.11809184948 +11 +47.2360111121904 +21 +-165.547039999999 +31 +1633.26118228483 +12 +32.5367278632676 +22 +-165.547039999999 +32 +1641.11809184948 +13 +32.5367278632676 +23 +-165.547039999999 +33 +1641.11809184948 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632676 +20 +-165.547039999999 +30 +1641.11809184948 +11 +16.5870802032265 +21 +-140.147039999999 +31 +1645.95634519751 +12 +32.5367278632675 +22 +-140.147039999999 +32 +1641.11809184948 +13 +32.5367278632675 +23 +-140.147039999999 +33 +1641.11809184948 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +16.5870802032265 +20 +-140.147039999999 +30 +1645.95634519751 +11 +32.5367278632676 +21 +-165.547039999999 +31 +1641.11809184948 +12 +16.5870802032267 +22 +-165.547039999999 +32 +1645.95634519751 +13 +16.5870802032267 +23 +-165.547039999999 +33 +1645.95634519751 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +16.5870802032267 +20 +-165.547039999999 +30 +1645.95634519751 +11 +4.14697744393067e-06 +21 +-140.147039999999 +31 +1647.59001096608 +12 +16.5870802032265 +22 +-140.147039999999 +32 +1645.95634519751 +13 +16.5870802032265 +23 +-140.147039999999 +33 +1645.95634519751 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +4.14697744393067e-06 +20 +-140.147039999999 +30 +1647.59001096608 +11 +16.5870802032267 +21 +-165.547039999999 +31 +1645.95634519751 +12 +4.14697766952798e-06 +22 +-165.547039999999 +32 +1647.59001096608 +13 +4.14697766952798e-06 +23 +-165.547039999999 +33 +1647.59001096608 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +4.14697766952798e-06 +20 +-165.547039999999 +30 +1647.59001096608 +11 +-16.5870682747775 +21 +-140.14704 +31 +1645.95630829588 +12 +4.14697744393067e-06 +22 +-140.147039999999 +32 +1647.59001096608 +13 +4.14697744393067e-06 +23 +-140.147039999999 +33 +1647.59001096608 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747775 +20 +-140.14704 +30 +1645.95630829588 +11 +4.14697766952798e-06 +21 +-165.547039999999 +31 +1647.59001096608 +12 +-16.5870682747773 +22 +-165.54704 +32 +1645.95630829588 +13 +-16.5870682747773 +23 +-165.54704 +33 +1645.95630829588 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747773 +20 +-165.54704 +30 +1645.95630829588 +11 +-32.5367051710078 +21 +-140.14704 +31 +1641.11801946432 +12 +-16.5870682747775 +22 +-140.14704 +32 +1645.95630829588 +13 +-16.5870682747775 +23 +-140.14704 +33 +1645.95630829588 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5367051710078 +20 +-140.14704 +30 +1641.11801946432 +11 +-16.5870682747773 +21 +-165.54704 +31 +1645.95630829588 +12 +-32.5367051710077 +22 +-165.54704 +32 +1641.11801946432 +13 +-32.5367051710077 +23 +-165.54704 +33 +1641.11801946432 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5367051710077 +20 +-165.54704 +30 +1641.11801946432 +11 +-47.2359709404507 +21 +-140.14704 +31 +1633.26107719786 +12 +-32.5367051710078 +22 +-140.14704 +32 +1641.11801946432 +13 +-32.5367051710078 +23 +-140.14704 +33 +1641.11801946432 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-47.2359709404507 +20 +-140.14704 +30 +1633.26107719786 +11 +-32.5367051710077 +21 +-165.54704 +31 +1641.11801946432 +12 +-47.2359709404505 +22 +-165.54704 +32 +1633.26107719786 +13 +-47.2359709404505 +23 +-165.54704 +33 +1633.26107719786 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-47.2359709404505 +20 +-165.54704 +30 +1633.26107719786 +11 +-60.1199810430296 +21 +-140.14704 +31 +1622.68741938158 +12 +-47.2359709404507 +22 +-140.14704 +32 +1633.26107719786 +13 +-47.2359709404507 +23 +-140.14704 +33 +1633.26107719786 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-60.1199810430296 +20 +-140.14704 +30 +1622.68741938158 +11 +-47.2359709404505 +21 +-165.54704 +31 +1633.26107719786 +12 +-60.1199810430294 +22 +-165.54704 +32 +1622.68741938158 +13 +-60.1199810430294 +23 +-165.54704 +33 +1622.68741938158 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-60.1199810430296 +20 +-140.14704 +30 +1622.68741938158 +11 +-70.6936101959384 +21 +-165.54704 +31 +1609.80338575558 +12 +-70.6936101959386 +22 +-140.14704 +32 +1609.80338575557 +13 +-70.6936101959386 +23 +-140.14704 +33 +1609.80338575557 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-70.6936101959384 +20 +-165.54704 +30 +1609.80338575558 +11 +-60.1199810430296 +21 +-140.14704 +31 +1622.68741938158 +12 +-60.1199810430294 +22 +-165.54704 +32 +1622.68741938158 +13 +-60.1199810430294 +23 +-165.54704 +33 +1622.68741938158 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-70.6936101959386 +20 +-140.14704 +30 +1609.80338575557 +11 +-78.5505197605908 +21 +-165.547039999999 +31 +1595.10410250665 +12 +-78.5505197605909 +22 +-140.147039999999 +32 +1595.10410250665 +13 +-78.5505197605909 +23 +-140.147039999999 +33 +1595.10410250665 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-78.5505197605908 +20 +-165.547039999999 +30 +1595.10410250665 +11 +-70.6936101959386 +21 +-140.14704 +31 +1609.80338575557 +12 +-70.6936101959384 +22 +-165.54704 +32 +1609.80338575558 +13 +-70.6936101959384 +23 +-165.54704 +33 +1609.80338575558 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-78.5505197605909 +20 +-140.147039999999 +30 +1595.10410250665 +11 +-83.3887731086226 +21 +-165.547039999999 +31 +1579.15445484661 +12 +-83.3887731086227 +22 +-140.147039999999 +32 +1579.15445484661 +13 +-83.3887731086227 +23 +-140.147039999999 +33 +1579.15445484661 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887731086226 +20 +-165.547039999999 +30 +1579.15445484661 +11 +-78.5505197605909 +21 +-140.147039999999 +31 +1595.10410250665 +12 +-78.5505197605908 +22 +-165.547039999999 +32 +1595.10410250665 +13 +-78.5505197605908 +23 +-165.547039999999 +33 +1595.10410250665 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887731086227 +20 +-140.147039999999 +30 +1579.15445484661 +11 +-85.0224388771926 +21 +-165.547039999999 +31 +1562.56737879036 +12 +-85.0224388771927 +22 +-140.147039999999 +32 +1562.56737879036 +13 +-85.0224388771927 +23 +-140.147039999999 +33 +1562.56737879036 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-85.0224388771926 +20 +-165.547039999999 +30 +1562.56737879036 +11 +-83.3887731086227 +21 +-140.147039999999 +31 +1579.15445484661 +12 +-83.3887731086226 +22 +-165.547039999999 +32 +1579.15445484661 +13 +-83.3887731086226 +23 +-165.547039999999 +33 +1579.15445484661 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-85.0224388771927 +20 +-140.147039999999 +30 +1562.56737879036 +11 +-83.388736206985 +21 +-165.547039999999 +31 +1545.98030636861 +12 +-83.3887362069852 +22 +-140.147039999999 +32 +1545.98030636861 +13 +-83.3887362069852 +23 +-140.147039999999 +33 +1545.98030636861 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.388736206985 +20 +-165.547039999999 +30 +1545.98030636861 +11 +-85.0224388771927 +21 +-140.147039999999 +31 +1562.56737879036 +12 +-85.0224388771926 +22 +-165.547039999999 +32 +1562.56737879036 +13 +-85.0224388771926 +23 +-165.547039999999 +33 +1562.56737879036 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887362069852 +20 +-140.147039999999 +30 +1545.98030636861 +11 +-78.550447375425 +21 +-165.547039999999 +31 +1530.03066947238 +12 +-78.5504473754252 +22 +-140.147039999999 +32 +1530.03066947238 +13 +-78.5504473754252 +23 +-140.147039999999 +33 +1530.03066947238 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-78.550447375425 +20 +-165.547039999999 +30 +1530.03066947238 +11 +-83.3887362069852 +21 +-140.147039999999 +31 +1545.98030636861 +12 +-83.388736206985 +22 +-165.547039999999 +32 +1545.98030636861 +13 +-83.388736206985 +23 +-165.547039999999 +33 +1545.98030636861 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-78.5504473754252 +20 +-140.147039999999 +30 +1530.03066947238 +11 +-70.6935051089657 +21 +-165.547039999998 +31 +1515.33140370293 +12 +-70.6935051089658 +22 +-140.147039999998 +32 +1515.33140370293 +13 +-70.6935051089658 +23 +-140.147039999998 +33 +1515.33140370293 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-70.6935051089657 +20 +-165.547039999998 +30 +1515.33140370293 +11 +-78.5504473754252 +21 +-140.147039999999 +31 +1530.03066947238 +12 +-78.550447375425 +22 +-165.547039999999 +32 +1530.03066947238 +13 +-78.550447375425 +23 +-165.547039999999 +33 +1530.03066947238 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-70.6935051089658 +20 +-140.147039999998 +30 +1515.33140370293 +11 +-60.1198472926832 +21 +-165.547039999998 +31 +1502.44739360036 +12 +-60.1198472926833 +22 +-140.147039999998 +32 +1502.44739360036 +13 +-60.1198472926833 +23 +-140.147039999998 +33 +1502.44739360036 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-60.1198472926832 +20 +-165.547039999998 +30 +1502.44739360036 +11 +-70.6935051089658 +21 +-140.147039999998 +31 +1515.33140370293 +12 +-70.6935051089657 +22 +-165.547039999998 +32 +1515.33140370293 +13 +-70.6935051089657 +23 +-165.547039999998 +33 +1515.33140370293 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-60.1198472926833 +20 +-140.147039999998 +30 +1502.44739360036 +11 +-47.2358136666815 +21 +-165.547039999998 +31 +1491.87376444745 +12 +-47.2358136666817 +22 +-140.147039999998 +32 +1491.87376444745 +13 +-47.2358136666817 +23 +-140.147039999998 +33 +1491.87376444745 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-47.2358136666815 +20 +-165.547039999998 +30 +1491.87376444745 +11 +-60.1198472926833 +21 +-140.147039999998 +31 +1502.44739360036 +12 +-60.1198472926832 +22 +-165.547039999998 +32 +1502.44739360036 +13 +-60.1198472926832 +23 +-165.547039999998 +33 +1502.44739360036 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-47.2358136666817 +20 +-140.147039999998 +30 +1491.87376444745 +11 +-32.5365304177587 +21 +-165.547039999998 +31 +1484.01685488279 +12 +-32.5365304177589 +22 +-140.147039999998 +32 +1484.01685488279 +13 +-32.5365304177589 +23 +-140.147039999998 +33 +1484.01685488279 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5365304177587 +20 +-165.547039999998 +30 +1484.01685488279 +11 +-47.2358136666817 +21 +-140.147039999998 +31 +1491.87376444745 +12 +-47.2358136666815 +22 +-165.547039999998 +32 +1491.87376444745 +13 +-47.2358136666815 +23 +-165.547039999998 +33 +1491.87376444745 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5365304177589 +20 +-140.147039999998 +30 +1484.01685488279 +11 +-16.5868827577177 +21 +-165.547039999997 +31 +1479.17860153476 +12 +-16.586882757718 +22 +-140.147039999997 +32 +1479.17860153476 +13 +-16.586882757718 +23 +-140.147039999997 +33 +1479.17860153476 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-16.5868827577177 +20 +-165.547039999997 +30 +1479.17860153476 +11 +-32.5365304177589 +21 +-140.147039999998 +31 +1484.01685488279 +12 +-32.5365304177587 +22 +-165.547039999998 +32 +1484.01685488279 +13 +-32.5365304177587 +23 +-165.547039999998 +33 +1484.01685488279 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-16.586882757718 +20 +-140.147039999997 +30 +1479.17860153476 +11 +0.000193298531324959 +21 +-165.547039999997 +31 +1477.54493576619 +12 +0.000193298531099362 +22 +-140.147039999997 +32 +1477.54493576619 +13 +0.000193298531099362 +23 +-140.147039999997 +33 +1477.54493576619 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +0.000193298531324959 +20 +-165.547039999997 +30 +1477.54493576619 +11 +-16.586882757718 +21 +-140.147039999997 +31 +1479.17860153476 +12 +-16.5868827577177 +22 +-165.547039999997 +32 +1479.17860153476 +13 +-16.5868827577177 +23 +-165.547039999997 +33 +1479.17860153476 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-70.6936101959373 +20 +-301.60976 +30 +1609.80338575557 +11 +-78.5505197605895 +21 +-327.00976 +31 +1595.10410250665 +12 +-78.5505197605897 +22 +-301.60976 +32 +1595.10410250665 +13 +-78.5505197605897 +23 +-301.60976 +33 +1595.10410250665 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-78.5505197605895 +20 +-327.00976 +30 +1595.10410250665 +11 +-70.6936101959373 +21 +-301.60976 +31 +1609.80338575557 +12 +-70.6936101959371 +22 +-327.00976 +32 +1609.80338575557 +13 +-70.6936101959371 +23 +-327.00976 +33 +1609.80338575557 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +16.587080203228 +20 +-327.00976 +30 +1645.95634519751 +11 +4.14697870727565e-06 +21 +-301.60976 +31 +1647.59001096608 +12 +16.5870802032278 +22 +-301.60976 +32 +1645.95634519751 +13 +16.5870802032278 +23 +-301.60976 +33 +1645.95634519751 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +4.14697870727565e-06 +20 +-301.60976 +30 +1647.59001096608 +11 +16.587080203228 +21 +-327.00976 +31 +1645.95634519751 +12 +4.14697891172322e-06 +22 +-327.00976 +32 +1647.59001096608 +13 +4.14697891172322e-06 +23 +-327.00976 +33 +1647.59001096608 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747761 +20 +-327.00976 +30 +1645.95630829588 +11 +-32.5367051710066 +21 +-301.609760000001 +31 +1641.11801946432 +12 +-16.5870682747763 +22 +-301.60976 +32 +1645.95630829588 +13 +-16.5870682747763 +23 +-301.60976 +33 +1645.95630829588 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5367051710066 +20 +-301.609760000001 +30 +1641.11801946432 +11 +-16.5870682747761 +21 +-327.00976 +31 +1645.95630829588 +12 +-32.5367051710064 +22 +-327.009760000001 +32 +1641.11801946432 +13 +-32.5367051710064 +23 +-327.009760000001 +33 +1641.11801946432 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +4.14697891172322e-06 +20 +-327.00976 +30 +1647.59001096608 +11 +-16.5870682747763 +21 +-301.60976 +31 +1645.95630829588 +12 +4.14697870727565e-06 +22 +-301.60976 +32 +1647.59001096608 +13 +4.14697870727565e-06 +23 +-301.60976 +33 +1647.59001096608 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-16.5870682747763 +20 +-301.60976 +30 +1645.95630829588 +11 +4.14697891172322e-06 +21 +-327.00976 +31 +1647.59001096608 +12 +-16.5870682747761 +22 +-327.00976 +32 +1645.95630829588 +13 +-16.5870682747761 +23 +-327.00976 +33 +1645.95630829588 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-47.2358136666804 +20 +-301.609759999999 +30 +1491.87376444745 +11 +-32.5365304177574 +21 +-327.009759999999 +31 +1484.01685488279 +12 +-32.5365304177576 +22 +-301.609759999999 +32 +1484.01685488279 +13 +-32.5365304177576 +23 +-301.609759999999 +33 +1484.01685488279 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5365304177574 +20 +-327.009759999999 +30 +1484.01685488279 +11 +-47.2358136666804 +21 +-301.609759999999 +31 +1491.87376444745 +12 +-47.2358136666802 +22 +-327.009759999999 +32 +1491.87376444745 +13 +-47.2358136666802 +23 +-327.009759999999 +33 +1491.87376444745 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-78.5504473754239 +20 +-301.60976 +30 +1530.03066947238 +11 +-70.6935051089644 +21 +-327.009759999999 +31 +1515.33140370293 +12 +-70.6935051089646 +22 +-301.609759999999 +32 +1515.33140370293 +13 +-70.6935051089646 +23 +-301.609759999999 +33 +1515.33140370293 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-70.6935051089644 +20 +-327.009759999999 +30 +1515.33140370293 +11 +-78.5504473754239 +21 +-301.60976 +31 +1530.03066947238 +12 +-78.5504473754237 +22 +-327.00976 +32 +1530.03066947238 +13 +-78.5504473754237 +23 +-327.00976 +33 +1530.03066947238 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-60.1199810430283 +20 +-301.609760000001 +30 +1622.68741938157 +11 +-70.6936101959371 +21 +-327.00976 +31 +1609.80338575557 +12 +-70.6936101959373 +22 +-301.60976 +32 +1609.80338575557 +13 +-70.6936101959373 +23 +-301.60976 +33 +1609.80338575557 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-70.6936101959371 +20 +-327.00976 +30 +1609.80338575557 +11 +-60.1199810430283 +21 +-301.609760000001 +31 +1622.68741938157 +12 +-60.1199810430281 +22 +-327.009760000001 +32 +1622.68741938157 +13 +-60.1199810430281 +23 +-327.009760000001 +33 +1622.68741938157 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-32.5365304177576 +20 +-301.609759999999 +30 +1484.01685488279 +11 +-16.5868827577165 +21 +-327.009759999998 +31 +1479.17860153476 +12 +-16.5868827577167 +22 +-301.609759999998 +32 +1479.17860153476 +13 +-16.5868827577167 +23 +-301.609759999998 +33 +1479.17860153476 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-16.5868827577165 +20 +-327.009759999998 +30 +1479.17860153476 +11 +-32.5365304177576 +21 +-301.609759999999 +31 +1484.01685488279 +12 +-32.5365304177574 +22 +-327.009759999999 +32 +1484.01685488279 +13 +-32.5365304177574 +23 +-327.009759999999 +33 +1484.01685488279 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-60.1198472926821 +20 +-301.609759999999 +30 +1502.44739360035 +11 +-47.2358136666802 +21 +-327.009759999999 +31 +1491.87376444745 +12 +-47.2358136666804 +22 +-301.609759999999 +32 +1491.87376444745 +13 +-47.2358136666804 +23 +-301.609759999999 +33 +1491.87376444745 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-47.2358136666802 +20 +-327.009759999999 +30 +1491.87376444745 +11 +-60.1198472926821 +21 +-301.609759999999 +31 +1502.44739360035 +12 +-60.1198472926819 +22 +-327.009759999999 +32 +1502.44739360035 +13 +-60.1198472926819 +23 +-327.009759999999 +33 +1502.44739360035 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-83.3887731086215 +20 +-301.60976 +30 +1579.15445484661 +11 +-85.0224388771913 +21 +-327.00976 +31 +1562.56737879036 +12 +-85.0224388771915 +22 +-301.60976 +32 +1562.56737879036 +13 +-85.0224388771915 +23 +-301.60976 +33 +1562.56737879036 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-85.0224388771913 +20 +-327.00976 +30 +1562.56737879036 +11 +-83.3887731086215 +21 +-301.60976 +31 +1579.15445484661 +12 +-83.3887731086213 +22 +-327.00976 +32 +1579.15445484661 +13 +-83.3887731086213 +23 +-327.00976 +33 +1579.15445484661 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-16.5868827577167 +20 +-301.609759999998 +30 +1479.17860153476 +11 +0.000193298532564334 +21 +-327.009759999998 +31 +1477.54493576619 +12 +0.000193298532362707 +22 +-301.609759999998 +32 +1477.54493576619 +13 +0.000193298532362707 +23 +-301.609759999998 +33 +1477.54493576619 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +0.000193298532564334 +20 +-327.009759999998 +30 +1477.54493576619 +11 +-16.5868827577167 +21 +-301.609759999998 +31 +1479.17860153476 +12 +-16.5868827577165 +22 +-327.009759999998 +32 +1479.17860153476 +13 +-16.5868827577165 +23 +-327.009759999998 +33 +1479.17860153476 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +0.000193298532362707 +20 +-301.609759999998 +30 +1477.54493576619 +11 +16.5872657202876 +21 +-327.009759999998 +31 +1479.1786384364 +12 +16.5872657202874 +22 +-301.609759999998 +32 +1479.1786384364 +13 +16.5872657202874 +23 +-301.609759999998 +33 +1479.1786384364 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +16.5872657202876 +20 +-327.009759999998 +30 +1479.1786384364 +11 +0.000193298532362707 +21 +-301.609759999998 +31 +1477.54493576619 +12 +0.000193298532564334 +22 +-327.009759999998 +32 +1477.54493576619 +13 +0.000193298532564334 +23 +-327.009759999998 +33 +1477.54493576619 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +16.5872657202874 +20 +-301.609759999998 +30 +1479.1786384364 +11 +32.5369026165179 +21 +-327.009759999998 +31 +1484.01692726796 +12 +32.5369026165177 +22 +-301.609759999998 +32 +1484.01692726796 +13 +32.5369026165177 +23 +-301.609759999998 +33 +1484.01692726796 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +32.5369026165179 +20 +-327.009759999998 +30 +1484.01692726796 +11 +16.5872657202874 +21 +-301.609759999998 +31 +1479.1786384364 +12 +16.5872657202876 +22 +-327.009759999998 +32 +1479.1786384364 +13 +16.5872657202876 +23 +-327.009759999998 +33 +1479.1786384364 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +32.5369026165179 +20 +-327.009759999998 +30 +1484.01692726796 +11 +47.2361683859605 +21 +-301.609759999998 +31 +1491.87386953442 +12 +32.5369026165177 +22 +-301.609759999998 +32 +1484.01692726796 +13 +32.5369026165177 +23 +-301.609759999998 +33 +1484.01692726796 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +47.2361683859605 +20 +-301.609759999998 +30 +1491.87386953442 +11 +32.5369026165179 +21 +-327.009759999998 +31 +1484.01692726796 +12 +47.2361683859607 +22 +-327.009759999998 +32 +1491.87386953442 +13 +47.2361683859607 +23 +-327.009759999998 +33 +1491.87386953442 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +47.2361683859607 +20 +-327.009759999998 +30 +1491.87386953442 +11 +60.1201784885394 +21 +-301.609759999998 +31 +1502.4475273507 +12 +47.2361683859605 +22 +-301.609759999998 +32 +1491.87386953442 +13 +47.2361683859605 +23 +-301.609759999998 +33 +1491.87386953442 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +60.1201784885394 +20 +-301.609759999998 +30 +1502.4475273507 +11 +47.2361683859607 +21 +-327.009759999998 +31 +1491.87386953442 +12 +60.1201784885396 +22 +-327.009759999998 +32 +1502.4475273507 +13 +60.1201784885396 +23 +-327.009759999998 +33 +1502.4475273507 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +70.6938076414486 +20 +-327.009759999998 +30 +1515.3315609767 +11 +60.1201784885394 +21 +-301.609759999998 +31 +1502.4475273507 +12 +60.1201784885396 +22 +-327.009759999998 +32 +1502.4475273507 +13 +60.1201784885396 +23 +-327.009759999998 +33 +1502.4475273507 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +60.1201784885394 +20 +-301.609759999998 +30 +1502.4475273507 +11 +70.6938076414486 +21 +-327.009759999998 +31 +1515.3315609767 +12 +70.6938076414485 +22 +-301.609759999998 +32 +1515.3315609767 +13 +70.6938076414485 +23 +-301.609759999998 +33 +1515.3315609767 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +78.550717206101 +20 +-327.009759999998 +30 +1530.03084422562 +11 +70.6938076414485 +21 +-301.609759999998 +31 +1515.3315609767 +12 +70.6938076414486 +22 +-327.009759999998 +32 +1515.3315609767 +13 +70.6938076414486 +23 +-327.009759999998 +33 +1515.3315609767 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +70.6938076414485 +20 +-301.609759999998 +30 +1515.3315609767 +11 +78.550717206101 +21 +-327.009759999998 +31 +1530.03084422562 +12 +78.5507172061008 +22 +-301.609759999998 +32 +1530.03084422562 +13 +78.5507172061008 +23 +-301.609759999998 +33 +1530.03084422562 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +83.3889705541327 +20 +-327.009759999998 +30 +1545.98049188567 +11 +78.5507172061008 +21 +-301.609759999998 +31 +1530.03084422562 +12 +78.550717206101 +22 +-327.009759999998 +32 +1530.03084422562 +13 +78.550717206101 +23 +-327.009759999998 +33 +1530.03084422562 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +78.5507172061008 +20 +-301.609759999998 +30 +1530.03084422562 +11 +83.3889705541327 +21 +-327.009759999998 +31 +1545.98049188567 +12 +83.3889705541326 +22 +-301.609759999998 +32 +1545.98049188567 +13 +83.3889705541326 +23 +-301.609759999998 +33 +1545.98049188567 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +85.0226363227028 +20 +-327.009759999999 +30 +1562.56756794191 +11 +83.3889705541326 +21 +-301.609759999998 +31 +1545.98049188567 +12 +83.3889705541327 +22 +-327.009759999998 +32 +1545.98049188567 +13 +83.3889705541327 +23 +-327.009759999998 +33 +1545.98049188567 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +83.3889705541326 +20 +-301.609759999998 +30 +1545.98049188567 +11 +85.0226363227028 +21 +-327.009759999999 +31 +1562.56756794191 +12 +85.0226363227026 +22 +-301.609759999999 +32 +1562.56756794191 +13 +85.0226363227026 +23 +-301.609759999999 +33 +1562.56756794191 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +83.3889336524952 +20 +-327.009759999999 +30 +1579.15464036367 +11 +85.0226363227026 +21 +-301.609759999999 +31 +1562.56756794191 +12 +85.0226363227028 +22 +-327.009759999999 +32 +1562.56756794191 +13 +85.0226363227028 +23 +-327.009759999999 +33 +1562.56756794191 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +85.0226363227026 +20 +-301.609759999999 +30 +1562.56756794191 +11 +83.3889336524952 +21 +-327.009759999999 +31 +1579.15464036367 +12 +83.388933652495 +22 +-301.609759999999 +32 +1579.15464036367 +13 +83.388933652495 +23 +-301.609759999999 +33 +1579.15464036367 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +78.5506448209352 +20 +-327.009759999999 +30 +1595.1042772599 +11 +83.388933652495 +21 +-301.609759999999 +31 +1579.15464036367 +12 +83.3889336524952 +22 +-327.009759999999 +32 +1579.15464036367 +13 +83.3889336524952 +23 +-327.009759999999 +33 +1579.15464036367 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +83.388933652495 +20 +-301.609759999999 +30 +1579.15464036367 +11 +78.5506448209352 +21 +-327.009759999999 +31 +1595.1042772599 +12 +78.550644820935 +22 +-301.609759999999 +32 +1595.1042772599 +13 +78.550644820935 +23 +-301.609759999999 +33 +1595.1042772599 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +70.6937025544759 +20 +-327.009759999999 +30 +1609.80354302934 +11 +78.550644820935 +21 +-301.609759999999 +31 +1595.1042772599 +12 +78.5506448209352 +22 +-327.009759999999 +32 +1595.1042772599 +13 +78.5506448209352 +23 +-327.009759999999 +33 +1595.1042772599 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +78.550644820935 +20 +-301.609759999999 +30 +1595.1042772599 +11 +70.6937025544759 +21 +-327.009759999999 +31 +1609.80354302934 +12 +70.6937025544757 +22 +-301.609759999999 +32 +1609.80354302934 +13 +70.6937025544757 +23 +-301.609759999999 +33 +1609.80354302934 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +60.1200447381933 +20 +-327.00976 +30 +1622.68755313192 +11 +70.6937025544757 +21 +-301.609759999999 +31 +1609.80354302934 +12 +70.6937025544759 +22 +-327.009759999999 +32 +1609.80354302934 +13 +70.6937025544759 +23 +-327.009759999999 +33 +1609.80354302934 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +70.6937025544757 +20 +-301.609759999999 +30 +1609.80354302934 +11 +60.1200447381933 +21 +-327.00976 +31 +1622.68755313192 +12 +60.1200447381932 +22 +-301.60976 +32 +1622.68755313192 +13 +60.1200447381932 +23 +-301.60976 +33 +1622.68755313192 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +60.1200447381933 +20 +-327.00976 +30 +1622.68755313192 +11 +47.2360111121915 +21 +-301.60976 +31 +1633.26118228483 +12 +60.1200447381932 +22 +-301.60976 +32 +1622.68755313192 +13 +60.1200447381932 +23 +-301.60976 +33 +1622.68755313192 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +47.2360111121915 +20 +-301.60976 +30 +1633.26118228483 +11 +60.1200447381933 +21 +-327.00976 +31 +1622.68755313192 +12 +47.2360111121917 +22 +-327.00976 +32 +1633.26118228483 +13 +47.2360111121917 +23 +-327.00976 +33 +1633.26118228483 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +47.2360111121917 +20 +-327.00976 +30 +1633.26118228483 +11 +32.5367278632687 +21 +-301.60976 +31 +1641.11809184948 +12 +47.2360111121915 +22 +-301.60976 +32 +1633.26118228483 +13 +47.2360111121915 +23 +-301.60976 +33 +1633.26118228483 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632687 +20 +-301.60976 +30 +1641.11809184948 +11 +47.2360111121917 +21 +-327.00976 +31 +1633.26118228483 +12 +32.5367278632689 +22 +-327.00976 +32 +1641.11809184948 +13 +32.5367278632689 +23 +-327.00976 +33 +1641.11809184948 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +32.5367278632689 +20 +-327.00976 +30 +1641.11809184948 +11 +16.5870802032278 +21 +-301.60976 +31 +1645.95634519751 +12 +32.5367278632687 +22 +-301.60976 +32 +1641.11809184948 +13 +32.5367278632687 +23 +-301.60976 +33 +1641.11809184948 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +16.5870802032278 +20 +-301.60976 +30 +1645.95634519751 +11 +32.5367278632689 +21 +-327.00976 +31 +1641.11809184948 +12 +16.587080203228 +22 +-327.00976 +32 +1645.95634519751 +13 +16.587080203228 +23 +-327.00976 +33 +1645.95634519751 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-29.7122224515915 +20 +-140.14704 +30 +1681.41639731326 +11 +-27.4505026299641 +21 +-2.12061479487602e-12 +31 +1670.04601633937 +12 +-27.4505026299636 +22 +-140.14704 +32 +1670.04601633937 +13 +-27.4505026299636 +23 +-140.14704 +33 +1670.04601633937 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-27.4505026299641 +20 +-2.12061479487602e-12 +30 +1670.04601633937 +11 +-29.7122224515915 +21 +-140.14704 +31 +1681.41639731326 +12 +-29.7122224515919 +22 +-2.16573425859679e-12 +32 +1681.41639731326 +13 +-29.7122224515919 +23 +-2.16573425859679e-12 +33 +1681.41639731326 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +11.3704272911448 +20 +-2.03037586743449e-12 +30 +1653.96590077154 +11 +4.63172537816581e-05 +21 +-140.14704 +31 +1651.70418094992 +12 +4.63172533769929e-05 +22 +-2.03037586743449e-12 +32 +1651.70418094992 +13 +4.63172533769929e-05 +23 +-2.03037586743449e-12 +33 +1651.70418094992 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +4.63172537816581e-05 +20 +-140.14704 +30 +1651.70418094992 +11 +11.3704272911448 +21 +-2.03037586743449e-12 +31 +1653.96590077154 +12 +11.3704272911452 +22 +-140.14704 +32 +1653.96590077155 +13 +11.3704272911452 +23 +-140.14704 +33 +1653.96590077155 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-27.450522684681 +20 +-140.14704 +30 +1692.78678227628 +11 +-21.0097266163854 +21 +-2.16573425859679e-12 +31 +1702.42613319061 +12 +-27.4505226846814 +22 +-2.16573425859679e-12 +32 +1692.78678227628 +13 +-27.4505226846814 +23 +-2.16573425859679e-12 +33 +1692.78678227628 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-21.0097266163854 +20 +-2.16573425859679e-12 +30 +1702.42613319061 +11 +-27.450522684681 +21 +-140.14704 +31 +1692.78678227628 +12 +-21.009726616385 +22 +-140.14704 +32 +1702.42613319061 +13 +-21.009726616385 +23 +-140.14704 +33 +1702.42613319061 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +27.4505629136862 +20 +-1.98525640371372e-12 +30 +1670.04606475574 +11 +21.0097668453905 +21 +-140.14704 +31 +1660.40671384141 +12 +21.0097668453901 +22 +-1.98525640371372e-12 +32 +1660.40671384141 +13 +21.0097668453901 +23 +-1.98525640371372e-12 +33 +1660.40671384141 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +21.0097668453905 +20 +-140.14704 +30 +1660.40671384141 +11 +27.4505629136862 +21 +-1.98525640371372e-12 +31 +1670.04606475574 +12 +27.4505629136866 +22 +-140.14704 +32 +1670.04606475574 +13 +27.4505629136866 +23 +-140.14704 +33 +1670.04606475574 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-29.7122224515915 +20 +-140.14704 +30 +1681.41639731326 +11 +-27.4505226846814 +21 +-2.16573425859679e-12 +31 +1692.78678227628 +12 +-29.7122224515919 +22 +-2.16573425859679e-12 +32 +1681.41639731326 +13 +-29.7122224515919 +23 +-2.16573425859679e-12 +33 +1681.41639731326 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-27.4505226846814 +20 +-2.16573425859679e-12 +30 +1692.78678227628 +11 +-29.7122224515915 +21 +-140.14704 +31 +1681.41639731326 +12 +-27.450522684681 +22 +-140.14704 +32 +1692.78678227628 +13 +-27.450522684681 +23 +-140.14704 +33 +1692.78678227628 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +4.63172537816581e-05 +20 +-140.14704 +30 +1651.70418094992 +11 +-11.3703386457694 +21 +-2.07549533115525e-12 +31 +1653.96588071683 +12 +4.63172533769929e-05 +22 +-2.03037586743449e-12 +32 +1651.70418094992 +13 +4.63172533769929e-05 +23 +-2.03037586743449e-12 +33 +1651.70418094992 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-11.3703386457694 +20 +-2.07549533115525e-12 +30 +1653.96588071683 +11 +4.63172537816581e-05 +21 +-140.14704 +31 +1651.70418094992 +12 +-11.370338645769 +22 +-140.14704 +32 +1653.96588071683 +13 +-11.370338645769 +23 +-140.14704 +33 +1653.96588071683 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-11.3703870621396 +20 +-140.14704 +30 +1708.86694626048 +11 +-6.0882486421221e-06 +21 +-2.12061479487602e-12 +31 +1711.12866608211 +12 +-11.37038706214 +22 +-2.12061479487602e-12 +32 +1708.86694626048 +13 +-11.37038706214 +23 +-2.12061479487602e-12 +33 +1708.86694626048 +70 +1 + 0 +3DFACE + 8 +rotator_half +10 +-6.0882486421221e-06 +20 +-2.12061479487602e-12 +30 +1711.12866608211 +11 +-11.3703870621396 +21 +-140.14704 +31 +1708.86694626048 +12 +-6.08824821207721e-06 +22 +-140.14704 +32 +1711.12866608211 +13 +-6.08824821207721e-06 +23 +-140.14704 +33 +1711.12866608211 +70 +1 + 0 +ENDSEC + 0 +EOF diff --git a/hacks/glx/romanboy.c b/hacks/glx/romanboy.c new file mode 100644 index 0000000..9ad12f0 --- /dev/null +++ b/hacks/glx/romanboy.c @@ -0,0 +1,1552 @@ +/* romanboy --- Shows a 3d immersion of the real projective plane + that rotates in 3d or on which you can walk and that can deform + smoothly between the Roman surface and the Boy surface. */ + +#if 0 +static const char sccsid[] = "@(#)romanboy.c 1.1 14/10/03 xlockmore"; +#endif + +/* Copyright (c) 2013-2014 Carsten Steger . */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * REVISION HISTORY: + * C. Steger - 14/10/03: Initial version + */ + +/* + * This program shows a 3d immersion of the real projective plane + * that smoothly deforms between the Roman surface and the Boy + * surface. You can walk on the projective plane or turn in 3d. The + * smooth deformation (homotopy) between these two famous immersions + * of the real projective plane was constructed by Franois Apry. + * + * The real projective plane is a non-orientable surface. To make + * this apparent, the two-sided color mode can be used. + * Alternatively, orientation markers (curling arrows) can be drawn as + * a texture map on the surface of the projective plane. While + * walking on the projective plane, you will notice that the + * orientation of the curling arrows changes (which it must because + * the projective plane is non-orientable). + * + * The real projective plane is a model for the projective geometry in + * 2d space. One point can be singled out as the origin. A line can + * be singled out as the line at infinity, i.e., a line that lies at + * an infinite distance to the origin. The line at infinity is + * topologically a circle. Points on the line at infinity are also + * used to model directions in projective geometry. The origin can be + * visualized in different manners. When using distance colors, the + * origin is the point that is displayed as fully saturated red, which + * is easier to see as the center of the reddish area on the + * projective plane. Alternatively, when using distance bands, the + * origin is the center of the only band that projects to a disk. + * When using direction bands, the origin is the point where all + * direction bands collapse to a point. Finally, when orientation + * markers are being displayed, the origin the the point where all + * orientation markers are compressed to a point. The line at + * infinity can also be visualized in different ways. When using + * distance colors, the line at infinity is the line that is displayed + * as fully saturated magenta. When two-sided colors are used, the + * line at infinity lies at the points where the red and green "sides" + * of the projective plane meet (of course, the real projective plane + * only has one side, so this is a design choice of the + * visualization). Alternatively, when orientation markers are being + * displayed, the line at infinity is the place where the orientation + * markers change their orientation. + * + * Note that when the projective plane is displayed with bands, the + * orientation markers are placed in the middle of the bands. For + * distance bands, the bands are chosen in such a way that the band at + * the origin is only half as wide as the remaining bands, which + * results in a disk being displayed at the origin that has the same + * diameter as the remaining bands. This choice, however, also + * implies that the band at infinity is half as wide as the other + * bands. Since the projective plane is attached to itself (in a + * complicated fashion) at the line at infinity, effectively the band + * at infinity is again as wide as the remaining bands. However, + * since the orientation markers are displayed in the middle of the + * bands, this means that only one half of the orientation markers + * will be displayed twice at the line at infinity if distance bands + * are used. If direction bands are used or if the projective plane + * is displayed as a solid surface, the orientation markers are + * displayed fully at the respective sides of the line at infinity. + * + * The immersed projective plane can be projected to the screen either + * perspectively or orthographically. When using the walking modes, + * perspective projection to the screen will be used. + * + * There are three display modes for the projective plane: mesh + * (wireframe), solid, or transparent. Furthermore, the appearance of + * the projective plane can be as a solid object or as a set of + * see-through bands. The bands can be distance bands, i.e., bands + * that lie at increasing distances from the origin, or direction + * bands, i.e., bands that lie at increasing angles with respect to + * the origin. + * + * When the projective plane is displayed with direction bands, you + * will be able to see that each direction band (modulo the "pinching" + * at the origin) is a Moebius strip, which also shows that the + * projective plane is non-orientable. + * + * Finally, the colors with with the projective plane is drawn can be + * set to two-sided, distance, or direction. In two-sided mode, the + * projective plane is drawn with red on one "side" and green on the + * "other side". As described above, the projective plane only has + * one side, so the color jumps from red to green along the line at + * infinity. This mode enables you to see that the projective plane + * is non-orientable. In distance mode, the projective plane is + * displayed with fully saturated colors that depend on the distance + * of the points on the projective plane to the origin. The origin is + * displayed in red, the line at infinity is displayed in magenta. If + * the projective plane is displayed as distance bands, each band will + * be displayed with a different color. In direction mode, the + * projective plane is displayed with fully saturated colors that + * depend on the angle of the points on the projective plane with + * respect to the origin. Angles in opposite directions to the origin + * (e.g., 15 and 205 degrees) are displayed in the same color since + * they are projectively equivalent. If the projective plane is + * displayed as direction bands, each band will be displayed with a + * different color. + * + * The rotation speed for each of the three coordinate axes around + * which the projective plane rotates can be chosen. + * + * Furthermore, in the walking mode the walking direction in the 2d + * base square of the projective plane and the walking speed can be + * chosen. The walking direction is measured as an angle in degrees + * in the 2d square that forms the coordinate system of the surface of + * the projective plane. A value of 0 or 180 means that the walk is + * along a circle at a randomly chosen distance from the origin + * (parallel to a distance band). A value of 90 or 270 means that the + * walk is directly from the origin to the line at infinity and back + * (analogous to a direction band). Any other value results in a + * curved path from the origin to the line at infinity and back. + * + * By default, the immersion of the real projective plane smoothly + * deforms between the Roman and Boy surfaces. It is possible to + * choose the speed of the deformation. Furthermore, it is possible + * to switch the deformation off. It is also possible to determine + * the initial deformation of the immersion. This is mostly useful if + * the deformation is switched off, in which case it will determine + * the appearance of the surface. + * + * As a final option, it is possible to display generalized versions + * of the immersion discussed above by specifying the order of the + * surface. The default surface order of 3 results in the immersion + * of the real projective described above. The surface order can be + * chosen between 2 and 9. Odd surface orders result in generalized + * immersions of the real projective plane, while even numbers result + * in a immersion of a topological sphere (which is orientable). The + * most interesting even case is a surface order of 2, which results + * in an immersion of the halfway model of Morin's sphere eversion (if + * the deformation is switched off). + * + * This program is inspired by Franois Apry's book "Models of the + * Real Projective Plane", Vieweg, 1987. + */ + +#include "curlicue.h" + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define DISP_WIREFRAME 0 +#define DISP_SURFACE 1 +#define DISP_TRANSPARENT 2 +#define NUM_DISPLAY_MODES 3 + +#define APPEARANCE_SOLID 0 +#define APPEARANCE_DISTANCE_BANDS 1 +#define APPEARANCE_DIRECTION_BANDS 2 +#define NUM_APPEARANCES 3 + +#define COLORS_TWOSIDED 0 +#define COLORS_DISTANCE 1 +#define COLORS_DIRECTION 2 +#define NUM_COLORS 3 + +#define VIEW_WALK 0 +#define VIEW_TURN 1 +#define NUM_VIEW_MODES 2 + +#define DISP_PERSPECTIVE 0 +#define DISP_ORTHOGRAPHIC 1 +#define NUM_DISP_MODES 2 + +#define DEF_DISPLAY_MODE "random" +#define DEF_APPEARANCE "random" +#define DEF_COLORS "random" +#define DEF_VIEW_MODE "random" +#define DEF_MARKS "False" +#define DEF_DEFORM "True" +#define DEF_PROJECTION "random" +#define DEF_SPEEDX "1.1" +#define DEF_SPEEDY "1.3" +#define DEF_SPEEDZ "1.5" +#define DEF_WALK_DIRECTION "83.0" +#define DEF_WALK_SPEED "20.0" +#define DEF_DEFORM_SPEED "10.0" +#define DEF_INIT_DEFORM "1000.0" +#define DEF_SURFACE_ORDER "3" + +#ifdef STANDALONE +# define DEFAULTS "*delay: 10000 \n" \ + "*showFPS: False \n" \ + +# define release_romanboy 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#ifndef HAVE_JWXYZ +# include +#endif + +#include "gltrackball.h" + +#include + + +#ifdef USE_MODULES +ModStruct romanboy_description = +{"romanboy", "init_romanboy", "draw_romanboy", + NULL, "draw_romanboy", "change_romanboy", + "free_romanboy", &romanboy_opts, 25000, 1, 1, 1, 1.0, 4, "", + "Rotate a 3d immersion of the real projective plane in 3d or walk on it", + 0, NULL}; + +#endif + + +static char *mode; +static char *appear; +static char *color_mode; +static char *view_mode; +static Bool marks; +static Bool deform; +static char *proj; +static float speed_x; +static float speed_y; +static float speed_z; +static float walk_direction; +static float walk_speed; +static float deform_speed; +static float init_deform; +static int surface_order; + + +static XrmOptionDescRec opts[] = +{ + {"-mode", ".displayMode", XrmoptionSepArg, 0 }, + {"-wireframe", ".displayMode", XrmoptionNoArg, "wireframe" }, + {"-surface", ".displayMode", XrmoptionNoArg, "surface" }, + {"-transparent", ".displayMode", XrmoptionNoArg, "transparent" }, + {"-appearance", ".appearance", XrmoptionSepArg, 0 }, + {"-solid", ".appearance", XrmoptionNoArg, "solid" }, + {"-distance-bands", ".appearance", XrmoptionNoArg, "distance-bands" }, + {"-direction-bands", ".appearance", XrmoptionNoArg, "direction-bands" }, + {"-colors", ".colors", XrmoptionSepArg, 0 }, + {"-twosided-colors", ".colors", XrmoptionNoArg, "two-sided" }, + {"-distance-colors", ".colors", XrmoptionNoArg, "distance" }, + {"-direction-colors", ".colors", XrmoptionNoArg, "direction" }, + {"-view-mode", ".viewMode", XrmoptionSepArg, 0 }, + {"-walk", ".viewMode", XrmoptionNoArg, "walk" }, + {"-turn", ".viewMode", XrmoptionNoArg, "turn" }, + {"-deform", ".deform", XrmoptionNoArg, "on"}, + {"+deform", ".deform", XrmoptionNoArg, "off"}, + {"-orientation-marks", ".marks", XrmoptionNoArg, "on"}, + {"+orientation-marks", ".marks", XrmoptionNoArg, "off"}, + {"-projection", ".projection", XrmoptionSepArg, 0 }, + {"-perspective", ".projection", XrmoptionNoArg, "perspective" }, + {"-orthographic", ".projection", XrmoptionNoArg, "orthographic" }, + {"-speed-x", ".speedx", XrmoptionSepArg, 0 }, + {"-speed-y", ".speedy", XrmoptionSepArg, 0 }, + {"-speed-z", ".speedz", XrmoptionSepArg, 0 }, + {"-walk-direction", ".walkDirection", XrmoptionSepArg, 0 }, + {"-walk-speed", ".walkSpeed", XrmoptionSepArg, 0 }, + {"-deformation-speed", ".deformSpeed", XrmoptionSepArg, 0 }, + {"-initial-deformation", ".initDeform", XrmoptionSepArg, 0 }, + {"-roman", ".initDeform", XrmoptionNoArg, "0.0" }, + {"-boy", ".initDeform", XrmoptionNoArg, "1000.0" }, + {"-surface-order", ".surfaceOrder", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = +{ + { &mode, "displayMode", "DisplayMode", DEF_DISPLAY_MODE, t_String }, + { &appear, "appearance", "Appearance", DEF_APPEARANCE, t_String }, + { &color_mode, "colors", "Colors", DEF_COLORS, t_String }, + { &view_mode, "viewMode", "ViewMode", DEF_VIEW_MODE, t_String }, + { &deform, "deform", "Deform", DEF_DEFORM, t_Bool }, + { &marks, "marks", "Marks", DEF_MARKS, t_Bool }, + { &proj, "projection", "Projection", DEF_PROJECTION, t_String }, + { &speed_x, "speedx", "Speedx", DEF_SPEEDX, t_Float}, + { &speed_y, "speedy", "Speedy", DEF_SPEEDY, t_Float}, + { &speed_z, "speedz", "Speedz", DEF_SPEEDZ, t_Float}, + { &walk_direction, "walkDirection", "WalkDirection", DEF_WALK_DIRECTION, t_Float}, + { &walk_speed, "walkSpeed", "WalkSpeed", DEF_WALK_SPEED, t_Float}, + { &deform_speed, "deformSpeed", "DeformSpeed", DEF_DEFORM_SPEED, t_Float}, + { &init_deform, "initDeform", "InitDeform", DEF_INIT_DEFORM, t_Float }, + { &surface_order, "surfaceOrder", "SurfaceOrder", DEF_SURFACE_ORDER, t_Int } +}; + +ENTRYPOINT ModeSpecOpt romanboy_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, NULL}; + + +/* Offset by which we walk above the projective plane */ +#define DELTAY 0.01 + +/* Number of subdivisions of the projective plane */ +#define NUMU 64 +#define NUMV 128 + +/* Number of subdivisions per band */ +#define NUMB 8 + + +typedef struct { + GLint WindH, WindW; + GLXContext *glx_context; + /* Options */ + int display_mode; + int appearance; + int colors; + int view; + int projection; + Bool marks; + /* 3D rotation angles */ + float alpha, beta, delta; + /* Movement parameters */ + float umove, vmove, dumove, dvmove; + int side, dir; + /* Deformation parameters */ + float dd; + int defdir; + /* The type of the generalized Roman-Boy surface */ + int g; + /* The viewing offset in 3d */ + float offset3d[3]; + /* The 3d coordinates of the projective plane and their derivatives */ + float *pp; + float *pn; + /* The precomputed colors of the projective plane */ + float *col; + /* The precomputed texture coordinates of the projective plane */ + float *tex; + /* The "curlicue" texture */ + GLuint tex_name; + /* Aspect ratio of the current window */ + float aspect; + /* Trackball states */ + trackball_state *trackball; + Bool button_pressed; + /* A random factor to modify the rotation speeds */ + float speed_scale; +} romanboystruct; + +static romanboystruct *romanboy = (romanboystruct *) NULL; + + +/* Add a rotation around the x-axis to the matrix m. */ +static void rotatex(float m[3][3], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<3; i++) + { + u = m[i][1]; + v = m[i][2]; + m[i][1] = c*u+s*v; + m[i][2] = -s*u+c*v; + } +} + + +/* Add a rotation around the y-axis to the matrix m. */ +static void rotatey(float m[3][3], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<3; i++) + { + u = m[i][0]; + v = m[i][2]; + m[i][0] = c*u-s*v; + m[i][2] = s*u+c*v; + } +} + + +/* Add a rotation around the z-axis to the matrix m. */ +static void rotatez(float m[3][3], float phi) +{ + float c, s, u, v; + int i; + + phi *= M_PI/180.0; + c = cos(phi); + s = sin(phi); + for (i=0; i<3; i++) + { + u = m[i][0]; + v = m[i][1]; + m[i][0] = c*u+s*v; + m[i][1] = -s*u+c*v; + } +} + + +/* Compute the rotation matrix m from the rotation angles. */ +static void rotateall(float al, float be, float de, float m[3][3]) +{ + int i, j; + + for (i=0; i<3; i++) + for (j=0; j<3; j++) + m[i][j] = (i==j); + rotatex(m,al); + rotatey(m,be); + rotatez(m,de); +} + + +/* Multiply two rotation matrices: o=m*n. */ +static void mult_rotmat(float m[3][3], float n[3][3], float o[3][3]) +{ + int i, j, k; + + for (i=0; i<3; i++) + { + for (j=0; j<3; j++) + { + o[i][j] = 0.0; + for (k=0; k<3; k++) + o[i][j] += m[i][k]*n[k][j]; + } + } +} + + +/* Compute a 3D rotation matrix from a unit quaternion. */ +static void quat_to_rotmat(float p[4], float m[3][3]) +{ + double al, be, de; + double r00, r01, r02, r12, r22; + + r00 = 1.0-2.0*(p[1]*p[1]+p[2]*p[2]); + r01 = 2.0*(p[0]*p[1]+p[2]*p[3]); + r02 = 2.0*(p[2]*p[0]-p[1]*p[3]); + r12 = 2.0*(p[1]*p[2]+p[0]*p[3]); + r22 = 1.0-2.0*(p[1]*p[1]+p[0]*p[0]); + + al = atan2(-r12,r22)*180.0/M_PI; + be = atan2(r02,sqrt(r00*r00+r01*r01))*180.0/M_PI; + de = atan2(-r01,r00)*180.0/M_PI; + + rotateall(al,be,de,m); +} + + +/* Compute a fully saturated and bright color based on an angle. */ +static void color(romanboystruct *pp, double angle, float col[4]) +{ + int s; + double t; + + if (pp->colors == COLORS_TWOSIDED) + return; + + if (angle >= 0.0) + angle = fmod(angle,2.0*M_PI); + else + angle = fmod(angle,-2.0*M_PI); + s = floor(angle/(M_PI/3)); + t = angle/(M_PI/3)-s; + if (s >= 6) + s = 0; + switch (s) + { + case 0: + col[0] = 1.0; + col[1] = t; + col[2] = 0.0; + break; + case 1: + col[0] = 1.0-t; + col[1] = 1.0; + col[2] = 0.0; + break; + case 2: + col[0] = 0.0; + col[1] = 1.0; + col[2] = t; + break; + case 3: + col[0] = 0.0; + col[1] = 1.0-t; + col[2] = 1.0; + break; + case 4: + col[0] = t; + col[1] = 0.0; + col[2] = 1.0; + break; + case 5: + col[0] = 1.0; + col[1] = 0.0; + col[2] = 1.0-t; + break; + } + if (pp->display_mode == DISP_TRANSPARENT) + col[3] = 0.7; + else + col[3] = 1.0; +} + + +/* Set up the projective plane colors and texture. */ +static void setup_roman_boy_color_texture(ModeInfo *mi, double umin, + double umax, double vmin, + double vmax, int numu, int numv) +{ + int i, j, k, g; + double u, v, ur, vr; + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + + g = pp->g; + ur = umax-umin; + vr = vmax-vmin; + for (i=0; i<=numv; i++) + { + for (j=0; j<=numu; j++) + { + k = i*(numu+1)+j; + if (pp->appearance != APPEARANCE_DIRECTION_BANDS) + u = -ur*j/numu+umin; + else + u = ur*j/numu+umin; + v = vr*i/numv+vmin; + if (pp->colors == COLORS_DIRECTION) + color(pp,2.0*M_PI-fmod(2.0*u,2.0*M_PI),&pp->col[4*k]); + else /* pp->colors == COLORS_DISTANCE */ + color(pp,v*(5.0/6.0),&pp->col[4*k]); + pp->tex[2*k+0] = -16*g*u/(2.0*M_PI); + if (pp->appearance == APPEARANCE_DISTANCE_BANDS) + pp->tex[2*k+1] = 32*v/(2.0*M_PI)-0.5; + else + pp->tex[2*k+1] = 32*v/(2.0*M_PI); + } + } +} + + +/* Draw a 3d immersion of the projective plane. */ +static int roman_boy(ModeInfo *mi, double umin, double umax, + double vmin, double vmax, int numu, int numv) +{ + int polys = 0; + static const GLfloat mat_diff_red[] = { 1.0, 0.0, 0.0, 1.0 }; + static const GLfloat mat_diff_green[] = { 0.0, 1.0, 0.0, 1.0 }; + static const GLfloat mat_diff_trans_red[] = { 1.0, 0.0, 0.0, 0.7 }; + static const GLfloat mat_diff_trans_green[] = { 0.0, 1.0, 0.0, 0.7 }; + float p[3], pu[3], pv[3], pm[3], n[3], b[3], mat[3][3]; + int i, j, k, l, m, o, g; + double u, v, ur, vr, oz; + double xx[3], xxu[3], xxv[3]; + double r, s, t; + double d, dd, radius; + double cu, su, cgu, sgu, cgm1u, sgm1u, cv, c2v, s2v, cv2; + double sqrt2og, h1m1og, gm1, nomx, nomy, nomux, nomuy, nomvx, nomvy; + double den, den2, denu, denv; + float qu[4], r1[3][3], r2[3][3]; + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + + g = pp->g; + dd = pp->dd; + d = ((6.0*dd-15.0)*dd+10.0)*dd*dd*dd; + r = 1.0+d*d*(1.0/2.0+d*d*(1.0/6.0+d*d*(1.0/3.0))); + radius = 1.0/r; + oz = 0.5*r; + if (pp->view == VIEW_WALK) + { + u = pp->umove; + v = pp->vmove; + if (g & 1) + v = 0.5*M_PI-0.25*v; + else + v = 0.5*M_PI-0.5*v; + sqrt2og = M_SQRT2/g; + h1m1og = 0.5*(1.0-1.0/g); + gm1 = g-1.0; + cu = cos(u); + su = sin(u); + cgu = cos(g*u); + sgu = sin(g*u); + cgm1u = cos(gm1*u); + sgm1u = sin(gm1*u); + cv = cos(v); + c2v = cos(2.0*v); + s2v = sin(2.0*v); + cv2 = cv*cv; + nomx = sqrt2og*cv2*cgm1u+h1m1og*s2v*cu; + nomy = sqrt2og*cv2*sgm1u-h1m1og*s2v*su; + nomux = -sqrt2og*cv2*gm1*sgm1u-h1m1og*s2v*su; + nomuy = sqrt2og*cv2*gm1*cgm1u-h1m1og*s2v*cu; + nomvx = -sqrt2og*s2v*cgm1u+2.0*h1m1og*c2v*cu; + nomvy = -sqrt2og*s2v*sgm1u-2.0*h1m1og*c2v*su; + den = 1.0/(1.0-0.5*M_SQRT2*d*s2v*sgu); + den2 = den*den; + denu = 0.5*M_SQRT2*d*g*cgu*s2v; + denv = M_SQRT2*d*sgu*c2v; + xx[0] = nomx*den; + xx[1] = nomy*den; + xx[2] = cv2*den-oz; + /* Avoid degenerate tangential plane basis vectors. */ + if (0.5*M_PI-fabs(v) < FLT_EPSILON) + { + if (0.5*M_PI-v < FLT_EPSILON) + v = 0.5*M_PI-FLT_EPSILON; + else + v = -0.5*M_PI+FLT_EPSILON; + cv = cos(v); + c2v = cos(2.0*v); + s2v = sin(2.0*v); + cv2 = cv*cv; + nomx = sqrt2og*cv2*cgm1u+h1m1og*s2v*cu; + nomy = sqrt2og*cv2*sgm1u-h1m1og*s2v*su; + nomux = -sqrt2og*cv2*gm1*sgm1u-h1m1og*s2v*su; + nomuy = sqrt2og*cv2*gm1*cgm1u-h1m1og*s2v*cu; + nomvx = -sqrt2og*s2v*cgm1u+2.0*h1m1og*c2v*cu; + nomvy = -sqrt2og*s2v*sgm1u-2.0*h1m1og*c2v*su; + den = 1.0/(1.0-0.5*M_SQRT2*d*s2v*sgu); + den2 = den*den; + denu = 0.5*M_SQRT2*d*g*cgu*s2v; + denv = M_SQRT2*d*sgu*c2v; + } + xxu[0] = nomux*den+nomx*denu*den2; + xxu[1] = nomuy*den+nomy*denu*den2; + xxu[2] = cv2*denu*den2; + xxv[0] = nomvx*den+nomx*denv*den2; + xxv[1] = nomvy*den+nomy*denv*den2; + xxv[2] = -s2v*den+cv2*denv*den2; + for (l=0; l<3; l++) + { + p[l] = xx[l]*radius; + pu[l] = xxu[l]*radius; + pv[l] = xxv[l]*radius; + } + n[0] = pu[1]*pv[2]-pu[2]*pv[1]; + n[1] = pu[2]*pv[0]-pu[0]*pv[2]; + n[2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/(pp->side*4.0*sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2])); + n[0] *= t; + n[1] *= t; + n[2] *= t; + pm[0] = pu[0]*pp->dumove-pv[0]*0.25*pp->dvmove; + pm[1] = pu[1]*pp->dumove-pv[1]*0.25*pp->dvmove; + pm[2] = pu[2]*pp->dumove-pv[2]*0.25*pp->dvmove; + t = 1.0/(4.0*sqrt(pm[0]*pm[0]+pm[1]*pm[1]+pm[2]*pm[2])); + pm[0] *= t; + pm[1] *= t; + pm[2] *= t; + b[0] = n[1]*pm[2]-n[2]*pm[1]; + b[1] = n[2]*pm[0]-n[0]*pm[2]; + b[2] = n[0]*pm[1]-n[1]*pm[0]; + t = 1.0/(4.0*sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2])); + b[0] *= t; + b[1] *= t; + b[2] *= t; + + /* Compute alpha, beta, gamma from the three basis vectors. + | -b[0] -b[1] -b[2] | + m = | n[0] n[1] n[2] | + | -pm[0] -pm[1] -pm[2] | + */ + pp->alpha = atan2(-n[2],-pm[2])*180/M_PI; + pp->beta = atan2(-b[2],sqrt(b[0]*b[0]+b[1]*b[1]))*180/M_PI; + pp->delta = atan2(b[1],-b[0])*180/M_PI; + + /* Compute the rotation that rotates the projective plane in 3D. */ + rotateall(pp->alpha,pp->beta,pp->delta,mat); + + u = pp->umove; + v = pp->vmove; + if (g & 1) + v = 0.5*M_PI-0.25*v; + else + v = 0.5*M_PI-0.5*v; + sqrt2og = M_SQRT2/g; + h1m1og = 0.5*(1.0-1.0/g); + gm1 = g-1.0; + cu = cos(u); + su = sin(u); + sgu = sin(g*u); + cgm1u = cos(gm1*u); + sgm1u = sin(gm1*u); + cv = cos(v); + s2v = sin(2.0*v); + cv2 = cv*cv; + nomx = sqrt2og*cv2*cgm1u+h1m1og*s2v*cu; + nomy = sqrt2og*cv2*sgm1u-h1m1og*s2v*su; + den = 1.0/(1.0-0.5*M_SQRT2*d*s2v*sgu); + xx[0] = nomx*den; + xx[1] = nomy*den; + xx[2] = cv2*den-oz; + for (l=0; l<3; l++) + { + r = 0.0; + for (m=0; m<3; m++) + r += mat[l][m]*xx[m]; + p[l] = r*radius; + } + + pp->offset3d[0] = -p[0]; + pp->offset3d[1] = -p[1]-DELTAY; + pp->offset3d[2] = -p[2]; + } + else + { + /* Compute the rotation that rotates the projective plane in 3D, + including the trackball rotations. */ + rotateall(pp->alpha,pp->beta,pp->delta,r1); + + gltrackball_get_quaternion(pp->trackball,qu); + quat_to_rotmat(qu,r2); + + mult_rotmat(r2,r1,mat); + } + + if (pp->colors == COLORS_TWOSIDED) + { + glColor3fv(mat_diff_red); + if (pp->display_mode == DISP_TRANSPARENT) + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_trans_green); + } + else + { + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_diff_red); + glMaterialfv(GL_BACK,GL_AMBIENT_AND_DIFFUSE,mat_diff_green); + } + } + glBindTexture(GL_TEXTURE_2D,pp->tex_name); + + ur = umax-umin; + vr = vmax-vmin; + + /* Set up the projective plane coordinates and normals. */ + if (pp->appearance != APPEARANCE_DIRECTION_BANDS) + { + for (i=0; i<=numv; i++) + { + if (pp->appearance == APPEARANCE_DISTANCE_BANDS && + ((i & (NUMB-1)) >= NUMB/4+1) && ((i & (NUMB-1)) < 3*NUMB/4)) + continue; + for (j=0; j<=numu; j++) + { + o = i*(numu+1)+j; + u = ur*j/numu+umin; + v = vr*i/numv+vmin; + if (g & 1) + v = 0.5*M_PI-0.25*v; + else + v = 0.5*M_PI-0.5*v; + sqrt2og = M_SQRT2/g; + h1m1og = 0.5*(1.0-1.0/g); + gm1 = g-1.0; + cu = cos(u); + su = sin(u); + cgu = cos(g*u); + sgu = sin(g*u); + cgm1u = cos(gm1*u); + sgm1u = sin(gm1*u); + cv = cos(v); + c2v = cos(2.0*v); + s2v = sin(2.0*v); + cv2 = cv*cv; + nomx = sqrt2og*cv2*cgm1u+h1m1og*s2v*cu; + nomy = sqrt2og*cv2*sgm1u-h1m1og*s2v*su; + nomux = -sqrt2og*cv2*gm1*sgm1u-h1m1og*s2v*su; + nomuy = sqrt2og*cv2*gm1*cgm1u-h1m1og*s2v*cu; + nomvx = -sqrt2og*s2v*cgm1u+2.0*h1m1og*c2v*cu; + nomvy = -sqrt2og*s2v*sgm1u-2.0*h1m1og*c2v*su; + den = 1.0/(1.0-0.5*M_SQRT2*d*s2v*sgu); + den2 = den*den; + denu = 0.5*M_SQRT2*d*g*cgu*s2v; + denv = M_SQRT2*d*sgu*c2v; + xx[0] = nomx*den; + xx[1] = nomy*den; + xx[2] = cv2*den-oz; + /* Avoid degenerate tangential plane basis vectors. */ + if (0.5*M_PI-fabs(v) < FLT_EPSILON) + { + if (0.5*M_PI-v < FLT_EPSILON) + v = 0.5*M_PI-FLT_EPSILON; + else + v = -0.5*M_PI+FLT_EPSILON; + cv = cos(v); + c2v = cos(2.0*v); + s2v = sin(2.0*v); + cv2 = cv*cv; + nomx = sqrt2og*cv2*cgm1u+h1m1og*s2v*cu; + nomy = sqrt2og*cv2*sgm1u-h1m1og*s2v*su; + nomux = -sqrt2og*cv2*gm1*sgm1u-h1m1og*s2v*su; + nomuy = sqrt2og*cv2*gm1*cgm1u-h1m1og*s2v*cu; + nomvx = -sqrt2og*s2v*cgm1u+2.0*h1m1og*c2v*cu; + nomvy = -sqrt2og*s2v*sgm1u-2.0*h1m1og*c2v*su; + den = 1.0/(1.0-0.5*M_SQRT2*d*s2v*sgu); + den2 = den*den; + denu = 0.5*M_SQRT2*d*g*cgu*s2v; + denv = M_SQRT2*d*sgu*c2v; + } + xxu[0] = nomux*den+nomx*denu*den2; + xxu[1] = nomuy*den+nomy*denu*den2; + xxu[2] = cv2*denu*den2; + xxv[0] = nomvx*den+nomx*denv*den2; + xxv[1] = nomvy*den+nomy*denv*den2; + xxv[2] = -s2v*den+cv2*denv*den2; + for (l=0; l<3; l++) + { + r = 0.0; + s = 0.0; + t = 0.0; + for (m=0; m<3; m++) + { + r += mat[l][m]*xx[m]; + s += mat[l][m]*xxu[m]; + t += mat[l][m]*xxv[m]; + } + p[l] = r*radius+pp->offset3d[l]; + pu[l] = s*radius; + pv[l] = t*radius; + } + n[0] = pu[1]*pv[2]-pu[2]*pv[1]; + n[1] = pu[2]*pv[0]-pu[0]*pv[2]; + n[2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]); + n[0] *= t; + n[1] *= t; + n[2] *= t; + pp->pp[3*o+0] = p[0]; + pp->pp[3*o+1] = p[1]; + pp->pp[3*o+2] = p[2]; + pp->pn[3*o+0] = n[0]; + pp->pn[3*o+1] = n[1]; + pp->pn[3*o+2] = n[2]; + } + } + } + else /* pp->appearance == APPEARANCE_DIRECTION_BANDS */ + { + for (j=0; j<=numu; j++) + { + if ((j & (NUMB-1)) >= NUMB/2+1) + continue; + for (i=0; i<=numv; i++) + { + o = i*(numu+1)+j; + u = -ur*j/numu+umin; + v = vr*i/numv+vmin; + if (g & 1) + v = 0.5*M_PI-0.25*v; + else + v = 0.5*M_PI-0.5*v; + sqrt2og = M_SQRT2/g; + h1m1og = 0.5*(1.0-1.0/g); + gm1 = g-1.0; + cu = cos(u); + su = sin(u); + cgu = cos(g*u); + sgu = sin(g*u); + cgm1u = cos(gm1*u); + sgm1u = sin(gm1*u); + cv = cos(v); + c2v = cos(2.0*v); + s2v = sin(2.0*v); + cv2 = cv*cv; + nomx = sqrt2og*cv2*cgm1u+h1m1og*s2v*cu; + nomy = sqrt2og*cv2*sgm1u-h1m1og*s2v*su; + nomux = -sqrt2og*cv2*gm1*sgm1u-h1m1og*s2v*su; + nomuy = sqrt2og*cv2*gm1*cgm1u-h1m1og*s2v*cu; + nomvx = -sqrt2og*s2v*cgm1u+2.0*h1m1og*c2v*cu; + nomvy = -sqrt2og*s2v*sgm1u-2.0*h1m1og*c2v*su; + den = 1.0/(1.0-0.5*M_SQRT2*d*s2v*sgu); + den2 = den*den; + denu = 0.5*M_SQRT2*d*g*cgu*s2v; + denv = M_SQRT2*d*sgu*c2v; + xx[0] = nomx*den; + xx[1] = nomy*den; + xx[2] = cv2*den-oz; + /* Avoid degenerate tangential plane basis vectors. */ + if (0.5*M_PI-fabs(v) < FLT_EPSILON) + { + if (0.5*M_PI-v < FLT_EPSILON) + v = 0.5*M_PI-FLT_EPSILON; + else + v = -0.5*M_PI+FLT_EPSILON; + cv = cos(v); + c2v = cos(2.0*v); + s2v = sin(2.0*v); + cv2 = cv*cv; + nomx = sqrt2og*cv2*cgm1u+h1m1og*s2v*cu; + nomy = sqrt2og*cv2*sgm1u-h1m1og*s2v*su; + nomux = -sqrt2og*cv2*gm1*sgm1u-h1m1og*s2v*su; + nomuy = sqrt2og*cv2*gm1*cgm1u-h1m1og*s2v*cu; + nomvx = -sqrt2og*s2v*cgm1u+2.0*h1m1og*c2v*cu; + nomvy = -sqrt2og*s2v*sgm1u-2.0*h1m1og*c2v*su; + den = 1.0/(1.0-0.5*M_SQRT2*d*s2v*sgu); + den2 = den*den; + denu = 0.5*M_SQRT2*d*g*cgu*s2v; + denv = M_SQRT2*d*sgu*c2v; + } + xxu[0] = nomux*den+nomx*denu*den2; + xxu[1] = nomuy*den+nomy*denu*den2; + xxu[2] = cv2*denu*den2; + xxv[0] = nomvx*den+nomx*denv*den2; + xxv[1] = nomvy*den+nomy*denv*den2; + xxv[2] = -s2v*den+cv2*denv*den2; + for (l=0; l<3; l++) + { + r = 0.0; + s = 0.0; + t = 0.0; + for (m=0; m<3; m++) + { + r += mat[l][m]*xx[m]; + s += mat[l][m]*xxu[m]; + t += mat[l][m]*xxv[m]; + } + p[l] = r*radius+pp->offset3d[l]; + pu[l] = s*radius; + pv[l] = t*radius; + } + n[0] = pu[1]*pv[2]-pu[2]*pv[1]; + n[1] = pu[2]*pv[0]-pu[0]*pv[2]; + n[2] = pu[0]*pv[1]-pu[1]*pv[0]; + t = 1.0/sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]); + n[0] *= t; + n[1] *= t; + n[2] *= t; + pp->pp[3*o+0] = p[0]; + pp->pp[3*o+1] = p[1]; + pp->pp[3*o+2] = p[2]; + pp->pn[3*o+0] = n[0]; + pp->pn[3*o+1] = n[1]; + pp->pn[3*o+2] = n[2]; + } + } + } + + if (pp->appearance != APPEARANCE_DIRECTION_BANDS) + { + for (i=0; iappearance == APPEARANCE_DISTANCE_BANDS && + ((i & (NUMB-1)) >= NUMB/4) && ((i & (NUMB-1)) < 3*NUMB/4)) + continue; + if (pp->display_mode == DISP_WIREFRAME) + glBegin(GL_QUAD_STRIP); + else + glBegin(GL_TRIANGLE_STRIP); + for (j=0; j<=numu; j++) + { + for (k=0; k<=1; k++) + { + l = (i+k); + m = j; + o = l*(numu+1)+m; + glTexCoord2fv(&pp->tex[2*o]); + if (pp->colors != COLORS_TWOSIDED) + { + glColor3fv(&pp->col[4*o]); + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE, + &pp->col[4*o]); + } + glNormal3fv(&pp->pn[3*o]); + glVertex3fv(&pp->pp[3*o]); + polys++; + } + } + glEnd(); + } + } + else /* pp->appearance == APPEARANCE_DIRECTION_BANDS */ + { + for (j=0; j= NUMB/2) + continue; + if (pp->display_mode == DISP_WIREFRAME) + glBegin(GL_QUAD_STRIP); + else + glBegin(GL_TRIANGLE_STRIP); + for (i=0; i<=numv; i++) + { + for (k=0; k<=1; k++) + { + l = i; + m = (j+k); + o = l*(numu+1)+m; + glTexCoord2fv(&pp->tex[2*o]); + if (pp->colors != COLORS_TWOSIDED) + { + glColor3fv(&pp->col[4*o]); + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE, + &pp->col[4*o]); + } + glNormal3fv(&pp->pn[3*o]); + glVertex3fv(&pp->pp[3*o]); + polys++; + } + } + glEnd(); + } + } + + polys /= 2; + return polys; +} + + +/* Generate a texture image that shows the orientation reversal. */ +static void gen_texture(ModeInfo *mi) +{ + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + + glGenTextures(1,&pp->tex_name); + glBindTexture(GL_TEXTURE_2D,pp->tex_name); + glPixelStorei(GL_UNPACK_ALIGNMENT,1); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); + glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); + glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,TEX_DIMENSION,TEX_DIMENSION,0, + GL_LUMINANCE,GL_UNSIGNED_BYTE,texture); +} + + +static void init(ModeInfo *mi) +{ + static const GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; + static const GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; + static const GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + + if (deform_speed == 0.0) + deform_speed = 10.0; + + if (init_deform < 0.0) + init_deform = 0.0; + if (init_deform > 1000.0) + init_deform = 1000.0; + + if (walk_speed == 0.0) + walk_speed = 20.0; + + if (pp->view == VIEW_TURN) + { + pp->alpha = frand(360.0); + pp->beta = frand(360.0); + pp->delta = frand(360.0); + } + else + { + pp->alpha = 0.0; + pp->beta = 0.0; + pp->delta = 0.0; + } + pp->umove = frand(2.0*M_PI); + pp->vmove = frand(2.0*M_PI); + pp->dumove = 0.0; + pp->dvmove = 0.0; + pp->side = 1; + if (sin(walk_direction*M_PI/180.0) >= 0.0) + pp->dir = 1; + else + pp->dir = -1; + + pp->dd = init_deform*0.001; + pp->defdir = -1; + + pp->offset3d[0] = 0.0; + pp->offset3d[1] = 0.0; + pp->offset3d[2] = -1.8; + + gen_texture(mi); + setup_roman_boy_color_texture(mi,0.0,2.0*M_PI,0.0,2.0*M_PI,pp->g*NUMU,NUMV); + + if (pp->marks) + glEnable(GL_TEXTURE_2D); + else + glDisable(GL_TEXTURE_2D); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (pp->projection == DISP_PERSPECTIVE || pp->view == VIEW_WALK) + { + if (pp->view == VIEW_WALK) + gluPerspective(60.0,1.0,0.01,10.0); + else + gluPerspective(60.0,1.0,0.1,10.0); + } + else + { + glOrtho(-1.0,1.0,-1.0,1.0,0.1,10.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + if (pp->display_mode == DISP_WIREFRAME) + pp->display_mode = DISP_SURFACE; +# endif + + if (pp->display_mode == DISP_SURFACE) + { + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LESS); + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,50.0); + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + } + else if (pp->display_mode == DISP_TRANSPARENT) + { + glDisable(GL_DEPTH_TEST); + glShadeModel(GL_SMOOTH); + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); + glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); + glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); + glLightfv(GL_LIGHT0,GL_POSITION,light_position); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,50.0); + glDepthMask(GL_FALSE); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + } + else /* pp->display_mode == DISP_WIREFRAME */ + { + glDisable(GL_DEPTH_TEST); + glShadeModel(GL_FLAT); + glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); + glDisable(GL_LIGHTING); + glDisable(GL_LIGHT0); + glDisable(GL_BLEND); + } +} + + +/* Redisplay the Klein bottle. */ +static void display_romanboy(ModeInfo *mi) +{ + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + + if (!pp->button_pressed) + { + if (deform) + { + pp->dd += pp->defdir*deform_speed*0.001; + if (pp->dd < 0.0) + { + pp->dd = -pp->dd; + pp->defdir = -pp->defdir; + } + if (pp->dd > 1.0) + { + pp->dd = 2.0-pp->dd; + pp->defdir = -pp->defdir; + } + } + if (pp->view == VIEW_TURN) + { + pp->alpha += speed_x * pp->speed_scale; + if (pp->alpha >= 360.0) + pp->alpha -= 360.0; + pp->beta += speed_y * pp->speed_scale; + if (pp->beta >= 360.0) + pp->beta -= 360.0; + pp->delta += speed_z * pp->speed_scale; + if (pp->delta >= 360.0) + pp->delta -= 360.0; + } + if (pp->view == VIEW_WALK) + { + pp->dvmove = (pp->dir*sin(walk_direction*M_PI/180.0)* + walk_speed*M_PI/4096.0); + pp->vmove += pp->dvmove; + if (pp->vmove > 2.0*M_PI) + { + pp->vmove = 4.0*M_PI-pp->vmove; + pp->umove = pp->umove-M_PI; + if (pp->umove < 0.0) + pp->umove += 2.0*M_PI; + pp->side = -pp->side; + pp->dir = -pp->dir; + pp->dvmove = -pp->dvmove; + } + if (pp->vmove < 0.0) + { + pp->vmove = -pp->vmove; + pp->umove = pp->umove-M_PI; + if (pp->umove < 0.0) + pp->umove += 2.0*M_PI; + pp->dir = -pp->dir; + pp->dvmove = -pp->dvmove; + } + pp->dumove = cos(walk_direction*M_PI/180.0)*walk_speed*M_PI/4096.0; + pp->umove += pp->dumove; + if (pp->umove >= 2.0*M_PI) + pp->umove -= 2.0*M_PI; + if (pp->umove < 0.0) + pp->umove += 2.0*M_PI; + } + } + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (pp->projection == DISP_PERSPECTIVE || pp->view == VIEW_WALK) + { + if (pp->view == VIEW_WALK) + gluPerspective(60.0,pp->aspect,0.01,10.0); + else + gluPerspective(60.0,pp->aspect,0.1,10.0); + } + else + { + if (pp->aspect >= 1.0) + glOrtho(-pp->aspect,pp->aspect,-1.0,1.0,0.1,10.0); + else + glOrtho(-1.0,1.0,-1.0/pp->aspect,1.0/pp->aspect,0.1,10.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + mi->polygon_count = roman_boy(mi,0.0,2.0*M_PI,0.0,2.0*M_PI,pp->g*NUMU,NUMV); +} + + +ENTRYPOINT void reshape_romanboy(ModeInfo *mi, int width, int height) +{ + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + } + + pp->WindW = (GLint)width; + pp->WindH = (GLint)height; + glViewport(0,y,width,height); + pp->aspect = (GLfloat)width/(GLfloat)height; +} + + +ENTRYPOINT Bool romanboy_handle_event(ModeInfo *mi, XEvent *event) +{ + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && event->xbutton.button == Button1) + { + pp->button_pressed = True; + gltrackball_start(pp->trackball, event->xbutton.x, event->xbutton.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + pp->button_pressed = False; + return True; + } + else if (event->xany.type == MotionNotify && pp->button_pressed) + { + gltrackball_track(pp->trackball, event->xmotion.x, event->xmotion.y, + MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + + return False; +} + + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Xlock hooks. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +/* + *----------------------------------------------------------------------------- + * Initialize romanboy. Called each time the window changes. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void init_romanboy(ModeInfo *mi) +{ + romanboystruct *pp; + + MI_INIT (mi, romanboy); + pp = &romanboy[MI_SCREEN(mi)]; + + if (surface_order < 2) + pp->g = 2; + else if (surface_order > 9) + pp->g = 9; + else + pp->g = surface_order; + + pp->pp = calloc(3*pp->g*(NUMU+1)*(NUMV+1),sizeof(float)); + pp->pn = calloc(3*pp->g*(NUMU+1)*(NUMV+1),sizeof(float)); + pp->col = calloc(4*pp->g*(NUMU+1)*(NUMV+1),sizeof(float)); + pp->tex = calloc(2*pp->g*(NUMU+1)*(NUMV+1),sizeof(float)); + + pp->trackball = gltrackball_init(True); + pp->button_pressed = False; + + /* Set the display mode. */ + if (!strcasecmp(mode,"random")) + { + pp->display_mode = random() % NUM_DISPLAY_MODES; + } + else if (!strcasecmp(mode,"wireframe")) + { + pp->display_mode = DISP_WIREFRAME; + } + else if (!strcasecmp(mode,"surface")) + { + pp->display_mode = DISP_SURFACE; + } + else if (!strcasecmp(mode,"transparent")) + { + pp->display_mode = DISP_TRANSPARENT; + } + else + { + pp->display_mode = random() % NUM_DISPLAY_MODES; + } + + pp->marks = marks; + + /* Orientation marks don't make sense in wireframe mode. */ + if (pp->display_mode == DISP_WIREFRAME) + pp->marks = False; + + /* Set the appearance. */ + if (!strcasecmp(appear,"random")) + { + pp->appearance = random() % NUM_APPEARANCES; + } + else if (!strcasecmp(appear,"solid")) + { + pp->appearance = APPEARANCE_SOLID; + } + else if (!strcasecmp(appear,"distance-bands")) + { + pp->appearance = APPEARANCE_DISTANCE_BANDS; + } + else if (!strcasecmp(appear,"direction-bands")) + { + pp->appearance = APPEARANCE_DIRECTION_BANDS; + } + else + { + pp->appearance = random() % NUM_APPEARANCES; + } + + /* Set the color mode. */ + if (!strcasecmp(color_mode,"random")) + { + pp->colors = random() % NUM_COLORS; + } + else if (!strcasecmp(color_mode,"two-sided")) + { + pp->colors = COLORS_TWOSIDED; + } + else if (!strcasecmp(color_mode,"distance")) + { + pp->colors = COLORS_DISTANCE; + } + else if (!strcasecmp(color_mode,"direction")) + { + pp->colors = COLORS_DIRECTION; + } + else + { + pp->colors = random() % NUM_COLORS; + } + + /* Set the view mode. */ + if (!strcasecmp(view_mode,"random")) + { + pp->view = random() % NUM_VIEW_MODES; + } + else if (!strcasecmp(view_mode,"walk")) + { + pp->view = VIEW_WALK; + } + else if (!strcasecmp(view_mode,"turn")) + { + pp->view = VIEW_TURN; + } + else + { + pp->view = random() % NUM_VIEW_MODES; + } + + /* Set the 3d projection mode. */ + if (!strcasecmp(proj,"random")) + { + /* Orthographic projection only makes sense in turn mode. */ + if (pp->view == VIEW_TURN) + pp->projection = random() % NUM_DISP_MODES; + else + pp->projection = DISP_PERSPECTIVE; + } + else if (!strcasecmp(proj,"perspective")) + { + pp->projection = DISP_PERSPECTIVE; + } + else if (!strcasecmp(proj,"orthographic")) + { + pp->projection = DISP_ORTHOGRAPHIC; + } + else + { + /* Orthographic projection only makes sense in turn mode. */ + if (pp->view == VIEW_TURN) + pp->projection = random() % NUM_DISP_MODES; + else + pp->projection = DISP_PERSPECTIVE; + } + + /* make multiple screens rotate at slightly different rates. */ + pp->speed_scale = 0.9 + frand(0.3); + + if ((pp->glx_context = init_GL(mi)) != NULL) + { + reshape_romanboy(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + init(mi); + } + else + { + MI_CLEARWINDOW(mi); + } +} + +/* + *----------------------------------------------------------------------------- + * Called by the mainline code periodically to update the display. + *----------------------------------------------------------------------------- + */ +ENTRYPOINT void draw_romanboy(ModeInfo *mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + romanboystruct *pp; + + if (romanboy == NULL) + return; + pp = &romanboy[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + if (!pp->glx_context) + return; + + glXMakeCurrent(display,window,*(pp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + + display_romanboy(mi); + + if (MI_IS_FPS(mi)) + do_fps (mi); + + glFlush(); + + glXSwapBuffers(display,window); +} + + +/* + *----------------------------------------------------------------------------- + * The display is being taken away from us. Free up malloc'ed + * memory and X resources that we've alloc'ed. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void free_romanboy(ModeInfo *mi) +{ + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + + if (pp->pp) + (void) free((void *)pp->pp); + if (pp->pn) + (void) free((void *)pp->pn); + if (pp->col) + (void) free((void *)pp->col); + if (pp->tex) + (void) free((void *)pp->tex); +} + +#ifndef STANDALONE +ENTRYPOINT void change_romanboy(ModeInfo *mi) +{ + romanboystruct *pp = &romanboy[MI_SCREEN(mi)]; + + if (!pp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(pp->glx_context)); + init(mi); +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("RomanBoy", romanboy) + +#endif /* USE_GL */ diff --git a/hacks/glx/romanboy.man b/hacks/glx/romanboy.man new file mode 100644 index 0000000..2957a0e --- /dev/null +++ b/hacks/glx/romanboy.man @@ -0,0 +1,390 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +romanboy - Draws a 3d immersion of the real projective plane that +smoothly deforms between the Roman surface and the Boy surface. +.SH SYNOPSIS +.B romanboy +[\-display \fIhost:display.screen\fP] +[\-install] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fIusecs\fP] +[\-fps] +[\-mode \fIdisplay-mode\fP] +[\-wireframe] +[\-surface] +[\-transparent] +[\-appearance \fIappearance\fP] +[\-solid] +[\-distance-bands] +[\-direction-bands] +[\-colors \fIcolor-scheme\fP] +[\-twosided-colors] +[\-distance-colors] +[\-direction-colors] +[\-view-mode \fIview-mode\fP] +[\-walk] +[\-turn] +[\-no-deform] +[\-deformation-speed \fIfloat\fP] +[\-initial-deformation \fIfloat\fP] +[\-roman] +[\-boy] +[\-surface-order \fInumber\fP] +[\-orientation-marks] +[\-projection \fImode\fP] +[\-perspective] +[\-orthographic] +[\-speed-x \fIfloat\fP] +[\-speed-y \fIfloat\fP] +[\-speed-z \fIfloat\fP] +[\-walk-direction \fIfloat\fP] +[\-walk-speed \fIfloat\fP] +.SH DESCRIPTION +The \fIromanboy\fP program shows a 3d immersion of the real projective +plane that smoothly deforms between the Roman surface and the Boy +surface. You can walk on the projective plane or turn in 3d. The +smooth deformation (homotopy) between these two famous immersions of +the real projective plane was constructed by Franois Apry. +.PP +The real projective plane is a non-orientable surface. To make this +apparent, the two-sided color mode can be used. Alternatively, +orientation markers (curling arrows) can be drawn as a texture map on +the surface of the projective plane. While walking on the projective +plane, you will notice that the orientation of the curling arrows +changes (which it must because the projective plane is +non-orientable). +.PP +The real projective plane is a model for the projective geometry in 2d +space. One point can be singled out as the origin. A line can be +singled out as the line at infinity, i.e., a line that lies at an +infinite distance to the origin. The line at infinity is +topologically a circle. Points on the line at infinity are also used +to model directions in projective geometry. The origin can be +visualized in different manners. When using distance colors, the +origin is the point that is displayed as fully saturated red, which is +easier to see as the center of the reddish area on the projective +plane. Alternatively, when using distance bands, the origin is the +center of the only band that projects to a disk. When using direction +bands, the origin is the point where all direction bands collapse to a +point. Finally, when orientation markers are being displayed, the +origin the the point where all orientation markers are compressed to a +point. The line at infinity can also be visualized in different ways. +When using distance colors, the line at infinity is the line that is +displayed as fully saturated magenta. When two-sided colors are used, +the line at infinity lies at the points where the red and green +"sides" of the projective plane meet (of course, the real projective +plane only has one side, so this is a design choice of the +visualization). Alternatively, when orientation markers are being +displayed, the line at infinity is the place where the orientation +markers change their orientation. +.PP +Note that when the projective plane is displayed with bands, the +orientation markers are placed in the middle of the bands. For +distance bands, the bands are chosen in such a way that the band at +the origin is only half as wide as the remaining bands, which results +in a disk being displayed at the origin that has the same diameter as +the remaining bands. This choice, however, also implies that the band +at infinity is half as wide as the other bands. Since the projective +plane is attached to itself (in a complicated fashion) at the line at +infinity, effectively the band at infinity is again as wide as the +remaining bands. However, since the orientation markers are displayed +in the middle of the bands, this means that only one half of the +orientation markers will be displayed twice at the line at infinity if +distance bands are used. If direction bands are used or if the +projective plane is displayed as a solid surface, the orientation +markers are displayed fully at the respective sides of the line at +infinity. +.PP +The immersed projective plane can be projected to the screen either +perspectively or orthographically. When using the walking modes, +perspective projection to the screen will be used. +.PP +There are three display modes for the projective plane: mesh +(wireframe), solid, or transparent. Furthermore, the appearance of +the projective plane can be as a solid object or as a set of +see-through bands. The bands can be distance bands, i.e., bands that +lie at increasing distances from the origin, or direction bands, i.e., +bands that lie at increasing angles with respect to the origin. +.PP +When the projective plane is displayed with direction bands, you will +be able to see that each direction band (modulo the "pinching" at the +origin) is a Moebius strip, which also shows that the projective plane +is non-orientable. +.PP +Finally, the colors with with the projective plane is drawn can be set +to two-sided, distance, or direction. In two-sided mode, the +projective plane is drawn with red on one "side" and green on the +"other side". As described above, the projective plane only has one +side, so the color jumps from red to green along the line at infinity. +This mode enables you to see that the projective plane is +non-orientable. In distance mode, the projective plane is displayed +with fully saturated colors that depend on the distance of the points +on the projective plane to the origin. The origin is displayed in +red, the line at infinity is displayed in magenta. If the projective +plane is displayed as distance bands, each band will be displayed with +a different color. In direction mode, the projective plane is +displayed with fully saturated colors that depend on the angle of the +points on the projective plane with respect to the origin. Angles in +opposite directions to the origin (e.g., 15 and 205 degrees) are +displayed in the same color since they are projectively equivalent. +If the projective plane is displayed as direction bands, each band +will be displayed with a different color. +.PP +The rotation speed for each of the three coordinate axes around which +the projective plane rotates can be chosen. +.PP +Furthermore, in the walking mode the walking direction in the 2d base +square of the projective plane and the walking speed can be chosen. +The walking direction is measured as an angle in degrees in the 2d +square that forms the coordinate system of the surface of the +projective plane. A value of 0 or 180 means that the walk is along a +circle at a randomly chosen distance from the origin (parallel to a +distance band). A value of 90 or 270 means that the walk is directly +from the origin to the line at infinity and back (analogous to a +direction band). Any other value results in a curved path from the +origin to the line at infinity and back. +.PP +By default, the immersion of the real projective plane smoothly +deforms between the Roman and Boy surfaces. It is possible to choose +the speed of the deformation. Furthermore, it is possible to switch +the deformation off. It is also possible to determine the initial +deformation of the immersion. This is mostly useful if the +deformation is switched off, in which case it will determine the +appearance of the surface. +.PP +As a final option, it is possible to display generalized versions of +the immersion discussed above by specifying the order of the surface. +The default surface order of 3 results in the immersion of the real +projective described above. The surface order can be chosen between 2 +and 9. Odd surface orders result in generalized immersions of the +real projective plane, while even numbers result in a immersion of a +topological sphere (which is orientable). The most interesting even +case is a surface order of 2, which results in an immersion of the +halfway model of Morin's sphere eversion (if the deformation is +switched off). +.PP +This program is inspired by Franois Apry's book "Models of the Real +Projective Plane", Vieweg, 1987. +.SH OPTIONS +.I romanboy +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual +class, or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +How much of a delay should be introduced between steps of the +animation. Default 10000, or 1/100th second. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.PP +The following four options are mutually exclusive. They determine how +the projective plane is displayed. +.TP 8 +.B \-mode random +Display the projective plane in a random display mode (default). +.TP 8 +.B \-mode wireframe \fP(Shortcut: \fB\-wireframe\fP) +Display the projective plane as a wireframe mesh. +.TP 8 +.B \-mode surface \fP(Shortcut: \fB\-surface\fP) +Display the projective plane as a solid surface. +.TP 8 +.B \-mode transparent \fP(Shortcut: \fB\-transparent\fP) +Display the projective plane as a transparent surface. +.PP +The following four options are mutually exclusive. They determine the +appearance of the projective plane. +.TP 8 +.B \-appearance random +Display the projective plane with a random appearance (default). +.TP 8 +.B \-appearance solid \fP(Shortcut: \fB\-solid\fP) +Display the projective plane as a solid object. +.TP 8 +.B \-appearance distance-bands \fP(Shortcut: \fB\-distance-bands\fP) +Display the projective plane as see-through bands that lie at +increasing distances from the origin. +.PP +.TP 8 +.B \-appearance direction-bands \fP(Shortcut: \fB\-direction-bands\fP) +Display the projective plane as see-through bands that lie at +increasing angles with respect to the origin. +.PP +The following four options are mutually exclusive. They determine how +to color the projective plane. +.TP 8 +.B \-colors random +Display the projective plane with a random color scheme (default). +.TP 8 +.B \-colors twosided \fP(Shortcut: \fB\-twosided-colors\fP) +Display the projective plane with two colors: red on one "side" and +green on the "other side." Note that the line at infinity lies at the +points where the red and green "sides" of the projective plane meet, +i.e., where the orientation of the projective plane reverses. +.TP 8 +.B \-colors distance \fP(Shortcut: \fB\-distance-colors\fP) +Display the projective plane with fully saturated colors that depend +on the distance of the points on the projective plane to the origin. +The origin is displayed in red, the line at infinity is displayed in +magenta. If the projective plane is displayed as distance bands, each +band will be displayed with a different color. +.TP 8 +.B \-colors direction \fP(Shortcut: \fB\-direction-colors\fP) +Display the projective plane with fully saturated colors that depend +on the angle of the points on the projective plane with respect to the +origin. Angles in opposite directions to the origin (e.g., 15 and 205 +degrees) are displayed in the same color since they are projectively +equivalent. If the projective plane is displayed as direction bands, +each band will be displayed with a different color. +.PP +The following three options are mutually exclusive. They determine +how to view the projective plane. +.TP 8 +.B \-view-mode random +View the projective plane in a random view mode (default). +.TP 8 +.B \-view-mode turn \fP(Shortcut: \fB\-turn\fP) +View the projective plane while it turns in 3d. +.TP 8 +.B \-view-mode walk \fP(Shortcut: \fB\-walk\fP) +View the projective plane as if walking on its surface. +.PP +The following options determine whether the surface is being deformed. +.TP 8 +.B \-deform +Deform the surface smoothly between the Roman and Boy surfaces +(default). +.TP 8 +.B \-no-deform +Don't deform the surface. +.PP +The following option determines the deformation speed. +.TP 8 +.B \-deformation-speed \fIfloat\fP +The deformation speed is measured in percent of some sensible maximum +speed (default: 10.0). +.PP +The following options determine the initial deformation of the +surface. As described above, this is mostly useful if +\fB\-no-deform\fP is specified. +.TP 8 +.B \-initial-deformation \fIfloat\fP +The initial deformation is specified as a number between 0 and 1000. +A value of 0 corresponds to the Roman surface, while a value of 1000 +corresponds to the Boy surface. The default value is 1000. +.TP 8 +.B \-roman +This is a shortcut for \fB\-initial-deformation 0\fP. +.TP 8 +.B \-boy +This is a shortcut for \fB\-initial-deformation 1000\fP. +.PP +The following option determines the order of the surface to be +displayed. +.TP 8 +.B \-surface-order \fInumber\fP +The surface order can be set to values between 2 and 9 (default: 3). +As described above, odd surface orders result in generalized +immersions of the real projective plane, while even numbers result in +a immersion of a topological sphere. +.PP +The following options determine whether orientation marks are shown on +the projective plane. +.TP 8 +.B \-orientation-marks +Display orientation marks on the projective plane. +.TP 8 +.B \-no-orientation-marks +Don't display orientation marks on the projective plane (default). +.PP +The following three options are mutually exclusive. They determine +how the projective plane is projected from 3d to 2d (i.e., to the +screen). +.TP 8 +.B \-projection random +Project the projective plane from 3d to 2d using a random projection +mode (default). +.TP 8 +.B \-projection perspective \fP(Shortcut: \fB\-perspective\fP) +Project the projective plane from 3d to 2d using a perspective +projection. +.TP 8 +.B \-projection orthographic \fP(Shortcut: \fB\-orthographic\fP) +Project the projective plane from 3d to 2d using an orthographic +projection. +.PP +The following three options determine the rotation speed of the +projective plane around the three possible axes. The rotation speed +is measured in degrees per frame. The speeds should be set to +relatively small values, e.g., less than 4 in magnitude. In walk +mode, all speeds are ignored. +.TP 8 +.B \-speed-x \fIfloat\fP +Rotation speed around the x axis (default: 1.1). +.TP 8 +.B \-speed-y \fIfloat\fP +Rotation speed around the y axis (default: 1.3). +.TP 8 +.B \-speed-z \fIfloat\fP +Rotation speed around the z axis (default: 1.5). +.PP +The following two options determine the walking speed and direction. +.TP 8 +.B \-walk-direction \fIfloat\fP +The walking direction is measured as an angle in degrees in the 2d +square that forms the coordinate system of the surface of the +projective plane (default: 83.0). A value of 0 or 180 means that the +walk is along a circle at a randomly chosen distance from the origin +(parallel to a distance band). A value of 90 or 270 means that the +walk is directly from the origin to the line at infinity and back +(analogous to a direction band). Any other value results in a curved +path from the origin to the line at infinity and back. +.TP 8 +.B \-walk-speed \fIfloat\fP +The walking speed is measured in percent of some sensible maximum +speed (default: 20.0). +.SH INTERACTION +If you run this program in standalone mode in its turn mode, you can +rotate the projective plane by dragging the mouse while pressing the +left mouse button. This rotates the projective plane in 3d. To +examine the projective plane at your leisure, it is best to set all +speeds to 0. Otherwise, the projective plane will rotate while the +left mouse button is not pressed. This kind of interaction is not +available in the walk mode. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2013-2014 by Carsten Steger. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Carsten Steger , 03-oct-2014. diff --git a/hacks/glx/rotator.c b/hacks/glx/rotator.c new file mode 100644 index 0000000..ab05130 --- /dev/null +++ b/hacks/glx/rotator.c @@ -0,0 +1,274 @@ +/* xscreensaver, Copyright (c) 1998-2016 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include "rotator.h" +#include "yarandom.h" + +struct rotator { + + double spin_x_speed, spin_y_speed, spin_z_speed; /* scaling factors >= 0. */ + double wander_speed; + + double rotx, roty, rotz; /* current object rotation, -1 to +1. + Sign indicates direction of motion. + 0.25 means +90 deg, positive velocity. + -0.25 means +90 deg, negative velocity + (not +270 deg or -90 deg!) + Yes, this is stupid. + */ + double dx, dy, dz; /* current rotational velocity, >= 0. */ + double ddx, ddy, ddz; /* current rotational acceleration, +/-. */ + double d_max; /* max rotational velocity, > 0. */ + + int wander_frame; /* position in the wander cycle, >= 0. */ +}; + + +#undef ABS +#define ABS(x) ((x)<0?-(x):(x)) + +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +/* Stay in the range [0-1). + 1.01 => 0.01. + -0.01 => 0.99 + */ +#define CLAMP(i) do { \ + while ((i) < 0) (i)++; \ + while ((i) >= 1) (i)--; \ + } while (0) + +#undef EPSILON +#define EPSILON 0.000001 + + +static void +rotate_1 (double *pos, double *v, double *dv, double speed, double max_v) +{ + /* Sign of *pos is direction of motion. + Sign of *v is always positive. + It would make way more sense for *v to indicate direction of motion. + What was I thinking? + */ + + double ppos = *pos; + + if (speed == 0) return; + + /* tick position */ + if (ppos < 0) + /* Ignore but preserve the sign on ppos. It's kind of like: + ppos = old_sign * (abs(ppos) + (v * old_sign)) + This is why it would make more sense for that sign bit to be on v. + */ + ppos = -(ppos + *v); + else + ppos += *v; + + CLAMP (ppos); + *pos = (*pos > 0 ? ppos : -ppos); /* preserve old sign bit on pos. */ + + /* accelerate */ + *v += *dv; + + /* clamp velocity */ + if (*v > max_v || *v < -max_v) + { + *dv = -*dv; + } + /* If it stops, start it going in the other direction. */ + /* Since *v is always positive, <= 0 means stopped. */ + else if (*v < 0) + { + if (random() % 4) + { + *v = 0; /* don't let velocity be negative */ + + if (random() % 2) /* stay stopped, and kill acceleration */ + *dv = 0; + else if (*dv < 0) /* was decelerating, accelerate instead */ + *dv = -*dv; + } + else + { + *v = -*v; /* switch to tiny positive velocity, or zero */ + *dv = -*dv; /* toggle acceleration */ + *pos = -*pos; /* reverse direction of motion */ + } + } + + /* Alter direction of rotational acceleration randomly. */ + if (! (random() % 120)) + *dv = -*dv; + + /* Change acceleration very occasionally. */ + if (! (random() % 200)) + { +#if 0 /* this might make more sense: */ + if (*dv > -EPSILON && *dv < EPSILON) + *dv += 10 * (*dv < 0 ? -EPSILON : EPSILON); +#else + if (*dv == 0) + *dv = 0.00001; +#endif + else if (random() & 1) + *dv *= 1.2; + else + *dv *= 0.8; + } +} + + +/* Returns a rotator object, which encapsulates rotation and motion state. + + spin_[xyz]_speed indicates the relative speed of rotation. + Specify 0 if you don't want any rotation around that axis. + + spin_accel specifies a scaling factor for the acceleration that is + randomly applied to spin: if you want the speed to change faster, + make this > 1. + + wander_speed indicates the relative speed through space. + + If randomize_initial_state_p is true, then the initial position and + rotation will be randomized (even if the spin speeds are 0.) If it + is false, then all values will be initially zeroed. + */ +rotator * +make_rotator (double spin_x_speed, + double spin_y_speed, + double spin_z_speed, + double spin_accel, + double wander_speed, + int randomize_initial_state_p) +{ + rotator *r = (rotator *) calloc (1, sizeof(*r)); + double d, dd; + + if (!r) return 0; + + if (spin_x_speed < 0 || spin_y_speed < 0 || spin_z_speed < 0 || + wander_speed < 0) + abort(); + + r->spin_x_speed = spin_x_speed; + r->spin_y_speed = spin_y_speed; + r->spin_z_speed = spin_z_speed; + r->wander_speed = wander_speed; + + if (randomize_initial_state_p) + { + /* Sign on position is direction of travel. Stripped before returned. */ + r->rotx = frand(1.0) * RANDSIGN(); + r->roty = frand(1.0) * RANDSIGN(); + r->rotz = frand(1.0) * RANDSIGN(); + + r->wander_frame = random() % 0xFFFF; + } + else + { + r->rotx = r->roty = r->rotz = 0; + r->wander_frame = 0; + } + + d = 0.006; + dd = 0.00006; + + r->dx = BELLRAND(d * r->spin_x_speed); + r->dy = BELLRAND(d * r->spin_y_speed); + r->dz = BELLRAND(d * r->spin_z_speed); + + r->d_max = r->dx * 2; + + r->ddx = (dd + frand(dd+dd)) * r->spin_x_speed * spin_accel; + r->ddy = (dd + frand(dd+dd)) * r->spin_y_speed * spin_accel; + r->ddz = (dd + frand(dd+dd)) * r->spin_z_speed * spin_accel; + +# if 0 + fprintf (stderr, "rotator:\n"); + fprintf (stderr, " wander: %3d %6.2f\n", r->wander_frame, r->wander_speed); + fprintf (stderr, " speed: %6.2f %6.2f %6.2f\n", + r->spin_x_speed, r->spin_y_speed, r->spin_z_speed); + fprintf (stderr, " rot: %6.2f %6.2f %6.2f\n", + r->rotx, r->roty, r->rotz); + fprintf (stderr, " d: %6.2f %6.2f %6.2f, %6.2f\n", + r->dx, r->dy, r->dz, + r->d_max); + fprintf (stderr, " dd: %6.2f %6.2f %6.2f\n", + r->ddx, r->ddy, r->ddz); +# endif + + return r; +} + + +void +free_rotator (rotator *r) +{ + free (r); +} + +void +get_rotation (rotator *rot, double *x_ret, double *y_ret, double *z_ret, + int update_p) +{ + double x, y, z; + + if (update_p) { + rotate_1 (&rot->rotx, &rot->dx, &rot->ddx, rot->spin_x_speed, rot->d_max); + rotate_1 (&rot->roty, &rot->dy, &rot->ddy, rot->spin_y_speed, rot->d_max); + rotate_1 (&rot->rotz, &rot->dz, &rot->ddz, rot->spin_z_speed, rot->d_max); + } + + x = rot->rotx; + y = rot->roty; + z = rot->rotz; + if (x < 0) x = -x; + if (y < 0) y = -y; + if (z < 0) z = -z; + + if (x_ret) *x_ret = x; + if (y_ret) *y_ret = y; + if (z_ret) *z_ret = z; +} + + +void +get_position (rotator *rot, double *x_ret, double *y_ret, double *z_ret, + int update_p) +{ + double x = 0.5, y = 0.5, z = 0.5; + + if (rot->wander_speed != 0) + { + if (update_p) + rot->wander_frame++; + +# define SINOID(F) ((1 + sin((rot->wander_frame * (F)) / 2 * M_PI)) / 2.0) + x = SINOID (0.71 * rot->wander_speed); + y = SINOID (0.53 * rot->wander_speed); + z = SINOID (0.37 * rot->wander_speed); +# undef SINOID + } + + if (x_ret) *x_ret = x; + if (y_ret) *y_ret = y; + if (z_ret) *z_ret = z; +} diff --git a/hacks/glx/rotator.h b/hacks/glx/rotator.h new file mode 100644 index 0000000..b3f36f6 --- /dev/null +++ b/hacks/glx/rotator.h @@ -0,0 +1,60 @@ +/* xscreensaver, Copyright (c) 1998-2002 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __ROTATOR_H__ +#define __ROTATOR_H__ + +typedef struct rotator rotator; + +/* Returns a rotator object, which encapsulates rotation and motion state. + + spin_[xyz]_speed indicates the relative speed of rotation. + Specify 0 if you don't want any rotation around that axis. + + spin_accel specifies a scaling factor for the acceleration that is + randomly applied to spin: if you want the speed to change faster, + make this > 1. + + wander_speed indicates the relative speed through space. + + If randomize_initial_state_p is true, then the initial position and + rotation will be randomized (even if the spin speeds are 0.) If it + is false, then all values will be initially zeroed. + */ +extern rotator *make_rotator (double spin_x_speed, + double spin_y_speed, + double spin_z_speed, + double spin_accel, + double wander_speed, + int randomize_initial_state_p); + +/* Rotates one step, and returns the new rotation values. + x, y, and z range from 0.0-1.0, the fraction through the circle + (*not* radians or degrees!) + If `update_p' is non-zero, then (maybe) rotate first. + */ +extern void get_rotation (rotator *rot, + double *x_ret, double *y_ret, double *z_ret, + int update_p); + +/* Moves one step, and returns the new position values. + x, y, and z range from 0.0-1.0, the fraction through space: + scale those values as needed. + If `update_p' is non-zero, then (maybe) move first. + */ +extern void get_position (rotator *rot, + double *x_ret, double *y_ret, double *z_ret, + int update_p); + +/* Destroys and frees a `rotator' object. */ +extern void free_rotator (rotator *r); + +#endif /* __ROTATOR_H__ */ diff --git a/hacks/glx/rubik.c b/hacks/glx/rubik.c new file mode 100644 index 0000000..ed06645 --- /dev/null +++ b/hacks/glx/rubik.c @@ -0,0 +1,2140 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* rubik --- Shows an auto-solving Rubik's cube */ + +#if 0 +static const char sccsid[] = "@(#)rubik.c 5.01 2001/03/01 xlockmore"; +#endif + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * This mode shows an auto-solving rubik's cube "puzzle". If somebody + * intends to make a game or something based on this code, please let me + * know first, my e-mail address is provided in this comment. Marcelo. + * + * Thanks goes also to Brian Paul for making it possible and inexpensive + * to use OpenGL at home. + * + * Since I'm not a native English speaker, my apologies for any grammatical + * mistakes. + * + * My e-mail address is + * mfvianna@centroin.com.br + * + * Marcelo F. Vianna (Jul-31-1997) + * + * Revision History: + * 05-Apr-2002: Removed all gllist uses (fix some bug with nvidia driver) + * 01-Mar-2001: Added FPS stuff - Eric Lassauge + * 01-Nov-2000: Allocation checks + * 27-Apr-1999: LxMxN stuff added. + * 26-Sep-1998: Added some more movement (the cube does not stay in the screen + * center anymore. Also fixed the scale problem immediately after + * shuffling when the puzzle is solved. + * 08-Aug-1997: Now has some internals from xrubik by David Bagley + * This should make it easier to add features. + * 02-Aug-1997: Now behaves more like puzzle.c: first show the cube being + * shuffled and then being solved. A mode specific option was + * added: + * "+/-hideshuffling" to provide the original behavior (in which + * only the solution is shown). + * The color labels corners are now rounded. + * Optimized the cubit() routine using glLists. + * 01-Aug-1997: Shuffling now avoids movements that undoes the previous + * movement and three consecutive identical moves (which is + * pretty stupid). + * improved the "cycles" option in replacement of David's hack, + * now rp->anglestep is a GLfloat, so this option selects the + * "exact" number of frames that a rotation (movement) takes to + * complete. + * 30-Jul-1997: Initial release, there is no algorithm to solve the puzzle, + * instead, it randomly shuffle the cube and then make the + * movements in the reverse order. + * The mode was written in 1 day (I got sick and had the day off). + * There was not much to do since I could not leave home... :) + */ + +/*- + * Color labels mapping: + * ===================== + * + * +-----------+ + * |0--> | + * || | + * |v TOP(0) | + * | | + * | 8| + * +-----------+-----------+-----------+ + * |0--> |0--> |0--> | + * || || || | + * |v LEFT(1) |v FRONT(2) |v RIGHT(3) | + * | | | | + * | 8| 8| 8| + * +-----------+-----------+-----------+ + * |0--> | + * || | + * |v BOTTOM(4)| + * | | + * | 8| + * +-----------+ +---+---+---+ + * |0--> | | 0 | 1 | 2 | + * || | |--xxxxx(N)-+ + * |v BACK(5) | | 3 | 4 | 5 | + * | | +---+---+---+ + * | 8| | 6 | 7 | 8 | + * +-----------+ +---+---+---+ + * + * Map to 3d + * FRONT => X, Y + * BACK => X, Y + * LEFT => Z, Y + * RIGHT => Z, Y + * TOP => X, Z + * BOTTOM => X, Z + */ + +#ifdef STANDALONE +# define MODE_rubik +# define DEFAULTS "*delay: 20000 \n" \ + "*count: -30 \n" \ + "*showFPS: False \n" \ + "*cycles: 20 \n" \ + "*size: -6 \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_rubik 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +# include "vis.h" +#endif /* !STANDALONE */ + +#include "gltrackball.h" + +#ifdef MODE_rubik + +#define DEF_SIZEX "0" +#define DEF_SIZEY "0" +#define DEF_SIZEZ "0" +#define DEF_HIDESHUFFLING "False" + +static int sizex; +static int sizey; +static int sizez; +static Bool hideshuffling; + +static XrmOptionDescRec opts[] = +{ + {"-sizex", ".rubik.sizex", XrmoptionSepArg, 0}, + {"-sizey", ".rubik.sizey", XrmoptionSepArg, 0}, + {"-sizez", ".rubik.sizez", XrmoptionSepArg, 0}, + {"-hideshuffling", ".rubik.hideshuffling", XrmoptionNoArg, "on"}, + {"+hideshuffling", ".rubik.hideshuffling", XrmoptionNoArg, "off"} +}; + +static argtype vars[] = +{ + {&sizex, "sizex", "SizeX", DEF_SIZEX, t_Int}, + {&sizey, "sizey", "SizeY", DEF_SIZEY, t_Int}, + {&sizez, "sizez", "SizeZ", DEF_SIZEZ, t_Int}, + {&hideshuffling, "hideshuffling", "Hideshuffling", DEF_HIDESHUFFLING, t_Bool} +}; + +static OptionStruct desc[] = +{ + {"-sizex num", "number of cubies along x axis (overrides size)"}, + {"-sizey num", "number of cubies along y axis (overrides size)"}, + {"-sizez num", "number of cubies along z axis (overrides size)"}, + {"-/+hideshuffling", "turn on/off hidden shuffle phase"} +}; + +ENTRYPOINT ModeSpecOpt rubik_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + +#ifdef USE_MODULES +ModStruct rubik_description = +{"rubik", "init_rubik", "draw_rubik", (char *) NULL, + "draw_rubik", "change_rubik", "free_rubik", &rubik_opts, + 10000, -30, 5, -6, 64, 1.0, "", + "Shows an auto-solving Rubik's Cube", 0, NULL}; + +#endif + +#define VectMul(X1,Y1,Z1,X2,Y2,Z2) (Y1)*(Z2)-(Z1)*(Y2),(Z1)*(X2)-(X1)*(Z2),(X1)*(Y2)-(Y1)*(X2) +#define sqr(A) ((A)*(A)) + +#ifndef Pi +#define Pi M_PI +#endif + + +#define ACTION_SOLVE 1 +#define ACTION_SHUFFLE 0 + +#define DELAY_AFTER_SHUFFLING 5 +#define DELAY_AFTER_SOLVING 20 + +/*************************************************************************/ + +#define MINSIZE 2 +#define MAXSIZEX (rp->sizex) +#define MAXSIZEY (rp->sizey) +#define MAXSIZEZ (rp->sizez) +#define AVSIZE ((rp->sizex+rp->sizey+rp->sizez)/3.0) /* Use of this should be minimized */ +#define MAXMAXSIZE (MAX(MAXSIZEX,MAX(MAXSIZEY,MAXSIZEZ))) +#define MAXSIZEXY (MAXSIZEX*MAXSIZEY) +#define MAXSIZEYZ (MAXSIZEY*MAXSIZEZ) +#define MAXSIZEZX (MAXSIZEZ*MAXSIZEX) +#define LASTX (MAXSIZEX-1) +#define LASTY (MAXSIZEY-1) +#define LASTZ (MAXSIZEZ-1) +/* These are not likely to change but... */ +#define FIRSTX 0 +#define FIRSTY 0 +#define FIRSTZ 0 + +#define Scale4Window (0.9/AVSIZE) +#define Scale4Iconic (2.1/AVSIZE) + +#define MAXORIENT 4 /* Number of orientations of a square */ +#define MAXFACES 6 /* Number of faces */ + +/* Directions relative to the face of a cubie */ +#define TOP 0 +#define RIGHT 1 +#define BOTTOM 2 +#define LEFT 3 +#define CW (MAXORIENT+1) +#define HALF (MAXORIENT+2) +#define CCW (2*MAXORIENT-1) + +#define TOP_FACE 0 +#define LEFT_FACE 1 +#define FRONT_FACE 2 +#define RIGHT_FACE 3 +#define BOTTOM_FACE 4 +#define BACK_FACE 5 +#define NO_FACE (MAXFACES) +#define NO_ROTATION (2*MAXORIENT) +#define NO_DEPTH MAXMAXSIZE + +#define REVX(a) (MAXSIZEX - a - 1) +#define REVY(a) (MAXSIZEY - a - 1) +#define REVZ(a) (MAXSIZEZ - a - 1) + +#define CUBELEN 0.50 +#define CUBEROUND (CUBELEN-0.05) +#define STICKERLONG (CUBEROUND-0.05) +#define STICKERSHORT (STICKERLONG-0.05) +#define STICKERDEPTH (CUBELEN+0.01) + +#define ObjCubit 0 +#define MaxObj 1 +typedef struct _RubikLoc { + int face; + int rotation; /* Not used yet */ +} RubikLoc; + +typedef struct _RubikRowNext { + int face, direction, sideFace; +} RubikRowNext; + +typedef struct _RubikMove { + int face, direction; + int position; +} RubikMove; + +typedef struct _RubikSlice { + int face, rotation; + int depth; +} RubikSlice; + +/*- + * Pick a face and a direction on face the next face and orientation + * is then known. + */ +static const RubikLoc slideNextRow[MAXFACES][MAXORIENT] = +{ + { + {5, TOP}, + {3, RIGHT}, + {2, TOP}, + {1, LEFT}}, + { + {0, RIGHT}, + {2, TOP}, + {4, LEFT}, + {5, BOTTOM}}, + { + {0, TOP}, + {3, TOP}, + {4, TOP}, + {1, TOP}}, + { + {0, LEFT}, + {5, BOTTOM}, + {4, RIGHT}, + {2, TOP}}, + { + {2, TOP}, + {3, LEFT}, + {5, TOP}, + {1, RIGHT}}, + { + {4, TOP}, + {3, BOTTOM}, + {0, TOP}, + {1, BOTTOM}} +}; + +/*- + * Examine cubie 0 on each face, its 4 movements (well only 2 since the + * other 2 will be opposites) and translate it into slice movements). + * CW = DEEP Depth CCW == SHALLOW Depth with reference to faces 0, 1, and 2 + */ +static const RubikLoc rotateSlice[MAXFACES][MAXORIENT / 2] = +{ + { + {1, CCW}, + {2, CW}, + }, + { + {2, CW}, + {0, CCW}, + }, + { + {1, CCW}, + {0, CCW}, + }, + { + {2, CCW}, + {0, CCW}, + }, + { + {1, CCW}, + {2, CCW}, + }, + { + {1, CCW}, + {0, CW}, + } +}; + +/*- + * Rotate face clockwise by a number of orients, then the top of the + * face then points to this face + */ +static const int rowToRotate[MAXFACES][MAXORIENT] = +{ + {3, 2, 1, 5}, + {2, 4, 5, 0}, + {3, 4, 1, 0}, + {5, 4, 2, 0}, + {3, 5, 1, 2}, + {3, 0, 1, 4} +}; + +/* + * This translates a clockwise move to something more manageable + */ +static const RubikRowNext rotateToRow[MAXFACES] = /*CW to min face */ +{ + {1, LEFT, TOP}, + {0, BOTTOM, RIGHT}, + {0, RIGHT, BOTTOM}, + {0, TOP, LEFT}, + {1, RIGHT, BOTTOM}, + {0, LEFT, TOP} +}; + +typedef struct { + GLint WindH, WindW; + GLfloat step; + RubikMove *moves; + int storedmoves; + int degreeTurn; + int shufflingmoves; + int sizex, sizey, sizez; + float avsize, avsizeSq; + int action; + int done; + GLfloat anglestep; + RubikLoc *cubeLoc[MAXFACES]; + RubikLoc *rowLoc[MAXORIENT]; + RubikMove movement; + GLfloat rotatestep; + GLfloat PX, PY, VX, VY; + GLXContext *glx_context; + Bool button_down_p; + trackball_state *trackball; +} rubikstruct; + +static const float front_shininess[] = {60.0}; +static const float front_specular[] = {0.7, 0.7, 0.7, 1.0}; +static const float ambient[] = {0.0, 0.0, 0.0, 1.0}; +static const float diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const float position0[] = {1.0, 1.0, 1.0, 0.0}; +static const float position1[] = {-1.0, -1.0, 1.0, 0.0}; +static const float lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0}; +static const float lmodel_twoside[] = {GL_TRUE}; + +static const float MaterialRed[] = {0.5, 0.0, 0.0, 1.0}; +static const float MaterialGreen[] = {0.0, 0.5, 0.0, 1.0}; +static const float MaterialBlue[] = {0.0, 0.0, 0.5, 1.0}; +static const float MaterialYellow[] = {0.7, 0.7, 0.0, 1.0}; +static const float MaterialOrange[] = {0.9, 0.45, 0.36, 1.0}; + +#if 0 +static float MaterialMagenta[] = {0.7, 0.0, 0.7, 1.0}; +static float MaterialCyan[] = {0.0, 0.7, 0.7, 1.0}; + +#endif +static const float MaterialWhite[] = {0.8, 0.8, 0.8, 1.0}; +static const float MaterialGray[] = {0.2, 0.2, 0.2, 1.0}; +static const float MaterialGray3[] = {0.3, 0.3, 0.3, 1.0}; +static const float MaterialGray4[] = {0.4, 0.4, 0.4, 1.0}; +static const float MaterialGray5[] = {0.5, 0.5, 0.5, 1.0}; +static const float MaterialGray6[] = {0.6, 0.6, 0.6, 1.0}; +static const float MaterialGray7[] = {0.7, 0.7, 0.7, 1.0}; + +static rubikstruct *rubik = (rubikstruct *) NULL; + + +static void +pickcolor(int C, int mono) +{ + switch (C) { + case TOP_FACE: + if (mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray3); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed); + break; + case LEFT_FACE: + if (mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialYellow); + break; + case FRONT_FACE: + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite); + break; + case RIGHT_FACE: + if (mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray4); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGreen); + break; + case BOTTOM_FACE: + if (mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray7); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialOrange); + break; + case BACK_FACE: + if (mono) + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray5); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialBlue); + break; +#if 0 + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialCyan); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialMagenta); +#endif + } +} + +static void +faceSizes(rubikstruct * rp, int face, int * sizeOfRow, int * sizeOfColumn) +{ + switch (face) { + case 0: /* TOP */ + case 4: /* BOTTOM */ + *sizeOfRow = MAXSIZEX; + *sizeOfColumn = MAXSIZEZ; + break; + case 1: /* LEFT */ + case 3: /* RIGHT */ + *sizeOfRow = MAXSIZEZ; + *sizeOfColumn = MAXSIZEY; + break; + case 2: /* FRONT */ + case 5: /* BACK */ + *sizeOfRow = MAXSIZEX; + *sizeOfColumn = MAXSIZEY; + break; + default: abort(); + } +} + +static Bool +checkFaceSquare(rubikstruct * rp, int face) +{ + int sizeOfRow, sizeOfColumn; + + faceSizes(rp, face, &sizeOfRow, &sizeOfColumn); + return (sizeOfRow == sizeOfColumn); + /* Cubes can be made square with a 4x2 face where 90 degree turns + * should be permitted but that is kind of complicated for me. + * This can be done in 2 ways where the side of the cubies are + * the same size and one where one side (the side with half the + * number of cubies) is twice the size of the other. The first is + * complicated because faces of cubies can go under other faces. + * The second way is similar to "banded cubes" where scotch tape + * restricts the moves of some cubes. Here you have to keep track + * of the restrictions and show banded cubies graphically as one + * cube. + */ +} + +static int +sizeFace(rubikstruct * rp, int face) +{ + int sizeOfRow, sizeOfColumn; + + faceSizes(rp, face, &sizeOfRow, &sizeOfColumn); + return (sizeOfRow * sizeOfColumn); +} + +static int +sizeRow(rubikstruct * rp, int face) +{ + int sizeOfRow, sizeOfColumn; /* sizeOfColumn not used */ + + faceSizes(rp, face, &sizeOfRow, &sizeOfColumn); + return sizeOfRow; +} + +static Bool +draw_stickerless_cubit(rubikstruct *rp, unsigned long *polysP) +{ + glBegin(GL_QUADS); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray); + /* Put sticker here */ + glNormal3f(0.00, 0.00, 1.00); + glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN); + glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN); + glVertex3f(CUBEROUND, CUBEROUND, CUBELEN); + glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN); + (*polysP)++; + glNormal3f(0.00, 0.00, -1.00); + glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN); + glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN); + glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN); + glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN); + (*polysP)++; + glNormal3f(-1.00, 0.00, 0.00); + glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND); + glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND); + glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND); + glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND); + (*polysP)++; + glNormal3f(1.00, 0.00, 0.00); + glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND); + glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND); + glVertex3f(CUBELEN, CUBEROUND, CUBEROUND); + glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND); + (*polysP)++; + glNormal3f(0.00, -1.00, 0.00); + glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND); + glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND); + glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND); + glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND); + (*polysP)++; + glNormal3f(0.00, 1.00, 0.00); + glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND); + glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND); + glVertex3f(CUBEROUND, CUBELEN, CUBEROUND); + glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND); + (*polysP)++; + + /* Edges of cubit */ + glNormal3f(-1.00, -1.00, 0.00); + glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND); + glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND); + glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND); + glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND); + (*polysP)++; + glNormal3f(1.00, 1.00, 0.00); + glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND); + glVertex3f(CUBEROUND, CUBELEN, CUBEROUND); + glVertex3f(CUBELEN, CUBEROUND, CUBEROUND); + glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND); + (*polysP)++; + glNormal3f(-1.00, 1.00, 0.00); + glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND); + glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND); + glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND); + glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND); + (*polysP)++; + glNormal3f(1.00, -1.00, 0.00); + glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND); + glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND); + glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND); + glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND); + (*polysP)++; + glNormal3f(0.00, -1.00, -1.00); + glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN); + glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN); + glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND); + glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND); + (*polysP)++; + glNormal3f(0.00, 1.00, 1.00); + glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN); + glVertex3f(CUBEROUND, CUBEROUND, CUBELEN); + glVertex3f(CUBEROUND, CUBELEN, CUBEROUND); + glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND); + (*polysP)++; + glNormal3f(0.00, -1.00, 1.00); + glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND); + glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND); + glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN); + glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN); + (*polysP)++; + glNormal3f(0.00, 1.00, -1.00); + glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND); + glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND); + glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN); + glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN); + (*polysP)++; + glNormal3f(-1.00, 0.00, -1.00); + glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND); + glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND); + glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN); + glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN); + (*polysP)++; + glNormal3f(1.00, 0.00, 1.00); + glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND); + glVertex3f(CUBELEN, CUBEROUND, CUBEROUND); + glVertex3f(CUBEROUND, CUBEROUND, CUBELEN); + glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN); + (*polysP)++; + glNormal3f(1.00, 0.00, -1.00); + glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN); + glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN); + glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND); + glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND); + (*polysP)++; + glNormal3f(-1.00, 0.00, 1.00); + glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN); + glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN); + glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND); + glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND); + (*polysP)++; + glEnd(); + glBegin(GL_TRIANGLES); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray); + /* Corners of cubit */ + glNormal3f(1.00, 1.00, 1.00); + glVertex3f(CUBEROUND, CUBEROUND, CUBELEN); + glVertex3f(CUBELEN, CUBEROUND, CUBEROUND); + glVertex3f(CUBEROUND, CUBELEN, CUBEROUND); + (*polysP)++; + glNormal3f(-1.00, -1.00, -1.00); + glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND); + glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND); + glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN); + (*polysP)++; + glNormal3f(-1.00, 1.00, 1.00); + glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN); + glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND); + (*polysP)++; + glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND); + glNormal3f(1.00, -1.00, -1.00); + glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND); + glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND); + glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN); + (*polysP)++; + glNormal3f(1.00, -1.00, 1.00); + glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN); + glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND); + glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND); + (*polysP)++; + glNormal3f(-1.00, 1.00, -1.00); + glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND); + glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND); + glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN); + (*polysP)++; + glNormal3f(-1.00, -1.00, 1.00); + glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN); + glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND); + glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND); + (*polysP)++; + glNormal3f(1.00, 1.00, -1.00); + glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND); + glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN); + glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND); + (*polysP)++; + glEnd(); + return True; +} + +static Bool +draw_cubit(ModeInfo * mi, + int back, int front, int left, int right, int bottom, int top, + unsigned long *polysP) +{ + rubikstruct *rp = &rubik[MI_SCREEN(mi)]; + int mono = MI_IS_MONO(mi); + + if (!draw_stickerless_cubit(rp, polysP)) + return False; + if (back != NO_FACE) { + glBegin(GL_POLYGON); + pickcolor(back, mono); + glNormal3f(0.00, 0.00, -1.00); + glVertex3f(-STICKERSHORT, STICKERLONG, -STICKERDEPTH); + glVertex3f(STICKERSHORT, STICKERLONG, -STICKERDEPTH); + glVertex3f(STICKERLONG, STICKERSHORT, -STICKERDEPTH); + glVertex3f(STICKERLONG, -STICKERSHORT, -STICKERDEPTH); + glVertex3f(STICKERSHORT, -STICKERLONG, -STICKERDEPTH); + glVertex3f(-STICKERSHORT, -STICKERLONG, -STICKERDEPTH); + glVertex3f(-STICKERLONG, -STICKERSHORT, -STICKERDEPTH); + glVertex3f(-STICKERLONG, STICKERSHORT, -STICKERDEPTH); + (*polysP)++; + glEnd(); + } + if (front != NO_FACE) { + glBegin(GL_POLYGON); + pickcolor(front, mono); + glNormal3f(0.00, 0.00, 1.00); + glVertex3f(-STICKERSHORT, -STICKERLONG, STICKERDEPTH); + glVertex3f(STICKERSHORT, -STICKERLONG, STICKERDEPTH); + glVertex3f(STICKERLONG, -STICKERSHORT, STICKERDEPTH); + glVertex3f(STICKERLONG, STICKERSHORT, STICKERDEPTH); + glVertex3f(STICKERSHORT, STICKERLONG, STICKERDEPTH); + glVertex3f(-STICKERSHORT, STICKERLONG, STICKERDEPTH); + glVertex3f(-STICKERLONG, STICKERSHORT, STICKERDEPTH); + glVertex3f(-STICKERLONG, -STICKERSHORT, STICKERDEPTH); + (*polysP)++; + glEnd(); + } + if (left != NO_FACE) { + glBegin(GL_POLYGON); + pickcolor(left, mono); + glNormal3f(-1.00, 0.00, 0.00); + glVertex3f(-STICKERDEPTH, -STICKERSHORT, STICKERLONG); + glVertex3f(-STICKERDEPTH, STICKERSHORT, STICKERLONG); + glVertex3f(-STICKERDEPTH, STICKERLONG, STICKERSHORT); + glVertex3f(-STICKERDEPTH, STICKERLONG, -STICKERSHORT); + glVertex3f(-STICKERDEPTH, STICKERSHORT, -STICKERLONG); + glVertex3f(-STICKERDEPTH, -STICKERSHORT, -STICKERLONG); + glVertex3f(-STICKERDEPTH, -STICKERLONG, -STICKERSHORT); + glVertex3f(-STICKERDEPTH, -STICKERLONG, STICKERSHORT); + (*polysP)++; + glEnd(); + } + if (right != NO_FACE) { + glBegin(GL_POLYGON); + pickcolor(right, mono); + glNormal3f(1.00, 0.00, 0.00); + glVertex3f(STICKERDEPTH, -STICKERSHORT, -STICKERLONG); + glVertex3f(STICKERDEPTH, STICKERSHORT, -STICKERLONG); + glVertex3f(STICKERDEPTH, STICKERLONG, -STICKERSHORT); + glVertex3f(STICKERDEPTH, STICKERLONG, STICKERSHORT); + glVertex3f(STICKERDEPTH, STICKERSHORT, STICKERLONG); + glVertex3f(STICKERDEPTH, -STICKERSHORT, STICKERLONG); + glVertex3f(STICKERDEPTH, -STICKERLONG, STICKERSHORT); + glVertex3f(STICKERDEPTH, -STICKERLONG, -STICKERSHORT); + (*polysP)++; + glEnd(); + } + if (bottom != NO_FACE) { + glBegin(GL_POLYGON); + pickcolor(bottom, mono); + glNormal3f(0.00, -1.00, 0.00); + glVertex3f(STICKERLONG, -STICKERDEPTH, -STICKERSHORT); + glVertex3f(STICKERLONG, -STICKERDEPTH, STICKERSHORT); + glVertex3f(STICKERSHORT, -STICKERDEPTH, STICKERLONG); + glVertex3f(-STICKERSHORT, -STICKERDEPTH, STICKERLONG); + glVertex3f(-STICKERLONG, -STICKERDEPTH, STICKERSHORT); + glVertex3f(-STICKERLONG, -STICKERDEPTH, -STICKERSHORT); + glVertex3f(-STICKERSHORT, -STICKERDEPTH, -STICKERLONG); + glVertex3f(STICKERSHORT, -STICKERDEPTH, -STICKERLONG); + (*polysP)++; + glEnd(); + } + if (top != NO_FACE) { + glBegin(GL_POLYGON); + pickcolor(top, mono); + glNormal3f(0.00, 1.00, 0.00); + glVertex3f(-STICKERLONG, STICKERDEPTH, -STICKERSHORT); + glVertex3f(-STICKERLONG, STICKERDEPTH, STICKERSHORT); + glVertex3f(-STICKERSHORT, STICKERDEPTH, STICKERLONG); + glVertex3f(STICKERSHORT, STICKERDEPTH, STICKERLONG); + glVertex3f(STICKERLONG, STICKERDEPTH, STICKERSHORT); + glVertex3f(STICKERLONG, STICKERDEPTH, -STICKERSHORT); + glVertex3f(STICKERSHORT, STICKERDEPTH, -STICKERLONG); + glVertex3f(-STICKERSHORT, STICKERDEPTH, -STICKERLONG); + (*polysP)++; + glEnd(); + } + return True; +} + +/* Convert move to weird general notation */ +static void +convertMove(rubikstruct * rp, RubikMove move, RubikSlice * slice) +{ + RubikLoc plane; + int sizeOfRow, sizeOfColumn; + + plane = rotateSlice[(int) move.face][move.direction % 2]; + (*slice).face = plane.face; + (*slice).rotation = plane.rotation; + + faceSizes(rp, move.face, &sizeOfRow, &sizeOfColumn); + if (plane.face == 1 || /* VERTICAL */ + (plane.face == 2 && (move.face == 1 || move.face == 3))) { + if ((*slice).rotation == CW) + (*slice).depth = sizeOfRow - 1 - move.position % + sizeOfRow; + else + (*slice).depth = move.position % sizeOfRow; + } else { /* (plane.face == 0 || *//* HORIZONTAL *//* + (plane.face == 2 && (move.face == 0 || move.face == 4))) */ + if ((*slice).rotation == CW) + (*slice).depth = sizeOfColumn - 1 - move.position / + sizeOfRow; + else + (*slice).depth = move.position / sizeOfRow; + } + /* If (*slice).depth = 0 then face 0, face 1, or face 2 moves */ + if (move.direction / 2) + (*slice).rotation = ((*slice).rotation == CW) ? CCW : CW; +} + +/* Assume the size is at least 2, or its just not challenging... */ +static Bool +draw_cube(ModeInfo * mi) +{ +#define S1 1 +#define SX ((GLint)S1*(MAXSIZEX-1)) +#define SY ((GLint)S1*(MAXSIZEY-1)) +#define SZ ((GLint)S1*(MAXSIZEZ-1)) +#define HALFX (((GLfloat)MAXSIZEX-1.0)/2.0) +#define HALFY (((GLfloat)MAXSIZEY-1.0)/2.0) +#define HALFZ (((GLfloat)MAXSIZEZ-1.0)/2.0) +#define MIDX(a) (((GLfloat)(2*a-MAXSIZEX+1))/2.0) +#define MIDY(a) (((GLfloat)(2*a-MAXSIZEY+1))/2.0) +#define MIDZ(a) (((GLfloat)(2*a-MAXSIZEZ+1))/2.0) +#define DRAW_CUBIT(mi,b,f,l,r,bm,t) if (!draw_cubit(mi,b,f,l,r,bm,t,&mi->polygon_count)) return False + rubikstruct *rp = &rubik[MI_SCREEN(mi)]; + RubikSlice slice; + GLfloat rotatestep; + int i, j, k; + + if (rp->movement.face == NO_FACE) { + slice.face = NO_FACE; + slice.rotation = NO_ROTATION; + slice.depth = NO_DEPTH; + } else { + convertMove(rp, rp->movement, &slice); + } + rotatestep = (slice.rotation == CCW) ? rp->rotatestep : -rp->rotatestep; + + +/*- + * The glRotatef() routine transforms the coordinate system for every future + * vertex specification (this is not so simple, but by now comprehending this + * is sufficient). So if you want to rotate the inner slice, you can draw + * one slice, rotate the anglestep for the centerslice, draw the inner slice, + * rotate reversely and draw the other slice. + * There is a sequence for drawing cubies for each axis being moved... + */ + switch (slice.face) { + case NO_FACE: + case TOP_FACE: /* BOTTOM_FACE too */ + glPushMatrix(); + if (slice.depth == MAXSIZEY - 1) + glRotatef(rotatestep, 0, HALFY, 0); + + glTranslatef(-HALFX, -HALFY, -HALFZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * LASTZ].face, NO_FACE); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * REVZ(k)].face, NO_FACE); + } + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * LASTY].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face, NO_FACE); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, -SZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * FIRSTY].face, NO_FACE, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * LASTZ].face, NO_FACE); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * REVZ(k)].face, NO_FACE); + } + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * LASTY].face, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * FIRSTZ].face, NO_FACE); + } + glTranslatef(S1, 0, -SZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * LASTZ].face, NO_FACE); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * REVZ(k)].face, NO_FACE); + } + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * LASTY].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * FIRSTZ].face, NO_FACE); + glPopMatrix(); + for (j = 1; j < MAXSIZEY - 1; j++) { + glPushMatrix(); + if (slice.depth == REVY(j)) + glRotatef(rotatestep, 0, HALFY, 0); + glTranslatef(-HALFX, MIDY(j), -HALFZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * j].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * REVY(j)].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(1, 0, -SZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * j].face, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE); + /* Center */ + glTranslatef(0, 0, SZ); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * REVY(j)].face, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(S1, 0, -SZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * j].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + } + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * REVY(j)].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + glPopMatrix(); + } + if (slice.depth == 0) + glRotatef(rotatestep, 0, HALFY, 0); + + glTranslatef(-HALFX, HALFY, -HALFZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * LASTY].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * k].face); + } + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * LASTZ].face); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, -SZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * LASTY].face, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * FIRSTZ].face); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * k].face); + } + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * FIRSTY].face, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * LASTZ].face); + } + glTranslatef(S1, 0, -SZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * LASTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * FIRSTZ].face); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * k].face); + } + glTranslatef(0, 0, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * FIRSTY].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * LASTZ].face); + break; + case LEFT_FACE: /* RIGHT_FACE too */ + /* rotatestep is negative because the RIGHT face is the default here */ + glPushMatrix(); + if (slice.depth == 0) + glRotatef(-rotatestep, HALFX, 0, 0); + + glTranslatef(-HALFX, -HALFY, -HALFZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * LASTZ].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * j].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * LASTY].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, -SY, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * REVZ(k)].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * k].face); + } + glTranslatef(0, -SY, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * LASTY].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * REVY(j)].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * LASTZ].face); + glPopMatrix(); + for (i = 1; i < MAXSIZEX - 1; i++) { + glPushMatrix(); + if (slice.depth == i) + glRotatef(-rotatestep, HALFX, 0, 0); + glTranslatef(MIDX(i), -HALFY, -HALFZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * FIRSTY].face, NO_FACE, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * LASTZ].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * j].face, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * LASTY].face, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * FIRSTZ].face); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, -SY, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * REVZ(k)].face, NO_FACE); + /* Center */ + glTranslatef(0, SY, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * k].face); + } + glTranslatef(0, -SY, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * LASTY].face, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * FIRSTZ].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * REVY(j)].face, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * FIRSTY].face, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * LASTZ].face); + glPopMatrix(); + } + if (slice.depth == MAXSIZEX - 1) + glRotatef(-rotatestep, HALFX, 0, 0); + glTranslatef(HALFX, -HALFY, -HALFZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * LASTZ].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * j].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + } + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * LASTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * FIRSTZ].face); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glTranslatef(0, -SY, S1); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * REVZ(k)].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + } + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * k].face); + } + glTranslatef(0, -SY, S1); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * LASTY].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * FIRSTZ].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * REVY(j)].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + } + glTranslatef(0, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * FIRSTY].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * LASTZ].face); + break; + case FRONT_FACE: /* BACK_FACE too */ + glPushMatrix(); + if (slice.depth == MAXSIZEZ - 1) + glRotatef(rotatestep, 0, 0, HALFZ); + + glTranslatef(-HALFX, -HALFY, -HALFZ); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * LASTZ].face, NO_FACE); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * FIRSTY].face, NO_FACE, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * LASTZ].face, NO_FACE); + } + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * LASTZ].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(-SX, S1, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * j].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * j].face, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * j].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + } + glTranslatef(-SX, S1, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][FIRSTX + MAXSIZEX * LASTY].face, NO_FACE, + rp->cubeLoc[LEFT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][i + MAXSIZEX * LASTY].face, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * FIRSTZ].face); + } + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + rp->cubeLoc[BACK_FACE][LASTX + MAXSIZEX * LASTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * FIRSTZ].face); + glPopMatrix(); + for (k = 1; k < MAXSIZEZ - 1; k++) { + glPushMatrix(); + if (slice.depth == REVZ(k)) + glRotatef(rotatestep, 0, 0, HALFZ); + glTranslatef(-HALFX, -HALFY, MIDZ(k)); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * REVZ(k)].face, NO_FACE); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * REVZ(k)].face, NO_FACE); + } + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * REVZ(k)].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(-SX, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + /* Center */ + glTranslatef(SX, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + } + glTranslatef(-SX, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + rp->cubeLoc[LEFT_FACE][k + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * k].face); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * k].face); + } + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[RIGHT_FACE][REVZ(k) + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * k].face); + glPopMatrix(); + } + if (slice.depth == 0) + glRotatef(rotatestep, 0, 0, HALFZ); + glTranslatef(-HALFX, -HALFY, HALFZ); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * LASTY].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * LASTY].face, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][FIRSTX + MAXSIZEX * FIRSTZ].face, NO_FACE); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * LASTY].face, + NO_FACE, NO_FACE, + rp->cubeLoc[BOTTOM_FACE][i + MAXSIZEX * FIRSTZ].face, NO_FACE); + } + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * LASTY].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * LASTY].face, + rp->cubeLoc[BOTTOM_FACE][LASTX + MAXSIZEX * FIRSTZ].face, NO_FACE); + for (j = 1; j < MAXSIZEY - 1; j++) { + glTranslatef(-SX, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * REVY(j)].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * REVY(j)].face, NO_FACE, + NO_FACE, NO_FACE); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * REVY(j)].face, + NO_FACE, NO_FACE, + NO_FACE, NO_FACE); + } + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * REVY(j)].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * REVY(j)].face, + NO_FACE, NO_FACE); + } + glTranslatef(-SX, S1, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][FIRSTX + MAXSIZEX * FIRSTY].face, + rp->cubeLoc[LEFT_FACE][LASTZ + MAXSIZEZ * FIRSTY].face, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][FIRSTX + MAXSIZEX * LASTZ].face); + for (i = 1; i < MAXSIZEX - 1; i++) { + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][i + MAXSIZEX * FIRSTY].face, + NO_FACE, NO_FACE, + NO_FACE, rp->cubeLoc[TOP_FACE][i + MAXSIZEX * LASTZ].face); + } + glTranslatef(S1, 0, 0); + DRAW_CUBIT(mi, + NO_FACE, rp->cubeLoc[FRONT_FACE][LASTX + MAXSIZEX * FIRSTY].face, + NO_FACE, rp->cubeLoc[RIGHT_FACE][FIRSTZ + MAXSIZEZ * FIRSTY].face, + NO_FACE, rp->cubeLoc[TOP_FACE][LASTX + MAXSIZEX * LASTZ].face); + break; + } + return True; +#undef S1 +} + +/* From David Bagley's xrubik. Used by permission. ;) */ +static void +readRC(rubikstruct * rp, int face, int dir, int h, int orient, int size) +{ + int g, sizeOfRow; + + sizeOfRow = sizeRow(rp, face); + if (dir == TOP || dir == BOTTOM) + for (g = 0; g < size; g++) + rp->rowLoc[orient][g] = + rp->cubeLoc[face][g * sizeOfRow + h]; + else /* dir == RIGHT || dir == LEFT */ + for (g = 0; g < size; g++) + rp->rowLoc[orient][g] = + rp->cubeLoc[face][h * sizeOfRow + g]; +} + +static void +rotateRC(rubikstruct * rp, int rotate, int orient, int size) +{ + int g; + + for (g = 0; g < size; g++) + rp->rowLoc[orient][g].rotation = + (rp->rowLoc[orient][g].rotation + rotate) % MAXORIENT; +} + +static void +reverseRC(rubikstruct * rp, int orient, int size) +{ + int g; + RubikLoc temp; + + for (g = 0; g < size / 2; g++) { + temp = rp->rowLoc[orient][size - 1 - g]; + rp->rowLoc[orient][size - 1 - g] = rp->rowLoc[orient][g]; + rp->rowLoc[orient][g] = temp; + } +} + +static void +writeRC(rubikstruct * rp, int face, int dir, int h, int orient, int size) +{ + int g, position, sizeOfRow; + + sizeOfRow = sizeRow(rp, face); + if (dir == TOP || dir == BOTTOM) { + for (g = 0; g < size; g++) { + position = g * sizeOfRow + h; + rp->cubeLoc[face][position] = rp->rowLoc[orient][g]; + /* DrawSquare(face, position); */ + } + } else { /* dir == RIGHT || dir == LEFT */ + for (g = 0; g < size; g++) { + position = h * sizeOfRow + g; + rp->cubeLoc[face][position] = rp->rowLoc[orient][g]; + /* DrawSquare(face, position); */ + } + } +} + +static Bool +rotateFace(rubikstruct * rp, int face, int direction) +{ + int position, i, j, sizeOfRow, sizeOfColumn, sizeOnPlane; + RubikLoc *faceLoc; + + faceSizes(rp, face, &sizeOfRow, &sizeOfColumn); + sizeOnPlane = sizeOfRow * sizeOfColumn; + if ((faceLoc = (RubikLoc *) malloc(sizeOnPlane * + sizeof (RubikLoc))) == NULL) { + return False; + } + /* Read Face */ + for (position = 0; position < sizeOnPlane; position++) + faceLoc[position] = rp->cubeLoc[face][position]; + /* Write Face */ + for (position = 0; position < sizeOnPlane; position++) { + i = position % sizeOfRow; + j = position / sizeOfRow; + if (direction == CW) + rp->cubeLoc[face][position] = + faceLoc[(sizeOfRow - i - 1) * sizeOfRow + j]; + else if (direction == CCW) + rp->cubeLoc[face][position] = + faceLoc[i * sizeOfRow + sizeOfColumn - j - 1]; + else /* (direction == HALF) */ + rp->cubeLoc[face][position] = + faceLoc[sizeOfRow - i - 1 + (sizeOfColumn - j - 1) * sizeOfRow]; + rp->cubeLoc[face][position].rotation = + (rp->cubeLoc[face][position].rotation + + direction - MAXORIENT) % MAXORIENT; + /* DrawSquare(face, position); */ + } + if (faceLoc != NULL) + (void) free((void *) faceLoc); + return True; +} + +/* Yeah this is big and ugly */ +static void +slideRC(int face, int direction, int h, int sizeOnOppAxis, + int *newFace, int *newDirection, int *newH, + int *rotate, Bool *reverse) +{ + *newFace = slideNextRow[face][direction].face; + *rotate = slideNextRow[face][direction].rotation; + *newDirection = (*rotate + direction) % MAXORIENT; + switch (*rotate) { + case TOP: + *newH = h; + *reverse = False; + break; + case RIGHT: + if (*newDirection == TOP || *newDirection == BOTTOM) { + *newH = sizeOnOppAxis - 1 - h; + *reverse = False; + } else { /* *newDirection == RIGHT || *newDirection == LEFT */ + *newH = h; + *reverse = True; + } + break; + case BOTTOM: + *newH = sizeOnOppAxis - 1 - h; + *reverse = True; + break; + case LEFT: + if (*newDirection == TOP || *newDirection == BOTTOM) { + *newH = h; + *reverse = True; + } else { /* *newDirection == RIGHT || *newDirection == LEFT */ + *newH = sizeOnOppAxis - 1 - h; + *reverse = False; + } + break; + default: + (void) printf("slideRC: rotate %d\n", *rotate); + *newH = 0; + *reverse = False; + } +} + +static Bool +moveRubik(rubikstruct * rp, int face, int direction, int position) +{ + int newFace, newDirection, rotate, reverse; + int h, k, newH; + int i, j, sizeOfRow, sizeOfColumn, sizeOnAxis, sizeOnOppAxis; + + faceSizes(rp, face, &sizeOfRow, &sizeOfColumn); + if (direction == CW || direction == CCW) { + direction = (direction == CCW) ? + (rotateToRow[face].direction + 2) % MAXORIENT : + rotateToRow[face].direction; + if (rotateToRow[face].sideFace == RIGHT) { + i = j = sizeOfColumn - 1; + } else if (rotateToRow[face].sideFace == BOTTOM) { + i = j = sizeOfRow - 1; + } else { + i = j = 0; + } + face = rotateToRow[face].face; + position = j * sizeOfRow + i; + } + i = position % sizeOfRow; + j = position / sizeOfRow; + h = (direction == TOP || direction == BOTTOM) ? i : j; + if (direction == TOP || direction == BOTTOM) { + sizeOnAxis = sizeOfColumn; + sizeOnOppAxis = sizeOfRow; + } else { + sizeOnAxis = sizeOfRow; + sizeOnOppAxis = sizeOfColumn; + } + /* rotate sides CW or CCW or HALF) */ + + if (h == sizeOnOppAxis - 1) { + newDirection = (direction == TOP || direction == BOTTOM) ? + TOP : RIGHT; + if (rp->degreeTurn == 180) { + if (!rotateFace(rp, rowToRotate[face][newDirection], HALF)) + return False; + } else if (direction == TOP || direction == RIGHT) { + if (!rotateFace(rp, rowToRotate[face][newDirection], CW)) + return False; + } else { /* direction == BOTTOM || direction == LEFT */ + if (!rotateFace(rp, rowToRotate[face][newDirection], CCW)) + return False; + } + } + if (h == 0) { + newDirection = (direction == TOP || direction == BOTTOM) ? + BOTTOM : LEFT; + if (rp->degreeTurn == 180) { + if (!rotateFace(rp, rowToRotate[face][newDirection], HALF)) + return False; + } else if (direction == TOP || direction == RIGHT) { + if (!rotateFace(rp, rowToRotate[face][newDirection], CCW)) + return False; + } else { /* direction == BOTTOM || direction == LEFT */ + if (!rotateFace(rp, rowToRotate[face][newDirection], CW)) + return False; + } + } + /* Slide rows or columns */ + readRC(rp, face, direction, h, 0, sizeOnAxis); + if (rp->degreeTurn == 180) { + int sizeOnDepthAxis; + + slideRC(face, direction, h, sizeOnOppAxis, + &newFace, &newDirection, &newH, &rotate, &reverse); + sizeOnDepthAxis = sizeFace(rp, newFace) / sizeOnOppAxis; + readRC(rp, newFace, newDirection, newH, 1, sizeOnDepthAxis); + rotateRC(rp, rotate, 0, sizeOnAxis); + if (reverse == True) + reverseRC(rp, 0, sizeOnAxis); + face = newFace; + direction = newDirection; + h = newH; + for (k = 2; k <= MAXORIENT + 1; k++) { + slideRC(face, direction, h, sizeOnOppAxis, + &newFace, &newDirection, &newH, &rotate, &reverse); + if (k != MAXORIENT && k != MAXORIENT + 1) + readRC(rp, newFace, newDirection, newH, k, + (k % 2) ? sizeOnDepthAxis : sizeOnAxis); + rotateRC(rp, rotate, k - 2, + (k % 2) ? sizeOnDepthAxis : sizeOnAxis); + if (k != MAXORIENT + 1) + rotateRC(rp, rotate, k - 1, + (k % 2) ? sizeOnAxis : sizeOnDepthAxis); + if (reverse == True) { + reverseRC(rp, k - 2, + (k % 2) ? sizeOnDepthAxis : sizeOnAxis); + if (k != MAXORIENT + 1) + reverseRC(rp, k - 1, + (k % 2) ? sizeOnAxis : sizeOnDepthAxis); + } + writeRC(rp, newFace, newDirection, newH, k - 2, + (k % 2) ? sizeOnDepthAxis : sizeOnAxis); + face = newFace; + direction = newDirection; + h = newH; + } + } else { + for (k = 1; k <= MAXORIENT; k++) { + slideRC(face, direction, h, sizeOnOppAxis, + &newFace, &newDirection, &newH, &rotate, &reverse); + if (k != MAXORIENT) + readRC(rp, newFace, newDirection, newH, k, sizeOnAxis); + rotateRC(rp, rotate, k - 1, sizeOnAxis); + if (reverse == True) + reverseRC(rp, k - 1, sizeOnAxis); + writeRC(rp, newFace, newDirection, newH, k - 1, sizeOnAxis); + face = newFace; + direction = newDirection; + h = newH; + } + } + return True; +} + +#ifdef DEBUG +static void +printCube(rubikstruct * rp) +{ + int face, position, sizeOfRow, sizeOfColumn; + + for (face = 0; face < MAXFACES; face++) { + faceSizes(rp, face, &sizeOfRow, &sizeOfColumn); + for (position = 0; position < sizeOfRow * sizeOfColumn; position++) { + (void) printf("%d %d ", rp->cubeLoc[face][position].face, + rp->cubeLoc[face][position].rotation); + if (!((position + 1) % sizeOfRow)) + (void) printf("\n"); + } + (void) printf("\n"); + } + (void) printf("\n"); +} + +#endif + +static Bool +evalmovement(ModeInfo * mi, RubikMove movement) +{ + rubikstruct *rp = &rubik[MI_SCREEN(mi)]; + +#ifdef DEBUG + printCube(rp); +#endif + if (movement.face < 0 || movement.face >= MAXFACES) + return True; + if (!moveRubik(rp, movement.face, movement.direction, movement.position)) + return False; + return True; +} + +static Bool +compare_moves(rubikstruct * rp, RubikMove move1, RubikMove move2, Bool opp) +{ + RubikSlice slice1, slice2; + + convertMove(rp, move1, &slice1); + convertMove(rp, move2, &slice2); + if (slice1.face == slice2.face && + slice1.depth == slice2.depth) { + if (slice1.rotation == slice2.rotation) { /* CW or CCW */ + if (!opp) + return True; + } else { + if (opp) + return True; + } + } + return False; +} + +static Bool +shuffle(ModeInfo * mi) +{ + rubikstruct *rp = &rubik[MI_SCREEN(mi)]; + int i, face, position; + RubikMove move; + + if (sizex) + i = sizex; + else + i = MI_SIZE(mi); + if (i < -MINSIZE) + i = NRAND(-i - MINSIZE + 1) + MINSIZE; + else if (i < MINSIZE) + i = MINSIZE; + + if (LRAND() % 2 && !sizey && !sizez) { /* Make normal (NxNxN) cubes more likely */ + MAXSIZEX = MAXSIZEY = MAXSIZEZ = i; + } else { + MAXSIZEX = i; + if (sizey) + i = sizey; + else + i = MI_SIZE(mi); + if (i < -MINSIZE) + i = NRAND(-i - MINSIZE + 1) + MINSIZE; + else if (i < MINSIZE) + i = MINSIZE; + if (LRAND() % 2 && !sizez) { /* Make more MxNxN more likely than LxMxN */ + MAXSIZEY = MAXSIZEZ = i; + } else { + MAXSIZEY = i; + if (sizez) + i = sizez; + else + i = MI_SIZE(mi); + if (i < -MINSIZE) + i = NRAND(-i - MINSIZE + 1) + MINSIZE; + else if (i < MINSIZE) + i = MINSIZE; + MAXSIZEZ = i; + } + } + + for (face = 0; face < MAXFACES; face++) { + if (rp->cubeLoc[face] != NULL) + (void) free((void *) rp->cubeLoc[face]); + if ((rp->cubeLoc[face] = (RubikLoc *) malloc(sizeFace(rp, face) * + sizeof (RubikLoc))) == NULL) { + return False; + } + for (position = 0; position < sizeFace(rp, face); position++) { + rp->cubeLoc[face][position].face = face; + rp->cubeLoc[face][position].rotation = TOP; + } + } + for (i = 0; i < MAXORIENT; i++) { + if (rp->rowLoc[i] != NULL) + (void) free((void *) rp->rowLoc[i]); + /* The following is reused so make it the biggest size */ + if ((rp->rowLoc[i] = (RubikLoc *) malloc(MAXMAXSIZE * + sizeof (RubikLoc))) == NULL) { + return False; + } + } + rp->storedmoves = MI_COUNT(mi); + if (rp->storedmoves < 0) { + if (rp->moves != NULL) + (void) free((void *) rp->moves); + rp->moves = (RubikMove *) NULL; + rp->storedmoves = NRAND(-rp->storedmoves) + 1; + } + if ((rp->storedmoves) && (rp->moves == NULL)) + if ((rp->moves = (RubikMove *) calloc(rp->storedmoves + 1, + sizeof (RubikMove))) == NULL) { + return False; + } + if (MI_CYCLES(mi) <= 1) { + rp->anglestep = 90.0; + } else { + rp->anglestep = 90.0 / (GLfloat) (MI_CYCLES(mi)); + } + + for (i = 0; i < rp->storedmoves; i++) { + Bool condition; + + do { + move.face = NRAND(MAXFACES); + move.direction = NRAND(MAXORIENT); /* Exclude CW and CCW, its ok */ + move.position = NRAND(sizeFace(rp, move.face)); + rp->degreeTurn = (checkFaceSquare(rp, + rowToRotate[move.face][move.direction])) ? 90 : 180; + condition = True; + if (i > 0) { /* avoid immediate undoing moves */ + if (compare_moves(rp, move, rp->moves[i - 1], True)) + condition = False; + if (rp->degreeTurn == 180 && + compare_moves(rp, move, rp->moves[i - 1], False)) + condition = False; + } + if (i > 1) /* avoid 3 consecutive identical moves */ + if (compare_moves(rp, move, rp->moves[i - 1], False) && + compare_moves(rp, move, rp->moves[i - 2], False)) + condition = False; + /* + * Still some silly moves being made.... + */ + } while (!condition); + if (hideshuffling) + if (!evalmovement(mi, move)) + return False; + rp->moves[i] = move; + } + rp->VX = 0.005; + if (NRAND(100) < 50) + rp->VX *= -1; + rp->VY = 0.005; + if (NRAND(100) < 50) + rp->VY *= -1; + rp->movement.face = NO_FACE; + rp->rotatestep = 0; + rp->action = hideshuffling ? ACTION_SOLVE : ACTION_SHUFFLE; + rp->shufflingmoves = 0; + rp->done = 0; + return True; +} + +ENTRYPOINT void +reshape_rubik(ModeInfo * mi, int width, int height) +{ + rubikstruct *rp = &rubik[MI_SCREEN(mi)]; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + } + + glViewport(0, y, rp->WindW = (GLint) width, rp->WindH = (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); + glMatrixMode(GL_MODELVIEW); +} + +ENTRYPOINT Bool +rubik_handle_event (ModeInfo *mi, XEvent *event) +{ + rubikstruct *rp = &rubik[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, rp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &rp->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + rp->done = 1; + return True; + } + + return False; +} + + +static Bool +pinit(ModeInfo * mi) +{ + glClearDepth(1.0); + glColor3f(1.0, 1.0, 1.0); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glShadeModel(GL_FLAT); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); + + return (shuffle(mi)); +} + +ENTRYPOINT void +free_rubik(ModeInfo *mi) +{ + rubikstruct *rp = &rubik[MI_SCREEN(mi)]; + int i; + + for (i = 0; i < MAXFACES; i++) + if (rp->cubeLoc[i] != NULL) { + (void) free((void *) rp->cubeLoc[i]); + rp->cubeLoc[i] = (RubikLoc *) NULL; + } + for (i = 0; i < MAXORIENT; i++) + if (rp->rowLoc[i] != NULL) { + (void) free((void *) rp->rowLoc[i]); + rp->rowLoc[i] = (RubikLoc *) NULL; + } + if (rp->moves != NULL) { + (void) free((void *) rp->moves); + rp->moves = (RubikMove *) NULL; + } +} + +ENTRYPOINT void +init_rubik(ModeInfo * mi) +{ + rubikstruct *rp; + + MI_INIT (mi, rubik); + rp = &rubik[MI_SCREEN(mi)]; + rp->step = NRAND(90); + rp->PX = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0; + rp->PY = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0; + + rp->trackball = gltrackball_init (True); + + if ((rp->glx_context = init_GL(mi)) != NULL) { + + reshape_rubik(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + if (!pinit(mi)) { + free_rubik(mi); + if (MI_IS_VERBOSE(mi)) { + (void) fprintf(stderr, + "Could not allocate memory for rubik\n"); + } + return; + } + } else { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void +draw_rubik(ModeInfo * mi) +{ + Bool bounced = False; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + rubikstruct *rp; + + if (rubik == NULL) + return; + rp = &rubik[MI_SCREEN(mi)]; + if (rp->cubeLoc[0] == NULL) + return; + + MI_IS_DRAWN(mi) = True; + if (!rp->glx_context) + return; + + mi->polygon_count = 0; + glXMakeCurrent(display, window, *(rp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + glTranslatef(0.0, 0.0, -10.0); + + rp->PX += rp->VX; + rp->PY += rp->VY; + + if (rp->PY < -1) { + rp->PY += (-1) - (rp->PY); + rp->VY = -rp->VY; + bounced = True; + } + if (rp->PY > 1) { + rp->PY -= (rp->PY) - 1; + rp->VY = -rp->VY; + bounced = True; + } + if (rp->PX < -1) { + rp->PX += (-1) - (rp->PX); + rp->VX = -rp->VX; + bounced = True; + } + if (rp->PX > 1) { + rp->PX -= (rp->PX) - 1; + rp->VX = -rp->VX; + bounced = True; + } + if (bounced) { + rp->VX += ((float) LRAND() / (float) MAXRAND) * 0.002 - 0.001; + rp->VY += ((float) LRAND() / (float) MAXRAND) * 0.002 - 0.001; + if (rp->VX > 0.006) + rp->VX = 0.006; + if (rp->VY > 0.006) + rp->VY = 0.006; + if (rp->VX < -0.006) + rp->VX = -0.006; + if (rp->VY < -0.006) + rp->VY = -0.006; + } + if (!MI_IS_ICONIC(mi)) { + glTranslatef(rp->PX, rp->PY, 0); + glScalef(Scale4Window * rp->WindH / rp->WindW, Scale4Window, Scale4Window); + } else { + glScalef(Scale4Iconic * rp->WindH / rp->WindW, Scale4Iconic, Scale4Iconic); + } + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) { + glScalef (1/h, h, 1); /* #### not quite right */ + h = 1.8; + glScalef (h, h, h); + } + } +# endif + + gltrackball_rotate (rp->trackball); + + glRotatef(rp->step * 100, 1, 0, 0); + glRotatef(rp->step * 95, 0, 1, 0); + glRotatef(rp->step * 90, 0, 0, 1); + + if (!draw_cube(mi)) { + MI_ABORT(mi); + return; + } + if (MI_IS_FPS(mi)) do_fps (mi); + glXSwapBuffers(display, window); + + if (rp->action == ACTION_SHUFFLE) { + if (rp->done) { + if (++rp->rotatestep > DELAY_AFTER_SHUFFLING) { + rp->movement.face = NO_FACE; + rp->rotatestep = 0; + rp->action = ACTION_SOLVE; + rp->done = 0; + } + } else { + if (rp->movement.face == NO_FACE) { + if (rp->shufflingmoves < rp->storedmoves) { + rp->rotatestep = 0; + rp->movement = rp->moves[rp->shufflingmoves]; + } else { + rp->rotatestep = 0; + rp->done = 1; + } + } else { + if (rp->rotatestep == 0) { + if (rp->movement.direction == CW || rp->movement.direction == CCW) + rp->degreeTurn = (checkFaceSquare(rp, rp->movement.face)) ? 90 : 180; + else + rp->degreeTurn = (checkFaceSquare(rp, rowToRotate[rp->movement.face][rp->movement.direction])) ? 90 : 180; + } + rp->rotatestep += rp->anglestep; + if (rp->rotatestep > rp->degreeTurn) { + if (!evalmovement(mi, rp->movement)) { + free_rubik(mi); + if (MI_IS_VERBOSE(mi)) { + (void) fprintf(stderr, + "Could not allocate memory for rubik\n"); + } + return; + } + rp->shufflingmoves++; + rp->movement.face = NO_FACE; + } + } + } + } else { + if (rp->done) { + if (++rp->rotatestep > DELAY_AFTER_SOLVING) + if (!shuffle(mi)) { + free_rubik(mi); + if (MI_IS_VERBOSE(mi)) { + (void) fprintf(stderr, + "Could not allocate memory for rubik\n"); + } + return; + } + } else { + if (rp->movement.face == NO_FACE) { + if (rp->storedmoves > 0) { + rp->rotatestep = 0; + rp->movement = rp->moves[rp->storedmoves - 1]; + rp->movement.direction = (rp->movement.direction + + (MAXORIENT / 2)) % MAXORIENT; + } else { + rp->rotatestep = 0; + rp->done = 1; + } + } else { + if (rp->rotatestep == 0) { + if (rp->movement.direction == CW || rp->movement.direction == CCW) + rp->degreeTurn = (checkFaceSquare(rp, rp->movement.face)) ? 90 : 180; + else + rp->degreeTurn = (checkFaceSquare(rp, rowToRotate[rp->movement.face][rp->movement.direction])) ? 90 : 180; + } + rp->rotatestep += rp->anglestep; + if (rp->rotatestep > rp->degreeTurn) { + if (!evalmovement(mi, rp->movement)) { + free_rubik(mi); + if (MI_IS_VERBOSE(mi)) { + (void) fprintf(stderr, + "Could not allocate memory for rubik\n"); + } + return; + } + rp->storedmoves--; + rp->movement.face = NO_FACE; + } + } + } + } + + glPopMatrix(); + + glFlush(); + + rp->step += 0.002; +} + +#ifndef STANDALONE +ENTRYPOINT void +change_rubik(ModeInfo * mi) +{ + rubikstruct *rp; + + if (rubik == NULL) + return; + rp = &rubik[MI_SCREEN(mi)]; + + if (!rp->glx_context) + return; + if (!pinit(mi)) { + free_rubik(mi); + if (MI_IS_VERBOSE(mi)) { + (void) fprintf(stderr, + "Could not allocate memory for rubik\n"); + } + return; + } +} +#endif /* !STANDALONE */ + +#endif + +XSCREENSAVER_MODULE ("Rubik", rubik) diff --git a/hacks/glx/rubik.man b/hacks/glx/rubik.man new file mode 100644 index 0000000..08e5b94 --- /dev/null +++ b/hacks/glx/rubik.man @@ -0,0 +1,69 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +rubik - screen saver that solves Rubik's Cube. +.SH SYNOPSIS +.B rubik +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-count \fInumber\fP] +[\-cycles \fInumber\fP] +[\-delay \fInumber\fP] +[\-size \fInumber\fP] +[\-hideshuffling] +[\-fps] +.SH DESCRIPTION +Draws a Rubik's Cube that rotates in three dimensions and repeatedly +shuffles and solves itself. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-count \fInumber\fP +Count. -100 - 100. Default: -30. +.TP 8 +.B \-cycles \fInumber\fP +Timeout. 0 - 60. Default: 5. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.). +.TP 8 +.B \-size \fInumber\fP +Size. -20 - 20. Default: -6. +.TP 8 +.B \-hideshuffling | \-no-hideshuffling +Show Shuffling. Boolean. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Marcelo Vianna. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Marcelo Vianna. diff --git a/hacks/glx/rubikblocks.c b/hacks/glx/rubikblocks.c new file mode 100644 index 0000000..fadeb0d --- /dev/null +++ b/hacks/glx/rubikblocks.c @@ -0,0 +1,633 @@ +/* rubikblocks, Copyright (c) 2009 Vasek Potocek + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* RubikBlocks - a Rubik's Mirror Blocks puzzle introduced in 2008. + * No mirrors in this version, though, hence the altered name. + */ + +/* TODO: + * add reflection to the faces + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_rubikblocks 0 +# define release_rubikblocks 0 +#include "xlockmore.h" +#include "rotator.h" +#include "gltrackball.h" + +#ifdef USE_GL + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_TEXTURE "True" +#define DEF_RANDOMIZE "False" +#define DEF_SPINSPEED "0.1" +#define DEF_ROTSPEED "3.0" +#define DEF_WANDERSPEED "0.005" +#define DEF_WAIT "40.0" +#define DEF_CUBESIZE "1.0" + +#define SHUFFLE 100 + +#define TEX_WIDTH 64 +#define TEX_HEIGHT 64 +#define BORDER 5 +#define BORDER2 (BORDER*BORDER) + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define rnd01() ((int)(random()%2)) + +/*************************************************************************/ + +static Bool spin, wander, rndstart, tex; +static float spinspeed, tspeed, wspeed, twait, size; + +static argtype vars[] = { + { &spin, "spin", "Spin", DEF_SPIN, t_Bool}, + { &wander, "wander", "Wander", DEF_WANDER, t_Bool}, + { &rndstart, "randomize", "Randomize", DEF_RANDOMIZE, t_Bool}, + { &tex, "texture", "Texture", DEF_TEXTURE, t_Bool}, + { &spinspeed, "spinspeed", "SpinSpeed", DEF_SPINSPEED, t_Float}, + { &tspeed, "rotspeed", "RotSpeed", DEF_ROTSPEED, t_Float}, + { &wspeed, "wanderspeed", "WanderSpeed", DEF_WANDERSPEED, t_Float}, + { &twait, "wait", "Wait", DEF_WAIT, t_Float}, + { &size, "cubesize", "CubeSize", DEF_CUBESIZE, t_Float}, +}; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-randomize", ".randomize", XrmoptionNoArg, "True" }, + { "+randomize", ".randomize", XrmoptionNoArg, "False" }, + { "-texture", ".texture", XrmoptionNoArg, "True" }, + { "+texture", ".texture", XrmoptionNoArg, "False" }, + { "-spinspeed", ".spinspeed", XrmoptionSepArg, 0 }, + { "-wanderspeed", ".wanderspeed", XrmoptionSepArg, 0 }, + { "-rotspeed", ".rotspeed", XrmoptionSepArg, 0 }, + { "-wait", ".wait", XrmoptionSepArg, 0 }, + { "-cubesize", ".cubesize", XrmoptionSepArg, 0 }, +}; + +ENTRYPOINT ModeSpecOpt rubikblocks_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct rubikblocks_description = +{ "rubikblocks", "init_rubikblocks", "draw_rubikblocks", NULL, + "draw_rubikblocks", "change_rubikblocks", NULL, &rubikblocks_opts, + 25000, 1, 1, 1, 1.0, 4, "", + "Shows randomly shuffling Rubik's Mirror Blocks puzzle", 0, NULL +}; +#endif + +typedef struct { + float pos[3]; /* _original_ position */ + float qr[4]; /* quaternion of rotation */ + Bool act; /* flag if it is undergoing the current rotation */ +} piece_t; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + GLfloat ratio; + Bool button_down; + + Bool pause; /* pause between two rotations */ + float qfram[4]; /* quaternion describing the rotation in one anim. frame */ + GLfloat t, tmax; /* rotation clock */ + piece_t pieces[27]; /* type and tilt of all the pieces */ + + unsigned char texture[TEX_HEIGHT][TEX_WIDTH]; + GLuint list_base; + Bool wire; +} rubikblocks_conf; + +static rubikblocks_conf *rubikblocks = NULL; + +static const GLfloat shininess = 20.0; +static const GLfloat ambient[] = {0.0, 0.0, 0.0, 1.0}; +static const GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const GLfloat position0[] = {1.0, 1.0, 1.0, 0.0}; +static const GLfloat position1[] = {-1.0, -1.0, 1.0, 0.0}; +static const GLfloat lmodel_ambient[] = {0.1, 0.1, 0.1, 1.0}; +static const GLfloat material_ambient[] = {0.7, 0.7, 0.7, 1.0}; +static const GLfloat material_diffuse[] = {0.7, 0.7, 0.7, 1.0}; +static const GLfloat material_specular[] = {0.2, 0.2, 0.2, 1.0}; + +/*************************************************************************/ + +/* Multiplies two quaternions, src*dest, and stores the result in dest. */ +static void +mult_quat(float src[4], float dest[4]) +{ + float r, i, j, k; + r = src[0]*dest[0] - src[1]*dest[1] - src[2]*dest[2] - src[3]*dest[3]; + i = src[0]*dest[1] + src[1]*dest[0] + src[2]*dest[3] - src[3]*dest[2]; + j = src[0]*dest[2] + src[2]*dest[0] + src[3]*dest[1] - src[1]*dest[3]; + k = src[0]*dest[3] + src[3]*dest[0] + src[1]*dest[2] - src[2]*dest[1]; + dest[0] = r; + dest[1] = i; + dest[2] = j; + dest[3] = k; +} + +/* Sets the 'act' flag for pieces which will undergo the rotation. */ +static void +flag_pieces(piece_t pieces[27], int axis, int side) +{ + int i, j; + float q[4]; + for(i = 0; i < 27; i++) + { + q[0] = 0; + q[1] = pieces[i].pos[0]; + q[2] = pieces[i].pos[1]; + q[3] = pieces[i].pos[2]; + mult_quat(pieces[i].qr, q); + for(j = 1; j < 4; j++) + q[j] = -q[j]; + mult_quat(pieces[i].qr, q); + for(j = 1; j < 4; j++) + q[j] = -q[j]; + if(fabs(q[axis] - side) < 0.1) + pieces[i].act = True; + else + pieces[i].act = False; + } +} + +/* "Rounds" the value to the nearest from the set {0, +-1/2, +-1/sqrt(2), +-1}. + * It is guaranteed to be pretty close to one when this function is called. */ +static float +settle_value(float v) +{ + if(v > 0.9) return 1; + else if(v < -0.9) return -1; + else if(v > 0.6) return M_SQRT1_2; + else if(v < -0.6) return -M_SQRT1_2; + else if(v > 0.4) return 0.5; + else if(v < -0.4) return -0.5; + else return 0; +} + +static void +randomize(rubikblocks_conf *cp) +{ + int axis, side; + int i, j; + for(i = 0; i < SHUFFLE; i++) + { + axis = (random()%3)+1; + side = rnd01()*2-1; + flag_pieces(cp->pieces, axis, side); + for(j = 1; j < 4; j++) + cp->qfram[j] = 0; + cp->qfram[0] = M_SQRT1_2; + cp->qfram[axis] = M_SQRT1_2; + for(j = 0; j < 27; j++) + { + if(cp->pieces[j].act) + mult_quat(cp->qfram, cp->pieces[j].qr); + } + } +} + +static void +finish(rubikblocks_conf *cp) +{ + static int axis = 1; + int side, angle; + int i, j; + if(cp->pause) + { + switch(axis) + { + case 1: + axis = rnd01()+2; + break; + case 2: + axis = 2*rnd01()+1; + break; + default: + axis = rnd01()+1; + } + side = rnd01()*2-1; + angle = rnd01()+1; + flag_pieces(cp->pieces, axis, side); + cp->pause = False; + cp->tmax = 90.0*angle; + for(i = 1; i < 4; i++) + cp->qfram[i] = 0; + cp->qfram[0] = cos(tspeed*M_PI/360); + cp->qfram[axis] = sin((rnd01()*2-1)*tspeed*M_PI/360); + } + else + { + for(i = 0; i < 27; i++) + { + for(j = 0; j < 4; j++) + { + cp->pieces[i].qr[j] = settle_value(cp->pieces[i].qr[j]); + } + } + cp->pause = True; + cp->tmax = twait; + } + cp->t = 0; +} + +static Bool +draw_main(ModeInfo *mi, rubikblocks_conf *cp) +{ + int i; + double x, y, z; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); + + get_position(cp->rot, &x, &y, &z, !cp->button_down); + glTranslatef((x-0.5)*6, (y-0.5)*6, -20); + + gltrackball_rotate(cp->trackball); + + get_rotation(cp->rot, &x, &y, &z, !cp->button_down); + glRotatef(x*360, 1, 0, 0); + glRotatef(y*360, 0, 1, 0); + glRotatef(z*360, 0, 0, 1); + glScalef(size, size, size); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + if(cp->wire) glColor3f(0.7, 0.7, 0.7); + if(!cp->pause) + for(i = 0; i < 27; i++) + if(cp->pieces[i].act) + mult_quat(cp->qfram, cp->pieces[i].qr); + for(i = 0; i < 27; i++) + { + glPushMatrix(); + if(fabs(cp->pieces[i].qr[0]) < 1) + glRotatef(360/M_PI*acos(cp->pieces[i].qr[0]), + cp->pieces[i].qr[1], cp->pieces[i].qr[2], cp->pieces[i].qr[3]); + glCallList(cp->list_base + i); + glPopMatrix(); + } + if((cp->t += tspeed) > cp->tmax) finish(cp); + return True; +} + +static void +draw_horz_line(rubikblocks_conf *cp, int x1, int x2, int y) +{ + int x, y0 = y, w; + if(y < BORDER) y = -y; + else y = -BORDER; + for(; y < BORDER; y++) { + if(y0+y >= TEX_HEIGHT) break; + w = y*y*255/BORDER2; + for(x = x1; x <= x2; x++) + if(cp->texture[y0+y][x]>w) cp->texture[y0+y][x] = w; + } +} + +static void +draw_vert_line(rubikblocks_conf *cp, int x, int y1, int y2) +{ + int x0 = x, y, w; + if(x= TEX_WIDTH) break; + w = x*x*255/BORDER2; + for(y = y1; y <= y2; y++) + if(cp->texture[y][x0+x]>w) cp->texture[y][x0+x] = w; + } +} + +static void +make_texture(rubikblocks_conf *cp) +{ + int x, y; + for(y = 0; y < TEX_HEIGHT; y++) + for(x = 0; x < TEX_WIDTH; x++) + cp->texture[y][x] = 255; + draw_horz_line(cp, 0, TEX_WIDTH-1, 0); + draw_horz_line(cp, 0, TEX_WIDTH-1, TEX_HEIGHT-1); + draw_vert_line(cp, 0, 0, TEX_HEIGHT-1); + draw_vert_line(cp, TEX_WIDTH-1, 0, TEX_HEIGHT-1); +} + +/* These simple transforms make the actual shape of the pieces. The parameters + * A, B and C affect the excentricity of the pieces in each direction. */ +static float +fx(float x) +{ + const float A = 0.5; + if(x > 1.4) return 1.5 - A; + else if(x < -1.4) return -1.5 - A; + else return x; +} + +static float +fy(float y) +{ + const float B = 0.25; + if(y > 1.4) return 1.5 - B; + else if(y < -1.4) return -1.5 - B; + else return y; +} + +static float +fz(float z) +{ + const float C = 0.0; + if(z > 1.4) return 1.5 - C; + else if(z < -1.4) return -1.5 - C; + else return z; +} + +static void +init_lists(rubikblocks_conf *cp) +{ + GLuint base; + int i; + float x, y, z; + base = cp->list_base = glGenLists(27); + for(i = 0; i < 27; i++) + { + x = cp->pieces[i].pos[0]; + y = cp->pieces[i].pos[1]; + z = cp->pieces[i].pos[2]; + glNewList(base+i, GL_COMPILE); + glBegin(GL_QUAD_STRIP); + glNormal3f(1, 0, 0); + glTexCoord2f(0, 0); + glVertex3f(fx(x+0.5), fy(y-0.5), fz(z-0.5)); + glTexCoord2f(0, 1); + glVertex3f(fx(x+0.5), fy(y+0.5), fz(z-0.5)); + glTexCoord2f(1, 0); + glVertex3f(fx(x+0.5), fy(y-0.5), fz(z+0.5)); + glTexCoord2f(1, 1); + glVertex3f(fx(x+0.5), fy(y+0.5), fz(z+0.5)); + glNormal3f(0, 0, 1); + glTexCoord2f(0, 0); + glVertex3f(fx(x-0.5), fy(y-0.5), fz(z+0.5)); + glTexCoord2f(0, 1); + glVertex3f(fx(x-0.5), fy(y+0.5), fz(z+0.5)); + glNormal3f(-1, 0, 0); + glTexCoord2f(1, 0); + glVertex3f(fx(x-0.5), fy(y-0.5), fz(z-0.5)); + glTexCoord2f(1, 1); + glVertex3f(fx(x-0.5), fy(y+0.5), fz(z-0.5)); + glNormal3f(0, 0, -1); + glTexCoord2f(0, 0); + glVertex3f(fx(x+0.5), fy(y-0.5), fz(z-0.5)); + glTexCoord2f(0, 1); + glVertex3f(fx(x+0.5), fy(y+0.5), fz(z-0.5)); + glEnd(); + glBegin(GL_QUADS); + glNormal3f(0, 1, 0); + glTexCoord2f(0, 0); + glVertex3f(fx(x+0.5), fy(y+0.5), fz(z+0.5)); + glTexCoord2f(0, 1); + glVertex3f(fx(x+0.5), fy(y+0.5), fz(z-0.5)); + glTexCoord2f(1, 1); + glVertex3f(fx(x-0.5), fy(y+0.5), fz(z-0.5)); + glTexCoord2f(1, 0); + glVertex3f(fx(x-0.5), fy(y+0.5), fz(z+0.5)); + glNormal3f(0, -1, 0); + glTexCoord2f(0, 0); + glVertex3f(fx(x+0.5), fy(y-0.5), fz(z-0.5)); + glTexCoord2f(0, 1); + glVertex3f(fx(x+0.5), fy(y-0.5), fz(z+0.5)); + glTexCoord2f(1, 1); + glVertex3f(fx(x-0.5), fy(y-0.5), fz(z+0.5)); + glTexCoord2f(1, 0); + glVertex3f(fx(x-0.5), fy(y-0.5), fz(z-0.5)); + glEnd(); + glEndList(); + } +} + +/* It looks terrible... FIXME: any other ideas, maybe some anisotropic filtering? */ +/*#define MIPMAP*/ + +static void +init_gl(ModeInfo *mi) +{ + rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)]; +#ifdef MIPMAP + int status; +#endif + cp->wire = MI_IS_WIREFRAME(mi); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + cp->wire = 0; +# endif + + if(MI_IS_MONO(mi)) + tex = False; + if(cp->wire) { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + return; + } + + glClearDepth(1.0); + glDrawBuffer(GL_BACK); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glShadeModel(GL_FLAT); + glDepthFunc(GL_LESS); + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); + glEnable(GL_DEPTH_TEST); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_LIGHTING); + glEnable(GL_NORMALIZE); + glEnable(GL_COLOR_MATERIAL); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material_ambient); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material_diffuse); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material_specular); + glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess); + if (!tex) return; + glEnable(GL_TEXTURE_2D); +#ifdef MIPMAP + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 1, TEX_WIDTH, TEX_HEIGHT, + GL_LUMINANCE, GL_UNSIGNED_BYTE, cp->texture); + if (status) { + const char *s = (char *)gluErrorString(status); + fprintf (stderr, "%s: error mipmapping texture: %s\n", progname, (s?s:"(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); +#else + glTexImage2D(GL_TEXTURE_2D, 0, 1, TEX_WIDTH, TEX_HEIGHT, + 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, cp->texture); +#endif + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); +#ifdef MIPMAP + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); +#else + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +#endif +} + +static void +init_cp(rubikblocks_conf *cp) +{ + int i, j, k, m; + + cp->pause = True; + cp->t = 0.0; + cp->tmax = twait; + + for(i = -1, m = 0; i <= 1; i++) + for(j = -1; j <= 1; j++) + for(k = -1; k <= 1; k++) + { + cp->pieces[m].pos[0] = k; + cp->pieces[m].pos[1] = j; + cp->pieces[m].pos[2] = i; + cp->pieces[m].qr[0] = 1; + cp->pieces[m].qr[1] = 0; + cp->pieces[m].qr[2] = 0; + cp->pieces[m].qr[3] = 0; + m++; + } + + cp->rot = make_rotator(spin?spinspeed:0, spin?spinspeed:0, spin?spinspeed:0, + 0.1, wander?wspeed:0, True); + cp->trackball = gltrackball_init(True); + + if(rndstart) randomize(cp); +} + +/*************************************************************************/ + +ENTRYPOINT void +reshape_rubikblocks(ModeInfo *mi, int width, int height) +{ + rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)]; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + } + if(!height) height = 1; + cp->ratio = (GLfloat)width/(GLfloat)height; + glViewport(0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(30.0, cp->ratio, 1.0, 100.0); + glMatrixMode(GL_MODELVIEW); + glClear(GL_COLOR_BUFFER_BIT); +} + +ENTRYPOINT void +init_rubikblocks(ModeInfo *mi) +{ + rubikblocks_conf *cp; + MI_INIT(mi, rubikblocks); + cp = &rubikblocks[MI_SCREEN(mi)]; + + if(tex) + make_texture(cp); + + if ((cp->glx_context = init_GL(mi)) != NULL) + { + init_gl(mi); + init_cp(cp); + init_lists(cp); + reshape_rubikblocks(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + else + { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void +draw_rubikblocks(ModeInfo * mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + rubikblocks_conf *cp; + if (!rubikblocks) return; + cp = &rubikblocks[MI_SCREEN(mi)]; + MI_IS_DRAWN(mi) = True; + if (!cp->glx_context) return; + mi->polygon_count = 0; + glXMakeCurrent(display, window, *(cp->glx_context)); + if (!draw_main(mi, cp)) + { + MI_ABORT(mi); + return; + } + if (MI_IS_FPS(mi)) do_fps (mi); + glFlush(); + glXSwapBuffers(display, window); +} + +#ifndef STANDALONE +ENTRYPOINT void +change_rubikblocks(ModeInfo * mi) +{ + rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)]; + if (!cp->glx_context) return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context)); + init_gl(mi); +} +#endif /* !STANDALONE */ + +ENTRYPOINT Bool +rubikblocks_handle_event (ModeInfo *mi, XEvent *event) +{ + rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, cp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &cp->button_down)) + return True; + + return False; +} + + +XSCREENSAVER_MODULE ("RubikBlocks", rubikblocks) + +#endif diff --git a/hacks/glx/rubikblocks.man b/hacks/glx/rubikblocks.man new file mode 100644 index 0000000..c18d18f --- /dev/null +++ b/hacks/glx/rubikblocks.man @@ -0,0 +1,117 @@ +.TH XScreenSaver 1 "04-Feb-09" "X Version 11" +.SH NAME +rubikblocks - animates the Rubik's Mirror Blocks puzzle +.SH SYNOPSIS +.B rubikblocks +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-install] +[\-delay \fImicroseconds\fP] +[\-texture] [\-no\-texture] +[\-mono] +[\-wireframe] +[\-spin] [\-no\-spin] +[\-wander] [\-no\-wander] +[\-randomize] [\-no\-randomize] +[\-spinspeed \fInumber\fP] +[\-rotspeed \fInumber\fP] +[\-wanderspeed \fInumber\fP] +[\-wait \fInumber\fP] +[\-cubesize \fInumber\fP] +[\-fps] +.SH DESCRIPTION +This program animates a puzzle called Rubik's Mirror Blocks. +The moves are chosen randomly. +.SH OPTIONS +.I rubikblocks +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +How long to pause between frames. Default is 20000, or 0.02 second. +.TP 8 +.B \-texture +Use texture maps. This is the default. +.TP 8 +.B \-no\-texture +Use solid colors. Looks a bit weird. +.TP 8 +.B \-mono +Disable both texture maps and colors. Ditto. +.TP 8 +.B \-wireframe +Only draw outlines. Outlines of each piece, not only the whole object, are drawn. +.TP 8 +.B \-spin +Spin the whole object around X, Y and Z axes. This is the default. +.TP 8 +.B \-no\-spin +Do not spin, stay in the same tilt all the time. +.TP 8 +.B \-wander +Move the object around the screen. This is the default. +.TP 8 +.B \-no\-wander +Keep the object centered on the screen. +.TP 8 +.B \-randomize +Shuffle the puzzle randomly at startup. This is the default. +.TP 8 +.B \-no\-randomize +Do not shuffle at startup, begin at the shape of cube. +.TP 8 +.B \-spinspeed \fInumber\fP +The relative speed of spinning. Default is 1.0. +.TP 8 +.B \-rotspeed \fInumber\fP +The relative speed of the moves. Default is 3.0. Setting to \(<= 0.0 +makes the object stay at one configuration. +.TP 8 +.B \-wanderspeed \fInumber\fP +The relative speed of wandering around the screen. Default is 0.02. +.TP 8 +.B \-wait \fInumber\fP +How long to stay at final position after each move. The meaning of +the argument is again relative. Default is 40.0. +.TP 8 +.B \-cubesize \fInumber\fP +Size of the object. Value of 3.0 fills roughly all the screen. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2009 by Vasek Potocek. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Vasek Potocek , 04-Feb-09. diff --git a/hacks/glx/s1_1.c b/hacks/glx/s1_1.c new file mode 100644 index 0000000..1f93429 --- /dev/null +++ b/hacks/glx/s1_1.c @@ -0,0 +1,1733 @@ +#include "gllist.h" +static const float data[]={ + 0.698103,-0.159073,-0.698103,0.667578,0.838781,-0.667578, + 0.92844,-0.14479,-0.342105,0.713281,0.838781,-0.591406, + 0.918718,-0.113815,-0.378157,0.721812,0.890313,-0.595062, + 0.698103,-0.159073,-0.698103,0.667578,0.838781,-0.667578, + 0.918718,-0.113815,-0.378157,0.721812,0.890313,-0.595062, + 0.705394,-0.069557,-0.705394,0.674281,0.890313,-0.674281, + 0.92844,-0.14479,-0.342105,0.713281,0.838781,-0.591406, + 0.991208,-0.132313,0,0.728516,0.838781,-0.5, + 0.995164,-0.09823,0,0.737656,0.890313,-0.5, + 0.995164,-0.09823,0,0.737656,0.890313,-0.5, + 0.918718,-0.113815,-0.378157,0.721812,0.890313,-0.595062, + 0.92844,-0.14479,-0.342105,0.713281,0.838781,-0.591406, + 0.995164,-0.09823,0,0.737656,0.890313,-0.5, + 0.911846,0.410531,0,0.738539,0.926712,-0.5, + 0.891913,0.278471,-0.356294,0.722453,0.926408,-0.595141, + 0.891913,0.278471,-0.356294,0.722453,0.926408,-0.595141, + 0.918718,-0.113815,-0.378157,0.721812,0.890313,-0.595062, + 0.995164,-0.09823,0,0.737656,0.890313,-0.5, + 0.891913,0.278471,-0.356294,0.722453,0.926408,-0.595141, + 0.66233,0.350197,-0.66233,0.674539,0.926104,-0.674539, + 0.705394,-0.069557,-0.705394,0.674281,0.890313,-0.674281, + 0.705394,-0.069557,-0.705394,0.674281,0.890313,-0.674281, + 0.918718,-0.113815,-0.378157,0.721812,0.890313,-0.595062, + 0.891913,0.278471,-0.356294,0.722453,0.926408,-0.595141, + 0.698103,-0.159073,0.698103,0.667578,0.838781,-0.332422, + 0.705394,-0.069557,0.705394,0.674281,0.890313,-0.325719, + 0.918719,-0.113815,0.378157,0.721812,0.890313,-0.404938, + 0.698103,-0.159073,0.698103,0.667578,0.838781,-0.332422, + 0.918719,-0.113815,0.378157,0.721812,0.890313,-0.404938, + 0.92844,-0.14479,0.342105,0.713281,0.838781,-0.408594, + 0.705394,-0.069557,0.705394,0.674281,0.890313,-0.325719, + 0.66233,0.350196,0.66233,0.674539,0.926104,-0.325461, + 0.891913,0.278471,0.356294,0.722453,0.926408,-0.404859, + 0.891913,0.278471,0.356294,0.722453,0.926408,-0.404859, + 0.918719,-0.113815,0.378157,0.721812,0.890313,-0.404938, + 0.705394,-0.069557,0.705394,0.674281,0.890313,-0.325719, + 0.891913,0.278471,0.356294,0.722453,0.926408,-0.404859, + 0.911846,0.410531,0,0.738539,0.926712,-0.5, + 0.995164,-0.09823,0,0.737656,0.890313,-0.5, + 0.995164,-0.09823,0,0.737656,0.890313,-0.5, + 0.918719,-0.113815,0.378157,0.721812,0.890313,-0.404938, + 0.891913,0.278471,0.356294,0.722453,0.926408,-0.404859, + 0.995164,-0.09823,0,0.737656,0.890313,-0.5, + 0.991208,-0.132313,0,0.728516,0.838781,-0.5, + 0.92844,-0.14479,0.342105,0.713281,0.838781,-0.408594, + 0.92844,-0.14479,0.342105,0.713281,0.838781,-0.408594, + 0.918719,-0.113815,0.378157,0.721812,0.890313,-0.404938, + 0.995164,-0.09823,0,0.737656,0.890313,-0.5, + 0.199329,0.959446,0.199329,0.638667,0.958463,-0.361333, + 0.18835,0.976969,0.100277,0.664625,0.962948,-0.4175, + 0.513442,0.838005,0.184732,0.706,0.949319,-0.4125, + 0.199329,0.959446,0.199329,0.638667,0.958463,-0.361333, + 0.513442,0.838005,0.184732,0.706,0.949319,-0.4125, + 0.448747,0.772821,0.448747,0.660875,0.948104,-0.339125, + 0.244558,0.969635,0,0.677562,0.965162,-0.5, + 0.592505,0.805566,0,0.7215,0.950535,-0.5, + 0.513442,0.838005,0.184732,0.706,0.949319,-0.4125, + 0.244558,0.969635,0,0.677562,0.965162,-0.5, + 0.513442,0.838005,0.184732,0.706,0.949319,-0.4125, + 0.18835,0.976969,0.100277,0.664625,0.962948,-0.4175, + 0.911846,0.410531,0,0.738539,0.926712,-0.5, + 0.891913,0.278471,0.356294,0.722453,0.926408,-0.404859, + 0.513442,0.838005,0.184732,0.706,0.949319,-0.4125, + 0.911846,0.410531,0,0.738539,0.926712,-0.5, + 0.513442,0.838005,0.184732,0.706,0.949319,-0.4125, + 0.592505,0.805566,0,0.7215,0.950535,-0.5, + 0.891913,0.278471,0.356294,0.722453,0.926408,-0.404859, + 0.66233,0.350196,0.66233,0.674539,0.926104,-0.325461, + 0.448747,0.772821,0.448747,0.660875,0.948104,-0.339125, + 0.448747,0.772821,0.448747,0.660875,0.948104,-0.339125, + 0.513442,0.838005,0.184732,0.706,0.949319,-0.4125, + 0.891913,0.278471,0.356294,0.722453,0.926408,-0.404859, + 0.199329,0.959446,-0.199329,0.638667,0.958463,-0.638667, + 0.448747,0.772821,-0.448747,0.660875,0.948104,-0.660875, + 0.513442,0.838005,-0.184732,0.706,0.949319,-0.5875, + 0.199329,0.959446,-0.199329,0.638667,0.958463,-0.638667, + 0.513442,0.838005,-0.184732,0.706,0.949319,-0.5875, + 0.18835,0.976969,-0.100277,0.664625,0.962948,-0.5825, + 0.448747,0.772821,-0.448747,0.660875,0.948104,-0.660875, + 0.66233,0.350197,-0.66233,0.674539,0.926104,-0.674539, + 0.891913,0.278471,-0.356294,0.722453,0.926408,-0.595141, + 0.891913,0.278471,-0.356294,0.722453,0.926408,-0.595141, + 0.513442,0.838005,-0.184732,0.706,0.949319,-0.5875, + 0.448747,0.772821,-0.448747,0.660875,0.948104,-0.660875, + 0.911846,0.410531,0,0.738539,0.926712,-0.5, + 0.592505,0.805566,0,0.7215,0.950535,-0.5, + 0.513442,0.838005,-0.184732,0.706,0.949319,-0.5875, + 0.911846,0.410531,0,0.738539,0.926712,-0.5, + 0.513442,0.838005,-0.184732,0.706,0.949319,-0.5875, + 0.891913,0.278471,-0.356294,0.722453,0.926408,-0.595141, + 0.244558,0.969635,0,0.677562,0.965162,-0.5, + 0.18835,0.976969,-0.100277,0.664625,0.962948,-0.5825, + 0.513442,0.838005,-0.184732,0.706,0.949319,-0.5875, + 0.244558,0.969635,0,0.677562,0.965162,-0.5, + 0.513442,0.838005,-0.184732,0.706,0.949319,-0.5875, + 0.592505,0.805566,0,0.7215,0.950535,-0.5, + 0.698103,-0.159073,0.698103,0.667578,0.838781,-0.332422, + 0.342105,-0.144791,0.92844,0.591406,0.838781,-0.286719, + 0.378157,-0.113815,0.918718,0.595062,0.890313,-0.278187, + 0.698103,-0.159073,0.698103,0.667578,0.838781,-0.332422, + 0.378157,-0.113815,0.918718,0.595062,0.890313,-0.278187, + 0.705394,-0.069557,0.705394,0.674281,0.890313,-0.325719, + 0.342105,-0.144791,0.92844,0.591406,0.838781,-0.286719, + 0,-0.132314,0.991208,0.5,0.838781,-0.271484, + 0,-0.09823,0.995164,0.5,0.890313,-0.262344, + 0,-0.09823,0.995164,0.5,0.890313,-0.262344, + 0.378157,-0.113815,0.918718,0.595062,0.890313,-0.278187, + 0.342105,-0.144791,0.92844,0.591406,0.838781,-0.286719, + 0,-0.09823,0.995164,0.5,0.890313,-0.262344, + 0,0.410531,0.911846,0.5,0.926712,-0.261461, + 0.356294,0.278471,0.891913,0.595141,0.926408,-0.277547, + 0.356294,0.278471,0.891913,0.595141,0.926408,-0.277547, + 0.378157,-0.113815,0.918718,0.595062,0.890313,-0.278187, + 0,-0.09823,0.995164,0.5,0.890313,-0.262344, + 0.356294,0.278471,0.891913,0.595141,0.926408,-0.277547, + 0.66233,0.350196,0.66233,0.674539,0.926104,-0.325461, + 0.705394,-0.069557,0.705394,0.674281,0.890313,-0.325719, + 0.705394,-0.069557,0.705394,0.674281,0.890313,-0.325719, + 0.378157,-0.113815,0.918718,0.595062,0.890313,-0.278187, + 0.356294,0.278471,0.891913,0.595141,0.926408,-0.277547, + -0.698103,-0.159073,0.698103,0.332422,0.838781,-0.332422, + -0.705394,-0.069557,0.705394,0.325719,0.890313,-0.325719, + -0.378157,-0.113815,0.918718,0.404938,0.890313,-0.278187, + -0.698103,-0.159073,0.698103,0.332422,0.838781,-0.332422, + -0.378157,-0.113815,0.918718,0.404938,0.890313,-0.278187, + -0.342105,-0.144791,0.92844,0.408594,0.838781,-0.286719, + -0.705394,-0.069557,0.705394,0.325719,0.890313,-0.325719, + -0.66233,0.350197,0.66233,0.325461,0.926104,-0.325461, + -0.356294,0.278471,0.891913,0.404859,0.926408,-0.277547, + -0.356294,0.278471,0.891913,0.404859,0.926408,-0.277547, + -0.378157,-0.113815,0.918718,0.404938,0.890313,-0.278187, + -0.705394,-0.069557,0.705394,0.325719,0.890313,-0.325719, + -0.356294,0.278471,0.891913,0.404859,0.926408,-0.277547, + 0,0.410531,0.911846,0.5,0.926712,-0.261461, + 0,-0.09823,0.995164,0.5,0.890313,-0.262344, + 0,-0.09823,0.995164,0.5,0.890313,-0.262344, + -0.378157,-0.113815,0.918718,0.404938,0.890313,-0.278187, + -0.356294,0.278471,0.891913,0.404859,0.926408,-0.277547, + 0,-0.09823,0.995164,0.5,0.890313,-0.262344, + 0,-0.132314,0.991208,0.5,0.838781,-0.271484, + -0.342105,-0.144791,0.92844,0.408594,0.838781,-0.286719, + -0.342105,-0.144791,0.92844,0.408594,0.838781,-0.286719, + -0.378157,-0.113815,0.918718,0.404938,0.890313,-0.278187, + 0,-0.09823,0.995164,0.5,0.890313,-0.262344, + -0.199329,0.959446,0.199329,0.361333,0.958463,-0.361333, + -0.100277,0.976969,0.18835,0.4175,0.962948,-0.335375, + -0.184731,0.838005,0.513442,0.4125,0.949319,-0.294, + -0.199329,0.959446,0.199329,0.361333,0.958463,-0.361333, + -0.184731,0.838005,0.513442,0.4125,0.949319,-0.294, + -0.448747,0.77282,0.448747,0.339125,0.948104,-0.339125, + 0,0.969635,0.244558,0.5,0.965162,-0.322437, + 0,0.805567,0.592505,0.5,0.950535,-0.2785, + -0.184731,0.838005,0.513442,0.4125,0.949319,-0.294, + 0,0.969635,0.244558,0.5,0.965162,-0.322437, + -0.184731,0.838005,0.513442,0.4125,0.949319,-0.294, + -0.100277,0.976969,0.18835,0.4175,0.962948,-0.335375, + 0,0.410531,0.911846,0.5,0.926712,-0.261461, + -0.356294,0.278471,0.891913,0.404859,0.926408,-0.277547, + -0.184731,0.838005,0.513442,0.4125,0.949319,-0.294, + 0,0.410531,0.911846,0.5,0.926712,-0.261461, + -0.184731,0.838005,0.513442,0.4125,0.949319,-0.294, + 0,0.805567,0.592505,0.5,0.950535,-0.2785, + -0.356294,0.278471,0.891913,0.404859,0.926408,-0.277547, + -0.66233,0.350197,0.66233,0.325461,0.926104,-0.325461, + -0.448747,0.77282,0.448747,0.339125,0.948104,-0.339125, + -0.448747,0.77282,0.448747,0.339125,0.948104,-0.339125, + -0.184731,0.838005,0.513442,0.4125,0.949319,-0.294, + -0.356294,0.278471,0.891913,0.404859,0.926408,-0.277547, + 0.199329,0.959446,0.199329,0.638667,0.958463,-0.361333, + 0.448747,0.772821,0.448747,0.660875,0.948104,-0.339125, + 0.184731,0.838005,0.513442,0.5875,0.949319,-0.294, + 0.199329,0.959446,0.199329,0.638667,0.958463,-0.361333, + 0.184731,0.838005,0.513442,0.5875,0.949319,-0.294, + 0.100277,0.976969,0.18835,0.5825,0.962948,-0.335375, + 0.448747,0.772821,0.448747,0.660875,0.948104,-0.339125, + 0.66233,0.350196,0.66233,0.674539,0.926104,-0.325461, + 0.356294,0.278471,0.891913,0.595141,0.926408,-0.277547, + 0.356294,0.278471,0.891913,0.595141,0.926408,-0.277547, + 0.184731,0.838005,0.513442,0.5875,0.949319,-0.294, + 0.448747,0.772821,0.448747,0.660875,0.948104,-0.339125, + 0,0.410531,0.911846,0.5,0.926712,-0.261461, + 0,0.805567,0.592505,0.5,0.950535,-0.2785, + 0.184731,0.838005,0.513442,0.5875,0.949319,-0.294, + 0,0.410531,0.911846,0.5,0.926712,-0.261461, + 0.184731,0.838005,0.513442,0.5875,0.949319,-0.294, + 0.356294,0.278471,0.891913,0.595141,0.926408,-0.277547, + 0,0.969635,0.244558,0.5,0.965162,-0.322437, + 0.100277,0.976969,0.18835,0.5825,0.962948,-0.335375, + 0.184731,0.838005,0.513442,0.5875,0.949319,-0.294, + 0,0.969635,0.244558,0.5,0.965162,-0.322437, + 0.184731,0.838005,0.513442,0.5875,0.949319,-0.294, + 0,0.805567,0.592505,0.5,0.950535,-0.2785, + -0.698103,-0.159073,0.698103,0.332422,0.838781,-0.332422, + -0.92844,-0.144791,0.342105,0.286719,0.838781,-0.408594, + -0.918718,-0.113815,0.378157,0.278187,0.890313,-0.404938, + -0.698103,-0.159073,0.698103,0.332422,0.838781,-0.332422, + -0.918718,-0.113815,0.378157,0.278187,0.890313,-0.404938, + -0.705394,-0.069557,0.705394,0.325719,0.890313,-0.325719, + -0.92844,-0.144791,0.342105,0.286719,0.838781,-0.408594, + -0.991208,-0.132314,0,0.271484,0.838781,-0.5, + -0.995164,-0.09823,0,0.262344,0.890313,-0.5, + -0.995164,-0.09823,0,0.262344,0.890313,-0.5, + -0.918718,-0.113815,0.378157,0.278187,0.890313,-0.404938, + -0.92844,-0.144791,0.342105,0.286719,0.838781,-0.408594, + -0.995164,-0.09823,0,0.262344,0.890313,-0.5, + -0.911846,0.410531,0,0.261461,0.926712,-0.5, + -0.891913,0.278471,0.356294,0.277547,0.926408,-0.404859, + -0.891913,0.278471,0.356294,0.277547,0.926408,-0.404859, + -0.918718,-0.113815,0.378157,0.278187,0.890313,-0.404938, + -0.995164,-0.09823,0,0.262344,0.890313,-0.5, + -0.891913,0.278471,0.356294,0.277547,0.926408,-0.404859, + -0.66233,0.350197,0.66233,0.325461,0.926104,-0.325461, + -0.705394,-0.069557,0.705394,0.325719,0.890313,-0.325719, + -0.705394,-0.069557,0.705394,0.325719,0.890313,-0.325719, + -0.918718,-0.113815,0.378157,0.278187,0.890313,-0.404938, + -0.891913,0.278471,0.356294,0.277547,0.926408,-0.404859, + -0.698103,-0.159073,-0.698103,0.332422,0.838781,-0.667578, + -0.705394,-0.069557,-0.705394,0.325719,0.890313,-0.674281, + -0.918718,-0.113815,-0.378157,0.278187,0.890313,-0.595062, + -0.698103,-0.159073,-0.698103,0.332422,0.838781,-0.667578, + -0.918718,-0.113815,-0.378157,0.278187,0.890313,-0.595062, + -0.92844,-0.144791,-0.342105,0.286719,0.838781,-0.591406, + -0.705394,-0.069557,-0.705394,0.325719,0.890313,-0.674281, + -0.66233,0.350196,-0.66233,0.325461,0.926104,-0.674539, + -0.891913,0.278471,-0.356294,0.277547,0.926408,-0.595141, + -0.891913,0.278471,-0.356294,0.277547,0.926408,-0.595141, + -0.918718,-0.113815,-0.378157,0.278187,0.890313,-0.595062, + -0.705394,-0.069557,-0.705394,0.325719,0.890313,-0.674281, + -0.891913,0.278471,-0.356294,0.277547,0.926408,-0.595141, + -0.911846,0.410531,0,0.261461,0.926712,-0.5, + -0.995164,-0.09823,0,0.262344,0.890313,-0.5, + -0.995164,-0.09823,0,0.262344,0.890313,-0.5, + -0.918718,-0.113815,-0.378157,0.278187,0.890313,-0.595062, + -0.891913,0.278471,-0.356294,0.277547,0.926408,-0.595141, + -0.995164,-0.09823,0,0.262344,0.890313,-0.5, + -0.991208,-0.132314,0,0.271484,0.838781,-0.5, + -0.92844,-0.144791,-0.342105,0.286719,0.838781,-0.591406, + -0.92844,-0.144791,-0.342105,0.286719,0.838781,-0.591406, + -0.918718,-0.113815,-0.378157,0.278187,0.890313,-0.595062, + -0.995164,-0.09823,0,0.262344,0.890313,-0.5, + -0.199329,0.959446,-0.199329,0.361333,0.958463,-0.638667, + -0.18835,0.976969,-0.100277,0.335375,0.962948,-0.5825, + -0.513442,0.838005,-0.184731,0.294,0.949319,-0.5875, + -0.199329,0.959446,-0.199329,0.361333,0.958463,-0.638667, + -0.513442,0.838005,-0.184731,0.294,0.949319,-0.5875, + -0.448747,0.772821,-0.448747,0.339125,0.948104,-0.660875, + -0.244558,0.969635,0,0.322437,0.965162,-0.5, + -0.592505,0.805566,0,0.2785,0.950535,-0.5, + -0.513442,0.838005,-0.184731,0.294,0.949319,-0.5875, + -0.244558,0.969635,0,0.322437,0.965162,-0.5, + -0.513442,0.838005,-0.184731,0.294,0.949319,-0.5875, + -0.18835,0.976969,-0.100277,0.335375,0.962948,-0.5825, + -0.911846,0.410531,0,0.261461,0.926712,-0.5, + -0.891913,0.278471,-0.356294,0.277547,0.926408,-0.595141, + -0.513442,0.838005,-0.184731,0.294,0.949319,-0.5875, + -0.911846,0.410531,0,0.261461,0.926712,-0.5, + -0.513442,0.838005,-0.184731,0.294,0.949319,-0.5875, + -0.592505,0.805566,0,0.2785,0.950535,-0.5, + -0.891913,0.278471,-0.356294,0.277547,0.926408,-0.595141, + -0.66233,0.350196,-0.66233,0.325461,0.926104,-0.674539, + -0.448747,0.772821,-0.448747,0.339125,0.948104,-0.660875, + -0.448747,0.772821,-0.448747,0.339125,0.948104,-0.660875, + -0.513442,0.838005,-0.184731,0.294,0.949319,-0.5875, + -0.891913,0.278471,-0.356294,0.277547,0.926408,-0.595141, + -0.199329,0.959446,0.199329,0.361333,0.958463,-0.361333, + -0.448747,0.77282,0.448747,0.339125,0.948104,-0.339125, + -0.513442,0.838005,0.184731,0.294,0.949319,-0.4125, + -0.199329,0.959446,0.199329,0.361333,0.958463,-0.361333, + -0.513442,0.838005,0.184731,0.294,0.949319,-0.4125, + -0.18835,0.976969,0.100277,0.335375,0.962948,-0.4175, + -0.448747,0.77282,0.448747,0.339125,0.948104,-0.339125, + -0.66233,0.350197,0.66233,0.325461,0.926104,-0.325461, + -0.891913,0.278471,0.356294,0.277547,0.926408,-0.404859, + -0.891913,0.278471,0.356294,0.277547,0.926408,-0.404859, + -0.513442,0.838005,0.184731,0.294,0.949319,-0.4125, + -0.448747,0.77282,0.448747,0.339125,0.948104,-0.339125, + -0.911846,0.410531,0,0.261461,0.926712,-0.5, + -0.592505,0.805566,0,0.2785,0.950535,-0.5, + -0.513442,0.838005,0.184731,0.294,0.949319,-0.4125, + -0.911846,0.410531,0,0.261461,0.926712,-0.5, + -0.513442,0.838005,0.184731,0.294,0.949319,-0.4125, + -0.891913,0.278471,0.356294,0.277547,0.926408,-0.404859, + -0.244558,0.969635,0,0.322437,0.965162,-0.5, + -0.18835,0.976969,0.100277,0.335375,0.962948,-0.4175, + -0.513442,0.838005,0.184731,0.294,0.949319,-0.4125, + -0.244558,0.969635,0,0.322437,0.965162,-0.5, + -0.513442,0.838005,0.184731,0.294,0.949319,-0.4125, + -0.592505,0.805566,0,0.2785,0.950535,-0.5, + -0.698103,-0.159073,-0.698103,0.332422,0.838781,-0.667578, + -0.342105,-0.14479,-0.92844,0.408594,0.838781,-0.713281, + -0.378157,-0.113815,-0.918719,0.404938,0.890313,-0.721812, + -0.698103,-0.159073,-0.698103,0.332422,0.838781,-0.667578, + -0.378157,-0.113815,-0.918719,0.404938,0.890313,-0.721812, + -0.705394,-0.069557,-0.705394,0.325719,0.890313,-0.674281, + -0.342105,-0.14479,-0.92844,0.408594,0.838781,-0.713281, + 0,-0.132313,-0.991208,0.5,0.838781,-0.728516, + 0,-0.09823,-0.995164,0.5,0.890313,-0.737656, + 0,-0.09823,-0.995164,0.5,0.890313,-0.737656, + -0.378157,-0.113815,-0.918719,0.404938,0.890313,-0.721812, + -0.342105,-0.14479,-0.92844,0.408594,0.838781,-0.713281, + 0,-0.09823,-0.995164,0.5,0.890313,-0.737656, + 0,0.410531,-0.911846,0.5,0.926712,-0.738539, + -0.356294,0.278471,-0.891913,0.404859,0.926408,-0.722453, + -0.356294,0.278471,-0.891913,0.404859,0.926408,-0.722453, + -0.378157,-0.113815,-0.918719,0.404938,0.890313,-0.721812, + 0,-0.09823,-0.995164,0.5,0.890313,-0.737656, + -0.356294,0.278471,-0.891913,0.404859,0.926408,-0.722453, + -0.66233,0.350196,-0.66233,0.325461,0.926104,-0.674539, + -0.705394,-0.069557,-0.705394,0.325719,0.890313,-0.674281, + -0.705394,-0.069557,-0.705394,0.325719,0.890313,-0.674281, + -0.378157,-0.113815,-0.918719,0.404938,0.890313,-0.721812, + -0.356294,0.278471,-0.891913,0.404859,0.926408,-0.722453, + 0.698103,-0.159073,-0.698103,0.667578,0.838781,-0.667578, + 0.705394,-0.069557,-0.705394,0.674281,0.890313,-0.674281, + 0.378157,-0.113815,-0.918718,0.595062,0.890313,-0.721812, + 0.698103,-0.159073,-0.698103,0.667578,0.838781,-0.667578, + 0.378157,-0.113815,-0.918718,0.595062,0.890313,-0.721812, + 0.342105,-0.14479,-0.92844,0.591406,0.838781,-0.713281, + 0.705394,-0.069557,-0.705394,0.674281,0.890313,-0.674281, + 0.66233,0.350197,-0.66233,0.674539,0.926104,-0.674539, + 0.356294,0.278471,-0.891913,0.595141,0.926408,-0.722453, + 0.356294,0.278471,-0.891913,0.595141,0.926408,-0.722453, + 0.378157,-0.113815,-0.918718,0.595062,0.890313,-0.721812, + 0.705394,-0.069557,-0.705394,0.674281,0.890313,-0.674281, + 0.356294,0.278471,-0.891913,0.595141,0.926408,-0.722453, + 0,0.410531,-0.911846,0.5,0.926712,-0.738539, + 0,-0.09823,-0.995164,0.5,0.890313,-0.737656, + 0,-0.09823,-0.995164,0.5,0.890313,-0.737656, + 0.378157,-0.113815,-0.918718,0.595062,0.890313,-0.721812, + 0.356294,0.278471,-0.891913,0.595141,0.926408,-0.722453, + 0,-0.09823,-0.995164,0.5,0.890313,-0.737656, + 0,-0.132313,-0.991208,0.5,0.838781,-0.728516, + 0.342105,-0.14479,-0.92844,0.591406,0.838781,-0.713281, + 0.342105,-0.14479,-0.92844,0.591406,0.838781,-0.713281, + 0.378157,-0.113815,-0.918718,0.595062,0.890313,-0.721812, + 0,-0.09823,-0.995164,0.5,0.890313,-0.737656, + 0.199329,0.959446,-0.199329,0.638667,0.958463,-0.638667, + 0.100277,0.976969,-0.18835,0.5825,0.962948,-0.664625, + 0.184732,0.838005,-0.513442,0.5875,0.949319,-0.706, + 0.199329,0.959446,-0.199329,0.638667,0.958463,-0.638667, + 0.184732,0.838005,-0.513442,0.5875,0.949319,-0.706, + 0.448747,0.772821,-0.448747,0.660875,0.948104,-0.660875, + 0,0.969635,-0.244558,0.5,0.965162,-0.677562, + 0,0.805567,-0.592505,0.5,0.950535,-0.7215, + 0.184732,0.838005,-0.513442,0.5875,0.949319,-0.706, + 0,0.969635,-0.244558,0.5,0.965162,-0.677562, + 0.184732,0.838005,-0.513442,0.5875,0.949319,-0.706, + 0.100277,0.976969,-0.18835,0.5825,0.962948,-0.664625, + 0,0.410531,-0.911846,0.5,0.926712,-0.738539, + 0.356294,0.278471,-0.891913,0.595141,0.926408,-0.722453, + 0.184732,0.838005,-0.513442,0.5875,0.949319,-0.706, + 0,0.410531,-0.911846,0.5,0.926712,-0.738539, + 0.184732,0.838005,-0.513442,0.5875,0.949319,-0.706, + 0,0.805567,-0.592505,0.5,0.950535,-0.7215, + 0.356294,0.278471,-0.891913,0.595141,0.926408,-0.722453, + 0.66233,0.350197,-0.66233,0.674539,0.926104,-0.674539, + 0.448747,0.772821,-0.448747,0.660875,0.948104,-0.660875, + 0.448747,0.772821,-0.448747,0.660875,0.948104,-0.660875, + 0.184732,0.838005,-0.513442,0.5875,0.949319,-0.706, + 0.356294,0.278471,-0.891913,0.595141,0.926408,-0.722453, + -0.199329,0.959446,-0.199329,0.361333,0.958463,-0.638667, + -0.448747,0.772821,-0.448747,0.339125,0.948104,-0.660875, + -0.184732,0.838005,-0.513442,0.4125,0.949319,-0.706, + -0.199329,0.959446,-0.199329,0.361333,0.958463,-0.638667, + -0.184732,0.838005,-0.513442,0.4125,0.949319,-0.706, + -0.100277,0.976969,-0.18835,0.4175,0.962948,-0.664625, + -0.448747,0.772821,-0.448747,0.339125,0.948104,-0.660875, + -0.66233,0.350196,-0.66233,0.325461,0.926104,-0.674539, + -0.356294,0.278471,-0.891913,0.404859,0.926408,-0.722453, + -0.356294,0.278471,-0.891913,0.404859,0.926408,-0.722453, + -0.184732,0.838005,-0.513442,0.4125,0.949319,-0.706, + -0.448747,0.772821,-0.448747,0.339125,0.948104,-0.660875, + 0,0.410531,-0.911846,0.5,0.926712,-0.738539, + 0,0.805567,-0.592505,0.5,0.950535,-0.7215, + -0.184732,0.838005,-0.513442,0.4125,0.949319,-0.706, + 0,0.410531,-0.911846,0.5,0.926712,-0.738539, + -0.184732,0.838005,-0.513442,0.4125,0.949319,-0.706, + -0.356294,0.278471,-0.891913,0.404859,0.926408,-0.722453, + 0,0.969635,-0.244558,0.5,0.965162,-0.677562, + -0.100277,0.976969,-0.18835,0.4175,0.962948,-0.664625, + -0.184732,0.838005,-0.513442,0.4125,0.949319,-0.706, + 0,0.969635,-0.244558,0.5,0.965162,-0.677562, + -0.184732,0.838005,-0.513442,0.4125,0.949319,-0.706, + 0,0.805567,-0.592505,0.5,0.950535,-0.7215, + 0.199329,0.959446,0.199329,0.638667,0.958463,-0.361333, + 0.100277,0.976969,0.18835,0.5825,0.962948,-0.335375, + 0.079739,0.993621,0.079739,0.5905,0.971195,-0.4095, + 0.199329,0.959446,0.199329,0.638667,0.958463,-0.361333, + 0.079739,0.993621,0.079739,0.5905,0.971195,-0.4095, + 0.18835,0.976969,0.100277,0.664625,0.962948,-0.4175, + 0.100277,0.976969,0.18835,0.5825,0.962948,-0.335375, + 0,0.969635,0.244558,0.5,0.965162,-0.322437, + 0,0.996384,0.08496,0.5,0.973972,-0.40225, + 0,0.996384,0.08496,0.5,0.973972,-0.40225, + 0.079739,0.993621,0.079739,0.5905,0.971195,-0.4095, + 0.100277,0.976969,0.18835,0.5825,0.962948,-0.335375, + 0,1,0,0.5,0.976924,-0.5, + 0.08496,0.996384,0,0.59775,0.973972,-0.5, + 0.079739,0.993621,0.079739,0.5905,0.971195,-0.4095, + 0,1,0,0.5,0.976924,-0.5, + 0.079739,0.993621,0.079739,0.5905,0.971195,-0.4095, + 0,0.996384,0.08496,0.5,0.973972,-0.40225, + 0.08496,0.996384,0,0.59775,0.973972,-0.5, + 0.244558,0.969635,0,0.677562,0.965162,-0.5, + 0.18835,0.976969,0.100277,0.664625,0.962948,-0.4175, + 0.18835,0.976969,0.100277,0.664625,0.962948,-0.4175, + 0.079739,0.993621,0.079739,0.5905,0.971195,-0.4095, + 0.08496,0.996384,0,0.59775,0.973972,-0.5, + -0.199329,0.959446,0.199329,0.361333,0.958463,-0.361333, + -0.18835,0.976969,0.100277,0.335375,0.962948,-0.4175, + -0.079739,0.993621,0.079739,0.4095,0.971195,-0.4095, + -0.199329,0.959446,0.199329,0.361333,0.958463,-0.361333, + -0.079739,0.993621,0.079739,0.4095,0.971195,-0.4095, + -0.100277,0.976969,0.18835,0.4175,0.962948,-0.335375, + -0.18835,0.976969,0.100277,0.335375,0.962948,-0.4175, + -0.244558,0.969635,0,0.322437,0.965162,-0.5, + -0.08496,0.996384,0,0.40225,0.973972,-0.5, + -0.08496,0.996384,0,0.40225,0.973972,-0.5, + -0.079739,0.993621,0.079739,0.4095,0.971195,-0.4095, + -0.18835,0.976969,0.100277,0.335375,0.962948,-0.4175, + 0,1,0,0.5,0.976924,-0.5, + 0,0.996384,0.08496,0.5,0.973972,-0.40225, + -0.079739,0.993621,0.079739,0.4095,0.971195,-0.4095, + 0,1,0,0.5,0.976924,-0.5, + -0.079739,0.993621,0.079739,0.4095,0.971195,-0.4095, + -0.08496,0.996384,0,0.40225,0.973972,-0.5, + 0,0.996384,0.08496,0.5,0.973972,-0.40225, + 0,0.969635,0.244558,0.5,0.965162,-0.322437, + -0.100277,0.976969,0.18835,0.4175,0.962948,-0.335375, + -0.100277,0.976969,0.18835,0.4175,0.962948,-0.335375, + -0.079739,0.993621,0.079739,0.4095,0.971195,-0.4095, + 0,0.996384,0.08496,0.5,0.973972,-0.40225, + -0.199329,0.959446,-0.199329,0.361333,0.958463,-0.638667, + -0.100277,0.976969,-0.18835,0.4175,0.962948,-0.664625, + -0.079739,0.993621,-0.079739,0.4095,0.971195,-0.5905, + -0.199329,0.959446,-0.199329,0.361333,0.958463,-0.638667, + -0.079739,0.993621,-0.079739,0.4095,0.971195,-0.5905, + -0.18835,0.976969,-0.100277,0.335375,0.962948,-0.5825, + -0.100277,0.976969,-0.18835,0.4175,0.962948,-0.664625, + 0,0.969635,-0.244558,0.5,0.965162,-0.677562, + 0,0.996384,-0.08496,0.5,0.973972,-0.59775, + 0,0.996384,-0.08496,0.5,0.973972,-0.59775, + -0.079739,0.993621,-0.079739,0.4095,0.971195,-0.5905, + -0.100277,0.976969,-0.18835,0.4175,0.962948,-0.664625, + 0,1,0,0.5,0.976924,-0.5, + -0.08496,0.996384,0,0.40225,0.973972,-0.5, + -0.079739,0.993621,-0.079739,0.4095,0.971195,-0.5905, + 0,1,0,0.5,0.976924,-0.5, + -0.079739,0.993621,-0.079739,0.4095,0.971195,-0.5905, + 0,0.996384,-0.08496,0.5,0.973972,-0.59775, + -0.08496,0.996384,0,0.40225,0.973972,-0.5, + -0.244558,0.969635,0,0.322437,0.965162,-0.5, + -0.18835,0.976969,-0.100277,0.335375,0.962948,-0.5825, + -0.18835,0.976969,-0.100277,0.335375,0.962948,-0.5825, + -0.079739,0.993621,-0.079739,0.4095,0.971195,-0.5905, + -0.08496,0.996384,0,0.40225,0.973972,-0.5, + 0.199329,0.959446,-0.199329,0.638667,0.958463,-0.638667, + 0.18835,0.976969,-0.100277,0.664625,0.962948,-0.5825, + 0.079739,0.993621,-0.079739,0.5905,0.971195,-0.5905, + 0.199329,0.959446,-0.199329,0.638667,0.958463,-0.638667, + 0.079739,0.993621,-0.079739,0.5905,0.971195,-0.5905, + 0.100277,0.976969,-0.18835,0.5825,0.962948,-0.664625, + 0.18835,0.976969,-0.100277,0.664625,0.962948,-0.5825, + 0.244558,0.969635,0,0.677562,0.965162,-0.5, + 0.08496,0.996384,0,0.59775,0.973972,-0.5, + 0.08496,0.996384,0,0.59775,0.973972,-0.5, + 0.079739,0.993621,-0.079739,0.5905,0.971195,-0.5905, + 0.18835,0.976969,-0.100277,0.664625,0.962948,-0.5825, + 0,1,0,0.5,0.976924,-0.5, + 0,0.996384,-0.08496,0.5,0.973972,-0.59775, + 0.079739,0.993621,-0.079739,0.5905,0.971195,-0.5905, + 0,1,0,0.5,0.976924,-0.5, + 0.079739,0.993621,-0.079739,0.5905,0.971195,-0.5905, + 0.08496,0.996384,0,0.59775,0.973972,-0.5, + 0,0.996384,-0.08496,0.5,0.973972,-0.59775, + 0,0.969635,-0.244558,0.5,0.965162,-0.677562, + 0.100277,0.976969,-0.18835,0.5825,0.962948,-0.664625, + 0.100277,0.976969,-0.18835,0.5825,0.962948,-0.664625, + 0.079739,0.993621,-0.079739,0.5905,0.971195,-0.5905, + 0,0.996384,-0.08496,0.5,0.973972,-0.59775, + 0.92844,-0.14479,-0.342105,0.713281,0.838781,-0.591406, + 0.698103,-0.159073,-0.698103,0.667578,0.838781,-0.667578, + 0.703449,-0.101581,-0.703449,0.661906,0.769563,-0.661906, + 0.703449,-0.101581,-0.703449,0.661906,0.769563,-0.661906, + 0.934344,-0.092655,-0.344117,0.706063,0.769563,-0.588313, + 0.92844,-0.14479,-0.342105,0.713281,0.838781,-0.591406, + 0.705656,-0.064019,-0.705656,0.657523,0.686547,-0.657523, + 0.936848,-0.057446,-0.344986,0.700484,0.686547,-0.585922, + 0.934344,-0.092655,-0.344117,0.706063,0.769563,-0.588313, + 0.705656,-0.064019,-0.705656,0.657523,0.686547,-0.657523, + 0.934344,-0.092655,-0.344117,0.706063,0.769563,-0.588313, + 0.703449,-0.101581,-0.703449,0.661906,0.769563,-0.661906, + 0.936848,-0.057446,-0.344986,0.700484,0.686547,-0.585922, + 0.998665,-0.051663,0,0.714805,0.686547,-0.5, + 0.996389,-0.084903,0,0.720781,0.769563,-0.5, + 0.996389,-0.084903,0,0.720781,0.769563,-0.5, + 0.934344,-0.092655,-0.344117,0.706063,0.769563,-0.588313, + 0.936848,-0.057446,-0.344986,0.700484,0.686547,-0.585922, + 0.991208,-0.132313,0,0.728516,0.838781,-0.5, + 0.92844,-0.14479,-0.342105,0.713281,0.838781,-0.591406, + 0.934344,-0.092655,-0.344117,0.706063,0.769563,-0.588313, + 0.991208,-0.132313,0,0.728516,0.838781,-0.5, + 0.934344,-0.092655,-0.344117,0.706063,0.769563,-0.588313, + 0.996389,-0.084903,0,0.720781,0.769563,-0.5, + 0.707107,-0.000155,-0.707107,0.653656,0.494688,-0.653656, + 0.958364,-0.000151,-0.285548,0.695563,0.494688,-0.583813, + 0.938032,-0.028246,-0.345395,0.696875,0.593625,-0.584375, + 0.707107,-0.000155,-0.707107,0.653656,0.494688,-0.653656, + 0.938032,-0.028246,-0.345395,0.696875,0.593625,-0.584375, + 0.706706,-0.033664,-0.706706,0.654688,0.593625,-0.654688, + 0.958364,-0.000151,-0.285548,0.695563,0.494688,-0.583813, + 1,-0.00015,0,0.709531,0.494688,-0.5, + 0.999728,-0.023338,0,0.710938,0.593625,-0.5, + 0.999728,-0.023338,0,0.710938,0.593625,-0.5, + 0.938032,-0.028246,-0.345395,0.696875,0.593625,-0.584375, + 0.958364,-0.000151,-0.285548,0.695563,0.494688,-0.583813, + 0.998665,-0.051663,0,0.714805,0.686547,-0.5, + 0.936848,-0.057446,-0.344986,0.700484,0.686547,-0.585922, + 0.938032,-0.028246,-0.345395,0.696875,0.593625,-0.584375, + 0.998665,-0.051663,0,0.714805,0.686547,-0.5, + 0.938032,-0.028246,-0.345395,0.696875,0.593625,-0.584375, + 0.999728,-0.023338,0,0.710938,0.593625,-0.5, + 0.936848,-0.057446,-0.344986,0.700484,0.686547,-0.585922, + 0.705656,-0.064019,-0.705656,0.657523,0.686547,-0.657523, + 0.706706,-0.033664,-0.706706,0.654688,0.593625,-0.654688, + 0.706706,-0.033664,-0.706706,0.654688,0.593625,-0.654688, + 0.938032,-0.028246,-0.345395,0.696875,0.593625,-0.584375, + 0.936848,-0.057446,-0.344986,0.700484,0.686547,-0.585922, + 0.707107,-0.000155,0.707107,0.653656,0.494688,-0.346344, + 0.706706,-0.033664,0.706706,0.654688,0.593625,-0.345313, + 0.938032,-0.028246,0.345395,0.696875,0.593625,-0.415625, + 0.707107,-0.000155,0.707107,0.653656,0.494688,-0.346344, + 0.938032,-0.028246,0.345395,0.696875,0.593625,-0.415625, + 0.958364,-0.000151,0.285548,0.695563,0.494688,-0.416187, + 0.706706,-0.033664,0.706706,0.654688,0.593625,-0.345313, + 0.705656,-0.064019,0.705656,0.657523,0.686547,-0.342477, + 0.936848,-0.057446,0.344986,0.700484,0.686547,-0.414078, + 0.936848,-0.057446,0.344986,0.700484,0.686547,-0.414078, + 0.938032,-0.028246,0.345395,0.696875,0.593625,-0.415625, + 0.706706,-0.033664,0.706706,0.654688,0.593625,-0.345313, + 0.998665,-0.051663,0,0.714805,0.686547,-0.5, + 0.999728,-0.023338,0,0.710938,0.593625,-0.5, + 0.938032,-0.028246,0.345395,0.696875,0.593625,-0.415625, + 0.998665,-0.051663,0,0.714805,0.686547,-0.5, + 0.938032,-0.028246,0.345395,0.696875,0.593625,-0.415625, + 0.936848,-0.057446,0.344986,0.700484,0.686547,-0.414078, + 0.999728,-0.023338,0,0.710938,0.593625,-0.5, + 1,-0.00015,0,0.709531,0.494688,-0.5, + 0.958364,-0.000151,0.285548,0.695563,0.494688,-0.416187, + 0.958364,-0.000151,0.285548,0.695563,0.494688,-0.416187, + 0.938032,-0.028246,0.345395,0.696875,0.593625,-0.415625, + 0.999728,-0.023338,0,0.710938,0.593625,-0.5, + 0.703449,-0.101581,0.703449,0.661906,0.769563,-0.338094, + 0.698103,-0.159073,0.698103,0.667578,0.838781,-0.332422, + 0.92844,-0.14479,0.342105,0.713281,0.838781,-0.408594, + 0.92844,-0.14479,0.342105,0.713281,0.838781,-0.408594, + 0.934344,-0.092655,0.344117,0.706063,0.769563,-0.411687, + 0.703449,-0.101581,0.703449,0.661906,0.769563,-0.338094, + 0.991208,-0.132313,0,0.728516,0.838781,-0.5, + 0.996389,-0.084903,0,0.720781,0.769563,-0.5, + 0.934344,-0.092655,0.344117,0.706063,0.769563,-0.411687, + 0.991208,-0.132313,0,0.728516,0.838781,-0.5, + 0.934344,-0.092655,0.344117,0.706063,0.769563,-0.411687, + 0.92844,-0.14479,0.342105,0.713281,0.838781,-0.408594, + 0.996389,-0.084903,0,0.720781,0.769563,-0.5, + 0.998665,-0.051663,0,0.714805,0.686547,-0.5, + 0.936848,-0.057446,0.344986,0.700484,0.686547,-0.414078, + 0.936848,-0.057446,0.344986,0.700484,0.686547,-0.414078, + 0.934344,-0.092655,0.344117,0.706063,0.769563,-0.411687, + 0.996389,-0.084903,0,0.720781,0.769563,-0.5, + 0.705656,-0.064019,0.705656,0.657523,0.686547,-0.342477, + 0.703449,-0.101581,0.703449,0.661906,0.769563,-0.338094, + 0.934344,-0.092655,0.344117,0.706063,0.769563,-0.411687, + 0.705656,-0.064019,0.705656,0.657523,0.686547,-0.342477, + 0.934344,-0.092655,0.344117,0.706063,0.769563,-0.411687, + 0.936848,-0.057446,0.344986,0.700484,0.686547,-0.414078, + -0.342105,-0.14479,-0.92844,0.408594,0.838781,-0.713281, + -0.698103,-0.159073,-0.698103,0.332422,0.838781,-0.667578, + -0.703449,-0.101581,-0.703449,0.338094,0.769563,-0.661906, + -0.703449,-0.101581,-0.703449,0.338094,0.769563,-0.661906, + -0.344117,-0.092655,-0.934344,0.411687,0.769563,-0.706063, + -0.342105,-0.14479,-0.92844,0.408594,0.838781,-0.713281, + -0.705656,-0.064019,-0.705656,0.342477,0.686547,-0.657523, + -0.344986,-0.057446,-0.936848,0.414078,0.686547,-0.700484, + -0.344117,-0.092655,-0.934344,0.411687,0.769563,-0.706063, + -0.705656,-0.064019,-0.705656,0.342477,0.686547,-0.657523, + -0.344117,-0.092655,-0.934344,0.411687,0.769563,-0.706063, + -0.703449,-0.101581,-0.703449,0.338094,0.769563,-0.661906, + -0.344986,-0.057446,-0.936848,0.414078,0.686547,-0.700484, + 0,-0.051663,-0.998665,0.5,0.686547,-0.714805, + 0,-0.084903,-0.996389,0.5,0.769563,-0.720781, + 0,-0.084903,-0.996389,0.5,0.769563,-0.720781, + -0.344117,-0.092655,-0.934344,0.411687,0.769563,-0.706063, + -0.344986,-0.057446,-0.936848,0.414078,0.686547,-0.700484, + 0,-0.132313,-0.991208,0.5,0.838781,-0.728516, + -0.342105,-0.14479,-0.92844,0.408594,0.838781,-0.713281, + -0.344117,-0.092655,-0.934344,0.411687,0.769563,-0.706063, + 0,-0.132313,-0.991208,0.5,0.838781,-0.728516, + -0.344117,-0.092655,-0.934344,0.411687,0.769563,-0.706063, + 0,-0.084903,-0.996389,0.5,0.769563,-0.720781, + -0.707107,-0.000155,-0.707107,0.346344,0.494688,-0.653656, + -0.285548,-0.000151,-0.958364,0.416187,0.494688,-0.695563, + -0.345395,-0.028246,-0.938032,0.415625,0.593625,-0.696875, + -0.707107,-0.000155,-0.707107,0.346344,0.494688,-0.653656, + -0.345395,-0.028246,-0.938032,0.415625,0.593625,-0.696875, + -0.706706,-0.033664,-0.706706,0.345313,0.593625,-0.654688, + -0.285548,-0.000151,-0.958364,0.416187,0.494688,-0.695563, + 0,-0.00015,-1,0.5,0.494688,-0.709531, + 0,-0.023338,-0.999728,0.5,0.593625,-0.710938, + 0,-0.023338,-0.999728,0.5,0.593625,-0.710938, + -0.345395,-0.028246,-0.938032,0.415625,0.593625,-0.696875, + -0.285548,-0.000151,-0.958364,0.416187,0.494688,-0.695563, + 0,-0.051663,-0.998665,0.5,0.686547,-0.714805, + -0.344986,-0.057446,-0.936848,0.414078,0.686547,-0.700484, + -0.345395,-0.028246,-0.938032,0.415625,0.593625,-0.696875, + 0,-0.051663,-0.998665,0.5,0.686547,-0.714805, + -0.345395,-0.028246,-0.938032,0.415625,0.593625,-0.696875, + 0,-0.023338,-0.999728,0.5,0.593625,-0.710938, + -0.344986,-0.057446,-0.936848,0.414078,0.686547,-0.700484, + -0.705656,-0.064019,-0.705656,0.342477,0.686547,-0.657523, + -0.706706,-0.033664,-0.706706,0.345313,0.593625,-0.654688, + -0.706706,-0.033664,-0.706706,0.345313,0.593625,-0.654688, + -0.345395,-0.028246,-0.938032,0.415625,0.593625,-0.696875, + -0.344986,-0.057446,-0.936848,0.414078,0.686547,-0.700484, + 0.707107,-0.000155,-0.707107,0.653656,0.494688,-0.653656, + 0.706706,-0.033664,-0.706706,0.654688,0.593625,-0.654688, + 0.345395,-0.028246,-0.938032,0.584375,0.593625,-0.696875, + 0.707107,-0.000155,-0.707107,0.653656,0.494688,-0.653656, + 0.345395,-0.028246,-0.938032,0.584375,0.593625,-0.696875, + 0.285548,-0.000151,-0.958364,0.583813,0.494688,-0.695563, + 0.706706,-0.033664,-0.706706,0.654688,0.593625,-0.654688, + 0.705656,-0.064019,-0.705656,0.657523,0.686547,-0.657523, + 0.344986,-0.057446,-0.936848,0.585922,0.686547,-0.700484, + 0.344986,-0.057446,-0.936848,0.585922,0.686547,-0.700484, + 0.345395,-0.028246,-0.938032,0.584375,0.593625,-0.696875, + 0.706706,-0.033664,-0.706706,0.654688,0.593625,-0.654688, + 0,-0.051663,-0.998665,0.5,0.686547,-0.714805, + 0,-0.023338,-0.999728,0.5,0.593625,-0.710938, + 0.345395,-0.028246,-0.938032,0.584375,0.593625,-0.696875, + 0,-0.051663,-0.998665,0.5,0.686547,-0.714805, + 0.345395,-0.028246,-0.938032,0.584375,0.593625,-0.696875, + 0.344986,-0.057446,-0.936848,0.585922,0.686547,-0.700484, + 0,-0.023338,-0.999728,0.5,0.593625,-0.710938, + 0,-0.00015,-1,0.5,0.494688,-0.709531, + 0.285548,-0.000151,-0.958364,0.583813,0.494688,-0.695563, + 0.285548,-0.000151,-0.958364,0.583813,0.494688,-0.695563, + 0.345395,-0.028246,-0.938032,0.584375,0.593625,-0.696875, + 0,-0.023338,-0.999728,0.5,0.593625,-0.710938, + 0.703449,-0.101581,-0.703449,0.661906,0.769563,-0.661906, + 0.698103,-0.159073,-0.698103,0.667578,0.838781,-0.667578, + 0.342105,-0.14479,-0.92844,0.591406,0.838781,-0.713281, + 0.342105,-0.14479,-0.92844,0.591406,0.838781,-0.713281, + 0.344117,-0.092655,-0.934344,0.588313,0.769563,-0.706063, + 0.703449,-0.101581,-0.703449,0.661906,0.769563,-0.661906, + 0,-0.132313,-0.991208,0.5,0.838781,-0.728516, + 0,-0.084903,-0.996389,0.5,0.769563,-0.720781, + 0.344117,-0.092655,-0.934344,0.588313,0.769563,-0.706063, + 0,-0.132313,-0.991208,0.5,0.838781,-0.728516, + 0.344117,-0.092655,-0.934344,0.588313,0.769563,-0.706063, + 0.342105,-0.14479,-0.92844,0.591406,0.838781,-0.713281, + 0,-0.084903,-0.996389,0.5,0.769563,-0.720781, + 0,-0.051663,-0.998665,0.5,0.686547,-0.714805, + 0.344986,-0.057446,-0.936848,0.585922,0.686547,-0.700484, + 0.344986,-0.057446,-0.936848,0.585922,0.686547,-0.700484, + 0.344117,-0.092655,-0.934344,0.588313,0.769563,-0.706063, + 0,-0.084903,-0.996389,0.5,0.769563,-0.720781, + 0.705656,-0.064019,-0.705656,0.657523,0.686547,-0.657523, + 0.703449,-0.101581,-0.703449,0.661906,0.769563,-0.661906, + 0.344117,-0.092655,-0.934344,0.588313,0.769563,-0.706063, + 0.705656,-0.064019,-0.705656,0.657523,0.686547,-0.657523, + 0.344117,-0.092655,-0.934344,0.588313,0.769563,-0.706063, + 0.344986,-0.057446,-0.936848,0.585922,0.686547,-0.700484, + -0.703449,-0.101581,0.703449,0.338094,0.769563,-0.338094, + -0.698103,-0.159073,0.698103,0.332422,0.838781,-0.332422, + -0.342105,-0.144791,0.92844,0.408594,0.838781,-0.286719, + -0.342105,-0.144791,0.92844,0.408594,0.838781,-0.286719, + -0.344116,-0.092655,0.934344,0.411687,0.769563,-0.293938, + -0.703449,-0.101581,0.703449,0.338094,0.769563,-0.338094, + 0,-0.132314,0.991208,0.5,0.838781,-0.271484, + 0,-0.084902,0.996389,0.5,0.769563,-0.279219, + -0.344116,-0.092655,0.934344,0.411687,0.769563,-0.293938, + 0,-0.132314,0.991208,0.5,0.838781,-0.271484, + -0.344116,-0.092655,0.934344,0.411687,0.769563,-0.293938, + -0.342105,-0.144791,0.92844,0.408594,0.838781,-0.286719, + 0,-0.084902,0.996389,0.5,0.769563,-0.279219, + 0,-0.051662,0.998665,0.5,0.686547,-0.285195, + -0.344986,-0.057445,0.936848,0.414078,0.686547,-0.299516, + -0.344986,-0.057445,0.936848,0.414078,0.686547,-0.299516, + -0.344116,-0.092655,0.934344,0.411687,0.769563,-0.293938, + 0,-0.084902,0.996389,0.5,0.769563,-0.279219, + -0.705656,-0.064019,0.705656,0.342477,0.686547,-0.342477, + -0.703449,-0.101581,0.703449,0.338094,0.769563,-0.338094, + -0.344116,-0.092655,0.934344,0.411687,0.769563,-0.293938, + -0.705656,-0.064019,0.705656,0.342477,0.686547,-0.342477, + -0.344116,-0.092655,0.934344,0.411687,0.769563,-0.293938, + -0.344986,-0.057445,0.936848,0.414078,0.686547,-0.299516, + 0.342105,-0.144791,0.92844,0.591406,0.838781,-0.286719, + 0.698103,-0.159073,0.698103,0.667578,0.838781,-0.332422, + 0.703449,-0.101581,0.703449,0.661906,0.769563,-0.338094, + 0.703449,-0.101581,0.703449,0.661906,0.769563,-0.338094, + 0.344116,-0.092655,0.934344,0.588313,0.769563,-0.293938, + 0.342105,-0.144791,0.92844,0.591406,0.838781,-0.286719, + 0.705656,-0.064019,0.705656,0.657523,0.686547,-0.342477, + 0.344986,-0.057445,0.936848,0.585922,0.686547,-0.299516, + 0.344116,-0.092655,0.934344,0.588313,0.769563,-0.293938, + 0.705656,-0.064019,0.705656,0.657523,0.686547,-0.342477, + 0.344116,-0.092655,0.934344,0.588313,0.769563,-0.293938, + 0.703449,-0.101581,0.703449,0.661906,0.769563,-0.338094, + 0.344986,-0.057445,0.936848,0.585922,0.686547,-0.299516, + 0,-0.051662,0.998665,0.5,0.686547,-0.285195, + 0,-0.084902,0.996389,0.5,0.769563,-0.279219, + 0,-0.084902,0.996389,0.5,0.769563,-0.279219, + 0.344116,-0.092655,0.934344,0.588313,0.769563,-0.293938, + 0.344986,-0.057445,0.936848,0.585922,0.686547,-0.299516, + 0,-0.132314,0.991208,0.5,0.838781,-0.271484, + 0.342105,-0.144791,0.92844,0.591406,0.838781,-0.286719, + 0.344116,-0.092655,0.934344,0.588313,0.769563,-0.293938, + 0,-0.132314,0.991208,0.5,0.838781,-0.271484, + 0.344116,-0.092655,0.934344,0.588313,0.769563,-0.293938, + 0,-0.084902,0.996389,0.5,0.769563,-0.279219, + 0.707107,-0.000155,0.707107,0.653656,0.494688,-0.346344, + 0.285548,-0.000151,0.958364,0.583813,0.494688,-0.304437, + 0.345395,-0.028246,0.938032,0.584375,0.593625,-0.303125, + 0.707107,-0.000155,0.707107,0.653656,0.494688,-0.346344, + 0.345395,-0.028246,0.938032,0.584375,0.593625,-0.303125, + 0.706706,-0.033664,0.706706,0.654688,0.593625,-0.345313, + 0.285548,-0.000151,0.958364,0.583813,0.494688,-0.304437, + 0,-0.00015,1,0.5,0.494688,-0.290469, + 0,-0.023338,0.999728,0.5,0.593625,-0.289063, + 0,-0.023338,0.999728,0.5,0.593625,-0.289063, + 0.345395,-0.028246,0.938032,0.584375,0.593625,-0.303125, + 0.285548,-0.000151,0.958364,0.583813,0.494688,-0.304437, + 0,-0.051662,0.998665,0.5,0.686547,-0.285195, + 0.344986,-0.057445,0.936848,0.585922,0.686547,-0.299516, + 0.345395,-0.028246,0.938032,0.584375,0.593625,-0.303125, + 0,-0.051662,0.998665,0.5,0.686547,-0.285195, + 0.345395,-0.028246,0.938032,0.584375,0.593625,-0.303125, + 0,-0.023338,0.999728,0.5,0.593625,-0.289063, + 0.344986,-0.057445,0.936848,0.585922,0.686547,-0.299516, + 0.705656,-0.064019,0.705656,0.657523,0.686547,-0.342477, + 0.706706,-0.033664,0.706706,0.654688,0.593625,-0.345313, + 0.706706,-0.033664,0.706706,0.654688,0.593625,-0.345313, + 0.345395,-0.028246,0.938032,0.584375,0.593625,-0.303125, + 0.344986,-0.057445,0.936848,0.585922,0.686547,-0.299516, + -0.707107,-0.000155,0.707107,0.346344,0.494688,-0.346344, + -0.706706,-0.033664,0.706706,0.345313,0.593625,-0.345313, + -0.345395,-0.028246,0.938032,0.415625,0.593625,-0.303125, + -0.707107,-0.000155,0.707107,0.346344,0.494688,-0.346344, + -0.345395,-0.028246,0.938032,0.415625,0.593625,-0.303125, + -0.285548,-0.000151,0.958364,0.416187,0.494688,-0.304437, + -0.706706,-0.033664,0.706706,0.345313,0.593625,-0.345313, + -0.705656,-0.064019,0.705656,0.342477,0.686547,-0.342477, + -0.344986,-0.057445,0.936848,0.414078,0.686547,-0.299516, + -0.344986,-0.057445,0.936848,0.414078,0.686547,-0.299516, + -0.345395,-0.028246,0.938032,0.415625,0.593625,-0.303125, + -0.706706,-0.033664,0.706706,0.345313,0.593625,-0.345313, + 0,-0.051662,0.998665,0.5,0.686547,-0.285195, + 0,-0.023338,0.999728,0.5,0.593625,-0.289063, + -0.345395,-0.028246,0.938032,0.415625,0.593625,-0.303125, + 0,-0.051662,0.998665,0.5,0.686547,-0.285195, + -0.345395,-0.028246,0.938032,0.415625,0.593625,-0.303125, + -0.344986,-0.057445,0.936848,0.414078,0.686547,-0.299516, + 0,-0.023338,0.999728,0.5,0.593625,-0.289063, + 0,-0.00015,1,0.5,0.494688,-0.290469, + -0.285548,-0.000151,0.958364,0.416187,0.494688,-0.304437, + -0.285548,-0.000151,0.958364,0.416187,0.494688,-0.304437, + -0.345395,-0.028246,0.938032,0.415625,0.593625,-0.303125, + 0,-0.023338,0.999728,0.5,0.593625,-0.289063, + -0.703449,-0.101581,-0.703449,0.338094,0.769563,-0.661906, + -0.698103,-0.159073,-0.698103,0.332422,0.838781,-0.667578, + -0.92844,-0.144791,-0.342105,0.286719,0.838781,-0.591406, + -0.92844,-0.144791,-0.342105,0.286719,0.838781,-0.591406, + -0.934344,-0.092655,-0.344116,0.293938,0.769563,-0.588313, + -0.703449,-0.101581,-0.703449,0.338094,0.769563,-0.661906, + -0.991208,-0.132314,0,0.271484,0.838781,-0.5, + -0.996389,-0.084902,0,0.279219,0.769563,-0.5, + -0.934344,-0.092655,-0.344116,0.293938,0.769563,-0.588313, + -0.991208,-0.132314,0,0.271484,0.838781,-0.5, + -0.934344,-0.092655,-0.344116,0.293938,0.769563,-0.588313, + -0.92844,-0.144791,-0.342105,0.286719,0.838781,-0.591406, + -0.996389,-0.084902,0,0.279219,0.769563,-0.5, + -0.998665,-0.051662,0,0.285195,0.686547,-0.5, + -0.936848,-0.057445,-0.344986,0.299516,0.686547,-0.585922, + -0.936848,-0.057445,-0.344986,0.299516,0.686547,-0.585922, + -0.934344,-0.092655,-0.344116,0.293938,0.769563,-0.588313, + -0.996389,-0.084902,0,0.279219,0.769563,-0.5, + -0.705656,-0.064019,-0.705656,0.342477,0.686547,-0.657523, + -0.703449,-0.101581,-0.703449,0.338094,0.769563,-0.661906, + -0.934344,-0.092655,-0.344116,0.293938,0.769563,-0.588313, + -0.705656,-0.064019,-0.705656,0.342477,0.686547,-0.657523, + -0.934344,-0.092655,-0.344116,0.293938,0.769563,-0.588313, + -0.936848,-0.057445,-0.344986,0.299516,0.686547,-0.585922, + -0.92844,-0.144791,0.342105,0.286719,0.838781,-0.408594, + -0.698103,-0.159073,0.698103,0.332422,0.838781,-0.332422, + -0.703449,-0.101581,0.703449,0.338094,0.769563,-0.338094, + -0.703449,-0.101581,0.703449,0.338094,0.769563,-0.338094, + -0.934344,-0.092655,0.344116,0.293938,0.769563,-0.411687, + -0.92844,-0.144791,0.342105,0.286719,0.838781,-0.408594, + -0.705656,-0.064019,0.705656,0.342477,0.686547,-0.342477, + -0.936848,-0.057445,0.344986,0.299516,0.686547,-0.414078, + -0.934344,-0.092655,0.344116,0.293938,0.769563,-0.411687, + -0.705656,-0.064019,0.705656,0.342477,0.686547,-0.342477, + -0.934344,-0.092655,0.344116,0.293938,0.769563,-0.411687, + -0.703449,-0.101581,0.703449,0.338094,0.769563,-0.338094, + -0.936848,-0.057445,0.344986,0.299516,0.686547,-0.414078, + -0.998665,-0.051662,0,0.285195,0.686547,-0.5, + -0.996389,-0.084902,0,0.279219,0.769563,-0.5, + -0.996389,-0.084902,0,0.279219,0.769563,-0.5, + -0.934344,-0.092655,0.344116,0.293938,0.769563,-0.411687, + -0.936848,-0.057445,0.344986,0.299516,0.686547,-0.414078, + -0.991208,-0.132314,0,0.271484,0.838781,-0.5, + -0.92844,-0.144791,0.342105,0.286719,0.838781,-0.408594, + -0.934344,-0.092655,0.344116,0.293938,0.769563,-0.411687, + -0.991208,-0.132314,0,0.271484,0.838781,-0.5, + -0.934344,-0.092655,0.344116,0.293938,0.769563,-0.411687, + -0.996389,-0.084902,0,0.279219,0.769563,-0.5, + -0.707107,-0.000155,0.707107,0.346344,0.494688,-0.346344, + -0.958364,-0.000151,0.285548,0.304437,0.494688,-0.416187, + -0.938032,-0.028246,0.345395,0.303125,0.593625,-0.415625, + -0.707107,-0.000155,0.707107,0.346344,0.494688,-0.346344, + -0.938032,-0.028246,0.345395,0.303125,0.593625,-0.415625, + -0.706706,-0.033664,0.706706,0.345313,0.593625,-0.345313, + -0.958364,-0.000151,0.285548,0.304437,0.494688,-0.416187, + -1,-0.00015,0,0.290469,0.494688,-0.5, + -0.999728,-0.023338,0,0.289063,0.593625,-0.5, + -0.999728,-0.023338,0,0.289063,0.593625,-0.5, + -0.938032,-0.028246,0.345395,0.303125,0.593625,-0.415625, + -0.958364,-0.000151,0.285548,0.304437,0.494688,-0.416187, + -0.998665,-0.051662,0,0.285195,0.686547,-0.5, + -0.936848,-0.057445,0.344986,0.299516,0.686547,-0.414078, + -0.938032,-0.028246,0.345395,0.303125,0.593625,-0.415625, + -0.998665,-0.051662,0,0.285195,0.686547,-0.5, + -0.938032,-0.028246,0.345395,0.303125,0.593625,-0.415625, + -0.999728,-0.023338,0,0.289063,0.593625,-0.5, + -0.936848,-0.057445,0.344986,0.299516,0.686547,-0.414078, + -0.705656,-0.064019,0.705656,0.342477,0.686547,-0.342477, + -0.706706,-0.033664,0.706706,0.345313,0.593625,-0.345313, + -0.706706,-0.033664,0.706706,0.345313,0.593625,-0.345313, + -0.938032,-0.028246,0.345395,0.303125,0.593625,-0.415625, + -0.936848,-0.057445,0.344986,0.299516,0.686547,-0.414078, + -0.707107,-0.000155,-0.707107,0.346344,0.494688,-0.653656, + -0.706706,-0.033664,-0.706706,0.345313,0.593625,-0.654688, + -0.938032,-0.028246,-0.345395,0.303125,0.593625,-0.584375, + -0.707107,-0.000155,-0.707107,0.346344,0.494688,-0.653656, + -0.938032,-0.028246,-0.345395,0.303125,0.593625,-0.584375, + -0.958364,-0.000151,-0.285548,0.304437,0.494688,-0.583813, + -0.706706,-0.033664,-0.706706,0.345313,0.593625,-0.654688, + -0.705656,-0.064019,-0.705656,0.342477,0.686547,-0.657523, + -0.936848,-0.057445,-0.344986,0.299516,0.686547,-0.585922, + -0.936848,-0.057445,-0.344986,0.299516,0.686547,-0.585922, + -0.938032,-0.028246,-0.345395,0.303125,0.593625,-0.584375, + -0.706706,-0.033664,-0.706706,0.345313,0.593625,-0.654688, + -0.998665,-0.051662,0,0.285195,0.686547,-0.5, + -0.999728,-0.023338,0,0.289063,0.593625,-0.5, + -0.938032,-0.028246,-0.345395,0.303125,0.593625,-0.584375, + -0.998665,-0.051662,0,0.285195,0.686547,-0.5, + -0.938032,-0.028246,-0.345395,0.303125,0.593625,-0.584375, + -0.936848,-0.057445,-0.344986,0.299516,0.686547,-0.585922, + -0.999728,-0.023338,0,0.289063,0.593625,-0.5, + -1,-0.00015,0,0.290469,0.494688,-0.5, + -0.958364,-0.000151,-0.285548,0.304437,0.494688,-0.583813, + -0.958364,-0.000151,-0.285548,0.304437,0.494688,-0.583813, + -0.938032,-0.028246,-0.345395,0.303125,0.593625,-0.584375, + -0.999728,-0.023338,0,0.289063,0.593625,-0.5, + -0.703939,0.094548,-0.703939,0.338094,0.207062,-0.661906, + -0.699155,0.149544,-0.699156,0.332422,0.132531,-0.667578, + -0.342523,0.135808,-0.929642,0.408594,0.132531,-0.713281, + -0.342523,0.135808,-0.929642,0.408594,0.132531,-0.713281, + -0.344301,0.086306,-0.934884,0.411687,0.207062,-0.706063, + -0.703939,0.094548,-0.703939,0.338094,0.207062,-0.661906, + 0,0.12379,-0.992308,0.5,0.132531,-0.728516, + 0,0.079157,-0.996862,0.5,0.207062,-0.720781, + -0.344301,0.086306,-0.934884,0.411687,0.207062,-0.706063, + 0,0.12379,-0.992308,0.5,0.132531,-0.728516, + -0.344301,0.086306,-0.934884,0.411687,0.207062,-0.706063, + -0.342523,0.135808,-0.929642,0.408594,0.132531,-0.713281, + 0,0.079157,-0.996862,0.5,0.207062,-0.720781, + 0,0.048741,-0.998811,0.5,0.295922,-0.714805, + -0.345045,0.054036,-0.937029,0.414078,0.295922,-0.700484, + -0.345045,0.054036,-0.937029,0.414078,0.295922,-0.700484, + -0.344301,0.086306,-0.934884,0.411687,0.207062,-0.706063, + 0,0.079157,-0.996862,0.5,0.207062,-0.720781, + -0.70583,0.060067,-0.70583,0.342477,0.295922,-0.657523, + -0.703939,0.094548,-0.703939,0.338094,0.207062,-0.661906, + -0.344301,0.086306,-0.934884,0.411687,0.207062,-0.706063, + -0.70583,0.060067,-0.70583,0.342477,0.295922,-0.657523, + -0.344301,0.086306,-0.934884,0.411687,0.207062,-0.706063, + -0.345045,0.054036,-0.937029,0.414078,0.295922,-0.700484, + 0.342523,0.135808,-0.929642,0.591406,0.132531,-0.713281, + 0.699155,0.149544,-0.699155,0.667578,0.132531,-0.667578, + 0.703939,0.094547,-0.703939,0.661906,0.207062,-0.661906, + 0.703939,0.094547,-0.703939,0.661906,0.207062,-0.661906, + 0.344301,0.086306,-0.934884,0.588313,0.207062,-0.706063, + 0.342523,0.135808,-0.929642,0.591406,0.132531,-0.713281, + 0.70583,0.060067,-0.70583,0.657523,0.295922,-0.657523, + 0.345045,0.054036,-0.937029,0.585922,0.295922,-0.700484, + 0.344301,0.086306,-0.934884,0.588313,0.207062,-0.706063, + 0.70583,0.060067,-0.70583,0.657523,0.295922,-0.657523, + 0.344301,0.086306,-0.934884,0.588313,0.207062,-0.706063, + 0.703939,0.094547,-0.703939,0.661906,0.207062,-0.661906, + 0.345045,0.054036,-0.937029,0.585922,0.295922,-0.700484, + 0,0.048741,-0.998811,0.5,0.295922,-0.714805, + 0,0.079157,-0.996862,0.5,0.207062,-0.720781, + 0,0.079157,-0.996862,0.5,0.207062,-0.720781, + 0.344301,0.086306,-0.934884,0.588313,0.207062,-0.706063, + 0.345045,0.054036,-0.937029,0.585922,0.295922,-0.700484, + 0,0.12379,-0.992308,0.5,0.132531,-0.728516, + 0.342523,0.135808,-0.929642,0.591406,0.132531,-0.713281, + 0.344301,0.086306,-0.934884,0.588313,0.207062,-0.706063, + 0,0.12379,-0.992308,0.5,0.132531,-0.728516, + 0.344301,0.086306,-0.934884,0.588313,0.207062,-0.706063, + 0,0.079157,-0.996862,0.5,0.207062,-0.720781, + 0.707107,-0.000155,-0.707107,0.653656,0.494688,-0.653656, + 0.285548,-0.000151,-0.958364,0.583813,0.494688,-0.695563, + 0.345404,0.027067,-0.938064,0.584375,0.393625,-0.696875, + 0.707107,-0.000155,-0.707107,0.653656,0.494688,-0.653656, + 0.345404,0.027067,-0.938064,0.584375,0.393625,-0.696875, + 0.706741,0.032156,-0.706741,0.654688,0.393625,-0.654688, + 0.285548,-0.000151,-0.958364,0.583813,0.494688,-0.695563, + 0,-0.00015,-1,0.5,0.494688,-0.709531, + 0,0.022461,-0.999748,0.5,0.393625,-0.710938, + 0,0.022461,-0.999748,0.5,0.393625,-0.710938, + 0.345404,0.027067,-0.938064,0.584375,0.393625,-0.696875, + 0.285548,-0.000151,-0.958364,0.583813,0.494688,-0.695563, + 0,0.048741,-0.998811,0.5,0.295922,-0.714805, + 0.345045,0.054036,-0.937029,0.585922,0.295922,-0.700484, + 0.345404,0.027067,-0.938064,0.584375,0.393625,-0.696875, + 0,0.048741,-0.998811,0.5,0.295922,-0.714805, + 0.345404,0.027067,-0.938064,0.584375,0.393625,-0.696875, + 0,0.022461,-0.999748,0.5,0.393625,-0.710938, + 0.345045,0.054036,-0.937029,0.585922,0.295922,-0.700484, + 0.70583,0.060067,-0.70583,0.657523,0.295922,-0.657523, + 0.706741,0.032156,-0.706741,0.654688,0.393625,-0.654688, + 0.706741,0.032156,-0.706741,0.654688,0.393625,-0.654688, + 0.345404,0.027067,-0.938064,0.584375,0.393625,-0.696875, + 0.345045,0.054036,-0.937029,0.585922,0.295922,-0.700484, + -0.707107,-0.000155,-0.707107,0.346344,0.494688,-0.653656, + -0.706741,0.032156,-0.706741,0.345313,0.393625,-0.654688, + -0.345404,0.027067,-0.938064,0.415625,0.393625,-0.696875, + -0.707107,-0.000155,-0.707107,0.346344,0.494688,-0.653656, + -0.345404,0.027067,-0.938064,0.415625,0.393625,-0.696875, + -0.285548,-0.000151,-0.958364,0.416187,0.494688,-0.695563, + -0.706741,0.032156,-0.706741,0.345313,0.393625,-0.654688, + -0.70583,0.060067,-0.70583,0.342477,0.295922,-0.657523, + -0.345045,0.054036,-0.937029,0.414078,0.295922,-0.700484, + -0.345045,0.054036,-0.937029,0.414078,0.295922,-0.700484, + -0.345404,0.027067,-0.938064,0.415625,0.393625,-0.696875, + -0.706741,0.032156,-0.706741,0.345313,0.393625,-0.654688, + 0,0.048741,-0.998811,0.5,0.295922,-0.714805, + 0,0.022461,-0.999748,0.5,0.393625,-0.710938, + -0.345404,0.027067,-0.938064,0.415625,0.393625,-0.696875, + 0,0.048741,-0.998811,0.5,0.295922,-0.714805, + -0.345404,0.027067,-0.938064,0.415625,0.393625,-0.696875, + -0.345045,0.054036,-0.937029,0.414078,0.295922,-0.700484, + 0,0.022461,-0.999748,0.5,0.393625,-0.710938, + 0,-0.00015,-1,0.5,0.494688,-0.709531, + -0.285548,-0.000151,-0.958364,0.416187,0.494688,-0.695563, + -0.285548,-0.000151,-0.958364,0.416187,0.494688,-0.695563, + -0.345404,0.027067,-0.938064,0.415625,0.393625,-0.696875, + 0,0.022461,-0.999748,0.5,0.393625,-0.710938, + -0.929642,0.135808,-0.342523,0.286719,0.132531,-0.591406, + -0.699155,0.149544,-0.699156,0.332422,0.132531,-0.667578, + -0.703939,0.094548,-0.703939,0.338094,0.207062,-0.661906, + -0.703939,0.094548,-0.703939,0.338094,0.207062,-0.661906, + -0.934884,0.086306,-0.344301,0.293938,0.207062,-0.588313, + -0.929642,0.135808,-0.342523,0.286719,0.132531,-0.591406, + -0.70583,0.060067,-0.70583,0.342477,0.295922,-0.657523, + -0.937029,0.054035,-0.345045,0.299516,0.295922,-0.585922, + -0.934884,0.086306,-0.344301,0.293938,0.207062,-0.588313, + -0.70583,0.060067,-0.70583,0.342477,0.295922,-0.657523, + -0.934884,0.086306,-0.344301,0.293938,0.207062,-0.588313, + -0.703939,0.094548,-0.703939,0.338094,0.207062,-0.661906, + -0.937029,0.054035,-0.345045,0.299516,0.295922,-0.585922, + -0.998811,0.04874,0,0.285195,0.295922,-0.5, + -0.996862,0.079157,0,0.279219,0.207062,-0.5, + -0.996862,0.079157,0,0.279219,0.207062,-0.5, + -0.934884,0.086306,-0.344301,0.293938,0.207062,-0.588313, + -0.937029,0.054035,-0.345045,0.299516,0.295922,-0.585922, + -0.992308,0.12379,0,0.271484,0.132531,-0.5, + -0.929642,0.135808,-0.342523,0.286719,0.132531,-0.591406, + -0.934884,0.086306,-0.344301,0.293938,0.207062,-0.588313, + -0.992308,0.12379,0,0.271484,0.132531,-0.5, + -0.934884,0.086306,-0.344301,0.293938,0.207062,-0.588313, + -0.996862,0.079157,0,0.279219,0.207062,-0.5, + -0.707107,-0.000155,-0.707107,0.346344,0.494688,-0.653656, + -0.958364,-0.000151,-0.285548,0.304437,0.494688,-0.583813, + -0.938064,0.027067,-0.345404,0.303125,0.393625,-0.584375, + -0.707107,-0.000155,-0.707107,0.346344,0.494688,-0.653656, + -0.938064,0.027067,-0.345404,0.303125,0.393625,-0.584375, + -0.706741,0.032156,-0.706741,0.345313,0.393625,-0.654688, + -0.958364,-0.000151,-0.285548,0.304437,0.494688,-0.583813, + -1,-0.00015,0,0.290469,0.494688,-0.5, + -0.999748,0.022461,0,0.289063,0.393625,-0.5, + -0.999748,0.022461,0,0.289063,0.393625,-0.5, + -0.938064,0.027067,-0.345404,0.303125,0.393625,-0.584375, + -0.958364,-0.000151,-0.285548,0.304437,0.494688,-0.583813, + -0.998811,0.04874,0,0.285195,0.295922,-0.5, + -0.937029,0.054035,-0.345045,0.299516,0.295922,-0.585922, + -0.938064,0.027067,-0.345404,0.303125,0.393625,-0.584375, + -0.998811,0.04874,0,0.285195,0.295922,-0.5, + -0.938064,0.027067,-0.345404,0.303125,0.393625,-0.584375, + -0.999748,0.022461,0,0.289063,0.393625,-0.5, + -0.937029,0.054035,-0.345045,0.299516,0.295922,-0.585922, + -0.70583,0.060067,-0.70583,0.342477,0.295922,-0.657523, + -0.706741,0.032156,-0.706741,0.345313,0.393625,-0.654688, + -0.706741,0.032156,-0.706741,0.345313,0.393625,-0.654688, + -0.938064,0.027067,-0.345404,0.303125,0.393625,-0.584375, + -0.937029,0.054035,-0.345045,0.299516,0.295922,-0.585922, + -0.707107,-0.000155,0.707107,0.346344,0.494688,-0.346344, + -0.706741,0.032156,0.706741,0.345313,0.393625,-0.345313, + -0.938064,0.027067,0.345404,0.303125,0.393625,-0.415625, + -0.707107,-0.000155,0.707107,0.346344,0.494688,-0.346344, + -0.938064,0.027067,0.345404,0.303125,0.393625,-0.415625, + -0.958364,-0.000151,0.285548,0.304437,0.494688,-0.416187, + -0.706741,0.032156,0.706741,0.345313,0.393625,-0.345313, + -0.70583,0.060067,0.70583,0.342477,0.295922,-0.342477, + -0.937029,0.054035,0.345045,0.299516,0.295922,-0.414078, + -0.937029,0.054035,0.345045,0.299516,0.295922,-0.414078, + -0.938064,0.027067,0.345404,0.303125,0.393625,-0.415625, + -0.706741,0.032156,0.706741,0.345313,0.393625,-0.345313, + -0.998811,0.04874,0,0.285195,0.295922,-0.5, + -0.999748,0.022461,0,0.289063,0.393625,-0.5, + -0.938064,0.027067,0.345404,0.303125,0.393625,-0.415625, + -0.998811,0.04874,0,0.285195,0.295922,-0.5, + -0.938064,0.027067,0.345404,0.303125,0.393625,-0.415625, + -0.937029,0.054035,0.345045,0.299516,0.295922,-0.414078, + -0.999748,0.022461,0,0.289063,0.393625,-0.5, + -1,-0.00015,0,0.290469,0.494688,-0.5, + -0.958364,-0.000151,0.285548,0.304437,0.494688,-0.416187, + -0.958364,-0.000151,0.285548,0.304437,0.494688,-0.416187, + -0.938064,0.027067,0.345404,0.303125,0.393625,-0.415625, + -0.999748,0.022461,0,0.289063,0.393625,-0.5, + -0.703939,0.094548,0.703939,0.338094,0.207062,-0.338094, + -0.699155,0.149545,0.699155,0.332422,0.132531,-0.332422, + -0.929642,0.135808,0.342523,0.286719,0.132531,-0.408594, + -0.929642,0.135808,0.342523,0.286719,0.132531,-0.408594, + -0.934884,0.086306,0.344301,0.293938,0.207062,-0.411687, + -0.703939,0.094548,0.703939,0.338094,0.207062,-0.338094, + -0.992308,0.12379,0,0.271484,0.132531,-0.5, + -0.996862,0.079157,0,0.279219,0.207062,-0.5, + -0.934884,0.086306,0.344301,0.293938,0.207062,-0.411687, + -0.992308,0.12379,0,0.271484,0.132531,-0.5, + -0.934884,0.086306,0.344301,0.293938,0.207062,-0.411687, + -0.929642,0.135808,0.342523,0.286719,0.132531,-0.408594, + -0.996862,0.079157,0,0.279219,0.207062,-0.5, + -0.998811,0.04874,0,0.285195,0.295922,-0.5, + -0.937029,0.054035,0.345045,0.299516,0.295922,-0.414078, + -0.937029,0.054035,0.345045,0.299516,0.295922,-0.414078, + -0.934884,0.086306,0.344301,0.293938,0.207062,-0.411687, + -0.996862,0.079157,0,0.279219,0.207062,-0.5, + -0.70583,0.060067,0.70583,0.342477,0.295922,-0.342477, + -0.703939,0.094548,0.703939,0.338094,0.207062,-0.338094, + -0.934884,0.086306,0.344301,0.293938,0.207062,-0.411687, + -0.70583,0.060067,0.70583,0.342477,0.295922,-0.342477, + -0.934884,0.086306,0.344301,0.293938,0.207062,-0.411687, + -0.937029,0.054035,0.345045,0.299516,0.295922,-0.414078, + -0.342523,0.135808,0.929642,0.408594,0.132531,-0.286719, + -0.699155,0.149545,0.699155,0.332422,0.132531,-0.332422, + -0.703939,0.094548,0.703939,0.338094,0.207062,-0.338094, + -0.703939,0.094548,0.703939,0.338094,0.207062,-0.338094, + -0.344301,0.086306,0.934884,0.411687,0.207062,-0.293938, + -0.342523,0.135808,0.929642,0.408594,0.132531,-0.286719, + -0.70583,0.060067,0.70583,0.342477,0.295922,-0.342477, + -0.345045,0.054035,0.937029,0.414078,0.295922,-0.299516, + -0.344301,0.086306,0.934884,0.411687,0.207062,-0.293938, + -0.70583,0.060067,0.70583,0.342477,0.295922,-0.342477, + -0.344301,0.086306,0.934884,0.411687,0.207062,-0.293938, + -0.703939,0.094548,0.703939,0.338094,0.207062,-0.338094, + -0.345045,0.054035,0.937029,0.414078,0.295922,-0.299516, + 0,0.04874,0.998811,0.5,0.295922,-0.285195, + 0,0.079157,0.996862,0.5,0.207062,-0.279219, + 0,0.079157,0.996862,0.5,0.207062,-0.279219, + -0.344301,0.086306,0.934884,0.411687,0.207062,-0.293938, + -0.345045,0.054035,0.937029,0.414078,0.295922,-0.299516, + 0,0.12379,0.992308,0.5,0.132531,-0.271484, + -0.342523,0.135808,0.929642,0.408594,0.132531,-0.286719, + -0.344301,0.086306,0.934884,0.411687,0.207062,-0.293938, + 0,0.12379,0.992308,0.5,0.132531,-0.271484, + -0.344301,0.086306,0.934884,0.411687,0.207062,-0.293938, + 0,0.079157,0.996862,0.5,0.207062,-0.279219, + -0.707107,-0.000155,0.707107,0.346344,0.494688,-0.346344, + -0.285548,-0.000151,0.958364,0.416187,0.494688,-0.304437, + -0.345404,0.027067,0.938064,0.415625,0.393625,-0.303125, + -0.707107,-0.000155,0.707107,0.346344,0.494688,-0.346344, + -0.345404,0.027067,0.938064,0.415625,0.393625,-0.303125, + -0.706741,0.032156,0.706741,0.345313,0.393625,-0.345313, + -0.285548,-0.000151,0.958364,0.416187,0.494688,-0.304437, + 0,-0.00015,1,0.5,0.494688,-0.290469, + 0,0.022461,0.999748,0.5,0.393625,-0.289063, + 0,0.022461,0.999748,0.5,0.393625,-0.289063, + -0.345404,0.027067,0.938064,0.415625,0.393625,-0.303125, + -0.285548,-0.000151,0.958364,0.416187,0.494688,-0.304437, + 0,0.04874,0.998811,0.5,0.295922,-0.285195, + -0.345045,0.054035,0.937029,0.414078,0.295922,-0.299516, + -0.345404,0.027067,0.938064,0.415625,0.393625,-0.303125, + 0,0.04874,0.998811,0.5,0.295922,-0.285195, + -0.345404,0.027067,0.938064,0.415625,0.393625,-0.303125, + 0,0.022461,0.999748,0.5,0.393625,-0.289063, + -0.345045,0.054035,0.937029,0.414078,0.295922,-0.299516, + -0.70583,0.060067,0.70583,0.342477,0.295922,-0.342477, + -0.706741,0.032156,0.706741,0.345313,0.393625,-0.345313, + -0.706741,0.032156,0.706741,0.345313,0.393625,-0.345313, + -0.345404,0.027067,0.938064,0.415625,0.393625,-0.303125, + -0.345045,0.054035,0.937029,0.414078,0.295922,-0.299516, + 0.707107,-0.000155,0.707107,0.653656,0.494688,-0.346344, + 0.706741,0.032156,0.706741,0.654688,0.393625,-0.345313, + 0.345404,0.027067,0.938064,0.584375,0.393625,-0.303125, + 0.707107,-0.000155,0.707107,0.653656,0.494688,-0.346344, + 0.345404,0.027067,0.938064,0.584375,0.393625,-0.303125, + 0.285548,-0.000151,0.958364,0.583813,0.494688,-0.304437, + 0.706741,0.032156,0.706741,0.654688,0.393625,-0.345313, + 0.70583,0.060067,0.70583,0.657523,0.295922,-0.342477, + 0.345045,0.054035,0.937029,0.585922,0.295922,-0.299516, + 0.345045,0.054035,0.937029,0.585922,0.295922,-0.299516, + 0.345404,0.027067,0.938064,0.584375,0.393625,-0.303125, + 0.706741,0.032156,0.706741,0.654688,0.393625,-0.345313, + 0,0.04874,0.998811,0.5,0.295922,-0.285195, + 0,0.022461,0.999748,0.5,0.393625,-0.289063, + 0.345404,0.027067,0.938064,0.584375,0.393625,-0.303125, + 0,0.04874,0.998811,0.5,0.295922,-0.285195, + 0.345404,0.027067,0.938064,0.584375,0.393625,-0.303125, + 0.345045,0.054035,0.937029,0.585922,0.295922,-0.299516, + 0,0.022461,0.999748,0.5,0.393625,-0.289063, + 0,-0.00015,1,0.5,0.494688,-0.290469, + 0.285548,-0.000151,0.958364,0.583813,0.494688,-0.304437, + 0.285548,-0.000151,0.958364,0.583813,0.494688,-0.304437, + 0.345404,0.027067,0.938064,0.584375,0.393625,-0.303125, + 0,0.022461,0.999748,0.5,0.393625,-0.289063, + 0.703939,0.094548,0.703939,0.661906,0.207062,-0.338094, + 0.699156,0.149544,0.699155,0.667578,0.132531,-0.332422, + 0.342523,0.135808,0.929642,0.591406,0.132531,-0.286719, + 0.342523,0.135808,0.929642,0.591406,0.132531,-0.286719, + 0.344301,0.086306,0.934884,0.588313,0.207062,-0.293938, + 0.703939,0.094548,0.703939,0.661906,0.207062,-0.338094, + 0,0.12379,0.992308,0.5,0.132531,-0.271484, + 0,0.079157,0.996862,0.5,0.207062,-0.279219, + 0.344301,0.086306,0.934884,0.588313,0.207062,-0.293938, + 0,0.12379,0.992308,0.5,0.132531,-0.271484, + 0.344301,0.086306,0.934884,0.588313,0.207062,-0.293938, + 0.342523,0.135808,0.929642,0.591406,0.132531,-0.286719, + 0,0.079157,0.996862,0.5,0.207062,-0.279219, + 0,0.04874,0.998811,0.5,0.295922,-0.285195, + 0.345045,0.054035,0.937029,0.585922,0.295922,-0.299516, + 0.345045,0.054035,0.937029,0.585922,0.295922,-0.299516, + 0.344301,0.086306,0.934884,0.588313,0.207062,-0.293938, + 0,0.079157,0.996862,0.5,0.207062,-0.279219, + 0.70583,0.060067,0.70583,0.657523,0.295922,-0.342477, + 0.703939,0.094548,0.703939,0.661906,0.207062,-0.338094, + 0.344301,0.086306,0.934884,0.588313,0.207062,-0.293938, + 0.70583,0.060067,0.70583,0.657523,0.295922,-0.342477, + 0.344301,0.086306,0.934884,0.588313,0.207062,-0.293938, + 0.345045,0.054035,0.937029,0.585922,0.295922,-0.299516, + 0.929642,0.135808,0.342523,0.713281,0.132531,-0.408594, + 0.699156,0.149544,0.699155,0.667578,0.132531,-0.332422, + 0.703939,0.094548,0.703939,0.661906,0.207062,-0.338094, + 0.703939,0.094548,0.703939,0.661906,0.207062,-0.338094, + 0.934884,0.086306,0.344301,0.706063,0.207062,-0.411687, + 0.929642,0.135808,0.342523,0.713281,0.132531,-0.408594, + 0.70583,0.060067,0.70583,0.657523,0.295922,-0.342477, + 0.937029,0.054036,0.345045,0.700484,0.295922,-0.414078, + 0.934884,0.086306,0.344301,0.706063,0.207062,-0.411687, + 0.70583,0.060067,0.70583,0.657523,0.295922,-0.342477, + 0.934884,0.086306,0.344301,0.706063,0.207062,-0.411687, + 0.703939,0.094548,0.703939,0.661906,0.207062,-0.338094, + 0.937029,0.054036,0.345045,0.700484,0.295922,-0.414078, + 0.998811,0.048741,0,0.714805,0.295922,-0.5, + 0.996862,0.079157,0,0.720781,0.207062,-0.5, + 0.996862,0.079157,0,0.720781,0.207062,-0.5, + 0.934884,0.086306,0.344301,0.706063,0.207062,-0.411687, + 0.937029,0.054036,0.345045,0.700484,0.295922,-0.414078, + 0.992308,0.12379,0,0.728516,0.132531,-0.5, + 0.929642,0.135808,0.342523,0.713281,0.132531,-0.408594, + 0.934884,0.086306,0.344301,0.706063,0.207062,-0.411687, + 0.992308,0.12379,0,0.728516,0.132531,-0.5, + 0.934884,0.086306,0.344301,0.706063,0.207062,-0.411687, + 0.996862,0.079157,0,0.720781,0.207062,-0.5, + 0.707107,-0.000155,0.707107,0.653656,0.494688,-0.346344, + 0.958364,-0.000151,0.285548,0.695563,0.494688,-0.416187, + 0.938064,0.027067,0.345404,0.696875,0.393625,-0.415625, + 0.707107,-0.000155,0.707107,0.653656,0.494688,-0.346344, + 0.938064,0.027067,0.345404,0.696875,0.393625,-0.415625, + 0.706741,0.032156,0.706741,0.654688,0.393625,-0.345313, + 0.958364,-0.000151,0.285548,0.695563,0.494688,-0.416187, + 1,-0.00015,0,0.709531,0.494688,-0.5, + 0.999748,0.022461,0,0.710938,0.393625,-0.5, + 0.999748,0.022461,0,0.710938,0.393625,-0.5, + 0.938064,0.027067,0.345404,0.696875,0.393625,-0.415625, + 0.958364,-0.000151,0.285548,0.695563,0.494688,-0.416187, + 0.998811,0.048741,0,0.714805,0.295922,-0.5, + 0.937029,0.054036,0.345045,0.700484,0.295922,-0.414078, + 0.938064,0.027067,0.345404,0.696875,0.393625,-0.415625, + 0.998811,0.048741,0,0.714805,0.295922,-0.5, + 0.938064,0.027067,0.345404,0.696875,0.393625,-0.415625, + 0.999748,0.022461,0,0.710938,0.393625,-0.5, + 0.937029,0.054036,0.345045,0.700484,0.295922,-0.414078, + 0.70583,0.060067,0.70583,0.657523,0.295922,-0.342477, + 0.706741,0.032156,0.706741,0.654688,0.393625,-0.345313, + 0.706741,0.032156,0.706741,0.654688,0.393625,-0.345313, + 0.938064,0.027067,0.345404,0.696875,0.393625,-0.415625, + 0.937029,0.054036,0.345045,0.700484,0.295922,-0.414078, + 0.707107,-0.000155,-0.707107,0.653656,0.494688,-0.653656, + 0.706741,0.032156,-0.706741,0.654688,0.393625,-0.654688, + 0.938064,0.027067,-0.345404,0.696875,0.393625,-0.584375, + 0.707107,-0.000155,-0.707107,0.653656,0.494688,-0.653656, + 0.938064,0.027067,-0.345404,0.696875,0.393625,-0.584375, + 0.958364,-0.000151,-0.285548,0.695563,0.494688,-0.583813, + 0.706741,0.032156,-0.706741,0.654688,0.393625,-0.654688, + 0.70583,0.060067,-0.70583,0.657523,0.295922,-0.657523, + 0.937029,0.054036,-0.345045,0.700484,0.295922,-0.585922, + 0.937029,0.054036,-0.345045,0.700484,0.295922,-0.585922, + 0.938064,0.027067,-0.345404,0.696875,0.393625,-0.584375, + 0.706741,0.032156,-0.706741,0.654688,0.393625,-0.654688, + 0.998811,0.048741,0,0.714805,0.295922,-0.5, + 0.999748,0.022461,0,0.710938,0.393625,-0.5, + 0.938064,0.027067,-0.345404,0.696875,0.393625,-0.584375, + 0.998811,0.048741,0,0.714805,0.295922,-0.5, + 0.938064,0.027067,-0.345404,0.696875,0.393625,-0.584375, + 0.937029,0.054036,-0.345045,0.700484,0.295922,-0.585922, + 0.999748,0.022461,0,0.710938,0.393625,-0.5, + 1,-0.00015,0,0.709531,0.494688,-0.5, + 0.958364,-0.000151,-0.285548,0.695563,0.494688,-0.583813, + 0.958364,-0.000151,-0.285548,0.695563,0.494688,-0.583813, + 0.938064,0.027067,-0.345404,0.696875,0.393625,-0.584375, + 0.999748,0.022461,0,0.710938,0.393625,-0.5, + 0.703939,0.094547,-0.703939,0.661906,0.207062,-0.661906, + 0.699155,0.149544,-0.699155,0.667578,0.132531,-0.667578, + 0.929642,0.135808,-0.342523,0.713281,0.132531,-0.591406, + 0.929642,0.135808,-0.342523,0.713281,0.132531,-0.591406, + 0.934884,0.086306,-0.344301,0.706063,0.207062,-0.588313, + 0.703939,0.094547,-0.703939,0.661906,0.207062,-0.661906, + 0.992308,0.12379,0,0.728516,0.132531,-0.5, + 0.996862,0.079157,0,0.720781,0.207062,-0.5, + 0.934884,0.086306,-0.344301,0.706063,0.207062,-0.588313, + 0.992308,0.12379,0,0.728516,0.132531,-0.5, + 0.934884,0.086306,-0.344301,0.706063,0.207062,-0.588313, + 0.929642,0.135808,-0.342523,0.713281,0.132531,-0.591406, + 0.996862,0.079157,0,0.720781,0.207062,-0.5, + 0.998811,0.048741,0,0.714805,0.295922,-0.5, + 0.937029,0.054036,-0.345045,0.700484,0.295922,-0.585922, + 0.937029,0.054036,-0.345045,0.700484,0.295922,-0.585922, + 0.934884,0.086306,-0.344301,0.706063,0.207062,-0.588313, + 0.996862,0.079157,0,0.720781,0.207062,-0.5, + 0.70583,0.060067,-0.70583,0.657523,0.295922,-0.657523, + 0.703939,0.094547,-0.703939,0.661906,0.207062,-0.661906, + 0.934884,0.086306,-0.344301,0.706063,0.207062,-0.588313, + 0.70583,0.060067,-0.70583,0.657523,0.295922,-0.657523, + 0.934884,0.086306,-0.344301,0.706063,0.207062,-0.588313, + 0.937029,0.054036,-0.345045,0.700484,0.295922,-0.585922, + 0.699156,0.149544,0.699155,0.667578,0.132531,-0.332422, + 0.929642,0.135808,0.342523,0.713281,0.132531,-0.408594, + 0.919364,0.107435,0.378454,0.721812,0.077813,-0.404938, + 0.699156,0.149544,0.699155,0.667578,0.132531,-0.332422, + 0.919364,0.107435,0.378454,0.721812,0.077813,-0.404938, + 0.705578,0.065727,0.705578,0.674281,0.077813,-0.325719, + 0.929642,0.135808,0.342523,0.713281,0.132531,-0.408594, + 0.992308,0.12379,0,0.728516,0.132531,-0.5, + 0.995686,0.092789,0,0.737656,0.077813,-0.5, + 0.995686,0.092789,0,0.737656,0.077813,-0.5, + 0.919364,0.107435,0.378454,0.721812,0.077813,-0.404938, + 0.929642,0.135808,0.342523,0.713281,0.132531,-0.408594, + 0.995686,0.092789,0,0.737656,0.077813,-0.5, + 0.914719,-0.404091,0,0.738539,0.039819,-0.5, + 0.892993,-0.274252,0.35686,0.722453,0.040123,-0.404859, + 0.892993,-0.274252,0.35686,0.722453,0.040123,-0.404859, + 0.919364,0.107435,0.378454,0.721812,0.077813,-0.404938, + 0.995686,0.092789,0,0.737656,0.077813,-0.5, + 0.892993,-0.274252,0.35686,0.722453,0.040123,-0.404859, + 0.663755,-0.344758,0.663755,0.674539,0.040427,-0.325461, + 0.705578,0.065727,0.705578,0.674281,0.077813,-0.325719, + 0.705578,0.065727,0.705578,0.674281,0.077813,-0.325719, + 0.919364,0.107435,0.378454,0.721812,0.077813,-0.404938, + 0.892993,-0.274252,0.35686,0.722453,0.040123,-0.404859, + 0.699155,0.149544,-0.699155,0.667578,0.132531,-0.667578, + 0.705578,0.065727,-0.705578,0.674281,0.077813,-0.674281, + 0.919364,0.107435,-0.378454,0.721812,0.077813,-0.595062, + 0.699155,0.149544,-0.699155,0.667578,0.132531,-0.667578, + 0.919364,0.107435,-0.378454,0.721812,0.077813,-0.595062, + 0.929642,0.135808,-0.342523,0.713281,0.132531,-0.591406, + 0.705578,0.065727,-0.705578,0.674281,0.077813,-0.674281, + 0.663755,-0.344758,-0.663755,0.674539,0.040427,-0.674539, + 0.892994,-0.274252,-0.356859,0.722453,0.040123,-0.595141, + 0.892994,-0.274252,-0.356859,0.722453,0.040123,-0.595141, + 0.919364,0.107435,-0.378454,0.721812,0.077813,-0.595062, + 0.705578,0.065727,-0.705578,0.674281,0.077813,-0.674281, + 0.892994,-0.274252,-0.356859,0.722453,0.040123,-0.595141, + 0.914719,-0.404091,0,0.738539,0.039819,-0.5, + 0.995686,0.092789,0,0.737656,0.077813,-0.5, + 0.995686,0.092789,0,0.737656,0.077813,-0.5, + 0.919364,0.107435,-0.378454,0.721812,0.077813,-0.595062, + 0.892994,-0.274252,-0.356859,0.722453,0.040123,-0.595141, + 0.995686,0.092789,0,0.737656,0.077813,-0.5, + 0.992308,0.12379,0,0.728516,0.132531,-0.5, + 0.929642,0.135808,-0.342523,0.713281,0.132531,-0.591406, + 0.929642,0.135808,-0.342523,0.713281,0.132531,-0.591406, + 0.919364,0.107435,-0.378454,0.721812,0.077813,-0.595062, + 0.995686,0.092789,0,0.737656,0.077813,-0.5, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.517064,-0.835523,-0.185868,0.706,0.016681,-0.5875, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.517064,-0.835523,-0.185868,0.706,0.016681,-0.5875, + 0.452944,-0.767908,-0.452945,0.660875,0.017896,-0.660875, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.596646,-0.802505,0,0.7215,0.015465,-0.5, + 0.517064,-0.835523,-0.185868,0.706,0.016681,-0.5875, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.517064,-0.835523,-0.185868,0.706,0.016681,-0.5875, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.914719,-0.404091,0,0.738539,0.039819,-0.5, + 0.892994,-0.274252,-0.356859,0.722453,0.040123,-0.595141, + 0.517064,-0.835523,-0.185868,0.706,0.016681,-0.5875, + 0.914719,-0.404091,0,0.738539,0.039819,-0.5, + 0.517064,-0.835523,-0.185868,0.706,0.016681,-0.5875, + 0.596646,-0.802505,0,0.7215,0.015465,-0.5, + 0.892994,-0.274252,-0.356859,0.722453,0.040123,-0.595141, + 0.663755,-0.344758,-0.663755,0.674539,0.040427,-0.674539, + 0.452944,-0.767908,-0.452945,0.660875,0.017896,-0.660875, + 0.452944,-0.767908,-0.452945,0.660875,0.017896,-0.660875, + 0.517064,-0.835523,-0.185868,0.706,0.016681,-0.5875, + 0.892994,-0.274252,-0.356859,0.722453,0.040123,-0.595141, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.452945,-0.767908,0.452945,0.660875,0.017896,-0.339125, + 0.517064,-0.835523,0.185868,0.706,0.016681,-0.4125, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.517064,-0.835523,0.185868,0.706,0.016681,-0.4125, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0.452945,-0.767908,0.452945,0.660875,0.017896,-0.339125, + 0.663755,-0.344758,0.663755,0.674539,0.040427,-0.325461, + 0.892993,-0.274252,0.35686,0.722453,0.040123,-0.404859, + 0.892993,-0.274252,0.35686,0.722453,0.040123,-0.404859, + 0.517064,-0.835523,0.185868,0.706,0.016681,-0.4125, + 0.452945,-0.767908,0.452945,0.660875,0.017896,-0.339125, + 0.914719,-0.404091,0,0.738539,0.039819,-0.5, + 0.596646,-0.802505,0,0.7215,0.015465,-0.5, + 0.517064,-0.835523,0.185868,0.706,0.016681,-0.4125, + 0.914719,-0.404091,0,0.738539,0.039819,-0.5, + 0.517064,-0.835523,0.185868,0.706,0.016681,-0.4125, + 0.892993,-0.274252,0.35686,0.722453,0.040123,-0.404859, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0.517064,-0.835523,0.185868,0.706,0.016681,-0.4125, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.517064,-0.835523,0.185868,0.706,0.016681,-0.4125, + 0.596646,-0.802505,0,0.7215,0.015465,-0.5, + 0.699155,0.149544,-0.699155,0.667578,0.132531,-0.667578, + 0.342523,0.135808,-0.929642,0.591406,0.132531,-0.713281, + 0.378454,0.107435,-0.919364,0.595062,0.077813,-0.721812, + 0.699155,0.149544,-0.699155,0.667578,0.132531,-0.667578, + 0.378454,0.107435,-0.919364,0.595062,0.077813,-0.721812, + 0.705578,0.065727,-0.705578,0.674281,0.077813,-0.674281, + 0.342523,0.135808,-0.929642,0.591406,0.132531,-0.713281, + 0,0.12379,-0.992308,0.5,0.132531,-0.728516, + 0,0.092789,-0.995686,0.5,0.077813,-0.737656, + 0,0.092789,-0.995686,0.5,0.077813,-0.737656, + 0.378454,0.107435,-0.919364,0.595062,0.077813,-0.721812, + 0.342523,0.135808,-0.929642,0.591406,0.132531,-0.713281, + 0,0.092789,-0.995686,0.5,0.077813,-0.737656, + 0,-0.404091,-0.914719,0.5,0.039819,-0.738539, + 0.356859,-0.274252,-0.892994,0.595141,0.040123,-0.722453, + 0.356859,-0.274252,-0.892994,0.595141,0.040123,-0.722453, + 0.378454,0.107435,-0.919364,0.595062,0.077813,-0.721812, + 0,0.092789,-0.995686,0.5,0.077813,-0.737656, + 0.356859,-0.274252,-0.892994,0.595141,0.040123,-0.722453, + 0.663755,-0.344758,-0.663755,0.674539,0.040427,-0.674539, + 0.705578,0.065727,-0.705578,0.674281,0.077813,-0.674281, + 0.705578,0.065727,-0.705578,0.674281,0.077813,-0.674281, + 0.378454,0.107435,-0.919364,0.595062,0.077813,-0.721812, + 0.356859,-0.274252,-0.892994,0.595141,0.040123,-0.722453, + -0.699155,0.149544,-0.699156,0.332422,0.132531,-0.667578, + -0.705578,0.065727,-0.705578,0.325719,0.077813,-0.674281, + -0.378454,0.107435,-0.919364,0.404938,0.077813,-0.721812, + -0.699155,0.149544,-0.699156,0.332422,0.132531,-0.667578, + -0.378454,0.107435,-0.919364,0.404938,0.077813,-0.721812, + -0.342523,0.135808,-0.929642,0.408594,0.132531,-0.713281, + -0.705578,0.065727,-0.705578,0.325719,0.077813,-0.674281, + -0.663755,-0.344758,-0.663755,0.325461,0.040427,-0.674539, + -0.35686,-0.274252,-0.892993,0.404859,0.040123,-0.722453, + -0.35686,-0.274252,-0.892993,0.404859,0.040123,-0.722453, + -0.378454,0.107435,-0.919364,0.404938,0.077813,-0.721812, + -0.705578,0.065727,-0.705578,0.325719,0.077813,-0.674281, + -0.35686,-0.274252,-0.892993,0.404859,0.040123,-0.722453, + 0,-0.404091,-0.914719,0.5,0.039819,-0.738539, + 0,0.092789,-0.995686,0.5,0.077813,-0.737656, + 0,0.092789,-0.995686,0.5,0.077813,-0.737656, + -0.378454,0.107435,-0.919364,0.404938,0.077813,-0.721812, + -0.35686,-0.274252,-0.892993,0.404859,0.040123,-0.722453, + 0,0.092789,-0.995686,0.5,0.077813,-0.737656, + 0,0.12379,-0.992308,0.5,0.132531,-0.728516, + -0.342523,0.135808,-0.929642,0.408594,0.132531,-0.713281, + -0.342523,0.135808,-0.929642,0.408594,0.132531,-0.713281, + -0.378454,0.107435,-0.919364,0.404938,0.077813,-0.721812, + 0,0.092789,-0.995686,0.5,0.077813,-0.737656, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.185868,-0.835523,-0.517064,0.4125,0.016681,-0.706, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.185868,-0.835523,-0.517064,0.4125,0.016681,-0.706, + -0.452945,-0.767908,-0.452945,0.339125,0.017896,-0.660875, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + 0,-0.802505,-0.596646,0.5,0.015465,-0.7215, + -0.185868,-0.835523,-0.517064,0.4125,0.016681,-0.706, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + -0.185868,-0.835523,-0.517064,0.4125,0.016681,-0.706, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + 0,-0.404091,-0.914719,0.5,0.039819,-0.738539, + -0.35686,-0.274252,-0.892993,0.404859,0.040123,-0.722453, + -0.185868,-0.835523,-0.517064,0.4125,0.016681,-0.706, + 0,-0.404091,-0.914719,0.5,0.039819,-0.738539, + -0.185868,-0.835523,-0.517064,0.4125,0.016681,-0.706, + 0,-0.802505,-0.596646,0.5,0.015465,-0.7215, + -0.35686,-0.274252,-0.892993,0.404859,0.040123,-0.722453, + -0.663755,-0.344758,-0.663755,0.325461,0.040427,-0.674539, + -0.452945,-0.767908,-0.452945,0.339125,0.017896,-0.660875, + -0.452945,-0.767908,-0.452945,0.339125,0.017896,-0.660875, + -0.185868,-0.835523,-0.517064,0.4125,0.016681,-0.706, + -0.35686,-0.274252,-0.892993,0.404859,0.040123,-0.722453, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.452944,-0.767908,-0.452945,0.660875,0.017896,-0.660875, + 0.185868,-0.835523,-0.517064,0.5875,0.016681,-0.706, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.185868,-0.835523,-0.517064,0.5875,0.016681,-0.706, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0.452944,-0.767908,-0.452945,0.660875,0.017896,-0.660875, + 0.663755,-0.344758,-0.663755,0.674539,0.040427,-0.674539, + 0.356859,-0.274252,-0.892994,0.595141,0.040123,-0.722453, + 0.356859,-0.274252,-0.892994,0.595141,0.040123,-0.722453, + 0.185868,-0.835523,-0.517064,0.5875,0.016681,-0.706, + 0.452944,-0.767908,-0.452945,0.660875,0.017896,-0.660875, + 0,-0.404091,-0.914719,0.5,0.039819,-0.738539, + 0,-0.802505,-0.596646,0.5,0.015465,-0.7215, + 0.185868,-0.835523,-0.517064,0.5875,0.016681,-0.706, + 0,-0.404091,-0.914719,0.5,0.039819,-0.738539, + 0.185868,-0.835523,-0.517064,0.5875,0.016681,-0.706, + 0.356859,-0.274252,-0.892994,0.595141,0.040123,-0.722453, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0.185868,-0.835523,-0.517064,0.5875,0.016681,-0.706, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + 0.185868,-0.835523,-0.517064,0.5875,0.016681,-0.706, + 0,-0.802505,-0.596646,0.5,0.015465,-0.7215, + -0.699155,0.149544,-0.699156,0.332422,0.132531,-0.667578, + -0.929642,0.135808,-0.342523,0.286719,0.132531,-0.591406, + -0.919364,0.107436,-0.378454,0.278187,0.077813,-0.595062, + -0.699155,0.149544,-0.699156,0.332422,0.132531,-0.667578, + -0.919364,0.107436,-0.378454,0.278187,0.077813,-0.595062, + -0.705578,0.065727,-0.705578,0.325719,0.077813,-0.674281, + -0.929642,0.135808,-0.342523,0.286719,0.132531,-0.591406, + -0.992308,0.12379,0,0.271484,0.132531,-0.5, + -0.995686,0.092789,0,0.262344,0.077813,-0.5, + -0.995686,0.092789,0,0.262344,0.077813,-0.5, + -0.919364,0.107436,-0.378454,0.278187,0.077813,-0.595062, + -0.929642,0.135808,-0.342523,0.286719,0.132531,-0.591406, + -0.995686,0.092789,0,0.262344,0.077813,-0.5, + -0.914719,-0.404091,0,0.261461,0.039819,-0.5, + -0.892993,-0.274251,-0.35686,0.277547,0.040123,-0.595141, + -0.892993,-0.274251,-0.35686,0.277547,0.040123,-0.595141, + -0.919364,0.107436,-0.378454,0.278187,0.077813,-0.595062, + -0.995686,0.092789,0,0.262344,0.077813,-0.5, + -0.892993,-0.274251,-0.35686,0.277547,0.040123,-0.595141, + -0.663755,-0.344758,-0.663755,0.325461,0.040427,-0.674539, + -0.705578,0.065727,-0.705578,0.325719,0.077813,-0.674281, + -0.705578,0.065727,-0.705578,0.325719,0.077813,-0.674281, + -0.919364,0.107436,-0.378454,0.278187,0.077813,-0.595062, + -0.892993,-0.274251,-0.35686,0.277547,0.040123,-0.595141, + -0.699155,0.149545,0.699155,0.332422,0.132531,-0.332422, + -0.705578,0.065726,0.705578,0.325719,0.077813,-0.325719, + -0.919364,0.107436,0.378454,0.278187,0.077813,-0.404938, + -0.699155,0.149545,0.699155,0.332422,0.132531,-0.332422, + -0.919364,0.107436,0.378454,0.278187,0.077813,-0.404938, + -0.929642,0.135808,0.342523,0.286719,0.132531,-0.408594, + -0.705578,0.065726,0.705578,0.325719,0.077813,-0.325719, + -0.663755,-0.344758,0.663755,0.325461,0.040427,-0.325461, + -0.892993,-0.274251,0.35686,0.277547,0.040123,-0.404859, + -0.892993,-0.274251,0.35686,0.277547,0.040123,-0.404859, + -0.919364,0.107436,0.378454,0.278187,0.077813,-0.404938, + -0.705578,0.065726,0.705578,0.325719,0.077813,-0.325719, + -0.892993,-0.274251,0.35686,0.277547,0.040123,-0.404859, + -0.914719,-0.404091,0,0.261461,0.039819,-0.5, + -0.995686,0.092789,0,0.262344,0.077813,-0.5, + -0.995686,0.092789,0,0.262344,0.077813,-0.5, + -0.919364,0.107436,0.378454,0.278187,0.077813,-0.404938, + -0.892993,-0.274251,0.35686,0.277547,0.040123,-0.404859, + -0.995686,0.092789,0,0.262344,0.077813,-0.5, + -0.992308,0.12379,0,0.271484,0.132531,-0.5, + -0.929642,0.135808,0.342523,0.286719,0.132531,-0.408594, + -0.929642,0.135808,0.342523,0.286719,0.132531,-0.408594, + -0.919364,0.107436,0.378454,0.278187,0.077813,-0.404938, + -0.995686,0.092789,0,0.262344,0.077813,-0.5, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.517064,-0.835523,0.185867,0.294,0.016681,-0.4125, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.517064,-0.835523,0.185867,0.294,0.016681,-0.4125, + -0.452945,-0.767908,0.452945,0.339125,0.017896,-0.339125, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.596646,-0.802505,0,0.2785,0.015465,-0.5, + -0.517064,-0.835523,0.185867,0.294,0.016681,-0.4125, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.517064,-0.835523,0.185867,0.294,0.016681,-0.4125, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.914719,-0.404091,0,0.261461,0.039819,-0.5, + -0.892993,-0.274251,0.35686,0.277547,0.040123,-0.404859, + -0.517064,-0.835523,0.185867,0.294,0.016681,-0.4125, + -0.914719,-0.404091,0,0.261461,0.039819,-0.5, + -0.517064,-0.835523,0.185867,0.294,0.016681,-0.4125, + -0.596646,-0.802505,0,0.2785,0.015465,-0.5, + -0.892993,-0.274251,0.35686,0.277547,0.040123,-0.404859, + -0.663755,-0.344758,0.663755,0.325461,0.040427,-0.325461, + -0.452945,-0.767908,0.452945,0.339125,0.017896,-0.339125, + -0.452945,-0.767908,0.452945,0.339125,0.017896,-0.339125, + -0.517064,-0.835523,0.185867,0.294,0.016681,-0.4125, + -0.892993,-0.274251,0.35686,0.277547,0.040123,-0.404859, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.452945,-0.767908,-0.452945,0.339125,0.017896,-0.660875, + -0.517064,-0.835523,-0.185868,0.294,0.016681,-0.5875, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.517064,-0.835523,-0.185868,0.294,0.016681,-0.5875, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + -0.452945,-0.767908,-0.452945,0.339125,0.017896,-0.660875, + -0.663755,-0.344758,-0.663755,0.325461,0.040427,-0.674539, + -0.892993,-0.274251,-0.35686,0.277547,0.040123,-0.595141, + -0.892993,-0.274251,-0.35686,0.277547,0.040123,-0.595141, + -0.517064,-0.835523,-0.185868,0.294,0.016681,-0.5875, + -0.452945,-0.767908,-0.452945,0.339125,0.017896,-0.660875, + -0.914719,-0.404091,0,0.261461,0.039819,-0.5, + -0.596646,-0.802505,0,0.2785,0.015465,-0.5, + -0.517064,-0.835523,-0.185868,0.294,0.016681,-0.5875, + -0.914719,-0.404091,0,0.261461,0.039819,-0.5, + -0.517064,-0.835523,-0.185868,0.294,0.016681,-0.5875, + -0.892993,-0.274251,-0.35686,0.277547,0.040123,-0.595141, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + -0.517064,-0.835523,-0.185868,0.294,0.016681,-0.5875, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.517064,-0.835523,-0.185868,0.294,0.016681,-0.5875, + -0.596646,-0.802505,0,0.2785,0.015465,-0.5, + -0.699155,0.149545,0.699155,0.332422,0.132531,-0.332422, + -0.342523,0.135808,0.929642,0.408594,0.132531,-0.286719, + -0.378454,0.107436,0.919364,0.404938,0.077813,-0.278187, + -0.699155,0.149545,0.699155,0.332422,0.132531,-0.332422, + -0.378454,0.107436,0.919364,0.404938,0.077813,-0.278187, + -0.705578,0.065726,0.705578,0.325719,0.077813,-0.325719, + -0.342523,0.135808,0.929642,0.408594,0.132531,-0.286719, + 0,0.12379,0.992308,0.5,0.132531,-0.271484, + 0,0.092789,0.995686,0.5,0.077813,-0.262344, + 0,0.092789,0.995686,0.5,0.077813,-0.262344, + -0.378454,0.107436,0.919364,0.404938,0.077813,-0.278187, + -0.342523,0.135808,0.929642,0.408594,0.132531,-0.286719, + 0,0.092789,0.995686,0.5,0.077813,-0.262344, + 0,-0.404091,0.914719,0.5,0.039819,-0.261461, + -0.35686,-0.274251,0.892993,0.404859,0.040123,-0.277547, + -0.35686,-0.274251,0.892993,0.404859,0.040123,-0.277547, + -0.378454,0.107436,0.919364,0.404938,0.077813,-0.278187, + 0,0.092789,0.995686,0.5,0.077813,-0.262344, + -0.35686,-0.274251,0.892993,0.404859,0.040123,-0.277547, + -0.663755,-0.344758,0.663755,0.325461,0.040427,-0.325461, + -0.705578,0.065726,0.705578,0.325719,0.077813,-0.325719, + -0.705578,0.065726,0.705578,0.325719,0.077813,-0.325719, + -0.378454,0.107436,0.919364,0.404938,0.077813,-0.278187, + -0.35686,-0.274251,0.892993,0.404859,0.040123,-0.277547, + 0.699156,0.149544,0.699155,0.667578,0.132531,-0.332422, + 0.705578,0.065727,0.705578,0.674281,0.077813,-0.325719, + 0.378454,0.107436,0.919364,0.595062,0.077813,-0.278187, + 0.699156,0.149544,0.699155,0.667578,0.132531,-0.332422, + 0.378454,0.107436,0.919364,0.595062,0.077813,-0.278187, + 0.342523,0.135808,0.929642,0.591406,0.132531,-0.286719, + 0.705578,0.065727,0.705578,0.674281,0.077813,-0.325719, + 0.663755,-0.344758,0.663755,0.674539,0.040427,-0.325461, + 0.35686,-0.274251,0.892993,0.595141,0.040123,-0.277547, + 0.35686,-0.274251,0.892993,0.595141,0.040123,-0.277547, + 0.378454,0.107436,0.919364,0.595062,0.077813,-0.278187, + 0.705578,0.065727,0.705578,0.674281,0.077813,-0.325719, + 0.35686,-0.274251,0.892993,0.595141,0.040123,-0.277547, + 0,-0.404091,0.914719,0.5,0.039819,-0.261461, + 0,0.092789,0.995686,0.5,0.077813,-0.262344, + 0,0.092789,0.995686,0.5,0.077813,-0.262344, + 0.378454,0.107436,0.919364,0.595062,0.077813,-0.278187, + 0.35686,-0.274251,0.892993,0.595141,0.040123,-0.277547, + 0,0.092789,0.995686,0.5,0.077813,-0.262344, + 0,0.12379,0.992308,0.5,0.132531,-0.271484, + 0.342523,0.135808,0.929642,0.591406,0.132531,-0.286719, + 0.342523,0.135808,0.929642,0.591406,0.132531,-0.286719, + 0.378454,0.107436,0.919364,0.595062,0.077813,-0.278187, + 0,0.092789,0.995686,0.5,0.077813,-0.262344, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0.185868,-0.835523,0.517064,0.5875,0.016681,-0.294, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.185868,-0.835523,0.517064,0.5875,0.016681,-0.294, + 0.452945,-0.767908,0.452945,0.660875,0.017896,-0.339125, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + 0,-0.802505,0.596646,0.5,0.015465,-0.2785, + 0.185868,-0.835523,0.517064,0.5875,0.016681,-0.294, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + 0.185868,-0.835523,0.517064,0.5875,0.016681,-0.294, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0,-0.404091,0.914719,0.5,0.039819,-0.261461, + 0.35686,-0.274251,0.892993,0.595141,0.040123,-0.277547, + 0.185868,-0.835523,0.517064,0.5875,0.016681,-0.294, + 0,-0.404091,0.914719,0.5,0.039819,-0.261461, + 0.185868,-0.835523,0.517064,0.5875,0.016681,-0.294, + 0,-0.802505,0.596646,0.5,0.015465,-0.2785, + 0.35686,-0.274251,0.892993,0.595141,0.040123,-0.277547, + 0.663755,-0.344758,0.663755,0.674539,0.040427,-0.325461, + 0.452945,-0.767908,0.452945,0.660875,0.017896,-0.339125, + 0.452945,-0.767908,0.452945,0.660875,0.017896,-0.339125, + 0.185868,-0.835523,0.517064,0.5875,0.016681,-0.294, + 0.35686,-0.274251,0.892993,0.595141,0.040123,-0.277547, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.452945,-0.767908,0.452945,0.339125,0.017896,-0.339125, + -0.185867,-0.835523,0.517064,0.4125,0.016681,-0.294, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.185867,-0.835523,0.517064,0.4125,0.016681,-0.294, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + -0.452945,-0.767908,0.452945,0.339125,0.017896,-0.339125, + -0.663755,-0.344758,0.663755,0.325461,0.040427,-0.325461, + -0.35686,-0.274251,0.892993,0.404859,0.040123,-0.277547, + -0.35686,-0.274251,0.892993,0.404859,0.040123,-0.277547, + -0.185867,-0.835523,0.517064,0.4125,0.016681,-0.294, + -0.452945,-0.767908,0.452945,0.339125,0.017896,-0.339125, + 0,-0.404091,0.914719,0.5,0.039819,-0.261461, + 0,-0.802505,0.596646,0.5,0.015465,-0.2785, + -0.185867,-0.835523,0.517064,0.4125,0.016681,-0.294, + 0,-0.404091,0.914719,0.5,0.039819,-0.261461, + -0.185867,-0.835523,0.517064,0.4125,0.016681,-0.294, + -0.35686,-0.274251,0.892993,0.404859,0.040123,-0.277547, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + -0.185867,-0.835523,0.517064,0.4125,0.016681,-0.294, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + -0.185867,-0.835523,0.517064,0.4125,0.016681,-0.294, + 0,-0.802505,0.596646,0.5,0.015465,-0.2785, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0,-1,0,0.5,-0.010924,-0.5, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0,-1,0,0.5,-0.010924,-0.5, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + 0,-1,0,0.5,-0.010924,-0.5, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + 0,-1,0,0.5,-0.010924,-0.5, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + 0,-1,0,0.5,-0.010924,-0.5, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + 0,-1,0,0.5,-0.010924,-0.5, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0,-1,0,0.5,-0.010924,-0.5, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0,-1,0,0.5,-0.010924,-0.5, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1728,data,NULL}; +const struct gllist *s1_1=&frame; diff --git a/hacks/glx/s1_2.c b/hacks/glx/s1_2.c new file mode 100644 index 0000000..5f494de --- /dev/null +++ b/hacks/glx/s1_2.c @@ -0,0 +1,1733 @@ +#include "gllist.h" +static const float data[]={ + 0.744225,-0.02143,-0.667585,0.865458,0.513412,-0.690781, + 0.945978,-0.110612,-0.304781,0.91525,0.49905,-0.604062, + 0.919806,-0.190639,-0.342948,0.925,0.532253,-0.600125, + 0.744225,-0.02143,-0.667585,0.865458,0.513412,-0.690781, + 0.919806,-0.190639,-0.342948,0.925,0.532253,-0.600125, + 0.749601,-0.05627,-0.659493,0.877427,0.54752,-0.683563, + 0.980435,-0.196846,0,0.931847,0.494263,-0.5, + 0.981457,-0.191681,0,0.940858,0.527164,-0.5, + 0.919806,-0.190639,-0.342948,0.925,0.532253,-0.600125, + 0.980435,-0.196846,0,0.931847,0.494263,-0.5, + 0.919806,-0.190639,-0.342948,0.925,0.532253,-0.600125, + 0.945978,-0.110612,-0.304781,0.91525,0.49905,-0.604062, + 0.981457,-0.191681,0,0.940858,0.527164,-0.5, + 0.973132,0.23025,0,0.945338,0.554869,-0.5, + 0.932108,0.142863,-0.332815,0.92981,0.559801,-0.596406, + 0.932108,0.142863,-0.332815,0.92981,0.559801,-0.596406, + 0.919806,-0.190639,-0.342948,0.925,0.532253,-0.600125, + 0.981457,-0.191681,0,0.940858,0.527164,-0.5, + 0.932108,0.142863,-0.332815,0.92981,0.559801,-0.596406, + 0.692376,0.299844,-0.656284,0.88375,0.575062,-0.676859, + 0.749601,-0.05627,-0.659493,0.877427,0.54752,-0.683563, + 0.749601,-0.05627,-0.659493,0.877427,0.54752,-0.683563, + 0.919806,-0.190639,-0.342948,0.925,0.532253,-0.600125, + 0.932108,0.142863,-0.332815,0.92981,0.559801,-0.596406, + 0.744225,-0.02143,0.667585,0.865458,0.513412,-0.309219, + 0.749602,-0.05627,0.659493,0.877427,0.54752,-0.316437, + 0.919806,-0.190639,0.342948,0.925,0.532253,-0.399875, + 0.744225,-0.02143,0.667585,0.865458,0.513412,-0.309219, + 0.919806,-0.190639,0.342948,0.925,0.532253,-0.399875, + 0.945978,-0.110612,0.304781,0.91525,0.49905,-0.395938, + 0.749602,-0.05627,0.659493,0.877427,0.54752,-0.316437, + 0.692376,0.299843,0.656284,0.88375,0.575062,-0.323141, + 0.932108,0.142863,0.332815,0.92981,0.559801,-0.403594, + 0.932108,0.142863,0.332815,0.92981,0.559801,-0.403594, + 0.919806,-0.190639,0.342948,0.925,0.532253,-0.399875, + 0.749602,-0.05627,0.659493,0.877427,0.54752,-0.316437, + 0.932108,0.142863,0.332815,0.92981,0.559801,-0.403594, + 0.973132,0.23025,0,0.945338,0.554869,-0.5, + 0.981457,-0.191681,0,0.940858,0.527164,-0.5, + 0.981457,-0.191681,0,0.940858,0.527164,-0.5, + 0.919806,-0.190639,0.342948,0.925,0.532253,-0.399875, + 0.932108,0.142863,0.332815,0.92981,0.559801,-0.403594, + 0.980435,-0.196846,0,0.931847,0.494263,-0.5, + 0.945978,-0.110612,0.304781,0.91525,0.49905,-0.395938, + 0.919806,-0.190639,0.342948,0.925,0.532253,-0.399875, + 0.980435,-0.196846,0,0.931847,0.494263,-0.5, + 0.919806,-0.190639,0.342948,0.925,0.532253,-0.399875, + 0.981457,-0.191681,0,0.940858,0.527164,-0.5, + 0.503147,0.845347,0.179535,0.858509,0.615264,-0.361333, + 0.496158,0.862422,0.100278,0.884513,0.611054,-0.4175, + 0.729041,0.662418,0.172342,0.919197,0.584697,-0.4125, + 0.503147,0.845347,0.179535,0.858509,0.615264,-0.361333, + 0.729041,0.662418,0.172342,0.919197,0.584697,-0.4125, + 0.634483,0.691277,0.345786,0.876135,0.59824,-0.339125, + 0.546916,0.837188,0,0.897467,0.608935,-0.5, + 0.788799,0.614652,0,0.934249,0.5808,-0.5, + 0.729041,0.662418,0.172342,0.919197,0.584697,-0.4125, + 0.546916,0.837188,0,0.897467,0.608935,-0.5, + 0.729041,0.662418,0.172342,0.919197,0.584697,-0.4125, + 0.496158,0.862422,0.100278,0.884513,0.611054,-0.4175, + 0.973132,0.23025,0,0.945338,0.554869,-0.5, + 0.932108,0.142863,0.332815,0.92981,0.559801,-0.403594, + 0.729041,0.662418,0.172342,0.919197,0.584697,-0.4125, + 0.973132,0.23025,0,0.945338,0.554869,-0.5, + 0.729041,0.662418,0.172342,0.919197,0.584697,-0.4125, + 0.788799,0.614652,0,0.934249,0.5808,-0.5, + 0.932108,0.142863,0.332815,0.92981,0.559801,-0.403594, + 0.692376,0.299843,0.656284,0.88375,0.575062,-0.323141, + 0.634483,0.691277,0.345786,0.876135,0.59824,-0.339125, + 0.634483,0.691277,0.345786,0.876135,0.59824,-0.339125, + 0.729041,0.662418,0.172342,0.919197,0.584697,-0.4125, + 0.932108,0.142863,0.332815,0.92981,0.559801,-0.403594, + 0.503147,0.845347,-0.179534,0.858509,0.615264,-0.638667, + 0.634482,0.691277,-0.345786,0.876135,0.59824,-0.660875, + 0.729041,0.662418,-0.172342,0.919197,0.584697,-0.5875, + 0.503147,0.845347,-0.179534,0.858509,0.615264,-0.638667, + 0.729041,0.662418,-0.172342,0.919197,0.584697,-0.5875, + 0.496158,0.862422,-0.100277,0.884513,0.611054,-0.5825, + 0.634482,0.691277,-0.345786,0.876135,0.59824,-0.660875, + 0.692376,0.299844,-0.656284,0.88375,0.575062,-0.676859, + 0.932108,0.142863,-0.332815,0.92981,0.559801,-0.596406, + 0.932108,0.142863,-0.332815,0.92981,0.559801,-0.596406, + 0.729041,0.662418,-0.172342,0.919197,0.584697,-0.5875, + 0.634482,0.691277,-0.345786,0.876135,0.59824,-0.660875, + 0.973132,0.23025,0,0.945338,0.554869,-0.5, + 0.788799,0.614652,0,0.934249,0.5808,-0.5, + 0.729041,0.662418,-0.172342,0.919197,0.584697,-0.5875, + 0.973132,0.23025,0,0.945338,0.554869,-0.5, + 0.729041,0.662418,-0.172342,0.919197,0.584697,-0.5875, + 0.932108,0.142863,-0.332815,0.92981,0.559801,-0.596406, + 0.546916,0.837188,0,0.897467,0.608935,-0.5, + 0.496158,0.862422,-0.100277,0.884513,0.611054,-0.5825, + 0.729041,0.662418,-0.172342,0.919197,0.584697,-0.5875, + 0.546916,0.837188,0,0.897467,0.608935,-0.5, + 0.729041,0.662418,-0.172342,0.919197,0.584697,-0.5875, + 0.788799,0.614652,0,0.934249,0.5808,-0.5, + 0.744225,-0.02143,0.667585,0.865458,0.513412,-0.309219, + 0.395884,0.173928,0.901679,0.782472,0.537348,-0.257187, + 0.413121,0.093331,0.905881,0.798138,0.572966,-0.266375, + 0.744225,-0.02143,0.667585,0.865458,0.513412,-0.309219, + 0.413121,0.093331,0.905881,0.798138,0.572966,-0.266375, + 0.749602,-0.05627,0.659493,0.877427,0.54752,-0.316437, + 0.395884,0.173928,0.901679,0.782472,0.537348,-0.257187, + 0.088734,0.313595,0.945402,0.682889,0.566071,-0.239844, + 0.075758,0.234707,0.96911,0.702992,0.603501,-0.249687, + 0.075758,0.234707,0.96911,0.702992,0.603501,-0.249687, + 0.413121,0.093331,0.905881,0.798138,0.572966,-0.266375, + 0.395884,0.173928,0.901679,0.782472,0.537348,-0.257187, + 0.190084,0.486023,0.853024,0.716506,0.632271,-0.258297, + 0.446948,0.373871,0.812686,0.80768,0.601112,-0.274594, + 0.413121,0.093331,0.905881,0.798138,0.572966,-0.266375, + 0.190084,0.486023,0.853024,0.716506,0.632271,-0.258297, + 0.413121,0.093331,0.905881,0.798138,0.572966,-0.266375, + 0.075758,0.234707,0.96911,0.702992,0.603501,-0.249687, + 0.692376,0.299843,0.656284,0.88375,0.575062,-0.323141, + 0.749602,-0.05627,0.659493,0.877427,0.54752,-0.316437, + 0.413121,0.093331,0.905881,0.798138,0.572966,-0.266375, + 0.692376,0.299843,0.656284,0.88375,0.575062,-0.323141, + 0.413121,0.093331,0.905881,0.798138,0.572966,-0.266375, + 0.446948,0.373871,0.812686,0.80768,0.601112,-0.274594, + -0.208655,0.445101,0.870832,0.583305,0.594795,-0.257187, + -0.468298,0.578298,0.668033,0.500319,0.618731,-0.309219, + -0.541739,0.509206,0.668752,0.528557,0.659482,-0.316437, + -0.541739,0.509206,0.668752,0.528557,0.659482,-0.316437, + -0.227561,0.374378,0.89892,0.607846,0.634036,-0.266375, + -0.208655,0.445101,0.870832,0.583305,0.594795,-0.257187, + -0.424048,0.688165,0.588737,0.548866,0.688331,-0.323141, + -0.109115,0.586342,0.802681,0.625134,0.662855,-0.274594, + -0.227561,0.374378,0.89892,0.607846,0.634036,-0.266375, + -0.424048,0.688165,0.588737,0.548866,0.688331,-0.323141, + -0.227561,0.374378,0.89892,0.607846,0.634036,-0.266375, + -0.541739,0.509206,0.668752,0.528557,0.659482,-0.316437, + -0.109115,0.586342,0.802681,0.625134,0.662855,-0.274594, + 0.190084,0.486023,0.853024,0.716506,0.632271,-0.258297, + 0.075758,0.234707,0.96911,0.702992,0.603501,-0.249687, + 0.075758,0.234707,0.96911,0.702992,0.603501,-0.249687, + -0.227561,0.374378,0.89892,0.607846,0.634036,-0.266375, + -0.109115,0.586342,0.802681,0.625134,0.662855,-0.274594, + 0.088734,0.313595,0.945402,0.682889,0.566071,-0.239844, + -0.208655,0.445101,0.870832,0.583305,0.594795,-0.257187, + -0.227561,0.374378,0.89892,0.607846,0.634036,-0.266375, + 0.088734,0.313595,0.945402,0.682889,0.566071,-0.239844, + -0.227561,0.374378,0.89892,0.607846,0.634036,-0.266375, + 0.075758,0.234707,0.96911,0.702992,0.603501,-0.249687, + 0.123897,0.972069,0.199329,0.596285,0.705555,-0.361333, + 0.226858,0.951027,0.209959,0.650852,0.69151,-0.335375, + 0.096538,0.86115,0.4991,0.641688,0.680252,-0.294, + 0.123897,0.972069,0.199329,0.596285,0.705555,-0.361333, + 0.096538,0.86115,0.4991,0.641688,0.680252,-0.294, + -0.070158,0.909054,0.410729,0.571915,0.702991,-0.339125, + 0.226858,0.951027,0.209959,0.650852,0.69151,-0.335375, + 0.329457,0.915147,0.232303,0.729578,0.666743,-0.322437, + 0.2681,0.82446,0.498385,0.724816,0.652913,-0.2785, + 0.2681,0.82446,0.498385,0.724816,0.652913,-0.2785, + 0.096538,0.86115,0.4991,0.641688,0.680252,-0.294, + 0.226858,0.951027,0.209959,0.650852,0.69151,-0.335375, + 0.190084,0.486023,0.853024,0.716506,0.632271,-0.258297, + -0.109115,0.586342,0.802681,0.625134,0.662855,-0.274594, + 0.096538,0.86115,0.4991,0.641688,0.680252,-0.294, + 0.190084,0.486023,0.853024,0.716506,0.632271,-0.258297, + 0.096538,0.86115,0.4991,0.641688,0.680252,-0.294, + 0.2681,0.82446,0.498385,0.724816,0.652913,-0.2785, + -0.109115,0.586342,0.802681,0.625134,0.662855,-0.274594, + -0.424048,0.688165,0.588737,0.548866,0.688331,-0.323141, + -0.070158,0.909054,0.410729,0.571915,0.702991,-0.339125, + -0.070158,0.909054,0.410729,0.571915,0.702991,-0.339125, + 0.096538,0.86115,0.4991,0.641688,0.680252,-0.294, + -0.109115,0.586342,0.802681,0.625134,0.662855,-0.274594, + 0.423992,0.883446,0.199385,0.806863,0.637791,-0.335375, + 0.503147,0.845347,0.179535,0.858509,0.615264,-0.361333, + 0.634483,0.691277,0.345786,0.876135,0.59824,-0.339125, + 0.634483,0.691277,0.345786,0.876135,0.59824,-0.339125, + 0.454725,0.723574,0.519294,0.807153,0.623277,-0.294, + 0.423992,0.883446,0.199385,0.806863,0.637791,-0.335375, + 0.692376,0.299843,0.656284,0.88375,0.575062,-0.323141, + 0.446948,0.373871,0.812686,0.80768,0.601112,-0.274594, + 0.454725,0.723574,0.519294,0.807153,0.623277,-0.294, + 0.692376,0.299843,0.656284,0.88375,0.575062,-0.323141, + 0.454725,0.723574,0.519294,0.807153,0.623277,-0.294, + 0.634483,0.691277,0.345786,0.876135,0.59824,-0.339125, + 0.190084,0.486023,0.853024,0.716506,0.632271,-0.258297, + 0.2681,0.82446,0.498385,0.724816,0.652913,-0.2785, + 0.454725,0.723574,0.519294,0.807153,0.623277,-0.294, + 0.190084,0.486023,0.853024,0.716506,0.632271,-0.258297, + 0.454725,0.723574,0.519294,0.807153,0.623277,-0.294, + 0.446948,0.373871,0.812686,0.80768,0.601112,-0.274594, + 0.329457,0.915147,0.232303,0.729578,0.666743,-0.322437, + 0.423992,0.883446,0.199385,0.806863,0.637791,-0.335375, + 0.454725,0.723574,0.519294,0.807153,0.623277,-0.294, + 0.329457,0.915147,0.232303,0.729578,0.666743,-0.322437, + 0.454725,0.723574,0.519294,0.807153,0.623277,-0.294, + 0.2681,0.82446,0.498385,0.724816,0.652913,-0.2785, + -0.541739,0.509206,0.668752,0.528557,0.659482,-0.316437, + -0.468298,0.578298,0.668033,0.500319,0.618731,-0.309219, + -0.677265,0.639604,0.363619,0.450527,0.633092,-0.395938, + -0.677265,0.639604,0.363619,0.450527,0.633092,-0.395938, + -0.740712,0.587497,0.325872,0.480984,0.67475,-0.399875, + -0.541739,0.509206,0.668752,0.528557,0.659482,-0.316437, + -0.749144,0.662408,0,0.43393,0.63788,-0.5, + -0.797112,0.603831,0,0.465127,0.679839,-0.5, + -0.740712,0.587497,0.325872,0.480984,0.67475,-0.399875, + -0.749144,0.662408,0,0.43393,0.63788,-0.5, + -0.740712,0.587497,0.325872,0.480984,0.67475,-0.399875, + -0.677265,0.639604,0.363619,0.450527,0.633092,-0.395938, + -0.797112,0.603831,0,0.465127,0.679839,-0.5, + -0.655082,0.755558,0,0.487673,0.709673,-0.5, + -0.606207,0.755737,0.247737,0.503003,0.704166,-0.403594, + -0.606207,0.755737,0.247737,0.503003,0.704166,-0.403594, + -0.740712,0.587497,0.325872,0.480984,0.67475,-0.399875, + -0.797112,0.603831,0,0.465127,0.679839,-0.5, + -0.424048,0.688165,0.588737,0.548866,0.688331,-0.323141, + -0.541739,0.509206,0.668752,0.528557,0.659482,-0.316437, + -0.740712,0.587497,0.325872,0.480984,0.67475,-0.399875, + -0.424048,0.688165,0.588737,0.548866,0.688331,-0.323141, + -0.740712,0.587497,0.325872,0.480984,0.67475,-0.399875, + -0.606207,0.755737,0.247737,0.503003,0.704166,-0.403594, + -0.677265,0.639604,-0.363619,0.450527,0.633092,-0.604062, + -0.468298,0.578298,-0.668033,0.500319,0.618731,-0.690781, + -0.541738,0.509206,-0.668752,0.528557,0.659482,-0.683563, + -0.541738,0.509206,-0.668752,0.528557,0.659482,-0.683563, + -0.740713,0.587497,-0.325872,0.480984,0.67475,-0.600125, + -0.677265,0.639604,-0.363619,0.450527,0.633092,-0.604062, + -0.424048,0.688166,-0.588737,0.548866,0.688331,-0.676859, + -0.606207,0.755737,-0.247737,0.503003,0.704166,-0.596406, + -0.740713,0.587497,-0.325872,0.480984,0.67475,-0.600125, + -0.424048,0.688166,-0.588737,0.548866,0.688331,-0.676859, + -0.740713,0.587497,-0.325872,0.480984,0.67475,-0.600125, + -0.541738,0.509206,-0.668752,0.528557,0.659482,-0.683563, + -0.606207,0.755737,-0.247737,0.503003,0.704166,-0.596406, + -0.655082,0.755558,0,0.487673,0.709673,-0.5, + -0.797112,0.603831,0,0.465127,0.679839,-0.5, + -0.797112,0.603831,0,0.465127,0.679839,-0.5, + -0.740713,0.587497,-0.325872,0.480984,0.67475,-0.600125, + -0.606207,0.755737,-0.247737,0.503003,0.704166,-0.596406, + -0.749144,0.662408,0,0.43393,0.63788,-0.5, + -0.677265,0.639604,-0.363619,0.450527,0.633092,-0.604062, + -0.740713,0.587497,-0.325872,0.480984,0.67475,-0.600125, + -0.749144,0.662408,0,0.43393,0.63788,-0.5, + -0.740713,0.587497,-0.325872,0.480984,0.67475,-0.600125, + -0.797112,0.603831,0,0.465127,0.679839,-0.5, + 0.123896,0.972069,-0.199329,0.596285,0.705555,-0.638667, + 0.139983,0.985063,-0.100277,0.573201,0.718247,-0.5825, + -0.142867,0.968199,-0.205377,0.529644,0.718831,-0.5875, + 0.123896,0.972069,-0.199329,0.596285,0.705555,-0.638667, + -0.142867,0.968199,-0.205377,0.529644,0.718831,-0.5875, + -0.070159,0.909054,-0.410729,0.571915,0.702991,-0.660875, + 0.084449,0.996428,0,0.561689,0.724552,-0.5, + -0.31505,0.949075,0,0.515384,0.725027,-0.5, + -0.142867,0.968199,-0.205377,0.529644,0.718831,-0.5875, + 0.084449,0.996428,0,0.561689,0.724552,-0.5, + -0.142867,0.968199,-0.205377,0.529644,0.718831,-0.5875, + 0.139983,0.985063,-0.100277,0.573201,0.718247,-0.5825, + -0.31505,0.949075,0,0.515384,0.725027,-0.5, + -0.655082,0.755558,0,0.487673,0.709673,-0.5, + -0.606207,0.755737,-0.247737,0.503003,0.704166,-0.596406, + -0.606207,0.755737,-0.247737,0.503003,0.704166,-0.596406, + -0.142867,0.968199,-0.205377,0.529644,0.718831,-0.5875, + -0.31505,0.949075,0,0.515384,0.725027,-0.5, + -0.424048,0.688166,-0.588737,0.548866,0.688331,-0.676859, + -0.070159,0.909054,-0.410729,0.571915,0.702991,-0.660875, + -0.142867,0.968199,-0.205377,0.529644,0.718831,-0.5875, + -0.424048,0.688166,-0.588737,0.548866,0.688331,-0.676859, + -0.142867,0.968199,-0.205377,0.529644,0.718831,-0.5875, + -0.606207,0.755737,-0.247737,0.503003,0.704166,-0.596406, + 0.123897,0.972069,0.199329,0.596285,0.705555,-0.361333, + -0.070158,0.909054,0.410729,0.571915,0.702991,-0.339125, + -0.142867,0.968199,0.205377,0.529644,0.718831,-0.4125, + 0.123897,0.972069,0.199329,0.596285,0.705555,-0.361333, + -0.142867,0.968199,0.205377,0.529644,0.718831,-0.4125, + 0.139983,0.985063,0.100277,0.573201,0.718247,-0.4175, + -0.424048,0.688165,0.588737,0.548866,0.688331,-0.323141, + -0.606207,0.755737,0.247737,0.503003,0.704166,-0.403594, + -0.142867,0.968199,0.205377,0.529644,0.718831,-0.4125, + -0.424048,0.688165,0.588737,0.548866,0.688331,-0.323141, + -0.142867,0.968199,0.205377,0.529644,0.718831,-0.4125, + -0.070158,0.909054,0.410729,0.571915,0.702991,-0.339125, + -0.606207,0.755737,0.247737,0.503003,0.704166,-0.403594, + -0.655082,0.755558,0,0.487673,0.709673,-0.5, + -0.31505,0.949075,0,0.515384,0.725027,-0.5, + -0.31505,0.949075,0,0.515384,0.725027,-0.5, + -0.142867,0.968199,0.205377,0.529644,0.718831,-0.4125, + -0.606207,0.755737,0.247737,0.503003,0.704166,-0.403594, + 0.084449,0.996428,0,0.561689,0.724552,-0.5, + 0.139983,0.985063,0.100277,0.573201,0.718247,-0.4175, + -0.142867,0.968199,0.205377,0.529644,0.718831,-0.4125, + 0.084449,0.996428,0,0.561689,0.724552,-0.5, + -0.142867,0.968199,0.205377,0.529644,0.718831,-0.4125, + -0.31505,0.949075,0,0.515384,0.725027,-0.5, + -0.541738,0.509206,-0.668752,0.528557,0.659482,-0.683563, + -0.468298,0.578298,-0.668033,0.500319,0.618731,-0.690781, + -0.208655,0.445101,-0.870832,0.583305,0.594795,-0.742813, + -0.208655,0.445101,-0.870832,0.583305,0.594795,-0.742813, + -0.227561,0.374378,-0.89892,0.607846,0.634036,-0.733625, + -0.541738,0.509206,-0.668752,0.528557,0.659482,-0.683563, + 0.088733,0.313595,-0.945402,0.682889,0.566071,-0.760156, + 0.075758,0.234708,-0.969109,0.702992,0.603501,-0.750313, + -0.227561,0.374378,-0.89892,0.607846,0.634036,-0.733625, + 0.088733,0.313595,-0.945402,0.682889,0.566071,-0.760156, + -0.227561,0.374378,-0.89892,0.607846,0.634036,-0.733625, + -0.208655,0.445101,-0.870832,0.583305,0.594795,-0.742813, + 0.075758,0.234708,-0.969109,0.702992,0.603501,-0.750313, + 0.190084,0.486023,-0.853024,0.716506,0.632271,-0.741703, + -0.109115,0.586342,-0.802681,0.625134,0.662855,-0.725406, + -0.109115,0.586342,-0.802681,0.625134,0.662855,-0.725406, + -0.227561,0.374378,-0.89892,0.607846,0.634036,-0.733625, + 0.075758,0.234708,-0.969109,0.702992,0.603501,-0.750313, + -0.424048,0.688166,-0.588737,0.548866,0.688331,-0.676859, + -0.541738,0.509206,-0.668752,0.528557,0.659482,-0.683563, + -0.227561,0.374378,-0.89892,0.607846,0.634036,-0.733625, + -0.424048,0.688166,-0.588737,0.548866,0.688331,-0.676859, + -0.227561,0.374378,-0.89892,0.607846,0.634036,-0.733625, + -0.109115,0.586342,-0.802681,0.625134,0.662855,-0.725406, + 0.744225,-0.02143,-0.667585,0.865458,0.513412,-0.690781, + 0.749601,-0.05627,-0.659493,0.877427,0.54752,-0.683563, + 0.41312,0.093332,-0.905881,0.798138,0.572966,-0.733625, + 0.744225,-0.02143,-0.667585,0.865458,0.513412,-0.690781, + 0.41312,0.093332,-0.905881,0.798138,0.572966,-0.733625, + 0.395884,0.173928,-0.901679,0.782472,0.537348,-0.742813, + 0.692376,0.299844,-0.656284,0.88375,0.575062,-0.676859, + 0.446948,0.373871,-0.812686,0.80768,0.601112,-0.725406, + 0.41312,0.093332,-0.905881,0.798138,0.572966,-0.733625, + 0.692376,0.299844,-0.656284,0.88375,0.575062,-0.676859, + 0.41312,0.093332,-0.905881,0.798138,0.572966,-0.733625, + 0.749601,-0.05627,-0.659493,0.877427,0.54752,-0.683563, + 0.190084,0.486023,-0.853024,0.716506,0.632271,-0.741703, + 0.075758,0.234708,-0.969109,0.702992,0.603501,-0.750313, + 0.41312,0.093332,-0.905881,0.798138,0.572966,-0.733625, + 0.190084,0.486023,-0.853024,0.716506,0.632271,-0.741703, + 0.41312,0.093332,-0.905881,0.798138,0.572966,-0.733625, + 0.446948,0.373871,-0.812686,0.80768,0.601112,-0.725406, + 0.075758,0.234708,-0.969109,0.702992,0.603501,-0.750313, + 0.088733,0.313595,-0.945402,0.682889,0.566071,-0.760156, + 0.395884,0.173928,-0.901679,0.782472,0.537348,-0.742813, + 0.395884,0.173928,-0.901679,0.782472,0.537348,-0.742813, + 0.41312,0.093332,-0.905881,0.798138,0.572966,-0.733625, + 0.075758,0.234708,-0.969109,0.702992,0.603501,-0.750313, + 0.634482,0.691277,-0.345786,0.876135,0.59824,-0.660875, + 0.503147,0.845347,-0.179534,0.858509,0.615264,-0.638667, + 0.423992,0.883446,-0.199386,0.806863,0.637791,-0.664625, + 0.423992,0.883446,-0.199386,0.806863,0.637791,-0.664625, + 0.454725,0.723574,-0.519294,0.807153,0.623277,-0.706, + 0.634482,0.691277,-0.345786,0.876135,0.59824,-0.660875, + 0.329457,0.915147,-0.232303,0.729578,0.666743,-0.677562, + 0.2681,0.82446,-0.498385,0.724816,0.652913,-0.7215, + 0.454725,0.723574,-0.519294,0.807153,0.623277,-0.706, + 0.329457,0.915147,-0.232303,0.729578,0.666743,-0.677562, + 0.454725,0.723574,-0.519294,0.807153,0.623277,-0.706, + 0.423992,0.883446,-0.199386,0.806863,0.637791,-0.664625, + 0.190084,0.486023,-0.853024,0.716506,0.632271,-0.741703, + 0.446948,0.373871,-0.812686,0.80768,0.601112,-0.725406, + 0.454725,0.723574,-0.519294,0.807153,0.623277,-0.706, + 0.190084,0.486023,-0.853024,0.716506,0.632271,-0.741703, + 0.454725,0.723574,-0.519294,0.807153,0.623277,-0.706, + 0.2681,0.82446,-0.498385,0.724816,0.652913,-0.7215, + 0.692376,0.299844,-0.656284,0.88375,0.575062,-0.676859, + 0.634482,0.691277,-0.345786,0.876135,0.59824,-0.660875, + 0.454725,0.723574,-0.519294,0.807153,0.623277,-0.706, + 0.692376,0.299844,-0.656284,0.88375,0.575062,-0.676859, + 0.454725,0.723574,-0.519294,0.807153,0.623277,-0.706, + 0.446948,0.373871,-0.812686,0.80768,0.601112,-0.725406, + 0.123896,0.972069,-0.199329,0.596285,0.705555,-0.638667, + -0.070159,0.909054,-0.410729,0.571915,0.702991,-0.660875, + 0.096538,0.86115,-0.4991,0.641688,0.680252,-0.706, + 0.123896,0.972069,-0.199329,0.596285,0.705555,-0.638667, + 0.096538,0.86115,-0.4991,0.641688,0.680252,-0.706, + 0.226858,0.951027,-0.209959,0.650852,0.69151,-0.664625, + -0.070159,0.909054,-0.410729,0.571915,0.702991,-0.660875, + -0.424048,0.688166,-0.588737,0.548866,0.688331,-0.676859, + -0.109115,0.586342,-0.802681,0.625134,0.662855,-0.725406, + -0.109115,0.586342,-0.802681,0.625134,0.662855,-0.725406, + 0.096538,0.86115,-0.4991,0.641688,0.680252,-0.706, + -0.070159,0.909054,-0.410729,0.571915,0.702991,-0.660875, + 0.190084,0.486023,-0.853024,0.716506,0.632271,-0.741703, + 0.2681,0.82446,-0.498385,0.724816,0.652913,-0.7215, + 0.096538,0.86115,-0.4991,0.641688,0.680252,-0.706, + 0.190084,0.486023,-0.853024,0.716506,0.632271,-0.741703, + 0.096538,0.86115,-0.4991,0.641688,0.680252,-0.706, + -0.109115,0.586342,-0.802681,0.625134,0.662855,-0.725406, + 0.2681,0.82446,-0.498385,0.724816,0.652913,-0.7215, + 0.329457,0.915147,-0.232303,0.729578,0.666743,-0.677562, + 0.226858,0.951027,-0.209959,0.650852,0.69151,-0.664625, + 0.226858,0.951027,-0.209959,0.650852,0.69151,-0.664625, + 0.096538,0.86115,-0.4991,0.641688,0.680252,-0.706, + 0.2681,0.82446,-0.498385,0.724816,0.652913,-0.7215, + 0.503147,0.845347,0.179535,0.858509,0.615264,-0.361333, + 0.423992,0.883446,0.199385,0.806863,0.637791,-0.335375, + 0.398886,0.913527,0.079739,0.817112,0.642984,-0.4095, + 0.503147,0.845347,0.179535,0.858509,0.615264,-0.361333, + 0.398886,0.913527,0.079739,0.817112,0.642984,-0.4095, + 0.496158,0.862422,0.100278,0.884513,0.611054,-0.4175, + 0.423992,0.883446,0.199385,0.806863,0.637791,-0.335375, + 0.329457,0.915147,0.232303,0.729578,0.666743,-0.322437, + 0.324391,0.9421,0.08496,0.732447,0.675074,-0.40225, + 0.324391,0.9421,0.08496,0.732447,0.675074,-0.40225, + 0.398886,0.913527,0.079739,0.817112,0.642984,-0.4095, + 0.423992,0.883446,0.199385,0.806863,0.637791,-0.335375, + 0.325568,0.945519,0,0.733407,0.677865,-0.5, + 0.404722,0.91444,0,0.824871,0.64325,-0.5, + 0.398886,0.913527,0.079739,0.817112,0.642984,-0.4095, + 0.325568,0.945519,0,0.733407,0.677865,-0.5, + 0.398886,0.913527,0.079739,0.817112,0.642984,-0.4095, + 0.324391,0.9421,0.08496,0.732447,0.675074,-0.40225, + 0.404722,0.91444,0,0.824871,0.64325,-0.5, + 0.546916,0.837188,0,0.897467,0.608935,-0.5, + 0.496158,0.862422,0.100278,0.884513,0.611054,-0.4175, + 0.496158,0.862422,0.100278,0.884513,0.611054,-0.4175, + 0.398886,0.913527,0.079739,0.817112,0.642984,-0.4095, + 0.404722,0.91444,0,0.824871,0.64325,-0.5, + 0.123897,0.972069,0.199329,0.596285,0.705555,-0.361333, + 0.139983,0.985063,0.100277,0.573201,0.718247,-0.4175, + 0.248097,0.965448,0.079739,0.645973,0.701912,-0.4095, + 0.123897,0.972069,0.199329,0.596285,0.705555,-0.361333, + 0.248097,0.965448,0.079739,0.645973,0.701912,-0.4095, + 0.226858,0.951027,0.209959,0.650852,0.69151,-0.335375, + 0.139983,0.985063,0.100277,0.573201,0.718247,-0.4175, + 0.084449,0.996428,0,0.561689,0.724552,-0.5, + 0.24406,0.96976,0,0.640022,0.706898,-0.5, + 0.24406,0.96976,0,0.640022,0.706898,-0.5, + 0.248097,0.965448,0.079739,0.645973,0.701912,-0.4095, + 0.139983,0.985063,0.100277,0.573201,0.718247,-0.4175, + 0.325568,0.945519,0,0.733407,0.677865,-0.5, + 0.324391,0.9421,0.08496,0.732447,0.675074,-0.40225, + 0.248097,0.965448,0.079739,0.645973,0.701912,-0.4095, + 0.325568,0.945519,0,0.733407,0.677865,-0.5, + 0.248097,0.965448,0.079739,0.645973,0.701912,-0.4095, + 0.24406,0.96976,0,0.640022,0.706898,-0.5, + 0.324391,0.9421,0.08496,0.732447,0.675074,-0.40225, + 0.329457,0.915147,0.232303,0.729578,0.666743,-0.322437, + 0.226858,0.951027,0.209959,0.650852,0.69151,-0.335375, + 0.226858,0.951027,0.209959,0.650852,0.69151,-0.335375, + 0.248097,0.965448,0.079739,0.645973,0.701912,-0.4095, + 0.324391,0.9421,0.08496,0.732447,0.675074,-0.40225, + 0.123896,0.972069,-0.199329,0.596285,0.705555,-0.638667, + 0.226858,0.951027,-0.209959,0.650852,0.69151,-0.664625, + 0.248097,0.965448,-0.079739,0.645973,0.701912,-0.5905, + 0.123896,0.972069,-0.199329,0.596285,0.705555,-0.638667, + 0.248097,0.965448,-0.079739,0.645973,0.701912,-0.5905, + 0.139983,0.985063,-0.100277,0.573201,0.718247,-0.5825, + 0.226858,0.951027,-0.209959,0.650852,0.69151,-0.664625, + 0.329457,0.915147,-0.232303,0.729578,0.666743,-0.677562, + 0.324391,0.9421,-0.08496,0.732447,0.675074,-0.59775, + 0.324391,0.9421,-0.08496,0.732447,0.675074,-0.59775, + 0.248097,0.965448,-0.079739,0.645973,0.701912,-0.5905, + 0.226858,0.951027,-0.209959,0.650852,0.69151,-0.664625, + 0.325568,0.945519,0,0.733407,0.677865,-0.5, + 0.24406,0.96976,0,0.640022,0.706898,-0.5, + 0.248097,0.965448,-0.079739,0.645973,0.701912,-0.5905, + 0.325568,0.945519,0,0.733407,0.677865,-0.5, + 0.248097,0.965448,-0.079739,0.645973,0.701912,-0.5905, + 0.324391,0.9421,-0.08496,0.732447,0.675074,-0.59775, + 0.24406,0.96976,0,0.640022,0.706898,-0.5, + 0.084449,0.996428,0,0.561689,0.724552,-0.5, + 0.139983,0.985063,-0.100277,0.573201,0.718247,-0.5825, + 0.139983,0.985063,-0.100277,0.573201,0.718247,-0.5825, + 0.248097,0.965448,-0.079739,0.645973,0.701912,-0.5905, + 0.24406,0.96976,0,0.640022,0.706898,-0.5, + 0.503147,0.845347,-0.179534,0.858509,0.615264,-0.638667, + 0.496158,0.862422,-0.100277,0.884513,0.611054,-0.5825, + 0.398886,0.913527,-0.079739,0.817112,0.642984,-0.5905, + 0.503147,0.845347,-0.179534,0.858509,0.615264,-0.638667, + 0.398886,0.913527,-0.079739,0.817112,0.642984,-0.5905, + 0.423992,0.883446,-0.199386,0.806863,0.637791,-0.664625, + 0.496158,0.862422,-0.100277,0.884513,0.611054,-0.5825, + 0.546916,0.837188,0,0.897467,0.608935,-0.5, + 0.404722,0.91444,0,0.824871,0.64325,-0.5, + 0.404722,0.91444,0,0.824871,0.64325,-0.5, + 0.398886,0.913527,-0.079739,0.817112,0.642984,-0.5905, + 0.496158,0.862422,-0.100277,0.884513,0.611054,-0.5825, + 0.325568,0.945519,0,0.733407,0.677865,-0.5, + 0.324391,0.9421,-0.08496,0.732447,0.675074,-0.59775, + 0.398886,0.913527,-0.079739,0.817112,0.642984,-0.5905, + 0.325568,0.945519,0,0.733407,0.677865,-0.5, + 0.398886,0.913527,-0.079739,0.817112,0.642984,-0.5905, + 0.404722,0.91444,0,0.824871,0.64325,-0.5, + 0.324391,0.9421,-0.08496,0.732447,0.675074,-0.59775, + 0.329457,0.915147,-0.232303,0.729578,0.666743,-0.677562, + 0.423992,0.883446,-0.199386,0.806863,0.637791,-0.664625, + 0.423992,0.883446,-0.199386,0.806863,0.637791,-0.664625, + 0.398886,0.913527,-0.079739,0.817112,0.642984,-0.5905, + 0.324391,0.9421,-0.08496,0.732447,0.675074,-0.59775, + 0.744225,-0.02143,-0.667585,0.865458,0.513412,-0.690781, + 0.730929,0.12699,-0.670535,0.856137,0.470533,-0.708313, + 0.942442,-0.005211,-0.334328,0.911045,0.457192,-0.613625, + 0.744225,-0.02143,-0.667585,0.865458,0.513412,-0.690781, + 0.942442,-0.005211,-0.334328,0.911045,0.457192,-0.613625, + 0.945978,-0.110612,-0.304781,0.91525,0.49905,-0.604062, + 0.730929,0.12699,-0.670535,0.856137,0.470533,-0.708313, + 0.725615,0.097758,-0.681122,0.846442,0.421012,-0.729453, + 0.940489,-0.03309,-0.338208,0.907494,0.408859,-0.625156, + 0.940489,-0.03309,-0.338208,0.907494,0.408859,-0.625156, + 0.942442,-0.005211,-0.334328,0.911045,0.457192,-0.613625, + 0.730929,0.12699,-0.670535,0.856137,0.470533,-0.708313, + 0.998189,-0.060158,0,0.927845,0.404808,-0.5, + 0.998674,-0.051473,0,0.929348,0.452746,-0.5, + 0.942442,-0.005211,-0.334328,0.911045,0.457192,-0.613625, + 0.998189,-0.060158,0,0.927845,0.404808,-0.5, + 0.942442,-0.005211,-0.334328,0.911045,0.457192,-0.613625, + 0.940489,-0.03309,-0.338208,0.907494,0.408859,-0.625156, + 0.998674,-0.051473,0,0.929348,0.452746,-0.5, + 0.980435,-0.196846,0,0.931847,0.494263,-0.5, + 0.945978,-0.110612,-0.304781,0.91525,0.49905,-0.604062, + 0.945978,-0.110612,-0.304781,0.91525,0.49905,-0.604062, + 0.942442,-0.005211,-0.334328,0.911045,0.457192,-0.613625, + 0.998674,-0.051473,0,0.929348,0.452746,-0.5, + 0.711272,-0.0413,-0.701703,0.83335,0.366979,-0.7475, + 0.63763,-0.234074,-0.733919,0.81384,0.310563,-0.75575, + 0.846641,-0.361408,-0.390619,0.882792,0.301487,-0.6395, + 0.846641,-0.361408,-0.390619,0.882792,0.301487,-0.6395, + 0.924673,-0.163459,-0.343891,0.899707,0.356231,-0.635, + 0.711272,-0.0413,-0.701703,0.83335,0.366979,-0.7475, + 0.918091,-0.39637,0,0.905776,0.298462,-0.5, + 0.985079,-0.172104,0,0.921826,0.352648,-0.5, + 0.924673,-0.163459,-0.343891,0.899707,0.356231,-0.635, + 0.918091,-0.39637,0,0.905776,0.298462,-0.5, + 0.924673,-0.163459,-0.343891,0.899707,0.356231,-0.635, + 0.846641,-0.361408,-0.390619,0.882792,0.301487,-0.6395, + 0.985079,-0.172104,0,0.921826,0.352648,-0.5, + 0.998189,-0.060158,0,0.927845,0.404808,-0.5, + 0.940489,-0.03309,-0.338208,0.907494,0.408859,-0.625156, + 0.940489,-0.03309,-0.338208,0.907494,0.408859,-0.625156, + 0.924673,-0.163459,-0.343891,0.899707,0.356231,-0.635, + 0.985079,-0.172104,0,0.921826,0.352648,-0.5, + 0.725615,0.097758,-0.681122,0.846442,0.421012,-0.729453, + 0.711272,-0.0413,-0.701703,0.83335,0.366979,-0.7475, + 0.924673,-0.163459,-0.343891,0.899707,0.356231,-0.635, + 0.725615,0.097758,-0.681122,0.846442,0.421012,-0.729453, + 0.924673,-0.163459,-0.343891,0.899707,0.356231,-0.635, + 0.940489,-0.03309,-0.338208,0.907494,0.408859,-0.625156, + 0.846641,-0.361408,0.39062,0.882792,0.301487,-0.3605, + 0.63763,-0.234074,0.733919,0.81384,0.310563,-0.24425, + 0.711272,-0.0413,0.701703,0.83335,0.366979,-0.2525, + 0.711272,-0.0413,0.701703,0.83335,0.366979,-0.2525, + 0.924673,-0.16346,0.343891,0.899707,0.356231,-0.365, + 0.846641,-0.361408,0.39062,0.882792,0.301487,-0.3605, + 0.725614,0.097758,0.681122,0.846442,0.421012,-0.270547, + 0.940489,-0.03309,0.338208,0.907494,0.408859,-0.374844, + 0.924673,-0.16346,0.343891,0.899707,0.356231,-0.365, + 0.725614,0.097758,0.681122,0.846442,0.421012,-0.270547, + 0.924673,-0.16346,0.343891,0.899707,0.356231,-0.365, + 0.711272,-0.0413,0.701703,0.83335,0.366979,-0.2525, + 0.940489,-0.03309,0.338208,0.907494,0.408859,-0.374844, + 0.998189,-0.060158,0,0.927845,0.404808,-0.5, + 0.985079,-0.172104,0,0.921826,0.352648,-0.5, + 0.985079,-0.172104,0,0.921826,0.352648,-0.5, + 0.924673,-0.16346,0.343891,0.899707,0.356231,-0.365, + 0.940489,-0.03309,0.338208,0.907494,0.408859,-0.374844, + 0.918091,-0.39637,0,0.905776,0.298462,-0.5, + 0.846641,-0.361408,0.39062,0.882792,0.301487,-0.3605, + 0.924673,-0.16346,0.343891,0.899707,0.356231,-0.365, + 0.918091,-0.39637,0,0.905776,0.298462,-0.5, + 0.924673,-0.16346,0.343891,0.899707,0.356231,-0.365, + 0.985079,-0.172104,0,0.921826,0.352648,-0.5, + 0.744225,-0.02143,0.667585,0.865458,0.513412,-0.309219, + 0.945978,-0.110612,0.304781,0.91525,0.49905,-0.395938, + 0.942442,-0.005211,0.334328,0.911045,0.457192,-0.386375, + 0.744225,-0.02143,0.667585,0.865458,0.513412,-0.309219, + 0.942442,-0.005211,0.334328,0.911045,0.457192,-0.386375, + 0.730929,0.126989,0.670535,0.856137,0.470533,-0.291687, + 0.945978,-0.110612,0.304781,0.91525,0.49905,-0.395938, + 0.980435,-0.196846,0,0.931847,0.494263,-0.5, + 0.998674,-0.051473,0,0.929348,0.452746,-0.5, + 0.998674,-0.051473,0,0.929348,0.452746,-0.5, + 0.942442,-0.005211,0.334328,0.911045,0.457192,-0.386375, + 0.945978,-0.110612,0.304781,0.91525,0.49905,-0.395938, + 0.998189,-0.060158,0,0.927845,0.404808,-0.5, + 0.940489,-0.03309,0.338208,0.907494,0.408859,-0.374844, + 0.942442,-0.005211,0.334328,0.911045,0.457192,-0.386375, + 0.998189,-0.060158,0,0.927845,0.404808,-0.5, + 0.942442,-0.005211,0.334328,0.911045,0.457192,-0.386375, + 0.998674,-0.051473,0,0.929348,0.452746,-0.5, + 0.940489,-0.03309,0.338208,0.907494,0.408859,-0.374844, + 0.725614,0.097758,0.681122,0.846442,0.421012,-0.270547, + 0.730929,0.126989,0.670535,0.856137,0.470533,-0.291687, + 0.730929,0.126989,0.670535,0.856137,0.470533,-0.291687, + 0.942442,-0.005211,0.334328,0.911045,0.457192,-0.386375, + 0.940489,-0.03309,0.338208,0.907494,0.408859,-0.374844, + -0.468298,0.578298,-0.668033,0.500319,0.618731,-0.690781, + -0.46274,0.649831,-0.602985,0.453481,0.568361,-0.708313, + -0.1826,0.53251,-0.826493,0.544994,0.546127,-0.765125, + -0.468298,0.578298,-0.668033,0.500319,0.618731,-0.690781, + -0.1826,0.53251,-0.826493,0.544994,0.546127,-0.765125, + -0.208655,0.445101,-0.870832,0.583305,0.594795,-0.742813, + -0.46274,0.649831,-0.602985,0.453481,0.568361,-0.708313, + -0.490654,0.624331,-0.60784,0.398726,0.51013,-0.729453, + -0.208343,0.508292,-0.835603,0.500479,0.489876,-0.792031, + -0.208343,0.508292,-0.835603,0.500479,0.489876,-0.792031, + -0.1826,0.53251,-0.826493,0.544994,0.546127,-0.765125, + -0.46274,0.649831,-0.602985,0.453481,0.568361,-0.708313, + 0.081884,0.387365,-0.918283,0.622584,0.465571,-0.812891, + 0.102672,0.412673,-0.905074,0.654809,0.519447,-0.784063, + -0.1826,0.53251,-0.826493,0.544994,0.546127,-0.765125, + 0.081884,0.387365,-0.918283,0.622584,0.465571,-0.812891, + -0.1826,0.53251,-0.826493,0.544994,0.546127,-0.765125, + -0.208343,0.508292,-0.835603,0.500479,0.489876,-0.792031, + 0.102672,0.412673,-0.905074,0.654809,0.519447,-0.784063, + 0.088733,0.313595,-0.945402,0.682889,0.566071,-0.760156, + -0.208655,0.445101,-0.870832,0.583305,0.594795,-0.742813, + -0.208655,0.445101,-0.870832,0.583305,0.594795,-0.742813, + -0.1826,0.53251,-0.826493,0.544994,0.546127,-0.765125, + 0.102672,0.412673,-0.905074,0.654809,0.519447,-0.784063, + -0.59415,0.505848,-0.625383,0.346736,0.445797,-0.7475, + -0.645198,0.198269,-0.737841,0.308193,0.377118,-0.75575, + -0.328501,0.124794,-0.936223,0.423113,0.361992,-0.8255, + -0.328501,0.124794,-0.936223,0.423113,0.361992,-0.8255, + -0.261623,0.387306,-0.884052,0.45733,0.427884,-0.815, + -0.59415,0.505848,-0.625383,0.346736,0.445797,-0.7475, + 0.001894,-0.000876,-0.999998,0.561017,0.343841,-0.84875, + 0.046906,0.258379,-0.964904,0.590043,0.406388,-0.8375, + -0.261623,0.387306,-0.884052,0.45733,0.427884,-0.815, + 0.001894,-0.000876,-0.999998,0.561017,0.343841,-0.84875, + -0.261623,0.387306,-0.884052,0.45733,0.427884,-0.815, + -0.328501,0.124794,-0.936223,0.423113,0.361992,-0.8255, + 0.046906,0.258379,-0.964904,0.590043,0.406388,-0.8375, + 0.081884,0.387365,-0.918283,0.622584,0.465571,-0.812891, + -0.208343,0.508292,-0.835603,0.500479,0.489876,-0.792031, + -0.208343,0.508292,-0.835603,0.500479,0.489876,-0.792031, + -0.261623,0.387306,-0.884052,0.45733,0.427884,-0.815, + 0.046906,0.258379,-0.964904,0.590043,0.406388,-0.8375, + -0.490654,0.624331,-0.60784,0.398726,0.51013,-0.729453, + -0.59415,0.505848,-0.625383,0.346736,0.445797,-0.7475, + -0.261623,0.387306,-0.884052,0.45733,0.427884,-0.815, + -0.490654,0.624331,-0.60784,0.398726,0.51013,-0.729453, + -0.261623,0.387306,-0.884052,0.45733,0.427884,-0.815, + -0.208343,0.508292,-0.835603,0.500479,0.489876,-0.792031, + 0.63763,-0.234074,-0.733919,0.81384,0.310563,-0.75575, + 0.711272,-0.0413,-0.701703,0.83335,0.366979,-0.7475, + 0.369337,0.119431,-0.921589,0.722756,0.384892,-0.815, + 0.63763,-0.234074,-0.733919,0.81384,0.310563,-0.75575, + 0.369337,0.119431,-0.921589,0.722756,0.384892,-0.815, + 0.330471,-0.133893,-0.93427,0.69892,0.325689,-0.8255, + 0.711272,-0.0413,-0.701703,0.83335,0.366979,-0.7475, + 0.725615,0.097758,-0.681122,0.846442,0.421012,-0.729453, + 0.390355,0.256716,-0.884149,0.744688,0.441266,-0.792031, + 0.390355,0.256716,-0.884149,0.744688,0.441266,-0.792031, + 0.369337,0.119431,-0.921589,0.722756,0.384892,-0.815, + 0.711272,-0.0413,-0.701703,0.83335,0.366979,-0.7475, + 0.081884,0.387365,-0.918283,0.622584,0.465571,-0.812891, + 0.046906,0.258379,-0.964904,0.590043,0.406388,-0.8375, + 0.369337,0.119431,-0.921589,0.722756,0.384892,-0.815, + 0.081884,0.387365,-0.918283,0.622584,0.465571,-0.812891, + 0.369337,0.119431,-0.921589,0.722756,0.384892,-0.815, + 0.390355,0.256716,-0.884149,0.744688,0.441266,-0.792031, + 0.046906,0.258379,-0.964904,0.590043,0.406388,-0.8375, + 0.001894,-0.000876,-0.999998,0.561017,0.343841,-0.84875, + 0.330471,-0.133893,-0.93427,0.69892,0.325689,-0.8255, + 0.330471,-0.133893,-0.93427,0.69892,0.325689,-0.8255, + 0.369337,0.119431,-0.921589,0.722756,0.384892,-0.815, + 0.046906,0.258379,-0.964904,0.590043,0.406388,-0.8375, + 0.730929,0.12699,-0.670535,0.856137,0.470533,-0.708313, + 0.744225,-0.02143,-0.667585,0.865458,0.513412,-0.690781, + 0.395884,0.173928,-0.901679,0.782472,0.537348,-0.742813, + 0.395884,0.173928,-0.901679,0.782472,0.537348,-0.742813, + 0.403724,0.284631,-0.869478,0.764624,0.492766,-0.765125, + 0.730929,0.12699,-0.670535,0.856137,0.470533,-0.708313, + 0.088733,0.313595,-0.945402,0.682889,0.566071,-0.760156, + 0.102672,0.412673,-0.905074,0.654809,0.519447,-0.784063, + 0.403724,0.284631,-0.869478,0.764624,0.492766,-0.765125, + 0.088733,0.313595,-0.945402,0.682889,0.566071,-0.760156, + 0.403724,0.284631,-0.869478,0.764624,0.492766,-0.765125, + 0.395884,0.173928,-0.901679,0.782472,0.537348,-0.742813, + 0.102672,0.412673,-0.905074,0.654809,0.519447,-0.784063, + 0.081884,0.387365,-0.918283,0.622584,0.465571,-0.812891, + 0.390355,0.256716,-0.884149,0.744688,0.441266,-0.792031, + 0.390355,0.256716,-0.884149,0.744688,0.441266,-0.792031, + 0.403724,0.284631,-0.869478,0.764624,0.492766,-0.765125, + 0.102672,0.412673,-0.905074,0.654809,0.519447,-0.784063, + 0.725615,0.097758,-0.681122,0.846442,0.421012,-0.729453, + 0.730929,0.12699,-0.670535,0.856137,0.470533,-0.708313, + 0.403724,0.284631,-0.869478,0.764624,0.492766,-0.765125, + 0.725615,0.097758,-0.681122,0.846442,0.421012,-0.729453, + 0.403724,0.284631,-0.869478,0.764624,0.492766,-0.765125, + 0.390355,0.256716,-0.884149,0.744688,0.441266,-0.792031, + -0.468298,0.578298,0.668033,0.500319,0.618731,-0.309219, + -0.208655,0.445101,0.870832,0.583305,0.594795,-0.257187, + -0.1826,0.532509,0.826493,0.544994,0.546127,-0.234875, + -0.468298,0.578298,0.668033,0.500319,0.618731,-0.309219, + -0.1826,0.532509,0.826493,0.544994,0.546127,-0.234875, + -0.46274,0.649831,0.602985,0.453481,0.568361,-0.291687, + -0.208655,0.445101,0.870832,0.583305,0.594795,-0.257187, + 0.088734,0.313595,0.945402,0.682889,0.566071,-0.239844, + 0.102672,0.412673,0.905074,0.654809,0.519447,-0.215937, + 0.102672,0.412673,0.905074,0.654809,0.519447,-0.215937, + -0.1826,0.532509,0.826493,0.544994,0.546127,-0.234875, + -0.208655,0.445101,0.870832,0.583305,0.594795,-0.257187, + 0.081884,0.387365,0.918283,0.622584,0.465571,-0.187109, + -0.208343,0.508292,0.835603,0.500479,0.489876,-0.207969, + -0.1826,0.532509,0.826493,0.544994,0.546127,-0.234875, + 0.081884,0.387365,0.918283,0.622584,0.465571,-0.187109, + -0.1826,0.532509,0.826493,0.544994,0.546127,-0.234875, + 0.102672,0.412673,0.905074,0.654809,0.519447,-0.215937, + -0.208343,0.508292,0.835603,0.500479,0.489876,-0.207969, + -0.490654,0.624331,0.60784,0.398726,0.51013,-0.270547, + -0.46274,0.649831,0.602985,0.453481,0.568361,-0.291687, + -0.46274,0.649831,0.602985,0.453481,0.568361,-0.291687, + -0.1826,0.532509,0.826493,0.544994,0.546127,-0.234875, + -0.208343,0.508292,0.835603,0.500479,0.489876,-0.207969, + 0.395884,0.173928,0.901679,0.782472,0.537348,-0.257187, + 0.744225,-0.02143,0.667585,0.865458,0.513412,-0.309219, + 0.730929,0.126989,0.670535,0.856137,0.470533,-0.291687, + 0.730929,0.126989,0.670535,0.856137,0.470533,-0.291687, + 0.403724,0.284631,0.869478,0.764624,0.492766,-0.234875, + 0.395884,0.173928,0.901679,0.782472,0.537348,-0.257187, + 0.725614,0.097758,0.681122,0.846442,0.421012,-0.270547, + 0.390355,0.256716,0.884149,0.744688,0.441266,-0.207969, + 0.403724,0.284631,0.869478,0.764624,0.492766,-0.234875, + 0.725614,0.097758,0.681122,0.846442,0.421012,-0.270547, + 0.403724,0.284631,0.869478,0.764624,0.492766,-0.234875, + 0.730929,0.126989,0.670535,0.856137,0.470533,-0.291687, + 0.390355,0.256716,0.884149,0.744688,0.441266,-0.207969, + 0.081884,0.387365,0.918283,0.622584,0.465571,-0.187109, + 0.102672,0.412673,0.905074,0.654809,0.519447,-0.215937, + 0.102672,0.412673,0.905074,0.654809,0.519447,-0.215937, + 0.403724,0.284631,0.869478,0.764624,0.492766,-0.234875, + 0.390355,0.256716,0.884149,0.744688,0.441266,-0.207969, + 0.088734,0.313595,0.945402,0.682889,0.566071,-0.239844, + 0.395884,0.173928,0.901679,0.782472,0.537348,-0.257187, + 0.403724,0.284631,0.869478,0.764624,0.492766,-0.234875, + 0.088734,0.313595,0.945402,0.682889,0.566071,-0.239844, + 0.403724,0.284631,0.869478,0.764624,0.492766,-0.234875, + 0.102672,0.412673,0.905074,0.654809,0.519447,-0.215937, + 0.63763,-0.234074,0.733919,0.81384,0.310563,-0.24425, + 0.330471,-0.133893,0.93427,0.69892,0.325689,-0.1745, + 0.369337,0.119431,0.921589,0.722756,0.384892,-0.185, + 0.63763,-0.234074,0.733919,0.81384,0.310563,-0.24425, + 0.369337,0.119431,0.921589,0.722756,0.384892,-0.185, + 0.711272,-0.0413,0.701703,0.83335,0.366979,-0.2525, + 0.330471,-0.133893,0.93427,0.69892,0.325689,-0.1745, + 0.001894,-0.000875,0.999998,0.561017,0.343841,-0.15125, + 0.046906,0.258379,0.964904,0.590043,0.406388,-0.1625, + 0.046906,0.258379,0.964904,0.590043,0.406388,-0.1625, + 0.369337,0.119431,0.921589,0.722756,0.384892,-0.185, + 0.330471,-0.133893,0.93427,0.69892,0.325689,-0.1745, + 0.081884,0.387365,0.918283,0.622584,0.465571,-0.187109, + 0.390355,0.256716,0.884149,0.744688,0.441266,-0.207969, + 0.369337,0.119431,0.921589,0.722756,0.384892,-0.185, + 0.081884,0.387365,0.918283,0.622584,0.465571,-0.187109, + 0.369337,0.119431,0.921589,0.722756,0.384892,-0.185, + 0.046906,0.258379,0.964904,0.590043,0.406388,-0.1625, + 0.390355,0.256716,0.884149,0.744688,0.441266,-0.207969, + 0.725614,0.097758,0.681122,0.846442,0.421012,-0.270547, + 0.711272,-0.0413,0.701703,0.83335,0.366979,-0.2525, + 0.711272,-0.0413,0.701703,0.83335,0.366979,-0.2525, + 0.369337,0.119431,0.921589,0.722756,0.384892,-0.185, + 0.390355,0.256716,0.884149,0.744688,0.441266,-0.207969, + -0.328501,0.124794,0.936223,0.423113,0.361992,-0.1745, + -0.645198,0.198269,0.737841,0.308193,0.377118,-0.24425, + -0.59415,0.505848,0.625383,0.346736,0.445797,-0.2525, + -0.59415,0.505848,0.625383,0.346736,0.445797,-0.2525, + -0.261623,0.387306,0.884052,0.45733,0.427884,-0.185, + -0.328501,0.124794,0.936223,0.423113,0.361992,-0.1745, + -0.490654,0.624331,0.60784,0.398726,0.51013,-0.270547, + -0.208343,0.508292,0.835603,0.500479,0.489876,-0.207969, + -0.261623,0.387306,0.884052,0.45733,0.427884,-0.185, + -0.490654,0.624331,0.60784,0.398726,0.51013,-0.270547, + -0.261623,0.387306,0.884052,0.45733,0.427884,-0.185, + -0.59415,0.505848,0.625383,0.346736,0.445797,-0.2525, + -0.208343,0.508292,0.835603,0.500479,0.489876,-0.207969, + 0.081884,0.387365,0.918283,0.622584,0.465571,-0.187109, + 0.046906,0.258379,0.964904,0.590043,0.406388,-0.1625, + 0.046906,0.258379,0.964904,0.590043,0.406388,-0.1625, + -0.261623,0.387306,0.884052,0.45733,0.427884,-0.185, + -0.208343,0.508292,0.835603,0.500479,0.489876,-0.207969, + 0.001894,-0.000875,0.999998,0.561017,0.343841,-0.15125, + -0.328501,0.124794,0.936223,0.423113,0.361992,-0.1745, + -0.261623,0.387306,0.884052,0.45733,0.427884,-0.185, + 0.001894,-0.000875,0.999998,0.561017,0.343841,-0.15125, + -0.261623,0.387306,0.884052,0.45733,0.427884,-0.185, + 0.046906,0.258379,0.964904,0.590043,0.406388,-0.1625, + -0.46274,0.649831,-0.602985,0.453481,0.568361,-0.708313, + -0.468298,0.578298,-0.668033,0.500319,0.618731,-0.690781, + -0.677265,0.639604,-0.363619,0.450527,0.633092,-0.604062, + -0.677265,0.639604,-0.363619,0.450527,0.633092,-0.604062, + -0.641469,0.710708,-0.288812,0.398573,0.581701,-0.613625, + -0.46274,0.649831,-0.602985,0.453481,0.568361,-0.708313, + -0.749144,0.662408,0,0.43393,0.63788,-0.5, + -0.689225,0.724547,0,0.380271,0.586148,-0.5, + -0.641469,0.710708,-0.288812,0.398573,0.581701,-0.613625, + -0.749144,0.662408,0,0.43393,0.63788,-0.5, + -0.641469,0.710708,-0.288812,0.398573,0.581701,-0.613625, + -0.677265,0.639604,-0.363619,0.450527,0.633092,-0.604062, + -0.689225,0.724547,0,0.380271,0.586148,-0.5, + -0.718122,0.695917,0,0.317323,0.526334,-0.5, + -0.680327,0.681689,-0.269175,0.337674,0.522283,-0.625156, + -0.680327,0.681689,-0.269175,0.337674,0.522283,-0.625156, + -0.641469,0.710708,-0.288812,0.398573,0.581701,-0.613625, + -0.689225,0.724547,0,0.380271,0.586148,-0.5, + -0.490654,0.624331,-0.60784,0.398726,0.51013,-0.729453, + -0.46274,0.649831,-0.602985,0.453481,0.568361,-0.708313, + -0.641469,0.710708,-0.288812,0.398573,0.581701,-0.613625, + -0.490654,0.624331,-0.60784,0.398726,0.51013,-0.729453, + -0.641469,0.710708,-0.288812,0.398573,0.581701,-0.613625, + -0.680327,0.681689,-0.269175,0.337674,0.522283,-0.625156, + -0.677265,0.639604,0.363619,0.450527,0.633092,-0.395938, + -0.468298,0.578298,0.668033,0.500319,0.618731,-0.309219, + -0.46274,0.649831,0.602985,0.453481,0.568361,-0.291687, + -0.46274,0.649831,0.602985,0.453481,0.568361,-0.291687, + -0.641469,0.710708,0.288812,0.398573,0.581701,-0.386375, + -0.677265,0.639604,0.363619,0.450527,0.633092,-0.395938, + -0.490654,0.624331,0.60784,0.398726,0.51013,-0.270547, + -0.680327,0.681689,0.269175,0.337674,0.522283,-0.374844, + -0.641469,0.710708,0.288812,0.398573,0.581701,-0.386375, + -0.490654,0.624331,0.60784,0.398726,0.51013,-0.270547, + -0.641469,0.710708,0.288812,0.398573,0.581701,-0.386375, + -0.46274,0.649831,0.602985,0.453481,0.568361,-0.291687, + -0.680327,0.681689,0.269175,0.337674,0.522283,-0.374844, + -0.718122,0.695917,0,0.317323,0.526334,-0.5, + -0.689225,0.724547,0,0.380271,0.586148,-0.5, + -0.689225,0.724547,0,0.380271,0.586148,-0.5, + -0.641469,0.710708,0.288812,0.398573,0.581701,-0.386375, + -0.680327,0.681689,0.269175,0.337674,0.522283,-0.374844, + -0.749144,0.662408,0,0.43393,0.63788,-0.5, + -0.677265,0.639604,0.363619,0.450527,0.633092,-0.395938, + -0.641469,0.710708,0.288812,0.398573,0.581701,-0.386375, + -0.749144,0.662408,0,0.43393,0.63788,-0.5, + -0.641469,0.710708,0.288812,0.398573,0.581701,-0.386375, + -0.689225,0.724547,0,0.380271,0.586148,-0.5, + -0.59415,0.505848,0.625383,0.346736,0.445797,-0.2525, + -0.645198,0.198269,0.737841,0.308193,0.377118,-0.24425, + -0.862657,0.31434,0.396249,0.239242,0.386194,-0.3605, + -0.862657,0.31434,0.396249,0.239242,0.386194,-0.3605, + -0.778413,0.562971,0.277735,0.280379,0.456545,-0.365, + -0.59415,0.505848,0.625383,0.346736,0.445797,-0.2525, + -0.940313,0.340311,0,0.216258,0.389219,-0.5, + -0.786635,0.617419,0,0.25826,0.460127,-0.5, + -0.778413,0.562971,0.277735,0.280379,0.456545,-0.365, + -0.940313,0.340311,0,0.216258,0.389219,-0.5, + -0.778413,0.562971,0.277735,0.280379,0.456545,-0.365, + -0.862657,0.31434,0.396249,0.239242,0.386194,-0.3605, + -0.786635,0.617419,0,0.25826,0.460127,-0.5, + -0.718122,0.695917,0,0.317323,0.526334,-0.5, + -0.680327,0.681689,0.269175,0.337674,0.522283,-0.374844, + -0.680327,0.681689,0.269175,0.337674,0.522283,-0.374844, + -0.778413,0.562971,0.277735,0.280379,0.456545,-0.365, + -0.786635,0.617419,0,0.25826,0.460127,-0.5, + -0.680327,0.681689,0.269175,0.337674,0.522283,-0.374844, + -0.490654,0.624331,0.60784,0.398726,0.51013,-0.270547, + -0.59415,0.505848,0.625383,0.346736,0.445797,-0.2525, + -0.59415,0.505848,0.625383,0.346736,0.445797,-0.2525, + -0.778413,0.562971,0.277735,0.280379,0.456545,-0.365, + -0.680327,0.681689,0.269175,0.337674,0.522283,-0.374844, + -0.862657,0.31434,-0.396249,0.239242,0.386194,-0.6395, + -0.645198,0.198269,-0.737841,0.308193,0.377118,-0.75575, + -0.59415,0.505848,-0.625383,0.346736,0.445797,-0.7475, + -0.59415,0.505848,-0.625383,0.346736,0.445797,-0.7475, + -0.778414,0.562971,-0.277735,0.280379,0.456545,-0.635, + -0.862657,0.31434,-0.396249,0.239242,0.386194,-0.6395, + -0.59415,0.505848,-0.625383,0.346736,0.445797,-0.7475, + -0.490654,0.624331,-0.60784,0.398726,0.51013,-0.729453, + -0.680327,0.681689,-0.269175,0.337674,0.522283,-0.625156, + -0.680327,0.681689,-0.269175,0.337674,0.522283,-0.625156, + -0.778414,0.562971,-0.277735,0.280379,0.456545,-0.635, + -0.59415,0.505848,-0.625383,0.346736,0.445797,-0.7475, + -0.680327,0.681689,-0.269175,0.337674,0.522283,-0.625156, + -0.718122,0.695917,0,0.317323,0.526334,-0.5, + -0.786635,0.617419,0,0.25826,0.460127,-0.5, + -0.786635,0.617419,0,0.25826,0.460127,-0.5, + -0.778414,0.562971,-0.277735,0.280379,0.456545,-0.635, + -0.680327,0.681689,-0.269175,0.337674,0.522283,-0.625156, + -0.940313,0.340311,0,0.216258,0.389219,-0.5, + -0.862657,0.31434,-0.396249,0.239242,0.386194,-0.6395, + -0.778414,0.562971,-0.277735,0.280379,0.456545,-0.635, + -0.940313,0.340311,0,0.216258,0.389219,-0.5, + -0.778414,0.562971,-0.277735,0.280379,0.456545,-0.635, + -0.786635,0.617419,0,0.25826,0.460127,-0.5, + -0.68646,-0.277096,-0.672303,0.316229,0.114342,-0.690781, + -0.340489,-0.258832,-0.903921,0.402791,0.111771,-0.742813, + -0.337162,-0.377107,-0.86262,0.400082,0.165542,-0.765125, + -0.68646,-0.277096,-0.672303,0.316229,0.114342,-0.690781, + -0.337162,-0.377107,-0.86262,0.400082,0.165542,-0.765125, + -0.681322,-0.324401,-0.656174,0.305709,0.170683,-0.708313, + -0.009985,-0.330184,-0.943864,0.506665,0.108686,-0.760156, + -0.024814,-0.431442,-0.901799,0.513329,0.159372,-0.784063, + -0.337162,-0.377107,-0.86262,0.400082,0.165542,-0.765125, + -0.009985,-0.330184,-0.943864,0.506665,0.108686,-0.760156, + -0.337162,-0.377107,-0.86262,0.400082,0.165542,-0.765125, + -0.340489,-0.258832,-0.903921,0.402791,0.111771,-0.742813, + -0.024814,-0.431442,-0.901799,0.513329,0.159372,-0.784063, + -0.034163,-0.398975,-0.916325,0.52383,0.217409,-0.812891, + -0.348349,-0.345034,-0.871553,0.399335,0.22743,-0.792031, + -0.348349,-0.345034,-0.871553,0.399335,0.22743,-0.792031, + -0.337162,-0.377107,-0.86262,0.400082,0.165542,-0.765125, + -0.024814,-0.431442,-0.901799,0.513329,0.159372,-0.784063, + -0.348349,-0.345034,-0.871553,0.399335,0.22743,-0.792031, + -0.700275,-0.236966,-0.673395,0.295589,0.235781,-0.729453, + -0.681322,-0.324401,-0.656174,0.305709,0.170683,-0.708313, + -0.681322,-0.324401,-0.656174,0.305709,0.170683,-0.708313, + -0.337162,-0.377107,-0.86262,0.400082,0.165542,-0.765125, + -0.348349,-0.345034,-0.871553,0.399335,0.22743,-0.792031, + 0.612462,-0.474039,-0.632596,0.6971,0.103031,-0.690781, + 0.562161,-0.569598,-0.59961,0.72095,0.148061,-0.708313, + 0.274839,-0.496479,-0.823391,0.626577,0.153203,-0.765125, + 0.612462,-0.474039,-0.632596,0.6971,0.103031,-0.690781, + 0.274839,-0.496479,-0.823391,0.626577,0.153203,-0.765125, + 0.309535,-0.382382,-0.870616,0.610539,0.105601,-0.742813, + 0.562161,-0.569598,-0.59961,0.72095,0.148061,-0.708313, + 0.562307,-0.55594,-0.612162,0.75207,0.199038,-0.729453, + 0.267074,-0.480259,-0.835478,0.648325,0.207388,-0.792031, + 0.267074,-0.480259,-0.835478,0.648325,0.207388,-0.792031, + 0.274839,-0.496479,-0.823391,0.626577,0.153203,-0.765125, + 0.562161,-0.569598,-0.59961,0.72095,0.148061,-0.708313, + -0.034163,-0.398975,-0.916325,0.52383,0.217409,-0.812891, + -0.024814,-0.431442,-0.901799,0.513329,0.159372,-0.784063, + 0.274839,-0.496479,-0.823391,0.626577,0.153203,-0.765125, + -0.034163,-0.398975,-0.916325,0.52383,0.217409,-0.812891, + 0.274839,-0.496479,-0.823391,0.626577,0.153203,-0.765125, + 0.267074,-0.480259,-0.835478,0.648325,0.207388,-0.792031, + -0.024814,-0.431442,-0.901799,0.513329,0.159372,-0.784063, + -0.009985,-0.330184,-0.943864,0.506665,0.108686,-0.760156, + 0.309535,-0.382382,-0.870616,0.610539,0.105601,-0.742813, + 0.309535,-0.382382,-0.870616,0.610539,0.105601,-0.742813, + 0.274839,-0.496479,-0.823391,0.626577,0.153203,-0.765125, + -0.024814,-0.431442,-0.901799,0.513329,0.159372,-0.784063, + 0.603048,-0.457417,-0.653531,0.78489,0.253894,-0.7475, + 0.63763,-0.234074,-0.733919,0.81384,0.310563,-0.75575, + 0.330471,-0.133893,-0.93427,0.69892,0.325689,-0.8255, + 0.330471,-0.133893,-0.93427,0.69892,0.325689,-0.8255, + 0.285459,-0.369325,-0.884371,0.673275,0.265703,-0.815, + 0.603048,-0.457417,-0.653531,0.78489,0.253894,-0.7475, + 0.001894,-0.000876,-0.999998,0.561017,0.343841,-0.84875, + -0.029604,-0.263,-0.964342,0.539336,0.279873,-0.8375, + 0.285459,-0.369325,-0.884371,0.673275,0.265703,-0.815, + 0.001894,-0.000876,-0.999998,0.561017,0.343841,-0.84875, + 0.285459,-0.369325,-0.884371,0.673275,0.265703,-0.815, + 0.330471,-0.133893,-0.93427,0.69892,0.325689,-0.8255, + -0.029604,-0.263,-0.964342,0.539336,0.279873,-0.8375, + -0.034163,-0.398975,-0.916325,0.52383,0.217409,-0.812891, + 0.267074,-0.480259,-0.835478,0.648325,0.207388,-0.792031, + 0.267074,-0.480259,-0.835478,0.648325,0.207388,-0.792031, + 0.285459,-0.369325,-0.884371,0.673275,0.265703,-0.815, + -0.029604,-0.263,-0.964342,0.539336,0.279873,-0.8375, + 0.562307,-0.55594,-0.612162,0.75207,0.199038,-0.729453, + 0.603048,-0.457417,-0.653531,0.78489,0.253894,-0.7475, + 0.285459,-0.369325,-0.884371,0.673275,0.265703,-0.815, + 0.562307,-0.55594,-0.612162,0.75207,0.199038,-0.729453, + 0.285459,-0.369325,-0.884371,0.673275,0.265703,-0.815, + 0.267074,-0.480259,-0.835478,0.648325,0.207388,-0.792031, + -0.645198,0.198269,-0.737841,0.308193,0.377118,-0.75575, + -0.746027,-0.030098,-0.665235,0.293781,0.305853,-0.7475, + -0.383319,-0.173246,-0.907222,0.405397,0.294044,-0.815, + -0.645198,0.198269,-0.737841,0.308193,0.377118,-0.75575, + -0.383319,-0.173246,-0.907222,0.405397,0.294044,-0.815, + -0.328501,0.124794,-0.936223,0.423113,0.361992,-0.8255, + -0.700275,-0.236966,-0.673395,0.295589,0.235781,-0.729453, + -0.348349,-0.345034,-0.871553,0.399335,0.22743,-0.792031, + -0.383319,-0.173246,-0.907222,0.405397,0.294044,-0.815, + -0.700275,-0.236966,-0.673395,0.295589,0.235781,-0.729453, + -0.383319,-0.173246,-0.907222,0.405397,0.294044,-0.815, + -0.746027,-0.030098,-0.665235,0.293781,0.305853,-0.7475, + -0.034163,-0.398975,-0.916325,0.52383,0.217409,-0.812891, + -0.029604,-0.263,-0.964342,0.539336,0.279873,-0.8375, + -0.383319,-0.173246,-0.907222,0.405397,0.294044,-0.815, + -0.034163,-0.398975,-0.916325,0.52383,0.217409,-0.812891, + -0.383319,-0.173246,-0.907222,0.405397,0.294044,-0.815, + -0.348349,-0.345034,-0.871553,0.399335,0.22743,-0.792031, + -0.029604,-0.263,-0.964342,0.539336,0.279873,-0.8375, + 0.001894,-0.000876,-0.999998,0.561017,0.343841,-0.84875, + -0.328501,0.124794,-0.936223,0.423113,0.361992,-0.8255, + -0.328501,0.124794,-0.936223,0.423113,0.361992,-0.8255, + -0.383319,-0.173246,-0.907222,0.405397,0.294044,-0.815, + -0.029604,-0.263,-0.964342,0.539336,0.279873,-0.8375, + -0.68646,-0.277096,-0.672303,0.316229,0.114342,-0.690781, + -0.681322,-0.324401,-0.656174,0.305709,0.170683,-0.708313, + -0.90316,-0.279949,-0.32547,0.249085,0.173768,-0.613625, + -0.68646,-0.277096,-0.672303,0.316229,0.114342,-0.690781, + -0.90316,-0.279949,-0.32547,0.249085,0.173768,-0.613625, + -0.917766,-0.211835,-0.335904,0.264292,0.115884,-0.604062, + -0.681322,-0.324401,-0.656174,0.305709,0.170683,-0.708313, + -0.700275,-0.236966,-0.673395,0.295589,0.235781,-0.729453, + -0.92222,-0.200491,-0.330626,0.233342,0.240791,-0.625156, + -0.92222,-0.200491,-0.330626,0.233342,0.240791,-0.625156, + -0.90316,-0.279949,-0.32547,0.249085,0.173768,-0.613625, + -0.681322,-0.324401,-0.656174,0.305709,0.170683,-0.708313, + -0.978535,-0.206083,0,0.212593,0.242461,-0.5, + -0.963203,-0.268774,0,0.23021,0.174796,-0.5, + -0.90316,-0.279949,-0.32547,0.249085,0.173768,-0.613625, + -0.978535,-0.206083,0,0.212593,0.242461,-0.5, + -0.90316,-0.279949,-0.32547,0.249085,0.173768,-0.613625, + -0.92222,-0.200491,-0.330626,0.233342,0.240791,-0.625156, + -0.963203,-0.268774,0,0.23021,0.174796,-0.5, + -0.984639,-0.174604,0,0.24698,0.116398,-0.5, + -0.917766,-0.211835,-0.335904,0.264292,0.115884,-0.604062, + -0.917766,-0.211835,-0.335904,0.264292,0.115884,-0.604062, + -0.90316,-0.279949,-0.32547,0.249085,0.173768,-0.613625, + -0.963203,-0.268774,0,0.23021,0.174796,-0.5, + -0.746027,-0.030098,-0.665235,0.293781,0.305853,-0.7475, + -0.645198,0.198269,-0.737841,0.308193,0.377118,-0.75575, + -0.862657,0.31434,-0.396249,0.239242,0.386194,-0.6395, + -0.862657,0.31434,-0.396249,0.239242,0.386194,-0.6395, + -0.939405,0.002804,-0.342799,0.226812,0.312938,-0.635, + -0.746027,-0.030098,-0.665235,0.293781,0.305853,-0.7475, + -0.940313,0.340311,0,0.216258,0.389219,-0.5, + -0.999757,-0.022023,0,0.204489,0.3153,-0.5, + -0.939405,0.002804,-0.342799,0.226812,0.312938,-0.635, + -0.940313,0.340311,0,0.216258,0.389219,-0.5, + -0.939405,0.002804,-0.342799,0.226812,0.312938,-0.635, + -0.862657,0.31434,-0.396249,0.239242,0.386194,-0.6395, + -0.999757,-0.022023,0,0.204489,0.3153,-0.5, + -0.978535,-0.206083,0,0.212593,0.242461,-0.5, + -0.92222,-0.200491,-0.330626,0.233342,0.240791,-0.625156, + -0.92222,-0.200491,-0.330626,0.233342,0.240791,-0.625156, + -0.939405,0.002804,-0.342799,0.226812,0.312938,-0.635, + -0.999757,-0.022023,0,0.204489,0.3153,-0.5, + -0.700275,-0.236966,-0.673395,0.295589,0.235781,-0.729453, + -0.746027,-0.030098,-0.665235,0.293781,0.305853,-0.7475, + -0.939405,0.002804,-0.342799,0.226812,0.312938,-0.635, + -0.700275,-0.236966,-0.673395,0.295589,0.235781,-0.729453, + -0.939405,0.002804,-0.342799,0.226812,0.312938,-0.635, + -0.92222,-0.200491,-0.330626,0.233342,0.240791,-0.625156, + -0.862657,0.31434,0.396249,0.239242,0.386194,-0.3605, + -0.645198,0.198269,0.737841,0.308193,0.377118,-0.24425, + -0.746027,-0.030098,0.665236,0.293781,0.305853,-0.2525, + -0.746027,-0.030098,0.665236,0.293781,0.305853,-0.2525, + -0.939405,0.002804,0.342799,0.226812,0.312938,-0.365, + -0.862657,0.31434,0.396249,0.239242,0.386194,-0.3605, + -0.700275,-0.236966,0.673395,0.295589,0.235781,-0.270547, + -0.92222,-0.200492,0.330626,0.233342,0.240791,-0.374844, + -0.939405,0.002804,0.342799,0.226812,0.312938,-0.365, + -0.700275,-0.236966,0.673395,0.295589,0.235781,-0.270547, + -0.939405,0.002804,0.342799,0.226812,0.312938,-0.365, + -0.746027,-0.030098,0.665236,0.293781,0.305853,-0.2525, + -0.92222,-0.200492,0.330626,0.233342,0.240791,-0.374844, + -0.978535,-0.206083,0,0.212593,0.242461,-0.5, + -0.999757,-0.022023,0,0.204489,0.3153,-0.5, + -0.999757,-0.022023,0,0.204489,0.3153,-0.5, + -0.939405,0.002804,0.342799,0.226812,0.312938,-0.365, + -0.92222,-0.200492,0.330626,0.233342,0.240791,-0.374844, + -0.940313,0.340311,0,0.216258,0.389219,-0.5, + -0.862657,0.31434,0.396249,0.239242,0.386194,-0.3605, + -0.939405,0.002804,0.342799,0.226812,0.312938,-0.365, + -0.940313,0.340311,0,0.216258,0.389219,-0.5, + -0.939405,0.002804,0.342799,0.226812,0.312938,-0.365, + -0.999757,-0.022023,0,0.204489,0.3153,-0.5, + -0.68646,-0.277096,0.672303,0.316229,0.114342,-0.309219, + -0.917766,-0.211835,0.335904,0.264292,0.115884,-0.395938, + -0.90316,-0.279949,0.32547,0.249085,0.173768,-0.386375, + -0.68646,-0.277096,0.672303,0.316229,0.114342,-0.309219, + -0.90316,-0.279949,0.32547,0.249085,0.173768,-0.386375, + -0.681322,-0.324401,0.656174,0.305709,0.170683,-0.291687, + -0.917766,-0.211835,0.335904,0.264292,0.115884,-0.395938, + -0.984639,-0.174604,0,0.24698,0.116398,-0.5, + -0.963203,-0.268774,0,0.23021,0.174796,-0.5, + -0.963203,-0.268774,0,0.23021,0.174796,-0.5, + -0.90316,-0.279949,0.32547,0.249085,0.173768,-0.386375, + -0.917766,-0.211835,0.335904,0.264292,0.115884,-0.395938, + -0.978535,-0.206083,0,0.212593,0.242461,-0.5, + -0.92222,-0.200492,0.330626,0.233342,0.240791,-0.374844, + -0.90316,-0.279949,0.32547,0.249085,0.173768,-0.386375, + -0.978535,-0.206083,0,0.212593,0.242461,-0.5, + -0.90316,-0.279949,0.32547,0.249085,0.173768,-0.386375, + -0.963203,-0.268774,0,0.23021,0.174796,-0.5, + -0.92222,-0.200492,0.330626,0.233342,0.240791,-0.374844, + -0.700275,-0.236966,0.673395,0.295589,0.235781,-0.270547, + -0.681322,-0.324401,0.656174,0.305709,0.170683,-0.291687, + -0.681322,-0.324401,0.656174,0.305709,0.170683,-0.291687, + -0.90316,-0.279949,0.32547,0.249085,0.173768,-0.386375, + -0.92222,-0.200492,0.330626,0.233342,0.240791,-0.374844, + -0.68646,-0.277096,0.672303,0.316229,0.114342,-0.309219, + -0.681322,-0.324401,0.656174,0.305709,0.170683,-0.291687, + -0.337162,-0.377107,0.862619,0.400082,0.165542,-0.234875, + -0.68646,-0.277096,0.672303,0.316229,0.114342,-0.309219, + -0.337162,-0.377107,0.862619,0.400082,0.165542,-0.234875, + -0.340489,-0.258832,0.903921,0.402791,0.111771,-0.257187, + -0.681322,-0.324401,0.656174,0.305709,0.170683,-0.291687, + -0.700275,-0.236966,0.673395,0.295589,0.235781,-0.270547, + -0.34835,-0.345034,0.871553,0.399335,0.22743,-0.207969, + -0.34835,-0.345034,0.871553,0.399335,0.22743,-0.207969, + -0.337162,-0.377107,0.862619,0.400082,0.165542,-0.234875, + -0.681322,-0.324401,0.656174,0.305709,0.170683,-0.291687, + -0.34835,-0.345034,0.871553,0.399335,0.22743,-0.207969, + -0.034164,-0.398975,0.916325,0.52383,0.217409,-0.187109, + -0.024814,-0.431443,0.901799,0.513329,0.159372,-0.215937, + -0.024814,-0.431443,0.901799,0.513329,0.159372,-0.215937, + -0.337162,-0.377107,0.862619,0.400082,0.165542,-0.234875, + -0.34835,-0.345034,0.871553,0.399335,0.22743,-0.207969, + -0.009985,-0.330184,0.943864,0.506665,0.108686,-0.239844, + -0.340489,-0.258832,0.903921,0.402791,0.111771,-0.257187, + -0.337162,-0.377107,0.862619,0.400082,0.165542,-0.234875, + -0.009985,-0.330184,0.943864,0.506665,0.108686,-0.239844, + -0.337162,-0.377107,0.862619,0.400082,0.165542,-0.234875, + -0.024814,-0.431443,0.901799,0.513329,0.159372,-0.215937, + -0.645198,0.198269,0.737841,0.308193,0.377118,-0.24425, + -0.328501,0.124794,0.936223,0.423113,0.361992,-0.1745, + -0.383319,-0.173246,0.907222,0.405397,0.294044,-0.185, + -0.645198,0.198269,0.737841,0.308193,0.377118,-0.24425, + -0.383319,-0.173246,0.907222,0.405397,0.294044,-0.185, + -0.746027,-0.030098,0.665236,0.293781,0.305853,-0.2525, + -0.328501,0.124794,0.936223,0.423113,0.361992,-0.1745, + 0.001894,-0.000875,0.999998,0.561017,0.343841,-0.15125, + -0.029604,-0.263,0.964342,0.539336,0.279873,-0.1625, + -0.029604,-0.263,0.964342,0.539336,0.279873,-0.1625, + -0.383319,-0.173246,0.907222,0.405397,0.294044,-0.185, + -0.328501,0.124794,0.936223,0.423113,0.361992,-0.1745, + -0.034164,-0.398975,0.916325,0.52383,0.217409,-0.187109, + -0.34835,-0.345034,0.871553,0.399335,0.22743,-0.207969, + -0.383319,-0.173246,0.907222,0.405397,0.294044,-0.185, + -0.034164,-0.398975,0.916325,0.52383,0.217409,-0.187109, + -0.383319,-0.173246,0.907222,0.405397,0.294044,-0.185, + -0.029604,-0.263,0.964342,0.539336,0.279873,-0.1625, + -0.700275,-0.236966,0.673395,0.295589,0.235781,-0.270547, + -0.746027,-0.030098,0.665236,0.293781,0.305853,-0.2525, + -0.383319,-0.173246,0.907222,0.405397,0.294044,-0.185, + -0.700275,-0.236966,0.673395,0.295589,0.235781,-0.270547, + -0.383319,-0.173246,0.907222,0.405397,0.294044,-0.185, + -0.34835,-0.345034,0.871553,0.399335,0.22743,-0.207969, + 0.330471,-0.133893,0.93427,0.69892,0.325689,-0.1745, + 0.63763,-0.234074,0.733919,0.81384,0.310563,-0.24425, + 0.603048,-0.457417,0.653531,0.78489,0.253894,-0.2525, + 0.603048,-0.457417,0.653531,0.78489,0.253894,-0.2525, + 0.285459,-0.369325,0.884371,0.673275,0.265703,-0.185, + 0.330471,-0.133893,0.93427,0.69892,0.325689,-0.1745, + 0.562306,-0.55594,0.612162,0.75207,0.199038,-0.270547, + 0.267074,-0.480259,0.835478,0.648325,0.207388,-0.207969, + 0.285459,-0.369325,0.884371,0.673275,0.265703,-0.185, + 0.562306,-0.55594,0.612162,0.75207,0.199038,-0.270547, + 0.285459,-0.369325,0.884371,0.673275,0.265703,-0.185, + 0.603048,-0.457417,0.653531,0.78489,0.253894,-0.2525, + 0.267074,-0.480259,0.835478,0.648325,0.207388,-0.207969, + -0.034164,-0.398975,0.916325,0.52383,0.217409,-0.187109, + -0.029604,-0.263,0.964342,0.539336,0.279873,-0.1625, + -0.029604,-0.263,0.964342,0.539336,0.279873,-0.1625, + 0.285459,-0.369325,0.884371,0.673275,0.265703,-0.185, + 0.267074,-0.480259,0.835478,0.648325,0.207388,-0.207969, + 0.001894,-0.000875,0.999998,0.561017,0.343841,-0.15125, + 0.330471,-0.133893,0.93427,0.69892,0.325689,-0.1745, + 0.285459,-0.369325,0.884371,0.673275,0.265703,-0.185, + 0.001894,-0.000875,0.999998,0.561017,0.343841,-0.15125, + 0.285459,-0.369325,0.884371,0.673275,0.265703,-0.185, + -0.029604,-0.263,0.964342,0.539336,0.279873,-0.1625, + 0.612462,-0.474038,0.632596,0.6971,0.103031,-0.309219, + 0.309535,-0.382382,0.870616,0.610539,0.105601,-0.257187, + 0.274839,-0.496479,0.823391,0.626577,0.153203,-0.234875, + 0.612462,-0.474038,0.632596,0.6971,0.103031,-0.309219, + 0.274839,-0.496479,0.823391,0.626577,0.153203,-0.234875, + 0.562162,-0.569598,0.59961,0.72095,0.148061,-0.291687, + 0.309535,-0.382382,0.870616,0.610539,0.105601,-0.257187, + -0.009985,-0.330184,0.943864,0.506665,0.108686,-0.239844, + -0.024814,-0.431443,0.901799,0.513329,0.159372,-0.215937, + -0.024814,-0.431443,0.901799,0.513329,0.159372,-0.215937, + 0.274839,-0.496479,0.823391,0.626577,0.153203,-0.234875, + 0.309535,-0.382382,0.870616,0.610539,0.105601,-0.257187, + -0.034164,-0.398975,0.916325,0.52383,0.217409,-0.187109, + 0.267074,-0.480259,0.835478,0.648325,0.207388,-0.207969, + 0.274839,-0.496479,0.823391,0.626577,0.153203,-0.234875, + -0.034164,-0.398975,0.916325,0.52383,0.217409,-0.187109, + 0.274839,-0.496479,0.823391,0.626577,0.153203,-0.234875, + -0.024814,-0.431443,0.901799,0.513329,0.159372,-0.215937, + 0.267074,-0.480259,0.835478,0.648325,0.207388,-0.207969, + 0.562306,-0.55594,0.612162,0.75207,0.199038,-0.270547, + 0.562162,-0.569598,0.59961,0.72095,0.148061,-0.291687, + 0.562162,-0.569598,0.59961,0.72095,0.148061,-0.291687, + 0.274839,-0.496479,0.823391,0.626577,0.153203,-0.234875, + 0.267074,-0.480259,0.835478,0.648325,0.207388,-0.207969, + 0.612462,-0.474038,0.632596,0.6971,0.103031,-0.309219, + 0.562162,-0.569598,0.59961,0.72095,0.148061,-0.291687, + 0.752224,-0.592299,0.288689,0.777574,0.144976,-0.386375, + 0.612462,-0.474038,0.632596,0.6971,0.103031,-0.309219, + 0.752224,-0.592299,0.288689,0.777574,0.144976,-0.386375, + 0.829185,-0.462729,0.313581,0.749037,0.101488,-0.395938, + 0.562162,-0.569598,0.59961,0.72095,0.148061,-0.291687, + 0.562306,-0.55594,0.612162,0.75207,0.199038,-0.270547, + 0.743616,-0.602792,0.28927,0.814318,0.194027,-0.374844, + 0.743616,-0.602792,0.28927,0.814318,0.194027,-0.374844, + 0.752224,-0.592299,0.288689,0.777574,0.144976,-0.386375, + 0.562162,-0.569598,0.59961,0.72095,0.148061,-0.291687, + 0.788677,-0.614808,0,0.835067,0.192357,-0.5, + 0.807803,-0.589452,0,0.796449,0.143948,-0.5, + 0.752224,-0.592299,0.288689,0.777574,0.144976,-0.386375, + 0.788677,-0.614808,0,0.835067,0.192357,-0.5, + 0.752224,-0.592299,0.288689,0.777574,0.144976,-0.386375, + 0.743616,-0.602792,0.28927,0.814318,0.194027,-0.374844, + 0.807803,-0.589452,0,0.796449,0.143948,-0.5, + 0.902893,-0.429866,0,0.766349,0.100974,-0.5, + 0.829185,-0.462729,0.313581,0.749037,0.101488,-0.395938, + 0.829185,-0.462729,0.313581,0.749037,0.101488,-0.395938, + 0.752224,-0.592299,0.288689,0.777574,0.144976,-0.386375, + 0.807803,-0.589452,0,0.796449,0.143948,-0.5, + 0.603048,-0.457417,0.653531,0.78489,0.253894,-0.2525, + 0.63763,-0.234074,0.733919,0.81384,0.310563,-0.24425, + 0.846641,-0.361408,0.39062,0.882792,0.301487,-0.3605, + 0.846641,-0.361408,0.39062,0.882792,0.301487,-0.3605, + 0.784719,-0.539182,0.305775,0.85186,0.246808,-0.365, + 0.603048,-0.457417,0.653531,0.78489,0.253894,-0.2525, + 0.918091,-0.39637,0,0.905776,0.298462,-0.5, + 0.822786,-0.568352,0,0.874183,0.244447,-0.5, + 0.784719,-0.539182,0.305775,0.85186,0.246808,-0.365, + 0.918091,-0.39637,0,0.905776,0.298462,-0.5, + 0.784719,-0.539182,0.305775,0.85186,0.246808,-0.365, + 0.846641,-0.361408,0.39062,0.882792,0.301487,-0.3605, + 0.822786,-0.568352,0,0.874183,0.244447,-0.5, + 0.788677,-0.614808,0,0.835067,0.192357,-0.5, + 0.743616,-0.602792,0.28927,0.814318,0.194027,-0.374844, + 0.743616,-0.602792,0.28927,0.814318,0.194027,-0.374844, + 0.784719,-0.539182,0.305775,0.85186,0.246808,-0.365, + 0.822786,-0.568352,0,0.874183,0.244447,-0.5, + 0.562306,-0.55594,0.612162,0.75207,0.199038,-0.270547, + 0.603048,-0.457417,0.653531,0.78489,0.253894,-0.2525, + 0.784719,-0.539182,0.305775,0.85186,0.246808,-0.365, + 0.562306,-0.55594,0.612162,0.75207,0.199038,-0.270547, + 0.784719,-0.539182,0.305775,0.85186,0.246808,-0.365, + 0.743616,-0.602792,0.28927,0.814318,0.194027,-0.374844, + 0.846641,-0.361408,-0.390619,0.882792,0.301487,-0.6395, + 0.63763,-0.234074,-0.733919,0.81384,0.310563,-0.75575, + 0.603048,-0.457417,-0.653531,0.78489,0.253894,-0.7475, + 0.603048,-0.457417,-0.653531,0.78489,0.253894,-0.7475, + 0.784719,-0.539182,-0.305775,0.85186,0.246808,-0.635, + 0.846641,-0.361408,-0.390619,0.882792,0.301487,-0.6395, + 0.562307,-0.55594,-0.612162,0.75207,0.199038,-0.729453, + 0.743616,-0.602791,-0.28927,0.814318,0.194027,-0.625156, + 0.784719,-0.539182,-0.305775,0.85186,0.246808,-0.635, + 0.562307,-0.55594,-0.612162,0.75207,0.199038,-0.729453, + 0.784719,-0.539182,-0.305775,0.85186,0.246808,-0.635, + 0.603048,-0.457417,-0.653531,0.78489,0.253894,-0.7475, + 0.743616,-0.602791,-0.28927,0.814318,0.194027,-0.625156, + 0.788677,-0.614808,0,0.835067,0.192357,-0.5, + 0.822786,-0.568352,0,0.874183,0.244447,-0.5, + 0.822786,-0.568352,0,0.874183,0.244447,-0.5, + 0.784719,-0.539182,-0.305775,0.85186,0.246808,-0.635, + 0.743616,-0.602791,-0.28927,0.814318,0.194027,-0.625156, + 0.918091,-0.39637,0,0.905776,0.298462,-0.5, + 0.846641,-0.361408,-0.390619,0.882792,0.301487,-0.6395, + 0.784719,-0.539182,-0.305775,0.85186,0.246808,-0.635, + 0.918091,-0.39637,0,0.905776,0.298462,-0.5, + 0.784719,-0.539182,-0.305775,0.85186,0.246808,-0.635, + 0.822786,-0.568352,0,0.874183,0.244447,-0.5, + 0.612462,-0.474039,-0.632596,0.6971,0.103031,-0.690781, + 0.829185,-0.462729,-0.313581,0.749037,0.101488,-0.604062, + 0.752224,-0.592299,-0.288689,0.777574,0.144976,-0.613625, + 0.612462,-0.474039,-0.632596,0.6971,0.103031,-0.690781, + 0.752224,-0.592299,-0.288689,0.777574,0.144976,-0.613625, + 0.562161,-0.569598,-0.59961,0.72095,0.148061,-0.708313, + 0.829185,-0.462729,-0.313581,0.749037,0.101488,-0.604062, + 0.902893,-0.429866,0,0.766349,0.100974,-0.5, + 0.807803,-0.589452,0,0.796449,0.143948,-0.5, + 0.807803,-0.589452,0,0.796449,0.143948,-0.5, + 0.752224,-0.592299,-0.288689,0.777574,0.144976,-0.613625, + 0.829185,-0.462729,-0.313581,0.749037,0.101488,-0.604062, + 0.788677,-0.614808,0,0.835067,0.192357,-0.5, + 0.743616,-0.602791,-0.28927,0.814318,0.194027,-0.625156, + 0.752224,-0.592299,-0.288689,0.777574,0.144976,-0.613625, + 0.788677,-0.614808,0,0.835067,0.192357,-0.5, + 0.752224,-0.592299,-0.288689,0.777574,0.144976,-0.613625, + 0.807803,-0.589452,0,0.796449,0.143948,-0.5, + 0.743616,-0.602791,-0.28927,0.814318,0.194027,-0.625156, + 0.562307,-0.55594,-0.612162,0.75207,0.199038,-0.729453, + 0.562161,-0.569598,-0.59961,0.72095,0.148061,-0.708313, + 0.562161,-0.569598,-0.59961,0.72095,0.148061,-0.708313, + 0.752224,-0.592299,-0.288689,0.777574,0.144976,-0.613625, + 0.743616,-0.602791,-0.28927,0.814318,0.194027,-0.625156, + 0.662382,-0.336592,0.669295,0.68609,0.066012,-0.316437, + 0.612462,-0.474038,0.632596,0.6971,0.103031,-0.309219, + 0.829185,-0.462729,0.313581,0.749037,0.101488,-0.395938, + 0.829185,-0.462729,0.313581,0.749037,0.101488,-0.395938, + 0.877019,-0.354062,0.324773,0.736115,0.065395,-0.399875, + 0.662382,-0.336592,0.669295,0.68609,0.066012,-0.316437, + 0.902893,-0.429866,0,0.766349,0.100974,-0.5, + 0.936513,-0.350633,0,0.75279,0.06519,-0.5, + 0.877019,-0.354062,0.324773,0.736115,0.065395,-0.399875, + 0.902893,-0.429866,0,0.766349,0.100974,-0.5, + 0.877019,-0.354062,0.324773,0.736115,0.065395,-0.399875, + 0.829185,-0.462729,0.313581,0.749037,0.101488,-0.395938, + 0.936513,-0.350633,0,0.75279,0.06519,-0.5, + 0.796583,-0.60453,0,0.742322,0.036664,-0.5, + 0.776532,-0.563325,0.282246,0.726029,0.037019,-0.403594, + 0.776532,-0.563325,0.282246,0.726029,0.037019,-0.403594, + 0.877019,-0.354062,0.324773,0.736115,0.065395,-0.399875, + 0.936513,-0.350633,0,0.75279,0.06519,-0.5, + 0.609651,-0.5022,0.613287,0.677491,0.037477,-0.323141, + 0.662382,-0.336592,0.669295,0.68609,0.066012,-0.316437, + 0.877019,-0.354062,0.324773,0.736115,0.065395,-0.399875, + 0.609651,-0.5022,0.613287,0.677491,0.037477,-0.323141, + 0.877019,-0.354062,0.324773,0.736115,0.065395,-0.399875, + 0.776532,-0.563325,0.282246,0.726029,0.037019,-0.403594, + 0.829185,-0.462729,-0.313581,0.749037,0.101488,-0.604062, + 0.612462,-0.474039,-0.632596,0.6971,0.103031,-0.690781, + 0.662382,-0.336592,-0.669295,0.68609,0.066012,-0.683563, + 0.662382,-0.336592,-0.669295,0.68609,0.066012,-0.683563, + 0.877019,-0.354062,-0.324773,0.736115,0.065395,-0.600125, + 0.829185,-0.462729,-0.313581,0.749037,0.101488,-0.604062, + 0.609651,-0.5022,-0.613287,0.677491,0.037477,-0.676859, + 0.776532,-0.563325,-0.282246,0.726029,0.037019,-0.596406, + 0.877019,-0.354062,-0.324773,0.736115,0.065395,-0.600125, + 0.609651,-0.5022,-0.613287,0.677491,0.037477,-0.676859, + 0.877019,-0.354062,-0.324773,0.736115,0.065395,-0.600125, + 0.662382,-0.336592,-0.669295,0.68609,0.066012,-0.683563, + 0.776532,-0.563325,-0.282246,0.726029,0.037019,-0.596406, + 0.796583,-0.60453,0,0.742322,0.036664,-0.5, + 0.936513,-0.350633,0,0.75279,0.06519,-0.5, + 0.936513,-0.350633,0,0.75279,0.06519,-0.5, + 0.877019,-0.354062,-0.324773,0.736115,0.065395,-0.600125, + 0.776532,-0.563325,-0.282246,0.726029,0.037019,-0.596406, + 0.902893,-0.429866,0,0.766349,0.100974,-0.5, + 0.829185,-0.462729,-0.313581,0.749037,0.101488,-0.604062, + 0.877019,-0.354062,-0.324773,0.736115,0.065395,-0.600125, + 0.902893,-0.429866,0,0.766349,0.100974,-0.5, + 0.877019,-0.354062,-0.324773,0.736115,0.065395,-0.600125, + 0.936513,-0.350633,0,0.75279,0.06519,-0.5, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.460562,-0.87149,-0.168487,0.706,0.016681,-0.5875, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.460562,-0.87149,-0.168487,0.706,0.016681,-0.5875, + 0.392801,-0.830761,-0.394389,0.660875,0.017896,-0.660875, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.528671,-0.848827,0,0.7215,0.015465,-0.5, + 0.460562,-0.87149,-0.168487,0.706,0.016681,-0.5875, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.460562,-0.87149,-0.168487,0.706,0.016681,-0.5875, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.796583,-0.60453,0,0.742322,0.036664,-0.5, + 0.776532,-0.563325,-0.282246,0.726029,0.037019,-0.596406, + 0.460562,-0.87149,-0.168487,0.706,0.016681,-0.5875, + 0.796583,-0.60453,0,0.742322,0.036664,-0.5, + 0.460562,-0.87149,-0.168487,0.706,0.016681,-0.5875, + 0.528671,-0.848827,0,0.7215,0.015465,-0.5, + 0.776532,-0.563325,-0.282246,0.726029,0.037019,-0.596406, + 0.609651,-0.5022,-0.613287,0.677491,0.037477,-0.676859, + 0.392801,-0.830761,-0.394389,0.660875,0.017896,-0.660875, + 0.392801,-0.830761,-0.394389,0.660875,0.017896,-0.660875, + 0.460562,-0.87149,-0.168487,0.706,0.016681,-0.5875, + 0.776532,-0.563325,-0.282246,0.726029,0.037019,-0.596406, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.392801,-0.830761,0.394389,0.660875,0.017896,-0.339125, + 0.460562,-0.87149,0.168487,0.706,0.016681,-0.4125, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.460562,-0.87149,0.168487,0.706,0.016681,-0.4125, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0.392801,-0.830761,0.394389,0.660875,0.017896,-0.339125, + 0.609651,-0.5022,0.613287,0.677491,0.037477,-0.323141, + 0.776532,-0.563325,0.282246,0.726029,0.037019,-0.403594, + 0.776532,-0.563325,0.282246,0.726029,0.037019,-0.403594, + 0.460562,-0.87149,0.168487,0.706,0.016681,-0.4125, + 0.392801,-0.830761,0.394389,0.660875,0.017896,-0.339125, + 0.796583,-0.60453,0,0.742322,0.036664,-0.5, + 0.528671,-0.848827,0,0.7215,0.015465,-0.5, + 0.460562,-0.87149,0.168487,0.706,0.016681,-0.4125, + 0.796583,-0.60453,0,0.742322,0.036664,-0.5, + 0.460562,-0.87149,0.168487,0.706,0.016681,-0.4125, + 0.776532,-0.563325,0.282246,0.726029,0.037019,-0.403594, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0.460562,-0.87149,0.168487,0.706,0.016681,-0.4125, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.460562,-0.87149,0.168487,0.706,0.016681,-0.4125, + 0.528671,-0.848827,0,0.7215,0.015465,-0.5, + 0.662382,-0.336592,-0.669295,0.68609,0.066012,-0.683563, + 0.612462,-0.474039,-0.632596,0.6971,0.103031,-0.690781, + 0.309535,-0.382382,-0.870616,0.610539,0.105601,-0.742813, + 0.309535,-0.382382,-0.870616,0.610539,0.105601,-0.742813, + 0.325986,-0.296158,-0.897788,0.602715,0.067041,-0.733625, + 0.662382,-0.336592,-0.669295,0.68609,0.066012,-0.683563, + -0.009985,-0.330184,-0.943864,0.506665,0.108686,-0.760156, + -0.003719,-0.252904,-0.967484,0.502666,0.068274,-0.750313, + 0.325986,-0.296158,-0.897788,0.602715,0.067041,-0.733625, + -0.009985,-0.330184,-0.943864,0.506665,0.108686,-0.760156, + 0.325986,-0.296158,-0.897788,0.602715,0.067041,-0.733625, + 0.309535,-0.382382,-0.870616,0.610539,0.105601,-0.742813, + -0.003719,-0.252904,-0.967484,0.502666,0.068274,-0.750313, + -0.025551,-0.524875,-0.850796,0.500666,0.037435,-0.741703, + 0.28571,-0.534951,-0.795108,0.597054,0.03743,-0.725406, + 0.28571,-0.534951,-0.795108,0.597054,0.03743,-0.725406, + 0.325986,-0.296158,-0.897788,0.602715,0.067041,-0.733625, + -0.003719,-0.252904,-0.967484,0.502666,0.068274,-0.750313, + 0.609651,-0.5022,-0.613287,0.677491,0.037477,-0.676859, + 0.662382,-0.336592,-0.669295,0.68609,0.066012,-0.683563, + 0.325986,-0.296158,-0.897788,0.602715,0.067041,-0.733625, + 0.609651,-0.5022,-0.613287,0.677491,0.037477,-0.676859, + 0.325986,-0.296158,-0.897788,0.602715,0.067041,-0.733625, + 0.28571,-0.534951,-0.795108,0.597054,0.03743,-0.725406, + -0.340489,-0.258832,-0.903921,0.402791,0.111771,-0.742813, + -0.68646,-0.277096,-0.672303,0.316229,0.114342,-0.690781, + -0.696634,-0.190085,-0.691787,0.319242,0.070537,-0.683563, + -0.696634,-0.190085,-0.691787,0.319242,0.070537,-0.683563, + -0.33904,-0.236102,-0.910663,0.402616,0.069508,-0.733625, + -0.340489,-0.258832,-0.903921,0.402791,0.111771,-0.742813, + -0.643521,-0.419436,-0.640277,0.323842,0.038608,-0.676859, + -0.321508,-0.547444,-0.772617,0.404279,0.038047,-0.725406, + -0.33904,-0.236102,-0.910663,0.402616,0.069508,-0.733625, + -0.643521,-0.419436,-0.640277,0.323842,0.038608,-0.676859, + -0.33904,-0.236102,-0.910663,0.402616,0.069508,-0.733625, + -0.696634,-0.190085,-0.691787,0.319242,0.070537,-0.683563, + -0.025551,-0.524875,-0.850796,0.500666,0.037435,-0.741703, + -0.003719,-0.252904,-0.967484,0.502666,0.068274,-0.750313, + -0.33904,-0.236102,-0.910663,0.402616,0.069508,-0.733625, + -0.025551,-0.524875,-0.850796,0.500666,0.037435,-0.741703, + -0.33904,-0.236102,-0.910663,0.402616,0.069508,-0.733625, + -0.321508,-0.547444,-0.772617,0.404279,0.038047,-0.725406, + -0.003719,-0.252904,-0.967484,0.502666,0.068274,-0.750313, + -0.009985,-0.330184,-0.943864,0.506665,0.108686,-0.760156, + -0.340489,-0.258832,-0.903921,0.402791,0.111771,-0.742813, + -0.340489,-0.258832,-0.903921,0.402791,0.111771,-0.742813, + -0.33904,-0.236102,-0.910663,0.402616,0.069508,-0.733625, + -0.003719,-0.252904,-0.967484,0.502666,0.068274,-0.750313, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.173348,-0.862844,-0.474818,0.4125,0.016681,-0.706, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.173348,-0.862844,-0.474818,0.4125,0.016681,-0.706, + -0.412793,-0.812756,-0.411133,0.339125,0.017896,-0.660875, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + -0.000173,-0.840077,-0.542467,0.5,0.015465,-0.7215, + -0.173348,-0.862844,-0.474818,0.4125,0.016681,-0.706, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + -0.173348,-0.862844,-0.474818,0.4125,0.016681,-0.706, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.025551,-0.524875,-0.850796,0.500666,0.037435,-0.741703, + -0.321508,-0.547444,-0.772617,0.404279,0.038047,-0.725406, + -0.173348,-0.862844,-0.474818,0.4125,0.016681,-0.706, + -0.025551,-0.524875,-0.850796,0.500666,0.037435,-0.741703, + -0.173348,-0.862844,-0.474818,0.4125,0.016681,-0.706, + -0.000173,-0.840077,-0.542467,0.5,0.015465,-0.7215, + -0.321508,-0.547444,-0.772617,0.404279,0.038047,-0.725406, + -0.643521,-0.419436,-0.640277,0.323842,0.038608,-0.676859, + -0.412793,-0.812756,-0.411133,0.339125,0.017896,-0.660875, + -0.412793,-0.812756,-0.411133,0.339125,0.017896,-0.660875, + -0.173348,-0.862844,-0.474818,0.4125,0.016681,-0.706, + -0.321508,-0.547444,-0.772617,0.404279,0.038047,-0.725406, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.392801,-0.830761,-0.394389,0.660875,0.017896,-0.660875, + 0.170214,-0.866923,-0.468478,0.5875,0.016681,-0.706, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.170214,-0.866923,-0.468478,0.5875,0.016681,-0.706, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0.392801,-0.830761,-0.394389,0.660875,0.017896,-0.660875, + 0.609651,-0.5022,-0.613287,0.677491,0.037477,-0.676859, + 0.28571,-0.534951,-0.795108,0.597054,0.03743,-0.725406, + 0.28571,-0.534951,-0.795108,0.597054,0.03743,-0.725406, + 0.170214,-0.866923,-0.468478,0.5875,0.016681,-0.706, + 0.392801,-0.830761,-0.394389,0.660875,0.017896,-0.660875, + -0.025551,-0.524875,-0.850796,0.500666,0.037435,-0.741703, + -0.000173,-0.840077,-0.542467,0.5,0.015465,-0.7215, + 0.170214,-0.866923,-0.468478,0.5875,0.016681,-0.706, + -0.025551,-0.524875,-0.850796,0.500666,0.037435,-0.741703, + 0.170214,-0.866923,-0.468478,0.5875,0.016681,-0.706, + 0.28571,-0.534951,-0.795108,0.597054,0.03743,-0.725406, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0.170214,-0.866923,-0.468478,0.5875,0.016681,-0.706, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + 0.170214,-0.866923,-0.468478,0.5875,0.016681,-0.706, + -0.000173,-0.840077,-0.542467,0.5,0.015465,-0.7215, + -0.696634,-0.190085,-0.691787,0.319242,0.070537,-0.683563, + -0.68646,-0.277096,-0.672303,0.316229,0.114342,-0.690781, + -0.917766,-0.211835,-0.335904,0.264292,0.115884,-0.604062, + -0.917766,-0.211835,-0.335904,0.264292,0.115884,-0.604062, + -0.92467,-0.172819,-0.339293,0.269217,0.071154,-0.600125, + -0.696634,-0.190085,-0.691787,0.319242,0.070537,-0.683563, + -0.984639,-0.174604,0,0.24698,0.116398,-0.5, + -0.985139,-0.171761,0,0.252542,0.071359,-0.5, + -0.92467,-0.172819,-0.339293,0.269217,0.071154,-0.600125, + -0.984639,-0.174604,0,0.24698,0.116398,-0.5, + -0.92467,-0.172819,-0.339293,0.269217,0.071154,-0.600125, + -0.917766,-0.211835,-0.335904,0.264292,0.115884,-0.604062, + -0.985139,-0.171761,0,0.252542,0.071359,-0.5, + -0.851281,-0.524711,0,0.25901,0.038206,-0.5, + -0.829046,-0.471849,-0.300069,0.275304,0.038459,-0.596406, + -0.829046,-0.471849,-0.300069,0.275304,0.038459,-0.596406, + -0.92467,-0.172819,-0.339293,0.269217,0.071154,-0.600125, + -0.985139,-0.171761,0,0.252542,0.071359,-0.5, + -0.643521,-0.419436,-0.640277,0.323842,0.038608,-0.676859, + -0.696634,-0.190085,-0.691787,0.319242,0.070537,-0.683563, + -0.92467,-0.172819,-0.339293,0.269217,0.071154,-0.600125, + -0.643521,-0.419436,-0.640277,0.323842,0.038608,-0.676859, + -0.92467,-0.172819,-0.339293,0.269217,0.071154,-0.600125, + -0.829046,-0.471849,-0.300069,0.275304,0.038459,-0.596406, + -0.917766,-0.211835,0.335904,0.264292,0.115884,-0.395938, + -0.68646,-0.277096,0.672303,0.316229,0.114342,-0.309219, + -0.696634,-0.190085,0.691786,0.319242,0.070537,-0.316437, + -0.696634,-0.190085,0.691786,0.319242,0.070537,-0.316437, + -0.92467,-0.172819,0.339293,0.269217,0.071154,-0.399875, + -0.917766,-0.211835,0.335904,0.264292,0.115884,-0.395938, + -0.643521,-0.419436,0.640277,0.323842,0.038608,-0.323141, + -0.829046,-0.471848,0.300069,0.275304,0.038459,-0.403594, + -0.92467,-0.172819,0.339293,0.269217,0.071154,-0.399875, + -0.643521,-0.419436,0.640277,0.323842,0.038608,-0.323141, + -0.92467,-0.172819,0.339293,0.269217,0.071154,-0.399875, + -0.696634,-0.190085,0.691786,0.319242,0.070537,-0.316437, + -0.829046,-0.471848,0.300069,0.275304,0.038459,-0.403594, + -0.851281,-0.524711,0,0.25901,0.038206,-0.5, + -0.985139,-0.171761,0,0.252542,0.071359,-0.5, + -0.985139,-0.171761,0,0.252542,0.071359,-0.5, + -0.92467,-0.172819,0.339293,0.269217,0.071154,-0.399875, + -0.829046,-0.471848,0.300069,0.275304,0.038459,-0.403594, + -0.984639,-0.174604,0,0.24698,0.116398,-0.5, + -0.917766,-0.211835,0.335904,0.264292,0.115884,-0.395938, + -0.92467,-0.172819,0.339293,0.269217,0.071154,-0.399875, + -0.984639,-0.174604,0,0.24698,0.116398,-0.5, + -0.92467,-0.172819,0.339293,0.269217,0.071154,-0.399875, + -0.985139,-0.171761,0,0.252542,0.071359,-0.5, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.483213,-0.857792,0.175209,0.294,0.016681,-0.4125, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.483213,-0.857792,0.175209,0.294,0.016681,-0.4125, + -0.412793,-0.812756,0.411133,0.339125,0.017896,-0.339125, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.556955,-0.830542,0,0.2785,0.015465,-0.5, + -0.483213,-0.857792,0.175209,0.294,0.016681,-0.4125, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.483213,-0.857792,0.175209,0.294,0.016681,-0.4125, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.851281,-0.524711,0,0.25901,0.038206,-0.5, + -0.829046,-0.471848,0.300069,0.275304,0.038459,-0.403594, + -0.483213,-0.857792,0.175209,0.294,0.016681,-0.4125, + -0.851281,-0.524711,0,0.25901,0.038206,-0.5, + -0.483213,-0.857792,0.175209,0.294,0.016681,-0.4125, + -0.556955,-0.830542,0,0.2785,0.015465,-0.5, + -0.829046,-0.471848,0.300069,0.275304,0.038459,-0.403594, + -0.643521,-0.419436,0.640277,0.323842,0.038608,-0.323141, + -0.412793,-0.812756,0.411133,0.339125,0.017896,-0.339125, + -0.412793,-0.812756,0.411133,0.339125,0.017896,-0.339125, + -0.483213,-0.857792,0.175209,0.294,0.016681,-0.4125, + -0.829046,-0.471848,0.300069,0.275304,0.038459,-0.403594, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.412793,-0.812756,-0.411133,0.339125,0.017896,-0.660875, + -0.483213,-0.857792,-0.17521,0.294,0.016681,-0.5875, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.483213,-0.857792,-0.17521,0.294,0.016681,-0.5875, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + -0.412793,-0.812756,-0.411133,0.339125,0.017896,-0.660875, + -0.643521,-0.419436,-0.640277,0.323842,0.038608,-0.676859, + -0.829046,-0.471849,-0.300069,0.275304,0.038459,-0.596406, + -0.829046,-0.471849,-0.300069,0.275304,0.038459,-0.596406, + -0.483213,-0.857792,-0.17521,0.294,0.016681,-0.5875, + -0.412793,-0.812756,-0.411133,0.339125,0.017896,-0.660875, + -0.851281,-0.524711,0,0.25901,0.038206,-0.5, + -0.556955,-0.830542,0,0.2785,0.015465,-0.5, + -0.483213,-0.857792,-0.17521,0.294,0.016681,-0.5875, + -0.851281,-0.524711,0,0.25901,0.038206,-0.5, + -0.483213,-0.857792,-0.17521,0.294,0.016681,-0.5875, + -0.829046,-0.471849,-0.300069,0.275304,0.038459,-0.596406, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + -0.483213,-0.857792,-0.17521,0.294,0.016681,-0.5875, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.483213,-0.857792,-0.17521,0.294,0.016681,-0.5875, + -0.556955,-0.830542,0,0.2785,0.015465,-0.5, + -0.696634,-0.190085,0.691786,0.319242,0.070537,-0.316437, + -0.68646,-0.277096,0.672303,0.316229,0.114342,-0.309219, + -0.340489,-0.258832,0.903921,0.402791,0.111771,-0.257187, + -0.340489,-0.258832,0.903921,0.402791,0.111771,-0.257187, + -0.339041,-0.236102,0.910663,0.402616,0.069508,-0.266375, + -0.696634,-0.190085,0.691786,0.319242,0.070537,-0.316437, + -0.340489,-0.258832,0.903921,0.402791,0.111771,-0.257187, + -0.009985,-0.330184,0.943864,0.506665,0.108686,-0.239844, + -0.003719,-0.252904,0.967484,0.502666,0.068274,-0.249687, + -0.003719,-0.252904,0.967484,0.502666,0.068274,-0.249687, + -0.339041,-0.236102,0.910663,0.402616,0.069508,-0.266375, + -0.340489,-0.258832,0.903921,0.402791,0.111771,-0.257187, + -0.025551,-0.524875,0.850796,0.500666,0.037435,-0.258297, + -0.321508,-0.547444,0.772617,0.404279,0.038047,-0.274594, + -0.339041,-0.236102,0.910663,0.402616,0.069508,-0.266375, + -0.025551,-0.524875,0.850796,0.500666,0.037435,-0.258297, + -0.339041,-0.236102,0.910663,0.402616,0.069508,-0.266375, + -0.003719,-0.252904,0.967484,0.502666,0.068274,-0.249687, + -0.643521,-0.419436,0.640277,0.323842,0.038608,-0.323141, + -0.696634,-0.190085,0.691786,0.319242,0.070537,-0.316437, + -0.339041,-0.236102,0.910663,0.402616,0.069508,-0.266375, + -0.643521,-0.419436,0.640277,0.323842,0.038608,-0.323141, + -0.339041,-0.236102,0.910663,0.402616,0.069508,-0.266375, + -0.321508,-0.547444,0.772617,0.404279,0.038047,-0.274594, + 0.309535,-0.382382,0.870616,0.610539,0.105601,-0.257187, + 0.612462,-0.474038,0.632596,0.6971,0.103031,-0.309219, + 0.662382,-0.336592,0.669295,0.68609,0.066012,-0.316437, + 0.662382,-0.336592,0.669295,0.68609,0.066012,-0.316437, + 0.325986,-0.296157,0.897788,0.602715,0.067041,-0.266375, + 0.309535,-0.382382,0.870616,0.610539,0.105601,-0.257187, + 0.609651,-0.5022,0.613287,0.677491,0.037477,-0.323141, + 0.28571,-0.534951,0.795108,0.597054,0.03743,-0.274594, + 0.325986,-0.296157,0.897788,0.602715,0.067041,-0.266375, + 0.609651,-0.5022,0.613287,0.677491,0.037477,-0.323141, + 0.325986,-0.296157,0.897788,0.602715,0.067041,-0.266375, + 0.662382,-0.336592,0.669295,0.68609,0.066012,-0.316437, + 0.28571,-0.534951,0.795108,0.597054,0.03743,-0.274594, + -0.025551,-0.524875,0.850796,0.500666,0.037435,-0.258297, + -0.003719,-0.252904,0.967484,0.502666,0.068274,-0.249687, + -0.003719,-0.252904,0.967484,0.502666,0.068274,-0.249687, + 0.325986,-0.296157,0.897788,0.602715,0.067041,-0.266375, + 0.28571,-0.534951,0.795108,0.597054,0.03743,-0.274594, + -0.009985,-0.330184,0.943864,0.506665,0.108686,-0.239844, + 0.309535,-0.382382,0.870616,0.610539,0.105601,-0.257187, + 0.325986,-0.296157,0.897788,0.602715,0.067041,-0.266375, + -0.009985,-0.330184,0.943864,0.506665,0.108686,-0.239844, + 0.325986,-0.296157,0.897788,0.602715,0.067041,-0.266375, + -0.003719,-0.252904,0.967484,0.502666,0.068274,-0.249687, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0.170214,-0.866923,0.468477,0.5875,0.016681,-0.294, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.170214,-0.866923,0.468477,0.5875,0.016681,-0.294, + 0.392801,-0.830761,0.394389,0.660875,0.017896,-0.339125, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + -0.000173,-0.840077,0.542467,0.5,0.015465,-0.2785, + 0.170214,-0.866923,0.468477,0.5875,0.016681,-0.294, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + 0.170214,-0.866923,0.468477,0.5875,0.016681,-0.294, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + -0.025551,-0.524875,0.850796,0.500666,0.037435,-0.258297, + 0.28571,-0.534951,0.795108,0.597054,0.03743,-0.274594, + 0.170214,-0.866923,0.468477,0.5875,0.016681,-0.294, + -0.025551,-0.524875,0.850796,0.500666,0.037435,-0.258297, + 0.170214,-0.866923,0.468477,0.5875,0.016681,-0.294, + -0.000173,-0.840077,0.542467,0.5,0.015465,-0.2785, + 0.28571,-0.534951,0.795108,0.597054,0.03743,-0.274594, + 0.609651,-0.5022,0.613287,0.677491,0.037477,-0.323141, + 0.392801,-0.830761,0.394389,0.660875,0.017896,-0.339125, + 0.392801,-0.830761,0.394389,0.660875,0.017896,-0.339125, + 0.170214,-0.866923,0.468477,0.5875,0.016681,-0.294, + 0.28571,-0.534951,0.795108,0.597054,0.03743,-0.274594, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.412793,-0.812756,0.411133,0.339125,0.017896,-0.339125, + -0.173348,-0.862844,0.474817,0.4125,0.016681,-0.294, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.173348,-0.862844,0.474817,0.4125,0.016681,-0.294, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + -0.412793,-0.812756,0.411133,0.339125,0.017896,-0.339125, + -0.643521,-0.419436,0.640277,0.323842,0.038608,-0.323141, + -0.321508,-0.547444,0.772617,0.404279,0.038047,-0.274594, + -0.321508,-0.547444,0.772617,0.404279,0.038047,-0.274594, + -0.173348,-0.862844,0.474817,0.4125,0.016681,-0.294, + -0.412793,-0.812756,0.411133,0.339125,0.017896,-0.339125, + -0.025551,-0.524875,0.850796,0.500666,0.037435,-0.258297, + -0.000173,-0.840077,0.542467,0.5,0.015465,-0.2785, + -0.173348,-0.862844,0.474817,0.4125,0.016681,-0.294, + -0.025551,-0.524875,0.850796,0.500666,0.037435,-0.258297, + -0.173348,-0.862844,0.474817,0.4125,0.016681,-0.294, + -0.321508,-0.547444,0.772617,0.404279,0.038047,-0.274594, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + -0.173348,-0.862844,0.474817,0.4125,0.016681,-0.294, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + -0.173348,-0.862844,0.474817,0.4125,0.016681,-0.294, + -0.000173,-0.840077,0.542467,0.5,0.015465,-0.2785, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0.199329,-0.959446,-0.199329,0.638667,0.007537,-0.638667, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0.100277,-0.976969,-0.18835,0.5825,0.003052,-0.664625, + 0,-1,0,0.5,-0.010924,-0.5, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0,-1,0,0.5,-0.010924,-0.5, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.18835,-0.976969,-0.100277,0.664625,0.003052,-0.5825, + 0.079739,-0.993621,-0.079739,0.5905,-0.005194,-0.5905, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + -0.199329,-0.959446,-0.199329,0.361333,0.007537,-0.638667, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + -0.188349,-0.976969,-0.100277,0.335375,0.003052,-0.5825, + 0,-1,0,0.5,-0.010924,-0.5, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + 0,-1,0,0.5,-0.010924,-0.5, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + 0,-0.969635,-0.244558,0.5,0.000839,-0.677562, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.100277,-0.976969,-0.18835,0.4175,0.003052,-0.664625, + -0.079739,-0.993621,-0.079739,0.4095,-0.005194,-0.5905, + 0,-0.996384,-0.08496,0.5,-0.007972,-0.59775, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + -0.199328,-0.959446,0.199328,0.361333,0.007537,-0.361333, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + -0.100277,-0.976969,0.188349,0.4175,0.003052,-0.335375, + 0,-1,0,0.5,-0.010924,-0.5, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + 0,-1,0,0.5,-0.010924,-0.5, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + -0.244558,-0.969635,0,0.322437,0.000839,-0.5, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.188349,-0.976969,0.100277,0.335375,0.003052,-0.4175, + -0.079739,-0.993621,0.079739,0.4095,-0.005194,-0.4095, + -0.08496,-0.996384,0,0.40225,-0.007972,-0.5, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0.199329,-0.959446,0.199329,0.638667,0.007537,-0.361333, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0.244558,-0.969635,0,0.677562,0.000839,-0.5, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0.18835,-0.976969,0.100277,0.664625,0.003052,-0.4175, + 0,-1,0,0.5,-0.010924,-0.5, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0,-1,0,0.5,-0.010924,-0.5, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0.08496,-0.996384,0,0.59775,-0.007972,-0.5, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, + 0,-0.969635,0.244558,0.5,0.000839,-0.322437, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0.100277,-0.976969,0.188349,0.5825,0.003052,-0.335375, + 0.079739,-0.993621,0.079739,0.5905,-0.005194,-0.4095, + 0,-0.996384,0.08496,0.5,-0.007972,-0.40225, +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1728,data,NULL}; +const struct gllist *s1_2=&frame; diff --git a/hacks/glx/s1_3.c b/hacks/glx/s1_3.c new file mode 100644 index 0000000..eea1304 --- /dev/null +++ b/hacks/glx/s1_3.c @@ -0,0 +1,1733 @@ +#include "gllist.h" +static const float data[]={ + 0.202525,-0.691948,-0.692959,1.163707,0.362839,-0.676509, + 0.133481,-0.728232,-0.672207,1.115671,0.352342,-0.673147, + 0.164983,-0.93415,-0.316457,1.139957,0.313586,-0.594444, + 0.164983,-0.93415,-0.316457,1.139957,0.313586,-0.594444, + 0.257435,-0.906571,-0.334448,1.188046,0.322006,-0.596277, + 0.202525,-0.691948,-0.692959,1.163707,0.362839,-0.676509, + 0.166954,-0.985965,0,1.148052,0.300668,-0.5, + 0.301979,-0.953315,0,1.196159,0.308395,-0.5, + 0.257435,-0.906571,-0.334448,1.188046,0.322006,-0.596277, + 0.166954,-0.985965,0,1.148052,0.300668,-0.5, + 0.257435,-0.906571,-0.334448,1.188046,0.322006,-0.596277, + 0.164983,-0.93415,-0.316457,1.139957,0.313586,-0.594444, + 0.301979,-0.953315,0,1.196159,0.308395,-0.5, + 0.780431,-0.625241,0,1.227578,0.320768,-0.5, + 0.622801,-0.721415,-0.302786,1.219224,0.33452,-0.595444, + 0.622801,-0.721415,-0.302786,1.219224,0.33452,-0.595444, + 0.257435,-0.906571,-0.334448,1.188046,0.322006,-0.596277, + 0.301979,-0.953315,0,1.196159,0.308395,-0.5, + 0.631576,-0.472875,-0.614411,1.194861,0.37578,-0.675096, + 0.202525,-0.691948,-0.692959,1.163707,0.362839,-0.676509, + 0.257435,-0.906571,-0.334448,1.188046,0.322006,-0.596277, + 0.631576,-0.472875,-0.614411,1.194861,0.37578,-0.675096, + 0.257435,-0.906571,-0.334448,1.188046,0.322006,-0.596277, + 0.622801,-0.721415,-0.302786,1.219224,0.33452,-0.595444, + 0.164983,-0.93415,0.316457,1.139957,0.313586,-0.405556, + 0.133481,-0.728232,0.672206,1.115671,0.352342,-0.326853, + 0.202524,-0.691948,0.692959,1.163707,0.362839,-0.323491, + 0.202524,-0.691948,0.692959,1.163707,0.362839,-0.323491, + 0.257435,-0.906571,0.334448,1.188046,0.322006,-0.403722, + 0.164983,-0.93415,0.316457,1.139957,0.313586,-0.405556, + 0.631575,-0.472875,0.614412,1.194861,0.37578,-0.324904, + 0.622801,-0.721415,0.302786,1.219224,0.33452,-0.404556, + 0.257435,-0.906571,0.334448,1.188046,0.322006,-0.403722, + 0.631575,-0.472875,0.614412,1.194861,0.37578,-0.324904, + 0.257435,-0.906571,0.334448,1.188046,0.322006,-0.403722, + 0.202524,-0.691948,0.692959,1.163707,0.362839,-0.323491, + 0.622801,-0.721415,0.302786,1.219224,0.33452,-0.404556, + 0.780431,-0.625241,0,1.227578,0.320768,-0.5, + 0.301979,-0.953315,0,1.196159,0.308395,-0.5, + 0.301979,-0.953315,0,1.196159,0.308395,-0.5, + 0.257435,-0.906571,0.334448,1.188046,0.322006,-0.403722, + 0.622801,-0.721415,0.302786,1.219224,0.33452,-0.404556, + 0.166954,-0.985965,0,1.148052,0.300668,-0.5, + 0.164983,-0.93415,0.316457,1.139957,0.313586,-0.405556, + 0.257435,-0.906571,0.334448,1.188046,0.322006,-0.403722, + 0.166954,-0.985965,0,1.148052,0.300668,-0.5, + 0.257435,-0.906571,0.334448,1.188046,0.322006,-0.403722, + 0.301979,-0.953315,0,1.196159,0.308395,-0.5, + 0.930569,0.3071,0.199327,1.204957,0.421449,-0.361333, + 0.940255,0.325371,0.100277,1.221821,0.401211,-0.4175, + 0.974899,-0.059226,0.214627,1.230706,0.358565,-0.4125, + 0.930569,0.3071,0.199327,1.204957,0.421449,-0.361333, + 0.974899,-0.059226,0.214627,1.230706,0.358565,-0.4125, + 0.890812,0.056731,0.450816,1.207091,0.397037,-0.339125, + 0.962007,0.273026,0,1.230206,0.391113,-0.5, + 0.992798,-0.119797,0,1.239508,0.345749,-0.5, + 0.974899,-0.059226,0.214627,1.230706,0.358565,-0.4125, + 0.962007,0.273026,0,1.230206,0.391113,-0.5, + 0.974899,-0.059226,0.214627,1.230706,0.358565,-0.4125, + 0.940255,0.325371,0.100277,1.221821,0.401211,-0.4175, + 0.780431,-0.625241,0,1.227578,0.320768,-0.5, + 0.622801,-0.721415,0.302786,1.219224,0.33452,-0.404556, + 0.974899,-0.059226,0.214627,1.230706,0.358565,-0.4125, + 0.780431,-0.625241,0,1.227578,0.320768,-0.5, + 0.974899,-0.059226,0.214627,1.230706,0.358565,-0.4125, + 0.992798,-0.119797,0,1.239508,0.345749,-0.5, + 0.631575,-0.472875,0.614412,1.194861,0.37578,-0.324904, + 0.890812,0.056731,0.450816,1.207091,0.397037,-0.339125, + 0.974899,-0.059226,0.214627,1.230706,0.358565,-0.4125, + 0.631575,-0.472875,0.614412,1.194861,0.37578,-0.324904, + 0.974899,-0.059226,0.214627,1.230706,0.358565,-0.4125, + 0.622801,-0.721415,0.302786,1.219224,0.33452,-0.404556, + 0.930569,0.3071,-0.199328,1.204957,0.421449,-0.638667, + 0.890812,0.056731,-0.450816,1.207091,0.397037,-0.660875, + 0.974899,-0.059226,-0.214627,1.230706,0.358565,-0.5875, + 0.930569,0.3071,-0.199328,1.204957,0.421449,-0.638667, + 0.974899,-0.059226,-0.214627,1.230706,0.358565,-0.5875, + 0.940255,0.325371,-0.100277,1.221821,0.401211,-0.5825, + 0.631576,-0.472875,-0.614411,1.194861,0.37578,-0.675096, + 0.622801,-0.721415,-0.302786,1.219224,0.33452,-0.595444, + 0.974899,-0.059226,-0.214627,1.230706,0.358565,-0.5875, + 0.631576,-0.472875,-0.614411,1.194861,0.37578,-0.675096, + 0.974899,-0.059226,-0.214627,1.230706,0.358565,-0.5875, + 0.890812,0.056731,-0.450816,1.207091,0.397037,-0.660875, + 0.780431,-0.625241,0,1.227578,0.320768,-0.5, + 0.992798,-0.119797,0,1.239508,0.345749,-0.5, + 0.974899,-0.059226,-0.214627,1.230706,0.358565,-0.5875, + 0.780431,-0.625241,0,1.227578,0.320768,-0.5, + 0.974899,-0.059226,-0.214627,1.230706,0.358565,-0.5875, + 0.622801,-0.721415,-0.302786,1.219224,0.33452,-0.595444, + 0.962007,0.273026,0,1.230206,0.391113,-0.5, + 0.940255,0.325371,-0.100277,1.221821,0.401211,-0.5825, + 0.974899,-0.059226,-0.214627,1.230706,0.358565,-0.5875, + 0.962007,0.273026,0,1.230206,0.391113,-0.5, + 0.974899,-0.059226,-0.214627,1.230706,0.358565,-0.5875, + 0.992798,-0.119797,0,1.239508,0.345749,-0.5, + 0.133481,-0.728232,0.672206,1.115671,0.352342,-0.326853, + 0.060251,-0.377234,0.924156,1.075195,0.416935,-0.279631, + 0.095842,-0.348455,0.932413,1.123141,0.430895,-0.275352, + 0.133481,-0.728232,0.672206,1.115671,0.352342,-0.326853, + 0.095842,-0.348455,0.932413,1.123141,0.430895,-0.275352, + 0.202524,-0.691948,0.692959,1.163707,0.362839,-0.323491, + 0.060251,-0.377234,0.924156,1.075195,0.416935,-0.279631, + -0.042028,-0.027931,0.998726,1.026623,0.494446,-0.263891, + -0.024646,-0.015417,0.999577,1.074463,0.512562,-0.259306, + -0.024646,-0.015417,0.999577,1.074463,0.512562,-0.259306, + 0.095842,-0.348455,0.932413,1.123141,0.430895,-0.275352, + 0.060251,-0.377234,0.924156,1.075195,0.416935,-0.279631, + 0.346195,0.171304,0.92239,1.107591,0.526937,-0.260702, + 0.484632,-0.165545,0.858911,1.155185,0.444556,-0.276838, + 0.095842,-0.348455,0.932413,1.123141,0.430895,-0.275352, + 0.346195,0.171304,0.92239,1.107591,0.526937,-0.260702, + 0.095842,-0.348455,0.932413,1.123141,0.430895,-0.275352, + -0.024646,-0.015417,0.999577,1.074463,0.512562,-0.259306, + 0.484632,-0.165545,0.858911,1.155185,0.444556,-0.276838, + 0.631575,-0.472875,0.614412,1.194861,0.37578,-0.324904, + 0.202524,-0.691948,0.692959,1.163707,0.362839,-0.323491, + 0.202524,-0.691948,0.692959,1.163707,0.362839,-0.323491, + 0.095842,-0.348455,0.932413,1.123141,0.430895,-0.275352, + 0.484632,-0.165545,0.858911,1.155185,0.444556,-0.276838, + -0.176226,0.307645,0.935039,0.978052,0.571957,-0.279631, + -0.334947,0.636181,0.695043,0.937575,0.63655,-0.326853, + -0.323336,0.633934,0.702554,0.985218,0.662285,-0.323491, + -0.323336,0.633934,0.702554,0.985218,0.662285,-0.323491, + -0.162184,0.309455,0.936981,1.025784,0.594229,-0.275352, + -0.176226,0.307645,0.935039,0.978052,0.571957,-0.279631, + -0.011301,0.717458,0.69651,1.01927,0.677486,-0.324904, + 0.171113,0.465842,0.868165,1.059471,0.609015,-0.276838, + -0.162184,0.309455,0.936981,1.025784,0.594229,-0.275352, + -0.011301,0.717458,0.69651,1.01927,0.677486,-0.324904, + -0.162184,0.309455,0.936981,1.025784,0.594229,-0.275352, + -0.323336,0.633934,0.702554,0.985218,0.662285,-0.323491, + 0.171113,0.465842,0.868165,1.059471,0.609015,-0.276838, + 0.346195,0.171304,0.92239,1.107591,0.526937,-0.260702, + -0.024646,-0.015417,0.999577,1.074463,0.512562,-0.259306, + -0.024646,-0.015417,0.999577,1.074463,0.512562,-0.259306, + -0.162184,0.309455,0.936981,1.025784,0.594229,-0.275352, + 0.171113,0.465842,0.868165,1.059471,0.609015,-0.276838, + -0.042028,-0.027931,0.998726,1.026623,0.494446,-0.263891, + -0.176226,0.307645,0.935039,0.978052,0.571957,-0.279631, + -0.162184,0.309455,0.936981,1.025784,0.594229,-0.275352, + -0.042028,-0.027931,0.998726,1.026623,0.494446,-0.263891, + -0.162184,0.309455,0.936981,1.025784,0.594229,-0.275352, + -0.024646,-0.015417,0.999577,1.074463,0.512562,-0.259306, + 0.499427,0.759449,0.416905,1.046216,0.67568,-0.339125, + 0.73381,0.655202,0.179534,1.066291,0.661627,-0.361333, + 0.786313,0.584772,0.199385,1.098258,0.615227,-0.335375, + 0.786313,0.584772,0.199385,1.098258,0.615227,-0.335375, + 0.621316,0.565314,0.542574,1.083956,0.612743,-0.294, + 0.499427,0.759449,0.416905,1.046216,0.67568,-0.339125, + 0.83547,0.498022,0.232303,1.141425,0.544887,-0.322437, + 0.742505,0.410638,0.529209,1.128758,0.537574,-0.2785, + 0.621316,0.565314,0.542574,1.083956,0.612743,-0.294, + 0.83547,0.498022,0.232303,1.141425,0.544887,-0.322437, + 0.621316,0.565314,0.542574,1.083956,0.612743,-0.294, + 0.786313,0.584772,0.199385,1.098258,0.615227,-0.335375, + 0.346195,0.171304,0.92239,1.107591,0.526937,-0.260702, + 0.171113,0.465842,0.868165,1.059471,0.609015,-0.276838, + 0.621316,0.565314,0.542574,1.083956,0.612743,-0.294, + 0.346195,0.171304,0.92239,1.107591,0.526937,-0.260702, + 0.621316,0.565314,0.542574,1.083956,0.612743,-0.294, + 0.742505,0.410638,0.529209,1.128758,0.537574,-0.2785, + 0.171113,0.465842,0.868165,1.059471,0.609015,-0.276838, + -0.011301,0.717458,0.69651,1.01927,0.677486,-0.324904, + 0.499427,0.759449,0.416905,1.046216,0.67568,-0.339125, + 0.499427,0.759449,0.416905,1.046216,0.67568,-0.339125, + 0.621316,0.565314,0.542574,1.083956,0.612743,-0.294, + 0.171113,0.465842,0.868165,1.059471,0.609015,-0.276838, + 0.930569,0.3071,0.199327,1.204957,0.421449,-0.361333, + 0.890812,0.056731,0.450816,1.207091,0.397037,-0.339125, + 0.808962,0.235076,0.538813,1.171456,0.461189,-0.294, + 0.930569,0.3071,0.199327,1.204957,0.421449,-0.361333, + 0.808962,0.235076,0.538813,1.171456,0.461189,-0.294, + 0.890268,0.404155,0.209958,1.180758,0.472333,-0.335375, + 0.890812,0.056731,0.450816,1.207091,0.397037,-0.339125, + 0.631575,-0.472875,0.614412,1.194861,0.37578,-0.324904, + 0.484632,-0.165545,0.858911,1.155185,0.444556,-0.276838, + 0.484632,-0.165545,0.858911,1.155185,0.444556,-0.276838, + 0.808962,0.235076,0.538813,1.171456,0.461189,-0.294, + 0.890812,0.056731,0.450816,1.207091,0.397037,-0.339125, + 0.346195,0.171304,0.92239,1.107591,0.526937,-0.260702, + 0.742505,0.410638,0.529209,1.128758,0.537574,-0.2785, + 0.808962,0.235076,0.538813,1.171456,0.461189,-0.294, + 0.346195,0.171304,0.92239,1.107591,0.526937,-0.260702, + 0.808962,0.235076,0.538813,1.171456,0.461189,-0.294, + 0.484632,-0.165545,0.858911,1.155185,0.444556,-0.276838, + 0.742505,0.410638,0.529209,1.128758,0.537574,-0.2785, + 0.83547,0.498022,0.232303,1.141425,0.544887,-0.322437, + 0.890268,0.404155,0.209958,1.180758,0.472333,-0.335375, + 0.890268,0.404155,0.209958,1.180758,0.472333,-0.335375, + 0.808962,0.235076,0.538813,1.171456,0.461189,-0.294, + 0.742505,0.410638,0.529209,1.128758,0.537574,-0.2785, + -0.334947,0.636181,0.695043,0.937575,0.63655,-0.326853, + -0.440797,0.833329,0.333557,0.913289,0.675305,-0.405556, + -0.436203,0.832732,0.341005,0.960879,0.703118,-0.403722, + -0.334947,0.636181,0.695043,0.937575,0.63655,-0.326853, + -0.436203,0.832732,0.341005,0.960879,0.703118,-0.403722, + -0.323336,0.633934,0.702554,0.985218,0.662285,-0.323491, + -0.440797,0.833329,0.333557,0.913289,0.675305,-0.405556, + -0.456348,0.889801,0,0.905194,0.688224,-0.5, + -0.483417,0.87539,0,0.952766,0.71673,-0.5, + -0.483417,0.87539,0,0.952766,0.71673,-0.5, + -0.436203,0.832732,0.341005,0.960879,0.703118,-0.403722, + -0.440797,0.833329,0.333557,0.913289,0.675305,-0.405556, + -0.145364,0.989378,0,0.987605,0.733106,-0.5, + -0.079433,0.924124,0.373745,0.995432,0.719051,-0.404556, + -0.436203,0.832732,0.341005,0.960879,0.703118,-0.403722, + -0.145364,0.989378,0,0.987605,0.733106,-0.5, + -0.436203,0.832732,0.341005,0.960879,0.703118,-0.403722, + -0.483417,0.87539,0,0.952766,0.71673,-0.5, + -0.079433,0.924124,0.373745,0.995432,0.719051,-0.404556, + -0.011301,0.717458,0.69651,1.01927,0.677486,-0.324904, + -0.323336,0.633934,0.702554,0.985218,0.662285,-0.323491, + -0.323336,0.633934,0.702554,0.985218,0.662285,-0.323491, + -0.436203,0.832732,0.341005,0.960879,0.703118,-0.403722, + -0.079433,0.924124,0.373745,0.995432,0.719051,-0.404556, + -0.334948,0.636181,-0.695043,0.937575,0.63655,-0.673147, + -0.323336,0.633934,-0.702554,0.985218,0.662285,-0.676509, + -0.436203,0.832732,-0.341005,0.960879,0.703118,-0.596277, + -0.334948,0.636181,-0.695043,0.937575,0.63655,-0.673147, + -0.436203,0.832732,-0.341005,0.960879,0.703118,-0.596277, + -0.440797,0.833329,-0.333557,0.913289,0.675305,-0.594444, + -0.323336,0.633934,-0.702554,0.985218,0.662285,-0.676509, + -0.0113,0.717458,-0.69651,1.01927,0.677486,-0.675096, + -0.079433,0.924124,-0.373745,0.995432,0.719051,-0.595444, + -0.079433,0.924124,-0.373745,0.995432,0.719051,-0.595444, + -0.436203,0.832732,-0.341005,0.960879,0.703118,-0.596277, + -0.323336,0.633934,-0.702554,0.985218,0.662285,-0.676509, + -0.145364,0.989378,0,0.987605,0.733106,-0.5, + -0.483417,0.87539,0,0.952766,0.71673,-0.5, + -0.436203,0.832732,-0.341005,0.960879,0.703118,-0.596277, + -0.145364,0.989378,0,0.987605,0.733106,-0.5, + -0.436203,0.832732,-0.341005,0.960879,0.703118,-0.596277, + -0.079433,0.924124,-0.373745,0.995432,0.719051,-0.595444, + -0.483417,0.87539,0,0.952766,0.71673,-0.5, + -0.456348,0.889801,0,0.905194,0.688224,-0.5, + -0.440797,0.833329,-0.333557,0.913289,0.675305,-0.594444, + -0.440797,0.833329,-0.333557,0.913289,0.675305,-0.594444, + -0.436203,0.832732,-0.341005,0.960879,0.703118,-0.596277, + -0.483417,0.87539,0,0.952766,0.71673,-0.5, + 0.73381,0.655202,-0.179535,1.066291,0.661627,-0.638667, + 0.737725,0.668365,-0.095126,1.057196,0.68635,-0.5825, + 0.442446,0.874241,-0.199863,1.024706,0.715367,-0.5875, + 0.73381,0.655202,-0.179535,1.066291,0.661627,-0.638667, + 0.442446,0.874241,-0.199863,1.024706,0.715367,-0.5875, + 0.499427,0.759449,-0.416905,1.046216,0.67568,-0.660875, + 0.737725,0.668365,-0.095126,1.057196,0.68635,-0.5825, + 0.739038,0.673664,0,1.052644,0.698661,-0.5, + 0.507297,0.861771,0,1.018008,0.729398,-0.5, + 0.507297,0.861771,0,1.018008,0.729398,-0.5, + 0.442446,0.874241,-0.199863,1.024706,0.715367,-0.5875, + 0.737725,0.668365,-0.095126,1.057196,0.68635,-0.5825, + -0.145364,0.989378,0,0.987605,0.733106,-0.5, + -0.079433,0.924124,-0.373745,0.995432,0.719051,-0.595444, + 0.442446,0.874241,-0.199863,1.024706,0.715367,-0.5875, + -0.145364,0.989378,0,0.987605,0.733106,-0.5, + 0.442446,0.874241,-0.199863,1.024706,0.715367,-0.5875, + 0.507297,0.861771,0,1.018008,0.729398,-0.5, + -0.079433,0.924124,-0.373745,0.995432,0.719051,-0.595444, + -0.0113,0.717458,-0.69651,1.01927,0.677486,-0.675096, + 0.499427,0.759449,-0.416905,1.046216,0.67568,-0.660875, + 0.499427,0.759449,-0.416905,1.046216,0.67568,-0.660875, + 0.442446,0.874241,-0.199863,1.024706,0.715367,-0.5875, + -0.079433,0.924124,-0.373745,0.995432,0.719051,-0.595444, + 0.73381,0.655202,0.179534,1.066291,0.661627,-0.361333, + 0.499427,0.759449,0.416905,1.046216,0.67568,-0.339125, + 0.442446,0.874241,0.199863,1.024706,0.715367,-0.4125, + 0.73381,0.655202,0.179534,1.066291,0.661627,-0.361333, + 0.442446,0.874241,0.199863,1.024706,0.715367,-0.4125, + 0.737725,0.668365,0.095126,1.057196,0.68635,-0.4175, + 0.499427,0.759449,0.416905,1.046216,0.67568,-0.339125, + -0.011301,0.717458,0.69651,1.01927,0.677486,-0.324904, + -0.079433,0.924124,0.373745,0.995432,0.719051,-0.404556, + -0.079433,0.924124,0.373745,0.995432,0.719051,-0.404556, + 0.442446,0.874241,0.199863,1.024706,0.715367,-0.4125, + 0.499427,0.759449,0.416905,1.046216,0.67568,-0.339125, + -0.145364,0.989378,0,0.987605,0.733106,-0.5, + 0.507297,0.861771,0,1.018008,0.729398,-0.5, + 0.442446,0.874241,0.199863,1.024706,0.715367,-0.4125, + -0.145364,0.989378,0,0.987605,0.733106,-0.5, + 0.442446,0.874241,0.199863,1.024706,0.715367,-0.4125, + -0.079433,0.924124,0.373745,0.995432,0.719051,-0.404556, + 0.507297,0.861771,0,1.018008,0.729398,-0.5, + 0.739038,0.673664,0,1.052644,0.698661,-0.5, + 0.737725,0.668365,0.095126,1.057196,0.68635,-0.4175, + 0.737725,0.668365,0.095126,1.057196,0.68635,-0.4175, + 0.442446,0.874241,0.199863,1.024706,0.715367,-0.4125, + 0.507297,0.861771,0,1.018008,0.729398,-0.5, + -0.323336,0.633934,-0.702554,0.985218,0.662285,-0.676509, + -0.334948,0.636181,-0.695043,0.937575,0.63655,-0.673147, + -0.176226,0.307645,-0.935039,0.978052,0.571957,-0.720369, + -0.176226,0.307645,-0.935039,0.978052,0.571957,-0.720369, + -0.162184,0.309456,-0.936981,1.025784,0.594229,-0.724648, + -0.323336,0.633934,-0.702554,0.985218,0.662285,-0.676509, + -0.042028,-0.027931,-0.998726,1.026623,0.494446,-0.736109, + -0.024646,-0.015417,-0.999577,1.074463,0.512562,-0.740694, + -0.162184,0.309456,-0.936981,1.025784,0.594229,-0.724648, + -0.042028,-0.027931,-0.998726,1.026623,0.494446,-0.736109, + -0.162184,0.309456,-0.936981,1.025784,0.594229,-0.724648, + -0.176226,0.307645,-0.935039,0.978052,0.571957,-0.720369, + -0.024646,-0.015417,-0.999577,1.074463,0.512562,-0.740694, + 0.346195,0.171304,-0.92239,1.107591,0.526937,-0.739298, + 0.171114,0.465842,-0.868165,1.059471,0.609015,-0.723162, + 0.171114,0.465842,-0.868165,1.059471,0.609015,-0.723162, + -0.162184,0.309456,-0.936981,1.025784,0.594229,-0.724648, + -0.024646,-0.015417,-0.999577,1.074463,0.512562,-0.740694, + -0.0113,0.717458,-0.69651,1.01927,0.677486,-0.675096, + -0.323336,0.633934,-0.702554,0.985218,0.662285,-0.676509, + -0.162184,0.309456,-0.936981,1.025784,0.594229,-0.724648, + -0.0113,0.717458,-0.69651,1.01927,0.677486,-0.675096, + -0.162184,0.309456,-0.936981,1.025784,0.594229,-0.724648, + 0.171114,0.465842,-0.868165,1.059471,0.609015,-0.723162, + 0.133481,-0.728232,-0.672207,1.115671,0.352342,-0.673147, + 0.202525,-0.691948,-0.692959,1.163707,0.362839,-0.676509, + 0.095842,-0.348454,-0.932413,1.123141,0.430895,-0.724648, + 0.133481,-0.728232,-0.672207,1.115671,0.352342,-0.673147, + 0.095842,-0.348454,-0.932413,1.123141,0.430895,-0.724648, + 0.060251,-0.377234,-0.924156,1.075195,0.416935,-0.720369, + 0.202525,-0.691948,-0.692959,1.163707,0.362839,-0.676509, + 0.631576,-0.472875,-0.614411,1.194861,0.37578,-0.675096, + 0.484632,-0.165544,-0.85891,1.155185,0.444556,-0.723162, + 0.484632,-0.165544,-0.85891,1.155185,0.444556,-0.723162, + 0.095842,-0.348454,-0.932413,1.123141,0.430895,-0.724648, + 0.202525,-0.691948,-0.692959,1.163707,0.362839,-0.676509, + 0.346195,0.171304,-0.92239,1.107591,0.526937,-0.739298, + -0.024646,-0.015417,-0.999577,1.074463,0.512562,-0.740694, + 0.095842,-0.348454,-0.932413,1.123141,0.430895,-0.724648, + 0.346195,0.171304,-0.92239,1.107591,0.526937,-0.739298, + 0.095842,-0.348454,-0.932413,1.123141,0.430895,-0.724648, + 0.484632,-0.165544,-0.85891,1.155185,0.444556,-0.723162, + -0.024646,-0.015417,-0.999577,1.074463,0.512562,-0.740694, + -0.042028,-0.027931,-0.998726,1.026623,0.494446,-0.736109, + 0.060251,-0.377234,-0.924156,1.075195,0.416935,-0.720369, + 0.060251,-0.377234,-0.924156,1.075195,0.416935,-0.720369, + 0.095842,-0.348454,-0.932413,1.123141,0.430895,-0.724648, + -0.024646,-0.015417,-0.999577,1.074463,0.512562,-0.740694, + 0.930569,0.3071,-0.199328,1.204957,0.421449,-0.638667, + 0.890268,0.404155,-0.209958,1.180758,0.472333,-0.664625, + 0.808963,0.235076,-0.538812,1.171456,0.461189,-0.706, + 0.930569,0.3071,-0.199328,1.204957,0.421449,-0.638667, + 0.808963,0.235076,-0.538812,1.171456,0.461189,-0.706, + 0.890812,0.056731,-0.450816,1.207091,0.397037,-0.660875, + 0.890268,0.404155,-0.209958,1.180758,0.472333,-0.664625, + 0.83547,0.498022,-0.232303,1.141425,0.544887,-0.677562, + 0.742506,0.410638,-0.529208,1.128758,0.537574,-0.7215, + 0.742506,0.410638,-0.529208,1.128758,0.537574,-0.7215, + 0.808963,0.235076,-0.538812,1.171456,0.461189,-0.706, + 0.890268,0.404155,-0.209958,1.180758,0.472333,-0.664625, + 0.346195,0.171304,-0.92239,1.107591,0.526937,-0.739298, + 0.484632,-0.165544,-0.85891,1.155185,0.444556,-0.723162, + 0.808963,0.235076,-0.538812,1.171456,0.461189,-0.706, + 0.346195,0.171304,-0.92239,1.107591,0.526937,-0.739298, + 0.808963,0.235076,-0.538812,1.171456,0.461189,-0.706, + 0.742506,0.410638,-0.529208,1.128758,0.537574,-0.7215, + 0.484632,-0.165544,-0.85891,1.155185,0.444556,-0.723162, + 0.631576,-0.472875,-0.614411,1.194861,0.37578,-0.675096, + 0.890812,0.056731,-0.450816,1.207091,0.397037,-0.660875, + 0.890812,0.056731,-0.450816,1.207091,0.397037,-0.660875, + 0.808963,0.235076,-0.538812,1.171456,0.461189,-0.706, + 0.484632,-0.165544,-0.85891,1.155185,0.444556,-0.723162, + 0.786313,0.584772,-0.199385,1.098258,0.615227,-0.664625, + 0.73381,0.655202,-0.179535,1.066291,0.661627,-0.638667, + 0.499427,0.759449,-0.416905,1.046216,0.67568,-0.660875, + 0.499427,0.759449,-0.416905,1.046216,0.67568,-0.660875, + 0.621316,0.565314,-0.542574,1.083956,0.612743,-0.706, + 0.786313,0.584772,-0.199385,1.098258,0.615227,-0.664625, + 0.499427,0.759449,-0.416905,1.046216,0.67568,-0.660875, + -0.0113,0.717458,-0.69651,1.01927,0.677486,-0.675096, + 0.171114,0.465842,-0.868165,1.059471,0.609015,-0.723162, + 0.171114,0.465842,-0.868165,1.059471,0.609015,-0.723162, + 0.621316,0.565314,-0.542574,1.083956,0.612743,-0.706, + 0.499427,0.759449,-0.416905,1.046216,0.67568,-0.660875, + 0.346195,0.171304,-0.92239,1.107591,0.526937,-0.739298, + 0.742506,0.410638,-0.529208,1.128758,0.537574,-0.7215, + 0.621316,0.565314,-0.542574,1.083956,0.612743,-0.706, + 0.346195,0.171304,-0.92239,1.107591,0.526937,-0.739298, + 0.621316,0.565314,-0.542574,1.083956,0.612743,-0.706, + 0.171114,0.465842,-0.868165,1.059471,0.609015,-0.723162, + 0.83547,0.498022,-0.232303,1.141425,0.544887,-0.677562, + 0.786313,0.584772,-0.199385,1.098258,0.615227,-0.664625, + 0.621316,0.565314,-0.542574,1.083956,0.612743,-0.706, + 0.83547,0.498022,-0.232303,1.141425,0.544887,-0.677562, + 0.621316,0.565314,-0.542574,1.083956,0.612743,-0.706, + 0.742506,0.410638,-0.529208,1.128758,0.537574,-0.7215, + 0.930569,0.3071,0.199327,1.204957,0.421449,-0.361333, + 0.890268,0.404155,0.209958,1.180758,0.472333,-0.335375, + 0.900371,0.427755,0.079739,1.1919,0.469528,-0.4095, + 0.930569,0.3071,0.199327,1.204957,0.421449,-0.361333, + 0.900371,0.427755,0.079739,1.1919,0.469528,-0.4095, + 0.940255,0.325371,0.100277,1.221821,0.401211,-0.4175, + 0.890268,0.404155,0.209958,1.180758,0.472333,-0.335375, + 0.83547,0.498022,0.232303,1.141425,0.544887,-0.322437, + 0.862894,0.498192,0.08496,1.149055,0.549292,-0.40225, + 0.862894,0.498192,0.08496,1.149055,0.549292,-0.40225, + 0.900371,0.427755,0.079739,1.1919,0.469528,-0.4095, + 0.890268,0.404155,0.209958,1.180758,0.472333,-0.335375, + 0.866025,0.5,0,1.151611,0.550768,-0.5, + 0.905374,0.424615,0,1.19793,0.464638,-0.5, + 0.900371,0.427755,0.079739,1.1919,0.469528,-0.4095, + 0.866025,0.5,0,1.151611,0.550768,-0.5, + 0.900371,0.427755,0.079739,1.1919,0.469528,-0.4095, + 0.862894,0.498192,0.08496,1.149055,0.549292,-0.40225, + 0.905374,0.424615,0,1.19793,0.464638,-0.5, + 0.962007,0.273026,0,1.230206,0.391113,-0.5, + 0.940255,0.325371,0.100277,1.221821,0.401211,-0.4175, + 0.940255,0.325371,0.100277,1.221821,0.401211,-0.4175, + 0.900371,0.427755,0.079739,1.1919,0.469528,-0.4095, + 0.905374,0.424615,0,1.19793,0.464638,-0.5, + 0.73381,0.655202,0.179534,1.066291,0.661627,-0.361333, + 0.737725,0.668365,0.095126,1.057196,0.68635,-0.4175, + 0.820632,0.565867,0.079739,1.1014,0.626279,-0.4095, + 0.73381,0.655202,0.179534,1.066291,0.661627,-0.361333, + 0.820632,0.565867,0.079739,1.1014,0.626279,-0.4095, + 0.786313,0.584772,0.199385,1.098258,0.615227,-0.335375, + 0.737725,0.668365,0.095126,1.057196,0.68635,-0.4175, + 0.739038,0.673664,0,1.052644,0.698661,-0.5, + 0.820414,0.57177,0,1.10018,0.633946,-0.5, + 0.820414,0.57177,0,1.10018,0.633946,-0.5, + 0.820632,0.565867,0.079739,1.1014,0.626279,-0.4095, + 0.737725,0.668365,0.095126,1.057196,0.68635,-0.4175, + 0.866025,0.5,0,1.151611,0.550768,-0.5, + 0.862894,0.498192,0.08496,1.149055,0.549292,-0.40225, + 0.820632,0.565867,0.079739,1.1014,0.626279,-0.4095, + 0.866025,0.5,0,1.151611,0.550768,-0.5, + 0.820632,0.565867,0.079739,1.1014,0.626279,-0.4095, + 0.820414,0.57177,0,1.10018,0.633946,-0.5, + 0.862894,0.498192,0.08496,1.149055,0.549292,-0.40225, + 0.83547,0.498022,0.232303,1.141425,0.544887,-0.322437, + 0.786313,0.584772,0.199385,1.098258,0.615227,-0.335375, + 0.786313,0.584772,0.199385,1.098258,0.615227,-0.335375, + 0.820632,0.565867,0.079739,1.1014,0.626279,-0.4095, + 0.862894,0.498192,0.08496,1.149055,0.549292,-0.40225, + 0.73381,0.655202,-0.179535,1.066291,0.661627,-0.638667, + 0.786313,0.584772,-0.199385,1.098258,0.615227,-0.664625, + 0.820632,0.565867,-0.079739,1.1014,0.626279,-0.5905, + 0.73381,0.655202,-0.179535,1.066291,0.661627,-0.638667, + 0.820632,0.565867,-0.079739,1.1014,0.626279,-0.5905, + 0.737725,0.668365,-0.095126,1.057196,0.68635,-0.5825, + 0.786313,0.584772,-0.199385,1.098258,0.615227,-0.664625, + 0.83547,0.498022,-0.232303,1.141425,0.544887,-0.677562, + 0.862894,0.498192,-0.08496,1.149055,0.549292,-0.59775, + 0.862894,0.498192,-0.08496,1.149055,0.549292,-0.59775, + 0.820632,0.565867,-0.079739,1.1014,0.626279,-0.5905, + 0.786313,0.584772,-0.199385,1.098258,0.615227,-0.664625, + 0.866025,0.5,0,1.151611,0.550768,-0.5, + 0.820414,0.57177,0,1.10018,0.633946,-0.5, + 0.820632,0.565867,-0.079739,1.1014,0.626279,-0.5905, + 0.866025,0.5,0,1.151611,0.550768,-0.5, + 0.820632,0.565867,-0.079739,1.1014,0.626279,-0.5905, + 0.862894,0.498192,-0.08496,1.149055,0.549292,-0.59775, + 0.820414,0.57177,0,1.10018,0.633946,-0.5, + 0.739038,0.673664,0,1.052644,0.698661,-0.5, + 0.737725,0.668365,-0.095126,1.057196,0.68635,-0.5825, + 0.737725,0.668365,-0.095126,1.057196,0.68635,-0.5825, + 0.820632,0.565867,-0.079739,1.1014,0.626279,-0.5905, + 0.820414,0.57177,0,1.10018,0.633946,-0.5, + 0.930569,0.3071,-0.199328,1.204957,0.421449,-0.638667, + 0.940255,0.325371,-0.100277,1.221821,0.401211,-0.5825, + 0.900371,0.427755,-0.079739,1.1919,0.469528,-0.5905, + 0.930569,0.3071,-0.199328,1.204957,0.421449,-0.638667, + 0.900371,0.427755,-0.079739,1.1919,0.469528,-0.5905, + 0.890268,0.404155,-0.209958,1.180758,0.472333,-0.664625, + 0.940255,0.325371,-0.100277,1.221821,0.401211,-0.5825, + 0.962007,0.273026,0,1.230206,0.391113,-0.5, + 0.905374,0.424615,0,1.19793,0.464638,-0.5, + 0.905374,0.424615,0,1.19793,0.464638,-0.5, + 0.900371,0.427755,-0.079739,1.1919,0.469528,-0.5905, + 0.940255,0.325371,-0.100277,1.221821,0.401211,-0.5825, + 0.866025,0.5,0,1.151611,0.550768,-0.5, + 0.862894,0.498192,-0.08496,1.149055,0.549292,-0.59775, + 0.900371,0.427755,-0.079739,1.1919,0.469528,-0.5905, + 0.866025,0.5,0,1.151611,0.550768,-0.5, + 0.900371,0.427755,-0.079739,1.1919,0.469528,-0.5905, + 0.905374,0.424615,0,1.19793,0.464638,-0.5, + 0.862894,0.498192,-0.08496,1.149055,0.549292,-0.59775, + 0.83547,0.498022,-0.232303,1.141425,0.544887,-0.677562, + 0.890268,0.404155,-0.209958,1.180758,0.472333,-0.664625, + 0.890268,0.404155,-0.209958,1.180758,0.472333,-0.664625, + 0.900371,0.427755,-0.079739,1.1919,0.469528,-0.5905, + 0.862894,0.498192,-0.08496,1.149055,0.549292,-0.59775, + 0.133481,-0.728232,-0.672207,1.115671,0.352342,-0.673147, + 0.180025,-0.723743,-0.666173,1.052796,0.338416,-0.673044, + 0.197559,-0.930384,-0.308798,1.077742,0.301825,-0.594388, + 0.133481,-0.728232,-0.672207,1.115671,0.352342,-0.673147, + 0.197559,-0.930384,-0.308798,1.077742,0.301825,-0.594388, + 0.164983,-0.93415,-0.316457,1.139957,0.313586,-0.594444, + 0.180025,-0.723743,-0.666173,1.052796,0.338416,-0.673044, + 0.227251,-0.720523,-0.655136,0.982068,0.320307,-0.674787, + 0.245574,-0.922075,-0.299117,1.008335,0.286145,-0.595338, + 0.245574,-0.922075,-0.299117,1.008335,0.286145,-0.595338, + 0.197559,-0.930384,-0.308798,1.077742,0.301825,-0.594388, + 0.180025,-0.723743,-0.666173,1.052796,0.338416,-0.673044, + 0.233794,-0.972286,0,1.017091,0.274757,-0.5, + 0.1906,-0.981668,0,1.086058,0.289628,-0.5, + 0.197559,-0.930384,-0.308798,1.077742,0.301825,-0.594388, + 0.233794,-0.972286,0,1.017091,0.274757,-0.5, + 0.197559,-0.930384,-0.308798,1.077742,0.301825,-0.594388, + 0.245574,-0.922075,-0.299117,1.008335,0.286145,-0.595338, + 0.1906,-0.981668,0,1.086058,0.289628,-0.5, + 0.166954,-0.985965,0,1.148052,0.300668,-0.5, + 0.164983,-0.93415,-0.316457,1.139957,0.313586,-0.594444, + 0.164983,-0.93415,-0.316457,1.139957,0.313586,-0.594444, + 0.197559,-0.930384,-0.308798,1.077742,0.301825,-0.594388, + 0.1906,-0.981668,0,1.086058,0.289628,-0.5, + 0.287838,-0.708745,-0.644073,0.910476,0.29726,-0.676962, + 0.37574,-0.67126,-0.638928,0.845007,0.268518,-0.678159, + 0.438584,-0.8515,-0.287389,0.875679,0.240722,-0.597178, + 0.438584,-0.8515,-0.287389,0.875679,0.240722,-0.597178, + 0.319032,-0.902133,-0.290473,0.93867,0.26597,-0.596525, + 0.287838,-0.708745,-0.644073,0.910476,0.29726,-0.676962, + 0.419512,-0.90775,0,0.885904,0.231457,-0.5, + 0.303521,-0.952825,0,0.948068,0.255539,-0.5, + 0.319032,-0.902133,-0.290473,0.93867,0.26597,-0.596525, + 0.419512,-0.90775,0,0.885904,0.231457,-0.5, + 0.319032,-0.902133,-0.290473,0.93867,0.26597,-0.596525, + 0.438584,-0.8515,-0.287389,0.875679,0.240722,-0.597178, + 0.303521,-0.952825,0,0.948068,0.255539,-0.5, + 0.233794,-0.972286,0,1.017091,0.274757,-0.5, + 0.245574,-0.922075,-0.299117,1.008335,0.286145,-0.595338, + 0.245574,-0.922075,-0.299117,1.008335,0.286145,-0.595338, + 0.319032,-0.902133,-0.290473,0.93867,0.26597,-0.596525, + 0.303521,-0.952825,0,0.948068,0.255539,-0.5, + 0.227251,-0.720523,-0.655136,0.982068,0.320307,-0.674787, + 0.287838,-0.708745,-0.644073,0.910476,0.29726,-0.676962, + 0.319032,-0.902133,-0.290473,0.93867,0.26597,-0.596525, + 0.227251,-0.720523,-0.655136,0.982068,0.320307,-0.674787, + 0.319032,-0.902133,-0.290473,0.93867,0.26597,-0.596525, + 0.245574,-0.922075,-0.299117,1.008335,0.286145,-0.595338, + 0.438584,-0.8515,0.287389,0.875679,0.240722,-0.402822, + 0.37574,-0.67126,0.638928,0.845007,0.268518,-0.321841, + 0.287838,-0.708745,0.644073,0.910476,0.29726,-0.323037, + 0.287838,-0.708745,0.644073,0.910476,0.29726,-0.323037, + 0.319032,-0.902133,0.290473,0.93867,0.26597,-0.403475, + 0.438584,-0.8515,0.287389,0.875679,0.240722,-0.402822, + 0.227251,-0.720523,0.655136,0.982068,0.320307,-0.325213, + 0.245574,-0.922075,0.299116,1.008335,0.286145,-0.404662, + 0.319032,-0.902133,0.290473,0.93867,0.26597,-0.403475, + 0.227251,-0.720523,0.655136,0.982068,0.320307,-0.325213, + 0.319032,-0.902133,0.290473,0.93867,0.26597,-0.403475, + 0.287838,-0.708745,0.644073,0.910476,0.29726,-0.323037, + 0.245574,-0.922075,0.299116,1.008335,0.286145,-0.404662, + 0.233794,-0.972286,0,1.017091,0.274757,-0.5, + 0.303521,-0.952825,0,0.948068,0.255539,-0.5, + 0.303521,-0.952825,0,0.948068,0.255539,-0.5, + 0.319032,-0.902133,0.290473,0.93867,0.26597,-0.403475, + 0.245574,-0.922075,0.299116,1.008335,0.286145,-0.404662, + 0.419512,-0.90775,0,0.885904,0.231457,-0.5, + 0.438584,-0.8515,0.287389,0.875679,0.240722,-0.402822, + 0.319032,-0.902133,0.290473,0.93867,0.26597,-0.403475, + 0.419512,-0.90775,0,0.885904,0.231457,-0.5, + 0.319032,-0.902133,0.290473,0.93867,0.26597,-0.403475, + 0.303521,-0.952825,0,0.948068,0.255539,-0.5, + 0.133481,-0.728232,0.672206,1.115671,0.352342,-0.326853, + 0.164983,-0.93415,0.316457,1.139957,0.313586,-0.405556, + 0.19756,-0.930384,0.308798,1.077742,0.301825,-0.405612, + 0.133481,-0.728232,0.672206,1.115671,0.352342,-0.326853, + 0.19756,-0.930384,0.308798,1.077742,0.301825,-0.405612, + 0.180025,-0.723743,0.666173,1.052796,0.338416,-0.326956, + 0.164983,-0.93415,0.316457,1.139957,0.313586,-0.405556, + 0.166954,-0.985965,0,1.148052,0.300668,-0.5, + 0.1906,-0.981668,0,1.086058,0.289628,-0.5, + 0.1906,-0.981668,0,1.086058,0.289628,-0.5, + 0.19756,-0.930384,0.308798,1.077742,0.301825,-0.405612, + 0.164983,-0.93415,0.316457,1.139957,0.313586,-0.405556, + 0.233794,-0.972286,0,1.017091,0.274757,-0.5, + 0.245574,-0.922075,0.299116,1.008335,0.286145,-0.404662, + 0.19756,-0.930384,0.308798,1.077742,0.301825,-0.405612, + 0.233794,-0.972286,0,1.017091,0.274757,-0.5, + 0.19756,-0.930384,0.308798,1.077742,0.301825,-0.405612, + 0.1906,-0.981668,0,1.086058,0.289628,-0.5, + 0.245574,-0.922075,0.299116,1.008335,0.286145,-0.404662, + 0.227251,-0.720523,0.655136,0.982068,0.320307,-0.325213, + 0.180025,-0.723743,0.666173,1.052796,0.338416,-0.326956, + 0.180025,-0.723743,0.666173,1.052796,0.338416,-0.326956, + 0.19756,-0.930384,0.308798,1.077742,0.301825,-0.405612, + 0.245574,-0.922075,0.299116,1.008335,0.286145,-0.404662, + -0.334948,0.636181,-0.695043,0.937575,0.63655,-0.673147, + -0.290177,0.673481,-0.679868,0.869854,0.606754,-0.673044, + -0.128571,0.348912,-0.928294,0.911431,0.545768,-0.720237, + -0.334948,0.636181,-0.695043,0.937575,0.63655,-0.673147, + -0.128571,0.348912,-0.928294,0.911431,0.545768,-0.720237, + -0.176226,0.307645,-0.935039,0.978052,0.571957,-0.720369, + -0.290177,0.673481,-0.679868,0.869854,0.606754,-0.673044, + -0.308574,0.679683,-0.665442,0.789439,0.570833,-0.674787, + -0.132599,0.364183,-0.92184,0.833218,0.513896,-0.722456, + -0.132599,0.364183,-0.92184,0.833218,0.513896,-0.722456, + -0.128571,0.348912,-0.928294,0.911431,0.545768,-0.720237, + -0.290177,0.673481,-0.679868,0.869854,0.606754,-0.673044, + 0.026562,0.016059,-0.999518,0.885754,0.44557,-0.738345, + 0.010552,0.00411,-0.999936,0.961325,0.472585,-0.735969, + -0.128571,0.348912,-0.928294,0.911431,0.545768,-0.720237, + 0.026562,0.016059,-0.999518,0.885754,0.44557,-0.738345, + -0.128571,0.348912,-0.928294,0.911431,0.545768,-0.720237, + -0.132599,0.364183,-0.92184,0.833218,0.513896,-0.722456, + 0.010552,0.00411,-0.999936,0.961325,0.472585,-0.735969, + -0.042028,-0.027931,-0.998726,1.026623,0.494446,-0.736109, + -0.176226,0.307645,-0.935039,0.978052,0.571957,-0.720369, + -0.176226,0.307645,-0.935039,0.978052,0.571957,-0.720369, + -0.128571,0.348912,-0.928294,0.911431,0.545768,-0.720237, + 0.010552,0.00411,-0.999936,0.961325,0.472585,-0.735969, + -0.36742,0.660294,-0.654992,0.703717,0.526722,-0.676962, + -0.459897,0.603331,-0.651526,0.620074,0.472355,-0.678159, + -0.231331,0.321253,-0.918304,0.671195,0.426029,-0.726748, + -0.231331,0.321253,-0.918304,0.671195,0.426029,-0.726748, + -0.168868,0.358367,-0.918181,0.750708,0.474572,-0.725225, + -0.36742,0.660294,-0.654992,0.703717,0.526722,-0.676962, + 0.003382,-0.001295,-0.999993,0.73254,0.370437,-0.742944, + 0.02248,0.015117,-0.999633,0.807096,0.411991,-0.741313, + -0.168868,0.358367,-0.918181,0.750708,0.474572,-0.725225, + 0.003382,-0.001295,-0.999993,0.73254,0.370437,-0.742944, + -0.168868,0.358367,-0.918181,0.750708,0.474572,-0.725225, + -0.231331,0.321253,-0.918304,0.671195,0.426029,-0.726748, + 0.02248,0.015117,-0.999633,0.807096,0.411991,-0.741313, + 0.026562,0.016059,-0.999518,0.885754,0.44557,-0.738345, + -0.132599,0.364183,-0.92184,0.833218,0.513896,-0.722456, + -0.132599,0.364183,-0.92184,0.833218,0.513896,-0.722456, + -0.168868,0.358367,-0.918181,0.750708,0.474572,-0.725225, + 0.02248,0.015117,-0.999633,0.807096,0.411991,-0.741313, + -0.308574,0.679683,-0.665442,0.789439,0.570833,-0.674787, + -0.36742,0.660294,-0.654992,0.703717,0.526722,-0.676962, + -0.168868,0.358367,-0.918181,0.750708,0.474572,-0.725225, + -0.308574,0.679683,-0.665442,0.789439,0.570833,-0.674787, + -0.168868,0.358367,-0.918181,0.750708,0.474572,-0.725225, + -0.132599,0.364183,-0.92184,0.833218,0.513896,-0.722456, + 0.37574,-0.67126,-0.638928,0.845007,0.268518,-0.678159, + 0.287838,-0.708745,-0.644073,0.910476,0.29726,-0.676962, + 0.181001,-0.354486,-0.917376,0.863485,0.34941,-0.725225, + 0.37574,-0.67126,-0.638928,0.845007,0.268518,-0.678159, + 0.181001,-0.354486,-0.917376,0.863485,0.34941,-0.725225, + 0.214466,-0.344671,-0.913896,0.793886,0.314845,-0.726748, + 0.287838,-0.708745,-0.644073,0.910476,0.29726,-0.676962, + 0.227251,-0.720523,-0.655136,0.982068,0.320307,-0.674787, + 0.149984,-0.357133,-0.921933,0.938289,0.377245,-0.722456, + 0.149984,-0.357133,-0.921933,0.938289,0.377245,-0.722456, + 0.181001,-0.354486,-0.917376,0.863485,0.34941,-0.725225, + 0.287838,-0.708745,-0.644073,0.910476,0.29726,-0.676962, + 0.026562,0.016059,-0.999518,0.885754,0.44557,-0.738345, + 0.02248,0.015117,-0.999633,0.807096,0.411991,-0.741313, + 0.181001,-0.354486,-0.917376,0.863485,0.34941,-0.725225, + 0.026562,0.016059,-0.999518,0.885754,0.44557,-0.738345, + 0.181001,-0.354486,-0.917376,0.863485,0.34941,-0.725225, + 0.149984,-0.357133,-0.921933,0.938289,0.377245,-0.722456, + 0.02248,0.015117,-0.999633,0.807096,0.411991,-0.741313, + 0.003382,-0.001295,-0.999993,0.73254,0.370437,-0.742944, + 0.214466,-0.344671,-0.913896,0.793886,0.314845,-0.726748, + 0.214466,-0.344671,-0.913896,0.793886,0.314845,-0.726748, + 0.181001,-0.354486,-0.917376,0.863485,0.34941,-0.725225, + 0.02248,0.015117,-0.999633,0.807096,0.411991,-0.741313, + 0.180025,-0.723743,-0.666173,1.052796,0.338416,-0.673044, + 0.133481,-0.728232,-0.672207,1.115671,0.352342,-0.673147, + 0.060251,-0.377234,-0.924156,1.075195,0.416935,-0.720369, + 0.060251,-0.377234,-0.924156,1.075195,0.416935,-0.720369, + 0.114557,-0.361315,-0.92538,1.011218,0.399402,-0.720237, + 0.180025,-0.723743,-0.666173,1.052796,0.338416,-0.673044, + -0.042028,-0.027931,-0.998726,1.026623,0.494446,-0.736109, + 0.010552,0.00411,-0.999936,0.961325,0.472585,-0.735969, + 0.114557,-0.361315,-0.92538,1.011218,0.399402,-0.720237, + -0.042028,-0.027931,-0.998726,1.026623,0.494446,-0.736109, + 0.114557,-0.361315,-0.92538,1.011218,0.399402,-0.720237, + 0.060251,-0.377234,-0.924156,1.075195,0.416935,-0.720369, + 0.010552,0.00411,-0.999936,0.961325,0.472585,-0.735969, + 0.026562,0.016059,-0.999518,0.885754,0.44557,-0.738345, + 0.149984,-0.357133,-0.921933,0.938289,0.377245,-0.722456, + 0.149984,-0.357133,-0.921933,0.938289,0.377245,-0.722456, + 0.114557,-0.361315,-0.92538,1.011218,0.399402,-0.720237, + 0.010552,0.00411,-0.999936,0.961325,0.472585,-0.735969, + 0.227251,-0.720523,-0.655136,0.982068,0.320307,-0.674787, + 0.180025,-0.723743,-0.666173,1.052796,0.338416,-0.673044, + 0.114557,-0.361315,-0.92538,1.011218,0.399402,-0.720237, + 0.227251,-0.720523,-0.655136,0.982068,0.320307,-0.674787, + 0.114557,-0.361315,-0.92538,1.011218,0.399402,-0.720237, + 0.149984,-0.357133,-0.921933,0.938289,0.377245,-0.722456, + -0.334947,0.636181,0.695043,0.937575,0.63655,-0.326853, + -0.176226,0.307645,0.935039,0.978052,0.571957,-0.279631, + -0.128571,0.348912,0.928294,0.911431,0.545768,-0.279763, + -0.334947,0.636181,0.695043,0.937575,0.63655,-0.326853, + -0.128571,0.348912,0.928294,0.911431,0.545768,-0.279763, + -0.290177,0.673481,0.679868,0.869854,0.606754,-0.326956, + -0.176226,0.307645,0.935039,0.978052,0.571957,-0.279631, + -0.042028,-0.027931,0.998726,1.026623,0.494446,-0.263891, + 0.010552,0.00411,0.999936,0.961325,0.472585,-0.264031, + 0.010552,0.00411,0.999936,0.961325,0.472585,-0.264031, + -0.128571,0.348912,0.928294,0.911431,0.545768,-0.279763, + -0.176226,0.307645,0.935039,0.978052,0.571957,-0.279631, + 0.026562,0.01606,0.999518,0.885754,0.44557,-0.261655, + -0.132599,0.364183,0.921839,0.833218,0.513896,-0.277544, + -0.128571,0.348912,0.928294,0.911431,0.545768,-0.279763, + 0.026562,0.01606,0.999518,0.885754,0.44557,-0.261655, + -0.128571,0.348912,0.928294,0.911431,0.545768,-0.279763, + 0.010552,0.00411,0.999936,0.961325,0.472585,-0.264031, + -0.132599,0.364183,0.921839,0.833218,0.513896,-0.277544, + -0.308574,0.679683,0.665442,0.789439,0.570833,-0.325213, + -0.290177,0.673481,0.679868,0.869854,0.606754,-0.326956, + -0.290177,0.673481,0.679868,0.869854,0.606754,-0.326956, + -0.128571,0.348912,0.928294,0.911431,0.545768,-0.279763, + -0.132599,0.364183,0.921839,0.833218,0.513896,-0.277544, + 0.060251,-0.377234,0.924156,1.075195,0.416935,-0.279631, + 0.133481,-0.728232,0.672206,1.115671,0.352342,-0.326853, + 0.180025,-0.723743,0.666173,1.052796,0.338416,-0.326956, + 0.180025,-0.723743,0.666173,1.052796,0.338416,-0.326956, + 0.114557,-0.361314,0.92538,1.011218,0.399402,-0.279763, + 0.060251,-0.377234,0.924156,1.075195,0.416935,-0.279631, + 0.227251,-0.720523,0.655136,0.982068,0.320307,-0.325213, + 0.149984,-0.357133,0.921933,0.938289,0.377245,-0.277544, + 0.114557,-0.361314,0.92538,1.011218,0.399402,-0.279763, + 0.227251,-0.720523,0.655136,0.982068,0.320307,-0.325213, + 0.114557,-0.361314,0.92538,1.011218,0.399402,-0.279763, + 0.180025,-0.723743,0.666173,1.052796,0.338416,-0.326956, + 0.149984,-0.357133,0.921933,0.938289,0.377245,-0.277544, + 0.026562,0.01606,0.999518,0.885754,0.44557,-0.261655, + 0.010552,0.00411,0.999936,0.961325,0.472585,-0.264031, + 0.010552,0.00411,0.999936,0.961325,0.472585,-0.264031, + 0.114557,-0.361314,0.92538,1.011218,0.399402,-0.279763, + 0.149984,-0.357133,0.921933,0.938289,0.377245,-0.277544, + -0.042028,-0.027931,0.998726,1.026623,0.494446,-0.263891, + 0.060251,-0.377234,0.924156,1.075195,0.416935,-0.279631, + 0.114557,-0.361314,0.92538,1.011218,0.399402,-0.279763, + -0.042028,-0.027931,0.998726,1.026623,0.494446,-0.263891, + 0.114557,-0.361314,0.92538,1.011218,0.399402,-0.279763, + 0.010552,0.00411,0.999936,0.961325,0.472585,-0.264031, + 0.37574,-0.67126,0.638928,0.845007,0.268518,-0.321841, + 0.214466,-0.34467,0.913896,0.793886,0.314845,-0.273252, + 0.181001,-0.354486,0.917376,0.863485,0.34941,-0.274775, + 0.37574,-0.67126,0.638928,0.845007,0.268518,-0.321841, + 0.181001,-0.354486,0.917376,0.863485,0.34941,-0.274775, + 0.287838,-0.708745,0.644073,0.910476,0.29726,-0.323037, + 0.214466,-0.34467,0.913896,0.793886,0.314845,-0.273252, + 0.003382,-0.001295,0.999993,0.73254,0.370437,-0.257056, + 0.02248,0.015118,0.999633,0.807096,0.411991,-0.258687, + 0.02248,0.015118,0.999633,0.807096,0.411991,-0.258687, + 0.181001,-0.354486,0.917376,0.863485,0.34941,-0.274775, + 0.214466,-0.34467,0.913896,0.793886,0.314845,-0.273252, + 0.026562,0.01606,0.999518,0.885754,0.44557,-0.261655, + 0.149984,-0.357133,0.921933,0.938289,0.377245,-0.277544, + 0.181001,-0.354486,0.917376,0.863485,0.34941,-0.274775, + 0.026562,0.01606,0.999518,0.885754,0.44557,-0.261655, + 0.181001,-0.354486,0.917376,0.863485,0.34941,-0.274775, + 0.02248,0.015118,0.999633,0.807096,0.411991,-0.258687, + 0.149984,-0.357133,0.921933,0.938289,0.377245,-0.277544, + 0.227251,-0.720523,0.655136,0.982068,0.320307,-0.325213, + 0.287838,-0.708745,0.644073,0.910476,0.29726,-0.323037, + 0.287838,-0.708745,0.644073,0.910476,0.29726,-0.323037, + 0.181001,-0.354486,0.917376,0.863485,0.34941,-0.274775, + 0.149984,-0.357133,0.921933,0.938289,0.377245,-0.277544, + -0.231331,0.321253,0.918304,0.671195,0.426029,-0.273252, + -0.459898,0.603331,0.651526,0.620074,0.472355,-0.321841, + -0.36742,0.660294,0.654992,0.703717,0.526722,-0.323037, + -0.36742,0.660294,0.654992,0.703717,0.526722,-0.323037, + -0.168868,0.358366,0.918181,0.750708,0.474572,-0.274775, + -0.231331,0.321253,0.918304,0.671195,0.426029,-0.273252, + -0.308574,0.679683,0.665442,0.789439,0.570833,-0.325213, + -0.132599,0.364183,0.921839,0.833218,0.513896,-0.277544, + -0.168868,0.358366,0.918181,0.750708,0.474572,-0.274775, + -0.308574,0.679683,0.665442,0.789439,0.570833,-0.325213, + -0.168868,0.358366,0.918181,0.750708,0.474572,-0.274775, + -0.36742,0.660294,0.654992,0.703717,0.526722,-0.323037, + -0.132599,0.364183,0.921839,0.833218,0.513896,-0.277544, + 0.026562,0.01606,0.999518,0.885754,0.44557,-0.261655, + 0.02248,0.015118,0.999633,0.807096,0.411991,-0.258687, + 0.02248,0.015118,0.999633,0.807096,0.411991,-0.258687, + -0.168868,0.358366,0.918181,0.750708,0.474572,-0.274775, + -0.132599,0.364183,0.921839,0.833218,0.513896,-0.277544, + 0.003382,-0.001295,0.999993,0.73254,0.370437,-0.257056, + -0.231331,0.321253,0.918304,0.671195,0.426029,-0.273252, + -0.168868,0.358366,0.918181,0.750708,0.474572,-0.274775, + 0.003382,-0.001295,0.999993,0.73254,0.370437,-0.257056, + -0.168868,0.358366,0.918181,0.750708,0.474572,-0.274775, + 0.02248,0.015118,0.999633,0.807096,0.411991,-0.258687, + -0.290177,0.673481,-0.679868,0.869854,0.606754,-0.673044, + -0.334948,0.636181,-0.695043,0.937575,0.63655,-0.673147, + -0.440797,0.833329,-0.333557,0.913289,0.675305,-0.594444, + -0.440797,0.833329,-0.333557,0.913289,0.675305,-0.594444, + -0.397769,0.859277,-0.321594,0.844907,0.643346,-0.594388, + -0.290177,0.673481,-0.679868,0.869854,0.606754,-0.673044, + -0.456348,0.889801,0,0.905194,0.688224,-0.5, + -0.427853,0.903848,0,0.836591,0.655543,-0.5, + -0.397769,0.859277,-0.321594,0.844907,0.643346,-0.594388, + -0.456348,0.889801,0,0.905194,0.688224,-0.5, + -0.397769,0.859277,-0.321594,0.844907,0.643346,-0.594388, + -0.440797,0.833329,-0.333557,0.913289,0.675305,-0.594444, + -0.427853,0.903848,0,0.836591,0.655543,-0.5, + -0.459546,0.888154,0,0.754416,0.616383,-0.5, + -0.421194,0.852237,-0.310301,0.763171,0.604996,-0.595338, + -0.421194,0.852237,-0.310301,0.763171,0.604996,-0.595338, + -0.397769,0.859277,-0.321594,0.844907,0.643346,-0.594388, + -0.427853,0.903848,0,0.836591,0.655543,-0.5, + -0.308574,0.679683,-0.665442,0.789439,0.570833,-0.674787, + -0.290177,0.673481,-0.679868,0.869854,0.606754,-0.673044, + -0.397769,0.859277,-0.321594,0.844907,0.643346,-0.594388, + -0.308574,0.679683,-0.665442,0.789439,0.570833,-0.674787, + -0.397769,0.859277,-0.321594,0.844907,0.643346,-0.594388, + -0.421194,0.852237,-0.310301,0.763171,0.604996,-0.595338, + -0.440797,0.833329,0.333557,0.913289,0.675305,-0.405556, + -0.334947,0.636181,0.695043,0.937575,0.63655,-0.326853, + -0.290177,0.673481,0.679868,0.869854,0.606754,-0.326956, + -0.290177,0.673481,0.679868,0.869854,0.606754,-0.326956, + -0.397769,0.859277,0.321594,0.844907,0.643346,-0.405612, + -0.440797,0.833329,0.333557,0.913289,0.675305,-0.405556, + -0.308574,0.679683,0.665442,0.789439,0.570833,-0.325213, + -0.421194,0.852237,0.310301,0.763171,0.604996,-0.404662, + -0.397769,0.859277,0.321594,0.844907,0.643346,-0.405612, + -0.308574,0.679683,0.665442,0.789439,0.570833,-0.325213, + -0.397769,0.859277,0.321594,0.844907,0.643346,-0.405612, + -0.290177,0.673481,0.679868,0.869854,0.606754,-0.326956, + -0.421194,0.852237,0.310301,0.763171,0.604996,-0.404662, + -0.459546,0.888154,0,0.754416,0.616383,-0.5, + -0.427853,0.903848,0,0.836591,0.655543,-0.5, + -0.427853,0.903848,0,0.836591,0.655543,-0.5, + -0.397769,0.859277,0.321594,0.844907,0.643346,-0.405612, + -0.421194,0.852237,0.310301,0.763171,0.604996,-0.404662, + -0.456348,0.889801,0,0.905194,0.688224,-0.5, + -0.440797,0.833329,0.333557,0.913289,0.675305,-0.405556, + -0.397769,0.859277,0.321594,0.844907,0.643346,-0.405612, + -0.456348,0.889801,0,0.905194,0.688224,-0.5, + -0.397769,0.859277,0.321594,0.844907,0.643346,-0.405612, + -0.427853,0.903848,0,0.836591,0.655543,-0.5, + -0.459898,0.603331,0.651526,0.620074,0.472355,-0.321841, + -0.5899,0.750266,0.298526,0.589401,0.500151,-0.402822, + -0.487389,0.819353,0.301848,0.675523,0.558012,-0.403475, + -0.459898,0.603331,0.651526,0.620074,0.472355,-0.321841, + -0.487389,0.819353,0.301848,0.675523,0.558012,-0.403475, + -0.36742,0.660294,0.654992,0.703717,0.526722,-0.323037, + -0.5899,0.750266,0.298526,0.589401,0.500151,-0.402822, + -0.64127,0.767315,0,0.579177,0.509417,-0.5, + -0.532473,0.846447,0,0.666125,0.568442,-0.5, + -0.532473,0.846447,0,0.666125,0.568442,-0.5, + -0.487389,0.819353,0.301848,0.675523,0.558012,-0.403475, + -0.5899,0.750266,0.298526,0.589401,0.500151,-0.402822, + -0.459546,0.888154,0,0.754416,0.616383,-0.5, + -0.421194,0.852237,0.310301,0.763171,0.604996,-0.404662, + -0.487389,0.819353,0.301848,0.675523,0.558012,-0.403475, + -0.459546,0.888154,0,0.754416,0.616383,-0.5, + -0.487389,0.819353,0.301848,0.675523,0.558012,-0.403475, + -0.532473,0.846447,0,0.666125,0.568442,-0.5, + -0.421194,0.852237,0.310301,0.763171,0.604996,-0.404662, + -0.308574,0.679683,0.665442,0.789439,0.570833,-0.325213, + -0.36742,0.660294,0.654992,0.703717,0.526722,-0.323037, + -0.36742,0.660294,0.654992,0.703717,0.526722,-0.323037, + -0.487389,0.819353,0.301848,0.675523,0.558012,-0.403475, + -0.421194,0.852237,0.310301,0.763171,0.604996,-0.404662, + -0.459897,0.603331,-0.651526,0.620074,0.472355,-0.678159, + -0.36742,0.660294,-0.654992,0.703717,0.526722,-0.676962, + -0.487389,0.819353,-0.301848,0.675523,0.558012,-0.596525, + -0.459897,0.603331,-0.651526,0.620074,0.472355,-0.678159, + -0.487389,0.819353,-0.301848,0.675523,0.558012,-0.596525, + -0.5899,0.750266,-0.298526,0.589401,0.500151,-0.597178, + -0.36742,0.660294,-0.654992,0.703717,0.526722,-0.676962, + -0.308574,0.679683,-0.665442,0.789439,0.570833,-0.674787, + -0.421194,0.852237,-0.310301,0.763171,0.604996,-0.595338, + -0.421194,0.852237,-0.310301,0.763171,0.604996,-0.595338, + -0.487389,0.819353,-0.301848,0.675523,0.558012,-0.596525, + -0.36742,0.660294,-0.654992,0.703717,0.526722,-0.676962, + -0.459546,0.888154,0,0.754416,0.616383,-0.5, + -0.532473,0.846447,0,0.666125,0.568442,-0.5, + -0.487389,0.819353,-0.301848,0.675523,0.558012,-0.596525, + -0.459546,0.888154,0,0.754416,0.616383,-0.5, + -0.487389,0.819353,-0.301848,0.675523,0.558012,-0.596525, + -0.421194,0.852237,-0.310301,0.763171,0.604996,-0.595338, + -0.532473,0.846447,0,0.666125,0.568442,-0.5, + -0.64127,0.767315,0,0.579177,0.509417,-0.5, + -0.5899,0.750266,-0.298526,0.589401,0.500151,-0.597178, + -0.5899,0.750266,-0.298526,0.589401,0.500151,-0.597178, + -0.487389,0.819353,-0.301848,0.675523,0.558012,-0.596525, + -0.532473,0.846447,0,0.666125,0.568442,-0.5, + -0.610536,0.426181,-0.667544,0.428341,0.263148,-0.673044, + -0.603758,0.432599,-0.669577,0.386176,0.201223,-0.673147, + -0.304433,0.241938,-0.921296,0.458468,0.182068,-0.720369, + -0.304433,0.241938,-0.921296,0.458468,0.182068,-0.720369, + -0.317966,0.212815,-0.923909,0.495371,0.238512,-0.720237, + -0.610536,0.426181,-0.667544,0.428341,0.263148,-0.673044, + 0.013842,0.059444,-0.998136,0.545218,0.159081,-0.736109, + -0.005469,-0.009402,-0.999941,0.575807,0.208949,-0.735969, + -0.317966,0.212815,-0.923909,0.495371,0.238512,-0.720237, + 0.013842,0.059444,-0.998136,0.545218,0.159081,-0.736109, + -0.317966,0.212815,-0.923909,0.495371,0.238512,-0.720237, + -0.304433,0.241938,-0.921296,0.458468,0.182068,-0.720369, + -0.005469,-0.009402,-0.999941,0.575807,0.208949,-0.735969, + -0.015914,-0.029529,-0.999437,0.617093,0.264045,-0.738345, + -0.31459,0.228088,-0.921417,0.543287,0.301992,-0.722456, + -0.31459,0.228088,-0.921417,0.543287,0.301992,-0.722456, + -0.317966,0.212815,-0.923909,0.495371,0.238512,-0.720237, + -0.005469,-0.009402,-0.999941,0.575807,0.208949,-0.735969, + -0.595775,0.458968,-0.659091,0.481782,0.333615,-0.674787, + -0.610536,0.426181,-0.667544,0.428341,0.263148,-0.673044, + -0.317966,0.212815,-0.923909,0.495371,0.238512,-0.720237, + -0.595775,0.458968,-0.659091,0.481782,0.333615,-0.674787, + -0.317966,0.212815,-0.923909,0.495371,0.238512,-0.720237, + -0.31459,0.228088,-0.921417,0.543287,0.301992,-0.722456, + 0.677454,-0.2664,-0.685629,0.704261,0.116939,-0.673147, + 0.617578,-0.419692,-0.665174,0.723274,0.15475,-0.673044, + 0.314626,-0.214176,-0.924737,0.656244,0.179386,-0.720237, + 0.677454,-0.2664,-0.685629,0.704261,0.116939,-0.673147, + 0.314626,-0.214176,-0.924737,0.656244,0.179386,-0.720237, + 0.344586,-0.098997,-0.93352,0.631969,0.136095,-0.720369, + 0.617578,-0.419692,-0.665174,0.723274,0.15475,-0.673044, + 0.525124,-0.503608,-0.68602,0.752404,0.194475,-0.674787, + 0.282948,-0.282367,-0.916629,0.690899,0.226098,-0.722456, + 0.282948,-0.282367,-0.916629,0.690899,0.226098,-0.722456, + 0.314626,-0.214176,-0.924737,0.656244,0.179386,-0.720237, + 0.617578,-0.419692,-0.665174,0.723274,0.15475,-0.673044, + -0.015914,-0.029529,-0.999437,0.617093,0.264045,-0.738345, + -0.005469,-0.009402,-0.999941,0.575807,0.208949,-0.735969, + 0.314626,-0.214176,-0.924737,0.656244,0.179386,-0.720237, + -0.015914,-0.029529,-0.999437,0.617093,0.264045,-0.738345, + 0.314626,-0.214176,-0.924737,0.656244,0.179386,-0.720237, + 0.282948,-0.282367,-0.916629,0.690899,0.226098,-0.722456, + -0.005469,-0.009402,-0.999941,0.575807,0.208949,-0.735969, + 0.013842,0.059444,-0.998136,0.545218,0.159081,-0.736109, + 0.344586,-0.098997,-0.93352,0.631969,0.136095,-0.720369, + 0.344586,-0.098997,-0.93352,0.631969,0.136095,-0.720369, + 0.314626,-0.214176,-0.924737,0.656244,0.179386,-0.720237, + -0.005469,-0.009402,-0.999941,0.575807,0.208949,-0.735969, + 0.473586,-0.60369,-0.641307,0.792649,0.233327,-0.676962, + 0.37574,-0.67126,-0.638928,0.845007,0.268518,-0.678159, + 0.214466,-0.344671,-0.913896,0.793886,0.314845,-0.726748, + 0.214466,-0.344671,-0.913896,0.793886,0.314845,-0.726748, + 0.248581,-0.323271,-0.913074,0.736568,0.272496,-0.725225, + 0.473586,-0.60369,-0.641307,0.792649,0.233327,-0.676962, + 0.003382,-0.001295,-0.999993,0.73254,0.370437,-0.742944, + -0.014673,-0.023374,-0.999619,0.669271,0.319498,-0.741313, + 0.248581,-0.323271,-0.913074,0.736568,0.272496,-0.725225, + 0.003382,-0.001295,-0.999993,0.73254,0.370437,-0.742944, + 0.248581,-0.323271,-0.913074,0.736568,0.272496,-0.725225, + 0.214466,-0.344671,-0.913896,0.793886,0.314845,-0.726748, + -0.014673,-0.023374,-0.999619,0.669271,0.319498,-0.741313, + -0.015914,-0.029529,-0.999437,0.617093,0.264045,-0.738345, + 0.282948,-0.282367,-0.916629,0.690899,0.226098,-0.722456, + 0.282948,-0.282367,-0.916629,0.690899,0.226098,-0.722456, + 0.248581,-0.323271,-0.913074,0.736568,0.272496,-0.725225, + -0.014673,-0.023374,-0.999619,0.669271,0.319498,-0.741313, + 0.525124,-0.503608,-0.68602,0.752404,0.194475,-0.674787, + 0.473586,-0.60369,-0.641307,0.792649,0.233327,-0.676962, + 0.248581,-0.323271,-0.913074,0.736568,0.272496,-0.725225, + 0.525124,-0.503608,-0.68602,0.752404,0.194475,-0.674787, + 0.248581,-0.323271,-0.913074,0.736568,0.272496,-0.725225, + 0.282948,-0.282367,-0.916629,0.690899,0.226098,-0.722456, + -0.459897,0.603331,-0.651526,0.620074,0.472355,-0.678159, + -0.565284,0.537872,-0.625418,0.545894,0.405668,-0.676962, + -0.288623,0.26748,-0.919321,0.601974,0.3665,-0.725225, + -0.459897,0.603331,-0.651526,0.620074,0.472355,-0.678159, + -0.288623,0.26748,-0.919321,0.601974,0.3665,-0.725225, + -0.231331,0.321253,-0.918304,0.671195,0.426029,-0.726748, + -0.565284,0.537872,-0.625418,0.545894,0.405668,-0.676962, + -0.595775,0.458968,-0.659091,0.481782,0.333615,-0.674787, + -0.31459,0.228088,-0.921417,0.543287,0.301992,-0.722456, + -0.31459,0.228088,-0.921417,0.543287,0.301992,-0.722456, + -0.288623,0.26748,-0.919321,0.601974,0.3665,-0.725225, + -0.565284,0.537872,-0.625418,0.545894,0.405668,-0.676962, + -0.015914,-0.029529,-0.999437,0.617093,0.264045,-0.738345, + -0.014673,-0.023374,-0.999619,0.669271,0.319498,-0.741313, + -0.288623,0.26748,-0.919321,0.601974,0.3665,-0.725225, + -0.015914,-0.029529,-0.999437,0.617093,0.264045,-0.738345, + -0.288623,0.26748,-0.919321,0.601974,0.3665,-0.725225, + -0.31459,0.228088,-0.921417,0.543287,0.301992,-0.722456, + -0.014673,-0.023374,-0.999619,0.669271,0.319498,-0.741313, + 0.003382,-0.001295,-0.999993,0.73254,0.370437,-0.742944, + -0.231331,0.321253,-0.918304,0.671195,0.426029,-0.726748, + -0.231331,0.321253,-0.918304,0.671195,0.426029,-0.726748, + -0.288623,0.26748,-0.919321,0.601974,0.3665,-0.725225, + -0.014673,-0.023374,-0.999619,0.669271,0.319498,-0.741313, + -0.77971,0.541974,-0.313555,0.342801,0.212716,-0.594444, + -0.603758,0.432599,-0.669577,0.386176,0.201223,-0.673147, + -0.610536,0.426181,-0.667544,0.428341,0.263148,-0.673044, + -0.610536,0.426181,-0.667544,0.428341,0.263148,-0.673044, + -0.770954,0.557417,-0.308084,0.388123,0.27793,-0.594388, + -0.77971,0.541974,-0.313555,0.342801,0.212716,-0.594444, + -0.595775,0.458968,-0.659091,0.481782,0.333615,-0.674787, + -0.740072,0.600901,-0.302014,0.444878,0.352588,-0.595338, + -0.770954,0.557417,-0.308084,0.388123,0.27793,-0.594388, + -0.595775,0.458968,-0.659091,0.481782,0.333615,-0.674787, + -0.770954,0.557417,-0.308084,0.388123,0.27793,-0.594388, + -0.610536,0.426181,-0.667544,0.428341,0.263148,-0.673044, + -0.740072,0.600901,-0.302014,0.444878,0.352588,-0.595338, + -0.766999,0.641648,0,0.432577,0.358913,-0.5, + -0.804241,0.594303,0,0.374717,0.282857,-0.5, + -0.804241,0.594303,0,0.374717,0.282857,-0.5, + -0.770954,0.557417,-0.308084,0.388123,0.27793,-0.594388, + -0.740072,0.600901,-0.302014,0.444878,0.352588,-0.595338, + -0.820475,0.571682,0,0.328343,0.216547,-0.5, + -0.77971,0.541974,-0.313555,0.342801,0.212716,-0.594444, + -0.770954,0.557417,-0.308084,0.388123,0.27793,-0.594388, + -0.820475,0.571682,0,0.328343,0.216547,-0.5, + -0.770954,0.557417,-0.308084,0.388123,0.27793,-0.594388, + -0.804241,0.594303,0,0.374717,0.282857,-0.5, + -0.565284,0.537872,-0.625418,0.545894,0.405668,-0.676962, + -0.459897,0.603331,-0.651526,0.620074,0.472355,-0.678159, + -0.5899,0.750266,-0.298526,0.589401,0.500151,-0.597178, + -0.5899,0.750266,-0.298526,0.589401,0.500151,-0.597178, + -0.694867,0.675869,-0.245685,0.512245,0.429169,-0.596525, + -0.565284,0.537872,-0.625418,0.545894,0.405668,-0.676962, + -0.64127,0.767315,0,0.579177,0.509417,-0.5, + -0.716797,0.697282,0,0.501029,0.437003,-0.5, + -0.694867,0.675869,-0.245685,0.512245,0.429169,-0.596525, + -0.64127,0.767315,0,0.579177,0.509417,-0.5, + -0.694867,0.675869,-0.245685,0.512245,0.429169,-0.596525, + -0.5899,0.750266,-0.298526,0.589401,0.500151,-0.597178, + -0.766999,0.641648,0,0.432577,0.358913,-0.5, + -0.740072,0.600901,-0.302014,0.444878,0.352588,-0.595338, + -0.694867,0.675869,-0.245685,0.512245,0.429169,-0.596525, + -0.766999,0.641648,0,0.432577,0.358913,-0.5, + -0.694867,0.675869,-0.245685,0.512245,0.429169,-0.596525, + -0.716797,0.697282,0,0.501029,0.437003,-0.5, + -0.740072,0.600901,-0.302014,0.444878,0.352588,-0.595338, + -0.595775,0.458968,-0.659091,0.481782,0.333615,-0.674787, + -0.565284,0.537872,-0.625418,0.545894,0.405668,-0.676962, + -0.565284,0.537872,-0.625418,0.545894,0.405668,-0.676962, + -0.694867,0.675869,-0.245685,0.512245,0.429169,-0.596525, + -0.740072,0.600901,-0.302014,0.444878,0.352588,-0.595338, + -0.5899,0.750266,0.298526,0.589401,0.500151,-0.402822, + -0.459898,0.603331,0.651526,0.620074,0.472355,-0.321841, + -0.565284,0.537872,0.625418,0.545894,0.405668,-0.323037, + -0.565284,0.537872,0.625418,0.545894,0.405668,-0.323037, + -0.694867,0.675869,0.245685,0.512245,0.429169,-0.403475, + -0.5899,0.750266,0.298526,0.589401,0.500151,-0.402822, + -0.565284,0.537872,0.625418,0.545894,0.405668,-0.323037, + -0.595775,0.458968,0.659091,0.481782,0.333615,-0.325213, + -0.740072,0.600901,0.302014,0.444878,0.352588,-0.404662, + -0.740072,0.600901,0.302014,0.444878,0.352588,-0.404662, + -0.694867,0.675869,0.245685,0.512245,0.429169,-0.403475, + -0.565284,0.537872,0.625418,0.545894,0.405668,-0.323037, + -0.766999,0.641648,0,0.432577,0.358913,-0.5, + -0.716797,0.697282,0,0.501029,0.437003,-0.5, + -0.694867,0.675869,0.245685,0.512245,0.429169,-0.403475, + -0.766999,0.641648,0,0.432577,0.358913,-0.5, + -0.694867,0.675869,0.245685,0.512245,0.429169,-0.403475, + -0.740072,0.600901,0.302014,0.444878,0.352588,-0.404662, + -0.64127,0.767315,0,0.579177,0.509417,-0.5, + -0.5899,0.750266,0.298526,0.589401,0.500151,-0.402822, + -0.694867,0.675869,0.245685,0.512245,0.429169,-0.403475, + -0.64127,0.767315,0,0.579177,0.509417,-0.5, + -0.694867,0.675869,0.245685,0.512245,0.429169,-0.403475, + -0.716797,0.697282,0,0.501029,0.437003,-0.5, + -0.610536,0.426181,0.667544,0.428341,0.263148,-0.326956, + -0.603758,0.432599,0.669577,0.386176,0.201223,-0.326853, + -0.77971,0.541974,0.313555,0.342801,0.212716,-0.405556, + -0.77971,0.541974,0.313555,0.342801,0.212716,-0.405556, + -0.770954,0.557417,0.308084,0.388123,0.27793,-0.405612, + -0.610536,0.426181,0.667544,0.428341,0.263148,-0.326956, + -0.820475,0.571682,0,0.328343,0.216547,-0.5, + -0.804241,0.594303,0,0.374717,0.282857,-0.5, + -0.770954,0.557417,0.308084,0.388123,0.27793,-0.405612, + -0.820475,0.571682,0,0.328343,0.216547,-0.5, + -0.770954,0.557417,0.308084,0.388123,0.27793,-0.405612, + -0.77971,0.541974,0.313555,0.342801,0.212716,-0.405556, + -0.804241,0.594303,0,0.374717,0.282857,-0.5, + -0.766999,0.641648,0,0.432577,0.358913,-0.5, + -0.740072,0.600901,0.302014,0.444878,0.352588,-0.404662, + -0.740072,0.600901,0.302014,0.444878,0.352588,-0.404662, + -0.770954,0.557417,0.308084,0.388123,0.27793,-0.405612, + -0.804241,0.594303,0,0.374717,0.282857,-0.5, + -0.595775,0.458968,0.659091,0.481782,0.333615,-0.325213, + -0.610536,0.426181,0.667544,0.428341,0.263148,-0.326956, + -0.770954,0.557417,0.308084,0.388123,0.27793,-0.405612, + -0.595775,0.458968,0.659091,0.481782,0.333615,-0.325213, + -0.770954,0.557417,0.308084,0.388123,0.27793,-0.405612, + -0.740072,0.600901,0.302014,0.444878,0.352588,-0.404662, + -0.304433,0.241938,0.921296,0.458468,0.182068,-0.279631, + -0.603758,0.432599,0.669577,0.386176,0.201223,-0.326853, + -0.610536,0.426181,0.667544,0.428341,0.263148,-0.326956, + -0.610536,0.426181,0.667544,0.428341,0.263148,-0.326956, + -0.317966,0.212815,0.923909,0.495371,0.238512,-0.279763, + -0.304433,0.241938,0.921296,0.458468,0.182068,-0.279631, + -0.595775,0.458968,0.659091,0.481782,0.333615,-0.325213, + -0.31459,0.228088,0.921417,0.543287,0.301992,-0.277544, + -0.317966,0.212815,0.923909,0.495371,0.238512,-0.279763, + -0.595775,0.458968,0.659091,0.481782,0.333615,-0.325213, + -0.317966,0.212815,0.923909,0.495371,0.238512,-0.279763, + -0.610536,0.426181,0.667544,0.428341,0.263148,-0.326956, + -0.31459,0.228088,0.921417,0.543287,0.301992,-0.277544, + -0.015914,-0.029529,0.999437,0.617093,0.264045,-0.261655, + -0.005469,-0.009402,0.999941,0.575807,0.208949,-0.264031, + -0.005469,-0.009402,0.999941,0.575807,0.208949,-0.264031, + -0.317966,0.212815,0.923909,0.495371,0.238512,-0.279763, + -0.31459,0.228088,0.921417,0.543287,0.301992,-0.277544, + 0.013842,0.059444,0.998136,0.545218,0.159081,-0.263891, + -0.304433,0.241938,0.921296,0.458468,0.182068,-0.279631, + -0.317966,0.212815,0.923909,0.495371,0.238512,-0.279763, + 0.013842,0.059444,0.998136,0.545218,0.159081,-0.263891, + -0.317966,0.212815,0.923909,0.495371,0.238512,-0.279763, + -0.005469,-0.009402,0.999941,0.575807,0.208949,-0.264031, + -0.459898,0.603331,0.651526,0.620074,0.472355,-0.321841, + -0.231331,0.321253,0.918304,0.671195,0.426029,-0.273252, + -0.288623,0.267481,0.919321,0.601974,0.3665,-0.274775, + -0.459898,0.603331,0.651526,0.620074,0.472355,-0.321841, + -0.288623,0.267481,0.919321,0.601974,0.3665,-0.274775, + -0.565284,0.537872,0.625418,0.545894,0.405668,-0.323037, + -0.231331,0.321253,0.918304,0.671195,0.426029,-0.273252, + 0.003382,-0.001295,0.999993,0.73254,0.370437,-0.257056, + -0.014673,-0.023374,0.999619,0.669271,0.319498,-0.258687, + -0.014673,-0.023374,0.999619,0.669271,0.319498,-0.258687, + -0.288623,0.267481,0.919321,0.601974,0.3665,-0.274775, + -0.231331,0.321253,0.918304,0.671195,0.426029,-0.273252, + -0.015914,-0.029529,0.999437,0.617093,0.264045,-0.261655, + -0.31459,0.228088,0.921417,0.543287,0.301992,-0.277544, + -0.288623,0.267481,0.919321,0.601974,0.3665,-0.274775, + -0.015914,-0.029529,0.999437,0.617093,0.264045,-0.261655, + -0.288623,0.267481,0.919321,0.601974,0.3665,-0.274775, + -0.014673,-0.023374,0.999619,0.669271,0.319498,-0.258687, + -0.31459,0.228088,0.921417,0.543287,0.301992,-0.277544, + -0.595775,0.458968,0.659091,0.481782,0.333615,-0.325213, + -0.565284,0.537872,0.625418,0.545894,0.405668,-0.323037, + -0.565284,0.537872,0.625418,0.545894,0.405668,-0.323037, + -0.288623,0.267481,0.919321,0.601974,0.3665,-0.274775, + -0.31459,0.228088,0.921417,0.543287,0.301992,-0.277544, + 0.214466,-0.34467,0.913896,0.793886,0.314845,-0.273252, + 0.37574,-0.67126,0.638928,0.845007,0.268518,-0.321841, + 0.473587,-0.60369,0.641306,0.792649,0.233327,-0.323037, + 0.473587,-0.60369,0.641306,0.792649,0.233327,-0.323037, + 0.248581,-0.323271,0.913073,0.736568,0.272496,-0.274775, + 0.214466,-0.34467,0.913896,0.793886,0.314845,-0.273252, + 0.525124,-0.503609,0.68602,0.752404,0.194475,-0.325213, + 0.282948,-0.282367,0.916629,0.690899,0.226098,-0.277544, + 0.248581,-0.323271,0.913073,0.736568,0.272496,-0.274775, + 0.525124,-0.503609,0.68602,0.752404,0.194475,-0.325213, + 0.248581,-0.323271,0.913073,0.736568,0.272496,-0.274775, + 0.473587,-0.60369,0.641306,0.792649,0.233327,-0.323037, + 0.282948,-0.282367,0.916629,0.690899,0.226098,-0.277544, + -0.015914,-0.029529,0.999437,0.617093,0.264045,-0.261655, + -0.014673,-0.023374,0.999619,0.669271,0.319498,-0.258687, + -0.014673,-0.023374,0.999619,0.669271,0.319498,-0.258687, + 0.248581,-0.323271,0.913073,0.736568,0.272496,-0.274775, + 0.282948,-0.282367,0.916629,0.690899,0.226098,-0.277544, + 0.003382,-0.001295,0.999993,0.73254,0.370437,-0.257056, + 0.214466,-0.34467,0.913896,0.793886,0.314845,-0.273252, + 0.248581,-0.323271,0.913073,0.736568,0.272496,-0.274775, + 0.003382,-0.001295,0.999993,0.73254,0.370437,-0.257056, + 0.248581,-0.323271,0.913073,0.736568,0.272496,-0.274775, + -0.014673,-0.023374,0.999619,0.669271,0.319498,-0.258687, + 0.677454,-0.2664,0.685629,0.704261,0.116939,-0.326853, + 0.344586,-0.098997,0.93352,0.631969,0.136095,-0.279631, + 0.314626,-0.214176,0.924737,0.656244,0.179386,-0.279763, + 0.677454,-0.2664,0.685629,0.704261,0.116939,-0.326853, + 0.314626,-0.214176,0.924737,0.656244,0.179386,-0.279763, + 0.617578,-0.419693,0.665173,0.723274,0.15475,-0.326956, + 0.344586,-0.098997,0.93352,0.631969,0.136095,-0.279631, + 0.013842,0.059444,0.998136,0.545218,0.159081,-0.263891, + -0.005469,-0.009402,0.999941,0.575807,0.208949,-0.264031, + -0.005469,-0.009402,0.999941,0.575807,0.208949,-0.264031, + 0.314626,-0.214176,0.924737,0.656244,0.179386,-0.279763, + 0.344586,-0.098997,0.93352,0.631969,0.136095,-0.279631, + -0.015914,-0.029529,0.999437,0.617093,0.264045,-0.261655, + 0.282948,-0.282367,0.916629,0.690899,0.226098,-0.277544, + 0.314626,-0.214176,0.924737,0.656244,0.179386,-0.279763, + -0.015914,-0.029529,0.999437,0.617093,0.264045,-0.261655, + 0.314626,-0.214176,0.924737,0.656244,0.179386,-0.279763, + -0.005469,-0.009402,0.999941,0.575807,0.208949,-0.264031, + 0.282948,-0.282367,0.916629,0.690899,0.226098,-0.277544, + 0.525124,-0.503609,0.68602,0.752404,0.194475,-0.325213, + 0.617578,-0.419693,0.665173,0.723274,0.15475,-0.326956, + 0.617578,-0.419693,0.665173,0.723274,0.15475,-0.326956, + 0.314626,-0.214176,0.924737,0.656244,0.179386,-0.279763, + 0.282948,-0.282367,0.916629,0.690899,0.226098,-0.277544, + 0.677454,-0.2664,0.685629,0.704261,0.116939,-0.326853, + 0.617578,-0.419693,0.665173,0.723274,0.15475,-0.326956, + 0.814068,-0.486717,0.316859,0.763492,0.139968,-0.405612, + 0.677454,-0.2664,0.685629,0.704261,0.116939,-0.326853, + 0.814068,-0.486717,0.316859,0.763492,0.139968,-0.405612, + 0.894665,-0.298343,0.332514,0.747636,0.105446,-0.405556, + 0.617578,-0.419693,0.665173,0.723274,0.15475,-0.326956, + 0.525124,-0.503609,0.68602,0.752404,0.194475,-0.325213, + 0.694632,-0.626894,0.352832,0.789307,0.175501,-0.404662, + 0.694632,-0.626894,0.352832,0.789307,0.175501,-0.404662, + 0.814068,-0.486717,0.316859,0.763492,0.139968,-0.405612, + 0.617578,-0.419693,0.665173,0.723274,0.15475,-0.326956, + 0.746099,-0.665835,0,0.801608,0.169177,-0.5, + 0.881754,-0.47171,0,0.776898,0.135041,-0.5, + 0.814068,-0.486717,0.316859,0.763492,0.139968,-0.405612, + 0.746099,-0.665835,0,0.801608,0.169177,-0.5, + 0.814068,-0.486717,0.316859,0.763492,0.139968,-0.405612, + 0.694632,-0.626894,0.352832,0.789307,0.175501,-0.404662, + 0.881754,-0.47171,0,0.776898,0.135041,-0.5, + 0.961956,-0.273203,0,0.762094,0.101615,-0.5, + 0.894665,-0.298343,0.332514,0.747636,0.105446,-0.405556, + 0.894665,-0.298343,0.332514,0.747636,0.105446,-0.405556, + 0.814068,-0.486717,0.316859,0.763492,0.139968,-0.405612, + 0.881754,-0.47171,0,0.776898,0.135041,-0.5, + 0.37574,-0.67126,0.638928,0.845007,0.268518,-0.321841, + 0.438584,-0.8515,0.287389,0.875679,0.240722,-0.402822, + 0.582001,-0.759448,0.290711,0.826297,0.209826,-0.403475, + 0.37574,-0.67126,0.638928,0.845007,0.268518,-0.321841, + 0.582001,-0.759448,0.290711,0.826297,0.209826,-0.403475, + 0.473587,-0.60369,0.641306,0.792649,0.233327,-0.323037, + 0.438584,-0.8515,0.287389,0.875679,0.240722,-0.402822, + 0.419512,-0.90775,0,0.885904,0.231457,-0.5, + 0.576871,-0.816835,0,0.837513,0.201992,-0.5, + 0.576871,-0.816835,0,0.837513,0.201992,-0.5, + 0.582001,-0.759448,0.290711,0.826297,0.209826,-0.403475, + 0.438584,-0.8515,0.287389,0.875679,0.240722,-0.402822, + 0.746099,-0.665835,0,0.801608,0.169177,-0.5, + 0.694632,-0.626894,0.352832,0.789307,0.175501,-0.404662, + 0.582001,-0.759448,0.290711,0.826297,0.209826,-0.403475, + 0.746099,-0.665835,0,0.801608,0.169177,-0.5, + 0.582001,-0.759448,0.290711,0.826297,0.209826,-0.403475, + 0.576871,-0.816835,0,0.837513,0.201992,-0.5, + 0.694632,-0.626894,0.352832,0.789307,0.175501,-0.404662, + 0.525124,-0.503609,0.68602,0.752404,0.194475,-0.325213, + 0.473587,-0.60369,0.641306,0.792649,0.233327,-0.323037, + 0.473587,-0.60369,0.641306,0.792649,0.233327,-0.323037, + 0.582001,-0.759448,0.290711,0.826297,0.209826,-0.403475, + 0.694632,-0.626894,0.352832,0.789307,0.175501,-0.404662, + 0.37574,-0.67126,-0.638928,0.845007,0.268518,-0.678159, + 0.473586,-0.60369,-0.641307,0.792649,0.233327,-0.676962, + 0.582001,-0.759448,-0.290711,0.826297,0.209826,-0.596525, + 0.37574,-0.67126,-0.638928,0.845007,0.268518,-0.678159, + 0.582001,-0.759448,-0.290711,0.826297,0.209826,-0.596525, + 0.438584,-0.8515,-0.287389,0.875679,0.240722,-0.597178, + 0.473586,-0.60369,-0.641307,0.792649,0.233327,-0.676962, + 0.525124,-0.503608,-0.68602,0.752404,0.194475,-0.674787, + 0.694632,-0.626893,-0.352832,0.789307,0.175501,-0.595338, + 0.694632,-0.626893,-0.352832,0.789307,0.175501,-0.595338, + 0.582001,-0.759448,-0.290711,0.826297,0.209826,-0.596525, + 0.473586,-0.60369,-0.641307,0.792649,0.233327,-0.676962, + 0.746099,-0.665835,0,0.801608,0.169177,-0.5, + 0.576871,-0.816835,0,0.837513,0.201992,-0.5, + 0.582001,-0.759448,-0.290711,0.826297,0.209826,-0.596525, + 0.746099,-0.665835,0,0.801608,0.169177,-0.5, + 0.582001,-0.759448,-0.290711,0.826297,0.209826,-0.596525, + 0.694632,-0.626893,-0.352832,0.789307,0.175501,-0.595338, + 0.576871,-0.816835,0,0.837513,0.201992,-0.5, + 0.419512,-0.90775,0,0.885904,0.231457,-0.5, + 0.438584,-0.8515,-0.287389,0.875679,0.240722,-0.597178, + 0.438584,-0.8515,-0.287389,0.875679,0.240722,-0.597178, + 0.582001,-0.759448,-0.290711,0.826297,0.209826,-0.596525, + 0.576871,-0.816835,0,0.837513,0.201992,-0.5, + 0.677454,-0.2664,-0.685629,0.704261,0.116939,-0.673147, + 0.894665,-0.298343,-0.332514,0.747636,0.105446,-0.594444, + 0.814068,-0.486716,-0.31686,0.763492,0.139968,-0.594388, + 0.677454,-0.2664,-0.685629,0.704261,0.116939,-0.673147, + 0.814068,-0.486716,-0.31686,0.763492,0.139968,-0.594388, + 0.617578,-0.419692,-0.665174,0.723274,0.15475,-0.673044, + 0.894665,-0.298343,-0.332514,0.747636,0.105446,-0.594444, + 0.961956,-0.273203,0,0.762094,0.101615,-0.5, + 0.881754,-0.47171,0,0.776898,0.135041,-0.5, + 0.881754,-0.47171,0,0.776898,0.135041,-0.5, + 0.814068,-0.486716,-0.31686,0.763492,0.139968,-0.594388, + 0.894665,-0.298343,-0.332514,0.747636,0.105446,-0.594444, + 0.746099,-0.665835,0,0.801608,0.169177,-0.5, + 0.694632,-0.626893,-0.352832,0.789307,0.175501,-0.595338, + 0.814068,-0.486716,-0.31686,0.763492,0.139968,-0.594388, + 0.746099,-0.665835,0,0.801608,0.169177,-0.5, + 0.814068,-0.486716,-0.31686,0.763492,0.139968,-0.594388, + 0.881754,-0.47171,0,0.776898,0.135041,-0.5, + 0.694632,-0.626893,-0.352832,0.789307,0.175501,-0.595338, + 0.525124,-0.503608,-0.68602,0.752404,0.194475,-0.674787, + 0.617578,-0.419692,-0.665174,0.723274,0.15475,-0.673044, + 0.617578,-0.419692,-0.665174,0.723274,0.15475,-0.673044, + 0.814068,-0.486716,-0.31686,0.763492,0.139968,-0.594388, + 0.694632,-0.626893,-0.352832,0.789307,0.175501,-0.595338, + 0.691984,-0.189259,0.696663,0.694366,0.083832,-0.323491, + 0.677454,-0.2664,0.685629,0.704261,0.116939,-0.326853, + 0.894665,-0.298343,0.332514,0.747636,0.105446,-0.405556, + 0.894665,-0.298343,0.332514,0.747636,0.105446,-0.405556, + 0.903923,-0.26074,0.339026,0.740522,0.074155,-0.403722, + 0.691984,-0.189259,0.696663,0.694366,0.083832,-0.323491, + 0.961956,-0.273203,0,0.762094,0.101615,-0.5, + 0.957991,-0.286797,0,0.755907,0.07093,-0.5, + 0.903923,-0.26074,0.339026,0.740522,0.074155,-0.403722, + 0.961956,-0.273203,0,0.762094,0.101615,-0.5, + 0.903923,-0.26074,0.339026,0.740522,0.074155,-0.403722, + 0.894665,-0.298343,0.332514,0.747636,0.105446,-0.405556, + 0.957991,-0.286797,0,0.755907,0.07093,-0.5, + 0.740764,-0.671765,0,0.747335,0.045755,-0.5, + 0.78946,-0.545462,0.281469,0.731601,0.048967,-0.404556, + 0.78946,-0.545462,0.281469,0.731601,0.048967,-0.404556, + 0.903923,-0.26074,0.339026,0.740522,0.074155,-0.403722, + 0.957991,-0.286797,0,0.755907,0.07093,-0.5, + 0.570752,-0.537595,0.620673,0.684631,0.057942,-0.324904, + 0.691984,-0.189259,0.696663,0.694366,0.083832,-0.323491, + 0.903923,-0.26074,0.339026,0.740522,0.074155,-0.403722, + 0.570752,-0.537595,0.620673,0.684631,0.057942,-0.324904, + 0.903923,-0.26074,0.339026,0.740522,0.074155,-0.403722, + 0.78946,-0.545462,0.281469,0.731601,0.048967,-0.404556, + 0.894665,-0.298343,-0.332514,0.747636,0.105446,-0.594444, + 0.677454,-0.2664,-0.685629,0.704261,0.116939,-0.673147, + 0.691984,-0.189259,-0.696663,0.694366,0.083832,-0.676509, + 0.691984,-0.189259,-0.696663,0.694366,0.083832,-0.676509, + 0.903923,-0.26074,-0.339025,0.740522,0.074155,-0.596277, + 0.894665,-0.298343,-0.332514,0.747636,0.105446,-0.594444, + 0.570751,-0.537595,-0.620672,0.684631,0.057942,-0.675096, + 0.789459,-0.545462,-0.281469,0.731601,0.048967,-0.595444, + 0.903923,-0.26074,-0.339025,0.740522,0.074155,-0.596277, + 0.570751,-0.537595,-0.620672,0.684631,0.057942,-0.675096, + 0.903923,-0.26074,-0.339025,0.740522,0.074155,-0.596277, + 0.691984,-0.189259,-0.696663,0.694366,0.083832,-0.676509, + 0.789459,-0.545462,-0.281469,0.731601,0.048967,-0.595444, + 0.740764,-0.671765,0,0.747335,0.045755,-0.5, + 0.957991,-0.286797,0,0.755907,0.07093,-0.5, + 0.957991,-0.286797,0,0.755907,0.07093,-0.5, + 0.903923,-0.26074,-0.339025,0.740522,0.074155,-0.596277, + 0.789459,-0.545462,-0.281469,0.731601,0.048967,-0.595444, + 0.961956,-0.273203,0,0.762094,0.101615,-0.5, + 0.894665,-0.298343,-0.332514,0.747636,0.105446,-0.594444, + 0.903923,-0.26074,-0.339025,0.740522,0.074155,-0.596277, + 0.961956,-0.273203,0,0.762094,0.101615,-0.5, + 0.903923,-0.26074,-0.339025,0.740522,0.074155,-0.596277, + 0.957991,-0.286797,0,0.755907,0.07093,-0.5, + 0.029695,-0.979483,-0.199329,0.642426,0.035438,-0.638667, + 0.015839,-0.994833,-0.100277,0.667212,0.026513,-0.5825, + 0.33287,-0.922331,-0.196223,0.710325,0.03275,-0.5875, + 0.029695,-0.979483,-0.199329,0.642426,0.035438,-0.638667, + 0.33287,-0.922331,-0.196223,0.710325,0.03275,-0.5875, + 0.21248,-0.884802,-0.414701,0.666096,0.041783,-0.660875, + 0.072467,-0.997371,0,0.679568,0.022087,-0.5, + 0.389749,-0.920921,0,0.725378,0.028862,-0.5, + 0.33287,-0.922331,-0.196223,0.710325,0.03275,-0.5875, + 0.072467,-0.997371,0,0.679568,0.022087,-0.5, + 0.33287,-0.922331,-0.196223,0.710325,0.03275,-0.5875, + 0.015839,-0.994833,-0.100277,0.667212,0.026513,-0.5825, + 0.740764,-0.671765,0,0.747335,0.045755,-0.5, + 0.789459,-0.545462,-0.281469,0.731601,0.048967,-0.595444, + 0.33287,-0.922331,-0.196223,0.710325,0.03275,-0.5875, + 0.740764,-0.671765,0,0.747335,0.045755,-0.5, + 0.33287,-0.922331,-0.196223,0.710325,0.03275,-0.5875, + 0.389749,-0.920921,0,0.725378,0.028862,-0.5, + 0.570751,-0.537595,-0.620672,0.684631,0.057942,-0.675096, + 0.21248,-0.884802,-0.414701,0.666096,0.041783,-0.660875, + 0.33287,-0.922331,-0.196223,0.710325,0.03275,-0.5875, + 0.570751,-0.537595,-0.620672,0.684631,0.057942,-0.675096, + 0.33287,-0.922331,-0.196223,0.710325,0.03275,-0.5875, + 0.789459,-0.545462,-0.281469,0.731601,0.048967,-0.595444, + 0.029695,-0.979483,0.199329,0.642426,0.035438,-0.361333, + 0.21248,-0.884802,0.414702,0.666096,0.041783,-0.339125, + 0.33287,-0.922331,0.196223,0.710325,0.03275,-0.4125, + 0.029695,-0.979483,0.199329,0.642426,0.035438,-0.361333, + 0.33287,-0.922331,0.196223,0.710325,0.03275,-0.4125, + 0.015839,-0.994833,0.100277,0.667212,0.026513,-0.4175, + 0.570752,-0.537595,0.620673,0.684631,0.057942,-0.324904, + 0.78946,-0.545462,0.281469,0.731601,0.048967,-0.404556, + 0.33287,-0.922331,0.196223,0.710325,0.03275,-0.4125, + 0.570752,-0.537595,0.620673,0.684631,0.057942,-0.324904, + 0.33287,-0.922331,0.196223,0.710325,0.03275,-0.4125, + 0.21248,-0.884802,0.414702,0.666096,0.041783,-0.339125, + 0.740764,-0.671765,0,0.747335,0.045755,-0.5, + 0.389749,-0.920921,0,0.725378,0.028862,-0.5, + 0.33287,-0.922331,0.196223,0.710325,0.03275,-0.4125, + 0.740764,-0.671765,0,0.747335,0.045755,-0.5, + 0.33287,-0.922331,0.196223,0.710325,0.03275,-0.4125, + 0.78946,-0.545462,0.281469,0.731601,0.048967,-0.404556, + 0.072467,-0.997371,0,0.679568,0.022087,-0.5, + 0.015839,-0.994833,0.100277,0.667212,0.026513,-0.4175, + 0.33287,-0.922331,0.196223,0.710325,0.03275,-0.4125, + 0.072467,-0.997371,0,0.679568,0.022087,-0.5, + 0.33287,-0.922331,0.196223,0.710325,0.03275,-0.4125, + 0.389749,-0.920921,0,0.725378,0.028862,-0.5, + 0.691984,-0.189259,-0.696663,0.694366,0.083832,-0.676509, + 0.677454,-0.2664,-0.685629,0.704261,0.116939,-0.673147, + 0.344586,-0.098997,-0.93352,0.631969,0.136095,-0.720369, + 0.344586,-0.098997,-0.93352,0.631969,0.136095,-0.720369, + 0.338241,-0.103362,-0.935366,0.61744,0.099959,-0.724648, + 0.691984,-0.189259,-0.696663,0.694366,0.083832,-0.676509, + 0.013842,0.059444,-0.998136,0.545218,0.159081,-0.736109, + 0.007661,0.031192,-0.999484,0.525128,0.119312,-0.740694, + 0.338241,-0.103362,-0.935366,0.61744,0.099959,-0.724648, + 0.013842,0.059444,-0.998136,0.545218,0.159081,-0.736109, + 0.338241,-0.103362,-0.935366,0.61744,0.099959,-0.724648, + 0.344586,-0.098997,-0.93352,0.631969,0.136095,-0.720369, + 0.007661,0.031192,-0.999484,0.525128,0.119312,-0.740694, + -0.09747,-0.388654,-0.916214,0.513237,0.088956,-0.739298, + 0.227406,-0.473471,-0.850947,0.606658,0.072023,-0.723162, + 0.227406,-0.473471,-0.850947,0.606658,0.072023,-0.723162, + 0.338241,-0.103362,-0.935366,0.61744,0.099959,-0.724648, + 0.007661,0.031192,-0.999484,0.525128,0.119312,-0.740694, + 0.570751,-0.537595,-0.620672,0.684631,0.057942,-0.675096, + 0.691984,-0.189259,-0.696663,0.694366,0.083832,-0.676509, + 0.338241,-0.103362,-0.935366,0.61744,0.099959,-0.724648, + 0.570751,-0.537595,-0.620672,0.684631,0.057942,-0.675096, + 0.338241,-0.103362,-0.935366,0.61744,0.099959,-0.724648, + 0.227406,-0.473471,-0.850947,0.606658,0.072023,-0.723162, + -0.603758,0.432599,-0.669577,0.386176,0.201223,-0.673147, + -0.649491,0.313781,-0.692606,0.355891,0.154793,-0.676509, + -0.317034,0.182994,-0.930593,0.432817,0.138665,-0.724648, + -0.603758,0.432599,-0.669577,0.386176,0.201223,-0.673147, + -0.317034,0.182994,-0.930593,0.432817,0.138665,-0.724648, + -0.304433,0.241938,-0.921296,0.458468,0.182068,-0.720369, + -0.649491,0.313781,-0.692606,0.355891,0.154793,-0.676509, + -0.720224,-0.15594,-0.675988,0.342054,0.121167,-0.675096, + -0.440529,-0.24065,-0.864882,0.419921,0.106487,-0.723162, + -0.440529,-0.24065,-0.864882,0.419921,0.106487,-0.723162, + -0.317034,0.182994,-0.930593,0.432817,0.138665,-0.724648, + -0.649491,0.313781,-0.692606,0.355891,0.154793,-0.676509, + -0.09747,-0.388654,-0.916214,0.513237,0.088956,-0.739298, + 0.007661,0.031192,-0.999484,0.525128,0.119312,-0.740694, + -0.317034,0.182994,-0.930593,0.432817,0.138665,-0.724648, + -0.09747,-0.388654,-0.916214,0.513237,0.088956,-0.739298, + -0.317034,0.182994,-0.930593,0.432817,0.138665,-0.724648, + -0.440529,-0.24065,-0.864882,0.419921,0.106487,-0.723162, + 0.007661,0.031192,-0.999484,0.525128,0.119312,-0.740694, + 0.013842,0.059444,-0.998136,0.545218,0.159081,-0.736109, + -0.304433,0.241938,-0.921296,0.458468,0.182068,-0.720369, + -0.304433,0.241938,-0.921296,0.458468,0.182068,-0.720369, + -0.317034,0.182994,-0.930593,0.432817,0.138665,-0.724648, + 0.007661,0.031192,-0.999484,0.525128,0.119312,-0.740694, + -0.560128,-0.705465,-0.434253,0.349234,0.097654,-0.660875, + -0.364711,-0.913648,-0.179534,0.369306,0.083596,-0.638667, + -0.280571,-0.938896,-0.199385,0.423841,0.069426,-0.664625, + -0.280571,-0.938896,-0.199385,0.423841,0.069426,-0.664625, + -0.32072,-0.774629,-0.545059,0.421284,0.083716,-0.706, + -0.560128,-0.705465,-0.434253,0.349234,0.097654,-0.660875, + -0.168375,-0.954904,-0.244557,0.504703,0.05292,-0.677562, + -0.143026,-0.80792,-0.571672,0.507243,0.067325,-0.7215, + -0.32072,-0.774629,-0.545059,0.421284,0.083716,-0.706, + -0.168375,-0.954904,-0.244557,0.504703,0.05292,-0.677562, + -0.32072,-0.774629,-0.545059,0.421284,0.083716,-0.706, + -0.280571,-0.938896,-0.199385,0.423841,0.069426,-0.664625, + -0.09747,-0.388654,-0.916214,0.513237,0.088956,-0.739298, + -0.440529,-0.24065,-0.864882,0.419921,0.106487,-0.723162, + -0.32072,-0.774629,-0.545059,0.421284,0.083716,-0.706, + -0.09747,-0.388654,-0.916214,0.513237,0.088956,-0.739298, + -0.32072,-0.774629,-0.545059,0.421284,0.083716,-0.706, + -0.143026,-0.80792,-0.571672,0.507243,0.067325,-0.7215, + -0.440529,-0.24065,-0.864882,0.419921,0.106487,-0.723162, + -0.720224,-0.15594,-0.675988,0.342054,0.121167,-0.675096, + -0.560128,-0.705465,-0.434253,0.349234,0.097654,-0.660875, + -0.560128,-0.705465,-0.434253,0.349234,0.097654,-0.660875, + -0.32072,-0.774629,-0.545059,0.421284,0.083716,-0.706, + -0.440529,-0.24065,-0.864882,0.419921,0.106487,-0.723162, + 0.029695,-0.979483,-0.199329,0.642426,0.035438,-0.638667, + 0.21248,-0.884802,-0.414701,0.666096,0.041783,-0.660875, + 0.024087,-0.872904,-0.487296,0.593625,0.053327,-0.706, + 0.029695,-0.979483,-0.199329,0.642426,0.035438,-0.638667, + 0.024087,-0.872904,-0.487296,0.593625,0.053327,-0.706, + -0.070895,-0.97954,-0.18835,0.586334,0.040774,-0.664625, + 0.21248,-0.884802,-0.414701,0.666096,0.041783,-0.660875, + 0.570751,-0.537595,-0.620672,0.684631,0.057942,-0.675096, + 0.227406,-0.473471,-0.850947,0.606658,0.072023,-0.723162, + 0.227406,-0.473471,-0.850947,0.606658,0.072023,-0.723162, + 0.024087,-0.872904,-0.487296,0.593625,0.053327,-0.706, + 0.21248,-0.884802,-0.414701,0.666096,0.041783,-0.660875, + -0.09747,-0.388654,-0.916214,0.513237,0.088956,-0.739298, + -0.143026,-0.80792,-0.571672,0.507243,0.067325,-0.7215, + 0.024087,-0.872904,-0.487296,0.593625,0.053327,-0.706, + -0.09747,-0.388654,-0.916214,0.513237,0.088956,-0.739298, + 0.024087,-0.872904,-0.487296,0.593625,0.053327,-0.706, + 0.227406,-0.473471,-0.850947,0.606658,0.072023,-0.723162, + -0.168375,-0.954904,-0.244557,0.504703,0.05292,-0.677562, + -0.070895,-0.97954,-0.18835,0.586334,0.040774,-0.664625, + 0.024087,-0.872904,-0.487296,0.593625,0.053327,-0.706, + -0.168375,-0.954904,-0.244557,0.504703,0.05292,-0.677562, + 0.024087,-0.872904,-0.487296,0.593625,0.053327,-0.706, + -0.143026,-0.80792,-0.571672,0.507243,0.067325,-0.7215, + -0.603758,0.432599,-0.669577,0.386176,0.201223,-0.673147, + -0.77971,0.541974,-0.313555,0.342801,0.212716,-0.594444, + -0.828821,0.45488,-0.325791,0.309735,0.164469,-0.596277, + -0.603758,0.432599,-0.669577,0.386176,0.201223,-0.673147, + -0.828821,0.45488,-0.325791,0.309735,0.164469,-0.596277, + -0.649491,0.313781,-0.692606,0.355891,0.154793,-0.676509, + -0.77971,0.541974,-0.313555,0.342801,0.212716,-0.594444, + -0.820475,0.571682,0,0.328343,0.216547,-0.5, + -0.857982,0.51368,0,0.29435,0.167695,-0.5, + -0.857982,0.51368,0,0.29435,0.167695,-0.5, + -0.828821,0.45488,-0.325791,0.309735,0.164469,-0.596277, + -0.77971,0.541974,-0.313555,0.342801,0.212716,-0.594444, + -0.999967,0.008167,0,0.279139,0.132156,-0.5, + -0.916555,-0.053852,-0.396267,0.294978,0.129544,-0.595444, + -0.828821,0.45488,-0.325791,0.309735,0.164469,-0.596277, + -0.999967,0.008167,0,0.279139,0.132156,-0.5, + -0.828821,0.45488,-0.325791,0.309735,0.164469,-0.596277, + -0.857982,0.51368,0,0.29435,0.167695,-0.5, + -0.916555,-0.053852,-0.396267,0.294978,0.129544,-0.595444, + -0.720224,-0.15594,-0.675988,0.342054,0.121167,-0.675096, + -0.649491,0.313781,-0.692606,0.355891,0.154793,-0.676509, + -0.649491,0.313781,-0.692606,0.355891,0.154793,-0.676509, + -0.828821,0.45488,-0.325791,0.309735,0.164469,-0.596277, + -0.916555,-0.053852,-0.396267,0.294978,0.129544,-0.595444, + -0.603758,0.432599,0.669577,0.386176,0.201223,-0.326853, + -0.649491,0.313782,0.692606,0.355891,0.154793,-0.323491, + -0.828821,0.454881,0.325791,0.309735,0.164469,-0.403722, + -0.603758,0.432599,0.669577,0.386176,0.201223,-0.326853, + -0.828821,0.454881,0.325791,0.309735,0.164469,-0.403722, + -0.77971,0.541974,0.313555,0.342801,0.212716,-0.405556, + -0.649491,0.313782,0.692606,0.355891,0.154793,-0.323491, + -0.720224,-0.155939,0.675988,0.342054,0.121167,-0.324904, + -0.916555,-0.053852,0.396267,0.294978,0.129544,-0.404556, + -0.916555,-0.053852,0.396267,0.294978,0.129544,-0.404556, + -0.828821,0.454881,0.325791,0.309735,0.164469,-0.403722, + -0.649491,0.313782,0.692606,0.355891,0.154793,-0.323491, + -0.999967,0.008167,0,0.279139,0.132156,-0.5, + -0.857982,0.51368,0,0.29435,0.167695,-0.5, + -0.828821,0.454881,0.325791,0.309735,0.164469,-0.403722, + -0.999967,0.008167,0,0.279139,0.132156,-0.5, + -0.828821,0.454881,0.325791,0.309735,0.164469,-0.403722, + -0.916555,-0.053852,0.396267,0.294978,0.129544,-0.404556, + -0.857982,0.51368,0,0.29435,0.167695,-0.5, + -0.820475,0.571682,0,0.328343,0.216547,-0.5, + -0.77971,0.541974,0.313555,0.342801,0.212716,-0.405556, + -0.77971,0.541974,0.313555,0.342801,0.212716,-0.405556, + -0.828821,0.454881,0.325791,0.309735,0.164469,-0.403722, + -0.857982,0.51368,0,0.29435,0.167695,-0.5, + -0.364711,-0.913648,0.179534,0.369306,0.083596,-0.361333, + -0.355137,-0.92942,0.100277,0.342964,0.083687,-0.4175, + -0.672934,-0.714357,0.191973,0.304584,0.104293,-0.4125, + -0.364711,-0.913648,0.179534,0.369306,0.083596,-0.361333, + -0.672934,-0.714357,0.191973,0.304584,0.104293,-0.4125, + -0.560128,-0.705466,0.434252,0.349234,0.097654,-0.339125, + -0.409218,-0.912437,0,0.329838,0.083754,-0.5, + -0.75175,-0.659448,0,0.289108,0.105788,-0.5, + -0.672934,-0.714357,0.191973,0.304584,0.104293,-0.4125, + -0.409218,-0.912437,0,0.329838,0.083754,-0.5, + -0.672934,-0.714357,0.191973,0.304584,0.104293,-0.4125, + -0.355137,-0.92942,0.100277,0.342964,0.083687,-0.4175, + -0.999967,0.008167,0,0.279139,0.132156,-0.5, + -0.916555,-0.053852,0.396267,0.294978,0.129544,-0.404556, + -0.672934,-0.714357,0.191973,0.304584,0.104293,-0.4125, + -0.999967,0.008167,0,0.279139,0.132156,-0.5, + -0.672934,-0.714357,0.191973,0.304584,0.104293,-0.4125, + -0.75175,-0.659448,0,0.289108,0.105788,-0.5, + -0.916555,-0.053852,0.396267,0.294978,0.129544,-0.404556, + -0.720224,-0.155939,0.675988,0.342054,0.121167,-0.324904, + -0.560128,-0.705466,0.434252,0.349234,0.097654,-0.339125, + -0.560128,-0.705466,0.434252,0.349234,0.097654,-0.339125, + -0.672934,-0.714357,0.191973,0.304584,0.104293,-0.4125, + -0.916555,-0.053852,0.396267,0.294978,0.129544,-0.404556, + -0.364711,-0.913648,-0.179534,0.369306,0.083596,-0.638667, + -0.560128,-0.705465,-0.434253,0.349234,0.097654,-0.660875, + -0.672934,-0.714357,-0.191973,0.304584,0.104293,-0.5875, + -0.364711,-0.913648,-0.179534,0.369306,0.083596,-0.638667, + -0.672934,-0.714357,-0.191973,0.304584,0.104293,-0.5875, + -0.355137,-0.92942,-0.100277,0.342964,0.083687,-0.5825, + -0.560128,-0.705465,-0.434253,0.349234,0.097654,-0.660875, + -0.720224,-0.15594,-0.675988,0.342054,0.121167,-0.675096, + -0.916555,-0.053852,-0.396267,0.294978,0.129544,-0.595444, + -0.916555,-0.053852,-0.396267,0.294978,0.129544,-0.595444, + -0.672934,-0.714357,-0.191973,0.304584,0.104293,-0.5875, + -0.560128,-0.705465,-0.434253,0.349234,0.097654,-0.660875, + -0.999967,0.008167,0,0.279139,0.132156,-0.5, + -0.75175,-0.659448,0,0.289108,0.105788,-0.5, + -0.672934,-0.714357,-0.191973,0.304584,0.104293,-0.5875, + -0.999967,0.008167,0,0.279139,0.132156,-0.5, + -0.672934,-0.714357,-0.191973,0.304584,0.104293,-0.5875, + -0.916555,-0.053852,-0.396267,0.294978,0.129544,-0.595444, + -0.409218,-0.912437,0,0.329838,0.083754,-0.5, + -0.355137,-0.92942,-0.100277,0.342964,0.083687,-0.5825, + -0.672934,-0.714357,-0.191973,0.304584,0.104293,-0.5875, + -0.409218,-0.912437,0,0.329838,0.083754,-0.5, + -0.672934,-0.714357,-0.191973,0.304584,0.104293,-0.5875, + -0.75175,-0.659448,0,0.289108,0.105788,-0.5, + -0.603758,0.432599,0.669577,0.386176,0.201223,-0.326853, + -0.304433,0.241938,0.921296,0.458468,0.182068,-0.279631, + -0.317035,0.182994,0.930592,0.432817,0.138665,-0.275352, + -0.603758,0.432599,0.669577,0.386176,0.201223,-0.326853, + -0.317035,0.182994,0.930592,0.432817,0.138665,-0.275352, + -0.649491,0.313782,0.692606,0.355891,0.154793,-0.323491, + -0.304433,0.241938,0.921296,0.458468,0.182068,-0.279631, + 0.013842,0.059444,0.998136,0.545218,0.159081,-0.263891, + 0.007661,0.031192,0.999484,0.525128,0.119312,-0.259306, + 0.007661,0.031192,0.999484,0.525128,0.119312,-0.259306, + -0.317035,0.182994,0.930592,0.432817,0.138665,-0.275352, + -0.304433,0.241938,0.921296,0.458468,0.182068,-0.279631, + -0.09747,-0.388653,0.916214,0.513237,0.088956,-0.260702, + -0.44053,-0.240649,0.864882,0.419921,0.106487,-0.276838, + -0.317035,0.182994,0.930592,0.432817,0.138665,-0.275352, + -0.09747,-0.388653,0.916214,0.513237,0.088956,-0.260702, + -0.317035,0.182994,0.930592,0.432817,0.138665,-0.275352, + 0.007661,0.031192,0.999484,0.525128,0.119312,-0.259306, + -0.44053,-0.240649,0.864882,0.419921,0.106487,-0.276838, + -0.720224,-0.155939,0.675988,0.342054,0.121167,-0.324904, + -0.649491,0.313782,0.692606,0.355891,0.154793,-0.323491, + -0.649491,0.313782,0.692606,0.355891,0.154793,-0.323491, + -0.317035,0.182994,0.930592,0.432817,0.138665,-0.275352, + -0.44053,-0.240649,0.864882,0.419921,0.106487,-0.276838, + 0.344586,-0.098997,0.93352,0.631969,0.136095,-0.279631, + 0.677454,-0.2664,0.685629,0.704261,0.116939,-0.326853, + 0.691984,-0.189259,0.696663,0.694366,0.083832,-0.323491, + 0.691984,-0.189259,0.696663,0.694366,0.083832,-0.323491, + 0.338242,-0.103362,0.935366,0.61744,0.099959,-0.275352, + 0.344586,-0.098997,0.93352,0.631969,0.136095,-0.279631, + 0.570752,-0.537595,0.620673,0.684631,0.057942,-0.324904, + 0.227406,-0.473471,0.850948,0.606658,0.072023,-0.276838, + 0.338242,-0.103362,0.935366,0.61744,0.099959,-0.275352, + 0.570752,-0.537595,0.620673,0.684631,0.057942,-0.324904, + 0.338242,-0.103362,0.935366,0.61744,0.099959,-0.275352, + 0.691984,-0.189259,0.696663,0.694366,0.083832,-0.323491, + 0.227406,-0.473471,0.850948,0.606658,0.072023,-0.276838, + -0.09747,-0.388653,0.916214,0.513237,0.088956,-0.260702, + 0.007661,0.031192,0.999484,0.525128,0.119312,-0.259306, + 0.007661,0.031192,0.999484,0.525128,0.119312,-0.259306, + 0.338242,-0.103362,0.935366,0.61744,0.099959,-0.275352, + 0.227406,-0.473471,0.850948,0.606658,0.072023,-0.276838, + 0.013842,0.059444,0.998136,0.545218,0.159081,-0.263891, + 0.344586,-0.098997,0.93352,0.631969,0.136095,-0.279631, + 0.338242,-0.103362,0.935366,0.61744,0.099959,-0.275352, + 0.013842,0.059444,0.998136,0.545218,0.159081,-0.263891, + 0.338242,-0.103362,0.935366,0.61744,0.099959,-0.275352, + 0.007661,0.031192,0.999484,0.525128,0.119312,-0.259306, + 0.029695,-0.979483,0.199329,0.642426,0.035438,-0.361333, + -0.070895,-0.97954,0.188349,0.586334,0.040774,-0.335375, + 0.024087,-0.872904,0.487296,0.593625,0.053327,-0.294, + 0.029695,-0.979483,0.199329,0.642426,0.035438,-0.361333, + 0.024087,-0.872904,0.487296,0.593625,0.053327,-0.294, + 0.21248,-0.884802,0.414702,0.666096,0.041783,-0.339125, + -0.168376,-0.954904,0.244557,0.504703,0.05292,-0.322437, + -0.143026,-0.80792,0.571672,0.507243,0.067325,-0.2785, + 0.024087,-0.872904,0.487296,0.593625,0.053327,-0.294, + -0.168376,-0.954904,0.244557,0.504703,0.05292,-0.322437, + 0.024087,-0.872904,0.487296,0.593625,0.053327,-0.294, + -0.070895,-0.97954,0.188349,0.586334,0.040774,-0.335375, + -0.09747,-0.388653,0.916214,0.513237,0.088956,-0.260702, + 0.227406,-0.473471,0.850948,0.606658,0.072023,-0.276838, + 0.024087,-0.872904,0.487296,0.593625,0.053327,-0.294, + -0.09747,-0.388653,0.916214,0.513237,0.088956,-0.260702, + 0.024087,-0.872904,0.487296,0.593625,0.053327,-0.294, + -0.143026,-0.80792,0.571672,0.507243,0.067325,-0.2785, + 0.227406,-0.473471,0.850948,0.606658,0.072023,-0.276838, + 0.570752,-0.537595,0.620673,0.684631,0.057942,-0.324904, + 0.21248,-0.884802,0.414702,0.666096,0.041783,-0.339125, + 0.21248,-0.884802,0.414702,0.666096,0.041783,-0.339125, + 0.024087,-0.872904,0.487296,0.593625,0.053327,-0.294, + 0.227406,-0.473471,0.850948,0.606658,0.072023,-0.276838, + -0.280571,-0.938896,0.199385,0.423841,0.069426,-0.335375, + -0.364711,-0.913648,0.179534,0.369306,0.083596,-0.361333, + -0.560128,-0.705466,0.434252,0.349234,0.097654,-0.339125, + -0.560128,-0.705466,0.434252,0.349234,0.097654,-0.339125, + -0.32072,-0.774629,0.545059,0.421284,0.083716,-0.294, + -0.280571,-0.938896,0.199385,0.423841,0.069426,-0.335375, + -0.560128,-0.705466,0.434252,0.349234,0.097654,-0.339125, + -0.720224,-0.155939,0.675988,0.342054,0.121167,-0.324904, + -0.44053,-0.240649,0.864882,0.419921,0.106487,-0.276838, + -0.44053,-0.240649,0.864882,0.419921,0.106487,-0.276838, + -0.32072,-0.774629,0.545059,0.421284,0.083716,-0.294, + -0.560128,-0.705466,0.434252,0.349234,0.097654,-0.339125, + -0.09747,-0.388653,0.916214,0.513237,0.088956,-0.260702, + -0.143026,-0.80792,0.571672,0.507243,0.067325,-0.2785, + -0.32072,-0.774629,0.545059,0.421284,0.083716,-0.294, + -0.09747,-0.388653,0.916214,0.513237,0.088956,-0.260702, + -0.32072,-0.774629,0.545059,0.421284,0.083716,-0.294, + -0.44053,-0.240649,0.864882,0.419921,0.106487,-0.276838, + -0.168376,-0.954904,0.244557,0.504703,0.05292,-0.322437, + -0.280571,-0.938896,0.199385,0.423841,0.069426,-0.335375, + -0.32072,-0.774629,0.545059,0.421284,0.083716,-0.294, + -0.168376,-0.954904,0.244557,0.504703,0.05292,-0.322437, + -0.32072,-0.774629,0.545059,0.421284,0.083716,-0.294, + -0.143026,-0.80792,0.571672,0.507243,0.067325,-0.2785, + 0.029695,-0.979483,-0.199329,0.642426,0.035438,-0.638667, + -0.070895,-0.97954,-0.18835,0.586334,0.040774,-0.664625, + -0.094013,-0.992373,-0.079739,0.592781,0.031264,-0.5905, + 0.029695,-0.979483,-0.199329,0.642426,0.035438,-0.638667, + -0.094013,-0.992373,-0.079739,0.592781,0.031264,-0.5905, + 0.015839,-0.994833,-0.100277,0.667212,0.026513,-0.5825, + -0.070895,-0.97954,-0.18835,0.586334,0.040774,-0.664625, + -0.168375,-0.954904,-0.244557,0.504703,0.05292,-0.677562, + -0.17302,-0.981247,-0.08496,0.503173,0.044243,-0.59775, + -0.17302,-0.981247,-0.08496,0.503173,0.044243,-0.59775, + -0.094013,-0.992373,-0.079739,0.592781,0.031264,-0.5905, + -0.070895,-0.97954,-0.18835,0.586334,0.040774,-0.664625, + -0.173648,-0.984808,0,0.502661,0.041337,-0.5, + -0.089351,-0.996,0,0.599438,0.027269,-0.5, + -0.094013,-0.992373,-0.079739,0.592781,0.031264,-0.5905, + -0.173648,-0.984808,0,0.502661,0.041337,-0.5, + -0.094013,-0.992373,-0.079739,0.592781,0.031264,-0.5905, + -0.17302,-0.981247,-0.08496,0.503173,0.044243,-0.59775, + -0.089351,-0.996,0,0.599438,0.027269,-0.5, + 0.072467,-0.997371,0,0.679568,0.022087,-0.5, + 0.015839,-0.994833,-0.100277,0.667212,0.026513,-0.5825, + 0.015839,-0.994833,-0.100277,0.667212,0.026513,-0.5825, + -0.094013,-0.992373,-0.079739,0.592781,0.031264,-0.5905, + -0.089351,-0.996,0,0.599438,0.027269,-0.5, + -0.364711,-0.913648,-0.179534,0.369306,0.083596,-0.638667, + -0.355137,-0.92942,-0.100277,0.342964,0.083687,-0.5825, + -0.251068,-0.964679,-0.079739,0.414531,0.062694,-0.5905, + -0.364711,-0.913648,-0.179534,0.369306,0.083596,-0.638667, + -0.251068,-0.964679,-0.079739,0.414531,0.062694,-0.5905, + -0.280571,-0.938896,-0.199385,0.423841,0.069426,-0.664625, + -0.355137,-0.92942,-0.100277,0.342964,0.083687,-0.5825, + -0.409218,-0.912437,0,0.329838,0.083754,-0.5, + -0.25669,-0.966494,0,0.406908,0.061217,-0.5, + -0.25669,-0.966494,0,0.406908,0.061217,-0.5, + -0.251068,-0.964679,-0.079739,0.414531,0.062694,-0.5905, + -0.355137,-0.92942,-0.100277,0.342964,0.083687,-0.5825, + -0.173648,-0.984808,0,0.502661,0.041337,-0.5, + -0.17302,-0.981247,-0.08496,0.503173,0.044243,-0.59775, + -0.251068,-0.964679,-0.079739,0.414531,0.062694,-0.5905, + -0.173648,-0.984808,0,0.502661,0.041337,-0.5, + -0.251068,-0.964679,-0.079739,0.414531,0.062694,-0.5905, + -0.25669,-0.966494,0,0.406908,0.061217,-0.5, + -0.17302,-0.981247,-0.08496,0.503173,0.044243,-0.59775, + -0.168375,-0.954904,-0.244557,0.504703,0.05292,-0.677562, + -0.280571,-0.938896,-0.199385,0.423841,0.069426,-0.664625, + -0.280571,-0.938896,-0.199385,0.423841,0.069426,-0.664625, + -0.251068,-0.964679,-0.079739,0.414531,0.062694,-0.5905, + -0.17302,-0.981247,-0.08496,0.503173,0.044243,-0.59775, + -0.364711,-0.913648,0.179534,0.369306,0.083596,-0.361333, + -0.280571,-0.938896,0.199385,0.423841,0.069426,-0.335375, + -0.251068,-0.964679,0.079739,0.414531,0.062694,-0.4095, + -0.364711,-0.913648,0.179534,0.369306,0.083596,-0.361333, + -0.251068,-0.964679,0.079739,0.414531,0.062694,-0.4095, + -0.355137,-0.92942,0.100277,0.342964,0.083687,-0.4175, + -0.280571,-0.938896,0.199385,0.423841,0.069426,-0.335375, + -0.168376,-0.954904,0.244557,0.504703,0.05292,-0.322437, + -0.17302,-0.981247,0.08496,0.503173,0.044243,-0.40225, + -0.17302,-0.981247,0.08496,0.503173,0.044243,-0.40225, + -0.251068,-0.964679,0.079739,0.414531,0.062694,-0.4095, + -0.280571,-0.938896,0.199385,0.423841,0.069426,-0.335375, + -0.173648,-0.984808,0,0.502661,0.041337,-0.5, + -0.25669,-0.966494,0,0.406908,0.061217,-0.5, + -0.251068,-0.964679,0.079739,0.414531,0.062694,-0.4095, + -0.173648,-0.984808,0,0.502661,0.041337,-0.5, + -0.251068,-0.964679,0.079739,0.414531,0.062694,-0.4095, + -0.17302,-0.981247,0.08496,0.503173,0.044243,-0.40225, + -0.25669,-0.966494,0,0.406908,0.061217,-0.5, + -0.409218,-0.912437,0,0.329838,0.083754,-0.5, + -0.355137,-0.92942,0.100277,0.342964,0.083687,-0.4175, + -0.355137,-0.92942,0.100277,0.342964,0.083687,-0.4175, + -0.251068,-0.964679,0.079739,0.414531,0.062694,-0.4095, + -0.25669,-0.966494,0,0.406908,0.061217,-0.5, + 0.029695,-0.979483,0.199329,0.642426,0.035438,-0.361333, + 0.015839,-0.994833,0.100277,0.667212,0.026513,-0.4175, + -0.094013,-0.992373,0.079739,0.592781,0.031264,-0.4095, + 0.029695,-0.979483,0.199329,0.642426,0.035438,-0.361333, + -0.094013,-0.992373,0.079739,0.592781,0.031264,-0.4095, + -0.070895,-0.97954,0.188349,0.586334,0.040774,-0.335375, + 0.015839,-0.994833,0.100277,0.667212,0.026513,-0.4175, + 0.072467,-0.997371,0,0.679568,0.022087,-0.5, + -0.089351,-0.996,0,0.599438,0.027269,-0.5, + -0.089351,-0.996,0,0.599438,0.027269,-0.5, + -0.094013,-0.992373,0.079739,0.592781,0.031264,-0.4095, + 0.015839,-0.994833,0.100277,0.667212,0.026513,-0.4175, + -0.173648,-0.984808,0,0.502661,0.041337,-0.5, + -0.17302,-0.981247,0.08496,0.503173,0.044243,-0.40225, + -0.094013,-0.992373,0.079739,0.592781,0.031264,-0.4095, + -0.173648,-0.984808,0,0.502661,0.041337,-0.5, + -0.094013,-0.992373,0.079739,0.592781,0.031264,-0.4095, + -0.089351,-0.996,0,0.599438,0.027269,-0.5, + -0.17302,-0.981247,0.08496,0.503173,0.044243,-0.40225, + -0.168376,-0.954904,0.244557,0.504703,0.05292,-0.322437, + -0.070895,-0.97954,0.188349,0.586334,0.040774,-0.335375, + -0.070895,-0.97954,0.188349,0.586334,0.040774,-0.335375, + -0.094013,-0.992373,0.079739,0.592781,0.031264,-0.4095, + -0.17302,-0.981247,0.08496,0.503173,0.044243,-0.40225, +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1728,data,NULL}; +const struct gllist *s1_3=&frame; diff --git a/hacks/glx/s1_4.c b/hacks/glx/s1_4.c new file mode 100644 index 0000000..397412d --- /dev/null +++ b/hacks/glx/s1_4.c @@ -0,0 +1,1733 @@ +#include "gllist.h" +static const float data[]={ + -0.632405,-0.365743,-0.682858,1.262105,0.039911,-0.672877, + -0.695773,-0.304145,-0.650689,1.235562,0.083949,-0.664066, + -0.858311,-0.411605,-0.306404,1.208797,0.050229,-0.589491, + -0.858311,-0.411605,-0.306404,1.208797,0.050229,-0.589491, + -0.802735,-0.496752,-0.329932,1.231827,0.004686,-0.594296, + -0.632405,-0.365743,-0.682858,1.262105,0.039911,-0.672877, + -0.900624,-0.4346,0,1.199875,0.038989,-0.5, + -0.829744,-0.558144,0,1.221734,-0.007055,-0.5, + -0.802735,-0.496752,-0.329932,1.231827,0.004686,-0.594296, + -0.900624,-0.4346,0,1.199875,0.038989,-0.5, + -0.802735,-0.496752,-0.329932,1.231827,0.004686,-0.594296, + -0.858311,-0.411605,-0.306404,1.208797,0.050229,-0.589491, + -0.829744,-0.558144,0,1.221734,-0.007055,-0.5, + -0.372431,-0.92806,0,1.243033,-0.034453,-0.5, + -0.429143,-0.839931,-0.332192,1.253444,-0.022303,-0.594949, + -0.429143,-0.839931,-0.332192,1.253444,-0.022303,-0.594949, + -0.802735,-0.496752,-0.329932,1.231827,0.004686,-0.594296, + -0.829744,-0.558144,0,1.221734,-0.007055,-0.5, + -0.342337,-0.675989,-0.652567,1.284897,0.013483,-0.674188, + -0.632405,-0.365743,-0.682858,1.262105,0.039911,-0.672877, + -0.802735,-0.496752,-0.329932,1.231827,0.004686,-0.594296, + -0.342337,-0.675989,-0.652567,1.284897,0.013483,-0.674188, + -0.802735,-0.496752,-0.329932,1.231827,0.004686,-0.594296, + -0.429143,-0.839931,-0.332192,1.253444,-0.022303,-0.594949, + -0.858311,-0.411604,0.306404,1.208797,0.050229,-0.410509, + -0.695773,-0.304144,0.650689,1.235562,0.083949,-0.335934, + -0.632405,-0.365743,0.682858,1.262105,0.039911,-0.327123, + -0.632405,-0.365743,0.682858,1.262105,0.039911,-0.327123, + -0.802735,-0.496752,0.329932,1.231827,0.004686,-0.405704, + -0.858311,-0.411604,0.306404,1.208797,0.050229,-0.410509, + -0.342337,-0.675989,0.652567,1.284897,0.013483,-0.325812, + -0.429143,-0.839932,0.332191,1.253444,-0.022303,-0.405051, + -0.802735,-0.496752,0.329932,1.231827,0.004686,-0.405704, + -0.342337,-0.675989,0.652567,1.284897,0.013483,-0.325812, + -0.802735,-0.496752,0.329932,1.231827,0.004686,-0.405704, + -0.632405,-0.365743,0.682858,1.262105,0.039911,-0.327123, + -0.429143,-0.839932,0.332191,1.253444,-0.022303,-0.405051, + -0.372431,-0.92806,0,1.243033,-0.034453,-0.5, + -0.829744,-0.558144,0,1.221734,-0.007055,-0.5, + -0.829744,-0.558144,0,1.221734,-0.007055,-0.5, + -0.802735,-0.496752,0.329932,1.231827,0.004686,-0.405704, + -0.429143,-0.839932,0.332191,1.253444,-0.022303,-0.405051, + -0.900624,-0.4346,0,1.199875,0.038989,-0.5, + -0.858311,-0.411604,0.306404,1.208797,0.050229,-0.410509, + -0.802735,-0.496752,0.329932,1.231827,0.004686,-0.405704, + -0.900624,-0.4346,0,1.199875,0.038989,-0.5, + -0.802735,-0.496752,0.329932,1.231827,0.004686,-0.405704, + -0.829744,-0.558144,0,1.221734,-0.007055,-0.5, + 0.581551,-0.793452,0.179534,1.331736,0.017726,-0.361333, + 0.6,-0.793691,0.100277,1.3177,-0.004566,-0.4175, + 0.266434,-0.94535,0.187955,1.279887,-0.026194,-0.4125, + 0.581551,-0.793452,0.179534,1.331736,0.017726,-0.361333, + 0.266434,-0.94535,0.187955,1.279887,-0.026194,-0.4125, + 0.307416,-0.846879,0.433925,1.309178,0.008154,-0.339125, + 0.556938,-0.830554,0,1.310688,-0.015661,-0.5, + 0.184945,-0.982749,0,1.270418,-0.038526,-0.5, + 0.266434,-0.94535,0.187955,1.279887,-0.026194,-0.4125, + 0.556938,-0.830554,0,1.310688,-0.015661,-0.5, + 0.266434,-0.94535,0.187955,1.279887,-0.026194,-0.4125, + 0.6,-0.793691,0.100277,1.3177,-0.004566,-0.4175, + -0.372431,-0.92806,0,1.243033,-0.034453,-0.5, + -0.429143,-0.839932,0.332191,1.253444,-0.022303,-0.405051, + 0.266434,-0.94535,0.187955,1.279887,-0.026194,-0.4125, + -0.372431,-0.92806,0,1.243033,-0.034453,-0.5, + 0.266434,-0.94535,0.187955,1.279887,-0.026194,-0.4125, + 0.184945,-0.982749,0,1.270418,-0.038526,-0.5, + -0.429143,-0.839932,0.332191,1.253444,-0.022303,-0.405051, + -0.342337,-0.675989,0.652567,1.284897,0.013483,-0.325812, + 0.307416,-0.846879,0.433925,1.309178,0.008154,-0.339125, + 0.307416,-0.846879,0.433925,1.309178,0.008154,-0.339125, + 0.266434,-0.94535,0.187955,1.279887,-0.026194,-0.4125, + -0.429143,-0.839932,0.332191,1.253444,-0.022303,-0.405051, + 0.581551,-0.793452,-0.179534,1.331736,0.017726,-0.638667, + 0.307416,-0.846879,-0.433925,1.309178,0.008154,-0.660875, + 0.266434,-0.94535,-0.187955,1.279887,-0.026194,-0.5875, + 0.581551,-0.793452,-0.179534,1.331736,0.017726,-0.638667, + 0.266434,-0.94535,-0.187955,1.279887,-0.026194,-0.5875, + 0.6,-0.793691,-0.100277,1.3177,-0.004566,-0.5825, + 0.307416,-0.846879,-0.433925,1.309178,0.008154,-0.660875, + -0.342337,-0.675989,-0.652567,1.284897,0.013483,-0.674188, + -0.429143,-0.839931,-0.332192,1.253444,-0.022303,-0.594949, + -0.429143,-0.839931,-0.332192,1.253444,-0.022303,-0.594949, + 0.266434,-0.94535,-0.187955,1.279887,-0.026194,-0.5875, + 0.307416,-0.846879,-0.433925,1.309178,0.008154,-0.660875, + -0.372431,-0.92806,0,1.243033,-0.034453,-0.5, + 0.184945,-0.982749,0,1.270418,-0.038526,-0.5, + 0.266434,-0.94535,-0.187955,1.279887,-0.026194,-0.5875, + -0.372431,-0.92806,0,1.243033,-0.034453,-0.5, + 0.266434,-0.94535,-0.187955,1.279887,-0.026194,-0.5875, + -0.429143,-0.839931,-0.332192,1.253444,-0.022303,-0.594949, + 0.556938,-0.830554,0,1.310688,-0.015661,-0.5, + 0.6,-0.793691,-0.100277,1.3177,-0.004566,-0.5825, + 0.266434,-0.94535,-0.187955,1.279887,-0.026194,-0.5875, + 0.556938,-0.830554,0,1.310688,-0.015661,-0.5, + 0.266434,-0.94535,-0.187955,1.279887,-0.026194,-0.5875, + 0.184945,-0.982749,0,1.270418,-0.038526,-0.5, + -0.695773,-0.304144,0.650689,1.235562,0.083949,-0.335934, + -0.420703,-0.10775,0.900777,1.28017,0.14015,-0.291188, + -0.363086,-0.142915,0.92073,1.312568,0.09862,-0.279975, + -0.695773,-0.304144,0.650689,1.235562,0.083949,-0.335934, + -0.363086,-0.142915,0.92073,1.312568,0.09862,-0.279975, + -0.632405,-0.365743,0.682858,1.262105,0.039911,-0.327123, + -0.420703,-0.10775,0.900777,1.28017,0.14015,-0.291188, + -0.152737,0.118235,0.981169,1.3337,0.207591,-0.276273, + -0.10731,0.091019,0.990051,1.373124,0.16907,-0.264259, + -0.10731,0.091019,0.990051,1.373124,0.16907,-0.264259, + -0.363086,-0.142915,0.92073,1.312568,0.09862,-0.279975, + -0.420703,-0.10775,0.900777,1.28017,0.14015,-0.291188, + 0.221822,-0.232839,0.94688,1.400739,0.142695,-0.26194, + -0.050406,-0.482634,0.874371,1.337615,0.072243,-0.277994, + -0.363086,-0.142915,0.92073,1.312568,0.09862,-0.279975, + 0.221822,-0.232839,0.94688,1.400739,0.142695,-0.26194, + -0.363086,-0.142915,0.92073,1.312568,0.09862,-0.279975, + -0.10731,0.091019,0.990051,1.373124,0.16907,-0.264259, + -0.050406,-0.482634,0.874371,1.337615,0.072243,-0.277994, + -0.342337,-0.675989,0.652567,1.284897,0.013483,-0.325812, + -0.632405,-0.365743,0.682858,1.262105,0.039911,-0.327123, + -0.632405,-0.365743,0.682858,1.262105,0.039911,-0.327123, + -0.363086,-0.142915,0.92073,1.312568,0.09862,-0.279975, + -0.050406,-0.482634,0.874371,1.337615,0.072243,-0.277994, + 0.311074,0.63183,0.709947,1.431839,0.331232,-0.335934, + 0.365915,0.616651,0.697028,1.484144,0.298229,-0.327123, + 0.113526,0.358822,0.926476,1.433681,0.239521,-0.279975, + 0.311074,0.63183,0.709947,1.431839,0.331232,-0.335934, + 0.113526,0.358822,0.926476,1.433681,0.239521,-0.279975, + 0.074097,0.34389,0.936082,1.38723,0.275032,-0.291188, + 0.365915,0.616651,0.697028,1.484144,0.298229,-0.327123, + 0.704743,0.348932,0.617724,1.515677,0.27272,-0.325812, + 0.422175,0.108161,0.900039,1.463411,0.213552,-0.277994, + 0.422175,0.108161,0.900039,1.463411,0.213552,-0.277994, + 0.113526,0.358822,0.926476,1.433681,0.239521,-0.279975, + 0.365915,0.616651,0.697028,1.484144,0.298229,-0.327123, + 0.422175,0.108161,0.900039,1.463411,0.213552,-0.277994, + 0.221822,-0.232839,0.94688,1.400739,0.142695,-0.26194, + -0.10731,0.091019,0.990051,1.373124,0.16907,-0.264259, + -0.10731,0.091019,0.990051,1.373124,0.16907,-0.264259, + 0.113526,0.358822,0.926476,1.433681,0.239521,-0.279975, + 0.422175,0.108161,0.900039,1.463411,0.213552,-0.277994, + -0.152737,0.118235,0.981169,1.3337,0.207591,-0.276273, + 0.074097,0.34389,0.936082,1.38723,0.275032,-0.291188, + 0.113526,0.358822,0.926476,1.433681,0.239521,-0.279975, + -0.152737,0.118235,0.981169,1.3337,0.207591,-0.276273, + 0.113526,0.358822,0.926476,1.433681,0.239521,-0.279975, + -0.10731,0.091019,0.990051,1.373124,0.16907,-0.264259, + 0.846384,-0.493864,0.199328,1.517309,0.223825,-0.361333, + 0.786785,-0.580419,0.209959,1.483059,0.179084,-0.335375, + 0.736468,-0.384081,0.556864,1.476277,0.191919,-0.294, + 0.846384,-0.493864,0.199328,1.517309,0.223825,-0.361333, + 0.736468,-0.384081,0.556864,1.476277,0.191919,-0.294, + 0.85656,-0.215911,0.468709,1.524471,0.247261,-0.339125, + 0.786785,-0.580419,0.209959,1.483059,0.179084,-0.335375, + 0.725947,-0.653645,0.21389,1.4295,0.116294,-0.322437, + 0.64097,-0.57721,0.50595,1.418631,0.126081,-0.2785, + 0.64097,-0.57721,0.50595,1.418631,0.126081,-0.2785, + 0.736468,-0.384081,0.556864,1.476277,0.191919,-0.294, + 0.786785,-0.580419,0.209959,1.483059,0.179084,-0.335375, + 0.221822,-0.232839,0.94688,1.400739,0.142695,-0.26194, + 0.422175,0.108161,0.900039,1.463411,0.213552,-0.277994, + 0.736468,-0.384081,0.556864,1.476277,0.191919,-0.294, + 0.221822,-0.232839,0.94688,1.400739,0.142695,-0.26194, + 0.736468,-0.384081,0.556864,1.476277,0.191919,-0.294, + 0.64097,-0.57721,0.50595,1.418631,0.126081,-0.2785, + 0.422175,0.108161,0.900039,1.463411,0.213552,-0.277994, + 0.704743,0.348932,0.617724,1.515677,0.27272,-0.325812, + 0.85656,-0.215911,0.468709,1.524471,0.247261,-0.339125, + 0.85656,-0.215911,0.468709,1.524471,0.247261,-0.339125, + 0.736468,-0.384081,0.556864,1.476277,0.191919,-0.294, + 0.422175,0.108161,0.900039,1.463411,0.213552,-0.277994, + 0.649588,-0.728866,0.216309,1.372652,0.056465,-0.335375, + 0.581551,-0.793452,0.179534,1.331736,0.017726,-0.361333, + 0.307416,-0.846879,0.433925,1.309178,0.008154,-0.339125, + 0.307416,-0.846879,0.433925,1.309178,0.008154,-0.339125, + 0.432476,-0.665439,0.608404,1.359179,0.061869,-0.294, + 0.649588,-0.728866,0.216309,1.372652,0.056465,-0.335375, + 0.307416,-0.846879,0.433925,1.309178,0.008154,-0.339125, + -0.342337,-0.675989,0.652567,1.284897,0.013483,-0.325812, + -0.050406,-0.482634,0.874371,1.337615,0.072243,-0.277994, + -0.050406,-0.482634,0.874371,1.337615,0.072243,-0.277994, + 0.432476,-0.665439,0.608404,1.359179,0.061869,-0.294, + 0.307416,-0.846879,0.433925,1.309178,0.008154,-0.339125, + 0.221822,-0.232839,0.94688,1.400739,0.142695,-0.26194, + 0.64097,-0.57721,0.50595,1.418631,0.126081,-0.2785, + 0.432476,-0.665439,0.608404,1.359179,0.061869,-0.294, + 0.221822,-0.232839,0.94688,1.400739,0.142695,-0.26194, + 0.432476,-0.665439,0.608404,1.359179,0.061869,-0.294, + -0.050406,-0.482634,0.874371,1.337615,0.072243,-0.277994, + 0.64097,-0.57721,0.50595,1.418631,0.126081,-0.2785, + 0.725947,-0.653645,0.21389,1.4295,0.116294,-0.322437, + 0.649588,-0.728866,0.216309,1.372652,0.056465,-0.335375, + 0.649588,-0.728866,0.216309,1.372652,0.056465,-0.335375, + 0.432476,-0.665439,0.608404,1.359179,0.061869,-0.294, + 0.64097,-0.57721,0.50595,1.418631,0.126081,-0.2785, + 0.365915,0.616651,0.697028,1.484144,0.298229,-0.327123, + 0.311074,0.63183,0.709947,1.431839,0.331232,-0.335934, + 0.460195,0.823869,0.330849,1.458604,0.364953,-0.410509, + 0.460195,0.823869,0.330849,1.458604,0.364953,-0.410509, + 0.507038,0.792213,0.339576,1.514422,0.333454,-0.405704, + 0.365915,0.616651,0.697028,1.484144,0.298229,-0.327123, + 0.489941,0.871755,0,1.467526,0.376193,-0.5, + 0.561935,0.827181,0,1.524515,0.345196,-0.5, + 0.507038,0.792213,0.339576,1.514422,0.333454,-0.405704, + 0.489941,0.871755,0,1.467526,0.376193,-0.5, + 0.507038,0.792213,0.339576,1.514422,0.333454,-0.405704, + 0.460195,0.823869,0.330849,1.458604,0.364953,-0.410509, + 0.561935,0.827181,0,1.524515,0.345196,-0.5, + 0.887347,0.461103,0,1.558444,0.319842,-0.5, + 0.765648,0.567983,0.301958,1.547582,0.308099,-0.405051, + 0.765648,0.567983,0.301958,1.547582,0.308099,-0.405051, + 0.507038,0.792213,0.339576,1.514422,0.333454,-0.405704, + 0.561935,0.827181,0,1.524515,0.345196,-0.5, + 0.704743,0.348932,0.617724,1.515677,0.27272,-0.325812, + 0.365915,0.616651,0.697028,1.484144,0.298229,-0.327123, + 0.507038,0.792213,0.339576,1.514422,0.333454,-0.405704, + 0.704743,0.348932,0.617724,1.515677,0.27272,-0.325812, + 0.507038,0.792213,0.339576,1.514422,0.333454,-0.405704, + 0.765648,0.567983,0.301958,1.547582,0.308099,-0.405051, + 0.460195,0.823869,-0.330849,1.458604,0.364953,-0.589491, + 0.311074,0.63183,-0.709947,1.431839,0.331232,-0.664066, + 0.365915,0.616651,-0.697028,1.484144,0.298229,-0.672877, + 0.365915,0.616651,-0.697028,1.484144,0.298229,-0.672877, + 0.507038,0.792213,-0.339576,1.514422,0.333454,-0.594296, + 0.460195,0.823869,-0.330849,1.458604,0.364953,-0.589491, + 0.704744,0.348932,-0.617724,1.515677,0.27272,-0.674188, + 0.765648,0.567983,-0.301958,1.547582,0.308099,-0.594949, + 0.507038,0.792213,-0.339576,1.514422,0.333454,-0.594296, + 0.704744,0.348932,-0.617724,1.515677,0.27272,-0.674188, + 0.507038,0.792213,-0.339576,1.514422,0.333454,-0.594296, + 0.365915,0.616651,-0.697028,1.484144,0.298229,-0.672877, + 0.765648,0.567983,-0.301958,1.547582,0.308099,-0.594949, + 0.887347,0.461103,0,1.558444,0.319842,-0.5, + 0.561935,0.827181,0,1.524515,0.345196,-0.5, + 0.561935,0.827181,0,1.524515,0.345196,-0.5, + 0.507038,0.792213,-0.339576,1.514422,0.333454,-0.594296, + 0.765648,0.567983,-0.301958,1.547582,0.308099,-0.594949, + 0.489941,0.871755,0,1.467526,0.376193,-0.5, + 0.460195,0.823869,-0.330849,1.458604,0.364953,-0.589491, + 0.507038,0.792213,-0.339576,1.514422,0.333454,-0.594296, + 0.489941,0.871755,0,1.467526,0.376193,-0.5, + 0.507038,0.792213,-0.339576,1.514422,0.333454,-0.594296, + 0.561935,0.827181,0,1.524515,0.345196,-0.5, + 0.846384,-0.493864,-0.199329,1.517309,0.223825,-0.638667, + 0.85206,-0.513749,-0.100278,1.538011,0.240115,-0.5825, + 0.967592,-0.122072,-0.221053,1.555568,0.279982,-0.5875, + 0.846384,-0.493864,-0.199329,1.517309,0.223825,-0.638667, + 0.967592,-0.122072,-0.221053,1.555568,0.279982,-0.5875, + 0.85656,-0.215911,-0.468708,1.524471,0.247261,-0.660875, + 0.88422,-0.467071,0,1.548313,0.248248,-0.5, + 0.997731,-0.067332,0,1.566843,0.290687,-0.5, + 0.967592,-0.122072,-0.221053,1.555568,0.279982,-0.5875, + 0.88422,-0.467071,0,1.548313,0.248248,-0.5, + 0.967592,-0.122072,-0.221053,1.555568,0.279982,-0.5875, + 0.85206,-0.513749,-0.100278,1.538011,0.240115,-0.5825, + 0.887347,0.461103,0,1.558444,0.319842,-0.5, + 0.765648,0.567983,-0.301958,1.547582,0.308099,-0.594949, + 0.967592,-0.122072,-0.221053,1.555568,0.279982,-0.5875, + 0.887347,0.461103,0,1.558444,0.319842,-0.5, + 0.967592,-0.122072,-0.221053,1.555568,0.279982,-0.5875, + 0.997731,-0.067332,0,1.566843,0.290687,-0.5, + 0.704744,0.348932,-0.617724,1.515677,0.27272,-0.674188, + 0.85656,-0.215911,-0.468708,1.524471,0.247261,-0.660875, + 0.967592,-0.122072,-0.221053,1.555568,0.279982,-0.5875, + 0.704744,0.348932,-0.617724,1.515677,0.27272,-0.674188, + 0.967592,-0.122072,-0.221053,1.555568,0.279982,-0.5875, + 0.765648,0.567983,-0.301958,1.547582,0.308099,-0.594949, + 0.846384,-0.493864,0.199328,1.517309,0.223825,-0.361333, + 0.85656,-0.215911,0.468709,1.524471,0.247261,-0.339125, + 0.967592,-0.122072,0.221053,1.555568,0.279982,-0.4125, + 0.846384,-0.493864,0.199328,1.517309,0.223825,-0.361333, + 0.967592,-0.122072,0.221053,1.555568,0.279982,-0.4125, + 0.85206,-0.513749,0.100278,1.538011,0.240115,-0.4175, + 0.704743,0.348932,0.617724,1.515677,0.27272,-0.325812, + 0.765648,0.567983,0.301958,1.547582,0.308099,-0.405051, + 0.967592,-0.122072,0.221053,1.555568,0.279982,-0.4125, + 0.704743,0.348932,0.617724,1.515677,0.27272,-0.325812, + 0.967592,-0.122072,0.221053,1.555568,0.279982,-0.4125, + 0.85656,-0.215911,0.468709,1.524471,0.247261,-0.339125, + 0.887347,0.461103,0,1.558444,0.319842,-0.5, + 0.997731,-0.067332,0,1.566843,0.290687,-0.5, + 0.967592,-0.122072,0.221053,1.555568,0.279982,-0.4125, + 0.887347,0.461103,0,1.558444,0.319842,-0.5, + 0.967592,-0.122072,0.221053,1.555568,0.279982,-0.4125, + 0.765648,0.567983,0.301958,1.547582,0.308099,-0.405051, + 0.88422,-0.467071,0,1.548313,0.248248,-0.5, + 0.85206,-0.513749,0.100278,1.538011,0.240115,-0.4175, + 0.967592,-0.122072,0.221053,1.555568,0.279982,-0.4125, + 0.88422,-0.467071,0,1.548313,0.248248,-0.5, + 0.967592,-0.122072,0.221053,1.555568,0.279982,-0.4125, + 0.997731,-0.067332,0,1.566843,0.290687,-0.5, + 0.311074,0.63183,-0.709947,1.431839,0.331232,-0.664066, + 0.074097,0.34389,-0.936082,1.38723,0.275032,-0.708812, + 0.113526,0.358822,-0.926476,1.433681,0.239521,-0.720025, + 0.311074,0.63183,-0.709947,1.431839,0.331232,-0.664066, + 0.113526,0.358822,-0.926476,1.433681,0.239521,-0.720025, + 0.365915,0.616651,-0.697028,1.484144,0.298229,-0.672877, + -0.152737,0.118235,-0.981169,1.3337,0.207591,-0.723727, + -0.10731,0.091019,-0.990051,1.373124,0.16907,-0.735741, + 0.113526,0.358822,-0.926476,1.433681,0.239521,-0.720025, + -0.152737,0.118235,-0.981169,1.3337,0.207591,-0.723727, + 0.113526,0.358822,-0.926476,1.433681,0.239521,-0.720025, + 0.074097,0.34389,-0.936082,1.38723,0.275032,-0.708812, + -0.10731,0.091019,-0.990051,1.373124,0.16907,-0.735741, + 0.221822,-0.232839,-0.94688,1.400739,0.142695,-0.73806, + 0.422175,0.108161,-0.900039,1.463411,0.213552,-0.722006, + 0.422175,0.108161,-0.900039,1.463411,0.213552,-0.722006, + 0.113526,0.358822,-0.926476,1.433681,0.239521,-0.720025, + -0.10731,0.091019,-0.990051,1.373124,0.16907,-0.735741, + 0.422175,0.108161,-0.900039,1.463411,0.213552,-0.722006, + 0.704744,0.348932,-0.617724,1.515677,0.27272,-0.674188, + 0.365915,0.616651,-0.697028,1.484144,0.298229,-0.672877, + 0.365915,0.616651,-0.697028,1.484144,0.298229,-0.672877, + 0.113526,0.358822,-0.926476,1.433681,0.239521,-0.720025, + 0.422175,0.108161,-0.900039,1.463411,0.213552,-0.722006, + -0.695773,-0.304145,-0.650689,1.235562,0.083949,-0.664066, + -0.632405,-0.365743,-0.682858,1.262105,0.039911,-0.672877, + -0.363086,-0.142915,-0.92073,1.312568,0.09862,-0.720025, + -0.695773,-0.304145,-0.650689,1.235562,0.083949,-0.664066, + -0.363086,-0.142915,-0.92073,1.312568,0.09862,-0.720025, + -0.420703,-0.10775,-0.900777,1.28017,0.14015,-0.708812, + -0.632405,-0.365743,-0.682858,1.262105,0.039911,-0.672877, + -0.342337,-0.675989,-0.652567,1.284897,0.013483,-0.674188, + -0.050406,-0.482634,-0.87437,1.337615,0.072243,-0.722006, + -0.050406,-0.482634,-0.87437,1.337615,0.072243,-0.722006, + -0.363086,-0.142915,-0.92073,1.312568,0.09862,-0.720025, + -0.632405,-0.365743,-0.682858,1.262105,0.039911,-0.672877, + 0.221822,-0.232839,-0.94688,1.400739,0.142695,-0.73806, + -0.10731,0.091019,-0.990051,1.373124,0.16907,-0.735741, + -0.363086,-0.142915,-0.92073,1.312568,0.09862,-0.720025, + 0.221822,-0.232839,-0.94688,1.400739,0.142695,-0.73806, + -0.363086,-0.142915,-0.92073,1.312568,0.09862,-0.720025, + -0.050406,-0.482634,-0.87437,1.337615,0.072243,-0.722006, + -0.10731,0.091019,-0.990051,1.373124,0.16907,-0.735741, + -0.152737,0.118235,-0.981169,1.3337,0.207591,-0.723727, + -0.420703,-0.10775,-0.900777,1.28017,0.14015,-0.708812, + -0.420703,-0.10775,-0.900777,1.28017,0.14015,-0.708812, + -0.363086,-0.142915,-0.92073,1.312568,0.09862,-0.720025, + -0.10731,0.091019,-0.990051,1.373124,0.16907,-0.735741, + 0.307416,-0.846879,-0.433925,1.309178,0.008154,-0.660875, + 0.581551,-0.793452,-0.179534,1.331736,0.017726,-0.638667, + 0.649588,-0.728866,-0.216309,1.372652,0.056465,-0.664625, + 0.649588,-0.728866,-0.216309,1.372652,0.056465,-0.664625, + 0.432476,-0.665439,-0.608404,1.359179,0.061869,-0.706, + 0.307416,-0.846879,-0.433925,1.309178,0.008154,-0.660875, + 0.649588,-0.728866,-0.216309,1.372652,0.056465,-0.664625, + 0.725947,-0.653645,-0.21389,1.4295,0.116294,-0.677562, + 0.64097,-0.577211,-0.50595,1.418631,0.126081,-0.7215, + 0.64097,-0.577211,-0.50595,1.418631,0.126081,-0.7215, + 0.432476,-0.665439,-0.608404,1.359179,0.061869,-0.706, + 0.649588,-0.728866,-0.216309,1.372652,0.056465,-0.664625, + 0.221822,-0.232839,-0.94688,1.400739,0.142695,-0.73806, + -0.050406,-0.482634,-0.87437,1.337615,0.072243,-0.722006, + 0.432476,-0.665439,-0.608404,1.359179,0.061869,-0.706, + 0.221822,-0.232839,-0.94688,1.400739,0.142695,-0.73806, + 0.432476,-0.665439,-0.608404,1.359179,0.061869,-0.706, + 0.64097,-0.577211,-0.50595,1.418631,0.126081,-0.7215, + -0.050406,-0.482634,-0.87437,1.337615,0.072243,-0.722006, + -0.342337,-0.675989,-0.652567,1.284897,0.013483,-0.674188, + 0.307416,-0.846879,-0.433925,1.309178,0.008154,-0.660875, + 0.307416,-0.846879,-0.433925,1.309178,0.008154,-0.660875, + 0.432476,-0.665439,-0.608404,1.359179,0.061869,-0.706, + -0.050406,-0.482634,-0.87437,1.337615,0.072243,-0.722006, + 0.846384,-0.493864,-0.199329,1.517309,0.223825,-0.638667, + 0.85656,-0.215911,-0.468708,1.524471,0.247261,-0.660875, + 0.736467,-0.384081,-0.556864,1.476277,0.191919,-0.706, + 0.846384,-0.493864,-0.199329,1.517309,0.223825,-0.638667, + 0.736467,-0.384081,-0.556864,1.476277,0.191919,-0.706, + 0.786785,-0.580419,-0.209959,1.483059,0.179084,-0.664625, + 0.85656,-0.215911,-0.468708,1.524471,0.247261,-0.660875, + 0.704744,0.348932,-0.617724,1.515677,0.27272,-0.674188, + 0.422175,0.108161,-0.900039,1.463411,0.213552,-0.722006, + 0.422175,0.108161,-0.900039,1.463411,0.213552,-0.722006, + 0.736467,-0.384081,-0.556864,1.476277,0.191919,-0.706, + 0.85656,-0.215911,-0.468708,1.524471,0.247261,-0.660875, + 0.221822,-0.232839,-0.94688,1.400739,0.142695,-0.73806, + 0.64097,-0.577211,-0.50595,1.418631,0.126081,-0.7215, + 0.736467,-0.384081,-0.556864,1.476277,0.191919,-0.706, + 0.221822,-0.232839,-0.94688,1.400739,0.142695,-0.73806, + 0.736467,-0.384081,-0.556864,1.476277,0.191919,-0.706, + 0.422175,0.108161,-0.900039,1.463411,0.213552,-0.722006, + 0.64097,-0.577211,-0.50595,1.418631,0.126081,-0.7215, + 0.725947,-0.653645,-0.21389,1.4295,0.116294,-0.677562, + 0.786785,-0.580419,-0.209959,1.483059,0.179084,-0.664625, + 0.786785,-0.580419,-0.209959,1.483059,0.179084,-0.664625, + 0.736467,-0.384081,-0.556864,1.476277,0.191919,-0.706, + 0.64097,-0.577211,-0.50595,1.418631,0.126081,-0.7215, + 0.581551,-0.793452,0.179534,1.331736,0.017726,-0.361333, + 0.649588,-0.728866,0.216309,1.372652,0.056465,-0.335375, + 0.685049,-0.72412,0.079739,1.373428,0.045002,-0.4095, + 0.581551,-0.793452,0.179534,1.331736,0.017726,-0.361333, + 0.685049,-0.72412,0.079739,1.373428,0.045002,-0.4095, + 0.6,-0.793691,0.100277,1.3177,-0.004566,-0.4175, + 0.649588,-0.728866,0.216309,1.372652,0.056465,-0.335375, + 0.725947,-0.653645,0.21389,1.4295,0.116294,-0.322437, + 0.740458,-0.666711,0.08496,1.436048,0.110398,-0.40225, + 0.740458,-0.666711,0.08496,1.436048,0.110398,-0.40225, + 0.685049,-0.72412,0.079739,1.373428,0.045002,-0.4095, + 0.649588,-0.728866,0.216309,1.372652,0.056465,-0.335375, + 0.743145,-0.669131,0,1.438241,0.108423,-0.5, + 0.683609,-0.729849,0,1.370641,0.037756,-0.5, + 0.685049,-0.72412,0.079739,1.373428,0.045002,-0.4095, + 0.743145,-0.669131,0,1.438241,0.108423,-0.5, + 0.685049,-0.72412,0.079739,1.373428,0.045002,-0.4095, + 0.740458,-0.666711,0.08496,1.436048,0.110398,-0.40225, + 0.683609,-0.729849,0,1.370641,0.037756,-0.5, + 0.556938,-0.830554,0,1.310688,-0.015661,-0.5, + 0.6,-0.793691,0.100277,1.3177,-0.004566,-0.4175, + 0.6,-0.793691,0.100277,1.3177,-0.004566,-0.4175, + 0.685049,-0.72412,0.079739,1.373428,0.045002,-0.4095, + 0.683609,-0.729849,0,1.370641,0.037756,-0.5, + 0.846384,-0.493864,0.199328,1.517309,0.223825,-0.361333, + 0.85206,-0.513749,0.100278,1.538011,0.240115,-0.4175, + 0.791761,-0.605604,0.079739,1.49454,0.179511,-0.4095, + 0.846384,-0.493864,0.199328,1.517309,0.223825,-0.361333, + 0.791761,-0.605604,0.079739,1.49454,0.179511,-0.4095, + 0.786785,-0.580419,0.209959,1.483059,0.179084,-0.335375, + 0.85206,-0.513749,0.100278,1.538011,0.240115,-0.4175, + 0.88422,-0.467071,0,1.548313,0.248248,-0.5, + 0.797307,-0.603573,0,1.501456,0.18304,-0.5, + 0.797307,-0.603573,0,1.501456,0.18304,-0.5, + 0.791761,-0.605604,0.079739,1.49454,0.179511,-0.4095, + 0.85206,-0.513749,0.100278,1.538011,0.240115,-0.4175, + 0.743145,-0.669131,0,1.438241,0.108423,-0.5, + 0.740458,-0.666711,0.08496,1.436048,0.110398,-0.40225, + 0.791761,-0.605604,0.079739,1.49454,0.179511,-0.4095, + 0.743145,-0.669131,0,1.438241,0.108423,-0.5, + 0.791761,-0.605604,0.079739,1.49454,0.179511,-0.4095, + 0.797307,-0.603573,0,1.501456,0.18304,-0.5, + 0.740458,-0.666711,0.08496,1.436048,0.110398,-0.40225, + 0.725947,-0.653645,0.21389,1.4295,0.116294,-0.322437, + 0.786785,-0.580419,0.209959,1.483059,0.179084,-0.335375, + 0.786785,-0.580419,0.209959,1.483059,0.179084,-0.335375, + 0.791761,-0.605604,0.079739,1.49454,0.179511,-0.4095, + 0.740458,-0.666711,0.08496,1.436048,0.110398,-0.40225, + 0.846384,-0.493864,-0.199329,1.517309,0.223825,-0.638667, + 0.786785,-0.580419,-0.209959,1.483059,0.179084,-0.664625, + 0.791761,-0.605604,-0.079739,1.49454,0.179511,-0.5905, + 0.846384,-0.493864,-0.199329,1.517309,0.223825,-0.638667, + 0.791761,-0.605604,-0.079739,1.49454,0.179511,-0.5905, + 0.85206,-0.513749,-0.100278,1.538011,0.240115,-0.5825, + 0.786785,-0.580419,-0.209959,1.483059,0.179084,-0.664625, + 0.725947,-0.653645,-0.21389,1.4295,0.116294,-0.677562, + 0.740458,-0.666711,-0.08496,1.436048,0.110398,-0.59775, + 0.740458,-0.666711,-0.08496,1.436048,0.110398,-0.59775, + 0.791761,-0.605604,-0.079739,1.49454,0.179511,-0.5905, + 0.786785,-0.580419,-0.209959,1.483059,0.179084,-0.664625, + 0.743145,-0.669131,0,1.438241,0.108423,-0.5, + 0.797307,-0.603573,0,1.501456,0.18304,-0.5, + 0.791761,-0.605604,-0.079739,1.49454,0.179511,-0.5905, + 0.743145,-0.669131,0,1.438241,0.108423,-0.5, + 0.791761,-0.605604,-0.079739,1.49454,0.179511,-0.5905, + 0.740458,-0.666711,-0.08496,1.436048,0.110398,-0.59775, + 0.797307,-0.603573,0,1.501456,0.18304,-0.5, + 0.88422,-0.467071,0,1.548313,0.248248,-0.5, + 0.85206,-0.513749,-0.100278,1.538011,0.240115,-0.5825, + 0.85206,-0.513749,-0.100278,1.538011,0.240115,-0.5825, + 0.791761,-0.605604,-0.079739,1.49454,0.179511,-0.5905, + 0.797307,-0.603573,0,1.501456,0.18304,-0.5, + 0.581551,-0.793452,-0.179534,1.331736,0.017726,-0.638667, + 0.6,-0.793691,-0.100277,1.3177,-0.004566,-0.5825, + 0.685049,-0.72412,-0.079739,1.373428,0.045002,-0.5905, + 0.581551,-0.793452,-0.179534,1.331736,0.017726,-0.638667, + 0.685049,-0.72412,-0.079739,1.373428,0.045002,-0.5905, + 0.649588,-0.728866,-0.216309,1.372652,0.056465,-0.664625, + 0.6,-0.793691,-0.100277,1.3177,-0.004566,-0.5825, + 0.556938,-0.830554,0,1.310688,-0.015661,-0.5, + 0.683609,-0.729849,0,1.370641,0.037756,-0.5, + 0.683609,-0.729849,0,1.370641,0.037756,-0.5, + 0.685049,-0.72412,-0.079739,1.373428,0.045002,-0.5905, + 0.6,-0.793691,-0.100277,1.3177,-0.004566,-0.5825, + 0.743145,-0.669131,0,1.438241,0.108423,-0.5, + 0.740458,-0.666711,-0.08496,1.436048,0.110398,-0.59775, + 0.685049,-0.72412,-0.079739,1.373428,0.045002,-0.5905, + 0.743145,-0.669131,0,1.438241,0.108423,-0.5, + 0.685049,-0.72412,-0.079739,1.373428,0.045002,-0.5905, + 0.683609,-0.729849,0,1.370641,0.037756,-0.5, + 0.740458,-0.666711,-0.08496,1.436048,0.110398,-0.59775, + 0.725947,-0.653645,-0.21389,1.4295,0.116294,-0.677562, + 0.649588,-0.728866,-0.216309,1.372652,0.056465,-0.664625, + 0.649588,-0.728866,-0.216309,1.372652,0.056465,-0.664625, + 0.685049,-0.72412,-0.079739,1.373428,0.045002,-0.5905, + 0.740458,-0.666711,-0.08496,1.436048,0.110398,-0.59775, + -0.695773,-0.304145,-0.650689,1.235562,0.083949,-0.664066, + -0.687216,-0.351805,-0.635584,1.200029,0.142107,-0.654883, + -0.84747,-0.443196,-0.292185,1.178115,0.10978,-0.584482, + -0.695773,-0.304145,-0.650689,1.235562,0.083949,-0.664066, + -0.84747,-0.443196,-0.292185,1.178115,0.10978,-0.584482, + -0.858311,-0.411605,-0.306404,1.208797,0.050229,-0.589491, + -0.687216,-0.351805,-0.635584,1.200029,0.142107,-0.654883, + -0.659424,-0.432639,-0.614804,1.158118,0.203222,-0.646637, + -0.813982,-0.512235,-0.273951,1.142211,0.172121,-0.579984, + -0.813982,-0.512235,-0.273951,1.142211,0.172121,-0.579984, + -0.84747,-0.443196,-0.292185,1.178115,0.10978,-0.584482, + -0.687216,-0.351805,-0.635584,1.200029,0.142107,-0.654883, + -0.860968,-0.508659,0,1.136909,0.161755,-0.5, + -0.891261,-0.453491,0,1.170811,0.099004,-0.5, + -0.84747,-0.443196,-0.292185,1.178115,0.10978,-0.584482, + -0.860968,-0.508659,0,1.136909,0.161755,-0.5, + -0.84747,-0.443196,-0.292185,1.178115,0.10978,-0.584482, + -0.813982,-0.512235,-0.273951,1.142211,0.172121,-0.579984, + -0.891261,-0.453491,0,1.170811,0.099004,-0.5, + -0.900624,-0.4346,0,1.199875,0.038989,-0.5, + -0.858311,-0.411605,-0.306404,1.208797,0.050229,-0.589491, + -0.858311,-0.411605,-0.306404,1.208797,0.050229,-0.589491, + -0.84747,-0.443196,-0.292185,1.178115,0.10978,-0.584482, + -0.891261,-0.453491,0,1.170811,0.099004,-0.5, + -0.30458,-0.744204,-0.594467,1.065609,0.289676,-0.638205, + -0.39374,-0.892943,-0.218225,1.064451,0.260311,-0.575384, + -0.696441,-0.651142,-0.301635,1.103513,0.226037,-0.576713, + -0.30458,-0.744204,-0.594467,1.065609,0.289676,-0.638205, + -0.696441,-0.651142,-0.301635,1.103513,0.226037,-0.576713, + -0.547648,-0.532516,-0.645374,1.112441,0.256132,-0.640641, + -0.39374,-0.892943,-0.218225,1.064451,0.260311,-0.575384, + -0.417976,-0.908458,0,1.064065,0.250523,-0.5, + -0.753723,-0.657192,0,1.100538,0.216006,-0.5, + -0.753723,-0.657192,0,1.100538,0.216006,-0.5, + -0.696441,-0.651142,-0.301635,1.103513,0.226037,-0.576713, + -0.39374,-0.892943,-0.218225,1.064451,0.260311,-0.575384, + -0.753723,-0.657192,0,1.100538,0.216006,-0.5, + -0.860968,-0.508659,0,1.136909,0.161755,-0.5, + -0.813982,-0.512235,-0.273951,1.142211,0.172121,-0.579984, + -0.813982,-0.512235,-0.273951,1.142211,0.172121,-0.579984, + -0.696441,-0.651142,-0.301635,1.103513,0.226037,-0.576713, + -0.753723,-0.657192,0,1.100538,0.216006,-0.5, + -0.659424,-0.432639,-0.614804,1.158118,0.203222,-0.646637, + -0.547648,-0.532516,-0.645374,1.112441,0.256132,-0.640641, + -0.696441,-0.651142,-0.301635,1.103513,0.226037,-0.576713, + -0.659424,-0.432639,-0.614804,1.158118,0.203222,-0.646637, + -0.696441,-0.651142,-0.301635,1.103513,0.226037,-0.576713, + -0.813982,-0.512235,-0.273951,1.142211,0.172121,-0.579984, + -0.30458,-0.744204,0.594467,1.065609,0.289676,-0.361795, + -0.547648,-0.532516,0.645374,1.112441,0.256132,-0.359359, + -0.696441,-0.651142,0.301635,1.103513,0.226037,-0.423287, + -0.30458,-0.744204,0.594467,1.065609,0.289676,-0.361795, + -0.696441,-0.651142,0.301635,1.103513,0.226037,-0.423287, + -0.393741,-0.892942,0.218225,1.064451,0.260311,-0.424615, + -0.659424,-0.432639,0.614804,1.158118,0.203222,-0.353363, + -0.813982,-0.512235,0.273951,1.142211,0.172121,-0.420016, + -0.696441,-0.651142,0.301635,1.103513,0.226037,-0.423287, + -0.659424,-0.432639,0.614804,1.158118,0.203222,-0.353363, + -0.696441,-0.651142,0.301635,1.103513,0.226037,-0.423287, + -0.547648,-0.532516,0.645374,1.112441,0.256132,-0.359359, + -0.813982,-0.512235,0.273951,1.142211,0.172121,-0.420016, + -0.860968,-0.508659,0,1.136909,0.161755,-0.5, + -0.753723,-0.657192,0,1.100538,0.216006,-0.5, + -0.753723,-0.657192,0,1.100538,0.216006,-0.5, + -0.696441,-0.651142,0.301635,1.103513,0.226037,-0.423287, + -0.813982,-0.512235,0.273951,1.142211,0.172121,-0.420016, + -0.753723,-0.657192,0,1.100538,0.216006,-0.5, + -0.417976,-0.908458,0,1.064065,0.250523,-0.5, + -0.393741,-0.892942,0.218225,1.064451,0.260311,-0.424615, + -0.393741,-0.892942,0.218225,1.064451,0.260311,-0.424615, + -0.696441,-0.651142,0.301635,1.103513,0.226037,-0.423287, + -0.753723,-0.657192,0,1.100538,0.216006,-0.5, + -0.695773,-0.304144,0.650689,1.235562,0.083949,-0.335934, + -0.858311,-0.411604,0.306404,1.208797,0.050229,-0.410509, + -0.84747,-0.443196,0.292185,1.178115,0.10978,-0.415518, + -0.695773,-0.304144,0.650689,1.235562,0.083949,-0.335934, + -0.84747,-0.443196,0.292185,1.178115,0.10978,-0.415518, + -0.687216,-0.351805,0.635584,1.200029,0.142107,-0.345117, + -0.858311,-0.411604,0.306404,1.208797,0.050229,-0.410509, + -0.900624,-0.4346,0,1.199875,0.038989,-0.5, + -0.891261,-0.453491,0,1.170811,0.099004,-0.5, + -0.891261,-0.453491,0,1.170811,0.099004,-0.5, + -0.84747,-0.443196,0.292185,1.178115,0.10978,-0.415518, + -0.858311,-0.411604,0.306404,1.208797,0.050229,-0.410509, + -0.860968,-0.508659,0,1.136909,0.161755,-0.5, + -0.813982,-0.512235,0.273951,1.142211,0.172121,-0.420016, + -0.84747,-0.443196,0.292185,1.178115,0.10978,-0.415518, + -0.860968,-0.508659,0,1.136909,0.161755,-0.5, + -0.84747,-0.443196,0.292185,1.178115,0.10978,-0.415518, + -0.891261,-0.453491,0,1.170811,0.099004,-0.5, + -0.813982,-0.512235,0.273951,1.142211,0.172121,-0.420016, + -0.659424,-0.432639,0.614804,1.158118,0.203222,-0.353363, + -0.687216,-0.351805,0.635584,1.200029,0.142107,-0.345117, + -0.687216,-0.351805,0.635584,1.200029,0.142107,-0.345117, + -0.84747,-0.443196,0.292185,1.178115,0.10978,-0.415518, + -0.813982,-0.512235,0.273951,1.142211,0.172121,-0.420016, + 0.311074,0.63183,-0.709947,1.431839,0.331232,-0.664066, + 0.339667,0.655519,-0.674478,1.36073,0.379173,-0.654883, + 0.12092,0.358415,-0.925698,1.324207,0.325294,-0.697124, + 0.311074,0.63183,-0.709947,1.431839,0.331232,-0.664066, + 0.12092,0.358415,-0.925698,1.324207,0.325294,-0.697124, + 0.074097,0.34389,-0.936082,1.38723,0.275032,-0.708812, + 0.339667,0.655519,-0.674478,1.36073,0.379173,-0.654883, + 0.306584,0.689695,-0.655994,1.274769,0.43129,-0.646637, + 0.126992,0.363932,-0.922728,1.248257,0.379456,-0.686629, + 0.126992,0.363932,-0.922728,1.248257,0.379456,-0.686629, + 0.12092,0.358415,-0.925698,1.324207,0.325294,-0.697124, + 0.339667,0.655519,-0.674478,1.36073,0.379173,-0.654883, + -0.106175,0.048409,-0.993168,1.216443,0.317256,-0.69996, + -0.127933,0.082246,-0.988367,1.280379,0.26064,-0.711204, + 0.12092,0.358415,-0.925698,1.324207,0.325294,-0.697124, + -0.106175,0.048409,-0.993168,1.216443,0.317256,-0.69996, + 0.12092,0.358415,-0.925698,1.324207,0.325294,-0.697124, + 0.126992,0.363932,-0.922728,1.248257,0.379456,-0.686629, + -0.127933,0.082246,-0.988367,1.280379,0.26064,-0.711204, + -0.152737,0.118235,-0.981169,1.3337,0.207591,-0.723727, + 0.074097,0.34389,-0.936082,1.38723,0.275032,-0.708812, + 0.074097,0.34389,-0.936082,1.38723,0.275032,-0.708812, + 0.12092,0.358415,-0.925698,1.324207,0.325294,-0.697124, + -0.127933,0.082246,-0.988367,1.280379,0.26064,-0.711204, + 0.225321,0.739198,-0.634679,1.177908,0.476825,-0.640641, + 0.08947,0.74633,-0.659535,1.074101,0.505017,-0.638205, + 0.076521,0.412911,-0.907551,1.072171,0.456076,-0.675897, + 0.076521,0.412911,-0.907551,1.072171,0.456076,-0.675897, + 0.115814,0.384301,-0.915915,1.163029,0.426667,-0.678998, + 0.225321,0.739198,-0.634679,1.177908,0.476825,-0.640641, + 0.012548,-0.001301,-0.99992,1.069855,0.397346,-0.688461, + -0.066606,0.01431,-0.997677,1.145175,0.366478,-0.691783, + 0.115814,0.384301,-0.915915,1.163029,0.426667,-0.678998, + 0.012548,-0.001301,-0.99992,1.069855,0.397346,-0.688461, + 0.115814,0.384301,-0.915915,1.163029,0.426667,-0.678998, + 0.076521,0.412911,-0.907551,1.072171,0.456076,-0.675897, + -0.066606,0.01431,-0.997677,1.145175,0.366478,-0.691783, + -0.106175,0.048409,-0.993168,1.216443,0.317256,-0.69996, + 0.126992,0.363932,-0.922728,1.248257,0.379456,-0.686629, + 0.126992,0.363932,-0.922728,1.248257,0.379456,-0.686629, + 0.115814,0.384301,-0.915915,1.163029,0.426667,-0.678998, + -0.066606,0.01431,-0.997677,1.145175,0.366478,-0.691783, + 0.306584,0.689695,-0.655994,1.274769,0.43129,-0.646637, + 0.225321,0.739198,-0.634679,1.177908,0.476825,-0.640641, + 0.115814,0.384301,-0.915915,1.163029,0.426667,-0.678998, + 0.306584,0.689695,-0.655994,1.274769,0.43129,-0.646637, + 0.115814,0.384301,-0.915915,1.163029,0.426667,-0.678998, + 0.126992,0.363932,-0.922728,1.248257,0.379456,-0.686629, + -0.30458,-0.744204,-0.594467,1.065609,0.289676,-0.638205, + -0.547648,-0.532516,-0.645374,1.112441,0.256132,-0.640641, + -0.30711,-0.324628,-0.894595,1.12732,0.306289,-0.678998, + -0.30458,-0.744204,-0.594467,1.065609,0.289676,-0.638205, + -0.30711,-0.324628,-0.894595,1.12732,0.306289,-0.678998, + -0.094868,-0.409964,-0.907155,1.067539,0.338617,-0.675897, + -0.547648,-0.532516,-0.645374,1.112441,0.256132,-0.640641, + -0.659424,-0.432639,-0.614804,1.158118,0.203222,-0.646637, + -0.382336,-0.228691,-0.895276,1.18463,0.255055,-0.686629, + -0.382336,-0.228691,-0.895276,1.18463,0.255055,-0.686629, + -0.30711,-0.324628,-0.894595,1.12732,0.306289,-0.678998, + -0.547648,-0.532516,-0.645374,1.112441,0.256132,-0.640641, + -0.106175,0.048409,-0.993168,1.216443,0.317256,-0.69996, + -0.066606,0.01431,-0.997677,1.145175,0.366478,-0.691783, + -0.30711,-0.324628,-0.894595,1.12732,0.306289,-0.678998, + -0.106175,0.048409,-0.993168,1.216443,0.317256,-0.69996, + -0.30711,-0.324628,-0.894595,1.12732,0.306289,-0.678998, + -0.382336,-0.228691,-0.895276,1.18463,0.255055,-0.686629, + -0.066606,0.01431,-0.997677,1.145175,0.366478,-0.691783, + 0.012548,-0.001301,-0.99992,1.069855,0.397346,-0.688461, + -0.094868,-0.409964,-0.907155,1.067539,0.338617,-0.675897, + -0.094868,-0.409964,-0.907155,1.067539,0.338617,-0.675897, + -0.30711,-0.324628,-0.894595,1.12732,0.306289,-0.678998, + -0.066606,0.01431,-0.997677,1.145175,0.366478,-0.691783, + -0.687216,-0.351805,-0.635584,1.200029,0.142107,-0.654883, + -0.695773,-0.304145,-0.650689,1.235562,0.083949,-0.664066, + -0.420703,-0.10775,-0.900777,1.28017,0.14015,-0.708812, + -0.420703,-0.10775,-0.900777,1.28017,0.14015,-0.708812, + -0.406685,-0.158703,-0.899678,1.236552,0.195985,-0.697124, + -0.687216,-0.351805,-0.635584,1.200029,0.142107,-0.654883, + -0.152737,0.118235,-0.981169,1.3337,0.207591,-0.723727, + -0.127933,0.082246,-0.988367,1.280379,0.26064,-0.711204, + -0.406685,-0.158703,-0.899678,1.236552,0.195985,-0.697124, + -0.152737,0.118235,-0.981169,1.3337,0.207591,-0.723727, + -0.406685,-0.158703,-0.899678,1.236552,0.195985,-0.697124, + -0.420703,-0.10775,-0.900777,1.28017,0.14015,-0.708812, + -0.127933,0.082246,-0.988367,1.280379,0.26064,-0.711204, + -0.106175,0.048409,-0.993168,1.216443,0.317256,-0.69996, + -0.382336,-0.228691,-0.895276,1.18463,0.255055,-0.686629, + -0.382336,-0.228691,-0.895276,1.18463,0.255055,-0.686629, + -0.406685,-0.158703,-0.899678,1.236552,0.195985,-0.697124, + -0.127933,0.082246,-0.988367,1.280379,0.26064,-0.711204, + -0.659424,-0.432639,-0.614804,1.158118,0.203222,-0.646637, + -0.687216,-0.351805,-0.635584,1.200029,0.142107,-0.654883, + -0.406685,-0.158703,-0.899678,1.236552,0.195985,-0.697124, + -0.659424,-0.432639,-0.614804,1.158118,0.203222,-0.646637, + -0.406685,-0.158703,-0.899678,1.236552,0.195985,-0.697124, + -0.382336,-0.228691,-0.895276,1.18463,0.255055,-0.686629, + 0.311074,0.63183,0.709947,1.431839,0.331232,-0.335934, + 0.074097,0.34389,0.936082,1.38723,0.275032,-0.291188, + 0.12092,0.358415,0.925698,1.324207,0.325294,-0.302876, + 0.311074,0.63183,0.709947,1.431839,0.331232,-0.335934, + 0.12092,0.358415,0.925698,1.324207,0.325294,-0.302876, + 0.339667,0.655519,0.674478,1.36073,0.379173,-0.345117, + 0.074097,0.34389,0.936082,1.38723,0.275032,-0.291188, + -0.152737,0.118235,0.981169,1.3337,0.207591,-0.276273, + -0.127934,0.082246,0.988367,1.280379,0.26064,-0.288796, + -0.127934,0.082246,0.988367,1.280379,0.26064,-0.288796, + 0.12092,0.358415,0.925698,1.324207,0.325294,-0.302876, + 0.074097,0.34389,0.936082,1.38723,0.275032,-0.291188, + -0.106175,0.048409,0.993168,1.216443,0.317256,-0.30004, + 0.126992,0.363931,0.922728,1.248257,0.379456,-0.313371, + 0.12092,0.358415,0.925698,1.324207,0.325294,-0.302876, + -0.106175,0.048409,0.993168,1.216443,0.317256,-0.30004, + 0.12092,0.358415,0.925698,1.324207,0.325294,-0.302876, + -0.127934,0.082246,0.988367,1.280379,0.26064,-0.288796, + 0.126992,0.363931,0.922728,1.248257,0.379456,-0.313371, + 0.306584,0.689695,0.655994,1.274769,0.43129,-0.353363, + 0.339667,0.655519,0.674478,1.36073,0.379173,-0.345117, + 0.339667,0.655519,0.674478,1.36073,0.379173,-0.345117, + 0.12092,0.358415,0.925698,1.324207,0.325294,-0.302876, + 0.126992,0.363931,0.922728,1.248257,0.379456,-0.313371, + -0.420703,-0.10775,0.900777,1.28017,0.14015,-0.291188, + -0.695773,-0.304144,0.650689,1.235562,0.083949,-0.335934, + -0.687216,-0.351805,0.635584,1.200029,0.142107,-0.345117, + -0.687216,-0.351805,0.635584,1.200029,0.142107,-0.345117, + -0.406685,-0.158702,0.899678,1.236552,0.195985,-0.302876, + -0.420703,-0.10775,0.900777,1.28017,0.14015,-0.291188, + -0.659424,-0.432639,0.614804,1.158118,0.203222,-0.353363, + -0.382336,-0.228691,0.895276,1.18463,0.255055,-0.313371, + -0.406685,-0.158702,0.899678,1.236552,0.195985,-0.302876, + -0.659424,-0.432639,0.614804,1.158118,0.203222,-0.353363, + -0.406685,-0.158702,0.899678,1.236552,0.195985,-0.302876, + -0.687216,-0.351805,0.635584,1.200029,0.142107,-0.345117, + -0.382336,-0.228691,0.895276,1.18463,0.255055,-0.313371, + -0.106175,0.048409,0.993168,1.216443,0.317256,-0.30004, + -0.127934,0.082246,0.988367,1.280379,0.26064,-0.288796, + -0.127934,0.082246,0.988367,1.280379,0.26064,-0.288796, + -0.406685,-0.158702,0.899678,1.236552,0.195985,-0.302876, + -0.382336,-0.228691,0.895276,1.18463,0.255055,-0.313371, + -0.152737,0.118235,0.981169,1.3337,0.207591,-0.276273, + -0.420703,-0.10775,0.900777,1.28017,0.14015,-0.291188, + -0.406685,-0.158702,0.899678,1.236552,0.195985,-0.302876, + -0.152737,0.118235,0.981169,1.3337,0.207591,-0.276273, + -0.406685,-0.158702,0.899678,1.236552,0.195985,-0.302876, + -0.127934,0.082246,0.988367,1.280379,0.26064,-0.288796, + -0.30458,-0.744204,0.594467,1.065609,0.289676,-0.361795, + -0.094868,-0.409964,0.907155,1.067539,0.338617,-0.324103, + -0.30711,-0.324628,0.894595,1.12732,0.306289,-0.321002, + -0.30458,-0.744204,0.594467,1.065609,0.289676,-0.361795, + -0.30711,-0.324628,0.894595,1.12732,0.306289,-0.321002, + -0.547648,-0.532516,0.645374,1.112441,0.256132,-0.359359, + -0.094868,-0.409964,0.907155,1.067539,0.338617,-0.324103, + 0.012549,-0.001301,0.99992,1.069855,0.397346,-0.311539, + -0.066605,0.01431,0.997677,1.145175,0.366478,-0.308217, + -0.066605,0.01431,0.997677,1.145175,0.366478,-0.308217, + -0.30711,-0.324628,0.894595,1.12732,0.306289,-0.321002, + -0.094868,-0.409964,0.907155,1.067539,0.338617,-0.324103, + -0.106175,0.048409,0.993168,1.216443,0.317256,-0.30004, + -0.382336,-0.228691,0.895276,1.18463,0.255055,-0.313371, + -0.30711,-0.324628,0.894595,1.12732,0.306289,-0.321002, + -0.106175,0.048409,0.993168,1.216443,0.317256,-0.30004, + -0.30711,-0.324628,0.894595,1.12732,0.306289,-0.321002, + -0.066605,0.01431,0.997677,1.145175,0.366478,-0.308217, + -0.382336,-0.228691,0.895276,1.18463,0.255055,-0.313371, + -0.659424,-0.432639,0.614804,1.158118,0.203222,-0.353363, + -0.547648,-0.532516,0.645374,1.112441,0.256132,-0.359359, + -0.547648,-0.532516,0.645374,1.112441,0.256132,-0.359359, + -0.30711,-0.324628,0.894595,1.12732,0.306289,-0.321002, + -0.382336,-0.228691,0.895276,1.18463,0.255055,-0.313371, + 0.076521,0.412911,0.907551,1.072171,0.456076,-0.324103, + 0.08947,0.74633,0.659535,1.074101,0.505017,-0.361795, + 0.225321,0.739198,0.634679,1.177908,0.476825,-0.359359, + 0.225321,0.739198,0.634679,1.177908,0.476825,-0.359359, + 0.115814,0.384301,0.915915,1.163029,0.426667,-0.321002, + 0.076521,0.412911,0.907551,1.072171,0.456076,-0.324103, + 0.306584,0.689695,0.655994,1.274769,0.43129,-0.353363, + 0.126992,0.363931,0.922728,1.248257,0.379456,-0.313371, + 0.115814,0.384301,0.915915,1.163029,0.426667,-0.321002, + 0.306584,0.689695,0.655994,1.274769,0.43129,-0.353363, + 0.115814,0.384301,0.915915,1.163029,0.426667,-0.321002, + 0.225321,0.739198,0.634679,1.177908,0.476825,-0.359359, + 0.126992,0.363931,0.922728,1.248257,0.379456,-0.313371, + -0.106175,0.048409,0.993168,1.216443,0.317256,-0.30004, + -0.066605,0.01431,0.997677,1.145175,0.366478,-0.308217, + -0.066605,0.01431,0.997677,1.145175,0.366478,-0.308217, + 0.115814,0.384301,0.915915,1.163029,0.426667,-0.321002, + 0.126992,0.363931,0.922728,1.248257,0.379456,-0.313371, + 0.012549,-0.001301,0.99992,1.069855,0.397346,-0.311539, + 0.076521,0.412911,0.907551,1.072171,0.456076,-0.324103, + 0.115814,0.384301,0.915915,1.163029,0.426667,-0.321002, + 0.012549,-0.001301,0.99992,1.069855,0.397346,-0.311539, + 0.115814,0.384301,0.915915,1.163029,0.426667,-0.321002, + -0.066605,0.01431,0.997677,1.145175,0.366478,-0.308217, + 0.311074,0.63183,-0.709947,1.431839,0.331232,-0.664066, + 0.460195,0.823869,-0.330849,1.458604,0.364953,-0.589491, + 0.4628,0.825265,-0.323657,1.382643,0.4115,-0.584482, + 0.311074,0.63183,-0.709947,1.431839,0.331232,-0.664066, + 0.4628,0.825265,-0.323657,1.382643,0.4115,-0.584482, + 0.339667,0.655519,-0.674478,1.36073,0.379173,-0.654883, + 0.460195,0.823869,-0.330849,1.458604,0.364953,-0.589491, + 0.489941,0.871755,0,1.467526,0.376193,-0.5, + 0.499794,0.866144,0,1.389948,0.422275,-0.5, + 0.499794,0.866144,0,1.389948,0.422275,-0.5, + 0.4628,0.825265,-0.323657,1.382643,0.4115,-0.584482, + 0.460195,0.823869,-0.330849,1.458604,0.364953,-0.589491, + 0.445921,0.895072,0,1.295978,0.472757,-0.5, + 0.408321,0.858475,-0.310315,1.290676,0.46239,-0.579984, + 0.4628,0.825265,-0.323657,1.382643,0.4115,-0.584482, + 0.445921,0.895072,0,1.295978,0.472757,-0.5, + 0.4628,0.825265,-0.323657,1.382643,0.4115,-0.584482, + 0.499794,0.866144,0,1.389948,0.422275,-0.5, + 0.408321,0.858475,-0.310315,1.290676,0.46239,-0.579984, + 0.306584,0.689695,-0.655994,1.274769,0.43129,-0.646637, + 0.339667,0.655519,-0.674478,1.36073,0.379173,-0.654883, + 0.339667,0.655519,-0.674478,1.36073,0.379173,-0.654883, + 0.4628,0.825265,-0.323657,1.382643,0.4115,-0.584482, + 0.408321,0.858475,-0.310315,1.290676,0.46239,-0.579984, + 0.311074,0.63183,0.709947,1.431839,0.331232,-0.335934, + 0.339667,0.655519,0.674478,1.36073,0.379173,-0.345117, + 0.4628,0.825265,0.323657,1.382643,0.4115,-0.415518, + 0.311074,0.63183,0.709947,1.431839,0.331232,-0.335934, + 0.4628,0.825265,0.323657,1.382643,0.4115,-0.415518, + 0.460195,0.823869,0.330849,1.458604,0.364953,-0.410509, + 0.339667,0.655519,0.674478,1.36073,0.379173,-0.345117, + 0.306584,0.689695,0.655994,1.274769,0.43129,-0.353363, + 0.40832,0.858475,0.310315,1.290676,0.46239,-0.420016, + 0.40832,0.858475,0.310315,1.290676,0.46239,-0.420016, + 0.4628,0.825265,0.323657,1.382643,0.4115,-0.415518, + 0.339667,0.655519,0.674478,1.36073,0.379173,-0.345117, + 0.445921,0.895072,0,1.295978,0.472757,-0.5, + 0.499794,0.866144,0,1.389948,0.422275,-0.5, + 0.4628,0.825265,0.323657,1.382643,0.4115,-0.415518, + 0.445921,0.895072,0,1.295978,0.472757,-0.5, + 0.4628,0.825265,0.323657,1.382643,0.4115,-0.415518, + 0.40832,0.858475,0.310315,1.290676,0.46239,-0.420016, + 0.499794,0.866144,0,1.389948,0.422275,-0.5, + 0.489941,0.871755,0,1.467526,0.376193,-0.5, + 0.460195,0.823869,0.330849,1.458604,0.364953,-0.410509, + 0.460195,0.823869,0.330849,1.458604,0.364953,-0.410509, + 0.4628,0.825265,0.323657,1.382643,0.4115,-0.415518, + 0.499794,0.866144,0,1.389948,0.422275,-0.5, + 0.225321,0.739198,0.634679,1.177908,0.476825,-0.359359, + 0.08947,0.74633,0.659535,1.074101,0.505017,-0.361795, + 0.099282,0.948291,0.301476,1.075259,0.534381,-0.424615, + 0.099282,0.948291,0.301476,1.075259,0.534381,-0.424615, + 0.298199,0.907962,0.294419,1.186836,0.506919,-0.423287, + 0.225321,0.739198,0.634679,1.177908,0.476825,-0.359359, + 0.156232,0.98772,0,1.075645,0.544169,-0.5, + 0.336559,0.941662,0,1.189812,0.516951,-0.5, + 0.298199,0.907962,0.294419,1.186836,0.506919,-0.423287, + 0.156232,0.98772,0,1.075645,0.544169,-0.5, + 0.298199,0.907962,0.294419,1.186836,0.506919,-0.423287, + 0.099282,0.948291,0.301476,1.075259,0.534381,-0.424615, + 0.336559,0.941662,0,1.189812,0.516951,-0.5, + 0.445921,0.895072,0,1.295978,0.472757,-0.5, + 0.40832,0.858475,0.310315,1.290676,0.46239,-0.420016, + 0.40832,0.858475,0.310315,1.290676,0.46239,-0.420016, + 0.298199,0.907962,0.294419,1.186836,0.506919,-0.423287, + 0.336559,0.941662,0,1.189812,0.516951,-0.5, + 0.306584,0.689695,0.655994,1.274769,0.43129,-0.353363, + 0.225321,0.739198,0.634679,1.177908,0.476825,-0.359359, + 0.298199,0.907962,0.294419,1.186836,0.506919,-0.423287, + 0.306584,0.689695,0.655994,1.274769,0.43129,-0.353363, + 0.298199,0.907962,0.294419,1.186836,0.506919,-0.423287, + 0.40832,0.858475,0.310315,1.290676,0.46239,-0.420016, + 0.099282,0.948291,-0.301476,1.075259,0.534381,-0.575384, + 0.08947,0.74633,-0.659535,1.074101,0.505017,-0.638205, + 0.225321,0.739198,-0.634679,1.177908,0.476825,-0.640641, + 0.225321,0.739198,-0.634679,1.177908,0.476825,-0.640641, + 0.298199,0.907962,-0.294419,1.186836,0.506919,-0.576713, + 0.099282,0.948291,-0.301476,1.075259,0.534381,-0.575384, + 0.306584,0.689695,-0.655994,1.274769,0.43129,-0.646637, + 0.408321,0.858475,-0.310315,1.290676,0.46239,-0.579984, + 0.298199,0.907962,-0.294419,1.186836,0.506919,-0.576713, + 0.306584,0.689695,-0.655994,1.274769,0.43129,-0.646637, + 0.298199,0.907962,-0.294419,1.186836,0.506919,-0.576713, + 0.225321,0.739198,-0.634679,1.177908,0.476825,-0.640641, + 0.408321,0.858475,-0.310315,1.290676,0.46239,-0.579984, + 0.445921,0.895072,0,1.295978,0.472757,-0.5, + 0.336559,0.941662,0,1.189812,0.516951,-0.5, + 0.336559,0.941662,0,1.189812,0.516951,-0.5, + 0.298199,0.907962,-0.294419,1.186836,0.506919,-0.576713, + 0.408321,0.858475,-0.310315,1.290676,0.46239,-0.579984, + 0.156232,0.98772,0,1.075645,0.544169,-0.5, + 0.099282,0.948291,-0.301476,1.075259,0.534381,-0.575384, + 0.298199,0.907962,-0.294419,1.186836,0.506919,-0.576713, + 0.156232,0.98772,0,1.075645,0.544169,-0.5, + 0.298199,0.907962,-0.294419,1.186836,0.506919,-0.576713, + 0.336559,0.941662,0,1.189812,0.516951,-0.5, + -0.199176,0.745044,-0.636583,0.769932,0.456132,-0.654883, + -0.218035,0.735069,-0.641977,0.691977,0.424648,-0.664066, + -0.042916,0.448451,-0.892776,0.741552,0.375033,-0.708812, + -0.042916,0.448451,-0.892776,0.741552,0.375033,-0.708812, + -0.044996,0.438512,-0.897598,0.808756,0.407522,-0.697124, + -0.199176,0.745044,-0.636583,0.769932,0.456132,-0.654883, + 0.160738,0.160922,-0.97379,0.801042,0.315496,-0.723727, + 0.142808,0.115868,-0.982945,0.855345,0.34919,-0.711204, + -0.044996,0.438512,-0.897598,0.808756,0.407522,-0.697124, + 0.160738,0.160922,-0.97379,0.801042,0.315496,-0.723727, + -0.044996,0.438512,-0.897598,0.808756,0.407522,-0.697124, + -0.042916,0.448451,-0.892776,0.741552,0.375033,-0.708812, + 0.142808,0.115868,-0.982945,0.855345,0.34919,-0.711204, + 0.124797,0.069981,-0.989711,0.920924,0.379919,-0.69996, + -0.024081,0.437847,-0.898727,0.88977,0.437716,-0.686629, + -0.024081,0.437847,-0.898727,0.88977,0.437716,-0.686629, + -0.044996,0.438512,-0.897598,0.808756,0.407522,-0.697124, + 0.142808,0.115868,-0.982945,0.855345,0.34919,-0.711204, + -0.142137,0.766468,-0.626358,0.863808,0.485881,-0.646637, + -0.199176,0.745044,-0.636583,0.769932,0.456132,-0.654883, + -0.044996,0.438512,-0.897598,0.808756,0.407522,-0.697124, + -0.142137,0.766468,-0.626358,0.863808,0.485881,-0.646637, + -0.044996,0.438512,-0.897598,0.808756,0.407522,-0.697124, + -0.024081,0.437847,-0.898727,0.88977,0.437716,-0.686629, + 0.398283,-0.122544,-0.90904,0.860532,0.255958,-0.708812, + 0.66282,-0.338306,-0.667996,0.910107,0.206343,-0.664066, + 0.585878,-0.414463,-0.696396,0.940757,0.242249,-0.654883, + 0.585878,-0.414463,-0.696396,0.940757,0.242249,-0.654883, + 0.362669,-0.212082,-0.907465,0.901933,0.290859,-0.697124, + 0.398283,-0.122544,-0.90904,0.860532,0.255958,-0.708812, + 0.514373,-0.562786,-0.647064,0.978041,0.273957,-0.646637, + 0.281388,-0.318777,-0.905098,0.952079,0.322122,-0.686629, + 0.362669,-0.212082,-0.907465,0.901933,0.290859,-0.697124, + 0.514373,-0.562786,-0.647064,0.978041,0.273957,-0.646637, + 0.362669,-0.212082,-0.907465,0.901933,0.290859,-0.697124, + 0.585878,-0.414463,-0.696396,0.940757,0.242249,-0.654883, + 0.124797,0.069981,-0.989711,0.920924,0.379919,-0.69996, + 0.142808,0.115868,-0.982945,0.855345,0.34919,-0.711204, + 0.362669,-0.212082,-0.907465,0.901933,0.290859,-0.697124, + 0.124797,0.069981,-0.989711,0.920924,0.379919,-0.69996, + 0.362669,-0.212082,-0.907465,0.901933,0.290859,-0.697124, + 0.281388,-0.318777,-0.905098,0.952079,0.322122,-0.686629, + 0.142808,0.115868,-0.982945,0.855345,0.34919,-0.711204, + 0.160738,0.160922,-0.97379,0.801042,0.315496,-0.723727, + 0.398283,-0.122544,-0.90904,0.860532,0.255958,-0.708812, + 0.398283,-0.122544,-0.90904,0.860532,0.255958,-0.708812, + 0.362669,-0.212082,-0.907465,0.901933,0.290859,-0.697124, + 0.142808,0.115868,-0.982945,0.855345,0.34919,-0.711204, + 0.223486,-0.713834,-0.663698,1.020234,0.292692,-0.640641, + -0.30458,-0.744204,-0.594467,1.065609,0.289676,-0.638205, + -0.094868,-0.409964,-0.907155,1.067539,0.338617,-0.675897, + -0.094868,-0.409964,-0.907155,1.067539,0.338617,-0.675897, + 0.118719,-0.361063,-0.924954,1.008203,0.340968,-0.678998, + 0.223486,-0.713834,-0.663698,1.020234,0.292692,-0.640641, + 0.012548,-0.001301,-0.99992,1.069855,0.397346,-0.688461, + 0.086047,0.023651,-0.99601,0.993766,0.398899,-0.691783, + 0.118719,-0.361063,-0.924954,1.008203,0.340968,-0.678998, + 0.012548,-0.001301,-0.99992,1.069855,0.397346,-0.688461, + 0.118719,-0.361063,-0.924954,1.008203,0.340968,-0.678998, + -0.094868,-0.409964,-0.907155,1.067539,0.338617,-0.675897, + 0.086047,0.023651,-0.99601,0.993766,0.398899,-0.691783, + 0.124797,0.069981,-0.989711,0.920924,0.379919,-0.69996, + 0.281388,-0.318777,-0.905098,0.952079,0.322122,-0.686629, + 0.281388,-0.318777,-0.905098,0.952079,0.322122,-0.686629, + 0.118719,-0.361063,-0.924954,1.008203,0.340968,-0.678998, + 0.086047,0.023651,-0.99601,0.993766,0.398899,-0.691783, + 0.281388,-0.318777,-0.905098,0.952079,0.322122,-0.686629, + 0.514373,-0.562786,-0.647064,0.978041,0.273957,-0.646637, + 0.223486,-0.713834,-0.663698,1.020234,0.292692,-0.640641, + 0.223486,-0.713834,-0.663698,1.020234,0.292692,-0.640641, + 0.118719,-0.361063,-0.924954,1.008203,0.340968,-0.678998, + 0.281388,-0.318777,-0.905098,0.952079,0.322122,-0.686629, + 0.08947,0.74633,-0.659535,1.074101,0.505017,-0.638205, + -0.041682,0.78334,-0.620195,0.967299,0.505105,-0.640641, + 0.017449,0.433004,-0.901223,0.97933,0.45683,-0.678998, + 0.08947,0.74633,-0.659535,1.074101,0.505017,-0.638205, + 0.017449,0.433004,-0.901223,0.97933,0.45683,-0.678998, + 0.076521,0.412911,-0.907551,1.072171,0.456076,-0.675897, + -0.041682,0.78334,-0.620195,0.967299,0.505105,-0.640641, + -0.142137,0.766468,-0.626358,0.863808,0.485881,-0.646637, + -0.024081,0.437847,-0.898727,0.88977,0.437716,-0.686629, + -0.024081,0.437847,-0.898727,0.88977,0.437716,-0.686629, + 0.017449,0.433004,-0.901223,0.97933,0.45683,-0.678998, + -0.041682,0.78334,-0.620195,0.967299,0.505105,-0.640641, + 0.124797,0.069981,-0.989711,0.920924,0.379919,-0.69996, + 0.086047,0.023651,-0.99601,0.993766,0.398899,-0.691783, + 0.017449,0.433004,-0.901223,0.97933,0.45683,-0.678998, + 0.124797,0.069981,-0.989711,0.920924,0.379919,-0.69996, + 0.017449,0.433004,-0.901223,0.97933,0.45683,-0.678998, + -0.024081,0.437847,-0.898727,0.88977,0.437716,-0.686629, + 0.086047,0.023651,-0.99601,0.993766,0.398899,-0.691783, + 0.012548,-0.001301,-0.99992,1.069855,0.397346,-0.688461, + 0.076521,0.412911,-0.907551,1.072171,0.456076,-0.675897, + 0.076521,0.412911,-0.907551,1.072171,0.456076,-0.675897, + 0.017449,0.433004,-0.901223,0.97933,0.45683,-0.678998, + 0.086047,0.023651,-0.99601,0.993766,0.398899,-0.691783, + -0.218035,0.735069,-0.641977,0.691977,0.424648,-0.664066, + -0.199176,0.745044,-0.636583,0.769932,0.456132,-0.654883, + -0.283565,0.912815,-0.293871,0.746638,0.485298,-0.584482, + -0.218035,0.735069,-0.641977,0.691977,0.424648,-0.664066, + -0.283565,0.912815,-0.293871,0.746638,0.485298,-0.584482, + -0.31842,0.898971,-0.300764,0.662233,0.454417,-0.589491, + -0.199176,0.745044,-0.636583,0.769932,0.456132,-0.654883, + -0.142137,0.766468,-0.626358,0.863808,0.485881,-0.646637, + -0.20497,0.936687,-0.283911,0.848231,0.51478,-0.579984, + -0.20497,0.936687,-0.283911,0.848231,0.51478,-0.579984, + -0.283565,0.912815,-0.293871,0.746638,0.485298,-0.584482, + -0.199176,0.745044,-0.636583,0.769932,0.456132,-0.654883, + -0.237278,0.971442,0,0.843038,0.524412,-0.5, + -0.314129,0.94938,0,0.738873,0.49502,-0.5, + -0.283565,0.912815,-0.293871,0.746638,0.485298,-0.584482, + -0.237278,0.971442,0,0.843038,0.524412,-0.5, + -0.283565,0.912815,-0.293871,0.746638,0.485298,-0.584482, + -0.20497,0.936687,-0.283911,0.848231,0.51478,-0.579984, + -0.314129,0.94938,0,0.738873,0.49502,-0.5, + -0.346116,0.938192,0,0.652318,0.46434,-0.5, + -0.31842,0.898971,-0.300764,0.662233,0.454417,-0.589491, + -0.31842,0.898971,-0.300764,0.662233,0.454417,-0.589491, + -0.283565,0.912815,-0.293871,0.746638,0.485298,-0.584482, + -0.314129,0.94938,0,0.738873,0.49502,-0.5, + -0.041682,0.78334,-0.620195,0.967299,0.505105,-0.640641, + 0.08947,0.74633,-0.659535,1.074101,0.505017,-0.638205, + 0.099282,0.948291,-0.301476,1.075259,0.534381,-0.575384, + 0.099282,0.948291,-0.301476,1.075259,0.534381,-0.575384, + -0.090849,0.947666,-0.306066,0.960081,0.534071,-0.576713, + -0.041682,0.78334,-0.620195,0.967299,0.505105,-0.640641, + 0.099282,0.948291,-0.301476,1.075259,0.534381,-0.575384, + 0.156232,0.98772,0,1.075645,0.544169,-0.5, + -0.084634,0.996412,0,0.957675,0.543726,-0.5, + -0.084634,0.996412,0,0.957675,0.543726,-0.5, + -0.090849,0.947666,-0.306066,0.960081,0.534071,-0.576713, + 0.099282,0.948291,-0.301476,1.075259,0.534381,-0.575384, + -0.084634,0.996412,0,0.957675,0.543726,-0.5, + -0.237278,0.971442,0,0.843038,0.524412,-0.5, + -0.20497,0.936687,-0.283911,0.848231,0.51478,-0.579984, + -0.20497,0.936687,-0.283911,0.848231,0.51478,-0.579984, + -0.090849,0.947666,-0.306066,0.960081,0.534071,-0.576713, + -0.084634,0.996412,0,0.957675,0.543726,-0.5, + -0.142137,0.766468,-0.626358,0.863808,0.485881,-0.646637, + -0.041682,0.78334,-0.620195,0.967299,0.505105,-0.640641, + -0.090849,0.947666,-0.306066,0.960081,0.534071,-0.576713, + -0.142137,0.766468,-0.626358,0.863808,0.485881,-0.646637, + -0.090849,0.947666,-0.306066,0.960081,0.534071,-0.576713, + -0.20497,0.936687,-0.283911,0.848231,0.51478,-0.579984, + 0.099282,0.948291,0.301476,1.075259,0.534381,-0.424615, + 0.08947,0.74633,0.659535,1.074101,0.505017,-0.361795, + -0.041682,0.78334,0.620195,0.967299,0.505105,-0.359359, + -0.041682,0.78334,0.620195,0.967299,0.505105,-0.359359, + -0.090849,0.947666,0.306066,0.960081,0.534071,-0.423287, + 0.099282,0.948291,0.301476,1.075259,0.534381,-0.424615, + -0.142137,0.766468,0.626358,0.863808,0.485881,-0.353363, + -0.20497,0.936687,0.283911,0.848231,0.51478,-0.420016, + -0.090849,0.947666,0.306066,0.960081,0.534071,-0.423287, + -0.142137,0.766468,0.626358,0.863808,0.485881,-0.353363, + -0.090849,0.947666,0.306066,0.960081,0.534071,-0.423287, + -0.041682,0.78334,0.620195,0.967299,0.505105,-0.359359, + -0.20497,0.936687,0.283911,0.848231,0.51478,-0.420016, + -0.237278,0.971442,0,0.843038,0.524412,-0.5, + -0.084634,0.996412,0,0.957675,0.543726,-0.5, + -0.084634,0.996412,0,0.957675,0.543726,-0.5, + -0.090849,0.947666,0.306066,0.960081,0.534071,-0.423287, + -0.20497,0.936687,0.283911,0.848231,0.51478,-0.420016, + -0.084634,0.996412,0,0.957675,0.543726,-0.5, + 0.156232,0.98772,0,1.075645,0.544169,-0.5, + 0.099282,0.948291,0.301476,1.075259,0.534381,-0.424615, + 0.099282,0.948291,0.301476,1.075259,0.534381,-0.424615, + -0.090849,0.947666,0.306066,0.960081,0.534071,-0.423287, + -0.084634,0.996412,0,0.957675,0.543726,-0.5, + -0.218035,0.735069,0.641977,0.691977,0.424648,-0.335934, + -0.318419,0.898972,0.300764,0.662233,0.454417,-0.410509, + -0.283565,0.912815,0.293871,0.746638,0.485298,-0.415518, + -0.218035,0.735069,0.641977,0.691977,0.424648,-0.335934, + -0.283565,0.912815,0.293871,0.746638,0.485298,-0.415518, + -0.199176,0.745044,0.636583,0.769932,0.456132,-0.345117, + -0.318419,0.898972,0.300764,0.662233,0.454417,-0.410509, + -0.346116,0.938192,0,0.652318,0.46434,-0.5, + -0.314129,0.94938,0,0.738873,0.49502,-0.5, + -0.314129,0.94938,0,0.738873,0.49502,-0.5, + -0.283565,0.912815,0.293871,0.746638,0.485298,-0.415518, + -0.318419,0.898972,0.300764,0.662233,0.454417,-0.410509, + -0.237278,0.971442,0,0.843038,0.524412,-0.5, + -0.20497,0.936687,0.283911,0.848231,0.51478,-0.420016, + -0.283565,0.912815,0.293871,0.746638,0.485298,-0.415518, + -0.237278,0.971442,0,0.843038,0.524412,-0.5, + -0.283565,0.912815,0.293871,0.746638,0.485298,-0.415518, + -0.314129,0.94938,0,0.738873,0.49502,-0.5, + -0.20497,0.936687,0.283911,0.848231,0.51478,-0.420016, + -0.142137,0.766468,0.626358,0.863808,0.485881,-0.353363, + -0.199176,0.745044,0.636583,0.769932,0.456132,-0.345117, + -0.199176,0.745044,0.636583,0.769932,0.456132,-0.345117, + -0.283565,0.912815,0.293871,0.746638,0.485298,-0.415518, + -0.20497,0.936687,0.283911,0.848231,0.51478,-0.420016, + -0.042916,0.448451,0.892776,0.741552,0.375033,-0.291188, + -0.218035,0.735069,0.641977,0.691977,0.424648,-0.335934, + -0.199176,0.745044,0.636583,0.769932,0.456132,-0.345117, + -0.199176,0.745044,0.636583,0.769932,0.456132,-0.345117, + -0.044996,0.438512,0.897598,0.808756,0.407522,-0.302876, + -0.042916,0.448451,0.892776,0.741552,0.375033,-0.291188, + -0.142137,0.766468,0.626358,0.863808,0.485881,-0.353363, + -0.024081,0.437847,0.898727,0.88977,0.437716,-0.313371, + -0.044996,0.438512,0.897598,0.808756,0.407522,-0.302876, + -0.142137,0.766468,0.626358,0.863808,0.485881,-0.353363, + -0.044996,0.438512,0.897598,0.808756,0.407522,-0.302876, + -0.199176,0.745044,0.636583,0.769932,0.456132,-0.345117, + -0.024081,0.437847,0.898727,0.88977,0.437716,-0.313371, + 0.124797,0.069981,0.989711,0.920924,0.379919,-0.30004, + 0.142808,0.115868,0.982945,0.855345,0.34919,-0.288796, + 0.142808,0.115868,0.982945,0.855345,0.34919,-0.288796, + -0.044996,0.438512,0.897598,0.808756,0.407522,-0.302876, + -0.024081,0.437847,0.898727,0.88977,0.437716,-0.313371, + 0.160738,0.160922,0.97379,0.801042,0.315496,-0.276273, + -0.042916,0.448451,0.892776,0.741552,0.375033,-0.291188, + -0.044996,0.438512,0.897598,0.808756,0.407522,-0.302876, + 0.160738,0.160922,0.97379,0.801042,0.315496,-0.276273, + -0.044996,0.438512,0.897598,0.808756,0.407522,-0.302876, + 0.142808,0.115868,0.982945,0.855345,0.34919,-0.288796, + 0.08947,0.74633,0.659535,1.074101,0.505017,-0.361795, + 0.076521,0.412911,0.907551,1.072171,0.456076,-0.324103, + 0.017449,0.433004,0.901223,0.97933,0.45683,-0.321002, + 0.08947,0.74633,0.659535,1.074101,0.505017,-0.361795, + 0.017449,0.433004,0.901223,0.97933,0.45683,-0.321002, + -0.041682,0.78334,0.620195,0.967299,0.505105,-0.359359, + 0.076521,0.412911,0.907551,1.072171,0.456076,-0.324103, + 0.012549,-0.001301,0.99992,1.069855,0.397346,-0.311539, + 0.086047,0.023651,0.99601,0.993766,0.398899,-0.308217, + 0.086047,0.023651,0.99601,0.993766,0.398899,-0.308217, + 0.017449,0.433004,0.901223,0.97933,0.45683,-0.321002, + 0.076521,0.412911,0.907551,1.072171,0.456076,-0.324103, + 0.124797,0.069981,0.989711,0.920924,0.379919,-0.30004, + -0.024081,0.437847,0.898727,0.88977,0.437716,-0.313371, + 0.017449,0.433004,0.901223,0.97933,0.45683,-0.321002, + 0.124797,0.069981,0.989711,0.920924,0.379919,-0.30004, + 0.017449,0.433004,0.901223,0.97933,0.45683,-0.321002, + 0.086047,0.023651,0.99601,0.993766,0.398899,-0.308217, + -0.024081,0.437847,0.898727,0.88977,0.437716,-0.313371, + -0.142137,0.766468,0.626358,0.863808,0.485881,-0.353363, + -0.041682,0.78334,0.620195,0.967299,0.505105,-0.359359, + -0.041682,0.78334,0.620195,0.967299,0.505105,-0.359359, + 0.017449,0.433004,0.901223,0.97933,0.45683,-0.321002, + -0.024081,0.437847,0.898727,0.88977,0.437716,-0.313371, + -0.094868,-0.409964,0.907155,1.067539,0.338617,-0.324103, + -0.30458,-0.744204,0.594467,1.065609,0.289676,-0.361795, + 0.223486,-0.713834,0.663698,1.020234,0.292692,-0.359359, + 0.223486,-0.713834,0.663698,1.020234,0.292692,-0.359359, + 0.118719,-0.361063,0.924954,1.008203,0.340968,-0.321002, + -0.094868,-0.409964,0.907155,1.067539,0.338617,-0.324103, + 0.223486,-0.713834,0.663698,1.020234,0.292692,-0.359359, + 0.514373,-0.562786,0.647064,0.978041,0.273957,-0.353363, + 0.281389,-0.318776,0.905098,0.952079,0.322122,-0.313371, + 0.281389,-0.318776,0.905098,0.952079,0.322122,-0.313371, + 0.118719,-0.361063,0.924954,1.008203,0.340968,-0.321002, + 0.223486,-0.713834,0.663698,1.020234,0.292692,-0.359359, + 0.281389,-0.318776,0.905098,0.952079,0.322122,-0.313371, + 0.124797,0.069981,0.989711,0.920924,0.379919,-0.30004, + 0.086047,0.023651,0.99601,0.993766,0.398899,-0.308217, + 0.086047,0.023651,0.99601,0.993766,0.398899,-0.308217, + 0.118719,-0.361063,0.924954,1.008203,0.340968,-0.321002, + 0.281389,-0.318776,0.905098,0.952079,0.322122,-0.313371, + 0.012549,-0.001301,0.99992,1.069855,0.397346,-0.311539, + -0.094868,-0.409964,0.907155,1.067539,0.338617,-0.324103, + 0.118719,-0.361063,0.924954,1.008203,0.340968,-0.321002, + 0.012549,-0.001301,0.99992,1.069855,0.397346,-0.311539, + 0.118719,-0.361063,0.924954,1.008203,0.340968,-0.321002, + 0.086047,0.023651,0.99601,0.993766,0.398899,-0.308217, + 0.585878,-0.414463,0.696396,0.940757,0.242249,-0.345117, + 0.66282,-0.338306,0.667996,0.910107,0.206343,-0.335934, + 0.398283,-0.122544,0.90904,0.860532,0.255958,-0.291188, + 0.398283,-0.122544,0.90904,0.860532,0.255958,-0.291188, + 0.362669,-0.212082,0.907465,0.901933,0.290859,-0.302876, + 0.585878,-0.414463,0.696396,0.940757,0.242249,-0.345117, + 0.398283,-0.122544,0.90904,0.860532,0.255958,-0.291188, + 0.160738,0.160922,0.97379,0.801042,0.315496,-0.276273, + 0.142808,0.115868,0.982945,0.855345,0.34919,-0.288796, + 0.142808,0.115868,0.982945,0.855345,0.34919,-0.288796, + 0.362669,-0.212082,0.907465,0.901933,0.290859,-0.302876, + 0.398283,-0.122544,0.90904,0.860532,0.255958,-0.291188, + 0.124797,0.069981,0.989711,0.920924,0.379919,-0.30004, + 0.281389,-0.318776,0.905098,0.952079,0.322122,-0.313371, + 0.362669,-0.212082,0.907465,0.901933,0.290859,-0.302876, + 0.124797,0.069981,0.989711,0.920924,0.379919,-0.30004, + 0.362669,-0.212082,0.907465,0.901933,0.290859,-0.302876, + 0.142808,0.115868,0.982945,0.855345,0.34919,-0.288796, + 0.514373,-0.562786,0.647064,0.978041,0.273957,-0.353363, + 0.585878,-0.414463,0.696396,0.940757,0.242249,-0.345117, + 0.362669,-0.212082,0.907465,0.901933,0.290859,-0.302876, + 0.514373,-0.562786,0.647064,0.978041,0.273957,-0.353363, + 0.362669,-0.212082,0.907465,0.901933,0.290859,-0.302876, + 0.281389,-0.318776,0.905098,0.952079,0.322122,-0.313371, + 0.66282,-0.338306,0.667996,0.910107,0.206343,-0.335934, + 0.585878,-0.414463,0.696396,0.940757,0.242249,-0.345117, + 0.748153,-0.579603,0.322997,0.964051,0.213083,-0.415518, + 0.66282,-0.338306,0.667996,0.910107,0.206343,-0.335934, + 0.748153,-0.579603,0.322997,0.964051,0.213083,-0.415518, + 0.828154,-0.461264,0.318428,0.939852,0.176575,-0.410509, + 0.514373,-0.562786,0.647064,0.978041,0.273957,-0.353363, + 0.575394,-0.755507,0.31326,0.993618,0.245059,-0.420016, + 0.748153,-0.579603,0.322997,0.964051,0.213083,-0.415518, + 0.514373,-0.562786,0.647064,0.978041,0.273957,-0.353363, + 0.748153,-0.579603,0.322997,0.964051,0.213083,-0.415518, + 0.585878,-0.414463,0.696396,0.940757,0.242249,-0.345117, + 0.637531,-0.770425,0,0.998811,0.235426,-0.5, + 0.82345,-0.567389,0,0.971816,0.203361,-0.5, + 0.748153,-0.579603,0.322997,0.964051,0.213083,-0.415518, + 0.637531,-0.770425,0,0.998811,0.235426,-0.5, + 0.748153,-0.579603,0.322997,0.964051,0.213083,-0.415518, + 0.575394,-0.755507,0.31326,0.993618,0.245059,-0.420016, + 0.82345,-0.567389,0,0.971816,0.203361,-0.5, + 0.879883,-0.475191,0,0.949767,0.166652,-0.5, + 0.828154,-0.461264,0.318428,0.939852,0.176575,-0.410509, + 0.828154,-0.461264,0.318428,0.939852,0.176575,-0.410509, + 0.748153,-0.579603,0.322997,0.964051,0.213083,-0.415518, + 0.82345,-0.567389,0,0.971816,0.203361,-0.5, + -0.30458,-0.744204,0.594467,1.065609,0.289676,-0.361795, + -0.393741,-0.892942,0.218225,1.064451,0.260311,-0.424615, + 0.224558,-0.931869,0.284944,1.027452,0.263727,-0.423287, + -0.30458,-0.744204,0.594467,1.065609,0.289676,-0.361795, + 0.224558,-0.931869,0.284944,1.027452,0.263727,-0.423287, + 0.223486,-0.713834,0.663698,1.020234,0.292692,-0.359359, + -0.393741,-0.892942,0.218225,1.064451,0.260311,-0.424615, + -0.417976,-0.908458,0,1.064065,0.250523,-0.5, + 0.113113,-0.993582,0,1.029858,0.254072,-0.5, + 0.113113,-0.993582,0,1.029858,0.254072,-0.5, + 0.224558,-0.931869,0.284944,1.027452,0.263727,-0.423287, + -0.393741,-0.892942,0.218225,1.064451,0.260311,-0.424615, + 0.637531,-0.770425,0,0.998811,0.235426,-0.5, + 0.575394,-0.755507,0.31326,0.993618,0.245059,-0.420016, + 0.224558,-0.931869,0.284944,1.027452,0.263727,-0.423287, + 0.637531,-0.770425,0,0.998811,0.235426,-0.5, + 0.224558,-0.931869,0.284944,1.027452,0.263727,-0.423287, + 0.113113,-0.993582,0,1.029858,0.254072,-0.5, + 0.575394,-0.755507,0.31326,0.993618,0.245059,-0.420016, + 0.514373,-0.562786,0.647064,0.978041,0.273957,-0.353363, + 0.223486,-0.713834,0.663698,1.020234,0.292692,-0.359359, + 0.223486,-0.713834,0.663698,1.020234,0.292692,-0.359359, + 0.224558,-0.931869,0.284944,1.027452,0.263727,-0.423287, + 0.575394,-0.755507,0.31326,0.993618,0.245059,-0.420016, + -0.30458,-0.744204,-0.594467,1.065609,0.289676,-0.638205, + 0.223486,-0.713834,-0.663698,1.020234,0.292692,-0.640641, + 0.224558,-0.931869,-0.284944,1.027452,0.263727,-0.576713, + -0.30458,-0.744204,-0.594467,1.065609,0.289676,-0.638205, + 0.224558,-0.931869,-0.284944,1.027452,0.263727,-0.576713, + -0.39374,-0.892943,-0.218225,1.064451,0.260311,-0.575384, + 0.223486,-0.713834,-0.663698,1.020234,0.292692,-0.640641, + 0.514373,-0.562786,-0.647064,0.978041,0.273957,-0.646637, + 0.575393,-0.755507,-0.31326,0.993618,0.245059,-0.579984, + 0.575393,-0.755507,-0.31326,0.993618,0.245059,-0.579984, + 0.224558,-0.931869,-0.284944,1.027452,0.263727,-0.576713, + 0.223486,-0.713834,-0.663698,1.020234,0.292692,-0.640641, + 0.637531,-0.770425,0,0.998811,0.235426,-0.5, + 0.113113,-0.993582,0,1.029858,0.254072,-0.5, + 0.224558,-0.931869,-0.284944,1.027452,0.263727,-0.576713, + 0.637531,-0.770425,0,0.998811,0.235426,-0.5, + 0.224558,-0.931869,-0.284944,1.027452,0.263727,-0.576713, + 0.575393,-0.755507,-0.31326,0.993618,0.245059,-0.579984, + 0.113113,-0.993582,0,1.029858,0.254072,-0.5, + -0.417976,-0.908458,0,1.064065,0.250523,-0.5, + -0.39374,-0.892943,-0.218225,1.064451,0.260311,-0.575384, + -0.39374,-0.892943,-0.218225,1.064451,0.260311,-0.575384, + 0.224558,-0.931869,-0.284944,1.027452,0.263727,-0.576713, + 0.113113,-0.993582,0,1.029858,0.254072,-0.5, + 0.66282,-0.338306,-0.667996,0.910107,0.206343,-0.664066, + 0.828154,-0.461264,-0.318429,0.939852,0.176575,-0.589491, + 0.748153,-0.579603,-0.322997,0.964051,0.213083,-0.584482, + 0.66282,-0.338306,-0.667996,0.910107,0.206343,-0.664066, + 0.748153,-0.579603,-0.322997,0.964051,0.213083,-0.584482, + 0.585878,-0.414463,-0.696396,0.940757,0.242249,-0.654883, + 0.828154,-0.461264,-0.318429,0.939852,0.176575,-0.589491, + 0.879883,-0.475191,0,0.949767,0.166652,-0.5, + 0.82345,-0.567389,0,0.971816,0.203361,-0.5, + 0.82345,-0.567389,0,0.971816,0.203361,-0.5, + 0.748153,-0.579603,-0.322997,0.964051,0.213083,-0.584482, + 0.828154,-0.461264,-0.318429,0.939852,0.176575,-0.589491, + 0.637531,-0.770425,0,0.998811,0.235426,-0.5, + 0.575393,-0.755507,-0.31326,0.993618,0.245059,-0.579984, + 0.748153,-0.579603,-0.322997,0.964051,0.213083,-0.584482, + 0.637531,-0.770425,0,0.998811,0.235426,-0.5, + 0.748153,-0.579603,-0.322997,0.964051,0.213083,-0.584482, + 0.82345,-0.567389,0,0.971816,0.203361,-0.5, + 0.514373,-0.562786,-0.647064,0.978041,0.273957,-0.646637, + 0.585878,-0.414463,-0.696396,0.940757,0.242249,-0.654883, + 0.748153,-0.579603,-0.322997,0.964051,0.213083,-0.584482, + 0.514373,-0.562786,-0.647064,0.978041,0.273957,-0.646637, + 0.748153,-0.579603,-0.322997,0.964051,0.213083,-0.584482, + 0.575393,-0.755507,-0.31326,0.993618,0.245059,-0.579984, + 0.65574,-0.380493,0.652097,0.887817,0.175019,-0.327123, + 0.66282,-0.338306,0.667996,0.910107,0.206343,-0.335934, + 0.828154,-0.461264,0.318428,0.939852,0.176575,-0.410509, + 0.828154,-0.461264,0.318428,0.939852,0.176575,-0.410509, + 0.788892,-0.514111,0.336659,0.922122,0.14431,-0.405704, + 0.65574,-0.380493,0.652097,0.887817,0.175019,-0.327123, + 0.879883,-0.475191,0,0.949767,0.166652,-0.5, + 0.818537,-0.574454,0,0.933557,0.134073,-0.5, + 0.788892,-0.514111,0.336659,0.922122,0.14431,-0.405704, + 0.879883,-0.475191,0,0.949767,0.166652,-0.5, + 0.788892,-0.514111,0.336659,0.922122,0.14431,-0.405704, + 0.828154,-0.461264,0.318428,0.939852,0.176575,-0.410509, + 0.818537,-0.574454,0,0.933557,0.134073,-0.5, + 0.394485,-0.918903,0,0.915792,0.112008,-0.5, + 0.520237,-0.801686,0.294369,0.90384,0.122594,-0.405051, + 0.520237,-0.801686,0.294369,0.90384,0.122594,-0.405051, + 0.788892,-0.514111,0.336659,0.922122,0.14431,-0.405704, + 0.818537,-0.574454,0,0.933557,0.134073,-0.5, + 0.31991,-0.691022,0.648187,0.867858,0.153664,-0.325812, + 0.65574,-0.380493,0.652097,0.887817,0.175019,-0.327123, + 0.788892,-0.514111,0.336659,0.922122,0.14431,-0.405704, + 0.31991,-0.691022,0.648187,0.867858,0.153664,-0.325812, + 0.788892,-0.514111,0.336659,0.922122,0.14431,-0.405704, + 0.520237,-0.801686,0.294369,0.90384,0.122594,-0.405051, + 0.828154,-0.461264,-0.318429,0.939852,0.176575,-0.589491, + 0.66282,-0.338306,-0.667996,0.910107,0.206343,-0.664066, + 0.65574,-0.380493,-0.652097,0.887817,0.175019,-0.672877, + 0.65574,-0.380493,-0.652097,0.887817,0.175019,-0.672877, + 0.788892,-0.514111,-0.336659,0.922122,0.14431,-0.594296, + 0.828154,-0.461264,-0.318429,0.939852,0.176575,-0.589491, + 0.31991,-0.691022,-0.648187,0.867858,0.153664,-0.674188, + 0.520237,-0.801686,-0.29437,0.90384,0.122594,-0.594949, + 0.788892,-0.514111,-0.336659,0.922122,0.14431,-0.594296, + 0.31991,-0.691022,-0.648187,0.867858,0.153664,-0.674188, + 0.788892,-0.514111,-0.336659,0.922122,0.14431,-0.594296, + 0.65574,-0.380493,-0.652097,0.887817,0.175019,-0.672877, + 0.520237,-0.801686,-0.29437,0.90384,0.122594,-0.594949, + 0.394485,-0.918903,0,0.915792,0.112008,-0.5, + 0.818537,-0.574454,0,0.933557,0.134073,-0.5, + 0.818537,-0.574454,0,0.933557,0.134073,-0.5, + 0.788892,-0.514111,-0.336659,0.922122,0.14431,-0.594296, + 0.520237,-0.801686,-0.29437,0.90384,0.122594,-0.594949, + 0.879883,-0.475191,0,0.949767,0.166652,-0.5, + 0.828154,-0.461264,-0.318429,0.939852,0.176575,-0.589491, + 0.788892,-0.514111,-0.336659,0.922122,0.14431,-0.594296, + 0.879883,-0.475191,0,0.949767,0.166652,-0.5, + 0.788892,-0.514111,-0.336659,0.922122,0.14431,-0.594296, + 0.818537,-0.574454,0,0.933557,0.134073,-0.5, + -0.464025,-0.863104,-0.199329,0.820528,0.154011,-0.638667, + -0.4837,-0.869471,-0.100277,0.83753,0.13389,-0.5825, + -0.146037,-0.967926,-0.204432,0.877985,0.117734,-0.5875, + -0.464025,-0.863104,-0.199329,0.820528,0.154011,-0.638667, + -0.146037,-0.967926,-0.204432,0.877985,0.117734,-0.5875, + -0.23383,-0.86988,-0.434318,0.844199,0.147671,-0.660875, + -0.435927,-0.899982,0,0.846018,0.123878,-0.5, + -0.093893,-0.995582,0,0.889078,0.10684,-0.5, + -0.146037,-0.967926,-0.204432,0.877985,0.117734,-0.5875, + -0.435927,-0.899982,0,0.846018,0.123878,-0.5, + -0.146037,-0.967926,-0.204432,0.877985,0.117734,-0.5875, + -0.4837,-0.869471,-0.100277,0.83753,0.13389,-0.5825, + 0.394485,-0.918903,0,0.915792,0.112008,-0.5, + 0.520237,-0.801686,-0.29437,0.90384,0.122594,-0.594949, + -0.146037,-0.967926,-0.204432,0.877985,0.117734,-0.5875, + 0.394485,-0.918903,0,0.915792,0.112008,-0.5, + -0.146037,-0.967926,-0.204432,0.877985,0.117734,-0.5875, + -0.093893,-0.995582,0,0.889078,0.10684,-0.5, + 0.31991,-0.691022,-0.648187,0.867858,0.153664,-0.674188, + -0.23383,-0.86988,-0.434318,0.844199,0.147671,-0.660875, + -0.146037,-0.967926,-0.204432,0.877985,0.117734,-0.5875, + 0.31991,-0.691022,-0.648187,0.867858,0.153664,-0.674188, + -0.146037,-0.967926,-0.204432,0.877985,0.117734,-0.5875, + 0.520237,-0.801686,-0.29437,0.90384,0.122594,-0.594949, + -0.464025,-0.863104,0.199329,0.820528,0.154011,-0.361333, + -0.23383,-0.86988,0.434318,0.844199,0.147671,-0.339125, + -0.146037,-0.967926,0.204432,0.877985,0.117734,-0.4125, + -0.464025,-0.863104,0.199329,0.820528,0.154011,-0.361333, + -0.146037,-0.967926,0.204432,0.877985,0.117734,-0.4125, + -0.4837,-0.869471,0.100277,0.83753,0.13389,-0.4175, + 0.31991,-0.691022,0.648187,0.867858,0.153664,-0.325812, + 0.520237,-0.801686,0.294369,0.90384,0.122594,-0.405051, + -0.146037,-0.967926,0.204432,0.877985,0.117734,-0.4125, + 0.31991,-0.691022,0.648187,0.867858,0.153664,-0.325812, + -0.146037,-0.967926,0.204432,0.877985,0.117734,-0.4125, + -0.23383,-0.86988,0.434318,0.844199,0.147671,-0.339125, + 0.394485,-0.918903,0,0.915792,0.112008,-0.5, + -0.093893,-0.995582,0,0.889078,0.10684,-0.5, + -0.146037,-0.967926,0.204432,0.877985,0.117734,-0.4125, + 0.394485,-0.918903,0,0.915792,0.112008,-0.5, + -0.146037,-0.967926,0.204432,0.877985,0.117734,-0.4125, + 0.520237,-0.801686,0.294369,0.90384,0.122594,-0.405051, + -0.435927,-0.899982,0,0.846018,0.123878,-0.5, + -0.4837,-0.869471,0.100277,0.83753,0.13389,-0.4175, + -0.146037,-0.967926,0.204432,0.877985,0.117734,-0.4125, + -0.435927,-0.899982,0,0.846018,0.123878,-0.5, + -0.146037,-0.967926,0.204432,0.877985,0.117734,-0.4125, + -0.093893,-0.995582,0,0.889078,0.10684,-0.5, + 0.66282,-0.338306,-0.667996,0.910107,0.206343,-0.664066, + 0.398283,-0.122544,-0.90904,0.860532,0.255958,-0.708812, + 0.378094,-0.147323,-0.91397,0.830643,0.2262,-0.720025, + 0.66282,-0.338306,-0.667996,0.910107,0.206343,-0.664066, + 0.378094,-0.147323,-0.91397,0.830643,0.2262,-0.720025, + 0.65574,-0.380493,-0.652097,0.887817,0.175019,-0.672877, + 0.160738,0.160922,-0.97379,0.801042,0.315496,-0.723727, + 0.108083,0.116579,-0.987283,0.762033,0.287619,-0.735741, + 0.378094,-0.147323,-0.91397,0.830643,0.2262,-0.720025, + 0.160738,0.160922,-0.97379,0.801042,0.315496,-0.723727, + 0.378094,-0.147323,-0.91397,0.830643,0.2262,-0.720025, + 0.398283,-0.122544,-0.90904,0.860532,0.255958,-0.708812, + 0.108083,0.116579,-0.987283,0.762033,0.287619,-0.735741, + -0.233968,-0.2359,-0.943191,0.735693,0.265534,-0.73806, + 0.024413,-0.469703,-0.882487,0.807717,0.204533,-0.722006, + 0.024413,-0.469703,-0.882487,0.807717,0.204533,-0.722006, + 0.378094,-0.147323,-0.91397,0.830643,0.2262,-0.720025, + 0.108083,0.116579,-0.987283,0.762033,0.287619,-0.735741, + 0.31991,-0.691022,-0.648187,0.867858,0.153664,-0.674188, + 0.65574,-0.380493,-0.652097,0.887817,0.175019,-0.672877, + 0.378094,-0.147323,-0.91397,0.830643,0.2262,-0.720025, + 0.31991,-0.691022,-0.648187,0.867858,0.153664,-0.674188, + 0.378094,-0.147323,-0.91397,0.830643,0.2262,-0.720025, + 0.024413,-0.469703,-0.882487,0.807717,0.204533,-0.722006, + -0.218035,0.735069,-0.641977,0.691977,0.424648,-0.664066, + -0.304611,0.675798,-0.6712,0.636249,0.400218,-0.672877, + -0.106617,0.392034,-0.913752,0.693423,0.349037,-0.720025, + -0.218035,0.735069,-0.641977,0.691977,0.424648,-0.664066, + -0.106617,0.392034,-0.913752,0.693423,0.349037,-0.720025, + -0.042916,0.448451,-0.892776,0.741552,0.375033,-0.708812, + -0.304611,0.675798,-0.6712,0.636249,0.400218,-0.672877, + -0.638487,0.393678,-0.661326,0.60431,0.378335,-0.674188, + -0.462569,0.070189,-0.8838,0.66406,0.327,-0.722006, + -0.462569,0.070189,-0.8838,0.66406,0.327,-0.722006, + -0.106617,0.392034,-0.913752,0.693423,0.349037,-0.720025, + -0.304611,0.675798,-0.6712,0.636249,0.400218,-0.672877, + -0.233968,-0.2359,-0.943191,0.735693,0.265534,-0.73806, + 0.108083,0.116579,-0.987283,0.762033,0.287619,-0.735741, + -0.106617,0.392034,-0.913752,0.693423,0.349037,-0.720025, + -0.233968,-0.2359,-0.943191,0.735693,0.265534,-0.73806, + -0.106617,0.392034,-0.913752,0.693423,0.349037,-0.720025, + -0.462569,0.070189,-0.8838,0.66406,0.327,-0.722006, + 0.108083,0.116579,-0.987283,0.762033,0.287619,-0.735741, + 0.160738,0.160922,-0.97379,0.801042,0.315496,-0.723727, + -0.042916,0.448451,-0.892776,0.741552,0.375033,-0.708812, + -0.042916,0.448451,-0.892776,0.741552,0.375033,-0.708812, + -0.106617,0.392034,-0.913752,0.693423,0.349037,-0.720025, + 0.108083,0.116579,-0.987283,0.762033,0.287619,-0.735741, + -0.838454,-0.308168,-0.449475,0.597724,0.354488,-0.660875, + -0.772673,-0.608887,-0.179534,0.608078,0.332278,-0.638667, + -0.712429,-0.672822,-0.199386,0.648221,0.292739,-0.664625, + -0.712429,-0.672822,-0.199386,0.648221,0.292739,-0.664625, + -0.660431,-0.496512,-0.563299,0.653151,0.306393,-0.706, + -0.838454,-0.308168,-0.449475,0.597724,0.354488,-0.660875, + -0.635534,-0.736296,-0.232302,0.709997,0.238013,-0.677562, + -0.531095,-0.656282,-0.53594,0.719399,0.249218,-0.7215, + -0.660431,-0.496512,-0.563299,0.653151,0.306393,-0.706, + -0.635534,-0.736296,-0.232302,0.709997,0.238013,-0.677562, + -0.660431,-0.496512,-0.563299,0.653151,0.306393,-0.706, + -0.712429,-0.672822,-0.199386,0.648221,0.292739,-0.664625, + -0.233968,-0.2359,-0.943191,0.735693,0.265534,-0.73806, + -0.462569,0.070189,-0.8838,0.66406,0.327,-0.722006, + -0.660431,-0.496512,-0.563299,0.653151,0.306393,-0.706, + -0.233968,-0.2359,-0.943191,0.735693,0.265534,-0.73806, + -0.660431,-0.496512,-0.563299,0.653151,0.306393,-0.706, + -0.531095,-0.656282,-0.53594,0.719399,0.249218,-0.7215, + -0.462569,0.070189,-0.8838,0.66406,0.327,-0.722006, + -0.638487,0.393678,-0.661326,0.60431,0.378335,-0.674188, + -0.838454,-0.308168,-0.449475,0.597724,0.354488,-0.660875, + -0.838454,-0.308168,-0.449475,0.597724,0.354488,-0.660875, + -0.660431,-0.496512,-0.563299,0.653151,0.306393,-0.706, + -0.462569,0.070189,-0.8838,0.66406,0.327,-0.722006, + -0.464025,-0.863104,-0.199329,0.820528,0.154011,-0.638667, + -0.23383,-0.86988,-0.434318,0.844199,0.147671,-0.660875, + -0.376394,-0.756788,-0.534415,0.787209,0.193905,-0.706, + -0.464025,-0.863104,-0.199329,0.820528,0.154011,-0.638667, + -0.376394,-0.756788,-0.534415,0.787209,0.193905,-0.706, + -0.552608,-0.806562,-0.209959,0.774619,0.186679,-0.664625, + -0.23383,-0.86988,-0.434318,0.844199,0.147671,-0.660875, + 0.31991,-0.691022,-0.648187,0.867858,0.153664,-0.674188, + 0.024413,-0.469703,-0.882487,0.807717,0.204533,-0.722006, + 0.024413,-0.469703,-0.882487,0.807717,0.204533,-0.722006, + -0.376394,-0.756788,-0.534415,0.787209,0.193905,-0.706, + -0.23383,-0.86988,-0.434318,0.844199,0.147671,-0.660875, + -0.233968,-0.2359,-0.943191,0.735693,0.265534,-0.73806, + -0.531095,-0.656282,-0.53594,0.719399,0.249218,-0.7215, + -0.376394,-0.756788,-0.534415,0.787209,0.193905,-0.706, + -0.233968,-0.2359,-0.943191,0.735693,0.265534,-0.73806, + -0.376394,-0.756788,-0.534415,0.787209,0.193905,-0.706, + 0.024413,-0.469703,-0.882487,0.807717,0.204533,-0.722006, + -0.531095,-0.656282,-0.53594,0.719399,0.249218,-0.7215, + -0.635534,-0.736296,-0.232302,0.709997,0.238013,-0.677562, + -0.552608,-0.806562,-0.209959,0.774619,0.186679,-0.664625, + -0.552608,-0.806562,-0.209959,0.774619,0.186679,-0.664625, + -0.376394,-0.756788,-0.534415,0.787209,0.193905,-0.706, + -0.531095,-0.656282,-0.53594,0.719399,0.249218,-0.7215, + -0.304611,0.675798,-0.6712,0.636249,0.400218,-0.672877, + -0.218035,0.735069,-0.641977,0.691977,0.424648,-0.664066, + -0.31842,0.898971,-0.300764,0.662233,0.454417,-0.589491, + -0.31842,0.898971,-0.300764,0.662233,0.454417,-0.589491, + -0.419827,0.848984,-0.320893,0.601944,0.430927,-0.594296, + -0.304611,0.675798,-0.6712,0.636249,0.400218,-0.672877, + -0.346116,0.938192,0,0.652318,0.46434,-0.5, + -0.477849,0.878442,0,0.590509,0.441164,-0.5, + -0.419827,0.848984,-0.320893,0.601944,0.430927,-0.594296, + -0.346116,0.938192,0,0.652318,0.46434,-0.5, + -0.419827,0.848984,-0.320893,0.601944,0.430927,-0.594296, + -0.31842,0.898971,-0.300764,0.662233,0.454417,-0.589491, + -0.477849,0.878442,0,0.590509,0.441164,-0.5, + -0.89858,0.43881,0,0.555594,0.41906,-0.5, + -0.801359,0.491779,-0.340556,0.567937,0.40894,-0.594949, + -0.801359,0.491779,-0.340556,0.567937,0.40894,-0.594949, + -0.419827,0.848984,-0.320893,0.601944,0.430927,-0.594296, + -0.477849,0.878442,0,0.590509,0.441164,-0.5, + -0.638487,0.393678,-0.661326,0.60431,0.378335,-0.674188, + -0.304611,0.675798,-0.6712,0.636249,0.400218,-0.672877, + -0.419827,0.848984,-0.320893,0.601944,0.430927,-0.594296, + -0.638487,0.393678,-0.661326,0.60431,0.378335,-0.674188, + -0.419827,0.848984,-0.320893,0.601944,0.430927,-0.594296, + -0.801359,0.491779,-0.340556,0.567937,0.40894,-0.594949, + -0.318419,0.898972,0.300764,0.662233,0.454417,-0.410509, + -0.218035,0.735069,0.641977,0.691977,0.424648,-0.335934, + -0.304611,0.675798,0.6712,0.636249,0.400218,-0.327123, + -0.304611,0.675798,0.6712,0.636249,0.400218,-0.327123, + -0.419827,0.848984,0.320893,0.601944,0.430927,-0.405704, + -0.318419,0.898972,0.300764,0.662233,0.454417,-0.410509, + -0.638487,0.393678,0.661326,0.60431,0.378335,-0.325812, + -0.801358,0.491779,0.340556,0.567937,0.40894,-0.405051, + -0.419827,0.848984,0.320893,0.601944,0.430927,-0.405704, + -0.638487,0.393678,0.661326,0.60431,0.378335,-0.325812, + -0.419827,0.848984,0.320893,0.601944,0.430927,-0.405704, + -0.304611,0.675798,0.6712,0.636249,0.400218,-0.327123, + -0.801358,0.491779,0.340556,0.567937,0.40894,-0.405051, + -0.89858,0.43881,0,0.555594,0.41906,-0.5, + -0.477849,0.878442,0,0.590509,0.441164,-0.5, + -0.477849,0.878442,0,0.590509,0.441164,-0.5, + -0.419827,0.848984,0.320893,0.601944,0.430927,-0.405704, + -0.801358,0.491779,0.340556,0.567937,0.40894,-0.405051, + -0.346116,0.938192,0,0.652318,0.46434,-0.5, + -0.318419,0.898972,0.300764,0.662233,0.454417,-0.410509, + -0.419827,0.848984,0.320893,0.601944,0.430927,-0.405704, + -0.346116,0.938192,0,0.652318,0.46434,-0.5, + -0.419827,0.848984,0.320893,0.601944,0.430927,-0.405704, + -0.477849,0.878442,0,0.590509,0.441164,-0.5, + -0.772673,-0.608887,0.179534,0.608078,0.332278,-0.361333, + -0.772268,-0.627334,0.100277,0.58531,0.345528,-0.4175, + -0.944453,-0.263136,0.196897,0.562375,0.382563,-0.4125, + -0.772673,-0.608887,0.179534,0.608078,0.332278,-0.361333, + -0.944453,-0.263136,0.196897,0.562375,0.382563,-0.4125, + -0.838454,-0.308168,0.449475,0.597724,0.354488,-0.339125, + -0.810611,-0.585585,0,0.573976,0.352148,-0.5, + -0.985168,-0.171594,0,0.54972,0.391595,-0.5, + -0.944453,-0.263136,0.196897,0.562375,0.382563,-0.4125, + -0.810611,-0.585585,0,0.573976,0.352148,-0.5, + -0.944453,-0.263136,0.196897,0.562375,0.382563,-0.4125, + -0.772268,-0.627334,0.100277,0.58531,0.345528,-0.4175, + -0.89858,0.43881,0,0.555594,0.41906,-0.5, + -0.801358,0.491779,0.340556,0.567937,0.40894,-0.405051, + -0.944453,-0.263136,0.196897,0.562375,0.382563,-0.4125, + -0.89858,0.43881,0,0.555594,0.41906,-0.5, + -0.944453,-0.263136,0.196897,0.562375,0.382563,-0.4125, + -0.985168,-0.171594,0,0.54972,0.391595,-0.5, + -0.801358,0.491779,0.340556,0.567937,0.40894,-0.405051, + -0.638487,0.393678,0.661326,0.60431,0.378335,-0.325812, + -0.838454,-0.308168,0.449475,0.597724,0.354488,-0.339125, + -0.838454,-0.308168,0.449475,0.597724,0.354488,-0.339125, + -0.944453,-0.263136,0.196897,0.562375,0.382563,-0.4125, + -0.801358,0.491779,0.340556,0.567937,0.40894,-0.405051, + -0.772673,-0.608887,-0.179534,0.608078,0.332278,-0.638667, + -0.838454,-0.308168,-0.449475,0.597724,0.354488,-0.660875, + -0.944453,-0.263136,-0.196896,0.562375,0.382563,-0.5875, + -0.772673,-0.608887,-0.179534,0.608078,0.332278,-0.638667, + -0.944453,-0.263136,-0.196896,0.562375,0.382563,-0.5875, + -0.772268,-0.627334,-0.100277,0.58531,0.345528,-0.5825, + -0.838454,-0.308168,-0.449475,0.597724,0.354488,-0.660875, + -0.638487,0.393678,-0.661326,0.60431,0.378335,-0.674188, + -0.801359,0.491779,-0.340556,0.567937,0.40894,-0.594949, + -0.801359,0.491779,-0.340556,0.567937,0.40894,-0.594949, + -0.944453,-0.263136,-0.196896,0.562375,0.382563,-0.5875, + -0.838454,-0.308168,-0.449475,0.597724,0.354488,-0.660875, + -0.89858,0.43881,0,0.555594,0.41906,-0.5, + -0.985168,-0.171594,0,0.54972,0.391595,-0.5, + -0.944453,-0.263136,-0.196896,0.562375,0.382563,-0.5875, + -0.89858,0.43881,0,0.555594,0.41906,-0.5, + -0.944453,-0.263136,-0.196896,0.562375,0.382563,-0.5875, + -0.801359,0.491779,-0.340556,0.567937,0.40894,-0.594949, + -0.810611,-0.585585,0,0.573976,0.352148,-0.5, + -0.772268,-0.627334,-0.100277,0.58531,0.345528,-0.5825, + -0.944453,-0.263136,-0.196896,0.562375,0.382563,-0.5875, + -0.810611,-0.585585,0,0.573976,0.352148,-0.5, + -0.944453,-0.263136,-0.196896,0.562375,0.382563,-0.5875, + -0.985168,-0.171594,0,0.54972,0.391595,-0.5, + -0.218035,0.735069,0.641977,0.691977,0.424648,-0.335934, + -0.042916,0.448451,0.892776,0.741552,0.375033,-0.291188, + -0.106617,0.392034,0.913752,0.693423,0.349037,-0.279975, + -0.218035,0.735069,0.641977,0.691977,0.424648,-0.335934, + -0.106617,0.392034,0.913752,0.693423,0.349037,-0.279975, + -0.304611,0.675798,0.6712,0.636249,0.400218,-0.327123, + -0.042916,0.448451,0.892776,0.741552,0.375033,-0.291188, + 0.160738,0.160922,0.97379,0.801042,0.315496,-0.276273, + 0.108083,0.116579,0.987283,0.762033,0.287619,-0.264259, + 0.108083,0.116579,0.987283,0.762033,0.287619,-0.264259, + -0.106617,0.392034,0.913752,0.693423,0.349037,-0.279975, + -0.042916,0.448451,0.892776,0.741552,0.375033,-0.291188, + -0.233968,-0.2359,0.943191,0.735693,0.265534,-0.26194, + -0.462569,0.07019,0.883801,0.66406,0.327,-0.277994, + -0.106617,0.392034,0.913752,0.693423,0.349037,-0.279975, + -0.233968,-0.2359,0.943191,0.735693,0.265534,-0.26194, + -0.106617,0.392034,0.913752,0.693423,0.349037,-0.279975, + 0.108083,0.116579,0.987283,0.762033,0.287619,-0.264259, + -0.462569,0.07019,0.883801,0.66406,0.327,-0.277994, + -0.638487,0.393678,0.661326,0.60431,0.378335,-0.325812, + -0.304611,0.675798,0.6712,0.636249,0.400218,-0.327123, + -0.304611,0.675798,0.6712,0.636249,0.400218,-0.327123, + -0.106617,0.392034,0.913752,0.693423,0.349037,-0.279975, + -0.462569,0.07019,0.883801,0.66406,0.327,-0.277994, + 0.66282,-0.338306,0.667996,0.910107,0.206343,-0.335934, + 0.65574,-0.380493,0.652097,0.887817,0.175019,-0.327123, + 0.378094,-0.147323,0.91397,0.830643,0.2262,-0.279975, + 0.66282,-0.338306,0.667996,0.910107,0.206343,-0.335934, + 0.378094,-0.147323,0.91397,0.830643,0.2262,-0.279975, + 0.398283,-0.122544,0.90904,0.860532,0.255958,-0.291188, + 0.31991,-0.691022,0.648187,0.867858,0.153664,-0.325812, + 0.024414,-0.469703,0.882487,0.807717,0.204533,-0.277994, + 0.378094,-0.147323,0.91397,0.830643,0.2262,-0.279975, + 0.31991,-0.691022,0.648187,0.867858,0.153664,-0.325812, + 0.378094,-0.147323,0.91397,0.830643,0.2262,-0.279975, + 0.65574,-0.380493,0.652097,0.887817,0.175019,-0.327123, + 0.024414,-0.469703,0.882487,0.807717,0.204533,-0.277994, + -0.233968,-0.2359,0.943191,0.735693,0.265534,-0.26194, + 0.108083,0.116579,0.987283,0.762033,0.287619,-0.264259, + 0.108083,0.116579,0.987283,0.762033,0.287619,-0.264259, + 0.378094,-0.147323,0.91397,0.830643,0.2262,-0.279975, + 0.024414,-0.469703,0.882487,0.807717,0.204533,-0.277994, + 0.160738,0.160922,0.97379,0.801042,0.315496,-0.276273, + 0.398283,-0.122544,0.90904,0.860532,0.255958,-0.291188, + 0.378094,-0.147323,0.91397,0.830643,0.2262,-0.279975, + 0.160738,0.160922,0.97379,0.801042,0.315496,-0.276273, + 0.378094,-0.147323,0.91397,0.830643,0.2262,-0.279975, + 0.108083,0.116579,0.987283,0.762033,0.287619,-0.264259, + -0.464025,-0.863104,0.199329,0.820528,0.154011,-0.361333, + -0.552608,-0.806562,0.209959,0.774619,0.186679,-0.335375, + -0.376394,-0.756788,0.534415,0.787209,0.193905,-0.294, + -0.464025,-0.863104,0.199329,0.820528,0.154011,-0.361333, + -0.376394,-0.756788,0.534415,0.787209,0.193905,-0.294, + -0.23383,-0.86988,0.434318,0.844199,0.147671,-0.339125, + -0.552608,-0.806562,0.209959,0.774619,0.186679,-0.335375, + -0.635534,-0.736296,0.232302,0.709997,0.238013,-0.322437, + -0.531095,-0.656282,0.53594,0.719399,0.249218,-0.2785, + -0.531095,-0.656282,0.53594,0.719399,0.249218,-0.2785, + -0.376394,-0.756788,0.534415,0.787209,0.193905,-0.294, + -0.552608,-0.806562,0.209959,0.774619,0.186679,-0.335375, + -0.233968,-0.2359,0.943191,0.735693,0.265534,-0.26194, + 0.024414,-0.469703,0.882487,0.807717,0.204533,-0.277994, + -0.376394,-0.756788,0.534415,0.787209,0.193905,-0.294, + -0.233968,-0.2359,0.943191,0.735693,0.265534,-0.26194, + -0.376394,-0.756788,0.534415,0.787209,0.193905,-0.294, + -0.531095,-0.656282,0.53594,0.719399,0.249218,-0.2785, + 0.024414,-0.469703,0.882487,0.807717,0.204533,-0.277994, + 0.31991,-0.691022,0.648187,0.867858,0.153664,-0.325812, + -0.23383,-0.86988,0.434318,0.844199,0.147671,-0.339125, + -0.23383,-0.86988,0.434318,0.844199,0.147671,-0.339125, + -0.376394,-0.756788,0.534415,0.787209,0.193905,-0.294, + 0.024414,-0.469703,0.882487,0.807717,0.204533,-0.277994, + -0.712429,-0.672822,0.199385,0.648221,0.292739,-0.335375, + -0.772673,-0.608887,0.179534,0.608078,0.332278,-0.361333, + -0.838454,-0.308168,0.449475,0.597724,0.354488,-0.339125, + -0.838454,-0.308168,0.449475,0.597724,0.354488,-0.339125, + -0.660431,-0.496512,0.5633,0.653151,0.306393,-0.294, + -0.712429,-0.672822,0.199385,0.648221,0.292739,-0.335375, + -0.838454,-0.308168,0.449475,0.597724,0.354488,-0.339125, + -0.638487,0.393678,0.661326,0.60431,0.378335,-0.325812, + -0.462569,0.07019,0.883801,0.66406,0.327,-0.277994, + -0.462569,0.07019,0.883801,0.66406,0.327,-0.277994, + -0.660431,-0.496512,0.5633,0.653151,0.306393,-0.294, + -0.838454,-0.308168,0.449475,0.597724,0.354488,-0.339125, + -0.233968,-0.2359,0.943191,0.735693,0.265534,-0.26194, + -0.531095,-0.656282,0.53594,0.719399,0.249218,-0.2785, + -0.660431,-0.496512,0.5633,0.653151,0.306393,-0.294, + -0.233968,-0.2359,0.943191,0.735693,0.265534,-0.26194, + -0.660431,-0.496512,0.5633,0.653151,0.306393,-0.294, + -0.462569,0.07019,0.883801,0.66406,0.327,-0.277994, + -0.635534,-0.736296,0.232302,0.709997,0.238013,-0.322437, + -0.712429,-0.672822,0.199385,0.648221,0.292739,-0.335375, + -0.660431,-0.496512,0.5633,0.653151,0.306393,-0.294, + -0.635534,-0.736296,0.232302,0.709997,0.238013,-0.322437, + -0.660431,-0.496512,0.5633,0.653151,0.306393,-0.294, + -0.531095,-0.656282,0.53594,0.719399,0.249218,-0.2785, + -0.464025,-0.863104,-0.199329,0.820528,0.154011,-0.638667, + -0.552608,-0.806562,-0.209959,0.774619,0.186679,-0.664625, + -0.577604,-0.812413,-0.079739,0.775446,0.175219,-0.5905, + -0.464025,-0.863104,-0.199329,0.820528,0.154011,-0.638667, + -0.577604,-0.812413,-0.079739,0.775446,0.175219,-0.5905, + -0.4837,-0.869471,-0.100277,0.83753,0.13389,-0.5825, + -0.552608,-0.806562,-0.209959,0.774619,0.186679,-0.664625, + -0.635534,-0.736296,-0.232302,0.709997,0.238013,-0.677562, + -0.640463,-0.763275,-0.08496,0.704334,0.231264,-0.59775, + -0.640463,-0.763275,-0.08496,0.704334,0.231264,-0.59775, + -0.577604,-0.812413,-0.079739,0.775446,0.175219,-0.5905, + -0.552608,-0.806562,-0.209959,0.774619,0.186679,-0.664625, + -0.642787,-0.766045,0,0.702437,0.229003,-0.5, + -0.57538,-0.817886,0,0.779215,0.168431,-0.5, + -0.577604,-0.812413,-0.079739,0.775446,0.175219,-0.5905, + -0.642787,-0.766045,0,0.702437,0.229003,-0.5, + -0.577604,-0.812413,-0.079739,0.775446,0.175219,-0.5905, + -0.640463,-0.763275,-0.08496,0.704334,0.231264,-0.59775, + -0.57538,-0.817886,0,0.779215,0.168431,-0.5, + -0.435927,-0.899982,0,0.846018,0.123878,-0.5, + -0.4837,-0.869471,-0.100277,0.83753,0.13389,-0.5825, + -0.4837,-0.869471,-0.100277,0.83753,0.13389,-0.5825, + -0.577604,-0.812413,-0.079739,0.775446,0.175219,-0.5905, + -0.57538,-0.817886,0,0.779215,0.168431,-0.5, + -0.772673,-0.608887,-0.179534,0.608078,0.332278,-0.638667, + -0.772268,-0.627334,-0.100277,0.58531,0.345528,-0.5825, + -0.699771,-0.709903,-0.079739,0.636792,0.291564,-0.5905, + -0.772673,-0.608887,-0.179534,0.608078,0.332278,-0.638667, + -0.699771,-0.709903,-0.079739,0.636792,0.291564,-0.5905, + -0.712429,-0.672822,-0.199386,0.648221,0.292739,-0.664625, + -0.772268,-0.627334,-0.100277,0.58531,0.345528,-0.5825, + -0.810611,-0.585585,0,0.573976,0.352148,-0.5, + -0.705547,-0.708663,0,0.629453,0.294096,-0.5, + -0.705547,-0.708663,0,0.629453,0.294096,-0.5, + -0.699771,-0.709903,-0.079739,0.636792,0.291564,-0.5905, + -0.772268,-0.627334,-0.100277,0.58531,0.345528,-0.5825, + -0.642787,-0.766045,0,0.702437,0.229003,-0.5, + -0.640463,-0.763275,-0.08496,0.704334,0.231264,-0.59775, + -0.699771,-0.709903,-0.079739,0.636792,0.291564,-0.5905, + -0.642787,-0.766045,0,0.702437,0.229003,-0.5, + -0.699771,-0.709903,-0.079739,0.636792,0.291564,-0.5905, + -0.705547,-0.708663,0,0.629453,0.294096,-0.5, + -0.640463,-0.763275,-0.08496,0.704334,0.231264,-0.59775, + -0.635534,-0.736296,-0.232302,0.709997,0.238013,-0.677562, + -0.712429,-0.672822,-0.199386,0.648221,0.292739,-0.664625, + -0.712429,-0.672822,-0.199386,0.648221,0.292739,-0.664625, + -0.699771,-0.709903,-0.079739,0.636792,0.291564,-0.5905, + -0.640463,-0.763275,-0.08496,0.704334,0.231264,-0.59775, + -0.772673,-0.608887,0.179534,0.608078,0.332278,-0.361333, + -0.712429,-0.672822,0.199385,0.648221,0.292739,-0.335375, + -0.699771,-0.709903,0.079739,0.636792,0.291564,-0.4095, + -0.772673,-0.608887,0.179534,0.608078,0.332278,-0.361333, + -0.699771,-0.709903,0.079739,0.636792,0.291564,-0.4095, + -0.772268,-0.627334,0.100277,0.58531,0.345528,-0.4175, + -0.712429,-0.672822,0.199385,0.648221,0.292739,-0.335375, + -0.635534,-0.736296,0.232302,0.709997,0.238013,-0.322437, + -0.640463,-0.763275,0.08496,0.704334,0.231264,-0.40225, + -0.640463,-0.763275,0.08496,0.704334,0.231264,-0.40225, + -0.699771,-0.709903,0.079739,0.636792,0.291564,-0.4095, + -0.712429,-0.672822,0.199385,0.648221,0.292739,-0.335375, + -0.642787,-0.766045,0,0.702437,0.229003,-0.5, + -0.705547,-0.708663,0,0.629453,0.294096,-0.5, + -0.699771,-0.709903,0.079739,0.636792,0.291564,-0.4095, + -0.642787,-0.766045,0,0.702437,0.229003,-0.5, + -0.699771,-0.709903,0.079739,0.636792,0.291564,-0.4095, + -0.640463,-0.763275,0.08496,0.704334,0.231264,-0.40225, + -0.705547,-0.708663,0,0.629453,0.294096,-0.5, + -0.810611,-0.585585,0,0.573976,0.352148,-0.5, + -0.772268,-0.627334,0.100277,0.58531,0.345528,-0.4175, + -0.772268,-0.627334,0.100277,0.58531,0.345528,-0.4175, + -0.699771,-0.709903,0.079739,0.636792,0.291564,-0.4095, + -0.705547,-0.708663,0,0.629453,0.294096,-0.5, + -0.464025,-0.863104,0.199329,0.820528,0.154011,-0.361333, + -0.4837,-0.869471,0.100277,0.83753,0.13389,-0.4175, + -0.577604,-0.812413,0.079739,0.775446,0.175219,-0.4095, + -0.464025,-0.863104,0.199329,0.820528,0.154011,-0.361333, + -0.577604,-0.812413,0.079739,0.775446,0.175219,-0.4095, + -0.552608,-0.806562,0.209959,0.774619,0.186679,-0.335375, + -0.4837,-0.869471,0.100277,0.83753,0.13389,-0.4175, + -0.435927,-0.899982,0,0.846018,0.123878,-0.5, + -0.57538,-0.817886,0,0.779215,0.168431,-0.5, + -0.57538,-0.817886,0,0.779215,0.168431,-0.5, + -0.577604,-0.812413,0.079739,0.775446,0.175219,-0.4095, + -0.4837,-0.869471,0.100277,0.83753,0.13389,-0.4175, + -0.642787,-0.766045,0,0.702437,0.229003,-0.5, + -0.640463,-0.763275,0.08496,0.704334,0.231264,-0.40225, + -0.577604,-0.812413,0.079739,0.775446,0.175219,-0.4095, + -0.642787,-0.766045,0,0.702437,0.229003,-0.5, + -0.577604,-0.812413,0.079739,0.775446,0.175219,-0.4095, + -0.57538,-0.817886,0,0.779215,0.168431,-0.5, + -0.640463,-0.763275,0.08496,0.704334,0.231264,-0.40225, + -0.635534,-0.736296,0.232302,0.709997,0.238013,-0.322437, + -0.552608,-0.806562,0.209959,0.774619,0.186679,-0.335375, + -0.552608,-0.806562,0.209959,0.774619,0.186679,-0.335375, + -0.577604,-0.812413,0.079739,0.775446,0.175219,-0.4095, + -0.640463,-0.763275,0.08496,0.704334,0.231264,-0.40225, +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1728,data,NULL}; +const struct gllist *s1_4=&frame; diff --git a/hacks/glx/s1_5.c b/hacks/glx/s1_5.c new file mode 100644 index 0000000..dc4510a --- /dev/null +++ b/hacks/glx/s1_5.c @@ -0,0 +1,1733 @@ +#include "gllist.h" +static const float data[]={ + 0.575185,0.562873,-0.59358,0.995497,0.593044,-0.659921, + 0.642358,0.715039,-0.275852,0.998334,0.63557,-0.58723, + 0.5309,0.794781,-0.294055,0.944384,0.679375,-0.593392, + 0.575185,0.562873,-0.59358,0.995497,0.593044,-0.659921, + 0.5309,0.794781,-0.294055,0.944384,0.679375,-0.593392, + 0.429706,0.63213,-0.644798,0.943249,0.633115,-0.671218, + 0.642358,0.715039,-0.275852,0.998334,0.63557,-0.58723, + 0.662437,0.749118,0,0.99928,0.649745,-0.5, + 0.577305,0.816529,0,0.944762,0.694795,-0.5, + 0.577305,0.816529,0,0.944762,0.694795,-0.5, + 0.5309,0.794781,-0.294055,0.944384,0.679375,-0.593392, + 0.642358,0.715039,-0.275852,0.998334,0.63557,-0.58723, + 0.007037,0.999975,0,0.906869,0.713633,-0.5, + -0.039712,0.912418,-0.407328,0.907078,0.697653,-0.594723, + 0.5309,0.794781,-0.294055,0.944384,0.679375,-0.593392, + 0.007037,0.999975,0,0.906869,0.713633,-0.5, + 0.5309,0.794781,-0.294055,0.944384,0.679375,-0.593392, + 0.577305,0.816529,0,0.944762,0.694795,-0.5, + -0.039712,0.912418,-0.407328,0.907078,0.697653,-0.594723, + -0.115437,0.702917,-0.701842,0.907098,0.650057,-0.673773, + 0.429706,0.63213,-0.644798,0.943249,0.633115,-0.671218, + 0.429706,0.63213,-0.644798,0.943249,0.633115,-0.671218, + 0.5309,0.794781,-0.294055,0.944384,0.679375,-0.593392, + -0.039712,0.912418,-0.407328,0.907078,0.697653,-0.594723, + 0.575185,0.562873,0.59358,0.995497,0.593044,-0.340079, + 0.429706,0.63213,0.644797,0.943249,0.633115,-0.328782, + 0.530901,0.79478,0.294055,0.944384,0.679375,-0.406608, + 0.575185,0.562873,0.59358,0.995497,0.593044,-0.340079, + 0.530901,0.79478,0.294055,0.944384,0.679375,-0.406608, + 0.642358,0.715039,0.275852,0.998334,0.63557,-0.41277, + 0.429706,0.63213,0.644797,0.943249,0.633115,-0.328782, + -0.115435,0.702917,0.701842,0.907098,0.650057,-0.326227, + -0.039712,0.912418,0.407328,0.907078,0.697653,-0.405277, + -0.039712,0.912418,0.407328,0.907078,0.697653,-0.405277, + 0.530901,0.79478,0.294055,0.944384,0.679375,-0.406608, + 0.429706,0.63213,0.644797,0.943249,0.633115,-0.328782, + 0.007037,0.999975,0,0.906869,0.713633,-0.5, + 0.577305,0.816529,0,0.944762,0.694795,-0.5, + 0.530901,0.79478,0.294055,0.944384,0.679375,-0.406608, + 0.007037,0.999975,0,0.906869,0.713633,-0.5, + 0.530901,0.79478,0.294055,0.944384,0.679375,-0.406608, + -0.039712,0.912418,0.407328,0.907078,0.697653,-0.405277, + 0.577305,0.816529,0,0.944762,0.694795,-0.5, + 0.662437,0.749118,0,0.99928,0.649745,-0.5, + 0.642358,0.715039,0.275852,0.998334,0.63557,-0.41277, + 0.642358,0.715039,0.275852,0.998334,0.63557,-0.41277, + 0.530901,0.79478,0.294055,0.944384,0.679375,-0.406608, + 0.577305,0.816529,0,0.944762,0.694795,-0.5, + -0.959446,0.199329,0.199329,0.87462,0.619745,-0.361333, + -0.976969,0.188349,0.100277,0.870135,0.645704,-0.4175, + -0.794244,0.572801,0.20267,0.883764,0.687079,-0.4125, + -0.959446,0.199329,0.199329,0.87462,0.619745,-0.361333, + -0.794244,0.572801,0.20267,0.883764,0.687079,-0.4125, + -0.714284,0.497638,0.492092,0.884979,0.641954,-0.339125, + -0.969635,0.244558,0,0.867922,0.658641,-0.5, + -0.744977,0.66709,0,0.882548,0.702579,-0.5, + -0.794244,0.572801,0.20267,0.883764,0.687079,-0.4125, + -0.969635,0.244558,0,0.867922,0.658641,-0.5, + -0.794244,0.572801,0.20267,0.883764,0.687079,-0.4125, + -0.976969,0.188349,0.100277,0.870135,0.645704,-0.4175, + 0.007037,0.999975,0,0.906869,0.713633,-0.5, + -0.039712,0.912418,0.407328,0.907078,0.697653,-0.405277, + -0.794244,0.572801,0.20267,0.883764,0.687079,-0.4125, + 0.007037,0.999975,0,0.906869,0.713633,-0.5, + -0.794244,0.572801,0.20267,0.883764,0.687079,-0.4125, + -0.744977,0.66709,0,0.882548,0.702579,-0.5, + -0.039712,0.912418,0.407328,0.907078,0.697653,-0.405277, + -0.115435,0.702917,0.701842,0.907098,0.650057,-0.326227, + -0.714284,0.497638,0.492092,0.884979,0.641954,-0.339125, + -0.714284,0.497638,0.492092,0.884979,0.641954,-0.339125, + -0.794244,0.572801,0.20267,0.883764,0.687079,-0.4125, + -0.039712,0.912418,0.407328,0.907078,0.697653,-0.405277, + -0.959446,0.199329,-0.199329,0.87462,0.619745,-0.638667, + -0.714284,0.497638,-0.492092,0.884979,0.641954,-0.660875, + -0.794244,0.572801,-0.202671,0.883764,0.687079,-0.5875, + -0.959446,0.199329,-0.199329,0.87462,0.619745,-0.638667, + -0.794244,0.572801,-0.202671,0.883764,0.687079,-0.5875, + -0.976969,0.188349,-0.100277,0.870135,0.645704,-0.5825, + -0.714284,0.497638,-0.492092,0.884979,0.641954,-0.660875, + -0.115437,0.702917,-0.701842,0.907098,0.650057,-0.673773, + -0.039712,0.912418,-0.407328,0.907078,0.697653,-0.594723, + -0.039712,0.912418,-0.407328,0.907078,0.697653,-0.594723, + -0.794244,0.572801,-0.202671,0.883764,0.687079,-0.5875, + -0.714284,0.497638,-0.492092,0.884979,0.641954,-0.660875, + 0.007037,0.999975,0,0.906869,0.713633,-0.5, + -0.744977,0.66709,0,0.882548,0.702579,-0.5, + -0.794244,0.572801,-0.202671,0.883764,0.687079,-0.5875, + 0.007037,0.999975,0,0.906869,0.713633,-0.5, + -0.794244,0.572801,-0.202671,0.883764,0.687079,-0.5875, + -0.039712,0.912418,-0.407328,0.907078,0.697653,-0.594723, + -0.969635,0.244558,0,0.867922,0.658641,-0.5, + -0.976969,0.188349,-0.100277,0.870135,0.645704,-0.5825, + -0.794244,0.572801,-0.202671,0.883764,0.687079,-0.5875, + -0.969635,0.244558,0,0.867922,0.658641,-0.5, + -0.794244,0.572801,-0.202671,0.883764,0.687079,-0.5875, + -0.744977,0.66709,0,0.882548,0.702579,-0.5, + 0.575185,0.562873,0.59358,0.995497,0.593044,-0.340079, + 0.447221,0.281892,0.848841,0.990769,0.522168,-0.296464, + 0.345209,0.311815,0.885213,0.941357,0.556014,-0.282086, + 0.575185,0.562873,0.59358,0.995497,0.593044,-0.340079, + 0.345209,0.311815,0.885213,0.941357,0.556014,-0.282086, + 0.429706,0.63213,0.644797,0.943249,0.633115,-0.328782, + 0.447221,0.281892,0.848841,0.990769,0.522168,-0.296464, + 0.291601,-0.024985,0.956214,0.985095,0.437116,-0.281926, + 0.214014,-0.011143,0.976767,0.939088,0.463494,-0.26652, + 0.214014,-0.011143,0.976767,0.939088,0.463494,-0.26652, + 0.345209,0.311815,0.885213,0.941357,0.556014,-0.282086, + 0.447221,0.281892,0.848841,0.990769,0.522168,-0.296464, + -0.247399,0.003968,0.968906,0.905451,0.476683,-0.262505, + -0.23409,0.368714,0.899584,0.906322,0.571188,-0.278521, + 0.345209,0.311815,0.885213,0.941357,0.556014,-0.282086, + -0.247399,0.003968,0.968906,0.905451,0.476683,-0.262505, + 0.345209,0.311815,0.885213,0.941357,0.556014,-0.282086, + 0.214014,-0.011143,0.976767,0.939088,0.463494,-0.26652, + -0.23409,0.368714,0.899584,0.906322,0.571188,-0.278521, + -0.115435,0.702917,0.701842,0.907098,0.650057,-0.326227, + 0.429706,0.63213,0.644797,0.943249,0.633115,-0.328782, + 0.429706,0.63213,0.644797,0.943249,0.633115,-0.328782, + 0.345209,0.311815,0.885213,0.941357,0.556014,-0.282086, + -0.23409,0.368714,0.899584,0.906322,0.571188,-0.278521, + 0.110573,-0.360361,0.926236,0.979421,0.352064,-0.296464, + -0.103837,-0.707557,0.698986,0.974692,0.281188,-0.340079, + -0.088988,-0.705766,0.702834,0.934927,0.293873,-0.328782, + -0.088988,-0.705766,0.702834,0.934927,0.293873,-0.328782, + 0.06872,-0.352527,0.933275,0.936818,0.370973,-0.282086, + 0.110573,-0.360361,0.926236,0.979421,0.352064,-0.296464, + -0.455383,-0.61687,0.641949,0.905018,0.303308,-0.326227, + -0.359172,-0.316853,0.877838,0.905187,0.382177,-0.278521, + 0.06872,-0.352527,0.933275,0.936818,0.370973,-0.282086, + -0.455383,-0.61687,0.641949,0.905018,0.303308,-0.326227, + 0.06872,-0.352527,0.933275,0.936818,0.370973,-0.282086, + -0.088988,-0.705766,0.702834,0.934927,0.293873,-0.328782, + -0.359172,-0.316853,0.877838,0.905187,0.382177,-0.278521, + -0.247399,0.003968,0.968906,0.905451,0.476683,-0.262505, + 0.214014,-0.011143,0.976767,0.939088,0.463494,-0.26652, + 0.214014,-0.011143,0.976767,0.939088,0.463494,-0.26652, + 0.06872,-0.352527,0.933275,0.936818,0.370973,-0.282086, + -0.359172,-0.316853,0.877838,0.905187,0.382177,-0.278521, + 0.291601,-0.024985,0.956214,0.985095,0.437116,-0.281926, + 0.110573,-0.360361,0.926236,0.979421,0.352064,-0.296464, + 0.06872,-0.352527,0.933275,0.936818,0.370973,-0.282086, + 0.291601,-0.024985,0.956214,0.985095,0.437116,-0.281926, + 0.06872,-0.352527,0.933275,0.936818,0.370973,-0.282086, + 0.214014,-0.011143,0.976767,0.939088,0.463494,-0.26652, + -0.959446,-0.199329,0.199329,0.87462,0.342412,-0.361333, + -0.976969,-0.100277,0.18835,0.870135,0.398579,-0.335375, + -0.845588,-0.179708,0.502679,0.883764,0.393579,-0.294, + -0.959446,-0.199329,0.199329,0.87462,0.342412,-0.361333, + -0.845588,-0.179708,0.502679,0.883764,0.393579,-0.294, + -0.826326,-0.370128,0.424489,0.884979,0.320204,-0.339125, + -0.969635,0,0.244558,0.867922,0.481079,-0.322437, + -0.761522,0.030964,0.647398,0.882548,0.481079,-0.2785, + -0.845588,-0.179708,0.502679,0.883764,0.393579,-0.294, + -0.969635,0,0.244558,0.867922,0.481079,-0.322437, + -0.845588,-0.179708,0.502679,0.883764,0.393579,-0.294, + -0.976969,-0.100277,0.18835,0.870135,0.398579,-0.335375, + -0.247399,0.003968,0.968906,0.905451,0.476683,-0.262505, + -0.359172,-0.316853,0.877838,0.905187,0.382177,-0.278521, + -0.845588,-0.179708,0.502679,0.883764,0.393579,-0.294, + -0.247399,0.003968,0.968906,0.905451,0.476683,-0.262505, + -0.845588,-0.179708,0.502679,0.883764,0.393579,-0.294, + -0.761522,0.030964,0.647398,0.882548,0.481079,-0.2785, + -0.359172,-0.316853,0.877838,0.905187,0.382177,-0.278521, + -0.455383,-0.61687,0.641949,0.905018,0.303308,-0.326227, + -0.826326,-0.370128,0.424489,0.884979,0.320204,-0.339125, + -0.826326,-0.370128,0.424489,0.884979,0.320204,-0.339125, + -0.845588,-0.179708,0.502679,0.883764,0.393579,-0.294, + -0.359172,-0.316853,0.877838,0.905187,0.382177,-0.278521, + -0.959446,0.199329,0.199329,0.87462,0.619745,-0.361333, + -0.714284,0.497638,0.492092,0.884979,0.641954,-0.339125, + -0.859317,0.197434,0.471799,0.883764,0.568579,-0.294, + -0.959446,0.199329,0.199329,0.87462,0.619745,-0.361333, + -0.859317,0.197434,0.471799,0.883764,0.568579,-0.294, + -0.976969,0.100277,0.18835,0.870135,0.563579,-0.335375, + -0.714284,0.497638,0.492092,0.884979,0.641954,-0.339125, + -0.115435,0.702917,0.701842,0.907098,0.650057,-0.326227, + -0.23409,0.368714,0.899584,0.906322,0.571188,-0.278521, + -0.23409,0.368714,0.899584,0.906322,0.571188,-0.278521, + -0.859317,0.197434,0.471799,0.883764,0.568579,-0.294, + -0.714284,0.497638,0.492092,0.884979,0.641954,-0.339125, + -0.23409,0.368714,0.899584,0.906322,0.571188,-0.278521, + -0.247399,0.003968,0.968906,0.905451,0.476683,-0.262505, + -0.761522,0.030964,0.647398,0.882548,0.481079,-0.2785, + -0.761522,0.030964,0.647398,0.882548,0.481079,-0.2785, + -0.859317,0.197434,0.471799,0.883764,0.568579,-0.294, + -0.23409,0.368714,0.899584,0.906322,0.571188,-0.278521, + -0.969635,0,0.244558,0.867922,0.481079,-0.322437, + -0.976969,0.100277,0.18835,0.870135,0.563579,-0.335375, + -0.859317,0.197434,0.471799,0.883764,0.568579,-0.294, + -0.969635,0,0.244558,0.867922,0.481079,-0.322437, + -0.859317,0.197434,0.471799,0.883764,0.568579,-0.294, + -0.761522,0.030964,0.647398,0.882548,0.481079,-0.2785, + -0.103837,-0.707557,0.698986,0.974692,0.281188,-0.340079, + -0.260846,-0.906261,0.332641,0.971855,0.238662,-0.41277, + -0.196471,-0.920135,0.338748,0.933792,0.247612,-0.406608, + -0.103837,-0.707557,0.698986,0.974692,0.281188,-0.340079, + -0.196471,-0.920135,0.338748,0.933792,0.247612,-0.406608, + -0.088988,-0.705766,0.702834,0.934927,0.293873,-0.328782, + -0.260846,-0.906261,0.332641,0.971855,0.238662,-0.41277, + -0.339022,-0.940778,0,0.97091,0.224487,-0.5, + -0.217971,-0.975955,0,0.933414,0.232192,-0.5, + -0.217971,-0.975955,0,0.933414,0.232192,-0.5, + -0.196471,-0.920135,0.338748,0.933792,0.247612,-0.406608, + -0.260846,-0.906261,0.332641,0.971855,0.238662,-0.41277, + -0.489368,-0.872077,0,0.904032,0.239732,-0.5, + -0.438574,-0.828046,0.349274,0.90443,0.255712,-0.405277, + -0.196471,-0.920135,0.338748,0.933792,0.247612,-0.406608, + -0.489368,-0.872077,0,0.904032,0.239732,-0.5, + -0.196471,-0.920135,0.338748,0.933792,0.247612,-0.406608, + -0.217971,-0.975955,0,0.933414,0.232192,-0.5, + -0.438574,-0.828046,0.349274,0.90443,0.255712,-0.405277, + -0.455383,-0.61687,0.641949,0.905018,0.303308,-0.326227, + -0.088988,-0.705766,0.702834,0.934927,0.293873,-0.328782, + -0.088988,-0.705766,0.702834,0.934927,0.293873,-0.328782, + -0.196471,-0.920135,0.338748,0.933792,0.247612,-0.406608, + -0.438574,-0.828046,0.349274,0.90443,0.255712,-0.405277, + -0.103837,-0.707557,-0.698986,0.974692,0.281188,-0.659921, + -0.088988,-0.705766,-0.702834,0.934927,0.293873,-0.671218, + -0.196471,-0.920135,-0.338748,0.933792,0.247612,-0.593392, + -0.103837,-0.707557,-0.698986,0.974692,0.281188,-0.659921, + -0.196471,-0.920135,-0.338748,0.933792,0.247612,-0.593392, + -0.260846,-0.906261,-0.332641,0.971855,0.238662,-0.58723, + -0.088988,-0.705766,-0.702834,0.934927,0.293873,-0.671218, + -0.455383,-0.61687,-0.641949,0.905018,0.303308,-0.673773, + -0.438575,-0.828046,-0.349274,0.90443,0.255712,-0.594723, + -0.438575,-0.828046,-0.349274,0.90443,0.255712,-0.594723, + -0.196471,-0.920135,-0.338748,0.933792,0.247612,-0.593392, + -0.088988,-0.705766,-0.702834,0.934927,0.293873,-0.671218, + -0.489368,-0.872077,0,0.904032,0.239732,-0.5, + -0.217971,-0.975955,0,0.933414,0.232192,-0.5, + -0.196471,-0.920135,-0.338748,0.933792,0.247612,-0.593392, + -0.489368,-0.872077,0,0.904032,0.239732,-0.5, + -0.196471,-0.920135,-0.338748,0.933792,0.247612,-0.593392, + -0.438575,-0.828046,-0.349274,0.90443,0.255712,-0.594723, + -0.217971,-0.975955,0,0.933414,0.232192,-0.5, + -0.339022,-0.940778,0,0.97091,0.224487,-0.5, + -0.260846,-0.906261,-0.332641,0.971855,0.238662,-0.58723, + -0.260846,-0.906261,-0.332641,0.971855,0.238662,-0.58723, + -0.196471,-0.920135,-0.338748,0.933792,0.247612,-0.593392, + -0.217971,-0.975955,0,0.933414,0.232192,-0.5, + -0.959446,-0.199329,-0.199329,0.87462,0.342412,-0.638667, + -0.976969,-0.18835,-0.100277,0.870135,0.316454,-0.5825, + -0.849789,-0.488885,-0.197102,0.883764,0.275079,-0.5875, + -0.959446,-0.199329,-0.199329,0.87462,0.342412,-0.638667, + -0.849789,-0.488885,-0.197102,0.883764,0.275079,-0.5875, + -0.826325,-0.370128,-0.424489,0.884979,0.320204,-0.660875, + -0.969635,-0.244558,0,0.867922,0.303516,-0.5, + -0.84069,-0.541516,0,0.882548,0.259579,-0.5, + -0.849789,-0.488885,-0.197102,0.883764,0.275079,-0.5875, + -0.969635,-0.244558,0,0.867922,0.303516,-0.5, + -0.849789,-0.488885,-0.197102,0.883764,0.275079,-0.5875, + -0.976969,-0.18835,-0.100277,0.870135,0.316454,-0.5825, + -0.489368,-0.872077,0,0.904032,0.239732,-0.5, + -0.438575,-0.828046,-0.349274,0.90443,0.255712,-0.594723, + -0.849789,-0.488885,-0.197102,0.883764,0.275079,-0.5875, + -0.489368,-0.872077,0,0.904032,0.239732,-0.5, + -0.849789,-0.488885,-0.197102,0.883764,0.275079,-0.5875, + -0.84069,-0.541516,0,0.882548,0.259579,-0.5, + -0.455383,-0.61687,-0.641949,0.905018,0.303308,-0.673773, + -0.826325,-0.370128,-0.424489,0.884979,0.320204,-0.660875, + -0.849789,-0.488885,-0.197102,0.883764,0.275079,-0.5875, + -0.455383,-0.61687,-0.641949,0.905018,0.303308,-0.673773, + -0.849789,-0.488885,-0.197102,0.883764,0.275079,-0.5875, + -0.438575,-0.828046,-0.349274,0.90443,0.255712,-0.594723, + -0.959446,-0.199329,0.199329,0.87462,0.342412,-0.361333, + -0.826326,-0.370128,0.424489,0.884979,0.320204,-0.339125, + -0.849789,-0.488886,0.197102,0.883764,0.275079,-0.4125, + -0.959446,-0.199329,0.199329,0.87462,0.342412,-0.361333, + -0.849789,-0.488886,0.197102,0.883764,0.275079,-0.4125, + -0.976969,-0.18835,0.100277,0.870135,0.316454,-0.4175, + -0.455383,-0.61687,0.641949,0.905018,0.303308,-0.326227, + -0.438574,-0.828046,0.349274,0.90443,0.255712,-0.405277, + -0.849789,-0.488886,0.197102,0.883764,0.275079,-0.4125, + -0.455383,-0.61687,0.641949,0.905018,0.303308,-0.326227, + -0.849789,-0.488886,0.197102,0.883764,0.275079,-0.4125, + -0.826326,-0.370128,0.424489,0.884979,0.320204,-0.339125, + -0.489368,-0.872077,0,0.904032,0.239732,-0.5, + -0.84069,-0.541516,0,0.882548,0.259579,-0.5, + -0.849789,-0.488886,0.197102,0.883764,0.275079,-0.4125, + -0.489368,-0.872077,0,0.904032,0.239732,-0.5, + -0.849789,-0.488886,0.197102,0.883764,0.275079,-0.4125, + -0.438574,-0.828046,0.349274,0.90443,0.255712,-0.405277, + -0.969635,-0.244558,0,0.867922,0.303516,-0.5, + -0.976969,-0.18835,0.100277,0.870135,0.316454,-0.4175, + -0.849789,-0.488886,0.197102,0.883764,0.275079,-0.4125, + -0.969635,-0.244558,0,0.867922,0.303516,-0.5, + -0.849789,-0.488886,0.197102,0.883764,0.275079,-0.4125, + -0.84069,-0.541516,0,0.882548,0.259579,-0.5, + -0.088988,-0.705766,-0.702834,0.934927,0.293873,-0.671218, + -0.103837,-0.707557,-0.698986,0.974692,0.281188,-0.659921, + 0.110573,-0.360362,-0.926236,0.979421,0.352064,-0.703536, + 0.110573,-0.360362,-0.926236,0.979421,0.352064,-0.703536, + 0.06872,-0.352527,-0.933275,0.936818,0.370973,-0.717914, + -0.088988,-0.705766,-0.702834,0.934927,0.293873,-0.671218, + 0.291602,-0.024985,-0.956213,0.985095,0.437116,-0.718074, + 0.214013,-0.011144,-0.976767,0.939088,0.463494,-0.73348, + 0.06872,-0.352527,-0.933275,0.936818,0.370973,-0.717914, + 0.291602,-0.024985,-0.956213,0.985095,0.437116,-0.718074, + 0.06872,-0.352527,-0.933275,0.936818,0.370973,-0.717914, + 0.110573,-0.360362,-0.926236,0.979421,0.352064,-0.703536, + 0.214013,-0.011144,-0.976767,0.939088,0.463494,-0.73348, + -0.2474,0.003968,-0.968905,0.905451,0.476683,-0.737495, + -0.359172,-0.316853,-0.877838,0.905187,0.382177,-0.721479, + -0.359172,-0.316853,-0.877838,0.905187,0.382177,-0.721479, + 0.06872,-0.352527,-0.933275,0.936818,0.370973,-0.717914, + 0.214013,-0.011144,-0.976767,0.939088,0.463494,-0.73348, + -0.455383,-0.61687,-0.641949,0.905018,0.303308,-0.673773, + -0.088988,-0.705766,-0.702834,0.934927,0.293873,-0.671218, + 0.06872,-0.352527,-0.933275,0.936818,0.370973,-0.717914, + -0.455383,-0.61687,-0.641949,0.905018,0.303308,-0.673773, + 0.06872,-0.352527,-0.933275,0.936818,0.370973,-0.717914, + -0.359172,-0.316853,-0.877838,0.905187,0.382177,-0.721479, + 0.575185,0.562873,-0.59358,0.995497,0.593044,-0.659921, + 0.429706,0.63213,-0.644798,0.943249,0.633115,-0.671218, + 0.345208,0.311816,-0.885213,0.941357,0.556014,-0.717914, + 0.575185,0.562873,-0.59358,0.995497,0.593044,-0.659921, + 0.345208,0.311816,-0.885213,0.941357,0.556014,-0.717914, + 0.447221,0.281892,-0.84884,0.990769,0.522168,-0.703536, + 0.429706,0.63213,-0.644798,0.943249,0.633115,-0.671218, + -0.115437,0.702917,-0.701842,0.907098,0.650057,-0.673773, + -0.23409,0.368714,-0.899584,0.906322,0.571188,-0.721479, + -0.23409,0.368714,-0.899584,0.906322,0.571188,-0.721479, + 0.345208,0.311816,-0.885213,0.941357,0.556014,-0.717914, + 0.429706,0.63213,-0.644798,0.943249,0.633115,-0.671218, + -0.2474,0.003968,-0.968905,0.905451,0.476683,-0.737495, + 0.214013,-0.011144,-0.976767,0.939088,0.463494,-0.73348, + 0.345208,0.311816,-0.885213,0.941357,0.556014,-0.717914, + -0.2474,0.003968,-0.968905,0.905451,0.476683,-0.737495, + 0.345208,0.311816,-0.885213,0.941357,0.556014,-0.717914, + -0.23409,0.368714,-0.899584,0.906322,0.571188,-0.721479, + 0.214013,-0.011144,-0.976767,0.939088,0.463494,-0.73348, + 0.291602,-0.024985,-0.956213,0.985095,0.437116,-0.718074, + 0.447221,0.281892,-0.84884,0.990769,0.522168,-0.703536, + 0.447221,0.281892,-0.84884,0.990769,0.522168,-0.703536, + 0.345208,0.311816,-0.885213,0.941357,0.556014,-0.717914, + 0.214013,-0.011144,-0.976767,0.939088,0.463494,-0.73348, + -0.959446,0.199329,-0.199329,0.87462,0.619745,-0.638667, + -0.976969,0.100277,-0.18835,0.870135,0.563579,-0.664625, + -0.859317,0.197434,-0.471799,0.883764,0.568579,-0.706, + -0.959446,0.199329,-0.199329,0.87462,0.619745,-0.638667, + -0.859317,0.197434,-0.471799,0.883764,0.568579,-0.706, + -0.714284,0.497638,-0.492092,0.884979,0.641954,-0.660875, + -0.969635,0,-0.244558,0.867922,0.481079,-0.677562, + -0.761523,0.030964,-0.647398,0.882548,0.481079,-0.7215, + -0.859317,0.197434,-0.471799,0.883764,0.568579,-0.706, + -0.969635,0,-0.244558,0.867922,0.481079,-0.677562, + -0.859317,0.197434,-0.471799,0.883764,0.568579,-0.706, + -0.976969,0.100277,-0.18835,0.870135,0.563579,-0.664625, + -0.761523,0.030964,-0.647398,0.882548,0.481079,-0.7215, + -0.2474,0.003968,-0.968905,0.905451,0.476683,-0.737495, + -0.23409,0.368714,-0.899584,0.906322,0.571188,-0.721479, + -0.23409,0.368714,-0.899584,0.906322,0.571188,-0.721479, + -0.859317,0.197434,-0.471799,0.883764,0.568579,-0.706, + -0.761523,0.030964,-0.647398,0.882548,0.481079,-0.7215, + -0.23409,0.368714,-0.899584,0.906322,0.571188,-0.721479, + -0.115437,0.702917,-0.701842,0.907098,0.650057,-0.673773, + -0.714284,0.497638,-0.492092,0.884979,0.641954,-0.660875, + -0.714284,0.497638,-0.492092,0.884979,0.641954,-0.660875, + -0.859317,0.197434,-0.471799,0.883764,0.568579,-0.706, + -0.23409,0.368714,-0.899584,0.906322,0.571188,-0.721479, + -0.959446,-0.199329,-0.199329,0.87462,0.342412,-0.638667, + -0.826325,-0.370128,-0.424489,0.884979,0.320204,-0.660875, + -0.845588,-0.179708,-0.502678,0.883764,0.393579,-0.706, + -0.959446,-0.199329,-0.199329,0.87462,0.342412,-0.638667, + -0.845588,-0.179708,-0.502678,0.883764,0.393579,-0.706, + -0.976969,-0.100277,-0.18835,0.870135,0.398579,-0.664625, + -0.826325,-0.370128,-0.424489,0.884979,0.320204,-0.660875, + -0.455383,-0.61687,-0.641949,0.905018,0.303308,-0.673773, + -0.359172,-0.316853,-0.877838,0.905187,0.382177,-0.721479, + -0.359172,-0.316853,-0.877838,0.905187,0.382177,-0.721479, + -0.845588,-0.179708,-0.502678,0.883764,0.393579,-0.706, + -0.826325,-0.370128,-0.424489,0.884979,0.320204,-0.660875, + -0.2474,0.003968,-0.968905,0.905451,0.476683,-0.737495, + -0.761523,0.030964,-0.647398,0.882548,0.481079,-0.7215, + -0.845588,-0.179708,-0.502678,0.883764,0.393579,-0.706, + -0.2474,0.003968,-0.968905,0.905451,0.476683,-0.737495, + -0.845588,-0.179708,-0.502678,0.883764,0.393579,-0.706, + -0.359172,-0.316853,-0.877838,0.905187,0.382177,-0.721479, + -0.969635,0,-0.244558,0.867922,0.481079,-0.677562, + -0.976969,-0.100277,-0.18835,0.870135,0.398579,-0.664625, + -0.845588,-0.179708,-0.502678,0.883764,0.393579,-0.706, + -0.969635,0,-0.244558,0.867922,0.481079,-0.677562, + -0.845588,-0.179708,-0.502678,0.883764,0.393579,-0.706, + -0.761523,0.030964,-0.647398,0.882548,0.481079,-0.7215, + -0.959446,0.199329,0.199329,0.87462,0.619745,-0.361333, + -0.976969,0.100277,0.18835,0.870135,0.563579,-0.335375, + -0.993621,0.079739,0.079739,0.861889,0.571579,-0.4095, + -0.959446,0.199329,0.199329,0.87462,0.619745,-0.361333, + -0.993621,0.079739,0.079739,0.861889,0.571579,-0.4095, + -0.976969,0.188349,0.100277,0.870135,0.645704,-0.4175, + -0.976969,0.100277,0.18835,0.870135,0.563579,-0.335375, + -0.969635,0,0.244558,0.867922,0.481079,-0.322437, + -0.996384,0,0.08496,0.859111,0.481079,-0.40225, + -0.996384,0,0.08496,0.859111,0.481079,-0.40225, + -0.993621,0.079739,0.079739,0.861889,0.571579,-0.4095, + -0.976969,0.100277,0.18835,0.870135,0.563579,-0.335375, + -1,0,0,0.856159,0.481079,-0.5, + -0.996384,0.08496,0,0.859111,0.578829,-0.5, + -0.993621,0.079739,0.079739,0.861889,0.571579,-0.4095, + -1,0,0,0.856159,0.481079,-0.5, + -0.993621,0.079739,0.079739,0.861889,0.571579,-0.4095, + -0.996384,0,0.08496,0.859111,0.481079,-0.40225, + -0.996384,0.08496,0,0.859111,0.578829,-0.5, + -0.969635,0.244558,0,0.867922,0.658641,-0.5, + -0.976969,0.188349,0.100277,0.870135,0.645704,-0.4175, + -0.976969,0.188349,0.100277,0.870135,0.645704,-0.4175, + -0.993621,0.079739,0.079739,0.861889,0.571579,-0.4095, + -0.996384,0.08496,0,0.859111,0.578829,-0.5, + -0.959446,-0.199329,0.199329,0.87462,0.342412,-0.361333, + -0.976969,-0.18835,0.100277,0.870135,0.316454,-0.4175, + -0.993621,-0.079739,0.079739,0.861889,0.390579,-0.4095, + -0.959446,-0.199329,0.199329,0.87462,0.342412,-0.361333, + -0.993621,-0.079739,0.079739,0.861889,0.390579,-0.4095, + -0.976969,-0.100277,0.18835,0.870135,0.398579,-0.335375, + -0.976969,-0.18835,0.100277,0.870135,0.316454,-0.4175, + -0.969635,-0.244558,0,0.867922,0.303516,-0.5, + -0.996384,-0.08496,0,0.859111,0.383329,-0.5, + -0.996384,-0.08496,0,0.859111,0.383329,-0.5, + -0.993621,-0.079739,0.079739,0.861889,0.390579,-0.4095, + -0.976969,-0.18835,0.100277,0.870135,0.316454,-0.4175, + -1,0,0,0.856159,0.481079,-0.5, + -0.996384,0,0.08496,0.859111,0.481079,-0.40225, + -0.993621,-0.079739,0.079739,0.861889,0.390579,-0.4095, + -1,0,0,0.856159,0.481079,-0.5, + -0.993621,-0.079739,0.079739,0.861889,0.390579,-0.4095, + -0.996384,-0.08496,0,0.859111,0.383329,-0.5, + -0.996384,0,0.08496,0.859111,0.481079,-0.40225, + -0.969635,0,0.244558,0.867922,0.481079,-0.322437, + -0.976969,-0.100277,0.18835,0.870135,0.398579,-0.335375, + -0.976969,-0.100277,0.18835,0.870135,0.398579,-0.335375, + -0.993621,-0.079739,0.079739,0.861889,0.390579,-0.4095, + -0.996384,0,0.08496,0.859111,0.481079,-0.40225, + -0.959446,-0.199329,-0.199329,0.87462,0.342412,-0.638667, + -0.976969,-0.100277,-0.18835,0.870135,0.398579,-0.664625, + -0.993621,-0.079739,-0.079739,0.861889,0.390579,-0.5905, + -0.959446,-0.199329,-0.199329,0.87462,0.342412,-0.638667, + -0.993621,-0.079739,-0.079739,0.861889,0.390579,-0.5905, + -0.976969,-0.18835,-0.100277,0.870135,0.316454,-0.5825, + -0.976969,-0.100277,-0.18835,0.870135,0.398579,-0.664625, + -0.969635,0,-0.244558,0.867922,0.481079,-0.677562, + -0.996384,0,-0.08496,0.859111,0.481079,-0.59775, + -0.996384,0,-0.08496,0.859111,0.481079,-0.59775, + -0.993621,-0.079739,-0.079739,0.861889,0.390579,-0.5905, + -0.976969,-0.100277,-0.18835,0.870135,0.398579,-0.664625, + -1,0,0,0.856159,0.481079,-0.5, + -0.996384,-0.08496,0,0.859111,0.383329,-0.5, + -0.993621,-0.079739,-0.079739,0.861889,0.390579,-0.5905, + -1,0,0,0.856159,0.481079,-0.5, + -0.993621,-0.079739,-0.079739,0.861889,0.390579,-0.5905, + -0.996384,0,-0.08496,0.859111,0.481079,-0.59775, + -0.996384,-0.08496,0,0.859111,0.383329,-0.5, + -0.969635,-0.244558,0,0.867922,0.303516,-0.5, + -0.976969,-0.18835,-0.100277,0.870135,0.316454,-0.5825, + -0.976969,-0.18835,-0.100277,0.870135,0.316454,-0.5825, + -0.993621,-0.079739,-0.079739,0.861889,0.390579,-0.5905, + -0.996384,-0.08496,0,0.859111,0.383329,-0.5, + -0.959446,0.199329,-0.199329,0.87462,0.619745,-0.638667, + -0.976969,0.188349,-0.100277,0.870135,0.645704,-0.5825, + -0.993621,0.079739,-0.079739,0.861889,0.571579,-0.5905, + -0.959446,0.199329,-0.199329,0.87462,0.619745,-0.638667, + -0.993621,0.079739,-0.079739,0.861889,0.571579,-0.5905, + -0.976969,0.100277,-0.18835,0.870135,0.563579,-0.664625, + -0.976969,0.188349,-0.100277,0.870135,0.645704,-0.5825, + -0.969635,0.244558,0,0.867922,0.658641,-0.5, + -0.996384,0.08496,0,0.859111,0.578829,-0.5, + -0.996384,0.08496,0,0.859111,0.578829,-0.5, + -0.993621,0.079739,-0.079739,0.861889,0.571579,-0.5905, + -0.976969,0.188349,-0.100277,0.870135,0.645704,-0.5825, + -1,0,0,0.856159,0.481079,-0.5, + -0.996384,0,-0.08496,0.859111,0.481079,-0.59775, + -0.993621,0.079739,-0.079739,0.861889,0.571579,-0.5905, + -1,0,0,0.856159,0.481079,-0.5, + -0.993621,0.079739,-0.079739,0.861889,0.571579,-0.5905, + -0.996384,0.08496,0,0.859111,0.578829,-0.5, + -0.996384,0,-0.08496,0.859111,0.481079,-0.59775, + -0.969635,0,-0.244558,0.867922,0.481079,-0.677562, + -0.976969,0.100277,-0.18835,0.870135,0.563579,-0.664625, + -0.976969,0.100277,-0.18835,0.870135,0.563579,-0.664625, + -0.993621,0.079739,-0.079739,0.861889,0.571579,-0.5905, + -0.996384,0,-0.08496,0.859111,0.481079,-0.59775, + 0.642358,0.715039,-0.275852,0.998334,0.63557,-0.58723, + 0.575185,0.562873,-0.59358,0.995497,0.593044,-0.659921, + 0.599141,0.555368,-0.576712,1.065911,0.531759,-0.646592, + 0.599141,0.555368,-0.576712,1.065911,0.531759,-0.646592, + 0.668157,0.701389,-0.248233,1.071585,0.569561,-0.579959, + 0.642358,0.715039,-0.275852,0.998334,0.63557,-0.58723, + 0.599141,0.555368,-0.576712,1.065911,0.531759,-0.646592, + 0.585003,0.517563,-0.62442,1.149095,0.453892,-0.633787, + 0.682874,0.680924,-0.264625,1.158568,0.486483,-0.572975, + 0.682874,0.680924,-0.264625,1.158568,0.486483,-0.572975, + 0.668157,0.701389,-0.248233,1.071585,0.569561,-0.579959, + 0.599141,0.555368,-0.576712,1.065911,0.531759,-0.646592, + 0.682874,0.680924,-0.264625,1.158568,0.486483,-0.572975, + 0.700187,0.71396,0,1.161726,0.497346,-0.5, + 0.687547,0.72614,0,1.073477,0.582162,-0.5, + 0.687547,0.72614,0,1.073477,0.582162,-0.5, + 0.668157,0.701389,-0.248233,1.071585,0.569561,-0.579959, + 0.682874,0.680924,-0.264625,1.158568,0.486483,-0.572975, + 0.662437,0.749118,0,0.99928,0.649745,-0.5, + 0.642358,0.715039,-0.275852,0.998334,0.63557,-0.58723, + 0.668157,0.701389,-0.248233,1.071585,0.569561,-0.579959, + 0.662437,0.749118,0,0.99928,0.649745,-0.5, + 0.668157,0.701389,-0.248233,1.071585,0.569561,-0.579959, + 0.687547,0.72614,0,1.073477,0.582162,-0.5, + 0.568513,0.503436,-0.65065,1.23965,0.364075,-0.624059, + 0.547232,0.498931,-0.672015,1.332183,0.266938,-0.619965, + 0.694102,0.647395,-0.314805,1.351457,0.289652,-0.565436, + 0.694102,0.647395,-0.314805,1.351457,0.289652,-0.565436, + 0.688382,0.659806,-0.301308,1.253715,0.391468,-0.567669, + 0.568513,0.503436,-0.65065,1.23965,0.364075,-0.624059, + 0.726158,0.687528,0,1.357882,0.297224,-0.5, + 0.71287,0.701296,0,1.258403,0.4006,-0.5, + 0.688382,0.659806,-0.301308,1.253715,0.391468,-0.567669, + 0.726158,0.687528,0,1.357882,0.297224,-0.5, + 0.688382,0.659806,-0.301308,1.253715,0.391468,-0.567669, + 0.694102,0.647395,-0.314805,1.351457,0.289652,-0.565436, + 0.71287,0.701296,0,1.258403,0.4006,-0.5, + 0.700187,0.71396,0,1.161726,0.497346,-0.5, + 0.682874,0.680924,-0.264625,1.158568,0.486483,-0.572975, + 0.682874,0.680924,-0.264625,1.158568,0.486483,-0.572975, + 0.688382,0.659806,-0.301308,1.253715,0.391468,-0.567669, + 0.71287,0.701296,0,1.258403,0.4006,-0.5, + 0.585003,0.517563,-0.62442,1.149095,0.453892,-0.633787, + 0.568513,0.503436,-0.65065,1.23965,0.364075,-0.624059, + 0.688382,0.659806,-0.301308,1.253715,0.391468,-0.567669, + 0.585003,0.517563,-0.62442,1.149095,0.453892,-0.633787, + 0.688382,0.659806,-0.301308,1.253715,0.391468,-0.567669, + 0.682874,0.680924,-0.264625,1.158568,0.486483,-0.572975, + 0.694102,0.647395,0.314805,1.351457,0.289652,-0.434564, + 0.547232,0.498931,0.672016,1.332183,0.266938,-0.380035, + 0.568513,0.503436,0.65065,1.23965,0.364075,-0.375941, + 0.568513,0.503436,0.65065,1.23965,0.364075,-0.375941, + 0.688382,0.659806,0.301308,1.253715,0.391468,-0.432331, + 0.694102,0.647395,0.314805,1.351457,0.289652,-0.434564, + 0.585003,0.517563,0.62442,1.149095,0.453892,-0.366213, + 0.682874,0.680923,0.264625,1.158568,0.486483,-0.427025, + 0.688382,0.659806,0.301308,1.253715,0.391468,-0.432331, + 0.585003,0.517563,0.62442,1.149095,0.453892,-0.366213, + 0.688382,0.659806,0.301308,1.253715,0.391468,-0.432331, + 0.568513,0.503436,0.65065,1.23965,0.364075,-0.375941, + 0.682874,0.680923,0.264625,1.158568,0.486483,-0.427025, + 0.700187,0.71396,0,1.161726,0.497346,-0.5, + 0.71287,0.701296,0,1.258403,0.4006,-0.5, + 0.71287,0.701296,0,1.258403,0.4006,-0.5, + 0.688382,0.659806,0.301308,1.253715,0.391468,-0.432331, + 0.682874,0.680923,0.264625,1.158568,0.486483,-0.427025, + 0.726158,0.687528,0,1.357882,0.297224,-0.5, + 0.694102,0.647395,0.314805,1.351457,0.289652,-0.434564, + 0.688382,0.659806,0.301308,1.253715,0.391468,-0.432331, + 0.726158,0.687528,0,1.357882,0.297224,-0.5, + 0.688382,0.659806,0.301308,1.253715,0.391468,-0.432331, + 0.71287,0.701296,0,1.258403,0.4006,-0.5, + 0.599141,0.555368,0.576712,1.065911,0.531759,-0.353408, + 0.575185,0.562873,0.59358,0.995497,0.593044,-0.340079, + 0.642358,0.715039,0.275852,0.998334,0.63557,-0.41277, + 0.642358,0.715039,0.275852,0.998334,0.63557,-0.41277, + 0.668157,0.701389,0.248233,1.071585,0.569561,-0.420041, + 0.599141,0.555368,0.576712,1.065911,0.531759,-0.353408, + 0.662437,0.749118,0,0.99928,0.649745,-0.5, + 0.687547,0.72614,0,1.073477,0.582162,-0.5, + 0.668157,0.701389,0.248233,1.071585,0.569561,-0.420041, + 0.662437,0.749118,0,0.99928,0.649745,-0.5, + 0.668157,0.701389,0.248233,1.071585,0.569561,-0.420041, + 0.642358,0.715039,0.275852,0.998334,0.63557,-0.41277, + 0.687547,0.72614,0,1.073477,0.582162,-0.5, + 0.700187,0.71396,0,1.161726,0.497346,-0.5, + 0.682874,0.680923,0.264625,1.158568,0.486483,-0.427025, + 0.682874,0.680923,0.264625,1.158568,0.486483,-0.427025, + 0.668157,0.701389,0.248233,1.071585,0.569561,-0.420041, + 0.687547,0.72614,0,1.073477,0.582162,-0.5, + 0.682874,0.680923,0.264625,1.158568,0.486483,-0.427025, + 0.585003,0.517563,0.62442,1.149095,0.453892,-0.366213, + 0.599141,0.555368,0.576712,1.065911,0.531759,-0.353408, + 0.599141,0.555368,0.576712,1.065911,0.531759,-0.353408, + 0.668157,0.701389,0.248233,1.071585,0.569561,-0.420041, + 0.682874,0.680923,0.264625,1.158568,0.486483,-0.427025, + -0.103837,-0.707557,-0.698986,0.974692,0.281188,-0.659921, + -0.251782,-0.681632,-0.687011,1.024302,0.254547,-0.646592, + 0.010629,-0.366255,-0.930454,1.033759,0.31755,-0.686572, + -0.103837,-0.707557,-0.698986,0.974692,0.281188,-0.659921, + 0.010629,-0.366255,-0.930454,1.033759,0.31755,-0.686572, + 0.110573,-0.360362,-0.926236,0.979421,0.352064,-0.703536, + -0.251782,-0.681632,-0.687011,1.024302,0.254547,-0.646592, + -0.405056,-0.645141,-0.64786,1.079619,0.214898,-0.633787, + -0.092335,-0.356775,-0.929616,1.095409,0.269215,-0.670274, + -0.092335,-0.356775,-0.929616,1.095409,0.269215,-0.670274, + 0.010629,-0.366255,-0.930454,1.033759,0.31755,-0.686572, + -0.251782,-0.681632,-0.687011,1.024302,0.254547,-0.646592, + 0.167416,-0.052778,-0.984473,1.114357,0.334395,-0.682436, + 0.238763,-0.041303,-0.970199,1.045107,0.393153,-0.699898, + 0.010629,-0.366255,-0.930454,1.033759,0.31755,-0.686572, + 0.167416,-0.052778,-0.984473,1.114357,0.334395,-0.682436, + 0.010629,-0.366255,-0.930454,1.033759,0.31755,-0.686572, + -0.092335,-0.356775,-0.929616,1.095409,0.269215,-0.670274, + 0.238763,-0.041303,-0.970199,1.045107,0.393153,-0.699898, + 0.291602,-0.024985,-0.956213,0.985095,0.437116,-0.718074, + 0.110573,-0.360362,-0.926236,0.979421,0.352064,-0.703536, + 0.110573,-0.360362,-0.926236,0.979421,0.352064,-0.703536, + 0.010629,-0.366255,-0.930454,1.033759,0.31755,-0.686572, + 0.238763,-0.041303,-0.970199,1.045107,0.393153,-0.699898, + -0.469451,-0.529408,-0.706642,1.136509,0.163187,-0.624059, + -0.591819,-0.448047,-0.670078,1.190836,0.100363,-0.619965, + -0.293198,-0.238286,-0.925881,1.22296,0.138221,-0.652683, + -0.293198,-0.238286,-0.925881,1.22296,0.138221,-0.652683, + -0.19623,-0.318838,-0.927274,1.15995,0.208844,-0.657894, + -0.469451,-0.529408,-0.706642,1.136509,0.163187,-0.624059, + 0.003001,-0.001255,-0.999995,1.261509,0.18365,-0.663589, + 0.084953,-0.04518,-0.99536,1.18808,0.263631,-0.669172, + -0.19623,-0.318838,-0.927274,1.15995,0.208844,-0.657894, + 0.003001,-0.001255,-0.999995,1.261509,0.18365,-0.663589, + -0.19623,-0.318838,-0.927274,1.15995,0.208844,-0.657894, + -0.293198,-0.238286,-0.925881,1.22296,0.138221,-0.652683, + 0.084953,-0.04518,-0.99536,1.18808,0.263631,-0.669172, + 0.167416,-0.052778,-0.984473,1.114357,0.334395,-0.682436, + -0.092335,-0.356775,-0.929616,1.095409,0.269215,-0.670274, + -0.092335,-0.356775,-0.929616,1.095409,0.269215,-0.670274, + -0.19623,-0.318838,-0.927274,1.15995,0.208844,-0.657894, + 0.084953,-0.04518,-0.99536,1.18808,0.263631,-0.669172, + -0.405056,-0.645141,-0.64786,1.079619,0.214898,-0.633787, + -0.469451,-0.529408,-0.706642,1.136509,0.163187,-0.624059, + -0.19623,-0.318838,-0.927274,1.15995,0.208844,-0.657894, + -0.405056,-0.645141,-0.64786,1.079619,0.214898,-0.633787, + -0.19623,-0.318838,-0.927274,1.15995,0.208844,-0.657894, + -0.092335,-0.356775,-0.929616,1.095409,0.269215,-0.670274, + 0.547232,0.498931,-0.672015,1.332183,0.266938,-0.619965, + 0.568513,0.503436,-0.65065,1.23965,0.364075,-0.624059, + 0.340631,0.234777,-0.910412,1.216209,0.318418,-0.657894, + 0.547232,0.498931,-0.672015,1.332183,0.266938,-0.619965, + 0.340631,0.234777,-0.910412,1.216209,0.318418,-0.657894, + 0.284277,0.249094,-0.925818,1.300058,0.22908,-0.652683, + 0.568513,0.503436,-0.65065,1.23965,0.364075,-0.624059, + 0.585003,0.517563,-0.62442,1.149095,0.453892,-0.633787, + 0.392854,0.244042,-0.886628,1.133305,0.399575,-0.670274, + 0.392854,0.244042,-0.886628,1.133305,0.399575,-0.670274, + 0.340631,0.234777,-0.910412,1.216209,0.318418,-0.657894, + 0.568513,0.503436,-0.65065,1.23965,0.364075,-0.624059, + 0.167416,-0.052778,-0.984473,1.114357,0.334395,-0.682436, + 0.084953,-0.04518,-0.99536,1.18808,0.263631,-0.669172, + 0.340631,0.234777,-0.910412,1.216209,0.318418,-0.657894, + 0.167416,-0.052778,-0.984473,1.114357,0.334395,-0.682436, + 0.340631,0.234777,-0.910412,1.216209,0.318418,-0.657894, + 0.392854,0.244042,-0.886628,1.133305,0.399575,-0.670274, + 0.084953,-0.04518,-0.99536,1.18808,0.263631,-0.669172, + 0.003001,-0.001255,-0.999995,1.261509,0.18365,-0.663589, + 0.284277,0.249094,-0.925818,1.300058,0.22908,-0.652683, + 0.284277,0.249094,-0.925818,1.300058,0.22908,-0.652683, + 0.340631,0.234777,-0.910412,1.216209,0.318418,-0.657894, + 0.084953,-0.04518,-0.99536,1.18808,0.263631,-0.669172, + 0.599141,0.555368,-0.576712,1.065911,0.531759,-0.646592, + 0.575185,0.562873,-0.59358,0.995497,0.593044,-0.659921, + 0.447221,0.281892,-0.84884,0.990769,0.522168,-0.703536, + 0.447221,0.281892,-0.84884,0.990769,0.522168,-0.703536, + 0.431005,0.262774,-0.86324,1.056455,0.468757,-0.686572, + 0.599141,0.555368,-0.576712,1.065911,0.531759,-0.646592, + 0.291602,-0.024985,-0.956213,0.985095,0.437116,-0.718074, + 0.238763,-0.041303,-0.970199,1.045107,0.393153,-0.699898, + 0.431005,0.262774,-0.86324,1.056455,0.468757,-0.686572, + 0.291602,-0.024985,-0.956213,0.985095,0.437116,-0.718074, + 0.431005,0.262774,-0.86324,1.056455,0.468757,-0.686572, + 0.447221,0.281892,-0.84884,0.990769,0.522168,-0.703536, + 0.238763,-0.041303,-0.970199,1.045107,0.393153,-0.699898, + 0.167416,-0.052778,-0.984473,1.114357,0.334395,-0.682436, + 0.392854,0.244042,-0.886628,1.133305,0.399575,-0.670274, + 0.392854,0.244042,-0.886628,1.133305,0.399575,-0.670274, + 0.431005,0.262774,-0.86324,1.056455,0.468757,-0.686572, + 0.238763,-0.041303,-0.970199,1.045107,0.393153,-0.699898, + 0.585003,0.517563,-0.62442,1.149095,0.453892,-0.633787, + 0.599141,0.555368,-0.576712,1.065911,0.531759,-0.646592, + 0.431005,0.262774,-0.86324,1.056455,0.468757,-0.686572, + 0.585003,0.517563,-0.62442,1.149095,0.453892,-0.633787, + 0.431005,0.262774,-0.86324,1.056455,0.468757,-0.686572, + 0.392854,0.244042,-0.886628,1.133305,0.399575,-0.670274, + -0.103837,-0.707557,0.698986,0.974692,0.281188,-0.340079, + 0.110573,-0.360361,0.926236,0.979421,0.352064,-0.296464, + 0.010629,-0.366254,0.930454,1.033759,0.31755,-0.313428, + -0.103837,-0.707557,0.698986,0.974692,0.281188,-0.340079, + 0.010629,-0.366254,0.930454,1.033759,0.31755,-0.313428, + -0.251782,-0.681632,0.68701,1.024302,0.254547,-0.353408, + 0.110573,-0.360361,0.926236,0.979421,0.352064,-0.296464, + 0.291601,-0.024985,0.956214,0.985095,0.437116,-0.281926, + 0.238762,-0.041303,0.970199,1.045107,0.393153,-0.300102, + 0.238762,-0.041303,0.970199,1.045107,0.393153,-0.300102, + 0.010629,-0.366254,0.930454,1.033759,0.31755,-0.313428, + 0.110573,-0.360361,0.926236,0.979421,0.352064,-0.296464, + 0.167415,-0.052778,0.984473,1.114357,0.334395,-0.317564, + -0.092335,-0.356776,0.929616,1.095409,0.269215,-0.329726, + 0.010629,-0.366254,0.930454,1.033759,0.31755,-0.313428, + 0.167415,-0.052778,0.984473,1.114357,0.334395,-0.317564, + 0.010629,-0.366254,0.930454,1.033759,0.31755,-0.313428, + 0.238762,-0.041303,0.970199,1.045107,0.393153,-0.300102, + -0.092335,-0.356776,0.929616,1.095409,0.269215,-0.329726, + -0.405056,-0.645141,0.64786,1.079619,0.214898,-0.366213, + -0.251782,-0.681632,0.68701,1.024302,0.254547,-0.353408, + -0.251782,-0.681632,0.68701,1.024302,0.254547,-0.353408, + 0.010629,-0.366254,0.930454,1.033759,0.31755,-0.313428, + -0.092335,-0.356776,0.929616,1.095409,0.269215,-0.329726, + 0.447221,0.281892,0.848841,0.990769,0.522168,-0.296464, + 0.575185,0.562873,0.59358,0.995497,0.593044,-0.340079, + 0.599141,0.555368,0.576712,1.065911,0.531759,-0.353408, + 0.599141,0.555368,0.576712,1.065911,0.531759,-0.353408, + 0.431005,0.262774,0.863241,1.056455,0.468757,-0.313428, + 0.447221,0.281892,0.848841,0.990769,0.522168,-0.296464, + 0.585003,0.517563,0.62442,1.149095,0.453892,-0.366213, + 0.392854,0.244041,0.886628,1.133305,0.399575,-0.329726, + 0.431005,0.262774,0.863241,1.056455,0.468757,-0.313428, + 0.585003,0.517563,0.62442,1.149095,0.453892,-0.366213, + 0.431005,0.262774,0.863241,1.056455,0.468757,-0.313428, + 0.599141,0.555368,0.576712,1.065911,0.531759,-0.353408, + 0.392854,0.244041,0.886628,1.133305,0.399575,-0.329726, + 0.167415,-0.052778,0.984473,1.114357,0.334395,-0.317564, + 0.238762,-0.041303,0.970199,1.045107,0.393153,-0.300102, + 0.238762,-0.041303,0.970199,1.045107,0.393153,-0.300102, + 0.431005,0.262774,0.863241,1.056455,0.468757,-0.313428, + 0.392854,0.244041,0.886628,1.133305,0.399575,-0.329726, + 0.291601,-0.024985,0.956214,0.985095,0.437116,-0.281926, + 0.447221,0.281892,0.848841,0.990769,0.522168,-0.296464, + 0.431005,0.262774,0.863241,1.056455,0.468757,-0.313428, + 0.291601,-0.024985,0.956214,0.985095,0.437116,-0.281926, + 0.431005,0.262774,0.863241,1.056455,0.468757,-0.313428, + 0.238762,-0.041303,0.970199,1.045107,0.393153,-0.300102, + 0.547232,0.498931,0.672016,1.332183,0.266938,-0.380035, + 0.284277,0.249093,0.925818,1.300058,0.22908,-0.347317, + 0.34063,0.234777,0.910412,1.216209,0.318418,-0.342106, + 0.547232,0.498931,0.672016,1.332183,0.266938,-0.380035, + 0.34063,0.234777,0.910412,1.216209,0.318418,-0.342106, + 0.568513,0.503436,0.65065,1.23965,0.364075,-0.375941, + 0.284277,0.249093,0.925818,1.300058,0.22908,-0.347317, + 0.003001,-0.001255,0.999995,1.261509,0.18365,-0.336411, + 0.084953,-0.04518,0.99536,1.18808,0.263631,-0.330828, + 0.084953,-0.04518,0.99536,1.18808,0.263631,-0.330828, + 0.34063,0.234777,0.910412,1.216209,0.318418,-0.342106, + 0.284277,0.249093,0.925818,1.300058,0.22908,-0.347317, + 0.167415,-0.052778,0.984473,1.114357,0.334395,-0.317564, + 0.392854,0.244041,0.886628,1.133305,0.399575,-0.329726, + 0.34063,0.234777,0.910412,1.216209,0.318418,-0.342106, + 0.167415,-0.052778,0.984473,1.114357,0.334395,-0.317564, + 0.34063,0.234777,0.910412,1.216209,0.318418,-0.342106, + 0.084953,-0.04518,0.99536,1.18808,0.263631,-0.330828, + 0.392854,0.244041,0.886628,1.133305,0.399575,-0.329726, + 0.585003,0.517563,0.62442,1.149095,0.453892,-0.366213, + 0.568513,0.503436,0.65065,1.23965,0.364075,-0.375941, + 0.568513,0.503436,0.65065,1.23965,0.364075,-0.375941, + 0.34063,0.234777,0.910412,1.216209,0.318418,-0.342106, + 0.392854,0.244041,0.886628,1.133305,0.399575,-0.329726, + -0.293197,-0.238286,0.925881,1.22296,0.138221,-0.347317, + -0.591819,-0.448047,0.670078,1.190836,0.100363,-0.380035, + -0.469451,-0.529408,0.706642,1.136509,0.163187,-0.375941, + -0.469451,-0.529408,0.706642,1.136509,0.163187,-0.375941, + -0.19623,-0.318838,0.927274,1.15995,0.208844,-0.342106, + -0.293197,-0.238286,0.925881,1.22296,0.138221,-0.347317, + -0.405056,-0.645141,0.64786,1.079619,0.214898,-0.366213, + -0.092335,-0.356776,0.929616,1.095409,0.269215,-0.329726, + -0.19623,-0.318838,0.927274,1.15995,0.208844,-0.342106, + -0.405056,-0.645141,0.64786,1.079619,0.214898,-0.366213, + -0.19623,-0.318838,0.927274,1.15995,0.208844,-0.342106, + -0.469451,-0.529408,0.706642,1.136509,0.163187,-0.375941, + -0.092335,-0.356776,0.929616,1.095409,0.269215,-0.329726, + 0.167415,-0.052778,0.984473,1.114357,0.334395,-0.317564, + 0.084953,-0.04518,0.99536,1.18808,0.263631,-0.330828, + 0.084953,-0.04518,0.99536,1.18808,0.263631,-0.330828, + -0.19623,-0.318838,0.927274,1.15995,0.208844,-0.342106, + -0.092335,-0.356776,0.929616,1.095409,0.269215,-0.329726, + 0.003001,-0.001255,0.999995,1.261509,0.18365,-0.336411, + -0.293197,-0.238286,0.925881,1.22296,0.138221,-0.347317, + -0.19623,-0.318838,0.927274,1.15995,0.208844,-0.342106, + 0.003001,-0.001255,0.999995,1.261509,0.18365,-0.336411, + -0.19623,-0.318838,0.927274,1.15995,0.208844,-0.342106, + 0.084953,-0.04518,0.99536,1.18808,0.263631,-0.330828, + -0.251782,-0.681632,-0.687011,1.024302,0.254547,-0.646592, + -0.103837,-0.707557,-0.698986,0.974692,0.281188,-0.659921, + -0.260846,-0.906261,-0.332641,0.971855,0.238662,-0.58723, + -0.260846,-0.906261,-0.332641,0.971855,0.238662,-0.58723, + -0.42869,-0.845027,-0.319616,1.018628,0.216746,-0.579959, + -0.251782,-0.681632,-0.687011,1.024302,0.254547,-0.646592, + -0.339022,-0.940778,0,0.97091,0.224487,-0.5, + -0.49913,-0.866527,0,1.016736,0.204145,-0.5, + -0.42869,-0.845027,-0.319616,1.018628,0.216746,-0.579959, + -0.339022,-0.940778,0,0.97091,0.224487,-0.5, + -0.42869,-0.845027,-0.319616,1.018628,0.216746,-0.579959, + -0.260846,-0.906261,-0.332641,0.971855,0.238662,-0.58723, + -0.49913,-0.866527,0,1.016736,0.204145,-0.5, + -0.60511,-0.796142,0,1.066987,0.171444,-0.5, + -0.573691,-0.778283,-0.255254,1.070145,0.182308,-0.572975, + -0.573691,-0.778283,-0.255254,1.070145,0.182308,-0.572975, + -0.42869,-0.845027,-0.319616,1.018628,0.216746,-0.579959, + -0.49913,-0.866527,0,1.016736,0.204145,-0.5, + -0.405056,-0.645141,-0.64786,1.079619,0.214898,-0.633787, + -0.251782,-0.681632,-0.687011,1.024302,0.254547,-0.646592, + -0.42869,-0.845027,-0.319616,1.018628,0.216746,-0.579959, + -0.405056,-0.645141,-0.64786,1.079619,0.214898,-0.633787, + -0.42869,-0.845027,-0.319616,1.018628,0.216746,-0.579959, + -0.573691,-0.778283,-0.255254,1.070145,0.182308,-0.572975, + -0.260846,-0.906261,0.332641,0.971855,0.238662,-0.41277, + -0.103837,-0.707557,0.698986,0.974692,0.281188,-0.340079, + -0.251782,-0.681632,0.68701,1.024302,0.254547,-0.353408, + -0.251782,-0.681632,0.68701,1.024302,0.254547,-0.353408, + -0.42869,-0.845027,0.319616,1.018628,0.216746,-0.420041, + -0.260846,-0.906261,0.332641,0.971855,0.238662,-0.41277, + -0.405056,-0.645141,0.64786,1.079619,0.214898,-0.366213, + -0.573691,-0.778283,0.255254,1.070145,0.182308,-0.427025, + -0.42869,-0.845027,0.319616,1.018628,0.216746,-0.420041, + -0.405056,-0.645141,0.64786,1.079619,0.214898,-0.366213, + -0.42869,-0.845027,0.319616,1.018628,0.216746,-0.420041, + -0.251782,-0.681632,0.68701,1.024302,0.254547,-0.353408, + -0.573691,-0.778283,0.255254,1.070145,0.182308,-0.427025, + -0.60511,-0.796142,0,1.066987,0.171444,-0.5, + -0.49913,-0.866527,0,1.016736,0.204145,-0.5, + -0.49913,-0.866527,0,1.016736,0.204145,-0.5, + -0.42869,-0.845027,0.319616,1.018628,0.216746,-0.420041, + -0.573691,-0.778283,0.255254,1.070145,0.182308,-0.427025, + -0.339022,-0.940778,0,0.97091,0.224487,-0.5, + -0.260846,-0.906261,0.332641,0.971855,0.238662,-0.41277, + -0.42869,-0.845027,0.319616,1.018628,0.216746,-0.420041, + -0.339022,-0.940778,0,0.97091,0.224487,-0.5, + -0.42869,-0.845027,0.319616,1.018628,0.216746,-0.420041, + -0.49913,-0.866527,0,1.016736,0.204145,-0.5, + -0.591819,-0.448047,0.670078,1.190836,0.100363,-0.380035, + -0.769835,-0.555714,0.313903,1.171562,0.077649,-0.434564, + -0.649709,-0.667916,0.362996,1.122445,0.135794,-0.432331, + -0.591819,-0.448047,0.670078,1.190836,0.100363,-0.380035, + -0.649709,-0.667916,0.362996,1.122445,0.135794,-0.432331, + -0.469451,-0.529408,0.706642,1.136509,0.163187,-0.375941, + -0.769835,-0.555714,0.313903,1.171562,0.077649,-0.434564, + -0.831075,-0.55616,0,1.165137,0.070077,-0.5, + -0.713427,-0.700729,0,1.117756,0.126662,-0.5, + -0.713427,-0.700729,0,1.117756,0.126662,-0.5, + -0.649709,-0.667916,0.362996,1.122445,0.135794,-0.432331, + -0.769835,-0.555714,0.313903,1.171562,0.077649,-0.434564, + -0.713427,-0.700729,0,1.117756,0.126662,-0.5, + -0.60511,-0.796142,0,1.066987,0.171444,-0.5, + -0.573691,-0.778283,0.255254,1.070145,0.182308,-0.427025, + -0.573691,-0.778283,0.255254,1.070145,0.182308,-0.427025, + -0.649709,-0.667916,0.362996,1.122445,0.135794,-0.432331, + -0.713427,-0.700729,0,1.117756,0.126662,-0.5, + -0.405056,-0.645141,0.64786,1.079619,0.214898,-0.366213, + -0.469451,-0.529408,0.706642,1.136509,0.163187,-0.375941, + -0.649709,-0.667916,0.362996,1.122445,0.135794,-0.432331, + -0.405056,-0.645141,0.64786,1.079619,0.214898,-0.366213, + -0.649709,-0.667916,0.362996,1.122445,0.135794,-0.432331, + -0.573691,-0.778283,0.255254,1.070145,0.182308,-0.427025, + -0.591819,-0.448047,-0.670078,1.190836,0.100363,-0.619965, + -0.469451,-0.529408,-0.706642,1.136509,0.163187,-0.624059, + -0.649709,-0.667916,-0.362996,1.122445,0.135794,-0.567669, + -0.591819,-0.448047,-0.670078,1.190836,0.100363,-0.619965, + -0.649709,-0.667916,-0.362996,1.122445,0.135794,-0.567669, + -0.769835,-0.555714,-0.313903,1.171562,0.077649,-0.565436, + -0.405056,-0.645141,-0.64786,1.079619,0.214898,-0.633787, + -0.573691,-0.778283,-0.255254,1.070145,0.182308,-0.572975, + -0.649709,-0.667916,-0.362996,1.122445,0.135794,-0.567669, + -0.405056,-0.645141,-0.64786,1.079619,0.214898,-0.633787, + -0.649709,-0.667916,-0.362996,1.122445,0.135794,-0.567669, + -0.469451,-0.529408,-0.706642,1.136509,0.163187,-0.624059, + -0.573691,-0.778283,-0.255254,1.070145,0.182308,-0.572975, + -0.60511,-0.796142,0,1.066987,0.171444,-0.5, + -0.713427,-0.700729,0,1.117756,0.126662,-0.5, + -0.713427,-0.700729,0,1.117756,0.126662,-0.5, + -0.649709,-0.667916,-0.362996,1.122445,0.135794,-0.567669, + -0.573691,-0.778283,-0.255254,1.070145,0.182308,-0.572975, + -0.713427,-0.700729,0,1.117756,0.126662,-0.5, + -0.831075,-0.55616,0,1.165137,0.070077,-0.5, + -0.769835,-0.555714,-0.313903,1.171562,0.077649,-0.565436, + -0.769835,-0.555714,-0.313903,1.171562,0.077649,-0.565436, + -0.649709,-0.667916,-0.362996,1.122445,0.135794,-0.567669, + -0.713427,-0.700729,0,1.117756,0.126662,-0.5, + -0.693597,-0.068529,-0.717096,1.333479,-0.188456,-0.659921, + -0.356933,0.09138,-0.92965,1.401596,-0.166219,-0.703536, + -0.410606,0.007113,-0.911785,1.370721,-0.099359,-0.686572, + -0.693597,-0.068529,-0.717096,1.333479,-0.188456,-0.659921, + -0.410606,0.007113,-0.911785,1.370721,-0.099359,-0.686572, + -0.736772,-0.170063,-0.654405,1.310553,-0.12345,-0.646592, + -0.356933,0.09138,-0.92965,1.401596,-0.166219,-0.703536, + -0.07755,0.232519,-0.969495,1.483337,-0.139536,-0.718074, + -0.076935,0.189453,-0.978871,1.442923,-0.07045,-0.699898, + -0.076935,0.189453,-0.978871,1.442923,-0.07045,-0.699898, + -0.410606,0.007113,-0.911785,1.370721,-0.099359,-0.686572, + -0.356933,0.09138,-0.92965,1.401596,-0.166219,-0.703536, + -0.094492,0.118807,-0.988411,1.39106,0.010509,-0.682436, + -0.411811,-0.074302,-0.908235,1.329732,-0.022152,-0.670274, + -0.410606,0.007113,-0.911785,1.370721,-0.099359,-0.686572, + -0.094492,0.118807,-0.988411,1.39106,0.010509,-0.682436, + -0.410606,0.007113,-0.911785,1.370721,-0.099359,-0.686572, + -0.076935,0.189453,-0.978871,1.442923,-0.07045,-0.699898, + -0.691037,-0.22774,-0.686005,1.278626,-0.049369,-0.633787, + -0.736772,-0.170063,-0.654405,1.310553,-0.12345,-0.646592, + -0.410606,0.007113,-0.911785,1.370721,-0.099359,-0.686572, + -0.691037,-0.22774,-0.686005,1.278626,-0.049369,-0.633787, + -0.410606,0.007113,-0.911785,1.370721,-0.099359,-0.686572, + -0.411811,-0.074302,-0.908235,1.329732,-0.022152,-0.670274, + 0.223762,0.38464,-0.895535,1.565078,-0.112852,-0.703536, + 0.523401,0.54123,-0.65812,1.633195,-0.090616,-0.659921, + 0.523007,0.53259,-0.665441,1.575292,-0.017451,-0.646592, + 0.523007,0.53259,-0.665441,1.575292,-0.017451,-0.646592, + 0.22394,0.359068,-0.906047,1.515124,-0.041541,-0.686572, + 0.223762,0.38464,-0.895535,1.565078,-0.112852,-0.703536, + 0.522827,0.522069,-0.673866,1.503495,0.070388,-0.633787, + 0.227361,0.327503,-0.917087,1.452388,0.04317,-0.670274, + 0.22394,0.359068,-0.906047,1.515124,-0.041541,-0.686572, + 0.522827,0.522069,-0.673866,1.503495,0.070388,-0.633787, + 0.22394,0.359068,-0.906047,1.515124,-0.041541,-0.686572, + 0.523007,0.53259,-0.665441,1.575292,-0.017451,-0.646592, + 0.227361,0.327503,-0.917087,1.452388,0.04317,-0.670274, + -0.094492,0.118807,-0.988411,1.39106,0.010509,-0.682436, + -0.076935,0.189453,-0.978871,1.442923,-0.07045,-0.699898, + -0.076935,0.189453,-0.978871,1.442923,-0.07045,-0.699898, + 0.22394,0.359068,-0.906047,1.515124,-0.041541,-0.686572, + 0.227361,0.327503,-0.917087,1.452388,0.04317,-0.670274, + -0.07755,0.232519,-0.969495,1.483337,-0.139536,-0.718074, + 0.223762,0.38464,-0.895535,1.565078,-0.112852,-0.703536, + 0.22394,0.359068,-0.906047,1.515124,-0.041541,-0.686572, + -0.07755,0.232519,-0.969495,1.483337,-0.139536,-0.718074, + 0.22394,0.359068,-0.906047,1.515124,-0.041541,-0.686572, + -0.076935,0.189453,-0.978871,1.442923,-0.07045,-0.699898, + 0.509286,0.493808,-0.704828,1.421294,0.167113,-0.624059, + 0.547232,0.498931,-0.672015,1.332183,0.266938,-0.619965, + 0.284277,0.249094,-0.925818,1.300058,0.22908,-0.652683, + 0.284277,0.249094,-0.925818,1.300058,0.22908,-0.652683, + 0.192479,0.2506,-0.948763,1.379742,0.135354,-0.657894, + 0.509286,0.493808,-0.704828,1.421294,0.167113,-0.624059, + 0.003001,-0.001255,-0.999995,1.261509,0.18365,-0.663589, + -0.080719,0.04088,-0.995898,1.329879,0.097243,-0.669172, + 0.192479,0.2506,-0.948763,1.379742,0.135354,-0.657894, + 0.003001,-0.001255,-0.999995,1.261509,0.18365,-0.663589, + 0.192479,0.2506,-0.948763,1.379742,0.135354,-0.657894, + 0.284277,0.249094,-0.925818,1.300058,0.22908,-0.652683, + -0.094492,0.118807,-0.988411,1.39106,0.010509,-0.682436, + 0.227361,0.327503,-0.917087,1.452388,0.04317,-0.670274, + 0.192479,0.2506,-0.948763,1.379742,0.135354,-0.657894, + -0.094492,0.118807,-0.988411,1.39106,0.010509,-0.682436, + 0.192479,0.2506,-0.948763,1.379742,0.135354,-0.657894, + -0.080719,0.04088,-0.995898,1.329879,0.097243,-0.669172, + 0.227361,0.327503,-0.917087,1.452388,0.04317,-0.670274, + 0.522827,0.522069,-0.673866,1.503495,0.070388,-0.633787, + 0.509286,0.493808,-0.704828,1.421294,0.167113,-0.624059, + 0.509286,0.493808,-0.704828,1.421294,0.167113,-0.624059, + 0.192479,0.2506,-0.948763,1.379742,0.135354,-0.657894, + 0.227361,0.327503,-0.917087,1.452388,0.04317,-0.670274, + -0.591819,-0.448047,-0.670078,1.190836,0.100363,-0.619965, + -0.660133,-0.325846,-0.676793,1.238464,0.027373,-0.624059, + -0.356146,-0.13643,-0.924417,1.280017,0.059132,-0.657894, + -0.591819,-0.448047,-0.670078,1.190836,0.100363,-0.619965, + -0.356146,-0.13643,-0.924417,1.280017,0.059132,-0.657894, + -0.293198,-0.238286,-0.925881,1.22296,0.138221,-0.652683, + -0.660133,-0.325846,-0.676793,1.238464,0.027373,-0.624059, + -0.691037,-0.22774,-0.686005,1.278626,-0.049369,-0.633787, + -0.411811,-0.074302,-0.908235,1.329732,-0.022152,-0.670274, + -0.411811,-0.074302,-0.908235,1.329732,-0.022152,-0.670274, + -0.356146,-0.13643,-0.924417,1.280017,0.059132,-0.657894, + -0.660133,-0.325846,-0.676793,1.238464,0.027373,-0.624059, + -0.094492,0.118807,-0.988411,1.39106,0.010509,-0.682436, + -0.080719,0.04088,-0.995898,1.329879,0.097243,-0.669172, + -0.356146,-0.13643,-0.924417,1.280017,0.059132,-0.657894, + -0.094492,0.118807,-0.988411,1.39106,0.010509,-0.682436, + -0.356146,-0.13643,-0.924417,1.280017,0.059132,-0.657894, + -0.411811,-0.074302,-0.908235,1.329732,-0.022152,-0.670274, + -0.080719,0.04088,-0.995898,1.329879,0.097243,-0.669172, + 0.003001,-0.001255,-0.999995,1.261509,0.18365,-0.663589, + -0.293198,-0.238286,-0.925881,1.22296,0.138221,-0.652683, + -0.293198,-0.238286,-0.925881,1.22296,0.138221,-0.652683, + -0.356146,-0.13643,-0.924417,1.280017,0.059132,-0.657894, + -0.080719,0.04088,-0.995898,1.329879,0.097243,-0.669172, + -0.693597,-0.068529,-0.717096,1.333479,-0.188456,-0.659921, + -0.736772,-0.170063,-0.654405,1.310553,-0.12345,-0.646592, + -0.904992,-0.260217,-0.336566,1.274453,-0.137904,-0.579959, + -0.693597,-0.068529,-0.717096,1.333479,-0.188456,-0.659921, + -0.904992,-0.260217,-0.336566,1.274453,-0.137904,-0.579959, + -0.932432,-0.178414,-0.314228,1.292609,-0.201797,-0.58723, + -0.736772,-0.170063,-0.654405,1.310553,-0.12345,-0.646592, + -0.691037,-0.22774,-0.686005,1.278626,-0.049369,-0.633787, + -0.880661,-0.339398,-0.330522,1.247962,-0.0657,-0.572975, + -0.880661,-0.339398,-0.330522,1.247962,-0.0657,-0.572975, + -0.904992,-0.260217,-0.336566,1.274453,-0.137904,-0.579959, + -0.736772,-0.170063,-0.654405,1.310553,-0.12345,-0.646592, + -0.934966,-0.354738,0,1.237741,-0.071143,-0.5, + -0.960468,-0.278392,0,1.262419,-0.142723,-0.5, + -0.904992,-0.260217,-0.336566,1.274453,-0.137904,-0.579959, + -0.934966,-0.354738,0,1.237741,-0.071143,-0.5, + -0.904992,-0.260217,-0.336566,1.274453,-0.137904,-0.579959, + -0.880661,-0.339398,-0.330522,1.247962,-0.0657,-0.572975, + -0.960468,-0.278392,0,1.262419,-0.142723,-0.5, + -0.977953,-0.208824,0,1.278985,-0.206245,-0.5, + -0.932432,-0.178414,-0.314228,1.292609,-0.201797,-0.58723, + -0.932432,-0.178414,-0.314228,1.292609,-0.201797,-0.58723, + -0.904992,-0.260217,-0.336566,1.274453,-0.137904,-0.579959, + -0.960468,-0.278392,0,1.262419,-0.142723,-0.5, + -0.660133,-0.325846,-0.676793,1.238464,0.027373,-0.624059, + -0.591819,-0.448047,-0.670078,1.190836,0.100363,-0.619965, + -0.769835,-0.555714,-0.313903,1.171562,0.077649,-0.565436, + -0.769835,-0.555714,-0.313903,1.171562,0.077649,-0.565436, + -0.841533,-0.433873,-0.321832,1.213533,0.008318,-0.567669, + -0.660133,-0.325846,-0.676793,1.238464,0.027373,-0.624059, + -0.831075,-0.55616,0,1.165137,0.070077,-0.5, + -0.896641,-0.442758,0,1.205222,0.001966,-0.5, + -0.841533,-0.433873,-0.321832,1.213533,0.008318,-0.567669, + -0.831075,-0.55616,0,1.165137,0.070077,-0.5, + -0.841533,-0.433873,-0.321832,1.213533,0.008318,-0.567669, + -0.769835,-0.555714,-0.313903,1.171562,0.077649,-0.565436, + -0.896641,-0.442758,0,1.205222,0.001966,-0.5, + -0.934966,-0.354738,0,1.237741,-0.071143,-0.5, + -0.880661,-0.339398,-0.330522,1.247962,-0.0657,-0.572975, + -0.880661,-0.339398,-0.330522,1.247962,-0.0657,-0.572975, + -0.841533,-0.433873,-0.321832,1.213533,0.008318,-0.567669, + -0.896641,-0.442758,0,1.205222,0.001966,-0.5, + -0.841533,-0.433873,-0.321832,1.213533,0.008318,-0.567669, + -0.880661,-0.339398,-0.330522,1.247962,-0.0657,-0.572975, + -0.691037,-0.22774,-0.686005,1.278626,-0.049369,-0.633787, + -0.691037,-0.22774,-0.686005,1.278626,-0.049369,-0.633787, + -0.660133,-0.325846,-0.676793,1.238464,0.027373,-0.624059, + -0.841533,-0.433873,-0.321832,1.213533,0.008318,-0.567669, + -0.769835,-0.555714,0.313903,1.171562,0.077649,-0.434564, + -0.591819,-0.448047,0.670078,1.190836,0.100363,-0.380035, + -0.660133,-0.325846,0.676793,1.238464,0.027373,-0.375941, + -0.660133,-0.325846,0.676793,1.238464,0.027373,-0.375941, + -0.841533,-0.433873,0.321832,1.213533,0.008318,-0.432331, + -0.769835,-0.555714,0.313903,1.171562,0.077649,-0.434564, + -0.841533,-0.433873,0.321832,1.213533,0.008318,-0.432331, + -0.660133,-0.325846,0.676793,1.238464,0.027373,-0.375941, + -0.691037,-0.22774,0.686005,1.278626,-0.049369,-0.366213, + -0.691037,-0.22774,0.686005,1.278626,-0.049369,-0.366213, + -0.880661,-0.339398,0.330522,1.247962,-0.0657,-0.427025, + -0.841533,-0.433873,0.321832,1.213533,0.008318,-0.432331, + -0.880661,-0.339398,0.330522,1.247962,-0.0657,-0.427025, + -0.934966,-0.354738,0,1.237741,-0.071143,-0.5, + -0.896641,-0.442758,0,1.205222,0.001966,-0.5, + -0.896641,-0.442758,0,1.205222,0.001966,-0.5, + -0.841533,-0.433873,0.321832,1.213533,0.008318,-0.432331, + -0.880661,-0.339398,0.330522,1.247962,-0.0657,-0.427025, + -0.831075,-0.55616,0,1.165137,0.070077,-0.5, + -0.769835,-0.555714,0.313903,1.171562,0.077649,-0.434564, + -0.841533,-0.433873,0.321832,1.213533,0.008318,-0.432331, + -0.831075,-0.55616,0,1.165137,0.070077,-0.5, + -0.841533,-0.433873,0.321832,1.213533,0.008318,-0.432331, + -0.896641,-0.442758,0,1.205222,0.001966,-0.5, + -0.693597,-0.068529,0.717096,1.333479,-0.188456,-0.340079, + -0.932432,-0.178414,0.314228,1.292609,-0.201797,-0.41277, + -0.904992,-0.260217,0.336566,1.274453,-0.137904,-0.420041, + -0.693597,-0.068529,0.717096,1.333479,-0.188456,-0.340079, + -0.904992,-0.260217,0.336566,1.274453,-0.137904,-0.420041, + -0.736772,-0.170063,0.654405,1.310553,-0.12345,-0.353408, + -0.932432,-0.178414,0.314228,1.292609,-0.201797,-0.41277, + -0.977953,-0.208824,0,1.278985,-0.206245,-0.5, + -0.960468,-0.278392,0,1.262419,-0.142723,-0.5, + -0.960468,-0.278392,0,1.262419,-0.142723,-0.5, + -0.904992,-0.260217,0.336566,1.274453,-0.137904,-0.420041, + -0.932432,-0.178414,0.314228,1.292609,-0.201797,-0.41277, + -0.934966,-0.354738,0,1.237741,-0.071143,-0.5, + -0.880661,-0.339398,0.330522,1.247962,-0.0657,-0.427025, + -0.904992,-0.260217,0.336566,1.274453,-0.137904,-0.420041, + -0.934966,-0.354738,0,1.237741,-0.071143,-0.5, + -0.904992,-0.260217,0.336566,1.274453,-0.137904,-0.420041, + -0.960468,-0.278392,0,1.262419,-0.142723,-0.5, + -0.880661,-0.339398,0.330522,1.247962,-0.0657,-0.427025, + -0.691037,-0.22774,0.686005,1.278626,-0.049369,-0.366213, + -0.736772,-0.170063,0.654405,1.310553,-0.12345,-0.353408, + -0.736772,-0.170063,0.654405,1.310553,-0.12345,-0.353408, + -0.904992,-0.260217,0.336566,1.274453,-0.137904,-0.420041, + -0.880661,-0.339398,0.330522,1.247962,-0.0657,-0.427025, + -0.693597,-0.068529,0.717096,1.333479,-0.188456,-0.340079, + -0.736772,-0.170063,0.654405,1.310553,-0.12345,-0.353408, + -0.410607,0.007113,0.911785,1.370721,-0.099359,-0.313428, + -0.693597,-0.068529,0.717096,1.333479,-0.188456,-0.340079, + -0.410607,0.007113,0.911785,1.370721,-0.099359,-0.313428, + -0.356933,0.09138,0.92965,1.401596,-0.166219,-0.296464, + -0.691037,-0.22774,0.686005,1.278626,-0.049369,-0.366213, + -0.411811,-0.074302,0.908235,1.329732,-0.022152,-0.329726, + -0.410607,0.007113,0.911785,1.370721,-0.099359,-0.313428, + -0.691037,-0.22774,0.686005,1.278626,-0.049369,-0.366213, + -0.410607,0.007113,0.911785,1.370721,-0.099359,-0.313428, + -0.736772,-0.170063,0.654405,1.310553,-0.12345,-0.353408, + -0.094492,0.118807,0.988411,1.39106,0.010509,-0.317564, + -0.076935,0.189453,0.978871,1.442923,-0.07045,-0.300102, + -0.410607,0.007113,0.911785,1.370721,-0.099359,-0.313428, + -0.094492,0.118807,0.988411,1.39106,0.010509,-0.317564, + -0.410607,0.007113,0.911785,1.370721,-0.099359,-0.313428, + -0.411811,-0.074302,0.908235,1.329732,-0.022152,-0.329726, + -0.076935,0.189453,0.978871,1.442923,-0.07045,-0.300102, + -0.07755,0.232519,0.969495,1.483337,-0.139536,-0.281926, + -0.356933,0.09138,0.92965,1.401596,-0.166219,-0.296464, + -0.356933,0.09138,0.92965,1.401596,-0.166219,-0.296464, + -0.410607,0.007113,0.911785,1.370721,-0.099359,-0.313428, + -0.076935,0.189453,0.978871,1.442923,-0.07045,-0.300102, + -0.591819,-0.448047,0.670078,1.190836,0.100363,-0.380035, + -0.293197,-0.238286,0.925881,1.22296,0.138221,-0.347317, + -0.356146,-0.13643,0.924417,1.280017,0.059132,-0.342106, + -0.591819,-0.448047,0.670078,1.190836,0.100363,-0.380035, + -0.356146,-0.13643,0.924417,1.280017,0.059132,-0.342106, + -0.660133,-0.325846,0.676793,1.238464,0.027373,-0.375941, + -0.293197,-0.238286,0.925881,1.22296,0.138221,-0.347317, + 0.003001,-0.001255,0.999995,1.261509,0.18365,-0.336411, + -0.080719,0.04088,0.995898,1.329879,0.097243,-0.330828, + -0.080719,0.04088,0.995898,1.329879,0.097243,-0.330828, + -0.356146,-0.13643,0.924417,1.280017,0.059132,-0.342106, + -0.293197,-0.238286,0.925881,1.22296,0.138221,-0.347317, + -0.094492,0.118807,0.988411,1.39106,0.010509,-0.317564, + -0.411811,-0.074302,0.908235,1.329732,-0.022152,-0.329726, + -0.356146,-0.13643,0.924417,1.280017,0.059132,-0.342106, + -0.094492,0.118807,0.988411,1.39106,0.010509,-0.317564, + -0.356146,-0.13643,0.924417,1.280017,0.059132,-0.342106, + -0.080719,0.04088,0.995898,1.329879,0.097243,-0.330828, + -0.411811,-0.074302,0.908235,1.329732,-0.022152,-0.329726, + -0.691037,-0.22774,0.686005,1.278626,-0.049369,-0.366213, + -0.660133,-0.325846,0.676793,1.238464,0.027373,-0.375941, + -0.660133,-0.325846,0.676793,1.238464,0.027373,-0.375941, + -0.356146,-0.13643,0.924417,1.280017,0.059132,-0.342106, + -0.411811,-0.074302,0.908235,1.329732,-0.022152,-0.329726, + 0.284277,0.249093,0.925818,1.300058,0.22908,-0.347317, + 0.547232,0.498931,0.672016,1.332183,0.266938,-0.380035, + 0.509286,0.493808,0.704828,1.421294,0.167113,-0.375941, + 0.509286,0.493808,0.704828,1.421294,0.167113,-0.375941, + 0.192478,0.250599,0.948763,1.379742,0.135354,-0.342106, + 0.284277,0.249093,0.925818,1.300058,0.22908,-0.347317, + 0.509286,0.493808,0.704828,1.421294,0.167113,-0.375941, + 0.522827,0.522069,0.673866,1.503495,0.070388,-0.366213, + 0.227361,0.327503,0.917087,1.452388,0.04317,-0.329726, + 0.227361,0.327503,0.917087,1.452388,0.04317,-0.329726, + 0.192478,0.250599,0.948763,1.379742,0.135354,-0.342106, + 0.509286,0.493808,0.704828,1.421294,0.167113,-0.375941, + -0.094492,0.118807,0.988411,1.39106,0.010509,-0.317564, + -0.080719,0.04088,0.995898,1.329879,0.097243,-0.330828, + 0.192478,0.250599,0.948763,1.379742,0.135354,-0.342106, + -0.094492,0.118807,0.988411,1.39106,0.010509,-0.317564, + 0.192478,0.250599,0.948763,1.379742,0.135354,-0.342106, + 0.227361,0.327503,0.917087,1.452388,0.04317,-0.329726, + 0.003001,-0.001255,0.999995,1.261509,0.18365,-0.336411, + 0.284277,0.249093,0.925818,1.300058,0.22908,-0.347317, + 0.192478,0.250599,0.948763,1.379742,0.135354,-0.342106, + 0.003001,-0.001255,0.999995,1.261509,0.18365,-0.336411, + 0.192478,0.250599,0.948763,1.379742,0.135354,-0.342106, + -0.080719,0.04088,0.995898,1.329879,0.097243,-0.330828, + 0.523007,0.53259,0.665441,1.575292,-0.017451,-0.353408, + 0.523401,0.54123,0.65812,1.633195,-0.090616,-0.340079, + 0.223762,0.384639,0.895535,1.565078,-0.112852,-0.296464, + 0.223762,0.384639,0.895535,1.565078,-0.112852,-0.296464, + 0.22394,0.359067,0.906047,1.515124,-0.041541,-0.313428, + 0.523007,0.53259,0.665441,1.575292,-0.017451,-0.353408, + -0.07755,0.232519,0.969495,1.483337,-0.139536,-0.281926, + -0.076935,0.189453,0.978871,1.442923,-0.07045,-0.300102, + 0.22394,0.359067,0.906047,1.515124,-0.041541,-0.313428, + -0.07755,0.232519,0.969495,1.483337,-0.139536,-0.281926, + 0.22394,0.359067,0.906047,1.515124,-0.041541,-0.313428, + 0.223762,0.384639,0.895535,1.565078,-0.112852,-0.296464, + -0.076935,0.189453,0.978871,1.442923,-0.07045,-0.300102, + -0.094492,0.118807,0.988411,1.39106,0.010509,-0.317564, + 0.227361,0.327503,0.917087,1.452388,0.04317,-0.329726, + 0.227361,0.327503,0.917087,1.452388,0.04317,-0.329726, + 0.22394,0.359067,0.906047,1.515124,-0.041541,-0.313428, + -0.076935,0.189453,0.978871,1.442923,-0.07045,-0.300102, + 0.522827,0.522069,0.673866,1.503495,0.070388,-0.366213, + 0.523007,0.53259,0.665441,1.575292,-0.017451,-0.353408, + 0.22394,0.359067,0.906047,1.515124,-0.041541,-0.313428, + 0.522827,0.522069,0.673866,1.503495,0.070388,-0.366213, + 0.22394,0.359067,0.906047,1.515124,-0.041541,-0.313428, + 0.227361,0.327503,0.917087,1.452388,0.04317,-0.329726, + 0.709684,0.62897,0.317403,1.674065,-0.077274,-0.41277, + 0.523401,0.54123,0.65812,1.633195,-0.090616,-0.340079, + 0.523007,0.53259,0.665441,1.575292,-0.017451,-0.353408, + 0.523007,0.53259,0.665441,1.575292,-0.017451,-0.353408, + 0.706952,0.630412,0.320624,1.611392,-0.002996,-0.420041, + 0.709684,0.62897,0.317403,1.674065,-0.077274,-0.41277, + 0.522827,0.522069,0.673866,1.503495,0.070388,-0.366213, + 0.703,0.633573,0.323073,1.534158,0.086718,-0.427025, + 0.706952,0.630412,0.320624,1.611392,-0.002996,-0.420041, + 0.522827,0.522069,0.673866,1.503495,0.070388,-0.366213, + 0.706952,0.630412,0.320624,1.611392,-0.002996,-0.420041, + 0.523007,0.53259,0.665441,1.575292,-0.017451,-0.353408, + 0.703,0.633573,0.323073,1.534158,0.086718,-0.427025, + 0.747578,0.664174,0,1.54438,0.092162,-0.5, + 0.754132,0.656723,0,1.623426,0.001822,-0.5, + 0.754132,0.656723,0,1.623426,0.001822,-0.5, + 0.706952,0.630412,0.320624,1.611392,-0.002996,-0.420041, + 0.703,0.633573,0.323073,1.534158,0.086718,-0.427025, + 0.758437,0.651747,0,1.687689,-0.072827,-0.5, + 0.709684,0.62897,0.317403,1.674065,-0.077274,-0.41277, + 0.706952,0.630412,0.320624,1.611392,-0.002996,-0.420041, + 0.758437,0.651747,0,1.687689,-0.072827,-0.5, + 0.706952,0.630412,0.320624,1.611392,-0.002996,-0.420041, + 0.754132,0.656723,0,1.623426,0.001822,-0.5, + 0.547232,0.498931,0.672016,1.332183,0.266938,-0.380035, + 0.694102,0.647395,0.314805,1.351457,0.289652,-0.434564, + 0.698693,0.638817,0.32209,1.446226,0.186168,-0.432331, + 0.547232,0.498931,0.672016,1.332183,0.266938,-0.380035, + 0.698693,0.638817,0.32209,1.446226,0.186168,-0.432331, + 0.509286,0.493808,0.704828,1.421294,0.167113,-0.375941, + 0.694102,0.647395,0.314805,1.351457,0.289652,-0.434564, + 0.726158,0.687528,0,1.357882,0.297224,-0.5, + 0.738573,0.674173,0,1.454536,0.19252,-0.5, + 0.738573,0.674173,0,1.454536,0.19252,-0.5, + 0.698693,0.638817,0.32209,1.446226,0.186168,-0.432331, + 0.694102,0.647395,0.314805,1.351457,0.289652,-0.434564, + 0.747578,0.664174,0,1.54438,0.092162,-0.5, + 0.703,0.633573,0.323073,1.534158,0.086718,-0.427025, + 0.698693,0.638817,0.32209,1.446226,0.186168,-0.432331, + 0.747578,0.664174,0,1.54438,0.092162,-0.5, + 0.698693,0.638817,0.32209,1.446226,0.186168,-0.432331, + 0.738573,0.674173,0,1.454536,0.19252,-0.5, + 0.703,0.633573,0.323073,1.534158,0.086718,-0.427025, + 0.522827,0.522069,0.673866,1.503495,0.070388,-0.366213, + 0.509286,0.493808,0.704828,1.421294,0.167113,-0.375941, + 0.509286,0.493808,0.704828,1.421294,0.167113,-0.375941, + 0.698693,0.638817,0.32209,1.446226,0.186168,-0.432331, + 0.703,0.633573,0.323073,1.534158,0.086718,-0.427025, + 0.547232,0.498931,-0.672015,1.332183,0.266938,-0.619965, + 0.509286,0.493808,-0.704828,1.421294,0.167113,-0.624059, + 0.698693,0.638817,-0.32209,1.446226,0.186168,-0.567669, + 0.547232,0.498931,-0.672015,1.332183,0.266938,-0.619965, + 0.698693,0.638817,-0.32209,1.446226,0.186168,-0.567669, + 0.694102,0.647395,-0.314805,1.351457,0.289652,-0.565436, + 0.509286,0.493808,-0.704828,1.421294,0.167113,-0.624059, + 0.522827,0.522069,-0.673866,1.503495,0.070388,-0.633787, + 0.703,0.633573,-0.323073,1.534158,0.086718,-0.572975, + 0.703,0.633573,-0.323073,1.534158,0.086718,-0.572975, + 0.698693,0.638817,-0.32209,1.446226,0.186168,-0.567669, + 0.509286,0.493808,-0.704828,1.421294,0.167113,-0.624059, + 0.747578,0.664174,0,1.54438,0.092162,-0.5, + 0.738573,0.674173,0,1.454536,0.19252,-0.5, + 0.698693,0.638817,-0.32209,1.446226,0.186168,-0.567669, + 0.747578,0.664174,0,1.54438,0.092162,-0.5, + 0.698693,0.638817,-0.32209,1.446226,0.186168,-0.567669, + 0.703,0.633573,-0.323073,1.534158,0.086718,-0.572975, + 0.738573,0.674173,0,1.454536,0.19252,-0.5, + 0.726158,0.687528,0,1.357882,0.297224,-0.5, + 0.694102,0.647395,-0.314805,1.351457,0.289652,-0.565436, + 0.694102,0.647395,-0.314805,1.351457,0.289652,-0.565436, + 0.698693,0.638817,-0.32209,1.446226,0.186168,-0.567669, + 0.738573,0.674173,0,1.454536,0.19252,-0.5, + 0.523007,0.53259,-0.665441,1.575292,-0.017451,-0.646592, + 0.523401,0.54123,-0.65812,1.633195,-0.090616,-0.659921, + 0.709684,0.62897,-0.317403,1.674065,-0.077274,-0.58723, + 0.709684,0.62897,-0.317403,1.674065,-0.077274,-0.58723, + 0.706952,0.630412,-0.320624,1.611392,-0.002996,-0.579959, + 0.523007,0.53259,-0.665441,1.575292,-0.017451,-0.646592, + 0.758437,0.651747,0,1.687689,-0.072827,-0.5, + 0.754132,0.656723,0,1.623426,0.001822,-0.5, + 0.706952,0.630412,-0.320624,1.611392,-0.002996,-0.579959, + 0.758437,0.651747,0,1.687689,-0.072827,-0.5, + 0.706952,0.630412,-0.320624,1.611392,-0.002996,-0.579959, + 0.709684,0.62897,-0.317403,1.674065,-0.077274,-0.58723, + 0.754132,0.656723,0,1.623426,0.001822,-0.5, + 0.747578,0.664174,0,1.54438,0.092162,-0.5, + 0.703,0.633573,-0.323073,1.534158,0.086718,-0.572975, + 0.703,0.633573,-0.323073,1.534158,0.086718,-0.572975, + 0.706952,0.630412,-0.320624,1.611392,-0.002996,-0.579959, + 0.754132,0.656723,0,1.623426,0.001822,-0.5, + 0.522827,0.522069,-0.673866,1.503495,0.070388,-0.633787, + 0.523007,0.53259,-0.665441,1.575292,-0.017451,-0.646592, + 0.706952,0.630412,-0.320624,1.611392,-0.002996,-0.579959, + 0.522827,0.522069,-0.673866,1.503495,0.070388,-0.633787, + 0.706952,0.630412,-0.320624,1.611392,-0.002996,-0.579959, + 0.703,0.633573,-0.323073,1.534158,0.086718,-0.572975, + 0.523401,0.54123,0.65812,1.633195,-0.090616,-0.340079, + 0.709684,0.62897,0.317403,1.674065,-0.077274,-0.41277, + 0.765571,0.555064,0.325277,1.718314,-0.130413,-0.406608, + 0.523401,0.54123,0.65812,1.633195,-0.090616,-0.340079, + 0.765571,0.555064,0.325277,1.718314,-0.130413,-0.406608, + 0.58545,0.437052,0.682813,1.673712,-0.14332,-0.328782, + 0.709684,0.62897,0.317403,1.674065,-0.077274,-0.41277, + 0.758437,0.651747,0,1.687689,-0.072827,-0.5, + 0.798106,0.602517,0,1.733181,-0.12611,-0.5, + 0.798106,0.602517,0,1.733181,-0.12611,-0.5, + 0.765571,0.555064,0.325277,1.718314,-0.130413,-0.406608, + 0.709684,0.62897,0.317403,1.674065,-0.077274,-0.41277, + 0.990091,0.14043,0,1.755118,-0.163978,-0.5, + 0.911574,0.083749,0.402517,1.73961,-0.167898,-0.405277, + 0.765571,0.555064,0.325277,1.718314,-0.130413,-0.406608, + 0.990091,0.14043,0,1.755118,-0.163978,-0.5, + 0.765571,0.555064,0.325277,1.718314,-0.130413,-0.406608, + 0.798106,0.602517,0,1.733181,-0.12611,-0.5, + 0.911574,0.083749,0.402517,1.73961,-0.167898,-0.405277, + 0.722198,-0.015351,0.691516,1.693578,-0.180157,-0.326227, + 0.58545,0.437052,0.682813,1.673712,-0.14332,-0.328782, + 0.58545,0.437052,0.682813,1.673712,-0.14332,-0.328782, + 0.765571,0.555064,0.325277,1.718314,-0.130413,-0.406608, + 0.911574,0.083749,0.402517,1.73961,-0.167898,-0.405277, + 0.523401,0.54123,-0.65812,1.633195,-0.090616,-0.659921, + 0.58545,0.437052,-0.682813,1.673712,-0.14332,-0.671218, + 0.765571,0.555064,-0.325277,1.718314,-0.130413,-0.593392, + 0.523401,0.54123,-0.65812,1.633195,-0.090616,-0.659921, + 0.765571,0.555064,-0.325277,1.718314,-0.130413,-0.593392, + 0.709684,0.62897,-0.317403,1.674065,-0.077274,-0.58723, + 0.58545,0.437052,-0.682813,1.673712,-0.14332,-0.671218, + 0.722198,-0.015351,-0.691516,1.693578,-0.180157,-0.673773, + 0.911574,0.083749,-0.402516,1.73961,-0.167898,-0.594723, + 0.911574,0.083749,-0.402516,1.73961,-0.167898,-0.594723, + 0.765571,0.555064,-0.325277,1.718314,-0.130413,-0.593392, + 0.58545,0.437052,-0.682813,1.673712,-0.14332,-0.671218, + 0.990091,0.14043,0,1.755118,-0.163978,-0.5, + 0.798106,0.602517,0,1.733181,-0.12611,-0.5, + 0.765571,0.555064,-0.325277,1.718314,-0.130413,-0.593392, + 0.990091,0.14043,0,1.755118,-0.163978,-0.5, + 0.765571,0.555064,-0.325277,1.718314,-0.130413,-0.593392, + 0.911574,0.083749,-0.402516,1.73961,-0.167898,-0.594723, + 0.798106,0.602517,0,1.733181,-0.12611,-0.5, + 0.758437,0.651747,0,1.687689,-0.072827,-0.5, + 0.709684,0.62897,-0.317403,1.674065,-0.077274,-0.58723, + 0.709684,0.62897,-0.317403,1.674065,-0.077274,-0.58723, + 0.765571,0.555064,-0.325277,1.718314,-0.130413,-0.593392, + 0.798106,0.602517,0,1.733181,-0.12611,-0.5, + 0.442953,-0.878385,-0.179534,1.670754,-0.221475,-0.638667, + 0.43479,-0.894931,-0.100277,1.696988,-0.219088,-0.5825, + 0.746757,-0.63494,-0.198004,1.733426,-0.195216,-0.5875, + 0.442953,-0.878385,-0.179534,1.670754,-0.221475,-0.638667, + 0.746757,-0.63494,-0.198004,1.733426,-0.195216,-0.5875, + 0.633983,-0.622541,-0.458813,1.689524,-0.205721,-0.660875, + 0.487185,-0.873299,0,1.710058,-0.217878,-0.5, + 0.821423,-0.57032,0,1.748713,-0.192378,-0.5, + 0.746757,-0.63494,-0.198004,1.733426,-0.195216,-0.5875, + 0.487185,-0.873299,0,1.710058,-0.217878,-0.5, + 0.746757,-0.63494,-0.198004,1.733426,-0.195216,-0.5875, + 0.43479,-0.894931,-0.100277,1.696988,-0.219088,-0.5825, + 0.990091,0.14043,0,1.755118,-0.163978,-0.5, + 0.911574,0.083749,-0.402516,1.73961,-0.167898,-0.594723, + 0.746757,-0.63494,-0.198004,1.733426,-0.195216,-0.5875, + 0.990091,0.14043,0,1.755118,-0.163978,-0.5, + 0.746757,-0.63494,-0.198004,1.733426,-0.195216,-0.5875, + 0.821423,-0.57032,0,1.748713,-0.192378,-0.5, + 0.911574,0.083749,-0.402516,1.73961,-0.167898,-0.594723, + 0.722198,-0.015351,-0.691516,1.693578,-0.180157,-0.673773, + 0.633983,-0.622541,-0.458813,1.689524,-0.205721,-0.660875, + 0.633983,-0.622541,-0.458813,1.689524,-0.205721,-0.660875, + 0.746757,-0.63494,-0.198004,1.733426,-0.195216,-0.5875, + 0.911574,0.083749,-0.402516,1.73961,-0.167898,-0.594723, + 0.442953,-0.878385,0.179534,1.670754,-0.221475,-0.361333, + 0.633983,-0.62254,0.458813,1.689524,-0.205721,-0.339125, + 0.746757,-0.63494,0.198005,1.733426,-0.195216,-0.4125, + 0.442953,-0.878385,0.179534,1.670754,-0.221475,-0.361333, + 0.746757,-0.63494,0.198005,1.733426,-0.195216,-0.4125, + 0.43479,-0.894931,0.100278,1.696988,-0.219088,-0.4175, + 0.633983,-0.62254,0.458813,1.689524,-0.205721,-0.339125, + 0.722198,-0.015351,0.691516,1.693578,-0.180157,-0.326227, + 0.911574,0.083749,0.402517,1.73961,-0.167898,-0.405277, + 0.911574,0.083749,0.402517,1.73961,-0.167898,-0.405277, + 0.746757,-0.63494,0.198005,1.733426,-0.195216,-0.4125, + 0.633983,-0.62254,0.458813,1.689524,-0.205721,-0.339125, + 0.990091,0.14043,0,1.755118,-0.163978,-0.5, + 0.821423,-0.57032,0,1.748713,-0.192378,-0.5, + 0.746757,-0.63494,0.198005,1.733426,-0.195216,-0.4125, + 0.990091,0.14043,0,1.755118,-0.163978,-0.5, + 0.746757,-0.63494,0.198005,1.733426,-0.195216,-0.4125, + 0.911574,0.083749,0.402517,1.73961,-0.167898,-0.405277, + 0.487185,-0.873299,0,1.710058,-0.217878,-0.5, + 0.43479,-0.894931,0.100278,1.696988,-0.219088,-0.4175, + 0.746757,-0.63494,0.198005,1.733426,-0.195216,-0.4125, + 0.487185,-0.873299,0,1.710058,-0.217878,-0.5, + 0.746757,-0.63494,0.198005,1.733426,-0.195216,-0.4125, + 0.821423,-0.57032,0,1.748713,-0.192378,-0.5, + 0.523401,0.54123,-0.65812,1.633195,-0.090616,-0.659921, + 0.223762,0.38464,-0.895535,1.565078,-0.112852,-0.703536, + 0.256589,0.31723,-0.912977,1.599377,-0.164832,-0.717914, + 0.523401,0.54123,-0.65812,1.633195,-0.090616,-0.659921, + 0.256589,0.31723,-0.912977,1.599377,-0.164832,-0.717914, + 0.58545,0.437052,-0.682813,1.673712,-0.14332,-0.671218, + 0.223762,0.38464,-0.895535,1.565078,-0.112852,-0.703536, + -0.07755,0.232519,-0.969495,1.483337,-0.139536,-0.718074, + -0.053569,0.174234,-0.983246,1.510174,-0.190646,-0.73348, + -0.053569,0.174234,-0.983246,1.510174,-0.190646,-0.73348, + 0.256589,0.31723,-0.912977,1.599377,-0.164832,-0.717914, + 0.223762,0.38464,-0.895535,1.565078,-0.112852,-0.703536, + 0.100693,-0.274502,-0.9563,1.526344,-0.226473,-0.737495, + 0.442231,-0.107524,-0.890433,1.617509,-0.201252,-0.721479, + 0.256589,0.31723,-0.912977,1.599377,-0.164832,-0.717914, + 0.100693,-0.274502,-0.9563,1.526344,-0.226473,-0.737495, + 0.256589,0.31723,-0.912977,1.599377,-0.164832,-0.717914, + -0.053569,0.174234,-0.983246,1.510174,-0.190646,-0.73348, + 0.442231,-0.107524,-0.890433,1.617509,-0.201252,-0.721479, + 0.722198,-0.015351,-0.691516,1.693578,-0.180157,-0.673773, + 0.58545,0.437052,-0.682813,1.673712,-0.14332,-0.671218, + 0.58545,0.437052,-0.682813,1.673712,-0.14332,-0.671218, + 0.256589,0.31723,-0.912977,1.599377,-0.164832,-0.717914, + 0.442231,-0.107524,-0.890433,1.617509,-0.201252,-0.721479, + -0.693597,-0.068529,-0.717096,1.333479,-0.188456,-0.659921, + -0.738864,-0.111606,-0.664548,1.346635,-0.237972,-0.671218, + -0.39719,0.033721,-0.917117,1.420971,-0.21646,-0.717914, + -0.693597,-0.068529,-0.717096,1.333479,-0.188456,-0.659921, + -0.39719,0.033721,-0.917117,1.420971,-0.21646,-0.717914, + -0.356933,0.09138,-0.92965,1.401596,-0.166219,-0.703536, + -0.588534,-0.475384,-0.653941,1.358796,-0.271614,-0.673773, + -0.236076,-0.378114,-0.895152,1.435022,-0.251106,-0.721479, + -0.39719,0.033721,-0.917117,1.420971,-0.21646,-0.717914, + -0.588534,-0.475384,-0.653941,1.358796,-0.271614,-0.673773, + -0.39719,0.033721,-0.917117,1.420971,-0.21646,-0.717914, + -0.738864,-0.111606,-0.664548,1.346635,-0.237972,-0.671218, + -0.236076,-0.378114,-0.895152,1.435022,-0.251106,-0.721479, + 0.100693,-0.274502,-0.9563,1.526344,-0.226473,-0.737495, + -0.053569,0.174234,-0.983246,1.510174,-0.190646,-0.73348, + -0.053569,0.174234,-0.983246,1.510174,-0.190646,-0.73348, + -0.39719,0.033721,-0.917117,1.420971,-0.21646,-0.717914, + -0.236076,-0.378114,-0.895152,1.435022,-0.251106,-0.721479, + -0.07755,0.232519,-0.969495,1.483337,-0.139536,-0.718074, + -0.356933,0.09138,-0.92965,1.401596,-0.166219,-0.703536, + -0.39719,0.033721,-0.917117,1.420971,-0.21646,-0.717914, + -0.07755,0.232519,-0.969495,1.483337,-0.139536,-0.718074, + -0.39719,0.033721,-0.917117,1.420971,-0.21646,-0.717914, + -0.053569,0.174234,-0.983246,1.510174,-0.190646,-0.73348, + 0.055786,-0.978343,-0.199329,1.40287,-0.293254,-0.638667, + 0.155998,-0.969633,-0.18835,1.458284,-0.283049,-0.664625, + 0.03573,-0.852716,-0.521152,1.449927,-0.271179,-0.706, + 0.055786,-0.978343,-0.199329,1.40287,-0.293254,-0.638667, + 0.03573,-0.852716,-0.521152,1.449927,-0.271179,-0.706, + -0.175453,-0.874143,-0.452869,1.378738,-0.288996,-0.660875, + 0.25096,-0.936595,-0.244557,1.538546,-0.263835,-0.677562, + 0.205519,-0.76511,-0.61022,1.53476,-0.249706,-0.7215, + 0.03573,-0.852716,-0.521152,1.449927,-0.271179,-0.706, + 0.25096,-0.936595,-0.244557,1.538546,-0.263835,-0.677562, + 0.03573,-0.852716,-0.521152,1.449927,-0.271179,-0.706, + 0.155998,-0.969633,-0.18835,1.458284,-0.283049,-0.664625, + 0.100693,-0.274502,-0.9563,1.526344,-0.226473,-0.737495, + -0.236076,-0.378114,-0.895152,1.435022,-0.251106,-0.721479, + 0.03573,-0.852716,-0.521152,1.449927,-0.271179,-0.706, + 0.100693,-0.274502,-0.9563,1.526344,-0.226473,-0.737495, + 0.03573,-0.852716,-0.521152,1.449927,-0.271179,-0.706, + 0.205519,-0.76511,-0.61022,1.53476,-0.249706,-0.7215, + -0.236076,-0.378114,-0.895152,1.435022,-0.251106,-0.721479, + -0.588534,-0.475384,-0.653941,1.358796,-0.271614,-0.673773, + -0.175453,-0.874143,-0.452869,1.378738,-0.288996,-0.660875, + -0.175453,-0.874143,-0.452869,1.378738,-0.288996,-0.660875, + 0.03573,-0.852716,-0.521152,1.449927,-0.271179,-0.706, + -0.236076,-0.378114,-0.895152,1.435022,-0.251106,-0.721479, + 0.361333,-0.91087,-0.199385,1.617662,-0.240344,-0.664625, + 0.442953,-0.878385,-0.179534,1.670754,-0.221475,-0.638667, + 0.633983,-0.622541,-0.458813,1.689524,-0.205721,-0.660875, + 0.633983,-0.622541,-0.458813,1.689524,-0.205721,-0.660875, + 0.389599,-0.715498,-0.579893,1.618964,-0.225886,-0.706, + 0.361333,-0.91087,-0.199385,1.617662,-0.240344,-0.664625, + 0.633983,-0.622541,-0.458813,1.689524,-0.205721,-0.660875, + 0.722198,-0.015351,-0.691516,1.693578,-0.180157,-0.673773, + 0.442231,-0.107524,-0.890433,1.617509,-0.201252,-0.721479, + 0.442231,-0.107524,-0.890433,1.617509,-0.201252,-0.721479, + 0.389599,-0.715498,-0.579893,1.618964,-0.225886,-0.706, + 0.633983,-0.622541,-0.458813,1.689524,-0.205721,-0.660875, + 0.100693,-0.274502,-0.9563,1.526344,-0.226473,-0.737495, + 0.205519,-0.76511,-0.61022,1.53476,-0.249706,-0.7215, + 0.389599,-0.715498,-0.579893,1.618964,-0.225886,-0.706, + 0.100693,-0.274502,-0.9563,1.526344,-0.226473,-0.737495, + 0.389599,-0.715498,-0.579893,1.618964,-0.225886,-0.706, + 0.442231,-0.107524,-0.890433,1.617509,-0.201252,-0.721479, + 0.25096,-0.936595,-0.244557,1.538546,-0.263835,-0.677562, + 0.361333,-0.91087,-0.199385,1.617662,-0.240344,-0.664625, + 0.389599,-0.715498,-0.579893,1.618964,-0.225886,-0.706, + 0.25096,-0.936595,-0.244557,1.538546,-0.263835,-0.677562, + 0.389599,-0.715498,-0.579893,1.618964,-0.225886,-0.706, + 0.205519,-0.76511,-0.61022,1.53476,-0.249706,-0.7215, + -0.738864,-0.111606,-0.664548,1.346635,-0.237972,-0.671218, + -0.693597,-0.068529,-0.717096,1.333479,-0.188456,-0.659921, + -0.932432,-0.178414,-0.314228,1.292609,-0.201797,-0.58723, + -0.932432,-0.178414,-0.314228,1.292609,-0.201797,-0.58723, + -0.899118,-0.21787,-0.37963,1.302034,-0.25088,-0.593392, + -0.738864,-0.111606,-0.664548,1.346635,-0.237972,-0.671218, + -0.932432,-0.178414,-0.314228,1.292609,-0.201797,-0.58723, + -0.977953,-0.208824,0,1.278985,-0.206245,-0.5, + -0.972456,-0.233085,0,1.287166,-0.255182,-0.5, + -0.972456,-0.233085,0,1.287166,-0.255182,-0.5, + -0.899118,-0.21787,-0.37963,1.302034,-0.25088,-0.593392, + -0.932432,-0.178414,-0.314228,1.292609,-0.201797,-0.58723, + -0.972456,-0.233085,0,1.287166,-0.255182,-0.5, + -0.822459,-0.568824,0,1.297571,-0.288968,-0.5, + -0.77552,-0.569812,-0.271814,1.312921,-0.28446,-0.594723, + -0.77552,-0.569812,-0.271814,1.312921,-0.28446,-0.594723, + -0.899118,-0.21787,-0.37963,1.302034,-0.25088,-0.593392, + -0.972456,-0.233085,0,1.287166,-0.255182,-0.5, + -0.588534,-0.475384,-0.653941,1.358796,-0.271614,-0.673773, + -0.738864,-0.111606,-0.664548,1.346635,-0.237972,-0.671218, + -0.899118,-0.21787,-0.37963,1.302034,-0.25088,-0.593392, + -0.588534,-0.475384,-0.653941,1.358796,-0.271614,-0.673773, + -0.899118,-0.21787,-0.37963,1.302034,-0.25088,-0.593392, + -0.77552,-0.569812,-0.271814,1.312921,-0.28446,-0.594723, + -0.932432,-0.178414,0.314228,1.292609,-0.201797,-0.41277, + -0.693597,-0.068529,0.717096,1.333479,-0.188456,-0.340079, + -0.738864,-0.111606,0.664548,1.346635,-0.237972,-0.328782, + -0.738864,-0.111606,0.664548,1.346635,-0.237972,-0.328782, + -0.899119,-0.217869,0.37963,1.302034,-0.25088,-0.406608, + -0.932432,-0.178414,0.314228,1.292609,-0.201797,-0.41277, + -0.588534,-0.475383,0.653941,1.358796,-0.271614,-0.326227, + -0.775521,-0.569812,0.271814,1.312921,-0.28446,-0.405277, + -0.899119,-0.217869,0.37963,1.302034,-0.25088,-0.406608, + -0.588534,-0.475383,0.653941,1.358796,-0.271614,-0.326227, + -0.899119,-0.217869,0.37963,1.302034,-0.25088,-0.406608, + -0.738864,-0.111606,0.664548,1.346635,-0.237972,-0.328782, + -0.775521,-0.569812,0.271814,1.312921,-0.28446,-0.405277, + -0.822459,-0.568824,0,1.297571,-0.288968,-0.5, + -0.972456,-0.233085,0,1.287166,-0.255182,-0.5, + -0.972456,-0.233085,0,1.287166,-0.255182,-0.5, + -0.899119,-0.217869,0.37963,1.302034,-0.25088,-0.406608, + -0.775521,-0.569812,0.271814,1.312921,-0.28446,-0.405277, + -0.972456,-0.233085,0,1.287166,-0.255182,-0.5, + -0.977953,-0.208824,0,1.278985,-0.206245,-0.5, + -0.932432,-0.178414,0.314228,1.292609,-0.201797,-0.41277, + -0.932432,-0.178414,0.314228,1.292609,-0.201797,-0.41277, + -0.899119,-0.217869,0.37963,1.302034,-0.25088,-0.406608, + -0.972456,-0.233085,0,1.287166,-0.255182,-0.5, + 0.055786,-0.978344,0.199328,1.40287,-0.293254,-0.361333, + 0.070927,-0.992428,0.100277,1.378957,-0.304305,-0.4175, + -0.244016,-0.944635,0.219364,1.335465,-0.301849,-0.4125, + 0.055786,-0.978344,0.199328,1.40287,-0.293254,-0.361333, + -0.244016,-0.944635,0.219364,1.335465,-0.301849,-0.4125, + -0.175453,-0.874143,0.452869,1.378738,-0.288996,-0.339125, + 0.014735,-0.999891,0,1.367033,-0.309791,-0.5, + -0.433457,-0.901174,0,1.320807,-0.307035,-0.5, + -0.244016,-0.944635,0.219364,1.335465,-0.301849,-0.4125, + 0.014735,-0.999891,0,1.367033,-0.309791,-0.5, + -0.244016,-0.944635,0.219364,1.335465,-0.301849,-0.4125, + 0.070927,-0.992428,0.100277,1.378957,-0.304305,-0.4175, + -0.433457,-0.901174,0,1.320807,-0.307035,-0.5, + -0.822459,-0.568824,0,1.297571,-0.288968,-0.5, + -0.775521,-0.569812,0.271814,1.312921,-0.28446,-0.405277, + -0.775521,-0.569812,0.271814,1.312921,-0.28446,-0.405277, + -0.244016,-0.944635,0.219364,1.335465,-0.301849,-0.4125, + -0.433457,-0.901174,0,1.320807,-0.307035,-0.5, + -0.588534,-0.475383,0.653941,1.358796,-0.271614,-0.326227, + -0.175453,-0.874143,0.452869,1.378738,-0.288996,-0.339125, + -0.244016,-0.944635,0.219364,1.335465,-0.301849,-0.4125, + -0.588534,-0.475383,0.653941,1.358796,-0.271614,-0.326227, + -0.244016,-0.944635,0.219364,1.335465,-0.301849,-0.4125, + -0.775521,-0.569812,0.271814,1.312921,-0.28446,-0.405277, + 0.055786,-0.978343,-0.199329,1.40287,-0.293254,-0.638667, + -0.175453,-0.874143,-0.452869,1.378738,-0.288996,-0.660875, + -0.244016,-0.944635,-0.219364,1.335465,-0.301849,-0.5875, + 0.055786,-0.978343,-0.199329,1.40287,-0.293254,-0.638667, + -0.244016,-0.944635,-0.219364,1.335465,-0.301849,-0.5875, + 0.070927,-0.992428,-0.100277,1.378957,-0.304305,-0.5825, + -0.588534,-0.475384,-0.653941,1.358796,-0.271614,-0.673773, + -0.77552,-0.569812,-0.271814,1.312921,-0.28446,-0.594723, + -0.244016,-0.944635,-0.219364,1.335465,-0.301849,-0.5875, + -0.588534,-0.475384,-0.653941,1.358796,-0.271614,-0.673773, + -0.244016,-0.944635,-0.219364,1.335465,-0.301849,-0.5875, + -0.175453,-0.874143,-0.452869,1.378738,-0.288996,-0.660875, + -0.77552,-0.569812,-0.271814,1.312921,-0.28446,-0.594723, + -0.822459,-0.568824,0,1.297571,-0.288968,-0.5, + -0.433457,-0.901174,0,1.320807,-0.307035,-0.5, + -0.433457,-0.901174,0,1.320807,-0.307035,-0.5, + -0.244016,-0.944635,-0.219364,1.335465,-0.301849,-0.5875, + -0.77552,-0.569812,-0.271814,1.312921,-0.28446,-0.594723, + 0.014735,-0.999891,0,1.367033,-0.309791,-0.5, + 0.070927,-0.992428,-0.100277,1.378957,-0.304305,-0.5825, + -0.244016,-0.944635,-0.219364,1.335465,-0.301849,-0.5875, + 0.014735,-0.999891,0,1.367033,-0.309791,-0.5, + -0.244016,-0.944635,-0.219364,1.335465,-0.301849,-0.5875, + -0.433457,-0.901174,0,1.320807,-0.307035,-0.5, + -0.693597,-0.068529,0.717096,1.333479,-0.188456,-0.340079, + -0.356933,0.09138,0.92965,1.401596,-0.166219,-0.296464, + -0.39719,0.033722,0.917117,1.420971,-0.21646,-0.282086, + -0.693597,-0.068529,0.717096,1.333479,-0.188456,-0.340079, + -0.39719,0.033722,0.917117,1.420971,-0.21646,-0.282086, + -0.738864,-0.111606,0.664548,1.346635,-0.237972,-0.328782, + -0.07755,0.232519,0.969495,1.483337,-0.139536,-0.281926, + -0.053569,0.174235,0.983246,1.510174,-0.190646,-0.26652, + -0.39719,0.033722,0.917117,1.420971,-0.21646,-0.282086, + -0.07755,0.232519,0.969495,1.483337,-0.139536,-0.281926, + -0.39719,0.033722,0.917117,1.420971,-0.21646,-0.282086, + -0.356933,0.09138,0.92965,1.401596,-0.166219,-0.296464, + -0.053569,0.174235,0.983246,1.510174,-0.190646,-0.26652, + 0.100693,-0.274502,0.9563,1.526344,-0.226473,-0.262505, + -0.236076,-0.378113,0.895153,1.435022,-0.251106,-0.278521, + -0.236076,-0.378113,0.895153,1.435022,-0.251106,-0.278521, + -0.39719,0.033722,0.917117,1.420971,-0.21646,-0.282086, + -0.053569,0.174235,0.983246,1.510174,-0.190646,-0.26652, + -0.588534,-0.475383,0.653941,1.358796,-0.271614,-0.326227, + -0.738864,-0.111606,0.664548,1.346635,-0.237972,-0.328782, + -0.39719,0.033722,0.917117,1.420971,-0.21646,-0.282086, + -0.588534,-0.475383,0.653941,1.358796,-0.271614,-0.326227, + -0.39719,0.033722,0.917117,1.420971,-0.21646,-0.282086, + -0.236076,-0.378113,0.895153,1.435022,-0.251106,-0.278521, + 0.523401,0.54123,0.65812,1.633195,-0.090616,-0.340079, + 0.58545,0.437052,0.682813,1.673712,-0.14332,-0.328782, + 0.256589,0.31723,0.912977,1.599377,-0.164832,-0.282086, + 0.523401,0.54123,0.65812,1.633195,-0.090616,-0.340079, + 0.256589,0.31723,0.912977,1.599377,-0.164832,-0.282086, + 0.223762,0.384639,0.895535,1.565078,-0.112852,-0.296464, + 0.58545,0.437052,0.682813,1.673712,-0.14332,-0.328782, + 0.722198,-0.015351,0.691516,1.693578,-0.180157,-0.326227, + 0.442231,-0.107524,0.890433,1.617509,-0.201252,-0.278521, + 0.442231,-0.107524,0.890433,1.617509,-0.201252,-0.278521, + 0.256589,0.31723,0.912977,1.599377,-0.164832,-0.282086, + 0.58545,0.437052,0.682813,1.673712,-0.14332,-0.328782, + 0.100693,-0.274502,0.9563,1.526344,-0.226473,-0.262505, + -0.053569,0.174235,0.983246,1.510174,-0.190646,-0.26652, + 0.256589,0.31723,0.912977,1.599377,-0.164832,-0.282086, + 0.100693,-0.274502,0.9563,1.526344,-0.226473,-0.262505, + 0.256589,0.31723,0.912977,1.599377,-0.164832,-0.282086, + 0.442231,-0.107524,0.890433,1.617509,-0.201252,-0.278521, + -0.053569,0.174235,0.983246,1.510174,-0.190646,-0.26652, + -0.07755,0.232519,0.969495,1.483337,-0.139536,-0.281926, + 0.223762,0.384639,0.895535,1.565078,-0.112852,-0.296464, + 0.223762,0.384639,0.895535,1.565078,-0.112852,-0.296464, + 0.256589,0.31723,0.912977,1.599377,-0.164832,-0.282086, + -0.053569,0.174235,0.983246,1.510174,-0.190646,-0.26652, + 0.633983,-0.62254,0.458813,1.689524,-0.205721,-0.339125, + 0.442953,-0.878385,0.179534,1.670754,-0.221475,-0.361333, + 0.361333,-0.91087,0.199385,1.617662,-0.240344,-0.335375, + 0.361333,-0.91087,0.199385,1.617662,-0.240344,-0.335375, + 0.389599,-0.715497,0.579893,1.618964,-0.225886,-0.294, + 0.633983,-0.62254,0.458813,1.689524,-0.205721,-0.339125, + 0.25096,-0.936595,0.244557,1.538546,-0.263835,-0.322437, + 0.205519,-0.76511,0.610221,1.53476,-0.249706,-0.2785, + 0.389599,-0.715497,0.579893,1.618964,-0.225886,-0.294, + 0.25096,-0.936595,0.244557,1.538546,-0.263835,-0.322437, + 0.389599,-0.715497,0.579893,1.618964,-0.225886,-0.294, + 0.361333,-0.91087,0.199385,1.617662,-0.240344,-0.335375, + 0.100693,-0.274502,0.9563,1.526344,-0.226473,-0.262505, + 0.442231,-0.107524,0.890433,1.617509,-0.201252,-0.278521, + 0.389599,-0.715497,0.579893,1.618964,-0.225886,-0.294, + 0.100693,-0.274502,0.9563,1.526344,-0.226473,-0.262505, + 0.389599,-0.715497,0.579893,1.618964,-0.225886,-0.294, + 0.205519,-0.76511,0.610221,1.53476,-0.249706,-0.2785, + 0.442231,-0.107524,0.890433,1.617509,-0.201252,-0.278521, + 0.722198,-0.015351,0.691516,1.693578,-0.180157,-0.326227, + 0.633983,-0.62254,0.458813,1.689524,-0.205721,-0.339125, + 0.633983,-0.62254,0.458813,1.689524,-0.205721,-0.339125, + 0.389599,-0.715497,0.579893,1.618964,-0.225886,-0.294, + 0.442231,-0.107524,0.890433,1.617509,-0.201252,-0.278521, + 0.055786,-0.978344,0.199328,1.40287,-0.293254,-0.361333, + -0.175453,-0.874143,0.452869,1.378738,-0.288996,-0.339125, + 0.03573,-0.852716,0.521152,1.449927,-0.271179,-0.294, + 0.055786,-0.978344,0.199328,1.40287,-0.293254,-0.361333, + 0.03573,-0.852716,0.521152,1.449927,-0.271179,-0.294, + 0.155998,-0.969634,0.188349,1.458284,-0.283049,-0.335375, + -0.175453,-0.874143,0.452869,1.378738,-0.288996,-0.339125, + -0.588534,-0.475383,0.653941,1.358796,-0.271614,-0.326227, + -0.236076,-0.378113,0.895153,1.435022,-0.251106,-0.278521, + -0.236076,-0.378113,0.895153,1.435022,-0.251106,-0.278521, + 0.03573,-0.852716,0.521152,1.449927,-0.271179,-0.294, + -0.175453,-0.874143,0.452869,1.378738,-0.288996,-0.339125, + 0.100693,-0.274502,0.9563,1.526344,-0.226473,-0.262505, + 0.205519,-0.76511,0.610221,1.53476,-0.249706,-0.2785, + 0.03573,-0.852716,0.521152,1.449927,-0.271179,-0.294, + 0.100693,-0.274502,0.9563,1.526344,-0.226473,-0.262505, + 0.03573,-0.852716,0.521152,1.449927,-0.271179,-0.294, + -0.236076,-0.378113,0.895153,1.435022,-0.251106,-0.278521, + 0.25096,-0.936595,0.244557,1.538546,-0.263835,-0.322437, + 0.155998,-0.969634,0.188349,1.458284,-0.283049,-0.335375, + 0.03573,-0.852716,0.521152,1.449927,-0.271179,-0.294, + 0.25096,-0.936595,0.244557,1.538546,-0.263835,-0.322437, + 0.03573,-0.852716,0.521152,1.449927,-0.271179,-0.294, + 0.205519,-0.76511,0.610221,1.53476,-0.249706,-0.2785, + 0.442953,-0.878385,-0.179534,1.670754,-0.221475,-0.638667, + 0.361333,-0.91087,-0.199385,1.617662,-0.240344,-0.664625, + 0.33419,-0.939127,-0.079739,1.627523,-0.246239,-0.5905, + 0.442953,-0.878385,-0.179534,1.670754,-0.221475,-0.638667, + 0.33419,-0.939127,-0.079739,1.627523,-0.246239,-0.5905, + 0.43479,-0.894931,-0.100277,1.696988,-0.219088,-0.5825, + 0.361333,-0.91087,-0.199385,1.617662,-0.240344,-0.664625, + 0.25096,-0.936595,-0.244557,1.538546,-0.263835,-0.677562, + 0.257883,-0.962433,-0.08496,1.540826,-0.272345,-0.59775, + 0.257883,-0.962433,-0.08496,1.540826,-0.272345,-0.59775, + 0.33419,-0.939127,-0.079739,1.627523,-0.246239,-0.5905, + 0.361333,-0.91087,-0.199385,1.617662,-0.240344,-0.664625, + 0.258819,-0.965926,0,1.54159,-0.275196,-0.5, + 0.339948,-0.940444,0,1.635245,-0.247046,-0.5, + 0.33419,-0.939127,-0.079739,1.627523,-0.246239,-0.5905, + 0.258819,-0.965926,0,1.54159,-0.275196,-0.5, + 0.33419,-0.939127,-0.079739,1.627523,-0.246239,-0.5905, + 0.257883,-0.962433,-0.08496,1.540826,-0.272345,-0.59775, + 0.339948,-0.940444,0,1.635245,-0.247046,-0.5, + 0.487185,-0.873299,0,1.710058,-0.217878,-0.5, + 0.43479,-0.894931,-0.100277,1.696988,-0.219088,-0.5825, + 0.43479,-0.894931,-0.100277,1.696988,-0.219088,-0.5825, + 0.33419,-0.939127,-0.079739,1.627523,-0.246239,-0.5905, + 0.339948,-0.940444,0,1.635245,-0.247046,-0.5, + 0.055786,-0.978343,-0.199329,1.40287,-0.293254,-0.638667, + 0.070927,-0.992428,-0.100277,1.378957,-0.304305,-0.5825, + 0.180146,-0.980403,-0.079739,1.452691,-0.293085,-0.5905, + 0.055786,-0.978343,-0.199329,1.40287,-0.293254,-0.638667, + 0.180146,-0.980403,-0.079739,1.452691,-0.293085,-0.5905, + 0.155998,-0.969633,-0.18835,1.458284,-0.283049,-0.664625, + 0.070927,-0.992428,-0.100277,1.378957,-0.304305,-0.5825, + 0.014735,-0.999891,0,1.367033,-0.309791,-0.5, + 0.175818,-0.984423,0,1.446407,-0.297645,-0.5, + 0.175818,-0.984423,0,1.446407,-0.297645,-0.5, + 0.180146,-0.980403,-0.079739,1.452691,-0.293085,-0.5905, + 0.070927,-0.992428,-0.100277,1.378957,-0.304305,-0.5825, + 0.258819,-0.965926,0,1.54159,-0.275196,-0.5, + 0.257883,-0.962433,-0.08496,1.540826,-0.272345,-0.59775, + 0.180146,-0.980403,-0.079739,1.452691,-0.293085,-0.5905, + 0.258819,-0.965926,0,1.54159,-0.275196,-0.5, + 0.180146,-0.980403,-0.079739,1.452691,-0.293085,-0.5905, + 0.175818,-0.984423,0,1.446407,-0.297645,-0.5, + 0.257883,-0.962433,-0.08496,1.540826,-0.272345,-0.59775, + 0.25096,-0.936595,-0.244557,1.538546,-0.263835,-0.677562, + 0.155998,-0.969633,-0.18835,1.458284,-0.283049,-0.664625, + 0.155998,-0.969633,-0.18835,1.458284,-0.283049,-0.664625, + 0.180146,-0.980403,-0.079739,1.452691,-0.293085,-0.5905, + 0.257883,-0.962433,-0.08496,1.540826,-0.272345,-0.59775, + 0.055786,-0.978344,0.199328,1.40287,-0.293254,-0.361333, + 0.155998,-0.969634,0.188349,1.458284,-0.283049,-0.335375, + 0.180146,-0.980403,0.079739,1.452691,-0.293085,-0.4095, + 0.055786,-0.978344,0.199328,1.40287,-0.293254,-0.361333, + 0.180146,-0.980403,0.079739,1.452691,-0.293085,-0.4095, + 0.070927,-0.992428,0.100277,1.378957,-0.304305,-0.4175, + 0.155998,-0.969634,0.188349,1.458284,-0.283049,-0.335375, + 0.25096,-0.936595,0.244557,1.538546,-0.263835,-0.322437, + 0.257883,-0.962433,0.08496,1.540826,-0.272345,-0.40225, + 0.257883,-0.962433,0.08496,1.540826,-0.272345,-0.40225, + 0.180146,-0.980403,0.079739,1.452691,-0.293085,-0.4095, + 0.155998,-0.969634,0.188349,1.458284,-0.283049,-0.335375, + 0.258819,-0.965926,0,1.54159,-0.275196,-0.5, + 0.175818,-0.984423,0,1.446407,-0.297645,-0.5, + 0.180146,-0.980403,0.079739,1.452691,-0.293085,-0.4095, + 0.258819,-0.965926,0,1.54159,-0.275196,-0.5, + 0.180146,-0.980403,0.079739,1.452691,-0.293085,-0.4095, + 0.257883,-0.962433,0.08496,1.540826,-0.272345,-0.40225, + 0.175818,-0.984423,0,1.446407,-0.297645,-0.5, + 0.014735,-0.999891,0,1.367033,-0.309791,-0.5, + 0.070927,-0.992428,0.100277,1.378957,-0.304305,-0.4175, + 0.070927,-0.992428,0.100277,1.378957,-0.304305,-0.4175, + 0.180146,-0.980403,0.079739,1.452691,-0.293085,-0.4095, + 0.175818,-0.984423,0,1.446407,-0.297645,-0.5, + 0.442953,-0.878385,0.179534,1.670754,-0.221475,-0.361333, + 0.43479,-0.894931,0.100278,1.696988,-0.219088,-0.4175, + 0.33419,-0.939126,0.079739,1.627523,-0.246239,-0.4095, + 0.442953,-0.878385,0.179534,1.670754,-0.221475,-0.361333, + 0.33419,-0.939126,0.079739,1.627523,-0.246239,-0.4095, + 0.361333,-0.91087,0.199385,1.617662,-0.240344,-0.335375, + 0.43479,-0.894931,0.100278,1.696988,-0.219088,-0.4175, + 0.487185,-0.873299,0,1.710058,-0.217878,-0.5, + 0.339948,-0.940444,0,1.635245,-0.247046,-0.5, + 0.339948,-0.940444,0,1.635245,-0.247046,-0.5, + 0.33419,-0.939126,0.079739,1.627523,-0.246239,-0.4095, + 0.43479,-0.894931,0.100278,1.696988,-0.219088,-0.4175, + 0.258819,-0.965926,0,1.54159,-0.275196,-0.5, + 0.257883,-0.962433,0.08496,1.540826,-0.272345,-0.40225, + 0.33419,-0.939126,0.079739,1.627523,-0.246239,-0.4095, + 0.258819,-0.965926,0,1.54159,-0.275196,-0.5, + 0.33419,-0.939126,0.079739,1.627523,-0.246239,-0.4095, + 0.339948,-0.940444,0,1.635245,-0.247046,-0.5, + 0.257883,-0.962433,0.08496,1.540826,-0.272345,-0.40225, + 0.25096,-0.936595,0.244557,1.538546,-0.263835,-0.322437, + 0.361333,-0.91087,0.199385,1.617662,-0.240344,-0.335375, + 0.361333,-0.91087,0.199385,1.617662,-0.240344,-0.335375, + 0.33419,-0.939126,0.079739,1.627523,-0.246239,-0.4095, + 0.257883,-0.962433,0.08496,1.540826,-0.272345,-0.40225, +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1728,data,NULL}; +const struct gllist *s1_5=&frame; diff --git a/hacks/glx/s1_6.c b/hacks/glx/s1_6.c new file mode 100644 index 0000000..bf2490e --- /dev/null +++ b/hacks/glx/s1_6.c @@ -0,0 +1,1733 @@ +#include "gllist.h" +static const float data[]={ + 0.710152,0.225044,-0.667113,1.437472,0.482703,-0.67159, + 0.751095,0.142007,-0.644741,1.460394,0.412133,-0.660849, + 0.922813,0.236109,-0.304415,1.492239,0.440457,-0.587736, + 0.922813,0.236109,-0.304415,1.492239,0.440457,-0.587736, + 0.888327,0.330007,-0.319329,1.470529,0.515074,-0.593594, + 0.710152,0.225044,-0.667113,1.437472,0.482703,-0.67159, + 0.964484,0.264141,0,1.502855,0.449898,-0.5, + 0.923004,0.384789,0,1.481548,0.525864,-0.5, + 0.888327,0.330007,-0.319329,1.470529,0.515074,-0.593594, + 0.964484,0.264141,0,1.502855,0.449898,-0.5, + 0.888327,0.330007,-0.319329,1.470529,0.515074,-0.593594, + 0.922813,0.236109,-0.304415,1.492239,0.440457,-0.587736, + 0.923004,0.384789,0,1.481548,0.525864,-0.5, + 0.551211,0.834366,0,1.460683,0.568581,-0.5, + 0.590668,0.729279,-0.345345,1.449724,0.55695,-0.594774, + 0.590668,0.729279,-0.345345,1.449724,0.55695,-0.594774, + 0.888327,0.330007,-0.319329,1.470529,0.515074,-0.593594, + 0.923004,0.384789,0,1.481548,0.525864,-0.5, + 0.478093,0.57114,-0.667253,1.416649,0.522728,-0.673866, + 0.710152,0.225044,-0.667113,1.437472,0.482703,-0.67159, + 0.888327,0.330007,-0.319329,1.470529,0.515074,-0.593594, + 0.478093,0.57114,-0.667253,1.416649,0.522728,-0.673866, + 0.888327,0.330007,-0.319329,1.470529,0.515074,-0.593594, + 0.590668,0.729279,-0.345345,1.449724,0.55695,-0.594774, + 0.922813,0.236109,0.304415,1.492239,0.440457,-0.412264, + 0.751095,0.142007,0.644741,1.460394,0.412133,-0.339151, + 0.710152,0.225044,0.667112,1.437472,0.482703,-0.32841, + 0.710152,0.225044,0.667112,1.437472,0.482703,-0.32841, + 0.888327,0.330007,0.319329,1.470529,0.515074,-0.406406, + 0.922813,0.236109,0.304415,1.492239,0.440457,-0.412264, + 0.478094,0.57114,0.667253,1.416649,0.522728,-0.326134, + 0.590668,0.729279,0.345345,1.449724,0.55695,-0.405226, + 0.888327,0.330007,0.319329,1.470529,0.515074,-0.406406, + 0.478094,0.57114,0.667253,1.416649,0.522728,-0.326134, + 0.888327,0.330007,0.319329,1.470529,0.515074,-0.406406, + 0.710152,0.225044,0.667112,1.437472,0.482703,-0.32841, + 0.590668,0.729279,0.345345,1.449724,0.55695,-0.405226, + 0.551211,0.834366,0,1.460683,0.568581,-0.5, + 0.923004,0.384789,0,1.481548,0.525864,-0.5, + 0.923004,0.384789,0,1.481548,0.525864,-0.5, + 0.888327,0.330007,0.319329,1.470529,0.515074,-0.406406, + 0.590668,0.729279,0.345345,1.449724,0.55695,-0.405226, + 0.964484,0.264141,0,1.502855,0.449898,-0.5, + 0.922813,0.236109,0.304415,1.492239,0.440457,-0.412264, + 0.888327,0.330007,0.319329,1.470529,0.515074,-0.406406, + 0.964484,0.264141,0,1.502855,0.449898,-0.5, + 0.888327,0.330007,0.319329,1.470529,0.515074,-0.406406, + 0.923004,0.384789,0,1.481548,0.525864,-0.5, + -0.553505,0.813265,0.179534,1.370035,0.524394,-0.361333, + -0.571934,0.814147,0.100277,1.384841,0.546182,-0.4175, + -0.169784,0.964201,0.20369,1.423386,0.566478,-0.4125, + -0.553505,0.813265,0.179534,1.370035,0.524394,-0.361333, + -0.169784,0.964201,0.20369,1.423386,0.566478,-0.4125, + -0.216141,0.855174,0.471127,1.392914,0.533174,-0.339125, + -0.527613,0.849485,0,1.392236,0.557026,-0.5, + -0.070011,0.997546,0,1.433279,0.578472,-0.5, + -0.169784,0.964201,0.20369,1.423386,0.566478,-0.4125, + -0.527613,0.849485,0,1.392236,0.557026,-0.5, + -0.169784,0.964201,0.20369,1.423386,0.566478,-0.4125, + -0.571934,0.814147,0.100277,1.384841,0.546182,-0.4175, + 0.551211,0.834366,0,1.460683,0.568581,-0.5, + 0.590668,0.729279,0.345345,1.449724,0.55695,-0.405226, + -0.169784,0.964201,0.20369,1.423386,0.566478,-0.4125, + 0.551211,0.834366,0,1.460683,0.568581,-0.5, + -0.169784,0.964201,0.20369,1.423386,0.566478,-0.4125, + -0.070011,0.997546,0,1.433279,0.578472,-0.5, + 0.590668,0.729279,0.345345,1.449724,0.55695,-0.405226, + 0.478094,0.57114,0.667253,1.416649,0.522728,-0.326134, + -0.216141,0.855174,0.471127,1.392914,0.533174,-0.339125, + -0.216141,0.855174,0.471127,1.392914,0.533174,-0.339125, + -0.169784,0.964201,0.20369,1.423386,0.566478,-0.4125, + 0.590668,0.729279,0.345345,1.449724,0.55695,-0.405226, + -0.553505,0.813265,-0.179534,1.370035,0.524394,-0.638667, + -0.216141,0.855174,-0.471127,1.392914,0.533174,-0.660875, + -0.169784,0.964201,-0.203689,1.423386,0.566478,-0.5875, + -0.553505,0.813265,-0.179534,1.370035,0.524394,-0.638667, + -0.169784,0.964201,-0.203689,1.423386,0.566478,-0.5875, + -0.571934,0.814147,-0.100277,1.384841,0.546182,-0.5825, + -0.216141,0.855174,-0.471127,1.392914,0.533174,-0.660875, + 0.478093,0.57114,-0.667253,1.416649,0.522728,-0.673866, + 0.590668,0.729279,-0.345345,1.449724,0.55695,-0.594774, + 0.590668,0.729279,-0.345345,1.449724,0.55695,-0.594774, + -0.169784,0.964201,-0.203689,1.423386,0.566478,-0.5875, + -0.216141,0.855174,-0.471127,1.392914,0.533174,-0.660875, + 0.551211,0.834366,0,1.460683,0.568581,-0.5, + -0.070011,0.997546,0,1.433279,0.578472,-0.5, + -0.169784,0.964201,-0.203689,1.423386,0.566478,-0.5875, + 0.551211,0.834366,0,1.460683,0.568581,-0.5, + -0.169784,0.964201,-0.203689,1.423386,0.566478,-0.5875, + 0.590668,0.729279,-0.345345,1.449724,0.55695,-0.594774, + -0.527613,0.849485,0,1.392236,0.557026,-0.5, + -0.571934,0.814147,-0.100277,1.384841,0.546182,-0.5825, + -0.169784,0.964201,-0.203689,1.423386,0.566478,-0.5875, + -0.527613,0.849485,0,1.392236,0.557026,-0.5, + -0.169784,0.964201,-0.203689,1.423386,0.566478,-0.5875, + -0.070011,0.997546,0,1.433279,0.578472,-0.5, + 0.751095,0.142007,0.644741,1.460394,0.412133,-0.339151, + 0.45328,-0.00761,0.891335,1.407319,0.364926,-0.295283, + 0.413326,0.054801,0.908933,1.382377,0.428753,-0.281613, + 0.751095,0.142007,0.644741,1.460394,0.412133,-0.339151, + 0.413326,0.054801,0.908933,1.382377,0.428753,-0.281613, + 0.710152,0.225044,0.667112,1.437472,0.482703,-0.32841, + 0.45328,-0.00761,0.891335,1.407319,0.364926,-0.295283, + 0.144715,-0.16618,0.975419,1.343629,0.308278,-0.28066, + 0.112951,-0.120534,0.986262,1.316263,0.364012,-0.266014, + 0.112951,-0.120534,0.986262,1.316263,0.364012,-0.266014, + 0.413326,0.054801,0.908933,1.382377,0.428753,-0.281613, + 0.45328,-0.00761,0.891335,1.407319,0.364926,-0.295283, + -0.191431,0.222135,0.956039,1.294932,0.399266,-0.262379, + 0.141626,0.422273,0.895336,1.36126,0.466583,-0.278403, + 0.413326,0.054801,0.908933,1.382377,0.428753,-0.281613, + -0.191431,0.222135,0.956039,1.294932,0.399266,-0.262379, + 0.413326,0.054801,0.908933,1.382377,0.428753,-0.281613, + 0.112951,-0.120534,0.986262,1.316263,0.364012,-0.266014, + 0.141626,0.422273,0.895336,1.36126,0.466583,-0.278403, + 0.478094,0.57114,0.667253,1.416649,0.522728,-0.326134, + 0.710152,0.225044,0.667112,1.437472,0.482703,-0.32841, + 0.710152,0.225044,0.667112,1.437472,0.482703,-0.32841, + 0.413326,0.054801,0.908933,1.382377,0.428753,-0.281613, + 0.141626,0.422273,0.895336,1.36126,0.466583,-0.278403, + -0.17234,-0.336344,0.925836,1.279939,0.25163,-0.295283, + -0.503423,-0.512227,0.695837,1.226863,0.204423,-0.339151, + -0.508694,-0.497612,0.702576,1.195055,0.245321,-0.32841, + -0.508694,-0.497612,0.702576,1.195055,0.245321,-0.32841, + -0.19339,-0.303475,0.933008,1.25015,0.299272,-0.281613, + -0.17234,-0.336344,0.925836,1.279939,0.25163,-0.295283, + -0.73056,-0.181076,0.658402,1.174088,0.27496,-0.326134, + -0.461199,-0.002494,0.887293,1.22904,0.331527,-0.278403, + -0.19339,-0.303475,0.933008,1.25015,0.299272,-0.281613, + -0.73056,-0.181076,0.658402,1.174088,0.27496,-0.326134, + -0.19339,-0.303475,0.933008,1.25015,0.299272,-0.281613, + -0.508694,-0.497612,0.702576,1.195055,0.245321,-0.32841, + -0.461199,-0.002494,0.887293,1.22904,0.331527,-0.278403, + -0.191431,0.222135,0.956039,1.294932,0.399266,-0.262379, + 0.112951,-0.120534,0.986262,1.316263,0.364012,-0.266014, + 0.112951,-0.120534,0.986262,1.316263,0.364012,-0.266014, + -0.19339,-0.303475,0.933008,1.25015,0.299272,-0.281613, + -0.461199,-0.002494,0.887293,1.22904,0.331527,-0.278403, + 0.144715,-0.16618,0.975419,1.343629,0.308278,-0.28066, + -0.17234,-0.336344,0.925836,1.279939,0.25163,-0.295283, + -0.19339,-0.303475,0.933008,1.25015,0.299272,-0.281613, + 0.144715,-0.16618,0.975419,1.343629,0.308278,-0.28066, + -0.19339,-0.303475,0.933008,1.25015,0.299272,-0.281613, + 0.112951,-0.120534,0.986262,1.316263,0.364012,-0.266014, + -0.828633,0.523102,0.199328,1.177383,0.324897,-0.361333, + -0.766049,0.607525,0.209958,1.213173,0.368416,-0.335375, + -0.723455,0.416599,0.550508,1.219504,0.355352,-0.294, + -0.828633,0.523102,0.199328,1.177383,0.324897,-0.361333, + -0.723455,0.416599,0.550508,1.219504,0.355352,-0.294, + -0.850149,0.280677,0.445496,1.169407,0.301726,-0.339125, + -0.766049,0.607525,0.209958,1.213173,0.368416,-0.335375, + -0.702693,0.678582,0.21389,1.26889,0.429299,-0.322437, + -0.617508,0.597059,0.512059,1.279412,0.419138,-0.2785, + -0.617508,0.597059,0.512059,1.279412,0.419138,-0.2785, + -0.723455,0.416599,0.550508,1.219504,0.355352,-0.294, + -0.766049,0.607525,0.209958,1.213173,0.368416,-0.335375, + -0.191431,0.222135,0.956039,1.294932,0.399266,-0.262379, + -0.461199,-0.002494,0.887293,1.22904,0.331527,-0.278403, + -0.723455,0.416599,0.550508,1.219504,0.355352,-0.294, + -0.191431,0.222135,0.956039,1.294932,0.399266,-0.262379, + -0.723455,0.416599,0.550508,1.219504,0.355352,-0.294, + -0.617508,0.597059,0.512059,1.279412,0.419138,-0.2785, + -0.461199,-0.002494,0.887293,1.22904,0.331527,-0.278403, + -0.73056,-0.181076,0.658402,1.174088,0.27496,-0.326134, + -0.850149,0.280677,0.445496,1.169407,0.301726,-0.339125, + -0.850149,0.280677,0.445496,1.169407,0.301726,-0.339125, + -0.723455,0.416599,0.550508,1.219504,0.355352,-0.294, + -0.461199,-0.002494,0.887293,1.22904,0.331527,-0.278403, + -0.623755,0.751092,0.216309,1.327792,0.487107,-0.335375, + -0.553505,0.813265,0.179534,1.370035,0.524394,-0.361333, + -0.216141,0.855174,0.471127,1.392914,0.533174,-0.339125, + -0.216141,0.855174,0.471127,1.392914,0.533174,-0.339125, + -0.382645,0.670188,0.635949,1.341069,0.481236,-0.294, + -0.623755,0.751092,0.216309,1.327792,0.487107,-0.335375, + -0.216141,0.855174,0.471127,1.392914,0.533174,-0.339125, + 0.478094,0.57114,0.667253,1.416649,0.522728,-0.326134, + 0.141626,0.422273,0.895336,1.36126,0.466583,-0.278403, + 0.141626,0.422273,0.895336,1.36126,0.466583,-0.278403, + -0.382645,0.670188,0.635949,1.341069,0.481236,-0.294, + -0.216141,0.855174,0.471127,1.392914,0.533174,-0.339125, + -0.191431,0.222135,0.956039,1.294932,0.399266,-0.262379, + -0.617508,0.597059,0.512059,1.279412,0.419138,-0.2785, + -0.382645,0.670188,0.635949,1.341069,0.481236,-0.294, + -0.191431,0.222135,0.956039,1.294932,0.399266,-0.262379, + -0.382645,0.670188,0.635949,1.341069,0.481236,-0.294, + 0.141626,0.422273,0.895336,1.36126,0.466583,-0.278403, + -0.617508,0.597059,0.512059,1.279412,0.419138,-0.2785, + -0.702693,0.678582,0.21389,1.26889,0.429299,-0.322437, + -0.623755,0.751092,0.216309,1.327792,0.487107,-0.335375, + -0.623755,0.751092,0.216309,1.327792,0.487107,-0.335375, + -0.382645,0.670188,0.635949,1.341069,0.481236,-0.294, + -0.617508,0.597059,0.512059,1.279412,0.419138,-0.2785, + -0.503423,-0.512227,0.695837,1.226863,0.204423,-0.339151, + -0.715537,-0.612433,0.336055,1.195018,0.176099,-0.412264, + -0.707587,-0.61874,0.341293,1.161998,0.212951,-0.406406, + -0.503423,-0.512227,0.695837,1.226863,0.204423,-0.339151, + -0.707587,-0.61874,0.341293,1.161998,0.212951,-0.406406, + -0.508694,-0.497612,0.702576,1.195055,0.245321,-0.32841, + -0.715537,-0.612433,0.336055,1.195018,0.176099,-0.412264, + -0.784292,-0.620391,0,1.184403,0.166658,-0.5, + -0.749482,-0.662025,0,1.150979,0.202161,-0.5, + -0.749482,-0.662025,0,1.150979,0.202161,-0.5, + -0.707587,-0.61874,0.341293,1.161998,0.212951,-0.406406, + -0.715537,-0.612433,0.336055,1.195018,0.176099,-0.412264, + -0.92836,-0.371683,0,1.12918,0.229952,-0.5, + -0.856012,-0.369954,0.361078,1.140576,0.24116,-0.405226, + -0.707587,-0.61874,0.341293,1.161998,0.212951,-0.406406, + -0.92836,-0.371683,0,1.12918,0.229952,-0.5, + -0.707587,-0.61874,0.341293,1.161998,0.212951,-0.406406, + -0.749482,-0.662025,0,1.150979,0.202161,-0.5, + -0.856012,-0.369954,0.361078,1.140576,0.24116,-0.405226, + -0.73056,-0.181076,0.658402,1.174088,0.27496,-0.326134, + -0.508694,-0.497612,0.702576,1.195055,0.245321,-0.32841, + -0.508694,-0.497612,0.702576,1.195055,0.245321,-0.32841, + -0.707587,-0.61874,0.341293,1.161998,0.212951,-0.406406, + -0.856012,-0.369954,0.361078,1.140576,0.24116,-0.405226, + -0.503423,-0.512227,-0.695836,1.226863,0.204423,-0.660849, + -0.508694,-0.497611,-0.702576,1.195055,0.245321,-0.67159, + -0.707587,-0.61874,-0.341293,1.161998,0.212951,-0.593594, + -0.503423,-0.512227,-0.695836,1.226863,0.204423,-0.660849, + -0.707587,-0.61874,-0.341293,1.161998,0.212951,-0.593594, + -0.715537,-0.612433,-0.336055,1.195018,0.176099,-0.587736, + -0.508694,-0.497611,-0.702576,1.195055,0.245321,-0.67159, + -0.73056,-0.181076,-0.658402,1.174088,0.27496,-0.673866, + -0.856012,-0.369954,-0.361078,1.140576,0.24116,-0.594774, + -0.856012,-0.369954,-0.361078,1.140576,0.24116,-0.594774, + -0.707587,-0.61874,-0.341293,1.161998,0.212951,-0.593594, + -0.508694,-0.497611,-0.702576,1.195055,0.245321,-0.67159, + -0.92836,-0.371683,0,1.12918,0.229952,-0.5, + -0.749482,-0.662025,0,1.150979,0.202161,-0.5, + -0.707587,-0.61874,-0.341293,1.161998,0.212951,-0.593594, + -0.92836,-0.371683,0,1.12918,0.229952,-0.5, + -0.707587,-0.61874,-0.341293,1.161998,0.212951,-0.593594, + -0.856012,-0.369954,-0.361078,1.140576,0.24116,-0.594774, + -0.749482,-0.662025,0,1.150979,0.202161,-0.5, + -0.784292,-0.620391,0,1.184403,0.166658,-0.5, + -0.715537,-0.612433,-0.336055,1.195018,0.176099,-0.587736, + -0.715537,-0.612433,-0.336055,1.195018,0.176099,-0.587736, + -0.707587,-0.61874,-0.341293,1.161998,0.212951,-0.593594, + -0.749482,-0.662025,0,1.150979,0.202161,-0.5, + -0.828633,0.523102,-0.199328,1.177383,0.324897,-0.638667, + -0.833612,0.543172,-0.100277,1.156124,0.30934,-0.5825, + -0.955913,0.208955,-0.20632,1.137187,0.27011,-0.5875, + -0.828633,0.523102,-0.199328,1.177383,0.324897,-0.638667, + -0.955913,0.208955,-0.20632,1.137187,0.27011,-0.5875, + -0.850149,0.280677,-0.445496,1.169407,0.301726,-0.660875, + -0.867381,0.497645,0,1.145545,0.301571,-0.5, + -0.986597,0.163178,0,1.125545,0.259804,-0.5, + -0.955913,0.208955,-0.20632,1.137187,0.27011,-0.5875, + -0.867381,0.497645,0,1.145545,0.301571,-0.5, + -0.955913,0.208955,-0.20632,1.137187,0.27011,-0.5875, + -0.833612,0.543172,-0.100277,1.156124,0.30934,-0.5825, + -0.92836,-0.371683,0,1.12918,0.229952,-0.5, + -0.856012,-0.369954,-0.361078,1.140576,0.24116,-0.594774, + -0.955913,0.208955,-0.20632,1.137187,0.27011,-0.5875, + -0.92836,-0.371683,0,1.12918,0.229952,-0.5, + -0.955913,0.208955,-0.20632,1.137187,0.27011,-0.5875, + -0.986597,0.163178,0,1.125545,0.259804,-0.5, + -0.73056,-0.181076,-0.658402,1.174088,0.27496,-0.673866, + -0.850149,0.280677,-0.445496,1.169407,0.301726,-0.660875, + -0.955913,0.208955,-0.20632,1.137187,0.27011,-0.5875, + -0.73056,-0.181076,-0.658402,1.174088,0.27496,-0.673866, + -0.955913,0.208955,-0.20632,1.137187,0.27011,-0.5875, + -0.856012,-0.369954,-0.361078,1.140576,0.24116,-0.594774, + -0.828633,0.523102,0.199328,1.177383,0.324897,-0.361333, + -0.850149,0.280677,0.445496,1.169407,0.301726,-0.339125, + -0.955913,0.208955,0.20632,1.137187,0.27011,-0.4125, + -0.828633,0.523102,0.199328,1.177383,0.324897,-0.361333, + -0.955913,0.208955,0.20632,1.137187,0.27011,-0.4125, + -0.833612,0.543172,0.100277,1.156124,0.30934,-0.4175, + -0.73056,-0.181076,0.658402,1.174088,0.27496,-0.326134, + -0.856012,-0.369954,0.361078,1.140576,0.24116,-0.405226, + -0.955913,0.208955,0.20632,1.137187,0.27011,-0.4125, + -0.73056,-0.181076,0.658402,1.174088,0.27496,-0.326134, + -0.955913,0.208955,0.20632,1.137187,0.27011,-0.4125, + -0.850149,0.280677,0.445496,1.169407,0.301726,-0.339125, + -0.92836,-0.371683,0,1.12918,0.229952,-0.5, + -0.986597,0.163178,0,1.125545,0.259804,-0.5, + -0.955913,0.208955,0.20632,1.137187,0.27011,-0.4125, + -0.92836,-0.371683,0,1.12918,0.229952,-0.5, + -0.955913,0.208955,0.20632,1.137187,0.27011,-0.4125, + -0.856012,-0.369954,0.361078,1.140576,0.24116,-0.405226, + -0.867381,0.497645,0,1.145545,0.301571,-0.5, + -0.833612,0.543172,0.100277,1.156124,0.30934,-0.4175, + -0.955913,0.208955,0.20632,1.137187,0.27011,-0.4125, + -0.867381,0.497645,0,1.145545,0.301571,-0.5, + -0.955913,0.208955,0.20632,1.137187,0.27011,-0.4125, + -0.986597,0.163178,0,1.125545,0.259804,-0.5, + -0.508694,-0.497611,-0.702576,1.195055,0.245321,-0.67159, + -0.503423,-0.512227,-0.695836,1.226863,0.204423,-0.660849, + -0.17234,-0.336344,-0.925836,1.279939,0.25163,-0.704717, + -0.17234,-0.336344,-0.925836,1.279939,0.25163,-0.704717, + -0.193391,-0.303475,-0.933008,1.25015,0.299272,-0.718387, + -0.508694,-0.497611,-0.702576,1.195055,0.245321,-0.67159, + 0.144715,-0.16618,-0.975419,1.343629,0.308278,-0.71934, + 0.112951,-0.120534,-0.986262,1.316263,0.364012,-0.733986, + -0.193391,-0.303475,-0.933008,1.25015,0.299272,-0.718387, + 0.144715,-0.16618,-0.975419,1.343629,0.308278,-0.71934, + -0.193391,-0.303475,-0.933008,1.25015,0.299272,-0.718387, + -0.17234,-0.336344,-0.925836,1.279939,0.25163,-0.704717, + 0.112951,-0.120534,-0.986262,1.316263,0.364012,-0.733986, + -0.191432,0.222135,-0.956039,1.294932,0.399266,-0.737621, + -0.461199,-0.002494,-0.887293,1.22904,0.331527,-0.721597, + -0.461199,-0.002494,-0.887293,1.22904,0.331527,-0.721597, + -0.193391,-0.303475,-0.933008,1.25015,0.299272,-0.718387, + 0.112951,-0.120534,-0.986262,1.316263,0.364012,-0.733986, + -0.73056,-0.181076,-0.658402,1.174088,0.27496,-0.673866, + -0.508694,-0.497611,-0.702576,1.195055,0.245321,-0.67159, + -0.193391,-0.303475,-0.933008,1.25015,0.299272,-0.718387, + -0.73056,-0.181076,-0.658402,1.174088,0.27496,-0.673866, + -0.193391,-0.303475,-0.933008,1.25015,0.299272,-0.718387, + -0.461199,-0.002494,-0.887293,1.22904,0.331527,-0.721597, + 0.751095,0.142007,-0.644741,1.460394,0.412133,-0.660849, + 0.710152,0.225044,-0.667113,1.437472,0.482703,-0.67159, + 0.413326,0.054801,-0.908933,1.382377,0.428753,-0.718387, + 0.751095,0.142007,-0.644741,1.460394,0.412133,-0.660849, + 0.413326,0.054801,-0.908933,1.382377,0.428753,-0.718387, + 0.45328,-0.007609,-0.891335,1.407319,0.364926,-0.704717, + 0.710152,0.225044,-0.667113,1.437472,0.482703,-0.67159, + 0.478093,0.57114,-0.667253,1.416649,0.522728,-0.673866, + 0.141625,0.422274,-0.895336,1.36126,0.466583,-0.721597, + 0.141625,0.422274,-0.895336,1.36126,0.466583,-0.721597, + 0.413326,0.054801,-0.908933,1.382377,0.428753,-0.718387, + 0.710152,0.225044,-0.667113,1.437472,0.482703,-0.67159, + -0.191432,0.222135,-0.956039,1.294932,0.399266,-0.737621, + 0.112951,-0.120534,-0.986262,1.316263,0.364012,-0.733986, + 0.413326,0.054801,-0.908933,1.382377,0.428753,-0.718387, + -0.191432,0.222135,-0.956039,1.294932,0.399266,-0.737621, + 0.413326,0.054801,-0.908933,1.382377,0.428753,-0.718387, + 0.141625,0.422274,-0.895336,1.36126,0.466583,-0.721597, + 0.112951,-0.120534,-0.986262,1.316263,0.364012,-0.733986, + 0.144715,-0.16618,-0.975419,1.343629,0.308278,-0.71934, + 0.45328,-0.007609,-0.891335,1.407319,0.364926,-0.704717, + 0.45328,-0.007609,-0.891335,1.407319,0.364926,-0.704717, + 0.413326,0.054801,-0.908933,1.382377,0.428753,-0.718387, + 0.112951,-0.120534,-0.986262,1.316263,0.364012,-0.733986, + -0.216141,0.855174,-0.471127,1.392914,0.533174,-0.660875, + -0.553505,0.813265,-0.179534,1.370035,0.524394,-0.638667, + -0.623755,0.751092,-0.216309,1.327792,0.487107,-0.664625, + -0.623755,0.751092,-0.216309,1.327792,0.487107,-0.664625, + -0.382645,0.670188,-0.635948,1.341069,0.481236,-0.706, + -0.216141,0.855174,-0.471127,1.392914,0.533174,-0.660875, + -0.623755,0.751092,-0.216309,1.327792,0.487107,-0.664625, + -0.702693,0.678582,-0.21389,1.26889,0.429299,-0.677562, + -0.617508,0.597059,-0.512058,1.279412,0.419138,-0.7215, + -0.617508,0.597059,-0.512058,1.279412,0.419138,-0.7215, + -0.382645,0.670188,-0.635948,1.341069,0.481236,-0.706, + -0.623755,0.751092,-0.216309,1.327792,0.487107,-0.664625, + -0.191432,0.222135,-0.956039,1.294932,0.399266,-0.737621, + 0.141625,0.422274,-0.895336,1.36126,0.466583,-0.721597, + -0.382645,0.670188,-0.635948,1.341069,0.481236,-0.706, + -0.191432,0.222135,-0.956039,1.294932,0.399266,-0.737621, + -0.382645,0.670188,-0.635948,1.341069,0.481236,-0.706, + -0.617508,0.597059,-0.512058,1.279412,0.419138,-0.7215, + 0.141625,0.422274,-0.895336,1.36126,0.466583,-0.721597, + 0.478093,0.57114,-0.667253,1.416649,0.522728,-0.673866, + -0.216141,0.855174,-0.471127,1.392914,0.533174,-0.660875, + -0.216141,0.855174,-0.471127,1.392914,0.533174,-0.660875, + -0.382645,0.670188,-0.635948,1.341069,0.481236,-0.706, + 0.141625,0.422274,-0.895336,1.36126,0.466583,-0.721597, + -0.828633,0.523102,-0.199328,1.177383,0.324897,-0.638667, + -0.850149,0.280677,-0.445496,1.169407,0.301726,-0.660875, + -0.723455,0.416599,-0.550508,1.219504,0.355352,-0.706, + -0.828633,0.523102,-0.199328,1.177383,0.324897,-0.638667, + -0.723455,0.416599,-0.550508,1.219504,0.355352,-0.706, + -0.766049,0.607525,-0.209958,1.213173,0.368416,-0.664625, + -0.850149,0.280677,-0.445496,1.169407,0.301726,-0.660875, + -0.73056,-0.181076,-0.658402,1.174088,0.27496,-0.673866, + -0.461199,-0.002494,-0.887293,1.22904,0.331527,-0.721597, + -0.461199,-0.002494,-0.887293,1.22904,0.331527,-0.721597, + -0.723455,0.416599,-0.550508,1.219504,0.355352,-0.706, + -0.850149,0.280677,-0.445496,1.169407,0.301726,-0.660875, + -0.191432,0.222135,-0.956039,1.294932,0.399266,-0.737621, + -0.617508,0.597059,-0.512058,1.279412,0.419138,-0.7215, + -0.723455,0.416599,-0.550508,1.219504,0.355352,-0.706, + -0.191432,0.222135,-0.956039,1.294932,0.399266,-0.737621, + -0.723455,0.416599,-0.550508,1.219504,0.355352,-0.706, + -0.461199,-0.002494,-0.887293,1.22904,0.331527,-0.721597, + -0.617508,0.597059,-0.512058,1.279412,0.419138,-0.7215, + -0.702693,0.678582,-0.21389,1.26889,0.429299,-0.677562, + -0.766049,0.607525,-0.209958,1.213173,0.368416,-0.664625, + -0.766049,0.607525,-0.209958,1.213173,0.368416,-0.664625, + -0.723455,0.416599,-0.550508,1.219504,0.355352,-0.706, + -0.617508,0.597059,-0.512058,1.279412,0.419138,-0.7215, + -0.553505,0.813265,0.179534,1.370035,0.524394,-0.361333, + -0.623755,0.751092,0.216309,1.327792,0.487107,-0.335375, + -0.65936,0.747587,0.079739,1.327417,0.49859,-0.4095, + -0.553505,0.813265,0.179534,1.370035,0.524394,-0.361333, + -0.65936,0.747587,0.079739,1.327417,0.49859,-0.4095, + -0.571934,0.814147,0.100277,1.384841,0.546182,-0.4175, + -0.623755,0.751092,0.216309,1.327792,0.487107,-0.335375, + -0.702693,0.678582,0.21389,1.26889,0.429299,-0.322437, + -0.716739,0.692147,0.08496,1.262552,0.435419,-0.40225, + -0.716739,0.692147,0.08496,1.262552,0.435419,-0.40225, + -0.65936,0.747587,0.079739,1.327417,0.49859,-0.4095, + -0.623755,0.751092,0.216309,1.327792,0.487107,-0.335375, + -0.71934,0.694658,0,1.260429,0.437469,-0.5, + -0.65772,0.753262,0,1.330455,0.505735,-0.5, + -0.65936,0.747587,0.079739,1.327417,0.49859,-0.4095, + -0.71934,0.694658,0,1.260429,0.437469,-0.5, + -0.65936,0.747587,0.079739,1.327417,0.49859,-0.4095, + -0.716739,0.692147,0.08496,1.262552,0.435419,-0.40225, + -0.65772,0.753262,0,1.330455,0.505735,-0.5, + -0.527613,0.849485,0,1.392236,0.557026,-0.5, + -0.571934,0.814147,0.100277,1.384841,0.546182,-0.4175, + -0.571934,0.814147,0.100277,1.384841,0.546182,-0.4175, + -0.65936,0.747587,0.079739,1.327417,0.49859,-0.4095, + -0.65772,0.753262,0,1.330455,0.505735,-0.5, + -0.828633,0.523102,0.199328,1.177383,0.324897,-0.361333, + -0.833612,0.543172,0.100277,1.156124,0.30934,-0.4175, + -0.770142,0.632868,0.079739,1.201684,0.368389,-0.4095, + -0.828633,0.523102,0.199328,1.177383,0.324897,-0.361333, + -0.770142,0.632868,0.079739,1.201684,0.368389,-0.4095, + -0.766049,0.607525,0.209958,1.213173,0.368416,-0.335375, + -0.833612,0.543172,0.100277,1.156124,0.30934,-0.4175, + -0.867381,0.497645,0,1.145545,0.301571,-0.5, + -0.775757,0.631031,0,1.19465,0.365104,-0.5, + -0.775757,0.631031,0,1.19465,0.365104,-0.5, + -0.770142,0.632868,0.079739,1.201684,0.368389,-0.4095, + -0.833612,0.543172,0.100277,1.156124,0.30934,-0.4175, + -0.71934,0.694658,0,1.260429,0.437469,-0.5, + -0.716739,0.692147,0.08496,1.262552,0.435419,-0.40225, + -0.770142,0.632868,0.079739,1.201684,0.368389,-0.4095, + -0.71934,0.694658,0,1.260429,0.437469,-0.5, + -0.770142,0.632868,0.079739,1.201684,0.368389,-0.4095, + -0.775757,0.631031,0,1.19465,0.365104,-0.5, + -0.716739,0.692147,0.08496,1.262552,0.435419,-0.40225, + -0.702693,0.678582,0.21389,1.26889,0.429299,-0.322437, + -0.766049,0.607525,0.209958,1.213173,0.368416,-0.335375, + -0.766049,0.607525,0.209958,1.213173,0.368416,-0.335375, + -0.770142,0.632868,0.079739,1.201684,0.368389,-0.4095, + -0.716739,0.692147,0.08496,1.262552,0.435419,-0.40225, + -0.828633,0.523102,-0.199328,1.177383,0.324897,-0.638667, + -0.766049,0.607525,-0.209958,1.213173,0.368416,-0.664625, + -0.770142,0.632868,-0.079739,1.201684,0.368389,-0.5905, + -0.828633,0.523102,-0.199328,1.177383,0.324897,-0.638667, + -0.770142,0.632868,-0.079739,1.201684,0.368389,-0.5905, + -0.833612,0.543172,-0.100277,1.156124,0.30934,-0.5825, + -0.766049,0.607525,-0.209958,1.213173,0.368416,-0.664625, + -0.702693,0.678582,-0.21389,1.26889,0.429299,-0.677562, + -0.716739,0.692147,-0.08496,1.262552,0.435419,-0.59775, + -0.716739,0.692147,-0.08496,1.262552,0.435419,-0.59775, + -0.770142,0.632868,-0.079739,1.201684,0.368389,-0.5905, + -0.766049,0.607525,-0.209958,1.213173,0.368416,-0.664625, + -0.71934,0.694658,0,1.260429,0.437469,-0.5, + -0.775757,0.631031,0,1.19465,0.365104,-0.5, + -0.770142,0.632868,-0.079739,1.201684,0.368389,-0.5905, + -0.71934,0.694658,0,1.260429,0.437469,-0.5, + -0.770142,0.632868,-0.079739,1.201684,0.368389,-0.5905, + -0.716739,0.692147,-0.08496,1.262552,0.435419,-0.59775, + -0.775757,0.631031,0,1.19465,0.365104,-0.5, + -0.867381,0.497645,0,1.145545,0.301571,-0.5, + -0.833612,0.543172,-0.100277,1.156124,0.30934,-0.5825, + -0.833612,0.543172,-0.100277,1.156124,0.30934,-0.5825, + -0.770142,0.632868,-0.079739,1.201684,0.368389,-0.5905, + -0.775757,0.631031,0,1.19465,0.365104,-0.5, + -0.553505,0.813265,-0.179534,1.370035,0.524394,-0.638667, + -0.571934,0.814147,-0.100277,1.384841,0.546182,-0.5825, + -0.65936,0.747587,-0.079739,1.327417,0.49859,-0.5905, + -0.553505,0.813265,-0.179534,1.370035,0.524394,-0.638667, + -0.65936,0.747587,-0.079739,1.327417,0.49859,-0.5905, + -0.623755,0.751092,-0.216309,1.327792,0.487107,-0.664625, + -0.571934,0.814147,-0.100277,1.384841,0.546182,-0.5825, + -0.527613,0.849485,0,1.392236,0.557026,-0.5, + -0.65772,0.753262,0,1.330455,0.505735,-0.5, + -0.65772,0.753262,0,1.330455,0.505735,-0.5, + -0.65936,0.747587,-0.079739,1.327417,0.49859,-0.5905, + -0.571934,0.814147,-0.100277,1.384841,0.546182,-0.5825, + -0.71934,0.694658,0,1.260429,0.437469,-0.5, + -0.716739,0.692147,-0.08496,1.262552,0.435419,-0.59775, + -0.65936,0.747587,-0.079739,1.327417,0.49859,-0.5905, + -0.71934,0.694658,0,1.260429,0.437469,-0.5, + -0.65936,0.747587,-0.079739,1.327417,0.49859,-0.5905, + -0.65772,0.753262,0,1.330455,0.505735,-0.5, + -0.716739,0.692147,-0.08496,1.262552,0.435419,-0.59775, + -0.702693,0.678582,-0.21389,1.26889,0.429299,-0.677562, + -0.623755,0.751092,-0.216309,1.327792,0.487107,-0.664625, + -0.623755,0.751092,-0.216309,1.327792,0.487107,-0.664625, + -0.65936,0.747587,-0.079739,1.327417,0.49859,-0.5905, + -0.716739,0.692147,-0.08496,1.262552,0.435419,-0.59775, + 0.751095,0.142007,-0.644741,1.460394,0.412133,-0.660849, + 0.74475,0.138417,-0.652831,1.49043,0.310049,-0.648448, + 0.924767,0.224636,-0.307154,1.521298,0.332708,-0.580972, + 0.751095,0.142007,-0.644741,1.460394,0.412133,-0.660849, + 0.924767,0.224636,-0.307154,1.521298,0.332708,-0.580972, + 0.922813,0.236109,-0.304415,1.492239,0.440457,-0.587736, + 0.74475,0.138417,-0.652831,1.49043,0.310049,-0.648448, + 0.734405,0.137212,-0.664697,1.524188,0.186469,-0.636664, + 0.924854,0.216174,-0.312912,1.554547,0.202755,-0.574544, + 0.924854,0.216174,-0.312912,1.554547,0.202755,-0.574544, + 0.924767,0.224636,-0.307154,1.521298,0.332708,-0.580972, + 0.74475,0.138417,-0.652831,1.49043,0.310049,-0.648448, + 0.97102,0.238998,0,1.564666,0.208184,-0.5, + 0.968395,0.249424,0,1.531587,0.340261,-0.5, + 0.924767,0.224636,-0.307154,1.521298,0.332708,-0.580972, + 0.97102,0.238998,0,1.564666,0.208184,-0.5, + 0.924767,0.224636,-0.307154,1.521298,0.332708,-0.580972, + 0.924854,0.216174,-0.312912,1.554547,0.202755,-0.574544, + 0.968395,0.249424,0,1.531587,0.340261,-0.5, + 0.964484,0.264141,0,1.502855,0.449898,-0.5, + 0.922813,0.236109,-0.304415,1.492239,0.440457,-0.587736, + 0.922813,0.236109,-0.304415,1.492239,0.440457,-0.587736, + 0.924767,0.224636,-0.307154,1.521298,0.332708,-0.580972, + 0.968395,0.249424,0,1.531587,0.340261,-0.5, + 0.721766,0.139046,-0.678027,1.558275,0.051411,-0.627772, + 0.68395,0.1429,-0.715397,1.589301,-0.085107,-0.624049, + 0.923419,0.19798,-0.328787,1.620986,-0.080049,-0.567663, + 0.923419,0.19798,-0.328787,1.620986,-0.080049,-0.567663, + 0.924112,0.20782,-0.320669,1.588828,0.061527,-0.569694, + 0.721766,0.139046,-0.678027,1.558275,0.051411,-0.627772, + 0.976556,0.215262,0,1.631547,-0.078363,-0.5, + 0.973545,0.228495,0,1.599013,0.064899,-0.5, + 0.924112,0.20782,-0.320669,1.588828,0.061527,-0.569694, + 0.976556,0.215262,0,1.631547,-0.078363,-0.5, + 0.924112,0.20782,-0.320669,1.588828,0.061527,-0.569694, + 0.923419,0.19798,-0.328787,1.620986,-0.080049,-0.567663, + 0.973545,0.228495,0,1.599013,0.064899,-0.5, + 0.97102,0.238998,0,1.564666,0.208184,-0.5, + 0.924854,0.216174,-0.312912,1.554547,0.202755,-0.574544, + 0.924854,0.216174,-0.312912,1.554547,0.202755,-0.574544, + 0.924112,0.20782,-0.320669,1.588828,0.061527,-0.569694, + 0.973545,0.228495,0,1.599013,0.064899,-0.5, + 0.734405,0.137212,-0.664697,1.524188,0.186469,-0.636664, + 0.721766,0.139046,-0.678027,1.558275,0.051411,-0.627772, + 0.924112,0.20782,-0.320669,1.588828,0.061527,-0.569694, + 0.734405,0.137212,-0.664697,1.524188,0.186469,-0.636664, + 0.924112,0.20782,-0.320669,1.588828,0.061527,-0.569694, + 0.924854,0.216174,-0.312912,1.554547,0.202755,-0.574544, + 0.923419,0.19798,0.328787,1.620986,-0.080049,-0.432337, + 0.68395,0.1429,0.715397,1.589301,-0.085107,-0.375951, + 0.721766,0.139046,0.678027,1.558275,0.051411,-0.372228, + 0.721766,0.139046,0.678027,1.558275,0.051411,-0.372228, + 0.924112,0.20782,0.320669,1.588828,0.061527,-0.430306, + 0.923419,0.19798,0.328787,1.620986,-0.080049,-0.432337, + 0.734405,0.137212,0.664697,1.524188,0.186469,-0.363336, + 0.924854,0.216174,0.312912,1.554547,0.202755,-0.425456, + 0.924112,0.20782,0.320669,1.588828,0.061527,-0.430306, + 0.734405,0.137212,0.664697,1.524188,0.186469,-0.363336, + 0.924112,0.20782,0.320669,1.588828,0.061527,-0.430306, + 0.721766,0.139046,0.678027,1.558275,0.051411,-0.372228, + 0.924854,0.216174,0.312912,1.554547,0.202755,-0.425456, + 0.97102,0.238998,0,1.564666,0.208184,-0.5, + 0.973545,0.228495,0,1.599013,0.064899,-0.5, + 0.973545,0.228495,0,1.599013,0.064899,-0.5, + 0.924112,0.20782,0.320669,1.588828,0.061527,-0.430306, + 0.924854,0.216174,0.312912,1.554547,0.202755,-0.425456, + 0.976556,0.215262,0,1.631547,-0.078363,-0.5, + 0.923419,0.19798,0.328787,1.620986,-0.080049,-0.432337, + 0.924112,0.20782,0.320669,1.588828,0.061527,-0.430306, + 0.976556,0.215262,0,1.631547,-0.078363,-0.5, + 0.924112,0.20782,0.320669,1.588828,0.061527,-0.430306, + 0.973545,0.228495,0,1.599013,0.064899,-0.5, + 0.751095,0.142007,0.644741,1.460394,0.412133,-0.339151, + 0.922813,0.236109,0.304415,1.492239,0.440457,-0.412264, + 0.924767,0.224636,0.307154,1.521298,0.332708,-0.419028, + 0.751095,0.142007,0.644741,1.460394,0.412133,-0.339151, + 0.924767,0.224636,0.307154,1.521298,0.332708,-0.419028, + 0.74475,0.138417,0.652831,1.49043,0.310049,-0.351552, + 0.922813,0.236109,0.304415,1.492239,0.440457,-0.412264, + 0.964484,0.264141,0,1.502855,0.449898,-0.5, + 0.968395,0.249424,0,1.531587,0.340261,-0.5, + 0.968395,0.249424,0,1.531587,0.340261,-0.5, + 0.924767,0.224636,0.307154,1.521298,0.332708,-0.419028, + 0.922813,0.236109,0.304415,1.492239,0.440457,-0.412264, + 0.97102,0.238998,0,1.564666,0.208184,-0.5, + 0.924854,0.216174,0.312912,1.554547,0.202755,-0.425456, + 0.924767,0.224636,0.307154,1.521298,0.332708,-0.419028, + 0.97102,0.238998,0,1.564666,0.208184,-0.5, + 0.924767,0.224636,0.307154,1.521298,0.332708,-0.419028, + 0.968395,0.249424,0,1.531587,0.340261,-0.5, + 0.924854,0.216174,0.312912,1.554547,0.202755,-0.425456, + 0.734405,0.137212,0.664697,1.524188,0.186469,-0.363336, + 0.74475,0.138417,0.652831,1.49043,0.310049,-0.351552, + 0.74475,0.138417,0.652831,1.49043,0.310049,-0.351552, + 0.924767,0.224636,0.307154,1.521298,0.332708,-0.419028, + 0.924854,0.216174,0.312912,1.554547,0.202755,-0.425456, + -0.503423,-0.512227,-0.695836,1.226863,0.204423,-0.660849, + -0.575759,-0.440808,-0.688615,1.264067,0.143881,-0.648448, + -0.232261,-0.293469,-0.927325,1.315513,0.181646,-0.688934, + -0.503423,-0.512227,-0.695836,1.226863,0.204423,-0.660849, + -0.232261,-0.293469,-0.927325,1.315513,0.181646,-0.688934, + -0.17234,-0.336344,-0.925836,1.279939,0.25163,-0.704717, + -0.575759,-0.440808,-0.688615,1.264067,0.143881,-0.648448, + -0.637408,-0.358226,-0.682191,1.301556,0.067036,-0.636664, + -0.287334,-0.241218,-0.926959,1.352154,0.09418,-0.673936, + -0.287334,-0.241218,-0.926959,1.352154,0.09418,-0.673936, + -0.232261,-0.293469,-0.927325,1.315513,0.181646,-0.688934, + -0.575759,-0.440808,-0.688615,1.264067,0.143881,-0.648448, + 0.061121,-0.115002,-0.991483,1.412872,0.126752,-0.68636, + 0.103365,-0.143519,-0.984235,1.377249,0.226965,-0.70243, + -0.232261,-0.293469,-0.927325,1.315513,0.181646,-0.688934, + 0.061121,-0.115002,-0.991483,1.412872,0.126752,-0.68636, + -0.232261,-0.293469,-0.927325,1.315513,0.181646,-0.688934, + -0.287334,-0.241218,-0.926959,1.352154,0.09418,-0.673936, + 0.103365,-0.143519,-0.984235,1.377249,0.226965,-0.70243, + 0.144715,-0.16618,-0.975419,1.343629,0.308278,-0.71934, + -0.17234,-0.336344,-0.925836,1.279939,0.25163,-0.704717, + -0.17234,-0.336344,-0.925836,1.279939,0.25163,-0.704717, + -0.232261,-0.293469,-0.927325,1.315513,0.181646,-0.688934, + 0.103365,-0.143519,-0.984235,1.377249,0.226965,-0.70243, + -0.686016,-0.251158,-0.682863,1.33422,-0.022771,-0.627772, + -0.71415,-0.110296,-0.691249,1.356947,-0.122198,-0.624049, + -0.355153,-0.061801,-0.932763,1.409755,-0.113768,-0.657881, + -0.355153,-0.061801,-0.932763,1.409755,-0.113768,-0.657881, + -0.331282,-0.167258,-0.928589,1.385142,-0.005911,-0.662619, + -0.686016,-0.251158,-0.682863,1.33422,-0.022771,-0.627772, + -0.032665,-0.015822,-0.999341,1.473124,-0.103652,-0.669158, + 0.024003,-0.070986,-0.997189,1.446248,0.01432,-0.674234, + -0.331282,-0.167258,-0.928589,1.385142,-0.005911,-0.662619, + -0.032665,-0.015822,-0.999341,1.473124,-0.103652,-0.669158, + -0.331282,-0.167258,-0.928589,1.385142,-0.005911,-0.662619, + -0.355153,-0.061801,-0.932763,1.409755,-0.113768,-0.657881, + 0.024003,-0.070986,-0.997189,1.446248,0.01432,-0.674234, + 0.061121,-0.115002,-0.991483,1.412872,0.126752,-0.68636, + -0.287334,-0.241218,-0.926959,1.352154,0.09418,-0.673936, + -0.287334,-0.241218,-0.926959,1.352154,0.09418,-0.673936, + -0.331282,-0.167258,-0.928589,1.385142,-0.005911,-0.662619, + 0.024003,-0.070986,-0.997189,1.446248,0.01432,-0.674234, + -0.637408,-0.358226,-0.682191,1.301556,0.067036,-0.636664, + -0.686016,-0.251158,-0.682863,1.33422,-0.022771,-0.627772, + -0.331282,-0.167258,-0.928589,1.385142,-0.005911,-0.662619, + -0.637408,-0.358226,-0.682191,1.301556,0.067036,-0.636664, + -0.331282,-0.167258,-0.928589,1.385142,-0.005911,-0.662619, + -0.287334,-0.241218,-0.926959,1.352154,0.09418,-0.673936, + 0.68395,0.1429,-0.715397,1.589301,-0.085107,-0.624049, + 0.721766,0.139046,-0.678027,1.558275,0.051411,-0.627772, + 0.376201,0.032359,-0.925973,1.507354,0.034552,-0.662619, + 0.68395,0.1429,-0.715397,1.589301,-0.085107,-0.624049, + 0.376201,0.032359,-0.925973,1.507354,0.034552,-0.662619, + 0.294772,0.058288,-0.953788,1.536493,-0.093537,-0.657881, + 0.721766,0.139046,-0.678027,1.558275,0.051411,-0.627772, + 0.734405,0.137212,-0.664697,1.524188,0.186469,-0.636664, + 0.403594,0.012135,-0.914858,1.47359,0.159325,-0.673936, + 0.403594,0.012135,-0.914858,1.47359,0.159325,-0.673936, + 0.376201,0.032359,-0.925973,1.507354,0.034552,-0.662619, + 0.721766,0.139046,-0.678027,1.558275,0.051411,-0.627772, + 0.061121,-0.115002,-0.991483,1.412872,0.126752,-0.68636, + 0.024003,-0.070986,-0.997189,1.446248,0.01432,-0.674234, + 0.376201,0.032359,-0.925973,1.507354,0.034552,-0.662619, + 0.061121,-0.115002,-0.991483,1.412872,0.126752,-0.68636, + 0.376201,0.032359,-0.925973,1.507354,0.034552,-0.662619, + 0.403594,0.012135,-0.914858,1.47359,0.159325,-0.673936, + 0.024003,-0.070986,-0.997189,1.446248,0.01432,-0.674234, + -0.032665,-0.015822,-0.999341,1.473124,-0.103652,-0.669158, + 0.294772,0.058288,-0.953788,1.536493,-0.093537,-0.657881, + 0.294772,0.058288,-0.953788,1.536493,-0.093537,-0.657881, + 0.376201,0.032359,-0.925973,1.507354,0.034552,-0.662619, + 0.024003,-0.070986,-0.997189,1.446248,0.01432,-0.674234, + 0.74475,0.138417,-0.652831,1.49043,0.310049,-0.648448, + 0.751095,0.142007,-0.644741,1.460394,0.412133,-0.660849, + 0.45328,-0.007609,-0.891335,1.407319,0.364926,-0.704717, + 0.45328,-0.007609,-0.891335,1.407319,0.364926,-0.704717, + 0.430582,0.000669,-0.902551,1.438984,0.272283,-0.688934, + 0.74475,0.138417,-0.652831,1.49043,0.310049,-0.648448, + 0.144715,-0.16618,-0.975419,1.343629,0.308278,-0.71934, + 0.103365,-0.143519,-0.984235,1.377249,0.226965,-0.70243, + 0.430582,0.000669,-0.902551,1.438984,0.272283,-0.688934, + 0.144715,-0.16618,-0.975419,1.343629,0.308278,-0.71934, + 0.430582,0.000669,-0.902551,1.438984,0.272283,-0.688934, + 0.45328,-0.007609,-0.891335,1.407319,0.364926,-0.704717, + 0.103365,-0.143519,-0.984235,1.377249,0.226965,-0.70243, + 0.061121,-0.115002,-0.991483,1.412872,0.126752,-0.68636, + 0.403594,0.012135,-0.914858,1.47359,0.159325,-0.673936, + 0.403594,0.012135,-0.914858,1.47359,0.159325,-0.673936, + 0.430582,0.000669,-0.902551,1.438984,0.272283,-0.688934, + 0.103365,-0.143519,-0.984235,1.377249,0.226965,-0.70243, + 0.734405,0.137212,-0.664697,1.524188,0.186469,-0.636664, + 0.74475,0.138417,-0.652831,1.49043,0.310049,-0.648448, + 0.430582,0.000669,-0.902551,1.438984,0.272283,-0.688934, + 0.734405,0.137212,-0.664697,1.524188,0.186469,-0.636664, + 0.430582,0.000669,-0.902551,1.438984,0.272283,-0.688934, + 0.403594,0.012135,-0.914858,1.47359,0.159325,-0.673936, + -0.503423,-0.512227,0.695837,1.226863,0.204423,-0.339151, + -0.17234,-0.336344,0.925836,1.279939,0.25163,-0.295283, + -0.232261,-0.293468,0.927325,1.315513,0.181646,-0.311066, + -0.503423,-0.512227,0.695837,1.226863,0.204423,-0.339151, + -0.232261,-0.293468,0.927325,1.315513,0.181646,-0.311066, + -0.575759,-0.440808,0.688615,1.264067,0.143881,-0.351552, + -0.17234,-0.336344,0.925836,1.279939,0.25163,-0.295283, + 0.144715,-0.16618,0.975419,1.343629,0.308278,-0.28066, + 0.103365,-0.143519,0.984235,1.377249,0.226965,-0.29757, + 0.103365,-0.143519,0.984235,1.377249,0.226965,-0.29757, + -0.232261,-0.293468,0.927325,1.315513,0.181646,-0.311066, + -0.17234,-0.336344,0.925836,1.279939,0.25163,-0.295283, + 0.061121,-0.115002,0.991483,1.412872,0.126752,-0.31364, + -0.287334,-0.241218,0.926959,1.352154,0.09418,-0.326064, + -0.232261,-0.293468,0.927325,1.315513,0.181646,-0.311066, + 0.061121,-0.115002,0.991483,1.412872,0.126752,-0.31364, + -0.232261,-0.293468,0.927325,1.315513,0.181646,-0.311066, + 0.103365,-0.143519,0.984235,1.377249,0.226965,-0.29757, + -0.287334,-0.241218,0.926959,1.352154,0.09418,-0.326064, + -0.637408,-0.358226,0.682191,1.301556,0.067036,-0.363336, + -0.575759,-0.440808,0.688615,1.264067,0.143881,-0.351552, + -0.575759,-0.440808,0.688615,1.264067,0.143881,-0.351552, + -0.232261,-0.293468,0.927325,1.315513,0.181646,-0.311066, + -0.287334,-0.241218,0.926959,1.352154,0.09418,-0.326064, + 0.45328,-0.00761,0.891335,1.407319,0.364926,-0.295283, + 0.751095,0.142007,0.644741,1.460394,0.412133,-0.339151, + 0.74475,0.138417,0.652831,1.49043,0.310049,-0.351552, + 0.74475,0.138417,0.652831,1.49043,0.310049,-0.351552, + 0.430582,0.000669,0.902551,1.438984,0.272283,-0.311066, + 0.45328,-0.00761,0.891335,1.407319,0.364926,-0.295283, + 0.734405,0.137212,0.664697,1.524188,0.186469,-0.363336, + 0.403594,0.012135,0.914858,1.47359,0.159325,-0.326064, + 0.430582,0.000669,0.902551,1.438984,0.272283,-0.311066, + 0.734405,0.137212,0.664697,1.524188,0.186469,-0.363336, + 0.430582,0.000669,0.902551,1.438984,0.272283,-0.311066, + 0.74475,0.138417,0.652831,1.49043,0.310049,-0.351552, + 0.403594,0.012135,0.914858,1.47359,0.159325,-0.326064, + 0.061121,-0.115002,0.991483,1.412872,0.126752,-0.31364, + 0.103365,-0.143519,0.984235,1.377249,0.226965,-0.29757, + 0.103365,-0.143519,0.984235,1.377249,0.226965,-0.29757, + 0.430582,0.000669,0.902551,1.438984,0.272283,-0.311066, + 0.403594,0.012135,0.914858,1.47359,0.159325,-0.326064, + 0.144715,-0.16618,0.975419,1.343629,0.308278,-0.28066, + 0.45328,-0.00761,0.891335,1.407319,0.364926,-0.295283, + 0.430582,0.000669,0.902551,1.438984,0.272283,-0.311066, + 0.144715,-0.16618,0.975419,1.343629,0.308278,-0.28066, + 0.430582,0.000669,0.902551,1.438984,0.272283,-0.311066, + 0.103365,-0.143519,0.984235,1.377249,0.226965,-0.29757, + 0.68395,0.1429,0.715397,1.589301,-0.085107,-0.375951, + 0.294772,0.058287,0.953788,1.536493,-0.093537,-0.342119, + 0.376201,0.032359,0.925973,1.507354,0.034552,-0.337381, + 0.68395,0.1429,0.715397,1.589301,-0.085107,-0.375951, + 0.376201,0.032359,0.925973,1.507354,0.034552,-0.337381, + 0.721766,0.139046,0.678027,1.558275,0.051411,-0.372228, + 0.294772,0.058287,0.953788,1.536493,-0.093537,-0.342119, + -0.032665,-0.015822,0.999341,1.473124,-0.103652,-0.330842, + 0.024003,-0.070986,0.997189,1.446248,0.01432,-0.325766, + 0.024003,-0.070986,0.997189,1.446248,0.01432,-0.325766, + 0.376201,0.032359,0.925973,1.507354,0.034552,-0.337381, + 0.294772,0.058287,0.953788,1.536493,-0.093537,-0.342119, + 0.061121,-0.115002,0.991483,1.412872,0.126752,-0.31364, + 0.403594,0.012135,0.914858,1.47359,0.159325,-0.326064, + 0.376201,0.032359,0.925973,1.507354,0.034552,-0.337381, + 0.061121,-0.115002,0.991483,1.412872,0.126752,-0.31364, + 0.376201,0.032359,0.925973,1.507354,0.034552,-0.337381, + 0.024003,-0.070986,0.997189,1.446248,0.01432,-0.325766, + 0.403594,0.012135,0.914858,1.47359,0.159325,-0.326064, + 0.734405,0.137212,0.664697,1.524188,0.186469,-0.363336, + 0.721766,0.139046,0.678027,1.558275,0.051411,-0.372228, + 0.721766,0.139046,0.678027,1.558275,0.051411,-0.372228, + 0.376201,0.032359,0.925973,1.507354,0.034552,-0.337381, + 0.403594,0.012135,0.914858,1.47359,0.159325,-0.326064, + -0.355153,-0.061801,0.932763,1.409755,-0.113768,-0.342119, + -0.714149,-0.110296,0.691249,1.356947,-0.122198,-0.375951, + -0.686016,-0.251158,0.682863,1.33422,-0.022771,-0.372228, + -0.686016,-0.251158,0.682863,1.33422,-0.022771,-0.372228, + -0.331282,-0.167257,0.928589,1.385142,-0.005911,-0.337381, + -0.355153,-0.061801,0.932763,1.409755,-0.113768,-0.342119, + -0.637408,-0.358226,0.682191,1.301556,0.067036,-0.363336, + -0.287334,-0.241218,0.926959,1.352154,0.09418,-0.326064, + -0.331282,-0.167257,0.928589,1.385142,-0.005911,-0.337381, + -0.637408,-0.358226,0.682191,1.301556,0.067036,-0.363336, + -0.331282,-0.167257,0.928589,1.385142,-0.005911,-0.337381, + -0.686016,-0.251158,0.682863,1.33422,-0.022771,-0.372228, + -0.287334,-0.241218,0.926959,1.352154,0.09418,-0.326064, + 0.061121,-0.115002,0.991483,1.412872,0.126752,-0.31364, + 0.024003,-0.070986,0.997189,1.446248,0.01432,-0.325766, + 0.024003,-0.070986,0.997189,1.446248,0.01432,-0.325766, + -0.331282,-0.167257,0.928589,1.385142,-0.005911,-0.337381, + -0.287334,-0.241218,0.926959,1.352154,0.09418,-0.326064, + -0.032665,-0.015822,0.999341,1.473124,-0.103652,-0.330842, + -0.355153,-0.061801,0.932763,1.409755,-0.113768,-0.342119, + -0.331282,-0.167257,0.928589,1.385142,-0.005911,-0.337381, + -0.032665,-0.015822,0.999341,1.473124,-0.103652,-0.330842, + -0.331282,-0.167257,0.928589,1.385142,-0.005911,-0.337381, + 0.024003,-0.070986,0.997189,1.446248,0.01432,-0.325766, + -0.575759,-0.440808,-0.688615,1.264067,0.143881,-0.648448, + -0.503423,-0.512227,-0.695836,1.226863,0.204423,-0.660849, + -0.715537,-0.612433,-0.336055,1.195018,0.176099,-0.587736, + -0.715537,-0.612433,-0.336055,1.195018,0.176099,-0.587736, + -0.788495,-0.519776,-0.328798,1.2332,0.121222,-0.580972, + -0.575759,-0.440808,-0.688615,1.264067,0.143881,-0.648448, + -0.784292,-0.620391,0,1.184403,0.166658,-0.5, + -0.853449,-0.521176,0,1.222911,0.113669,-0.5, + -0.788495,-0.519776,-0.328798,1.2332,0.121222,-0.580972, + -0.784292,-0.620391,0,1.184403,0.166658,-0.5, + -0.788495,-0.519776,-0.328798,1.2332,0.121222,-0.580972, + -0.715537,-0.612433,-0.336055,1.195018,0.176099,-0.587736, + -0.853449,-0.521176,0,1.222911,0.113669,-0.5, + -0.912287,-0.409552,0,1.261078,0.045321,-0.5, + -0.849326,-0.416862,-0.323838,1.271198,0.05075,-0.574544, + -0.849326,-0.416862,-0.323838,1.271198,0.05075,-0.574544, + -0.788495,-0.519776,-0.328798,1.2332,0.121222,-0.580972, + -0.853449,-0.521176,0,1.222911,0.113669,-0.5, + -0.637408,-0.358226,-0.682191,1.301556,0.067036,-0.636664, + -0.575759,-0.440808,-0.688615,1.264067,0.143881,-0.648448, + -0.788495,-0.519776,-0.328798,1.2332,0.121222,-0.580972, + -0.637408,-0.358226,-0.682191,1.301556,0.067036,-0.636664, + -0.788495,-0.519776,-0.328798,1.2332,0.121222,-0.580972, + -0.849326,-0.416862,-0.323838,1.271198,0.05075,-0.574544, + -0.715537,-0.612433,0.336055,1.195018,0.176099,-0.412264, + -0.503423,-0.512227,0.695837,1.226863,0.204423,-0.339151, + -0.575759,-0.440808,0.688615,1.264067,0.143881,-0.351552, + -0.575759,-0.440808,0.688615,1.264067,0.143881,-0.351552, + -0.788495,-0.519776,0.328798,1.2332,0.121222,-0.419028, + -0.715537,-0.612433,0.336055,1.195018,0.176099,-0.412264, + -0.637408,-0.358226,0.682191,1.301556,0.067036,-0.363336, + -0.849326,-0.416862,0.323838,1.271198,0.05075,-0.425456, + -0.788495,-0.519776,0.328798,1.2332,0.121222,-0.419028, + -0.637408,-0.358226,0.682191,1.301556,0.067036,-0.363336, + -0.788495,-0.519776,0.328798,1.2332,0.121222,-0.419028, + -0.575759,-0.440808,0.688615,1.264067,0.143881,-0.351552, + -0.849326,-0.416862,0.323838,1.271198,0.05075,-0.425456, + -0.912287,-0.409552,0,1.261078,0.045321,-0.5, + -0.853449,-0.521176,0,1.222911,0.113669,-0.5, + -0.853449,-0.521176,0,1.222911,0.113669,-0.5, + -0.788495,-0.519776,0.328798,1.2332,0.121222,-0.419028, + -0.849326,-0.416862,0.323838,1.271198,0.05075,-0.425456, + -0.784292,-0.620391,0,1.184403,0.166658,-0.5, + -0.715537,-0.612433,0.336055,1.195018,0.176099,-0.412264, + -0.788495,-0.519776,0.328798,1.2332,0.121222,-0.419028, + -0.784292,-0.620391,0,1.184403,0.166658,-0.5, + -0.788495,-0.519776,0.328798,1.2332,0.121222,-0.419028, + -0.853449,-0.521176,0,1.222911,0.113669,-0.5, + -0.714149,-0.110296,0.691249,1.356947,-0.122198,-0.375951, + -0.933801,-0.132296,0.332437,1.325262,-0.127256,-0.432337, + -0.899929,-0.290508,0.325166,1.303667,-0.032887,-0.430306, + -0.714149,-0.110296,0.691249,1.356947,-0.122198,-0.375951, + -0.899929,-0.290508,0.325166,1.303667,-0.032887,-0.430306, + -0.686016,-0.251158,0.682863,1.33422,-0.022771,-0.372228, + -0.933801,-0.132296,0.332437,1.325262,-0.127256,-0.432337, + -0.994338,-0.106266,0,1.314701,-0.128942,-0.5, + -0.961859,-0.273547,0,1.293483,-0.036258,-0.5, + -0.961859,-0.273547,0,1.293483,-0.036258,-0.5, + -0.899929,-0.290508,0.325166,1.303667,-0.032887,-0.430306, + -0.933801,-0.132296,0.332437,1.325262,-0.127256,-0.432337, + -0.912287,-0.409552,0,1.261078,0.045321,-0.5, + -0.849326,-0.416862,0.323838,1.271198,0.05075,-0.425456, + -0.899929,-0.290508,0.325166,1.303667,-0.032887,-0.430306, + -0.912287,-0.409552,0,1.261078,0.045321,-0.5, + -0.899929,-0.290508,0.325166,1.303667,-0.032887,-0.430306, + -0.961859,-0.273547,0,1.293483,-0.036258,-0.5, + -0.849326,-0.416862,0.323838,1.271198,0.05075,-0.425456, + -0.637408,-0.358226,0.682191,1.301556,0.067036,-0.363336, + -0.686016,-0.251158,0.682863,1.33422,-0.022771,-0.372228, + -0.686016,-0.251158,0.682863,1.33422,-0.022771,-0.372228, + -0.899929,-0.290508,0.325166,1.303667,-0.032887,-0.430306, + -0.849326,-0.416862,0.323838,1.271198,0.05075,-0.425456, + -0.71415,-0.110296,-0.691249,1.356947,-0.122198,-0.624049, + -0.686016,-0.251158,-0.682863,1.33422,-0.022771,-0.627772, + -0.899929,-0.290508,-0.325166,1.303667,-0.032887,-0.569694, + -0.71415,-0.110296,-0.691249,1.356947,-0.122198,-0.624049, + -0.899929,-0.290508,-0.325166,1.303667,-0.032887,-0.569694, + -0.933801,-0.132296,-0.332437,1.325262,-0.127256,-0.567663, + -0.686016,-0.251158,-0.682863,1.33422,-0.022771,-0.627772, + -0.637408,-0.358226,-0.682191,1.301556,0.067036,-0.636664, + -0.849326,-0.416862,-0.323838,1.271198,0.05075,-0.574544, + -0.849326,-0.416862,-0.323838,1.271198,0.05075,-0.574544, + -0.899929,-0.290508,-0.325166,1.303667,-0.032887,-0.569694, + -0.686016,-0.251158,-0.682863,1.33422,-0.022771,-0.627772, + -0.912287,-0.409552,0,1.261078,0.045321,-0.5, + -0.961859,-0.273547,0,1.293483,-0.036258,-0.5, + -0.899929,-0.290508,-0.325166,1.303667,-0.032887,-0.569694, + -0.912287,-0.409552,0,1.261078,0.045321,-0.5, + -0.899929,-0.290508,-0.325166,1.303667,-0.032887,-0.569694, + -0.849326,-0.416862,-0.323838,1.271198,0.05075,-0.574544, + -0.961859,-0.273547,0,1.293483,-0.036258,-0.5, + -0.994338,-0.106266,0,1.314701,-0.128942,-0.5, + -0.933801,-0.132296,-0.332437,1.325262,-0.127256,-0.567663, + -0.933801,-0.132296,-0.332437,1.325262,-0.127256,-0.567663, + -0.899929,-0.290508,-0.325166,1.303667,-0.032887,-0.569694, + -0.961859,-0.273547,0,1.293483,-0.036258,-0.5, + -0.693871,0.192788,-0.693812,1.351552,-0.429344,-0.648448, + -0.686951,0.237061,-0.686951,1.339151,-0.510672,-0.660849, + -0.336776,0.225597,-0.91416,1.412264,-0.510672,-0.704717, + -0.336776,0.225597,-0.91416,1.412264,-0.510672,-0.704717, + -0.340683,0.181594,-0.922474,1.419028,-0.429344,-0.688934, + -0.693871,0.192788,-0.693812,1.351552,-0.429344,-0.648448, + 0,0.216323,-0.976322,1.5,-0.510672,-0.71934, + -0.000776,0.175432,-0.984491,1.5,-0.429344,-0.70243, + -0.340683,0.181594,-0.922474,1.419028,-0.429344,-0.688934, + 0,0.216323,-0.976322,1.5,-0.510672,-0.71934, + -0.340683,0.181594,-0.922474,1.419028,-0.429344,-0.688934, + -0.336776,0.225597,-0.91416,1.412264,-0.510672,-0.704717, + -0.000776,0.175432,-0.984491,1.5,-0.429344,-0.70243, + -0.003469,0.126882,-0.991912,1.497312,-0.330832,-0.68636, + -0.347569,0.124206,-0.929392,1.423198,-0.331844,-0.673936, + -0.347569,0.124206,-0.929392,1.423198,-0.331844,-0.673936, + -0.340683,0.181594,-0.922474,1.419028,-0.429344,-0.688934, + -0.000776,0.175432,-0.984491,1.5,-0.429344,-0.70243, + -0.702754,0.131399,-0.699193,1.361436,-0.332687,-0.636664, + -0.693871,0.192788,-0.693812,1.351552,-0.429344,-0.648448, + -0.340683,0.181594,-0.922474,1.419028,-0.429344,-0.688934, + -0.702754,0.131399,-0.699193,1.361436,-0.332687,-0.636664, + -0.340683,0.181594,-0.922474,1.419028,-0.429344,-0.688934, + -0.347569,0.124206,-0.929392,1.423198,-0.331844,-0.673936, + 0.336776,0.225597,-0.91416,1.587736,-0.510672,-0.704717, + 0.686951,0.237061,-0.686951,1.660849,-0.510672,-0.660849, + 0.692333,0.202928,-0.692456,1.648448,-0.429344,-0.648448, + 0.692333,0.202928,-0.692456,1.648448,-0.429344,-0.648448, + 0.339336,0.190036,-0.92127,1.580972,-0.429344,-0.688934, + 0.336776,0.225597,-0.91416,1.587736,-0.510672,-0.704717, + 0.695529,0.18142,-0.695217,1.633189,-0.328978,-0.636664, + 0.341595,0.155693,-0.926862,1.571427,-0.329821,-0.673936, + 0.339336,0.190036,-0.92127,1.580972,-0.429344,-0.688934, + 0.695529,0.18142,-0.695217,1.633189,-0.328978,-0.636664, + 0.339336,0.190036,-0.92127,1.580972,-0.429344,-0.688934, + 0.692333,0.202928,-0.692456,1.648448,-0.429344,-0.648448, + 0.341595,0.155693,-0.926862,1.571427,-0.329821,-0.673936, + -0.003469,0.126882,-0.991912,1.497312,-0.330832,-0.68636, + -0.000776,0.175432,-0.984491,1.5,-0.429344,-0.70243, + -0.000776,0.175432,-0.984491,1.5,-0.429344,-0.70243, + 0.339336,0.190036,-0.92127,1.580972,-0.429344,-0.688934, + 0.341595,0.155693,-0.926862,1.571427,-0.329821,-0.673936, + 0,0.216323,-0.976322,1.5,-0.510672,-0.71934, + 0.336776,0.225597,-0.91416,1.587736,-0.510672,-0.704717, + 0.339336,0.190036,-0.92127,1.580972,-0.429344,-0.688934, + 0,0.216323,-0.976322,1.5,-0.510672,-0.71934, + 0.339336,0.190036,-0.92127,1.580972,-0.429344,-0.688934, + -0.000776,0.175432,-0.984491,1.5,-0.429344,-0.70243, + 0.68395,0.1429,-0.715397,1.589301,-0.085107,-0.624049, + 0.294772,0.058288,-0.953788,1.536493,-0.093537,-0.657881, + 0.345572,0.118142,-0.930926,1.557226,-0.21644,-0.662619, + 0.68395,0.1429,-0.715397,1.589301,-0.085107,-0.624049, + 0.345572,0.118142,-0.930926,1.557226,-0.21644,-0.662619, + 0.699329,0.164944,-0.695509,1.613873,-0.213068,-0.627772, + 0.294772,0.058288,-0.953788,1.536493,-0.093537,-0.657881, + -0.032665,-0.015822,-0.999341,1.473124,-0.103652,-0.669158, + -0.00536,0.065692,-0.997826,1.489249,-0.220486,-0.674234, + -0.00536,0.065692,-0.997826,1.489249,-0.220486,-0.674234, + 0.345572,0.118142,-0.930926,1.557226,-0.21644,-0.662619, + 0.294772,0.058288,-0.953788,1.536493,-0.093537,-0.657881, + -0.003469,0.126882,-0.991912,1.497312,-0.330832,-0.68636, + 0.341595,0.155693,-0.926862,1.571427,-0.329821,-0.673936, + 0.345572,0.118142,-0.930926,1.557226,-0.21644,-0.662619, + -0.003469,0.126882,-0.991912,1.497312,-0.330832,-0.68636, + 0.345572,0.118142,-0.930926,1.557226,-0.21644,-0.662619, + -0.00536,0.065692,-0.997826,1.489249,-0.220486,-0.674234, + 0.341595,0.155693,-0.926862,1.571427,-0.329821,-0.673936, + 0.695529,0.18142,-0.695217,1.633189,-0.328978,-0.636664, + 0.699329,0.164944,-0.695509,1.613873,-0.213068,-0.627772, + 0.699329,0.164944,-0.695509,1.613873,-0.213068,-0.627772, + 0.345572,0.118142,-0.930926,1.557226,-0.21644,-0.662619, + 0.341595,0.155693,-0.926862,1.571427,-0.329821,-0.673936, + -0.71415,-0.110296,-0.691249,1.356947,-0.122198,-0.624049, + -0.739331,0.03305,-0.672531,1.364627,-0.227904,-0.627772, + -0.356256,0.046266,-0.933242,1.421273,-0.224532,-0.662619, + -0.71415,-0.110296,-0.691249,1.356947,-0.122198,-0.624049, + -0.356256,0.046266,-0.933242,1.421273,-0.224532,-0.662619, + -0.355153,-0.061801,-0.932763,1.409755,-0.113768,-0.657881, + -0.739331,0.03305,-0.672531,1.364627,-0.227904,-0.627772, + -0.702754,0.131399,-0.699193,1.361436,-0.332687,-0.636664, + -0.347569,0.124206,-0.929392,1.423198,-0.331844,-0.673936, + -0.347569,0.124206,-0.929392,1.423198,-0.331844,-0.673936, + -0.356256,0.046266,-0.933242,1.421273,-0.224532,-0.662619, + -0.739331,0.03305,-0.672531,1.364627,-0.227904,-0.627772, + -0.003469,0.126882,-0.991912,1.497312,-0.330832,-0.68636, + -0.00536,0.065692,-0.997826,1.489249,-0.220486,-0.674234, + -0.356256,0.046266,-0.933242,1.421273,-0.224532,-0.662619, + -0.003469,0.126882,-0.991912,1.497312,-0.330832,-0.68636, + -0.356256,0.046266,-0.933242,1.421273,-0.224532,-0.662619, + -0.347569,0.124206,-0.929392,1.423198,-0.331844,-0.673936, + -0.00536,0.065692,-0.997826,1.489249,-0.220486,-0.674234, + -0.032665,-0.015822,-0.999341,1.473124,-0.103652,-0.669158, + -0.355153,-0.061801,-0.932763,1.409755,-0.113768,-0.657881, + -0.355153,-0.061801,-0.932763,1.409755,-0.113768,-0.657881, + -0.356256,0.046266,-0.933242,1.421273,-0.224532,-0.662619, + -0.00536,0.065692,-0.997826,1.489249,-0.220486,-0.674234, + -0.914159,0.225597,-0.336777,1.295283,-0.510672,-0.587736, + -0.686951,0.237061,-0.686951,1.339151,-0.510672,-0.660849, + -0.693871,0.192788,-0.693812,1.351552,-0.429344,-0.648448, + -0.693871,0.192788,-0.693812,1.351552,-0.429344,-0.648448, + -0.923459,0.178536,-0.339629,1.311066,-0.429344,-0.580972, + -0.914159,0.225597,-0.336777,1.295283,-0.510672,-0.587736, + -0.702754,0.131399,-0.699193,1.361436,-0.332687,-0.636664, + -0.933761,0.111444,-0.340103,1.324378,-0.333193,-0.574544, + -0.923459,0.178536,-0.339629,1.311066,-0.429344,-0.580972, + -0.702754,0.131399,-0.699193,1.361436,-0.332687,-0.636664, + -0.923459,0.178536,-0.339629,1.311066,-0.429344,-0.580972, + -0.693871,0.192788,-0.693812,1.351552,-0.429344,-0.648448, + -0.933761,0.111444,-0.340103,1.324378,-0.333193,-0.574544, + -0.995379,0.096022,0,1.312026,-0.333361,-0.5, + -0.985978,0.166878,0,1.29757,-0.429344,-0.5, + -0.985978,0.166878,0,1.29757,-0.429344,-0.5, + -0.923459,0.178536,-0.339629,1.311066,-0.429344,-0.580972, + -0.933761,0.111444,-0.340103,1.324378,-0.333193,-0.574544, + -0.976322,0.216322,0,1.28066,-0.510672,-0.5, + -0.914159,0.225597,-0.336777,1.295283,-0.510672,-0.587736, + -0.923459,0.178536,-0.339629,1.311066,-0.429344,-0.580972, + -0.976322,0.216322,0,1.28066,-0.510672,-0.5, + -0.923459,0.178536,-0.339629,1.311066,-0.429344,-0.580972, + -0.985978,0.166878,0,1.29757,-0.429344,-0.5, + -0.739331,0.03305,-0.672531,1.364627,-0.227904,-0.627772, + -0.71415,-0.110296,-0.691249,1.356947,-0.122198,-0.624049, + -0.933801,-0.132296,-0.332437,1.325262,-0.127256,-0.567663, + -0.933801,-0.132296,-0.332437,1.325262,-0.127256,-0.567663, + -0.960211,0.01432,-0.27891,1.330638,-0.229927,-0.569694, + -0.739331,0.03305,-0.672531,1.364627,-0.227904,-0.627772, + -0.994338,-0.106266,0,1.314701,-0.128942,-0.5, + -0.999919,0.012734,0,1.319309,-0.230602,-0.5, + -0.960211,0.01432,-0.27891,1.330638,-0.229927,-0.569694, + -0.994338,-0.106266,0,1.314701,-0.128942,-0.5, + -0.960211,0.01432,-0.27891,1.330638,-0.229927,-0.569694, + -0.933801,-0.132296,-0.332437,1.325262,-0.127256,-0.567663, + -0.995379,0.096022,0,1.312026,-0.333361,-0.5, + -0.933761,0.111444,-0.340103,1.324378,-0.333193,-0.574544, + -0.960211,0.01432,-0.27891,1.330638,-0.229927,-0.569694, + -0.995379,0.096022,0,1.312026,-0.333361,-0.5, + -0.960211,0.01432,-0.27891,1.330638,-0.229927,-0.569694, + -0.999919,0.012734,0,1.319309,-0.230602,-0.5, + -0.933761,0.111444,-0.340103,1.324378,-0.333193,-0.574544, + -0.702754,0.131399,-0.699193,1.361436,-0.332687,-0.636664, + -0.739331,0.03305,-0.672531,1.364627,-0.227904,-0.627772, + -0.739331,0.03305,-0.672531,1.364627,-0.227904,-0.627772, + -0.960211,0.01432,-0.27891,1.330638,-0.229927,-0.569694, + -0.933761,0.111444,-0.340103,1.324378,-0.333193,-0.574544, + -0.933801,-0.132296,0.332437,1.325262,-0.127256,-0.432337, + -0.714149,-0.110296,0.691249,1.356947,-0.122198,-0.375951, + -0.739331,0.03305,0.672531,1.364627,-0.227904,-0.372228, + -0.739331,0.03305,0.672531,1.364627,-0.227904,-0.372228, + -0.960211,0.01432,0.27891,1.330638,-0.229927,-0.430306, + -0.933801,-0.132296,0.332437,1.325262,-0.127256,-0.432337, + -0.739331,0.03305,0.672531,1.364627,-0.227904,-0.372228, + -0.702754,0.131399,0.699193,1.361436,-0.332687,-0.363336, + -0.933761,0.111444,0.340103,1.324378,-0.333193,-0.425456, + -0.933761,0.111444,0.340103,1.324378,-0.333193,-0.425456, + -0.960211,0.01432,0.27891,1.330638,-0.229927,-0.430306, + -0.739331,0.03305,0.672531,1.364627,-0.227904,-0.372228, + -0.995379,0.096022,0,1.312026,-0.333361,-0.5, + -0.999919,0.012734,0,1.319309,-0.230602,-0.5, + -0.960211,0.01432,0.27891,1.330638,-0.229927,-0.430306, + -0.995379,0.096022,0,1.312026,-0.333361,-0.5, + -0.960211,0.01432,0.27891,1.330638,-0.229927,-0.430306, + -0.933761,0.111444,0.340103,1.324378,-0.333193,-0.425456, + -0.994338,-0.106266,0,1.314701,-0.128942,-0.5, + -0.933801,-0.132296,0.332437,1.325262,-0.127256,-0.432337, + -0.960211,0.01432,0.27891,1.330638,-0.229927,-0.430306, + -0.994338,-0.106266,0,1.314701,-0.128942,-0.5, + -0.960211,0.01432,0.27891,1.330638,-0.229927,-0.430306, + -0.999919,0.012734,0,1.319309,-0.230602,-0.5, + -0.693871,0.192788,0.693812,1.351552,-0.429344,-0.351552, + -0.68695,0.237061,0.686951,1.339151,-0.510672,-0.339151, + -0.914159,0.225597,0.336777,1.295283,-0.510672,-0.412264, + -0.914159,0.225597,0.336777,1.295283,-0.510672,-0.412264, + -0.923459,0.178536,0.339629,1.311066,-0.429344,-0.419028, + -0.693871,0.192788,0.693812,1.351552,-0.429344,-0.351552, + -0.976322,0.216322,0,1.28066,-0.510672,-0.5, + -0.985978,0.166878,0,1.29757,-0.429344,-0.5, + -0.923459,0.178536,0.339629,1.311066,-0.429344,-0.419028, + -0.976322,0.216322,0,1.28066,-0.510672,-0.5, + -0.923459,0.178536,0.339629,1.311066,-0.429344,-0.419028, + -0.914159,0.225597,0.336777,1.295283,-0.510672,-0.412264, + -0.985978,0.166878,0,1.29757,-0.429344,-0.5, + -0.995379,0.096022,0,1.312026,-0.333361,-0.5, + -0.933761,0.111444,0.340103,1.324378,-0.333193,-0.425456, + -0.933761,0.111444,0.340103,1.324378,-0.333193,-0.425456, + -0.923459,0.178536,0.339629,1.311066,-0.429344,-0.419028, + -0.985978,0.166878,0,1.29757,-0.429344,-0.5, + -0.702754,0.131399,0.699193,1.361436,-0.332687,-0.363336, + -0.693871,0.192788,0.693812,1.351552,-0.429344,-0.351552, + -0.923459,0.178536,0.339629,1.311066,-0.429344,-0.419028, + -0.702754,0.131399,0.699193,1.361436,-0.332687,-0.363336, + -0.923459,0.178536,0.339629,1.311066,-0.429344,-0.419028, + -0.933761,0.111444,0.340103,1.324378,-0.333193,-0.425456, + -0.336776,0.225598,0.914159,1.412264,-0.510672,-0.295283, + -0.68695,0.237061,0.686951,1.339151,-0.510672,-0.339151, + -0.693871,0.192788,0.693812,1.351552,-0.429344,-0.351552, + -0.693871,0.192788,0.693812,1.351552,-0.429344,-0.351552, + -0.340683,0.181594,0.922474,1.419028,-0.429344,-0.311066, + -0.336776,0.225598,0.914159,1.412264,-0.510672,-0.295283, + -0.702754,0.131399,0.699193,1.361436,-0.332687,-0.363336, + -0.347569,0.124206,0.929392,1.423198,-0.331844,-0.326064, + -0.340683,0.181594,0.922474,1.419028,-0.429344,-0.311066, + -0.702754,0.131399,0.699193,1.361436,-0.332687,-0.363336, + -0.340683,0.181594,0.922474,1.419028,-0.429344,-0.311066, + -0.693871,0.192788,0.693812,1.351552,-0.429344,-0.351552, + -0.347569,0.124206,0.929392,1.423198,-0.331844,-0.326064, + -0.003469,0.126882,0.991912,1.497312,-0.330832,-0.31364, + -0.000776,0.175432,0.984491,1.5,-0.429344,-0.29757, + -0.000776,0.175432,0.984491,1.5,-0.429344,-0.29757, + -0.340683,0.181594,0.922474,1.419028,-0.429344,-0.311066, + -0.347569,0.124206,0.929392,1.423198,-0.331844,-0.326064, + 0,0.216323,0.976322,1.5,-0.510672,-0.28066, + -0.336776,0.225598,0.914159,1.412264,-0.510672,-0.295283, + -0.340683,0.181594,0.922474,1.419028,-0.429344,-0.311066, + 0,0.216323,0.976322,1.5,-0.510672,-0.28066, + -0.340683,0.181594,0.922474,1.419028,-0.429344,-0.311066, + -0.000776,0.175432,0.984491,1.5,-0.429344,-0.29757, + -0.714149,-0.110296,0.691249,1.356947,-0.122198,-0.375951, + -0.355153,-0.061801,0.932763,1.409755,-0.113768,-0.342119, + -0.356256,0.046266,0.933242,1.421273,-0.224532,-0.337381, + -0.714149,-0.110296,0.691249,1.356947,-0.122198,-0.375951, + -0.356256,0.046266,0.933242,1.421273,-0.224532,-0.337381, + -0.739331,0.03305,0.672531,1.364627,-0.227904,-0.372228, + -0.355153,-0.061801,0.932763,1.409755,-0.113768,-0.342119, + -0.032665,-0.015822,0.999341,1.473124,-0.103652,-0.330842, + -0.005359,0.065692,0.997826,1.489249,-0.220486,-0.325766, + -0.005359,0.065692,0.997826,1.489249,-0.220486,-0.325766, + -0.356256,0.046266,0.933242,1.421273,-0.224532,-0.337381, + -0.355153,-0.061801,0.932763,1.409755,-0.113768,-0.342119, + -0.003469,0.126882,0.991912,1.497312,-0.330832,-0.31364, + -0.347569,0.124206,0.929392,1.423198,-0.331844,-0.326064, + -0.356256,0.046266,0.933242,1.421273,-0.224532,-0.337381, + -0.003469,0.126882,0.991912,1.497312,-0.330832,-0.31364, + -0.356256,0.046266,0.933242,1.421273,-0.224532,-0.337381, + -0.005359,0.065692,0.997826,1.489249,-0.220486,-0.325766, + -0.347569,0.124206,0.929392,1.423198,-0.331844,-0.326064, + -0.702754,0.131399,0.699193,1.361436,-0.332687,-0.363336, + -0.739331,0.03305,0.672531,1.364627,-0.227904,-0.372228, + -0.739331,0.03305,0.672531,1.364627,-0.227904,-0.372228, + -0.356256,0.046266,0.933242,1.421273,-0.224532,-0.337381, + -0.347569,0.124206,0.929392,1.423198,-0.331844,-0.326064, + 0.68395,0.1429,0.715397,1.589301,-0.085107,-0.375951, + 0.699329,0.164944,0.695509,1.613873,-0.213068,-0.372228, + 0.345572,0.118142,0.930926,1.557226,-0.21644,-0.337381, + 0.68395,0.1429,0.715397,1.589301,-0.085107,-0.375951, + 0.345572,0.118142,0.930926,1.557226,-0.21644,-0.337381, + 0.294772,0.058287,0.953788,1.536493,-0.093537,-0.342119, + 0.699329,0.164944,0.695509,1.613873,-0.213068,-0.372228, + 0.695529,0.18142,0.695217,1.633189,-0.328978,-0.363336, + 0.341595,0.155693,0.926862,1.571427,-0.329821,-0.326064, + 0.341595,0.155693,0.926862,1.571427,-0.329821,-0.326064, + 0.345572,0.118142,0.930926,1.557226,-0.21644,-0.337381, + 0.699329,0.164944,0.695509,1.613873,-0.213068,-0.372228, + -0.003469,0.126882,0.991912,1.497312,-0.330832,-0.31364, + -0.005359,0.065692,0.997826,1.489249,-0.220486,-0.325766, + 0.345572,0.118142,0.930926,1.557226,-0.21644,-0.337381, + -0.003469,0.126882,0.991912,1.497312,-0.330832,-0.31364, + 0.345572,0.118142,0.930926,1.557226,-0.21644,-0.337381, + 0.341595,0.155693,0.926862,1.571427,-0.329821,-0.326064, + -0.005359,0.065692,0.997826,1.489249,-0.220486,-0.325766, + -0.032665,-0.015822,0.999341,1.473124,-0.103652,-0.330842, + 0.294772,0.058287,0.953788,1.536493,-0.093537,-0.342119, + 0.294772,0.058287,0.953788,1.536493,-0.093537,-0.342119, + 0.345572,0.118142,0.930926,1.557226,-0.21644,-0.337381, + -0.005359,0.065692,0.997826,1.489249,-0.220486,-0.325766, + 0.692333,0.202929,0.692456,1.648448,-0.429344,-0.351552, + 0.68695,0.237061,0.686951,1.660849,-0.510672,-0.339151, + 0.336776,0.225598,0.914159,1.587736,-0.510672,-0.295283, + 0.336776,0.225598,0.914159,1.587736,-0.510672,-0.295283, + 0.339336,0.190036,0.921269,1.580972,-0.429344,-0.311066, + 0.692333,0.202929,0.692456,1.648448,-0.429344,-0.351552, + 0,0.216323,0.976322,1.5,-0.510672,-0.28066, + -0.000776,0.175432,0.984491,1.5,-0.429344,-0.29757, + 0.339336,0.190036,0.921269,1.580972,-0.429344,-0.311066, + 0,0.216323,0.976322,1.5,-0.510672,-0.28066, + 0.339336,0.190036,0.921269,1.580972,-0.429344,-0.311066, + 0.336776,0.225598,0.914159,1.587736,-0.510672,-0.295283, + -0.000776,0.175432,0.984491,1.5,-0.429344,-0.29757, + -0.003469,0.126882,0.991912,1.497312,-0.330832,-0.31364, + 0.341595,0.155693,0.926862,1.571427,-0.329821,-0.326064, + 0.341595,0.155693,0.926862,1.571427,-0.329821,-0.326064, + 0.339336,0.190036,0.921269,1.580972,-0.429344,-0.311066, + -0.000776,0.175432,0.984491,1.5,-0.429344,-0.29757, + 0.695529,0.18142,0.695217,1.633189,-0.328978,-0.363336, + 0.692333,0.202929,0.692456,1.648448,-0.429344,-0.351552, + 0.339336,0.190036,0.921269,1.580972,-0.429344,-0.311066, + 0.695529,0.18142,0.695217,1.633189,-0.328978,-0.363336, + 0.339336,0.190036,0.921269,1.580972,-0.429344,-0.311066, + 0.341595,0.155693,0.926862,1.571427,-0.329821,-0.326064, + 0.914159,0.225597,0.336777,1.704717,-0.510672,-0.412264, + 0.68695,0.237061,0.686951,1.660849,-0.510672,-0.339151, + 0.692333,0.202929,0.692456,1.648448,-0.429344,-0.351552, + 0.692333,0.202929,0.692456,1.648448,-0.429344,-0.351552, + 0.919751,0.19868,0.338503,1.688934,-0.429344,-0.419028, + 0.914159,0.225597,0.336777,1.704717,-0.510672,-0.412264, + 0.695529,0.18142,0.695217,1.633189,-0.328978,-0.363336, + 0.921783,0.189963,0.337979,1.670246,-0.328472,-0.425456, + 0.919751,0.19868,0.338503,1.688934,-0.429344,-0.419028, + 0.695529,0.18142,0.695217,1.633189,-0.328978,-0.363336, + 0.919751,0.19868,0.338503,1.688934,-0.429344,-0.419028, + 0.692333,0.202929,0.692456,1.648448,-0.429344,-0.351552, + 0.921783,0.189963,0.337979,1.670246,-0.328472,-0.425456, + 0.981065,0.19368,0,1.682599,-0.328303,-0.5, + 0.980577,0.196136,0,1.70243,-0.429344,-0.5, + 0.980577,0.196136,0,1.70243,-0.429344,-0.5, + 0.919751,0.19868,0.338503,1.688934,-0.429344,-0.419028, + 0.921783,0.189963,0.337979,1.670246,-0.328472,-0.425456, + 0.976322,0.216322,0,1.71934,-0.510672,-0.5, + 0.914159,0.225597,0.336777,1.704717,-0.510672,-0.412264, + 0.919751,0.19868,0.338503,1.688934,-0.429344,-0.419028, + 0.976322,0.216322,0,1.71934,-0.510672,-0.5, + 0.919751,0.19868,0.338503,1.688934,-0.429344,-0.419028, + 0.980577,0.196136,0,1.70243,-0.429344,-0.5, + 0.68395,0.1429,0.715397,1.589301,-0.085107,-0.375951, + 0.923419,0.19798,0.328787,1.620986,-0.080049,-0.432337, + 0.922767,0.190694,0.334869,1.647861,-0.211045,-0.430306, + 0.68395,0.1429,0.715397,1.589301,-0.085107,-0.375951, + 0.922767,0.190694,0.334869,1.647861,-0.211045,-0.430306, + 0.699329,0.164944,0.695509,1.613873,-0.213068,-0.372228, + 0.923419,0.19798,0.328787,1.620986,-0.080049,-0.432337, + 0.976556,0.215262,0,1.631547,-0.078363,-0.5, + 0.979589,0.201011,0,1.65919,-0.21037,-0.5, + 0.979589,0.201011,0,1.65919,-0.21037,-0.5, + 0.922767,0.190694,0.334869,1.647861,-0.211045,-0.430306, + 0.923419,0.19798,0.328787,1.620986,-0.080049,-0.432337, + 0.981065,0.19368,0,1.682599,-0.328303,-0.5, + 0.921783,0.189963,0.337979,1.670246,-0.328472,-0.425456, + 0.922767,0.190694,0.334869,1.647861,-0.211045,-0.430306, + 0.981065,0.19368,0,1.682599,-0.328303,-0.5, + 0.922767,0.190694,0.334869,1.647861,-0.211045,-0.430306, + 0.979589,0.201011,0,1.65919,-0.21037,-0.5, + 0.921783,0.189963,0.337979,1.670246,-0.328472,-0.425456, + 0.695529,0.18142,0.695217,1.633189,-0.328978,-0.363336, + 0.699329,0.164944,0.695509,1.613873,-0.213068,-0.372228, + 0.699329,0.164944,0.695509,1.613873,-0.213068,-0.372228, + 0.922767,0.190694,0.334869,1.647861,-0.211045,-0.430306, + 0.921783,0.189963,0.337979,1.670246,-0.328472,-0.425456, + 0.68395,0.1429,-0.715397,1.589301,-0.085107,-0.624049, + 0.699329,0.164944,-0.695509,1.613873,-0.213068,-0.627772, + 0.922767,0.190694,-0.334869,1.647861,-0.211045,-0.569694, + 0.68395,0.1429,-0.715397,1.589301,-0.085107,-0.624049, + 0.922767,0.190694,-0.334869,1.647861,-0.211045,-0.569694, + 0.923419,0.19798,-0.328787,1.620986,-0.080049,-0.567663, + 0.699329,0.164944,-0.695509,1.613873,-0.213068,-0.627772, + 0.695529,0.18142,-0.695217,1.633189,-0.328978,-0.636664, + 0.921783,0.189963,-0.337979,1.670246,-0.328472,-0.574544, + 0.921783,0.189963,-0.337979,1.670246,-0.328472,-0.574544, + 0.922767,0.190694,-0.334869,1.647861,-0.211045,-0.569694, + 0.699329,0.164944,-0.695509,1.613873,-0.213068,-0.627772, + 0.981065,0.19368,0,1.682599,-0.328303,-0.5, + 0.979589,0.201011,0,1.65919,-0.21037,-0.5, + 0.922767,0.190694,-0.334869,1.647861,-0.211045,-0.569694, + 0.981065,0.19368,0,1.682599,-0.328303,-0.5, + 0.922767,0.190694,-0.334869,1.647861,-0.211045,-0.569694, + 0.921783,0.189963,-0.337979,1.670246,-0.328472,-0.574544, + 0.979589,0.201011,0,1.65919,-0.21037,-0.5, + 0.976556,0.215262,0,1.631547,-0.078363,-0.5, + 0.923419,0.19798,-0.328787,1.620986,-0.080049,-0.567663, + 0.923419,0.19798,-0.328787,1.620986,-0.080049,-0.567663, + 0.922767,0.190694,-0.334869,1.647861,-0.211045,-0.569694, + 0.979589,0.201011,0,1.65919,-0.21037,-0.5, + 0.692333,0.202928,-0.692456,1.648448,-0.429344,-0.648448, + 0.686951,0.237061,-0.686951,1.660849,-0.510672,-0.660849, + 0.914159,0.225597,-0.336777,1.704717,-0.510672,-0.587736, + 0.914159,0.225597,-0.336777,1.704717,-0.510672,-0.587736, + 0.919751,0.19868,-0.338503,1.688934,-0.429344,-0.580972, + 0.692333,0.202928,-0.692456,1.648448,-0.429344,-0.648448, + 0.976322,0.216322,0,1.71934,-0.510672,-0.5, + 0.980577,0.196136,0,1.70243,-0.429344,-0.5, + 0.919751,0.19868,-0.338503,1.688934,-0.429344,-0.580972, + 0.976322,0.216322,0,1.71934,-0.510672,-0.5, + 0.919751,0.19868,-0.338503,1.688934,-0.429344,-0.580972, + 0.914159,0.225597,-0.336777,1.704717,-0.510672,-0.587736, + 0.980577,0.196136,0,1.70243,-0.429344,-0.5, + 0.981065,0.19368,0,1.682599,-0.328303,-0.5, + 0.921783,0.189963,-0.337979,1.670246,-0.328472,-0.574544, + 0.921783,0.189963,-0.337979,1.670246,-0.328472,-0.574544, + 0.919751,0.19868,-0.338503,1.688934,-0.429344,-0.580972, + 0.980577,0.196136,0,1.70243,-0.429344,-0.5, + 0.695529,0.18142,-0.695217,1.633189,-0.328978,-0.636664, + 0.692333,0.202928,-0.692456,1.648448,-0.429344,-0.648448, + 0.919751,0.19868,-0.338503,1.688934,-0.429344,-0.580972, + 0.695529,0.18142,-0.695217,1.633189,-0.328978,-0.636664, + 0.919751,0.19868,-0.338503,1.688934,-0.429344,-0.580972, + 0.921783,0.189963,-0.337979,1.670246,-0.328472,-0.574544, + 0.68695,0.237061,0.686951,1.660849,-0.510672,-0.339151, + 0.914159,0.225597,0.336777,1.704717,-0.510672,-0.412264, + 0.925394,0.167122,0.340171,1.718387,-0.569469,-0.406406, + 0.68695,0.237061,0.686951,1.660849,-0.510672,-0.339151, + 0.925394,0.167122,0.340171,1.718387,-0.569469,-0.406406, + 0.700149,0.139938,0.700149,1.67159,-0.569469,-0.32841, + 0.914159,0.225597,0.336777,1.704717,-0.510672,-0.412264, + 0.976322,0.216322,0,1.71934,-0.510672,-0.5, + 0.981432,0.191813,0,1.733986,-0.569469,-0.5, + 0.981432,0.191813,0,1.733986,-0.569469,-0.5, + 0.925394,0.167122,0.340171,1.718387,-0.569469,-0.406406, + 0.914159,0.225597,0.336777,1.704717,-0.510672,-0.412264, + 0.968451,-0.249205,0,1.737621,-0.609501,-0.5, + 0.878536,-0.271725,0.392861,1.721597,-0.609197,-0.405226, + 0.925394,0.167122,0.340171,1.718387,-0.569469,-0.406406, + 0.968451,-0.249205,0,1.737621,-0.609501,-0.5, + 0.925394,0.167122,0.340171,1.718387,-0.569469,-0.406406, + 0.981432,0.191813,0,1.733986,-0.569469,-0.5, + 0.878536,-0.271725,0.392861,1.721597,-0.609197,-0.405226, + 0.676292,-0.291987,0.676293,1.673866,-0.608893,-0.326134, + 0.700149,0.139938,0.700149,1.67159,-0.569469,-0.32841, + 0.700149,0.139938,0.700149,1.67159,-0.569469,-0.32841, + 0.925394,0.167122,0.340171,1.718387,-0.569469,-0.406406, + 0.878536,-0.271725,0.392861,1.721597,-0.609197,-0.405226, + 0.686951,0.237061,-0.686951,1.660849,-0.510672,-0.660849, + 0.700149,0.139938,-0.700149,1.67159,-0.569469,-0.67159, + 0.925394,0.167122,-0.340171,1.718387,-0.569469,-0.593594, + 0.686951,0.237061,-0.686951,1.660849,-0.510672,-0.660849, + 0.925394,0.167122,-0.340171,1.718387,-0.569469,-0.593594, + 0.914159,0.225597,-0.336777,1.704717,-0.510672,-0.587736, + 0.700149,0.139938,-0.700149,1.67159,-0.569469,-0.67159, + 0.676292,-0.291988,-0.676293,1.673866,-0.608893,-0.673866, + 0.878536,-0.271725,-0.392861,1.721597,-0.609197,-0.594774, + 0.878536,-0.271725,-0.392861,1.721597,-0.609197,-0.594774, + 0.925394,0.167122,-0.340171,1.718387,-0.569469,-0.593594, + 0.700149,0.139938,-0.700149,1.67159,-0.569469,-0.67159, + 0.968451,-0.249205,0,1.737621,-0.609501,-0.5, + 0.981432,0.191813,0,1.733986,-0.569469,-0.5, + 0.925394,0.167122,-0.340171,1.718387,-0.569469,-0.593594, + 0.968451,-0.249205,0,1.737621,-0.609501,-0.5, + 0.925394,0.167122,-0.340171,1.718387,-0.569469,-0.593594, + 0.878536,-0.271725,-0.392861,1.721597,-0.609197,-0.594774, + 0.981432,0.191813,0,1.733986,-0.569469,-0.5, + 0.976322,0.216322,0,1.71934,-0.510672,-0.5, + 0.914159,0.225597,-0.336777,1.704717,-0.510672,-0.587736, + 0.914159,0.225597,-0.336777,1.704717,-0.510672,-0.587736, + 0.925394,0.167122,-0.340171,1.718387,-0.569469,-0.593594, + 0.981432,0.191813,0,1.733986,-0.569469,-0.5, + 0.199329,-0.959446,-0.199329,1.638667,-0.642463,-0.638667, + 0.188349,-0.976969,-0.100277,1.664625,-0.646948,-0.5825, + 0.529853,-0.826565,-0.189859,1.706,-0.633319,-0.5875, + 0.199329,-0.959446,-0.199329,1.638667,-0.642463,-0.638667, + 0.529853,-0.826565,-0.189859,1.706,-0.633319,-0.5875, + 0.467068,-0.750796,-0.467068,1.660875,-0.632104,-0.660875, + 0.244558,-0.969635,0,1.677562,-0.649161,-0.5, + 0.611773,-0.791034,0,1.7215,-0.634535,-0.5, + 0.529853,-0.826565,-0.189859,1.706,-0.633319,-0.5875, + 0.244558,-0.969635,0,1.677562,-0.649161,-0.5, + 0.529853,-0.826565,-0.189859,1.706,-0.633319,-0.5875, + 0.188349,-0.976969,-0.100277,1.664625,-0.646948,-0.5825, + 0.968451,-0.249205,0,1.737621,-0.609501,-0.5, + 0.878536,-0.271725,-0.392861,1.721597,-0.609197,-0.594774, + 0.529853,-0.826565,-0.189859,1.706,-0.633319,-0.5875, + 0.968451,-0.249205,0,1.737621,-0.609501,-0.5, + 0.529853,-0.826565,-0.189859,1.706,-0.633319,-0.5875, + 0.611773,-0.791034,0,1.7215,-0.634535,-0.5, + 0.878536,-0.271725,-0.392861,1.721597,-0.609197,-0.594774, + 0.676292,-0.291988,-0.676293,1.673866,-0.608893,-0.673866, + 0.467068,-0.750796,-0.467068,1.660875,-0.632104,-0.660875, + 0.467068,-0.750796,-0.467068,1.660875,-0.632104,-0.660875, + 0.529853,-0.826565,-0.189859,1.706,-0.633319,-0.5875, + 0.878536,-0.271725,-0.392861,1.721597,-0.609197,-0.594774, + 0.199329,-0.959446,0.199329,1.638667,-0.642463,-0.361333, + 0.467068,-0.750796,0.467068,1.660875,-0.632104,-0.339125, + 0.529853,-0.826565,0.189859,1.706,-0.633319,-0.4125, + 0.199329,-0.959446,0.199329,1.638667,-0.642463,-0.361333, + 0.529853,-0.826565,0.189859,1.706,-0.633319,-0.4125, + 0.188349,-0.976969,0.100277,1.664625,-0.646948,-0.4175, + 0.467068,-0.750796,0.467068,1.660875,-0.632104,-0.339125, + 0.676292,-0.291987,0.676293,1.673866,-0.608893,-0.326134, + 0.878536,-0.271725,0.392861,1.721597,-0.609197,-0.405226, + 0.878536,-0.271725,0.392861,1.721597,-0.609197,-0.405226, + 0.529853,-0.826565,0.189859,1.706,-0.633319,-0.4125, + 0.467068,-0.750796,0.467068,1.660875,-0.632104,-0.339125, + 0.968451,-0.249205,0,1.737621,-0.609501,-0.5, + 0.611773,-0.791034,0,1.7215,-0.634535,-0.5, + 0.529853,-0.826565,0.189859,1.706,-0.633319,-0.4125, + 0.968451,-0.249205,0,1.737621,-0.609501,-0.5, + 0.529853,-0.826565,0.189859,1.706,-0.633319,-0.4125, + 0.878536,-0.271725,0.392861,1.721597,-0.609197,-0.405226, + 0.244558,-0.969635,0,1.677562,-0.649161,-0.5, + 0.188349,-0.976969,0.100277,1.664625,-0.646948,-0.4175, + 0.529853,-0.826565,0.189859,1.706,-0.633319,-0.4125, + 0.244558,-0.969635,0,1.677562,-0.649161,-0.5, + 0.529853,-0.826565,0.189859,1.706,-0.633319,-0.4125, + 0.611773,-0.791034,0,1.7215,-0.634535,-0.5, + 0.686951,0.237061,-0.686951,1.660849,-0.510672,-0.660849, + 0.336776,0.225597,-0.91416,1.587736,-0.510672,-0.704717, + 0.340171,0.167122,-0.925394,1.593594,-0.569469,-0.718387, + 0.686951,0.237061,-0.686951,1.660849,-0.510672,-0.660849, + 0.340171,0.167122,-0.925394,1.593594,-0.569469,-0.718387, + 0.700149,0.139938,-0.700149,1.67159,-0.569469,-0.67159, + 0.336776,0.225597,-0.91416,1.587736,-0.510672,-0.704717, + 0,0.216323,-0.976322,1.5,-0.510672,-0.71934, + 0,0.191813,-0.981432,1.5,-0.569469,-0.733986, + 0,0.191813,-0.981432,1.5,-0.569469,-0.733986, + 0.340171,0.167122,-0.925394,1.593594,-0.569469,-0.718387, + 0.336776,0.225597,-0.91416,1.587736,-0.510672,-0.704717, + 0,-0.249205,-0.968451,1.5,-0.609501,-0.737621, + 0.392861,-0.271725,-0.878536,1.594774,-0.609197,-0.721597, + 0.340171,0.167122,-0.925394,1.593594,-0.569469,-0.718387, + 0,-0.249205,-0.968451,1.5,-0.609501,-0.737621, + 0.340171,0.167122,-0.925394,1.593594,-0.569469,-0.718387, + 0,0.191813,-0.981432,1.5,-0.569469,-0.733986, + 0.392861,-0.271725,-0.878536,1.594774,-0.609197,-0.721597, + 0.676292,-0.291988,-0.676293,1.673866,-0.608893,-0.673866, + 0.700149,0.139938,-0.700149,1.67159,-0.569469,-0.67159, + 0.700149,0.139938,-0.700149,1.67159,-0.569469,-0.67159, + 0.340171,0.167122,-0.925394,1.593594,-0.569469,-0.718387, + 0.392861,-0.271725,-0.878536,1.594774,-0.609197,-0.721597, + -0.686951,0.237061,-0.686951,1.339151,-0.510672,-0.660849, + -0.700149,0.139938,-0.700149,1.32841,-0.569469,-0.67159, + -0.340171,0.167122,-0.925394,1.406406,-0.569469,-0.718387, + -0.686951,0.237061,-0.686951,1.339151,-0.510672,-0.660849, + -0.340171,0.167122,-0.925394,1.406406,-0.569469,-0.718387, + -0.336776,0.225597,-0.91416,1.412264,-0.510672,-0.704717, + -0.700149,0.139938,-0.700149,1.32841,-0.569469,-0.67159, + -0.676292,-0.291988,-0.676293,1.326134,-0.608893,-0.673866, + -0.392861,-0.271725,-0.878536,1.405226,-0.609197,-0.721597, + -0.392861,-0.271725,-0.878536,1.405226,-0.609197,-0.721597, + -0.340171,0.167122,-0.925394,1.406406,-0.569469,-0.718387, + -0.700149,0.139938,-0.700149,1.32841,-0.569469,-0.67159, + 0,-0.249205,-0.968451,1.5,-0.609501,-0.737621, + 0,0.191813,-0.981432,1.5,-0.569469,-0.733986, + -0.340171,0.167122,-0.925394,1.406406,-0.569469,-0.718387, + 0,-0.249205,-0.968451,1.5,-0.609501,-0.737621, + -0.340171,0.167122,-0.925394,1.406406,-0.569469,-0.718387, + -0.392861,-0.271725,-0.878536,1.405226,-0.609197,-0.721597, + 0,0.191813,-0.981432,1.5,-0.569469,-0.733986, + 0,0.216323,-0.976322,1.5,-0.510672,-0.71934, + -0.336776,0.225597,-0.91416,1.412264,-0.510672,-0.704717, + -0.336776,0.225597,-0.91416,1.412264,-0.510672,-0.704717, + -0.340171,0.167122,-0.925394,1.406406,-0.569469,-0.718387, + 0,0.191813,-0.981432,1.5,-0.569469,-0.733986, + -0.199329,-0.959446,-0.199329,1.361333,-0.642463,-0.638667, + -0.100277,-0.976969,-0.18835,1.4175,-0.646948,-0.664625, + -0.189859,-0.826565,-0.529853,1.4125,-0.633319,-0.706, + -0.199329,-0.959446,-0.199329,1.361333,-0.642463,-0.638667, + -0.189859,-0.826565,-0.529853,1.4125,-0.633319,-0.706, + -0.467068,-0.750796,-0.467068,1.339125,-0.632104,-0.660875, + 0,-0.969635,-0.244558,1.5,-0.649161,-0.677562, + 0,-0.791034,-0.611773,1.5,-0.634535,-0.7215, + -0.189859,-0.826565,-0.529853,1.4125,-0.633319,-0.706, + 0,-0.969635,-0.244558,1.5,-0.649161,-0.677562, + -0.189859,-0.826565,-0.529853,1.4125,-0.633319,-0.706, + -0.100277,-0.976969,-0.18835,1.4175,-0.646948,-0.664625, + 0,-0.249205,-0.968451,1.5,-0.609501,-0.737621, + -0.392861,-0.271725,-0.878536,1.405226,-0.609197,-0.721597, + -0.189859,-0.826565,-0.529853,1.4125,-0.633319,-0.706, + 0,-0.249205,-0.968451,1.5,-0.609501,-0.737621, + -0.189859,-0.826565,-0.529853,1.4125,-0.633319,-0.706, + 0,-0.791034,-0.611773,1.5,-0.634535,-0.7215, + -0.392861,-0.271725,-0.878536,1.405226,-0.609197,-0.721597, + -0.676292,-0.291988,-0.676293,1.326134,-0.608893,-0.673866, + -0.467068,-0.750796,-0.467068,1.339125,-0.632104,-0.660875, + -0.467068,-0.750796,-0.467068,1.339125,-0.632104,-0.660875, + -0.189859,-0.826565,-0.529853,1.4125,-0.633319,-0.706, + -0.392861,-0.271725,-0.878536,1.405226,-0.609197,-0.721597, + 0.199329,-0.959446,-0.199329,1.638667,-0.642463,-0.638667, + 0.467068,-0.750796,-0.467068,1.660875,-0.632104,-0.660875, + 0.189859,-0.826565,-0.529853,1.5875,-0.633319,-0.706, + 0.199329,-0.959446,-0.199329,1.638667,-0.642463,-0.638667, + 0.189859,-0.826565,-0.529853,1.5875,-0.633319,-0.706, + 0.100277,-0.976969,-0.18835,1.5825,-0.646948,-0.664625, + 0.467068,-0.750796,-0.467068,1.660875,-0.632104,-0.660875, + 0.676292,-0.291988,-0.676293,1.673866,-0.608893,-0.673866, + 0.392861,-0.271725,-0.878536,1.594774,-0.609197,-0.721597, + 0.392861,-0.271725,-0.878536,1.594774,-0.609197,-0.721597, + 0.189859,-0.826565,-0.529853,1.5875,-0.633319,-0.706, + 0.467068,-0.750796,-0.467068,1.660875,-0.632104,-0.660875, + 0,-0.249205,-0.968451,1.5,-0.609501,-0.737621, + 0,-0.791034,-0.611773,1.5,-0.634535,-0.7215, + 0.189859,-0.826565,-0.529853,1.5875,-0.633319,-0.706, + 0,-0.249205,-0.968451,1.5,-0.609501,-0.737621, + 0.189859,-0.826565,-0.529853,1.5875,-0.633319,-0.706, + 0.392861,-0.271725,-0.878536,1.594774,-0.609197,-0.721597, + 0,-0.969635,-0.244558,1.5,-0.649161,-0.677562, + 0.100277,-0.976969,-0.18835,1.5825,-0.646948,-0.664625, + 0.189859,-0.826565,-0.529853,1.5875,-0.633319,-0.706, + 0,-0.969635,-0.244558,1.5,-0.649161,-0.677562, + 0.189859,-0.826565,-0.529853,1.5875,-0.633319,-0.706, + 0,-0.791034,-0.611773,1.5,-0.634535,-0.7215, + -0.686951,0.237061,-0.686951,1.339151,-0.510672,-0.660849, + -0.914159,0.225597,-0.336777,1.295283,-0.510672,-0.587736, + -0.925394,0.167122,-0.340171,1.281613,-0.569469,-0.593594, + -0.686951,0.237061,-0.686951,1.339151,-0.510672,-0.660849, + -0.925394,0.167122,-0.340171,1.281613,-0.569469,-0.593594, + -0.700149,0.139938,-0.700149,1.32841,-0.569469,-0.67159, + -0.914159,0.225597,-0.336777,1.295283,-0.510672,-0.587736, + -0.976322,0.216322,0,1.28066,-0.510672,-0.5, + -0.981432,0.191813,0,1.266014,-0.569469,-0.5, + -0.981432,0.191813,0,1.266014,-0.569469,-0.5, + -0.925394,0.167122,-0.340171,1.281613,-0.569469,-0.593594, + -0.914159,0.225597,-0.336777,1.295283,-0.510672,-0.587736, + -0.968451,-0.249205,0,1.262379,-0.609501,-0.5, + -0.878536,-0.271725,-0.392861,1.278403,-0.609197,-0.594774, + -0.925394,0.167122,-0.340171,1.281613,-0.569469,-0.593594, + -0.968451,-0.249205,0,1.262379,-0.609501,-0.5, + -0.925394,0.167122,-0.340171,1.281613,-0.569469,-0.593594, + -0.981432,0.191813,0,1.266014,-0.569469,-0.5, + -0.878536,-0.271725,-0.392861,1.278403,-0.609197,-0.594774, + -0.676292,-0.291988,-0.676293,1.326134,-0.608893,-0.673866, + -0.700149,0.139938,-0.700149,1.32841,-0.569469,-0.67159, + -0.700149,0.139938,-0.700149,1.32841,-0.569469,-0.67159, + -0.925394,0.167122,-0.340171,1.281613,-0.569469,-0.593594, + -0.878536,-0.271725,-0.392861,1.278403,-0.609197,-0.594774, + -0.68695,0.237061,0.686951,1.339151,-0.510672,-0.339151, + -0.700149,0.139938,0.700149,1.32841,-0.569469,-0.32841, + -0.925394,0.167122,0.340171,1.281613,-0.569469,-0.406406, + -0.68695,0.237061,0.686951,1.339151,-0.510672,-0.339151, + -0.925394,0.167122,0.340171,1.281613,-0.569469,-0.406406, + -0.914159,0.225597,0.336777,1.295283,-0.510672,-0.412264, + -0.700149,0.139938,0.700149,1.32841,-0.569469,-0.32841, + -0.676292,-0.291987,0.676293,1.326134,-0.608893,-0.326134, + -0.878536,-0.271725,0.392861,1.278403,-0.609197,-0.405226, + -0.878536,-0.271725,0.392861,1.278403,-0.609197,-0.405226, + -0.925394,0.167122,0.340171,1.281613,-0.569469,-0.406406, + -0.700149,0.139938,0.700149,1.32841,-0.569469,-0.32841, + -0.968451,-0.249205,0,1.262379,-0.609501,-0.5, + -0.981432,0.191813,0,1.266014,-0.569469,-0.5, + -0.925394,0.167122,0.340171,1.281613,-0.569469,-0.406406, + -0.968451,-0.249205,0,1.262379,-0.609501,-0.5, + -0.925394,0.167122,0.340171,1.281613,-0.569469,-0.406406, + -0.878536,-0.271725,0.392861,1.278403,-0.609197,-0.405226, + -0.981432,0.191813,0,1.266014,-0.569469,-0.5, + -0.976322,0.216322,0,1.28066,-0.510672,-0.5, + -0.914159,0.225597,0.336777,1.295283,-0.510672,-0.412264, + -0.914159,0.225597,0.336777,1.295283,-0.510672,-0.412264, + -0.925394,0.167122,0.340171,1.281613,-0.569469,-0.406406, + -0.981432,0.191813,0,1.266014,-0.569469,-0.5, + -0.199329,-0.959446,0.199329,1.361333,-0.642463,-0.361333, + -0.188349,-0.976969,0.100277,1.335375,-0.646948,-0.4175, + -0.529853,-0.826565,0.189859,1.294,-0.633319,-0.4125, + -0.199329,-0.959446,0.199329,1.361333,-0.642463,-0.361333, + -0.529853,-0.826565,0.189859,1.294,-0.633319,-0.4125, + -0.467068,-0.750796,0.467068,1.339125,-0.632104,-0.339125, + -0.244558,-0.969635,0,1.322438,-0.649161,-0.5, + -0.611773,-0.791034,0,1.2785,-0.634535,-0.5, + -0.529853,-0.826565,0.189859,1.294,-0.633319,-0.4125, + -0.244558,-0.969635,0,1.322438,-0.649161,-0.5, + -0.529853,-0.826565,0.189859,1.294,-0.633319,-0.4125, + -0.188349,-0.976969,0.100277,1.335375,-0.646948,-0.4175, + -0.968451,-0.249205,0,1.262379,-0.609501,-0.5, + -0.878536,-0.271725,0.392861,1.278403,-0.609197,-0.405226, + -0.529853,-0.826565,0.189859,1.294,-0.633319,-0.4125, + -0.968451,-0.249205,0,1.262379,-0.609501,-0.5, + -0.529853,-0.826565,0.189859,1.294,-0.633319,-0.4125, + -0.611773,-0.791034,0,1.2785,-0.634535,-0.5, + -0.878536,-0.271725,0.392861,1.278403,-0.609197,-0.405226, + -0.676292,-0.291987,0.676293,1.326134,-0.608893,-0.326134, + -0.467068,-0.750796,0.467068,1.339125,-0.632104,-0.339125, + -0.467068,-0.750796,0.467068,1.339125,-0.632104,-0.339125, + -0.529853,-0.826565,0.189859,1.294,-0.633319,-0.4125, + -0.878536,-0.271725,0.392861,1.278403,-0.609197,-0.405226, + -0.199329,-0.959446,-0.199329,1.361333,-0.642463,-0.638667, + -0.467068,-0.750796,-0.467068,1.339125,-0.632104,-0.660875, + -0.529853,-0.826565,-0.189859,1.294,-0.633319,-0.5875, + -0.199329,-0.959446,-0.199329,1.361333,-0.642463,-0.638667, + -0.529853,-0.826565,-0.189859,1.294,-0.633319,-0.5875, + -0.188349,-0.976969,-0.100277,1.335375,-0.646948,-0.5825, + -0.467068,-0.750796,-0.467068,1.339125,-0.632104,-0.660875, + -0.676292,-0.291988,-0.676293,1.326134,-0.608893,-0.673866, + -0.878536,-0.271725,-0.392861,1.278403,-0.609197,-0.594774, + -0.878536,-0.271725,-0.392861,1.278403,-0.609197,-0.594774, + -0.529853,-0.826565,-0.189859,1.294,-0.633319,-0.5875, + -0.467068,-0.750796,-0.467068,1.339125,-0.632104,-0.660875, + -0.968451,-0.249205,0,1.262379,-0.609501,-0.5, + -0.611773,-0.791034,0,1.2785,-0.634535,-0.5, + -0.529853,-0.826565,-0.189859,1.294,-0.633319,-0.5875, + -0.968451,-0.249205,0,1.262379,-0.609501,-0.5, + -0.529853,-0.826565,-0.189859,1.294,-0.633319,-0.5875, + -0.878536,-0.271725,-0.392861,1.278403,-0.609197,-0.594774, + -0.244558,-0.969635,0,1.322438,-0.649161,-0.5, + -0.188349,-0.976969,-0.100277,1.335375,-0.646948,-0.5825, + -0.529853,-0.826565,-0.189859,1.294,-0.633319,-0.5875, + -0.244558,-0.969635,0,1.322438,-0.649161,-0.5, + -0.529853,-0.826565,-0.189859,1.294,-0.633319,-0.5875, + -0.611773,-0.791034,0,1.2785,-0.634535,-0.5, + -0.68695,0.237061,0.686951,1.339151,-0.510672,-0.339151, + -0.336776,0.225598,0.914159,1.412264,-0.510672,-0.295283, + -0.340171,0.167122,0.925394,1.406406,-0.569469,-0.281613, + -0.68695,0.237061,0.686951,1.339151,-0.510672,-0.339151, + -0.340171,0.167122,0.925394,1.406406,-0.569469,-0.281613, + -0.700149,0.139938,0.700149,1.32841,-0.569469,-0.32841, + -0.336776,0.225598,0.914159,1.412264,-0.510672,-0.295283, + 0,0.216323,0.976322,1.5,-0.510672,-0.28066, + 0,0.191813,0.981432,1.5,-0.569469,-0.266014, + 0,0.191813,0.981432,1.5,-0.569469,-0.266014, + -0.340171,0.167122,0.925394,1.406406,-0.569469,-0.281613, + -0.336776,0.225598,0.914159,1.412264,-0.510672,-0.295283, + 0,-0.249205,0.968451,1.5,-0.609501,-0.262379, + -0.392861,-0.271724,0.878536,1.405226,-0.609197,-0.278403, + -0.340171,0.167122,0.925394,1.406406,-0.569469,-0.281613, + 0,-0.249205,0.968451,1.5,-0.609501,-0.262379, + -0.340171,0.167122,0.925394,1.406406,-0.569469,-0.281613, + 0,0.191813,0.981432,1.5,-0.569469,-0.266014, + -0.392861,-0.271724,0.878536,1.405226,-0.609197,-0.278403, + -0.676292,-0.291987,0.676293,1.326134,-0.608893,-0.326134, + -0.700149,0.139938,0.700149,1.32841,-0.569469,-0.32841, + -0.700149,0.139938,0.700149,1.32841,-0.569469,-0.32841, + -0.340171,0.167122,0.925394,1.406406,-0.569469,-0.281613, + -0.392861,-0.271724,0.878536,1.405226,-0.609197,-0.278403, + 0.68695,0.237061,0.686951,1.660849,-0.510672,-0.339151, + 0.700149,0.139938,0.700149,1.67159,-0.569469,-0.32841, + 0.340171,0.167122,0.925394,1.593594,-0.569469,-0.281613, + 0.68695,0.237061,0.686951,1.660849,-0.510672,-0.339151, + 0.340171,0.167122,0.925394,1.593594,-0.569469,-0.281613, + 0.336776,0.225598,0.914159,1.587736,-0.510672,-0.295283, + 0.700149,0.139938,0.700149,1.67159,-0.569469,-0.32841, + 0.676292,-0.291987,0.676293,1.673866,-0.608893,-0.326134, + 0.392861,-0.271724,0.878536,1.594774,-0.609197,-0.278403, + 0.392861,-0.271724,0.878536,1.594774,-0.609197,-0.278403, + 0.340171,0.167122,0.925394,1.593594,-0.569469,-0.281613, + 0.700149,0.139938,0.700149,1.67159,-0.569469,-0.32841, + 0,-0.249205,0.968451,1.5,-0.609501,-0.262379, + 0,0.191813,0.981432,1.5,-0.569469,-0.266014, + 0.340171,0.167122,0.925394,1.593594,-0.569469,-0.281613, + 0,-0.249205,0.968451,1.5,-0.609501,-0.262379, + 0.340171,0.167122,0.925394,1.593594,-0.569469,-0.281613, + 0.392861,-0.271724,0.878536,1.594774,-0.609197,-0.278403, + 0,0.191813,0.981432,1.5,-0.569469,-0.266014, + 0,0.216323,0.976322,1.5,-0.510672,-0.28066, + 0.336776,0.225598,0.914159,1.587736,-0.510672,-0.295283, + 0.336776,0.225598,0.914159,1.587736,-0.510672,-0.295283, + 0.340171,0.167122,0.925394,1.593594,-0.569469,-0.281613, + 0,0.191813,0.981432,1.5,-0.569469,-0.266014, + 0.199329,-0.959446,0.199329,1.638667,-0.642463,-0.361333, + 0.100277,-0.976969,0.18835,1.5825,-0.646948,-0.335375, + 0.189859,-0.826565,0.529853,1.5875,-0.633319,-0.294, + 0.199329,-0.959446,0.199329,1.638667,-0.642463,-0.361333, + 0.189859,-0.826565,0.529853,1.5875,-0.633319,-0.294, + 0.467068,-0.750796,0.467068,1.660875,-0.632104,-0.339125, + 0,-0.969635,0.244558,1.5,-0.649161,-0.322437, + 0,-0.791034,0.611773,1.5,-0.634535,-0.2785, + 0.189859,-0.826565,0.529853,1.5875,-0.633319,-0.294, + 0,-0.969635,0.244558,1.5,-0.649161,-0.322437, + 0.189859,-0.826565,0.529853,1.5875,-0.633319,-0.294, + 0.100277,-0.976969,0.18835,1.5825,-0.646948,-0.335375, + 0,-0.249205,0.968451,1.5,-0.609501,-0.262379, + 0.392861,-0.271724,0.878536,1.594774,-0.609197,-0.278403, + 0.189859,-0.826565,0.529853,1.5875,-0.633319,-0.294, + 0,-0.249205,0.968451,1.5,-0.609501,-0.262379, + 0.189859,-0.826565,0.529853,1.5875,-0.633319,-0.294, + 0,-0.791034,0.611773,1.5,-0.634535,-0.2785, + 0.392861,-0.271724,0.878536,1.594774,-0.609197,-0.278403, + 0.676292,-0.291987,0.676293,1.673866,-0.608893,-0.326134, + 0.467068,-0.750796,0.467068,1.660875,-0.632104,-0.339125, + 0.467068,-0.750796,0.467068,1.660875,-0.632104,-0.339125, + 0.189859,-0.826565,0.529853,1.5875,-0.633319,-0.294, + 0.392861,-0.271724,0.878536,1.594774,-0.609197,-0.278403, + -0.199329,-0.959446,0.199329,1.361333,-0.642463,-0.361333, + -0.467068,-0.750796,0.467068,1.339125,-0.632104,-0.339125, + -0.189859,-0.826565,0.529853,1.4125,-0.633319,-0.294, + -0.199329,-0.959446,0.199329,1.361333,-0.642463,-0.361333, + -0.189859,-0.826565,0.529853,1.4125,-0.633319,-0.294, + -0.100277,-0.976969,0.18835,1.4175,-0.646948,-0.335375, + -0.467068,-0.750796,0.467068,1.339125,-0.632104,-0.339125, + -0.676292,-0.291987,0.676293,1.326134,-0.608893,-0.326134, + -0.392861,-0.271724,0.878536,1.405226,-0.609197,-0.278403, + -0.392861,-0.271724,0.878536,1.405226,-0.609197,-0.278403, + -0.189859,-0.826565,0.529853,1.4125,-0.633319,-0.294, + -0.467068,-0.750796,0.467068,1.339125,-0.632104,-0.339125, + 0,-0.249205,0.968451,1.5,-0.609501,-0.262379, + 0,-0.791034,0.611773,1.5,-0.634535,-0.2785, + -0.189859,-0.826565,0.529853,1.4125,-0.633319,-0.294, + 0,-0.249205,0.968451,1.5,-0.609501,-0.262379, + -0.189859,-0.826565,0.529853,1.4125,-0.633319,-0.294, + -0.392861,-0.271724,0.878536,1.405226,-0.609197,-0.278403, + 0,-0.969635,0.244558,1.5,-0.649161,-0.322437, + -0.100277,-0.976969,0.18835,1.4175,-0.646948,-0.335375, + -0.189859,-0.826565,0.529853,1.4125,-0.633319,-0.294, + 0,-0.969635,0.244558,1.5,-0.649161,-0.322437, + -0.189859,-0.826565,0.529853,1.4125,-0.633319,-0.294, + 0,-0.791034,0.611773,1.5,-0.634535,-0.2785, + 0.199329,-0.959446,-0.199329,1.638667,-0.642463,-0.638667, + 0.100277,-0.976969,-0.18835,1.5825,-0.646948,-0.664625, + 0.079739,-0.993621,-0.079739,1.5905,-0.655194,-0.5905, + 0.199329,-0.959446,-0.199329,1.638667,-0.642463,-0.638667, + 0.079739,-0.993621,-0.079739,1.5905,-0.655194,-0.5905, + 0.188349,-0.976969,-0.100277,1.664625,-0.646948,-0.5825, + 0.100277,-0.976969,-0.18835,1.5825,-0.646948,-0.664625, + 0,-0.969635,-0.244558,1.5,-0.649161,-0.677562, + 0,-0.996384,-0.08496,1.5,-0.657972,-0.59775, + 0,-0.996384,-0.08496,1.5,-0.657972,-0.59775, + 0.079739,-0.993621,-0.079739,1.5905,-0.655194,-0.5905, + 0.100277,-0.976969,-0.18835,1.5825,-0.646948,-0.664625, + 0,-1,0,1.5,-0.660924,-0.5, + 0.08496,-0.996384,0,1.59775,-0.657972,-0.5, + 0.079739,-0.993621,-0.079739,1.5905,-0.655194,-0.5905, + 0,-1,0,1.5,-0.660924,-0.5, + 0.079739,-0.993621,-0.079739,1.5905,-0.655194,-0.5905, + 0,-0.996384,-0.08496,1.5,-0.657972,-0.59775, + 0.08496,-0.996384,0,1.59775,-0.657972,-0.5, + 0.244558,-0.969635,0,1.677562,-0.649161,-0.5, + 0.188349,-0.976969,-0.100277,1.664625,-0.646948,-0.5825, + 0.188349,-0.976969,-0.100277,1.664625,-0.646948,-0.5825, + 0.079739,-0.993621,-0.079739,1.5905,-0.655194,-0.5905, + 0.08496,-0.996384,0,1.59775,-0.657972,-0.5, + -0.199329,-0.959446,-0.199329,1.361333,-0.642463,-0.638667, + -0.188349,-0.976969,-0.100277,1.335375,-0.646948,-0.5825, + -0.079739,-0.993621,-0.079739,1.4095,-0.655194,-0.5905, + -0.199329,-0.959446,-0.199329,1.361333,-0.642463,-0.638667, + -0.079739,-0.993621,-0.079739,1.4095,-0.655194,-0.5905, + -0.100277,-0.976969,-0.18835,1.4175,-0.646948,-0.664625, + -0.188349,-0.976969,-0.100277,1.335375,-0.646948,-0.5825, + -0.244558,-0.969635,0,1.322438,-0.649161,-0.5, + -0.08496,-0.996384,0,1.40225,-0.657972,-0.5, + -0.08496,-0.996384,0,1.40225,-0.657972,-0.5, + -0.079739,-0.993621,-0.079739,1.4095,-0.655194,-0.5905, + -0.188349,-0.976969,-0.100277,1.335375,-0.646948,-0.5825, + 0,-1,0,1.5,-0.660924,-0.5, + 0,-0.996384,-0.08496,1.5,-0.657972,-0.59775, + -0.079739,-0.993621,-0.079739,1.4095,-0.655194,-0.5905, + 0,-1,0,1.5,-0.660924,-0.5, + -0.079739,-0.993621,-0.079739,1.4095,-0.655194,-0.5905, + -0.08496,-0.996384,0,1.40225,-0.657972,-0.5, + 0,-0.996384,-0.08496,1.5,-0.657972,-0.59775, + 0,-0.969635,-0.244558,1.5,-0.649161,-0.677562, + -0.100277,-0.976969,-0.18835,1.4175,-0.646948,-0.664625, + -0.100277,-0.976969,-0.18835,1.4175,-0.646948,-0.664625, + -0.079739,-0.993621,-0.079739,1.4095,-0.655194,-0.5905, + 0,-0.996384,-0.08496,1.5,-0.657972,-0.59775, + -0.199329,-0.959446,0.199329,1.361333,-0.642463,-0.361333, + -0.100277,-0.976969,0.18835,1.4175,-0.646948,-0.335375, + -0.079739,-0.993621,0.079739,1.4095,-0.655194,-0.4095, + -0.199329,-0.959446,0.199329,1.361333,-0.642463,-0.361333, + -0.079739,-0.993621,0.079739,1.4095,-0.655194,-0.4095, + -0.188349,-0.976969,0.100277,1.335375,-0.646948,-0.4175, + -0.100277,-0.976969,0.18835,1.4175,-0.646948,-0.335375, + 0,-0.969635,0.244558,1.5,-0.649161,-0.322437, + 0,-0.996384,0.08496,1.5,-0.657972,-0.40225, + 0,-0.996384,0.08496,1.5,-0.657972,-0.40225, + -0.079739,-0.993621,0.079739,1.4095,-0.655194,-0.4095, + -0.100277,-0.976969,0.18835,1.4175,-0.646948,-0.335375, + 0,-1,0,1.5,-0.660924,-0.5, + -0.08496,-0.996384,0,1.40225,-0.657972,-0.5, + -0.079739,-0.993621,0.079739,1.4095,-0.655194,-0.4095, + 0,-1,0,1.5,-0.660924,-0.5, + -0.079739,-0.993621,0.079739,1.4095,-0.655194,-0.4095, + 0,-0.996384,0.08496,1.5,-0.657972,-0.40225, + -0.08496,-0.996384,0,1.40225,-0.657972,-0.5, + -0.244558,-0.969635,0,1.322438,-0.649161,-0.5, + -0.188349,-0.976969,0.100277,1.335375,-0.646948,-0.4175, + -0.188349,-0.976969,0.100277,1.335375,-0.646948,-0.4175, + -0.079739,-0.993621,0.079739,1.4095,-0.655194,-0.4095, + -0.08496,-0.996384,0,1.40225,-0.657972,-0.5, + 0.199329,-0.959446,0.199329,1.638667,-0.642463,-0.361333, + 0.188349,-0.976969,0.100277,1.664625,-0.646948,-0.4175, + 0.079739,-0.993621,0.079739,1.5905,-0.655194,-0.4095, + 0.199329,-0.959446,0.199329,1.638667,-0.642463,-0.361333, + 0.079739,-0.993621,0.079739,1.5905,-0.655194,-0.4095, + 0.100277,-0.976969,0.18835,1.5825,-0.646948,-0.335375, + 0.188349,-0.976969,0.100277,1.664625,-0.646948,-0.4175, + 0.244558,-0.969635,0,1.677562,-0.649161,-0.5, + 0.08496,-0.996384,0,1.59775,-0.657972,-0.5, + 0.08496,-0.996384,0,1.59775,-0.657972,-0.5, + 0.079739,-0.993621,0.079739,1.5905,-0.655194,-0.4095, + 0.188349,-0.976969,0.100277,1.664625,-0.646948,-0.4175, + 0,-1,0,1.5,-0.660924,-0.5, + 0,-0.996384,0.08496,1.5,-0.657972,-0.40225, + 0.079739,-0.993621,0.079739,1.5905,-0.655194,-0.4095, + 0,-1,0,1.5,-0.660924,-0.5, + 0.079739,-0.993621,0.079739,1.5905,-0.655194,-0.4095, + 0.08496,-0.996384,0,1.59775,-0.657972,-0.5, + 0,-0.996384,0.08496,1.5,-0.657972,-0.40225, + 0,-0.969635,0.244558,1.5,-0.649161,-0.322437, + 0.100277,-0.976969,0.18835,1.5825,-0.646948,-0.335375, + 0.100277,-0.976969,0.18835,1.5825,-0.646948,-0.335375, + 0.079739,-0.993621,0.079739,1.5905,-0.655194,-0.4095, + 0,-0.996384,0.08496,1.5,-0.657972,-0.40225, +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1728,data,NULL}; +const struct gllist *s1_6=&frame; diff --git a/hacks/glx/s1_b.c b/hacks/glx/s1_b.c new file mode 100644 index 0000000..efdecf3 --- /dev/null +++ b/hacks/glx/s1_b.c @@ -0,0 +1,505 @@ +#include "gllist.h" +static const float data[]={ + -0.137893,0.043508,-0.125711, + -0.095845,-0.165656,0.072892, + -0.093165,0.152051,0.327744, + -0.003795,0.001470,-0.102225, + 0.152845,-0.430757,-0.031907, + -0.118828,0.399389,0.091047, + -0.169137,-0.181241,-0.288763, + 0.048660,0.018262,-0.035049, + 0.008859,0.208004,-0.059048, + -0.009212,-0.042229,-0.000692, + -0.040025,0.115695,0.178962, + -0.198525,0.018630,0.257202, + 0.205081,-0.244569,0.136314, + -0.214336,-0.149946,-0.006872, + 0.245675,-0.227316,-0.184201, + -0.001494,0.259139,-0.260652, + 0.070243,0.038750,0.069425, + -0.033229,-0.259151,0.298856, + 0.088773,-0.065324,0.260294, + 0.009195,0.078651,0.055543, + -0.090795,0.025672,0.056988, + -0.163707,-0.011627,-0.096395, + 0.068886,0.257031,-0.264175, + -0.018086,-0.285526,0.152989, + -0.017489,0.031671,0.000107, + -0.075583,-0.097617,0.030074, + 0.129221,-0.087628,0.171748, + -0.007530,-0.084194,0.186045, + 0.474638,0.004818,0.200460, + 0.016796,0.096614,-0.221351, + 0.187032,0.031017,0.039986, + -0.142119,-0.105297,-0.100849, + 0.142768,-0.313960,-0.349716, + -0.146805,0.140482,0.035653, + 0.039939,-0.051822,-0.017672, + 0.057111,-0.075686,-0.103478, + 0.049696,-0.135070,0.055097, + 0.030271,0.075412,-0.103571, + 0.100158,-0.022917,0.073895, + 0.085544,-0.273613,0.092456, + 0.077489,-0.309836,-0.003664, + -0.017590,-0.127869,0.153118, + -0.157014,-0.242184,0.070478, + -0.018167,-0.133639,-0.174937, + -0.106973,-0.189783,0.038622, + -0.000096,0.104429,-0.032589, + -0.032036,-0.021493,0.279829, + -0.093181,-0.058024,0.182239, + 0.012941,-0.010409,0.088080, + 0.256718,-0.118137,-0.078847, + -0.113382,0.135060,0.269946, + 0.175810,-0.026321,0.013860, + -0.110606,-0.023553,-0.255525, + 0.007163,0.068674,0.010214, + 0.031631,-0.170381,-0.174604, + 0.117242,0.014353,-0.021215, + 0.090315,0.161755,0.074427, + 0.285616,0.335824,-0.083891, + -0.145763,0.109292,0.121340, + -0.147459,-0.041936,0.010427, + -0.082626,0.151300,-0.030875, + 0.217154,-0.288504,-0.202483, + 0.026532,-0.106796,0.121041, + 0.046695,-0.033673,-0.043721, + 0.135596,0.217426,-0.219631, + 0.137627,0.026335,-0.082390, + -0.031665,-0.115897,0.077834, + -0.214922,-0.162169,0.073035, + -0.076108,0.200481,0.036119, + 0.012715,-0.161921,0.179804, + 0.140409,-0.165899,-0.005149, + -0.054606,0.011149,0.045768, + 0.116640,-0.180314,0.045320, + 0.342166,0.295895,-0.049250, + -0.133242,0.129064,0.136969, + 0.137520,-0.387145,0.132137, + 0.023302,0.194298,-0.066187, + 0.089302,0.128683,-0.072530, + -0.141374,0.035924,-0.079354, + -0.209233,0.018987,-0.004193, + 0.156295,-0.034087,0.344315, + -0.005946,0.039791,0.071862, + 0.076043,-0.094430,0.090122, + 0.127394,0.031466,-0.028015, + -0.061000,0.169741,-0.127635, + -0.015117,-0.160883,-0.095443, + -0.185998,-0.182942,0.056857, + 0.016499,-0.308118,-0.075513, + 0.024971,-0.301226,-0.027251, + -0.035944,0.061566,0.013883, + 0.007215,0.046198,-0.227891, + 0.189165,0.079471,-0.067849, + 0.026963,0.027982,-0.050419, + -0.050896,0.069604,-0.196938, + 0.064274,-0.205263,0.297868, + -0.047543,0.147822,0.166593, + 0.010318,-0.002148,0.029434, + 0.036107,-0.523568,-0.118442, + -0.199410,0.233526,-0.161289, + -0.047441,-0.013973,0.112998, + -0.043494,-0.181796,0.065864, + -0.074984,0.177758,-0.156470, + 0.225216,0.081058,-0.169876, + -0.041510,0.025763,-0.231350, + 0.259015,0.274641,0.018290, + 0.039196,0.010028,0.072771, + 0.031646,0.075290,0.039258, + 0.052930,-0.034809,0.165429, + -0.072511,0.095786,-0.222144, + 0.038706,0.032296,-0.002495, + 0.011675,-0.061944,0.082555, + -0.168400,0.074113,0.049321, + 0.001263,-0.207436,0.013949, + -0.027045,0.015697,-0.047831, + 0.121989,-0.043014,-0.004426, + 0.238374,-0.320060,-0.111754, + 0.095077,0.014640,0.070665, + -0.084367,0.016444,0.000788, + -0.117804,0.113550,0.087029, + -0.109080,-0.155795,0.040085, + -0.020370,0.118787,0.101787, + 0.140877,-0.144829,0.107720, + -0.247002,-0.454632,0.070535, + -0.016278,-0.111440,0.270110, + -0.017624,-0.146232,0.154626, + 0.214030,0.041025,-0.170250, + 0.010009,-0.159290,-0.076895, + 0.116168,0.156775,-0.077935, + 0.199355,0.081120,0.003352, + 0.054178,-0.036863,-0.004573, + -0.015149,0.057005,-0.008878, + 0.374758,-0.007823,-0.078051, + -0.034977,0.026837,0.035441, + 0.101867,0.121954,0.040450, + -0.136911,0.010061,0.082698, + 0.121665,-0.589852,0.106401, + -0.064574,0.098679,0.059336, + 0.103037,-0.075263,0.172586, + -0.217492,-0.170584,-0.025846, + 0.260366,0.002117,0.041535, + -0.024112,-0.023437,-0.088146, + -0.007767,0.061738,0.116208, + 0.253471,0.113278,0.231012, + -0.011399,0.116962,-0.037465, + 0.233898,0.226108,0.077176, + -0.004640,0.209191,-0.091738, + 0.093995,0.328937,0.245098, + 0.155739,-0.327971,-0.115265, + 0.125306,0.174931,0.130030, + 0.005005,-0.022310,0.120651, + 0.046982,-0.058839,-0.097958, + -0.059618,-0.068114,0.070137, + 0.053184,-0.081163,0.000020, + 0.188066,-0.082942,-0.013689, + -0.161390,-0.335891,-0.060737, + 0.131189,0.036733,-0.093511, + -0.002496,-0.059035,-0.084055, + 0.109820,-0.235531,0.130865, + 0.018909,0.062351,0.111532, + 0.123548,0.094008,0.056761, + 0.106710,-0.049834,-0.147748, + 0.102940,-0.113169,0.191710, + -0.028647,0.128038,-0.104189, + 0.107226,-0.220633,-0.147310, + -0.205747,0.063433,-0.026135, + -0.064614,0.096963,-0.080108, + -0.083255,0.113008,-0.089852, + 0.180961,-0.269100,0.115523, + 0.044722,-0.023285,0.024813, + 0.078986,0.037242,0.005124, + 0.115141,0.124478,-0.034603, + 0.022454,0.155937,-0.096183, + 0.175318,0.007233,-0.138507, + 0.019182,-0.037869,0.074242, + 0.058218,0.212269,-0.003886, + -0.188525,-0.075703,0.075643, + -0.029085,-0.076746,-0.273473, + -0.105590,-0.238524,-0.087465, + 0.086122,-0.340807,-0.192851, + -0.247936,-0.003160,0.082106, + 0.137988,-0.041876,-0.012086, + -0.140714,-0.138827,-0.064179, + -0.059380,0.015642,0.113841, + -0.031501,0.007130,-0.125767, + 0.021294,-0.021957,-0.069365, + -0.012419,0.019780,-0.077459, + 0.085524,0.087513,-0.107484, + -0.303263,0.263672,-0.220649, + -0.090267,-0.376337,-0.127634, + 0.087681,0.015985,-0.029860, + 0.119257,0.140347,0.194003, + 0.066270,0.127178,-0.003765, + 0.037563,-0.110829,0.000382, + 0.034295,-0.045737,0.045204, + 0.017365,-0.072708,0.056698, + 0.045238,0.187956,-0.055878, + -0.132755,0.017969,-0.041205, + 0.189702,-0.020780,-0.077422, + 0.210419,0.178041,-0.005855, + 0.104527,-0.304323,0.002581, + 0.043359,-0.060695,-0.011878, + -0.000267,0.020510,-0.046383, + 0.252891,0.074246,-0.047689, + -0.069874,0.118962,-0.052781, + 0.086188,0.068354,-0.213621, + 0.086637,-0.171519,0.006447, + 0.196785,-0.086044,-0.068059, + 0.100401,0.243886,-0.142258, + 0.173010,0.303375,-0.060085, + -0.041181,-0.097467,0.073776, + -0.013471,-0.133299,-0.143570, + -0.302092,-0.158342,0.230719, + 0.074434,-0.143530,0.294895, + -0.165626,0.200869,-0.130737, + 0.102444,0.277067,0.078210, + -0.183696,-0.010502,-0.150481, + -0.070029,-0.019635,-0.059141, + -0.005930,0.069199,-0.013126, + -0.119333,-0.007972,0.119489, + 0.033072,0.081756,-0.034481, + -0.108282,-0.065310,0.146009, + 0.080950,0.111320,0.004291, + 0.071208,-0.112941,0.028135, + -0.024632,0.190525,-0.285626, + -0.105040,0.044008,0.020236, + -0.017815,-0.076684,-0.065840, + 0.083563,0.100873,-0.141154, + -0.062066,-0.010894,0.066110, + -0.056763,0.024777,-0.176209, + -0.014442,0.052861,0.013010, + -0.157546,-0.118279,-0.237648, + -0.234497,-0.158049,0.102635, + 0.061685,-0.052695,-0.042243, + 0.093961,-0.025060,0.046602, + 0.004395,0.150912,0.191784, + 0.067299,-0.059575,0.161018, + -0.233155,-0.109721,0.194653, + 0.217444,0.221231,-0.201241, + -0.033689,-0.341937,-0.099231, + 0.042771,-0.028862,0.067736, + 0.110240,0.274029,-0.157689, + -0.055994,0.144729,0.090901, + 0.211192,0.058165,-0.149872, + 0.102735,-0.044061,-0.044795, + -0.042153,-0.010955,0.014341, + -0.011649,0.099072,-0.086419, + -0.018920,0.000640,-0.031729, + -0.216886,-0.057512,0.071195, + -0.188150,0.049292,0.258489, + -0.023494,0.021489,0.199785, + -0.045818,0.066753,-0.035593, + 0.010986,0.166767,0.275085, + -0.177039,0.010372,0.167936, + -0.423239,0.027466,-0.126114, + -0.102035,0.282640,0.022622, + -0.023997,0.176943,0.093272, + -0.090009,0.015338,0.250857, + 0.011095,0.006703,0.057076, + 0.133423,0.234639,-0.070260, + -0.295994,0.185615,0.117148, + 0.235480,0.066195,0.078641, + -0.026545,0.093931,0.008019, + 0.181656,-0.088719,0.045959, + -0.076308,-0.164584,0.018271, + 0.092026,0.201866,-0.106051, + 0.019876,0.050967,0.176081, + -0.018546,0.138749,-0.008255, + -0.026049,-0.068465,-0.055467, + -0.260245,0.221833,-0.048541, + -0.169783,0.354992,-0.017943, + -0.306063,0.074787,0.101971, + 0.215973,0.107558,-0.008808, + 0.390235,-0.275652,-0.117085, + 0.033898,0.046047,-0.108977, + -0.263507,-0.091765,-0.250234, + -0.044613,0.149563,0.027937, + -0.015397,-0.040254,0.065692, + -0.017531,-0.013504,0.004021, + 0.054665,-0.018996,-0.006954, + 0.033068,0.219349,-0.194079, + -0.057780,0.011881,0.084904, + 0.139243,-0.109890,0.039145, + 0.223272,0.208110,0.165882, + -0.008046,0.103847,0.278718, + -0.035499,0.112662,-0.088418, + -0.053118,0.053871,-0.054706, + 0.118632,0.086431,-0.022494, + 0.014943,0.039622,0.047307, + 0.006570,0.093461,0.058982, + 0.031448,0.325716,-0.047305, + -0.193710,0.087226,0.051790, + 0.116154,-0.080023,-0.106643, + 0.156514,-0.222710,0.275425, + -0.084294,-0.101851,0.425222, + 0.030344,-0.141370,-0.282460, + 0.003022,0.108996,-0.229152, + -0.133040,0.061025,-0.128942, + -0.077348,0.013363,-0.072511, + -0.050317,0.452190,0.094114, + 0.053309,-0.143722,0.249884, + -0.257016,0.100544,0.012236, + -0.022056,-0.212133,0.023533, + 0.153299,0.031763,0.034577, + 0.161729,0.084914,0.050770, + 0.320438,0.112175,0.135015, + -0.040717,0.073400,0.080543, + -0.226004,0.143154,0.170139, + 0.009756,0.068337,0.132111, + 0.380191,0.233715,0.026664, + -0.018016,0.265426,-0.110691, + 0.041281,0.056674,-0.119834, + 0.170794,-0.112611,0.094839, + 0.216318,0.002081,0.154653, + -0.036815,0.024332,0.172587, + -0.064554,0.160699,0.101229, + 0.114451,0.016039,0.293489, + 0.023010,-0.028932,0.014800, + -0.290527,0.172553,0.129526, + -0.048159,-0.181222,0.305871, + 0.065351,-0.399962,-0.030479, + 0.334123,-0.120149,0.241310, + -0.203728,-0.155627,0.140805, + 0.061022,-0.016097,0.131688, + 0.045050,-0.313782,-0.279077, + 0.034252,-0.135512,-0.087765, + 0.276236,0.036449,0.418332, + -0.122146,0.050998,0.131453, + -0.087629,0.330142,0.061353, + 0.228676,0.093309,-0.009307, + 0.435264,0.186185,-0.127484, + 0.156565,0.013842,-0.103874, + -0.274053,-0.084119,0.096687, + -0.027947,-0.051152,-0.078997, + 0.013399,0.194440,0.072030, + 0.000082,0.130666,0.052218, + 0.064984,-0.136859,0.092204, + 0.109060,0.424779,-0.111867, + 0.061748,0.160827,-0.068538, + 0.062960,0.059638,-0.181514, + 0.018961,0.072298,0.003517, + -0.099508,-0.225455,-0.021791, + 0.001955,-0.320555,0.159506, + -0.057735,-0.054327,-0.095525, + 0.319748,-0.146158,-0.198384, + -0.158741,-0.265443,0.036635, + -0.093089,-0.358379,-0.110549, + -0.049805,0.022246,-0.036724, + 0.223000,0.247522,-0.232652, + -0.249441,-0.248325,-0.071169, + 0.000369,0.094598,-0.162153, + -0.133873,-0.188473,0.272734, + 0.046594,0.069766,0.015561, + 0.111582,-0.239786,0.034658, + 0.093232,0.183507,-0.011298, + -0.226805,0.514871,-0.064144, + 0.085949,0.031412,0.042790, + -0.043755,-0.290797,-0.159142, + 0.056671,0.167837,0.016536, + -0.034538,0.072185,0.066973, + -0.021211,0.064120,-0.174756, + 0.090627,-0.055253,0.109457, + 0.019686,0.004469,-0.096316, + -0.038864,-0.135083,0.244529, + 0.034613,-0.069587,0.144533, + -0.100009,-0.057516,-0.079338, + -0.178026,0.085994,0.061804, + -0.189256,0.342739,0.043372, + -0.046206,0.168946,-0.133904, + 0.015314,-0.090127,-0.058530, + 0.169657,-0.097086,0.013746, + 0.185131,-0.089445,0.347806, + -0.264432,-0.170170,-0.335858, + -0.086511,0.248252,-0.169698, + 0.002287,-0.028338,-0.266432, + -0.085060,0.001974,-0.032789, + 0.192750,-0.007081,0.098197, + 0.012577,0.034983,-0.003058, + -0.039249,0.038498,0.067306, + 0.021988,0.379705,-0.054619, + -0.151707,0.051034,-0.016003, + -0.057048,0.075729,-0.213397, + -0.137847,0.130600,0.046198, + 0.024786,0.049556,-0.045772, + -0.082533,0.155397,-0.096145, + 0.049152,0.270979,-0.147022, + 0.061153,-0.104531,-0.103623, + -0.142997,-0.232885,0.040538, + 0.048806,-0.013095,-0.003505, + -0.095063,0.241414,-0.202255, + 0.108558,-0.147584,0.162682, + 0.217105,0.252340,-0.114830, + -0.188028,0.417252,-0.077456, + -0.112855,0.105192,0.073968, + -0.186972,0.164022,-0.073415, + -0.074349,-0.324874,-0.056645, + 0.327855,-0.271424,-0.141142, + 0.151049,0.155239,-0.083116, + 0.035395,-0.133176,-0.095112, + 0.127283,-0.011837,0.199750, + -0.120775,0.103698,0.063302, + 0.014222,0.198468,0.137537, + -0.269656,0.120644,-0.153958, + -0.136743,-0.119817,-0.073747, + -0.068156,-0.138484,0.033507, + -0.106835,0.114964,0.023924, + -0.222525,0.330321,-0.007431, + -0.011739,0.095156,0.139086, + 0.146766,0.037685,0.136122, + -0.086532,-0.081295,0.009434, + 0.189439,0.290592,-0.048317, + 0.139152,0.224931,0.355509, + 0.017162,-0.016825,0.094198, + -0.237595,0.205475,-0.041412, + 0.050511,0.094900,0.252891, + -0.012538,-0.014082,0.064629, + -0.059810,0.020665,-0.260979, + 0.073490,-0.242270,0.085847, + 0.049499,-0.045617,-0.015894, + -0.121040,0.004350,0.381603, + -0.062798,0.055006,0.077472, + -0.156846,-0.033342,0.035284, + 0.105383,0.002776,-0.046394, + 0.247612,0.310528,0.046188, + -0.144567,-0.197996,0.083309, + -0.317845,-0.014793,-0.041608, + -0.169858,0.102631,0.283962, + -0.168757,0.093105,0.050325, + -0.013639,0.285100,0.047089, + 0.216644,0.102018,0.031983, + 0.046988,0.081482,0.021865, + 0.124995,-0.193086,0.127870, + 0.009153,0.178713,-0.077949, + -0.235371,-0.046817,-0.125764, + -0.089381,0.289172,-0.129356, + 0.312993,0.120426,0.296957, + -0.106431,0.117096,0.156971, + 0.030001,0.244577,0.085119, + 0.002958,-0.035469,-0.084615, + -0.052248,-0.004298,-0.129170, + -0.158458,0.059061,-0.041780, + -0.007117,-0.174211,0.098819, + -0.158387,0.060840,-0.064818, + 0.117241,-0.050754,-0.027945, + -0.014301,0.146402,-0.118414, + 0.186611,-0.162182,-0.150909, + -0.106992,0.286109,-0.055512, + 0.109689,-0.346409,0.072611, + -0.009694,-0.038102,0.098565, + -0.034598,0.323300,0.020962, + -0.149219,0.040596,-0.114206, + 0.164744,0.048081,0.105464, + 0.036214,0.099523,0.038595, + 0.056537,0.036271,0.003042, + -0.157110,0.001614,-0.133994, + -0.104357,-0.032004,0.262334, + 0.041215,-0.010418,-0.037968, + 0.223491,-0.387946,0.117291, + -0.344434,0.110318,-0.031448, + 0.123562,-0.315729,0.164533, + 0.008207,0.042004,0.050014, + -0.191339,-0.069291,-0.220065, + 0.023845,0.009474,0.035598, + -0.173295,-0.036604,-0.193323, + -0.040347,-0.106063,-0.055559, + -0.071543,0.136487,0.105697, + -0.179027,-0.071852,0.117512, + 0.064769,-0.345895,0.012833, + 0.044800,-0.032357,-0.042161, + 0.243586,0.392499,-0.180641, + -0.148924,-0.181446,0.146644, + -0.042773,0.045843,-0.176893, + 0.025938,0.058109,0.242063, + -0.028489,-0.024828,0.161289, + 0.073899,-0.081205,-0.023751, + 0.026149,0.051399,-0.072348, + 0.024308,-0.041819,-0.030578, + -0.077778,0.010272,0.066967, + -0.139184,-0.018983,0.035150, + -0.061359,-0.152358,-0.072849, + 0.043101,0.028278,0.077387, + 0.065599,-0.049676,0.043708, + -0.255767,0.023510,-0.076982, + 0.020468,-0.040630,0.208424, + 0.044922,0.025184,0.004764, + 0.107432,-0.009356,0.239863, + -0.005475,0.158400,0.089743, + 0.018352,0.134559,0.221650, + 0.094423,0.129390,-0.031274, + 0.048541,0.100595,-0.155938, + -0.016298,-0.036518,-0.149178, + -0.329953,-0.327602,-0.150086, + 0.148403,-0.363334,0.028237, + -0.305790,-0.009844,-0.075571, + -0.045131,0.152595,0.228720, + 0.039725,-0.127469,0.066522, + -0.078576,-0.349749,-0.146881, + 0.013160,-0.040312,0.129980, + 0.221142,-0.106068,0.254967, + 0.180912,-0.207357,-0.196999, + 0.098219,0.085231,0.121963, +}; +static const struct gllist frame={GL_V3F,GL_POINTS,500,data,NULL}; +const struct gllist *s1_b=&frame; diff --git a/hacks/glx/sballs.c b/hacks/glx/sballs.c new file mode 100644 index 0000000..6cd95f5 --- /dev/null +++ b/hacks/glx/sballs.c @@ -0,0 +1,823 @@ +/* sballs --- balls spinning like crazy in GL */ + +#if 0 +static const char sccsid[] = "@(#)sballs.c 5.02 2001/03/10 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 2001. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by + * Mustata Bogdan (LoneRunner) + * and can be found at http://www.cfxweb.net/lonerunner/ + * + * Eric Lassauge (November-07-2000) + * http://lassauge.free.fr/linux.html + * + * REVISION HISTORY: + * + * E.Lassauge - 03-Oct-2001: + * - minor bugfixes - get ready for xscreensaver + * E.Lassauge - 09-Mar-2001: + * - get rid of my framerate options to use showfps + * E.Lassauge - 28-Nov-2000: + * - add handling of polyhedrons (like in ico) + * - modified release part to add freeing of GL objects + * E.Lassauge - 14-Nov-2000: + * - use new common xpm_to_ximage function + * + */ + +#ifdef STANDALONE /* xscreensaver mode */ +#define DEFAULTS "*delay: 30000 \n" \ + "*size: 0 \n" \ + "*cycles: 4 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define release_sballs 0 +#define MODE_sballs +#include "xlockmore.h" /* from the xscreensaver distribution */ +#include "gltrackball.h" +#else /* !STANDALONE */ +#include "xlock.h" /* from the xlockmore distribution */ +#include "visgl.h" +#endif /* !STANDALONE */ + +#define MINSIZE 32 /* minimal viewport size */ +#define FRAME 50 /* frame count interval */ +#define MAX_OBJ 8 /* number of 3D objects */ + +#if defined( USE_XPM ) || defined( USE_XPMINC ) || defined( STANDALONE ) +/* USE_XPM & USE_XPMINC in xlock mode ; HAVE_XPM in xscreensaver mode */ +# include "ximage-loader.h" +# define I_HAVE_XPM + +# include "images/gen/sball_png.h" +# include "images/gen/sball-bg_png.h" + +/* Manage option vars */ +#define DEF_TEXTURE "True" +#define DEF_OBJECT "0" +static Bool do_texture; +static int object, object_arg; +static int spheres; + +static XrmOptionDescRec opts[] = { + {"-texture", ".sballs.texture", XrmoptionNoArg, "on"}, + {"+texture", ".sballs.texture", XrmoptionNoArg, "off"}, + {"-object", ".sballs.object", XrmoptionSepArg, 0}, + +}; + +static argtype vars[] = { + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&object_arg, "object", "Object", DEF_OBJECT, t_Int}, + +}; + +static OptionStruct desc[] = { + /*{"-count spheres", "set number of spheres"},*/ + /*{"-cycles speed", "set ball speed value"},*/ + {"-/+texture", "turn on/off texturing"}, + {"-object num", "number of the 3D object (0 means random)"}, +}; + +ENTRYPOINT ModeSpecOpt sballs_opts = + { sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc }; + +#ifdef USE_MODULES +ModStruct sballs_description = + { "sballs", "init_sballs", "draw_sballs", NULL, + "draw_sballs", "change_sballs", "free_sballs", &sballs_opts, + /* + delay,count,cycles,size,ncolors,sat + */ + 10000, 0, 10, 400, 64, 1.0, "", + "balls spinning like crazy in GL", 0, NULL +}; +#endif /* USE_MODULES */ + +/* misc types and defines */ +#define vinit(a,i,j,k) {\ + (a)[0]=i;\ + (a)[1]=j;\ + (a)[2]=k;\ +} +typedef float vec_t; +typedef vec_t vec3_t[3]; + +#define MAX_BALLS 20 + +/* the mode struct, contains all per screen variables */ +typedef struct { + GLint WIDTH, HEIGHT; /* display dimensions */ + GLXContext *glx_context; + + + XImage *btexture; /* back texture image bits */ + XImage *ftexture; /* face texture image bits */ + GLuint backid; /* back texture id: GL world */ + GLuint faceid; /* face texture id: GL world */ + + vec3_t eye; + vec3_t rotm; + int speed; + float radius[MAX_BALLS]; + + trackball_state *trackball; + Bool button_down_p; + +} sballsstruct; + +/* array of sballsstruct indexed by screen number */ +static sballsstruct *sballs = (sballsstruct *) NULL; + +/* lights */ +static const float LightAmbient[]= { 1.0f, 1.0f, 1.0f, 1.0f }; +static const float LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; +static const float LightPosition[]= { 0.0f, 0.0f, 4.0f, 1.0f }; + +/* structure of the polyhedras */ +typedef struct { + const char *longname; /* long name of object */ + const char *shortname; /* short name of object */ + int numverts; /* number of vertices */ + float radius; /* radius */ + vec3_t v[MAX_BALLS];/* the vertices */ +} Polyinfo; + +static const Polyinfo polygons[] = +{ + +/* 0: objtetra - structure values for tetrahedron */ + { + "tetrahedron", "tetra", /* long and short names */ + 4, /* number of vertices */ + 0.8, + { /* vertices (x,y,z) */ + /* all points must be within radius 2 of the origin */ +#define T 1.0 + {T, T, T}, + {T, -T, -T}, + {-T, T, -T}, + {-T, -T, T}, +#undef T + } + }, + +/* 1: objcube - structure values for cube */ + + { + "hexahedron", "cube", /* long and short names */ + 8, /* number of vertices, edges, and faces */ + 0.6, + { /* vertices (x,y,z) */ + /* all points must be within radius 2 of the origin */ +#define T 1.0 + {T, T, T}, + {T, T, -T}, + {T, -T, -T}, + {T, -T, T}, + {-T, T, T}, + {-T, T, -T}, + {-T, -T, -T}, + {-T, -T, T}, +#undef T + } + }, + +/* 2: objocta - structure values for octahedron */ + + { + "octahedron", "octa", /* long and short names */ + 6, /* number of vertices */ + 0.6, + { /* vertices (x,y,z) */ + /* all points must be within radius 2 of the origin */ +#define T 1.5 + {T, 0, 0}, + {-T, 0, 0}, + {0, T, 0}, + {0, -T, 0}, + {0, 0, T}, + {0, 0, -T}, +#undef T + } + }, +/* 3: objdodec - structure values for dodecahedron */ + + { + "dodecahedron", "dodeca", /* long and short names */ + 20, /* number of vertices */ + 0.35, + { /* vertices (x,y,z) */ + /* all points must be within radius 2 of the origin */ + {0.000000, 0.500000, 1.000000}, + {0.000000, -0.500000, 1.000000}, + {0.000000, -0.500000, -1.000000}, + {0.000000, 0.500000, -1.000000}, + {1.000000, 0.000000, 0.500000}, + {-1.000000, 0.000000, 0.500000}, + {-1.000000, 0.000000, -0.500000}, + {1.000000, 0.000000, -0.500000}, + {0.500000, 1.000000, 0.000000}, + {-0.500000, 1.000000, 0.000000}, + {-0.500000, -1.000000, 0.000000}, + {0.500000, -1.000000, 0.000000}, + {0.750000, 0.750000, 0.750000}, + {-0.750000, 0.750000, 0.750000}, + {-0.750000, -0.750000, 0.750000}, + {0.750000, -0.750000, 0.750000}, + {0.750000, -0.750000, -0.750000}, + {0.750000, 0.750000, -0.750000}, + {-0.750000, 0.750000, -0.750000}, + {-0.750000, -0.750000, -0.750000}, + } + }, + +/* 4: objicosa - structure values for icosahedron */ + + { + "icosahedron", "icosa", /* long and short names */ + 12, /* number of vertices */ + 0.4, + { /* vertices (x,y,z) */ + /* all points must be within radius 2 of the origin */ + {0.00000000, 0.00000000, -0.95105650}, + {0.00000000, 0.85065080, -0.42532537}, + {0.80901698, 0.26286556, -0.42532537}, + {0.50000000, -0.68819095, -0.42532537}, + {-0.50000000, -0.68819095, -0.42532537}, + {-0.80901698, 0.26286556, -0.42532537}, + {0.50000000, 0.68819095, 0.42532537}, + {0.80901698, -0.26286556, 0.42532537}, + {0.00000000, -0.85065080, 0.42532537}, + {-0.80901698, -0.26286556, 0.42532537}, + {-0.50000000, 0.68819095, 0.42532537}, + {0.00000000, 0.00000000, 0.95105650} + } + }, + +/* 5: objplane - structure values for plane */ + + { + "plane", "plane", /* long and short names */ + 4, /* number of vertices */ + 0.7, + { /* vertices (x,y,z) */ + /* all points must be within radius 2 of the origin */ +#define T 1.1 + {T, 0, 0}, + {-T, 0, 0}, + {0, T, 0}, + {0, -T, 0}, +#undef T + } + }, + +/* 6: objpyr - structure values for pyramid */ + + { + "pyramid", "pyramid", /* long and short names */ + 5, /* number of vertices */ + 0.5, + { /* vertices (x,y,z) */ + /* all points must be within radius 1 of the origin */ +#define T 1.0 + {T, 0, 0}, + {-T, 0, 0}, + {0, T, 0}, + {0, -T, 0}, + {0, 0, T}, +#undef T + } + }, + +/* 7: objstar - structure values for octahedron star (stellated octahedron?) */ + { + "star", "star", /* long and short names */ + 8, /* number of vertices */ + 0.7, + { /* vertices (x,y,z) */ + /* all points must be within radius 1 of the origin */ +#define T 0.9 + {T, T, T}, + {T, -T, -T}, + {-T, T, -T}, + {-T, -T, T}, + {-T, -T, -T}, + {-T, T, T}, + {T, -T, T}, + {T, T, -T}, +#undef T + } + }, + +}; + + + + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Misc funcs. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + + +/* initialise textures */ +static void inittextures(ModeInfo * mi) +{ + sballsstruct *sb = &sballs[MI_SCREEN(mi)]; + +#if defined( I_HAVE_XPM ) + if (do_texture) { + + glGenTextures(1, &sb->backid); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D, sb->backid); +#endif /* HAVE_GLBINDTEXTURE */ + + sb->btexture = image_data_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi), + sball_bg_png, + sizeof(sball_bg_png)); + if (!(sb->btexture)) { + (void) fprintf(stderr, "Error reading the background texture.\n"); + glDeleteTextures(1, &sb->backid); + do_texture = False; + sb->faceid = 0; /* default textures */ + sb->backid = 0; + return; + } + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + sb->btexture->width, sb->btexture->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, sb->btexture->data); + check_gl_error("texture"); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + +/* + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + Let's pixellate it instead: +*/ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + glGenTextures(1, &sb->faceid); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D, sb->faceid); +#endif /* HAVE_GLBINDTEXTURE */ + + sb->ftexture = image_data_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi), + sball_png, sizeof(sball_png)); + if (!(sb->ftexture)) { + (void) fprintf(stderr, "Error reading the face texture.\n"); + glDeleteTextures(1, &sb->faceid); + sb->faceid = 0; + return; + } + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + sb->ftexture->width, sb->ftexture->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, sb->ftexture->data); + check_gl_error("texture"); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + +/* + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + Let's pixellate it instead: +*/ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + } + else + { + sb->faceid = 0; /* default textures */ + sb->backid = 0; + } +#else /* !I_HAVE_XPM */ + do_texture = False; + sb->faceid = 0; /* default textures */ + sb->backid = 0; +#endif /* !I_HAVE_XPM */ +} + +static void drawSphere(ModeInfo * mi,int sphere_num) +{ + sballsstruct *sb = &sballs[MI_SCREEN(mi)]; + float x = polygons[object].v[sphere_num][0]; + float y = polygons[object].v[sphere_num][1]; + float z = polygons[object].v[sphere_num][2]; + int numMajor = 15; + int numMinor = 30; + float radius = sb->radius[sphere_num]; + double majorStep = (M_PI / numMajor); + double minorStep = (2.0 * M_PI / numMinor); + int i, j; + + glPushMatrix(); + glTranslatef(x, y, z); + + glColor4f(1, 1, 1, 1); + for (i = 0; i < numMajor; ++i) + { + double a = i * majorStep; + double b = a + majorStep; + double r0 = radius * sin(a); + double r1 = radius * sin(b); + GLfloat z0 = radius * cos(a); + GLfloat z1 = radius * cos(b); + + glBegin(MI_IS_WIREFRAME(mi) ? GL_LINE_STRIP: GL_TRIANGLE_STRIP); + for (j = 0; j <= numMinor; ++j) + { + double c = j * minorStep; + GLfloat x = cos(c); + GLfloat y = sin(c); + + glNormal3f((x * r0) / radius, (y * r0) / radius, z0 / radius); + glTexCoord2f(j / (GLfloat) numMinor, i / (GLfloat) numMajor); + glVertex3f(x * r0, y * r0, z0); + + glNormal3f((x * r1) / radius, (y * r1) / radius, z1 / radius); + glTexCoord2f(j / (GLfloat) numMinor, (i + 1) / (GLfloat) numMajor); + glVertex3f(x * r1, y * r1, z1); + + mi->polygon_count++; + } + glEnd(); + } + + glPopMatrix(); +} + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * GL funcs. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +#ifndef STANDALONE +static void Reshape(ModeInfo * mi) +#else +ENTRYPOINT void reshape_sballs(ModeInfo * mi, int width, int height) +#endif +{ + + sballsstruct *sb = &sballs[MI_SCREEN(mi)]; + int size = MI_SIZE(mi); + + /* Viewport is specified size if size >= MINSIZE && size < screensize */ + if (size <= 1) { + sb->WIDTH = MI_WIDTH(mi); + sb->HEIGHT = MI_HEIGHT(mi); + } else if (size < MINSIZE) { + sb->WIDTH = MINSIZE; + sb->HEIGHT = MINSIZE; + } else { + sb->WIDTH = (size > MI_WIDTH(mi)) ? MI_WIDTH(mi) : size; + sb->HEIGHT = (size > MI_HEIGHT(mi)) ? MI_HEIGHT(mi) : size; + } + + if (width > height * 5) { /* tiny window: show middle */ + sb->WIDTH = width; + sb->HEIGHT = sb->WIDTH*0.75; + } + + glViewport((MI_WIDTH(mi) - sb->WIDTH) / 2, (MI_HEIGHT(mi) - sb->HEIGHT) / 2, sb->WIDTH, sb->HEIGHT); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(55.0, (float)sb->WIDTH / (float) sb->HEIGHT, 1.0, 300.0); + + glMatrixMode(GL_MODELVIEW); + +} + +static void Draw(ModeInfo * mi) +{ + sballsstruct *sb = &sballs[MI_SCREEN(mi)]; + int sphere; + + mi->polygon_count = 0; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glEnable(GL_DEPTH_TEST); + + /* move eyes */ + glTranslatef (-sb->eye[0], -sb->eye[1], -sb->eye[2]); + + /* draw background */ + if (do_texture) + { + glEnable(GL_LIGHTING); + glEnable(GL_TEXTURE_2D); + glColor3f(1, 1, 1); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D, sb->backid); +#endif /* HAVE_GLBINDTEXTURE */ + } + else + { + glColor3f(0, 0, 0); + } + glBegin(GL_QUAD_STRIP); +#ifndef HAVE_MOBILE + /* Letterbox the background image */ + glNormal3f(0, 0, 1); glTexCoord2f(0,0); glVertex3f(8, 4.1, -4); + glNormal3f(0, 0, 1); glTexCoord2f(0,1); glVertex3f(8, -4.1, -4); + glNormal3f(0, 0, 1); glTexCoord2f(1,0); glVertex3f(-8, 4.1, -4); + glNormal3f(0, 0, 1); glTexCoord2f(1,1); glVertex3f(-8, -4.1, -4); +#else + /* Fill the iPhone screen. Letterboxing looks dumb there. */ + glNormal3f(0, 0, 1); glTexCoord2f(0,0); glVertex3f(4, 5.2, -4); + glNormal3f(0, 0, 1); glTexCoord2f(0,1); glVertex3f(4, -5.2, -4); + glNormal3f(0, 0, 1); glTexCoord2f(1,0); glVertex3f(-4, 5.2, -4); + glNormal3f(0, 0, 1); glTexCoord2f(1,1); glVertex3f(-4, -5.2, -4); +#endif + glEnd(); + mi->polygon_count++; + + gltrackball_rotate (sb->trackball); + + /* rotate the balls */ + glRotatef(sb->rotm[0], 1.0f, 0.0f, 0.0f); + glRotatef(sb->rotm[1], 0.0f, 1.0f, 0.0f); + glRotatef(sb->rotm[2], 0.0f, 0.0f, 1.0f); + + if (! sb->button_down_p) { + sb->rotm[0] += sb->speed; + sb->rotm[1] += -(sb->speed); + sb->rotm[2] += 0; + } + + /* draw the balls */ + if (do_texture) +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D, sb->faceid); + else +#endif /* HAVE_GLBINDTEXTURE */ + glEnable(GL_LIGHTING); + for (sphere=0;spherebtexture = (XImage*) NULL; + sb->ftexture = (XImage*) NULL; + } + + vinit(sb->eye ,0.0f, 0.0f, 6.0f); + vinit(sb->rotm ,0.0f, 0.0f, 0.0f); + sb->speed = MI_CYCLES(mi); + + /* initialise object number */ + object = object_arg-1; + if (object < 0 || object >= MAX_OBJ) + object = NRAND(MAX_OBJ); + + /* initialise sphere number */ + spheres = MI_COUNT(mi); + if (MI_COUNT(mi) > polygons[object].numverts) + spheres = polygons[object].numverts; + if (MI_COUNT(mi) < 1) + spheres = polygons[object].numverts; + /* initialise sphere radius */ + for(i=0; i < spheres;i++) + { +#if RANDOM_RADIUS + sb->radius[i] = ((float) LRAND() / (float) MAXRAND); + if (sb->radius[i] < 0.3) + sb->radius[i] = 0.3; + if (sb->radius[i] > 0.7) + sb->radius[i] = 0.7; +#else + sb->radius[i] = polygons[object].radius; +#endif + } + + if (MI_IS_DEBUG(mi)) { + (void) fprintf(stderr, + "%s:\n\tobject=%s\n\tspheres=%d\n\tspeed=%d\n\ttexture=%s\n", + MI_NAME(mi), + polygons[object].shortname, + spheres, + (int) MI_CYCLES(mi), + do_texture ? "on" : "off" + ); + } + + glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); + glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); + glEnable(GL_LIGHT1); +} + +/* + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + * Xlock hooks. + *----------------------------------------------------------------------------- + *----------------------------------------------------------------------------- + */ + +/* + *----------------------------------------------------------------------------- + * Initialize sballs. Called each time the window changes. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void init_sballs(ModeInfo * mi) +{ + sballsstruct *sb; + + MI_INIT(mi, sballs); + sb = &sballs[MI_SCREEN(mi)]; + + sb->trackball = gltrackball_init (True); + + if ((sb->glx_context = init_GL(mi)) != NULL) { + +#ifndef STANDALONE + Reshape(mi); /* xlock mode */ +#else + reshape_sballs(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); /* xscreensaver mode */ +#endif + glDrawBuffer(GL_BACK); + Init(mi); + + } else { + MI_CLEARWINDOW(mi); + } +} + +/* + *----------------------------------------------------------------------------- + * Called by the mainline code periodically to update the display. + *----------------------------------------------------------------------------- + */ +ENTRYPOINT void draw_sballs(ModeInfo * mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + sballsstruct *sb; + + if (sballs == NULL) + return; + sb = &sballs[MI_SCREEN(mi)]; + + MI_IS_DRAWN(mi) = True; + if (!sb->glx_context) + return; + + glXMakeCurrent(display, window, *(sb->glx_context)); + Draw(mi); +#ifndef STANDALONE + Reshape(mi); /* xlock mode */ +#else + reshape_sballs(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); /* xscreensaver mode */ +#endif + + glFinish(); + glXSwapBuffers(display, window); +} + + +/* + *----------------------------------------------------------------------------- + * The display is being taken away from us. Free up malloc'ed + * memory and X resources that we've alloc'ed. + *----------------------------------------------------------------------------- + */ + +ENTRYPOINT void free_sballs(ModeInfo * mi) +{ + sballsstruct *sb = &sballs[MI_SCREEN(mi)]; + if (sb->glx_context) + { + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sb->glx_context)); + if (sb->btexture) + { + glDeleteTextures(1,&sb->backid); + XDestroyImage(sb->btexture); + sb->btexture = 0; + } + if (sb->ftexture) + { + glDeleteTextures(1,&sb->faceid); + XDestroyImage(sb->ftexture); + sb->ftexture = 0; + } + } +} + +ENTRYPOINT Bool +sballs_handle_event (ModeInfo *mi, XEvent *event) +{ + sballsstruct *sb = &sballs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, sb->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &sb->button_down_p)) + return True; + + return False; +} + + +#ifndef STANDALONE +ENTRYPOINT void change_sballs(ModeInfo * mi) +{ + sballsstruct *sb; + + if (sballs == NULL) + return; + sb = &sballs[MI_SCREEN(mi)]; + + if (!sb->glx_context) + return; + + /* initialise object number */ + if ((object == 0) || (object > MAX_OBJ)) + object = NRAND(MAX_OBJ-1)+1; + object--; + + /* correct sphere number */ + spheres = MI_COUNT(mi); + if (MI_COUNT(mi) > polygons[object].numverts) + spheres = polygons[object].numverts; + if (MI_COUNT(mi) < 1) + spheres = polygons[object].numverts; + + if (MI_IS_DEBUG(mi)) { + (void) fprintf(stderr, + "%s:\n\tobject=%s\n\tspheres=%d\n\tspeed=%d\n\ttexture=%s\n", + MI_NAME(mi), + polygons[object].shortname, + spheres, + (int) MI_CYCLES(mi), + do_texture ? "on" : "off" + ); + } + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sb->glx_context)); + +} +#endif /* !STANDALONE */ + +XSCREENSAVER_MODULE ("SBalls", sballs) + +#endif /* MODE_sballs */ diff --git a/hacks/glx/sballs.man b/hacks/glx/sballs.man new file mode 100644 index 0000000..33cb942 --- /dev/null +++ b/hacks/glx/sballs.man @@ -0,0 +1,125 @@ +.de EX \"Begin example +.ne 5 +.if n .sp 1 +.if t .sp .5 +.nf +.in +.5i +.. +.de EE +.fi +.in -.5i +.if n .sp 1 +.if t .sp .5 +.. +.TH XScreenSaver 1 "03-Oct-01" "X Version 11" +.SH NAME +sballs - draws balls spinning like crazy in GL +.SH SYNOPSIS +.B sballs +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] +[\-object \fIobject_number\fP] +[\-cycles \fIsphere_speed\fP] +[\-size \fIviewport_size\fP] +[\-texture] [\-no-texture] +[\-wireframe] [\-no-wireframe] +[\-trackmouse] [\-no-trackmouse] +[\-fps] +.SH DESCRIPTION +The \fIsballs\fP program draws an animation of balls spinning like crazy in GL. +.SH OPTIONS +.I sballs +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-object \fIobject_number\fP\fP +Specify how the spheres are grouped (forming an object). +Objects are: +.TP 10 +.B 1 +tetrahedron +.TP 10 +.B 2 +cube. This is the default. +.TP 10 +.B 3 +octahedron +.TP 10 +.B 4 +dodecahedron +.TP 10 +.B 5 +icosahedron +.TP 10 +.B 6 +plane +.TP 10 +.B 7 +pyramid +.TP 10 +.B 8 +star +.TP 8 +.B \-size \fIviewport_size\fP\fP +Viewport of GL scene is specified size if greater than 32 and less than screensize. Default value is 0, meaning full screensize. +.TP 8 +.B \-texture +Show a textured background and spheres. This is the default. +.TP 8 +.B \-no\-texture +Disables texturing the animation. +.TP 8 +.B \-trackmouse +Let the mouse be a joystick to change the view of the animation. +This implies +.I \-no\-wander. +.TP 8 +.B \-no\-trackmouse +Disables mouse tracking. This is the default. +.TP 8 +.B \-wire +Draw a wireframe rendition of the spheres. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2001 by Eric Lassauge. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +The original code for this mode was written by +Mustata Bogdan (LoneRunner) +and can be found at http://www.cfxweb.net/lonerunner/ + +.SH AUTHOR +Mustata Bogdan (LoneRunner) +Eric Lassauge diff --git a/hacks/glx/seccam.c b/hacks/glx/seccam.c new file mode 100644 index 0000000..a72dd1a --- /dev/null +++ b/hacks/glx/seccam.c @@ -0,0 +1,1388 @@ +/* Generated from "seccam.dxf" on 31-May-2017. + Smoothed vertex normals. + Components: body, cap, hinge, lens, pipe. + */ + +#include "gllist.h" + +static const float seccam_body_data[] = { + 0,0.894427,0.447214,-5,2.25,5, + 0,0.952226,0.305393,7.75,3,3.5, + 0,0.988273,0.152697,-5,3,3.5, + 0,0.952226,0.305393,7.75,3,3.5, + 0,0.894427,0.447214,-5,2.25,5, + 0,0.894427,0.447214,7.75,2.25,5, + 0,0.172669,-0.98498,7.75,2.450912,1.010298, + 0,0.083016,-0.996548,-5,2.36871,1, + 0,0.22073,-0.975335,-5,2.450912,1.010298, + 0,0.083016,-0.996548,-5,2.36871,1, + 0,0.172669,-0.98498,7.75,2.450912,1.010298, + 0,0.041508,-0.999138,7.75,2.36871,1, + 0,0.996548,-0.083016,-5,3,1.63129, + 0,0.98498,-0.172669,7.75,2.989702,1.549088, + 0,0.975335,-0.22073,-5,2.989702,1.549088, + 0,0.98498,-0.172669,7.75,2.989702,1.549088, + 0,0.996548,-0.083016,-5,3,1.63129, + 0,0.999138,-0.041508,7.75,3,1.63129, + 0,0.041508,-0.999138,7.75,2.36871,1, + 0,0,-1,-5,2.25,1, + 0,0.083016,-0.996548,-5,2.36871,1, + 0,0,-1,-5,2.25,1, + 0,0.041508,-0.999138,7.75,2.36871,1, + 0,0,-1,7.75,2.25,1, + 0,0.450399,-0.892827,7.75,2.640242,1.078314, + 0,0.361055,-0.932544,-5,2.548078,1.037344, + 0,0.49361,-0.869683,-5,2.640242,1.078314, + 0,0.361055,-0.932544,-5,2.548078,1.037344, + 0,0.450399,-0.892827,7.75,2.640242,1.078314, + 0,0.314923,-0.949117,7.75,2.548078,1.037344, + 0,0.869683,-0.49361,-5,2.921686,1.359758, + 0,0.817322,-0.576182,7.75,2.867672,1.274581, + 0,0.788104,-0.615542,-5,2.867672,1.274581, + 0,0.817322,-0.576182,7.75,2.867672,1.274581, + 0,0.869683,-0.49361,-5,2.921686,1.359758, + 0,0.892827,-0.450399,7.75,2.921686,1.359758, + 0,0,-1,7.75,2.25,1, + 0,0,-1,-5,0,1, + 0,0,-1,-5,2.25,1, + 0,0,-1,-5,0,1, + 0,0,-1,7.75,2.25,1, + 0,0,-1,7.75,0,1, + 0,0,1,7.75,0,5, + 0,0,1,-5,2.25,5, + 0,0,1,-5,0,5, + 0,0,1,-5,2.25,5, + 0,0,1,7.75,0,5, + 0,0,1,7.75,2.25,5, + 0,0.576182,-0.817322,7.75,2.725419,1.132328, + 0,0.49361,-0.869683,-5,2.640242,1.078314, + 0,0.615542,-0.788104,-5,2.725419,1.132328, + 0,0.49361,-0.869683,-5,2.640242,1.078314, + 0,0.576182,-0.817322,7.75,2.725419,1.132328, + 0,0.450399,-0.892827,7.75,2.640242,1.078314, + 0,1,0,-5,3,1.75, + 0,0.999138,-0.041508,7.75,3,1.63129, + 0,0.996548,-0.083016,-5,3,1.63129, + 0,0.999138,-0.041508,7.75,3,1.63129, + 0,1,0,-5,3,1.75, + 0,1,0,7.75,3,1.75, + 0,0.932544,-0.361055,-5,2.962656,1.451922, + 0,0.892827,-0.450399,7.75,2.921686,1.359758, + 0,0.869683,-0.49361,-5,2.921686,1.359758, + 0,0.892827,-0.450399,7.75,2.921686,1.359758, + 0,0.932544,-0.361055,-5,2.962656,1.451922, + 0,0.949117,-0.314923,7.75,2.962656,1.451922, + 0,0.788104,-0.615542,-5,2.867672,1.274581, + 0,0.707107,-0.707107,7.75,2.801777,1.198223, + 0,0.707107,-0.707107,-5,2.801777,1.198223, + 0,0.707107,-0.707107,7.75,2.801777,1.198223, + 0,0.788104,-0.615542,-5,2.867672,1.274581, + 0,0.817322,-0.576182,7.75,2.867672,1.274581, + 0,0.988273,0.152697,-5,3,3.5, + 0,1,0,7.75,3,1.75, + 0,1,0,-5,3,1.75, + 0,1,0,7.75,3,1.75, + 0,0.988273,0.152697,-5,3,3.5, + 0,0.952226,0.305393,7.75,3,3.5, + 0,0.975335,-0.22073,-5,2.989702,1.549088, + 0,0.949117,-0.314923,7.75,2.962656,1.451922, + 0,0.932544,-0.361055,-5,2.962656,1.451922, + 0,0.949117,-0.314923,7.75,2.962656,1.451922, + 0,0.975335,-0.22073,-5,2.989702,1.549088, + 0,0.98498,-0.172669,7.75,2.989702,1.549088, + 0,0.707107,-0.707107,7.75,2.801777,1.198223, + 0,0.615542,-0.788104,-5,2.725419,1.132328, + 0,0.707107,-0.707107,-5,2.801777,1.198223, + 0,0.615542,-0.788104,-5,2.725419,1.132328, + 0,0.707107,-0.707107,7.75,2.801777,1.198223, + 0,0.576182,-0.817322,7.75,2.725419,1.132328, + 0,0.314923,-0.949117,7.75,2.548078,1.037344, + 0,0.22073,-0.975335,-5,2.450912,1.010298, + 0,0.361055,-0.932544,-5,2.548078,1.037344, + 0,0.22073,-0.975335,-5,2.450912,1.010298, + 0,0.314923,-0.949117,7.75,2.548078,1.037344, + 0,0.172669,-0.98498,7.75,2.450912,1.010298, + 1,0,0,7.75,3.002239,1.649165, + 1,0,0,7.75,3,1.75, + 1,0,0,7.75,3,1.63129, + 1,0,0,7.75,2.36871,1, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,2.350835,0.997761, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,0,1.875, + 1,0,0,7.75,0,1, + 1,0,0,7.75,0,1.875, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,1.174754,1.875947, + 1,0,0,7.75,1.174754,1.875947, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,1.245773,1.89962, + 1,0,0,7.75,1.245773,1.89962, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,1.306225,1.943775, + 1,0,0,7.75,1.306225,1.943775, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,1.35038,2.004227, + 1,0,0,7.75,1.35038,2.004227, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,1.374053,2.075246, + 1,0,0,7.75,1.374053,2.075246, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,1.374053,3.924754, + 1,0,0,7.75,1.174754,4.124053, + 1,0,0,7.75,0,5, + 1,0,0,7.75,0,4.125, + 1,0,0,7.75,0,5, + 1,0,0,7.75,1.174754,4.124053, + 1,0,0,7.75,2.25,5, + 1,0,0,7.75,2.25,5, + 1,0,0,7.75,1.174754,4.124053, + 1,0,0,7.75,1.245773,4.10038, + 1,0,0,7.75,2.25,5, + 1,0,0,7.75,1.245773,4.10038, + 1,0,0,7.75,1.306225,4.056225, + 1,0,0,7.75,2.25,5, + 1,0,0,7.75,1.306225,4.056225, + 1,0,0,7.75,1.35038,3.995773, + 1,0,0,7.75,2.25,5, + 1,0,0,7.75,1.35038,3.995773, + 1,0,0,7.75,1.374053,3.924754, + 1,0,0,7.75,2.25,5, + 1,0,0,7.75,1.374053,3.924754, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,2.25,5, + 1,0,0,7.75,2.25,1, + 1,0,0,7.75,2.36871,1, + 1,0,0,7.75,2.25,5, + 1,0,0,7.75,2.36871,1, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.36871,1, + 1,0,0,7.75,2.450912,1.010298, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.450912,1.010298, + 1,0,0,7.75,2.548078,1.037344, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.548078,1.037344, + 1,0,0,7.75,2.640242,1.078314, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.640242,1.078314, + 1,0,0,7.75,2.725419,1.132328, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.725419,1.132328, + 1,0,0,7.75,2.801777,1.198223, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.801777,1.198223, + 1,0,0,7.75,2.867672,1.274581, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.867672,1.274581, + 1,0,0,7.75,2.921686,1.359758, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.921686,1.359758, + 1,0,0,7.75,2.962656,1.451922, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.962656,1.451922, + 1,0,0,7.75,2.989702,1.549088, + 1,0,0,7.75,3,3.5, + 1,0,0,7.75,2.989702,1.549088, + 1,0,0,7.75,3,1.63129, + 0.966335,0.244997,0.078574,7.75,3,3.5, + 0.555363,0.830891,-0.034519,7.75,3,1.63129, + 0.316228,0.948683,0,7.75,3,1.75, + 0,-0.976994,0.213265,7.75,1.374053,2.075246, + 0,-0.888698,0.458494,7.55,1.35038,2.004227, + 0,-0.888698,0.458494,7.75,1.35038,2.004227, + 0,-0.888698,0.458494,7.55,1.35038,2.004227, + 0,-0.976994,0.213265,7.75,1.374053,2.075246, + 0,-0.994299,0.106632,7.55,1.374053,2.075246, + 0,-0.000806,1,7.75,0,1.875, + 0,-0.10717,0.994241,7.55,1.174754,1.875947, + 0,-0.000806,1,7.55,0,1.875, + 0,-0.10717,0.994241,7.55,1.174754,1.875947, + 0,-0.000806,1,7.75,0,1.875, + 0,-0.213524,0.976938,7.75,1.174754,1.875947, + 0,-0.10717,-0.994241,7.75,1.174754,4.124053, + 0,-0.000806,-1,7.55,0,4.125, + 0,-0.213524,-0.976938,7.55,1.174754,4.124053, + 0,-0.000806,-1,7.55,0,4.125, + 0,-0.10717,-0.994241,7.75,1.174754,4.124053, + 0,-0.000806,-1,7.75,0,4.125, + 0,-0.411789,-0.911279,7.75,1.245773,4.10038, + 0,-0.213524,-0.976938,7.55,1.174754,4.124053, + 0,-0.503965,-0.863724,7.55,1.245773,4.10038, + 0,-0.213524,-0.976938,7.55,1.174754,4.124053, + 0,-0.411789,-0.911279,7.75,1.245773,4.10038, + 0,-0.10717,-0.994241,7.75,1.174754,4.124053, + 0,-0.911279,-0.411789,7.75,1.35038,3.995773, + 0,-0.976994,-0.213265,7.55,1.374053,3.924754, + 0,-0.994299,-0.106632,7.75,1.374053,3.924754, + 0,-0.976994,-0.213265,7.55,1.374053,3.924754, + 0,-0.911279,-0.411789,7.75,1.35038,3.995773, + 0,-0.863724,-0.503965,7.55,1.35038,3.995773, + 0,-0.742826,0.669484,7.75,1.306225,1.943775, + 0,-0.888698,0.458494,7.55,1.35038,2.004227, + 0,-0.669484,0.742826,7.55,1.306225,1.943775, + 0,-0.888698,0.458494,7.55,1.35038,2.004227, + 0,-0.742826,0.669484,7.75,1.306225,1.943775, + 0,-0.888698,0.458494,7.75,1.35038,2.004227, + 0,-0.707107,-0.707107,7.75,1.306225,4.056225, + 0,-0.503965,-0.863724,7.55,1.245773,4.10038, + 0,-0.707107,-0.707107,7.55,1.306225,4.056225, + 0,-0.503965,-0.863724,7.55,1.245773,4.10038, + 0,-0.707107,-0.707107,7.75,1.306225,4.056225, + 0,-0.411789,-0.911279,7.75,1.245773,4.10038, + 0,-0.213524,0.976938,7.75,1.174754,1.875947, + 0,-0.411789,0.911279,7.55,1.245773,1.89962, + 0,-0.10717,0.994241,7.55,1.174754,1.875947, + 0,-0.411789,0.911279,7.55,1.245773,1.89962, + 0,-0.213524,0.976938,7.75,1.174754,1.875947, + 0,-0.503965,0.863724,7.75,1.245773,1.89962, + 0,-0.994299,-0.106632,7.75,1.374053,3.924754, + 0,-0.994299,0.106632,7.55,1.374053,2.075246, + 0,-0.976994,0.213265,7.75,1.374053,2.075246, + 0,-0.994299,0.106632,7.55,1.374053,2.075246, + 0,-0.994299,-0.106632,7.75,1.374053,3.924754, + 0,-0.976994,-0.213265,7.55,1.374053,3.924754, + 0,-0.503965,0.863724,7.75,1.245773,1.89962, + 0,-0.669484,0.742826,7.55,1.306225,1.943775, + 0,-0.411789,0.911279,7.55,1.245773,1.89962, + 0,-0.669484,0.742826,7.55,1.306225,1.943775, + 0,-0.503965,0.863724,7.75,1.245773,1.89962, + 0,-0.742826,0.669484,7.75,1.306225,1.943775, + 0,-0.707107,-0.707107,7.75,1.306225,4.056225, + 0,-0.863724,-0.503965,7.55,1.35038,3.995773, + 0,-0.911279,-0.411789,7.75,1.35038,3.995773, + 0,-0.863724,-0.503965,7.55,1.35038,3.995773, + 0,-0.707107,-0.707107,7.75,1.306225,4.056225, + 0,-0.707107,-0.707107,7.55,1.306225,4.056225, + -1,0,0,-5,2.25,5, + -1,0,0,-5,0,1, + -1,0,0,-5,0,5, + -1,0,0,-5,0,1, + -1,0,0,-5,2.25,5, + -1,0,0,-5,2.25,1, + -1,0,0,-5,2.25,1, + -1,0,0,-5,2.25,5, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.25,1, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.36871,1, + -1,0,0,-5,2.36871,1, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.450912,1.010298, + -1,0,0,-5,2.450912,1.010298, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.548078,1.037344, + -1,0,0,-5,2.548078,1.037344, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.640242,1.078314, + -1,0,0,-5,2.640242,1.078314, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.725419,1.132328, + -1,0,0,-5,2.725419,1.132328, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.801777,1.198223, + -1,0,0,-5,2.801777,1.198223, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.867672,1.274581, + -1,0,0,-5,2.867672,1.274581, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.921686,1.359758, + -1,0,0,-5,2.921686,1.359758, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.962656,1.451922, + -1,0,0,-5,2.962656,1.451922, + -1,0,0,-5,3,3.5, + -1,0,0,-5,2.989702,1.549088, + -1,0,0,-5,2.989702,1.549088, + -1,0,0,-5,3,3.5, + -1,0,0,-5,3,1.63129, + -0.316719,0.945245,-0.078743,-5,3,1.63129, + -0.971484,0.234324,0.036205,-5,3,3.5, + 0,1,0,-5,3,1.75 +}; +static const struct gllist seccam_body_frame = { + GL_N3F_V3F, GL_TRIANGLES, 294, seccam_body_data, 0 +}; +const struct gllist *seccam_body = &seccam_body_frame; + +static const float seccam_cap_data[] = { + 0,-0.499258,-0.866453,9.5,2.292275,5.079185, + 0,-0.389309,-0.921107,-5.5,2.247183,5.1016, + 0,-0.551704,-0.83404,-5.5,2.292275,5.079185, + 0,-0.389309,-0.921107,-5.5,2.247183,5.1016, + 0,-0.499258,-0.866453,9.5,2.292275,5.079185, + 0,-0.331806,-0.943348,9.5,2.247183,5.1016, + 0,-0.672883,-0.739749,9.5,2.332489,5.048877, + 0,-0.551704,-0.83404,-5.5,2.292275,5.079185, + 0,-0.672883,-0.739749,-5.5,2.332489,5.048877, + 0,-0.551704,-0.83404,-5.5,2.292275,5.079185, + 0,-0.672883,-0.739749,9.5,2.332489,5.048877, + 0,-0.499258,-0.866453,9.5,2.292275,5.079185, + 0,-0.331806,-0.943348,9.5,2.247183,5.1016, + 0,-0.213696,-0.9769,-5.5,2.198743,5.115361, + 0,-0.389309,-0.921107,-5.5,2.247183,5.1016, + 0,-0.213696,-0.9769,-5.5,2.198743,5.115361, + 0,-0.331806,-0.943348,9.5,2.247183,5.1016, + 0,-0.153089,-0.988212,9.5,2.198743,5.115361, + 0,-0.153089,-0.988212,9.5,2.198743,5.115361, + 0,-0.061479,-0.998108,-5.5,2.148601,5.12, + 0,-0.213696,-0.9769,-5.5,2.198743,5.115361, + 0,-0.061479,-0.998108,-5.5,2.148601,5.12, + 0,-0.153089,-0.988212,9.5,2.198743,5.115361, + 0,-0.03074,-0.999527,9.5,2.148601,5.12, + 0,-0.815421,-0.578869,9.5,2.36646,5.011706, + 0,-0.877321,-0.479905,-5.5,2.393034,4.968932, + 0,-0.872852,-0.487984,9.5,2.393034,4.968932, + 0,-0.877321,-0.479905,-5.5,2.393034,4.968932, + 0,-0.815421,-0.578869,9.5,2.36646,5.011706, + 0,-0.778198,-0.628018,-5.5,2.36646,5.011706, + 0,-0.03074,-0.999527,9.5,2.148601,5.12, + 0,0,-1,-5.5,0,5.12, + 0,-0.061479,-0.998108,-5.5,2.148601,5.12, + 0,0,-1,-5.5,0,5.12, + 0,-0.03074,-0.999527,9.5,2.148601,5.12, + 0,0,-1,9.5,0,5.12, + 0,-0.672883,-0.739749,9.5,2.332489,5.048877, + 0,-0.778198,-0.628018,-5.5,2.36646,5.011706, + 0,-0.815421,-0.578869,9.5,2.36646,5.011706, + 0,-0.778198,-0.628018,-5.5,2.36646,5.011706, + 0,-0.672883,-0.739749,9.5,2.332489,5.048877, + 0,-0.672883,-0.739749,-5.5,2.332489,5.048877, + 0,0.213696,0.9769,9.5,2.242938,5.153304, + 0,0.331806,0.943348,-5.5,2.292351,5.139267, + 0,0.153089,0.988212,-5.5,2.242938,5.153304, + 0,0.331806,0.943348,-5.5,2.292351,5.139267, + 0,0.213696,0.9769,9.5,2.242938,5.153304, + 0,0.389309,0.921107,9.5,2.292351,5.139267, + 0,0.389309,0.921107,9.5,2.292351,5.139267, + 0,0.499258,0.866453,-5.5,2.33835,5.116402, + 0,0.331806,0.943348,-5.5,2.292351,5.139267, + 0,0.499258,0.866453,-5.5,2.33835,5.116402, + 0,0.389309,0.921107,9.5,2.292351,5.139267, + 0,0.551704,0.83404,9.5,2.33835,5.116402, + 0,0.672883,0.739749,-5.5,2.379372,5.085485, + 0,0.778198,0.628018,9.5,2.414026,5.047566, + 0,0.815421,0.578869,-5.5,2.414026,5.047566, + 0,0.778198,0.628018,9.5,2.414026,5.047566, + 0,0.672883,0.739749,-5.5,2.379372,5.085485, + 0,0.672883,0.739749,9.5,2.379372,5.085485, + 0,0.815421,0.578869,-5.5,2.414026,5.047566, + 0,0.865241,0.501356,9.5,2.441134,5.003932, + 0,0.883881,0.467712,-5.5,2.441134,5.003932, + 0,0.865241,0.501356,9.5,2.441134,5.003932, + 0,0.815421,0.578869,-5.5,2.414026,5.047566, + 0,0.778198,0.628018,9.5,2.414026,5.047566, + 0,0,1,9.5,0,5.158037, + 0,0.03074,0.999527,-5.5,2.191788,5.158037, + 0,0,1,-5.5,0,5.158037, + 0,0.03074,0.999527,-5.5,2.191788,5.158037, + 0,0,1,9.5,0,5.158037, + 0,0.061479,0.998108,9.5,2.191788,5.158037, + 0,0.061479,0.998108,9.5,2.191788,5.158037, + 0,0.153089,0.988212,-5.5,2.242938,5.153304, + 0,0.03074,0.999527,-5.5,2.191788,5.158037, + 0,0.153089,0.988212,-5.5,2.242938,5.153304, + 0,0.061479,0.998108,9.5,2.191788,5.158037, + 0,0.213696,0.9769,9.5,2.242938,5.153304, + 0,0.551704,0.83404,9.5,2.33835,5.116402, + 0,0.672883,0.739749,-5.5,2.379372,5.085485, + 0,0.499258,0.866453,-5.5,2.33835,5.116402, + 0,0.672883,0.739749,-5.5,2.379372,5.085485, + 0,0.551704,0.83404,9.5,2.33835,5.116402, + 0,0.672883,0.739749,9.5,2.379372,5.085485, + 0,0,-1,-5,3.152109,3.22762, + -0.004217,0,-0.999991,-5.066635,3.09,3.22762, + -0.008435,0,-0.999964,-5.066635,3.152109,3.22762, + -0.004217,0,-0.999991,-5.066635,3.09,3.22762, + 0,0,-1,-5,3.152109,3.22762, + 0,0,-1,-5,3.09,3.22762, + -1,0,0,-5.5,2.191788,5.158037, + -1,0,0,-5.5,0,5.12, + -1,0,0,-5.5,0,5.158037, + -1,0,0,-5.5,0,5.12, + -1,0,0,-5.5,2.191788,5.158037, + -1,0,0,-5.5,2.148601,5.12, + -1,0,0,-5.5,2.148601,5.12, + -1,0,0,-5.5,2.191788,5.158037, + -1,0,0,-5.5,2.198743,5.115361, + -1,0,0,-5.5,2.198743,5.115361, + -1,0,0,-5.5,2.191788,5.158037, + -1,0,0,-5.5,2.242938,5.153304, + -1,0,0,-5.5,2.198743,5.115361, + -1,0,0,-5.5,2.242938,5.153304, + -1,0,0,-5.5,2.247183,5.1016, + -1,0,0,-5.5,2.247183,5.1016, + -1,0,0,-5.5,2.242938,5.153304, + -1,0,0,-5.5,2.292351,5.139267, + -1,0,0,-5.5,2.247183,5.1016, + -1,0,0,-5.5,2.292351,5.139267, + -1,0,0,-5.5,2.292275,5.079185, + -1,0,0,-5.5,2.292275,5.079185, + -1,0,0,-5.5,2.292351,5.139267, + -1,0,0,-5.5,2.332489,5.048877, + -1,0,0,-5.5,2.332489,5.048877, + -1,0,0,-5.5,2.292351,5.139267, + -1,0,0,-5.5,2.33835,5.116402, + -1,0,0,-5.5,2.332489,5.048877, + -1,0,0,-5.5,2.33835,5.116402, + -1,0,0,-5.5,2.36646,5.011706, + -1,0,0,-5.5,2.36646,5.011706, + -1,0,0,-5.5,2.33835,5.116402, + -1,0,0,-5.5,2.379372,5.085485, + -1,0,0,-5.5,2.36646,5.011706, + -1,0,0,-5.5,2.379372,5.085485, + -1,0,0,-5.5,2.393034,4.968932, + -1,0,0,-5.5,2.393034,4.968932, + -1,0,0,-5.5,2.379372,5.085485, + -1,0,0,-5.5,2.414026,5.047566, + -1,0,0,-5.5,2.393034,4.968932, + -1,0,0,-5.5,2.414026,5.047566, + -1,0,0,-5.5,3.012323,3.730353, + -1,0,0,-5.5,3.012323,3.730353, + -1,0,0,-5.5,2.414026,5.047566, + -1,0,0,-5.5,2.441134,5.003932, + -1,0,0,-5.5,3.012323,3.730353, + -1,0,0,-5.5,2.441134,5.003932, + -1,0,0,-5.5,3.072871,3.740458, + -1,0,0,-5.5,3.012323,3.730353, + -1,0,0,-5.5,3.072871,3.740458, + -0.999991,0,-0.004217,-5.5,3.013942,3.726777, + -0.999991,0,-0.004217,-5.5,3.013942,3.726777, + -1,0,0,-5.5,3.072871,3.740458, + -0.999979,-0.003174,-0.005654,-5.5,3.079063,3.726777, + -0.008435,0,-0.999964,-5.066635,3.152109,3.22762, + -0.115062,0,-0.993358,-5.136049,3.09,3.228498, + -0.217337,0,-0.976097,-5.136049,3.152109,3.228498, + -0.115062,0,-0.993358,-5.136049,3.09,3.228498, + -0.008435,0,-0.999964,-5.066635,3.152109,3.22762, + -0.004217,0,-0.999991,-5.066635,3.09,3.22762, + -0.217337,0,-0.976097,-5.136049,3.152109,3.228498, + -0.411789,0,-0.911279,-5.265128,3.09,3.271524, + -0.503965,0,-0.863724,-5.265128,3.152109,3.271524, + -0.411789,0,-0.911279,-5.265128,3.09,3.271524, + -0.217337,0,-0.976097,-5.136049,3.152109,3.228498, + -0.115062,0,-0.993358,-5.136049,3.09,3.228498, + -0.503965,0,-0.863724,-5.265128,3.152109,3.271524, + -0.707107,0,-0.707107,-5.375,3.09,3.351777, + -0.742826,0,-0.669484,-5.375,3.152109,3.351777, + -0.707107,0,-0.707107,-5.375,3.09,3.351777, + -0.503965,0,-0.863724,-5.265128,3.152109,3.271524, + -0.411789,0,-0.911279,-5.265128,3.09,3.271524, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.807527,0,-0.589831,-5.452667,3.087804,3.458109, + -0.911279,0,-0.411789,-5.455253,3.087392,3.461649, + -0.807527,0,-0.589831,-5.452667,3.087804,3.458109, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.807527,0,-0.589831,-5.41118,3.09,3.40131, + -0.807527,0,-0.589831,-5.41118,3.09,3.40131, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.707107,0,-0.707107,-5.375,3.09,3.351777, + -0.707107,0,-0.707107,-5.375,3.09,3.351777, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.742826,0,-0.669484,-5.375,3.152109,3.351777, + -0.742826,0,-0.669484,-5.375,3.152109,3.351777, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.807527,0,-0.589831,-5.41373,3.152109,3.404801, + -0.973406,0.015316,-0.228574,-5.498279,3.128292,3.590727, + -0.948683,0,-0.316228,-5.491487,3.070318,3.570354, + -0.993064,-0.002828,-0.117538,-5.498279,3.064669,3.590727, + -0.948683,0,-0.316228,-5.491487,3.070318,3.570354, + -0.973406,0.015316,-0.228574,-5.498279,3.128292,3.590727, + -0.948683,0,-0.316228,-5.472893,3.08123,3.514569, + -0.948683,0,-0.316228,-5.472893,3.08123,3.514569, + -0.973406,0.015316,-0.228574,-5.498279,3.128292,3.590727, + -0.911279,0,-0.411789,-5.455253,3.087392,3.461649, + -0.911279,0,-0.411789,-5.455253,3.087392,3.461649, + -0.973406,0.015316,-0.228574,-5.498279,3.128292,3.590727, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.973406,0.015316,-0.228574,-5.498279,3.128292,3.590727, + -0.948683,0,-0.316228,-5.493784,3.132031,3.577243, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.948683,0,-0.316228,-5.493784,3.132031,3.577243, + -0.948683,0,-0.316228,-5.474815,3.143163,3.520337, + -0.880629,0,-0.473806,-5.455253,3.149911,3.461649, + -0.948683,0,-0.316228,-5.474815,3.143163,3.520337, + -0.948683,0,-0.316228,-5.455617,3.149869,3.462742, + 0.002121,-0.92655,-0.376167,-5,3.035761,3.678568, + 0.004239,-0.926812,-0.375501,-5.499357,3.034537,3.675953, + 0.001061,-0.94351,-0.331343,-5.498714,3.055131,3.625129, + 0.004239,-0.926812,-0.375501,-5.499357,3.034537,3.675953, + 0.002121,-0.92655,-0.376167,-5,3.035761,3.678568, + 0.00106,-0.915118,-0.403184,-5.5,3.013942,3.726777, + -0.999844,0.016157,-0.007185,-5.5,3.09678,3.687633, + -0.999852,-0.007895,-0.015313,-5.498714,3.055131,3.625129, + -0.999925,-0.005639,-0.01087,-5.499357,3.034537,3.675953, + -0.999852,-0.007895,-0.015313,-5.498714,3.055131,3.625129, + -0.999844,0.016157,-0.007185,-5.5,3.09678,3.687633, + -0.993064,-0.002828,-0.117538,-5.498279,3.064669,3.590727, + -0.993064,-0.002828,-0.117538,-5.498279,3.064669,3.590727, + -0.999844,0.016157,-0.007185,-5.5,3.09678,3.687633, + -0.973406,0.015316,-0.228574,-5.498279,3.128292,3.590727, + -0.973406,0.015316,-0.228574,-5.498279,3.128292,3.590727, + -0.999844,0.016157,-0.007185,-5.5,3.09678,3.687633, + -0.994223,0.106009,0.016812,-5.498815,3.116539,3.633119, + -0.999979,-0.003174,-0.005654,-5.5,3.079063,3.726777, + -0.999925,-0.005639,-0.01087,-5.499357,3.034537,3.675953, + -0.999991,0,-0.004217,-5.5,3.013942,3.726777, + -0.999925,-0.005639,-0.01087,-5.499357,3.034537,3.675953, + -0.999979,-0.003174,-0.005654,-5.5,3.079063,3.726777, + -0.999844,0.016157,-0.007185,-5.5,3.09678,3.687633, + 0,0.963648,0.267176,-5.498279,3.128292,3.590727, + 0,0.970208,0.242274,8.7276,3.132031,3.577243, + 0,0.976128,0.217194,-5.493784,3.132031,3.577243, + 0,0.970208,0.242274,8.7276,3.132031,3.577243, + 0,0.963648,0.267176,-5.498279,3.128292,3.590727, + 0,0.956449,0.291901,8.783476,3.116539,3.633119, + 0,0.956449,0.291901,8.783476,3.116539,3.633119, + 0,0.963648,0.267176,-5.498279,3.128292,3.590727, + 0,0.94861,0.316448,-5.498815,3.116539,3.633119, + 0,0,-1,8.377977,3.152109,3.22762, + 0,0,-1,-5,3.09,3.22762, + 0,0,-1,-5,3.152109,3.22762, + 0,0,-1,-5,3.09,3.22762, + 0,0,-1,8.377977,3.152109,3.22762, + 0,0,-1,8.377977,3.09,3.22762, + 0,-0.997016,-0.077198,8.608467,3.087804,3.458109, + 0,-0.999668,-0.025756,-5.41118,3.09,3.40131, + 0,-0.999985,-0.005519,8.551667,3.09,3.40131, + 0,-0.999668,-0.025756,-5.41118,3.09,3.40131, + 0,-0.997016,-0.077198,8.608467,3.087804,3.458109, + 0,-0.997016,-0.077198,-5.452667,3.087804,3.458109, + 0,0.883881,0.467712,-5.5,2.441134,5.003932, + 0,0.904554,0.42636,8.890816,3.072871,3.740458, + 0,0.902899,0.429852,-5.5,3.072871,3.740458, + 0,0.904554,0.42636,8.890816,3.072871,3.740458, + 0,0.883881,0.467712,-5.5,2.441134,5.003932, + 0,0.894427,0.447214,9.5,2.768279,4.349643, + 0,0.894427,0.447214,9.5,2.768279,4.349643, + 0,0.883881,0.467712,-5.5,2.441134,5.003932, + 0,0.865241,0.501356,9.5,2.441134,5.003932, + 0,0.976128,0.217194,-5.493784,3.132031,3.577243, + 0,0.986016,0.166653,8.670694,3.143163,3.520337, + 0,0.989982,0.141191,-5.474815,3.143163,3.520337, + 0,0.986016,0.166653,8.670694,3.143163,3.520337, + 0,0.976128,0.217194,-5.493784,3.132031,3.577243, + 0,0.970208,0.242274,8.7276,3.132031,3.577243, + 0,-0.958309,-0.285734,8.775486,3.055131,3.625129, + 0,-0.973249,-0.229753,-5.491487,3.070318,3.570354, + 0,-0.973249,-0.229753,8.720711,3.070318,3.570354, + 0,-0.973249,-0.229753,-5.491487,3.070318,3.570354, + 0,-0.958309,-0.285734,8.775486,3.055131,3.625129, + 0,-0.963648,-0.267176,-5.498279,3.064669,3.590727, + 0,-0.963648,-0.267176,-5.498279,3.064669,3.590727, + 0,-0.958309,-0.285734,8.775486,3.055131,3.625129, + 0.001061,-0.94351,-0.331343,-5.498714,3.055131,3.625129, + 0,-0.902899,-0.429852,8.880711,3.012323,3.730353, + 0,-0.877321,-0.479905,-5.5,2.393034,4.968932, + 0,-0.902899,-0.429852,-5.5,3.012323,3.730353, + 0,-0.877321,-0.479905,-5.5,2.393034,4.968932, + 0,-0.902899,-0.429852,8.880711,3.012323,3.730353, + 0,-0.894427,-0.447214,9.5,2.702679,4.349643, + 0,-0.877321,-0.479905,-5.5,2.393034,4.968932, + 0,-0.894427,-0.447214,9.5,2.702679,4.349643, + 0,-0.872852,-0.487984,9.5,2.393034,4.968932, + 0,1,0,-5.136049,3.152109,3.228498, + 0,1,0,-5,3.152109,3.22762, + 0,1,0,-5.066635,3.152109,3.22762, + 0,1,0,-5,3.152109,3.22762, + 0,1,0,-5.136049,3.152109,3.228498, + 0,1,0,8.377977,3.152109,3.22762, + 0,1,0,8.377977,3.152109,3.22762, + 0,1,0,-5.136049,3.152109,3.228498, + 0,0.999917,0.012878,8.555159,3.152109,3.404801, + 0,0.999917,0.012878,8.555159,3.152109,3.404801, + 0,1,0,-5.136049,3.152109,3.228498, + 0,1,0,-5.265128,3.152109,3.271524, + 0,0.999917,0.012878,8.555159,3.152109,3.404801, + 0,1,0,-5.265128,3.152109,3.271524, + 0,1,0,-5.375,3.152109,3.351777, + 0,0.999917,0.012878,8.555159,3.152109,3.404801, + 0,1,0,-5.375,3.152109,3.351777, + 0,0.999813,0.019317,-5.41373,3.152109,3.404801, + 0,-0.926282,-0.376831,8.828926,3.035761,3.678568, + 0.00106,-0.915118,-0.403184,-5.5,3.013942,3.726777, + 0.002121,-0.92655,-0.376167,-5,3.035761,3.678568, + 0.00106,-0.915118,-0.403184,-5.5,3.013942,3.726777, + 0,-0.926282,-0.376831,8.828926,3.035761,3.678568, + 0,-0.902899,-0.429852,8.880711,3.012323,3.730353, + 0.00106,-0.915118,-0.403184,-5.5,3.013942,3.726777, + 0,-0.902899,-0.429852,8.880711,3.012323,3.730353, + 0,-0.902899,-0.429852,-5.5,3.012323,3.730353, + 0,-0.988081,-0.153935,8.664927,3.08123,3.514569, + 0,-0.973249,-0.229753,-5.491487,3.070318,3.570354, + 0,-0.988081,-0.153935,-5.472893,3.08123,3.514569, + 0,-0.973249,-0.229753,-5.491487,3.070318,3.570354, + 0,-0.988081,-0.153935,8.664927,3.08123,3.514569, + 0,-0.973249,-0.229753,8.720711,3.070318,3.570354, + 0,0.999254,0.038628,-5.455253,3.149911,3.461649, + 0,0.999917,0.012878,8.555159,3.152109,3.404801, + 0,0.999813,0.019317,-5.41373,3.152109,3.404801, + 0,0.999917,0.012878,8.555159,3.152109,3.404801, + 0,0.999254,0.038628,-5.455253,3.149911,3.461649, + 0,0.997016,0.077198,8.613099,3.149869,3.462742, + 0,0.997016,0.077198,8.613099,3.149869,3.462742, + 0,0.999254,0.038628,-5.455253,3.149911,3.461649, + 0,0.997016,0.077198,-5.455617,3.149869,3.462742, + 0,0.92135,0.388735,-5.5,3.09678,3.687633, + 0,0.904554,0.42636,8.890816,3.072871,3.740458, + 0,0.93106,0.364865,8.83799,3.09678,3.687633, + 0,0.904554,0.42636,8.890816,3.072871,3.740458, + 0,0.92135,0.388735,-5.5,3.09678,3.687633, + 0,0.911034,0.41233,-5.5,3.079063,3.726777, + 0,0.904554,0.42636,8.890816,3.072871,3.740458, + 0,0.911034,0.41233,-5.5,3.079063,3.726777, + 0,0.902899,0.429852,-5.5,3.072871,3.740458, + 0,-0.997016,-0.077198,8.608467,3.087804,3.458109, + 0,-0.99329,-0.115653,-5.455253,3.087392,3.461649, + 0,-0.997016,-0.077198,-5.452667,3.087804,3.458109, + 0,-0.99329,-0.115653,-5.455253,3.087392,3.461649, + 0,-0.997016,-0.077198,8.608467,3.087804,3.458109, + 0,-0.988081,-0.153935,8.664927,3.08123,3.514569, + 0,-0.99329,-0.115653,-5.455253,3.087392,3.461649, + 0,-0.988081,-0.153935,8.664927,3.08123,3.514569, + 0,-0.988081,-0.153935,-5.472893,3.08123,3.514569, + 0,0.94861,0.316448,-5.498815,3.116539,3.633119, + 0,0.93106,0.364865,8.83799,3.09678,3.687633, + 0,0.956449,0.291901,8.783476,3.116539,3.633119, + 0,0.93106,0.364865,8.83799,3.09678,3.687633, + 0,0.94861,0.316448,-5.498815,3.116539,3.633119, + 0,0.92135,0.388735,-5.5,3.09678,3.687633, + 0,-0.926282,-0.376831,8.828926,3.035761,3.678568, + 0.001061,-0.94351,-0.331343,-5.498714,3.055131,3.625129, + 0,-0.958309,-0.285734,8.775486,3.055131,3.625129, + 0.001061,-0.94351,-0.331343,-5.498714,3.055131,3.625129, + 0,-0.926282,-0.376831,8.828926,3.035761,3.678568, + 0.002121,-0.92655,-0.376167,-5,3.035761,3.678568, + 0,-0.999985,-0.005519,8.551667,3.09,3.40131, + 0,-1,0,-5,3.09,3.22762, + 0,-1,0,8.377977,3.09,3.22762, + 0,-1,0,-5,3.09,3.22762, + 0,-0.999985,-0.005519,8.551667,3.09,3.40131, + 0,-1,0,-5.066635,3.09,3.22762, + 0,-1,0,-5.066635,3.09,3.22762, + 0,-0.999985,-0.005519,8.551667,3.09,3.40131, + 0,-1,0,-5.136049,3.09,3.228498, + 0,-1,0,-5.136049,3.09,3.228498, + 0,-0.999985,-0.005519,8.551667,3.09,3.40131, + 0,-1,0,-5.265128,3.09,3.271524, + 0,-1,0,-5.265128,3.09,3.271524, + 0,-0.999985,-0.005519,8.551667,3.09,3.40131, + 0,-1,0,-5.375,3.09,3.351777, + 0,-1,0,-5.375,3.09,3.351777, + 0,-0.999985,-0.005519,8.551667,3.09,3.40131, + 0,-0.999668,-0.025756,-5.41118,3.09,3.40131, + 0,0.989982,0.141191,-5.474815,3.143163,3.520337, + 0,0.997016,0.077198,8.613099,3.149869,3.462742, + 0,0.997016,0.077198,-5.455617,3.149869,3.462742, + 0,0.997016,0.077198,8.613099,3.149869,3.462742, + 0,0.989982,0.141191,-5.474815,3.143163,3.520337, + 0,0.986016,0.166653,8.670694,3.143163,3.520337, + 1,0,0,9.5,2.148601,5.12, + 1,0,0,9.5,0,5.158037, + 1,0,0,9.5,0,5.12, + 1,0,0,9.5,0,5.158037, + 1,0,0,9.5,2.148601,5.12, + 1,0,0,9.5,2.191788,5.158037, + 1,0,0,9.5,2.191788,5.158037, + 1,0,0,9.5,2.148601,5.12, + 1,0,0,9.5,2.198743,5.115361, + 1,0,0,9.5,2.191788,5.158037, + 1,0,0,9.5,2.198743,5.115361, + 1,0,0,9.5,2.242938,5.153304, + 1,0,0,9.5,2.242938,5.153304, + 1,0,0,9.5,2.198743,5.115361, + 1,0,0,9.5,2.247183,5.1016, + 1,0,0,9.5,2.242938,5.153304, + 1,0,0,9.5,2.247183,5.1016, + 1,0,0,9.5,2.292351,5.139267, + 1,0,0,9.5,2.292351,5.139267, + 1,0,0,9.5,2.247183,5.1016, + 1,0,0,9.5,2.292275,5.079185, + 1,0,0,9.5,2.292351,5.139267, + 1,0,0,9.5,2.292275,5.079185, + 1,0,0,9.5,2.332489,5.048877, + 1,0,0,9.5,2.292351,5.139267, + 1,0,0,9.5,2.332489,5.048877, + 1,0,0,9.5,2.33835,5.116402, + 1,0,0,9.5,2.33835,5.116402, + 1,0,0,9.5,2.332489,5.048877, + 1,0,0,9.5,2.36646,5.011706, + 1,0,0,9.5,2.33835,5.116402, + 1,0,0,9.5,2.36646,5.011706, + 1,0,0,9.5,2.379372,5.085485, + 1,0,0,9.5,2.379372,5.085485, + 1,0,0,9.5,2.36646,5.011706, + 1,0,0,9.5,2.393034,4.968932, + 1,0,0,9.5,2.379372,5.085485, + 1,0,0,9.5,2.393034,4.968932, + 1,0,0,9.5,2.414026,5.047566, + 1,0,0,9.5,2.414026,5.047566, + 1,0,0,9.5,2.393034,4.968932, + 1,0,0,9.5,2.702679,4.349643, + 1,0,0,9.5,2.414026,5.047566, + 1,0,0,9.5,2.702679,4.349643, + 1,0,0,9.5,2.441134,5.003932, + 1,0,0,9.5,2.441134,5.003932, + 1,0,0,9.5,2.702679,4.349643, + 1,0,0,9.5,2.768279,4.349643, + 0.707107,0,-0.707107,8.377977,3.152109,3.22762, + 0.707107,0,-0.707107,8.551667,3.09,3.40131, + 0.707107,0,-0.707107,8.377977,3.09,3.22762, + 0.707107,0,-0.707107,8.551667,3.09,3.40131, + 0.707107,0,-0.707107,8.377977,3.152109,3.22762, + 0.707107,0,-0.707107,8.555159,3.152109,3.404801, + 0.707107,0,-0.707107,8.551667,3.09,3.40131, + 0.707107,0,-0.707107,8.555159,3.152109,3.404801, + 0.707107,0,-0.707107,8.608467,3.087804,3.458109, + 0.707107,0,-0.707107,8.608467,3.087804,3.458109, + 0.707107,0,-0.707107,8.555159,3.152109,3.404801, + 0.707107,0,-0.707107,8.613099,3.149869,3.462742, + 0.707107,0,-0.707107,8.608467,3.087804,3.458109, + 0.707107,0,-0.707107,8.613099,3.149869,3.462742, + 0.707107,0,-0.707107,8.664927,3.08123,3.514569, + 0.707107,0,-0.707107,8.664927,3.08123,3.514569, + 0.707107,0,-0.707107,8.613099,3.149869,3.462742, + 0.707107,0,-0.707107,8.670694,3.143163,3.520337, + 0.707107,0,-0.707107,8.664927,3.08123,3.514569, + 0.707107,0,-0.707107,8.670694,3.143163,3.520337, + 0.707107,0,-0.707107,8.720711,3.070318,3.570354, + 0.707107,0,-0.707107,8.720711,3.070318,3.570354, + 0.707107,0,-0.707107,8.670694,3.143163,3.520337, + 0.707107,0,-0.707107,8.7276,3.132031,3.577243, + 0.707107,0,-0.707107,8.720711,3.070318,3.570354, + 0.707107,0,-0.707107,8.7276,3.132031,3.577243, + 0.707107,0,-0.707107,8.775486,3.055131,3.625129, + 0.707107,0,-0.707107,8.775486,3.055131,3.625129, + 0.707107,0,-0.707107,8.7276,3.132031,3.577243, + 0.707107,0,-0.707107,8.783476,3.116539,3.633119, + 0.707107,0,-0.707107,8.775486,3.055131,3.625129, + 0.707107,0,-0.707107,8.783476,3.116539,3.633119, + 0.707107,0,-0.707107,8.828926,3.035761,3.678568, + 0.707107,0,-0.707107,8.828926,3.035761,3.678568, + 0.707107,0,-0.707107,8.783476,3.116539,3.633119, + 0.707107,0,-0.707107,8.83799,3.09678,3.687633, + 0.707107,0,-0.707107,8.828926,3.035761,3.678568, + 0.707107,0,-0.707107,8.83799,3.09678,3.687633, + 0.707107,0,-0.707107,8.880711,3.012323,3.730353, + 0.707107,0,-0.707107,8.880711,3.012323,3.730353, + 0.707107,0,-0.707107,8.83799,3.09678,3.687633, + 0.707107,0,-0.707107,8.890816,3.072871,3.740458, + 0.707107,0,-0.707107,8.880711,3.012323,3.730353, + 0.707107,0,-0.707107,8.890816,3.072871,3.740458, + 0.707107,0,-0.707107,9.5,2.702679,4.349643, + 0.707107,0,-0.707107,9.5,2.702679,4.349643, + 0.707107,0,-0.707107,8.890816,3.072871,3.740458, + 0.707107,0,-0.707107,9.5,2.768279,4.349643 +}; +static const struct gllist seccam_cap_frame = { + GL_N3F_V3F, GL_TRIANGLES, 468, seccam_cap_data, 0 +}; +const struct gllist *seccam_cap = &seccam_cap_frame; + +static const float seccam_hinge_data[] = { + 0.843272,0,-0.537487,0.649519,0.375,-0.375, + 0.707107,0,-0.707107,0.53033,0.625,-0.53033, + 0.887114,0,-0.461551,0.649519,0.625,-0.375, + 0.707107,0,-0.707107,0.53033,0.625,-0.53033, + 0.843272,0,-0.537487,0.649519,0.375,-0.375, + 0.707107,0,-0.707107,0.53033,0.375,-0.53033, + 0.991445,0,-0.130526,0.75,0.375,0, + 0.976344,0,-0.216222,0.724444,0.625,-0.194114, + 0.991445,0,-0.130526,0.75,0.625,0, + 0.976344,0,-0.216222,0.724444,0.625,-0.194114, + 0.991445,0,-0.130526,0.75,0.375,0, + 0.95365,0,-0.300918,0.724444,0.375,-0.194114, + 0.537487,0,-0.843272,0.375,0.375,-0.649519, + 0.707107,0,-0.707107,0.53033,0.625,-0.53033, + 0.707107,0,-0.707107,0.53033,0.375,-0.53033, + 0.707107,0,-0.707107,0.53033,0.625,-0.53033, + 0.537487,0,-0.843272,0.375,0.375,-0.649519, + 0.461551,0,-0.887114,0.375,0.625,-0.649519, + -0.976344,0,-0.216222,-0.724444,0.375,-0.194114, + -0.991445,0,-0.130526,-0.75,0.625,0, + -0.95365,0,-0.300918,-0.724444,0.625,-0.194114, + -0.991445,0,-0.130526,-0.75,0.625,0, + -0.976344,0,-0.216222,-0.724444,0.375,-0.194114, + -0.991445,0,-0.130526,-0.75,0.375,0, + 0.300918,0,-0.95365,0.194114,0.375,-0.724444, + 0.461551,0,-0.887114,0.375,0.625,-0.649519, + 0.537487,0,-0.843272,0.375,0.375,-0.649519, + 0.461551,0,-0.887114,0.375,0.625,-0.649519, + 0.300918,0,-0.95365,0.194114,0.375,-0.724444, + 0.216222,0,-0.976344,0.194114,0.625,-0.724444, + 0,1,0,-0.194114,0.625,-0.724444, + 0,1,0,0.194114,0.625,-0.724444, + 0,1,0,0,0.625,-0.75, + 0,1,0,0.194114,0.625,-0.724444, + 0,1,0,-0.194114,0.625,-0.724444, + 0,1,0,-0.375,0.625,-0.649519, + 0,1,0,0.194114,0.625,-0.724444, + 0,1,0,-0.375,0.625,-0.649519, + 0,1,0,0.375,0.625,-0.649519, + 0,1,0,0.375,0.625,-0.649519, + 0,1,0,-0.375,0.625,-0.649519, + 0,1,0,-0.53033,0.625,-0.53033, + 0,1,0,0.375,0.625,-0.649519, + 0,1,0,-0.53033,0.625,-0.53033, + 0,1,0,0.53033,0.625,-0.53033, + 0,1,0,0.53033,0.625,-0.53033, + 0,1,0,-0.53033,0.625,-0.53033, + 0,1,0,-0.649519,0.625,-0.375, + 0,1,0,0.53033,0.625,-0.53033, + 0,1,0,-0.649519,0.625,-0.375, + 0,1,0,0.649519,0.625,-0.375, + 0,1,0,0.649519,0.625,-0.375, + 0,1,0,-0.649519,0.625,-0.375, + 0,1,0,-0.724444,0.625,-0.194114, + 0,1,0,0.649519,0.625,-0.375, + 0,1,0,-0.724444,0.625,-0.194114, + 0,1,0,0.724444,0.625,-0.194114, + 0,1,0,0.724444,0.625,-0.194114, + 0,1,0,-0.724444,0.625,-0.194114, + 0,1,0,0.75,0.625,0, + 0,1,0,0.75,0.625,0, + 0,1,0,-0.724444,0.625,-0.194114, + 0,1,0,-0.75,0.625,0, + -0.707107,0,-0.707107,-0.53033,0.375,-0.53033, + -0.537487,0,-0.843272,-0.375,0.625,-0.649519, + -0.461551,0,-0.887114,-0.375,0.375,-0.649519, + -0.537487,0,-0.843272,-0.375,0.625,-0.649519, + -0.707107,0,-0.707107,-0.53033,0.375,-0.53033, + -0.707107,0,-0.707107,-0.53033,0.625,-0.53033, + -0.707107,0,-0.707107,-0.53033,0.375,-0.53033, + -0.843272,0,-0.537487,-0.649519,0.625,-0.375, + -0.707107,0,-0.707107,-0.53033,0.625,-0.53033, + -0.843272,0,-0.537487,-0.649519,0.625,-0.375, + -0.707107,0,-0.707107,-0.53033,0.375,-0.53033, + -0.887114,0,-0.461551,-0.649519,0.375,-0.375, + -0.461551,0,-0.887114,-0.375,0.375,-0.649519, + -0.300918,0,-0.95365,-0.194114,0.625,-0.724444, + -0.216222,0,-0.976344,-0.194114,0.375,-0.724444, + -0.300918,0,-0.95365,-0.194114,0.625,-0.724444, + -0.461551,0,-0.887114,-0.375,0.375,-0.649519, + -0.537487,0,-0.843272,-0.375,0.625,-0.649519, + -0.216222,0,-0.976344,-0.194114,0.375,-0.724444, + -0.043842,0,-0.999038,0,0.625,-0.75, + 0.043842,0,-0.999038,0,0.375,-0.75, + -0.043842,0,-0.999038,0,0.625,-0.75, + -0.216222,0,-0.976344,-0.194114,0.375,-0.724444, + -0.300918,0,-0.95365,-0.194114,0.625,-0.724444, + 0.95365,0,-0.300918,0.724444,0.375,-0.194114, + 0.887114,0,-0.461551,0.649519,0.625,-0.375, + 0.976344,0,-0.216222,0.724444,0.625,-0.194114, + 0.887114,0,-0.461551,0.649519,0.625,-0.375, + 0.95365,0,-0.300918,0.724444,0.375,-0.194114, + 0.843272,0,-0.537487,0.649519,0.375,-0.375, + 0.043842,0,-0.999038,0,0.375,-0.75, + 0.216222,0,-0.976344,0.194114,0.625,-0.724444, + 0.300918,0,-0.95365,0.194114,0.375,-0.724444, + 0.216222,0,-0.976344,0.194114,0.625,-0.724444, + 0.043842,0,-0.999038,0,0.375,-0.75, + -0.043842,0,-0.999038,0,0.625,-0.75, + -0.887114,0,-0.461551,-0.649519,0.375,-0.375, + -0.95365,0,-0.300918,-0.724444,0.625,-0.194114, + -0.843272,0,-0.537487,-0.649519,0.625,-0.375, + -0.95365,0,-0.300918,-0.724444,0.625,-0.194114, + -0.887114,0,-0.461551,-0.649519,0.375,-0.375, + -0.976344,0,-0.216222,-0.724444,0.375,-0.194114, + 0,-1,0,0.194114,0.375,-0.724444, + 0,-1,0,-0.194114,0.375,-0.724444, + 0,-1,0,0,0.375,-0.75, + 0,-1,0,-0.194114,0.375,-0.724444, + 0,-1,0,0.194114,0.375,-0.724444, + 0,-1,0,0.375,0.375,-0.649519, + 0,-1,0,-0.194114,0.375,-0.724444, + 0,-1,0,0.375,0.375,-0.649519, + 0,-1,0,-0.375,0.375,-0.649519, + 0,-1,0,-0.375,0.375,-0.649519, + 0,-1,0,0.375,0.375,-0.649519, + 0,-1,0,0.53033,0.375,-0.53033, + 0,-1,0,-0.375,0.375,-0.649519, + 0,-1,0,0.53033,0.375,-0.53033, + 0,-1,0,-0.53033,0.375,-0.53033, + 0,-1,0,-0.53033,0.375,-0.53033, + 0,-1,0,0.53033,0.375,-0.53033, + 0,-1,0,0.649519,0.375,-0.375, + 0,-1,0,-0.53033,0.375,-0.53033, + 0,-1,0,0.649519,0.375,-0.375, + 0,-1,0,-0.649519,0.375,-0.375, + 0,-1,0,-0.649519,0.375,-0.375, + 0,-1,0,0.649519,0.375,-0.375, + 0,-1,0,0.724444,0.375,-0.194114, + 0,-1,0,-0.649519,0.375,-0.375, + 0,-1,0,0.724444,0.375,-0.194114, + 0,-1,0,-0.724444,0.375,-0.194114, + 0,-1,0,-0.724444,0.375,-0.194114, + 0,-1,0,0.724444,0.375,-0.194114, + 0,-1,0,0.75,0.375,0, + 0,-1,0,-0.724444,0.375,-0.194114, + 0,-1,0,0.75,0.375,0, + 0,-1,0,-0.75,0.375,0, + 0,0,-1,-1,0,0, + 0,0,-1,0.965926,0.258819,0, + 0,0,-1,1,0,0, + 0,0,-1,0.965926,0.258819,0, + 0,0,-1,-1,0,0, + 0,0,-1,0.866025,0.5,0, + 0,0,-1,0.866025,0.5,0, + 0,0,-1,-1,0,0, + 0,0,-1,0.707107,0.707107,0, + 0,0,-1,0.707107,0.707107,0, + 0,0,-1,-1,0,0, + 0,0,-1,0.5,0.866025,0, + 0,0,-1,0.5,0.866025,0, + 0,0,-1,-1,0,0, + 0,0,-1,0.258819,0.965926,0, + 0,0,-1,0.258819,0.965926,0, + 0,0,-1,-1,0,0, + 0,0,-1,0,1,0, + 0,0,-1,0,1,0, + 0,0,-1,-1,0,0, + 0,0,-1,-0.258819,0.965926,0, + 0,0,-1,-0.258819,0.965926,0, + 0,0,-1,-1,0,0, + 0,0,-1,-0.5,0.866025,0, + 0,0,-1,-0.5,0.866025,0, + 0,0,-1,-1,0,0, + 0,0,-1,-0.707107,0.707107,0, + 0,0,-1,-0.707107,0.707107,0, + 0,0,-1,-1,0,0, + 0,0,-1,-0.866025,0.5,0, + 0,0,-1,-0.866025,0.5,0, + 0,0,-1,-1,0,0, + 0,0,-1,-0.965926,0.258819,0, + 0.043842,0.999038,0,0,1,1, + 0.216222,0.976344,0,0.258819,0.965926,0, + -0.043842,0.999038,0,0,1,0, + 0.216222,0.976344,0,0.258819,0.965926,0, + 0.043842,0.999038,0,0,1,1, + 0.300918,0.95365,0,0.258819,0.965926,1, + -0.707107,0.707107,0,-0.707107,0.707107,1, + -0.537487,0.843272,0,-0.5,0.866025,0, + -0.707107,0.707107,0,-0.707107,0.707107,0, + -0.537487,0.843272,0,-0.5,0.866025,0, + -0.707107,0.707107,0,-0.707107,0.707107,1, + -0.461551,0.887114,0,-0.5,0.866025,1, + -0.461551,0.887114,0,-0.5,0.866025,1, + -0.300918,0.95365,0,-0.258819,0.965926,0, + -0.537487,0.843272,0,-0.5,0.866025,0, + -0.300918,0.95365,0,-0.258819,0.965926,0, + -0.461551,0.887114,0,-0.5,0.866025,1, + -0.216222,0.976344,0,-0.258819,0.965926,1, + 0.300918,0.95365,0,0.258819,0.965926,1, + 0.461551,0.887114,0,0.5,0.866025,0, + 0.216222,0.976344,0,0.258819,0.965926,0, + 0.461551,0.887114,0,0.5,0.866025,0, + 0.300918,0.95365,0,0.258819,0.965926,1, + 0.537487,0.843272,0,0.5,0.866025,1, + 0.991445,0.130526,0,1,0,1, + 0.976344,0.216222,0,0.965926,0.258819,0, + 0.95365,0.300918,0,0.965926,0.258819,1, + 0.976344,0.216222,0,0.965926,0.258819,0, + 0.991445,0.130526,0,1,0,1, + 0.991445,0.130526,0,1,0,0, + 0.843272,0.537487,0,0.866025,0.5,1, + 0.707107,0.707107,0,0.707107,0.707107,0, + 0.707107,0.707107,0,0.707107,0.707107,1, + 0.707107,0.707107,0,0.707107,0.707107,0, + 0.843272,0.537487,0,0.866025,0.5,1, + 0.887114,0.461551,0,0.866025,0.5,0, + -0.216222,0.976344,0,-0.258819,0.965926,1, + -0.043842,0.999038,0,0,1,0, + -0.300918,0.95365,0,-0.258819,0.965926,0, + -0.043842,0.999038,0,0,1,0, + -0.216222,0.976344,0,-0.258819,0.965926,1, + 0.043842,0.999038,0,0,1,1, + -0.95365,0.300918,0,-0.965926,0.258819,0, + -0.887114,0.461551,0,-0.866025,0.5,1, + -0.843272,0.537487,0,-0.866025,0.5,0, + -0.887114,0.461551,0,-0.866025,0.5,1, + -0.95365,0.300918,0,-0.965926,0.258819,0, + -0.976344,0.216222,0,-0.965926,0.258819,1, + -0.843272,0.537487,0,-0.866025,0.5,0, + -0.707107,0.707107,0,-0.707107,0.707107,1, + -0.707107,0.707107,0,-0.707107,0.707107,0, + -0.707107,0.707107,0,-0.707107,0.707107,1, + -0.843272,0.537487,0,-0.866025,0.5,0, + -0.887114,0.461551,0,-0.866025,0.5,1, + 0.537487,0.843272,0,0.5,0.866025,1, + 0.707107,0.707107,0,0.707107,0.707107,0, + 0.461551,0.887114,0,0.5,0.866025,0, + 0.707107,0.707107,0,0.707107,0.707107,0, + 0.537487,0.843272,0,0.5,0.866025,1, + 0.707107,0.707107,0,0.707107,0.707107,1, + 0.95365,0.300918,0,0.965926,0.258819,1, + 0.887114,0.461551,0,0.866025,0.5,0, + 0.843272,0.537487,0,0.866025,0.5,1, + 0.887114,0.461551,0,0.866025,0.5,0, + 0.95365,0.300918,0,0.965926,0.258819,1, + 0.976344,0.216222,0,0.965926,0.258819,0, + -0.991445,0.130526,0,-1,0,0, + -0.976344,0.216222,0,-0.965926,0.258819,1, + -0.95365,0.300918,0,-0.965926,0.258819,0, + -0.976344,0.216222,0,-0.965926,0.258819,1, + -0.991445,0.130526,0,-1,0,0, + -0.991445,0.130526,0,-1,0,1 +}; +static const struct gllist seccam_hinge_frame = { + GL_N3F_V3F, GL_TRIANGLES, 243, seccam_hinge_data, 0 +}; +const struct gllist *seccam_hinge = &seccam_hinge_frame; + +static const float seccam_lens_data[] = { + 1,0,0,7.55,-1.923472,1.31269, + 1,0,0,7.55,2.033558,4.687325, + 1,0,0,7.55,-1.923714,4.687325, + 1,0,0,7.55,2.033558,4.687325, + 1,0,0,7.55,-1.923472,1.31269, + 1,0,0,7.55,2.0338,1.31269 +}; +static const struct gllist seccam_lens_frame = { + GL_N3F_V3F, GL_TRIANGLES, 6, seccam_lens_data, 0 +}; +const struct gllist *seccam_lens = &seccam_lens_frame; + +static const float seccam_pipe_data[] = { + -0.752339,0.658776,0,-0.265165,0.265165,0.4375, + -0.921725,0.383318,0.05908,-0.346455,0.143506,-1.759639, + -0.947173,0.320722,0,-0.346455,0.143506,0.4375, + -0.921725,0.383318,0.05908,-0.346455,0.143506,-1.759639, + -0.752339,0.658776,0,-0.265165,0.265165,0.4375, + -0.704865,0.70779,0.046895,-0.265165,0.265165,-1.76471, + -0.704865,0.70779,0.046895,-0.265165,0.265165,-1.76471, + -0.442968,0.896538,0,-0.143506,0.346455,0.4375, + -0.381068,0.924135,0.027592,-0.143506,0.346455,-1.772299, + -0.442968,0.896538,0,-0.143506,0.346455,0.4375, + -0.704865,0.70779,0.046895,-0.265165,0.265165,-1.76471, + -0.752339,0.658776,0,-0.265165,0.265165,0.4375, + -0.381068,0.924135,0.027592,-0.143506,0.346455,-1.772299, + -0.066159,0.997809,0,0,0.375,0.4375, + 0.000257,0.999991,0.00412,0,0.375,-1.78125, + -0.066159,0.997809,0,0,0.375,0.4375, + -0.381068,0.924135,0.027592,-0.143506,0.346455,-1.772299, + -0.442968,0.896538,0,-0.143506,0.346455,0.4375, + 0.000257,0.999991,0.00412,0,0.375,-1.78125, + 0.320722,0.947173,0,0.143506,0.346455,0.4375, + 0.381543,0.924135,-0.019977,0.143506,0.346455,-1.790201, + 0.320722,0.947173,0,0.143506,0.346455,0.4375, + 0.000257,0.999991,0.00412,0,0.375,-1.78125, + -0.066159,0.997809,0,0,0.375,0.4375, + 0.381543,0.924135,-0.019977,0.143506,0.346455,-1.790201, + 0.707107,0.707107,0,0.265165,0.265165,0.4375, + 0.704059,0.707717,-0.058632,0.265165,0.265165,-1.79779, + 0.707107,0.707107,0,0.265165,0.265165,0.4375, + 0.381543,0.924135,-0.019977,0.143506,0.346455,-1.790201, + 0.320722,0.947173,0,0.143506,0.346455,0.4375, + 0.921725,0.383318,-0.05908,0.346455,0.143506,-1.802861, + 0.707107,0.707107,0,0.265165,0.265165,0.4375, + 0.947173,0.320722,0,0.346455,0.143506,0.4375, + 0.707107,0.707107,0,0.265165,0.265165,0.4375, + 0.921725,0.383318,-0.05908,0.346455,0.143506,-1.802861, + 0.704059,0.707717,-0.058632,0.265165,0.265165,-1.79779, + 0.979876,0.195414,-0.040695,0.375,0,-1.804641, + 0.947173,0.320722,0,0.346455,0.143506,0.4375, + 0.980785,0.19509,0,0.375,0,0.4375, + 0.947173,0.320722,0,0.346455,0.143506,0.4375, + 0.979876,0.195414,-0.040695,0.375,0,-1.804641, + 0.921725,0.383318,-0.05908,0.346455,0.143506,-1.802861, + -0.947173,0.320722,0,-0.346455,0.143506,0.4375, + -0.979876,0.195414,0.040695,-0.375,0,-1.757859, + -0.980785,0.19509,0,-0.375,0,0.4375, + -0.979876,0.195414,0.040695,-0.375,0,-1.757859, + -0.947173,0.320722,0,-0.346455,0.143506,0.4375, + -0.921725,0.383318,0.05908,-0.346455,0.143506,-1.759639, + -0.704865,0.70779,0.046895,-0.265165,0.265165,-1.76471, + -0.882346,0.387175,0.26751,-0.423809,0.143506,-2.377279, + -0.921725,0.383318,0.05908,-0.346455,0.143506,-1.759639, + -0.882346,0.387175,0.26751,-0.423809,0.143506,-2.377279, + -0.704865,0.70779,0.046895,-0.265165,0.265165,-1.76471, + -0.670724,0.711915,0.208102,-0.344833,0.265165,-2.400829, + -0.670724,0.711915,0.208102,-0.344833,0.265165,-2.400829, + -0.381068,0.924135,0.027592,-0.143506,0.346455,-1.772299, + -0.35955,0.925667,0.117746,-0.226638,0.346455,-2.436073, + -0.381068,0.924135,0.027592,-0.143506,0.346455,-1.772299, + -0.670724,0.711915,0.208102,-0.344833,0.265165,-2.400829, + -0.704865,0.70779,0.046895,-0.265165,0.265165,-1.76471, + -0.35955,0.925667,0.117746,-0.226638,0.346455,-2.436073, + 0.000257,0.999991,0.00412,0,0.375,-1.78125, + 0.003116,0.999941,0.010449,-0.087217,0.375,-2.477647, + 0.000257,0.999991,0.00412,0,0.375,-1.78125, + -0.35955,0.925667,0.117746,-0.226638,0.346455,-2.436073, + -0.381068,0.924135,0.027592,-0.143506,0.346455,-1.772299, + 0.003116,0.999941,0.010449,-0.087217,0.375,-2.477647, + 0.381543,0.924135,-0.019977,0.143506,0.346455,-1.790201, + 0.365318,0.925667,-0.098401,0.052203,0.346455,-2.51922, + 0.381543,0.924135,-0.019977,0.143506,0.346455,-1.790201, + 0.003116,0.999941,0.010449,-0.087217,0.375,-2.477647, + 0.000257,0.999991,0.00412,0,0.375,-1.78125, + 0.365318,0.925667,-0.098401,0.052203,0.346455,-2.51922, + 0.704059,0.707717,-0.058632,0.265165,0.265165,-1.79779, + 0.661307,0.711395,-0.237887,0.170398,0.265165,-2.554465, + 0.704059,0.707717,-0.058632,0.265165,0.265165,-1.79779, + 0.365318,0.925667,-0.098401,0.052203,0.346455,-2.51922, + 0.381543,0.924135,-0.019977,0.143506,0.346455,-1.790201, + 0.882346,0.387175,-0.26751,0.249374,0.143506,-2.578014, + 0.704059,0.707717,-0.058632,0.265165,0.265165,-1.79779, + 0.921725,0.383318,-0.05908,0.346455,0.143506,-1.802861, + 0.704059,0.707717,-0.058632,0.265165,0.265165,-1.79779, + 0.882346,0.387175,-0.26751,0.249374,0.143506,-2.578014, + 0.661307,0.711395,-0.237887,0.170398,0.265165,-2.554465, + 0.953546,0.197386,-0.227573,0.277106,0,-2.586284, + 0.921725,0.383318,-0.05908,0.346455,0.143506,-1.802861, + 0.979876,0.195414,-0.040695,0.375,0,-1.804641, + 0.921725,0.383318,-0.05908,0.346455,0.143506,-1.802861, + 0.953546,0.197386,-0.227573,0.277106,0,-2.586284, + 0.882346,0.387175,-0.26751,0.249374,0.143506,-2.578014, + -0.921725,0.383318,0.05908,-0.346455,0.143506,-1.759639, + -0.953546,0.197386,0.227573,-0.451541,0,-2.36901, + -0.979876,0.195414,0.040695,-0.375,0,-1.757859, + -0.953546,0.197386,0.227573,-0.451541,0,-2.36901, + -0.921725,0.383318,0.05908,-0.346455,0.143506,-1.759639, + -0.882346,0.387175,0.26751,-0.423809,0.143506,-2.377279, + -0.670724,0.711915,0.208102,-0.344833,0.265165,-2.400829, + -0.727589,0.447862,0.519648,-0.681469,0.143506,-2.903944, + -0.882346,0.387175,0.26751,-0.423809,0.143506,-2.377279, + -0.727589,0.447862,0.519648,-0.681469,0.143506,-2.903944, + -0.670724,0.711915,0.208102,-0.344833,0.265165,-2.400829, + -0.558784,0.739142,0.376071,-0.614405,0.265165,-2.951841, + -0.558784,0.739142,0.376071,-0.614405,0.265165,-2.951841, + -0.35955,0.925667,0.117746,-0.226638,0.346455,-2.436073, + -0.301902,0.925667,0.228024,-0.514037,0.346455,-3.023525, + -0.35955,0.925667,0.117746,-0.226638,0.346455,-2.436073, + -0.558784,0.739142,0.376071,-0.614405,0.265165,-2.951841, + -0.670724,0.711915,0.208102,-0.344833,0.265165,-2.400829, + -0.301902,0.925667,0.228024,-0.514037,0.346455,-3.023525, + 0.003116,0.999941,0.010449,-0.087217,0.375,-2.477647, + 0.006337,0.999941,0.008873,-0.395645,0.375,-3.108081, + 0.003116,0.999941,0.010449,-0.087217,0.375,-2.477647, + -0.301902,0.925667,0.228024,-0.514037,0.346455,-3.023525, + -0.35955,0.925667,0.117746,-0.226638,0.346455,-2.436073, + 0.006337,0.999941,0.008873,-0.395645,0.375,-3.108081, + 0.365318,0.925667,-0.098401,0.052203,0.346455,-2.51922, + 0.313635,0.925667,-0.211597,-0.277253,0.346455,-3.192637, + 0.365318,0.925667,-0.098401,0.052203,0.346455,-2.51922, + 0.006337,0.999941,0.008873,-0.395645,0.375,-3.108081, + 0.003116,0.999941,0.010449,-0.087217,0.375,-2.477647, + 0.313635,0.925667,-0.211597,-0.277253,0.346455,-3.192637, + 0.661307,0.711395,-0.237887,0.170398,0.265165,-2.554465, + 0.548361,0.711395,-0.439564,-0.176885,0.265165,-3.264321, + 0.661307,0.711395,-0.237887,0.170398,0.265165,-2.554465, + 0.313635,0.925667,-0.211597,-0.277253,0.346455,-3.192637, + 0.365318,0.925667,-0.098401,0.052203,0.346455,-2.51922, + 0.747834,0.387175,-0.539295,-0.109821,0.143506,-3.312218, + 0.661307,0.711395,-0.237887,0.170398,0.265165,-2.554465, + 0.882346,0.387175,-0.26751,0.249374,0.143506,-2.578014, + 0.661307,0.711395,-0.237887,0.170398,0.265165,-2.554465, + 0.747834,0.387175,-0.539295,-0.109821,0.143506,-3.312218, + 0.548361,0.711395,-0.439564,-0.176885,0.265165,-3.264321, + 0.82814,0.197386,-0.524617,-0.086272,0,-3.329037, + 0.882346,0.387175,-0.26751,0.249374,0.143506,-2.578014, + 0.953546,0.197386,-0.227573,0.277106,0,-2.586284, + 0.882346,0.387175,-0.26751,0.249374,0.143506,-2.578014, + 0.82814,0.197386,-0.524617,-0.086272,0,-3.329037, + 0.747834,0.387175,-0.539295,-0.109821,0.143506,-3.312218, + -0.882346,0.387175,0.26751,-0.423809,0.143506,-2.377279, + -0.797706,0.197679,0.569726,-0.705019,0,-2.887125, + -0.953546,0.197386,0.227573,-0.451541,0,-2.36901, + -0.797706,0.197679,0.569726,-0.705019,0,-2.887125, + -0.882346,0.387175,0.26751,-0.423809,0.143506,-2.377279, + -0.727589,0.447862,0.519648,-0.681469,0.143506,-2.903944, + -0.727589,0.447862,0.519648,-0.681469,0.143506,-2.903944, + -0.439564,0.711395,0.548361,-1.048159,0.265165,-3.385595, + -0.539295,0.387175,0.747834,-1.096056,0.143506,-3.318531, + -0.439564,0.711395,0.548361,-1.048159,0.265165,-3.385595, + -0.727589,0.447862,0.519648,-0.681469,0.143506,-2.903944, + -0.558784,0.739142,0.376071,-0.614405,0.265165,-2.951841, + -0.439564,0.711395,0.548361,-1.048159,0.265165,-3.385595, + -0.301902,0.925667,0.228024,-0.514037,0.346455,-3.023525, + -0.211597,0.925667,0.313635,-0.976475,0.346455,-3.485963, + -0.301902,0.925667,0.228024,-0.514037,0.346455,-3.023525, + -0.439564,0.711395,0.548361,-1.048159,0.265165,-3.385595, + -0.558784,0.739142,0.376071,-0.614405,0.265165,-2.951841, + -0.211597,0.925667,0.313635,-0.976475,0.346455,-3.485963, + 0.006337,0.999941,0.008873,-0.395645,0.375,-3.108081, + 0.008873,0.999941,0.006337,-0.891919,0.375,-3.604355, + 0.006337,0.999941,0.008873,-0.395645,0.375,-3.108081, + -0.211597,0.925667,0.313635,-0.976475,0.346455,-3.485963, + -0.301902,0.925667,0.228024,-0.514037,0.346455,-3.023525, + 0.008873,0.999941,0.006337,-0.891919,0.375,-3.604355, + 0.313635,0.925667,-0.211597,-0.277253,0.346455,-3.192637, + 0.228024,0.925667,-0.301902,-0.807363,0.346455,-3.722747, + 0.313635,0.925667,-0.211597,-0.277253,0.346455,-3.192637, + 0.008873,0.999941,0.006337,-0.891919,0.375,-3.604355, + 0.006337,0.999941,0.008873,-0.395645,0.375,-3.108081, + 0.228024,0.925667,-0.301902,-0.807363,0.346455,-3.722747, + 0.548361,0.711395,-0.439564,-0.176885,0.265165,-3.264321, + 0.376096,0.711395,-0.593691,-0.735679,0.265165,-3.823115, + 0.548361,0.711395,-0.439564,-0.176885,0.265165,-3.264321, + 0.228024,0.925667,-0.301902,-0.807363,0.346455,-3.722747, + 0.313635,0.925667,-0.211597,-0.277253,0.346455,-3.192637, + 0.532425,0.387175,-0.752741,-0.687782,0.143506,-3.890179, + 0.548361,0.711395,-0.439564,-0.176885,0.265165,-3.264321, + 0.747834,0.387175,-0.539295,-0.109821,0.143506,-3.312218, + 0.548361,0.711395,-0.439564,-0.176885,0.265165,-3.264321, + 0.532425,0.387175,-0.752741,-0.687782,0.143506,-3.890179, + 0.376096,0.711395,-0.593691,-0.735679,0.265165,-3.823115, + 0.747834,0.387175,-0.539295,-0.109821,0.143506,-3.312218, + 0.613149,0.197386,-0.76491,-0.670963,0,-3.913728, + 0.532425,0.387175,-0.752741,-0.687782,0.143506,-3.890179, + 0.613149,0.197386,-0.76491,-0.670963,0,-3.913728, + 0.747834,0.387175,-0.539295,-0.109821,0.143506,-3.312218, + 0.82814,0.197386,-0.524617,-0.086272,0,-3.329037, + -0.797706,0.197679,0.569726,-0.705019,0,-2.887125, + -0.539295,0.387175,0.747834,-1.096056,0.143506,-3.318531, + -0.524617,0.197386,0.82814,-1.112875,0,-3.294981, + -0.539295,0.387175,0.747834,-1.096056,0.143506,-3.318531, + -0.797706,0.197679,0.569726,-0.705019,0,-2.887125, + -0.727589,0.447862,0.519648,-0.681469,0.143506,-2.903944, + -0.539295,0.387175,0.747834,-1.096056,0.143506,-3.318531, + -0.237887,0.711395,0.661307,-1.599171,0.265165,-3.655167, + -0.26751,0.387175,0.882346,-1.622721,0.143506,-3.576191, + -0.237887,0.711395,0.661307,-1.599171,0.265165,-3.655167, + -0.539295,0.387175,0.747834,-1.096056,0.143506,-3.318531, + -0.439564,0.711395,0.548361,-1.048159,0.265165,-3.385595, + -0.237887,0.711395,0.661307,-1.599171,0.265165,-3.655167, + -0.211597,0.925667,0.313635,-0.976475,0.346455,-3.485963, + -0.098401,0.925667,0.365318,-1.563927,0.346455,-3.773362, + -0.211597,0.925667,0.313635,-0.976475,0.346455,-3.485963, + -0.237887,0.711395,0.661307,-1.599171,0.265165,-3.655167, + -0.439564,0.711395,0.548361,-1.048159,0.265165,-3.385595, + -0.098401,0.925667,0.365318,-1.563927,0.346455,-3.773362, + 0.008873,0.999941,0.006337,-0.891919,0.375,-3.604355, + 0.010449,0.999941,0.003116,-1.522353,0.375,-3.912783, + 0.008873,0.999941,0.006337,-0.891919,0.375,-3.604355, + -0.098401,0.925667,0.365318,-1.563927,0.346455,-3.773362, + -0.211597,0.925667,0.313635,-0.976475,0.346455,-3.485963, + 0.010449,0.999941,0.003116,-1.522353,0.375,-3.912783, + 0.228024,0.925667,-0.301902,-0.807363,0.346455,-3.722747, + 0.117746,0.925667,-0.35955,-1.48078,0.346455,-4.052203, + 0.228024,0.925667,-0.301902,-0.807363,0.346455,-3.722747, + 0.010449,0.999941,0.003116,-1.522353,0.375,-3.912783, + 0.008873,0.999941,0.006337,-0.891919,0.375,-3.604355, + 0.117746,0.925667,-0.35955,-1.48078,0.346455,-4.052203, + 0.376096,0.711395,-0.593691,-0.735679,0.265165,-3.823115, + 0.163146,0.711395,-0.683594,-1.445535,0.265165,-4.170398, + 0.376096,0.711395,-0.593691,-0.735679,0.265165,-3.823115, + 0.117746,0.925667,-0.35955,-1.48078,0.346455,-4.052203, + 0.228024,0.925667,-0.301902,-0.807363,0.346455,-3.722747, + 0.376096,0.711395,-0.593691,-0.735679,0.265165,-3.823115, + 0.259419,0.387175,-0.884758,-1.421986,0.143506,-4.249374, + 0.163146,0.711395,-0.683594,-1.445535,0.265165,-4.170398, + 0.259419,0.387175,-0.884758,-1.421986,0.143506,-4.249374, + 0.376096,0.711395,-0.593691,-0.735679,0.265165,-3.823115, + 0.532425,0.387175,-0.752741,-0.687782,0.143506,-3.890179, + 0.532425,0.387175,-0.752741,-0.687782,0.143506,-3.890179, + 0.331829,0.197386,-0.922458,-1.413716,0,-4.277106, + 0.259419,0.387175,-0.884758,-1.421986,0.143506,-4.249374, + 0.331829,0.197386,-0.922458,-1.413716,0,-4.277106, + 0.532425,0.387175,-0.752741,-0.687782,0.143506,-3.890179, + 0.613149,0.197386,-0.76491,-0.670963,0,-3.913728, + -0.524617,0.197386,0.82814,-1.112875,0,-3.294981, + -0.26751,0.387175,0.882346,-1.622721,0.143506,-3.576191, + -0.227573,0.197386,0.953546,-1.63099,0,-3.548459, + -0.26751,0.387175,0.882346,-1.622721,0.143506,-3.576191, + -0.524617,0.197386,0.82814,-1.112875,0,-3.294981, + -0.539295,0.387175,0.747834,-1.096056,0.143506,-3.318531, + -0.26751,0.387175,0.882346,-1.622721,0.143506,-3.576191, + -0.058632,0.707717,0.704059,-2.23529,0.265165,-3.734835, + -0.05908,0.383318,0.921725,-2.240361,0.143506,-3.653545, + -0.058632,0.707717,0.704059,-2.23529,0.265165,-3.734835, + -0.26751,0.387175,0.882346,-1.622721,0.143506,-3.576191, + -0.237887,0.711395,0.661307,-1.599171,0.265165,-3.655167, + -0.058632,0.707717,0.704059,-2.23529,0.265165,-3.734835, + -0.098401,0.925667,0.365318,-1.563927,0.346455,-3.773362, + -0.019977,0.924135,0.381543,-2.227701,0.346455,-3.856494, + -0.098401,0.925667,0.365318,-1.563927,0.346455,-3.773362, + -0.058632,0.707717,0.704059,-2.23529,0.265165,-3.734835, + -0.237887,0.711395,0.661307,-1.599171,0.265165,-3.655167, + -0.019977,0.924135,0.381543,-2.227701,0.346455,-3.856494, + 0.010449,0.999941,0.003116,-1.522353,0.375,-3.912783, + 0.00412,0.999991,0.000257,-2.21875,0.375,-4, + 0.010449,0.999941,0.003116,-1.522353,0.375,-3.912783, + -0.019977,0.924135,0.381543,-2.227701,0.346455,-3.856494, + -0.098401,0.925667,0.365318,-1.563927,0.346455,-3.773362, + 0.00412,0.999991,0.000257,-2.21875,0.375,-4, + 0.117746,0.925667,-0.35955,-1.48078,0.346455,-4.052203, + 0.027592,0.924135,-0.381068,-2.209799,0.346455,-4.143506, + 0.117746,0.925667,-0.35955,-1.48078,0.346455,-4.052203, + 0.00412,0.999991,0.000257,-2.21875,0.375,-4, + 0.010449,0.999941,0.003116,-1.522353,0.375,-3.912783, + 0.027592,0.924135,-0.381068,-2.209799,0.346455,-4.143506, + 0.163146,0.711395,-0.683594,-1.445535,0.265165,-4.170398, + 0.029316,0.707717,-0.705888,-2.20221,0.265165,-4.265165, + 0.163146,0.711395,-0.683594,-1.445535,0.265165,-4.170398, + 0.027592,0.924135,-0.381068,-2.209799,0.346455,-4.143506, + 0.117746,0.925667,-0.35955,-1.48078,0.346455,-4.052203, + 0.163146,0.711395,-0.683594,-1.445535,0.265165,-4.170398, + 0.055921,0.383318,-0.921922,-2.197139,0.143506,-4.346455, + 0.029316,0.707717,-0.705888,-2.20221,0.265165,-4.265165, + 0.055921,0.383318,-0.921922,-2.197139,0.143506,-4.346455, + 0.163146,0.711395,-0.683594,-1.445535,0.265165,-4.170398, + 0.259419,0.387175,-0.884758,-1.421986,0.143506,-4.249374, + 0.259419,0.387175,-0.884758,-1.421986,0.143506,-4.249374, + 0.08139,0.195414,-0.977338,-2.195359,0,-4.375, + 0.055921,0.383318,-0.921922,-2.197139,0.143506,-4.346455, + 0.08139,0.195414,-0.977338,-2.195359,0,-4.375, + 0.259419,0.387175,-0.884758,-1.421986,0.143506,-4.249374, + 0.331829,0.197386,-0.922458,-1.413716,0,-4.277106, + -0.227573,0.197386,0.953546,-1.63099,0,-3.548459, + -0.05908,0.383318,0.921725,-2.240361,0.143506,-3.653545, + -0.040695,0.195414,0.979876,-2.242141,0,-3.625, + -0.05908,0.383318,0.921725,-2.240361,0.143506,-3.653545, + -0.227573,0.197386,0.953546,-1.63099,0,-3.548459, + -0.26751,0.387175,0.882346,-1.622721,0.143506,-3.576191, + -0.05908,0.383318,0.921725,-2.240361,0.143506,-3.653545, + 0,0.707107,0.707107,-7.983022,0.265165,-3.734835, + 0,0.320722,0.947173,-7.983022,0.143506,-3.653545, + 0,0.707107,0.707107,-7.983022,0.265165,-3.734835, + -0.05908,0.383318,0.921725,-2.240361,0.143506,-3.653545, + -0.058632,0.707717,0.704059,-2.23529,0.265165,-3.734835, + 0,0.707107,0.707107,-7.983022,0.265165,-3.734835, + -0.019977,0.924135,0.381543,-2.227701,0.346455,-3.856494, + 0,0.947173,0.320722,-7.983022,0.346455,-3.856494, + -0.019977,0.924135,0.381543,-2.227701,0.346455,-3.856494, + 0,0.707107,0.707107,-7.983022,0.265165,-3.734835, + -0.058632,0.707717,0.704059,-2.23529,0.265165,-3.734835, + 0,0.947173,0.320722,-7.983022,0.346455,-3.856494, + 0.00412,0.999991,0.000257,-2.21875,0.375,-4, + 0,0.997809,-0.066159,-7.983022,0.375,-4, + 0.00412,0.999991,0.000257,-2.21875,0.375,-4, + 0,0.947173,0.320722,-7.983022,0.346455,-3.856494, + -0.019977,0.924135,0.381543,-2.227701,0.346455,-3.856494, + 0,0.997809,-0.066159,-7.983022,0.375,-4, + 0.027592,0.924135,-0.381068,-2.209799,0.346455,-4.143506, + 0,0.896538,-0.442968,-7.983022,0.346455,-4.143506, + 0.027592,0.924135,-0.381068,-2.209799,0.346455,-4.143506, + 0,0.997809,-0.066159,-7.983022,0.375,-4, + 0.00412,0.999991,0.000257,-2.21875,0.375,-4, + 0,0.896538,-0.442968,-7.983022,0.346455,-4.143506, + 0.029316,0.707717,-0.705888,-2.20221,0.265165,-4.265165, + 0,0.707107,-0.707107,-7.983022,0.265165,-4.265165, + 0.029316,0.707717,-0.705888,-2.20221,0.265165,-4.265165, + 0,0.896538,-0.442968,-7.983022,0.346455,-4.143506, + 0.027592,0.924135,-0.381068,-2.209799,0.346455,-4.143506, + 0.029316,0.707717,-0.705888,-2.20221,0.265165,-4.265165, + 0,0.442968,-0.896538,-7.983022,0.143506,-4.346455, + 0,0.707107,-0.707107,-7.983022,0.265165,-4.265165, + 0,0.442968,-0.896538,-7.983022,0.143506,-4.346455, + 0.029316,0.707717,-0.705888,-2.20221,0.265165,-4.265165, + 0.055921,0.383318,-0.921922,-2.197139,0.143506,-4.346455, + 0.055921,0.383318,-0.921922,-2.197139,0.143506,-4.346455, + 0,0.19509,-0.980785,-7.983022,0,-4.375, + 0,0.442968,-0.896538,-7.983022,0.143506,-4.346455, + 0,0.19509,-0.980785,-7.983022,0,-4.375, + 0.055921,0.383318,-0.921922,-2.197139,0.143506,-4.346455, + 0.08139,0.195414,-0.977338,-2.195359,0,-4.375, + -0.040695,0.195414,0.979876,-2.242141,0,-3.625, + 0,0.320722,0.947173,-7.983022,0.143506,-3.653545, + 0,0.19509,0.980785,-7.983022,0,-3.625, + 0,0.320722,0.947173,-7.983022,0.143506,-3.653545, + -0.040695,0.195414,0.979876,-2.242141,0,-3.625, + -0.05908,0.383318,0.921725,-2.240361,0.143506,-3.653545 +}; +static const struct gllist seccam_pipe_frame = { + GL_N3F_V3F, GL_TRIANGLES, 336, seccam_pipe_data, 0 +}; +const struct gllist *seccam_pipe = &seccam_pipe_frame; diff --git a/hacks/glx/seccam.dxf b/hacks/glx/seccam.dxf new file mode 100644 index 0000000..1afb828 --- /dev/null +++ b/hacks/glx/seccam.dxf @@ -0,0 +1,13606 @@ + 0 +SECTION + 2 +ENTITIES + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.25 +30 +5.0 +11 +7.750000000000005 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +3.0 +32 +3.5 +13 +-4.999999999999995 +23 +3.0 +33 +3.5 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +-4.999999999999995 +21 +2.25 +31 +5.0 +12 +7.750000000000005 +22 +2.25 +32 +5.0 +13 +7.750000000000005 +23 +2.25 +33 +5.0 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.4509122005603654 +30 +1.0102984675382511 +11 +-4.999999999999995 +21 +2.3687095903662865 +31 +1.0 +12 +-4.999999999999995 +22 +2.4509122005603654 +32 +1.0102984675382511 +13 +-4.999999999999995 +23 +2.4509122005603654 +33 +1.0102984675382511 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.3687095903662865 +30 +1.0 +11 +7.750000000000005 +21 +2.4509122005603654 +31 +1.0102984675382511 +12 +7.750000000000005 +22 +2.3687095903662865 +32 +1.0 +13 +7.750000000000005 +23 +2.3687095903662865 +33 +1.0 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +3.0 +30 +1.6312904096337157 +11 +7.750000000000005 +21 +2.9897015324617477 +31 +1.5490877994396335 +12 +-4.999999999999995 +22 +2.9897015324617477 +32 +1.5490877994396335 +13 +-4.999999999999995 +23 +2.9897015324617477 +33 +1.5490877994396335 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.9897015324617477 +30 +1.5490877994396335 +11 +-4.999999999999995 +21 +3.0 +31 +1.6312904096337157 +12 +7.750000000000005 +22 +3.0 +32 +1.6312904096337157 +13 +7.750000000000005 +23 +3.0 +33 +1.6312904096337157 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.3687095903662865 +30 +1.0 +11 +-4.999999999999995 +21 +2.25 +31 +1.0 +12 +-4.999999999999995 +22 +2.3687095903662865 +32 +1.0 +13 +-4.999999999999995 +23 +2.3687095903662865 +33 +1.0 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.25 +30 +1.0 +11 +7.750000000000005 +21 +2.3687095903662865 +31 +1.0 +12 +7.750000000000005 +22 +2.25 +32 +1.0 +13 +7.750000000000005 +23 +2.25 +33 +1.0 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.6402416202020973 +30 +1.078314212963632 +11 +-4.999999999999995 +21 +2.5480782113171188 +31 +1.0373436898884558 +12 +-4.999999999999995 +22 +2.6402416202020973 +32 +1.078314212963632 +13 +-4.999999999999995 +23 +2.6402416202020973 +33 +1.078314212963632 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.5480782113171188 +30 +1.0373436898884558 +11 +7.750000000000005 +21 +2.6402416202020973 +31 +1.078314212963632 +12 +7.750000000000005 +22 +2.5480782113171188 +32 +1.0373436898884558 +13 +7.750000000000005 +23 +2.5480782113171188 +33 +1.0373436898884558 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.921685787036367 +30 +1.3597583797979014 +11 +7.750000000000005 +21 +2.867671745559793 +31 +1.2745811467968204 +12 +-4.999999999999995 +22 +2.867671745559793 +32 +1.2745811467968204 +13 +-4.999999999999995 +23 +2.867671745559793 +33 +1.2745811467968204 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.867671745559793 +30 +1.2745811467968204 +11 +-4.999999999999995 +21 +2.921685787036367 +31 +1.3597583797979014 +12 +7.750000000000005 +22 +2.921685787036367 +32 +1.3597583797979014 +13 +7.750000000000005 +23 +2.921685787036367 +33 +1.3597583797979014 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +1.0 +11 +-4.999999999999995 +21 +0.0 +31 +1.0 +12 +-4.999999999999995 +22 +2.25 +32 +1.0 +13 +-4.999999999999995 +23 +2.25 +33 +1.0 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +0.0 +30 +1.0 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.750000000000005 +22 +0.0 +32 +1.0 +13 +7.750000000000005 +23 +0.0 +33 +1.0 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +0.0 +30 +5.0 +11 +-4.999999999999995 +21 +2.25 +31 +5.0 +12 +-4.999999999999995 +22 +0.0 +32 +5.0 +13 +-4.999999999999995 +23 +0.0 +33 +5.0 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.25 +30 +5.0 +11 +7.750000000000005 +21 +0.0 +31 +5.0 +12 +7.750000000000005 +22 +2.25 +32 +5.0 +13 +7.750000000000005 +23 +2.25 +33 +5.0 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.7254188532031787 +30 +1.1323282544402056 +11 +-4.999999999999995 +21 +2.6402416202020973 +31 +1.078314212963632 +12 +-4.999999999999995 +22 +2.7254188532031787 +32 +1.1323282544402056 +13 +-4.999999999999995 +23 +2.7254188532031787 +33 +1.1323282544402056 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.6402416202020973 +30 +1.078314212963632 +11 +7.750000000000005 +21 +2.7254188532031787 +31 +1.1323282544402056 +12 +7.750000000000005 +22 +2.6402416202020973 +32 +1.078314212963632 +13 +7.750000000000005 +23 +2.6402416202020973 +33 +1.078314212963632 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +3.0 +30 +1.75 +11 +7.750000000000005 +21 +3.0 +31 +1.6312904096337157 +12 +-4.999999999999995 +22 +3.0 +32 +1.6312904096337157 +13 +-4.999999999999995 +23 +3.0 +33 +1.6312904096337157 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +1.6312904096337157 +11 +-4.999999999999995 +21 +3.0 +31 +1.75 +12 +7.750000000000005 +22 +3.0 +32 +1.75 +13 +7.750000000000005 +23 +3.0 +33 +1.75 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.9626563101115444 +30 +1.4519217886828808 +11 +7.750000000000005 +21 +2.921685787036367 +31 +1.3597583797979014 +12 +-4.999999999999995 +22 +2.921685787036367 +32 +1.3597583797979014 +13 +-4.999999999999995 +23 +2.921685787036367 +33 +1.3597583797979014 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.921685787036367 +30 +1.3597583797979014 +11 +-4.999999999999995 +21 +2.9626563101115444 +31 +1.4519217886828808 +12 +7.750000000000005 +22 +2.9626563101115444 +32 +1.4519217886828808 +13 +7.750000000000005 +23 +2.9626563101115444 +33 +1.4519217886828808 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.867671745559793 +30 +1.2745811467968204 +11 +7.750000000000005 +21 +2.8017766952966365 +31 +1.1982233047033635 +12 +-4.999999999999995 +22 +2.8017766952966365 +32 +1.1982233047033635 +13 +-4.999999999999995 +23 +2.8017766952966365 +33 +1.1982233047033635 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.8017766952966365 +30 +1.1982233047033635 +11 +-4.999999999999995 +21 +2.867671745559793 +31 +1.2745811467968204 +12 +7.750000000000005 +22 +2.867671745559793 +32 +1.2745811467968204 +13 +7.750000000000005 +23 +2.867671745559793 +33 +1.2745811467968204 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +3.0 +31 +1.75 +12 +-4.999999999999995 +22 +3.0 +32 +1.75 +13 +-4.999999999999995 +23 +3.0 +33 +1.75 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +1.75 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +7.750000000000005 +22 +3.0 +32 +3.5 +13 +7.750000000000005 +23 +3.0 +33 +3.5 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.9897015324617477 +30 +1.5490877994396335 +11 +7.750000000000005 +21 +2.9626563101115444 +31 +1.4519217886828808 +12 +-4.999999999999995 +22 +2.9626563101115444 +32 +1.4519217886828808 +13 +-4.999999999999995 +23 +2.9626563101115444 +33 +1.4519217886828808 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.9626563101115444 +30 +1.4519217886828808 +11 +-4.999999999999995 +21 +2.9897015324617477 +31 +1.5490877994396335 +12 +7.750000000000005 +22 +2.9897015324617477 +32 +1.5490877994396335 +13 +7.750000000000005 +23 +2.9897015324617477 +33 +1.5490877994396335 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.8017766952966365 +30 +1.1982233047033635 +11 +-4.999999999999995 +21 +2.7254188532031787 +31 +1.1323282544402056 +12 +-4.999999999999995 +22 +2.8017766952966365 +32 +1.1982233047033635 +13 +-4.999999999999995 +23 +2.8017766952966365 +33 +1.1982233047033635 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.7254188532031787 +30 +1.1323282544402056 +11 +7.750000000000005 +21 +2.8017766952966365 +31 +1.1982233047033635 +12 +7.750000000000005 +22 +2.7254188532031787 +32 +1.1323282544402056 +13 +7.750000000000005 +23 +2.7254188532031787 +33 +1.1323282544402056 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.5480782113171188 +30 +1.0373436898884558 +11 +-4.999999999999995 +21 +2.4509122005603654 +31 +1.0102984675382511 +12 +-4.999999999999995 +22 +2.5480782113171188 +32 +1.0373436898884558 +13 +-4.999999999999995 +23 +2.5480782113171188 +33 +1.0373436898884558 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.4509122005603654 +30 +1.0102984675382511 +11 +7.750000000000005 +21 +2.5480782113171188 +31 +1.0373436898884558 +12 +7.750000000000005 +22 +2.4509122005603654 +32 +1.0102984675382511 +13 +7.750000000000005 +23 +2.4509122005603654 +33 +1.0102984675382511 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0022393770907527 +30 +1.649165170260476 +11 +7.750000000000005 +21 +3.0 +31 +1.75 +12 +7.750000000000005 +22 +3.0 +32 +1.6312904096337157 +13 +7.750000000000005 +23 +3.0 +33 +1.6312904096337157 +70 +0 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.3687095903662865 +30 +1.0 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.750000000000005 +22 +2.350834829739524 +32 +0.9977606229092469 +13 +7.750000000000005 +23 +2.350834829739524 +33 +0.9977606229092469 +70 +0 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +1.0 +11 +7.750000000000005 +21 +0.0 +31 +1.875 +12 +7.750000000000005 +22 +0.0 +32 +1.0 +13 +7.750000000000005 +23 +0.0 +33 +1.0 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +0.0 +30 +1.875 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.750000000000005 +22 +1.1747544018386193 +32 +1.8759471195380106 +13 +7.750000000000005 +23 +1.1747544018386193 +33 +1.8759471195380106 +70 +3 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +1.1747544018386193 +30 +1.8759471195380106 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.750000000000005 +22 +1.2457732068062848 +32 +1.8996200545272304 +13 +7.750000000000005 +23 +1.2457732068062848 +33 +1.8996200545272304 +70 +3 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +1.2457732068062848 +30 +1.8996200545272304 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.750000000000007 +22 +1.3062249999999933 +32 +1.9437749999999956 +13 +7.750000000000007 +23 +1.3062249999999933 +33 +1.9437749999999956 +70 +3 + 0 +3DFACE + 8 +body +10 +7.750000000000007 +20 +1.3062249999999933 +30 +1.9437749999999956 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.750000000000007 +22 +1.350379945472767 +32 +2.0042267931937126 +13 +7.750000000000007 +23 +1.350379945472767 +33 +2.0042267931937126 +70 +3 + 0 +3DFACE + 8 +body +10 +7.750000000000007 +20 +1.350379945472767 +30 +2.0042267931937126 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.750000000000005 +22 +1.3740528804619876 +32 +2.075245598161383 +13 +7.750000000000005 +23 +1.3740528804619876 +33 +2.075245598161383 +70 +3 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +1.3740528804619876 +30 +2.075245598161383 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.7500000000000036 +22 +1.3740528804619905 +32 +3.9247544018386162 +13 +7.7500000000000036 +23 +1.3740528804619905 +33 +3.9247544018386162 +70 +3 + 0 +3DFACE + 8 +body +10 +7.7500000000000036 +20 +1.1747544018386225 +30 +4.124052880461991 +11 +7.750000000000005 +21 +0.0 +31 +5.0 +12 +7.750000000000005 +22 +0.0 +32 +4.125 +13 +7.750000000000005 +23 +0.0 +33 +4.125 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +0.0 +30 +5.0 +11 +7.7500000000000036 +21 +1.1747544018386225 +31 +4.124052880461991 +12 +7.750000000000005 +22 +2.25 +32 +5.0 +13 +7.750000000000005 +23 +2.25 +33 +5.0 +70 +3 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +5.0 +11 +7.7500000000000036 +21 +1.1747544018386225 +31 +4.124052880461991 +12 +7.7500000000000036 +22 +1.2457732068062874 +32 +4.100379945472771 +13 +7.7500000000000036 +23 +1.2457732068062874 +33 +4.100379945472771 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +5.0 +11 +7.7500000000000036 +21 +1.2457732068062874 +31 +4.100379945472771 +12 +7.7500000000000036 +22 +1.3062249999999964 +32 +4.056225000000004 +13 +7.7500000000000036 +23 +1.3062249999999964 +33 +4.056225000000004 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +5.0 +11 +7.7500000000000036 +21 +1.3062249999999964 +31 +4.056225000000004 +12 +7.7500000000000036 +22 +1.3503799454727698 +32 +3.9957732068062874 +13 +7.7500000000000036 +23 +1.3503799454727698 +33 +3.9957732068062874 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +5.0 +11 +7.7500000000000036 +21 +1.3503799454727698 +31 +3.9957732068062874 +12 +7.7500000000000036 +22 +1.3740528804619905 +32 +3.9247544018386162 +13 +7.7500000000000036 +23 +1.3740528804619905 +33 +3.9247544018386162 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +5.0 +11 +7.7500000000000036 +21 +1.3740528804619905 +31 +3.9247544018386162 +12 +7.750000000000005 +22 +2.25 +32 +1.0 +13 +7.750000000000005 +23 +2.25 +33 +1.0 +70 +15 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +5.0 +11 +7.750000000000005 +21 +2.25 +31 +1.0 +12 +7.750000000000005 +22 +2.3687095903662865 +32 +1.0 +13 +7.750000000000005 +23 +2.3687095903662865 +33 +1.0 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +2.25 +30 +5.0 +11 +7.750000000000005 +21 +2.3687095903662865 +31 +1.0 +12 +7.750000000000005 +22 +3.0 +32 +3.5 +13 +7.750000000000005 +23 +3.0 +33 +3.5 +70 +3 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.3687095903662865 +31 +1.0 +12 +7.750000000000005 +22 +2.4509122005603654 +32 +1.0102984675382511 +13 +7.750000000000005 +23 +2.4509122005603654 +33 +1.0102984675382511 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.4509122005603654 +31 +1.0102984675382511 +12 +7.750000000000005 +22 +2.5480782113171188 +32 +1.0373436898884558 +13 +7.750000000000005 +23 +2.5480782113171188 +33 +1.0373436898884558 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.5480782113171188 +31 +1.0373436898884558 +12 +7.750000000000005 +22 +2.6402416202020973 +32 +1.078314212963632 +13 +7.750000000000005 +23 +2.6402416202020973 +33 +1.078314212963632 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.6402416202020973 +31 +1.078314212963632 +12 +7.750000000000005 +22 +2.7254188532031787 +32 +1.1323282544402056 +13 +7.750000000000005 +23 +2.7254188532031787 +33 +1.1323282544402056 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.7254188532031787 +31 +1.1323282544402056 +12 +7.750000000000005 +22 +2.8017766952966365 +32 +1.1982233047033635 +13 +7.750000000000005 +23 +2.8017766952966365 +33 +1.1982233047033635 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.8017766952966365 +31 +1.1982233047033635 +12 +7.750000000000005 +22 +2.867671745559793 +32 +1.2745811467968204 +13 +7.750000000000005 +23 +2.867671745559793 +33 +1.2745811467968204 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.867671745559793 +31 +1.2745811467968204 +12 +7.750000000000005 +22 +2.921685787036367 +32 +1.3597583797979014 +13 +7.750000000000005 +23 +2.921685787036367 +33 +1.3597583797979014 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.921685787036367 +31 +1.3597583797979014 +12 +7.750000000000005 +22 +2.9626563101115444 +32 +1.4519217886828808 +13 +7.750000000000005 +23 +2.9626563101115444 +33 +1.4519217886828808 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.9626563101115444 +31 +1.4519217886828808 +12 +7.750000000000005 +22 +2.9897015324617477 +32 +1.5490877994396335 +13 +7.750000000000005 +23 +2.9897015324617477 +33 +1.5490877994396335 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +2.9897015324617477 +31 +1.5490877994396335 +12 +7.750000000000005 +22 +3.0 +32 +1.6312904096337157 +13 +7.750000000000005 +23 +3.0 +33 +1.6312904096337157 +70 +13 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +3.0 +30 +3.5 +11 +7.750000000000005 +21 +3.0 +31 +1.6312904096337157 +12 +7.750000000000005 +22 +3.0 +32 +1.75 +13 +7.750000000000005 +23 +3.0 +33 +1.75 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +1.3740528804619876 +30 +2.075245598161383 +11 +7.550000000000008 +21 +1.350379945472767 +31 +2.0042267931937126 +12 +7.750000000000007 +22 +1.350379945472767 +32 +2.0042267931937126 +13 +7.750000000000007 +23 +1.350379945472767 +33 +2.0042267931937126 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000008 +20 +1.350379945472767 +30 +2.0042267931937126 +11 +7.750000000000005 +21 +1.3740528804619876 +31 +2.075245598161383 +12 +7.550000000000006 +22 +1.3740528804619876 +32 +2.075245598161383 +13 +7.550000000000006 +23 +1.3740528804619876 +33 +2.075245598161383 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +0.0 +30 +1.875 +11 +7.550000000000006 +21 +1.1747544018386193 +31 +1.8759471195380104 +12 +7.550000000000006 +22 +-2.222303025906979e-17 +32 +1.8749999999999998 +13 +7.550000000000006 +23 +-2.222303025906979e-17 +33 +1.8749999999999998 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000006 +20 +1.1747544018386193 +30 +1.8759471195380104 +11 +7.750000000000005 +21 +0.0 +31 +1.875 +12 +7.750000000000005 +22 +1.1747544018386193 +32 +1.8759471195380106 +13 +7.750000000000005 +23 +1.1747544018386193 +33 +1.8759471195380106 +70 +1 + 0 +3DFACE + 8 +body +10 +7.7500000000000036 +20 +1.1747544018386225 +30 +4.124052880461991 +11 +7.550000000000006 +21 +-2.222303025906979e-17 +31 +4.125 +12 +7.550000000000004 +22 +1.1747544018386225 +32 +4.124052880461991 +13 +7.550000000000004 +23 +1.1747544018386225 +33 +4.124052880461991 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000006 +20 +-2.222303025906979e-17 +30 +4.125 +11 +7.7500000000000036 +21 +1.1747544018386225 +31 +4.124052880461991 +12 +7.750000000000005 +22 +0.0 +32 +4.125 +13 +7.750000000000005 +23 +0.0 +33 +4.125 +70 +1 + 0 +3DFACE + 8 +body +10 +7.7500000000000036 +20 +1.2457732068062874 +30 +4.100379945472771 +11 +7.550000000000004 +21 +1.1747544018386225 +31 +4.124052880461991 +12 +7.550000000000004 +22 +1.2457732068062874 +32 +4.100379945472771 +13 +7.550000000000004 +23 +1.2457732068062874 +33 +4.100379945472771 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000004 +20 +1.1747544018386225 +30 +4.124052880461991 +11 +7.7500000000000036 +21 +1.2457732068062874 +31 +4.100379945472771 +12 +7.7500000000000036 +22 +1.1747544018386225 +32 +4.124052880461991 +13 +7.7500000000000036 +23 +1.1747544018386225 +33 +4.124052880461991 +70 +1 + 0 +3DFACE + 8 +body +10 +7.7500000000000036 +20 +1.3503799454727698 +30 +3.9957732068062874 +11 +7.550000000000004 +21 +1.3740528804619905 +31 +3.9247544018386162 +12 +7.7500000000000036 +22 +1.3740528804619905 +32 +3.9247544018386162 +13 +7.7500000000000036 +23 +1.3740528804619905 +33 +3.9247544018386162 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000004 +20 +1.3740528804619905 +30 +3.9247544018386162 +11 +7.7500000000000036 +21 +1.3503799454727698 +31 +3.9957732068062874 +12 +7.550000000000004 +22 +1.3503799454727698 +32 +3.9957732068062874 +13 +7.550000000000004 +23 +1.3503799454727698 +33 +3.9957732068062874 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000007 +20 +1.3062249999999933 +30 +1.9437749999999956 +11 +7.550000000000008 +21 +1.350379945472767 +31 +2.0042267931937126 +12 +7.550000000000008 +22 +1.3062249999999933 +32 +1.9437749999999956 +13 +7.550000000000008 +23 +1.3062249999999933 +33 +1.9437749999999956 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000008 +20 +1.350379945472767 +30 +2.0042267931937126 +11 +7.750000000000007 +21 +1.3062249999999933 +31 +1.9437749999999956 +12 +7.750000000000007 +22 +1.350379945472767 +32 +2.0042267931937126 +13 +7.750000000000007 +23 +1.350379945472767 +33 +2.0042267931937126 +70 +1 + 0 +3DFACE + 8 +body +10 +7.7500000000000036 +20 +1.3062249999999964 +30 +4.056225000000004 +11 +7.550000000000004 +21 +1.2457732068062874 +31 +4.100379945472771 +12 +7.550000000000004 +22 +1.3062249999999964 +32 +4.056225000000004 +13 +7.550000000000004 +23 +1.3062249999999964 +33 +4.056225000000004 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000004 +20 +1.2457732068062874 +30 +4.100379945472771 +11 +7.7500000000000036 +21 +1.3062249999999964 +31 +4.056225000000004 +12 +7.7500000000000036 +22 +1.2457732068062874 +32 +4.100379945472771 +13 +7.7500000000000036 +23 +1.2457732068062874 +33 +4.100379945472771 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +1.1747544018386193 +30 +1.8759471195380106 +11 +7.550000000000006 +21 +1.2457732068062848 +31 +1.8996200545272304 +12 +7.550000000000006 +22 +1.1747544018386193 +32 +1.8759471195380104 +13 +7.550000000000006 +23 +1.1747544018386193 +33 +1.8759471195380104 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000006 +20 +1.2457732068062848 +30 +1.8996200545272304 +11 +7.750000000000005 +21 +1.1747544018386193 +31 +1.8759471195380106 +12 +7.750000000000005 +22 +1.2457732068062848 +32 +1.8996200545272304 +13 +7.750000000000005 +23 +1.2457732068062848 +33 +1.8996200545272304 +70 +1 + 0 +3DFACE + 8 +body +10 +7.7500000000000036 +20 +1.3740528804619905 +30 +3.9247544018386162 +11 +7.550000000000006 +21 +1.3740528804619876 +31 +2.075245598161383 +12 +7.750000000000005 +22 +1.3740528804619876 +32 +2.075245598161383 +13 +7.750000000000005 +23 +1.3740528804619876 +33 +2.075245598161383 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000006 +20 +1.3740528804619876 +30 +2.075245598161383 +11 +7.7500000000000036 +21 +1.3740528804619905 +31 +3.9247544018386162 +12 +7.550000000000004 +22 +1.3740528804619905 +32 +3.9247544018386162 +13 +7.550000000000004 +23 +1.3740528804619905 +33 +3.9247544018386162 +70 +1 + 0 +3DFACE + 8 +body +10 +7.750000000000005 +20 +1.2457732068062848 +30 +1.8996200545272304 +11 +7.550000000000008 +21 +1.3062249999999933 +31 +1.9437749999999956 +12 +7.550000000000006 +22 +1.2457732068062848 +32 +1.8996200545272304 +13 +7.550000000000006 +23 +1.2457732068062848 +33 +1.8996200545272304 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000008 +20 +1.3062249999999933 +30 +1.9437749999999956 +11 +7.750000000000005 +21 +1.2457732068062848 +31 +1.8996200545272304 +12 +7.750000000000007 +22 +1.3062249999999933 +32 +1.9437749999999956 +13 +7.750000000000007 +23 +1.3062249999999933 +33 +1.9437749999999956 +70 +1 + 0 +3DFACE + 8 +body +10 +7.7500000000000036 +20 +1.3062249999999964 +30 +4.056225000000004 +11 +7.550000000000004 +21 +1.3503799454727698 +31 +3.9957732068062874 +12 +7.7500000000000036 +22 +1.3503799454727698 +32 +3.9957732068062874 +13 +7.7500000000000036 +23 +1.3503799454727698 +33 +3.9957732068062874 +70 +1 + 0 +3DFACE + 8 +body +10 +7.550000000000004 +20 +1.3503799454727698 +30 +3.9957732068062874 +11 +7.7500000000000036 +21 +1.3062249999999964 +31 +4.056225000000004 +12 +7.550000000000004 +22 +1.3062249999999964 +32 +4.056225000000004 +13 +7.550000000000004 +23 +1.3062249999999964 +33 +4.056225000000004 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.25 +30 +5.0 +11 +-4.999999999999995 +21 +0.0 +31 +1.0 +12 +-4.999999999999995 +22 +0.0 +32 +5.0 +13 +-4.999999999999995 +23 +0.0 +33 +5.0 +70 +1 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +0.0 +30 +1.0 +11 +-4.999999999999995 +21 +2.25 +31 +5.0 +12 +-4.999999999999995 +22 +2.25 +32 +1.0 +13 +-4.999999999999995 +23 +2.25 +33 +1.0 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.25 +30 +1.0 +11 +-4.999999999999995 +21 +2.25 +31 +5.0 +12 +-4.999999999999995 +22 +3.0 +32 +3.5 +13 +-4.999999999999995 +23 +3.0 +33 +3.5 +70 +13 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.25 +30 +1.0 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.3687095903662865 +32 +1.0 +13 +-4.999999999999995 +23 +2.3687095903662865 +33 +1.0 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.3687095903662865 +30 +1.0 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.4509122005603654 +32 +1.0102984675382511 +13 +-4.999999999999995 +23 +2.4509122005603654 +33 +1.0102984675382511 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.4509122005603654 +30 +1.0102984675382511 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.5480782113171188 +32 +1.0373436898884558 +13 +-4.999999999999995 +23 +2.5480782113171188 +33 +1.0373436898884558 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.5480782113171188 +30 +1.0373436898884558 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.6402416202020973 +32 +1.078314212963632 +13 +-4.999999999999995 +23 +2.6402416202020973 +33 +1.078314212963632 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.6402416202020973 +30 +1.078314212963632 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.7254188532031787 +32 +1.1323282544402056 +13 +-4.999999999999995 +23 +2.7254188532031787 +33 +1.1323282544402056 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.7254188532031787 +30 +1.1323282544402056 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.8017766952966365 +32 +1.1982233047033635 +13 +-4.999999999999995 +23 +2.8017766952966365 +33 +1.1982233047033635 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.8017766952966365 +30 +1.1982233047033635 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.867671745559793 +32 +1.2745811467968204 +13 +-4.999999999999995 +23 +2.867671745559793 +33 +1.2745811467968204 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.867671745559793 +30 +1.2745811467968204 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.921685787036367 +32 +1.3597583797979014 +13 +-4.999999999999995 +23 +2.921685787036367 +33 +1.3597583797979014 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.921685787036367 +30 +1.3597583797979014 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.9626563101115444 +32 +1.4519217886828808 +13 +-4.999999999999995 +23 +2.9626563101115444 +33 +1.4519217886828808 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.9626563101115444 +30 +1.4519217886828808 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +2.9897015324617477 +32 +1.5490877994396335 +13 +-4.999999999999995 +23 +2.9897015324617477 +33 +1.5490877994396335 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +2.9897015324617477 +30 +1.5490877994396335 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +3.0 +32 +1.6312904096337157 +13 +-4.999999999999995 +23 +3.0 +33 +1.6312904096337157 +70 +3 + 0 +3DFACE + 8 +body +10 +-4.999999999999995 +20 +3.0 +30 +1.6312904096337157 +11 +-4.999999999999995 +21 +3.0 +31 +3.5 +12 +-4.999999999999995 +22 +3.0 +32 +1.75 +13 +-4.999999999999995 +23 +3.0 +33 +1.75 +70 +1 + 0 +LINE + 8 +pipe +10 +-0.08721736878314612 +20 +8.494352845371596e-15 +30 +-2.4776466855968224 +11 +-0.3956452587067991 +21 +1.0422940645021578e-14 +31 +-3.1080810198814763 + 0 +LINE + 8 +pipe +10 +-1.5223533144031824 +20 +1.2493526601693497e-14 +30 +-3.9127826312168583 +11 +-2.2187500000000036 +21 +1.2411535748317739e-14 +31 +-4.000000000000002 + 0 +LINE + 8 +pipe +10 +-2.6645352591003757e-15 +20 +6.228730001642882e-15 +30 +-1.7812500000000018 +11 +-2.6645352591003757e-15 +21 +4.592425496802568e-17 +31 +0.4374999999999982 + 0 +LINE + 8 +pipe +10 +-8.000000000000002 +20 +1.2411535748317739e-14 +30 +-4.000000000000002 +11 +-2.2187500000000036 +21 +1.2411535748317739e-14 +31 +-4.000000000000002 + 0 +LINE + 8 +pipe +10 +-2.6645352591003757e-15 +20 +6.228730001642882e-15 +30 +-1.7812500000000018 +11 +-0.08721736878314612 +21 +8.494352845371596e-15 +31 +-2.4776466855968224 + 0 +LINE + 8 +pipe +10 +-0.8919189801185281 +20 +1.1805865272252293e-14 +30 +-3.604354741293205 +11 +-1.5223533144031824 +21 +1.2493526601693497e-14 +31 +-3.9127826312168583 + 0 +LINE + 8 +pipe +10 +-0.3956452587067991 +20 +1.0422940645021578e-14 +30 +-3.1080810198814763 +11 +-0.8919189801185281 +21 +1.1805865272252293e-14 +31 +-3.604354741293205 + 0 +3DFACE + 8 +pipe +10 +-0.2651650429449557 +20 +0.2651650429449638 +30 +0.4374999999999982 +11 +-0.3464548246917367 +21 +0.14350628713692343 +31 +-1.7596392507172038 +12 +-0.3464548246917367 +22 +0.1435062871369173 +32 +0.4374999999999982 +13 +-0.3464548246917367 +23 +0.1435062871369173 +33 +0.4374999999999982 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.3464548246917367 +20 +0.14350628713692343 +30 +-1.7596392507172038 +11 +-0.2651650429449557 +21 +0.2651650429449638 +31 +0.4374999999999982 +12 +-0.2651650429449557 +22 +0.26516504294496995 +32 +-1.764709848576957 +13 +-0.2651650429449557 +23 +0.26516504294496995 +33 +-1.764709848576957 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.2651650429449557 +20 +0.26516504294496995 +30 +-1.764709848576957 +11 +-0.1435062871369066 +21 +0.34645482469173966 +31 +0.4374999999999982 +12 +-0.1435062871369066 +22 +0.3464548246917458 +32 +-1.7722985345540216 +13 +-0.1435062871369066 +23 +0.3464548246917458 +33 +-1.7722985345540216 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.1435062871369066 +20 +0.34645482469173966 +30 +0.4374999999999982 +11 +-0.2651650429449557 +21 +0.26516504294496995 +31 +-1.764709848576957 +12 +-0.2651650429449557 +22 +0.2651650429449638 +32 +0.4374999999999982 +13 +-0.2651650429449557 +23 +0.2651650429449638 +33 +0.4374999999999982 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.1435062871369066 +20 +0.3464548246917458 +30 +-1.7722985345540216 +11 +5.329070518200751e-15 +21 +0.37500000000000466 +31 +0.4374999999999982 +12 +5.329070518200751e-15 +22 +0.3750000000000108 +32 +-1.7812500000000009 +13 +5.329070518200751e-15 +23 +0.3750000000000108 +33 +-1.7812500000000009 +70 +1 + 0 +3DFACE + 8 +pipe +10 +5.329070518200751e-15 +20 +0.37500000000000466 +30 +0.4374999999999982 +11 +-0.1435062871369066 +21 +0.3464548246917458 +31 +-1.7722985345540216 +12 +-0.1435062871369066 +22 +0.34645482469173966 +32 +0.4374999999999982 +13 +-0.1435062871369066 +23 +0.34645482469173966 +33 +0.4374999999999982 +70 +1 + 0 +3DFACE + 8 +pipe +10 +5.329070518200751e-15 +20 +0.3750000000000108 +30 +-1.7812500000000009 +11 +0.1435062871369155 +21 +0.34645482469173394 +31 +0.4374999999999982 +12 +0.1435062871369155 +22 +0.34645482469174016 +32 +-1.7902014654459806 +13 +0.1435062871369155 +23 +0.34645482469174016 +33 +-1.7902014654459806 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.1435062871369155 +20 +0.34645482469173394 +30 +0.4374999999999982 +11 +5.329070518200751e-15 +21 +0.3750000000000108 +31 +-1.7812500000000009 +12 +5.329070518200751e-15 +22 +0.37500000000000466 +32 +0.4374999999999982 +13 +5.329070518200751e-15 +23 +0.37500000000000466 +33 +0.4374999999999982 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.1435062871369155 +20 +0.34645482469174016 +30 +-1.7902014654459806 +11 +0.265165042944961 +21 +0.26516504294495347 +31 +0.4374999999999982 +12 +0.265165042944961 +22 +0.2651650429449597 +32 +-1.7977901514230457 +13 +0.265165042944961 +23 +0.2651650429449597 +33 +-1.7977901514230457 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.265165042944961 +20 +0.26516504294495347 +30 +0.4374999999999982 +11 +0.1435062871369155 +21 +0.34645482469174016 +31 +-1.7902014654459806 +12 +0.1435062871369155 +22 +0.34645482469173394 +32 +0.4374999999999982 +13 +0.1435062871369155 +23 +0.34645482469173394 +33 +0.4374999999999982 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.3464548246917367 +20 +0.14350628713691005 +30 +-1.8028607492827988 +11 +0.265165042944961 +21 +0.26516504294495347 +31 +0.4374999999999982 +12 +0.3464548246917367 +22 +0.1435062871369038 +32 +0.4374999999999982 +13 +0.3464548246917367 +23 +0.1435062871369038 +33 +0.4374999999999982 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.265165042944961 +20 +0.26516504294495347 +30 +0.4374999999999982 +11 +0.3464548246917367 +21 +0.14350628713691005 +31 +-1.8028607492827988 +12 +0.265165042944961 +22 +0.2651650429449597 +32 +-1.7977901514230457 +13 +0.265165042944961 +23 +0.2651650429449597 +33 +-1.7977901514230457 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.3750000000000018 +20 +-1.1024457386968605e-15 +30 +-1.8046413064661762 +11 +0.3464548246917367 +21 +0.1435062871369038 +31 +0.4374999999999982 +12 +0.3750000000000018 +22 +-7.350434090010048e-15 +32 +0.4374999999999982 +13 +0.3750000000000018 +23 +-7.350434090010048e-15 +33 +0.4374999999999982 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.3464548246917367 +20 +0.1435062871369038 +30 +0.4374999999999982 +11 +0.3750000000000018 +21 +-1.1024457386968605e-15 +31 +-1.8046413064661762 +12 +0.3464548246917367 +22 +0.14350628713691005 +32 +-1.8028607492827988 +13 +0.3464548246917367 +23 +0.14350628713691005 +33 +-1.8028607492827988 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.3464548246917367 +20 +0.1435062871369173 +30 +0.4374999999999982 +11 +-0.3750000000000071 +21 +1.3513981487014599e-14 +31 +-1.7578586935338274 +12 +-0.3750000000000071 +22 +7.396358344978072e-15 +32 +0.4374999999999982 +13 +-0.3750000000000071 +23 +7.396358344978072e-15 +33 +0.4374999999999982 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.3750000000000071 +20 +1.3513981487014599e-14 +30 +-1.7578586935338274 +11 +-0.3464548246917367 +21 +0.1435062871369173 +31 +0.4374999999999982 +12 +-0.3464548246917367 +22 +0.14350628713692343 +32 +-1.7596392507172038 +13 +-0.3464548246917367 +23 +0.14350628713692343 +33 +-1.7596392507172038 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.2651650429449557 +20 +0.26516504294496995 +30 +-1.764709848576957 +11 +-0.4238086227292559 +21 +0.14350628713692543 +31 +-2.3772791694998214 +12 +-0.3464548246917367 +22 +0.14350628713692343 +32 +-1.7596392507172038 +13 +-0.3464548246917367 +23 +0.14350628713692343 +33 +-1.7596392507172038 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.4238086227292559 +20 +0.14350628713692543 +30 +-2.3772791694998214 +11 +-0.2651650429449557 +21 +0.26516504294496995 +31 +-1.764709848576957 +12 +-0.3448331615114766 +22 +0.265165042944972 +32 +-2.4008287144809053 +13 +-0.3448331615114766 +23 +0.265165042944972 +33 +-2.4008287144809053 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.3448331615114766 +20 +0.265165042944972 +30 +-2.4008287144809053 +11 +-0.1435062871369066 +21 +0.3464548246917458 +31 +-1.7722985345540216 +12 +-0.22663803114378656 +22 +0.34645482469174793 +32 +-2.4360730992077455 +13 +-0.22663803114378656 +23 +0.34645482469174793 +33 +-2.4360730992077455 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.1435062871369066 +20 +0.3464548246917458 +30 +-1.7722985345540216 +11 +-0.3448331615114766 +21 +0.265165042944972 +31 +-2.4008287144809053 +12 +-0.2651650429449557 +22 +0.26516504294496995 +32 +-1.764709848576957 +13 +-0.2651650429449557 +23 +0.26516504294496995 +33 +-1.764709848576957 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.22663803114378656 +20 +0.34645482469174793 +30 +-2.4360730992077455 +11 +5.329070518200751e-15 +21 +0.3750000000000108 +31 +-1.7812500000000009 +12 +-0.08721736878313813 +22 +0.3750000000000131 +32 +-2.4776466855968238 +13 +-0.08721736878313813 +23 +0.3750000000000131 +33 +-2.4776466855968238 +70 +1 + 0 +3DFACE + 8 +pipe +10 +5.329070518200751e-15 +20 +0.3750000000000108 +30 +-1.7812500000000009 +11 +-0.22663803114378656 +21 +0.34645482469174793 +31 +-2.4360730992077455 +12 +-0.1435062871369066 +22 +0.3464548246917458 +32 +-1.7722985345540216 +13 +-0.1435062871369066 +23 +0.3464548246917458 +33 +-1.7722985345540216 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.08721736878313813 +20 +0.3750000000000131 +30 +-2.4776466855968238 +11 +0.1435062871369155 +21 +0.34645482469174016 +31 +-1.7902014654459806 +12 +0.05220329357750764 +22 +0.34645482469174255 +32 +-2.519220271985901 +13 +0.05220329357750764 +23 +0.34645482469174255 +33 +-2.519220271985901 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.1435062871369155 +20 +0.34645482469174016 +30 +-1.7902014654459806 +11 +-0.08721736878313813 +21 +0.3750000000000131 +31 +-2.4776466855968238 +12 +5.329070518200751e-15 +22 +0.3750000000000108 +32 +-1.7812500000000009 +13 +5.329070518200751e-15 +23 +0.3750000000000108 +33 +-1.7812500000000009 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.05220329357750764 +20 +0.34645482469174255 +30 +-2.519220271985901 +11 +0.265165042944961 +21 +0.2651650429449597 +31 +-1.7977901514230457 +12 +0.1703984239451941 +22 +0.2651650429449621 +32 +-2.554464656712741 +13 +0.1703984239451941 +23 +0.2651650429449621 +33 +-2.554464656712741 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.265165042944961 +20 +0.2651650429449597 +30 +-1.7977901514230457 +11 +0.05220329357750764 +21 +0.34645482469174255 +31 +-2.519220271985901 +12 +0.1435062871369155 +22 +0.34645482469174016 +32 +-1.7902014654459806 +13 +0.1435062871369155 +23 +0.34645482469174016 +33 +-1.7902014654459806 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.249373885162969 +20 +0.14350628713691257 +30 +-2.578014201693824 +11 +0.265165042944961 +21 +0.2651650429449597 +31 +-1.7977901514230457 +12 +0.3464548246917367 +22 +0.14350628713691005 +32 +-1.8028607492827988 +13 +0.3464548246917367 +23 +0.14350628713691005 +33 +-1.8028607492827988 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.265165042944961 +20 +0.2651650429449597 +30 +-1.7977901514230457 +11 +0.249373885162969 +21 +0.14350628713691257 +31 +-2.578014201693824 +12 +0.1703984239451941 +22 +0.2651650429449621 +32 +-2.554464656712741 +13 +0.1703984239451941 +23 +0.2651650429449621 +33 +-2.554464656712741 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.27710637917476255 +20 +1.4405113201022419e-15 +30 +-2.586283702182938 +11 +0.3464548246917367 +21 +0.14350628713691005 +31 +-1.8028607492827988 +12 +0.3750000000000018 +22 +-1.1024457386968605e-15 +32 +-1.8046413064661762 +13 +0.3750000000000018 +23 +-1.1024457386968605e-15 +33 +-1.8046413064661762 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.3464548246917367 +20 +0.14350628713691005 +30 +-1.8028607492827988 +11 +0.27710637917476255 +21 +1.4405113201022419e-15 +31 +-2.586283702182938 +12 +0.249373885162969 +22 +0.14350628713691257 +32 +-2.578014201693824 +13 +0.249373885162969 +23 +0.14350628713691257 +33 +-2.578014201693824 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.3464548246917367 +20 +0.14350628713692343 +30 +-1.7596392507172038 +11 +-0.4515411167410548 +21 +1.5502270115672923e-14 +31 +-2.3690096690107065 +12 +-0.3750000000000071 +22 +1.3513981487014599e-14 +32 +-1.7578586935338274 +13 +-0.3750000000000071 +23 +1.3513981487014599e-14 +33 +-1.7578586935338274 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.4515411167410548 +20 +1.5502270115672923e-14 +30 +-2.3690096690107065 +11 +-0.3464548246917367 +21 +0.14350628713692343 +31 +-1.7596392507172038 +12 +-0.4238086227292559 +22 +0.14350628713692543 +32 +-2.3772791694998214 +13 +-0.4238086227292559 +23 +0.14350628713692543 +33 +-2.3772791694998214 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.3448331615114766 +20 +0.265165042944972 +30 +-2.4008287144809053 +11 +-0.6814692043452624 +21 +0.14350628713692704 +31 +-2.9039438536912954 +12 +-0.4238086227292559 +22 +0.14350628713692543 +32 +-2.3772791694998214 +13 +-0.4238086227292559 +23 +0.14350628713692543 +33 +-2.3772791694998214 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.6814692043452624 +20 +0.14350628713692704 +30 +-2.9039438536912954 +11 +-0.3448331615114766 +21 +0.265165042944972 +31 +-2.4008287144809053 +12 +-0.6144054358449154 +22 +0.26516504294497373 +32 +-2.9518411970195952 +13 +-0.6144054358449154 +23 +0.26516504294497373 +33 +-2.9518411970195952 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.6144054358449154 +20 +0.26516504294497373 +30 +-2.9518411970195952 +11 +-0.22663803114378656 +21 +0.34645482469174793 +31 +-2.4360730992077455 +12 +-0.514037413441236 +22 +0.34645482469174976 +32 +-3.0235246370610946 +13 +-0.514037413441236 +23 +0.34645482469174976 +33 +-3.0235246370610946 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.22663803114378656 +20 +0.34645482469174793 +30 +-2.4360730992077455 +11 +-0.6144054358449154 +21 +0.26516504294497373 +31 +-2.9518411970195952 +12 +-0.3448331615114766 +22 +0.265165042944972 +32 +-2.4008287144809053 +13 +-0.3448331615114766 +23 +0.265165042944972 +33 +-2.4008287144809053 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.514037413441236 +20 +0.34645482469174976 +30 +-3.0235246370610946 +11 +-0.08721736878313813 +21 +0.3750000000000131 +31 +-2.4776466855968238 +12 +-0.395645258706792 +22 +0.37500000000001504 +32 +-3.10808101988148 +13 +-0.395645258706792 +23 +0.37500000000001504 +33 +-3.10808101988148 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.08721736878313813 +20 +0.3750000000000131 +30 +-2.4776466855968238 +11 +-0.514037413441236 +21 +0.34645482469174976 +31 +-3.0235246370610946 +12 +-0.22663803114378656 +22 +0.34645482469174793 +32 +-2.4360730992077455 +13 +-0.22663803114378656 +23 +0.34645482469174793 +33 +-2.4360730992077455 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.395645258706792 +20 +0.37500000000001504 +30 +-3.10808101988148 +11 +0.05220329357750764 +21 +0.34645482469174255 +31 +-2.519220271985901 +12 +-0.2772531039723507 +22 +0.3464548246917446 +32 +-3.1926374027018634 +13 +-0.2772531039723507 +23 +0.3464548246917446 +33 +-3.1926374027018634 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.05220329357750764 +20 +0.34645482469174255 +30 +-2.519220271985901 +11 +-0.395645258706792 +21 +0.37500000000001504 +31 +-3.10808101988148 +12 +-0.08721736878313813 +22 +0.3750000000000131 +32 +-2.4776466855968238 +13 +-0.08721736878313813 +23 +0.3750000000000131 +33 +-2.4776466855968238 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.2772531039723507 +20 +0.3464548246917446 +30 +-3.1926374027018634 +11 +0.1703984239451941 +21 +0.2651650429449621 +31 +-2.554464656712741 +12 +-0.1768850815686731 +22 +0.2651650429449643 +32 +-3.264320842743362 +13 +-0.1768850815686731 +23 +0.2651650429449643 +33 +-3.264320842743362 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.1703984239451941 +20 +0.2651650429449621 +30 +-2.554464656712741 +11 +-0.2772531039723507 +21 +0.3464548246917446 +31 +-3.1926374027018634 +12 +0.05220329357750764 +22 +0.34645482469174255 +32 +-2.519220271985901 +13 +0.05220329357750764 +23 +0.34645482469174255 +33 +-2.519220271985901 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.10982131306833232 +20 +0.14350628713691482 +30 +-3.3122181860716595 +11 +0.1703984239451941 +21 +0.2651650429449621 +31 +-2.554464656712741 +12 +0.249373885162969 +22 +0.14350628713691257 +32 +-2.578014201693824 +13 +0.249373885162969 +23 +0.14350628713691257 +33 +-2.578014201693824 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.1703984239451941 +20 +0.2651650429449621 +30 +-2.554464656712741 +11 +-0.10982131306833232 +21 +0.14350628713691482 +31 +-3.3122181860716595 +12 +-0.1768850815686731 +22 +0.2651650429449643 +32 +-3.264320842743362 +13 +-0.1768850815686731 +23 +0.2651650429449643 +33 +-3.264320842743362 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.08627164929092768 +20 +3.712700234448697e-15 +30 +-3.329037496355521 +11 +0.249373885162969 +21 +0.14350628713691257 +31 +-2.578014201693824 +12 +0.27710637917476255 +22 +1.4405113201022419e-15 +32 +-2.586283702182938 +13 +0.27710637917476255 +23 +1.4405113201022419e-15 +33 +-2.586283702182938 +70 +1 + 0 +3DFACE + 8 +pipe +10 +0.249373885162969 +20 +0.14350628713691257 +30 +-2.578014201693824 +11 +-0.08627164929092768 +21 +3.712700234448697e-15 +31 +-3.329037496355521 +12 +-0.10982131306833232 +22 +0.14350628713691482 +32 +-3.3122181860716595 +13 +-0.10982131306833232 +23 +0.14350628713691482 +33 +-3.3122181860716595 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.4238086227292559 +20 +0.14350628713692543 +30 +-2.3772791694998214 +11 +-0.7050188681226714 +21 +1.7087256800626433e-14 +31 +-2.887124543407431 +12 +-0.4515411167410548 +22 +1.5502270115672923e-14 +32 +-2.3690096690107065 +13 +-0.4515411167410548 +23 +1.5502270115672923e-14 +33 +-2.3690096690107065 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.7050188681226714 +20 +1.7087256800626433e-14 +30 +-2.887124543407431 +11 +-0.4238086227292559 +21 +0.14350628713692543 +31 +-2.3772791694998214 +12 +-0.6814692043452624 +22 +0.14350628713692704 +32 +-2.9039438536912954 +13 +-0.6814692043452624 +23 +0.14350628713692704 +33 +-2.9039438536912954 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.6814692043452624 +20 +0.14350628713692704 +30 +-2.9039438536912954 +11 +-1.0481588029804083 +21 +0.2651650429449749 +31 +-3.3855945641550873 +12 +-1.0960561463087082 +22 +0.1435062871369282 +32 +-3.318530795654741 +13 +-1.0960561463087082 +23 +0.1435062871369282 +33 +-3.318530795654741 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.0481588029804083 +20 +0.2651650429449749 +30 +-3.3855945641550873 +11 +-0.6814692043452624 +21 +0.14350628713692704 +31 +-2.9039438536912954 +12 +-0.6144054358449154 +22 +0.26516504294497373 +32 +-2.9518411970195952 +13 +-0.6144054358449154 +23 +0.26516504294497373 +33 +-2.9518411970195952 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.0481588029804083 +20 +0.2651650429449749 +30 +-3.3855945641550873 +11 +-0.514037413441236 +21 +0.34645482469174976 +31 +-3.0235246370610946 +12 +-0.976475362938908 +22 +0.34645482469175104 +32 +-3.4859625865587667 +13 +-0.976475362938908 +23 +0.34645482469175104 +33 +-3.4859625865587667 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.514037413441236 +20 +0.34645482469174976 +30 +-3.0235246370610946 +11 +-1.0481588029804083 +21 +0.2651650429449749 +31 +-3.3855945641550873 +12 +-0.6144054358449154 +22 +0.26516504294497373 +32 +-2.9518411970195952 +13 +-0.6144054358449154 +23 +0.26516504294497373 +33 +-2.9518411970195952 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.976475362938908 +20 +0.34645482469175104 +30 +-3.4859625865587667 +11 +-0.395645258706792 +21 +0.37500000000001504 +31 +-3.10808101988148 +12 +-0.8919189801185237 +22 +0.37500000000001643 +32 +-3.60435474129321 +13 +-0.8919189801185237 +23 +0.37500000000001643 +33 +-3.60435474129321 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.395645258706792 +20 +0.37500000000001504 +30 +-3.10808101988148 +11 +-0.976475362938908 +21 +0.34645482469175104 +31 +-3.4859625865587667 +12 +-0.514037413441236 +22 +0.34645482469174976 +32 +-3.0235246370610946 +13 +-0.514037413441236 +23 +0.34645482469174976 +33 +-3.0235246370610946 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.8919189801185237 +20 +0.37500000000001643 +30 +-3.60435474129321 +11 +-0.2772531039723507 +21 +0.3464548246917446 +31 +-3.1926374027018634 +12 +-0.8073625972981393 +22 +0.3464548246917461 +32 +-3.7227468960276524 +13 +-0.8073625972981393 +23 +0.3464548246917461 +33 +-3.7227468960276524 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.2772531039723507 +20 +0.3464548246917446 +30 +-3.1926374027018634 +11 +-0.8919189801185237 +21 +0.37500000000001643 +31 +-3.60435474129321 +12 +-0.395645258706792 +22 +0.37500000000001504 +32 +-3.10808101988148 +13 +-0.395645258706792 +23 +0.37500000000001504 +33 +-3.10808101988148 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.8073625972981393 +20 +0.3464548246917461 +30 +-3.7227468960276524 +11 +-0.1768850815686731 +21 +0.2651650429449643 +31 +-3.264320842743362 +12 +-0.7356791572566417 +22 +0.26516504294496585 +32 +-3.8231149184313296 +13 +-0.7356791572566417 +23 +0.26516504294496585 +33 +-3.8231149184313296 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.1768850815686731 +20 +0.2651650429449643 +30 +-3.264320842743362 +11 +-0.8073625972981393 +21 +0.3464548246917461 +31 +-3.7227468960276524 +12 +-0.2772531039723507 +22 +0.3464548246917446 +32 +-3.1926374027018634 +13 +-0.2772531039723507 +23 +0.3464548246917446 +33 +-3.1926374027018634 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.6877818139283445 +20 +0.14350628713691643 +30 +-3.8901786869316712 +11 +-0.1768850815686731 +21 +0.2651650429449643 +31 +-3.264320842743362 +12 +-0.10982131306833232 +22 +0.14350628713691482 +32 +-3.3122181860716595 +13 +-0.10982131306833232 +23 +0.14350628713691482 +33 +-3.3122181860716595 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.1768850815686731 +20 +0.2651650429449643 +30 +-3.264320842743362 +11 +-0.6877818139283445 +21 +0.14350628713691643 +31 +-3.8901786869316712 +12 +-0.7356791572566417 +22 +0.26516504294496585 +32 +-3.8231149184313296 +13 +-0.7356791572566417 +23 +0.26516504294496585 +33 +-3.8231149184313296 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.10982131306833232 +20 +0.14350628713691482 +30 +-3.3122181860716595 +11 +-0.6709625036444828 +21 +5.342009518651689e-15 +31 +-3.9137283507090763 +12 +-0.6877818139283445 +22 +0.14350628713691643 +32 +-3.8901786869316712 +13 +-0.6877818139283445 +23 +0.14350628713691643 +33 +-3.8901786869316712 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.6709625036444828 +20 +5.342009518651689e-15 +30 +-3.9137283507090763 +11 +-0.10982131306833232 +21 +0.14350628713691482 +31 +-3.3122181860716595 +12 +-0.08627164929092768 +22 +3.712700234448697e-15 +32 +-3.329037496355521 +13 +-0.08627164929092768 +23 +3.712700234448697e-15 +33 +-3.329037496355521 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.7050188681226714 +20 +1.7087256800626433e-14 +30 +-2.887124543407431 +11 +-1.0960561463087082 +21 +0.1435062871369282 +31 +-3.318530795654741 +12 +-1.1128754565925734 +22 +1.822379677088487e-14 +32 +-3.294981131877333 +13 +-1.1128754565925734 +23 +1.822379677088487e-14 +33 +-3.294981131877333 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.0960561463087082 +20 +0.1435062871369282 +30 +-3.318530795654741 +11 +-0.7050188681226714 +21 +1.7087256800626433e-14 +31 +-2.887124543407431 +12 +-0.6814692043452624 +22 +0.14350628713692704 +32 +-2.9039438536912954 +13 +-0.6814692043452624 +23 +0.14350628713692704 +33 +-2.9039438536912954 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.0960561463087082 +20 +0.1435062871369282 +30 +-3.318530795654741 +11 +-1.5991712855190992 +21 +0.2651650429449755 +31 +-3.655166838488527 +12 +-1.6227208305001835 +22 +0.14350628713692878 +32 +-3.5761913772707477 +13 +-1.6227208305001835 +23 +0.14350628713692878 +33 +-3.5761913772707477 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.5991712855190992 +20 +0.2651650429449755 +30 +-3.655166838488527 +11 +-1.0960561463087082 +21 +0.1435062871369282 +31 +-3.318530795654741 +12 +-1.0481588029804083 +22 +0.2651650429449749 +32 +-3.3855945641550873 +13 +-1.0481588029804083 +23 +0.2651650429449749 +33 +-3.3855945641550873 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.5991712855190992 +20 +0.2651650429449755 +30 +-3.655166838488527 +11 +-0.976475362938908 +21 +0.34645482469175104 +31 +-3.4859625865587667 +12 +-1.563926900792259 +22 +0.3464548246917517 +32 +-3.773361968856217 +13 +-1.563926900792259 +23 +0.3464548246917517 +33 +-3.773361968856217 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.976475362938908 +20 +0.34645482469175104 +30 +-3.4859625865587667 +11 +-1.5991712855190992 +21 +0.2651650429449755 +31 +-3.655166838488527 +12 +-1.0481588029804083 +22 +0.2651650429449749 +32 +-3.3855945641550873 +13 +-1.0481588029804083 +23 +0.2651650429449749 +33 +-3.3855945641550873 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.563926900792259 +20 +0.3464548246917517 +30 +-3.773361968856217 +11 +-0.8919189801185237 +21 +0.37500000000001643 +31 +-3.60435474129321 +12 +-1.5223533144031798 +22 +0.3750000000000171 +32 +-3.9127826312168645 +13 +-1.5223533144031798 +23 +0.3750000000000171 +33 +-3.9127826312168645 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.8919189801185237 +20 +0.37500000000001643 +30 +-3.60435474129321 +11 +-1.563926900792259 +21 +0.3464548246917517 +31 +-3.773361968856217 +12 +-0.976475362938908 +22 +0.34645482469175104 +32 +-3.4859625865587667 +13 +-0.976475362938908 +23 +0.34645482469175104 +33 +-3.4859625865587667 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.5223533144031798 +20 +0.3750000000000171 +30 +-3.9127826312168645 +11 +-0.8073625972981393 +21 +0.3464548246917461 +31 +-3.7227468960276524 +12 +-1.4807797280141024 +22 +0.3464548246917468 +32 +-4.052203293577511 +13 +-1.4807797280141024 +23 +0.3464548246917468 +33 +-4.052203293577511 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.8073625972981393 +20 +0.3464548246917461 +30 +-3.7227468960276524 +11 +-1.5223533144031798 +21 +0.3750000000000171 +31 +-3.9127826312168645 +12 +-0.8919189801185237 +22 +0.37500000000001643 +32 +-3.60435474129321 +13 +-0.8919189801185237 +23 +0.37500000000001643 +33 +-3.60435474129321 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.4807797280141024 +20 +0.3464548246917468 +30 +-4.052203293577511 +11 +-0.7356791572566417 +21 +0.26516504294496585 +31 +-3.8231149184313296 +12 +-1.445535343287263 +22 +0.2651650429449666 +32 +-4.1703984239451986 +13 +-1.445535343287263 +23 +0.2651650429449666 +33 +-4.1703984239451986 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.7356791572566417 +20 +0.26516504294496585 +30 +-3.8231149184313296 +11 +-1.4807797280141024 +21 +0.3464548246917468 +31 +-4.052203293577511 +12 +-0.8073625972981393 +22 +0.3464548246917461 +32 +-3.7227468960276524 +13 +-0.8073625972981393 +23 +0.3464548246917461 +33 +-3.7227468960276524 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.7356791572566417 +20 +0.26516504294496585 +30 +-3.8231149184313296 +11 +-1.4219857983061805 +21 +0.14350628713691724 +31 +-4.2493738851629725 +12 +-1.445535343287263 +22 +0.2651650429449666 +32 +-4.1703984239451986 +13 +-1.445535343287263 +23 +0.2651650429449666 +33 +-4.1703984239451986 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.4219857983061805 +20 +0.14350628713691724 +30 +-4.2493738851629725 +11 +-0.7356791572566417 +21 +0.26516504294496585 +31 +-3.8231149184313296 +12 +-0.6877818139283445 +22 +0.14350628713691643 +32 +-3.8901786869316712 +13 +-0.6877818139283445 +23 +0.14350628713691643 +33 +-3.8901786869316712 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-0.6877818139283445 +20 +0.14350628713691643 +30 +-3.8901786869316712 +11 +-1.413716297817066 +21 +6.15218598552793e-15 +31 +-4.277106379174766 +12 +-1.4219857983061805 +22 +0.14350628713691724 +32 +-4.2493738851629725 +13 +-1.4219857983061805 +23 +0.14350628713691724 +33 +-4.2493738851629725 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.413716297817066 +20 +6.15218598552793e-15 +30 +-4.277106379174766 +11 +-0.6877818139283445 +21 +0.14350628713691643 +31 +-3.8901786869316712 +12 +-0.6709625036444828 +22 +5.342009518651689e-15 +32 +-3.9137283507090763 +13 +-0.6709625036444828 +23 +5.342009518651689e-15 +33 +-3.9137283507090763 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.1128754565925734 +20 +1.822379677088487e-14 +30 +-3.294981131877333 +11 +-1.6227208305001835 +21 +0.14350628713692878 +31 +-3.5761913772707477 +12 +-1.6309903309892988 +22 +1.878894296289104e-14 +32 +-3.5484588832589496 +13 +-1.6309903309892988 +23 +1.878894296289104e-14 +33 +-3.5484588832589496 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.6227208305001835 +20 +0.14350628713692878 +30 +-3.5761913772707477 +11 +-1.1128754565925734 +21 +1.822379677088487e-14 +31 +-3.294981131877333 +12 +-1.0960561463087082 +22 +0.1435062871369282 +32 +-3.318530795654741 +13 +-1.0960561463087082 +23 +0.1435062871369282 +33 +-3.318530795654741 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.6227208305001835 +20 +0.14350628713692878 +30 +-3.5761913772707477 +11 +-2.2352901514230483 +21 +0.26516504294497545 +31 +-3.734834957055048 +12 +-2.240360749282801 +22 +0.1435062871369287 +32 +-3.653545175308267 +13 +-2.240360749282801 +23 +0.1435062871369287 +33 +-3.653545175308267 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.2352901514230483 +20 +0.26516504294497545 +30 +-3.734834957055048 +11 +-1.6227208305001835 +21 +0.14350628713692878 +31 +-3.5761913772707477 +12 +-1.5991712855190992 +22 +0.2651650429449755 +32 +-3.655166838488527 +13 +-1.5991712855190992 +23 +0.2651650429449755 +33 +-3.655166838488527 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.2352901514230483 +20 +0.26516504294497545 +30 +-3.734834957055048 +11 +-1.563926900792259 +21 +0.3464548246917517 +31 +-3.773361968856217 +12 +-2.227701465445983 +22 +0.34645482469175165 +32 +-3.8564937128630965 +13 +-2.227701465445983 +23 +0.34645482469175165 +33 +-3.8564937128630965 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.563926900792259 +20 +0.3464548246917517 +30 +-3.773361968856217 +11 +-2.2352901514230483 +21 +0.26516504294497545 +31 +-3.734834957055048 +12 +-1.5991712855190992 +22 +0.2651650429449755 +32 +-3.655166838488527 +13 +-1.5991712855190992 +23 +0.2651650429449755 +33 +-3.655166838488527 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.227701465445983 +20 +0.34645482469175165 +30 +-3.8564937128630965 +11 +-1.5223533144031798 +21 +0.3750000000000171 +31 +-3.9127826312168645 +12 +-2.2187500000000036 +22 +0.37500000000001704 +32 +-4.000000000000008 +13 +-2.2187500000000036 +23 +0.37500000000001704 +33 +-4.000000000000008 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.5223533144031798 +20 +0.3750000000000171 +30 +-3.9127826312168645 +11 +-2.227701465445983 +21 +0.34645482469175165 +31 +-3.8564937128630965 +12 +-1.563926900792259 +22 +0.3464548246917517 +32 +-3.773361968856217 +13 +-1.563926900792259 +23 +0.3464548246917517 +33 +-3.773361968856217 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.2187500000000036 +20 +0.37500000000001704 +30 +-4.000000000000008 +11 +-1.4807797280141024 +21 +0.3464548246917468 +31 +-4.052203293577511 +12 +-2.2097985345540234 +22 +0.34645482469174677 +32 +-4.143506287136919 +13 +-2.2097985345540234 +23 +0.34645482469174677 +33 +-4.143506287136919 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.4807797280141024 +20 +0.3464548246917468 +30 +-4.052203293577511 +11 +-2.2187500000000036 +21 +0.37500000000001704 +31 +-4.000000000000008 +12 +-1.5223533144031798 +22 +0.3750000000000171 +32 +-3.9127826312168645 +13 +-1.5223533144031798 +23 +0.3750000000000171 +33 +-3.9127826312168645 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.2097985345540234 +20 +0.34645482469174677 +30 +-4.143506287136919 +11 +-1.445535343287263 +21 +0.2651650429449666 +31 +-4.1703984239451986 +12 +-2.202209848576959 +22 +0.2651650429449665 +32 +-4.265165042944965 +13 +-2.202209848576959 +23 +0.2651650429449665 +33 +-4.265165042944965 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.445535343287263 +20 +0.2651650429449666 +30 +-4.1703984239451986 +11 +-2.2097985345540234 +21 +0.34645482469174677 +31 +-4.143506287136919 +12 +-1.4807797280141024 +22 +0.3464548246917468 +32 +-4.052203293577511 +13 +-1.4807797280141024 +23 +0.3464548246917468 +33 +-4.052203293577511 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.445535343287263 +20 +0.2651650429449666 +30 +-4.1703984239451986 +11 +-2.197139250717206 +21 +0.14350628713691715 +31 +-4.34645482469174 +12 +-2.202209848576959 +22 +0.2651650429449665 +32 +-4.265165042944965 +13 +-2.202209848576959 +23 +0.2651650429449665 +33 +-4.265165042944965 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.197139250717206 +20 +0.14350628713691715 +30 +-4.34645482469174 +11 +-1.445535343287263 +21 +0.2651650429449666 +31 +-4.1703984239451986 +12 +-1.4219857983061805 +22 +0.14350628713691724 +32 +-4.2493738851629725 +13 +-1.4219857983061805 +23 +0.14350628713691724 +33 +-4.2493738851629725 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.4219857983061805 +20 +0.14350628713691724 +30 +-4.2493738851629725 +11 +-2.195358693533829 +21 +6.060158656298807e-15 +31 +-4.375000000000006 +12 +-2.197139250717206 +22 +0.14350628713691715 +32 +-4.34645482469174 +13 +-2.197139250717206 +23 +0.14350628713691715 +33 +-4.34645482469174 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.195358693533829 +20 +6.060158656298807e-15 +30 +-4.375000000000006 +11 +-1.4219857983061805 +21 +0.14350628713691724 +31 +-4.2493738851629725 +12 +-1.413716297817066 +22 +6.15218598552793e-15 +32 +-4.277106379174766 +13 +-1.413716297817066 +23 +6.15218598552793e-15 +33 +-4.277106379174766 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-1.6309903309892988 +20 +1.878894296289104e-14 +30 +-3.5484588832589496 +11 +-2.240360749282801 +21 +0.1435062871369287 +31 +-3.653545175308267 +12 +-2.242141306466179 +22 +1.8716988585368647e-14 +32 +-3.6249999999999973 +13 +-2.242141306466179 +23 +1.8716988585368647e-14 +33 +-3.6249999999999973 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.240360749282801 +20 +0.1435062871369287 +30 +-3.653545175308267 +11 +-1.6309903309892988 +21 +1.878894296289104e-14 +31 +-3.5484588832589496 +12 +-1.6227208305001835 +22 +0.14350628713692878 +32 +-3.5761913772707477 +13 +-1.6227208305001835 +23 +0.14350628713692878 +33 +-3.5761913772707477 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.240360749282801 +20 +0.1435062871369287 +30 +-3.653545175308267 +11 +-7.983021822074795 +21 +0.26516504294497545 +31 +-3.734834957055048 +12 +-7.983021822074795 +22 +0.1435062871369287 +32 +-3.653545175308267 +13 +-7.983021822074795 +23 +0.1435062871369287 +33 +-3.653545175308267 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-7.983021822074795 +20 +0.26516504294497545 +30 +-3.734834957055048 +11 +-2.240360749282801 +21 +0.1435062871369287 +31 +-3.653545175308267 +12 +-2.2352901514230483 +22 +0.26516504294497545 +32 +-3.734834957055048 +13 +-2.2352901514230483 +23 +0.26516504294497545 +33 +-3.734834957055048 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-7.983021822074795 +20 +0.26516504294497545 +30 +-3.734834957055048 +11 +-2.227701465445983 +21 +0.34645482469175165 +31 +-3.8564937128630965 +12 +-7.983021822074795 +22 +0.34645482469175165 +32 +-3.8564937128630965 +13 +-7.983021822074795 +23 +0.34645482469175165 +33 +-3.8564937128630965 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.227701465445983 +20 +0.34645482469175165 +30 +-3.8564937128630965 +11 +-7.983021822074795 +21 +0.26516504294497545 +31 +-3.734834957055048 +12 +-2.2352901514230483 +22 +0.26516504294497545 +32 +-3.734834957055048 +13 +-2.2352901514230483 +23 +0.26516504294497545 +33 +-3.734834957055048 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-7.983021822074795 +20 +0.34645482469175165 +30 +-3.8564937128630965 +11 +-2.2187500000000036 +21 +0.37500000000001704 +31 +-4.000000000000008 +12 +-7.983021822074795 +22 +0.37500000000001704 +32 +-4.000000000000008 +13 +-7.983021822074795 +23 +0.37500000000001704 +33 +-4.000000000000008 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.2187500000000036 +20 +0.37500000000001704 +30 +-4.000000000000008 +11 +-7.983021822074795 +21 +0.34645482469175165 +31 +-3.8564937128630965 +12 +-2.227701465445983 +22 +0.34645482469175165 +32 +-3.8564937128630965 +13 +-2.227701465445983 +23 +0.34645482469175165 +33 +-3.8564937128630965 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-7.983021822074795 +20 +0.37500000000001704 +30 +-4.000000000000008 +11 +-2.2097985345540234 +21 +0.34645482469174677 +31 +-4.143506287136919 +12 +-7.983021822074795 +22 +0.34645482469174677 +32 +-4.143506287136919 +13 +-7.983021822074795 +23 +0.34645482469174677 +33 +-4.143506287136919 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.2097985345540234 +20 +0.34645482469174677 +30 +-4.143506287136919 +11 +-7.983021822074795 +21 +0.37500000000001704 +31 +-4.000000000000008 +12 +-2.2187500000000036 +22 +0.37500000000001704 +32 +-4.000000000000008 +13 +-2.2187500000000036 +23 +0.37500000000001704 +33 +-4.000000000000008 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-7.983021822074795 +20 +0.34645482469174677 +30 +-4.143506287136919 +11 +-2.202209848576959 +21 +0.2651650429449665 +31 +-4.265165042944965 +12 +-7.983021822074795 +22 +0.2651650429449665 +32 +-4.265165042944965 +13 +-7.983021822074795 +23 +0.2651650429449665 +33 +-4.265165042944965 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.202209848576959 +20 +0.2651650429449665 +30 +-4.265165042944965 +11 +-7.983021822074795 +21 +0.34645482469174677 +31 +-4.143506287136919 +12 +-2.2097985345540234 +22 +0.34645482469174677 +32 +-4.143506287136919 +13 +-2.2097985345540234 +23 +0.34645482469174677 +33 +-4.143506287136919 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.202209848576959 +20 +0.2651650429449665 +30 +-4.265165042944965 +11 +-7.983021822074795 +21 +0.14350628713691715 +31 +-4.34645482469174 +12 +-7.983021822074795 +22 +0.2651650429449665 +32 +-4.265165042944965 +13 +-7.983021822074795 +23 +0.2651650429449665 +33 +-4.265165042944965 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-7.983021822074795 +20 +0.14350628713691715 +30 +-4.34645482469174 +11 +-2.202209848576959 +21 +0.2651650429449665 +31 +-4.265165042944965 +12 +-2.197139250717206 +22 +0.14350628713691715 +32 +-4.34645482469174 +13 +-2.197139250717206 +23 +0.14350628713691715 +33 +-4.34645482469174 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.197139250717206 +20 +0.14350628713691715 +30 +-4.34645482469174 +11 +-7.983021822074795 +21 +6.060158656298807e-15 +31 +-4.375000000000006 +12 +-7.983021822074795 +22 +0.14350628713691715 +32 +-4.34645482469174 +13 +-7.983021822074795 +23 +0.14350628713691715 +33 +-4.34645482469174 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-7.983021822074795 +20 +6.060158656298807e-15 +30 +-4.375000000000006 +11 +-2.197139250717206 +21 +0.14350628713691715 +31 +-4.34645482469174 +12 +-2.195358693533829 +22 +6.060158656298807e-15 +32 +-4.375000000000006 +13 +-2.195358693533829 +23 +6.060158656298807e-15 +33 +-4.375000000000006 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-2.242141306466179 +20 +1.8716988585368647e-14 +30 +-3.6249999999999973 +11 +-7.983021822074795 +21 +0.1435062871369287 +31 +-3.653545175308267 +12 +-7.983021822074795 +22 +1.8716988585368647e-14 +32 +-3.6249999999999973 +13 +-7.983021822074795 +23 +1.8716988585368647e-14 +33 +-3.6249999999999973 +70 +1 + 0 +3DFACE + 8 +pipe +10 +-7.983021822074795 +20 +0.1435062871369287 +30 +-3.653545175308267 +11 +-2.242141306466179 +21 +1.8716988585368647e-14 +31 +-3.6249999999999973 +12 +-2.240360749282801 +22 +0.1435062871369287 +32 +-3.653545175308267 +13 +-2.240360749282801 +23 +0.1435062871369287 +33 +-3.653545175308267 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2922750396074334 +30 +5.079185156719955 +11 +-5.499999999999995 +21 +2.2471825367939746 +31 +5.101599911452267 +12 +-5.499999999999995 +22 +2.2922750396074334 +32 +5.079185156719955 +13 +-5.499999999999995 +23 +2.2922750396074334 +33 +5.079185156719955 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.2471825367939746 +30 +5.101599911452267 +11 +9.500000000000005 +21 +2.2922750396074334 +31 +5.079185156719955 +12 +9.500000000000005 +22 +2.2471825367939746 +32 +5.101599911452267 +13 +9.500000000000005 +23 +2.2471825367939746 +33 +5.101599911452267 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.3324893860329072 +30 +5.0488773791494435 +11 +-5.499999999999995 +21 +2.2922750396074334 +31 +5.079185156719955 +12 +-5.499999999999995 +22 +2.3324893860329072 +32 +5.0488773791494435 +13 +-5.499999999999995 +23 +2.3324893860329072 +33 +5.0488773791494435 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.2922750396074334 +30 +5.079185156719955 +11 +9.500000000000005 +21 +2.3324893860329072 +31 +5.0488773791494435 +12 +9.500000000000005 +22 +2.2922750396074334 +32 +5.079185156719955 +13 +9.500000000000005 +23 +2.2922750396074334 +33 +5.079185156719955 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2471825367939746 +30 +5.101599911452267 +11 +-5.499999999999995 +21 +2.198742898510912 +31 +5.115360597579695 +12 +-5.499999999999995 +22 +2.2471825367939746 +32 +5.101599911452267 +13 +-5.499999999999995 +23 +2.2471825367939746 +33 +5.101599911452267 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.198742898510912 +30 +5.115360597579695 +11 +9.500000000000005 +21 +2.2471825367939746 +31 +5.101599911452267 +12 +9.500000000000005 +22 +2.198742898510912 +32 +5.115360597579695 +13 +9.500000000000005 +23 +2.198742898510912 +33 +5.115360597579695 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.198742898510912 +30 +5.115360597579695 +11 +-5.499999999999995 +21 +2.14860079060873 +31 +5.119999999999996 +12 +-5.499999999999995 +22 +2.198742898510912 +32 +5.115360597579695 +13 +-5.499999999999995 +23 +2.198742898510912 +33 +5.115360597579695 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.14860079060873 +30 +5.119999999999996 +11 +9.500000000000005 +21 +2.198742898510912 +31 +5.115360597579695 +12 +9.500000000000005 +22 +2.14860079060873 +32 +5.119999999999996 +13 +9.500000000000005 +23 +2.14860079060873 +33 +5.119999999999996 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.36646018267338 +30 +5.011705615466466 +11 +-5.499999999999995 +21 +2.3930340227089686 +31 +4.968931954582056 +12 +9.500000000000005 +22 +2.3930340227089686 +32 +4.968931954582056 +13 +9.500000000000005 +23 +2.3930340227089686 +33 +4.968931954582056 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3930340227089686 +30 +4.968931954582056 +11 +9.500000000000005 +21 +2.36646018267338 +31 +5.011705615466466 +12 +-5.499999999999995 +22 +2.36646018267338 +32 +5.011705615466466 +13 +-5.499999999999995 +23 +2.36646018267338 +33 +5.011705615466466 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.14860079060873 +30 +5.119999999999996 +11 +-5.499999999999995 +21 +0.0 +31 +5.119999999999996 +12 +-5.499999999999995 +22 +2.14860079060873 +32 +5.119999999999996 +13 +-5.499999999999995 +23 +2.14860079060873 +33 +5.119999999999996 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +0.0 +30 +5.119999999999996 +11 +9.500000000000005 +21 +2.14860079060873 +31 +5.119999999999996 +12 +9.500000000000005 +22 +0.0 +32 +5.119999999999996 +13 +9.500000000000005 +23 +0.0 +33 +5.119999999999996 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.3324893860329072 +30 +5.0488773791494435 +11 +-5.499999999999995 +21 +2.36646018267338 +31 +5.011705615466466 +12 +9.500000000000005 +22 +2.36646018267338 +32 +5.011705615466466 +13 +9.500000000000005 +23 +2.36646018267338 +33 +5.011705615466466 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.36646018267338 +30 +5.011705615466466 +11 +9.500000000000005 +21 +2.3324893860329072 +31 +5.0488773791494435 +12 +-5.499999999999995 +22 +2.3324893860329072 +32 +5.0488773791494435 +13 +-5.499999999999995 +23 +2.3324893860329072 +33 +5.0488773791494435 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2429376307709816 +30 +5.153304187744393 +11 +-5.499999999999995 +21 +2.2923509057835325 +31 +5.139266911825803 +12 +-5.499999999999995 +22 +2.2429376307709816 +32 +5.153304187744393 +13 +-5.499999999999995 +23 +2.2429376307709816 +33 +5.153304187744393 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.2923509057835325 +30 +5.139266911825803 +11 +9.500000000000005 +21 +2.2429376307709816 +31 +5.153304187744393 +12 +9.500000000000005 +22 +2.2923509057835325 +32 +5.139266911825803 +13 +9.500000000000005 +23 +2.2923509057835325 +33 +5.139266911825803 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2923509057835325 +30 +5.139266911825803 +11 +-5.499999999999995 +21 +2.3383497679035443 +31 +5.116401620523369 +12 +-5.499999999999995 +22 +2.2923509057835325 +32 +5.139266911825803 +13 +-5.499999999999995 +23 +2.2923509057835325 +33 +5.139266911825803 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3383497679035443 +30 +5.116401620523369 +11 +9.500000000000005 +21 +2.2923509057835325 +31 +5.139266911825803 +12 +9.500000000000005 +22 +2.3383497679035443 +32 +5.116401620523369 +13 +9.500000000000005 +23 +2.3383497679035443 +33 +5.116401620523369 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3793724226921675 +30 +5.085484656623693 +11 +9.500000000000005 +21 +2.4140260323451184 +31 +5.047565740490686 +12 +-5.499999999999995 +22 +2.4140260323451184 +32 +5.047565740490686 +13 +-5.499999999999995 +23 +2.4140260323451184 +33 +5.047565740490686 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.4140260323451184 +30 +5.047565740490686 +11 +-5.499999999999995 +21 +2.3793724226921675 +31 +5.085484656623693 +12 +9.500000000000005 +22 +2.3793724226921675 +32 +5.085484656623693 +13 +9.500000000000005 +23 +2.3793724226921675 +33 +5.085484656623693 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.4140260323451184 +30 +5.047565740490686 +11 +9.500000000000005 +21 +2.4411340065654183 +31 +5.003932329022501 +12 +-5.499999999999995 +22 +2.4411340065654183 +32 +5.003932329022501 +13 +-5.499999999999995 +23 +2.4411340065654183 +33 +5.003932329022501 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.4411340065654183 +30 +5.003932329022501 +11 +-5.499999999999995 +21 +2.4140260323451184 +31 +5.047565740490686 +12 +9.500000000000005 +22 +2.4140260323451184 +32 +5.047565740490686 +13 +9.500000000000005 +23 +2.4140260323451184 +33 +5.047565740490686 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +0.0 +30 +5.15803684215334 +11 +-5.499999999999995 +21 +2.1917876664999696 +31 +5.15803684215334 +12 +-5.499999999999995 +22 +0.0 +32 +5.15803684215334 +13 +-5.499999999999995 +23 +0.0 +33 +5.15803684215334 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.1917876664999696 +30 +5.15803684215334 +11 +9.500000000000005 +21 +0.0 +31 +5.15803684215334 +12 +9.500000000000005 +22 +2.1917876664999696 +32 +5.15803684215334 +13 +9.500000000000005 +23 +2.1917876664999696 +33 +5.15803684215334 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.1917876664999696 +30 +5.15803684215334 +11 +-5.499999999999995 +21 +2.2429376307709816 +31 +5.153304187744393 +12 +-5.499999999999995 +22 +2.1917876664999696 +32 +5.15803684215334 +13 +-5.499999999999995 +23 +2.1917876664999696 +33 +5.15803684215334 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.2429376307709816 +30 +5.153304187744393 +11 +9.500000000000005 +21 +2.1917876664999696 +31 +5.15803684215334 +12 +9.500000000000005 +22 +2.2429376307709816 +32 +5.153304187744393 +13 +9.500000000000005 +23 +2.2429376307709816 +33 +5.153304187744393 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.3383497679035443 +30 +5.116401620523369 +11 +-5.499999999999995 +21 +2.3793724226921675 +31 +5.085484656623693 +12 +-5.499999999999995 +22 +2.3383497679035443 +32 +5.116401620523369 +13 +-5.499999999999995 +23 +2.3383497679035443 +33 +5.116401620523369 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3793724226921675 +30 +5.085484656623693 +11 +9.500000000000005 +21 +2.3383497679035443 +31 +5.116401620523369 +12 +9.500000000000005 +22 +2.3793724226921675 +32 +5.085484656623693 +13 +9.500000000000005 +23 +2.3793724226921675 +33 +5.085484656623693 +70 +1 + 0 +3DFACE + 8 +cap +10 +-4.999999999999995 +20 +3.152109 +30 +3.227619793365834 +11 +-5.06663474057502 +21 +3.089999999999999 +31 +3.227619793365834 +12 +-5.06663474057502 +22 +3.1521089999999985 +32 +3.227619793365834 +13 +-5.06663474057502 +23 +3.1521089999999985 +33 +3.227619793365834 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.06663474057502 +20 +3.089999999999999 +30 +3.227619793365834 +11 +-4.999999999999995 +21 +3.152109 +31 +3.227619793365834 +12 +-4.999999999999995 +22 +3.09 +32 +3.227619793365834 +13 +-4.999999999999995 +23 +3.09 +33 +3.227619793365834 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.1917876664999696 +30 +5.15803684215334 +11 +-5.499999999999995 +21 +0.0 +31 +5.119999999999996 +12 +-5.499999999999995 +22 +0.0 +32 +5.15803684215334 +13 +-5.499999999999995 +23 +0.0 +33 +5.15803684215334 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +0.0 +30 +5.119999999999996 +11 +-5.499999999999995 +21 +2.1917876664999696 +31 +5.15803684215334 +12 +-5.499999999999995 +22 +2.14860079060873 +32 +5.119999999999996 +13 +-5.499999999999995 +23 +2.14860079060873 +33 +5.119999999999996 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.14860079060873 +30 +5.119999999999996 +11 +-5.499999999999995 +21 +2.1917876664999696 +31 +5.15803684215334 +12 +-5.499999999999995 +22 +2.198742898510912 +32 +5.115360597579695 +13 +-5.499999999999995 +23 +2.198742898510912 +33 +5.115360597579695 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.198742898510912 +30 +5.115360597579695 +11 +-5.499999999999995 +21 +2.1917876664999696 +31 +5.15803684215334 +12 +-5.499999999999995 +22 +2.2429376307709816 +32 +5.153304187744393 +13 +-5.499999999999995 +23 +2.2429376307709816 +33 +5.153304187744393 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.198742898510912 +30 +5.115360597579695 +11 +-5.499999999999995 +21 +2.2429376307709816 +31 +5.153304187744393 +12 +-5.499999999999995 +22 +2.2471825367939746 +32 +5.101599911452267 +13 +-5.499999999999995 +23 +2.2471825367939746 +33 +5.101599911452267 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.2471825367939746 +30 +5.101599911452267 +11 +-5.499999999999995 +21 +2.2429376307709816 +31 +5.153304187744393 +12 +-5.499999999999995 +22 +2.2923509057835325 +32 +5.139266911825803 +13 +-5.499999999999995 +23 +2.2923509057835325 +33 +5.139266911825803 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.2471825367939746 +30 +5.101599911452267 +11 +-5.499999999999995 +21 +2.2923509057835325 +31 +5.139266911825803 +12 +-5.499999999999995 +22 +2.2922750396074334 +32 +5.079185156719955 +13 +-5.499999999999995 +23 +2.2922750396074334 +33 +5.079185156719955 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.2922750396074334 +30 +5.079185156719955 +11 +-5.499999999999995 +21 +2.2923509057835325 +31 +5.139266911825803 +12 +-5.499999999999995 +22 +2.3324893860329072 +32 +5.0488773791494435 +13 +-5.499999999999995 +23 +2.3324893860329072 +33 +5.0488773791494435 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3324893860329072 +30 +5.0488773791494435 +11 +-5.499999999999995 +21 +2.2923509057835325 +31 +5.139266911825803 +12 +-5.499999999999995 +22 +2.3383497679035443 +32 +5.116401620523369 +13 +-5.499999999999995 +23 +2.3383497679035443 +33 +5.116401620523369 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3324893860329072 +30 +5.0488773791494435 +11 +-5.499999999999995 +21 +2.3383497679035443 +31 +5.116401620523369 +12 +-5.499999999999995 +22 +2.36646018267338 +32 +5.011705615466466 +13 +-5.499999999999995 +23 +2.36646018267338 +33 +5.011705615466466 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.36646018267338 +30 +5.011705615466466 +11 +-5.499999999999995 +21 +2.3383497679035443 +31 +5.116401620523369 +12 +-5.499999999999995 +22 +2.3793724226921675 +32 +5.085484656623693 +13 +-5.499999999999995 +23 +2.3793724226921675 +33 +5.085484656623693 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.36646018267338 +30 +5.011705615466466 +11 +-5.499999999999995 +21 +2.3793724226921675 +31 +5.085484656623693 +12 +-5.499999999999995 +22 +2.3930340227089686 +32 +4.968931954582056 +13 +-5.499999999999995 +23 +2.3930340227089686 +33 +4.968931954582056 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3930340227089686 +30 +4.968931954582056 +11 +-5.499999999999995 +21 +2.3793724226921675 +31 +5.085484656623693 +12 +-5.499999999999995 +22 +2.4140260323451184 +32 +5.047565740490686 +13 +-5.499999999999995 +23 +2.4140260323451184 +33 +5.047565740490686 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3930340227089686 +30 +4.968931954582056 +11 +-5.499999999999995 +21 +2.4140260323451184 +31 +5.047565740490686 +12 +-5.499999999999995 +22 +3.0123234243928083 +32 +3.7303531512143784 +13 +-5.499999999999995 +23 +3.0123234243928083 +33 +3.7303531512143784 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.0123234243928083 +30 +3.7303531512143784 +11 +-5.499999999999995 +21 +2.4140260323451184 +31 +5.047565740490686 +12 +-5.499999999999995 +22 +2.4411340065654183 +32 +5.003932329022501 +13 +-5.499999999999995 +23 +2.4411340065654183 +33 +5.003932329022501 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.0123234243928083 +30 +3.7303531512143784 +11 +-5.499999999999995 +21 +2.4411340065654183 +31 +5.003932329022501 +12 +-5.499999999999995 +22 +3.072871125223104 +32 +3.7404580917071333 +13 +-5.499999999999995 +23 +3.072871125223104 +33 +3.7404580917071333 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.0123234243928083 +30 +3.7303531512143784 +11 +-5.499999999999995 +21 +3.072871125223104 +31 +3.7404580917071333 +12 +-5.499999999999995 +22 +3.0139421213514037 +32 +3.7267766757513905 +13 +-5.499999999999995 +23 +3.0139421213514037 +33 +3.7267766757513905 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.0139421213514037 +30 +3.7267766757513905 +11 +-5.499999999999995 +21 +3.072871125223104 +31 +3.7404580917071333 +12 +-5.499999999999995 +22 +3.0790632735059664 +32 +3.72677667575139 +13 +-5.499999999999995 +23 +3.0790632735059664 +33 +3.72677667575139 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.06663474057502 +20 +3.1521089999999985 +30 +3.227619793365834 +11 +-5.136049439910264 +21 +3.09 +31 +3.2284980853079333 +12 +-5.136049439910264 +22 +3.152109 +32 +3.2284980853079333 +13 +-5.136049439910264 +23 +3.152109 +33 +3.2284980853079333 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.136049439910264 +20 +3.09 +30 +3.2284980853079333 +11 +-5.06663474057502 +21 +3.1521089999999985 +31 +3.227619793365834 +12 +-5.06663474057502 +22 +3.089999999999999 +32 +3.227619793365834 +13 +-5.06663474057502 +23 +3.089999999999999 +33 +3.227619793365834 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.136049439910264 +20 +3.152109 +30 +3.2284980853079333 +11 +-5.265127602337854 +21 +3.0900000000000003 +31 +3.2715241394504626 +12 +-5.265127602337854 +22 +3.152109 +32 +3.2715241394504626 +13 +-5.265127602337854 +23 +3.152109 +33 +3.2715241394504626 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.265127602337854 +20 +3.0900000000000003 +30 +3.2715241394504626 +11 +-5.136049439910264 +21 +3.152109 +31 +3.2284980853079333 +12 +-5.136049439910264 +22 +3.09 +32 +3.2284980853079333 +13 +-5.136049439910264 +23 +3.09 +33 +3.2284980853079333 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.265127602337854 +20 +3.152109 +30 +3.2715241394504626 +11 +-5.374999999999995 +21 +3.0900000000000003 +31 +3.3517766757513896 +12 +-5.374999999999995 +22 +3.152109 +32 +3.3517766757513896 +13 +-5.374999999999995 +23 +3.152109 +33 +3.3517766757513896 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.374999999999995 +20 +3.0900000000000003 +30 +3.3517766757513896 +11 +-5.265127602337854 +21 +3.152109 +31 +3.2715241394504626 +12 +-5.265127602337854 +22 +3.0900000000000003 +32 +3.2715241394504626 +13 +-5.265127602337854 +23 +3.0900000000000003 +33 +3.2715241394504626 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.455252536300922 +20 +3.1499114528701706 +30 +3.4616490734135317 +11 +-5.452666904421266 +21 +3.0878043383057854 +31 +3.4581091282954834 +12 +-5.455252536300922 +22 +3.087392168967912 +32 +3.461649073413532 +13 +-5.455252536300922 +23 +3.087392168967912 +33 +3.461649073413532 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.452666904421266 +20 +3.0878043383057854 +30 +3.4581091282954834 +11 +-5.455252536300922 +21 +3.1499114528701706 +31 +3.4616490734135317 +12 +-5.4111798476732265 +22 +3.089999999999999 +32 +3.401309896682915 +13 +-5.4111798476732265 +23 +3.089999999999999 +33 +3.401309896682915 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.4111798476732265 +20 +3.089999999999999 +30 +3.401309896682915 +11 +-5.455252536300922 +21 +3.1499114528701706 +31 +3.4616490734135317 +12 +-5.374999999999995 +22 +3.0900000000000003 +32 +3.3517766757513896 +13 +-5.374999999999995 +23 +3.0900000000000003 +33 +3.3517766757513896 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.374999999999995 +20 +3.0900000000000003 +30 +3.3517766757513896 +11 +-5.455252536300922 +21 +3.1499114528701706 +31 +3.4616490734135317 +12 +-5.374999999999995 +22 +3.152109 +32 +3.3517766757513896 +13 +-5.374999999999995 +23 +3.152109 +33 +3.3517766757513896 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.374999999999995 +20 +3.152109 +30 +3.3517766757513896 +11 +-5.455252536300922 +21 +3.1499114528701706 +31 +3.4616490734135317 +12 +-5.41372985422196 +22 +3.152109 +32 +3.4048010677595886 +13 +-5.41372985422196 +23 +3.152109 +33 +3.4048010677595886 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.4982785904434515 +20 +3.128292290009669 +30 +3.590727235841121 +11 +-5.491487383235348 +21 +3.0703175939727343 +31 +3.5703536142168106 +12 +-5.4982785904434515 +22 +3.0646689131920426 +32 +3.590727235841121 +13 +-5.4982785904434515 +23 +3.0646689131920426 +33 +3.590727235841121 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.491487383235348 +20 +3.0703175939727343 +30 +3.5703536142168106 +11 +-5.4982785904434515 +21 +3.128292290009669 +31 +3.590727235841121 +12 +-5.47289263174993 +22 +3.081230457795461 +32 +3.5145693597605545 +13 +-5.47289263174993 +23 +3.081230457795461 +33 +3.5145693597605545 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.47289263174993 +20 +3.081230457795461 +30 +3.5145693597605545 +11 +-5.4982785904434515 +21 +3.128292290009669 +31 +3.590727235841121 +12 +-5.455252536300922 +22 +3.087392168967912 +32 +3.461649073413532 +13 +-5.455252536300922 +23 +3.087392168967912 +33 +3.461649073413532 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.455252536300922 +20 +3.087392168967912 +30 +3.461649073413532 +11 +-5.4982785904434515 +21 +3.128292290009669 +31 +3.590727235841121 +12 +-5.455252536300922 +22 +3.1499114528701706 +32 +3.4616490734135317 +13 +-5.455252536300922 +23 +3.1499114528701706 +33 +3.4616490734135317 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.455252536300922 +20 +3.1499114528701706 +30 +3.4616490734135317 +11 +-5.4982785904434515 +21 +3.128292290009669 +31 +3.590727235841121 +12 +-5.493783699835049 +22 +3.132030977611587 +32 +3.5772425640159144 +13 +-5.493783699835049 +23 +3.132030977611587 +33 +3.5772425640159144 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.455252536300922 +20 +3.1499114528701706 +30 +3.4616490734135317 +11 +-5.493783699835049 +21 +3.132030977611587 +31 +3.5772425640159144 +12 +-5.4748151938447736 +22 +3.143163189997152 +32 +3.5203370460450882 +13 +-5.4748151938447736 +23 +3.143163189997152 +33 +3.5203370460450882 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.455252536300922 +20 +3.1499114528701706 +30 +3.4616490734135317 +11 +-5.4748151938447736 +21 +3.143163189997152 +31 +3.5203370460450882 +12 +-5.455616833138935 +22 +3.149869205505734 +32 +3.4627419639275696 +13 +-5.455616833138935 +23 +3.149869205505734 +33 +3.4627419639275696 +70 +1 + 0 +3DFACE + 8 +cap +10 +-4.999999999999995 +20 +3.0357609534623577 +30 +3.6785684442714244 +11 +-5.499356934626736 +21 +3.034536500225599 +31 +3.675952812525448 +12 +-5.498713869253477 +22 +3.055130879099794 +32 +3.6251289492995054 +13 +-5.498713869253477 +23 +3.055130879099794 +33 +3.6251289492995054 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499356934626736 +20 +3.034536500225599 +30 +3.675952812525448 +11 +-4.999999999999995 +21 +3.0357609534623577 +31 +3.6785684442714244 +12 +-5.499999999999995 +22 +3.0139421213514037 +32 +3.7267766757513905 +13 +-5.499999999999995 +23 +3.0139421213514037 +33 +3.7267766757513905 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.096779748626952 +30 +3.6876325121546265 +11 +-5.498713869253477 +21 +3.055130879099794 +31 +3.6251289492995054 +12 +-5.499356934626736 +22 +3.034536500225599 +32 +3.675952812525448 +13 +-5.499356934626736 +23 +3.034536500225599 +33 +3.675952812525448 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.498713869253477 +20 +3.055130879099794 +30 +3.6251289492995054 +11 +-5.499999999999995 +21 +3.096779748626952 +31 +3.6876325121546265 +12 +-5.4982785904434515 +22 +3.0646689131920426 +32 +3.590727235841121 +13 +-5.4982785904434515 +23 +3.0646689131920426 +33 +3.590727235841121 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.4982785904434515 +20 +3.0646689131920426 +30 +3.590727235841121 +11 +-5.499999999999995 +21 +3.096779748626952 +31 +3.6876325121546265 +12 +-5.4982785904434515 +22 +3.128292290009669 +32 +3.590727235841121 +13 +-5.4982785904434515 +23 +3.128292290009669 +33 +3.590727235841121 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.4982785904434515 +20 +3.128292290009669 +30 +3.590727235841121 +11 +-5.499999999999995 +21 +3.096779748626952 +31 +3.6876325121546265 +12 +-5.498814964478946 +22 +3.116539009769701 +32 +3.6331188833337724 +13 +-5.498814964478946 +23 +3.116539009769701 +33 +3.6331188833337724 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.0790632735059664 +30 +3.72677667575139 +11 +-5.499356934626736 +21 +3.034536500225599 +31 +3.675952812525448 +12 +-5.499999999999995 +22 +3.0139421213514037 +32 +3.7267766757513905 +13 +-5.499999999999995 +23 +3.0139421213514037 +33 +3.7267766757513905 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499356934626736 +20 +3.034536500225599 +30 +3.675952812525448 +11 +-5.499999999999995 +21 +3.0790632735059664 +31 +3.72677667575139 +12 +-5.499999999999995 +22 +3.096779748626952 +32 +3.6876325121546265 +13 +-5.499999999999995 +23 +3.096779748626952 +33 +3.6876325121546265 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.4982785904434515 +20 +3.128292290009669 +30 +3.590727235841121 +11 +8.7276000111177 +21 +3.132030977611586 +31 +3.577242564015919 +12 +-5.493783699835049 +22 +3.132030977611587 +32 +3.5772425640159144 +13 +-5.493783699835049 +23 +3.132030977611587 +33 +3.5772425640159144 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.7276000111177 +20 +3.132030977611586 +30 +3.577242564015919 +11 +-5.4982785904434515 +21 +3.128292290009669 +31 +3.590727235841121 +12 +8.783476330435551 +22 +3.1165390097697028 +32 +3.6331188833337706 +13 +8.783476330435551 +23 +3.1165390097697028 +33 +3.6331188833337706 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.783476330435551 +20 +3.1165390097697028 +30 +3.6331188833337706 +11 +-5.4982785904434515 +21 +3.128292290009669 +31 +3.590727235841121 +12 +-5.498814964478946 +22 +3.116539009769701 +32 +3.6331188833337724 +13 +-5.498814964478946 +23 +3.116539009769701 +33 +3.6331188833337724 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.377977240467615 +20 +3.1521089999999994 +30 +3.227619793365838 +11 +-4.999999999999995 +21 +3.09 +31 +3.227619793365834 +12 +-4.999999999999995 +22 +3.152109 +32 +3.227619793365834 +13 +-4.999999999999995 +23 +3.152109 +33 +3.227619793365834 +70 +1 + 0 +3DFACE + 8 +cap +10 +-4.999999999999995 +20 +3.09 +30 +3.227619793365834 +11 +8.377977240467615 +21 +3.1521089999999994 +31 +3.227619793365838 +12 +8.377977240467612 +22 +3.09 +32 +3.227619793365834 +13 +8.377977240467612 +23 +3.09 +33 +3.227619793365834 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.608466575397262 +20 +3.087804338305786 +30 +3.4581091282954852 +11 +-5.4111798476732265 +21 +3.089999999999999 +31 +3.401309896682915 +12 +8.55166734378469 +22 +3.09 +32 +3.401309896682911 +13 +8.55166734378469 +23 +3.09 +33 +3.401309896682911 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.4111798476732265 +20 +3.089999999999999 +30 +3.401309896682915 +11 +8.608466575397262 +21 +3.087804338305786 +31 +3.4581091282954852 +12 +-5.452666904421266 +22 +3.0878043383057854 +32 +3.4581091282954834 +13 +-5.452666904421266 +23 +3.0878043383057854 +33 +3.4581091282954834 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.4411340065654183 +30 +5.003932329022501 +11 +8.890815538808916 +21 +3.072871125223103 +31 +3.740458091707135 +12 +-5.499999999999995 +22 +3.072871125223104 +32 +3.7404580917071333 +13 +-5.499999999999995 +23 +3.072871125223104 +33 +3.7404580917071333 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.890815538808916 +20 +3.072871125223103 +30 +3.740458091707135 +11 +-5.499999999999995 +21 +2.4411340065654183 +31 +5.003932329022501 +12 +9.500000000000005 +22 +2.768278894627561 +32 +4.349642552898219 +13 +9.500000000000005 +23 +2.768278894627561 +33 +4.349642552898219 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.768278894627561 +30 +4.349642552898219 +11 +-5.499999999999995 +21 +2.4411340065654183 +31 +5.003932329022501 +12 +9.500000000000005 +22 +2.4411340065654183 +32 +5.003932329022501 +13 +9.500000000000005 +23 +2.4411340065654183 +33 +5.003932329022501 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.493783699835049 +20 +3.132030977611587 +30 +3.5772425640159144 +11 +8.670694493146872 +21 +3.1431631899971517 +31 +3.5203370460450913 +12 +-5.4748151938447736 +22 +3.143163189997152 +32 +3.5203370460450882 +13 +-5.4748151938447736 +23 +3.143163189997152 +33 +3.5203370460450882 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.670694493146872 +20 +3.1431631899971517 +30 +3.5203370460450913 +11 +-5.493783699835049 +21 +3.132030977611587 +31 +3.5772425640159144 +12 +8.7276000111177 +22 +3.132030977611586 +32 +3.577242564015919 +13 +8.7276000111177 +23 +3.132030977611586 +33 +3.577242564015919 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.775486396401288 +20 +3.055130879099793 +30 +3.6251289492995054 +11 +-5.491487383235348 +21 +3.0703175939727343 +31 +3.5703536142168106 +12 +8.720711061318589 +22 +3.070317593972734 +32 +3.57035361421681 +13 +8.720711061318589 +23 +3.070317593972734 +33 +3.57035361421681 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.491487383235348 +20 +3.0703175939727343 +30 +3.5703536142168106 +11 +8.775486396401288 +21 +3.055130879099793 +31 +3.6251289492995054 +12 +-5.4982785904434515 +22 +3.0646689131920426 +32 +3.590727235841121 +13 +-5.4982785904434515 +23 +3.0646689131920426 +33 +3.590727235841121 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.4982785904434515 +20 +3.0646689131920426 +30 +3.590727235841121 +11 +8.775486396401288 +21 +3.055130879099793 +31 +3.6251289492995054 +12 +-5.498713869253477 +22 +3.055130879099794 +32 +3.6251289492995054 +13 +-5.498713869253477 +23 +3.055130879099794 +33 +3.6251289492995054 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.880710598316162 +20 +3.0123234243928074 +30 +3.7303531512143793 +11 +-5.499999999999995 +21 +2.3930340227089686 +31 +4.968931954582056 +12 +-5.499999999999995 +22 +3.0123234243928083 +32 +3.7303531512143784 +13 +-5.499999999999995 +23 +3.0123234243928083 +33 +3.7303531512143784 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3930340227089686 +30 +4.968931954582056 +11 +8.880710598316162 +21 +3.0123234243928074 +31 +3.7303531512143793 +12 +9.500000000000002 +22 +2.70267872355089 +32 +4.349642552898214 +13 +9.500000000000002 +23 +2.70267872355089 +33 +4.349642552898214 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +2.3930340227089686 +30 +4.968931954582056 +11 +9.500000000000002 +21 +2.70267872355089 +31 +4.349642552898214 +12 +9.500000000000005 +22 +2.3930340227089686 +32 +4.968931954582056 +13 +9.500000000000005 +23 +2.3930340227089686 +33 +4.968931954582056 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.136049439910264 +20 +3.152109 +30 +3.2284980853079333 +11 +-4.999999999999995 +21 +3.152109 +31 +3.227619793365834 +12 +-5.06663474057502 +22 +3.1521089999999985 +32 +3.227619793365834 +13 +-5.06663474057502 +23 +3.1521089999999985 +33 +3.227619793365834 +70 +1 + 0 +3DFACE + 8 +cap +10 +-4.999999999999995 +20 +3.152109 +30 +3.227619793365834 +11 +-5.136049439910264 +21 +3.152109 +31 +3.2284980853079333 +12 +8.377977240467615 +22 +3.1521089999999994 +32 +3.227619793365838 +13 +8.377977240467615 +23 +3.1521089999999994 +33 +3.227619793365838 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.377977240467615 +20 +3.1521089999999994 +30 +3.227619793365838 +11 +-5.136049439910264 +21 +3.152109 +31 +3.2284980853079333 +12 +8.55515851486137 +22 +3.152109 +32 +3.4048010677595912 +13 +8.55515851486137 +23 +3.152109 +33 +3.4048010677595912 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.55515851486137 +20 +3.152109 +30 +3.4048010677595912 +11 +-5.136049439910264 +21 +3.152109 +31 +3.2284980853079333 +12 +-5.265127602337854 +22 +3.152109 +32 +3.2715241394504626 +13 +-5.265127602337854 +23 +3.152109 +33 +3.2715241394504626 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.55515851486137 +20 +3.152109 +30 +3.4048010677595912 +11 +-5.265127602337854 +21 +3.152109 +31 +3.2715241394504626 +12 +-5.374999999999995 +22 +3.152109 +32 +3.3517766757513896 +13 +-5.374999999999995 +23 +3.152109 +33 +3.3517766757513896 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.55515851486137 +20 +3.152109 +30 +3.4048010677595912 +11 +-5.374999999999995 +21 +3.152109 +31 +3.3517766757513896 +12 +-5.41372985422196 +22 +3.152109 +32 +3.4048010677595886 +13 +-5.41372985422196 +23 +3.152109 +33 +3.4048010677595886 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.828925891373206 +20 +3.035760953462357 +30 +3.6785684442714257 +11 +-5.499999999999995 +21 +3.0139421213514037 +31 +3.7267766757513905 +12 +-4.999999999999995 +22 +3.0357609534623577 +32 +3.6785684442714244 +13 +-4.999999999999995 +23 +3.0357609534623577 +33 +3.6785684442714244 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.0139421213514037 +30 +3.7267766757513905 +11 +8.828925891373206 +21 +3.035760953462357 +31 +3.6785684442714257 +12 +8.880710598316162 +22 +3.0123234243928074 +32 +3.7303531512143793 +13 +8.880710598316162 +23 +3.0123234243928074 +33 +3.7303531512143793 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.0139421213514037 +30 +3.7267766757513905 +11 +8.880710598316162 +21 +3.0123234243928074 +31 +3.7303531512143793 +12 +-5.499999999999995 +22 +3.0123234243928083 +32 +3.7303531512143784 +13 +-5.499999999999995 +23 +3.0123234243928083 +33 +3.7303531512143784 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.664926806862336 +20 +3.081230457795461 +30 +3.5145693597605576 +11 +-5.491487383235348 +21 +3.0703175939727343 +31 +3.5703536142168106 +12 +-5.47289263174993 +22 +3.081230457795461 +32 +3.5145693597605545 +13 +-5.47289263174993 +23 +3.081230457795461 +33 +3.5145693597605545 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.491487383235348 +20 +3.0703175939727343 +30 +3.5703536142168106 +11 +8.664926806862336 +21 +3.081230457795461 +31 +3.5145693597605576 +12 +8.720711061318589 +22 +3.070317593972734 +32 +3.57035361421681 +13 +8.720711061318589 +23 +3.070317593972734 +33 +3.57035361421681 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.455252536300922 +20 +3.1499114528701706 +30 +3.4616490734135317 +11 +8.55515851486137 +21 +3.152109 +31 +3.4048010677595912 +12 +-5.41372985422196 +22 +3.152109 +32 +3.4048010677595886 +13 +-5.41372985422196 +23 +3.152109 +33 +3.4048010677595886 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.55515851486137 +20 +3.152109 +30 +3.4048010677595912 +11 +-5.455252536300922 +21 +3.1499114528701706 +31 +3.4616490734135317 +12 +8.613099411029346 +22 +3.149869205505735 +32 +3.4627419639275705 +13 +8.613099411029346 +23 +3.149869205505735 +33 +3.4627419639275705 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.613099411029346 +20 +3.149869205505735 +30 +3.4627419639275705 +11 +-5.455252536300922 +21 +3.1499114528701706 +31 +3.4616490734135317 +12 +-5.455616833138935 +22 +3.149869205505734 +32 +3.4627419639275696 +13 +-5.455616833138935 +23 +3.149869205505734 +33 +3.4627419639275696 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.499999999999995 +20 +3.096779748626952 +30 +3.6876325121546265 +11 +8.890815538808916 +21 +3.072871125223103 +31 +3.740458091707135 +12 +8.837989959256406 +22 +3.096779748626954 +32 +3.687632512154624 +13 +8.837989959256406 +23 +3.096779748626954 +33 +3.687632512154624 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.890815538808916 +20 +3.072871125223103 +30 +3.740458091707135 +11 +-5.499999999999995 +21 +3.096779748626952 +31 +3.6876325121546265 +12 +-5.499999999999995 +22 +3.0790632735059664 +32 +3.72677667575139 +13 +-5.499999999999995 +23 +3.0790632735059664 +33 +3.72677667575139 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.890815538808916 +20 +3.072871125223103 +30 +3.740458091707135 +11 +-5.499999999999995 +21 +3.0790632735059664 +31 +3.72677667575139 +12 +-5.499999999999995 +22 +3.072871125223104 +32 +3.7404580917071333 +13 +-5.499999999999995 +23 +3.072871125223104 +33 +3.7404580917071333 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.608466575397262 +20 +3.087804338305786 +30 +3.4581091282954852 +11 +-5.455252536300922 +21 +3.087392168967912 +31 +3.461649073413532 +12 +-5.452666904421266 +22 +3.0878043383057854 +32 +3.4581091282954834 +13 +-5.452666904421266 +23 +3.0878043383057854 +33 +3.4581091282954834 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.455252536300922 +20 +3.087392168967912 +30 +3.461649073413532 +11 +8.608466575397262 +21 +3.087804338305786 +31 +3.4581091282954852 +12 +8.664926806862336 +22 +3.081230457795461 +32 +3.5145693597605576 +13 +8.664926806862336 +23 +3.081230457795461 +33 +3.5145693597605576 +70 +13 + 0 +3DFACE + 8 +cap +10 +-5.455252536300922 +20 +3.087392168967912 +30 +3.461649073413532 +11 +8.664926806862336 +21 +3.081230457795461 +31 +3.5145693597605576 +12 +-5.47289263174993 +22 +3.081230457795461 +32 +3.5145693597605545 +13 +-5.47289263174993 +23 +3.081230457795461 +33 +3.5145693597605545 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.498814964478946 +20 +3.116539009769701 +30 +3.6331188833337724 +11 +8.837989959256406 +21 +3.096779748626954 +31 +3.687632512154624 +12 +8.783476330435551 +22 +3.1165390097697028 +32 +3.6331188833337706 +13 +8.783476330435551 +23 +3.1165390097697028 +33 +3.6331188833337706 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.837989959256406 +20 +3.096779748626954 +30 +3.687632512154624 +11 +-5.498814964478946 +21 +3.116539009769701 +31 +3.6331188833337724 +12 +-5.499999999999995 +22 +3.096779748626952 +32 +3.6876325121546265 +13 +-5.499999999999995 +23 +3.096779748626952 +33 +3.6876325121546265 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.828925891373206 +20 +3.035760953462357 +30 +3.6785684442714257 +11 +-5.498713869253477 +21 +3.055130879099794 +31 +3.6251289492995054 +12 +8.775486396401288 +22 +3.055130879099793 +32 +3.6251289492995054 +13 +8.775486396401288 +23 +3.055130879099793 +33 +3.6251289492995054 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.498713869253477 +20 +3.055130879099794 +30 +3.6251289492995054 +11 +8.828925891373206 +21 +3.035760953462357 +31 +3.6785684442714257 +12 +-4.999999999999995 +22 +3.0357609534623577 +32 +3.6785684442714244 +13 +-4.999999999999995 +23 +3.0357609534623577 +33 +3.6785684442714244 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.55166734378469 +20 +3.09 +30 +3.401309896682911 +11 +-4.999999999999995 +21 +3.09 +31 +3.227619793365834 +12 +8.377977240467612 +22 +3.09 +32 +3.227619793365834 +13 +8.377977240467612 +23 +3.09 +33 +3.227619793365834 +70 +1 + 0 +3DFACE + 8 +cap +10 +-4.999999999999995 +20 +3.09 +30 +3.227619793365834 +11 +8.55166734378469 +21 +3.09 +31 +3.401309896682911 +12 +-5.06663474057502 +22 +3.089999999999999 +32 +3.227619793365834 +13 +-5.06663474057502 +23 +3.089999999999999 +33 +3.227619793365834 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.06663474057502 +20 +3.089999999999999 +30 +3.227619793365834 +11 +8.55166734378469 +21 +3.09 +31 +3.401309896682911 +12 +-5.136049439910264 +22 +3.09 +32 +3.2284980853079333 +13 +-5.136049439910264 +23 +3.09 +33 +3.2284980853079333 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.136049439910264 +20 +3.09 +30 +3.2284980853079333 +11 +8.55166734378469 +21 +3.09 +31 +3.401309896682911 +12 +-5.265127602337854 +22 +3.0900000000000003 +32 +3.2715241394504626 +13 +-5.265127602337854 +23 +3.0900000000000003 +33 +3.2715241394504626 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.265127602337854 +20 +3.0900000000000003 +30 +3.2715241394504626 +11 +8.55166734378469 +21 +3.09 +31 +3.401309896682911 +12 +-5.374999999999995 +22 +3.0900000000000003 +32 +3.3517766757513896 +13 +-5.374999999999995 +23 +3.0900000000000003 +33 +3.3517766757513896 +70 +3 + 0 +3DFACE + 8 +cap +10 +-5.374999999999995 +20 +3.0900000000000003 +30 +3.3517766757513896 +11 +8.55166734378469 +21 +3.09 +31 +3.401309896682911 +12 +-5.4111798476732265 +22 +3.089999999999999 +32 +3.401309896682915 +13 +-5.4111798476732265 +23 +3.089999999999999 +33 +3.401309896682915 +70 +1 + 0 +3DFACE + 8 +cap +10 +-5.4748151938447736 +20 +3.143163189997152 +30 +3.5203370460450882 +11 +8.613099411029346 +21 +3.149869205505735 +31 +3.4627419639275705 +12 +-5.455616833138935 +22 +3.149869205505734 +32 +3.4627419639275696 +13 +-5.455616833138935 +23 +3.149869205505734 +33 +3.4627419639275696 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.613099411029346 +20 +3.149869205505735 +30 +3.4627419639275705 +11 +-5.4748151938447736 +21 +3.143163189997152 +31 +3.5203370460450882 +12 +8.670694493146872 +22 +3.1431631899971517 +32 +3.5203370460450913 +13 +8.670694493146872 +23 +3.1431631899971517 +33 +3.5203370460450913 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.14860079060873 +30 +5.119999999999996 +11 +9.500000000000005 +21 +0.0 +31 +5.15803684215334 +12 +9.500000000000005 +22 +0.0 +32 +5.119999999999996 +13 +9.500000000000005 +23 +0.0 +33 +5.119999999999996 +70 +1 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +0.0 +30 +5.15803684215334 +11 +9.500000000000005 +21 +2.14860079060873 +31 +5.119999999999996 +12 +9.500000000000005 +22 +2.1917876664999696 +32 +5.15803684215334 +13 +9.500000000000005 +23 +2.1917876664999696 +33 +5.15803684215334 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.1917876664999696 +30 +5.15803684215334 +11 +9.500000000000005 +21 +2.14860079060873 +31 +5.119999999999996 +12 +9.500000000000005 +22 +2.198742898510912 +32 +5.115360597579695 +13 +9.500000000000005 +23 +2.198742898510912 +33 +5.115360597579695 +70 +13 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.1917876664999696 +30 +5.15803684215334 +11 +9.500000000000005 +21 +2.198742898510912 +31 +5.115360597579695 +12 +9.500000000000005 +22 +2.2429376307709816 +32 +5.153304187744393 +13 +9.500000000000005 +23 +2.2429376307709816 +33 +5.153304187744393 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2429376307709816 +30 +5.153304187744393 +11 +9.500000000000005 +21 +2.198742898510912 +31 +5.115360597579695 +12 +9.500000000000005 +22 +2.2471825367939746 +32 +5.101599911452267 +13 +9.500000000000005 +23 +2.2471825367939746 +33 +5.101599911452267 +70 +13 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2429376307709816 +30 +5.153304187744393 +11 +9.500000000000005 +21 +2.2471825367939746 +31 +5.101599911452267 +12 +9.500000000000005 +22 +2.2923509057835325 +32 +5.139266911825803 +13 +9.500000000000005 +23 +2.2923509057835325 +33 +5.139266911825803 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2923509057835325 +30 +5.139266911825803 +11 +9.500000000000005 +21 +2.2471825367939746 +31 +5.101599911452267 +12 +9.500000000000005 +22 +2.2922750396074334 +32 +5.079185156719955 +13 +9.500000000000005 +23 +2.2922750396074334 +33 +5.079185156719955 +70 +13 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2923509057835325 +30 +5.139266911825803 +11 +9.500000000000005 +21 +2.2922750396074334 +31 +5.079185156719955 +12 +9.500000000000005 +22 +2.3324893860329072 +32 +5.0488773791494435 +13 +9.500000000000005 +23 +2.3324893860329072 +33 +5.0488773791494435 +70 +13 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.2923509057835325 +30 +5.139266911825803 +11 +9.500000000000005 +21 +2.3324893860329072 +31 +5.0488773791494435 +12 +9.500000000000005 +22 +2.3383497679035443 +32 +5.116401620523369 +13 +9.500000000000005 +23 +2.3383497679035443 +33 +5.116401620523369 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.3383497679035443 +30 +5.116401620523369 +11 +9.500000000000005 +21 +2.3324893860329072 +31 +5.0488773791494435 +12 +9.500000000000005 +22 +2.36646018267338 +32 +5.011705615466466 +13 +9.500000000000005 +23 +2.36646018267338 +33 +5.011705615466466 +70 +13 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.3383497679035443 +30 +5.116401620523369 +11 +9.500000000000005 +21 +2.36646018267338 +31 +5.011705615466466 +12 +9.500000000000005 +22 +2.3793724226921675 +32 +5.085484656623693 +13 +9.500000000000005 +23 +2.3793724226921675 +33 +5.085484656623693 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.3793724226921675 +30 +5.085484656623693 +11 +9.500000000000005 +21 +2.36646018267338 +31 +5.011705615466466 +12 +9.500000000000005 +22 +2.3930340227089686 +32 +4.968931954582056 +13 +9.500000000000005 +23 +2.3930340227089686 +33 +4.968931954582056 +70 +13 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.3793724226921675 +30 +5.085484656623693 +11 +9.500000000000005 +21 +2.3930340227089686 +31 +4.968931954582056 +12 +9.500000000000005 +22 +2.4140260323451184 +32 +5.047565740490686 +13 +9.500000000000005 +23 +2.4140260323451184 +33 +5.047565740490686 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.4140260323451184 +30 +5.047565740490686 +11 +9.500000000000005 +21 +2.3930340227089686 +31 +4.968931954582056 +12 +9.500000000000002 +22 +2.70267872355089 +32 +4.349642552898214 +13 +9.500000000000002 +23 +2.70267872355089 +33 +4.349642552898214 +70 +13 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.4140260323451184 +30 +5.047565740490686 +11 +9.500000000000002 +21 +2.70267872355089 +31 +4.349642552898214 +12 +9.500000000000005 +22 +2.4411340065654183 +32 +5.003932329022501 +13 +9.500000000000005 +23 +2.4411340065654183 +33 +5.003932329022501 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000005 +20 +2.4411340065654183 +30 +5.003932329022501 +11 +9.500000000000002 +21 +2.70267872355089 +31 +4.349642552898214 +12 +9.500000000000005 +22 +2.768278894627561 +32 +4.349642552898219 +13 +9.500000000000005 +23 +2.768278894627561 +33 +4.349642552898219 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.377977240467615 +20 +3.1521089999999994 +30 +3.227619793365838 +11 +8.55166734378469 +21 +3.09 +31 +3.401309896682911 +12 +8.377977240467612 +22 +3.09 +32 +3.227619793365834 +13 +8.377977240467612 +23 +3.09 +33 +3.227619793365834 +70 +1 + 0 +3DFACE + 8 +cap +10 +8.55166734378469 +20 +3.09 +30 +3.401309896682911 +11 +8.377977240467615 +21 +3.1521089999999994 +31 +3.227619793365838 +12 +8.55515851486137 +22 +3.152109 +32 +3.4048010677595912 +13 +8.55515851486137 +23 +3.152109 +33 +3.4048010677595912 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.55166734378469 +20 +3.09 +30 +3.401309896682911 +11 +8.55515851486137 +21 +3.152109 +31 +3.4048010677595912 +12 +8.608466575397262 +22 +3.087804338305786 +32 +3.4581091282954852 +13 +8.608466575397262 +23 +3.087804338305786 +33 +3.4581091282954852 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.608466575397262 +20 +3.087804338305786 +30 +3.4581091282954852 +11 +8.55515851486137 +21 +3.152109 +31 +3.4048010677595912 +12 +8.613099411029346 +22 +3.149869205505735 +32 +3.4627419639275705 +13 +8.613099411029346 +23 +3.149869205505735 +33 +3.4627419639275705 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.608466575397262 +20 +3.087804338305786 +30 +3.4581091282954852 +11 +8.613099411029346 +21 +3.149869205505735 +31 +3.4627419639275705 +12 +8.664926806862336 +22 +3.081230457795461 +32 +3.5145693597605576 +13 +8.664926806862336 +23 +3.081230457795461 +33 +3.5145693597605576 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.664926806862336 +20 +3.081230457795461 +30 +3.5145693597605576 +11 +8.613099411029346 +21 +3.149869205505735 +31 +3.4627419639275705 +12 +8.670694493146872 +22 +3.1431631899971517 +32 +3.5203370460450913 +13 +8.670694493146872 +23 +3.1431631899971517 +33 +3.5203370460450913 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.664926806862336 +20 +3.081230457795461 +30 +3.5145693597605576 +11 +8.670694493146872 +21 +3.1431631899971517 +31 +3.5203370460450913 +12 +8.720711061318589 +22 +3.070317593972734 +32 +3.57035361421681 +13 +8.720711061318589 +23 +3.070317593972734 +33 +3.57035361421681 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.720711061318589 +20 +3.070317593972734 +30 +3.57035361421681 +11 +8.670694493146872 +21 +3.1431631899971517 +31 +3.5203370460450913 +12 +8.7276000111177 +22 +3.132030977611586 +32 +3.577242564015919 +13 +8.7276000111177 +23 +3.132030977611586 +33 +3.577242564015919 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.720711061318589 +20 +3.070317593972734 +30 +3.57035361421681 +11 +8.7276000111177 +21 +3.132030977611586 +31 +3.577242564015919 +12 +8.775486396401288 +22 +3.055130879099793 +32 +3.6251289492995054 +13 +8.775486396401288 +23 +3.055130879099793 +33 +3.6251289492995054 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.775486396401288 +20 +3.055130879099793 +30 +3.6251289492995054 +11 +8.7276000111177 +21 +3.132030977611586 +31 +3.577242564015919 +12 +8.783476330435551 +22 +3.1165390097697028 +32 +3.6331188833337706 +13 +8.783476330435551 +23 +3.1165390097697028 +33 +3.6331188833337706 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.775486396401288 +20 +3.055130879099793 +30 +3.6251289492995054 +11 +8.783476330435551 +21 +3.1165390097697028 +31 +3.6331188833337706 +12 +8.828925891373206 +22 +3.035760953462357 +32 +3.6785684442714257 +13 +8.828925891373206 +23 +3.035760953462357 +33 +3.6785684442714257 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.828925891373206 +20 +3.035760953462357 +30 +3.6785684442714257 +11 +8.783476330435551 +21 +3.1165390097697028 +31 +3.6331188833337706 +12 +8.837989959256406 +22 +3.096779748626954 +32 +3.687632512154624 +13 +8.837989959256406 +23 +3.096779748626954 +33 +3.687632512154624 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.828925891373206 +20 +3.035760953462357 +30 +3.6785684442714257 +11 +8.837989959256406 +21 +3.096779748626954 +31 +3.687632512154624 +12 +8.880710598316162 +22 +3.0123234243928074 +32 +3.7303531512143793 +13 +8.880710598316162 +23 +3.0123234243928074 +33 +3.7303531512143793 +70 +3 + 0 +3DFACE + 8 +cap +10 +8.880710598316162 +20 +3.0123234243928074 +30 +3.7303531512143793 +11 +8.837989959256406 +21 +3.096779748626954 +31 +3.687632512154624 +12 +8.890815538808916 +22 +3.072871125223103 +32 +3.740458091707135 +13 +8.890815538808916 +23 +3.072871125223103 +33 +3.740458091707135 +70 +13 + 0 +3DFACE + 8 +cap +10 +8.880710598316162 +20 +3.0123234243928074 +30 +3.7303531512143793 +11 +8.890815538808916 +21 +3.072871125223103 +31 +3.740458091707135 +12 +9.500000000000002 +22 +2.70267872355089 +32 +4.349642552898214 +13 +9.500000000000002 +23 +2.70267872355089 +33 +4.349642552898214 +70 +3 + 0 +3DFACE + 8 +cap +10 +9.500000000000002 +20 +2.70267872355089 +30 +4.349642552898214 +11 +8.890815538808916 +21 +3.072871125223103 +31 +3.740458091707135 +12 +9.500000000000005 +22 +2.768278894627561 +32 +4.349642552898219 +13 +9.500000000000005 +23 +2.768278894627561 +33 +4.349642552898219 +70 +1 + 0 +3DFACE + 8 +lens +10 +7.549999999999994 +20 +-1.9234723584537645 +30 +1.312690181611032 +11 +7.549999999999996 +21 +2.033557928245138 +31 +4.6873245059755515 +12 +7.549999999999996 +22 +-1.9237143674853878 +32 +4.6873245059755515 +13 +7.549999999999996 +23 +-1.9237143674853878 +33 +4.6873245059755515 +70 +1 + 0 +3DFACE + 8 +lens +10 +7.549999999999996 +20 +2.033557928245138 +30 +4.6873245059755515 +11 +7.549999999999994 +21 +-1.9234723584537645 +31 +1.312690181611032 +12 +7.549999999999995 +22 +2.033799937276761 +32 +1.312690181611032 +13 +7.549999999999995 +23 +2.033799937276761 +33 +1.312690181611032 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.6495190528383337 +20 +0.374999999999997 +30 +-0.37499999999999933 +11 +0.5303300858899189 +21 +0.625000000000002 +31 +-0.5303300858899107 +12 +0.6495190528383366 +22 +0.6250000000000006 +32 +-0.37499999999999933 +13 +0.6495190528383366 +23 +0.6250000000000006 +33 +-0.37499999999999933 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.5303300858899189 +20 +0.625000000000002 +30 +-0.5303300858899107 +11 +0.6495190528383337 +21 +0.374999999999997 +31 +-0.37499999999999933 +12 +0.530330085889916 +22 +0.37499999999999845 +32 +-0.5303300858899107 +13 +0.530330085889916 +23 +0.37499999999999845 +33 +-0.5303300858899107 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.7500000000000047 +20 +0.3749999999999958 +30 +-2.220446049250313e-16 +11 +0.7244443697168106 +21 +0.6249999999999997 +31 +-0.19411428382689278 +12 +0.7500000000000075 +22 +0.6249999999999993 +32 +-2.220446049250313e-16 +13 +0.7500000000000075 +23 +0.6249999999999993 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.7244443697168106 +20 +0.6249999999999997 +30 +-0.19411428382689278 +11 +0.7500000000000047 +21 +0.3749999999999958 +31 +-2.220446049250313e-16 +12 +0.7244443697168077 +22 +0.3749999999999961 +32 +-0.19411428382689278 +13 +0.7244443697168077 +23 +0.3749999999999961 +33 +-0.19411428382689278 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.37500000000000466 +20 +0.3750000000000002 +30 +-0.6495190528383283 +11 +0.5303300858899189 +21 +0.625000000000002 +31 +-0.5303300858899107 +12 +0.530330085889916 +22 +0.37499999999999845 +32 +-0.5303300858899107 +13 +0.530330085889916 +23 +0.37499999999999845 +33 +-0.5303300858899107 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.5303300858899189 +20 +0.625000000000002 +30 +-0.5303300858899107 +11 +0.37500000000000466 +21 +0.3750000000000002 +31 +-0.6495190528383283 +12 +0.37500000000000755 +22 +0.6250000000000038 +32 +-0.6495190528383283 +13 +0.37500000000000755 +23 +0.6250000000000038 +33 +-0.6495190528383283 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.7244443697167984 +20 +0.3750000000000132 +30 +-0.194114283826891 +11 +-0.7499999999999925 +21 +0.6250000000000171 +31 +-2.220446049250313e-16 +12 +-0.7244443697167955 +22 +0.6250000000000168 +32 +-0.194114283826891 +13 +-0.7244443697167955 +23 +0.6250000000000168 +33 +-0.194114283826891 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.7499999999999925 +20 +0.6250000000000171 +30 +-2.220446049250313e-16 +11 +-0.7244443697167984 +21 +0.3750000000000132 +31 +-0.194114283826891 +12 +-0.7499999999999953 +22 +0.37500000000001354 +32 +-2.220446049250313e-16 +13 +-0.7499999999999953 +23 +0.37500000000001354 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.19411428382689633 +20 +0.37500000000000233 +30 +-0.7244443697168006 +11 +0.37500000000000755 +21 +0.6250000000000038 +31 +-0.6495190528383283 +12 +0.37500000000000466 +22 +0.3750000000000002 +32 +-0.6495190528383283 +13 +0.37500000000000466 +23 +0.3750000000000002 +33 +-0.6495190528383283 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.37500000000000755 +20 +0.6250000000000038 +30 +-0.6495190528383283 +11 +0.19411428382689633 +21 +0.37500000000000233 +31 +-0.7244443697168006 +12 +0.19411428382689921 +22 +0.625000000000006 +32 +-0.7244443697168006 +13 +0.19411428382689921 +23 +0.625000000000006 +33 +-0.7244443697168006 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.19411428382688056 +20 +0.6250000000000104 +30 +-0.7244443697168006 +11 +0.19411428382689921 +21 +0.625000000000006 +31 +-0.7244443697168006 +12 +7.549516567451064e-15 +22 +0.6250000000000082 +32 +-0.7499999999999993 +13 +7.549516567451064e-15 +23 +0.6250000000000082 +33 +-0.7499999999999993 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.19411428382689921 +20 +0.625000000000006 +30 +-0.7244443697168006 +11 +-0.19411428382688056 +21 +0.6250000000000104 +31 +-0.7244443697168006 +12 +-0.37499999999999245 +22 +0.6250000000000127 +32 +-0.6495190528383283 +13 +-0.37499999999999245 +23 +0.6250000000000127 +33 +-0.6495190528383283 +70 +13 + 0 +3DFACE + 8 +hinge +10 +0.19411428382689921 +20 +0.625000000000006 +30 +-0.7244443697168006 +11 +-0.37499999999999245 +21 +0.6250000000000127 +31 +-0.6495190528383283 +12 +0.37500000000000755 +22 +0.6250000000000038 +32 +-0.6495190528383283 +13 +0.37500000000000755 +23 +0.6250000000000038 +33 +-0.6495190528383283 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.37500000000000755 +20 +0.6250000000000038 +30 +-0.6495190528383283 +11 +-0.37499999999999245 +21 +0.6250000000000127 +31 +-0.6495190528383283 +12 +-0.5303300858899038 +22 +0.6250000000000144 +32 +-0.5303300858899107 +13 +-0.5303300858899038 +23 +0.6250000000000144 +33 +-0.5303300858899107 +70 +13 + 0 +3DFACE + 8 +hinge +10 +0.37500000000000755 +20 +0.6250000000000038 +30 +-0.6495190528383283 +11 +-0.5303300858899038 +21 +0.6250000000000144 +31 +-0.5303300858899107 +12 +0.5303300858899189 +22 +0.625000000000002 +32 +-0.5303300858899107 +13 +0.5303300858899189 +23 +0.625000000000002 +33 +-0.5303300858899107 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.5303300858899189 +20 +0.625000000000002 +30 +-0.5303300858899107 +11 +-0.5303300858899038 +21 +0.6250000000000144 +31 +-0.5303300858899107 +12 +-0.6495190528383215 +22 +0.6250000000000159 +32 +-0.37499999999999933 +13 +-0.6495190528383215 +23 +0.6250000000000159 +33 +-0.37499999999999933 +70 +13 + 0 +3DFACE + 8 +hinge +10 +0.5303300858899189 +20 +0.625000000000002 +30 +-0.5303300858899107 +11 +-0.6495190528383215 +21 +0.6250000000000159 +31 +-0.37499999999999933 +12 +0.6495190528383366 +22 +0.6250000000000006 +32 +-0.37499999999999933 +13 +0.6495190528383366 +23 +0.6250000000000006 +33 +-0.37499999999999933 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.6495190528383366 +20 +0.6250000000000006 +30 +-0.37499999999999933 +11 +-0.6495190528383215 +21 +0.6250000000000159 +31 +-0.37499999999999933 +12 +-0.7244443697167955 +22 +0.6250000000000168 +32 +-0.194114283826891 +13 +-0.7244443697167955 +23 +0.6250000000000168 +33 +-0.194114283826891 +70 +13 + 0 +3DFACE + 8 +hinge +10 +0.6495190528383366 +20 +0.6250000000000006 +30 +-0.37499999999999933 +11 +-0.7244443697167955 +21 +0.6250000000000168 +31 +-0.194114283826891 +12 +0.7244443697168106 +22 +0.6249999999999997 +32 +-0.19411428382689278 +13 +0.7244443697168106 +23 +0.6249999999999997 +33 +-0.19411428382689278 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.7244443697168106 +20 +0.6249999999999997 +30 +-0.19411428382689278 +11 +-0.7244443697167955 +21 +0.6250000000000168 +31 +-0.194114283826891 +12 +0.7500000000000075 +22 +0.6249999999999993 +32 +-2.220446049250313e-16 +13 +0.7500000000000075 +23 +0.6249999999999993 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.7500000000000075 +20 +0.6249999999999993 +30 +-2.220446049250313e-16 +11 +-0.7244443697167955 +21 +0.6250000000000168 +31 +-0.194114283826891 +12 +-0.7499999999999925 +22 +0.6250000000000171 +32 +-2.220446049250313e-16 +13 +-0.7499999999999925 +23 +0.6250000000000171 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.5303300858899067 +20 +0.3750000000000109 +30 +-0.5303300858899107 +11 +-0.37499999999999245 +21 +0.6250000000000127 +31 +-0.6495190528383283 +12 +-0.37499999999999534 +22 +0.3750000000000091 +32 +-0.6495190528383283 +13 +-0.37499999999999534 +23 +0.3750000000000091 +33 +-0.6495190528383283 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.37499999999999245 +20 +0.6250000000000127 +30 +-0.6495190528383283 +11 +-0.5303300858899067 +21 +0.3750000000000109 +31 +-0.5303300858899107 +12 +-0.5303300858899038 +22 +0.6250000000000144 +32 +-0.5303300858899107 +13 +-0.5303300858899038 +23 +0.6250000000000144 +33 +-0.5303300858899107 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.5303300858899067 +20 +0.3750000000000109 +30 +-0.5303300858899107 +11 +-0.6495190528383215 +21 +0.6250000000000159 +31 +-0.37499999999999933 +12 +-0.5303300858899038 +22 +0.6250000000000144 +32 +-0.5303300858899107 +13 +-0.5303300858899038 +23 +0.6250000000000144 +33 +-0.5303300858899107 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.6495190528383215 +20 +0.6250000000000159 +30 +-0.37499999999999933 +11 +-0.5303300858899067 +21 +0.3750000000000109 +31 +-0.5303300858899107 +12 +-0.6495190528383243 +22 +0.3750000000000123 +32 +-0.37499999999999933 +13 +-0.6495190528383243 +23 +0.3750000000000123 +33 +-0.37499999999999933 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.37499999999999534 +20 +0.3750000000000091 +30 +-0.6495190528383283 +11 +-0.19411428382688056 +21 +0.6250000000000104 +31 +-0.7244443697168006 +12 +-0.19411428382688345 +22 +0.375000000000007 +32 +-0.7244443697168006 +13 +-0.19411428382688345 +23 +0.375000000000007 +33 +-0.7244443697168006 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.19411428382688056 +20 +0.6250000000000104 +30 +-0.7244443697168006 +11 +-0.37499999999999534 +21 +0.3750000000000091 +31 +-0.6495190528383283 +12 +-0.37499999999999245 +22 +0.6250000000000127 +32 +-0.6495190528383283 +13 +-0.37499999999999245 +23 +0.6250000000000127 +33 +-0.6495190528383283 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.19411428382688345 +20 +0.375000000000007 +30 +-0.7244443697168006 +11 +7.549516567451064e-15 +21 +0.6250000000000082 +31 +-0.7499999999999993 +12 +4.6629367034256575e-15 +22 +0.37500000000000466 +32 +-0.7499999999999993 +13 +4.6629367034256575e-15 +23 +0.37500000000000466 +33 +-0.7499999999999993 +70 +1 + 0 +3DFACE + 8 +hinge +10 +7.549516567451064e-15 +20 +0.6250000000000082 +30 +-0.7499999999999993 +11 +-0.19411428382688345 +21 +0.375000000000007 +31 +-0.7244443697168006 +12 +-0.19411428382688056 +22 +0.6250000000000104 +32 +-0.7244443697168006 +13 +-0.19411428382688056 +23 +0.6250000000000104 +33 +-0.7244443697168006 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.7244443697168077 +20 +0.3749999999999961 +30 +-0.19411428382689278 +11 +0.6495190528383366 +21 +0.6250000000000006 +31 +-0.37499999999999933 +12 +0.7244443697168106 +22 +0.6249999999999997 +32 +-0.19411428382689278 +13 +0.7244443697168106 +23 +0.6249999999999997 +33 +-0.19411428382689278 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.6495190528383366 +20 +0.6250000000000006 +30 +-0.37499999999999933 +11 +0.7244443697168077 +21 +0.3749999999999961 +31 +-0.19411428382689278 +12 +0.6495190528383337 +22 +0.374999999999997 +32 +-0.37499999999999933 +13 +0.6495190528383337 +23 +0.374999999999997 +33 +-0.37499999999999933 +70 +1 + 0 +LINE + 8 +hinge +10 +-0.9999999999999996 +20 +1.6431300764452317e-14 +30 +0.9999999999999996 +11 +1.0000000000000002 +21 +-7.105427357601002e-15 +31 +0.9999999999999996 + 0 +3DFACE + 8 +hinge +10 +4.6629367034256575e-15 +20 +0.37500000000000466 +30 +-0.7499999999999993 +11 +0.19411428382689921 +21 +0.625000000000006 +31 +-0.7244443697168006 +12 +0.19411428382689633 +22 +0.37500000000000233 +32 +-0.7244443697168006 +13 +0.19411428382689633 +23 +0.37500000000000233 +33 +-0.7244443697168006 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.19411428382689921 +20 +0.625000000000006 +30 +-0.7244443697168006 +11 +4.6629367034256575e-15 +21 +0.37500000000000466 +31 +-0.7499999999999993 +12 +7.549516567451064e-15 +22 +0.6250000000000082 +32 +-0.7499999999999993 +13 +7.549516567451064e-15 +23 +0.6250000000000082 +33 +-0.7499999999999993 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.6495190528383243 +20 +0.3750000000000123 +30 +-0.37499999999999933 +11 +-0.7244443697167955 +21 +0.6250000000000168 +31 +-0.194114283826891 +12 +-0.6495190528383215 +22 +0.6250000000000159 +32 +-0.37499999999999933 +13 +-0.6495190528383215 +23 +0.6250000000000159 +33 +-0.37499999999999933 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.7244443697167955 +20 +0.6250000000000168 +30 +-0.194114283826891 +11 +-0.6495190528383243 +21 +0.3750000000000123 +31 +-0.37499999999999933 +12 +-0.7244443697167984 +22 +0.3750000000000132 +32 +-0.194114283826891 +13 +-0.7244443697167984 +23 +0.3750000000000132 +33 +-0.194114283826891 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.19411428382689633 +20 +0.37500000000000233 +30 +-0.7244443697168006 +11 +-0.19411428382688345 +21 +0.375000000000007 +31 +-0.7244443697168006 +12 +4.6629367034256575e-15 +22 +0.37500000000000466 +32 +-0.7499999999999993 +13 +4.6629367034256575e-15 +23 +0.37500000000000466 +33 +-0.7499999999999993 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.19411428382688345 +20 +0.375000000000007 +30 +-0.7244443697168006 +11 +0.19411428382689633 +21 +0.37500000000000233 +31 +-0.7244443697168006 +12 +0.37500000000000466 +22 +0.3750000000000002 +32 +-0.6495190528383283 +13 +0.37500000000000466 +23 +0.3750000000000002 +33 +-0.6495190528383283 +70 +13 + 0 +3DFACE + 8 +hinge +10 +-0.19411428382688345 +20 +0.375000000000007 +30 +-0.7244443697168006 +11 +0.37500000000000466 +21 +0.3750000000000002 +31 +-0.6495190528383283 +12 +-0.37499999999999534 +22 +0.3750000000000091 +32 +-0.6495190528383283 +13 +-0.37499999999999534 +23 +0.3750000000000091 +33 +-0.6495190528383283 +70 +3 + 0 +3DFACE + 8 +hinge +10 +-0.37499999999999534 +20 +0.3750000000000091 +30 +-0.6495190528383283 +11 +0.37500000000000466 +21 +0.3750000000000002 +31 +-0.6495190528383283 +12 +0.530330085889916 +22 +0.37499999999999845 +32 +-0.5303300858899107 +13 +0.530330085889916 +23 +0.37499999999999845 +33 +-0.5303300858899107 +70 +13 + 0 +3DFACE + 8 +hinge +10 +-0.37499999999999534 +20 +0.3750000000000091 +30 +-0.6495190528383283 +11 +0.530330085889916 +21 +0.37499999999999845 +31 +-0.5303300858899107 +12 +-0.5303300858899067 +22 +0.3750000000000109 +32 +-0.5303300858899107 +13 +-0.5303300858899067 +23 +0.3750000000000109 +33 +-0.5303300858899107 +70 +3 + 0 +3DFACE + 8 +hinge +10 +-0.5303300858899067 +20 +0.3750000000000109 +30 +-0.5303300858899107 +11 +0.530330085889916 +21 +0.37499999999999845 +31 +-0.5303300858899107 +12 +0.6495190528383337 +22 +0.374999999999997 +32 +-0.37499999999999933 +13 +0.6495190528383337 +23 +0.374999999999997 +33 +-0.37499999999999933 +70 +13 + 0 +3DFACE + 8 +hinge +10 +-0.5303300858899067 +20 +0.3750000000000109 +30 +-0.5303300858899107 +11 +0.6495190528383337 +21 +0.374999999999997 +31 +-0.37499999999999933 +12 +-0.6495190528383243 +22 +0.3750000000000123 +32 +-0.37499999999999933 +13 +-0.6495190528383243 +23 +0.3750000000000123 +33 +-0.37499999999999933 +70 +3 + 0 +3DFACE + 8 +hinge +10 +-0.6495190528383243 +20 +0.3750000000000123 +30 +-0.37499999999999933 +11 +0.6495190528383337 +21 +0.374999999999997 +31 +-0.37499999999999933 +12 +0.7244443697168077 +22 +0.3749999999999961 +32 +-0.19411428382689278 +13 +0.7244443697168077 +23 +0.3749999999999961 +33 +-0.19411428382689278 +70 +13 + 0 +3DFACE + 8 +hinge +10 +-0.6495190528383243 +20 +0.3750000000000123 +30 +-0.37499999999999933 +11 +0.7244443697168077 +21 +0.3749999999999961 +31 +-0.19411428382689278 +12 +-0.7244443697167984 +22 +0.3750000000000132 +32 +-0.194114283826891 +13 +-0.7244443697167984 +23 +0.3750000000000132 +33 +-0.194114283826891 +70 +3 + 0 +3DFACE + 8 +hinge +10 +-0.7244443697167984 +20 +0.3750000000000132 +30 +-0.194114283826891 +11 +0.7244443697168077 +21 +0.3749999999999961 +31 +-0.19411428382689278 +12 +0.7500000000000047 +22 +0.3749999999999958 +32 +-2.220446049250313e-16 +13 +0.7500000000000047 +23 +0.3749999999999958 +33 +-2.220446049250313e-16 +70 +13 + 0 +3DFACE + 8 +hinge +10 +-0.7244443697167984 +20 +0.3750000000000132 +30 +-0.194114283826891 +11 +0.7500000000000047 +21 +0.3749999999999958 +31 +-2.220446049250313e-16 +12 +-0.7499999999999953 +22 +0.37500000000001354 +32 +-2.220446049250313e-16 +13 +-0.7499999999999953 +23 +0.37500000000001354 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.9999999999999996 +20 +1.6431300764452317e-14 +30 +-2.220446049250313e-16 +11 +0.9659258262890719 +21 +0.2588190451025134 +31 +-2.220446049250313e-16 +12 +1.0000000000000002 +22 +-7.105427357601002e-15 +32 +-2.220446049250313e-16 +13 +1.0000000000000002 +23 +-7.105427357601002e-15 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.9659258262890719 +20 +0.2588190451025134 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +0.8660254037844454 +22 +0.4999999999999938 +32 +-2.220446049250313e-16 +13 +0.8660254037844454 +23 +0.4999999999999938 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.8660254037844454 +20 +0.4999999999999938 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +0.7071067811865565 +22 +0.7071067811865436 +32 +-2.220446049250313e-16 +13 +0.7071067811865565 +23 +0.7071067811865436 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.7071067811865565 +20 +0.7071067811865436 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +0.5000000000000104 +22 +0.8660254037844374 +32 +-2.220446049250313e-16 +13 +0.5000000000000104 +23 +0.8660254037844374 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.5000000000000104 +20 +0.8660254037844374 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +0.2588190451025332 +22 +0.9659258262890692 +32 +-2.220446049250313e-16 +13 +0.2588190451025332 +23 +0.9659258262890692 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +0.2588190451025332 +20 +0.9659258262890692 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +1.199040866595169e-14 +22 +1.0000000000000047 +32 +-2.220446049250313e-16 +13 +1.199040866595169e-14 +23 +1.0000000000000047 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +1.199040866595169e-14 +20 +1.0000000000000047 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +-0.2588190451025092 +22 +0.965925826289077 +32 +-2.220446049250313e-16 +13 +-0.2588190451025092 +23 +0.965925826289077 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +-0.2588190451025092 +20 +0.965925826289077 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +-0.49999999999998956 +22 +0.8660254037844491 +32 +-2.220446049250313e-16 +13 +-0.49999999999998956 +23 +0.8660254037844491 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +-0.49999999999998956 +20 +0.8660254037844491 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +-0.7071067811865395 +22 +0.7071067811865602 +32 +-2.220446049250313e-16 +13 +-0.7071067811865395 +23 +0.7071067811865602 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +-0.7071067811865395 +20 +0.7071067811865602 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +-0.8660254037844322 +22 +0.5000000000000151 +32 +-2.220446049250313e-16 +13 +-0.8660254037844322 +23 +0.5000000000000151 +33 +-2.220446049250313e-16 +70 +3 + 0 +3DFACE + 8 +hinge +10 +-0.8660254037844322 +20 +0.5000000000000151 +30 +-2.220446049250313e-16 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +-0.9659258262890644 +22 +0.25881904510253695 +32 +-2.220446049250313e-16 +13 +-0.9659258262890644 +23 +0.25881904510253695 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +1.199040866595169e-14 +20 +1.0000000000000047 +30 +0.9999999999999996 +11 +0.2588190451025332 +21 +0.9659258262890692 +31 +-2.220446049250313e-16 +12 +1.199040866595169e-14 +22 +1.0000000000000047 +32 +-2.220446049250313e-16 +13 +1.199040866595169e-14 +23 +1.0000000000000047 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.2588190451025332 +20 +0.9659258262890692 +30 +-2.220446049250313e-16 +11 +1.199040866595169e-14 +21 +1.0000000000000047 +31 +0.9999999999999996 +12 +0.2588190451025332 +22 +0.9659258262890692 +32 +0.9999999999999996 +13 +0.2588190451025332 +23 +0.9659258262890692 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.7071067811865395 +20 +0.7071067811865602 +30 +0.9999999999999996 +11 +-0.49999999999998956 +21 +0.8660254037844491 +31 +-2.220446049250313e-16 +12 +-0.7071067811865395 +22 +0.7071067811865602 +32 +-2.220446049250313e-16 +13 +-0.7071067811865395 +23 +0.7071067811865602 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.49999999999998956 +20 +0.8660254037844491 +30 +-2.220446049250313e-16 +11 +-0.7071067811865395 +21 +0.7071067811865602 +31 +0.9999999999999996 +12 +-0.49999999999998956 +22 +0.8660254037844491 +32 +0.9999999999999996 +13 +-0.49999999999998956 +23 +0.8660254037844491 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.49999999999998956 +20 +0.8660254037844491 +30 +0.9999999999999996 +11 +-0.2588190451025092 +21 +0.965925826289077 +31 +-2.220446049250313e-16 +12 +-0.49999999999998956 +22 +0.8660254037844491 +32 +-2.220446049250313e-16 +13 +-0.49999999999998956 +23 +0.8660254037844491 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.2588190451025092 +20 +0.965925826289077 +30 +-2.220446049250313e-16 +11 +-0.49999999999998956 +21 +0.8660254037844491 +31 +0.9999999999999996 +12 +-0.2588190451025092 +22 +0.965925826289077 +32 +0.9999999999999996 +13 +-0.2588190451025092 +23 +0.965925826289077 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.2588190451025332 +20 +0.9659258262890692 +30 +0.9999999999999996 +11 +0.5000000000000104 +21 +0.8660254037844374 +31 +-2.220446049250313e-16 +12 +0.2588190451025332 +22 +0.9659258262890692 +32 +-2.220446049250313e-16 +13 +0.2588190451025332 +23 +0.9659258262890692 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.5000000000000104 +20 +0.8660254037844374 +30 +-2.220446049250313e-16 +11 +0.2588190451025332 +21 +0.9659258262890692 +31 +0.9999999999999996 +12 +0.5000000000000104 +22 +0.8660254037844374 +32 +0.9999999999999996 +13 +0.5000000000000104 +23 +0.8660254037844374 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +1.0000000000000002 +20 +-7.105427357601002e-15 +30 +0.9999999999999996 +11 +0.9659258262890719 +21 +0.2588190451025134 +31 +-2.220446049250313e-16 +12 +0.9659258262890719 +22 +0.2588190451025134 +32 +0.9999999999999996 +13 +0.9659258262890719 +23 +0.2588190451025134 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.9659258262890719 +20 +0.2588190451025134 +30 +-2.220446049250313e-16 +11 +1.0000000000000002 +21 +-7.105427357601002e-15 +31 +0.9999999999999996 +12 +1.0000000000000002 +22 +-7.105427357601002e-15 +32 +-2.220446049250313e-16 +13 +1.0000000000000002 +23 +-7.105427357601002e-15 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.8660254037844454 +20 +0.4999999999999938 +30 +0.9999999999999996 +11 +0.7071067811865565 +21 +0.7071067811865436 +31 +-2.220446049250313e-16 +12 +0.7071067811865565 +22 +0.7071067811865436 +32 +0.9999999999999996 +13 +0.7071067811865565 +23 +0.7071067811865436 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.7071067811865565 +20 +0.7071067811865436 +30 +-2.220446049250313e-16 +11 +0.8660254037844454 +21 +0.4999999999999938 +31 +0.9999999999999996 +12 +0.8660254037844454 +22 +0.4999999999999938 +32 +-2.220446049250313e-16 +13 +0.8660254037844454 +23 +0.4999999999999938 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.2588190451025092 +20 +0.965925826289077 +30 +0.9999999999999996 +11 +1.199040866595169e-14 +21 +1.0000000000000047 +31 +-2.220446049250313e-16 +12 +-0.2588190451025092 +22 +0.965925826289077 +32 +-2.220446049250313e-16 +13 +-0.2588190451025092 +23 +0.965925826289077 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +1.199040866595169e-14 +20 +1.0000000000000047 +30 +-2.220446049250313e-16 +11 +-0.2588190451025092 +21 +0.965925826289077 +31 +0.9999999999999996 +12 +1.199040866595169e-14 +22 +1.0000000000000047 +32 +0.9999999999999996 +13 +1.199040866595169e-14 +23 +1.0000000000000047 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.9659258262890644 +20 +0.25881904510253695 +30 +-2.220446049250313e-16 +11 +-0.8660254037844322 +21 +0.5000000000000151 +31 +0.9999999999999996 +12 +-0.8660254037844322 +22 +0.5000000000000151 +32 +-2.220446049250313e-16 +13 +-0.8660254037844322 +23 +0.5000000000000151 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.8660254037844322 +20 +0.5000000000000151 +30 +0.9999999999999996 +11 +-0.9659258262890644 +21 +0.25881904510253695 +31 +-2.220446049250313e-16 +12 +-0.9659258262890644 +22 +0.25881904510253695 +32 +0.9999999999999996 +13 +-0.9659258262890644 +23 +0.25881904510253695 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.8660254037844322 +20 +0.5000000000000151 +30 +-2.220446049250313e-16 +11 +-0.7071067811865395 +21 +0.7071067811865602 +31 +0.9999999999999996 +12 +-0.7071067811865395 +22 +0.7071067811865602 +32 +-2.220446049250313e-16 +13 +-0.7071067811865395 +23 +0.7071067811865602 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.7071067811865395 +20 +0.7071067811865602 +30 +0.9999999999999996 +11 +-0.8660254037844322 +21 +0.5000000000000151 +31 +-2.220446049250313e-16 +12 +-0.8660254037844322 +22 +0.5000000000000151 +32 +0.9999999999999996 +13 +-0.8660254037844322 +23 +0.5000000000000151 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.5000000000000104 +20 +0.8660254037844374 +30 +0.9999999999999996 +11 +0.7071067811865565 +21 +0.7071067811865436 +31 +-2.220446049250313e-16 +12 +0.5000000000000104 +22 +0.8660254037844374 +32 +-2.220446049250313e-16 +13 +0.5000000000000104 +23 +0.8660254037844374 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.7071067811865565 +20 +0.7071067811865436 +30 +-2.220446049250313e-16 +11 +0.5000000000000104 +21 +0.8660254037844374 +31 +0.9999999999999996 +12 +0.7071067811865565 +22 +0.7071067811865436 +32 +0.9999999999999996 +13 +0.7071067811865565 +23 +0.7071067811865436 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.9659258262890719 +20 +0.2588190451025134 +30 +0.9999999999999996 +11 +0.8660254037844454 +21 +0.4999999999999938 +31 +-2.220446049250313e-16 +12 +0.8660254037844454 +22 +0.4999999999999938 +32 +0.9999999999999996 +13 +0.8660254037844454 +23 +0.4999999999999938 +33 +0.9999999999999996 +70 +1 + 0 +3DFACE + 8 +hinge +10 +0.8660254037844454 +20 +0.4999999999999938 +30 +-2.220446049250313e-16 +11 +0.9659258262890719 +21 +0.2588190451025134 +31 +0.9999999999999996 +12 +0.9659258262890719 +22 +0.2588190451025134 +32 +-2.220446049250313e-16 +13 +0.9659258262890719 +23 +0.2588190451025134 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.9999999999999996 +20 +1.6431300764452317e-14 +30 +-2.220446049250313e-16 +11 +-0.9659258262890644 +21 +0.25881904510253695 +31 +0.9999999999999996 +12 +-0.9659258262890644 +22 +0.25881904510253695 +32 +-2.220446049250313e-16 +13 +-0.9659258262890644 +23 +0.25881904510253695 +33 +-2.220446049250313e-16 +70 +1 + 0 +3DFACE + 8 +hinge +10 +-0.9659258262890644 +20 +0.25881904510253695 +30 +0.9999999999999996 +11 +-0.9999999999999996 +21 +1.6431300764452317e-14 +31 +-2.220446049250313e-16 +12 +-0.9999999999999996 +22 +1.6431300764452317e-14 +32 +0.9999999999999996 +13 +-0.9999999999999996 +23 +1.6431300764452317e-14 +33 +0.9999999999999996 +70 +1 + 0 +ENDSEC + 0 +EOF diff --git a/hacks/glx/shark.c b/hacks/glx/shark.c new file mode 100644 index 0000000..682ed6e --- /dev/null +++ b/hacks/glx/shark.c @@ -0,0 +1,1395 @@ +/* atlantis --- Shows moving 3D sea animals */ + +#if 0 +static const char sccsid[] = "@(#)shark.c 1.2 98/06/16 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 1998. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Mark J. Kilgard + * as a demo for openGL programming. + * + * Porting it to xlock was possible by comparing the original Mesa's morph3d + * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna + * (look at morph3d.c) for his indirect help. + * + * Thanks goes also to Brian Paul for making it possible and inexpensive + * to use OpenGL at home. + * + * My e-mail address is lassauge@users.sourceforge.net + * + * Eric Lassauge (May-13-1998) + * + */ + +/** + * (c) Copyright 1993, 1994, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(TM) is a trademark of Silicon Graphics, Inc. + */ + +#ifdef USE_GL + +#include "atlantis.h" + +/* *INDENT-OFF* */ +#if 0 +static const float N001[3] = {0, 1, 0}; +#endif +static const float N002[3] = {0.000077, -0.020611, 0.999788}; +static const float N003[3] = {0.961425, 0.258729, -0.09339}; +static const float N004[3] = {0.510811, -0.769633, -0.383063}; +static const float N005[3] = {0.400123, 0.855734, -0.328055}; +static const float N006[3] = {-0.770715, 0.610204, -0.18344}; +static const float N007[3] = {-0.915597, -0.373345, -0.149316}; +static const float N008[3] = {-0.972788, 0.208921, -0.100179}; +static const float N009[3] = {-0.939713, -0.312268, -0.139383}; +static const float N010[3] = {-0.624138, -0.741047, -0.247589}; +static const float N011[3] = {0.591434, -0.768401, -0.244471}; +static const float N012[3] = {0.935152, -0.328495, -0.132598}; +static const float N013[3] = {0.997102, 0.074243, -0.016593}; +static const float N014[3] = {0.969995, 0.241712, -0.026186}; +static const float N015[3] = {0.844539, 0.502628, -0.184714}; +static const float N016[3] = {-0.906608, 0.386308, -0.169787}; +static const float N017[3] = {-0.970016, 0.241698, -0.025516}; +static const float N018[3] = {-0.998652, 0.050493, -0.012045}; +static const float N019[3] = {-0.942685, -0.333051, -0.020556}; +static const float N020[3] = {-0.660944, -0.750276, 0.01548}; +static const float N021[3] = {0.503549, -0.862908, -0.042749}; +static const float N022[3] = {0.953202, -0.302092, -0.012089}; +static const float N023[3] = {0.998738, 0.023574, 0.044344}; +static const float N024[3] = {0.979297, 0.193272, 0.060202}; +static const float N025[3] = {0.7983, 0.464885, 0.382883}; +static const float N026[3] = {-0.75659, 0.452403, 0.472126}; +static const float N027[3] = {-0.953855, 0.293003, 0.065651}; +static const float N028[3] = {-0.998033, 0.040292, 0.048028}; +static const float N029[3] = {-0.977079, -0.204288, 0.059858}; +static const float N030[3] = {-0.729117, -0.675304, 0.11114}; +static const float N031[3] = {0.598361, -0.792753, 0.116221}; +static const float N032[3] = {0.965192, -0.252991, 0.066332}; +static const float N033[3] = {0.998201, -0.00279, 0.059892}; +static const float N034[3] = {0.978657, 0.193135, 0.070207}; +static const float N035[3] = {0.718815, 0.680392, 0.142733}; +static const float N036[3] = {-0.383096, 0.906212, 0.178936}; +static const float N037[3] = {-0.952831, 0.29259, 0.080647}; +static const float N038[3] = {-0.99768, 0.032417, 0.059861}; +static const float N039[3] = {-0.982629, -0.169881, 0.0747}; +static const float N040[3] = {-0.695424, -0.703466, 0.1467}; +static const float N041[3] = {0.359323, -0.915531, 0.180805}; +static const float N042[3] = {0.943356, -0.319387, 0.089842}; +static const float N043[3] = {0.998272, -0.032435, 0.048993}; +static const float N044[3] = {0.978997, 0.193205, 0.065084}; +static const float N045[3] = {0.872144, 0.470094, -0.135565}; +static const float N046[3] = {-0.664282, 0.737945, -0.119027}; +static const float N047[3] = {-0.954508, 0.28857, 0.075107}; +static const float N048[3] = {-0.998273, 0.032406, 0.048993}; +static const float N049[3] = {-0.979908, -0.193579, 0.048038}; +static const float N050[3] = {-0.858736, -0.507202, -0.072938}; +static const float N051[3] = {0.643545, -0.763887, -0.048237}; +static const float N052[3] = {0.95558, -0.288954, 0.058068}; +#if 0 +static const float N053[3] = {0, 1, 0}; +static const float N054[3] = {0, 1, 0}; +static const float N055[3] = {0, 1, 0}; +static const float N056[3] = {0, 1, 0}; +static const float N057[3] = {0, 1, 0}; +#endif +static const float N058[3] = {0.00005, 0.793007, -0.609213}; +static const float N059[3] = {0.91351, 0.235418, -0.331779}; +static const float N060[3] = {-0.80797, 0.495, -0.319625}; +static const float N061[3] = {0, 0.784687, -0.619892}; +static const float N062[3] = {0, -1, 0}; +static const float N063[3] = {0, 1, 0}; +static const float N064[3] = {0, 1, 0}; +static const float N065[3] = {0, 1, 0}; +static const float N066[3] = {-0.055784, 0.257059, 0.964784}; +#if 0 +static const float N067[3] = {0, 1, 0}; +static const float N068[3] = {0, 1, 0}; +#endif +static const float N069[3] = {-0.000505, -0.929775, -0.368127}; +static const float N070[3] = {0, 1, 0}; +#if 0 +static const float N071[3] = {-0.987102, 0.131723, -0.090984}; +static const float N072[3] = {-0.987102, 0.131723, -0.090984}; +static const float N073[3] = {-0.987102, 0.131723, -0.090984}; +static const float N074[3] = {0, 1, 0}; +static const float N075[3] = {0, 1, 0}; +static const float N076[3] = {0, 1, 0}; +static const float N077[3] = {0.99521, 0.071962, -0.066168}; +static const float N078[3] = {0.99521, 0.071962, -0.066168}; +static const float N079[3] = {0.99521, 0.071962, -0.066168}; +static const float N080[3] = {0, 1, 0}; +static const float N081[3] = {0, 1, 0}; +static const float N082[3] = {0, 1, 0}; +static const float P001[3] = {0, 0, 0}; +#endif +static float P002[3] = {0, -36.59, 5687.72}; +static const float P003[3] = {90, 114.73, 724.38}; +static float P004[3] = {58.24, -146.84, 262.35}; +static const float P005[3] = {27.81, 231.52, 510.43}; +static const float P006[3] = {-27.81, 230.43, 509.76}; +static float P007[3] = {-46.09, -146.83, 265.84}; +static const float P008[3] = {-90, 103.84, 718.53}; +static const float P009[3] = {-131.1, -165.92, 834.85}; +static float P010[3] = {-27.81, -285.31, 500}; +static float P011[3] = {27.81, -285.32, 500}; +static const float P012[3] = {147.96, -170.89, 845.5}; +static const float P013[3] = {180, 0, 2000}; +static const float P014[3] = {145.62, 352.67, 2000}; +static const float P015[3] = {55.62, 570.63, 2000}; +static const float P016[3] = {-55.62, 570.64, 2000}; +static const float P017[3] = {-145.62, 352.68, 2000}; +static const float P018[3] = {-180, 0.01, 2000}; +static const float P019[3] = {-178.2, -352.66, 2001.61}; +static const float P020[3] = {-55.63, -570.63, 2000}; +static const float P021[3] = {55.62, -570.64, 2000}; +static const float P022[3] = {179.91, -352.69, 1998.39}; +static float P023[3] = {150, 0, 3000}; +static float P024[3] = {121.35, 293.89, 3000}; +static float P025[3] = {46.35, 502.93, 2883.09}; +static float P026[3] = {-46.35, 497.45, 2877.24}; +static float P027[3] = {-121.35, 293.9, 3000}; +static float P028[3] = {-150, 0, 3000}; +static float P029[3] = {-152.21, -304.84, 2858.68}; +static float P030[3] = {-46.36, -475.52, 3000}; +static float P031[3] = {46.35, -475.53, 3000}; +static float P032[3] = {155.64, -304.87, 2863.5}; +static float P033[3] = {90, 0, 4000}; +static float P034[3] = {72.81, 176.33, 4000}; +static float P035[3] = {27.81, 285.32, 4000}; +static float P036[3] = {-27.81, 285.32, 4000}; +static float P037[3] = {-72.81, 176.34, 4000}; +static float P038[3] = {-90, 0, 4000}; +static float P039[3] = {-72.81, -176.33, 4000}; +static float P040[3] = {-27.81, -285.31, 4000}; +static float P041[3] = {27.81, -285.32, 4000}; +static float P042[3] = {72.81, -176.34, 4000}; +static float P043[3] = {30, 0, 5000}; +static float P044[3] = {24.27, 58.78, 5000}; +static float P045[3] = {9.27, 95.11, 5000}; +static float P046[3] = {-9.27, 95.11, 5000}; +static float P047[3] = {-24.27, 58.78, 5000}; +static float P048[3] = {-30, 0, 5000}; +static float P049[3] = {-24.27, -58.78, 5000}; +static float P050[3] = {-9.27, -95.1, 5000}; +static float P051[3] = {9.27, -95.11, 5000}; +static float P052[3] = {24.27, -58.78, 5000}; +#if 0 +static const float P053[3] = {0, 0, 0}; +static const float P054[3] = {0, 0, 0}; +static const float P055[3] = {0, 0, 0}; +static const float P056[3] = {0, 0, 0}; +static const float P057[3] = {0, 0, 0}; +#endif +static const float P058[3] = {0, 1212.72, 2703.08}; +static const float P059[3] = {50.36, 0, 108.14}; +static const float P060[3] = {-22.18, 0, 108.14}; +static float P061[3] = {0, 1181.61, 6344.65}; +static const float P062[3] = {516.45, -887.08, 2535.45}; +static const float P063[3] = {-545.69, -879.31, 2555.63}; +static const float P064[3] = {618.89, -1005.64, 2988.32}; +static const float P065[3] = {-635.37, -1014.79, 2938.68}; +static const float P066[3] = {0, 1374.43, 3064.18}; +#if 0 +static const float P067[3] = {158.49, -11.89, 1401.56}; +static const float P068[3] = {-132.08, -17.9, 1394.31}; +#endif +static float P069[3] = {0, -418.25, 5765.04}; +static float P070[3] = {0, 1266.91, 6629.6}; +static const float P071[3] = {-139.12, -124.96, 997.98}; +static const float P072[3] = {-139.24, -110.18, 1020.68}; +static const float P073[3] = {-137.33, -94.52, 1022.63}; +static const float P074[3] = {-137.03, -79.91, 996.89}; +static const float P075[3] = {-135.21, -91.48, 969.14}; +static const float P076[3] = {-135.39, -110.87, 968.76}; +static const float P077[3] = {150.23, -78.44, 995.53}; +static const float P078[3] = {152.79, -92.76, 1018.46}; +static const float P079[3] = {154.19, -110.2, 1020.55}; +static const float P080[3] = {151.33, -124.15, 993.77}; +static const float P081[3] = {150.49, -111.19, 969.86}; +static const float P082[3] = {150.79, -92.41, 969.7}; +static const float iP002[3] = {0, -36.59, 5687.72}; +static const float iP004[3] = {58.24, -146.84, 262.35}; +static const float iP007[3] = {-46.09, -146.83, 265.84}; +static const float iP010[3] = {-27.81, -285.31, 500}; +static const float iP011[3] = {27.81, -285.32, 500}; +static const float iP023[3] = {150, 0, 3000}; +static const float iP024[3] = {121.35, 293.89, 3000}; +static const float iP025[3] = {46.35, 502.93, 2883.09}; +static const float iP026[3] = {-46.35, 497.45, 2877.24}; +static const float iP027[3] = {-121.35, 293.9, 3000}; +static const float iP028[3] = {-150, 0, 3000}; +static const float iP029[3] = {-121.35, -304.84, 2853.86}; +static const float iP030[3] = {-46.36, -475.52, 3000}; +static const float iP031[3] = {46.35, -475.53, 3000}; +static const float iP032[3] = {121.35, -304.87, 2853.86}; +static const float iP033[3] = {90, 0, 4000}; +static const float iP034[3] = {72.81, 176.33, 4000}; +static const float iP035[3] = {27.81, 285.32, 4000}; +static const float iP036[3] = {-27.81, 285.32, 4000}; +static const float iP037[3] = {-72.81, 176.34, 4000}; +static const float iP038[3] = {-90, 0, 4000}; +static const float iP039[3] = {-72.81, -176.33, 4000}; +static const float iP040[3] = {-27.81, -285.31, 4000}; +static const float iP041[3] = {27.81, -285.32, 4000}; +static const float iP042[3] = {72.81, -176.34, 4000}; +static const float iP043[3] = {30, 0, 5000}; +static const float iP044[3] = {24.27, 58.78, 5000}; +static const float iP045[3] = {9.27, 95.11, 5000}; +static const float iP046[3] = {-9.27, 95.11, 5000}; +static const float iP047[3] = {-24.27, 58.78, 5000}; +static const float iP048[3] = {-30, 0, 5000}; +static const float iP049[3] = {-24.27, -58.78, 5000}; +static const float iP050[3] = {-9.27, -95.1, 5000}; +static const float iP051[3] = {9.27, -95.11, 5000}; +static const float iP052[3] = {24.27, -58.78, 5000}; +#if 0 +static const float iP053[3] = {0, 0, 0}; +#endif +static const float iP061[3] = {0, 1181.61, 6344.65}; +static const float iP069[3] = {0, -418.25, 5765.04}; +static const float iP070[3] = {0, 1266.91, 6629.6}; +/* *INDENT-ON* */ + + + +static void +Fish001(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N006); + glVertex3fv(P006); + glEnd(); + glBegin(cap); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N016); + glVertex3fv(P016); + glEnd(); + glBegin(cap); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N008); + glVertex3fv(P008); + glEnd(); + glBegin(cap); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N008); + glVertex3fv(P008); + glEnd(); + glBegin(cap); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N008); + glVertex3fv(P008); + glNormal3fv(N017); + glVertex3fv(P017); + glEnd(); + glBegin(cap); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N008); + glVertex3fv(P008); + glNormal3fv(N018); + glVertex3fv(P018); + glEnd(); + glBegin(cap); + glNormal3fv(N008); + glVertex3fv(P008); + glNormal3fv(N009); + glVertex3fv(P009); + glNormal3fv(N018); + glVertex3fv(P018); + glEnd(); + glBegin(cap); + glNormal3fv(N008); + glVertex3fv(P008); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N009); + glVertex3fv(P009); + glEnd(); + glBegin(cap); + glNormal3fv(N007); + glVertex3fv(P007); + glNormal3fv(N010); + glVertex3fv(P010); + glNormal3fv(N009); + glVertex3fv(P009); + glEnd(); + glBegin(cap); + glNormal3fv(N009); + glVertex3fv(P009); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N018); + glVertex3fv(P018); + glEnd(); + glBegin(cap); + glNormal3fv(N009); + glVertex3fv(P009); + glNormal3fv(N010); + glVertex3fv(P010); + glNormal3fv(N019); + glVertex3fv(P019); + glEnd(); + glBegin(cap); + glNormal3fv(N010); + glVertex3fv(P010); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N019); + glVertex3fv(P019); + glEnd(); + glBegin(cap); + glNormal3fv(N010); + glVertex3fv(P010); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N020); + glVertex3fv(P020); + glEnd(); + glBegin(cap); + glNormal3fv(N004); + glVertex3fv(P004); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N010); + glVertex3fv(P010); + glNormal3fv(N007); + glVertex3fv(P007); + glEnd(); + glBegin(cap); + glNormal3fv(N004); + glVertex3fv(P004); + glNormal3fv(N012); + glVertex3fv(P012); + glNormal3fv(N011); + glVertex3fv(P011); + glEnd(); + glBegin(cap); + glNormal3fv(N012); + glVertex3fv(P012); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N011); + glVertex3fv(P011); + glEnd(); + glBegin(cap); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N021); + glVertex3fv(P021); + glEnd(); + glBegin(cap); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N015); + glVertex3fv(P015); + glEnd(); + glBegin(cap); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N003); + glVertex3fv(P003); + glEnd(); + glBegin(cap); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N059); + glVertex3fv(P059); + glEnd(); + glBegin(cap); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N003); + glVertex3fv(P003); + glEnd(); + glBegin(cap); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N012); + glVertex3fv(P012); + glNormal3fv(N059); + glVertex3fv(P059); + glEnd(); + glBegin(cap); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N012); + glVertex3fv(P012); + glNormal3fv(N003); + glVertex3fv(P003); + glEnd(); + glBegin(cap); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N012); + glVertex3fv(P012); + glEnd(); + glBegin(cap); + glVertex3fv(P071); + glVertex3fv(P072); + glVertex3fv(P073); + glVertex3fv(P074); + glVertex3fv(P075); + glVertex3fv(P076); + glEnd(); + glBegin(cap); + glVertex3fv(P077); + glVertex3fv(P078); + glVertex3fv(P079); + glVertex3fv(P080); + glVertex3fv(P081); + glVertex3fv(P082); + glEnd(); +} + +static void +Fish002(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N023); + glVertex3fv(P023); + glEnd(); + glBegin(cap); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N024); + glVertex3fv(P024); + glEnd(); + glBegin(cap); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N026); + glVertex3fv(P026); + glEnd(); + glBegin(cap); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N027); + glVertex3fv(P027); + glEnd(); + glBegin(cap); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N030); + glVertex3fv(P030); + glEnd(); + glBegin(cap); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N022); + glVertex3fv(P022); + glEnd(); + glBegin(cap); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N032); + glVertex3fv(P032); + glEnd(); + glBegin(cap); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N031); + glVertex3fv(P031); + glEnd(); + glBegin(cap); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N021); + glVertex3fv(P021); + glEnd(); + glBegin(cap); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); + glBegin(cap); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N028); + glVertex3fv(P028); + glEnd(); + glBegin(cap); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N030); + glVertex3fv(P030); + glEnd(); + glBegin(cap); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); +} + +static void +Fish003(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N042); + glVertex3fv(P042); + glEnd(); + glBegin(cap); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N041); + glVertex3fv(P041); + glEnd(); + glBegin(cap); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N034); + glVertex3fv(P034); + glNormal3fv(N033); + glVertex3fv(P033); + glEnd(); + glBegin(cap); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N034); + glVertex3fv(P034); + glEnd(); + glBegin(cap); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N040); + glVertex3fv(P040); + glEnd(); + glBegin(cap); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N035); + glVertex3fv(P035); + glEnd(); + glBegin(cap); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N036); + glVertex3fv(P036); + glEnd(); + glBegin(cap); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N037); + glVertex3fv(P037); + glEnd(); + glBegin(cap); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N038); + glVertex3fv(P038); + glEnd(); + glBegin(cap); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N039); + glVertex3fv(P039); + glEnd(); +} + +static void +Fish004(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N050); + glVertex3fv(P050); + glEnd(); + glBegin(cap); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N052); + glVertex3fv(P052); + glNormal3fv(N051); + glVertex3fv(P051); + glEnd(); + glBegin(cap); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N043); + glVertex3fv(P043); + glNormal3fv(N052); + glVertex3fv(P052); + glEnd(); + glBegin(cap); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N034); + glVertex3fv(P034); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N043); + glVertex3fv(P043); + glEnd(); + glBegin(cap); + glNormal3fv(N034); + glVertex3fv(P034); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N045); + glVertex3fv(P045); + glNormal3fv(N044); + glVertex3fv(P044); + glEnd(); + glBegin(cap); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N045); + glVertex3fv(P045); + glEnd(); + glBegin(cap); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N046); + glVertex3fv(P046); + glEnd(); + glBegin(cap); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N047); + glVertex3fv(P047); + glEnd(); + glBegin(cap); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N048); + glVertex3fv(P048); + glEnd(); + glBegin(cap); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N049); + glVertex3fv(P049); + glEnd(); + glBegin(cap); + glNormal3fv(N070); + glVertex3fv(P070); + glNormal3fv(N061); + glVertex3fv(P061); + glNormal3fv(N002); + glVertex3fv(P002); + glEnd(); + glBegin(cap); + glNormal3fv(N061); + glVertex3fv(P061); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N002); + glVertex3fv(P002); + glEnd(); + glBegin(cap); + glNormal3fv(N045); + glVertex3fv(P045); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N061); + glVertex3fv(P061); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N061); + glVertex3fv(P061); + glNormal3fv(N070); + glVertex3fv(P070); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N045); + glVertex3fv(P045); + glNormal3fv(N061); + glVertex3fv(P061); + glEnd(); +} + +static void +Fish005(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N045); + glVertex3fv(P045); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N043); + glVertex3fv(P043); + glNormal3fv(N044); + glVertex3fv(P044); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N052); + glVertex3fv(P052); + glNormal3fv(N043); + glVertex3fv(P043); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N052); + glVertex3fv(P052); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N047); + glVertex3fv(P047); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N048); + glVertex3fv(P048); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N049); + glVertex3fv(P049); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N050); + glVertex3fv(P050); + glEnd(); + glBegin(cap); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N069); + glVertex3fv(P069); + glEnd(); + glBegin(cap); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N069); + glVertex3fv(P069); + glEnd(); + glBegin(cap); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N069); + glVertex3fv(P069); + glNormal3fv(N002); + glVertex3fv(P002); + glEnd(); +} + +static void +Fish006(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N026); + glVertex3fv(P026); + glEnd(); + glBegin(cap); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N025); + glVertex3fv(P025); + glEnd(); + glBegin(cap); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N026); + glVertex3fv(P026); + glEnd(); + glBegin(cap); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N016); + glVertex3fv(P016); + glEnd(); + glBegin(cap); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N066); + glVertex3fv(P066); + glEnd(); + glBegin(cap); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N016); + glVertex3fv(P016); + glEnd(); +} + +static void +Fish007(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N032); + glVertex3fv(P032); + glEnd(); + glBegin(cap); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N064); + glVertex3fv(P064); + glEnd(); + glBegin(cap); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N032); + glVertex3fv(P032); + glEnd(); + glBegin(cap); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N064); + glVertex3fv(P064); + glNormal3fv(N032); + glVertex3fv(P032); + glEnd(); +} + +static void +Fish008(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); + glBegin(cap); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); + glBegin(cap); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N065); + glVertex3fv(P065); + glEnd(); + glBegin(cap); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); +} + +static void +Fish009(GLenum cap) +{ + glBegin(cap); + glVertex3fv(P059); + glVertex3fv(P012); + glVertex3fv(P009); + glVertex3fv(P060); + glEnd(); + glBegin(cap); + glVertex3fv(P012); + glVertex3fv(P004); + glVertex3fv(P007); + glVertex3fv(P009); + glEnd(); +} + +static void +Fish_1(GLenum cap) +{ + Fish004(cap); + Fish005(cap); + Fish003(cap); + Fish007(cap); + Fish006(cap); + Fish002(cap); + Fish008(cap); + Fish009(cap); + Fish001(cap); +} + +static void +Fish_2(GLenum cap) +{ + Fish005(cap); + Fish004(cap); + Fish003(cap); + Fish008(cap); + Fish006(cap); + Fish002(cap); + Fish007(cap); + Fish009(cap); + Fish001(cap); +} + +static void +Fish_3(GLenum cap) +{ + Fish005(cap); + Fish004(cap); + Fish007(cap); + Fish003(cap); + Fish002(cap); + Fish008(cap); + Fish009(cap); + Fish001(cap); + Fish006(cap); +} + +static void +Fish_4(GLenum cap) +{ + Fish005(cap); + Fish004(cap); + Fish008(cap); + Fish003(cap); + Fish002(cap); + Fish007(cap); + Fish009(cap); + Fish001(cap); + Fish006(cap); +} + +static void +Fish_5(GLenum cap) +{ + Fish009(cap); + Fish006(cap); + Fish007(cap); + Fish001(cap); + Fish002(cap); + Fish003(cap); + Fish008(cap); + Fish004(cap); + Fish005(cap); +} + +static void +Fish_6(GLenum cap) +{ + Fish009(cap); + Fish006(cap); + Fish008(cap); + Fish001(cap); + Fish002(cap); + Fish007(cap); + Fish003(cap); + Fish004(cap); + Fish005(cap); +} + +static void +Fish_7(GLenum cap) +{ + Fish009(cap); + Fish001(cap); + Fish007(cap); + Fish005(cap); + Fish002(cap); + Fish008(cap); + Fish003(cap); + Fish004(cap); + Fish006(cap); +} + +static void +Fish_8(GLenum cap) +{ + Fish009(cap); + Fish008(cap); + Fish001(cap); + Fish002(cap); + Fish007(cap); + Fish003(cap); + Fish005(cap); + Fish004(cap); + Fish006(cap); +} + +void +DrawShark(fishRec * fish, int wire) +{ + float mat[4][4]; + int n; + float seg1, seg2, seg3, seg4, segup; + float thrash, chomp; + GLenum cap; + + fish->htail = (int) (fish->htail - (int) (5 * fish->v)) % 360; + + thrash = 50 * fish->v; + + seg1 = 0.6 * thrash * sin(fish->htail * RRAD); + seg2 = 1.8 * thrash * sin((fish->htail + 45) * RRAD); + seg3 = 3 * thrash * sin((fish->htail + 90) * RRAD); + seg4 = 4 * thrash * sin((fish->htail + 110) * RRAD); + + chomp = 0; + if (fish->v > 2) { + chomp = -(fish->v - 2) * 200; + } + P004[1] = iP004[1] + chomp; + P007[1] = iP007[1] + chomp; + P010[1] = iP010[1] + chomp; + P011[1] = iP011[1] + chomp; + + P023[0] = iP023[0] + seg1; + P024[0] = iP024[0] + seg1; + P025[0] = iP025[0] + seg1; + P026[0] = iP026[0] + seg1; + P027[0] = iP027[0] + seg1; + P028[0] = iP028[0] + seg1; + P029[0] = iP029[0] + seg1; + P030[0] = iP030[0] + seg1; + P031[0] = iP031[0] + seg1; + P032[0] = iP032[0] + seg1; + P033[0] = iP033[0] + seg2; + P034[0] = iP034[0] + seg2; + P035[0] = iP035[0] + seg2; + P036[0] = iP036[0] + seg2; + P037[0] = iP037[0] + seg2; + P038[0] = iP038[0] + seg2; + P039[0] = iP039[0] + seg2; + P040[0] = iP040[0] + seg2; + P041[0] = iP041[0] + seg2; + P042[0] = iP042[0] + seg2; + P043[0] = iP043[0] + seg3; + P044[0] = iP044[0] + seg3; + P045[0] = iP045[0] + seg3; + P046[0] = iP046[0] + seg3; + P047[0] = iP047[0] + seg3; + P048[0] = iP048[0] + seg3; + P049[0] = iP049[0] + seg3; + P050[0] = iP050[0] + seg3; + P051[0] = iP051[0] + seg3; + P052[0] = iP052[0] + seg3; + P002[0] = iP002[0] + seg4; + P061[0] = iP061[0] + seg4; + P069[0] = iP069[0] + seg4; + P070[0] = iP070[0] + seg4; + + fish->vtail += ((fish->dtheta - fish->vtail) * 0.1); + + if (fish->vtail > 0.5) { + fish->vtail = 0.5; + } else if (fish->vtail < -0.5) { + fish->vtail = -0.5; + } + segup = thrash * fish->vtail; + + P023[1] = iP023[1] + segup; + P024[1] = iP024[1] + segup; + P025[1] = iP025[1] + segup; + P026[1] = iP026[1] + segup; + P027[1] = iP027[1] + segup; + P028[1] = iP028[1] + segup; + P029[1] = iP029[1] + segup; + P030[1] = iP030[1] + segup; + P031[1] = iP031[1] + segup; + P032[1] = iP032[1] + segup; + P033[1] = iP033[1] + segup * 5; + P034[1] = iP034[1] + segup * 5; + P035[1] = iP035[1] + segup * 5; + P036[1] = iP036[1] + segup * 5; + P037[1] = iP037[1] + segup * 5; + P038[1] = iP038[1] + segup * 5; + P039[1] = iP039[1] + segup * 5; + P040[1] = iP040[1] + segup * 5; + P041[1] = iP041[1] + segup * 5; + P042[1] = iP042[1] + segup * 5; + P043[1] = iP043[1] + segup * 12; + P044[1] = iP044[1] + segup * 12; + P045[1] = iP045[1] + segup * 12; + P046[1] = iP046[1] + segup * 12; + P047[1] = iP047[1] + segup * 12; + P048[1] = iP048[1] + segup * 12; + P049[1] = iP049[1] + segup * 12; + P050[1] = iP050[1] + segup * 12; + P051[1] = iP051[1] + segup * 12; + P052[1] = iP052[1] + segup * 12; + P002[1] = iP002[1] + segup * 17; + P061[1] = iP061[1] + segup * 17; + P069[1] = iP069[1] + segup * 17; + P070[1] = iP070[1] + segup * 17; + + glPushMatrix(); + + glTranslatef(0, 0, -3000); + + glGetFloatv(GL_MODELVIEW_MATRIX, &mat[0][0]); + n = 0; + if (mat[0][2] >= 0) { + n += 1; + } + if (mat[1][2] >= 0) { + n += 2; + } + if (mat[2][2] >= 0) { + n += 4; + } + glScalef(2, 1, 1); + + glEnable(GL_CULL_FACE); + cap = wire ? GL_LINE_LOOP : GL_POLYGON; + switch (n) { + case 0: + Fish_1(cap); + break; + case 1: + Fish_2(cap); + break; + case 2: + Fish_3(cap); + break; + case 3: + Fish_4(cap); + break; + case 4: + Fish_5(cap); + break; + case 5: + Fish_6(cap); + break; + case 6: + Fish_7(cap); + break; + case 7: + Fish_8(cap); + break; + } + glDisable(GL_CULL_FACE); + + glPopMatrix(); +} +#endif diff --git a/hacks/glx/ships.c b/hacks/glx/ships.c new file mode 100644 index 0000000..a2fb36c --- /dev/null +++ b/hacks/glx/ships.c @@ -0,0 +1,4976 @@ +/* Generated from "ships.dxf" on 28-Jan-2018. + Faceted face normals. Normalized to unit bounding box. + Components: ship1, ship2, ship3, ship4, ship5, ship6, ship7, ship8. + */ + +#include "gllist.h" + +static const float ships_ship1_data[] = { + 0,1,0,0.116962,0,0.06683, + 0,1,0,0.155077,0,0.058558, + 0,1,0,0.116882,0,0.064477, + 0,1,0,0.155077,0,0.058558, + 0,1,0,0.116962,0,0.06683, + 0,1,0,0.183794,0,0.06683, + 0,1,0,0.155077,0,0.058558, + 0,1,0,0.183794,0,0.06683, + 0,1,0,0.165867,0,0.042832, + 0,1,0,0.165867,0,0.042832, + 0,1,0,0.183794,0,0.06683, + 0,1,0,0.182076,0,-0.033078, + 0,1,0,0.182076,0,-0.033078, + 0,1,0,0.183794,0,0.06683, + 0,1,0,0.268468,0,0.112678, + 0,1,0,0.268468,0,0.112678, + 0,1,0,0.183794,0,0.06683, + 0,1,0,0.206431,0,0.085132, + 0,1,0,0.144982,0,0.047158, + 0,1,0,0.144464,0,-0.025545, + 0,1,0,0.142517,0,-0.008241, + 0,1,0,0.144464,0,-0.025545, + 0,1,0,0.144982,0,0.047158, + 0,1,0,0.150519,0,0.014247, + 0,1,0,0.144464,0,-0.025545, + 0,1,0,0.150519,0,0.014247, + 0,1,0,0.182076,0,-0.033078, + 0,1,0,0.150519,0,0.014247, + 0,1,0,0.144982,0,0.047158, + 0,1,0,0.145659,0,0.055321, + 0,1,0,0.150519,0,0.014247, + 0,1,0,0.145659,0,0.055321, + 0,1,0,0.148882,0,0.056932, + 0,1,0,0.182076,0,-0.033078, + 0,1,0,0.150519,0,0.014247, + 0,1,0,0.165867,0,0.042832, + 0,1,0,0.563884,0,0.184308, + 0,1,0,0.588726,0,-0.050731, + 0,1,0,0.505825,0,0.177803, + 0,1,0,0.588726,0,-0.050731, + 0,1,0,0.563884,0,0.184308, + 0,1,0,0.691269,0,0.197453, + 0,1,0,0.588726,0,-0.050731, + 0,1,0,0.691269,0,0.197453, + 0,1,0,0.651336,0,-0.055351, + 0,1,0,0.651336,0,-0.055351, + 0,1,0,0.691269,0,0.197453, + 0,1,0,0.654279,0,-0.056707, + 0,1,0,0.175726,0,0.171966, + 0,1,0,0.206431,0,0.085132, + 0,1,0,0.171797,0,0.170156, + 0,1,0,0.206431,0,0.085132, + 0,1,0,0.175726,0,0.171966, + 0,1,0,0.194183,0,0.133925, + 0,1,0,0.206431,0,0.085132, + 0,1,0,0.194183,0,0.133925, + 0,1,0,0.214272,0,0.096042, + 0,1,0,0.206431,0,0.085132, + 0,1,0,0.214272,0,0.096042, + 0,1,0,0.268468,0,0.112678, + 0,1,0,0.268468,0,0.112678, + 0,1,0,0.214272,0,0.096042, + 0,1,0,0.215488,0,0.116749, + 0,1,0,0.268468,0,0.112678, + 0,1,0,0.215488,0,0.116749, + 0,1,0,0.239742,0,0.126581, + 0,1,0,0.360276,0,-0.04832, + 0,1,0,0.182076,0,-0.033078, + 0,1,0,0.268468,0,0.112678, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.360276,0,-0.04832, + 0,1,0,0.268468,0,0.112678, + 0,1,0,0.360276,0,-0.04832, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.373485,0,-0.04699, + 0,1,0,0.373485,0,-0.04699, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.406711,0,-0.042205, + 0,1,0,0.322926,0,0.320583, + 0,1,0,0.32449,0,0.313371, + 0,1,0,0.301859,0,0.3108, + 0,1,0,0.32449,0,0.313371, + 0,1,0,0.322926,0,0.320583, + 0,1,0,0.324435,0,0.321321, + 0,1,0,0.32449,0,0.313371, + 0,1,0,0.324435,0,0.321321, + 0,1,0,0.334072,0,0.331602, + 0,1,0,0.32449,0,0.313371, + 0,1,0,0.334072,0,0.331602, + 0,1,0,0.332829,0,0.298122, + 0,1,0,0.336773,0,0.355518, + 0,1,0,0.334072,0,0.331602, + 0,1,0,0.332052,0,0.33913, + 0,1,0,0.334072,0,0.331602, + 0,1,0,0.336773,0,0.355518, + 0,1,0,0.334395,0,0.258292, + 0,1,0,0.342277,0,0.362383, + 0,1,0,0.336773,0,0.355518, + 0,1,0,0.305543,0,0.360518, + 0,1,0,0.34814,0,0.369892, + 0,1,0,0.347981,0,0.350547, + 0,1,0,0.344815,0,0.375591, + 0,1,0,0.347981,0,0.350547, + 0,1,0,0.34814,0,0.369892, + 0,1,0,0.353013,0,0.361538, + 0,1,0,0.347981,0,0.350547, + 0,1,0,0.353013,0,0.361538, + 0,1,0,0.362663,0,0.354466, + 0,1,0,0.362663,0,0.354466, + 0,1,0,0.353013,0,0.361538, + 0,1,0,0.393197,0,0.356483, + 0,1,0,0.362663,0,0.354466, + 0,1,0,0.393197,0,0.356483, + 0,1,0,0.378025,0,0.353893, + 0,1,0,0.378679,0,0.229386, + 0,1,0,0.368952,0,0.22393, + 0,1,0,0.361091,0,0.236693, + 0,1,0,0.374536,0,0.329731, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.347981,0,0.350547, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.374536,0,0.329731, + 0,1,0,0.369252,0,0.304088, + 0,1,0,0.369252,0,0.304088, + 0,1,0,0.374536,0,0.329731, + 0,1,0,0.375498,0,0.311907, + 0,1,0,0.378815,0,0.30157, + 0,1,0,0.371067,0,0.2787, + 0,1,0,0.369252,0,0.304088, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.371067,0,0.2787, + 0,1,0,0.409606,0,0.272745, + 0,1,0,0.371067,0,0.2787, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.369252,0,0.304088, + 0,1,0,0.329387,0,0.234545, + 0,1,0,0.368952,0,0.214645, + 0,1,0,0.311459,0,0.21872, + 0,1,0,0.368952,0,0.214645, + 0,1,0,0.329387,0,0.234545, + 0,1,0,0.334395,0,0.258292, + 0,1,0,0.368952,0,0.214645, + 0,1,0,0.334395,0,0.258292, + 0,1,0,0.361091,0,0.236693, + 0,1,0,0.361091,0,0.236693, + 0,1,0,0.334395,0,0.258292, + 0,1,0,0.336773,0,0.355518, + 0,1,0,0.361091,0,0.236693, + 0,1,0,0.336773,0,0.355518, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.336773,0,0.355518, + 0,1,0,0.342277,0,0.362383, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.342277,0,0.362383, + 0,1,0,0.343893,0,0.36804, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.343893,0,0.36804, + 0,1,0,0.344815,0,0.375591, + 0,1,0,0.355027,0,0.271558, + 0,1,0,0.344815,0,0.375591, + 0,1,0,0.347981,0,0.350547, + 0,1,0,0.368952,0,0.214645, + 0,1,0,0.361091,0,0.236693, + 0,1,0,0.368952,0,0.22393, + 0,1,0,0.25875,0,0.2828, + 0,1,0,0.267311,0,0.276092, + 0,1,0,0.25728,0,0.280552, + 0,1,0,0.267311,0,0.276092, + 0,1,0,0.25875,0,0.2828, + 0,1,0,0.273094,0,0.278099, + 0,1,0,0.273094,0,0.278099, + 0,1,0,0.25875,0,0.2828, + 0,1,0,0.303096,0,0.283554, + 0,1,0,0.267311,0,0.276092, + 0,1,0,0.273094,0,0.278099, + 0,1,0,0.267457,0,0.244485, + 0,1,0,0.273094,0,0.278099, + 0,1,0,0.303096,0,0.283554, + 0,1,0,0.325469,0,0.275657, + 0,1,0,0.325469,0,0.275657, + 0,1,0,0.303096,0,0.283554, + 0,1,0,0.320429,0,0.283567, + 0,1,0,0.325469,0,0.275657, + 0,1,0,0.320429,0,0.283567, + 0,1,0,0.332829,0,0.298122, + 0,1,0,0.325469,0,0.275657, + 0,1,0,0.332829,0,0.298122, + 0,1,0,0.334395,0,0.258292, + 0,1,0,0.334395,0,0.258292, + 0,1,0,0.332829,0,0.298122, + 0,1,0,0.334072,0,0.331602, + 0,1,0,0.273094,0,0.214646, + 0,1,0,0.267457,0,0.244485, + 0,1,0,0.273094,0,0.278099, + 0,1,0,0.418177,0,0.231171, + 0,1,0,0.409996,0,0.219049, + 0,1,0,0.409996,0,0.259494, + 0,1,0,0.409996,0,0.219049, + 0,1,0,0.418177,0,0.231171, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.418177,0,0.231171, + 0,1,0,0.418324,0,0.202436, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.395625,0,0.207154, + 0,1,0,0.409996,0,0.219049, + 0,1,0,0.505825,0,0.177803, + 0,1,0,0.495108,0,0.177713, + 0,1,0,0.495108,0,0.212769, + 0,1,0,0.406711,0,-0.042205, + 0,1,0,0.460766,0,0.175176, + 0,1,0,0.495108,0,0.177713, + 0,1,0,0.460766,0,0.175176, + 0,1,0,0.406711,0,-0.042205, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.460766,0,0.175176, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.42226,0,0.181691, + 0,1,0,0.495108,0,0.177713, + 0,1,0,0.44763,0,-0.044825, + 0,1,0,0.406711,0,-0.042205, + 0,1,0,0.44763,0,-0.044825, + 0,1,0,0.495108,0,0.177713, + 0,1,0,0.480357,0,-0.052799, + 0,1,0,0.480357,0,-0.052799, + 0,1,0,0.495108,0,0.177713, + 0,1,0,0.496626,0,-0.056372, + 0,1,0,0.496626,0,-0.056372, + 0,1,0,0.495108,0,0.177713, + 0,1,0,0.505825,0,0.177803, + 0,1,0,0.85052,0,0.207976, + 0,1,0,0.85018,0,-0.03742, + 0,1,0,0.786183,0,0.207755, + 0,1,0,0.85018,0,-0.03742, + 0,1,0,0.85052,0,0.207976, + 0,1,0,0.850681,0,0.089096, + 0,1,0,0.850681,0,0.089096, + 0,1,0,0.85052,0,0.207976, + 0,1,0,0.855957,0,0.183257, + 0,1,0,0.850681,0,0.089096, + 0,1,0,0.855957,0,0.183257, + 0,1,0,0.853091,0,0.109288, + 0,1,0,0.853091,0,0.109288, + 0,1,0,0.855957,0,0.183257, + 0,1,0,0.862404,0,0.162275, + 0,1,0,0.853091,0,0.109288, + 0,1,0,0.862404,0,0.162275, + 0,1,0,0.865092,0,0.162319, + 0,1,0,0.725123,0,0.201897, + 0,1,0,0.858149,0,-0.077347, + 0,1,0,0.691269,0,0.197453, + 0,1,0,0.858149,0,-0.077347, + 0,1,0,0.725123,0,0.201897, + 0,1,0,0.786183,0,0.207755, + 0,1,0,0.858149,0,-0.077347, + 0,1,0,0.786183,0,0.207755, + 0,1,0,0.85018,0,-0.03742, + 0,1,0,0.858149,0,-0.077347, + 0,1,0,0.85018,0,-0.03742, + 0,1,0,0.85643,0,-0.06679, + 0,1,0,0.856701,0,0.198121, + 0,1,0,0.855957,0,0.183257, + 0,1,0,0.85052,0,0.207976, + 0,1,0,0.855957,0,0.183257, + 0,1,0,0.856701,0,0.198121, + 0,1,0,0.871968,0,0.193412, + 0,1,0,0.691269,0,0.197453, + 0,1,0,0.66245,0,-0.066583, + 0,1,0,0.654279,0,-0.056707, + 0,1,0,0.66245,0,-0.066583, + 0,1,0,0.691269,0,0.197453, + 0,1,0,0.77276,0,-0.075247, + 0,1,0,0.77276,0,-0.075247, + 0,1,0,0.691269,0,0.197453, + 0,1,0,0.7813,0,-0.067188, + 0,1,0,0.7813,0,-0.067188, + 0,1,0,0.691269,0,0.197453, + 0,1,0,0.858149,0,-0.077347, + 0,1,0,0.282027,0,0.139433, + 0,1,0,0.281231,0,0.130089, + 0,1,0,0.202972,0,0.139577, + 0,1,0,0.292538,0,0.191458, + 0,1,0,0.28622,0,0.16455, + 0,1,0,0.283073,0,0.18298, + 0,1,0,0.281231,0,0.130089, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.268468,0,0.112678, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.281231,0,0.130089, + 0,1,0,0.282027,0,0.139433, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.282027,0,0.139433, + 0,1,0,0.28622,0,0.16455, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.28622,0,0.16455, + 0,1,0,0.292538,0,0.191458, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.292538,0,0.191458, + 0,1,0,0.294058,0,0.21557, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.294058,0,0.21557, + 0,1,0,0.311459,0,0.21872, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.311459,0,0.21872, + 0,1,0,0.368952,0,0.214645, + 0,1,0,0.41681,0,0.172841, + 0,1,0,0.368952,0,0.214645, + 0,1,0,0.395625,0,0.207154, + 0,1,0,0.588726,0,-0.050731, + 0,1,0,0.496626,0,-0.056372, + 0,1,0,0.505825,0,0.177803, + 0,1,0,0.34814,0,0.466117, + 0,1,0,0.344815,0,0.375591, + 0,1,0,0.344815,0,0.466117, + 0,1,0,0.344815,0,0.375591, + 0,1,0,0.34814,0,0.466117, + 0,1,0,0.34814,0,0.369892 +}; +static const struct gllist ships_ship1_frame = { + GL_N3F_V3F, GL_TRIANGLES, 318, ships_ship1_data, 0 +}; +const struct gllist *ships_ship1 = &ships_ship1_frame; + +static const float ships_ship2_data[] = { + 0,1,0,0.27313,0,-0.03143, + 0,1,0,0.082078,0,-0.023373, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.007746,0,0.002005, + 0,1,0,0.000601,0,-0.005265, + 0,1,0,-0.000907,0,-0.004103, + 0,1,0,0.000601,0,-0.005265, + 0,1,0,0.007746,0,0.002005, + 0,1,0,0.05233,0,-0.01634, + 0,1,0,0.05233,0,-0.01634, + 0,1,0,0.007746,0,0.002005, + 0,1,0,0.011124,0,0.003295, + 0,1,0,0.05233,0,-0.01634, + 0,1,0,0.011124,0,0.003295, + 0,1,0,0.034381,0,0.008035, + 0,1,0,0.05233,0,-0.01634, + 0,1,0,0.034381,0,0.008035, + 0,1,0,0.036326,0,0.008049, + 0,1,0,0.05233,0,-0.01634, + 0,1,0,0.036326,0,0.008049, + 0,1,0,0.04544,0,0.006283, + 0,1,0,0.05233,0,-0.01634, + 0,1,0,0.04544,0,0.006283, + 0,1,0,0.046047,0,0.005835, + 0,1,0,0.05233,0,-0.01634, + 0,1,0,0.046047,0,0.005835, + 0,1,0,0.082078,0,-0.023373, + 0,1,0,0.05233,0,-0.01634, + 0,1,0,0.082078,0,-0.023373, + 0,1,0,0.056496,0,-0.017817, + 0,1,0,0.05539,0,0.015178, + 0,1,0,0.082078,0,-0.023373, + 0,1,0,0.046047,0,0.005835, + 0,1,0,0.082078,0,-0.023373, + 0,1,0,0.05539,0,0.015178, + 0,1,0,0.114262,0,0.021494, + 0,1,0,0.082078,0,-0.023373, + 0,1,0,0.114262,0,0.021494, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.114262,0,0.021494, + 0,1,0,0.115443,0,0.022381, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.115443,0,0.022381, + 0,1,0,0.135675,0,0.029186, + 0,1,0,0.135675,0,0.029186, + 0,1,0,0.115443,0,0.022381, + 0,1,0,0.123036,0,0.035357, + 0,1,0,0.135675,0,0.029186, + 0,1,0,0.123036,0,0.035357, + 0,1,0,0.125791,0,0.037178, + 0,1,0,0.135675,0,0.029186, + 0,1,0,0.125791,0,0.037178, + 0,1,0,0.128954,0,0.038029, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.135675,0,0.029186, + 0,1,0,0.149603,0,0.030315, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.149603,0,0.030315, + 0,1,0,0.155902,0,0.031606, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.155902,0,0.031606, + 0,1,0,0.19146,0,0.034085, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.19146,0,0.034085, + 0,1,0,0.215206,0,0.033981, + 0,1,0,0.215206,0,0.033981, + 0,1,0,0.19146,0,0.034085, + 0,1,0,0.198656,0,0.03732, + 0,1,0,0.215206,0,0.033981, + 0,1,0,0.198656,0,0.03732, + 0,1,0,0.204208,0,0.039424, + 0,1,0,0.215206,0,0.033981, + 0,1,0,0.204208,0,0.039424, + 0,1,0,0.205257,0,0.039407, + 0,1,0,0.148814,0,0.110426, + 0,1,0,0.15748,0,0.109506, + 0,1,0,0.149603,0,0.030315, + 0,1,0,0.15748,0,0.109506, + 0,1,0,0.148814,0,0.110426, + 0,1,0,0.159954,0,0.112868, + 0,1,0,0.159954,0,0.112868, + 0,1,0,0.148814,0,0.110426, + 0,1,0,0.166818,0,0.122163, + 0,1,0,0.149603,0,0.030315, + 0,1,0,0.15748,0,0.109506, + 0,1,0,0.155902,0,0.031606, + 0,1,0,0.159954,0,0.112868, + 0,1,0,0.166818,0,0.122163, + 0,1,0,0.166936,0,0.115979, + 0,1,0,0.166936,0,0.115979, + 0,1,0,0.166818,0,0.122163, + 0,1,0,0.167792,0,0.118769, + 0,1,0,0.19581,0,0.059166, + 0,1,0,0.19146,0,0.034085, + 0,1,0,0.189765,0,0.059166, + 0,1,0,0.19146,0,0.034085, + 0,1,0,0.19581,0,0.059166, + 0,1,0,0.198656,0,0.03732, + 0,1,0,0.239422,0,0.050277, + 0,1,0,0.241019,0,0.031691, + 0,1,0,0.229393,0,0.036323, + 0,1,0,0.241019,0,0.031691, + 0,1,0,0.239422,0,0.050277, + 0,1,0,0.243607,0,0.051238, + 0,1,0,0.241019,0,0.031691, + 0,1,0,0.243607,0,0.051238, + 0,1,0,0.247913,0,0.050436, + 0,1,0,0.256691,0,0.038188, + 0,1,0,0.275723,0,0.033421, + 0,1,0,0.252993,0,0.034769, + 0,1,0,0.275723,0,0.033421, + 0,1,0,0.256691,0,0.038188, + 0,1,0,0.256714,0,0.038965, + 0,1,0,0.275723,0,0.033421, + 0,1,0,0.256714,0,0.038965, + 0,1,0,0.262006,0,0.043711, + 0,1,0,0.275723,0,0.033421, + 0,1,0,0.262006,0,0.043711, + 0,1,0,0.273095,0,0.046817, + 0,1,0,0.289924,0,0.059902, + 0,1,0,0.295792,0,0.032171, + 0,1,0,0.285549,0,0.033421, + 0,1,0,0.295792,0,0.032171, + 0,1,0,0.289924,0,0.059902, + 0,1,0,0.295191,0,0.059902, + 0,1,0,0.309389,0,0.113628, + 0,1,0,0.30392,0,0.107488, + 0,1,0,0.302842,0,0.109306, + 0,1,0,0.30392,0,0.107488, + 0,1,0,0.309389,0,0.113628, + 0,1,0,0.30413,0,0.105206, + 0,1,0,0.30413,0,0.105206, + 0,1,0,0.309389,0,0.113628, + 0,1,0,0.311562,0,0.078755, + 0,1,0,0.311562,0,0.078755, + 0,1,0,0.309389,0,0.113628, + 0,1,0,0.31579,0,0.077563, + 0,1,0,0.311562,0,0.078755, + 0,1,0,0.31579,0,0.077563, + 0,1,0,0.311665,0,0.071318, + 0,1,0,0.315386,0,0.144383, + 0,1,0,0.312981,0,0.131794, + 0,1,0,0.312651,0,0.133195, + 0,1,0,0.312981,0,0.131794, + 0,1,0,0.315386,0,0.144383, + 0,1,0,0.321788,0,0.1221, + 0,1,0,0.321788,0,0.1221, + 0,1,0,0.315386,0,0.144383, + 0,1,0,0.32648,0,0.141993, + 0,1,0,0.321788,0,0.1221, + 0,1,0,0.32648,0,0.141993, + 0,1,0,0.322054,0,0.120653, + 0,1,0,0.322054,0,0.120653, + 0,1,0,0.32648,0,0.141993, + 0,1,0,0.322874,0,0.096569, + 0,1,0,0.322874,0,0.096569, + 0,1,0,0.32648,0,0.141993, + 0,1,0,0.323482,0,0.093677, + 0,1,0,0.323449,0,0.083168, + 0,1,0,0.331265,0,0.078444, + 0,1,0,0.321915,0,0.077563, + 0,1,0,0.331265,0,0.078444, + 0,1,0,0.323449,0,0.083168, + 0,1,0,0.323482,0,0.093677, + 0,1,0,0.331265,0,0.078444, + 0,1,0,0.323482,0,0.093677, + 0,1,0,0.32648,0,0.141993, + 0,1,0,0.331265,0,0.078444, + 0,1,0,0.32648,0,0.141993, + 0,1,0,0.327612,0,0.134409, + 0,1,0,0.327612,0,0.134409, + 0,1,0,0.32648,0,0.141993, + 0,1,0,0.327459,0,0.138248, + 0,1,0,0.331265,0,0.078444, + 0,1,0,0.327612,0,0.134409, + 0,1,0,0.331449,0,0.108836, + 0,1,0,0.331265,0,0.078444, + 0,1,0,0.331449,0,0.108836, + 0,1,0,0.332251,0,0.082544, + 0,1,0,0.332251,0,0.082544, + 0,1,0,0.331449,0,0.108836, + 0,1,0,0.333204,0,0.102871, + 0,1,0,0.332251,0,0.082544, + 0,1,0,0.333204,0,0.102871, + 0,1,0,0.333121,0,0.093642, + 0,1,0,0.333121,0,0.093642, + 0,1,0,0.333204,0,0.102871, + 0,1,0,0.333462,0,0.095451, + 0,1,0,0.348516,0,0.105101, + 0,1,0,0.397365,0,0.086139, + 0,1,0,0.345482,0,0.078911, + 0,1,0,0.397365,0,0.086139, + 0,1,0,0.348516,0,0.105101, + 0,1,0,0.350483,0,0.11097, + 0,1,0,0.397365,0,0.086139, + 0,1,0,0.350483,0,0.11097, + 0,1,0,0.394512,0,0.087776, + 0,1,0,0.394512,0,0.087776, + 0,1,0,0.350483,0,0.11097, + 0,1,0,0.351201,0,0.1154, + 0,1,0,0.394512,0,0.087776, + 0,1,0,0.351201,0,0.1154, + 0,1,0,0.352062,0,0.133162, + 0,1,0,0.394512,0,0.087776, + 0,1,0,0.352062,0,0.133162, + 0,1,0,0.362231,0,0.135702, + 0,1,0,0.394512,0,0.087776, + 0,1,0,0.362231,0,0.135702, + 0,1,0,0.38958,0,0.099906, + 0,1,0,0.38958,0,0.099906, + 0,1,0,0.362231,0,0.135702, + 0,1,0,0.387409,0,0.108858, + 0,1,0,0.387409,0,0.108858, + 0,1,0,0.362231,0,0.135702, + 0,1,0,0.38428,0,0.198644, + 0,1,0,0.406915,0,0.152377, + 0,1,0,0.403253,0,0.135128, + 0,1,0,0.401572,0,0.147035, + 0,1,0,0.403253,0,0.135128, + 0,1,0,0.406915,0,0.152377, + 0,1,0,0.407934,0,0.130498, + 0,1,0,0.407934,0,0.130498, + 0,1,0,0.406915,0,0.152377, + 0,1,0,0.41953,0,0.148153, + 0,1,0,0.407934,0,0.130498, + 0,1,0,0.41953,0,0.148153, + 0,1,0,0.410269,0,0.08858, + 0,1,0,0.410269,0,0.08858, + 0,1,0,0.41953,0,0.148153, + 0,1,0,0.425347,0,0.083593, + 0,1,0,0.425347,0,0.083593, + 0,1,0,0.451234,0,0.037834, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.451234,0,0.037834, + 0,1,0,0.425347,0,0.083593, + 0,1,0,0.444133,0,0.07151, + 0,1,0,0.444133,0,0.07151, + 0,1,0,0.425347,0,0.083593, + 0,1,0,0.444133,0,0.084461, + 0,1,0,0.451234,0,0.037834, + 0,1,0,0.444133,0,0.07151, + 0,1,0,0.445707,0,0.066652, + 0,1,0,0.295792,0,0.032171, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.27313,0,-0.03143, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.295792,0,0.032171, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.226528,0,0.034709, + 0,1,0,0.27313,0,-0.03143, + 0,1,0,0.218433,0,0.033347, + 0,1,0,0.27313,0,-0.03143, + 0,1,0,0.226528,0,0.034709, + 0,1,0,0.229393,0,0.036323, + 0,1,0,0.27313,0,-0.03143, + 0,1,0,0.229393,0,0.036323, + 0,1,0,0.241019,0,0.031691, + 0,1,0,0.27313,0,-0.03143, + 0,1,0,0.241019,0,0.031691, + 0,1,0,0.252993,0,0.034769, + 0,1,0,0.27313,0,-0.03143, + 0,1,0,0.252993,0,0.034769, + 0,1,0,0.275723,0,0.033421, + 0,1,0,0.27313,0,-0.03143, + 0,1,0,0.275723,0,0.033421, + 0,1,0,0.295792,0,0.032171, + 0,1,0,0.295792,0,0.032171, + 0,1,0,0.275723,0,0.033421, + 0,1,0,0.285549,0,0.033421, + 0,1,0,0.298627,0,0.033229, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.295792,0,0.032171, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.298627,0,0.033229, + 0,1,0,0.302246,0,0.036983, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.302246,0,0.036983, + 0,1,0,0.308875,0,0.065389, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.308875,0,0.065389, + 0,1,0,0.311665,0,0.071318, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.311665,0,0.071318, + 0,1,0,0.31579,0,0.077563, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.31579,0,0.077563, + 0,1,0,0.321915,0,0.077563, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.321915,0,0.077563, + 0,1,0,0.331265,0,0.078444, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.331265,0,0.078444, + 0,1,0,0.345482,0,0.078911, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.345482,0,0.078911, + 0,1,0,0.397365,0,0.086139, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.397365,0,0.086139, + 0,1,0,0.399049,0,0.086793, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.399049,0,0.086793, + 0,1,0,0.410269,0,0.08858, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.410269,0,0.08858, + 0,1,0,0.425347,0,0.083593, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.350411,0,0.198046, + 0,1,0,0.348022,0,0.202613, + 0,1,0,0.350411,0,0.198046, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.360613,0,0.196837, + 0,1,0,0.360613,0,0.196837, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.362231,0,0.157776, + 0,1,0,0.362231,0,0.157776, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.362244,0,0.144871, + 0,1,0,0.358945,0,0.220663, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.357496,0,0.219463, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.358945,0,0.220663, + 0,1,0,0.366627,0,0.223011, + 0,1,0,0.380369,0,0.324825, + 0,1,0,0.373861,0,0.224955, + 0,1,0,0.369225,0,0.227836, + 0,1,0,0.373861,0,0.224955, + 0,1,0,0.380369,0,0.324825, + 0,1,0,0.38352,0,0.322964, + 0,1,0,0.38352,0,0.322964, + 0,1,0,0.380369,0,0.324825, + 0,1,0,0.381407,0,0.329175, + 0,1,0,0.38352,0,0.322964, + 0,1,0,0.381407,0,0.329175, + 0,1,0,0.381858,0,0.329038, + 0,1,0,0.38352,0,0.322964, + 0,1,0,0.381858,0,0.329038, + 0,1,0,0.383958,0,0.323947, + 0,1,0,0.362244,0,0.144871, + 0,1,0,0.38428,0,0.198644, + 0,1,0,0.362231,0,0.135702, + 0,1,0,0.38428,0,0.198644, + 0,1,0,0.362244,0,0.144871, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.38428,0,0.198644, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.380949,0,0.201539, + 0,1,0,0.380949,0,0.201539, + 0,1,0,0.363156,0,0.202613, + 0,1,0,0.366627,0,0.223011, + 0,1,0,0.380949,0,0.201539, + 0,1,0,0.366627,0,0.223011, + 0,1,0,0.36848,0,0.224601, + 0,1,0,0.380949,0,0.201539, + 0,1,0,0.36848,0,0.224601, + 0,1,0,0.369225,0,0.227836, + 0,1,0,0.380949,0,0.201539, + 0,1,0,0.369225,0,0.227836, + 0,1,0,0.373861,0,0.224955, + 0,1,0,0.380949,0,0.201539, + 0,1,0,0.373861,0,0.224955, + 0,1,0,0.380949,0,0.223681, + 0,1,0,0.358191,0,0.154835, + 0,1,0,0.35916,0,0.147807, + 0,1,0,0.356002,0,0.149867, + 0,1,0,0.35916,0,0.147807, + 0,1,0,0.358191,0,0.154835, + 0,1,0,0.362231,0,0.157776, + 0,1,0,0.35916,0,0.147807, + 0,1,0,0.362231,0,0.157776, + 0,1,0,0.36019,0,0.147475, + 0,1,0,0.36019,0,0.147475, + 0,1,0,0.362231,0,0.157776, + 0,1,0,0.362244,0,0.144871, + 0,1,0,0.478811,0,0.092274, + 0,1,0,0.473165,0,0.036584, + 0,1,0,0.463625,0,0.042121, + 0,1,0,0.473165,0,0.036584, + 0,1,0,0.478811,0,0.092274, + 0,1,0,0.490493,0,0.092799, + 0,1,0,0.490493,0,0.092799, + 0,1,0,0.478811,0,0.092274, + 0,1,0,0.481892,0,0.096319, + 0,1,0,0.490493,0,0.092799, + 0,1,0,0.481892,0,0.096319, + 0,1,0,0.498402,0,0.106856, + 0,1,0,0.490493,0,0.092799, + 0,1,0,0.498402,0,0.106856, + 0,1,0,0.491729,0,0.094592, + 0,1,0,0.491729,0,0.094592, + 0,1,0,0.498402,0,0.106856, + 0,1,0,0.500624,0,0.09968, + 0,1,0,0.500624,0,0.09968, + 0,1,0,0.498402,0,0.106856, + 0,1,0,0.499526,0,0.10796, + 0,1,0,0.500624,0,0.09968, + 0,1,0,0.499526,0,0.10796, + 0,1,0,0.50155,0,0.101548, + 0,1,0,0.545711,0,0.050757, + 0,1,0,0.551148,0,0.030911, + 0,1,0,0.530999,0,0.030908, + 0,1,0,0.551148,0,0.030911, + 0,1,0,0.545711,0,0.050757, + 0,1,0,0.556558,0,0.03991, + 0,1,0,0.551148,0,0.030911, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.530999,0,0.030908, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.551148,0,0.030911, + 0,1,0,0.61703,0,-0.045932, + 0,1,0,0.61703,0,-0.045932, + 0,1,0,0.551148,0,0.030911, + 0,1,0,0.569784,0,0.030911, + 0,1,0,0.61703,0,-0.045932, + 0,1,0,0.569784,0,0.030911, + 0,1,0,0.57627,0,0.03241, + 0,1,0,0.61703,0,-0.045932, + 0,1,0,0.57627,0,0.03241, + 0,1,0,0.578786,0,0.032037, + 0,1,0,0.61703,0,-0.045932, + 0,1,0,0.578786,0,0.032037, + 0,1,0,0.584034,0,0.028571, + 0,1,0,0.61703,0,-0.045932, + 0,1,0,0.584034,0,0.028571, + 0,1,0,0.593555,0,0.027764, + 0,1,0,0.454472,0,0.039998, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.452392,0,0.034041, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.454472,0,0.039998, + 0,1,0,0.4559,0,0.041105, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.4559,0,0.041105, + 0,1,0,0.463625,0,0.042121, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.463625,0,0.042121, + 0,1,0,0.473165,0,0.036584, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.473165,0,0.036584, + 0,1,0,0.521992,0,0.026308, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.521992,0,0.026308, + 0,1,0,0.526188,0,0.027401, + 0,1,0,0.53283,0,-0.042382, + 0,1,0,0.526188,0,0.027401, + 0,1,0,0.530999,0,0.030908, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.61703,0,-0.045932, + 0,1,0,0.593555,0,0.027764, + 0,1,0,0.61703,0,-0.045932, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.686573,0,0.025396, + 0,1,0,0.64097,0,0.065405, + 0,1,0,0.636461,0,0.040099, + 0,1,0,0.634712,0,0.065405, + 0,1,0,0.667649,0,0.066339, + 0,1,0,0.66702,0,0.042964, + 0,1,0,0.66702,0,0.066177, + 0,1,0,0.595342,0,0.029428, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.593555,0,0.027764, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.595342,0,0.029428, + 0,1,0,0.600274,0,0.047426, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.600274,0,0.047426, + 0,1,0,0.621236,0,0.041148, + 0,1,0,0.621236,0,0.041148, + 0,1,0,0.600274,0,0.047426, + 0,1,0,0.612783,0,0.047426, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.621236,0,0.041148, + 0,1,0,0.636461,0,0.040099, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.636461,0,0.040099, + 0,1,0,0.646435,0,0.040846, + 0,1,0,0.646435,0,0.040846, + 0,1,0,0.636461,0,0.040099, + 0,1,0,0.644949,0,0.043771, + 0,1,0,0.644949,0,0.043771, + 0,1,0,0.636461,0,0.040099, + 0,1,0,0.64097,0,0.065405, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.646435,0,0.040846, + 0,1,0,0.658856,0,0.033146, + 0,1,0,0.658856,0,0.033146, + 0,1,0,0.646435,0,0.040846, + 0,1,0,0.658114,0,0.033868, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.658856,0,0.033146, + 0,1,0,0.660833,0,0.041706, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.660833,0,0.041706, + 0,1,0,0.66702,0,0.042964, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.66702,0,0.042964, + 0,1,0,0.667649,0,0.066339, + 0,1,0,0.67251,0,0.024493, + 0,1,0,0.667649,0,0.066339, + 0,1,0,0.671724,0,0.060605, + 0,1,0,0.733263,0,0.068956, + 0,1,0,0.724391,0,0.035637, + 0,1,0,0.724391,0,0.067731, + 0,1,0,0.724391,0,0.035637, + 0,1,0,0.733263,0,0.068956, + 0,1,0,0.731575,0,0.035178, + 0,1,0,0.751012,0,0.070143, + 0,1,0,0.745822,0,0.032981, + 0,1,0,0.744276,0,0.067174, + 0,1,0,0.686573,0,0.025396, + 0,1,0,0.702004,0,0.036422, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.702004,0,0.036422, + 0,1,0,0.686573,0,0.025396, + 0,1,0,0.693908,0,0.039314, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.702004,0,0.036422, + 0,1,0,0.705222,0,0.035648, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.705222,0,0.035648, + 0,1,0,0.724391,0,0.035637, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.724391,0,0.035637, + 0,1,0,0.731575,0,0.035178, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.731575,0,0.035178, + 0,1,0,0.745822,0,0.032981, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.745822,0,0.032981, + 0,1,0,0.751012,0,0.070143, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.751012,0,0.070143, + 0,1,0,0.751251,0,0.069879, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.686573,0,0.025396, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.758328,0,0.022225, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.752838,0,0.022247, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.758328,0,0.022225, + 0,1,0,0.760717,0,0.023705, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.760717,0,0.023705, + 0,1,0,0.763686,0,0.029793, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.763686,0,0.029793, + 0,1,0,0.775494,0,0.029431, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.775494,0,0.029431, + 0,1,0,0.815305,0,0.030123, + 0,1,0,0.815305,0,0.030123, + 0,1,0,0.775494,0,0.029431, + 0,1,0,0.793924,0,0.030164, + 0,1,0,0.793924,0,0.030164, + 0,1,0,0.775494,0,0.029431, + 0,1,0,0.777172,0,0.032133, + 0,1,0,0.793924,0,0.030164, + 0,1,0,0.777172,0,0.032133, + 0,1,0,0.792169,0,0.030598, + 0,1,0,0.792169,0,0.030598, + 0,1,0,0.777172,0,0.032133, + 0,1,0,0.780437,0,0.034775, + 0,1,0,0.792169,0,0.030598, + 0,1,0,0.780437,0,0.034775, + 0,1,0,0.783285,0,0.035582, + 0,1,0,0.792169,0,0.030598, + 0,1,0,0.783285,0,0.035582, + 0,1,0,0.785043,0,0.03528, + 0,1,0,0.815305,0,0.030123, + 0,1,0,0.793924,0,0.030164, + 0,1,0,0.804859,0,0.033487, + 0,1,0,0.800558,0,0.159259, + 0,1,0,0.787813,0,0.145168, + 0,1,0,0.784219,0,0.148766, + 0,1,0,0.787813,0,0.145168, + 0,1,0,0.800558,0,0.159259, + 0,1,0,0.796022,0,0.149859, + 0,1,0,0.796022,0,0.149859, + 0,1,0,0.800558,0,0.159259, + 0,1,0,0.799435,0,0.133145, + 0,1,0,0.799435,0,0.133145, + 0,1,0,0.792353,0,0.128543, + 0,1,0,0.790974,0,0.134211, + 0,1,0,0.792353,0,0.128543, + 0,1,0,0.799435,0,0.133145, + 0,1,0,0.797658,0,0.124415, + 0,1,0,0.797658,0,0.124415, + 0,1,0,0.799435,0,0.133145, + 0,1,0,0.804859,0,0.033487, + 0,1,0,0.804859,0,0.033487, + 0,1,0,0.799435,0,0.133145, + 0,1,0,0.800558,0,0.159259, + 0,1,0,0.804859,0,0.033487, + 0,1,0,0.800558,0,0.159259, + 0,1,0,0.815305,0,0.030123, + 0,1,0,0.815305,0,0.030123, + 0,1,0,0.777658,0,-0.051804, + 0,1,0,0.773649,0,-0.052537, + 0,1,0,0.777658,0,-0.051804, + 0,1,0,0.815305,0,0.030123, + 0,1,0,0.845392,0,-0.047089, + 0,1,0,0.86606,0,0.023103, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.845392,0,-0.047089, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.86606,0,0.023103, + 0,1,0,0.886731,0,0.026124, + 0,1,0,0.841367,0,0.029285, + 0,1,0,0.845392,0,-0.047089, + 0,1,0,0.815305,0,0.030123, + 0,1,0,0.845392,0,-0.047089, + 0,1,0,0.841367,0,0.029285, + 0,1,0,0.851862,0,0.025179, + 0,1,0,0.845392,0,-0.047089, + 0,1,0,0.851862,0,0.025179, + 0,1,0,0.853977,0,0.024647, + 0,1,0,0.845392,0,-0.047089, + 0,1,0,0.853977,0,0.024647, + 0,1,0,0.86606,0,0.023103, + 0,1,0,0.886731,0,0.026124, + 0,1,0,0.86606,0,0.023103, + 0,1,0,0.879107,0,0.033745, + 0,1,0,0.93232,0,0.028568, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.886731,0,0.026124, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.93232,0,0.028568, + 0,1,0,0.936722,0,0.029307, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.936722,0,0.029307, + 0,1,0,0.941445,0,0.029359, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.941445,0,0.029359, + 0,1,0,0.942786,0,0.0299, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.942786,0,0.0299, + 0,1,0,0.955336,0,0.037642, + 0,1,0,0.957862,0,0.037913, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.955336,0,0.037642, + 0,1,0,0.964659,0,-0.059776, + 0,1,0,0.957862,0,0.037913, + 0,1,0,0.967828,0,0.035511 +}; +static const struct gllist ships_ship2_frame = { + GL_N3F_V3F, GL_TRIANGLES, 648, ships_ship2_data, 0 +}; +const struct gllist *ships_ship2 = &ships_ship2_frame; + +static const float ships_ship3_data[] = { + 0,1,0,0.015851,0,0.046394, + 0,1,0,0.015929,0,0.038282, + 0,1,0,0.014266,0,0.040885, + 0,1,0,0.015929,0,0.038282, + 0,1,0,0.015851,0,0.046394, + 0,1,0,0.018182,0,0.047508, + 0,1,0,0.015929,0,0.038282, + 0,1,0,0.018182,0,0.047508, + 0,1,0,0.019779,0,0.038229, + 0,1,0,0.019779,0,0.038229, + 0,1,0,0.018182,0,0.047508, + 0,1,0,0.035945,0,0.047566, + 0,1,0,0.019779,0,0.038229, + 0,1,0,0.035945,0,0.047566, + 0,1,0,0.02188,0,0.036875, + 0,1,0,0.02188,0,0.036875, + 0,1,0,0.035945,0,0.047566, + 0,1,0,0.029478,0,0.024544, + 0,1,0,0.029478,0,0.024544, + 0,1,0,0.035945,0,0.047566, + 0,1,0,0.037645,0,0.003234, + 0,1,0,0.037645,0,0.003234, + 0,1,0,0.035945,0,0.047566, + 0,1,0,0.042065,0,0.052086, + 0,1,0,0.037645,0,0.003234, + 0,1,0,0.042065,0,0.052086, + 0,1,0,0.040264,0,-0.011908, + 0,1,0,0.040264,0,-0.011908, + 0,1,0,0.042065,0,0.052086, + 0,1,0,0.040536,0,-0.021064, + 0,1,0,0.040536,0,-0.021064, + 0,1,0,0.042065,0,0.052086, + 0,1,0,0.041948,0,-0.030472, + 0,1,0,0.041948,0,-0.030472, + 0,1,0,0.042065,0,0.052086, + 0,1,0,0.053729,0,0.047541, + 0,1,0,0.053729,0,0.047541, + 0,1,0,0.042065,0,0.052086, + 0,1,0,0.044194,0,0.054994, + 0,1,0,0.053729,0,0.047541, + 0,1,0,0.044194,0,0.054994, + 0,1,0,0.049793,0,0.051119, + 0,1,0,0.049793,0,0.051119, + 0,1,0,0.044194,0,0.054994, + 0,1,0,0.048873,0,0.056721, + 0,1,0,0.049793,0,0.051119, + 0,1,0,0.048873,0,0.056721, + 0,1,0,0.049708,0,0.055744, + 0,1,0,0.295437,0,0.189535, + 0,1,0,0.295348,0,0.125306, + 0,1,0,0.292194,0,0.125174, + 0,1,0,0.295348,0,0.125306, + 0,1,0,0.295437,0,0.189535, + 0,1,0,0.298384,0,0.189681, + 0,1,0,0.298384,0,0.189681, + 0,1,0,0.295437,0,0.189535, + 0,1,0,0.29722,0,0.191215, + 0,1,0,0.290227,0,0.117533, + 0,1,0,0.295356,0,0.120633, + 0,1,0,0.289122,0,0.111447, + 0,1,0,0.295356,0,0.120633, + 0,1,0,0.290227,0,0.117533, + 0,1,0,0.292194,0,0.125174, + 0,1,0,0.295356,0,0.120633, + 0,1,0,0.292194,0,0.125174, + 0,1,0,0.295348,0,0.125306, + 0,1,0,0.053729,0,0.047541, + 0,1,0,0.045608,0,-0.036047, + 0,1,0,0.041948,0,-0.030472, + 0,1,0,0.045608,0,-0.036047, + 0,1,0,0.053729,0,0.047541, + 0,1,0,0.063489,0,-0.048855, + 0,1,0,0.063489,0,-0.048855, + 0,1,0,0.053729,0,0.047541, + 0,1,0,0.073036,0,0.047538, + 0,1,0,0.063489,0,-0.048855, + 0,1,0,0.073036,0,0.047538, + 0,1,0,0.07063,0,-0.057463, + 0,1,0,0.07063,0,-0.057463, + 0,1,0,0.073036,0,0.047538, + 0,1,0,0.071931,0,-0.074179, + 0,1,0,0.071931,0,-0.074179, + 0,1,0,0.073036,0,0.047538, + 0,1,0,0.073929,0,-0.07413, + 0,1,0,0.073929,0,-0.07413, + 0,1,0,0.073036,0,0.047538, + 0,1,0,0.080232,0,0.046154, + 0,1,0,0.073929,0,-0.07413, + 0,1,0,0.080232,0,0.046154, + 0,1,0,0.079608,0,-0.072847, + 0,1,0,0.079608,0,-0.072847, + 0,1,0,0.080232,0,0.046154, + 0,1,0,0.095979,0,0.048639, + 0,1,0,0.095979,0,0.048639, + 0,1,0,0.080232,0,0.046154, + 0,1,0,0.093136,0,0.048192, + 0,1,0,0.093136,0,0.048192, + 0,1,0,0.080232,0,0.046154, + 0,1,0,0.08401,0,0.04815, + 0,1,0,0.066853,0,-0.066771, + 0,1,0,0.071931,0,-0.074179, + 0,1,0,0.066006,0,-0.069836, + 0,1,0,0.071931,0,-0.074179, + 0,1,0,0.066853,0,-0.066771, + 0,1,0,0.068385,0,-0.066732, + 0,1,0,0.071931,0,-0.074179, + 0,1,0,0.068385,0,-0.066732, + 0,1,0,0.07063,0,-0.057463, + 0,1,0,0.095979,0,0.048639, + 0,1,0,0.095594,0,-0.07618, + 0,1,0,0.079608,0,-0.072847, + 0,1,0,0.095594,0,-0.07618, + 0,1,0,0.095979,0,0.048639, + 0,1,0,0.107623,0,-0.080766, + 0,1,0,0.107623,0,-0.080766, + 0,1,0,0.095979,0,0.048639, + 0,1,0,0.099578,0,0.054939, + 0,1,0,0.107623,0,-0.080766, + 0,1,0,0.099578,0,0.054939, + 0,1,0,0.104217,0,0.056863, + 0,1,0,0.107623,0,-0.080766, + 0,1,0,0.104217,0,0.056863, + 0,1,0,0.112866,0,0.056826, + 0,1,0,0.107623,0,-0.080766, + 0,1,0,0.112866,0,0.056826, + 0,1,0,0.112866,0,0.049101, + 0,1,0,0.107623,0,-0.080766, + 0,1,0,0.112866,0,0.049101, + 0,1,0,0.117782,0,-0.082199, + 0,1,0,0.117782,0,-0.082199, + 0,1,0,0.112866,0,0.049101, + 0,1,0,0.120566,0,0.049101, + 0,1,0,0.117782,0,-0.082199, + 0,1,0,0.120566,0,0.049101, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.120566,0,0.049101, + 0,1,0,0.122811,0,0.049147, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.122811,0,0.049147, + 0,1,0,0.132573,0,0.050735, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.132573,0,0.050735, + 0,1,0,0.143604,0,0.049297, + 0,1,0,0.151725,0,0.053824, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.143604,0,0.049297, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.151725,0,0.053824, + 0,1,0,0.153019,0,0.055208, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.153019,0,0.055208, + 0,1,0,0.160992,0,0.05183, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.160992,0,0.05183, + 0,1,0,0.161772,0,0.050677, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.161772,0,0.050677, + 0,1,0,0.163342,0,0.052327, + 0,1,0,0.162074,0,-0.085334, + 0,1,0,0.163342,0,0.052327, + 0,1,0,0.164064,0,-0.086036, + 0,1,0,0.164064,0,-0.086036, + 0,1,0,0.163342,0,0.052327, + 0,1,0,0.179323,0,-0.085322, + 0,1,0,0.179323,0,-0.085322, + 0,1,0,0.163342,0,0.052327, + 0,1,0,0.210986,0,-0.085355, + 0,1,0,0.210986,0,-0.085355, + 0,1,0,0.163342,0,0.052327, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.164064,0,-0.086036, + 0,1,0,0.179323,0,-0.085322, + 0,1,0,0.174355,0,-0.086232, + 0,1,0,0.164004,0,0.058998, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.163342,0,0.052327, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.164004,0,0.058998, + 0,1,0,0.166036,0,0.0644, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.166036,0,0.0644, + 0,1,0,0.176335,0,0.078644, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.176335,0,0.078644, + 0,1,0,0.181777,0,0.081599, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.181777,0,0.081599, + 0,1,0,0.201083,0,0.081563, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.201083,0,0.081563, + 0,1,0,0.205442,0,0.082139, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.205442,0,0.082139, + 0,1,0,0.222419,0,0.080429, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.222419,0,0.080429, + 0,1,0,0.22596,0,0.081582, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.22596,0,0.081582, + 0,1,0,0.235552,0,0.080432, + 0,1,0,0.226909,0,-0.085975, + 0,1,0,0.235552,0,0.080432, + 0,1,0,0.242832,0,-0.086596, + 0,1,0,0.242832,0,-0.086596, + 0,1,0,0.235552,0,0.080432, + 0,1,0,0.262862,0,-0.08689, + 0,1,0,0.262862,0,-0.08689, + 0,1,0,0.235552,0,0.080432, + 0,1,0,0.283076,0,-0.088384, + 0,1,0,0.237151,0,0.081245, + 0,1,0,0.283076,0,-0.088384, + 0,1,0,0.235552,0,0.080432, + 0,1,0,0.283076,0,-0.088384, + 0,1,0,0.237151,0,0.081245, + 0,1,0,0.25104,0,0.090562, + 0,1,0,0.283076,0,-0.088384, + 0,1,0,0.25104,0,0.090562, + 0,1,0,0.262936,0,0.095569, + 0,1,0,0.283076,0,-0.088384, + 0,1,0,0.262936,0,0.095569, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.283076,0,-0.088384, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.336118,0,-0.084098, + 0,1,0,0.283076,0,-0.088384, + 0,1,0,0.336118,0,-0.084098, + 0,1,0,0.321823,0,-0.086865, + 0,1,0,0.278458,0,0.097208, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.262936,0,0.095569, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.278458,0,0.097208, + 0,1,0,0.284215,0,0.102654, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.284215,0,0.102654, + 0,1,0,0.288497,0,0.109486, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.288497,0,0.109486, + 0,1,0,0.289122,0,0.111447, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.289122,0,0.111447, + 0,1,0,0.295356,0,0.120633, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.295356,0,0.120633, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.350542,0,-0.081588, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.364966,0,-0.079077, + 0,1,0,0.298197,0,0.122344, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.295356,0,0.120633, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.298197,0,0.122344, + 0,1,0,0.305665,0,0.124623, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.305665,0,0.124623, + 0,1,0,0.322084,0,0.123258, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.322084,0,0.123258, + 0,1,0,0.325168,0,0.12322, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.325168,0,0.12322, + 0,1,0,0.33646,0,0.127836, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.33646,0,0.127836, + 0,1,0,0.357946,0,0.146587, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.357946,0,0.146587, + 0,1,0,0.362818,0,0.147952, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.362818,0,0.147952, + 0,1,0,0.385985,0,0.148029, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.385985,0,0.148029, + 0,1,0,0.396055,0,0.148029, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.396055,0,0.148029, + 0,1,0,0.397327,0,0.147452, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.397327,0,0.147452, + 0,1,0,0.39755,0,0.147372, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.39755,0,0.147372, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.402829,0,-0.069765, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.448393,0,-0.069842, + 0,1,0,0.448393,0,-0.069842, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.452983,0,-0.069752, + 0,1,0,0.387946,0,0.149451, + 0,1,0,0.396055,0,0.148029, + 0,1,0,0.385985,0,0.148029, + 0,1,0,0.396055,0,0.148029, + 0,1,0,0.387946,0,0.149451, + 0,1,0,0.392417,0,0.149679, + 0,1,0,0.392417,0,0.149679, + 0,1,0,0.387946,0,0.149451, + 0,1,0,0.389737,0,0.16196, + 0,1,0,0.392417,0,0.149679, + 0,1,0,0.389737,0,0.16196, + 0,1,0,0.391512,0,0.158236, + 0,1,0,0.391512,0,0.158236, + 0,1,0,0.389737,0,0.16196, + 0,1,0,0.391138,0,0.169794, + 0,1,0,0.39265,0,0.179964, + 0,1,0,0.391512,0,0.158236, + 0,1,0,0.391138,0,0.169794, + 0,1,0,0.391512,0,0.158236, + 0,1,0,0.39265,0,0.179964, + 0,1,0,0.394239,0,0.174853, + 0,1,0,0.394239,0,0.174853, + 0,1,0,0.39265,0,0.179964, + 0,1,0,0.397569,0,0.204221, + 0,1,0,0.394239,0,0.174853, + 0,1,0,0.397569,0,0.204221, + 0,1,0,0.40666,0,0.219098, + 0,1,0,0.40666,0,0.219098, + 0,1,0,0.397569,0,0.204221, + 0,1,0,0.404345,0,0.223788, + 0,1,0,0.40666,0,0.219098, + 0,1,0,0.404345,0,0.223788, + 0,1,0,0.408002,0,0.244733, + 0,1,0,0.40666,0,0.219098, + 0,1,0,0.408002,0,0.244733, + 0,1,0,0.408099,0,0.224636, + 0,1,0,0.408099,0,0.224636, + 0,1,0,0.408002,0,0.244733, + 0,1,0,0.408103,0,0.249253, + 0,1,0,0.408099,0,0.224636, + 0,1,0,0.408103,0,0.249253, + 0,1,0,0.409262,0,0.230389, + 0,1,0,0.409262,0,0.230389, + 0,1,0,0.408103,0,0.249253, + 0,1,0,0.409766,0,0.262537, + 0,1,0,0.409262,0,0.230389, + 0,1,0,0.409766,0,0.262537, + 0,1,0,0.409683,0,0.234017, + 0,1,0,0.409683,0,0.234017, + 0,1,0,0.409766,0,0.262537, + 0,1,0,0.410439,0,0.237557, + 0,1,0,0.410439,0,0.237557, + 0,1,0,0.409766,0,0.262537, + 0,1,0,0.411514,0,0.264809, + 0,1,0,0.410439,0,0.237557, + 0,1,0,0.411514,0,0.264809, + 0,1,0,0.410716,0,0.23952, + 0,1,0,0.410716,0,0.23952, + 0,1,0,0.411514,0,0.264809, + 0,1,0,0.411294,0,0.23952, + 0,1,0,0.411294,0,0.23952, + 0,1,0,0.411514,0,0.264809, + 0,1,0,0.412466,0,0.250129, + 0,1,0,0.412466,0,0.250129, + 0,1,0,0.411514,0,0.264809, + 0,1,0,0.413564,0,0.265255, + 0,1,0,0.412466,0,0.250129, + 0,1,0,0.413564,0,0.265255, + 0,1,0,0.414263,0,0.261778, + 0,1,0,0.414263,0,0.261778, + 0,1,0,0.413564,0,0.265255, + 0,1,0,0.414269,0,0.264074, + 0,1,0,0.410716,0,0.237056, + 0,1,0,0.410439,0,0.237557, + 0,1,0,0.410716,0,0.23952, + 0,1,0,0.449951,0,0.131491, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.449885,0,0.112195, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.449951,0,0.131491, + 0,1,0,0.456562,0,0.143466, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.456562,0,0.143466, + 0,1,0,0.461568,0,0.148136, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.461568,0,0.148136, + 0,1,0,0.488701,0,0.15421, + 0,1,0,0.488701,0,0.15421, + 0,1,0,0.461568,0,0.148136, + 0,1,0,0.470528,0,0.152711, + 0,1,0,0.488701,0,0.15421, + 0,1,0,0.470528,0,0.152711, + 0,1,0,0.478978,0,0.154784, + 0,1,0,0.397327,0,0.148029, + 0,1,0,0.397327,0,0.147452, + 0,1,0,0.396055,0,0.148029, + 0,1,0,0.397327,0,0.147452, + 0,1,0,0.397327,0,0.148029, + 0,1,0,0.39755,0,0.147372, + 0,1,0,0.414121,0,0.239961, + 0,1,0,0.412797,0,0.232563, + 0,1,0,0.412797,0,0.23952, + 0,1,0,0.412797,0,0.232563, + 0,1,0,0.412705,0,0.228176, + 0,1,0,0.412671,0,0.232563, + 0,1,0,0.412705,0,0.228176, + 0,1,0,0.412797,0,0.232563, + 0,1,0,0.414375,0,0.214159, + 0,1,0,0.414375,0,0.214159, + 0,1,0,0.412797,0,0.232563, + 0,1,0,0.414121,0,0.239961, + 0,1,0,0.414375,0,0.214159, + 0,1,0,0.414121,0,0.239961, + 0,1,0,0.415751,0,0.237628, + 0,1,0,0.414375,0,0.214159, + 0,1,0,0.415751,0,0.237628, + 0,1,0,0.41744,0,0.195384, + 0,1,0,0.41744,0,0.195384, + 0,1,0,0.415751,0,0.237628, + 0,1,0,0.417574,0,0.222045, + 0,1,0,0.41744,0,0.195384, + 0,1,0,0.417574,0,0.222045, + 0,1,0,0.418892,0,0.189839, + 0,1,0,0.418892,0,0.189839, + 0,1,0,0.417574,0,0.222045, + 0,1,0,0.420163,0,0.207736, + 0,1,0,0.418892,0,0.189839, + 0,1,0,0.420163,0,0.207736, + 0,1,0,0.422448,0,0.176471, + 0,1,0,0.422448,0,0.176471, + 0,1,0,0.420163,0,0.207736, + 0,1,0,0.420471,0,0.206322, + 0,1,0,0.422448,0,0.176471, + 0,1,0,0.420471,0,0.206322, + 0,1,0,0.422094,0,0.189984, + 0,1,0,0.422448,0,0.176471, + 0,1,0,0.422094,0,0.189984, + 0,1,0,0.422204,0,0.18577, + 0,1,0,0.422448,0,0.176471, + 0,1,0,0.422204,0,0.18577, + 0,1,0,0.422281,0,0.185797, + 0,1,0,0.422448,0,0.176471, + 0,1,0,0.422281,0,0.185797, + 0,1,0,0.445986,0,0.117057, + 0,1,0,0.422448,0,0.176471, + 0,1,0,0.445986,0,0.117057, + 0,1,0,0.440637,0,0.123725, + 0,1,0,0.440637,0,0.123725, + 0,1,0,0.445986,0,0.117057, + 0,1,0,0.446342,0,0.105798, + 0,1,0,0.446342,0,0.105798, + 0,1,0,0.445986,0,0.117057, + 0,1,0,0.449885,0,0.112195, + 0,1,0,0.404666,0,0.144819, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.39755,0,0.147372, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.404666,0,0.144819, + 0,1,0,0.417249,0,0.137992, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.417249,0,0.137992, + 0,1,0,0.417828,0,0.135939, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.417828,0,0.135939, + 0,1,0,0.418963,0,0.137857, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.418963,0,0.137857, + 0,1,0,0.420489,0,0.14266, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.420489,0,0.14266, + 0,1,0,0.423494,0,0.136547, + 0,1,0,0.423494,0,0.136547, + 0,1,0,0.420489,0,0.14266, + 0,1,0,0.423393,0,0.140375, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.423494,0,0.136547, + 0,1,0,0.426619,0,0.128495, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.426619,0,0.128495, + 0,1,0,0.446342,0,0.105798, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.446342,0,0.105798, + 0,1,0,0.449885,0,0.112195, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.449885,0,0.112195, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.47088,0,-0.068458, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.472985,0,-0.079165, + 0,1,0,0.472985,0,-0.079165, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.477482,0,-0.083803, + 0,1,0,0.477482,0,-0.083803, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.493522,0,-0.08792, + 0,1,0,0.493522,0,-0.08792, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.503354,0,-0.089342, + 0,1,0,0.503354,0,-0.089342, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.50828,0,-0.088395, + 0,1,0,0.50828,0,-0.088395, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.534723,0,-0.08711, + 0,1,0,0.534723,0,-0.08711, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.523233,0,0.184872, + 0,1,0,0.522566,0,0.172052, + 0,1,0,0.522412,0,0.19779, + 0,1,0,0.503876,0,0.164781, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.495993,0,0.155045, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.503876,0,0.164781, + 0,1,0,0.507138,0,0.175776, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.507138,0,0.175776, + 0,1,0,0.511315,0,0.197987, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.511315,0,0.197987, + 0,1,0,0.511757,0,0.204784, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.511757,0,0.204784, + 0,1,0,0.515058,0,0.208096, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.515058,0,0.208096, + 0,1,0,0.517911,0,0.206731, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.517911,0,0.206731, + 0,1,0,0.522566,0,0.172052, + 0,1,0,0.522566,0,0.172052, + 0,1,0,0.517911,0,0.206731, + 0,1,0,0.522412,0,0.19779, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.522566,0,0.172052, + 0,1,0,0.525238,0,0.168112, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.525238,0,0.168112, + 0,1,0,0.541531,0,0.157186, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.541531,0,0.157186, + 0,1,0,0.550193,0,0.142374, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.550193,0,0.142374, + 0,1,0,0.550431,0,0.139425, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.550431,0,0.139425, + 0,1,0,0.555635,0,0.135535, + 0,1,0,0.557055,0,-0.086961, + 0,1,0,0.555635,0,0.135535, + 0,1,0,0.579593,0,-0.085334, + 0,1,0,0.579593,0,-0.085334, + 0,1,0,0.555635,0,0.135535, + 0,1,0,0.598969,0,-0.084539, + 0,1,0,0.569712,0,0.137066, + 0,1,0,0.570459,0,0.127076, + 0,1,0,0.570371,0,0.122531, + 0,1,0,0.570459,0,0.127076, + 0,1,0,0.569712,0,0.137066, + 0,1,0,0.571755,0,0.13583, + 0,1,0,0.590147,0,0.136555, + 0,1,0,0.589106,0,0.113213, + 0,1,0,0.588142,0,0.137089, + 0,1,0,0.589106,0,0.113213, + 0,1,0,0.590147,0,0.136555, + 0,1,0,0.591503,0,0.117398, + 0,1,0,0.591503,0,0.117398, + 0,1,0,0.590147,0,0.136555, + 0,1,0,0.596161,0,0.12439, + 0,1,0,0.591503,0,0.117398, + 0,1,0,0.596161,0,0.12439, + 0,1,0,0.595853,0,0.123322, + 0,1,0,0.555635,0,0.135535, + 0,1,0,0.570371,0,0.122531, + 0,1,0,0.598969,0,-0.084539, + 0,1,0,0.570371,0,0.122531, + 0,1,0,0.555635,0,0.135535, + 0,1,0,0.569712,0,0.137066, + 0,1,0,0.598969,0,-0.084539, + 0,1,0,0.570371,0,0.122531, + 0,1,0,0.577399,0,0.12947, + 0,1,0,0.598969,0,-0.084539, + 0,1,0,0.577399,0,0.12947, + 0,1,0,0.589106,0,0.113213, + 0,1,0,0.589106,0,0.113213, + 0,1,0,0.577399,0,0.12947, + 0,1,0,0.588142,0,0.137089, + 0,1,0,0.598969,0,-0.084539, + 0,1,0,0.589106,0,0.113213, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.598969,0,-0.084539, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.618344,0,-0.083744, + 0,1,0,0.618344,0,-0.083744, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.620558,0,-0.083594, + 0,1,0,0.638795,0,0.138343, + 0,1,0,0.630773,0,0.109371, + 0,1,0,0.628868,0,0.134444, + 0,1,0,0.630773,0,0.109371, + 0,1,0,0.638795,0,0.138343, + 0,1,0,0.635865,0,0.11419, + 0,1,0,0.635865,0,0.11419, + 0,1,0,0.638795,0,0.138343, + 0,1,0,0.641805,0,0.120056, + 0,1,0,0.641805,0,0.120056, + 0,1,0,0.638795,0,0.138343, + 0,1,0,0.640371,0,0.13732, + 0,1,0,0.641805,0,0.120056, + 0,1,0,0.640371,0,0.13732, + 0,1,0,0.644216,0,0.129739, + 0,1,0,0.593283,0,0.112433, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.589106,0,0.113213, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.593283,0,0.112433, + 0,1,0,0.608183,0,0.115627, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.608183,0,0.115627, + 0,1,0,0.620228,0,0.125744, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.620228,0,0.125744, + 0,1,0,0.628868,0,0.134444, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.628868,0,0.134444, + 0,1,0,0.630773,0,0.109371, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.630773,0,0.109371, + 0,1,0,0.632083,0,0.099196, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.632083,0,0.099196, + 0,1,0,0.633435,0,0.097076, + 0,1,0,0.636807,0,-0.079832, + 0,1,0,0.633435,0,0.097076, + 0,1,0,0.659098,0,-0.082422, + 0,1,0,0.659098,0,-0.082422, + 0,1,0,0.633435,0,0.097076, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.683151,0,0.104598, + 0,1,0,0.676838,0,0.095602, + 0,1,0,0.67674,0,0.096198, + 0,1,0,0.676838,0,0.095602, + 0,1,0,0.683151,0,0.104598, + 0,1,0,0.681594,0,0.095206, + 0,1,0,0.645913,0,0.095497, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.633435,0,0.097076, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.645913,0,0.095497, + 0,1,0,0.658364,0,0.095442, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.658364,0,0.095442, + 0,1,0,0.665007,0,0.092662, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.665007,0,0.092662, + 0,1,0,0.668193,0,0.093641, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.668193,0,0.093641, + 0,1,0,0.675042,0,0.093973, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.675042,0,0.093973, + 0,1,0,0.676838,0,0.095602, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.676838,0,0.095602, + 0,1,0,0.681594,0,0.095206, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.681594,0,0.095206, + 0,1,0,0.682756,0,0.094429, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.682756,0,0.094429, + 0,1,0,0.69471,0,0.095379, + 0,1,0,0.688136,0,-0.086747, + 0,1,0,0.69471,0,0.095379, + 0,1,0,0.697541,0,-0.085334, + 0,1,0,0.697541,0,-0.085334, + 0,1,0,0.69471,0,0.095379, + 0,1,0,0.714606,0,0.090823, + 0,1,0,0.697541,0,-0.085334, + 0,1,0,0.714606,0,0.090823, + 0,1,0,0.721669,0,-0.084006, + 0,1,0,0.721669,0,-0.084006, + 0,1,0,0.714606,0,0.090823, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.721669,0,-0.084006, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.740914,0,-0.08382, + 0,1,0,0.666293,0,0.147331, + 0,1,0,0.664464,0,0.129539, + 0,1,0,0.659941,0,0.133769, + 0,1,0,0.664464,0,0.129539, + 0,1,0,0.666293,0,0.147331, + 0,1,0,0.670008,0,0.146624, + 0,1,0,0.670008,0,0.146624, + 0,1,0,0.666293,0,0.147331, + 0,1,0,0.672392,0,0.152118, + 0,1,0,0.658491,0,0.105804, + 0,1,0,0.665007,0,0.092662, + 0,1,0,0.658364,0,0.095442, + 0,1,0,0.665007,0,0.092662, + 0,1,0,0.658491,0,0.105804, + 0,1,0,0.659941,0,0.133769, + 0,1,0,0.665007,0,0.092662, + 0,1,0,0.659941,0,0.133769, + 0,1,0,0.664565,0,0.096331, + 0,1,0,0.664565,0,0.096331, + 0,1,0,0.659941,0,0.133769, + 0,1,0,0.664464,0,0.129539, + 0,1,0,0.683316,0,0.128023, + 0,1,0,0.67432,0,0.110964, + 0,1,0,0.673619,0,0.119635, + 0,1,0,0.67432,0,0.110964, + 0,1,0,0.683316,0,0.128023, + 0,1,0,0.67674,0,0.096198, + 0,1,0,0.67674,0,0.096198, + 0,1,0,0.683316,0,0.128023, + 0,1,0,0.683151,0,0.104598, + 0,1,0,0.683151,0,0.104598, + 0,1,0,0.683316,0,0.128023, + 0,1,0,0.68523,0,0.10755, + 0,1,0,0.68523,0,0.10755, + 0,1,0,0.683316,0,0.128023, + 0,1,0,0.686054,0,0.131038, + 0,1,0,0.68523,0,0.10755, + 0,1,0,0.686054,0,0.131038, + 0,1,0,0.689344,0,0.118277, + 0,1,0,0.689344,0,0.118277, + 0,1,0,0.686054,0,0.131038, + 0,1,0,0.690758,0,0.15228, + 0,1,0,0.689344,0,0.118277, + 0,1,0,0.690758,0,0.15228, + 0,1,0,0.690744,0,0.135418, + 0,1,0,0.690744,0,0.135418, + 0,1,0,0.690758,0,0.15228, + 0,1,0,0.695374,0,0.151256, + 0,1,0,0.695374,0,0.151256, + 0,1,0,0.690758,0,0.15228, + 0,1,0,0.694023,0,0.154102, + 0,1,0,0.676838,0,0.095602, + 0,1,0,0.675042,0,0.093973, + 0,1,0,0.67674,0,0.096198, + 0,1,0,0.700699,0,0.113833, + 0,1,0,0.698637,0,0.107129, + 0,1,0,0.698607,0,0.110847, + 0,1,0,0.698637,0,0.107129, + 0,1,0,0.700699,0,0.113833, + 0,1,0,0.700027,0,0.1007, + 0,1,0,0.71142,0,0.121852, + 0,1,0,0.710934,0,0.096154, + 0,1,0,0.706288,0,0.114609, + 0,1,0,0.710934,0,0.096154, + 0,1,0,0.71142,0,0.121852, + 0,1,0,0.712349,0,0.097834, + 0,1,0,0.712349,0,0.097834, + 0,1,0,0.71142,0,0.121852, + 0,1,0,0.718607,0,0.119625, + 0,1,0,0.712349,0,0.097834, + 0,1,0,0.718607,0,0.119625, + 0,1,0,0.716207,0,0.10467, + 0,1,0,0.716207,0,0.10467, + 0,1,0,0.718607,0,0.119625, + 0,1,0,0.720963,0,0.115796, + 0,1,0,0.700027,0,0.1007, + 0,1,0,0.714606,0,0.090823, + 0,1,0,0.69471,0,0.095379, + 0,1,0,0.714606,0,0.090823, + 0,1,0,0.700027,0,0.1007, + 0,1,0,0.710934,0,0.096154, + 0,1,0,0.710934,0,0.096154, + 0,1,0,0.700027,0,0.1007, + 0,1,0,0.700699,0,0.113833, + 0,1,0,0.710934,0,0.096154, + 0,1,0,0.700699,0,0.113833, + 0,1,0,0.70433,0,0.107742, + 0,1,0,0.70433,0,0.107742, + 0,1,0,0.700699,0,0.113833, + 0,1,0,0.703083,0,0.111247, + 0,1,0,0.710934,0,0.096154, + 0,1,0,0.70433,0,0.107742, + 0,1,0,0.706288,0,0.114609, + 0,1,0,0.72999,0,0.121899, + 0,1,0,0.726299,0,0.121245, + 0,1,0,0.724778,0,0.123159, + 0,1,0,0.726299,0,0.121245, + 0,1,0,0.72999,0,0.121899, + 0,1,0,0.727211,0,0.118538, + 0,1,0,0.727211,0,0.118538, + 0,1,0,0.72999,0,0.121899, + 0,1,0,0.728191,0,0.109149, + 0,1,0,0.717693,0,0.090808, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.714606,0,0.090823, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.717693,0,0.090808, + 0,1,0,0.724838,0,0.096644, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.724838,0,0.096644, + 0,1,0,0.728191,0,0.109149, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.728191,0,0.109149, + 0,1,0,0.72999,0,0.121899, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.72999,0,0.121899, + 0,1,0,0.735872,0,0.120998, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.735872,0,0.120998, + 0,1,0,0.746533,0,0.123297, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.746533,0,0.123297, + 0,1,0,0.75824,0,0.125027, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.75824,0,0.125027, + 0,1,0,0.769164,0,0.128267, + 0,1,0,0.760371,0,-0.082103, + 0,1,0,0.769164,0,0.128267, + 0,1,0,0.773434,0,-0.081962, + 0,1,0,0.773434,0,-0.081962, + 0,1,0,0.769164,0,0.128267, + 0,1,0,0.770977,0,0.129352, + 0,1,0,0.773434,0,-0.081962, + 0,1,0,0.770977,0,0.129352, + 0,1,0,0.780388,0,0.131047, + 0,1,0,0.773434,0,-0.081962, + 0,1,0,0.780388,0,0.131047, + 0,1,0,0.781407,0,-0.077168, + 0,1,0,0.781407,0,-0.077168, + 0,1,0,0.780388,0,0.131047, + 0,1,0,0.785378,0,0.128196, + 0,1,0,0.781407,0,-0.077168, + 0,1,0,0.785378,0,0.128196, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.785378,0,0.128196, + 0,1,0,0.798004,0,0.111252, + 0,1,0,0.798004,0,0.111252, + 0,1,0,0.785378,0,0.128196, + 0,1,0,0.795684,0,0.117865, + 0,1,0,0.798004,0,0.111252, + 0,1,0,0.795684,0,0.117865, + 0,1,0,0.797348,0,0.11477, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.798004,0,0.111252, + 0,1,0,0.802588,0,0.109414, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.802588,0,0.109414, + 0,1,0,0.807957,0,0.109245, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.807957,0,0.109245, + 0,1,0,0.810112,0,0.105565, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.810112,0,0.105565, + 0,1,0,0.809692,0,0.098815, + 0,1,0,0.698986,0,0.159118, + 0,1,0,0.697733,0,0.157344, + 0,1,0,0.697047,0,0.159257, + 0,1,0,0.697733,0,0.157344, + 0,1,0,0.698986,0,0.159118, + 0,1,0,0.704953,0,0.147311, + 0,1,0,0.704953,0,0.147311, + 0,1,0,0.698986,0,0.159118, + 0,1,0,0.700381,0,0.158805, + 0,1,0,0.704953,0,0.147311, + 0,1,0,0.700381,0,0.158805, + 0,1,0,0.707131,0,0.15673, + 0,1,0,0.704953,0,0.147311, + 0,1,0,0.707131,0,0.15673, + 0,1,0,0.70634,0,0.142556, + 0,1,0,0.70634,0,0.142556, + 0,1,0,0.707131,0,0.15673, + 0,1,0,0.713988,0,0.128847, + 0,1,0,0.713988,0,0.128847, + 0,1,0,0.707131,0,0.15673, + 0,1,0,0.709295,0,0.14924, + 0,1,0,0.713988,0,0.128847, + 0,1,0,0.709295,0,0.14924, + 0,1,0,0.712793,0,0.136003, + 0,1,0,0.713988,0,0.128847, + 0,1,0,0.712793,0,0.136003, + 0,1,0,0.720359,0,0.128477, + 0,1,0,0.713988,0,0.128847, + 0,1,0,0.720359,0,0.128477, + 0,1,0,0.724778,0,0.123159, + 0,1,0,0.724778,0,0.123159, + 0,1,0,0.720359,0,0.128477, + 0,1,0,0.72999,0,0.121899, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.785814,0,-0.077411, + 0,1,0,0.781407,0,-0.077168, + 0,1,0,0.785814,0,-0.077411, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.800677,0,-0.080722, + 0,1,0,0.800677,0,-0.080722, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.822454,0,-0.079411, + 0,1,0,0.822454,0,-0.079411, + 0,1,0,0.808261,0,0.092493, + 0,1,0,0.817664,0,0.087083, + 0,1,0,0.822454,0,-0.079411, + 0,1,0,0.817664,0,0.087083, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.822454,0,-0.079411, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.876622,0,-0.077509, + 0,1,0,0.876622,0,-0.077509, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.891471,0,-0.072365, + 0,1,0,0.876622,0,-0.077509, + 0,1,0,0.891471,0,-0.072365, + 0,1,0,0.886758,0,-0.075894, + 0,1,0,0.879236,0,0.103329, + 0,1,0,0.880494,0,0.087719, + 0,1,0,0.876092,0,0.089178, + 0,1,0,0.880494,0,0.087719, + 0,1,0,0.879236,0,0.103329, + 0,1,0,0.880933,0,0.112746, + 0,1,0,0.880494,0,0.087719, + 0,1,0,0.880933,0,0.112746, + 0,1,0,0.882485,0,0.101668, + 0,1,0,0.882485,0,0.101668, + 0,1,0,0.880933,0,0.112746, + 0,1,0,0.883682,0,0.116359, + 0,1,0,0.935113,0,0.086174, + 0,1,0,0.980026,0,-0.051806, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.980026,0,-0.051806, + 0,1,0,0.935113,0,0.086174, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.980026,0,-0.051806, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.983297,0,-0.043914, + 0,1,0,0.983297,0,-0.043914, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.988108,0,-0.009716, + 0,1,0,0.983297,0,-0.043914, + 0,1,0,0.988108,0,-0.009716, + 0,1,0,0.987389,0,-0.028605, + 0,1,0,0.988108,0,-0.009716, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.990187,0,0.00336, + 0,1,0,0.988108,0,-0.009716, + 0,1,0,0.98919,0,-0.02392, + 0,1,0,0.987389,0,-0.028605, + 0,1,0,0.98919,0,-0.02392, + 0,1,0,0.988108,0,-0.009716, + 0,1,0,0.988446,0,-0.01112, + 0,1,0,0.832307,0,0.092813, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.817664,0,0.087083, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.832307,0,0.092813, + 0,1,0,0.837239,0,0.093877, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.837239,0,0.093877, + 0,1,0,0.852684,0,0.093915, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.852684,0,0.093915, + 0,1,0,0.868186,0,0.090299, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.868186,0,0.090299, + 0,1,0,0.874095,0,0.087813, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.874095,0,0.087813, + 0,1,0,0.876092,0,0.089178, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.876092,0,0.089178, + 0,1,0,0.880494,0,0.087719, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.880494,0,0.087719, + 0,1,0,0.889776,0,0.087627, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.889776,0,0.087627, + 0,1,0,0.930862,0,0.086184, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.930862,0,0.086184, + 0,1,0,0.935113,0,0.086174, + 0,1,0,0.990594,0,0.044208, + 0,1,0,0.988787,0,0.009887, + 0,1,0,0.979628,0,0.056886, + 0,1,0,0.988787,0,0.009887, + 0,1,0,0.990594,0,0.044208, + 0,1,0,0.992143,0,0.01847, + 0,1,0,0.992143,0,0.01847, + 0,1,0,0.990594,0,0.044208, + 0,1,0,0.996902,0,0.039876, + 0,1,0,0.992143,0,0.01847, + 0,1,0,0.996902,0,0.039876, + 0,1,0,0.998585,0,0.029074, + 0,1,0,0.998585,0,0.029074, + 0,1,0,0.996902,0,0.039876, + 0,1,0,0.999093,0,0.039624, + 0,1,0,0.916362,0,0.10467, + 0,1,0,0.914865,0,0.097326, + 0,1,0,0.914857,0,0.102711, + 0,1,0,0.914865,0,0.097326, + 0,1,0,0.916362,0,0.10467, + 0,1,0,0.91648,0,0.095495, + 0,1,0,0.91648,0,0.095495, + 0,1,0,0.916362,0,0.10467, + 0,1,0,0.927423,0,0.107904, + 0,1,0,0.91648,0,0.095495, + 0,1,0,0.927423,0,0.107904, + 0,1,0,0.921214,0,0.093992, + 0,1,0,0.921214,0,0.093992, + 0,1,0,0.927423,0,0.107904, + 0,1,0,0.935113,0,0.086174, + 0,1,0,0.935113,0,0.086174, + 0,1,0,0.927423,0,0.107904, + 0,1,0,0.945177,0,0.107786, + 0,1,0,0.935113,0,0.086174, + 0,1,0,0.945177,0,0.107786, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.945177,0,0.107786, + 0,1,0,0.956964,0,0.106578, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.956964,0,0.106578, + 0,1,0,0.962517,0,0.102149, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.962517,0,0.102149, + 0,1,0,0.973408,0,0.069285, + 0,1,0,0.973408,0,0.069285, + 0,1,0,0.962517,0,0.102149, + 0,1,0,0.972771,0,0.079921, + 0,1,0,0.972771,0,0.079921, + 0,1,0,0.962517,0,0.102149, + 0,1,0,0.972658,0,0.08315, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.973408,0,0.069285, + 0,1,0,0.976736,0,0.059775, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.976736,0,0.059775, + 0,1,0,0.979628,0,0.056886, + 0,1,0,0.989048,0,0.004923, + 0,1,0,0.979628,0,0.056886, + 0,1,0,0.988787,0,0.009887, + 0,1,0,0.980026,0,-0.051806, + 0,1,0,0.915167,0,-0.070111, + 0,1,0,0.894145,0,-0.071426, + 0,1,0,0.915167,0,-0.070111, + 0,1,0,0.980026,0,-0.051806, + 0,1,0,0.939839,0,-0.069902, + 0,1,0,0.939839,0,-0.069902, + 0,1,0,0.980026,0,-0.051806, + 0,1,0,0.964695,0,-0.068243, + 0,1,0,0.964695,0,-0.068243, + 0,1,0,0.980026,0,-0.051806, + 0,1,0,0.973177,0,-0.068253, + 0,1,0,0.973177,0,-0.068253, + 0,1,0,0.980026,0,-0.051806, + 0,1,0,0.980817,0,-0.058157, + 0,1,0,0.973177,0,-0.068253, + 0,1,0,0.980817,0,-0.058157, + 0,1,0,0.982753,0,-0.067376 +}; +static const struct gllist ships_ship3_frame = { + GL_N3F_V3F, GL_TRIANGLES, 1044, ships_ship3_data, 0 +}; +const struct gllist *ships_ship3 = &ships_ship3_frame; + +static const float ships_ship4_data[] = { + 0,1,0,0.304943,0,0.190323, + 0,1,0,0.326396,0,0.170348, + 0,1,0,0.299248,0,0.187399, + 0,1,0,0.326396,0,0.170348, + 0,1,0,0.304943,0,0.190323, + 0,1,0,0.345944,0,0.166544, + 0,1,0,0.246234,0,0.135536, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.245025,0,0.128414, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.246234,0,0.135536, + 0,1,0,0.257787,0,0.135536, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.257787,0,0.135536, + 0,1,0,0.262284,0,0.12738, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.262284,0,0.12738, + 0,1,0,0.273445,0,0.128616, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.273445,0,0.128616, + 0,1,0,0.273481,0,0.138748, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.273481,0,0.138748, + 0,1,0,0.275634,0,0.164606, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.275634,0,0.164606, + 0,1,0,0.28583,0,0.172039, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.28583,0,0.172039, + 0,1,0,0.297928,0,0.175909, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.297928,0,0.175909, + 0,1,0,0.326396,0,0.170348, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.326396,0,0.170348, + 0,1,0,0.358476,0,-0.020344, + 0,1,0,0.358476,0,-0.020344, + 0,1,0,0.326396,0,0.170348, + 0,1,0,0.345944,0,0.166544, + 0,1,0,0.14381,0,0.103841, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.14156,0,0.094759, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.14381,0,0.103841, + 0,1,0,0.158432,0,0.103903, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.158432,0,0.103903, + 0,1,0,0.168776,0,0.095234, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.168776,0,0.095234, + 0,1,0,0.175846,0,0.104926, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.175846,0,0.104926, + 0,1,0,0.194066,0,0.087656, + 0,1,0,0.194066,0,0.087656, + 0,1,0,0.175846,0,0.104926, + 0,1,0,0.190935,0,0.102262, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.194066,0,0.087656, + 0,1,0,0.202579,0,0.103094, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.202579,0,0.103094, + 0,1,0,0.210571,0,0.087724, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.210571,0,0.087724, + 0,1,0,0.223665,0,0.105104, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.223665,0,0.105104, + 0,1,0,0.223681,0,0.123024, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.223681,0,0.123024, + 0,1,0,0.245025,0,0.128414, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.245025,0,0.128414, + 0,1,0,0.297968,0,-0.027452, + 0,1,0,0.036626,0,0.113962, + 0,1,0,0.03682,0,0.09696, + 0,1,0,0.031803,0,0.10418, + 0,1,0,0.03682,0,0.09696, + 0,1,0,0.036626,0,0.113962, + 0,1,0,0.05721,0,0.099867, + 0,1,0,0.03682,0,0.09696, + 0,1,0,0.05721,0,0.099867, + 0,1,0,0.039559,0,0.002209, + 0,1,0,0.039559,0,0.002209, + 0,1,0,0.05721,0,0.099867, + 0,1,0,0.051559,0,-0.037322, + 0,1,0,0.051559,0,-0.037322, + 0,1,0,0.05721,0,0.099867, + 0,1,0,0.061101,0,0.092082, + 0,1,0,0.03061,0,-0.010889, + 0,1,0,0.03271,0,-0.026229, + 0,1,0,0.025668,0,-0.013396, + 0,1,0,0.03271,0,-0.026229, + 0,1,0,0.03061,0,-0.010889, + 0,1,0,0.039559,0,0.002209, + 0,1,0,0.03271,0,-0.026229, + 0,1,0,0.039559,0,0.002209, + 0,1,0,0.051559,0,-0.037322, + 0,1,0,0.009609,0,0.103487, + 0,1,0,0.015049,0,0.084688, + 0,1,0,0.006732,0,0.089029, + 0,1,0,0.015049,0,0.084688, + 0,1,0,0.009609,0,0.103487, + 0,1,0,0.022363,0,0.103487, + 0,1,0,0.015049,0,0.084688, + 0,1,0,0.022363,0,0.103487, + 0,1,0,0.017935,0,0.071363, + 0,1,0,0.017935,0,0.071363, + 0,1,0,0.022363,0,0.103487, + 0,1,0,0.03285,0,0.034328, + 0,1,0,0.03285,0,0.034328, + 0,1,0,0.022363,0,0.103487, + 0,1,0,0.031087,0,0.094974, + 0,1,0,0.03285,0,0.034328, + 0,1,0,0.031087,0,0.094974, + 0,1,0,0.03682,0,0.09696, + 0,1,0,0.03285,0,0.034328, + 0,1,0,0.03682,0,0.09696, + 0,1,0,0.039559,0,0.002209, + 0,1,0,0.106151,0,0.104429, + 0,1,0,0.104181,0,0.088847, + 0,1,0,0.096575,0,0.104429, + 0,1,0,0.061101,0,0.092082, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.051559,0,-0.037322, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.061101,0,0.092082, + 0,1,0,0.091936,0,0.089043, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.091936,0,0.089043, + 0,1,0,0.104181,0,0.088847, + 0,1,0,0.104181,0,0.088847, + 0,1,0,0.091936,0,0.089043, + 0,1,0,0.096575,0,0.104429, + 0,1,0,0.23746,0,-0.034559, + 0,1,0,0.104181,0,0.088847, + 0,1,0,0.14156,0,0.094759, + 0,1,0,0.329906,0,0.185972, + 0,1,0,0.342762,0,0.172869, + 0,1,0,0.324891,0,0.186066, + 0,1,0,0.342762,0,0.172869, + 0,1,0,0.329906,0,0.185972, + 0,1,0,0.339844,0,0.181324, + 0,1,0,0.342762,0,0.172869, + 0,1,0,0.339844,0,0.181324, + 0,1,0,0.360305,0,0.183469, + 0,1,0,0.342762,0,0.172869, + 0,1,0,0.360305,0,0.183469, + 0,1,0,0.345944,0,0.166544, + 0,1,0,0.345944,0,0.166544, + 0,1,0,0.360305,0,0.183469, + 0,1,0,0.358476,0,-0.020344, + 0,1,0,0.358476,0,-0.020344, + 0,1,0,0.360305,0,0.183469, + 0,1,0,0.415493,0,-0.021069, + 0,1,0,0.415493,0,-0.021069, + 0,1,0,0.360305,0,0.183469, + 0,1,0,0.369467,0,0.182719, + 0,1,0,0.415493,0,-0.021069, + 0,1,0,0.369467,0,0.182719, + 0,1,0,0.38488,0,0.188501, + 0,1,0,0.415493,0,-0.021069, + 0,1,0,0.38488,0,0.188501, + 0,1,0,0.397781,0,0.183285, + 0,1,0,0.408713,0,0.203571, + 0,1,0,0.415493,0,-0.021069, + 0,1,0,0.397781,0,0.183285, + 0,1,0,0.415493,0,-0.021069, + 0,1,0,0.408713,0,0.203571, + 0,1,0,0.410142,0,0.215072, + 0,1,0,0.415493,0,-0.021069, + 0,1,0,0.410142,0,0.215072, + 0,1,0,0.425881,0,0.215072, + 0,1,0,0.415493,0,-0.021069, + 0,1,0,0.425881,0,0.215072, + 0,1,0,0.479404,0,-0.030146, + 0,1,0,0.479404,0,-0.030146, + 0,1,0,0.425881,0,0.215072, + 0,1,0,0.489913,0,0.219775, + 0,1,0,0.418248,0,0.35148, + 0,1,0,0.418356,0,0.341484, + 0,1,0,0.405514,0,0.352143, + 0,1,0,0.418356,0,0.341484, + 0,1,0,0.418248,0,0.35148, + 0,1,0,0.428617,0,0.369988, + 0,1,0,0.418356,0,0.341484, + 0,1,0,0.428617,0,0.369988, + 0,1,0,0.42234,0,0.318448, + 0,1,0,0.42234,0,0.318448, + 0,1,0,0.428617,0,0.369988, + 0,1,0,0.427764,0,0.276224, + 0,1,0,0.427764,0,0.276224, + 0,1,0,0.428617,0,0.369988, + 0,1,0,0.452839,0,0.343883, + 0,1,0,0.452839,0,0.343883, + 0,1,0,0.428617,0,0.369988, + 0,1,0,0.445208,0,0.355164, + 0,1,0,0.410902,0,0.298372, + 0,1,0,0.390397,0,0.283464, + 0,1,0,0.383552,0,0.29897, + 0,1,0,0.390397,0,0.283464, + 0,1,0,0.410902,0,0.298372, + 0,1,0,0.399968,0,0.282169, + 0,1,0,0.399968,0,0.282169, + 0,1,0,0.410902,0,0.298372, + 0,1,0,0.404167,0,0.283968, + 0,1,0,0.404167,0,0.283968, + 0,1,0,0.410902,0,0.298372, + 0,1,0,0.420169,0,0.284013, + 0,1,0,0.420169,0,0.284013, + 0,1,0,0.410902,0,0.298372, + 0,1,0,0.414131,0,0.314687, + 0,1,0,0.420169,0,0.284013, + 0,1,0,0.414131,0,0.314687, + 0,1,0,0.42234,0,0.318448, + 0,1,0,0.420169,0,0.284013, + 0,1,0,0.42234,0,0.318448, + 0,1,0,0.427764,0,0.276224, + 0,1,0,0.520644,0,0.224976, + 0,1,0,0.516866,0,0.207753, + 0,1,0,0.503959,0,0.226903, + 0,1,0,0.530608,0,0.199574, + 0,1,0,0.52136,0,0.179767, + 0,1,0,0.516866,0,0.207753, + 0,1,0,0.489913,0,0.219775, + 0,1,0,0.537226,0,-0.025853, + 0,1,0,0.479404,0,-0.030146, + 0,1,0,0.537226,0,-0.025853, + 0,1,0,0.489913,0,0.219775, + 0,1,0,0.503959,0,0.226903, + 0,1,0,0.537226,0,-0.025853, + 0,1,0,0.503959,0,0.226903, + 0,1,0,0.516866,0,0.207753, + 0,1,0,0.537226,0,-0.025853, + 0,1,0,0.516866,0,0.207753, + 0,1,0,0.52136,0,0.179767, + 0,1,0,0.537226,0,-0.025853, + 0,1,0,0.52136,0,0.179767, + 0,1,0,0.523769,0,0.167802, + 0,1,0,0.537226,0,-0.025853, + 0,1,0,0.523769,0,0.167802, + 0,1,0,0.548236,0,0.136243, + 0,1,0,0.537226,0,-0.025853, + 0,1,0,0.548236,0,0.136243, + 0,1,0,0.566645,0,-0.018616, + 0,1,0,0.566645,0,-0.018616, + 0,1,0,0.548236,0,0.136243, + 0,1,0,0.549719,0,0.12887, + 0,1,0,0.566645,0,-0.018616, + 0,1,0,0.549719,0,0.12887, + 0,1,0,0.554575,0,0.12323, + 0,1,0,0.552753,0,0.178346, + 0,1,0,0.523769,0,0.167802, + 0,1,0,0.52136,0,0.179767, + 0,1,0,0.523769,0,0.167802, + 0,1,0,0.552753,0,0.178346, + 0,1,0,0.560238,0,0.169988, + 0,1,0,0.541347,0,0.163708, + 0,1,0,0.548236,0,0.136243, + 0,1,0,0.523769,0,0.167802, + 0,1,0,0.548236,0,0.136243, + 0,1,0,0.541347,0,0.163708, + 0,1,0,0.555944,0,0.155783, + 0,1,0,0.555944,0,0.155783, + 0,1,0,0.541347,0,0.163708, + 0,1,0,0.559142,0,0.163585, + 0,1,0,0.560035,0,0.144169, + 0,1,0,0.548236,0,0.136243, + 0,1,0,0.555944,0,0.155783, + 0,1,0,0.564799,0,0.119242, + 0,1,0,0.566645,0,-0.018616, + 0,1,0,0.554575,0,0.12323, + 0,1,0,0.566645,0,-0.018616, + 0,1,0,0.564799,0,0.119242, + 0,1,0,0.58033,0,0.115393, + 0,1,0,0.566645,0,-0.018616, + 0,1,0,0.58033,0,0.115393, + 0,1,0,0.62089,0,-0.018575, + 0,1,0,0.62089,0,-0.018575, + 0,1,0,0.58033,0,0.115393, + 0,1,0,0.585431,0,0.121481, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.583856,0,0.153968, + 0,1,0,0.581753,0,0.158505, + 0,1,0,0.583856,0,0.153968, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.585431,0,0.121481, + 0,1,0,0.585431,0,0.121481, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.637038,0,0.134243, + 0,1,0,0.583856,0,0.153968, + 0,1,0,0.574491,0,0.147231, + 0,1,0,0.570974,0,0.157277, + 0,1,0,0.574491,0,0.147231, + 0,1,0,0.583856,0,0.153968, + 0,1,0,0.585431,0,0.121481, + 0,1,0,0.637038,0,0.134243, + 0,1,0,0.62089,0,-0.018575, + 0,1,0,0.585431,0,0.121481, + 0,1,0,0.62089,0,-0.018575, + 0,1,0,0.702152,0,-0.018998, + 0,1,0,0.61878,0,-0.025619, + 0,1,0,0.702152,0,-0.018998, + 0,1,0,0.62089,0,-0.018575, + 0,1,0,0.637038,0,0.134243, + 0,1,0,0.702152,0,-0.018998, + 0,1,0,0.637038,0,0.134243, + 0,1,0,0.661318,0,0.122183, + 0,1,0,0.702152,0,-0.018998, + 0,1,0,0.661318,0,0.122183, + 0,1,0,0.670206,0,0.110851, + 0,1,0,0.573562,0,0.172873, + 0,1,0,0.581753,0,0.158505, + 0,1,0,0.572534,0,0.161272, + 0,1,0,0.581753,0,0.158505, + 0,1,0,0.573562,0,0.172873, + 0,1,0,0.583793,0,0.171573, + 0,1,0,0.581753,0,0.158505, + 0,1,0,0.583793,0,0.171573, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.583793,0,0.171573, + 0,1,0,0.584888,0,0.181456, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.584888,0,0.181456, + 0,1,0,0.624872,0,0.174338, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.624872,0,0.174338, + 0,1,0,0.633124,0,0.175123, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.633124,0,0.175123, + 0,1,0,0.634269,0,0.164334, + 0,1,0,0.633973,0,0.156872, + 0,1,0,0.634269,0,0.164334, + 0,1,0,0.668778,0,0.167913, + 0,1,0,0.668778,0,0.167913, + 0,1,0,0.634269,0,0.164334, + 0,1,0,0.665861,0,0.175198, + 0,1,0,0.6544,0,0.149992, + 0,1,0,0.637038,0,0.134243, + 0,1,0,0.635778,0,0.146679, + 0,1,0,0.637038,0,0.134243, + 0,1,0,0.6544,0,0.149992, + 0,1,0,0.661318,0,0.122183, + 0,1,0,0.661318,0,0.122183, + 0,1,0,0.6544,0,0.149992, + 0,1,0,0.662997,0,0.135334, + 0,1,0,0.665945,0,0.129564, + 0,1,0,0.670206,0,0.110851, + 0,1,0,0.661318,0,0.122183, + 0,1,0,0.670206,0,0.110851, + 0,1,0,0.665945,0,0.129564, + 0,1,0,0.672333,0,0.136286, + 0,1,0,0.735491,0,0.103255, + 0,1,0,0.75396,0,0.088343, + 0,1,0,0.734536,0,0.096627, + 0,1,0,0.75396,0,0.088343, + 0,1,0,0.735491,0,0.103255, + 0,1,0,0.756588,0,0.09584, + 0,1,0,0.75396,0,0.088343, + 0,1,0,0.756588,0,0.09584, + 0,1,0,0.787724,0,0.092968, + 0,1,0,0.787724,0,0.092968, + 0,1,0,0.756588,0,0.09584, + 0,1,0,0.779594,0,0.095468, + 0,1,0,0.692539,0,0.110851, + 0,1,0,0.702152,0,-0.018998, + 0,1,0,0.670206,0,0.110851, + 0,1,0,0.702152,0,-0.018998, + 0,1,0,0.692539,0,0.110851, + 0,1,0,0.700333,0,0.101232, + 0,1,0,0.702152,0,-0.018998, + 0,1,0,0.700333,0,0.101232, + 0,1,0,0.702466,0,0.086725, + 0,1,0,0.702152,0,-0.018998, + 0,1,0,0.702466,0,0.086725, + 0,1,0,0.73176,0,-0.018818, + 0,1,0,0.73176,0,-0.018818, + 0,1,0,0.702466,0,0.086725, + 0,1,0,0.720485,0,0.08966, + 0,1,0,0.73176,0,-0.018818, + 0,1,0,0.720485,0,0.08966, + 0,1,0,0.734536,0,0.096627, + 0,1,0,0.73176,0,-0.018818, + 0,1,0,0.734536,0,0.096627, + 0,1,0,0.761369,0,-0.022527, + 0,1,0,0.761369,0,-0.022527, + 0,1,0,0.734536,0,0.096627, + 0,1,0,0.75396,0,0.088343, + 0,1,0,0.761369,0,-0.022527, + 0,1,0,0.75396,0,0.088343, + 0,1,0,0.793365,0,-0.023345, + 0,1,0,0.762469,0,0.0869, + 0,1,0,0.793365,0,-0.023345, + 0,1,0,0.75396,0,0.088343, + 0,1,0,0.793365,0,-0.023345, + 0,1,0,0.762469,0,0.0869, + 0,1,0,0.792877,0,0.074633, + 0,1,0,0.793365,0,-0.023345, + 0,1,0,0.792877,0,0.074633, + 0,1,0,0.803272,0,0.067506, + 0,1,0,0.793365,0,-0.023345, + 0,1,0,0.803272,0,0.067506, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.803272,0,0.067506, + 0,1,0,0.821617,0,0.065833, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.821617,0,0.065833, + 0,1,0,0.84053,0,0.064639, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.84053,0,0.064639, + 0,1,0,0.852984,0,0.059455, + 0,1,0,0.88081,0,0.08527, + 0,1,0,0.84053,0,0.064639, + 0,1,0,0.821617,0,0.065833, + 0,1,0,0.84053,0,0.064639, + 0,1,0,0.88081,0,0.08527, + 0,1,0,0.847707,0,0.067725, + 0,1,0,0.847707,0,0.067725, + 0,1,0,0.88081,0,0.08527, + 0,1,0,0.882139,0,0.078045, + 0,1,0,0.882139,0,0.078045, + 0,1,0,0.88081,0,0.08527, + 0,1,0,0.883984,0,0.079929, + 0,1,0,0.929535,0,0.061348, + 0,1,0,0.920327,0,0.053894, + 0,1,0,0.897836,0,0.057214, + 0,1,0,0.920327,0,0.053894, + 0,1,0,0.929535,0,0.061348, + 0,1,0,0.938087,0,0.057211, + 0,1,0,0.864701,0,0.066306, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.852984,0,0.059455, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.864701,0,0.066306, + 0,1,0,0.880233,0,0.058765, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.880233,0,0.058765, + 0,1,0,0.897836,0,0.057214, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.897836,0,0.057214, + 0,1,0,0.920327,0,0.053894, + 0,1,0,0.904408,0,-0.014934, + 0,1,0,0.920327,0,0.053894, + 0,1,0,0.96438,0,-0.016439, + 0,1,0,0.96438,0,-0.016439, + 0,1,0,0.920327,0,0.053894, + 0,1,0,0.935168,0,0.046694, + 0,1,0,0.958106,0,0.048214, + 0,1,0,0.96438,0,-0.016439, + 0,1,0,0.935168,0,0.046694, + 0,1,0,0.96438,0,-0.016439, + 0,1,0,0.958106,0,0.048214, + 0,1,0,0.966364,0,0.035069, + 0,1,0,0.966364,0,0.035069, + 0,1,0,0.958106,0,0.048214, + 0,1,0,0.966595,0,0.039642, + 0,1,0,0.973143,0,0.031323, + 0,1,0,0.967674,0,-0.002108, + 0,1,0,0.966364,0,0.035069, + 0,1,0,0.96438,0,-0.016439, + 0,1,0,0.967674,0,-0.002108, + 0,1,0,0.981188,0,-0.014459, + 0,1,0,0.967674,0,-0.002108, + 0,1,0,0.96438,0,-0.016439, + 0,1,0,0.966364,0,0.035069, + 0,1,0,0.981188,0,-0.014459, + 0,1,0,0.967674,0,-0.002108, + 0,1,0,0.984607,0,-0.00735, + 0,1,0,0.476049,0,0.277053, + 0,1,0,0.427764,0,0.276224, + 0,1,0,0.452839,0,0.343883, + 0,1,0,0.427524,0,0.227217, + 0,1,0,0.489913,0,0.219775, + 0,1,0,0.425881,0,0.215072, + 0,1,0,0.489913,0,0.219775, + 0,1,0,0.427524,0,0.227217, + 0,1,0,0.427764,0,0.276224, + 0,1,0,0.489913,0,0.219775, + 0,1,0,0.427764,0,0.276224, + 0,1,0,0.47774,0,0.264282, + 0,1,0,0.47774,0,0.264282, + 0,1,0,0.427764,0,0.276224, + 0,1,0,0.476049,0,0.277053, + 0,1,0,0.489913,0,0.219775, + 0,1,0,0.47774,0,0.264282, + 0,1,0,0.489232,0,0.230519, + 0,1,0,0.473055,0,0.390849, + 0,1,0,0.458901,0,0.371717, + 0,1,0,0.439417,0,0.380594, + 0,1,0,0.458901,0,0.371717, + 0,1,0,0.474537,0,0.318785, + 0,1,0,0.452839,0,0.343883, + 0,1,0,0.474537,0,0.318785, + 0,1,0,0.458901,0,0.371717, + 0,1,0,0.473055,0,0.390849, + 0,1,0,0.474537,0,0.318785, + 0,1,0,0.473055,0,0.390849, + 0,1,0,0.483181,0,0.363554, + 0,1,0,0.474537,0,0.318785, + 0,1,0,0.483181,0,0.363554, + 0,1,0,0.484033,0,0.350585, + 0,1,0,0.476049,0,0.277053, + 0,1,0,0.452839,0,0.343883, + 0,1,0,0.474537,0,0.318785, + 0,1,0,0.503726,0,0.315268, + 0,1,0,0.476049,0,0.277053, + 0,1,0,0.474537,0,0.318785, + 0,1,0,0.476049,0,0.277053, + 0,1,0,0.503726,0,0.315268, + 0,1,0,0.492139,0,0.292934, + 0,1,0,0.492139,0,0.292934, + 0,1,0,0.503726,0,0.315268, + 0,1,0,0.506622,0,0.300411, + 0,1,0,0.492139,0,0.292934, + 0,1,0,0.506622,0,0.300411, + 0,1,0,0.574724,0,0.29066, + 0,1,0,0.574724,0,0.29066, + 0,1,0,0.506622,0,0.300411, + 0,1,0,0.571048,0,0.29579 +}; +static const struct gllist ships_ship4_frame = { + GL_N3F_V3F, GL_TRIANGLES, 522, ships_ship4_data, 0 +}; +const struct gllist *ships_ship4 = &ships_ship4_frame; + +static const float ships_ship5_data[] = { + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.001715,0,-0.045957, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.181433,0,0.064832, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.181433,0,0.064832, + 0,1,0,0.181484,0,0.064736, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.181484,0,0.064736, + 0,1,0,0.181506,0,0.064743, + 0,1,0,0.095908,0,0.047446, + 0,1,0,0.052158,0,0.02414, + 0,1,0,0.048308,0,0.034479, + 0,1,0,0.136388,0,0.141637, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.125094,0,0.067408, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.136388,0,0.141637, + 0,1,0,0.171394,0,0.137342, + 0,1,0,0.095935,0,0.057113, + 0,1,0,0.111465,0,0.057453, + 0,1,0,0.095908,0,0.047446, + 0,1,0,0.111465,0,0.057453, + 0,1,0,0.095935,0,0.057113, + 0,1,0,0.100355,0,0.06043, + 0,1,0,0.016847,0,0.048638, + 0,1,0,0.014814,0,0.024288, + 0,1,0,0.012424,0,0.046373, + 0,1,0,0.014814,0,0.024288, + 0,1,0,0.016847,0,0.048638, + 0,1,0,0.021172,0,0.02702, + 0,1,0,0.014814,0,0.024288, + 0,1,0,0.021172,0,0.02702, + 0,1,0,0.026929,0,0.024129, + 0,1,0,0.021172,0,0.02702, + 0,1,0,0.016847,0,0.048638, + 0,1,0,0.017702,0,0.047032, + 0,1,0,0.008355,0,0.00998, + 0,1,0,0.052158,0,0.02414, + 0,1,0,0.008266,0,-0.029831, + 0,1,0,0.052158,0,0.02414, + 0,1,0,0.008355,0,0.00998, + 0,1,0,0.044731,0,0.024115, + 0,1,0,0.044731,0,0.024115, + 0,1,0,0.008355,0,0.00998, + 0,1,0,0.01012,0,0.024024, + 0,1,0,0.044731,0,0.024115, + 0,1,0,0.01012,0,0.024024, + 0,1,0,0.026929,0,0.024129, + 0,1,0,0.026929,0,0.024129, + 0,1,0,0.01012,0,0.024024, + 0,1,0,0.014814,0,0.024288, + 0,1,0,0.044731,0,0.024115, + 0,1,0,0.026929,0,0.024129, + 0,1,0,0.032846,0,0.025595, + 0,1,0,0.044731,0,0.024115, + 0,1,0,0.032846,0,0.025595, + 0,1,0,0.039222,0,0.025488, + 0,1,0,0.034322,0,0.058994, + 0,1,0,0.026929,0,0.024129, + 0,1,0,0.021172,0,0.02702, + 0,1,0,0.026929,0,0.024129, + 0,1,0,0.034322,0,0.058994, + 0,1,0,0.037972,0,0.057261, + 0,1,0,0.042779,0,0.077034, + 0,1,0,0.061377,0,0.061235, + 0,1,0,0.040701,0,0.072796, + 0,1,0,0.061377,0,0.061235, + 0,1,0,0.042779,0,0.077034, + 0,1,0,0.063459,0,0.06709, + 0,1,0,0.070295,0,0.075306, + 0,1,0,0.063459,0,0.06709, + 0,1,0,0.063459,0,0.075306, + 0,1,0,0.053526,0,0.041817, + 0,1,0,0.095908,0,0.047446, + 0,1,0,0.048308,0,0.034479, + 0,1,0,0.095908,0,0.047446, + 0,1,0,0.053526,0,0.041817, + 0,1,0,0.058269,0,0.056058, + 0,1,0,0.095908,0,0.047446, + 0,1,0,0.058269,0,0.056058, + 0,1,0,0.061377,0,0.061235, + 0,1,0,0.095908,0,0.047446, + 0,1,0,0.061377,0,0.061235, + 0,1,0,0.087644,0,0.050772, + 0,1,0,0.087644,0,0.050772, + 0,1,0,0.061377,0,0.061235, + 0,1,0,0.063459,0,0.06709, + 0,1,0,0.087644,0,0.050772, + 0,1,0,0.063459,0,0.06709, + 0,1,0,0.076667,0,0.063045, + 0,1,0,0.076667,0,0.063045, + 0,1,0,0.063459,0,0.06709, + 0,1,0,0.070295,0,0.075306, + 0,1,0,0.070295,0,0.075306, + 0,1,0,0.076728,0,0.082213, + 0,1,0,0.076667,0,0.063045, + 0,1,0,0.076728,0,0.082213, + 0,1,0,0.070295,0,0.075306, + 0,1,0,0.079137,0,0.246431, + 0,1,0,0.076728,0,0.082213, + 0,1,0,0.079137,0,0.246431, + 0,1,0,0.080977,0,0.237572, + 0,1,0,0.076728,0,0.082213, + 0,1,0,0.080616,0,0.066126, + 0,1,0,0.076667,0,0.063045, + 0,1,0,0.080616,0,0.066126, + 0,1,0,0.076728,0,0.082213, + 0,1,0,0.082403,0,0.082213, + 0,1,0,0.125094,0,0.067408, + 0,1,0,0.111465,0,0.057453, + 0,1,0,0.113351,0,0.069023, + 0,1,0,0.003246,0,-0.031262, + 0,1,0,0.001715,0,-0.045957, + 0,1,0,0.001618,0,-0.038157, + 0,1,0,0.001715,0,-0.045957, + 0,1,0,0.003246,0,-0.031262, + 0,1,0,0.00775,0,-0.031028, + 0,1,0,0.001715,0,-0.045957, + 0,1,0,0.00775,0,-0.031028, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.00775,0,-0.031028, + 0,1,0,0.008266,0,-0.029831, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.008266,0,-0.029831, + 0,1,0,0.052158,0,0.02414, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.052158,0,0.02414, + 0,1,0,0.095908,0,0.047446, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.095908,0,0.047446, + 0,1,0,0.111465,0,0.057453, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.111465,0,0.057453, + 0,1,0,0.125094,0,0.067408, + 0,1,0,0.171507,0,0.07103, + 0,1,0,0.181433,0,0.064832, + 0,1,0,0.166125,0,0.064832, + 0,1,0,0.181433,0,0.064832, + 0,1,0,0.171507,0,0.07103, + 0,1,0,0.178121,0,0.07103, + 0,1,0,0.207789,0,0.072818, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.194012,0,0.069031, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.207789,0,0.072818, + 0,1,0,0.214555,0,0.072818, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.214555,0,0.072818, + 0,1,0,0.256317,0,0.072881, + 0,1,0,0.181484,0,0.064832, + 0,1,0,0.181484,0,0.064736, + 0,1,0,0.181433,0,0.064832, + 0,1,0,0.181484,0,0.064736, + 0,1,0,0.181484,0,0.064832, + 0,1,0,0.181506,0,0.064743, + 0,1,0,0.191757,0,0.068026, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.181506,0,0.064743, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.191757,0,0.068026, + 0,1,0,0.194012,0,0.069031, + 0,1,0,0.207789,0,0.072818, + 0,1,0,0.194012,0,0.069031, + 0,1,0,0.207789,0,0.086154, + 0,1,0,0.224037,0,0.154308, + 0,1,0,0.256317,0,0.072881, + 0,1,0,0.214555,0,0.072818, + 0,1,0,0.256317,0,0.072881, + 0,1,0,0.224037,0,0.154308, + 0,1,0,0.225964,0,0.161564, + 0,1,0,0.256317,0,0.072881, + 0,1,0,0.225964,0,0.161564, + 0,1,0,0.234166,0,0.160331, + 0,1,0,0.256317,0,0.072881, + 0,1,0,0.234166,0,0.160331, + 0,1,0,0.261724,0,0.159312, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.261557,0,0.072881, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.261557,0,0.072881, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.256317,0,0.072881, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.261557,0,0.072881, + 0,1,0,0.277221,0,0.075279, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.277221,0,0.075279, + 0,1,0,0.317776,0,0.082282, + 0,1,0,0.269452,0,0.084624, + 0,1,0,0.261557,0,0.072881, + 0,1,0,0.261557,0,0.084624, + 0,1,0,0.261557,0,0.072881, + 0,1,0,0.269452,0,0.084624, + 0,1,0,0.277221,0,0.075279, + 0,1,0,0.289785,0,0.088598, + 0,1,0,0.287961,0,0.07869, + 0,1,0,0.281601,0,0.088598, + 0,1,0,0.277221,0,0.075279, + 0,1,0,0.287961,0,0.07869, + 0,1,0,0.317776,0,0.082282, + 0,1,0,0.287961,0,0.07869, + 0,1,0,0.277221,0,0.075279, + 0,1,0,0.281601,0,0.088598, + 0,1,0,0.317776,0,0.082282, + 0,1,0,0.287961,0,0.07869, + 0,1,0,0.299525,0,0.081697, + 0,1,0,0.317776,0,0.082282, + 0,1,0,0.299525,0,0.081697, + 0,1,0,0.310606,0,0.087359, + 0,1,0,0.333544,0,0.184582, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.317776,0,0.082282, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.333544,0,0.184582, + 0,1,0,0.37772,0,0.181407, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.37772,0,0.181407, + 0,1,0,0.370959,0,0.119141, + 0,1,0,0.370959,0,0.119141, + 0,1,0,0.372074,0,0.108315, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.372074,0,0.108315, + 0,1,0,0.370959,0,0.119141, + 0,1,0,0.372137,0,0.112193, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.376455,0,-0.041627, + 0,1,0,0.207789,0,-0.043575, + 0,1,0,0.376455,0,-0.041627, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.420461,0,0.087749, + 0,1,0,0.376455,0,-0.041627, + 0,1,0,0.420461,0,0.087749, + 0,1,0,0.454473,0,0.095982, + 0,1,0,0.394231,0,0.112852, + 0,1,0,0.38823,0,0.091739, + 0,1,0,0.38823,0,0.106849, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.403191,0,0.089718, + 0,1,0,0.420461,0,0.087749, + 0,1,0,0.403191,0,0.089718, + 0,1,0,0.366697,0,0.082669, + 0,1,0,0.38823,0,0.091739, + 0,1,0,0.403191,0,0.089718, + 0,1,0,0.38823,0,0.091739, + 0,1,0,0.397302,0,0.093667, + 0,1,0,0.397302,0,0.093667, + 0,1,0,0.38823,0,0.091739, + 0,1,0,0.394231,0,0.112852, + 0,1,0,0.397302,0,0.093667, + 0,1,0,0.394231,0,0.112852, + 0,1,0,0.396581,0,0.105608, + 0,1,0,0.420461,0,0.087749, + 0,1,0,0.446113,0,0.095183, + 0,1,0,0.454473,0,0.095982, + 0,1,0,0.446113,0,0.095183, + 0,1,0,0.420461,0,0.087749, + 0,1,0,0.436002,0,0.094225, + 0,1,0,0.436002,0,0.094225, + 0,1,0,0.420461,0,0.087749, + 0,1,0,0.431829,0,0.094236, + 0,1,0,0.431829,0,0.094236, + 0,1,0,0.420461,0,0.087749, + 0,1,0,0.422378,0,0.108735, + 0,1,0,0.431829,0,0.094236, + 0,1,0,0.422378,0,0.108735, + 0,1,0,0.428035,0,0.110773, + 0,1,0,0.431829,0,0.094236, + 0,1,0,0.428035,0,0.110773, + 0,1,0,0.430142,0,0.106462, + 0,1,0,0.446113,0,0.095183, + 0,1,0,0.436002,0,0.094225, + 0,1,0,0.43972,0,0.097141, + 0,1,0,0.446113,0,0.095183, + 0,1,0,0.43972,0,0.097141, + 0,1,0,0.442315,0,0.106176, + 0,1,0,0.446113,0,0.095183, + 0,1,0,0.442315,0,0.106176, + 0,1,0,0.446113,0,0.10759, + 0,1,0,0.463906,0,0.207466, + 0,1,0,0.497607,0,0.091808, + 0,1,0,0.454473,0,0.095982, + 0,1,0,0.497607,0,0.091808, + 0,1,0,0.463906,0,0.207466, + 0,1,0,0.497655,0,0.099429, + 0,1,0,0.497655,0,0.099429, + 0,1,0,0.463906,0,0.207466, + 0,1,0,0.509623,0,0.205684, + 0,1,0,0.50481,0,0.10516, + 0,1,0,0.511486,0,0.090215, + 0,1,0,0.501456,0,0.091808, + 0,1,0,0.511486,0,0.090215, + 0,1,0,0.50481,0,0.10516, + 0,1,0,0.509337,0,0.103405, + 0,1,0,0.52893,0,0.10095, + 0,1,0,0.553107,0,0.091478, + 0,1,0,0.511486,0,0.090215, + 0,1,0,0.553107,0,0.091478, + 0,1,0,0.52893,0,0.10095, + 0,1,0,0.54413,0,0.10095, + 0,1,0,0.644949,0,0.236471, + 0,1,0,0.572047,0,0.105355, + 0,1,0,0.569738,0,0.111048, + 0,1,0,0.572047,0,0.105355, + 0,1,0,0.644949,0,0.236471, + 0,1,0,0.644873,0,0.222943, + 0,1,0,0.644873,0,0.222943, + 0,1,0,0.644949,0,0.236471, + 0,1,0,0.64714,0,0.231454, + 0,1,0,0.550144,0,0.127813, + 0,1,0,0.547445,0,0.124606, + 0,1,0,0.545142,0,0.125558, + 0,1,0,0.547445,0,0.124606, + 0,1,0,0.550144,0,0.127813, + 0,1,0,0.552892,0,0.116183, + 0,1,0,0.552892,0,0.116183, + 0,1,0,0.550144,0,0.127813, + 0,1,0,0.566351,0,0.123158, + 0,1,0,0.552892,0,0.116183, + 0,1,0,0.566351,0,0.123158, + 0,1,0,0.552912,0,0.114184, + 0,1,0,0.552912,0,0.114184, + 0,1,0,0.566351,0,0.123158, + 0,1,0,0.556858,0,0.098286, + 0,1,0,0.556422,0,0.095834, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.553107,0,0.091478, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.556422,0,0.095834, + 0,1,0,0.556858,0,0.098286, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.556858,0,0.098286, + 0,1,0,0.572047,0,0.105355, + 0,1,0,0.572047,0,0.105355, + 0,1,0,0.556858,0,0.098286, + 0,1,0,0.569738,0,0.111048, + 0,1,0,0.569738,0,0.111048, + 0,1,0,0.556858,0,0.098286, + 0,1,0,0.566351,0,0.123158, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.572047,0,0.105355, + 0,1,0,0.579834,0,0.105355, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.579834,0,0.105355, + 0,1,0,0.579933,0,0.109136, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.579933,0,0.109136, + 0,1,0,0.582443,0,0.111613, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.582443,0,0.111613, + 0,1,0,0.591814,0,0.112965, + 0,1,0,0.634432,0,0.166831, + 0,1,0,0.620851,0,0.091797, + 0,1,0,0.614411,0,0.098278, + 0,1,0,0.620851,0,0.091797, + 0,1,0,0.634432,0,0.166831, + 0,1,0,0.641824,0,0.166831, + 0,1,0,0.636952,0,0.101194, + 0,1,0,0.631438,0,0.091797, + 0,1,0,0.629595,0,0.098001, + 0,1,0,0.631438,0,0.091797, + 0,1,0,0.636952,0,0.101194, + 0,1,0,0.643871,0,0.087598, + 0,1,0,0.667128,0,0.360389, + 0,1,0,0.663409,0,0.259363, + 0,1,0,0.660866,0,0.358077, + 0,1,0,0.660866,0,0.358077, + 0,1,0,0.652329,0,0.09576, + 0,1,0,0.643871,0,0.087598, + 0,1,0,0.652329,0,0.09576, + 0,1,0,0.660866,0,0.358077, + 0,1,0,0.663409,0,0.249927, + 0,1,0,0.663409,0,0.249927, + 0,1,0,0.660866,0,0.358077, + 0,1,0,0.663409,0,0.259363, + 0,1,0,0.652329,0,0.09576, + 0,1,0,0.657966,0,0.089941, + 0,1,0,0.643871,0,0.087598, + 0,1,0,0.657966,0,0.089941, + 0,1,0,0.652329,0,0.09576, + 0,1,0,0.657966,0,0.095447, + 0,1,0,0.669946,0,0.10117, + 0,1,0,0.663424,0,0.094392, + 0,1,0,0.663409,0,0.099025, + 0,1,0,0.663424,0,0.094392, + 0,1,0,0.698505,0,0.081469, + 0,1,0,0.662071,0,0.090935, + 0,1,0,0.698505,0,0.081469, + 0,1,0,0.663424,0,0.094392, + 0,1,0,0.669946,0,0.092138, + 0,1,0,0.669946,0,0.092138, + 0,1,0,0.663424,0,0.094392, + 0,1,0,0.669946,0,0.10117, + 0,1,0,0.698505,0,0.081469, + 0,1,0,0.669946,0,0.092138, + 0,1,0,0.682405,0,0.093684, + 0,1,0,0.698505,0,0.081469, + 0,1,0,0.682405,0,0.093684, + 0,1,0,0.687829,0,0.097372, + 0,1,0,0.759943,0,0.121689, + 0,1,0,0.761196,0,0.112841, + 0,1,0,0.757564,0,0.116773, + 0,1,0,0.761196,0,0.112841, + 0,1,0,0.759943,0,0.121689, + 0,1,0,0.763846,0,0.119808, + 0,1,0,0.739593,0,0.106753, + 0,1,0,0.730899,0,0.094722, + 0,1,0,0.727889,0,0.103317, + 0,1,0,0.730899,0,0.094722, + 0,1,0,0.739593,0,0.106753, + 0,1,0,0.739289,0,0.082921, + 0,1,0,0.739289,0,0.082921, + 0,1,0,0.739593,0,0.106753, + 0,1,0,0.741908,0,0.084462, + 0,1,0,0.741908,0,0.084462, + 0,1,0,0.739593,0,0.106753, + 0,1,0,0.742166,0,0.093571, + 0,1,0,0.741908,0,0.084462, + 0,1,0,0.742166,0,0.093571, + 0,1,0,0.783334,0,0.120508, + 0,1,0,0.783334,0,0.120508, + 0,1,0,0.742166,0,0.093571, + 0,1,0,0.761196,0,0.112841, + 0,1,0,0.783334,0,0.120508, + 0,1,0,0.761196,0,0.112841, + 0,1,0,0.767964,0,0.117251, + 0,1,0,0.767964,0,0.117251, + 0,1,0,0.761196,0,0.112841, + 0,1,0,0.763846,0,0.119808, + 0,1,0,0.783334,0,0.120508, + 0,1,0,0.767964,0,0.117251, + 0,1,0,0.777789,0,0.128777, + 0,1,0,0.721492,0,0.088515, + 0,1,0,0.741942,0,0.07987, + 0,1,0,0.72121,0,0.082325, + 0,1,0,0.741942,0,0.07987, + 0,1,0,0.721492,0,0.088515, + 0,1,0,0.739289,0,0.082921, + 0,1,0,0.739289,0,0.082921, + 0,1,0,0.721492,0,0.088515, + 0,1,0,0.730899,0,0.094722, + 0,1,0,0.745551,0,0.080024, + 0,1,0,0.775495,0,0.071129, + 0,1,0,0.741942,0,0.07987, + 0,1,0,0.775495,0,0.071129, + 0,1,0,0.745551,0,0.080024, + 0,1,0,0.747943,0,0.080733, + 0,1,0,0.775495,0,0.071129, + 0,1,0,0.747943,0,0.080733, + 0,1,0,0.764433,0,0.083265, + 0,1,0,0.775495,0,0.071129, + 0,1,0,0.764433,0,0.083265, + 0,1,0,0.772205,0,0.083449, + 0,1,0,0.832532,0,0.080587, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.787201,0,0.073019, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.832532,0,0.080587, + 0,1,0,0.892328,0,0.094571, + 0,1,0,0.787201,0,0.073019, + 0,1,0,0.93599,0,-0.034208, + 0,1,0,0.775495,0,0.071129, + 0,1,0,0.93599,0,-0.034208, + 0,1,0,0.787201,0,0.073019, + 0,1,0,0.916393,0,0.003488, + 0,1,0,0.916393,0,0.003488, + 0,1,0,0.787201,0,0.073019, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.93599,0,-0.034208, + 0,1,0,0.916393,0,0.003488, + 0,1,0,0.936516,0,-0.027225, + 0,1,0,0.777327,0,0.11054, + 0,1,0,0.793083,0,0.086486, + 0,1,0,0.774096,0,0.103935, + 0,1,0,0.793083,0,0.086486, + 0,1,0,0.777327,0,0.11054, + 0,1,0,0.781652,0,0.108678, + 0,1,0,0.793083,0,0.086486, + 0,1,0,0.781652,0,0.108678, + 0,1,0,0.805114,0,0.089496, + 0,1,0,0.793083,0,0.086486, + 0,1,0,0.805114,0,0.089496, + 0,1,0,0.794464,0,0.083624, + 0,1,0,0.8128,0,0.105465, + 0,1,0,0.805114,0,0.089496, + 0,1,0,0.800691,0,0.103287, + 0,1,0,0.794464,0,0.083624, + 0,1,0,0.787201,0,0.073019, + 0,1,0,0.787201,0,0.083237, + 0,1,0,0.787201,0,0.073019, + 0,1,0,0.794464,0,0.083624, + 0,1,0,0.832532,0,0.080587, + 0,1,0,0.832532,0,0.080587, + 0,1,0,0.794464,0,0.083624, + 0,1,0,0.805114,0,0.089496, + 0,1,0,0.832532,0,0.080587, + 0,1,0,0.805114,0,0.089496, + 0,1,0,0.817616,0,0.086439, + 0,1,0,0.817616,0,0.086439, + 0,1,0,0.805114,0,0.089496, + 0,1,0,0.815769,0,0.089603, + 0,1,0,0.815769,0,0.089603, + 0,1,0,0.805114,0,0.089496, + 0,1,0,0.8128,0,0.105465, + 0,1,0,0.846707,0,0.099473, + 0,1,0,0.841234,0,0.094315, + 0,1,0,0.841234,0,0.099473, + 0,1,0,0.8516,0,0.100934, + 0,1,0,0.852472,0,0.096213, + 0,1,0,0.850639,0,0.099893, + 0,1,0,0.852472,0,0.096213, + 0,1,0,0.8516,0,0.100934, + 0,1,0,0.857423,0,0.100975, + 0,1,0,0.892328,0,0.101988, + 0,1,0,0.862558,0,0.094381, + 0,1,0,0.861866,0,0.107563, + 0,1,0,0.825162,0,0.09278, + 0,1,0,0.831943,0,0.090034, + 0,1,0,0.82127,0,0.090034, + 0,1,0,0.831943,0,0.090034, + 0,1,0,0.825162,0,0.09278, + 0,1,0,0.841234,0,0.094315, + 0,1,0,0.831943,0,0.090034, + 0,1,0,0.841234,0,0.094315, + 0,1,0,0.832532,0,0.080587, + 0,1,0,0.832532,0,0.080587, + 0,1,0,0.841234,0,0.094315, + 0,1,0,0.846707,0,0.093071, + 0,1,0,0.832532,0,0.080587, + 0,1,0,0.846707,0,0.093071, + 0,1,0,0.892328,0,0.094571, + 0,1,0,0.846707,0,0.093071, + 0,1,0,0.841234,0,0.094315, + 0,1,0,0.846707,0,0.099473, + 0,1,0,0.892328,0,0.094571, + 0,1,0,0.846707,0,0.093071, + 0,1,0,0.862558,0,0.094381, + 0,1,0,0.862558,0,0.094381, + 0,1,0,0.846707,0,0.093071, + 0,1,0,0.857423,0,0.094381, + 0,1,0,0.857423,0,0.094381, + 0,1,0,0.846707,0,0.093071, + 0,1,0,0.852472,0,0.096213, + 0,1,0,0.857423,0,0.094381, + 0,1,0,0.852472,0,0.096213, + 0,1,0,0.857423,0,0.100975, + 0,1,0,0.892328,0,0.094571, + 0,1,0,0.862558,0,0.094381, + 0,1,0,0.892328,0,0.101988, + 0,1,0,0.899199,0,0.094571, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.892328,0,0.094571, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.899199,0,0.094571, + 0,1,0,0.899404,0,0.097981, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.899404,0,0.097981, + 0,1,0,0.909473,0,0.097981, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.909473,0,0.097981, + 0,1,0,0.916301,0,0.092997, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.916301,0,0.092997, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.916301,0,0.092997, + 0,1,0,0.918851,0,0.098476, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.918851,0,0.098476, + 0,1,0,0.925888,0,0.095161, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.925888,0,0.095161, + 0,1,0,0.926485,0,0.100656, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.926485,0,0.100656, + 0,1,0,0.92745,0,0.10042, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.92745,0,0.10042, + 0,1,0,0.929789,0,0.096688, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.929789,0,0.096688, + 0,1,0,0.935651,0,0.092805, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.915137,0,0.028034, + 0,1,0,0.909874,0,0.024996, + 0,1,0,0.915137,0,0.028034, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.966042,0,0.048493, + 0,1,0,0.966042,0,0.048493, + 0,1,0,0.935651,0,0.083822, + 0,1,0,0.946131,0,0.086203, + 0,1,0,0.966042,0,0.048493, + 0,1,0,0.946131,0,0.086203, + 0,1,0,0.947032,0,0.091237, + 0,1,0,0.966042,0,0.048493, + 0,1,0,0.947032,0,0.091237, + 0,1,0,0.952058,0,0.086382, + 0,1,0,0.952058,0,0.086382, + 0,1,0,0.947032,0,0.091237, + 0,1,0,0.951521,0,0.095301, + 0,1,0,0.966042,0,0.048493, + 0,1,0,0.952058,0,0.086382, + 0,1,0,0.959508,0,0.086382, + 0,1,0,0.966042,0,0.048493, + 0,1,0,0.959508,0,0.086382, + 0,1,0,0.96675,0,0.087777, + 0,1,0,0.966042,0,0.048493, + 0,1,0,0.96675,0,0.087777, + 0,1,0,0.967897,0,0.050346, + 0,1,0,0.967897,0,0.050346, + 0,1,0,0.96675,0,0.087777, + 0,1,0,0.98216,0,0.092901, + 0,1,0,0.967897,0,0.050346, + 0,1,0,0.98216,0,0.092901, + 0,1,0,0.976559,0,0.061589, + 0,1,0,0.976559,0,0.061589, + 0,1,0,0.98216,0,0.092901, + 0,1,0,0.989246,0,0.074312, + 0,1,0,0.98144,0,0.13698, + 0,1,0,0.96675,0,0.087777, + 0,1,0,0.959508,0,0.086382, + 0,1,0,0.96675,0,0.087777, + 0,1,0,0.98144,0,0.13698, + 0,1,0,0.985565,0,0.138938, + 0,1,0,0.985565,0,0.138938, + 0,1,0,0.98144,0,0.13698, + 0,1,0,0.984862,0,0.140108, + 0,1,0,0.985565,0,0.138938, + 0,1,0,0.984862,0,0.140108, + 0,1,0,0.985414,0,0.139537, + 0,1,0,0.60316,0,0.098248, + 0,1,0,0.591814,0,-0.039138, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.591814,0,-0.039138, + 0,1,0,0.60316,0,0.098248, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.60316,0,0.098248, + 0,1,0,0.620851,0,0.091797, + 0,1,0,0.620851,0,0.091797, + 0,1,0,0.60316,0,0.098248, + 0,1,0,0.614411,0,0.098278, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.620851,0,0.091797, + 0,1,0,0.631438,0,0.091797, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.631438,0,0.091797, + 0,1,0,0.643871,0,0.087598, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.643871,0,0.087598, + 0,1,0,0.657966,0,0.089941, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.657966,0,0.089941, + 0,1,0,0.662071,0,0.090935, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.662071,0,0.090935, + 0,1,0,0.698505,0,0.081469, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.698505,0,0.081469, + 0,1,0,0.704247,0,0.079546, + 0,1,0,0.454473,0,0.095982, + 0,1,0,0.591814,0,-0.039138, + 0,1,0,0.376455,0,-0.041627, + 0,1,0,0.591814,0,-0.039138, + 0,1,0,0.454473,0,0.095982, + 0,1,0,0.497607,0,0.091808, + 0,1,0,0.591814,0,-0.039138, + 0,1,0,0.497607,0,0.091808, + 0,1,0,0.501456,0,0.091808, + 0,1,0,0.591814,0,-0.039138, + 0,1,0,0.501456,0,0.091808, + 0,1,0,0.511486,0,0.090215, + 0,1,0,0.591814,0,-0.039138, + 0,1,0,0.511486,0,0.090215, + 0,1,0,0.553107,0,0.091478, + 0,1,0,0.591814,0,-0.039138, + 0,1,0,0.553107,0,0.091478, + 0,1,0,0.591814,0,0.095491, + 0,1,0,0.72121,0,0.082325, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.704247,0,0.079546, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.72121,0,0.082325, + 0,1,0,0.741942,0,0.07987, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.741942,0,0.07987, + 0,1,0,0.775495,0,0.071129, + 0,1,0,0.755534,0,-0.037246, + 0,1,0,0.775495,0,0.071129, + 0,1,0,0.935029,0,-0.035172, + 0,1,0,0.935029,0,-0.035172, + 0,1,0,0.775495,0,0.071129, + 0,1,0,0.93599,0,-0.034208, + 0,1,0,0.693133,0,0.290579, + 0,1,0,0.663409,0,0.249927, + 0,1,0,0.663409,0,0.259363, + 0,1,0,0.663409,0,0.249927, + 0,1,0,0.693133,0,0.290579, + 0,1,0,0.69697,0,0.283488 +}; +static const struct gllist ships_ship5_frame = { + GL_N3F_V3F, GL_TRIANGLES, 702, ships_ship5_data, 0 +}; +const struct gllist *ships_ship5 = &ships_ship5_frame; + +static const float ships_ship6_data[] = { + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.00761,0,0.035711, + 0,1,0,0.005168,0,0.049856, + 0,1,0,0.00761,0,0.035711, + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.012035,0,-0.003074, + 0,1,0,0.012035,0,-0.003074, + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.012056,0,-0.009788, + 0,1,0,0.012056,0,-0.009788, + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.020554,0,-0.019586, + 0,1,0,0.020554,0,-0.019586, + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.069502,0,-0.027048, + 0,1,0,0.069502,0,-0.027048, + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.100116,0,-0.032121, + 0,1,0,0.100116,0,-0.032121, + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.119522,0,-0.037428, + 0,1,0,0.317531,0,0.099131, + 0,1,0,0.301761,0,-0.052847, + 0,1,0,0.301761,0,0.101015, + 0,1,0,0.301761,0,-0.052847, + 0,1,0,0.317531,0,0.099131, + 0,1,0,0.327571,0,0.095154, + 0,1,0,0.301761,0,-0.052847, + 0,1,0,0.327571,0,0.095154, + 0,1,0,0.337878,0,0.093814, + 0,1,0,0.114815,0,0.086584, + 0,1,0,0.119522,0,-0.037428, + 0,1,0,0.113471,0,0.075648, + 0,1,0,0.119522,0,-0.037428, + 0,1,0,0.114815,0,0.086584, + 0,1,0,0.149053,0,0.088333, + 0,1,0,0.044223,0,0.078999, + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.037078,0,0.07165, + 0,1,0,0.037189,0,0.049856, + 0,1,0,0.044223,0,0.078999, + 0,1,0,0.119522,0,-0.037428, + 0,1,0,0.119522,0,-0.037428, + 0,1,0,0.044223,0,0.078999, + 0,1,0,0.055073,0,0.07854, + 0,1,0,0.119522,0,-0.037428, + 0,1,0,0.055073,0,0.07854, + 0,1,0,0.113471,0,0.075648, + 0,1,0,0.149053,0,0.088333, + 0,1,0,0.179741,0,-0.042731, + 0,1,0,0.119522,0,-0.037428, + 0,1,0,0.179741,0,-0.042731, + 0,1,0,0.149053,0,0.088333, + 0,1,0,0.301761,0,0.101015, + 0,1,0,0.179741,0,-0.042731, + 0,1,0,0.301761,0,0.101015, + 0,1,0,0.301761,0,-0.052847, + 0,1,0,0.172143,0,0.125958, + 0,1,0,0.149053,0,0.088333, + 0,1,0,0.149053,0,0.125958, + 0,1,0,0.149053,0,0.088333, + 0,1,0,0.172143,0,0.125958, + 0,1,0,0.301761,0,0.101015, + 0,1,0,0.172143,0,0.125958, + 0,1,0,0.264064,0,0.128088, + 0,1,0,0.301761,0,0.101015, + 0,1,0,0.264064,0,0.128088, + 0,1,0,0.172143,0,0.125958, + 0,1,0,0.257925,0,0.133426, + 0,1,0,0.307142,0,0.1844, + 0,1,0,0.265691,0,0.157236, + 0,1,0,0.262648,0,0.186124, + 0,1,0,0.265691,0,0.157236, + 0,1,0,0.307142,0,0.1844, + 0,1,0,0.304541,0,0.176581, + 0,1,0,0.265691,0,0.157236, + 0,1,0,0.304541,0,0.176581, + 0,1,0,0.301761,0,0.101015, + 0,1,0,0.301761,0,0.101015, + 0,1,0,0.264064,0,0.128088, + 0,1,0,0.265691,0,0.157236, + 0,1,0,0.257941,0,0.155385, + 0,1,0,0.172143,0,0.125958, + 0,1,0,0.170246,0,0.156415, + 0,1,0,0.172143,0,0.125958, + 0,1,0,0.257941,0,0.155385, + 0,1,0,0.257925,0,0.133426, + 0,1,0,0.337878,0,0.093814, + 0,1,0,0.314473,0,-0.053901, + 0,1,0,0.301761,0,-0.052847, + 0,1,0,0.314473,0,-0.053901, + 0,1,0,0.337878,0,0.093814, + 0,1,0,0.439288,0,-0.062858, + 0,1,0,0.439288,0,-0.062858, + 0,1,0,0.337878,0,0.093814, + 0,1,0,0.596878,0,-0.07232, + 0,1,0,0.684966,0,0.102797, + 0,1,0,0.692751,0,0.029614, + 0,1,0,0.596878,0,-0.07232, + 0,1,0,0.692751,0,0.029614, + 0,1,0,0.684966,0,0.102797, + 0,1,0,0.692758,0,0.037014, + 0,1,0,0.692758,0,0.037014, + 0,1,0,0.684966,0,0.102797, + 0,1,0,0.693759,0,0.091606, + 0,1,0,0.410007,0,0.09773, + 0,1,0,0.596878,0,-0.07232, + 0,1,0,0.337878,0,0.093814, + 0,1,0,0.596878,0,-0.07232, + 0,1,0,0.410007,0,0.09773, + 0,1,0,0.46531,0,0.0988, + 0,1,0,0.596878,0,-0.07232, + 0,1,0,0.46531,0,0.0988, + 0,1,0,0.554952,0,0.103058, + 0,1,0,0.596878,0,-0.07232, + 0,1,0,0.554952,0,0.103058, + 0,1,0,0.642868,0,0.109787, + 0,1,0,0.596878,0,-0.07232, + 0,1,0,0.642868,0,0.109787, + 0,1,0,0.684966,0,0.102797, + 0,1,0,0.684966,0,0.102797, + 0,1,0,0.642868,0,0.109787, + 0,1,0,0.662723,0,0.107084, + 0,1,0,0.692751,0,0.029614, + 0,1,0,0.698436,0,-0.076424, + 0,1,0,0.596878,0,-0.07232, + 0,1,0,0.698436,0,-0.076424, + 0,1,0,0.692751,0,0.029614, + 0,1,0,0.834403,0,-0.08059, + 0,1,0,0.904352,0,0.036065, + 0,1,0,0.925985,0,-0.018014, + 0,1,0,0.801927,0,0.033143, + 0,1,0,0.925985,0,-0.018014, + 0,1,0,0.904352,0,0.036065, + 0,1,0,0.980572,0,0.03958, + 0,1,0,0.925985,0,-0.018014, + 0,1,0,0.980572,0,0.03958, + 0,1,0,0.976029,0,0.029161, + 0,1,0,0.757179,0,0.029859, + 0,1,0,0.834403,0,-0.08059, + 0,1,0,0.692751,0,0.029614, + 0,1,0,0.834403,0,-0.08059, + 0,1,0,0.757179,0,0.029859, + 0,1,0,0.801927,0,0.033143, + 0,1,0,0.868277,0,-0.047334, + 0,1,0,0.834403,0,-0.08059, + 0,1,0,0.801927,0,0.033143, + 0,1,0,0.834403,0,-0.08059, + 0,1,0,0.868277,0,-0.047334, + 0,1,0,0.851539,0,-0.083355, + 0,1,0,0.851539,0,-0.083355, + 0,1,0,0.868277,0,-0.047334, + 0,1,0,0.891466,0,-0.085733, + 0,1,0,0.925985,0,-0.018014, + 0,1,0,0.868277,0,-0.047334, + 0,1,0,0.801927,0,0.033143, + 0,1,0,0.868277,0,-0.047334, + 0,1,0,0.925985,0,-0.018014, + 0,1,0,0.879096,0,-0.042237, + 0,1,0,0.763854,0,0.035269, + 0,1,0,0.801927,0,0.033143, + 0,1,0,0.757179,0,0.029859, + 0,1,0,0.801927,0,0.033143, + 0,1,0,0.763854,0,0.035269, + 0,1,0,0.773021,0,0.039488, + 0,1,0,0.801927,0,0.033143, + 0,1,0,0.773021,0,0.039488, + 0,1,0,0.796625,0,0.034321, + 0,1,0,0.796625,0,0.034321, + 0,1,0,0.773021,0,0.039488, + 0,1,0,0.786431,0,0.038696 +}; +static const struct gllist ships_ship6_frame = { + GL_N3F_V3F, GL_TRIANGLES, 171, ships_ship6_data, 0 +}; +const struct gllist *ships_ship6 = &ships_ship6_frame; + +static const float ships_ship7_data[] = { + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.014324,0,-0.091298, + 0,1,0,0.008486,0,0.067418, + 0,1,0,0.622021,0,0.158469, + 0,1,0,0.618682,0,0.141172, + 0,1,0,0.616974,0,0.153637, + 0,1,0,0.668086,0,0.19311, + 0,1,0,0.622021,0,0.185792, + 0,1,0,0.618171,0,0.193377, + 0,1,0,0.622021,0,0.185792, + 0,1,0,0.668086,0,0.19311, + 0,1,0,0.622021,0,0.158469, + 0,1,0,0.622021,0,0.158469, + 0,1,0,0.668086,0,0.19311, + 0,1,0,0.656931,0,0.083623, + 0,1,0,0.656931,0,0.083623, + 0,1,0,0.668086,0,0.19311, + 0,1,0,0.668588,0,0.191766, + 0,1,0,0.609389,0,0.079131, + 0,1,0,0.656931,0,0.083623, + 0,1,0,0.597457,0,0.051725, + 0,1,0,0.656931,0,0.083623, + 0,1,0,0.609389,0,0.079131, + 0,1,0,0.618682,0,0.141172, + 0,1,0,0.656931,0,0.083623, + 0,1,0,0.618682,0,0.141172, + 0,1,0,0.622021,0,0.158469, + 0,1,0,0.120954,0,0.083755, + 0,1,0,0.13173,0,0.077601, + 0,1,0,0.116971,0,0.077939, + 0,1,0,0.13173,0,0.077601, + 0,1,0,0.120954,0,0.083755, + 0,1,0,0.132081,0,0.085502, + 0,1,0,0.284714,0,0.077601, + 0,1,0,0.327336,0,-0.097558, + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.327336,0,-0.097558, + 0,1,0,0.284714,0,0.077601, + 0,1,0,0.315366,0,0.092546, + 0,1,0,0.327336,0,-0.097558, + 0,1,0,0.315366,0,0.092546, + 0,1,0,0.317931,0,0.120779, + 0,1,0,0.327336,0,-0.097558, + 0,1,0,0.317931,0,0.120779, + 0,1,0,0.330962,0,0.131536, + 0,1,0,0.327336,0,-0.097558, + 0,1,0,0.330962,0,0.131536, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.330962,0,0.131536, + 0,1,0,0.34539,0,0.136116, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.34539,0,0.136116, + 0,1,0,0.348844,0,0.131725, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.348844,0,0.131725, + 0,1,0,0.355564,0,0.134282, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.355564,0,0.134282, + 0,1,0,0.362675,0,0.139519, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.362675,0,0.139519, + 0,1,0,0.367321,0,0.138882, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.367321,0,0.138882, + 0,1,0,0.37021,0,0.158014, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.37021,0,0.158014, + 0,1,0,0.377344,0,0.138085, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.377344,0,0.138085, + 0,1,0,0.428914,0,0.138503, + 0,1,0,0.428914,0,0.138503, + 0,1,0,0.377344,0,0.138085, + 0,1,0,0.418305,0,0.141517, + 0,1,0,0.009607,0,0.075536, + 0,1,0,0.000711,0,0.067906, + 0,1,0,0,0,0.069294, + 0,1,0,0.000711,0,0.067906, + 0,1,0,0.009607,0,0.075536, + 0,1,0,0.008486,0,0.067418, + 0,1,0,0.008486,0,0.067418, + 0,1,0,0.009607,0,0.075536, + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.009607,0,0.075536, + 0,1,0,0.041213,0,0.073473, + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.041213,0,0.073473, + 0,1,0,0.086238,0,0.074943, + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.086238,0,0.074943, + 0,1,0,0.096676,0,0.077939, + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.096676,0,0.077939, + 0,1,0,0.116971,0,0.077939, + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.116971,0,0.077939, + 0,1,0,0.13173,0,0.077601, + 0,1,0,0.17083,0,-0.094428, + 0,1,0,0.13173,0,0.077601, + 0,1,0,0.284714,0,0.077601, + 0,1,0,0.287798,0,0.099437, + 0,1,0,0.284714,0,0.077601, + 0,1,0,0.281269,0,0.098363, + 0,1,0,0.284714,0,0.077601, + 0,1,0,0.287798,0,0.099437, + 0,1,0,0.290717,0,0.092546, + 0,1,0,0.284714,0,0.077601, + 0,1,0,0.290717,0,0.092546, + 0,1,0,0.315366,0,0.092546, + 0,1,0,0.245353,0,0.230555, + 0,1,0,0.311617,0,0.103912, + 0,1,0,0.245351,0,0.225658, + 0,1,0,0.311617,0,0.103912, + 0,1,0,0.245353,0,0.230555, + 0,1,0,0.315583,0,0.110485, + 0,1,0,0.311617,0,0.103912, + 0,1,0,0.315583,0,0.110485, + 0,1,0,0.315366,0,0.092546, + 0,1,0,0.315366,0,0.092546, + 0,1,0,0.315583,0,0.110485, + 0,1,0,0.317931,0,0.120779, + 0,1,0,0.317931,0,0.120779, + 0,1,0,0.315583,0,0.110485, + 0,1,0,0.316521,0,0.120995, + 0,1,0,0.332508,0,0.260412, + 0,1,0,0.331132,0,0.250756, + 0,1,0,0.327441,0,0.260681, + 0,1,0,0.330962,0,0.131536, + 0,1,0,0.317931,0,0.120779, + 0,1,0,0.328331,0,0.211178, + 0,1,0,0.340791,0,0.338854, + 0,1,0,0.338533,0,0.299547, + 0,1,0,0.329553,0,0.330834, + 0,1,0,0.345635,0,0.395783, + 0,1,0,0.314718,0,0.384075, + 0,1,0,0.313951,0,0.386601, + 0,1,0,0.314718,0,0.384075, + 0,1,0,0.345635,0,0.395783, + 0,1,0,0.345113,0,0.39162, + 0,1,0,0.327947,0,0.216964, + 0,1,0,0.267365,0,0.206311, + 0,1,0,0.26709,0,0.20931, + 0,1,0,0.267365,0,0.206311, + 0,1,0,0.327947,0,0.216964, + 0,1,0,0.328331,0,0.211178, + 0,1,0,0.328331,0,0.211178, + 0,1,0,0.327947,0,0.216964, + 0,1,0,0.331132,0,0.250756, + 0,1,0,0.328331,0,0.211178, + 0,1,0,0.331132,0,0.250756, + 0,1,0,0.330962,0,0.131536, + 0,1,0,0.330962,0,0.131536, + 0,1,0,0.331132,0,0.250756, + 0,1,0,0.33706,0,0.213894, + 0,1,0,0.33706,0,0.213894, + 0,1,0,0.331132,0,0.250756, + 0,1,0,0.332508,0,0.260412, + 0,1,0,0.33706,0,0.213894, + 0,1,0,0.332508,0,0.260412, + 0,1,0,0.338533,0,0.299547, + 0,1,0,0.33706,0,0.213894, + 0,1,0,0.338533,0,0.299547, + 0,1,0,0.337814,0,0.218526, + 0,1,0,0.337814,0,0.218526, + 0,1,0,0.338533,0,0.299547, + 0,1,0,0.342221,0,0.274447, + 0,1,0,0.342221,0,0.274447, + 0,1,0,0.338533,0,0.299547, + 0,1,0,0.341927,0,0.280776, + 0,1,0,0.341927,0,0.280776, + 0,1,0,0.338533,0,0.299547, + 0,1,0,0.340791,0,0.338854, + 0,1,0,0.342221,0,0.274447, + 0,1,0,0.341927,0,0.280776, + 0,1,0,0.39956,0,0.285924, + 0,1,0,0.342221,0,0.274447, + 0,1,0,0.39956,0,0.285924, + 0,1,0,0.453565,0,0.289694, + 0,1,0,0.453565,0,0.289694, + 0,1,0,0.39956,0,0.285924, + 0,1,0,0.407973,0,0.28984, + 0,1,0,0.407973,0,0.28984, + 0,1,0,0.39956,0,0.285924, + 0,1,0,0.401022,0,0.293318, + 0,1,0,0.407973,0,0.28984, + 0,1,0,0.401022,0,0.293318, + 0,1,0,0.407039,0,0.296757, + 0,1,0,0.453565,0,0.289694, + 0,1,0,0.407973,0,0.28984, + 0,1,0,0.459932,0,0.294641, + 0,1,0,0.453565,0,0.289694, + 0,1,0,0.459932,0,0.294641, + 0,1,0,0.460649,0,0.292436, + 0,1,0,0.345113,0,0.39162, + 0,1,0,0.341927,0,0.280776, + 0,1,0,0.340791,0,0.338854, + 0,1,0,0.341927,0,0.280776, + 0,1,0,0.345113,0,0.39162, + 0,1,0,0.346201,0,0.35631, + 0,1,0,0.346201,0,0.35631, + 0,1,0,0.345113,0,0.39162, + 0,1,0,0.345635,0,0.395783, + 0,1,0,0.346201,0,0.35631, + 0,1,0,0.345635,0,0.395783, + 0,1,0,0.347948,0,0.411892, + 0,1,0,0.346201,0,0.35631, + 0,1,0,0.347948,0,0.411892, + 0,1,0,0.347402,0,0.391374, + 0,1,0,0.347402,0,0.391374, + 0,1,0,0.347948,0,0.411892, + 0,1,0,0.350552,0,0.396948, + 0,1,0,0.347402,0,0.391374, + 0,1,0,0.350552,0,0.396948, + 0,1,0,0.382114,0,0.401417, + 0,1,0,0.382114,0,0.401417, + 0,1,0,0.350552,0,0.396948, + 0,1,0,0.381306,0,0.404196, + 0,1,0,0.349356,0,0.370527, + 0,1,0,0.346201,0,0.35631, + 0,1,0,0.347402,0,0.391374, + 0,1,0,0.385815,0,0.249062, + 0,1,0,0.390794,0,0.225064, + 0,1,0,0.380095,0,0.243782, + 0,1,0,0.390794,0,0.225064, + 0,1,0,0.385815,0,0.249062, + 0,1,0,0.43745,0,0.149593, + 0,1,0,0.390794,0,0.225064, + 0,1,0,0.43745,0,0.149593, + 0,1,0,0.393313,0,0.220564, + 0,1,0,0.393313,0,0.220564, + 0,1,0,0.43745,0,0.149593, + 0,1,0,0.430713,0,0.148117, + 0,1,0,0.337814,0,0.218526, + 0,1,0,0.393313,0,0.220564, + 0,1,0,0.33706,0,0.213894, + 0,1,0,0.393313,0,0.220564, + 0,1,0,0.337814,0,0.218526, + 0,1,0,0.390794,0,0.225064, + 0,1,0,0.36139,0,0.170056, + 0,1,0,0.362675,0,0.139519, + 0,1,0,0.355564,0,0.134282, + 0,1,0,0.362675,0,0.139519, + 0,1,0,0.36139,0,0.170056, + 0,1,0,0.364485,0,0.169719, + 0,1,0,0.46663,0,0.27632, + 0,1,0,0.46013,0,0.257261, + 0,1,0,0.458352,0,0.27632, + 0,1,0,0.467463,0,0.329531, + 0,1,0,0.47107,0,0.29969, + 0,1,0,0.465354,0,0.329827, + 0,1,0,0.47107,0,0.29969, + 0,1,0,0.467463,0,0.329531, + 0,1,0,0.473423,0,0.35107, + 0,1,0,0.485465,0,0.322943, + 0,1,0,0.477384,0,0.305137, + 0,1,0,0.476383,0,0.327431, + 0,1,0,0.477384,0,0.305137, + 0,1,0,0.485465,0,0.322943, + 0,1,0,0.528435,0,0.306428, + 0,1,0,0.528435,0,0.306428, + 0,1,0,0.485465,0,0.322943, + 0,1,0,0.520583,0,0.315234, + 0,1,0,0.475946,0,0.372381, + 0,1,0,0.473423,0,0.35107, + 0,1,0,0.468659,0,0.37335, + 0,1,0,0.473423,0,0.35107, + 0,1,0,0.475946,0,0.372381, + 0,1,0,0.475869,0,0.279193, + 0,1,0,0.475869,0,0.279193, + 0,1,0,0.475946,0,0.372381, + 0,1,0,0.476383,0,0.327431, + 0,1,0,0.475869,0,0.279193, + 0,1,0,0.476383,0,0.327431, + 0,1,0,0.477384,0,0.305137, + 0,1,0,0.475869,0,0.279193, + 0,1,0,0.477384,0,0.305137, + 0,1,0,0.486025,0,0.280547, + 0,1,0,0.486025,0,0.280547, + 0,1,0,0.477384,0,0.305137, + 0,1,0,0.483949,0,0.293936, + 0,1,0,0.47107,0,0.29969, + 0,1,0,0.46663,0,0.27632, + 0,1,0,0.463702,0,0.296102, + 0,1,0,0.46663,0,0.27632, + 0,1,0,0.47107,0,0.29969, + 0,1,0,0.468552,0,0.139316, + 0,1,0,0.468552,0,0.139316, + 0,1,0,0.47107,0,0.29969, + 0,1,0,0.475869,0,0.279193, + 0,1,0,0.475869,0,0.279193, + 0,1,0,0.47107,0,0.29969, + 0,1,0,0.473423,0,0.35107, + 0,1,0,0.46013,0,0.257261, + 0,1,0,0.468552,0,0.139316, + 0,1,0,0.456111,0,0.138352, + 0,1,0,0.468552,0,0.139316, + 0,1,0,0.46013,0,0.257261, + 0,1,0,0.46663,0,0.27632, + 0,1,0,0.477848,0,0.418978, + 0,1,0,0.442748,0,0.408702, + 0,1,0,0.44226,0,0.411925, + 0,1,0,0.442748,0,0.408702, + 0,1,0,0.477848,0,0.418978, + 0,1,0,0.475946,0,0.413137, + 0,1,0,0.475946,0,0.413137, + 0,1,0,0.477848,0,0.418978, + 0,1,0,0.475946,0,0.372381, + 0,1,0,0.475946,0,0.372381, + 0,1,0,0.477848,0,0.418978, + 0,1,0,0.476383,0,0.327431, + 0,1,0,0.476383,0,0.327431, + 0,1,0,0.477848,0,0.418978, + 0,1,0,0.478415,0,0.336819, + 0,1,0,0.478415,0,0.336819, + 0,1,0,0.477848,0,0.418978, + 0,1,0,0.480807,0,0.438935, + 0,1,0,0.478415,0,0.336819, + 0,1,0,0.480807,0,0.438935, + 0,1,0,0.480645,0,0.413861, + 0,1,0,0.480645,0,0.413861, + 0,1,0,0.480807,0,0.438935, + 0,1,0,0.482457,0,0.419142, + 0,1,0,0.480645,0,0.413861, + 0,1,0,0.482457,0,0.419142, + 0,1,0,0.518255,0,0.421079, + 0,1,0,0.482457,0,0.419142, + 0,1,0,0.480807,0,0.438935, + 0,1,0,0.482457,0,0.438748, + 0,1,0,0.518255,0,0.421079, + 0,1,0,0.482457,0,0.419142, + 0,1,0,0.517782,0,0.423624, + 0,1,0,0.478415,0,0.336819, + 0,1,0,0.480966,0,0.371794, + 0,1,0,0.488375,0,0.340838, + 0,1,0,0.480966,0,0.371794, + 0,1,0,0.478415,0,0.336819, + 0,1,0,0.480645,0,0.413861, + 0,1,0,0.488375,0,0.340838, + 0,1,0,0.480966,0,0.371794, + 0,1,0,0.487638,0,0.351236, + 0,1,0,0.468552,0,0.139316, + 0,1,0,0.478574,0,0.146831, + 0,1,0,0.500967,0,0.138201, + 0,1,0,0.478574,0,0.146831, + 0,1,0,0.468552,0,0.139316, + 0,1,0,0.474716,0,0.16388, + 0,1,0,0.478574,0,0.146831, + 0,1,0,0.474716,0,0.16388, + 0,1,0,0.477013,0,0.163688, + 0,1,0,0.500967,0,0.138201, + 0,1,0,0.478574,0,0.146831, + 0,1,0,0.486654,0,0.154293, + 0,1,0,0.500967,0,0.138201, + 0,1,0,0.486654,0,0.154293, + 0,1,0,0.496634,0,0.150891, + 0,1,0,0.524782,0,0.213734, + 0,1,0,0.523887,0,0.186165, + 0,1,0,0.519853,0,0.206749, + 0,1,0,0.523887,0,0.186165, + 0,1,0,0.520443,0,0.136372, + 0,1,0,0.520309,0,0.15512, + 0,1,0,0.520443,0,0.136372, + 0,1,0,0.523887,0,0.186165, + 0,1,0,0.572047,0,0.202588, + 0,1,0,0.572047,0,0.202588, + 0,1,0,0.523887,0,0.186165, + 0,1,0,0.524782,0,0.213734, + 0,1,0,0.572047,0,0.202588, + 0,1,0,0.524782,0,0.213734, + 0,1,0,0.574691,0,0.213144, + 0,1,0,0.572047,0,0.202588, + 0,1,0,0.574691,0,0.213144, + 0,1,0,0.57819,0,0.2068, + 0,1,0,0.520443,0,0.136372, + 0,1,0,0.569256,0,0.178476, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.569256,0,0.178476, + 0,1,0,0.520443,0,0.136372, + 0,1,0,0.572047,0,0.202588, + 0,1,0,0.5725,0,0.174129, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.569256,0,0.178476, + 0,1,0,0.428914,0,0.138503, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.428914,0,0.138503, + 0,1,0,0.456111,0,0.138352, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.456111,0,0.138352, + 0,1,0,0.468552,0,0.139316, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.468552,0,0.139316, + 0,1,0,0.500967,0,0.138201, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.500967,0,0.138201, + 0,1,0,0.520443,0,0.136372, + 0,1,0,0.597457,0,0.051725, + 0,1,0,0.694309,0,-0.093781, + 0,1,0,0.596177,0,0.051864, + 0,1,0,0.694309,0,-0.093781, + 0,1,0,0.597457,0,0.051725, + 0,1,0,0.656931,0,0.083623, + 0,1,0,0.694309,0,-0.093781, + 0,1,0,0.656931,0,0.083623, + 0,1,0,0.666578,0,0.083623, + 0,1,0,0.694309,0,-0.093781, + 0,1,0,0.666578,0,0.083623, + 0,1,0,0.683404,0,0.087819, + 0,1,0,0.694309,0,-0.093781, + 0,1,0,0.683404,0,0.087819, + 0,1,0,0.695292,0,0.090379, + 0,1,0,0.694309,0,-0.093781, + 0,1,0,0.695292,0,0.090379, + 0,1,0,0.798565,0,-0.08952, + 0,1,0,0.798565,0,-0.08952, + 0,1,0,0.695292,0,0.090379, + 0,1,0,0.770867,0,0.070277, + 0,1,0,0.798565,0,-0.08952, + 0,1,0,0.770867,0,0.070277, + 0,1,0,0.790788,0,0.064708, + 0,1,0,0.798565,0,-0.08952, + 0,1,0,0.790788,0,0.064708, + 0,1,0,0.811472,0,0.062538, + 0,1,0,0.674737,0,0.116819, + 0,1,0,0.669179,0,0.104053, + 0,1,0,0.66632,0,0.109728, + 0,1,0,0.669179,0,0.104053, + 0,1,0,0.666578,0,0.083623, + 0,1,0,0.663318,0,0.09943, + 0,1,0,0.666578,0,0.083623, + 0,1,0,0.669179,0,0.104053, + 0,1,0,0.683404,0,0.087819, + 0,1,0,0.683404,0,0.087819, + 0,1,0,0.669179,0,0.104053, + 0,1,0,0.674737,0,0.116819, + 0,1,0,0.683404,0,0.087819, + 0,1,0,0.674737,0,0.116819, + 0,1,0,0.682157,0,0.113373, + 0,1,0,0.740263,0,0.3376, + 0,1,0,0.717651,0,0.327031, + 0,1,0,0.698159,0,0.328757, + 0,1,0,0.717651,0,0.327031, + 0,1,0,0.740263,0,0.3376, + 0,1,0,0.739514,0,0.330799, + 0,1,0,0.746733,0,0.349037, + 0,1,0,0.742502,0,0.228901, + 0,1,0,0.740263,0,0.3376, + 0,1,0,0.742502,0,0.228901, + 0,1,0,0.746733,0,0.349037, + 0,1,0,0.747104,0,0.331665, + 0,1,0,0.747104,0,0.331665, + 0,1,0,0.746733,0,0.349037, + 0,1,0,0.747255,0,0.337924, + 0,1,0,0.747104,0,0.331665, + 0,1,0,0.747255,0,0.337924, + 0,1,0,0.788766,0,0.335619, + 0,1,0,0.788766,0,0.335619, + 0,1,0,0.747255,0,0.337924, + 0,1,0,0.786613,0,0.341369, + 0,1,0,0.734225,0,0.221566, + 0,1,0,0.717701,0,0.212449, + 0,1,0,0.716987,0,0.217392, + 0,1,0,0.717701,0,0.212449, + 0,1,0,0.734225,0,0.221566, + 0,1,0,0.727255,0,0.210387, + 0,1,0,0.727255,0,0.210387, + 0,1,0,0.734225,0,0.221566, + 0,1,0,0.729666,0,0.180357, + 0,1,0,0.729666,0,0.180357, + 0,1,0,0.734225,0,0.221566, + 0,1,0,0.733489,0,0.097134, + 0,1,0,0.733489,0,0.097134, + 0,1,0,0.734225,0,0.221566, + 0,1,0,0.738759,0,0.212174, + 0,1,0,0.738759,0,0.212174, + 0,1,0,0.734225,0,0.221566, + 0,1,0,0.739514,0,0.330799, + 0,1,0,0.738759,0,0.212174, + 0,1,0,0.739514,0,0.330799, + 0,1,0,0.742502,0,0.228901, + 0,1,0,0.738759,0,0.212174, + 0,1,0,0.742502,0,0.228901, + 0,1,0,0.750578,0,0.219996, + 0,1,0,0.742502,0,0.228901, + 0,1,0,0.739514,0,0.330799, + 0,1,0,0.740263,0,0.3376, + 0,1,0,0.750578,0,0.219996, + 0,1,0,0.742502,0,0.228901, + 0,1,0,0.748683,0,0.227909, + 0,1,0,0.703808,0,0.097401, + 0,1,0,0.695292,0,0.090379, + 0,1,0,0.694034,0,0.097401, + 0,1,0,0.695292,0,0.090379, + 0,1,0,0.703808,0,0.097401, + 0,1,0,0.719793,0,0.090445, + 0,1,0,0.695292,0,0.090379, + 0,1,0,0.719793,0,0.090445, + 0,1,0,0.770867,0,0.070277, + 0,1,0,0.719793,0,0.090445, + 0,1,0,0.703808,0,0.097401, + 0,1,0,0.707051,0,0.10343, + 0,1,0,0.719793,0,0.090445, + 0,1,0,0.707051,0,0.10343, + 0,1,0,0.71883,0,0.101826, + 0,1,0,0.770867,0,0.070277, + 0,1,0,0.719793,0,0.090445, + 0,1,0,0.725651,0,0.097121, + 0,1,0,0.770867,0,0.070277, + 0,1,0,0.725651,0,0.097121, + 0,1,0,0.733489,0,0.097134, + 0,1,0,0.733489,0,0.097134, + 0,1,0,0.725651,0,0.097121, + 0,1,0,0.729666,0,0.180357, + 0,1,0,0.770867,0,0.070277, + 0,1,0,0.733489,0,0.097134, + 0,1,0,0.745404,0,0.097732, + 0,1,0,0.770867,0,0.070277, + 0,1,0,0.745404,0,0.097732, + 0,1,0,0.770867,0,0.090136, + 0,1,0,0.795116,0,0.092, + 0,1,0,0.790788,0,0.064708, + 0,1,0,0.780926,0,0.089234, + 0,1,0,0.790788,0,0.064708, + 0,1,0,0.795116,0,0.092, + 0,1,0,0.811472,0,0.062538, + 0,1,0,0.811472,0,0.062538, + 0,1,0,0.839683,0,-0.0832, + 0,1,0,0.798565,0,-0.08952, + 0,1,0,0.839683,0,-0.0832, + 0,1,0,0.811472,0,0.062538, + 0,1,0,0.821874,0,0.066961, + 0,1,0,0.839683,0,-0.0832, + 0,1,0,0.821874,0,0.066961, + 0,1,0,0.824648,0,0.054798, + 0,1,0,0.839683,0,-0.0832, + 0,1,0,0.824648,0,0.054798, + 0,1,0,0.841015,0,0.05224, + 0,1,0,0.839683,0,-0.0832, + 0,1,0,0.841015,0,0.05224, + 0,1,0,0.873228,0,-0.082377, + 0,1,0,0.860183,0,0.056987, + 0,1,0,0.873228,0,-0.082377, + 0,1,0,0.841015,0,0.05224, + 0,1,0,0.873228,0,-0.082377, + 0,1,0,0.860183,0,0.056987, + 0,1,0,0.866568,0,0.058768, + 0,1,0,0.873228,0,-0.082377, + 0,1,0,0.866568,0,0.058768, + 0,1,0,0.914203,0,-0.088048, + 0,1,0,0.860315,0,0.058264, + 0,1,0,0.860183,0,0.056987, + 0,1,0,0.841015,0,0.05224, + 0,1,0,0.844083,0,0.132103, + 0,1,0,0.841015,0,0.05224, + 0,1,0,0.841015,0,0.131717, + 0,1,0,0.841015,0,0.05224, + 0,1,0,0.844083,0,0.132103, + 0,1,0,0.847015,0,0.061852, + 0,1,0,0.841015,0,0.05224, + 0,1,0,0.847015,0,0.061852, + 0,1,0,0.860315,0,0.058264, + 0,1,0,0.847015,0,0.061852, + 0,1,0,0.844083,0,0.132103, + 0,1,0,0.845568,0,0.125387, + 0,1,0,0.936557,0,0.052887, + 0,1,0,0.936486,0,0.00536, + 0,1,0,0.921574,0,0.072794, + 0,1,0,0.936486,0,0.00536, + 0,1,0,0.936557,0,0.052887, + 0,1,0,0.936557,0,0.027166, + 0,1,0,0.936486,0,0.00536, + 0,1,0,0.936557,0,0.027166, + 0,1,0,0.940124,0,0.021527, + 0,1,0,0.891583,0,0.060764, + 0,1,0,0.866568,0,0.058768, + 0,1,0,0.865717,0,0.063887, + 0,1,0,0.866568,0,0.058768, + 0,1,0,0.891583,0,0.060764, + 0,1,0,0.914203,0,-0.088048, + 0,1,0,0.914203,0,-0.088048, + 0,1,0,0.891583,0,0.060764, + 0,1,0,0.904169,0,0.074437, + 0,1,0,0.914203,0,-0.088048, + 0,1,0,0.904169,0,0.074437, + 0,1,0,0.911647,0,0.068036, + 0,1,0,0.914203,0,-0.088048, + 0,1,0,0.911647,0,0.068036, + 0,1,0,0.914909,0,0.074511, + 0,1,0,0.914203,0,-0.088048, + 0,1,0,0.914909,0,0.074511, + 0,1,0,0.941242,0,-0.028276, + 0,1,0,0.914203,0,-0.088048, + 0,1,0,0.941242,0,-0.028276, + 0,1,0,0.969736,0,-0.083885, + 0,1,0,0.941242,0,-0.028276, + 0,1,0,0.914909,0,0.074511, + 0,1,0,0.921574,0,0.072794, + 0,1,0,0.941242,0,-0.028276, + 0,1,0,0.921574,0,0.072794, + 0,1,0,0.936486,0,0.00536, + 0,1,0,0.988265,0,0.034438, + 0,1,0,0.940124,0,0.021527, + 0,1,0,0.936557,0,0.027166, + 0,1,0,0.940124,0,0.021527, + 0,1,0,0.988265,0,0.034438, + 0,1,0,0.988726,0,0.030608, + 0,1,0,0.936486,0,0.00536, + 0,1,0,0.944142,0,-0.00253, + 0,1,0,0.941242,0,-0.028276, + 0,1,0,0.944142,0,-0.00253, + 0,1,0,0.936486,0,0.00536, + 0,1,0,0.960369,0,0.001815, + 0,1,0,0.944142,0,-0.00253, + 0,1,0,0.960369,0,0.001815, + 0,1,0,0.960221,0,-0.000654, + 0,1,0,0.980908,0,-0.045793, + 0,1,0,0.975212,0,-0.050942, + 0,1,0,0.974361,0,-0.040383, + 0,1,0,0.941242,0,-0.028276, + 0,1,0,0.950727,0,-0.029415, + 0,1,0,0.969736,0,-0.083885, + 0,1,0,0.950727,0,-0.029415, + 0,1,0,0.941242,0,-0.028276, + 0,1,0,0.94791,0,-0.017538, + 0,1,0,0.950727,0,-0.029415, + 0,1,0,0.94791,0,-0.017538, + 0,1,0,0.949423,0,-0.017734, + 0,1,0,0.969736,0,-0.083885, + 0,1,0,0.950727,0,-0.029415, + 0,1,0,0.958398,0,-0.035904, + 0,1,0,0.969736,0,-0.083885, + 0,1,0,0.958398,0,-0.035904, + 0,1,0,0.963588,0,-0.026807, + 0,1,0,0.969736,0,-0.083885, + 0,1,0,0.963588,0,-0.026807, + 0,1,0,0.9736,0,-0.02933, + 0,1,0,0.969736,0,-0.083885, + 0,1,0,0.9736,0,-0.02933, + 0,1,0,0.974361,0,-0.040383, + 0,1,0,0.969736,0,-0.083885, + 0,1,0,0.974361,0,-0.040383, + 0,1,0,0.975212,0,-0.050942, + 0,1,0,0.969736,0,-0.083885, + 0,1,0,0.975212,0,-0.050942, + 0,1,0,0.978121,0,-0.065859, + 0,1,0,0.58558,0,0.077834, + 0,1,0,0.583383,0,0.057688, + 0,1,0,0.578541,0,0.071411, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.643211,0,-0.08754, + 0,1,0,0.37477,0,-0.091097, + 0,1,0,0.643211,0,-0.08754, + 0,1,0,0.560158,0,0.070785, + 0,1,0,0.581853,0,0.056878, + 0,1,0,0.643211,0,-0.08754, + 0,1,0,0.581853,0,0.056878, + 0,1,0,0.583383,0,0.057688, + 0,1,0,0.643211,0,-0.08754, + 0,1,0,0.583383,0,0.057688, + 0,1,0,0.58558,0,0.077834, + 0,1,0,0.643211,0,-0.08754, + 0,1,0,0.58558,0,0.077834, + 0,1,0,0.596177,0,0.051864, + 0,1,0,0.596177,0,0.051864, + 0,1,0,0.58558,0,0.077834, + 0,1,0,0.593621,0,0.073449, + 0,1,0,0.643211,0,-0.08754, + 0,1,0,0.596177,0,0.051864, + 0,1,0,0.694309,0,-0.093781 +}; +static const struct gllist ships_ship7_frame = { + GL_N3F_V3F, GL_TRIANGLES, 672, ships_ship7_data, 0 +}; +const struct gllist *ships_ship7 = &ships_ship7_frame; + +static const float ships_ship8_data[] = { + 0,1,0,0.005832,0,0.055975, + 0,1,0,0.003363,0,0.050178, + 0,1,0,0.002964,0,0.052735, + 0,1,0,0.02253,0,0.059668, + 0,1,0,0.010321,0,0.057502, + 0,1,0,0.010321,0,0.059668, + 0,1,0,0.010321,0,0.057502, + 0,1,0,0.02253,0,0.059668, + 0,1,0,0.011938,0,0.035003, + 0,1,0,0.011938,0,0.035003, + 0,1,0,0.02253,0,0.059668, + 0,1,0,0.02045,0,0.031007, + 0,1,0,0.02045,0,0.031007, + 0,1,0,0.02253,0,0.059668, + 0,1,0,0.022233,0,0.029468, + 0,1,0,0.022233,0,0.029468, + 0,1,0,0.02253,0,0.059668, + 0,1,0,0.023945,0,0.02295, + 0,1,0,0.023945,0,0.02295, + 0,1,0,0.02253,0,0.059668, + 0,1,0,0.024481,0,0.057055, + 0,1,0,0.023945,0,0.02295, + 0,1,0,0.024481,0,0.057055, + 0,1,0,0.0251,0,0.012782, + 0,1,0,0.0251,0,0.012782, + 0,1,0,0.024481,0,0.057055, + 0,1,0,0.026015,0,0.053784, + 0,1,0,0.0251,0,0.012782, + 0,1,0,0.026015,0,0.053784, + 0,1,0,0.028168,0,0.004866, + 0,1,0,0.028168,0,0.004866, + 0,1,0,0.026015,0,0.053784, + 0,1,0,0.028936,0,0.051351, + 0,1,0,0.028168,0,0.004866, + 0,1,0,0.028936,0,0.051351, + 0,1,0,0.044663,0,-0.019137, + 0,1,0,0.044663,0,-0.019137, + 0,1,0,0.028936,0,0.051351, + 0,1,0,0.033428,0,0.050917, + 0,1,0,0.044663,0,-0.019137, + 0,1,0,0.033428,0,0.050917, + 0,1,0,0.03541,0,0.049777, + 0,1,0,0.044663,0,-0.019137, + 0,1,0,0.03541,0,0.049777, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.044663,0,-0.019137, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.045996,0,-0.025663, + 0,1,0,0.045996,0,-0.025663, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.047669,0,-0.023914, + 0,1,0,0.047669,0,-0.023914, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.062945,0,-0.046148, + 0,1,0,0.062945,0,-0.046148, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.057326,0,0.049434, + 0,1,0,0.062945,0,-0.046148, + 0,1,0,0.057326,0,0.049434, + 0,1,0,0.073875,0,0.047148, + 0,1,0,0.047669,0,-0.023914, + 0,1,0,0.045011,0,-0.027703, + 0,1,0,0.045996,0,-0.025663, + 0,1,0,0.002434,0,0.045554, + 0,1,0,0.011938,0,0.035003, + 0,1,0,0.002202,0,0.042612, + 0,1,0,0.011938,0,0.035003, + 0,1,0,0.002434,0,0.045554, + 0,1,0,0.003363,0,0.050178, + 0,1,0,0.011938,0,0.035003, + 0,1,0,0.003363,0,0.050178, + 0,1,0,0.005832,0,0.055975, + 0,1,0,0.011938,0,0.035003, + 0,1,0,0.005832,0,0.055975, + 0,1,0,0.010321,0,0.057502, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.364378,0,0.128268, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.438902,0,-0.078115, + 0,1,0,0.438902,0,-0.078115, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.42304,0,0.142145, + 0,1,0,0.438902,0,-0.078115, + 0,1,0,0.42304,0,0.142145, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.438902,0,-0.078115, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.452409,0,-0.078112, + 0,1,0,0.452409,0,-0.078112, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.45572,0,-0.076151, + 0,1,0,0.036206,0,0.061696, + 0,1,0,0.03541,0,0.049777, + 0,1,0,0.033904,0,0.057269, + 0,1,0,0.03541,0,0.049777, + 0,1,0,0.036206,0,0.061696, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.036206,0,0.061696, + 0,1,0,0.043939,0,0.060872, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.043939,0,0.060872, + 0,1,0,0.049068,0,0.059312, + 0,1,0,0.052082,0,0.050568, + 0,1,0,0.049068,0,0.059312, + 0,1,0,0.051072,0,0.054396, + 0,1,0,0.072814,0,0.059976, + 0,1,0,0.072474,0,0.049213, + 0,1,0,0.070112,0,0.057303, + 0,1,0,0.072474,0,0.049213, + 0,1,0,0.072814,0,0.059976, + 0,1,0,0.07525,0,0.052979, + 0,1,0,0.07525,0,0.052979, + 0,1,0,0.072814,0,0.059976, + 0,1,0,0.075906,0,0.056689, + 0,1,0,0.058722,0,0.052729, + 0,1,0,0.073875,0,0.047148, + 0,1,0,0.057326,0,0.049434, + 0,1,0,0.073875,0,0.047148, + 0,1,0,0.058722,0,0.052729, + 0,1,0,0.059767,0,0.057637, + 0,1,0,0.073875,0,0.047148, + 0,1,0,0.059767,0,0.057637, + 0,1,0,0.062576,0,0.059836, + 0,1,0,0.073875,0,0.047148, + 0,1,0,0.062576,0,0.059836, + 0,1,0,0.072474,0,0.049213, + 0,1,0,0.072474,0,0.049213, + 0,1,0,0.062576,0,0.059836, + 0,1,0,0.070112,0,0.057303, + 0,1,0,0.073875,0,0.047148, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.062945,0,-0.046148, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.073875,0,0.047148, + 0,1,0,0.077211,0,0.046012, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.077211,0,0.046012, + 0,1,0,0.08503,0,0.046156, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.08503,0,0.046156, + 0,1,0,0.092167,0,0.045258, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.092167,0,0.045258, + 0,1,0,0.096503,0,0.046612, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.096503,0,0.046612, + 0,1,0,0.098793,0,0.043324, + 0,1,0,0.119348,0,0.043466, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.098793,0,0.043324, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.119348,0,0.043466, + 0,1,0,0.12502,0,0.040413, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.12502,0,0.040413, + 0,1,0,0.131056,0,0.037851, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.131056,0,0.037851, + 0,1,0,0.137656,0,0.037851, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.137656,0,0.037851, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.137656,0,0.037851, + 0,1,0,0.139518,0,0.038519, + 0,1,0,0.139518,0,0.038519, + 0,1,0,0.137656,0,0.037851, + 0,1,0,0.138069,0,0.040466, + 0,1,0,0.139518,0,0.038519, + 0,1,0,0.138069,0,0.040466, + 0,1,0,0.138791,0,0.04013, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.139518,0,0.038519, + 0,1,0,0.142802,0,0.039252, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.142802,0,0.039252, + 0,1,0,0.14614,0,0.039719, + 0,1,0,0.14614,0,0.039719, + 0,1,0,0.142802,0,0.039252, + 0,1,0,0.14388,0,0.04044, + 0,1,0,0.125341,0,0.043539, + 0,1,0,0.131056,0,0.037851, + 0,1,0,0.12502,0,0.040413, + 0,1,0,0.131056,0,0.037851, + 0,1,0,0.125341,0,0.043539, + 0,1,0,0.128161,0,0.043825, + 0,1,0,0.145652,0,0.052722, + 0,1,0,0.146904,0,0.041826, + 0,1,0,0.144617,0,0.046237, + 0,1,0,0.146904,0,0.041826, + 0,1,0,0.145652,0,0.052722, + 0,1,0,0.1479,0,0.055176, + 0,1,0,0.146904,0,0.041826, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.14614,0,0.039719, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.146904,0,0.041826, + 0,1,0,0.158948,0,0.040799, + 0,1,0,0.158948,0,0.040799, + 0,1,0,0.146904,0,0.041826, + 0,1,0,0.1479,0,0.055176, + 0,1,0,0.158948,0,0.040799, + 0,1,0,0.1479,0,0.055176, + 0,1,0,0.150072,0,0.053004, + 0,1,0,0.158948,0,0.040799, + 0,1,0,0.150072,0,0.053004, + 0,1,0,0.151217,0,0.055047, + 0,1,0,0.158948,0,0.040799, + 0,1,0,0.151217,0,0.055047, + 0,1,0,0.15571,0,0.055047, + 0,1,0,0.158948,0,0.040799, + 0,1,0,0.15571,0,0.055047, + 0,1,0,0.158149,0,0.046535, + 0,1,0,0.158149,0,0.046535, + 0,1,0,0.15571,0,0.055047, + 0,1,0,0.158105,0,0.050391, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.158948,0,0.040799, + 0,1,0,0.164424,0,0.045919, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.21016,0,0.039644, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.21016,0,0.039644, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.203635,0,0.039688, + 0,1,0,0.203635,0,0.039688, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.201135,0,0.040599, + 0,1,0,0.201135,0,0.040599, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.198876,0,0.044189, + 0,1,0,0.170685,0,0.041151, + 0,1,0,0.198876,0,0.044189, + 0,1,0,0.16306,0,0.038153, + 0,1,0,0.198876,0,0.044189, + 0,1,0,0.170685,0,0.041151, + 0,1,0,0.174519,0,0.043527, + 0,1,0,0.198876,0,0.044189, + 0,1,0,0.174519,0,0.043527, + 0,1,0,0.181947,0,0.046578, + 0,1,0,0.198876,0,0.044189, + 0,1,0,0.181947,0,0.046578, + 0,1,0,0.19086,0,0.046478, + 0,1,0,0.198876,0,0.044189, + 0,1,0,0.19086,0,0.046478, + 0,1,0,0.192825,0,0.048165, + 0,1,0,0.198876,0,0.044189, + 0,1,0,0.192825,0,0.048165, + 0,1,0,0.203826,0,0.070368, + 0,1,0,0.198876,0,0.044189, + 0,1,0,0.203826,0,0.070368, + 0,1,0,0.208131,0,0.070368, + 0,1,0,0.21016,0,0.039644, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.108166,0,-0.049511, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.21016,0,0.039644, + 0,1,0,0.211879,0,0.043758, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.211879,0,0.043758, + 0,1,0,0.214133,0,0.046343, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.214133,0,0.046343, + 0,1,0,0.217067,0,0.047303, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.217067,0,0.047303, + 0,1,0,0.220717,0,0.051314, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.220717,0,0.051314, + 0,1,0,0.22281,0,0.064939, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.22281,0,0.064939, + 0,1,0,0.22375,0,0.067435, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.22375,0,0.067435, + 0,1,0,0.223758,0,0.071907, + 0,1,0,0.27304,0,0.092137, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.223758,0,0.071907, + 0,1,0,0.414461,0,-0.072292, + 0,1,0,0.27304,0,0.092137, + 0,1,0,0.364378,0,0.128268, + 0,1,0,0.280165,0,0.133184, + 0,1,0,0.296022,0,0.116631, + 0,1,0,0.277564,0,0.132002, + 0,1,0,0.296022,0,0.116631, + 0,1,0,0.280165,0,0.133184, + 0,1,0,0.333437,0,0.135428, + 0,1,0,0.296022,0,0.116631, + 0,1,0,0.333437,0,0.135428, + 0,1,0,0.296022,0,0.111411, + 0,1,0,0.296022,0,0.111411, + 0,1,0,0.272364,0,0.103443, + 0,1,0,0.271875,0,0.104698, + 0,1,0,0.272364,0,0.103443, + 0,1,0,0.296022,0,0.111411, + 0,1,0,0.27304,0,0.092137, + 0,1,0,0.27304,0,0.092137, + 0,1,0,0.296022,0,0.111411, + 0,1,0,0.364378,0,0.128268, + 0,1,0,0.364378,0,0.128268, + 0,1,0,0.296022,0,0.111411, + 0,1,0,0.333437,0,0.135428, + 0,1,0,0.364378,0,0.128268, + 0,1,0,0.333437,0,0.135428, + 0,1,0,0.339306,0,0.140563, + 0,1,0,0.364378,0,0.128268, + 0,1,0,0.339306,0,0.140563, + 0,1,0,0.346191,0,0.144191, + 0,1,0,0.364378,0,0.128268, + 0,1,0,0.346191,0,0.144191, + 0,1,0,0.361782,0,0.130795, + 0,1,0,0.361782,0,0.130795, + 0,1,0,0.346191,0,0.144191, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.27304,0,0.092137, + 0,1,0,0.272185,0,0.097253, + 0,1,0,0.272364,0,0.103443, + 0,1,0,0.396131,0,0.201591, + 0,1,0,0.394287,0,0.192194, + 0,1,0,0.393804,0,0.200441, + 0,1,0,0.36561,0,0.142342, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.364378,0,0.128268, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.36561,0,0.142342, + 0,1,0,0.367505,0,0.14929, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.367505,0,0.14929, + 0,1,0,0.367521,0,0.190175, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.367521,0,0.190175, + 0,1,0,0.394287,0,0.192194, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.394287,0,0.192194, + 0,1,0,0.39762,0,0.192106, + 0,1,0,0.39762,0,0.192106, + 0,1,0,0.394287,0,0.192194, + 0,1,0,0.396131,0,0.201591, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.39762,0,0.192106, + 0,1,0,0.411441,0,0.192103, + 0,1,0,0.417031,0,0.142145, + 0,1,0,0.411441,0,0.192103, + 0,1,0,0.41751,0,0.189939, + 0,1,0,0.46729,0,0.156326, + 0,1,0,0.46455,0,0.14786, + 0,1,0,0.46391,0,0.154195, + 0,1,0,0.46455,0,0.14786, + 0,1,0,0.46729,0,0.156326, + 0,1,0,0.467188,0,0.151932, + 0,1,0,0.467188,0,0.151932, + 0,1,0,0.46729,0,0.156326, + 0,1,0,0.468792,0,0.153724, + 0,1,0,0.494957,0,0.142883, + 0,1,0,0.492192,0,0.138739, + 0,1,0,0.473771,0,0.142883, + 0,1,0,0.430244,0,0.148851, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.42304,0,0.142145, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.430244,0,0.148851, + 0,1,0,0.436776,0,0.145631, + 0,1,0,0.436776,0,0.145631, + 0,1,0,0.430244,0,0.148851, + 0,1,0,0.4303,0,0.152047, + 0,1,0,0.436776,0,0.145631, + 0,1,0,0.4303,0,0.152047, + 0,1,0,0.431657,0,0.154623, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.436776,0,0.145631, + 0,1,0,0.46087,0,0.143294, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.46087,0,0.143294, + 0,1,0,0.462544,0,0.148898, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.462544,0,0.148898, + 0,1,0,0.46455,0,0.14786, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.46455,0,0.14786, + 0,1,0,0.468291,0,0.149647, + 0,1,0,0.468291,0,0.149647, + 0,1,0,0.46455,0,0.14786, + 0,1,0,0.467188,0,0.151932, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.468291,0,0.149647, + 0,1,0,0.470539,0,0.149639, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.470539,0,0.149639, + 0,1,0,0.473771,0,0.142883, + 0,1,0,0.473771,0,0.142883, + 0,1,0,0.470539,0,0.149639, + 0,1,0,0.472711,0,0.147588, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.473771,0,0.142883, + 0,1,0,0.492192,0,0.138739, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.554376,0,-0.083574, + 0,1,0,0.45572,0,-0.076151, + 0,1,0,0.554376,0,-0.083574, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.554376,0,-0.083574, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.654247,0,0.015187, + 0,1,0,0.502776,0,0.108696, + 0,1,0,0.501788,0,0.10362, + 0,1,0,0.495229,0,0.109265, + 0,1,0,0.520624,0,0.103177, + 0,1,0,0.512293,0,0.098887, + 0,1,0,0.511027,0,0.103177, + 0,1,0,0.525775,0,0.103226, + 0,1,0,0.525756,0,0.097929, + 0,1,0,0.523115,0,0.103226, + 0,1,0,0.573637,0,0.088855, + 0,1,0,0.558207,0,0.086926, + 0,1,0,0.528723,0,0.087979, + 0,1,0,0.558207,0,0.086926, + 0,1,0,0.573637,0,0.088855, + 0,1,0,0.571308,0,0.086919, + 0,1,0,0.604955,0,0.07973, + 0,1,0,0.603117,0,0.073276, + 0,1,0,0.601069,0,0.081537, + 0,1,0,0.603117,0,0.073276, + 0,1,0,0.604955,0,0.07973, + 0,1,0,0.60802,0,0.073309, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.509626,0,0.097197, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.509626,0,0.097197, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.501788,0,0.10362, + 0,1,0,0.501788,0,0.10362, + 0,1,0,0.492192,0,0.102364, + 0,1,0,0.495229,0,0.109265, + 0,1,0,0.509626,0,0.097197, + 0,1,0,0.501788,0,0.10362, + 0,1,0,0.506596,0,0.10335, + 0,1,0,0.509626,0,0.097197, + 0,1,0,0.506596,0,0.10335, + 0,1,0,0.509379,0,0.098989, + 0,1,0,0.509379,0,0.098989, + 0,1,0,0.506596,0,0.10335, + 0,1,0,0.509367,0,0.100434, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.509626,0,0.097197, + 0,1,0,0.528723,0,0.087979, + 0,1,0,0.528723,0,0.087979, + 0,1,0,0.509626,0,0.097197, + 0,1,0,0.512293,0,0.098887, + 0,1,0,0.528723,0,0.087979, + 0,1,0,0.512293,0,0.098887, + 0,1,0,0.522474,0,0.099087, + 0,1,0,0.522474,0,0.099087, + 0,1,0,0.512293,0,0.098887, + 0,1,0,0.520624,0,0.103177, + 0,1,0,0.528723,0,0.087979, + 0,1,0,0.522474,0,0.099087, + 0,1,0,0.523115,0,0.103226, + 0,1,0,0.528723,0,0.087979, + 0,1,0,0.523115,0,0.103226, + 0,1,0,0.525756,0,0.097929, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.528723,0,0.087979, + 0,1,0,0.559466,0,0.085046, + 0,1,0,0.559466,0,0.085046, + 0,1,0,0.528723,0,0.087979, + 0,1,0,0.558207,0,0.086926, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.559466,0,0.085046, + 0,1,0,0.569292,0,0.083154, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.569292,0,0.083154, + 0,1,0,0.577201,0,0.080132, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.577201,0,0.080132, + 0,1,0,0.579331,0,0.083338, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.579331,0,0.083338, + 0,1,0,0.580957,0,0.082369, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.580957,0,0.082369, + 0,1,0,0.587377,0,0.083066, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.587377,0,0.083066, + 0,1,0,0.603117,0,0.068976, + 0,1,0,0.603117,0,0.068976, + 0,1,0,0.587377,0,0.083066, + 0,1,0,0.59551,0,0.082918, + 0,1,0,0.603117,0,0.068976, + 0,1,0,0.59551,0,0.082918, + 0,1,0,0.601069,0,0.081537, + 0,1,0,0.603117,0,0.068976, + 0,1,0,0.601069,0,0.081537, + 0,1,0,0.603117,0,0.073276, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.603117,0,0.068976, + 0,1,0,0.618127,0,0.067729, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.618127,0,0.067729, + 0,1,0,0.63036,0,0.064661, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.63036,0,0.064661, + 0,1,0,0.644519,0,0.053387, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.644519,0,0.053387, + 0,1,0,0.647455,0,0.043469, + 0,1,0,0.647455,0,0.043469, + 0,1,0,0.644519,0,0.053387, + 0,1,0,0.646258,0,0.049809, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.647455,0,0.043469, + 0,1,0,0.650701,0,0.037636, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.650701,0,0.037636, + 0,1,0,0.653033,0,0.035305, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.653033,0,0.035305, + 0,1,0,0.654069,0,0.029472, + 0,1,0,0.655501,0,0.016428, + 0,1,0,0.654247,0,0.015187, + 0,1,0,0.654112,0,0.015207, + 0,1,0,0.945366,0,-0.037253, + 0,1,0,0.943627,0,-0.044241, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.860413,0,-0.101142, + 0,1,0,0.814871,0,-0.103174, + 0,1,0,0.860413,0,-0.101142, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.94546,0,-0.104852, + 0,1,0,0.94546,0,-0.104852, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.943627,0,-0.044241, + 0,1,0,0.675281,0,0.011748, + 0,1,0,0.814871,0,-0.103174, + 0,1,0,0.669576,0,0.012951, + 0,1,0,0.814871,0,-0.103174, + 0,1,0,0.675281,0,0.011748, + 0,1,0,0.827887,0,0.032351, + 0,1,0,0.814871,0,-0.103174, + 0,1,0,0.827887,0,0.032351, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.827887,0,0.032351, + 0,1,0,0.881549,0,0.0425, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.881549,0,0.0425, + 0,1,0,0.884461,0,0.043681, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.884461,0,0.043681, + 0,1,0,0.892484,0,0.045416, + 0,1,0,0.892484,0,0.045416, + 0,1,0,0.884461,0,0.043681, + 0,1,0,0.88951,0,0.046355, + 0,1,0,0.932523,0,0.067243, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.929184,0,0.060147, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.932523,0,0.067243, + 0,1,0,0.931834,0,0.058098, + 0,1,0,0.931834,0,0.058098, + 0,1,0,0.932523,0,0.067243, + 0,1,0,0.932515,0,0.061838, + 0,1,0,0.932515,0,0.061838, + 0,1,0,0.932523,0,0.067243, + 0,1,0,0.933892,0,0.064053, + 0,1,0,0.935665,0,0.058098, + 0,1,0,0.932778,0,0.053821, + 0,1,0,0.931834,0,0.058098, + 0,1,0,0.932778,0,0.053821, + 0,1,0,0.935665,0,0.058098, + 0,1,0,0.935665,0,0.054317, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.932778,0,0.053821, + 0,1,0,0.93821,0,0.052186, + 0,1,0,0.932778,0,0.053821, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.931834,0,0.058098, + 0,1,0,0.95718,0,0.097525, + 0,1,0,0.956297,0,0.088372, + 0,1,0,0.956137,0,0.091159, + 0,1,0,0.956297,0,0.088372, + 0,1,0,0.95718,0,0.097525, + 0,1,0,0.957079,0,0.084323, + 0,1,0,0.957079,0,0.084323, + 0,1,0,0.95718,0,0.097525, + 0,1,0,0.957195,0,0.055454, + 0,1,0,0.957195,0,0.055454, + 0,1,0,0.95718,0,0.097525, + 0,1,0,0.957651,0,0.104195, + 0,1,0,0.957195,0,0.055454, + 0,1,0,0.957651,0,0.104195, + 0,1,0,0.960891,0,0.055267, + 0,1,0,0.960891,0,0.055267, + 0,1,0,0.957651,0,0.104195, + 0,1,0,0.959009,0,0.097879, + 0,1,0,0.93821,0,0.052186, + 0,1,0,0.945366,0,-0.037253, + 0,1,0,0.931238,0,0.050966, + 0,1,0,0.945366,0,-0.037253, + 0,1,0,0.93821,0,0.052186, + 0,1,0,0.957195,0,0.055454, + 0,1,0,0.945366,0,-0.037253, + 0,1,0,0.957195,0,0.055454, + 0,1,0,0.972642,0,0.02864, + 0,1,0,0.972642,0,0.02864, + 0,1,0,0.957195,0,0.055454, + 0,1,0,0.960891,0,0.055267, + 0,1,0,0.972642,0,0.02864, + 0,1,0,0.960891,0,0.055267, + 0,1,0,0.985604,0,0.059894, + 0,1,0,0.972642,0,0.02864, + 0,1,0,0.985604,0,0.059894, + 0,1,0,0.988456,0,0.057791, + 0,1,0,0.988456,0,0.057791, + 0,1,0,0.985604,0,0.059894, + 0,1,0,0.987834,0,0.059485, + 0,1,0,0.654247,0,0.015187, + 0,1,0,0.814871,0,-0.103174, + 0,1,0,0.554376,0,-0.083574, + 0,1,0,0.814871,0,-0.103174, + 0,1,0,0.654247,0,0.015187, + 0,1,0,0.669576,0,0.012951, + 0,1,0,0.655501,0,0.016428, + 0,1,0,0.669576,0,0.012951, + 0,1,0,0.654247,0,0.015187, + 0,1,0,0.669576,0,0.012951, + 0,1,0,0.655501,0,0.016428, + 0,1,0,0.657185,0,0.02107, + 0,1,0,0.669576,0,0.012951, + 0,1,0,0.657185,0,0.02107, + 0,1,0,0.659916,0,0.02521, + 0,1,0,0.669576,0,0.012951, + 0,1,0,0.659916,0,0.02521, + 0,1,0,0.664177,0,0.020241, + 0,1,0,0.664177,0,0.020241, + 0,1,0,0.659916,0,0.02521, + 0,1,0,0.66073,0,0.026097, + 0,1,0,0.664177,0,0.020241, + 0,1,0,0.66073,0,0.026097, + 0,1,0,0.66237,0,0.026134, + 0,1,0,0.669576,0,0.012951, + 0,1,0,0.664177,0,0.020241, + 0,1,0,0.668157,0,0.021264, + 0,1,0,0.347066,0,0.549424, + 0,1,0,0.3464,0,0.534556, + 0,1,0,0.345213,0,0.547729, + 0,1,0,0.348058,0,0.418216, + 0,1,0,0.346981,0,0.41173, + 0,1,0,0.344483,0,0.413246, + 0,1,0,0.346981,0,0.41173, + 0,1,0,0.348058,0,0.418216, + 0,1,0,0.347565,0,0.40265, + 0,1,0,0.327308,0,0.536788, + 0,1,0,0.32919,0,0.535075, + 0,1,0,0.321335,0,0.537318, + 0,1,0,0.32919,0,0.535075, + 0,1,0,0.327308,0,0.536788, + 0,1,0,0.328188,0,0.5366, + 0,1,0,0.32919,0,0.535075, + 0,1,0,0.328188,0,0.5366, + 0,1,0,0.3464,0,0.534556, + 0,1,0,0.32919,0,0.535075, + 0,1,0,0.3464,0,0.534556, + 0,1,0,0.346293,0,0.532502, + 0,1,0,0.346293,0,0.532502, + 0,1,0,0.3464,0,0.534556, + 0,1,0,0.346334,0,0.471726, + 0,1,0,0.346334,0,0.471726, + 0,1,0,0.3464,0,0.534556, + 0,1,0,0.347276,0,0.465686, + 0,1,0,0.347276,0,0.465686, + 0,1,0,0.3464,0,0.534556, + 0,1,0,0.347066,0,0.549424, + 0,1,0,0.347276,0,0.465686, + 0,1,0,0.347066,0,0.549424, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.347066,0,0.549424, + 0,1,0,0.349227,0,0.547746, + 0,1,0,0.347276,0,0.465686, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.347278,0,0.458759, + 0,1,0,0.347278,0,0.458759, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.347293,0,0.42338, + 0,1,0,0.347293,0,0.42338, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.348058,0,0.418216, + 0,1,0,0.345815,0,0.388, + 0,1,0,0.347024,0,0.386769, + 0,1,0,0.345487,0,0.387331, + 0,1,0,0.347024,0,0.386769, + 0,1,0,0.345815,0,0.388, + 0,1,0,0.347565,0,0.40265, + 0,1,0,0.347024,0,0.386769, + 0,1,0,0.347565,0,0.40265, + 0,1,0,0.348186,0,0.347995, + 0,1,0,0.348186,0,0.347995, + 0,1,0,0.347565,0,0.40265, + 0,1,0,0.348058,0,0.418216, + 0,1,0,0.348186,0,0.347995, + 0,1,0,0.348058,0,0.418216, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.348186,0,0.347995, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.348219,0,0.515458, + 0,1,0,0.348219,0,0.515458, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.349188,0,0.531671, + 0,1,0,0.349188,0,0.531671, + 0,1,0,0.34814,0,0.533961, + 0,1,0,0.38184,0,0.527549, + 0,1,0,0.349188,0,0.531671, + 0,1,0,0.38184,0,0.527549, + 0,1,0,0.380546,0,0.52602, + 0,1,0,0.347221,0,0.339233, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.346151,0,0.335537, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.347221,0,0.339233, + 0,1,0,0.347364,0,0.342998, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.347364,0,0.342998, + 0,1,0,0.348186,0,0.347995, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.348186,0,0.347995, + 0,1,0,0.348219,0,0.515458, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.348219,0,0.515458, + 0,1,0,0.349153,0,0.508619, + 0,1,0,0.349278,0,0.501883, + 0,1,0,0.349188,0,0.496373, + 0,1,0,0.349153,0,0.508619, + 0,1,0,0.349188,0,0.496373, + 0,1,0,0.349278,0,0.501883, + 0,1,0,0.351564,0,0.493203, + 0,1,0,0.351564,0,0.493203, + 0,1,0,0.349278,0,0.501883, + 0,1,0,0.351549,0,0.496092, + 0,1,0,0.349237,0,0.470978, + 0,1,0,0.349203,0,0.461645, + 0,1,0,0.349188,0,0.496373, + 0,1,0,0.349203,0,0.461645, + 0,1,0,0.349237,0,0.470978, + 0,1,0,0.349729,0,0.465878, + 0,1,0,0.352189,0,0.414687, + 0,1,0,0.351043,0,0.412516, + 0,1,0,0.350152,0,0.418304, + 0,1,0,0.351043,0,0.412516, + 0,1,0,0.352189,0,0.414687, + 0,1,0,0.354741,0,0.41097, + 0,1,0,0.352609,0,0.387986, + 0,1,0,0.352082,0,0.381934, + 0,1,0,0.351117,0,0.39323, + 0,1,0,0.355774,0,0.331472, + 0,1,0,0.355466,0,0.329124, + 0,1,0,0.352095,0,0.363754, + 0,1,0,0.341708,0,0.323397, + 0,1,0,0.311235,0,0.324384, + 0,1,0,0.3097,0,0.326063, + 0,1,0,0.311235,0,0.324384, + 0,1,0,0.341708,0,0.323397, + 0,1,0,0.346191,0,0.320472, + 0,1,0,0.346191,0,0.320472, + 0,1,0,0.341708,0,0.323397, + 0,1,0,0.345765,0,0.324132, + 0,1,0,0.346191,0,0.320472, + 0,1,0,0.345765,0,0.324132, + 0,1,0,0.347876,0,0.322954, + 0,1,0,0.346191,0,0.320472, + 0,1,0,0.347876,0,0.322954, + 0,1,0,0.346191,0,0.144191, + 0,1,0,0.346191,0,0.144191, + 0,1,0,0.347876,0,0.322954, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.347876,0,0.322954, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.350152,0,0.418304, + 0,1,0,0.350152,0,0.418304, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.349203,0,0.461645, + 0,1,0,0.349203,0,0.461645, + 0,1,0,0.348223,0,0.336993, + 0,1,0,0.349153,0,0.508619, + 0,1,0,0.349203,0,0.461645, + 0,1,0,0.349153,0,0.508619, + 0,1,0,0.349188,0,0.496373, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.350152,0,0.418304, + 0,1,0,0.351117,0,0.39323, + 0,1,0,0.351117,0,0.39323, + 0,1,0,0.350152,0,0.418304, + 0,1,0,0.351043,0,0.412516, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.351117,0,0.39323, + 0,1,0,0.352095,0,0.363754, + 0,1,0,0.352095,0,0.363754, + 0,1,0,0.351117,0,0.39323, + 0,1,0,0.352082,0,0.381934, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.352095,0,0.363754, + 0,1,0,0.355481,0,0.327095, + 0,1,0,0.355481,0,0.327095, + 0,1,0,0.352095,0,0.363754, + 0,1,0,0.355466,0,0.329124, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.355481,0,0.327095, + 0,1,0,0.35597,0,0.324825, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.35597,0,0.324825, + 0,1,0,0.357392,0,0.322493, + 0,1,0,0.358829,0,0.141179, + 0,1,0,0.357392,0,0.322493, + 0,1,0,0.358837,0,0.319339, + 0,1,0,0.358837,0,0.319339, + 0,1,0,0.357392,0,0.322493, + 0,1,0,0.393191,0,0.319422, + 0,1,0,0.358837,0,0.319339, + 0,1,0,0.393191,0,0.319422, + 0,1,0,0.396476,0,0.31792, + 0,1,0,0.347293,0,0.42338, + 0,1,0,0.346836,0,0.454548, + 0,1,0,0.347278,0,0.458759, + 0,1,0,0.346981,0,0.41173, + 0,1,0,0.34676,0,0.408074, + 0,1,0,0.343807,0,0.406572, + 0,1,0,0.34676,0,0.408074, + 0,1,0,0.346981,0,0.41173, + 0,1,0,0.347565,0,0.40265 +}; +static const struct gllist ships_ship8_frame = { + GL_N3F_V3F, GL_TRIANGLES, 837, ships_ship8_data, 0 +}; +const struct gllist *ships_ship8 = &ships_ship8_frame; diff --git a/hacks/glx/ships.dxf b/hacks/glx/ships.dxf new file mode 100644 index 0000000..e7da383 --- /dev/null +++ b/hacks/glx/ships.dxf @@ -0,0 +1,49148 @@ + 0 +SECTION + 2 +ENTITIES + 0 +3DFACE + 8 +ship8 +10 +49.775390625 +20 +3.2784742802494105e-12 +30 +477.7269729070317 +11 +28.705078125 +21 +3.275041154070235e-12 +31 +428.2504104070317 +12 +25.30078125 +22 +3.276555242404111e-12 +32 +450.0707229070317 +13 +25.30078125 +23 +3.276555242404111e-12 +33 +450.0707229070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +192.28125 +20 +3.2806608449807706e-12 +30 +509.2386916570317 +11 +88.08984375 +21 +3.2793785048612634e-12 +31 +490.7582229070317 +12 +88.08984375 +22 +3.2806608449807706e-12 +32 +509.2386916570317 +13 +88.08984375 +23 +3.2806608449807706e-12 +33 +509.2386916570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +88.08984375 +20 +3.2793785048612634e-12 +30 +490.7582229070317 +11 +192.28125 +21 +3.2806608449807706e-12 +31 +509.2386916570317 +12 +101.888671875 +22 +3.2660542022625028e-12 +32 +298.7347854070317 +13 +101.888671875 +23 +3.2660542022625028e-12 +33 +298.7347854070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +101.888671875 +20 +3.2660542022625028e-12 +30 +298.7347854070317 +11 +192.28125 +21 +3.2806608449807706e-12 +31 +509.2386916570317 +12 +174.533203125 +22 +3.263687931021053e-12 +32 +264.6332229070317 +13 +174.533203125 +23 +3.263687931021053e-12 +33 +264.6332229070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +174.533203125 +20 +3.263687931021053e-12 +30 +264.6332229070317 +11 +192.28125 +21 +3.2806608449807706e-12 +31 +509.2386916570317 +12 +189.75 +22 +3.262776388044536e-12 +32 +251.49650415703172 +13 +189.75 +23 +3.262776388044536e-12 +33 +251.49650415703172 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +189.75 +20 +3.262776388044536e-12 +30 +251.49650415703172 +11 +192.28125 +21 +3.2806608449807706e-12 +31 +509.2386916570317 +12 +204.357421875 +22 +3.2589163572599444e-12 +32 +195.86759790703172 +13 +204.357421875 +23 +3.2589163572599444e-12 +33 +195.86759790703172 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +204.357421875 +20 +3.2589163572599444e-12 +30 +195.86759790703172 +11 +192.28125 +21 +3.2806608449807706e-12 +31 +509.2386916570317 +12 +208.93359375 +22 +3.2791134174300907e-12 +32 +486.9379104070317 +13 +208.93359375 +23 +3.2791134174300907e-12 +33 +486.9379104070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +204.357421875 +20 +3.2589163572599444e-12 +30 +195.86759790703172 +11 +208.93359375 +21 +3.2791134174300907e-12 +31 +486.9379104070317 +12 +214.21875 +22 +3.252894969444503e-12 +32 +109.09025415703172 +13 +214.21875 +23 +3.252894969444503e-12 +33 +109.09025415703172 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +214.21875 +20 +3.252894969444503e-12 +30 +109.09025415703172 +11 +208.93359375 +21 +3.2791134174300907e-12 +31 +486.9379104070317 +12 +222.0234375 +22 +3.2771764902489453e-12 +32 +459.0238479070317 +13 +222.0234375 +23 +3.2771764902489453e-12 +33 +459.0238479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +214.21875 +20 +3.252894969444503e-12 +30 +109.09025415703172 +11 +222.0234375 +21 +3.2771764902489453e-12 +31 +459.0238479070317 +12 +240.3984375 +22 +3.248207150301219e-12 +32 +41.53166040703172 +13 +240.3984375 +23 +3.248207150301219e-12 +33 +41.53166040703172 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +240.3984375 +20 +3.248207150301219e-12 +30 +41.53166040703172 +11 +222.0234375 +21 +3.2771764902489453e-12 +31 +459.0238479070317 +12 +246.9609375 +22 +3.275735585561712e-12 +32 +438.2582229070317 +13 +246.9609375 +23 +3.275735585561712e-12 +33 +438.2582229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +240.3984375 +20 +3.248207150301219e-12 +30 +41.53166040703172 +11 +246.9609375 +21 +3.275735585561712e-12 +31 +438.2582229070317 +12 +381.181640625 +22 +3.2339924466683045e-12 +32 +-163.32380834296828 +13 +381.181640625 +23 +3.2339924466683045e-12 +33 +-163.32380834296828 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +381.181640625 +20 +3.2339924466683045e-12 +30 +-163.32380834296828 +11 +246.9609375 +21 +3.275735585561712e-12 +31 +438.2582229070317 +12 +285.298828125 +22 +3.275478629646833e-12 +32 +434.5550979070317 +13 +285.298828125 +23 +3.275478629646833e-12 +33 +434.5550979070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +381.181640625 +20 +3.2339924466683045e-12 +30 +-163.32380834296828 +11 +285.298828125 +21 +3.275478629646833e-12 +31 +434.5550979070317 +12 +302.208984375 +22 +3.2748037137944608e-12 +32 +424.8285354070317 +13 +302.208984375 +23 +3.2748037137944608e-12 +33 +424.8285354070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +381.181640625 +20 +3.2339924466683045e-12 +30 +-163.32380834296828 +11 +302.208984375 +21 +3.2748037137944608e-12 +31 +424.8285354070317 +12 +444.498046875 +22 +3.2752720891329745e-12 +32 +431.5785354070317 +13 +444.498046875 +23 +3.2752720891329745e-12 +33 +431.5785354070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +381.181640625 +20 +3.2339924466683045e-12 +30 +-163.32380834296828 +11 +444.498046875 +21 +3.2752720891329745e-12 +31 +431.5785354070317 +12 +392.560546875 +22 +3.230127536973937e-12 +32 +-219.02302709296828 +13 +392.560546875 +23 +3.230127536973937e-12 +33 +-219.02302709296828 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +392.560546875 +20 +3.230127536973937e-12 +30 +-219.02302709296828 +11 +444.498046875 +21 +3.2752720891329745e-12 +31 +431.5785354070317 +12 +406.83984375 +22 +3.2311634921497467e-12 +32 +-204.09333959296828 +13 +406.83984375 +23 +3.2311634921497467e-12 +33 +-204.09333959296828 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +406.83984375 +20 +3.2311634921497467e-12 +30 +-204.09333959296828 +11 +444.498046875 +21 +3.2752720891329745e-12 +31 +431.5785354070317 +12 +537.2109375 +22 +3.2179961278154534e-12 +32 +-393.8550583429683 +13 +537.2109375 +23 +3.2179961278154534e-12 +33 +-393.8550583429683 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +537.2109375 +20 +3.2179961278154534e-12 +30 +-393.8550583429683 +11 +444.498046875 +21 +3.2752720891329745e-12 +31 +431.5785354070317 +12 +489.2578125 +22 +3.2746004258871197e-12 +32 +421.8988479070317 +13 +489.2578125 +23 +3.2746004258871197e-12 +33 +421.8988479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +537.2109375 +20 +3.2179961278154534e-12 +30 +-393.8550583429683 +11 +489.2578125 +21 +3.2746004258871197e-12 +31 +421.8988479070317 +12 +630.4921875 +22 +3.2732465284242285e-12 +32 +402.3871291570317 +13 +630.4921875 +23 +3.2732465284242285e-12 +33 +402.3871291570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +406.83984375 +20 +3.2311634921497467e-12 +30 +-204.09333959296828 +11 +384.15234375 +21 +3.2289191936527017e-12 +31 +-236.43708959296828 +12 +392.560546875 +22 +3.230127536973937e-12 +32 +-219.02302709296828 +13 +392.560546875 +23 +3.230127536973937e-12 +33 +-219.02302709296828 +70 +12 + 0 +3DFACE + 8 +ship8 +10 +20.77734375 +20 +3.2723024593825367e-12 +30 +388.7816604070317 +11 +101.888671875 +21 +3.2660542022625028e-12 +31 +298.7347854070317 +12 +18.791015625 +22 +3.2705606885924388e-12 +32 +363.6800979070317 +13 +18.791015625 +23 +3.2705606885924388e-12 +33 +363.6800979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +101.888671875 +20 +3.2660542022625028e-12 +30 +298.7347854070317 +11 +20.77734375 +21 +3.2723024593825367e-12 +31 +388.7816604070317 +12 +28.705078125 +22 +3.275041154070235e-12 +32 +428.2504104070317 +13 +28.705078125 +23 +3.275041154070235e-12 +33 +428.2504104070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +101.888671875 +20 +3.2660542022625028e-12 +30 +298.7347854070317 +11 +28.705078125 +21 +3.275041154070235e-12 +31 +428.2504104070317 +12 +49.775390625 +22 +3.2784742802494105e-12 +32 +477.7269729070317 +13 +49.775390625 +23 +3.2784742802494105e-12 +33 +477.7269729070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +101.888671875 +20 +3.2660542022625028e-12 +30 +298.7347854070317 +11 +49.775390625 +21 +3.2784742802494105e-12 +31 +477.7269729070317 +12 +88.08984375 +22 +3.2793785048612634e-12 +32 +490.7582229070317 +13 +88.08984375 +23 +3.2793785048612634e-12 +33 +490.7582229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3559.189453125 +20 +3.3295044239017857e-12 +30 +1213.1488479070317 +11 +3537.2578125 +21 +3.2025137207923604e-12 +31 +-616.9800583429683 +12 +3109.822265625 +22 +3.321286713535432e-12 +32 +1094.7191604070317 +13 +3109.822265625 +23 +3.321286713535432e-12 +33 +1094.7191604070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +3559.189453125 +21 +3.3295044239017857e-12 +31 +1213.1488479070317 +12 +3745.8515625 +22 +3.199065144732227e-12 +32 +-666.6792770929683 +13 +3745.8515625 +23 +3.199065144732227e-12 +33 +-666.6792770929683 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3745.8515625 +20 +3.199065144732227e-12 +30 +-666.6792770929683 +11 +3559.189453125 +21 +3.3295044239017857e-12 +31 +1213.1488479070317 +12 +3610.4765625 +22 +3.3295044239017857e-12 +32 +1213.1488479070317 +13 +3610.4765625 +23 +3.3295044239017857e-12 +33 +1213.1488479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3745.8515625 +20 +3.199065144732227e-12 +30 +-666.6792770929683 +11 +3610.4765625 +21 +3.3295044239017857e-12 +31 +1213.1488479070317 +12 +4200.662109375 +22 +3.305945794895848e-12 +32 +873.6332229070317 +13 +4200.662109375 +23 +3.305945794895848e-12 +33 +873.6332229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3745.8515625 +20 +3.199065144732227e-12 +30 +-666.6792770929683 +11 +4200.662109375 +21 +3.305945794895848e-12 +31 +873.6332229070317 +12 +3861.134765625 +22 +3.199066771035486e-12 +32 +-666.6558395929683 +13 +3861.134765625 +23 +3.199066771035486e-12 +33 +-666.6558395929683 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3861.134765625 +20 +3.199066771035486e-12 +30 +-666.6558395929683 +11 +4200.662109375 +21 +3.305945794895848e-12 +31 +873.6332229070317 +12 +3889.388671875 +22 +3.200227951562218e-12 +32 +-649.9214645929683 +13 +3889.388671875 +23 +3.200227951562218e-12 +33 +-649.9214645929683 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +309.005859375 +20 +3.2818618699373414e-12 +30 +526.5472854070317 +11 +302.208984375 +21 +3.2748037137944608e-12 +31 +424.8285354070317 +12 +289.359375 +22 +3.2792402690842715e-12 +32 +488.7660354070317 +13 +289.359375 +23 +3.2792402690842715e-12 +33 +488.7660354070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +302.208984375 +20 +3.2748037137944608e-12 +30 +424.8285354070317 +11 +309.005859375 +21 +3.2818618699373414e-12 +31 +526.5472854070317 +12 +444.498046875 +22 +3.2752720891329745e-12 +32 +431.5785354070317 +13 +444.498046875 +23 +3.2752720891329745e-12 +33 +431.5785354070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +444.498046875 +20 +3.2752720891329745e-12 +30 +431.5785354070317 +11 +309.005859375 +21 +3.2818618699373414e-12 +31 +526.5472854070317 +12 +375.0 +22 +3.281373978959723e-12 +32 +519.5160354070317 +13 +375.0 +23 +3.281373978959723e-12 +33 +519.5160354070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +444.498046875 +20 +3.2752720891329745e-12 +30 +431.5785354070317 +11 +375.0 +21 +3.281373978959723e-12 +31 +519.5160354070317 +12 +418.775390625 +22 +3.2804502387087653e-12 +32 +506.2035354070317 +13 +418.775390625 +23 +3.2804502387087653e-12 +33 +506.2035354070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +444.498046875 +20 +3.2752720891329745e-12 +30 +431.5785354070317 +11 +418.775390625 +21 +3.2804502387087653e-12 +31 +506.2035354070317 +12 +435.87890625 +22 +3.2775391558756417e-12 +32 +464.2504104070317 +13 +435.87890625 +23 +3.2775391558756417e-12 +33 +464.2504104070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +621.439453125 +20 +3.2808438040973775e-12 +30 +511.8754104070317 +11 +618.533203125 +21 +3.274469508474792e-12 +31 +420.0121291570317 +12 +598.376953125 +22 +3.2792605978750056e-12 +32 +489.0590041570317 +13 +598.376953125 +23 +3.2792605978750056e-12 +33 +489.0590041570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +618.533203125 +20 +3.274469508474792e-12 +30 +420.0121291570317 +11 +621.439453125 +21 +3.2808438040973775e-12 +31 +511.8754104070317 +12 +642.228515625 +22 +3.276699983394138e-12 +32 +452.1566604070317 +13 +642.228515625 +23 +3.276699983394138e-12 +33 +452.1566604070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +642.228515625 +20 +3.276699983394138e-12 +30 +452.1566604070317 +11 +621.439453125 +21 +3.2808438040973775e-12 +31 +511.8754104070317 +12 +647.830078125 +22 +3.27889711909668e-12 +32 +483.8207229070317 +13 +647.830078125 +23 +3.27889711909668e-12 +33 +483.8207229070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +501.169921875 +20 +3.2765519897975937e-12 +30 +450.0238479070317 +11 +630.4921875 +21 +3.2732465284242285e-12 +31 +402.3871291570317 +12 +489.2578125 +22 +3.2746004258871197e-12 +32 +421.8988479070317 +13 +489.2578125 +23 +3.2746004258871197e-12 +33 +421.8988479070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +630.4921875 +20 +3.2732465284242285e-12 +30 +402.3871291570317 +11 +501.169921875 +21 +3.2765519897975937e-12 +31 +450.0238479070317 +12 +510.087890625 +22 +3.279458193720941e-12 +32 +491.9066604070317 +13 +510.087890625 +23 +3.279458193720941e-12 +33 +491.9066604070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +630.4921875 +20 +3.2732465284242285e-12 +30 +402.3871291570317 +11 +510.087890625 +21 +3.279458193720941e-12 +31 +491.9066604070317 +12 +534.05859375 +22 +3.2807608626311824e-12 +32 +510.6800979070317 +13 +534.05859375 +23 +3.2807608626311824e-12 +33 +510.6800979070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +630.4921875 +20 +3.2732465284242285e-12 +30 +402.3871291570317 +11 +534.05859375 +21 +3.2807608626311824e-12 +31 +510.6800979070317 +12 +618.533203125 +22 +3.274469508474792e-12 +32 +420.0121291570317 +13 +618.533203125 +23 +3.274469508474792e-12 +33 +420.0121291570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +618.533203125 +20 +3.274469508474792e-12 +30 +420.0121291570317 +11 +534.05859375 +21 +3.2807608626311824e-12 +31 +510.6800979070317 +12 +598.376953125 +22 +3.2792605978750056e-12 +32 +489.0590041570317 +13 +598.376953125 +23 +3.2792605978750056e-12 +33 +489.0590041570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +630.4921875 +20 +3.2732465284242285e-12 +30 +402.3871291570317 +11 +923.1499643265097 +21 +3.2160044039029977e-12 +31 +-422.5588249668367 +12 +537.2109375 +22 +3.2179961278154534e-12 +32 +-393.8550583429683 +13 +537.2109375 +23 +3.2179961278154534e-12 +33 +-393.8550583429683 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +630.4921875 +21 +3.2732465284242285e-12 +31 +402.3871291570317 +12 +658.96875 +22 +3.2725740520267443e-12 +32 +392.6957229070317 +13 +658.96875 +23 +3.2725740520267443e-12 +33 +392.6957229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +658.96875 +21 +3.2725740520267443e-12 +31 +392.6957229070317 +12 +725.701171875 +22 +3.2726594329478276e-12 +32 +393.9261916570317 +13 +725.701171875 +23 +3.2726594329478276e-12 +33 +393.9261916570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +725.701171875 +21 +3.2726594329478276e-12 +31 +393.9261916570317 +12 +786.609375 +22 +3.2721276317822234e-12 +32 +386.2621291570317 +13 +786.609375 +23 +3.2721276317822234e-12 +33 +386.2621291570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +786.609375 +21 +3.2721276317822234e-12 +31 +386.2621291570317 +12 +823.611328125 +22 +3.2729293992887765e-12 +32 +397.8168166570317 +13 +823.611328125 +23 +3.2729293992887765e-12 +33 +397.8168166570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +823.611328125 +21 +3.2729293992887765e-12 +31 +397.8168166570317 +12 +843.158203125 +22 +3.2709819011364494e-12 +32 +369.7504104070317 +13 +843.158203125 +23 +3.2709819011364494e-12 +33 +369.7504104070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1018.587890625 +20 +3.2710664689059032e-12 +30 +370.9691604070317 +11 +923.1499643265097 +21 +3.2160044039029977e-12 +31 +-422.5588249668367 +12 +843.158203125 +22 +3.2709819011364494e-12 +32 +369.7504104070317 +13 +843.158203125 +23 +3.2709819011364494e-12 +33 +369.7504104070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +1018.587890625 +21 +3.2710664689059032e-12 +31 +370.9691604070317 +12 +1066.9921875 +22 +3.2692580196821974e-12 +32 +344.9066604070317 +13 +1066.9921875 +23 +3.2692580196821974e-12 +33 +344.9066604070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +1066.9921875 +21 +3.2692580196821974e-12 +31 +344.9066604070317 +12 +1118.5078125 +22 +3.267740678741804e-12 +32 +323.0394729070317 +13 +1118.5078125 +23 +3.267740678741804e-12 +33 +323.0394729070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +1118.5078125 +21 +3.267740678741804e-12 +31 +323.0394729070317 +12 +1174.83984375 +22 +3.267740678741804e-12 +32 +323.0394729070317 +13 +1174.83984375 +23 +3.267740678741804e-12 +33 +323.0394729070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +923.1499643265097 +20 +3.2160044039029977e-12 +30 +-422.5588249668367 +11 +1174.83984375 +21 +3.267740678741804e-12 +31 +323.0394729070317 +12 +1391.6484375 +22 +3.267919572100264e-12 +32 +325.6175979070317 +13 +1391.6484375 +23 +3.267919572100264e-12 +33 +325.6175979070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +1391.6484375 +20 +3.267919572100264e-12 +30 +325.6175979070317 +11 +1174.83984375 +21 +3.267740678741804e-12 +31 +323.0394729070317 +12 +1190.73046875 +22 +3.2681366835853043e-12 +32 +328.7465041570317 +13 +1190.73046875 +23 +3.2681366835853043e-12 +33 +328.7465041570317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +1190.73046875 +20 +3.2681366835853043e-12 +30 +328.7465041570317 +11 +1174.83984375 +21 +3.267740678741804e-12 +31 +323.0394729070317 +12 +1178.361328125 +22 +3.2692897325957426e-12 +32 +345.3636916570317 +13 +1178.361328125 +23 +3.2692897325957426e-12 +33 +345.3636916570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1190.73046875 +20 +3.2681366835853043e-12 +30 +328.7465041570317 +11 +1178.361328125 +21 +3.2692897325957426e-12 +31 +345.3636916570317 +12 +1184.525390625 +22 +3.2690905104465484e-12 +32 +342.4925979070317 +13 +1184.525390625 +23 +3.2690905104465484e-12 +33 +342.4925979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1391.6484375 +20 +3.267919572100264e-12 +30 +325.6175979070317 +11 +1190.73046875 +21 +3.2681366835853043e-12 +31 +328.7465041570317 +12 +1218.755859375 +22 +3.2685709065553847e-12 +32 +335.0043166570317 +13 +1218.755859375 +23 +3.2685709065553847e-12 +33 +335.0043166570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1391.6484375 +20 +3.267919572100264e-12 +30 +325.6175979070317 +11 +1218.755859375 +21 +3.2685709065553847e-12 +31 +335.0043166570317 +12 +1247.25 +22 +3.2688473781093685e-12 +32 +338.9886916570317 +13 +1247.25 +23 +3.2688473781093685e-12 +33 +338.9886916570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +1247.25 +20 +3.2688473781093685e-12 +30 +338.9886916570317 +11 +1218.755859375 +21 +3.2685709065553847e-12 +31 +335.0043166570317 +12 +1227.9609375 +22 +3.2692742827147847e-12 +32 +345.1410354070317 +13 +1227.9609375 +23 +3.2692742827147847e-12 +33 +345.1410354070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1069.734375 +20 +3.2711095659422595e-12 +30 +371.5902541570317 +11 +1118.5078125 +21 +3.267740678741804e-12 +31 +323.0394729070317 +12 +1066.9921875 +22 +3.2692580196821974e-12 +32 +344.9066604070317 +13 +1066.9921875 +23 +3.2692580196821974e-12 +33 +344.9066604070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1118.5078125 +20 +3.267740678741804e-12 +30 +323.0394729070317 +11 +1069.734375 +21 +3.2711095659422595e-12 +31 +371.5902541570317 +12 +1093.798828125 +22 +3.2712787014811673e-12 +32 +374.0277541570317 +13 +1093.798828125 +23 +3.2712787014811673e-12 +33 +374.0277541570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1243.078125 +20 +3.276547924039447e-12 +30 +449.9652541570317 +11 +1253.765625 +21 +3.270094752708813e-12 +31 +356.9652541570317 +12 +1234.248046875 +22 +3.27270740889396e-12 +32 +394.6175979070317 +13 +1234.248046875 +23 +3.27270740889396e-12 +33 +394.6175979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1253.765625 +20 +3.270094752708813e-12 +30 +356.9652541570317 +11 +1243.078125 +21 +3.276547924039447e-12 +31 +449.9652541570317 +12 +1262.267578125 +22 +3.2780010260011205e-12 +32 +470.9066604070317 +13 +1262.267578125 +23 +3.2780010260011205e-12 +33 +470.9066604070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1253.765625 +20 +3.270094752708813e-12 +30 +356.9652541570317 +11 +1391.6484375 +21 +3.267919572100264e-12 +31 +325.6175979070317 +12 +1247.25 +22 +3.2688473781093685e-12 +32 +338.9886916570317 +13 +1247.25 +23 +3.2688473781093685e-12 +33 +338.9886916570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1391.6484375 +20 +3.267919572100264e-12 +30 +325.6175979070317 +11 +1253.765625 +21 +3.270094752708813e-12 +31 +356.9652541570317 +12 +1356.556640625 +22 +3.2694865152900487e-12 +32 +348.1996291570317 +13 +1356.556640625 +23 +3.2694865152900487e-12 +33 +348.1996291570317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +1356.556640625 +20 +3.2694865152900487e-12 +30 +348.1996291570317 +11 +1253.765625 +21 +3.270094752708813e-12 +31 +356.9652541570317 +12 +1262.267578125 +22 +3.2780010260011205e-12 +32 +470.9066604070317 +13 +1262.267578125 +23 +3.2780010260011205e-12 +33 +470.9066604070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +1356.556640625 +20 +3.2694865152900487e-12 +30 +348.1996291570317 +11 +1262.267578125 +21 +3.2780010260011205e-12 +31 +470.9066604070317 +12 +1280.806640625 +22 +3.2767146201234665e-12 +32 +452.3675979070317 +13 +1280.806640625 +23 +3.2767146201234665e-12 +33 +452.3675979070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1356.556640625 +20 +3.2694865152900487e-12 +30 +348.1996291570317 +11 +1280.806640625 +21 +3.2767146201234665e-12 +31 +452.3675979070317 +12 +1290.57421875 +22 +3.2779245897479603e-12 +32 +469.8050979070317 +13 +1290.57421875 +23 +3.2779245897479603e-12 +33 +469.8050979070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1356.556640625 +20 +3.2694865152900487e-12 +30 +348.1996291570317 +11 +1290.57421875 +21 +3.2779245897479603e-12 +31 +469.8050979070317 +12 +1328.923828125 +22 +3.2779245897479603e-12 +32 +469.8050979070317 +13 +1328.923828125 +23 +3.2779245897479603e-12 +33 +469.8050979070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1356.556640625 +20 +3.2694865152900487e-12 +30 +348.1996291570317 +11 +1328.923828125 +21 +3.2779245897479603e-12 +31 +469.8050979070317 +12 +1349.7421875 +22 +3.272883862797532e-12 +32 +397.1605666570317 +13 +1349.7421875 +23 +3.272883862797532e-12 +33 +397.1605666570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +1349.7421875 +20 +3.272883862797532e-12 +30 +397.1605666570317 +11 +1328.923828125 +21 +3.2779245897479603e-12 +31 +469.8050979070317 +12 +1349.3671875 +22 +3.2751671925727865e-12 +32 +430.0668166570317 +13 +1349.3671875 +23 +3.2751671925727865e-12 +33 +430.0668166570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1391.6484375 +20 +3.267919572100264e-12 +30 +325.6175979070317 +11 +1356.556640625 +21 +3.2694865152900487e-12 +31 +348.1996291570317 +12 +1403.296875 +22 +3.2725187577159476e-12 +32 +391.8988479070317 +13 +1403.296875 +23 +3.2725187577159476e-12 +33 +391.8988479070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1391.6484375 +20 +3.267919572100264e-12 +30 +325.6175979070317 +11 +1793.630859375 +21 +3.2688026547697535e-12 +31 +338.3441604070317 +12 +923.1499643265097 +22 +3.2160044039029977e-12 +32 +-422.5588249668367 +13 +923.1499643265097 +23 +3.2160044039029977e-12 +33 +-422.5588249668367 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1793.630859375 +20 +3.2688026547697535e-12 +30 +338.3441604070317 +11 +1391.6484375 +21 +3.267919572100264e-12 +31 +325.6175979070317 +12 +1737.943359375 +22 +3.268828675621893e-12 +32 +338.7191604070317 +13 +1737.943359375 +23 +3.268828675621893e-12 +33 +338.7191604070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +1737.943359375 +20 +3.268828675621893e-12 +30 +338.7191604070317 +11 +1391.6484375 +21 +3.267919572100264e-12 +31 +325.6175979070317 +12 +1716.603515625 +22 +3.269368608303791e-12 +32 +346.5004104070317 +13 +1716.603515625 +23 +3.269368608303791e-12 +33 +346.5004104070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +1716.603515625 +20 +3.269368608303791e-12 +30 +346.5004104070317 +11 +1391.6484375 +21 +3.267919572100264e-12 +31 +325.6175979070317 +12 +1697.326171875 +22 +3.2714941866629488e-12 +32 +377.1332229070317 +13 +1697.326171875 +23 +3.2714941866629488e-12 +33 +377.1332229070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1456.728515625 +20 +3.2696954952587953e-12 +30 +351.2113479070317 +11 +1697.326171875 +21 +3.2714941866629488e-12 +31 +377.1332229070317 +12 +1391.6484375 +22 +3.267919572100264e-12 +32 +325.6175979070317 +13 +1391.6484375 +23 +3.267919572100264e-12 +33 +325.6175979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1697.326171875 +20 +3.2714941866629488e-12 +30 +377.1332229070317 +11 +1456.728515625 +21 +3.2696954952587953e-12 +31 +351.2113479070317 +12 +1489.453125 +22 +3.2711022475775953e-12 +32 +371.4847854070317 +13 +1489.453125 +23 +3.2711022475775953e-12 +33 +371.4847854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1697.326171875 +20 +3.2714941866629488e-12 +30 +377.1332229070317 +11 +1489.453125 +21 +3.2711022475775953e-12 +31 +371.4847854070317 +12 +1552.845703125 +22 +3.2729090704980424e-12 +32 +397.5238479070317 +13 +1552.845703125 +23 +3.2729090704980424e-12 +33 +397.5238479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1697.326171875 +20 +3.2714941866629488e-12 +30 +377.1332229070317 +11 +1552.845703125 +21 +3.2729090704980424e-12 +31 +397.5238479070317 +12 +1628.91796875 +22 +3.2728497104290988e-12 +32 +396.6683791570317 +13 +1628.91796875 +23 +3.2728497104290988e-12 +33 +396.6683791570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1697.326171875 +20 +3.2714941866629488e-12 +30 +377.1332229070317 +11 +1628.91796875 +21 +3.2728497104290988e-12 +31 +396.6683791570317 +12 +1645.6875 +22 +3.2738490737815873e-12 +32 +411.0707229070317 +13 +1645.6875 +23 +3.2738490737815873e-12 +33 +411.0707229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1697.326171875 +20 +3.2714941866629488e-12 +30 +377.1332229070317 +11 +1645.6875 +21 +3.2738490737815873e-12 +31 +411.0707229070317 +12 +1739.572265625 +22 +3.2869977356284052e-12 +32 +600.5629104070317 +13 +1739.572265625 +23 +3.2869977356284052e-12 +33 +600.5629104070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +1697.326171875 +20 +3.2714941866629488e-12 +30 +377.1332229070317 +11 +1739.572265625 +21 +3.2869977356284052e-12 +31 +600.5629104070317 +12 +1776.31640625 +22 +3.2869977356284052e-12 +32 +600.5629104070317 +13 +1776.31640625 +23 +3.2869977356284052e-12 +33 +600.5629104070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +1793.630859375 +20 +3.2688026547697535e-12 +30 +338.3441604070317 +11 +3537.2578125 +21 +3.2025137207923604e-12 +31 +-616.9800583429683 +12 +923.1499643265097 +22 +3.2160044039029977e-12 +32 +-422.5588249668367 +13 +923.1499643265097 +23 +3.2160044039029977e-12 +33 +-422.5588249668367 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +1793.630859375 +21 +3.2688026547697535e-12 +31 +338.3441604070317 +12 +1808.302734375 +22 +3.2712388570513284e-12 +32 +373.4535354070317 +13 +1808.302734375 +23 +3.2712388570513284e-12 +33 +373.4535354070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +1808.302734375 +21 +3.2712388570513284e-12 +31 +373.4535354070317 +12 +1827.5390625 +22 +3.272770021569421e-12 +32 +395.5199416570317 +13 +1827.5390625 +23 +3.272770021569421e-12 +33 +395.5199416570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +1827.5390625 +21 +3.272770021569421e-12 +31 +395.5199416570317 +12 +1852.58203125 +22 +3.2733384145583466e-12 +32 +403.7113479070317 +13 +1852.58203125 +23 +3.2733384145583466e-12 +33 +403.7113479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +1852.58203125 +21 +3.2733384145583466e-12 +31 +403.7113479070317 +12 +1883.73046875 +22 +3.2757136304677192e-12 +32 +437.9418166570317 +13 +1883.73046875 +23 +3.2757136304677192e-12 +33 +437.9418166570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +1883.73046875 +21 +3.2757136304677192e-12 +31 +437.9418166570317 +12 +1901.595703125 +22 +3.2837825340858995e-12 +32 +554.2269729070317 +13 +1901.595703125 +23 +3.2837825340858995e-12 +33 +554.2269729070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +1901.595703125 +21 +3.2837825340858995e-12 +31 +554.2269729070317 +12 +1909.6171875 +22 +3.2852608437480835e-12 +32 +575.5316604070317 +13 +1909.6171875 +23 +3.2852608437480835e-12 +33 +575.5316604070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +1909.6171875 +21 +3.2852608437480835e-12 +31 +575.5316604070317 +12 +1909.681640625 +22 +3.2879092786049224e-12 +32 +613.6996291570317 +13 +1909.681640625 +23 +3.2879092786049224e-12 +33 +613.6996291570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2330.291015625 +20 +3.299889441560344e-12 +30 +786.3519729070317 +11 +3537.2578125 +21 +3.2025137207923604e-12 +31 +-616.9800583429683 +12 +1909.681640625 +22 +3.2879092786049224e-12 +32 +613.6996291570317 +13 +1909.681640625 +23 +3.2879092786049224e-12 +33 +613.6996291570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3537.2578125 +20 +3.2025137207923604e-12 +30 +-616.9800583429683 +11 +2330.291015625 +21 +3.299889441560344e-12 +31 +786.3519729070317 +12 +3109.822265625 +22 +3.321286713535432e-12 +32 +1094.7191604070317 +13 +3109.822265625 +23 +3.321286713535432e-12 +33 +1094.7191604070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2391.09375 +20 +3.3241977963685554e-12 +30 +1136.6722854070317 +11 +2526.427734375 +21 +3.314395253476571e-12 +31 +995.4027541570317 +12 +2368.8984375 +22 +3.323497672815673e-12 +32 +1126.5824416570317 +13 +2368.8984375 +23 +3.323497672815673e-12 +33 +1126.5824416570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2526.427734375 +20 +3.314395253476571e-12 +30 +995.4027541570317 +11 +2391.09375 +21 +3.3241977963685554e-12 +31 +1136.6722854070317 +12 +2845.751953125 +22 +3.3255264861309364e-12 +32 +1155.8207229070317 +13 +2845.751953125 +23 +3.3255264861309364e-12 +33 +1155.8207229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2526.427734375 +20 +3.314395253476571e-12 +30 +995.4027541570317 +11 +2845.751953125 +21 +3.3255264861309364e-12 +31 +1155.8207229070317 +12 +2526.427734375 +22 +3.3113036509817284e-12 +32 +950.8480666570317 +13 +2526.427734375 +23 +3.3113036509817284e-12 +33 +950.8480666570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2526.427734375 +20 +3.3113036509817284e-12 +30 +950.8480666570317 +11 +2324.51953125 +21 +3.3065849320765284e-12 +31 +882.8441604070317 +12 +2320.34765625 +22 +3.307328152665767e-12 +32 +893.5550979070317 +13 +2320.34765625 +23 +3.307328152665767e-12 +33 +893.5550979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2324.51953125 +20 +3.3065849320765284e-12 +30 +882.8441604070317 +11 +2526.427734375 +21 +3.3113036509817284e-12 +31 +950.8480666570317 +12 +2330.291015625 +22 +3.299889441560344e-12 +32 +786.3519729070317 +13 +2330.291015625 +23 +3.299889441560344e-12 +33 +786.3519729070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2330.291015625 +20 +3.299889441560344e-12 +30 +786.3519729070317 +11 +2526.427734375 +21 +3.3113036509817284e-12 +31 +950.8480666570317 +12 +3109.822265625 +22 +3.321286713535432e-12 +32 +1094.7191604070317 +13 +3109.822265625 +23 +3.321286713535432e-12 +33 +1094.7191604070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3109.822265625 +20 +3.321286713535432e-12 +30 +1094.7191604070317 +11 +2526.427734375 +21 +3.3113036509817284e-12 +31 +950.8480666570317 +12 +2845.751953125 +22 +3.3255264861309364e-12 +32 +1155.8207229070317 +13 +2845.751953125 +23 +3.3255264861309364e-12 +33 +1155.8207229070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +3109.822265625 +20 +3.321286713535432e-12 +30 +1094.7191604070317 +11 +2845.751953125 +21 +3.3255264861309364e-12 +31 +1155.8207229070317 +12 +2895.837890625 +22 +3.3285676732247582e-12 +32 +1199.6488479070317 +13 +2895.837890625 +23 +3.3285676732247582e-12 +33 +1199.6488479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3109.822265625 +20 +3.321286713535432e-12 +30 +1094.7191604070317 +11 +2895.837890625 +21 +3.3285676732247582e-12 +31 +1199.6488479070317 +12 +2954.6015625 +22 +3.3307160198295382e-12 +32 +1230.6097854070317 +13 +2954.6015625 +23 +3.3307160198295382e-12 +33 +1230.6097854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3109.822265625 +20 +3.321286713535432e-12 +30 +1094.7191604070317 +11 +2954.6015625 +21 +3.3307160198295382e-12 +31 +1230.6097854070317 +12 +3087.662109375 +22 +3.322782912533462e-12 +32 +1116.2816604070317 +13 +3087.662109375 +23 +3.322782912533462e-12 +33 +1116.2816604070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3087.662109375 +20 +3.322782912533462e-12 +30 +1116.2816604070317 +11 +2954.6015625 +21 +3.3307160198295382e-12 +31 +1230.6097854070317 +12 +3062.466796875 +22 +3.3289327783063427e-12 +32 +1204.9105666570317 +13 +3062.466796875 +23 +3.3289327783063427e-12 +33 +1204.9105666570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2330.291015625 +20 +3.299889441560344e-12 +30 +786.3519729070317 +11 +2322.990234375 +21 +3.302919244531355e-12 +31 +830.0160354070317 +12 +2324.51953125 +22 +3.3065849320765284e-12 +32 +882.8441604070317 +13 +2324.51953125 +23 +3.3065849320765284e-12 +33 +882.8441604070317 +70 +12 + 0 +3DFACE + 8 +ship8 +10 +3380.818359375 +20 +3.3647090105434763e-12 +30 +1720.5004104070317 +11 +3365.0859375 +21 +3.359143800792108e-12 +31 +1640.2972854070317 +12 +3360.9609375 +22 +3.364027589478069e-12 +32 +1710.6800979070317 +13 +3360.9609375 +23 +3.364027589478069e-12 +33 +1710.6800979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3120.33984375 +20 +3.329621517736414e-12 +30 +1214.8363479070317 +11 +3559.189453125 +21 +3.3295044239017857e-12 +31 +1213.1488479070317 +12 +3109.822265625 +22 +3.321286713535432e-12 +32 +1094.7191604070317 +13 +3109.822265625 +23 +3.321286713535432e-12 +33 +1094.7191604070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3559.189453125 +20 +3.3295044239017857e-12 +30 +1213.1488479070317 +11 +3120.33984375 +21 +3.329621517736414e-12 +31 +1214.8363479070317 +12 +3136.505859375 +22 +3.3337360649809966e-12 +32 +1274.1332229070317 +13 +3136.505859375 +23 +3.3337360649809966e-12 +33 +1274.1332229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3559.189453125 +20 +3.3295044239017857e-12 +30 +1213.1488479070317 +11 +3136.505859375 +21 +3.3337360649809966e-12 +31 +1274.1332229070317 +12 +3136.646484375 +22 +3.357948467896943e-12 +32 +1623.0707229070317 +13 +3136.646484375 +23 +3.357948467896943e-12 +33 +1623.0707229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3559.189453125 +20 +3.3295044239017857e-12 +30 +1213.1488479070317 +11 +3136.646484375 +21 +3.357948467896943e-12 +31 +1623.0707229070317 +12 +3365.0859375 +22 +3.359143800792108e-12 +32 +1640.2972854070317 +13 +3365.0859375 +23 +3.359143800792108e-12 +33 +1640.2972854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3559.189453125 +20 +3.3295044239017857e-12 +30 +1213.1488479070317 +11 +3365.0859375 +21 +3.359143800792108e-12 +31 +1640.2972854070317 +12 +3393.52734375 +22 +3.359091759087829e-12 +32 +1639.5472854070317 +13 +3393.52734375 +23 +3.359091759087829e-12 +33 +1639.5472854070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +3393.52734375 +20 +3.359091759087829e-12 +30 +1639.5472854070317 +11 +3365.0859375 +21 +3.359143800792108e-12 +31 +1640.2972854070317 +12 +3380.818359375 +22 +3.3647090105434763e-12 +32 +1720.5004104070317 +13 +3380.818359375 +23 +3.3647090105434763e-12 +33 +1720.5004104070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3559.189453125 +20 +3.3295044239017857e-12 +30 +1213.1488479070317 +11 +3393.52734375 +21 +3.359091759087829e-12 +31 +1639.5472854070317 +12 +3511.482421875 +22 +3.35909013278457e-12 +32 +1639.5238479070317 +13 +3511.482421875 +23 +3.35909013278457e-12 +33 +1639.5238479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3559.189453125 +20 +3.3295044239017857e-12 +30 +1213.1488479070317 +11 +3511.482421875 +21 +3.35909013278457e-12 +31 +1639.5238479070317 +12 +3563.28515625 +22 +3.3578086058166923e-12 +32 +1621.0550979070317 +13 +3563.28515625 +23 +3.3578086058166923e-12 +33 +1621.0550979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3988.13671875 +20 +3.3379026539298584e-12 +30 +1334.1800979070317 +11 +3964.751953125 +21 +3.332888760983199e-12 +31 +1261.9222854070317 +12 +3959.28515625 +22 +3.3366406426010853e-12 +32 +1315.9925979070317 +13 +3959.28515625 +23 +3.3366406426010853e-12 +33 +1315.9925979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3964.751953125 +20 +3.332888760983199e-12 +30 +1261.9222854070317 +11 +3988.13671875 +21 +3.3379026539298584e-12 +31 +1334.1800979070317 +12 +3987.263671875 +22 +3.335300568715893e-12 +32 +1296.6800979070317 +13 +3987.263671875 +23 +3.335300568715893e-12 +33 +1296.6800979070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +3987.263671875 +20 +3.335300568715893e-12 +30 +1296.6800979070317 +11 +3988.13671875 +21 +3.3379026539298584e-12 +31 +1334.1800979070317 +12 +4000.951171875 +22 +3.3363617315922134e-12 +32 +1311.9730666570317 +13 +4000.951171875 +23 +3.3363617315922134e-12 +33 +1311.9730666570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +4224.263671875 +20 +3.3299418994783836e-12 +30 +1219.4535354070317 +11 +4200.662109375 +21 +3.3274878078609627e-12 +31 +1184.0863479070317 +12 +4043.443359375 +22 +3.3299418994783836e-12 +32 +1219.4535354070317 +13 +4043.443359375 +23 +3.3299418994783836e-12 +33 +1219.4535354070317 +70 +2 + 0 +3DFACE + 8 +ship8 +10 +3671.96484375 +20 +3.3334758564596e-12 +30 +1270.3832229070317 +11 +4200.662109375 +21 +3.305945794895848e-12 +31 +873.6332229070317 +12 +3610.4765625 +22 +3.3295044239017857e-12 +32 +1213.1488479070317 +13 +3610.4765625 +23 +3.3295044239017857e-12 +33 +1213.1488479070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +3671.96484375 +21 +3.3334758564596e-12 +31 +1270.3832229070317 +12 +3727.7109375 +22 +3.3315690158887412e-12 +32 +1242.9027541570317 +13 +3727.7109375 +23 +3.3315690158887412e-12 +33 +1242.9027541570317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +3727.7109375 +20 +3.3315690158887412e-12 +30 +1242.9027541570317 +11 +3671.96484375 +21 +3.3334758564596e-12 +31 +1270.3832229070317 +12 +3672.439453125 +22 +3.3353688734527598e-12 +32 +1297.6644729070317 +13 +3672.439453125 +23 +3.3353688734527598e-12 +33 +1297.6644729070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3727.7109375 +20 +3.3315690158887412e-12 +30 +1242.9027541570317 +11 +3672.439453125 +21 +3.3353688734527598e-12 +31 +1297.6644729070317 +12 +3684.0234375 +22 +3.336894345909447e-12 +32 +1319.6488479070317 +13 +3684.0234375 +23 +3.336894345909447e-12 +33 +1319.6488479070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +3727.7109375 +21 +3.3315690158887412e-12 +31 +1242.9027541570317 +12 +3933.345703125 +22 +3.3301850318155635e-12 +32 +1222.9574416570317 +13 +3933.345703125 +23 +3.3301850318155635e-12 +33 +1222.9574416570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +3933.345703125 +21 +3.3301850318155635e-12 +31 +1222.9574416570317 +12 +3947.630859375 +22 +3.3335035036149985e-12 +32 +1270.7816604070317 +13 +3947.630859375 +23 +3.3335035036149985e-12 +33 +1270.7816604070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +3947.630859375 +21 +3.3335035036149985e-12 +31 +1270.7816604070317 +12 +3964.751953125 +22 +3.332888760983199e-12 +32 +1261.9222854070317 +13 +3964.751953125 +23 +3.332888760983199e-12 +33 +1261.9222854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +3964.751953125 +21 +3.332888760983199e-12 +31 +1261.9222854070317 +12 +3996.6796875 +22 +3.3339474844046313e-12 +32 +1277.1800979070317 +13 +3996.6796875 +23 +3.3339474844046313e-12 +33 +1277.1800979070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +3996.6796875 +20 +3.3339474844046313e-12 +30 +1277.1800979070317 +11 +3964.751953125 +21 +3.332888760983199e-12 +31 +1261.9222854070317 +12 +3987.263671875 +22 +3.335300568715893e-12 +32 +1296.6800979070317 +13 +3987.263671875 +23 +3.335300568715893e-12 +33 +1296.6800979070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +3996.6796875 +21 +3.3339474844046313e-12 +31 +1277.1800979070317 +12 +4015.86328125 +22 +3.333942605494855e-12 +32 +1277.1097854070317 +13 +4015.86328125 +23 +3.333942605494855e-12 +33 +1277.1097854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +4015.86328125 +21 +3.333942605494855e-12 +31 +1277.1097854070317 +12 +4043.443359375 +22 +3.3299418994783836e-12 +32 +1219.4535354070317 +13 +4043.443359375 +23 +3.3299418994783836e-12 +33 +1219.4535354070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +4043.443359375 +20 +3.3299418994783836e-12 +30 +1219.4535354070317 +11 +4015.86328125 +21 +3.333942605494855e-12 +31 +1277.1097854070317 +12 +4034.396484375 +22 +3.332727756960585e-12 +32 +1259.6019729070317 +13 +4034.396484375 +23 +3.332727756960585e-12 +33 +1259.6019729070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +4043.443359375 +21 +3.3299418994783836e-12 +31 +1219.4535354070317 +12 +4200.662109375 +22 +3.3274878078609627e-12 +32 +1184.0863479070317 +13 +4200.662109375 +23 +3.3274878078609627e-12 +33 +1184.0863479070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +4731.378671360422 +21 +3.195832103794981e-12 +31 +-713.2723073657894 +12 +3889.388671875 +22 +3.200227951562218e-12 +32 +-649.9214645929683 +13 +3889.388671875 +23 +3.200227951562218e-12 +33 +-649.9214645929683 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +4731.378671360422 +20 +3.195832103794981e-12 +30 +-713.2723073657894 +11 +4200.662109375 +21 +3.305945794895848e-12 +31 +873.6332229070317 +12 +5582.583984375 +22 +3.25433099522196e-12 +32 +129.78556665703172 +13 +5582.583984375 +23 +3.25433099522196e-12 +33 +129.78556665703172 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4731.378671360422 +20 +3.195832103794981e-12 +30 +-713.2723073657894 +11 +5582.583984375 +21 +3.25433099522196e-12 +31 +129.78556665703172 +12 +5583.738082531767 +22 +3.254319312204251e-12 +32 +129.61719662759015 +13 +5583.738082531767 +23 +3.254319312204251e-12 +33 +129.61719662759015 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +4290.990234375 +20 +3.3096960502104755e-12 +30 +927.6800979070317 +11 +4282.564453125 +21 +3.3066898286367163e-12 +31 +884.3558791570317 +12 +4226.583984375 +22 +3.3100326949850323e-12 +32 +932.5316604070317 +13 +4226.583984375 +23 +3.3100326949850323e-12 +33 +932.5316604070317 +70 +2 + 0 +3DFACE + 8 +ship8 +10 +4443.322265625 +20 +3.3064271806604317e-12 +30 +880.5707229070317 +11 +4372.212890625 +21 +3.303886894970298e-12 +31 +843.9613479070317 +12 +4361.408203125 +22 +3.3064271806604317e-12 +32 +880.5707229070317 +13 +4361.408203125 +23 +3.3064271806604317e-12 +33 +880.5707229070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +4487.279296875 +20 +3.306456454119089e-12 +30 +880.9925979070317 +11 +4487.115234375 +21 +3.303319315133002e-12 +31 +835.7816604070317 +12 +4464.580078125 +22 +3.306456454119089e-12 +32 +880.9925979070317 +13 +4464.580078125 +23 +3.306456454119089e-12 +33 +880.9925979070317 +70 +2 + 0 +3DFACE + 8 +ship8 +10 +4895.759765625 +20 +3.297946009166164e-12 +30 +758.3441604070317 +11 +4764.076171875 +21 +3.2968035311269073e-12 +31 +741.8793166570317 +12 +4512.439453125 +22 +3.2974272184266296e-12 +32 +750.8675979070317 +13 +4512.439453125 +23 +3.2974272184266296e-12 +33 +750.8675979070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +4764.076171875 +20 +3.2968035311269073e-12 +30 +741.8793166570317 +11 +4895.759765625 +21 +3.297946009166164e-12 +31 +758.3441604070317 +12 +4875.884765625 +22 +3.2967994653687605e-12 +32 +741.8207229070317 +13 +4875.884765625 +23 +3.2967994653687605e-12 +33 +741.8207229070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +5163.052734375 +20 +3.29254180343741e-12 +30 +680.4613479070317 +11 +5147.361328125 +21 +3.2887199907793985e-12 +31 +625.3832229070317 +12 +5129.888671875 +22 +3.293611910981653e-12 +32 +695.8832229070317 +13 +5129.888671875 +23 +3.293611910981653e-12 +33 +695.8832229070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +5147.361328125 +20 +3.2887199907793985e-12 +30 +625.3832229070317 +11 +5163.052734375 +21 +3.29254180343741e-12 +31 +680.4613479070317 +12 +5189.208984375 +22 +3.2887395064185032e-12 +32 +625.6644729070317 +13 +5189.208984375 +23 +3.2887395064185032e-12 +33 +625.6644729070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +4200.662109375 +20 +3.305945794895848e-12 +30 +873.6332229070317 +11 +4349.455078125 +21 +3.302885905314551e-12 +31 +829.5355666570317 +12 +5582.583984375 +22 +3.25433099522196e-12 +32 +129.78556665703172 +13 +5582.583984375 +23 +3.25433099522196e-12 +33 +129.78556665703172 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +4349.455078125 +20 +3.302885905314551e-12 +30 +829.5355666570317 +11 +4200.662109375 +21 +3.305945794895848e-12 +31 +873.6332229070317 +12 +4282.564453125 +22 +3.3066898286367163e-12 +32 +884.3558791570317 +13 +4282.564453125 +23 +3.3066898286367163e-12 +33 +884.3558791570317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +4282.564453125 +20 +3.3066898286367163e-12 +30 +884.3558791570317 +11 +4200.662109375 +21 +3.305945794895848e-12 +31 +873.6332229070317 +12 +4226.583984375 +22 +3.3100326949850323e-12 +32 +932.5316604070317 +13 +4226.583984375 +23 +3.3100326949850323e-12 +33 +932.5316604070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4349.455078125 +20 +3.302885905314551e-12 +30 +829.5355666570317 +11 +4282.564453125 +21 +3.3066898286367163e-12 +31 +884.3558791570317 +12 +4323.591796875 +22 +3.3065296377657316e-12 +32 +882.0472854070317 +13 +4323.591796875 +23 +3.3065296377657316e-12 +33 +882.0472854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4349.455078125 +20 +3.302885905314551e-12 +30 +829.5355666570317 +11 +4323.591796875 +21 +3.3065296377657316e-12 +31 +882.0472854070317 +12 +4347.345703125 +22 +3.303947068190871e-12 +32 +844.8285354070317 +13 +4347.345703125 +23 +3.303947068190871e-12 +33 +844.8285354070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +4347.345703125 +20 +3.303947068190871e-12 +30 +844.8285354070317 +11 +4323.591796875 +21 +3.3065296377657316e-12 +31 +882.0472854070317 +12 +4347.240234375 +22 +3.3048033168565916e-12 +32 +857.1683791570317 +13 +4347.240234375 +23 +3.3048033168565916e-12 +33 +857.1683791570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +4349.455078125 +21 +3.302885905314551e-12 +31 +829.5355666570317 +12 +4512.439453125 +22 +3.2974272184266296e-12 +32 +750.8675979070317 +13 +4512.439453125 +23 +3.2974272184266296e-12 +33 +750.8675979070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +4512.439453125 +20 +3.2974272184266296e-12 +30 +750.8675979070317 +11 +4349.455078125 +21 +3.302885905314551e-12 +31 +829.5355666570317 +12 +4372.212890625 +22 +3.303886894970298e-12 +32 +843.9613479070317 +13 +4372.212890625 +23 +3.303886894970298e-12 +33 +843.9613479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4512.439453125 +20 +3.2974272184266296e-12 +30 +750.8675979070317 +11 +4372.212890625 +21 +3.303886894970298e-12 +31 +843.9613479070317 +12 +4459.107421875 +22 +3.3040056151081854e-12 +32 +845.6722854070317 +13 +4459.107421875 +23 +3.3040056151081854e-12 +33 +845.6722854070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +4459.107421875 +20 +3.3040056151081854e-12 +30 +845.6722854070317 +11 +4372.212890625 +21 +3.303886894970298e-12 +31 +843.9613479070317 +12 +4443.322265625 +22 +3.3064271806604317e-12 +32 +880.5707229070317 +13 +4443.322265625 +23 +3.3064271806604317e-12 +33 +880.5707229070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +4512.439453125 +20 +3.2974272184266296e-12 +30 +750.8675979070317 +11 +4459.107421875 +21 +3.3040056151081854e-12 +31 +845.6722854070317 +12 +4464.580078125 +22 +3.306456454119089e-12 +32 +880.9925979070317 +13 +4464.580078125 +23 +3.306456454119089e-12 +33 +880.9925979070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +4512.439453125 +20 +3.2974272184266296e-12 +30 +750.8675979070317 +11 +4464.580078125 +21 +3.306456454119089e-12 +31 +880.9925979070317 +12 +4487.115234375 +22 +3.303319315133002e-12 +32 +835.7816604070317 +13 +4487.115234375 +23 +3.303319315133002e-12 +33 +835.7816604070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +4512.439453125 +21 +3.2974272184266296e-12 +31 +750.8675979070317 +12 +4774.822265625 +22 +3.2956903265463078e-12 +32 +725.8363479070317 +13 +4774.822265625 +23 +3.2956903265463078e-12 +33 +725.8363479070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +4774.822265625 +20 +3.2956903265463078e-12 +30 +725.8363479070317 +11 +4512.439453125 +21 +3.2974272184266296e-12 +31 +750.8675979070317 +12 +4764.076171875 +22 +3.2968035311269073e-12 +32 +741.8793166570317 +13 +4764.076171875 +23 +3.2968035311269073e-12 +33 +741.8793166570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +4774.822265625 +21 +3.2956903265463078e-12 +31 +725.8363479070317 +12 +4858.681640625 +22 +3.294569803601044e-12 +32 +709.6879104070317 +13 +4858.681640625 +23 +3.294569803601044e-12 +33 +709.6879104070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +4858.681640625 +21 +3.294569803601044e-12 +31 +709.6879104070317 +12 +4926.181640625 +22 +3.2927800568648136e-12 +32 +683.8949416570317 +13 +4926.181640625 +23 +3.2927800568648136e-12 +33 +683.8949416570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +4926.181640625 +21 +3.2927800568648136e-12 +31 +683.8949416570317 +12 +4944.357421875 +22 +3.294678765919379e-12 +32 +711.2582229070317 +13 +4944.357421875 +23 +3.294678765919379e-12 +33 +711.2582229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +4944.357421875 +21 +3.294678765919379e-12 +31 +711.2582229070317 +12 +4958.232421875 +22 +3.2941046808690477e-12 +32 +702.9847854070317 +13 +4958.232421875 +23 +3.2941046808690477e-12 +33 +702.9847854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +4958.232421875 +21 +3.2941046808690477e-12 +31 +702.9847854070317 +12 +5013.029296875 +22 +3.2945177618967647e-12 +32 +708.9379104070317 +13 +5013.029296875 +23 +3.2945177618967647e-12 +33 +708.9379104070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +5013.029296875 +21 +3.2945177618967647e-12 +31 +708.9379104070317 +12 +5147.361328125 +22 +3.28617319987623e-12 +32 +588.6800979070317 +13 +5147.361328125 +23 +3.28617319987623e-12 +33 +588.6800979070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +5147.361328125 +20 +3.28617319987623e-12 +30 +588.6800979070317 +11 +5013.029296875 +21 +3.2945177618967647e-12 +31 +708.9379104070317 +12 +5082.439453125 +22 +3.2944299415207934e-12 +32 +707.6722854070317 +13 +5082.439453125 +23 +3.2944299415207934e-12 +33 +707.6722854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5147.361328125 +20 +3.28617319987623e-12 +30 +588.6800979070317 +11 +5082.439453125 +21 +3.2944299415207934e-12 +31 +707.6722854070317 +12 +5129.888671875 +22 +3.293611910981653e-12 +32 +695.8832229070317 +13 +5129.888671875 +23 +3.293611910981653e-12 +33 +695.8832229070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5147.361328125 +20 +3.28617319987623e-12 +30 +588.6800979070317 +11 +5129.888671875 +21 +3.293611910981653e-12 +31 +695.8832229070317 +12 +5147.361328125 +22 +3.2887199907793985e-12 +32 +625.3832229070317 +13 +5147.361328125 +23 +3.2887199907793985e-12 +33 +625.3832229070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +5147.361328125 +21 +3.28617319987623e-12 +31 +588.6800979070317 +12 +5275.470703125 +22 +3.2854348581967674e-12 +32 +578.0394729070317 +13 +5275.470703125 +23 +3.2854348581967674e-12 +33 +578.0394729070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +5275.470703125 +21 +3.2854348581967674e-12 +31 +578.0394729070317 +12 +5379.873046875 +22 +3.283618277456768e-12 +32 +551.8597854070317 +13 +5379.873046875 +23 +3.283618277456768e-12 +33 +551.8597854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +5379.873046875 +21 +3.283618277456768e-12 +31 +551.8597854070317 +12 +5500.716796875 +22 +3.276941489428059e-12 +32 +455.6371291570317 +13 +5500.716796875 +23 +3.276941489428059e-12 +33 +455.6371291570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +5500.716796875 +21 +3.276941489428059e-12 +31 +455.6371291570317 +12 +5525.771484375 +22 +3.271068095209162e-12 +32 +370.9925979070317 +13 +5525.771484375 +23 +3.271068095209162e-12 +33 +370.9925979070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +5525.771484375 +20 +3.271068095209162e-12 +30 +370.9925979070317 +11 +5500.716796875 +21 +3.276941489428059e-12 +31 +455.6371291570317 +12 +5515.552734375 +22 +3.274822416281936e-12 +32 +425.0980666570317 +13 +5515.552734375 +23 +3.274822416281936e-12 +33 +425.0980666570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +5525.771484375 +21 +3.271068095209162e-12 +31 +370.9925979070317 +12 +5553.474609375 +22 +3.267613827087623e-12 +32 +321.2113479070317 +13 +5553.474609375 +23 +3.267613827087623e-12 +33 +321.2113479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +5553.474609375 +21 +3.267613827087623e-12 +31 +321.2113479070317 +12 +5573.373046875 +22 +3.266233095620963e-12 +32 +301.3129104070317 +13 +5573.373046875 +23 +3.266233095620963e-12 +33 +301.3129104070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5582.583984375 +20 +3.25433099522196e-12 +30 +129.78556665703172 +11 +5573.373046875 +21 +3.266233095620963e-12 +31 +301.3129104070317 +12 +5582.220703125 +22 +3.262778827499424e-12 +32 +251.53166040703172 +13 +5582.220703125 +23 +3.262778827499424e-12 +33 +251.53166040703172 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +5594.443359375 +20 +3.255053887020465e-12 +30 +140.20353540703172 +11 +5583.738082531767 +21 +3.254319312204251e-12 +31 +129.61719662759015 +12 +5582.583984375 +22 +3.25433099522196e-12 +32 +129.78556665703172 +13 +5582.583984375 +23 +3.25433099522196e-12 +33 +129.78556665703172 +70 +0 + 0 +3DFACE + 8 +ship8 +10 +8068.318359375 +20 +3.2232637240704742e-12 +30 +-317.9409958429683 +11 +8053.482421875 +21 +3.21912559542864e-12 +31 +-377.5777145929683 +12 +7947.744140625 +22 +3.27550790310549e-12 +32 +434.9769729070317 +13 +7947.744140625 +23 +3.27550790310549e-12 +33 +434.9769729070317 +70 +2 + 0 +3DFACE + 8 +ship8 +10 +7947.744140625 +20 +3.27550790310549e-12 +30 +434.9769729070317 +11 +7343.279296875 +21 +3.1854285919077907e-12 +31 +-863.2027145929683 +12 +6954.603515625 +22 +3.1842251274963318e-12 +32 +-880.5464645929683 +13 +6954.603515625 +23 +3.1842251274963318e-12 +33 +-880.5464645929683 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +7343.279296875 +20 +3.1854285919077907e-12 +30 +-863.2027145929683 +11 +7947.744140625 +21 +3.27550790310549e-12 +31 +434.9769729070317 +12 +8069.126953125 +22 +3.183231456205249e-12 +32 +-894.8667770929683 +13 +8069.126953125 +23 +3.183231456205249e-12 +33 +-894.8667770929683 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +8069.126953125 +20 +3.183231456205249e-12 +30 +-894.8667770929683 +11 +7947.744140625 +21 +3.27550790310549e-12 +31 +434.9769729070317 +12 +8053.482421875 +22 +3.21912559542864e-12 +32 +-377.5777145929683 +13 +8053.482421875 +23 +3.21912559542864e-12 +33 +-377.5777145929683 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +5763.251953125 +20 +3.252282666267592e-12 +30 +100.26603540703172 +11 +6954.603515625 +21 +3.1842251274963318e-12 +31 +-880.5464645929683 +12 +5714.560546875 +22 +3.252994987094915e-12 +32 +110.53166040703172 +13 +5714.560546875 +23 +3.252994987094915e-12 +33 +110.53166040703172 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +6954.603515625 +20 +3.1842251274963318e-12 +30 +-880.5464645929683 +11 +5763.251953125 +21 +3.252282666267592e-12 +31 +100.26603540703172 +12 +7065.685546875 +22 +3.2644840064662006e-12 +32 +276.1058791570317 +13 +7065.685546875 +23 +3.2644840064662006e-12 +33 +276.1058791570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +6954.603515625 +20 +3.1842251274963318e-12 +30 +-880.5464645929683 +11 +7065.685546875 +21 +3.2644840064662006e-12 +31 +276.1058791570317 +12 +7947.744140625 +22 +3.27550790310549e-12 +32 +434.9769729070317 +13 +7947.744140625 +23 +3.27550790310549e-12 +33 +434.9769729070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +7947.744140625 +20 +3.27550790310549e-12 +30 +434.9769729070317 +11 +7065.685546875 +21 +3.2644840064662006e-12 +31 +276.1058791570317 +12 +7523.666015625 +22 +3.270494010158831e-12 +32 +362.7191604070317 +13 +7523.666015625 +23 +3.270494010158831e-12 +33 +362.7191604070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +7947.744140625 +20 +3.27550790310549e-12 +30 +434.9769729070317 +11 +7523.666015625 +21 +3.270494010158831e-12 +31 +362.7191604070317 +12 +7548.521484375 +22 +3.271193320560084e-12 +32 +372.7972854070317 +13 +7548.521484375 +23 +3.271193320560084e-12 +33 +372.7972854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +7947.744140625 +20 +3.27550790310549e-12 +30 +434.9769729070317 +11 +7548.521484375 +21 +3.271193320560084e-12 +31 +372.7972854070317 +12 +7616.994140625 +22 +3.2722211442196003e-12 +32 +387.6097854070317 +13 +7616.994140625 +23 +3.2722211442196003e-12 +33 +387.6097854070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +7616.994140625 +20 +3.2722211442196003e-12 +30 +387.6097854070317 +11 +7548.521484375 +21 +3.271193320560084e-12 +31 +372.7972854070317 +12 +7591.611328125 +22 +3.2727773399340854e-12 +32 +395.6254104070317 +13 +7591.611328125 +23 +3.2727773399340854e-12 +33 +395.6254104070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +7958.712890625 +20 +3.2851470025199725e-12 +30 +573.8910354070317 +11 +7947.744140625 +21 +3.27550790310549e-12 +31 +434.9769729070317 +12 +7930.212890625 +22 +3.2809446348994187e-12 +32 +513.3285354070317 +13 +7930.212890625 +23 +3.2809446348994187e-12 +33 +513.3285354070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +7947.744140625 +20 +3.27550790310549e-12 +30 +434.9769729070317 +11 +7958.712890625 +21 +3.2851470025199725e-12 +31 +573.8910354070317 +12 +7952.830078125 +22 +3.2797314126684074e-12 +32 +495.8441604070317 +13 +7952.830078125 +23 +3.2797314126684074e-12 +33 +495.8441604070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +7952.830078125 +20 +3.2797314126684074e-12 +30 +495.8441604070317 +11 +7958.712890625 +21 +3.2851470025199725e-12 +31 +573.8910354070317 +12 +7958.642578125 +22 +3.2819464377067953e-12 +32 +527.7660354070317 +13 +7958.642578125 +23 +3.2819464377067953e-12 +33 +527.7660354070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +7958.642578125 +20 +3.2819464377067953e-12 +30 +527.7660354070317 +11 +7958.712890625 +21 +3.2851470025199725e-12 +31 +573.8910354070317 +12 +7970.396484375 +22 +3.2832580512849596e-12 +32 +546.6683791570317 +13 +7970.396484375 +23 +3.2832580512849596e-12 +33 +546.6683791570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +7985.525390625 +20 +3.2797314126684074e-12 +30 +495.8441604070317 +11 +7960.892578125 +21 +3.277198445342938e-12 +31 +459.3402541570317 +12 +7952.830078125 +22 +3.2797314126684074e-12 +32 +495.8441604070317 +13 +7952.830078125 +23 +3.2797314126684074e-12 +33 +495.8441604070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +7960.892578125 +20 +3.277198445342938e-12 +30 +459.3402541570317 +11 +7985.525390625 +21 +3.2797314126684074e-12 +31 +495.8441604070317 +12 +7985.525390625 +22 +3.2774919930811386e-12 +32 +463.5707229070317 +13 +7985.525390625 +23 +3.2774919930811386e-12 +33 +463.5707229070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +7947.744140625 +20 +3.27550790310549e-12 +30 +434.9769729070317 +11 +7960.892578125 +21 +3.277198445342938e-12 +31 +459.3402541570317 +12 +8007.251953125 +22 +3.2762299817523655e-12 +32 +445.3832229070317 +13 +8007.251953125 +23 +3.2762299817523655e-12 +33 +445.3832229070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +7960.892578125 +20 +3.277198445342938e-12 +30 +459.3402541570317 +11 +7947.744140625 +21 +3.27550790310549e-12 +31 +434.9769729070317 +12 +7952.830078125 +22 +3.2797314126684074e-12 +32 +495.8441604070317 +13 +7952.830078125 +23 +3.2797314126684074e-12 +33 +495.8441604070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +8169.146484375 +20 +3.303080248553969e-12 +30 +832.3363479070317 +11 +8161.611328125 +21 +3.2976597797926277e-12 +31 +754.2191604070317 +12 +8160.251953125 +22 +3.299310477600237e-12 +32 +778.0082229070317 +13 +8160.251953125 +23 +3.299310477600237e-12 +33 +778.0082229070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +8161.611328125 +20 +3.2976597797926277e-12 +30 +754.2191604070317 +11 +8169.146484375 +21 +3.303080248553969e-12 +31 +832.3363479070317 +12 +8168.291015625 +22 +3.295261795637633e-12 +32 +719.6605666570317 +13 +8168.291015625 +23 +3.295261795637633e-12 +33 +719.6605666570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +8168.291015625 +20 +3.295261795637633e-12 +30 +719.6605666570317 +11 +8169.146484375 +21 +3.303080248553969e-12 +31 +832.3363479070317 +12 +8169.275390625 +22 +3.278165282630252e-12 +32 +473.2738479070317 +13 +8169.275390625 +23 +3.278165282630252e-12 +33 +473.2738479070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +8169.275390625 +20 +3.278165282630252e-12 +30 +473.2738479070317 +11 +8169.146484375 +21 +3.303080248553969e-12 +31 +832.3363479070317 +12 +8173.166015625 +22 +3.30703053916942e-12 +32 +889.2660354070317 +13 +8173.166015625 +23 +3.30703053916942e-12 +33 +889.2660354070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +8169.275390625 +20 +3.278165282630252e-12 +30 +473.2738479070317 +11 +8173.166015625 +21 +3.30703053916942e-12 +31 +889.2660354070317 +12 +8200.822265625 +22 +3.2780546940086586e-12 +32 +471.6800979070317 +13 +8200.822265625 +23 +3.2780546940086586e-12 +33 +471.6800979070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +8200.822265625 +20 +3.2780546940086586e-12 +30 +471.6800979070317 +11 +8173.166015625 +21 +3.30703053916942e-12 +31 +889.2660354070317 +12 +8184.755859375 +22 +3.303290041674345e-12 +32 +835.3597854070317 +13 +8184.755859375 +23 +3.303290041674345e-12 +33 +835.3597854070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +8007.251953125 +20 +3.2762299817523655e-12 +30 +445.3832229070317 +11 +8068.318359375 +21 +3.2232637240704742e-12 +31 +-317.9409958429683 +12 +7947.744140625 +22 +3.27550790310549e-12 +32 +434.9769729070317 +13 +7947.744140625 +23 +3.27550790310549e-12 +33 +434.9769729070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +8068.318359375 +20 +3.2232637240704742e-12 +30 +-317.9409958429683 +11 +8007.251953125 +21 +3.2762299817523655e-12 +31 +445.3832229070317 +12 +8169.275390625 +22 +3.278165282630252e-12 +32 +473.2738479070317 +13 +8169.275390625 +23 +3.278165282630252e-12 +33 +473.2738479070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +8068.318359375 +20 +3.2232637240704742e-12 +30 +-317.9409958429683 +11 +8169.275390625 +21 +3.278165282630252e-12 +31 +473.2738479070317 +12 +8301.111328125 +22 +3.2622860576120294e-12 +32 +244.43009790703172 +13 +8301.111328125 +23 +3.2622860576120294e-12 +33 +244.43009790703172 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +8301.111328125 +20 +3.2622860576120294e-12 +30 +244.43009790703172 +11 +8169.275390625 +21 +3.278165282630252e-12 +31 +473.2738479070317 +12 +8200.822265625 +22 +3.2780546940086586e-12 +32 +471.6800979070317 +13 +8200.822265625 +23 +3.2780546940086586e-12 +33 +471.6800979070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +8301.111328125 +20 +3.2622860576120294e-12 +30 +244.43009790703172 +11 +8200.822265625 +21 +3.2780546940086586e-12 +31 +471.6800979070317 +12 +8411.736328125 +22 +3.2807950149996157e-12 +32 +511.1722854070317 +13 +8411.736328125 +23 +3.2807950149996157e-12 +33 +511.1722854070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +8301.111328125 +20 +3.2622860576120294e-12 +30 +244.43009790703172 +11 +8411.736328125 +21 +3.2807950149996157e-12 +31 +511.1722854070317 +12 +8436.076171875 +22 +3.27954926670343e-12 +32 +493.2191604070317 +13 +8436.076171875 +23 +3.27954926670343e-12 +33 +493.2191604070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +8436.076171875 +20 +3.27954926670343e-12 +30 +493.2191604070317 +11 +8411.736328125 +21 +3.2807950149996157e-12 +31 +511.1722854070317 +12 +8430.767578125 +22 +3.280552695814065e-12 +32 +507.6800979070317 +13 +8430.767578125 +23 +3.280552695814065e-12 +33 +507.6800979070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +5583.738082531767 +20 +3.254319312204251e-12 +30 +129.61719662759015 +11 +6954.603515625 +21 +3.1842251274963318e-12 +31 +-880.5464645929683 +12 +4731.378671360422 +22 +3.195832103794981e-12 +32 +-713.2723073657894 +13 +4731.378671360422 +23 +3.195832103794981e-12 +33 +-713.2723073657894 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +6954.603515625 +20 +3.1842251274963318e-12 +30 +-880.5464645929683 +11 +5583.738082531767 +21 +3.254319312204251e-12 +31 +129.61719662759015 +12 +5714.560546875 +22 +3.252994987094915e-12 +32 +110.53166040703172 +13 +5714.560546875 +23 +3.252994987094915e-12 +33 +110.53166040703172 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +5594.443359375 +20 +3.255053887020465e-12 +30 +140.20353540703172 +11 +5714.560546875 +21 +3.252994987094915e-12 +31 +110.53166040703172 +12 +5583.738082531767 +22 +3.254319312204251e-12 +32 +129.61719662759015 +13 +5583.738082531767 +23 +3.254319312204251e-12 +33 +129.61719662759015 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +5714.560546875 +20 +3.252994987094915e-12 +30 +110.53166040703172 +11 +5594.443359375 +21 +3.255053887020465e-12 +31 +140.20353540703172 +12 +5608.810546875 +22 +3.257803152679345e-12 +32 +179.82462915703172 +13 +5608.810546875 +23 +3.257803152679345e-12 +33 +179.82462915703172 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5714.560546875 +20 +3.252994987094915e-12 +30 +110.53166040703172 +11 +5608.810546875 +21 +3.257803152679345e-12 +31 +179.82462915703172 +12 +5632.119140625 +22 +3.2602548048418778e-12 +32 +215.15666040703172 +13 +5632.119140625 +23 +3.2602548048418778e-12 +33 +215.15666040703172 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5714.560546875 +20 +3.252994987094915e-12 +30 +110.53166040703172 +11 +5632.119140625 +21 +3.2602548048418778e-12 +31 +215.15666040703172 +12 +5668.482421875 +22 +3.257312009095209e-12 +32 +172.74650415703172 +13 +5668.482421875 +23 +3.257312009095209e-12 +33 +172.74650415703172 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +5668.482421875 +20 +3.257312009095209e-12 +30 +172.74650415703172 +11 +5632.119140625 +21 +3.2602548048418778e-12 +31 +215.15666040703172 +12 +5639.068359375 +22 +3.260780100794447e-12 +32 +222.72697290703172 +13 +5639.068359375 +23 +3.260780100794447e-12 +33 +222.72697290703172 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +5668.482421875 +20 +3.257312009095209e-12 +30 +172.74650415703172 +11 +5639.068359375 +21 +3.260780100794447e-12 +31 +222.72697290703172 +12 +5653.060546875 +22 +3.26080205588844e-12 +32 +223.04337915703172 +13 +5653.060546875 +23 +3.26080205588844e-12 +33 +223.04337915703172 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +5714.560546875 +20 +3.252994987094915e-12 +30 +110.53166040703172 +11 +5668.482421875 +21 +3.257312009095209e-12 +31 +172.74650415703172 +12 +5702.455078125 +22 +3.2579178070590853e-12 +32 +181.47697290703172 +13 +5702.455078125 +23 +3.2579178070590853e-12 +33 +181.47697290703172 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2962.06640625 +20 +3.570698207597256e-12 +30 +4689.117597907032 +11 +2956.388671875 +21 +3.5618929951786865e-12 +31 +4562.221113532032 +12 +2946.251953125 +22 +3.569694371910806e-12 +32 +4674.650801032032 +13 +2946.251953125 +23 +3.569694371910806e-12 +33 +4674.650801032032 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2970.5390625 +20 +3.492995877350108e-12 +30 +3569.3090041570317 +11 +2961.345703125 +21 +3.4891549556288065e-12 +31 +3513.9554885320317 +12 +2940.029296875 +22 +3.4900526750276245e-12 +32 +3526.8929885320317 +13 +2940.029296875 +23 +3.4900526750276245e-12 +33 +3526.8929885320317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2961.345703125 +20 +3.4891549556288065e-12 +30 +3513.9554885320317 +11 +2970.5390625 +21 +3.492995877350108e-12 +31 +3569.3090041570317 +12 +2966.33203125 +22 +3.4837775839038215e-12 +32 +3436.4593947820317 +13 +2966.33203125 +23 +3.4837775839038215e-12 +33 +3436.4593947820317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2793.4453125 +20 +3.5632151797280326e-12 +30 +4581.275801032032 +11 +2809.505859375 +21 +3.562200366494586e-12 +31 +4566.650801032032 +12 +2742.462890625 +22 +3.563529056256967e-12 +32 +4585.799238532032 +13 +2742.462890625 +23 +3.563529056256967e-12 +33 +4585.799238532032 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2809.505859375 +20 +3.562200366494586e-12 +30 +4566.650801032032 +11 +2793.4453125 +21 +3.5632151797280326e-12 +31 +4581.275801032032 +12 +2800.95703125 +22 +3.5631037779548097e-12 +32 +4579.670332282032 +13 +2800.95703125 +23 +3.5631037779548097e-12 +33 +4579.670332282032 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2809.505859375 +20 +3.562200366494586e-12 +30 +4566.650801032032 +11 +2800.95703125 +21 +3.5631037779548097e-12 +31 +4579.670332282032 +12 +2956.388671875 +22 +3.5618929951786865e-12 +32 +4562.221113532032 +13 +2956.388671875 +23 +3.5618929951786865e-12 +33 +4562.221113532032 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2809.505859375 +20 +3.562200366494586e-12 +30 +4566.650801032032 +11 +2956.388671875 +21 +3.5618929951786865e-12 +31 +4562.221113532032 +12 +2955.46875 +22 +3.5606765203411578e-12 +32 +4544.689863532032 +13 +2955.46875 +23 +3.5606765203411578e-12 +33 +4544.689863532032 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2955.46875 +20 +3.5606765203411578e-12 +30 +4544.689863532032 +11 +2956.388671875 +21 +3.5618929951786865e-12 +31 +4562.221113532032 +12 +2955.826171875 +22 +3.5246848029222427e-12 +32 +4025.9945510320317 +13 +2955.826171875 +23 +3.5246848029222427e-12 +33 +4025.9945510320317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2955.826171875 +20 +3.5246848029222427e-12 +30 +4025.9945510320317 +11 +2956.388671875 +21 +3.5618929951786865e-12 +31 +4562.221113532032 +12 +2963.859375 +22 +3.52110774890467e-12 +32 +3974.4437697820317 +13 +2963.859375 +23 +3.52110774890467e-12 +33 +3974.4437697820317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2963.859375 +20 +3.52110774890467e-12 +30 +3974.4437697820317 +11 +2956.388671875 +21 +3.5618929951786865e-12 +31 +4562.221113532032 +12 +2962.06640625 +22 +3.570698207597256e-12 +32 +4689.117597907032 +13 +2962.06640625 +23 +3.570698207597256e-12 +33 +4689.117597907032 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2963.859375 +20 +3.52110774890467e-12 +30 +3974.4437697820317 +11 +2962.06640625 +21 +3.570698207597256e-12 +31 +4689.117597907032 +12 +2971.236328125 +22 +3.561540493947357e-12 +32 +4557.141035407032 +13 +2971.236328125 +23 +3.561540493947357e-12 +33 +4557.141035407032 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2971.236328125 +20 +3.561540493947357e-12 +30 +4557.141035407032 +11 +2962.06640625 +21 +3.570698207597256e-12 +31 +4689.117597907032 +12 +2980.51171875 +22 +3.569704536306173e-12 +32 +4674.797285407032 +13 +2980.51171875 +23 +3.569704536306173e-12 +33 +4674.797285407032 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2963.859375 +20 +3.52110774890467e-12 +30 +3974.4437697820317 +11 +2971.236328125 +21 +3.561540493947357e-12 +31 +4557.141035407032 +12 +2963.876953125 +22 +3.517005398934528e-12 +32 +3915.3226760320317 +13 +2963.876953125 +23 +3.517005398934528e-12 +33 +3915.3226760320317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2963.876953125 +20 +3.517005398934528e-12 +30 +3915.3226760320317 +11 +2971.236328125 +21 +3.561540493947357e-12 +31 +4557.141035407032 +12 +2964.005859375 +22 +3.4960537340523318e-12 +32 +3613.3773635320317 +13 +2964.005859375 +23 +3.4960537340523318e-12 +33 +3613.3773635320317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2964.005859375 +20 +3.4960537340523318e-12 +30 +3613.3773635320317 +11 +2971.236328125 +21 +3.561540493947357e-12 +31 +4557.141035407032 +12 +2970.5390625 +22 +3.492995877350108e-12 +32 +3569.3090041570317 +13 +2970.5390625 +23 +3.492995877350108e-12 +33 +3569.3090041570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2951.396484375 +20 +3.475101662594321e-12 +30 +3311.4261916570317 +11 +2961.708984375 +21 +3.474372672158596e-12 +31 +3300.9203322820317 +12 +2948.58984375 +22 +3.4747056577508206e-12 +32 +3305.7191604070317 +13 +2948.58984375 +23 +3.4747056577508206e-12 +33 +3305.7191604070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2961.708984375 +20 +3.474372672158596e-12 +30 +3300.9203322820317 +11 +2951.396484375 +21 +3.475101662594321e-12 +31 +3311.4261916570317 +12 +2966.33203125 +22 +3.4837775839038215e-12 +32 +3436.4593947820317 +13 +2966.33203125 +23 +3.4837775839038215e-12 +33 +3436.4593947820317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2961.708984375 +20 +3.474372672158596e-12 +30 +3300.9203322820317 +11 +2966.33203125 +21 +3.4837775839038215e-12 +31 +3436.4593947820317 +12 +2971.62890625 +22 +3.451410489872797e-12 +32 +2970.0004104070317 +13 +2971.62890625 +23 +3.451410489872797e-12 +33 +2970.0004104070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2971.62890625 +20 +3.451410489872797e-12 +30 +2970.0004104070317 +11 +2966.33203125 +21 +3.4837775839038215e-12 +31 +3436.4593947820317 +12 +2970.5390625 +22 +3.492995877350108e-12 +32 +3569.3090041570317 +13 +2970.5390625 +23 +3.492995877350108e-12 +33 +3569.3090041570317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2971.62890625 +20 +3.451410489872797e-12 +30 +2970.0004104070317 +11 +2970.5390625 +21 +3.492995877350108e-12 +31 +3569.3090041570317 +12 +2971.236328125 +22 +3.561540493947357e-12 +32 +4557.141035407032 +13 +2971.236328125 +23 +3.561540493947357e-12 +33 +4557.141035407032 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2971.62890625 +20 +3.451410489872797e-12 +30 +2970.0004104070317 +11 +2971.236328125 +21 +3.561540493947357e-12 +31 +4557.141035407032 +12 +2971.91015625 +22 +3.550582869165861e-12 +32 +4399.225019782032 +13 +2971.91015625 +23 +3.550582869165861e-12 +33 +4399.225019782032 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2971.91015625 +20 +3.550582869165861e-12 +30 +4399.225019782032 +11 +2971.236328125 +21 +3.561540493947357e-12 +31 +4557.141035407032 +12 +2980.177734375 +22 +3.5601845636053925e-12 +32 +4537.600019782032 +13 +2980.177734375 +23 +3.5601845636053925e-12 +33 +4537.600019782032 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2980.177734375 +20 +3.5601845636053925e-12 +30 +4537.600019782032 +11 +2971.236328125 +21 +3.561540493947357e-12 +31 +4557.141035407032 +12 +3258.85546875 +22 +3.5577434824140414e-12 +32 +4502.420332282032 +13 +3258.85546875 +23 +3.5577434824140414e-12 +33 +4502.420332282032 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2980.177734375 +20 +3.5601845636053925e-12 +30 +4537.600019782032 +11 +3258.85546875 +21 +3.5577434824140414e-12 +31 +4502.420332282032 +12 +3247.8046875 +22 +3.5568380380747444e-12 +32 +4489.371504157032 +13 +3247.8046875 +23 +3.5568380380747444e-12 +33 +4489.371504157032 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2963.390625 +20 +3.44622136275001e-12 +30 +2895.2172072820317 +11 +2971.9453125 +21 +3.4448947058667023e-12 +31 +2876.0980666570317 +12 +2954.26171875 +22 +3.4440327651395763e-12 +32 +2863.6761916570317 +13 +2954.26171875 +23 +3.4440327651395763e-12 +33 +2863.6761916570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2971.9453125 +20 +3.4448947058667023e-12 +30 +2876.0980666570317 +11 +2963.390625 +21 +3.44622136275001e-12 +31 +2895.2172072820317 +12 +2964.615234375 +22 +3.4484510245177263e-12 +32 +2927.3500197820317 +13 +2964.615234375 +23 +3.4484510245177263e-12 +33 +2927.3500197820317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2971.9453125 +20 +3.4448947058667023e-12 +30 +2876.0980666570317 +11 +2964.615234375 +21 +3.4484510245177263e-12 +31 +2927.3500197820317 +12 +2971.62890625 +22 +3.451410489872797e-12 +32 +2970.0004104070317 +13 +2971.62890625 +23 +3.451410489872797e-12 +33 +2970.0004104070317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2971.9453125 +20 +3.4448947058667023e-12 +30 +2876.0980666570317 +11 +2971.62890625 +21 +3.451410489872797e-12 +31 +2970.0004104070317 +12 +2971.91015625 +22 +3.550582869165861e-12 +32 +4399.225019782032 +13 +2971.91015625 +23 +3.550582869165861e-12 +33 +4399.225019782032 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2971.9453125 +20 +3.4448947058667023e-12 +30 +2876.0980666570317 +11 +2971.91015625 +21 +3.550582869165861e-12 +31 +4399.225019782032 +12 +2979.87890625 +22 +3.546532967475813e-12 +32 +4340.859785407032 +13 +2979.87890625 +23 +3.546532967475813e-12 +33 +4340.859785407032 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2980.951171875 +20 +3.542544052157967e-12 +30 +4283.373457282032 +11 +2980.177734375 +21 +3.539280874669329e-12 +31 +4236.346113532032 +12 +2979.87890625 +22 +3.546532967475813e-12 +32 +4340.859785407032 +13 +2979.87890625 +23 +3.546532967475813e-12 +33 +4340.859785407032 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2980.177734375 +20 +3.539280874669329e-12 +30 +4236.346113532032 +11 +2980.951171875 +21 +3.542544052157967e-12 +31 +4283.373457282032 +12 +3000.462890625 +22 +3.537403307557127e-12 +32 +4209.287519782032 +13 +3000.462890625 +23 +3.537403307557127e-12 +33 +4209.287519782032 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3000.462890625 +20 +3.537403307557127e-12 +30 +4209.287519782032 +11 +2980.951171875 +21 +3.542544052157967e-12 +31 +4283.373457282032 +12 +3000.333984375 +22 +3.539114178585309e-12 +32 +4233.943769782032 +13 +3000.333984375 +23 +3.539114178585309e-12 +33 +4233.943769782032 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2980.599609375 +20 +3.524242041860054e-12 +30 +4019.6136916570317 +11 +2980.3125 +21 +3.5187146436594513e-12 +31 +3939.9554885320317 +12 +2980.177734375 +22 +3.539280874669329e-12 +32 +4236.346113532032 +13 +2980.177734375 +23 +3.539280874669329e-12 +33 +4236.346113532032 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2980.3125 +20 +3.5187146436594513e-12 +30 +3939.9554885320317 +11 +2980.599609375 +21 +3.524242041860054e-12 +31 +4019.6136916570317 +12 +2984.80078125 +22 +3.521221590132781e-12 +32 +3976.0843947820317 +13 +2984.80078125 +23 +3.521221590132781e-12 +33 +3976.0843947820317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3005.794921875 +20 +3.4909056710868275e-12 +30 +3539.1859572820317 +11 +2996.009765625 +21 +3.4896200783608028e-12 +31 +3520.6586135320317 +12 +2988.41015625 +22 +3.4930479190543873e-12 +32 +3570.0590041570317 +13 +2988.41015625 +23 +3.4930479190543873e-12 +33 +3570.0590041570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2996.009765625 +20 +3.4896200783608028e-12 +30 +3520.6586135320317 +11 +3005.794921875 +21 +3.4909056710868275e-12 +31 +3539.1859572820317 +12 +3027.57421875 +22 +3.4887048762019535e-12 +32 +3507.4691604070317 +13 +3027.57421875 +23 +3.4887048762019535e-12 +33 +3507.4691604070317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +3009.375 +20 +3.4750935310780273e-12 +30 +3311.3090041570317 +11 +3004.880859375 +21 +3.471509565271605e-12 +31 +3259.6586135320317 +12 +2996.642578125 +22 +3.478198957150569e-12 +32 +3356.0629104070317 +13 +2996.642578125 +23 +3.478198957150569e-12 +33 +3356.0629104070317 +70 +2 + 0 +3DFACE + 8 +ship8 +10 +3036.392578125 +20 +3.441625429740844e-12 +30 +2828.9828322820317 +11 +3033.76171875 +21 +3.440234940454631e-12 +31 +2808.9437697820317 +12 +3004.9921875 +22 +3.460743031123009e-12 +32 +3104.4965041570317 +13 +3004.9921875 +23 +3.460743031123009e-12 +33 +3104.4965041570317 +70 +2 + 0 +3DFACE + 8 +ship8 +10 +2916.33984375 +20 +3.4368432850085534e-12 +30 +2760.0648635320317 +11 +2656.265625 +21 +3.4374279410300662e-12 +31 +2768.4906447820317 +12 +2643.169921875 +22 +3.438422018896964e-12 +32 +2782.8168166570317 +13 +2643.169921875 +23 +3.438422018896964e-12 +33 +2782.8168166570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2656.265625 +20 +3.4374279410300662e-12 +30 +2768.4906447820317 +11 +2916.33984375 +21 +3.4368432850085534e-12 +31 +2760.0648635320317 +12 +2954.6015625 +22 +3.435111272038008e-12 +32 +2735.1039260320317 +13 +2954.6015625 +23 +3.435111272038008e-12 +33 +2735.1039260320317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2954.6015625 +20 +3.435111272038008e-12 +30 +2735.1039260320317 +11 +2916.33984375 +21 +3.4368432850085534e-12 +31 +2760.0648635320317 +12 +2950.96875 +22 +3.4372783211302632e-12 +32 +2766.3343947820317 +13 +2950.96875 +23 +3.4372783211302632e-12 +33 +2766.3343947820317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2954.6015625 +20 +3.435111272038008e-12 +30 +2735.1039260320317 +11 +2950.96875 +21 +3.4372783211302632e-12 +31 +2766.3343947820317 +12 +2968.986328125 +22 +3.4365810436080835e-12 +32 +2756.2855666570317 +13 +2968.986328125 +23 +3.4365810436080835e-12 +33 +2756.2855666570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +2954.6015625 +20 +3.435111272038008e-12 +30 +2735.1039260320317 +11 +2968.986328125 +21 +3.4365810436080835e-12 +31 +2756.2855666570317 +12 +2954.6015625 +22 +3.3307160198295382e-12 +32 +1230.6097854070317 +13 +2954.6015625 +23 +3.3307160198295382e-12 +33 +1230.6097854070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2954.6015625 +20 +3.3307160198295382e-12 +30 +1230.6097854070317 +11 +2968.986328125 +21 +3.4365810436080835e-12 +31 +2756.2855666570317 +12 +3062.466796875 +22 +3.3289327783063427e-12 +32 +1204.9105666570317 +13 +3062.466796875 +23 +3.3289327783063427e-12 +33 +1204.9105666570317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3062.466796875 +20 +3.3289327783063427e-12 +30 +1204.9105666570317 +11 +2968.986328125 +21 +3.4365810436080835e-12 +31 +2756.2855666570317 +12 +2971.9453125 +22 +3.4448947058667023e-12 +32 +2876.0980666570317 +13 +2971.9453125 +23 +3.4448947058667023e-12 +33 +2876.0980666570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3062.466796875 +20 +3.3289327783063427e-12 +30 +1204.9105666570317 +11 +2971.9453125 +21 +3.4448947058667023e-12 +31 +2876.0980666570317 +12 +2988.41015625 +22 +3.4930479190543873e-12 +32 +3570.0590041570317 +13 +2988.41015625 +23 +3.4930479190543873e-12 +33 +3570.0590041570317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2988.41015625 +20 +3.4930479190543873e-12 +30 +3570.0590041570317 +11 +2971.9453125 +21 +3.4448947058667023e-12 +31 +2876.0980666570317 +12 +2980.3125 +22 +3.5187146436594513e-12 +32 +3939.9554885320317 +13 +2980.3125 +23 +3.5187146436594513e-12 +33 +3939.9554885320317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +2980.3125 +20 +3.5187146436594513e-12 +30 +3939.9554885320317 +11 +2971.9453125 +21 +3.4448947058667023e-12 +31 +2876.0980666570317 +12 +2979.87890625 +22 +3.546532967475813e-12 +32 +4340.859785407032 +13 +2979.87890625 +23 +3.546532967475813e-12 +33 +4340.859785407032 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2980.3125 +20 +3.5187146436594513e-12 +30 +3939.9554885320317 +11 +2979.87890625 +21 +3.546532967475813e-12 +31 +4340.859785407032 +12 +2980.177734375 +22 +3.539280874669329e-12 +32 +4236.346113532032 +13 +2980.177734375 +23 +3.539280874669329e-12 +33 +4236.346113532032 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +3062.466796875 +20 +3.3289327783063427e-12 +30 +1204.9105666570317 +11 +2988.41015625 +21 +3.4930479190543873e-12 +31 +3570.0590041570317 +12 +2996.642578125 +22 +3.478198957150569e-12 +32 +3356.0629104070317 +13 +2996.642578125 +23 +3.478198957150569e-12 +33 +3356.0629104070317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +2996.642578125 +20 +3.478198957150569e-12 +30 +3356.0629104070317 +11 +2988.41015625 +21 +3.4930479190543873e-12 +31 +3570.0590041570317 +12 +2996.009765625 +22 +3.4896200783608028e-12 +32 +3520.6586135320317 +13 +2996.009765625 +23 +3.4896200783608028e-12 +33 +3520.6586135320317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3062.466796875 +20 +3.3289327783063427e-12 +30 +1204.9105666570317 +11 +2996.642578125 +21 +3.478198957150569e-12 +31 +3356.0629104070317 +12 +3004.9921875 +22 +3.460743031123009e-12 +32 +3104.4965041570317 +13 +3004.9921875 +23 +3.460743031123009e-12 +33 +3104.4965041570317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +3004.9921875 +20 +3.460743031123009e-12 +30 +3104.4965041570317 +11 +2996.642578125 +21 +3.478198957150569e-12 +31 +3356.0629104070317 +12 +3004.880859375 +22 +3.471509565271605e-12 +32 +3259.6586135320317 +13 +3004.880859375 +23 +3.471509565271605e-12 +33 +3259.6586135320317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3062.466796875 +20 +3.3289327783063427e-12 +30 +1204.9105666570317 +11 +3004.9921875 +21 +3.460743031123009e-12 +31 +3104.4965041570317 +12 +3033.890625 +22 +3.4390335089222457e-12 +32 +2791.6293166570317 +13 +3033.890625 +23 +3.4390335089222457e-12 +33 +2791.6293166570317 +70 +15 + 0 +3DFACE + 8 +ship8 +10 +3033.890625 +20 +3.4390335089222457e-12 +30 +2791.6293166570317 +11 +3004.9921875 +21 +3.460743031123009e-12 +31 +3104.4965041570317 +12 +3033.76171875 +22 +3.440234940454631e-12 +32 +2808.9437697820317 +13 +3033.76171875 +23 +3.440234940454631e-12 +33 +2808.9437697820317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3062.466796875 +20 +3.3289327783063427e-12 +30 +1204.9105666570317 +11 +3033.890625 +21 +3.4390335089222457e-12 +31 +2791.6293166570317 +12 +3038.0625 +22 +3.437688962703092e-12 +32 +2772.2523635320317 +13 +3038.0625 +23 +3.437688962703092e-12 +33 +2772.2523635320317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3062.466796875 +20 +3.3289327783063427e-12 +30 +1204.9105666570317 +11 +3038.0625 +21 +3.437688962703092e-12 +31 +2772.2523635320317 +12 +3050.197265625 +22 +3.436307824660617e-12 +32 +2752.3480666570317 +13 +3050.197265625 +23 +3.436307824660617e-12 +33 +2752.3480666570317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3062.466796875 +20 +3.3289327783063427e-12 +30 +1204.9105666570317 +11 +3050.197265625 +21 +3.436307824660617e-12 +31 +2752.3480666570317 +12 +3062.53125 +22 +3.4344400153679677e-12 +32 +2725.4300979070317 +13 +3062.53125 +23 +3.4344400153679677e-12 +33 +2725.4300979070317 +70 +3 + 0 +3DFACE + 8 +ship8 +10 +3062.53125 +20 +3.4344400153679677e-12 +30 +2725.4300979070317 +11 +3050.197265625 +21 +3.436307824660617e-12 +31 +2752.3480666570317 +12 +3355.728515625 +22 +3.4344892110415443e-12 +32 +2726.1390822820317 +13 +3355.728515625 +23 +3.4344892110415443e-12 +33 +2726.1390822820317 +70 +13 + 0 +3DFACE + 8 +ship8 +10 +3062.53125 +20 +3.4344400153679677e-12 +30 +2725.4300979070317 +11 +3355.728515625 +21 +3.4344892110415443e-12 +31 +2726.1390822820317 +12 +3383.765625 +22 +3.4336000297348346e-12 +32 +2713.3246291570317 +13 +3383.765625 +23 +3.4336000297348346e-12 +33 +2713.3246291570317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2964.005859375 +20 +3.4960537340523318e-12 +30 +3613.3773635320317 +11 +2960.103515625 +21 +3.514511869463083e-12 +31 +3879.3871291570317 +12 +2963.876953125 +22 +3.517005398934528e-12 +32 +3915.3226760320317 +13 +2963.876953125 +23 +3.517005398934528e-12 +33 +3915.3226760320317 +70 +12 + 0 +3DFACE + 8 +ship8 +10 +2961.345703125 +20 +3.4891549556288065e-12 +30 +3513.9554885320317 +11 +2959.458984375 +21 +3.48698953283981e-12 +31 +3482.7484572820317 +12 +2934.2578125 +22 +3.4860999449572855e-12 +32 +3469.9281447820317 +13 +2934.2578125 +23 +3.4860999449572855e-12 +33 +3469.9281447820317 +70 +1 + 0 +3DFACE + 8 +ship8 +10 +2959.458984375 +20 +3.48698953283981e-12 +30 +3482.7484572820317 +11 +2961.345703125 +21 +3.4891549556288065e-12 +31 +3513.9554885320317 +12 +2966.33203125 +22 +3.4837775839038215e-12 +32 +3436.4593947820317 +13 +2966.33203125 +23 +3.4837775839038215e-12 +33 +3436.4593947820317 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +998.227187499999 +20 +-4.830517875888812e-13 +30 +570.3682710197586 +11 +1323.522109374999 +21 +-4.87950603316953e-13 +31 +499.7688960197586 +12 +997.541406249999 +22 +-4.844455457446439e-13 +32 +550.2820991447584 +13 +997.541406249999 +23 +-4.844455457446439e-13 +33 +550.2820991447584 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +1323.522109374999 +20 +-4.87950603316953e-13 +30 +499.7688960197586 +11 +998.227187499999 +21 +-4.830517875888812e-13 +31 +570.3682710197586 +12 +1568.607695312499 +22 +-4.830517875888812e-13 +32 +570.3682710197586 +13 +1568.607695312499 +23 +-4.830517875888812e-13 +33 +570.3682710197586 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +1323.522109374999 +20 +-4.87950603316953e-13 +30 +499.7688960197586 +11 +1568.607695312499 +21 +-4.830517875888812e-13 +31 +570.3682710197586 +12 +1415.606289062499 +22 +-4.972636126650276e-13 +32 +365.55428664475835 +13 +1415.606289062499 +23 +-4.972636126650276e-13 +33 +365.55428664475835 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +1415.606289062499 +20 +-4.972636126650276e-13 +30 +365.55428664475835 +11 +1568.607695312499 +21 +-4.830517875888812e-13 +31 +570.3682710197586 +12 +1553.944609374999 +22 +-5.422182613925436e-13 +32 +-282.3104789802417 +13 +1553.944609374999 +23 +-5.422182613925436e-13 +33 +-282.3104789802417 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +1553.944609374999 +20 +-5.422182613925436e-13 +30 +-282.3104789802417 +11 +1568.607695312499 +21 +-4.830517875888812e-13 +31 +570.3682710197586 +12 +2291.2677343749992 +22 +-4.559004270019568e-13 +32 +961.6606147697582 +13 +2291.2677343749992 +23 +-4.559004270019568e-13 +33 +961.6606147697582 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +2291.2677343749992 +20 +-4.559004270019568e-13 +30 +961.6606147697582 +11 +1568.607695312499 +21 +-4.830517875888812e-13 +31 +570.3682710197586 +12 +1761.808515624999 +22 +-4.722135334665755e-13 +32 +726.5639741447583 +13 +1761.808515624999 +23 +-4.722135334665755e-13 +33 +726.5639741447583 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +1237.366328124999 +20 +-4.947015019851619e-13 +30 +402.4781928947584 +11 +1232.944843749999 +21 +-5.377571082659446e-13 +31 +-218.01848679274173 +12 +1216.3236718749993 +22 +-5.275092916732367e-13 +32 +-70.33188523024171 +13 +1216.3236718749993 +23 +-5.275092916732367e-13 +33 +-70.33188523024171 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +1232.944843749999 +20 +-5.377571082659446e-13 +30 +-218.01848679274173 +11 +1237.366328124999 +21 +-4.947015019851619e-13 +31 +402.4781928947584 +12 +1284.622070312499 +22 +-5.141915756026739e-13 +32 +121.59663039475834 +13 +1284.622070312499 +23 +-5.141915756026739e-13 +33 +121.59663039475834 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +1232.944843749999 +20 +-5.377571082659446e-13 +30 +-218.01848679274173 +11 +1284.622070312499 +21 +-5.141915756026739e-13 +31 +121.59663039475834 +12 +1553.944609374999 +22 +-5.422182613925436e-13 +32 +-282.3104789802417 +13 +1553.944609374999 +23 +-5.422182613925436e-13 +33 +-282.3104789802417 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +1284.622070312499 +20 +-5.141915756026739e-13 +30 +121.59663039475834 +11 +1237.366328124999 +21 +-4.947015019851619e-13 +31 +402.4781928947584 +12 +1243.1413281249993 +22 +-4.898678034395698e-13 +32 +472.13913039475824 +13 +1243.1413281249993 +23 +-4.898678034395698e-13 +33 +472.13913039475824 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +1284.622070312499 +20 +-5.141915756026739e-13 +30 +121.59663039475834 +11 +1243.1413281249993 +21 +-4.898678034395698e-13 +31 +472.13913039475824 +12 +1270.6447656249993 +22 +-4.889135862655437e-13 +32 +485.89084914475825 +13 +1270.6447656249993 +23 +-4.889135862655437e-13 +33 +485.89084914475825 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +1553.944609374999 +20 +-5.422182613925436e-13 +30 +-282.3104789802417 +11 +1284.622070312499 +21 +-5.141915756026739e-13 +31 +121.59663039475834 +12 +1415.606289062499 +22 +-4.972636126650276e-13 +32 +365.55428664475835 +13 +1415.606289062499 +23 +-4.972636126650276e-13 +33 +365.55428664475835 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +4812.524453124999 +20 +-4.134803393771037e-13 +30 +1572.9985053947585 +11 +5024.539140624999 +21 +-5.526720736875186e-13 +31 +-432.9657914802417 +12 +4317.01140625 +22 +-4.173328972982214e-13 +32 +1517.4772944572583 +13 +4317.01140625 +23 +-4.173328972982214e-13 +33 +1517.4772944572583 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +5024.539140624999 +20 +-5.526720736875186e-13 +30 +-432.9657914802417 +11 +4812.524453124999 +21 +-4.134803393771037e-13 +31 +1572.9985053947585 +12 +5899.704296874999 +22 +-4.0569570543703274e-13 +32 +1685.1869038322584 +13 +5899.704296874999 +23 +-4.0569570543703274e-13 +33 +1685.1869038322584 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +5024.539140624999 +20 +-5.526720736875186e-13 +30 +-432.9657914802417 +11 +5899.704296874999 +21 +-4.0569570543703274e-13 +31 +1685.1869038322584 +12 +5558.8890624999985 +22 +-5.55408247605166e-13 +32 +-472.39821335524175 +13 +5558.8890624999985 +23 +-5.55408247605166e-13 +33 +-472.39821335524175 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +5558.8890624999985 +20 +-5.55408247605166e-13 +30 +-472.39821335524175 +11 +5899.704296874999 +21 +-4.0569570543703274e-13 +31 +1685.1869038322584 +12 +5584.010312499999 +22 +-5.562115682313309e-13 +32 +-483.9752836677417 +13 +5584.010312499999 +23 +-5.562115682313309e-13 +33 +-483.9752836677417 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +1499.749843749999 +20 +-4.2078974311042517e-13 +30 +1467.6588960197578 +11 +1761.808515624999 +21 +-4.722135334665755e-13 +31 +726.5639741447583 +12 +1466.218749999999 +22 +-4.218616721143181e-13 +32 +1452.2107710197583 +13 +1466.218749999999 +23 +-4.218616721143181e-13 +33 +1452.2107710197583 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +1761.808515624999 +20 +-4.722135334665755e-13 +30 +726.5639741447583 +11 +1499.749843749999 +21 +-4.2078974311042517e-13 +31 +1467.6588960197578 +12 +1657.271992187499 +22 +-4.4331778374130655e-13 +32 +1142.9956147697583 +13 +1657.271992187499 +23 +-4.4331778374130655e-13 +33 +1142.9956147697583 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +1761.808515624999 +20 +-4.722135334665755e-13 +30 +726.5639741447583 +11 +1657.271992187499 +21 +-4.4331778374130655e-13 +31 +1142.9956147697583 +12 +1828.7263281249989 +22 +-4.657525314857511e-13 +32 +819.6768257072583 +13 +1828.7263281249989 +23 +-4.657525314857511e-13 +33 +819.6768257072583 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +1761.808515624999 +20 +-4.722135334665755e-13 +30 +726.5639741447583 +11 +1828.7263281249989 +21 +-4.657525314857511e-13 +31 +819.6768257072583 +12 +2291.2677343749992 +22 +-4.559004270019568e-13 +32 +961.6606147697582 +13 +2291.2677343749992 +23 +-4.559004270019568e-13 +33 +961.6606147697582 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +2291.2677343749992 +20 +-4.559004270019568e-13 +30 +961.6606147697582 +11 +1828.7263281249989 +21 +-4.657525314857511e-13 +31 +819.6768257072583 +12 +1839.1032812499989 +22 +-4.5348921286995216e-13 +32 +996.4098725822582 +13 +1839.1032812499989 +23 +-4.5348921286995216e-13 +33 +996.4098725822582 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +2291.2677343749992 +20 +-4.559004270019568e-13 +30 +961.6606147697582 +11 +1839.1032812499989 +21 +-4.5348921286995216e-13 +31 +996.4098725822582 +12 +2046.100937499999 +22 +-4.476668601788303e-13 +32 +1080.3188178947582 +13 +2046.100937499999 +23 +-4.476668601788303e-13 +33 +1080.3188178947582 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3074.808906249999 +20 +-5.51244504687007e-13 +30 +-412.39235398024175 +11 +1553.944609374999 +21 +-5.422182613925436e-13 +31 +-282.3104789802417 +12 +2291.2677343749992 +22 +-4.559004270019568e-13 +32 +961.6606147697582 +13 +2291.2677343749992 +23 +-4.559004270019568e-13 +33 +961.6606147697582 +70 +0 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +3074.808906249999 +21 +-5.51244504687007e-13 +31 +-412.39235398024175 +12 +2291.2677343749992 +22 +-4.559004270019568e-13 +32 +961.6606147697582 +13 +2291.2677343749992 +23 +-4.559004270019568e-13 +33 +961.6606147697582 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3074.808906249999 +20 +-5.51244504687007e-13 +30 +-412.39235398024175 +11 +3557.310156249999 +21 +-4.2027131015760776e-13 +31 +1475.1303022697584 +12 +3187.547734374999 +22 +-5.504568372297071e-13 +32 +-401.0408696052417 +13 +3187.547734374999 +23 +-5.504568372297071e-13 +33 +-401.0408696052417 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +3187.547734374999 +20 +-5.504568372297071e-13 +30 +-401.0408696052417 +11 +3557.310156249999 +21 +-4.2027131015760776e-13 +31 +1475.1303022697584 +12 +3471.118281249999 +22 +-5.476229875383404e-13 +32 +-360.2007914802417 +13 +3471.118281249999 +23 +-5.476229875383404e-13 +33 +-360.2007914802417 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2756.046953124999 +20 +-3.327776097218626e-13 +30 +2736.0474116447585 +11 +2769.392617187499 +21 +-3.3704842031506016e-13 +31 +2674.4985444572585 +12 +2576.245937499999 +22 +-3.385711605822725e-13 +32 +2652.5535444572583 +13 +2576.245937499999 +23 +-3.385711605822725e-13 +33 +2652.5535444572583 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2769.392617187499 +20 +-3.3704842031506016e-13 +30 +2674.4985444572585 +11 +2756.046953124999 +21 +-3.327776097218626e-13 +31 +2736.0474116447585 +12 +2768.9233984374996 +22 +-3.323405732471447e-13 +32 +2742.3457710197586 +13 +2768.9233984374996 +23 +-3.323405732471447e-13 +33 +2742.3457710197586 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +2769.392617187499 +20 +-3.3704842031506016e-13 +30 +2674.4985444572585 +11 +2768.9233984374996 +21 +-3.323405732471447e-13 +31 +2742.3457710197586 +12 +2851.1720312499992 +22 +-3.2625180362193595e-13 +32 +2830.0941889885084 +13 +2851.1720312499992 +23 +-3.2625180362193595e-13 +33 +2830.0941889885084 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +2769.392617187499 +20 +-3.3704842031506016e-13 +30 +2674.4985444572585 +11 +2851.1720312499992 +21 +-3.2625180362193595e-13 +31 +2830.0941889885084 +12 +2840.560468749999 +22 +-3.460790464968055e-13 +32 +2544.3535053947585 +13 +2840.560468749999 +23 +-3.460790464968055e-13 +33 +2544.3535053947585 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +2874.226914062499 +20 +-3.120888164326492e-13 +30 +3034.2043452385083 +11 +2851.1720312499992 +21 +-3.2625180362193595e-13 +31 +2830.0941889885084 +12 +2833.928242187499 +22 +-3.217940941924874e-13 +32 +2894.336552269758 +13 +2833.928242187499 +23 +-3.217940941924874e-13 +33 +2894.336552269758 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2851.1720312499992 +20 +-3.2625180362193595e-13 +30 +2830.0941889885084 +11 +2874.226914062499 +21 +-3.120888164326492e-13 +31 +3034.2043452385083 +12 +2853.924179687499 +22 +-3.69666806659865e-13 +32 +2204.4180561760086 +13 +2853.924179687499 +23 +-3.69666806659865e-13 +33 +2204.4180561760086 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +2921.1939062499996 +20 +-3.080233754149641e-13 +30 +3092.7935249260086 +11 +2874.226914062499 +21 +-3.120888164326492e-13 +31 +3034.2043452385083 +12 +2607.683593749999 +22 +-3.0912786301009684e-13 +32 +3076.8761811760082 +13 +2607.683593749999 +23 +-3.0912786301009684e-13 +33 +3076.8761811760082 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2971.234179687499 +20 +-3.035764911226861e-13 +30 +3156.8798815393284 +11 +2969.875351562499 +21 +-3.150328644328273e-13 +31 +2991.7761421135083 +12 +2942.859179687499 +22 +-3.0020148693299397e-13 +32 +3205.5188178947583 +13 +2942.859179687499 +23 +-3.0020148693299397e-13 +33 +3205.5188178947583 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +2969.875351562499 +20 +-3.150328644328273e-13 +30 +2991.7761421135083 +11 +2971.234179687499 +21 +-3.035764911226861e-13 +31 +3156.8798815393284 +12 +3012.826914062499 +22 +-3.0852365069189783e-13 +32 +3085.5837983635083 +13 +3012.826914062499 +23 +-3.0852365069189783e-13 +33 +3085.5837983635083 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +2969.875351562499 +20 +-3.150328644328273e-13 +30 +2991.7761421135083 +11 +3012.826914062499 +21 +-3.0852365069189783e-13 +31 +3085.5837983635083 +12 +3095.183828124999 +22 +-3.127118125534865e-13 +32 +3025.2260249260084 +13 +3095.183828124999 +23 +-3.127118125534865e-13 +33 +3025.2260249260084 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +3095.183828124999 +20 +-3.127118125534865e-13 +30 +3025.2260249260084 +11 +3012.826914062499 +21 +-3.0852365069189783e-13 +31 +3085.5837983635083 +12 +3355.780703124999 +22 +-3.115174757690672e-13 +32 +3042.4382319572583 +13 +3355.780703124999 +23 +-3.115174757690672e-13 +33 +3042.4382319572583 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3095.183828124999 +20 +-3.127118125534865e-13 +30 +3025.2260249260084 +11 +3355.780703124999 +21 +-3.115174757690672e-13 +31 +3042.4382319572583 +12 +3226.294374999999 +22 +-3.1305117325448547e-13 +32 +3020.3353218010084 +13 +3226.294374999999 +23 +-3.1305117325448547e-13 +33 +3020.3353218010084 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3231.870859374999 +20 +-3.867847990675355e-13 +30 +1957.7217866447581 +11 +3148.855234374999 +21 +-3.9001623924807976e-13 +31 +1911.1518257072585 +12 +3081.765976562499 +22 +-3.824579501298005e-13 +32 +2020.0782514885082 +13 +3081.765976562499 +23 +-3.824579501298005e-13 +33 +2020.0782514885082 +70 +2 + 0 +3DFACE + 8 +ship1 +10 +3196.517031249999 +20 +-3.273600479775963e-13 +30 +2814.122704613508 +11 +3030.016562499999 +21 +-3.618107942697687e-13 +31 +2317.6351264885084 +12 +2969.875351562499 +22 +-3.150328644328273e-13 +32 +2991.7761421135083 +13 +2969.875351562499 +23 +-3.150328644328273e-13 +33 +2991.7761421135083 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +3030.016562499999 +20 +-3.618107942697687e-13 +30 +2317.6351264885084 +11 +3196.517031249999 +21 +-3.273600479775963e-13 +31 +2814.122704613508 +12 +3151.417890624999 +22 +-3.4254612628391646e-13 +32 +2595.268251488508 +13 +3151.417890624999 +23 +-3.4254612628391646e-13 +33 +2595.268251488508 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +3151.417890624999 +20 +-3.4254612628391646e-13 +30 +2595.268251488508 +11 +3196.517031249999 +21 +-3.273600479775963e-13 +31 +2814.122704613508 +12 +3204.728359374999 +22 +-3.3791560587019543e-13 +32 +2662.001083519758 +13 +3204.728359374999 +23 +-3.3791560587019543e-13 +33 +2662.001083519758 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3233.034882812499 +20 +-3.440369340866439e-13 +30 +2573.7834468010083 +11 +3166.911132812499 +21 +-3.5758068191562086e-13 +31 +2378.5974702385083 +12 +3151.417890624999 +22 +-3.4254612628391646e-13 +32 +2595.268251488508 +13 +3151.417890624999 +23 +-3.4254612628391646e-13 +33 +2595.268251488508 +70 +2 + 0 +3DFACE + 8 +ship1 +10 +3030.016562499999 +20 +-3.618107942697687e-13 +30 +2317.6351264885084 +11 +3166.911132812499 +21 +-3.5758068191562086e-13 +31 +2378.5974702385083 +12 +3495.824453124999 +22 +-3.6110765392434114e-13 +32 +2327.7684468010084 +13 +3495.824453124999 +23 +-3.6110765392434114e-13 +33 +2327.7684468010084 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3166.911132812499 +20 +-3.5758068191562086e-13 +30 +2378.5974702385083 +11 +3030.016562499999 +21 +-3.618107942697687e-13 +31 +2317.6351264885084 +12 +3151.417890624999 +22 +-3.4254612628391646e-13 +32 +2595.268251488508 +13 +3151.417890624999 +23 +-3.4254612628391646e-13 +33 +2595.268251488508 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +2811.189179687499 +20 +-3.837296135684142e-13 +30 +2001.7516499260082 +11 +3148.855234374999 +21 +-3.95514884407068e-13 +31 +1831.9079975822583 +12 +2658.178749999999 +22 +-3.931017918947997e-13 +32 +1866.6843257072583 +13 +2658.178749999999 +23 +-3.931017918947997e-13 +33 +1866.6843257072583 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3148.855234374999 +20 +-3.95514884407068e-13 +30 +1831.9079975822583 +11 +2811.189179687499 +21 +-3.837296135684142e-13 +31 +2001.7516499260082 +12 +2853.924179687499 +22 +-3.69666806659865e-13 +32 +2204.4180561760086 +13 +2853.924179687499 +23 +-3.69666806659865e-13 +33 +2204.4180561760086 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3148.855234374999 +20 +-3.95514884407068e-13 +30 +1831.9079975822583 +11 +2853.924179687499 +21 +-3.69666806659865e-13 +31 +2204.4180561760086 +12 +3081.765976562499 +22 +-3.824579501298005e-13 +32 +2020.0782514885082 +13 +3081.765976562499 +23 +-3.824579501298005e-13 +33 +2020.0782514885082 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +3081.765976562499 +20 +-3.824579501298005e-13 +30 +2020.0782514885082 +11 +2853.924179687499 +21 +-3.69666806659865e-13 +31 +2204.4180561760086 +12 +2874.226914062499 +22 +-3.120888164326492e-13 +32 +3034.2043452385083 +13 +2874.226914062499 +23 +-3.120888164326492e-13 +33 +3034.2043452385083 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +3081.765976562499 +20 +-3.824579501298005e-13 +30 +2020.0782514885082 +11 +2874.226914062499 +21 +-3.120888164326492e-13 +31 +3034.2043452385083 +12 +3030.016562499999 +22 +-3.618107942697687e-13 +32 +2317.6351264885084 +13 +3030.016562499999 +23 +-3.618107942697687e-13 +33 +2317.6351264885084 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +3030.016562499999 +20 +-3.618107942697687e-13 +30 +2317.6351264885084 +11 +2874.226914062499 +21 +-3.120888164326492e-13 +31 +3034.2043452385083 +12 +2921.1939062499996 +22 +-3.080233754149641e-13 +32 +3092.7935249260086 +13 +2921.1939062499996 +23 +-3.080233754149641e-13 +33 +3092.7935249260086 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +3030.016562499999 +20 +-3.618107942697687e-13 +30 +2317.6351264885084 +11 +2921.1939062499996 +21 +-3.080233754149641e-13 +31 +3092.7935249260086 +12 +2934.990742187499 +22 +-3.0467328421442117e-13 +32 +3141.073427269758 +13 +2934.990742187499 +23 +-3.0467328421442117e-13 +33 +3141.073427269758 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3030.016562499999 +20 +-3.618107942697687e-13 +30 +2317.6351264885084 +11 +2934.990742187499 +21 +-3.0467328421442117e-13 +31 +3141.073427269758 +12 +2942.859179687499 +22 +-3.0020148693299397e-13 +32 +3205.5188178947583 +13 +2942.859179687499 +23 +-3.0020148693299397e-13 +33 +3205.5188178947583 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3030.016562499999 +20 +-3.618107942697687e-13 +30 +2317.6351264885084 +11 +2942.859179687499 +21 +-3.0020148693299397e-13 +31 +3205.5188178947583 +12 +2969.875351562499 +22 +-3.150328644328273e-13 +32 +2991.7761421135083 +13 +2969.875351562499 +23 +-3.150328644328273e-13 +33 +2991.7761421135083 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +3148.855234374999 +20 +-3.95514884407068e-13 +30 +1831.9079975822583 +11 +3081.765976562499 +21 +-3.824579501298005e-13 +31 +2020.0782514885082 +12 +3148.855234374999 +22 +-3.9001623924807976e-13 +32 +1911.1518257072585 +13 +3148.855234374999 +23 +-3.9001623924807976e-13 +33 +1911.1518257072585 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +2208.324296874999 +20 +-3.5515318848799644e-13 +30 +2413.5813374260083 +11 +2281.3960937499987 +21 +-3.5912533661924474e-13 +31 +2356.336649926008 +12 +2195.781718749999 +22 +-3.5648433396829824e-13 +32 +2394.3975093010085 +13 +2195.781718749999 +23 +-3.5648433396829824e-13 +33 +2394.3975093010085 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2281.3960937499987 +20 +-3.5912533661924474e-13 +30 +2356.336649926008 +11 +2208.324296874999 +21 +-3.5515318848799644e-13 +31 +2413.5813374260083 +12 +2330.7452734374992 +22 +-3.57936634975617e-13 +32 +2373.4676460197584 +13 +2330.7452734374992 +23 +-3.57936634975617e-13 +33 +2373.4676460197584 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +2330.7452734374992 +20 +-3.57936634975617e-13 +30 +2373.4676460197584 +11 +2208.324296874999 +21 +-3.5515318848799644e-13 +31 +2413.5813374260083 +12 +2586.8033593749988 +22 +-3.5470644704858204e-13 +32 +2420.0195600822585 +13 +2586.8033593749988 +23 +-3.5470644704858204e-13 +33 +2420.0195600822585 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +2281.3960937499987 +20 +-3.5912533661924474e-13 +30 +2356.336649926008 +11 +2330.7452734374992 +21 +-3.57936634975617e-13 +31 +2373.4676460197584 +12 +2282.641328124999 +22 +-3.778430828849448e-13 +32 +2086.5854975822585 +13 +2282.641328124999 +23 +-3.778430828849448e-13 +33 +2086.5854975822585 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +2330.7452734374992 +20 +-3.57936634975617e-13 +30 +2373.4676460197584 +11 +2586.8033593749988 +21 +-3.5470644704858204e-13 +31 +2420.0195600822585 +12 +2777.7483203124993 +22 +-3.593833008421443e-13 +32 +2352.6189936760084 +13 +2777.7483203124993 +23 +-3.593833008421443e-13 +33 +2352.6189936760084 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +2777.7483203124993 +20 +-3.593833008421443e-13 +30 +2352.6189936760084 +11 +2586.8033593749988 +21 +-3.5470644704858204e-13 +31 +2420.0195600822585 +12 +2734.7335937499993 +22 +-3.546986204641494e-13 +32 +2420.1323530510085 +13 +2734.7335937499993 +23 +-3.546986204641494e-13 +33 +2420.1323530510085 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +2777.7483203124993 +20 +-3.593833008421443e-13 +30 +2352.6189936760084 +11 +2734.7335937499993 +21 +-3.546986204641494e-13 +31 +2420.1323530510085 +12 +2840.560468749999 +22 +-3.460790464968055e-13 +32 +2544.3535053947585 +13 +2840.560468749999 +23 +-3.460790464968055e-13 +33 +2544.3535053947585 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +2777.7483203124993 +20 +-3.593833008421443e-13 +30 +2352.6189936760084 +11 +2840.560468749999 +21 +-3.460790464968055e-13 +31 +2544.3535053947585 +12 +2853.924179687499 +22 +-3.69666806659865e-13 +32 +2204.4180561760086 +13 +2853.924179687499 +23 +-3.69666806659865e-13 +33 +2204.4180561760086 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +2853.924179687499 +20 +-3.69666806659865e-13 +30 +2204.4180561760086 +11 +2840.560468749999 +21 +-3.460790464968055e-13 +31 +2544.3535053947585 +12 +2851.1720312499992 +22 +-3.2625180362193595e-13 +32 +2830.0941889885084 +13 +2851.1720312499992 +23 +-3.2625180362193595e-13 +33 +2830.0941889885084 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +2330.7452734374992 +20 +-3.955142582803135e-13 +30 +1831.9170210197585 +11 +2282.641328124999 +21 +-3.778430828849448e-13 +31 +2086.5854975822585 +12 +2330.7452734374992 +22 +-3.57936634975617e-13 +32 +2373.4676460197584 +13 +2330.7452734374992 +23 +-3.57936634975617e-13 +33 +2373.4676460197584 +70 +2 + 0 +3DFACE + 8 +ship1 +10 +3568.977460937499 +20 +-3.857278971057532e-13 +30 +1972.9533491447578 +11 +3499.154101562499 +21 +-3.929064403473612e-13 +31 +1869.4996382072582 +12 +3499.154101562499 +22 +-3.6895490053987314e-13 +32 +2214.6777046135085 +13 +3499.154101562499 +23 +-3.6895490053987314e-13 +33 +2214.6777046135085 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3499.154101562499 +20 +-3.929064403473612e-13 +30 +1869.4996382072582 +11 +3568.977460937499 +21 +-3.857278971057532e-13 +31 +1972.9533491447578 +12 +3557.310156249999 +22 +-4.2027131015760776e-13 +32 +1475.1303022697584 +13 +3557.310156249999 +23 +-4.2027131015760776e-13 +33 +1475.1303022697584 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +3568.977460937499 +21 +-3.857278971057532e-13 +31 +1972.9533491447578 +12 +3570.231718749999 +22 +-4.02744770042554e-13 +32 +1727.7143647697585 +13 +3570.231718749999 +23 +-4.02744770042554e-13 +33 +1727.7143647697585 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +3376.498515624999 +21 +-3.999509924634825e-13 +31 +1767.9769428947584 +12 +3499.154101562499 +22 +-3.929064403473612e-13 +32 +1869.4996382072582 +13 +3499.154101562499 +23 +-3.929064403473612e-13 +33 +1869.4996382072582 +70 +12 + 0 +3DFACE + 8 +ship1 +10 +4317.01140625 +20 +-4.173328972982214e-13 +30 +1517.4772944572583 +11 +4225.549843749999 +21 +-4.1738611807236326e-13 +31 +1516.7103022697584 +12 +4225.549843749999 +22 +-3.966256332697469e-13 +32 +1815.9004194572585 +13 +4225.549843749999 +23 +-3.966256332697469e-13 +33 +1815.9004194572585 +70 +0 + 0 +3DFACE + 8 +ship1 +10 +3471.118281249999 +20 +-5.476229875383404e-13 +30 +-360.2007914802417 +11 +3932.450546874999 +21 +-4.1888882228342817e-13 +31 +1495.0540522697584 +12 +4225.549843749999 +22 +-4.1738611807236326e-13 +32 +1516.7103022697584 +13 +4225.549843749999 +23 +-4.1738611807236326e-13 +33 +1516.7103022697584 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3932.450546874999 +20 +-4.1888882228342817e-13 +30 +1495.0540522697584 +11 +3471.118281249999 +21 +-5.476229875383404e-13 +31 +-360.2007914802417 +12 +3557.310156249999 +22 +-4.2027131015760776e-13 +32 +1475.1303022697584 +13 +3557.310156249999 +23 +-4.2027131015760776e-13 +33 +1475.1303022697584 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3932.450546874999 +20 +-4.1888882228342817e-13 +30 +1495.0540522697584 +11 +3557.310156249999 +21 +-4.2027131015760776e-13 +31 +1475.1303022697584 +12 +3603.816953124999 +22 +-4.1503062922151894e-13 +32 +1550.6564741447578 +13 +3603.816953124999 +23 +-4.1503062922151894e-13 +33 +1550.6564741447578 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +4225.549843749999 +20 +-4.1738611807236326e-13 +30 +1516.7103022697584 +11 +3820.343359374999 +21 +-5.491745296362649e-13 +31 +-382.5608696052417 +12 +3471.118281249999 +22 +-5.476229875383404e-13 +32 +-360.2007914802417 +13 +3471.118281249999 +23 +-5.476229875383404e-13 +33 +-360.2007914802417 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3820.343359374999 +20 +-5.491745296362649e-13 +30 +-382.5608696052417 +11 +4225.549843749999 +21 +-4.1738611807236326e-13 +31 +1516.7103022697584 +12 +4099.654843749999 +22 +-5.538967776195364e-13 +32 +-450.6156352302417 +13 +4099.654843749999 +23 +-5.538967776195364e-13 +33 +-450.6156352302417 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +4099.654843749999 +20 +-5.538967776195364e-13 +30 +-450.6156352302417 +11 +4225.549843749999 +21 +-4.1738611807236326e-13 +31 +1516.7103022697584 +12 +4238.5075 +22 +-5.560130860501194e-13 +32 +-481.1148539802417 +13 +4238.5075 +23 +-5.560130860501194e-13 +33 +-481.1148539802417 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +4238.5075 +20 +-5.560130860501194e-13 +30 +-481.1148539802417 +11 +4225.549843749999 +21 +-4.1738611807236326e-13 +31 +1516.7103022697584 +12 +4317.01140625 +22 +-4.173328972982214e-13 +32 +1517.4772944572583 +13 +4317.01140625 +23 +-4.173328972982214e-13 +33 +1517.4772944572583 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +7258.850546874999 +20 +-3.9946449197515037e-13 +30 +1774.9881538322584 +11 +7255.945 +21 +-5.447891378469739e-13 +31 +-319.3607133552417 +12 +6709.756328124999 +22 +-3.9959535246686385e-13 +32 +1773.1022553947578 +13 +6709.756328124999 +23 +-3.9959535246686385e-13 +33 +1773.1022553947578 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +7255.945 +20 +-5.447891378469739e-13 +30 +-319.3607133552417 +11 +7258.850546874999 +21 +-3.9946449197515037e-13 +31 +1774.9881538322584 +12 +7260.2221093749995 +22 +-4.698655581367866e-13 +32 +760.4018647697583 +13 +7260.2221093749995 +23 +-4.698655581367866e-13 +33 +760.4018647697583 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +7260.2221093749995 +20 +-4.698655581367866e-13 +30 +760.4018647697583 +11 +7258.850546874999 +21 +-3.9946449197515037e-13 +31 +1774.9881538322584 +12 +7305.249062499999 +22 +-4.141027093711863e-13 +32 +1564.0292085197584 +13 +7305.249062499999 +23 +-4.141027093711863e-13 +33 +1564.0292085197584 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +7260.2221093749995 +20 +-4.698655581367866e-13 +30 +760.4018647697583 +11 +7305.249062499999 +21 +-4.141027093711863e-13 +31 +1564.0292085197584 +12 +7280.795546874999 +22 +-4.579077893772378e-13 +32 +932.7314741447583 +13 +7280.795546874999 +23 +-4.579077893772378e-13 +33 +932.7314741447583 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +7280.795546874999 +20 +-4.579077893772378e-13 +30 +932.7314741447583 +11 +7305.249062499999 +21 +-4.141027093711863e-13 +31 +1564.0292085197584 +12 +7360.273984374999 +22 +-4.26528820943184e-13 +32 +1384.9500678947584 +13 +7360.273984374999 +23 +-4.26528820943184e-13 +33 +1384.9500678947584 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +7280.795546874999 +20 +-4.579077893772378e-13 +30 +932.7314741447583 +11 +7360.273984374999 +21 +-4.26528820943184e-13 +31 +1384.9500678947584 +12 +7383.211562499999 +22 +-4.265025236194904e-13 +32 +1385.329052269758 +13 +7383.211562499999 +23 +-4.265025236194904e-13 +33 +1385.329052269758 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +6188.634765625 +20 +-4.0306409468740535e-13 +30 +1723.1124116447581 +11 +7323.963671874999 +21 +-5.684341886080801e-13 +31 +-660.1218071052417 +12 +5899.704296874999 +22 +-4.0569570543703274e-13 +32 +1685.1869038322584 +13 +5899.704296874999 +23 +-4.0569570543703274e-13 +33 +1685.1869038322584 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +7323.963671874999 +20 +-5.684341886080801e-13 +30 +-660.1218071052417 +11 +6188.634765625 +21 +-4.0306409468740535e-13 +31 +1723.1124116447581 +12 +6709.756328124999 +22 +-3.9959535246686385e-13 +32 +1773.1022553947578 +13 +6709.756328124999 +23 +-3.9959535246686385e-13 +33 +1773.1022553947578 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +7323.963671874999 +20 +-5.684341886080801e-13 +30 +-660.1218071052417 +11 +6709.756328124999 +21 +-3.9959535246686385e-13 +31 +1773.1022553947578 +12 +7255.945 +22 +-5.447891378469739e-13 +32 +-319.3607133552417 +13 +7255.945 +23 +-5.447891378469739e-13 +33 +-319.3607133552417 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +7323.963671874999 +20 +-5.684341886080801e-13 +30 +-660.1218071052417 +11 +7255.945 +21 +-5.447891378469739e-13 +31 +-319.3607133552417 +12 +7309.291562499999 +22 +-5.621823129632955e-13 +32 +-570.0227836677417 +13 +7309.291562499999 +23 +-5.621823129632955e-13 +33 +-570.0227836677417 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +7311.6015625 +20 +-4.053006194548736e-13 +30 +1690.8806928947583 +11 +7305.249062499999 +21 +-4.141027093711863e-13 +31 +1564.0292085197584 +12 +7258.850546874999 +22 +-3.9946449197515037e-13 +32 +1774.9881538322584 +13 +7258.850546874999 +23 +-3.9946449197515037e-13 +33 +1774.9881538322584 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +7305.249062499999 +20 +-4.141027093711863e-13 +30 +1564.0292085197584 +11 +7311.6015625 +21 +-4.053006194548736e-13 +31 +1690.8806928947583 +12 +7441.9 +22 +-4.0808938801990834e-13 +32 +1650.6903022697584 +13 +7441.9 +23 +-4.0808938801990834e-13 +33 +1650.6903022697584 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +5899.704296874999 +20 +-4.0569570543703274e-13 +30 +1685.1869038322584 +11 +5653.743437499999 +21 +-5.620602182461465e-13 +31 +-568.2632133552418 +12 +5584.010312499999 +22 +-5.562115682313309e-13 +32 +-483.9752836677417 +13 +5584.010312499999 +23 +-5.562115682313309e-13 +33 +-483.9752836677417 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +5653.743437499999 +20 +-5.620602182461465e-13 +30 +-568.2632133552418 +11 +5899.704296874999 +21 +-4.0569570543703274e-13 +31 +1685.1869038322584 +12 +6595.1947656249995 +22 +-5.671907008734239e-13 +32 +-642.2012602302417 +13 +6595.1947656249995 +23 +-5.671907008734239e-13 +33 +-642.2012602302417 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +6595.1947656249995 +20 +-5.671907008734239e-13 +30 +-642.2012602302417 +11 +5899.704296874999 +21 +-4.0569570543703274e-13 +31 +1685.1869038322584 +12 +6668.086093749998 +22 +-5.624183627497836e-13 +32 +-573.4246196052417 +13 +6668.086093749998 +23 +-5.624183627497836e-13 +33 +-573.4246196052417 +70 +3 + 0 +3DFACE + 8 +ship1 +10 +6668.086093749998 +20 +-5.624183627497836e-13 +30 +-573.4246196052417 +11 +5899.704296874999 +21 +-4.0569570543703274e-13 +31 +1685.1869038322584 +12 +7323.963671874999 +22 +-5.684341886080801e-13 +32 +-660.1218071052417 +13 +7323.963671874999 +23 +-5.684341886080801e-13 +33 +-660.1218071052417 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2406.984296874999 +20 +-4.400556633497865e-13 +30 +1190.0077241447584 +11 +2400.198671874999 +21 +-4.4558937160703303e-13 +31 +1110.2585835197583 +12 +1732.283828124999 +22 +-4.3997051011115963e-13 +32 +1191.2349116447583 +13 +1732.283828124999 +23 +-4.3997051011115963e-13 +33 +1191.2349116447583 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2496.695312499999 +20 +-4.0924647026242834e-13 +30 +1634.0149897697584 +11 +2442.771249999999 +21 +-4.251813961672625e-13 +31 +1404.3685053947584 +12 +2415.917499999999 +22 +-4.1426675458089433e-13 +32 +1561.6650678947585 +13 +2415.917499999999 +23 +-4.1426675458089433e-13 +33 +1561.6650678947585 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2400.198671874999 +20 +-4.4558937160703303e-13 +30 +1110.2585835197583 +11 +3557.310156249999 +21 +-4.2027131015760776e-13 +31 +1475.1303022697584 +12 +2291.2677343749992 +22 +-4.559004270019568e-13 +32 +961.6606147697582 +13 +2291.2677343749992 +23 +-4.559004270019568e-13 +33 +961.6606147697582 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +2400.198671874999 +21 +-4.4558937160703303e-13 +31 +1110.2585835197583 +12 +2406.984296874999 +22 +-4.400556633497865e-13 +32 +1190.0077241447584 +13 +2406.984296874999 +23 +-4.400556633497865e-13 +33 +1190.0077241447584 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +2406.984296874999 +21 +-4.400556633497865e-13 +31 +1190.0077241447584 +12 +2442.771249999999 +22 +-4.251813961672625e-13 +32 +1404.3685053947584 +13 +2442.771249999999 +23 +-4.251813961672625e-13 +33 +1404.3685053947584 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +2442.771249999999 +21 +-4.251813961672625e-13 +31 +1404.3685053947584 +12 +2496.695312499999 +22 +-4.0924647026242834e-13 +32 +1634.0149897697584 +13 +2496.695312499999 +23 +-4.0924647026242834e-13 +33 +1634.0149897697584 +70 +15 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +2496.695312499999 +21 +-4.0924647026242834e-13 +31 +1634.0149897697584 +12 +2509.671015624999 +22 +-3.949670234967839e-13 +32 +1839.8035053947583 +13 +2509.671015624999 +23 +-3.949670234967839e-13 +33 +1839.8035053947583 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +2509.671015624999 +21 +-3.949670234967839e-13 +31 +1839.8035053947583 +12 +2658.178749999999 +22 +-3.931017918947997e-13 +32 +1866.6843257072583 +13 +2658.178749999999 +23 +-3.931017918947997e-13 +33 +1866.6843257072583 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +2658.178749999999 +21 +-3.931017918947997e-13 +31 +1866.6843257072583 +12 +3148.855234374999 +22 +-3.95514884407068e-13 +32 +1831.9079975822583 +13 +3148.855234374999 +23 +-3.95514884407068e-13 +33 +1831.9079975822583 +70 +13 + 0 +3DFACE + 8 +ship1 +10 +3557.310156249999 +20 +-4.2027131015760776e-13 +30 +1475.1303022697584 +11 +3148.855234374999 +21 +-3.95514884407068e-13 +31 +1831.9079975822583 +12 +3376.498515624999 +22 +-3.999509924634825e-13 +32 +1767.9769428947584 +13 +3376.498515624999 +23 +-3.999509924634825e-13 +33 +1767.9769428947584 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +5024.539140624999 +20 +-5.526720736875186e-13 +30 +-432.9657914802417 +11 +4238.5075 +21 +-5.560130860501194e-13 +31 +-481.1148539802417 +12 +4317.01140625 +22 +-4.173328972982214e-13 +32 +1517.4772944572583 +13 +4317.01140625 +23 +-4.173328972982214e-13 +33 +1517.4772944572583 +70 +0 + 0 +3DFACE + 8 +ship1 +10 +2971.234179687499 +20 +-2.465915231422641e-13 +30 +3978.1198193388427 +11 +2942.859179687499 +21 +-3.0020148693299397e-13 +31 +3205.5188178947583 +12 +2942.859179687499 +22 +-2.465915231422641e-13 +32 +3978.1198193388427 +13 +2942.859179687499 +23 +-2.465915231422641e-13 +33 +3978.1198193388427 +70 +1 + 0 +3DFACE + 8 +ship1 +10 +2942.859179687499 +20 +-3.0020148693299397e-13 +30 +3205.5188178947583 +11 +2971.234179687499 +21 +-2.465915231422641e-13 +31 +3978.1198193388427 +12 +2971.234179687499 +22 +-3.035764911226861e-13 +32 +3156.8798815393284 +13 +2971.234179687499 +23 +-3.035764911226861e-13 +33 +3156.8798815393284 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +1457.96484375 +20 +9.113482809120638e-13 +30 +-805.9081714760168 +11 +122.25 +21 +9.132018600511993e-13 +31 +-779.1952808510168 +12 +72.421875 +22 +1.0071948700410283e-12 +32 +575.3867503989832 +13 +72.421875 +23 +1.0071948700410283e-12 +33 +575.3867503989832 +70 +0 + 0 +3DFACE + 8 +ship7 +10 +5308.705078125 +20 +1.061115767735793e-12 +30 +1352.4687816489832 +11 +5280.205078125 +21 +1.050872496660693e-12 +31 +1204.8476878989832 +12 +5265.626953125 +22 +1.0582542871520606e-12 +32 +1311.2305003989832 +13 +5265.626953125 +23 +1.0582542871520606e-12 +33 +1311.2305003989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5701.845703125 +20 +1.0816307701930206e-12 +30 +1648.1211253989832 +11 +5308.705078125 +21 +1.0772966720085098e-12 +31 +1585.6601878989832 +12 +5275.845703125 +22 +1.0817885216091172e-12 +32 +1650.3945628989832 +13 +5275.845703125 +23 +1.0817885216091172e-12 +33 +1650.3945628989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5308.705078125 +20 +1.0772966720085098e-12 +30 +1585.6601878989832 +11 +5701.845703125 +21 +1.0816307701930206e-12 +31 +1648.1211253989832 +12 +5308.705078125 +22 +1.061115767735793e-12 +32 +1352.4687816489832 +13 +5308.705078125 +23 +1.061115767735793e-12 +33 +1352.4687816489832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +5308.705078125 +20 +1.061115767735793e-12 +30 +1352.4687816489832 +11 +5701.845703125 +21 +1.0816307701930206e-12 +31 +1648.1211253989832 +12 +5606.642578125 +22 +1.0167916855707837e-12 +32 +713.6914378989832 +13 +5606.642578125 +23 +1.0167916855707837e-12 +33 +713.6914378989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +5606.642578125 +20 +1.0167916855707837e-12 +30 +713.6914378989832 +11 +5701.845703125 +21 +1.0816307701930206e-12 +31 +1648.1211253989832 +12 +5706.134765625 +22 +1.080834694747873e-12 +32 +1636.6484691489832 +13 +5706.134765625 +23 +1.080834694747873e-12 +33 +1636.6484691489832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5200.892578125 +20 +1.0141310534395043e-12 +30 +675.3476878989832 +11 +5606.642578125 +21 +1.0167916855707837e-12 +31 +713.6914378989832 +12 +5099.056640625 +22 +9.979013600690256e-13 +32 +441.45315664898317 +13 +5099.056640625 +23 +9.979013600690256e-13 +33 +441.45315664898317 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5606.642578125 +20 +1.0167916855707837e-12 +30 +713.6914378989832 +11 +5200.892578125 +21 +1.0141310534395043e-12 +31 +675.3476878989832 +12 +5280.205078125 +22 +1.050872496660693e-12 +32 +1204.8476878989832 +13 +5280.205078125 +23 +1.050872496660693e-12 +33 +1204.8476878989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +5606.642578125 +20 +1.0167916855707837e-12 +30 +713.6914378989832 +11 +5280.205078125 +21 +1.050872496660693e-12 +31 +1204.8476878989832 +12 +5308.705078125 +22 +1.061115767735793e-12 +32 +1352.4687816489832 +13 +5308.705078125 +23 +1.061115767735793e-12 +33 +1352.4687816489832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +1032.29296875 +20 +1.0168697481272027e-12 +30 +714.8164378989832 +11 +1124.26171875 +21 +1.0132252025243926e-12 +31 +662.2930003989832 +12 +998.296875 +22 +1.0134252378252162e-12 +32 +665.1758128989832 +13 +998.296875 +23 +1.0134252378252162e-12 +33 +665.1758128989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +1124.26171875 +20 +1.0132252025243926e-12 +30 +662.2930003989832 +11 +1032.29296875 +21 +1.0168697481272027e-12 +31 +714.8164378989832 +12 +1127.26171875 +22 +1.0179040769997538e-12 +32 +729.7226878989832 +13 +1127.26171875 +23 +1.0179040769997538e-12 +33 +729.7226878989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2429.91796875 +20 +1.0132252025243926e-12 +30 +662.2930003989832 +11 +2793.6796875 +21 +9.094947017729282e-13 +31 +-832.6210621010168 +12 +1457.96484375 +22 +9.113482809120638e-13 +32 +-805.9081714760168 +13 +1457.96484375 +23 +9.113482809120638e-13 +33 +-805.9081714760168 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2793.6796875 +20 +9.094947017729282e-13 +30 +-832.6210621010168 +11 +2429.91796875 +21 +1.0132252025243926e-12 +31 +662.2930003989832 +12 +2691.52734375 +22 +1.0220755448583918e-12 +32 +789.8398753989832 +13 +2691.52734375 +23 +1.0220755448583918e-12 +33 +789.8398753989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2793.6796875 +20 +9.094947017729282e-13 +30 +-832.6210621010168 +11 +2691.52734375 +21 +1.0220755448583918e-12 +31 +789.8398753989832 +12 +2713.41796875 +22 +1.038795568661377e-12 +32 +1030.8008128989832 +13 +2713.41796875 +23 +1.038795568661377e-12 +33 +1030.8008128989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2793.6796875 +20 +9.094947017729282e-13 +30 +-832.6210621010168 +11 +2713.41796875 +21 +1.038795568661377e-12 +31 +1030.8008128989832 +12 +2824.62890625 +22 +1.0451657985258156e-12 +32 +1122.6055003989832 +13 +2824.62890625 +23 +1.0451657985258156e-12 +33 +1122.6055003989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2793.6796875 +20 +9.094947017729282e-13 +30 +-832.6210621010168 +11 +2824.62890625 +21 +1.0451657985258156e-12 +31 +1122.6055003989832 +12 +3198.515625 +22 +9.133213933407158e-13 +32 +-777.4726246010168 +13 +3198.515625 +23 +9.133213933407158e-13 +33 +-777.4726246010168 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +3198.515625 +20 +9.133213933407158e-13 +30 +-777.4726246010168 +11 +2824.62890625 +21 +1.0451657985258156e-12 +31 +1122.6055003989832 +12 +2947.76953125 +22 +1.0478784723613743e-12 +32 +1161.6992503989832 +13 +2947.76953125 +23 +1.0478784723613743e-12 +33 +1161.6992503989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3198.515625 +20 +9.133213933407158e-13 +30 +-777.4726246010168 +11 +2947.76953125 +21 +1.0478784723613743e-12 +31 +1161.6992503989832 +12 +2977.2421875 +22 +1.0452780134506678e-12 +32 +1124.2226878989832 +13 +2977.2421875 +23 +1.0452780134506678e-12 +33 +1124.2226878989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3198.515625 +20 +9.133213933407158e-13 +30 +-777.4726246010168 +11 +2977.2421875 +21 +1.0452780134506678e-12 +31 +1124.2226878989832 +12 +3034.59375 +22 +1.0467921017845438e-12 +32 +1146.0430003989832 +13 +3034.59375 +23 +1.0467921017845438e-12 +33 +1146.0430003989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3198.515625 +20 +9.133213933407158e-13 +30 +-777.4726246010168 +11 +3034.59375 +21 +1.0467921017845438e-12 +31 +1146.0430003989832 +12 +3095.28515625 +22 +1.0498934620989386e-12 +32 +1190.7383128989832 +13 +3095.28515625 +23 +1.0498934620989386e-12 +33 +1190.7383128989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3198.515625 +20 +9.133213933407158e-13 +30 +-777.4726246010168 +11 +3095.28515625 +21 +1.0498934620989386e-12 +31 +1190.7383128989832 +12 +3134.94140625 +22 +1.0495161597429137e-12 +32 +1185.3008128989832 +13 +3134.94140625 +23 +1.0495161597429137e-12 +33 +1185.3008128989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3198.515625 +20 +9.133213933407158e-13 +30 +-777.4726246010168 +11 +3134.94140625 +21 +1.0495161597429137e-12 +31 +1185.3008128989832 +12 +3159.59765625 +22 +1.0608466145464734e-12 +32 +1348.5898753989832 +13 +3159.59765625 +23 +1.0608466145464734e-12 +33 +1348.5898753989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3198.515625 +20 +9.133213933407158e-13 +30 +-777.4726246010168 +11 +3159.59765625 +21 +1.0608466145464734e-12 +31 +1348.5898753989832 +12 +3220.4765625 +22 +1.0490445317978825e-12 +32 +1178.5039378989832 +13 +3220.4765625 +23 +1.0490445317978825e-12 +33 +1178.5039378989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3198.515625 +20 +9.133213933407158e-13 +30 +-777.4726246010168 +11 +3220.4765625 +21 +1.0490445317978825e-12 +31 +1178.5039378989832 +12 +3660.609375 +22 +1.0492917298932092e-12 +32 +1182.0664378989832 +13 +3660.609375 +23 +1.0492917298932092e-12 +33 +1182.0664378989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +3660.609375 +20 +1.0492917298932092e-12 +30 +1182.0664378989832 +11 +3220.4765625 +21 +1.0490445317978825e-12 +31 +1178.5039378989832 +12 +3570.0703125 +22 +1.0510765977196634e-12 +32 +1207.7890941489832 +13 +3570.0703125 +23 +1.0510765977196634e-12 +33 +1207.7890941489832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +81.99609375 +20 +1.012002222473829e-12 +30 +644.6680003989832 +11 +6.0703125 +21 +1.0074835388694525e-12 +31 +579.5469066489832 +12 +0.0 +22 +1.0083056351667397e-12 +32 +591.3945628989832 +13 +0.0 +23 +1.0083056351667397e-12 +33 +591.3945628989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6.0703125 +20 +1.0074835388694525e-12 +30 +579.5469066489832 +11 +81.99609375 +21 +1.012002222473829e-12 +31 +644.6680003989832 +12 +72.421875 +22 +1.0071948700410283e-12 +32 +575.3867503989832 +13 +72.421875 +23 +1.0071948700410283e-12 +33 +575.3867503989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +72.421875 +20 +1.0071948700410283e-12 +30 +575.3867503989832 +11 +81.99609375 +21 +1.012002222473829e-12 +31 +644.6680003989832 +12 +1457.96484375 +22 +9.113482809120638e-13 +32 +-805.9081714760168 +13 +1457.96484375 +23 +9.113482809120638e-13 +33 +-805.9081714760168 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +1457.96484375 +20 +9.113482809120638e-13 +30 +-805.9081714760168 +11 +81.99609375 +21 +1.012002222473829e-12 +31 +644.6680003989832 +12 +351.73828125 +22 +1.010780868726524e-12 +32 +627.0664378989832 +13 +351.73828125 +23 +1.010780868726524e-12 +33 +627.0664378989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +1457.96484375 +20 +9.113482809120638e-13 +30 +-805.9081714760168 +11 +351.73828125 +21 +1.010780868726524e-12 +31 +627.0664378989832 +12 +736.0078125 +22 +1.0116509409699437e-12 +32 +639.6055003989832 +13 +736.0078125 +23 +1.0116509409699437e-12 +33 +639.6055003989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +1457.96484375 +20 +9.113482809120638e-13 +30 +-805.9081714760168 +11 +736.0078125 +21 +1.0116509409699437e-12 +31 +639.6055003989832 +12 +825.09375 +22 +1.0134252378252162e-12 +32 +665.1758128989832 +13 +825.09375 +23 +1.0134252378252162e-12 +33 +665.1758128989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +1457.96484375 +20 +9.113482809120638e-13 +30 +-805.9081714760168 +11 +825.09375 +21 +1.0134252378252162e-12 +31 +665.1758128989832 +12 +998.296875 +22 +1.0134252378252162e-12 +32 +665.1758128989832 +13 +998.296875 +23 +1.0134252378252162e-12 +33 +665.1758128989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +1457.96484375 +20 +9.113482809120638e-13 +30 +-805.9081714760168 +11 +998.296875 +21 +1.0134252378252162e-12 +31 +665.1758128989832 +12 +1124.26171875 +22 +1.0132252025243926e-12 +32 +662.2930003989832 +13 +1124.26171875 +23 +1.0132252025243926e-12 +33 +662.2930003989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +1457.96484375 +20 +9.113482809120638e-13 +30 +-805.9081714760168 +11 +1124.26171875 +21 +1.0132252025243926e-12 +31 +662.2930003989832 +12 +2429.91796875 +22 +1.0132252025243926e-12 +32 +662.2930003989832 +13 +2429.91796875 +23 +1.0132252025243926e-12 +33 +662.2930003989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2456.23828125 +20 +1.0261567528861704e-12 +30 +848.6562816489832 +11 +2429.91796875 +21 +1.0132252025243926e-12 +31 +662.2930003989832 +12 +2400.515625 +22 +1.0255208683120076e-12 +32 +839.4922191489832 +13 +2400.515625 +23 +1.0255208683120076e-12 +33 +839.4922191489832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2429.91796875 +20 +1.0132252025243926e-12 +30 +662.2930003989832 +11 +2456.23828125 +21 +1.0261567528861704e-12 +31 +848.6562816489832 +12 +2481.15234375 +22 +1.0220755448583918e-12 +32 +789.8398753989832 +13 +2481.15234375 +23 +1.0220755448583918e-12 +33 +789.8398753989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2429.91796875 +20 +1.0132252025243926e-12 +30 +662.2930003989832 +11 +2481.15234375 +21 +1.0220755448583918e-12 +31 +789.8398753989832 +12 +2691.52734375 +22 +1.0220755448583918e-12 +32 +789.8398753989832 +13 +2691.52734375 +23 +1.0220755448583918e-12 +33 +789.8398753989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2093.98828125 +20 +1.1038054151257803e-12 +30 +1967.6914378989832 +11 +2659.5234375 +21 +1.028806814046268e-12 +31 +886.8476878989832 +12 +2093.9765625 +22 +1.1009057164154679e-12 +32 +1925.9023753989832 +13 +2093.9765625 +23 +1.1009057164154679e-12 +33 +1925.9023753989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2659.5234375 +20 +1.028806814046268e-12 +30 +886.8476878989832 +11 +2093.98828125 +21 +1.1038054151257803e-12 +31 +1967.6914378989832 +12 +2693.37890625 +22 +1.0326993708960341e-12 +32 +942.9453441489832 +13 +2693.37890625 +23 +1.0326993708960341e-12 +33 +942.9453441489832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2659.5234375 +20 +1.028806814046268e-12 +30 +886.8476878989832 +11 +2693.37890625 +21 +1.0326993708960341e-12 +31 +942.9453441489832 +12 +2691.52734375 +22 +1.0220755448583918e-12 +32 +789.8398753989832 +13 +2691.52734375 +23 +1.0220755448583918e-12 +33 +789.8398753989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +2691.52734375 +20 +1.0220755448583918e-12 +30 +789.8398753989832 +11 +2693.37890625 +21 +1.0326993708960341e-12 +31 +942.9453441489832 +12 +2713.41796875 +22 +1.038795568661377e-12 +32 +1030.8008128989832 +13 +2713.41796875 +23 +1.038795568661377e-12 +33 +1030.8008128989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +2713.41796875 +20 +1.038795568661377e-12 +30 +1030.8008128989832 +11 +2693.37890625 +21 +1.0326993708960341e-12 +31 +942.9453441489832 +12 +2701.3828125 +22 +1.0389232334671872e-12 +32 +1032.6406566489832 +13 +2701.3828125 +23 +1.0389232334671872e-12 +33 +1032.6406566489832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2837.82421875 +20 +1.1214869907304886e-12 +30 +2222.509797273983 +11 +2826.08203125 +21 +1.1157689084728e-12 +31 +2140.103547273983 +12 +2794.58203125 +22 +1.121646368449844e-12 +32 +2224.806672273983 +13 +2794.58203125 +23 +1.121646368449844e-12 +33 +2224.806672273983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2824.62890625 +20 +1.0451657985258156e-12 +30 +1122.6055003989832 +11 +2713.41796875 +21 +1.038795568661377e-12 +31 +1030.8008128989832 +12 +2802.17578125 +22 +1.0923302193321938e-12 +32 +1802.3164378989832 +13 +2802.17578125 +23 +1.0923302193321938e-12 +33 +1802.3164378989832 +70 +12 + 0 +3DFACE + 8 +ship7 +10 +2908.51171875 +20 +1.1679411235886172e-12 +30 +2891.984406648983 +11 +2889.24609375 +21 +1.1446630318948103e-12 +31 +2556.511750398983 +12 +2812.60546875 +22 +1.1631915049215014e-12 +32 +2823.535187898983 +13 +2812.60546875 +23 +1.1631915049215014e-12 +33 +2823.535187898983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2949.85546875 +20 +1.2016547967178687e-12 +30 +3377.849641023983 +11 +2685.99609375 +21 +1.1947210527742808e-12 +31 +3277.923859773983 +12 +2679.4453125 +22 +1.1962172517723108e-12 +32 +3299.486359773983 +13 +2679.4453125 +23 +1.1962172517723108e-12 +33 +3299.486359773983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2685.99609375 +20 +1.1947210527742808e-12 +30 +3277.923859773983 +11 +2949.85546875 +21 +1.2016547967178687e-12 +31 +3377.849641023983 +12 +2945.40234375 +22 +1.1991897275534513e-12 +32 +3342.324250398983 +13 +2945.40234375 +23 +1.1991897275534513e-12 +33 +3342.324250398983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +2798.89453125 +20 +1.0957568402983342e-12 +30 +1851.6992503989832 +11 +2281.8515625 +21 +1.0894484099577273e-12 +31 +1760.7851878989832 +12 +2279.5078125 +22 +1.0912243331162585e-12 +32 +1786.3789378989832 +13 +2279.5078125 +23 +1.0912243331162585e-12 +33 +1786.3789378989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2281.8515625 +20 +1.0894484099577273e-12 +30 +1760.7851878989832 +11 +2798.89453125 +21 +1.0957568402983342e-12 +31 +1851.6992503989832 +12 +2802.17578125 +22 +1.0923302193321938e-12 +32 +1802.3164378989832 +13 +2802.17578125 +23 +1.0923302193321938e-12 +33 +1802.3164378989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +2802.17578125 +20 +1.0923302193321938e-12 +30 +1802.3164378989832 +11 +2798.89453125 +21 +1.0957568402983342e-12 +31 +1851.6992503989832 +12 +2826.08203125 +22 +1.1157689084728e-12 +32 +2140.103547273983 +13 +2826.08203125 +23 +1.1157689084728e-12 +33 +2140.103547273983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2802.17578125 +20 +1.0923302193321938e-12 +30 +1802.3164378989832 +11 +2826.08203125 +21 +1.1157689084728e-12 +31 +2140.103547273983 +12 +2824.62890625 +22 +1.0451657985258156e-12 +32 +1122.6055003989832 +13 +2824.62890625 +23 +1.0451657985258156e-12 +33 +1122.6055003989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +2824.62890625 +20 +1.0451657985258156e-12 +30 +1122.6055003989832 +11 +2826.08203125 +21 +1.1157689084728e-12 +31 +2140.103547273983 +12 +2876.671875 +22 +1.093938633255076e-12 +32 +1825.4961253989832 +13 +2876.671875 +23 +1.093938633255076e-12 +33 +1825.4961253989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +2876.671875 +20 +1.093938633255076e-12 +30 +1825.4961253989832 +11 +2826.08203125 +21 +1.1157689084728e-12 +31 +2140.103547273983 +12 +2837.82421875 +22 +1.1214869907304886e-12 +32 +2222.509797273983 +13 +2837.82421875 +23 +1.1214869907304886e-12 +33 +2222.509797273983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +2876.671875 +20 +1.093938633255076e-12 +30 +1825.4961253989832 +11 +2837.82421875 +21 +1.1214869907304886e-12 +31 +2222.509797273983 +12 +2889.24609375 +22 +1.1446630318948103e-12 +32 +2556.511750398983 +13 +2889.24609375 +23 +1.1446630318948103e-12 +33 +2556.511750398983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2876.671875 +20 +1.093938633255076e-12 +30 +1825.4961253989832 +11 +2889.24609375 +21 +1.1446630318948103e-12 +31 +2556.511750398983 +12 +2883.10546875 +22 +1.0966822068525506e-12 +32 +1865.0351878989832 +13 +2883.10546875 +23 +1.0966822068525506e-12 +33 +1865.0351878989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +2883.10546875 +20 +1.0966822068525506e-12 +30 +1865.0351878989832 +11 +2889.24609375 +21 +1.1446630318948103e-12 +31 +2556.511750398983 +12 +2920.72265625 +22 +1.1297990266858488e-12 +32 +2342.298859773983 +13 +2920.72265625 +23 +1.1297990266858488e-12 +33 +2342.298859773983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +2920.72265625 +20 +1.1297990266858488e-12 +30 +2342.298859773983 +11 +2889.24609375 +21 +1.1446630318948103e-12 +31 +2556.511750398983 +12 +2918.21484375 +22 +1.133546842545588e-12 +32 +2396.310578523983 +13 +2918.21484375 +23 +1.133546842545588e-12 +33 +2396.310578523983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +2918.21484375 +20 +1.133546842545588e-12 +30 +2396.310578523983 +11 +2889.24609375 +21 +1.1446630318948103e-12 +31 +2556.511750398983 +12 +2908.51171875 +22 +1.1679411235886172e-12 +32 +2891.984406648983 +13 +2908.51171875 +23 +1.1679411235886172e-12 +33 +2891.984406648983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +2920.72265625 +20 +1.1297990266858488e-12 +30 +2342.298859773983 +11 +2918.21484375 +21 +1.133546842545588e-12 +31 +2396.310578523983 +12 +3410.0859375 +22 +1.1365957545798888e-12 +32 +2440.250031648983 +13 +3410.0859375 +23 +1.1365957545798888e-12 +33 +2440.250031648983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2920.72265625 +20 +1.1297990266858488e-12 +30 +2342.298859773983 +11 +3410.0859375 +21 +1.1365957545798888e-12 +31 +2440.250031648983 +12 +3870.99609375 +22 +1.138828262378308e-12 +32 +2472.423859773983 +13 +3870.99609375 +23 +1.138828262378308e-12 +33 +2472.423859773983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +3870.99609375 +20 +1.138828262378308e-12 +30 +2472.423859773983 +11 +3410.0859375 +21 +1.1365957545798888e-12 +31 +2440.250031648983 +12 +3481.88671875 +22 +1.1389148630268353e-12 +32 +2473.671906648983 +13 +3481.88671875 +23 +1.1389148630268353e-12 +33 +2473.671906648983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +3481.88671875 +20 +1.1389148630268353e-12 +30 +2473.671906648983 +11 +3410.0859375 +21 +1.1365957545798888e-12 +31 +2440.250031648983 +12 +3422.56640625 +22 +1.1409745761040146e-12 +32 +2503.355500398983 +13 +3422.56640625 +23 +1.1409745761040146e-12 +33 +2503.355500398983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3481.88671875 +20 +1.1389148630268353e-12 +30 +2473.671906648983 +11 +3422.56640625 +21 +1.1409745761040146e-12 +31 +2503.355500398983 +12 +3473.91796875 +22 +1.1430107077839424e-12 +32 +2532.699250398983 +13 +3473.91796875 +23 +1.1430107077839424e-12 +33 +2532.699250398983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3870.99609375 +20 +1.138828262378308e-12 +30 +2472.423859773983 +11 +3481.88671875 +21 +1.1389148630268353e-12 +31 +2473.671906648983 +12 +3925.3359375 +22 +1.1417576411230923e-12 +32 +2514.640656648983 +13 +3925.3359375 +23 +1.1417576411230923e-12 +33 +2514.640656648983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3870.99609375 +20 +1.138828262378308e-12 +30 +2472.423859773983 +11 +3925.3359375 +21 +1.1417576411230923e-12 +31 +2514.640656648983 +12 +3931.453125 +22 +1.1404521261821482e-12 +32 +2495.826203523983 +13 +3931.453125 +23 +1.1404521261821482e-12 +33 +2495.826203523983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2945.40234375 +20 +1.1991897275534513e-12 +30 +3342.324250398983 +11 +2918.21484375 +21 +1.133546842545588e-12 +31 +2396.310578523983 +12 +2908.51171875 +22 +1.1679411235886172e-12 +32 +2891.984406648983 +13 +2908.51171875 +23 +1.1679411235886172e-12 +33 +2891.984406648983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +2918.21484375 +20 +1.133546842545588e-12 +30 +2396.310578523983 +11 +2945.40234375 +21 +1.1991897275534513e-12 +31 +3342.324250398983 +12 +2954.68359375 +22 +1.1782787202527234e-12 +32 +3040.964875398983 +13 +2954.68359375 +23 +1.1782787202527234e-12 +33 +3040.964875398983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +2954.68359375 +20 +1.1782787202527234e-12 +30 +3040.964875398983 +11 +2945.40234375 +21 +1.1991897275534513e-12 +31 +3342.324250398983 +12 +2949.85546875 +22 +1.2016547967178687e-12 +32 +3377.849641023983 +13 +2949.85546875 +23 +1.2016547967178687e-12 +33 +3377.849641023983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +2954.68359375 +20 +1.1782787202527234e-12 +30 +3040.964875398983 +11 +2949.85546875 +21 +1.2016547967178687e-12 +31 +3377.849641023983 +12 +2969.6015625 +22 +1.2111946916335686e-12 +32 +3515.334016023983 +13 +2969.6015625 +23 +1.2111946916335686e-12 +33 +3515.334016023983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2954.68359375 +20 +1.1782787202527234e-12 +30 +3040.964875398983 +11 +2969.6015625 +21 +1.2111946916335686e-12 +31 +3515.334016023983 +12 +2964.9375 +22 +1.1990437668359805e-12 +32 +3340.220734773983 +13 +2964.9375 +23 +1.1990437668359805e-12 +33 +3340.220734773983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +2964.9375 +20 +1.1990437668359805e-12 +30 +3340.220734773983 +11 +2969.6015625 +21 +1.2111946916335686e-12 +31 +3515.334016023983 +12 +2991.8203125 +22 +1.2023447558753841e-12 +32 +3387.793000398983 +13 +2991.8203125 +23 +1.2023447558753841e-12 +33 +3387.793000398983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +2964.9375 +20 +1.1990437668359805e-12 +30 +3340.220734773983 +11 +2991.8203125 +21 +1.2023447558753841e-12 +31 +3387.793000398983 +12 +3261.1875 +22 +1.2049911578531497e-12 +32 +3425.931672273983 +13 +3261.1875 +23 +1.2049911578531497e-12 +33 +3425.931672273983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +3261.1875 +20 +1.2049911578531497e-12 +30 +3425.931672273983 +11 +2991.8203125 +21 +1.2023447558753841e-12 +31 +3387.793000398983 +12 +3254.296875 +22 +1.2066369767509827e-12 +32 +3449.650422273983 +13 +3254.296875 +23 +1.2066369767509827e-12 +33 +3449.650422273983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2981.61328125 +20 +1.1866980922231596e-12 +30 +3162.300812898983 +11 +2954.68359375 +21 +1.1782787202527234e-12 +31 +3040.964875398983 +12 +2964.9375 +22 +1.1990437668359805e-12 +32 +3340.220734773983 +13 +2964.9375 +23 +1.1990437668359805e-12 +33 +3340.220734773983 +70 +2 + 0 +3DFACE + 8 +ship7 +10 +3292.78125 +20 +1.1147658859379794e-12 +30 +2125.648469148983 +11 +3335.2734375 +21 +1.1005536217599532e-12 +31 +1920.8281566489832 +12 +3243.9609375 +22 +1.1116389113472597e-12 +32 +2080.584016023983 +13 +3243.9609375 +23 +1.1116389113472597e-12 +33 +2080.584016023983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3335.2734375 +20 +1.1005536217599532e-12 +30 +1920.8281566489832 +11 +3292.78125 +21 +1.1147658859379794e-12 +31 +2125.648469148983 +12 +3733.46484375 +22 +1.0558595556035832e-12 +32 +1276.7187816489832 +13 +3733.46484375 +23 +1.0558595556035832e-12 +33 +1276.7187816489832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3335.2734375 +20 +1.1005536217599532e-12 +30 +1920.8281566489832 +11 +3733.46484375 +21 +1.0558595556035832e-12 +31 +1276.7187816489832 +12 +3356.765625 +22 +1.097888923870527e-12 +32 +1882.4258128989832 +13 +3356.765625 +23 +1.097888923870527e-12 +33 +1882.4258128989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +3356.765625 +20 +1.097888923870527e-12 +30 +1882.4258128989832 +11 +3733.46484375 +21 +1.0558595556035832e-12 +31 +1276.7187816489832 +12 +3675.9609375 +22 +1.0549854176020168e-12 +32 +1264.1211253989832 +13 +3675.9609375 +23 +1.0549854176020168e-12 +33 +1264.1211253989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +2883.10546875 +20 +1.0966822068525506e-12 +30 +1865.0351878989832 +11 +3356.765625 +21 +1.097888923870527e-12 +31 +1882.4258128989832 +12 +2876.671875 +22 +1.093938633255076e-12 +32 +1825.4961253989832 +13 +2876.671875 +23 +1.093938633255076e-12 +33 +1825.4961253989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3356.765625 +20 +1.097888923870527e-12 +30 +1882.4258128989832 +11 +2883.10546875 +21 +1.0966822068525506e-12 +31 +1865.0351878989832 +12 +3335.2734375 +22 +1.1005536217599532e-12 +32 +1920.8281566489832 +13 +3335.2734375 +23 +1.1005536217599532e-12 +33 +1920.8281566489832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +3084.31640625 +20 +1.0679779543359968e-12 +30 +1451.3633128989832 +11 +3095.28515625 +21 +1.0498934620989386e-12 +31 +1190.7383128989832 +12 +3034.59375 +22 +1.0467921017845438e-12 +32 +1146.0430003989832 +13 +3034.59375 +23 +1.0467921017845438e-12 +33 +1146.0430003989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3095.28515625 +20 +1.0498934620989386e-12 +30 +1190.7383128989832 +11 +3084.31640625 +21 +1.0679779543359968e-12 +31 +1451.3633128989832 +12 +3110.73046875 +22 +1.0677779190351733e-12 +32 +1448.4805003989832 +13 +3110.73046875 +23 +1.0677779190351733e-12 +33 +1448.4805003989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3982.5 +20 +1.1309077589324867e-12 +30 +2358.277375398983 +11 +3927.0234375 +21 +1.1196212143169126e-12 +31 +2195.621125398983 +12 +3911.84765625 +22 +1.1309077589324867e-12 +32 +2358.277375398983 +13 +3911.84765625 +23 +1.1309077589324867e-12 +33 +2358.277375398983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3989.61328125 +20 +1.1624198240252348e-12 +30 +2812.414094148983 +11 +4020.3984375 +21 +1.1447475996642642e-12 +31 +2557.730500398983 +12 +3971.61328125 +22 +1.1625954647771775e-12 +32 +2814.945344148983 +13 +3971.61328125 +23 +1.1625954647771775e-12 +33 +2814.945344148983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4020.3984375 +20 +1.1447475996642642e-12 +30 +2557.730500398983 +11 +3989.61328125 +21 +1.1624198240252348e-12 +31 +2812.414094148983 +12 +4040.47265625 +22 +1.1751757336350699e-12 +32 +2996.246125398983 +13 +4040.47265625 +23 +1.1751757336350699e-12 +33 +2996.246125398983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +4143.24609375 +20 +1.1585187290833604e-12 +30 +2756.193391023983 +11 +4074.28125 +21 +1.1479737787537664e-12 +31 +2604.224641023983 +12 +4065.73828125 +22 +1.161176515183937e-12 +32 +2794.496125398983 +13 +4065.73828125 +23 +1.161176515183937e-12 +33 +2794.496125398983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4074.28125 +20 +1.1479737787537664e-12 +30 +2604.224641023983 +11 +4143.24609375 +21 +1.1585187290833604e-12 +31 +2756.193391023983 +12 +4509.978515625 +22 +1.1487381412853687e-12 +32 +2615.240266023983 +13 +4509.978515625 +23 +1.1487381412853687e-12 +33 +2615.240266023983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4509.978515625 +20 +1.1487381412853687e-12 +30 +2615.240266023983 +11 +4143.24609375 +21 +1.1585187290833604e-12 +31 +2756.193391023983 +12 +4442.970703125 +22 +1.1539532892602955e-12 +32 +2690.398469148983 +13 +4442.970703125 +23 +1.1539532892602955e-12 +33 +2690.398469148983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4062.01171875 +20 +1.1877958469228012e-12 +30 +3178.121125398983 +11 +4040.47265625 +21 +1.1751757336350699e-12 +31 +2996.246125398983 +12 +3999.8203125 +22 +1.1883699319731322e-12 +32 +3186.394562898983 +13 +3999.8203125 +23 +1.1883699319731322e-12 +33 +3186.394562898983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4040.47265625 +20 +1.1751757336350699e-12 +30 +2996.246125398983 +11 +4062.01171875 +21 +1.1877958469228012e-12 +31 +3178.121125398983 +12 +4061.35546875 +22 +1.1326096852927459e-12 +32 +2382.804719148983 +13 +4061.35546875 +23 +1.1326096852927459e-12 +33 +2382.804719148983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +4061.35546875 +20 +1.1326096852927459e-12 +30 +2382.804719148983 +11 +4062.01171875 +21 +1.1877958469228012e-12 +31 +3178.121125398983 +12 +4065.73828125 +22 +1.161176515183937e-12 +32 +2794.496125398983 +13 +4065.73828125 +23 +1.161176515183937e-12 +33 +2794.496125398983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +4061.35546875 +20 +1.1326096852927459e-12 +30 +2382.804719148983 +11 +4065.73828125 +21 +1.161176515183937e-12 +31 +2794.496125398983 +12 +4074.28125 +22 +1.1479737787537664e-12 +32 +2604.224641023983 +13 +4074.28125 +23 +1.1479737787537664e-12 +33 +2604.224641023983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +4061.35546875 +20 +1.1326096852927459e-12 +30 +2382.804719148983 +11 +4074.28125 +21 +1.1479737787537664e-12 +31 +2604.224641023983 +12 +4148.02734375 +22 +1.1334110462234842e-12 +32 +2394.353547273983 +13 +4148.02734375 +23 +1.1334110462234842e-12 +33 +2394.353547273983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4148.02734375 +20 +1.1334110462234842e-12 +30 +2394.353547273983 +11 +4074.28125 +21 +1.1479737787537664e-12 +31 +2604.224641023983 +12 +4130.30859375 +22 +1.1413400877614138e-12 +32 +2508.623078523983 +13 +4130.30859375 +23 +1.1413400877614138e-12 +33 +2508.623078523983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4020.3984375 +20 +1.1447475996642642e-12 +30 +2557.730500398983 +11 +3982.5 +21 +1.1309077589324867e-12 +31 +2358.277375398983 +12 +3957.515625 +22 +1.1426228344567357e-12 +32 +2527.109406648983 +13 +3957.515625 +23 +1.1426228344567357e-12 +33 +2527.109406648983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3982.5 +20 +1.1309077589324867e-12 +30 +2358.277375398983 +11 +4020.3984375 +21 +1.1447475996642642e-12 +31 +2557.730500398983 +12 +3998.90625 +22 +1.0497731156577927e-12 +32 +1189.0039378989832 +13 +3998.90625 +23 +1.0497731156577927e-12 +33 +1189.0039378989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +3998.90625 +20 +1.0497731156577927e-12 +30 +1189.0039378989832 +11 +4020.3984375 +21 +1.1447475996642642e-12 +31 +2557.730500398983 +12 +4061.35546875 +22 +1.1326096852927459e-12 +32 +2382.804719148983 +13 +4061.35546875 +23 +1.1326096852927459e-12 +33 +2382.804719148983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4061.35546875 +20 +1.1326096852927459e-12 +30 +2382.804719148983 +11 +4020.3984375 +21 +1.1447475996642642e-12 +31 +2557.730500398983 +12 +4040.47265625 +22 +1.1751757336350699e-12 +32 +2996.246125398983 +13 +4040.47265625 +23 +1.1751757336350699e-12 +33 +2996.246125398983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +3927.0234375 +20 +1.1196212143169126e-12 +30 +2195.621125398983 +11 +3998.90625 +21 +1.0497731156577927e-12 +31 +1189.0039378989832 +12 +3892.72265625 +22 +1.0492022832139791e-12 +32 +1180.7773753989832 +13 +3892.72265625 +23 +1.0492022832139791e-12 +33 +1180.7773753989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3998.90625 +20 +1.0497731156577927e-12 +30 +1189.0039378989832 +11 +3927.0234375 +21 +1.1196212143169126e-12 +31 +2195.621125398983 +12 +3982.5 +22 +1.1309077589324867e-12 +32 +2358.277375398983 +13 +3982.5 +23 +1.1309077589324867e-12 +33 +2358.277375398983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +4078.2421875 +20 +1.2153909606169022e-12 +30 +3575.808625398983 +11 +3778.67578125 +21 +1.2093057403985558e-12 +31 +3488.111359773983 +12 +3774.515625 +22 +1.2112142072726734e-12 +32 +3515.615266023983 +13 +3774.515625 +23 +1.2112142072726734e-12 +33 +3515.615266023983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3778.67578125 +20 +1.2093057403985558e-12 +30 +3488.111359773983 +11 +4078.2421875 +21 +1.2153909606169022e-12 +31 +3575.808625398983 +12 +4062.01171875 +22 +1.2119322201614019e-12 +32 +3525.962922273983 +13 +4062.01171875 +23 +1.2119322201614019e-12 +33 +3525.962922273983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4062.01171875 +20 +1.2119322201614019e-12 +30 +3525.962922273983 +11 +4078.2421875 +21 +1.2153909606169022e-12 +31 +3575.808625398983 +12 +4062.01171875 +22 +1.1877958469228012e-12 +32 +3178.121125398983 +13 +4062.01171875 +23 +1.1877958469228012e-12 +33 +3178.121125398983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4062.01171875 +20 +1.1877958469228012e-12 +30 +3178.121125398983 +11 +4078.2421875 +21 +1.2153909606169022e-12 +31 +3575.808625398983 +12 +4065.73828125 +22 +1.161176515183937e-12 +32 +2794.496125398983 +13 +4065.73828125 +23 +1.161176515183937e-12 +33 +2794.496125398983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +4065.73828125 +20 +1.161176515183937e-12 +30 +2794.496125398983 +11 +4078.2421875 +21 +1.2153909606169022e-12 +31 +3575.808625398983 +12 +4083.08203125 +22 +1.1667360328738996e-12 +32 +2874.617219148983 +13 +4083.08203125 +23 +1.1667360328738996e-12 +33 +2874.617219148983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4083.08203125 +20 +1.1667360328738996e-12 +30 +2874.617219148983 +11 +4078.2421875 +21 +1.2153909606169022e-12 +31 +3575.808625398983 +12 +4103.49609375 +22 +1.2272097129738951e-12 +32 +3746.134797273983 +13 +4103.49609375 +23 +1.2272097129738951e-12 +33 +3746.134797273983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +4083.08203125 +20 +1.1667360328738996e-12 +30 +2874.617219148983 +11 +4103.49609375 +21 +1.2272097129738951e-12 +31 +3746.134797273983 +12 +4102.11328125 +22 +1.2123607510700768e-12 +32 +3532.138703523983 +13 +4102.11328125 +23 +1.2123607510700768e-12 +33 +3532.138703523983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +4102.11328125 +20 +1.2123607510700768e-12 +30 +3532.138703523983 +11 +4103.49609375 +21 +1.2272097129738951e-12 +31 +3746.134797273983 +12 +4117.58203125 +22 +1.2154881322366112e-12 +32 +3577.209016023983 +13 +4117.58203125 +23 +1.2154881322366112e-12 +33 +3577.209016023983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +4102.11328125 +20 +1.2123607510700768e-12 +30 +3532.138703523983 +11 +4117.58203125 +21 +1.2154881322366112e-12 +31 +3577.209016023983 +12 +4423.095703125 +22 +1.216635489185644e-12 +32 +3593.744172273983 +13 +4423.095703125 +23 +1.216635489185644e-12 +33 +3593.744172273983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4117.58203125 +20 +1.2154881322366112e-12 +30 +3577.209016023983 +11 +4103.49609375 +21 +1.2272097129738951e-12 +31 +3746.134797273983 +12 +4117.58203125 +22 +1.2270991243523016e-12 +32 +3744.541047273983 +13 +4117.58203125 +23 +1.2270991243523016e-12 +33 +3744.541047273983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4423.095703125 +20 +1.216635489185644e-12 +30 +3593.744172273983 +11 +4117.58203125 +21 +1.2154881322366112e-12 +31 +3577.209016023983 +12 +4419.064453125 +22 +1.2181422591548557e-12 +32 +3615.459016023983 +13 +4419.064453125 +23 +1.2181422591548557e-12 +33 +3615.459016023983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4083.08203125 +20 +1.1667360328738996e-12 +30 +2874.617219148983 +11 +4104.85546875 +21 +1.1874486311770627e-12 +31 +3173.117219148983 +12 +4168.08984375 +22 +1.1691161276930484e-12 +32 +2908.918000398983 +13 +4168.08984375 +23 +1.1691161276930484e-12 +33 +2908.918000398983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4104.85546875 +20 +1.1874486311770627e-12 +30 +3173.117219148983 +11 +4083.08203125 +21 +1.1667360328738996e-12 +31 +2874.617219148983 +12 +4102.11328125 +22 +1.2123607510700768e-12 +32 +3532.138703523983 +13 +4102.11328125 +23 +1.2123607510700768e-12 +33 +3532.138703523983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4168.08984375 +20 +1.1691161276930484e-12 +30 +2908.918000398983 +11 +4104.85546875 +21 +1.1874486311770627e-12 +31 +3173.117219148983 +12 +4161.796875 +22 +1.1752737184064083e-12 +32 +2997.658234773983 +13 +4161.796875 +23 +1.1752737184064083e-12 +33 +2997.658234773983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +3998.90625 +20 +1.0497731156577927e-12 +30 +1189.0039378989832 +11 +4084.44140625 +21 +1.0542234945253026e-12 +31 +1253.1406566489832 +12 +4275.556640625 +22 +1.049112836534749e-12 +32 +1179.4883128989832 +13 +4275.556640625 +23 +1.049112836534749e-12 +33 +1179.4883128989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4084.44140625 +20 +1.0542234945253026e-12 +30 +1253.1406566489832 +11 +3998.90625 +21 +1.0497731156577927e-12 +31 +1189.0039378989832 +12 +4051.51171875 +22 +1.064320398307117e-12 +32 +1398.6523753989832 +13 +4051.51171875 +23 +1.064320398307117e-12 +33 +1398.6523753989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +4084.44140625 +20 +1.0542234945253026e-12 +30 +1253.1406566489832 +11 +4051.51171875 +21 +1.064320398307117e-12 +31 +1398.6523753989832 +12 +4071.1171875 +22 +1.064206557079006e-12 +32 +1397.0117503989832 +13 +4071.1171875 +23 +1.064206557079006e-12 +33 +1397.0117503989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4275.556640625 +20 +1.049112836534749e-12 +30 +1179.4883128989832 +11 +4084.44140625 +21 +1.0542234945253026e-12 +31 +1253.1406566489832 +12 +4153.39453125 +22 +1.0586429736308967e-12 +32 +1316.8320628989832 +13 +4153.39453125 +23 +1.0586429736308967e-12 +33 +1316.8320628989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +4275.556640625 +20 +1.049112836534749e-12 +30 +1179.4883128989832 +11 +4153.39453125 +21 +1.0586429736308967e-12 +31 +1316.8320628989832 +12 +4238.572265625 +22 +1.0566279838933323e-12 +32 +1287.7930003989832 +13 +4238.572265625 +23 +1.0566279838933323e-12 +33 +1287.7930003989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4478.806640625 +20 +1.0938443076660698e-12 +30 +1824.1367503989832 +11 +4471.166015625 +21 +1.0775178492516968e-12 +31 +1588.8476878989832 +12 +4436.736328125 +22 +1.0897078053274944e-12 +32 +1764.5234691489832 +13 +4436.736328125 +23 +1.0897078053274944e-12 +33 +1764.5234691489832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4471.166015625 +20 +1.0775178492516968e-12 +30 +1588.8476878989832 +11 +4441.775390625 +21 +1.048029718564436e-12 +31 +1163.8789378989832 +12 +4440.626953125 +22 +1.0591324909117739e-12 +32 +1323.8867503989832 +13 +4440.626953125 +23 +1.0591324909117739e-12 +33 +1323.8867503989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4441.775390625 +20 +1.048029718564436e-12 +30 +1163.8789378989832 +11 +4471.166015625 +21 +1.0775178492516968e-12 +31 +1588.8476878989832 +12 +4882.189453125 +22 +1.0872431427388918e-12 +32 +1729.0039378989832 +13 +4882.189453125 +23 +1.0872431427388918e-12 +33 +1729.0039378989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4882.189453125 +20 +1.0872431427388918e-12 +30 +1729.0039378989832 +11 +4471.166015625 +21 +1.0775178492516968e-12 +31 +1588.8476878989832 +12 +4478.806640625 +22 +1.0938443076660698e-12 +32 +1824.1367503989832 +13 +4478.806640625 +23 +1.0938443076660698e-12 +33 +1824.1367503989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +4882.189453125 +20 +1.0872431427388918e-12 +30 +1729.0039378989832 +11 +4478.806640625 +21 +1.0938443076660698e-12 +31 +1824.1367503989832 +12 +4904.759765625 +22 +1.0934946524654432e-12 +32 +1819.0976878989832 +13 +4904.759765625 +23 +1.0934946524654432e-12 +33 +1819.0976878989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +4882.189453125 +20 +1.0872431427388918e-12 +30 +1729.0039378989832 +11 +4904.759765625 +21 +1.0934946524654432e-12 +31 +1819.0976878989832 +12 +4934.619140625 +22 +1.089737891937781e-12 +32 +1764.9570628989832 +13 +4934.619140625 +23 +1.089737891937781e-12 +33 +1764.9570628989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4441.775390625 +20 +1.048029718564436e-12 +30 +1163.8789378989832 +11 +4858.376953125 +21 +1.0729642001272577e-12 +31 +1523.2226878989832 +12 +4780.728515625 +22 +1.009188717836229e-12 +32 +604.1211253989832 +13 +4780.728515625 +23 +1.009188717836229e-12 +33 +604.1211253989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +4858.376953125 +20 +1.0729642001272577e-12 +30 +1523.2226878989832 +11 +4441.775390625 +21 +1.048029718564436e-12 +31 +1163.8789378989832 +12 +4882.189453125 +22 +1.0872431427388918e-12 +32 +1729.0039378989832 +13 +4882.189453125 +23 +1.0872431427388918e-12 +33 +1729.0039378989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4886.056640625 +20 +1.0703897620686909e-12 +30 +1486.1211253989832 +11 +4780.728515625 +21 +1.009188717836229e-12 +31 +604.1211253989832 +12 +4858.376953125 +22 +1.0729642001272577e-12 +32 +1523.2226878989832 +13 +4858.376953125 +23 +1.0729642001272577e-12 +33 +1523.2226878989832 +70 +2 + 0 +3DFACE + 8 +ship7 +10 +3660.609375 +20 +1.0492917298932092e-12 +30 +1182.0664378989832 +11 +4780.728515625 +21 +1.009188717836229e-12 +31 +604.1211253989832 +12 +3198.515625 +22 +9.133213933407158e-13 +32 +-777.4726246010168 +13 +3198.515625 +23 +9.133213933407158e-13 +33 +-777.4726246010168 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4780.728515625 +20 +1.009188717836229e-12 +30 +604.1211253989832 +11 +3660.609375 +21 +1.0492917298932092e-12 +31 +1182.0664378989832 +12 +3892.72265625 +22 +1.0492022832139791e-12 +32 +1180.7773753989832 +13 +3892.72265625 +23 +1.0492022832139791e-12 +33 +1180.7773753989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +4780.728515625 +20 +1.009188717836229e-12 +30 +604.1211253989832 +11 +3892.72265625 +21 +1.0492022832139791e-12 +31 +1180.7773753989832 +12 +3998.90625 +22 +1.0497731156577927e-12 +32 +1189.0039378989832 +13 +3998.90625 +23 +1.0497731156577927e-12 +33 +1189.0039378989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +4780.728515625 +20 +1.009188717836229e-12 +30 +604.1211253989832 +11 +3998.90625 +21 +1.0497731156577927e-12 +31 +1189.0039378989832 +12 +4275.556640625 +22 +1.049112836534749e-12 +32 +1179.4883128989832 +13 +4275.556640625 +23 +1.049112836534749e-12 +33 +1179.4883128989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +4780.728515625 +20 +1.009188717836229e-12 +30 +604.1211253989832 +11 +4275.556640625 +21 +1.049112836534749e-12 +31 +1179.4883128989832 +12 +4441.775390625 +22 +1.048029718564436e-12 +32 +1163.8789378989832 +13 +4441.775390625 +23 +1.048029718564436e-12 +33 +1163.8789378989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5099.056640625 +20 +9.979013600690256e-13 +30 +441.45315664898317 +11 +5925.650390625 +21 +9.11731681905309e-13 +31 +-800.3827808510168 +12 +5088.134765625 +22 +9.979834883835914e-13 +32 +442.63675039898317 +13 +5088.134765625 +23 +9.979834883835914e-13 +33 +442.63675039898317 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5925.650390625 +20 +9.11731681905309e-13 +30 +-800.3827808510168 +11 +5099.056640625 +21 +9.979013600690256e-13 +31 +441.45315664898317 +12 +5606.642578125 +22 +1.0167916855707837e-12 +32 +713.6914378989832 +13 +5606.642578125 +23 +1.0167916855707837e-12 +33 +713.6914378989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +5925.650390625 +20 +9.11731681905309e-13 +30 +-800.3827808510168 +11 +5606.642578125 +21 +1.0167916855707837e-12 +31 +713.6914378989832 +12 +5688.978515625 +22 +1.0167916855707837e-12 +32 +713.6914378989832 +13 +5688.978515625 +23 +1.0167916855707837e-12 +33 +713.6914378989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +5925.650390625 +20 +9.11731681905309e-13 +30 +-800.3827808510168 +11 +5688.978515625 +21 +1.0167916855707837e-12 +31 +713.6914378989832 +12 +5832.580078125 +22 +1.0192766769501205e-12 +32 +749.5039378989832 +13 +5832.580078125 +23 +1.0192766769501205e-12 +33 +749.5039378989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +5925.650390625 +20 +9.11731681905309e-13 +30 +-800.3827808510168 +11 +5832.580078125 +21 +1.0192766769501205e-12 +31 +749.5039378989832 +12 +5934.041015625 +22 +1.0207923915872552e-12 +32 +771.3476878989832 +13 +5934.041015625 +23 +1.0207923915872552e-12 +33 +771.3476878989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +5925.650390625 +20 +9.11731681905309e-13 +30 +-800.3827808510168 +11 +5934.041015625 +21 +1.0207923915872552e-12 +31 +771.3476878989832 +12 +6815.431640625 +22 +9.142548914112258e-13 +32 +-764.0194996010168 +13 +6815.431640625 +23 +9.142548914112258e-13 +33 +-764.0194996010168 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6815.431640625 +20 +9.142548914112258e-13 +30 +-764.0194996010168 +11 +5934.041015625 +21 +1.0207923915872552e-12 +31 +771.3476878989832 +12 +6579.041015625 +22 +1.0088878517333644e-12 +32 +599.7851878989832 +13 +6579.041015625 +23 +1.0088878517333644e-12 +33 +599.7851878989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +6815.431640625 +20 +9.142548914112258e-13 +30 +-764.0194996010168 +11 +6579.041015625 +21 +1.0088878517333644e-12 +31 +599.7851878989832 +12 +6749.056640625 +22 +1.0055897087246635e-12 +32 +552.2539378989832 +13 +6749.056640625 +23 +1.0055897087246635e-12 +33 +552.2539378989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +6815.431640625 +20 +9.142548914112258e-13 +30 +-764.0194996010168 +11 +6749.056640625 +21 +1.0055897087246635e-12 +31 +552.2539378989832 +12 +6925.587890625 +22 +1.0043049291502681e-12 +32 +533.7383128989832 +13 +6925.587890625 +23 +1.0043049291502681e-12 +33 +533.7383128989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5758.611328125 +20 +1.0364504393622909e-12 +30 +997.0039378989832 +11 +5711.173828125 +21 +1.0288905686640926e-12 +31 +888.0547191489832 +12 +5686.775390625 +22 +1.0322513243482545e-12 +32 +936.4883128989832 +13 +5686.775390625 +23 +1.0322513243482545e-12 +33 +936.4883128989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5711.173828125 +20 +1.0288905686640926e-12 +30 +888.0547191489832 +11 +5688.978515625 +21 +1.0167916855707837e-12 +31 +713.6914378989832 +12 +5661.158203125 +22 +1.0261526871280235e-12 +32 +848.5976878989832 +13 +5661.158203125 +23 +1.0261526871280235e-12 +33 +848.5976878989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5688.978515625 +20 +1.0167916855707837e-12 +30 +713.6914378989832 +11 +5711.173828125 +21 +1.0288905686640926e-12 +31 +888.0547191489832 +12 +5832.580078125 +22 +1.0192766769501205e-12 +32 +749.5039378989832 +13 +5832.580078125 +23 +1.0192766769501205e-12 +33 +749.5039378989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +5832.580078125 +20 +1.0192766769501205e-12 +30 +749.5039378989832 +11 +5711.173828125 +21 +1.0288905686640926e-12 +31 +888.0547191489832 +12 +5758.611328125 +22 +1.0364504393622909e-12 +32 +997.0039378989832 +13 +5758.611328125 +23 +1.0364504393622909e-12 +33 +997.0039378989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +5832.580078125 +20 +1.0192766769501205e-12 +30 +749.5039378989832 +11 +5758.611328125 +21 +1.0364504393622909e-12 +31 +997.0039378989832 +12 +5821.939453125 +22 +1.034409428772587e-12 +32 +967.5898753989832 +13 +5821.939453125 +23 +1.034409428772587e-12 +33 +967.5898753989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6317.853515625 +20 +1.1671987161510078e-12 +30 +2881.285187898983 +11 +6124.869140625 +21 +1.1609394814839774e-12 +31 +2791.080109773983 +12 +5958.509765625 +22 +1.1619616130820881e-12 +32 +2805.810578523983 +13 +5958.509765625 +23 +1.1619616130820881e-12 +33 +2805.810578523983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6124.869140625 +20 +1.1609394814839774e-12 +30 +2791.080109773983 +11 +6317.853515625 +21 +1.1671987161510078e-12 +31 +2881.285187898983 +12 +6311.455078125 +22 +1.1631707695549526e-12 +32 +2823.236359773983 +13 +6311.455078125 +23 +1.1631707695549526e-12 +33 +2823.236359773983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6373.072265625 +20 +1.1739714560719816e-12 +30 +2978.890656648983 +11 +6336.955078125 +21 +1.102826380564026e-12 +31 +1953.5820628989832 +12 +6317.853515625 +22 +1.1671987161510078e-12 +32 +2881.285187898983 +13 +6317.853515625 +23 +1.1671987161510078e-12 +33 +2881.285187898983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6336.955078125 +20 +1.102826380564026e-12 +30 +1953.5820628989832 +11 +6373.072265625 +21 +1.1739714560719816e-12 +31 +2978.890656648983 +12 +6376.236328125 +22 +1.1636838682330813e-12 +32 +2830.630891023983 +13 +6376.236328125 +23 +1.1636838682330813e-12 +33 +2830.630891023983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6376.236328125 +20 +1.1636838682330813e-12 +30 +2830.630891023983 +11 +6373.072265625 +21 +1.1739714560719816e-12 +31 +2978.890656648983 +12 +6377.525390625 +22 +1.1673906199355377e-12 +32 +2884.050812898983 +13 +6377.525390625 +23 +1.1673906199355377e-12 +33 +2884.050812898983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +6376.236328125 +20 +1.1636838682330813e-12 +30 +2830.630891023983 +11 +6377.525390625 +21 +1.1673906199355377e-12 +31 +2884.050812898983 +12 +6731.806640625 +22 +1.1660253383498353e-12 +32 +2864.375031648983 +13 +6731.806640625 +23 +1.1660253383498353e-12 +33 +2864.375031648983 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6731.806640625 +20 +1.1660253383498353e-12 +30 +2864.375031648983 +11 +6377.525390625 +21 +1.1673906199355377e-12 +31 +2884.050812898983 +12 +6713.431640625 +22 +1.1694304107977976e-12 +32 +2913.447297273983 +13 +6713.431640625 +23 +1.1694304107977976e-12 +33 +2913.447297273983 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6266.314453125 +20 +1.0984825245599628e-12 +30 +1890.9805003989832 +11 +6125.291015625 +21 +1.093083197740985e-12 +31 +1813.1680003989832 +12 +6119.197265625 +22 +1.0960105436066958e-12 +32 +1855.3555003989832 +13 +6119.197265625 +23 +1.0960105436066958e-12 +33 +1855.3555003989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6125.291015625 +20 +1.093083197740985e-12 +30 +1813.1680003989832 +11 +6266.314453125 +21 +1.0984825245599628e-12 +31 +1890.9805003989832 +12 +6206.830078125 +22 +1.09186184399368e-12 +32 +1795.5664378989832 +13 +6206.830078125 +23 +1.09186184399368e-12 +33 +1795.5664378989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6206.830078125 +20 +1.09186184399368e-12 +30 +1795.5664378989832 +11 +6266.314453125 +21 +1.0984825245599628e-12 +31 +1890.9805003989832 +12 +6227.408203125 +22 +1.0740782178594865e-12 +32 +1539.2773753989832 +13 +6227.408203125 +23 +1.0740782178594865e-12 +33 +1539.2773753989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6227.408203125 +20 +1.0740782178594865e-12 +30 +1539.2773753989832 +11 +6266.314453125 +21 +1.0984825245599628e-12 +31 +1890.9805003989832 +12 +6260.033203125 +22 +1.0247930976037267e-12 +32 +829.0039378989832 +13 +6260.033203125 +23 +1.0247930976037267e-12 +33 +829.0039378989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +6260.033203125 +20 +1.0247930976037267e-12 +30 +829.0039378989832 +11 +6266.314453125 +21 +1.0984825245599628e-12 +31 +1890.9805003989832 +12 +6305.009765625 +22 +1.0929205674151121e-12 +32 +1810.8242503989832 +13 +6305.009765625 +23 +1.0929205674151121e-12 +33 +1810.8242503989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6305.009765625 +20 +1.0929205674151121e-12 +30 +1810.8242503989832 +11 +6266.314453125 +21 +1.0984825245599628e-12 +31 +1890.9805003989832 +12 +6311.455078125 +22 +1.1631707695549526e-12 +32 +2823.236359773983 +13 +6311.455078125 +23 +1.1631707695549526e-12 +33 +2823.236359773983 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +6305.009765625 +20 +1.0929205674151121e-12 +30 +1810.8242503989832 +11 +6311.455078125 +21 +1.1631707695549526e-12 +31 +2823.236359773983 +12 +6336.955078125 +22 +1.102826380564026e-12 +32 +1953.5820628989832 +13 +6336.955078125 +23 +1.102826380564026e-12 +33 +1953.5820628989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +6305.009765625 +20 +1.0929205674151121e-12 +30 +1810.8242503989832 +11 +6336.955078125 +21 +1.102826380564026e-12 +31 +1953.5820628989832 +12 +6405.884765625 +22 +1.0975522790959702e-12 +32 +1877.5742503989832 +13 +6405.884765625 +23 +1.0975522790959702e-12 +33 +1877.5742503989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6336.955078125 +20 +1.102826380564026e-12 +30 +1953.5820628989832 +11 +6311.455078125 +21 +1.1631707695549526e-12 +31 +2823.236359773983 +12 +6317.853515625 +22 +1.1671987161510078e-12 +32 +2881.285187898983 +13 +6317.853515625 +23 +1.1671987161510078e-12 +33 +2881.285187898983 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +6405.884765625 +20 +1.0975522790959702e-12 +30 +1877.5742503989832 +11 +6336.955078125 +21 +1.102826380564026e-12 +31 +1953.5820628989832 +12 +6389.712890625 +22 +1.1022384719359957e-12 +32 +1945.1094066489832 +13 +6389.712890625 +23 +1.1022384719359957e-12 +33 +1945.1094066489832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6006.720703125 +20 +1.0249508490198234e-12 +30 +831.2773753989832 +11 +5934.041015625 +21 +1.0207923915872552e-12 +31 +771.3476878989832 +12 +5923.306640625 +22 +1.0249508490198234e-12 +32 +831.2773753989832 +13 +5923.306640625 +23 +1.0249508490198234e-12 +33 +831.2773753989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5934.041015625 +20 +1.0207923915872552e-12 +30 +771.3476878989832 +11 +6006.720703125 +21 +1.0249508490198234e-12 +31 +831.2773753989832 +12 +6143.150390625 +22 +1.0208314228654647e-12 +32 +771.9101878989832 +13 +6143.150390625 +23 +1.0208314228654647e-12 +33 +771.9101878989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +5934.041015625 +20 +1.0207923915872552e-12 +30 +771.3476878989832 +11 +6143.150390625 +21 +1.0208314228654647e-12 +31 +771.9101878989832 +12 +6579.041015625 +22 +1.0088878517333644e-12 +32 +599.7851878989832 +13 +6579.041015625 +23 +1.0088878517333644e-12 +33 +599.7851878989832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +6143.150390625 +20 +1.0208314228654647e-12 +30 +771.9101878989832 +11 +6006.720703125 +21 +1.0249508490198234e-12 +31 +831.2773753989832 +12 +6034.400390625 +22 +1.0285213978243612e-12 +32 +882.7344066489832 +13 +6034.400390625 +23 +1.0285213978243612e-12 +33 +882.7344066489832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +6143.150390625 +20 +1.0208314228654647e-12 +30 +771.9101878989832 +11 +6034.400390625 +21 +1.0285213978243612e-12 +31 +882.7344066489832 +12 +6134.923828125 +22 +1.027571636721264e-12 +32 +869.0469066489832 +13 +6134.923828125 +23 +1.027571636721264e-12 +33 +869.0469066489832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6579.041015625 +20 +1.0088878517333644e-12 +30 +599.7851878989832 +11 +6143.150390625 +21 +1.0208314228654647e-12 +31 +771.9101878989832 +12 +6193.142578125 +22 +1.024784966087433e-12 +32 +828.8867503989832 +13 +6193.142578125 +23 +1.024784966087433e-12 +33 +828.8867503989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +6579.041015625 +20 +1.0088878517333644e-12 +30 +599.7851878989832 +11 +6193.142578125 +21 +1.024784966087433e-12 +31 +828.8867503989832 +12 +6260.033203125 +22 +1.0247930976037267e-12 +32 +829.0039378989832 +13 +6260.033203125 +23 +1.0247930976037267e-12 +33 +829.0039378989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +6260.033203125 +20 +1.0247930976037267e-12 +30 +829.0039378989832 +11 +6193.142578125 +21 +1.024784966087433e-12 +31 +828.8867503989832 +12 +6227.408203125 +22 +1.0740782178594865e-12 +32 +1539.2773753989832 +13 +6227.408203125 +23 +1.0740782178594865e-12 +33 +1539.2773753989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +6579.041015625 +20 +1.0088878517333644e-12 +30 +599.7851878989832 +11 +6260.033203125 +21 +1.0247930976037267e-12 +31 +829.0039378989832 +12 +6361.728515625 +22 +1.0251468185625001e-12 +32 +834.1015941489832 +13 +6361.728515625 +23 +1.0251468185625001e-12 +33 +834.1015941489832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +6579.041015625 +20 +1.0088878517333644e-12 +30 +599.7851878989832 +11 +6361.728515625 +21 +1.0251468185625001e-12 +31 +834.1015941489832 +12 +6579.041015625 +22 +1.0206484637488578e-12 +32 +769.2734691489832 +13 +6579.041015625 +23 +1.0206484637488578e-12 +33 +769.2734691489832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6785.994140625 +20 +1.0217527236615342e-12 +30 +785.1875316489832 +11 +6749.056640625 +21 +1.0055897087246635e-12 +31 +552.2539378989832 +12 +6664.892578125 +22 +1.0201142231283655e-12 +32 +761.5742503989832 +13 +6664.892578125 +23 +1.0201142231283655e-12 +33 +761.5742503989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6749.056640625 +20 +1.0055897087246635e-12 +30 +552.2539378989832 +11 +6785.994140625 +21 +1.0217527236615342e-12 +31 +785.1875316489832 +12 +6925.587890625 +22 +1.0043049291502681e-12 +32 +533.7383128989832 +13 +6925.587890625 +23 +1.0043049291502681e-12 +33 +533.7383128989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +6925.587890625 +20 +1.0043049291502681e-12 +30 +533.7383128989832 +11 +7166.361328125 +21 +9.17997828361189e-13 +31 +-710.0780933510168 +12 +6815.431640625 +22 +9.142548914112258e-13 +32 +-764.0194996010168 +13 +6815.431640625 +23 +9.142548914112258e-13 +33 +-764.0194996010168 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7166.361328125 +20 +9.17997828361189e-13 +30 +-710.0780933510168 +11 +6925.587890625 +21 +1.0043049291502681e-12 +31 +533.7383128989832 +12 +7014.369140625 +22 +1.00692409054845e-12 +32 +571.4844066489832 +13 +7014.369140625 +23 +1.00692409054845e-12 +33 +571.4844066489832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7166.361328125 +20 +9.17997828361189e-13 +30 +-710.0780933510168 +11 +7014.369140625 +21 +1.00692409054845e-12 +31 +571.4844066489832 +12 +7038.041015625 +22 +9.997211934155426e-13 +32 +467.67971914898317 +13 +7038.041015625 +23 +9.997211934155426e-13 +33 +467.67971914898317 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7166.361328125 +20 +9.17997828361189e-13 +30 +-710.0780933510168 +11 +7038.041015625 +21 +9.997211934155426e-13 +31 +467.67971914898317 +12 +7177.728515625 +22 +9.982062919300372e-13 +32 +445.84768789898317 +13 +7177.728515625 +23 +9.982062919300372e-13 +33 +445.84768789898317 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7166.361328125 +20 +9.17997828361189e-13 +30 +-710.0780933510168 +11 +7177.728515625 +21 +9.982062919300372e-13 +31 +445.84768789898317 +12 +7452.650390625 +22 +9.18484906187178e-13 +32 +-703.0585621010168 +13 +7452.650390625 +23 +9.18484906187178e-13 +33 +-703.0585621010168 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7341.322265625 +20 +1.001017357112749e-12 +30 +486.35940664898317 +11 +7452.650390625 +21 +9.18484906187178e-13 +31 +-703.0585621010168 +12 +7177.728515625 +22 +9.982062919300372e-13 +32 +445.84768789898317 +13 +7177.728515625 +23 +9.982062919300372e-13 +33 +445.84768789898317 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7452.650390625 +20 +9.18484906187178e-13 +30 +-703.0585621010168 +11 +7341.322265625 +21 +1.001017357112749e-12 +31 +486.35940664898317 +12 +7395.814453125 +22 +1.0020720147760342e-12 +32 +501.55862539898317 +13 +7395.814453125 +23 +1.0020720147760342e-12 +33 +501.55862539898317 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7452.650390625 +20 +9.18484906187178e-13 +30 +-703.0585621010168 +11 +7395.814453125 +21 +1.0020720147760342e-12 +31 +501.55862539898317 +12 +7802.361328125 +22 +9.151265899579042e-13 +32 +-751.4569996010168 +13 +7802.361328125 +23 +9.151265899579042e-13 +33 +-751.4569996010168 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7342.447265625 +20 +1.0017735881280576e-12 +30 +497.25784414898317 +11 +7341.322265625 +21 +1.001017357112749e-12 +31 +486.35940664898317 +12 +7177.728515625 +22 +9.982062919300372e-13 +32 +445.84768789898317 +13 +7177.728515625 +23 +9.982062919300372e-13 +33 +445.84768789898317 +70 +2 + 0 +3DFACE + 8 +ship7 +10 +7203.908203125 +20 +1.045501630148743e-12 +30 +1127.4453441489832 +11 +7177.728515625 +21 +9.982062919300372e-13 +31 +445.84768789898317 +12 +7177.728515625 +22 +1.0452731345408917e-12 +32 +1124.1523753989832 +13 +7177.728515625 +23 +1.0452731345408917e-12 +33 +1124.1523753989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7177.728515625 +20 +9.982062919300372e-13 +30 +445.84768789898317 +11 +7203.908203125 +21 +1.045501630148743e-12 +31 +1127.4453441489832 +12 +7228.939453125 +22 +1.003898353335586e-12 +32 +527.8789378989832 +13 +7228.939453125 +23 +1.003898353335586e-12 +33 +527.8789378989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +7177.728515625 +20 +9.982062919300372e-13 +30 +445.84768789898317 +11 +7228.939453125 +21 +1.003898353335586e-12 +31 +527.8789378989832 +12 +7342.447265625 +22 +1.0017735881280576e-12 +32 +497.25784414898317 +13 +7342.447265625 +23 +1.0017735881280576e-12 +33 +497.25784414898317 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7228.939453125 +20 +1.003898353335586e-12 +30 +527.8789378989832 +11 +7203.908203125 +21 +1.045501630148743e-12 +31 +1127.4453441489832 +12 +7216.587890625 +22 +1.041524505529523e-12 +32 +1070.1289378989832 +13 +7216.587890625 +23 +1.041524505529523e-12 +33 +1070.1289378989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7993.142578125 +20 +9.985892863474677e-13 +30 +451.36721914898317 +11 +7992.533203125 +21 +9.704436690002871e-13 +31 +45.74612539898317 +12 +7865.267578125 +22 +1.0103783586699888e-12 +32 +621.2656566489832 +13 +7865.267578125 +23 +1.0103783586699888e-12 +33 +621.2656566489832 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +7992.533203125 +20 +9.704436690002871e-13 +30 +45.74612539898317 +11 +7993.142578125 +21 +9.985892863474677e-13 +31 +451.36721914898317 +12 +7993.142578125 +22 +9.833573300262188e-13 +32 +231.85159414898317 +13 +7993.142578125 +23 +9.833573300262188e-13 +33 +231.85159414898317 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7992.533203125 +20 +9.704436690002871e-13 +30 +45.74612539898317 +11 +7993.142578125 +21 +9.833573300262188e-13 +31 +231.85159414898317 +12 +8023.587890625 +22 +9.800177162844204e-13 +32 +183.72268789898317 +13 +8023.587890625 +23 +9.800177162844204e-13 +33 +183.72268789898317 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7609.306640625 +20 +1.0032543372451297e-12 +30 +518.5976878989832 +11 +7395.814453125 +21 +1.0020720147760342e-12 +31 +501.55862539898317 +12 +7388.548828125 +22 +1.0051034440503037e-12 +32 +545.2461253989832 +13 +7388.548828125 +23 +1.0051034440503037e-12 +33 +545.2461253989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7395.814453125 +20 +1.0020720147760342e-12 +30 +501.55862539898317 +11 +7609.306640625 +21 +1.0032543372451297e-12 +31 +518.5976878989832 +12 +7802.361328125 +22 +9.151265899579042e-13 +32 +-751.4569996010168 +13 +7802.361328125 +23 +9.151265899579042e-13 +33 +-751.4569996010168 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +7802.361328125 +20 +9.151265899579042e-13 +30 +-751.4569996010168 +11 +7609.306640625 +21 +1.0032543372451297e-12 +31 +518.5976878989832 +12 +7716.720703125 +22 +1.0113517011703377e-12 +32 +635.2930003989832 +13 +7716.720703125 +23 +1.0113517011703377e-12 +33 +635.2930003989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7802.361328125 +20 +9.151265899579042e-13 +30 +-751.4569996010168 +11 +7716.720703125 +21 +1.0113517011703377e-12 +31 +635.2930003989832 +12 +7780.541015625 +22 +1.0075607882742421e-12 +32 +580.6601878989832 +13 +7780.541015625 +23 +1.0075607882742421e-12 +33 +580.6601878989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7802.361328125 +20 +9.151265899579042e-13 +30 +-751.4569996010168 +11 +7780.541015625 +21 +1.0075607882742421e-12 +31 +580.6601878989832 +12 +7808.384765625 +22 +1.0113956113583233e-12 +32 +635.9258128989832 +13 +7808.384765625 +23 +1.0113956113583233e-12 +33 +635.9258128989832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +7802.361328125 +20 +9.151265899579042e-13 +30 +-751.4569996010168 +11 +7808.384765625 +21 +1.0113956113583233e-12 +31 +635.9258128989832 +12 +8033.126953125 +22 +9.50523893535754e-13 +32 +-241.32809335101683 +13 +8033.126953125 +23 +9.50523893535754e-13 +33 +-241.32809335101683 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +7802.361328125 +20 +9.151265899579042e-13 +30 +-751.4569996010168 +11 +8033.126953125 +21 +9.50523893535754e-13 +31 +-241.32809335101683 +12 +8276.314453125 +22 +9.175920656981362e-13 +32 +-715.9257496010168 +13 +8276.314453125 +23 +9.175920656981362e-13 +33 +-715.9257496010168 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +8033.126953125 +20 +9.50523893535754e-13 +30 +-241.32809335101683 +11 +7808.384765625 +21 +1.0113956113583233e-12 +31 +635.9258128989832 +12 +7865.267578125 +22 +1.0103783586699888e-12 +32 +621.2656566489832 +13 +7865.267578125 +23 +1.0103783586699888e-12 +33 +621.2656566489832 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +8033.126953125 +20 +9.50523893535754e-13 +30 +-241.32809335101683 +11 +7865.267578125 +21 +1.0103783586699888e-12 +31 +621.2656566489832 +12 +7992.533203125 +22 +9.704436690002871e-13 +32 +45.74612539898317 +13 +7992.533203125 +23 +9.704436690002871e-13 +33 +45.74612539898317 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +8434.447265625 +20 +9.876637810553313e-13 +30 +293.91409414898317 +11 +8023.587890625 +21 +9.800177162844204e-13 +31 +183.72268789898317 +12 +7993.142578125 +22 +9.833573300262188e-13 +32 +231.85159414898317 +13 +7993.142578125 +23 +9.833573300262188e-13 +33 +231.85159414898317 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +8023.587890625 +20 +9.800177162844204e-13 +30 +183.72268789898317 +11 +8434.447265625 +21 +9.876637810553313e-13 +31 +293.91409414898317 +12 +8438.384765625 +22 +9.853959011610347e-13 +32 +261.23050039898317 +13 +8438.384765625 +23 +9.853959011610347e-13 +33 +261.23050039898317 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +7992.533203125 +20 +9.704436690002871e-13 +30 +45.74612539898317 +11 +8057.876953125 +21 +9.657712997379608e-13 +31 +-21.589812101016832 +12 +8033.126953125 +22 +9.50523893535754e-13 +32 +-241.32809335101683 +13 +8033.126953125 +23 +9.50523893535754e-13 +33 +-241.32809335101683 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +8057.876953125 +20 +9.657712997379608e-13 +30 +-21.589812101016832 +11 +7992.533203125 +21 +9.704436690002871e-13 +31 +45.74612539898317 +12 +8196.369140625 +22 +9.68344111493269e-13 +32 +15.488312898983168 +13 +8196.369140625 +23 +9.68344111493269e-13 +33 +15.488312898983168 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +8057.876953125 +20 +9.657712997379608e-13 +30 +-21.589812101016832 +11 +8196.369140625 +21 +9.68344111493269e-13 +31 +15.488312898983168 +12 +8195.103515625 +22 +9.668820648636722e-13 +32 +-5.5819996010168325 +13 +8195.103515625 +23 +9.668820648636722e-13 +33 +-5.5819996010168325 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +8371.658203125 +20 +9.401505181999559e-13 +30 +-390.82418710101683 +11 +8323.048828125 +21 +9.371011995898404e-13 +31 +-434.76949960101683 +12 +8315.783203125 +22 +9.433543356196505e-13 +32 +-344.65231210101683 +13 +8315.783203125 +23 +9.433543356196505e-13 +33 +-344.65231210101683 +70 +2 + 0 +3DFACE + 8 +ship7 +10 +8033.126953125 +20 +9.50523893535754e-13 +30 +-241.32809335101683 +11 +8114.080078125 +21 +9.498497908350112e-13 +31 +-251.04293710101683 +12 +8276.314453125 +22 +9.175920656981362e-13 +32 +-715.9257496010168 +13 +8276.314453125 +23 +9.175920656981362e-13 +33 +-715.9257496010168 +70 +3 + 0 +3DFACE + 8 +ship7 +10 +8114.080078125 +20 +9.498497908350112e-13 +30 +-251.04293710101683 +11 +8033.126953125 +21 +9.50523893535754e-13 +31 +-241.32809335101683 +12 +8090.033203125 +22 +9.56883552429011e-13 +32 +-149.67574960101683 +13 +8090.033203125 +23 +9.56883552429011e-13 +33 +-149.67574960101683 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +8114.080078125 +20 +9.498497908350112e-13 +30 +-251.04293710101683 +11 +8090.033203125 +21 +9.56883552429011e-13 +31 +-149.67574960101683 +12 +8102.947265625 +22 +9.567672717460118e-13 +32 +-151.35153085101683 +13 +8102.947265625 +23 +9.567672717460118e-13 +33 +-151.35153085101683 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +8276.314453125 +20 +9.175920656981362e-13 +30 +-715.9257496010168 +11 +8114.080078125 +21 +9.498497908350112e-13 +31 +-251.04293710101683 +12 +8179.541015625 +22 +9.460068362346363e-13 +32 +-306.42574960101683 +13 +8179.541015625 +23 +9.460068362346363e-13 +33 +-306.42574960101683 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +8276.314453125 +20 +9.175920656981362e-13 +30 +-715.9257496010168 +11 +8179.541015625 +21 +9.460068362346363e-13 +31 +-306.42574960101683 +12 +8223.837890625 +22 +9.513939657791737e-13 +32 +-228.78903085101683 +13 +8223.837890625 +23 +9.513939657791737e-13 +33 +-228.78903085101683 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +8276.314453125 +20 +9.175920656981362e-13 +30 +-715.9257496010168 +11 +8223.837890625 +21 +9.513939657791737e-13 +31 +-228.78903085101683 +12 +8309.291015625 +22 +9.499002062360318e-13 +32 +-250.31637460101683 +13 +8309.291015625 +23 +9.499002062360318e-13 +33 +-250.31637460101683 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +8276.314453125 +20 +9.175920656981362e-13 +30 +-715.9257496010168 +11 +8309.291015625 +21 +9.499002062360318e-13 +31 +-250.31637460101683 +12 +8315.783203125 +22 +9.433543356196505e-13 +32 +-344.65231210101683 +13 +8315.783203125 +23 +9.433543356196505e-13 +33 +-344.65231210101683 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +8276.314453125 +20 +9.175920656981362e-13 +30 +-715.9257496010168 +11 +8315.783203125 +21 +9.433543356196505e-13 +31 +-344.65231210101683 +12 +8323.048828125 +22 +9.371011995898404e-13 +32 +-434.76949960101683 +13 +8323.048828125 +23 +9.371011995898404e-13 +33 +-434.76949960101683 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +8276.314453125 +20 +9.175920656981362e-13 +30 +-715.9257496010168 +11 +8323.048828125 +21 +9.371011995898404e-13 +31 +-434.76949960101683 +12 +8347.869140625 +22 +9.282671202884285e-13 +32 +-562.0819996010168 +13 +8347.869140625 +23 +9.282671202884285e-13 +33 +-562.0819996010168 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4997.689453125 +20 +1.0133634383013845e-12 +30 +664.2851878989832 +11 +4978.939453125 +21 +1.001432877595354e-12 +31 +492.34768789898317 +12 +4937.619140625 +22 +1.0095595149792191e-12 +32 +609.4648753989832 +13 +4937.619140625 +23 +1.0095595149792191e-12 +33 +609.4648753989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +4780.728515625 +20 +1.009188717836229e-12 +30 +604.1211253989832 +11 +5489.548828125 +21 +9.15427456060769e-13 +31 +-747.1210621010168 +12 +3198.515625 +22 +9.133213933407158e-13 +32 +-777.4726246010168 +13 +3198.515625 +23 +9.133213933407158e-13 +33 +-777.4726246010168 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5489.548828125 +20 +9.15427456060769e-13 +30 +-747.1210621010168 +11 +4780.728515625 +21 +1.009188717836229e-12 +31 +604.1211253989832 +12 +4965.884765625 +22 +1.0009531181340292e-12 +32 +485.43362539898317 +13 +4965.884765625 +23 +1.0009531181340292e-12 +33 +485.43362539898317 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +5489.548828125 +20 +9.15427456060769e-13 +30 +-747.1210621010168 +11 +4965.884765625 +21 +1.0009531181340292e-12 +31 +485.43362539898317 +12 +4978.939453125 +22 +1.001432877595354e-12 +32 +492.34768789898317 +13 +4978.939453125 +23 +1.001432877595354e-12 +33 +492.34768789898317 +70 +13 + 0 +3DFACE + 8 +ship7 +10 +5489.548828125 +20 +9.15427456060769e-13 +30 +-747.1210621010168 +11 +4978.939453125 +21 +1.001432877595354e-12 +31 +492.34768789898317 +12 +4997.689453125 +22 +1.0133634383013845e-12 +32 +664.2851878989832 +13 +4997.689453125 +23 +1.0133634383013845e-12 +33 +664.2851878989832 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +5489.548828125 +20 +9.15427456060769e-13 +30 +-747.1210621010168 +11 +4997.689453125 +21 +1.0133634383013845e-12 +31 +664.2851878989832 +12 +5088.134765625 +22 +9.979834883835914e-13 +32 +442.63675039898317 +13 +5088.134765625 +23 +9.979834883835914e-13 +33 +442.63675039898317 +70 +15 + 0 +3DFACE + 8 +ship7 +10 +5088.134765625 +20 +9.979834883835914e-13 +30 +442.63675039898317 +11 +4997.689453125 +21 +1.0133634383013845e-12 +31 +664.2851878989832 +12 +5066.314453125 +22 +1.0107662319971955e-12 +32 +626.8555003989832 +13 +5066.314453125 +23 +1.0107662319971955e-12 +33 +626.8555003989832 +70 +1 + 0 +3DFACE + 8 +ship7 +10 +5489.548828125 +20 +9.15427456060769e-13 +30 +-747.1210621010168 +11 +5088.134765625 +21 +9.979834883835914e-13 +31 +442.63675039898317 +12 +5925.650390625 +22 +9.11731681905309e-13 +32 +-800.3827808510168 +13 +5925.650390625 +23 +9.11731681905309e-13 +33 +-800.3827808510168 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +317.39093237733323 +20 +-1.1134146989805194e-12 +30 +425.50307997950904 +11 +64.94561987733323 +21 +-1.1217917870662286e-12 +31 +304.77651747950904 +12 +44.10968237733323 +22 +-1.1134146989805194e-12 +32 +425.50307997950904 +13 +44.10968237733323 +23 +-1.1134146989805194e-12 +33 +425.50307997950904 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +64.94561987733323 +20 +-1.1217917870662286e-12 +30 +304.77651747950904 +11 +317.39093237733323 +21 +-1.1134146989805194e-12 +31 +425.50307997950904 +12 +102.71515112733323 +22 +-1.1447600679892478e-12 +32 +-26.23129502049096 +13 +102.71515112733323 +23 +-1.1447600679892478e-12 +33 +-26.23129502049096 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +102.71515112733323 +20 +-1.1447600679892478e-12 +30 +-26.23129502049096 +11 +317.39093237733323 +21 +-1.1134146989805194e-12 +31 +425.50307997950904 +12 +102.89093237733323 +22 +-1.1487363794568384e-12 +32 +-83.53598252049096 +13 +102.89093237733323 +23 +-1.1487363794568384e-12 +33 +-83.53598252049096 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +102.89093237733323 +20 +-1.1487363794568384e-12 +30 +-83.53598252049096 +11 +317.39093237733323 +21 +-1.1134146989805194e-12 +31 +425.50307997950904 +12 +175.41827612733323 +22 +-1.1545390294839808e-12 +32 +-167.16098252049096 +13 +175.41827612733323 +23 +-1.1545390294839808e-12 +33 +-167.16098252049096 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +175.41827612733323 +20 +-1.1545390294839808e-12 +30 +-167.16098252049096 +11 +317.39093237733323 +21 +-1.1134146989805194e-12 +31 +425.50307997950904 +12 +593.1682761273332 +22 +-1.1589576954379455e-12 +32 +-230.84067002049096 +13 +593.1682761273332 +23 +-1.1589576954379455e-12 +33 +-230.84067002049096 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +593.1682761273332 +20 +-1.1589576954379455e-12 +30 +-230.84067002049096 +11 +317.39093237733323 +21 +-1.1134146989805194e-12 +31 +425.50307997950904 +12 +854.4495261273332 +22 +-1.161962290708446e-12 +32 +-274.14145127049096 +13 +854.4495261273332 +23 +-1.161962290708446e-12 +33 +-274.14145127049096 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +854.4495261273332 +20 +-1.161962290708446e-12 +30 +-274.14145127049096 +11 +317.39093237733323 +21 +-1.1134146989805194e-12 +31 +425.50307997950904 +12 +1020.0706198773332 +22 +-1.1651051217559383e-12 +32 +-319.43442002049096 +13 +1020.0706198773332 +23 +-1.1651051217559383e-12 +33 +-319.43442002049096 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +2709.9964011273332 +20 +-1.0842339396091583e-12 +30 +846.042142479509 +11 +2575.4065573773332 +21 +-1.1742363712869048e-12 +31 +-451.02959437277104 +12 +2575.4065573773332 +22 +-1.0831182955736707e-12 +32 +862.120267479509 +13 +2575.4065573773332 +23 +-1.0831182955736707e-12 +33 +862.120267479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +2575.4065573773332 +20 +-1.1742363712869048e-12 +30 +-451.02959437277104 +11 +2709.9964011273332 +21 +-1.0842339396091583e-12 +31 +846.042142479509 +12 +2795.6839011273332 +22 +-1.0865888267277968e-12 +32 +812.104642479509 +13 +2795.6839011273332 +23 +-1.0865888267277968e-12 +33 +812.104642479509 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +2575.4065573773332 +20 +-1.1742363712869048e-12 +30 +-451.02959437277104 +11 +2795.6839011273332 +21 +-1.0865888267277968e-12 +31 +812.104642479509 +12 +2883.6565573773332 +22 +-1.0873824627180562e-12 +32 +800.667142479509 +13 +2883.6565573773332 +23 +-1.0873824627180562e-12 +33 +800.667142479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +979.8987448773332 +20 +-1.0916645191982877e-12 +30 +738.956204979509 +11 +1020.0706198773332 +21 +-1.1651051217559383e-12 +31 +-319.43442002049096 +12 +968.4260886273332 +22 +-1.0981404587745436e-12 +32 +645.628079979509 +13 +968.4260886273332 +23 +-1.0981404587745436e-12 +33 +645.628079979509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +1020.0706198773332 +20 +-1.1651051217559383e-12 +30 +-319.43442002049096 +11 +979.8987448773332 +21 +-1.0916645191982877e-12 +31 +738.956204979509 +12 +1272.1057761273332 +22 +-1.0906285640224778e-12 +32 +753.885892479509 +13 +1272.1057761273332 +23 +-1.0906285640224778e-12 +33 +753.885892479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +377.42608862733323 +20 +-1.0961563687988951e-12 +30 +674.221829979509 +11 +317.39093237733323 +21 +-1.1134146989805194e-12 +31 +425.50307997950904 +12 +316.44171362733323 +22 +-1.100508356319252e-12 +32 +611.503079979509 +13 +316.44171362733323 +23 +-1.100508356319252e-12 +33 +611.503079979509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +317.39093237733323 +20 +-1.1134146989805194e-12 +30 +425.50307997950904 +11 +377.42608862733323 +21 +-1.0961563687988951e-12 +31 +674.221829979509 +12 +1020.0706198773332 +22 +-1.1651051217559383e-12 +32 +-319.43442002049096 +13 +1020.0706198773332 +23 +-1.1651051217559383e-12 +33 +-319.43442002049096 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +1020.0706198773332 +20 +-1.1651051217559383e-12 +30 +-319.43442002049096 +11 +377.42608862733323 +21 +-1.0961563687988951e-12 +31 +674.221829979509 +12 +470.02765112733323 +22 +-1.0964279614431027e-12 +32 +670.307767479509 +13 +470.02765112733323 +23 +-1.0964279614431027e-12 +33 +670.307767479509 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +1020.0706198773332 +20 +-1.1651051217559383e-12 +30 +-319.43442002049096 +11 +470.02765112733323 +21 +-1.0964279614431027e-12 +31 +670.307767479509 +12 +968.4260886273332 +22 +-1.0981404587745436e-12 +32 +645.628079979509 +13 +968.4260886273332 +23 +-1.0981404587745436e-12 +33 +645.628079979509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +1272.1057761273332 +20 +-1.0906285640224778e-12 +30 +753.885892479509 +11 +1534.0198386273332 +21 +-1.1682455133485425e-12 +31 +-364.69223252049096 +12 +1020.0706198773332 +22 +-1.1651051217559383e-12 +32 +-319.43442002049096 +13 +1020.0706198773332 +23 +-1.1651051217559383e-12 +33 +-319.43442002049096 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +1534.0198386273332 +20 +-1.1682455133485425e-12 +30 +-364.69223252049096 +11 +1272.1057761273332 +21 +-1.0906285640224778e-12 +31 +753.885892479509 +12 +2575.4065573773332 +22 +-1.0831182955736707e-12 +32 +862.120267479509 +13 +2575.4065573773332 +23 +-1.0831182955736707e-12 +33 +862.120267479509 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +1534.0198386273332 +20 +-1.1682455133485425e-12 +30 +-364.69223252049096 +11 +2575.4065573773332 +21 +-1.0831182955736707e-12 +31 +862.120267479509 +12 +2575.4065573773332 +22 +-1.1742363712869048e-12 +32 +-451.02959437277104 +13 +2575.4065573773332 +23 +-1.1742363712869048e-12 +33 +-451.02959437277104 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +1469.1682761273332 +20 +-1.068346583074642e-12 +30 +1075.003079979509 +11 +1272.1057761273332 +21 +-1.0906285640224778e-12 +31 +753.885892479509 +12 +1272.1057761273332 +22 +-1.068346583074642e-12 +32 +1075.003079979509 +13 +1272.1057761273332 +23 +-1.068346583074642e-12 +33 +1075.003079979509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +1272.1057761273332 +20 +-1.0906285640224778e-12 +30 +753.885892479509 +11 +1469.1682761273332 +21 +-1.068346583074642e-12 +31 +1075.003079979509 +12 +2575.4065573773332 +22 +-1.0831182955736707e-12 +32 +862.120267479509 +13 +2575.4065573773332 +23 +-1.0831182955736707e-12 +33 +862.120267479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +1469.1682761273332 +20 +-1.068346583074642e-12 +30 +1075.003079979509 +11 +2253.6799948773332 +21 +-1.0670853848974982e-12 +31 +1093.178861229509 +12 +2575.4065573773332 +22 +-1.0831182955736707e-12 +32 +862.120267479509 +13 +2575.4065573773332 +23 +-1.0831182955736707e-12 +33 +862.120267479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +2253.6799948773332 +20 +-1.0670853848974982e-12 +30 +1093.178861229509 +11 +1469.1682761273332 +21 +-1.068346583074642e-12 +31 +1075.003079979509 +12 +2201.2854636273332 +22 +-1.0639238513625304e-12 +32 +1138.741361229509 +13 +2201.2854636273332 +23 +-1.0639238513625304e-12 +33 +1138.741361229509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +2621.3323386273332 +20 +-1.0337372234256459e-12 +30 +1573.776517479509 +11 +2267.5667136273332 +21 +-1.0498238021093564e-12 +31 +1341.944486229509 +12 +2241.5979636273332 +22 +-1.0327159049791645e-12 +32 +1588.495267479509 +13 +2241.5979636273332 +23 +-1.0327159049791645e-12 +33 +1588.495267479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +2267.5667136273332 +20 +-1.0498238021093564e-12 +30 +1341.944486229509 +11 +2621.3323386273332 +21 +-1.0337372234256459e-12 +31 +1573.776517479509 +12 +2599.1370261273332 +22 +-1.0383673088032452e-12 +32 +1507.049954979509 +13 +2599.1370261273332 +23 +-1.0383673088032452e-12 +33 +1507.049954979509 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +2267.5667136273332 +20 +-1.0498238021093564e-12 +30 +1341.944486229509 +11 +2599.1370261273332 +21 +-1.0383673088032452e-12 +31 +1507.049954979509 +12 +2575.4065573773332 +22 +-1.0831182955736707e-12 +32 +862.120267479509 +13 +2575.4065573773332 +23 +-1.0831182955736707e-12 +33 +862.120267479509 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +2575.4065573773332 +20 +-1.0831182955736707e-12 +30 +862.120267479509 +11 +2253.6799948773332 +21 +-1.0670853848974982e-12 +31 +1093.178861229509 +12 +2267.5667136273332 +22 +-1.0498238021093564e-12 +32 +1341.944486229509 +13 +2267.5667136273332 +23 +-1.0498238021093564e-12 +33 +1341.944486229509 +70 +12 + 0 +3DFACE + 8 +ship6 +10 +2201.4260886273332 +20 +-1.0509199305057393e-12 +30 +1326.147611229509 +11 +1469.1682761273332 +21 +-1.068346583074642e-12 +31 +1075.003079979509 +12 +1452.9846823773332 +22 +-1.0503100667837162e-12 +32 +1334.936673729509 +13 +1452.9846823773332 +23 +-1.0503100667837162e-12 +33 +1334.936673729509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +1469.1682761273332 +20 +-1.068346583074642e-12 +30 +1075.003079979509 +11 +2201.4260886273332 +21 +-1.0509199305057393e-12 +31 +1326.147611229509 +12 +2201.2854636273332 +22 +-1.0639238513625304e-12 +32 +1138.741361229509 +13 +2201.2854636273332 +23 +-1.0639238513625304e-12 +33 +1138.741361229509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +2883.6565573773332 +20 +-1.0873824627180562e-12 +30 +800.667142479509 +11 +2683.8987448773332 +21 +-1.1748605018534197e-12 +31 +-460.02426377049096 +12 +2575.4065573773332 +22 +-1.1742363712869048e-12 +32 +-451.02959437277104 +13 +2575.4065573773332 +23 +-1.1742363712869048e-12 +33 +-451.02959437277104 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +2683.8987448773332 +20 +-1.1748605018534197e-12 +30 +-460.02426377049096 +11 +2883.6565573773332 +21 +-1.0873824627180562e-12 +31 +800.667142479509 +12 +3749.1448386273332 +22 +-1.180164689931762e-12 +32 +-536.465670020491 +13 +3749.1448386273332 +23 +-1.180164689931762e-12 +33 +-536.465670020491 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +3749.1448386273332 +20 +-1.180164689931762e-12 +30 +-536.465670020491 +11 +2883.6565573773332 +21 +-1.0873824627180562e-12 +31 +800.667142479509 +12 +5094.117494877333 +22 +-1.1857681178097101e-12 +32 +-617.219576270491 +13 +5094.117494877333 +23 +-1.1857681178097101e-12 +33 +-617.219576270491 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +5845.910463627333 +20 +-1.082062824758756e-12 +30 +877.331204979509 +11 +5912.355776127333 +21 +-1.1254021803006053e-12 +31 +252.74526747950904 +12 +5094.117494877333 +22 +-1.1857681178097101e-12 +32 +-617.219576270491 +13 +5094.117494877333 +23 +-1.1857681178097101e-12 +33 +-617.219576270491 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +5912.355776127333 +20 +-1.1254021803006053e-12 +30 +252.74526747950904 +11 +5845.910463627333 +21 +-1.082062824758756e-12 +31 +877.331204979509 +12 +5912.414369877333 +22 +-1.121020106169962e-12 +32 +315.89761122950904 +13 +5912.414369877333 +23 +-1.121020106169962e-12 +33 +315.89761122950904 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +5912.414369877333 +20 +-1.121020106169962e-12 +30 +315.89761122950904 +11 +5845.910463627333 +21 +-1.082062824758756e-12 +31 +877.331204979509 +12 +5920.957338627333 +22 +-1.0886900105380737e-12 +32 +781.823392479509 +13 +5920.957338627333 +23 +-1.0886900105380737e-12 +33 +781.823392479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +3499.2424948773332 +20 +-1.0850633542711097e-12 +30 +834.089017479509 +11 +5094.117494877333 +21 +-1.1857681178097101e-12 +31 +-617.219576270491 +12 +2883.6565573773332 +22 +-1.0873824627180562e-12 +32 +800.667142479509 +13 +2883.6565573773332 +23 +-1.0873824627180562e-12 +33 +800.667142479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +5094.117494877333 +20 +-1.1857681178097101e-12 +30 +-617.219576270491 +11 +3499.2424948773332 +21 +-1.0850633542711097e-12 +31 +834.089017479509 +12 +3971.2385886273332 +22 +-1.084429909151835e-12 +32 +843.217923729509 +13 +3971.2385886273332 +23 +-1.084429909151835e-12 +33 +843.217923729509 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +5094.117494877333 +20 +-1.1857681178097101e-12 +30 +-617.219576270491 +11 +3971.2385886273332 +21 +-1.084429909151835e-12 +31 +843.217923729509 +12 +4736.297182377333 +22 +-1.0819083259491769e-12 +32 +879.557767479509 +13 +4736.297182377333 +23 +-1.0819083259491769e-12 +33 +879.557767479509 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +5094.117494877333 +20 +-1.1857681178097101e-12 +30 +-617.219576270491 +11 +4736.297182377333 +21 +-1.0819083259491769e-12 +31 +879.557767479509 +12 +5486.625307377333 +22 +-1.0779230698136633e-12 +32 +936.991361229509 +13 +5486.625307377333 +23 +-1.0779230698136633e-12 +33 +936.991361229509 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +5094.117494877333 +20 +-1.1857681178097101e-12 +30 +-617.219576270491 +11 +5486.625307377333 +21 +-1.0779230698136633e-12 +31 +936.991361229509 +12 +5845.910463627333 +22 +-1.082062824758756e-12 +32 +877.331204979509 +13 +5845.910463627333 +23 +-1.082062824758756e-12 +33 +877.331204979509 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +5845.910463627333 +20 +-1.082062824758756e-12 +30 +877.331204979509 +11 +5486.625307377333 +21 +-1.0779230698136633e-12 +31 +936.991361229509 +12 +5656.078432377333 +22 +-1.0795241653718812e-12 +32 +913.917142479509 +13 +5656.078432377333 +23 +-1.0795241653718812e-12 +33 +913.917142479509 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +5912.355776127333 +20 +-1.1254021803006053e-12 +30 +252.74526747950904 +11 +5960.871401127333 +21 +-1.1881986280298795e-12 +31 +-652.246920020491 +12 +5094.117494877333 +22 +-1.1857681178097101e-12 +32 +-617.219576270491 +13 +5094.117494877333 +23 +-1.1857681178097101e-12 +33 +-617.219576270491 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +5960.871401127333 +20 +-1.1881986280298795e-12 +30 +-652.246920020491 +11 +5912.355776127333 +21 +-1.1254021803006053e-12 +31 +252.74526747950904 +12 +7121.297182377333 +22 +-1.1906657300733703e-12 +32 +-687.801607520491 +13 +7121.297182377333 +23 +-1.1906657300733703e-12 +33 +-687.801607520491 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +7718.285463627333 +20 +-1.1215819939458527e-12 +30 +307.79995497950904 +11 +7902.914369877333 +21 +-1.1536079708683589e-12 +31 +-153.74301377049096 +12 +6844.125307377333 +22 +-1.1233123806131395e-12 +32 +282.86245497950904 +13 +6844.125307377333 +23 +-1.1233123806131395e-12 +33 +282.86245497950904 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +7902.914369877333 +20 +-1.1536079708683589e-12 +30 +-153.74301377049096 +11 +7718.285463627333 +21 +-1.1215819939458527e-12 +31 +307.79995497950904 +12 +8368.793276127333 +22 +-1.1195003257746805e-12 +32 +337.79995497950904 +13 +8368.793276127333 +23 +-1.1195003257746805e-12 +33 +337.79995497950904 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +7902.914369877333 +20 +-1.1536079708683589e-12 +30 +-153.74301377049096 +11 +8368.793276127333 +21 +-1.1195003257746805e-12 +31 +337.79995497950904 +12 +8330.015932377333 +22 +-1.1256705203382955e-12 +32 +248.87807997950904 +13 +8330.015932377333 +23 +-1.1256705203382955e-12 +33 +248.87807997950904 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +6462.222963627333 +20 +-1.1252574393105785e-12 +30 +254.83120497950904 +11 +7121.297182377333 +21 +-1.1906657300733703e-12 +31 +-687.801607520491 +12 +5912.355776127333 +22 +-1.1254021803006053e-12 +32 +252.74526747950904 +13 +5912.355776127333 +23 +-1.1254021803006053e-12 +33 +252.74526747950904 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +7121.297182377333 +20 +-1.1906657300733703e-12 +30 +-687.801607520491 +11 +6462.222963627333 +21 +-1.1252574393105785e-12 +31 +254.83120497950904 +12 +6844.125307377333 +22 +-1.1233123806131395e-12 +32 +282.86245497950904 +13 +6844.125307377333 +23 +-1.1233123806131395e-12 +33 +282.86245497950904 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +7410.398744877333 +20 +-1.170971197610171e-12 +30 +-403.97348252049096 +11 +7121.297182377333 +21 +-1.1906657300733703e-12 +31 +-687.801607520491 +12 +6844.125307377333 +22 +-1.1233123806131395e-12 +32 +282.86245497950904 +13 +6844.125307377333 +23 +-1.1233123806131395e-12 +33 +282.86245497950904 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +7121.297182377333 +20 +-1.1906657300733703e-12 +30 +-687.801607520491 +11 +7410.398744877333 +21 +-1.170971197610171e-12 +31 +-403.97348252049096 +12 +7267.547182377333 +22 +-1.1923034174549096e-12 +32 +-711.403170020491 +13 +7267.547182377333 +23 +-1.1923034174549096e-12 +33 +-711.403170020491 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +7267.547182377333 +20 +-1.1923034174549096e-12 +30 +-711.403170020491 +11 +7410.398744877333 +21 +-1.170971197610171e-12 +31 +-403.97348252049096 +12 +7608.304994877333 +22 +-1.1937117960769683e-12 +32 +-731.700045020491 +13 +7608.304994877333 +23 +-1.1937117960769683e-12 +33 +-731.700045020491 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +7902.914369877333 +20 +-1.1536079708683589e-12 +30 +-153.74301377049096 +11 +7410.398744877333 +21 +-1.170971197610171e-12 +31 +-403.97348252049096 +12 +6844.125307377333 +22 +-1.1233123806131395e-12 +32 +282.86245497950904 +13 +6844.125307377333 +23 +-1.1233123806131395e-12 +33 +282.86245497950904 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +7410.398744877333 +20 +-1.170971197610171e-12 +30 +-403.97348252049096 +11 +7902.914369877333 +21 +-1.1536079708683589e-12 +31 +-153.74301377049096 +12 +7502.730776127333 +22 +-1.1679527787619715e-12 +32 +-360.47348252049096 +13 +7502.730776127333 +23 +-1.1679527787619715e-12 +33 +-360.47348252049096 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +6519.187807377333 +20 +-1.1220536218908839e-12 +30 +301.00307997950904 +11 +6844.125307377333 +21 +-1.1233123806131395e-12 +31 +282.86245497950904 +12 +6462.222963627333 +22 +-1.1252574393105785e-12 +32 +254.83120497950904 +13 +6462.222963627333 +23 +-1.1252574393105785e-12 +33 +254.83120497950904 +70 +1 + 0 +3DFACE + 8 +ship6 +10 +6844.125307377333 +20 +-1.1233123806131395e-12 +30 +282.86245497950904 +11 +6519.187807377333 +21 +-1.1220536218908839e-12 +31 +301.00307997950904 +12 +6597.422182377333 +22 +-1.119554806933848e-12 +32 +337.01479872950904 +13 +6597.422182377333 +23 +-1.119554806933848e-12 +33 +337.01479872950904 +70 +13 + 0 +3DFACE + 8 +ship6 +10 +6844.125307377333 +20 +-1.1233123806131395e-12 +30 +282.86245497950904 +11 +6597.422182377333 +21 +-1.119554806933848e-12 +31 +337.01479872950904 +12 +6798.879213627333 +22 +-1.1226146965151451e-12 +32 +292.91714247950904 +13 +6798.879213627333 +23 +-1.1226146965151451e-12 +33 +292.91714247950904 +70 +3 + 0 +3DFACE + 8 +ship6 +10 +6798.879213627333 +20 +-1.1226146965151451e-12 +30 +292.91714247950904 +11 +6597.422182377333 +21 +-1.119554806933848e-12 +31 +337.01479872950904 +12 +6711.879213627333 +22 +-1.120023995423991e-12 +32 +330.25307997950904 +13 +6711.879213627333 +23 +-1.120023995423991e-12 +33 +330.25307997950904 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1417.806640625 +20 +1.2593217484438424e-12 +30 +553.3181820138116 +11 +1773.400390625 +21 +1.1951219247337787e-12 +31 +-371.89878482744916 +12 +14.638671875 +22 +1.1937117960769683e-12 +32 +-392.22088048618843 +13 +14.638671875 +23 +1.1937117960769683e-12 +33 +-392.22088048618843 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.1951219247337787e-12 +30 +-371.89878482744916 +11 +1417.806640625 +21 +1.2593217484438424e-12 +31 +553.3181820138116 +12 +1548.4543265297798 +22 +8.875013776411845e-13 +32 +553.3181820138088 +13 +1548.4543265297798 +23 +8.875013776411845e-13 +33 +553.3181820138088 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.1951219247337787e-12 +30 +-371.89878482744916 +11 +1548.4543265297798 +21 +8.875013776411845e-13 +31 +553.3181820138088 +12 +1548.892578125 +22 +1.2592648278297869e-12 +32 +552.4978695138116 +13 +1548.892578125 +23 +1.2592648278297869e-12 +33 +552.4978695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.1951219247337787e-12 +30 +-371.89878482744916 +11 +1548.892578125 +21 +1.2592648278297869e-12 +31 +552.4978695138116 +12 +1549.0772780519674 +22 +8.865082253681158e-13 +32 +552.5570169376306 +13 +1549.0772780519674 +23 +8.865082253681158e-13 +33 +552.5570169376306 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +818.533203125 +20 +1.2490256225128338e-12 +30 +404.93536951381157 +11 +445.150390625 +21 +1.235223186756007e-12 +31 +206.02130701381157 +12 +412.291015625 +22 +1.241346218525119e-12 +32 +294.26349451381157 +13 +412.291015625 +23 +1.241346218525119e-12 +33 +294.26349451381157 +70 +0 + 0 +3DFACE + 8 +ship5 +10 +1164.013671875 +20 +1.3048061979839543e-12 +30 +1208.8181820138116 +11 +1417.806640625 +21 +1.2593217484438424e-12 +31 +553.3181820138116 +12 +1067.626953125 +22 +1.2608472209005295e-12 +32 +575.3025570138116 +13 +1067.626953125 +23 +1.2608472209005295e-12 +33 +575.3025570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1417.806640625 +20 +1.2593217484438424e-12 +30 +553.3181820138116 +11 +1164.013671875 +21 +1.3048061979839543e-12 +31 +1208.8181820138116 +12 +1462.783203125 +22 +1.3022626596873033e-12 +32 +1172.1619320138116 +13 +1462.783203125 +23 +1.3022626596873033e-12 +33 +1172.1619320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +818.767578125 +20 +1.2547502099835572e-12 +30 +487.43536951381157 +11 +951.306640625 +21 +1.2549518715876395e-12 +31 +490.34161951381157 +12 +818.533203125 +22 +1.2490256225128338e-12 +32 +404.93536951381157 +13 +818.533203125 +23 +1.2490256225128338e-12 +33 +404.93536951381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +951.306640625 +20 +1.2549518715876395e-12 +30 +490.34161951381157 +11 +818.767578125 +21 +1.2547502099835572e-12 +31 +487.43536951381157 +12 +856.490234375 +22 +1.256714784320101e-12 +32 +515.7478695138116 +13 +856.490234375 +23 +1.256714784320101e-12 +33 +515.7478695138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +143.779296875 +20 +1.2497314381271218e-12 +30 +415.10724451381157 +11 +126.435546875 +21 +1.2353110071319784e-12 +31 +207.28693201381157 +12 +106.033203125 +22 +1.248389737938671e-12 +32 +395.77130701381157 +13 +106.033203125 +23 +1.248389737938671e-12 +33 +395.77130701381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +126.435546875 +20 +1.2353110071319784e-12 +30 +207.28693201381157 +11 +143.779296875 +21 +1.2497314381271218e-12 +31 +415.10724451381157 +12 +180.693359375 +22 +1.236929178874413e-12 +32 +230.60724451381157 +13 +180.693359375 +23 +1.236929178874413e-12 +33 +230.60724451381157 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +126.435546875 +20 +1.2353110071319784e-12 +30 +207.28693201381157 +11 +180.693359375 +21 +1.236929178874413e-12 +31 +230.60724451381157 +12 +229.830078125 +22 +1.2352166815429722e-12 +32 +205.92755701381157 +13 +229.830078125 +23 +1.2352166815429722e-12 +33 +205.92755701381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +180.693359375 +20 +1.236929178874413e-12 +30 +230.60724451381157 +11 +143.779296875 +21 +1.2497314381271218e-12 +31 +415.10724451381157 +12 +151.080078125 +22 +1.2487800507207658e-12 +32 +401.39630701381157 +13 +151.080078125 +23 +1.2487800507207658e-12 +33 +401.39630701381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +71.310546875 +20 +1.2268379671540042e-12 +30 +85.17755701381157 +11 +445.150390625 +21 +1.235223186756007e-12 +31 +206.02130701381157 +12 +70.548828125 +22 +1.2032614488122206e-12 +32 +-254.59588048618843 +13 +70.548828125 +23 +1.2032614488122206e-12 +33 +-254.59588048618843 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +445.150390625 +20 +1.235223186756007e-12 +30 +206.02130701381157 +11 +71.310546875 +21 +1.2268379671540042e-12 +31 +85.17755701381157 +12 +381.763671875 +22 +1.2352085500266785e-12 +32 +205.81036951381157 +13 +381.763671875 +23 +1.2352085500266785e-12 +33 +205.81036951381157 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +381.763671875 +20 +1.2352085500266785e-12 +30 +205.81036951381157 +11 +71.310546875 +21 +1.2268379671540042e-12 +31 +85.17755701381157 +12 +86.369140625 +22 +1.2351548820191405e-12 +32 +205.03693201381157 +13 +86.369140625 +23 +1.2351548820191405e-12 +33 +205.03693201381157 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +381.763671875 +20 +1.2352085500266785e-12 +30 +205.81036951381157 +11 +86.369140625 +21 +1.2351548820191405e-12 +31 +205.03693201381157 +12 +229.830078125 +22 +1.2352166815429722e-12 +32 +205.92755701381157 +13 +229.830078125 +23 +1.2352166815429722e-12 +33 +205.92755701381157 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +229.830078125 +20 +1.2352166815429722e-12 +30 +205.92755701381157 +11 +86.369140625 +21 +1.2351548820191405e-12 +31 +205.03693201381157 +12 +126.435546875 +22 +1.2353110071319784e-12 +32 +207.28693201381157 +13 +126.435546875 +23 +1.2353110071319784e-12 +33 +207.28693201381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +381.763671875 +20 +1.2352085500266785e-12 +30 +205.81036951381157 +11 +229.830078125 +21 +1.2352166815429722e-12 +31 +205.92755701381157 +12 +280.326171875 +22 +1.236085127483133e-12 +32 +218.44318201381157 +13 +280.326171875 +23 +1.236085127483133e-12 +33 +218.44318201381157 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +381.763671875 +20 +1.2352085500266785e-12 +30 +205.81036951381157 +11 +280.326171875 +21 +1.236085127483133e-12 +31 +218.44318201381157 +12 +334.748046875 +22 +1.2360217016560426e-12 +32 +217.52911951381157 +13 +334.748046875 +23 +1.2360217016560426e-12 +33 +217.52911951381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +292.923828125 +20 +1.255864227715786e-12 +30 +503.49005701381157 +11 +229.830078125 +21 +1.2352166815429722e-12 +31 +205.92755701381157 +12 +180.693359375 +22 +1.236929178874413e-12 +32 +230.60724451381157 +13 +180.693359375 +23 +1.236929178874413e-12 +33 +230.60724451381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +229.830078125 +20 +1.2352166815429722e-12 +30 +205.92755701381157 +11 +292.923828125 +21 +1.255864227715786e-12 +31 +503.49005701381157 +12 +324.072265625 +22 +1.2548380303595286e-12 +32 +488.70099451381157 +13 +324.072265625 +23 +1.2548380303595286e-12 +33 +488.70099451381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +365.099609375 +20 +1.266547413822372e-12 +30 +657.4509945138116 +11 +523.830078125 +21 +1.2571912911749084e-12 +31 +522.6150570138116 +12 +347.369140625 +22 +1.2640380278941543e-12 +32 +621.2869320138116 +13 +347.369140625 +23 +1.2640380278941543e-12 +33 +621.2869320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +523.830078125 +20 +1.2571912911749084e-12 +30 +522.6150570138116 +11 +365.099609375 +21 +1.266547413822372e-12 +31 +657.4509945138116 +12 +541.595703125 +22 +1.260658569722517e-12 +32 +572.5838070138116 +13 +541.595703125 +23 +1.260658569722517e-12 +33 +572.5838070138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +599.943359375 +20 +1.265524469072632e-12 +30 +642.7088070138116 +11 +541.595703125 +21 +1.260658569722517e-12 +31 +572.5838070138116 +12 +541.595703125 +22 +1.265524469072632e-12 +32 +642.7088070138116 +13 +541.595703125 +23 +1.265524469072632e-12 +33 +642.7088070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +456.822265625 +20 +1.2456917008324409e-12 +30 +356.88849451381157 +11 +818.533203125 +21 +1.2490256225128338e-12 +31 +404.93536951381157 +12 +412.291015625 +22 +1.241346218525119e-12 +32 +294.26349451381157 +13 +412.291015625 +23 +1.241346218525119e-12 +33 +294.26349451381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +818.533203125 +20 +1.2490256225128338e-12 +30 +404.93536951381157 +11 +456.822265625 +21 +1.2456917008324409e-12 +31 +356.88849451381157 +12 +497.298828125 +22 +1.2541257095322056e-12 +32 +478.43536951381157 +13 +497.298828125 +23 +1.2541257095322056e-12 +33 +478.43536951381157 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +818.533203125 +20 +1.2490256225128338e-12 +30 +404.93536951381157 +11 +497.298828125 +21 +1.2541257095322056e-12 +31 +478.43536951381157 +12 +523.830078125 +22 +1.2571912911749084e-12 +32 +522.6150570138116 +13 +523.830078125 +23 +1.2571912911749084e-12 +33 +522.6150570138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +818.533203125 +20 +1.2490256225128338e-12 +30 +404.93536951381157 +11 +523.830078125 +21 +1.2571912911749084e-12 +31 +522.6150570138116 +12 +748.009765625 +22 +1.2509950757591537e-12 +32 +433.31818201381157 +13 +748.009765625 +23 +1.2509950757591537e-12 +33 +433.31818201381157 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +748.009765625 +20 +1.2509950757591537e-12 +30 +433.31818201381157 +11 +523.830078125 +21 +1.2571912911749084e-12 +31 +522.6150570138116 +12 +541.595703125 +22 +1.260658569722517e-12 +32 +572.5838070138116 +13 +541.595703125 +23 +1.260658569722517e-12 +33 +572.5838070138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +748.009765625 +20 +1.2509950757591537e-12 +30 +433.31818201381157 +11 +541.595703125 +21 +1.260658569722517e-12 +31 +572.5838070138116 +12 +654.318359375 +22 +1.2582630250224103e-12 +32 +538.0603695138116 +13 +654.318359375 +23 +1.2582630250224103e-12 +33 +538.0603695138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +654.318359375 +20 +1.2582630250224103e-12 +30 +538.0603695138116 +11 +541.595703125 +21 +1.260658569722517e-12 +31 +572.5838070138116 +12 +599.943359375 +22 +1.265524469072632e-12 +32 +642.7088070138116 +13 +599.943359375 +23 +1.265524469072632e-12 +33 +642.7088070138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +599.943359375 +20 +1.265524469072632e-12 +30 +642.7088070138116 +11 +654.845703125 +21 +1.2696146217683335e-12 +31 +701.6541195138116 +12 +654.318359375 +22 +1.2582630250224103e-12 +32 +538.0603695138116 +13 +654.318359375 +23 +1.2582630250224103e-12 +33 +538.0603695138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +654.845703125 +20 +1.2696146217683335e-12 +30 +701.6541195138116 +11 +599.943359375 +21 +1.265524469072632e-12 +31 +642.7088070138116 +12 +675.400390625 +22 +1.3668659303370245e-12 +32 +2103.1931820138125 +13 +675.400390625 +23 +1.3668659303370245e-12 +33 +2103.1931820138125 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +654.845703125 +20 +1.2696146217683335e-12 +30 +701.6541195138116 +11 +675.400390625 +21 +1.3668659303370245e-12 +31 +2103.1931820138125 +12 +691.103515625 +22 +1.3616194760243672e-12 +32 +2027.5838070138125 +13 +691.103515625 +23 +1.3616194760243672e-12 +33 +2027.5838070138125 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +654.845703125 +20 +1.2696146217683335e-12 +30 +701.6541195138116 +11 +688.021484375 +21 +1.2600877372787034e-12 +31 +564.3572445138116 +12 +654.318359375 +22 +1.2582630250224103e-12 +32 +538.0603695138116 +13 +654.318359375 +23 +1.2582630250224103e-12 +33 +538.0603695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +688.021484375 +20 +1.2600877372787034e-12 +30 +564.3572445138116 +11 +654.845703125 +21 +1.2696146217683335e-12 +31 +701.6541195138116 +12 +703.279296875 +22 +1.2696146217683335e-12 +32 +701.6541195138116 +13 +703.279296875 +23 +1.2696146217683335e-12 +33 +701.6541195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1067.626953125 +20 +1.2608472209005295e-12 +30 +575.3025570138116 +11 +951.306640625 +21 +1.2549518715876395e-12 +31 +490.34161951381157 +12 +967.408203125 +22 +1.2618034872166617e-12 +32 +589.0838070138116 +13 +967.408203125 +23 +1.2618034872166617e-12 +33 +589.0838070138116 +70 +0 + 0 +3DFACE + 8 +ship5 +10 +27.705078125 +20 +1.2024141448144232e-12 +30 +-266.80681798618843 +11 +14.638671875 +21 +1.1937117960769683e-12 +31 +-392.22088048618843 +12 +13.806640625 +22 +1.1983304973317566e-12 +32 +-325.65838048618843 +13 +13.806640625 +23 +1.1983304973317566e-12 +33 +-325.65838048618843 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +14.638671875 +20 +1.1937117960769683e-12 +30 +-392.22088048618843 +11 +27.705078125 +21 +1.2024141448144232e-12 +31 +-266.80681798618843 +12 +66.142578125 +22 +1.2025523805914151e-12 +32 +-264.81463048618843 +13 +66.142578125 +23 +1.2025523805914151e-12 +33 +-264.81463048618843 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +14.638671875 +20 +1.1937117960769683e-12 +30 +-392.22088048618843 +11 +66.142578125 +21 +1.2025523805914151e-12 +31 +-264.81463048618843 +12 +1417.806640625 +22 +1.2593217484438424e-12 +32 +553.3181820138116 +13 +1417.806640625 +23 +1.2593217484438424e-12 +33 +553.3181820138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +1417.806640625 +20 +1.2593217484438424e-12 +30 +553.3181820138116 +11 +66.142578125 +21 +1.2025523805914151e-12 +31 +-264.81463048618843 +12 +70.548828125 +22 +1.2032614488122206e-12 +32 +-254.59588048618843 +13 +70.548828125 +23 +1.2032614488122206e-12 +33 +-254.59588048618843 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +1417.806640625 +20 +1.2593217484438424e-12 +30 +553.3181820138116 +11 +70.548828125 +21 +1.2032614488122206e-12 +31 +-254.59588048618843 +12 +445.150390625 +22 +1.235223186756007e-12 +32 +206.02130701381157 +13 +445.150390625 +23 +1.235223186756007e-12 +33 +206.02130701381157 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +1417.806640625 +20 +1.2593217484438424e-12 +30 +553.3181820138116 +11 +445.150390625 +21 +1.235223186756007e-12 +31 +206.02130701381157 +12 +818.533203125 +22 +1.2490256225128338e-12 +32 +404.93536951381157 +13 +818.533203125 +23 +1.2490256225128338e-12 +33 +404.93536951381157 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +1417.806640625 +20 +1.2593217484438424e-12 +30 +553.3181820138116 +11 +818.533203125 +21 +1.2490256225128338e-12 +31 +404.93536951381157 +12 +951.306640625 +22 +1.2549518715876395e-12 +32 +490.34161951381157 +13 +951.306640625 +23 +1.2549518715876395e-12 +33 +490.34161951381157 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +1417.806640625 +20 +1.2593217484438424e-12 +30 +553.3181820138116 +11 +951.306640625 +21 +1.2549518715876395e-12 +31 +490.34161951381157 +12 +1067.626953125 +22 +1.2608472209005295e-12 +32 +575.3025570138116 +13 +1067.626953125 +23 +1.2608472209005295e-12 +33 +575.3025570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1463.744140625 +20 +1.262992314898792e-12 +30 +606.2166195138116 +11 +1548.4543265297798 +21 +8.875013776411845e-13 +31 +553.3181820138088 +12 +1417.806640625 +22 +1.2593217484438424e-12 +32 +553.3181820138116 +13 +1417.806640625 +23 +1.2593217484438424e-12 +33 +553.3181820138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1548.4543265297798 +20 +8.875013776411845e-13 +30 +553.3181820138088 +11 +1463.744140625 +21 +1.262992314898792e-12 +31 +606.2166195138116 +12 +1520.193359375 +22 +1.262992314898792e-12 +32 +606.2166195138116 +13 +1520.193359375 +23 +1.262992314898792e-12 +33 +606.2166195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.2640510383202241e-12 +30 +621.4744320138116 +11 +1773.400390625 +21 +1.1951219247337787e-12 +31 +-371.89878482744916 +12 +1655.814453125 +22 +1.2618083661264379e-12 +32 +589.1541195138116 +13 +1655.814453125 +23 +1.2618083661264379e-12 +33 +589.1541195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.1951219247337787e-12 +30 +-371.89878482744916 +11 +1773.400390625 +21 +1.2640510383202241e-12 +31 +621.4744320138116 +12 +1831.138671875 +22 +1.2640510383202241e-12 +32 +621.4744320138116 +13 +1831.138671875 +23 +1.2640510383202241e-12 +33 +621.4744320138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.1951219247337787e-12 +30 +-371.89878482744916 +11 +1831.138671875 +21 +1.2640510383202241e-12 +31 +621.4744320138116 +12 +2187.564453125 +22 +1.2640884432951749e-12 +32 +622.0134945138116 +13 +2187.564453125 +23 +1.2640884432951749e-12 +33 +622.0134945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1548.892578125 +20 +5.131864985047363e-13 +30 +553.3181820138088 +11 +1548.892578125 +21 +1.2592648278297869e-12 +31 +552.4978695138116 +12 +1548.4543265297798 +22 +8.875013776411845e-13 +32 +553.3181820138088 +13 +1548.4543265297798 +23 +8.875013776411845e-13 +33 +553.3181820138088 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1548.892578125 +20 +1.2592648278297869e-12 +30 +552.4978695138116 +11 +1548.892578125 +21 +5.131864985047363e-13 +31 +553.3181820138088 +12 +1549.0772780519674 +22 +8.865082253681158e-13 +32 +552.5570169376306 +13 +1549.0772780519674 +23 +8.865082253681158e-13 +33 +552.5570169376306 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1636.572265625 +20 +1.2612131391337433e-12 +30 +580.5759945138116 +11 +1773.400390625 +21 +1.1951219247337787e-12 +31 +-371.89878482744916 +12 +1549.0772780519674 +22 +8.865082253681158e-13 +32 +552.5570169376306 +13 +1549.0772780519674 +23 +8.865082253681158e-13 +33 +552.5570169376306 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.1951219247337787e-12 +30 +-371.89878482744916 +11 +1636.572265625 +21 +1.2612131391337433e-12 +31 +580.5759945138116 +12 +1655.814453125 +22 +1.2618083661264379e-12 +32 +589.1541195138116 +13 +1655.814453125 +23 +1.2618083661264379e-12 +33 +589.1541195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.2640510383202241e-12 +30 +621.4744320138116 +11 +1655.814453125 +21 +1.2618083661264379e-12 +31 +589.1541195138116 +12 +1773.400390625 +22 +1.2719483669446086e-12 +32 +735.2869320138116 +13 +1773.400390625 +23 +1.2719483669446086e-12 +33 +735.2869320138116 +70 +0 + 0 +3DFACE + 8 +ship5 +10 +1912.068359375 +20 +1.3123099612197264e-12 +30 +1316.9588070138116 +11 +2187.564453125 +21 +1.2640884432951749e-12 +31 +622.0134945138116 +12 +1831.138671875 +22 +1.2640510383202241e-12 +32 +621.4744320138116 +13 +1831.138671875 +23 +1.2640510383202241e-12 +33 +621.4744320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +2187.564453125 +20 +1.2640884432951749e-12 +30 +622.0134945138116 +11 +1912.068359375 +21 +1.3123099612197264e-12 +31 +1316.9588070138116 +12 +1928.509765625 +22 +1.3166066544292865e-12 +32 +1378.8806820138125 +13 +1928.509765625 +23 +1.3166066544292865e-12 +33 +1378.8806820138125 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +2187.564453125 +20 +1.2640884432951749e-12 +30 +622.0134945138116 +11 +1928.509765625 +21 +1.3166066544292865e-12 +31 +1378.8806820138125 +12 +1998.517578125 +22 +1.3158764442661175e-12 +32 +1368.3572445138125 +13 +1998.517578125 +23 +1.3158764442661175e-12 +33 +1368.3572445138125 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +2187.564453125 +20 +1.2640884432951749e-12 +30 +622.0134945138116 +11 +1998.517578125 +21 +1.3158764442661175e-12 +31 +1368.3572445138125 +12 +2233.712890625 +22 +1.3152730857571293e-12 +32 +1359.6619320138125 +13 +2233.712890625 +23 +1.3152730857571293e-12 +33 +1359.6619320138125 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +1773.400390625 +20 +1.1951219247337787e-12 +30 +-371.89878482744916 +11 +2232.283203125 +21 +1.2640884432951749e-12 +31 +622.0134945138116 +12 +3129.611328125 +22 +1.2698845881092824e-12 +32 +705.5447445138116 +13 +3129.611328125 +23 +1.2698845881092824e-12 +33 +705.5447445138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +2232.283203125 +20 +1.2640884432951749e-12 +30 +622.0134945138116 +11 +1773.400390625 +21 +1.1951219247337787e-12 +31 +-371.89878482744916 +12 +2187.564453125 +22 +1.2640884432951749e-12 +32 +622.0134945138116 +13 +2187.564453125 +23 +1.2640884432951749e-12 +33 +622.0134945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3129.611328125 +20 +1.2698845881092824e-12 +30 +705.5447445138116 +11 +2232.283203125 +21 +1.2640884432951749e-12 +31 +622.0134945138116 +12 +2365.970703125 +22 +1.2655082060400447e-12 +32 +642.4744320138116 +13 +2365.970703125 +23 +1.2655082060400447e-12 +33 +642.4744320138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3129.611328125 +20 +1.2698845881092824e-12 +30 +705.5447445138116 +11 +2365.970703125 +21 +1.2655082060400447e-12 +31 +642.4744320138116 +12 +2712.095703125 +22 +1.2696552793498017e-12 +32 +702.2400570138116 +13 +2712.095703125 +23 +1.2696552793498017e-12 +33 +702.2400570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +2299.666015625 +20 +1.271042516029497e-12 +30 +722.2322445138116 +11 +2232.283203125 +21 +1.2640884432951749e-12 +31 +622.0134945138116 +12 +2232.283203125 +22 +1.271042516029497e-12 +32 +722.2322445138116 +13 +2232.283203125 +23 +1.271042516029497e-12 +33 +722.2322445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +2232.283203125 +20 +1.2640884432951749e-12 +30 +622.0134945138116 +11 +2299.666015625 +21 +1.271042516029497e-12 +31 +722.2322445138116 +12 +2365.970703125 +22 +1.2655082060400447e-12 +32 +642.4744320138116 +13 +2365.970703125 +23 +1.2655082060400447e-12 +33 +642.4744320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +2473.197265625 +20 +1.2733957768448767e-12 +30 +756.1463070138116 +11 +2457.634765625 +21 +1.2675280746873852e-12 +31 +671.5838070138116 +12 +2403.353515625 +22 +1.2733957768448767e-12 +32 +756.1463070138116 +13 +2403.353515625 +23 +1.2733957768448767e-12 +33 +756.1463070138116 +70 +2 + 0 +3DFACE + 8 +ship5 +10 +2365.970703125 +20 +1.2655082060400447e-12 +30 +642.4744320138116 +11 +2457.634765625 +21 +1.2675280746873852e-12 +31 +671.5838070138116 +12 +2712.095703125 +22 +1.2696552793498017e-12 +32 +702.2400570138116 +13 +2712.095703125 +23 +1.2696552793498017e-12 +33 +702.2400570138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +2457.634765625 +20 +1.2675280746873852e-12 +30 +671.5838070138116 +11 +2365.970703125 +21 +1.2655082060400447e-12 +31 +642.4744320138116 +12 +2403.353515625 +22 +1.2733957768448767e-12 +32 +756.1463070138116 +13 +2403.353515625 +23 +1.2733957768448767e-12 +33 +756.1463070138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +2712.095703125 +20 +1.2696552793498017e-12 +30 +702.2400570138116 +11 +2457.634765625 +21 +1.2675280746873852e-12 +31 +671.5838070138116 +12 +2556.330078125 +22 +1.2693088767556926e-12 +32 +697.2478695138116 +13 +2556.330078125 +23 +1.2693088767556926e-12 +33 +697.2478695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +2712.095703125 +20 +1.2696552793498017e-12 +30 +702.2400570138116 +11 +2556.330078125 +21 +1.2693088767556926e-12 +31 +697.2478695138116 +12 +2650.900390625 +22 +1.2726623140751903e-12 +32 +745.5759945138116 +13 +2650.900390625 +23 +1.2726623140751903e-12 +33 +745.5759945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +2846.662109375 +20 +1.3302383283439467e-12 +30 +1575.3338070138125 +11 +3129.611328125 +21 +1.2698845881092824e-12 +31 +705.5447445138116 +12 +2712.095703125 +22 +1.2696552793498017e-12 +32 +702.2400570138116 +13 +2712.095703125 +23 +1.2696552793498017e-12 +33 +702.2400570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3129.611328125 +20 +1.2698845881092824e-12 +30 +705.5447445138116 +11 +2846.662109375 +21 +1.3302383283439467e-12 +31 +1575.3338070138125 +12 +3223.689453125 +22 +1.3283583217768569e-12 +32 +1548.2400570138125 +13 +3223.689453125 +23 +1.3283583217768569e-12 +33 +1548.2400570138125 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3129.611328125 +20 +1.2698845881092824e-12 +30 +705.5447445138116 +11 +3223.689453125 +21 +1.3283583217768569e-12 +31 +1548.2400570138125 +12 +3165.986328125 +22 +1.2914835216884524e-12 +32 +1016.8181820138116 +13 +3165.986328125 +23 +1.2914835216884524e-12 +33 +1016.8181820138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3165.986328125 +20 +1.2914835216884524e-12 +30 +1016.8181820138116 +11 +3175.501953125 +21 +1.2850726342425456e-12 +31 +924.4275570138116 +12 +3129.611328125 +22 +1.2698845881092824e-12 +32 +705.5447445138116 +13 +3129.611328125 +23 +1.2698845881092824e-12 +33 +705.5447445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3175.501953125 +20 +1.2850726342425456e-12 +30 +924.4275570138116 +11 +3165.986328125 +21 +1.2914835216884524e-12 +31 +1016.8181820138116 +12 +3176.041015625 +22 +1.2873689744438699e-12 +32 +957.5213070138116 +13 +3176.041015625 +23 +1.2873689744438699e-12 +33 +957.5213070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3129.611328125 +20 +1.2698845881092824e-12 +30 +705.5447445138116 +11 +3212.896745144124 +21 +8.685692946118428e-13 +31 +-355.26572856685834 +12 +1773.400390625 +22 +1.1951219247337787e-12 +32 +-371.89878482744916 +13 +1773.400390625 +23 +1.1951219247337787e-12 +33 +-371.89878482744916 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3212.896745144124 +20 +8.685692946118428e-13 +30 +-355.26572856685834 +11 +3129.611328125 +21 +1.2698845881092824e-12 +31 +705.5447445138116 +12 +3588.470703125 +22 +1.2728932491379297e-12 +32 +748.9041195138116 +13 +3588.470703125 +23 +1.2728932491379297e-12 +33 +748.9041195138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3212.896745144124 +20 +8.685692946118428e-13 +30 +-355.26572856685834 +11 +3588.470703125 +21 +1.2728932491379297e-12 +31 +748.9041195138116 +12 +3878.744140625 +22 +1.277768906307597e-12 +32 +819.1697445138116 +13 +3878.744140625 +23 +1.277768906307597e-12 +33 +819.1697445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3364.607421875 +20 +1.2877592872259647e-12 +30 +963.1463070138116 +11 +3313.384765625 +21 +1.2752562677728618e-12 +31 +782.9588070138116 +12 +3313.384765625 +22 +1.2842041883023847e-12 +32 +911.9119320138116 +13 +3313.384765625 +23 +1.2842041883023847e-12 +33 +911.9119320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3129.611328125 +20 +1.2698845881092824e-12 +30 +705.5447445138116 +11 +3441.072265625 +21 +1.2740593085744378e-12 +31 +765.7088070138116 +12 +3588.470703125 +22 +1.2728932491379297e-12 +32 +748.9041195138116 +13 +3588.470703125 +23 +1.2728932491379297e-12 +33 +748.9041195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3441.072265625 +20 +1.2740593085744378e-12 +30 +765.7088070138116 +11 +3129.611328125 +21 +1.2698845881092824e-12 +31 +705.5447445138116 +12 +3313.384765625 +22 +1.2752562677728618e-12 +32 +782.9588070138116 +13 +3313.384765625 +23 +1.2752562677728618e-12 +33 +782.9588070138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3441.072265625 +20 +1.2740593085744378e-12 +30 +765.7088070138116 +11 +3313.384765625 +21 +1.2752562677728618e-12 +31 +782.9588070138116 +12 +3390.810546875 +22 +1.276397932660489e-12 +32 +799.4119320138116 +13 +3390.810546875 +23 +1.276397932660489e-12 +33 +799.4119320138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +3390.810546875 +20 +1.276397932660489e-12 +30 +799.4119320138116 +11 +3313.384765625 +21 +1.2752562677728618e-12 +31 +782.9588070138116 +12 +3364.607421875 +22 +1.2877592872259647e-12 +32 +963.1463070138116 +13 +3364.607421875 +23 +1.2877592872259647e-12 +33 +963.1463070138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +3390.810546875 +20 +1.276397932660489e-12 +30 +799.4119320138116 +11 +3364.607421875 +21 +1.2877592872259647e-12 +31 +963.1463070138116 +12 +3384.658203125 +22 +1.2834690992294395e-12 +32 +901.3181820138116 +13 +3384.658203125 +23 +1.2834690992294395e-12 +33 +901.3181820138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3588.470703125 +20 +1.2728932491379297e-12 +30 +748.9041195138116 +11 +3807.400390625 +21 +1.277295652059307e-12 +31 +812.3494320138116 +12 +3878.744140625 +22 +1.277768906307597e-12 +32 +819.1697445138116 +13 +3878.744140625 +23 +1.277768906307597e-12 +33 +819.1697445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3807.400390625 +20 +1.277295652059307e-12 +30 +812.3494320138116 +11 +3588.470703125 +21 +1.2728932491379297e-12 +31 +748.9041195138116 +12 +3721.103515625 +22 +1.276728072222011e-12 +32 +804.1697445138116 +13 +3721.103515625 +23 +1.276728072222011e-12 +33 +804.1697445138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +3721.103515625 +20 +1.276728072222011e-12 +30 +804.1697445138116 +11 +3588.470703125 +21 +1.2728932491379297e-12 +31 +748.9041195138116 +12 +3685.490234375 +22 +1.2767345774350458e-12 +32 +804.2634945138116 +13 +3685.490234375 +23 +1.2767345774350458e-12 +33 +804.2634945138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +3685.490234375 +20 +1.2767345774350458e-12 +30 +804.2634945138116 +11 +3588.470703125 +21 +1.2728932491379297e-12 +31 +748.9041195138116 +12 +3604.830078125 +22 +1.285321458641131e-12 +32 +928.0134945138116 +13 +3604.830078125 +23 +1.285321458641131e-12 +33 +928.0134945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3685.490234375 +20 +1.2767345774350458e-12 +30 +804.2634945138116 +11 +3604.830078125 +21 +1.285321458641131e-12 +31 +928.0134945138116 +12 +3653.111328125 +22 +1.2865281756591074e-12 +32 +945.4041195138116 +13 +3653.111328125 +23 +1.2865281756591074e-12 +33 +945.4041195138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3685.490234375 +20 +1.2767345774350458e-12 +30 +804.2634945138116 +11 +3653.111328125 +21 +1.2865281756591074e-12 +31 +945.4041195138116 +12 +3671.087890625 +22 +1.283974879542904e-12 +32 +908.6072445138116 +13 +3671.087890625 +23 +1.283974879542904e-12 +33 +908.6072445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3807.400390625 +20 +1.277295652059307e-12 +30 +812.3494320138116 +11 +3721.103515625 +21 +1.276728072222011e-12 +31 +804.1697445138116 +12 +3752.837890625 +22 +1.2784552062827803e-12 +32 +829.0603695138116 +13 +3752.837890625 +23 +1.2784552062827803e-12 +33 +829.0603695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3807.400390625 +20 +1.277295652059307e-12 +30 +812.3494320138116 +11 +3752.837890625 +21 +1.2784552062827803e-12 +31 +829.0603695138116 +12 +3774.986328125 +22 +1.2838057440039963e-12 +32 +906.1697445138116 +13 +3774.986328125 +23 +1.2838057440039963e-12 +33 +906.1697445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +3807.400390625 +20 +1.277295652059307e-12 +30 +812.3494320138116 +11 +3774.986328125 +21 +1.2838057440039963e-12 +31 +906.1697445138116 +12 +3807.400390625 +22 +1.2846432901822413e-12 +32 +918.2400570138116 +13 +3807.400390625 +23 +1.2846432901822413e-12 +33 +918.2400570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3959.251953125 +20 +1.3437903133989293e-12 +30 +1770.6384945138125 +11 +4246.876953125 +21 +1.27529692535433e-12 +31 +783.5447445138116 +12 +3878.744140625 +22 +1.277768906307597e-12 +32 +819.1697445138116 +13 +3878.744140625 +23 +1.277768906307597e-12 +33 +819.1697445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +4246.876953125 +20 +1.27529692535433e-12 +30 +783.5447445138116 +11 +3959.251953125 +21 +1.3437903133989293e-12 +31 +1770.6384945138125 +12 +4247.287109375 +22 +1.279809916897301e-12 +32 +848.5838070138116 +13 +4247.287109375 +23 +1.279809916897301e-12 +33 +848.5838070138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +4247.287109375 +20 +1.279809916897301e-12 +30 +848.5838070138116 +11 +3959.251953125 +21 +1.3437903133989293e-12 +31 +1770.6384945138125 +12 +4349.427734375 +22 +1.3427348425840147e-12 +32 +1755.4275570138125 +13 +4349.427734375 +23 +1.3427348425840147e-12 +33 +1755.4275570138125 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +4308.353515625 +20 +1.2832040117982668e-12 +30 +897.4978695138116 +11 +4365.330078125 +21 +1.2743536694642676e-12 +31 +769.9509945138116 +12 +4279.724609375 +22 +1.27529692535433e-12 +32 +783.5447445138116 +13 +4279.724609375 +23 +1.27529692535433e-12 +33 +783.5447445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +4365.330078125 +20 +1.2743536694642676e-12 +30 +769.9509945138116 +11 +4308.353515625 +21 +1.2832040117982668e-12 +31 +897.4978695138116 +12 +4346.990234375 +22 +1.2821648040159395e-12 +32 +882.5213070138116 +13 +4346.990234375 +23 +1.2821648040159395e-12 +33 +882.5213070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +4514.205078125 +20 +1.2807108889026364e-12 +30 +861.5681820138116 +11 +4720.548828125 +21 +1.2751017689632826e-12 +31 +780.7322445138116 +12 +4365.330078125 +22 +1.2743536694642676e-12 +32 +769.9509945138116 +13 +4365.330078125 +23 +1.2743536694642676e-12 +33 +769.9509945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +4720.548828125 +20 +1.2751017689632826e-12 +30 +780.7322445138116 +11 +4514.205078125 +21 +1.2807108889026364e-12 +31 +861.5681820138116 +12 +4643.931640625 +22 +1.2807108889026364e-12 +32 +861.5681820138116 +13 +4643.931640625 +23 +1.2807108889026364e-12 +33 +861.5681820138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5504.380859375 +20 +1.3609673284176171e-12 +30 +2018.1853695138125 +11 +4882.197265625 +21 +1.2833194793296365e-12 +31 +899.1619320138116 +12 +4862.486328125 +22 +1.2866908059849802e-12 +32 +947.7478695138116 +13 +4862.486328125 +23 +1.2866908059849802e-12 +33 +947.7478695138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +4882.197265625 +20 +1.2833194793296365e-12 +30 +899.1619320138116 +11 +5504.380859375 +21 +1.3609673284176171e-12 +31 +2018.1853695138125 +12 +5503.736328125 +22 +1.3529561585651217e-12 +32 +1902.7322445138125 +13 +5503.736328125 +23 +1.3529561585651217e-12 +33 +1902.7322445138125 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +5503.736328125 +20 +1.3529561585651217e-12 +30 +1902.7322445138125 +11 +5504.380859375 +21 +1.3609673284176171e-12 +31 +2018.1853695138125 +12 +5523.083984375 +22 +1.3579960723639206e-12 +32 +1975.3650570138125 +13 +5523.083984375 +23 +1.3579960723639206e-12 +33 +1975.3650570138125 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +4695.259765625 +20 +1.2966193873795162e-12 +30 +1090.8338070138116 +11 +4672.220703125 +21 +1.2947198651733216e-12 +31 +1063.4588070138116 +12 +4652.568359375 +22 +1.2952841924041003e-12 +32 +1071.5916195138116 +13 +4652.568359375 +23 +1.2952841924041003e-12 +33 +1071.5916195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +4672.220703125 +20 +1.2947198651733216e-12 +30 +1063.4588070138116 +11 +4695.259765625 +21 +1.2966193873795162e-12 +31 +1090.8338070138116 +12 +4718.708984375 +22 +1.289731993078802e-12 +32 +991.5759945138116 +13 +4718.708984375 +23 +1.289731993078802e-12 +33 +991.5759945138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +4718.708984375 +20 +1.289731993078802e-12 +30 +991.5759945138116 +11 +4695.259765625 +21 +1.2966193873795162e-12 +31 +1090.8338070138116 +12 +4833.576171875 +22 +1.2938628033559718e-12 +32 +1051.1072445138116 +13 +4833.576171875 +23 +1.2938628033559718e-12 +33 +1051.1072445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +4718.708984375 +20 +1.289731993078802e-12 +30 +991.5759945138116 +11 +4833.576171875 +21 +1.2938628033559718e-12 +31 +1051.1072445138116 +12 +4718.884765625 +22 +1.2885480443064479e-12 +32 +974.5134945138116 +13 +4718.884765625 +23 +1.2885480443064479e-12 +33 +974.5134945138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +4718.884765625 +20 +1.2885480443064479e-12 +30 +974.5134945138116 +11 +4833.576171875 +21 +1.2938628033559718e-12 +31 +1051.1072445138116 +12 +4752.564453125 +22 +1.27913337474167e-12 +32 +838.8338070138116 +13 +4752.564453125 +23 +1.27913337474167e-12 +33 +838.8338070138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +4748.837890625 +20 +1.2776810859316257e-12 +30 +817.9041195138116 +11 +5050.900390625 +21 +1.2774777980242846e-12 +31 +814.9744320138116 +12 +4720.548828125 +22 +1.2751017689632826e-12 +32 +780.7322445138116 +13 +4720.548828125 +23 +1.2751017689632826e-12 +33 +780.7322445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +1.2774777980242846e-12 +30 +814.9744320138116 +11 +4748.837890625 +21 +1.2776810859316257e-12 +31 +817.9041195138116 +12 +4752.564453125 +22 +1.27913337474167e-12 +32 +838.8338070138116 +13 +4752.564453125 +23 +1.27913337474167e-12 +33 +838.8338070138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +1.2774777980242846e-12 +30 +814.9744320138116 +11 +4752.564453125 +21 +1.27913337474167e-12 +31 +838.8338070138116 +12 +4882.197265625 +22 +1.2833194793296365e-12 +32 +899.1619320138116 +13 +4882.197265625 +23 +1.2833194793296365e-12 +33 +899.1619320138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +4882.197265625 +20 +1.2833194793296365e-12 +30 +899.1619320138116 +11 +4752.564453125 +21 +1.27913337474167e-12 +31 +838.8338070138116 +12 +4862.486328125 +22 +1.2866908059849802e-12 +32 +947.7478695138116 +13 +4862.486328125 +23 +1.2866908059849802e-12 +33 +947.7478695138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +4862.486328125 +20 +1.2866908059849802e-12 +30 +947.7478695138116 +11 +4752.564453125 +21 +1.27913337474167e-12 +31 +838.8338070138116 +12 +4833.576171875 +22 +1.2938628033559718e-12 +32 +1051.1072445138116 +13 +4833.576171875 +23 +1.2938628033559718e-12 +33 +1051.1072445138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +1.2774777980242846e-12 +30 +814.9744320138116 +11 +4882.197265625 +21 +1.2833194793296365e-12 +31 +899.1619320138116 +12 +4948.654296875 +22 +1.2833194793296365e-12 +32 +899.1619320138116 +13 +4948.654296875 +23 +1.2833194793296365e-12 +33 +899.1619320138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +1.2774777980242846e-12 +30 +814.9744320138116 +11 +4948.654296875 +21 +1.2833194793296365e-12 +31 +899.1619320138116 +12 +4949.498046875 +22 +1.2855588989169053e-12 +32 +931.4353695138116 +13 +4949.498046875 +23 +1.2855588989169053e-12 +33 +931.4353695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +1.2774777980242846e-12 +30 +814.9744320138116 +11 +4949.498046875 +21 +1.2855588989169053e-12 +31 +931.4353695138116 +12 +4970.919921875 +22 +1.2870258244562782e-12 +32 +952.5759945138116 +13 +4970.919921875 +23 +1.2870258244562782e-12 +33 +952.5759945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +1.2774777980242846e-12 +30 +814.9744320138116 +11 +4970.919921875 +21 +1.2870258244562782e-12 +31 +952.5759945138116 +12 +5050.900390625 +22 +1.2878259656595725e-12 +32 +964.1072445138116 +13 +5050.900390625 +23 +1.2878259656595725e-12 +33 +964.1072445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5414.626953125 +20 +1.3197259040795273e-12 +30 +1423.8338070138125 +11 +5298.716796875 +21 +1.2752904201412951e-12 +31 +783.4509945138116 +12 +5243.755859375 +22 +1.2791284958318938e-12 +32 +838.7634945138116 +13 +5243.755859375 +23 +1.2791284958318938e-12 +33 +838.7634945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5298.716796875 +20 +1.2752904201412951e-12 +30 +783.4509945138116 +11 +5414.626953125 +21 +1.3197259040795273e-12 +31 +1423.8338070138125 +12 +5477.708984375 +22 +1.3197259040795273e-12 +32 +1423.8338070138125 +13 +5477.708984375 +23 +1.3197259040795273e-12 +33 +1423.8338070138125 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5436.130859375 +20 +1.2808556298926632e-12 +30 +863.6541195138116 +11 +5389.068359375 +21 +1.2752904201412951e-12 +31 +783.4509945138116 +12 +5373.341796875 +22 +1.2789642392027623e-12 +32 +836.3963070138116 +13 +5373.341796875 +23 +1.2789642392027623e-12 +33 +836.3963070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5389.068359375 +20 +1.2752904201412951e-12 +30 +783.4509945138116 +11 +5436.130859375 +21 +1.2808556298926632e-12 +31 +863.6541195138116 +12 +5495.181640625 +22 +1.2728038024586996e-12 +32 +747.6150570138116 +13 +5495.181640625 +23 +1.2728038024586996e-12 +33 +747.6150570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5693.673828125 +20 +1.434352636664471e-12 +30 +3075.7791195138125 +11 +5661.927734375 +21 +1.3745241923823759e-12 +31 +2213.5603695138125 +12 +5640.224609375 +22 +1.4329832893206218e-12 +32 +3056.0447445138125 +13 +5640.224609375 +23 +1.4329832893206218e-12 +33 +3056.0447445138125 +70 +2 + 0 +3DFACE + 8 +ship5 +10 +5640.224609375 +20 +1.4329832893206218e-12 +30 +3056.0447445138125 +11 +5567.369140625 +21 +1.27763717574364e-12 +31 +817.2713070138116 +12 +5495.181640625 +22 +1.2728038024586996e-12 +32 +747.6150570138116 +13 +5495.181640625 +23 +1.2728038024586996e-12 +33 +747.6150570138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +5567.369140625 +20 +1.27763717574364e-12 +30 +817.2713070138116 +11 +5640.224609375 +21 +1.4329832893206218e-12 +31 +3056.0447445138125 +12 +5661.927734375 +22 +1.3689362143853856e-12 +32 +2133.0291195138125 +13 +5661.927734375 +23 +1.3689362143853856e-12 +33 +2133.0291195138125 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +5661.927734375 +20 +1.3689362143853856e-12 +30 +2133.0291195138125 +11 +5640.224609375 +21 +1.4329832893206218e-12 +31 +3056.0447445138125 +12 +5661.927734375 +22 +1.3745241923823759e-12 +32 +2213.5603695138125 +13 +5661.927734375 +23 +1.3745241923823759e-12 +33 +2213.5603695138125 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +5567.369140625 +20 +1.27763717574364e-12 +30 +817.2713070138116 +11 +5615.474609375 +21 +1.2741910391383948e-12 +31 +767.6072445138116 +12 +5495.181640625 +22 +1.2728038024586996e-12 +32 +747.6150570138116 +13 +5495.181640625 +23 +1.2728038024586996e-12 +33 +747.6150570138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5615.474609375 +20 +1.2741910391383948e-12 +30 +767.6072445138116 +11 +5567.369140625 +21 +1.27763717574364e-12 +31 +817.2713070138116 +12 +5615.474609375 +22 +1.277451777172145e-12 +32 +814.5994320138116 +13 +5615.474609375 +23 +1.277451777172145e-12 +33 +814.5994320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5717.720703125 +20 +1.2808409931633347e-12 +30 +863.4431820138116 +11 +5662.056640625 +21 +1.2768272767207933e-12 +31 +805.5994320138116 +12 +5661.927734375 +22 +1.2795708503182679e-12 +32 +845.1384945138116 +13 +5661.927734375 +23 +1.2795708503182679e-12 +33 +845.1384945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5662.056640625 +20 +1.2768272767207933e-12 +30 +805.5994320138116 +11 +5961.458984375 +21 +1.2691738935852181e-12 +31 +695.3025570138116 +12 +5650.513671875 +22 +1.2747797609180544e-12 +32 +776.0916195138116 +13 +5650.513671875 +23 +1.2747797609180544e-12 +33 +776.0916195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5961.458984375 +20 +1.2691738935852181e-12 +30 +695.3025570138116 +11 +5662.056640625 +21 +1.2768272767207933e-12 +31 +805.5994320138116 +12 +5717.720703125 +22 +1.2754920817453774e-12 +32 +786.3572445138116 +13 +5717.720703125 +23 +1.2754920817453774e-12 +33 +786.3572445138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +5717.720703125 +20 +1.2754920817453774e-12 +30 +786.3572445138116 +11 +5662.056640625 +21 +1.2768272767207933e-12 +31 +805.5994320138116 +12 +5717.720703125 +22 +1.2808409931633347e-12 +32 +863.4431820138116 +13 +5717.720703125 +23 +1.2808409931633347e-12 +33 +863.4431820138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +5961.458984375 +20 +1.2691738935852181e-12 +30 +695.3025570138116 +11 +5717.720703125 +21 +1.2754920817453774e-12 +31 +786.3572445138116 +12 +5824.056640625 +22 +1.2764076904800414e-12 +32 +799.5525570138116 +13 +5824.056640625 +23 +1.2764076904800414e-12 +33 +799.5525570138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5961.458984375 +20 +1.2691738935852181e-12 +30 +695.3025570138116 +11 +5824.056640625 +21 +1.2764076904800414e-12 +31 +799.5525570138116 +12 +5870.345703125 +22 +1.2785918157565135e-12 +32 +831.0291195138116 +13 +5870.345703125 +23 +1.2785918157565135e-12 +33 +831.0291195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6485.814453125 +20 +1.2929927311125522e-12 +30 +1038.5681820138116 +11 +6496.501953125 +21 +1.2877527820129298e-12 +31 +963.0525570138116 +12 +6465.505859375 +22 +1.2900816482794286e-12 +32 +996.6150570138116 +13 +6465.505859375 +23 +1.2900816482794286e-12 +33 +996.6150570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6496.501953125 +20 +1.2877527820129298e-12 +30 +963.0525570138116 +11 +6485.814453125 +21 +1.2929927311125522e-12 +31 +1038.5681820138116 +12 +6519.119140625 +22 +1.2918787133803233e-12 +32 +1022.5134945138116 +13 +6519.119140625 +23 +1.2918787133803233e-12 +33 +1022.5134945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6312.130859375 +20 +1.2841472676883292e-12 +30 +911.0916195138116 +11 +6237.927734375 +21 +1.2770224331118407e-12 +31 +808.4119320138116 +12 +6212.240234375 +22 +1.2821127623116602e-12 +32 +881.7713070138116 +13 +6212.240234375 +23 +1.2821127623116602e-12 +33 +881.7713070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6237.927734375 +20 +1.2770224331118407e-12 +30 +808.4119320138116 +11 +6312.130859375 +21 +1.2841472676883292e-12 +31 +911.0916195138116 +12 +6309.541015625 +22 +1.2700342080090854e-12 +32 +707.7009945138116 +13 +6309.541015625 +23 +1.2700342080090854e-12 +33 +707.7009945138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +6309.541015625 +20 +1.2700342080090854e-12 +30 +707.7009945138116 +11 +6312.130859375 +21 +1.2841472676883292e-12 +31 +911.0916195138116 +12 +6331.888671875 +22 +1.270946564137232e-12 +32 +720.8494320138116 +13 +6331.888671875 +23 +1.270946564137232e-12 +33 +720.8494320138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +6331.888671875 +20 +1.270946564137232e-12 +30 +720.8494320138116 +11 +6312.130859375 +21 +1.2841472676883292e-12 +31 +911.0916195138116 +12 +6334.091796875 +22 +1.2763410120464336e-12 +32 +798.5916195138116 +13 +6334.091796875 +23 +1.2763410120464336e-12 +33 +798.5916195138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6331.888671875 +20 +1.270946564137232e-12 +30 +720.8494320138116 +11 +6334.091796875 +21 +1.2763410120464336e-12 +31 +798.5916195138116 +12 +6685.443359375 +22 +1.292293420711299e-12 +32 +1028.4900570138116 +13 +6685.443359375 +23 +1.292293420711299e-12 +33 +1028.4900570138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +6685.443359375 +20 +1.292293420711299e-12 +30 +1028.4900570138116 +11 +6334.091796875 +21 +1.2763410120464336e-12 +31 +798.5916195138116 +12 +6496.501953125 +22 +1.2877527820129298e-12 +32 +963.0525570138116 +13 +6496.501953125 +23 +1.2877527820129298e-12 +33 +963.0525570138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6685.443359375 +20 +1.292293420711299e-12 +30 +1028.4900570138116 +11 +6496.501953125 +21 +1.2877527820129298e-12 +31 +963.0525570138116 +12 +6554.263671875 +22 +1.2903646250464473e-12 +32 +1000.6931820138116 +13 +6554.263671875 +23 +1.2903646250464473e-12 +33 +1000.6931820138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +6554.263671875 +20 +1.2903646250464473e-12 +30 +1000.6931820138116 +11 +6496.501953125 +21 +1.2877527820129298e-12 +31 +963.0525570138116 +12 +6519.119140625 +22 +1.2918787133803233e-12 +32 +1022.5134945138116 +13 +6519.119140625 +23 +1.2918787133803233e-12 +33 +1022.5134945138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +6685.443359375 +20 +1.292293420711299e-12 +30 +1028.4900570138116 +11 +6554.263671875 +21 +1.2903646250464473e-12 +31 +1000.6931820138116 +12 +6638.123046875 +22 +1.2971902198233298e-12 +32 +1099.0603695138116 +13 +6638.123046875 +23 +1.2971902198233298e-12 +33 +1099.0603695138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6157.642578125 +20 +1.2733469877471149e-12 +30 +755.4431820138116 +11 +6332.181640625 +21 +1.2682273850886383e-12 +31 +681.6619320138116 +12 +6155.240234375 +22 +1.2696813002019414e-12 +32 +702.6150570138116 +13 +6155.240234375 +23 +1.2696813002019414e-12 +33 +702.6150570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6332.181640625 +20 +1.2682273850886383e-12 +30 +681.6619320138116 +11 +6157.642578125 +21 +1.2733469877471149e-12 +31 +755.4431820138116 +12 +6309.541015625 +22 +1.2700342080090854e-12 +32 +707.7009945138116 +13 +6309.541015625 +23 +1.2700342080090854e-12 +33 +707.7009945138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +6309.541015625 +20 +1.2700342080090854e-12 +30 +707.7009945138116 +11 +6157.642578125 +21 +1.2733469877471149e-12 +31 +755.4431820138116 +12 +6237.927734375 +22 +1.2770224331118407e-12 +32 +808.4119320138116 +13 +6237.927734375 +23 +1.2770224331118407e-12 +33 +808.4119320138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6362.978515625 +20 +1.268318458071127e-12 +30 +682.9744320138116 +11 +6618.541015625 +21 +1.2630508618161063e-12 +31 +607.0603695138116 +12 +6332.181640625 +22 +1.2682273850886383e-12 +32 +681.6619320138116 +13 +6332.181640625 +23 +1.2682273850886383e-12 +33 +681.6619320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6618.541015625 +20 +1.2630508618161063e-12 +30 +607.0603695138116 +11 +6362.978515625 +21 +1.268318458071127e-12 +31 +682.9744320138116 +12 +6383.392578125 +22 +1.268738044311879e-12 +32 +689.0213070138116 +13 +6383.392578125 +23 +1.268738044311879e-12 +33 +689.0213070138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6618.541015625 +20 +1.2630508618161063e-12 +30 +607.0603695138116 +11 +6383.392578125 +21 +1.268738044311879e-12 +31 +689.0213070138116 +12 +6524.134765625 +22 +1.2702374959164264e-12 +32 +710.6306820138116 +13 +6524.134765625 +23 +1.2702374959164264e-12 +33 +710.6306820138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6618.541015625 +20 +1.2630508618161063e-12 +30 +607.0603695138116 +11 +6524.134765625 +21 +1.2702374959164264e-12 +31 +710.6306820138116 +12 +6590.462890625 +22 +1.2703464582347612e-12 +32 +712.2009945138116 +13 +6590.462890625 +23 +1.2703464582347612e-12 +33 +712.2009945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7105.326171875 +20 +1.2686518502391664e-12 +30 +687.7791195138116 +11 +7765.408203125 +21 +1.2357305933727303e-12 +31 +213.33380701381157 +12 +6718.443359375 +22 +1.2641697584581113e-12 +32 +623.1853695138116 +13 +6718.443359375 +23 +1.2641697584581113e-12 +33 +623.1853695138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7765.408203125 +20 +1.2357305933727303e-12 +30 +213.33380701381157 +11 +7105.326171875 +21 +1.2686518502391664e-12 +31 +687.7791195138116 +12 +7615.666015625 +22 +1.2769329864326107e-12 +32 +807.1228695138116 +13 +7615.666015625 +23 +1.2769329864326107e-12 +33 +807.1228695138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6718.443359375 +20 +1.2641697584581113e-12 +30 +623.1853695138116 +11 +7988.298828125 +21 +1.2006691214178078e-12 +31 +-291.95525548618843 +12 +6618.541015625 +22 +1.2630508618161063e-12 +32 +607.0603695138116 +13 +6618.541015625 +23 +1.2630508618161063e-12 +33 +607.0603695138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7988.298828125 +20 +1.2006691214178078e-12 +30 +-291.95525548618843 +11 +6718.443359375 +21 +1.2641697584581113e-12 +31 +623.1853695138116 +12 +7821.048828125 +22 +1.2229933862503706e-12 +32 +29.771307013811565 +13 +7821.048828125 +23 +1.2229933862503706e-12 +33 +29.771307013811565 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +7821.048828125 +20 +1.2229933862503706e-12 +30 +29.771307013811565 +11 +6718.443359375 +21 +1.2641697584581113e-12 +31 +623.1853695138116 +12 +7765.408203125 +22 +1.2357305933727303e-12 +32 +213.33380701381157 +13 +7765.408203125 +23 +1.2357305933727303e-12 +33 +213.33380701381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7988.298828125 +20 +1.2006691214178078e-12 +30 +-291.95525548618843 +11 +7821.048828125 +21 +1.2229933862503706e-12 +31 +29.771307013811565 +12 +7992.787109375 +22 +1.2048048106047538e-12 +32 +-232.35369298618843 +13 +7992.787109375 +23 +1.2048048106047538e-12 +33 +-232.35369298618843 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6634.173828125 +20 +1.2863899398821155e-12 +30 +943.4119320138116 +11 +6768.646484375 +21 +1.2721451496389147e-12 +31 +738.1228695138116 +12 +6606.599609375 +22 +1.282478680544874e-12 +32 +887.0447445138116 +13 +6606.599609375 +23 +1.282478680544874e-12 +33 +887.0447445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6768.646484375 +20 +1.2721451496389147e-12 +30 +738.1228695138116 +11 +6634.173828125 +21 +1.2863899398821155e-12 +31 +943.4119320138116 +12 +6671.087890625 +22 +1.2852873062726977e-12 +32 +927.5213070138116 +13 +6671.087890625 +23 +1.2852873062726977e-12 +33 +927.5213070138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6768.646484375 +20 +1.2721451496389147e-12 +30 +738.1228695138116 +11 +6671.087890625 +21 +1.2852873062726977e-12 +31 +927.5213070138116 +12 +6871.326171875 +22 +1.2739275780104808e-12 +32 +763.8103695138116 +13 +6871.326171875 +23 +1.2739275780104808e-12 +33 +763.8103695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6768.646484375 +20 +1.2721451496389147e-12 +30 +738.1228695138116 +11 +6871.326171875 +21 +1.2739275780104808e-12 +31 +763.8103695138116 +12 +6780.435546875 +22 +1.2704505416433198e-12 +32 +713.7009945138116 +13 +6780.435546875 +23 +1.2704505416433198e-12 +33 +713.7009945138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +6936.927734375 +20 +1.2833845314599857e-12 +30 +900.0994320138116 +11 +6871.326171875 +21 +1.2739275780104808e-12 +31 +763.8103695138116 +12 +6833.580078125 +22 +1.2820948729758141e-12 +32 +881.5134945138116 +13 +6833.580078125 +23 +1.2820948729758141e-12 +33 +881.5134945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6780.435546875 +20 +1.2704505416433198e-12 +30 +713.7009945138116 +11 +6718.443359375 +21 +1.2641697584581113e-12 +31 +623.1853695138116 +12 +6718.443359375 +22 +1.2702212328838391e-12 +32 +710.3963070138116 +13 +6718.443359375 +23 +1.2702212328838391e-12 +33 +710.3963070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6718.443359375 +20 +1.2641697584581113e-12 +30 +623.1853695138116 +11 +6780.435546875 +21 +1.2704505416433198e-12 +31 +713.7009945138116 +12 +7105.326171875 +22 +1.2686518502391664e-12 +32 +687.7791195138116 +13 +7105.326171875 +23 +1.2686518502391664e-12 +33 +687.7791195138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7105.326171875 +20 +1.2686518502391664e-12 +30 +687.7791195138116 +11 +6780.435546875 +21 +1.2704505416433198e-12 +31 +713.7009945138116 +12 +6871.326171875 +22 +1.2739275780104808e-12 +32 +763.8103695138116 +13 +6871.326171875 +23 +1.2739275780104808e-12 +33 +763.8103695138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +7105.326171875 +20 +1.2686518502391664e-12 +30 +687.7791195138116 +11 +6871.326171875 +21 +1.2739275780104808e-12 +31 +763.8103695138116 +12 +6978.025390625 +22 +1.2721175024835163e-12 +32 +737.7244320138116 +13 +6978.025390625 +23 +1.2721175024835163e-12 +33 +737.7244320138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +6978.025390625 +20 +1.2721175024835163e-12 +30 +737.7244320138116 +11 +6871.326171875 +21 +1.2739275780104808e-12 +31 +763.8103695138116 +12 +6962.263671875 +22 +1.2739910038375712e-12 +32 +764.7244320138116 +13 +6962.263671875 +23 +1.2739910038375712e-12 +33 +764.7244320138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +6962.263671875 +20 +1.2739910038375712e-12 +30 +764.7244320138116 +11 +6871.326171875 +21 +1.2739275780104808e-12 +31 +763.8103695138116 +12 +6936.927734375 +22 +1.2833845314599857e-12 +32 +900.0994320138116 +13 +6936.927734375 +23 +1.2833845314599857e-12 +33 +900.0994320138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7226.310546875 +20 +1.2798359377494406e-12 +30 +848.9588070138116 +11 +7179.599609375 +21 +1.276781740229549e-12 +31 +804.9431820138116 +12 +7179.599609375 +22 +1.2798359377494406e-12 +32 +848.9588070138116 +13 +7179.599609375 +23 +1.2798359377494406e-12 +33 +848.9588070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7268.064453125 +20 +1.280701131083084e-12 +30 +861.4275570138116 +11 +7275.505859375 +21 +1.2779055157813302e-12 +31 +821.1384945138116 +12 +7259.861328125 +22 +1.280084762148026e-12 +32 +852.5447445138116 +13 +7259.861328125 +23 +1.280084762148026e-12 +33 +852.5447445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7275.505859375 +20 +1.2779055157813302e-12 +30 +821.1384945138116 +11 +7268.064453125 +21 +1.280701131083084e-12 +31 +861.4275570138116 +12 +7317.763671875 +22 +1.280725525631965e-12 +32 +861.7791195138116 +13 +7317.763671875 +23 +1.280725525631965e-12 +33 +861.7791195138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7615.666015625 +20 +1.2813256315344357e-12 +30 +870.4275570138116 +11 +7361.591796875 +21 +1.2768207715077584e-12 +31 +805.5056820138116 +12 +7355.685546875 +22 +1.284627027149654e-12 +32 +918.0056820138116 +13 +7355.685546875 +23 +1.284627027149654e-12 +33 +918.0056820138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7042.431640625 +20 +1.2758726367079198e-12 +30 +791.8416195138116 +11 +7100.298828125 +21 +1.2742463334491916e-12 +31 +768.4041195138116 +12 +7009.208984375 +22 +1.2742463334491916e-12 +32 +768.4041195138116 +13 +7009.208984375 +23 +1.2742463334491916e-12 +33 +768.4041195138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7100.298828125 +20 +1.2742463334491916e-12 +30 +768.4041195138116 +11 +7042.431640625 +21 +1.2758726367079198e-12 +31 +791.8416195138116 +12 +7179.599609375 +22 +1.276781740229549e-12 +32 +804.9431820138116 +13 +7179.599609375 +23 +1.276781740229549e-12 +33 +804.9431820138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7100.298828125 +20 +1.2742463334491916e-12 +30 +768.4041195138116 +11 +7179.599609375 +21 +1.276781740229549e-12 +31 +804.9431820138116 +12 +7105.326171875 +22 +1.2686518502391664e-12 +32 +687.7791195138116 +13 +7105.326171875 +23 +1.2686518502391664e-12 +33 +687.7791195138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7105.326171875 +20 +1.2686518502391664e-12 +30 +687.7791195138116 +11 +7179.599609375 +21 +1.276781740229549e-12 +31 +804.9431820138116 +12 +7226.310546875 +22 +1.276045024853345e-12 +32 +794.3259945138116 +13 +7226.310546875 +23 +1.276045024853345e-12 +33 +794.3259945138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +7105.326171875 +20 +1.2686518502391664e-12 +30 +687.7791195138116 +11 +7226.310546875 +21 +1.276045024853345e-12 +31 +794.3259945138116 +12 +7615.666015625 +22 +1.2769329864326107e-12 +32 +807.1228695138116 +13 +7615.666015625 +23 +1.2769329864326107e-12 +33 +807.1228695138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7226.310546875 +20 +1.276045024853345e-12 +30 +794.3259945138116 +11 +7179.599609375 +21 +1.276781740229549e-12 +31 +804.9431820138116 +12 +7226.310546875 +22 +1.2798359377494406e-12 +32 +848.9588070138116 +13 +7226.310546875 +23 +1.2798359377494406e-12 +33 +848.9588070138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7615.666015625 +20 +1.2769329864326107e-12 +30 +807.1228695138116 +11 +7226.310546875 +21 +1.276045024853345e-12 +31 +794.3259945138116 +12 +7361.591796875 +22 +1.2768207715077584e-12 +32 +805.5056820138116 +13 +7361.591796875 +23 +1.2768207715077584e-12 +33 +805.5056820138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +7361.591796875 +20 +1.2768207715077584e-12 +30 +805.5056820138116 +11 +7226.310546875 +21 +1.276045024853345e-12 +31 +794.3259945138116 +12 +7317.763671875 +22 +1.2768207715077584e-12 +32 +805.5056820138116 +13 +7317.763671875 +23 +1.2768207715077584e-12 +33 +805.5056820138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7317.763671875 +20 +1.2768207715077584e-12 +30 +805.5056820138116 +11 +7226.310546875 +21 +1.276045024853345e-12 +31 +794.3259945138116 +12 +7275.505859375 +22 +1.2779055157813302e-12 +32 +821.1384945138116 +13 +7275.505859375 +23 +1.2779055157813302e-12 +33 +821.1384945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7317.763671875 +20 +1.2768207715077584e-12 +30 +805.5056820138116 +11 +7275.505859375 +21 +1.2779055157813302e-12 +31 +821.1384945138116 +12 +7317.763671875 +22 +1.280725525631965e-12 +32 +861.7791195138116 +13 +7317.763671875 +23 +1.280725525631965e-12 +33 +861.7791195138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7615.666015625 +20 +1.2769329864326107e-12 +30 +807.1228695138116 +11 +7361.591796875 +21 +1.2768207715077584e-12 +31 +805.5056820138116 +12 +7615.666015625 +22 +1.2813256315344357e-12 +32 +870.4275570138116 +13 +7615.666015625 +23 +1.2813256315344357e-12 +33 +870.4275570138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7674.306640625 +20 +1.2769329864326107e-12 +30 +807.1228695138116 +11 +7765.408203125 +21 +1.2357305933727303e-12 +31 +213.33380701381157 +12 +7615.666015625 +22 +1.2769329864326107e-12 +32 +807.1228695138116 +13 +7615.666015625 +23 +1.2769329864326107e-12 +33 +807.1228695138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7765.408203125 +20 +1.2357305933727303e-12 +30 +213.33380701381157 +11 +7674.306640625 +21 +1.2769329864326107e-12 +31 +807.1228695138116 +12 +7676.052734375 +22 +1.2789528550799512e-12 +32 +836.2322445138116 +13 +7676.052734375 +23 +1.2789528550799512e-12 +33 +836.2322445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7765.408203125 +20 +1.2357305933727303e-12 +30 +213.33380701381157 +11 +7676.052734375 +21 +1.2789528550799512e-12 +31 +836.2322445138116 +12 +7761.986328125 +22 +1.2789528550799512e-12 +32 +836.2322445138116 +13 +7761.986328125 +23 +1.2789528550799512e-12 +33 +836.2322445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7765.408203125 +20 +1.2357305933727303e-12 +30 +213.33380701381157 +11 +7761.986328125 +21 +1.2789528550799512e-12 +31 +836.2322445138116 +12 +7820.263671875 +22 +1.2760011146653594e-12 +32 +793.6931820138116 +13 +7820.263671875 +23 +1.2760011146653594e-12 +33 +793.6931820138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7765.408203125 +20 +1.2357305933727303e-12 +30 +213.33380701381157 +11 +7820.263671875 +21 +1.2760011146653594e-12 +31 +793.6931820138116 +12 +7985.404296875 +22 +1.2705676354779483e-12 +32 +715.3884945138116 +13 +7985.404296875 +23 +1.2705676354779483e-12 +33 +715.3884945138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7985.404296875 +20 +1.2705676354779483e-12 +30 +715.3884945138116 +11 +7820.263671875 +21 +1.2760011146653594e-12 +31 +793.6931820138116 +12 +7842.025390625 +22 +1.2792455896665222e-12 +32 +840.4509945138116 +13 +7842.025390625 +23 +1.2792455896665222e-12 +33 +840.4509945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7985.404296875 +20 +1.2705676354779483e-12 +30 +715.3884945138116 +11 +7842.025390625 +21 +1.2792455896665222e-12 +31 +840.4509945138116 +12 +7902.083984375 +22 +1.2772826416332372e-12 +32 +812.1619320138116 +13 +7902.083984375 +23 +1.2772826416332372e-12 +33 +812.1619320138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7985.404296875 +20 +1.2705676354779483e-12 +30 +715.3884945138116 +11 +7902.083984375 +21 +1.2772826416332372e-12 +31 +812.1619320138116 +12 +7907.181640625 +22 +1.2805368744539525e-12 +32 +859.0603695138116 +13 +7907.181640625 +23 +1.2805368744539525e-12 +33 +859.0603695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7985.404296875 +20 +1.2705676354779483e-12 +30 +715.3884945138116 +11 +7907.181640625 +21 +1.2805368744539525e-12 +31 +859.0603695138116 +12 +7915.419921875 +22 +1.2803970123737018e-12 +32 +857.0447445138116 +13 +7915.419921875 +23 +1.2803970123737018e-12 +33 +857.0447445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7985.404296875 +20 +1.2705676354779483e-12 +30 +715.3884945138116 +11 +7915.419921875 +21 +1.2803970123737018e-12 +31 +857.0447445138116 +12 +7935.376953125 +22 +1.2781868662450901e-12 +32 +825.1931820138116 +13 +7935.376953125 +23 +1.2781868662450901e-12 +33 +825.1931820138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +7985.404296875 +20 +1.2705676354779483e-12 +30 +715.3884945138116 +11 +7935.376953125 +21 +1.2781868662450901e-12 +31 +825.1931820138116 +12 +7985.404296875 +22 +1.2758872734372484e-12 +32 +792.0525570138116 +13 +7985.404296875 +23 +1.2758872734372484e-12 +33 +792.0525570138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7985.404296875 +20 +1.2705676354779483e-12 +30 +715.3884945138116 +11 +7810.326171875 +21 +1.2375292847768837e-12 +31 +239.25568201381157 +12 +7765.408203125 +22 +1.2357305933727303e-12 +32 +213.33380701381157 +13 +7765.408203125 +23 +1.2357305933727303e-12 +33 +213.33380701381157 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +7810.326171875 +20 +1.2375292847768837e-12 +30 +239.25568201381157 +11 +7985.404296875 +21 +1.2705676354779483e-12 +31 +715.3884945138116 +12 +8244.787109375 +22 +1.2496452440544092e-12 +32 +413.86505701381157 +13 +8244.787109375 +23 +1.2496452440544092e-12 +33 +413.86505701381157 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +8244.787109375 +20 +1.2496452440544092e-12 +30 +413.86505701381157 +11 +7985.404296875 +21 +1.2705676354779483e-12 +31 +715.3884945138116 +12 +8074.853515625 +22 +1.2719776404032657e-12 +32 +735.7088070138116 +13 +8074.853515625 +23 +1.2719776404032657e-12 +33 +735.7088070138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +8244.787109375 +20 +1.2496452440544092e-12 +30 +413.86505701381157 +11 +8074.853515625 +21 +1.2719776404032657e-12 +31 +735.7088070138116 +12 +8082.541015625 +22 +1.2749586542765146e-12 +32 +778.6697445138116 +13 +8082.541015625 +23 +1.2749586542765146e-12 +33 +778.6697445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +8244.787109375 +20 +1.2496452440544092e-12 +30 +413.86505701381157 +11 +8082.541015625 +21 +1.2749586542765146e-12 +31 +778.6697445138116 +12 +8125.431640625 +22 +1.272083350115083e-12 +32 +737.2322445138116 +13 +8125.431640625 +23 +1.272083350115083e-12 +33 +737.2322445138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +8125.431640625 +20 +1.272083350115083e-12 +30 +737.2322445138116 +11 +8082.541015625 +21 +1.2749586542765146e-12 +31 +778.6697445138116 +12 +8120.849609375 +22 +1.2773655830994324e-12 +32 +813.3572445138116 +13 +8120.849609375 +23 +1.2773655830994324e-12 +33 +813.3572445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +8244.787109375 +20 +1.2496452440544092e-12 +30 +413.86505701381157 +11 +8125.431640625 +21 +1.272083350115083e-12 +31 +737.2322445138116 +12 +8189.017578125 +22 +1.272083350115083e-12 +32 +737.2322445138116 +13 +8189.017578125 +23 +1.272083350115083e-12 +33 +737.2322445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +8244.787109375 +20 +1.2496452440544092e-12 +30 +413.86505701381157 +11 +8189.017578125 +21 +1.272083350115083e-12 +31 +737.2322445138116 +12 +8250.822265625 +22 +1.272909512170517e-12 +32 +749.1384945138116 +13 +8250.822265625 +23 +1.272909512170517e-12 +33 +749.1384945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +8244.787109375 +20 +1.2496452440544092e-12 +30 +413.86505701381157 +11 +8250.822265625 +21 +1.272909512170517e-12 +31 +749.1384945138116 +12 +8260.619140625 +22 +1.2507429987540508e-12 +32 +429.68536951381157 +13 +8260.619140625 +23 +1.2507429987540508e-12 +33 +429.68536951381157 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +8260.619140625 +20 +1.2507429987540508e-12 +30 +429.68536951381157 +11 +8250.822265625 +21 +1.272909512170517e-12 +31 +749.1384945138116 +12 +8382.341796875 +22 +1.2759441940513039e-12 +32 +792.8728695138116 +13 +8382.341796875 +23 +1.2759441940513039e-12 +33 +792.8728695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +8260.619140625 +20 +1.2507429987540508e-12 +30 +429.68536951381157 +11 +8382.341796875 +21 +1.2759441940513039e-12 +31 +792.8728695138116 +12 +8334.541015625 +22 +1.2574010842952843e-12 +32 +525.6384945138116 +13 +8334.541015625 +23 +1.2574010842952843e-12 +33 +525.6384945138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +8334.541015625 +20 +1.2574010842952843e-12 +30 +525.6384945138116 +11 +8382.341796875 +21 +1.2759441940513039e-12 +31 +792.8728695138116 +12 +8442.822265625 +22 +1.2649357472929723e-12 +32 +634.2244320138116 +13 +8442.822265625 +23 +1.2649357472929723e-12 +33 +634.2244320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +8376.201171875 +20 +1.3020479876571511e-12 +30 +1169.0681820138116 +11 +8250.822265625 +21 +1.272909512170517e-12 +31 +749.1384945138116 +12 +8189.017578125 +22 +1.272083350115083e-12 +32 +737.2322445138116 +13 +8189.017578125 +23 +1.272083350115083e-12 +33 +737.2322445138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +8250.822265625 +20 +1.272909512170517e-12 +30 +749.1384945138116 +11 +8376.201171875 +21 +1.3020479876571511e-12 +31 +1169.0681820138116 +12 +8411.404296875 +22 +1.3032075418806244e-12 +32 +1185.7791195138116 +13 +8411.404296875 +23 +1.3032075418806244e-12 +33 +1185.7791195138116 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +8411.404296875 +20 +1.3032075418806244e-12 +30 +1185.7791195138116 +11 +8376.201171875 +21 +1.3020479876571511e-12 +31 +1169.0681820138116 +12 +8405.404296875 +22 +1.3039003470688426e-12 +32 +1195.7634945138116 +13 +8405.404296875 +23 +1.3039003470688426e-12 +33 +1195.7634945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +8411.404296875 +20 +1.3032075418806244e-12 +30 +1185.7791195138116 +11 +8405.404296875 +21 +1.3039003470688426e-12 +31 +1195.7634945138116 +12 +8410.115234375 +22 +1.3035620759910271e-12 +32 +1190.8884945138116 +13 +8410.115234375 +23 +1.3035620759910271e-12 +33 +1190.8884945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5147.732421875 +20 +1.2791106064960478e-12 +30 +838.5056820138116 +11 +5050.900390625 +21 +4.516144876606367e-13 +31 +-334.0280102867964 +12 +5050.900390625 +22 +1.2774777980242846e-12 +32 +814.9744320138116 +13 +5050.900390625 +23 +1.2774777980242846e-12 +33 +814.9744320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +4.516144876606367e-13 +30 +-334.0280102867964 +11 +5147.732421875 +21 +1.2791106064960478e-12 +31 +838.5056820138116 +12 +6448.18009835036 +22 +8.086549426529305e-13 +32 +-317.88275787443763 +13 +6448.18009835036 +23 +8.086549426529305e-13 +33 +-317.88275787443763 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +5147.732421875 +21 +1.2791106064960478e-12 +31 +838.5056820138116 +12 +5298.716796875 +22 +1.2752904201412951e-12 +32 +783.4509945138116 +13 +5298.716796875 +23 +1.2752904201412951e-12 +33 +783.4509945138116 +70 +15 + 0 +3DFACE + 8 +ship5 +10 +5298.716796875 +20 +1.2752904201412951e-12 +30 +783.4509945138116 +11 +5147.732421875 +21 +1.2791106064960478e-12 +31 +838.5056820138116 +12 +5243.755859375 +22 +1.2791284958318938e-12 +32 +838.7634945138116 +13 +5243.755859375 +23 +1.2791284958318938e-12 +33 +838.7634945138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +5298.716796875 +21 +1.2752904201412951e-12 +31 +783.4509945138116 +12 +5389.068359375 +22 +1.2752904201412951e-12 +32 +783.4509945138116 +13 +5389.068359375 +23 +1.2752904201412951e-12 +33 +783.4509945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +5389.068359375 +21 +1.2752904201412951e-12 +31 +783.4509945138116 +12 +5495.181640625 +22 +1.2728038024586996e-12 +32 +747.6150570138116 +13 +5495.181640625 +23 +1.2728038024586996e-12 +33 +747.6150570138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +5495.181640625 +21 +1.2728038024586996e-12 +31 +747.6150570138116 +12 +5615.474609375 +22 +1.2741910391383948e-12 +32 +767.6072445138116 +13 +5615.474609375 +23 +1.2741910391383948e-12 +33 +767.6072445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +5615.474609375 +21 +1.2741910391383948e-12 +31 +767.6072445138116 +12 +5650.513671875 +22 +1.2747797609180544e-12 +32 +776.0916195138116 +13 +5650.513671875 +23 +1.2747797609180544e-12 +33 +776.0916195138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +5650.513671875 +21 +1.2747797609180544e-12 +31 +776.0916195138116 +12 +5961.458984375 +22 +1.2691738935852181e-12 +32 +695.3025570138116 +13 +5961.458984375 +23 +1.2691738935852181e-12 +33 +695.3025570138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +5961.458984375 +21 +1.2691738935852181e-12 +31 +695.3025570138116 +12 +6010.466796875 +22 +1.2680354813041084e-12 +32 +678.8963070138116 +13 +6010.466796875 +23 +1.2680354813041084e-12 +33 +678.8963070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +3878.744140625 +20 +1.277768906307597e-12 +30 +819.1697445138116 +11 +5050.900390625 +21 +4.516144876606367e-13 +31 +-334.0280102867964 +12 +3212.896745144124 +22 +8.685692946118428e-13 +32 +-355.26572856685834 +13 +3212.896745144124 +23 +8.685692946118428e-13 +33 +-355.26572856685834 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +4.516144876606367e-13 +30 +-334.0280102867964 +11 +3878.744140625 +21 +1.277768906307597e-12 +31 +819.1697445138116 +12 +4246.876953125 +22 +1.27529692535433e-12 +32 +783.5447445138116 +13 +4246.876953125 +23 +1.27529692535433e-12 +33 +783.5447445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +4.516144876606367e-13 +30 +-334.0280102867964 +11 +4246.876953125 +21 +1.27529692535433e-12 +31 +783.5447445138116 +12 +4279.724609375 +22 +1.27529692535433e-12 +32 +783.5447445138116 +13 +4279.724609375 +23 +1.27529692535433e-12 +33 +783.5447445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +4.516144876606367e-13 +30 +-334.0280102867964 +11 +4279.724609375 +21 +1.27529692535433e-12 +31 +783.5447445138116 +12 +4365.330078125 +22 +1.2743536694642676e-12 +32 +769.9509945138116 +13 +4365.330078125 +23 +1.2743536694642676e-12 +33 +769.9509945138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +4.516144876606367e-13 +30 +-334.0280102867964 +11 +4365.330078125 +21 +1.2743536694642676e-12 +31 +769.9509945138116 +12 +4720.548828125 +22 +1.2751017689632826e-12 +32 +780.7322445138116 +13 +4720.548828125 +23 +1.2751017689632826e-12 +33 +780.7322445138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +5050.900390625 +20 +4.516144876606367e-13 +30 +-334.0280102867964 +11 +4720.548828125 +21 +1.2751017689632826e-12 +31 +780.7322445138116 +12 +5050.900390625 +22 +1.2774777980242846e-12 +32 +814.9744320138116 +13 +5050.900390625 +23 +1.2774777980242846e-12 +33 +814.9744320138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6155.240234375 +20 +1.2696813002019414e-12 +30 +702.6150570138116 +11 +6448.18009835036 +21 +8.086549426529305e-13 +31 +-317.88275787443763 +12 +6010.466796875 +22 +1.2680354813041084e-12 +32 +678.8963070138116 +13 +6010.466796875 +23 +1.2680354813041084e-12 +33 +678.8963070138116 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +6155.240234375 +21 +1.2696813002019414e-12 +31 +702.6150570138116 +12 +6332.181640625 +22 +1.2682273850886383e-12 +32 +681.6619320138116 +13 +6332.181640625 +23 +1.2682273850886383e-12 +33 +681.6619320138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +6332.181640625 +21 +1.2682273850886383e-12 +31 +681.6619320138116 +12 +6618.541015625 +22 +1.2630508618161063e-12 +32 +607.0603695138116 +13 +6618.541015625 +23 +1.2630508618161063e-12 +33 +607.0603695138116 +70 +13 + 0 +3DFACE + 8 +ship5 +10 +6448.18009835036 +20 +8.086549426529305e-13 +30 +-317.88275787443763 +11 +6618.541015625 +21 +1.2630508618161063e-12 +31 +607.0603695138116 +12 +7980.095703125 +22 +1.2000982889739942e-12 +32 +-300.18181798618843 +13 +7980.095703125 +23 +1.2000982889739942e-12 +33 +-300.18181798618843 +70 +3 + 0 +3DFACE + 8 +ship5 +10 +7980.095703125 +20 +1.2000982889739942e-12 +30 +-300.18181798618843 +11 +6618.541015625 +21 +1.2630508618161063e-12 +31 +607.0603695138116 +12 +7988.298828125 +22 +1.2006691214178078e-12 +32 +-291.95525548618843 +13 +7988.298828125 +23 +1.2006691214178078e-12 +33 +-291.95525548618843 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5915.615234375 +20 +1.39301038152434e-12 +30 +2479.9744320138125 +11 +5661.927734375 +21 +1.3689362143853856e-12 +31 +2133.0291195138125 +12 +5661.927734375 +22 +1.3745241923823759e-12 +32 +2213.5603695138125 +13 +5661.927734375 +23 +1.3745241923823759e-12 +33 +2213.5603695138125 +70 +1 + 0 +3DFACE + 8 +ship5 +10 +5661.927734375 +20 +1.3689362143853856e-12 +30 +2133.0291195138125 +11 +5915.615234375 +21 +1.39301038152434e-12 +31 +2479.9744320138125 +12 +5948.357421875 +22 +1.3888112665103036e-12 +32 +2419.4588070138125 +13 +5948.357421875 +23 +1.3888112665103036e-12 +33 +2419.4588070138125 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +2602.564453125 +20 +2.2007835007512032e-13 +30 +1624.3351834406803 +11 +2785.658203125 +21 +2.0824862017113098e-13 +31 +1453.8508084406803 +12 +2553.9609375 +22 +2.1834633710457473e-13 +32 +1599.3742459406803 +13 +2553.9609375 +23 +2.1834633710457473e-13 +33 +1599.3742459406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +2785.658203125 +20 +2.0824862017113098e-13 +30 +1453.8508084406803 +11 +2602.564453125 +21 +2.2007835007512032e-13 +31 +1624.3351834406803 +12 +2952.498046875 +22 +2.0599619015779235e-13 +32 +1421.3898709406803 +13 +2952.498046875 +23 +2.0599619015779235e-13 +33 +1421.3898709406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2101.505859375 +20 +1.8763278691186224e-13 +30 +1156.7453396906803 +11 +2543.0390625 +21 +9.111046877889606e-14 +31 +-234.2878634343192 +12 +2091.193359375 +22 +1.834149694103505e-13 +32 +1095.9601834406803 +13 +2091.193359375 +23 +1.834149694103505e-13 +33 +1095.9601834406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2101.505859375 +21 +1.8763278691186224e-13 +31 +1156.7453396906803 +12 +2200.107421875 +22 +1.8763278691186224e-13 +32 +1156.7453396906803 +13 +2200.107421875 +23 +1.8763278691186224e-13 +33 +1156.7453396906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2200.107421875 +21 +1.8763278691186224e-13 +31 +1156.7453396906803 +12 +2238.486328125 +22 +1.8280266623343932e-13 +32 +1087.1359646906803 +13 +2238.486328125 +23 +1.8280266623343932e-13 +33 +1087.1359646906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2238.486328125 +21 +1.8280266623343932e-13 +31 +1087.1359646906803 +12 +2333.748046875 +22 +1.8353450269986703e-13 +32 +1097.6828396906803 +13 +2333.748046875 +23 +1.8353450269986703e-13 +33 +1097.6828396906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2333.748046875 +21 +1.8353450269986703e-13 +31 +1097.6828396906803 +12 +2334.052734375 +22 +1.8953474857294493e-13 +32 +1184.1554959406803 +13 +2334.052734375 +23 +1.8953474857294493e-13 +33 +1184.1554959406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2334.052734375 +21 +1.8953474857294493e-13 +31 +1184.1554959406803 +12 +2352.427734375 +22 +2.048480200571302e-13 +32 +1404.8429959406803 +13 +2352.427734375 +23 +2.048480200571302e-13 +33 +1404.8429959406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2352.427734375 +21 +2.048480200571302e-13 +31 +1404.8429959406803 +12 +2439.4453125 +22 +2.092504229785076e-13 +32 +1468.2883084406803 +13 +2439.4453125 +23 +2.092504229785076e-13 +33 +1468.2883084406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2439.4453125 +21 +2.092504229785076e-13 +31 +1468.2883084406803 +12 +2542.693359375 +22 +2.115418842700557e-13 +32 +1501.3117459406803 +13 +2542.693359375 +23 +2.115418842700557e-13 +33 +1501.3117459406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2542.693359375 +21 +2.115418842700557e-13 +31 +1501.3117459406803 +12 +2785.658203125 +22 +2.0824862017113098e-13 +32 +1453.8508084406803 +13 +2785.658203125 +23 +2.0824862017113098e-13 +33 +1453.8508084406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2543.0390625 +20 +9.111046877889606e-14 +30 +-234.2878634343192 +11 +2785.658203125 +21 +2.0824862017113098e-13 +31 +1453.8508084406803 +12 +3059.44921875 +22 +9.531974818829947e-14 +32 +-173.6257540593192 +13 +3059.44921875 +23 +9.531974818829947e-14 +33 +-173.6257540593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +3059.44921875 +20 +9.531974818829947e-14 +30 +-173.6257540593192 +11 +2785.658203125 +21 +2.0824862017113098e-13 +31 +1453.8508084406803 +12 +2952.498046875 +22 +2.0599619015779235e-13 +32 +1421.3898709406803 +13 +2952.498046875 +23 +2.0599619015779235e-13 +33 +1421.3898709406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +1227.357421875 +20 +1.6886280785125006e-13 +30 +886.2414334406803 +11 +2026.62890625 +21 +8.690118936949265e-14 +31 +-294.9499728093192 +12 +1208.15625 +22 +1.6348462297463572e-13 +32 +808.7336209406803 +13 +1208.15625 +23 +1.6348462297463572e-13 +33 +808.7336209406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1227.357421875 +21 +1.6886280785125006e-13 +31 +886.2414334406803 +12 +1352.15625 +22 +1.6889939967457145e-13 +32 +886.7687771906803 +13 +1352.15625 +23 +1.6889939967457145e-13 +33 +886.7687771906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1352.15625 +21 +1.6889939967457145e-13 +31 +886.7687771906803 +12 +1440.43359375 +22 +1.637659734383957e-13 +32 +812.7883084406803 +13 +1440.43359375 +23 +1.637659734383957e-13 +33 +812.7883084406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1440.43359375 +21 +1.637659734383957e-13 +31 +812.7883084406803 +12 +1500.7734375 +22 +1.6950519763844773e-13 +32 +895.4992459406803 +13 +1500.7734375 +23 +1.6950519763844773e-13 +33 +895.4992459406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1500.7734375 +21 +1.6950519763844773e-13 +31 +895.4992459406803 +12 +1656.275390625 +22 +1.5927818959593508e-13 +32 +748.1125271906803 +13 +1656.275390625 +23 +1.5927818959593508e-13 +33 +748.1125271906803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +1656.275390625 +20 +1.5927818959593508e-13 +30 +748.1125271906803 +11 +1500.7734375 +21 +1.6950519763844773e-13 +31 +895.4992459406803 +12 +1629.55078125 +22 +1.6792768347748132e-13 +32 +872.7648709406803 +13 +1629.55078125 +23 +1.6792768347748132e-13 +33 +872.7648709406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1656.275390625 +21 +1.5927818959593508e-13 +31 +748.1125271906803 +12 +1728.931640625 +22 +1.6842045336487598e-13 +32 +879.8664334406803 +13 +1728.931640625 +23 +1.6842045336487598e-13 +33 +879.8664334406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1728.931640625 +21 +1.6842045336487598e-13 +31 +879.8664334406803 +12 +1797.140625 +22 +1.5931803402577393e-13 +32 +748.6867459406803 +13 +1797.140625 +23 +1.5931803402577393e-13 +33 +748.6867459406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1797.140625 +21 +1.5931803402577393e-13 +31 +748.6867459406803 +12 +1908.890625 +22 +1.6961090735026506e-13 +32 +897.0226834406803 +13 +1908.890625 +23 +1.6961090735026506e-13 +33 +897.0226834406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1908.890625 +21 +1.6961090735026506e-13 +31 +897.0226834406803 +12 +1909.03125 +22 +1.802233492650963e-13 +32 +1049.9640896906803 +13 +1909.03125 +23 +1.802233492650963e-13 +33 +1049.9640896906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +1909.03125 +21 +1.802233492650963e-13 +31 +1049.9640896906803 +12 +2091.193359375 +22 +1.834149694103505e-13 +32 +1095.9601834406803 +13 +2091.193359375 +23 +1.834149694103505e-13 +33 +1095.9601834406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +2091.193359375 +21 +1.834149694103505e-13 +31 +1095.9601834406803 +12 +2543.0390625 +22 +9.111046877889606e-14 +32 +-234.2878634343192 +13 +2543.0390625 +23 +9.111046877889606e-14 +33 +-234.2878634343192 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +312.5859375 +20 +1.7485654851129305e-13 +30 +972.6203396906803 +11 +314.244140625 +21 +1.6478810503650642e-13 +31 +827.5187771906803 +12 +271.4296875 +22 +1.69063656303703e-13 +32 +889.1359646906803 +13 +271.4296875 +23 +1.69063656303703e-13 +33 +889.1359646906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +314.244140625 +20 +1.6478810503650642e-13 +30 +827.5187771906803 +11 +312.5859375 +21 +1.7485654851129305e-13 +31 +972.6203396906803 +12 +488.26171875 +22 +1.6650954703587028e-13 +32 +852.3273709406803 +13 +488.26171875 +23 +1.6650954703587028e-13 +33 +852.3273709406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +314.244140625 +20 +1.6478810503650642e-13 +30 +827.5187771906803 +11 +488.26171875 +21 +1.6650954703587028e-13 +31 +852.3273709406803 +12 +337.6171875 +22 +1.0867576370060528e-13 +32 +18.854714690680794 +13 +337.6171875 +23 +1.0867576370060528e-13 +33 +18.854714690680794 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +337.6171875 +20 +1.0867576370060528e-13 +30 +18.854714690680794 +11 +488.26171875 +21 +1.6650954703587028e-13 +31 +852.3273709406803 +12 +440.033203125 +22 +8.526512829121202e-14 +32 +-318.5280978093192 +13 +440.033203125 +23 +8.526512829121202e-14 +33 +-318.5280978093192 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +440.033203125 +20 +8.526512829121202e-14 +30 +-318.5280978093192 +11 +488.26171875 +21 +1.6650954703587028e-13 +31 +852.3273709406803 +12 +521.47265625 +22 +1.6189897729737567e-13 +32 +785.8820584406803 +13 +521.47265625 +23 +1.6189897729737567e-13 +33 +785.8820584406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +261.24609375 +20 +1.0091911030810086e-13 +30 +-92.9304415593192 +11 +279.169921875 +21 +9.183458030484482e-14 +31 +-223.8523165593192 +12 +219.064453125 +22 +9.943429543288196e-14 +32 +-114.3288790593192 +13 +219.064453125 +23 +9.943429543288196e-14 +33 +-114.3288790593192 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +279.169921875 +20 +9.183458030484482e-14 +30 +-223.8523165593192 +11 +261.24609375 +21 +1.0091911030810086e-13 +31 +-92.9304415593192 +12 +337.6171875 +22 +1.0867576370060528e-13 +32 +18.854714690680794 +13 +337.6171875 +23 +1.0867576370060528e-13 +33 +18.854714690680794 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +279.169921875 +20 +9.183458030484482e-14 +30 +-223.8523165593192 +11 +337.6171875 +21 +1.0867576370060528e-13 +31 +18.854714690680794 +12 +440.033203125 +22 +8.526512829121202e-14 +32 +-318.5280978093192 +13 +440.033203125 +23 +8.526512829121202e-14 +33 +-318.5280978093192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +82.0078125 +20 +1.6865301473087412e-13 +30 +883.2179959406803 +11 +128.4375 +21 +1.5752015577324984e-13 +31 +722.7765896906803 +12 +57.45703125 +22 +1.600913412252992e-13 +32 +759.8312771906803 +13 +57.45703125 +23 +1.600913412252992e-13 +33 +759.8312771906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +128.4375 +20 +1.5752015577324984e-13 +30 +722.7765896906803 +11 +82.0078125 +21 +1.6865301473087412e-13 +31 +883.2179959406803 +12 +190.86328125 +22 +1.6865301473087412e-13 +32 +883.2179959406803 +13 +190.86328125 +23 +1.6865301473087412e-13 +33 +883.2179959406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +128.4375 +20 +1.5752015577324984e-13 +30 +722.7765896906803 +11 +190.86328125 +21 +1.6865301473087412e-13 +31 +883.2179959406803 +12 +153.064453125 +22 +1.4962933236190034e-13 +32 +609.0578396906803 +13 +153.064453125 +23 +1.4962933236190034e-13 +33 +609.0578396906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +153.064453125 +20 +1.4962933236190034e-13 +30 +609.0578396906803 +11 +190.86328125 +21 +1.6865301473087412e-13 +31 +883.2179959406803 +12 +280.359375 +22 +1.2769700661469097e-13 +32 +292.9797146906808 +13 +280.359375 +23 +1.2769700661469097e-13 +33 +292.9797146906808 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +280.359375 +20 +1.2769700661469097e-13 +30 +292.9797146906808 +11 +190.86328125 +21 +1.6865301473087412e-13 +31 +883.2179959406803 +12 +265.3125 +22 +1.6361147462881652e-13 +32 +810.5617459406803 +13 +265.3125 +23 +1.6361147462881652e-13 +33 +810.5617459406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +280.359375 +20 +1.2769700661469097e-13 +30 +292.9797146906808 +11 +265.3125 +21 +1.6361147462881652e-13 +31 +810.5617459406803 +12 +314.244140625 +22 +1.6478810503650642e-13 +32 +827.5187771906803 +13 +314.244140625 +23 +1.6478810503650642e-13 +33 +827.5187771906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +280.359375 +20 +1.2769700661469097e-13 +30 +292.9797146906808 +11 +314.244140625 +21 +1.6478810503650642e-13 +31 +827.5187771906803 +12 +337.6171875 +22 +1.0867576370060528e-13 +32 +18.854714690680794 +13 +337.6171875 +23 +1.0867576370060528e-13 +33 +18.854714690680794 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +905.958984375 +20 +1.692108367486179e-13 +30 +891.2570584406803 +11 +889.142578125 +21 +1.5998319205859378e-13 +31 +758.2726834406803 +12 +824.232421875 +22 +1.692108367486179e-13 +32 +891.2570584406803 +13 +824.232421875 +23 +1.692108367486179e-13 +33 +891.2570584406803 +70 +2 + 0 +3DFACE + 8 +ship4 +10 +521.47265625 +20 +1.6189897729737567e-13 +30 +785.8820584406803 +11 +2026.62890625 +21 +8.690118936949265e-14 +31 +-294.9499728093192 +12 +440.033203125 +22 +8.526512829121202e-14 +32 +-318.5280978093192 +13 +440.033203125 +23 +8.526512829121202e-14 +33 +-318.5280978093192 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +521.47265625 +21 +1.6189897729737567e-13 +31 +785.8820584406803 +12 +784.634765625 +22 +1.6009947274159285e-13 +32 +759.9484646906803 +13 +784.634765625 +23 +1.6009947274159285e-13 +33 +759.9484646906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +784.634765625 +21 +1.6009947274159285e-13 +31 +759.9484646906803 +12 +889.142578125 +22 +1.5998319205859378e-13 +32 +758.2726834406803 +13 +889.142578125 +23 +1.5998319205859378e-13 +33 +758.2726834406803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +889.142578125 +20 +1.5998319205859378e-13 +30 +758.2726834406803 +11 +784.634765625 +21 +1.6009947274159285e-13 +31 +759.9484646906803 +12 +824.232421875 +22 +1.692108367486179e-13 +32 +891.2570584406803 +13 +824.232421875 +23 +1.692108367486179e-13 +33 +891.2570584406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2026.62890625 +20 +8.690118936949265e-14 +30 +-294.9499728093192 +11 +889.142578125 +21 +1.5998319205859378e-13 +31 +758.2726834406803 +12 +1208.15625 +22 +1.6348462297463572e-13 +32 +808.7336209406803 +13 +1208.15625 +23 +1.6348462297463572e-13 +33 +808.7336209406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +2815.6171875 +20 +2.175014725616654e-13 +30 +1587.1984646906803 +11 +2925.33984375 +21 +2.0974156656264352e-13 +31 +1475.3664334406803 +12 +2772.814453125 +22 +2.1755676687246216e-13 +32 +1587.9953396906803 +13 +2772.814453125 +23 +2.1755676687246216e-13 +33 +1587.9953396906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +2925.33984375 +20 +2.0974156656264352e-13 +30 +1475.3664334406803 +11 +2815.6171875 +21 +2.175014725616654e-13 +31 +1587.1984646906803 +12 +2900.431640625 +22 +2.1474895429626783e-13 +32 +1547.5304959406803 +13 +2900.431640625 +23 +2.1474895429626783e-13 +33 +1547.5304959406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2925.33984375 +20 +2.0974156656264352e-13 +30 +1475.3664334406803 +11 +2900.431640625 +21 +2.1474895429626783e-13 +31 +1547.5304959406803 +12 +3075.05859375 +22 +2.160190971413346e-13 +32 +1565.8351834406803 +13 +3075.05859375 +23 +2.160190971413346e-13 +33 +1565.8351834406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +2925.33984375 +20 +2.0974156656264352e-13 +30 +1475.3664334406803 +11 +3075.05859375 +21 +2.160190971413346e-13 +31 +1565.8351834406803 +12 +2952.498046875 +22 +2.0599619015779235e-13 +32 +1421.3898709406803 +13 +2952.498046875 +23 +2.0599619015779235e-13 +33 +1421.3898709406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +2952.498046875 +20 +2.0599619015779235e-13 +30 +1421.3898709406803 +11 +3075.05859375 +21 +2.160190971413346e-13 +31 +1565.8351834406803 +12 +3059.44921875 +22 +9.531974818829947e-14 +32 +-173.6257540593192 +13 +3059.44921875 +23 +9.531974818829947e-14 +33 +-173.6257540593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +3059.44921875 +20 +9.531974818829947e-14 +30 +-173.6257540593192 +11 +3075.05859375 +21 +2.160190971413346e-13 +31 +1565.8351834406803 +12 +3546.0703125 +22 +9.489040412799521e-14 +32 +-179.8132540593192 +13 +3546.0703125 +23 +9.489040412799521e-14 +33 +-179.8132540593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +3546.0703125 +20 +9.489040412799521e-14 +30 +-179.8132540593192 +11 +3075.05859375 +21 +2.160190971413346e-13 +31 +1565.8351834406803 +12 +3153.251953125 +22 +2.1557511635170178e-13 +32 +1559.4367459406803 +13 +3153.251953125 +23 +2.1557511635170178e-13 +33 +1559.4367459406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +3546.0703125 +20 +9.489040412799521e-14 +30 +-179.8132540593192 +11 +3153.251953125 +21 +2.1557511635170178e-13 +31 +1559.4367459406803 +12 +3284.794921875 +22 +2.1899929786295412e-13 +32 +1608.7844021906803 +13 +3284.794921875 +23 +2.1899929786295412e-13 +33 +1608.7844021906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +3546.0703125 +20 +9.489040412799521e-14 +30 +-179.8132540593192 +11 +3284.794921875 +21 +2.1899929786295412e-13 +31 +1608.7844021906803 +12 +3394.8984375 +22 +2.159101348229998e-13 +32 +1564.2648709406803 +13 +3394.8984375 +23 +2.159101348229998e-13 +33 +1564.2648709406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +3488.203125 +20 +2.2792363699522533e-13 +30 +1737.3976834406803 +11 +3546.0703125 +21 +9.489040412799521e-14 +31 +-179.8132540593192 +12 +3394.8984375 +22 +2.159101348229998e-13 +32 +1564.2648709406803 +13 +3394.8984375 +23 +2.159101348229998e-13 +33 +1564.2648709406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +3546.0703125 +20 +9.489040412799521e-14 +30 +-179.8132540593192 +11 +3488.203125 +21 +2.2792363699522533e-13 +31 +1737.3976834406803 +12 +3500.40234375 +22 +2.3473459504277927e-13 +32 +1835.5539334406803 +13 +3500.40234375 +23 +2.3473459504277927e-13 +33 +1835.5539334406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +3546.0703125 +20 +9.489040412799521e-14 +30 +-179.8132540593192 +11 +3500.40234375 +21 +2.3473459504277927e-13 +31 +1835.5539334406803 +12 +3634.728515625 +22 +2.3473459504277927e-13 +32 +1835.5539334406803 +13 +3634.728515625 +23 +2.3473459504277927e-13 +33 +1835.5539334406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +3546.0703125 +20 +9.489040412799521e-14 +30 +-179.8132540593192 +11 +3634.728515625 +21 +2.3473459504277927e-13 +31 +1835.5539334406803 +12 +4091.525390625 +22 +8.951465870626896e-14 +32 +-257.2859103093192 +13 +4091.525390625 +23 +8.951465870626896e-14 +33 +-257.2859103093192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +4091.525390625 +20 +8.951465870626896e-14 +30 +-257.2859103093192 +11 +3634.728515625 +21 +2.3473459504277927e-13 +31 +1835.5539334406803 +12 +4181.208984375 +22 +2.375196393733514e-13 +32 +1875.6906521906803 +13 +4181.208984375 +23 +2.375196393733514e-13 +33 +1875.6906521906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +3569.578125 +20 +3.1551633051032923e-13 +30 +2999.7414334406803 +11 +3570.498046875 +21 +3.095965866485584e-13 +31 +2914.4289334406803 +12 +3460.8984375 +22 +3.159090827473121e-13 +32 +3005.4015896906803 +13 +3460.8984375 +23 +3.159090827473121e-13 +33 +3005.4015896906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +3570.498046875 +20 +3.095965866485584e-13 +30 +2914.4289334406803 +11 +3569.578125 +21 +3.1551633051032923e-13 +31 +2999.7414334406803 +12 +3658.078125 +22 +3.264768013225283e-13 +32 +3157.6984646906803 +13 +3658.078125 +23 +3.264768013225283e-13 +33 +3157.6984646906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +3570.498046875 +20 +3.095965866485584e-13 +30 +2914.4289334406803 +11 +3658.078125 +21 +3.264768013225283e-13 +31 +3157.6984646906803 +12 +3604.5 +22 +2.959543417627164e-13 +32 +2717.8234646906803 +13 +3604.5 +23 +2.959543417627164e-13 +33 +2717.8234646906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +3604.5 +20 +2.959543417627164e-13 +30 +2717.8234646906803 +11 +3658.078125 +21 +3.264768013225283e-13 +31 +3157.6984646906803 +12 +3650.794921875 +22 +2.709491160081401e-13 +32 +2357.4601834406803 +13 +3650.794921875 +23 +2.709491160081401e-13 +33 +2357.4601834406803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +3650.794921875 +20 +2.709491160081401e-13 +30 +2357.4601834406803 +11 +3658.078125 +21 +3.264768013225283e-13 +31 +3157.6984646906803 +12 +3864.796875 +22 +3.110171625450575e-13 +32 +2934.9015896906803 +13 +3864.796875 +23 +3.110171625450575e-13 +33 +2934.9015896906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +3864.796875 +20 +3.110171625450575e-13 +30 +2934.9015896906803 +11 +3658.078125 +21 +3.264768013225283e-13 +31 +3157.6984646906803 +12 +3799.669921875 +22 +3.176980163319132e-13 +32 +3031.1828396906803 +13 +3799.669921875 +23 +3.176980163319132e-13 +33 +3031.1828396906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +3506.888671875 +20 +2.840652517897835e-13 +30 +2546.4836209406803 +11 +3331.880859375 +21 +2.7523686454977714e-13 +31 +2419.2531521906803 +12 +3273.462890625 +22 +2.8441978590018624e-13 +32 +2551.5929959406803 +13 +3273.462890625 +23 +2.8441978590018624e-13 +33 +2551.5929959406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +3331.880859375 +20 +2.7523686454977714e-13 +30 +2419.2531521906803 +11 +3506.888671875 +21 +2.840652517897835e-13 +31 +2546.4836209406803 +12 +3413.56640625 +22 +2.7447006256328677e-13 +32 +2408.2023709406803 +13 +3413.56640625 +23 +2.7447006256328677e-13 +33 +2408.2023709406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +3413.56640625 +20 +2.7447006256328677e-13 +30 +2408.2023709406803 +11 +3506.888671875 +21 +2.840652517897835e-13 +31 +2546.4836209406803 +12 +3449.40234375 +22 +2.7553529119775377e-13 +32 +2423.5539334406803 +13 +3449.40234375 +23 +2.7553529119775377e-13 +33 +2423.5539334406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +3449.40234375 +20 +2.7553529119775377e-13 +30 +2423.5539334406803 +11 +3506.888671875 +21 +2.840652517897835e-13 +31 +2546.4836209406803 +12 +3585.978515625 +22 +2.755621252015228e-13 +32 +2423.9406521906803 +13 +3585.978515625 +23 +2.755621252015228e-13 +33 +2423.9406521906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +3585.978515625 +20 +2.755621252015228e-13 +30 +2423.9406521906803 +11 +3506.888671875 +21 +2.840652517897835e-13 +31 +2546.4836209406803 +12 +3534.439453125 +22 +2.9372711944988805e-13 +32 +2685.7258084406803 +13 +3534.439453125 +23 +2.9372711944988805e-13 +33 +2685.7258084406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +3585.978515625 +20 +2.755621252015228e-13 +30 +2423.9406521906803 +11 +3534.439453125 +21 +2.9372711944988805e-13 +31 +2685.7258084406803 +12 +3604.5 +22 +2.959543417627164e-13 +32 +2717.8234646906803 +13 +3604.5 +23 +2.959543417627164e-13 +33 +2717.8234646906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +3585.978515625 +20 +2.755621252015228e-13 +30 +2423.9406521906803 +11 +3604.5 +21 +2.959543417627164e-13 +31 +2717.8234646906803 +12 +3650.794921875 +22 +2.709491160081401e-13 +32 +2357.4601834406803 +13 +3650.794921875 +23 +2.709491160081401e-13 +33 +2357.4601834406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +4443.486328125 +20 +2.4059985774538273e-13 +30 +1920.0812771906803 +11 +4411.248046875 +21 +2.3040049685826847e-13 +31 +1773.0929959406803 +12 +4301.091796875 +22 +2.417407094813806e-13 +32 +1936.5226834406803 +13 +4301.091796875 +23 +2.417407094813806e-13 +33 +1936.5226834406803 +70 +2 + 0 +3DFACE + 8 +ship4 +10 +4528.529296875 +20 +2.2555655260214646e-13 +30 +1703.2844021906803 +11 +4449.603515625 +21 +2.138268403485689e-13 +31 +1534.2414334406803 +12 +4411.248046875 +22 +2.3040049685826847e-13 +32 +1773.0929959406803 +13 +4411.248046875 +23 +2.3040049685826847e-13 +33 +1773.0929959406803 +70 +2 + 0 +3DFACE + 8 +ship4 +10 +4181.208984375 +20 +2.375196393733514e-13 +30 +1875.6906521906803 +11 +4585.013671875 +21 +9.205738385129059e-14 +31 +-220.6413790593192 +12 +4091.525390625 +22 +8.951465870626896e-14 +32 +-257.2859103093192 +13 +4091.525390625 +23 +8.951465870626896e-14 +33 +-257.2859103093192 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4585.013671875 +20 +9.205738385129059e-14 +30 +-220.6413790593192 +11 +4181.208984375 +21 +2.375196393733514e-13 +31 +1875.6906521906803 +12 +4301.091796875 +22 +2.417407094813806e-13 +32 +1936.5226834406803 +13 +4301.091796875 +23 +2.417407094813806e-13 +33 +1936.5226834406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4585.013671875 +20 +9.205738385129059e-14 +30 +-220.6413790593192 +11 +4301.091796875 +21 +2.417407094813806e-13 +31 +1936.5226834406803 +12 +4411.248046875 +22 +2.3040049685826847e-13 +32 +1773.0929959406803 +13 +4411.248046875 +23 +2.3040049685826847e-13 +33 +1773.0929959406803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +4585.013671875 +20 +9.205738385129059e-14 +30 +-220.6413790593192 +11 +4411.248046875 +21 +2.3040049685826847e-13 +31 +1773.0929959406803 +12 +4449.603515625 +22 +2.138268403485689e-13 +32 +1534.2414334406803 +13 +4449.603515625 +23 +2.138268403485689e-13 +33 +1534.2414334406803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +4585.013671875 +20 +9.205738385129059e-14 +30 +-220.6413790593192 +11 +4449.603515625 +21 +2.138268403485689e-13 +31 +1534.2414334406803 +12 +4470.158203125 +22 +2.067410370502899e-13 +32 +1432.1242459406803 +13 +4470.158203125 +23 +2.067410370502899e-13 +33 +1432.1242459406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4585.013671875 +20 +9.205738385129059e-14 +30 +-220.6413790593192 +11 +4470.158203125 +21 +2.067410370502899e-13 +31 +1432.1242459406803 +12 +4678.974609375 +22 +1.8805156000098476e-13 +32 +1162.7804959406803 +13 +4678.974609375 +23 +1.8805156000098476e-13 +33 +1162.7804959406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4585.013671875 +20 +9.205738385129059e-14 +30 +-220.6413790593192 +11 +4678.974609375 +21 +1.8805156000098476e-13 +31 +1162.7804959406803 +12 +4836.087890625 +22 +9.634269293803954e-14 +32 +-158.8835665593192 +13 +4836.087890625 +23 +9.634269293803954e-14 +33 +-158.8835665593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +4836.087890625 +20 +9.634269293803954e-14 +30 +-158.8835665593192 +11 +4678.974609375 +21 +1.8805156000098476e-13 +31 +1162.7804959406803 +12 +4691.630859375 +22 +1.836849357512994e-13 +32 +1099.8508084406803 +13 +4691.630859375 +23 +1.836849357512994e-13 +33 +1099.8508084406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4836.087890625 +20 +9.634269293803954e-14 +30 +-158.8835665593192 +11 +4691.630859375 +21 +1.836849357512994e-13 +31 +1099.8508084406803 +12 +4733.080078125 +22 +1.8034532200950092e-13 +32 +1051.7219021906803 +13 +4733.080078125 +23 +1.8034532200950092e-13 +33 +1051.7219021906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4717.529296875 +20 +2.1298522841217703e-13 +30 +1522.1125271906803 +11 +4470.158203125 +21 +2.067410370502899e-13 +31 +1432.1242459406803 +12 +4449.603515625 +22 +2.138268403485689e-13 +32 +1534.2414334406803 +13 +4449.603515625 +23 +2.138268403485689e-13 +33 +1534.2414334406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4470.158203125 +20 +2.067410370502899e-13 +30 +1432.1242459406803 +11 +4717.529296875 +21 +2.1298522841217703e-13 +31 +1522.1125271906803 +12 +4781.408203125 +22 +2.0803557444423758e-13 +32 +1450.7804959406803 +13 +4781.408203125 +23 +2.0803557444423758e-13 +33 +1450.7804959406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4620.181640625 +20 +2.0431621889152606e-13 +30 +1397.1789334406803 +11 +4678.974609375 +21 +1.8805156000098476e-13 +31 +1162.7804959406803 +12 +4470.158203125 +22 +2.067410370502899e-13 +32 +1432.1242459406803 +13 +4470.158203125 +23 +2.067410370502899e-13 +33 +1432.1242459406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4678.974609375 +20 +1.8805156000098476e-13 +30 +1162.7804959406803 +11 +4620.181640625 +21 +2.0431621889152606e-13 +31 +1397.1789334406803 +12 +4744.763671875 +22 +1.9962352083846567e-13 +32 +1329.5500271906803 +13 +4744.763671875 +23 +1.9962352083846567e-13 +33 +1329.5500271906803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +4744.763671875 +20 +1.9962352083846567e-13 +30 +1329.5500271906803 +11 +4620.181640625 +21 +2.0431621889152606e-13 +31 +1397.1789334406803 +12 +4772.056640625 +22 +2.0424384839651265e-13 +32 +1396.1359646906803 +13 +4772.056640625 +23 +2.0424384839651265e-13 +33 +1396.1359646906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4779.673828125 +20 +1.9274507120567451e-13 +30 +1230.4211209406803 +11 +4678.974609375 +21 +1.8805156000098476e-13 +31 +1162.7804959406803 +12 +4744.763671875 +22 +1.9962352083846567e-13 +32 +1329.5500271906803 +13 +4744.763671875 +23 +1.9962352083846567e-13 +33 +1329.5500271906803 +70 +2 + 0 +3DFACE + 8 +ship4 +10 +4820.337890625 +20 +1.7798311652619813e-13 +30 +1017.6789334406803 +11 +4836.087890625 +21 +9.634269293803954e-14 +31 +-158.8835665593192 +12 +4733.080078125 +22 +1.8034532200950092e-13 +32 +1051.7219021906803 +13 +4733.080078125 +23 +1.8034532200950092e-13 +33 +1051.7219021906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4836.087890625 +20 +9.634269293803954e-14 +30 +-158.8835665593192 +11 +4820.337890625 +21 +1.7798311652619813e-13 +31 +1017.6789334406803 +12 +4952.888671875 +22 +1.7570385250909048e-13 +32 +984.8312771906803 +13 +4952.888671875 +23 +1.7570385250909048e-13 +33 +984.8312771906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4836.087890625 +20 +9.634269293803954e-14 +30 +-158.8835665593192 +11 +4952.888671875 +21 +1.7570385250909048e-13 +31 +984.8312771906803 +12 +5299.048828125 +22 +9.636708748692047e-14 +32 +-158.5320040593192 +13 +5299.048828125 +23 +9.636708748692047e-14 +33 +-158.5320040593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +5299.048828125 +20 +9.636708748692047e-14 +30 +-158.5320040593192 +11 +4952.888671875 +21 +1.7570385250909048e-13 +31 +984.8312771906803 +12 +4996.423828125 +22 +1.7930936683369102e-13 +32 +1036.7922146906803 +13 +4996.423828125 +23 +1.7930936683369102e-13 +33 +1036.7922146906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5410.705078125 +20 +2.0026835008055143e-13 +30 +1338.8429959406803 +11 +4982.982421875 +21 +1.985485343844463e-13 +31 +1314.0578396906803 +12 +4965.029296875 +22 +2.0123518736786538e-13 +32 +1352.7765896906803 +13 +4965.029296875 +23 +2.0123518736786538e-13 +33 +1352.7765896906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4982.982421875 +20 +1.985485343844463e-13 +30 +1314.0578396906803 +11 +5410.705078125 +21 +2.0026835008055143e-13 +31 +1338.8429959406803 +12 +4996.423828125 +22 +1.7930936683369102e-13 +32 +1036.7922146906803 +13 +4996.423828125 +23 +1.7930936683369102e-13 +33 +1036.7922146906803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +4996.423828125 +20 +1.7930936683369102e-13 +30 +1036.7922146906803 +11 +5410.705078125 +21 +2.0026835008055143e-13 +31 +1338.8429959406803 +12 +5436.861328125 +22 +1.8686679807700123e-13 +32 +1145.7062771906803 +13 +5436.861328125 +23 +1.8686679807700123e-13 +33 +1145.7062771906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4982.982421875 +20 +1.985485343844463e-13 +30 +1314.0578396906803 +11 +4903.048828125 +21 +1.9455839933915652e-13 +31 +1256.5539334406803 +12 +4873.037109375 +22 +2.0050822981121385e-13 +32 +1342.3000271906803 +13 +4873.037109375 +23 +2.0050822981121385e-13 +33 +1342.3000271906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4903.048828125 +20 +1.9455839933915652e-13 +30 +1256.5539334406803 +11 +4982.982421875 +21 +1.985485343844463e-13 +31 +1314.0578396906803 +12 +4996.423828125 +22 +1.7930936683369102e-13 +32 +1036.7922146906803 +13 +4996.423828125 +23 +1.7930936683369102e-13 +33 +1036.7922146906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +5436.861328125 +20 +1.8686679807700123e-13 +30 +1145.7062771906803 +11 +5299.048828125 +21 +9.636708748692047e-14 +31 +-158.5320040593192 +12 +4996.423828125 +22 +1.7930936683369102e-13 +32 +1036.7922146906803 +13 +4996.423828125 +23 +1.7930936683369102e-13 +33 +1036.7922146906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5299.048828125 +20 +9.636708748692047e-14 +30 +-158.5320040593192 +11 +5992.587890625 +21 +9.611663678507631e-14 +31 +-162.1413790593192 +12 +5281.037109375 +22 +9.219561962828249e-14 +32 +-218.6491915593192 +13 +5281.037109375 +23 +9.219561962828249e-14 +33 +-218.6491915593192 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5992.587890625 +20 +9.611663678507631e-14 +30 +-162.1413790593192 +11 +5299.048828125 +21 +9.636708748692047e-14 +31 +-158.5320040593192 +12 +5436.861328125 +22 +1.8686679807700123e-13 +32 +1145.7062771906803 +13 +5436.861328125 +23 +1.8686679807700123e-13 +33 +1145.7062771906803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +5992.587890625 +20 +9.611663678507631e-14 +30 +-162.1413790593192 +11 +5436.861328125 +21 +1.8686679807700123e-13 +31 +1145.7062771906803 +12 +5644.083984375 +22 +1.797248873162961e-13 +32 +1042.7804959406803 +13 +5644.083984375 +23 +1.797248873162961e-13 +33 +1042.7804959406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +5992.587890625 +20 +9.611663678507631e-14 +30 +-162.1413790593192 +11 +5644.083984375 +21 +1.797248873162961e-13 +31 +1042.7804959406803 +12 +5719.939453125 +22 +1.7301394691915394e-13 +32 +946.0656521906803 +13 +5719.939453125 +23 +1.7301394691915394e-13 +33 +946.0656521906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4895.126953125 +20 +2.0974400601753162e-13 +30 +1475.4015896906803 +11 +4965.029296875 +21 +2.0123518736786538e-13 +31 +1352.7765896906803 +12 +4886.349609375 +22 +2.028736879010341e-13 +32 +1376.3898709406803 +13 +4886.349609375 +23 +2.028736879010341e-13 +33 +1376.3898709406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4965.029296875 +20 +2.0123518736786538e-13 +30 +1352.7765896906803 +11 +4895.126953125 +21 +2.0974400601753162e-13 +31 +1475.4015896906803 +12 +4982.443359375 +22 +2.0897395142452379e-13 +32 +1464.3039334406803 +13 +4982.443359375 +23 +2.0897395142452379e-13 +33 +1464.3039334406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4965.029296875 +20 +2.0123518736786538e-13 +30 +1352.7765896906803 +11 +4982.443359375 +21 +2.0897395142452379e-13 +31 +1464.3039334406803 +12 +5410.705078125 +22 +2.0026835008055143e-13 +32 +1338.8429959406803 +13 +5410.705078125 +23 +2.0026835008055143e-13 +33 +1338.8429959406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +5410.705078125 +20 +2.0026835008055143e-13 +30 +1338.8429959406803 +11 +4982.443359375 +21 +2.0897395142452379e-13 +31 +1464.3039334406803 +12 +4991.783203125 +22 +2.1482701685268678e-13 +32 +1548.6554959406803 +13 +4991.783203125 +23 +2.1482701685268678e-13 +33 +1548.6554959406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +5410.705078125 +20 +2.0026835008055143e-13 +30 +1338.8429959406803 +11 +4991.783203125 +21 +2.1482701685268678e-13 +31 +1548.6554959406803 +12 +5333.033203125 +22 +2.1061163880606314e-13 +32 +1487.9054959406803 +13 +5333.033203125 +23 +2.1061163880606314e-13 +33 +1487.9054959406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +5410.705078125 +20 +2.0026835008055143e-13 +30 +1338.8429959406803 +11 +5333.033203125 +21 +2.1061163880606314e-13 +31 +1487.9054959406803 +12 +5403.462890625 +22 +2.1107676153805942e-13 +32 +1494.6086209406803 +13 +5403.462890625 +23 +2.1107676153805942e-13 +33 +1494.6086209406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +5410.705078125 +20 +2.0026835008055143e-13 +30 +1338.8429959406803 +11 +5403.462890625 +21 +2.1107676153805942e-13 +31 +1494.6086209406803 +12 +5413.236328125 +22 +2.046870160345161e-13 +32 +1402.5226834406803 +13 +5413.236328125 +23 +2.046870160345161e-13 +33 +1402.5226834406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +5410.705078125 +20 +2.0026835008055143e-13 +30 +1338.8429959406803 +11 +5413.236328125 +21 +2.046870160345161e-13 +31 +1402.5226834406803 +12 +5707.751953125 +22 +2.0680690233226838e-13 +32 +1433.0734646906803 +13 +5707.751953125 +23 +2.0680690233226838e-13 +33 +1433.0734646906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +5707.751953125 +20 +2.0680690233226838e-13 +30 +1433.0734646906803 +11 +5413.236328125 +21 +2.046870160345161e-13 +31 +1402.5226834406803 +12 +5682.861328125 +22 +2.1112067172604508e-13 +32 +1495.2414334406803 +13 +5682.861328125 +23 +2.1112067172604508e-13 +33 +1495.2414334406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5585.044921875 +20 +1.9619364726580778e-13 +30 +1280.1203396906803 +11 +5436.861328125 +21 +1.8686679807700123e-13 +31 +1145.7062771906803 +12 +5426.115234375 +22 +1.9423151238415214e-13 +32 +1251.8429959406803 +13 +5426.115234375 +23 +1.9423151238415214e-13 +33 +1251.8429959406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5436.861328125 +20 +1.8686679807700123e-13 +30 +1145.7062771906803 +11 +5585.044921875 +21 +1.9619364726580778e-13 +31 +1280.1203396906803 +12 +5644.083984375 +22 +1.797248873162961e-13 +32 +1042.7804959406803 +13 +5644.083984375 +23 +1.797248873162961e-13 +33 +1042.7804959406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +5644.083984375 +20 +1.797248873162961e-13 +30 +1042.7804959406803 +11 +5585.044921875 +21 +1.9619364726580778e-13 +31 +1280.1203396906803 +12 +5658.416015625 +22 +1.875132536223457e-13 +32 +1155.0226834406803 +13 +5658.416015625 +23 +1.875132536223457e-13 +33 +1155.0226834406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5683.576171875 +20 +1.8409639047575764e-13 +30 +1105.7804959406803 +11 +5719.939453125 +21 +1.7301394691915394e-13 +31 +946.0656521906803 +12 +5644.083984375 +22 +1.797248873162961e-13 +32 +1042.7804959406803 +13 +5644.083984375 +23 +1.797248873162961e-13 +33 +1042.7804959406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5719.939453125 +20 +1.7301394691915394e-13 +30 +946.0656521906803 +11 +5683.576171875 +21 +1.8409639047575764e-13 +31 +1105.7804959406803 +12 +5738.091796875 +22 +1.8807676770149505e-13 +32 +1163.1437771906803 +13 +5738.091796875 +23 +1.8807676770149505e-13 +33 +1163.1437771906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +6277.119140625 +20 +1.6851559210551158e-13 +30 +881.2375271906803 +11 +6434.748046875 +21 +1.5968476541061715e-13 +31 +753.9719021906803 +12 +6268.974609375 +22 +1.6459050919057093e-13 +32 +824.6711209406803 +13 +6268.974609375 +23 +1.6459050919057093e-13 +33 +824.6711209406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +6434.748046875 +20 +1.5968476541061715e-13 +30 +753.9719021906803 +11 +6277.119140625 +21 +1.6851559210551158e-13 +31 +881.2375271906803 +12 +6457.177734375 +22 +1.641245733069453e-13 +32 +817.9562771906803 +13 +6457.177734375 +23 +1.641245733069453e-13 +33 +817.9562771906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +6434.748046875 +20 +1.5968476541061715e-13 +30 +753.9719021906803 +11 +6457.177734375 +21 +1.641245733069453e-13 +31 +817.9562771906803 +12 +6722.912109375 +22 +1.6242346009831553e-13 +32 +793.4406521906803 +13 +6722.912109375 +23 +1.6242346009831553e-13 +33 +793.4406521906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +6722.912109375 +20 +1.6242346009831553e-13 +30 +793.4406521906803 +11 +6457.177734375 +21 +1.641245733069453e-13 +31 +817.9562771906803 +12 +6653.525390625 +22 +1.639042092153876e-13 +32 +814.7804959406803 +13 +6653.525390625 +23 +1.639042092153876e-13 +33 +814.7804959406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5910.544921875 +20 +1.7301394691915394e-13 +30 +946.0656521906803 +11 +5992.587890625 +21 +9.611663678507631e-14 +31 +-162.1413790593192 +12 +5719.939453125 +22 +1.7301394691915394e-13 +32 +946.0656521906803 +13 +5719.939453125 +23 +1.7301394691915394e-13 +33 +946.0656521906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +5992.587890625 +20 +9.611663678507631e-14 +30 +-162.1413790593192 +11 +5910.544921875 +21 +1.7301394691915394e-13 +31 +946.0656521906803 +12 +5977.060546875 +22 +1.6731781975545822e-13 +32 +863.9758084406803 +13 +5977.060546875 +23 +1.6731781975545822e-13 +33 +863.9758084406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +5992.587890625 +20 +9.611663678507631e-14 +30 +-162.1413790593192 +11 +5977.060546875 +21 +1.6731781975545822e-13 +31 +863.9758084406803 +12 +5995.271484375 +22 +1.587268727912262e-13 +32 +740.1672146906803 +13 +5995.271484375 +23 +1.587268727912262e-13 +33 +740.1672146906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +5992.587890625 +20 +9.611663678507631e-14 +30 +-162.1413790593192 +11 +5995.271484375 +21 +1.587268727912262e-13 +31 +740.1672146906803 +12 +6245.279296875 +22 +9.622315964852302e-14 +32 +-160.6062228093192 +13 +6245.279296875 +23 +9.622315964852302e-14 +33 +-160.6062228093192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +6245.279296875 +20 +9.622315964852302e-14 +30 +-160.6062228093192 +11 +5995.271484375 +21 +1.587268727912262e-13 +31 +740.1672146906803 +12 +6149.056640625 +22 +1.6046457782317735e-13 +32 +765.2101834406803 +13 +6149.056640625 +23 +1.6046457782317735e-13 +33 +765.2101834406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +6245.279296875 +20 +9.622315964852302e-14 +30 +-160.6062228093192 +11 +6149.056640625 +21 +1.6046457782317735e-13 +31 +765.2101834406803 +12 +6268.974609375 +22 +1.6459050919057093e-13 +32 +824.6711209406803 +13 +6268.974609375 +23 +1.6459050919057093e-13 +33 +824.6711209406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +6245.279296875 +20 +9.622315964852302e-14 +30 +-160.6062228093192 +11 +6268.974609375 +21 +1.6459050919057093e-13 +31 +824.6711209406803 +12 +6497.982421875 +22 +9.40268370976105e-14 +32 +-192.2585665593192 +13 +6497.982421875 +23 +9.40268370976105e-14 +33 +-192.2585665593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +6497.982421875 +20 +9.40268370976105e-14 +30 +-192.2585665593192 +11 +6268.974609375 +21 +1.6459050919057093e-13 +31 +824.6711209406803 +12 +6434.748046875 +22 +1.5968476541061715e-13 +32 +753.9719021906803 +13 +6434.748046875 +23 +1.5968476541061715e-13 +33 +753.9719021906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +6497.982421875 +20 +9.40268370976105e-14 +30 +-192.2585665593192 +11 +6434.748046875 +21 +1.5968476541061715e-13 +31 +753.9719021906803 +12 +6771.052734375 +22 +9.354219872650948e-14 +32 +-199.2429415593192 +13 +6771.052734375 +23 +9.354219872650948e-14 +33 +-199.2429415593192 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +6507.369140625 +20 +1.5883014304815545e-13 +30 +741.6554959406803 +11 +6771.052734375 +21 +9.354219872650948e-14 +31 +-199.2429415593192 +12 +6434.748046875 +22 +1.5968476541061715e-13 +32 +753.9719021906803 +13 +6434.748046875 +23 +1.5968476541061715e-13 +33 +753.9719021906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +6771.052734375 +20 +9.354219872650948e-14 +30 +-199.2429415593192 +11 +6507.369140625 +21 +1.5883014304815545e-13 +31 +741.6554959406803 +12 +6766.892578125 +22 +1.5156544639141633e-13 +32 +636.9601834406803 +13 +6766.892578125 +23 +1.5156544639141633e-13 +33 +636.9601834406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +6771.052734375 +20 +9.354219872650948e-14 +30 +-199.2429415593192 +11 +6766.892578125 +21 +1.5156544639141633e-13 +31 +636.9601834406803 +12 +6855.603515625 +22 +1.473451894350165e-13 +32 +576.1398709406803 +13 +6855.603515625 +23 +1.473451894350165e-13 +33 +576.1398709406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +6771.052734375 +20 +9.354219872650948e-14 +30 +-199.2429415593192 +11 +6855.603515625 +21 +1.473451894350165e-13 +31 +576.1398709406803 +12 +7718.759765625 +22 +9.852356560799413e-14 +32 +-127.4538790593192 +13 +7718.759765625 +23 +9.852356560799413e-14 +33 +-127.4538790593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +7718.759765625 +20 +9.852356560799413e-14 +30 +-127.4538790593192 +11 +6855.603515625 +21 +1.473451894350165e-13 +31 +576.1398709406803 +12 +7012.177734375 +22 +1.4635395759882163e-13 +32 +561.8547146906803 +13 +7012.177734375 +23 +1.4635395759882163e-13 +33 +561.8547146906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +7718.759765625 +20 +9.852356560799413e-14 +30 +-127.4538790593192 +11 +7012.177734375 +21 +1.4635395759882163e-13 +31 +561.8547146906803 +12 +7173.591796875 +22 +1.456473288329042e-13 +32 +551.6711209406803 +13 +7173.591796875 +23 +1.456473288329042e-13 +33 +551.6711209406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +7718.759765625 +20 +9.852356560799413e-14 +30 +-127.4538790593192 +11 +7173.591796875 +21 +1.456473288329042e-13 +31 +551.6711209406803 +12 +7279.880859375 +22 +1.4257686828042515e-13 +32 +507.4211209406808 +13 +7279.880859375 +23 +1.4257686828042515e-13 +33 +507.4211209406808 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +7517.361328125 +20 +1.5786493206410023e-13 +30 +727.7453396906803 +11 +7173.591796875 +21 +1.456473288329042e-13 +31 +551.6711209406803 +12 +7012.177734375 +22 +1.4635395759882163e-13 +32 +561.8547146906803 +13 +7012.177734375 +23 +1.4635395759882163e-13 +33 +561.8547146906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +7173.591796875 +20 +1.456473288329042e-13 +30 +551.6711209406803 +11 +7517.361328125 +21 +1.5786493206410023e-13 +31 +727.7453396906803 +12 +7234.845703125 +22 +1.474744805440854e-13 +32 +578.0031521906803 +13 +7234.845703125 +23 +1.474744805440854e-13 +33 +578.0031521906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +7234.845703125 +20 +1.474744805440854e-13 +30 +578.0031521906803 +11 +7517.361328125 +21 +1.5786493206410023e-13 +31 +727.7453396906803 +12 +7528.705078125 +22 +1.5358612819038619e-13 +32 +666.0812771906803 +13 +7528.705078125 +23 +1.5358612819038619e-13 +33 +666.0812771906803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +7528.705078125 +20 +1.5358612819038619e-13 +30 +666.0812771906803 +11 +7517.361328125 +21 +1.5786493206410023e-13 +31 +727.7453396906803 +12 +7544.455078125 +22 +1.5470177222587377e-13 +32 +682.1594021906803 +13 +7544.455078125 +23 +1.5470177222587377e-13 +33 +682.1594021906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +7933.212890625 +20 +1.4369820437731838e-13 +30 +523.5812771906803 +11 +7854.626953125 +21 +1.3928360418150043e-13 +31 +459.9601834406808 +12 +7662.673828125 +22 +1.412498048213029e-13 +32 +488.2961209406808 +13 +7662.673828125 +23 +1.412498048213029e-13 +33 +488.2961209406808 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +7854.626953125 +20 +1.3928360418150043e-13 +30 +459.9601834406808 +11 +7933.212890625 +21 +1.4369820437731838e-13 +31 +523.5812771906803 +12 +8006.197265625 +22 +1.4124817851804417e-13 +32 +488.2726834406808 +13 +8006.197265625 +23 +1.4124817851804417e-13 +33 +488.2726834406808 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +7379.876953125 +20 +1.4663449491095225e-13 +30 +565.8976834406803 +11 +7718.759765625 +21 +9.852356560799413e-14 +31 +-127.4538790593192 +12 +7279.880859375 +22 +1.4257686828042515e-13 +32 +507.4211209406808 +13 +7279.880859375 +23 +1.4257686828042515e-13 +33 +507.4211209406808 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +7718.759765625 +20 +9.852356560799413e-14 +30 +-127.4538790593192 +11 +7379.876953125 +21 +1.4663449491095225e-13 +31 +565.8976834406803 +12 +7512.439453125 +22 +1.4216866616248436e-13 +32 +501.5383084406808 +13 +7512.439453125 +23 +1.4216866616248436e-13 +33 +501.5383084406808 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +7718.759765625 +20 +9.852356560799413e-14 +30 +-127.4538790593192 +11 +7512.439453125 +21 +1.4216866616248436e-13 +31 +501.5383084406808 +12 +7662.673828125 +22 +1.412498048213029e-13 +32 +488.2961209406808 +13 +7662.673828125 +23 +1.412498048213029e-13 +33 +488.2961209406808 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +7718.759765625 +20 +9.852356560799413e-14 +30 +-127.4538790593192 +11 +7662.673828125 +21 +1.412498048213029e-13 +31 +488.2961209406808 +12 +7854.626953125 +22 +1.3928360418150043e-13 +32 +459.9601834406808 +13 +7854.626953125 +23 +1.3928360418150043e-13 +33 +459.9601834406808 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +7718.759765625 +20 +9.852356560799413e-14 +30 +-127.4538790593192 +11 +7854.626953125 +21 +1.3928360418150043e-13 +31 +459.9601834406808 +12 +8230.599609375 +22 +9.763235142221105e-14 +32 +-140.2976290593192 +13 +8230.599609375 +23 +9.763235142221105e-14 +33 +-140.2976290593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +8230.599609375 +20 +9.763235142221105e-14 +30 +-140.2976290593192 +11 +7854.626953125 +21 +1.3928360418150043e-13 +31 +459.9601834406808 +12 +7981.283203125 +22 +1.350202501887443e-13 +32 +398.5187771906808 +13 +7981.283203125 +23 +1.350202501887443e-13 +33 +398.5187771906808 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +8177.056640625 +20 +1.359204090424504e-13 +30 +411.4914334406808 +11 +8230.599609375 +21 +9.763235142221105e-14 +31 +-140.2976290593192 +12 +7981.283203125 +22 +1.350202501887443e-13 +32 +398.5187771906808 +13 +7981.283203125 +23 +1.350202501887443e-13 +33 +398.5187771906808 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +8230.599609375 +20 +9.763235142221105e-14 +30 +-140.2976290593192 +11 +8177.056640625 +21 +1.359204090424504e-13 +31 +411.4914334406808 +12 +8247.533203125 +22 +1.2813529534291823e-13 +32 +299.2961209406808 +13 +8247.533203125 +23 +1.2813529534291823e-13 +33 +299.2961209406808 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +8247.533203125 +20 +1.2813529534291823e-13 +30 +299.2961209406808 +11 +8177.056640625 +21 +1.359204090424504e-13 +31 +411.4914334406808 +12 +8249.501953125 +22 +1.3084390342033014e-13 +32 +338.3312771906808 +13 +8249.501953125 +23 +1.3084390342033014e-13 +33 +338.3312771906808 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +8305.388671875 +20 +1.259170176980129e-13 +30 +267.3273709406808 +11 +8258.712890625 +21 +1.0611921497788446e-13 +31 +-17.989035309319206 +12 +8247.533203125 +22 +1.2813529534291823e-13 +32 +299.2961209406808 +13 +8247.533203125 +23 +1.2813529534291823e-13 +33 +299.2961209406808 +70 +2 + 0 +3DFACE + 8 +ship4 +10 +8230.599609375 +20 +9.763235142221105e-14 +30 +-140.2976290593192 +11 +8258.712890625 +21 +1.0611921497788446e-13 +31 +-17.989035309319206 +12 +8374.048828125 +22 +9.880491607175412e-14 +32 +-123.3991915593192 +13 +8374.048828125 +23 +9.880491607175412e-14 +33 +-123.3991915593192 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +8258.712890625 +20 +1.0611921497788446e-13 +30 +-17.989035309319206 +11 +8230.599609375 +21 +9.763235142221105e-14 +31 +-140.2976290593192 +12 +8247.533203125 +22 +1.2813529534291823e-13 +32 +299.2961209406808 +13 +8247.533203125 +23 +1.2813529534291823e-13 +33 +299.2961209406808 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +8374.048828125 +20 +9.880491607175412e-14 +30 +-123.3991915593192 +11 +8258.712890625 +21 +1.0611921497788446e-13 +31 +-17.989035309319206 +12 +8403.228515625 +22 +1.0301460205697222e-13 +32 +-62.731222809319206 +13 +8403.228515625 +23 +1.0301460205697222e-13 +33 +-62.731222809319206 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4062.884765625 +20 +2.71440259592276e-13 +30 +2364.5383084406803 +11 +3650.794921875 +21 +2.709491160081401e-13 +31 +2357.4601834406803 +12 +3864.796875 +22 +3.110171625450575e-13 +32 +2934.9015896906803 +13 +3864.796875 +23 +3.110171625450575e-13 +33 +2934.9015896906803 +70 +0 + 0 +3DFACE + 8 +ship4 +10 +3648.744140625 +20 +2.41926921204505e-13 +30 +1939.2062771906803 +11 +4181.208984375 +21 +2.375196393733514e-13 +31 +1875.6906521906803 +12 +3634.728515625 +22 +2.3473459504277927e-13 +32 +1835.5539334406803 +13 +3634.728515625 +23 +2.3473459504277927e-13 +33 +1835.5539334406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4181.208984375 +20 +2.375196393733514e-13 +30 +1875.6906521906803 +11 +3648.744140625 +21 +2.41926921204505e-13 +31 +1939.2062771906803 +12 +3650.794921875 +22 +2.709491160081401e-13 +32 +2357.4601834406803 +13 +3650.794921875 +23 +2.709491160081401e-13 +33 +2357.4601834406803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4181.208984375 +20 +2.375196393733514e-13 +30 +1875.6906521906803 +11 +3650.794921875 +21 +2.709491160081401e-13 +31 +2357.4601834406803 +12 +4077.31640625 +22 +2.6387713628756027e-13 +32 +2255.5422146906803 +13 +4077.31640625 +23 +2.6387713628756027e-13 +33 +2255.5422146906803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +4077.31640625 +20 +2.6387713628756027e-13 +30 +2255.5422146906803 +11 +3650.794921875 +21 +2.709491160081401e-13 +31 +2357.4601834406803 +12 +4062.884765625 +22 +2.71440259592276e-13 +32 +2364.5383084406803 +13 +4062.884765625 +23 +2.71440259592276e-13 +33 +2364.5383084406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4181.208984375 +20 +2.375196393733514e-13 +30 +1875.6906521906803 +11 +4077.31640625 +21 +2.6387713628756027e-13 +31 +2255.5422146906803 +12 +4175.40234375 +22 +2.438825508731257e-13 +32 +1967.3898709406803 +13 +4175.40234375 +23 +2.438825508731257e-13 +33 +1967.3898709406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4037.33203125 +20 +3.388310140274575e-13 +30 +3335.7414334406803 +11 +3916.53515625 +21 +3.2750055922389776e-13 +31 +3172.4523709406803 +12 +3750.24609375 +22 +3.3275758450773685e-13 +32 +3248.2140896906803 +13 +3750.24609375 +23 +3.3275758450773685e-13 +33 +3248.2140896906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +3916.53515625 +20 +3.2750055922389776e-13 +30 +3172.4523709406803 +11 +4049.98828125 +21 +2.9615437706354e-13 +31 +2720.7062771906803 +12 +3864.796875 +22 +3.110171625450575e-13 +32 +2934.9015896906803 +13 +3864.796875 +23 +3.110171625450575e-13 +33 +2934.9015896906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4049.98828125 +20 +2.9615437706354e-13 +30 +2720.7062771906803 +11 +3916.53515625 +21 +3.2750055922389776e-13 +31 +3172.4523709406803 +12 +4037.33203125 +22 +3.388310140274575e-13 +32 +3335.7414334406803 +13 +4037.33203125 +23 +3.388310140274575e-13 +33 +3335.7414334406803 +70 +15 + 0 +3DFACE + 8 +ship4 +10 +4049.98828125 +20 +2.9615437706354e-13 +30 +2720.7062771906803 +11 +4037.33203125 +21 +3.388310140274575e-13 +31 +3335.7414334406803 +12 +4123.7578125 +22 +3.22666372787328e-13 +32 +3102.7844021906803 +13 +4123.7578125 +23 +3.22666372787328e-13 +33 +3102.7844021906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4049.98828125 +20 +2.9615437706354e-13 +30 +2720.7062771906803 +11 +4123.7578125 +21 +3.22666372787328e-13 +31 +3102.7844021906803 +12 +4131.029296875 +22 +3.149861556479838e-13 +32 +2992.1008084406803 +13 +4131.029296875 +23 +3.149861556479838e-13 +33 +2992.1008084406803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4062.884765625 +20 +2.71440259592276e-13 +30 +2364.5383084406803 +11 +3864.796875 +21 +3.110171625450575e-13 +31 +2934.9015896906803 +12 +4049.98828125 +22 +2.9615437706354e-13 +32 +2720.7062771906803 +13 +4049.98828125 +23 +2.9615437706354e-13 +33 +2720.7062771906803 +70 +0 + 0 +3DFACE + 8 +ship4 +10 +4299.099609375 +20 +2.940710825891091e-13 +30 +2690.6828396906803 +11 +4062.884765625 +21 +2.71440259592276e-13 +31 +2364.5383084406803 +12 +4049.98828125 +22 +2.9615437706354e-13 +32 +2720.7062771906803 +13 +4049.98828125 +23 +2.9615437706354e-13 +33 +2720.7062771906803 +70 +1 + 0 +3DFACE + 8 +ship4 +10 +4062.884765625 +20 +2.71440259592276e-13 +30 +2364.5383084406803 +11 +4299.099609375 +21 +2.940710825891091e-13 +31 +2690.6828396906803 +12 +4200.2109375 +22 +2.8084517133750153e-13 +32 +2500.0773709406803 +13 +4200.2109375 +23 +2.8084517133750153e-13 +33 +2500.0773709406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +4200.2109375 +20 +2.8084517133750153e-13 +30 +2500.0773709406803 +11 +4299.099609375 +21 +2.940710825891091e-13 +31 +2690.6828396906803 +12 +4323.814453125 +22 +2.852727819593892e-13 +32 +2563.8859646906803 +13 +4323.814453125 +23 +2.852727819593892e-13 +33 +2563.8859646906803 +70 +13 + 0 +3DFACE + 8 +ship4 +10 +4200.2109375 +20 +2.8084517133750153e-13 +30 +2500.0773709406803 +11 +4323.814453125 +21 +2.852727819593892e-13 +31 +2563.8859646906803 +12 +4905.041015625 +22 +2.7949859223927453e-13 +32 +2480.6711209406803 +13 +4905.041015625 +23 +2.7949859223927453e-13 +33 +2480.6711209406803 +70 +3 + 0 +3DFACE + 8 +ship4 +10 +4905.041015625 +20 +2.7949859223927453e-13 +30 +2480.6711209406803 +11 +4323.814453125 +21 +2.852727819593892e-13 +31 +2563.8859646906803 +12 +4873.669921875 +22 +2.825365267265789e-13 +32 +2524.4523709406803 +13 +4873.669921875 +23 +2.825365267265789e-13 +33 +2524.4523709406803 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +135.28125 +20 +8.03841043207909e-14 +30 +395.95703125 +11 +135.94921875 +21 +7.558000449450764e-14 +31 +326.72265625 +12 +121.751953125 +22 +7.712173998378202e-14 +32 +348.94140625 +13 +121.751953125 +23 +7.712173998378202e-14 +33 +348.94140625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +135.94921875 +20 +7.558000449450764e-14 +30 +326.72265625 +11 +135.28125 +21 +8.03841043207909e-14 +31 +395.95703125 +12 +155.1796875 +22 +8.104357029220521e-14 +32 +405.4609375 +13 +155.1796875 +23 +8.104357029220521e-14 +33 +405.4609375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +135.94921875 +20 +7.558000449450764e-14 +30 +326.72265625 +11 +155.1796875 +21 +8.104357029220521e-14 +31 +405.4609375 +12 +168.80859375 +22 +7.554829158096243e-14 +32 +326.265625 +13 +168.80859375 +23 +7.554829158096243e-14 +33 +326.265625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +168.80859375 +20 +7.554829158096243e-14 +30 +326.265625 +11 +155.1796875 +21 +8.104357029220521e-14 +31 +405.4609375 +12 +306.7734375 +22 +8.107772266063851e-14 +32 +405.953125 +13 +306.7734375 +23 +8.107772266063851e-14 +33 +405.953125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +168.80859375 +20 +7.554829158096243e-14 +30 +326.265625 +11 +306.7734375 +21 +8.107772266063851e-14 +31 +405.953125 +12 +186.73828125 +22 +7.47465240744094e-14 +32 +314.7109375 +13 +186.73828125 +23 +7.47465240744094e-14 +33 +314.7109375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +186.73828125 +20 +7.47465240744094e-14 +30 +314.7109375 +11 +306.7734375 +21 +8.107772266063851e-14 +31 +405.953125 +12 +251.583984375 +22 +6.744442244271953e-14 +32 +209.4765625 +13 +251.583984375 +23 +6.744442244271953e-14 +33 +209.4765625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +251.583984375 +20 +6.744442244271953e-14 +30 +209.4765625 +11 +306.7734375 +21 +8.107772266063851e-14 +31 +405.953125 +12 +321.287109375 +22 +5.482430915498826e-14 +32 +27.6015625 +13 +321.287109375 +23 +5.482430915498826e-14 +33 +27.6015625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +321.287109375 +20 +5.482430915498826e-14 +30 +27.6015625 +11 +306.7734375 +21 +8.107772266063851e-14 +31 +405.953125 +12 +359.00390625 +22 +8.375461782450522e-14 +32 +444.53125 +13 +359.00390625 +23 +8.375461782450522e-14 +33 +444.53125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +321.287109375 +20 +5.482430915498826e-14 +30 +27.6015625 +11 +359.00390625 +21 +8.375461782450522e-14 +31 +444.53125 +12 +343.640625 +22 +4.585687298636065e-14 +32 +-101.6328125 +13 +343.640625 +23 +4.585687298636065e-14 +33 +-101.6328125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +343.640625 +20 +4.585687298636065e-14 +30 +-101.6328125 +11 +359.00390625 +21 +8.375461782450522e-14 +31 +444.53125 +12 +345.955078125 +22 +4.0434777921760645e-14 +32 +-179.7734375 +13 +345.955078125 +23 +4.0434777921760645e-14 +33 +-179.7734375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +345.955078125 +20 +4.0434777921760645e-14 +30 +-179.7734375 +11 +359.00390625 +21 +8.375461782450522e-14 +31 +444.53125 +12 +358.0078125 +22 +3.486306295735764e-14 +32 +-260.0703125 +13 +358.0078125 +23 +3.486306295735764e-14 +33 +-260.0703125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +358.0078125 +20 +3.486306295735764e-14 +30 +-260.0703125 +11 +359.00390625 +21 +8.375461782450522e-14 +31 +444.53125 +12 +458.5546875 +22 +8.106308593130995e-14 +32 +405.7421875 +13 +458.5546875 +23 +8.106308593130995e-14 +33 +405.7421875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +458.5546875 +20 +8.106308593130995e-14 +30 +405.7421875 +11 +359.00390625 +21 +8.375461782450522e-14 +31 +444.53125 +12 +377.1796875 +22 +8.547687297549844e-14 +32 +469.3515625 +13 +377.1796875 +23 +8.547687297549844e-14 +33 +469.3515625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +458.5546875 +20 +8.106308593130995e-14 +30 +405.7421875 +11 +377.1796875 +21 +8.547687297549844e-14 +31 +469.3515625 +12 +424.962890625 +22 +8.318215907743287e-14 +32 +436.28125 +13 +424.962890625 +23 +8.318215907743287e-14 +33 +436.28125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +424.962890625 +20 +8.318215907743287e-14 +30 +436.28125 +11 +377.1796875 +21 +8.547687297549844e-14 +31 +469.3515625 +12 +417.111328125 +22 +8.649981772523851e-14 +32 +484.09375 +13 +417.111328125 +23 +8.649981772523851e-14 +33 +484.09375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +424.962890625 +20 +8.318215907743287e-14 +30 +436.28125 +11 +417.111328125 +21 +8.649981772523851e-14 +31 +484.09375 +12 +424.2421875 +22 +8.592085376513126e-14 +32 +475.75 +13 +424.2421875 +23 +8.592085376513126e-14 +33 +475.75 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +2521.435546875 +20 +1.651527222271132e-13 +30 +1617.6015625 +11 +2520.6796875 +21 +1.2711592846034736e-13 +31 +1069.43359375 +12 +2493.755859375 +22 +1.270378659039284e-13 +32 +1068.30859375 +13 +2493.755859375 +23 +1.270378659039284e-13 +33 +1068.30859375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +2520.6796875 +20 +1.2711592846034736e-13 +30 +1069.43359375 +11 +2521.435546875 +21 +1.651527222271132e-13 +31 +1617.6015625 +12 +2546.58984375 +22 +1.6523972945145515e-13 +32 +1618.85546875 +13 +2546.58984375 +23 +1.6523972945145515e-13 +33 +1618.85546875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +2546.58984375 +20 +1.6523972945145515e-13 +30 +1618.85546875 +11 +2521.435546875 +21 +1.651527222271132e-13 +31 +1617.6015625 +12 +2536.65234375 +22 +1.6614801982145488e-13 +32 +1631.9453125 +13 +2536.65234375 +23 +1.6614801982145488e-13 +33 +1631.9453125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +2476.974609375 +20 +1.2251267708651703e-13 +30 +1003.09375 +11 +2520.75 +21 +1.2434877346562123e-13 +31 +1029.5546875 +12 +2467.541015625 +22 +1.1890878906517521e-13 +32 +951.15625 +13 +2467.541015625 +23 +1.1890878906517521e-13 +33 +951.15625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +2520.75 +20 +1.2434877346562123e-13 +30 +1029.5546875 +11 +2476.974609375 +21 +1.2251267708651703e-13 +31 +1003.09375 +12 +2493.755859375 +22 +1.270378659039284e-13 +32 +1068.30859375 +13 +2493.755859375 +23 +1.270378659039284e-13 +33 +1068.30859375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2520.75 +20 +1.2434877346562123e-13 +30 +1029.5546875 +11 +2493.755859375 +21 +1.270378659039284e-13 +31 +1068.30859375 +12 +2520.6796875 +22 +1.2711592846034736e-13 +32 +1069.43359375 +13 +2520.6796875 +23 +1.2711592846034736e-13 +33 +1069.43359375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +458.5546875 +20 +8.106308593130995e-14 +30 +405.7421875 +11 +389.244140625 +21 +3.1561667342139277e-14 +31 +-307.6484375 +12 +358.0078125 +22 +3.486306295735764e-14 +32 +-260.0703125 +13 +358.0078125 +23 +3.486306295735764e-14 +33 +-260.0703125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +389.244140625 +20 +3.1561667342139277e-14 +30 +-307.6484375 +11 +458.5546875 +21 +8.106308593130995e-14 +31 +405.7421875 +12 +541.857421875 +22 +2.3976588943430688e-14 +32 +-416.9609375 +13 +541.857421875 +23 +2.3976588943430688e-14 +33 +-416.9609375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +541.857421875 +20 +2.3976588943430688e-14 +30 +-416.9609375 +11 +458.5546875 +21 +8.106308593130995e-14 +31 +405.7421875 +12 +623.33203125 +22 +8.106145962805122e-14 +32 +405.71875 +13 +623.33203125 +23 +8.106145962805122e-14 +33 +405.71875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +541.857421875 +20 +2.3976588943430688e-14 +30 +-416.9609375 +11 +623.33203125 +21 +8.106145962805122e-14 +31 +405.71875 +12 +602.794921875 +22 +1.8878941378946967e-14 +32 +-490.42578125 +13 +602.794921875 +23 +1.8878941378946967e-14 +33 +-490.42578125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +602.794921875 +20 +1.8878941378946967e-14 +30 +-490.42578125 +11 +623.33203125 +21 +8.106145962805122e-14 +31 +405.71875 +12 +613.8984375 +22 +8.979633443068069e-15 +32 +-633.08984375 +13 +613.8984375 +23 +8.979633443068069e-15 +33 +-633.08984375 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +613.8984375 +20 +8.979633443068069e-15 +30 +-633.08984375 +11 +623.33203125 +21 +8.106145962805122e-14 +31 +405.71875 +12 +630.955078125 +22 +9.008906901725178e-15 +32 +-632.66796875 +13 +630.955078125 +23 +9.008906901725178e-15 +33 +-632.66796875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +630.955078125 +20 +9.008906901725178e-15 +30 +-632.66796875 +11 +623.33203125 +21 +8.106145962805122e-14 +31 +405.71875 +12 +684.75 +22 +8.024180278565218e-14 +32 +393.90625 +13 +684.75 +23 +8.024180278565218e-14 +33 +393.90625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +630.955078125 +20 +9.008906901725178e-15 +30 +-632.66796875 +11 +684.75 +21 +8.024180278565218e-14 +31 +393.90625 +12 +679.423828125 +22 +9.768390523551274e-15 +32 +-621.72265625 +13 +679.423828125 +23 +9.768390523551274e-15 +33 +-621.72265625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +679.423828125 +20 +9.768390523551274e-15 +30 +-621.72265625 +11 +684.75 +21 +8.024180278565218e-14 +31 +393.90625 +12 +819.146484375 +22 +8.171360723480126e-14 +32 +415.1171875 +13 +819.146484375 +23 +8.171360723480126e-14 +33 +415.1171875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +819.146484375 +20 +8.171360723480126e-14 +30 +415.1171875 +11 +684.75 +21 +8.024180278565218e-14 +31 +393.90625 +12 +794.8828125 +22 +8.144851980362855e-14 +32 +411.296875 +13 +794.8828125 +23 +8.144851980362855e-14 +33 +411.296875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +794.8828125 +20 +8.144851980362855e-14 +30 +411.296875 +11 +684.75 +21 +8.024180278565218e-14 +31 +393.90625 +12 +716.994140625 +22 +8.142412525474763e-14 +32 +410.9453125 +13 +716.994140625 +23 +8.142412525474763e-14 +33 +410.9453125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +570.5625 +20 +1.3366586483487541e-14 +30 +-569.8671875 +11 +613.8984375 +21 +8.979633443068069e-15 +31 +-633.08984375 +12 +563.33203125 +22 +1.1551632046746807e-14 +32 +-596.0234375 +13 +563.33203125 +23 +1.1551632046746807e-14 +33 +-596.0234375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +613.8984375 +20 +8.979633443068069e-15 +30 +-633.08984375 +11 +570.5625 +21 +1.3366586483487541e-14 +31 +-569.8671875 +12 +583.634765625 +22 +1.3390167880739101e-14 +32 +-569.52734375 +13 +583.634765625 +23 +1.3390167880739101e-14 +33 +-569.52734375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +613.8984375 +20 +8.979633443068069e-15 +30 +-633.08984375 +11 +583.634765625 +21 +1.3390167880739101e-14 +31 +-569.52734375 +12 +602.794921875 +22 +1.8878941378946967e-14 +32 +-490.42578125 +13 +602.794921875 +23 +1.8878941378946967e-14 +33 +-490.42578125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +819.146484375 +20 +8.171360723480126e-14 +30 +415.1171875 +11 +815.853515625 +21 +7.794871519084534e-15 +31 +-650.1640625 +12 +679.423828125 +22 +9.768390523551274e-15 +32 +-621.72265625 +13 +679.423828125 +23 +9.768390523551274e-15 +33 +-621.72265625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +815.853515625 +20 +7.794871519084534e-15 +30 +-650.1640625 +11 +819.146484375 +21 +8.171360723480126e-14 +31 +415.1171875 +12 +918.521484375 +22 +5.0789450770083455e-15 +32 +-689.3046875 +13 +918.521484375 +23 +5.0789450770083455e-15 +33 +-689.3046875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +918.521484375 +20 +5.0789450770083455e-15 +30 +-689.3046875 +11 +819.146484375 +21 +8.171360723480126e-14 +31 +415.1171875 +12 +849.85546875 +22 +8.544434691032388e-14 +32 +468.8828125 +13 +849.85546875 +23 +8.544434691032388e-14 +33 +468.8828125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +918.521484375 +20 +5.0789450770083455e-15 +30 +-689.3046875 +11 +849.85546875 +21 +8.544434691032388e-14 +31 +468.8828125 +12 +889.447265625 +22 +8.658357234306302e-14 +32 +485.30078125 +13 +889.447265625 +23 +8.658357234306302e-14 +33 +485.30078125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +918.521484375 +20 +5.0789450770083455e-15 +30 +-689.3046875 +11 +889.447265625 +21 +8.658357234306302e-14 +31 +485.30078125 +12 +963.26953125 +22 +8.656161724907019e-14 +32 +484.984375 +13 +963.26953125 +23 +8.656161724907019e-14 +33 +484.984375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +918.521484375 +20 +5.0789450770083455e-15 +30 +-689.3046875 +11 +963.26953125 +21 +8.656161724907019e-14 +31 +484.984375 +12 +963.26953125 +22 +8.19868261822676e-14 +32 +419.0546875 +13 +963.26953125 +23 +8.19868261822676e-14 +33 +419.0546875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +918.521484375 +20 +5.0789450770083455e-15 +30 +-689.3046875 +11 +963.26953125 +21 +8.19868261822676e-14 +31 +419.0546875 +12 +1005.22265625 +22 +4.2300147759521955e-15 +32 +-701.5390625 +13 +1005.22265625 +23 +4.2300147759521955e-15 +33 +-701.5390625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +1005.22265625 +20 +4.2300147759521955e-15 +30 +-701.5390625 +11 +963.26953125 +21 +8.19868261822676e-14 +31 +419.0546875 +12 +1028.982421875 +22 +8.19868261822676e-14 +32 +419.0546875 +13 +1028.982421875 +23 +8.19868261822676e-14 +33 +419.0546875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1005.22265625 +20 +4.2300147759521955e-15 +30 +-701.5390625 +11 +1028.982421875 +21 +8.19868261822676e-14 +31 +419.0546875 +12 +1383.240234375 +22 +2.3735896061138906e-15 +32 +-728.29296875 +13 +1383.240234375 +23 +2.3735896061138906e-15 +33 +-728.29296875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +1383.240234375 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +1028.982421875 +21 +8.19868261822676e-14 +31 +419.0546875 +12 +1048.142578125 +22 +8.201447333766598e-14 +32 +419.453125 +13 +1048.142578125 +23 +8.201447333766598e-14 +33 +419.453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1383.240234375 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +1048.142578125 +21 +8.201447333766598e-14 +31 +419.453125 +12 +1131.45703125 +22 +8.295447662121092e-14 +32 +433.0 +13 +1131.45703125 +23 +8.295447662121092e-14 +33 +433.0 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1383.240234375 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +1131.45703125 +21 +8.295447662121092e-14 +31 +433.0 +12 +1225.60546875 +22 +8.210310686526667e-14 +32 +420.73046875 +13 +1225.60546875 +23 +8.210310686526667e-14 +33 +420.73046875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +1294.91015625 +20 +8.47840677872802e-14 +30 +459.3671875 +11 +1383.240234375 +21 +2.3735896061138906e-15 +31 +-728.29296875 +12 +1225.60546875 +22 +8.210310686526667e-14 +32 +420.73046875 +13 +1225.60546875 +23 +8.210310686526667e-14 +33 +420.73046875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +1383.240234375 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +1294.91015625 +21 +8.47840677872802e-14 +31 +459.3671875 +12 +1305.955078125 +22 +8.560372462967925e-14 +32 +471.1796875 +13 +1305.955078125 +23 +8.560372462967925e-14 +33 +471.1796875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1383.240234375 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +1305.955078125 +21 +8.560372462967925e-14 +31 +471.1796875 +12 +1374.0 +22 +8.360337162144349e-14 +32 +442.3515625 +13 +1374.0 +23 +8.360337162144349e-14 +33 +442.3515625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1383.240234375 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +1374.0 +21 +8.360337162144349e-14 +31 +442.3515625 +12 +1380.65625 +22 +8.292032425277762e-14 +32 +432.5078125 +13 +1380.65625 +23 +8.292032425277762e-14 +33 +432.5078125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1383.240234375 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +1380.65625 +21 +8.292032425277762e-14 +31 +432.5078125 +12 +1394.0625 +22 +8.38977325112733e-14 +32 +446.59375 +13 +1394.0625 +23 +8.38977325112733e-14 +33 +446.59375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1383.240234375 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +1394.0625 +21 +8.38977325112733e-14 +31 +446.59375 +12 +1400.220703125 +22 +1.958069123508821e-15 +32 +-734.28125 +13 +1400.220703125 +23 +1.958069123508821e-15 +33 +-734.28125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +1400.220703125 +20 +1.958069123508821e-15 +30 +-734.28125 +11 +1394.0625 +21 +8.38977325112733e-14 +31 +446.59375 +12 +1530.451171875 +22 +2.3809079707781677e-15 +32 +-728.1875 +13 +1530.451171875 +23 +2.3809079707781677e-15 +33 +-728.1875 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +1530.451171875 +20 +2.3809079707781677e-15 +30 +-728.1875 +11 +1394.0625 +21 +8.38977325112733e-14 +31 +446.59375 +12 +1800.6796875 +22 +2.3613923316734287e-15 +32 +-728.46875 +13 +1800.6796875 +23 +2.3613923316734287e-15 +33 +-728.46875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +1800.6796875 +20 +2.3613923316734287e-15 +30 +-728.46875 +11 +1394.0625 +21 +8.38977325112733e-14 +31 +446.59375 +12 +1936.576171875 +22 +1.9938477952008427e-15 +32 +-733.765625 +13 +1936.576171875 +23 +1.9938477952008427e-15 +33 +-733.765625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +1400.220703125 +20 +1.958069123508821e-15 +30 +-734.28125 +11 +1530.451171875 +21 +2.3809079707781677e-15 +31 +-728.1875 +12 +1488.046875 +22 +1.8417884405097507e-15 +32 +-735.95703125 +13 +1488.046875 +23 +1.8417884405097507e-15 +33 +-735.95703125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +1399.7109375 +20 +8.784802312672424e-14 +30 +503.5234375 +11 +1936.576171875 +21 +1.9938477952008427e-15 +31 +-733.765625 +12 +1394.0625 +22 +8.38977325112733e-14 +32 +446.59375 +13 +1394.0625 +23 +8.38977325112733e-14 +33 +446.59375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +1399.7109375 +21 +8.784802312672424e-14 +31 +503.5234375 +12 +1417.0546875 +22 +9.104696163664272e-14 +32 +549.625 +13 +1417.0546875 +23 +9.104696163664272e-14 +33 +549.625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +1417.0546875 +21 +9.104696163664272e-14 +31 +549.625 +12 +1504.9453125 +22 +9.948259663966619e-14 +32 +671.1953125 +13 +1504.9453125 +23 +9.948259663966619e-14 +33 +671.1953125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +1504.9453125 +21 +9.948259663966619e-14 +31 +671.1953125 +12 +1551.392578125 +22 +1.0123249894605779e-13 +32 +696.4140625 +13 +1551.392578125 +23 +1.0123249894605779e-13 +33 +696.4140625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +1551.392578125 +21 +1.0123249894605779e-13 +31 +696.4140625 +12 +1716.1640625 +22 +1.0121135700369432e-13 +32 +696.109375 +13 +1716.1640625 +23 +1.0121135700369432e-13 +33 +696.109375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +1716.1640625 +21 +1.0121135700369432e-13 +31 +696.109375 +12 +1753.365234375 +22 +1.015520675363979e-13 +32 +701.01953125 +13 +1753.365234375 +23 +1.015520675363979e-13 +33 +701.01953125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +1753.365234375 +21 +1.015520675363979e-13 +31 +701.01953125 +12 +1898.255859375 +22 +1.0053969375783955e-13 +32 +686.4296875 +13 +1898.255859375 +23 +1.0053969375783955e-13 +33 +686.4296875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +1898.255859375 +21 +1.0053969375783955e-13 +31 +686.4296875 +12 +1928.478515625 +22 +1.0122274112650542e-13 +32 +696.2734375 +13 +1928.478515625 +23 +1.0122274112650542e-13 +33 +696.2734375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +1928.478515625 +21 +1.0122274112650542e-13 +31 +696.2734375 +12 +2010.345703125 +22 +1.0054132006109828e-13 +32 +686.453125 +13 +2010.345703125 +23 +1.0054132006109828e-13 +33 +686.453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +1936.576171875 +20 +1.9938477952008427e-15 +30 +-733.765625 +11 +2010.345703125 +21 +1.0054132006109828e-13 +31 +686.453125 +12 +2072.47265625 +22 +1.6263032587282567e-15 +32 +-739.0625 +13 +2072.47265625 +23 +1.6263032587282567e-15 +33 +-739.0625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +2072.47265625 +20 +1.6263032587282567e-15 +30 +-739.0625 +11 +2010.345703125 +21 +1.0054132006109828e-13 +31 +686.453125 +12 +2243.419921875 +22 +1.4522888100443332e-15 +32 +-741.5703125 +13 +2243.419921875 +23 +1.4522888100443332e-15 +33 +-741.5703125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +2243.419921875 +20 +1.4522888100443332e-15 +30 +-741.5703125 +11 +2010.345703125 +21 +1.0054132006109828e-13 +31 +686.453125 +12 +2415.9375 +22 +5.675798372961616e-16 +32 +-754.3203125 +13 +2415.9375 +23 +5.675798372961616e-16 +33 +-754.3203125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +2023.986328125 +20 +1.0102270582568185e-13 +30 +693.390625 +11 +2415.9375 +21 +5.675798372961616e-16 +31 +-754.3203125 +12 +2010.345703125 +22 +1.0054132006109828e-13 +32 +686.453125 +13 +2010.345703125 +23 +1.0054132006109828e-13 +33 +686.453125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +2415.9375 +20 +5.675798372961616e-16 +30 +-754.3203125 +11 +2023.986328125 +21 +1.0102270582568185e-13 +31 +693.390625 +12 +2142.52734375 +22 +1.0654075278254682e-13 +32 +772.9140625 +13 +2142.52734375 +23 +1.0654075278254682e-13 +33 +772.9140625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2415.9375 +20 +5.675798372961616e-16 +30 +-754.3203125 +11 +2142.52734375 +21 +1.0654075278254682e-13 +31 +772.9140625 +12 +2244.052734375 +22 +1.0950550362320843e-13 +32 +815.640625 +13 +2244.052734375 +23 +1.0950550362320843e-13 +33 +815.640625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2415.9375 +20 +5.675798372961616e-16 +30 +-754.3203125 +11 +2244.052734375 +21 +1.0950550362320843e-13 +31 +815.640625 +12 +2991.7353515625 +22 +4.592273826833915e-15 +32 +-696.318359375 +13 +2991.7353515625 +23 +4.592273826833915e-15 +33 +-696.318359375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2415.9375 +20 +5.675798372961616e-16 +30 +-754.3203125 +11 +2991.7353515625 +21 +4.592273826833915e-15 +31 +-696.318359375 +12 +2868.6328125 +22 +3.105426072541606e-15 +32 +-717.74609375 +13 +2868.6328125 +23 +3.105426072541606e-15 +33 +-717.74609375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2415.9375 +20 +5.675798372961616e-16 +30 +-754.3203125 +11 +2868.6328125 +21 +3.105426072541606e-15 +31 +-717.74609375 +12 +2746.62890625 +22 +1.4669255393728875e-15 +32 +-741.359375 +13 +2746.62890625 +23 +1.4669255393728875e-15 +33 +-741.359375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +2376.52734375 +20 +1.104764066686692e-13 +30 +829.6328125 +11 +2991.7353515625 +21 +4.592273826833915e-15 +31 +-696.318359375 +12 +2244.052734375 +22 +1.0950550362320843e-13 +32 +815.640625 +13 +2244.052734375 +23 +1.0950550362320843e-13 +33 +815.640625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +2991.7353515625 +20 +4.592273826833915e-15 +30 +-696.318359375 +11 +2376.52734375 +21 +1.104764066686692e-13 +31 +829.6328125 +12 +2425.658203125 +22 +1.1370136603072734e-13 +32 +876.109375 +13 +2425.658203125 +23 +1.1370136603072734e-13 +33 +876.109375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2991.7353515625 +20 +4.592273826833915e-15 +30 +-696.318359375 +11 +2425.658203125 +21 +1.1370136603072734e-13 +31 +876.109375 +12 +2462.208984375 +22 +1.1774760853844324e-13 +32 +934.421875 +13 +2462.208984375 +23 +1.1774760853844324e-13 +33 +934.421875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2991.7353515625 +20 +4.592273826833915e-15 +30 +-696.318359375 +11 +2462.208984375 +21 +1.1774760853844324e-13 +31 +934.421875 +12 +2467.541015625 +22 +1.1890878906517521e-13 +32 +951.15625 +13 +2467.541015625 +23 +1.1890878906517521e-13 +33 +951.15625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2991.7353515625 +20 +4.592273826833915e-15 +30 +-696.318359375 +11 +2467.541015625 +21 +1.1890878906517521e-13 +31 +951.15625 +12 +2520.75 +22 +1.2434877346562123e-13 +32 +1029.5546875 +13 +2520.75 +23 +1.2434877346562123e-13 +33 +1029.5546875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2991.7353515625 +20 +4.592273826833915e-15 +30 +-696.318359375 +11 +2520.75 +21 +1.2434877346562123e-13 +31 +1029.5546875 +12 +3437.982421875 +22 +1.1593915931473742e-14 +32 +-595.4140625 +13 +3437.982421875 +23 +1.1593915931473742e-14 +33 +-595.4140625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +2991.7353515625 +20 +4.592273826833915e-15 +30 +-696.318359375 +11 +3437.982421875 +21 +1.1593915931473742e-14 +31 +-595.4140625 +12 +3114.837890625 +22 +6.079121581126223e-15 +32 +-674.890625 +13 +3114.837890625 +23 +6.079121581126223e-15 +33 +-674.890625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +2544.99609375 +20 +1.2536196039580894e-13 +30 +1044.15625 +11 +3437.982421875 +21 +1.1593915931473742e-14 +31 +-595.4140625 +12 +2520.75 +22 +1.2434877346562123e-13 +32 +1029.5546875 +13 +2520.75 +23 +1.2434877346562123e-13 +33 +1029.5546875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +2544.99609375 +21 +1.2536196039580894e-13 +31 +1044.15625 +12 +2608.728515625 +22 +1.267117921005534e-13 +32 +1063.609375 +13 +2608.728515625 +23 +1.267117921005534e-13 +33 +1063.609375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +2608.728515625 +21 +1.267117921005534e-13 +31 +1063.609375 +12 +2748.861328125 +22 +1.2590351938096545e-13 +32 +1051.9609375 +13 +2748.861328125 +23 +1.2590351938096545e-13 +33 +1051.9609375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +2748.861328125 +21 +1.2590351938096545e-13 +31 +1051.9609375 +12 +2775.17578125 +22 +1.2588075113534325e-13 +32 +1051.6328125 +13 +2775.17578125 +23 +1.2588075113534325e-13 +33 +1051.6328125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +2775.17578125 +21 +1.2588075113534325e-13 +31 +1051.6328125 +12 +2871.55078125 +22 +1.2861456691326545e-13 +32 +1091.03125 +13 +2871.55078125 +23 +1.2861456691326545e-13 +33 +1091.03125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +2871.55078125 +21 +1.2861456691326545e-13 +31 +1091.03125 +12 +3054.92578125 +22 +1.3971896556386199e-13 +32 +1251.0625 +13 +3054.92578125 +23 +1.3971896556386199e-13 +33 +1251.0625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +3054.92578125 +21 +1.3971896556386199e-13 +31 +1251.0625 +12 +3096.50390625 +22 +1.4052723828344993e-13 +32 +1262.7109375 +13 +3096.50390625 +23 +1.4052723828344993e-13 +33 +1262.7109375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +3096.50390625 +21 +1.4052723828344993e-13 +31 +1262.7109375 +12 +3294.228515625 +22 +1.4057277477469432e-13 +32 +1263.3671875 +13 +3294.228515625 +23 +1.4057277477469432e-13 +33 +1263.3671875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +3294.228515625 +21 +1.4057277477469432e-13 +31 +1263.3671875 +12 +3380.175721042694 +22 +1.4057277477469432e-13 +32 +1263.3671875 +13 +3380.175721042694 +23 +1.4057277477469432e-13 +33 +1263.3671875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +3380.175721042694 +21 +1.4057277477469432e-13 +31 +1263.3671875 +12 +3391.025390625 +22 +1.4023125109036139e-13 +32 +1258.4453125 +13 +3391.025390625 +23 +1.4023125109036139e-13 +33 +1258.4453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +3391.025390625 +21 +1.4023125109036139e-13 +31 +1258.4453125 +12 +3392.9298188391676 +22 +1.401838317238979e-13 +32 +1257.761927408368 +13 +3392.9298188391676 +23 +1.401838317238979e-13 +33 +1257.761927408368 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +3392.9298188391676 +21 +1.401838317238979e-13 +31 +1257.761927408368 +12 +4018.76953125 +22 +1.2368036282628392e-14 +32 +-584.2578125 +13 +4018.76953125 +23 +1.2368036282628392e-14 +33 +-584.2578125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3437.982421875 +20 +1.1593915931473742e-14 +30 +-595.4140625 +11 +4018.76953125 +21 +1.2368036282628392e-14 +31 +-584.2578125 +12 +3826.8515625 +22 +1.154837944022935e-14 +32 +-596.0703125 +13 +3826.8515625 +23 +1.154837944022935e-14 +33 +-596.0703125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3826.8515625 +20 +1.154837944022935e-14 +30 +-596.0703125 +11 +4018.76953125 +21 +1.2368036282628392e-14 +31 +-584.2578125 +12 +3866.033203125 +22 +1.1601234296138019e-14 +32 +-595.30859375 +13 +3866.033203125 +23 +1.1601234296138019e-14 +33 +-595.30859375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3310.96875 +20 +1.4141519986271556e-13 +30 +1275.5078125 +11 +3380.175721042694 +21 +1.4057277477469432e-13 +31 +1263.3671875 +12 +3294.228515625 +22 +1.4057277477469432e-13 +32 +1263.3671875 +13 +3294.228515625 +23 +1.4057277477469432e-13 +33 +1263.3671875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3380.175721042694 +20 +1.4057277477469432e-13 +30 +1263.3671875 +11 +3310.96875 +21 +1.4141519986271556e-13 +31 +1275.5078125 +12 +3349.125 +22 +1.4155018303319e-13 +32 +1277.453125 +13 +3349.125 +23 +1.4155018303319e-13 +33 +1277.453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3349.125 +20 +1.4155018303319e-13 +30 +1277.453125 +11 +3310.96875 +21 +1.4141519986271556e-13 +31 +1275.5078125 +12 +3326.25 +22 +1.4882301120622277e-13 +32 +1382.265625 +13 +3326.25 +23 +1.4882301120622277e-13 +33 +1382.265625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3349.125 +20 +1.4155018303319e-13 +30 +1277.453125 +11 +3326.25 +21 +1.4882301120622277e-13 +31 +1382.265625 +12 +3341.40234375 +22 +1.4661774398738725e-13 +32 +1350.484375 +13 +3341.40234375 +23 +1.4661774398738725e-13 +33 +1350.484375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3341.40234375 +20 +1.4661774398738725e-13 +30 +1350.484375 +11 +3326.25 +21 +1.4882301120622277e-13 +31 +1382.265625 +12 +3338.203125 +22 +1.5346204125174512e-13 +32 +1449.12109375 +13 +3338.203125 +23 +1.5346204125174512e-13 +33 +1449.12109375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3351.111328125 +20 +1.5948505537044522e-13 +30 +1535.921875 +11 +3341.40234375 +21 +1.4661774398738725e-13 +31 +1350.484375 +12 +3338.203125 +22 +1.5346204125174512e-13 +32 +1449.12109375 +13 +3338.203125 +23 +1.5346204125174512e-13 +33 +1449.12109375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3341.40234375 +20 +1.4661774398738725e-13 +30 +1350.484375 +11 +3351.111328125 +21 +1.5948505537044522e-13 +31 +1535.921875 +12 +3364.67578125 +22 +1.5645850500595193e-13 +32 +1492.3046875 +13 +3364.67578125 +23 +1.5645850500595193e-13 +33 +1492.3046875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3364.67578125 +20 +1.5645850500595193e-13 +30 +1492.3046875 +11 +3351.111328125 +21 +1.5948505537044522e-13 +31 +1535.921875 +12 +3393.09375 +22 +1.738501920547919e-13 +32 +1742.9453125 +13 +3393.09375 +23 +1.738501920547919e-13 +33 +1742.9453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3364.67578125 +20 +1.5645850500595193e-13 +30 +1492.3046875 +11 +3393.09375 +21 +1.738501920547919e-13 +31 +1742.9453125 +12 +3470.677734375 +22 +1.8266068995895224e-13 +32 +1869.91796875 +13 +3470.677734375 +23 +1.8266068995895224e-13 +33 +1869.91796875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3470.677734375 +20 +1.8266068995895224e-13 +30 +1869.91796875 +11 +3393.09375 +21 +1.738501920547919e-13 +31 +1742.9453125 +12 +3450.919921875 +22 +1.8543760277323074e-13 +32 +1909.9375 +13 +3450.919921875 +23 +1.8543760277323074e-13 +33 +1909.9375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3470.677734375 +20 +1.8266068995895224e-13 +30 +1869.91796875 +11 +3450.919921875 +21 +1.8543760277323074e-13 +31 +1909.9375 +12 +3482.1328125 +22 +1.9784141772755115e-13 +32 +2088.6953125 +13 +3482.1328125 +23 +1.9784141772755115e-13 +33 +2088.6953125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3470.677734375 +20 +1.8266068995895224e-13 +30 +1869.91796875 +11 +3482.1328125 +21 +1.9784141772755115e-13 +31 +2088.6953125 +12 +3482.958984375 +22 +1.8594013048017777e-13 +32 +1917.1796875 +13 +3482.958984375 +23 +1.8594013048017777e-13 +33 +1917.1796875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3482.958984375 +20 +1.8594013048017777e-13 +30 +1917.1796875 +11 +3482.1328125 +21 +1.9784141772755115e-13 +31 +2088.6953125 +12 +3482.994140625 +22 +2.0051831289141786e-13 +32 +2127.2734375 +13 +3482.994140625 +23 +2.0051831289141786e-13 +33 +2127.2734375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3482.958984375 +20 +1.8594013048017777e-13 +30 +1917.1796875 +11 +3482.994140625 +21 +2.0051831289141786e-13 +31 +2127.2734375 +12 +3492.884765625 +22 +1.8934723580721347e-13 +32 +1966.28125 +13 +3492.884765625 +23 +1.8934723580721347e-13 +33 +1966.28125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3492.884765625 +20 +1.8934723580721347e-13 +30 +1966.28125 +11 +3482.994140625 +21 +2.0051831289141786e-13 +31 +2127.2734375 +12 +3497.19140625 +22 +2.083855549055158e-13 +32 +2240.65234375 +13 +3497.19140625 +23 +2.083855549055158e-13 +33 +2240.65234375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3492.884765625 +20 +1.8934723580721347e-13 +30 +1966.28125 +11 +3497.19140625 +21 +2.083855549055158e-13 +31 +2240.65234375 +12 +3496.482421875 +22 +1.914955824119935e-13 +32 +1997.2421875 +13 +3496.482421875 +23 +1.914955824119935e-13 +33 +1997.2421875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3496.482421875 +20 +1.914955824119935e-13 +30 +1997.2421875 +11 +3497.19140625 +21 +2.083855549055158e-13 +31 +2240.65234375 +12 +3502.93359375 +22 +1.9359188731249422e-13 +32 +2027.453125 +13 +3502.93359375 +23 +1.9359188731249422e-13 +33 +2027.453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3502.93359375 +20 +1.9359188731249422e-13 +30 +2027.453125 +11 +3497.19140625 +21 +2.083855549055158e-13 +31 +2240.65234375 +12 +3512.109375 +22 +2.0973050770048407e-13 +32 +2260.03515625 +13 +3512.109375 +23 +2.0973050770048407e-13 +33 +2260.03515625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3502.93359375 +20 +1.9359188731249422e-13 +30 +2027.453125 +11 +3512.109375 +21 +2.0973050770048407e-13 +31 +2260.03515625 +12 +3505.30078125 +22 +1.9475469414248492e-13 +32 +2044.2109375 +13 +3505.30078125 +23 +1.9475469414248492e-13 +33 +2044.2109375 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +3505.30078125 +20 +1.9475469414248492e-13 +30 +2044.2109375 +11 +3512.109375 +21 +2.0973050770048407e-13 +31 +2260.03515625 +12 +3510.234375 +22 +1.9475469414248492e-13 +32 +2044.2109375 +13 +3510.234375 +23 +1.9475469414248492e-13 +33 +2044.2109375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3510.234375 +20 +1.9475469414248492e-13 +30 +2044.2109375 +11 +3512.109375 +21 +2.0973050770048407e-13 +31 +2260.03515625 +12 +3520.23046875 +22 +2.0103710363095217e-13 +32 +2134.75 +13 +3520.23046875 +23 +2.0103710363095217e-13 +33 +2134.75 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3520.23046875 +20 +2.0103710363095217e-13 +30 +2134.75 +11 +3512.109375 +21 +2.0973050770048407e-13 +31 +2260.03515625 +12 +3529.60546875 +22 +2.099947819800274e-13 +32 +2263.84375 +13 +3529.60546875 +23 +2.099947819800274e-13 +33 +2263.84375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3520.23046875 +20 +2.0103710363095217e-13 +30 +2134.75 +11 +3529.60546875 +21 +2.099947819800274e-13 +31 +2263.84375 +12 +3535.5703125 +22 +2.0793588205447744e-13 +32 +2234.171875 +13 +3535.5703125 +23 +2.0793588205447744e-13 +33 +2234.171875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3535.5703125 +20 +2.0793588205447744e-13 +30 +2234.171875 +11 +3529.60546875 +21 +2.099947819800274e-13 +31 +2263.84375 +12 +3535.6171875 +22 +2.0929547157877426e-13 +32 +2253.765625 +13 +3535.6171875 +23 +2.0929547157877426e-13 +33 +2253.765625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3505.30078125 +20 +1.932950869677763e-13 +30 +2023.17578125 +11 +3502.93359375 +21 +1.9359188731249422e-13 +31 +2027.453125 +12 +3505.30078125 +22 +1.9475469414248492e-13 +32 +2044.2109375 +13 +3505.30078125 +23 +1.9475469414248492e-13 +33 +2044.2109375 +70 +2 + 0 +3DFACE + 8 +ship3 +10 +3840.15234375 +20 +1.3077917655063276e-13 +30 +1122.2265625 +11 +4233.10546875 +21 +1.4472797960074502e-13 +31 +1323.25 +12 +3839.58984375 +22 +1.1935195670317866e-13 +32 +957.54296875 +13 +3839.58984375 +23 +1.1935195670317866e-13 +33 +957.54296875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +4233.10546875 +20 +1.4472797960074502e-13 +30 +1323.25 +11 +3840.15234375 +21 +1.3077917655063276e-13 +31 +1122.2265625 +12 +3896.578125 +22 +1.3787067191031732e-13 +32 +1224.42578125 +13 +3896.578125 +23 +1.3787067191031732e-13 +33 +1224.42578125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4233.10546875 +20 +1.4472797960074502e-13 +30 +1323.25 +11 +3896.578125 +21 +1.3787067191031732e-13 +31 +1224.42578125 +12 +3939.298828125 +22 +1.4063620060178472e-13 +32 +1264.28125 +13 +3939.298828125 +23 +1.4063620060178472e-13 +33 +1264.28125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4233.10546875 +20 +1.4472797960074502e-13 +30 +1323.25 +11 +3939.298828125 +21 +1.4063620060178472e-13 +31 +1264.28125 +12 +4170.8671875 +22 +1.4423358341009163e-13 +32 +1316.125 +13 +4170.8671875 +23 +1.4423358341009163e-13 +33 +1316.125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4170.8671875 +20 +1.4423358341009163e-13 +30 +1316.125 +11 +3939.298828125 +21 +1.4063620060178472e-13 +31 +1264.28125 +12 +4015.76953125 +22 +1.43345621830826e-13 +32 +1303.328125 +13 +4015.76953125 +23 +1.43345621830826e-13 +33 +1303.328125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4170.8671875 +20 +1.4423358341009163e-13 +30 +1316.125 +11 +4015.76953125 +21 +1.43345621830826e-13 +31 +1303.328125 +12 +4087.88671875 +22 +1.4457348079116583e-13 +32 +1321.0234375 +13 +4087.88671875 +23 +1.4457348079116583e-13 +33 +1321.0234375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3391.025390625 +20 +1.4057277477469432e-13 +30 +1263.3671875 +11 +3391.025390625 +21 +1.4023125109036139e-13 +31 +1258.4453125 +12 +3380.175721042694 +22 +1.4057277477469432e-13 +32 +1263.3671875 +13 +3380.175721042694 +23 +1.4057277477469432e-13 +33 +1263.3671875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3391.025390625 +20 +1.4023125109036139e-13 +30 +1258.4453125 +11 +3391.025390625 +21 +1.4057277477469432e-13 +31 +1263.3671875 +12 +3392.9298188391676 +22 +1.401838317238979e-13 +32 +1257.761927408368 +13 +3392.9298188391676 +23 +1.401838317238979e-13 +33 +1257.761927408368 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3534.357421875 +20 +1.950157158155108e-13 +30 +2047.97265625 +11 +3523.060546875 +21 +1.9063445483649688e-13 +31 +1984.83203125 +12 +3523.060546875 +22 +1.9475469414248492e-13 +32 +2044.2109375 +13 +3523.060546875 +23 +1.9475469414248492e-13 +33 +2044.2109375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3523.060546875 +20 +1.9063445483649688e-13 +30 +1984.83203125 +11 +3522.275390625 +21 +1.880364353806785e-13 +31 +1947.390625 +12 +3521.982421875 +22 +1.9063445483649688e-13 +32 +1984.83203125 +13 +3521.982421875 +23 +1.9063445483649688e-13 +33 +1984.83203125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +3522.275390625 +20 +1.880364353806785e-13 +30 +1947.390625 +11 +3523.060546875 +21 +1.9063445483649688e-13 +31 +1984.83203125 +12 +3536.525390625 +22 +1.7973578354812947e-13 +32 +1827.765625 +13 +3536.525390625 +23 +1.7973578354812947e-13 +33 +1827.765625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3536.525390625 +20 +1.7973578354812947e-13 +30 +1827.765625 +11 +3523.060546875 +21 +1.9063445483649688e-13 +31 +1984.83203125 +12 +3534.357421875 +22 +1.950157158155108e-13 +32 +2047.97265625 +13 +3534.357421875 +23 +1.950157158155108e-13 +33 +2047.97265625 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +3536.525390625 +20 +1.7973578354812947e-13 +30 +1827.765625 +11 +3534.357421875 +21 +1.950157158155108e-13 +31 +2047.97265625 +12 +3548.267578125 +22 +1.9363417119722115e-13 +32 +2028.0625 +13 +3548.267578125 +23 +1.9363417119722115e-13 +33 +2028.0625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3536.525390625 +20 +1.7973578354812947e-13 +30 +1827.765625 +11 +3548.267578125 +21 +1.9363417119722115e-13 +31 +2028.0625 +12 +3562.6875 +22 +1.6861674816820438e-13 +32 +1667.5234375 +13 +3562.6875 +23 +1.6861674816820438e-13 +33 +1667.5234375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3562.6875 +20 +1.6861674816820438e-13 +30 +1667.5234375 +11 +3548.267578125 +21 +1.9363417119722115e-13 +31 +2028.0625 +12 +3563.82421875 +22 +1.8440571335556766e-13 +32 +1895.06640625 +13 +3563.82421875 +23 +1.8440571335556766e-13 +33 +1895.06640625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3562.6875 +20 +1.6861674816820438e-13 +30 +1667.5234375 +11 +3563.82421875 +21 +1.8440571335556766e-13 +31 +1895.06640625 +12 +3575.07421875 +22 +1.6533324188883203e-13 +32 +1620.203125 +13 +3575.07421875 +23 +1.6533324188883203e-13 +33 +1620.203125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3575.07421875 +20 +1.6533324188883203e-13 +30 +1620.203125 +11 +3563.82421875 +21 +1.8440571335556766e-13 +31 +1895.06640625 +12 +3585.92578125 +22 +1.7593186022596408e-13 +32 +1772.9453125 +13 +3585.92578125 +23 +1.7593186022596408e-13 +33 +1772.9453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3575.07421875 +20 +1.6533324188883203e-13 +30 +1620.203125 +11 +3585.92578125 +21 +1.7593186022596408e-13 +31 +1772.9453125 +12 +3605.42578125 +22 +1.5741639762534287e-13 +32 +1506.109375 +13 +3605.42578125 +23 +1.5741639762534287e-13 +33 +1506.109375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3605.42578125 +20 +1.5741639762534287e-13 +30 +1506.109375 +11 +3585.92578125 +21 +1.7593186022596408e-13 +31 +1772.9453125 +12 +3588.556640625 +22 +1.7509431404771902e-13 +32 +1760.875 +13 +3588.556640625 +23 +1.7509431404771902e-13 +33 +1760.875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3605.42578125 +20 +1.5741639762534287e-13 +30 +1506.109375 +11 +3588.556640625 +21 +1.7509431404771902e-13 +31 +1760.875 +12 +3602.40234375 +22 +1.6541862280991526e-13 +32 +1621.43359375 +13 +3602.40234375 +23 +1.6541862280991526e-13 +33 +1621.43359375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3605.42578125 +20 +1.5741639762534287e-13 +30 +1506.109375 +11 +3602.40234375 +21 +1.6541862280991526e-13 +31 +1621.43359375 +12 +3603.345703125 +22 +1.6292306045939675e-13 +32 +1585.46875 +13 +3603.345703125 +23 +1.6292306045939675e-13 +33 +1585.46875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3605.42578125 +20 +1.5741639762534287e-13 +30 +1506.109375 +11 +3603.345703125 +21 +1.6292306045939675e-13 +31 +1585.46875 +12 +3604.001953125 +22 +1.6293932349198403e-13 +32 +1585.703125 +13 +3604.001953125 +23 +1.6293932349198403e-13 +33 +1585.703125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3605.42578125 +20 +1.5741639762534287e-13 +30 +1506.109375 +11 +3604.001953125 +21 +1.6293932349198403e-13 +31 +1585.703125 +12 +3806.30859375 +22 +1.2223132662275704e-13 +32 +999.0390625 +13 +3806.30859375 +23 +1.2223132662275704e-13 +33 +999.0390625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3605.42578125 +20 +1.5741639762534287e-13 +30 +1506.109375 +11 +3806.30859375 +21 +1.2223132662275704e-13 +31 +999.0390625 +12 +3760.6640625 +22 +1.2617999093494925e-13 +32 +1055.9453125 +13 +3760.6640625 +23 +1.2617999093494925e-13 +33 +1055.9453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3760.6640625 +20 +1.2617999093494925e-13 +30 +1055.9453125 +11 +3806.30859375 +21 +1.2223132662275704e-13 +31 +999.0390625 +12 +3809.349609375 +22 +1.155634832619712e-13 +32 +902.9453125 +13 +3809.349609375 +23 +1.155634832619712e-13 +33 +902.9453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +3809.349609375 +20 +1.155634832619712e-13 +30 +902.9453125 +11 +3806.30859375 +21 +1.2223132662275704e-13 +31 +999.0390625 +12 +3839.58984375 +22 +1.1935195670317866e-13 +32 +957.54296875 +13 +3839.58984375 +23 +1.1935195670317866e-13 +33 +957.54296875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +3453.662109375 +20 +1.38671626265241e-13 +30 +1235.96875 +11 +4018.76953125 +21 +1.2368036282628392e-14 +31 +-584.2578125 +12 +3392.9298188391676 +22 +1.401838317238979e-13 +32 +1257.761927408368 +13 +3392.9298188391676 +23 +1.401838317238979e-13 +33 +1257.761927408368 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3453.662109375 +21 +1.38671626265241e-13 +31 +1235.96875 +12 +3561.052734375 +22 +1.3462863636404254e-13 +32 +1177.703125 +13 +3561.052734375 +23 +1.3462863636404254e-13 +33 +1177.703125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3561.052734375 +21 +1.3462863636404254e-13 +31 +1177.703125 +12 +3565.998046875 +22 +1.3341297467814317e-13 +32 +1160.18359375 +13 +3565.998046875 +23 +1.3341297467814317e-13 +33 +1160.18359375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3565.998046875 +21 +1.3341297467814317e-13 +31 +1160.18359375 +12 +3575.68359375 +22 +1.3454894750436486e-13 +32 +1176.5546875 +13 +3575.68359375 +23 +1.3454894750436486e-13 +33 +1176.5546875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3575.68359375 +21 +1.3454894750436486e-13 +31 +1176.5546875 +12 +3588.708984375 +22 +1.3739335190388058e-13 +32 +1217.546875 +13 +3588.708984375 +23 +1.3739335190388058e-13 +33 +1217.546875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3588.708984375 +21 +1.3739335190388058e-13 +31 +1217.546875 +12 +3614.349609375 +22 +1.3377320084995148e-13 +32 +1165.375 +13 +3614.349609375 +23 +1.3377320084995148e-13 +33 +1165.375 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +3614.349609375 +20 +1.3377320084995148e-13 +30 +1165.375 +11 +3588.708984375 +21 +1.3739335190388058e-13 +31 +1217.546875 +12 +3613.494140625 +22 +1.3604026759261867e-13 +32 +1198.046875 +13 +3613.494140625 +23 +1.3604026759261867e-13 +33 +1198.046875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3614.349609375 +21 +1.3377320084995148e-13 +31 +1165.375 +12 +3641.02734375 +22 +1.2900487969536023e-13 +32 +1096.65625 +13 +3641.02734375 +23 +1.2900487969536023e-13 +33 +1096.65625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3641.02734375 +21 +1.2900487969536023e-13 +31 +1096.65625 +12 +3809.349609375 +22 +1.155634832619712e-13 +32 +902.9453125 +13 +3809.349609375 +23 +1.155634832619712e-13 +33 +902.9453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3809.349609375 +21 +1.155634832619712e-13 +31 +902.9453125 +12 +3839.58984375 +22 +1.1935195670317866e-13 +32 +957.54296875 +13 +3839.58984375 +23 +1.1935195670317866e-13 +33 +957.54296875 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +3839.58984375 +21 +1.1935195670317866e-13 +31 +957.54296875 +12 +4233.10546875 +22 +1.4472797960074502e-13 +32 +1323.25 +13 +4233.10546875 +23 +1.4472797960074502e-13 +33 +1323.25 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4018.76953125 +20 +1.2368036282628392e-14 +30 +-584.2578125 +11 +4233.10546875 +21 +1.4472797960074502e-13 +31 +1323.25 +12 +4036.734375 +22 +6.027079876846919e-15 +32 +-675.640625 +13 +4036.734375 +23 +6.027079876846919e-15 +33 +-675.640625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4036.734375 +20 +6.027079876846919e-15 +30 +-675.640625 +11 +4233.10546875 +21 +1.4472797960074502e-13 +31 +1323.25 +12 +4075.119140625 +22 +3.2802536728548937e-15 +32 +-715.2265625 +13 +4075.119140625 +23 +3.2802536728548937e-15 +33 +-715.2265625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4075.119140625 +20 +3.2802536728548937e-15 +30 +-715.2265625 +11 +4233.10546875 +21 +1.4472797960074502e-13 +31 +1323.25 +12 +4212.01171875 +22 +8.424250880212369e-16 +32 +-750.359375 +13 +4212.01171875 +23 +8.424250880212369e-16 +33 +-750.359375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4212.01171875 +20 +8.424250880212369e-16 +30 +-750.359375 +11 +4233.10546875 +21 +1.4472797960074502e-13 +31 +1323.25 +12 +4295.923828125 +22 +0.0 +32 +-762.5 +13 +4295.923828125 +23 +0.0 +33 +-762.5 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4295.923828125 +20 +0.0 +30 +-762.5 +11 +4233.10546875 +21 +1.4472797960074502e-13 +31 +1323.25 +12 +4337.970703125 +22 +5.610746242612485e-16 +32 +-754.4140625 +13 +4337.970703125 +23 +5.610746242612485e-16 +33 +-754.4140625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4337.970703125 +20 +5.610746242612485e-16 +30 +-754.4140625 +11 +4233.10546875 +21 +1.4472797960074502e-13 +31 +1323.25 +12 +4563.650390625 +22 +1.3221845493460727e-15 +32 +-743.4453125 +13 +4563.650390625 +23 +1.3221845493460727e-15 +33 +-743.4453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4563.650390625 +20 +1.3221845493460727e-15 +30 +-743.4453125 +11 +4233.10546875 +21 +1.4472797960074502e-13 +31 +1323.25 +12 +4754.244140625 +22 +1.4100049253173985e-15 +32 +-742.1796875 +13 +4754.244140625 +23 +1.4100049253173985e-15 +33 +-742.1796875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +4465.587890625 +20 +1.623912592937926e-13 +30 +1577.8046875 +11 +4459.892578125 +21 +1.547996756820491e-13 +31 +1468.3984375 +12 +4458.580078125 +22 +1.7004138982285033e-13 +32 +1688.0546875 +13 +4458.580078125 +23 +1.7004138982285033e-13 +33 +1688.0546875 +70 +2 + 0 +3DFACE + 8 +ship3 +10 +4300.376953125 +20 +1.5049322465293669e-13 +30 +1406.3359375 +11 +4754.244140625 +21 +1.4100049253173985e-15 +31 +-742.1796875 +12 +4233.10546875 +22 +1.4472797960074502e-13 +32 +1323.25 +13 +4233.10546875 +23 +1.4472797960074502e-13 +33 +1323.25 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4300.376953125 +21 +1.5049322465293669e-13 +31 +1406.3359375 +12 +4328.220703125 +22 +1.5700494290088463e-13 +32 +1500.1796875 +13 +4328.220703125 +23 +1.5700494290088463e-13 +33 +1500.1796875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4328.220703125 +21 +1.5700494290088463e-13 +31 +1500.1796875 +12 +4363.869140625 +22 +1.7015848365747877e-13 +32 +1689.7421875 +13 +4363.869140625 +23 +1.7015848365747877e-13 +33 +1689.7421875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4363.869140625 +21 +1.7015848365747877e-13 +31 +1689.7421875 +12 +4367.642578125 +22 +1.741835842228312e-13 +32 +1747.75 +13 +4367.642578125 +23 +1.741835842228312e-13 +33 +1747.75 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4367.642578125 +21 +1.741835842228312e-13 +31 +1747.75 +12 +4395.814453125 +22 +1.7614490595285748e-13 +32 +1776.015625 +13 +4395.814453125 +23 +1.7614490595285748e-13 +33 +1776.015625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4395.814453125 +21 +1.7614490595285748e-13 +31 +1776.015625 +12 +4420.166015625 +22 +1.7533663323326953e-13 +32 +1764.3671875 +13 +4420.166015625 +23 +1.7533663323326953e-13 +33 +1764.3671875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4420.166015625 +21 +1.7533663323326953e-13 +31 +1764.3671875 +12 +4459.892578125 +22 +1.547996756820491e-13 +32 +1468.3984375 +13 +4459.892578125 +23 +1.547996756820491e-13 +33 +1468.3984375 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +4459.892578125 +20 +1.547996756820491e-13 +30 +1468.3984375 +11 +4420.166015625 +21 +1.7533663323326953e-13 +31 +1764.3671875 +12 +4458.580078125 +22 +1.7004138982285033e-13 +32 +1688.0546875 +13 +4458.580078125 +23 +1.7004138982285033e-13 +33 +1688.0546875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4459.892578125 +21 +1.547996756820491e-13 +31 +1468.3984375 +12 +4482.697265625 +22 +1.5246593050577406e-13 +32 +1434.765625 +13 +4482.697265625 +23 +1.5246593050577406e-13 +33 +1434.765625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4482.697265625 +21 +1.5246593050577406e-13 +31 +1434.765625 +12 +4621.751953125 +22 +1.459956829909237e-13 +32 +1341.51953125 +13 +4621.751953125 +23 +1.459956829909237e-13 +33 +1341.51953125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4621.751953125 +21 +1.459956829909237e-13 +31 +1341.51953125 +12 +4695.673828125 +22 +1.3722421636497284e-13 +32 +1215.109375 +13 +4695.673828125 +23 +1.3722421636497284e-13 +33 +1215.109375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4695.673828125 +21 +1.3722421636497284e-13 +31 +1215.109375 +12 +4697.712890625 +22 +1.354775666650987e-13 +32 +1189.9375 +13 +4697.712890625 +23 +1.354775666650987e-13 +33 +1189.9375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4697.712890625 +21 +1.354775666650987e-13 +31 +1189.9375 +12 +4742.126953125 +22 +1.3317390809911012e-13 +32 +1156.73828125 +13 +4742.126953125 +23 +1.3317390809911012e-13 +33 +1156.73828125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4754.244140625 +20 +1.4100049253173985e-15 +30 +-742.1796875 +11 +4742.126953125 +21 +1.3317390809911012e-13 +31 +1156.73828125 +12 +4946.595703125 +22 +2.3735896061138906e-15 +32 +-728.29296875 +13 +4946.595703125 +23 +2.3735896061138906e-15 +33 +-728.29296875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4946.595703125 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +4742.126953125 +21 +1.3317390809911012e-13 +31 +1156.73828125 +12 +5111.958984375 +22 +2.844404399515721e-15 +32 +-721.5078125 +13 +5111.958984375 +23 +2.844404399515721e-15 +33 +-721.5078125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +4862.267578125 +20 +1.3408057216585112e-13 +30 +1169.8046875 +11 +4868.642578125 +21 +1.2816408091059772e-13 +31 +1084.5390625 +12 +4867.892578125 +22 +1.2547254901740246e-13 +32 +1045.75 +13 +4867.892578125 +23 +1.2547254901740246e-13 +33 +1045.75 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +4868.642578125 +20 +1.2816408091059772e-13 +30 +1084.5390625 +11 +4862.267578125 +21 +1.3408057216585112e-13 +31 +1169.8046875 +12 +4879.705078125 +22 +1.333487356994234e-13 +32 +1159.2578125 +13 +4879.705078125 +23 +1.333487356994234e-13 +33 +1159.2578125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5036.666015625 +20 +1.3377807975972766e-13 +30 +1165.4453125 +11 +5027.783203125 +21 +1.1995450206053748e-13 +31 +966.2265625 +12 +5019.556640625 +22 +1.340943957435503e-13 +32 +1170.00390625 +13 +5019.556640625 +23 +1.340943957435503e-13 +33 +1170.00390625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5027.783203125 +20 +1.1995450206053748e-13 +30 +966.2265625 +11 +5036.666015625 +21 +1.3377807975972766e-13 +31 +1165.4453125 +12 +5048.244140625 +22 +1.2243298822683935e-13 +32 +1001.9453125 +13 +5048.244140625 +23 +1.2243298822683935e-13 +33 +1001.9453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5048.244140625 +20 +1.2243298822683935e-13 +30 +1001.9453125 +11 +5036.666015625 +21 +1.3377807975972766e-13 +31 +1165.4453125 +12 +5087.994140625 +22 +1.2657355632356149e-13 +32 +1061.6171875 +13 +5087.994140625 +23 +1.2657355632356149e-13 +33 +1061.6171875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5048.244140625 +20 +1.2243298822683935e-13 +30 +1001.9453125 +11 +5087.994140625 +21 +1.2657355632356149e-13 +31 +1061.6171875 +12 +5085.369140625 +22 +1.259409243559162e-13 +32 +1052.5 +13 +5085.369140625 +23 +1.259409243559162e-13 +33 +1052.5 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +4742.126953125 +20 +1.3317390809911012e-13 +30 +1156.73828125 +11 +4867.892578125 +21 +1.2547254901740246e-13 +31 +1045.75 +12 +5111.958984375 +22 +2.844404399515721e-15 +32 +-721.5078125 +13 +5111.958984375 +23 +2.844404399515721e-15 +33 +-721.5078125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +4867.892578125 +20 +1.2547254901740246e-13 +30 +1045.75 +11 +4742.126953125 +21 +1.3317390809911012e-13 +31 +1156.73828125 +12 +4862.267578125 +22 +1.3408057216585112e-13 +32 +1169.8046875 +13 +4862.267578125 +23 +1.3408057216585112e-13 +33 +1169.8046875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5111.958984375 +20 +2.844404399515721e-15 +30 +-721.5078125 +11 +4867.892578125 +21 +1.2547254901740246e-13 +31 +1045.75 +12 +4927.869140625 +22 +1.2958221735220876e-13 +32 +1104.9765625 +13 +4927.869140625 +23 +1.2958221735220876e-13 +33 +1104.9765625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5111.958984375 +20 +2.844404399515721e-15 +30 +-721.5078125 +11 +4927.869140625 +21 +1.2958221735220876e-13 +31 +1104.9765625 +12 +5027.783203125 +22 +1.1995450206053748e-13 +32 +966.2265625 +13 +5027.783203125 +23 +1.1995450206053748e-13 +33 +966.2265625 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +5027.783203125 +20 +1.1995450206053748e-13 +30 +966.2265625 +11 +4927.869140625 +21 +1.2958221735220876e-13 +31 +1104.9765625 +12 +5019.556640625 +22 +1.340943957435503e-13 +32 +1170.00390625 +13 +5019.556640625 +23 +1.340943957435503e-13 +33 +1170.00390625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5111.958984375 +20 +2.844404399515721e-15 +30 +-721.5078125 +11 +5027.783203125 +21 +1.1995450206053748e-13 +31 +966.2265625 +12 +5434.892578125 +22 +5.631888184975953e-15 +32 +-681.3359375 +13 +5434.892578125 +23 +5.631888184975953e-15 +33 +-681.3359375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5111.958984375 +20 +2.844404399515721e-15 +30 +-721.5078125 +11 +5434.892578125 +21 +5.631888184975953e-15 +31 +-681.3359375 +12 +5277.322265625 +22 +3.315219192917551e-15 +32 +-714.72265625 +13 +5277.322265625 +23 +3.315219192917551e-15 +33 +-714.72265625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5277.322265625 +20 +3.315219192917551e-15 +30 +-714.72265625 +11 +5434.892578125 +21 +5.631888184975953e-15 +31 +-681.3359375 +12 +5296.212890625 +22 +3.403852720518241e-15 +32 +-713.4453125 +13 +5296.212890625 +23 +3.403852720518241e-15 +33 +-713.4453125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5451.861328125 +20 +1.3483680318115976e-13 +30 +1180.703125 +11 +5383.400390625 +21 +1.1767930380157665e-13 +31 +933.4375 +12 +5367.134765625 +22 +1.3252745255376563e-13 +32 +1147.421875 +13 +5367.134765625 +23 +1.3252745255376563e-13 +33 +1147.421875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5383.400390625 +20 +1.1767930380157665e-13 +30 +933.4375 +11 +5451.861328125 +21 +1.3483680318115976e-13 +31 +1180.703125 +12 +5426.853515625 +22 +1.2053346602064474e-13 +32 +974.5703125 +13 +5426.853515625 +23 +1.2053346602064474e-13 +33 +974.5703125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5426.853515625 +20 +1.2053346602064474e-13 +30 +974.5703125 +11 +5451.861328125 +21 +1.3483680318115976e-13 +31 +1180.703125 +12 +5477.548828125 +22 +1.240072497812883e-13 +32 +1024.6328125 +13 +5477.548828125 +23 +1.240072497812883e-13 +33 +1024.6328125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5477.548828125 +20 +1.240072497812883e-13 +30 +1024.6328125 +11 +5451.861328125 +21 +1.3483680318115976e-13 +31 +1180.703125 +12 +5465.314453125 +22 +1.3423100521728348e-13 +32 +1171.97265625 +13 +5465.314453125 +23 +1.3423100521728348e-13 +33 +1171.97265625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5477.548828125 +20 +1.240072497812883e-13 +30 +1024.6328125 +11 +5465.314453125 +21 +1.3423100521728348e-13 +31 +1171.97265625 +12 +5498.126953125 +22 +1.2974159507156413e-13 +32 +1107.2734375 +13 +5498.126953125 +23 +1.2974159507156413e-13 +33 +1107.2734375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5063.431640625 +20 +1.1949263193505866e-13 +30 +959.5703125 +11 +5434.892578125 +21 +5.631888184975953e-15 +31 +-681.3359375 +12 +5027.783203125 +22 +1.1995450206053748e-13 +32 +966.2265625 +13 +5027.783203125 +23 +1.1995450206053748e-13 +33 +966.2265625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5434.892578125 +20 +5.631888184975953e-15 +30 +-681.3359375 +11 +5063.431640625 +21 +1.1949263193505866e-13 +31 +959.5703125 +12 +5190.603515625 +22 +1.2138402262495962e-13 +32 +986.828125 +13 +5190.603515625 +23 +1.2138402262495962e-13 +33 +986.828125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5434.892578125 +20 +5.631888184975953e-15 +30 +-681.3359375 +11 +5190.603515625 +21 +1.2138402262495962e-13 +31 +986.828125 +12 +5293.400390625 +22 +1.2737532383011452e-13 +32 +1073.171875 +13 +5293.400390625 +23 +1.2737532383011452e-13 +33 +1073.171875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5434.892578125 +20 +5.631888184975953e-15 +30 +-681.3359375 +11 +5293.400390625 +21 +1.2737532383011452e-13 +31 +1073.171875 +12 +5367.134765625 +22 +1.3252745255376563e-13 +32 +1147.421875 +13 +5367.134765625 +23 +1.3252745255376563e-13 +33 +1147.421875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5434.892578125 +20 +5.631888184975953e-15 +30 +-681.3359375 +11 +5367.134765625 +21 +1.3252745255376563e-13 +31 +1147.421875 +12 +5383.400390625 +22 +1.1767930380157665e-13 +32 +933.4375 +13 +5383.400390625 +23 +1.1767930380157665e-13 +33 +933.4375 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +5434.892578125 +20 +5.631888184975953e-15 +30 +-681.3359375 +11 +5383.400390625 +21 +1.1767930380157665e-13 +31 +933.4375 +12 +5394.580078125 +22 +1.1165385022798846e-13 +32 +846.6015625 +13 +5394.580078125 +23 +1.1165385022798846e-13 +33 +846.6015625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5434.892578125 +20 +5.631888184975953e-15 +30 +-681.3359375 +11 +5394.580078125 +21 +1.1165385022798846e-13 +31 +846.6015625 +12 +5406.111328125 +22 +1.1039834411225025e-13 +32 +828.5078125 +13 +5406.111328125 +23 +1.1039834411225025e-13 +33 +828.5078125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5434.892578125 +20 +5.631888184975953e-15 +30 +-681.3359375 +11 +5406.111328125 +21 +1.1039834411225025e-13 +31 +828.5078125 +12 +5625.134765625 +22 +4.098284211995207e-15 +32 +-703.4375 +13 +5625.134765625 +23 +4.098284211995207e-15 +33 +-703.4375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5625.134765625 +20 +4.098284211995207e-15 +30 +-703.4375 +11 +5406.111328125 +21 +1.1039834411225025e-13 +31 +828.5078125 +12 +5872.962890625 +22 +1.5368565794982025e-15 +32 +-740.3515625 +13 +5872.962890625 +23 +1.5368565794982025e-15 +33 +-740.3515625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5830.423828125 +20 +1.1485278873790694e-13 +30 +892.703125 +11 +5776.541015625 +21 +1.0952501926231317e-13 +31 +815.921875 +12 +5775.706477050341 +22 +1.0987827545937493e-13 +32 +821.0128333278517 +13 +5775.706477050341 +23 +1.0987827545937493e-13 +33 +821.0128333278517 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5776.541015625 +20 +1.0952501926231317e-13 +30 +815.921875 +11 +5830.423828125 +21 +1.1485278873790694e-13 +31 +892.703125 +12 +5817.134765625 +22 +1.092908315930563e-13 +32 +812.546875 +13 +5817.134765625 +23 +1.092908315930563e-13 +33 +812.546875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5512.611328125 +20 +1.094632197384815e-13 +30 +815.03125 +11 +5872.962890625 +21 +1.5368565794982025e-15 +31 +-740.3515625 +12 +5406.111328125 +22 +1.1039834411225025e-13 +32 +828.5078125 +13 +5406.111328125 +23 +1.1039834411225025e-13 +33 +828.5078125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5512.611328125 +21 +1.094632197384815e-13 +31 +815.03125 +12 +5618.876953125 +22 +1.0943069367330693e-13 +32 +814.5625 +13 +5618.876953125 +23 +1.0943069367330693e-13 +33 +814.5625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5618.876953125 +21 +1.0943069367330693e-13 +31 +814.5625 +12 +5675.572265625 +22 +1.0778406162384457e-13 +32 +790.83203125 +13 +5675.572265625 +23 +1.0778406162384457e-13 +33 +790.83203125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5675.572265625 +21 +1.0778406162384457e-13 +31 +790.83203125 +12 +5702.759765625 +22 +1.083638387355812e-13 +32 +799.1875 +13 +5702.759765625 +23 +1.083638387355812e-13 +33 +799.1875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5702.759765625 +21 +1.083638387355812e-13 +31 +799.1875 +12 +5761.212890625 +22 +1.0856062142988732e-13 +32 +802.0234375 +13 +5761.212890625 +23 +1.0856062142988732e-13 +33 +802.0234375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5761.212890625 +21 +1.0856062142988732e-13 +31 +802.0234375 +12 +5776.541015625 +22 +1.0952501926231317e-13 +32 +815.921875 +13 +5776.541015625 +23 +1.0952501926231317e-13 +33 +815.921875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5776.541015625 +21 +1.0952501926231317e-13 +31 +815.921875 +12 +5817.134765625 +22 +1.092908315930563e-13 +32 +812.546875 +13 +5817.134765625 +23 +1.092908315930563e-13 +33 +812.546875 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5817.134765625 +21 +1.092908315930563e-13 +31 +812.546875 +12 +5827.048828125 +22 +1.0883058777083621e-13 +32 +805.9140625 +13 +5827.048828125 +23 +1.0883058777083621e-13 +33 +805.9140625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5827.048828125 +21 +1.0883058777083621e-13 +31 +805.9140625 +12 +5929.072265625 +22 +1.0939328869835618e-13 +32 +814.0234375 +13 +5929.072265625 +23 +1.0939328869835618e-13 +33 +814.0234375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5872.962890625 +20 +1.5368565794982025e-15 +30 +-740.3515625 +11 +5929.072265625 +21 +1.0939328869835618e-13 +31 +814.0234375 +12 +5953.236328125 +22 +2.3735896061138906e-15 +32 +-728.29296875 +13 +5953.236328125 +23 +2.3735896061138906e-15 +33 +-728.29296875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5953.236328125 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +5929.072265625 +21 +1.0939328869835618e-13 +31 +814.0234375 +12 +6098.876953125 +22 +1.06695251592126e-13 +32 +775.140625 +13 +6098.876953125 +23 +1.06695251592126e-13 +33 +775.140625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5953.236328125 +20 +2.3735896061138906e-15 +30 +-728.29296875 +11 +6098.876953125 +21 +1.06695251592126e-13 +31 +775.140625 +12 +6159.158203125 +22 +3.1599072317090027e-15 +32 +-716.9609375 +13 +6159.158203125 +23 +3.1599072317090027e-15 +33 +-716.9609375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6159.158203125 +20 +3.1599072317090027e-15 +30 +-716.9609375 +11 +6098.876953125 +21 +1.06695251592126e-13 +31 +775.140625 +12 +6489.462890625 +22 +4.2869353900076845e-15 +32 +-700.71875 +13 +6489.462890625 +23 +4.2869353900076845e-15 +33 +-700.71875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6159.158203125 +20 +3.1599072317090027e-15 +30 +-716.9609375 +11 +6489.462890625 +21 +4.2869353900076845e-15 +31 +-700.71875 +12 +6323.408203125 +22 +3.270495853302524e-15 +32 +-715.3671875 +13 +6323.408203125 +23 +3.270495853302524e-15 +33 +-715.3671875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5686.541015625 +20 +1.4015969374697734e-13 +30 +1257.4140625 +11 +5670.931640625 +21 +1.2962287493367697e-13 +31 +1105.5625 +12 +5632.330078125 +22 +1.3212819510374785e-13 +32 +1141.66796875 +13 +5632.330078125 +23 +1.3212819510374785e-13 +33 +1141.66796875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5670.931640625 +20 +1.2962287493367697e-13 +30 +1105.5625 +11 +5686.541015625 +21 +1.4015969374697734e-13 +31 +1257.4140625 +12 +5718.251953125 +22 +1.3974092065785482e-13 +32 +1251.37890625 +13 +5718.251953125 +23 +1.3974092065785482e-13 +33 +1251.37890625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5718.251953125 +20 +1.3974092065785482e-13 +30 +1251.37890625 +11 +5686.541015625 +21 +1.4015969374697734e-13 +31 +1257.4140625 +12 +5738.595703125 +22 +1.429943403269407e-13 +32 +1298.265625 +13 +5738.595703125 +23 +1.429943403269407e-13 +33 +1298.265625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5619.955078125 +20 +1.1556673586848865e-13 +30 +902.9921875 +11 +5675.572265625 +21 +1.0778406162384457e-13 +31 +790.83203125 +12 +5618.876953125 +22 +1.0943069367330693e-13 +32 +814.5625 +13 +5618.876953125 +23 +1.0943069367330693e-13 +33 +814.5625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5675.572265625 +20 +1.0778406162384457e-13 +30 +790.83203125 +11 +5619.955078125 +21 +1.1556673586848865e-13 +31 +902.9921875 +12 +5632.330078125 +22 +1.3212819510374785e-13 +32 +1141.66796875 +13 +5632.330078125 +23 +1.3212819510374785e-13 +33 +1141.66796875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5675.572265625 +20 +1.0778406162384457e-13 +30 +790.83203125 +11 +5632.330078125 +21 +1.3212819510374785e-13 +31 +1141.66796875 +12 +5671.798828125 +22 +1.0995680277750552e-13 +32 +822.14453125 +13 +5671.798828125 +23 +1.0995680277750552e-13 +33 +822.14453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5671.798828125 +20 +1.0995680277750552e-13 +30 +822.14453125 +11 +5632.330078125 +21 +1.3212819510374785e-13 +31 +1141.66796875 +12 +5670.931640625 +22 +1.2962287493367697e-13 +32 +1105.5625 +13 +5670.931640625 +23 +1.2962287493367697e-13 +33 +1105.5625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5831.830078125 +20 +1.2872515553485897e-13 +30 +1092.625 +11 +5755.048828125 +21 +1.1862255969163904e-13 +31 +947.03125 +12 +5749.072265625 +22 +1.237576122310735e-13 +32 +1021.03515625 +13 +5749.072265625 +23 +1.237576122310735e-13 +33 +1021.03515625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5755.048828125 +20 +1.1862255969163904e-13 +30 +947.03125 +11 +5831.830078125 +21 +1.2872515553485897e-13 +31 +1092.625 +12 +5775.706477050341 +22 +1.0987827545937493e-13 +32 +821.0128333278517 +13 +5775.706477050341 +23 +1.0987827545937493e-13 +33 +821.0128333278517 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5775.706477050341 +20 +1.0987827545937493e-13 +30 +821.0128333278517 +11 +5831.830078125 +21 +1.2872515553485897e-13 +31 +1092.625 +12 +5830.423828125 +22 +1.1485278873790694e-13 +32 +892.703125 +13 +5830.423828125 +23 +1.1485278873790694e-13 +33 +892.703125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5830.423828125 +20 +1.1485278873790694e-13 +30 +892.703125 +11 +5831.830078125 +21 +1.2872515553485897e-13 +31 +1092.625 +12 +5848.166015625 +22 +1.1660106474103982e-13 +32 +917.8984375 +13 +5848.166015625 +23 +1.1660106474103982e-13 +33 +917.8984375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5848.166015625 +20 +1.1660106474103982e-13 +30 +917.8984375 +11 +5831.830078125 +21 +1.2872515553485897e-13 +31 +1092.625 +12 +5855.197265625 +22 +1.305108365129426e-13 +32 +1118.359375 +13 +5855.197265625 +23 +1.305108365129426e-13 +33 +1118.359375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5848.166015625 +20 +1.1660106474103982e-13 +30 +917.8984375 +11 +5855.197265625 +21 +1.305108365129426e-13 +31 +1118.359375 +12 +5883.275390625 +22 +1.229534052696324e-13 +32 +1009.4453125 +13 +5883.275390625 +23 +1.229534052696324e-13 +33 +1009.4453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5883.275390625 +20 +1.229534052696324e-13 +30 +1009.4453125 +11 +5855.197265625 +21 +1.305108365129426e-13 +31 +1118.359375 +12 +5895.345703125 +22 +1.4309029221920566e-13 +32 +1299.6484375 +13 +5895.345703125 +23 +1.4309029221920566e-13 +33 +1299.6484375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +5883.275390625 +20 +1.229534052696324e-13 +30 +1009.4453125 +11 +5895.345703125 +21 +1.4309029221920566e-13 +31 +1299.6484375 +12 +5895.228515625 +22 +1.3310479021061417e-13 +32 +1155.7421875 +13 +5895.228515625 +23 +1.3310479021061417e-13 +33 +1155.7421875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5895.228515625 +20 +1.3310479021061417e-13 +30 +1155.7421875 +11 +5895.345703125 +21 +1.4309029221920566e-13 +31 +1299.6484375 +12 +5934.744140625 +22 +1.4248368110370002e-13 +32 +1290.90625 +13 +5934.744140625 +23 +1.4248368110370002e-13 +33 +1290.90625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +5934.744140625 +20 +1.4248368110370002e-13 +30 +1290.90625 +11 +5895.345703125 +21 +1.4309029221920566e-13 +31 +1299.6484375 +12 +5923.212890625 +22 +1.4416934443137186e-13 +32 +1315.19921875 +13 +5923.212890625 +23 +1.4416934443137186e-13 +33 +1315.19921875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5776.541015625 +20 +1.0952501926231317e-13 +30 +815.921875 +11 +5761.212890625 +21 +1.0856062142988732e-13 +31 +802.0234375 +12 +5775.706477050341 +22 +1.0987827545937493e-13 +32 +821.0128333278517 +13 +5775.706477050341 +23 +1.0987827545937493e-13 +33 +821.0128333278517 +70 +0 + 0 +3DFACE + 8 +ship3 +10 +5980.189453125 +20 +1.2032204659701007e-13 +30 +971.5234375 +11 +5962.587890625 +21 +1.1635142719082503e-13 +31 +914.30078125 +12 +5962.330078125 +22 +1.185534418031431e-13 +32 +946.03515625 +13 +5962.330078125 +23 +1.185534418031431e-13 +33 +946.03515625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5962.587890625 +20 +1.1635142719082503e-13 +30 +914.30078125 +11 +5980.189453125 +21 +1.2032204659701007e-13 +31 +971.5234375 +12 +5974.447265625 +22 +1.1254425126214218e-13 +32 +859.43359375 +13 +5974.447265625 +23 +1.1254425126214218e-13 +33 +859.43359375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6071.689453125 +20 +1.2507085211249658e-13 +30 +1039.9609375 +11 +6067.541015625 +21 +1.0985190621731755e-13 +31 +820.6328125 +12 +6027.884765625 +22 +1.207814772676008e-13 +32 +978.14453125 +13 +6027.884765625 +23 +1.207814772676008e-13 +33 +978.14453125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6067.541015625 +20 +1.0985190621731755e-13 +30 +820.6328125 +11 +6071.689453125 +21 +1.2507085211249658e-13 +31 +1039.9609375 +12 +6079.611328125 +22 +1.1084720381165925e-13 +32 +834.9765625 +13 +6079.611328125 +23 +1.1084720381165925e-13 +33 +834.9765625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6079.611328125 +20 +1.1084720381165925e-13 +30 +834.9765625 +11 +6071.689453125 +21 +1.2507085211249658e-13 +31 +1039.9609375 +12 +6133.025390625 +22 +1.2375192016966796e-13 +32 +1020.953125 +13 +6133.025390625 +23 +1.2375192016966796e-13 +33 +1020.953125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6079.611328125 +20 +1.1084720381165925e-13 +30 +834.9765625 +11 +6133.025390625 +21 +1.2375192016966796e-13 +31 +1020.953125 +12 +6112.541015625 +22 +1.1489507262263388e-13 +32 +893.3125 +13 +6112.541015625 +23 +1.1489507262263388e-13 +33 +893.3125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6112.541015625 +20 +1.1489507262263388e-13 +30 +893.3125 +11 +6133.025390625 +21 +1.2375192016966796e-13 +31 +1020.953125 +12 +6153.134765625 +22 +1.214840402753714e-13 +32 +988.26953125 +13 +6153.134765625 +23 +1.214840402753714e-13 +33 +988.26953125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5974.447265625 +20 +1.1254425126214218e-13 +30 +859.43359375 +11 +6098.876953125 +21 +1.06695251592126e-13 +31 +775.140625 +12 +5929.072265625 +22 +1.0939328869835618e-13 +32 +814.0234375 +13 +5929.072265625 +23 +1.0939328869835618e-13 +33 +814.0234375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +6098.876953125 +20 +1.06695251592126e-13 +30 +775.140625 +11 +5974.447265625 +21 +1.1254425126214218e-13 +31 +859.43359375 +12 +6067.541015625 +22 +1.0985190621731755e-13 +32 +820.6328125 +13 +6067.541015625 +23 +1.0985190621731755e-13 +33 +820.6328125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6067.541015625 +20 +1.0985190621731755e-13 +30 +820.6328125 +11 +5974.447265625 +21 +1.1254425126214218e-13 +31 +859.43359375 +12 +5980.189453125 +22 +1.2032204659701007e-13 +32 +971.5234375 +13 +5980.189453125 +23 +1.2032204659701007e-13 +33 +971.5234375 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +6067.541015625 +20 +1.0985190621731755e-13 +30 +820.6328125 +11 +5980.189453125 +21 +1.2032204659701007e-13 +31 +971.5234375 +12 +6011.173828125 +22 +1.167149059691508e-13 +32 +919.5390625 +13 +6011.173828125 +23 +1.167149059691508e-13 +33 +919.5390625 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +6011.173828125 +20 +1.167149059691508e-13 +30 +919.5390625 +11 +5980.189453125 +21 +1.2032204659701007e-13 +31 +971.5234375 +12 +6000.533203125 +22 +1.1879006892728805e-13 +32 +949.4453125 +13 +6000.533203125 +23 +1.1879006892728805e-13 +33 +949.4453125 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +6067.541015625 +20 +1.0985190621731755e-13 +30 +820.6328125 +11 +6011.173828125 +21 +1.167149059691508e-13 +31 +919.5390625 +12 +6027.884765625 +22 +1.207814772676008e-13 +32 +978.14453125 +13 +6027.884765625 +23 +1.207814772676008e-13 +33 +978.14453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6230.173828125 +20 +1.2509849926789496e-13 +30 +1040.359375 +11 +6198.673828125 +21 +1.2471143909231763e-13 +31 +1034.78125 +12 +6185.689453125 +22 +1.2584497246365123e-13 +32 +1051.1171875 +13 +6185.689453125 +23 +1.2584497246365123e-13 +33 +1051.1171875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +6198.673828125 +20 +1.2471143909231763e-13 +30 +1034.78125 +11 +6230.173828125 +21 +1.2509849926789496e-13 +31 +1040.359375 +12 +6206.455078125 +22 +1.2310790407921157e-13 +32 +1011.671875 +13 +6206.455078125 +23 +1.2310790407921157e-13 +33 +1011.671875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6206.455078125 +20 +1.2310790407921157e-13 +30 +1011.671875 +11 +6230.173828125 +21 +1.2509849926789496e-13 +31 +1040.359375 +12 +6214.822265625 +22 +1.1754757323761966e-13 +32 +931.5390625 +13 +6214.822265625 +23 +1.1754757323761966e-13 +33 +931.5390625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6125.220703125 +20 +1.06686306924203e-13 +30 +775.01171875 +11 +6489.462890625 +21 +4.2869353900076845e-15 +31 +-700.71875 +12 +6098.876953125 +22 +1.06695251592126e-13 +32 +775.140625 +13 +6098.876953125 +23 +1.06695251592126e-13 +33 +775.140625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +6489.462890625 +20 +4.2869353900076845e-15 +30 +-700.71875 +11 +6125.220703125 +21 +1.06686306924203e-13 +31 +775.01171875 +12 +6186.205078125 +22 +1.1014220134900055e-13 +32 +824.81640625 +13 +6186.205078125 +23 +1.1014220134900055e-13 +33 +824.81640625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6489.462890625 +20 +4.2869353900076845e-15 +30 +-700.71875 +11 +6186.205078125 +21 +1.1014220134900055e-13 +31 +824.81640625 +12 +6214.822265625 +22 +1.1754757323761966e-13 +32 +931.5390625 +13 +6214.822265625 +23 +1.1754757323761966e-13 +33 +931.5390625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6489.462890625 +20 +4.2869353900076845e-15 +30 +-700.71875 +11 +6214.822265625 +21 +1.1754757323761966e-13 +31 +931.5390625 +12 +6230.173828125 +22 +1.2509849926789496e-13 +32 +1040.359375 +13 +6230.173828125 +23 +1.2509849926789496e-13 +33 +1040.359375 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +6489.462890625 +20 +4.2869353900076845e-15 +30 +-700.71875 +11 +6230.173828125 +21 +1.2509849926789496e-13 +31 +1040.359375 +12 +6280.376953125 +22 +1.245650717990321e-13 +32 +1032.671875 +13 +6280.376953125 +23 +1.245650717990321e-13 +33 +1032.671875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6489.462890625 +20 +4.2869353900076845e-15 +30 +-700.71875 +11 +6280.376953125 +21 +1.245650717990321e-13 +31 +1032.671875 +12 +6371.361328125 +22 +1.2592628762658764e-13 +32 +1052.2890625 +13 +6371.361328125 +23 +1.2592628762658764e-13 +33 +1052.2890625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6489.462890625 +20 +4.2869353900076845e-15 +30 +-700.71875 +11 +6371.361328125 +21 +1.2592628762658764e-13 +31 +1052.2890625 +12 +6471.275390625 +22 +1.2695085867958644e-13 +32 +1067.0546875 +13 +6471.275390625 +23 +1.2695085867958644e-13 +33 +1067.0546875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6489.462890625 +20 +4.2869353900076845e-15 +30 +-700.71875 +11 +6471.275390625 +21 +1.2695085867958644e-13 +31 +1067.0546875 +12 +6564.509765625 +22 +1.2886989652488579e-13 +32 +1094.7109375 +13 +6564.509765625 +23 +1.2886989652488579e-13 +33 +1094.7109375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6489.462890625 +20 +4.2869353900076845e-15 +30 +-700.71875 +11 +6564.509765625 +21 +1.2886989652488579e-13 +31 +1094.7109375 +12 +6600.955078125 +22 +4.37069000783219e-15 +32 +-699.51171875 +13 +6600.955078125 +23 +4.37069000783219e-15 +33 +-699.51171875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6600.955078125 +20 +4.37069000783219e-15 +30 +-699.51171875 +11 +6564.509765625 +21 +1.2886989652488579e-13 +31 +1094.7109375 +12 +6579.978515625 +22 +1.2951228631208345e-13 +32 +1103.96875 +13 +6579.978515625 +23 +1.2951228631208345e-13 +33 +1103.96875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6600.955078125 +20 +4.37069000783219e-15 +30 +-699.51171875 +11 +6579.978515625 +21 +1.2951228631208345e-13 +31 +1103.96875 +12 +6660.298828125 +22 +1.3051571542271878e-13 +32 +1118.4296875 +13 +6660.298828125 +23 +1.3051571542271878e-13 +33 +1118.4296875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6600.955078125 +20 +4.37069000783219e-15 +30 +-699.51171875 +11 +6660.298828125 +21 +1.3051571542271878e-13 +31 +1118.4296875 +12 +6668.994140625 +22 +7.209402345942362e-15 +32 +-658.6015625 +13 +6668.994140625 +23 +7.209402345942362e-15 +33 +-658.6015625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6668.994140625 +20 +7.209402345942362e-15 +30 +-658.6015625 +11 +6660.298828125 +21 +1.3051571542271878e-13 +31 +1118.4296875 +12 +6702.884765625 +22 +1.2882761264015885e-13 +32 +1094.1015625 +13 +6702.884765625 +23 +1.2882761264015885e-13 +33 +1094.1015625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6668.994140625 +20 +7.209402345942362e-15 +30 +-658.6015625 +11 +6702.884765625 +21 +1.2882761264015885e-13 +31 +1094.1015625 +12 +6898.189453125 +22 +1.0768404397343279e-13 +32 +789.390625 +13 +6898.189453125 +23 +1.0768404397343279e-13 +33 +789.390625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6898.189453125 +20 +1.0768404397343279e-13 +30 +789.390625 +11 +6702.884765625 +21 +1.2882761264015885e-13 +31 +1094.1015625 +12 +6810.650390625 +22 +1.187933215338055e-13 +32 +949.4921875 +13 +6810.650390625 +23 +1.187933215338055e-13 +33 +949.4921875 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +6810.650390625 +20 +1.187933215338055e-13 +30 +949.4921875 +11 +6702.884765625 +21 +1.2882761264015885e-13 +31 +1094.1015625 +12 +6790.845703125 +22 +1.2270945978082315e-13 +32 +1005.9296875 +13 +6790.845703125 +23 +1.2270945978082315e-13 +33 +1005.9296875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6810.650390625 +20 +1.187933215338055e-13 +30 +949.4921875 +11 +6790.845703125 +21 +1.2270945978082315e-13 +31 +1005.9296875 +12 +6805.048828125 +22 +1.208766160082364e-13 +32 +979.515625 +13 +6805.048828125 +23 +1.208766160082364e-13 +33 +979.515625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +6898.189453125 +20 +1.0768404397343279e-13 +30 +789.390625 +11 +6810.650390625 +21 +1.187933215338055e-13 +31 +949.4921875 +12 +6849.767578125 +22 +1.1770451150208694e-13 +32 +933.80078125 +13 +6849.767578125 +23 +1.1770451150208694e-13 +33 +933.80078125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6898.189453125 +20 +1.0768404397343279e-13 +30 +789.390625 +11 +6849.767578125 +21 +1.1770451150208694e-13 +31 +933.80078125 +12 +6895.587890625 +22 +1.1760449385167515e-13 +32 +932.359375 +13 +6895.587890625 +23 +1.1760449385167515e-13 +33 +932.359375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6898.189453125 +20 +1.0768404397343279e-13 +30 +789.390625 +11 +6895.587890625 +21 +1.1760449385167515e-13 +31 +932.359375 +12 +6913.986328125 +22 +1.154252474849793e-13 +32 +900.953125 +13 +6913.986328125 +23 +1.154252474849793e-13 +33 +900.953125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6898.189453125 +20 +1.0768404397343279e-13 +30 +789.390625 +11 +6913.986328125 +21 +1.154252474849793e-13 +31 +900.953125 +12 +6910.400390625 +22 +1.1142779407502523e-13 +32 +843.34375 +13 +6910.400390625 +23 +1.1142779407502523e-13 +33 +843.34375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5965.564453125 +20 +1.4713978733343902e-13 +30 +1358.0078125 +11 +5954.876953125 +21 +1.4608919542830057e-13 +31 +1342.8671875 +12 +5949.017578125 +22 +1.472219156480048e-13 +32 +1359.19140625 +13 +5949.017578125 +23 +1.472219156480048e-13 +33 +1359.19140625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +5954.876953125 +20 +1.4608919542830057e-13 +30 +1342.8671875 +11 +5965.564453125 +21 +1.4713978733343902e-13 +31 +1358.0078125 +12 +6016.494140625 +22 +1.4014749647253688e-13 +32 +1257.23828125 +13 +6016.494140625 +23 +1.4014749647253688e-13 +33 +1257.23828125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6016.494140625 +20 +1.4014749647253688e-13 +30 +1257.23828125 +11 +5965.564453125 +21 +1.4713978733343902e-13 +31 +1358.0078125 +12 +5977.470703125 +22 +1.46954388761944e-13 +32 +1355.3359375 +13 +5977.470703125 +23 +1.46954388761944e-13 +33 +1355.3359375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6016.494140625 +20 +1.4014749647253688e-13 +30 +1257.23828125 +11 +5977.470703125 +21 +1.46954388761944e-13 +31 +1355.3359375 +12 +6035.080078125 +22 +1.457257166499748e-13 +32 +1337.62890625 +13 +6035.080078125 +23 +1.457257166499748e-13 +33 +1337.62890625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6016.494140625 +20 +1.4014749647253688e-13 +30 +1257.23828125 +11 +6035.080078125 +21 +1.457257166499748e-13 +31 +1337.62890625 +12 +6028.330078125 +22 +1.373315523800489e-13 +32 +1216.65625 +13 +6028.330078125 +23 +1.373315523800489e-13 +33 +1216.65625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6028.330078125 +20 +1.373315523800489e-13 +30 +1216.65625 +11 +6035.080078125 +21 +1.457257166499748e-13 +31 +1337.62890625 +12 +6093.603515625 +22 +1.2921304651247745e-13 +32 +1099.65625 +13 +6093.603515625 +23 +1.2921304651247745e-13 +33 +1099.65625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6093.603515625 +20 +1.2921304651247745e-13 +30 +1099.65625 +11 +6035.080078125 +21 +1.457257166499748e-13 +31 +1337.62890625 +12 +6053.548828125 +22 +1.4128997451179348e-13 +32 +1273.703125 +13 +6053.548828125 +23 +1.4128997451179348e-13 +33 +1273.703125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6093.603515625 +20 +1.2921304651247745e-13 +30 +1099.65625 +11 +6053.548828125 +21 +1.4128997451179348e-13 +31 +1273.703125 +12 +6083.408203125 +22 +1.3345119280472328e-13 +32 +1160.734375 +13 +6083.408203125 +23 +1.3345119280472328e-13 +33 +1160.734375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6093.603515625 +20 +1.2921304651247745e-13 +30 +1099.65625 +11 +6083.408203125 +21 +1.3345119280472328e-13 +31 +1160.734375 +12 +6147.978515625 +22 +1.289943087241785e-13 +32 +1096.50390625 +13 +6147.978515625 +23 +1.289943087241785e-13 +33 +1096.50390625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +6093.603515625 +20 +1.2921304651247745e-13 +30 +1099.65625 +11 +6147.978515625 +21 +1.289943087241785e-13 +31 +1096.50390625 +12 +6185.689453125 +22 +1.2584497246365123e-13 +32 +1051.1171875 +13 +6185.689453125 +23 +1.2584497246365123e-13 +33 +1051.1171875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6185.689453125 +20 +1.2584497246365123e-13 +30 +1051.1171875 +11 +6147.978515625 +21 +1.289943087241785e-13 +31 +1096.50390625 +12 +6230.173828125 +22 +1.2509849926789496e-13 +32 +1040.359375 +13 +6230.173828125 +23 +1.2509849926789496e-13 +33 +1040.359375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +6898.189453125 +20 +1.0768404397343279e-13 +30 +789.390625 +11 +6706.611328125 +21 +7.065474507544911e-15 +31 +-660.67578125 +12 +6668.994140625 +22 +7.209402345942362e-15 +32 +-658.6015625 +13 +6668.994140625 +23 +7.209402345942362e-15 +33 +-658.6015625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +6706.611328125 +20 +7.065474507544911e-15 +30 +-660.67578125 +11 +6898.189453125 +21 +1.0768404397343279e-13 +31 +789.390625 +12 +6833.455078125 +22 +5.104965929147998e-15 +32 +-688.9296875 +13 +6833.455078125 +23 +5.104965929147998e-15 +33 +-688.9296875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +6833.455078125 +20 +5.104965929147998e-15 +30 +-688.9296875 +11 +6898.189453125 +21 +1.0768404397343279e-13 +31 +789.390625 +12 +7019.314453125 +22 +5.88152573519074e-15 +32 +-677.73828125 +13 +7019.314453125 +23 +5.88152573519074e-15 +33 +-677.73828125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +7019.314453125 +20 +5.88152573519074e-15 +30 +-677.73828125 +11 +6898.189453125 +21 +1.0768404397343279e-13 +31 +789.390625 +12 +6978.439453125 +22 +1.0448022655373812e-13 +32 +743.21875 +13 +6978.439453125 +23 +1.0448022655373812e-13 +33 +743.21875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7019.314453125 +20 +5.88152573519074e-15 +30 +-677.73828125 +11 +6978.439453125 +21 +1.0448022655373812e-13 +31 +743.21875 +12 +7631.173828125 +22 +1.0610002459943146e-14 +32 +-609.59375 +13 +7631.173828125 +23 +1.0610002459943146e-14 +33 +-609.59375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7019.314453125 +20 +5.88152573519074e-15 +30 +-677.73828125 +11 +7631.173828125 +21 +1.0610002459943146e-14 +31 +-609.59375 +12 +7481.619140625 +22 +7.007740741860058e-15 +32 +-661.5078125 +13 +7481.619140625 +23 +7.007740741860058e-15 +33 +-661.5078125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +7481.619140625 +20 +7.007740741860058e-15 +30 +-661.5078125 +11 +7631.173828125 +21 +1.0610002459943146e-14 +31 +-609.59375 +12 +7608.345703125 +22 +1.0053806745458083e-14 +32 +-617.609375 +13 +7608.345703125 +23 +1.0053806745458083e-14 +33 +-617.609375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7481.619140625 +20 +7.007740741860058e-15 +30 +-661.5078125 +11 +7608.345703125 +21 +1.0053806745458083e-14 +31 +-617.609375 +12 +7568.126953125 +22 +7.964007057992273e-15 +32 +-647.7265625 +13 +7568.126953125 +23 +7.964007057992273e-15 +33 +-647.7265625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +7503.931640625 +20 +1.1410143663237449e-13 +30 +881.875 +11 +7514.666015625 +21 +1.0485671575813371e-13 +31 +748.64453125 +12 +7477.095703125 +22 +1.0572109594014778e-13 +32 +761.1015625 +13 +7477.095703125 +23 +1.0572109594014778e-13 +33 +761.1015625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +7514.666015625 +20 +1.0485671575813371e-13 +30 +748.64453125 +11 +7503.931640625 +21 +1.1410143663237449e-13 +31 +881.875 +12 +7518.416015625 +22 +1.1967803050655368e-13 +32 +962.2421875 +13 +7518.416015625 +23 +1.1967803050655368e-13 +33 +962.2421875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7514.666015625 +20 +1.0485671575813371e-13 +30 +748.64453125 +11 +7518.416015625 +21 +1.1967803050655368e-13 +31 +962.2421875 +12 +7531.658203125 +22 +1.1311752316084389e-13 +32 +867.6953125 +13 +7531.658203125 +23 +1.1311752316084389e-13 +33 +867.6953125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +7531.658203125 +20 +1.1311752316084389e-13 +30 +867.6953125 +11 +7518.416015625 +21 +1.1967803050655368e-13 +31 +962.2421875 +12 +7541.876953125 +22 +1.218174324434107e-13 +32 +993.07421875 +13 +7541.876953125 +23 +1.218174324434107e-13 +33 +993.07421875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +7980.814453125 +20 +1.0394192017509907e-13 +30 +735.4609375 +11 +8364.134765625 +21 +2.2229126091927176e-14 +31 +-442.14453125 +12 +7631.173828125 +22 +1.0610002459943146e-14 +32 +-609.59375 +13 +7631.173828125 +23 +1.0610002459943146e-14 +33 +-609.59375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +8364.134765625 +20 +2.2229126091927176e-14 +30 +-442.14453125 +11 +7980.814453125 +21 +1.0394192017509907e-13 +31 +735.4609375 +12 +8441.126953125 +22 +5.582448565910614e-14 +32 +42.015625 +13 +8441.126953125 +23 +5.582448565910614e-14 +33 +42.015625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +8364.134765625 +20 +2.2229126091927176e-14 +30 +-442.14453125 +11 +8441.126953125 +21 +5.582448565910614e-14 +31 +42.015625 +12 +8392.048828125 +22 +2.6903121657512186e-14 +32 +-374.78515625 +13 +8392.048828125 +23 +2.6903121657512186e-14 +33 +-374.78515625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8392.048828125 +20 +2.6903121657512186e-14 +30 +-374.78515625 +11 +8441.126953125 +21 +5.582448565910614e-14 +31 +42.015625 +12 +8433.111328125 +22 +4.7155476138455166e-14 +32 +-82.91796875 +13 +8433.111328125 +23 +4.7155476138455166e-14 +33 +-82.91796875 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +8392.048828125 +20 +2.6903121657512186e-14 +30 +-374.78515625 +11 +8433.111328125 +21 +4.7155476138455166e-14 +31 +-82.91796875 +12 +8426.970703125 +22 +3.596894917329285e-14 +32 +-244.1328125 +13 +8426.970703125 +23 +3.596894917329285e-14 +33 +-244.1328125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8433.111328125 +20 +4.7155476138455166e-14 +30 +-82.91796875 +11 +8441.126953125 +21 +5.582448565910614e-14 +31 +42.015625 +12 +8450.853515625 +22 +5.489911910488976e-14 +32 +28.6796875 +13 +8450.853515625 +23 +5.489911910488976e-14 +33 +28.6796875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +8433.111328125 +20 +4.7155476138455166e-14 +30 +-82.91796875 +11 +8442.345703125 +21 +3.874342253268326e-14 +31 +-204.1484375 +12 +8426.970703125 +22 +3.596894917329285e-14 +32 +-244.1328125 +13 +8426.970703125 +23 +3.596894917329285e-14 +33 +-244.1328125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +8442.345703125 +20 +3.874342253268326e-14 +30 +-204.1484375 +11 +8433.111328125 +21 +4.7155476138455166e-14 +31 +-82.91796875 +12 +8435.994140625 +22 +4.632362202161566e-14 +32 +-94.90625 +13 +8435.994140625 +23 +4.632362202161566e-14 +33 +-94.90625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +7103.408203125 +20 +1.0787350830307463e-13 +30 +792.12109375 +11 +7631.173828125 +21 +1.0610002459943146e-14 +31 +-609.59375 +12 +6978.439453125 +22 +1.0448022655373812e-13 +32 +743.21875 +13 +6978.439453125 +23 +1.0448022655373812e-13 +33 +743.21875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7103.408203125 +21 +1.0787350830307463e-13 +31 +792.12109375 +12 +7145.501953125 +22 +1.0850370081583183e-13 +32 +801.203125 +13 +7145.501953125 +23 +1.0850370081583183e-13 +33 +801.203125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7145.501953125 +21 +1.0850370081583183e-13 +31 +801.203125 +12 +7277.314453125 +22 +1.0852646906145402e-13 +32 +801.53125 +13 +7277.314453125 +23 +1.0852646906145402e-13 +33 +801.53125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7277.314453125 +21 +1.0852646906145402e-13 +31 +801.53125 +12 +7409.619140625 +22 +1.0638462766970891e-13 +32 +770.6640625 +13 +7409.619140625 +23 +1.0638462766970891e-13 +33 +770.6640625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7409.619140625 +21 +1.0638462766970891e-13 +31 +770.6640625 +12 +7460.056640625 +22 +1.0491282322055984e-13 +32 +749.453125 +13 +7460.056640625 +23 +1.0491282322055984e-13 +33 +749.453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7460.056640625 +21 +1.0491282322055984e-13 +31 +749.453125 +12 +7477.095703125 +22 +1.0572109594014778e-13 +32 +761.1015625 +13 +7477.095703125 +23 +1.0572109594014778e-13 +33 +761.1015625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7477.095703125 +21 +1.0572109594014778e-13 +31 +761.1015625 +12 +7514.666015625 +22 +1.0485671575813371e-13 +32 +748.64453125 +13 +7514.666015625 +23 +1.0485671575813371e-13 +33 +748.64453125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7514.666015625 +21 +1.0485671575813371e-13 +31 +748.64453125 +12 +7593.884765625 +22 +1.0480223459896632e-13 +32 +747.859375 +13 +7593.884765625 +23 +1.0480223459896632e-13 +33 +747.859375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7593.884765625 +21 +1.0480223459896632e-13 +31 +747.859375 +12 +7944.533203125 +22 +1.0394761223650462e-13 +32 +735.54296875 +13 +7944.533203125 +23 +1.0394761223650462e-13 +33 +735.54296875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7631.173828125 +20 +1.0610002459943146e-14 +30 +-609.59375 +11 +7944.533203125 +21 +1.0394761223650462e-13 +31 +735.54296875 +12 +7980.814453125 +22 +1.0394192017509907e-13 +32 +735.4609375 +13 +7980.814453125 +23 +1.0394192017509907e-13 +33 +735.4609375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +8454.322265625 +20 +7.908956692684321e-14 +30 +377.30078125 +11 +8438.900390625 +21 +5.876402879925746e-14 +31 +84.37890625 +12 +8360.736328125 +22 +8.659739592076221e-14 +32 +485.5 +13 +8360.736328125 +23 +8.659739592076221e-14 +33 +485.5 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8438.900390625 +20 +5.876402879925746e-14 +30 +84.37890625 +11 +8454.322265625 +21 +7.908956692684321e-14 +31 +377.30078125 +12 +8467.541015625 +22 +6.384703963441263e-14 +32 +157.6328125 +13 +8467.541015625 +23 +6.384703963441263e-14 +33 +157.6328125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8467.541015625 +20 +6.384703963441263e-14 +30 +157.6328125 +11 +8454.322265625 +21 +7.908956692684321e-14 +31 +377.30078125 +12 +8508.158203125 +22 +7.652407353619939e-14 +32 +340.328125 +13 +8508.158203125 +23 +7.652407353619939e-14 +33 +340.328125 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +8467.541015625 +20 +6.384703963441263e-14 +30 +157.6328125 +11 +8508.158203125 +21 +7.652407353619939e-14 +31 +340.328125 +12 +8522.525390625 +22 +7.012700966799179e-14 +32 +248.13671875 +13 +8522.525390625 +23 +7.012700966799179e-14 +33 +248.13671875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8522.525390625 +20 +7.012700966799179e-14 +30 +248.13671875 +11 +8508.158203125 +21 +7.652407353619939e-14 +31 +340.328125 +12 +8526.861328125 +22 +7.637445363639639e-14 +32 +338.171875 +13 +8526.861328125 +23 +7.637445363639639e-14 +33 +338.171875 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +7820.783203125 +20 +1.1489507262263388e-13 +30 +893.3125 +11 +7808.009765625 +21 +1.1054633770879452e-13 +31 +830.640625 +12 +7807.939453125 +22 +1.1373551839916063e-13 +32 +876.6015625 +13 +7807.939453125 +23 +1.1373551839916063e-13 +33 +876.6015625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +7808.009765625 +20 +1.1054633770879452e-13 +30 +830.640625 +11 +7820.783203125 +21 +1.1489507262263388e-13 +31 +893.3125 +12 +7821.791015625 +22 +1.0946159343522277e-13 +32 +815.0078125 +13 +7821.791015625 +23 +1.0946159343522277e-13 +33 +815.0078125 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +7821.791015625 +20 +1.0946159343522277e-13 +30 +815.0078125 +11 +7820.783203125 +21 +1.1489507262263388e-13 +31 +893.3125 +12 +7915.189453125 +22 +1.1681085786141576e-13 +32 +920.921875 +13 +7915.189453125 +23 +1.1681085786141576e-13 +33 +920.921875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7821.791015625 +20 +1.0946159343522277e-13 +30 +815.0078125 +11 +7915.189453125 +21 +1.1681085786141576e-13 +31 +920.921875 +12 +7862.197265625 +22 +1.0857200555269841e-13 +32 +802.1875 +13 +7862.197265625 +23 +1.0857200555269841e-13 +33 +802.1875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +7862.197265625 +20 +1.0857200555269841e-13 +30 +802.1875 +11 +7915.189453125 +21 +1.1681085786141576e-13 +31 +920.921875 +12 +7980.814453125 +22 +1.0394192017509907e-13 +32 +735.4609375 +13 +7980.814453125 +23 +1.0394192017509907e-13 +33 +735.4609375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +7980.814453125 +20 +1.0394192017509907e-13 +30 +735.4609375 +11 +7915.189453125 +21 +1.1681085786141576e-13 +31 +920.921875 +12 +8066.712890625 +22 +1.1674092682129045e-13 +32 +919.9140625 +13 +8066.712890625 +23 +1.1674092682129045e-13 +33 +919.9140625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +7980.814453125 +20 +1.0394192017509907e-13 +30 +735.4609375 +11 +8066.712890625 +21 +1.1674092682129045e-13 +31 +919.9140625 +12 +8441.126953125 +22 +5.582448565910614e-14 +32 +42.015625 +13 +8441.126953125 +23 +5.582448565910614e-14 +33 +42.015625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8441.126953125 +20 +5.582448565910614e-14 +30 +42.015625 +11 +8066.712890625 +21 +1.1674092682129045e-13 +31 +919.9140625 +12 +8167.306640625 +22 +1.1602535338745001e-13 +32 +909.6015625 +13 +8167.306640625 +23 +1.1602535338745001e-13 +33 +909.6015625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +8441.126953125 +20 +5.582448565910614e-14 +30 +42.015625 +11 +8167.306640625 +21 +1.1602535338745001e-13 +31 +909.6015625 +12 +8214.697265625 +22 +1.1340212623112134e-13 +32 +871.796875 +13 +8214.697265625 +23 +1.1340212623112134e-13 +33 +871.796875 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +8441.126953125 +20 +5.582448565910614e-14 +30 +42.015625 +11 +8214.697265625 +21 +1.1340212623112134e-13 +31 +871.796875 +12 +8307.650390625 +22 +9.394015513392029e-14 +32 +591.3203125 +13 +8307.650390625 +23 +9.394015513392029e-14 +33 +591.3203125 +70 +15 + 0 +3DFACE + 8 +ship3 +10 +8307.650390625 +20 +9.394015513392029e-14 +30 +591.3203125 +11 +8214.697265625 +21 +1.1340212623112134e-13 +31 +871.796875 +12 +8302.212890625 +22 +1.0023882765497483e-13 +32 +682.09375 +13 +8302.212890625 +23 +1.0023882765497483e-13 +33 +682.09375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8302.212890625 +20 +1.0023882765497483e-13 +30 +682.09375 +11 +8214.697265625 +21 +1.1340212623112134e-13 +31 +871.796875 +12 +8301.251953125 +22 +1.0215136028723926e-13 +32 +709.65625 +13 +8301.251953125 +23 +1.0215136028723926e-13 +33 +709.65625 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +8441.126953125 +20 +5.582448565910614e-14 +30 +42.015625 +11 +8307.650390625 +21 +9.394015513392029e-14 +31 +591.3203125 +12 +8336.056640625 +22 +8.830826694894434e-14 +32 +510.15625 +13 +8336.056640625 +23 +8.830826694894434e-14 +33 +510.15625 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +8441.126953125 +20 +5.582448565910614e-14 +30 +42.015625 +11 +8336.056640625 +21 +8.830826694894434e-14 +31 +510.15625 +12 +8360.736328125 +22 +8.659739592076221e-14 +32 +485.5 +13 +8360.736328125 +23 +8.659739592076221e-14 +33 +485.5 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +8441.126953125 +20 +5.582448565910614e-14 +30 +42.015625 +11 +8360.736328125 +21 +8.659739592076221e-14 +31 +485.5 +12 +8438.900390625 +22 +5.876402879925746e-14 +32 +84.37890625 +13 +8438.900390625 +23 +5.876402879925746e-14 +33 +84.37890625 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8364.134765625 +20 +2.2229126091927176e-14 +30 +-442.14453125 +11 +7810.587890625 +21 +1.1389001720873981e-14 +31 +-598.3671875 +12 +7631.173828125 +22 +1.0610002459943146e-14 +32 +-609.59375 +13 +7631.173828125 +23 +1.0610002459943146e-14 +33 +-609.59375 +70 +1 + 0 +3DFACE + 8 +ship3 +10 +7810.587890625 +20 +1.1389001720873981e-14 +30 +-598.3671875 +11 +8364.134765625 +21 +2.2229126091927176e-14 +31 +-442.14453125 +12 +8021.150390625 +22 +1.1512600768537329e-14 +32 +-596.5859375 +13 +8021.150390625 +23 +1.1512600768537329e-14 +33 +-596.5859375 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8021.150390625 +20 +1.1512600768537329e-14 +30 +-596.5859375 +11 +8364.134765625 +21 +2.2229126091927176e-14 +31 +-442.14453125 +12 +8233.283203125 +22 +1.2494887936809196e-14 +32 +-582.4296875 +13 +8233.283203125 +23 +1.2494887936809196e-14 +33 +-582.4296875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8233.283203125 +20 +1.2494887936809196e-14 +30 +-582.4296875 +11 +8364.134765625 +21 +2.2229126091927176e-14 +31 +-442.14453125 +12 +8305.681640625 +22 +1.2489195875403647e-14 +32 +-582.51171875 +13 +8305.681640625 +23 +1.2489195875403647e-14 +33 +-582.51171875 +70 +3 + 0 +3DFACE + 8 +ship3 +10 +8305.681640625 +20 +1.2489195875403647e-14 +30 +-582.51171875 +11 +8364.134765625 +21 +2.2229126091927176e-14 +31 +-442.14453125 +12 +8370.884765625 +22 +1.8468299806118083e-14 +32 +-496.34375 +13 +8370.884765625 +23 +1.8468299806118083e-14 +33 +-496.34375 +70 +13 + 0 +3DFACE + 8 +ship3 +10 +8305.681640625 +20 +1.2489195875403647e-14 +30 +-582.51171875 +11 +8370.884765625 +21 +1.8468299806118083e-14 +31 +-496.34375 +12 +8387.408203125 +22 +1.3008799766567325e-14 +32 +-575.0234375 +13 +8387.408203125 +23 +1.3008799766567325e-14 +33 +-575.0234375 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2331.0584563925167 +20 +7.363034515030426e-14 +30 +-268.24057302868596 +11 +700.505859375 +21 +7.840169485850979e-14 +31 +-199.47817697131404 +12 +1864.236328125 +22 +1.119913623642832e-13 +32 +284.59994802868596 +13 +1864.236328125 +23 +1.119913623642832e-13 +33 +284.59994802868596 +70 +0 + 0 +3DFACE + 8 +ship2 +10 +66.111328125 +20 +9.34303632724176e-14 +30 +17.107760528685958 +11 +5.126953125 +21 +8.912553854656391e-14 +31 +-44.93130197131404 +12 +-7.740234375 +22 +8.981346482500596e-14 +32 +-35.01723947131404 +13 +-7.740234375 +23 +8.981346482500596e-14 +33 +-35.01723947131404 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5.126953125 +20 +8.912553854656391e-14 +30 +-44.93130197131404 +11 +66.111328125 +21 +9.34303632724176e-14 +31 +17.107760528685958 +12 +446.619140625 +22 +8.256665750411285e-14 +32 +-139.45473947131404 +13 +446.619140625 +23 +8.256665750411285e-14 +33 +-139.45473947131404 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +446.619140625 +20 +8.256665750411285e-14 +30 +-139.45473947131404 +11 +66.111328125 +21 +9.34303632724176e-14 +31 +17.107760528685958 +12 +94.939453125 +22 +9.419472580401989e-14 +32 +28.123385528685958 +13 +94.939453125 +23 +9.419472580401989e-14 +33 +28.123385528685958 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +446.619140625 +20 +8.256665750411285e-14 +30 +-139.45473947131404 +11 +94.939453125 +21 +9.419472580401989e-14 +31 +28.123385528685958 +12 +293.431640625 +22 +9.700172522858486e-14 +32 +68.57651052868596 +13 +293.431640625 +23 +9.700172522858486e-14 +33 +68.57651052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +446.619140625 +20 +8.256665750411285e-14 +30 +-139.45473947131404 +11 +293.431640625 +21 +9.700172522858486e-14 +31 +68.57651052868596 +12 +310.025390625 +22 +9.70098567448785e-14 +32 +68.69369802868596 +13 +310.025390625 +23 +9.70098567448785e-14 +33 +68.69369802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +446.619140625 +20 +8.256665750411285e-14 +30 +-139.45473947131404 +11 +310.025390625 +21 +9.70098567448785e-14 +31 +68.69369802868596 +12 +387.814453125 +22 +9.596414374951623e-14 +32 +53.62338552868596 +13 +387.814453125 +23 +9.596414374951623e-14 +33 +53.62338552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +446.619140625 +20 +8.256665750411285e-14 +30 +-139.45473947131404 +11 +387.814453125 +21 +9.596414374951623e-14 +31 +53.62338552868596 +12 +392.994140625 +22 +9.569905631834352e-14 +32 +49.80307302868596 +13 +392.994140625 +23 +9.569905631834352e-14 +33 +49.80307302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +446.619140625 +20 +8.256665750411285e-14 +30 +-139.45473947131404 +11 +392.994140625 +21 +9.569905631834352e-14 +31 +49.80307302868596 +12 +700.505859375 +22 +7.840169485850979e-14 +32 +-199.47817697131404 +13 +700.505859375 +23 +7.840169485850979e-14 +33 +-199.47817697131404 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +446.619140625 +20 +8.256665750411285e-14 +30 +-139.45473947131404 +11 +700.505859375 +21 +7.840169485850979e-14 +31 +-199.47817697131404 +12 +482.173828125 +22 +8.169170635091705e-14 +32 +-152.06411447131404 +13 +482.173828125 +23 +8.169170635091705e-14 +33 +-152.06411447131404 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +472.728515625 +20 +1.0123174000453705e-13 +30 +129.53744802868596 +11 +700.505859375 +21 +7.840169485850979e-14 +31 +-199.47817697131404 +12 +392.994140625 +22 +9.569905631834352e-14 +32 +49.80307302868596 +13 +392.994140625 +23 +9.569905631834352e-14 +33 +49.80307302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +700.505859375 +20 +7.840169485850979e-14 +30 +-199.47817697131404 +11 +472.728515625 +21 +1.0123174000453705e-13 +31 +129.53744802868596 +12 +975.181640625 +22 +1.0497223749961204e-13 +32 +183.44369802868596 +13 +975.181640625 +23 +1.0497223749961204e-13 +33 +183.44369802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +700.505859375 +20 +7.840169485850979e-14 +30 +-199.47817697131404 +11 +975.181640625 +21 +1.0497223749961204e-13 +31 +183.44369802868596 +12 +1864.236328125 +22 +1.119913623642832e-13 +32 +284.59994802868596 +13 +1864.236328125 +23 +1.119913623642832e-13 +33 +284.59994802868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +1864.236328125 +20 +1.119913623642832e-13 +30 +284.59994802868596 +11 +975.181640625 +21 +1.0497223749961204e-13 +31 +183.44369802868596 +12 +985.259765625 +22 +1.0549753345218127e-13 +32 +191.01401052868596 +13 +985.259765625 +23 +1.0549753345218127e-13 +33 +191.01401052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1864.236328125 +20 +1.119913623642832e-13 +30 +284.59994802868596 +11 +985.259765625 +21 +1.0549753345218127e-13 +31 +191.01401052868596 +12 +1157.935546875 +22 +1.0952751292730989e-13 +32 +249.09213552868596 +13 +1157.935546875 +23 +1.0952751292730989e-13 +33 +249.09213552868596 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +1157.935546875 +20 +1.0952751292730989e-13 +30 +249.09213552868596 +11 +985.259765625 +21 +1.0549753345218127e-13 +31 +191.01401052868596 +12 +1050.064453125 +22 +1.1318181634967228e-13 +32 +301.75619802868596 +13 +1050.064453125 +23 +1.1318181634967228e-13 +33 +301.75619802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1157.935546875 +20 +1.0952751292730989e-13 +30 +249.09213552868596 +11 +1050.064453125 +21 +1.1318181634967228e-13 +31 +301.75619802868596 +12 +1073.572265625 +22 +1.1426005541020912e-13 +32 +317.29526052868596 +13 +1073.572265625 +23 +1.1426005541020912e-13 +33 +317.29526052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1157.935546875 +20 +1.0952751292730989e-13 +30 +249.09213552868596 +11 +1073.572265625 +21 +1.1426005541020912e-13 +31 +317.29526052868596 +12 +1100.572265625 +22 +1.1476420942041488e-13 +32 +324.56088552868596 +13 +1100.572265625 +23 +1.1476420942041488e-13 +33 +324.56088552868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +1864.236328125 +20 +1.119913623642832e-13 +30 +284.59994802868596 +11 +1157.935546875 +21 +1.0952751292730989e-13 +31 +249.09213552868596 +12 +1276.798828125 +22 +1.101959235666472e-13 +32 +258.72494802868596 +13 +1276.798828125 +23 +1.101959235666472e-13 +33 +258.72494802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1864.236328125 +20 +1.119913623642832e-13 +30 +284.59994802868596 +11 +1276.798828125 +21 +1.101959235666472e-13 +31 +258.72494802868596 +12 +1330.564453125 +22 +1.1096028609824948e-13 +32 +269.74057302868596 +13 +1330.564453125 +23 +1.1096028609824948e-13 +33 +269.74057302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1864.236328125 +20 +1.119913623642832e-13 +30 +284.59994802868596 +11 +1330.564453125 +21 +1.1096028609824948e-13 +31 +269.74057302868596 +12 +1634.033203125 +22 +1.124288379408811e-13 +32 +290.90463552868596 +13 +1634.033203125 +23 +1.124288379408811e-13 +33 +290.90463552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1864.236328125 +20 +1.119913623642832e-13 +30 +284.59994802868596 +11 +1634.033203125 +21 +1.124288379408811e-13 +31 +290.90463552868596 +12 +1836.697265625 +22 +1.1236703841704943e-13 +32 +290.01401052868596 +13 +1836.697265625 +23 +1.1236703841704943e-13 +33 +290.01401052868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +1836.697265625 +20 +1.1236703841704943e-13 +30 +290.01401052868596 +11 +1634.033203125 +21 +1.124288379408811e-13 +31 +290.90463552868596 +12 +1695.451171875 +22 +1.1434462317966299e-13 +32 +318.51401052868596 +13 +1695.451171875 +23 +1.1434462317966299e-13 +33 +318.51401052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1836.697265625 +20 +1.1236703841704943e-13 +30 +290.01401052868596 +11 +1695.451171875 +21 +1.1434462317966299e-13 +31 +318.51401052868596 +12 +1742.830078125 +22 +1.1559037147584883e-13 +32 +336.46713552868596 +13 +1742.830078125 +23 +1.1559037147584883e-13 +33 +336.46713552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1836.697265625 +20 +1.1236703841704943e-13 +30 +290.01401052868596 +11 +1742.830078125 +21 +1.1559037147584883e-13 +31 +336.46713552868596 +12 +1751.783203125 +22 +1.1558061365629646e-13 +32 +336.32651052868596 +13 +1751.783203125 +23 +1.1558061365629646e-13 +33 +336.32651052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +1270.072265625 +20 +1.576384422302679e-13 +30 +942.443698028686 +11 +1344.029296875 +21 +1.5709363063859394e-13 +31 +934.592135528686 +12 +1276.798828125 +22 +1.101959235666472e-13 +32 +258.72494802868596 +13 +1276.798828125 +23 +1.101959235666472e-13 +33 +258.72494802868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +1344.029296875 +20 +1.5709363063859394e-13 +30 +934.592135528686 +11 +1270.072265625 +21 +1.576384422302679e-13 +31 +942.443698028686 +12 +1365.146484375 +22 +1.5908422582727733e-13 +32 +963.279635528686 +13 +1365.146484375 +23 +1.5908422582727733e-13 +33 +963.279635528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +1365.146484375 +20 +1.5908422582727733e-13 +30 +963.279635528686 +11 +1270.072265625 +21 +1.576384422302679e-13 +31 +942.443698028686 +12 +1423.728515625 +22 +1.6458926235807247e-13 +32 +1042.615573028686 +13 +1423.728515625 +23 +1.6458926235807247e-13 +33 +1042.615573028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +1276.798828125 +20 +1.101959235666472e-13 +30 +258.72494802868596 +11 +1344.029296875 +21 +1.5709363063859394e-13 +31 +934.592135528686 +12 +1330.564453125 +22 +1.1096028609824948e-13 +32 +269.74057302868596 +13 +1330.564453125 +23 +1.1096028609824948e-13 +33 +269.74057302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +1365.146484375 +20 +1.5908422582727733e-13 +30 +963.279635528686 +11 +1423.728515625 +21 +1.6458926235807247e-13 +31 +1042.615573028686 +12 +1424.736328125 +22 +1.6092682741941644e-13 +32 +989.834323028686 +13 +1424.736328125 +23 +1.6092682741941644e-13 +33 +989.834323028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +1424.736328125 +20 +1.6092682741941644e-13 +30 +989.834323028686 +11 +1423.728515625 +21 +1.6458926235807247e-13 +31 +1042.615573028686 +12 +1432.037109375 +22 +1.6257915153028435e-13 +32 +1013.646823028686 +13 +1432.037109375 +23 +1.6257915153028435e-13 +33 +1013.646823028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +1671.158203125 +20 +1.2728186560284627e-13 +30 +504.95932302868596 +11 +1634.033203125 +21 +1.124288379408811e-13 +31 +290.90463552868596 +12 +1619.572265625 +22 +1.2728186560284627e-13 +32 +504.95932302868596 +13 +1619.572265625 +23 +1.2728186560284627e-13 +33 +504.95932302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +1634.033203125 +20 +1.124288379408811e-13 +30 +290.90463552868596 +11 +1671.158203125 +21 +1.2728186560284627e-13 +31 +504.95932302868596 +12 +1695.451171875 +22 +1.1434462317966299e-13 +32 +318.51401052868596 +13 +1695.451171875 +23 +1.1434462317966299e-13 +33 +318.51401052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2043.369140625 +20 +1.220175219543429e-13 +30 +429.09213552868596 +11 +2056.998046875 +21 +1.1101070149927006e-13 +31 +270.46713552868596 +12 +1957.775390625 +22 +1.1375427509674463e-13 +32 +310.00619802868596 +13 +1957.775390625 +23 +1.1375427509674463e-13 +33 +310.00619802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2056.998046875 +20 +1.1101070149927006e-13 +30 +270.46713552868596 +11 +2043.369140625 +21 +1.220175219543429e-13 +31 +429.09213552868596 +12 +2079.087890625 +22 +1.225867280948978e-13 +32 +437.29526052868596 +13 +2079.087890625 +23 +1.225867280948978e-13 +33 +437.29526052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2056.998046875 +20 +1.1101070149927006e-13 +30 +270.46713552868596 +11 +2079.087890625 +21 +1.225867280948978e-13 +31 +437.29526052868596 +12 +2115.837890625 +22 +1.2211184754334914e-13 +32 +430.45151052868596 +13 +2115.837890625 +23 +1.2211184754334914e-13 +33 +430.45151052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2190.755859375 +20 +1.1485853500942111e-13 +30 +325.92026052868596 +11 +2353.189453125 +21 +1.1203527255226886e-13 +31 +285.23276052868596 +12 +2159.197265625 +22 +1.1283378745230443e-13 +32 +296.74057302868596 +13 +2159.197265625 +23 +1.1283378745230443e-13 +33 +296.74057302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2353.189453125 +20 +1.1203527255226886e-13 +30 +285.23276052868596 +11 +2190.755859375 +21 +1.1485853500942111e-13 +31 +325.92026052868596 +12 +2190.955078125 +22 +1.153187788316412e-13 +32 +332.55307302868596 +13 +2190.955078125 +23 +1.153187788316412e-13 +33 +332.55307302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2353.189453125 +20 +1.1203527255226886e-13 +30 +285.23276052868596 +11 +2190.955078125 +21 +1.153187788316412e-13 +31 +332.55307302868596 +12 +2236.119140625 +22 +1.1812903086272364e-13 +32 +373.05307302868596 +13 +2236.119140625 +23 +1.1812903086272364e-13 +33 +373.05307302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2353.189453125 +20 +1.1203527255226886e-13 +30 +285.23276052868596 +11 +2236.119140625 +21 +1.1812903086272364e-13 +31 +373.05307302868596 +12 +2330.759765625 +22 +1.199683798483453e-13 +32 +399.56088552868596 +13 +2330.759765625 +23 +1.199683798483453e-13 +33 +399.56088552868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2474.384765625 +20 +1.2771771487618544e-13 +30 +511.24057302868596 +11 +2524.470703125 +21 +1.112953045695475e-13 +31 +274.56869802868596 +12 +2437.048828125 +22 +1.1203527255226886e-13 +32 +285.23276052868596 +13 +2437.048828125 +23 +1.1203527255226886e-13 +33 +285.23276052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2524.470703125 +20 +1.112953045695475e-13 +30 +274.56869802868596 +11 +2474.384765625 +21 +1.2771771487618544e-13 +31 +511.24057302868596 +12 +2519.337890625 +22 +1.2771771487618544e-13 +32 +511.24057302868596 +13 +2519.337890625 +23 +1.2771771487618544e-13 +33 +511.24057302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2640.509765625 +20 +1.5953471182994505e-13 +30 +969.771823028686 +11 +2593.833984375 +21 +1.5589829774342867e-13 +31 +917.365573028686 +12 +2584.634765625 +22 +1.5697491050070678e-13 +32 +932.881198028686 +13 +2584.634765625 +23 +1.5697491050070678e-13 +33 +932.881198028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2593.833984375 +20 +1.5589829774342867e-13 +30 +917.365573028686 +11 +2640.509765625 +21 +1.5953471182994505e-13 +31 +969.771823028686 +12 +2595.626953125 +22 +1.545468397354255e-13 +32 +897.889010528686 +13 +2595.626953125 +23 +1.545468397354255e-13 +33 +897.889010528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2595.626953125 +20 +1.545468397354255e-13 +30 +897.889010528686 +11 +2640.509765625 +21 +1.5953471182994505e-13 +31 +969.771823028686 +12 +2659.060546875 +22 +1.3888228674735492e-13 +32 +672.139010528686 +13 +2659.060546875 +23 +1.3888228674735492e-13 +33 +672.139010528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2659.060546875 +20 +1.3888228674735492e-13 +30 +672.139010528686 +11 +2640.509765625 +21 +1.5953471182994505e-13 +31 +969.771823028686 +12 +2695.142578125 +22 +1.3817647113306686e-13 +32 +661.967135528686 +13 +2695.142578125 +23 +1.3817647113306686e-13 +33 +661.967135528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2659.060546875 +20 +1.3888228674735492e-13 +30 +672.139010528686 +11 +2695.142578125 +21 +1.3817647113306686e-13 +31 +661.967135528686 +12 +2659.939453125 +22 +1.344782575227188e-13 +32 +608.670260528686 +13 +2659.939453125 +23 +1.344782575227188e-13 +33 +608.670260528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2691.697265625 +20 +1.777476820244428e-13 +30 +1232.248385528686 +11 +2671.166015625 +21 +1.7029270788643247e-13 +31 +1124.810885528686 +12 +2668.353515625 +22 +1.7112212254838388e-13 +32 +1136.764010528686 +13 +2668.353515625 +23 +1.7112212254838388e-13 +33 +1136.764010528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2671.166015625 +20 +1.7029270788643247e-13 +30 +1124.810885528686 +11 +2691.697265625 +21 +1.777476820244428e-13 +31 +1232.248385528686 +12 +2746.330078125 +22 +1.6455185738312172e-13 +32 +1042.076510528686 +13 +2746.330078125 +23 +1.6455185738312172e-13 +33 +1042.076510528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2746.330078125 +20 +1.6455185738312172e-13 +30 +1042.076510528686 +11 +2691.697265625 +21 +1.777476820244428e-13 +31 +1232.248385528686 +12 +2786.373046875 +22 +1.7633279818934922e-13 +32 +1211.857760528686 +13 +2786.373046875 +23 +1.7633279818934922e-13 +33 +1211.857760528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2746.330078125 +20 +1.6455185738312172e-13 +30 +1042.076510528686 +11 +2786.373046875 +21 +1.7633279818934922e-13 +31 +1211.857760528686 +12 +2748.603515625 +22 +1.6369479556577193e-13 +32 +1029.724948028686 +13 +2748.603515625 +23 +1.6369479556577193e-13 +33 +1029.724948028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2748.603515625 +20 +1.6369479556577193e-13 +30 +1029.724948028686 +11 +2786.373046875 +21 +1.7633279818934922e-13 +31 +1211.857760528686 +12 +2755.599609375 +22 +1.4943211598672512e-13 +32 +824.178073028686 +13 +2755.599609375 +23 +1.4943211598672512e-13 +33 +824.178073028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2755.599609375 +20 +1.4943211598672512e-13 +30 +824.178073028686 +11 +2786.373046875 +21 +1.7633279818934922e-13 +31 +1211.857760528686 +12 +2760.791015625 +22 +1.4771961865528427e-13 +32 +799.498385528686 +13 +2760.791015625 +23 +1.4771961865528427e-13 +33 +799.498385528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2760.509765625 +20 +1.4149575608413123e-13 +30 +709.803073028686 +11 +2827.212890625 +21 +1.3869851447911863e-13 +31 +669.490573028686 +12 +2747.419921875 +22 +1.3817647113306686e-13 +32 +661.967135528686 +13 +2747.419921875 +23 +1.3817647113306686e-13 +33 +661.967135528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2827.212890625 +20 +1.3869851447911863e-13 +30 +669.490573028686 +11 +2760.509765625 +21 +1.4149575608413123e-13 +31 +709.803073028686 +12 +2760.791015625 +22 +1.4771961865528427e-13 +32 +799.498385528686 +13 +2760.791015625 +23 +1.4771961865528427e-13 +33 +799.498385528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2827.212890625 +20 +1.3869851447911863e-13 +30 +669.490573028686 +11 +2760.791015625 +21 +1.4771961865528427e-13 +31 +799.498385528686 +12 +2786.373046875 +22 +1.7633279818934922e-13 +32 +1211.857760528686 +13 +2786.373046875 +23 +1.7633279818934922e-13 +33 +1211.857760528686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +2827.212890625 +20 +1.3869851447911863e-13 +30 +669.490573028686 +11 +2786.373046875 +21 +1.7633279818934922e-13 +31 +1211.857760528686 +12 +2796.041015625 +22 +1.7184094858874177e-13 +32 +1147.123385528686 +13 +2796.041015625 +23 +1.7184094858874177e-13 +33 +1147.123385528686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +2796.041015625 +20 +1.7184094858874177e-13 +30 +1147.123385528686 +11 +2786.373046875 +21 +1.7633279818934922e-13 +31 +1211.857760528686 +12 +2794.728515625 +22 +1.7411452054444387e-13 +32 +1179.889010528686 +13 +2794.728515625 +23 +1.7411452054444387e-13 +33 +1179.889010528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2827.212890625 +20 +1.3869851447911863e-13 +30 +669.490573028686 +11 +2796.041015625 +21 +1.7184094858874177e-13 +31 +1147.123385528686 +12 +2828.783203125 +22 +1.5669681264346424e-13 +32 +928.873385528686 +13 +2828.783203125 +23 +1.5669681264346424e-13 +33 +928.873385528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2827.212890625 +20 +1.3869851447911863e-13 +30 +669.490573028686 +11 +2828.783203125 +21 +1.5669681264346424e-13 +31 +928.873385528686 +12 +2835.626953125 +22 +1.4112658524439992e-13 +32 +704.482760528686 +13 +2835.626953125 +23 +1.4112658524439992e-13 +33 +704.482760528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2835.626953125 +20 +1.4112658524439992e-13 +30 +704.482760528686 +11 +2828.783203125 +21 +1.5669681264346424e-13 +31 +928.873385528686 +12 +2843.759765625 +22 +1.5316448196550647e-13 +32 +877.967135528686 +13 +2843.759765625 +23 +1.5316448196550647e-13 +33 +877.967135528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2835.626953125 +20 +1.4112658524439992e-13 +30 +704.482760528686 +11 +2843.759765625 +21 +1.5316448196550647e-13 +31 +877.967135528686 +12 +2843.056640625 +22 +1.476984767129208e-13 +32 +799.193698028686 +13 +2843.056640625 +23 +1.476984767129208e-13 +33 +799.193698028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2843.056640625 +20 +1.476984767129208e-13 +30 +799.193698028686 +11 +2843.759765625 +21 +1.5316448196550647e-13 +31 +877.967135528686 +12 +2845.962890625 +22 +1.4877021056042272e-13 +32 +814.639010528686 +13 +2845.962890625 +23 +1.4877021056042272e-13 +33 +814.639010528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2974.447265625 +20 +1.5448504021159382e-13 +30 +896.998385528686 +11 +3391.353515625 +21 +1.432554162100752e-13 +31 +735.162448028686 +12 +2948.548828125 +22 +1.3897498603310243e-13 +32 +673.474948028686 +13 +2948.548828125 +23 +1.3897498603310243e-13 +33 +673.474948028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3391.353515625 +20 +1.432554162100752e-13 +30 +735.162448028686 +11 +2974.447265625 +21 +1.5448504021159382e-13 +31 +896.998385528686 +12 +2991.228515625 +22 +1.579604502754961e-13 +32 +947.084323028686 +13 +2991.228515625 +23 +1.579604502754961e-13 +33 +947.084323028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3391.353515625 +20 +1.432554162100752e-13 +30 +735.162448028686 +11 +2991.228515625 +21 +1.579604502754961e-13 +31 +947.084323028686 +12 +3367.001953125 +22 +1.4422469295227724e-13 +32 +749.131198028686 +13 +3367.001953125 +23 +1.4422469295227724e-13 +33 +749.131198028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3367.001953125 +20 +1.4422469295227724e-13 +30 +749.131198028686 +11 +2991.228515625 +21 +1.579604502754961e-13 +31 +947.084323028686 +12 +2997.357421875 +22 +1.6058367743182478e-13 +32 +984.889010528686 +13 +2997.357421875 +23 +1.6058367743182478e-13 +33 +984.889010528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3367.001953125 +20 +1.4422469295227724e-13 +30 +749.131198028686 +11 +2997.357421875 +21 +1.6058367743182478e-13 +31 +984.889010528686 +12 +3004.705078125 +22 +1.7110260690927914e-13 +32 +1136.482760528686 +13 +3004.705078125 +23 +1.7110260690927914e-13 +33 +1136.482760528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3367.001953125 +20 +1.4422469295227724e-13 +30 +749.131198028686 +11 +3004.705078125 +21 +1.7110260690927914e-13 +31 +1136.482760528686 +12 +3091.494140625 +22 +1.7260693742360278e-13 +32 +1158.162448028686 +13 +3091.494140625 +23 +1.7260693742360278e-13 +33 +1158.162448028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3367.001953125 +20 +1.4422469295227724e-13 +30 +749.131198028686 +11 +3091.494140625 +21 +1.7260693742360278e-13 +31 +1158.162448028686 +12 +3324.908203125 +22 +1.5140807444607995e-13 +32 +852.654635528686 +13 +3324.908203125 +23 +1.5140807444607995e-13 +33 +852.654635528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3324.908203125 +20 +1.5140807444607995e-13 +30 +852.654635528686 +11 +3091.494140625 +21 +1.7260693742360278e-13 +31 +1158.162448028686 +12 +3306.380859375 +22 +1.5670982306953407e-13 +32 +929.060885528686 +13 +3306.380859375 +23 +1.5670982306953407e-13 +33 +929.060885528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3306.380859375 +20 +1.5670982306953407e-13 +30 +929.060885528686 +11 +3091.494140625 +21 +1.7260693742360278e-13 +31 +1158.162448028686 +12 +3279.673828125 +22 +2.0988180811365442e-13 +32 +1695.349948028686 +13 +3279.673828125 +23 +2.0988180811365442e-13 +33 +1695.349948028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3472.857421875 +20 +1.8248185081060075e-13 +30 +1300.474948028686 +11 +3441.603515625 +21 +1.7226704004252857e-13 +31 +1153.264010528686 +12 +3427.259765625 +22 +1.793186909723743e-13 +32 +1254.889010528686 +13 +3427.259765625 +23 +1.793186909723743e-13 +33 +1254.889010528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3441.603515625 +20 +1.7226704004252857e-13 +30 +1153.264010528686 +11 +3472.857421875 +21 +1.8248185081060075e-13 +31 +1300.474948028686 +12 +3481.552734375 +22 +1.6952509274831273e-13 +32 +1113.748385528686 +13 +3481.552734375 +23 +1.6952509274831273e-13 +33 +1113.748385528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3481.552734375 +20 +1.6952509274831273e-13 +30 +1113.748385528686 +11 +3472.857421875 +21 +1.8248185081060075e-13 +31 +1300.474948028686 +12 +3580.517578125 +22 +1.799805963986767e-13 +32 +1264.428073028686 +13 +3580.517578125 +23 +1.799805963986767e-13 +33 +1264.428073028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3481.552734375 +20 +1.6952509274831273e-13 +30 +1113.748385528686 +11 +3580.517578125 +21 +1.799805963986767e-13 +31 +1264.428073028686 +12 +3501.486328125 +22 +1.4470119980708462e-13 +32 +755.998385528686 +13 +3501.486328125 +23 +1.4470119980708462e-13 +33 +755.998385528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3501.486328125 +20 +1.4470119980708462e-13 +30 +755.998385528686 +11 +3580.517578125 +21 +1.799805963986767e-13 +31 +1264.428073028686 +12 +3630.169921875 +22 +1.417478330892341e-13 +32 +713.435885528686 +13 +3630.169921875 +23 +1.417478330892341e-13 +33 +713.435885528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3630.169921875 +20 +1.417478330892341e-13 +30 +713.435885528686 +11 +3851.103515625 +21 +1.1464874188904517e-13 +31 +322.89682302868596 +12 +3860.982421875 +22 +1.1240281708874145e-13 +32 +290.52963552868596 +13 +3860.982421875 +23 +1.1240281708874145e-13 +33 +290.52963552868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3851.103515625 +20 +1.1464874188904517e-13 +30 +322.89682302868596 +11 +3630.169921875 +21 +1.417478330892341e-13 +31 +713.435885528686 +12 +3790.494140625 +22 +1.3459209875082978e-13 +32 +610.310885528686 +13 +3790.494140625 +23 +1.3459209875082978e-13 +33 +610.310885528686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +3790.494140625 +20 +1.3459209875082978e-13 +30 +610.310885528686 +11 +3630.169921875 +21 +1.417478330892341e-13 +31 +713.435885528686 +12 +3790.494140625 +22 +1.4226174491899224e-13 +32 +720.842135528686 +13 +3790.494140625 +23 +1.4226174491899224e-13 +33 +720.842135528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3851.103515625 +20 +1.1464874188904517e-13 +30 +322.89682302868596 +11 +3790.494140625 +21 +1.3459209875082978e-13 +31 +610.310885528686 +12 +3803.935546875 +22 +1.317151682861395e-13 +32 +568.849948028686 +13 +3803.935546875 +23 +1.317151682861395e-13 +33 +568.849948028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2524.470703125 +20 +1.112953045695475e-13 +30 +274.56869802868596 +11 +4547.488741033201 +21 +6.714459055936259e-14 +31 +-361.7101472974264 +12 +2331.0584563925167 +22 +7.363034515030426e-14 +32 +-268.24057302868596 +13 +2331.0584563925167 +23 +7.363034515030426e-14 +33 +-268.24057302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +4547.488741033201 +20 +6.714459055936259e-14 +30 +-361.7101472974264 +11 +2524.470703125 +21 +1.112953045695475e-13 +31 +274.56869802868596 +12 +3860.982421875 +22 +1.1240281708874145e-13 +32 +290.52963552868596 +13 +3860.982421875 +23 +1.1240281708874145e-13 +33 +290.52963552868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +1933.330078125 +20 +1.1279800878061241e-13 +30 +296.22494802868596 +11 +2331.0584563925167 +21 +7.363034515030426e-14 +31 +-268.24057302868596 +12 +1864.236328125 +22 +1.119913623642832e-13 +32 +284.59994802868596 +13 +1864.236328125 +23 +1.119913623642832e-13 +33 +284.59994802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2331.0584563925167 +20 +7.363034515030426e-14 +30 +-268.24057302868596 +11 +1933.330078125 +21 +1.1279800878061241e-13 +31 +296.22494802868596 +12 +1957.775390625 +22 +1.1375427509674463e-13 +32 +310.00619802868596 +13 +1957.775390625 +23 +1.1375427509674463e-13 +33 +310.00619802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2331.0584563925167 +20 +7.363034515030426e-14 +30 +-268.24057302868596 +11 +1957.775390625 +21 +1.1375427509674463e-13 +31 +310.00619802868596 +12 +2056.998046875 +22 +1.1101070149927006e-13 +32 +270.46713552868596 +13 +2056.998046875 +23 +1.1101070149927006e-13 +33 +270.46713552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2331.0584563925167 +20 +7.363034515030426e-14 +30 +-268.24057302868596 +11 +2056.998046875 +21 +1.1101070149927006e-13 +31 +270.46713552868596 +12 +2159.197265625 +22 +1.1283378745230443e-13 +32 +296.74057302868596 +13 +2159.197265625 +23 +1.1283378745230443e-13 +33 +296.74057302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2331.0584563925167 +20 +7.363034515030426e-14 +30 +-268.24057302868596 +11 +2159.197265625 +21 +1.1283378745230443e-13 +31 +296.74057302868596 +12 +2353.189453125 +22 +1.1203527255226886e-13 +32 +285.23276052868596 +13 +2353.189453125 +23 +1.1203527255226886e-13 +33 +285.23276052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +2331.0584563925167 +20 +7.363034515030426e-14 +30 +-268.24057302868596 +11 +2353.189453125 +21 +1.1203527255226886e-13 +31 +285.23276052868596 +12 +2524.470703125 +22 +1.112953045695475e-13 +32 +274.56869802868596 +13 +2524.470703125 +23 +1.112953045695475e-13 +33 +274.56869802868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +2524.470703125 +20 +1.112953045695475e-13 +30 +274.56869802868596 +11 +2353.189453125 +21 +1.1203527255226886e-13 +31 +285.23276052868596 +12 +2437.048828125 +22 +1.1203527255226886e-13 +32 +285.23276052868596 +13 +2437.048828125 +23 +1.1203527255226886e-13 +33 +285.23276052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2548.658203125 +20 +1.1192143132415788e-13 +30 +283.59213552868596 +11 +3860.982421875 +21 +1.1240281708874145e-13 +31 +290.52963552868596 +12 +2524.470703125 +22 +1.112953045695475e-13 +32 +274.56869802868596 +13 +2524.470703125 +23 +1.112953045695475e-13 +33 +274.56869802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +2548.658203125 +21 +1.1192143132415788e-13 +31 +283.59213552868596 +12 +2579.548828125 +22 +1.141445878788394e-13 +32 +315.63119802868596 +13 +2579.548828125 +23 +1.141445878788394e-13 +33 +315.63119802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +2579.548828125 +21 +1.141445878788394e-13 +31 +315.63119802868596 +12 +2636.126953125 +22 +1.309670687871245e-13 +32 +558.068698028686 +13 +2636.126953125 +23 +1.309670687871245e-13 +33 +558.068698028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +2636.126953125 +21 +1.309670687871245e-13 +31 +558.068698028686 +12 +2659.939453125 +22 +1.344782575227188e-13 +32 +608.670260528686 +13 +2659.939453125 +23 +1.344782575227188e-13 +33 +608.670260528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +2659.939453125 +21 +1.344782575227188e-13 +31 +608.670260528686 +12 +2695.142578125 +22 +1.3817647113306686e-13 +32 +661.967135528686 +13 +2695.142578125 +23 +1.3817647113306686e-13 +33 +661.967135528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +2695.142578125 +21 +1.3817647113306686e-13 +31 +661.967135528686 +12 +2747.419921875 +22 +1.3817647113306686e-13 +32 +661.967135528686 +13 +2747.419921875 +23 +1.3817647113306686e-13 +33 +661.967135528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +2747.419921875 +21 +1.3817647113306686e-13 +31 +661.967135528686 +12 +2827.212890625 +22 +1.3869851447911863e-13 +32 +669.490573028686 +13 +2827.212890625 +23 +1.3869851447911863e-13 +33 +669.490573028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +2827.212890625 +21 +1.3869851447911863e-13 +31 +669.490573028686 +12 +2948.548828125 +22 +1.3897498603310243e-13 +32 +673.474948028686 +13 +2948.548828125 +23 +1.3897498603310243e-13 +33 +673.474948028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +2948.548828125 +21 +1.3897498603310243e-13 +31 +673.474948028686 +12 +3391.353515625 +22 +1.432554162100752e-13 +32 +735.162448028686 +13 +3391.353515625 +23 +1.432554162100752e-13 +33 +735.162448028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +3391.353515625 +21 +1.432554162100752e-13 +31 +735.162448028686 +12 +3405.720703125 +22 +1.4364247638565253e-13 +32 +740.740573028686 +13 +3405.720703125 +23 +1.4364247638565253e-13 +33 +740.740573028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +3405.720703125 +21 +1.4364247638565253e-13 +31 +740.740573028686 +12 +3501.486328125 +22 +1.4470119980708462e-13 +32 +755.998385528686 +13 +3501.486328125 +23 +1.4470119980708462e-13 +33 +755.998385528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3860.982421875 +20 +1.1240281708874145e-13 +30 +290.52963552868596 +11 +3501.486328125 +21 +1.4470119980708462e-13 +31 +755.998385528686 +12 +3630.169921875 +22 +1.417478330892341e-13 +32 +713.435885528686 +13 +3630.169921875 +23 +1.417478330892341e-13 +33 +713.435885528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3099.392578125 +20 +2.1223181632251675e-13 +30 +1729.217135528686 +11 +2990.619140625 +21 +2.0952727400325166e-13 +31 +1690.240573028686 +12 +2970.228515625 +22 +2.1223181632251675e-13 +32 +1729.217135528686 +13 +2970.228515625 +23 +2.1223181632251675e-13 +33 +1729.217135528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +2990.619140625 +20 +2.0952727400325166e-13 +30 +1690.240573028686 +11 +3099.392578125 +21 +2.1223181632251675e-13 +31 +1729.217135528686 +12 +3077.689453125 +22 +2.0881170056941123e-13 +32 +1679.928073028686 +13 +3077.689453125 +23 +2.0881170056941123e-13 +33 +1679.928073028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3077.689453125 +20 +2.0881170056941123e-13 +30 +1679.928073028686 +11 +3099.392578125 +21 +2.1223181632251675e-13 +31 +1729.217135528686 +12 +3091.494140625 +22 +1.856791630172605e-13 +32 +1346.553073028686 +13 +3091.494140625 +23 +1.856791630172605e-13 +33 +1346.553073028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3091.494140625 +20 +1.856791630172605e-13 +30 +1346.553073028686 +11 +3099.392578125 +21 +2.1223181632251675e-13 +31 +1729.217135528686 +12 +3091.611328125 +22 +1.7803716400449643e-13 +32 +1236.420260528686 +13 +3091.611328125 +23 +1.7803716400449643e-13 +33 +1236.420260528686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +3063.451171875 +20 +2.2292150764213758e-13 +30 +1883.271823028686 +11 +3099.392578125 +21 +2.1223181632251675e-13 +31 +1729.217135528686 +12 +3051.087890625 +22 +2.2221081311807334e-13 +32 +1873.029635528686 +13 +3051.087890625 +23 +2.2221081311807334e-13 +33 +1873.029635528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3099.392578125 +20 +2.1223181632251675e-13 +30 +1729.217135528686 +11 +3063.451171875 +21 +2.2292150764213758e-13 +31 +1883.271823028686 +12 +3129.017578125 +22 +2.2431199692835024e-13 +32 +1903.310885528686 +13 +3129.017578125 +23 +2.2431199692835024e-13 +33 +1903.310885528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3246.298828125 +20 +2.8460719024570036e-13 +30 +2772.256198028686 +11 +3190.751953125 +21 +2.2546341963552985e-13 +31 +1919.904635528686 +12 +3151.189453125 +22 +2.271694117539358e-13 +32 +1944.490573028686 +13 +3151.189453125 +23 +2.271694117539358e-13 +33 +1944.490573028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3190.751953125 +20 +2.2546341963552985e-13 +30 +1919.904635528686 +11 +3246.298828125 +21 +2.8460719024570036e-13 +31 +2772.256198028686 +12 +3273.193359375 +22 +2.835045566362826e-13 +32 +2756.365573028686 +13 +3273.193359375 +23 +2.835045566362826e-13 +33 +2756.365573028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3273.193359375 +20 +2.835045566362826e-13 +30 +2756.365573028686 +11 +3246.298828125 +21 +2.8460719024570036e-13 +31 +2772.256198028686 +12 +3255.158203125 +22 +2.871832546075259e-13 +32 +2809.381198028686 +13 +3255.158203125 +23 +2.871832546075259e-13 +33 +2809.381198028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3273.193359375 +20 +2.835045566362826e-13 +30 +2756.365573028686 +11 +3255.158203125 +21 +2.871832546075259e-13 +31 +2809.381198028686 +12 +3259.001953125 +22 +2.871019394445895e-13 +32 +2808.209323028686 +13 +3259.001953125 +23 +2.871019394445895e-13 +33 +2808.209323028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3273.193359375 +20 +2.835045566362826e-13 +30 +2756.365573028686 +11 +3259.001953125 +21 +2.871019394445895e-13 +31 +2808.209323028686 +12 +3276.931640625 +22 +2.840867732029073e-13 +32 +2764.756198028686 +13 +3276.931640625 +23 +2.840867732029073e-13 +33 +2764.756198028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3091.611328125 +20 +1.7803716400449643e-13 +30 +1236.420260528686 +11 +3279.673828125 +21 +2.0988180811365442e-13 +31 +1695.349948028686 +12 +3091.494140625 +22 +1.7260693742360278e-13 +32 +1158.162448028686 +13 +3091.494140625 +23 +1.7260693742360278e-13 +33 +1158.162448028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3279.673828125 +20 +2.0988180811365442e-13 +30 +1695.349948028686 +11 +3091.611328125 +21 +1.7803716400449643e-13 +31 +1236.420260528686 +12 +3099.392578125 +22 +2.1223181632251675e-13 +32 +1729.217135528686 +13 +3099.392578125 +23 +2.1223181632251675e-13 +33 +1729.217135528686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +3279.673828125 +20 +2.0988180811365442e-13 +30 +1695.349948028686 +11 +3099.392578125 +21 +2.1223181632251675e-13 +31 +1729.217135528686 +12 +3251.244140625 +22 +2.11595931748354e-13 +32 +1720.053073028686 +13 +3251.244140625 +23 +2.11595931748354e-13 +33 +1720.053073028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3251.244140625 +20 +2.11595931748354e-13 +30 +1720.053073028686 +11 +3099.392578125 +21 +2.1223181632251675e-13 +31 +1729.217135528686 +12 +3129.017578125 +22 +2.2431199692835024e-13 +32 +1903.310885528686 +13 +3129.017578125 +23 +2.2431199692835024e-13 +33 +1903.310885528686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +3251.244140625 +20 +2.11595931748354e-13 +30 +1720.053073028686 +11 +3129.017578125 +21 +2.2431199692835024e-13 +31 +1903.310885528686 +12 +3144.826171875 +22 +2.252536265151539e-13 +32 +1916.881198028686 +13 +3144.826171875 +23 +2.252536265151539e-13 +33 +1916.881198028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3251.244140625 +20 +2.11595931748354e-13 +30 +1720.053073028686 +11 +3144.826171875 +21 +2.252536265151539e-13 +31 +1916.881198028686 +12 +3151.189453125 +22 +2.271694117539358e-13 +32 +1944.490573028686 +13 +3151.189453125 +23 +2.271694117539358e-13 +33 +1944.490573028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3251.244140625 +20 +2.11595931748354e-13 +30 +1720.053073028686 +11 +3151.189453125 +21 +2.271694117539358e-13 +31 +1944.490573028686 +12 +3190.751953125 +22 +2.2546341963552985e-13 +32 +1919.904635528686 +13 +3190.751953125 +23 +2.2546341963552985e-13 +33 +1919.904635528686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +3251.244140625 +20 +2.11595931748354e-13 +30 +1720.053073028686 +11 +3190.751953125 +21 +2.2546341963552985e-13 +31 +1919.904635528686 +12 +3251.244140625 +22 +2.2470881492347994e-13 +32 +1909.029635528686 +13 +3251.244140625 +23 +2.2470881492347994e-13 +33 +1909.029635528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3057.017578125 +20 +1.8393739222716254e-13 +30 +1321.451510528686 +11 +3065.291015625 +21 +1.7977568218807694e-13 +31 +1261.474948028686 +12 +3038.337890625 +22 +1.8099540963212313e-13 +32 +1279.053073028686 +13 +3038.337890625 +23 +1.8099540963212313e-13 +33 +1279.053073028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3065.291015625 +20 +1.7977568218807694e-13 +30 +1261.474948028686 +11 +3057.017578125 +21 +1.8393739222716254e-13 +31 +1321.451510528686 +12 +3091.494140625 +22 +1.856791630172605e-13 +32 +1346.553073028686 +13 +3091.494140625 +23 +1.856791630172605e-13 +33 +1346.553073028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +3065.291015625 +20 +1.7977568218807694e-13 +30 +1261.474948028686 +11 +3091.494140625 +21 +1.856791630172605e-13 +31 +1346.553073028686 +12 +3074.080078125 +22 +1.7957889949377082e-13 +32 +1258.639010528686 +13 +3074.080078125 +23 +1.7957889949377082e-13 +33 +1258.639010528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +3074.080078125 +20 +1.7957889949377082e-13 +30 +1258.639010528686 +11 +3091.494140625 +21 +1.856791630172605e-13 +31 +1346.553073028686 +12 +3091.611328125 +22 +1.7803716400449643e-13 +32 +1236.420260528686 +13 +3091.611328125 +23 +1.7803716400449643e-13 +33 +1236.420260528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +4086.462890625 +20 +1.4688857769007413e-13 +30 +787.521823028686 +11 +4038.275390625 +21 +1.139087739063238e-13 +31 +312.23276052868596 +12 +3956.853515625 +22 +1.1718740127591998e-13 +32 +359.48276052868596 +13 +3956.853515625 +23 +1.1718740127591998e-13 +33 +359.48276052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +4038.275390625 +20 +1.139087739063238e-13 +30 +312.23276052868596 +11 +4086.462890625 +21 +1.4688857769007413e-13 +31 +787.521823028686 +12 +4186.166015625 +22 +1.4719920161249123e-13 +32 +791.998385528686 +13 +4186.166015625 +23 +1.4719920161249123e-13 +33 +791.998385528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +4186.166015625 +20 +1.4719920161249123e-13 +30 +791.998385528686 +11 +4086.462890625 +21 +1.4688857769007413e-13 +31 +787.521823028686 +12 +4112.759765625 +22 +1.4928412239018085e-13 +32 +822.045260528686 +13 +4112.759765625 +23 +1.4928412239018085e-13 +33 +822.045260528686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +4186.166015625 +20 +1.4719920161249123e-13 +30 +791.998385528686 +11 +4112.759765625 +21 +1.4928412239018085e-13 +31 +822.045260528686 +12 +4253.666015625 +22 +1.5552424799392117e-13 +32 +911.974948028686 +13 +4253.666015625 +23 +1.5552424799392117e-13 +33 +911.974948028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +4186.166015625 +20 +1.4719920161249123e-13 +30 +791.998385528686 +11 +4253.666015625 +21 +1.5552424799392117e-13 +31 +911.974948028686 +12 +4196.712890625 +22 +1.4826117764044078e-13 +32 +807.303073028686 +13 +4196.712890625 +23 +1.4826117764044078e-13 +33 +807.303073028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +4196.712890625 +20 +1.4826117764044078e-13 +30 +807.303073028686 +11 +4253.666015625 +21 +1.5552424799392117e-13 +31 +911.974948028686 +12 +4272.626953125 +22 +1.5127471757886424e-13 +32 +850.732760528686 +13 +4272.626953125 +23 +1.5127471757886424e-13 +33 +850.732760528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +4272.626953125 +20 +1.5127471757886424e-13 +30 +850.732760528686 +11 +4253.666015625 +21 +1.5552424799392117e-13 +31 +911.974948028686 +12 +4263.251953125 +22 +1.5617802190392993e-13 +32 +921.396823028686 +13 +4263.251953125 +23 +1.5617802190392993e-13 +33 +921.396823028686 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +4272.626953125 +20 +1.5127471757886424e-13 +30 +850.732760528686 +11 +4263.251953125 +21 +1.5617802190392993e-13 +31 +921.396823028686 +12 +4280.525390625 +22 +1.5238060379479945e-13 +32 +866.670260528686 +13 +4280.525390625 +23 +1.5238060379479945e-13 +33 +866.670260528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +4657.423828125 +20 +1.2230212502462035e-13 +30 +433.19369802868596 +11 +4703.830078125 +21 +1.1054883137379123e-13 +31 +263.81088552868596 +12 +4531.869140625 +22 +1.105472050705325e-13 +32 +263.78744802868596 +13 +4531.869140625 +23 +1.105472050705325e-13 +33 +263.78744802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +4703.830078125 +20 +1.1054883137379123e-13 +30 +263.81088552868596 +11 +4657.423828125 +21 +1.2230212502462035e-13 +31 +433.19369802868596 +12 +4750.001953125 +22 +1.1587822715264373e-13 +32 +340.61557302868596 +13 +4750.001953125 +23 +1.1587822715264373e-13 +33 +340.61557302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +4703.830078125 +20 +1.1054883137379123e-13 +30 +263.81088552868596 +11 +4547.488741033201 +21 +6.714459055936259e-14 +31 +-361.7101472974264 +12 +4531.869140625 +22 +1.105472050705325e-13 +32 +263.78744802868596 +13 +4531.869140625 +23 +1.105472050705325e-13 +33 +263.78744802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +4547.488741033201 +20 +6.714459055936259e-14 +30 +-361.7101472974264 +11 +4703.830078125 +21 +1.1054883137379123e-13 +31 +263.81088552868596 +12 +5266.105489290916 +22 +6.504176246391654e-14 +32 +-392.0150939440673 +13 +5266.105489290916 +23 +6.504176246391654e-14 +33 +-392.0150939440673 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +5266.105489290916 +20 +6.504176246391654e-14 +30 +-392.0150939440673 +11 +4703.830078125 +21 +1.1054883137379123e-13 +31 +263.81088552868596 +12 +4862.876953125 +22 +1.1054883137379123e-13 +32 +263.81088552868596 +13 +4862.876953125 +23 +1.1054883137379123e-13 +33 +263.81088552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +5266.105489290916 +20 +6.504176246391654e-14 +30 +-392.0150939440673 +11 +4862.876953125 +21 +1.1054883137379123e-13 +31 +263.81088552868596 +12 +4918.236328125 +22 +1.1143679295305686e-13 +32 +276.60776052868596 +13 +4918.236328125 +23 +1.1143679295305686e-13 +33 +276.60776052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +5266.105489290916 +20 +6.504176246391654e-14 +30 +-392.0150939440673 +11 +4918.236328125 +21 +1.1143679295305686e-13 +31 +276.60776052868596 +12 +4939.705078125 +22 +1.1121561570986982e-13 +32 +273.42026052868596 +13 +4939.705078125 +23 +1.1121561570986982e-13 +33 +273.42026052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +5266.105489290916 +20 +6.504176246391654e-14 +30 +-392.0150939440673 +11 +4939.705078125 +21 +1.1121561570986982e-13 +31 +273.42026052868596 +12 +4984.494140625 +22 +1.0916322099735476e-13 +32 +243.84213552868596 +13 +4984.494140625 +23 +1.0916322099735476e-13 +33 +243.84213552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +5266.105489290916 +20 +6.504176246391654e-14 +30 +-392.0150939440673 +11 +4984.494140625 +21 +1.0916322099735476e-13 +31 +243.84213552868596 +12 +5065.751953125 +22 +1.0868508783928865e-13 +32 +236.95151052868596 +13 +5065.751953125 +23 +1.0868508783928865e-13 +33 +236.95151052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +3878.736328125 +20 +1.1593026885692304e-13 +30 +341.36557302868596 +11 +4547.488741033201 +21 +6.714459055936259e-14 +31 +-361.7101472974264 +12 +3860.982421875 +22 +1.1240281708874145e-13 +32 +290.52963552868596 +13 +3860.982421875 +23 +1.1240281708874145e-13 +33 +290.52963552868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +4547.488741033201 +20 +6.714459055936259e-14 +30 +-361.7101472974264 +11 +3878.736328125 +21 +1.1593026885692304e-13 +31 +341.36557302868596 +12 +3890.923828125 +22 +1.1658566907019052e-13 +32 +350.81088552868596 +13 +3890.923828125 +23 +1.1658566907019052e-13 +33 +350.81088552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +4547.488741033201 +20 +6.714459055936259e-14 +30 +-361.7101472974264 +11 +3890.923828125 +21 +1.1658566907019052e-13 +31 +350.81088552868596 +12 +3956.853515625 +22 +1.1718740127591998e-13 +32 +359.48276052868596 +13 +3956.853515625 +23 +1.1718740127591998e-13 +33 +359.48276052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +4547.488741033201 +20 +6.714459055936259e-14 +30 +-361.7101472974264 +11 +3956.853515625 +21 +1.1718740127591998e-13 +31 +359.48276052868596 +12 +4038.275390625 +22 +1.139087739063238e-13 +32 +312.23276052868596 +13 +4038.275390625 +23 +1.139087739063238e-13 +33 +312.23276052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +4547.488741033201 +20 +6.714459055936259e-14 +30 +-361.7101472974264 +11 +4038.275390625 +21 +1.139087739063238e-13 +31 +312.23276052868596 +12 +4454.994140625 +22 +1.0782314711216268e-13 +32 +224.52963552868596 +13 +4454.994140625 +23 +1.0782314711216268e-13 +33 +224.52963552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +4547.488741033201 +20 +6.714459055936259e-14 +30 +-361.7101472974264 +11 +4454.994140625 +21 +1.0782314711216268e-13 +31 +224.52963552868596 +12 +4490.806640625 +22 +1.0847041580913652e-13 +32 +233.85776052868596 +13 +4490.806640625 +23 +1.0847041580913652e-13 +33 +233.85776052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +4547.488741033201 +20 +6.714459055936259e-14 +30 +-361.7101472974264 +11 +4490.806640625 +21 +1.0847041580913652e-13 +31 +233.85776052868596 +12 +4531.869140625 +22 +1.105472050705325e-13 +32 +263.78744802868596 +13 +4531.869140625 +23 +1.105472050705325e-13 +33 +263.78744802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5266.105489290916 +21 +6.504176246391654e-14 +31 +-392.0150939440673 +12 +5065.751953125 +22 +1.0868508783928865e-13 +32 +236.95151052868596 +13 +5065.751953125 +23 +1.0868508783928865e-13 +33 +236.95151052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5266.105489290916 +20 +6.504176246391654e-14 +30 +-392.0150939440673 +11 +5739.603515625 +21 +1.067481606581433e-13 +31 +209.03744802868596 +12 +6602.783203125 +22 +6.11303542508157e-14 +32 +-448.38442697131404 +13 +6602.783203125 +23 +6.11303542508157e-14 +33 +-448.38442697131404 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +6602.783203125 +20 +6.11303542508157e-14 +30 +-448.38442697131404 +11 +5739.603515625 +21 +1.067481606581433e-13 +31 +209.03744802868596 +12 +5859.626953125 +22 +1.072832144302649e-13 +32 +216.74838552868596 +13 +5859.626953125 +23 +1.072832144302649e-13 +33 +216.74838552868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5470.423828125 +20 +1.3097682660667687e-13 +30 +558.209323028686 +11 +5431.939453125 +21 +1.1599044207749598e-13 +31 +342.23276052868596 +12 +5417.009765625 +22 +1.3097682660667687e-13 +32 +558.209323028686 +13 +5417.009765625 +23 +1.3097682660667687e-13 +33 +558.209323028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5698.119140625 +20 +1.3152976971464447e-13 +30 +566.178073028686 +11 +5692.751953125 +21 +1.1768667637634955e-13 +31 +366.67807302868596 +12 +5692.751953125 +22 +1.314338178223795e-13 +32 +564.795260528686 +13 +5692.751953125 +23 +1.314338178223795e-13 +33 +564.795260528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5081.009765625 +20 +1.0967062761407798e-13 +30 +251.15463552868596 +11 +5739.603515625 +21 +1.067481606581433e-13 +31 +209.03744802868596 +12 +5065.751953125 +22 +1.0868508783928865e-13 +32 +236.95151052868596 +13 +5065.751953125 +23 +1.0868508783928865e-13 +33 +236.95151052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5081.009765625 +21 +1.0967062761407798e-13 +31 +251.15463552868596 +12 +5123.103515625 +22 +1.2032941917178297e-13 +32 +404.76401052868596 +13 +5123.103515625 +23 +1.2032941917178297e-13 +33 +404.76401052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5123.103515625 +21 +1.2032941917178297e-13 +31 +404.76401052868596 +12 +5302.001953125 +22 +1.1661168992233018e-13 +32 +351.18588552868596 +13 +5302.001953125 +23 +1.1661168992233018e-13 +33 +351.18588552868596 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +5302.001953125 +20 +1.1661168992233018e-13 +30 +351.18588552868596 +11 +5123.103515625 +21 +1.2032941917178297e-13 +31 +404.76401052868596 +12 +5229.861328125 +22 +1.2032941917178297e-13 +32 +404.76401052868596 +13 +5229.861328125 +23 +1.2032941917178297e-13 +33 +404.76401052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5302.001953125 +21 +1.1661168992233018e-13 +31 +351.18588552868596 +12 +5431.939453125 +22 +1.1599044207749598e-13 +32 +342.23276052868596 +13 +5431.939453125 +23 +1.1599044207749598e-13 +33 +342.23276052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5431.939453125 +21 +1.1599044207749598e-13 +31 +342.23276052868596 +12 +5517.064453125 +22 +1.1643279656387007e-13 +32 +348.60776052868596 +13 +5517.064453125 +23 +1.1643279656387007e-13 +33 +348.60776052868596 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +5517.064453125 +20 +1.1643279656387007e-13 +30 +348.60776052868596 +11 +5431.939453125 +21 +1.1599044207749598e-13 +31 +342.23276052868596 +12 +5504.384765625 +22 +1.1816480953441566e-13 +32 +373.56869802868596 +13 +5504.384765625 +23 +1.1816480953441566e-13 +33 +373.56869802868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +5504.384765625 +20 +1.1816480953441566e-13 +30 +373.56869802868596 +11 +5431.939453125 +21 +1.1599044207749598e-13 +31 +342.23276052868596 +12 +5470.423828125 +22 +1.3097682660667687e-13 +32 +558.209323028686 +13 +5470.423828125 +23 +1.3097682660667687e-13 +33 +558.209323028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5517.064453125 +21 +1.1643279656387007e-13 +31 +348.60776052868596 +12 +5623.072265625 +22 +1.1187264222639604e-13 +32 +282.88901052868596 +13 +5623.072265625 +23 +1.1187264222639604e-13 +33 +282.88901052868596 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +5623.072265625 +20 +1.1187264222639604e-13 +30 +282.88901052868596 +11 +5517.064453125 +21 +1.1643279656387007e-13 +31 +348.60776052868596 +12 +5616.744140625 +22 +1.1230035998344157e-13 +32 +289.05307302868596 +13 +5616.744140625 +23 +1.1230035998344157e-13 +33 +289.05307302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5623.072265625 +21 +1.1187264222639604e-13 +31 +282.88901052868596 +12 +5639.947265625 +22 +1.16941829483852e-13 +32 +355.94369802868596 +13 +5639.947265625 +23 +1.16941829483852e-13 +33 +355.94369802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5639.947265625 +21 +1.16941829483852e-13 +31 +355.94369802868596 +12 +5692.751953125 +22 +1.1768667637634955e-13 +32 +366.67807302868596 +13 +5692.751953125 +23 +1.1768667637634955e-13 +33 +366.67807302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5692.751953125 +21 +1.1768667637634955e-13 +31 +366.67807302868596 +12 +5698.119140625 +22 +1.3152976971464447e-13 +32 +566.178073028686 +13 +5698.119140625 +23 +1.3152976971464447e-13 +33 +566.178073028686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +5739.603515625 +20 +1.067481606581433e-13 +30 +209.03744802868596 +11 +5698.119140625 +21 +1.3152976971464447e-13 +31 +566.178073028686 +12 +5732.900390625 +22 +1.2813404851041987e-13 +32 +517.240573028686 +13 +5732.900390625 +23 +1.2813404851041987e-13 +33 +517.240573028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6258.111328125 +20 +1.330796367202125e-13 +30 +588.514010528686 +11 +6182.384765625 +21 +1.1334769928206256e-13 +31 +304.14682302868596 +12 +6182.384765625 +22 +1.323543054668197e-13 +32 +578.060885528686 +13 +6182.384765625 +23 +1.323543054668197e-13 +33 +578.060885528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6182.384765625 +20 +1.1334769928206256e-13 +30 +304.14682302868596 +11 +6258.111328125 +21 +1.330796367202125e-13 +31 +588.514010528686 +12 +6243.697265625 +22 +1.1307610663785495e-13 +32 +300.23276052868596 +13 +6243.697265625 +23 +1.1307610663785495e-13 +33 +300.23276052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6409.587890625 +20 +1.337821997279831e-13 +30 +598.639010528686 +11 +6365.291015625 +21 +1.1177506403087234e-13 +31 +281.48276052868596 +12 +6352.095703125 +22 +1.3202416590529786e-13 +32 +573.303073028686 +13 +6352.095703125 +23 +1.3202416590529786e-13 +33 +573.303073028686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +5859.626953125 +20 +1.072832144302649e-13 +30 +216.74838552868596 +11 +5991.322265625 +21 +1.1381282201405885e-13 +31 +310.84994802868596 +12 +6425.173828125 +22 +1.0541784459250358e-13 +32 +189.86557302868596 +13 +6425.173828125 +23 +1.0541784459250358e-13 +33 +189.86557302868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +5991.322265625 +20 +1.1381282201405885e-13 +30 +310.84994802868596 +11 +5859.626953125 +21 +1.072832144302649e-13 +31 +216.74838552868596 +12 +5922.228515625 +22 +1.155253193454997e-13 +32 +335.52963552868596 +13 +5922.228515625 +23 +1.155253193454997e-13 +33 +335.52963552868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6425.173828125 +20 +1.0541784459250358e-13 +30 +189.86557302868596 +11 +5991.322265625 +21 +1.1381282201405885e-13 +31 +310.84994802868596 +12 +6018.791015625 +22 +1.1335420449509748e-13 +32 +304.24057302868596 +13 +6018.791015625 +23 +1.1335420449509748e-13 +33 +304.24057302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6425.173828125 +20 +1.0541784459250358e-13 +30 +189.86557302868596 +11 +6018.791015625 +21 +1.1335420449509748e-13 +31 +304.24057302868596 +12 +6182.384765625 +22 +1.1334769928206256e-13 +32 +304.14682302868596 +13 +6182.384765625 +23 +1.1334769928206256e-13 +33 +304.14682302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6425.173828125 +20 +1.0541784459250358e-13 +30 +189.86557302868596 +11 +6182.384765625 +21 +1.1334769928206256e-13 +31 +304.14682302868596 +12 +6243.697265625 +22 +1.1307610663785495e-13 +32 +300.23276052868596 +13 +6243.697265625 +23 +1.1307610663785495e-13 +33 +300.23276052868596 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +6425.173828125 +20 +1.0541784459250358e-13 +30 +189.86557302868596 +11 +6243.697265625 +21 +1.1307610663785495e-13 +31 +300.23276052868596 +12 +6365.291015625 +22 +1.1177506403087234e-13 +32 +281.48276052868596 +13 +6365.291015625 +23 +1.1177506403087234e-13 +33 +281.48276052868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6425.173828125 +20 +1.0541784459250358e-13 +30 +189.86557302868596 +11 +6365.291015625 +21 +1.1177506403087234e-13 +31 +281.48276052868596 +12 +6409.587890625 +22 +1.337821997279831e-13 +32 +598.639010528686 +13 +6409.587890625 +23 +1.337821997279831e-13 +33 +598.639010528686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +6425.173828125 +20 +1.0541784459250358e-13 +30 +189.86557302868596 +11 +6409.587890625 +21 +1.337821997279831e-13 +31 +598.639010528686 +12 +6411.626953125 +22 +1.336260746151452e-13 +32 +596.389010528686 +13 +6411.626953125 +23 +1.336260746151452e-13 +33 +596.389010528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6602.783203125 +20 +6.11303542508157e-14 +30 +-448.38442697131404 +11 +5859.626953125 +21 +1.072832144302649e-13 +31 +216.74838552868596 +12 +6425.173828125 +22 +1.0541784459250358e-13 +32 +189.86557302868596 +13 +6425.173828125 +23 +1.0541784459250358e-13 +33 +189.86557302868596 +70 +0 + 0 +3DFACE + 8 +ship2 +10 +6472.025390625 +20 +1.0540483416643376e-13 +30 +189.67807302868596 +11 +6602.783203125 +21 +6.11303542508157e-14 +31 +-448.38442697131404 +12 +6425.173828125 +22 +1.0541784459250358e-13 +32 +189.86557302868596 +13 +6425.173828125 +23 +1.0541784459250358e-13 +33 +189.86557302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6602.783203125 +20 +6.11303542508157e-14 +30 +-448.38442697131404 +11 +6472.025390625 +21 +1.0540483416643376e-13 +31 +189.67807302868596 +12 +6492.416015625 +22 +1.0628141162288829e-13 +32 +202.31088552868596 +13 +6492.416015625 +23 +1.0628141162288829e-13 +33 +202.31088552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6602.783203125 +20 +6.11303542508157e-14 +30 +-448.38442697131404 +11 +6492.416015625 +21 +1.0628141162288829e-13 +31 +202.31088552868596 +12 +6517.751953125 +22 +1.0988692594748883e-13 +32 +254.27182302868596 +13 +6517.751953125 +23 +1.0988692594748883e-13 +33 +254.27182302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6602.783203125 +20 +6.11303542508157e-14 +30 +-448.38442697131404 +11 +6517.751953125 +21 +1.0988692594748883e-13 +31 +254.27182302868596 +12 +6618.533203125 +22 +1.096722539173367e-13 +32 +251.17807302868596 +13 +6618.533203125 +23 +1.096722539173367e-13 +33 +251.17807302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6602.783203125 +20 +6.11303542508157e-14 +30 +-448.38442697131404 +11 +6618.533203125 +21 +1.096722539173367e-13 +31 +251.17807302868596 +12 +6958.306640625 +22 +1.1008208233853622e-13 +32 +257.08432302868596 +13 +6958.306640625 +23 +1.1008208233853622e-13 +33 +257.08432302868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +6958.306640625 +20 +1.1008208233853622e-13 +30 +257.08432302868596 +11 +6618.533203125 +21 +1.096722539173367e-13 +31 +251.17807302868596 +12 +6775.822265625 +22 +1.1010647688741715e-13 +32 +257.43588552868596 +13 +6775.822265625 +23 +1.1010647688741715e-13 +33 +257.43588552868596 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +6775.822265625 +20 +1.1010647688741715e-13 +30 +257.43588552868596 +11 +6618.533203125 +21 +1.096722539173367e-13 +31 +251.17807302868596 +12 +6632.853515625 +22 +1.1127253632392531e-13 +32 +274.24057302868596 +13 +6632.853515625 +23 +1.1127253632392531e-13 +33 +274.24057302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6775.822265625 +20 +1.1010647688741715e-13 +30 +257.43588552868596 +11 +6632.853515625 +21 +1.1127253632392531e-13 +31 +274.24057302868596 +12 +6760.845703125 +22 +1.1036343280229621e-13 +32 +261.13901052868596 +13 +6760.845703125 +23 +1.1036343280229621e-13 +33 +261.13901052868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +6760.845703125 +20 +1.1036343280229621e-13 +30 +261.13901052868596 +11 +6632.853515625 +21 +1.1127253632392531e-13 +31 +274.24057302868596 +12 +6660.720703125 +22 +1.1283704005882189e-13 +32 +296.78744802868596 +13 +6660.720703125 +23 +1.1283704005882189e-13 +33 +296.78744802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6760.845703125 +20 +1.1036343280229621e-13 +30 +261.13901052868596 +11 +6660.720703125 +21 +1.1283704005882189e-13 +31 +296.78744802868596 +12 +6685.025390625 +22 +1.13315173216888e-13 +32 +303.67807302868596 +13 +6685.025390625 +23 +1.13315173216888e-13 +33 +303.67807302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +6760.845703125 +20 +1.1036343280229621e-13 +30 +261.13901052868596 +11 +6685.025390625 +21 +1.13315173216888e-13 +31 +303.67807302868596 +12 +6700.025390625 +22 +1.1313627985842789e-13 +32 +301.09994802868596 +13 +6700.025390625 +23 +1.1313627985842789e-13 +33 +301.09994802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6958.306640625 +20 +1.1008208233853622e-13 +30 +257.08432302868596 +11 +6775.822265625 +21 +1.1010647688741715e-13 +31 +257.43588552868596 +12 +6869.150390625 +22 +1.1207430383047834e-13 +32 +285.79526052868596 +13 +6869.150390625 +23 +1.1207430383047834e-13 +33 +285.79526052868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6832.447265625 +20 +1.8655736677697377e-13 +30 +1359.209323028686 +11 +6723.673828125 +21 +1.7821280475643908e-13 +31 +1238.951510528686 +12 +6692.994140625 +22 +1.803432620253731e-13 +32 +1269.654635528686 +13 +6692.994140625 +23 +1.803432620253731e-13 +33 +1269.654635528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6723.673828125 +20 +1.7821280475643908e-13 +30 +1238.951510528686 +11 +6832.447265625 +21 +1.8655736677697377e-13 +31 +1359.209323028686 +12 +6793.728515625 +22 +1.8099053072234694e-13 +32 +1278.982760528686 +13 +6793.728515625 +23 +1.8099053072234694e-13 +33 +1278.982760528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +6793.728515625 +20 +1.8099053072234694e-13 +30 +1278.982760528686 +11 +6832.447265625 +21 +1.8655736677697377e-13 +31 +1359.209323028686 +12 +6822.861328125 +22 +1.7109284908972677e-13 +32 +1136.342135528686 +13 +6822.861328125 +23 +1.7109284908972677e-13 +33 +1136.342135528686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +6822.861328125 +20 +1.7109284908972677e-13 +30 +1136.342135528686 +11 +6762.416015625 +21 +1.6836716482809821e-13 +31 +1097.060885528686 +12 +6750.650390625 +22 +1.7172385475411334e-13 +32 +1145.435885528686 +13 +6750.650390625 +23 +1.7172385475411334e-13 +33 +1145.435885528686 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6762.416015625 +20 +1.6836716482809821e-13 +30 +1097.060885528686 +11 +6822.861328125 +21 +1.7109284908972677e-13 +31 +1136.342135528686 +12 +6807.697265625 +22 +1.6592283103022964e-13 +32 +1061.834323028686 +13 +6807.697265625 +23 +1.6592283103022964e-13 +33 +1061.834323028686 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +6807.697265625 +20 +1.6592283103022964e-13 +30 +1061.834323028686 +11 +6822.861328125 +21 +1.7109284908972677e-13 +31 +1136.342135528686 +12 +6869.150390625 +22 +1.1207430383047834e-13 +32 +285.79526052868596 +13 +6869.150390625 +23 +1.1207430383047834e-13 +33 +285.79526052868596 +70 +3 + 0 +3DFACE + 8 +ship2 +10 +6869.150390625 +20 +1.1207430383047834e-13 +30 +285.79526052868596 +11 +6822.861328125 +21 +1.7109284908972677e-13 +31 +1136.342135528686 +12 +6832.447265625 +22 +1.8655736677697377e-13 +32 +1359.209323028686 +13 +6832.447265625 +23 +1.8655736677697377e-13 +33 +1359.209323028686 +70 +15 + 0 +3DFACE + 8 +ship2 +10 +6869.150390625 +20 +1.1207430383047834e-13 +30 +285.79526052868596 +11 +6832.447265625 +21 +1.8655736677697377e-13 +31 +1359.209323028686 +12 +6958.306640625 +22 +1.1008208233853622e-13 +32 +257.08432302868596 +13 +6958.306640625 +23 +1.1008208233853622e-13 +33 +257.08432302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6958.306640625 +20 +1.1008208233853622e-13 +30 +257.08432302868596 +11 +6637.001953125 +21 +6.156457722089614e-14 +31 +-442.12661447131404 +12 +6602.783203125 +22 +6.11303542508157e-14 +32 +-448.38442697131404 +13 +6602.783203125 +23 +6.11303542508157e-14 +33 +-448.38442697131404 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +6637.001953125 +20 +6.156457722089614e-14 +30 +-442.12661447131404 +11 +6958.306640625 +21 +1.1008208233853622e-13 +31 +257.08432302868596 +12 +7215.087890625 +22 +6.435693991613256e-14 +32 +-401.88442697131404 +13 +7215.087890625 +23 +6.435693991613256e-14 +33 +-401.88442697131404 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +7391.478515625 +20 +1.059252512092268e-13 +30 +197.17807302868596 +11 +8232.978515625 +21 +5.684341886080802e-14 +31 +-510.16567697131404 +12 +7215.087890625 +22 +6.435693991613256e-14 +32 +-401.88442697131404 +13 +7215.087890625 +23 +6.435693991613256e-14 +33 +-401.88442697131404 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +8232.978515625 +20 +5.684341886080802e-14 +30 +-510.16567697131404 +11 +7391.478515625 +21 +1.059252512092268e-13 +31 +197.17807302868596 +12 +7567.892578125 +22 +1.0771418479382788e-13 +32 +222.95932302868596 +13 +7567.892578125 +23 +1.0771418479382788e-13 +33 +222.95932302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +7180.728515625 +20 +1.0958605984462411e-13 +30 +249.93588552868596 +11 +7215.087890625 +21 +6.435693991613256e-14 +31 +-401.88442697131404 +12 +6958.306640625 +22 +1.1008208233853622e-13 +32 +257.08432302868596 +13 +6958.306640625 +23 +1.1008208233853622e-13 +33 +257.08432302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +7215.087890625 +20 +6.435693991613256e-14 +30 +-401.88442697131404 +11 +7180.728515625 +21 +1.0958605984462411e-13 +31 +249.93588552868596 +12 +7270.306640625 +22 +1.0715473647282536e-13 +32 +214.89682302868596 +13 +7270.306640625 +23 +1.0715473647282536e-13 +33 +214.89682302868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +7215.087890625 +20 +6.435693991613256e-14 +30 +-401.88442697131404 +11 +7270.306640625 +21 +1.0715473647282536e-13 +31 +214.89682302868596 +12 +7288.353515625 +22 +1.0683923364063208e-13 +32 +210.34994802868596 +13 +7288.353515625 +23 +1.0683923364063208e-13 +33 +210.34994802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +7215.087890625 +20 +6.435693991613256e-14 +30 +-401.88442697131404 +11 +7288.353515625 +21 +1.0683923364063208e-13 +31 +210.34994802868596 +12 +7391.478515625 +22 +1.059252512092268e-13 +32 +197.17807302868596 +13 +7391.478515625 +23 +1.059252512092268e-13 +33 +197.17807302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +7567.892578125 +20 +1.0771418479382788e-13 +30 +222.95932302868596 +11 +7391.478515625 +21 +1.059252512092268e-13 +31 +197.17807302868596 +12 +7502.830078125 +22 +1.122271763367988e-13 +32 +287.99838552868596 +13 +7502.830078125 +23 +1.122271763367988e-13 +33 +287.99838552868596 +70 +0 + 0 +3DFACE + 8 +ship2 +10 +7956.978515625 +20 +1.0916159469409603e-13 +30 +243.81869802868596 +11 +8232.978515625 +21 +5.684341886080802e-14 +31 +-510.16567697131404 +12 +7567.892578125 +22 +1.0771418479382788e-13 +32 +222.95932302868596 +13 +7567.892578125 +23 +1.0771418479382788e-13 +33 +222.95932302868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +8232.978515625 +20 +5.684341886080802e-14 +30 +-510.16567697131404 +11 +7956.978515625 +21 +1.0916159469409603e-13 +31 +243.81869802868596 +12 +7994.548828125 +22 +1.0959907027069393e-13 +32 +250.12338552868596 +13 +7994.548828125 +23 +1.0959907027069393e-13 +33 +250.12338552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +8232.978515625 +20 +5.684341886080802e-14 +30 +-510.16567697131404 +11 +7994.548828125 +21 +1.0959907027069393e-13 +31 +250.12338552868596 +12 +8034.861328125 +22 +1.0962997003260977e-13 +32 +250.56869802868596 +13 +8034.861328125 +23 +1.0962997003260977e-13 +33 +250.56869802868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +8232.978515625 +20 +5.684341886080802e-14 +30 +-510.16567697131404 +11 +8034.861328125 +21 +1.0962997003260977e-13 +31 +250.56869802868596 +12 +8046.298828125 +22 +1.0995035177457924e-13 +32 +255.18588552868596 +13 +8046.298828125 +23 +1.0995035177457924e-13 +33 +255.18588552868596 +70 +13 + 0 +3DFACE + 8 +ship2 +10 +8232.978515625 +20 +5.684341886080802e-14 +30 +-510.16567697131404 +11 +8046.298828125 +21 +1.0995035177457924e-13 +31 +255.18588552868596 +12 +8153.408203125 +22 +1.145349006609342e-13 +32 +321.25619802868596 +13 +8153.408203125 +23 +1.145349006609342e-13 +33 +321.25619802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +8174.970703125 +20 +1.146959046835483e-13 +30 +323.57651052868596 +11 +8232.978515625 +21 +5.684341886080802e-14 +31 +-510.16567697131404 +12 +8153.408203125 +22 +1.145349006609342e-13 +32 +321.25619802868596 +13 +8153.408203125 +23 +1.145349006609342e-13 +33 +321.25619802868596 +70 +1 + 0 +3DFACE + 8 +ship2 +10 +8232.978515625 +20 +5.684341886080802e-14 +30 +-510.16567697131404 +11 +8174.970703125 +21 +1.146959046835483e-13 +31 +323.57651052868596 +12 +8260.025390625 +22 +1.1327288933216106e-13 +32 +303.06869802868596 +13 +8260.025390625 +23 +1.1327288933216106e-13 +33 +303.06869802868596 +70 +1 + 0 +ENDSEC + 0 +EOF diff --git a/hacks/glx/sierpinski3d.c b/hacks/glx/sierpinski3d.c new file mode 100644 index 0000000..0317299 --- /dev/null +++ b/hacks/glx/sierpinski3d.c @@ -0,0 +1,581 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* Sierpinski3D --- 3D sierpinski gasket */ + +#if 0 +static const char sccsid[] = "@(#)sierpinski3D.c 00.01 99/11/04 xlockmore"; +#endif + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * 1999: written by Tim Robinson + * a 3-D representation of the Sierpinski gasket fractal. + * + * 10-Dec-99 jwz rewrote to draw a set of tetrahedrons instead of a + * random scattering of points. + */ + +#ifdef STANDALONE +# define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_gasket 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "150" +#define DEF_MAX_DEPTH "5" + +#include "rotator.h" +#include "gltrackball.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +static int max_depth; +static int speed; +static Bool do_spin; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + {"-depth", ".sierpinski3d.maxDepth", XrmoptionSepArg, 0 }, + {"-speed", ".sierpinski3d.speed", XrmoptionSepArg, 0 }, + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Int}, + {&max_depth, "maxDepth", "MaxDepth", DEF_MAX_DEPTH, t_Int}, +}; + + +ENTRYPOINT ModeSpecOpt gasket_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct gasket_description = +{"gasket", "init_gasket", "draw_gasket", NULL, + "draw_gasket", "init_gasket", "free_gasket", &gasket_opts, + 1000, 1, 2, 1, 4, 1.0, "", + "Shows GL's Sierpinski gasket", 0, NULL}; + +#endif + +typedef struct { + double x,y,z; +} XYZ; + +typedef struct { + GLuint gasket0, gasket1, gasket2, gasket3; + GLXContext *glx_context; + Window window; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int current_depth; + + int ncolors; + XColor *colors; + int ccolor0; + int ccolor1; + int ccolor2; + int ccolor3; + + int tick; + +} gasketstruct; + +static gasketstruct *gasket = NULL; + + +static void +triangle (GLfloat x1, GLfloat y1, GLfloat z1, + GLfloat x2, GLfloat y2, GLfloat z2, + GLfloat x3, GLfloat y3, GLfloat z3, + Bool wireframe_p) +{ + if (wireframe_p) + glBegin (GL_LINE_LOOP); + else + glBegin (GL_TRIANGLES); + glVertex3f (x1, y1, z1); + glVertex3f (x2, y2, z2); + glVertex3f (x3, y3, z3); + glEnd(); +} + +static void +four_tetras (gasketstruct *gp, + XYZ *outer, XYZ *normals, + Bool wireframe_p, int countdown, int which, + int *countP) +{ + if (countdown <= 0) + { + (*countP)++; + if (which == 0) + { + glNormal3f (normals[0].x, normals[0].y, normals[0].z); + triangle (outer[0].x, outer[0].y, outer[0].z, + outer[1].x, outer[1].y, outer[1].z, + outer[2].x, outer[2].y, outer[2].z, + wireframe_p); + } + else if (which == 1) + { + glNormal3f (normals[1].x, normals[1].y, normals[1].z); + triangle (outer[0].x, outer[0].y, outer[0].z, + outer[3].x, outer[3].y, outer[3].z, + outer[1].x, outer[1].y, outer[1].z, + wireframe_p); + } + else if (which == 2) + { + glNormal3f (normals[2].x, normals[2].y, normals[2].z); + triangle (outer[0].x, outer[0].y, outer[0].z, + outer[2].x, outer[2].y, outer[2].z, + outer[3].x, outer[3].y, outer[3].z, + wireframe_p); + } + else + { + glNormal3f (normals[3].x, normals[3].y, normals[3].z); + triangle (outer[1].x, outer[1].y, outer[1].z, + outer[3].x, outer[3].y, outer[3].z, + outer[2].x, outer[2].y, outer[2].z, + wireframe_p); + } + } + else + { +# define M01 0 +# define M02 1 +# define M03 2 +# define M12 3 +# define M13 4 +# define M23 5 + XYZ inner[M23+1]; + XYZ corner[4]; + + inner[M01].x = (outer[0].x + outer[1].x) / 2.0; + inner[M01].y = (outer[0].y + outer[1].y) / 2.0; + inner[M01].z = (outer[0].z + outer[1].z) / 2.0; + + inner[M02].x = (outer[0].x + outer[2].x) / 2.0; + inner[M02].y = (outer[0].y + outer[2].y) / 2.0; + inner[M02].z = (outer[0].z + outer[2].z) / 2.0; + + inner[M03].x = (outer[0].x + outer[3].x) / 2.0; + inner[M03].y = (outer[0].y + outer[3].y) / 2.0; + inner[M03].z = (outer[0].z + outer[3].z) / 2.0; + + inner[M12].x = (outer[1].x + outer[2].x) / 2.0; + inner[M12].y = (outer[1].y + outer[2].y) / 2.0; + inner[M12].z = (outer[1].z + outer[2].z) / 2.0; + + inner[M13].x = (outer[1].x + outer[3].x) / 2.0; + inner[M13].y = (outer[1].y + outer[3].y) / 2.0; + inner[M13].z = (outer[1].z + outer[3].z) / 2.0; + + inner[M23].x = (outer[2].x + outer[3].x) / 2.0; + inner[M23].y = (outer[2].y + outer[3].y) / 2.0; + inner[M23].z = (outer[2].z + outer[3].z) / 2.0; + + countdown--; + + corner[0] = outer[0]; + corner[1] = inner[M01]; + corner[2] = inner[M02]; + corner[3] = inner[M03]; + four_tetras (gp, corner, normals, wireframe_p, countdown, which, countP); + + corner[0] = inner[M01]; + corner[1] = outer[1]; + corner[2] = inner[M12]; + corner[3] = inner[M13]; + four_tetras (gp, corner, normals, wireframe_p, countdown, which, countP); + + corner[0] = inner[M02]; + corner[1] = inner[M12]; + corner[2] = outer[2]; + corner[3] = inner[M23]; + four_tetras (gp, corner, normals, wireframe_p, countdown, which, countP); + + corner[0] = inner[M03]; + corner[1] = inner[M13]; + corner[2] = inner[M23]; + corner[3] = outer[3]; + four_tetras (gp, corner, normals, wireframe_p, countdown, which, countP); + } +} + + +static void +compile_gasket(ModeInfo *mi, int which) +{ + Bool wireframe_p = MI_IS_WIREFRAME(mi); + gasketstruct *gp = &gasket[MI_SCREEN(mi)]; + int count = 0; + XYZ vertex[5]; + XYZ normal[4]; + + vertex[0].x = -1; vertex[0].y = -1; vertex[0].z = -1; + vertex[1].x = 1; vertex[1].y = 1; vertex[1].z = -1; + vertex[2].x = 1; vertex[2].y = -1; vertex[2].z = 1; + vertex[3].x = -1; vertex[3].y = 1; vertex[3].z = 1; + vertex[4].x = 0; vertex[4].y = 0; vertex[4].z = 0; /* center */ + + normal[0].x = 1; normal[0].y = -1; normal[0].z = -1; + normal[1].x = -1; normal[1].y = 1; normal[1].z = -1; + normal[2].x = -1; normal[2].y = -1; normal[2].z = 1; + normal[3].x = 1; normal[3].y = 1; normal[3].z = 1; + + four_tetras (gp, vertex, normal, wireframe_p, + (gp->current_depth < 0 + ? -gp->current_depth : gp->current_depth), + which, + &count); + mi->polygon_count += count; +} + +static void +draw(ModeInfo *mi) +{ + Bool wireframe_p = MI_IS_WIREFRAME(mi); + gasketstruct *gp = &gasket[MI_SCREEN(mi)]; + + static const GLfloat pos[] = {-4.0, 3.0, 10.0, 1.0}; + static const GLfloat white[] = {1.0, 1.0, 1.0, 1.0}; + + GLfloat color0[] = {0.0, 0.0, 0.0, 1.0}; + GLfloat color1[] = {0.0, 0.0, 0.0, 1.0}; + GLfloat color2[] = {0.0, 0.0, 0.0, 1.0}; + GLfloat color3[] = {0.0, 0.0, 0.0, 1.0}; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (!wireframe_p) + { + glColor4fv (white); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + + color0[0] = gp->colors[gp->ccolor0].red / 65536.0; + color0[1] = gp->colors[gp->ccolor0].green / 65536.0; + color0[2] = gp->colors[gp->ccolor0].blue / 65536.0; + + color1[0] = gp->colors[gp->ccolor1].red / 65536.0; + color1[1] = gp->colors[gp->ccolor1].green / 65536.0; + color1[2] = gp->colors[gp->ccolor1].blue / 65536.0; + + color2[0] = gp->colors[gp->ccolor2].red / 65536.0; + color2[1] = gp->colors[gp->ccolor2].green / 65536.0; + color2[2] = gp->colors[gp->ccolor2].blue / 65536.0; + + color3[0] = gp->colors[gp->ccolor3].red / 65536.0; + color3[1] = gp->colors[gp->ccolor3].green / 65536.0; + color3[2] = gp->colors[gp->ccolor3].blue / 65536.0; + + gp->ccolor0++; + gp->ccolor1++; + gp->ccolor2++; + gp->ccolor3++; + if (gp->ccolor0 >= gp->ncolors) gp->ccolor0 = 0; + if (gp->ccolor1 >= gp->ncolors) gp->ccolor1 = 0; + if (gp->ccolor2 >= gp->ncolors) gp->ccolor2 = 0; + if (gp->ccolor3 >= gp->ncolors) gp->ccolor3 = 0; + + glShadeModel(GL_SMOOTH); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + } + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glPushMatrix(); + + { + double x, y, z; + get_position (gp->rot, &x, &y, &z, !gp->button_down_p); + glTranslatef((x - 0.5) * 10, + (y - 0.5) * 10, + (z - 0.5) * 20); + + gltrackball_rotate (gp->trackball); + + get_rotation (gp->rot, &x, &y, &z, !gp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + glScalef (4, 4, 4); + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color0); + glCallList(gp->gasket0); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color1); + glCallList(gp->gasket1); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color2); + glCallList(gp->gasket2); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color3); + glCallList(gp->gasket3); + + glPopMatrix(); + + + if (gp->tick++ >= speed) + { + gp->tick = 0; + if (gp->current_depth >= max_depth) + gp->current_depth = -max_depth; + gp->current_depth++; + + /* We make four different lists so that each face of the tetrahedrons + can have a different color (all triangles facing in the same + direction have the same color, which is different from all + triangles facing in other directions.) + */ + glDeleteLists (gp->gasket0, 1); + glDeleteLists (gp->gasket1, 1); + glDeleteLists (gp->gasket2, 1); + glDeleteLists (gp->gasket3, 1); + + mi->polygon_count = 0; + glNewList (gp->gasket0, GL_COMPILE); compile_gasket (mi, 0); glEndList(); + glNewList (gp->gasket1, GL_COMPILE); compile_gasket (mi, 1); glEndList(); + glNewList (gp->gasket2, GL_COMPILE); compile_gasket (mi, 2); glEndList(); + glNewList (gp->gasket3, GL_COMPILE); compile_gasket (mi, 3); glEndList(); + + mi->recursion_depth = (gp->current_depth > 0 + ? gp->current_depth + : -gp->current_depth); + } +} + + +/* new window size or exposure */ +ENTRYPOINT void +reshape_gasket(ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + +static void +pinit(ModeInfo *mi) +{ + gasketstruct *gp = &gasket[MI_SCREEN(mi)]; + + /* draw the gasket */ + gp->gasket0 = glGenLists(1); + gp->gasket1 = glGenLists(1); + gp->gasket2 = glGenLists(1); + gp->gasket3 = glGenLists(1); + gp->current_depth = 1; /* start out at level 1, not 0 */ +} + + +ENTRYPOINT Bool +gasket_handle_event (ModeInfo *mi, XEvent *event) +{ + gasketstruct *gp = &gasket[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, gp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &gp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == '+' || c == '=' || + keysym == XK_Up || keysym == XK_Right || keysym == XK_Next) + { + gp->tick = speed; + gp->current_depth += (gp->current_depth > 0 ? 1 : -1); + gp->current_depth--; + return True; + } + else if (c == '-' || c == '_' || + keysym == XK_Down || keysym == XK_Left || keysym == XK_Prior) + { + gp->tick = speed; + gp->current_depth -= (gp->current_depth > 0 ? 1 : -1); + gp->current_depth--; + return True; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + goto DEF; + } + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + DEF: + gp->tick = speed; + return True; + } + + return False; +} + + +ENTRYPOINT void +init_gasket(ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + gasketstruct *gp; + + MI_INIT (mi, gasket); + gp = &gasket[screen]; + + gp->window = MI_WINDOW(mi); + + { + double spin_speed = 1.0; + double wander_speed = 0.03; + gp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + 1.0, + do_wander ? wander_speed : 0, + True); + gp->trackball = gltrackball_init (True); + } + + gp->ncolors = 255; + gp->colors = (XColor *) calloc(gp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + gp->colors, &gp->ncolors, + False, 0, False); + gp->ccolor0 = 0; + gp->ccolor1 = gp->ncolors * 0.25; + gp->ccolor2 = gp->ncolors * 0.5; + gp->ccolor3 = gp->ncolors * 0.75; + gp->tick = 999999; + + if ((gp->glx_context = init_GL(mi)) != NULL) + { + reshape_gasket(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + pinit(mi); + } + else + { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void +draw_gasket(ModeInfo * mi) +{ + gasketstruct *gp = &gasket[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!gp->glx_context) return; + + glDrawBuffer(GL_BACK); + + /* 0 = 4 polygons + 1 = 16 polygons + 2 = 64 polygons + 3 = 256 polygons + 4 = 1,024 polygons + 5 = 4,096 polygons + 6 = 16,384 polygons + 7 = 65,536 polygons, 30 fps (3GHz Core 2 Duo, GeForce 8800 GS) + 8 = 262,144 polygons, 12 fps + 9 = 1,048,576 polygons, 4 fps + 10 = 4,194,304 polygons, 1 fps + 11 = 16,777,216 polygons, 0.3 fps + 12 = 67,108,864 polygons, OOM! + 13 = 268,435,456 polygons + 14 = 1,073,741,824 polygons, 31 bits + 15 = 4,294,967,296 polygons, 33 bits + 16 = 17,179,869,184 polygons, 35 bits + */ + if (max_depth > 10) + max_depth = 10; + + glXMakeCurrent(display, window, *(gp->glx_context)); + draw(mi); + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(display, window); +} + +ENTRYPOINT void +free_gasket(ModeInfo * mi) +{ + gasketstruct *gp = &gasket[MI_SCREEN(mi)]; + + if (gp->glx_context) + { + /* Display lists MUST be freed while their glXContext is current. */ + glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context)); + + if (glIsList(gp->gasket0)) glDeleteLists(gp->gasket0, 1); + if (glIsList(gp->gasket1)) glDeleteLists(gp->gasket1, 1); + if (glIsList(gp->gasket2)) glDeleteLists(gp->gasket2, 1); + if (glIsList(gp->gasket3)) glDeleteLists(gp->gasket3, 1); + } +} + +XSCREENSAVER_MODULE_2 ("Sierpinski3D", sierpinski3d, gasket) + +/*********************************************************/ + +#endif diff --git a/hacks/glx/sierpinski3d.man b/hacks/glx/sierpinski3d.man new file mode 100644 index 0000000..ed3b69a --- /dev/null +++ b/hacks/glx/sierpinski3d.man @@ -0,0 +1,67 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +sierpinski3d - 3D Sierpinski triangle fractal. +.SH SYNOPSIS +.B sierpinski3d +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-depth \fInumber\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +This draws the three-dimensional variant of the recursive Sierpinski +triangle fractal, using GL. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Number of frames before changing shape. Default: 150. +.TP 8 +.B \-depth \fInumber\fP +Max depth to descend. Default: 5. You probably don't have enough +memory for 6. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Tim Robinson and Jamie Zawinski. Permission to +use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. No representations are made about the suitability of +this software for any purpose. It is provided "as is" without express +or implied warranty. +.SH AUTHOR +Tim Robinson and Jamie Zawinski. diff --git a/hacks/glx/skytentacles.c b/hacks/glx/skytentacles.c new file mode 100644 index 0000000..1061482 --- /dev/null +++ b/hacks/glx/skytentacles.c @@ -0,0 +1,1103 @@ +/* Sky Tentacles, Copyright (c) 2008-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 9 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +# define free_tentacles 0 +# define release_tentacles 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#include "ximage-loader.h" +#include "images/gen/scales_png.h" + +#ifdef USE_GL /* whole file */ + +# ifndef HAVE_JWZGLES +# define HAVE_POLYGONMODE +# endif + +#define DEF_SPEED "1.0" +#define DEF_SMOOTH "True" +#define DEF_TEXTURE "True" +#define DEF_CEL "False" +#define DEF_INTERSECT "False" +#define DEF_SLICES "16" +#define DEF_SEGMENTS "24" +#define DEF_WIGGLINESS "0.35" +#define DEF_FLEXIBILITY "0.35" +#define DEF_THICKNESS "1.0" +#define DEF_LENGTH "9.0" +#define DEF_COLOR "#305A30" +#define DEF_STRIPE "#451A30" +#define DEF_SUCKER "#453E30" +#define DEF_DEBUG "False" + +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +typedef struct { + GLfloat length; /* length of the segment coming out of this segment */ + GLfloat th; /* vector tilt (on yz plane) from previous segment */ + GLfloat phi; /* vector rotation (on xy plane) from previous segment */ + GLfloat thickness; /* radius of tentacle at the bottom of this segment */ + rotator *rot; /* motion modeller */ +} segment; + +typedef struct { + ModeInfo *mi; + GLfloat x, y, z; /* position of the base */ + int nsegments; + segment *segments; + GLfloat tentacle_color[4], stripe_color[4], sucker_color[4]; +} tentacle; + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + + int ntentacles; + int tentacles_size; + tentacle **tentacles; + GLfloat tentacle_color[4], stripe_color[4], sucker_color[4]; + + int torus_polys; + int torus_step; + XYZ *torus_points; + XYZ *torus_normals; + + GLfloat line_thickness; + GLfloat outline_color[4]; + XImage *texture; + GLuint texid; + + Bool left_p; + + +} tentacles_configuration; + +static tentacles_configuration *tcs = NULL; + +static int debug_p; +static GLfloat arg_speed; +static int smooth_p; +static int texture_p; +static int cel_p; +static int intersect_p; +static int arg_slices; +static int arg_segments; +static GLfloat arg_thickness; +static GLfloat arg_length; +static GLfloat arg_wiggliness; +static GLfloat arg_flexibility; +static char *arg_color, *arg_stripe, *arg_sucker; + +/* we can only have one light when doing cel shading */ +static GLfloat light_pos[4] = {1.0, 1.0, 1.0, 0.0}; + + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-no-smooth", ".smooth", XrmoptionNoArg, "False" }, + { "-texture", ".texture", XrmoptionNoArg, "True" }, + { "-no-texture", ".texture", XrmoptionNoArg, "False" }, + { "-cel", ".cel", XrmoptionNoArg, "True" }, + { "-no-cel", ".cel", XrmoptionNoArg, "False" }, + { "-intersect", ".intersect", XrmoptionNoArg, "True" }, + { "-no-intersect", ".intersect", XrmoptionNoArg, "False" }, + { "-slices", ".slices", XrmoptionSepArg, 0 }, + { "-segments", ".segments", XrmoptionSepArg, 0 }, + { "-thickness", ".thickness", XrmoptionSepArg, 0 }, + { "-length", ".length", XrmoptionSepArg, 0 }, + { "-wiggliness", ".wiggliness", XrmoptionSepArg, 0 }, + { "-flexibility", ".flexibility", XrmoptionSepArg, 0 }, + { "-color", ".tentacleColor", XrmoptionSepArg, 0 }, + { "-stripe-color", ".stripeColor", XrmoptionSepArg, 0 }, + { "-sucker-color", ".suckerColor", XrmoptionSepArg, 0 }, + { "-debug", ".debug", XrmoptionNoArg, "True" }, +}; + +static argtype vars[] = { + {&arg_speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&smooth_p, "smooth", "Smooth", DEF_SMOOTH, t_Bool}, + {&texture_p, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&cel_p, "cel", "Cel", DEF_CEL, t_Bool}, + {&intersect_p, "intersect", "Intersect", DEF_INTERSECT, t_Bool}, + {&arg_slices, "slices", "Slices", DEF_SLICES, t_Int}, + {&arg_segments, "segments", "Segments", DEF_SEGMENTS, t_Int}, + {&arg_thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float}, + {&arg_length, "length", "Length", DEF_LENGTH, t_Float}, + {&arg_wiggliness, "wiggliness", "Wiggliness", DEF_WIGGLINESS, t_Float}, + {&arg_flexibility, "flexibility", "Flexibility", DEF_FLEXIBILITY, t_Float}, + {&arg_color, "tentacleColor", "Color", DEF_COLOR, t_String}, + {&arg_stripe, "stripeColor", "Color", DEF_STRIPE, t_String}, + {&arg_sucker, "suckerColor", "Color", DEF_SUCKER, t_String}, + {&debug_p, "debug", "Debug", DEF_DEBUG, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt tentacles_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_tentacles (ModeInfo *mi, int width, int height) +{ + tentacles_configuration *tc = &tcs[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); + + tc->line_thickness = (MI_IS_WIREFRAME (mi) ? 1 : MAX (3, width / 200)); +} + + +static void +normalize (GLfloat *x, GLfloat *y, GLfloat *z) +{ + GLfloat d = sqrt((*x)*(*x) + (*y)*(*y) + (*z)*(*z)); + *x /= d; + *y /= d; + *z /= d; +} + +static GLfloat +dot (GLfloat x0, GLfloat y0, GLfloat z0, + GLfloat x1, GLfloat y1, GLfloat z1) +{ + return x0*x1 + y0*y1 + z0*z1; +} + + +static void +compute_unit_torus (ModeInfo *mi, double ratio, int slices1, int slices2) +{ + tentacles_configuration *tc = &tcs[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME (mi); + int i, j, k, fp; + + if (wire) slices1 /= 2; + if (wire) slices2 /= 4; + if (slices1 < 3) slices1 = 3; + if (slices2 < 3) slices2 = 3; + + tc->torus_polys = slices1 * (slices2+1) * 2; + tc->torus_points = (XYZ *) calloc (tc->torus_polys + 1, + sizeof (*tc->torus_points)); + tc->torus_normals = (XYZ *) calloc (tc->torus_polys + 1, + sizeof (*tc->torus_normals)); + tc->torus_step = 2 * (slices2+1); + fp = 0; + for (i = 0; i < slices1; i++) + for (j = 0; j <= slices2; j++) + for (k = 0; k <= 1; k++) + { + double s = (i + k) % slices1 + 0.5; + double t = j % slices2; + XYZ p; + p.x = cos(t*M_PI*2/slices2) * cos(s*M_PI*2/slices1); + p.y = sin(t*M_PI*2/slices2) * cos(s*M_PI*2/slices1); + p.z = sin(s*M_PI*2/slices1); + tc->torus_normals[fp] = p; + + p.x = (1 + ratio * cos(s*M_PI*2/slices1)) * cos(t*M_PI*2/slices2) / 2; + p.y = (1 + ratio * cos(s*M_PI*2/slices1)) * sin(t*M_PI*2/slices2) / 2; + p.z = ratio * sin(s*M_PI*2/slices1) / 2; + tc->torus_points[fp] = p; + fp++; + } + if (fp != tc->torus_polys) abort(); + tc->torus_polys = fp; +} + + +/* Initializes a new tentacle and stores it in the list. + */ +static tentacle * +make_tentacle (ModeInfo *mi, int which, int total) +{ + tentacles_configuration *tc = &tcs[MI_SCREEN(mi)]; + tentacle *t = (tentacle *) calloc (1, sizeof (*t)); + double brightness; + int i; + + t->mi = mi; + + /* position tentacles on a grid */ + { + int cols = (int) (sqrt(total) + 0.5); + int rows = (total+cols-1) / cols; + int xx = which % cols; + int yy = which / cols; + double spc = arg_thickness * 0.8; + if (!intersect_p) cols = 1, xx = 0; + t->x = (cols * spc / 2) - (spc * (xx + 0.5)); + t->y = (rows * spc / 2) - (spc * (yy + 0.5)); + t->z = 0; + } + + /* Brighten or darken the colors of this tentacle from the default. + */ + brightness = 0.6 + frand(3.0); + memcpy (t->tentacle_color, tc->tentacle_color, 4 * sizeof(*t->tentacle_color)); + memcpy (t->stripe_color, tc->stripe_color, 4 * sizeof(*t->stripe_color)); + memcpy (t->sucker_color, tc->sucker_color, 4 * sizeof(*t->sucker_color)); +# define FROB(X) \ + t->X[0] *= brightness; if (t->X[0] > 1) t->X[0] = 1; \ + t->X[1] *= brightness; if (t->X[1] > 1) t->X[1] = 1; \ + t->X[2] *= brightness; if (t->X[2] > 1) t->X[2] = 1 + FROB (tentacle_color); + FROB (stripe_color); + FROB (sucker_color); +# undef FROB + + t->nsegments = (arg_segments) + BELLRAND(arg_segments); + + t->segments = (segment *) calloc (t->nsegments+1, sizeof(*t->segments)); + for (i = 0; i < t->nsegments; i++) + { + double spin_speed = 0; + double spin_accel = 0; + double wander_speed = arg_speed * (0.02 + BELLRAND(0.1)); + t->segments[i].rot = make_rotator (spin_speed, spin_speed, spin_speed, + spin_accel, wander_speed, True); + } + + t->segments[0].thickness = (((arg_thickness * 0.5) + + BELLRAND(arg_thickness * 0.6)) + / 1.0); + + if (tc->tentacles_size <= tc->ntentacles) + { + tc->tentacles_size = (tc->tentacles_size * 1.2) + tc->ntentacles + 2; + tc->tentacles = (tentacle **) + realloc (tc->tentacles, tc->tentacles_size * sizeof(*tc->tentacles)); + if (! tc->tentacles) + { + fprintf (stderr, "%s: out of memory (%d tentacles)\n", + progname, tc->tentacles_size); + exit (1); + } + } + + tc->tentacles[tc->ntentacles++] = t; + return t; +} + + +static void +draw_sucker (tentacle *t, Bool front_p) +{ + tentacles_configuration *tc = &tcs[MI_SCREEN(t->mi)]; + Bool wire = MI_IS_WIREFRAME (t->mi); + int i, j; + int strips = tc->torus_polys / tc->torus_step; + int points = 0; + + glFrontFace (front_p ? GL_CW : GL_CCW); + for (i = 0; i < strips; i++) + { + int ii = i * tc->torus_step; + + /* Leave off the polygons on the underside. This reduces polygon + count by about 10% with the default settings. */ + if (strips > 4 && i >= strips/2 && i < strips-1) + continue; + + glBegin (wire ? GL_LINE_STRIP : GL_QUAD_STRIP); + for (j = 0; j < tc->torus_step; j++) + { + XYZ sp = tc->torus_points[ii+j]; + XYZ sn = tc->torus_normals[ii+j]; + glNormal3f(sn.x, sn.y, sn.z); + glVertex3f(sp.x, sp.y, sp.z); + points++; + } + glEnd(); + } + t->mi->polygon_count += points/2; +} + +static void +draw_tentacle_1 (tentacle *t, Bool front_p, Bool outline_p) +{ + tentacles_configuration *tc = &tcs[MI_SCREEN(t->mi)]; + int i; + Bool wire = MI_IS_WIREFRAME (t->mi); + XYZ ctr = { 0,0,0 }; /* current position of base of segment */ + double cth = 0; /* overall orientation of current segment */ + double cphi = 0; + double cth_cos = 1, cth_sin = 0; + double cphi_cos = 1, cphi_sin = 0; + + GLfloat light[3]; /* vector to the light */ + + GLfloat t0 = 0.0; /* texture coordinate */ + + XYZ *ring, *oring; /* points around the edge (this, and previous) */ + XYZ *norm, *onorm; /* their normals */ + XYZ *ucirc; /* unit circle, to save some trig */ + + /* Which portion of the radius the indented/colored stripe takes up */ + int indented_points = arg_slices * 0.2; + + /* We do rotation this way to minimize the number of calls to sin/cos. + We have to hack the transformations manually instead of using + glRotate/glTranslate because those calls are not allowed *inside* + of a glBegin/glEnd block... + */ +# define ROT(P) do { \ + XYZ _p = P; \ + _p.y = ((P.y * cth_sin - P.x * cth_cos)); \ + _p.x = ((P.y * cth_cos + P.x * cth_sin) * cphi_sin - (P.z * cphi_cos)); \ + _p.z = ((P.y * cth_cos + P.x * cth_sin) * cphi_cos + (P.z * cphi_sin)); \ + P = _p; \ + } while(0) + + ring = (XYZ *) malloc (arg_slices * sizeof(*ring)); + norm = (XYZ *) malloc (arg_slices * sizeof(*norm)); + oring = (XYZ *) malloc (arg_slices * sizeof(*oring)); + onorm = (XYZ *) malloc (arg_slices * sizeof(*onorm)); + ucirc = (XYZ *) malloc (arg_slices * sizeof(*ucirc)); + + light[0] = light_pos[0]; + light[1] = light_pos[1]; + light[2] = light_pos[2]; + normalize (&light[0], &light[1], &light[2]); + + for (i = 0; i < arg_slices; i++) + { + double a = M_PI * 2 * i / arg_slices; + ucirc[i].x = cos(a); + ucirc[i].y = sin(a); + ucirc[i].z = 0; + } + + +# ifdef HAVE_POLYGONMODE + if (cel_p) + glPolygonMode (GL_FRONT_AND_BACK, (front_p ? GL_FILL : GL_LINE)); +# endif + + glPushMatrix(); + glTranslatef (t->x, t->y, t->z); + + if (debug_p) + { + glPushAttrib (GL_ENABLE_BIT); + glDisable (GL_LIGHTING); + glDisable (GL_TEXTURE_1D); + glDisable (GL_TEXTURE_2D); + glColor3f (1, 1, 1); + glLineWidth (1); + glBegin(GL_LINE_LOOP); + for (i = 0; i < arg_slices; i++) + glVertex3f (arg_thickness / 2 * cos (M_PI * 2 * i / arg_slices), + arg_thickness / 2 * sin (M_PI * 2 * i / arg_slices), + 0); + glEnd(); + glPopAttrib(); + } + + if (!front_p || outline_p) + glColor4fv (tc->outline_color); + else if (wire) + glColor4fv (t->tentacle_color); + else + { + static const GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat bshiny = 128.0; + glMaterialfv (GL_FRONT, GL_SPECULAR, bspec); + glMateriali (GL_FRONT, GL_SHININESS, bshiny); + } + + for (i = 0; i < t->nsegments; i++) + { + int j; + GLfloat t1 = t0 + i / (t->nsegments * M_PI * 2); + + for (j = 0; j < arg_slices; j++) + { + /* Construct a vertical disc at the origin, to use as the + base of this segment. + */ + double r = t->segments[i].thickness / 2; + + if (j <= indented_points/2 || j >= arg_slices-indented_points/2) + r *= 0.75; /* indent the stripe */ + + if (outline_p) + r *= 1.1; + + ring[j].x = r * ucirc[j].x; + ring[j].y = 0; + ring[j].z = r * ucirc[j].y; + + /* Then rotate the points by the angle of the current segment. */ + ROT(ring[j]); + + /* Then move the ring to the base of this segment. */ + ring[j].x += ctr.x; + ring[j].y += ctr.y; + ring[j].z += ctr.z; + } + + + /* Compute the normals of the faces on this segment. We do this + first so that the normals of the vertexes can be the average + of the normals of the faces. + #### Uh, except I didn't actually implement that... + but it would be a good idea. + */ + if (i > 0) + for (j = 0; j <= arg_slices; j++) + { + int j0 = j % arg_slices; + int j1 = (j+1) % arg_slices; + norm[j0] = calc_normal (oring[j0], ring[j0], ring[j1]); + } + + /* Draw! + */ + if (i > 0) + { + int j; + glLineWidth (tc->line_thickness); + glFrontFace (front_p ? GL_CCW : GL_CW); + glBegin (wire ? GL_LINES : smooth_p ? GL_QUAD_STRIP : GL_QUADS); + for (j = 0; j <= arg_slices; j++) + { + int j0 = j % arg_slices; + int j1 = (j+1) % arg_slices; + + GLfloat ts = j / (double) arg_slices; + + if (!front_p || outline_p) + glColor4fv (tc->outline_color); + else if (j <= indented_points/2 || + j >= arg_slices-indented_points/2) + { + glColor4fv (t->stripe_color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, + t->stripe_color); + } + else + { + glColor4fv (t->tentacle_color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, + t->tentacle_color); + } + + /* For cel shading, the 1d texture coordinate (s) is the + dot product of the lighting vector and the vertex normal. + */ + if (cel_p) + { + t0 = dot (light[0], light[1], light[2], + onorm[j0].x, onorm[j0].y, onorm[j0].z); + t1 = dot (light[0], light[1], light[2], + norm[j0].x, norm[j0].y, norm[j0].z); + if (t0 < 0) t0 = 0; + if (t1 < 0) t1 = 0; + } + + glTexCoord2f (t0, ts); + glNormal3f (onorm[j0].x, onorm[j0].y, onorm[j0].z); + glVertex3f (oring[j0].x, oring[j0].y, oring[j0].z); + + glTexCoord2f (t1, ts); + glNormal3f ( norm[j0].x, norm[j0].y, norm[j0].z); + glVertex3f ( ring[j0].x, ring[j0].y, ring[j0].z); + + if (!smooth_p) + { + ts = j1 / (double) arg_slices; + glTexCoord2f (t1, ts); + glVertex3f ( ring[j1].x, ring[j1].y, ring[j1].z); + glTexCoord2f (t0, ts); + glVertex3f (oring[j1].x, oring[j1].y, oring[j1].z); + } + t->mi->polygon_count++; + } + glEnd (); + + if (wire) + { + glBegin (GL_LINE_LOOP); + for (j = 0; j < arg_slices; j++) + glVertex3f (ring[j].x, ring[j].y, ring[j].z); + glEnd(); + } + + /* Now draw the suckers! + */ + { + double seg_length = arg_length / t->nsegments; + double sucker_size = arg_thickness / 5; + double sucker_spacing = sucker_size * 1.3; + int nsuckers = seg_length / sucker_spacing; + double oth = cth - t->segments[i-1].th; + double ophi = cphi - t->segments[i-1].phi; + int k; + + if (!wire) + glLineWidth (MAX (2, tc->line_thickness / 2.0)); + glDisable (GL_TEXTURE_2D); + + /* Sometimes we have N suckers on one segment; + sometimes we have one sucker every N segments. */ + if (nsuckers == 0) + { + int segs_per_sucker = + (int) ((sucker_spacing / seg_length) + 0.5); + nsuckers = (i % segs_per_sucker) ? 0 : 1; + } + + if (outline_p) + { + glColor4fv (tc->outline_color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, + tc->outline_color); + } + else if (front_p) + { + glColor4fv (t->sucker_color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, + t->sucker_color); + } + + for (k = 0; k < nsuckers; k++) + { + double scale; + XYZ p0 = ring[0]; + XYZ p1 = oring[0]; + XYZ p; + p.x = p0.x + (p1.x - p0.x) * (k + 0.5) / nsuckers; + p.y = p0.y + (p1.y - p0.y) * (k + 0.5) / nsuckers; + p.z = p0.z + (p1.z - p0.z) * (k + 0.5) / nsuckers; + + glPushMatrix(); + glTranslatef (p.x, p.y, p.z); + glRotatef (ophi * 180 / M_PI, 0, 1, 0); + glRotatef (-oth * 180 / M_PI, 1, 0, 0); + glRotatef (90, 1, 0, 0); + + { /* Not quite right: this is the slope of the outer edge + if the next segment was not tilted at all... If there + is any tilt, then the angle of this wall and the + opposite wall are very different. + */ + double slope = ((t->segments[i-1].thickness - + t->segments[i].thickness) / + t->segments[i].length); + glRotatef (-45 * slope, 1, 0, 0); + } + + scale = t->segments[i].thickness / arg_thickness; + scale *= 0.7 * sucker_size; + + glScalef (scale, scale, scale * 4); + + glTranslatef (0, 0, -0.1); /* embed */ + + if (outline_p) + { + scale = 1.1; + glScalef (scale, scale, scale); + } + + glTranslatef (1, 0, 0); /* left */ + draw_sucker (t, front_p); + + glTranslatef (-2, 0, 0); /* right */ + draw_sucker (t, front_p); + + glPopMatrix(); + } + + if (texture_p) glEnable (GL_TEXTURE_2D); + } + } + + /* Now draw the end caps. + */ + glLineWidth (tc->line_thickness); + if (!outline_p && (i == 0 || i == t->nsegments-1)) + { + int j; + GLfloat ctrz = ctr.z + ((i == 0 ? -1 : 1) * + t->segments[i].thickness / 4); + if (front_p) + { + glColor4fv (t->tentacle_color); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, + t->tentacle_color); + } + glFrontFace ((front_p ? i == 0 : i != 0) ? GL_CCW : GL_CW); + glBegin (wire ? GL_LINES : GL_TRIANGLE_FAN); + glNormal3f (0, 0, (i == 0 ? -1 : 1)); + glTexCoord2f (t0 - 0.25, 0.5); + glVertex3f (ctr.x, ctr.y, ctrz); + for (j = 0; j <= arg_slices; j++) + { + int jj = j % arg_slices; + GLfloat ts = j / (double) arg_slices; + glTexCoord2f (t0, ts); + glNormal3f (norm[jj].x, norm[jj].y, norm[jj].z); + glVertex3f (ring[jj].x, ring[jj].y, ring[jj].z); + if (wire) glVertex3f (ctr.x, ctr.y, ctrz); + t->mi->polygon_count++; + } + glEnd(); + } + + /* Now move to the end of this segment in preparation for the next. + */ + if (i != t->nsegments-1) + { + XYZ p; + p.x = 0; + p.y = t->segments[i].length; + p.z = 0; + ROT (p); + ctr.x += p.x; + ctr.y += p.y; + ctr.z += p.z; + + /* Accumulate the current angle and rotation, to keep track of the + rotation of the upcoming segment. + */ + cth += t->segments[i].th; + cphi += t->segments[i].phi; + + cth_sin = sin (cth); + cth_cos = cos (cth); + cphi_sin = sin (cphi); + cphi_cos = cos (cphi); + + memcpy (oring, ring, arg_slices * sizeof(*ring)); + memcpy (onorm, norm, arg_slices * sizeof(*norm)); + } + + t0 = t1; + } + + glPopMatrix(); + + free (ring); + free (norm); + free (oring); + free (onorm); + free (ucirc); +} + + +static void +draw_tentacle (tentacle *t, Bool front_p) +{ +# ifndef HAVE_POLYGONMODE + Bool wire = MI_IS_WIREFRAME (t->mi); + if (!wire && cel_p && front_p) + { + draw_tentacle_1 (t, front_p, True); + glClear (GL_DEPTH_BUFFER_BIT); + } +# endif /* HAVE_POLYGONMODE */ + + draw_tentacle_1 (t, front_p, False); +} + + +static void +move_tentacle (tentacle *t) +{ + /* tentacles_configuration *tc = &tcs[MI_SCREEN(t->mi)]; */ + GLfloat len = 0; + double pos = 0; + int i, j; + int skip = t->nsegments * (1 - (arg_wiggliness + 0.5)); + int tick = 0; + int last = 0; + + for (i = 0; i < t->nsegments; i++) + { + if (++tick >= skip || i == t->nsegments-1) + { + /* randomize the motion of this segment... */ + double x, y, z; + double phi_range = M_PI * 0.8 * arg_flexibility; + double th_range = M_PI * 0.9 * arg_flexibility; + get_position (t->segments[i].rot, &x, &y, &z, True); + t->segments[i].phi = phi_range * (0.5 - y); + t->segments[i].th = th_range * (0.5 - z); + t->segments[i].length = ((0.8 + ((0.5 - x) * 0.4)) * + (arg_length / t->nsegments)); + + /* ...and make the previous N segments be interpolated + between this one and the previous randomized one. */ + for (j = last+1; j <= i; j++) + { + t->segments[j].phi = (t->segments[i].phi / (i - last)); + t->segments[j].th = (t->segments[i].th / (i - last)); + t->segments[j].length = (t->segments[i].length); + } + + tick = 0; + last = i; + } + len += t->segments[i].length; + } + + /* thickness of segment is relative to current position on tentacle + (not just the index of the segment). */ + for (i = 0; i < t->nsegments; i++) + { + if (i > 0) + { + double tt = (t->segments[0].thickness * (len - pos) / len); + if (tt < 0.001) tt = 0.001; + t->segments[i].thickness = tt; + } + pos += t->segments[i].length; + } +} + + + +ENTRYPOINT Bool +tentacles_handle_event (ModeInfo *mi, XEvent *event) +{ + tentacles_configuration *tc = &tcs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, tc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &tc->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ') + { + gltrackball_reset (tc->trackball, 0, 0); + return True; + } + } + + return False; +} + + +static void +parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a) +{ + XColor c; + a[3] = 1.0; /* alpha */ + + if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c)) + { + fprintf (stderr, "%s: can't parse %s color %s", progname, name, s); + exit (1); + } + a[0] = c.red / 65536.0; + a[1] = c.green / 65536.0; + a[2] = c.blue / 65536.0; +} + + +ENTRYPOINT void +init_tentacles (ModeInfo *mi) +{ + tentacles_configuration *tc; + int wire = MI_IS_WIREFRAME(mi); + int i; + + MI_INIT (mi, tcs); + + tc = &tcs[MI_SCREEN(mi)]; + + tc->glx_context = init_GL(mi); + + reshape_tentacles (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + glLightfv(GL_LIGHT0, GL_POSITION, light_pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + if (!wire && !cel_p) + { + glEnable (GL_LIGHTING); + glEnable (GL_LIGHT0); + } + + tc->trackball = gltrackball_init (False); + + tc->left_p = !(random() % 5); + + if (arg_segments < 2) arg_segments = 2; + if (arg_slices < 3) arg_slices = 3; + if (arg_thickness < 0.1) arg_thickness = 0.1; + if (arg_wiggliness < 0) arg_wiggliness = 0; + if (arg_wiggliness > 1) arg_wiggliness = 1; + if (arg_flexibility < 0) arg_flexibility = 0; + if (arg_flexibility > 1) arg_flexibility = 1; + + parse_color (mi, "tentacleColor", arg_color, tc->tentacle_color); + parse_color (mi, "stripeColor", arg_stripe, tc->stripe_color); + parse_color (mi, "suckerColor", arg_sucker, tc->sucker_color); + + /* Black outlines for light colors, white outlines for dark colors. */ + if (tc->tentacle_color[0] + tc->tentacle_color[1] + tc->tentacle_color[2] + < 0.4) + tc->outline_color[0] = 1; + tc->outline_color[1] = tc->outline_color[0]; + tc->outline_color[2] = tc->outline_color[0]; + tc->outline_color[3] = 1; + + for (i = 0; i < MI_COUNT(mi); i++) + move_tentacle (make_tentacle (mi, i, MI_COUNT(mi))); + + if (wire) texture_p = cel_p = False; + if (cel_p) texture_p = False; + + if (texture_p || cel_p) { + glGenTextures(1, &tc->texid); +# ifdef HAVE_GLBINDTEXTURE + glBindTexture ((cel_p ? GL_TEXTURE_1D : GL_TEXTURE_2D), tc->texid); +# endif + + if (cel_p) + { + /* "16 1 3 1", + "X c #808080", + "x c #C0C0C0", + ". c #FFFFFF", + "XXXxxxxx........" + */ + int w = 16; + tc->texture = XCreateImage (MI_DISPLAY(mi), MI_VISUAL(mi), + 32, ZPixmap, 0, 0, w, 1, 32, 0); + tc->texture->data = (char *) calloc(1, tc->texture->bytes_per_line); + /* ABGR */ + for (i = 0; i < 3; i++) XPutPixel (tc->texture, i, 0, 0xFF808080); + for (; i < 8; i++) XPutPixel (tc->texture, i, 0, 0xFFC0C0C0); + for (; i < w; i++) XPutPixel (tc->texture, i, 0, 0xFFFFFFFF); + } + else + tc->texture = image_data_to_ximage (MI_DISPLAY(mi), MI_VISUAL(mi), + scales_png, sizeof(scales_png)); + + if (!tc->texture) texture_p = cel_p = False; + } + + if (texture_p) { + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + clear_gl_error(); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + tc->texture->width, tc->texture->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, tc->texture->data); + check_gl_error("texture"); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + glEnable(GL_TEXTURE_2D); + } else if (cel_p) { + clear_gl_error(); + glTexImage1D (GL_TEXTURE_1D, 0, GL_RGBA, + tc->texture->width, 0, + GL_RGBA, GL_UNSIGNED_BYTE, tc->texture->data); + check_gl_error("texture"); + + glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + glEnable(GL_TEXTURE_1D); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glEnable (GL_LINE_SMOOTH); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_BLEND); + + /* Dark gray instead of black, so the outlines show up */ + glClearColor (0.13, 0.13, 0.13, 1.0); + } + + compute_unit_torus (mi, 0.5, + MAX(5, arg_slices/6), + MAX(9, arg_slices/3)); +} + + +ENTRYPOINT void +draw_tentacles (ModeInfo *mi) +{ + tentacles_configuration *tc = &tcs[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!tc->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tc->glx_context)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + +# if 1 + glScalef (3, 3, 3); +# else + glPushAttrib (GL_ENABLE_BIT); + glPushMatrix(); + { GLfloat s = 8.7/1600; glScalef(s,s,s); } + glTranslatef(-800,-514,0); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_1D); + glDisable(GL_TEXTURE_2D); + glColor3f (1, 1, 1); + glBegin(GL_LINE_LOOP); + glVertex3f(0,0,0); + glVertex3f(0,1028,0); + glVertex3f(1600,1028,0); + glVertex3f(1600,0,0); + glEnd(); + glPopMatrix(); + glPopAttrib(); +# endif + + gltrackball_rotate (tc->trackball); + + mi->polygon_count = 0; + + if (debug_p) + { + glPushAttrib (GL_ENABLE_BIT); + glDisable (GL_LIGHTING); + glDisable (GL_TEXTURE_1D); + glDisable (GL_TEXTURE_2D); + glColor3f (1, 1, 1); + glLineWidth (1); + glBegin(GL_LINES); + glVertex3f(-0.5, 0, 0); glVertex3f(0.5, 0, 0); + glVertex3f(0, -0.5, 0); glVertex3f(0, 0.5, 0); + glEnd(); + glPopAttrib(); + } + else + { + GLfloat rx = 45; + GLfloat ry = -45; + GLfloat rz = 70; + if (tc->left_p) + ry = -ry, rz = -rz; + glRotatef (ry, 0, 1, 0); + glRotatef (rx, 1, 0, 0); + glRotatef (rz, 0, 0, 1); + if (intersect_p) + glTranslatef (0, -2.0, -4.5); + else + glTranslatef (0, -2.5, -5.0); + } + + if (!tc->button_down_p) + for (i = 0; i < tc->ntentacles; i++) + move_tentacle (tc->tentacles[i]); + +#if 1 + for (i = 0; i < tc->ntentacles; i++) + { + if (! intersect_p) + glClear(GL_DEPTH_BUFFER_BIT); + draw_tentacle (tc->tentacles[i], True); + if (cel_p) + draw_tentacle (tc->tentacles[i], False); + } +#else + glScalef (3, 3, 3); + glScalef (1, 1, 4); + glColor3f(1,1,1); + glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); + draw_sucker (tc->tentacles[0], True); + if (cel_p) + { + glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); + glLineWidth (tc->line_thickness); + glColor4fv (tc->outline_color); + draw_sucker (tc->tentacles[0], False); + } +#endif + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("SkyTentacles", skytentacles, tentacles) + +#endif /* USE_GL */ diff --git a/hacks/glx/skytentacles.man b/hacks/glx/skytentacles.man new file mode 100644 index 0000000..2e5cd16 --- /dev/null +++ b/hacks/glx/skytentacles.man @@ -0,0 +1,102 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +skytentacles - 3D tentacles from the sky! +.SH SYNOPSIS +.B skytentacles +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fIint\fP] +[\-speed \fIratio\fP] +[\-count \fIint\fP] +[\-slices \fIint\fP] +[\-length \fIfloat\fP] +[\-wiggliness \fIratio\fP] +[\-flexibility \fIratio\fP] +[\-color \fIcolor\fP] +[\-stripe\-color \fIcolor\fP] +[\-sucker\-color \fIcolor\fP] +[\-segments \fIint\fP] +[\-thickness \fIratio\fP] +[\-no\-smooth] +[\-fps] +.SH DESCRIPTION +There is a tentacled abomination in the sky. From above you it devours. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fIint\fP +Delay between frames, in microseconds. Default 30000. +.TP 8 +.B \-speed \fIratio\fP +Less than 1 for slower, greater than 1 for faster. Default 1. +.TP 8 +.B \-count \fIint\fP +How many tentacles. Default 8. +.TP 8 +.B \-thickness \fIratio\fP +Less than 1 for thinner tentacles, greater than 1 for thicker. Default 1. +.TP 8 +.B \-length \fIratio\fP +Length of the tentacles. Default 9. +.TP 8 +.B \-wiggliness \fIratio\fP +A measure of how bendy the tentacles are. Smaller numbers result in +smoother flexing; larger numbers make it "crinkly". Default 0.35. +.TP 8 +.B \-flexibility \fIratio\fP +Another measure of how bendy the tentacles are. Smaller numbers +result in straighter tentacles; larger numbers result in more extreme +curves. Default 0.35. +.TP 8 +.B \-color \fIcolor\fP +.TP 8 +.B \-stripe\-color \fIcolor\fP +.TP 8 +.B \-sucker\-color \fIcolor\fP +The colors of the various parts of the tentacle. Default green +with a redish stripe. +.TP 8 +.B \-slices \fIint\fP +.TP 8 +.B \-segments \fIint\fP +Larger numbers increase number of polygons in the object mesh. +Default 32. +.TP 8 +.B \-no\-smooth +Make the tentacles appear faceted instead of smooth. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2008 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/sonar-icmp.c b/hacks/glx/sonar-icmp.c new file mode 100644 index 0000000..3464c37 --- /dev/null +++ b/hacks/glx/sonar-icmp.c @@ -0,0 +1,1703 @@ +/* sonar, Copyright (c) 1998-2018 Jamie Zawinski and Stephen Martin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * This implements the "ping" sensor for sonar. + */ + +#include "screenhackI.h" +#include "sonar.h" +#include "version.h" +#include "async_netdb.h" + +#undef usleep /* conflicts with unistd.h on OSX */ + +#ifdef USE_IPHONE + /* Note: to get this to compile for iPhone, you need to fix Xcode! + The icmp headers exist for the simulator build environment, but + not for the real-device build environment. This appears to + just be an Apple bug, not intentional. + + xc=/Applications/Xcode.app/Contents + for path in /Developer/Platforms/iPhone*?/Developer/SDKs/?* \ + $xc/Developer/Platforms/iPhone*?/Developer/SDKs/?* ; do + for file in \ + /usr/include/netinet/ip.h \ + /usr/include/netinet/in_systm.h \ + /usr/include/netinet/ip_icmp.h \ + /usr/include/netinet/ip_var.h \ + /usr/include/netinet/udp.h + do + ln -s "$file" "$path$file" + done + done + */ +#endif + +#ifndef HAVE_MOBILE +# define READ_FILES +#endif + +#if defined(HAVE_ICMP) || defined(HAVE_ICMPHDR) +# include +# include +# include +# include +# include +# include +# include +# include +# ifndef HAVE_ANDROID +# include +# endif +# include +# include +# include +# include +# include +# include +# include +# include +# include +# ifdef HAVE_GETIFADDRS +# include +# endif +#endif /* HAVE_ICMP || HAVE_ICMPHDR */ + +#if defined(HAVE_ICMP) +# define HAVE_PING +# define ICMP icmp +# define ICMP_TYPE(p) (p)->icmp_type +# define ICMP_CODE(p) (p)->icmp_code +# define ICMP_CHECKSUM(p) (p)->icmp_cksum +# define ICMP_ID(p) (p)->icmp_id +# define ICMP_SEQ(p) (p)->icmp_seq +#elif defined(HAVE_ICMPHDR) +# define HAVE_PING +# define ICMP icmphdr +# define ICMP_TYPE(p) (p)->type +# define ICMP_CODE(p) (p)->code +# define ICMP_CHECKSUM(p) (p)->checksum +# define ICMP_ID(p) (p)->un.echo.id +# define ICMP_SEQ(p) (p)->un.echo.sequence +#else +# undef HAVE_PING +#endif + +#ifndef HAVE_MOBILE +# define LOAD_FILES +#endif + +#ifndef HAVE_PING + +sonar_sensor_data * +sonar_init_ping (Display *dpy, char **error_ret, char **desc_ret, + const char *subnet, int timeout, + Bool resolve_p, Bool times_p, Bool debug_p) +{ + if (! (!subnet || !*subnet || !strcmp(subnet, "default"))) + fprintf (stderr, "%s: not compiled with support for pinging hosts.\n", + progname); + return 0; +} + +#else /* HAVE_PING -- whole file */ + + +#if defined(__DECC) || defined(_IP_VHL) + /* This is how you do it on DEC C, and possibly some BSD systems. */ +# define IP_HDRLEN(ip) ((ip)->ip_vhl & 0x0F) +#else + /* This is how you do it on everything else. */ +# define IP_HDRLEN(ip) ((ip)->ip_hl) +#endif + +/* yes, there is only one, even when multiple savers are running in the + same address space - since we can only open this socket before dropping + privs. + */ +static int global_icmpsock = 0; + +/* Set by a signal handler. */ +static int timer_expired; + + + +static u_short checksum(u_short *, int); +static long delta(struct timeval *, struct timeval *); + + +typedef struct { + Display *dpy; /* Only used to get *useThreads. */ + + char *version; /* short version number of xscreensaver */ + int icmpsock; /* socket for sending pings */ + int pid; /* our process ID */ + int seq; /* packet sequence number */ + int timeout; /* packet timeout */ + + int target_count; + sonar_bogie *targets; /* the hosts we will ping; + those that pong end up on ssd->pending. */ + sonar_bogie *last_pinged; /* pointer into 'targets' list */ + double last_ping_time; + + Bool resolve_p; + Bool times_p; + Bool debug_p; + +} ping_data; + +typedef struct { + async_name_from_addr_t lookup_name; + async_addr_from_name_t lookup_addr; + async_netdb_sockaddr_storage_t address; /* ip address */ + socklen_t addrlen; + char *fallback; +} ping_bogie; + + + +/* Packs an IP address quad into bigendian network order. */ +static in_addr_t +pack_addr (unsigned int a, unsigned int b, unsigned int c, unsigned int d) +{ + unsigned long i = (((a & 255) << 24) | + ((b & 255) << 16) | + ((c & 255) << 8) | + ((d & 255) )); + return htonl (i); +} + +/* Unpacks an IP address quad from bigendian network order. */ +static void +unpack_addr (unsigned long addr, + unsigned int *a, unsigned int *b, + unsigned int *c, unsigned int *d) +{ + addr = ntohl (addr); + *a = (addr >> 24) & 255; + *b = (addr >> 16) & 255; + *c = (addr >> 8) & 255; + *d = (addr ) & 255; +} + + + + +/* Resolves the bogie's name (either a hostname or ip address string) + to a hostent. Returns 1 if successful, 0 if something went wrong. + */ +static int +resolve_bogie_hostname (ping_data *pd, sonar_bogie *sb, Bool resolve_p) +{ + ping_bogie *pb = (ping_bogie *) sb->closure; + + unsigned int ip[4]; + char c; + + if (4 == sscanf (sb->name, " %u.%u.%u.%u %c", + &ip[0], &ip[1], &ip[2], &ip[3], &c)) + { + /* It's an IP address. + */ + struct sockaddr_in *iaddr = (struct sockaddr_in *) &(pb->address); + + if (ip[3] == 0) + { + if (pd->debug_p > 1) + fprintf (stderr, "%s: ignoring bogus IP %s\n", + progname, sb->name); + return 0; + } + + iaddr->sin_family = AF_INET; + iaddr->sin_addr.s_addr = pack_addr (ip[0], ip[1], ip[2], ip[3]); + pb->addrlen = sizeof(struct sockaddr_in); + + if (resolve_p) + { + pb->lookup_name = + async_name_from_addr_start (pd->dpy, + (const struct sockaddr *)&pb->address, + pb->addrlen); + if (!pb->lookup_name) + { + fprintf (stderr, "%s: unable to start host resolution.\n", + progname); + } + } + } + else + { + /* It's a host name. */ + + /* don't waste time being confused by non-hostname tokens + in .ssh/known_hosts */ + if (!strcmp (sb->name, "ssh-rsa") || + !strcmp (sb->name, "ssh-dsa") || + !strcmp (sb->name, "ssh-dss") || + !strncmp (sb->name, "ecdsa-", 6) || + strlen (sb->name) >= 80) + return 0; + + /* .ssh/known_hosts sometimes contains weirdness like "[host]:port". + Ignore it. */ + if (strchr (sb->name, '[')) + { + if (pd->debug_p) + fprintf (stderr, "%s: ignoring bogus address \"%s\"\n", + progname, sb->name); + return 0; + } + + /* If the name contains a colon, it's probably IPv6. */ + if (strchr (sb->name, ':')) + { + if (pd->debug_p) + fprintf (stderr, "%s: ignoring ipv6 address \"%s\"\n", + progname, sb->name); + return 0; + } + + pb->lookup_addr = async_addr_from_name_start(pd->dpy, sb->name); + if (!pb->lookup_addr) + { + if (pd->debug_p) + /* Either address space exhaustion or RAM exhaustion. */ + fprintf (stderr, "%s: unable to start host resolution.\n", + progname); + return 0; + } + } + return 1; +} + + +static void +print_address (FILE *out, int width, const void *sockaddr, socklen_t addrlen) +{ +#ifdef HAVE_GETADDRINFO + char buf[NI_MAXHOST]; +#else + char buf[50]; +#endif + + const struct sockaddr *addr = (const struct sockaddr *)sockaddr; + const char *ips = buf; + + if (!addr->sa_family) + ips = ""; + else + { +#ifdef HAVE_GETADDRINFO + int gai_error = getnameinfo (sockaddr, addrlen, buf, sizeof(buf), + NULL, 0, NI_NUMERICHOST); + if (gai_error == EAI_SYSTEM) + ips = strerror(errno); + else if (gai_error) + ips = gai_strerror(gai_error); +#else + switch (addr->sa_family) + { + case AF_INET: + { + u_long ip = ((struct sockaddr_in *)sockaddr)->sin_addr.s_addr; + unsigned int a, b, c, d; + unpack_addr (ip, &a, &b, &c, &d); /* ip is in network order */ + sprintf (buf, "%u.%u.%u.%u", a, b, c, d); + } + break; + default: + ips = ""; + break; + } +#endif + } + + fprintf (out, "%-*s", width, ips); +} + + +static void +print_host (FILE *out, const sonar_bogie *sb) +{ + const ping_bogie *pb = (const ping_bogie *) sb->closure; + const char *name = sb->name; + if (!name || !*name) name = ""; + print_address (out, 16, &pb->address, pb->addrlen); + fprintf (out, " %s\n", name); +} + + +static Bool +is_address_ok(Bool debug_p, const sonar_bogie *b) +{ + const ping_bogie *pb = (const ping_bogie *) b->closure; + const struct sockaddr *addr = (const struct sockaddr *)&pb->address; + + switch (addr->sa_family) + { + case AF_INET: + { + struct sockaddr_in *iaddr = (struct sockaddr_in *) addr; + + /* Don't ever use loopback (127.0.0.x) hosts */ + unsigned long ip = iaddr->sin_addr.s_addr; + if ((ntohl (ip) & 0xFFFFFF00L) == 0x7f000000L) /* 127.0.0.x */ + { + if (debug_p) + fprintf (stderr, "%s: ignoring loopback host %s\n", + progname, b->name); + return False; + } + + /* Don't ever use broadcast (255.x.x.x) hosts */ + if ((ntohl (ip) & 0xFF000000L) == 0xFF000000L) /* 255.x.x.x */ + { + if (debug_p) + fprintf (stderr, "%s: ignoring broadcast host %s\n", + progname, b->name); + return False; + } + } + + break; + } + + return True; +} + + +/* Create a sonar_bogie from a host name or ip address string. + Returns NULL if the name could not be resolved. + */ +static sonar_bogie * +bogie_for_host (sonar_sensor_data *ssd, const char *name, const char *fallback) +{ + ping_data *pd = (ping_data *) ssd->closure; + sonar_bogie *b = (sonar_bogie *) calloc (1, sizeof(*b)); + ping_bogie *pb = (ping_bogie *) calloc (1, sizeof(*pb)); + Bool resolve_p = pd->resolve_p; + + b->name = strdup (name); + b->closure = pb; + + if (! resolve_bogie_hostname (pd, b, resolve_p)) + goto FAIL; + + if (! pb->lookup_addr && ! is_address_ok (pd->debug_p, b)) + goto FAIL; + + if (pd->debug_p > 1) + { + fprintf (stderr, "%s: added ", progname); + print_host (stderr, b); + } + + if (fallback) + pb->fallback = strdup (fallback); + return b; + + FAIL: + if (b) sonar_free_bogie (ssd, b); + + if (fallback) + return bogie_for_host (ssd, fallback, NULL); + + return 0; +} + + +#ifdef READ_FILES + +/* Return a list of bogies read from a file. + The file can be like /etc/hosts or .ssh/known_hosts or probably + just about anything that has host names in it. + */ +static sonar_bogie * +read_hosts_file (sonar_sensor_data *ssd, const char *filename) +{ + ping_data *pd = (ping_data *) ssd->closure; + FILE *fp; + char buf[LINE_MAX]; + char *p; + sonar_bogie *list = 0; + char *addr, *name; + sonar_bogie *new; + + /* Kludge: on OSX, variables have not been expanded in the command + line arguments, so as a special case, allow the string to begin + with literal "$HOME/" or "~/". + + This is so that the "Known Hosts" menu item in sonar.xml works. + */ + if (!strncmp(filename, "~/", 2) || !strncmp(filename, "$HOME/", 6)) + { + char *s = strchr (filename, '/'); + strcpy (buf, getenv("HOME")); + strcat (buf, s); + filename = buf; + } + + fp = fopen(filename, "r"); + if (!fp) + { + char buf2[1024]; + sprintf(buf2, "%s: %s", progname, filename); +#ifdef HAVE_JWXYZ + if (pd->debug_p) /* on OSX don't syslog this */ +#endif + perror (buf2); + return 0; + } + + if (pd->debug_p) + fprintf (stderr, "%s: reading \"%s\"\n", progname, filename); + + while ((p = fgets(buf, LINE_MAX, fp))) + { + while ((*p == ' ') || (*p == '\t')) /* skip whitespace */ + p++; + if (*p == '#') /* skip comments */ + continue; + + /* Get the name and address */ + + if ((addr = strtok(buf, " ,;\t\n"))) + name = strtok(0, " ,;\t\n"); + else + continue; + + /* Check to see if the addr looks like an addr. If not, assume + the addr is a name and there is no addr. This way, we can + handle files whose lines have "xx.xx.xx.xx hostname" as their + first two tokens, and also files that have a hostname as their + first token (like .ssh/known_hosts and .rhosts.) + */ + { + int i; char c; + if (4 != sscanf(addr, "%d.%d.%d.%d%c", &i, &i, &i, &i, &c)) + { + name = addr; + addr = 0; + } + } + + /* If the name is all digits, it's not a name. */ + if (name) + { + const char *s; + for (s = name; *s; s++) + if (*s < '0' || *s > '9') + break; + if (! *s) + { + if (pd->debug_p > 1) + fprintf (stderr, "%s: skipping bogus name \"%s\" (%s)\n", + progname, name, addr); + name = 0; + } + } + + /* Create a new target using first the name then the address */ + + if (!name) + { + name = addr; + addr = NULL; + } + + new = bogie_for_host (ssd, name, addr); + + if (new) + { + new->next = list; + list = new; + } + } + + fclose(fp); + return list; +} +#endif /* READ_FILES */ + + +static sonar_bogie ** +found_duplicate_host (const ping_data *pd, sonar_bogie **list, + sonar_bogie *bogie) +{ + if (pd->debug_p) + { + fprintf (stderr, "%s: deleted duplicate: ", progname); + print_host (stderr, bogie); + } + + return list; +} + + +static sonar_bogie ** +find_duplicate_host (const ping_data *pd, sonar_bogie **list, + sonar_bogie *bogie) +{ + const ping_bogie *pb = (const ping_bogie *) bogie->closure; + const struct sockaddr *addr1 = (const struct sockaddr *) &(pb->address); + + while(*list) + { + const ping_bogie *pb2 = (const ping_bogie *) (*list)->closure; + + if (!pb2->lookup_addr) + { + const struct sockaddr *addr2 = + (const struct sockaddr *) &(pb2->address); + + if (addr1->sa_family == addr2->sa_family) + { + switch (addr1->sa_family) + { + case AF_INET: + { + unsigned long ip1 = + ((const struct sockaddr_in *)addr1)->sin_addr.s_addr; + const struct sockaddr_in *i2 = + (const struct sockaddr_in *)addr2; + unsigned long ip2 = i2->sin_addr.s_addr; + + if (ip1 == ip2) + return found_duplicate_host (pd, list, bogie); + } + break; +#ifdef AF_INET6 + case AF_INET6: + { + if (! memcmp( + &((const struct sockaddr_in6 *)addr1)->sin6_addr, + &((const struct sockaddr_in6 *)addr2)->sin6_addr, + 16)) + return found_duplicate_host (pd, list, bogie); + } + break; +#endif + default: + { + /* Fallback behavior: Just memcmp the two addresses. + + For this to work, unused space in the sockaddr must be + set to zero. Which may actually be the case: + - async_addr_from_name_finish won't put garbage into + sockaddr_in.sin_zero or elsewhere unless getaddrinfo + does. + - ping_bogie is allocated with calloc(). */ + + if (pb->addrlen == pb2->addrlen && + ! memcmp(addr1, addr2, pb->addrlen)) + return found_duplicate_host (pd, list, bogie); + } + break; + } + } + } + + list = &(*list)->next; + } + + return NULL; +} + + +static sonar_bogie * +delete_duplicate_hosts (sonar_sensor_data *ssd, sonar_bogie *list) +{ + ping_data *pd = (ping_data *) ssd->closure; + sonar_bogie *head = list; + sonar_bogie *sb = head; + + while (sb) + { + ping_bogie *pb = (ping_bogie *) sb->closure; + + if (!pb->lookup_addr) + { + sonar_bogie **sb2 = find_duplicate_host (pd, &sb->next, sb); + if (sb2) + *sb2 = (*sb2)->next; + /* #### sb leaked */ + else + sb = sb->next; + } + else + sb = sb->next; + } + + return head; +} + + +static unsigned long +width_mask (unsigned long width) +{ + unsigned long m = 0; + int i; + for (i = 0; i < width; i++) + m |= (1L << (31-i)); + return m; +} + + +#ifdef HAVE_GETIFADDRS +static unsigned int +mask_width (unsigned long mask) +{ + int i; + for (i = 0; i < 32; i++) + if (mask & (1 << i)) + break; + return 32-i; +} +#endif + + +/* Generate a list of bogies consisting of all of the entries on + the same subnet. 'base' ip is in network order; 0 means localhost. + */ +static sonar_bogie * +subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret, + unsigned long n_base, int subnet_width) +{ + ping_data *pd = (ping_data *) ssd->closure; + unsigned long h_mask; /* host order */ + unsigned long h_base; /* host order */ + char address[BUFSIZ]; + char *p; + int i; + sonar_bogie *new; + sonar_bogie *list = 0; + char buf[1024]; + + if (subnet_width < 24) + { + sprintf (buf, + "Pinging %lu hosts is a bad\n" + "idea. Please use a subnet\n" + "mask of 24 bits or more.", + (unsigned long) (1L << (32 - subnet_width)) - 1); + *error_ret = strdup(buf); + return 0; + } + else if (subnet_width > 30) + { + sprintf (buf, + "An %d-bit subnet\n" + "doesn't make sense.\n" + "Try \"subnet/24\"\n" + "or \"subnet/29\".\n", + subnet_width); + *error_ret = strdup(buf); + return 0; + } + + + if (pd->debug_p) + fprintf (stderr, "%s: adding %d-bit subnet\n", progname, subnet_width); + + + if (! n_base) + { +# ifdef HAVE_GETIFADDRS + + /* To determine the local subnet, we need to know the local IP address. + Do this by looking at the IPs of every network interface. + */ + struct in_addr in = { 0, }; + struct ifaddrs *all = 0, *ifa; + + if (pd->debug_p) + fprintf (stderr, "%s: listing network interfaces\n", progname); + + getifaddrs (&all); + for (ifa = all; ifa; ifa = ifa->ifa_next) + { + struct in_addr in2; + unsigned long mask; + if (! ifa->ifa_addr) + continue; + else if (ifa->ifa_addr->sa_family != AF_INET) + { + if (pd->debug_p) + fprintf (stderr, "%s: if: %4s: %s\n", progname, + ifa->ifa_name, + ( +# ifdef AF_UNIX + ifa->ifa_addr->sa_family == AF_UNIX ? "local" : +# endif +# ifdef AF_LINK + ifa->ifa_addr->sa_family == AF_LINK ? "link" : +# endif +# ifdef AF_INET6 + ifa->ifa_addr->sa_family == AF_INET6 ? "ipv6" : +# endif + "other")); + continue; + } + in2 = ((struct sockaddr_in *) ifa->ifa_addr)->sin_addr; + mask = ntohl (((struct sockaddr_in *) ifa->ifa_netmask) + ->sin_addr.s_addr); + if (pd->debug_p) + fprintf (stderr, "%s: if: %4s: inet = %s /%d 0x%08lx\n", + progname, + ifa->ifa_name, + inet_ntoa (in2), + mask_width (mask), + mask); + if (in2.s_addr == 0x0100007f || /* 127.0.0.1 in network order */ + mask == 0) + continue; + + /* At least on the AT&T 3G network, pinging either of the two + hosts on a /31 network doesn't work, so don't try. + */ + if (mask_width (mask) == 31) + { + sprintf (buf, + "Can't ping subnet:\n" + "local network is\n" + "%.100s/%d,\n" + "a p2p bridge\n" + "on if %.100s.", + inet_ntoa (in2), mask_width (mask), ifa->ifa_name); + if (*error_ret) free (*error_ret); + *error_ret = strdup (buf); + continue; + } + + in = in2; + subnet_width = mask_width (mask); + } + + if (in.s_addr) + { + if (*error_ret) free (*error_ret); + *error_ret = 0; + n_base = in.s_addr; /* already in network order, I think? */ + } + else if (!*error_ret) + *error_ret = strdup ("Unable to determine\nlocal IP address\n"); + + if (all) + freeifaddrs (all); + + if (*error_ret) + return 0; + +# else /* !HAVE_GETIFADDRS */ + + /* If we can't walk the list of network interfaces to figure out + our local IP address, try to do it by finding the local host + name, then resolving that. + */ + char hostname[BUFSIZ]; + struct hostent *hent = 0; + + if (gethostname(hostname, BUFSIZ)) + { + *error_ret = strdup ("Unable to determine\n" + "local host name!"); + return 0; + } + + /* Get our IP address and convert it to a string */ + + hent = gethostbyname(hostname); + if (! hent) + { + strcat (hostname, ".local"); /* Necessary on iphone */ + hent = gethostbyname(hostname); + } + + if (! hent) + { + sprintf(buf, + "Unable to resolve\n" + "local host \"%.100s\"", + hostname); + *error_ret = strdup(buf); + return 0; + } + + strcpy (address, inet_ntoa(*((struct in_addr *)hent->h_addr_list[0]))); + n_base = pack_addr (hent->h_addr_list[0][0], + hent->h_addr_list[0][1], + hent->h_addr_list[0][2], + hent->h_addr_list[0][3]); + + if (n_base == 0x0100007f) /* 127.0.0.1 in network order */ + { + unsigned int a, b, c, d; + unpack_addr (n_base, &a, &b, &c, &d); + sprintf (buf, + "Unable to determine\n" + "local subnet address:\n" + "\"%.100s\"\n" + "resolves to\n" + "loopback address\n" + "%u.%u.%u.%u.", + hostname, a, b, c, d); + *error_ret = strdup(buf); + return 0; + } + +# endif /* !HAVE_GETIFADDRS */ + } + + + /* Construct targets for all addresses in this subnet */ + + h_mask = width_mask (subnet_width); + h_base = ntohl (n_base); + + if (desc_ret && !*desc_ret) { + char buf2[255]; + unsigned int a, b, c, d; + unsigned long bb = n_base & htonl(h_mask); + unpack_addr (bb, &a, &b, &c, &d); + if (subnet_width > 24) + sprintf (buf2, "%u.%u.%u.%u/%d", a, b, c, d, subnet_width); + else + sprintf (buf2, "%u.%u.%u/%d", a, b, c, subnet_width); + *desc_ret = strdup (buf2); + } + + for (i = 255; i >= 0; i--) { + unsigned int a, b, c, d; + int ip = (h_base & 0xFFFFFF00L) | i; /* host order */ + + if ((ip & h_mask) != (h_base & h_mask)) /* skip out-of-subnet host */ + continue; + else if (subnet_width == 31) /* 1-bit bridge: 2 hosts */ + ; + else if ((ip & ~h_mask) == 0) /* skip network address */ + continue; + else if ((ip & ~h_mask) == ~h_mask) /* skip broadcast address */ + continue; + + unpack_addr (htonl (ip), &a, &b, &c, &d); + sprintf (address, "%u.%u.%u.%u", a, b, c, d); + + if (pd->debug_p > 1) + { + unsigned int aa, ab, ac, ad; + unsigned int ma, mb, mc, md; + unpack_addr (htonl (h_base & h_mask), &aa, &ab, &ac, &ad); + unpack_addr (htonl (h_mask), &ma, &mb, &mc, &md); + fprintf (stderr, + "%s: subnet: %s (%u.%u.%u.%u & %u.%u.%u.%u / %d)\n", + progname, address, + aa, ab, ac, ad, + ma, mb, mc, md, + subnet_width); + } + + p = address + strlen(address) + 1; + sprintf(p, "%d", i); + + new = bogie_for_host (ssd, address, NULL); + if (new) + { + new->next = list; + list = new; + } + } + + return list; +} + + +/* Send a ping packet. + */ +static void +send_ping (ping_data *pd, const sonar_bogie *b) +{ + ping_bogie *pb = (ping_bogie *) b->closure; + u_char *packet; + struct ICMP *icmph; + const char *token = "org.jwz.xscreensaver.sonar"; + char *host_id; + + unsigned long pcktsiz = (sizeof(struct ICMP) + sizeof(struct timeval) + + sizeof(socklen_t) + pb->addrlen + + strlen(token) + 1 + + strlen(pd->version) + 1); + + /* Create the ICMP packet */ + + if (! (packet = (u_char *) calloc(1, pcktsiz))) + return; /* Out of memory */ + + icmph = (struct ICMP *) packet; + ICMP_TYPE(icmph) = ICMP_ECHO; + ICMP_CODE(icmph) = 0; + ICMP_CHECKSUM(icmph) = 0; + ICMP_ID(icmph) = pd->pid; + ICMP_SEQ(icmph) = pd->seq++; +# ifdef GETTIMEOFDAY_TWO_ARGS + gettimeofday((struct timeval *) &packet[sizeof(struct ICMP)], + (struct timezone *) 0); +# else + gettimeofday((struct timeval *) &packet[sizeof(struct ICMP)]); +# endif + + /* We store the sockaddr of the host we're pinging in the packet, and parse + that out of the return packet later (see get_ping() for why). + After that, we also include the name and version of this program, + just to give a clue to anyone sniffing and wondering what's up. + */ + host_id = (char *) &packet[sizeof(struct ICMP) + sizeof(struct timeval)]; + *(socklen_t *)host_id = pb->addrlen; + host_id += sizeof(socklen_t); + memcpy(host_id, &pb->address, pb->addrlen); + host_id += pb->addrlen; + sprintf (host_id, "%.20s %.20s", token, pd->version); + + ICMP_CHECKSUM(icmph) = checksum((u_short *)packet, pcktsiz); + + /* Send it */ + + if (sendto(pd->icmpsock, packet, pcktsiz, 0, + (struct sockaddr *)&pb->address, sizeof(pb->address)) + != pcktsiz) + { +#if 0 + char buf[BUFSIZ]; + sprintf(buf, "%s: pinging %.100s", progname, b->name); + perror(buf); +#endif + } +} + +/* signal handler */ +static void +sigcatcher (int sig) +{ + timer_expired = 1; +} + + +/* Compute the checksum on a ping packet. + */ +static u_short +checksum (u_short *packet, int size) +{ + register int nleft = size; + register u_short *w = packet; + register int sum = 0; + u_short answer = 0; + + /* Using a 32 bit accumulator (sum), we add sequential 16 bit words + to it, and at the end, fold back all the carry bits from the + top 16 bits into the lower 16 bits. + */ + while (nleft > 1) + { + sum += *w++; + nleft -= 2; + } + + /* mop up an odd byte, if necessary */ + + if (nleft == 1) + { + *(u_char *)(&answer) = *(u_char *)w ; + *(1 + (u_char *)(&answer)) = 0; + sum += answer; + } + + /* add back carry outs from top 16 bits to low 16 bits */ + + sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */ + sum += (sum >> 16); /* add carry */ + answer = ~sum; /* truncate to 16 bits */ + + return(answer); +} + + +/* Copies the sonar_bogie and the underlying ping_bogie. + */ +static sonar_bogie * +copy_ping_bogie (sonar_sensor_data *ssd, const sonar_bogie *b) +{ + sonar_bogie *b2 = sonar_copy_bogie (ssd, b); + if (b->closure) + { + ping_bogie *pb = (ping_bogie *) b->closure; + ping_bogie *pb2 = (ping_bogie *) calloc (1, sizeof(*pb)); + pb2->address = pb->address; + b2->closure = pb2; + } + return b2; +} + + +/* Look for all outstanding ping replies. + */ +static sonar_bogie * +get_ping (sonar_sensor_data *ssd) +{ + ping_data *pd = (ping_data *) ssd->closure; + struct sockaddr from; + socklen_t fromlen; + int result; + u_char packet[1024]; + struct timeval now; + struct timeval *then; + struct ip *ip; + int iphdrlen; + struct ICMP *icmph; + sonar_bogie *bl = 0; + sonar_bogie *new = 0; + struct sigaction sa; + struct itimerval it; + fd_set rfds; + struct timeval tv; + + /* Set up a signal to interrupt our wait for a packet */ + + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sa.sa_handler = sigcatcher; + if (sigaction(SIGALRM, &sa, 0) == -1) + { + char msg[1024]; + sprintf(msg, "%s: unable to trap SIGALRM", progname); + perror(msg); + exit(1); + } + + /* Set up a timer to interupt us if we don't get a packet */ + + it.it_interval.tv_sec = 0; + it.it_interval.tv_usec = 0; + it.it_value.tv_sec = 0; + it.it_value.tv_usec = pd->timeout; + timer_expired = 0; + setitimer(ITIMER_REAL, &it, 0); + + /* Wait for a result packet */ + + fromlen = sizeof(from); + while (! timer_expired) + { + tv.tv_usec = pd->timeout; + tv.tv_sec = 0; +#if 0 + /* This breaks on BSD, which uses bzero() in the definition of FD_ZERO */ + FD_ZERO(&rfds); +#else + memset (&rfds, 0, sizeof(rfds)); +#endif + FD_SET(pd->icmpsock, &rfds); + /* only wait a little while, in case we raced with the timer expiration. + From Valentijn Sessink */ + if (select(pd->icmpsock + 1, &rfds, 0, 0, &tv) >0) + { + result = (int)recvfrom (pd->icmpsock, packet, sizeof(packet), + 0, &from, &fromlen); + + /* Check the packet */ + +# ifdef GETTIMEOFDAY_TWO_ARGS + gettimeofday(&now, (struct timezone *) 0); +# else + gettimeofday(&now); +# endif + ip = (struct ip *) packet; + iphdrlen = IP_HDRLEN(ip) << 2; + icmph = (struct ICMP *) &packet[iphdrlen]; + then = (struct timeval *) &packet[iphdrlen + sizeof(struct ICMP)]; + + + /* Ignore anything but ICMP Replies */ + if (ICMP_TYPE(icmph) != ICMP_ECHOREPLY) + continue; + + /* Ignore packets not set from us */ + if (ICMP_ID(icmph) != pd->pid) + continue; + + /* Find the bogie in 'targets' that corresponds to this packet + and copy it, so that this bogie stays in the same spot (th) + on the screen, and so that we don't have to resolve it again. + + We could find the bogie by comparing ip->ip_src.s_addr to + pb->address, but it is possible that, in certain weird router + or NAT situations, that the reply will come back from a + different address than the one we sent it to. So instead, + we parse the sockaddr out of the reply packet payload. + */ + { + const socklen_t *host_id = (socklen_t *) &packet[ + iphdrlen + sizeof(struct ICMP) + sizeof(struct timeval)]; + + sonar_bogie *b; + + /* Ensure that a maliciously-crafted return packet can't + make us overflow in memcmp. */ + if (result > 0 && (const u_char *)(host_id + 1) <= packet + result) + { + const u_char *host_end = (const u_char *)(host_id + 1) + + *host_id; + + if ((const u_char *)(host_id + 1) <= host_end && + host_end <= packet + result) + { + for (b = pd->targets; b; b = b->next) + { + ping_bogie *pb = (ping_bogie *)b->closure; + if (*host_id == pb->addrlen && + !memcmp(&pb->address, host_id + 1, pb->addrlen) ) + { + /* Check to see if the name lookup is done. */ + if (pb->lookup_name && + async_name_from_addr_is_done (pb->lookup_name)) + { + char *host = NULL; + + async_name_from_addr_finish (pb->lookup_name, + &host, NULL); + + if (pd->debug_p > 1) + fprintf (stderr, "%s: %s => %s\n", + progname, b->name, + host ? host : ""); + + if (host) + { + free(b->name); + b->name = host; + } + + pb->lookup_name = NULL; + } + + new = copy_ping_bogie (ssd, b); + break; + } + } + } + } + } + + if (! new) /* not in targets? */ + { + unsigned int a, b, c, d; + unpack_addr (ip->ip_src.s_addr, &a, &b, &c, &d); + fprintf (stderr, + "%s: UNEXPECTED PING REPLY! " + "%4d bytes, icmp_seq=%-4d from %d.%d.%d.%d\n", + progname, result, ICMP_SEQ(icmph), a, b, c, d); + continue; + } + + new->next = bl; + bl = new; + + { + double msec = delta(then, &now) / 1000.0; + + if (pd->times_p) + { + if (new->desc) free (new->desc); + new->desc = (char *) malloc (30); + if (msec > 99) sprintf (new->desc, "%.0f ms", msec); + else if (msec > 9) sprintf (new->desc, "%.1f ms", msec); + else if (msec > 1) sprintf (new->desc, "%.2f ms", msec); + else sprintf (new->desc, "%.3f ms", msec); + } + + if (pd->debug_p && pd->times_p) /* ping-like stdout log */ + { + char *s = strdup(new->name); + char *s2 = s; + if (strlen(s) > 28) + { + s2 = s + strlen(s) - 28; + strncpy (s2, "...", 3); + } + fprintf (stdout, + "%3d bytes from %28s: icmp_seq=%-4d time=%s\n", + result, s2, ICMP_SEQ(icmph), new->desc); + fflush (stdout); + free(s); + } + + /* The radius must be between 0.0 and 1.0. + We want to display ping times on a logarithmic scale, + with the three rings being 2.5, 70 and 2,000 milliseconds. + */ + if (msec <= 0) msec = 0.001; + new->r = log (msec * 10) / log (20000); + + /* Don't put anyone *too* close to the center of the screen. */ + if (new->r < 0) new->r = 0; + if (new->r < 0.1) new->r += 0.1; + } + } + } + + return bl; +} + + +/* difference between the two times in microseconds. + */ +static long +delta (struct timeval *then, struct timeval *now) +{ + return (((now->tv_sec - then->tv_sec) * 1000000) + + (now->tv_usec - then->tv_usec)); +} + + +static void +ping_free_data (sonar_sensor_data *ssd, void *closure) +{ + ping_data *pd = (ping_data *) closure; + sonar_bogie *b = pd->targets; + while (b) + { + sonar_bogie *b2 = b->next; + sonar_free_bogie (ssd, b); + b = b2; + } + free (pd); +} + +static void +ping_free_bogie_data (sonar_sensor_data *sd, void *closure) +{ + ping_bogie *pb = (ping_bogie *) closure; + + if (pb->lookup_name) + async_name_from_addr_cancel (pb->lookup_name); + if (pb->lookup_addr) + async_addr_from_name_cancel (pb->lookup_addr); + free (pb->fallback); + + free (closure); +} + + +/* Returns the current time in seconds as a double. + */ +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + + +static void +free_bogie_after_lookup(sonar_sensor_data *ssd, sonar_bogie **sbp, + sonar_bogie **sb) +{ + ping_bogie *pb = (ping_bogie *)(*sb)->closure; + + *sbp = (*sb)->next; + pb->lookup_addr = NULL; /* Prevent double-free in sonar_free_bogie. */ + sonar_free_bogie (ssd, *sb); + *sb = NULL; +} + + +/* Pings the next bogie, if it's time. + Returns all outstanding ping replies. + */ +static sonar_bogie * +ping_scan (sonar_sensor_data *ssd) +{ + ping_data *pd = (ping_data *) ssd->closure; + double now = double_time(); + double ping_cycle = 10; /* re-ping a given host every 10 seconds */ + double ping_interval = ping_cycle / pd->target_count; + + if (now > pd->last_ping_time + ping_interval) /* time to ping someone */ + { + struct sonar_bogie **sbp; + + if (pd->last_pinged) + { + sbp = &pd->last_pinged->next; + if (!*sbp) + sbp = &pd->targets; + } + else + sbp = &pd->targets; + + if (!*sbp) + /* Aaaaand we're out of bogies. */ + pd->last_pinged = NULL; + else + { + sonar_bogie *sb = *sbp; + ping_bogie *pb = (ping_bogie *)sb->closure; + if (pb->lookup_addr && + async_addr_from_name_is_done (pb->lookup_addr)) + { + if (async_addr_from_name_finish (pb->lookup_addr, &pb->address, + &pb->addrlen, NULL)) + { + char *fallback = pb->fallback; + pb->fallback = NULL; + + if (pd->debug_p) + fprintf (stderr, "%s: could not resolve host: %s\n", + progname, sb->name); + + free_bogie_after_lookup (ssd, sbp, &sb); + + /* Insert the fallback bogie right where the old one was. */ + if (fallback) + { + sonar_bogie *new_bogie = bogie_for_host (ssd, fallback, + NULL); + if (new_bogie) { + new_bogie->next = *sbp; + + if (! ((ping_bogie *)new_bogie->closure)->lookup_addr && + ! find_duplicate_host(pd, &pd->targets, new_bogie)) + *sbp = new_bogie; + else + sonar_free_bogie (ssd, new_bogie); + } + + free (fallback); + } + } + else + { + if (pd->debug_p > 1) + { + fprintf (stderr, "%s: %s => ", progname, sb->name); + print_address (stderr, 0, &pb->address, pb->addrlen); + putc('\n', stderr); + } + + if (! is_address_ok (pd->debug_p, sb)) + free_bogie_after_lookup (ssd, sbp, &sb); + else if (find_duplicate_host (pd, &pd->targets, sb)) + /* Tricky: find_duplicate_host skips the current bogie when + scanning the targets list because pb->lookup_addr hasn't + been NULL'd yet. + + Not that it matters much, but behavior here is to + keep the existing address. + */ + free_bogie_after_lookup (ssd, sbp, &sb); + } + + if (sb) + pb->lookup_addr = NULL; + } + + if (sb && !pb->lookup_addr) + { + if (!pb->addrlen) abort(); + send_ping (pd, sb); + pd->last_pinged = sb; + } + } + + pd->last_ping_time = now; + } + + return get_ping (ssd); +} + + +/* Returns a list of hosts to ping based on the "-ping" argument. + */ +static sonar_bogie * +parse_mode (sonar_sensor_data *ssd, char **error_ret, char **desc_ret, + const char *ping_arg, Bool ping_works_p) +{ + ping_data *pd = (ping_data *) ssd->closure; + char *source, *token, *end, dummy; + sonar_bogie *hostlist = 0; + const char *fallback = "subnet"; + + AGAIN: + + if (fallback && (!ping_arg || !*ping_arg || !strcmp (ping_arg, "default"))) + source = strdup(fallback); + else if (ping_arg) + source = strdup(ping_arg); + else + return 0; + + token = source; + end = source + strlen(source); + while (token < end) + { + char *next; + sonar_bogie *new = 0; +# ifdef READ_FILES + struct stat st; +# endif + unsigned int n0=0, n1=0, n2=0, n3=0, m=0; + char d; + + for (next = token; + *next && + *next != ',' && *next != ' ' && *next != '\t' && *next != '\n'; + next++) + ; + *next = 0; + + + if (pd->debug_p) + fprintf (stderr, "%s: parsing %s\n", progname, token); + + if (!ping_works_p) + { + *error_ret = strdup ("Sonar must be setuid to ping!\n" + "Running simulation instead."); + return 0; + } + + if ((4 == sscanf (token, "%u.%u.%u/%u %c", &n0,&n1,&n2, &m,&d)) || + (5 == sscanf (token, "%u.%u.%u.%u/%u %c", &n0,&n1,&n2,&n3,&m,&d))) + { + /* subnet: A.B.C.D/M + subnet: A.B.C/M + */ + unsigned long ip = pack_addr (n0, n1, n2, n3); + new = subnet_hosts (ssd, error_ret, desc_ret, ip, m); + } + else if (4 == sscanf (token, "%u.%u.%u.%u %c", &n0, &n1, &n2, &n3, &d)) + { + /* IP: A.B.C.D + */ + new = bogie_for_host (ssd, token, NULL); + } + else if (!strcmp (token, "subnet")) + { + new = subnet_hosts (ssd, error_ret, desc_ret, 0, 24); + } + else if (1 == sscanf (token, "subnet/%u %c", &m, &dummy)) + { + new = subnet_hosts (ssd, error_ret, desc_ret, 0, m); + } + else if (*token == '.' || *token == '/' || + *token == '$' || *token == '~') + { +# ifdef READ_FILES + new = read_hosts_file (ssd, token); +# else + if (pd->debug_p) fprintf (stderr, "%s: skipping file\n", progname); +# endif + } +# ifdef READ_FILES + else if (!stat (token, &st)) + { + new = read_hosts_file (ssd, token); + } +# endif /* READ_FILES */ + else + { + /* not an existant file - must be a host name + */ + new = bogie_for_host (ssd, token, NULL); + } + + if (new) + { + sonar_bogie *nn = new; + while (nn->next) + nn = nn->next; + nn->next = hostlist; + hostlist = new; + } + + token = next + 1; + while (token < end && + (*token == ',' || *token == ' ' || + *token == '\t' || *token == '\n')) + token++; + } + + free (source); + + /* If the arg was completely unparsable, fall back to the local subnet. + This happens if the default is "/etc/hosts" but READ_FILES is off. + Or if we're on a /31 network, in which case we try twice then fail. + */ + if (!hostlist && fallback) + { + if (pd->debug_p) + fprintf (stderr, "%s: no hosts parsed! Trying %s\n", + progname, fallback); + ping_arg = fallback; + fallback = 0; + goto AGAIN; + } + + return hostlist; +} + + +sonar_sensor_data * +sonar_init_ping (Display *dpy, char **error_ret, char **desc_ret, + const char *subnet, int timeout, + Bool resolve_p, Bool times_p, Bool debug_p) +{ + /* Important! Do not return from this function without disavowing privileges + with setuid(getuid()). + */ + sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd)); + ping_data *pd = (ping_data *) calloc (1, sizeof(*pd)); + sonar_bogie *b; + char *s; + + Bool socket_initted_p = False; + Bool socket_raw_p = False; + + pd->dpy = dpy; + + pd->resolve_p = resolve_p; + pd->times_p = times_p; + pd->debug_p = debug_p; + + ssd->closure = pd; + ssd->scan_cb = ping_scan; + ssd->free_data_cb = ping_free_data; + ssd->free_bogie_cb = ping_free_bogie_data; + + /* Get short version number. */ + s = strchr (screensaver_id, ' '); + pd->version = strdup (s+1); + s = strchr (pd->version, ' '); + *s = 0; + + + /* Create the ICMP socket. Do this before dropping privs. + + Raw sockets can only be opened by root (or setuid root), so we + only try to do this when the effective uid is 0. + + We used to just always try, and notice the failure. But apparently + that causes "SELinux" to log spurious warnings when running with the + "strict" policy. So to avoid that, we just don't try unless we + know it will work. + + On MacOS X, we can avoid the whole problem by using a + non-privileged datagram instead of a raw socket. + */ + if (global_icmpsock) + { + pd->icmpsock = global_icmpsock; + socket_initted_p = True; + if (debug_p) + fprintf (stderr, "%s: re-using icmp socket\n", progname); + + } + else if ((pd->icmpsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP)) >= 0) + { + socket_initted_p = True; + } + else if (geteuid() == 0 && + (pd->icmpsock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) >= 0) + { + socket_initted_p = True; + socket_raw_p = True; + } + + if (socket_initted_p) + { + global_icmpsock = pd->icmpsock; + socket_initted_p = True; + if (debug_p) + fprintf (stderr, "%s: opened %s icmp socket\n", progname, + (socket_raw_p ? "raw" : "dgram")); + } + else if (debug_p) + fprintf (stderr, "%s: unable to open icmp socket\n", progname); + + /* Disavow privs */ + setuid(getuid()); + + pd->pid = getpid() & 0xFFFF; + pd->seq = 0; + pd->timeout = timeout; + + /* Generate a list of targets */ + + pd->targets = parse_mode (ssd, error_ret, desc_ret, subnet, + socket_initted_p); + pd->targets = delete_duplicate_hosts (ssd, pd->targets); + + if (debug_p) + { + fprintf (stderr, "%s: Target list:\n", progname); + for (b = pd->targets; b; b = b->next) + { + fprintf (stderr, "%s: ", progname); + print_host (stderr, b); + } + } + + /* Make sure there is something to ping */ + + pd->target_count = 0; + for (b = pd->targets; b; b = b->next) + pd->target_count++; + + if (pd->target_count == 0) + { + if (! *error_ret) + *error_ret = strdup ("No hosts to ping!\n" + "Simulating instead."); + if (pd) ping_free_data (ssd, pd); + if (ssd) free (ssd); + return 0; + } + + /* Distribute them evenly around the display field, clockwise. + Even on a /24, allocated IPs tend to cluster together, so + don't put any two hosts closer together than N degrees to + avoid unnecessary overlap when we have plenty of space due + to addresses that probably won't respond. And don't spread + them out too far apart, because that looks too symmetrical + when there are a small number of hosts. + */ + { + double th = frand(M_PI); + double sep = 360.0 / pd->target_count; + if (sep < 23) sep = 23; + if (sep > 43) sep = 43; + sep /= 180/M_PI; + for (b = pd->targets; b; b = b->next) { + b->th = th; + th += sep; + } + } + + return ssd; +} + +#endif /* HAVE_PING -- whole file */ diff --git a/hacks/glx/sonar-sim.c b/hacks/glx/sonar-sim.c new file mode 100644 index 0000000..ea5452e --- /dev/null +++ b/hacks/glx/sonar-sim.c @@ -0,0 +1,112 @@ +/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * This implements the "simulation" sensor for sonar. + */ + +#include "screenhackI.h" +#include "sonar.h" + +typedef struct { + const char *team_a_name; + const char *team_b_name; + int team_a_count; + int team_b_count; + sonar_bogie *targets; + Bool debug_p; +} sim_data; + + +static void +sim_free_data (sonar_sensor_data *ssd, void *closure) +{ + sim_data *sd = (sim_data *) closure; + free (sd); +} + +static void +sim_free_bogie_data (sonar_sensor_data *ssd, void *closure) +{ + free (closure); +} + + +/* Return an updated (moved) copy of the bogies. + */ +static sonar_bogie * +sim_scan (sonar_sensor_data *ssd) +{ + sim_data *sd = (sim_data *) ssd->closure; + sonar_bogie *b, *b2, *list = 0; + double scale = 0.01; + for (b = sd->targets; b; b = b->next) + { + b->r += scale * (0.5 - frand(1.0)); + b->th += scale * (0.5 - frand(1.0)); + while (b->r < 0.2) b->r += scale * 0.1; + while (b->r > 0.9) b->r -= scale * 0.1; + + b2 = sonar_copy_bogie (ssd, b); + b2->next = list; + list = b2; + } + return list; +} + + +static void +make_bogies (sonar_sensor_data *ssd) +{ + sim_data *sd = (sim_data *) ssd->closure; + int i, j; + + for (j = 0; j <= 1; j++) + for (i = 0; i < (j ? sd->team_a_count : sd->team_b_count); i++) + { + sonar_bogie *b = (sonar_bogie *) calloc (1, sizeof(*b)); + const char *name = (j ? sd->team_a_name : sd->team_b_name); + b->name = (char *) malloc (strlen(name) + 10); + sprintf (b->name, "%s%03d", name, i+1); + b->r = 0.3 + frand(0.5); + b->th = frand (M_PI*2); + b->next = sd->targets; + sd->targets = b; + if (sd->debug_p) + fprintf (stderr, "%s: %s: %5.2f %5.2f\n", progname, + b->name, b->r, b->th); + } +} + + +sonar_sensor_data * +sonar_init_simulation (Display *dpy, char **error_ret, char **desc_ret, + const char *team_a_name, const char *team_b_name, + int team_a_count, int team_b_count, + Bool debug_p) +{ + sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd)); + sim_data *sd = (sim_data *) calloc (1, sizeof(*sd)); + + sd->team_a_name = team_a_name; + sd->team_b_name = team_b_name; + sd->team_a_count = team_a_count; + sd->team_b_count = team_b_count; + sd->debug_p = debug_p; + + ssd->closure = sd; + ssd->scan_cb = sim_scan; + ssd->free_data_cb = sim_free_data; + ssd->free_bogie_cb = sim_free_bogie_data; + + make_bogies (ssd); + + return ssd; +} + diff --git a/hacks/glx/sonar.c b/hacks/glx/sonar.c new file mode 100644 index 0000000..c4ea949 --- /dev/null +++ b/hacks/glx/sonar.c @@ -0,0 +1,1258 @@ +/* sonar, Copyright (c) 1998-2018 Jamie Zawinski and Stephen Martin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* Created in Apr 1998 by Stephen Martin + * for the RedHat Screensaver Contest + * Heavily hacked by jwz ever since. + * Rewritten in OpenGL by jwz, Aug 2008. + * + * This is an implementation of a general purpose reporting tool in the + * format of a Sonar display. It is designed such that a sensor is read + * on every movement of a sweep arm and the results of that sensor are + * displayed on the screen. The location of the display points (targets) on the + * screen are determined by the current localtion of the sweep and a distance + * value associated with the target. + * + * Currently the only two sensors that are implemented are the simulator + * (the default) and the ping sensor. The simulator randomly creates a set + * of bogies that move around on the scope while the ping sensor can be + * used to display hosts on your network. + * + * The ping code is only compiled in if you define HAVE_ICMP or HAVE_ICMPHDR, + * because, unfortunately, different systems have different ways of creating + * these sorts of packets. + * + * In order to use the ping sensor on most systems, this program must be + * installed as setuid root, so that it can create an ICMP RAW socket. Root + * privileges are disavowed shortly after startup (just after connecting to + * the X server and reading the resource database) so this is *believed* to + * be a safe thing to do, but it is usually recommended that you have as few + * setuid programs around as possible, on general principles. + * + * It is not necessary to make it setuid on MacOS systems, because on those + * systems, unprivileged programs can ping by using ICMP DGRAM sockets + * instead of ICMP RAW. + * + * It should be easy to extend this code to support other sorts of sensors. + * Some ideas: + * + * - search the output of "netstat" for the list of hosts to ping; + * - plot the contents of /proc/interrupts; + * - plot the process table, by process size, cpu usage, or total time; + * - plot the logged on users by idle time or cpu usage. + * - plot IM contacts or Facebook friends and their last-activity times. + */ + +#define DEF_FONT "-*-courier-bold-r-normal-*-*-480-*-*-*-*-iso8859-1" +#define DEF_SPEED "1.0" +#define DEF_SWEEP_SIZE "0.3" +#define DEF_FONT_SIZE "12" +#define DEF_TEAM_A_NAME "F18" +#define DEF_TEAM_B_NAME "MIG" +#define DEF_TEAM_A_COUNT "4" +#define DEF_TEAM_B_COUNT "4" +#define DEF_PING "default" +#define DEF_PING_TIMEOUT "3000" +#define DEF_RESOLVE "True" +#define DEF_TIMES "True" +#define DEF_WOBBLE "True" +#define DEF_DEBUG "False" + +#include "thread_util.h" + +#define DEFAULTS "*delay: 30000 \n" \ + "*font: " DEF_FONT "\n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*texFontCacheSize: 300 \n" \ + THREAD_DEFAULTS_XLOCK + + +# define release_sonar 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#ifdef HAVE_UNISTD_H +# include /* for setuid() */ +#endif + +#include "xlockmore.h" +#include "sonar.h" +#include "gltrackball.h" +#include "rotator.h" +#include "texfont.h" +#include + +#ifdef USE_GL /* whole file */ + +/* #define TEST_ASYNC_NETDB 1 */ + +# if TEST_ASYNC_NETDB +# include "async_netdb.h" + +# include +# include +# include +# endif /* TEST_ASYNC_NETDB */ + +typedef struct { + double x,y,z; +} XYZ; + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + rotator *rot; + Bool button_down_p; + + double start_time; + GLfloat sweep_offset; + + GLuint screen_list, grid_list, sweep_list, table_list; + int screen_polys, grid_polys, sweep_polys, table_polys; + GLfloat sweep_th; + GLfloat line_thickness; + + texture_font_data *texfont; + + enum { MSG, RESOLVE, RUN } state; + sonar_sensor_data *ssd; + char *error; + char *desc; + + sonar_bogie *displayed; /* on screen and fading */ + sonar_bogie *pending; /* returned by sensor, not yet on screen */ + +# if TEST_ASYNC_NETDB + async_name_from_addr_t query0; + async_addr_from_name_t query1; +# endif +} sonar_configuration; + +static sonar_configuration *sps = NULL; + +static GLfloat speed; +static GLfloat sweep_size; +static GLfloat font_size; +static Bool resolve_p; +static Bool times_p; +static Bool wobble_p; +static Bool debug_p; + +static char *team_a_name; +static char *team_b_name; +static int team_a_count; +static int team_b_count; +static int ping_timeout; +static char *ping_arg; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-sweep-size", ".sweepSize", XrmoptionSepArg, 0 }, + { "-font-size", ".fontSize", XrmoptionSepArg, 0 }, + { "-team-a-name", ".teamAName", XrmoptionSepArg, 0 }, + { "-team-b-name", ".teamBName", XrmoptionSepArg, 0 }, + { "-team-a-count", ".teamACount", XrmoptionSepArg, 0 }, + { "-team-b-count", ".teamBCount", XrmoptionSepArg, 0 }, + { "-ping", ".ping", XrmoptionSepArg, 0 }, + { "-ping-timeout", ".pingTimeout", XrmoptionSepArg, 0 }, + { "-dns", ".resolve", XrmoptionNoArg, "True" }, + { "+dns", ".resolve", XrmoptionNoArg, "False" }, + { "-times", ".times", XrmoptionNoArg, "True" }, + { "+times", ".times", XrmoptionNoArg, "False" }, + { "-wobble", ".wobble", XrmoptionNoArg, "True" }, + { "+wobble", ".wobble", XrmoptionNoArg, "False" }, + THREAD_OPTIONS + { "-debug", ".debug", XrmoptionNoArg, "True" }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&sweep_size, "sweepSize", "SweepSize", DEF_SWEEP_SIZE, t_Float}, + {&font_size, "fontSize", "FontSize", DEF_FONT_SIZE, t_Float}, + {&team_a_name, "teamAName", "TeamName", DEF_TEAM_A_NAME, t_String}, + {&team_b_name, "teamBName", "TeamName", DEF_TEAM_B_NAME, t_String}, + {&team_a_count, "teamACount", "TeamCount", DEF_TEAM_A_COUNT, t_Int}, + {&team_b_count, "teamBCount", "TeamCount", DEF_TEAM_A_COUNT, t_Int}, + {&ping_arg, "ping", "Ping", DEF_PING, t_String}, + {&ping_timeout, "pingTimeout", "PingTimeout", DEF_PING_TIMEOUT, t_Int}, + {&resolve_p, "resolve", "Resolve", DEF_RESOLVE, t_Bool}, + {×_p, "times", "Times", DEF_TIMES, t_Bool}, + {&wobble_p, "wobble", "Wobble", DEF_WOBBLE, t_Bool}, + {&debug_p, "debug", "Debug", DEF_DEBUG, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt sonar_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static int +draw_screen (ModeInfo *mi, Bool mesh_p, Bool sweep_p) +{ + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + int i; + int th_steps, r_steps, r_skip, th_skip, th_skip2, outer_r; + GLfloat curvature = M_PI * 0.4; + GLfloat r0, r1, z0, z1, zoff; + XYZ *ring; + + static const GLfloat glass[4] = {0.0, 0.4, 0.0, 0.5}; + static const GLfloat lines[4] = {0.0, 0.7, 0.0, 0.5}; + static const GLfloat sweepc[4] = {0.2, 1.0, 0.2, 0.5}; + static const GLfloat spec[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat shiny = 20.0; + + if (wire && !(mesh_p || sweep_p)) return 0; + + glDisable (GL_TEXTURE_2D); + + glFrontFace (GL_CCW); + th_steps = 36 * 4; /* must be a multiple of th_skip2 divisor */ + r_steps = 40; + r_skip = 1; + th_skip = 1; + th_skip2 = 1; + outer_r = 0; + + glMaterialfv (GL_FRONT, GL_SPECULAR, spec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mesh_p ? lines : glass); + if (wire) glColor3fv (lines); + + if (mesh_p) + { + th_skip = th_steps / 12; + th_skip2 = th_steps / 36; + r_skip = r_steps / 3; + outer_r = r_steps * 0.93; + + if (! wire) + glLineWidth (sp->line_thickness); + } + + ring = (XYZ *) calloc (th_steps, sizeof(*ring)); + + for (i = 0; i < th_steps; i++) + { + double a = M_PI * 2 * i / th_steps; + ring[i].x = cos(a); + ring[i].y = sin(a); + } + + /* place the bottom of the disc on the xy plane. */ + zoff = cos (curvature/2 * (M_PI/2)) / 2; + + for (i = r_steps; i > 0; i--) + { + int j0, j1; + + r0 = i / (GLfloat) r_steps; + r1 = (i+1) / (GLfloat) r_steps; + + if (r1 > 1) r1 = 1; /* avoid asin lossage */ + + z0 = cos (curvature/2 * asin (r0)) / 2 - zoff; + z1 = cos (curvature/2 * asin (r1)) / 2 - zoff; + + glBegin(wire || mesh_p ? GL_LINES : GL_QUAD_STRIP); + for (j0 = 0; j0 <= th_steps; j0++) + { + if (mesh_p && + (i < outer_r + ? (j0 % th_skip != 0) + : (j0 % th_skip2 != 0))) + continue; + + if (sweep_p) + { + GLfloat color[4]; + GLfloat r = 1 - (j0 / (GLfloat) (th_steps * sweep_size)); +#if 0 + color[0] = glass[0] + (sweepc[0] - glass[0]) * r; + color[1] = glass[1] + (sweepc[1] - glass[1]) * r; + color[2] = glass[2] + (sweepc[2] - glass[2]) * r; + color[3] = glass[3]; +#else + color[0] = sweepc[0]; + color[1] = sweepc[1]; + color[2] = sweepc[2]; + color[3] = r; +#endif + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + } + + j1 = j0 % th_steps; + glNormal3f (r0 * ring[j1].x, r0 * ring[j1].y, z0); + glVertex3f (r0 * ring[j1].x, r0 * ring[j1].y, z0); + glNormal3f (r1 * ring[j1].x, r1 * ring[j1].y, z1); + glVertex3f (r1 * ring[j1].x, r1 * ring[j1].y, z1); + polys++; + + if (sweep_p && j0 >= th_steps * sweep_size) + break; + if (sweep_p && wire) + break; + } + glEnd(); + + if (mesh_p && + (i == outer_r || + i == r_steps || + (i % r_skip == 0 && + i < r_steps - r_skip))) + { + glBegin(GL_LINE_LOOP); + for (j0 = 0; j0 < th_steps; j0++) + { + glNormal3f (r0 * ring[j0].x, r0 * ring[j0].y, z0); + glVertex3f (r0 * ring[j0].x, r0 * ring[j0].y, z0); + polys++; + } + glEnd(); + } + } + + /* one more polygon for the middle */ + if (!wire && !sweep_p) + { + glBegin(wire || mesh_p ? GL_LINE_LOOP : GL_POLYGON); + glNormal3f (0, 0, 1); + for (i = 0; i < th_steps; i++) + { + glNormal3f (r0 * ring[i].x, r0 * ring[i].y, z0); + glVertex3f (r0 * ring[i].x, r0 * ring[i].y, z0); + } + polys++; + glEnd(); + } + + free (ring); + + return polys; +} + + +static int +draw_text (ModeInfo *mi, const char *string, GLfloat r, GLfloat th, + GLfloat ttl, GLfloat size) +{ + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + GLfloat font_scale = 0.001 * (size > 0 ? size : font_size) / 14.0; + int lines = 0, max_w = 0, lh = 0; + char *string2 = strdup (string); + char *token = string2; + char *line; + + if (MI_WIDTH(mi) > 2560) font_scale /= 2; /* Retina displays */ + + if (size <= 0) /* if size not specified, draw in yellow with alpha */ + { + GLfloat color[4]; + color[0] = 1; + color[1] = 1; + color[2] = 0; + color[3] = (ttl / (M_PI * 2)) * 1.2; + if (color[3] > 1) color[3] = 1; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + if (wire) + glColor3f (color[0]*color[3], color[1]*color[3], color[2]*color[3]); + } + + while ((line = strtok (token, "\r\n"))) + { + XCharStruct e; + int w, ascent, descent; + texture_string_metrics (sp->texfont, line, &e, &ascent, &descent); + w = e.width; + lh = ascent + descent; + if (w > max_w) max_w = w; + lines++; + token = 0; + } + + glPushMatrix(); + glTranslatef (r * cos (th), r * sin(th), 0); + glScalef (font_scale, font_scale, font_scale); + + if (size <= 0) /* Draw the dot */ + { + GLfloat s = font_size * 1.7; + glDisable (GL_TEXTURE_2D); + glFrontFace (GL_CW); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (0, s, 0); + glVertex3f (s, s, 0); + glVertex3f (s, 0, 0); + glVertex3f (0, 0, 0); + glEnd(); + glTranslatef (-max_w/2, -lh, 0); + } + else + glTranslatef (-max_w/2, -lh/2, 0); + + /* draw each line, centered */ + if (! wire) glEnable (GL_TEXTURE_2D); + free (string2); + string2 = strdup (string); + token = string2; + while ((line = strtok (token, "\r\n"))) + { + XCharStruct e; + int w; + texture_string_metrics (sp->texfont, line, &e, 0, 0); + w = e.width; + glPushMatrix(); + glTranslatef ((max_w-w)/2, 0, polys * 4); /* 'polys' stops Z-fighting. */ + + if (wire) + { + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); + glVertex3f (w, 0, 0); + glVertex3f (w, lh, 0); + glVertex3f (0, lh, 0); + glEnd(); + } + else + { + glFrontFace (GL_CW); + print_texture_string (sp->texfont, line); + } + glPopMatrix(); + glTranslatef (0, -lh, 0); + polys++; + token = 0; + } + glPopMatrix(); + + free (string2); + + if (! wire) glEnable (GL_DEPTH_TEST); + + return polys; +} + + +/* There's a disc with a hole in it around the screen, to act as a mask + preventing slightly off-screen bogies from showing up. This clips 'em. + */ +static int +draw_table (ModeInfo *mi) +{ + /*sonar_configuration *sp = &sps[MI_SCREEN(mi)];*/ + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + int i; + int th_steps = 36 * 4; /* same as in draw_screen */ + + static const GLfloat color[4] = {0.0, 0.0, 0.0, 1.0}; + static const GLfloat spec[4] = {0.0, 0.0, 0.0, 1.0}; + static const GLfloat shiny = 0.0; + + if (wire) return 0; + + glDisable (GL_TEXTURE_2D); + + glMaterialfv (GL_FRONT, GL_SPECULAR, spec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + + glFrontFace (GL_CCW); + glBegin(wire ? GL_LINES : GL_QUAD_STRIP); + glNormal3f (0, 0, 1); + for (i = 0; i <= th_steps; i++) + { + double a = M_PI * 2 * i / th_steps; + double x = cos(a); + double y = sin(a); + glVertex3f (x, y, 0); + glVertex3f (x*10, y*10, 0); + polys++; + } + glEnd(); + + return polys; +} + + +static int +draw_angles (ModeInfo *mi) +{ + int i; + int polys = 0; + + static const GLfloat text[4] = {0.15, 0.15, 0.15, 1.0}; + static const GLfloat spec[4] = {0.0, 0.0, 0.0, 1.0}; + + glMaterialfv (GL_FRONT, GL_SPECULAR, spec); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, text); + glTranslatef (0, 0, 0.01); + for (i = 0; i < 360; i += 10) + { + char buf[10]; + GLfloat a = M_PI/2 - (i / 180.0 * M_PI); + sprintf (buf, "%d", i); + polys += draw_text (mi, buf, 1.07, a, 0, 10.0); + } + + return polys; +} + + +static int +draw_bogies (ModeInfo *mi) +{ + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + int polys = 0; + sonar_bogie *b; + + for (b = sp->displayed; b; b = b->next) + { + char *s = (char *) + malloc (strlen (b->name) + (b->desc ? strlen(b->desc) : 0) + 3); + strcpy (s, b->name); + if (b->desc) + { + strcat (s, "\n"); + strcat (s, b->desc); + } + polys += draw_text (mi, s, b->r, b->th, b->ttl, -1); + free (s); + + /* Move *very slightly* forward so that the text is not all in the + same plane: this prevents flickering with overlapping text as + the textures fight for priority. */ + glTranslatef(0, 0, 0.00002); + } + + return polys; +} + + +/* called from sonar-sim.c and sonar-icmp.c */ +sonar_bogie * +sonar_copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b) +{ + sonar_bogie *b2 = (sonar_bogie *) calloc (1, sizeof(*b2)); + b2->name = strdup (b->name); + b2->desc = b->desc ? strdup (b->desc) : 0; + b2->r = b->r; + b2->th = b->th; + b2->ttl = b->ttl; + /* does not copy b->closure */ + + /* Take this opportunity to normalize 'th' to the range [0-2pi). */ + while (b2->th < 0) b2->th += M_PI*2; + while (b2->th >= M_PI*2) b2->th -= M_PI*2; + + return b2; +} + + +/* called from sonar-icmp.c */ +void +sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b) +{ + if (b->closure) + ssd->free_bogie_cb (ssd, b->closure); + free (b->name); + if (b->desc) free (b->desc); + free (b); +} + +/* removes it from the list and frees it + */ +static void +delete_bogie (sonar_sensor_data *ssd, sonar_bogie *b, + sonar_bogie **from_list) +{ + sonar_bogie *ob, *prev; + for (prev = 0, ob = *from_list; ob; prev = ob, ob = ob->next) + if (ob == b) + { + if (prev) + prev->next = b->next; + else + (*from_list) = b->next; + sonar_free_bogie (ssd, b); + break; + } +} + + +/* copies the bogie and adds it to the list. + if there's another bogie there with the same name, frees that one. + */ +static void +copy_and_insert_bogie (sonar_sensor_data *ssd, sonar_bogie *b, + sonar_bogie **to_list) +{ + sonar_bogie *ob, *next; + if (!b) abort(); + for (ob = *to_list, next = ob ? ob->next : 0; + ob; + ob = next, next = ob ? ob->next : 0) + { + if (ob == b) abort(); /* this will end badly */ + if (!strcmp (ob->name, b->name)) /* match! */ + { + delete_bogie (ssd, ob, to_list); + break; + } + } + + b = sonar_copy_bogie (ssd, b); + b->next = *to_list; + *to_list = b; +} + + +static void +update_sensor_data (sonar_configuration *sp) +{ + sonar_bogie *new_list = sp->ssd->scan_cb (sp->ssd); + sonar_bogie *b2; + + /* If a bogie exists in 'new_list' but not 'pending', add it. + If a bogie exists in both, update it in 'pending'. + */ + for (b2 = new_list; b2; b2 = b2->next) + { + if (debug_p > 2) + fprintf (stderr, "%s: updated: %s (%5.2f %5.2f %5.2f)\n", + progname, b2->name, b2->r, b2->th, b2->ttl); + copy_and_insert_bogie (sp->ssd, b2, &sp->pending); + } + if (debug_p > 2) fprintf (stderr, "\n"); +} + + +/* Returns whether the given angle lies between two other angles. + When those angles cross 0, it assumes the wedge is the smaller one. + That is: 5 lies between 10 and 350 degrees (a 20 degree wedge). + */ +static Bool +point_in_wedge (GLfloat th, GLfloat low, GLfloat high) +{ + if (low < high) + return (th > low && th <= high); + else + return (th <= high || th > low); +} + + +/* Returns the current time in seconds as a double. + */ +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + + +static void +sweep (sonar_configuration *sp) +{ + sonar_bogie *b; + + /* Move the sweep forward (clockwise). + */ + GLfloat prev_sweep, this_sweep, tick; + GLfloat cycle_secs = 30 / speed; /* default to one cycle every N seconds */ + this_sweep = ((cycle_secs - fmod (double_time() - sp->start_time + + sp->sweep_offset, + cycle_secs)) + / cycle_secs + * M_PI * 2); + prev_sweep = sp->sweep_th; + tick = prev_sweep - this_sweep; + while (tick < 0) tick += M_PI*2; + + sp->sweep_th = this_sweep; + + if (this_sweep < 0 || this_sweep >= M_PI*2) abort(); + if (prev_sweep < 0) /* skip first time */ + return; + + if (tick < 0 || tick >= M_PI*2) abort(); + + + /* Go through the 'pending' sensor data, find those bogies who are + just now being swept, and move them from 'pending' to 'displayed'. + (Leave bogies that have not yet been swept alone: we'll get to + them when the sweep moves forward.) + */ + b = sp->pending; + while (b) + { + sonar_bogie *next = b->next; + if (point_in_wedge (b->th, this_sweep, prev_sweep)) + { + if (debug_p > 1) { + time_t t = time((time_t *) 0); + fprintf (stderr, + "%s: sweep hit: %02d:%02d: %s: (%5.2f %5.2f %5.2f;" + " th=[%.2f < %.2f <= %.2f])\n", + progname, + (int) (t / 60) % 60, (int) t % 60, + b->name, b->r, b->th, b->ttl, + this_sweep, b->th, prev_sweep); + } + b->ttl = M_PI * 2.1; + copy_and_insert_bogie (sp->ssd, b, &sp->displayed); + delete_bogie (sp->ssd, b, &sp->pending); + } + b = next; + } + + + /* Update TTL on all currently-displayed bogies; delete the dead. + + Request sensor updates on the ones just now being swept. + + Any updates go into 'pending' and might not show up until + the next time the sweep comes around. This is to prevent + already-drawn bogies from jumping to a new position without + having faded out first. + */ + b = sp->displayed; + while (b) + { + sonar_bogie *next = b->next; + b->ttl -= tick; + + if (b->ttl <= 0) + { + if (debug_p > 1) + fprintf (stderr, "%s: TTL expired: %s (%5.2f %5.2f %5.2f)\n", + progname, b->name, b->r, b->th, b->ttl); + delete_bogie (sp->ssd, b, &sp->displayed); + } + b = next; + } + + update_sensor_data (sp); +} + + +static void +draw_startup_blurb (ModeInfo *mi) +{ + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + + if (sp->error) + { + const char *msg = sp->error; + static const GLfloat color[4] = {0, 1, 0, 1}; + + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glTranslatef (0, 0, 0.3); + draw_text (mi, msg, 0, 0, 0, 30.0); + + /* only leave error message up for N seconds */ + if (sp->start_time + 6 < double_time()) + { + free (sp->error); + sp->error = 0; + } + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_sonar (ModeInfo *mi, int width, int height) +{ + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); + + sp->line_thickness = (MI_IS_WIREFRAME (mi) ? 1 : MAX (1, height / 300.0)); +} + + +ENTRYPOINT Bool +sonar_handle_event (ModeInfo *mi, XEvent *event) +{ + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, sp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &sp->button_down_p)) + return True; + + return False; +} + +ENTRYPOINT void +init_sonar (ModeInfo *mi) +{ + sonar_configuration *sp; + + MI_INIT (mi, sps); + sp = &sps[MI_SCREEN(mi)]; + sp->glx_context = init_GL(mi); + + reshape_sonar (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + + sp->trackball = gltrackball_init (False); + sp->rot = make_rotator (0, 0, 0, 0, speed * 0.003, True); + + sp->texfont = load_texture_font (MI_DISPLAY(mi), "font"); + check_gl_error ("loading font"); + + sp->table_list = glGenLists (1); + glNewList (sp->table_list, GL_COMPILE); + sp->table_polys = draw_table (mi); + glEndList (); + + sp->screen_list = glGenLists (1); + glNewList (sp->screen_list, GL_COMPILE); + sp->screen_polys = draw_screen (mi, False, False); + glEndList (); + + sp->grid_list = glGenLists (1); + glNewList (sp->grid_list, GL_COMPILE); + sp->grid_polys = draw_screen (mi, True, False); + glEndList (); + + sp->sweep_list = glGenLists (1); + glNewList (sp->sweep_list, GL_COMPILE); + sp->sweep_polys = draw_screen (mi, False, True); + glEndList (); + + sp->start_time = double_time (); + sp->sweep_offset = random() % 60; + sp->sweep_th = -1; + sp->state = MSG; +} + + +# ifdef TEST_ASYNC_NETDB + +# include + +static void _print_sockaddr (void *addr, socklen_t addrlen, FILE *stream) +{ + sa_family_t family = ((struct sockaddr *)addr)->sa_family; + char buf[256]; + switch (family) + { + case AF_INET: + fputs (inet_ntoa(((struct sockaddr_in *)addr)->sin_addr), stream); + break; + case AF_INET6: + inet_ntop(family, &((struct sockaddr_in6 *)addr)->sin6_addr, + buf, sizeof (buf)); + fputs (buf, stream); + break; + default: + abort(); + break; + } +} + +static void _print_error (int gai_error, int errno_error, FILE *stream) +{ + fputs (gai_error == EAI_SYSTEM ? strerror(errno_error) : gai_strerror(gai_error), stream); +} + +# if ASYNC_NETDB_USE_GAI + +static void _print_thread (pthread_t thread, FILE *stream) +{ +# ifdef __linux__ + fprintf (stream, "%#lx", thread); +# elif defined __APPLE__ && defined __MACH__ + fprintf (stream, "%p", thread); +# else + putc ('?', stream); +# endif +} + +# endif /* ASYNC_NETDB_USE_GAI */ + +# endif /* TEST_ASYNC_NETDB */ + + +static void +init_sensor (ModeInfo *mi) +{ + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + + if (sp->ssd) abort(); + + if (!ping_arg || !*ping_arg || + !strcmp(ping_arg, "default") || + !!strcmp (ping_arg, "simulation")) + /* sonar_init_ping() always disavows privs, even on failure. */ + sp->ssd = sonar_init_ping (MI_DISPLAY (mi), &sp->error, &sp->desc, + ping_arg, ping_timeout, resolve_p, times_p, + debug_p); + else + setuid(getuid()); /* Disavow privs if not pinging. */ + + sp->start_time = double_time (); /* for error message timing */ + + if (!sp->ssd) + sp->ssd = sonar_init_simulation (MI_DISPLAY (mi), &sp->error, &sp->desc, + team_a_name, team_b_name, + team_a_count, team_b_count, + debug_p); + if (!sp->ssd) + abort(); + +# if TEST_ASYNC_NETDB + /* + For extremely mysterious reasons, setuid apparently causes + pthread_join(3) to deadlock. + A rough guess at the sequence of events: + 1. Worker thread is created. + 2. Worker thread exits. + 3. setuid(getuid()) is called. + 4. pthread_join is called slightly later. + + This may have something to do with glibc's use of SIGSETXID. + */ + + putc ('\n', stderr); + +# if !ASYNC_NETDB_USE_GAI + fputs ("Warning: getaddrinfo() was not available at compile time.\n", stderr); +# endif + + { + static const unsigned long addresses[] = + { + INADDR_LOOPBACK, + 0x00010203, + 0x08080808 + }; + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = 0; + addr.sin_addr.s_addr = htonl (addresses[random () % 3]); + + sp->query0 = async_name_from_addr_start (MI_DISPLAY (mi), (void *)&addr, + sizeof(addr)); + assert (sp->query0); + if (sp->query0) + { + fputs ("Looking up hostname from address: ", stderr); + _print_sockaddr (&addr, sizeof(addr), stderr); +# if ASYNC_NETDB_USE_GAI + fputs (" @ ", stderr); + _print_thread (sp->query0->io.thread, stderr); +# endif + putc ('\n', stderr); + } + + if (!(random () & 3)) + { + fputs ("Aborted hostname lookup (early)\n", stderr); + async_name_from_addr_cancel (sp->query0); + sp->query0 = NULL; + } + } + + { + static const char *const hosts[] = + { + "example.com", + "invalid", + "ip6-localhost" + }; + const char *host = hosts[random () % 3]; + + sp->query1 = async_addr_from_name_start (MI_DISPLAY(mi), host); + + assert (sp->query1); + + fprintf (stderr, "Looking up address from hostname: %s", host); +# if ASYNC_NETDB_USE_GAI + fputs (" @ ", stderr); + _print_thread (sp->query1->io.thread, stderr); +# endif + putc ('\n', stderr); + + if (!(random () & 3)) + { + fputs ("Aborted address lookup (early)\n", stderr); + async_addr_from_name_cancel (sp->query1); + sp->query1 = NULL; + } + } + + fflush (stderr); +# endif +} + + +ENTRYPOINT void +draw_sonar (ModeInfo *mi) +{ + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + + if (!sp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (!wire) + { + GLfloat pos[4] = {0.05, 0.07, 1.00, 0.0}; + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_TEXTURE_2D); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_CULL_FACE); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_LINE_SMOOTH); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); + glShadeModel(GL_SMOOTH); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + + { + GLfloat s = 7; + if (MI_WIDTH(mi) < MI_HEIGHT(mi)) + s *= (MI_WIDTH(mi) / (float) MI_HEIGHT(mi)); + glScalef (s,s,s); + } + + gltrackball_rotate (sp->trackball); + + if (wobble_p) + { + double x, y, z; + double max = 40; + get_position (sp->rot, &x, &y, &z, !sp->button_down_p); + glRotatef (max/2 - x*max, 1, 0, 0); + glRotatef (max/2 - z*max, 0, 1, 0); + } + + mi->polygon_count = 0; + + glPushMatrix(); /* table */ + glCallList (sp->table_list); + mi->polygon_count += sp->table_polys; + glPopMatrix(); + + glPushMatrix(); /* text */ + glTranslatef (0, 0, -0.01); + mi->polygon_count += draw_bogies (mi); + glPopMatrix(); + + glCallList (sp->screen_list); /* glass */ + mi->polygon_count += sp->screen_polys; + + glTranslatef (0, 0, 0.004); /* sweep */ + glPushMatrix(); + glRotatef ((sp->sweep_th * 180 / M_PI), 0, 0, 1); + if (sp->sweep_th >= 0) + glCallList (sp->sweep_list); + mi->polygon_count += sp->sweep_polys; + glPopMatrix(); + + glTranslatef (0, 0, 0.004); /* grid */ + glCallList (sp->grid_list); + mi->polygon_count += sp->screen_polys; + + glPushMatrix(); + mi->polygon_count += draw_angles (mi); /* angles */ + glPopMatrix(); + + if (sp->desc) /* local subnet */ + { + glPushMatrix(); + glTranslatef (0, 0, 0.00002); + mi->polygon_count += draw_text (mi, sp->desc, 1.35, M_PI * 0.75, 0, 10); + /* glRotatef (45, 0, 0, 1); */ + /* mi->polygon_count += draw_text (mi, sp->desc, 1.2, M_PI/2, 0, 10); */ + glPopMatrix(); + } + + if (sp->error) + sp->state = MSG; + + switch (sp->state) { + case MSG: /* Frame 1: get "Resolving Hosts" on screen. */ + draw_startup_blurb(mi); + sp->state++; + break; + case RESOLVE: /* Frame 2: gethostbyaddr may take a while. */ + if (! sp->ssd) + init_sensor (mi); + sp->state++; + break; + case RUN: /* Frame N: ping away */ + sweep (sp); + break; + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); + +# if TEST_ASYNC_NETDB + if(sp->query0 && async_name_from_addr_is_done (sp->query0)) + { + if (!(random () & 3)) + { + fputs ("Aborted hostname lookup (late)\n", stderr); + async_name_from_addr_cancel (sp->query0); + } + else + { + char *hostname = NULL; + int errno_error; + int gai_error = async_name_from_addr_finish (sp->query0, &hostname, + &errno_error); + + if(gai_error) + { + fputs ("Couldn't get hostname: ", stderr); + _print_error (gai_error, errno_error, stderr); + putc ('\n', stderr); + } + else + { + fprintf (stderr, "Got a hostname: %s\n", hostname); + free (hostname); + } + } + + sp->query0 = NULL; + } + + if(sp->query1 && async_addr_from_name_is_done (sp->query1)) + { + if (!(random () & 3)) + { + fputs ("Aborted address lookup (late)\n", stderr); + async_addr_from_name_cancel (sp->query1); + } + else + { + async_netdb_sockaddr_storage_t addr; + socklen_t addrlen; + int errno_error; + int gai_error = async_addr_from_name_finish (sp->query1, &addr, + &addrlen, &errno_error); + + if (gai_error) + { + fputs ("Couldn't get address: ", stderr); + _print_error (gai_error, errno_error, stderr); + putc ('\n', stderr); + } + else + { + fputs ("Got an address: ", stderr); + _print_sockaddr (&addr, addrlen, stderr); + putc ('\n', stderr); + } + } + + sp->query1 = NULL; + } + + fflush (stderr); +# endif /* TEST_ASYNC_NETDB */ +} + +ENTRYPOINT void +free_sonar (ModeInfo *mi) +{ +#if 0 + sonar_configuration *sp = &sps[MI_SCREEN(mi)]; + sonar_bogie *b = sp->displayed; + while (b) + { + sonar_bogie *next = b->next; + free_bogie (sp->ssd, b); + b = next; + } + sp->displayed = 0; + + b = sp->pending; + while (b) + { + sonar_bogie *next = b->next; + free_bogie (sp->ssd, b); + b = next; + } + sp->pending = 0; + + sp->ssd->free_data_cb (sp->ssd, sp->ssd->closure); + free (sp->ssd); + sp->ssd = 0; +#endif +} + +XSCREENSAVER_MODULE ("Sonar", sonar) + +#endif /* USE_GL */ diff --git a/hacks/glx/sonar.h b/hacks/glx/sonar.h new file mode 100644 index 0000000..d6473e0 --- /dev/null +++ b/hacks/glx/sonar.h @@ -0,0 +1,71 @@ +/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __SONAR_XSCREENSAVER_H__ +#define __SONAR_XSCREENSAVER_H__ + +typedef struct sonar_sensor_data sonar_sensor_data; +typedef struct sonar_bogie sonar_bogie; + +struct sonar_bogie { + void *closure; + char *name; /* bogie name, e.g., host name */ + char *desc; /* second line of text, e.g., ping time */ + double r; /* distance, 0 - 1.0 */ + double th; /* heading, 0 - 2 pi */ + double ttl; /* time to live, 0 - 2 pi */ + sonar_bogie *next; /* next one in the list */ +}; + +struct sonar_sensor_data { + void *closure; + + /* Called frequently (every time the sweep moves). + Returns a list of new bogies to be added to the display list + once the sweep comes around to their position. + */ + sonar_bogie *(*scan_cb) (sonar_sensor_data *); + + /* Called when a bogie is freed, to free bogie->closure */ + void (*free_bogie_cb) (sonar_sensor_data *, void *closure); + + /* Called at exit, to free ssd->closure */ + void (*free_data_cb) (sonar_sensor_data *, void *closure); +}; + +/* frees bogie and its contents, including calling the free_bogie_cb. */ +extern void sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b); + +/* makes a copy of the bogie, not including the 'closure' data. */ +extern sonar_bogie *sonar_copy_bogie (sonar_sensor_data *, + const sonar_bogie *); + + +/* Set up and return sensor state for ICMP pings. */ +extern sonar_sensor_data *sonar_init_ping (Display *dpy, + char **error_ret, + char **desc_ret, + const char *subnets, + int ping_timeout, + Bool resolve_p, Bool times_p, + Bool debug_p); + +/* Set up and return sensor state for the simulation. */ +extern sonar_sensor_data *sonar_init_simulation (Display *dpy, + char **error_ret, + char **desc_ret, + const char *team_a_name, + const char *team_b_name, + int team_a_count, + int team_b_count, + Bool debug_p); + +#endif /* __SONAR_XSCREENSAVER_H__ */ diff --git a/hacks/glx/sonar.man b/hacks/glx/sonar.man new file mode 100644 index 0000000..9927b3b --- /dev/null +++ b/hacks/glx/sonar.man @@ -0,0 +1,169 @@ +.de EX \"Begin example +.ne 5 +.if n .sp 1 +.if t .sp .5 +.nf +.in +.5i +.. +.de EE +.fi +.in -.5i +.if n .sp 1 +.if t .sp .5 +.. +.TH Sonar 1 "12-Aug-08" "X Version 11" +.SH NAME +sonar - display a sonar scope +.SH SYNOPSIS +.B sonar +[\-ping \fIhosts-or-subnets\fP] +[\-ping\-timeout \fIint\fP] +[\-delay \fIusecs\fP] +[\-speed \fIratio\fP] +[\-sweep-size \fIratio\fP] +[\-font-size \fIpoints\fP] +[\-team-a-name \fIstring\fP] +[\-team-b-name \fIstring\fP] +[\-team-a-count \fIint\fP] +[\-team-b-count \fIint\fP] +[\-no\-dns] +[\-no\-times] +[\-no\-wobble] +[\-debug] +[\-fps] +.SH DESCRIPTION +This draws a sonar screen that pings (get it?) the hosts on +your local network, and plots their distance (response time) from you. +The three rings represent ping times of approximately 2.5, 70 and 2,000 +milliseconds respectively. + +Alternately, it can run a simulation that doesn't involve hosts. +.SH OPTIONS +.I sonar +understands the following options: +.TP 8 +.B \-ping \fIhosts-or-subnets\fP +The list of things to ping, separated by commas or spaces. +Elements of this list may be: +.RS 8 +.TP 12 +.B simulation +Run in simulation mode instead of pinging real hosts. +.TP 12 +.I hostname +Ping the given host. +.TP 12 +.I A.B.C.D +Ping the given IPv4 address. +.TP 12 +.B subnet +Ping the local subnet. On systems where we can determine the local +network mask, we use that; otherwise, we assume Class C (254 hosts). +.TP 12 +.B subnet/\fINN\fP +Ping a different-sized local subnet: e.g., \fBsubnet/28\fP would ping +a 4-bit subnet (the nearest 14 addresses). On systems where we can +determine the local network mask, we always use that. +.TP 12 +.I A.B.C.D/NN +Ping an arbitrary other IPv4 subnet. The address specifies +the base address, and the part after the slash is how wide the +subnet is. Typical values are /24 (for 254 addresses) and /28 (for +14 addresses). +.TP 12 +.I filename +Ping the hosts listed in the given file. This file can be in the +format used by \fI/etc/hosts\fP, or it can be any file that has host +names as the first or second element on each line. If you use ssh, +try this: + + sonar -ping $HOME/.ssh/known_hosts +.RE +.TP 8 +.B \-ping\-timeout \fIint\fP +The amount of time in milliseconds the program will wait for an answer +to a ping. +.TP 8 +.B \-delay \fIint\fP +Delay between frames, in microseconds. Default 20000. +.TP 8 +.B \-speed \fIratio\fP +Less than 1 for slower, greater than 1 for faster. Default 1. +.TP 8 +.B \-sweep-size \fIratio\fP +How big the glowing sweep area should be. Default 0.3. +.TP 8 +.B \-font-size \fIpoints\fP +How large the text should be. Default 10 points. +.TP 8 +.B \-no\-wobble +Keep the display stationary instead of very slowly wobbling back and forth. +.TP 8 +.B \-no\-dns +Do not attempt to resolve IP addresses to hostnames. +.TP 8 +.B \-no\-times +Do not display ping times beneath the host names. +.TP 8 +.B \-team-a-name \fIstring\fP +In simulation mode, the name of team A. +.TP 8 +.B \-team-b-name \fIstring\fP +In simulation mode, the name of team B. +.TP 8 +.B \-team-a-count \fIint\fP +In simulation mode, the number of bogies on team A. +.TP 8 +.B \-team-b-count \fIint\fP +In simulation mode, the number of bogies on team B. +.TP 8 +.B \-fps +Display the current frame rate, polygon count, and CPU load. +.SH NOTES +On most Unix systems, this program must be installed as setuid root +in order to ping hosts. This is because root privileges are needed +to create an ICMP RAW socket. Privileges are disavowed shortly after +startup (just after connecting to the X server) so this is believed +to be safe: +.EX +chown root:root sonar +chmod u+s sonar +.EE +It is not necessary to make it setuid on MacOS systems, because on +MacOS, unprivileged programs can ping by using ICMP DGRAM sockets +instead of ICMP RAW. + +In ping-mode, the display is a logarithmic scale, calibrated so that the +three rings represent ping times of approximately 2.5, 70 and 2,000 +milliseconds respectively. + +This means that if any the hosts you are pinging take longer than 2 +seconds to respond, they won't show up; and if you are pinging several +hosts with very fast response times, they will all appear close to the +center of the screen (making their names hard to read.) +.SH BUGS +Does not support IPv6. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1), +.BR ping (8), +.BR ping6 (8) +.SH COPYRIGHT +Copyright \(co 2000-2012 by Jamie Zawinski +.RE +Copyright \(co 1998 by Stephen Martin. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. No representations are made about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +.SH AUTHORS +Stephen Martin , 3-nov-1998. + +Subnet support, etc. added by Jamie Zawinski, 17-Jul-2000. + +Rewritten using OpenGL instead of X11 by Jamie Zawinski, 12-Aug-2008. diff --git a/hacks/glx/sphere.c b/hacks/glx/sphere.c new file mode 100644 index 0000000..dee4541 --- /dev/null +++ b/hacks/glx/sphere.c @@ -0,0 +1,155 @@ +/* sphere, Copyright (c) 2002 Paul Bourke , + * Copyright (c) 2010-2014 Jamie Zawinski + * Utility function to create a unit sphere in GL. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * 8-Oct-98: dek Released initial version of "glplanet" + * 21-Mar-01: jwz@jwz.org Broke sphere routine out into its own file. + * 28-Feb-02: jwz@jwz.org New implementation from Paul Bourke: + * http://astronomy.swin.edu.au/~pbourke/opengl/sphere/ + * 21-Aug-10 jwz@jwz.org Converted to use glDrawArrays, for OpenGL ES. + */ + +#include +#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_COCOA +#elif defined(HAVE_ANDROID) +# include +#else /* real X11 */ +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "sphere.h" + +typedef struct { GLfloat x, y, z; } XYZ; + +static int +unit_sphere_1 (int stacks, int slices, int wire_p, int half_p) +{ + int polys = 0; + int i,j; + double theta1, theta2, theta3; + XYZ p, n; + XYZ la = { 0, -1, 0 }, lb = { 0, -1, 0 }; + XYZ c = {0, 0, 0}; /* center */ + double r = 1.0; /* radius */ + int stacks2 = stacks * 2; + int end = (half_p ? stacks/2 : stacks); + + int mode = (wire_p ? GL_LINE_STRIP : GL_TRIANGLE_STRIP); + + int arraysize, out; + struct { XYZ p; XYZ n; GLfloat s, t; } *array; + + if (r < 0) + r = -r; + if (slices < 0) + slices = -slices; + + arraysize = (stacks+1) * (slices+1) * (wire_p ? 4 : 2); + array = (void *) calloc (arraysize, sizeof(*array)); + if (! array) abort(); + out = 0; + + if (slices < 4 || stacks < 2 || r <= 0) + { + mode = GL_POINTS; + array[out++].p = c; + goto END; + } + + for (j = 0; j < end; j++) + { + theta1 = j * (M_PI+M_PI) / stacks2 - M_PI_2; + theta2 = (j + 1) * (M_PI+M_PI) / stacks2 - M_PI_2; + + for (i = slices; i >= 0; i--) + { + theta3 = i * (M_PI+M_PI) / slices; + + if (wire_p) + { + array[out++].p = lb; /* vertex */ + array[out++].p = la; /* vertex */ + } + + n.x = cos (theta2) * cos(theta3); + n.y = sin (theta2); + n.z = cos (theta2) * sin(theta3); + p.x = c.x + r * n.x; + p.y = c.y + r * n.y; + p.z = c.z + r * n.z; + + array[out].p = p; /* vertex */ + array[out].n = n; /* normal */ + array[out].s = i / (GLfloat) slices; /* texture */ + array[out].t = 2*(j+1) / (GLfloat) stacks2; + out++; + + if (wire_p) la = p; + + n.x = cos(theta1) * cos(theta3); + n.y = sin(theta1); + n.z = cos(theta1) * sin(theta3); + p.x = c.x + r * n.x; + p.y = c.y + r * n.y; + p.z = c.z + r * n.z; + + array[out].p = p; /* vertex */ + array[out].n = n; /* normal */ + array[out].s = i / (GLfloat) slices; /* texture */ + array[out].t = 2*j / (GLfloat) stacks2; + out++; + + if (out >= arraysize) abort(); + + if (wire_p) lb = p; + polys++; + } + } + + END: + + glEnableClientState (GL_VERTEX_ARRAY); + glEnableClientState (GL_NORMAL_ARRAY); + glEnableClientState (GL_TEXTURE_COORD_ARRAY); + + glVertexPointer (3, GL_FLOAT, sizeof(*array), &array[0].p); + glNormalPointer ( GL_FLOAT, sizeof(*array), &array[0].n); + glTexCoordPointer (2, GL_FLOAT, sizeof(*array), &array[0].s); + + glDrawArrays (mode, 0, out); + + free (array); + + return polys; +} + + +int +unit_sphere (int stacks, int slices, int wire_p) +{ + return unit_sphere_1 (stacks, slices, wire_p, 0); +} + +int +unit_dome (int stacks, int slices, int wire_p) +{ + return unit_sphere_1 (stacks, slices, wire_p, 1); +} diff --git a/hacks/glx/sphere.h b/hacks/glx/sphere.h new file mode 100644 index 0000000..9852377 --- /dev/null +++ b/hacks/glx/sphere.h @@ -0,0 +1,24 @@ +/* sphere, Copyright (c) 2001-2014 Jamie Zawinski + * Utility function to create a unit sphere in GL. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __SPHERE_H__ +#define __SPHERE_H__ + +/* Creates a diameter 1 sphere at 0, 0, 0. + stacks = number of north/south divisions (latitude) + slices = number of clockwise/counterclockwise divisions (longitude) + Returns number of polygons used. + */ +extern int unit_sphere (int stacks, int slices, int wire_p); +extern int unit_dome (int stacks, int slices, int wire_p); + +#endif /* __SPHERE_H__ */ diff --git a/hacks/glx/spheremonics.c b/hacks/glx/spheremonics.c new file mode 100644 index 0000000..9cefbf3 --- /dev/null +++ b/hacks/glx/spheremonics.c @@ -0,0 +1,882 @@ +/* xscreensaver, Copyright (c) 2002-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Algorithm by Paul Bourke + * http://astronomy.swin.edu.au/~pbourke/geometry/sphericalh/ + * Screensaver veneer and parameter selection by jwz. + * + * Paul says: + * + * These closed objects are commonly called spherical harmonics, + * although they are only remotely related to the mathematical + * definition found in the solution to certain wave functions, most + * notable the eigenfunctions of angular momentum operators. + * + * The formula is quite simple: the form used here is based upon + * spherical (polar) coordinates (radius, theta, phi). + * + * r = sin(m0 phi) ^ m1 + + * cos(m2 phi) ^ m3 + + * sin(m4 theta) ^ m5 + + * cos(m6 theta) ^ m7 + * + * Where phi ranges from 0 to pi (lines of latitude), and theta ranges + * from 0 to 2 pi (lines of longitude), and r is the radius. The + * parameters m0, m1, m2, m3, m4, m5, m6, and m7 are all integers + * greater than or equal to 0. + * + * As the degree increases, the objects become increasingly "pointed" + * and a large number of polygons are required to represent the surface + * faithfully. + * + * jwz adds: + * + * The eight parameters live in the `cc->m' array. + * Each time we permute the image, we alter *one* of those eight parameters. + * Each time we alter a parameter, we move it in the same direction (either + * toward larger or smaller values) in the range [0, 3]. + * + * By altering only one parameter at a time, and only by small amounts, + * we tend to produce successive objects that are pretty similar to each + * other, so you can see a progression. + * + * It'd be nice if they were even closer together, so that it looked more + * like a morph, but, well, that's not how it works. + * + * There tends to be a dark stripe in the colormaps. I don't know why. + * Perhaps utils/colors.c is at fault? + * + * Note that this equation sometimes generates faces that are inside out: + * -parameters 01210111 + * To make this work, we need to render back-faces with two-sided lighting: + * figuring out how to correct the winding and normals on those inside out + * surfaces would be too hard. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + "*labelfont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" + +# define free_spheremonics 0 +# define release_spheremonics 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "texfont.h" +#include "normals.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_DURATION "100" +#define DEF_SPIN "XYZ" +#define DEF_WANDER "False" +#define DEF_RESOLUTION "64" +#define DEF_BBOX "False" +#define DEF_GRID "True" +#define DEF_SMOOTH "True" +#define DEF_PARMS "(default)" + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + GLuint dlist, dlist2; + GLfloat scale; + XYZ bbox[2]; + + int resolution; + int ncolors; + XColor *colors; + + int m[8]; + int dm[8]; + int m_max; + + int tracer; + int mesher; + int polys1, polys2; /* polygon counts */ + + texture_font_data *font_data; + + int change_tick; + int done_once; + +} spheremonics_configuration; + +static spheremonics_configuration *ccs = NULL; + +static char *do_spin; +static Bool do_wander; +static Bool do_bbox; +static Bool do_grid; +static int smooth_p; +static char *static_parms; +static int res; +static int duration; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-resolution", ".resolution", XrmoptionSepArg, 0 }, + { "-duration", ".duration", XrmoptionSepArg, 0 }, + { "-bbox", ".bbox", XrmoptionNoArg, "True" }, + { "+bbox", ".bbox", XrmoptionNoArg, "False" }, + { "-grid", ".grid", XrmoptionNoArg, "True" }, + { "+grid", ".grid", XrmoptionNoArg, "False" }, + {"-smooth", ".smooth", XrmoptionNoArg, "True" }, + {"+smooth", ".smooth", XrmoptionNoArg, "False" }, + { "-parameters", ".parameters", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&res, "resolution", "Resolution", DEF_RESOLUTION, t_Int}, + {&duration, "duration", "Duration", DEF_DURATION, t_Int}, + {&do_bbox, "bbox", "BBox", DEF_BBOX, t_Bool}, + {&do_grid, "grid", "Grid", DEF_GRID, t_Bool}, + {&smooth_p, "smooth", "Smooth", DEF_SMOOTH, t_Bool}, + {&static_parms, "parameters", "Parameters", DEF_PARMS, t_String}, +}; + +ENTRYPOINT ModeSpecOpt spheremonics_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_spheremonics (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } + +# endif + glClear(GL_COLOR_BUFFER_BIT); +} + + +static void +gl_init (ModeInfo *mi) +{ +/* spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; */ + int wire = MI_IS_WIREFRAME(mi); + + static const GLfloat pos[4] = {5.0, 5.0, 10.0, 1.0}; + + glEnable(GL_NORMALIZE); + + if (!wire) + { + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + + /* With objects that have proper winding and normals set up on all + their faces, one can cull back-faces; however, these equations + generate objects that are sometimes "inside out", and determining + whether a facet has been inverted like that is really hard. + So we render both front and back faces, at a probable performance + penalty on non-accelerated systems. + + When rendering back faces, we also need to do two-sided lighting, + or the fact that the normals are flipped gives us too-dark surfaces + on the inside-out surfaces. + + This isn't generally something you'd want, because you end up + with half the lighting dynamic range (kind of.) So if you had + a sphere with correctly pointing normals, and a single light + source, it would be illuminated from two sides. In this case, + though, it saves us from a difficult and time consuming + inside/outside test. And we don't really care about a precise + lighting effect. + */ + glDisable(GL_CULL_FACE); + glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, True); + } + + if (smooth_p) + { + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_BLEND); + } +} + + + +/* generate the object */ + +static XYZ +sphere_eval (double theta, double phi, int *m) +{ + double r = 0; + XYZ p; + + r += pow (sin(m[0] * phi), (double)m[1]); + r += pow (cos(m[2] * phi), (double)m[3]); + r += pow (sin(m[4] * theta),(double)m[5]); + r += pow (cos(m[6] * theta),(double)m[7]); + + p.x = r * sin(phi) * cos(theta); + p.y = r * cos(phi); + p.z = r * sin(phi) * sin(theta); + + return (p); +} + + +static void +do_color (int i, XColor *colors) +{ + GLfloat c[4]; + c[0] = colors[i].red / 65535.0; + c[1] = colors[i].green / 65535.0; + c[2] = colors[i].blue / 65535.0; + c[3] = 1.0; + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, c); + glColor3f (c[0], c[1], c[2]); +} + + +static void +draw_circle (ModeInfo *mi, Bool teeth_p) +{ + GLfloat th; + int tick = 0; + GLfloat x, y; + GLfloat step = (M_PI / 180); + + glBegin(GL_LINE_LOOP); + for (th = 0; th < M_PI*2; th += step*5) + { + GLfloat r1 = 0.5; + x = cos (th); + y = sin (th); + glVertex3f(x*r1, y*r1, 0); + } + glEnd(); + + if (!teeth_p) return; + + glBegin(GL_LINES); + for (th = 0; th < M_PI*2; th += step) + { + GLfloat r1 = 0.5; + GLfloat r2 = r1 - 0.01; + if (! (tick % 10)) + r2 -= 0.02; + else if (! (tick % 5)) + r2 -= 0.01; + tick++; + + x = cos (th); + y = sin (th); + glVertex3f(x*r1, y*r1, 0); + glVertex3f(x*r2, y*r2, 0); + } + glEnd(); +} + + +static void +draw_bounding_box (ModeInfo *mi) +{ + /* spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; */ + + static const GLfloat c1[4] = { 0.2, 0.2, 0.6, 1.0 }; + static const GLfloat c2[4] = { 1.0, 0.0, 0.0, 1.0 }; + int wire = MI_IS_WIREFRAME(mi); + + GLfloat x1,y1,z1,x2,y2,z2; + +# if 0 + x1 = cc->bbox[0].x; + y1 = cc->bbox[0].y; + z1 = cc->bbox[0].z; + x2 = cc->bbox[1].x; + y2 = cc->bbox[1].y; + z2 = cc->bbox[1].z; +# else + x1 = y1 = z1 = -0.5; + x2 = y2 = z2 = 0.5; +# endif + + if (do_bbox && !wire) + { + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, c1); + glFrontFace(GL_CCW); + glEnable(GL_CULL_FACE); + + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, 1, 0); + glVertex3f(x1, y1, z1); glVertex3f(x1, y1, z2); + glVertex3f(x2, y1, z2); glVertex3f(x2, y1, z1); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, -1, 0); + glVertex3f(x2, y2, z1); glVertex3f(x2, y2, z2); + glVertex3f(x1, y2, z2); glVertex3f(x1, y2, z1); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, 0, 1); + glVertex3f(x1, y1, z1); glVertex3f(x2, y1, z1); + glVertex3f(x2, y2, z1); glVertex3f(x1, y2, z1); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(0, 0, -1); + glVertex3f(x1, y2, z2); glVertex3f(x2, y2, z2); + glVertex3f(x2, y1, z2); glVertex3f(x1, y1, z2); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(1, 0, 0); + glVertex3f(x1, y2, z1); glVertex3f(x1, y2, z2); + glVertex3f(x1, y1, z2); glVertex3f(x1, y1, z1); + glEnd(); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(-1, 0, 0); + glVertex3f(x2, y1, z1); glVertex3f(x2, y1, z2); + glVertex3f(x2, y2, z2); glVertex3f(x2, y2, z1); + glEnd(); + glDisable(GL_CULL_FACE); + } + + if (do_grid) + { + glDisable (GL_LIGHTING); + glColor3f (c2[0], c2[1], c2[2]); + glPushMatrix(); + glBegin(GL_LINES); + glVertex3f(0, -0.66, 0); + glVertex3f(0, 0.66, 0); + glEnd(); + draw_circle (mi, True); + glRotatef(90, 1, 0, 0); + draw_circle (mi, True); + glRotatef(90, 0, 1, 0); + draw_circle (mi, True); + glPopMatrix(); + } + else + { +#if 0 + glBegin(GL_LINES); + if (x1 > 0) x1 = 0; if (x2 < 0) x2 = 0; + if (y1 > 0) y1 = 0; if (y2 < 0) y2 = 0; + if (z1 > 0) z1 = 0; if (z2 < 0) z2 = 0; + glVertex3f(x1, 0, 0); glVertex3f(x2, 0, 0); + glVertex3f(0 , y1, 0); glVertex3f(0, y2, 0); + glVertex3f(0, 0, z1); glVertex3f(0, 0, z2); + glEnd(); +#endif + } +} + + +static void +do_tracer (ModeInfo *mi) +{ + spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; + + if (cc->tracer == -1 && + cc->mesher == -1 && + !(random() % (duration * 4))) + { + if (random() & 1) + cc->tracer = ((random() & 1) ? 0 : 180); + else + cc->mesher = ((random() % ((duration / 3) + 1)) + + (random() % ((duration / 3) + 1))); + } + + if (cc->tracer >= 0) + { + int d = (90 - cc->tracer); + GLfloat th = d * (M_PI / 180); + GLfloat x = cos (th); + GLfloat y = sin (th); + GLfloat s = 1.5 / cc->scale; + + if (s > 0.001) + { + static const GLfloat c[4] = { 0.6, 0.5, 1.0, 1.0 }; + + glDisable (GL_LIGHTING); + + glPushMatrix(); + glRotatef (90, 1, 0, 0); + glTranslatef (0, 0, y*s/2); + s *= x; + glScalef(s, s, s); + glColor3f (c[0], c[1], c[2]); + draw_circle (mi, False); + glPopMatrix(); + + if (! MI_IS_WIREFRAME(mi)) glEnable (GL_LIGHTING); + } + + cc->tracer += 5; + if (cc->tracer == 180 || cc->tracer == 360) + cc->tracer = -1; + } +} + + +static int +unit_spheremonics (ModeInfo *mi, + int resolution, Bool wire, int *m, XColor *colors) +{ + spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; + int polys = 0; + int i, j; + double du, dv; + XYZ q[4]; + XYZ n[4]; + int res = (wire == 2 + ? resolution / 2 + : resolution); + + cc->bbox[0].x = cc->bbox[0].y = cc->bbox[0].z = 0; + cc->bbox[1].x = cc->bbox[1].y = cc->bbox[1].z = 0; + + du = (M_PI+M_PI) / (double)res; /* Theta */ + dv = M_PI / (double)res; /* Phi */ + + if (wire) + glColor3f (1, 1, 1); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + + for (i = 0; i < res; i++) { + double u = i * du; + for (j = 0; j < res; j++) { + double v = j * dv; + q[0] = sphere_eval (u, v, m); + n[0] = calc_normal(q[0], + sphere_eval (u+du/10, v, m), + sphere_eval (u, v+dv/10, m)); + glNormal3f(n[0].x,n[0].y,n[0].z); + if (!wire) do_color (i, colors); + glVertex3f(q[0].x,q[0].y,q[0].z); + + q[1] = sphere_eval (u+du, v, m); + n[1] = calc_normal(q[1], + sphere_eval (u+du+du/10, v, m), + sphere_eval (u+du, v+dv/10, m)); + glNormal3f(n[1].x,n[1].y,n[1].z); + if (!wire) do_color ((i+1)%res, colors); + glVertex3f(q[1].x,q[1].y,q[1].z); + + q[2] = sphere_eval (u+du, v+dv, m); + n[2] = calc_normal(q[2], + sphere_eval (u+du+du/10, v+dv, m), + sphere_eval (u+du, v+dv+dv/10, m)); + glNormal3f(n[2].x,n[2].y,n[2].z); + if (!wire) do_color ((i+1)%res, colors); + glVertex3f(q[2].x,q[2].y,q[2].z); + + q[3] = sphere_eval (u,v+dv, m); + n[3] = calc_normal(q[3], + sphere_eval (u+du/10, v+dv, m), + sphere_eval (u, v+dv+dv/10, m)); + glNormal3f(n[3].x,n[3].y,n[3].z); + if (!wire) do_color (i, colors); + glVertex3f(q[3].x,q[3].y,q[3].z); + + polys++; + +# define CHECK_BBOX(N) \ + if (q[(N)].x < cc->bbox[0].x) cc->bbox[0].x = q[(N)].x; \ + if (q[(N)].y < cc->bbox[0].y) cc->bbox[0].y = q[(N)].y; \ + if (q[(N)].z < cc->bbox[0].z) cc->bbox[0].z = q[(N)].z; \ + if (q[(N)].x > cc->bbox[1].x) cc->bbox[1].x = q[(N)].x; \ + if (q[(N)].y > cc->bbox[1].y) cc->bbox[1].y = q[(N)].y; \ + if (q[(N)].z > cc->bbox[1].z) cc->bbox[1].z = q[(N)].z + + CHECK_BBOX(0); + CHECK_BBOX(1); + CHECK_BBOX(2); + CHECK_BBOX(3); +# undef CHECK_BBOX + } + } + glEnd(); + + { + GLfloat w = cc->bbox[1].x - cc->bbox[0].x; + GLfloat h = cc->bbox[1].y - cc->bbox[0].y; + GLfloat d = cc->bbox[1].z - cc->bbox[0].z; + GLfloat wh = (w > h ? w : h); + GLfloat hd = (h > d ? h : d); + GLfloat scale = (wh > hd ? wh : hd); + + cc->scale = 1/scale; + + if (wire < 2 && (do_bbox || do_grid)) + { + GLfloat s = scale * 1.5; + glPushMatrix(); + glScalef(s, s, s); + draw_bounding_box (mi); + glPopMatrix(); + } + } + return polys; +} + + +static void +init_colors (ModeInfo *mi) +{ + spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; + int i; + cc->ncolors = cc->resolution; + cc->colors = (XColor *) calloc(cc->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + cc->colors, &cc->ncolors, + False, 0, False); + + /* brighter colors, please... */ + for (i = 0; i < cc->ncolors; i++) + { + cc->colors[i].red = (cc->colors[i].red / 2) + 32767; + cc->colors[i].green = (cc->colors[i].green / 2) + 32767; + cc->colors[i].blue = (cc->colors[i].blue / 2) + 32767; + } +} + + +/* Pick one of the parameters to the function and tweak it up or down. + */ +static void +tweak_parameters (ModeInfo *mi) +{ + spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; + + /* If the -parameters command line option was specified, just use that + all the time. + */ + if (static_parms && + *static_parms && + !!strcasecmp (static_parms, "(default)")) + { + unsigned long n; + char dummy; + if (8 == sscanf (static_parms, "%d %d %d %d %d %d %d %d %c", + &cc->m[0], &cc->m[1], &cc->m[2], &cc->m[3], + &cc->m[4], &cc->m[5], &cc->m[6], &cc->m[7], + &dummy)) + return; + else if (strlen (static_parms) == 8 && + 1 == sscanf (static_parms, "%lu %c", &n, &dummy)) + { + const char *s = static_parms; + int i = 0; + while (*s) + cc->m[i++] = (*s++)-'0'; + return; + } + fprintf (stderr, + "%s: -parameters must be a string of 8 ints (not \"%s\")\n", + progname, static_parms); + exit (1); + } + + static_parms = 0; + + +# define SHIFT(N) do { \ + int n = (N); \ + cc->m[n] += cc->dm[n]; \ + if (cc->m[n] <= 0) \ + cc->m[n] = 0, cc->dm[n] = -cc->dm[n]; \ + else if (cc->m[n] >= cc->m_max) \ + cc->m[n] = cc->m_max, cc->dm[n] = -cc->dm[n]; \ + } while(0) + +/* else if (cc->m[n] >= cc->m_max/2 && (! (random() % 3))) \ + cc->m[n] = cc->m_max/2, cc->dm[n] = -cc->dm[n]; \ +*/ + + switch(random() % 8) + { + case 0: SHIFT(0); break; + case 1: SHIFT(1); break; + case 2: SHIFT(2); break; + case 3: SHIFT(3); break; + case 4: SHIFT(4); break; + case 5: SHIFT(5); break; + case 6: SHIFT(6); break; + case 7: SHIFT(7); break; + default: abort(); break; + } +# undef SHIFT + +#if 0 + printf ("%s: state: %d %d %d %d %d %d %d %d\n", + progname, + cc->m[0], cc->m[1], cc->m[2], cc->m[3], + cc->m[4], cc->m[5], cc->m[6], cc->m[7]); +#endif + +} + + +static void +generate_spheremonics (ModeInfo *mi) +{ + spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + + tweak_parameters (mi); + + if (!cc->done_once || (0 == (random() % 20))) + { + init_colors (mi); + cc->done_once = True; + } + + { + glNewList(cc->dlist, GL_COMPILE); + cc->polys1 = unit_spheremonics (mi, cc->resolution, wire,cc->m,cc->colors); + glEndList(); + + glNewList(cc->dlist2, GL_COMPILE); + glPushMatrix(); + glScalef (1.05, 1.05, 1.05); + cc->polys2 = unit_spheremonics (mi, cc->resolution, 2, cc->m, cc->colors); + glPopMatrix(); + glEndList(); + } +} + + + + +ENTRYPOINT void +init_spheremonics (ModeInfo *mi) +{ + spheremonics_configuration *cc; + + MI_INIT (mi, ccs); + + cc = &ccs[MI_SCREEN(mi)]; + + if ((cc->glx_context = init_GL(mi)) != NULL) { + gl_init(mi); + reshape_spheremonics (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + { + Bool spinx=False, spiny=False, spinz=False; + double spin_speed = 1.0; + double wander_speed = 0.03; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') spinx = True; + else if (*s == 'y' || *s == 'Y') spiny = True; + else if (*s == 'z' || *s == 'Z') spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + cc->rot = make_rotator (spinx ? spin_speed : 0, + spinz ? spin_speed : 0, + spiny ? spin_speed : 0, + 1.0, + do_wander ? wander_speed : 0, + (spinx && spiny && spinz)); + cc->trackball = gltrackball_init (True); + } + + cc->tracer = -1; + cc->mesher = -1; + + cc->resolution = res; + + cc->font_data = load_texture_font (mi->dpy, "labelfont"); + + cc->dlist = glGenLists(1); + cc->dlist2 = glGenLists(1); + + cc->m_max = 4; /* 9? */ + { + unsigned int i; + for (i = 0; i < countof(cc->dm); i++) + cc->dm[i] = 1; /* going up! */ + + /* Generate a few more times so we don't always start off with a sphere */ + for (i = 0; i < 5; i++) + tweak_parameters (mi); + } + + generate_spheremonics(mi); +} + + +ENTRYPOINT Bool +spheremonics_handle_event (ModeInfo *mi, XEvent *event) +{ + spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, cc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &cc->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + cc->change_tick = duration; + return True; + } + + return False; +} + + +ENTRYPOINT void +draw_spheremonics (ModeInfo *mi) +{ + spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!cc->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context)); + + gl_init(mi); + + glShadeModel(GL_SMOOTH); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef(1.1, 1.1, 1.1); + + { + double x, y, z; + get_position (cc->rot, &x, &y, &z, !cc->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 6, + (z - 0.5) * 8); + + gltrackball_rotate (cc->trackball); + + get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + glScalef(7,7,7); + + mi->polygon_count = 0; + + glScalef (cc->scale, cc->scale, cc->scale); + glCallList (cc->dlist); + mi->polygon_count += cc->polys1; + + if (cc->mesher >= 0 /* || cc->button_down_p */) + { + glDisable (GL_LIGHTING); + glCallList (cc->dlist2); + mi->polygon_count += cc->polys2; + if (cc->mesher >= 0) + cc->mesher--; + } + do_tracer(mi); + + + if (cc->button_down_p) + { + char buf[200]; + sprintf (buf, + ((cc->m[0]<10 && cc->m[1]<10 && cc->m[2]<10 && cc->m[3]<10 && + cc->m[4]<10 && cc->m[5]<10 && cc->m[6]<10 && cc->m[7]<10) + ? "%d%d%d%d%d%d%d%d" + : "%d %d %d %d %d %d %d %d"), + cc->m[0], cc->m[1], cc->m[2], cc->m[3], + cc->m[4], cc->m[5], cc->m[6], cc->m[7]); + + glColor3f(1.0, 1.0, 0.0); + print_texture_label (mi->dpy, cc->font_data, + mi->xgwa.width, mi->xgwa.height, + 1, buf); + } + + if (!static_parms) + { + if (cc->change_tick++ >= duration && !cc->button_down_p) + { + generate_spheremonics(mi); + cc->change_tick = 0; + cc->mesher = -1; /* turn off the mesh when switching objects */ + } + } + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Spheremonics", spheremonics) + +#endif /* USE_GL */ diff --git a/hacks/glx/spheremonics.man b/hacks/glx/spheremonics.man new file mode 100644 index 0000000..5e6f437 --- /dev/null +++ b/hacks/glx/spheremonics.man @@ -0,0 +1,92 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +spheremonics - 3d spherical harmonic shapes. +.SH SYNOPSIS +.B spheremonics +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-duration \fInumber\fP] +[\-resolution \fInumber\fP] +[\-wander] +[\-no-spin] +[\-spin \fI[XYZ]\fP] +[\-wireframe] +[\-no-smooth] +[\-no-grid] +[\-bbox] +[\-fps] +.SH DESCRIPTION +These closed objects are commonly called spherical harmonics, although they +are only remotely related to the mathematical definition found in the +solution to certain wave functions, most notable the eigenfunctions of +angular momentum operators. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-duration \fInumber\fP +Duration. 5 - 1000. Default: 100. +.TP 8 +.B \-resolution \fInumber\fP +Resolution. 5 - 100. Default: 64. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin \fI[XYZ]\fP +Around which axes should the object spin? +.TP 8 +.B \-no-spin +Don't spin. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-smooth | \-no-smooth +Smoothed Lines. Boolean. +.TP 8 +.B \-grid | \-no-grid +Draw Grid. Boolean. +.TP 8 +.B \-bbox | \-no-bbox +Draw Bounding Box. Boolean. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Paul Bourke and Jamie Zawinski. Permission to +use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. No representations are made about the suitability of +this software for any purpose. It is provided "as is" without express +or implied warranty. +.SH AUTHOR +Paul Bourke and Jamie Zawinski. diff --git a/hacks/glx/splitflap.c b/hacks/glx/splitflap.c new file mode 100644 index 0000000..b84a359 --- /dev/null +++ b/hacks/glx/splitflap.c @@ -0,0 +1,1408 @@ +/* splitflap, Copyright (c) 2015-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Draws a split-flap text display. + */ + +#define FLAP_FONT "-*-helvetica-bold-r-normal-*-*-1440-*-*-*-*-*-*" + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*flapFont: " FLAP_FONT "\n" \ + "*frameColor: #444444" "\n" \ + "*caseColor: #666666" "\n" \ + "*discColor: #888888" "\n" \ + "*finColor: #222222" "\n" \ + "*textColor: #FFFF00" "\n" \ + "*multiSample: True \n" \ + "*program: xscreensaver-text\n" \ + "*usePty: False\n" + +# define release_splitflap 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define DEF_SPEED "1.0" +#define DEF_WIDTH "22" +#define DEF_HEIGHT "8" +#define DEF_SPIN "XYZ" +#define DEF_WANDER "True" +#define DEF_FACE_FRONT "True" +#define DEF_MODE "Text" + +#include "xlockmore.h" + +#include + +#ifdef USE_GL /* whole file */ + +#include "gltrackball.h" +#include "rotator.h" +#include "ximage-loader.h" +#include "utf8wc.h" +#include "textclient.h" +#include "texfont.h" +#include "gllist.h" + +extern const struct gllist + *splitflap_obj_box_quarter_frame, *splitflap_obj_disc_quarter, + *splitflap_obj_fin_edge_half, *splitflap_obj_fin_face_half; +static struct gllist *splitflap_obj_outer_frame = 0; + +static const struct gllist * const *all_objs[] = { + &splitflap_obj_box_quarter_frame, &splitflap_obj_disc_quarter, + &splitflap_obj_fin_edge_half, &splitflap_obj_fin_face_half, + (const struct gllist * const *) &splitflap_obj_outer_frame +}; + +#define SPLITFLAP_QUARTER_FRAME 0 +#define SPLITFLAP_DISC_QUARTER 1 +#define SPLITFLAP_FIN_EDGE_HALF 2 +#define SPLITFLAP_FIN_FACE_HALF 3 +#define SPLITFLAP_OUTER_FRAME 4 + +#define COLON_WIDTH 0.5 + +typedef struct { + int target_index; /* desired character */ + double current_index; /* currently displayed, fractional */ + GLfloat sticky; /* bottom fin doesn't fall all the way */ + int missing; /* which fin has snapped off, or -1 */ + const char * const *spool; /* chars available for display */ + int spool_size; /* how many fins on the spool */ +} flapper; + +typedef struct { + const char *text; + GLuint texid; + XCharStruct metrics; + int tex_width, tex_height; +} texinfo; + +typedef struct { + GLXContext *glx_context; + rotator *rot, *rot2; + trackball_state *trackball; + Bool button_down_p; + Bool spinx, spiny, spinz; + + texinfo *texinfo; + int texinfo_size; + + GLuint *dlists; + GLfloat component_colors[countof(all_objs)][4]; + GLfloat text_color[4]; + + flapper *flappers; /* grid_width * grid_height */ + + texture_font_data *font_data; + int ascent, descent; + + text_data *tc; + unsigned char text[5]; + int linger; + int clock_p; + Bool first_time_p; + +} splitflap_configuration; + +static const char * const digit_s1_spool[] = { " ", "1" }; +static const char * const digit_01_spool[] = { "0", "1" }; +static const char * const ap_spool[] = { "A", "P" }; +static const char * const m_spool[] = { "M" }; +static const char * const digit_05_spool[] = { "0", "1", "2", "3", "4", "5" }; +static const char * const digit_spool[] = { + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" +}; + +static const char * const ascii_spool[] = { + " ", "!", "\"", "#", "$", "%", "&", "'", + "(", ")", "*", "+", ",", "-", ".", "/", + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", + ":", ";", "<", "=", ">", "?", "@", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", + "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", + "[", "\\", "]", "^", "_", "`", "{", "|", "}", "~", +}; + + +/* If we include these, the flappers just take too long. It's boring. */ +static const char * const latin1_spool[] = { + " ", "!", "\"", "#", "$", "%", "&", "'", + "(", ")", "*", "+", ",", "-", ".", "/", + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", + ":", ";", "<", "=", ">", "?", "@", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", + "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", + "[", "\\", "]", "^", "_", "`", "{", "|", "}", "~", + + "\302\241", "\302\242", "\302\243", "\302\245", + "\302\247", "\302\251", "\302\265", "\302\266", + + "\303\200", "\303\201", "\303\202", "\303\203", + "\303\204", "\303\205", "\303\206", "\303\207", + "\303\210", "\303\211", "\303\212", "\303\213", + "\303\214", "\303\215", "\303\216", "\303\217", + "\303\220", "\303\221", "\303\222", "\303\223", + "\303\224", "\303\225", "\303\226", "\303\230", + "\303\231", "\303\232", "\303\233", "\303\234", + "\303\235", "\303\236", "\303\237", "\303\267", +}; + + +static splitflap_configuration *bps = NULL; + +static GLfloat speed; +static int grid_width, grid_height; +static char *do_spin; +static Bool do_wander; +static Bool face_front_p; +static char *mode_str; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-width", ".width", XrmoptionSepArg, 0 }, + { "-height", ".height", XrmoptionSepArg, 0 }, + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-front", ".faceFront", XrmoptionNoArg, "True" }, + { "+front", ".faceFront", XrmoptionNoArg, "False" }, + { "-mode", ".mode", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&grid_width, "width", "Width", DEF_WIDTH, t_Int}, + {&grid_height, "height", "Height", DEF_HEIGHT, t_Int}, + {&do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&face_front_p, "faceFront", "FaceFront", DEF_FACE_FRONT, t_Bool}, + {&mode_str, "mode", "Mode", DEF_MODE, t_String}, +}; + +ENTRYPOINT ModeSpecOpt splitflap_opts = { + countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_splitflap (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (40.0, 1/h, 0.5, 25); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0, 0, 3, /* 10x lower than traditional, for better depth rez */ + 0, 0, 0, + 0, 1, 0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (h, h, h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +splitflap_handle_event (ModeInfo *mi, XEvent *event) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + + +static void +init_textures (ModeInfo *mi) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + const char * const *spool = latin1_spool; + int max = countof(latin1_spool); + + bp->texinfo = (texinfo *) calloc (max+1, sizeof(*bp->texinfo)); + texture_string_metrics (bp->font_data, "", 0, &bp->ascent, &bp->descent); + + for (i = 0; i < max; i++) + { + texinfo *ti = &bp->texinfo[i]; + glGenTextures (1, &ti->texid); + glBindTexture (GL_TEXTURE_2D, ti->texid); + + ti->text = spool[i]; + + /* fprintf(stderr, "%d \\%03o\\%03o %s\n", i, + (unsigned char) ti->text[0], + (unsigned char) ti->text[1], + ti->text); */ + + string_to_texture (bp->font_data, ti->text, &ti->metrics, + &ti->tex_width, &ti->tex_height); + } + bp->texinfo_size = i; + + glBindTexture (GL_TEXTURE_2D, 0); +} + + +static void +parse_color (ModeInfo *mi, char *key, GLfloat color[4]) +{ + XColor xcolor; + char *string = get_string_resource (mi->dpy, key, "Color"); + if (!XParseColor (mi->dpy, mi->xgwa.colormap, string, &xcolor)) + { + fprintf (stderr, "%s: unparsable color in %s: %s\n", progname, + key, string); + exit (1); + } + + color[0] = xcolor.red / 65536.0; + color[1] = xcolor.green / 65536.0; + color[2] = xcolor.blue / 65536.0; + color[3] = 1; +} + + +static int draw_outer_frame (ModeInfo *mi); + +ENTRYPOINT void +init_splitflap (ModeInfo *mi) +{ + splitflap_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + bp->glx_context = init_GL(mi); + reshape_splitflap (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + bp->first_time_p = True; + + if (!mode_str || !*mode_str || !strcasecmp(mode_str, "text")) + { + bp->clock_p = 0; + } + else if (!strcasecmp (mode_str, "clock") || + !strcasecmp (mode_str, "clock12")) + { + bp->clock_p = 12; + grid_width = 8; + grid_height = 1; + } + else if (!strcasecmp (mode_str, "clock24")) + { + bp->clock_p = 24; + grid_width = 6; + grid_height = 1; + } + else + { + fprintf (stderr, + "%s: `mode' must be text, clock12 or clock24: not `%s'\n", + progname, mode_str); + exit (1); + } + + if (! bp->clock_p) + { + bp->tc = textclient_open (MI_DISPLAY (mi)); + bp->text[0] = 0; + + if (grid_width > 10) + textclient_reshape (bp->tc, + grid_width, grid_height, + grid_width, grid_height, + 0); + } + + if (bp->clock_p) + speed /= 4; + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (!wire) + { + GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0}; +/* GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};*/ + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + + { + double spin_speed = 0.5; + double wander_speed = 0.005; + double tilt_speed = 0.001; + double spin_accel = 0.5; + + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') bp->spinx = True; + else if (*s == 'y' || *s == 'Y') bp->spiny = True; + else if (*s == 'z' || *s == 'Z') bp->spinz = True; + else if (*s == '0') ; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + + bp->rot = make_rotator (bp->spinx ? spin_speed : 0, + bp->spiny ? spin_speed : 0, + bp->spinz ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False); + bp->rot2 = (face_front_p + ? make_rotator (0, 0, 0, 0, tilt_speed, True) + : 0); + bp->trackball = gltrackball_init (False); + } + + bp->dlists = (GLuint *) calloc (countof(all_objs)+1, sizeof(GLuint)); + for (i = 0; i < countof(all_objs); i++) + bp->dlists[i] = glGenLists (1); + + parse_color (mi, "textColor", bp->text_color); + for (i = 0; i < countof(all_objs); i++) + { + const struct gllist *gll = *all_objs[i]; + char *key = 0; + GLfloat spec[4] = {0.4, 0.4, 0.4, 1.0}; + GLfloat shiny = 80; /* 0-128 */ + + glNewList (bp->dlists[i], GL_COMPILE); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glMatrixMode(GL_MODELVIEW); + + glRotatef (-90, 1, 0, 0); + + glBindTexture (GL_TEXTURE_2D, 0); + + switch (i) { + case SPLITFLAP_QUARTER_FRAME: + key = "frameColor"; + break; + case SPLITFLAP_OUTER_FRAME: + key = "caseColor"; + break; + case SPLITFLAP_DISC_QUARTER: + key = (wire ? "frameColor" : "discColor"); + break; + case SPLITFLAP_FIN_EDGE_HALF: + case SPLITFLAP_FIN_FACE_HALF: + key = "finColor"; + break; + default: + abort(); + } + + parse_color (mi, key, bp->component_colors[i]); + + if (wire && i == SPLITFLAP_FIN_EDGE_HALF) + bp->component_colors[i][0] = + bp->component_colors[i][1] = + bp->component_colors[i][2] = 0.7; + + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + + switch (i) { + case SPLITFLAP_OUTER_FRAME: + if (! splitflap_obj_outer_frame) + splitflap_obj_outer_frame = + (struct gllist *) calloc (1, sizeof(*splitflap_obj_outer_frame)); + splitflap_obj_outer_frame->points = draw_outer_frame(mi); + break; + default: + renderList (gll, wire); + break; + } + + glMatrixMode(GL_TEXTURE); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + + glEndList (); + } + + if (grid_width < 1) grid_width = 1; + if (grid_height < 1) grid_height = 1; + bp->flappers = (flapper *) calloc (grid_width * grid_height, + sizeof (flapper)); + + for (i = 0; i < grid_width * grid_height; i++) + { + flapper *f = &bp->flappers[i]; + + if (!bp->clock_p) + { + f->spool = ascii_spool; + f->spool_size = countof (ascii_spool); + } + else + { + switch (i) { + case 0: + if (bp->clock_p == 12) + { + f->spool = digit_s1_spool; + f->spool_size = countof (digit_s1_spool); + } + else + { + f->spool = digit_01_spool; + f->spool_size = countof (digit_01_spool); + } + break; + case 1: case 3: case 5: + f->spool = digit_spool; + f->spool_size = countof (digit_spool); + break; + case 2: case 4: + f->spool = digit_05_spool; + f->spool_size = countof (digit_05_spool); + break; + case 6: + f->spool = ap_spool; + f->spool_size = countof (ap_spool); + break; + case 7: + f->spool = m_spool; + f->spool_size = countof (m_spool); + break; + default: + abort(); + } + } + + f->target_index = random() % f->spool_size; + /* f->target_index = 0; */ + f->current_index = f->target_index; + f->missing = (((random() % 10) == 0) + ? (random() % f->spool_size) + : -1); + } + + bp->font_data = load_texture_font (mi->dpy, "flapFont"); + init_textures (mi); + + reshape_splitflap (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); +} + + +static int +draw_component (ModeInfo *mi, int i) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, + bp->component_colors[i]); + glCallList (bp->dlists[i]); + return (*all_objs[i])->points / 3; +} + + +static int +draw_frame_quarter (ModeInfo *mi, flapper *f) +{ + int count = 0; + glPushMatrix(); + count += draw_component (mi, SPLITFLAP_QUARTER_FRAME); + glPopMatrix(); + return count; +} + +static int +draw_disc_quarter (ModeInfo *mi, flapper *f) +{ + int count = 0; + glPushMatrix(); + count += draw_component (mi, SPLITFLAP_DISC_QUARTER); + glPopMatrix(); + return count; +} + +static int +draw_fin_edge_half (ModeInfo *mi, flapper *f) +{ + int count = 0; + glPushMatrix(); + count += draw_component (mi, SPLITFLAP_FIN_EDGE_HALF); + glPopMatrix(); + return count; +} + +static int +draw_fin_face_half (ModeInfo *mi, flapper *f) +{ + int count = 0; + if (MI_IS_WIREFRAME(mi)) return 0; + glPushMatrix(); + count += draw_component (mi, SPLITFLAP_FIN_FACE_HALF); + glPopMatrix(); + return count; +} + + +static int +draw_frame (ModeInfo *mi, flapper *f) +{ + int count = 0; + + glPushMatrix(); + + glFrontFace (GL_CCW); + count += draw_frame_quarter (mi, f); + count += draw_disc_quarter (mi, f); + + glScalef (-1, 1, 1); + glFrontFace (GL_CW); + count += draw_frame_quarter (mi, f); + count += draw_disc_quarter (mi, f); + + glScalef ( 1, -1, 1); + glFrontFace (GL_CCW); + count += draw_frame_quarter (mi, f); + count += draw_disc_quarter (mi, f); + + glScalef (-1, 1, 1); + glFrontFace (GL_CW); + count += draw_frame_quarter (mi, f); + count += draw_disc_quarter (mi, f); + + glPopMatrix(); + return count; +} + + +static void +draw_fin_text_quad (ModeInfo *mi, flapper *f, int index, Bool top_p) +{ + int wire = MI_IS_WIREFRAME(mi); + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + + /* 15 / is weird + 27 ; descends too far + 32 @ is too wide + 59 [ descends too far + 79 A^ is taller than the font + 89 I` is weird + */ + + GLfloat z = 0.035; /* Lifted off the surface by this distance */ + GLfloat bot = 0.013; /* Distance away from the mid gutter */ + GLfloat scale = 1.8; /* Scale to fill the panel */ + + int lh = bp->ascent + bp->descent; + texinfo *ti; + GLfloat qx0, qy0, qx1, qy1; + GLfloat tx0, ty0, tx1, ty1; + XCharStruct overall; + int tex_width, tex_height; + int i; + + for (i = 0; i < bp->texinfo_size; i++) + { + ti = &bp->texinfo[i]; + if (!strcmp (f->spool[index], ti->text)) + break; + } + if (i >= bp->texinfo_size) abort(); + + overall = ti->metrics; + tex_width = ti->tex_width; + tex_height = ti->tex_height; + + if (bp->ascent < overall.ascent) + /* WTF! Á has a higher ascent than the font itself! + Scale it down so that it doesn't overlap the fin. */ + scale *= bp->ascent / (GLfloat) overall.ascent * 0.98; + + glPushMatrix(); + + glNormal3f (0, 0, 1); + glFrontFace (top_p ? GL_CCW : GL_CW); + + if (! wire) + { + glBindTexture (GL_TEXTURE_2D, ti->texid); + enable_texture_string_parameters(); + } + + glTranslatef (0, 0, z); /* Move to just above the surface */ + glScalef (1.0 / lh, 1.0 / lh, 1); /* Scale to font pixel coordinates */ + glScalef (scale, scale, 1); /* Fill the panel with the font */ + + if (!top_p) + { + glRotatef (180, 0, 0, 1); + } + + /* Position the XCharStruct origin at 0,0 in the scene. */ + qx0 = -overall.lbearing; + qy0 = -overall.descent; + qx1 = overall.rbearing; + qy1 = overall.ascent; + + /* Center horizontally. */ + qx0 -= (overall.rbearing - overall.lbearing) / 2.0; + qx1 -= (overall.rbearing - overall.lbearing) / 2.0; + + + /* Move origin to below font descenders. */ + qy0 += bp->descent; + qy1 += bp->descent; + + /* Center vertically. */ + qy0 -= (bp->ascent + bp->descent) / 2.0; + qy1 -= (bp->ascent + bp->descent) / 2.0; + + /* Move the descenders down a bit, if there's room. + This means that weirdos like [ and $ might not be on the baseline. + #### This looks good with X11 fonts but bad with MacOS fonts. WTF? + */ +#ifndef HAVE_COCOA + { + GLfloat off = bp->descent / 3.0; + GLfloat max = bp->descent - off; + if (overall.descent > max) + off = max - overall.descent; + if (off < 0) + off = 0; + qy0 -= off; + qy1 -= off; + } +# endif /* !HAVE_COCOA */ + + /* Attach the texture to the quad. */ + tx0 = 0; + ty1 = 0; + tx1 = (overall.rbearing - overall.lbearing) / (GLfloat) tex_width; + ty0 = (overall.ascent + overall.descent) / (GLfloat) tex_height; + + /* Convert from font ascent/descent to character ascent/descent. */ + + /* Flip texture horizontally on bottom panel. */ + if (!top_p) + { + GLfloat s = tx0; + tx0 = tx1; + tx1 = s; + } + + + /* Cut the character in half, truncating just above the split line. */ + { + GLfloat oqy0 = qy0; + GLfloat oqy1 = qy1; + GLfloat r0, r1; + + bot *= lh * scale; + + if (top_p) + { + if (qy0 < bot) + qy0 = bot; + } + else + { + if (qy1 > -bot) + qy1 = -bot; + } + + r0 = (qy0 - oqy0) / (oqy1 - oqy0); + r1 = (qy1 - oqy1) / (oqy1 - oqy0); + ty0 -= r0 * (ty0 - ty1); + ty1 -= r1 * (ty0 - ty1); + } + + glColor4fv (bp->text_color); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glTexCoord2f (tx0, ty0); glVertex3f (qx0, qy0, 0); + glTexCoord2f (tx1, ty0); glVertex3f (qx1, qy0, 0); + glTexCoord2f (tx1, ty1); glVertex3f (qx1, qy1, 0); + glTexCoord2f (tx0, ty1); glVertex3f (qx0, qy1, 0); + glEnd(); + + glPopMatrix(); + + if (! wire) + { + glDisable (GL_BLEND); + glEnable (GL_LIGHTING); + glDisable (GL_TEXTURE_2D); + } +} + + +static int +draw_fin (ModeInfo *mi, flapper *f, int front_index, int back_index, + Bool text_p) +{ + int count = 0; + + glPushMatrix(); + + glFrontFace (GL_CCW); + + if (! text_p) + count += draw_fin_edge_half (mi, f); + + if (front_index >= 0) + { + if (text_p) + { + draw_fin_text_quad (mi, f, front_index, True); + count++; + } + else + count += draw_fin_face_half (mi, f); + } + + glScalef (-1, 1, 1); + if (! text_p) + { + glFrontFace (GL_CW); + count += draw_fin_edge_half (mi, f); + if (front_index >= 0) + count += draw_fin_face_half (mi, f); + } + + if (back_index >= 0) + { + glRotatef (180, 0, 1, 0); + if (text_p) + { + draw_fin_text_quad (mi, f, back_index, False); + count++; + } + else + { + count += draw_fin_face_half (mi, f); + glScalef (-1, 1, 1); + glFrontFace (GL_CCW); + count += draw_fin_face_half (mi, f); + } + } + + glPopMatrix(); + return count; +} + + +/* The case holding the grid of flappers. + */ +static int +draw_outer_frame (ModeInfo *mi) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + int count = 0; + GLfloat w = grid_width; + GLfloat h = grid_height; + GLfloat d = 1; + + if (bp->clock_p == 12) + w += COLON_WIDTH * 3; + else if (bp->clock_p == 24) + w += COLON_WIDTH * 2; + + w += 0.2; + h += 0.2; + + if (bp->clock_p) w += 0.25; + if (w > 3) w += 0.5; + if (h > 3) h += 0.5; + + if (MI_IS_WIREFRAME(mi)) + return 0; + + glFrontFace (GL_CCW); + glPushMatrix(); + glTranslatef (0, 1.03, 0); + + glBegin (GL_QUADS); + + glNormal3f ( 0, 1, 0); /* back */ + glVertex3f (-w, d, h); + glVertex3f ( w, d, h); + glVertex3f ( w, d, -h); + glVertex3f (-w, d, -h); + count++; + + glNormal3f ( 0, -1, 0); /* front */ + glVertex3f (-w, -d, -h); + glVertex3f ( w, -d, -h); + glVertex3f ( w, -d, h); + glVertex3f (-w, -d, h); + count++; + + glNormal3f ( 0, 0, 1); /* top */ + glVertex3f (-w, -d, h); + glVertex3f ( w, -d, h); + glVertex3f ( w, d, h); + glVertex3f (-w, d, h); + count++; + + glNormal3f ( 0, 0, -1); /* bottom */ + glVertex3f (-w, d, -h); + glVertex3f ( w, d, -h); + glVertex3f ( w, -d, -h); + glVertex3f (-w, -d, -h); + count++; + + glNormal3f ( 1, 0, 0); /* left */ + glVertex3f ( w, -d, h); + glVertex3f ( w, -d, -h); + glVertex3f ( w, d, -h); + glVertex3f ( w, d, h); + count++; + + glNormal3f (-1, 0, 0); /* right */ + glVertex3f (-w, -d, -h); + glVertex3f (-w, -d, h); + glVertex3f (-w, d, h); + glVertex3f (-w, d, -h); + count++; + + glEnd(); + glPopMatrix(); + + return count; +} + + +static void +tick_flapper (ModeInfo *mi, flapper *f) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + double prev = f->current_index; + Bool wrapped_p = False; + + if (bp->button_down_p) return; + if (f->current_index == f->target_index) + return; + + f->current_index += speed * 0.35; /* turn the crank */ + + while (f->current_index > f->spool_size) + { + f->current_index -= f->spool_size; + wrapped_p = True; + } + + if (f->current_index < 0) abort(); + + if ((prev < f->target_index || wrapped_p) && + f->current_index > f->target_index) /* just overshot */ + f->current_index = f->target_index; +} + + +#define MOD(M,N) (((M)+(N)) % (N)) /* Works with negatives */ + +static int +draw_flapper (ModeInfo *mi, flapper *f, Bool text_p) +{ + int prev_index = floor (f->current_index); + int next_index = MOD (prev_index+1, f->spool_size); + int count = 0; + GLfloat epsilon = 0.02; + GLfloat r = f->current_index - prev_index; + Bool moving_p = (r > 0 && r < 1); + GLfloat sticky = f->sticky; + + if (f->missing >= 0) + sticky = 0; + + if (f->missing >= 0 && + MOD (prev_index, f->spool_size) == f->missing) + { + moving_p = False; + sticky = 0; + } + + if (!moving_p) + next_index = prev_index; + + if (! text_p) + count += draw_frame (mi, f); + + /* Top flap, flat: top half of target char */ + if (!moving_p || !text_p || r > epsilon) + { + int p2 = next_index; + + if (p2 == f->missing) + p2 = MOD (p2+1, f->spool_size); + + count += draw_fin (mi, f, p2, -1, text_p); + } + + /* Bottom flap, flat: bottom half of prev char */ + if (!moving_p || !text_p || r < 1 - epsilon) + { + int p2 = prev_index; + + if (!moving_p && sticky) + p2 = MOD (p2-1, f->spool_size); + + if (f->missing >= 0 && + p2 == MOD (f->missing+1, f->spool_size)) + p2 = MOD (p2-1, f->spool_size); + + glPushMatrix(); + glRotatef (180, 1, 0, 0); + count += draw_fin (mi, f, -1, p2, text_p); + glPopMatrix(); + } + + /* Moving flap, front: top half of prev char */ + /* Moving flap, back: bottom half of target char */ + if (moving_p || sticky) + { + if (!moving_p) + r = 1.0; + if (sticky && r > 1 - sticky) + r = 1 - sticky; + glPushMatrix(); + glRotatef (r * 180, 1, 0, 0); + count += draw_fin (mi, f, prev_index, next_index, text_p); + glPopMatrix(); + } + + return count; +} + + +static int +draw_colon (ModeInfo *mi) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat s = 1.0 / (bp->ascent + bp->descent); + GLfloat z = 0.01; + int count = 0; + XCharStruct m; + + texture_string_metrics (bp->font_data, ":", &m, 0, 0); + + s *= 2; + + glPushMatrix(); + + glTranslatef (-(1 + COLON_WIDTH), 0, 0); + glScalef (s, s, 1); + + glTranslatef (-m.lbearing - (m.rbearing - m.lbearing)/2, + -(m.ascent + m.descent) / 2, + 0); + + glEnable (GL_TEXTURE_2D); + + /* draw the text five times, to give it a border. */ + { + const XPoint offsets[] = {{ -1, -1 }, + { -1, 1 }, + { 1, 1 }, + { 1, -1 }, + { 0, 0 }}; + int i; + GLfloat n = 1.5; + + glColor3f (0, 0, 0); + for (i = 0; i < countof(offsets); i++) + { + glPushMatrix(); + if (offsets[i].x == 0) + { + glColor4fv (bp->text_color); + glTranslatef (0, 0, z * 2); + } + glTranslatef (n * offsets[i].x, n * offsets[i].y, 0); + print_texture_string (bp->font_data, ":"); + count++; + glPopMatrix(); + } + } + + glPopMatrix(); + + return count; +} + + +/* Reads and returns a single Unicode character from the text client. + */ +static unsigned long +read_unicode (ModeInfo *mi) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + const unsigned char *end = bp->text + sizeof(bp->text) - 1; /* 4 bytes */ + unsigned long uc = 0; + long L; + int i; + + if (bp->clock_p || !bp->tc) abort(); + + /* Fill the buffer with available input. + */ + i = strlen ((char *) bp->text); + while (i < (end - bp->text)) + { + int c = textclient_getc (bp->tc); + if (c <= 0) break; + bp->text[i++] = (char) c; + bp->text[i] = 0; + } + + /* Pop 1-4 bytes from the front of the buffer and extract a UTF8 character. + */ + L = utf8_decode (bp->text, i, &uc); + if (L) + { + int j = end - bp->text - L; + memmove (bp->text, bp->text + L, j); + bp->text[j] = 0; + } + else + uc = 0; + + return uc; +} + + +/* Given a Unicode character, finds the corresponding index on the spool, + if any. Returns 0 if not found. + */ +static int +find_index (ModeInfo *mi, flapper *f, long uc) +{ + char string[5]; + int L = utf8_encode (uc, string, sizeof(string) - 1); + int i; + if (L <= 0) return 0; + string[L] = 0; + for (i = 0; i < f->spool_size; i++) + { + if (!strcmp (string, f->spool[i])) + return i; + } + return 0; +} + + +/* Read input from the text client and populate the spool with it. + */ +static void +fill_targets (ModeInfo *mi) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + int x, y; + Bool cls_p = False; + + if (bp->clock_p) + { + char buf[80]; + time_t now = time ((time_t *) 0); + struct tm *tm = localtime (&now); + const char *fmt = (bp->clock_p == 24 + ? "%H%M%S" + : "%I%M%S%p"); + int i; + strftime (buf, sizeof(buf)-1, fmt, tm); + if (bp->clock_p == 12 && buf[0] == '0') + buf[0] = ' '; + + for (i = 0; i < strlen(buf); i++) + { + flapper *f = &bp->flappers[i]; + f->target_index = find_index (mi, f, buf[i]); + } + for (; i < grid_width * grid_height; i++) + { + flapper *f = &bp->flappers[i]; + f->target_index = find_index (mi, f, ' '); + } + return; + } + + for (y = 0; y < grid_height; y++) + { + Bool nl_p = False; + for (x = 0; x < grid_width; x++) + { + int i = y * grid_width + x; + flapper *f = &bp->flappers[i]; + unsigned long uc = ((nl_p || cls_p) ? ' ' : read_unicode (mi)); + if (uc == '\r' || uc == '\n') + nl_p = True; + else if (uc == 12) /* ^L */ + cls_p = True; + + /* Convert Unicode to the closest Latin1 equivalent. */ + if (uc > 127) + { + Bool ascii_p = (f->spool != latin1_spool); + unsigned char s[5], *s2; + int L = utf8_encode (uc, (char *) s, sizeof(s)); + s[L] = 0; + s2 = (unsigned char *) utf8_to_latin1 ((char *) s, ascii_p); + + if (s2[0] < 128) /* ASCII */ + uc = s2[0]; + else /* Latin1 -> UTF8 -> Unicode */ + { + s[0] = (s2[0] > 0xBF ? 0xC3 : 0xC2); + s[1] = s2[0] & (s2[0] > 0xBF ? 0xBF : 0xFF); + s[2] = 0; + utf8_decode (s, 2, &uc); + } + + free (s2); + } + + /* Upcase ASCII. Upcasing Unicrud would be rocket surgery. */ + if (uc >= 'a' && uc <= 'z') uc += ('A'-'a'); + + f->target_index = find_index (mi, f, uc); + + f->sticky = (((random() % 20) == 0) + ? 0.05 + frand(0.1) + frand(0.1) + : 0); + } + } + +# if 0 + for (y = 0; y < grid_height; y++) + { + fprintf (stderr, "# "); + for (x = 0; x < grid_width; x++) + { + int i = y * grid_width + x; + flapper *f = &bp->flappers[i]; + fprintf(stderr, "%s", bp->spool[f->target_index]); + } + fprintf (stderr, " #\n"); + } + fprintf (stderr, "\n"); +# endif +} + + +static void +draw_flappers (ModeInfo *mi, Bool text_p) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + int x, y; + int running = 0; + + for (y = 0; y < grid_height; y++) + for (x = 0; x < grid_width; x++) + { + int i = (grid_height - y - 1) * grid_width + x; + flapper *f = &bp->flappers[i]; + GLfloat xx = x; + GLfloat yy = y; + + if (bp->clock_p) + { + if (x >= 2) xx += COLON_WIDTH; + if (x >= 4) xx += COLON_WIDTH; + if (x >= 6) xx += COLON_WIDTH; + } + + xx *= 2.01; + yy *= 1.98; + + glPushMatrix(); + glTranslatef (xx, yy, 0); + mi->polygon_count += draw_flapper (mi, f, text_p); + + if (text_p && bp->clock_p && (x == 2 || x == 4)) + mi->polygon_count += draw_colon (mi); + + glPopMatrix(); + + if (text_p) + { + tick_flapper (mi, f); + if (f->current_index != f->target_index) + running++; + } + } + + if (text_p && !running) + { + if (bp->clock_p) + fill_targets (mi); + else if (bp->linger) + { + bp->linger--; + if (!bp->linger) + fill_targets (mi); + } + else + { + /* Base of 1 second, plus 1 second for every 25 characters. + Also multiply by speed? */ + bp->linger = 30; + if (!bp->first_time_p) + bp->linger += (grid_width * grid_height * 1.2); + bp->first_time_p = False; + } + } +} + + +ENTRYPOINT void +draw_splitflap (ModeInfo *mi) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + + glScalef (0.1, 0.1, 0.1); /* because of gluLookAt */ + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 8, + (y - 0.5) * 8, + (z - 0.5) * 8); + + gltrackball_rotate (bp->trackball); + + if (face_front_p) + { + double maxx = 120; + double maxy = 60; + double maxz = 45; + get_position (bp->rot2, &x, &y, &z, !bp->button_down_p); + if (bp->spinx) glRotatef (maxy/2 - x*maxy, 1, 0, 0); + if (bp->spiny) glRotatef (maxx/2 - y*maxx, 0, 1, 0); + if (bp->spinz) glRotatef (maxz/2 - z*maxz, 0, 0, 1); + } + else + { + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1, 0, 0); + glRotatef (y * 360, 0, 1, 0); + glRotatef (z * 360, 0, 0, 1); + } + } + + /* Fit the whole grid on the screen */ + { + GLfloat r = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int cells = (grid_width > grid_height + ? grid_width * r + : grid_height); + GLfloat s = 8; +# ifdef HAVE_MOBILE + s *= 2; /* #### What. Why is this necessary? */ +#endif + s /= cells; + glScalef (s, s, s); + } + + mi->polygon_count = 0; + mi->polygon_count += draw_component (mi, SPLITFLAP_OUTER_FRAME); + + { + GLfloat xoff = (bp->clock_p == 12 ? COLON_WIDTH * 3 : + bp->clock_p == 24 ? COLON_WIDTH * 2 : + 0); + glTranslatef (1 - (grid_width + xoff), 1 - grid_height, 0); + } + + /* We must render all text after all polygons, or alpha blending + doesn't work right. */ + draw_flappers (mi, False); + draw_flappers (mi, True); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT void +free_splitflap (ModeInfo *mi) +{ + splitflap_configuration *bp = &bps[MI_SCREEN(mi)]; + if (bp->tc) + textclient_close (bp->tc); + bp->tc = 0; + /* #### bp->texinfo */ +} + +XSCREENSAVER_MODULE ("SplitFlap", splitflap) + +#endif /* USE_GL */ diff --git a/hacks/glx/splitflap.dxf b/hacks/glx/splitflap.dxf new file mode 100644 index 0000000..d00149a --- /dev/null +++ b/hacks/glx/splitflap.dxf @@ -0,0 +1,1658 @@ + 0 +SECTION + 2 +ENTITIES + 0 +3DFACE + 8 +fin_face_half +10 +-33.50000000000001 +20 +-1.2499999999999996 +30 +34.82654508887018 +11 +-33.500000000000014 +21 +-1.2499999999999996 +31 +30.826545088870194 +12 +-5.639932965095795e-15 +22 +-1.2499999999999996 +32 +30.826545088870194 +13 +-5.639932965095795e-15 +23 +-1.2499999999999996 +33 +30.826545088870194 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-33.500000000000014 +20 +-1.2499999999999996 +30 +30.826545088870194 +11 +-37.50000000000001 +21 +-1.2499999999999996 +31 +30.826545088870187 +12 +-33.50000000000001 +22 +-1.2499999999999996 +32 +17.66327254443509 +13 +-33.50000000000001 +23 +-1.2499999999999996 +33 +17.66327254443509 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-33.500000000000014 +20 +-1.2499999999999996 +30 +30.826545088870194 +11 +-33.50000000000001 +21 +-1.2499999999999996 +31 +17.66327254443509 +12 +-5.639932965095795e-15 +22 +-1.2499999999999996 +32 +30.826545088870194 +13 +-5.639932965095795e-15 +23 +-1.2499999999999996 +33 +30.826545088870194 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-5.639932965095795e-15 +20 +-1.2499999999999996 +30 +30.826545088870194 +11 +-33.50000000000001 +21 +-1.2499999999999996 +31 +17.66327254443509 +12 +-5.639932965095795e-15 +22 +-1.2499999999999996 +32 +17.66327254443509 +13 +-5.639932965095795e-15 +23 +-1.2499999999999996 +33 +17.66327254443509 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-33.50000000000001 +20 +-1.2499999999999996 +30 +34.82654508887018 +11 +-5.639932965095795e-15 +21 +-1.2499999999999996 +31 +30.826545088870194 +12 +-5.639932965095795e-15 +22 +-1.2499999999999996 +32 +34.82654508887018 +13 +-5.639932965095795e-15 +23 +-1.2499999999999996 +33 +34.82654508887018 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-37.50000000000001 +20 +-1.2499999999999996 +30 +30.826545088870187 +11 +-37.50000000000001 +21 +-1.2499999999999996 +31 +17.66327254443509 +12 +-33.50000000000001 +22 +-1.2499999999999996 +32 +17.66327254443509 +13 +-33.50000000000001 +23 +-1.2499999999999996 +33 +17.66327254443509 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-33.50000000000001 +20 +-1.2499999999999996 +30 +17.66327254443509 +11 +-5.639932965095795e-15 +21 +-1.2499999999999996 +31 +0.49999999999999906 +12 +-5.639932965095795e-15 +22 +-1.2499999999999996 +32 +17.66327254443509 +13 +-5.639932965095795e-15 +23 +-1.2499999999999996 +33 +17.66327254443509 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-33.50000000000001 +20 +-1.2499999999999996 +30 +17.66327254443509 +11 +-33.50000000000001 +21 +-1.2499999999999996 +31 +0.49999999999999906 +12 +-5.639932965095795e-15 +22 +-1.2499999999999996 +32 +0.49999999999999906 +13 +-5.639932965095795e-15 +23 +-1.2499999999999996 +33 +0.49999999999999906 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-36.96410161513776 +20 +-1.2499999999999996 +30 +32.82654508887019 +11 +-37.50000000000001 +21 +-1.2499999999999996 +31 +30.826545088870187 +12 +-33.500000000000014 +22 +-1.2499999999999996 +32 +30.826545088870194 +13 +-33.500000000000014 +23 +-1.2499999999999996 +33 +30.826545088870194 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-35.50000000000001 +20 +-1.2499999999999996 +30 +34.29064670400795 +11 +-36.96410161513776 +21 +-1.2499999999999996 +31 +32.82654508887019 +12 +-33.500000000000014 +22 +-1.2499999999999996 +32 +30.826545088870194 +13 +-33.500000000000014 +23 +-1.2499999999999996 +33 +30.826545088870194 +70 +0 + 0 +3DFACE + 8 +fin_face_half +10 +-33.50000000000001 +20 +-1.2499999999999996 +30 +34.82654508887018 +11 +-35.50000000000001 +21 +-1.2499999999999996 +31 +34.29064670400795 +12 +-33.500000000000014 +22 +-1.2499999999999996 +32 +30.826545088870194 +13 +-33.500000000000014 +23 +-1.2499999999999996 +33 +30.826545088870194 +70 +0 + 0 +3DFACE + 8 +disc_quarter +10 +-34.0 +20 +-3.27117099240816 +30 +-1.6097177653715823e-14 +11 +-38.5 +21 +-3.2711709924081642 +31 +3.105896849114554 +12 +-38.50000000000001 +22 +-3.2711709924081416 +32 +-1.6919798895287383e-14 +13 +-38.50000000000001 +23 +-3.2711709924081416 +33 +-1.6919798895287383e-14 +70 +1 + 0 +3DFACE + 8 +disc_quarter +10 +-38.5 +20 +-3.2711709924081642 +30 +3.105896849114554 +11 +-34.0 +21 +-3.27117099240816 +31 +-1.6097177653715823e-14 +12 +-33.999999999999986 +22 +-3.2711709924081824 +32 +3.105896849114554 +13 +-33.999999999999986 +23 +-3.2711709924081824 +33 +3.105896849114554 +70 +1 + 0 +3DFACE + 8 +disc_quarter +10 +-33.999999999999986 +20 +-1.6634404790586517 +30 +9.106028809813777 +11 +-38.5 +21 +-3.2711709924081642 +31 +3.105896849114554 +12 +-33.999999999999986 +22 +-3.2711709924081824 +32 +3.105896849114554 +13 +-33.999999999999986 +23 +-3.2711709924081824 +33 +3.105896849114554 +70 +1 + 0 +3DFACE + 8 +disc_quarter +10 +-38.5 +20 +-3.2711709924081642 +30 +3.105896849114554 +11 +-33.999999999999986 +21 +-1.6634404790586517 +31 +9.106028809813777 +12 +-38.5 +22 +-1.6634404790586328 +32 +9.106028809813777 +13 +-38.5 +23 +-1.6634404790586328 +33 +9.106028809813777 +70 +1 + 0 +3DFACE + 8 +disc_quarter +10 +-33.999999999999986 +20 +1.4999999999999922 +30 +14.585268446263385 +11 +-38.5 +21 +-1.6634404790586328 +31 +9.106028809813777 +12 +-33.999999999999986 +22 +-1.6634404790586517 +32 +9.106028809813777 +13 +-33.999999999999986 +23 +-1.6634404790586517 +33 +9.106028809813777 +70 +1 + 0 +3DFACE + 8 +disc_quarter +10 +-38.5 +20 +-1.6634404790586328 +30 +9.106028809813777 +11 +-33.999999999999986 +21 +1.4999999999999922 +31 +14.585268446263385 +12 +-38.5 +22 +1.4999999999999922 +32 +14.585268446263385 +13 +-38.5 +23 +1.4999999999999922 +33 +14.585268446263385 +70 +1 + 0 +3DFACE + 8 +disc_quarter +10 +-38.5 +20 +1.4999999999999922 +30 +-1.6919798895287383e-14 +11 +-38.50000000000001 +21 +-3.2711709924081416 +31 +-1.6919798895287383e-14 +12 +-38.5 +22 +-3.2711709924081642 +32 +3.105896849114554 +13 +-38.5 +23 +-3.2711709924081642 +33 +3.105896849114554 +70 +0 + 0 +3DFACE + 8 +disc_quarter +10 +-38.5 +20 +1.4999999999999922 +30 +-1.6919798895287383e-14 +11 +-38.5 +21 +-3.2711709924081642 +31 +3.105896849114554 +12 +-38.5 +22 +-1.6634404790586328 +32 +9.106028809813777 +13 +-38.5 +23 +-1.6634404790586328 +33 +9.106028809813777 +70 +0 + 0 +3DFACE + 8 +disc_quarter +10 +-33.999999999999986 +20 +1.4999999999999922 +30 +14.585268446263385 +11 +-33.999999999999986 +21 +-1.6634404790586517 +31 +9.106028809813777 +12 +-33.999999999999986 +22 +1.4999999999999922 +32 +-1.4804824033376462e-14 +13 +-33.999999999999986 +23 +1.4999999999999922 +33 +-1.4804824033376462e-14 +70 +0 + 0 +3DFACE + 8 +disc_quarter +10 +-33.999999999999986 +20 +1.4999999999999922 +30 +-1.4804824033376462e-14 +11 +-33.999999999999986 +21 +-3.2711709924081824 +31 +3.105896849114554 +12 +-34.0 +22 +-3.27117099240816 +32 +-1.6097177653715823e-14 +13 +-34.0 +23 +-3.27117099240816 +33 +-1.6097177653715823e-14 +70 +0 + 0 +3DFACE + 8 +disc_quarter +10 +-33.999999999999986 +20 +1.4999999999999922 +30 +-1.4804824033376462e-14 +11 +-33.999999999999986 +21 +-1.6634404790586517 +31 +9.106028809813777 +12 +-33.999999999999986 +22 +-3.2711709924081824 +32 +3.105896849114554 +13 +-33.999999999999986 +23 +-3.2711709924081824 +33 +3.105896849114554 +70 +0 + 0 +3DFACE + 8 +box_quarter_frame +10 +5.639932965095795e-15 +20 +1.5000000000000084 +30 +35.826545088870176 +11 +-38.49999999999998 +21 +-1.9999999999999913 +31 +35.826545088870176 +12 +-38.499999999999986 +22 +1.5000000000000084 +32 +35.826545088870176 +13 +-38.499999999999986 +23 +1.5000000000000084 +33 +35.826545088870176 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-38.49999999999998 +20 +-1.9999999999999913 +30 +35.826545088870176 +11 +5.639932965095795e-15 +21 +1.5000000000000084 +31 +35.826545088870176 +12 +5.639932965095795e-15 +22 +-1.9999999999999913 +32 +35.826545088870176 +13 +5.639932965095795e-15 +23 +-1.9999999999999913 +33 +35.826545088870176 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-40.49999999999998 +20 +-1.9999999999999913 +30 +39.82654508887017 +11 +5.639932965095795e-15 +21 +2.500000000000008 +31 +39.82654508887017 +12 +-40.49999999999999 +22 +2.500000000000008 +32 +39.82654508887017 +13 +-40.49999999999999 +23 +2.500000000000008 +33 +39.82654508887017 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +5.639932965095795e-15 +20 +2.500000000000008 +30 +39.82654508887017 +11 +-40.49999999999998 +21 +-1.9999999999999913 +31 +39.82654508887017 +12 +5.639932965095795e-15 +22 +-1.9999999999999913 +32 +39.82654508887017 +13 +5.639932965095795e-15 +23 +-1.9999999999999913 +33 +39.82654508887017 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +5.639932965095795e-15 +20 +-1.9999999999999913 +30 +39.82654508887017 +11 +-38.49999999999998 +21 +-1.9999999999999913 +31 +35.826545088870176 +12 +5.639932965095795e-15 +22 +-1.9999999999999913 +32 +35.826545088870176 +13 +5.639932965095795e-15 +23 +-1.9999999999999913 +33 +35.826545088870176 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-38.49999999999998 +20 +-1.9999999999999913 +30 +35.826545088870176 +11 +5.639932965095795e-15 +21 +-1.9999999999999913 +31 +39.82654508887017 +12 +-40.49999999999998 +22 +-1.9999999999999913 +32 +35.826545088870176 +13 +-40.49999999999998 +23 +-1.9999999999999913 +33 +35.826545088870176 +70 +3 + 0 +3DFACE + 8 +box_quarter_frame +10 +-40.49999999999998 +20 +-1.9999999999999913 +30 +35.826545088870176 +11 +5.639932965095795e-15 +21 +-1.9999999999999913 +31 +39.82654508887017 +12 +-40.49999999999998 +22 +-1.9999999999999913 +32 +39.82654508887017 +13 +-40.49999999999998 +23 +-1.9999999999999913 +33 +39.82654508887017 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-40.49999999999999 +20 +2.500000000000008 +30 +39.82654508887017 +11 +-40.49999999999998 +21 +-1.9999999999999913 +31 +35.826545088870176 +12 +-40.49999999999998 +22 +-1.9999999999999913 +32 +39.82654508887017 +13 +-40.49999999999998 +23 +-1.9999999999999913 +33 +39.82654508887017 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-40.49999999999998 +20 +-1.9999999999999913 +30 +35.826545088870176 +11 +-40.49999999999999 +21 +2.500000000000008 +31 +39.82654508887017 +12 +-40.49999999999999 +22 +2.500000000000008 +32 +35.826545088870176 +13 +-40.49999999999999 +23 +2.500000000000008 +33 +35.826545088870176 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-40.49999999999999 +20 +2.500000000000008 +30 +35.826545088870176 +11 +-40.49999999999998 +21 +-1.9999999999999913 +31 +-0.0017362311270455954 +12 +-40.49999999999998 +22 +-1.9999999999999913 +32 +35.826545088870176 +13 +-40.49999999999998 +23 +-1.9999999999999913 +33 +35.826545088870176 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-40.49999999999998 +20 +-1.9999999999999913 +30 +-0.0017362311270455954 +11 +-40.49999999999999 +21 +2.500000000000008 +31 +35.826545088870176 +12 +-40.49999999999999 +22 +2.500000000000008 +32 +-0.0017362311270455954 +13 +-40.49999999999999 +23 +2.500000000000008 +33 +-0.0017362311270455954 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-38.5 +20 +-2.023352891115778 +30 +-1.6919798895287383e-14 +11 +-40.49999999999998 +21 +-1.9999999999999913 +31 +35.826545088870176 +12 +-40.49999999999998 +22 +-1.9999999999999913 +32 +-0.0017362311270455954 +13 +-40.49999999999998 +23 +-1.9999999999999913 +33 +-0.0017362311270455954 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-40.49999999999998 +20 +-1.9999999999999913 +30 +35.826545088870176 +11 +-38.5 +21 +-2.023352891115778 +31 +-1.6919798895287383e-14 +12 +-38.49999999999998 +22 +-1.9999999999999913 +32 +35.826545088870176 +13 +-38.49999999999998 +23 +-1.9999999999999913 +33 +35.826545088870176 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-38.499999999999986 +20 +1.500000000000011 +30 +-1.6919798895287383e-14 +11 +-38.49999999999998 +21 +-1.9999999999999913 +31 +35.826545088870176 +12 +-38.5 +22 +-2.023352891115778 +32 +-1.6919798895287383e-14 +13 +-38.5 +23 +-2.023352891115778 +33 +-1.6919798895287383e-14 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-38.49999999999998 +20 +-1.9999999999999913 +30 +35.826545088870176 +11 +-38.499999999999986 +21 +1.500000000000011 +31 +-1.6919798895287383e-14 +12 +-38.499999999999986 +22 +1.5000000000000084 +32 +35.826545088870176 +13 +-38.499999999999986 +23 +1.5000000000000084 +33 +35.826545088870176 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +5.639932965095795e-15 +20 +1.5000000000000084 +30 +35.826545088870176 +11 +-38.499999999999986 +21 +1.500000000000011 +31 +-1.6919798895287383e-14 +12 +5.639932965095795e-15 +22 +1.5000000000000084 +32 +-2.255973186038318e-14 +13 +5.639932965095795e-15 +23 +1.5000000000000084 +33 +-2.255973186038318e-14 +70 +1 + 0 +3DFACE + 8 +box_quarter_frame +10 +-38.499999999999986 +20 +1.500000000000011 +30 +-1.6919798895287383e-14 +11 +5.639932965095795e-15 +21 +1.5000000000000084 +31 +35.826545088870176 +12 +-38.499999999999986 +22 +1.5000000000000084 +32 +35.826545088870176 +13 +-38.499999999999986 +23 +1.5000000000000084 +33 +35.826545088870176 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-33.49999999999999 +20 +0.25000000000000006 +30 +17.66327254443509 +11 +-37.49999999999999 +21 +-1.2499999999999996 +31 +17.66327254443509 +12 +-37.49999999999999 +22 +0.25000000000000006 +32 +17.66327254443509 +13 +-37.49999999999999 +23 +0.25000000000000006 +33 +17.66327254443509 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-37.49999999999999 +20 +-1.2499999999999996 +30 +17.66327254443509 +11 +-33.49999999999999 +21 +0.25000000000000006 +31 +17.66327254443509 +12 +-33.49999999999999 +22 +-1.2499999999999996 +32 +17.66327254443509 +13 +-33.49999999999999 +23 +-1.2499999999999996 +33 +17.66327254443509 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-37.49999999999999 +20 +0.25000000000000006 +30 +30.826545088870187 +11 +-37.49999999999999 +21 +-1.2499999999999996 +31 +17.66327254443509 +12 +-37.49999999999999 +22 +-1.2499999999999996 +32 +30.826545088870187 +13 +-37.49999999999999 +23 +-1.2499999999999996 +33 +30.826545088870187 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-37.49999999999999 +20 +-1.2499999999999996 +30 +17.66327254443509 +11 +-37.49999999999999 +21 +0.25000000000000006 +31 +30.826545088870187 +12 +-37.49999999999999 +22 +0.25000000000000006 +32 +17.66327254443509 +13 +-37.49999999999999 +23 +0.25000000000000006 +33 +17.66327254443509 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +5.639932965095795e-15 +20 +-1.2499999999999996 +30 +34.82654508887018 +11 +-33.49999999999999 +21 +0.25000000000000006 +31 +34.82654508887018 +12 +-33.49999999999999 +22 +-1.2499999999999996 +32 +34.82654508887018 +13 +-33.49999999999999 +23 +-1.2499999999999996 +33 +34.82654508887018 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-33.49999999999999 +20 +0.25000000000000006 +30 +34.82654508887018 +11 +5.639932965095795e-15 +21 +-1.2499999999999996 +31 +34.82654508887018 +12 +5.639932965095795e-15 +22 +0.25000000000000006 +32 +34.82654508887018 +13 +5.639932965095795e-15 +23 +0.25000000000000006 +33 +34.82654508887018 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +5.639932965095795e-15 +20 +0.25000000000000006 +30 +0.49999999999999906 +11 +-33.49999999999999 +21 +-1.2499999999999996 +31 +0.49999999999999906 +12 +-33.49999999999999 +22 +0.25000000000000006 +32 +0.49999999999999906 +13 +-33.49999999999999 +23 +0.25000000000000006 +33 +0.49999999999999906 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-33.49999999999999 +20 +-1.2499999999999996 +30 +0.49999999999999906 +11 +5.639932965095795e-15 +21 +0.25000000000000006 +31 +0.49999999999999906 +12 +5.639932965095795e-15 +22 +-1.2499999999999996 +32 +0.49999999999999906 +13 +5.639932965095795e-15 +23 +-1.2499999999999996 +33 +0.49999999999999906 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-33.49999999999999 +20 +0.25000000000000006 +30 +17.66327254443509 +11 +-33.49999999999999 +21 +-1.2499999999999996 +31 +0.49999999999999906 +12 +-33.49999999999999 +22 +-1.2499999999999996 +32 +17.66327254443509 +13 +-33.49999999999999 +23 +-1.2499999999999996 +33 +17.66327254443509 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-33.49999999999999 +20 +-1.2499999999999996 +30 +0.49999999999999906 +11 +-33.49999999999999 +21 +0.25000000000000006 +31 +17.66327254443509 +12 +-33.49999999999999 +22 +0.25000000000000006 +32 +0.49999999999999906 +13 +-33.49999999999999 +23 +0.25000000000000006 +33 +0.49999999999999906 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-36.96410161513774 +20 +0.25000000000000006 +30 +32.82654508887019 +11 +-37.49999999999999 +21 +-1.2499999999999996 +31 +30.826545088870187 +12 +-36.96410161513774 +22 +-1.2499999999999996 +32 +32.82654508887019 +13 +-36.96410161513774 +23 +-1.2499999999999996 +33 +32.82654508887019 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-37.49999999999999 +20 +-1.2499999999999996 +30 +30.826545088870187 +11 +-36.96410161513774 +21 +0.25000000000000006 +31 +32.82654508887019 +12 +-37.49999999999999 +22 +0.25000000000000006 +32 +30.826545088870187 +13 +-37.49999999999999 +23 +0.25000000000000006 +33 +30.826545088870187 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-35.5 +20 +0.25000000000000006 +30 +34.29064670400795 +11 +-36.96410161513774 +21 +-1.2499999999999996 +31 +32.82654508887019 +12 +-35.5 +22 +-1.2499999999999996 +32 +34.29064670400795 +13 +-35.5 +23 +-1.2499999999999996 +33 +34.29064670400795 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-36.96410161513774 +20 +-1.2499999999999996 +30 +32.82654508887019 +11 +-35.5 +21 +0.25000000000000006 +31 +34.29064670400795 +12 +-36.96410161513774 +22 +0.25000000000000006 +32 +32.82654508887019 +13 +-36.96410161513774 +23 +0.25000000000000006 +33 +32.82654508887019 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-33.49999999999999 +20 +-1.2499999999999996 +30 +34.82654508887018 +11 +-35.5 +21 +0.25000000000000006 +31 +34.29064670400795 +12 +-35.5 +22 +-1.2499999999999996 +32 +34.29064670400795 +13 +-35.5 +23 +-1.2499999999999996 +33 +34.29064670400795 +70 +1 + 0 +3DFACE + 8 +fin_edge_half +10 +-35.5 +20 +0.25000000000000006 +30 +34.29064670400795 +11 +-33.49999999999999 +21 +-1.2499999999999996 +31 +34.82654508887018 +12 +-33.49999999999999 +22 +0.25000000000000006 +32 +34.82654508887018 +13 +-33.49999999999999 +23 +0.25000000000000006 +33 +34.82654508887018 +70 +1 + 0 +ENDSEC + 0 +EOF diff --git a/hacks/glx/splitflap.man b/hacks/glx/splitflap.man new file mode 100644 index 0000000..432f490 --- /dev/null +++ b/hacks/glx/splitflap.man @@ -0,0 +1,98 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +splitflap - a simulation of a split-flap electromechanical display. +.SH SYNOPSIS +.B splitflap +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fImicroseconds\fP] +[\-speed \fIfloat\fP] +[\-width \fIcolumns\fP] +[\-height \fIrows\fP] +[\-mode text | clock12 | clock24] +[\-no-wander] +[\-spin \fIaxes\fP] +[\-no\-spin] +[\-front] [\-no-front] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Simulates a split-flap display, an old style of electromechanical sign as +seen in airports and train stations, and commonly used in alarm clocks in +the 1960s and 1970s. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-width \fInumber\fP +Columns of the display. Default: 22. +.TP 8 +.B \-height \fInumber\fP +Rows of the display. Default: 8. +.TP 8 +.B \-mode clock12 +Display a 12-hour clock. +.TP 8 +.B \-mode clock24 +Display a 24-hour clock. +.TP 8 +.B \-front | \-no-front +When spinning, never spin all the way around or upside down: +always face mostly forward so that the text is easily readable. +This is the default. +.TP 8 +.B \-no\-front +Allow spins to go all the way around or upside down. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin +Which axes around which the text should spin. The default is "XYZ", +meaning rotate it freely in space. "\fB\-spin Z\fP" would rotate the +text in the plane of the screen while not rotating it into or out +of the screen; etc. +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2015 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/splitflap_obj.c b/hacks/glx/splitflap_obj.c new file mode 100644 index 0000000..f814bb9 --- /dev/null +++ b/hacks/glx/splitflap_obj.c @@ -0,0 +1,200 @@ +/* Generated from "splitflap.dxf" on 04-May-2015. + Smoothed vertex normals. Normalized to unit bounding box. + Components: box_quarter_frame, disc_quarter, fin_edge_half, + fin_face_half. + */ + +#include "gllist.h" + +static const float splitflap_obj_box_quarter_frame_data[] = { + 0,0,-1,0,0.037037,0.884606, + 0,0,-1,-0.950617,-0.049383,0.884606, + 0,0,-1,-0.950617,0.037037,0.884606, + 0,0,-1,-0.950617,-0.049383,0.884606, + 0,0,-1,0,0.037037,0.884606, + 0,0,-1,0,-0.049383,0.884606, + 0,0,1,-1,-0.049383,0.983371, + 0,0,1,0,0.061728,0.983371, + 0,0,1,-1,0.061728,0.983371, + 0,0,1,0,0.061728,0.983371, + 0,0,1,-1,-0.049383,0.983371, + 0,0,1,0,-0.049383,0.983371, + 0,-1,0,0,-0.049383,0.983371, + 0,-1,0.000217,-0.950617,-0.049383,0.884606, + 0,-1,0,0,-0.049383,0.884606, + 0,-1,0.000217,-0.950617,-0.049383,0.884606, + 0,-1,0,0,-0.049383,0.983371, + -0.002919,-0.999996,0.000163,-1,-0.049383,0.884606, + -0.002919,-0.999996,0.000163,-1,-0.049383,0.884606, + 0,-1,0,0,-0.049383,0.983371, + 0,-1,0,-1,-0.049383,0.983371, + -1,0,0,-1,0.061728,0.983371, + -1,0,0,-1,-0.049383,0.884606, + -1,0,0,-1,-0.049383,0.983371, + -1,0,0,-1,-0.049383,0.884606, + -1,0,0,-1,0.061728,0.983371, + -1,0,0,-1,0.061728,0.884606, + -1,0,0,-1,0.061728,0.884606, + -1,0,0,-1,-0.049383,-0.000043, + -1,0,0,-1,-0.049383,0.884606, + -1,0,0,-1,-0.049383,-0.000043, + -1,0,0,-1,0.061728,0.884606, + -1,0,0,-1,0.061728,-0.000043, + -0.005838,-0.999983,0.000326,-0.950617,-0.049959,0, + -0.002919,-0.999996,0.000163,-1,-0.049383,0.884606, + -0.011676,-0.999932,0,-1,-0.049383,-0.000043, + -0.002919,-0.999996,0.000163,-1,-0.049383,0.884606, + -0.005838,-0.999983,0.000326,-0.950617,-0.049959,0, + 0,-1,0.000217,-0.950617,-0.049383,0.884606, + 1,0,0,-0.950617,0.037037,0, + 1,0,0,-0.950617,-0.049383,0.884606, + 1,0,0,-0.950617,-0.049959,0, + 1,0,0,-0.950617,-0.049383,0.884606, + 1,0,0,-0.950617,0.037037,0, + 1,0,0,-0.950617,0.037037,0.884606, + 0,-1,0,0,0.037037,0.884606, + 0,-1,0,-0.950617,0.037037,0, + 0,-1,0,0,0.037037,0, + 0,-1,0,-0.950617,0.037037,0, + 0,-1,0,0,0.037037,0.884606, + 0,-1,0,-0.950617,0.037037,0.884606 +}; +static const struct gllist splitflap_obj_box_quarter_frame_frame = { + GL_N3F_V3F, GL_TRIANGLES, 51, splitflap_obj_box_quarter_frame_data, 0 +}; +const struct gllist *splitflap_obj_box_quarter_frame = &splitflap_obj_box_quarter_frame_frame; + +static const float splitflap_obj_disc_quarter_data[] = { + 0,-1,0,-0.839506,-0.08077,0, + 0,-0.991445,0.130526,-0.950617,-0.08077,0.076689, + 0,-1,0,-0.950617,-0.08077,0, + 0,-0.991445,0.130526,-0.950617,-0.08077,0.076689, + 0,-1,0,-0.839506,-0.08077,0, + 0,-0.991445,0.130526,-0.839506,-0.08077,0.076689, + 0,-0.939769,0.341811,-0.839506,-0.041073,0.22484, + 0,-0.991445,0.130526,-0.950617,-0.08077,0.076689, + 0,-0.991445,0.130526,-0.839506,-0.08077,0.076689, + 0,-0.991445,0.130526,-0.950617,-0.08077,0.076689, + 0,-0.939769,0.341811,-0.839506,-0.041073,0.22484, + 0,-0.906214,0.42282,-0.950617,-0.041073,0.22484, + 0,-0.866025,0.5,-0.839506,0.037037,0.36013, + 0,-0.906214,0.42282,-0.950617,-0.041073,0.22484, + 0,-0.939769,0.341811,-0.839506,-0.041073,0.22484, + 0,-0.906214,0.42282,-0.950617,-0.041073,0.22484, + 0,-0.866025,0.5,-0.839506,0.037037,0.36013, + 0,-0.866025,0.5,-0.950617,0.037037,0.36013, + -1,0,0,-0.950617,0.037037,0, + -1,0,0,-0.950617,-0.08077,0, + -1,0,0,-0.950617,-0.08077,0.076689, + -1,0,0,-0.950617,0.037037,0, + -1,0,0,-0.950617,-0.08077,0.076689, + -1,0,0,-0.950617,-0.041073,0.22484, + 1,0,0,-0.839506,0.037037,0.36013, + 1,0,0,-0.839506,-0.041073,0.22484, + 1,0,0,-0.839506,0.037037,0, + 1,0,0,-0.839506,0.037037,0, + 1,0,0,-0.839506,-0.08077,0.076689, + 1,0,0,-0.839506,-0.08077,0, + 1,0,0,-0.839506,0.037037,0, + 1,0,0,-0.839506,-0.041073,0.22484, + 1,0,0,-0.839506,-0.08077,0.076689 +}; +static const struct gllist splitflap_obj_disc_quarter_frame = { + GL_N3F_V3F, GL_TRIANGLES, 33, splitflap_obj_disc_quarter_data, 0 +}; +const struct gllist *splitflap_obj_disc_quarter = &splitflap_obj_disc_quarter_frame; + +static const float splitflap_obj_fin_edge_half_data[] = { + 0,0,-1,-0.82716,0.006173,0.43613, + 0,0,-1,-0.925926,-0.030864,0.43613, + 0,0,-1,-0.925926,0.006173,0.43613, + 0,0,-1,-0.925926,-0.030864,0.43613, + 0,0,-1,-0.82716,0.006173,0.43613, + 0,0,-1,-0.82716,-0.030864,0.43613, + -0.996214,0,0.086934,-0.925926,0.006173,0.761149, + -1,0,0,-0.925926,-0.030864,0.43613, + -0.984769,0,0.173868,-0.925926,-0.030864,0.761149, + -1,0,0,-0.925926,-0.030864,0.43613, + -0.996214,0,0.086934,-0.925926,0.006173,0.761149, + -1,0,0,-0.925926,0.006173,0.43613, + 0,0,1,0,-0.030864,0.859915, + -0.086934,0,0.996214,-0.82716,0.006173,0.859915, + -0.173868,0,0.984769,-0.82716,-0.030864,0.859915, + -0.086934,0,0.996214,-0.82716,0.006173,0.859915, + 0,0,1,0,-0.030864,0.859915, + 0,0,1,0,0.006173,0.859915, + 0,0,-1,0,0.006173,0.012346, + 0,0,-1,-0.82716,-0.030864,0.012346, + 0,0,-1,-0.82716,0.006173,0.012346, + 0,0,-1,-0.82716,-0.030864,0.012346, + 0,0,-1,0,0.006173,0.012346, + 0,0,-1,0,-0.030864,0.012346, + -1,0,0,-0.82716,0.006173,0.43613, + -1,0,0,-0.82716,-0.030864,0.012346, + -1,0,0,-0.82716,-0.030864,0.43613, + -1,0,0,-0.82716,-0.030864,0.012346, + -1,0,0,-0.82716,0.006173,0.43613, + -1,0,0,-0.82716,0.006173,0.012346, + -0.907073,0,0.420974,-0.912694,0.006173,0.810532, + -0.984769,0,0.173868,-0.925926,-0.030864,0.761149, + -0.81811,0,0.575061,-0.912694,-0.030864,0.810532, + -0.984769,0,0.173868,-0.925926,-0.030864,0.761149, + -0.907073,0,0.420974,-0.912694,0.006173,0.810532, + -0.996214,0,0.086934,-0.925926,0.006173,0.761149, + -0.707107,0,0.707107,-0.876543,0.006173,0.846683, + -0.81811,0,0.575061,-0.912694,-0.030864,0.810532, + -0.707107,0,0.707107,-0.876543,-0.030864,0.846683, + -0.81811,0,0.575061,-0.912694,-0.030864,0.810532, + -0.707107,0,0.707107,-0.876543,0.006173,0.846683, + -0.907073,0,0.420974,-0.912694,0.006173,0.810532, + -0.173868,0,0.984769,-0.82716,-0.030864,0.859915, + -0.258819,0,0.965926,-0.876543,0.006173,0.846683, + -0.258819,0,0.965926,-0.876543,-0.030864,0.846683, + -0.258819,0,0.965926,-0.876543,0.006173,0.846683, + -0.173868,0,0.984769,-0.82716,-0.030864,0.859915, + -0.086934,0,0.996214,-0.82716,0.006173,0.859915 +}; +static const struct gllist splitflap_obj_fin_edge_half_frame = { + GL_N3F_V3F, GL_TRIANGLES, 48, splitflap_obj_fin_edge_half_data, 0 +}; +const struct gllist *splitflap_obj_fin_edge_half = &splitflap_obj_fin_edge_half_frame; + +static const float splitflap_obj_fin_face_half_data[] = { + 0,-1,0,-0.82716,-0.030864,0.859915, + 0,-1,0,-0.82716,-0.030864,0.761149, + 0,-1,0,0,-0.030864,0.761149, + 0,-1,0,-0.82716,-0.030864,0.761149, + 0,-1,0,-0.925926,-0.030864,0.761149, + 0,-1,0,-0.82716,-0.030864,0.43613, + 0,-1,0,-0.82716,-0.030864,0.761149, + 0,-1,0,-0.82716,-0.030864,0.43613, + 0,-1,0,0,-0.030864,0.761149, + 0,-1,0,0,-0.030864,0.761149, + 0,-1,0,-0.82716,-0.030864,0.43613, + 0,-1,0,0,-0.030864,0.43613, + 0,-1,0,-0.82716,-0.030864,0.859915, + 0,-1,0,0,-0.030864,0.761149, + 0,-1,0,0,-0.030864,0.859915, + 0,-1,0,-0.925926,-0.030864,0.761149, + 0,-1,0,-0.925926,-0.030864,0.43613, + 0,-1,0,-0.82716,-0.030864,0.43613, + 0,-1,0,-0.82716,-0.030864,0.43613, + 0,-1,0,0,-0.030864,0.012346, + 0,-1,0,0,-0.030864,0.43613, + 0,-1,0,-0.82716,-0.030864,0.43613, + 0,-1,0,-0.82716,-0.030864,0.012346, + 0,-1,0,0,-0.030864,0.012346, + 0,-1,0,-0.912694,-0.030864,0.810532, + 0,-1,0,-0.925926,-0.030864,0.761149, + 0,-1,0,-0.82716,-0.030864,0.761149, + 0,-1,0,-0.876543,-0.030864,0.846683, + 0,-1,0,-0.912694,-0.030864,0.810532, + 0,-1,0,-0.82716,-0.030864,0.761149, + 0,-1,0,-0.82716,-0.030864,0.859915, + 0,-1,0,-0.876543,-0.030864,0.846683, + 0,-1,0,-0.82716,-0.030864,0.761149 +}; +static const struct gllist splitflap_obj_fin_face_half_frame = { + GL_N3F_V3F, GL_TRIANGLES, 33, splitflap_obj_fin_face_half_data, 0 +}; +const struct gllist *splitflap_obj_fin_face_half = &splitflap_obj_fin_face_half_frame; diff --git a/hacks/glx/splodesic.c b/hacks/glx/splodesic.c new file mode 100644 index 0000000..2823133 --- /dev/null +++ b/hacks/glx/splodesic.c @@ -0,0 +1,640 @@ +/* splodesic, Copyright (c) 2016 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define release_splodesic 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "normals.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_FREQ "4" + +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +typedef struct { double a, o; } LL; /* latitude + longitude */ + +typedef struct triangle triangle; +struct triangle { + XYZ p[3]; + triangle *next; + triangle *neighbors[3]; + GLfloat altitude; + GLfloat velocity; + GLfloat thrust; + int thrust_duration; + int refcount; +}; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int count; + triangle *triangles; + + int ncolors; + XColor *colors; + int ccolor; + +} splodesic_configuration; + +static splodesic_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static int depth_arg; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-depth", ".freq", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" } +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&depth_arg, "freq", "Depth", DEF_FREQ, t_Int}, +}; + +ENTRYPOINT ModeSpecOpt splodesic_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Creates a triangle specified by 3 polar endpoints. + */ +static void +make_triangle1 (ModeInfo *mi, LL v1, LL v2, LL v3) +{ + splodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + triangle *t = (triangle *) calloc (1, sizeof(*t)); + + t->p[0].x = cos (v1.a) * cos (v1.o); + t->p[0].y = cos (v1.a) * sin (v1.o); + t->p[0].z = sin (v1.a); + + t->p[1].x = cos (v2.a) * cos (v2.o); + t->p[1].y = cos (v2.a) * sin (v2.o); + t->p[1].z = sin (v2.a); + + t->p[2].x = cos (v3.a) * cos (v3.o); + t->p[2].y = cos (v3.a) * sin (v3.o); + t->p[2].z = sin (v3.a); + + t->next = bp->triangles; + bp->triangles = t; + bp->count++; +} + + +/* Computes the midpoint of a line between two polar coords. + */ +static void +midpoint2 (LL v1, LL v2, LL *vm_ret, + XYZ *p1_ret, XYZ *p2_ret, XYZ *pm_ret) +{ + XYZ p1, p2, pm; + LL vm; + GLfloat hyp; + + p1.x = cos (v1.a) * cos (v1.o); + p1.y = cos (v1.a) * sin (v1.o); + p1.z = sin (v1.a); + + p2.x = cos (v2.a) * cos (v2.o); + p2.y = cos (v2.a) * sin (v2.o); + p2.z = sin (v2.a); + + pm.x = (p1.x + p2.x) / 2; + pm.y = (p1.y + p2.y) / 2; + pm.z = (p1.z + p2.z) / 2; + + vm.o = atan2 (pm.y, pm.x); + hyp = sqrt (pm.x * pm.x + pm.y * pm.y); + vm.a = atan2 (pm.z, hyp); + + *p1_ret = p1; + *p2_ret = p2; + *pm_ret = pm; + *vm_ret = vm; +} + + +/* Creates triangular geodesic facets to the given depth. + */ +static void +make_triangle (ModeInfo *mi, LL v1, LL v2, LL v3, int depth) +{ + if (depth <= 0) + make_triangle1 (mi, v1, v2, v3); + else + { + LL v12, v23, v13; + XYZ p1, p2, p3, p12, p23, p13; + + midpoint2 (v1, v2, &v12, &p1, &p2, &p12); + midpoint2 (v2, v3, &v23, &p2, &p3, &p23); + midpoint2 (v1, v3, &v13, &p1, &p3, &p13); + depth--; + + make_triangle (mi, v1, v12, v13, depth); + make_triangle (mi, v12, v2, v23, depth); + make_triangle (mi, v13, v23, v3, depth); + make_triangle (mi, v12, v23, v13, depth); + } +} + + +/* Creates triangles of a geodesic to the given depth (frequency). + */ +static void +make_geodesic (ModeInfo *mi) +{ + int depth = depth_arg; + GLfloat th0 = atan (0.5); /* lat division: 26.57 deg */ + GLfloat s = M_PI / 5; /* lon division: 72 deg */ + int i; + + for (i = 0; i < 10; i++) + { + GLfloat th1 = s * i; + GLfloat th2 = s * (i+1); + GLfloat th3 = s * (i+2); + LL v1, v2, v3, vc; + v1.a = th0; v1.o = th1; + v2.a = th0; v2.o = th3; + v3.a = -th0; v3.o = th2; + vc.a = M_PI/2; vc.o = th2; + + if (i & 1) /* north */ + { + make_triangle (mi, v1, v2, vc, depth); + make_triangle (mi, v2, v1, v3, depth); + } + else /* south */ + { + v1.a = -v1.a; + v2.a = -v2.a; + v3.a = -v3.a; + vc.a = -vc.a; + make_triangle (mi, v2, v1, vc, depth); + make_triangle (mi, v1, v2, v3, depth); + } + } +} + + +/* Add t1 to the neighbor list of t0. */ +static void +link_neighbor (int i, int j, triangle *t0, triangle *t1) +{ + int k; + if (t0 == t1) + return; + for (k = 0; k < countof(t0->neighbors); k++) + { + if (t0->neighbors[k] == t1 || + t0->neighbors[k] == 0) + { + t0->neighbors[k] = t1; + return; + } + } + fprintf (stderr, "%d %d: too many neighbors\n", i, j); + abort(); +} + + +static int +feq (GLfloat a, GLfloat b) /* Oh for fuck's sake */ +{ + const GLfloat e = 0.00001; + GLfloat d = a - b; + return (d > -e && d < e); +} + + +/* Link each triangle to its three neighbors. + */ +static void +link_neighbors (ModeInfo *mi) +{ + splodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + triangle *t0 = bp->triangles; + int i; + + /* Triangles are neighbors if they share an edge (exactly 2 points). + (There must be a faster than N! way to do this...) + */ + for (i = 0, t0 = bp->triangles; t0; t0 = t0->next, i++) + { + triangle *t1; + int j; + + for (j = i+1, t1 = t0->next; t1; t1 = t1->next, j++) + { + int count = 0; + int ii, jj; + for (ii = 0; ii < 3; ii++) + for (jj = 0; jj < 3; jj++) + if (feq (t0->p[ii].x, t1->p[jj].x) && + feq (t0->p[ii].y, t1->p[jj].y) && + feq (t0->p[ii].z, t1->p[jj].z)) + count++; + if (count >= 3) + { + fprintf (stderr, "%d %d: too many matches: %d\n", i, j, count); + abort(); + } + if (count == 2) + { + link_neighbor (i, j, t0, t1); + link_neighbor (j, i, t1, t0); + } + } + + if (! (t0->neighbors[0] && t0->neighbors[1] && t0->neighbors[2])) + { + fprintf (stderr, "%d: missing neighbors\n", i); + abort(); + } + + t0->altitude = 60; /* Fall in from space */ + } +} + + +/* Add thrust to the triangle, and propagate some of that to its neighbors. + */ +static void +add_thrust (triangle *t, GLfloat thrust) +{ + GLfloat dampen = 0; + if (t->refcount) + return; + t->refcount++; + t->velocity += thrust; + + /* Eyeballed this to look roughly the same at various depths. Eh. */ + switch (depth_arg) { + case 0: dampen = 0.5; break; + case 1: dampen = 0.7; break; + case 2: dampen = 0.9; break; + case 3: dampen = 0.98; break; + case 4: dampen = 0.985; break; + default: dampen = 0.993; break; + } + + thrust *= dampen; + if (thrust > 0.1) + { + add_thrust (t->neighbors[0], thrust); + add_thrust (t->neighbors[1], thrust); + add_thrust (t->neighbors[2], thrust); + } +} + + +static void +tick_triangles (ModeInfo *mi) +{ + splodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat gravity = 0.1; + triangle *t; + int i; + + /* Compute new velocities. */ + for (i = 0, t = bp->triangles; t; t = t->next, i++) + { + if (t->thrust > 0) + { + add_thrust (t, t->thrust); + t->thrust_duration--; + if (t->thrust_duration <= 0) + { + t->thrust_duration = 0; + t->thrust = 0; + } + } + } + + /* Apply new velocities. */ + for (i = 0, t = bp->triangles; t; t = t->next, i++) + { + t->altitude += t->velocity; + t->velocity -= gravity; + if (t->altitude < 0) + { + t->velocity = 0; + t->altitude = 0; + } + t->refcount = 0; /* Clear for next time */ + } + + /* Add eruptions. */ + if (frand(1 / speed) < 0.2) + { + int n = random() % bp->count; + for (i = 0, t = bp->triangles; t; t = t->next, i++) + if (i == n) + break; + t->thrust += gravity * 1.5; + t->thrust_duration = 1 + BELLRAND(16); + } + + bp->ccolor++; + if (bp->ccolor >= bp->ncolors) + bp->ccolor = 0; +} + + +static void +draw_triangles (ModeInfo *mi) +{ + splodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + triangle *t; + GLfloat c[4]; + int c0 = bp->ccolor; + int c1 = (c0 + bp->ncolors / 2) % bp->ncolors; + + c[0] = bp->colors[c0].red / 65536.0; + c[1] = bp->colors[c0].green / 65536.0; + c[2] = bp->colors[c0].blue / 65536.0; + c[3] = 1; + + if (wire) + glColor4fv (c); + else + { + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, c); + + c[0] = bp->colors[c1].red / 65536.0; + c[1] = bp->colors[c1].green / 65536.0; + c[2] = bp->colors[c1].blue / 65536.0; + c[3] = 1; + glMaterialfv (GL_BACK, GL_AMBIENT_AND_DIFFUSE, c); + } + + glFrontFace (GL_CCW); + for (t = bp->triangles; t; t = t->next) + { + GLfloat a = t->altitude * 0.25; + XYZ c; + glPushMatrix(); + + c.x = t->p[0].x + t->p[1].x + t->p[2].x; + c.y = t->p[0].y + t->p[1].y + t->p[2].y; + c.z = t->p[0].z + t->p[1].z + t->p[2].z; + if (a > 0) + glTranslatef (a * c.x / 3, a * c.y / 3, a * c.z / 3); + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES); + glNormal3f (c.x, c.y, c.z); + glVertex3f (t->p[0].x, t->p[0].y, t->p[0].z); + glVertex3f (t->p[1].x, t->p[1].y, t->p[1].z); + glVertex3f (t->p[2].x, t->p[2].y, t->p[2].z); + glEnd(); + mi->polygon_count++; + glPopMatrix(); + } +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_splodesic (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +splodesic_handle_event (ModeInfo *mi, XEvent *event) +{ + splodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') + { + bp->ncolors = 1024; + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_splodesic (ModeInfo *mi) +{ + splodesic_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_splodesic (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {4.0, 1.4, 1.1, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 0.2, 0.2, 1.0}; + GLfloat cspec[4] = {1, 1, 1, 1}; + static const GLfloat shiny = 10; + int lightmodel = 1; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + glLightModeliv (GL_LIGHT_MODEL_TWO_SIDE, &lightmodel); + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, cspec); + glMateriali (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + } + + { + double spin_speed = 0.5; + double wander_speed = 0.005; + double spin_accel = 1.0; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + True); + bp->trackball = gltrackball_init (True); + } + + bp->ncolors = 1024; + bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + bp->colors, &bp->ncolors, + False, 0, False); + +# ifdef HAVE_MOBILE + depth_arg--; +# endif + + if (depth_arg < 0) depth_arg = 0; + if (depth_arg > 10) depth_arg = 10; + + make_geodesic (mi); + link_neighbors (mi); +} + + +ENTRYPOINT void +draw_splodesic (ModeInfo *mi) +{ + splodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glDisable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 6, + (y - 0.5) * 6, + (z - 0.5) * 8); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + +# ifdef HAVE_MOBILE + glScalef (3, 3, 3); +#else + glScalef (4, 4, 4); +# endif + + if (! bp->button_down_p) + tick_triangles (mi); + draw_triangles (mi); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + + +ENTRYPOINT void +free_splodesic (ModeInfo *mi) +{ + splodesic_configuration *bp = &bps[MI_SCREEN(mi)]; + while (bp->triangles) + { + triangle *t = bp->triangles->next; + free (bp->triangles); + bp->triangles = t; + } +} + +XSCREENSAVER_MODULE ("Splodesic", splodesic) + +#endif /* USE_GL */ diff --git a/hacks/glx/splodesic.man b/hacks/glx/splodesic.man new file mode 100644 index 0000000..bf31e1d --- /dev/null +++ b/hacks/glx/splodesic.man @@ -0,0 +1,69 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +splodesic - k +A geodesic sphere experiences a series of eruptions. +.SH SYNOPSIS +.B splodesic +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-no-wander] +[\-no-spin] +[\-fps] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-depth \fInumber\fP] +.SH DESCRIPTION +A geodesic sphere experiences a series of eruptions. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether the object should spin. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds). +.TP 8 +.B \-speed \fInumber\fP +Frequency of eruptions. 2.0 means twice as often, 0.5 means half as often. +.TP 8 +.B \-depth \fInumber\fP +Depth (frequency) of the geodesic. 0 - 5. Default: 4. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/sproingies.c b/hacks/glx/sproingies.c new file mode 100644 index 0000000..1860b11 --- /dev/null +++ b/hacks/glx/sproingies.c @@ -0,0 +1,906 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* sproingies.c - 3D sproingies */ + +#if 0 +static const char sccsid[] = "@(#)sproingies.c 4.04 97/07/28 xlockmore"; +#endif + +/*- + * sproingies.c - Copyright 1996 by Ed Mackey, freely distributable. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * See sproingiewrap.c + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifdef STANDALONE +# include "xlockmoreI.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#if !defined(HAVE_JWZGLES) && !defined(HAVE_COCOA) +# include +#endif + +#include "gllist.h" +#include "sproingies.h" + +#define MAXSPROING 100 +#define TARGET_COUNT 40 +#define BOOM_FRAME 50 +#define NO_FRAME (-10) +#define RESET_SPROINGIE_LIFE (-30 + myrand(28)) +#define NEW_SPROINGIE_LIFE (40 + myrand(200)) +#define JUMP_LEFT 0 +#define JUMP_RIGHT 1 + +#define FIRST_FRAME 0 +#define LAST_FRAME 5 +/*- + * The sproingies have six "real" frames, (s1_1 to s1_6) that show a + * sproingie jumping off a block, headed down and to the right. + * The frames are numbered from 0 (FIRST_FRAME) to 5 (LAST_FRAME). + * + * There are other frame numbers for special cases (e.g. BOOM_FRAME). + */ + +extern const struct gllist *s1_1; +extern const struct gllist *s1_2; +extern const struct gllist *s1_3; +extern const struct gllist *s1_4; +extern const struct gllist *s1_5; +extern const struct gllist *s1_6; +extern const struct gllist *s1_b; + +static int +myrand(int range) +{ + return ((int) (((float) range) * LRAND() / (MAXRAND))); +} + +static int smart_sproingies = 0; + +static GLuint +build_TopsSides(int wireframe) +{ + GLuint dl_num; + GLfloat mat_color[4] = + {0.0, 0.0, 0.0, 1.0}; + + dl_num = glGenLists(2); + if (!dl_num) + return (0); /* 0 means out of display lists. */ + + /* Surface: Tops */ + glNewList(dl_num, GL_COMPILE); + mat_color[0] = 0.392157; + mat_color[1] = 0.784314; + mat_color[2] = 0.941176; + if (wireframe) + glColor3fv(mat_color); + else { + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat_color); + } + glEndList(); + + /* Surface: Sides */ + glNewList(dl_num + 1, GL_COMPILE); + if (wireframe) + glColor3fv(mat_color); + else { + /* jwz: in wireframe mode, color tops and sides the same. */ + mat_color[0] = 0.156863; + mat_color[1] = 0.156863; + mat_color[2] = 0.392157; + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat_color); + } + glEndList(); + return (dl_num); +} + +static void +LayGround(int sx, int sy, int sz, int width, int height, sp_instance * si) +{ + int x, y, z, w, h; + GLenum begin_polygon; + + if (si->wireframe) + begin_polygon = GL_LINE_LOOP; + else + begin_polygon = GL_POLYGON; + + if (!si->wireframe) { + if (!si->mono) + glCallList(si->TopsSides); /* Render the tops */ + glNormal3f(0.0, 1.0, 0.0); + + for (h = 0; h < height; ++h) { + x = sx + h; + y = sy - (h << 1); + z = sz + h; + for (w = 0; w < width; ++w) { + glBegin(begin_polygon); + glVertex3i(x, y, z); + glVertex3i(x, y, z - 1); + glVertex3i(x + 1, y, z - 1); + glVertex3i(x + 1, y, z); + glEnd(); + glBegin(begin_polygon); + glVertex3i(x + 1, y - 1, z); + glVertex3i(x + 1, y - 1, z - 1); + glVertex3i(x + 2, y - 1, z - 1); + glVertex3i(x + 2, y - 1, z); + glEnd(); + ++x; + --z; + } + } + } + if (!si->mono) + glCallList(si->TopsSides + 1); /* Render the sides */ + if (!si->wireframe) + glNormal3f(0.0, 0.0, 1.0); + + for (h = 0; h < height; ++h) { + x = sx + h; + y = sy - (h << 1); + z = sz + h; + for (w = 0; w < width; ++w) { + glBegin(begin_polygon); + glVertex3i(x, y, z); + glVertex3i(x + 1, y, z); + glVertex3i(x + 1, y - 1, z); + glVertex3i(x, y - 1, z); + glEnd(); + glBegin(begin_polygon); + glVertex3i(x + 1, y - 1, z); + glVertex3i(x + 2, y - 1, z); + glVertex3i(x + 2, y - 2, z); + glVertex3i(x + 1, y - 2, z); +/*- + * PURIFY 4.0.1 reports an unitialized memory read on the next line when using + * MesaGL 2.2 and -mono. This has been fixed in MesaGL 2.3 and later. */ + glEnd(); + ++x; + --z; + } + } + + /* Render the other sides */ + if (!si->wireframe) + glNormal3f(1.0, 0.0, 0.0); + + for (h = 0; h < height; ++h) { + x = sx + h; + y = sy - (h << 1); + z = sz + h; + for (w = 0; w < width; ++w) { + glBegin(begin_polygon); + glVertex3i(x + 1, y, z); + glVertex3i(x + 1, y, z - 1); + glVertex3i(x + 1, y - 1, z - 1); + glVertex3i(x + 1, y - 1, z); + glEnd(); + glBegin(begin_polygon); + glVertex3i(x + 2, y - 1, z); + glVertex3i(x + 2, y - 1, z - 1); + glVertex3i(x + 2, y - 2, z - 1); + glVertex3i(x + 2, y - 2, z); + glEnd(); + ++x; + --z; + } + } + + if (si->wireframe) { + if (!si->mono) + glCallList(si->TopsSides); /* Render the tops */ + + for (h = 0; h < height; ++h) { + x = sx + h; + y = sy - (h << 1); + z = sz + h; + for (w = 0; w < width; ++w) { + glBegin(begin_polygon); + glVertex3i(x, y, z); + glVertex3i(x, y, z - 1); + glVertex3i(x + 1, y, z - 1); + glVertex3i(x + 1, y, z); + glEnd(); + glBegin(begin_polygon); + glVertex3i(x + 1, y - 1, z); + glVertex3i(x + 1, y - 1, z - 1); + glVertex3i(x + 2, y - 1, z - 1); + glVertex3i(x + 2, y - 1, z); + glEnd(); + ++x; + --z; + } + } + } +} + +static void +AdvanceSproingie(int t, sp_instance * si) +{ + int g_higher, g_back, t2; + struct sPosColor *thisSproingie = &(si->positions[t]); + struct sPosColor *S2 = &(si->positions[0]); + + if (thisSproingie->life > 0) { + if ((++(thisSproingie->frame)) > LAST_FRAME) { + if (thisSproingie->frame >= BOOM_FRAME) { + if ((thisSproingie->r -= 0.08) < 0.0) + thisSproingie->r = 0.0; + if ((thisSproingie->g -= 0.08) < 0.0) + thisSproingie->g = 0.0; + if ((thisSproingie->b -= 0.08) < 0.0) + thisSproingie->b = 0.0; + if ((--(thisSproingie->life)) < 1) { + thisSproingie->life = RESET_SPROINGIE_LIFE; + } + return; + } + thisSproingie->frame = FIRST_FRAME; + + /* Check for collisions */ + for (t2 = 0; t2 < si->maxsproingies; ++t2) { + if ((t2 != t) && (thisSproingie->x == S2->x) && + (thisSproingie->y == S2->y) && (thisSproingie->z == S2->z) && + (S2->life > 10) && (S2->frame < LAST_FRAME + 1)) { +#if 0 + if (thisSproingie->life > S2->life) { + S2->life = 10; + } else { +#endif + if (thisSproingie->life > 10) { + thisSproingie->life = 10; + thisSproingie->frame = BOOM_FRAME; + if ((thisSproingie->r += 0.5) > 1.0) + thisSproingie->r = 1.0; + if ((thisSproingie->g += 0.5) > 1.0) + thisSproingie->g = 1.0; + if ((thisSproingie->b += 0.5) > 1.0) + thisSproingie->b = 1.0; + } +#if 0 + } +#endif + } + ++S2; + } + } + /* Time to disappear... */ + if (!((thisSproingie->life == 10) && + (thisSproingie->frame > FIRST_FRAME) && + (thisSproingie->frame < BOOM_FRAME))) { + if ((--(thisSproingie->life)) < 1) { + thisSproingie->life = RESET_SPROINGIE_LIFE; + } else if (thisSproingie->life < 9) { + thisSproingie->frame -= 2; + } + } /* ... else wait here for frame FIRST_FRAME to come about. */ + } else if (++(thisSproingie->life) >= 0) { + if (1 || t > 1) { + g_higher = -3 + myrand(5); + g_back = -2 + myrand(5); + } else if (t == 1) { + g_higher = -2 + myrand(3); + g_back = -1 + myrand(3); + } else { + g_higher = -1; + g_back = 0; + } + + thisSproingie->x = (-g_higher - g_back); + thisSproingie->y = (g_higher << 1); + thisSproingie->z = (g_back - g_higher); + thisSproingie->life = NEW_SPROINGIE_LIFE; + thisSproingie->frame = NO_FRAME; + thisSproingie->r = (GLfloat) (40 + myrand(200)) / 255.0; + thisSproingie->g = (GLfloat) (40 + myrand(200)) / 255.0; + thisSproingie->b = (GLfloat) (40 + myrand(200)) / 255.0; + + for (t2 = 0; t2 < si->maxsproingies; ++t2) { + if ((t2 != t) && (thisSproingie->x == S2->x) && + (thisSproingie->y == S2->y) && (thisSproingie->z == S2->z) && + (S2->life > 10) && (S2->frame < FIRST_FRAME)) { + /* If another is already on this place, wait. */ + thisSproingie->life = -1; + } + ++S2; + } + } +} + +static void +NextSproingie(sp_instance *si) +{ + int ddx, t; + struct sPosColor *thisSproingie = &(si->positions[0]); + + /* Although the sproingies cycle has six frames, the blocks cycle */ + /* has twelve. After a full cycle (12 frames), re-center positions */ + /* of sproingies */ + if (++si->sframe > 11) { + si->sframe = FIRST_FRAME; + for (t = 0; t < si->maxsproingies; ++t) { + thisSproingie->x -= 1; + thisSproingie->y += 2; + thisSproingie->z -= 1; + ++thisSproingie; + } + } + + for (t = 0; t < si->maxsproingies; ++t) { + AdvanceSproingie(t, si); + } + + if (si->target_count < 0) { /* track to current target */ + if (si->target_rx < si->rotx) + --si->rotx; + else if (si->target_rx > si->rotx) + ++si->rotx; + + if (si->target_ry < si->roty) + --si->roty; + else if (si->target_ry > si->roty) + ++si->roty; + + ddx = (si->target_dist - si->dist) / 8; + if (ddx) + si->dist += ddx; + else if (si->target_dist < si->dist) + --si->dist; + else if (si->target_dist > si->dist) + ++si->dist; + + if ((si->target_rx == si->rotx) && (si->target_ry == si->roty) && + (si->target_dist == si->dist)) { + si->target_count = TARGET_COUNT; + if (si->target_dist <= 32) + si->target_count >>= 2; + } + } else if (--si->target_count < 0) { /* make up new target */ + si->target_rx = myrand(100) - 35; + si->target_ry = -myrand(90); + si->target_dist = 32 << myrand(2); /* could be 32, 64, or 128, (previously or 256) */ + + if (si->target_dist >= si->dist) /* no duplicate distances */ + si->target_dist <<= 1; + } + /* Otherwise just hang loose for a while here */ +} + +#ifdef __AUXFUNCS__ +void +PrintEm(void) +{ + int t, count = 0; + + for (t = 0; t < maxsproingies; ++t) { + if (positions[t].life > 0) + ++count; + } + (void) printf("RotX: %d, RotY: %d, Dist: %d. Targets: X %d, Y %d, D %d. Visible: %d\n", + rotx, roty, dist, target_rx, target_ry, target_dist, count); +} + +void +ResetEm(void) +{ + int t; + + for (t = 0; t < maxsproingies; ++t) { + positions[t].x = 0; + positions[t].y = 0; + positions[t].z = 0; + positions[t].life = -2; + positions[t].frame = FIRST_FRAME; + } +} + +void +distAdd(void) +{ + if (dist < (1 << 16 << 4)) + dist <<= 1; +} + +void +distSubtract(void) +{ + if (dist > 1) + dist >>= 1; +} + +void +rotxAdd(void) +{ + rotx = (rotx + 5) % 360; +} + +void +rotxSubtract(void) +{ + rotx = (rotx - 5) % 360; +} + +void +rotyAdd(void) +{ + roty = (roty + 5) % 360; +} + +void +rotySubtract(void) +{ + roty = (roty - 5) % 360; +} + +void +rotxBAdd(void) +{ + rotx = (rotx + 45) % 360; +} + +void +rotxBSubtract(void) +{ + rotx = (rotx - 45) % 360; +} + +void +rotyBAdd(void) +{ + roty = (roty + 45) % 360; +} + +void +rotyBSubtract(void) +{ + roty = (roty - 45) % 360; +} + +#endif /* __AUXFUNCS__ */ + +static void +RenderSproingie(int t, sp_instance * si) +{ + GLfloat scale, pointsize, mat_color[4] = + {0.0, 0.0, 0.0, 1.0}; +#ifndef HAVE_JWZGLES + GLdouble clipplane[4] = + {0.0, 1.0, 0.0, 0.0}; +#endif + struct sPosColor *thisSproingie = &(si->positions[t]); + + if (thisSproingie->life < 1) + return; + + glPushMatrix(); + + if (!si->mono) { + mat_color[0] = thisSproingie->r; + mat_color[1] = thisSproingie->g; + mat_color[2] = thisSproingie->b; + if (si->wireframe) + glColor3fv(mat_color); + else { + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat_color); + } + } + + if (thisSproingie->frame < FIRST_FRAME) { + glEnable(GL_CLIP_PLANE0); + glTranslatef((GLfloat) (thisSproingie->x), + (GLfloat) (thisSproingie->y) + + ((GLfloat) (thisSproingie->frame) / 9.0), + (GLfloat) (thisSproingie->z)); + +#ifndef HAVE_JWZGLES + /* OpenGLES doesn't have this but it doesn't seem to matter */ + clipplane[3] = ((GLdouble) (thisSproingie->frame) / 9.0) + + (si->wireframe ? 0.0 : 0.1); + glClipPlane(GL_CLIP_PLANE0, clipplane); +#endif + +/** glCallList(si->sproingies[0]);*/ +/**/ renderList(si->sproingies[0], si->wireframe); + glDisable(GL_CLIP_PLANE0); + } else if (thisSproingie->frame >= BOOM_FRAME) { + glTranslatef((GLfloat) (thisSproingie->x) + 0.5, + (GLfloat) (thisSproingie->y) + 0.5, + (GLfloat) (thisSproingie->z) - 0.5); + { + int boom_scale = thisSproingie->frame - BOOM_FRAME; + if (boom_scale >= 31) boom_scale = 31; + scale = (GLfloat) (1 << boom_scale); + } + glScalef(scale, scale, scale); + if (!si->wireframe) { + if (!si->mono) + glColor3fv(mat_color); + glDisable(GL_LIGHTING); + } + pointsize = (GLfloat) ((BOOM_FRAME + 8) - thisSproingie->frame) - + (si->dist / 64.0); + glPointSize((pointsize < 1.0) ? 1.0 : pointsize); +/*- + * PURIFY 4.0.1 reports an unitialized memory read on the next line when using + * MesaGL 2.2. This has been tracked to MesaGL 2.2 src/points.c line 313. */ +/** glCallList(si->SproingieBoom);*/ +/**/ renderList(si->SproingieBoom, si->wireframe); + glPointSize(1.0); + if (!si->wireframe) { + glEnable(GL_LIGHTING); + } + } else { + if (thisSproingie->direction == JUMP_LEFT) { + /* When the sproingie jumps to the left, the frames must be */ + /* rotated and translated */ + glTranslatef((GLfloat) (thisSproingie->x ), + (GLfloat) (thisSproingie->y ), + (GLfloat) (thisSproingie->z - 1)); + glRotatef((GLfloat) - 90.0, 0.0, 1.0, 0.0); + if (thisSproingie->frame == LAST_FRAME) { + thisSproingie->x -= 0; + thisSproingie->y -= 1; + thisSproingie->z += 1; + } + } else { + glTranslatef((GLfloat) (thisSproingie->x), + (GLfloat) (thisSproingie->y), + (GLfloat) (thisSproingie->z)); + glRotatef((GLfloat) - 0.0, 0.0, 1.0, 0.0); + if (thisSproingie->frame == LAST_FRAME) { + thisSproingie->x += 1; + thisSproingie->y -= 1; + thisSproingie->z -= 0; + } + } +/* } */ +/** glCallList(si->sproingies[thisSproingie->frame]);*/ +/**/ renderList(si->sproingies[thisSproingie->frame], si->wireframe); + + /* Every 6 frame cycle... */ + if (thisSproingie->frame == LAST_FRAME) { + /* ...check if the sproingies have gone out of the bricks */ + if (((thisSproingie->x - thisSproingie->z == 6) && + (2*thisSproingie->x + thisSproingie->y == 6)) || + ((thisSproingie->z - thisSproingie->x == 5) && + (2*thisSproingie->x + thisSproingie->y == -5))) { + /* If they have, then they die */ + if (thisSproingie->life > 0 && thisSproingie->frame < BOOM_FRAME && thisSproingie->frame > FIRST_FRAME) { + thisSproingie->frame = BOOM_FRAME; + } + } else { + /* If not, they choose a direction for the next hop */ + if (smart_sproingies) { + if ((thisSproingie->x - thisSproingie->z == 5) && + (2*thisSproingie->x + thisSproingie->y == 5)) { + thisSproingie->direction = JUMP_LEFT; + } else if ((thisSproingie->z - thisSproingie->x == 4) && + (2*thisSproingie->x + thisSproingie->y == -4)) { + thisSproingie->direction = JUMP_RIGHT; + } else { + thisSproingie->direction = myrand(2); + } + } else { + thisSproingie->direction = myrand(2); + } + } + } + } + + glPopMatrix(); + +} + +static void +ComputeGround(sp_instance * si) +{ + int g_higher, g_back, g_width, g_height; + + /* higher: x-1, y+2, z-1 */ + /* back: x-1, y, z+1 */ + + if (si->groundlevel == 0) { + g_back = 2; + g_width = 5; + } else if (si->groundlevel == 1) { + g_back = 4; + g_width = 8; + } else { + g_back = 8; + g_width = 16; + } + + if ((g_higher = si->dist >> 3) < 4) + g_higher = 4; + if (g_higher > 16) + g_higher = 16; + g_height = g_higher << 1; + + if (si->rotx < -10) + g_higher += (g_higher >> 2); + else if (si->rotx > 10) + g_higher -= (g_higher >> 2); + +#if 0 + if (si->dist > 128) { + ++g_higher; + ++g_back; + g_back <<= 1; + } else if (si->dist > 64) { + ++g_higher; + ++g_back; + } else if (si->dist > 32) { + /* nothing special */ + } else { + if (g_higher > 2) { + g_higher = g_back = 4; + } + } +#endif + + /* startx, starty, startz, width, height */ + LayGround((-g_higher - g_back), (g_higher << 1), (g_back - g_higher), + (g_width), (g_height), si); +} + +void +DisplaySproingies(sp_instance *si) +{ + int t; + GLfloat position[] = + {8.0, 5.0, -2.0, 0.1}; + + if (si->wireframe) + glClear(GL_COLOR_BUFFER_BIT); + else + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glTranslatef(0.0, 0.0, -(GLfloat) (si->dist) / 16.0); /* viewing transform */ + glRotatef((GLfloat) si->rotx, 1.0, 0.0, 0.0); + glRotatef((GLfloat) si->roty, 0.0, 1.0, 0.0); + + if (!si->wireframe) + glLightfv(GL_LIGHT0, GL_POSITION, position); + +#if 0 /* Show light pos */ + glPushMatrix(); + glTranslatef(position[0], position[1], position[2]); + glColor3f(1.0, 1.0, 1.0); + if (!si->wireframe) { + glDisable(GL_LIGHTING); + } + glCallList(si->SproingieBoom); + if (!si->wireframe) { + glEnable(GL_LIGHTING); + } + glPopMatrix(); +#endif + + glTranslatef((GLfloat) si->sframe * (-1.0 / 12.0) - 0.75, + (GLfloat) si->sframe * (2.0 / 12.0) - 0.5, + (GLfloat) si->sframe * (-1.0 / 12.0) + 0.75); + + if (si->wireframe) + ComputeGround(si); + + for (t = 0; t < si->maxsproingies; ++t) { + RenderSproingie(t, si); + } + + if (!si->wireframe) + ComputeGround(si); + + glPopMatrix(); + glFlush(); +} + +void +NextSproingieDisplay(sp_instance *si) +{ + NextSproingie(si); +/* if (pause) usleep(pause); don't do this! -jwz */ + DisplaySproingies(si); +} + +void +ReshapeSproingies(int width, int height) +{ + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport(0, y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(65.0, 1/h, 0.1, 2000.0); /* was 200000.0 */ + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +} + +void +CleanupSproingies(sp_instance *si) +{ + if (! si) return; + +/* + int t; + if (si->SproingieBoom) { + for (t = 0; t < 6; ++t) + glDeleteLists(si->sproingies[t], 1); + + glDeleteLists(si->TopsSides, 2); + glDeleteLists(si->SproingieBoom, 1); + + si->SproingieBoom = 0; + } +*/ + if (si->TopsSides) { + glDeleteLists(si->TopsSides, 2); + } + if (si->positions) { + (void) free((void *) (si->positions)); + si->positions = NULL; + } +} + +void +InitSproingies(sp_instance *si, int wfmode, int grnd, int mspr, int smrtspr, + int mono) +{ + GLfloat ambient[] = + {0.2, 0.2, 0.2, 1.0}; + GLfloat position[] = + {10.0, 1.0, 1.0, 10.0}; + GLfloat mat_diffuse[] = + {0.6, 0.6, 0.6, 1.0}; + GLfloat mat_specular[] = + {0.8, 0.8, 0.8, 1.0}; + GLfloat mat_shininess[] = + {50.0}; + + int t; + + memset (si, 0, sizeof(*si)); + + if (mspr < 0) + mspr = 0; + if (mspr >= MAXSPROING) + mspr = MAXSPROING - 1; + + smart_sproingies = smrtspr; + + si->rotx = 0; + si->roty = -45; + si->dist = (16 << 2); + si->sframe = 0; + si->target_count = 0; + si->mono = mono; + + si->wireframe = si->flatshade = 0; + + if (wfmode == 2) + si->flatshade = 1; + else if (wfmode) + si->wireframe = 1; + + si->groundlevel = grnd; + si->maxsproingies = mspr; + + if (si->maxsproingies) { + si->positions = (struct sPosColor *) calloc(si->maxsproingies, + sizeof (struct sPosColor)); + + if (!(si->positions)) + si->maxsproingies = 0; + } + for (t = 0; t < si->maxsproingies; ++t) { + si->positions[t].x = 0; + si->positions[t].y = 0; + si->positions[t].z = 0; + si->positions[t].life = (-t * ((si->maxsproingies > 19) ? 1 : 4)) - 2; + si->positions[t].frame = FIRST_FRAME; + si->positions[t].direction = myrand(2); + } + +#if 0 /* Test boom */ + si->positions[0].x = 0; + si->positions[0].y = 0; + si->positions[0].z = 0; + si->positions[0].life = 10; + si->positions[0].frame = BOOM_FRAME; + si->positions[0].r = 0.656863; + si->positions[0].g = 1.0; + si->positions[0].b = 0.656863; +#endif + + if (!(si->TopsSides = build_TopsSides(si->wireframe))) + (void) fprintf(stderr, "build_TopsSides\n"); +/* + if (!(si->sproingies[0] = BuildLWO(si->wireframe, &LWO_s1_1))) + (void) fprintf(stderr, "BuildLWO - 1\n"); + if (!(si->sproingies[1] = BuildLWO(si->wireframe, &LWO_s1_2))) + (void) fprintf(stderr, "BuildLWO - 2\n"); + if (!(si->sproingies[2] = BuildLWO(si->wireframe, &LWO_s1_3))) + (void) fprintf(stderr, "BuildLWO - 3\n"); + if (!(si->sproingies[3] = BuildLWO(si->wireframe, &LWO_s1_4))) + (void) fprintf(stderr, "BuildLWO - 4\n"); + if (!(si->sproingies[4] = BuildLWO(si->wireframe, &LWO_s1_5))) + (void) fprintf(stderr, "BuildLWO - 5\n"); + if (!(si->sproingies[5] = BuildLWO(si->wireframe, &LWO_s1_6))) + (void) fprintf(stderr, "BuildLWO - 6\n"); + + if (!(si->SproingieBoom = BuildLWO(si->wireframe, &LWO_s1_b))) + (void) fprintf(stderr, "BuildLWO - b\n"); +*/ + si->sproingies[0]=s1_1; + si->sproingies[1]=s1_2; + si->sproingies[2]=s1_3; + si->sproingies[3]=s1_4; + si->sproingies[4]=s1_5; + si->sproingies[5]=s1_6; + si->SproingieBoom=s1_b; + + if (si->wireframe) { + glShadeModel(GL_FLAT); + glDisable(GL_LIGHTING); + } else { + if (si->flatshade) { + glShadeModel(GL_FLAT); + position[0] = 1.0; + position[3] = 0.0; + } + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glDepthFunc(GL_LEQUAL); + glEnable(GL_DEPTH_TEST); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_POSITION, position); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess); + + /* glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); */ + glCullFace(GL_BACK); + glEnable(GL_CULL_FACE); + + glFrontFace(GL_CW); + /* glEnable(GL_NORMALIZE); */ + } +} + +#endif /* USE_GL */ + +/* End of sproingies.c */ + diff --git a/hacks/glx/sproingies.h b/hacks/glx/sproingies.h new file mode 100644 index 0000000..29a79ba --- /dev/null +++ b/hacks/glx/sproingies.h @@ -0,0 +1,43 @@ +/*- + * sproingies.c - Copyright 1996 by Ed Mackey, freely distributable. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * See sproingiewrap.c + */ + +struct sPosColor { /* Position and color of the sproingie */ + int x, y, z; /* Position */ + int frame; /* Current frame (0-5) */ + int life; /* Life points */ + GLfloat r, g, b; /* Color RGB */ + int direction; /* Direction of next hop (left or right) */ +}; + +typedef struct { + int rotx, roty, dist, wireframe, flatshade, groundlevel, + maxsproingies, mono; + int sframe, target_rx, target_ry, target_dist, target_count; + const struct gllist *sproingies[6]; + const struct gllist *SproingieBoom; + GLuint TopsSides; + struct sPosColor *positions; +} sp_instance; + +extern void DisplaySproingies(sp_instance *si); +extern void NextSproingieDisplay(sp_instance *si); +extern void ReshapeSproingies(int w, int h); +extern void CleanupSproingies(sp_instance *si); +extern void InitSproingies(sp_instance *, int wfmode, int grnd, int mspr, + int smrtspr, int mono); diff --git a/hacks/glx/sproingies.man b/hacks/glx/sproingies.man new file mode 100644 index 0000000..5150fca --- /dev/null +++ b/hacks/glx/sproingies.man @@ -0,0 +1,68 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +sproingies - Q-Bert meets Marble Madness! +.SH SYNOPSIS +.B sproingies +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-count \fInumber\fP] +[\-delay \fInumber\fP] +[\-size \fInumber\fP] +[\-no\-fall] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Q-Bert meets Marble Madness! +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-count \fInumber\fP +How many sproingies to draw at once. Default: 5. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 25000 (0.03 seconds.). +.TP 8 +.B \-size \fInumber\fP +How much to scale the image down. Default 0 (full screen.) +.TP 8 +.B \-no\-fall +Make sproingies "smart", so they do not fall down the edge. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Ed Mackey. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Ed Mackey. Some additional code by Sergio Gutirrez "Sergut". diff --git a/hacks/glx/sproingiewrap.c b/hacks/glx/sproingiewrap.c new file mode 100644 index 0000000..7089f9c --- /dev/null +++ b/hacks/glx/sproingiewrap.c @@ -0,0 +1,231 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* sproingiewrap.c - sproingies wrapper */ + +#if 0 +static const char sccsid[] = "@(#)sproingiewrap.c 4.07 97/11/24 xlockmore"; +#endif + +/*- + * sproingiewrap.c - Copyright 1996 Sproingie Technologies Incorporated. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Programming: Ed Mackey, http://www.netaxs.com/~emackey/ + * Gordon Wrigley, gdw33@student.canterbury.ac.nz + * Sergio Gutirrez "Sergut", sergut@gmail.com + * Sproingie 3D objects modeled by: Al Mackey, al@iam.com + * (using MetaNURBS in NewTek's Lightwave 3D v5). + * + * Revision History: + * 01-Sep-06: Make the sproingies select a new direction after each hop + * (6 frames); if they fall towards the edge, they explode. + * (TODO: let them fall for a time before they explode or + * disappear) [sergut] + * 13-Dec-02: Changed triangle normals into vertex normals to give a smooth + * apperance and moved the sproingies from Display Lists to + * Vertex Arrays, still need to do this for the TopsSides. + * [gordon] + * 26-Apr-97: Added glPointSize() calls around explosions, plus other fixes. + * 28-Mar-97: Added size support. + * 22-Mar-97: Updated to use glX interface instead of xmesa one. + * Also, support for multiscreens added. + * 20-Mar-97: Updated for xlockmore v4.02alpha7 and higher, using + * xlockmore's built-in Mesa/OpenGL support instead of + * my own. Submitted for inclusion in xlockmore. + * 09-Dec-96: Written. + */ + +#ifdef STANDALONE +# define DEFAULTS "*delay: 30000 \n" \ + "*count: 8 \n" \ + "*size: 0 \n" \ + "*showFPS: False \n" \ + "*fpsTop: True \n" \ + "*wireframe: False \n" + +# define release_sproingies 0 +# define sproingies_handle_event 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#define DEF_SMART_SPROINGIES "True" /* Smart sproingies do not fall down the edge */ + +#include "sproingies.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +static XrmOptionDescRec opts[] = { + {"-fall", ".smartSproingies", XrmoptionNoArg, "False"}, + {"-no-fall", ".smartSproingies", XrmoptionNoArg, "True"}, +}; + +static int smrt_spr; + +static argtype vars[] = { + {&smrt_spr, "smartSproingies", "Boolean", DEF_SMART_SPROINGIES, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt sproingies_opts = +{countof(opts), opts, countof(vars), vars, NULL}; + +#ifdef USE_MODULES +ModStruct sproingies_description = +{"sproingies", "init_sproingies", "draw_sproingies", NULL, + "refresh_sproingies", "init_sproingies", "free_sproingies", &sproingies_opts, + 1000, 5, 0, 400, 4, 1.0, "", + "Shows Sproingies! Nontoxic. Safe for pets and small children", 0, NULL}; + +#endif + +#define MINSIZE 32 + +#include + +typedef struct { + GLfloat view_rotx, view_roty, view_rotz; + GLint gear1, gear2, gear3; + GLfloat angle; + GLuint limit; + GLuint count; + GLXContext *glx_context; + int mono; + Window window; + sp_instance si; +} sproingiesstruct; + +static sproingiesstruct *sproingies = NULL; + + +ENTRYPOINT void +init_sproingies (ModeInfo * mi) +{ + Window window = MI_WINDOW(mi); + int screen = MI_SCREEN(mi); + + int count = MI_COUNT(mi); + int size = MI_SIZE(mi); + + sproingiesstruct *sp; + int wfmode = 0, grnd = 0, mspr, w, h; + + MI_INIT (mi, sproingies); + sp = &sproingies[screen]; + + sp->mono = (MI_IS_MONO(mi) ? 1 : 0); + sp->window = window; + if ((sp->glx_context = init_GL(mi)) != NULL) { + + if (MI_IS_WIREFRAME(mi)) + wfmode = 1; + + if (grnd > 2) + grnd = 2; + + mspr = count; + if (mspr > 100) + mspr = 100; + + /* wireframe, ground, maxsproingies */ + InitSproingies(&sp->si, wfmode, grnd, mspr, smrt_spr, sp->mono); + + /* Viewport is specified size if size >= MINSIZE && size < screensize */ + if (size == 0) { + w = MI_WIDTH(mi); + h = MI_HEIGHT(mi); + } else if (size < MINSIZE) { + w = MINSIZE; + h = MINSIZE; + } else { + w = (size > MI_WIDTH(mi)) ? MI_WIDTH(mi) : size; + h = (size > MI_HEIGHT(mi)) ? MI_HEIGHT(mi) : size; + } + + glViewport((MI_WIDTH(mi) - w) / 2, (MI_HEIGHT(mi) - h) / 2, w, h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(65.0, (GLfloat) w / (GLfloat) h, 0.1, 2000.0); /* was 200000.0 */ + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + DisplaySproingies(&sp->si); + + } else { + MI_CLEARWINDOW(mi); + } +} + +/* ARGSUSED */ +ENTRYPOINT void +draw_sproingies (ModeInfo * mi) +{ + sproingiesstruct *sp = &sproingies[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!sp->glx_context) + return; + + glDrawBuffer(GL_BACK); + glXMakeCurrent(display, window, *(sp->glx_context)); + + glPushMatrix(); + glRotatef(current_device_rotation(), 0, 0, 1); + NextSproingieDisplay(&sp->si); /* It will swap. */ + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi)); +} + +#ifndef STANDALONE +ENTRYPOINT void +refresh_sproingies(ModeInfo * mi) +{ + /* No need to do anything here... The whole screen is updated + * every frame anyway. Otherwise this would be just like + * draw_sproingies, above, but replace NextSproingieDisplay(...) + * with DisplaySproingies(...). + */ +} +#endif /* !STANDALONE */ + +ENTRYPOINT void +reshape_sproingies (ModeInfo *mi, int w, int h) +{ + ReshapeSproingies(w, h); +} + + +ENTRYPOINT void +free_sproingies (ModeInfo * mi) +{ + sproingiesstruct *sp = &sproingies[MI_SCREEN(mi)]; + + if (sp->glx_context) { + + glXMakeCurrent(MI_DISPLAY(mi), sp->window, *(sp->glx_context)); + CleanupSproingies(&sp->si); + } +} + +XSCREENSAVER_MODULE ("Sproingies", sproingies) + +#endif /* USE_GL */ + +/* End of sproingiewrap.c */ diff --git a/hacks/glx/stairs.c b/hacks/glx/stairs.c new file mode 100644 index 0000000..7b6fbe2 --- /dev/null +++ b/hacks/glx/stairs.c @@ -0,0 +1,589 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* stairs --- Infinite Stairs, and Escher-like scene. */ + +#if 0 +static const char sccsid[] = "@(#)stairs.c 4.07 97/11/24 xlockmore"; +#endif + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * This mode shows some interesting scenes that are impossible OR very + * weird to build in the real universe. Much of the scenes are inspirated + * on Mauritz Cornelis stairs's works which derivated the mode's name. + * M.C. Escher (1898-1972) was a dutch artist and many people prefer to + * say he was a mathematician. + * + * Thanks goes to Brian Paul for making it possible and inexpensive to use + * OpenGL at home. + * + * Since I'm not a native English speaker, my apologies for any grammatical + * mistake. + * + * My e-mail address is + * m-vianna@usa.net + * + * Marcelo F. Vianna (Jun-01-1997) + * + * Revision History: + * 07-Jan-98: This would be a scene for the escher mode, but now escher mode + * was splitted in different modes for each scene. This is the + * initial release and is not working yet. + * Marcelo F. Vianna. + * + */ + +/*- + * Texture mapping is only available on RGBA contexts, Mono and color index + * visuals DO NOT support texture mapping in OpenGL. + * + * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture + * mapping shuld work on PseudoColor, DirectColor, TrueColor using Mesa. Mono + * is not officially supported for both OpenGL and Mesa, but seems to not crash + * Mesa. + * + * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know). + */ + +#ifdef STANDALONE +# define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" + +# define release_stairs 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ + +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#if 0 +#include "e_textures.h" +#else +#include "ximage-loader.h" +#include "images/gen/wood_png.h" +#endif + +#include "sphere.h" +#include "gltrackball.h" + +ENTRYPOINT ModeSpecOpt stairs_opts = +{0, NULL, 0, NULL, NULL}; + +#ifdef USE_MODULES +ModStruct stairs_description = +{"stairs", "init_stairs", "draw_stairs", NULL, + "draw_stairs", "change_stairs", "free_stairs", &stairs_opts, + 1000, 1, 1, 1, 4, 1.0, "", + "Shows Infinite Stairs, an Escher-like scene", 0, NULL}; + +#endif + +#define Scale4Window 0.3 +#define Scale4Iconic 0.4 + +#define sqr(A) ((A)*(A)) + +#ifndef Pi +#define Pi M_PI +#endif + +/*************************************************************************/ + +typedef struct { + GLint WindH, WindW; + GLfloat step; + int rotating; + int AreObjectsDefined[1]; + int sphere_position; + int sphere_tick; + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + GLuint objects; +} stairsstruct; + +static const float front_shininess[] = {60.0}; +static const float front_specular[] = {0.7, 0.7, 0.7, 1.0}; +static const float ambient[] = {0.0, 0.0, 0.0, 1.0}; +static const float diffuse[] = {1.0, 1.0, 1.0, 1.0}; +static const float position0[] = {1.0, 1.0, 1.0, 0.0}; +static const float position1[] = {-1.0, -1.0, 1.0, 0.0}; +static const float lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0}; +static const float lmodel_twoside[] = {GL_TRUE}; + +static const float MaterialYellow[] = {0.7, 0.7, 0.0, 1.0}; +static const float MaterialWhite[] = {0.7, 0.7, 0.7, 1.0}; + +static const float ball_positions[] = { + -3.0, 3.0, 1.0, + -3.0, 2.8, 2.0, + -3.0, 2.6, 3.0, + + -2.0, 2.4, 3.0, + -1.0, 2.2, 3.0, + 0.0, 2.0, 3.0, + 1.0, 1.8, 3.0, + 2.0, 1.6, 3.0, + + 2.0, 1.5, 2.0, + 2.0, 1.4, 1.0, + 2.0, 1.3, 0.0, + 2.0, 1.2, -1.0, + 2.0, 1.1, -2.0, + + 1.0, 0.9, -2.0, + 0.0, 0.7, -2.0, + -1.0, 0.5, -2.0, +}; + +#define NPOSITIONS ((sizeof ball_positions) / (sizeof ball_positions[0]) / 3) +#define SPHERE_TICKS 32 + +static stairsstruct *stairs = NULL; + +static int +draw_block(GLfloat width, GLfloat height, GLfloat thickness) +{ + int polys = 0; + glFrontFace(GL_CCW); + glBegin(GL_QUADS); + glNormal3f(0, 0, 1); + glTexCoord2f(0, 0); + glVertex3f(-width, -height, thickness); + glTexCoord2f(1, 0); + glVertex3f(width, -height, thickness); + glTexCoord2f(1, 1); + glVertex3f(width, height, thickness); + glTexCoord2f(0, 1); + glVertex3f(-width, height, thickness); + polys++; + glNormal3f(0, 0, -1); + glTexCoord2f(0, 0); + glVertex3f(-width, height, -thickness); + glTexCoord2f(1, 0); + glVertex3f(width, height, -thickness); + glTexCoord2f(1, 1); + glVertex3f(width, -height, -thickness); + glTexCoord2f(0, 1); + glVertex3f(-width, -height, -thickness); + polys++; + glNormal3f(0, 1, 0); + glTexCoord2f(0, 0); + glVertex3f(-width, height, thickness); + glTexCoord2f(1, 0); + glVertex3f(width, height, thickness); + glTexCoord2f(1, 1); + glVertex3f(width, height, -thickness); + glTexCoord2f(0, 1); + glVertex3f(-width, height, -thickness); + polys++; + glNormal3f(0, -1, 0); + glTexCoord2f(0, 0); + glVertex3f(-width, -height, -thickness); + glTexCoord2f(1, 0); + glVertex3f(width, -height, -thickness); + glTexCoord2f(1, 1); + glVertex3f(width, -height, thickness); + glTexCoord2f(0, 1); + glVertex3f(-width, -height, thickness); + polys++; + glNormal3f(1, 0, 0); + glTexCoord2f(0, 0); + glVertex3f(width, -height, thickness); + glTexCoord2f(1, 0); + glVertex3f(width, -height, -thickness); + glTexCoord2f(1, 1); + glVertex3f(width, height, -thickness); + glTexCoord2f(0, 1); + glVertex3f(width, height, thickness); + polys++; + glNormal3f(-1, 0, 0); + glTexCoord2f(0, 0); + glVertex3f(-width, height, thickness); + glTexCoord2f(1, 0); + glVertex3f(-width, height, -thickness); + glTexCoord2f(1, 1); + glVertex3f(-width, -height, -thickness); + glTexCoord2f(0, 1); + glVertex3f(-width, -height, thickness); + polys++; + glEnd(); + return polys; +} + +static void +draw_stairs_internal(ModeInfo * mi) +{ + GLfloat X; + + mi->polygon_count = 0; + + glPushMatrix(); + glPushMatrix(); + glTranslatef(-3.0, 0.1, 2.0); + for (X = 0; X < 2; X++) { + mi->polygon_count += draw_block(0.5, 2.7 + 0.1 * X, 0.5); + glTranslatef(0.0, 0.1, -1.0); + } + glPopMatrix(); + glTranslatef(-3.0, 0.0, 3.0); + glPushMatrix(); + + for (X = 0; X < 6; X++) { + mi->polygon_count += draw_block(0.5, 2.6 - 0.1 * X, 0.5); + glTranslatef(1.0, -0.1, 0.0); + } + glTranslatef(-1.0, -0.9, -1.0); + for (X = 0; X < 5; X++) { + mi->polygon_count += draw_block(0.5, 3.0 - 0.1 * X, 0.5); + glTranslatef(0.0, 0.0, -1.0); + } + glTranslatef(-1.0, -1.1, 1.0); + for (X = 0; X < 3; X++) { + mi->polygon_count += draw_block(0.5, 3.5 - 0.1 * X, 0.5); + glTranslatef(-1.0, -0.1, 0.0); + } + glPopMatrix(); + glPopMatrix(); +} + +/*#define DEBUG*/ +/*#define DEBUG_PATH*/ + +static int +draw_sphere(int pos, int tick) +{ + int pos2 = (pos+1) % NPOSITIONS; + GLfloat x1 = ball_positions[pos*3]; + GLfloat y1 = ball_positions[pos*3+1]; + GLfloat z1 = ball_positions[pos*3+2]; + GLfloat x2 = ball_positions[pos2*3]; + GLfloat y2 = ball_positions[pos2*3+1]; + GLfloat z2 = ball_positions[pos2*3+2]; + GLfloat frac = tick / (GLfloat) SPHERE_TICKS; + GLfloat x = x1 + (x2 - x1) * frac; + GLfloat y = y1 + (y2 - y1) * frac + (2 * sin (M_PI * frac)); + GLfloat z = z1 + (z2 - z1) * frac; + int polys = 0; + + glPushMatrix(); + +# ifdef DEBUG_PATH + glVertex3f(x, y, z); + if (tick == 0) { + glVertex3f(x, y-7.5, z); + glVertex3f(x, y, z); glVertex3f(x, y, z-0.6); + glVertex3f(x, y, z); glVertex3f(x, y, z+0.6); + glVertex3f(x, y, z); glVertex3f(x+0.6, y, z); + glVertex3f(x, y, z); glVertex3f(x-0.6, y, z); + glVertex3f(x, y, z); + } + +# else /* !DEBUG_PATH */ + y += 0.5; + glTranslatef(x, y, z); + + glScalef (0.5, 0.5, 0.5); + + /* make ball a little smaller on the gap to obscure distance */ + if (pos == NPOSITIONS-1) + glScalef (0.95, 0.95, 0.95); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialYellow); + glDisable (GL_TEXTURE_2D); + glShadeModel(GL_SMOOTH); + glFrontFace(GL_CCW); + polys += unit_sphere (32, 32, False); + glShadeModel(GL_FLAT); + glEnable (GL_TEXTURE_2D); +#endif /* !DEBUG_PATH */ + + glPopMatrix(); + return polys; +} + + + +ENTRYPOINT void +reshape_stairs (ModeInfo * mi, int width, int height) +{ + stairsstruct *sp = &stairs[MI_SCREEN(mi)]; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width; + y = -height/2; + } + + glViewport(0, y, sp->WindW = (GLint) width, sp->WindH = (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); + glMatrixMode(GL_MODELVIEW); + if (width >= 1024) { + glLineWidth(3); + glPointSize(3); + } else if (width >= 512) { + glLineWidth(2); + glPointSize(2); + } else { + glLineWidth(1); + glPointSize(1); + } +} + +ENTRYPOINT Bool +stairs_handle_event (ModeInfo *mi, XEvent *event) +{ + stairsstruct *sp = &stairs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, sp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &sp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') + { + gltrackball_reset (sp->trackball, 0, 0); + return True; + } + } + + return False; +} + + +static void +pinit(ModeInfo *mi) +{ + /* int status; */ + glClearDepth(1.0); + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_NORMALIZE); + glCullFace(GL_BACK); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite); + glShadeModel(GL_FLAT); + glEnable(GL_DEPTH_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_CULL_FACE); + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + +#if 0 + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, + WoodTextureWidth, WoodTextureHeight, + GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + if (status) + { + const char *s = (char *) gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, WoodTextureWidth, WoodTextureHeight, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); +#else + { + XImage *img = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + wood_png, sizeof(wood_png)); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + img->width, img->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, img->data); + check_gl_error("texture"); + XDestroyImage (img); + } +#endif + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); +} + +ENTRYPOINT void +init_stairs (ModeInfo * mi) +{ + int screen = MI_SCREEN(mi); + stairsstruct *sp; + + MI_INIT (mi, stairs); + sp = &stairs[screen]; + + sp->step = 0.0; + sp->rotating = 0; + sp->sphere_position = NRAND(NPOSITIONS); + sp->sphere_tick = 0; + + if ((sp->glx_context = init_GL(mi)) != NULL) { + + reshape_stairs(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glDrawBuffer(GL_BACK); + if (!glIsList(sp->objects)) + sp->objects = glGenLists(1); + pinit(mi); + } else { + MI_CLEARWINDOW(mi); + } + + sp->trackball = gltrackball_init (False); +} + +ENTRYPOINT void +draw_stairs (ModeInfo * mi) +{ + stairsstruct *sp = &stairs[MI_SCREEN(mi)]; + GLfloat rot = current_device_rotation(); + + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!sp->glx_context) + return; + + glXMakeCurrent(display, window, *(sp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + glRotatef(rot, 0, 0, 1); + + glTranslatef(0.0, 0.0, -10.0); + + if (!MI_IS_ICONIC(mi)) { + glScalef(Scale4Window * sp->WindH / sp->WindW, Scale4Window, Scale4Window); + } else { + glScalef(Scale4Iconic * sp->WindH / sp->WindW, Scale4Iconic, Scale4Iconic); + } + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + if (rot != 0 && rot != 180 && rot != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + gltrackball_rotate (sp->trackball); + + glTranslatef(0, 0.5, 0); + glRotatef(44.5, 1, 0, 0); + glRotatef(50, 0, 1, 0); + + if (!sp->rotating) { + if ((LRAND() % 500) == 0) + sp->rotating = (LRAND() & 1) ? 1 : -1; + } + + if (sp->rotating) { + glRotatef(sp->rotating * sp->step, 0, 1, 0); + if (sp->step >= 360) { + sp->rotating = 0; + sp->step = 0; + } + +# ifndef DEBUG + if (!sp->button_down_p) + sp->step += 2; +# endif /* DEBUG */ + } + + draw_stairs_internal(mi); + + +# ifdef DEBUG + { + int i, j; +# ifdef DEBUG_PATH + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glBegin (GL_LINE_LOOP); +# endif /* DEBUG_PATH */ + for (i = 0; i < NPOSITIONS; i ++) + for (j = 0; j < SPHERE_TICKS; j++) + mi->polygon_count += draw_sphere(i, j); +# ifdef DEBUG_PATH + glEnd(); + glEnable(GL_LIGHTING); + glEnable(GL_TEXTURE_2D); +# endif /* DEBUG_PATH */ + } +#else /* !DEBUG */ + mi->polygon_count += draw_sphere(sp->sphere_position, sp->sphere_tick); +#endif /* !DEBUG */ + + if (sp->button_down_p) + ; + else if (++sp->sphere_tick >= SPHERE_TICKS) + { + sp->sphere_tick = 0; + if (++sp->sphere_position >= NPOSITIONS) + sp->sphere_position = 0; + } + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFlush(); + + glXSwapBuffers(display, window); +} + +#ifndef STANDALONE +ENTRYPOINT void +change_stairs (ModeInfo * mi) +{ + stairsstruct *sp = &stairs[MI_SCREEN(mi)]; + + if (!sp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context)); + pinit(); +} +#endif /* !STANDALONE */ + +ENTRYPOINT void +free_stairs (ModeInfo * mi) +{ + stairsstruct *sp = &stairs[MI_SCREEN(mi)]; + if (glIsList(sp->objects)) { + glDeleteLists(sp->objects, 1); + } +} + +XSCREENSAVER_MODULE ("Stairs", stairs) + +#endif diff --git a/hacks/glx/stairs.man b/hacks/glx/stairs.man new file mode 100644 index 0000000..898f7ff --- /dev/null +++ b/hacks/glx/stairs.man @@ -0,0 +1,56 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +stairs - Escher's infinite staircase. +.SH SYNOPSIS +.B stairs +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +This draws an "infinite" staircase. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Marcelo Vianna. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Marcelo Vianna. diff --git a/hacks/glx/starwars.c b/hacks/glx/starwars.c new file mode 100644 index 0000000..1efcd15 --- /dev/null +++ b/hacks/glx/starwars.c @@ -0,0 +1,1075 @@ +/* starwars, Copyright (c) 1998-2018 Jamie Zawinski and + * Claudio Matsuoka + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Star Wars -- Phosphor meets a well-known scroller from a galaxy far, + * far away. + * + * Feb 2000 Claudio Matsuoka First version. + * Jan 2001 Jamie Zawinski Rewrote large sections to add the ability to + * run a subprocess, customization of the font + * size and other parameters, etc. + * Feb 2001 jepler@inetnebr.com Added anti-aliased lines, and fade-to-black. + * Feb 2005 Jamie Zawinski Added texture fonts. + * + * + * For the fanboys: + * + * starwars -program 'cat starwars.txt' -columns 25 -no-wrap + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include "starwars.h" +#define DEFAULTS "*delay: 40000 \n" \ + "*showFPS: False \n" \ + "*fpsTop: True \n" \ + "*usePty: False \n" \ + "*texFontCacheSize: 300\n" \ + "*font: " DEF_FONT "\n" \ + "*textLiteral: " DEF_TEXT "\n" \ + "*program: xscreensaver-text --cols 0" /* don't wrap */ + +# define release_sws 0 +# define sws_handle_event xlockmore_no_events +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "textclient.h" +#include "utf8wc.h" + +#ifdef USE_GL /* whole file */ + +/* Should be in */ +# ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT +# define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +# endif +# ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT +# define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +# endif + + +#define DEF_LINES "125" +#define DEF_STEPS "35" +#define DEF_SPIN "0.03" +#define DEF_SIZE "-1" +#define DEF_COLUMNS "-1" +#define DEF_LINE_WRAP "True" +#define DEF_ALIGNMENT "Center" +#define DEF_SMOOTH "True" +#define DEF_THICK "True" +#define DEF_FADE "True" +#define DEF_TEXTURES "True" +#define DEF_DEBUG "False" + +#define DEF_FONT "-*-utopia-bold-r-normal-*-*-360-*-*-*-*-*-*" + +#define TAB_WIDTH 8 + +#define MAX_THICK_LINES 25 +#define FONT_WEIGHT 14 + +#ifndef HAVE_MOBILE +# define KEEP_ASPECT /* Letterboxing looks dumb on iPhone. */ +#endif + +#include "texfont.h" +#include "glutstroke.h" +#include "glut_roman.h" +#define GLUT_FONT (&glutStrokeRoman) + +typedef struct { + Display *dpy; + GLXContext *glx_context; + + GLuint text_list, star_list; + texture_font_data *texfont; + text_data *tc; + + char *buf; + int buf_size; + int buf_tail; + + char **lines; + int *line_widths; + int total_lines; + + double star_theta; + double char_width; + double line_height; + double descent; + double font_scale; + double intra_line_scroll; + + int line_pixel_width; /* in font units (for wrapping text) */ + int line_pixel_height; /* in screen units (for computing line thickness) */ + GLfloat line_thickness; + +} sws_configuration; + + +static sws_configuration *scs = NULL; + +static int max_lines; +static int scroll_steps; +static float star_spin; +static float font_size; +static int target_columns; +static int wrap_p; +static int smooth_p; +static int thick_p; +static int fade_p; +static int textures_p; +static int debug_p; +static char *alignment_str; +static int alignment; + +static XrmOptionDescRec opts[] = { + {"-lines", ".lines", XrmoptionSepArg, 0 }, + {"-steps", ".steps", XrmoptionSepArg, 0 }, + {"-spin", ".spin", XrmoptionSepArg, 0 }, + {"-size", ".size", XrmoptionSepArg, 0 }, + {"-columns", ".columns", XrmoptionSepArg, 0 }, +/*{"-font", ".font", XrmoptionSepArg, 0 },*/ + {"-fade", ".fade", XrmoptionNoArg, "True" }, + {"-no-fade", ".fade", XrmoptionNoArg, "False" }, + {"-textures", ".textures", XrmoptionNoArg, "True" }, + {"-smooth", ".smooth", XrmoptionNoArg, "True" }, + {"-no-smooth", ".smooth", XrmoptionNoArg, "False" }, + {"-thick", ".thick", XrmoptionNoArg, "True" }, + {"-no-thick", ".thick", XrmoptionNoArg, "False" }, + {"-no-textures", ".textures", XrmoptionNoArg, "False" }, + {"-wrap", ".lineWrap", XrmoptionNoArg, "True" }, + {"-no-wrap", ".lineWrap", XrmoptionNoArg, "False" }, + {"-nowrap", ".lineWrap", XrmoptionNoArg, "False" }, + {"-alignment", ".alignment", XrmoptionSepArg, 0 }, + {"-left", ".alignment", XrmoptionNoArg, "Left" }, + {"-right", ".alignment", XrmoptionNoArg, "Right" }, + {"-center", ".alignment", XrmoptionNoArg, "Center" }, + {"-debug", ".debug", XrmoptionNoArg, "True" }, +}; + +static argtype vars[] = { + {&max_lines, "lines", "Integer", DEF_LINES, t_Int}, + {&scroll_steps, "steps", "Integer", DEF_STEPS, t_Int}, + {&star_spin, "spin", "Float", DEF_SPIN, t_Float}, + {&font_size, "size", "Float", DEF_SIZE, t_Float}, + {&target_columns, "columns", "Integer", DEF_COLUMNS, t_Int}, + {&wrap_p, "lineWrap", "Boolean", DEF_LINE_WRAP, t_Bool}, + {&alignment_str, "alignment", "Alignment", DEF_ALIGNMENT, t_String}, + {&smooth_p, "smooth", "Boolean", DEF_SMOOTH, t_Bool}, + {&thick_p, "thick", "Boolean", DEF_THICK, t_Bool}, + {&fade_p, "fade", "Boolean", DEF_FADE, t_Bool}, + {&textures_p, "textures", "Boolean", DEF_TEXTURES, t_Bool}, + {&debug_p, "debug", "Boolean", DEF_DEBUG, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt sws_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + +/* Tabs are bad, mmmkay? */ + +static char * +untabify (const char *string) +{ + const char *ostring = string; + char *result = (char *) malloc ((strlen(string) * 8) + 1); + char *out = result; + int col = 0; + while (*string) + { + if (*string == '\t') + { + do { + col++; + *out++ = ' '; + } while (col % TAB_WIDTH); + string++; + } + else if (*string == '\r' || *string == '\n') + { + *out++ = *string++; + col = 0; + } + else if (*string == '\010') /* backspace */ + { + if (string > ostring) + out--, string++; + } + else + { + *out++ = *string++; + col++; + } + } + *out = 0; + + return result; +} + +static void +strip (char *s, Bool leading, Bool trailing) +{ + int L = strlen(s); + if (trailing) + while (L > 0 && (s[L-1] == ' ' || s[L-1] == '\t')) + s[L--] = 0; + if (leading) + { + char *s2 = s; + while (*s2 == ' ' || *s2 == '\t') + s2++; + if (s == s2) + return; + while (*s2) + *s++ = *s2++; + *s = 0; + } +} + + +static int +sw_string_width (sws_configuration *sc, const char *s) +{ + if (textures_p) + { + XCharStruct e; + texture_string_metrics (sc->texfont, s, &e, 0, 0); + return e.width; + } + else + return glutStrokeLength (GLUT_FONT, (unsigned char *) s); +} + + +static int +sw_string_width2 (sws_configuration *sc, const char *s, size_t size) +{ + char *s2 = (char *) malloc (size + 1); + int result; + + strncpy (s2, s, size); + s2[size] = 0; + + result = sw_string_width (sc, s2); + + free (s2); + return result; +} + + +/* Populates the sc->lines list with as many lines as possible. + */ +static void +get_more_lines (sws_configuration *sc) +{ + /* wrap anyway, if it's absurdly long. */ + int wrap_pix = (wrap_p ? sc->line_pixel_width : 10000); + + char *s = sc->buf; + + int target = sc->buf_size - sc->buf_tail - 2; + + /* Fill as much as we can into sc->buf. + */ + while (target > 0) + { + int c = textclient_getc (sc->tc); + if (c <= 0) + break; + sc->buf[sc->buf_tail++] = (char) c; + sc->buf[sc->buf_tail] = 0; + target--; + } + + while (sc->total_lines < max_lines) + { + char *next_s = s; + unsigned counter = 0; + + /* OS X is really slow to calcuate the bounds for a line of text, + so skip ahead a bit. + + Really though, the right thing to do is probably to wrap + CTLineCreateTruncatedLine, one way or another. */ + for (;;) + { + if (next_s >= sc->buf + sc->buf_tail) + break; + + if (!counter) + { + if (s > sc->buf && + sw_string_width2 (sc, sc->buf, next_s - sc->buf) >= wrap_pix) + break; + + counter = 12; /* <-- Adjust to taste. */ + s = next_s; + } + + if (*next_s == '\r' || *next_s == '\n') + break; + + --counter; + ++next_s; + } + + for (;;) + { + if (s >= sc->buf + sc->buf_tail) + /* Reached end of buffer before end of line. Bail. */ + return; + + /* When checking pixel width, always measure the line from the + beginning, or else multi-byte UTF-8 characters, particularly + combining diacriticals, aren't measured right. */ + + if (*s == '\r' || *s == '\n' || + (s > sc->buf && sw_string_width2 (sc, sc->buf, s - sc->buf) >= wrap_pix)) + { + int L = s - sc->buf; + + if (*s == '\r' || *s == '\n') + { + if (*s == '\r' && s[1] == '\n') /* swallow CRLF too */ + *s++ = 0; + + *s++ = 0; + } + else + { + /* We wrapped -- try to back up to the previous word boundary. */ + char *s2 = s; + int n = 0; + while (s2 > sc->buf && *s2 != ' ' && *s2 != '\t') + s2--, n++; + if (s2 > sc->buf) + { + s = s2; + *s++ = 0; + L = s - sc->buf; + } + } + + sc->lines[sc->total_lines] = (char *) malloc (L+1); + memcpy (sc->lines[sc->total_lines], sc->buf, L); + sc->lines[sc->total_lines][L] = 0; + + if (!textures_p) + { + /* The GLUT font only has ASCII characters. */ + char *s1 = utf8_to_latin1 (sc->lines[sc->total_lines], True); + free (sc->lines[sc->total_lines]); + sc->lines[sc->total_lines] = s1; + } + + { + char *t = sc->lines[sc->total_lines]; + char *ut = untabify (t); + strip (ut, (alignment == 0), 1); /* if centering, strip + leading whitespace too */ + sc->lines[sc->total_lines] = ut; + free (t); + } + + sc->line_widths[sc->total_lines] = + sw_string_width(sc, sc->lines[sc->total_lines]); + + sc->total_lines++; + + if (sc->buf_tail > (s - sc->buf)) + { + int i = sc->buf_tail - (s - sc->buf); + memmove (sc->buf, s, i); + sc->buf_tail = i; + sc->buf[sc->buf_tail] = 0; + } + else + { + sc->buf_tail = 0; + } + + sc->buf[sc->buf_tail] = 0; + s = sc->buf; + + break; + } + else + { + s++; + } + } + } +} + + +static void +draw_string (sws_configuration *sc, GLfloat x, GLfloat y, const char *s) +{ + const char *os = s; + if (!s || !*s) return; + glPushMatrix (); + glTranslatef (x, y, 0); + + if (textures_p) + print_texture_string (sc->texfont, s); + else + while (*s) + glutStrokeCharacter (GLUT_FONT, *s++); + glPopMatrix (); + + if (debug_p) + { + GLfloat h = sc->line_height / sc->font_scale; + char **chars = utf8_split (os, 0); + int i, w = 0; + char *s2 = (char *) malloc (strlen(s) + 1); + *s2 = 0; + + if (textures_p) glDisable (GL_TEXTURE_2D); + glLineWidth (1); + + glColor3f (0.2, 0.2, 0.5); + + glBegin (GL_LINES); + + for (i = 0; chars[i]; i++) + { + glVertex3f (x + w, y - sc->descent, 0); /* char left */ + glVertex3f (x + w, y - sc->descent + h, 0); + strcat (s2, chars[i]); + w = sw_string_width (sc, s2); + free (chars[i]); + } + + glVertex3f (x + w, y - sc->descent, 0); /* char right */ + glVertex3f (x + w, y - sc->descent + h, 0); + + glVertex3f (x, y - sc->descent + h, 0); /* ascent */ + glVertex3f (x + w, y - sc->descent + h, 0); + + glVertex3f (x - sc->char_width, y, 0); /* baseline */ + glVertex3f (x + sc->char_width + w, y, 0); + + glVertex3f (x, y - sc->descent, 0); /* descent */ + glVertex3f (x + w, y - sc->descent, 0); + + glEnd(); + + free (s2); + free (chars); + + if (textures_p) glEnable (GL_TEXTURE_2D); + } +} + + +static void +grid (double width, double height, double xspacing, double yspacing, double z) +{ + double x, y; + for (y = 0; y <= height/2; y += yspacing) + { + glBegin(GL_LINES); + glVertex3f(-width/2, y, z); + glVertex3f( width/2, y, z); + glVertex3f(-width/2, -y, z); + glVertex3f( width/2, -y, z); + glEnd(); + } + for (x = 0; x <= width/2; x += xspacing) + { + glBegin(GL_LINES); + glVertex3f( x, -height/2, z); + glVertex3f( x, height/2, z); + glVertex3f(-x, -height/2, z); + glVertex3f(-x, height/2, z); + glEnd(); + } + + glBegin(GL_LINES); + glVertex3f(-width, 0, z); + glVertex3f( width, 0, z); + glVertex3f(0, -height, z); + glVertex3f(0, height, z); + glEnd(); +} + +static void +box (double width, double height, double depth) +{ + glBegin(GL_LINE_LOOP); + glVertex3f(-width/2, -height/2, -depth/2); + glVertex3f(-width/2, height/2, -depth/2); + glVertex3f( width/2, height/2, -depth/2); + glVertex3f( width/2, -height/2, -depth/2); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f(-width/2, -height/2, depth/2); + glVertex3f(-width/2, height/2, depth/2); + glVertex3f( width/2, height/2, depth/2); + glVertex3f( width/2, -height/2, depth/2); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f(-width/2, -height/2, -depth/2); + glVertex3f(-width/2, -height/2, depth/2); + glVertex3f(-width/2, height/2, depth/2); + glVertex3f(-width/2, height/2, -depth/2); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f( width/2, -height/2, -depth/2); + glVertex3f( width/2, -height/2, depth/2); + glVertex3f( width/2, height/2, depth/2); + glVertex3f( width/2, height/2, -depth/2); + glEnd(); + + glBegin(GL_LINES); + glVertex3f(-width/2, height/2, depth/2); + glVertex3f(-width/2, -height/2, -depth/2); + + glVertex3f( width/2, height/2, depth/2); + glVertex3f( width/2, -height/2, -depth/2); + + glVertex3f(-width/2, -height/2, depth/2); + glVertex3f(-width/2, height/2, -depth/2); + + glVertex3f( width/2, -height/2, depth/2); + glVertex3f( width/2, height/2, -depth/2); + glEnd(); +} + + +/* Construct stars (number of stars is dependent on size of screen) */ +static void +init_stars (ModeInfo *mi, int width, int height) +{ + sws_configuration *sc = &scs[MI_SCREEN(mi)]; + int i, j; + int size = (width > height ? width : height); + int nstars = size * size / 320; + int max_size = 3; + GLfloat inc = 0.5; + int steps = max_size / inc; + GLfloat scale = 1; + + if (MI_WIDTH(mi) > 2560) { /* Retina displays */ + scale *= 2; + nstars = (size/scale) * (size/scale) / 320; + } + + glDeleteLists (sc->star_list, 1); + sc->star_list = glGenLists (1); + glNewList (sc->star_list, GL_COMPILE); + + glEnable(GL_POINT_SMOOTH); + + for (j = 1; j <= steps; j++) + { + glPointSize(inc * j * scale); + glBegin (GL_POINTS); + for (i = 0; i < nstars / steps; i++) + { + glColor3f (0.6 + frand(0.3), + 0.6 + frand(0.3), + 0.6 + frand(0.3)); + glVertex2f (2 * size * (0.5 - frand(1.0)), + 2 * size * (0.5 - frand(1.0))); + } + glEnd (); + } + glEndList (); +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_sws (ModeInfo *mi, int width, int height) +{ + sws_configuration *sc = &scs[MI_SCREEN(mi)]; + + /* Set up matrices for perspective text display + */ + { + GLfloat desired_aspect = (GLfloat) 3/4; + int w = mi->xgwa.width; + int h = mi->xgwa.height; + int yoff = 0; + GLfloat rot = current_device_rotation(); + +#ifdef KEEP_ASPECT + { + int h2 = w * desired_aspect; + yoff = (h - h2) / 2; /* Wide window: letterbox at top and bottom. */ + if (yoff < 0) yoff = 0; /* Tall window: clip off the top. */ + h = h2; + } +#endif + + glViewport (0, yoff, w, h); + + glMatrixMode (GL_PROJECTION); + glLoadIdentity(); + + glMatrixMode (GL_MODELVIEW); + glLoadIdentity (); + gluPerspective (80.0, 1/desired_aspect, 1000, 55000); + gluLookAt (0.0, 0.0, 4600.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + /* Horrible kludge to prevent the text from materializing already + on screen on iPhone in landscape mode. + */ + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = 1.1; + glScalef (s, s, s); + } + + glRotatef (-60.0, 1.0, 0.0, 0.0); + +#if 0 + glRotatef (60.0, 1.0, 0.0, 0.0); + glTranslatef (260, 3200, 0); + glScalef (1.85, 1.85, 1); +#endif + + /* The above gives us an arena where the bottom edge of the screen is + represented by the line (-2100,-3140,0) - ( 2100,-3140,0). */ + + /* Now let's move the origin to the front of the screen. */ + glTranslatef (0.0, -3140, 0.0); + + /* And then let's scale so that the bottom of the screen is 1.0 wide. */ + glScalef (4200, 4200, 4200); + } + + + /* Compute the height in pixels of the line at the bottom of the screen. */ + { + GLdouble mm[17], pm[17]; + GLint vp[5]; + GLdouble x = 0.5, y1 = 0, z = 0; + GLdouble y2 = sc->line_height; + GLdouble wx=-1, wy1=-1, wy2=-1, wz=-1; + + glGetDoublev (GL_MODELVIEW_MATRIX, mm); + glGetDoublev (GL_PROJECTION_MATRIX, pm); + glGetIntegerv (GL_VIEWPORT, vp); + gluProject (x, y1, z, mm, pm, vp, &wx, &wy1, &wz); + gluProject (x, y2, z, mm, pm, vp, &wx, &wy2, &wz); + sc->line_pixel_height = (wy2 - wy1); + glLineWidth (1); + } + + /* Compute the best looking line thickness for the bottom line. + */ + if (!thick_p) + sc->line_thickness = 1.0; + else + sc->line_thickness = (GLfloat) sc->line_pixel_height / FONT_WEIGHT; + + if (sc->line_thickness < 1.2) + sc->line_thickness = 1.0; +} + + +static void +gl_init (ModeInfo *mi) +{ + sws_configuration *sc = &scs[MI_SCREEN(mi)]; + + glDisable (GL_LIGHTING); + glDisable (GL_DEPTH_TEST); + + if (smooth_p) + { + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_BLEND); + } + + sc->text_list = glGenLists (1); + glNewList (sc->text_list, GL_COMPILE); + glEndList (); + + sc->star_list = glGenLists (1); + glNewList (sc->star_list, GL_COMPILE); + glEndList (); + + sc->line_thickness = 1.0; +} + + +ENTRYPOINT void +init_sws (ModeInfo *mi) +{ + double font_height; + + sws_configuration *sc = 0; + + MI_INIT (mi, scs); + + sc = &scs[MI_SCREEN(mi)]; + + sc->dpy = MI_DISPLAY(mi); + sc = &scs[MI_SCREEN(mi)]; + /* Unchecked malloc. :( */ + sc->lines = (char **) calloc (max_lines+1, sizeof(char *)); + sc->line_widths = (int *) calloc (max_lines+1, sizeof(int)); + + if ((sc->glx_context = init_GL(mi)) != NULL) { + gl_init(mi); + reshape_sws (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ + + init_stars (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + if (textures_p) + { + XCharStruct e; + int cw, ascent, descent; + sc->texfont = load_texture_font (MI_DISPLAY(mi), "font"); + texture_string_metrics (sc->texfont, "n", &e, &ascent, &descent); + cw = e.width; + sc->char_width = cw; + font_height = ascent + descent; + sc->descent = descent; + glEnable(GL_ALPHA_TEST); + glEnable (GL_TEXTURE_2D); + + check_gl_error ("loading font"); + + /* "Anistropic filtering helps for quadrilateral-angled textures. + A sharper image is accomplished by interpolating and filtering + multiple samples from one or more mipmaps to better approximate + very distorted textures. This is the next level of filtering + after trilinear filtering." */ + if (smooth_p && + strstr ((char *) glGetString(GL_EXTENSIONS), + "GL_EXT_texture_filter_anisotropic")) + { + GLfloat anisotropic = 0.0; + glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &anisotropic); + if (anisotropic >= 1.0) + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, + anisotropic); + } + } + else + { + font_height = GLUT_FONT->top - GLUT_FONT->bottom; + sc->char_width = glutStrokeWidth (GLUT_FONT, 'z'); /* 'n' seems wide */ + sc->descent = 0; + } + + sc->font_scale = 1.0 / sc->char_width; + + + /* We consider a font that consumes 80 columns to be "18 points". + + If neither -size nor -columns was specified, default to 60 columns + (which is 24 points.) + + If both were specified, -columns has priority. + */ + { + int base_col = 80; + int base_size = 18; + + if (target_columns <= 0 && font_size <= 0) + target_columns = 60; + + if (target_columns > 0) + font_size = base_size * (base_col / (double) target_columns); + else if (font_size > 0) + target_columns = base_col * (base_size / (double) font_size); + } + + sc->line_pixel_width = target_columns * sc->char_width; + + sc->font_scale /= target_columns; + sc->line_height = font_height * sc->font_scale; + + /* Buffer only a few lines of text. + If the buffer is too big, there's a significant delay between + when the program launches and when the text appears, which can be + irritating for time-sensitive output (clock, current music, etc.) + + I'd like to buffer only 2 lines, but we need to assume that we + could get a whole line of N-byte Unicrud, and if we fill the buffer + before hitting the end of the line, we stall. + */ + sc->buf_size = target_columns * 2 * 4; + if (sc->buf_size < 80) sc->buf_size = 80; + sc->buf = (char *) calloc (1, sc->buf_size); + + sc->total_lines = max_lines-1; + + if (random() & 1) + star_spin = -star_spin; + + if (!alignment_str || !*alignment_str || + !strcasecmp(alignment_str, "left")) + alignment = -1; + else if (!strcasecmp(alignment_str, "center") || + !strcasecmp(alignment_str, "middle")) + alignment = 0; + else if (!strcasecmp(alignment_str, "right")) + alignment = 1; + else + { + fprintf (stderr, + "%s: alignment must be left, center, or right, not \"%s\"\n", + progname, alignment_str); + exit (1); + } + + sc->tc = textclient_open (sc->dpy); + + /* one more reshape, after line_height has been computed */ + reshape_sws (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); +} + + +static void +draw_stars (ModeInfo *mi) +{ + sws_configuration *sc = &scs[MI_SCREEN(mi)]; + + glMatrixMode (GL_PROJECTION); + glPushMatrix (); + { + glLoadIdentity (); + + glMatrixMode (GL_MODELVIEW); + glPushMatrix (); + { + glLoadIdentity (); + glOrtho (-0.5 * MI_WIDTH(mi), 0.5 * MI_WIDTH(mi), + -0.5 * MI_HEIGHT(mi), 0.5 * MI_HEIGHT(mi), + -100.0, 100.0); + glRotatef (sc->star_theta, 0.0, 0.0, 1.0); + if (textures_p) glDisable (GL_TEXTURE_2D); + + glCallList (sc->star_list); + if (textures_p) glEnable (GL_TEXTURE_2D); + } + glPopMatrix (); + } + glMatrixMode (GL_PROJECTION); + glPopMatrix (); +} + +ENTRYPOINT void +draw_sws (ModeInfo *mi) +{ + sws_configuration *sc = &scs[MI_SCREEN(mi)]; +/* XtAppContext app = XtDisplayToApplicationContext (sc->dpy);*/ + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!sc->glx_context) + return; + + glDrawBuffer (GL_BACK); + glXMakeCurrent (dpy, window, *(sc->glx_context)); + + glClear (GL_COLOR_BUFFER_BIT); + + draw_stars (mi); + + glMatrixMode (GL_MODELVIEW); + glPushMatrix (); + +# ifdef HAVE_MOBILE + /* Need to do this every time to get device rotation right */ + reshape_sws (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); +# endif + + if (debug_p) + { + int i; + glPushMatrix (); + if (textures_p) glDisable (GL_TEXTURE_2D); + glLineWidth (1); + glTranslatef (0,-1, 0); + + glColor3f(1, 0, 0); /* Red line is where text appears */ + glPushMatrix(); + glTranslatef(0, -0.028, 0); + glLineWidth (4); + glBegin(GL_LINES); + glVertex3f(-0.5, 1, 0); + glVertex3f( 0.5, 1, 0); + glVertex3f(-0.5, -1, 0); + glVertex3f( 0.5, -1, 0); + glEnd(); + glLineWidth (1); + glPopMatrix(); + + glColor3f (0.2, 0.2, 0.2); + for (i = 0; i < 16; i++) + { + box (1, 1, 1); + grid (1, 1, sc->char_width * sc->font_scale, sc->line_height, 0); + glTranslatef(0, 1, 0); + } + if (textures_p) glEnable (GL_TEXTURE_2D); + glPopMatrix (); + check_gl_error ("debug render"); + } + + /* Scroll to current position */ + glTranslatef (0.0, sc->intra_line_scroll, 0.0); + + glColor3f (1.0, 1.0, 0.4); + + mi->polygon_count = 0; + + glPushMatrix (); + glScalef (sc->font_scale, sc->font_scale, sc->font_scale); + for (i = 0; i < sc->total_lines; i++) + { + double fade = (fade_p ? 1.0 * i / sc->total_lines : 1.0); + int offscreen_lines = 2; + + double x = -0.5; + double y = ((sc->total_lines - (i + offscreen_lines) - 1) + * sc->line_height); + double xoff = 0; + char *line = sc->lines[i]; + + if (debug_p) + { + double xx = x * 1.4; /* a little more to the left */ + char n[20]; + sprintf(n, "%d:", i); + glColor3f (1.0, 1.0, 1.0); + draw_string (sc, xx / sc->font_scale, y / sc->font_scale, n); + } + + if (!line || !*line) + continue; + + if (sc->line_thickness != 1 && !textures_p) + { + int max_thick_lines = MAX_THICK_LINES; + GLfloat thinnest_line = 1.0; + GLfloat thickest_line = sc->line_thickness; + GLfloat range = thickest_line - thinnest_line; + GLfloat thickness; + + int j = sc->total_lines - i - 1; + + if (j > max_thick_lines) + thickness = thinnest_line; + else + thickness = (thinnest_line + + (range * ((max_thick_lines - j) / + (GLfloat) max_thick_lines))); + + glLineWidth (thickness); + } + + if (alignment >= 0) + { + int n = sc->line_widths[i]; + xoff = 1.0 - (n * sc->font_scale); + } + + if (alignment == 0) + xoff /= 2; + + glColor3f (fade, fade, 0.5 * fade); + draw_string (sc, (x + xoff) / sc->font_scale, y / sc->font_scale, + line); + if (textures_p) + mi->polygon_count += strlen (line); + } + glPopMatrix (); + + + + sc->intra_line_scroll += sc->line_height / scroll_steps; + + if (sc->intra_line_scroll >= sc->line_height) + { + sc->intra_line_scroll = 0; + + /* Drop the oldest line off the end. */ + if (sc->lines[0]) + free (sc->lines[0]); + + /* Scroll the contents of the lines array toward 0. */ + if (sc->total_lines > 0) + { + for (i = 1; i < sc->total_lines; i++) { + sc->lines[i-1] = sc->lines[i]; + sc->line_widths[i-1] = sc->line_widths[i]; + } + sc->lines[--sc->total_lines] = 0; + } + + /* Bring in new lines at the end. */ + get_more_lines (sc); + + if (sc->total_lines < max_lines) + /* Oops, we ran out of text... well, insert some blank lines + here so that new text still pulls in from the bottom of + the screen, isntead of just appearing. */ + sc->total_lines = max_lines; + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(dpy, window); + + sc->star_theta += star_spin; +} + +ENTRYPOINT void +free_sws (ModeInfo *mi) +{ + sws_configuration *sc = &scs[MI_SCREEN(mi)]; + if (sc->tc) + textclient_close (sc->tc); + + /* #### there's more to free here */ +} + + +#ifdef __GNUC__ + __extension__ /* don't warn about "string length is greater than the length + ISO C89 compilers are required to support" when including + "starwars.txt" in the defaults... */ +#endif + +XSCREENSAVER_MODULE_2 ("StarWars", starwars, sws) + +#endif /* USE_GL */ diff --git a/hacks/glx/starwars.h b/hacks/glx/starwars.h new file mode 100644 index 0000000..fc0a3f5 --- /dev/null +++ b/hacks/glx/starwars.h @@ -0,0 +1,363 @@ +#define DEF_TEXT \ +"Episode IV\\n" \ +"\\n" \ +"STAR WARS: A NEW HOPE\\n" \ +"\\n" \ +"It is a period of Civil War.\\n" \ +"Rebel Spaceships, striking\\n" \ +"from a hidden base, have won\\n" \ +"their first victory against\\n" \ +"the evil Galactic Empire.\\n" \ +"\\n" \ +"During the battle, Rebel\\n" \ +"spies managed to steal secret\\n" \ +"plans to the Empire's\\n" \ +"ultimate weapon, the DEATH\\n" \ +"STAR, an armored space\\n" \ +"station with enough power to\\n" \ +"destroy an entire planet.\\n" \ +"\\n" \ +"Pursued by the Empire's\\n" \ +"sinister agents, Princess\\n" \ +"Leia races home aboard her\\n" \ +"starship, custodian of the\\n" \ +"stolen plans that can save\\n" \ +"her people and restore\\n" \ +"freedom to the galaxy...\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"Episode V\\n" \ +"\\n" \ +"THE EMPIRE STRIKES BACK\\n" \ +"\\n" \ +"It is a dark time for the\\n" \ +"Rebellion. Although the Death\\n" \ +"Star has been destroyed,\\n" \ +"Imperial troops have driven the\\n" \ +"Rebel forces from their hidden\\n" \ +"base and pursued them across\\n" \ +"the galaxy.\\n" \ +"\\n" \ +"Evading the dreaded Imperial\\n" \ +"Starfleet, a group of freedom\\n" \ +"fighters led by Luke Skywalker\\n" \ +"has established a new secret\\n" \ +"base on the remote ice world\\n" \ +"of Hoth.\\n" \ +"\\n" \ +"The evil lord Darth Vader,\\n" \ +"obsessed with finding young\\n" \ +"Skywalker, has dispatched\\n" \ +"thousands of remote probes into\\n" \ +"the far reaches of space....\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"Episode VI\\n" \ +"\\n" \ +"RETURN OF THE JEDI\\n" \ +"\\n" \ +"Luke Skywalker has returned to\\n" \ +"his home planet of Tatooine in\\n" \ +"an attempt to rescue his\\n" \ +"friend Han Solo from the\\n" \ +"clutches of the vile gangster\\n" \ +"Jabba the Hutt.\\n" \ +"\\n" \ +"Little does Luke know that the\\n" \ +"GALACTIC EMPIRE has secretly\\n" \ +"begun construction on a new\\n" \ +"armored space station even\\n" \ +"more powerful than the first\\n" \ +"dreaded Death Star.\\n" \ +"\\n" \ +"When completed, this ultimate\\n" \ +"weapon will spell certain doom\\n" \ +"for the small band of rebels\\n" \ +"struggling to restore freedom\\n" \ +"to the galaxy...\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"Episode I\\n" \ +"\\n" \ +"THE PHANTOM MENACE\\n" \ +"\\n" \ +"Turmoil has engulfed the\\n" \ +"Galactic Republic. The taxation\\n" \ +"of trade routes to outlying star\\n" \ +"systems is in dispute.\\n" \ +"\\n" \ +"Hoping to resolve the matter\\n" \ +"with a blockade of deadly\\n" \ +"battleships, the greedy Trade\\n" \ +"Federation has stopped all\\n" \ +"shipping to the small planet\\n" \ +"of Naboo.\\n" \ +"\\n" \ +"While the Congress of the\\n" \ +"Republic endlessly debates\\n" \ +"this alarming chain of events,\\n" \ +"the Supreme Chancellor has\\n" \ +"secretly dispatched two Jedi\\n" \ +"Knights, the guardians of\\n" \ +"peace and justice in the\\n" \ +"galaxy to settle the conflict...\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"Episode II\\n" \ +"\\n" \ +"ATTACK OF THE CLONES\\n" \ +"\\n" \ +"There is unrest in the Galactic\\n" \ +"Senate. Several thousand solar\\n" \ +"systems have declared their\\n" \ +"intentions to leave the Republic.\\n" \ +"\\n" \ +"This separatist movement,\\n" \ +"under the leadership of the\\n" \ +"mysterious Count Dooku, has\\n" \ +"made it difficult for the limited\\n" \ +"number of Jedi Knights to\\n" \ +"maintain peace and order in the\\n" \ +"galaxy.\\n" \ +"\\n" \ +"Senator Amidala, the former\\n" \ +"Queen of Naboo, is returning\\n" \ +"to the Galactic Senate to vote\\n" \ +"on the critical issue of creating\\n" \ +"an ARMY OF THE REPUBLIC\\n" \ +"to assist the overwhelmed\\n" \ +"Jedi....\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"Episode III\\n" \ +"\\n" \ +"REVENGE OF THE SITH\\n" \ +"\\n" \ +"War! The Republic is crumbling\\n" \ +"under attacks by the ruthless\\n" \ +"Sith Lord, Count Dooku.\\n" \ +"There are heroes on both sides.\\n" \ +"Evil is everywhere.\\n" \ +"\\n" \ +"In a stunning move, the\\n" \ +"fiendish droid leader, General\\n" \ +"Grievous, has swept into the\\n" \ +"Republic capital and kidnapped\\n" \ +"Chancellor Palpatine, leader of\\n" \ +"the Galactic Senate.\\n" \ +"\\n" \ +"As the Separatist Droid Army\\n" \ +"attempts to flee th besieged\\n" \ +"capital with their valuable\\n" \ +"hostage, two Jedi Knights lead a\\n" \ +"desperate mission to rescue the\\n" \ +"captive Chancellor....\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"Episode VII\\n" \ +"THE FORCE AWAKENS\\n" \ +"Luke Skywalker has vanished.\\n" \ +"In his absence, the sinister\\n" \ +"FIRST ORDER has risen from\\n" \ +"the ashes of the Empire\\n" \ +"and will not rest until\\n" \ +"Skywalker, the last Jedi,\\n" \ +"has been destroyed.\\n" \ +"\\n" \ +"With the support of the\\n" \ +"REPUBLIC, General Leia Organa\\n" \ +"leads a brave RESISTANCE.\\n" \ +"She is desperate to find her\\n" \ +"brother Luke and gain his\\n" \ +"help in restoring peace and \\n" \ +"justice to the galaxy.\\n" \ +"\\n" \ +"Leia has sent her most daring\\n" \ +"pilot on a secret mission\\n" \ +"to Jakku, where an old ally\\n" \ +"has discovered a clue to\\n" \ +"Luke's whereabouts...\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" \ +"\\n" diff --git a/hacks/glx/starwars.man b/hacks/glx/starwars.man new file mode 100644 index 0000000..d7dc7f2 --- /dev/null +++ b/hacks/glx/starwars.man @@ -0,0 +1,181 @@ +.de EX \"Begin example +.ne 5 +.if n .sp 1 +.if t .sp .5 +.nf +.in +.5i +.. +.de EE +.fi +.in -.5i +.if n .sp 1 +.if t .sp .5 +.. +.TH XScreenSaver 1 "25-Jul-98" "X Version 11" +.SH NAME +starwars - draws a perspective text crawl, like at the beginning of the movie +.SH SYNOPSIS +.B starwars +[\-display \fIhost:display.screen\fP] [\-window] [\-root] +[\-visual \fIvisual\fP] +[\-delay \fImicroseconds\fP] +[\-program \fIcommand\fP] +[\-size \fIinteger\fP ] +[\-columns \fIinteger\fP] +[\-wrap | \-no\-wrap] +[\-left | \-center | \-right] +[\-lines \fIinteger\fP] +[\-spin \fIfloat\fP] +[\-steps \fIinteger\fP] +[\-delay \fIusecs\fP] +[\-font \fIxlfd\fP] +[\-no\-textures] +[\-no\-smooth] +[\-no\-thick] +[\-fps] +.SH DESCRIPTION +The \fIstarwars\fP program runs another program to generate a stream of +text, then animates that text receeding into the background at an angle, +in front of a star field. +.SH OPTIONS +.I starwars +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-program \fIsh-command\fP +The command to run to generate the text to display. This option may be +any string acceptable to /bin/sh. The program will be run at the end of +a pipe, and any characters that it prints to \fIstdout\fP will be printed +on the starwars window. If the program exits, it will be launched again +after we have processed all the text it produced. + +Note that starwars is \fInot\fP a terminal emulator: programs that try to +directly address the screen will not do what you might expect. This +program merely draws the characters on the screen left to right, top +to bottom, in perspective. Lines (may) wrap when they reach the right +edge. + +In other words, programs like +.BR fortune (1) +will work, but programs like +.BR top (1) +won't. + +Some examples: +.EX +starwars -program 'cat /usr/src/linux*/README' +starwars -columns 30 -program 'ping www.starwars.com' +starwars -left -no-wrap -program 'ps -auxwwf' +starwars -left -no-wrap -columns 45 -program 'top -bn1' +starwars -left -columns 40 -program 'od -txC /dev/urandom' +starwars -font fixed -program 'od -txC /dev/urandom' +.EE +.TP 8 +.B \-size \fIinteger\fP +How large a font to use, in points. (Well, in some arbitrary unit +we're calling "points" for the sake of argument.) Default: 24. +.TP 8 +.B \-columns \fIinteger\fP +How many columns of text should be visible on the bottom line of the +screen. Default: 60. + +Only one of \fI\-columns\fP and \fI\-size\fP may be specified; +if both are specified, \fI\-columns\fP takes priority. +.TP 8 +.B \-wrap +Word-wrap lines when they reach the rightmost column. This is the default. +.TP 8 +.B \-no\-wrap +Do not word-wrap: just let the lines go off the right side of the screen. +.TP 8 +.B \-left | \-center | \-right +Whether to align the text flush left, centered, or flush right. +The default is centered. +.TP 8 +.B \-lines \fIinteger\fP +How many lines should be allowed to be on the screen before they fall off +the end. The default is 125. +.TP 8 +.B \-spin \fIfloat\fP +The star field on the background slowly rotates. This is how fast. +The default is 0.03. +.TP 8 +.B \-steps \fIinteger\fP +How many steps should be used to scroll a single line. The default is 35. +If the animation looks jerky to you, increase this number. +.TP 8 +.B \-delay \fIusecs\fP +The delay between steps of the animation; default is 40000 (1/25th second.) +.TP 8 +.B \-font \fIfont-name\fP +The name of the font to use. For best effect, this should be a large +font (at least 36 points.) The bigger the font, the better looking the +characters will be. Note that the size of this font affects only the +clarity of the characters, not their size on the screen: for that, use +the \fI\-size\fP or \fI\-columns\fP options. + +Default: -*-utopia-bold-r-normal-*-*-720-*-*-*-*-iso8859-1 +.TP 8 +.B \-no\-textures +Instead of texture-mapping a real font to render the text, use a +built-in font composed of line segments. On graphics cards without +texture support, the line-segment font will have much better +performance. +.TP 8 +.B \-no\-smooth +When using the line-segment font, turn off anti-aliasing of the lines +used to draw the font. This will make the text blockier, but may +improve performance. +.TP 8 +.B \-no\-thick +When using the line-segment font, turn off use of thick lines for the +characters that are close to the foreground. This will make the text +appear unnaturally skinny, but may improve performance. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR xscreensaver (1), +.BR xscreensaver-text (1), +.BR fortune (1), +.BR phosphor (MANSUFFIX), +.BR apple2 (MANSUFFIX), +.BR fontglide (MANSUFFIX), +.BR ljlatest (MANSUFFIX), +.BR dadadodo (1), +.BR webcollage (MANSUFFIX), +.BR driftnet (1) +.BR EtherPEG , +.BR EtherPeek +.SH COPYRIGHT +Copyright \(co 1998-2005 by Jamie Zawinski and Claudio Matsuoka. +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +.SH AUTHOR +Jamie Zawinski and Claudio Matauoka diff --git a/hacks/glx/starwars.txt b/hacks/glx/starwars.txt new file mode 100644 index 0000000..0412ded --- /dev/null +++ b/hacks/glx/starwars.txt @@ -0,0 +1,415 @@ +Episode IV + +STAR WARS: A NEW HOPE + +It is a period of Civil War. +Rebel Spaceships, striking +from a hidden base, have won +their first victory against +the evil Galactic Empire. + +During the battle, Rebel +spies managed to steal secret +plans to the Empire's +ultimate weapon, the DEATH +STAR, an armored space +station with enough power to +destroy an entire planet. + +Pursued by the Empire's +sinister agents, Princess +Leia races home aboard her +starship, custodian of the +stolen plans that can save +her people and restore +freedom to the galaxy..... + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Episode V + +THE EMPIRE STRIKES BACK + +It is a dark time for the +Rebellion. Although the Death +Star has been destroyed, +Imperial troops have driven the +Rebel forces from their hidden +base and pursued them across +the galaxy. + +Evading the dreaded Imperial +Starfleet, a group of freedom +fighters led by Luke Skywalker +has established a new secret +base on the remote ice world +of Hoth. + +The evil lord Darth Vader, +obsessed with finding young +Skywalker, has dispatched +thousands of remote probes into +the far reaches of space.... + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Episode VI + +RETURN OF THE JEDI + +Luke Skywalker has returned to +his home planet of Tatooine in +an attempt to rescue his +friend Han Solo from the +clutches of the vile gangster +Jabba the Hutt. + +Little does Luke know that the +GALACTIC EMPIRE has secretly +begun construction on a new +armored space station even +more powerful than the first +dreaded Death Star. + +When completed, this ultimate +weapon will spell certain doom +for the small band of rebels +struggling to restore freedom +to the galaxy... + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Episode I + +THE PHANTOM MENACE + +Turmoil has engulfed the +Galactic Republic. The taxation +of trade routes to outlying star +systems is in dispute. + +Hoping to resolve the matter +with a blockade of deadly +battleships, the greedy Trade +Federation has stopped all +shipping to the small planet +of Naboo. + +While the Congress of the +Republic endlessly debates +this alarming chain of events, +the Supreme Chancellor has +secretly dispatched two Jedi +Knights, the guardians of +peace and justice in the +galaxy, to settle the conflict.... + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Episode II + +ATTACK OF THE CLONES + +There is unrest in the Galactic +Senate. Several thousand solar +systems have declared their +intentions to leave the Republic. + +This separatist movement, +under the leadership of the +mysterious Count Dooku, has +made it difficult for the limited +number of Jedi Knights to maintain +peace and order in the galaxy. + +Senator Amidala, the former +Queen of Naboo, is returning +to the Galactic Senate to vote +on the critical issue of creating +an ARMY OF THE REPUBLIC +to assist the overwhelmed +Jedi.... + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Episode III + +REVENGE OF THE SITH + +War! The Republic is crumbling +under attacks by the ruthless +Sith Lord, Count Dooku. +There are heroes on both sides. +Evil is everywhere. + +In a stunning move, the +fiendish droid leader, General +Grievous, has swept into the +Republic capital and kidnapped +Chancellor Palpatine, leader of +the Galactic Senate. + +As the Separatist Droid Army +attempts to flee the besieged +capital with their valuable +hostage, two Jedi Knights lead a +desperate mission to rescue the +captive Chancellor.... + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Episode VII + +THE FORCE AWAKENS + +Luke Skywalker has vanished. +In his absence, the sinister +FIRST ORDER has risen from +the ashes of the Empire +and will not rest until +Skywalker, the last Jedi, +has been destroyed. + +With the support of the +REPUBLIC, General Leia Organa +leads a brave RESISTANCE. +She is desperate to find her +brother Luke and gain his +help in restoring peace +and justice to the galaxy. + +Leia has sent her most daring +pilot on a secret mission +to Jakku, where an old ally +has discovered a clue to +Luke's whereabouts.... + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Episode VIII + +THE LAST JEDI + +The FIRST ORDER reigns. +Having decimated the peaceful +Republic, Supreme Leader Snoke +now deploys the merciless +legions to seize military +control of the galaxy. + +Only General Leia Organa's +band of RESISTANCE fighters +stand against the rising +tyranny, certain that Jedi +Master Luke Skywalker will +return and restore a spark of +hope to the fight. + +But the Resistance has been +exposed. As the First Order +speeds toward the rebel base, +the brave heroes mount a +desperate escape.... + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hacks/glx/stonerview-move.c b/hacks/glx/stonerview-move.c new file mode 100644 index 0000000..8639f10 --- /dev/null +++ b/hacks/glx/stonerview-move.c @@ -0,0 +1,147 @@ +/* StonerView: An eccentric visual toy. + Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com) + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. No representations are made about the suitability of this + software for any purpose. It is provided "as is" without express or + implied warranty. +*/ + +#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include "yarandom.h" +#include "stonerview.h" + + +void +stonerview_init_move(stonerview_state *st) +{ + /*st->theta = new_osc_linear( + new_osc_wrap(0, 36000, 25), + new_osc_constant(2000));*/ + + st->theta = new_osc_linear(st, + new_osc_velowrap(st, 0, 36000, new_osc_multiplex(st, + new_osc_randphaser(st, 300, 600), + new_osc_constant(st, 25), + new_osc_constant(st, 75), + new_osc_constant(st, 50), + new_osc_constant(st, 100)) + ), + + new_osc_multiplex(st, + new_osc_buffer(st, new_osc_randphaser(st, 300, 600)), + new_osc_buffer(st, new_osc_wrap(st, 0, 36000, 10)), + new_osc_buffer(st, new_osc_wrap(st, 0, 36000, -8)), + new_osc_wrap(st, 0, 36000, 4), + new_osc_buffer(st, new_osc_bounce(st, -2000, 2000, 20)) + ) + ); + + st->rad = new_osc_buffer(st, new_osc_multiplex(st, + new_osc_randphaser(st, 250, 500), + new_osc_bounce(st, -1000, 1000, 10), + new_osc_bounce(st, 200, 1000, -15), + new_osc_bounce(st, 400, 1000, 10), + new_osc_bounce(st, -1000, 1000, -20))); + /*st->rad = new_osc_constant(st, 1000);*/ + + st->alti = new_osc_linear(st, + new_osc_constant(st, -1000), + new_osc_constant(st, 2000 / st->num_els)); + + /*st->alti = new_osc_multiplex( + new_osc_buffer(st, new_osc_randphaser(60, 270)), + new_osc_buffer(st, new_osc_bounce(-1000, 1000, 48)), + new_osc_linear( + new_osc_constant(-1000), + new_osc_constant(2000 / st->num_els)), + new_osc_buffer(st, new_osc_bounce(-1000, 1000, 27)), + new_osc_linear( + new_osc_constant(-1000), + new_osc_constant(2000 / st->num_els)) + );*/ + + /*st->color = new_osc_buffer(st, new_osc_randphaser(5, 35));*/ + + /*st->color = new_osc_buffer(st, new_osc_multiplex( + new_osc_randphaser(25, 70), + new_osc_wrap(0, 3600, 20), + new_osc_wrap(0, 3600, 30), + new_osc_wrap(0, 3600, -20), + new_osc_wrap(0, 3600, 10)));*/ + st->color = new_osc_multiplex(st, + new_osc_buffer(st, new_osc_randphaser(st, 150, 300)), + new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 13)), + new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 32)), + new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 17)), + new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 7))); + + stonerview_move_increment(st); +} + +/* Set up the list of polygon data for rendering. */ +void +stonerview_move_increment(stonerview_state *st) +{ + int ix, val; +/* double fval; */ +/* double recipels = (1.0 / (double)st->num_els); */ + double pt[2]; + double ptrad, pttheta; + + for (ix=0; ixnum_els; ix++) { + stonerview_elem_t *el = &st->elist[ix]; + + /* Grab r and theta... */ + val = osc_get(st, st->theta, ix); + pttheta = val * (0.01 * M_PI / 180.0); + ptrad = (double)osc_get(st, st->rad, ix) * 0.001; + /* And convert them to x,y coordinates. */ + pt[0] = ptrad * cos(pttheta); + pt[1] = ptrad * sin(pttheta); + + /* Set x,y,z. */ + el->pos[0] = pt[0]; + el->pos[1] = pt[1]; + el->pos[2] = (double)osc_get(st, st->alti, ix) * 0.001; + + /* Set which way the square is rotated. This is fixed for now, although + it would be trivial to make the squares spin as they revolve. */ + el->vervec[0] = 0.11; + el->vervec[1] = 0.0; + + /* Grab the color, and convert it to RGB values. Technically, we're + converting an HSV value to RGB, where S and V are always 1. */ + val = osc_get(st, st->color, ix); + if (val < 1200) { + el->col[0] = ((double)val / 1200.0); + el->col[1] = 0; + el->col[2] = (double)(1200 - val) / 1200.0; + } + else if (val < 2400) { + el->col[0] = (double)(2400 - val) / 1200.0; + el->col[1] = ((double)(val - 1200) / 1200.0); + el->col[2] = 0; + } + else { + el->col[0] = 0; + el->col[1] = (double)(3600 - val) / 1200.0; + el->col[2] = ((double)(val - 2400) / 1200.0); + } + el->col[3] = 1.0; + } + + osc_increment(st); +} + diff --git a/hacks/glx/stonerview-move.h b/hacks/glx/stonerview-move.h new file mode 100644 index 0000000..82073e9 --- /dev/null +++ b/hacks/glx/stonerview-move.h @@ -0,0 +1,32 @@ +/* StonerView: An eccentric visual toy. + Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com) + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. No representations are made about the suitability of this + software for any purpose. It is provided "as is" without express or + implied warranty. +*/ + +#ifndef __STONERVIEW_MOVE_H__ +#define __STONERVIEW_MOVE_H__ + +typedef struct { + double pos[3]; + double vervec[2]; + double col[4]; +} stonerview_elem_t; + +extern void stonerview_init_move(stonerview_state *); +extern void stonerview_final_move(stonerview_state *); +extern void stonerview_move_increment(stonerview_state *); + + +extern stonerview_state * stonerview_init_view(int wireframe_p, + int transparent_p); +extern void stonerview_win_draw(stonerview_state *); +extern void stonerview_win_release(stonerview_state *); + +#endif /* __STONERVIEW_MOVE_H__ */ diff --git a/hacks/glx/stonerview-osc.c b/hacks/glx/stonerview-osc.c new file mode 100644 index 0000000..1b79a23 --- /dev/null +++ b/hacks/glx/stonerview-osc.c @@ -0,0 +1,341 @@ +/* StonerView: An eccentric visual toy. + Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com) + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. No representations are made about the suitability of this + software for any purpose. It is provided "as is" without express or + implied warranty. +*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include "yarandom.h" +#include "stonerview.h" + + +/* Return a random number between min and max, inclusive. */ +static int rand_range(int min, int max) +{ + int res; + unsigned int diff = (max+1) - min; + if (diff <= 1) + return min; + res = random() % diff; + return min+res; +} + + +/* Create a new, blank osc_t. The caller must fill in the type data. */ +static osc_t *create_osc(stonerview_state *st, int type) +{ + osc_t *osc = (osc_t *)malloc(sizeof(osc_t)); + if (!osc) + return NULL; + + osc->type = type; + osc->next = NULL; + + *st->osctail = osc; + st->osctail = &(osc->next); + + return osc; +} + +/* Creation functions for all the osc_t types. These are all pretty obvious + in their construction. */ + +osc_t *new_osc_constant(stonerview_state *st, int val) +{ + osc_t *osc = create_osc(st, otyp_Constant); + if (!osc) + return NULL; + + osc->u.oconstant.val = val; + return osc; +} + +osc_t *new_osc_bounce(stonerview_state *st, int min, int max, int step) +{ + int diff; + osc_t *osc = create_osc(st, otyp_Bounce); + if (!osc) + return NULL; + + osc->u.obounce.min = min; + osc->u.obounce.max = max; + osc->u.obounce.step = step; + + /* Pick a random initial value between min and max. */ + if (step < 0) + step = (-step); + diff = (max-min) / step; + osc->u.obounce.val = min + step * rand_range(0, diff-1); + + return osc; +} + +osc_t *new_osc_wrap(stonerview_state *st, int min, int max, int step) +{ + int diff; + osc_t *osc = create_osc(st, otyp_Wrap); + if (!osc) + return NULL; + + osc->u.owrap.min = min; + osc->u.owrap.max = max; + osc->u.owrap.step = step; + + /* Pick a random initial value between min and max. */ + if (step < 0) + step = (-step); + diff = (max-min) / step; + osc->u.owrap.val = min + step * rand_range(0, diff-1); + + return osc; +} + +osc_t *new_osc_velowrap(stonerview_state *st, int min, int max, osc_t *step) +{ + osc_t *osc = create_osc(st, otyp_VeloWrap); + if (!osc) + return NULL; + + osc->u.ovelowrap.min = min; + osc->u.ovelowrap.max = max; + osc->u.ovelowrap.step = step; + + /* Pick a random initial value between min and max. */ + osc->u.ovelowrap.val = rand_range(min, max); + + return osc; +} + +osc_t *new_osc_multiplex(stonerview_state *st, + osc_t *sel, osc_t *ox0, + osc_t *ox1, osc_t *ox2, + osc_t *ox3) +{ + osc_t *osc = create_osc(st, otyp_Multiplex); + if (!osc) + return NULL; + + osc->u.omultiplex.sel = sel; + osc->u.omultiplex.val[0] = ox0; + osc->u.omultiplex.val[1] = ox1; + osc->u.omultiplex.val[2] = ox2; + osc->u.omultiplex.val[3] = ox3; + + return osc; +} + +osc_t *new_osc_phaser(stonerview_state *st, int phaselen) +{ + osc_t *osc = create_osc(st, otyp_Phaser); + if (!osc) + return NULL; + + osc->u.ophaser.phaselen = phaselen; + + osc->u.ophaser.count = 0; + /* Pick a random phase to start in. */ + osc->u.ophaser.curphase = rand_range(0, NUM_PHASES-1); + + return osc; +} + +osc_t *new_osc_randphaser(stonerview_state *st, + int minphaselen, int maxphaselen) +{ + osc_t *osc = create_osc(st, otyp_RandPhaser); + if (!osc) + return NULL; + + osc->u.orandphaser.minphaselen = minphaselen; + osc->u.orandphaser.maxphaselen = maxphaselen; + + osc->u.orandphaser.count = 0; + /* Pick a random phaselen to start with. */ + osc->u.orandphaser.curphaselen = rand_range(minphaselen, maxphaselen); + /* Pick a random phase to start in. */ + osc->u.orandphaser.curphase = rand_range(0, NUM_PHASES-1); + + return osc; +} + +osc_t *new_osc_linear(stonerview_state *st, osc_t *base, osc_t *diff) +{ + osc_t *osc = create_osc(st, otyp_Linear); + if (!osc) + return NULL; + + osc->u.olinear.base = base; + osc->u.olinear.diff = diff; + + return osc; +} + +osc_t *new_osc_buffer(stonerview_state *st, osc_t *val) +{ + int ix; + osc_t *osc = create_osc(st, otyp_Buffer); + if (!osc) + return NULL; + + osc->u.obuffer.val = val; + osc->u.obuffer.firstel = st->num_els-1; + + /* The last N values are stored in a ring buffer, which we must initialize + here. */ + for (ix=0; ixnum_els; ix++) { + osc->u.obuffer.el[ix] = osc_get(st, val, 0); + } + + return osc; +} + +/* Compute f(i,el) for the current i. */ +int osc_get(stonerview_state *st, osc_t *osc, int el) +{ + if (!osc) + return 0; + + switch (osc->type) { + + case otyp_Constant: + return osc->u.oconstant.val; + + case otyp_Bounce: + return osc->u.obounce.val; + + case otyp_Wrap: + return osc->u.owrap.val; + + case otyp_VeloWrap: + return osc->u.ovelowrap.val; + + case otyp_Linear: + return osc_get(st, osc->u.olinear.base, el) + + el * osc_get(st, osc->u.olinear.diff, el); + + case otyp_Multiplex: { + struct omultiplex_struct *ox = &(osc->u.omultiplex); + int sel = osc_get(st, ox->sel, el); + return osc_get(st, ox->val[sel % NUM_PHASES], el); + } + + case otyp_Phaser: { + struct ophaser_struct *ox = &(osc->u.ophaser); + return ox->curphase; + } + + case otyp_RandPhaser: { + struct orandphaser_struct *ox = &(osc->u.orandphaser); + return ox->curphase; + } + + case otyp_Buffer: { + struct obuffer_struct *ox = &(osc->u.obuffer); + return ox->el[(ox->firstel + el) % st->num_els]; + } + + default: + return 0; + } +} + +/* Increment i. This affects all osc_t objects; we go down the linked list to + get them all. */ +void osc_increment(stonerview_state *st) +{ + osc_t *osc; + + for (osc = st->oscroot; osc; osc = osc->next) { + switch (osc->type) { + + case otyp_Bounce: { + struct obounce_struct *ox = &(osc->u.obounce); + ox->val += ox->step; + if (ox->val < ox->min && ox->step < 0) { + ox->step = -(ox->step); + ox->val = ox->min + (ox->min - ox->val); + } + if (ox->val > ox->max && ox->step > 0) { + ox->step = -(ox->step); + ox->val = ox->max + (ox->max - ox->val); + } + break; + } + + case otyp_Wrap: { + struct owrap_struct *ox = &(osc->u.owrap); + ox->val += ox->step; + if (ox->val < ox->min && ox->step < 0) { + ox->val += (ox->max - ox->min); + } + if (ox->val > ox->max && ox->step > 0) { + ox->val -= (ox->max - ox->min); + } + break; + } + + case otyp_VeloWrap: { + struct ovelowrap_struct *ox = &(osc->u.ovelowrap); + int diff = (ox->max - ox->min); + ox->val += osc_get(st, ox->step, 0); + while (ox->val < ox->min) + ox->val += diff; + while (ox->val > ox->max) + ox->val -= diff; + break; + } + + case otyp_Phaser: { + struct ophaser_struct *ox = &(osc->u.ophaser); + ox->count++; + if (ox->count >= ox->phaselen) { + ox->count = 0; + ox->curphase++; + if (ox->curphase >= NUM_PHASES) + ox->curphase = 0; + } + break; + } + + case otyp_RandPhaser: { + struct orandphaser_struct *ox = &(osc->u.orandphaser); + ox->count++; + if (ox->count >= ox->curphaselen) { + ox->count = 0; + ox->curphaselen = rand_range(ox->minphaselen, ox->maxphaselen); + ox->curphase++; + if (ox->curphase >= NUM_PHASES) + ox->curphase = 0; + } + break; + } + + case otyp_Buffer: { + struct obuffer_struct *ox = &(osc->u.obuffer); + ox->firstel--; + if (ox->firstel < 0) + ox->firstel += st->num_els; + ox->el[ox->firstel] = osc_get(st, ox->val, 0); + /* We can assume that ox->val has already been incremented, since it + was created first. This is why new objects are put on the end + of the linked list... yeah, it's gross. */ + break; + } + + default: + break; + } + } +} diff --git a/hacks/glx/stonerview-osc.h b/hacks/glx/stonerview-osc.h new file mode 100644 index 0000000..b8c0778 --- /dev/null +++ b/hacks/glx/stonerview-osc.h @@ -0,0 +1,175 @@ +/* StonerView: An eccentric visual toy. + Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com) + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. No representations are made about the suitability of this + software for any purpose. It is provided "as is" without express or + implied warranty. +*/ + +#ifndef __STONERVIEW_OSC_H__ +#define __STONERVIEW_OSC_H__ + +/* This defines the osc_t object, which generates a stream of + numbers. It is the heart of the StonerSound/StonerView engine. + + The idea is simple; an osc_t represents some function f(), which + can be evaluated to generate an infinite stream of integers (f(0), + f(1), f(2), f(3)...). Some of these functions are defined in + terms of other osc_t functions: f(i) = g(h(i)) or some such thing. + + To simplify the code, we don't try to calculate f(i) for any + arbitrary i. Instead, we start with i=0. Calling osc_get(f) + returns f(0) for all osc_t's in the system. When we're ready, we + call osc_increment(), which advances every osc_t to i=1; + thereafter, calling osc_get(f) returns f(1). When you call + osc_increment() again, you get f(2). And so on. You can't go + backwards, or move forwards more than 1 at a time, or move some + osc_t's without moving others. This is a very restricted model, but + it's exactly what's needed for this system. + + Now, there's an additional complication. To get the rippling + effect, we don't pull out single values, but *sets* of N elements + at a time. (N is defined by NUM_ELS below.) So f(i) is really an + ordered N-tuple (f(i,0), f(i,1), f(i,2), f(i,3), f(i,4)). And f() + generates an infinite stream of these N-tuples. The osc_get() call + really has two parameters; you call osc_get(f, n) to find the n'th + element of the current N-tuple. Remember, n must be between 0 and + n-1. + + (Do *not* try to get an infinite stream f(i) by calling + osc_get(f, i) for i ranging to infinity! Use osc_increment() to + advance to the next N-tuple in the stream.) +*/ + +#define NUM_ELS (40) /* Forty polygons at a time. */ + +#define NUM_PHASES (4) /* Some of the osc functions switch between P + alternatives. We arbitrarily choose P=4. */ + +/* Here are the functions which are available. + Constant: f(i,n) = k. Always the same value. Very simple. + Wrap: f(i,n) slides up or down as i increases. There's a minimum and maximum + value, and a step. When the current value reaches the min or max, it jumps + to the other end and keeps moving the same direction. + Bounce: f(i,n) slides up and down as i increases. There's a minimum and + maximum value, and a step. When the current value reaches the min or max, + the step is flipped to move the other way. + Phaser: f(i,n) = floor(i / phaselen) modulo 4. That is, it generates + phaselen 0 values, and then phaselen 1 values, then phaselen 2 values, + then phaselen 3 values, then back to 0. (Phaselen is a parameter you + supply when you create the phaser.) As you see, this is much the same as + the Wrap function, with a minimum of 0, a maximum of 3, and a step of + 1/phaselen. But since this code uses integer math, fractional steps + aren't possible; it's easier to write a separate function. + RandPhaser: The same as Phaser, but the phaselen isn't fixed. It varies + randomly between a minimum and maximum value you supply. + Multiplex: There are five subsidiary functions within a multiplex function: + g0, g1, g2, g3, and a selector function s. Then: + f(i,n) = gX(i,n), where X = s(i,n). (Obviously s must generate only values + in the range 0 to 3. This is what the phaser functions are designed for, + but you can use anything.) + Linear: There are two subsidiary functions within this, a and b. Then: + f(i,n) = a(i,n) + n*b(i,n). This is an easy way to make an N-tuple that + forms a linear sequence, such as (41, 43, 45, 47, 49). + Buffer: This takes a subsidiary function g, and computes: + f(i,n) = g(i-n,0). That is, the 0th element of the N-tuple is the + *current* value of g; the 1st element is the *previous* value of g; the + 2nd element is the second-to-last value, and so on back in time. This + is a weird idea, but it causes exactly the rippling-change effect that + we want. + + Note that Buffer only looks up g(i,0) -- it only uses the 0th elements of + the N-tuples that g generates. This saves time and memory, but it means + that certain things don't work. For example, if you try to build + Buffer(Linear(A,B)), B will have no effect, because Linear computes + a(i,n) + n*b(i,n), and inside the Buffer, n is always zero. On the other + hand, Linear(Buffer(A),Buffer(B)) works fine, and is probably what you + wanted anyway. + Similarly, Buffer(Buffer(A)) is the same as Buffer(A). Proof left as an + exercise. +*/ + +#define otyp_Constant (1) +#define otyp_Bounce (2) +#define otyp_Wrap (3) +#define otyp_Phaser (4) +#define otyp_RandPhaser (5) +#define otyp_VeloWrap (7) +#define otyp_Linear (6) +#define otyp_Buffer (8) +#define otyp_Multiplex (9) + +/* The osc_t structure itself. */ +typedef struct osc_struct { + int type; /* An otyp_* constant. */ + + struct osc_struct *next; /* osc.c uses this to maintain a private linked list + of all osc_t objects created. */ + + /* Union of the data used by all the possible osc_t functions. */ + union { + struct { + int val; + } oconstant; + struct owrap_struct { + int min, max, step; + int val; + } owrap; + struct obounce_struct { + int min, max, step; + int val; + } obounce; + struct omultiplex_struct { + struct osc_struct *sel; + struct osc_struct *val[NUM_PHASES]; + } omultiplex; + struct ophaser_struct { + int phaselen; + int count; + int curphase; + } ophaser; + struct orandphaser_struct { + int minphaselen, maxphaselen; + int count; + int curphaselen; + int curphase; + } orandphaser; + struct ovelowrap_struct { + int min, max; + struct osc_struct *step; + int val; + } ovelowrap; + struct olinear_struct { + struct osc_struct *base; + struct osc_struct *diff; + } olinear; + struct obuffer_struct { + struct osc_struct *val; + int firstel; + int el[NUM_ELS]; + } obuffer; + } u; +} osc_t; + +extern osc_t *new_osc_constant(stonerview_state *, int val); +extern osc_t *new_osc_bounce(stonerview_state *, int min, int max, int step); +extern osc_t *new_osc_wrap(stonerview_state *, int min, int max, int step); +extern osc_t *new_osc_phaser(stonerview_state *, int phaselen); +extern osc_t *new_osc_randphaser(stonerview_state *, + int minphaselen, int maxphaselen); +extern osc_t *new_osc_velowrap(stonerview_state *, + int min, int max, osc_t *step); +extern osc_t *new_osc_linear(stonerview_state *, osc_t *base, osc_t *diff); +extern osc_t *new_osc_buffer(stonerview_state *st, osc_t *val); +extern osc_t *new_osc_multiplex(stonerview_state *, + osc_t *sel, osc_t *ox0, osc_t *ox1, + osc_t *ox2, osc_t *ox3); + +extern int osc_get(stonerview_state *, osc_t *osc, int el); +extern void osc_increment(stonerview_state *); + +#endif /* __STONERVIEW_OSC_H__ */ diff --git a/hacks/glx/stonerview-view.c b/hacks/glx/stonerview-view.c new file mode 100644 index 0000000..baf40e4 --- /dev/null +++ b/hacks/glx/stonerview-view.c @@ -0,0 +1,134 @@ +/* StonerView: An eccentric visual toy. + Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com) + http://www.eblong.com/zarf/stonerview.html + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. No representations are made about the suitability of this + software for any purpose. It is provided "as is" without express or + implied warranty. +*/ + +/* Ported away from GLUT (so that it can do `-root' and work with xscreensaver) + by Jamie Zawinski , 22-Jan-2001. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_COCOA +# include "jwxyz.h" +#elif defined(HAVE_ANDROID) +# include +#else /* real Xlib */ +# include +# include +#endif /* !HAVE_COCOA */ + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include +#include "stonerview.h" + +static GLfloat view_rotx = -45.0, view_roty = 0.0, view_rotz = 15.0; +static GLfloat view_scale = 4.0; + + +stonerview_state * +stonerview_init_view(int wireframe_p, int transparent_p) +{ + stonerview_state *st = (stonerview_state *) calloc (1, sizeof(*st)); + + st->wireframe = wireframe_p; + st->transparent = transparent_p; + st->num_els = NUM_ELS; + st->elist = (stonerview_elem_t *) calloc (st->num_els, sizeof(*st->elist)); + + st->osctail = &st->oscroot; + + /* for trackball, two-sided lighting and no face culling */ + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); + + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + + glEnable(GL_NORMALIZE); + + glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); + glEnable(GL_LINE_SMOOTH); + glEnable(GL_BLEND); + + if (st->transparent) + glBlendFunc(GL_SRC_ALPHA,GL_ONE); + + return st; +} + +/* callback: draw everything */ +void +stonerview_win_draw(stonerview_state *st) +{ + int ix; + static const GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat gray[] = { 0.6, 0.6, 0.6, 1.0 }; + + glDrawBuffer(GL_BACK); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glScalef(view_scale, view_scale, view_scale); + glRotatef(view_rotx, 1.0, 0.0, 0.0); + glRotatef(view_roty, 0.0, 1.0, 0.0); + glRotatef(view_rotz, 0.0, 0.0, 1.0); + + glShadeModel(GL_FLAT); + + for (ix=0; ix < st->num_els; ix++) { + stonerview_elem_t *el = &st->elist[ix]; + + glNormal3f(0.0, 0.0, 1.0); + + /* outline the square */ + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, (st->wireframe ? white : gray)); + glBegin(GL_LINE_LOOP); + glVertex3f(el->pos[0]-el->vervec[0], el->pos[1]-el->vervec[1], el->pos[2]); + glVertex3f(el->pos[0]+el->vervec[1], el->pos[1]-el->vervec[0], el->pos[2]); + glVertex3f(el->pos[0]+el->vervec[0], el->pos[1]+el->vervec[1], el->pos[2]); + glVertex3f(el->pos[0]-el->vervec[1], el->pos[1]+el->vervec[0], el->pos[2]); + glEnd(); + + if (st->wireframe) continue; + + /* fill the square */ + { + GLfloat col[4]; + col[0] = el->col[0]; col[1] = el->col[1]; + col[2] = el->col[2]; col[3] = el->col[3]; + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col); + } + glBegin(GL_QUADS); + glVertex3f(el->pos[0]-el->vervec[0], el->pos[1]-el->vervec[1], el->pos[2]); + glVertex3f(el->pos[0]+el->vervec[1], el->pos[1]-el->vervec[0], el->pos[2]); + glVertex3f(el->pos[0]+el->vervec[0], el->pos[1]+el->vervec[1], el->pos[2]); + glVertex3f(el->pos[0]-el->vervec[1], el->pos[1]+el->vervec[0], el->pos[2]); + glEnd(); + } + + glPopMatrix(); +} + +void +stonerview_win_release(stonerview_state *st) +{ + free (st->elist); + /*free (st->oscroot); -- #### how do we free this? */ + free (st); +} diff --git a/hacks/glx/stonerview.c b/hacks/glx/stonerview.c new file mode 100644 index 0000000..880ef01 --- /dev/null +++ b/hacks/glx/stonerview.c @@ -0,0 +1,154 @@ +/* StonerView: An eccentric visual toy. + Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com) + + For the latest version, source code, and links to more of my stuff, see: + http://www.eblong.com/zarf/stonerview.html + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. No representations are made about the suitability of this + software for any purpose. It is provided "as is" without express or + implied warranty. +*/ + +/* Ported away from GLUT (so that it can do `-root' and work with xscreensaver) + by Jamie Zawinski , 22-Jan-2001. + + Revamped to work in the xlockmore framework so that it will also work + with the MacOS X port of xscreensaver by jwz, 21-Feb-2006. + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" + +# define release_stonerview 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" + +#ifdef USE_GL /* whole file */ + +#include "stonerview.h" +#include "gltrackball.h" + +#define DEF_TRANSPARENT "True" + +typedef struct { + GLXContext *glx_context; + stonerview_state *st; + trackball_state *trackball; + Bool button_down_p; +} stonerview_configuration; + +static stonerview_configuration *bps = NULL; + +static Bool transparent_p; + + +static XrmOptionDescRec opts[] = { + { "-transparent", ".transparent", XrmoptionNoArg, "True" }, + { "+transparent", ".transparent", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&transparent_p, "transparent", "Transparent", DEF_TRANSPARENT, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt stonerview_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +ENTRYPOINT void +reshape_stonerview (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport(0, 0, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40.0); +} + + +ENTRYPOINT void +init_stonerview (ModeInfo *mi) +{ + stonerview_configuration *bp; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + bp->trackball = gltrackball_init (False); + bp->st = stonerview_init_view(MI_IS_WIREFRAME(mi), transparent_p); + stonerview_init_move(bp->st); + + reshape_stonerview (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ +} + + +ENTRYPOINT void +draw_stonerview (ModeInfo *mi) +{ + stonerview_configuration *bp = &bps[MI_SCREEN(mi)]; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glPushMatrix (); + glRotatef( current_device_rotation(), 0, 0, 1); + gltrackball_rotate (bp->trackball); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (h, h, h); + } +# endif + + stonerview_win_draw(bp->st); + if (! bp->button_down_p) + stonerview_move_increment(bp->st); + glPopMatrix (); + + mi->polygon_count = NUM_ELS; + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(MI_DISPLAY (mi), MI_WINDOW(mi)); +} + +ENTRYPOINT void +free_stonerview (ModeInfo *mi) +{ + stonerview_configuration *bp = &bps[MI_SCREEN(mi)]; + if (bp->st) + stonerview_win_release (bp->st); +} + +ENTRYPOINT Bool +stonerview_handle_event (ModeInfo *mi, XEvent *event) +{ + stonerview_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + + return False; +} + +XSCREENSAVER_MODULE ("StonerView", stonerview) + +#endif /* USE_GL */ diff --git a/hacks/glx/stonerview.h b/hacks/glx/stonerview.h new file mode 100644 index 0000000..0afd7a6 --- /dev/null +++ b/hacks/glx/stonerview.h @@ -0,0 +1,59 @@ +/* StonerView: An eccentric visual toy. + Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com) + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. No representations are made about the suitability of this + software for any purpose. It is provided "as is" without express or + implied warranty. +*/ + +#ifndef __STONERVIEW_H__ +# define __STONERVIEW_H__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +typedef struct stonerview_state stonerview_state; + +#include "stonerview-osc.h" +#include "stonerview-move.h" + +struct stonerview_state { + + int wireframe; + int transparent; + + /* The list of polygons. This is filled in by move_increment(), and rendered + by perform_render(). */ + int num_els; + stonerview_elem_t *elist; + + /* A linked list of all osc_t objects created. New objects are added + to the end of the list, not the beginning. */ + osc_t *oscroot; + osc_t **osctail; + + /* The polygons are controlled by four parameters. Each is represented by + an osc_t object, which is just something that returns a stream of numbers. + (Originally the name stood for "oscillator", but it does ever so much more + now... see osc.c.) + Imagine a cylinder with a vertical axis (along the Z axis), stretching + from Z=1 to Z=-1, and a radius of 1. + */ + osc_t *theta; /* Angle around the axis. This is expressed in + hundredths of a degree, so it's actually 0 to 36000. */ + osc_t *rad; /* Distance from the axis. This goes up to 1000, + but we actually allow negative distances -- that just + goes to the opposite side of the circle -- so the range + is really -1000 to 1000. */ + osc_t *alti; /* Height (Z position). This goes from -1000 to 1000. */ + osc_t *color; /* Consider this to be an angle of a circle going + around the color wheel. It's in tenths of a degree + (consistency is all I ask) so it ranges from 0 to 3600. */ +}; + +#endif /* __STONERVIEW_H__ */ diff --git a/hacks/glx/stonerview.man b/hacks/glx/stonerview.man new file mode 100644 index 0000000..820e9af --- /dev/null +++ b/hacks/glx/stonerview.man @@ -0,0 +1,53 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +stonerview - 3D undulating ribbons of squares. +.SH SYNOPSIS +.B stonerview +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Chains of colorful squares dance around each other in complex spiral +patterns. This is a clone of the SGI "electropaint" screen saver. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Andrew Plotkin. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Andrew Plotkin. diff --git a/hacks/glx/superquadrics.c b/hacks/glx/superquadrics.c new file mode 100644 index 0000000..3c08335 --- /dev/null +++ b/hacks/glx/superquadrics.c @@ -0,0 +1,807 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* superquadrics --- 3D mathematical shapes */ + +#if 0 +static const char sccsid[] = "@(#)superquadrics.c 4.07 97/11/24 xlockmore"; +#endif + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Superquadrics were invented by Dr. Alan Barr of Caltech University. + * They were first published in "Computer Graphics and Applications", + * volume 1, number 1, 1981, in the article "Superquadrics and Angle- + * Preserving Transformations." Dr. Barr based the Superquadrics on + * Piet Hein's "super ellipses." Super ellipses are like 2D ellipses, + * except that the formula includes an exponent, raising its X and Y + * values to a (fractional) power, and allowing them to gradually + * change from round to square edges. Superquadrics extend this + * idea into 3 dimensions, using two exponents to modify a + * quadric surface in a similar fashion. + * + * Revision History: + * 30-Mar-97: Turned into a module for xlockmore 4.02 alpha. The code + * is almost unrecognizable now from the first revision, except for + * a few remaining two-letter variable names. I still don't have + * the normal vectors working right (I wrote the buggy normal vector + * code myself, can you tell?) + * 07-Jan-97: A legend reborn; Superquadrics make an appearance as a + * real OpenGL program written in C. I can even render them with + * proper lighting and specular highlights. Gee, they look almost + * as good now as the original color plates of them that my uncle + * showed me as a child in 1981. I don't know what computer hardware + * he was using at the time, but it's taken a couple decades for the + * PC clone hardware to catch up to it. + * 05-Jan-97: After almost a decade, Superquadrics had almost faded away + * into the myths and folklore of all the things my brother and I played + * with on computers when we were kids with too much time on our hands. + * I had since gotten involved in Unix, OpenGL, and other things. + * A sudden flash of inspiration caused me to dig out the old Pascal + * source code, run it through p2c, and start ripping away the old + * wireframe rendering code, to be replaced by OpenGL. + * Late 1989 or early 1990: Around this time I did the Turbo Pascal + * port of the Superquadrics. Unfortunately, many of the original variable + * names remained the same from the C= 64 original. This was unfortunate + * because BASIC on the c64 only allowed 2-letter, global variable names. + * But the speed improvement over BASIC was very impressive at the time. + * Thanksgiving, 1987: Written. My uncle Al, who invented Superquadrics some + * years earlier, came to visit us. I was a high school kid at the time, + * with nothing more than a Commodore 64. Somehow we wrote this program, + * (he did the math obviously, I just coded it into BASIC for the c64). + * Yeah, 320x200 resolution, colorless white wireframe, and half an hour + * rendering time per superquadric. PLOT x,y. THOSE were the days. + * In the following years I would port Superquadrics to AppleBASIC, + * AmigaBASIC, and then Turbo Pascal for IBM clones. 5 minutes on a 286! + * Talk about fast rendering! But these days, when my Pentium 166 runs + * the same program, the superquadric will already be waiting on the + * screen before my monitor can change frequency from text to graphics + * mode. Can't time the number of minutes that way! Darn ;) + * + * Ed Mackey + */ + +#ifdef STANDALONE +# define DEFAULTS "*delay: 40000 \n" \ + "*count: 25 \n" \ + "*cycles: 40 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_superquadrics 0 +# define release_superquadrics 0 +# define superquadrics_handle_event 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +/*- + * Note for low-CPU-speed machines: If your frame rate is so low that + * attempts at animation appear futile, try using "-cycles 1", which puts + * Superquadrics into kind of a slide-show mode. It will still use up + * all of your CPU power, but it may look nicer. + */ + +#define DEF_SPINSPEED "5.0" + +static float spinspeed; + +static XrmOptionDescRec opts[] = +{ + {"-spinspeed", ".superquadrics.spinspeed", XrmoptionSepArg, 0} +}; +static argtype vars[] = +{ + {&spinspeed, "spinspeed", "Spinspeed", DEF_SPINSPEED, t_Float} +}; +static OptionStruct desc[] = +{ + {"-spinspeed num", "speed of rotation, in degrees per frame"} +}; + +ENTRYPOINT ModeSpecOpt superquadrics_opts = +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + +#ifdef USE_MODULES +ModStruct superquadrics_description = +{"superquadrics", "init_superquadrics", "draw_superquadrics", NULL, + "refresh_superquadrics", "init_superquadrics", NULL, &superquadrics_opts, + 1000, 25, 40, 1, 4, 1.0, "", + "Shows 3D mathematical shapes", 0, NULL}; + +#endif + +#define MaxRes 50 +#define MinRes 5 + +typedef double dimi[MaxRes + 1]; + +typedef struct { + double xExponent, yExponent; + GLfloat r[4], g[4], b[4]; + long Mode; + int rotx, rotz; +} state; + +typedef struct { + GLXContext *glx_context; + int dist, wireframe, flatshade, shownorms, maxcount, maxwait; + int counter, viewcount, viewwait, mono; + GLfloat curmat[4][4], rotx, roty, rotz, spinspeed; + /* In dimi: the first letter stands for cosine/sine, the second + * stands for North, South, East, or West. I think. + */ + dimi cs, se, sw, sn, ss, ce, cw, cn, Prevxx, Prevyy, Prevzz, + Prevxn, Prevyn, Prevzn; + double xExponent, yExponent, Mode; + int resolution; + state now, later; + + int pats[4][4]; + int cullmode; + +} superquadricsstruct; + +static superquadricsstruct *superquadrics = NULL; + +#define CLIP_NORMALS 10000.0 + +static void ReshapeSuperquadrics(int w, int h); + +static int +myrand(int range) +{ + return ((int) (((float) range) * LRAND() / (MAXRAND))); +} + +static float +myrandreal(void) +{ + return (LRAND() / (MAXRAND)); +} + +/* Some old, old, OLD code follows. Ahh this takes me back..... */ + +/* Output from p2c, the Pascal-to-C translator */ +/* From input file "squad.pas" */ + +static double +XtoY(double x, double y) +{ + double z, a; + + /* This is NOT your typical raise-X-to-the-Y-power function. Do not attempt + * to replace this with a standard exponent function. If you must, just + * replace the "a = exp(y * log(z));" line with something faster. + */ + + z = fabs(x); + if (z < 1e-20) { + a = 0.0; + return a; + } + a = exp(y * log(z)); + if (a > CLIP_NORMALS) + a = CLIP_NORMALS; + if (x < 0) + a = -a; + return a; +} + + +static double +Sine(double x, double e) +{ + /* This is just the sine wave raised to the exponent. BUT, you can't + * raise negative numbers to fractional exponents. So we have a special + * XtoY routune which handles it in a way useful to superquadrics. + */ + + return (XtoY(sin(x), e)); +} + + +static double +Cosine(double x, double e) +{ + return (XtoY(cos(x), e)); +} + + +static void +MakeUpStuff(int allstuff, superquadricsstruct * sp) +{ + int dostuff; + int t, pat; + GLfloat r, g, b, r2, g2, b2; + + /* randomize it. */ + + if (sp->maxcount < 2) + allstuff = 1; + dostuff = allstuff * 15; + if (!dostuff) { + dostuff = myrand(3) + 1; + if (myrand(2) || (dostuff & 1)) + dostuff |= 4; + if (myrand(2)) + dostuff |= 8; + } + if (dostuff & 1) { + sp->later.xExponent = (((long) floor(myrandreal() * 250 + 0.5)) / 100.0) + 0.1; + sp->later.yExponent = (((long) floor(myrandreal() * 250 + 0.5)) / 100.0) + 0.1; + + /* Increase the 2.0 .. 2.5 range to 2.0 .. 3.0 */ + if (sp->later.xExponent > 2.0) + sp->later.xExponent = (sp->later.xExponent * 2.0) - 2.0; + if (sp->later.yExponent > 2.0) + sp->later.yExponent = (sp->later.yExponent * 2.0) - 2.0; + } + if (dostuff & 2) { + do { + sp->later.Mode = myrand(3L) + 1; + } while (!allstuff && (sp->later.Mode == sp->now.Mode)); + /* On init: make sure it can stay in mode 1 if it feels like it. */ + } + if (dostuff & 4) { + if (sp->mono) { + if (sp->wireframe) { + b = g = r = 1.0; + b2 = g2 = r2 = 1.0; + } else { + b = g = r = (GLfloat) (140 + myrand(100)) / 255.0; + b2 = g2 = r2 = ((r > 0.69) ? (1.0 - r) : r); + } + } else { + r = (GLfloat) (40 + myrand(200)) / 255.0; + g = (GLfloat) (40 + myrand(200)) / 255.0; + b = (GLfloat) (40 + myrand(200)) / 255.0; + + r2 = ((myrand(4) && ((r < 0.31) || (r > 0.69))) ? (1.0 - r) : r); + g2 = ((myrand(4) && ((g < 0.31) || (g > 0.69))) ? (1.0 - g) : g); + b2 = ((myrand(4) && ((b < 0.31) || (b > 0.69))) ? (1.0 - b) : b); + } + + pat = myrand(4); + for (t = 0; t < 4; ++t) { + sp->later.r[t] = sp->pats[pat][t] ? r : r2; + sp->later.g[t] = sp->pats[pat][t] ? g : g2; + sp->later.b[t] = sp->pats[pat][t] ? b : b2; + } + } + if (dostuff & 8) { + sp->later.rotx = myrand(360) - 180; + sp->later.rotz = myrand(160) - 80; + } +} + +static void +inputs(superquadricsstruct * sp) +{ + int iv; + double u, v, mode3, cn3, inverter2, flatu, flatv; + + if (sp->Mode < 1.000001) { + mode3 = 1.0; + cn3 = 0.0; + inverter2 = 1.0; + } else if (sp->Mode < 2.000001) { + mode3 = 1.0; + cn3 = (sp->Mode - 1.0) * 1.5; + inverter2 = (sp->Mode - 1.0) * -2.0 + 1.0; + } else { + mode3 = (sp->Mode - 1.0); + cn3 = (sp->Mode - 2.0) / 2.0 + 1.5; + inverter2 = -1.0; + } + + if (sp->flatshade) { + flatu = M_PI / (sp->resolution - 1); + flatv = mode3 * M_PI / ((sp->resolution - 1) * 2); + } else { + flatu = flatv = 0.0; + } + + /* (void) printf("Calculating....\n"); */ + for (iv = 1; iv <= sp->resolution; iv++) { + + /* u ranges from PI down to -PI */ + u = (1 - iv) * 2 * M_PI / (sp->resolution - 1) + M_PI; + + /* v ranges from PI/2 down to -PI/2 */ + v = (1 - iv) * mode3 * M_PI / (sp->resolution - 1) + M_PI * (mode3 / 2.0); + + /* Use of xExponent */ + sp->se[iv] = Sine(u, sp->xExponent); + sp->ce[iv] = Cosine(u, sp->xExponent); + sp->sn[iv] = Sine(v, sp->yExponent); + sp->cn[iv] = Cosine(v, sp->yExponent) * inverter2 + cn3; + + /* Normal vector computations only */ + sp->sw[iv] = Sine(u + flatu, 2 - sp->xExponent); + sp->cw[iv] = Cosine(u + flatu, 2 - sp->xExponent); + sp->ss[iv] = Sine(v + flatv, 2 - sp->yExponent) * inverter2; + sp->cs[iv] = Cosine(v + flatv, 2 - sp->yExponent); + } /* next */ + + /* Now fix up the endpoints */ + sp->se[sp->resolution] = sp->se[1]; + sp->ce[sp->resolution] = sp->ce[1]; + + if (sp->Mode > 2.999999) { + sp->sn[sp->resolution] = sp->sn[1]; + sp->cn[sp->resolution] = sp->cn[1]; + } +} + + +static int +DoneScale(superquadricsstruct * sp) +{ + double xx, yy, zz, xp = 0, yp = 0, zp = 0, xn, yn, zn, xnp = 0, + ynp = 0, znp = 0; + int ih, iv; + int polys = 0; + + /* Hey don't knock my 2-letter variable names. Simon's BASIC rules, man! ;-> */ + /* Just kidding..... */ + int toggle = 0; + + for (ih = 1; ih <= sp->resolution; ih++) { + toggle ^= 2; + for (iv = 1; iv <= sp->resolution; iv++) { + toggle ^= 1; + if (sp->wireframe) + glColor3f(sp->curmat[toggle][0], sp->curmat[toggle][1], sp->curmat[toggle][2]); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, sp->curmat[toggle]); + + xx = sp->cn[iv] * sp->ce[ih]; + zz = sp->cn[iv] * sp->se[ih]; + yy = sp->sn[iv]; + + if (sp->wireframe) { + if ((ih > 1) || (iv > 1)) { + glBegin(GL_LINES); + if (ih > 1) { + glVertex3f(xx, yy, zz); + glVertex3f(sp->Prevxx[iv], sp->Prevyy[iv], sp->Prevzz[iv]); + polys++; + } + if (iv > 1) { + glVertex3f(xx, yy, zz); + glVertex3f(sp->Prevxx[iv - 1], sp->Prevyy[iv - 1], sp->Prevzz[iv - 1]); + polys++; + } +/* PURIFY 4.0.1 reports an unitialized memory read on the next line when using + * MesaGL 2.2 and -mono. This has been fixed in MesaGL 2.3 and later. */ + glEnd(); + } + } else { + if ((sp->cs[iv] > 1e+10) || (sp->cs[iv] < -1e+10)) { + xn = sp->cs[iv]; + zn = sp->cs[iv]; + yn = sp->ss[iv]; + } else { + xn = sp->cs[iv] * sp->cw[ih]; + zn = sp->cs[iv] * sp->sw[ih]; + yn = sp->ss[iv]; + } + if ((ih > 1) && (iv > 1)) { + glNormal3f(xn, yn, zn); + glBegin(GL_POLYGON); + glVertex3f(xx, yy, zz); + if (!sp->flatshade) + glNormal3f(sp->Prevxn[iv], sp->Prevyn[iv], sp->Prevzn[iv]); + glVertex3f(sp->Prevxx[iv], sp->Prevyy[iv], sp->Prevzz[iv]); + if (!sp->flatshade) + glNormal3f(xnp, ynp, znp); + glVertex3f(xp, yp, zp); + if (!sp->flatshade) + glNormal3f(sp->Prevxn[iv - 1], sp->Prevyn[iv - 1], sp->Prevzn[iv - 1]); + glVertex3f(sp->Prevxx[iv - 1], sp->Prevyy[iv - 1], sp->Prevzz[iv - 1]); + polys++; + glEnd(); + } + if (sp->shownorms) { + if (!sp->flatshade) + glShadeModel(GL_FLAT); + glDisable(GL_LIGHTING); + glBegin(GL_LINES); + glVertex3f(xx, yy, zz); + glVertex3f(xx + xn, yy + yn, zz + zn); + polys++; + glEnd(); + if (!sp->flatshade) + glShadeModel(GL_SMOOTH); + glEnable(GL_LIGHTING); + } + xnp = sp->Prevxn[iv]; + ynp = sp->Prevyn[iv]; + znp = sp->Prevzn[iv]; + sp->Prevxn[iv] = xn; + sp->Prevyn[iv] = yn; + sp->Prevzn[iv] = zn; + } + + xp = sp->Prevxx[iv]; + yp = sp->Prevyy[iv]; + zp = sp->Prevzz[iv]; + sp->Prevxx[iv] = xx; + sp->Prevyy[iv] = yy; + sp->Prevzz[iv] = zz; + + } /* next */ + } /* next */ + return polys; +} + +/**** End of really old code ****/ + +static void +SetCull(int init, superquadricsstruct * sp) +{ + if (init) { + glDisable(GL_CULL_FACE); + sp->cullmode = 0; + return; + } + if (sp->Mode < 1.0001) { + if (sp->cullmode != 1) { + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + sp->cullmode = 1; + } + } else if (sp->Mode > 2.9999) { + if (sp->cullmode != 2) { + glEnable(GL_CULL_FACE); + glCullFace(GL_FRONT); + sp->cullmode = 2; + } + } else { + if (sp->cullmode) { + glDisable(GL_CULL_FACE); + sp->cullmode = 0; + } + } +} + +static void +SetCurrentShape(superquadricsstruct * sp) +{ + int t; + + sp->xExponent = sp->now.xExponent = sp->later.xExponent; + sp->yExponent = sp->now.yExponent = sp->later.yExponent; + + for (t = 0; t < 4; ++t) { + sp->curmat[t][0] = sp->now.r[t] = sp->later.r[t]; + sp->curmat[t][1] = sp->now.g[t] = sp->later.g[t]; + sp->curmat[t][2] = sp->now.b[t] = sp->later.b[t]; + } + + sp->Mode = (double) (sp->now.Mode = sp->later.Mode); + sp->rotx = sp->now.rotx = sp->later.rotx; + sp->rotz = sp->now.rotz = sp->later.rotz; + + sp->counter = -sp->maxwait; + + inputs(sp); +} + +static void +NextSuperquadric(superquadricsstruct * sp) +{ + double fnow, flater; + int t; + + sp->roty -= sp->spinspeed; + while (sp->roty >= 360.0) + sp->roty -= 360.0; + while (sp->roty < 0.0) + sp->roty += 360.0; + + --sp->viewcount; + + if (sp->counter > 0) { + if (--sp->counter == 0) { + SetCurrentShape(sp); + if (sp->counter == 0) { /* Happens if sp->maxwait == 0 */ + MakeUpStuff(0, sp); + sp->counter = sp->maxcount; + } + } else { + fnow = (double) sp->counter / (double) sp->maxcount; + flater = (double) (sp->maxcount - sp->counter) / (double) sp->maxcount; + sp->xExponent = sp->now.xExponent * fnow + sp->later.xExponent * flater; + sp->yExponent = sp->now.yExponent * fnow + sp->later.yExponent * flater; + + for (t = 0; t < 4; ++t) { + sp->curmat[t][0] = sp->now.r[t] * fnow + sp->later.r[t] * flater; + sp->curmat[t][1] = sp->now.g[t] * fnow + sp->later.g[t] * flater; + sp->curmat[t][2] = sp->now.b[t] * fnow + sp->later.b[t] * flater; + } + + sp->Mode = (double) sp->now.Mode * fnow + (double) sp->later.Mode * flater; + sp->rotx = (double) sp->now.rotx * fnow + (double) sp->later.rotx * flater; + sp->rotz = (double) sp->now.rotz * fnow + (double) sp->later.rotz * flater; + + inputs(sp); + } + } else { + if (++sp->counter >= 0) { + MakeUpStuff(0, sp); + sp->counter = sp->maxcount; + } + } +} + +static int +DisplaySuperquadrics(ModeInfo *mi) +{ + superquadricsstruct *sp = &superquadrics[MI_SCREEN(mi)]; + int polys = 0; + glDrawBuffer(GL_BACK); + if (sp->wireframe) + glClear(GL_COLOR_BUFFER_BIT); + else + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (sp->viewcount < 1) { + sp->viewcount = sp->viewwait; +/* ReshapeSuperquadrics(-1, -1);*/ + } + glPushMatrix(); + glTranslatef(0.0, 0.0, -((GLfloat) (sp->dist) / 16.0) - (sp->Mode * 3.0 - 1.0)); /* viewing transform */ + glRotatef(sp->rotx, 1.0, 0.0, 0.0); /* pitch */ + glRotatef(sp->rotz, 0.0, 0.0, 1.0); /* bank */ + glRotatef(sp->roty, 0.0, 1.0, 0.0); /* "spin", like heading but comes after P & B */ + + SetCull(0, sp); + + glScalef(0.7, 0.7, 0.7); /* jwz: scale it down a bit */ + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + polys = DoneScale(sp); + + glPopMatrix(); + + /* Remember to flush & swap the buffers after calling this function! */ + return polys; +} + +static int +NextSuperquadricDisplay(ModeInfo *mi) +{ + superquadricsstruct *sp = &superquadrics[MI_SCREEN(mi)]; + NextSuperquadric(sp); + return DisplaySuperquadrics(mi); +} + +#define MINSIZE 200 +static void +ReshapeSuperquadrics(int w, int h) +{ +#if 0 + int maxsize, cursize; + + maxsize = (w < h) ? w : h; + if (maxsize <= MINSIZE) { + cursize = maxsize; + } else { + cursize = myrand(maxsize - MINSIZE) + MINSIZE; + } + if ((w > cursize) && (h > cursize)) { + glViewport(myrand(w - cursize), myrand(h - cursize), cursize, cursize); + w = h = cursize; + } else { + glViewport(0, 0, w, h); + } +#else + int y = 0; + + if (w > h * 5) { /* tiny window: show middle */ + h = w; + y = -h/2; + } + + glViewport(0, y, w, h); +#endif + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(15.0, (GLfloat) w / (GLfloat) h, 0.1, 200.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +} + +static void +InitSuperquadrics(int wfmode, int snorm, int res, int count, float speed, superquadricsstruct * sp) +{ + GLfloat ambient[] = + {0.4, 0.4, 0.4, 1.0}; + GLfloat position[] = + {10.0, 1.0, 1.0, 10.0}; + GLfloat mat_diffuse[] = + {1.0, 0.5, 0.5, 1.0}; + GLfloat mat_specular[] = + {0.8, 0.8, 0.8, 1.0}; + GLfloat mat_shininess[] = + {50.0}; + + int t; + + for (t = 0; t < 4; ++t) { + sp->curmat[t][0] = 0.0; + sp->curmat[t][1] = 0.0; + sp->curmat[t][2] = 0.0; + sp->curmat[t][3] = 1.0; + } + + sp->rotx = 35.0; + sp->roty = 0.0; + sp->rotz = 0.0; + sp->dist = (16 << 3); + sp->wireframe = sp->flatshade = sp->shownorms = 0; + sp->maxcount = count; + if (sp->maxcount < 1) + sp->maxcount = 1; + sp->maxwait = sp->maxcount >> 1; + SetCull(1, sp); + + sp->mono = 0; + sp->spinspeed = speed; + sp->viewcount = sp->viewwait = (sp->maxcount < 2) ? 1 : (sp->maxcount << 3); + + if (res < MinRes) + res = MinRes; + if (res > MaxRes) + res = MaxRes; + sp->resolution = res; + + if (wfmode == 2) + sp->flatshade = 1; + else if (wfmode) + sp->wireframe = 1; + + if (snorm) + sp->shownorms = 1; + + glClearDepth(1.0); + + if (sp->wireframe) { + glShadeModel(GL_FLAT); + glDisable(GL_LIGHTING); + glColor3f(mat_diffuse[0], mat_diffuse[1], mat_diffuse[2]); + } else { + if (sp->flatshade) { + glShadeModel(GL_FLAT); + position[0] = 1.0; + position[3] = 0.0; + } + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glDepthFunc(GL_LEQUAL); + glEnable(GL_DEPTH_TEST); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_POSITION, position); + + /*glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_diffuse); */ + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess); + + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); + + glFrontFace(GL_CW); + glEnable(GL_NORMALIZE); + } + + MakeUpStuff(1, sp); + SetCurrentShape(sp); + MakeUpStuff(1, sp); /* Initialize it */ + sp->counter = sp->maxcount; +} + +/* End of superquadrics main functions */ + +ENTRYPOINT void +init_superquadrics(ModeInfo * mi) +{ + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int screen = MI_SCREEN(mi); + + superquadricsstruct *sp; + + MI_INIT (mi, superquadrics); + sp = &superquadrics[screen]; + sp->mono = (MI_IS_MONO(mi) ? 1 : 0); + + sp->pats[1][1] = 1; + sp->pats[1][3] = 1; + sp->pats[2][2] = 1; + sp->pats[2][3] = 1; + sp->pats[3][1] = 1; + sp->pats[3][2] = 1; + +/* {0, 0, 0, 0}, + {0, 1, 0, 1}, + {0, 0, 1, 1}, + {0, 1, 1, 0} + */ + + if ((sp->glx_context = init_GL(mi)) != NULL) { + + InitSuperquadrics(MI_IS_WIREFRAME(mi), 0, + MI_COUNT(mi), MI_CYCLES(mi), spinspeed, sp); + ReshapeSuperquadrics(MI_WIDTH(mi), MI_HEIGHT(mi)); + + DisplaySuperquadrics(mi); + glFinish(); + glXSwapBuffers(display, window); + } else { + MI_CLEARWINDOW(mi); + } +} + +ENTRYPOINT void +draw_superquadrics(ModeInfo * mi) +{ + superquadricsstruct *sp = &superquadrics[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!sp->glx_context) + return; + + glXMakeCurrent(display, window, *(sp->glx_context)); + + mi->polygon_count = NextSuperquadricDisplay(mi); + + if (mi->fps_p) do_fps (mi); + glFinish(); + glXSwapBuffers(display, window); +} + +#ifndef STANDALONE +ENTRYPOINT void +refresh_superquadrics(ModeInfo * mi) +{ + /* Nothing happens here */ +} +#endif + +ENTRYPOINT void +reshape_superquadrics(ModeInfo * mi, int width, int height) +{ + ReshapeSuperquadrics(MI_WIDTH(mi), MI_HEIGHT(mi)); +} + + +#endif + +/* End of superquadrics.c */ + +XSCREENSAVER_MODULE ("Superquadrics", superquadrics) diff --git a/hacks/glx/superquadrics.man b/hacks/glx/superquadrics.man new file mode 100644 index 0000000..8a127f0 --- /dev/null +++ b/hacks/glx/superquadrics.man @@ -0,0 +1,70 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +superquadrics - morphing 3d shapes. +.SH SYNOPSIS +.B superquadrics +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-spinspeed \fInumber\fP] +[\-count \fInumber\fP] +[\-cycles \fInumber\fP] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Ed Mackey reports that he wrote the first version of this program in BASIC +on a Commodore 64 in 1987, as a 320x200 black and white wireframe. Now it +is GL and has specular reflections. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.). +.TP 8 +.B \-spinspeed \fInumber\fP +0.1 - 15.0. Default: 5.0. +.TP 8 +.B \-count \fInumber\fP +0 - 100. Default: 25. +.TP 8 +.B \-cycles \fInumber\fP +0 - 100. Default: 40. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2002 by Ed Mackey. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Ed Mackey. diff --git a/hacks/glx/surfaces.c b/hacks/glx/surfaces.c new file mode 100644 index 0000000..4c79740 --- /dev/null +++ b/hacks/glx/surfaces.c @@ -0,0 +1,648 @@ +/* Surface --- Parametric 3d surfaces visualization */ + +/* + * Revision History: + * 2000: written by Andrey Mirtchovski + * + * 01-Mar-2003 mirtchov Modified as a xscreensaver hack. + * 01-jan-2009 steger Renamed from klein.c to surfaces.c. + * Removed the Klein bottle. + * Added many new surfaces. + * Added many command line options. + * + */ + +/* surfaces to draw */ +#define SURFACE_RANDOM -1 +#define SURFACE_DINI 0 +#define SURFACE_ENNEPER 1 +#define SURFACE_KUEN 2 +#define SURFACE_MOEBIUS 3 +#define SURFACE_SEASHELL 4 +#define SURFACE_SWALLOWTAIL 5 +#define SURFACE_BOHEMIAN 6 +#define SURFACE_WHITNEY 7 +#define SURFACE_PLUECKER 8 +#define SURFACE_HENNEBERG 9 +#define SURFACE_CATALAN 10 +#define SURFACE_CORKSCREW 11 +#define NUM_SURFACES 12 + +/* primitives to draw with + * note that we skip the polygons and + * triangle fans -- too slow + * + * also removed triangle_strip and quads -- + * just doesn't look good enough + */ +#define RENDER_RANDOM -1 +#define RENDER_POINTS 0 +#define RENDER_LINES 1 +#define RENDER_LINE_LOOP 2 +#define NUM_RENDER 3 + +#ifdef STANDALONE +# define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_surface 0 +# define release_surface 0 +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#define DEF_SURFACE "random" +#define DEF_MODE "random" +#define DEF_SPIN "True" +#define DEF_WANDER "False" +#define DEF_SPEED "300" + +#include "rotator.h" +#include "gltrackball.h" + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + + +static char *surface_type; +static char *render_mode; +static int render; +static int speed; +static Bool do_spin; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-surface", ".surface", XrmoptionSepArg, 0 }, + { "-random-surface", ".surface", XrmoptionNoArg, "random" }, + { "-dini", ".surface", XrmoptionNoArg, "dini" }, + { "-enneper", ".surface", XrmoptionNoArg, "enneper" }, + { "-kuen", ".surface", XrmoptionNoArg, "kuen" }, + { "-moebius", ".surface", XrmoptionNoArg, "moebius" }, + { "-seashell", ".surface", XrmoptionNoArg, "seashell" }, + { "-swallowtail", ".surface", XrmoptionNoArg, "swallowtail" }, + { "-bohemian", ".surface", XrmoptionNoArg, "bohemian" }, + { "-whitney", ".surface", XrmoptionNoArg, "whitney" }, + { "-pluecker", ".surface", XrmoptionNoArg, "pluecker" }, + { "-henneberg", ".surface", XrmoptionNoArg, "henneberg" }, + { "-catalan", ".surface", XrmoptionNoArg, "catalan" }, + { "-corkscrew", ".surface", XrmoptionNoArg, "corkscrew" }, + { "-mode", ".mode", XrmoptionSepArg, 0 }, + { "-random-mode", ".mode", XrmoptionNoArg, "random" }, + { "-points", ".mode", XrmoptionNoArg, "points" }, + { "-lines", ".mode", XrmoptionNoArg, "lines" }, + { "-line-loops", ".mode", XrmoptionNoArg, "line-loops" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&surface_type, "surface", "Surface", DEF_SURFACE, t_String }, + {&render_mode, "mode", "Mode", DEF_MODE, t_String }, + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool }, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool }, + {&speed, "speed", "Speed", DEF_SPEED, t_Int }, +}; + + +ENTRYPOINT ModeSpecOpt surface_opts = +{countof(opts), opts, countof(vars), vars, NULL}; + + + +typedef struct { + GLfloat x; + GLfloat y; + GLfloat z; +} GL_VECTOR; + +typedef struct { + GLXContext *glx_context; + Window window; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int render; + Bool random_render; + int surface; + Bool random_surface; + int frame; + + float du, dv; + float a, b, c; + + float draw_step; +} surfacestruct; + +static surfacestruct *surface = NULL; + + +static void draw(ModeInfo *mi) +{ + surfacestruct *sp = &surface[MI_SCREEN(mi)]; + double u, v; + float coord[3]; + int render; + + mi->polygon_count = 0; + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glPushMatrix(); + + { + double x, y, z; + get_position(sp->rot, &x, &y, &z, !sp->button_down_p); + glTranslatef((x-0.5)*10, (y-0.5)*10, (z-0.5)*20); + + gltrackball_rotate(sp->trackball); + + get_rotation(sp->rot, &x, &y, &z, !sp->button_down_p); + glRotatef(x*360, 1.0, 0.0, 0.0); + glRotatef(y*360, 0.0, 1.0, 0.0); + glRotatef(z*360, 0.0, 0.0, 1.0); + } + + glScalef(4.0, 4.0, 4.0); + + switch(sp->surface) + { + case SURFACE_DINI: + for (v=0.11; v<=2.0; v+=sp->dv) + { + glBegin(sp->render); + for (u=0; u<=6.0*M_PI; u+=sp->du) + { + coord[0] = sp->a*cos(u)*sin(v); + coord[1] = sp->a*sin(u)*sin(v); + coord[2] = sp->a*(cos(v)+log(tan(0.5*v)))+0.2*sp->b*u; + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_ENNEPER: + for (u=-M_PI; u<=M_PI; u+=sp->du) + { + glBegin(sp->render); + for (v=-M_PI; vdv) + { + coord[0] = sp->a*(u-(1.0/3.0*u*u*u)+u*v*v); + coord[1] = sp->b*(v-(1.0/3.0*v*v*v)+u*u*v); + coord[2] = u*u-v*v; + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_KUEN: + for (u=-4.48; u<=4.48; u+=sp->du) + { + glBegin(sp->render); + for (v=M_PI/51; vdv) + { + coord[0] = 2*(cos(u)+u*sin(u))*sin(v)/(1+u*u*sin(v)*sin(v)); + coord[1] = 2*(sin(u)-u*cos(u))*sin(v)/(1+u*u*sin(v)*sin(v)); + coord[2] = log(tan(0.5*v))+2*cos(v)/(1+u*u*sin(v)*sin(v)); + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_MOEBIUS: + for (u=-M_PI; udu) + { + glBegin(sp->render); + for (v=-0.735; v<0.74; v+=sp->dv) + { + coord[0] = cos(u)+v*cos(u/2)*cos(u); + coord[1] = sin(u)+v*cos(u/2)*sin(u); + coord[2] = v*sin(u/2); + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_SEASHELL: + for (u=0; u<2*M_PI; u+=sp->du) + { + glBegin(sp->render); + for (v=0; v<2*M_PI; v+=sp->dv) + { + coord[0] = sp->a*(1-v/(2*M_PI))*cos(2*v)*(1+cos(u))+sp->c*cos(2*v); + coord[1] = sp->a*(1-v/(2*M_PI))*sin(2*v)*(1+cos(u))+sp->c*sin(2*v); + coord[2] = 2*sp->b*v/(2*M_PI)+sp->a*(1-v/(2*M_PI))*sin(u); + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_SWALLOWTAIL: + for (u=-2.5; u<2.0; u+=sp->du) + { + glBegin(sp->render); + for (v=-1.085; v<1.09; v+=sp->dv) + { + coord[0] = u*v*v+3*v*v*v*v; + coord[1] = -2*u*v-4*v*v*v; + coord[2] = u; + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_BOHEMIAN: + for (u=-M_PI; udu) + { + glBegin(sp->render); + for (v=-M_PI; vdv) + { + coord[0] = sp->a*cos(u); + coord[1] = sp->b*cos(v)+sp->a*sin(u); + coord[2] = sin(v); + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_WHITNEY: + for (v=-1.995; v<2.0; v+=sp->dv) + { + glBegin(sp->render); + for (u=-1.995; u<2.0; u+=sp->du) + { + coord[0] = u*v; + coord[1] = u; + coord[2] = v*v-2; + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_PLUECKER: + for (u=0; u<2.5; u+=sp->dv) + { + glBegin(sp->render); + for (v=-M_PI; vdu) + { + coord[0] = u*cos(v); + coord[1] = u*sin(v); + coord[2] = 2*cos(v)*sin(v); + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_HENNEBERG: + for (u=0.9; u<2.55; u+=sp->dv) + { + glBegin(sp->render); + for (v=-M_PI; vdu) + { + coord[0] = sinh(1.0/3.0*u)*cos(v)-1.0/3.0*sinh(u)*cos(3.0*v); + coord[1] = sinh(1.0/3.0*u)*sin(v)+1.0/3.0*sinh(u)*sin(3.0*v); + coord[2] = cosh(2.0/3.0*u)*cos(2.0*v); + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_CATALAN: + for (v=-2; v<2; v+=sp->du) + { + glBegin(sp->render); + for (u=-2*M_PI; u<2*M_PI+0.05; u+=sp->dv) + { + coord[0] = 0.33*(u-sin(u)*cosh(v)); + coord[1] = 0.33*(1.0-cos(u)*cosh(v)); + coord[2] = 0.33*4.0*sin(0.5*u)*sinh(0.5*v); + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + case SURFACE_CORKSCREW: + for (v=-M_PI; vdu) + { + glBegin(sp->render); + for (u=-M_PI; udv) + { + coord[0] = 0.5*(sp->a+2.0)*cos(u)*cos(v); + coord[1] = 0.5*(sp->a+2.0)*sin(u)*cos(v); + coord[2] = 0.5*(sp->a+2.0)*sin(v)+u; + glColor3f(coord[0]+0.7, coord[1]+0.7, coord[2]+0.7); + glVertex3fv(coord); + mi->polygon_count++; + } + glEnd(); + } + break; + } + glPopMatrix(); + + if (sp->render == GL_LINES) + mi->polygon_count /= 2; + + sp->a = sin(sp->draw_step+=0.01); + sp->b = cos(sp->draw_step+=0.01); + sp->c = sin(sp->draw_step+0.25*M_PI); + + if (sp->random_surface || sp->random_render) + { + sp->frame++; + if (sp->frame >= speed) + { + sp->frame = 0; + if (sp->random_surface) + sp->surface = random() % NUM_SURFACES; + if (sp->random_render) + { + render = random() % NUM_RENDER; + switch (render) + { + case RENDER_POINTS: + sp->render = GL_POINTS; + break; + case RENDER_LINES: + sp->render = GL_LINES; + break; + case RENDER_LINE_LOOP: + if (sp->surface == SURFACE_BOHEMIAN || + sp->surface == SURFACE_PLUECKER || + sp->surface == SURFACE_HENNEBERG) + sp->render = GL_LINE_LOOP; + else + sp->render = GL_LINE_STRIP; + break; + default: + sp->render = GL_LINE_LOOP; + break; + } + } + } + } +} + + +/* new window size or exposure */ +ENTRYPOINT void reshape_surface(ModeInfo *mi, int width, int height) +{ + surfacestruct *sp = &surface[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context)); + + glViewport(0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(0.0, 0.0, 30.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool surface_handle_event(ModeInfo *mi, XEvent *event) +{ + surfacestruct *sp = &surface[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, sp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &sp->button_down_p)) + return True; + + return False; +} + + +ENTRYPOINT void init_surface(ModeInfo *mi) +{ + int screen = MI_SCREEN(mi); + surfacestruct *sp; + + MI_INIT (mi, surface); + sp = &surface[screen]; + + sp->window = MI_WINDOW(mi); + + { + double spin_speed = 1.0; + double wander_speed = 0.03; + sp->rot = make_rotator(do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + 1.0, + do_wander ? wander_speed : 0, + True); + sp->trackball = gltrackball_init (True); + } + + if (!strcasecmp(surface_type,"random")) + { + sp->random_surface = True; + sp->surface = random() % NUM_SURFACES; + } + else if (!strcasecmp(surface_type,"dini")) + { + sp->random_surface = False; + sp->surface = SURFACE_DINI; + } + else if (!strcasecmp(surface_type,"enneper")) + { + sp->random_surface = False; + sp->surface = SURFACE_ENNEPER; + } + else if (!strcasecmp(surface_type,"kuen")) + { + sp->random_surface = False; + sp->surface = SURFACE_KUEN; + } + else if (!strcasecmp(surface_type,"moebius")) + { + sp->random_surface = False; + sp->surface = SURFACE_MOEBIUS; + } + else if (!strcasecmp(surface_type,"seashell")) + { + sp->random_surface = False; + sp->surface = SURFACE_SEASHELL; + } + else if (!strcasecmp(surface_type,"swallowtail")) + { + sp->random_surface = False; + sp->surface = SURFACE_SWALLOWTAIL; + } + else if (!strcasecmp(surface_type,"bohemian")) + { + sp->random_surface = False; + sp->surface = SURFACE_BOHEMIAN; + } + else if (!strcasecmp(surface_type,"whitney")) + { + sp->random_surface = False; + sp->surface = SURFACE_WHITNEY; + } + else if (!strcasecmp(surface_type,"pluecker")) + { + sp->random_surface = False; + sp->surface = SURFACE_PLUECKER; + } + else if (!strcasecmp(surface_type,"henneberg")) + { + sp->random_surface = False; + sp->surface = SURFACE_HENNEBERG; + } + else if (!strcasecmp(surface_type,"catalan")) + { + sp->random_surface = False; + sp->surface = SURFACE_CATALAN; + } + else if (!strcasecmp(surface_type,"corkscrew")) + { + sp->random_surface = False; + sp->surface = SURFACE_CORKSCREW; + } + else + { + sp->random_surface = True; + sp->surface = random() % NUM_SURFACES; + } + + if (!strcasecmp(render_mode,"random")) + { + sp->random_render = True; + render = random() % NUM_RENDER; + } + else if (!strcasecmp(render_mode,"points")) + { + sp->random_render = False; + render = RENDER_POINTS; + } + else if (!strcasecmp(render_mode,"lines")) + { + sp->random_render = False; + render = RENDER_LINES; + } + else if (!strcasecmp(render_mode,"line-loops")) + { + sp->random_render = False; + render = RENDER_LINE_LOOP; + } + else + { + sp->random_render = True; + render = random() % NUM_RENDER; + } + + switch (render) + { + case RENDER_POINTS: + sp->render = GL_POINTS; + break; + case RENDER_LINES: + sp->render = GL_LINES; + break; + case RENDER_LINE_LOOP: + if (sp->surface == SURFACE_BOHEMIAN || + sp->surface == SURFACE_PLUECKER || + sp->surface == SURFACE_HENNEBERG) + sp->render = GL_LINE_LOOP; + else + sp->render = GL_LINE_STRIP; + break; + default: + sp->render = GL_LINE_LOOP; + break; + } + + sp->frame = 0; + + sp->du = 0.07; + sp->dv = 0.07; + sp->a = sp->b = 1; + sp->c = 0.1; + + if ((sp->glx_context = init_GL(mi)) != NULL) + { + reshape_surface(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + else + { + MI_CLEARWINDOW(mi); + } +} + + +ENTRYPOINT void draw_surface(ModeInfo * mi) +{ + surfacestruct *sp = &surface[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!sp->glx_context) + return; + + glDrawBuffer(GL_BACK); + + glXMakeCurrent(display, window, *(sp->glx_context)); + draw(mi); + if (mi->fps_p) + do_fps(mi); + glFinish(); + glXSwapBuffers(display, window); +} + + +XSCREENSAVER_MODULE_2("Surfaces", surfaces, surface) + +#endif diff --git a/hacks/glx/surfaces.man b/hacks/glx/surfaces.man new file mode 100644 index 0000000..4c62a0e --- /dev/null +++ b/hacks/glx/surfaces.man @@ -0,0 +1,127 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +surfaces - Draws some interesting 3d parametric surfaces. +.SH SYNOPSIS +.B surfaces +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-speed \fInumber\fP] +[\-rand] +[\-spin] +[\-wander] +[\-fps] +[\-surface \fIsurface-name\fP] +[\-random-surface] +[\-dini] +[\-enneper] +[\-kuen] +[\-moebius] +[\-seashell] +[\-swallowtail] +[\-bohemian] +[\-whitney] +[\-pluecker] +[\-henneberg] +[\-catalan] +[\-corkscrew] +[\-mode \fIdisplay-mode\fP] +[\-random-mode] +[\-points] +[\-lines] +[\-line-loops] +.SH DESCRIPTION +This draws one of several three dimensional parametric surfaces. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual +class, or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Number of frames before changing shape. Default: 1000. +.TP 8 +.B \-surface random \fP(Shortcut: \fB\-random-surface\fP) +Display a random surface. This is the default. +.TP 8 +.B \-surface dini \fP(Shortcut: \fB\-dini\fP) +Display Dini's surface. +.TP 8 +.B \-surface enneper \fP(Shortcut: \fB\-enneper\fP) +Display Enneper's minimal surface. +.TP 8 +.B \-surface kuen \fP(Shortcut: \fB\-kuen\fP) +Display the Kuen surface. +.TP 8 +.B \-surface moebius \fP(Shortcut: \fB\-moebius\fP) +Display the Moebius strip. +.TP 8 +.B \-surface seashell \fP(Shortcut: \fB\-seashell\fP) +Display the seashell surface. +.TP 8 +.B \-surface swallowtail \fP(Shortcut: \fB\-swallowtail\fP) +Display the swallowtail catastrophe. +.TP 8 +.B \-surface bohemian \fP(Shortcut: \fB\-bohemian\fP) +Display the Bohemian dome. +.TP 8 +.B \-surface whitney \fP(Shortcut: \fB\-whitney\fP) +Display the Whitney umbrella. +.TP 8 +.B \-surface pluecker \fP(Shortcut: \fB\-pluecker\fP) +Display Pluecker's conoid. +.TP 8 +.B \-surface henneberg \fP(Shortcut: \fB\-henneberg\fP) +Display Henneberg's minimal surface. +.TP 8 +.B \-surface catalan \fP(Shortcut: \fB\-catalan\fP) +Display Catalan's minimal surface. +.TP 8 +.B \-surface corkscrew \fP(Shortcut: \fB\-corkscrew\fP) +Display the corkscrew surface. +.TP 8 +.B \-mode random \fP(Shortcut: \fB\-random-mode\fP) +Use random OpenGL primitives to display the surface. This is the +default. +.TP 8 +.B \-mode points \fP(Shortcut: \fB\-points\fP) +Use OpenGL points to display the surface. +.TP 8 +.B \-mode lines \fP(Shortcut: \fB\-lines\fP) +Use OpenGL lines to display the surface. +.TP 8 +.B \-mode line-loops \fP(Shortcut: \fB\-line-loops\fP) +Use OpenGL line loops to display the surface. +.TP 8 +.B \-wander | \-no-wander +Whether to wander around the screen. +.TP 8 +.B \-spin | \-no-spin +Whether to rotate around the center of the figure. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH AUTHORS +Andrey Mirtchovski, Carsten Steger diff --git a/hacks/glx/swim.c b/hacks/glx/swim.c new file mode 100644 index 0000000..e20655a --- /dev/null +++ b/hacks/glx/swim.c @@ -0,0 +1,232 @@ +/* atlantis --- Shows moving 3D sea animals */ + +#if 0 +static const char sccsid[] = "@(#)swim.c 1.3 98/06/18 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 1998. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Mark J. Kilgard + * as a demo for openGL programming. + * + * Porting it to xlock was possible by comparing the original Mesa's morph3d + * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna + * (look at morph3d.c) for his indirect help. + * + * Thanks goes also to Brian Paul for making it possible and inexpensive + * to use OpenGL at home. + * + * My e-mail address is lassauge@users.sourceforge.net + * + * Eric Lassauge (May-13-1998) + * + */ + +/** + * (c) Copyright 1993, 1994, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(TM) is a trademark of Silicon Graphics, Inc. + */ + +#ifdef STANDALONE +# include +# include "xlockmoreI.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +#ifdef USE_GL + +#include "atlantis.h" + +void +FishTransform(fishRec * fish) +{ + + glTranslatef(fish->y, fish->z, -fish->x); + glRotatef(-fish->psi, 0.0, 1.0, 0.0); + glRotatef(fish->theta, 1.0, 0.0, 0.0); + glRotatef(-fish->phi, 0.0, 0.0, 1.0); +} + +void +WhalePilot(fishRec * fish, float whalespeed, Bool whaledir) +{ + + fish->phi = -20.0; + fish->theta = 0.0; + fish->psi += ((whaledir) ? -0.5 : 0.5); + + fish->x += whalespeed * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD); + fish->y += whalespeed * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD); + fish->z += whalespeed * fish->v * sin(fish->theta / RAD); +} + +void +SharkPilot(fishRec * fish, float sharkspeed) +{ + float X, Y, Z, tpsi, ttheta, thetal; + + fish->xt = 60000.0; + fish->yt = 0.0; + fish->zt = 0.0; + + X = fish->xt - fish->x; + Y = fish->yt - fish->y; + Z = fish->zt - fish->z; + + thetal = fish->theta; + + ttheta = RAD * atan(Z / (sqrt(X * X + Y * Y))); + + if (ttheta > fish->theta + 0.25) { + fish->theta += 0.5; + } else if (ttheta < fish->theta - 0.25) { + fish->theta -= 0.5; + } + if (fish->theta > 90.0) { + fish->theta = 90.0; + } + if (fish->theta < -90.0) { + fish->theta = -90.0; + } + fish->dtheta = fish->theta - thetal; + + tpsi = RAD * atan2(Y, X); + + fish->attack = 0; + + if (fabs(tpsi - fish->psi) < 10.0) { + fish->attack = 1; + } else if (fabs(tpsi - fish->psi) < 45.0) { + if (fish->psi > tpsi) { + fish->psi -= 0.5; + if (fish->psi < -180.0) { + fish->psi += 360.0; + } + } else if (fish->psi < tpsi) { + fish->psi += 0.5; + if (fish->psi > 180.0) { + fish->psi -= 360.0; + } + } + } else { + if (NRAND(100) > 98) { + fish->sign = (fish->sign < 0 ? 1 : -1); + } + fish->psi += (fish->sign ? 1 : -1); + if (fish->psi > 180.0) { + fish->psi -= 360.0; + } + if (fish->psi < -180.0) { + fish->psi += 360.0; + } + } + + if (fish->attack) { + if (fish->v < 1.1) { + fish->spurt = 1; + } + if (fish->spurt) { + fish->v += 0.2; + } + if (fish->v > 5.0) { + fish->spurt = 0; + } + if ((fish->v > 1.0) && (!fish->spurt)) { + fish->v -= 0.2; + } + } else { + if (!(NRAND(400)) && (!fish->spurt)) { + fish->spurt = 1; + } + if (fish->spurt) { + fish->v += 0.05; + } + if (fish->v > 3.0) { + fish->spurt = 0; + } + if ((fish->v > 1.0) && (!fish->spurt)) { + fish->v -= 0.05; + } + } + + fish->x += sharkspeed * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD); + fish->y += sharkspeed * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD); + fish->z += sharkspeed * fish->v * sin(fish->theta / RAD); +} + +void +SharkMiss(atlantisstruct * ap, int i) +{ + int j; + float avoid, thetal; + float X, Y, Z, R; + + for (j = 0; j < ap->num_sharks; j++) { + if (j != i) { + X = ap->sharks[j].x - ap->sharks[i].x; + Y = ap->sharks[j].y - ap->sharks[i].y; + Z = ap->sharks[j].z - ap->sharks[i].z; + + R = sqrt(X * X + Y * Y + Z * Z); + + avoid = 1.0; + thetal = ap->sharks[i].theta; + + if (R < ap->sharksize) { + if (Z > 0.0) { + ap->sharks[i].theta -= avoid; + } else { + ap->sharks[i].theta += avoid; + } + } + ap->sharks[i].dtheta += (ap->sharks[i].theta - thetal); + } + } +} +#endif diff --git a/hacks/glx/tangram.c b/hacks/glx/tangram.c new file mode 100644 index 0000000..c250f54 --- /dev/null +++ b/hacks/glx/tangram.c @@ -0,0 +1,1067 @@ +/* tangram, Copyright (c) 2005-2014 Jeremy English + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation. No representations are made + * about the suitability of this software for any purpose. It is + * provided "as is" without express or implied warranty. + * + * Sun 10 July 2005 Changed the code that solves the puzzles. + * Also, limited the palette and added names. + * + * Wed 13 July 2005 Added option to turn off rotation. + * Changed color and materials + */ + + +#define DEFAULTS "*delay: 10000 \n" \ + "*wireframe: False \n" \ + "*titleFont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \ + "*titleFont2: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*\n" \ + "*titleFont3: -*-helvetica-medium-r-normal-*-*-80-*-*-*-*-*-*\n" \ + +# define free_tangram 0 +# define release_tangram 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" + +#include + + +#ifdef USE_GL /* whole file */ + +#include +#include +#include "tangram_shapes.h" +#include "texfont.h" + +typedef struct { + GLubyte r; + GLubyte g; + GLubyte b; +} color; + +typedef struct { + GLfloat x; + GLfloat y; + GLfloat z; +} coord; + +typedef struct { + coord crd; /* coordinates */ + GLint r; /* rotation */ + GLint fr; /* flip Rotate. Used to keep track during animation */ + GLint dl; /* display List */ + GLfloat dz; /* velocity */ + GLfloat ddz; /* Acceleration */ + GLfloat solved; /* shapes state */ + Bool up; /* Move up the z axis? */ +} tangram_shape; + +typedef struct { + char *name; + tangram_shape ts[7]; +} puzzle; + +typedef enum { + no_shape = -1, + small_triangle1 = 0, + small_triangle2 = 1, + medium_triangle = 2, + large_triangle1 = 3, + large_triangle2 = 4, + square = 5, + rhomboid = 6 +} shape_type; + +#define SPEED 0.03 +enum { + BOTTOM = 0, + DEF_WAIT = 500, + INIT_DZ = 2, + NUM_SHAPES = 7 +}; + +typedef struct { + GLXContext *glx_context; + tangram_shape tsm1, tsm2, tm, tlg1, tlg2, sq, rh; + tangram_shape n_tsm1, n_tsm2, n_tm, n_tlg1, n_tlg2, n_sq, n_rh; + char *puzzle_name; + int csi; + + int ncolors; + XColor *colors; + int ccolor; + + texture_font_data *font1_data, *font2_data, *font3_data; + GLfloat theta[3]; + Bool going_down[3]; + + const char *pn; + int display_counter; + +} tangram_configuration; + +static tangram_configuration *tps = NULL; + +#define DEF_VIEWING_TIME "5" +#define DEF_ROTATE "True" +#define DEF_X_CAMERA_ROTATE "0.2" +#define DEF_Y_CAMERA_ROTATE "0.5" +#define DEF_Z_CAMERA_ROTATE "0" +#define DEF_LABELS "True" + +static GLuint viewing_time; +static Bool do_rotate; +static Bool do_labels; +static GLfloat x_camera_rotate; +static GLfloat y_camera_rotate; +static GLfloat z_camera_rotate; +static int wire; + +static XrmOptionDescRec opts[] = { + {"-viewing_time", ".viewingTime", XrmoptionSepArg, 0}, + {"-rotate", ".rotate", XrmoptionNoArg, "True"}, + {"+rotate", ".rotate", XrmoptionNoArg, "False"}, + {"-labels", ".labels", XrmoptionNoArg, "True"}, + {"+labels", ".labels", XrmoptionNoArg, "False"}, + {"-x_camera_rotate", ".xCameraRotate", XrmoptionSepArg, 0}, + {"-y_camera_rotate", ".yCameraRotate", XrmoptionSepArg, 0}, + {"-z_camera_rotate", ".zCameraRotate", XrmoptionSepArg, 0} +}; + +static argtype vars[] = { + {&viewing_time, "viewingTime", "ViewingTime", DEF_VIEWING_TIME, t_Int}, + {&do_rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool}, + {&do_labels, "labels", "Labels", DEF_LABELS, t_Bool}, + {&x_camera_rotate, "xCameraRotate", "XCameraRotate", DEF_X_CAMERA_ROTATE, t_Float}, + {&y_camera_rotate, "yCameraRotate", "YCameraRotate", DEF_Y_CAMERA_ROTATE, t_Float}, + {&z_camera_rotate, "zCameraRotate", "ZCameraRotate", DEF_Z_CAMERA_ROTATE, t_Float} +}; + +ENTRYPOINT ModeSpecOpt tangram_opts = { countof(opts), opts, countof(vars), vars, NULL }; + +static const puzzle solved[] = { + {"Teapot", { + {{-1.664000, -1.552000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.696000, 0.944000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.064000, -2.128000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.960000, -1.056000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.104000, 0.960000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.376000, -0.800000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.152000, 0.736000, 0}, 360, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Candle", { + {{-0.016000, 2.176001, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{0.016000, 2.960001, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.000000, 0.400000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-2.015998, 2.208001, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{2.000001, 2.208001, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.496000, 0.432000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.016000, -0.672000, 0}, 335, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Square", { + {{-0.048000, -0.016000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.704000, 0.736000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.488000, 1.424001, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.016000, -0.016000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.000000, 0.000000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.688000, 0.720000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.784000, 0.672000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Crane", { + {{1.248001, 1.759999, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.024000, 3.071999, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.975999, -2.096001, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.480000, -1.968001, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.056000, -0.496000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.239999, -1.312001, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.223999, -1.360001, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Crane", { + {{0.320000, 1.360000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.704000, 3.072000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.200000, -3.392000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.688000, -1.184000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.768000, 0.192000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.168000, -2.304000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.312000, 1.296000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Duck", { + {{-1.391999, 1.424000, 0}, 65, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.768000, 2.000000, 0}, 99, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{2.688001, -1.872000, 0}, 270, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.343999, 0.944000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.112000, -0.464000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.984001, -1.120000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.536001, 0.912000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Pelican", { + {{1.088000, 0.064001, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.864000, -1.279999, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.807999, 1.520000, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{1.824001, -1.231998, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.368000, 1.472000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.832000, -2.271998, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.776001, 0.816000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Cat", { + {{0.416000, -2.432000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.352000, -2.432000, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.832000, -0.480000, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.632000, 3.056000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.616000, 1.040000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{1.088000, -1.696000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.832000, -0.432000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Coi", { + {{1.264000, -1.232000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.216000, 0.816000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.631999, 1.872000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.832000, 2.287999, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.608000, 0.912000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{2.240001, -0.176000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.256000, -1.200000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Man Skipping", { + {{1.727998, 2.303998, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.120000, 3.376001, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.879998, -3.008001, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.072000, 2.559999, 0}, 360, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.440000, 0.144000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.192001, -2.592001, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.015999, 0.176000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Old Man", { + {{-0.400000, 1.744000, 0}, 58, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.704000, 0.128000, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{0.656000, 0.320000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.112000, -0.384000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.096000, -0.399999, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.736000, 0.352000, 0}, 123, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.336000, 0.352000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Spear Head", { + {{0.688000, -0.144000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.080000, 0.592000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.048000, 0.592000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.488000, -0.848000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.376000, -0.864000, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{0.688000, -0.128000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.504000, -0.832000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Diamond", { + {{0.624000, -1.776000, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.144000, 0.432000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.800000, -0.272000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-2.320000, -0.304000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{2.048000, -0.320000, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.112000, 0.480000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.832000, -0.320000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Arrow", { + {{-2.048001, -1.232000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{0.112000, 0.943999, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.312001, -0.560000, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{0.496000, 0.656000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.528000, 0.608000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-2.048001, -2.704000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.312001, -0.512000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Lady", { + {{-0.720000, 3.440000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.912000, -1.072000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.736000, 3.440000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.720000, 1.984000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.672000, 0.544000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.192000, -3.840000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.528000, -2.480000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Running Man", { + {{1.136000, 2.720000, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-2.304001, 1.776000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.256000, 0.288000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.304000, 0.304000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.096000, -0.128000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.656000, -2.832000, 0}, 105, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.784000, -0.096000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Parallelogram", { + {{-1.104000, -1.455999, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.912000, -0.447999, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.048000, -1.471999, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.136000, -1.439999, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.944000, 1.552000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.912000, 0.560000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.112000, 1.568000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"N", { + {{-1.615999, 0.064000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.592000, 0.112000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.432000, 0.096000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.679999, -0.880000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.488001, 1.103999, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.640000, 0.112000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.392001, -0.928000, 0}, 270, 180, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Farm House", { + {{2.112000, 1.504000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.040000, 1.472000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{0.032000, -1.600000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.056000, 1.504000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.992000, -0.528000, 0}, 0, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{2.080000, 0.512000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.104000, 0.480000, 0}, 270, 180, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Vulture", { + {{0.912000, 1.728000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-2.623998, -1.040000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.992000, 1.104000, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{0.944000, -0.288000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.448000, -1.760000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.887998, -0.368000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{3.008002, 2.160000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Swan", { + {{0.720000, 0.352000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.672000, -1.568000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.376000, 1.104000, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.151999, 1.488000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.320000, 2.096000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.656000, 0.304000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.624000, -2.559999, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"High Karate", { + {{-0.144000, 2.576000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.696001, -2.432000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{2.176001, -0.400000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.624000, -0.512000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.576000, -1.152000, 0}, 0, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.919999, -1.376000, 0}, 303, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.448000, -0.096001, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Lazy", { + {{-2.416000, 1.120000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.952000, -2.016000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.552000, -0.640000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.016000, 1.840000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.456000, -1.072000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.848000, -0.816000, 0}, 332, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.200000, -1.792000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Bat", { + {{-0.304000, -0.352000, 0}, 259, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.304000, -1.344000, 0}, 105, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.312000, -1.024000, 0}, 300, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{1.952000, 0.240000, 0}, 195, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-2.272000, 0.096000, 0}, 11, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.112000, -1.056000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.560000, -1.344000, 0}, 281, 180, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Sail Boat", { + {{0.544000, 2.000000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.880000, 0.160000, 0}, 360, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.656000, -1.503999, 0}, 220, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.656000, -0.336000, 0}, 50, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.688000, -0.288000, 0}, 310, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.864000, 1.232000, 0}, 360, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.496000, 2.016001, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Glenda", { + {{-2.016000, 2.080000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.240001, 1.824000, 0}, 360, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{2.239999, -0.752000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.264000, 2.784000, 0}, 360, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.248000, 0.736000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{0.240001, 0.304000, 0}, 360, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.544000, -2.976001, 0}, 149, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Cat", { + {{1.376000, -1.536001, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.488000, -1.552001, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.352000, -0.048000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-2.144000, 2.415999, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-2.096000, 0.368000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{2.144000, -0.800000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.392000, -0.064000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Lying Cat", { + {{2.480000, -0.912000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{2.592000, -0.928000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.352000, 1.280000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.688000, 0.336000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.808000, -0.112000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{3.248000, -0.176000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.472000, 1.024000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Witch", { + {{-0.943999, -0.304000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.144000, 0.288000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.360000, -2.304000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.328000, -0.848000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.008000, 1.584000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.512000, 2.688000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.863999, -0.096000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Laugh", { + {{0.703999, -0.160000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.064000, -0.400000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.767999, -1.408000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.232000, -1.328000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.040000, 2.624000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.288000, 1.264000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.760001, -1.408000, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Standing Man", { + {{0.272000, 3.392000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.144000, -1.328000, 0}, 331, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.216001, 0.272000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.736000, 0.208000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.432000, -3.440000, 0}, 151, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.720000, 2.320000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.263998, 0.272000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Walking Man", { + {{-1.056000, -3.456000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.736000, 2.000000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.488000, 1.760000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.432000, 0.016000, 0}, 0, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.432000, -0.064000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.560000, -2.576000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.032000, 2.656000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Repose", { + {{-2.800000, -2.304000, 0}, 101, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.888000, 2.032000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.856000, 2.016000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.352000, -0.144000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-2.848000, 0.976000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.424000, -1.104000, 0}, 236, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.792000, 2.016000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Shape", { + {{1.263999, 1.600001, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.311999, -1.568000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.736000, 0.576000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.736000, -2.591999, 0}, 360, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.768000, 2.640001, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.784000, -0.528000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.736000, 0.496000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Shape", { + {{-0.816000, 1.392000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.832000, -1.807999, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{1.216000, -0.752000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.232000, -2.815999, 0}, 270, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{1.248000, 2.400000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.864000, 1.392000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.240000, 1.328000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Lightning", { + {{0.176000, -2.448000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.888000, 2.880000, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.856000, 1.824000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.872000, -1.392000, 0}, 0, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{1.264000, -0.432000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{2.320001, -2.432000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.872000, 1.728000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"E", { + {{0.928000, 1.664000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.896000, -1.519998, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.136000, 0.608000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.152000, -2.559998, 0}, 0, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.152000, 2.672002, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.960000, -0.384000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.136000, 0.528000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Dagger", { + {{-0.096000, 0.448000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.640000, 2.656000, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.064000, -3.104000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.767999, 1.184000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.080000, 0.416000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.416000, -2.064000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.112000, 3.328001, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Knight", { + {{-0.368000, 0.400000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.871998, -1.808000, 0}, 225, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.056000, -0.368000, 0}, 0, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.056000, -1.840000, 0}, 45, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.352000, 1.440000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{0.128000, 0.432000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.119999, -1.120000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Candy", { + {{-1.039999, 1.136000, 0}, 360, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.024000, 0.096000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.016000, 0.048000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.016000, -1.008000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.016000, 1.216000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{1.024000, 0.144000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.032000, 1.088000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"King", { + {{-0.688000, 1.904000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.800000, 1.904000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.512000, -1.392000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{1.488000, 1.120000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.392000, 1.120000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.496000, -1.312000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.480000, -1.376000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Top", { + {{-1.055999, -0.800000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.103999, 0.208000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{0.000000, -0.784000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.016000, 0.272000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.032000, 0.288000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{0.480000, -1.855999, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{2.096001, 0.224000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Dog", { + {{-2.896000, -0.128000, 0}, 45, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.800000, 0.992000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-1.152000, -0.416000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.016000, 0.656000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.456000, -0.736000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{2.864000, 0.736000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.048000, 1.664000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, True}, + }, + }, + {"Moose Head", { + {{2.944000, -0.288000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.936000, -0.224000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.112000, 1.808000, 0}, 315, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{-2.128000, 0.768000, 0}, 90, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{1.888000, 0.768000, 0}, 180, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.112000, -0.688000, 0}, 135, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-3.184000, -1.216000, 0}, 360, 180, 0, INIT_DZ, -SPEED, 0, False}, + }, + }, + {"Negative Square", { + {{-1.520000, -0.624000, 0}, 270, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-1.520000, 0.480000, 0}, 180, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{2.352000, 0.480000, 0}, 225, 0, 0, INIT_DZ, -SPEED, 0, True}, + {{-0.080000, -3.040000, 0}, 315, 180, 0, INIT_DZ, -SPEED, 0, False}, + {{-0.096000, 2.944000, 0}, 135, 180, 0, INIT_DZ, -SPEED, 0, True}, + {{-2.528000, -0.576000, 0}, 90, 0, 0, INIT_DZ, -SPEED, 0, False}, + {{1.360000, -1.600000, 0}, 360, 180, INIT_DZ, -SPEED, 0, True}, + }} +}; + + +static void get_solved_puzzle(ModeInfo * mi, + tangram_shape * tsm1, tangram_shape * tsm2, + tangram_shape * tm, tangram_shape * tlg1, + tangram_shape * tlg2, tangram_shape * sq, + tangram_shape * rh) +{ + tangram_configuration *tp = &tps[MI_SCREEN(mi)]; + int sz = sizeof(solved) / sizeof(solved[0]); + int r; + + /* we don't want to see the same puzzle twice */ + do { + r = random() % sz; + } while (r == tp->csi); + tp->csi = r; + + *tsm1 = solved[r].ts[small_triangle1]; + *tsm2 = solved[r].ts[small_triangle2]; + *tm = solved[r].ts[medium_triangle]; + *tlg1 = solved[r].ts[large_triangle1]; + *tlg2 = solved[r].ts[large_triangle2]; + *sq = solved[r].ts[square]; + *rh = solved[r].ts[rhomboid]; + + tp->puzzle_name = solved[r].name; +} + +static int approach_number(int goal, int current, int step) +{ + + int i = 0; + + if (goal > current) { + while (i < step) { + current++; + if (goal <= current) + break; + i++; + } + } else if (goal < current) { + while (i < step) { + current--; + if (goal >= current) + break; + i++; + } + } + + return current; +} + +/* gt - floating point greater than comparison */ +static Bool gt(GLfloat x1, GLfloat x2, GLfloat per) +{ + if ((x1 > x2) && (fabs(x1 - x2) > per)) + return True; + else + return False; +} + +/* lt - floating point less than comparison */ +static Bool lt(GLfloat x1, GLfloat x2, GLfloat per) +{ + if ((x1 < x2) && (fabs(x1 - x2) > per)) + return True; + else + return False; +} + +static GLfloat approach_float(GLfloat goal, GLfloat current, + Bool * changed, GLfloat per) +{ + *changed = False; + if (gt(goal, current, per)) { + current += per; + *changed = True; + } else if (lt(goal, current, per)) { + current -= per; + *changed = True; + } + return current; +} + +#if 0 +static void print_shape(char *s, tangram_shape sh) +{ + fprintf(stderr, "%s\n", s); + fprintf(stderr, "(%f, %f, %f)\n", sh.crd.x, sh.crd.y, sh.crd.z); + fprintf(stderr, "%d\n", sh.r); + fprintf(stderr, "%d\n", sh.fr); + fprintf(stderr, "\n"); +} +#endif + + +static void reset_shape(tangram_shape * ts) +{ + GLfloat r = random() % 10; + GLfloat f = r / 10; + ts->crd.z = BOTTOM; + ts->dz = INIT_DZ + f; + ts->ddz = -SPEED; +} + +static void bounce(tangram_shape * ts) +{ + ts->crd.z *= -1; /* ignore this */ + ts->dz += ts->ddz; + ts->crd.z += ts->dz * SPEED; + if (ts->crd.z < BOTTOM) { + reset_shape(ts); + } + + ts->crd.z *= -1; /* ignore this */ +} + +static void draw_tangram_shape(tangram_shape ts) +{ + glPushMatrix(); + + if (!do_rotate) { + ts.up = True; + } + + glTranslatef(ts.crd.x, ts.crd.y, ts.up ? ts.crd.z : -ts.crd.z); + glRotated(90, 1, 0, 0); + glRotated(ts.fr, 1, 0, 0); + glRotated(ts.r, 0, 1, 0); + glCallList(ts.dl); + glPopMatrix(); +} + +static void load_fonts(ModeInfo * mi) +{ + tangram_configuration *tp = &tps[MI_SCREEN(mi)]; + tp->font1_data = load_texture_font (mi->dpy, "titleFont"); + tp->font2_data = load_texture_font (mi->dpy, "titleFont2"); + tp->font3_data = load_texture_font (mi->dpy, "titleFont3"); +} + +static void draw_shapes(ModeInfo * mi) +{ + tangram_configuration *tp = &tps[MI_SCREEN(mi)]; + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (h, 1/h, 1); + } +# endif + + draw_tangram_shape(tp->tsm1); + + draw_tangram_shape(tp->tsm2); + draw_tangram_shape(tp->tm); + draw_tangram_shape(tp->tlg1); + draw_tangram_shape(tp->tlg2); + draw_tangram_shape(tp->sq); + draw_tangram_shape(tp->rh); + + if (do_labels) + { + texture_font_data *f; + if (MI_WIDTH(mi) >= 500 && MI_HEIGHT(mi) >= 375) + f = tp->font1_data; + else if (MI_WIDTH(mi) >= 350 && MI_HEIGHT(mi) >= 260) + f = tp->font2_data; + else + f = tp->font3_data; + + glColor3f(0.8, 0.8, 0); + print_texture_label (mi->dpy, f, + mi->xgwa.width, mi->xgwa.height, + 1, tp->pn); + } +} + +ENTRYPOINT void reshape_tangram(ModeInfo * mi, int w, int h) +{ + int y = 0; + + if (w > h * 5) { /* tiny window: show middle */ + h = w; + y = -h/2; + } + + glViewport(0, y, w, h); +} + +static void set_camera(tangram_configuration *tp) +{ + glPushMatrix(); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(60, -1, 0.1, 50); + + + gluLookAt(0, 5, -5, 0, 0, 0, 0, -1, 0); + + if (do_rotate) { + glRotatef(tp->theta[0], 1, 0, 0); + glRotatef(tp->theta[1], 0, 1, 0); + glRotatef(tp->theta[2], 0, 0, 1); + } + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + + + if (tp->going_down[0] && tp->theta[0] < 0) { + + tp->going_down[0] = False; + } else if ((!tp->going_down[0]) && tp->theta[0] > 90) { + + tp->going_down[0] = True; + } + + if (tp->theta[1] > 360.0) + tp->theta[1] -= 360.0; + + if (tp->theta[2] > 360.0) + tp->theta[2] -= 360.0; + + if (tp->going_down[0]) + tp->theta[0] -= x_camera_rotate; + else + tp->theta[0] += x_camera_rotate; + + tp->theta[1] += y_camera_rotate; + tp->theta[2] += z_camera_rotate; +} + +static void init_shapes(ModeInfo * mi) +{ + int wire = MI_IS_WIREFRAME(mi); + tangram_configuration *tp = &tps[MI_SCREEN(mi)]; + get_solved_puzzle(mi, &tp->tsm1, &tp->tsm2, &tp->tm, &tp->tlg1, + &tp->tlg2, &tp->sq, &tp->rh); + get_solved_puzzle(mi, &tp->n_tsm1, &tp->n_tsm2, &tp->n_tm, &tp->n_tlg1, + &tp->n_tlg2, &tp->n_sq, &tp->n_rh); + tp->tsm1.dl = tangram_get_sm_tri_dl(wire); + tp->tsm2.dl = tangram_get_sm_tri_dl(wire); + tp->tm.dl = tangram_get_md_tri_dl(wire); + tp->tlg1.dl = tangram_get_lg_tri_dl(wire); + tp->tlg2.dl = tangram_get_lg_tri_dl(wire); + tp->sq.dl = tangram_get_square_dl(wire); + tp->rh.dl = tangram_get_rhomboid_dl(wire); +} + +static void gl_init(ModeInfo * mi) +{ + + int wire = MI_IS_WIREFRAME(mi); + + GLfloat y = do_rotate ? -10 : 3; + GLfloat x = do_rotate ? 5 : 10; + GLfloat pos[4] = { 0, 0, -5, 1.00 }; + GLfloat pos2[4] = { 0, 0, 5, 1.00 }; + GLfloat dif2[4] = { 1, 1, 1, 1 }; + + pos[0] = -x; + pos[1] = y; + + pos2[1] = x; + pos2[1] = y; + + if (!wire) { + glEnable(GL_LIGHTING); + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_LIGHT0); + if (do_rotate) { + glLightfv(GL_LIGHT1, GL_POSITION, pos2); + glLightfv(GL_LIGHT1, GL_DIFFUSE, dif2); + glEnable(GL_LIGHT1); + } + glEnable(GL_DEPTH_TEST); + } + +} + +ENTRYPOINT void init_tangram(ModeInfo * mi) +{ + tangram_configuration *tp; + + MI_INIT (mi, tps); + + tp = &tps[MI_SCREEN(mi)]; + + if ((tp->glx_context = init_GL(mi)) != NULL) { + gl_init(mi); + } + + reshape_tangram (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + wire = MI_IS_WIREFRAME(mi); + + load_fonts(mi); + init_shapes(mi); + + tp->theta[0] = tp->theta[1] = tp->theta[2] = 1; + +} + +static Bool all_solved(tangram_shape * ls[]) +{ + int i; + Bool b = True; + for (i = 0; i < NUM_SHAPES; i++) { + b = (b && ls[i]->solved); + } + return b; +} + +static void solve(tangram_shape * new_s, tangram_shape * old_s) +{ + Bool moved_x, moved_y, moved_r, moved_fr, z_ok; + + old_s->fr = approach_number(new_s->fr, old_s->fr, 2); + moved_fr = (old_s->fr != new_s->fr); + + old_s->r = approach_number(new_s->r, old_s->r, 2); + moved_r = (old_s->r != new_s->r); + + old_s->crd.x = + approach_float(new_s->crd.x, old_s->crd.x, &moved_x, 0.1); + if (!moved_x) + old_s->crd.x = new_s->crd.x; + + old_s->crd.y = + approach_float(new_s->crd.y, old_s->crd.y, &moved_y, 0.1); + if (!moved_y) + old_s->crd.y = new_s->crd.y; + + z_ok = (-old_s->crd.z <= BOTTOM); + + old_s->solved = (moved_x == False && moved_y == False && + moved_r == False && moved_fr == False && + z_ok == True); +} + +static void set_not_solved(tangram_shape * ls[]) +{ + int i; + for (i = 0; i < NUM_SHAPES; i++) + ls[i]->solved = False; +} + + +ENTRYPOINT void draw_tangram(ModeInfo * mi) +{ + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + tangram_configuration *tp = &tps[MI_SCREEN(mi)]; + + tangram_shape *ls[NUM_SHAPES]; + tangram_shape *nls[NUM_SHAPES]; + + + int i; + int MAX_DISPLAY; + + GLfloat color[4] = { 0.0, 0.0, 0.0, 1.0 }; + GLfloat white[4] = { 1.0, 1.0, 1.0, 1.0 }; + MAX_DISPLAY = viewing_time * 100; + + if (! tp->glx_context) + return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tp->glx_context)); + + ls[small_triangle1] = &tp->tsm1; + ls[small_triangle2] = &tp->tsm2; + ls[medium_triangle] = &tp->tm; + ls[large_triangle1] = &tp->tlg1; + ls[large_triangle2] = &tp->tlg2; + ls[square] = &tp->sq; + ls[rhomboid] = &tp->rh; + + nls[small_triangle1] = &tp->n_tsm1; + nls[small_triangle2] = &tp->n_tsm2; + nls[medium_triangle] = &tp->n_tm; + nls[large_triangle1] = &tp->n_tlg1; + nls[large_triangle2] = &tp->n_tlg2; + nls[square] = &tp->n_sq; + nls[rhomboid] = &tp->n_rh; + + set_camera(tp); + + if (tp->display_counter <= 0) { + for (i = 0; i < NUM_SHAPES; i++) { + if (ls[i]->solved) { + if (all_solved(ls)) { + tp->display_counter = MAX_DISPLAY; + tp->pn = tp->puzzle_name; + get_solved_puzzle(mi, nls[small_triangle1], + nls[small_triangle2], + nls[medium_triangle], + nls[large_triangle1], + nls[large_triangle2], nls[square], + nls[rhomboid]); + tp->ncolors = 128; + tp->colors = + (XColor *) calloc(tp->ncolors, sizeof(XColor)); + + make_random_colormap(0, 0, 0, + tp->colors, &tp->ncolors, + True, False, 0, False); + + + color[0] = tp->colors[0].red / 65536.0; + color[1] = tp->colors[1].green / 65536.0; + color[2] = tp->colors[2].blue / 65536.0; + + + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, + color); + + set_not_solved(ls); + break; + } + } else { + tp->pn = ""; + bounce(ls[i]); + solve(nls[i], ls[i]); + } + } + } else { + tp->display_counter--; + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glPushMatrix(); + + glLoadIdentity(); + + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, white); + glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 128); + + draw_shapes(mi); + + if (mi->fps_p) do_fps (mi); + + glFlush(); + glPopMatrix(); + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT Bool +tangram_handle_event (ModeInfo *mi, XEvent *event) +{ + tangram_configuration *tp = &tps[MI_SCREEN(mi)]; + + if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + tp->display_counter = 0; + return True; + } + + return False; +} + + + +XSCREENSAVER_MODULE ("Tangram", tangram) + +#endif /* USE_GL */ diff --git a/hacks/glx/tangram.man b/hacks/glx/tangram.man new file mode 100644 index 0000000..c5d3980 --- /dev/null +++ b/hacks/glx/tangram.man @@ -0,0 +1,67 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +tangram - watch the computer solve tangram puzzles. +.SH SYNOPSIS +.B tangram +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-wireframe] +[\-viewing_time \fInumber\fP] +[\-rotate] +[\-fps] +.SH DESCRIPTION +The \fItangram\fP program uses a few basic shapes to build silhouettes of recognizable objects. +.SH OPTIONS +.I tangram +accepts the following options: +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-viewing_time \fInumber\fP +Specify the length of time, in seconds, that the finished puzzle +should be displayed. Default: 5 +.TP 8 +.B \-rotate | \-no-rotate +Rotate the camera around the puzzle. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2005 by Jeremy English. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jeremy English diff --git a/hacks/glx/tangram_shapes.c b/hacks/glx/tangram_shapes.c new file mode 100644 index 0000000..267b187 --- /dev/null +++ b/hacks/glx/tangram_shapes.c @@ -0,0 +1,240 @@ +/* tangram, Copyright (c) 2005 Jeremy English + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifndef HAVE_JWXYZ +# include +#endif + +#ifdef HAVE_ANDROID +#include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "tangram_shapes.h" + +#define small_scale ( 1 ) +#define large_scale ( 2 ) +#define medium_scale ( 1.414213562 ) + +#define alpha (0.05) + +static void +tri_45_90(int wire) +{ + GLfloat vertices[][3] = { + {0, alpha, 0}, + {0, alpha, 1}, + {1, alpha, 0}, + {0, -alpha, 0}, + {0, -alpha, 1}, + {1, -alpha, 0} + }; + + glBegin((wire) ? GL_LINE_LOOP : GL_TRIANGLES); + + glNormal3f(0, 1, 0); + glVertex3fv(vertices[0]); + glNormal3f(0, 1, 0); + glVertex3fv(vertices[2]); + glNormal3f(0, 1, 0); + glVertex3fv(vertices[1]); + + glNormal3f(0, -1, 0); + glVertex3fv(vertices[3]); + glNormal3f(0, -1, 0); + glVertex3fv(vertices[4]); + glNormal3f(0, -1, 0); + glVertex3fv(vertices[5]); + glEnd(); + + glBegin((wire) ? GL_LINE_LOOP : GL_QUADS); + glNormal3f(1, 0, 1); + glVertex3fv(vertices[2]); + glNormal3f(1, 0, 1); + glVertex3fv(vertices[5]); + glNormal3f(1, 0, 1); + glVertex3fv(vertices[4]); + glNormal3f(1, 0, 1); + glVertex3fv(vertices[1]); + + glNormal3f(-1, 0, 0); + glVertex3fv(vertices[0]); + glNormal3f(-1, 0, 0); + glVertex3fv(vertices[1]); + glNormal3f(-1, 0, 0); + glVertex3fv(vertices[4]); + glNormal3f(-1, 0, 0); + glVertex3fv(vertices[3]); + + glNormal3f(0, 0, -1); + glVertex3fv(vertices[0]); + glNormal3f(0, 0, -1); + glVertex3fv(vertices[3]); + glNormal3f(0, 0, -1); + glVertex3fv(vertices[5]); + glNormal3f(0, 0, -1); + glVertex3fv(vertices[2]); + glEnd(); +} + +static void +unit_cube(int wire) +{ + glBegin((wire) ? GL_LINE_LOOP : GL_QUADS); + + + glNormal3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, alpha, 0.0f); + glVertex3f(0.0f, alpha, 1.0f); + glVertex3f(1.0f, alpha, 1.0f); + glVertex3f(1.0f, alpha, 0.0f); + + glNormal3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, -alpha, 1.0f); + glVertex3f(1.0f, -alpha, 1.0f); + glVertex3f(1.0f, alpha, 1.0f); + glVertex3f(0.0f, alpha, 1.0f); + + glNormal3f(0.0f, 0.0f, -1.0f); + glVertex3f(0.0f, -alpha, 0.0f); + glVertex3f(0.0f, alpha, 0.0f); + glVertex3f(1.0f, alpha, 0.0f); + glVertex3f(1.0f, -alpha, 0.0f); + + glNormal3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, -alpha, 0.0f); + glVertex3f(1.0f, alpha, 0.0f); + glVertex3f(1.0f, alpha, 1.0f); + glVertex3f(1.0f, -alpha, 1.0f); + + glNormal3f(-1.0f, 0.0f, 0.0f); + glVertex3f(0.0f, -alpha, 0.0f); + glVertex3f(0.0f, -alpha, 1.0f); + glVertex3f(0.0f, alpha, 1.0f); + glVertex3f(0.0f, alpha, 0.0f); + + glNormal3f(0.0f, -1.0f, 0.0f); + glVertex3f(0.0f, -alpha, 0.0f); + glVertex3f(1.0f, -alpha, 0.0f); + glVertex3f(1.0f, -alpha, 1.0f); + glVertex3f(0.0f, -alpha, 1.0f); + + glEnd(); +} + +static void +unit_rhomboid(int wire) +{ + glBegin((wire) ? GL_LINE_LOOP : GL_QUADS); + + glNormal3f(0.0f, 1.0f, 0.0f); + glVertex3f(0, alpha, 0); + glVertex3f(1, alpha, 1); + glVertex3f(1, alpha, 2); + glVertex3f(0, alpha, 1); + + glNormal3f(0.0f, -1.0f, 0.0f); + glVertex3f(0, -alpha, 0); + glVertex3f(0, -alpha, 1); + glVertex3f(1, -alpha, 2); + glVertex3f(1, -alpha, 1); + + glNormal3f(-1.0f, 0.0f, 0.0f); + glVertex3f(0, alpha, 0); + glVertex3f(0, alpha, 1); + glVertex3f(0, -alpha, 1); + glVertex3f(0, -alpha, 0); + + + glNormal3f(0.0f, 0.0f, 1.0f); + glVertex3f(0, alpha, 1); + glVertex3f(1, alpha, 2); + glVertex3f(1, -alpha, 2); + glVertex3f(0, -alpha, 1); + + glNormal3f(1.0f, 0.0f, 0.0f); + glVertex3f(1, alpha, 1); + glVertex3f(1, -alpha, 1); + glVertex3f(1, -alpha, 2); + glVertex3f(1, alpha, 2); + + glNormal3f(0.0f, 0.0f, 1.0f); + glVertex3f(0, alpha, 0); + glVertex3f(0, -alpha, 0); + glVertex3f(1, -alpha, 1); + glVertex3f(1, alpha, 1); + + glEnd(); +} + +/* All of the pieces have the same thickness so all of the Y values are the same */ + +GLuint +tangram_get_sm_tri_dl(int wire) +{ + GLuint triangle = glGenLists(1); + glNewList(triangle, GL_COMPILE); + glScalef(small_scale, small_scale, small_scale); + tri_45_90(wire); + glEndList(); + return triangle; +} + +GLuint +tangram_get_lg_tri_dl(int wire) +{ + GLuint triangle = glGenLists(1); + glNewList(triangle, GL_COMPILE); + glScalef(large_scale, small_scale, large_scale); + tri_45_90(wire); + glEndList(); + return triangle; +} + +GLuint +tangram_get_md_tri_dl(int wire) +{ + GLuint triangle = glGenLists(1); + glNewList(triangle, GL_COMPILE); + glScalef(medium_scale, small_scale, medium_scale); + tri_45_90(wire); + glEndList(); + return triangle; +} + +GLuint +tangram_get_square_dl(int wire) +{ + GLuint square = glGenLists(1); + glNewList(square, GL_COMPILE); + glScalef(small_scale, small_scale, small_scale); + unit_cube(wire); + glEndList(); + return square; +} + +GLuint +tangram_get_rhomboid_dl(int wire) +{ + GLuint rhomboid = glGenLists(1); + glNewList(rhomboid, GL_COMPILE); + glScalef(small_scale, small_scale, small_scale); + unit_rhomboid(wire); + glEndList(); + return rhomboid; +} diff --git a/hacks/glx/tangram_shapes.h b/hacks/glx/tangram_shapes.h new file mode 100644 index 0000000..254f8f3 --- /dev/null +++ b/hacks/glx/tangram_shapes.h @@ -0,0 +1,15 @@ +#ifndef TANGRAM_SHAPES_H +#define TANGRAM_SHAPES_H + +/* get_sm_tri_dl - Get small triangle Display List */ +GLuint tangram_get_sm_tri_dl(int wire); +/* get_lg_tri_dl - Get large triangle Display List */ +GLuint tangram_get_lg_tri_dl(int wire); +/* get_md_tri_dl - Get medium triangle Display List */ +GLuint tangram_get_md_tri_dl(int wire); +/* get_square_dl - Get square Display List */ +GLuint tangram_get_square_dl(int wire); +/* get_rhomboid_dl - Get rhomboid Display List */ +GLuint tangram_get_rhomboid_dl(int wire); + +#endif diff --git a/hacks/glx/teapot.c b/hacks/glx/teapot.c new file mode 100644 index 0000000..c885d27 --- /dev/null +++ b/hacks/glx/teapot.c @@ -0,0 +1,285 @@ + +/* Copyright (c) Mark J. Kilgard, 1994. */ + +/** +(c) Copyright 1993, Silicon Graphics, Inc. + +ALL RIGHTS RESERVED + +Permission to use, copy, modify, and distribute this software +for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that +both the copyright notice and this permission notice appear in +supporting documentation, and that the name of Silicon +Graphics, Inc. not be used in advertising or publicity +pertaining to distribution of the software without specific, +written prior permission. + +THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU +"AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR +OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO +EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE +ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, +INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, +SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR +NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY +OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR +PERFORMANCE OF THIS SOFTWARE. + +US Government Users Restricted Rights + +Use, duplication, or disclosure by the Government is subject to +restrictions set forth in FAR 52.227.19(c)(2) or subparagraph +(c)(1)(ii) of the Rights in Technical Data and Computer +Software clause at DFARS 252.227-7013 and/or in similar or +successor clauses in the FAR or the DOD or NASA FAR +Supplement. Unpublished-- rights reserved under the copyright +laws of the United States. Contractor/manufacturer is Silicon +Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA +94039-7311. + +OpenGL(TM) is a trademark of Silicon Graphics, Inc. +*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "teapot.h" + +#ifndef HAVE_JWXYZ +# include +#endif +#ifdef HAVE_ANDROID +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#else +# define HAVE_GLMAP +#endif + + +#ifdef HAVE_GLMAP + +/* Rim, body, lid, and bottom data must be reflected in x + and y; handle and spout data across the y axis only. */ + +static long patchdata[][16] = +{ + /* rim */ + {102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15}, + /* body */ + {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27}, + {24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40}, + /* lid */ + {96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101, + 101, 0, 1, 2, 3,}, + {0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117}, + /* bottom */ + {118, 118, 118, 118, 124, 122, 119, 121, 123, 126, + 125, 120, 40, 39, 38, 37}, + /* handle */ + {41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56}, + {53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 28, 65, 66, 67}, + /* spout */ + {68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83}, + {80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95} +}; +/* *INDENT-OFF* */ + +static float cpdata[][3] = +{ + {0.2, 0, 2.7}, {0.2, -0.112, 2.7}, {0.112, -0.2, 2.7}, {0, + -0.2, 2.7}, {1.3375, 0, 2.53125}, {1.3375, -0.749, 2.53125}, + {0.749, -1.3375, 2.53125}, {0, -1.3375, 2.53125}, {1.4375, + 0, 2.53125}, {1.4375, -0.805, 2.53125}, {0.805, -1.4375, + 2.53125}, {0, -1.4375, 2.53125}, {1.5, 0, 2.4}, {1.5, -0.84, + 2.4}, {0.84, -1.5, 2.4}, {0, -1.5, 2.4}, {1.75, 0, 1.875}, + {1.75, -0.98, 1.875}, {0.98, -1.75, 1.875}, {0, -1.75, + 1.875}, {2, 0, 1.35}, {2, -1.12, 1.35}, {1.12, -2, 1.35}, + {0, -2, 1.35}, {2, 0, 0.9}, {2, -1.12, 0.9}, {1.12, -2, + 0.9}, {0, -2, 0.9}, {-2, 0, 0.9}, {2, 0, 0.45}, {2, -1.12, + 0.45}, {1.12, -2, 0.45}, {0, -2, 0.45}, {1.5, 0, 0.225}, + {1.5, -0.84, 0.225}, {0.84, -1.5, 0.225}, {0, -1.5, 0.225}, + {1.5, 0, 0.15}, {1.5, -0.84, 0.15}, {0.84, -1.5, 0.15}, {0, + -1.5, 0.15}, {-1.6, 0, 2.025}, {-1.6, -0.3, 2.025}, {-1.5, + -0.3, 2.25}, {-1.5, 0, 2.25}, {-2.3, 0, 2.025}, {-2.3, -0.3, + 2.025}, {-2.5, -0.3, 2.25}, {-2.5, 0, 2.25}, {-2.7, 0, + 2.025}, {-2.7, -0.3, 2.025}, {-3, -0.3, 2.25}, {-3, 0, + 2.25}, {-2.7, 0, 1.8}, {-2.7, -0.3, 1.8}, {-3, -0.3, 1.8}, + {-3, 0, 1.8}, {-2.7, 0, 1.575}, {-2.7, -0.3, 1.575}, {-3, + -0.3, 1.35}, {-3, 0, 1.35}, {-2.5, 0, 1.125}, {-2.5, -0.3, + 1.125}, {-2.65, -0.3, 0.9375}, {-2.65, 0, 0.9375}, {-2, + -0.3, 0.9}, {-1.9, -0.3, 0.6}, {-1.9, 0, 0.6}, {1.7, 0, + 1.425}, {1.7, -0.66, 1.425}, {1.7, -0.66, 0.6}, {1.7, 0, + 0.6}, {2.6, 0, 1.425}, {2.6, -0.66, 1.425}, {3.1, -0.66, + 0.825}, {3.1, 0, 0.825}, {2.3, 0, 2.1}, {2.3, -0.25, 2.1}, + {2.4, -0.25, 2.025}, {2.4, 0, 2.025}, {2.7, 0, 2.4}, {2.7, + -0.25, 2.4}, {3.3, -0.25, 2.4}, {3.3, 0, 2.4}, {2.8, 0, + 2.475}, {2.8, -0.25, 2.475}, {3.525, -0.25, 2.49375}, + {3.525, 0, 2.49375}, {2.9, 0, 2.475}, {2.9, -0.15, 2.475}, + {3.45, -0.15, 2.5125}, {3.45, 0, 2.5125}, {2.8, 0, 2.4}, + {2.8, -0.15, 2.4}, {3.2, -0.15, 2.4}, {3.2, 0, 2.4}, {0, 0, + 3.15}, {0.8, 0, 3.15}, {0.8, -0.45, 3.15}, {0.45, -0.8, + 3.15}, {0, -0.8, 3.15}, {0, 0, 2.85}, {1.4, 0, 2.4}, {1.4, + -0.784, 2.4}, {0.784, -1.4, 2.4}, {0, -1.4, 2.4}, {0.4, 0, + 2.55}, {0.4, -0.224, 2.55}, {0.224, -0.4, 2.55}, {0, -0.4, + 2.55}, {1.3, 0, 2.55}, {1.3, -0.728, 2.55}, {0.728, -1.3, + 2.55}, {0, -1.3, 2.55}, {1.3, 0, 2.4}, {1.3, -0.728, 2.4}, + {0.728, -1.3, 2.4}, {0, -1.3, 2.4}, {0, 0, 0}, {1.425, + -0.798, 0}, {1.5, 0, 0.075}, {1.425, 0, 0}, {0.798, -1.425, + 0}, {0, -1.5, 0.075}, {0, -1.425, 0}, {1.5, -0.84, 0.075}, + {0.84, -1.5, 0.075} +}; + +static float tex[2][2][2] = +{ + { {0, 0}, + {1, 0}}, + { {0, 1}, + {1, 1}} +}; + + +int +unit_teapot (int grid, int wire_p) +{ + GLenum type = wire_p ? GL_LINE : GL_FILL; + float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3]; + long i, j, k, l; + int polys = 0; + + glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT); + glEnable(GL_AUTO_NORMAL); + glEnable(GL_NORMALIZE); + glEnable(GL_MAP2_VERTEX_3); + glEnable(GL_MAP2_TEXTURE_COORD_2); + glFrontFace (GL_CW); + glPushMatrix(); + glRotatef(270.0, 1.0, 0.0, 0.0); + glScalef(0.5, 0.5, 0.5); + glTranslatef(0.0, 0.0, -1.5); + for (i = 0; i < 10; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 4; k++) { + for (l = 0; l < 3; l++) { + p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; + q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l]; + if (l == 1) + q[j][k][l] *= -1.0; + if (i < 6) { + r[j][k][l] = + cpdata[patchdata[i][j * 4 + (3 - k)]][l]; + if (l == 0) + r[j][k][l] *= -1.0; + s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; + if (l == 0) + s[j][k][l] *= -1.0; + if (l == 1) + s[j][k][l] *= -1.0; + } + } + } + } + glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2, + &tex[0][0][0]); + glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, + &p[0][0][0]); + glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0); + glEvalMesh2(type, 0, grid, 0, grid); + polys += grid*grid*2; + glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, + &q[0][0][0]); + glEvalMesh2(type, 0, grid, 0, grid); + polys += grid*grid*2; + if (i < 6) { + glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, + &r[0][0][0]); + glEvalMesh2(type, 0, grid, 0, grid); + polys += grid*grid*2; + glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, + &s[0][0][0]); + glEvalMesh2(type, 0, grid, 0, grid); + polys += grid*grid*2; + } + } + glPopMatrix(); + glPopAttrib(); + + return polys; +} + +#else /* !HAVE_GLMAP */ + +# include "normals.h" +# include "teapot2.h" + +int +unit_teapot (int grid, int wire_p) +{ + int polys = sizeof (teapot_triangles) / sizeof (*teapot_triangles) / 9; + int i; + const GLfloat *p = teapot_triangles; + GLfloat scale = 1 / 2.3; + + glPushMatrix(); + glScalef (scale, scale, scale); + glTranslatef (0, -1.25, 0); + + if (wire_p) + { + glBegin (GL_LINES); + for (i = 0; i < polys; i++) + { + XYZ p1, p2, p3; + p1.x = *p++; p1.y = *p++; p1.z = *p++; + p2.x = *p++; p2.y = *p++; p2.z = *p++; + p3.x = *p++; p3.y = *p++; p3.z = *p++; + glVertex3f (p1.x, p1.y, p1.z); /* Draw 2 edges of each triangle */ + glVertex3f (p2.x, p2.y, p2.z); + glVertex3f (p1.x, p1.y, p1.z); + glVertex3f (p3.x, p3.y, p3.z); + i++; /* Skip every other triangle */ + p += 9; + } + glEnd(); + polys /= 2; + } + else + { + glFrontFace (GL_CCW); + glBegin (GL_TRIANGLES); + for (i = 0; i < polys; i++) + { + XYZ p1, p2, p3; + p1.x = *p++; p1.y = *p++; p1.z = *p++; + p2.x = *p++; p2.y = *p++; p2.z = *p++; + p3.x = *p++; p3.y = *p++; p3.z = *p++; + do_normal (p1.x, p1.y, p1.z, + p2.x, p2.y, p2.z, + p3.x, p3.y, p3.z); + glVertex3f (p1.x, p1.y, p1.z); + glVertex3f (p2.x, p2.y, p2.z); + glVertex3f (p3.x, p3.y, p3.z); + } + glEnd(); + } + glPopMatrix(); + + return polys; +} + +#endif /* !HAVE_GLMAP */ diff --git a/hacks/glx/teapot.h b/hacks/glx/teapot.h new file mode 100644 index 0000000..60b5fe5 --- /dev/null +++ b/hacks/glx/teapot.h @@ -0,0 +1,7 @@ + +#ifndef __TEAPOT_H__ +#define __TEAPOT_H__ + +extern int unit_teapot (int density, int wire_p); + +#endif /* __TEAPOT_H__ */ diff --git a/hacks/glx/teapot2.h b/hacks/glx/teapot2.h new file mode 100644 index 0000000..c9d4def --- /dev/null +++ b/hacks/glx/teapot2.h @@ -0,0 +1,6330 @@ +/* The Utah Teapot. Martin Newell, 1975. + + Since GLUtesselator doesn't exist in the iOS build, we use these + triangles there instead of generating the teapot from Newell's + original Bezier patches, because I didn't feel like re-implementing + that code. + */ + +static const GLfloat teapot_triangles[] = { + 1.368074,2.435437,-0.227403, 1.381968,2.4,-0.229712, 1.4,2.4,0, + 1.4,2.4,0, 1.385925,2.435437,0, 1.368074,2.435437,-0.227403, + 1.316296,2.435437,-0.442166, 1.329664,2.4,-0.446656, 1.381968,2.4,-0.229712, + 1.381968,2.4,-0.229712, 1.368074,2.435437,-0.227403, 1.316296,2.435437,-0.442166, + 1.233252,2.435437,-0.641628, 1.245776,2.4,-0.648144, 1.329664,2.4,-0.446656, + 1.329664,2.4,-0.446656, 1.316296,2.435437,-0.442166, 1.233252,2.435437,-0.641628, + 1.121601,2.435437,-0.823129, 1.132992,2.4,-0.831488, 1.245776,2.4,-0.648144, + 1.245776,2.4,-0.648144, 1.233252,2.435437,-0.641628, 1.121601,2.435437,-0.823129, + 0.984007,2.435437,-0.984007, 0.994,2.4,-0.994, 1.132992,2.4,-0.831488, + 1.132992,2.4,-0.831488, 1.121601,2.435437,-0.823129, 0.984007,2.435437,-0.984007, + 0.823129,2.435437,-1.121601, 0.831488,2.4,-1.132992, 0.994,2.4,-0.994, + 0.994,2.4,-0.994, 0.984007,2.435437,-0.984007, 0.823129,2.435437,-1.121601, + 0.641628,2.435437,-1.233252, 0.648144,2.4,-1.245776, 0.831488,2.4,-1.132992, + 0.831488,2.4,-1.132992, 0.823129,2.435437,-1.121601, 0.641628,2.435437,-1.233252, + 0.442166,2.435437,-1.316296, 0.446656,2.4,-1.329664, 0.648144,2.4,-1.245776, + 0.648144,2.4,-1.245776, 0.641628,2.435437,-1.233252, 0.442166,2.435437,-1.316296, + 0.227403,2.435437,-1.368074, 0.229712,2.4,-1.381968, 0.446656,2.4,-1.329664, + 0.446656,2.4,-1.329664, 0.442166,2.435437,-1.316296, 0.227403,2.435437,-1.368074, + 0,2.435437,-1.385925, 0,2.4,-1.4, 0.229712,2.4,-1.381968, + 0.229712,2.4,-1.381968, 0.227403,2.435437,-1.368074, 0,2.435437,-1.385925, + 1.36262,2.463,-0.226496, 1.368074,2.435437,-0.227403, 1.385925,2.435437,0, + 1.385925,2.435437,0, 1.3804,2.463,0, 1.36262,2.463,-0.226496, + 1.311049,2.463,-0.440403, 1.316296,2.435437,-0.442166, 1.368074,2.435437,-0.227403, + 1.368074,2.435437,-0.227403, 1.36262,2.463,-0.226496, 1.311049,2.463,-0.440403, + 1.228335,2.463,-0.63907, 1.233252,2.435437,-0.641628, 1.316296,2.435437,-0.442166, + 1.316296,2.435437,-0.442166, 1.311049,2.463,-0.440403, 1.228335,2.463,-0.63907, + 1.11713,2.463,-0.819847, 1.121601,2.435437,-0.823129, 1.233252,2.435437,-0.641628, + 1.233252,2.435437,-0.641628, 1.228335,2.463,-0.63907, 1.11713,2.463,-0.819847, + 0.980084,2.463,-0.980084, 0.984007,2.435437,-0.984007, 1.121601,2.435437,-0.823129, + 1.121601,2.435437,-0.823129, 1.11713,2.463,-0.819847, 0.980084,2.463,-0.980084, + 0.819847,2.463,-1.11713, 0.823129,2.435437,-1.121601, 0.984007,2.435437,-0.984007, + 0.984007,2.435437,-0.984007, 0.980084,2.463,-0.980084, 0.819847,2.463,-1.11713, + 0.63907,2.463,-1.228335, 0.641628,2.435437,-1.233252, 0.823129,2.435437,-1.121601, + 0.823129,2.435437,-1.121601, 0.819847,2.463,-1.11713, 0.63907,2.463,-1.228335, + 0.440403,2.463,-1.311049, 0.442166,2.435437,-1.316296, 0.641628,2.435437,-1.233252, + 0.641628,2.435437,-1.233252, 0.63907,2.463,-1.228335, 0.440403,2.463,-1.311049, + 0.226496,2.463,-1.36262, 0.227403,2.435437,-1.368074, 0.442166,2.435437,-1.316296, + 0.442166,2.435437,-1.316296, 0.440403,2.463,-1.311049, 0.226496,2.463,-1.36262, + 0,2.463,-1.3804, 0,2.435437,-1.385925, 0.227403,2.435437,-1.368074, + 0.227403,2.435437,-1.368074, 0.226496,2.463,-1.36262, 0,2.463,-1.3804, + 1.364422,2.482687,-0.226795, 1.36262,2.463,-0.226496, 1.3804,2.463,0, + 1.3804,2.463,0, 1.382225,2.482687,0, 1.364422,2.482687,-0.226795, + 1.312782,2.482687,-0.440985, 1.311049,2.463,-0.440403, 1.36262,2.463,-0.226496, + 1.36262,2.463,-0.226496, 1.364422,2.482687,-0.226795, 1.312782,2.482687,-0.440985, + 1.229959,2.482687,-0.639915, 1.228335,2.463,-0.63907, 1.311049,2.463,-0.440403, + 1.311049,2.463,-0.440403, 1.312782,2.482687,-0.440985, 1.229959,2.482687,-0.639915, + 1.118607,2.482687,-0.820931, 1.11713,2.463,-0.819847, 1.228335,2.463,-0.63907, + 1.228335,2.463,-0.63907, 1.229959,2.482687,-0.639915, 1.118607,2.482687,-0.820931, + 0.98138,2.482687,-0.98138, 0.980084,2.463,-0.980084, 1.11713,2.463,-0.819847, + 1.11713,2.463,-0.819847, 1.118607,2.482687,-0.820931, 0.98138,2.482687,-0.98138, + 0.820931,2.482687,-1.118607, 0.819847,2.463,-1.11713, 0.980084,2.463,-0.980084, + 0.980084,2.463,-0.980084, 0.98138,2.482687,-0.98138, 0.820931,2.482687,-1.118607, + 0.639915,2.482687,-1.229959, 0.63907,2.463,-1.228335, 0.819847,2.463,-1.11713, + 0.819847,2.463,-1.11713, 0.820931,2.482687,-1.118607, 0.639915,2.482687,-1.229959, + 0.440985,2.482687,-1.312782, 0.440403,2.463,-1.311049, 0.63907,2.463,-1.228335, + 0.63907,2.463,-1.228335, 0.639915,2.482687,-1.229959, 0.440985,2.482687,-1.312782, + 0.226795,2.482687,-1.364422, 0.226496,2.463,-1.36262, 0.440403,2.463,-1.311049, + 0.440403,2.463,-1.311049, 0.440985,2.482687,-1.312782, 0.226795,2.482687,-1.364422, + 0,2.482687,-1.382225, 0,2.463,-1.3804, 0.226496,2.463,-1.36262, + 0.226496,2.463,-1.36262, 0.226795,2.482687,-1.364422, 0,2.482687,-1.382225, + 1.372294,2.4945,-0.228104, 1.364422,2.482687,-0.226795, 1.382225,2.482687,0, + 1.382225,2.482687,0, 1.3902,2.4945,0, 1.372294,2.4945,-0.228104, + 1.320356,2.4945,-0.443529, 1.312782,2.482687,-0.440985, 1.364422,2.482687,-0.226795, + 1.364422,2.482687,-0.226795, 1.372294,2.4945,-0.228104, 1.320356,2.4945,-0.443529, + 1.237056,2.4945,-0.643607, 1.229959,2.482687,-0.639915, 1.312782,2.482687,-0.440985, + 1.312782,2.482687,-0.440985, 1.320356,2.4945,-0.443529, 1.237056,2.4945,-0.643607, + 1.125061,2.4945,-0.825668, 1.118607,2.482687,-0.820931, 1.229959,2.482687,-0.639915, + 1.229959,2.482687,-0.639915, 1.237056,2.4945,-0.643607, 1.125061,2.4945,-0.825668, + 0.987042,2.4945,-0.987042, 0.98138,2.482687,-0.98138, 1.118607,2.482687,-0.820931, + 1.118607,2.482687,-0.820931, 1.125061,2.4945,-0.825668, 0.987042,2.4945,-0.987042, + 0.825668,2.4945,-1.125061, 0.820931,2.482687,-1.118607, 0.98138,2.482687,-0.98138, + 0.98138,2.482687,-0.98138, 0.987042,2.4945,-0.987042, 0.825668,2.4945,-1.125061, + 0.643607,2.4945,-1.237056, 0.639915,2.482687,-1.229959, 0.820931,2.482687,-1.118607, + 0.820931,2.482687,-1.118607, 0.825668,2.4945,-1.125061, 0.643607,2.4945,-1.237056, + 0.443529,2.4945,-1.320356, 0.440985,2.482687,-1.312782, 0.639915,2.482687,-1.229959, + 0.639915,2.482687,-1.229959, 0.643607,2.4945,-1.237056, 0.443529,2.4945,-1.320356, + 0.228104,2.4945,-1.372294, 0.226795,2.482687,-1.364422, 0.440985,2.482687,-1.312782, + 0.440985,2.482687,-1.312782, 0.443529,2.4945,-1.320356, 0.228104,2.4945,-1.372294, + 0,2.4945,-1.3902, 0,2.482687,-1.382225, 0.226795,2.482687,-1.364422, + 0.226795,2.482687,-1.364422, 0.228104,2.4945,-1.372294, 0,2.4945,-1.3902, + 1.385053,2.498438,-0.230225, 1.372294,2.4945,-0.228104, 1.3902,2.4945,0, + 1.3902,2.4945,0, 1.403125,2.498438,0, 1.385053,2.498438,-0.230225, + 1.332632,2.498438,-0.447653, 1.320356,2.4945,-0.443529, 1.372294,2.4945,-0.228104, + 1.372294,2.4945,-0.228104, 1.385053,2.498438,-0.230225, 1.332632,2.498438,-0.447653, + 1.248557,2.498438,-0.649591, 1.237056,2.4945,-0.643607, 1.320356,2.4945,-0.443529, + 1.320356,2.4945,-0.443529, 1.332632,2.498438,-0.447653, 1.248557,2.498438,-0.649591, + 1.135521,2.498438,-0.833344, 1.125061,2.4945,-0.825668, 1.237056,2.4945,-0.643607, + 1.237056,2.4945,-0.643607, 1.248557,2.498438,-0.649591, 1.135521,2.498438,-0.833344, + 0.996219,2.498438,-0.996219, 0.987042,2.4945,-0.987042, 1.125061,2.4945,-0.825668, + 1.125061,2.4945,-0.825668, 1.135521,2.498438,-0.833344, 0.996219,2.498438,-0.996219, + 0.833344,2.498438,-1.135521, 0.825668,2.4945,-1.125061, 0.987042,2.4945,-0.987042, + 0.987042,2.4945,-0.987042, 0.996219,2.498438,-0.996219, 0.833344,2.498438,-1.135521, + 0.649591,2.498438,-1.248557, 0.643607,2.4945,-1.237056, 0.825668,2.4945,-1.125061, + 0.825668,2.4945,-1.125061, 0.833344,2.498438,-1.135521, 0.649591,2.498438,-1.248557, + 0.447653,2.498438,-1.332632, 0.443529,2.4945,-1.320356, 0.643607,2.4945,-1.237056, + 0.643607,2.4945,-1.237056, 0.649591,2.498438,-1.248557, 0.447653,2.498438,-1.332632, + 0.230225,2.498438,-1.385053, 0.228104,2.4945,-1.372294, 0.443529,2.4945,-1.320356, + 0.443529,2.4945,-1.320356, 0.447653,2.498438,-1.332632, 0.230225,2.498438,-1.385053, + 0,2.498438,-1.403125, 0,2.4945,-1.3902, 0.228104,2.4945,-1.372294, + 0.228104,2.4945,-1.372294, 0.230225,2.498438,-1.385053, 0,2.498438,-1.403125, + 1.401513,2.4945,-0.232961, 1.385053,2.498438,-0.230225, 1.403125,2.498438,0, + 1.403125,2.498438,0, 1.4198,2.4945,0, 1.401513,2.4945,-0.232961, + 1.348469,2.4945,-0.452973, 1.332632,2.498438,-0.447653, 1.385053,2.498438,-0.230225, + 1.385053,2.498438,-0.230225, 1.401513,2.4945,-0.232961, 1.348469,2.4945,-0.452973, + 1.263395,2.4945,-0.657311, 1.248557,2.498438,-0.649591, 1.332632,2.498438,-0.447653, + 1.332632,2.498438,-0.447653, 1.348469,2.4945,-0.452973, 1.263395,2.4945,-0.657311, + 1.149016,2.4945,-0.843248, 1.135521,2.498438,-0.833344, 1.248557,2.498438,-0.649591, + 1.248557,2.498438,-0.649591, 1.263395,2.4945,-0.657311, 1.149016,2.4945,-0.843248, + 1.008058,2.4945,-1.008058, 0.996219,2.498438,-0.996219, 1.135521,2.498438,-0.833344, + 1.135521,2.498438,-0.833344, 1.149016,2.4945,-0.843248, 1.008058,2.4945,-1.008058, + 0.843248,2.4945,-1.149016, 0.833344,2.498438,-1.135521, 0.996219,2.498438,-0.996219, + 0.996219,2.498438,-0.996219, 1.008058,2.4945,-1.008058, 0.843248,2.4945,-1.149016, + 0.657311,2.4945,-1.263395, 0.649591,2.498438,-1.248557, 0.833344,2.498438,-1.135521, + 0.833344,2.498438,-1.135521, 0.843248,2.4945,-1.149016, 0.657311,2.4945,-1.263395, + 0.452973,2.4945,-1.348469, 0.447653,2.498438,-1.332632, 0.649591,2.498438,-1.248557, + 0.649591,2.498438,-1.248557, 0.657311,2.4945,-1.263395, 0.452973,2.4945,-1.348469, + 0.232961,2.4945,-1.401513, 0.230225,2.498438,-1.385053, 0.447653,2.498438,-1.332632, + 0.447653,2.498438,-1.332632, 0.452973,2.4945,-1.348469, 0.232961,2.4945,-1.401513, + 0,2.4945,-1.4198, 0,2.498438,-1.403125, 0.230225,2.498438,-1.385053, + 0.230225,2.498438,-1.385053, 0.232961,2.4945,-1.401513, 0,2.4945,-1.4198, + 1.42049,2.482687,-0.236115, 1.401513,2.4945,-0.232961, 1.4198,2.4945,0, + 1.4198,2.4945,0, 1.439025,2.482687,0, 1.42049,2.482687,-0.236115, + 1.366728,2.482687,-0.459107, 1.348469,2.4945,-0.452973, 1.401513,2.4945,-0.232961, + 1.401513,2.4945,-0.232961, 1.42049,2.482687,-0.236115, 1.366728,2.482687,-0.459107, + 1.280502,2.482687,-0.666211, 1.263395,2.4945,-0.657311, 1.348469,2.4945,-0.452973, + 1.348469,2.4945,-0.452973, 1.366728,2.482687,-0.459107, 1.280502,2.482687,-0.666211, + 1.164574,2.482687,-0.854666, 1.149016,2.4945,-0.843248, 1.263395,2.4945,-0.657311, + 1.263395,2.4945,-0.657311, 1.280502,2.482687,-0.666211, 1.164574,2.482687,-0.854666, + 1.021708,2.482687,-1.021708, 1.008058,2.4945,-1.008058, 1.149016,2.4945,-0.843248, + 1.149016,2.4945,-0.843248, 1.164574,2.482687,-0.854666, 1.021708,2.482687,-1.021708, + 0.854666,2.482687,-1.164574, 0.843248,2.4945,-1.149016, 1.008058,2.4945,-1.008058, + 1.008058,2.4945,-1.008058, 1.021708,2.482687,-1.021708, 0.854666,2.482687,-1.164574, + 0.666211,2.482687,-1.280502, 0.657311,2.4945,-1.263395, 0.843248,2.4945,-1.149016, + 0.843248,2.4945,-1.149016, 0.854666,2.482687,-1.164574, 0.666211,2.482687,-1.280502, + 0.459107,2.482687,-1.366728, 0.452973,2.4945,-1.348469, 0.657311,2.4945,-1.263395, + 0.657311,2.4945,-1.263395, 0.666211,2.482687,-1.280502, 0.459107,2.482687,-1.366728, + 0.236115,2.482687,-1.42049, 0.232961,2.4945,-1.401513, 0.452973,2.4945,-1.348469, + 0.452973,2.4945,-1.348469, 0.459107,2.482687,-1.366728, 0.236115,2.482687,-1.42049, + 0,2.482687,-1.439025, 0,2.4945,-1.4198, 0.232961,2.4945,-1.401513, + 0.232961,2.4945,-1.401513, 0.236115,2.482687,-1.42049, 0,2.482687,-1.439025, + 1.4408,2.463,-0.239491, 1.42049,2.482687,-0.236115, 1.439025,2.482687,0, + 1.439025,2.482687,0, 1.4596,2.463,0, 1.4408,2.463,-0.239491, + 1.38627,2.463,-0.465671, 1.366728,2.482687,-0.459107, 1.42049,2.482687,-0.236115, + 1.42049,2.482687,-0.236115, 1.4408,2.463,-0.239491, 1.38627,2.463,-0.465671, + 1.29881,2.463,-0.675736, 1.280502,2.482687,-0.666211, 1.366728,2.482687,-0.459107, + 1.366728,2.482687,-0.459107, 1.38627,2.463,-0.465671, 1.29881,2.463,-0.675736, + 1.181225,2.463,-0.866886, 1.164574,2.482687,-0.854666, 1.280502,2.482687,-0.666211, + 1.280502,2.482687,-0.666211, 1.29881,2.463,-0.675736, 1.181225,2.463,-0.866886, + 1.036316,2.463,-1.036316, 1.021708,2.482687,-1.021708, 1.164574,2.482687,-0.854666, + 1.164574,2.482687,-0.854666, 1.181225,2.463,-0.866886, 1.036316,2.463,-1.036316, + 0.866886,2.463,-1.181225, 0.854666,2.482687,-1.164574, 1.021708,2.482687,-1.021708, + 1.021708,2.482687,-1.021708, 1.036316,2.463,-1.036316, 0.866886,2.463,-1.181225, + 0.675736,2.463,-1.29881, 0.666211,2.482687,-1.280502, 0.854666,2.482687,-1.164574, + 0.854666,2.482687,-1.164574, 0.866886,2.463,-1.181225, 0.675736,2.463,-1.29881, + 0.465671,2.463,-1.38627, 0.459107,2.482687,-1.366728, 0.666211,2.482687,-1.280502, + 0.666211,2.482687,-1.280502, 0.675736,2.463,-1.29881, 0.465671,2.463,-1.38627, + 0.239491,2.463,-1.4408, 0.236115,2.482687,-1.42049, 0.459107,2.482687,-1.366728, + 0.459107,2.482687,-1.366728, 0.465671,2.463,-1.38627, 0.239491,2.463,-1.4408, + 0,2.463,-1.4596, 0,2.482687,-1.439025, 0.236115,2.482687,-1.42049, + 0.236115,2.482687,-1.42049, 0.239491,2.463,-1.4408, 0,2.463,-1.4596, + 1.461258,2.435437,-0.242892, 1.4408,2.463,-0.239491, 1.4596,2.463,0, + 1.4596,2.463,0, 1.480325,2.435437,0, 1.461258,2.435437,-0.242892, + 1.405953,2.435437,-0.472283, 1.38627,2.463,-0.465671, 1.4408,2.463,-0.239491, + 1.4408,2.463,-0.239491, 1.461258,2.435437,-0.242892, 1.405953,2.435437,-0.472283, + 1.317252,2.435437,-0.685331, 1.29881,2.463,-0.675736, 1.38627,2.463,-0.465671, + 1.38627,2.463,-0.465671, 1.405953,2.435437,-0.472283, 1.317252,2.435437,-0.685331, + 1.197997,2.435437,-0.879195, 1.181225,2.463,-0.866886, 1.29881,2.463,-0.675736, + 1.29881,2.463,-0.675736, 1.317252,2.435437,-0.685331, 1.197997,2.435437,-0.879195, + 1.051031,2.435437,-1.051031, 1.036316,2.463,-1.036316, 1.181225,2.463,-0.866886, + 1.181225,2.463,-0.866886, 1.197997,2.435437,-0.879195, 1.051031,2.435437,-1.051031, + 0.879195,2.435437,-1.197997, 0.866886,2.463,-1.181225, 1.036316,2.463,-1.036316, + 1.036316,2.463,-1.036316, 1.051031,2.435437,-1.051031, 0.879195,2.435437,-1.197997, + 0.685331,2.435437,-1.317252, 0.675736,2.463,-1.29881, 0.866886,2.463,-1.181225, + 0.866886,2.463,-1.181225, 0.879195,2.435437,-1.197997, 0.685331,2.435437,-1.317252, + 0.472283,2.435437,-1.405953, 0.465671,2.463,-1.38627, 0.675736,2.463,-1.29881, + 0.675736,2.463,-1.29881, 0.685331,2.435437,-1.317252, 0.472283,2.435437,-1.405953, + 0.242892,2.435437,-1.461258, 0.239491,2.463,-1.4408, 0.465671,2.463,-1.38627, + 0.465671,2.463,-1.38627, 0.472283,2.435437,-1.405953, 0.242892,2.435437,-1.461258, + 0,2.435437,-1.480325, 0,2.463,-1.4596, 0.239491,2.463,-1.4408, + 0.239491,2.463,-1.4408, 0.242892,2.435437,-1.461258, 0,2.435437,-1.480325, + 1.48068,2.4,-0.24612, 1.461258,2.435437,-0.242892, 1.480325,2.435437,0, + 1.480325,2.435437,0, 1.5,2.4,0, 1.48068,2.4,-0.24612, + 1.42464,2.4,-0.47856, 1.405953,2.435437,-0.472283, 1.461258,2.435437,-0.242892, + 1.461258,2.435437,-0.242892, 1.48068,2.4,-0.24612, 1.42464,2.4,-0.47856, + 1.33476,2.4,-0.69444, 1.317252,2.435437,-0.685331, 1.405953,2.435437,-0.472283, + 1.405953,2.435437,-0.472283, 1.42464,2.4,-0.47856, 1.33476,2.4,-0.69444, + 1.21392,2.4,-0.89088, 1.197997,2.435437,-0.879195, 1.317252,2.435437,-0.685331, + 1.317252,2.435437,-0.685331, 1.33476,2.4,-0.69444, 1.21392,2.4,-0.89088, + 1.065,2.4,-1.065, 1.051031,2.435437,-1.051031, 1.197997,2.435437,-0.879195, + 1.197997,2.435437,-0.879195, 1.21392,2.4,-0.89088, 1.065,2.4,-1.065, + 0.89088,2.4,-1.21392, 0.879195,2.435437,-1.197997, 1.051031,2.435437,-1.051031, + 1.051031,2.435437,-1.051031, 1.065,2.4,-1.065, 0.89088,2.4,-1.21392, + 0.69444,2.4,-1.33476, 0.685331,2.435437,-1.317252, 0.879195,2.435437,-1.197997, + 0.879195,2.435437,-1.197997, 0.89088,2.4,-1.21392, 0.69444,2.4,-1.33476, + 0.47856,2.4,-1.42464, 0.472283,2.435437,-1.405953, 0.685331,2.435437,-1.317252, + 0.685331,2.435437,-1.317252, 0.69444,2.4,-1.33476, 0.47856,2.4,-1.42464, + 0.24612,2.4,-1.48068, 0.242892,2.435437,-1.461258, 0.472283,2.435437,-1.405953, + 0.472283,2.435437,-1.405953, 0.47856,2.4,-1.42464, 0.24612,2.4,-1.48068, + 0,2.4,-1.5, 0,2.435437,-1.480325, 0.242892,2.435437,-1.461258, + 0.242892,2.435437,-1.461258, 0.24612,2.4,-1.48068, 0,2.4,-1.5, + -0.227403,2.435437,-1.368074, -0.229712,2.4,-1.381968, 0,2.4,-1.4, + 0,2.4,-1.4, 0,2.435437,-1.385925, -0.227403,2.435437,-1.368074, + -0.442166,2.435437,-1.316296, -0.446656,2.4,-1.329664, -0.229712,2.4,-1.381968, + -0.229712,2.4,-1.381968, -0.227403,2.435437,-1.368074, -0.442166,2.435437,-1.316296, + -0.641628,2.435437,-1.233252, -0.648144,2.4,-1.245776, -0.446656,2.4,-1.329664, + -0.446656,2.4,-1.329664, -0.442166,2.435437,-1.316296, -0.641628,2.435437,-1.233252, + -0.823129,2.435437,-1.121601, -0.831488,2.4,-1.132992, -0.648144,2.4,-1.245776, + -0.648144,2.4,-1.245776, -0.641628,2.435437,-1.233252, -0.823129,2.435437,-1.121601, + -0.984007,2.435437,-0.984007, -0.994,2.4,-0.994, -0.831488,2.4,-1.132992, + -0.831488,2.4,-1.132992, -0.823129,2.435437,-1.121601, -0.984007,2.435437,-0.984007, + -1.121601,2.435437,-0.823129, -1.132992,2.4,-0.831488, -0.994,2.4,-0.994, + -0.994,2.4,-0.994, -0.984007,2.435437,-0.984007, -1.121601,2.435437,-0.823129, + -1.233252,2.435437,-0.641628, -1.245776,2.4,-0.648144, -1.132992,2.4,-0.831488, + -1.132992,2.4,-0.831488, -1.121601,2.435437,-0.823129, -1.233252,2.435437,-0.641628, + -1.316296,2.435437,-0.442166, -1.329664,2.4,-0.446656, -1.245776,2.4,-0.648144, + -1.245776,2.4,-0.648144, -1.233252,2.435437,-0.641628, -1.316296,2.435437,-0.442166, + -1.368074,2.435437,-0.227403, -1.381968,2.4,-0.229712, -1.329664,2.4,-0.446656, + -1.329664,2.4,-0.446656, -1.316296,2.435437,-0.442166, -1.368074,2.435437,-0.227403, + -1.385925,2.435437,0, -1.4,2.4,0, -1.381968,2.4,-0.229712, + -1.381968,2.4,-0.229712, -1.368074,2.435437,-0.227403, -1.385925,2.435437,0, + -0.226496,2.463,-1.36262, -0.227403,2.435437,-1.368074, 0,2.435437,-1.385925, + 0,2.435437,-1.385925, 0,2.463,-1.3804, -0.226496,2.463,-1.36262, + -0.440403,2.463,-1.311049, -0.442166,2.435437,-1.316296, -0.227403,2.435437,-1.368074, + -0.227403,2.435437,-1.368074, -0.226496,2.463,-1.36262, -0.440403,2.463,-1.311049, + -0.63907,2.463,-1.228335, -0.641628,2.435437,-1.233252, -0.442166,2.435437,-1.316296, + -0.442166,2.435437,-1.316296, -0.440403,2.463,-1.311049, -0.63907,2.463,-1.228335, + -0.819847,2.463,-1.11713, -0.823129,2.435437,-1.121601, -0.641628,2.435437,-1.233252, + -0.641628,2.435437,-1.233252, -0.63907,2.463,-1.228335, -0.819847,2.463,-1.11713, + -0.980084,2.463,-0.980084, -0.984007,2.435437,-0.984007, -0.823129,2.435437,-1.121601, + -0.823129,2.435437,-1.121601, -0.819847,2.463,-1.11713, -0.980084,2.463,-0.980084, + -1.11713,2.463,-0.819847, -1.121601,2.435437,-0.823129, -0.984007,2.435437,-0.984007, + -0.984007,2.435437,-0.984007, -0.980084,2.463,-0.980084, -1.11713,2.463,-0.819847, + -1.228335,2.463,-0.63907, -1.233252,2.435437,-0.641628, -1.121601,2.435437,-0.823129, + -1.121601,2.435437,-0.823129, -1.11713,2.463,-0.819847, -1.228335,2.463,-0.63907, + -1.311049,2.463,-0.440403, -1.316296,2.435437,-0.442166, -1.233252,2.435437,-0.641628, + -1.233252,2.435437,-0.641628, -1.228335,2.463,-0.63907, -1.311049,2.463,-0.440403, + -1.36262,2.463,-0.226496, -1.368074,2.435437,-0.227403, -1.316296,2.435437,-0.442166, + -1.316296,2.435437,-0.442166, -1.311049,2.463,-0.440403, -1.36262,2.463,-0.226496, + -1.3804,2.463,0, -1.385925,2.435437,0, -1.368074,2.435437,-0.227403, + -1.368074,2.435437,-0.227403, -1.36262,2.463,-0.226496, -1.3804,2.463,0, + -0.226795,2.482687,-1.364422, -0.226496,2.463,-1.36262, 0,2.463,-1.3804, + 0,2.463,-1.3804, 0,2.482687,-1.382225, -0.226795,2.482687,-1.364422, + -0.440985,2.482687,-1.312782, -0.440403,2.463,-1.311049, -0.226496,2.463,-1.36262, + -0.226496,2.463,-1.36262, -0.226795,2.482687,-1.364422, -0.440985,2.482687,-1.312782, + -0.639915,2.482687,-1.229959, -0.63907,2.463,-1.228335, -0.440403,2.463,-1.311049, + -0.440403,2.463,-1.311049, -0.440985,2.482687,-1.312782, -0.639915,2.482687,-1.229959, + -0.820931,2.482687,-1.118607, -0.819847,2.463,-1.11713, -0.63907,2.463,-1.228335, + -0.63907,2.463,-1.228335, -0.639915,2.482687,-1.229959, -0.820931,2.482687,-1.118607, + -0.98138,2.482687,-0.98138, -0.980084,2.463,-0.980084, -0.819847,2.463,-1.11713, + -0.819847,2.463,-1.11713, -0.820931,2.482687,-1.118607, -0.98138,2.482687,-0.98138, + -1.118607,2.482687,-0.820931, -1.11713,2.463,-0.819847, -0.980084,2.463,-0.980084, + -0.980084,2.463,-0.980084, -0.98138,2.482687,-0.98138, -1.118607,2.482687,-0.820931, + -1.229959,2.482687,-0.639915, -1.228335,2.463,-0.63907, -1.11713,2.463,-0.819847, + -1.11713,2.463,-0.819847, -1.118607,2.482687,-0.820931, -1.229959,2.482687,-0.639915, + -1.312782,2.482687,-0.440985, -1.311049,2.463,-0.440403, -1.228335,2.463,-0.63907, + -1.228335,2.463,-0.63907, -1.229959,2.482687,-0.639915, -1.312782,2.482687,-0.440985, + -1.364422,2.482687,-0.226795, -1.36262,2.463,-0.226496, -1.311049,2.463,-0.440403, + -1.311049,2.463,-0.440403, -1.312782,2.482687,-0.440985, -1.364422,2.482687,-0.226795, + -1.382225,2.482687,0, -1.3804,2.463,0, -1.36262,2.463,-0.226496, + -1.36262,2.463,-0.226496, -1.364422,2.482687,-0.226795, -1.382225,2.482687,0, + -0.228104,2.4945,-1.372294, -0.226795,2.482687,-1.364422, 0,2.482687,-1.382225, + 0,2.482687,-1.382225, 0,2.4945,-1.3902, -0.228104,2.4945,-1.372294, + -0.443529,2.4945,-1.320356, -0.440985,2.482687,-1.312782, -0.226795,2.482687,-1.364422, + -0.226795,2.482687,-1.364422, -0.228104,2.4945,-1.372294, -0.443529,2.4945,-1.320356, + -0.643607,2.4945,-1.237056, -0.639915,2.482687,-1.229959, -0.440985,2.482687,-1.312782, + -0.440985,2.482687,-1.312782, -0.443529,2.4945,-1.320356, -0.643607,2.4945,-1.237056, + -0.825668,2.4945,-1.125061, -0.820931,2.482687,-1.118607, -0.639915,2.482687,-1.229959, + -0.639915,2.482687,-1.229959, -0.643607,2.4945,-1.237056, -0.825668,2.4945,-1.125061, + -0.987042,2.4945,-0.987042, -0.98138,2.482687,-0.98138, -0.820931,2.482687,-1.118607, + -0.820931,2.482687,-1.118607, -0.825668,2.4945,-1.125061, -0.987042,2.4945,-0.987042, + -1.125061,2.4945,-0.825668, -1.118607,2.482687,-0.820931, -0.98138,2.482687,-0.98138, + -0.98138,2.482687,-0.98138, -0.987042,2.4945,-0.987042, -1.125061,2.4945,-0.825668, + -1.237056,2.4945,-0.643607, -1.229959,2.482687,-0.639915, -1.118607,2.482687,-0.820931, + -1.118607,2.482687,-0.820931, -1.125061,2.4945,-0.825668, -1.237056,2.4945,-0.643607, + -1.320356,2.4945,-0.443529, -1.312782,2.482687,-0.440985, -1.229959,2.482687,-0.639915, + -1.229959,2.482687,-0.639915, -1.237056,2.4945,-0.643607, -1.320356,2.4945,-0.443529, + -1.372294,2.4945,-0.228104, -1.364422,2.482687,-0.226795, -1.312782,2.482687,-0.440985, + -1.312782,2.482687,-0.440985, -1.320356,2.4945,-0.443529, -1.372294,2.4945,-0.228104, + -1.3902,2.4945,0, -1.382225,2.482687,0, -1.364422,2.482687,-0.226795, + -1.364422,2.482687,-0.226795, -1.372294,2.4945,-0.228104, -1.3902,2.4945,0, + -0.230225,2.498438,-1.385053, -0.228104,2.4945,-1.372294, 0,2.4945,-1.3902, + 0,2.4945,-1.3902, 0,2.498438,-1.403125, -0.230225,2.498438,-1.385053, + -0.447653,2.498438,-1.332632, -0.443529,2.4945,-1.320356, -0.228104,2.4945,-1.372294, + -0.228104,2.4945,-1.372294, -0.230225,2.498438,-1.385053, -0.447653,2.498438,-1.332632, + -0.649591,2.498438,-1.248557, -0.643607,2.4945,-1.237056, -0.443529,2.4945,-1.320356, + -0.443529,2.4945,-1.320356, -0.447653,2.498438,-1.332632, -0.649591,2.498438,-1.248557, + -0.833344,2.498438,-1.135521, -0.825668,2.4945,-1.125061, -0.643607,2.4945,-1.237056, + -0.643607,2.4945,-1.237056, -0.649591,2.498438,-1.248557, -0.833344,2.498438,-1.135521, + -0.996219,2.498438,-0.996219, -0.987042,2.4945,-0.987042, -0.825668,2.4945,-1.125061, + -0.825668,2.4945,-1.125061, -0.833344,2.498438,-1.135521, -0.996219,2.498438,-0.996219, + -1.135521,2.498438,-0.833344, -1.125061,2.4945,-0.825668, -0.987042,2.4945,-0.987042, + -0.987042,2.4945,-0.987042, -0.996219,2.498438,-0.996219, -1.135521,2.498438,-0.833344, + -1.248557,2.498438,-0.649591, -1.237056,2.4945,-0.643607, -1.125061,2.4945,-0.825668, + -1.125061,2.4945,-0.825668, -1.135521,2.498438,-0.833344, -1.248557,2.498438,-0.649591, + -1.332632,2.498438,-0.447653, -1.320356,2.4945,-0.443529, -1.237056,2.4945,-0.643607, + -1.237056,2.4945,-0.643607, -1.248557,2.498438,-0.649591, -1.332632,2.498438,-0.447653, + -1.385053,2.498438,-0.230225, -1.372294,2.4945,-0.228104, -1.320356,2.4945,-0.443529, + -1.320356,2.4945,-0.443529, -1.332632,2.498438,-0.447653, -1.385053,2.498438,-0.230225, + -1.403125,2.498438,0, -1.3902,2.4945,0, -1.372294,2.4945,-0.228104, + -1.372294,2.4945,-0.228104, -1.385053,2.498438,-0.230225, -1.403125,2.498438,0, + -0.232961,2.4945,-1.401513, -0.230225,2.498438,-1.385053, 0,2.498438,-1.403125, + 0,2.498438,-1.403125, 0,2.4945,-1.4198, -0.232961,2.4945,-1.401513, + -0.452973,2.4945,-1.348469, -0.447653,2.498438,-1.332632, -0.230225,2.498438,-1.385053, + -0.230225,2.498438,-1.385053, -0.232961,2.4945,-1.401513, -0.452973,2.4945,-1.348469, + -0.657311,2.4945,-1.263395, -0.649591,2.498438,-1.248557, -0.447653,2.498438,-1.332632, + -0.447653,2.498438,-1.332632, -0.452973,2.4945,-1.348469, -0.657311,2.4945,-1.263395, + -0.843248,2.4945,-1.149016, -0.833344,2.498438,-1.135521, -0.649591,2.498438,-1.248557, + -0.649591,2.498438,-1.248557, -0.657311,2.4945,-1.263395, -0.843248,2.4945,-1.149016, + -1.008058,2.4945,-1.008058, -0.996219,2.498438,-0.996219, -0.833344,2.498438,-1.135521, + -0.833344,2.498438,-1.135521, -0.843248,2.4945,-1.149016, -1.008058,2.4945,-1.008058, + -1.149016,2.4945,-0.843248, -1.135521,2.498438,-0.833344, -0.996219,2.498438,-0.996219, + -0.996219,2.498438,-0.996219, -1.008058,2.4945,-1.008058, -1.149016,2.4945,-0.843248, + -1.263395,2.4945,-0.657311, -1.248557,2.498438,-0.649591, -1.135521,2.498438,-0.833344, + -1.135521,2.498438,-0.833344, -1.149016,2.4945,-0.843248, -1.263395,2.4945,-0.657311, + -1.348469,2.4945,-0.452973, -1.332632,2.498438,-0.447653, -1.248557,2.498438,-0.649591, + -1.248557,2.498438,-0.649591, -1.263395,2.4945,-0.657311, -1.348469,2.4945,-0.452973, + -1.401513,2.4945,-0.232961, -1.385053,2.498438,-0.230225, -1.332632,2.498438,-0.447653, + -1.332632,2.498438,-0.447653, -1.348469,2.4945,-0.452973, -1.401513,2.4945,-0.232961, + -1.4198,2.4945,0, -1.403125,2.498438,0, -1.385053,2.498438,-0.230225, + -1.385053,2.498438,-0.230225, -1.401513,2.4945,-0.232961, -1.4198,2.4945,0, + -0.236115,2.482687,-1.42049, -0.232961,2.4945,-1.401513, 0,2.4945,-1.4198, + 0,2.4945,-1.4198, 0,2.482687,-1.439025, -0.236115,2.482687,-1.42049, + -0.459107,2.482687,-1.366728, -0.452973,2.4945,-1.348469, -0.232961,2.4945,-1.401513, + -0.232961,2.4945,-1.401513, -0.236115,2.482687,-1.42049, -0.459107,2.482687,-1.366728, + -0.666211,2.482687,-1.280502, -0.657311,2.4945,-1.263395, -0.452973,2.4945,-1.348469, + -0.452973,2.4945,-1.348469, -0.459107,2.482687,-1.366728, -0.666211,2.482687,-1.280502, + -0.854666,2.482687,-1.164574, -0.843248,2.4945,-1.149016, -0.657311,2.4945,-1.263395, + -0.657311,2.4945,-1.263395, -0.666211,2.482687,-1.280502, -0.854666,2.482687,-1.164574, + -1.021708,2.482687,-1.021708, -1.008058,2.4945,-1.008058, -0.843248,2.4945,-1.149016, + -0.843248,2.4945,-1.149016, -0.854666,2.482687,-1.164574, -1.021708,2.482687,-1.021708, + -1.164574,2.482687,-0.854666, -1.149016,2.4945,-0.843248, -1.008058,2.4945,-1.008058, + -1.008058,2.4945,-1.008058, -1.021708,2.482687,-1.021708, -1.164574,2.482687,-0.854666, + -1.280502,2.482687,-0.666211, -1.263395,2.4945,-0.657311, -1.149016,2.4945,-0.843248, + -1.149016,2.4945,-0.843248, -1.164574,2.482687,-0.854666, -1.280502,2.482687,-0.666211, + -1.366728,2.482687,-0.459107, -1.348469,2.4945,-0.452973, -1.263395,2.4945,-0.657311, + -1.263395,2.4945,-0.657311, -1.280502,2.482687,-0.666211, -1.366728,2.482687,-0.459107, + -1.42049,2.482687,-0.236115, -1.401513,2.4945,-0.232961, -1.348469,2.4945,-0.452973, + -1.348469,2.4945,-0.452973, -1.366728,2.482687,-0.459107, -1.42049,2.482687,-0.236115, + -1.439025,2.482687,0, -1.4198,2.4945,0, -1.401513,2.4945,-0.232961, + -1.401513,2.4945,-0.232961, -1.42049,2.482687,-0.236115, -1.439025,2.482687,0, + -0.239491,2.463,-1.4408, -0.236115,2.482687,-1.42049, 0,2.482687,-1.439025, + 0,2.482687,-1.439025, 0,2.463,-1.4596, -0.239491,2.463,-1.4408, + -0.465671,2.463,-1.38627, -0.459107,2.482687,-1.366728, -0.236115,2.482687,-1.42049, + -0.236115,2.482687,-1.42049, -0.239491,2.463,-1.4408, -0.465671,2.463,-1.38627, + -0.675736,2.463,-1.29881, -0.666211,2.482687,-1.280502, -0.459107,2.482687,-1.366728, + -0.459107,2.482687,-1.366728, -0.465671,2.463,-1.38627, -0.675736,2.463,-1.29881, + -0.866886,2.463,-1.181225, -0.854666,2.482687,-1.164574, -0.666211,2.482687,-1.280502, + -0.666211,2.482687,-1.280502, -0.675736,2.463,-1.29881, -0.866886,2.463,-1.181225, + -1.036316,2.463,-1.036316, -1.021708,2.482687,-1.021708, -0.854666,2.482687,-1.164574, + -0.854666,2.482687,-1.164574, -0.866886,2.463,-1.181225, -1.036316,2.463,-1.036316, + -1.181225,2.463,-0.866886, -1.164574,2.482687,-0.854666, -1.021708,2.482687,-1.021708, + -1.021708,2.482687,-1.021708, -1.036316,2.463,-1.036316, -1.181225,2.463,-0.866886, + -1.29881,2.463,-0.675736, -1.280502,2.482687,-0.666211, -1.164574,2.482687,-0.854666, + -1.164574,2.482687,-0.854666, -1.181225,2.463,-0.866886, -1.29881,2.463,-0.675736, + -1.38627,2.463,-0.465671, -1.366728,2.482687,-0.459107, -1.280502,2.482687,-0.666211, + -1.280502,2.482687,-0.666211, -1.29881,2.463,-0.675736, -1.38627,2.463,-0.465671, + -1.4408,2.463,-0.239491, -1.42049,2.482687,-0.236115, -1.366728,2.482687,-0.459107, + -1.366728,2.482687,-0.459107, -1.38627,2.463,-0.465671, -1.4408,2.463,-0.239491, + -1.4596,2.463,0, -1.439025,2.482687,0, -1.42049,2.482687,-0.236115, + -1.42049,2.482687,-0.236115, -1.4408,2.463,-0.239491, -1.4596,2.463,0, + -0.242892,2.435437,-1.461258, -0.239491,2.463,-1.4408, 0,2.463,-1.4596, + 0,2.463,-1.4596, 0,2.435437,-1.480325, -0.242892,2.435437,-1.461258, + -0.472283,2.435437,-1.405953, -0.465671,2.463,-1.38627, -0.239491,2.463,-1.4408, + -0.239491,2.463,-1.4408, -0.242892,2.435437,-1.461258, -0.472283,2.435437,-1.405953, + -0.685331,2.435437,-1.317252, -0.675736,2.463,-1.29881, -0.465671,2.463,-1.38627, + -0.465671,2.463,-1.38627, -0.472283,2.435437,-1.405953, -0.685331,2.435437,-1.317252, + -0.879195,2.435437,-1.197997, -0.866886,2.463,-1.181225, -0.675736,2.463,-1.29881, + -0.675736,2.463,-1.29881, -0.685331,2.435437,-1.317252, -0.879195,2.435437,-1.197997, + -1.051031,2.435437,-1.051031, -1.036316,2.463,-1.036316, -0.866886,2.463,-1.181225, + -0.866886,2.463,-1.181225, -0.879195,2.435437,-1.197997, -1.051031,2.435437,-1.051031, + -1.197997,2.435437,-0.879195, -1.181225,2.463,-0.866886, -1.036316,2.463,-1.036316, + -1.036316,2.463,-1.036316, -1.051031,2.435437,-1.051031, -1.197997,2.435437,-0.879195, + -1.317252,2.435437,-0.685331, -1.29881,2.463,-0.675736, -1.181225,2.463,-0.866886, + -1.181225,2.463,-0.866886, -1.197997,2.435437,-0.879195, -1.317252,2.435437,-0.685331, + -1.405953,2.435437,-0.472283, -1.38627,2.463,-0.465671, -1.29881,2.463,-0.675736, + -1.29881,2.463,-0.675736, -1.317252,2.435437,-0.685331, -1.405953,2.435437,-0.472283, + -1.461258,2.435437,-0.242892, -1.4408,2.463,-0.239491, -1.38627,2.463,-0.465671, + -1.38627,2.463,-0.465671, -1.405953,2.435437,-0.472283, -1.461258,2.435437,-0.242892, + -1.480325,2.435437,0, -1.4596,2.463,0, -1.4408,2.463,-0.239491, + -1.4408,2.463,-0.239491, -1.461258,2.435437,-0.242892, -1.480325,2.435437,0, + -0.24612,2.4,-1.48068, -0.242892,2.435437,-1.461258, 0,2.435437,-1.480325, + 0,2.435437,-1.480325, 0,2.4,-1.5, -0.24612,2.4,-1.48068, + -0.47856,2.4,-1.42464, -0.472283,2.435437,-1.405953, -0.242892,2.435437,-1.461258, + -0.242892,2.435437,-1.461258, -0.24612,2.4,-1.48068, -0.47856,2.4,-1.42464, + -0.69444,2.4,-1.33476, -0.685331,2.435437,-1.317252, -0.472283,2.435437,-1.405953, + -0.472283,2.435437,-1.405953, -0.47856,2.4,-1.42464, -0.69444,2.4,-1.33476, + -0.89088,2.4,-1.21392, -0.879195,2.435437,-1.197997, -0.685331,2.435437,-1.317252, + -0.685331,2.435437,-1.317252, -0.69444,2.4,-1.33476, -0.89088,2.4,-1.21392, + -1.065,2.4,-1.065, -1.051031,2.435437,-1.051031, -0.879195,2.435437,-1.197997, + -0.879195,2.435437,-1.197997, -0.89088,2.4,-1.21392, -1.065,2.4,-1.065, + -1.21392,2.4,-0.89088, -1.197997,2.435437,-0.879195, -1.051031,2.435437,-1.051031, + -1.051031,2.435437,-1.051031, -1.065,2.4,-1.065, -1.21392,2.4,-0.89088, + -1.33476,2.4,-0.69444, -1.317252,2.435437,-0.685331, -1.197997,2.435437,-0.879195, + -1.197997,2.435437,-0.879195, -1.21392,2.4,-0.89088, -1.33476,2.4,-0.69444, + -1.42464,2.4,-0.47856, -1.405953,2.435437,-0.472283, -1.317252,2.435437,-0.685331, + -1.317252,2.435437,-0.685331, -1.33476,2.4,-0.69444, -1.42464,2.4,-0.47856, + -1.48068,2.4,-0.24612, -1.461258,2.435437,-0.242892, -1.405953,2.435437,-0.472283, + -1.405953,2.435437,-0.472283, -1.42464,2.4,-0.47856, -1.48068,2.4,-0.24612, + -1.5,2.4,0, -1.480325,2.435437,0, -1.461258,2.435437,-0.242892, + -1.461258,2.435437,-0.242892, -1.48068,2.4,-0.24612, -1.5,2.4,0, + -1.368074,2.435437,0.227403, -1.381968,2.4,0.229712, -1.4,2.4,0, + -1.4,2.4,0, -1.385925,2.435437,0, -1.368074,2.435437,0.227403, + -1.316296,2.435437,0.442166, -1.329664,2.4,0.446656, -1.381968,2.4,0.229712, + -1.381968,2.4,0.229712, -1.368074,2.435437,0.227403, -1.316296,2.435437,0.442166, + -1.233252,2.435437,0.641628, -1.245776,2.4,0.648144, -1.329664,2.4,0.446656, + -1.329664,2.4,0.446656, -1.316296,2.435437,0.442166, -1.233252,2.435437,0.641628, + -1.121601,2.435437,0.823129, -1.132992,2.4,0.831488, -1.245776,2.4,0.648144, + -1.245776,2.4,0.648144, -1.233252,2.435437,0.641628, -1.121601,2.435437,0.823129, + -0.984007,2.435437,0.984007, -0.994,2.4,0.994, -1.132992,2.4,0.831488, + -1.132992,2.4,0.831488, -1.121601,2.435437,0.823129, -0.984007,2.435437,0.984007, + -0.823129,2.435437,1.121601, -0.831488,2.4,1.132992, -0.994,2.4,0.994, + -0.994,2.4,0.994, -0.984007,2.435437,0.984007, -0.823129,2.435437,1.121601, + -0.641628,2.435437,1.233252, -0.648144,2.4,1.245776, -0.831488,2.4,1.132992, + -0.831488,2.4,1.132992, -0.823129,2.435437,1.121601, -0.641628,2.435437,1.233252, + -0.442166,2.435437,1.316296, -0.446656,2.4,1.329664, -0.648144,2.4,1.245776, + -0.648144,2.4,1.245776, -0.641628,2.435437,1.233252, -0.442166,2.435437,1.316296, + -0.227403,2.435437,1.368074, -0.229712,2.4,1.381968, -0.446656,2.4,1.329664, + -0.446656,2.4,1.329664, -0.442166,2.435437,1.316296, -0.227403,2.435437,1.368074, + 0,2.435437,1.385925, 0,2.4,1.4, -0.229712,2.4,1.381968, + -0.229712,2.4,1.381968, -0.227403,2.435437,1.368074, 0,2.435437,1.385925, + -1.36262,2.463,0.226496, -1.368074,2.435437,0.227403, -1.385925,2.435437,0, + -1.385925,2.435437,0, -1.3804,2.463,0, -1.36262,2.463,0.226496, + -1.311049,2.463,0.440403, -1.316296,2.435437,0.442166, -1.368074,2.435437,0.227403, + -1.368074,2.435437,0.227403, -1.36262,2.463,0.226496, -1.311049,2.463,0.440403, + -1.228335,2.463,0.63907, -1.233252,2.435437,0.641628, -1.316296,2.435437,0.442166, + -1.316296,2.435437,0.442166, -1.311049,2.463,0.440403, -1.228335,2.463,0.63907, + -1.11713,2.463,0.819847, -1.121601,2.435437,0.823129, -1.233252,2.435437,0.641628, + -1.233252,2.435437,0.641628, -1.228335,2.463,0.63907, -1.11713,2.463,0.819847, + -0.980084,2.463,0.980084, -0.984007,2.435437,0.984007, -1.121601,2.435437,0.823129, + -1.121601,2.435437,0.823129, -1.11713,2.463,0.819847, -0.980084,2.463,0.980084, + -0.819847,2.463,1.11713, -0.823129,2.435437,1.121601, -0.984007,2.435437,0.984007, + -0.984007,2.435437,0.984007, -0.980084,2.463,0.980084, -0.819847,2.463,1.11713, + -0.63907,2.463,1.228335, -0.641628,2.435437,1.233252, -0.823129,2.435437,1.121601, + -0.823129,2.435437,1.121601, -0.819847,2.463,1.11713, -0.63907,2.463,1.228335, + -0.440403,2.463,1.311049, -0.442166,2.435437,1.316296, -0.641628,2.435437,1.233252, + -0.641628,2.435437,1.233252, -0.63907,2.463,1.228335, -0.440403,2.463,1.311049, + -0.226496,2.463,1.36262, -0.227403,2.435437,1.368074, -0.442166,2.435437,1.316296, + -0.442166,2.435437,1.316296, -0.440403,2.463,1.311049, -0.226496,2.463,1.36262, + 0,2.463,1.3804, 0,2.435437,1.385925, -0.227403,2.435437,1.368074, + -0.227403,2.435437,1.368074, -0.226496,2.463,1.36262, 0,2.463,1.3804, + -1.364422,2.482687,0.226795, -1.36262,2.463,0.226496, -1.3804,2.463,0, + -1.3804,2.463,0, -1.382225,2.482687,0, -1.364422,2.482687,0.226795, + -1.312782,2.482687,0.440985, -1.311049,2.463,0.440403, -1.36262,2.463,0.226496, + -1.36262,2.463,0.226496, -1.364422,2.482687,0.226795, -1.312782,2.482687,0.440985, + -1.229959,2.482687,0.639915, -1.228335,2.463,0.63907, -1.311049,2.463,0.440403, + -1.311049,2.463,0.440403, -1.312782,2.482687,0.440985, -1.229959,2.482687,0.639915, + -1.118607,2.482687,0.820931, -1.11713,2.463,0.819847, -1.228335,2.463,0.63907, + -1.228335,2.463,0.63907, -1.229959,2.482687,0.639915, -1.118607,2.482687,0.820931, + -0.98138,2.482687,0.98138, -0.980084,2.463,0.980084, -1.11713,2.463,0.819847, + -1.11713,2.463,0.819847, -1.118607,2.482687,0.820931, -0.98138,2.482687,0.98138, + -0.820931,2.482687,1.118607, -0.819847,2.463,1.11713, -0.980084,2.463,0.980084, + -0.980084,2.463,0.980084, -0.98138,2.482687,0.98138, -0.820931,2.482687,1.118607, + -0.639915,2.482687,1.229959, -0.63907,2.463,1.228335, -0.819847,2.463,1.11713, + -0.819847,2.463,1.11713, -0.820931,2.482687,1.118607, -0.639915,2.482687,1.229959, + -0.440985,2.482687,1.312782, -0.440403,2.463,1.311049, -0.63907,2.463,1.228335, + -0.63907,2.463,1.228335, -0.639915,2.482687,1.229959, -0.440985,2.482687,1.312782, + -0.226795,2.482687,1.364422, -0.226496,2.463,1.36262, -0.440403,2.463,1.311049, + -0.440403,2.463,1.311049, -0.440985,2.482687,1.312782, -0.226795,2.482687,1.364422, + 0,2.482687,1.382225, 0,2.463,1.3804, -0.226496,2.463,1.36262, + -0.226496,2.463,1.36262, -0.226795,2.482687,1.364422, 0,2.482687,1.382225, + -1.372294,2.4945,0.228104, -1.364422,2.482687,0.226795, -1.382225,2.482687,0, + -1.382225,2.482687,0, -1.3902,2.4945,0, -1.372294,2.4945,0.228104, + -1.320356,2.4945,0.443529, -1.312782,2.482687,0.440985, -1.364422,2.482687,0.226795, + -1.364422,2.482687,0.226795, -1.372294,2.4945,0.228104, -1.320356,2.4945,0.443529, + -1.237056,2.4945,0.643607, -1.229959,2.482687,0.639915, -1.312782,2.482687,0.440985, + -1.312782,2.482687,0.440985, -1.320356,2.4945,0.443529, -1.237056,2.4945,0.643607, + -1.125061,2.4945,0.825668, -1.118607,2.482687,0.820931, -1.229959,2.482687,0.639915, + -1.229959,2.482687,0.639915, -1.237056,2.4945,0.643607, -1.125061,2.4945,0.825668, + -0.987042,2.4945,0.987042, -0.98138,2.482687,0.98138, -1.118607,2.482687,0.820931, + -1.118607,2.482687,0.820931, -1.125061,2.4945,0.825668, -0.987042,2.4945,0.987042, + -0.825668,2.4945,1.125061, -0.820931,2.482687,1.118607, -0.98138,2.482687,0.98138, + -0.98138,2.482687,0.98138, -0.987042,2.4945,0.987042, -0.825668,2.4945,1.125061, + -0.643607,2.4945,1.237056, -0.639915,2.482687,1.229959, -0.820931,2.482687,1.118607, + -0.820931,2.482687,1.118607, -0.825668,2.4945,1.125061, -0.643607,2.4945,1.237056, + -0.443529,2.4945,1.320356, -0.440985,2.482687,1.312782, -0.639915,2.482687,1.229959, + -0.639915,2.482687,1.229959, -0.643607,2.4945,1.237056, -0.443529,2.4945,1.320356, + -0.228104,2.4945,1.372294, -0.226795,2.482687,1.364422, -0.440985,2.482687,1.312782, + -0.440985,2.482687,1.312782, -0.443529,2.4945,1.320356, -0.228104,2.4945,1.372294, + 0,2.4945,1.3902, 0,2.482687,1.382225, -0.226795,2.482687,1.364422, + -0.226795,2.482687,1.364422, -0.228104,2.4945,1.372294, 0,2.4945,1.3902, + -1.385053,2.498438,0.230225, -1.372294,2.4945,0.228104, -1.3902,2.4945,0, + -1.3902,2.4945,0, -1.403125,2.498438,0, -1.385053,2.498438,0.230225, + -1.332632,2.498438,0.447653, -1.320356,2.4945,0.443529, -1.372294,2.4945,0.228104, + -1.372294,2.4945,0.228104, -1.385053,2.498438,0.230225, -1.332632,2.498438,0.447653, + -1.248557,2.498438,0.649591, -1.237056,2.4945,0.643607, -1.320356,2.4945,0.443529, + -1.320356,2.4945,0.443529, -1.332632,2.498438,0.447653, -1.248557,2.498438,0.649591, + -1.135521,2.498438,0.833344, -1.125061,2.4945,0.825668, -1.237056,2.4945,0.643607, + -1.237056,2.4945,0.643607, -1.248557,2.498438,0.649591, -1.135521,2.498438,0.833344, + -0.996219,2.498438,0.996219, -0.987042,2.4945,0.987042, -1.125061,2.4945,0.825668, + -1.125061,2.4945,0.825668, -1.135521,2.498438,0.833344, -0.996219,2.498438,0.996219, + -0.833344,2.498438,1.135521, -0.825668,2.4945,1.125061, -0.987042,2.4945,0.987042, + -0.987042,2.4945,0.987042, -0.996219,2.498438,0.996219, -0.833344,2.498438,1.135521, + -0.649591,2.498438,1.248557, -0.643607,2.4945,1.237056, -0.825668,2.4945,1.125061, + -0.825668,2.4945,1.125061, -0.833344,2.498438,1.135521, -0.649591,2.498438,1.248557, + -0.447653,2.498438,1.332632, -0.443529,2.4945,1.320356, -0.643607,2.4945,1.237056, + -0.643607,2.4945,1.237056, -0.649591,2.498438,1.248557, -0.447653,2.498438,1.332632, + -0.230225,2.498438,1.385053, -0.228104,2.4945,1.372294, -0.443529,2.4945,1.320356, + -0.443529,2.4945,1.320356, -0.447653,2.498438,1.332632, -0.230225,2.498438,1.385053, + 0,2.498438,1.403125, 0,2.4945,1.3902, -0.228104,2.4945,1.372294, + -0.228104,2.4945,1.372294, -0.230225,2.498438,1.385053, 0,2.498438,1.403125, + -1.401513,2.4945,0.232961, -1.385053,2.498438,0.230225, -1.403125,2.498438,0, + -1.403125,2.498438,0, -1.4198,2.4945,0, -1.401513,2.4945,0.232961, + -1.348469,2.4945,0.452973, -1.332632,2.498438,0.447653, -1.385053,2.498438,0.230225, + -1.385053,2.498438,0.230225, -1.401513,2.4945,0.232961, -1.348469,2.4945,0.452973, + -1.263395,2.4945,0.657311, -1.248557,2.498438,0.649591, -1.332632,2.498438,0.447653, + -1.332632,2.498438,0.447653, -1.348469,2.4945,0.452973, -1.263395,2.4945,0.657311, + -1.149016,2.4945,0.843248, -1.135521,2.498438,0.833344, -1.248557,2.498438,0.649591, + -1.248557,2.498438,0.649591, -1.263395,2.4945,0.657311, -1.149016,2.4945,0.843248, + -1.008058,2.4945,1.008058, -0.996219,2.498438,0.996219, -1.135521,2.498438,0.833344, + -1.135521,2.498438,0.833344, -1.149016,2.4945,0.843248, -1.008058,2.4945,1.008058, + -0.843248,2.4945,1.149016, -0.833344,2.498438,1.135521, -0.996219,2.498438,0.996219, + -0.996219,2.498438,0.996219, -1.008058,2.4945,1.008058, -0.843248,2.4945,1.149016, + -0.657311,2.4945,1.263395, -0.649591,2.498438,1.248557, -0.833344,2.498438,1.135521, + -0.833344,2.498438,1.135521, -0.843248,2.4945,1.149016, -0.657311,2.4945,1.263395, + -0.452973,2.4945,1.348469, -0.447653,2.498438,1.332632, -0.649591,2.498438,1.248557, + -0.649591,2.498438,1.248557, -0.657311,2.4945,1.263395, -0.452973,2.4945,1.348469, + -0.232961,2.4945,1.401513, -0.230225,2.498438,1.385053, -0.447653,2.498438,1.332632, + -0.447653,2.498438,1.332632, -0.452973,2.4945,1.348469, -0.232961,2.4945,1.401513, + 0,2.4945,1.4198, 0,2.498438,1.403125, -0.230225,2.498438,1.385053, + -0.230225,2.498438,1.385053, -0.232961,2.4945,1.401513, 0,2.4945,1.4198, + -1.42049,2.482687,0.236115, -1.401513,2.4945,0.232961, -1.4198,2.4945,0, + -1.4198,2.4945,0, -1.439025,2.482687,0, -1.42049,2.482687,0.236115, + -1.366728,2.482687,0.459107, -1.348469,2.4945,0.452973, -1.401513,2.4945,0.232961, + -1.401513,2.4945,0.232961, -1.42049,2.482687,0.236115, -1.366728,2.482687,0.459107, + -1.280502,2.482687,0.666211, -1.263395,2.4945,0.657311, -1.348469,2.4945,0.452973, + -1.348469,2.4945,0.452973, -1.366728,2.482687,0.459107, -1.280502,2.482687,0.666211, + -1.164574,2.482687,0.854666, -1.149016,2.4945,0.843248, -1.263395,2.4945,0.657311, + -1.263395,2.4945,0.657311, -1.280502,2.482687,0.666211, -1.164574,2.482687,0.854666, + -1.021708,2.482687,1.021708, -1.008058,2.4945,1.008058, -1.149016,2.4945,0.843248, + -1.149016,2.4945,0.843248, -1.164574,2.482687,0.854666, -1.021708,2.482687,1.021708, + -0.854666,2.482687,1.164574, -0.843248,2.4945,1.149016, -1.008058,2.4945,1.008058, + -1.008058,2.4945,1.008058, -1.021708,2.482687,1.021708, -0.854666,2.482687,1.164574, + -0.666211,2.482687,1.280502, -0.657311,2.4945,1.263395, -0.843248,2.4945,1.149016, + -0.843248,2.4945,1.149016, -0.854666,2.482687,1.164574, -0.666211,2.482687,1.280502, + -0.459107,2.482687,1.366728, -0.452973,2.4945,1.348469, -0.657311,2.4945,1.263395, + -0.657311,2.4945,1.263395, -0.666211,2.482687,1.280502, -0.459107,2.482687,1.366728, + -0.236115,2.482687,1.42049, -0.232961,2.4945,1.401513, -0.452973,2.4945,1.348469, + -0.452973,2.4945,1.348469, -0.459107,2.482687,1.366728, -0.236115,2.482687,1.42049, + 0,2.482687,1.439025, 0,2.4945,1.4198, -0.232961,2.4945,1.401513, + -0.232961,2.4945,1.401513, -0.236115,2.482687,1.42049, 0,2.482687,1.439025, + -1.4408,2.463,0.239491, -1.42049,2.482687,0.236115, -1.439025,2.482687,0, + -1.439025,2.482687,0, -1.4596,2.463,0, -1.4408,2.463,0.239491, + -1.38627,2.463,0.465671, -1.366728,2.482687,0.459107, -1.42049,2.482687,0.236115, + -1.42049,2.482687,0.236115, -1.4408,2.463,0.239491, -1.38627,2.463,0.465671, + -1.29881,2.463,0.675736, -1.280502,2.482687,0.666211, -1.366728,2.482687,0.459107, + -1.366728,2.482687,0.459107, -1.38627,2.463,0.465671, -1.29881,2.463,0.675736, + -1.181225,2.463,0.866886, -1.164574,2.482687,0.854666, -1.280502,2.482687,0.666211, + -1.280502,2.482687,0.666211, -1.29881,2.463,0.675736, -1.181225,2.463,0.866886, + -1.036316,2.463,1.036316, -1.021708,2.482687,1.021708, -1.164574,2.482687,0.854666, + -1.164574,2.482687,0.854666, -1.181225,2.463,0.866886, -1.036316,2.463,1.036316, + -0.866886,2.463,1.181225, -0.854666,2.482687,1.164574, -1.021708,2.482687,1.021708, + -1.021708,2.482687,1.021708, -1.036316,2.463,1.036316, -0.866886,2.463,1.181225, + -0.675736,2.463,1.29881, -0.666211,2.482687,1.280502, -0.854666,2.482687,1.164574, + -0.854666,2.482687,1.164574, -0.866886,2.463,1.181225, -0.675736,2.463,1.29881, + -0.465671,2.463,1.38627, -0.459107,2.482687,1.366728, -0.666211,2.482687,1.280502, + -0.666211,2.482687,1.280502, -0.675736,2.463,1.29881, -0.465671,2.463,1.38627, + -0.239491,2.463,1.4408, -0.236115,2.482687,1.42049, -0.459107,2.482687,1.366728, + -0.459107,2.482687,1.366728, -0.465671,2.463,1.38627, -0.239491,2.463,1.4408, + 0,2.463,1.4596, 0,2.482687,1.439025, -0.236115,2.482687,1.42049, + -0.236115,2.482687,1.42049, -0.239491,2.463,1.4408, 0,2.463,1.4596, + -1.461258,2.435437,0.242892, -1.4408,2.463,0.239491, -1.4596,2.463,0, + -1.4596,2.463,0, -1.480325,2.435437,0, -1.461258,2.435437,0.242892, + -1.405953,2.435437,0.472283, -1.38627,2.463,0.465671, -1.4408,2.463,0.239491, + -1.4408,2.463,0.239491, -1.461258,2.435437,0.242892, -1.405953,2.435437,0.472283, + -1.317252,2.435437,0.685331, -1.29881,2.463,0.675736, -1.38627,2.463,0.465671, + -1.38627,2.463,0.465671, -1.405953,2.435437,0.472283, -1.317252,2.435437,0.685331, + -1.197997,2.435437,0.879195, -1.181225,2.463,0.866886, -1.29881,2.463,0.675736, + -1.29881,2.463,0.675736, -1.317252,2.435437,0.685331, -1.197997,2.435437,0.879195, + -1.051031,2.435437,1.051031, -1.036316,2.463,1.036316, -1.181225,2.463,0.866886, + -1.181225,2.463,0.866886, -1.197997,2.435437,0.879195, -1.051031,2.435437,1.051031, + -0.879195,2.435437,1.197997, -0.866886,2.463,1.181225, -1.036316,2.463,1.036316, + -1.036316,2.463,1.036316, -1.051031,2.435437,1.051031, -0.879195,2.435437,1.197997, + -0.685331,2.435437,1.317252, -0.675736,2.463,1.29881, -0.866886,2.463,1.181225, + -0.866886,2.463,1.181225, -0.879195,2.435437,1.197997, -0.685331,2.435437,1.317252, + -0.472283,2.435437,1.405953, -0.465671,2.463,1.38627, -0.675736,2.463,1.29881, + -0.675736,2.463,1.29881, -0.685331,2.435437,1.317252, -0.472283,2.435437,1.405953, + -0.242892,2.435437,1.461258, -0.239491,2.463,1.4408, -0.465671,2.463,1.38627, + -0.465671,2.463,1.38627, -0.472283,2.435437,1.405953, -0.242892,2.435437,1.461258, + 0,2.435437,1.480325, 0,2.463,1.4596, -0.239491,2.463,1.4408, + -0.239491,2.463,1.4408, -0.242892,2.435437,1.461258, 0,2.435437,1.480325, + -1.48068,2.4,0.24612, -1.461258,2.435437,0.242892, -1.480325,2.435437,0, + -1.480325,2.435437,0, -1.5,2.4,0, -1.48068,2.4,0.24612, + -1.42464,2.4,0.47856, -1.405953,2.435437,0.472283, -1.461258,2.435437,0.242892, + -1.461258,2.435437,0.242892, -1.48068,2.4,0.24612, -1.42464,2.4,0.47856, + -1.33476,2.4,0.69444, -1.317252,2.435437,0.685331, -1.405953,2.435437,0.472283, + -1.405953,2.435437,0.472283, -1.42464,2.4,0.47856, -1.33476,2.4,0.69444, + -1.21392,2.4,0.89088, -1.197997,2.435437,0.879195, -1.317252,2.435437,0.685331, + -1.317252,2.435437,0.685331, -1.33476,2.4,0.69444, -1.21392,2.4,0.89088, + -1.065,2.4,1.065, -1.051031,2.435437,1.051031, -1.197997,2.435437,0.879195, + -1.197997,2.435437,0.879195, -1.21392,2.4,0.89088, -1.065,2.4,1.065, + -0.89088,2.4,1.21392, -0.879195,2.435437,1.197997, -1.051031,2.435437,1.051031, + -1.051031,2.435437,1.051031, -1.065,2.4,1.065, -0.89088,2.4,1.21392, + -0.69444,2.4,1.33476, -0.685331,2.435437,1.317252, -0.879195,2.435437,1.197997, + -0.879195,2.435437,1.197997, -0.89088,2.4,1.21392, -0.69444,2.4,1.33476, + -0.47856,2.4,1.42464, -0.472283,2.435437,1.405953, -0.685331,2.435437,1.317252, + -0.685331,2.435437,1.317252, -0.69444,2.4,1.33476, -0.47856,2.4,1.42464, + -0.24612,2.4,1.48068, -0.242892,2.435437,1.461258, -0.472283,2.435437,1.405953, + -0.472283,2.435437,1.405953, -0.47856,2.4,1.42464, -0.24612,2.4,1.48068, + 0,2.4,1.5, 0,2.435437,1.480325, -0.242892,2.435437,1.461258, + -0.242892,2.435437,1.461258, -0.24612,2.4,1.48068, 0,2.4,1.5, + 0.227403,2.435437,1.368074, 0.229712,2.4,1.381968, 0,2.4,1.4, + 0,2.4,1.4, 0,2.435437,1.385925, 0.227403,2.435437,1.368074, + 0.442166,2.435437,1.316296, 0.446656,2.4,1.329664, 0.229712,2.4,1.381968, + 0.229712,2.4,1.381968, 0.227403,2.435437,1.368074, 0.442166,2.435437,1.316296, + 0.641628,2.435437,1.233252, 0.648144,2.4,1.245776, 0.446656,2.4,1.329664, + 0.446656,2.4,1.329664, 0.442166,2.435437,1.316296, 0.641628,2.435437,1.233252, + 0.823129,2.435437,1.121601, 0.831488,2.4,1.132992, 0.648144,2.4,1.245776, + 0.648144,2.4,1.245776, 0.641628,2.435437,1.233252, 0.823129,2.435437,1.121601, + 0.984007,2.435437,0.984007, 0.994,2.4,0.994, 0.831488,2.4,1.132992, + 0.831488,2.4,1.132992, 0.823129,2.435437,1.121601, 0.984007,2.435437,0.984007, + 1.121601,2.435437,0.823129, 1.132992,2.4,0.831488, 0.994,2.4,0.994, + 0.994,2.4,0.994, 0.984007,2.435437,0.984007, 1.121601,2.435437,0.823129, + 1.233252,2.435437,0.641628, 1.245776,2.4,0.648144, 1.132992,2.4,0.831488, + 1.132992,2.4,0.831488, 1.121601,2.435437,0.823129, 1.233252,2.435437,0.641628, + 1.316296,2.435437,0.442166, 1.329664,2.4,0.446656, 1.245776,2.4,0.648144, + 1.245776,2.4,0.648144, 1.233252,2.435437,0.641628, 1.316296,2.435437,0.442166, + 1.368074,2.435437,0.227403, 1.381968,2.4,0.229712, 1.329664,2.4,0.446656, + 1.329664,2.4,0.446656, 1.316296,2.435437,0.442166, 1.368074,2.435437,0.227403, + 1.385925,2.435437,0, 1.4,2.4,0, 1.381968,2.4,0.229712, + 1.381968,2.4,0.229712, 1.368074,2.435437,0.227403, 1.385925,2.435437,0, + 0.226496,2.463,1.36262, 0.227403,2.435437,1.368074, 0,2.435437,1.385925, + 0,2.435437,1.385925, 0,2.463,1.3804, 0.226496,2.463,1.36262, + 0.440403,2.463,1.311049, 0.442166,2.435437,1.316296, 0.227403,2.435437,1.368074, + 0.227403,2.435437,1.368074, 0.226496,2.463,1.36262, 0.440403,2.463,1.311049, + 0.63907,2.463,1.228335, 0.641628,2.435437,1.233252, 0.442166,2.435437,1.316296, + 0.442166,2.435437,1.316296, 0.440403,2.463,1.311049, 0.63907,2.463,1.228335, + 0.819847,2.463,1.11713, 0.823129,2.435437,1.121601, 0.641628,2.435437,1.233252, + 0.641628,2.435437,1.233252, 0.63907,2.463,1.228335, 0.819847,2.463,1.11713, + 0.980084,2.463,0.980084, 0.984007,2.435437,0.984007, 0.823129,2.435437,1.121601, + 0.823129,2.435437,1.121601, 0.819847,2.463,1.11713, 0.980084,2.463,0.980084, + 1.11713,2.463,0.819847, 1.121601,2.435437,0.823129, 0.984007,2.435437,0.984007, + 0.984007,2.435437,0.984007, 0.980084,2.463,0.980084, 1.11713,2.463,0.819847, + 1.228335,2.463,0.63907, 1.233252,2.435437,0.641628, 1.121601,2.435437,0.823129, + 1.121601,2.435437,0.823129, 1.11713,2.463,0.819847, 1.228335,2.463,0.63907, + 1.311049,2.463,0.440403, 1.316296,2.435437,0.442166, 1.233252,2.435437,0.641628, + 1.233252,2.435437,0.641628, 1.228335,2.463,0.63907, 1.311049,2.463,0.440403, + 1.36262,2.463,0.226496, 1.368074,2.435437,0.227403, 1.316296,2.435437,0.442166, + 1.316296,2.435437,0.442166, 1.311049,2.463,0.440403, 1.36262,2.463,0.226496, + 1.3804,2.463,0, 1.385925,2.435437,0, 1.368074,2.435437,0.227403, + 1.368074,2.435437,0.227403, 1.36262,2.463,0.226496, 1.3804,2.463,0, + 0.226795,2.482687,1.364422, 0.226496,2.463,1.36262, 0,2.463,1.3804, + 0,2.463,1.3804, 0,2.482687,1.382225, 0.226795,2.482687,1.364422, + 0.440985,2.482687,1.312782, 0.440403,2.463,1.311049, 0.226496,2.463,1.36262, + 0.226496,2.463,1.36262, 0.226795,2.482687,1.364422, 0.440985,2.482687,1.312782, + 0.639915,2.482687,1.229959, 0.63907,2.463,1.228335, 0.440403,2.463,1.311049, + 0.440403,2.463,1.311049, 0.440985,2.482687,1.312782, 0.639915,2.482687,1.229959, + 0.820931,2.482687,1.118607, 0.819847,2.463,1.11713, 0.63907,2.463,1.228335, + 0.63907,2.463,1.228335, 0.639915,2.482687,1.229959, 0.820931,2.482687,1.118607, + 0.98138,2.482687,0.98138, 0.980084,2.463,0.980084, 0.819847,2.463,1.11713, + 0.819847,2.463,1.11713, 0.820931,2.482687,1.118607, 0.98138,2.482687,0.98138, + 1.118607,2.482687,0.820931, 1.11713,2.463,0.819847, 0.980084,2.463,0.980084, + 0.980084,2.463,0.980084, 0.98138,2.482687,0.98138, 1.118607,2.482687,0.820931, + 1.229959,2.482687,0.639915, 1.228335,2.463,0.63907, 1.11713,2.463,0.819847, + 1.11713,2.463,0.819847, 1.118607,2.482687,0.820931, 1.229959,2.482687,0.639915, + 1.312782,2.482687,0.440985, 1.311049,2.463,0.440403, 1.228335,2.463,0.63907, + 1.228335,2.463,0.63907, 1.229959,2.482687,0.639915, 1.312782,2.482687,0.440985, + 1.364422,2.482687,0.226795, 1.36262,2.463,0.226496, 1.311049,2.463,0.440403, + 1.311049,2.463,0.440403, 1.312782,2.482687,0.440985, 1.364422,2.482687,0.226795, + 1.382225,2.482687,0, 1.3804,2.463,0, 1.36262,2.463,0.226496, + 1.36262,2.463,0.226496, 1.364422,2.482687,0.226795, 1.382225,2.482687,0, + 0.228104,2.4945,1.372294, 0.226795,2.482687,1.364422, 0,2.482687,1.382225, + 0,2.482687,1.382225, 0,2.4945,1.3902, 0.228104,2.4945,1.372294, + 0.443529,2.4945,1.320356, 0.440985,2.482687,1.312782, 0.226795,2.482687,1.364422, + 0.226795,2.482687,1.364422, 0.228104,2.4945,1.372294, 0.443529,2.4945,1.320356, + 0.643607,2.4945,1.237056, 0.639915,2.482687,1.229959, 0.440985,2.482687,1.312782, + 0.440985,2.482687,1.312782, 0.443529,2.4945,1.320356, 0.643607,2.4945,1.237056, + 0.825668,2.4945,1.125061, 0.820931,2.482687,1.118607, 0.639915,2.482687,1.229959, + 0.639915,2.482687,1.229959, 0.643607,2.4945,1.237056, 0.825668,2.4945,1.125061, + 0.987042,2.4945,0.987042, 0.98138,2.482687,0.98138, 0.820931,2.482687,1.118607, + 0.820931,2.482687,1.118607, 0.825668,2.4945,1.125061, 0.987042,2.4945,0.987042, + 1.125061,2.4945,0.825668, 1.118607,2.482687,0.820931, 0.98138,2.482687,0.98138, + 0.98138,2.482687,0.98138, 0.987042,2.4945,0.987042, 1.125061,2.4945,0.825668, + 1.237056,2.4945,0.643607, 1.229959,2.482687,0.639915, 1.118607,2.482687,0.820931, + 1.118607,2.482687,0.820931, 1.125061,2.4945,0.825668, 1.237056,2.4945,0.643607, + 1.320356,2.4945,0.443529, 1.312782,2.482687,0.440985, 1.229959,2.482687,0.639915, + 1.229959,2.482687,0.639915, 1.237056,2.4945,0.643607, 1.320356,2.4945,0.443529, + 1.372294,2.4945,0.228104, 1.364422,2.482687,0.226795, 1.312782,2.482687,0.440985, + 1.312782,2.482687,0.440985, 1.320356,2.4945,0.443529, 1.372294,2.4945,0.228104, + 1.3902,2.4945,0, 1.382225,2.482687,0, 1.364422,2.482687,0.226795, + 1.364422,2.482687,0.226795, 1.372294,2.4945,0.228104, 1.3902,2.4945,0, + 0.230225,2.498438,1.385053, 0.228104,2.4945,1.372294, 0,2.4945,1.3902, + 0,2.4945,1.3902, 0,2.498438,1.403125, 0.230225,2.498438,1.385053, + 0.447653,2.498438,1.332632, 0.443529,2.4945,1.320356, 0.228104,2.4945,1.372294, + 0.228104,2.4945,1.372294, 0.230225,2.498438,1.385053, 0.447653,2.498438,1.332632, + 0.649591,2.498438,1.248557, 0.643607,2.4945,1.237056, 0.443529,2.4945,1.320356, + 0.443529,2.4945,1.320356, 0.447653,2.498438,1.332632, 0.649591,2.498438,1.248557, + 0.833344,2.498438,1.135521, 0.825668,2.4945,1.125061, 0.643607,2.4945,1.237056, + 0.643607,2.4945,1.237056, 0.649591,2.498438,1.248557, 0.833344,2.498438,1.135521, + 0.996219,2.498438,0.996219, 0.987042,2.4945,0.987042, 0.825668,2.4945,1.125061, + 0.825668,2.4945,1.125061, 0.833344,2.498438,1.135521, 0.996219,2.498438,0.996219, + 1.135521,2.498438,0.833344, 1.125061,2.4945,0.825668, 0.987042,2.4945,0.987042, + 0.987042,2.4945,0.987042, 0.996219,2.498438,0.996219, 1.135521,2.498438,0.833344, + 1.248557,2.498438,0.649591, 1.237056,2.4945,0.643607, 1.125061,2.4945,0.825668, + 1.125061,2.4945,0.825668, 1.135521,2.498438,0.833344, 1.248557,2.498438,0.649591, + 1.332632,2.498438,0.447653, 1.320356,2.4945,0.443529, 1.237056,2.4945,0.643607, + 1.237056,2.4945,0.643607, 1.248557,2.498438,0.649591, 1.332632,2.498438,0.447653, + 1.385053,2.498438,0.230225, 1.372294,2.4945,0.228104, 1.320356,2.4945,0.443529, + 1.320356,2.4945,0.443529, 1.332632,2.498438,0.447653, 1.385053,2.498438,0.230225, + 1.403125,2.498438,0, 1.3902,2.4945,0, 1.372294,2.4945,0.228104, + 1.372294,2.4945,0.228104, 1.385053,2.498438,0.230225, 1.403125,2.498438,0, + 0.232961,2.4945,1.401513, 0.230225,2.498438,1.385053, 0,2.498438,1.403125, + 0,2.498438,1.403125, 0,2.4945,1.4198, 0.232961,2.4945,1.401513, + 0.452973,2.4945,1.348469, 0.447653,2.498438,1.332632, 0.230225,2.498438,1.385053, + 0.230225,2.498438,1.385053, 0.232961,2.4945,1.401513, 0.452973,2.4945,1.348469, + 0.657311,2.4945,1.263395, 0.649591,2.498438,1.248557, 0.447653,2.498438,1.332632, + 0.447653,2.498438,1.332632, 0.452973,2.4945,1.348469, 0.657311,2.4945,1.263395, + 0.843248,2.4945,1.149016, 0.833344,2.498438,1.135521, 0.649591,2.498438,1.248557, + 0.649591,2.498438,1.248557, 0.657311,2.4945,1.263395, 0.843248,2.4945,1.149016, + 1.008058,2.4945,1.008058, 0.996219,2.498438,0.996219, 0.833344,2.498438,1.135521, + 0.833344,2.498438,1.135521, 0.843248,2.4945,1.149016, 1.008058,2.4945,1.008058, + 1.149016,2.4945,0.843248, 1.135521,2.498438,0.833344, 0.996219,2.498438,0.996219, + 0.996219,2.498438,0.996219, 1.008058,2.4945,1.008058, 1.149016,2.4945,0.843248, + 1.263395,2.4945,0.657311, 1.248557,2.498438,0.649591, 1.135521,2.498438,0.833344, + 1.135521,2.498438,0.833344, 1.149016,2.4945,0.843248, 1.263395,2.4945,0.657311, + 1.348469,2.4945,0.452973, 1.332632,2.498438,0.447653, 1.248557,2.498438,0.649591, + 1.248557,2.498438,0.649591, 1.263395,2.4945,0.657311, 1.348469,2.4945,0.452973, + 1.401513,2.4945,0.232961, 1.385053,2.498438,0.230225, 1.332632,2.498438,0.447653, + 1.332632,2.498438,0.447653, 1.348469,2.4945,0.452973, 1.401513,2.4945,0.232961, + 1.4198,2.4945,0, 1.403125,2.498438,0, 1.385053,2.498438,0.230225, + 1.385053,2.498438,0.230225, 1.401513,2.4945,0.232961, 1.4198,2.4945,0, + 0.236115,2.482687,1.42049, 0.232961,2.4945,1.401513, 0,2.4945,1.4198, + 0,2.4945,1.4198, 0,2.482687,1.439025, 0.236115,2.482687,1.42049, + 0.459107,2.482687,1.366728, 0.452973,2.4945,1.348469, 0.232961,2.4945,1.401513, + 0.232961,2.4945,1.401513, 0.236115,2.482687,1.42049, 0.459107,2.482687,1.366728, + 0.666211,2.482687,1.280502, 0.657311,2.4945,1.263395, 0.452973,2.4945,1.348469, + 0.452973,2.4945,1.348469, 0.459107,2.482687,1.366728, 0.666211,2.482687,1.280502, + 0.854666,2.482687,1.164574, 0.843248,2.4945,1.149016, 0.657311,2.4945,1.263395, + 0.657311,2.4945,1.263395, 0.666211,2.482687,1.280502, 0.854666,2.482687,1.164574, + 1.021708,2.482687,1.021708, 1.008058,2.4945,1.008058, 0.843248,2.4945,1.149016, + 0.843248,2.4945,1.149016, 0.854666,2.482687,1.164574, 1.021708,2.482687,1.021708, + 1.164574,2.482687,0.854666, 1.149016,2.4945,0.843248, 1.008058,2.4945,1.008058, + 1.008058,2.4945,1.008058, 1.021708,2.482687,1.021708, 1.164574,2.482687,0.854666, + 1.280502,2.482687,0.666211, 1.263395,2.4945,0.657311, 1.149016,2.4945,0.843248, + 1.149016,2.4945,0.843248, 1.164574,2.482687,0.854666, 1.280502,2.482687,0.666211, + 1.366728,2.482687,0.459107, 1.348469,2.4945,0.452973, 1.263395,2.4945,0.657311, + 1.263395,2.4945,0.657311, 1.280502,2.482687,0.666211, 1.366728,2.482687,0.459107, + 1.42049,2.482687,0.236115, 1.401513,2.4945,0.232961, 1.348469,2.4945,0.452973, + 1.348469,2.4945,0.452973, 1.366728,2.482687,0.459107, 1.42049,2.482687,0.236115, + 1.439025,2.482687,0, 1.4198,2.4945,0, 1.401513,2.4945,0.232961, + 1.401513,2.4945,0.232961, 1.42049,2.482687,0.236115, 1.439025,2.482687,0, + 0.239491,2.463,1.4408, 0.236115,2.482687,1.42049, 0,2.482687,1.439025, + 0,2.482687,1.439025, 0,2.463,1.4596, 0.239491,2.463,1.4408, + 0.465671,2.463,1.38627, 0.459107,2.482687,1.366728, 0.236115,2.482687,1.42049, + 0.236115,2.482687,1.42049, 0.239491,2.463,1.4408, 0.465671,2.463,1.38627, + 0.675736,2.463,1.29881, 0.666211,2.482687,1.280502, 0.459107,2.482687,1.366728, + 0.459107,2.482687,1.366728, 0.465671,2.463,1.38627, 0.675736,2.463,1.29881, + 0.866886,2.463,1.181225, 0.854666,2.482687,1.164574, 0.666211,2.482687,1.280502, + 0.666211,2.482687,1.280502, 0.675736,2.463,1.29881, 0.866886,2.463,1.181225, + 1.036316,2.463,1.036316, 1.021708,2.482687,1.021708, 0.854666,2.482687,1.164574, + 0.854666,2.482687,1.164574, 0.866886,2.463,1.181225, 1.036316,2.463,1.036316, + 1.181225,2.463,0.866886, 1.164574,2.482687,0.854666, 1.021708,2.482687,1.021708, + 1.021708,2.482687,1.021708, 1.036316,2.463,1.036316, 1.181225,2.463,0.866886, + 1.29881,2.463,0.675736, 1.280502,2.482687,0.666211, 1.164574,2.482687,0.854666, + 1.164574,2.482687,0.854666, 1.181225,2.463,0.866886, 1.29881,2.463,0.675736, + 1.38627,2.463,0.465671, 1.366728,2.482687,0.459107, 1.280502,2.482687,0.666211, + 1.280502,2.482687,0.666211, 1.29881,2.463,0.675736, 1.38627,2.463,0.465671, + 1.4408,2.463,0.239491, 1.42049,2.482687,0.236115, 1.366728,2.482687,0.459107, + 1.366728,2.482687,0.459107, 1.38627,2.463,0.465671, 1.4408,2.463,0.239491, + 1.4596,2.463,0, 1.439025,2.482687,0, 1.42049,2.482687,0.236115, + 1.42049,2.482687,0.236115, 1.4408,2.463,0.239491, 1.4596,2.463,0, + 0.242892,2.435437,1.461258, 0.239491,2.463,1.4408, 0,2.463,1.4596, + 0,2.463,1.4596, 0,2.435437,1.480325, 0.242892,2.435437,1.461258, + 0.472283,2.435437,1.405953, 0.465671,2.463,1.38627, 0.239491,2.463,1.4408, + 0.239491,2.463,1.4408, 0.242892,2.435437,1.461258, 0.472283,2.435437,1.405953, + 0.685331,2.435437,1.317252, 0.675736,2.463,1.29881, 0.465671,2.463,1.38627, + 0.465671,2.463,1.38627, 0.472283,2.435437,1.405953, 0.685331,2.435437,1.317252, + 0.879195,2.435437,1.197997, 0.866886,2.463,1.181225, 0.675736,2.463,1.29881, + 0.675736,2.463,1.29881, 0.685331,2.435437,1.317252, 0.879195,2.435437,1.197997, + 1.051031,2.435437,1.051031, 1.036316,2.463,1.036316, 0.866886,2.463,1.181225, + 0.866886,2.463,1.181225, 0.879195,2.435437,1.197997, 1.051031,2.435437,1.051031, + 1.197997,2.435437,0.879195, 1.181225,2.463,0.866886, 1.036316,2.463,1.036316, + 1.036316,2.463,1.036316, 1.051031,2.435437,1.051031, 1.197997,2.435437,0.879195, + 1.317252,2.435437,0.685331, 1.29881,2.463,0.675736, 1.181225,2.463,0.866886, + 1.181225,2.463,0.866886, 1.197997,2.435437,0.879195, 1.317252,2.435437,0.685331, + 1.405953,2.435437,0.472283, 1.38627,2.463,0.465671, 1.29881,2.463,0.675736, + 1.29881,2.463,0.675736, 1.317252,2.435437,0.685331, 1.405953,2.435437,0.472283, + 1.461258,2.435437,0.242892, 1.4408,2.463,0.239491, 1.38627,2.463,0.465671, + 1.38627,2.463,0.465671, 1.405953,2.435437,0.472283, 1.461258,2.435437,0.242892, + 1.480325,2.435437,0, 1.4596,2.463,0, 1.4408,2.463,0.239491, + 1.4408,2.463,0.239491, 1.461258,2.435437,0.242892, 1.480325,2.435437,0, + 0.24612,2.4,1.48068, 0.242892,2.435437,1.461258, 0,2.435437,1.480325, + 0,2.435437,1.480325, 0,2.4,1.5, 0.24612,2.4,1.48068, + 0.47856,2.4,1.42464, 0.472283,2.435437,1.405953, 0.242892,2.435437,1.461258, + 0.242892,2.435437,1.461258, 0.24612,2.4,1.48068, 0.47856,2.4,1.42464, + 0.69444,2.4,1.33476, 0.685331,2.435437,1.317252, 0.472283,2.435437,1.405953, + 0.472283,2.435437,1.405953, 0.47856,2.4,1.42464, 0.69444,2.4,1.33476, + 0.89088,2.4,1.21392, 0.879195,2.435437,1.197997, 0.685331,2.435437,1.317252, + 0.685331,2.435437,1.317252, 0.69444,2.4,1.33476, 0.89088,2.4,1.21392, + 1.065,2.4,1.065, 1.051031,2.435437,1.051031, 0.879195,2.435437,1.197997, + 0.879195,2.435437,1.197997, 0.89088,2.4,1.21392, 1.065,2.4,1.065, + 1.21392,2.4,0.89088, 1.197997,2.435437,0.879195, 1.051031,2.435437,1.051031, + 1.051031,2.435437,1.051031, 1.065,2.4,1.065, 1.21392,2.4,0.89088, + 1.33476,2.4,0.69444, 1.317252,2.435437,0.685331, 1.197997,2.435437,0.879195, + 1.197997,2.435437,0.879195, 1.21392,2.4,0.89088, 1.33476,2.4,0.69444, + 1.42464,2.4,0.47856, 1.405953,2.435437,0.472283, 1.317252,2.435437,0.685331, + 1.317252,2.435437,0.685331, 1.33476,2.4,0.69444, 1.42464,2.4,0.47856, + 1.48068,2.4,0.24612, 1.461258,2.435437,0.242892, 1.405953,2.435437,0.472283, + 1.405953,2.435437,0.472283, 1.42464,2.4,0.47856, 1.48068,2.4,0.24612, + 1.5,2.4,0, 1.480325,2.435437,0, 1.461258,2.435437,0.242892, + 1.461258,2.435437,0.242892, 1.48068,2.4,0.24612, 1.5,2.4,0, + 1.554467,2.242575,-0.258385, 1.48068,2.4,-0.24612, 1.5,2.4,0, + 1.5,2.4,0, 1.57475,2.242575,0, 1.554467,2.242575,-0.258385, + 1.495635,2.242575,-0.502408, 1.42464,2.4,-0.47856, 1.48068,2.4,-0.24612, + 1.48068,2.4,-0.24612, 1.554467,2.242575,-0.258385, 1.495635,2.242575,-0.502408, + 1.401276,2.242575,-0.729046, 1.33476,2.4,-0.69444, 1.42464,2.4,-0.47856, + 1.42464,2.4,-0.47856, 1.495635,2.242575,-0.502408, 1.401276,2.242575,-0.729046, + 1.274414,2.242575,-0.935276, 1.21392,2.4,-0.89088, 1.33476,2.4,-0.69444, + 1.33476,2.4,-0.69444, 1.401276,2.242575,-0.729046, 1.274414,2.242575,-0.935276, + 1.118073,2.242575,-1.118073, 1.065,2.4,-1.065, 1.21392,2.4,-0.89088, + 1.21392,2.4,-0.89088, 1.274414,2.242575,-0.935276, 1.118073,2.242575,-1.118073, + 0.935276,2.242575,-1.274414, 0.89088,2.4,-1.21392, 1.065,2.4,-1.065, + 1.065,2.4,-1.065, 1.118073,2.242575,-1.118073, 0.935276,2.242575,-1.274414, + 0.729046,2.242575,-1.401276, 0.69444,2.4,-1.33476, 0.89088,2.4,-1.21392, + 0.89088,2.4,-1.21392, 0.935276,2.242575,-1.274414, 0.729046,2.242575,-1.401276, + 0.502408,2.242575,-1.495635, 0.47856,2.4,-1.42464, 0.69444,2.4,-1.33476, + 0.69444,2.4,-1.33476, 0.729046,2.242575,-1.401276, 0.502408,2.242575,-1.495635, + 0.258385,2.242575,-1.554467, 0.24612,2.4,-1.48068, 0.47856,2.4,-1.42464, + 0.47856,2.4,-1.42464, 0.502408,2.242575,-1.495635, 0.258385,2.242575,-1.554467, + 0,2.242575,-1.57475, 0,2.4,-1.5, 0.24612,2.4,-1.48068, + 0.24612,2.4,-1.48068, 0.258385,2.242575,-1.554467, 0,2.242575,-1.57475, + 1.626774,2.0856,-0.270404, 1.554467,2.242575,-0.258385, 1.57475,2.242575,0, + 1.57475,2.242575,0, 1.648,2.0856,0, 1.626774,2.0856,-0.270404, + 1.565204,2.0856,-0.525778, 1.495635,2.242575,-0.502408, 1.554467,2.242575,-0.258385, + 1.554467,2.242575,-0.258385, 1.626774,2.0856,-0.270404, 1.565204,2.0856,-0.525778, + 1.466456,2.0856,-0.762958, 1.401276,2.242575,-0.729046, 1.495635,2.242575,-0.502408, + 1.495635,2.242575,-0.502408, 1.565204,2.0856,-0.525778, 1.466456,2.0856,-0.762958, + 1.333693,2.0856,-0.97878, 1.274414,2.242575,-0.935276, 1.401276,2.242575,-0.729046, + 1.401276,2.242575,-0.729046, 1.466456,2.0856,-0.762958, 1.333693,2.0856,-0.97878, + 1.17008,2.0856,-1.17008, 1.118073,2.242575,-1.118073, 1.274414,2.242575,-0.935276, + 1.274414,2.242575,-0.935276, 1.333693,2.0856,-0.97878, 1.17008,2.0856,-1.17008, + 0.97878,2.0856,-1.333693, 0.935276,2.242575,-1.274414, 1.118073,2.242575,-1.118073, + 1.118073,2.242575,-1.118073, 1.17008,2.0856,-1.17008, 0.97878,2.0856,-1.333693, + 0.762958,2.0856,-1.466456, 0.729046,2.242575,-1.401276, 0.935276,2.242575,-1.274414, + 0.935276,2.242575,-1.274414, 0.97878,2.0856,-1.333693, 0.762958,2.0856,-1.466456, + 0.525778,2.0856,-1.565204, 0.502408,2.242575,-1.495635, 0.729046,2.242575,-1.401276, + 0.729046,2.242575,-1.401276, 0.762958,2.0856,-1.466456, 0.525778,2.0856,-1.565204, + 0.270404,2.0856,-1.626774, 0.258385,2.242575,-1.554467, 0.502408,2.242575,-1.495635, + 0.502408,2.242575,-1.495635, 0.525778,2.0856,-1.565204, 0.270404,2.0856,-1.626774, + 0,2.0856,-1.648, 0,2.242575,-1.57475, 0.258385,2.242575,-1.554467, + 0.258385,2.242575,-1.554467, 0.270404,2.0856,-1.626774, 0,2.0856,-1.648, + 1.696119,1.929525,-0.28193, 1.626774,2.0856,-0.270404, 1.648,2.0856,0, + 1.648,2.0856,0, 1.71825,1.929525,0, 1.696119,1.929525,-0.28193, + 1.631925,1.929525,-0.54819, 1.565204,2.0856,-0.525778, 1.626774,2.0856,-0.270404, + 1.626774,2.0856,-0.270404, 1.696119,1.929525,-0.28193, 1.631925,1.929525,-0.54819, + 1.528968,1.929525,-0.795481, 1.466456,2.0856,-0.762958, 1.565204,2.0856,-0.525778, + 1.565204,2.0856,-0.525778, 1.631925,1.929525,-0.54819, 1.528968,1.929525,-0.795481, + 1.390545,1.929525,-1.020503, 1.333693,2.0856,-0.97878, 1.466456,2.0856,-0.762958, + 1.466456,2.0856,-0.762958, 1.528968,1.929525,-0.795481, 1.390545,1.929525,-1.020503, + 1.219958,1.929525,-1.219958, 1.17008,2.0856,-1.17008, 1.333693,2.0856,-0.97878, + 1.333693,2.0856,-0.97878, 1.390545,1.929525,-1.020503, 1.219958,1.929525,-1.219958, + 1.020503,1.929525,-1.390545, 0.97878,2.0856,-1.333693, 1.17008,2.0856,-1.17008, + 1.17008,2.0856,-1.17008, 1.219958,1.929525,-1.219958, 1.020503,1.929525,-1.390545, + 0.795481,1.929525,-1.528968, 0.762958,2.0856,-1.466456, 0.97878,2.0856,-1.333693, + 0.97878,2.0856,-1.333693, 1.020503,1.929525,-1.390545, 0.795481,1.929525,-1.528968, + 0.54819,1.929525,-1.631925, 0.525778,2.0856,-1.565204, 0.762958,2.0856,-1.466456, + 0.762958,2.0856,-1.466456, 0.795481,1.929525,-1.528968, 0.54819,1.929525,-1.631925, + 0.28193,1.929525,-1.696119, 0.270404,2.0856,-1.626774, 0.525778,2.0856,-1.565204, + 0.525778,2.0856,-1.565204, 0.54819,1.929525,-1.631925, 0.28193,1.929525,-1.696119, + 0,1.929525,-1.71825, 0,2.0856,-1.648, 0.270404,2.0856,-1.626774, + 0.270404,2.0856,-1.626774, 0.28193,1.929525,-1.696119, 0,1.929525,-1.71825, + 1.761022,1.7748,-0.292719, 1.696119,1.929525,-0.28193, 1.71825,1.929525,0, + 1.71825,1.929525,0, 1.784,1.7748,0, 1.761022,1.7748,-0.292719, + 1.694372,1.7748,-0.569167, 1.631925,1.929525,-0.54819, 1.696119,1.929525,-0.28193, + 1.696119,1.929525,-0.28193, 1.761022,1.7748,-0.292719, 1.694372,1.7748,-0.569167, + 1.587475,1.7748,-0.825921, 1.528968,1.929525,-0.795481, 1.631925,1.929525,-0.54819, + 1.631925,1.929525,-0.54819, 1.694372,1.7748,-0.569167, 1.587475,1.7748,-0.825921, + 1.443756,1.7748,-1.059553, 1.390545,1.929525,-1.020503, 1.528968,1.929525,-0.795481, + 1.528968,1.929525,-0.795481, 1.587475,1.7748,-0.825921, 1.443756,1.7748,-1.059553, + 1.26664,1.7748,-1.26664, 1.219958,1.929525,-1.219958, 1.390545,1.929525,-1.020503, + 1.390545,1.929525,-1.020503, 1.443756,1.7748,-1.059553, 1.26664,1.7748,-1.26664, + 1.059553,1.7748,-1.443756, 1.020503,1.929525,-1.390545, 1.219958,1.929525,-1.219958, + 1.219958,1.929525,-1.219958, 1.26664,1.7748,-1.26664, 1.059553,1.7748,-1.443756, + 0.825921,1.7748,-1.587475, 0.795481,1.929525,-1.528968, 1.020503,1.929525,-1.390545, + 1.020503,1.929525,-1.390545, 1.059553,1.7748,-1.443756, 0.825921,1.7748,-1.587475, + 0.569167,1.7748,-1.694372, 0.54819,1.929525,-1.631925, 0.795481,1.929525,-1.528968, + 0.795481,1.929525,-1.528968, 0.825921,1.7748,-1.587475, 0.569167,1.7748,-1.694372, + 0.292719,1.7748,-1.761022, 0.28193,1.929525,-1.696119, 0.54819,1.929525,-1.631925, + 0.54819,1.929525,-1.631925, 0.569167,1.7748,-1.694372, 0.292719,1.7748,-1.761022, + 0,1.7748,-1.784, 0,1.929525,-1.71825, 0.28193,1.929525,-1.696119, + 0.28193,1.929525,-1.696119, 0.292719,1.7748,-1.761022, 0,1.7748,-1.784, + 1.820003,1.621875,-0.302523, 1.761022,1.7748,-0.292719, 1.784,1.7748,0, + 1.784,1.7748,0, 1.84375,1.621875,0, 1.820003,1.621875,-0.302523, + 1.75112,1.621875,-0.58823, 1.694372,1.7748,-0.569167, 1.761022,1.7748,-0.292719, + 1.761022,1.7748,-0.292719, 1.820003,1.621875,-0.302523, 1.75112,1.621875,-0.58823, + 1.640643,1.621875,-0.853583, 1.587475,1.7748,-0.825921, 1.694372,1.7748,-0.569167, + 1.694372,1.7748,-0.569167, 1.75112,1.621875,-0.58823, 1.640643,1.621875,-0.853583, + 1.49211,1.621875,-1.09504, 1.443756,1.7748,-1.059553, 1.587475,1.7748,-0.825921, + 1.587475,1.7748,-0.825921, 1.640643,1.621875,-0.853583, 1.49211,1.621875,-1.09504, + 1.309063,1.621875,-1.309063, 1.26664,1.7748,-1.26664, 1.443756,1.7748,-1.059553, + 1.443756,1.7748,-1.059553, 1.49211,1.621875,-1.09504, 1.309063,1.621875,-1.309063, + 1.09504,1.621875,-1.49211, 1.059553,1.7748,-1.443756, 1.26664,1.7748,-1.26664, + 1.26664,1.7748,-1.26664, 1.309063,1.621875,-1.309063, 1.09504,1.621875,-1.49211, + 0.853583,1.621875,-1.640643, 0.825921,1.7748,-1.587475, 1.059553,1.7748,-1.443756, + 1.059553,1.7748,-1.443756, 1.09504,1.621875,-1.49211, 0.853583,1.621875,-1.640643, + 0.58823,1.621875,-1.75112, 0.569167,1.7748,-1.694372, 0.825921,1.7748,-1.587475, + 0.825921,1.7748,-1.587475, 0.853583,1.621875,-1.640643, 0.58823,1.621875,-1.75112, + 0.302522,1.621875,-1.820003, 0.292719,1.7748,-1.761022, 0.569167,1.7748,-1.694372, + 0.569167,1.7748,-1.694372, 0.58823,1.621875,-1.75112, 0.302522,1.621875,-1.820003, + 0,1.621875,-1.84375, 0,1.7748,-1.784, 0.292719,1.7748,-1.761022, + 0.292719,1.7748,-1.761022, 0.302522,1.621875,-1.820003, 0,1.621875,-1.84375, + 1.87158,1.4712,-0.311096, 1.820003,1.621875,-0.302523, 1.84375,1.621875,0, + 1.84375,1.621875,0, 1.896,1.4712,0, 1.87158,1.4712,-0.311096, + 1.800745,1.4712,-0.6049, 1.75112,1.621875,-0.58823, 1.820003,1.621875,-0.302523, + 1.820003,1.621875,-0.302523, 1.87158,1.4712,-0.311096, 1.800745,1.4712,-0.6049, + 1.687137,1.4712,-0.877772, 1.640643,1.621875,-0.853583, 1.75112,1.621875,-0.58823, + 1.75112,1.621875,-0.58823, 1.800745,1.4712,-0.6049, 1.687137,1.4712,-0.877772, + 1.534395,1.4712,-1.126072, 1.49211,1.621875,-1.09504, 1.640643,1.621875,-0.853583, + 1.640643,1.621875,-0.853583, 1.687137,1.4712,-0.877772, 1.534395,1.4712,-1.126072, + 1.34616,1.4712,-1.34616, 1.309063,1.621875,-1.309063, 1.49211,1.621875,-1.09504, + 1.49211,1.621875,-1.09504, 1.534395,1.4712,-1.126072, 1.34616,1.4712,-1.34616, + 1.126072,1.4712,-1.534395, 1.09504,1.621875,-1.49211, 1.309063,1.621875,-1.309063, + 1.309063,1.621875,-1.309063, 1.34616,1.4712,-1.34616, 1.126072,1.4712,-1.534395, + 0.877772,1.4712,-1.687137, 0.853583,1.621875,-1.640643, 1.09504,1.621875,-1.49211, + 1.09504,1.621875,-1.49211, 1.126072,1.4712,-1.534395, 0.877772,1.4712,-1.687137, + 0.6049,1.4712,-1.800745, 0.58823,1.621875,-1.75112, 0.853583,1.621875,-1.640643, + 0.853583,1.621875,-1.640643, 0.877772,1.4712,-1.687137, 0.6049,1.4712,-1.800745, + 0.311096,1.4712,-1.87158, 0.302522,1.621875,-1.820003, 0.58823,1.621875,-1.75112, + 0.58823,1.621875,-1.75112, 0.6049,1.4712,-1.800745, 0.311096,1.4712,-1.87158, + 0,1.4712,-1.896, 0,1.621875,-1.84375, 0.302522,1.621875,-1.820003, + 0.302522,1.621875,-1.820003, 0.311096,1.4712,-1.87158, 0,1.4712,-1.896, + 1.914272,1.323225,-0.318192, 1.87158,1.4712,-0.311096, 1.896,1.4712,0, + 1.896,1.4712,0, 1.93925,1.323225,0, 1.914272,1.323225,-0.318192, + 1.841822,1.323225,-0.618698, 1.800745,1.4712,-0.6049, 1.87158,1.4712,-0.311096, + 1.87158,1.4712,-0.311096, 1.914272,1.323225,-0.318192, 1.841822,1.323225,-0.618698, + 1.725622,1.323225,-0.897795, 1.687137,1.4712,-0.877772, 1.800745,1.4712,-0.6049, + 1.800745,1.4712,-0.6049, 1.841822,1.323225,-0.618698, 1.725622,1.323225,-0.897795, + 1.569396,1.323225,-1.151759, 1.534395,1.4712,-1.126072, 1.687137,1.4712,-0.877772, + 1.687137,1.4712,-0.877772, 1.725622,1.323225,-0.897795, 1.569396,1.323225,-1.151759, + 1.376867,1.323225,-1.376868, 1.34616,1.4712,-1.34616, 1.534395,1.4712,-1.126072, + 1.534395,1.4712,-1.126072, 1.569396,1.323225,-1.151759, 1.376867,1.323225,-1.376868, + 1.151759,1.323225,-1.569396, 1.126072,1.4712,-1.534395, 1.34616,1.4712,-1.34616, + 1.34616,1.4712,-1.34616, 1.376867,1.323225,-1.376868, 1.151759,1.323225,-1.569396, + 0.897795,1.323225,-1.725622, 0.877772,1.4712,-1.687137, 1.126072,1.4712,-1.534395, + 1.126072,1.4712,-1.534395, 1.151759,1.323225,-1.569396, 0.897795,1.323225,-1.725622, + 0.618698,1.323225,-1.841822, 0.6049,1.4712,-1.800745, 0.877772,1.4712,-1.687137, + 0.877772,1.4712,-1.687137, 0.897795,1.323225,-1.725622, 0.618698,1.323225,-1.841822, + 0.318192,1.323225,-1.914272, 0.311096,1.4712,-1.87158, 0.6049,1.4712,-1.800745, + 0.6049,1.4712,-1.800745, 0.618698,1.323225,-1.841822, 0.318192,1.323225,-1.914272, + 0,1.323225,-1.93925, 0,1.4712,-1.896, 0.311096,1.4712,-1.87158, + 0.311096,1.4712,-1.87158, 0.318192,1.323225,-1.914272, 0,1.323225,-1.93925, + 1.946601,1.1784,-0.323566, 1.914272,1.323225,-0.318192, 1.93925,1.323225,0, + 1.93925,1.323225,0, 1.972,1.1784,0, 1.946601,1.1784,-0.323566, + 1.872927,1.1784,-0.629147, 1.841822,1.323225,-0.618698, 1.914272,1.323225,-0.318192, + 1.914272,1.323225,-0.318192, 1.946601,1.1784,-0.323566, 1.872927,1.1784,-0.629147, + 1.754764,1.1784,-0.912957, 1.725622,1.323225,-0.897795, 1.841822,1.323225,-0.618698, + 1.841822,1.323225,-0.618698, 1.872927,1.1784,-0.629147, 1.754764,1.1784,-0.912957, + 1.5959,1.1784,-1.17121, 1.569396,1.323225,-1.151759, 1.725622,1.323225,-0.897795, + 1.725622,1.323225,-0.897795, 1.754764,1.1784,-0.912957, 1.5959,1.1784,-1.17121, + 1.40012,1.1784,-1.40012, 1.376867,1.323225,-1.376868, 1.569396,1.323225,-1.151759, + 1.569396,1.323225,-1.151759, 1.5959,1.1784,-1.17121, 1.40012,1.1784,-1.40012, + 1.17121,1.1784,-1.5959, 1.151759,1.323225,-1.569396, 1.376867,1.323225,-1.376868, + 1.376867,1.323225,-1.376868, 1.40012,1.1784,-1.40012, 1.17121,1.1784,-1.5959, + 0.912957,1.1784,-1.754764, 0.897795,1.323225,-1.725622, 1.151759,1.323225,-1.569396, + 1.151759,1.323225,-1.569396, 1.17121,1.1784,-1.5959, 0.912957,1.1784,-1.754764, + 0.629147,1.1784,-1.872927, 0.618698,1.323225,-1.841822, 0.897795,1.323225,-1.725622, + 0.897795,1.323225,-1.725622, 0.912957,1.1784,-1.754764, 0.629147,1.1784,-1.872927, + 0.323566,1.1784,-1.946601, 0.318192,1.323225,-1.914272, 0.618698,1.323225,-1.841822, + 0.618698,1.323225,-1.841822, 0.629147,1.1784,-1.872927, 0.323566,1.1784,-1.946601, + 0,1.1784,-1.972, 0,1.323225,-1.93925, 0.318192,1.323225,-1.914272, + 0.318192,1.323225,-1.914272, 0.323566,1.1784,-1.946601, 0,1.1784,-1.972, + 1.967083,1.037175,-0.32697, 1.946601,1.1784,-0.323566, 1.972,1.1784,0, + 1.972,1.1784,0, 1.99275,1.037175,0, 1.967083,1.037175,-0.32697, + 1.892634,1.037175,-0.635767, 1.872927,1.1784,-0.629147, 1.946601,1.1784,-0.323566, + 1.946601,1.1784,-0.323566, 1.967083,1.037175,-0.32697, 1.892634,1.037175,-0.635767, + 1.773229,1.037175,-0.922564, 1.754764,1.1784,-0.912957, 1.872927,1.1784,-0.629147, + 1.872927,1.1784,-0.629147, 1.892634,1.037175,-0.635767, 1.773229,1.037175,-0.922564, + 1.612693,1.037175,-1.183534, 1.5959,1.1784,-1.17121, 1.754764,1.1784,-0.912957, + 1.754764,1.1784,-0.912957, 1.773229,1.037175,-0.922564, 1.612693,1.037175,-1.183534, + 1.414853,1.037175,-1.414853, 1.40012,1.1784,-1.40012, 1.5959,1.1784,-1.17121, + 1.5959,1.1784,-1.17121, 1.612693,1.037175,-1.183534, 1.414853,1.037175,-1.414853, + 1.183534,1.037175,-1.612693, 1.17121,1.1784,-1.5959, 1.40012,1.1784,-1.40012, + 1.40012,1.1784,-1.40012, 1.414853,1.037175,-1.414853, 1.183534,1.037175,-1.612693, + 0.922564,1.037175,-1.773229, 0.912957,1.1784,-1.754764, 1.17121,1.1784,-1.5959, + 1.17121,1.1784,-1.5959, 1.183534,1.037175,-1.612693, 0.922564,1.037175,-1.773229, + 0.635767,1.037175,-1.892634, 0.629147,1.1784,-1.872927, 0.912957,1.1784,-1.754764, + 0.912957,1.1784,-1.754764, 0.922564,1.037175,-1.773229, 0.635767,1.037175,-1.892634, + 0.32697,1.037175,-1.967083, 0.323566,1.1784,-1.946601, 0.629147,1.1784,-1.872927, + 0.629147,1.1784,-1.872927, 0.635767,1.037175,-1.892634, 0.32697,1.037175,-1.967083, + 0,1.037175,-1.99275, 0,1.1784,-1.972, 0.323566,1.1784,-1.946601, + 0.323566,1.1784,-1.946601, 0.32697,1.037175,-1.967083, 0,1.037175,-1.99275, + 1.97424,0.9,-0.32816, 1.967083,1.037175,-0.32697, 1.99275,1.037175,0, + 1.99275,1.037175,0, 2,0.9,0, 1.97424,0.9,-0.32816, + 1.89952,0.9,-0.63808, 1.892634,1.037175,-0.635767, 1.967083,1.037175,-0.32697, + 1.967083,1.037175,-0.32697, 1.97424,0.9,-0.32816, 1.89952,0.9,-0.63808, + 1.77968,0.9,-0.92592, 1.773229,1.037175,-0.922564, 1.892634,1.037175,-0.635767, + 1.892634,1.037175,-0.635767, 1.89952,0.9,-0.63808, 1.77968,0.9,-0.92592, + 1.61856,0.9,-1.18784, 1.612693,1.037175,-1.183534, 1.773229,1.037175,-0.922564, + 1.773229,1.037175,-0.922564, 1.77968,0.9,-0.92592, 1.61856,0.9,-1.18784, + 1.42,0.9,-1.42, 1.414853,1.037175,-1.414853, 1.612693,1.037175,-1.183534, + 1.612693,1.037175,-1.183534, 1.61856,0.9,-1.18784, 1.42,0.9,-1.42, + 1.18784,0.9,-1.61856, 1.183534,1.037175,-1.612693, 1.414853,1.037175,-1.414853, + 1.414853,1.037175,-1.414853, 1.42,0.9,-1.42, 1.18784,0.9,-1.61856, + 0.92592,0.9,-1.77968, 0.922564,1.037175,-1.773229, 1.183534,1.037175,-1.612693, + 1.183534,1.037175,-1.612693, 1.18784,0.9,-1.61856, 0.92592,0.9,-1.77968, + 0.63808,0.9,-1.89952, 0.635767,1.037175,-1.892634, 0.922564,1.037175,-1.773229, + 0.922564,1.037175,-1.773229, 0.92592,0.9,-1.77968, 0.63808,0.9,-1.89952, + 0.32816,0.9,-1.97424, 0.32697,1.037175,-1.967083, 0.635767,1.037175,-1.892634, + 0.635767,1.037175,-1.892634, 0.63808,0.9,-1.89952, 0.32816,0.9,-1.97424, + 0,0.9,-2, 0,1.037175,-1.99275, 0.32697,1.037175,-1.967083, + 0.32697,1.037175,-1.967083, 0.32816,0.9,-1.97424, 0,0.9,-2, + -0.258385,2.242575,-1.554467, -0.24612,2.4,-1.48068, 0,2.4,-1.5, + 0,2.4,-1.5, 0,2.242575,-1.57475, -0.258385,2.242575,-1.554467, + -0.502408,2.242575,-1.495635, -0.47856,2.4,-1.42464, -0.24612,2.4,-1.48068, + -0.24612,2.4,-1.48068, -0.258385,2.242575,-1.554467, -0.502408,2.242575,-1.495635, + -0.729046,2.242575,-1.401276, -0.69444,2.4,-1.33476, -0.47856,2.4,-1.42464, + -0.47856,2.4,-1.42464, -0.502408,2.242575,-1.495635, -0.729046,2.242575,-1.401276, + -0.935276,2.242575,-1.274414, -0.89088,2.4,-1.21392, -0.69444,2.4,-1.33476, + -0.69444,2.4,-1.33476, -0.729046,2.242575,-1.401276, -0.935276,2.242575,-1.274414, + -1.118073,2.242575,-1.118073, -1.065,2.4,-1.065, -0.89088,2.4,-1.21392, + -0.89088,2.4,-1.21392, -0.935276,2.242575,-1.274414, -1.118073,2.242575,-1.118073, + -1.274414,2.242575,-0.935276, -1.21392,2.4,-0.89088, -1.065,2.4,-1.065, + -1.065,2.4,-1.065, -1.118073,2.242575,-1.118073, -1.274414,2.242575,-0.935276, + -1.401276,2.242575,-0.729046, -1.33476,2.4,-0.69444, -1.21392,2.4,-0.89088, + -1.21392,2.4,-0.89088, -1.274414,2.242575,-0.935276, -1.401276,2.242575,-0.729046, + -1.495635,2.242575,-0.502408, -1.42464,2.4,-0.47856, -1.33476,2.4,-0.69444, + -1.33476,2.4,-0.69444, -1.401276,2.242575,-0.729046, -1.495635,2.242575,-0.502408, + -1.554467,2.242575,-0.258385, -1.48068,2.4,-0.24612, -1.42464,2.4,-0.47856, + -1.42464,2.4,-0.47856, -1.495635,2.242575,-0.502408, -1.554467,2.242575,-0.258385, + -1.57475,2.242575,0, -1.5,2.4,0, -1.48068,2.4,-0.24612, + -1.48068,2.4,-0.24612, -1.554467,2.242575,-0.258385, -1.57475,2.242575,0, + -0.270404,2.0856,-1.626774, -0.258385,2.242575,-1.554467, 0,2.242575,-1.57475, + 0,2.242575,-1.57475, 0,2.0856,-1.648, -0.270404,2.0856,-1.626774, + -0.525778,2.0856,-1.565204, -0.502408,2.242575,-1.495635, -0.258385,2.242575,-1.554467, + -0.258385,2.242575,-1.554467, -0.270404,2.0856,-1.626774, -0.525778,2.0856,-1.565204, + -0.762958,2.0856,-1.466456, -0.729046,2.242575,-1.401276, -0.502408,2.242575,-1.495635, + -0.502408,2.242575,-1.495635, -0.525778,2.0856,-1.565204, -0.762958,2.0856,-1.466456, + -0.97878,2.0856,-1.333693, -0.935276,2.242575,-1.274414, -0.729046,2.242575,-1.401276, + -0.729046,2.242575,-1.401276, -0.762958,2.0856,-1.466456, -0.97878,2.0856,-1.333693, + -1.17008,2.0856,-1.17008, -1.118073,2.242575,-1.118073, -0.935276,2.242575,-1.274414, + -0.935276,2.242575,-1.274414, -0.97878,2.0856,-1.333693, -1.17008,2.0856,-1.17008, + -1.333693,2.0856,-0.97878, -1.274414,2.242575,-0.935276, -1.118073,2.242575,-1.118073, + -1.118073,2.242575,-1.118073, -1.17008,2.0856,-1.17008, -1.333693,2.0856,-0.97878, + -1.466456,2.0856,-0.762958, -1.401276,2.242575,-0.729046, -1.274414,2.242575,-0.935276, + -1.274414,2.242575,-0.935276, -1.333693,2.0856,-0.97878, -1.466456,2.0856,-0.762958, + -1.565204,2.0856,-0.525778, -1.495635,2.242575,-0.502408, -1.401276,2.242575,-0.729046, + -1.401276,2.242575,-0.729046, -1.466456,2.0856,-0.762958, -1.565204,2.0856,-0.525778, + -1.626774,2.0856,-0.270404, -1.554467,2.242575,-0.258385, -1.495635,2.242575,-0.502408, + -1.495635,2.242575,-0.502408, -1.565204,2.0856,-0.525778, -1.626774,2.0856,-0.270404, + -1.648,2.0856,0, -1.57475,2.242575,0, -1.554467,2.242575,-0.258385, + -1.554467,2.242575,-0.258385, -1.626774,2.0856,-0.270404, -1.648,2.0856,0, + -0.28193,1.929525,-1.696119, -0.270404,2.0856,-1.626774, 0,2.0856,-1.648, + 0,2.0856,-1.648, 0,1.929525,-1.71825, -0.28193,1.929525,-1.696119, + -0.54819,1.929525,-1.631925, -0.525778,2.0856,-1.565204, -0.270404,2.0856,-1.626774, + -0.270404,2.0856,-1.626774, -0.28193,1.929525,-1.696119, -0.54819,1.929525,-1.631925, + -0.795481,1.929525,-1.528968, -0.762958,2.0856,-1.466456, -0.525778,2.0856,-1.565204, + -0.525778,2.0856,-1.565204, -0.54819,1.929525,-1.631925, -0.795481,1.929525,-1.528968, + -1.020503,1.929525,-1.390545, -0.97878,2.0856,-1.333693, -0.762958,2.0856,-1.466456, + -0.762958,2.0856,-1.466456, -0.795481,1.929525,-1.528968, -1.020503,1.929525,-1.390545, + -1.219958,1.929525,-1.219958, -1.17008,2.0856,-1.17008, -0.97878,2.0856,-1.333693, + -0.97878,2.0856,-1.333693, -1.020503,1.929525,-1.390545, -1.219958,1.929525,-1.219958, + -1.390545,1.929525,-1.020503, -1.333693,2.0856,-0.97878, -1.17008,2.0856,-1.17008, + -1.17008,2.0856,-1.17008, -1.219958,1.929525,-1.219958, -1.390545,1.929525,-1.020503, + -1.528968,1.929525,-0.795481, -1.466456,2.0856,-0.762958, -1.333693,2.0856,-0.97878, + -1.333693,2.0856,-0.97878, -1.390545,1.929525,-1.020503, -1.528968,1.929525,-0.795481, + -1.631925,1.929525,-0.54819, -1.565204,2.0856,-0.525778, -1.466456,2.0856,-0.762958, + -1.466456,2.0856,-0.762958, -1.528968,1.929525,-0.795481, -1.631925,1.929525,-0.54819, + -1.696119,1.929525,-0.28193, -1.626774,2.0856,-0.270404, -1.565204,2.0856,-0.525778, + -1.565204,2.0856,-0.525778, -1.631925,1.929525,-0.54819, -1.696119,1.929525,-0.28193, + -1.71825,1.929525,0, -1.648,2.0856,0, -1.626774,2.0856,-0.270404, + -1.626774,2.0856,-0.270404, -1.696119,1.929525,-0.28193, -1.71825,1.929525,0, + -0.292719,1.7748,-1.761022, -0.28193,1.929525,-1.696119, 0,1.929525,-1.71825, + 0,1.929525,-1.71825, 0,1.7748,-1.784, -0.292719,1.7748,-1.761022, + -0.569167,1.7748,-1.694372, -0.54819,1.929525,-1.631925, -0.28193,1.929525,-1.696119, + -0.28193,1.929525,-1.696119, -0.292719,1.7748,-1.761022, -0.569167,1.7748,-1.694372, + -0.825921,1.7748,-1.587475, -0.795481,1.929525,-1.528968, -0.54819,1.929525,-1.631925, + -0.54819,1.929525,-1.631925, -0.569167,1.7748,-1.694372, -0.825921,1.7748,-1.587475, + -1.059553,1.7748,-1.443756, -1.020503,1.929525,-1.390545, -0.795481,1.929525,-1.528968, + -0.795481,1.929525,-1.528968, -0.825921,1.7748,-1.587475, -1.059553,1.7748,-1.443756, + -1.26664,1.7748,-1.26664, -1.219958,1.929525,-1.219958, -1.020503,1.929525,-1.390545, + -1.020503,1.929525,-1.390545, -1.059553,1.7748,-1.443756, -1.26664,1.7748,-1.26664, + -1.443756,1.7748,-1.059553, -1.390545,1.929525,-1.020503, -1.219958,1.929525,-1.219958, + -1.219958,1.929525,-1.219958, -1.26664,1.7748,-1.26664, -1.443756,1.7748,-1.059553, + -1.587475,1.7748,-0.825921, -1.528968,1.929525,-0.795481, -1.390545,1.929525,-1.020503, + -1.390545,1.929525,-1.020503, -1.443756,1.7748,-1.059553, -1.587475,1.7748,-0.825921, + -1.694372,1.7748,-0.569167, -1.631925,1.929525,-0.54819, -1.528968,1.929525,-0.795481, + -1.528968,1.929525,-0.795481, -1.587475,1.7748,-0.825921, -1.694372,1.7748,-0.569167, + -1.761022,1.7748,-0.292719, -1.696119,1.929525,-0.28193, -1.631925,1.929525,-0.54819, + -1.631925,1.929525,-0.54819, -1.694372,1.7748,-0.569167, -1.761022,1.7748,-0.292719, + -1.784,1.7748,0, -1.71825,1.929525,0, -1.696119,1.929525,-0.28193, + -1.696119,1.929525,-0.28193, -1.761022,1.7748,-0.292719, -1.784,1.7748,0, + -0.302523,1.621875,-1.820003, -0.292719,1.7748,-1.761022, 0,1.7748,-1.784, + 0,1.7748,-1.784, 0,1.621875,-1.84375, -0.302523,1.621875,-1.820003, + -0.58823,1.621875,-1.75112, -0.569167,1.7748,-1.694372, -0.292719,1.7748,-1.761022, + -0.292719,1.7748,-1.761022, -0.302523,1.621875,-1.820003, -0.58823,1.621875,-1.75112, + -0.853583,1.621875,-1.640643, -0.825921,1.7748,-1.587475, -0.569167,1.7748,-1.694372, + -0.569167,1.7748,-1.694372, -0.58823,1.621875,-1.75112, -0.853583,1.621875,-1.640643, + -1.09504,1.621875,-1.49211, -1.059553,1.7748,-1.443756, -0.825921,1.7748,-1.587475, + -0.825921,1.7748,-1.587475, -0.853583,1.621875,-1.640643, -1.09504,1.621875,-1.49211, + -1.309063,1.621875,-1.309063, -1.26664,1.7748,-1.26664, -1.059553,1.7748,-1.443756, + -1.059553,1.7748,-1.443756, -1.09504,1.621875,-1.49211, -1.309063,1.621875,-1.309063, + -1.49211,1.621875,-1.09504, -1.443756,1.7748,-1.059553, -1.26664,1.7748,-1.26664, + -1.26664,1.7748,-1.26664, -1.309063,1.621875,-1.309063, -1.49211,1.621875,-1.09504, + -1.640643,1.621875,-0.853583, -1.587475,1.7748,-0.825921, -1.443756,1.7748,-1.059553, + -1.443756,1.7748,-1.059553, -1.49211,1.621875,-1.09504, -1.640643,1.621875,-0.853583, + -1.75112,1.621875,-0.58823, -1.694372,1.7748,-0.569167, -1.587475,1.7748,-0.825921, + -1.587475,1.7748,-0.825921, -1.640643,1.621875,-0.853583, -1.75112,1.621875,-0.58823, + -1.820003,1.621875,-0.302522, -1.761022,1.7748,-0.292719, -1.694372,1.7748,-0.569167, + -1.694372,1.7748,-0.569167, -1.75112,1.621875,-0.58823, -1.820003,1.621875,-0.302522, + -1.84375,1.621875,0, -1.784,1.7748,0, -1.761022,1.7748,-0.292719, + -1.761022,1.7748,-0.292719, -1.820003,1.621875,-0.302522, -1.84375,1.621875,0, + -0.311096,1.4712,-1.87158, -0.302523,1.621875,-1.820003, 0,1.621875,-1.84375, + 0,1.621875,-1.84375, 0,1.4712,-1.896, -0.311096,1.4712,-1.87158, + -0.6049,1.4712,-1.800745, -0.58823,1.621875,-1.75112, -0.302523,1.621875,-1.820003, + -0.302523,1.621875,-1.820003, -0.311096,1.4712,-1.87158, -0.6049,1.4712,-1.800745, + -0.877772,1.4712,-1.687137, -0.853583,1.621875,-1.640643, -0.58823,1.621875,-1.75112, + -0.58823,1.621875,-1.75112, -0.6049,1.4712,-1.800745, -0.877772,1.4712,-1.687137, + -1.126072,1.4712,-1.534395, -1.09504,1.621875,-1.49211, -0.853583,1.621875,-1.640643, + -0.853583,1.621875,-1.640643, -0.877772,1.4712,-1.687137, -1.126072,1.4712,-1.534395, + -1.34616,1.4712,-1.34616, -1.309063,1.621875,-1.309063, -1.09504,1.621875,-1.49211, + -1.09504,1.621875,-1.49211, -1.126072,1.4712,-1.534395, -1.34616,1.4712,-1.34616, + -1.534395,1.4712,-1.126072, -1.49211,1.621875,-1.09504, -1.309063,1.621875,-1.309063, + -1.309063,1.621875,-1.309063, -1.34616,1.4712,-1.34616, -1.534395,1.4712,-1.126072, + -1.687137,1.4712,-0.877772, -1.640643,1.621875,-0.853583, -1.49211,1.621875,-1.09504, + -1.49211,1.621875,-1.09504, -1.534395,1.4712,-1.126072, -1.687137,1.4712,-0.877772, + -1.800745,1.4712,-0.6049, -1.75112,1.621875,-0.58823, -1.640643,1.621875,-0.853583, + -1.640643,1.621875,-0.853583, -1.687137,1.4712,-0.877772, -1.800745,1.4712,-0.6049, + -1.87158,1.4712,-0.311096, -1.820003,1.621875,-0.302522, -1.75112,1.621875,-0.58823, + -1.75112,1.621875,-0.58823, -1.800745,1.4712,-0.6049, -1.87158,1.4712,-0.311096, + -1.896,1.4712,0, -1.84375,1.621875,0, -1.820003,1.621875,-0.302522, + -1.820003,1.621875,-0.302522, -1.87158,1.4712,-0.311096, -1.896,1.4712,0, + -0.318192,1.323225,-1.914272, -0.311096,1.4712,-1.87158, 0,1.4712,-1.896, + 0,1.4712,-1.896, 0,1.323225,-1.93925, -0.318192,1.323225,-1.914272, + -0.618698,1.323225,-1.841822, -0.6049,1.4712,-1.800745, -0.311096,1.4712,-1.87158, + -0.311096,1.4712,-1.87158, -0.318192,1.323225,-1.914272, -0.618698,1.323225,-1.841822, + -0.897795,1.323225,-1.725622, -0.877772,1.4712,-1.687137, -0.6049,1.4712,-1.800745, + -0.6049,1.4712,-1.800745, -0.618698,1.323225,-1.841822, -0.897795,1.323225,-1.725622, + -1.151759,1.323225,-1.569396, -1.126072,1.4712,-1.534395, -0.877772,1.4712,-1.687137, + -0.877772,1.4712,-1.687137, -0.897795,1.323225,-1.725622, -1.151759,1.323225,-1.569396, + -1.376868,1.323225,-1.376867, -1.34616,1.4712,-1.34616, -1.126072,1.4712,-1.534395, + -1.126072,1.4712,-1.534395, -1.151759,1.323225,-1.569396, -1.376868,1.323225,-1.376867, + -1.569396,1.323225,-1.151759, -1.534395,1.4712,-1.126072, -1.34616,1.4712,-1.34616, + -1.34616,1.4712,-1.34616, -1.376868,1.323225,-1.376867, -1.569396,1.323225,-1.151759, + -1.725622,1.323225,-0.897795, -1.687137,1.4712,-0.877772, -1.534395,1.4712,-1.126072, + -1.534395,1.4712,-1.126072, -1.569396,1.323225,-1.151759, -1.725622,1.323225,-0.897795, + -1.841822,1.323225,-0.618698, -1.800745,1.4712,-0.6049, -1.687137,1.4712,-0.877772, + -1.687137,1.4712,-0.877772, -1.725622,1.323225,-0.897795, -1.841822,1.323225,-0.618698, + -1.914272,1.323225,-0.318192, -1.87158,1.4712,-0.311096, -1.800745,1.4712,-0.6049, + -1.800745,1.4712,-0.6049, -1.841822,1.323225,-0.618698, -1.914272,1.323225,-0.318192, + -1.93925,1.323225,0, -1.896,1.4712,0, -1.87158,1.4712,-0.311096, + -1.87158,1.4712,-0.311096, -1.914272,1.323225,-0.318192, -1.93925,1.323225,0, + -0.323566,1.1784,-1.946601, -0.318192,1.323225,-1.914272, 0,1.323225,-1.93925, + 0,1.323225,-1.93925, 0,1.1784,-1.972, -0.323566,1.1784,-1.946601, + -0.629147,1.1784,-1.872927, -0.618698,1.323225,-1.841822, -0.318192,1.323225,-1.914272, + -0.318192,1.323225,-1.914272, -0.323566,1.1784,-1.946601, -0.629147,1.1784,-1.872927, + -0.912957,1.1784,-1.754764, -0.897795,1.323225,-1.725622, -0.618698,1.323225,-1.841822, + -0.618698,1.323225,-1.841822, -0.629147,1.1784,-1.872927, -0.912957,1.1784,-1.754764, + -1.17121,1.1784,-1.5959, -1.151759,1.323225,-1.569396, -0.897795,1.323225,-1.725622, + -0.897795,1.323225,-1.725622, -0.912957,1.1784,-1.754764, -1.17121,1.1784,-1.5959, + -1.40012,1.1784,-1.40012, -1.376868,1.323225,-1.376867, -1.151759,1.323225,-1.569396, + -1.151759,1.323225,-1.569396, -1.17121,1.1784,-1.5959, -1.40012,1.1784,-1.40012, + -1.5959,1.1784,-1.17121, -1.569396,1.323225,-1.151759, -1.376868,1.323225,-1.376867, + -1.376868,1.323225,-1.376867, -1.40012,1.1784,-1.40012, -1.5959,1.1784,-1.17121, + -1.754764,1.1784,-0.912957, -1.725622,1.323225,-0.897795, -1.569396,1.323225,-1.151759, + -1.569396,1.323225,-1.151759, -1.5959,1.1784,-1.17121, -1.754764,1.1784,-0.912957, + -1.872927,1.1784,-0.629147, -1.841822,1.323225,-0.618698, -1.725622,1.323225,-0.897795, + -1.725622,1.323225,-0.897795, -1.754764,1.1784,-0.912957, -1.872927,1.1784,-0.629147, + -1.946601,1.1784,-0.323566, -1.914272,1.323225,-0.318192, -1.841822,1.323225,-0.618698, + -1.841822,1.323225,-0.618698, -1.872927,1.1784,-0.629147, -1.946601,1.1784,-0.323566, + -1.972,1.1784,0, -1.93925,1.323225,0, -1.914272,1.323225,-0.318192, + -1.914272,1.323225,-0.318192, -1.946601,1.1784,-0.323566, -1.972,1.1784,0, + -0.32697,1.037175,-1.967083, -0.323566,1.1784,-1.946601, 0,1.1784,-1.972, + 0,1.1784,-1.972, 0,1.037175,-1.99275, -0.32697,1.037175,-1.967083, + -0.635767,1.037175,-1.892634, -0.629147,1.1784,-1.872927, -0.323566,1.1784,-1.946601, + -0.323566,1.1784,-1.946601, -0.32697,1.037175,-1.967083, -0.635767,1.037175,-1.892634, + -0.922564,1.037175,-1.773229, -0.912957,1.1784,-1.754764, -0.629147,1.1784,-1.872927, + -0.629147,1.1784,-1.872927, -0.635767,1.037175,-1.892634, -0.922564,1.037175,-1.773229, + -1.183534,1.037175,-1.612693, -1.17121,1.1784,-1.5959, -0.912957,1.1784,-1.754764, + -0.912957,1.1784,-1.754764, -0.922564,1.037175,-1.773229, -1.183534,1.037175,-1.612693, + -1.414853,1.037175,-1.414853, -1.40012,1.1784,-1.40012, -1.17121,1.1784,-1.5959, + -1.17121,1.1784,-1.5959, -1.183534,1.037175,-1.612693, -1.414853,1.037175,-1.414853, + -1.612693,1.037175,-1.183534, -1.5959,1.1784,-1.17121, -1.40012,1.1784,-1.40012, + -1.40012,1.1784,-1.40012, -1.414853,1.037175,-1.414853, -1.612693,1.037175,-1.183534, + -1.773229,1.037175,-0.922564, -1.754764,1.1784,-0.912957, -1.5959,1.1784,-1.17121, + -1.5959,1.1784,-1.17121, -1.612693,1.037175,-1.183534, -1.773229,1.037175,-0.922564, + -1.892634,1.037175,-0.635767, -1.872927,1.1784,-0.629147, -1.754764,1.1784,-0.912957, + -1.754764,1.1784,-0.912957, -1.773229,1.037175,-0.922564, -1.892634,1.037175,-0.635767, + -1.967083,1.037175,-0.32697, -1.946601,1.1784,-0.323566, -1.872927,1.1784,-0.629147, + -1.872927,1.1784,-0.629147, -1.892634,1.037175,-0.635767, -1.967083,1.037175,-0.32697, + -1.99275,1.037175,0, -1.972,1.1784,0, -1.946601,1.1784,-0.323566, + -1.946601,1.1784,-0.323566, -1.967083,1.037175,-0.32697, -1.99275,1.037175,0, + -0.32816,0.9,-1.97424, -0.32697,1.037175,-1.967083, 0,1.037175,-1.99275, + 0,1.037175,-1.99275, 0,0.9,-2, -0.32816,0.9,-1.97424, + -0.63808,0.9,-1.89952, -0.635767,1.037175,-1.892634, -0.32697,1.037175,-1.967083, + -0.32697,1.037175,-1.967083, -0.32816,0.9,-1.97424, -0.63808,0.9,-1.89952, + -0.92592,0.9,-1.77968, -0.922564,1.037175,-1.773229, -0.635767,1.037175,-1.892634, + -0.635767,1.037175,-1.892634, -0.63808,0.9,-1.89952, -0.92592,0.9,-1.77968, + -1.18784,0.9,-1.61856, -1.183534,1.037175,-1.612693, -0.922564,1.037175,-1.773229, + -0.922564,1.037175,-1.773229, -0.92592,0.9,-1.77968, -1.18784,0.9,-1.61856, + -1.42,0.9,-1.42, -1.414853,1.037175,-1.414853, -1.183534,1.037175,-1.612693, + -1.183534,1.037175,-1.612693, -1.18784,0.9,-1.61856, -1.42,0.9,-1.42, + -1.61856,0.9,-1.18784, -1.612693,1.037175,-1.183534, -1.414853,1.037175,-1.414853, + -1.414853,1.037175,-1.414853, -1.42,0.9,-1.42, -1.61856,0.9,-1.18784, + -1.77968,0.9,-0.92592, -1.773229,1.037175,-0.922564, -1.612693,1.037175,-1.183534, + -1.612693,1.037175,-1.183534, -1.61856,0.9,-1.18784, -1.77968,0.9,-0.92592, + -1.89952,0.9,-0.63808, -1.892634,1.037175,-0.635767, -1.773229,1.037175,-0.922564, + -1.773229,1.037175,-0.922564, -1.77968,0.9,-0.92592, -1.89952,0.9,-0.63808, + -1.97424,0.9,-0.32816, -1.967083,1.037175,-0.32697, -1.892634,1.037175,-0.635767, + -1.892634,1.037175,-0.635767, -1.89952,0.9,-0.63808, -1.97424,0.9,-0.32816, + -2,0.9,0, -1.99275,1.037175,0, -1.967083,1.037175,-0.32697, + -1.967083,1.037175,-0.32697, -1.97424,0.9,-0.32816, -2,0.9,0, + -1.554467,2.242575,0.258385, -1.48068,2.4,0.24612, -1.5,2.4,0, + -1.5,2.4,0, -1.57475,2.242575,0, -1.554467,2.242575,0.258385, + -1.495635,2.242575,0.502408, -1.42464,2.4,0.47856, -1.48068,2.4,0.24612, + -1.48068,2.4,0.24612, -1.554467,2.242575,0.258385, -1.495635,2.242575,0.502408, + -1.401276,2.242575,0.729046, -1.33476,2.4,0.69444, -1.42464,2.4,0.47856, + -1.42464,2.4,0.47856, -1.495635,2.242575,0.502408, -1.401276,2.242575,0.729046, + -1.274414,2.242575,0.935276, -1.21392,2.4,0.89088, -1.33476,2.4,0.69444, + -1.33476,2.4,0.69444, -1.401276,2.242575,0.729046, -1.274414,2.242575,0.935276, + -1.118073,2.242575,1.118073, -1.065,2.4,1.065, -1.21392,2.4,0.89088, + -1.21392,2.4,0.89088, -1.274414,2.242575,0.935276, -1.118073,2.242575,1.118073, + -0.935276,2.242575,1.274414, -0.89088,2.4,1.21392, -1.065,2.4,1.065, + -1.065,2.4,1.065, -1.118073,2.242575,1.118073, -0.935276,2.242575,1.274414, + -0.729046,2.242575,1.401276, -0.69444,2.4,1.33476, -0.89088,2.4,1.21392, + -0.89088,2.4,1.21392, -0.935276,2.242575,1.274414, -0.729046,2.242575,1.401276, + -0.502408,2.242575,1.495635, -0.47856,2.4,1.42464, -0.69444,2.4,1.33476, + -0.69444,2.4,1.33476, -0.729046,2.242575,1.401276, -0.502408,2.242575,1.495635, + -0.258385,2.242575,1.554467, -0.24612,2.4,1.48068, -0.47856,2.4,1.42464, + -0.47856,2.4,1.42464, -0.502408,2.242575,1.495635, -0.258385,2.242575,1.554467, + 0,2.242575,1.57475, 0,2.4,1.5, -0.24612,2.4,1.48068, + -0.24612,2.4,1.48068, -0.258385,2.242575,1.554467, 0,2.242575,1.57475, + -1.626774,2.0856,0.270404, -1.554467,2.242575,0.258385, -1.57475,2.242575,0, + -1.57475,2.242575,0, -1.648,2.0856,0, -1.626774,2.0856,0.270404, + -1.565204,2.0856,0.525778, -1.495635,2.242575,0.502408, -1.554467,2.242575,0.258385, + -1.554467,2.242575,0.258385, -1.626774,2.0856,0.270404, -1.565204,2.0856,0.525778, + -1.466456,2.0856,0.762958, -1.401276,2.242575,0.729046, -1.495635,2.242575,0.502408, + -1.495635,2.242575,0.502408, -1.565204,2.0856,0.525778, -1.466456,2.0856,0.762958, + -1.333693,2.0856,0.97878, -1.274414,2.242575,0.935276, -1.401276,2.242575,0.729046, + -1.401276,2.242575,0.729046, -1.466456,2.0856,0.762958, -1.333693,2.0856,0.97878, + -1.17008,2.0856,1.17008, -1.118073,2.242575,1.118073, -1.274414,2.242575,0.935276, + -1.274414,2.242575,0.935276, -1.333693,2.0856,0.97878, -1.17008,2.0856,1.17008, + -0.97878,2.0856,1.333693, -0.935276,2.242575,1.274414, -1.118073,2.242575,1.118073, + -1.118073,2.242575,1.118073, -1.17008,2.0856,1.17008, -0.97878,2.0856,1.333693, + -0.762958,2.0856,1.466456, -0.729046,2.242575,1.401276, -0.935276,2.242575,1.274414, + -0.935276,2.242575,1.274414, -0.97878,2.0856,1.333693, -0.762958,2.0856,1.466456, + -0.525778,2.0856,1.565204, -0.502408,2.242575,1.495635, -0.729046,2.242575,1.401276, + -0.729046,2.242575,1.401276, -0.762958,2.0856,1.466456, -0.525778,2.0856,1.565204, + -0.270404,2.0856,1.626774, -0.258385,2.242575,1.554467, -0.502408,2.242575,1.495635, + -0.502408,2.242575,1.495635, -0.525778,2.0856,1.565204, -0.270404,2.0856,1.626774, + 0,2.0856,1.648, 0,2.242575,1.57475, -0.258385,2.242575,1.554467, + -0.258385,2.242575,1.554467, -0.270404,2.0856,1.626774, 0,2.0856,1.648, + -1.696119,1.929525,0.28193, -1.626774,2.0856,0.270404, -1.648,2.0856,0, + -1.648,2.0856,0, -1.71825,1.929525,0, -1.696119,1.929525,0.28193, + -1.631925,1.929525,0.54819, -1.565204,2.0856,0.525778, -1.626774,2.0856,0.270404, + -1.626774,2.0856,0.270404, -1.696119,1.929525,0.28193, -1.631925,1.929525,0.54819, + -1.528968,1.929525,0.795481, -1.466456,2.0856,0.762958, -1.565204,2.0856,0.525778, + -1.565204,2.0856,0.525778, -1.631925,1.929525,0.54819, -1.528968,1.929525,0.795481, + -1.390545,1.929525,1.020503, -1.333693,2.0856,0.97878, -1.466456,2.0856,0.762958, + -1.466456,2.0856,0.762958, -1.528968,1.929525,0.795481, -1.390545,1.929525,1.020503, + -1.219958,1.929525,1.219958, -1.17008,2.0856,1.17008, -1.333693,2.0856,0.97878, + -1.333693,2.0856,0.97878, -1.390545,1.929525,1.020503, -1.219958,1.929525,1.219958, + -1.020503,1.929525,1.390545, -0.97878,2.0856,1.333693, -1.17008,2.0856,1.17008, + -1.17008,2.0856,1.17008, -1.219958,1.929525,1.219958, -1.020503,1.929525,1.390545, + -0.795481,1.929525,1.528968, -0.762958,2.0856,1.466456, -0.97878,2.0856,1.333693, + -0.97878,2.0856,1.333693, -1.020503,1.929525,1.390545, -0.795481,1.929525,1.528968, + -0.54819,1.929525,1.631925, -0.525778,2.0856,1.565204, -0.762958,2.0856,1.466456, + -0.762958,2.0856,1.466456, -0.795481,1.929525,1.528968, -0.54819,1.929525,1.631925, + -0.28193,1.929525,1.696119, -0.270404,2.0856,1.626774, -0.525778,2.0856,1.565204, + -0.525778,2.0856,1.565204, -0.54819,1.929525,1.631925, -0.28193,1.929525,1.696119, + 0,1.929525,1.71825, 0,2.0856,1.648, -0.270404,2.0856,1.626774, + -0.270404,2.0856,1.626774, -0.28193,1.929525,1.696119, 0,1.929525,1.71825, + -1.761022,1.7748,0.292719, -1.696119,1.929525,0.28193, -1.71825,1.929525,0, + -1.71825,1.929525,0, -1.784,1.7748,0, -1.761022,1.7748,0.292719, + -1.694372,1.7748,0.569167, -1.631925,1.929525,0.54819, -1.696119,1.929525,0.28193, + -1.696119,1.929525,0.28193, -1.761022,1.7748,0.292719, -1.694372,1.7748,0.569167, + -1.587475,1.7748,0.825921, -1.528968,1.929525,0.795481, -1.631925,1.929525,0.54819, + -1.631925,1.929525,0.54819, -1.694372,1.7748,0.569167, -1.587475,1.7748,0.825921, + -1.443756,1.7748,1.059553, -1.390545,1.929525,1.020503, -1.528968,1.929525,0.795481, + -1.528968,1.929525,0.795481, -1.587475,1.7748,0.825921, -1.443756,1.7748,1.059553, + -1.26664,1.7748,1.26664, -1.219958,1.929525,1.219958, -1.390545,1.929525,1.020503, + -1.390545,1.929525,1.020503, -1.443756,1.7748,1.059553, -1.26664,1.7748,1.26664, + -1.059553,1.7748,1.443756, -1.020503,1.929525,1.390545, -1.219958,1.929525,1.219958, + -1.219958,1.929525,1.219958, -1.26664,1.7748,1.26664, -1.059553,1.7748,1.443756, + -0.825921,1.7748,1.587475, -0.795481,1.929525,1.528968, -1.020503,1.929525,1.390545, + -1.020503,1.929525,1.390545, -1.059553,1.7748,1.443756, -0.825921,1.7748,1.587475, + -0.569167,1.7748,1.694372, -0.54819,1.929525,1.631925, -0.795481,1.929525,1.528968, + -0.795481,1.929525,1.528968, -0.825921,1.7748,1.587475, -0.569167,1.7748,1.694372, + -0.292719,1.7748,1.761022, -0.28193,1.929525,1.696119, -0.54819,1.929525,1.631925, + -0.54819,1.929525,1.631925, -0.569167,1.7748,1.694372, -0.292719,1.7748,1.761022, + 0,1.7748,1.784, 0,1.929525,1.71825, -0.28193,1.929525,1.696119, + -0.28193,1.929525,1.696119, -0.292719,1.7748,1.761022, 0,1.7748,1.784, + -1.820003,1.621875,0.302523, -1.761022,1.7748,0.292719, -1.784,1.7748,0, + -1.784,1.7748,0, -1.84375,1.621875,0, -1.820003,1.621875,0.302523, + -1.75112,1.621875,0.58823, -1.694372,1.7748,0.569167, -1.761022,1.7748,0.292719, + -1.761022,1.7748,0.292719, -1.820003,1.621875,0.302523, -1.75112,1.621875,0.58823, + -1.640643,1.621875,0.853583, -1.587475,1.7748,0.825921, -1.694372,1.7748,0.569167, + -1.694372,1.7748,0.569167, -1.75112,1.621875,0.58823, -1.640643,1.621875,0.853583, + -1.49211,1.621875,1.09504, -1.443756,1.7748,1.059553, -1.587475,1.7748,0.825921, + -1.587475,1.7748,0.825921, -1.640643,1.621875,0.853583, -1.49211,1.621875,1.09504, + -1.309063,1.621875,1.309063, -1.26664,1.7748,1.26664, -1.443756,1.7748,1.059553, + -1.443756,1.7748,1.059553, -1.49211,1.621875,1.09504, -1.309063,1.621875,1.309063, + -1.09504,1.621875,1.49211, -1.059553,1.7748,1.443756, -1.26664,1.7748,1.26664, + -1.26664,1.7748,1.26664, -1.309063,1.621875,1.309063, -1.09504,1.621875,1.49211, + -0.853583,1.621875,1.640643, -0.825921,1.7748,1.587475, -1.059553,1.7748,1.443756, + -1.059553,1.7748,1.443756, -1.09504,1.621875,1.49211, -0.853583,1.621875,1.640643, + -0.58823,1.621875,1.75112, -0.569167,1.7748,1.694372, -0.825921,1.7748,1.587475, + -0.825921,1.7748,1.587475, -0.853583,1.621875,1.640643, -0.58823,1.621875,1.75112, + -0.302522,1.621875,1.820003, -0.292719,1.7748,1.761022, -0.569167,1.7748,1.694372, + -0.569167,1.7748,1.694372, -0.58823,1.621875,1.75112, -0.302522,1.621875,1.820003, + 0,1.621875,1.84375, 0,1.7748,1.784, -0.292719,1.7748,1.761022, + -0.292719,1.7748,1.761022, -0.302522,1.621875,1.820003, 0,1.621875,1.84375, + -1.87158,1.4712,0.311096, -1.820003,1.621875,0.302523, -1.84375,1.621875,0, + -1.84375,1.621875,0, -1.896,1.4712,0, -1.87158,1.4712,0.311096, + -1.800745,1.4712,0.6049, -1.75112,1.621875,0.58823, -1.820003,1.621875,0.302523, + -1.820003,1.621875,0.302523, -1.87158,1.4712,0.311096, -1.800745,1.4712,0.6049, + -1.687137,1.4712,0.877772, -1.640643,1.621875,0.853583, -1.75112,1.621875,0.58823, + -1.75112,1.621875,0.58823, -1.800745,1.4712,0.6049, -1.687137,1.4712,0.877772, + -1.534395,1.4712,1.126072, -1.49211,1.621875,1.09504, -1.640643,1.621875,0.853583, + -1.640643,1.621875,0.853583, -1.687137,1.4712,0.877772, -1.534395,1.4712,1.126072, + -1.34616,1.4712,1.34616, -1.309063,1.621875,1.309063, -1.49211,1.621875,1.09504, + -1.49211,1.621875,1.09504, -1.534395,1.4712,1.126072, -1.34616,1.4712,1.34616, + -1.126072,1.4712,1.534395, -1.09504,1.621875,1.49211, -1.309063,1.621875,1.309063, + -1.309063,1.621875,1.309063, -1.34616,1.4712,1.34616, -1.126072,1.4712,1.534395, + -0.877772,1.4712,1.687137, -0.853583,1.621875,1.640643, -1.09504,1.621875,1.49211, + -1.09504,1.621875,1.49211, -1.126072,1.4712,1.534395, -0.877772,1.4712,1.687137, + -0.6049,1.4712,1.800745, -0.58823,1.621875,1.75112, -0.853583,1.621875,1.640643, + -0.853583,1.621875,1.640643, -0.877772,1.4712,1.687137, -0.6049,1.4712,1.800745, + -0.311096,1.4712,1.87158, -0.302522,1.621875,1.820003, -0.58823,1.621875,1.75112, + -0.58823,1.621875,1.75112, -0.6049,1.4712,1.800745, -0.311096,1.4712,1.87158, + 0,1.4712,1.896, 0,1.621875,1.84375, -0.302522,1.621875,1.820003, + -0.302522,1.621875,1.820003, -0.311096,1.4712,1.87158, 0,1.4712,1.896, + -1.914272,1.323225,0.318192, -1.87158,1.4712,0.311096, -1.896,1.4712,0, + -1.896,1.4712,0, -1.93925,1.323225,0, -1.914272,1.323225,0.318192, + -1.841822,1.323225,0.618698, -1.800745,1.4712,0.6049, -1.87158,1.4712,0.311096, + -1.87158,1.4712,0.311096, -1.914272,1.323225,0.318192, -1.841822,1.323225,0.618698, + -1.725622,1.323225,0.897795, -1.687137,1.4712,0.877772, -1.800745,1.4712,0.6049, + -1.800745,1.4712,0.6049, -1.841822,1.323225,0.618698, -1.725622,1.323225,0.897795, + -1.569396,1.323225,1.151759, -1.534395,1.4712,1.126072, -1.687137,1.4712,0.877772, + -1.687137,1.4712,0.877772, -1.725622,1.323225,0.897795, -1.569396,1.323225,1.151759, + -1.376867,1.323225,1.376868, -1.34616,1.4712,1.34616, -1.534395,1.4712,1.126072, + -1.534395,1.4712,1.126072, -1.569396,1.323225,1.151759, -1.376867,1.323225,1.376868, + -1.151759,1.323225,1.569396, -1.126072,1.4712,1.534395, -1.34616,1.4712,1.34616, + -1.34616,1.4712,1.34616, -1.376867,1.323225,1.376868, -1.151759,1.323225,1.569396, + -0.897795,1.323225,1.725622, -0.877772,1.4712,1.687137, -1.126072,1.4712,1.534395, + -1.126072,1.4712,1.534395, -1.151759,1.323225,1.569396, -0.897795,1.323225,1.725622, + -0.618698,1.323225,1.841822, -0.6049,1.4712,1.800745, -0.877772,1.4712,1.687137, + -0.877772,1.4712,1.687137, -0.897795,1.323225,1.725622, -0.618698,1.323225,1.841822, + -0.318192,1.323225,1.914272, -0.311096,1.4712,1.87158, -0.6049,1.4712,1.800745, + -0.6049,1.4712,1.800745, -0.618698,1.323225,1.841822, -0.318192,1.323225,1.914272, + 0,1.323225,1.93925, 0,1.4712,1.896, -0.311096,1.4712,1.87158, + -0.311096,1.4712,1.87158, -0.318192,1.323225,1.914272, 0,1.323225,1.93925, + -1.946601,1.1784,0.323566, -1.914272,1.323225,0.318192, -1.93925,1.323225,0, + -1.93925,1.323225,0, -1.972,1.1784,0, -1.946601,1.1784,0.323566, + -1.872927,1.1784,0.629147, -1.841822,1.323225,0.618698, -1.914272,1.323225,0.318192, + -1.914272,1.323225,0.318192, -1.946601,1.1784,0.323566, -1.872927,1.1784,0.629147, + -1.754764,1.1784,0.912957, -1.725622,1.323225,0.897795, -1.841822,1.323225,0.618698, + -1.841822,1.323225,0.618698, -1.872927,1.1784,0.629147, -1.754764,1.1784,0.912957, + -1.5959,1.1784,1.17121, -1.569396,1.323225,1.151759, -1.725622,1.323225,0.897795, + -1.725622,1.323225,0.897795, -1.754764,1.1784,0.912957, -1.5959,1.1784,1.17121, + -1.40012,1.1784,1.40012, -1.376867,1.323225,1.376868, -1.569396,1.323225,1.151759, + -1.569396,1.323225,1.151759, -1.5959,1.1784,1.17121, -1.40012,1.1784,1.40012, + -1.17121,1.1784,1.5959, -1.151759,1.323225,1.569396, -1.376867,1.323225,1.376868, + -1.376867,1.323225,1.376868, -1.40012,1.1784,1.40012, -1.17121,1.1784,1.5959, + -0.912957,1.1784,1.754764, -0.897795,1.323225,1.725622, -1.151759,1.323225,1.569396, + -1.151759,1.323225,1.569396, -1.17121,1.1784,1.5959, -0.912957,1.1784,1.754764, + -0.629147,1.1784,1.872927, -0.618698,1.323225,1.841822, -0.897795,1.323225,1.725622, + -0.897795,1.323225,1.725622, -0.912957,1.1784,1.754764, -0.629147,1.1784,1.872927, + -0.323566,1.1784,1.946601, -0.318192,1.323225,1.914272, -0.618698,1.323225,1.841822, + -0.618698,1.323225,1.841822, -0.629147,1.1784,1.872927, -0.323566,1.1784,1.946601, + 0,1.1784,1.972, 0,1.323225,1.93925, -0.318192,1.323225,1.914272, + -0.318192,1.323225,1.914272, -0.323566,1.1784,1.946601, 0,1.1784,1.972, + -1.967083,1.037175,0.32697, -1.946601,1.1784,0.323566, -1.972,1.1784,0, + -1.972,1.1784,0, -1.99275,1.037175,0, -1.967083,1.037175,0.32697, + -1.892634,1.037175,0.635767, -1.872927,1.1784,0.629147, -1.946601,1.1784,0.323566, + -1.946601,1.1784,0.323566, -1.967083,1.037175,0.32697, -1.892634,1.037175,0.635767, + -1.773229,1.037175,0.922564, -1.754764,1.1784,0.912957, -1.872927,1.1784,0.629147, + -1.872927,1.1784,0.629147, -1.892634,1.037175,0.635767, -1.773229,1.037175,0.922564, + -1.612693,1.037175,1.183534, -1.5959,1.1784,1.17121, -1.754764,1.1784,0.912957, + -1.754764,1.1784,0.912957, -1.773229,1.037175,0.922564, -1.612693,1.037175,1.183534, + -1.414853,1.037175,1.414853, -1.40012,1.1784,1.40012, -1.5959,1.1784,1.17121, + -1.5959,1.1784,1.17121, -1.612693,1.037175,1.183534, -1.414853,1.037175,1.414853, + -1.183534,1.037175,1.612693, -1.17121,1.1784,1.5959, -1.40012,1.1784,1.40012, + -1.40012,1.1784,1.40012, -1.414853,1.037175,1.414853, -1.183534,1.037175,1.612693, + -0.922564,1.037175,1.773229, -0.912957,1.1784,1.754764, -1.17121,1.1784,1.5959, + -1.17121,1.1784,1.5959, -1.183534,1.037175,1.612693, -0.922564,1.037175,1.773229, + -0.635767,1.037175,1.892634, -0.629147,1.1784,1.872927, -0.912957,1.1784,1.754764, + -0.912957,1.1784,1.754764, -0.922564,1.037175,1.773229, -0.635767,1.037175,1.892634, + -0.32697,1.037175,1.967083, -0.323566,1.1784,1.946601, -0.629147,1.1784,1.872927, + -0.629147,1.1784,1.872927, -0.635767,1.037175,1.892634, -0.32697,1.037175,1.967083, + 0,1.037175,1.99275, 0,1.1784,1.972, -0.323566,1.1784,1.946601, + -0.323566,1.1784,1.946601, -0.32697,1.037175,1.967083, 0,1.037175,1.99275, + -1.97424,0.9,0.32816, -1.967083,1.037175,0.32697, -1.99275,1.037175,0, + -1.99275,1.037175,0, -2,0.9,0, -1.97424,0.9,0.32816, + -1.89952,0.9,0.63808, -1.892634,1.037175,0.635767, -1.967083,1.037175,0.32697, + -1.967083,1.037175,0.32697, -1.97424,0.9,0.32816, -1.89952,0.9,0.63808, + -1.77968,0.9,0.92592, -1.773229,1.037175,0.922564, -1.892634,1.037175,0.635767, + -1.892634,1.037175,0.635767, -1.89952,0.9,0.63808, -1.77968,0.9,0.92592, + -1.61856,0.9,1.18784, -1.612693,1.037175,1.183534, -1.773229,1.037175,0.922564, + -1.773229,1.037175,0.922564, -1.77968,0.9,0.92592, -1.61856,0.9,1.18784, + -1.42,0.9,1.42, -1.414853,1.037175,1.414853, -1.612693,1.037175,1.183534, + -1.612693,1.037175,1.183534, -1.61856,0.9,1.18784, -1.42,0.9,1.42, + -1.18784,0.9,1.61856, -1.183534,1.037175,1.612693, -1.414853,1.037175,1.414853, + -1.414853,1.037175,1.414853, -1.42,0.9,1.42, -1.18784,0.9,1.61856, + -0.92592,0.9,1.77968, -0.922564,1.037175,1.773229, -1.183534,1.037175,1.612693, + -1.183534,1.037175,1.612693, -1.18784,0.9,1.61856, -0.92592,0.9,1.77968, + -0.63808,0.9,1.89952, -0.635767,1.037175,1.892634, -0.922564,1.037175,1.773229, + -0.922564,1.037175,1.773229, -0.92592,0.9,1.77968, -0.63808,0.9,1.89952, + -0.32816,0.9,1.97424, -0.32697,1.037175,1.967083, -0.635767,1.037175,1.892634, + -0.635767,1.037175,1.892634, -0.63808,0.9,1.89952, -0.32816,0.9,1.97424, + 0,0.9,2, 0,1.037175,1.99275, -0.32697,1.037175,1.967083, + -0.32697,1.037175,1.967083, -0.32816,0.9,1.97424, 0,0.9,2, + 0.258385,2.242575,1.554467, 0.24612,2.4,1.48068, 0,2.4,1.5, + 0,2.4,1.5, 0,2.242575,1.57475, 0.258385,2.242575,1.554467, + 0.502408,2.242575,1.495635, 0.47856,2.4,1.42464, 0.24612,2.4,1.48068, + 0.24612,2.4,1.48068, 0.258385,2.242575,1.554467, 0.502408,2.242575,1.495635, + 0.729046,2.242575,1.401276, 0.69444,2.4,1.33476, 0.47856,2.4,1.42464, + 0.47856,2.4,1.42464, 0.502408,2.242575,1.495635, 0.729046,2.242575,1.401276, + 0.935276,2.242575,1.274414, 0.89088,2.4,1.21392, 0.69444,2.4,1.33476, + 0.69444,2.4,1.33476, 0.729046,2.242575,1.401276, 0.935276,2.242575,1.274414, + 1.118073,2.242575,1.118073, 1.065,2.4,1.065, 0.89088,2.4,1.21392, + 0.89088,2.4,1.21392, 0.935276,2.242575,1.274414, 1.118073,2.242575,1.118073, + 1.274414,2.242575,0.935276, 1.21392,2.4,0.89088, 1.065,2.4,1.065, + 1.065,2.4,1.065, 1.118073,2.242575,1.118073, 1.274414,2.242575,0.935276, + 1.401276,2.242575,0.729046, 1.33476,2.4,0.69444, 1.21392,2.4,0.89088, + 1.21392,2.4,0.89088, 1.274414,2.242575,0.935276, 1.401276,2.242575,0.729046, + 1.495635,2.242575,0.502408, 1.42464,2.4,0.47856, 1.33476,2.4,0.69444, + 1.33476,2.4,0.69444, 1.401276,2.242575,0.729046, 1.495635,2.242575,0.502408, + 1.554467,2.242575,0.258385, 1.48068,2.4,0.24612, 1.42464,2.4,0.47856, + 1.42464,2.4,0.47856, 1.495635,2.242575,0.502408, 1.554467,2.242575,0.258385, + 1.57475,2.242575,0, 1.5,2.4,0, 1.48068,2.4,0.24612, + 1.48068,2.4,0.24612, 1.554467,2.242575,0.258385, 1.57475,2.242575,0, + 0.270404,2.0856,1.626774, 0.258385,2.242575,1.554467, 0,2.242575,1.57475, + 0,2.242575,1.57475, 0,2.0856,1.648, 0.270404,2.0856,1.626774, + 0.525778,2.0856,1.565204, 0.502408,2.242575,1.495635, 0.258385,2.242575,1.554467, + 0.258385,2.242575,1.554467, 0.270404,2.0856,1.626774, 0.525778,2.0856,1.565204, + 0.762958,2.0856,1.466456, 0.729046,2.242575,1.401276, 0.502408,2.242575,1.495635, + 0.502408,2.242575,1.495635, 0.525778,2.0856,1.565204, 0.762958,2.0856,1.466456, + 0.97878,2.0856,1.333693, 0.935276,2.242575,1.274414, 0.729046,2.242575,1.401276, + 0.729046,2.242575,1.401276, 0.762958,2.0856,1.466456, 0.97878,2.0856,1.333693, + 1.17008,2.0856,1.17008, 1.118073,2.242575,1.118073, 0.935276,2.242575,1.274414, + 0.935276,2.242575,1.274414, 0.97878,2.0856,1.333693, 1.17008,2.0856,1.17008, + 1.333693,2.0856,0.97878, 1.274414,2.242575,0.935276, 1.118073,2.242575,1.118073, + 1.118073,2.242575,1.118073, 1.17008,2.0856,1.17008, 1.333693,2.0856,0.97878, + 1.466456,2.0856,0.762958, 1.401276,2.242575,0.729046, 1.274414,2.242575,0.935276, + 1.274414,2.242575,0.935276, 1.333693,2.0856,0.97878, 1.466456,2.0856,0.762958, + 1.565204,2.0856,0.525778, 1.495635,2.242575,0.502408, 1.401276,2.242575,0.729046, + 1.401276,2.242575,0.729046, 1.466456,2.0856,0.762958, 1.565204,2.0856,0.525778, + 1.626774,2.0856,0.270404, 1.554467,2.242575,0.258385, 1.495635,2.242575,0.502408, + 1.495635,2.242575,0.502408, 1.565204,2.0856,0.525778, 1.626774,2.0856,0.270404, + 1.648,2.0856,0, 1.57475,2.242575,0, 1.554467,2.242575,0.258385, + 1.554467,2.242575,0.258385, 1.626774,2.0856,0.270404, 1.648,2.0856,0, + 0.28193,1.929525,1.696119, 0.270404,2.0856,1.626774, 0,2.0856,1.648, + 0,2.0856,1.648, 0,1.929525,1.71825, 0.28193,1.929525,1.696119, + 0.54819,1.929525,1.631925, 0.525778,2.0856,1.565204, 0.270404,2.0856,1.626774, + 0.270404,2.0856,1.626774, 0.28193,1.929525,1.696119, 0.54819,1.929525,1.631925, + 0.795481,1.929525,1.528968, 0.762958,2.0856,1.466456, 0.525778,2.0856,1.565204, + 0.525778,2.0856,1.565204, 0.54819,1.929525,1.631925, 0.795481,1.929525,1.528968, + 1.020503,1.929525,1.390545, 0.97878,2.0856,1.333693, 0.762958,2.0856,1.466456, + 0.762958,2.0856,1.466456, 0.795481,1.929525,1.528968, 1.020503,1.929525,1.390545, + 1.219958,1.929525,1.219958, 1.17008,2.0856,1.17008, 0.97878,2.0856,1.333693, + 0.97878,2.0856,1.333693, 1.020503,1.929525,1.390545, 1.219958,1.929525,1.219958, + 1.390545,1.929525,1.020503, 1.333693,2.0856,0.97878, 1.17008,2.0856,1.17008, + 1.17008,2.0856,1.17008, 1.219958,1.929525,1.219958, 1.390545,1.929525,1.020503, + 1.528968,1.929525,0.795481, 1.466456,2.0856,0.762958, 1.333693,2.0856,0.97878, + 1.333693,2.0856,0.97878, 1.390545,1.929525,1.020503, 1.528968,1.929525,0.795481, + 1.631925,1.929525,0.54819, 1.565204,2.0856,0.525778, 1.466456,2.0856,0.762958, + 1.466456,2.0856,0.762958, 1.528968,1.929525,0.795481, 1.631925,1.929525,0.54819, + 1.696119,1.929525,0.28193, 1.626774,2.0856,0.270404, 1.565204,2.0856,0.525778, + 1.565204,2.0856,0.525778, 1.631925,1.929525,0.54819, 1.696119,1.929525,0.28193, + 1.71825,1.929525,0, 1.648,2.0856,0, 1.626774,2.0856,0.270404, + 1.626774,2.0856,0.270404, 1.696119,1.929525,0.28193, 1.71825,1.929525,0, + 0.292719,1.7748,1.761022, 0.28193,1.929525,1.696119, 0,1.929525,1.71825, + 0,1.929525,1.71825, 0,1.7748,1.784, 0.292719,1.7748,1.761022, + 0.569167,1.7748,1.694372, 0.54819,1.929525,1.631925, 0.28193,1.929525,1.696119, + 0.28193,1.929525,1.696119, 0.292719,1.7748,1.761022, 0.569167,1.7748,1.694372, + 0.825921,1.7748,1.587475, 0.795481,1.929525,1.528968, 0.54819,1.929525,1.631925, + 0.54819,1.929525,1.631925, 0.569167,1.7748,1.694372, 0.825921,1.7748,1.587475, + 1.059553,1.7748,1.443756, 1.020503,1.929525,1.390545, 0.795481,1.929525,1.528968, + 0.795481,1.929525,1.528968, 0.825921,1.7748,1.587475, 1.059553,1.7748,1.443756, + 1.26664,1.7748,1.26664, 1.219958,1.929525,1.219958, 1.020503,1.929525,1.390545, + 1.020503,1.929525,1.390545, 1.059553,1.7748,1.443756, 1.26664,1.7748,1.26664, + 1.443756,1.7748,1.059553, 1.390545,1.929525,1.020503, 1.219958,1.929525,1.219958, + 1.219958,1.929525,1.219958, 1.26664,1.7748,1.26664, 1.443756,1.7748,1.059553, + 1.587475,1.7748,0.825921, 1.528968,1.929525,0.795481, 1.390545,1.929525,1.020503, + 1.390545,1.929525,1.020503, 1.443756,1.7748,1.059553, 1.587475,1.7748,0.825921, + 1.694372,1.7748,0.569167, 1.631925,1.929525,0.54819, 1.528968,1.929525,0.795481, + 1.528968,1.929525,0.795481, 1.587475,1.7748,0.825921, 1.694372,1.7748,0.569167, + 1.761022,1.7748,0.292719, 1.696119,1.929525,0.28193, 1.631925,1.929525,0.54819, + 1.631925,1.929525,0.54819, 1.694372,1.7748,0.569167, 1.761022,1.7748,0.292719, + 1.784,1.7748,0, 1.71825,1.929525,0, 1.696119,1.929525,0.28193, + 1.696119,1.929525,0.28193, 1.761022,1.7748,0.292719, 1.784,1.7748,0, + 0.302523,1.621875,1.820003, 0.292719,1.7748,1.761022, 0,1.7748,1.784, + 0,1.7748,1.784, 0,1.621875,1.84375, 0.302523,1.621875,1.820003, + 0.58823,1.621875,1.75112, 0.569167,1.7748,1.694372, 0.292719,1.7748,1.761022, + 0.292719,1.7748,1.761022, 0.302523,1.621875,1.820003, 0.58823,1.621875,1.75112, + 0.853583,1.621875,1.640643, 0.825921,1.7748,1.587475, 0.569167,1.7748,1.694372, + 0.569167,1.7748,1.694372, 0.58823,1.621875,1.75112, 0.853583,1.621875,1.640643, + 1.09504,1.621875,1.49211, 1.059553,1.7748,1.443756, 0.825921,1.7748,1.587475, + 0.825921,1.7748,1.587475, 0.853583,1.621875,1.640643, 1.09504,1.621875,1.49211, + 1.309063,1.621875,1.309063, 1.26664,1.7748,1.26664, 1.059553,1.7748,1.443756, + 1.059553,1.7748,1.443756, 1.09504,1.621875,1.49211, 1.309063,1.621875,1.309063, + 1.49211,1.621875,1.09504, 1.443756,1.7748,1.059553, 1.26664,1.7748,1.26664, + 1.26664,1.7748,1.26664, 1.309063,1.621875,1.309063, 1.49211,1.621875,1.09504, + 1.640643,1.621875,0.853583, 1.587475,1.7748,0.825921, 1.443756,1.7748,1.059553, + 1.443756,1.7748,1.059553, 1.49211,1.621875,1.09504, 1.640643,1.621875,0.853583, + 1.75112,1.621875,0.58823, 1.694372,1.7748,0.569167, 1.587475,1.7748,0.825921, + 1.587475,1.7748,0.825921, 1.640643,1.621875,0.853583, 1.75112,1.621875,0.58823, + 1.820003,1.621875,0.302522, 1.761022,1.7748,0.292719, 1.694372,1.7748,0.569167, + 1.694372,1.7748,0.569167, 1.75112,1.621875,0.58823, 1.820003,1.621875,0.302522, + 1.84375,1.621875,0, 1.784,1.7748,0, 1.761022,1.7748,0.292719, + 1.761022,1.7748,0.292719, 1.820003,1.621875,0.302522, 1.84375,1.621875,0, + 0.311096,1.4712,1.87158, 0.302523,1.621875,1.820003, 0,1.621875,1.84375, + 0,1.621875,1.84375, 0,1.4712,1.896, 0.311096,1.4712,1.87158, + 0.6049,1.4712,1.800745, 0.58823,1.621875,1.75112, 0.302523,1.621875,1.820003, + 0.302523,1.621875,1.820003, 0.311096,1.4712,1.87158, 0.6049,1.4712,1.800745, + 0.877772,1.4712,1.687137, 0.853583,1.621875,1.640643, 0.58823,1.621875,1.75112, + 0.58823,1.621875,1.75112, 0.6049,1.4712,1.800745, 0.877772,1.4712,1.687137, + 1.126072,1.4712,1.534395, 1.09504,1.621875,1.49211, 0.853583,1.621875,1.640643, + 0.853583,1.621875,1.640643, 0.877772,1.4712,1.687137, 1.126072,1.4712,1.534395, + 1.34616,1.4712,1.34616, 1.309063,1.621875,1.309063, 1.09504,1.621875,1.49211, + 1.09504,1.621875,1.49211, 1.126072,1.4712,1.534395, 1.34616,1.4712,1.34616, + 1.534395,1.4712,1.126072, 1.49211,1.621875,1.09504, 1.309063,1.621875,1.309063, + 1.309063,1.621875,1.309063, 1.34616,1.4712,1.34616, 1.534395,1.4712,1.126072, + 1.687137,1.4712,0.877772, 1.640643,1.621875,0.853583, 1.49211,1.621875,1.09504, + 1.49211,1.621875,1.09504, 1.534395,1.4712,1.126072, 1.687137,1.4712,0.877772, + 1.800745,1.4712,0.6049, 1.75112,1.621875,0.58823, 1.640643,1.621875,0.853583, + 1.640643,1.621875,0.853583, 1.687137,1.4712,0.877772, 1.800745,1.4712,0.6049, + 1.87158,1.4712,0.311096, 1.820003,1.621875,0.302522, 1.75112,1.621875,0.58823, + 1.75112,1.621875,0.58823, 1.800745,1.4712,0.6049, 1.87158,1.4712,0.311096, + 1.896,1.4712,0, 1.84375,1.621875,0, 1.820003,1.621875,0.302522, + 1.820003,1.621875,0.302522, 1.87158,1.4712,0.311096, 1.896,1.4712,0, + 0.318192,1.323225,1.914272, 0.311096,1.4712,1.87158, 0,1.4712,1.896, + 0,1.4712,1.896, 0,1.323225,1.93925, 0.318192,1.323225,1.914272, + 0.618698,1.323225,1.841822, 0.6049,1.4712,1.800745, 0.311096,1.4712,1.87158, + 0.311096,1.4712,1.87158, 0.318192,1.323225,1.914272, 0.618698,1.323225,1.841822, + 0.897795,1.323225,1.725622, 0.877772,1.4712,1.687137, 0.6049,1.4712,1.800745, + 0.6049,1.4712,1.800745, 0.618698,1.323225,1.841822, 0.897795,1.323225,1.725622, + 1.151759,1.323225,1.569396, 1.126072,1.4712,1.534395, 0.877772,1.4712,1.687137, + 0.877772,1.4712,1.687137, 0.897795,1.323225,1.725622, 1.151759,1.323225,1.569396, + 1.376868,1.323225,1.376867, 1.34616,1.4712,1.34616, 1.126072,1.4712,1.534395, + 1.126072,1.4712,1.534395, 1.151759,1.323225,1.569396, 1.376868,1.323225,1.376867, + 1.569396,1.323225,1.151759, 1.534395,1.4712,1.126072, 1.34616,1.4712,1.34616, + 1.34616,1.4712,1.34616, 1.376868,1.323225,1.376867, 1.569396,1.323225,1.151759, + 1.725622,1.323225,0.897795, 1.687137,1.4712,0.877772, 1.534395,1.4712,1.126072, + 1.534395,1.4712,1.126072, 1.569396,1.323225,1.151759, 1.725622,1.323225,0.897795, + 1.841822,1.323225,0.618698, 1.800745,1.4712,0.6049, 1.687137,1.4712,0.877772, + 1.687137,1.4712,0.877772, 1.725622,1.323225,0.897795, 1.841822,1.323225,0.618698, + 1.914272,1.323225,0.318192, 1.87158,1.4712,0.311096, 1.800745,1.4712,0.6049, + 1.800745,1.4712,0.6049, 1.841822,1.323225,0.618698, 1.914272,1.323225,0.318192, + 1.93925,1.323225,0, 1.896,1.4712,0, 1.87158,1.4712,0.311096, + 1.87158,1.4712,0.311096, 1.914272,1.323225,0.318192, 1.93925,1.323225,0, + 0.323566,1.1784,1.946601, 0.318192,1.323225,1.914272, 0,1.323225,1.93925, + 0,1.323225,1.93925, 0,1.1784,1.972, 0.323566,1.1784,1.946601, + 0.629147,1.1784,1.872927, 0.618698,1.323225,1.841822, 0.318192,1.323225,1.914272, + 0.318192,1.323225,1.914272, 0.323566,1.1784,1.946601, 0.629147,1.1784,1.872927, + 0.912957,1.1784,1.754764, 0.897795,1.323225,1.725622, 0.618698,1.323225,1.841822, + 0.618698,1.323225,1.841822, 0.629147,1.1784,1.872927, 0.912957,1.1784,1.754764, + 1.17121,1.1784,1.5959, 1.151759,1.323225,1.569396, 0.897795,1.323225,1.725622, + 0.897795,1.323225,1.725622, 0.912957,1.1784,1.754764, 1.17121,1.1784,1.5959, + 1.40012,1.1784,1.40012, 1.376868,1.323225,1.376867, 1.151759,1.323225,1.569396, + 1.151759,1.323225,1.569396, 1.17121,1.1784,1.5959, 1.40012,1.1784,1.40012, + 1.5959,1.1784,1.17121, 1.569396,1.323225,1.151759, 1.376868,1.323225,1.376867, + 1.376868,1.323225,1.376867, 1.40012,1.1784,1.40012, 1.5959,1.1784,1.17121, + 1.754764,1.1784,0.912957, 1.725622,1.323225,0.897795, 1.569396,1.323225,1.151759, + 1.569396,1.323225,1.151759, 1.5959,1.1784,1.17121, 1.754764,1.1784,0.912957, + 1.872927,1.1784,0.629147, 1.841822,1.323225,0.618698, 1.725622,1.323225,0.897795, + 1.725622,1.323225,0.897795, 1.754764,1.1784,0.912957, 1.872927,1.1784,0.629147, + 1.946601,1.1784,0.323566, 1.914272,1.323225,0.318192, 1.841822,1.323225,0.618698, + 1.841822,1.323225,0.618698, 1.872927,1.1784,0.629147, 1.946601,1.1784,0.323566, + 1.972,1.1784,0, 1.93925,1.323225,0, 1.914272,1.323225,0.318192, + 1.914272,1.323225,0.318192, 1.946601,1.1784,0.323566, 1.972,1.1784,0, + 0.32697,1.037175,1.967083, 0.323566,1.1784,1.946601, 0,1.1784,1.972, + 0,1.1784,1.972, 0,1.037175,1.99275, 0.32697,1.037175,1.967083, + 0.635767,1.037175,1.892634, 0.629147,1.1784,1.872927, 0.323566,1.1784,1.946601, + 0.323566,1.1784,1.946601, 0.32697,1.037175,1.967083, 0.635767,1.037175,1.892634, + 0.922564,1.037175,1.773229, 0.912957,1.1784,1.754764, 0.629147,1.1784,1.872927, + 0.629147,1.1784,1.872927, 0.635767,1.037175,1.892634, 0.922564,1.037175,1.773229, + 1.183534,1.037175,1.612693, 1.17121,1.1784,1.5959, 0.912957,1.1784,1.754764, + 0.912957,1.1784,1.754764, 0.922564,1.037175,1.773229, 1.183534,1.037175,1.612693, + 1.414853,1.037175,1.414853, 1.40012,1.1784,1.40012, 1.17121,1.1784,1.5959, + 1.17121,1.1784,1.5959, 1.183534,1.037175,1.612693, 1.414853,1.037175,1.414853, + 1.612693,1.037175,1.183534, 1.5959,1.1784,1.17121, 1.40012,1.1784,1.40012, + 1.40012,1.1784,1.40012, 1.414853,1.037175,1.414853, 1.612693,1.037175,1.183534, + 1.773229,1.037175,0.922564, 1.754764,1.1784,0.912957, 1.5959,1.1784,1.17121, + 1.5959,1.1784,1.17121, 1.612693,1.037175,1.183534, 1.773229,1.037175,0.922564, + 1.892634,1.037175,0.635767, 1.872927,1.1784,0.629147, 1.754764,1.1784,0.912957, + 1.754764,1.1784,0.912957, 1.773229,1.037175,0.922564, 1.892634,1.037175,0.635767, + 1.967083,1.037175,0.32697, 1.946601,1.1784,0.323566, 1.872927,1.1784,0.629147, + 1.872927,1.1784,0.629147, 1.892634,1.037175,0.635767, 1.967083,1.037175,0.32697, + 1.99275,1.037175,0, 1.972,1.1784,0, 1.946601,1.1784,0.323566, + 1.946601,1.1784,0.323566, 1.967083,1.037175,0.32697, 1.99275,1.037175,0, + 0.32816,0.9,1.97424, 0.32697,1.037175,1.967083, 0,1.037175,1.99275, + 0,1.037175,1.99275, 0,0.9,2, 0.32816,0.9,1.97424, + 0.63808,0.9,1.89952, 0.635767,1.037175,1.892634, 0.32697,1.037175,1.967083, + 0.32697,1.037175,1.967083, 0.32816,0.9,1.97424, 0.63808,0.9,1.89952, + 0.92592,0.9,1.77968, 0.922564,1.037175,1.773229, 0.635767,1.037175,1.892634, + 0.635767,1.037175,1.892634, 0.63808,0.9,1.89952, 0.92592,0.9,1.77968, + 1.18784,0.9,1.61856, 1.183534,1.037175,1.612693, 0.922564,1.037175,1.773229, + 0.922564,1.037175,1.773229, 0.92592,0.9,1.77968, 1.18784,0.9,1.61856, + 1.42,0.9,1.42, 1.414853,1.037175,1.414853, 1.183534,1.037175,1.612693, + 1.183534,1.037175,1.612693, 1.18784,0.9,1.61856, 1.42,0.9,1.42, + 1.61856,0.9,1.18784, 1.612693,1.037175,1.183534, 1.414853,1.037175,1.414853, + 1.414853,1.037175,1.414853, 1.42,0.9,1.42, 1.61856,0.9,1.18784, + 1.77968,0.9,0.92592, 1.773229,1.037175,0.922564, 1.612693,1.037175,1.183534, + 1.612693,1.037175,1.183534, 1.61856,0.9,1.18784, 1.77968,0.9,0.92592, + 1.89952,0.9,0.63808, 1.892634,1.037175,0.635767, 1.773229,1.037175,0.922564, + 1.773229,1.037175,0.922564, 1.77968,0.9,0.92592, 1.89952,0.9,0.63808, + 1.97424,0.9,0.32816, 1.967083,1.037175,0.32697, 1.892634,1.037175,0.635767, + 1.892634,1.037175,0.635767, 1.89952,0.9,0.63808, 1.97424,0.9,0.32816, + 2,0.9,0, 1.99275,1.037175,0, 1.967083,1.037175,0.32697, + 1.967083,1.037175,0.32697, 1.97424,0.9,0.32816, 2,0.9,0, + 1.96042,0.771675,-0.325863, 1.97424,0.9,-0.32816, 2,0.9,0, + 2,0.9,0, 1.986,0.771675,0, 1.96042,0.771675,-0.325863, + 1.886223,0.771675,-0.633613, 1.89952,0.9,-0.63808, 1.97424,0.9,-0.32816, + 1.97424,0.9,-0.32816, 1.96042,0.771675,-0.325863, 1.886223,0.771675,-0.633613, + 1.767222,0.771675,-0.919439, 1.77968,0.9,-0.92592, 1.89952,0.9,-0.63808, + 1.89952,0.9,-0.63808, 1.886223,0.771675,-0.633613, 1.767222,0.771675,-0.919439, + 1.60723,0.771675,-1.179525, 1.61856,0.9,-1.18784, 1.77968,0.9,-0.92592, + 1.77968,0.9,-0.92592, 1.767222,0.771675,-0.919439, 1.60723,0.771675,-1.179525, + 1.41006,0.771675,-1.41006, 1.42,0.9,-1.42, 1.61856,0.9,-1.18784, + 1.61856,0.9,-1.18784, 1.60723,0.771675,-1.179525, 1.41006,0.771675,-1.41006, + 1.179525,0.771675,-1.60723, 1.18784,0.9,-1.61856, 1.42,0.9,-1.42, + 1.42,0.9,-1.42, 1.41006,0.771675,-1.41006, 1.179525,0.771675,-1.60723, + 0.919439,0.771675,-1.767222, 0.92592,0.9,-1.77968, 1.18784,0.9,-1.61856, + 1.18784,0.9,-1.61856, 1.179525,0.771675,-1.60723, 0.919439,0.771675,-1.767222, + 0.633613,0.771675,-1.886223, 0.63808,0.9,-1.89952, 0.92592,0.9,-1.77968, + 0.92592,0.9,-1.77968, 0.919439,0.771675,-1.767222, 0.633613,0.771675,-1.886223, + 0.325863,0.771675,-1.96042, 0.32816,0.9,-1.97424, 0.63808,0.9,-1.89952, + 0.63808,0.9,-1.89952, 0.633613,0.771675,-1.886223, 0.325863,0.771675,-1.96042, + 0,0.771675,-1.986, 0,0.9,-2, 0.32816,0.9,-1.97424, + 0.32816,0.9,-1.97424, 0.325863,0.771675,-1.96042, 0,0.771675,-1.986, + 1.92291,0.6564,-0.319628, 1.96042,0.771675,-0.325863, 1.986,0.771675,0, + 1.986,0.771675,0, 1.948,0.6564,0, 1.92291,0.6564,-0.319628, + 1.850132,0.6564,-0.62149, 1.886223,0.771675,-0.633613, 1.96042,0.771675,-0.325863, + 1.96042,0.771675,-0.325863, 1.92291,0.6564,-0.319628, 1.850132,0.6564,-0.62149, + 1.733408,0.6564,-0.901846, 1.767222,0.771675,-0.919439, 1.886223,0.771675,-0.633613, + 1.886223,0.771675,-0.633613, 1.850132,0.6564,-0.62149, 1.733408,0.6564,-0.901846, + 1.576477,0.6564,-1.156956, 1.60723,0.771675,-1.179525, 1.767222,0.771675,-0.919439, + 1.767222,0.771675,-0.919439, 1.733408,0.6564,-0.901846, 1.576477,0.6564,-1.156956, + 1.38308,0.6564,-1.38308, 1.41006,0.771675,-1.41006, 1.60723,0.771675,-1.179525, + 1.60723,0.771675,-1.179525, 1.576477,0.6564,-1.156956, 1.38308,0.6564,-1.38308, + 1.156956,0.6564,-1.576477, 1.179525,0.771675,-1.60723, 1.41006,0.771675,-1.41006, + 1.41006,0.771675,-1.41006, 1.38308,0.6564,-1.38308, 1.156956,0.6564,-1.576477, + 0.901846,0.6564,-1.733408, 0.919439,0.771675,-1.767222, 1.179525,0.771675,-1.60723, + 1.179525,0.771675,-1.60723, 1.156956,0.6564,-1.576477, 0.901846,0.6564,-1.733408, + 0.62149,0.6564,-1.850132, 0.633613,0.771675,-1.886223, 0.919439,0.771675,-1.767222, + 0.919439,0.771675,-1.767222, 0.901846,0.6564,-1.733408, 0.62149,0.6564,-1.850132, + 0.319628,0.6564,-1.92291, 0.325863,0.771675,-1.96042, 0.633613,0.771675,-1.886223, + 0.633613,0.771675,-1.886223, 0.62149,0.6564,-1.850132, 0.319628,0.6564,-1.92291, + 0,0.6564,-1.948, 0,0.771675,-1.986, 0.325863,0.771675,-1.96042, + 0.325863,0.771675,-1.96042, 0.319628,0.6564,-1.92291, 0,0.6564,-1.948, + 1.867631,0.553725,-0.310439, 1.92291,0.6564,-0.319628, 1.948,0.6564,0, + 1.948,0.6564,0, 1.892,0.553725,0, 1.867631,0.553725,-0.310439, + 1.796946,0.553725,-0.603624, 1.850132,0.6564,-0.62149, 1.92291,0.6564,-0.319628, + 1.92291,0.6564,-0.319628, 1.867631,0.553725,-0.310439, 1.796946,0.553725,-0.603624, + 1.683577,0.553725,-0.87592, 1.733408,0.6564,-0.901846, 1.850132,0.6564,-0.62149, + 1.850132,0.6564,-0.62149, 1.796946,0.553725,-0.603624, 1.683577,0.553725,-0.87592, + 1.531158,0.553725,-1.123697, 1.576477,0.6564,-1.156956, 1.733408,0.6564,-0.901846, + 1.733408,0.6564,-0.901846, 1.683577,0.553725,-0.87592, 1.531158,0.553725,-1.123697, + 1.34332,0.553725,-1.34332, 1.38308,0.6564,-1.38308, 1.576477,0.6564,-1.156956, + 1.576477,0.6564,-1.156956, 1.531158,0.553725,-1.123697, 1.34332,0.553725,-1.34332, + 1.123697,0.553725,-1.531158, 1.156956,0.6564,-1.576477, 1.38308,0.6564,-1.38308, + 1.38308,0.6564,-1.38308, 1.34332,0.553725,-1.34332, 1.123697,0.553725,-1.531158, + 0.87592,0.553725,-1.683577, 0.901846,0.6564,-1.733408, 1.156956,0.6564,-1.576477, + 1.156956,0.6564,-1.576477, 1.123697,0.553725,-1.531158, 0.87592,0.553725,-1.683577, + 0.603624,0.553725,-1.796946, 0.62149,0.6564,-1.850132, 0.901846,0.6564,-1.733408, + 0.901846,0.6564,-1.733408, 0.87592,0.553725,-1.683577, 0.603624,0.553725,-1.796946, + 0.310439,0.553725,-1.867631, 0.319628,0.6564,-1.92291, 0.62149,0.6564,-1.850132, + 0.62149,0.6564,-1.850132, 0.603624,0.553725,-1.796946, 0.310439,0.553725,-1.867631, + 0,0.553725,-1.892, 0,0.6564,-1.948, 0.319628,0.6564,-1.92291, + 0.319628,0.6564,-1.92291, 0.310439,0.553725,-1.867631, 0,0.553725,-1.892, + 1.800507,0.4632,-0.299282, 1.867631,0.553725,-0.310439, 1.892,0.553725,0, + 1.892,0.553725,0, 1.824,0.4632,0, 1.800507,0.4632,-0.299282, + 1.732362,0.4632,-0.581929, 1.796946,0.553725,-0.603624, 1.867631,0.553725,-0.310439, + 1.867631,0.553725,-0.310439, 1.800507,0.4632,-0.299282, 1.732362,0.4632,-0.581929, + 1.623068,0.4632,-0.844439, 1.683577,0.553725,-0.87592, 1.796946,0.553725,-0.603624, + 1.796946,0.553725,-0.603624, 1.732362,0.4632,-0.581929, 1.623068,0.4632,-0.844439, + 1.476127,0.4632,-1.08331, 1.531158,0.553725,-1.123697, 1.683577,0.553725,-0.87592, + 1.683577,0.553725,-0.87592, 1.623068,0.4632,-0.844439, 1.476127,0.4632,-1.08331, + 1.29504,0.4632,-1.29504, 1.34332,0.553725,-1.34332, 1.531158,0.553725,-1.123697, + 1.531158,0.553725,-1.123697, 1.476127,0.4632,-1.08331, 1.29504,0.4632,-1.29504, + 1.08331,0.4632,-1.476127, 1.123697,0.553725,-1.531158, 1.34332,0.553725,-1.34332, + 1.34332,0.553725,-1.34332, 1.29504,0.4632,-1.29504, 1.08331,0.4632,-1.476127, + 0.844439,0.4632,-1.623068, 0.87592,0.553725,-1.683577, 1.123697,0.553725,-1.531158, + 1.123697,0.553725,-1.531158, 1.08331,0.4632,-1.476127, 0.844439,0.4632,-1.623068, + 0.581929,0.4632,-1.732362, 0.603624,0.553725,-1.796946, 0.87592,0.553725,-1.683577, + 0.87592,0.553725,-1.683577, 0.844439,0.4632,-1.623068, 0.581929,0.4632,-1.732362, + 0.299282,0.4632,-1.800507, 0.310439,0.553725,-1.867631, 0.603624,0.553725,-1.796946, + 0.603624,0.553725,-1.796946, 0.581929,0.4632,-1.732362, 0.299282,0.4632,-1.800507, + 0,0.4632,-1.824, 0,0.553725,-1.892, 0.310439,0.553725,-1.867631, + 0.310439,0.553725,-1.867631, 0.299282,0.4632,-1.800507, 0,0.4632,-1.824, + 1.72746,0.384375,-0.28714, 1.800507,0.4632,-0.299282, 1.824,0.4632,0, + 1.824,0.4632,0, 1.75,0.384375,0, 1.72746,0.384375,-0.28714, + 1.66208,0.384375,-0.55832, 1.732362,0.4632,-0.581929, 1.800507,0.4632,-0.299282, + 1.800507,0.4632,-0.299282, 1.72746,0.384375,-0.28714, 1.66208,0.384375,-0.55832, + 1.55722,0.384375,-0.81018, 1.623068,0.4632,-0.844439, 1.732362,0.4632,-0.581929, + 1.732362,0.4632,-0.581929, 1.66208,0.384375,-0.55832, 1.55722,0.384375,-0.81018, + 1.41624,0.384375,-1.03936, 1.476127,0.4632,-1.08331, 1.623068,0.4632,-0.844439, + 1.623068,0.4632,-0.844439, 1.55722,0.384375,-0.81018, 1.41624,0.384375,-1.03936, + 1.2425,0.384375,-1.2425, 1.29504,0.4632,-1.29504, 1.476127,0.4632,-1.08331, + 1.476127,0.4632,-1.08331, 1.41624,0.384375,-1.03936, 1.2425,0.384375,-1.2425, + 1.03936,0.384375,-1.41624, 1.08331,0.4632,-1.476127, 1.29504,0.4632,-1.29504, + 1.29504,0.4632,-1.29504, 1.2425,0.384375,-1.2425, 1.03936,0.384375,-1.41624, + 0.81018,0.384375,-1.55722, 0.844439,0.4632,-1.623068, 1.08331,0.4632,-1.476127, + 1.08331,0.4632,-1.476127, 1.03936,0.384375,-1.41624, 0.81018,0.384375,-1.55722, + 0.55832,0.384375,-1.66208, 0.581929,0.4632,-1.732362, 0.844439,0.4632,-1.623068, + 0.844439,0.4632,-1.623068, 0.81018,0.384375,-1.55722, 0.55832,0.384375,-1.66208, + 0.28714,0.384375,-1.72746, 0.299282,0.4632,-1.800507, 0.581929,0.4632,-1.732362, + 0.581929,0.4632,-1.732362, 0.55832,0.384375,-1.66208, 0.28714,0.384375,-1.72746, + 0,0.384375,-1.75, 0,0.4632,-1.824, 0.299282,0.4632,-1.800507, + 0.299282,0.4632,-1.800507, 0.28714,0.384375,-1.72746, 0,0.384375,-1.75, + 1.654413,0.3168,-0.274998, 1.72746,0.384375,-0.28714, 1.75,0.384375,0, + 1.75,0.384375,0, 1.676,0.3168,0, 1.654413,0.3168,-0.274998, + 1.591798,0.3168,-0.534711, 1.66208,0.384375,-0.55832, 1.72746,0.384375,-0.28714, + 1.72746,0.384375,-0.28714, 1.654413,0.3168,-0.274998, 1.591798,0.3168,-0.534711, + 1.491372,0.3168,-0.775921, 1.55722,0.384375,-0.81018, 1.66208,0.384375,-0.55832, + 1.66208,0.384375,-0.55832, 1.591798,0.3168,-0.534711, 1.491372,0.3168,-0.775921, + 1.356353,0.3168,-0.99541, 1.41624,0.384375,-1.03936, 1.55722,0.384375,-0.81018, + 1.55722,0.384375,-0.81018, 1.491372,0.3168,-0.775921, 1.356353,0.3168,-0.99541, + 1.18996,0.3168,-1.18996, 1.2425,0.384375,-1.2425, 1.41624,0.384375,-1.03936, + 1.41624,0.384375,-1.03936, 1.356353,0.3168,-0.99541, 1.18996,0.3168,-1.18996, + 0.99541,0.3168,-1.356353, 1.03936,0.384375,-1.41624, 1.2425,0.384375,-1.2425, + 1.2425,0.384375,-1.2425, 1.18996,0.3168,-1.18996, 0.99541,0.3168,-1.356353, + 0.775921,0.3168,-1.491372, 0.81018,0.384375,-1.55722, 1.03936,0.384375,-1.41624, + 1.03936,0.384375,-1.41624, 0.99541,0.3168,-1.356353, 0.775921,0.3168,-1.491372, + 0.534711,0.3168,-1.591798, 0.55832,0.384375,-1.66208, 0.81018,0.384375,-1.55722, + 0.81018,0.384375,-1.55722, 0.775921,0.3168,-1.491372, 0.534711,0.3168,-1.591798, + 0.274998,0.3168,-1.654413, 0.28714,0.384375,-1.72746, 0.55832,0.384375,-1.66208, + 0.55832,0.384375,-1.66208, 0.534711,0.3168,-1.591798, 0.274998,0.3168,-1.654413, + 0,0.3168,-1.676, 0,0.384375,-1.75, 0.28714,0.384375,-1.72746, + 0.28714,0.384375,-1.72746, 0.274998,0.3168,-1.654413, 0,0.3168,-1.676, + 1.587289,0.260025,-0.263841, 1.654413,0.3168,-0.274998, 1.676,0.3168,0, + 1.676,0.3168,0, 1.608,0.260025,0, 1.587289,0.260025,-0.263841, + 1.527214,0.260025,-0.513016, 1.591798,0.3168,-0.534711, 1.654413,0.3168,-0.274998, + 1.654413,0.3168,-0.274998, 1.587289,0.260025,-0.263841, 1.527214,0.260025,-0.513016, + 1.430863,0.260025,-0.74444, 1.491372,0.3168,-0.775921, 1.591798,0.3168,-0.534711, + 1.591798,0.3168,-0.534711, 1.527214,0.260025,-0.513016, 1.430863,0.260025,-0.74444, + 1.301322,0.260025,-0.955023, 1.356353,0.3168,-0.99541, 1.491372,0.3168,-0.775921, + 1.491372,0.3168,-0.775921, 1.430863,0.260025,-0.74444, 1.301322,0.260025,-0.955023, + 1.14168,0.260025,-1.14168, 1.18996,0.3168,-1.18996, 1.356353,0.3168,-0.99541, + 1.356353,0.3168,-0.99541, 1.301322,0.260025,-0.955023, 1.14168,0.260025,-1.14168, + 0.955023,0.260025,-1.301322, 0.99541,0.3168,-1.356353, 1.18996,0.3168,-1.18996, + 1.18996,0.3168,-1.18996, 1.14168,0.260025,-1.14168, 0.955023,0.260025,-1.301322, + 0.74444,0.260025,-1.430863, 0.775921,0.3168,-1.491372, 0.99541,0.3168,-1.356353, + 0.99541,0.3168,-1.356353, 0.955023,0.260025,-1.301322, 0.74444,0.260025,-1.430863, + 0.513016,0.260025,-1.527214, 0.534711,0.3168,-1.591798, 0.775921,0.3168,-1.491372, + 0.775921,0.3168,-1.491372, 0.74444,0.260025,-1.430863, 0.513016,0.260025,-1.527214, + 0.263841,0.260025,-1.587289, 0.274998,0.3168,-1.654413, 0.534711,0.3168,-1.591798, + 0.534711,0.3168,-1.591798, 0.513016,0.260025,-1.527214, 0.263841,0.260025,-1.587289, + 0,0.260025,-1.608, 0,0.3168,-1.676, 0.274998,0.3168,-1.654413, + 0.274998,0.3168,-1.654413, 0.263841,0.260025,-1.587289, 0,0.260025,-1.608, + 1.53201,0.2136,-0.254652, 1.587289,0.260025,-0.263841, 1.608,0.260025,0, + 1.608,0.260025,0, 1.552,0.2136,0, 1.53201,0.2136,-0.254652, + 1.474028,0.2136,-0.49515, 1.527214,0.260025,-0.513016, 1.587289,0.260025,-0.263841, + 1.587289,0.260025,-0.263841, 1.53201,0.2136,-0.254652, 1.474028,0.2136,-0.49515, + 1.381032,0.2136,-0.718514, 1.430863,0.260025,-0.74444, 1.527214,0.260025,-0.513016, + 1.527214,0.260025,-0.513016, 1.474028,0.2136,-0.49515, 1.381032,0.2136,-0.718514, + 1.256003,0.2136,-0.921764, 1.301322,0.260025,-0.955023, 1.430863,0.260025,-0.74444, + 1.430863,0.260025,-0.74444, 1.381032,0.2136,-0.718514, 1.256003,0.2136,-0.921764, + 1.10192,0.2136,-1.10192, 1.14168,0.260025,-1.14168, 1.301322,0.260025,-0.955023, + 1.301322,0.260025,-0.955023, 1.256003,0.2136,-0.921764, 1.10192,0.2136,-1.10192, + 0.921764,0.2136,-1.256003, 0.955023,0.260025,-1.301322, 1.14168,0.260025,-1.14168, + 1.14168,0.260025,-1.14168, 1.10192,0.2136,-1.10192, 0.921764,0.2136,-1.256003, + 0.718514,0.2136,-1.381032, 0.74444,0.260025,-1.430863, 0.955023,0.260025,-1.301322, + 0.955023,0.260025,-1.301322, 0.921764,0.2136,-1.256003, 0.718514,0.2136,-1.381032, + 0.49515,0.2136,-1.474028, 0.513016,0.260025,-1.527214, 0.74444,0.260025,-1.430863, + 0.74444,0.260025,-1.430863, 0.718514,0.2136,-1.381032, 0.49515,0.2136,-1.474028, + 0.254652,0.2136,-1.53201, 0.263841,0.260025,-1.587289, 0.513016,0.260025,-1.527214, + 0.513016,0.260025,-1.527214, 0.49515,0.2136,-1.474028, 0.254652,0.2136,-1.53201, + 0,0.2136,-1.552, 0,0.260025,-1.608, 0.263841,0.260025,-1.587289, + 0.263841,0.260025,-1.587289, 0.254652,0.2136,-1.53201, 0,0.2136,-1.552, + 1.4945,0.177075,-0.248417, 1.53201,0.2136,-0.254652, 1.552,0.2136,0, + 1.552,0.2136,0, 1.514,0.177075,0, 1.4945,0.177075,-0.248417, + 1.437937,0.177075,-0.483027, 1.474028,0.2136,-0.49515, 1.53201,0.2136,-0.254652, + 1.53201,0.2136,-0.254652, 1.4945,0.177075,-0.248417, 1.437937,0.177075,-0.483027, + 1.347218,0.177075,-0.700921, 1.381032,0.2136,-0.718514, 1.474028,0.2136,-0.49515, + 1.474028,0.2136,-0.49515, 1.437937,0.177075,-0.483027, 1.347218,0.177075,-0.700921, + 1.22525,0.177075,-0.899195, 1.256003,0.2136,-0.921764, 1.381032,0.2136,-0.718514, + 1.381032,0.2136,-0.718514, 1.347218,0.177075,-0.700921, 1.22525,0.177075,-0.899195, + 1.07494,0.177075,-1.07494, 1.10192,0.2136,-1.10192, 1.256003,0.2136,-0.921764, + 1.256003,0.2136,-0.921764, 1.22525,0.177075,-0.899195, 1.07494,0.177075,-1.07494, + 0.899195,0.177075,-1.22525, 0.921764,0.2136,-1.256003, 1.10192,0.2136,-1.10192, + 1.10192,0.2136,-1.10192, 1.07494,0.177075,-1.07494, 0.899195,0.177075,-1.22525, + 0.700921,0.177075,-1.347218, 0.718514,0.2136,-1.381032, 0.921764,0.2136,-1.256003, + 0.921764,0.2136,-1.256003, 0.899195,0.177075,-1.22525, 0.700921,0.177075,-1.347218, + 0.483027,0.177075,-1.437937, 0.49515,0.2136,-1.474028, 0.718514,0.2136,-1.381032, + 0.718514,0.2136,-1.381032, 0.700921,0.177075,-1.347218, 0.483027,0.177075,-1.437937, + 0.248417,0.177075,-1.4945, 0.254652,0.2136,-1.53201, 0.49515,0.2136,-1.474028, + 0.49515,0.2136,-1.474028, 0.483027,0.177075,-1.437937, 0.248417,0.177075,-1.4945, + 0,0.177075,-1.514, 0,0.2136,-1.552, 0.254652,0.2136,-1.53201, + 0.254652,0.2136,-1.53201, 0.248417,0.177075,-1.4945, 0,0.177075,-1.514, + 1.48068,0.15,-0.24612, 1.4945,0.177075,-0.248417, 1.514,0.177075,0, + 1.514,0.177075,0, 1.5,0.15,0, 1.48068,0.15,-0.24612, + 1.42464,0.15,-0.47856, 1.437937,0.177075,-0.483027, 1.4945,0.177075,-0.248417, + 1.4945,0.177075,-0.248417, 1.48068,0.15,-0.24612, 1.42464,0.15,-0.47856, + 1.33476,0.15,-0.69444, 1.347218,0.177075,-0.700921, 1.437937,0.177075,-0.483027, + 1.437937,0.177075,-0.483027, 1.42464,0.15,-0.47856, 1.33476,0.15,-0.69444, + 1.21392,0.15,-0.89088, 1.22525,0.177075,-0.899195, 1.347218,0.177075,-0.700921, + 1.347218,0.177075,-0.700921, 1.33476,0.15,-0.69444, 1.21392,0.15,-0.89088, + 1.065,0.15,-1.065, 1.07494,0.177075,-1.07494, 1.22525,0.177075,-0.899195, + 1.22525,0.177075,-0.899195, 1.21392,0.15,-0.89088, 1.065,0.15,-1.065, + 0.89088,0.15,-1.21392, 0.899195,0.177075,-1.22525, 1.07494,0.177075,-1.07494, + 1.07494,0.177075,-1.07494, 1.065,0.15,-1.065, 0.89088,0.15,-1.21392, + 0.69444,0.15,-1.33476, 0.700921,0.177075,-1.347218, 0.899195,0.177075,-1.22525, + 0.899195,0.177075,-1.22525, 0.89088,0.15,-1.21392, 0.69444,0.15,-1.33476, + 0.47856,0.15,-1.42464, 0.483027,0.177075,-1.437937, 0.700921,0.177075,-1.347218, + 0.700921,0.177075,-1.347218, 0.69444,0.15,-1.33476, 0.47856,0.15,-1.42464, + 0.24612,0.15,-1.48068, 0.248417,0.177075,-1.4945, 0.483027,0.177075,-1.437937, + 0.483027,0.177075,-1.437937, 0.47856,0.15,-1.42464, 0.24612,0.15,-1.48068, + 0,0.15,-1.5, 0,0.177075,-1.514, 0.248417,0.177075,-1.4945, + 0.248417,0.177075,-1.4945, 0.24612,0.15,-1.48068, 0,0.15,-1.5, + -0.325863,0.771675,-1.96042, -0.32816,0.9,-1.97424, 0,0.9,-2, + 0,0.9,-2, 0,0.771675,-1.986, -0.325863,0.771675,-1.96042, + -0.633613,0.771675,-1.886223, -0.63808,0.9,-1.89952, -0.32816,0.9,-1.97424, + -0.32816,0.9,-1.97424, -0.325863,0.771675,-1.96042, -0.633613,0.771675,-1.886223, + -0.919439,0.771675,-1.767222, -0.92592,0.9,-1.77968, -0.63808,0.9,-1.89952, + -0.63808,0.9,-1.89952, -0.633613,0.771675,-1.886223, -0.919439,0.771675,-1.767222, + -1.179525,0.771675,-1.60723, -1.18784,0.9,-1.61856, -0.92592,0.9,-1.77968, + -0.92592,0.9,-1.77968, -0.919439,0.771675,-1.767222, -1.179525,0.771675,-1.60723, + -1.41006,0.771675,-1.41006, -1.42,0.9,-1.42, -1.18784,0.9,-1.61856, + -1.18784,0.9,-1.61856, -1.179525,0.771675,-1.60723, -1.41006,0.771675,-1.41006, + -1.60723,0.771675,-1.179525, -1.61856,0.9,-1.18784, -1.42,0.9,-1.42, + -1.42,0.9,-1.42, -1.41006,0.771675,-1.41006, -1.60723,0.771675,-1.179525, + -1.767222,0.771675,-0.919439, -1.77968,0.9,-0.92592, -1.61856,0.9,-1.18784, + -1.61856,0.9,-1.18784, -1.60723,0.771675,-1.179525, -1.767222,0.771675,-0.919439, + -1.886223,0.771675,-0.633613, -1.89952,0.9,-0.63808, -1.77968,0.9,-0.92592, + -1.77968,0.9,-0.92592, -1.767222,0.771675,-0.919439, -1.886223,0.771675,-0.633613, + -1.96042,0.771675,-0.325863, -1.97424,0.9,-0.32816, -1.89952,0.9,-0.63808, + -1.89952,0.9,-0.63808, -1.886223,0.771675,-0.633613, -1.96042,0.771675,-0.325863, + -1.986,0.771675,0, -2,0.9,0, -1.97424,0.9,-0.32816, + -1.97424,0.9,-0.32816, -1.96042,0.771675,-0.325863, -1.986,0.771675,0, + -0.319628,0.6564,-1.92291, -0.325863,0.771675,-1.96042, 0,0.771675,-1.986, + 0,0.771675,-1.986, 0,0.6564,-1.948, -0.319628,0.6564,-1.92291, + -0.62149,0.6564,-1.850132, -0.633613,0.771675,-1.886223, -0.325863,0.771675,-1.96042, + -0.325863,0.771675,-1.96042, -0.319628,0.6564,-1.92291, -0.62149,0.6564,-1.850132, + -0.901846,0.6564,-1.733408, -0.919439,0.771675,-1.767222, -0.633613,0.771675,-1.886223, + -0.633613,0.771675,-1.886223, -0.62149,0.6564,-1.850132, -0.901846,0.6564,-1.733408, + -1.156956,0.6564,-1.576477, -1.179525,0.771675,-1.60723, -0.919439,0.771675,-1.767222, + -0.919439,0.771675,-1.767222, -0.901846,0.6564,-1.733408, -1.156956,0.6564,-1.576477, + -1.38308,0.6564,-1.38308, -1.41006,0.771675,-1.41006, -1.179525,0.771675,-1.60723, + -1.179525,0.771675,-1.60723, -1.156956,0.6564,-1.576477, -1.38308,0.6564,-1.38308, + -1.576477,0.6564,-1.156956, -1.60723,0.771675,-1.179525, -1.41006,0.771675,-1.41006, + -1.41006,0.771675,-1.41006, -1.38308,0.6564,-1.38308, -1.576477,0.6564,-1.156956, + -1.733408,0.6564,-0.901846, -1.767222,0.771675,-0.919439, -1.60723,0.771675,-1.179525, + -1.60723,0.771675,-1.179525, -1.576477,0.6564,-1.156956, -1.733408,0.6564,-0.901846, + -1.850132,0.6564,-0.62149, -1.886223,0.771675,-0.633613, -1.767222,0.771675,-0.919439, + -1.767222,0.771675,-0.919439, -1.733408,0.6564,-0.901846, -1.850132,0.6564,-0.62149, + -1.92291,0.6564,-0.319628, -1.96042,0.771675,-0.325863, -1.886223,0.771675,-0.633613, + -1.886223,0.771675,-0.633613, -1.850132,0.6564,-0.62149, -1.92291,0.6564,-0.319628, + -1.948,0.6564,0, -1.986,0.771675,0, -1.96042,0.771675,-0.325863, + -1.96042,0.771675,-0.325863, -1.92291,0.6564,-0.319628, -1.948,0.6564,0, + -0.310439,0.553725,-1.867631, -0.319628,0.6564,-1.92291, 0,0.6564,-1.948, + 0,0.6564,-1.948, 0,0.553725,-1.892, -0.310439,0.553725,-1.867631, + -0.603624,0.553725,-1.796946, -0.62149,0.6564,-1.850132, -0.319628,0.6564,-1.92291, + -0.319628,0.6564,-1.92291, -0.310439,0.553725,-1.867631, -0.603624,0.553725,-1.796946, + -0.87592,0.553725,-1.683577, -0.901846,0.6564,-1.733408, -0.62149,0.6564,-1.850132, + -0.62149,0.6564,-1.850132, -0.603624,0.553725,-1.796946, -0.87592,0.553725,-1.683577, + -1.123697,0.553725,-1.531158, -1.156956,0.6564,-1.576477, -0.901846,0.6564,-1.733408, + -0.901846,0.6564,-1.733408, -0.87592,0.553725,-1.683577, -1.123697,0.553725,-1.531158, + -1.34332,0.553725,-1.34332, -1.38308,0.6564,-1.38308, -1.156956,0.6564,-1.576477, + -1.156956,0.6564,-1.576477, -1.123697,0.553725,-1.531158, -1.34332,0.553725,-1.34332, + -1.531158,0.553725,-1.123697, -1.576477,0.6564,-1.156956, -1.38308,0.6564,-1.38308, + -1.38308,0.6564,-1.38308, -1.34332,0.553725,-1.34332, -1.531158,0.553725,-1.123697, + -1.683577,0.553725,-0.87592, -1.733408,0.6564,-0.901846, -1.576477,0.6564,-1.156956, + -1.576477,0.6564,-1.156956, -1.531158,0.553725,-1.123697, -1.683577,0.553725,-0.87592, + -1.796946,0.553725,-0.603624, -1.850132,0.6564,-0.62149, -1.733408,0.6564,-0.901846, + -1.733408,0.6564,-0.901846, -1.683577,0.553725,-0.87592, -1.796946,0.553725,-0.603624, + -1.867631,0.553725,-0.310439, -1.92291,0.6564,-0.319628, -1.850132,0.6564,-0.62149, + -1.850132,0.6564,-0.62149, -1.796946,0.553725,-0.603624, -1.867631,0.553725,-0.310439, + -1.892,0.553725,0, -1.948,0.6564,0, -1.92291,0.6564,-0.319628, + -1.92291,0.6564,-0.319628, -1.867631,0.553725,-0.310439, -1.892,0.553725,0, + -0.299282,0.4632,-1.800507, -0.310439,0.553725,-1.867631, 0,0.553725,-1.892, + 0,0.553725,-1.892, 0,0.4632,-1.824, -0.299282,0.4632,-1.800507, + -0.581929,0.4632,-1.732362, -0.603624,0.553725,-1.796946, -0.310439,0.553725,-1.867631, + -0.310439,0.553725,-1.867631, -0.299282,0.4632,-1.800507, -0.581929,0.4632,-1.732362, + -0.844439,0.4632,-1.623068, -0.87592,0.553725,-1.683577, -0.603624,0.553725,-1.796946, + -0.603624,0.553725,-1.796946, -0.581929,0.4632,-1.732362, -0.844439,0.4632,-1.623068, + -1.08331,0.4632,-1.476127, -1.123697,0.553725,-1.531158, -0.87592,0.553725,-1.683577, + -0.87592,0.553725,-1.683577, -0.844439,0.4632,-1.623068, -1.08331,0.4632,-1.476127, + -1.29504,0.4632,-1.29504, -1.34332,0.553725,-1.34332, -1.123697,0.553725,-1.531158, + -1.123697,0.553725,-1.531158, -1.08331,0.4632,-1.476127, -1.29504,0.4632,-1.29504, + -1.476127,0.4632,-1.08331, -1.531158,0.553725,-1.123697, -1.34332,0.553725,-1.34332, + -1.34332,0.553725,-1.34332, -1.29504,0.4632,-1.29504, -1.476127,0.4632,-1.08331, + -1.623068,0.4632,-0.844439, -1.683577,0.553725,-0.87592, -1.531158,0.553725,-1.123697, + -1.531158,0.553725,-1.123697, -1.476127,0.4632,-1.08331, -1.623068,0.4632,-0.844439, + -1.732362,0.4632,-0.581929, -1.796946,0.553725,-0.603624, -1.683577,0.553725,-0.87592, + -1.683577,0.553725,-0.87592, -1.623068,0.4632,-0.844439, -1.732362,0.4632,-0.581929, + -1.800507,0.4632,-0.299282, -1.867631,0.553725,-0.310439, -1.796946,0.553725,-0.603624, + -1.796946,0.553725,-0.603624, -1.732362,0.4632,-0.581929, -1.800507,0.4632,-0.299282, + -1.824,0.4632,0, -1.892,0.553725,0, -1.867631,0.553725,-0.310439, + -1.867631,0.553725,-0.310439, -1.800507,0.4632,-0.299282, -1.824,0.4632,0, + -0.28714,0.384375,-1.72746, -0.299282,0.4632,-1.800507, 0,0.4632,-1.824, + 0,0.4632,-1.824, 0,0.384375,-1.75, -0.28714,0.384375,-1.72746, + -0.55832,0.384375,-1.66208, -0.581929,0.4632,-1.732362, -0.299282,0.4632,-1.800507, + -0.299282,0.4632,-1.800507, -0.28714,0.384375,-1.72746, -0.55832,0.384375,-1.66208, + -0.81018,0.384375,-1.55722, -0.844439,0.4632,-1.623068, -0.581929,0.4632,-1.732362, + -0.581929,0.4632,-1.732362, -0.55832,0.384375,-1.66208, -0.81018,0.384375,-1.55722, + -1.03936,0.384375,-1.41624, -1.08331,0.4632,-1.476127, -0.844439,0.4632,-1.623068, + -0.844439,0.4632,-1.623068, -0.81018,0.384375,-1.55722, -1.03936,0.384375,-1.41624, + -1.2425,0.384375,-1.2425, -1.29504,0.4632,-1.29504, -1.08331,0.4632,-1.476127, + -1.08331,0.4632,-1.476127, -1.03936,0.384375,-1.41624, -1.2425,0.384375,-1.2425, + -1.41624,0.384375,-1.03936, -1.476127,0.4632,-1.08331, -1.29504,0.4632,-1.29504, + -1.29504,0.4632,-1.29504, -1.2425,0.384375,-1.2425, -1.41624,0.384375,-1.03936, + -1.55722,0.384375,-0.81018, -1.623068,0.4632,-0.844439, -1.476127,0.4632,-1.08331, + -1.476127,0.4632,-1.08331, -1.41624,0.384375,-1.03936, -1.55722,0.384375,-0.81018, + -1.66208,0.384375,-0.55832, -1.732362,0.4632,-0.581929, -1.623068,0.4632,-0.844439, + -1.623068,0.4632,-0.844439, -1.55722,0.384375,-0.81018, -1.66208,0.384375,-0.55832, + -1.72746,0.384375,-0.28714, -1.800507,0.4632,-0.299282, -1.732362,0.4632,-0.581929, + -1.732362,0.4632,-0.581929, -1.66208,0.384375,-0.55832, -1.72746,0.384375,-0.28714, + -1.75,0.384375,0, -1.824,0.4632,0, -1.800507,0.4632,-0.299282, + -1.800507,0.4632,-0.299282, -1.72746,0.384375,-0.28714, -1.75,0.384375,0, + -0.274998,0.3168,-1.654413, -0.28714,0.384375,-1.72746, 0,0.384375,-1.75, + 0,0.384375,-1.75, 0,0.3168,-1.676, -0.274998,0.3168,-1.654413, + -0.534711,0.3168,-1.591798, -0.55832,0.384375,-1.66208, -0.28714,0.384375,-1.72746, + -0.28714,0.384375,-1.72746, -0.274998,0.3168,-1.654413, -0.534711,0.3168,-1.591798, + -0.775921,0.3168,-1.491372, -0.81018,0.384375,-1.55722, -0.55832,0.384375,-1.66208, + -0.55832,0.384375,-1.66208, -0.534711,0.3168,-1.591798, -0.775921,0.3168,-1.491372, + -0.99541,0.3168,-1.356353, -1.03936,0.384375,-1.41624, -0.81018,0.384375,-1.55722, + -0.81018,0.384375,-1.55722, -0.775921,0.3168,-1.491372, -0.99541,0.3168,-1.356353, + -1.18996,0.3168,-1.18996, -1.2425,0.384375,-1.2425, -1.03936,0.384375,-1.41624, + -1.03936,0.384375,-1.41624, -0.99541,0.3168,-1.356353, -1.18996,0.3168,-1.18996, + -1.356353,0.3168,-0.99541, -1.41624,0.384375,-1.03936, -1.2425,0.384375,-1.2425, + -1.2425,0.384375,-1.2425, -1.18996,0.3168,-1.18996, -1.356353,0.3168,-0.99541, + -1.491372,0.3168,-0.775921, -1.55722,0.384375,-0.81018, -1.41624,0.384375,-1.03936, + -1.41624,0.384375,-1.03936, -1.356353,0.3168,-0.99541, -1.491372,0.3168,-0.775921, + -1.591798,0.3168,-0.534711, -1.66208,0.384375,-0.55832, -1.55722,0.384375,-0.81018, + -1.55722,0.384375,-0.81018, -1.491372,0.3168,-0.775921, -1.591798,0.3168,-0.534711, + -1.654413,0.3168,-0.274998, -1.72746,0.384375,-0.28714, -1.66208,0.384375,-0.55832, + -1.66208,0.384375,-0.55832, -1.591798,0.3168,-0.534711, -1.654413,0.3168,-0.274998, + -1.676,0.3168,0, -1.75,0.384375,0, -1.72746,0.384375,-0.28714, + -1.72746,0.384375,-0.28714, -1.654413,0.3168,-0.274998, -1.676,0.3168,0, + -0.263841,0.260025,-1.587289, -0.274998,0.3168,-1.654413, 0,0.3168,-1.676, + 0,0.3168,-1.676, 0,0.260025,-1.608, -0.263841,0.260025,-1.587289, + -0.513016,0.260025,-1.527214, -0.534711,0.3168,-1.591798, -0.274998,0.3168,-1.654413, + -0.274998,0.3168,-1.654413, -0.263841,0.260025,-1.587289, -0.513016,0.260025,-1.527214, + -0.74444,0.260025,-1.430863, -0.775921,0.3168,-1.491372, -0.534711,0.3168,-1.591798, + -0.534711,0.3168,-1.591798, -0.513016,0.260025,-1.527214, -0.74444,0.260025,-1.430863, + -0.955023,0.260025,-1.301322, -0.99541,0.3168,-1.356353, -0.775921,0.3168,-1.491372, + -0.775921,0.3168,-1.491372, -0.74444,0.260025,-1.430863, -0.955023,0.260025,-1.301322, + -1.14168,0.260025,-1.14168, -1.18996,0.3168,-1.18996, -0.99541,0.3168,-1.356353, + -0.99541,0.3168,-1.356353, -0.955023,0.260025,-1.301322, -1.14168,0.260025,-1.14168, + -1.301322,0.260025,-0.955023, -1.356353,0.3168,-0.99541, -1.18996,0.3168,-1.18996, + -1.18996,0.3168,-1.18996, -1.14168,0.260025,-1.14168, -1.301322,0.260025,-0.955023, + -1.430863,0.260025,-0.74444, -1.491372,0.3168,-0.775921, -1.356353,0.3168,-0.99541, + -1.356353,0.3168,-0.99541, -1.301322,0.260025,-0.955023, -1.430863,0.260025,-0.74444, + -1.527214,0.260025,-0.513016, -1.591798,0.3168,-0.534711, -1.491372,0.3168,-0.775921, + -1.491372,0.3168,-0.775921, -1.430863,0.260025,-0.74444, -1.527214,0.260025,-0.513016, + -1.587289,0.260025,-0.263841, -1.654413,0.3168,-0.274998, -1.591798,0.3168,-0.534711, + -1.591798,0.3168,-0.534711, -1.527214,0.260025,-0.513016, -1.587289,0.260025,-0.263841, + -1.608,0.260025,0, -1.676,0.3168,0, -1.654413,0.3168,-0.274998, + -1.654413,0.3168,-0.274998, -1.587289,0.260025,-0.263841, -1.608,0.260025,0, + -0.254652,0.2136,-1.53201, -0.263841,0.260025,-1.587289, 0,0.260025,-1.608, + 0,0.260025,-1.608, 0,0.2136,-1.552, -0.254652,0.2136,-1.53201, + -0.49515,0.2136,-1.474028, -0.513016,0.260025,-1.527214, -0.263841,0.260025,-1.587289, + -0.263841,0.260025,-1.587289, -0.254652,0.2136,-1.53201, -0.49515,0.2136,-1.474028, + -0.718514,0.2136,-1.381032, -0.74444,0.260025,-1.430863, -0.513016,0.260025,-1.527214, + -0.513016,0.260025,-1.527214, -0.49515,0.2136,-1.474028, -0.718514,0.2136,-1.381032, + -0.921764,0.2136,-1.256003, -0.955023,0.260025,-1.301322, -0.74444,0.260025,-1.430863, + -0.74444,0.260025,-1.430863, -0.718514,0.2136,-1.381032, -0.921764,0.2136,-1.256003, + -1.10192,0.2136,-1.10192, -1.14168,0.260025,-1.14168, -0.955023,0.260025,-1.301322, + -0.955023,0.260025,-1.301322, -0.921764,0.2136,-1.256003, -1.10192,0.2136,-1.10192, + -1.256003,0.2136,-0.921764, -1.301322,0.260025,-0.955023, -1.14168,0.260025,-1.14168, + -1.14168,0.260025,-1.14168, -1.10192,0.2136,-1.10192, -1.256003,0.2136,-0.921764, + -1.381032,0.2136,-0.718514, -1.430863,0.260025,-0.74444, -1.301322,0.260025,-0.955023, + -1.301322,0.260025,-0.955023, -1.256003,0.2136,-0.921764, -1.381032,0.2136,-0.718514, + -1.474028,0.2136,-0.49515, -1.527214,0.260025,-0.513016, -1.430863,0.260025,-0.74444, + -1.430863,0.260025,-0.74444, -1.381032,0.2136,-0.718514, -1.474028,0.2136,-0.49515, + -1.53201,0.2136,-0.254652, -1.587289,0.260025,-0.263841, -1.527214,0.260025,-0.513016, + -1.527214,0.260025,-0.513016, -1.474028,0.2136,-0.49515, -1.53201,0.2136,-0.254652, + -1.552,0.2136,0, -1.608,0.260025,0, -1.587289,0.260025,-0.263841, + -1.587289,0.260025,-0.263841, -1.53201,0.2136,-0.254652, -1.552,0.2136,0, + -0.248417,0.177075,-1.4945, -0.254652,0.2136,-1.53201, 0,0.2136,-1.552, + 0,0.2136,-1.552, 0,0.177075,-1.514, -0.248417,0.177075,-1.4945, + -0.483027,0.177075,-1.437937, -0.49515,0.2136,-1.474028, -0.254652,0.2136,-1.53201, + -0.254652,0.2136,-1.53201, -0.248417,0.177075,-1.4945, -0.483027,0.177075,-1.437937, + -0.700921,0.177075,-1.347218, -0.718514,0.2136,-1.381032, -0.49515,0.2136,-1.474028, + -0.49515,0.2136,-1.474028, -0.483027,0.177075,-1.437937, -0.700921,0.177075,-1.347218, + -0.899195,0.177075,-1.22525, -0.921764,0.2136,-1.256003, -0.718514,0.2136,-1.381032, + -0.718514,0.2136,-1.381032, -0.700921,0.177075,-1.347218, -0.899195,0.177075,-1.22525, + -1.07494,0.177075,-1.07494, -1.10192,0.2136,-1.10192, -0.921764,0.2136,-1.256003, + -0.921764,0.2136,-1.256003, -0.899195,0.177075,-1.22525, -1.07494,0.177075,-1.07494, + -1.22525,0.177075,-0.899195, -1.256003,0.2136,-0.921764, -1.10192,0.2136,-1.10192, + -1.10192,0.2136,-1.10192, -1.07494,0.177075,-1.07494, -1.22525,0.177075,-0.899195, + -1.347218,0.177075,-0.700921, -1.381032,0.2136,-0.718514, -1.256003,0.2136,-0.921764, + -1.256003,0.2136,-0.921764, -1.22525,0.177075,-0.899195, -1.347218,0.177075,-0.700921, + -1.437937,0.177075,-0.483027, -1.474028,0.2136,-0.49515, -1.381032,0.2136,-0.718514, + -1.381032,0.2136,-0.718514, -1.347218,0.177075,-0.700921, -1.437937,0.177075,-0.483027, + -1.4945,0.177075,-0.248417, -1.53201,0.2136,-0.254652, -1.474028,0.2136,-0.49515, + -1.474028,0.2136,-0.49515, -1.437937,0.177075,-0.483027, -1.4945,0.177075,-0.248417, + -1.514,0.177075,0, -1.552,0.2136,0, -1.53201,0.2136,-0.254652, + -1.53201,0.2136,-0.254652, -1.4945,0.177075,-0.248417, -1.514,0.177075,0, + -0.24612,0.15,-1.48068, -0.248417,0.177075,-1.4945, 0,0.177075,-1.514, + 0,0.177075,-1.514, 0,0.15,-1.5, -0.24612,0.15,-1.48068, + -0.47856,0.15,-1.42464, -0.483027,0.177075,-1.437937, -0.248417,0.177075,-1.4945, + -0.248417,0.177075,-1.4945, -0.24612,0.15,-1.48068, -0.47856,0.15,-1.42464, + -0.69444,0.15,-1.33476, -0.700921,0.177075,-1.347218, -0.483027,0.177075,-1.437937, + -0.483027,0.177075,-1.437937, -0.47856,0.15,-1.42464, -0.69444,0.15,-1.33476, + -0.89088,0.15,-1.21392, -0.899195,0.177075,-1.22525, -0.700921,0.177075,-1.347218, + -0.700921,0.177075,-1.347218, -0.69444,0.15,-1.33476, -0.89088,0.15,-1.21392, + -1.065,0.15,-1.065, -1.07494,0.177075,-1.07494, -0.899195,0.177075,-1.22525, + -0.899195,0.177075,-1.22525, -0.89088,0.15,-1.21392, -1.065,0.15,-1.065, + -1.21392,0.15,-0.89088, -1.22525,0.177075,-0.899195, -1.07494,0.177075,-1.07494, + -1.07494,0.177075,-1.07494, -1.065,0.15,-1.065, -1.21392,0.15,-0.89088, + -1.33476,0.15,-0.69444, -1.347218,0.177075,-0.700921, -1.22525,0.177075,-0.899195, + -1.22525,0.177075,-0.899195, -1.21392,0.15,-0.89088, -1.33476,0.15,-0.69444, + -1.42464,0.15,-0.47856, -1.437937,0.177075,-0.483027, -1.347218,0.177075,-0.700921, + -1.347218,0.177075,-0.700921, -1.33476,0.15,-0.69444, -1.42464,0.15,-0.47856, + -1.48068,0.15,-0.24612, -1.4945,0.177075,-0.248417, -1.437937,0.177075,-0.483027, + -1.437937,0.177075,-0.483027, -1.42464,0.15,-0.47856, -1.48068,0.15,-0.24612, + -1.5,0.15,0, -1.514,0.177075,0, -1.4945,0.177075,-0.248417, + -1.4945,0.177075,-0.248417, -1.48068,0.15,-0.24612, -1.5,0.15,0, + -1.96042,0.771675,0.325863, -1.97424,0.9,0.32816, -2,0.9,0, + -2,0.9,0, -1.986,0.771675,0, -1.96042,0.771675,0.325863, + -1.886223,0.771675,0.633613, -1.89952,0.9,0.63808, -1.97424,0.9,0.32816, + -1.97424,0.9,0.32816, -1.96042,0.771675,0.325863, -1.886223,0.771675,0.633613, + -1.767222,0.771675,0.919439, -1.77968,0.9,0.92592, -1.89952,0.9,0.63808, + -1.89952,0.9,0.63808, -1.886223,0.771675,0.633613, -1.767222,0.771675,0.919439, + -1.60723,0.771675,1.179525, -1.61856,0.9,1.18784, -1.77968,0.9,0.92592, + -1.77968,0.9,0.92592, -1.767222,0.771675,0.919439, -1.60723,0.771675,1.179525, + -1.41006,0.771675,1.41006, -1.42,0.9,1.42, -1.61856,0.9,1.18784, + -1.61856,0.9,1.18784, -1.60723,0.771675,1.179525, -1.41006,0.771675,1.41006, + -1.179525,0.771675,1.60723, -1.18784,0.9,1.61856, -1.42,0.9,1.42, + -1.42,0.9,1.42, -1.41006,0.771675,1.41006, -1.179525,0.771675,1.60723, + -0.919439,0.771675,1.767222, -0.92592,0.9,1.77968, -1.18784,0.9,1.61856, + -1.18784,0.9,1.61856, -1.179525,0.771675,1.60723, -0.919439,0.771675,1.767222, + -0.633613,0.771675,1.886223, -0.63808,0.9,1.89952, -0.92592,0.9,1.77968, + -0.92592,0.9,1.77968, -0.919439,0.771675,1.767222, -0.633613,0.771675,1.886223, + -0.325863,0.771675,1.96042, -0.32816,0.9,1.97424, -0.63808,0.9,1.89952, + -0.63808,0.9,1.89952, -0.633613,0.771675,1.886223, -0.325863,0.771675,1.96042, + 0,0.771675,1.986, 0,0.9,2, -0.32816,0.9,1.97424, + -0.32816,0.9,1.97424, -0.325863,0.771675,1.96042, 0,0.771675,1.986, + -1.92291,0.6564,0.319628, -1.96042,0.771675,0.325863, -1.986,0.771675,0, + -1.986,0.771675,0, -1.948,0.6564,0, -1.92291,0.6564,0.319628, + -1.850132,0.6564,0.62149, -1.886223,0.771675,0.633613, -1.96042,0.771675,0.325863, + -1.96042,0.771675,0.325863, -1.92291,0.6564,0.319628, -1.850132,0.6564,0.62149, + -1.733408,0.6564,0.901846, -1.767222,0.771675,0.919439, -1.886223,0.771675,0.633613, + -1.886223,0.771675,0.633613, -1.850132,0.6564,0.62149, -1.733408,0.6564,0.901846, + -1.576477,0.6564,1.156956, -1.60723,0.771675,1.179525, -1.767222,0.771675,0.919439, + -1.767222,0.771675,0.919439, -1.733408,0.6564,0.901846, -1.576477,0.6564,1.156956, + -1.38308,0.6564,1.38308, -1.41006,0.771675,1.41006, -1.60723,0.771675,1.179525, + -1.60723,0.771675,1.179525, -1.576477,0.6564,1.156956, -1.38308,0.6564,1.38308, + -1.156956,0.6564,1.576477, -1.179525,0.771675,1.60723, -1.41006,0.771675,1.41006, + -1.41006,0.771675,1.41006, -1.38308,0.6564,1.38308, -1.156956,0.6564,1.576477, + -0.901846,0.6564,1.733408, -0.919439,0.771675,1.767222, -1.179525,0.771675,1.60723, + -1.179525,0.771675,1.60723, -1.156956,0.6564,1.576477, -0.901846,0.6564,1.733408, + -0.62149,0.6564,1.850132, -0.633613,0.771675,1.886223, -0.919439,0.771675,1.767222, + -0.919439,0.771675,1.767222, -0.901846,0.6564,1.733408, -0.62149,0.6564,1.850132, + -0.319628,0.6564,1.92291, -0.325863,0.771675,1.96042, -0.633613,0.771675,1.886223, + -0.633613,0.771675,1.886223, -0.62149,0.6564,1.850132, -0.319628,0.6564,1.92291, + 0,0.6564,1.948, 0,0.771675,1.986, -0.325863,0.771675,1.96042, + -0.325863,0.771675,1.96042, -0.319628,0.6564,1.92291, 0,0.6564,1.948, + -1.867631,0.553725,0.310439, -1.92291,0.6564,0.319628, -1.948,0.6564,0, + -1.948,0.6564,0, -1.892,0.553725,0, -1.867631,0.553725,0.310439, + -1.796946,0.553725,0.603624, -1.850132,0.6564,0.62149, -1.92291,0.6564,0.319628, + -1.92291,0.6564,0.319628, -1.867631,0.553725,0.310439, -1.796946,0.553725,0.603624, + -1.683577,0.553725,0.87592, -1.733408,0.6564,0.901846, -1.850132,0.6564,0.62149, + -1.850132,0.6564,0.62149, -1.796946,0.553725,0.603624, -1.683577,0.553725,0.87592, + -1.531158,0.553725,1.123697, -1.576477,0.6564,1.156956, -1.733408,0.6564,0.901846, + -1.733408,0.6564,0.901846, -1.683577,0.553725,0.87592, -1.531158,0.553725,1.123697, + -1.34332,0.553725,1.34332, -1.38308,0.6564,1.38308, -1.576477,0.6564,1.156956, + -1.576477,0.6564,1.156956, -1.531158,0.553725,1.123697, -1.34332,0.553725,1.34332, + -1.123697,0.553725,1.531158, -1.156956,0.6564,1.576477, -1.38308,0.6564,1.38308, + -1.38308,0.6564,1.38308, -1.34332,0.553725,1.34332, -1.123697,0.553725,1.531158, + -0.87592,0.553725,1.683577, -0.901846,0.6564,1.733408, -1.156956,0.6564,1.576477, + -1.156956,0.6564,1.576477, -1.123697,0.553725,1.531158, -0.87592,0.553725,1.683577, + -0.603624,0.553725,1.796946, -0.62149,0.6564,1.850132, -0.901846,0.6564,1.733408, + -0.901846,0.6564,1.733408, -0.87592,0.553725,1.683577, -0.603624,0.553725,1.796946, + -0.310439,0.553725,1.867631, -0.319628,0.6564,1.92291, -0.62149,0.6564,1.850132, + -0.62149,0.6564,1.850132, -0.603624,0.553725,1.796946, -0.310439,0.553725,1.867631, + 0,0.553725,1.892, 0,0.6564,1.948, -0.319628,0.6564,1.92291, + -0.319628,0.6564,1.92291, -0.310439,0.553725,1.867631, 0,0.553725,1.892, + -1.800507,0.4632,0.299282, -1.867631,0.553725,0.310439, -1.892,0.553725,0, + -1.892,0.553725,0, -1.824,0.4632,0, -1.800507,0.4632,0.299282, + -1.732362,0.4632,0.581929, -1.796946,0.553725,0.603624, -1.867631,0.553725,0.310439, + -1.867631,0.553725,0.310439, -1.800507,0.4632,0.299282, -1.732362,0.4632,0.581929, + -1.623068,0.4632,0.844439, -1.683577,0.553725,0.87592, -1.796946,0.553725,0.603624, + -1.796946,0.553725,0.603624, -1.732362,0.4632,0.581929, -1.623068,0.4632,0.844439, + -1.476127,0.4632,1.08331, -1.531158,0.553725,1.123697, -1.683577,0.553725,0.87592, + -1.683577,0.553725,0.87592, -1.623068,0.4632,0.844439, -1.476127,0.4632,1.08331, + -1.29504,0.4632,1.29504, -1.34332,0.553725,1.34332, -1.531158,0.553725,1.123697, + -1.531158,0.553725,1.123697, -1.476127,0.4632,1.08331, -1.29504,0.4632,1.29504, + -1.08331,0.4632,1.476127, -1.123697,0.553725,1.531158, -1.34332,0.553725,1.34332, + -1.34332,0.553725,1.34332, -1.29504,0.4632,1.29504, -1.08331,0.4632,1.476127, + -0.844439,0.4632,1.623068, -0.87592,0.553725,1.683577, -1.123697,0.553725,1.531158, + -1.123697,0.553725,1.531158, -1.08331,0.4632,1.476127, -0.844439,0.4632,1.623068, + -0.581929,0.4632,1.732362, -0.603624,0.553725,1.796946, -0.87592,0.553725,1.683577, + -0.87592,0.553725,1.683577, -0.844439,0.4632,1.623068, -0.581929,0.4632,1.732362, + -0.299282,0.4632,1.800507, -0.310439,0.553725,1.867631, -0.603624,0.553725,1.796946, + -0.603624,0.553725,1.796946, -0.581929,0.4632,1.732362, -0.299282,0.4632,1.800507, + 0,0.4632,1.824, 0,0.553725,1.892, -0.310439,0.553725,1.867631, + -0.310439,0.553725,1.867631, -0.299282,0.4632,1.800507, 0,0.4632,1.824, + -1.72746,0.384375,0.28714, -1.800507,0.4632,0.299282, -1.824,0.4632,0, + -1.824,0.4632,0, -1.75,0.384375,0, -1.72746,0.384375,0.28714, + -1.66208,0.384375,0.55832, -1.732362,0.4632,0.581929, -1.800507,0.4632,0.299282, + -1.800507,0.4632,0.299282, -1.72746,0.384375,0.28714, -1.66208,0.384375,0.55832, + -1.55722,0.384375,0.81018, -1.623068,0.4632,0.844439, -1.732362,0.4632,0.581929, + -1.732362,0.4632,0.581929, -1.66208,0.384375,0.55832, -1.55722,0.384375,0.81018, + -1.41624,0.384375,1.03936, -1.476127,0.4632,1.08331, -1.623068,0.4632,0.844439, + -1.623068,0.4632,0.844439, -1.55722,0.384375,0.81018, -1.41624,0.384375,1.03936, + -1.2425,0.384375,1.2425, -1.29504,0.4632,1.29504, -1.476127,0.4632,1.08331, + -1.476127,0.4632,1.08331, -1.41624,0.384375,1.03936, -1.2425,0.384375,1.2425, + -1.03936,0.384375,1.41624, -1.08331,0.4632,1.476127, -1.29504,0.4632,1.29504, + -1.29504,0.4632,1.29504, -1.2425,0.384375,1.2425, -1.03936,0.384375,1.41624, + -0.81018,0.384375,1.55722, -0.844439,0.4632,1.623068, -1.08331,0.4632,1.476127, + -1.08331,0.4632,1.476127, -1.03936,0.384375,1.41624, -0.81018,0.384375,1.55722, + -0.55832,0.384375,1.66208, -0.581929,0.4632,1.732362, -0.844439,0.4632,1.623068, + -0.844439,0.4632,1.623068, -0.81018,0.384375,1.55722, -0.55832,0.384375,1.66208, + -0.28714,0.384375,1.72746, -0.299282,0.4632,1.800507, -0.581929,0.4632,1.732362, + -0.581929,0.4632,1.732362, -0.55832,0.384375,1.66208, -0.28714,0.384375,1.72746, + 0,0.384375,1.75, 0,0.4632,1.824, -0.299282,0.4632,1.800507, + -0.299282,0.4632,1.800507, -0.28714,0.384375,1.72746, 0,0.384375,1.75, + -1.654413,0.3168,0.274998, -1.72746,0.384375,0.28714, -1.75,0.384375,0, + -1.75,0.384375,0, -1.676,0.3168,0, -1.654413,0.3168,0.274998, + -1.591798,0.3168,0.534711, -1.66208,0.384375,0.55832, -1.72746,0.384375,0.28714, + -1.72746,0.384375,0.28714, -1.654413,0.3168,0.274998, -1.591798,0.3168,0.534711, + -1.491372,0.3168,0.775921, -1.55722,0.384375,0.81018, -1.66208,0.384375,0.55832, + -1.66208,0.384375,0.55832, -1.591798,0.3168,0.534711, -1.491372,0.3168,0.775921, + -1.356353,0.3168,0.99541, -1.41624,0.384375,1.03936, -1.55722,0.384375,0.81018, + -1.55722,0.384375,0.81018, -1.491372,0.3168,0.775921, -1.356353,0.3168,0.99541, + -1.18996,0.3168,1.18996, -1.2425,0.384375,1.2425, -1.41624,0.384375,1.03936, + -1.41624,0.384375,1.03936, -1.356353,0.3168,0.99541, -1.18996,0.3168,1.18996, + -0.99541,0.3168,1.356353, -1.03936,0.384375,1.41624, -1.2425,0.384375,1.2425, + -1.2425,0.384375,1.2425, -1.18996,0.3168,1.18996, -0.99541,0.3168,1.356353, + -0.775921,0.3168,1.491372, -0.81018,0.384375,1.55722, -1.03936,0.384375,1.41624, + -1.03936,0.384375,1.41624, -0.99541,0.3168,1.356353, -0.775921,0.3168,1.491372, + -0.534711,0.3168,1.591798, -0.55832,0.384375,1.66208, -0.81018,0.384375,1.55722, + -0.81018,0.384375,1.55722, -0.775921,0.3168,1.491372, -0.534711,0.3168,1.591798, + -0.274998,0.3168,1.654413, -0.28714,0.384375,1.72746, -0.55832,0.384375,1.66208, + -0.55832,0.384375,1.66208, -0.534711,0.3168,1.591798, -0.274998,0.3168,1.654413, + 0,0.3168,1.676, 0,0.384375,1.75, -0.28714,0.384375,1.72746, + -0.28714,0.384375,1.72746, -0.274998,0.3168,1.654413, 0,0.3168,1.676, + -1.587289,0.260025,0.263841, -1.654413,0.3168,0.274998, -1.676,0.3168,0, + -1.676,0.3168,0, -1.608,0.260025,0, -1.587289,0.260025,0.263841, + -1.527214,0.260025,0.513016, -1.591798,0.3168,0.534711, -1.654413,0.3168,0.274998, + -1.654413,0.3168,0.274998, -1.587289,0.260025,0.263841, -1.527214,0.260025,0.513016, + -1.430863,0.260025,0.74444, -1.491372,0.3168,0.775921, -1.591798,0.3168,0.534711, + -1.591798,0.3168,0.534711, -1.527214,0.260025,0.513016, -1.430863,0.260025,0.74444, + -1.301322,0.260025,0.955023, -1.356353,0.3168,0.99541, -1.491372,0.3168,0.775921, + -1.491372,0.3168,0.775921, -1.430863,0.260025,0.74444, -1.301322,0.260025,0.955023, + -1.14168,0.260025,1.14168, -1.18996,0.3168,1.18996, -1.356353,0.3168,0.99541, + -1.356353,0.3168,0.99541, -1.301322,0.260025,0.955023, -1.14168,0.260025,1.14168, + -0.955023,0.260025,1.301322, -0.99541,0.3168,1.356353, -1.18996,0.3168,1.18996, + -1.18996,0.3168,1.18996, -1.14168,0.260025,1.14168, -0.955023,0.260025,1.301322, + -0.74444,0.260025,1.430863, -0.775921,0.3168,1.491372, -0.99541,0.3168,1.356353, + -0.99541,0.3168,1.356353, -0.955023,0.260025,1.301322, -0.74444,0.260025,1.430863, + -0.513016,0.260025,1.527214, -0.534711,0.3168,1.591798, -0.775921,0.3168,1.491372, + -0.775921,0.3168,1.491372, -0.74444,0.260025,1.430863, -0.513016,0.260025,1.527214, + -0.263841,0.260025,1.587289, -0.274998,0.3168,1.654413, -0.534711,0.3168,1.591798, + -0.534711,0.3168,1.591798, -0.513016,0.260025,1.527214, -0.263841,0.260025,1.587289, + 0,0.260025,1.608, 0,0.3168,1.676, -0.274998,0.3168,1.654413, + -0.274998,0.3168,1.654413, -0.263841,0.260025,1.587289, 0,0.260025,1.608, + -1.53201,0.2136,0.254652, -1.587289,0.260025,0.263841, -1.608,0.260025,0, + -1.608,0.260025,0, -1.552,0.2136,0, -1.53201,0.2136,0.254652, + -1.474028,0.2136,0.49515, -1.527214,0.260025,0.513016, -1.587289,0.260025,0.263841, + -1.587289,0.260025,0.263841, -1.53201,0.2136,0.254652, -1.474028,0.2136,0.49515, + -1.381032,0.2136,0.718514, -1.430863,0.260025,0.74444, -1.527214,0.260025,0.513016, + -1.527214,0.260025,0.513016, -1.474028,0.2136,0.49515, -1.381032,0.2136,0.718514, + -1.256003,0.2136,0.921764, -1.301322,0.260025,0.955023, -1.430863,0.260025,0.74444, + -1.430863,0.260025,0.74444, -1.381032,0.2136,0.718514, -1.256003,0.2136,0.921764, + -1.10192,0.2136,1.10192, -1.14168,0.260025,1.14168, -1.301322,0.260025,0.955023, + -1.301322,0.260025,0.955023, -1.256003,0.2136,0.921764, -1.10192,0.2136,1.10192, + -0.921764,0.2136,1.256003, -0.955023,0.260025,1.301322, -1.14168,0.260025,1.14168, + -1.14168,0.260025,1.14168, -1.10192,0.2136,1.10192, -0.921764,0.2136,1.256003, + -0.718514,0.2136,1.381032, -0.74444,0.260025,1.430863, -0.955023,0.260025,1.301322, + -0.955023,0.260025,1.301322, -0.921764,0.2136,1.256003, -0.718514,0.2136,1.381032, + -0.49515,0.2136,1.474028, -0.513016,0.260025,1.527214, -0.74444,0.260025,1.430863, + -0.74444,0.260025,1.430863, -0.718514,0.2136,1.381032, -0.49515,0.2136,1.474028, + -0.254652,0.2136,1.53201, -0.263841,0.260025,1.587289, -0.513016,0.260025,1.527214, + -0.513016,0.260025,1.527214, -0.49515,0.2136,1.474028, -0.254652,0.2136,1.53201, + 0,0.2136,1.552, 0,0.260025,1.608, -0.263841,0.260025,1.587289, + -0.263841,0.260025,1.587289, -0.254652,0.2136,1.53201, 0,0.2136,1.552, + -1.4945,0.177075,0.248417, -1.53201,0.2136,0.254652, -1.552,0.2136,0, + -1.552,0.2136,0, -1.514,0.177075,0, -1.4945,0.177075,0.248417, + -1.437937,0.177075,0.483027, -1.474028,0.2136,0.49515, -1.53201,0.2136,0.254652, + -1.53201,0.2136,0.254652, -1.4945,0.177075,0.248417, -1.437937,0.177075,0.483027, + -1.347218,0.177075,0.700921, -1.381032,0.2136,0.718514, -1.474028,0.2136,0.49515, + -1.474028,0.2136,0.49515, -1.437937,0.177075,0.483027, -1.347218,0.177075,0.700921, + -1.22525,0.177075,0.899195, -1.256003,0.2136,0.921764, -1.381032,0.2136,0.718514, + -1.381032,0.2136,0.718514, -1.347218,0.177075,0.700921, -1.22525,0.177075,0.899195, + -1.07494,0.177075,1.07494, -1.10192,0.2136,1.10192, -1.256003,0.2136,0.921764, + -1.256003,0.2136,0.921764, -1.22525,0.177075,0.899195, -1.07494,0.177075,1.07494, + -0.899195,0.177075,1.22525, -0.921764,0.2136,1.256003, -1.10192,0.2136,1.10192, + -1.10192,0.2136,1.10192, -1.07494,0.177075,1.07494, -0.899195,0.177075,1.22525, + -0.700921,0.177075,1.347218, -0.718514,0.2136,1.381032, -0.921764,0.2136,1.256003, + -0.921764,0.2136,1.256003, -0.899195,0.177075,1.22525, -0.700921,0.177075,1.347218, + -0.483027,0.177075,1.437937, -0.49515,0.2136,1.474028, -0.718514,0.2136,1.381032, + -0.718514,0.2136,1.381032, -0.700921,0.177075,1.347218, -0.483027,0.177075,1.437937, + -0.248417,0.177075,1.4945, -0.254652,0.2136,1.53201, -0.49515,0.2136,1.474028, + -0.49515,0.2136,1.474028, -0.483027,0.177075,1.437937, -0.248417,0.177075,1.4945, + 0,0.177075,1.514, 0,0.2136,1.552, -0.254652,0.2136,1.53201, + -0.254652,0.2136,1.53201, -0.248417,0.177075,1.4945, 0,0.177075,1.514, + -1.48068,0.15,0.24612, -1.4945,0.177075,0.248417, -1.514,0.177075,0, + -1.514,0.177075,0, -1.5,0.15,0, -1.48068,0.15,0.24612, + -1.42464,0.15,0.47856, -1.437937,0.177075,0.483027, -1.4945,0.177075,0.248417, + -1.4945,0.177075,0.248417, -1.48068,0.15,0.24612, -1.42464,0.15,0.47856, + -1.33476,0.15,0.69444, -1.347218,0.177075,0.700921, -1.437937,0.177075,0.483027, + -1.437937,0.177075,0.483027, -1.42464,0.15,0.47856, -1.33476,0.15,0.69444, + -1.21392,0.15,0.89088, -1.22525,0.177075,0.899195, -1.347218,0.177075,0.700921, + -1.347218,0.177075,0.700921, -1.33476,0.15,0.69444, -1.21392,0.15,0.89088, + -1.065,0.15,1.065, -1.07494,0.177075,1.07494, -1.22525,0.177075,0.899195, + -1.22525,0.177075,0.899195, -1.21392,0.15,0.89088, -1.065,0.15,1.065, + -0.89088,0.15,1.21392, -0.899195,0.177075,1.22525, -1.07494,0.177075,1.07494, + -1.07494,0.177075,1.07494, -1.065,0.15,1.065, -0.89088,0.15,1.21392, + -0.69444,0.15,1.33476, -0.700921,0.177075,1.347218, -0.899195,0.177075,1.22525, + -0.899195,0.177075,1.22525, -0.89088,0.15,1.21392, -0.69444,0.15,1.33476, + -0.47856,0.15,1.42464, -0.483027,0.177075,1.437937, -0.700921,0.177075,1.347218, + -0.700921,0.177075,1.347218, -0.69444,0.15,1.33476, -0.47856,0.15,1.42464, + -0.24612,0.15,1.48068, -0.248417,0.177075,1.4945, -0.483027,0.177075,1.437937, + -0.483027,0.177075,1.437937, -0.47856,0.15,1.42464, -0.24612,0.15,1.48068, + 0,0.15,1.5, 0,0.177075,1.514, -0.248417,0.177075,1.4945, + -0.248417,0.177075,1.4945, -0.24612,0.15,1.48068, 0,0.15,1.5, + 0.325863,0.771675,1.96042, 0.32816,0.9,1.97424, 0,0.9,2, + 0,0.9,2, 0,0.771675,1.986, 0.325863,0.771675,1.96042, + 0.633613,0.771675,1.886223, 0.63808,0.9,1.89952, 0.32816,0.9,1.97424, + 0.32816,0.9,1.97424, 0.325863,0.771675,1.96042, 0.633613,0.771675,1.886223, + 0.919439,0.771675,1.767222, 0.92592,0.9,1.77968, 0.63808,0.9,1.89952, + 0.63808,0.9,1.89952, 0.633613,0.771675,1.886223, 0.919439,0.771675,1.767222, + 1.179525,0.771675,1.60723, 1.18784,0.9,1.61856, 0.92592,0.9,1.77968, + 0.92592,0.9,1.77968, 0.919439,0.771675,1.767222, 1.179525,0.771675,1.60723, + 1.41006,0.771675,1.41006, 1.42,0.9,1.42, 1.18784,0.9,1.61856, + 1.18784,0.9,1.61856, 1.179525,0.771675,1.60723, 1.41006,0.771675,1.41006, + 1.60723,0.771675,1.179525, 1.61856,0.9,1.18784, 1.42,0.9,1.42, + 1.42,0.9,1.42, 1.41006,0.771675,1.41006, 1.60723,0.771675,1.179525, + 1.767222,0.771675,0.919439, 1.77968,0.9,0.92592, 1.61856,0.9,1.18784, + 1.61856,0.9,1.18784, 1.60723,0.771675,1.179525, 1.767222,0.771675,0.919439, + 1.886223,0.771675,0.633613, 1.89952,0.9,0.63808, 1.77968,0.9,0.92592, + 1.77968,0.9,0.92592, 1.767222,0.771675,0.919439, 1.886223,0.771675,0.633613, + 1.96042,0.771675,0.325863, 1.97424,0.9,0.32816, 1.89952,0.9,0.63808, + 1.89952,0.9,0.63808, 1.886223,0.771675,0.633613, 1.96042,0.771675,0.325863, + 1.986,0.771675,0, 2,0.9,0, 1.97424,0.9,0.32816, + 1.97424,0.9,0.32816, 1.96042,0.771675,0.325863, 1.986,0.771675,0, + 0.319628,0.6564,1.92291, 0.325863,0.771675,1.96042, 0,0.771675,1.986, + 0,0.771675,1.986, 0,0.6564,1.948, 0.319628,0.6564,1.92291, + 0.62149,0.6564,1.850132, 0.633613,0.771675,1.886223, 0.325863,0.771675,1.96042, + 0.325863,0.771675,1.96042, 0.319628,0.6564,1.92291, 0.62149,0.6564,1.850132, + 0.901846,0.6564,1.733408, 0.919439,0.771675,1.767222, 0.633613,0.771675,1.886223, + 0.633613,0.771675,1.886223, 0.62149,0.6564,1.850132, 0.901846,0.6564,1.733408, + 1.156956,0.6564,1.576477, 1.179525,0.771675,1.60723, 0.919439,0.771675,1.767222, + 0.919439,0.771675,1.767222, 0.901846,0.6564,1.733408, 1.156956,0.6564,1.576477, + 1.38308,0.6564,1.38308, 1.41006,0.771675,1.41006, 1.179525,0.771675,1.60723, + 1.179525,0.771675,1.60723, 1.156956,0.6564,1.576477, 1.38308,0.6564,1.38308, + 1.576477,0.6564,1.156956, 1.60723,0.771675,1.179525, 1.41006,0.771675,1.41006, + 1.41006,0.771675,1.41006, 1.38308,0.6564,1.38308, 1.576477,0.6564,1.156956, + 1.733408,0.6564,0.901846, 1.767222,0.771675,0.919439, 1.60723,0.771675,1.179525, + 1.60723,0.771675,1.179525, 1.576477,0.6564,1.156956, 1.733408,0.6564,0.901846, + 1.850132,0.6564,0.62149, 1.886223,0.771675,0.633613, 1.767222,0.771675,0.919439, + 1.767222,0.771675,0.919439, 1.733408,0.6564,0.901846, 1.850132,0.6564,0.62149, + 1.92291,0.6564,0.319628, 1.96042,0.771675,0.325863, 1.886223,0.771675,0.633613, + 1.886223,0.771675,0.633613, 1.850132,0.6564,0.62149, 1.92291,0.6564,0.319628, + 1.948,0.6564,0, 1.986,0.771675,0, 1.96042,0.771675,0.325863, + 1.96042,0.771675,0.325863, 1.92291,0.6564,0.319628, 1.948,0.6564,0, + 0.310439,0.553725,1.867631, 0.319628,0.6564,1.92291, 0,0.6564,1.948, + 0,0.6564,1.948, 0,0.553725,1.892, 0.310439,0.553725,1.867631, + 0.603624,0.553725,1.796946, 0.62149,0.6564,1.850132, 0.319628,0.6564,1.92291, + 0.319628,0.6564,1.92291, 0.310439,0.553725,1.867631, 0.603624,0.553725,1.796946, + 0.87592,0.553725,1.683577, 0.901846,0.6564,1.733408, 0.62149,0.6564,1.850132, + 0.62149,0.6564,1.850132, 0.603624,0.553725,1.796946, 0.87592,0.553725,1.683577, + 1.123697,0.553725,1.531158, 1.156956,0.6564,1.576477, 0.901846,0.6564,1.733408, + 0.901846,0.6564,1.733408, 0.87592,0.553725,1.683577, 1.123697,0.553725,1.531158, + 1.34332,0.553725,1.34332, 1.38308,0.6564,1.38308, 1.156956,0.6564,1.576477, + 1.156956,0.6564,1.576477, 1.123697,0.553725,1.531158, 1.34332,0.553725,1.34332, + 1.531158,0.553725,1.123697, 1.576477,0.6564,1.156956, 1.38308,0.6564,1.38308, + 1.38308,0.6564,1.38308, 1.34332,0.553725,1.34332, 1.531158,0.553725,1.123697, + 1.683577,0.553725,0.87592, 1.733408,0.6564,0.901846, 1.576477,0.6564,1.156956, + 1.576477,0.6564,1.156956, 1.531158,0.553725,1.123697, 1.683577,0.553725,0.87592, + 1.796946,0.553725,0.603624, 1.850132,0.6564,0.62149, 1.733408,0.6564,0.901846, + 1.733408,0.6564,0.901846, 1.683577,0.553725,0.87592, 1.796946,0.553725,0.603624, + 1.867631,0.553725,0.310439, 1.92291,0.6564,0.319628, 1.850132,0.6564,0.62149, + 1.850132,0.6564,0.62149, 1.796946,0.553725,0.603624, 1.867631,0.553725,0.310439, + 1.892,0.553725,0, 1.948,0.6564,0, 1.92291,0.6564,0.319628, + 1.92291,0.6564,0.319628, 1.867631,0.553725,0.310439, 1.892,0.553725,0, + 0.299282,0.4632,1.800507, 0.310439,0.553725,1.867631, 0,0.553725,1.892, + 0,0.553725,1.892, 0,0.4632,1.824, 0.299282,0.4632,1.800507, + 0.581929,0.4632,1.732362, 0.603624,0.553725,1.796946, 0.310439,0.553725,1.867631, + 0.310439,0.553725,1.867631, 0.299282,0.4632,1.800507, 0.581929,0.4632,1.732362, + 0.844439,0.4632,1.623068, 0.87592,0.553725,1.683577, 0.603624,0.553725,1.796946, + 0.603624,0.553725,1.796946, 0.581929,0.4632,1.732362, 0.844439,0.4632,1.623068, + 1.08331,0.4632,1.476127, 1.123697,0.553725,1.531158, 0.87592,0.553725,1.683577, + 0.87592,0.553725,1.683577, 0.844439,0.4632,1.623068, 1.08331,0.4632,1.476127, + 1.29504,0.4632,1.29504, 1.34332,0.553725,1.34332, 1.123697,0.553725,1.531158, + 1.123697,0.553725,1.531158, 1.08331,0.4632,1.476127, 1.29504,0.4632,1.29504, + 1.476127,0.4632,1.08331, 1.531158,0.553725,1.123697, 1.34332,0.553725,1.34332, + 1.34332,0.553725,1.34332, 1.29504,0.4632,1.29504, 1.476127,0.4632,1.08331, + 1.623068,0.4632,0.844439, 1.683577,0.553725,0.87592, 1.531158,0.553725,1.123697, + 1.531158,0.553725,1.123697, 1.476127,0.4632,1.08331, 1.623068,0.4632,0.844439, + 1.732362,0.4632,0.581929, 1.796946,0.553725,0.603624, 1.683577,0.553725,0.87592, + 1.683577,0.553725,0.87592, 1.623068,0.4632,0.844439, 1.732362,0.4632,0.581929, + 1.800507,0.4632,0.299282, 1.867631,0.553725,0.310439, 1.796946,0.553725,0.603624, + 1.796946,0.553725,0.603624, 1.732362,0.4632,0.581929, 1.800507,0.4632,0.299282, + 1.824,0.4632,0, 1.892,0.553725,0, 1.867631,0.553725,0.310439, + 1.867631,0.553725,0.310439, 1.800507,0.4632,0.299282, 1.824,0.4632,0, + 0.28714,0.384375,1.72746, 0.299282,0.4632,1.800507, 0,0.4632,1.824, + 0,0.4632,1.824, 0,0.384375,1.75, 0.28714,0.384375,1.72746, + 0.55832,0.384375,1.66208, 0.581929,0.4632,1.732362, 0.299282,0.4632,1.800507, + 0.299282,0.4632,1.800507, 0.28714,0.384375,1.72746, 0.55832,0.384375,1.66208, + 0.81018,0.384375,1.55722, 0.844439,0.4632,1.623068, 0.581929,0.4632,1.732362, + 0.581929,0.4632,1.732362, 0.55832,0.384375,1.66208, 0.81018,0.384375,1.55722, + 1.03936,0.384375,1.41624, 1.08331,0.4632,1.476127, 0.844439,0.4632,1.623068, + 0.844439,0.4632,1.623068, 0.81018,0.384375,1.55722, 1.03936,0.384375,1.41624, + 1.2425,0.384375,1.2425, 1.29504,0.4632,1.29504, 1.08331,0.4632,1.476127, + 1.08331,0.4632,1.476127, 1.03936,0.384375,1.41624, 1.2425,0.384375,1.2425, + 1.41624,0.384375,1.03936, 1.476127,0.4632,1.08331, 1.29504,0.4632,1.29504, + 1.29504,0.4632,1.29504, 1.2425,0.384375,1.2425, 1.41624,0.384375,1.03936, + 1.55722,0.384375,0.81018, 1.623068,0.4632,0.844439, 1.476127,0.4632,1.08331, + 1.476127,0.4632,1.08331, 1.41624,0.384375,1.03936, 1.55722,0.384375,0.81018, + 1.66208,0.384375,0.55832, 1.732362,0.4632,0.581929, 1.623068,0.4632,0.844439, + 1.623068,0.4632,0.844439, 1.55722,0.384375,0.81018, 1.66208,0.384375,0.55832, + 1.72746,0.384375,0.28714, 1.800507,0.4632,0.299282, 1.732362,0.4632,0.581929, + 1.732362,0.4632,0.581929, 1.66208,0.384375,0.55832, 1.72746,0.384375,0.28714, + 1.75,0.384375,0, 1.824,0.4632,0, 1.800507,0.4632,0.299282, + 1.800507,0.4632,0.299282, 1.72746,0.384375,0.28714, 1.75,0.384375,0, + 0.274998,0.3168,1.654413, 0.28714,0.384375,1.72746, 0,0.384375,1.75, + 0,0.384375,1.75, 0,0.3168,1.676, 0.274998,0.3168,1.654413, + 0.534711,0.3168,1.591798, 0.55832,0.384375,1.66208, 0.28714,0.384375,1.72746, + 0.28714,0.384375,1.72746, 0.274998,0.3168,1.654413, 0.534711,0.3168,1.591798, + 0.775921,0.3168,1.491372, 0.81018,0.384375,1.55722, 0.55832,0.384375,1.66208, + 0.55832,0.384375,1.66208, 0.534711,0.3168,1.591798, 0.775921,0.3168,1.491372, + 0.99541,0.3168,1.356353, 1.03936,0.384375,1.41624, 0.81018,0.384375,1.55722, + 0.81018,0.384375,1.55722, 0.775921,0.3168,1.491372, 0.99541,0.3168,1.356353, + 1.18996,0.3168,1.18996, 1.2425,0.384375,1.2425, 1.03936,0.384375,1.41624, + 1.03936,0.384375,1.41624, 0.99541,0.3168,1.356353, 1.18996,0.3168,1.18996, + 1.356353,0.3168,0.99541, 1.41624,0.384375,1.03936, 1.2425,0.384375,1.2425, + 1.2425,0.384375,1.2425, 1.18996,0.3168,1.18996, 1.356353,0.3168,0.99541, + 1.491372,0.3168,0.775921, 1.55722,0.384375,0.81018, 1.41624,0.384375,1.03936, + 1.41624,0.384375,1.03936, 1.356353,0.3168,0.99541, 1.491372,0.3168,0.775921, + 1.591798,0.3168,0.534711, 1.66208,0.384375,0.55832, 1.55722,0.384375,0.81018, + 1.55722,0.384375,0.81018, 1.491372,0.3168,0.775921, 1.591798,0.3168,0.534711, + 1.654413,0.3168,0.274998, 1.72746,0.384375,0.28714, 1.66208,0.384375,0.55832, + 1.66208,0.384375,0.55832, 1.591798,0.3168,0.534711, 1.654413,0.3168,0.274998, + 1.676,0.3168,0, 1.75,0.384375,0, 1.72746,0.384375,0.28714, + 1.72746,0.384375,0.28714, 1.654413,0.3168,0.274998, 1.676,0.3168,0, + 0.263841,0.260025,1.587289, 0.274998,0.3168,1.654413, 0,0.3168,1.676, + 0,0.3168,1.676, 0,0.260025,1.608, 0.263841,0.260025,1.587289, + 0.513016,0.260025,1.527214, 0.534711,0.3168,1.591798, 0.274998,0.3168,1.654413, + 0.274998,0.3168,1.654413, 0.263841,0.260025,1.587289, 0.513016,0.260025,1.527214, + 0.74444,0.260025,1.430863, 0.775921,0.3168,1.491372, 0.534711,0.3168,1.591798, + 0.534711,0.3168,1.591798, 0.513016,0.260025,1.527214, 0.74444,0.260025,1.430863, + 0.955023,0.260025,1.301322, 0.99541,0.3168,1.356353, 0.775921,0.3168,1.491372, + 0.775921,0.3168,1.491372, 0.74444,0.260025,1.430863, 0.955023,0.260025,1.301322, + 1.14168,0.260025,1.14168, 1.18996,0.3168,1.18996, 0.99541,0.3168,1.356353, + 0.99541,0.3168,1.356353, 0.955023,0.260025,1.301322, 1.14168,0.260025,1.14168, + 1.301322,0.260025,0.955023, 1.356353,0.3168,0.99541, 1.18996,0.3168,1.18996, + 1.18996,0.3168,1.18996, 1.14168,0.260025,1.14168, 1.301322,0.260025,0.955023, + 1.430863,0.260025,0.74444, 1.491372,0.3168,0.775921, 1.356353,0.3168,0.99541, + 1.356353,0.3168,0.99541, 1.301322,0.260025,0.955023, 1.430863,0.260025,0.74444, + 1.527214,0.260025,0.513016, 1.591798,0.3168,0.534711, 1.491372,0.3168,0.775921, + 1.491372,0.3168,0.775921, 1.430863,0.260025,0.74444, 1.527214,0.260025,0.513016, + 1.587289,0.260025,0.263841, 1.654413,0.3168,0.274998, 1.591798,0.3168,0.534711, + 1.591798,0.3168,0.534711, 1.527214,0.260025,0.513016, 1.587289,0.260025,0.263841, + 1.608,0.260025,0, 1.676,0.3168,0, 1.654413,0.3168,0.274998, + 1.654413,0.3168,0.274998, 1.587289,0.260025,0.263841, 1.608,0.260025,0, + 0.254652,0.2136,1.53201, 0.263841,0.260025,1.587289, 0,0.260025,1.608, + 0,0.260025,1.608, 0,0.2136,1.552, 0.254652,0.2136,1.53201, + 0.49515,0.2136,1.474028, 0.513016,0.260025,1.527214, 0.263841,0.260025,1.587289, + 0.263841,0.260025,1.587289, 0.254652,0.2136,1.53201, 0.49515,0.2136,1.474028, + 0.718514,0.2136,1.381032, 0.74444,0.260025,1.430863, 0.513016,0.260025,1.527214, + 0.513016,0.260025,1.527214, 0.49515,0.2136,1.474028, 0.718514,0.2136,1.381032, + 0.921764,0.2136,1.256003, 0.955023,0.260025,1.301322, 0.74444,0.260025,1.430863, + 0.74444,0.260025,1.430863, 0.718514,0.2136,1.381032, 0.921764,0.2136,1.256003, + 1.10192,0.2136,1.10192, 1.14168,0.260025,1.14168, 0.955023,0.260025,1.301322, + 0.955023,0.260025,1.301322, 0.921764,0.2136,1.256003, 1.10192,0.2136,1.10192, + 1.256003,0.2136,0.921764, 1.301322,0.260025,0.955023, 1.14168,0.260025,1.14168, + 1.14168,0.260025,1.14168, 1.10192,0.2136,1.10192, 1.256003,0.2136,0.921764, + 1.381032,0.2136,0.718514, 1.430863,0.260025,0.74444, 1.301322,0.260025,0.955023, + 1.301322,0.260025,0.955023, 1.256003,0.2136,0.921764, 1.381032,0.2136,0.718514, + 1.474028,0.2136,0.49515, 1.527214,0.260025,0.513016, 1.430863,0.260025,0.74444, + 1.430863,0.260025,0.74444, 1.381032,0.2136,0.718514, 1.474028,0.2136,0.49515, + 1.53201,0.2136,0.254652, 1.587289,0.260025,0.263841, 1.527214,0.260025,0.513016, + 1.527214,0.260025,0.513016, 1.474028,0.2136,0.49515, 1.53201,0.2136,0.254652, + 1.552,0.2136,0, 1.608,0.260025,0, 1.587289,0.260025,0.263841, + 1.587289,0.260025,0.263841, 1.53201,0.2136,0.254652, 1.552,0.2136,0, + 0.248417,0.177075,1.4945, 0.254652,0.2136,1.53201, 0,0.2136,1.552, + 0,0.2136,1.552, 0,0.177075,1.514, 0.248417,0.177075,1.4945, + 0.483027,0.177075,1.437937, 0.49515,0.2136,1.474028, 0.254652,0.2136,1.53201, + 0.254652,0.2136,1.53201, 0.248417,0.177075,1.4945, 0.483027,0.177075,1.437937, + 0.700921,0.177075,1.347218, 0.718514,0.2136,1.381032, 0.49515,0.2136,1.474028, + 0.49515,0.2136,1.474028, 0.483027,0.177075,1.437937, 0.700921,0.177075,1.347218, + 0.899195,0.177075,1.22525, 0.921764,0.2136,1.256003, 0.718514,0.2136,1.381032, + 0.718514,0.2136,1.381032, 0.700921,0.177075,1.347218, 0.899195,0.177075,1.22525, + 1.07494,0.177075,1.07494, 1.10192,0.2136,1.10192, 0.921764,0.2136,1.256003, + 0.921764,0.2136,1.256003, 0.899195,0.177075,1.22525, 1.07494,0.177075,1.07494, + 1.22525,0.177075,0.899195, 1.256003,0.2136,0.921764, 1.10192,0.2136,1.10192, + 1.10192,0.2136,1.10192, 1.07494,0.177075,1.07494, 1.22525,0.177075,0.899195, + 1.347218,0.177075,0.700921, 1.381032,0.2136,0.718514, 1.256003,0.2136,0.921764, + 1.256003,0.2136,0.921764, 1.22525,0.177075,0.899195, 1.347218,0.177075,0.700921, + 1.437937,0.177075,0.483027, 1.474028,0.2136,0.49515, 1.381032,0.2136,0.718514, + 1.381032,0.2136,0.718514, 1.347218,0.177075,0.700921, 1.437937,0.177075,0.483027, + 1.4945,0.177075,0.248417, 1.53201,0.2136,0.254652, 1.474028,0.2136,0.49515, + 1.474028,0.2136,0.49515, 1.437937,0.177075,0.483027, 1.4945,0.177075,0.248417, + 1.514,0.177075,0, 1.552,0.2136,0, 1.53201,0.2136,0.254652, + 1.53201,0.2136,0.254652, 1.4945,0.177075,0.248417, 1.514,0.177075,0, + 0.24612,0.15,1.48068, 0.248417,0.177075,1.4945, 0,0.177075,1.514, + 0,0.177075,1.514, 0,0.15,1.5, 0.24612,0.15,1.48068, + 0.47856,0.15,1.42464, 0.483027,0.177075,1.437937, 0.248417,0.177075,1.4945, + 0.248417,0.177075,1.4945, 0.24612,0.15,1.48068, 0.47856,0.15,1.42464, + 0.69444,0.15,1.33476, 0.700921,0.177075,1.347218, 0.483027,0.177075,1.437937, + 0.483027,0.177075,1.437937, 0.47856,0.15,1.42464, 0.69444,0.15,1.33476, + 0.89088,0.15,1.21392, 0.899195,0.177075,1.22525, 0.700921,0.177075,1.347218, + 0.700921,0.177075,1.347218, 0.69444,0.15,1.33476, 0.89088,0.15,1.21392, + 1.065,0.15,1.065, 1.07494,0.177075,1.07494, 0.899195,0.177075,1.22525, + 0.899195,0.177075,1.22525, 0.89088,0.15,1.21392, 1.065,0.15,1.065, + 1.21392,0.15,0.89088, 1.22525,0.177075,0.899195, 1.07494,0.177075,1.07494, + 1.07494,0.177075,1.07494, 1.065,0.15,1.065, 1.21392,0.15,0.89088, + 1.33476,0.15,0.69444, 1.347218,0.177075,0.700921, 1.22525,0.177075,0.899195, + 1.22525,0.177075,0.899195, 1.21392,0.15,0.89088, 1.33476,0.15,0.69444, + 1.42464,0.15,0.47856, 1.437937,0.177075,0.483027, 1.347218,0.177075,0.700921, + 1.347218,0.177075,0.700921, 1.33476,0.15,0.69444, 1.42464,0.15,0.47856, + 1.48068,0.15,0.24612, 1.4945,0.177075,0.248417, 1.437937,0.177075,0.483027, + 1.437937,0.177075,0.483027, 1.42464,0.15,0.47856, 1.48068,0.15,0.24612, + 1.5,0.15,0, 1.514,0.177075,0, 1.4945,0.177075,0.248417, + 1.4945,0.177075,0.248417, 1.48068,0.15,0.24612, 1.5,0.15,0, + -1.800455,2.031069,-0.081, -1.5972,2.0313,-0.081, -1.6,2.025,0, + -1.6,2.025,0, -1.8009,2.024775,0, -1.800455,2.031069,-0.081, + -1.799246,2.048152,-0.144, -1.5896,2.0484,-0.144, -1.5972,2.0313,-0.081, + -1.5972,2.0313,-0.081, -1.800455,2.031069,-0.081, -1.799246,2.048152,-0.144, + -1.797466,2.073326,-0.189, -1.5784,2.0736,-0.189, -1.5896,2.0484,-0.144, + -1.5896,2.0484,-0.144, -1.799246,2.048152,-0.144, -1.797466,2.073326,-0.189, + -1.795303,2.103896,-0.216, -1.5648,2.1042,-0.216, -1.5784,2.0736,-0.189, + -1.5784,2.0736,-0.189, -1.797466,2.073326,-0.189, -1.795303,2.103896,-0.216, + -1.79295,2.137163,-0.225, -1.55,2.1375,-0.225, -1.5648,2.1042,-0.216, + -1.5648,2.1042,-0.216, -1.795303,2.103896,-0.216, -1.79295,2.137163,-0.225, + -1.790597,2.170429,-0.216, -1.5352,2.1708,-0.216, -1.55,2.1375,-0.225, + -1.55,2.1375,-0.225, -1.79295,2.137163,-0.225, -1.790597,2.170429,-0.216, + -1.788434,2.200999,-0.189, -1.5216,2.2014,-0.189, -1.5352,2.1708,-0.216, + -1.5352,2.1708,-0.216, -1.790597,2.170429,-0.216, -1.788434,2.200999,-0.189, + -1.786654,2.226173,-0.144, -1.5104,2.2266,-0.144, -1.5216,2.2014,-0.189, + -1.5216,2.2014,-0.189, -1.788434,2.200999,-0.189, -1.786654,2.226173,-0.144, + -1.785445,2.243256,-0.081, -1.5028,2.2437,-0.081, -1.5104,2.2266,-0.144, + -1.5104,2.2266,-0.144, -1.786654,2.226173,-0.144, -1.785445,2.243256,-0.081, + -1.785,2.24955,0, -1.5,2.25,0, -1.5028,2.2437,-0.081, + -1.5028,2.2437,-0.081, -1.785445,2.243256,-0.081, -1.785,2.24955,0, + -1.98479,2.02945,-0.081, -1.800455,2.031069,-0.081, -1.8009,2.024775,0, + -1.8009,2.024775,0, -1.9832,2.0232,0, -1.98479,2.02945,-0.081, + -1.989107,2.046413,-0.144, -1.799246,2.048152,-0.144, -1.800455,2.031069,-0.081, + -1.800455,2.031069,-0.081, -1.98479,2.02945,-0.081, -1.989107,2.046413,-0.144, + -1.995469,2.071411,-0.189, -1.797466,2.073326,-0.189, -1.799246,2.048152,-0.144, + -1.799246,2.048152,-0.144, -1.989107,2.046413,-0.144, -1.995469,2.071411,-0.189, + -2.003194,2.101766,-0.216, -1.795303,2.103896,-0.216, -1.797466,2.073326,-0.189, + -1.797466,2.073326,-0.189, -1.995469,2.071411,-0.189, -2.003194,2.101766,-0.216, + -2.0116,2.1348,-0.225, -1.79295,2.137163,-0.225, -1.795303,2.103896,-0.216, + -1.795303,2.103896,-0.216, -2.003194,2.101766,-0.216, -2.0116,2.1348,-0.225, + -2.020006,2.167834,-0.216, -1.790597,2.170429,-0.216, -1.79295,2.137163,-0.225, + -1.79295,2.137163,-0.225, -2.0116,2.1348,-0.225, -2.020006,2.167834,-0.216, + -2.027731,2.198189,-0.189, -1.788434,2.200999,-0.189, -1.790597,2.170429,-0.216, + -1.790597,2.170429,-0.216, -2.020006,2.167834,-0.216, -2.027731,2.198189,-0.189, + -2.034093,2.223187,-0.144, -1.786654,2.226173,-0.144, -1.788434,2.200999,-0.189, + -1.788434,2.200999,-0.189, -2.027731,2.198189,-0.189, -2.034093,2.223187,-0.144, + -2.03841,2.24015,-0.081, -1.785445,2.243256,-0.081, -1.786654,2.226173,-0.144, + -1.786654,2.226173,-0.144, -2.034093,2.223187,-0.144, -2.03841,2.24015,-0.081, + -2.04,2.2464,0, -1.785,2.24955,0, -1.785445,2.243256,-0.081, + -1.785445,2.243256,-0.081, -2.03841,2.24015,-0.081, -2.04,2.2464,0, + -2.149624,2.025055,-0.081, -1.98479,2.02945,-0.081, -1.9832,2.0232,0, + -1.9832,2.0232,0, -2.1463,2.018925,0, -2.149624,2.025055,-0.081, + -2.158645,2.041693,-0.144, -1.989107,2.046413,-0.144, -1.98479,2.02945,-0.081, + -1.98479,2.02945,-0.081, -2.149624,2.025055,-0.081, -2.158645,2.041693,-0.144, + -2.171939,2.066213,-0.189, -1.995469,2.071411,-0.189, -1.989107,2.046413,-0.144, + -1.989107,2.046413,-0.144, -2.158645,2.041693,-0.144, -2.171939,2.066213,-0.189, + -2.188082,2.095987,-0.216, -2.003194,2.101766,-0.216, -1.995469,2.071411,-0.189, + -1.995469,2.071411,-0.189, -2.171939,2.066213,-0.189, -2.188082,2.095987,-0.216, + -2.20565,2.128388,-0.225, -2.0116,2.1348,-0.225, -2.003194,2.101766,-0.216, + -2.003194,2.101766,-0.216, -2.188082,2.095987,-0.216, -2.20565,2.128388,-0.225, + -2.223218,2.160788,-0.216, -2.020006,2.167834,-0.216, -2.0116,2.1348,-0.225, + -2.0116,2.1348,-0.225, -2.20565,2.128388,-0.225, -2.223218,2.160788,-0.216, + -2.239361,2.190562,-0.189, -2.027731,2.198189,-0.189, -2.020006,2.167834,-0.216, + -2.020006,2.167834,-0.216, -2.223218,2.160788,-0.216, -2.239361,2.190562,-0.189, + -2.252655,2.215082,-0.144, -2.034093,2.223187,-0.144, -2.027731,2.198189,-0.189, + -2.027731,2.198189,-0.189, -2.239361,2.190562,-0.189, -2.252655,2.215082,-0.144, + -2.261676,2.23172,-0.081, -2.03841,2.24015,-0.081, -2.034093,2.223187,-0.144, + -2.034093,2.223187,-0.144, -2.252655,2.215082,-0.144, -2.261676,2.23172,-0.081, + -2.265,2.23785,0, -2.04,2.2464,0, -2.03841,2.24015,-0.081, + -2.03841,2.24015,-0.081, -2.261676,2.23172,-0.081, -2.265,2.23785,0, + -2.294371,2.016497,-0.081, -2.149624,2.025055,-0.081, -2.1463,2.018925,0, + -2.1463,2.018925,0, -2.2896,2.0106,0, -2.294371,2.016497,-0.081, + -2.307322,2.032502,-0.144, -2.158645,2.041693,-0.144, -2.149624,2.025055,-0.081, + -2.149624,2.025055,-0.081, -2.294371,2.016497,-0.081, -2.307322,2.032502,-0.144, + -2.326406,2.05609,-0.189, -2.171939,2.066213,-0.189, -2.158645,2.041693,-0.144, + -2.158645,2.041693,-0.144, -2.307322,2.032502,-0.144, -2.326406,2.05609,-0.189, + -2.349581,2.084731,-0.216, -2.188082,2.095987,-0.216, -2.171939,2.066213,-0.189, + -2.171939,2.066213,-0.189, -2.326406,2.05609,-0.189, -2.349581,2.084731,-0.216, + -2.3748,2.1159,-0.225, -2.20565,2.128388,-0.225, -2.188082,2.095987,-0.216, + -2.188082,2.095987,-0.216, -2.349581,2.084731,-0.216, -2.3748,2.1159,-0.225, + -2.400019,2.147069,-0.216, -2.223218,2.160788,-0.216, -2.20565,2.128388,-0.225, + -2.20565,2.128388,-0.225, -2.3748,2.1159,-0.225, -2.400019,2.147069,-0.216, + -2.423194,2.17571,-0.189, -2.239361,2.190562,-0.189, -2.223218,2.160788,-0.216, + -2.223218,2.160788,-0.216, -2.400019,2.147069,-0.216, -2.423194,2.17571,-0.189, + -2.442278,2.199298,-0.144, -2.252655,2.215082,-0.144, -2.239361,2.190562,-0.189, + -2.239361,2.190562,-0.189, -2.423194,2.17571,-0.189, -2.442278,2.199298,-0.144, + -2.455229,2.215303,-0.081, -2.261676,2.23172,-0.081, -2.252655,2.215082,-0.144, + -2.252655,2.215082,-0.144, -2.442278,2.199298,-0.144, -2.455229,2.215303,-0.081, + -2.46,2.2212,0, -2.265,2.23785,0, -2.261676,2.23172,-0.081, + -2.261676,2.23172,-0.081, -2.455229,2.215303,-0.081, -2.46,2.2212,0, + -2.41845,2.002387,-0.081, -2.294371,2.016497,-0.081, -2.2896,2.0106,0, + -2.2896,2.0106,0, -2.4125,1.996875,0, -2.41845,2.002387,-0.081, + -2.4346,2.01735,-0.144, -2.307322,2.032502,-0.144, -2.294371,2.016497,-0.081, + -2.294371,2.016497,-0.081, -2.41845,2.002387,-0.081, -2.4346,2.01735,-0.144, + -2.4584,2.0394,-0.189, -2.326406,2.05609,-0.189, -2.307322,2.032502,-0.144, + -2.307322,2.032502,-0.144, -2.4346,2.01735,-0.144, -2.4584,2.0394,-0.189, + -2.4873,2.066175,-0.216, -2.349581,2.084731,-0.216, -2.326406,2.05609,-0.189, + -2.326406,2.05609,-0.189, -2.4584,2.0394,-0.189, -2.4873,2.066175,-0.216, + -2.51875,2.095312,-0.225, -2.3748,2.1159,-0.225, -2.349581,2.084731,-0.216, + -2.349581,2.084731,-0.216, -2.4873,2.066175,-0.216, -2.51875,2.095312,-0.225, + -2.5502,2.12445,-0.216, -2.400019,2.147069,-0.216, -2.3748,2.1159,-0.225, + -2.3748,2.1159,-0.225, -2.51875,2.095312,-0.225, -2.5502,2.12445,-0.216, + -2.5791,2.151225,-0.189, -2.423194,2.17571,-0.189, -2.400019,2.147069,-0.216, + -2.400019,2.147069,-0.216, -2.5502,2.12445,-0.216, -2.5791,2.151225,-0.189, + -2.6029,2.173275,-0.144, -2.442278,2.199298,-0.144, -2.423194,2.17571,-0.189, + -2.423194,2.17571,-0.189, -2.5791,2.151225,-0.189, -2.6029,2.173275,-0.144, + -2.61905,2.188238,-0.081, -2.455229,2.215303,-0.081, -2.442278,2.199298,-0.144, + -2.442278,2.199298,-0.144, -2.6029,2.173275,-0.144, -2.61905,2.188238,-0.081, + -2.625,2.19375,0, -2.46,2.2212,0, -2.455229,2.215303,-0.081, + -2.455229,2.215303,-0.081, -2.61905,2.188238,-0.081, -2.625,2.19375,0, + -2.521277,1.981339,-0.081, -2.41845,2.002387,-0.081, -2.4125,1.996875,0, + -2.4125,1.996875,0, -2.5144,1.9764,0, -2.521277,1.981339,-0.081, + -2.539942,1.994746,-0.144, -2.4346,2.01735,-0.144, -2.41845,2.002387,-0.081, + -2.41845,2.002387,-0.081, -2.521277,1.981339,-0.081, -2.539942,1.994746,-0.144, + -2.56745,2.014502,-0.189, -2.4584,2.0394,-0.189, -2.4346,2.01735,-0.144, + -2.4346,2.01735,-0.144, -2.539942,1.994746,-0.144, -2.56745,2.014502,-0.189, + -2.600851,2.038493,-0.216, -2.4873,2.066175,-0.216, -2.4584,2.0394,-0.189, + -2.4584,2.0394,-0.189, -2.56745,2.014502,-0.189, -2.600851,2.038493,-0.216, + -2.6372,2.0646,-0.225, -2.51875,2.095312,-0.225, -2.4873,2.066175,-0.216, + -2.4873,2.066175,-0.216, -2.600851,2.038493,-0.216, -2.6372,2.0646,-0.225, + -2.673549,2.090707,-0.216, -2.5502,2.12445,-0.216, -2.51875,2.095312,-0.225, + -2.51875,2.095312,-0.225, -2.6372,2.0646,-0.225, -2.673549,2.090707,-0.216, + -2.70695,2.114698,-0.189, -2.5791,2.151225,-0.189, -2.5502,2.12445,-0.216, + -2.5502,2.12445,-0.216, -2.673549,2.090707,-0.216, -2.70695,2.114698,-0.189, + -2.734458,2.134454,-0.144, -2.6029,2.173275,-0.144, -2.5791,2.151225,-0.189, + -2.5791,2.151225,-0.189, -2.70695,2.114698,-0.189, -2.734458,2.134454,-0.144, + -2.753123,2.147861,-0.081, -2.61905,2.188238,-0.081, -2.6029,2.173275,-0.144, + -2.6029,2.173275,-0.144, -2.734458,2.134454,-0.144, -2.753123,2.147861,-0.081, + -2.76,2.1528,0, -2.625,2.19375,0, -2.61905,2.188238,-0.081, + -2.61905,2.188238,-0.081, -2.753123,2.147861,-0.081, -2.76,2.1528,0, + -2.602268,1.951964,-0.081, -2.521277,1.981339,-0.081, -2.5144,1.9764,0, + -2.5144,1.9764,0, -2.5947,1.947825,0, -2.602268,1.951964,-0.081, + -2.622811,1.963199,-0.144, -2.539942,1.994746,-0.144, -2.521277,1.981339,-0.081, + -2.521277,1.981339,-0.081, -2.602268,1.951964,-0.081, -2.622811,1.963199,-0.144, + -2.653085,1.979755,-0.189, -2.56745,2.014502,-0.189, -2.539942,1.994746,-0.144, + -2.539942,1.994746,-0.144, -2.622811,1.963199,-0.144, -2.653085,1.979755,-0.189, + -2.689846,1.999859,-0.216, -2.600851,2.038493,-0.216, -2.56745,2.014502,-0.189, + -2.56745,2.014502,-0.189, -2.653085,1.979755,-0.189, -2.689846,1.999859,-0.216, + -2.72985,2.021737,-0.225, -2.6372,2.0646,-0.225, -2.600851,2.038493,-0.216, + -2.600851,2.038493,-0.216, -2.689846,1.999859,-0.216, -2.72985,2.021737,-0.225, + -2.769854,2.043616,-0.216, -2.673549,2.090707,-0.216, -2.6372,2.0646,-0.225, + -2.6372,2.0646,-0.225, -2.72985,2.021737,-0.225, -2.769854,2.043616,-0.216, + -2.806615,2.06372,-0.189, -2.70695,2.114698,-0.189, -2.673549,2.090707,-0.216, + -2.673549,2.090707,-0.216, -2.769854,2.043616,-0.216, -2.806615,2.06372,-0.189, + -2.836889,2.080276,-0.144, -2.734458,2.134454,-0.144, -2.70695,2.114698,-0.189, + -2.70695,2.114698,-0.189, -2.806615,2.06372,-0.189, -2.836889,2.080276,-0.144, + -2.857432,2.091511,-0.081, -2.753123,2.147861,-0.081, -2.734458,2.134454,-0.144, + -2.734458,2.134454,-0.144, -2.836889,2.080276,-0.144, -2.857432,2.091511,-0.081, + -2.865,2.09565,0, -2.76,2.1528,0, -2.753123,2.147861,-0.081, + -2.753123,2.147861,-0.081, -2.857432,2.091511,-0.081, -2.865,2.09565,0, + -2.660842,1.912874,-0.081, -2.602268,1.951964,-0.081, -2.5947,1.947825,0, + -2.5947,1.947825,0, -2.6528,1.9098,0, -2.660842,1.912874,-0.081, + -2.682669,1.921219,-0.144, -2.622811,1.963199,-0.144, -2.602268,1.951964,-0.081, + -2.602268,1.951964,-0.081, -2.660842,1.912874,-0.081, -2.682669,1.921219,-0.144, + -2.714835,1.933517,-0.189, -2.653085,1.979755,-0.189, -2.622811,1.963199,-0.144, + -2.622811,1.963199,-0.144, -2.682669,1.921219,-0.144, -2.714835,1.933517,-0.189, + -2.753894,1.94845,-0.216, -2.689846,1.999859,-0.216, -2.653085,1.979755,-0.189, + -2.653085,1.979755,-0.189, -2.714835,1.933517,-0.189, -2.753894,1.94845,-0.216, + -2.7964,1.9647,-0.225, -2.72985,2.021737,-0.225, -2.689846,1.999859,-0.216, + -2.689846,1.999859,-0.216, -2.753894,1.94845,-0.216, -2.7964,1.9647,-0.225, + -2.838906,1.98095,-0.216, -2.769854,2.043616,-0.216, -2.72985,2.021737,-0.225, + -2.72985,2.021737,-0.225, -2.7964,1.9647,-0.225, -2.838906,1.98095,-0.216, + -2.877965,1.995883,-0.189, -2.806615,2.06372,-0.189, -2.769854,2.043616,-0.216, + -2.769854,2.043616,-0.216, -2.838906,1.98095,-0.216, -2.877965,1.995883,-0.189, + -2.910131,2.008181,-0.144, -2.836889,2.080276,-0.144, -2.806615,2.06372,-0.189, + -2.806615,2.06372,-0.189, -2.877965,1.995883,-0.189, -2.910131,2.008181,-0.144, + -2.931958,2.016526,-0.081, -2.857432,2.091511,-0.081, -2.836889,2.080276,-0.144, + -2.836889,2.080276,-0.144, -2.910131,2.008181,-0.144, -2.931958,2.016526,-0.081, + -2.94,2.0196,0, -2.865,2.09565,0, -2.857432,2.091511,-0.081, + -2.857432,2.091511,-0.081, -2.931958,2.016526,-0.081, -2.94,2.0196,0, + -2.696413,1.862682,-0.081, -2.660842,1.912874,-0.081, -2.6528,1.9098,0, + -2.6528,1.9098,0, -2.6881,1.860975,0, -2.696413,1.862682,-0.081, + -2.718978,1.867316,-0.144, -2.682669,1.921219,-0.144, -2.660842,1.912874,-0.081, + -2.660842,1.912874,-0.081, -2.696413,1.862682,-0.081, -2.718978,1.867316,-0.144, + -2.75223,1.874146,-0.189, -2.714835,1.933517,-0.189, -2.682669,1.921219,-0.144, + -2.682669,1.921219,-0.144, -2.718978,1.867316,-0.144, -2.75223,1.874146,-0.189, + -2.792609,1.882438,-0.216, -2.753894,1.94845,-0.216, -2.714835,1.933517,-0.189, + -2.714835,1.933517,-0.189, -2.75223,1.874146,-0.189, -2.792609,1.882438,-0.216, + -2.83655,1.891463,-0.225, -2.7964,1.9647,-0.225, -2.753894,1.94845,-0.216, + -2.753894,1.94845,-0.216, -2.792609,1.882438,-0.216, -2.83655,1.891463,-0.225, + -2.880491,1.900487,-0.216, -2.838906,1.98095,-0.216, -2.7964,1.9647,-0.225, + -2.7964,1.9647,-0.225, -2.83655,1.891463,-0.225, -2.880491,1.900487,-0.216, + -2.92087,1.908779,-0.189, -2.877965,1.995883,-0.189, -2.838906,1.98095,-0.216, + -2.838906,1.98095,-0.216, -2.880491,1.900487,-0.216, -2.92087,1.908779,-0.189, + -2.954122,1.915609,-0.144, -2.910131,2.008181,-0.144, -2.877965,1.995883,-0.189, + -2.877965,1.995883,-0.189, -2.92087,1.908779,-0.189, -2.954122,1.915609,-0.144, + -2.976687,1.920243,-0.081, -2.931958,2.016526,-0.081, -2.910131,2.008181,-0.144, + -2.910131,2.008181,-0.144, -2.954122,1.915609,-0.144, -2.976687,1.920243,-0.081, + -2.985,1.92195,0, -2.94,2.0196,0, -2.931958,2.016526,-0.081, + -2.931958,2.016526,-0.081, -2.976687,1.920243,-0.081, -2.985,1.92195,0, + -2.7084,1.8,-0.081, -2.696413,1.862682,-0.081, -2.6881,1.860975,0, + -2.6881,1.860975,0, -2.7,1.8,0, -2.7084,1.8,-0.081, + -2.7312,1.8,-0.144, -2.718978,1.867316,-0.144, -2.696413,1.862682,-0.081, + -2.696413,1.862682,-0.081, -2.7084,1.8,-0.081, -2.7312,1.8,-0.144, + -2.7648,1.8,-0.189, -2.75223,1.874146,-0.189, -2.718978,1.867316,-0.144, + -2.718978,1.867316,-0.144, -2.7312,1.8,-0.144, -2.7648,1.8,-0.189, + -2.8056,1.8,-0.216, -2.792609,1.882438,-0.216, -2.75223,1.874146,-0.189, + -2.75223,1.874146,-0.189, -2.7648,1.8,-0.189, -2.8056,1.8,-0.216, + -2.85,1.8,-0.225, -2.83655,1.891463,-0.225, -2.792609,1.882438,-0.216, + -2.792609,1.882438,-0.216, -2.8056,1.8,-0.216, -2.85,1.8,-0.225, + -2.8944,1.8,-0.216, -2.880491,1.900487,-0.216, -2.83655,1.891463,-0.225, + -2.83655,1.891463,-0.225, -2.85,1.8,-0.225, -2.8944,1.8,-0.216, + -2.9352,1.8,-0.189, -2.92087,1.908779,-0.189, -2.880491,1.900487,-0.216, + -2.880491,1.900487,-0.216, -2.8944,1.8,-0.216, -2.9352,1.8,-0.189, + -2.9688,1.8,-0.144, -2.954122,1.915609,-0.144, -2.92087,1.908779,-0.189, + -2.92087,1.908779,-0.189, -2.9352,1.8,-0.189, -2.9688,1.8,-0.144, + -2.9916,1.8,-0.081, -2.976687,1.920243,-0.081, -2.954122,1.915609,-0.144, + -2.954122,1.915609,-0.144, -2.9688,1.8,-0.144, -2.9916,1.8,-0.081, + -3,1.8,0, -2.985,1.92195,0, -2.976687,1.920243,-0.081, + -2.976687,1.920243,-0.081, -2.9916,1.8,-0.081, -3,1.8,0, + -1.785445,2.243256,0.081, -1.5028,2.2437,0.081, -1.5,2.25,0, + -1.5,2.25,0, -1.785,2.24955,0, -1.785445,2.243256,0.081, + -1.786654,2.226173,0.144, -1.5104,2.2266,0.144, -1.5028,2.2437,0.081, + -1.5028,2.2437,0.081, -1.785445,2.243256,0.081, -1.786654,2.226173,0.144, + -1.788434,2.200999,0.189, -1.5216,2.2014,0.189, -1.5104,2.2266,0.144, + -1.5104,2.2266,0.144, -1.786654,2.226173,0.144, -1.788434,2.200999,0.189, + -1.790597,2.170429,0.216, -1.5352,2.1708,0.216, -1.5216,2.2014,0.189, + -1.5216,2.2014,0.189, -1.788434,2.200999,0.189, -1.790597,2.170429,0.216, + -1.79295,2.137163,0.225, -1.55,2.1375,0.225, -1.5352,2.1708,0.216, + -1.5352,2.1708,0.216, -1.790597,2.170429,0.216, -1.79295,2.137163,0.225, + -1.795303,2.103896,0.216, -1.5648,2.1042,0.216, -1.55,2.1375,0.225, + -1.55,2.1375,0.225, -1.79295,2.137163,0.225, -1.795303,2.103896,0.216, + -1.797466,2.073326,0.189, -1.5784,2.0736,0.189, -1.5648,2.1042,0.216, + -1.5648,2.1042,0.216, -1.795303,2.103896,0.216, -1.797466,2.073326,0.189, + -1.799246,2.048152,0.144, -1.5896,2.0484,0.144, -1.5784,2.0736,0.189, + -1.5784,2.0736,0.189, -1.797466,2.073326,0.189, -1.799246,2.048152,0.144, + -1.800455,2.031069,0.081, -1.5972,2.0313,0.081, -1.5896,2.0484,0.144, + -1.5896,2.0484,0.144, -1.799246,2.048152,0.144, -1.800455,2.031069,0.081, + -1.8009,2.024775,0, -1.6,2.025,0, -1.5972,2.0313,0.081, + -1.5972,2.0313,0.081, -1.800455,2.031069,0.081, -1.8009,2.024775,0, + -2.03841,2.24015,0.081, -1.785445,2.243256,0.081, -1.785,2.24955,0, + -1.785,2.24955,0, -2.04,2.2464,0, -2.03841,2.24015,0.081, + -2.034093,2.223187,0.144, -1.786654,2.226173,0.144, -1.785445,2.243256,0.081, + -1.785445,2.243256,0.081, -2.03841,2.24015,0.081, -2.034093,2.223187,0.144, + -2.027731,2.198189,0.189, -1.788434,2.200999,0.189, -1.786654,2.226173,0.144, + -1.786654,2.226173,0.144, -2.034093,2.223187,0.144, -2.027731,2.198189,0.189, + -2.020006,2.167834,0.216, -1.790597,2.170429,0.216, -1.788434,2.200999,0.189, + -1.788434,2.200999,0.189, -2.027731,2.198189,0.189, -2.020006,2.167834,0.216, + -2.0116,2.1348,0.225, -1.79295,2.137163,0.225, -1.790597,2.170429,0.216, + -1.790597,2.170429,0.216, -2.020006,2.167834,0.216, -2.0116,2.1348,0.225, + -2.003194,2.101766,0.216, -1.795303,2.103896,0.216, -1.79295,2.137163,0.225, + -1.79295,2.137163,0.225, -2.0116,2.1348,0.225, -2.003194,2.101766,0.216, + -1.995469,2.071411,0.189, -1.797466,2.073326,0.189, -1.795303,2.103896,0.216, + -1.795303,2.103896,0.216, -2.003194,2.101766,0.216, -1.995469,2.071411,0.189, + -1.989107,2.046413,0.144, -1.799246,2.048152,0.144, -1.797466,2.073326,0.189, + -1.797466,2.073326,0.189, -1.995469,2.071411,0.189, -1.989107,2.046413,0.144, + -1.98479,2.02945,0.081, -1.800455,2.031069,0.081, -1.799246,2.048152,0.144, + -1.799246,2.048152,0.144, -1.989107,2.046413,0.144, -1.98479,2.02945,0.081, + -1.9832,2.0232,0, -1.8009,2.024775,0, -1.800455,2.031069,0.081, + -1.800455,2.031069,0.081, -1.98479,2.02945,0.081, -1.9832,2.0232,0, + -2.261676,2.23172,0.081, -2.03841,2.24015,0.081, -2.04,2.2464,0, + -2.04,2.2464,0, -2.265,2.23785,0, -2.261676,2.23172,0.081, + -2.252655,2.215082,0.144, -2.034093,2.223187,0.144, -2.03841,2.24015,0.081, + -2.03841,2.24015,0.081, -2.261676,2.23172,0.081, -2.252655,2.215082,0.144, + -2.239361,2.190562,0.189, -2.027731,2.198189,0.189, -2.034093,2.223187,0.144, + -2.034093,2.223187,0.144, -2.252655,2.215082,0.144, -2.239361,2.190562,0.189, + -2.223218,2.160788,0.216, -2.020006,2.167834,0.216, -2.027731,2.198189,0.189, + -2.027731,2.198189,0.189, -2.239361,2.190562,0.189, -2.223218,2.160788,0.216, + -2.20565,2.128387,0.225, -2.0116,2.1348,0.225, -2.020006,2.167834,0.216, + -2.020006,2.167834,0.216, -2.223218,2.160788,0.216, -2.20565,2.128387,0.225, + -2.188082,2.095987,0.216, -2.003194,2.101766,0.216, -2.0116,2.1348,0.225, + -2.0116,2.1348,0.225, -2.20565,2.128387,0.225, -2.188082,2.095987,0.216, + -2.171939,2.066213,0.189, -1.995469,2.071411,0.189, -2.003194,2.101766,0.216, + -2.003194,2.101766,0.216, -2.188082,2.095987,0.216, -2.171939,2.066213,0.189, + -2.158645,2.041693,0.144, -1.989107,2.046413,0.144, -1.995469,2.071411,0.189, + -1.995469,2.071411,0.189, -2.171939,2.066213,0.189, -2.158645,2.041693,0.144, + -2.149624,2.025055,0.081, -1.98479,2.02945,0.081, -1.989107,2.046413,0.144, + -1.989107,2.046413,0.144, -2.158645,2.041693,0.144, -2.149624,2.025055,0.081, + -2.1463,2.018925,0, -1.9832,2.0232,0, -1.98479,2.02945,0.081, + -1.98479,2.02945,0.081, -2.149624,2.025055,0.081, -2.1463,2.018925,0, + -2.455229,2.215303,0.081, -2.261676,2.23172,0.081, -2.265,2.23785,0, + -2.265,2.23785,0, -2.46,2.2212,0, -2.455229,2.215303,0.081, + -2.442278,2.199298,0.144, -2.252655,2.215082,0.144, -2.261676,2.23172,0.081, + -2.261676,2.23172,0.081, -2.455229,2.215303,0.081, -2.442278,2.199298,0.144, + -2.423194,2.17571,0.189, -2.239361,2.190562,0.189, -2.252655,2.215082,0.144, + -2.252655,2.215082,0.144, -2.442278,2.199298,0.144, -2.423194,2.17571,0.189, + -2.400019,2.147069,0.216, -2.223218,2.160788,0.216, -2.239361,2.190562,0.189, + -2.239361,2.190562,0.189, -2.423194,2.17571,0.189, -2.400019,2.147069,0.216, + -2.3748,2.1159,0.225, -2.20565,2.128387,0.225, -2.223218,2.160788,0.216, + -2.223218,2.160788,0.216, -2.400019,2.147069,0.216, -2.3748,2.1159,0.225, + -2.349581,2.084731,0.216, -2.188082,2.095987,0.216, -2.20565,2.128387,0.225, + -2.20565,2.128387,0.225, -2.3748,2.1159,0.225, -2.349581,2.084731,0.216, + -2.326406,2.05609,0.189, -2.171939,2.066213,0.189, -2.188082,2.095987,0.216, + -2.188082,2.095987,0.216, -2.349581,2.084731,0.216, -2.326406,2.05609,0.189, + -2.307322,2.032502,0.144, -2.158645,2.041693,0.144, -2.171939,2.066213,0.189, + -2.171939,2.066213,0.189, -2.326406,2.05609,0.189, -2.307322,2.032502,0.144, + -2.294371,2.016497,0.081, -2.149624,2.025055,0.081, -2.158645,2.041693,0.144, + -2.158645,2.041693,0.144, -2.307322,2.032502,0.144, -2.294371,2.016497,0.081, + -2.2896,2.0106,0, -2.1463,2.018925,0, -2.149624,2.025055,0.081, + -2.149624,2.025055,0.081, -2.294371,2.016497,0.081, -2.2896,2.0106,0, + -2.61905,2.188238,0.081, -2.455229,2.215303,0.081, -2.46,2.2212,0, + -2.46,2.2212,0, -2.625,2.19375,0, -2.61905,2.188238,0.081, + -2.6029,2.173275,0.144, -2.442278,2.199298,0.144, -2.455229,2.215303,0.081, + -2.455229,2.215303,0.081, -2.61905,2.188238,0.081, -2.6029,2.173275,0.144, + -2.5791,2.151225,0.189, -2.423194,2.17571,0.189, -2.442278,2.199298,0.144, + -2.442278,2.199298,0.144, -2.6029,2.173275,0.144, -2.5791,2.151225,0.189, + -2.5502,2.12445,0.216, -2.400019,2.147069,0.216, -2.423194,2.17571,0.189, + -2.423194,2.17571,0.189, -2.5791,2.151225,0.189, -2.5502,2.12445,0.216, + -2.51875,2.095312,0.225, -2.3748,2.1159,0.225, -2.400019,2.147069,0.216, + -2.400019,2.147069,0.216, -2.5502,2.12445,0.216, -2.51875,2.095312,0.225, + -2.4873,2.066175,0.216, -2.349581,2.084731,0.216, -2.3748,2.1159,0.225, + -2.3748,2.1159,0.225, -2.51875,2.095312,0.225, -2.4873,2.066175,0.216, + -2.4584,2.0394,0.189, -2.326406,2.05609,0.189, -2.349581,2.084731,0.216, + -2.349581,2.084731,0.216, -2.4873,2.066175,0.216, -2.4584,2.0394,0.189, + -2.4346,2.01735,0.144, -2.307322,2.032502,0.144, -2.326406,2.05609,0.189, + -2.326406,2.05609,0.189, -2.4584,2.0394,0.189, -2.4346,2.01735,0.144, + -2.41845,2.002388,0.081, -2.294371,2.016497,0.081, -2.307322,2.032502,0.144, + -2.307322,2.032502,0.144, -2.4346,2.01735,0.144, -2.41845,2.002388,0.081, + -2.4125,1.996875,0, -2.2896,2.0106,0, -2.294371,2.016497,0.081, + -2.294371,2.016497,0.081, -2.41845,2.002388,0.081, -2.4125,1.996875,0, + -2.753123,2.147861,0.081, -2.61905,2.188238,0.081, -2.625,2.19375,0, + -2.625,2.19375,0, -2.76,2.1528,0, -2.753123,2.147861,0.081, + -2.734458,2.134454,0.144, -2.6029,2.173275,0.144, -2.61905,2.188238,0.081, + -2.61905,2.188238,0.081, -2.753123,2.147861,0.081, -2.734458,2.134454,0.144, + -2.70695,2.114698,0.189, -2.5791,2.151225,0.189, -2.6029,2.173275,0.144, + -2.6029,2.173275,0.144, -2.734458,2.134454,0.144, -2.70695,2.114698,0.189, + -2.673549,2.090707,0.216, -2.5502,2.12445,0.216, -2.5791,2.151225,0.189, + -2.5791,2.151225,0.189, -2.70695,2.114698,0.189, -2.673549,2.090707,0.216, + -2.6372,2.0646,0.225, -2.51875,2.095312,0.225, -2.5502,2.12445,0.216, + -2.5502,2.12445,0.216, -2.673549,2.090707,0.216, -2.6372,2.0646,0.225, + -2.600851,2.038493,0.216, -2.4873,2.066175,0.216, -2.51875,2.095312,0.225, + -2.51875,2.095312,0.225, -2.6372,2.0646,0.225, -2.600851,2.038493,0.216, + -2.56745,2.014502,0.189, -2.4584,2.0394,0.189, -2.4873,2.066175,0.216, + -2.4873,2.066175,0.216, -2.600851,2.038493,0.216, -2.56745,2.014502,0.189, + -2.539942,1.994746,0.144, -2.4346,2.01735,0.144, -2.4584,2.0394,0.189, + -2.4584,2.0394,0.189, -2.56745,2.014502,0.189, -2.539942,1.994746,0.144, + -2.521277,1.981339,0.081, -2.41845,2.002388,0.081, -2.4346,2.01735,0.144, + -2.4346,2.01735,0.144, -2.539942,1.994746,0.144, -2.521277,1.981339,0.081, + -2.5144,1.9764,0, -2.4125,1.996875,0, -2.41845,2.002388,0.081, + -2.41845,2.002388,0.081, -2.521277,1.981339,0.081, -2.5144,1.9764,0, + -2.857432,2.091511,0.081, -2.753123,2.147861,0.081, -2.76,2.1528,0, + -2.76,2.1528,0, -2.865,2.09565,0, -2.857432,2.091511,0.081, + -2.836889,2.080276,0.144, -2.734458,2.134454,0.144, -2.753123,2.147861,0.081, + -2.753123,2.147861,0.081, -2.857432,2.091511,0.081, -2.836889,2.080276,0.144, + -2.806615,2.06372,0.189, -2.70695,2.114698,0.189, -2.734458,2.134454,0.144, + -2.734458,2.134454,0.144, -2.836889,2.080276,0.144, -2.806615,2.06372,0.189, + -2.769854,2.043616,0.216, -2.673549,2.090707,0.216, -2.70695,2.114698,0.189, + -2.70695,2.114698,0.189, -2.806615,2.06372,0.189, -2.769854,2.043616,0.216, + -2.72985,2.021737,0.225, -2.6372,2.0646,0.225, -2.673549,2.090707,0.216, + -2.673549,2.090707,0.216, -2.769854,2.043616,0.216, -2.72985,2.021737,0.225, + -2.689846,1.999859,0.216, -2.600851,2.038493,0.216, -2.6372,2.0646,0.225, + -2.6372,2.0646,0.225, -2.72985,2.021737,0.225, -2.689846,1.999859,0.216, + -2.653085,1.979755,0.189, -2.56745,2.014502,0.189, -2.600851,2.038493,0.216, + -2.600851,2.038493,0.216, -2.689846,1.999859,0.216, -2.653085,1.979755,0.189, + -2.622811,1.963199,0.144, -2.539942,1.994746,0.144, -2.56745,2.014502,0.189, + -2.56745,2.014502,0.189, -2.653085,1.979755,0.189, -2.622811,1.963199,0.144, + -2.602268,1.951964,0.081, -2.521277,1.981339,0.081, -2.539942,1.994746,0.144, + -2.539942,1.994746,0.144, -2.622811,1.963199,0.144, -2.602268,1.951964,0.081, + -2.5947,1.947825,0, -2.5144,1.9764,0, -2.521277,1.981339,0.081, + -2.521277,1.981339,0.081, -2.602268,1.951964,0.081, -2.5947,1.947825,0, + -2.931958,2.016526,0.081, -2.857432,2.091511,0.081, -2.865,2.09565,0, + -2.865,2.09565,0, -2.94,2.0196,0, -2.931958,2.016526,0.081, + -2.910131,2.008181,0.144, -2.836889,2.080276,0.144, -2.857432,2.091511,0.081, + -2.857432,2.091511,0.081, -2.931958,2.016526,0.081, -2.910131,2.008181,0.144, + -2.877965,1.995883,0.189, -2.806615,2.06372,0.189, -2.836889,2.080276,0.144, + -2.836889,2.080276,0.144, -2.910131,2.008181,0.144, -2.877965,1.995883,0.189, + -2.838906,1.98095,0.216, -2.769854,2.043616,0.216, -2.806615,2.06372,0.189, + -2.806615,2.06372,0.189, -2.877965,1.995883,0.189, -2.838906,1.98095,0.216, + -2.7964,1.9647,0.225, -2.72985,2.021737,0.225, -2.769854,2.043616,0.216, + -2.769854,2.043616,0.216, -2.838906,1.98095,0.216, -2.7964,1.9647,0.225, + -2.753894,1.94845,0.216, -2.689846,1.999859,0.216, -2.72985,2.021737,0.225, + -2.72985,2.021737,0.225, -2.7964,1.9647,0.225, -2.753894,1.94845,0.216, + -2.714835,1.933517,0.189, -2.653085,1.979755,0.189, -2.689846,1.999859,0.216, + -2.689846,1.999859,0.216, -2.753894,1.94845,0.216, -2.714835,1.933517,0.189, + -2.682669,1.921219,0.144, -2.622811,1.963199,0.144, -2.653085,1.979755,0.189, + -2.653085,1.979755,0.189, -2.714835,1.933517,0.189, -2.682669,1.921219,0.144, + -2.660842,1.912874,0.081, -2.602268,1.951964,0.081, -2.622811,1.963199,0.144, + -2.622811,1.963199,0.144, -2.682669,1.921219,0.144, -2.660842,1.912874,0.081, + -2.6528,1.9098,0, -2.5947,1.947825,0, -2.602268,1.951964,0.081, + -2.602268,1.951964,0.081, -2.660842,1.912874,0.081, -2.6528,1.9098,0, + -2.976687,1.920243,0.081, -2.931958,2.016526,0.081, -2.94,2.0196,0, + -2.94,2.0196,0, -2.985,1.92195,0, -2.976687,1.920243,0.081, + -2.954122,1.915609,0.144, -2.910131,2.008181,0.144, -2.931958,2.016526,0.081, + -2.931958,2.016526,0.081, -2.976687,1.920243,0.081, -2.954122,1.915609,0.144, + -2.92087,1.908779,0.189, -2.877965,1.995883,0.189, -2.910131,2.008181,0.144, + -2.910131,2.008181,0.144, -2.954122,1.915609,0.144, -2.92087,1.908779,0.189, + -2.880491,1.900487,0.216, -2.838906,1.98095,0.216, -2.877965,1.995883,0.189, + -2.877965,1.995883,0.189, -2.92087,1.908779,0.189, -2.880491,1.900487,0.216, + -2.83655,1.891463,0.225, -2.7964,1.9647,0.225, -2.838906,1.98095,0.216, + -2.838906,1.98095,0.216, -2.880491,1.900487,0.216, -2.83655,1.891463,0.225, + -2.792609,1.882438,0.216, -2.753894,1.94845,0.216, -2.7964,1.9647,0.225, + -2.7964,1.9647,0.225, -2.83655,1.891463,0.225, -2.792609,1.882438,0.216, + -2.75223,1.874146,0.189, -2.714835,1.933517,0.189, -2.753894,1.94845,0.216, + -2.753894,1.94845,0.216, -2.792609,1.882438,0.216, -2.75223,1.874146,0.189, + -2.718978,1.867316,0.144, -2.682669,1.921219,0.144, -2.714835,1.933517,0.189, + -2.714835,1.933517,0.189, -2.75223,1.874146,0.189, -2.718978,1.867316,0.144, + -2.696413,1.862682,0.081, -2.660842,1.912874,0.081, -2.682669,1.921219,0.144, + -2.682669,1.921219,0.144, -2.718978,1.867316,0.144, -2.696413,1.862682,0.081, + -2.6881,1.860975,0, -2.6528,1.9098,0, -2.660842,1.912874,0.081, + -2.660842,1.912874,0.081, -2.696413,1.862682,0.081, -2.6881,1.860975,0, + -2.9916,1.8,0.081, -2.976687,1.920243,0.081, -2.985,1.92195,0, + -2.985,1.92195,0, -3,1.8,0, -2.9916,1.8,0.081, + -2.9688,1.8,0.144, -2.954122,1.915609,0.144, -2.976687,1.920243,0.081, + -2.976687,1.920243,0.081, -2.9916,1.8,0.081, -2.9688,1.8,0.144, + -2.9352,1.8,0.189, -2.92087,1.908779,0.189, -2.954122,1.915609,0.144, + -2.954122,1.915609,0.144, -2.9688,1.8,0.144, -2.9352,1.8,0.189, + -2.8944,1.8,0.216, -2.880491,1.900487,0.216, -2.92087,1.908779,0.189, + -2.92087,1.908779,0.189, -2.9352,1.8,0.189, -2.8944,1.8,0.216, + -2.85,1.8,0.225, -2.83655,1.891463,0.225, -2.880491,1.900487,0.216, + -2.880491,1.900487,0.216, -2.8944,1.8,0.216, -2.85,1.8,0.225, + -2.8056,1.8,0.216, -2.792609,1.882438,0.216, -2.83655,1.891463,0.225, + -2.83655,1.891463,0.225, -2.85,1.8,0.225, -2.8056,1.8,0.216, + -2.7648,1.8,0.189, -2.75223,1.874146,0.189, -2.792609,1.882438,0.216, + -2.792609,1.882438,0.216, -2.8056,1.8,0.216, -2.7648,1.8,0.189, + -2.7312,1.8,0.144, -2.718978,1.867316,0.144, -2.75223,1.874146,0.189, + -2.75223,1.874146,0.189, -2.7648,1.8,0.189, -2.7312,1.8,0.144, + -2.7084,1.8,0.081, -2.696413,1.862682,0.081, -2.718978,1.867316,0.144, + -2.718978,1.867316,0.144, -2.7312,1.8,0.144, -2.7084,1.8,0.081, + -2.7,1.8,0, -2.6881,1.860975,0, -2.696413,1.862682,0.081, + -2.696413,1.862682,0.081, -2.7084,1.8,0.081, -2.7,1.8,0, + -2.702175,1.724519,-0.081, -2.7084,1.8,-0.081, -2.7,1.8,0, + -2.7,1.8,0, -2.6939,1.7262,0, -2.702175,1.724519,-0.081, + -2.724637,1.719956,-0.144, -2.7312,1.8,-0.144, -2.7084,1.8,-0.081, + -2.7084,1.8,-0.081, -2.702175,1.724519,-0.081, -2.724637,1.719956,-0.144, + -2.757739,1.713232,-0.189, -2.7648,1.8,-0.189, -2.7312,1.8,-0.144, + -2.7312,1.8,-0.144, -2.724637,1.719956,-0.144, -2.757739,1.713232,-0.189, + -2.797934,1.705067,-0.216, -2.8056,1.8,-0.216, -2.7648,1.8,-0.189, + -2.7648,1.8,-0.189, -2.757739,1.713232,-0.189, -2.797934,1.705067,-0.216, + -2.841675,1.696181,-0.225, -2.85,1.8,-0.225, -2.8056,1.8,-0.216, + -2.8056,1.8,-0.216, -2.797934,1.705067,-0.216, -2.841675,1.696181,-0.225, + -2.885416,1.687296,-0.216, -2.8944,1.8,-0.216, -2.85,1.8,-0.225, + -2.85,1.8,-0.225, -2.841675,1.696181,-0.225, -2.885416,1.687296,-0.216, + -2.925611,1.679131,-0.189, -2.9352,1.8,-0.189, -2.8944,1.8,-0.216, + -2.8944,1.8,-0.216, -2.885416,1.687296,-0.216, -2.925611,1.679131,-0.189, + -2.958713,1.672406,-0.144, -2.9688,1.8,-0.144, -2.9352,1.8,-0.189, + -2.9352,1.8,-0.189, -2.925611,1.679131,-0.189, -2.958713,1.672406,-0.144, + -2.981175,1.667844,-0.081, -2.9916,1.8,-0.081, -2.9688,1.8,-0.144, + -2.9688,1.8,-0.144, -2.958713,1.672406,-0.144, -2.981175,1.667844,-0.081, + -2.98945,1.666162,0, -3,1.8,0, -2.9916,1.8,-0.081, + -2.9916,1.8,-0.081, -2.981175,1.667844,-0.081, -2.98945,1.666162,0, + -2.683107,1.63861,-0.081, -2.702175,1.724519,-0.081, -2.6939,1.7262,0, + -2.6939,1.7262,0, -2.6752,1.6416,0, -2.683107,1.63861,-0.081, + -2.70457,1.630493,-0.144, -2.724637,1.719956,-0.144, -2.702175,1.724519,-0.081, + -2.702175,1.724519,-0.081, -2.683107,1.63861,-0.081, -2.70457,1.630493,-0.144, + -2.736198,1.618531,-0.189, -2.757739,1.713232,-0.189, -2.724637,1.719956,-0.144, + -2.724637,1.719956,-0.144, -2.70457,1.630493,-0.144, -2.736198,1.618531,-0.189, + -2.774605,1.604006,-0.216, -2.797934,1.705067,-0.216, -2.757739,1.713232,-0.189, + -2.757739,1.713232,-0.189, -2.736198,1.618531,-0.189, -2.774605,1.604006,-0.216, + -2.8164,1.5882,-0.225, -2.841675,1.696181,-0.225, -2.797934,1.705067,-0.216, + -2.797934,1.705067,-0.216, -2.774605,1.604006,-0.216, -2.8164,1.5882,-0.225, + -2.858195,1.572394,-0.216, -2.885416,1.687296,-0.216, -2.841675,1.696181,-0.225, + -2.841675,1.696181,-0.225, -2.8164,1.5882,-0.225, -2.858195,1.572394,-0.216, + -2.896602,1.557869,-0.189, -2.925611,1.679131,-0.189, -2.885416,1.687296,-0.216, + -2.885416,1.687296,-0.216, -2.858195,1.572394,-0.216, -2.896602,1.557869,-0.189, + -2.92823,1.545907,-0.144, -2.958713,1.672406,-0.144, -2.925611,1.679131,-0.189, + -2.925611,1.679131,-0.189, -2.896602,1.557869,-0.189, -2.92823,1.545907,-0.144, + -2.949693,1.53779,-0.081, -2.981175,1.667844,-0.081, -2.958713,1.672406,-0.144, + -2.958713,1.672406,-0.144, -2.92823,1.545907,-0.144, -2.949693,1.53779,-0.081, + -2.9576,1.5348,0, -2.98945,1.666162,0, -2.981175,1.667844,-0.081, + -2.981175,1.667844,-0.081, -2.949693,1.53779,-0.081, -2.9576,1.5348,0, + -2.650604,1.544903,-0.081, -2.683107,1.63861,-0.081, -2.6752,1.6416,0, + -2.6752,1.6416,0, -2.6433,1.5489,0, -2.650604,1.544903,-0.081, + -2.670428,1.534053,-0.144, -2.70457,1.630493,-0.144, -2.683107,1.63861,-0.081, + -2.683107,1.63861,-0.081, -2.650604,1.544903,-0.081, -2.670428,1.534053,-0.144, + -2.699644,1.518063,-0.189, -2.736198,1.618531,-0.189, -2.70457,1.630493,-0.144, + -2.70457,1.630493,-0.144, -2.670428,1.534053,-0.144, -2.699644,1.518063,-0.189, + -2.735119,1.498648,-0.216, -2.774605,1.604006,-0.216, -2.736198,1.618531,-0.189, + -2.736198,1.618531,-0.189, -2.699644,1.518063,-0.189, -2.735119,1.498648,-0.216, + -2.773725,1.477519,-0.225, -2.8164,1.5882,-0.225, -2.774605,1.604006,-0.216, + -2.774605,1.604006,-0.216, -2.735119,1.498648,-0.216, -2.773725,1.477519,-0.225, + -2.812331,1.45639,-0.216, -2.858195,1.572394,-0.216, -2.8164,1.5882,-0.225, + -2.8164,1.5882,-0.225, -2.773725,1.477519,-0.225, -2.812331,1.45639,-0.216, + -2.847806,1.436974,-0.189, -2.896602,1.557869,-0.189, -2.858195,1.572394,-0.216, + -2.858195,1.572394,-0.216, -2.812331,1.45639,-0.216, -2.847806,1.436974,-0.189, + -2.877022,1.420985,-0.144, -2.92823,1.545907,-0.144, -2.896602,1.557869,-0.189, + -2.896602,1.557869,-0.189, -2.847806,1.436974,-0.189, -2.877022,1.420985,-0.144, + -2.896846,1.410135,-0.081, -2.949693,1.53779,-0.081, -2.92823,1.545907,-0.144, + -2.92823,1.545907,-0.144, -2.877022,1.420985,-0.144, -2.896846,1.410135,-0.081, + -2.90415,1.406137,0, -2.9576,1.5348,0, -2.949693,1.53779,-0.081, + -2.949693,1.53779,-0.081, -2.896846,1.410135,-0.081, -2.90415,1.406137,0, + -2.604074,1.446029,-0.081, -2.650604,1.544903,-0.081, -2.6433,1.5489,0, + -2.6433,1.5489,0, -2.5976,1.4508,0, -2.604074,1.446029,-0.081, + -2.621645,1.433078,-0.144, -2.670428,1.534053,-0.144, -2.650604,1.544903,-0.081, + -2.650604,1.544903,-0.081, -2.604074,1.446029,-0.081, -2.621645,1.433078,-0.144, + -2.647539,1.413994,-0.189, -2.699644,1.518063,-0.189, -2.670428,1.534053,-0.144, + -2.670428,1.534053,-0.144, -2.621645,1.433078,-0.144, -2.647539,1.413994,-0.189, + -2.678982,1.390819,-0.216, -2.735119,1.498648,-0.216, -2.699644,1.518063,-0.189, + -2.699644,1.518063,-0.189, -2.647539,1.413994,-0.189, -2.678982,1.390819,-0.216, + -2.7132,1.3656,-0.225, -2.773725,1.477519,-0.225, -2.735119,1.498648,-0.216, + -2.735119,1.498648,-0.216, -2.678982,1.390819,-0.216, -2.7132,1.3656,-0.225, + -2.747418,1.340381,-0.216, -2.812331,1.45639,-0.216, -2.773725,1.477519,-0.225, + -2.773725,1.477519,-0.225, -2.7132,1.3656,-0.225, -2.747418,1.340381,-0.216, + -2.778861,1.317206,-0.189, -2.847806,1.436974,-0.189, -2.812331,1.45639,-0.216, + -2.812331,1.45639,-0.216, -2.747418,1.340381,-0.216, -2.778861,1.317206,-0.189, + -2.804755,1.298122,-0.144, -2.877022,1.420985,-0.144, -2.847806,1.436974,-0.189, + -2.847806,1.436974,-0.189, -2.778861,1.317206,-0.189, -2.804755,1.298122,-0.144, + -2.822326,1.285171,-0.081, -2.896846,1.410135,-0.081, -2.877022,1.420985,-0.144, + -2.877022,1.420985,-0.144, -2.804755,1.298122,-0.144, -2.822326,1.285171,-0.081, + -2.8288,1.2804,0, -2.90415,1.406137,0, -2.896846,1.410135,-0.081, + -2.896846,1.410135,-0.081, -2.822326,1.285171,-0.081, -2.8288,1.2804,0, + -2.542925,1.344619,-0.081, -2.604074,1.446029,-0.081, -2.5976,1.4508,0, + -2.5976,1.4508,0, -2.5375,1.35,0, -2.542925,1.344619,-0.081, + -2.55765,1.330013,-0.144, -2.621645,1.433078,-0.144, -2.604074,1.446029,-0.081, + -2.604074,1.446029,-0.081, -2.542925,1.344619,-0.081, -2.55765,1.330013,-0.144, + -2.57935,1.308488,-0.189, -2.647539,1.413994,-0.189, -2.621645,1.433078,-0.144, + -2.621645,1.433078,-0.144, -2.55765,1.330013,-0.144, -2.57935,1.308488,-0.189, + -2.6057,1.28235,-0.216, -2.678982,1.390819,-0.216, -2.647539,1.413994,-0.189, + -2.647539,1.413994,-0.189, -2.57935,1.308488,-0.189, -2.6057,1.28235,-0.216, + -2.634375,1.253906,-0.225, -2.7132,1.3656,-0.225, -2.678982,1.390819,-0.216, + -2.678982,1.390819,-0.216, -2.6057,1.28235,-0.216, -2.634375,1.253906,-0.225, + -2.66305,1.225463,-0.216, -2.747418,1.340381,-0.216, -2.7132,1.3656,-0.225, + -2.7132,1.3656,-0.225, -2.634375,1.253906,-0.225, -2.66305,1.225463,-0.216, + -2.6894,1.199325,-0.189, -2.778861,1.317206,-0.189, -2.747418,1.340381,-0.216, + -2.747418,1.340381,-0.216, -2.66305,1.225463,-0.216, -2.6894,1.199325,-0.189, + -2.7111,1.1778,-0.144, -2.804755,1.298122,-0.144, -2.778861,1.317206,-0.189, + -2.778861,1.317206,-0.189, -2.6894,1.199325,-0.189, -2.7111,1.1778,-0.144, + -2.725825,1.163194,-0.081, -2.822326,1.285171,-0.081, -2.804755,1.298122,-0.144, + -2.804755,1.298122,-0.144, -2.7111,1.1778,-0.144, -2.725825,1.163194,-0.081, + -2.73125,1.157813,0, -2.8288,1.2804,0, -2.822326,1.285171,-0.081, + -2.822326,1.285171,-0.081, -2.725825,1.163194,-0.081, -2.73125,1.157813,0, + -2.466566,1.243303,-0.081, -2.542925,1.344619,-0.081, -2.5375,1.35,0, + -2.5375,1.35,0, -2.4624,1.2492,0, -2.466566,1.243303,-0.081, + -2.477875,1.227298,-0.144, -2.55765,1.330013,-0.144, -2.542925,1.344619,-0.081, + -2.542925,1.344619,-0.081, -2.466566,1.243303,-0.081, -2.477875,1.227298,-0.144, + -2.494541,1.20371,-0.189, -2.57935,1.308488,-0.189, -2.55765,1.330013,-0.144, + -2.55765,1.330013,-0.144, -2.477875,1.227298,-0.144, -2.494541,1.20371,-0.189, + -2.514778,1.175069,-0.216, -2.6057,1.28235,-0.216, -2.57935,1.308488,-0.189, + -2.57935,1.308488,-0.189, -2.494541,1.20371,-0.189, -2.514778,1.175069,-0.216, + -2.5368,1.1439,-0.225, -2.634375,1.253906,-0.225, -2.6057,1.28235,-0.216, + -2.6057,1.28235,-0.216, -2.514778,1.175069,-0.216, -2.5368,1.1439,-0.225, + -2.558822,1.112731,-0.216, -2.66305,1.225463,-0.216, -2.634375,1.253906,-0.225, + -2.634375,1.253906,-0.225, -2.5368,1.1439,-0.225, -2.558822,1.112731,-0.216, + -2.579059,1.08409,-0.189, -2.6894,1.199325,-0.189, -2.66305,1.225463,-0.216, + -2.66305,1.225463,-0.216, -2.558822,1.112731,-0.216, -2.579059,1.08409,-0.189, + -2.595725,1.060502,-0.144, -2.7111,1.1778,-0.144, -2.6894,1.199325,-0.189, + -2.6894,1.199325,-0.189, -2.579059,1.08409,-0.189, -2.595725,1.060502,-0.144, + -2.607034,1.044497,-0.081, -2.725825,1.163194,-0.081, -2.7111,1.1778,-0.144, + -2.7111,1.1778,-0.144, -2.595725,1.060502,-0.144, -2.607034,1.044497,-0.081, + -2.6112,1.0386,0, -2.73125,1.157813,0, -2.725825,1.163194,-0.081, + -2.725825,1.163194,-0.081, -2.607034,1.044497,-0.081, -2.6112,1.0386,0, + -2.374406,1.144713,-0.081, -2.466566,1.243303,-0.081, -2.4624,1.2492,0, + -2.4624,1.2492,0, -2.3717,1.1511,0, -2.374406,1.144713,-0.081, + -2.381752,1.127376,-0.144, -2.477875,1.227298,-0.144, -2.466566,1.243303,-0.081, + -2.466566,1.243303,-0.081, -2.374406,1.144713,-0.081, -2.381752,1.127376,-0.144, + -2.392576,1.101828,-0.189, -2.494541,1.20371,-0.189, -2.477875,1.227298,-0.144, + -2.477875,1.227298,-0.144, -2.381752,1.127376,-0.144, -2.392576,1.101828,-0.189, + -2.405721,1.070804,-0.216, -2.514778,1.175069,-0.216, -2.494541,1.20371,-0.189, + -2.494541,1.20371,-0.189, -2.392576,1.101828,-0.189, -2.405721,1.070804,-0.216, + -2.420025,1.037044,-0.225, -2.5368,1.1439,-0.225, -2.514778,1.175069,-0.216, + -2.514778,1.175069,-0.216, -2.405721,1.070804,-0.216, -2.420025,1.037044,-0.225, + -2.434329,1.003283,-0.216, -2.558822,1.112731,-0.216, -2.5368,1.1439,-0.225, + -2.5368,1.1439,-0.225, -2.420025,1.037044,-0.225, -2.434329,1.003283,-0.216, + -2.447474,0.97226,-0.189, -2.579059,1.08409,-0.189, -2.558822,1.112731,-0.216, + -2.558822,1.112731,-0.216, -2.434329,1.003283,-0.216, -2.447474,0.97226,-0.189, + -2.458298,0.946711,-0.144, -2.595725,1.060502,-0.144, -2.579059,1.08409,-0.189, + -2.579059,1.08409,-0.189, -2.447474,0.97226,-0.189, -2.458298,0.946711,-0.144, + -2.465644,0.929375,-0.081, -2.607034,1.044497,-0.081, -2.595725,1.060502,-0.144, + -2.595725,1.060502,-0.144, -2.458298,0.946711,-0.144, -2.465644,0.929375,-0.081, + -2.46835,0.922987,0, -2.6112,1.0386,0, -2.607034,1.044497,-0.081, + -2.607034,1.044497,-0.081, -2.465644,0.929375,-0.081, -2.46835,0.922987,0, + -2.265853,1.051478,-0.081, -2.374406,1.144713,-0.081, -2.3717,1.1511,0, + -2.3717,1.1511,0, -2.2648,1.0584,0, -2.265853,1.051478,-0.081, + -2.26871,1.032691,-0.144, -2.381752,1.127376,-0.144, -2.374406,1.144713,-0.081, + -2.374406,1.144713,-0.081, -2.265853,1.051478,-0.081, -2.26871,1.032691,-0.144, + -2.272922,1.005005,-0.189, -2.392576,1.101828,-0.189, -2.381752,1.127376,-0.144, + -2.381752,1.127376,-0.144, -2.26871,1.032691,-0.144, -2.272922,1.005005,-0.189, + -2.278035,0.971386,-0.216, -2.405721,1.070804,-0.216, -2.392576,1.101828,-0.189, + -2.392576,1.101828,-0.189, -2.272922,1.005005,-0.189, -2.278035,0.971386,-0.216, + -2.2836,0.9348,-0.225, -2.420025,1.037044,-0.225, -2.405721,1.070804,-0.216, + -2.405721,1.070804,-0.216, -2.278035,0.971386,-0.216, -2.2836,0.9348,-0.225, + -2.289165,0.898214,-0.216, -2.434329,1.003283,-0.216, -2.420025,1.037044,-0.225, + -2.420025,1.037044,-0.225, -2.2836,0.9348,-0.225, -2.289165,0.898214,-0.216, + -2.294278,0.864595,-0.189, -2.447474,0.97226,-0.189, -2.434329,1.003283,-0.216, + -2.434329,1.003283,-0.216, -2.289165,0.898214,-0.216, -2.294278,0.864595,-0.189, + -2.29849,0.836909,-0.144, -2.458298,0.946711,-0.144, -2.447474,0.97226,-0.189, + -2.447474,0.97226,-0.189, -2.294278,0.864595,-0.189, -2.29849,0.836909,-0.144, + -2.301347,0.818122,-0.081, -2.465644,0.929375,-0.081, -2.458298,0.946711,-0.144, + -2.458298,0.946711,-0.144, -2.29849,0.836909,-0.144, -2.301347,0.818122,-0.081, + -2.3024,0.8112,0, -2.46835,0.922987,0, -2.465644,0.929375,-0.081, + -2.465644,0.929375,-0.081, -2.301347,0.818122,-0.081, -2.3024,0.8112,0, + -2.140315,0.966231,-0.081, -2.265853,1.051478,-0.081, -2.2648,1.0584,0, + -2.2648,1.0584,0, -2.1411,0.9738,0, -2.140315,0.966231,-0.081, + -2.138183,0.945685,-0.144, -2.26871,1.032691,-0.144, -2.265853,1.051478,-0.081, + -2.265853,1.051478,-0.081, -2.140315,0.966231,-0.081, -2.138183,0.945685,-0.144, + -2.135041,0.915407,-0.189, -2.272922,1.005005,-0.189, -2.26871,1.032691,-0.144, + -2.26871,1.032691,-0.144, -2.138183,0.945685,-0.144, -2.135041,0.915407,-0.189, + -2.131226,0.878641,-0.216, -2.278035,0.971386,-0.216, -2.272922,1.005005,-0.189, + -2.272922,1.005005,-0.189, -2.135041,0.915407,-0.189, -2.131226,0.878641,-0.216, + -2.127075,0.838631,-0.225, -2.2836,0.9348,-0.225, -2.278035,0.971386,-0.216, + -2.278035,0.971386,-0.216, -2.131226,0.878641,-0.216, -2.127075,0.838631,-0.225, + -2.122924,0.798621,-0.216, -2.289165,0.898214,-0.216, -2.2836,0.9348,-0.225, + -2.2836,0.9348,-0.225, -2.127075,0.838631,-0.225, -2.122924,0.798621,-0.216, + -2.119109,0.761855,-0.189, -2.294278,0.864595,-0.189, -2.289165,0.898214,-0.216, + -2.289165,0.898214,-0.216, -2.122924,0.798621,-0.216, -2.119109,0.761855,-0.189, + -2.115967,0.731578,-0.144, -2.29849,0.836909,-0.144, -2.294278,0.864595,-0.189, + -2.294278,0.864595,-0.189, -2.119109,0.761855,-0.189, -2.115967,0.731578,-0.144, + -2.113835,0.711032,-0.081, -2.301347,0.818122,-0.081, -2.29849,0.836909,-0.144, + -2.29849,0.836909,-0.144, -2.115967,0.731578,-0.144, -2.113835,0.711032,-0.081, + -2.11305,0.703463,0, -2.3024,0.8112,0, -2.301347,0.818122,-0.081, + -2.301347,0.818122,-0.081, -2.113835,0.711032,-0.081, -2.11305,0.703463,0, + -1.9972,0.8916,-0.081, -2.140315,0.966231,-0.081, -2.1411,0.9738,0, + -2.1411,0.9738,0, -2,0.9,0, -1.9972,0.8916,-0.081, + -1.9896,0.8688,-0.144, -2.138183,0.945685,-0.144, -2.140315,0.966231,-0.081, + -2.140315,0.966231,-0.081, -1.9972,0.8916,-0.081, -1.9896,0.8688,-0.144, + -1.9784,0.8352,-0.189, -2.135041,0.915407,-0.189, -2.138183,0.945685,-0.144, + -2.138183,0.945685,-0.144, -1.9896,0.8688,-0.144, -1.9784,0.8352,-0.189, + -1.9648,0.7944,-0.216, -2.131226,0.878641,-0.216, -2.135041,0.915407,-0.189, + -2.135041,0.915407,-0.189, -1.9784,0.8352,-0.189, -1.9648,0.7944,-0.216, + -1.95,0.75,-0.225, -2.127075,0.838631,-0.225, -2.131226,0.878641,-0.216, + -2.131226,0.878641,-0.216, -1.9648,0.7944,-0.216, -1.95,0.75,-0.225, + -1.9352,0.7056,-0.216, -2.122924,0.798621,-0.216, -2.127075,0.838631,-0.225, + -2.127075,0.838631,-0.225, -1.95,0.75,-0.225, -1.9352,0.7056,-0.216, + -1.9216,0.6648,-0.189, -2.119109,0.761855,-0.189, -2.122924,0.798621,-0.216, + -2.122924,0.798621,-0.216, -1.9352,0.7056,-0.216, -1.9216,0.6648,-0.189, + -1.9104,0.6312,-0.144, -2.115967,0.731578,-0.144, -2.119109,0.761855,-0.189, + -2.119109,0.761855,-0.189, -1.9216,0.6648,-0.189, -1.9104,0.6312,-0.144, + -1.9028,0.6084,-0.081, -2.113835,0.711032,-0.081, -2.115967,0.731578,-0.144, + -2.115967,0.731578,-0.144, -1.9104,0.6312,-0.144, -1.9028,0.6084,-0.081, + -1.9,0.6,0, -2.11305,0.703463,0, -2.113835,0.711032,-0.081, + -2.113835,0.711032,-0.081, -1.9028,0.6084,-0.081, -1.9,0.6,0, + -2.981175,1.667844,0.081, -2.9916,1.8,0.081, -3,1.8,0, + -3,1.8,0, -2.98945,1.666162,0, -2.981175,1.667844,0.081, + -2.958713,1.672406,0.144, -2.9688,1.8,0.144, -2.9916,1.8,0.081, + -2.9916,1.8,0.081, -2.981175,1.667844,0.081, -2.958713,1.672406,0.144, + -2.925611,1.679131,0.189, -2.9352,1.8,0.189, -2.9688,1.8,0.144, + -2.9688,1.8,0.144, -2.958713,1.672406,0.144, -2.925611,1.679131,0.189, + -2.885416,1.687296,0.216, -2.8944,1.8,0.216, -2.9352,1.8,0.189, + -2.9352,1.8,0.189, -2.925611,1.679131,0.189, -2.885416,1.687296,0.216, + -2.841675,1.696181,0.225, -2.85,1.8,0.225, -2.8944,1.8,0.216, + -2.8944,1.8,0.216, -2.885416,1.687296,0.216, -2.841675,1.696181,0.225, + -2.797934,1.705067,0.216, -2.8056,1.8,0.216, -2.85,1.8,0.225, + -2.85,1.8,0.225, -2.841675,1.696181,0.225, -2.797934,1.705067,0.216, + -2.757739,1.713232,0.189, -2.7648,1.8,0.189, -2.8056,1.8,0.216, + -2.8056,1.8,0.216, -2.797934,1.705067,0.216, -2.757739,1.713232,0.189, + -2.724637,1.719956,0.144, -2.7312,1.8,0.144, -2.7648,1.8,0.189, + -2.7648,1.8,0.189, -2.757739,1.713232,0.189, -2.724637,1.719956,0.144, + -2.702175,1.724519,0.081, -2.7084,1.8,0.081, -2.7312,1.8,0.144, + -2.7312,1.8,0.144, -2.724637,1.719956,0.144, -2.702175,1.724519,0.081, + -2.6939,1.7262,0, -2.7,1.8,0, -2.7084,1.8,0.081, + -2.7084,1.8,0.081, -2.702175,1.724519,0.081, -2.6939,1.7262,0, + -2.949693,1.53779,0.081, -2.981175,1.667844,0.081, -2.98945,1.666162,0, + -2.98945,1.666162,0, -2.9576,1.5348,0, -2.949693,1.53779,0.081, + -2.92823,1.545907,0.144, -2.958713,1.672406,0.144, -2.981175,1.667844,0.081, + -2.981175,1.667844,0.081, -2.949693,1.53779,0.081, -2.92823,1.545907,0.144, + -2.896602,1.557869,0.189, -2.925611,1.679131,0.189, -2.958713,1.672406,0.144, + -2.958713,1.672406,0.144, -2.92823,1.545907,0.144, -2.896602,1.557869,0.189, + -2.858195,1.572394,0.216, -2.885416,1.687296,0.216, -2.925611,1.679131,0.189, + -2.925611,1.679131,0.189, -2.896602,1.557869,0.189, -2.858195,1.572394,0.216, + -2.8164,1.5882,0.225, -2.841675,1.696181,0.225, -2.885416,1.687296,0.216, + -2.885416,1.687296,0.216, -2.858195,1.572394,0.216, -2.8164,1.5882,0.225, + -2.774605,1.604006,0.216, -2.797934,1.705067,0.216, -2.841675,1.696181,0.225, + -2.841675,1.696181,0.225, -2.8164,1.5882,0.225, -2.774605,1.604006,0.216, + -2.736198,1.618531,0.189, -2.757739,1.713232,0.189, -2.797934,1.705067,0.216, + -2.797934,1.705067,0.216, -2.774605,1.604006,0.216, -2.736198,1.618531,0.189, + -2.70457,1.630493,0.144, -2.724637,1.719956,0.144, -2.757739,1.713232,0.189, + -2.757739,1.713232,0.189, -2.736198,1.618531,0.189, -2.70457,1.630493,0.144, + -2.683107,1.63861,0.081, -2.702175,1.724519,0.081, -2.724637,1.719956,0.144, + -2.724637,1.719956,0.144, -2.70457,1.630493,0.144, -2.683107,1.63861,0.081, + -2.6752,1.6416,0, -2.6939,1.7262,0, -2.702175,1.724519,0.081, + -2.702175,1.724519,0.081, -2.683107,1.63861,0.081, -2.6752,1.6416,0, + -2.896846,1.410135,0.081, -2.949693,1.53779,0.081, -2.9576,1.5348,0, + -2.9576,1.5348,0, -2.90415,1.406137,0, -2.896846,1.410135,0.081, + -2.877022,1.420985,0.144, -2.92823,1.545907,0.144, -2.949693,1.53779,0.081, + -2.949693,1.53779,0.081, -2.896846,1.410135,0.081, -2.877022,1.420985,0.144, + -2.847806,1.436974,0.189, -2.896602,1.557869,0.189, -2.92823,1.545907,0.144, + -2.92823,1.545907,0.144, -2.877022,1.420985,0.144, -2.847806,1.436974,0.189, + -2.812331,1.45639,0.216, -2.858195,1.572394,0.216, -2.896602,1.557869,0.189, + -2.896602,1.557869,0.189, -2.847806,1.436974,0.189, -2.812331,1.45639,0.216, + -2.773725,1.477519,0.225, -2.8164,1.5882,0.225, -2.858195,1.572394,0.216, + -2.858195,1.572394,0.216, -2.812331,1.45639,0.216, -2.773725,1.477519,0.225, + -2.735119,1.498648,0.216, -2.774605,1.604006,0.216, -2.8164,1.5882,0.225, + -2.8164,1.5882,0.225, -2.773725,1.477519,0.225, -2.735119,1.498648,0.216, + -2.699644,1.518063,0.189, -2.736198,1.618531,0.189, -2.774605,1.604006,0.216, + -2.774605,1.604006,0.216, -2.735119,1.498648,0.216, -2.699644,1.518063,0.189, + -2.670428,1.534053,0.144, -2.70457,1.630493,0.144, -2.736198,1.618531,0.189, + -2.736198,1.618531,0.189, -2.699644,1.518063,0.189, -2.670428,1.534053,0.144, + -2.650604,1.544903,0.081, -2.683107,1.63861,0.081, -2.70457,1.630493,0.144, + -2.70457,1.630493,0.144, -2.670428,1.534053,0.144, -2.650604,1.544903,0.081, + -2.6433,1.5489,0, -2.6752,1.6416,0, -2.683107,1.63861,0.081, + -2.683107,1.63861,0.081, -2.650604,1.544903,0.081, -2.6433,1.5489,0, + -2.822326,1.285171,0.081, -2.896846,1.410135,0.081, -2.90415,1.406137,0, + -2.90415,1.406137,0, -2.8288,1.2804,0, -2.822326,1.285171,0.081, + -2.804755,1.298122,0.144, -2.877022,1.420985,0.144, -2.896846,1.410135,0.081, + -2.896846,1.410135,0.081, -2.822326,1.285171,0.081, -2.804755,1.298122,0.144, + -2.778861,1.317206,0.189, -2.847806,1.436974,0.189, -2.877022,1.420985,0.144, + -2.877022,1.420985,0.144, -2.804755,1.298122,0.144, -2.778861,1.317206,0.189, + -2.747418,1.340381,0.216, -2.812331,1.45639,0.216, -2.847806,1.436974,0.189, + -2.847806,1.436974,0.189, -2.778861,1.317206,0.189, -2.747418,1.340381,0.216, + -2.7132,1.3656,0.225, -2.773725,1.477519,0.225, -2.812331,1.45639,0.216, + -2.812331,1.45639,0.216, -2.747418,1.340381,0.216, -2.7132,1.3656,0.225, + -2.678982,1.390819,0.216, -2.735119,1.498648,0.216, -2.773725,1.477519,0.225, + -2.773725,1.477519,0.225, -2.7132,1.3656,0.225, -2.678982,1.390819,0.216, + -2.647539,1.413994,0.189, -2.699644,1.518063,0.189, -2.735119,1.498648,0.216, + -2.735119,1.498648,0.216, -2.678982,1.390819,0.216, -2.647539,1.413994,0.189, + -2.621645,1.433078,0.144, -2.670428,1.534053,0.144, -2.699644,1.518063,0.189, + -2.699644,1.518063,0.189, -2.647539,1.413994,0.189, -2.621645,1.433078,0.144, + -2.604074,1.446029,0.081, -2.650604,1.544903,0.081, -2.670428,1.534053,0.144, + -2.670428,1.534053,0.144, -2.621645,1.433078,0.144, -2.604074,1.446029,0.081, + -2.5976,1.4508,0, -2.6433,1.5489,0, -2.650604,1.544903,0.081, + -2.650604,1.544903,0.081, -2.604074,1.446029,0.081, -2.5976,1.4508,0, + -2.725825,1.163194,0.081, -2.822326,1.285171,0.081, -2.8288,1.2804,0, + -2.8288,1.2804,0, -2.73125,1.157813,0, -2.725825,1.163194,0.081, + -2.7111,1.1778,0.144, -2.804755,1.298122,0.144, -2.822326,1.285171,0.081, + -2.822326,1.285171,0.081, -2.725825,1.163194,0.081, -2.7111,1.1778,0.144, + -2.6894,1.199325,0.189, -2.778861,1.317206,0.189, -2.804755,1.298122,0.144, + -2.804755,1.298122,0.144, -2.7111,1.1778,0.144, -2.6894,1.199325,0.189, + -2.66305,1.225463,0.216, -2.747418,1.340381,0.216, -2.778861,1.317206,0.189, + -2.778861,1.317206,0.189, -2.6894,1.199325,0.189, -2.66305,1.225463,0.216, + -2.634375,1.253906,0.225, -2.7132,1.3656,0.225, -2.747418,1.340381,0.216, + -2.747418,1.340381,0.216, -2.66305,1.225463,0.216, -2.634375,1.253906,0.225, + -2.6057,1.28235,0.216, -2.678982,1.390819,0.216, -2.7132,1.3656,0.225, + -2.7132,1.3656,0.225, -2.634375,1.253906,0.225, -2.6057,1.28235,0.216, + -2.57935,1.308488,0.189, -2.647539,1.413994,0.189, -2.678982,1.390819,0.216, + -2.678982,1.390819,0.216, -2.6057,1.28235,0.216, -2.57935,1.308488,0.189, + -2.55765,1.330013,0.144, -2.621645,1.433078,0.144, -2.647539,1.413994,0.189, + -2.647539,1.413994,0.189, -2.57935,1.308488,0.189, -2.55765,1.330013,0.144, + -2.542925,1.344619,0.081, -2.604074,1.446029,0.081, -2.621645,1.433078,0.144, + -2.621645,1.433078,0.144, -2.55765,1.330013,0.144, -2.542925,1.344619,0.081, + -2.5375,1.35,0, -2.5976,1.4508,0, -2.604074,1.446029,0.081, + -2.604074,1.446029,0.081, -2.542925,1.344619,0.081, -2.5375,1.35,0, + -2.607034,1.044497,0.081, -2.725825,1.163194,0.081, -2.73125,1.157813,0, + -2.73125,1.157813,0, -2.6112,1.0386,0, -2.607034,1.044497,0.081, + -2.595725,1.060502,0.144, -2.7111,1.1778,0.144, -2.725825,1.163194,0.081, + -2.725825,1.163194,0.081, -2.607034,1.044497,0.081, -2.595725,1.060502,0.144, + -2.579059,1.08409,0.189, -2.6894,1.199325,0.189, -2.7111,1.1778,0.144, + -2.7111,1.1778,0.144, -2.595725,1.060502,0.144, -2.579059,1.08409,0.189, + -2.558822,1.112731,0.216, -2.66305,1.225463,0.216, -2.6894,1.199325,0.189, + -2.6894,1.199325,0.189, -2.579059,1.08409,0.189, -2.558822,1.112731,0.216, + -2.5368,1.1439,0.225, -2.634375,1.253906,0.225, -2.66305,1.225463,0.216, + -2.66305,1.225463,0.216, -2.558822,1.112731,0.216, -2.5368,1.1439,0.225, + -2.514778,1.175069,0.216, -2.6057,1.28235,0.216, -2.634375,1.253906,0.225, + -2.634375,1.253906,0.225, -2.5368,1.1439,0.225, -2.514778,1.175069,0.216, + -2.494541,1.20371,0.189, -2.57935,1.308488,0.189, -2.6057,1.28235,0.216, + -2.6057,1.28235,0.216, -2.514778,1.175069,0.216, -2.494541,1.20371,0.189, + -2.477875,1.227298,0.144, -2.55765,1.330013,0.144, -2.57935,1.308488,0.189, + -2.57935,1.308488,0.189, -2.494541,1.20371,0.189, -2.477875,1.227298,0.144, + -2.466566,1.243303,0.081, -2.542925,1.344619,0.081, -2.55765,1.330013,0.144, + -2.55765,1.330013,0.144, -2.477875,1.227298,0.144, -2.466566,1.243303,0.081, + -2.4624,1.2492,0, -2.5375,1.35,0, -2.542925,1.344619,0.081, + -2.542925,1.344619,0.081, -2.466566,1.243303,0.081, -2.4624,1.2492,0, + -2.465644,0.929375,0.081, -2.607034,1.044497,0.081, -2.6112,1.0386,0, + -2.6112,1.0386,0, -2.46835,0.922987,0, -2.465644,0.929375,0.081, + -2.458298,0.946711,0.144, -2.595725,1.060502,0.144, -2.607034,1.044497,0.081, + -2.607034,1.044497,0.081, -2.465644,0.929375,0.081, -2.458298,0.946711,0.144, + -2.447474,0.97226,0.189, -2.579059,1.08409,0.189, -2.595725,1.060502,0.144, + -2.595725,1.060502,0.144, -2.458298,0.946711,0.144, -2.447474,0.97226,0.189, + -2.434329,1.003283,0.216, -2.558822,1.112731,0.216, -2.579059,1.08409,0.189, + -2.579059,1.08409,0.189, -2.447474,0.97226,0.189, -2.434329,1.003283,0.216, + -2.420025,1.037044,0.225, -2.5368,1.1439,0.225, -2.558822,1.112731,0.216, + -2.558822,1.112731,0.216, -2.434329,1.003283,0.216, -2.420025,1.037044,0.225, + -2.405721,1.070804,0.216, -2.514778,1.175069,0.216, -2.5368,1.1439,0.225, + -2.5368,1.1439,0.225, -2.420025,1.037044,0.225, -2.405721,1.070804,0.216, + -2.392576,1.101828,0.189, -2.494541,1.20371,0.189, -2.514778,1.175069,0.216, + -2.514778,1.175069,0.216, -2.405721,1.070804,0.216, -2.392576,1.101828,0.189, + -2.381752,1.127376,0.144, -2.477875,1.227298,0.144, -2.494541,1.20371,0.189, + -2.494541,1.20371,0.189, -2.392576,1.101828,0.189, -2.381752,1.127376,0.144, + -2.374406,1.144713,0.081, -2.466566,1.243303,0.081, -2.477875,1.227298,0.144, + -2.477875,1.227298,0.144, -2.381752,1.127376,0.144, -2.374406,1.144713,0.081, + -2.3717,1.1511,0, -2.4624,1.2492,0, -2.466566,1.243303,0.081, + -2.466566,1.243303,0.081, -2.374406,1.144713,0.081, -2.3717,1.1511,0, + -2.301347,0.818122,0.081, -2.465644,0.929375,0.081, -2.46835,0.922987,0, + -2.46835,0.922987,0, -2.3024,0.8112,0, -2.301347,0.818122,0.081, + -2.29849,0.836909,0.144, -2.458298,0.946711,0.144, -2.465644,0.929375,0.081, + -2.465644,0.929375,0.081, -2.301347,0.818122,0.081, -2.29849,0.836909,0.144, + -2.294278,0.864595,0.189, -2.447474,0.97226,0.189, -2.458298,0.946711,0.144, + -2.458298,0.946711,0.144, -2.29849,0.836909,0.144, -2.294278,0.864595,0.189, + -2.289165,0.898214,0.216, -2.434329,1.003283,0.216, -2.447474,0.97226,0.189, + -2.447474,0.97226,0.189, -2.294278,0.864595,0.189, -2.289165,0.898214,0.216, + -2.2836,0.9348,0.225, -2.420025,1.037044,0.225, -2.434329,1.003283,0.216, + -2.434329,1.003283,0.216, -2.289165,0.898214,0.216, -2.2836,0.9348,0.225, + -2.278035,0.971386,0.216, -2.405721,1.070804,0.216, -2.420025,1.037044,0.225, + -2.420025,1.037044,0.225, -2.2836,0.9348,0.225, -2.278035,0.971386,0.216, + -2.272922,1.005005,0.189, -2.392576,1.101828,0.189, -2.405721,1.070804,0.216, + -2.405721,1.070804,0.216, -2.278035,0.971386,0.216, -2.272922,1.005005,0.189, + -2.26871,1.032691,0.144, -2.381752,1.127376,0.144, -2.392576,1.101828,0.189, + -2.392576,1.101828,0.189, -2.272922,1.005005,0.189, -2.26871,1.032691,0.144, + -2.265853,1.051478,0.081, -2.374406,1.144713,0.081, -2.381752,1.127376,0.144, + -2.381752,1.127376,0.144, -2.26871,1.032691,0.144, -2.265853,1.051478,0.081, + -2.2648,1.0584,0, -2.3717,1.1511,0, -2.374406,1.144713,0.081, + -2.374406,1.144713,0.081, -2.265853,1.051478,0.081, -2.2648,1.0584,0, + -2.113835,0.711032,0.081, -2.301347,0.818122,0.081, -2.3024,0.8112,0, + -2.3024,0.8112,0, -2.11305,0.703463,0, -2.113835,0.711032,0.081, + -2.115967,0.731578,0.144, -2.29849,0.836909,0.144, -2.301347,0.818122,0.081, + -2.301347,0.818122,0.081, -2.113835,0.711032,0.081, -2.115967,0.731578,0.144, + -2.119109,0.761855,0.189, -2.294278,0.864595,0.189, -2.29849,0.836909,0.144, + -2.29849,0.836909,0.144, -2.115967,0.731578,0.144, -2.119109,0.761855,0.189, + -2.122924,0.798621,0.216, -2.289165,0.898214,0.216, -2.294278,0.864595,0.189, + -2.294278,0.864595,0.189, -2.119109,0.761855,0.189, -2.122924,0.798621,0.216, + -2.127075,0.838631,0.225, -2.2836,0.9348,0.225, -2.289165,0.898214,0.216, + -2.289165,0.898214,0.216, -2.122924,0.798621,0.216, -2.127075,0.838631,0.225, + -2.131226,0.878641,0.216, -2.278035,0.971386,0.216, -2.2836,0.9348,0.225, + -2.2836,0.9348,0.225, -2.127075,0.838631,0.225, -2.131226,0.878641,0.216, + -2.135041,0.915407,0.189, -2.272922,1.005005,0.189, -2.278035,0.971386,0.216, + -2.278035,0.971386,0.216, -2.131226,0.878641,0.216, -2.135041,0.915407,0.189, + -2.138183,0.945685,0.144, -2.26871,1.032691,0.144, -2.272922,1.005005,0.189, + -2.272922,1.005005,0.189, -2.135041,0.915407,0.189, -2.138183,0.945685,0.144, + -2.140315,0.966231,0.081, -2.265853,1.051478,0.081, -2.26871,1.032691,0.144, + -2.26871,1.032691,0.144, -2.138183,0.945685,0.144, -2.140315,0.966231,0.081, + -2.1411,0.9738,0, -2.2648,1.0584,0, -2.265853,1.051478,0.081, + -2.265853,1.051478,0.081, -2.140315,0.966231,0.081, -2.1411,0.9738,0, + -1.9028,0.6084,0.081, -2.113835,0.711032,0.081, -2.11305,0.703463,0, + -2.11305,0.703463,0, -1.9,0.6,0, -1.9028,0.6084,0.081, + -1.9104,0.6312,0.144, -2.115967,0.731578,0.144, -2.113835,0.711032,0.081, + -2.113835,0.711032,0.081, -1.9028,0.6084,0.081, -1.9104,0.6312,0.144, + -1.9216,0.6648,0.189, -2.119109,0.761855,0.189, -2.115967,0.731578,0.144, + -2.115967,0.731578,0.144, -1.9104,0.6312,0.144, -1.9216,0.6648,0.189, + -1.9352,0.7056,0.216, -2.122924,0.798621,0.216, -2.119109,0.761855,0.189, + -2.119109,0.761855,0.189, -1.9216,0.6648,0.189, -1.9352,0.7056,0.216, + -1.95,0.75,0.225, -2.127075,0.838631,0.225, -2.122924,0.798621,0.216, + -2.122924,0.798621,0.216, -1.9352,0.7056,0.216, -1.95,0.75,0.225, + -1.9648,0.7944,0.216, -2.131226,0.878641,0.216, -2.127075,0.838631,0.225, + -2.127075,0.838631,0.225, -1.95,0.75,0.225, -1.9648,0.7944,0.216, + -1.9784,0.8352,0.189, -2.135041,0.915407,0.189, -2.131226,0.878641,0.216, + -2.131226,0.878641,0.216, -1.9648,0.7944,0.216, -1.9784,0.8352,0.189, + -1.9896,0.8688,0.144, -2.138183,0.945685,0.144, -2.135041,0.915407,0.189, + -2.135041,0.915407,0.189, -1.9784,0.8352,0.189, -1.9896,0.8688,0.144, + -1.9972,0.8916,0.081, -2.140315,0.966231,0.081, -2.138183,0.945685,0.144, + -2.138183,0.945685,0.144, -1.9896,0.8688,0.144, -1.9972,0.8916,0.081, + -2,0.9,0, -2.1411,0.9738,0, -2.140315,0.966231,0.081, + -2.140315,0.966231,0.081, -1.9972,0.8916,0.081, -2,0.9,0, + 1.939394,1.423221,-0.1751, 1.7,1.4019,-0.1782, 1.7,1.425,0, + 1.7,1.425,0, 1.9359,1.4442,0, 1.939394,1.423221,-0.1751, + 1.948879,1.366278,-0.31129, 1.7,1.3392,-0.3168, 1.7,1.4019,-0.1782, + 1.7,1.4019,-0.1782, 1.939394,1.423221,-0.1751, 1.948879,1.366278,-0.31129, + 1.962857,1.282362,-0.408568, 1.7,1.2468,-0.4158, 1.7,1.3392,-0.3168, + 1.7,1.3392,-0.3168, 1.948879,1.366278,-0.31129, 1.962857,1.282362,-0.408568, + 1.97983,1.180464,-0.466934, 1.7,1.1346,-0.4752, 1.7,1.2468,-0.4158, + 1.7,1.2468,-0.4158, 1.962857,1.282362,-0.408568, 1.97983,1.180464,-0.466934, + 1.9983,1.069575,-0.48639, 1.7,1.0125,-0.495, 1.7,1.1346,-0.4752, + 1.7,1.1346,-0.4752, 1.97983,1.180464,-0.466934, 1.9983,1.069575,-0.48639, + 2.01677,0.958686,-0.466934, 1.7,0.8904,-0.4752, 1.7,1.0125,-0.495, + 1.7,1.0125,-0.495, 1.9983,1.069575,-0.48639, 2.01677,0.958686,-0.466934, + 2.033743,0.856788,-0.408568, 1.7,0.7782,-0.4158, 1.7,0.8904,-0.4752, + 1.7,0.8904,-0.4752, 2.01677,0.958686,-0.466934, 2.033743,0.856788,-0.408568, + 2.047721,0.772872,-0.31129, 1.7,0.6858,-0.3168, 1.7,0.7782,-0.4158, + 1.7,0.7782,-0.4158, 2.033743,0.856788,-0.408568, 2.047721,0.772872,-0.31129, + 2.057206,0.715929,-0.1751, 1.7,0.6231,-0.1782, 1.7,0.6858,-0.3168, + 1.7,0.6858,-0.3168, 2.047721,0.772872,-0.31129, 2.057206,0.715929,-0.1751, + 2.0607,0.69495,0, 1.7,0.6,0, 1.7,0.6231,-0.1782, + 1.7,0.6231,-0.1782, 2.057206,0.715929,-0.1751, 2.0607,0.69495,0, + 2.116979,1.47912,-0.166687, 1.939394,1.423221,-0.1751, 1.9359,1.4442,0, + 1.9359,1.4442,0, 2.1112,1.4976,0, 2.116979,1.47912,-0.166687, + 2.132666,1.42896,-0.296333, 1.948879,1.366278,-0.31129, 1.939394,1.423221,-0.1751, + 1.939394,1.423221,-0.1751, 2.116979,1.47912,-0.166687, 2.132666,1.42896,-0.296333, + 2.155782,1.35504,-0.388937, 1.962857,1.282362,-0.408568, 1.948879,1.366278,-0.31129, + 1.948879,1.366278,-0.31129, 2.132666,1.42896,-0.296333, 2.155782,1.35504,-0.388937, + 2.183853,1.26528,-0.444499, 1.97983,1.180464,-0.466934, 1.962857,1.282362,-0.408568, + 1.962857,1.282362,-0.408568, 2.155782,1.35504,-0.388937, 2.183853,1.26528,-0.444499, + 2.2144,1.1676,-0.46302, 1.9983,1.069575,-0.48639, 1.97983,1.180464,-0.466934, + 1.97983,1.180464,-0.466934, 2.183853,1.26528,-0.444499, 2.2144,1.1676,-0.46302, + 2.244947,1.06992,-0.444499, 2.01677,0.958686,-0.466934, 1.9983,1.069575,-0.48639, + 1.9983,1.069575,-0.48639, 2.2144,1.1676,-0.46302, 2.244947,1.06992,-0.444499, + 2.273018,0.98016,-0.388937, 2.033743,0.856788,-0.408568, 2.01677,0.958686,-0.466934, + 2.01677,0.958686,-0.466934, 2.244947,1.06992,-0.444499, 2.273018,0.98016,-0.388937, + 2.296134,0.90624,-0.296333, 2.047721,0.772872,-0.31129, 2.033743,0.856788,-0.408568, + 2.033743,0.856788,-0.408568, 2.273018,0.98016,-0.388937, 2.296134,0.90624,-0.296333, + 2.311821,0.85608,-0.166687, 2.057206,0.715929,-0.1751, 2.047721,0.772872,-0.31129, + 2.047721,0.772872,-0.31129, 2.296134,0.90624,-0.296333, 2.311821,0.85608,-0.166687, + 2.3176,0.8376,0, 2.0607,0.69495,0, 2.057206,0.715929,-0.1751, + 2.057206,0.715929,-0.1751, 2.311821,0.85608,-0.166687, 2.3176,0.8376,0, + 2.244457,1.563171,-0.154289, 2.116979,1.47912,-0.166687, 2.1112,1.4976,0, + 2.1112,1.4976,0, 2.2373,1.5789,0, 2.244457,1.563171,-0.154289, + 2.263882,1.520478,-0.274291, 2.132666,1.42896,-0.296333, 2.116979,1.47912,-0.166687, + 2.116979,1.47912,-0.166687, 2.244457,1.563171,-0.154289, 2.263882,1.520478,-0.274291, + 2.29251,1.457562,-0.360007, 2.155782,1.35504,-0.388937, 2.132666,1.42896,-0.296333, + 2.132666,1.42896,-0.296333, 2.263882,1.520478,-0.274291, 2.29251,1.457562,-0.360007, + 2.327271,1.381164,-0.411437, 2.183853,1.26528,-0.444499, 2.155782,1.35504,-0.388937, + 2.155782,1.35504,-0.388937, 2.29251,1.457562,-0.360007, 2.327271,1.381164,-0.411437, + 2.3651,1.298025,-0.42858, 2.2144,1.1676,-0.46302, 2.183853,1.26528,-0.444499, + 2.183853,1.26528,-0.444499, 2.327271,1.381164,-0.411437, 2.3651,1.298025,-0.42858, + 2.402929,1.214886,-0.411437, 2.244947,1.06992,-0.444499, 2.2144,1.1676,-0.46302, + 2.2144,1.1676,-0.46302, 2.3651,1.298025,-0.42858, 2.402929,1.214886,-0.411437, + 2.43769,1.138488,-0.360007, 2.273018,0.98016,-0.388937, 2.244947,1.06992,-0.444499, + 2.244947,1.06992,-0.444499, 2.402929,1.214886,-0.411437, 2.43769,1.138488,-0.360007, + 2.466318,1.075572,-0.274291, 2.296134,0.90624,-0.296333, 2.273018,0.98016,-0.388937, + 2.273018,0.98016,-0.388937, 2.43769,1.138488,-0.360007, 2.466318,1.075572,-0.274291, + 2.485743,1.032879,-0.154289, 2.311821,0.85608,-0.166687, 2.296134,0.90624,-0.296333, + 2.296134,0.90624,-0.296333, 2.466318,1.075572,-0.274291, 2.485743,1.032879,-0.154289, + 2.4929,1.01715,0, 2.3176,0.8376,0, 2.311821,0.85608,-0.166687, + 2.311821,0.85608,-0.166687, 2.485743,1.032879,-0.154289, 2.4929,1.01715,0, + 2.33353,1.668948,-0.139234, 2.244457,1.563171,-0.154289, 2.2373,1.5789,0, + 2.2373,1.5789,0, 2.3256,1.6818,0, 2.33353,1.668948,-0.139234, + 2.355053,1.634064,-0.247526, 2.263882,1.520478,-0.274291, 2.244457,1.563171,-0.154289, + 2.244457,1.563171,-0.154289, 2.33353,1.668948,-0.139234, 2.355053,1.634064,-0.247526, + 2.386771,1.582656,-0.324878, 2.29251,1.457562,-0.360007, 2.263882,1.520478,-0.274291, + 2.263882,1.520478,-0.274291, 2.355053,1.634064,-0.247526, 2.386771,1.582656,-0.324878, + 2.425286,1.520232,-0.37129, 2.327271,1.381164,-0.411437, 2.29251,1.457562,-0.360007, + 2.29251,1.457562,-0.360007, 2.386771,1.582656,-0.324878, 2.425286,1.520232,-0.37129, + 2.4672,1.4523,-0.38676, 2.3651,1.298025,-0.42858, 2.327271,1.381164,-0.411437, + 2.327271,1.381164,-0.411437, 2.425286,1.520232,-0.37129, 2.4672,1.4523,-0.38676, + 2.509114,1.384368,-0.37129, 2.402929,1.214886,-0.411437, 2.3651,1.298025,-0.42858, + 2.3651,1.298025,-0.42858, 2.4672,1.4523,-0.38676, 2.509114,1.384368,-0.37129, + 2.547629,1.321944,-0.324878, 2.43769,1.138488,-0.360007, 2.402929,1.214886,-0.411437, + 2.402929,1.214886,-0.411437, 2.509114,1.384368,-0.37129, 2.547629,1.321944,-0.324878, + 2.579347,1.270536,-0.247526, 2.466318,1.075572,-0.274291, 2.43769,1.138488,-0.360007, + 2.43769,1.138488,-0.360007, 2.547629,1.321944,-0.324878, 2.579347,1.270536,-0.247526, + 2.60087,1.235652,-0.139234, 2.485743,1.032879,-0.154289, 2.466318,1.075572,-0.274291, + 2.466318,1.075572,-0.274291, 2.579347,1.270536,-0.247526, 2.60087,1.235652,-0.139234, + 2.6088,1.2228,0, 2.4929,1.01715,0, 2.485743,1.032879,-0.154289, + 2.485743,1.032879,-0.154289, 2.60087,1.235652,-0.139234, 2.6088,1.2228,0, + 2.3959,1.790025,-0.12285, 2.33353,1.668948,-0.139234, 2.3256,1.6818,0, + 2.3256,1.6818,0, 2.3875,1.8,0, 2.3959,1.790025,-0.12285, + 2.4187,1.76295,-0.2184, 2.355053,1.634064,-0.247526, 2.33353,1.668948,-0.139234, + 2.33353,1.668948,-0.139234, 2.3959,1.790025,-0.12285, 2.4187,1.76295,-0.2184, + 2.4523,1.72305,-0.28665, 2.386771,1.582656,-0.324878, 2.355053,1.634064,-0.247526, + 2.355053,1.634064,-0.247526, 2.4187,1.76295,-0.2184, 2.4523,1.72305,-0.28665, + 2.4931,1.6746,-0.3276, 2.425286,1.520232,-0.37129, 2.386771,1.582656,-0.324878, + 2.386771,1.582656,-0.324878, 2.4523,1.72305,-0.28665, 2.4931,1.6746,-0.3276, + 2.5375,1.621875,-0.34125, 2.4672,1.4523,-0.38676, 2.425286,1.520232,-0.37129, + 2.425286,1.520232,-0.37129, 2.4931,1.6746,-0.3276, 2.5375,1.621875,-0.34125, + 2.5819,1.56915,-0.3276, 2.509114,1.384368,-0.37129, 2.4672,1.4523,-0.38676, + 2.4672,1.4523,-0.38676, 2.5375,1.621875,-0.34125, 2.5819,1.56915,-0.3276, + 2.6227,1.5207,-0.28665, 2.547629,1.321944,-0.324878, 2.509114,1.384368,-0.37129, + 2.509114,1.384368,-0.37129, 2.5819,1.56915,-0.3276, 2.6227,1.5207,-0.28665, + 2.6563,1.4808,-0.2184, 2.579347,1.270536,-0.247526, 2.547629,1.321944,-0.324878, + 2.547629,1.321944,-0.324878, 2.6227,1.5207,-0.28665, 2.6563,1.4808,-0.2184, + 2.6791,1.453725,-0.12285, 2.60087,1.235652,-0.139234, 2.579347,1.270536,-0.247526, + 2.579347,1.270536,-0.247526, 2.6563,1.4808,-0.2184, 2.6791,1.453725,-0.12285, + 2.6875,1.44375,0, 2.6088,1.2228,0, 2.60087,1.235652,-0.139234, + 2.60087,1.235652,-0.139234, 2.6791,1.453725,-0.12285, 2.6875,1.44375,0, + 2.44327,1.919976,-0.106466, 2.3959,1.790025,-0.12285, 2.3875,1.8,0, + 2.3875,1.8,0, 2.4344,1.9272,0, 2.44327,1.919976,-0.106466, + 2.467347,1.900368,-0.189274, 2.4187,1.76295,-0.2184, 2.3959,1.790025,-0.12285, + 2.3959,1.790025,-0.12285, 2.44327,1.919976,-0.106466, 2.467347,1.900368,-0.189274, + 2.502829,1.871472,-0.248422, 2.4523,1.72305,-0.28665, 2.4187,1.76295,-0.2184, + 2.4187,1.76295,-0.2184, 2.467347,1.900368,-0.189274, 2.502829,1.871472,-0.248422, + 2.545914,1.836384,-0.28391, 2.4931,1.6746,-0.3276, 2.4523,1.72305,-0.28665, + 2.4523,1.72305,-0.28665, 2.502829,1.871472,-0.248422, 2.545914,1.836384,-0.28391, + 2.5928,1.7982,-0.29574, 2.5375,1.621875,-0.34125, 2.4931,1.6746,-0.3276, + 2.4931,1.6746,-0.3276, 2.545914,1.836384,-0.28391, 2.5928,1.7982,-0.29574, + 2.639686,1.760016,-0.28391, 2.5819,1.56915,-0.3276, 2.5375,1.621875,-0.34125, + 2.5375,1.621875,-0.34125, 2.5928,1.7982,-0.29574, 2.639686,1.760016,-0.28391, + 2.682771,1.724928,-0.248422, 2.6227,1.5207,-0.28665, 2.5819,1.56915,-0.3276, + 2.5819,1.56915,-0.3276, 2.639686,1.760016,-0.28391, 2.682771,1.724928,-0.248422, + 2.718253,1.696032,-0.189274, 2.6563,1.4808,-0.2184, 2.6227,1.5207,-0.28665, + 2.6227,1.5207,-0.28665, 2.682771,1.724928,-0.248422, 2.718253,1.696032,-0.189274, + 2.74233,1.676424,-0.106466, 2.6791,1.453725,-0.12285, 2.6563,1.4808,-0.2184, + 2.6563,1.4808,-0.2184, 2.718253,1.696032,-0.189274, 2.74233,1.676424,-0.106466, + 2.7512,1.6692,0, 2.6875,1.44375,0, 2.6791,1.453725,-0.12285, + 2.6791,1.453725,-0.12285, 2.74233,1.676424,-0.106466, 2.7512,1.6692,0, + 2.487343,2.052375,-0.091411, 2.44327,1.919976,-0.106466, 2.4344,1.9272,0, + 2.4344,1.9272,0, 2.4777,2.0571,0, 2.487343,2.052375,-0.091411, + 2.513518,2.03955,-0.162509, 2.467347,1.900368,-0.189274, 2.44327,1.919976,-0.106466, + 2.44327,1.919976,-0.106466, 2.487343,2.052375,-0.091411, 2.513518,2.03955,-0.162509, + 2.55209,2.02065,-0.213293, 2.502829,1.871472,-0.248422, 2.467347,1.900368,-0.189274, + 2.467347,1.900368,-0.189274, 2.513518,2.03955,-0.162509, 2.55209,2.02065,-0.213293, + 2.598929,1.9977,-0.243763, 2.545914,1.836384,-0.28391, 2.502829,1.871472,-0.248422, + 2.502829,1.871472,-0.248422, 2.55209,2.02065,-0.213293, 2.598929,1.9977,-0.243763, + 2.6499,1.972725,-0.25392, 2.5928,1.7982,-0.29574, 2.545914,1.836384,-0.28391, + 2.545914,1.836384,-0.28391, 2.598929,1.9977,-0.243763, 2.6499,1.972725,-0.25392, + 2.700871,1.94775,-0.243763, 2.639686,1.760016,-0.28391, 2.5928,1.7982,-0.29574, + 2.5928,1.7982,-0.29574, 2.6499,1.972725,-0.25392, 2.700871,1.94775,-0.243763, + 2.74771,1.9248,-0.213293, 2.682771,1.724928,-0.248422, 2.639686,1.760016,-0.28391, + 2.639686,1.760016,-0.28391, 2.700871,1.94775,-0.243763, 2.74771,1.9248,-0.213293, + 2.786282,1.9059,-0.162509, 2.718253,1.696032,-0.189274, 2.682771,1.724928,-0.248422, + 2.682771,1.724928,-0.248422, 2.74771,1.9248,-0.213293, 2.786282,1.9059,-0.162509, + 2.812457,1.893075,-0.091411, 2.74233,1.676424,-0.106466, 2.718253,1.696032,-0.189274, + 2.718253,1.696032,-0.189274, 2.786282,1.9059,-0.162509, 2.812457,1.893075,-0.091411, + 2.8221,1.88835,0, 2.7512,1.6692,0, 2.74233,1.676424,-0.106466, + 2.74233,1.676424,-0.106466, 2.812457,1.893075,-0.091411, 2.8221,1.88835,0, + 2.539821,2.180796,-0.079013, 2.487343,2.052375,-0.091411, 2.4777,2.0571,0, + 2.4777,2.0571,0, 2.5288,2.1834,0, 2.539821,2.180796,-0.079013, + 2.569734,2.173728,-0.140467, 2.513518,2.03955,-0.162509, 2.487343,2.052375,-0.091411, + 2.487343,2.052375,-0.091411, 2.539821,2.180796,-0.079013, 2.569734,2.173728,-0.140467, + 2.613818,2.163312,-0.184363, 2.55209,2.02065,-0.213293, 2.513518,2.03955,-0.162509, + 2.513518,2.03955,-0.162509, 2.569734,2.173728,-0.140467, 2.613818,2.163312,-0.184363, + 2.667347,2.150664,-0.210701, 2.598929,1.9977,-0.243763, 2.55209,2.02065,-0.213293, + 2.55209,2.02065,-0.213293, 2.613818,2.163312,-0.184363, 2.667347,2.150664,-0.210701, + 2.7256,2.1369,-0.21948, 2.6499,1.972725,-0.25392, 2.598929,1.9977,-0.243763, + 2.598929,1.9977,-0.243763, 2.667347,2.150664,-0.210701, 2.7256,2.1369,-0.21948, + 2.783853,2.123136,-0.210701, 2.700871,1.94775,-0.243763, 2.6499,1.972725,-0.25392, + 2.6499,1.972725,-0.25392, 2.7256,2.1369,-0.21948, 2.783853,2.123136,-0.210701, + 2.837382,2.110488,-0.184363, 2.74771,1.9248,-0.213293, 2.700871,1.94775,-0.243763, + 2.700871,1.94775,-0.243763, 2.783853,2.123136,-0.210701, 2.837382,2.110488,-0.184363, + 2.881466,2.100072,-0.140467, 2.786282,1.9059,-0.162509, 2.74771,1.9248,-0.213293, + 2.74771,1.9248,-0.213293, 2.837382,2.110488,-0.184363, 2.881466,2.100072,-0.140467, + 2.911379,2.093004,-0.079013, 2.812457,1.893075,-0.091411, 2.786282,1.9059,-0.162509, + 2.786282,1.9059,-0.162509, 2.881466,2.100072,-0.140467, 2.911379,2.093004,-0.079013, + 2.9224,2.0904,0, 2.8221,1.88835,0, 2.812457,1.893075,-0.091411, + 2.812457,1.893075,-0.091411, 2.911379,2.093004,-0.079013, 2.9224,2.0904,0, + 2.612406,2.298813,-0.0706, 2.539821,2.180796,-0.079013, 2.5288,2.1834,0, + 2.5288,2.1834,0, 2.5991,2.2998,0, 2.612406,2.298813,-0.0706, + 2.648521,2.296134,-0.12551, 2.569734,2.173728,-0.140467, 2.539821,2.180796,-0.079013, + 2.539821,2.180796,-0.079013, 2.612406,2.298813,-0.0706, 2.648521,2.296134,-0.12551, + 2.701743,2.292186,-0.164732, 2.613818,2.163312,-0.184363, 2.569734,2.173728,-0.140467, + 2.569734,2.173728,-0.140467, 2.648521,2.296134,-0.12551, 2.701743,2.292186,-0.164732, + 2.76637,2.287392,-0.188266, 2.667347,2.150664,-0.210701, 2.613818,2.163312,-0.184363, + 2.613818,2.163312,-0.184363, 2.701743,2.292186,-0.164732, 2.76637,2.287392,-0.188266, + 2.8367,2.282175,-0.19611, 2.7256,2.1369,-0.21948, 2.667347,2.150664,-0.210701, + 2.667347,2.150664,-0.210701, 2.76637,2.287392,-0.188266, 2.8367,2.282175,-0.19611, + 2.90703,2.276958,-0.188266, 2.783853,2.123136,-0.210701, 2.7256,2.1369,-0.21948, + 2.7256,2.1369,-0.21948, 2.8367,2.282175,-0.19611, 2.90703,2.276958,-0.188266, + 2.971657,2.272164,-0.164732, 2.837382,2.110488,-0.184363, 2.783853,2.123136,-0.210701, + 2.783853,2.123136,-0.210701, 2.90703,2.276958,-0.188266, 2.971657,2.272164,-0.164732, + 3.024879,2.268216,-0.12551, 2.881466,2.100072,-0.140467, 2.837382,2.110488,-0.184363, + 2.837382,2.110488,-0.184363, 2.971657,2.272164,-0.164732, 3.024879,2.268216,-0.12551, + 3.060994,2.265537,-0.0706, 2.911379,2.093004,-0.079013, 2.881466,2.100072,-0.140467, + 2.881466,2.100072,-0.140467, 3.024879,2.268216,-0.12551, 3.060994,2.265537,-0.0706, + 3.0743,2.26455,0, 2.9224,2.0904,0, 2.911379,2.093004,-0.079013, + 2.911379,2.093004,-0.079013, 3.060994,2.265537,-0.0706, 3.0743,2.26455,0, + 2.7168,2.4,-0.0675, 2.612406,2.298813,-0.0706, 2.5991,2.2998,0, + 2.5991,2.2998,0, 2.7,2.4,0, 2.7168,2.4,-0.0675, + 2.7624,2.4,-0.12, 2.648521,2.296134,-0.12551, 2.612406,2.298813,-0.0706, + 2.612406,2.298813,-0.0706, 2.7168,2.4,-0.0675, 2.7624,2.4,-0.12, + 2.8296,2.4,-0.1575, 2.701743,2.292186,-0.164732, 2.648521,2.296134,-0.12551, + 2.648521,2.296134,-0.12551, 2.7624,2.4,-0.12, 2.8296,2.4,-0.1575, + 2.9112,2.4,-0.18, 2.76637,2.287392,-0.188266, 2.701743,2.292186,-0.164732, + 2.701743,2.292186,-0.164732, 2.8296,2.4,-0.1575, 2.9112,2.4,-0.18, + 3,2.4,-0.1875, 2.8367,2.282175,-0.19611, 2.76637,2.287392,-0.188266, + 2.76637,2.287392,-0.188266, 2.9112,2.4,-0.18, 3,2.4,-0.1875, + 3.0888,2.4,-0.18, 2.90703,2.276958,-0.188266, 2.8367,2.282175,-0.19611, + 2.8367,2.282175,-0.19611, 3,2.4,-0.1875, 3.0888,2.4,-0.18, + 3.1704,2.4,-0.1575, 2.971657,2.272164,-0.164732, 2.90703,2.276958,-0.188266, + 2.90703,2.276958,-0.188266, 3.0888,2.4,-0.18, 3.1704,2.4,-0.1575, + 3.2376,2.4,-0.12, 3.024879,2.268216,-0.12551, 2.971657,2.272164,-0.164732, + 2.971657,2.272164,-0.164732, 3.1704,2.4,-0.1575, 3.2376,2.4,-0.12, + 3.2832,2.4,-0.0675, 3.060994,2.265537,-0.0706, 3.024879,2.268216,-0.12551, + 3.024879,2.268216,-0.12551, 3.2376,2.4,-0.12, 3.2832,2.4,-0.0675, + 3.3,2.4,0, 3.0743,2.26455,0, 3.060994,2.265537,-0.0706, + 3.060994,2.265537,-0.0706, 3.2832,2.4,-0.0675, 3.3,2.4,0, + 2.057206,0.715929,0.1751, 1.7,0.6231,0.1782, 1.7,0.6,0, + 1.7,0.6,0, 2.0607,0.69495,0, 2.057206,0.715929,0.1751, + 2.047721,0.772872,0.31129, 1.7,0.6858,0.3168, 1.7,0.6231,0.1782, + 1.7,0.6231,0.1782, 2.057206,0.715929,0.1751, 2.047721,0.772872,0.31129, + 2.033743,0.856788,0.408568, 1.7,0.7782,0.4158, 1.7,0.6858,0.3168, + 1.7,0.6858,0.3168, 2.047721,0.772872,0.31129, 2.033743,0.856788,0.408568, + 2.01677,0.958686,0.466934, 1.7,0.8904,0.4752, 1.7,0.7782,0.4158, + 1.7,0.7782,0.4158, 2.033743,0.856788,0.408568, 2.01677,0.958686,0.466934, + 1.9983,1.069575,0.48639, 1.7,1.0125,0.495, 1.7,0.8904,0.4752, + 1.7,0.8904,0.4752, 2.01677,0.958686,0.466934, 1.9983,1.069575,0.48639, + 1.97983,1.180464,0.466934, 1.7,1.1346,0.4752, 1.7,1.0125,0.495, + 1.7,1.0125,0.495, 1.9983,1.069575,0.48639, 1.97983,1.180464,0.466934, + 1.962857,1.282362,0.408568, 1.7,1.2468,0.4158, 1.7,1.1346,0.4752, + 1.7,1.1346,0.4752, 1.97983,1.180464,0.466934, 1.962857,1.282362,0.408568, + 1.948879,1.366278,0.31129, 1.7,1.3392,0.3168, 1.7,1.2468,0.4158, + 1.7,1.2468,0.4158, 1.962857,1.282362,0.408568, 1.948879,1.366278,0.31129, + 1.939394,1.423221,0.1751, 1.7,1.4019,0.1782, 1.7,1.3392,0.3168, + 1.7,1.3392,0.3168, 1.948879,1.366278,0.31129, 1.939394,1.423221,0.1751, + 1.9359,1.4442,0, 1.7,1.425,0, 1.7,1.4019,0.1782, + 1.7,1.4019,0.1782, 1.939394,1.423221,0.1751, 1.9359,1.4442,0, + 2.311821,0.85608,0.166687, 2.057206,0.715929,0.1751, 2.0607,0.69495,0, + 2.0607,0.69495,0, 2.3176,0.8376,0, 2.311821,0.85608,0.166687, + 2.296134,0.90624,0.296333, 2.047721,0.772872,0.31129, 2.057206,0.715929,0.1751, + 2.057206,0.715929,0.1751, 2.311821,0.85608,0.166687, 2.296134,0.90624,0.296333, + 2.273018,0.98016,0.388937, 2.033743,0.856788,0.408568, 2.047721,0.772872,0.31129, + 2.047721,0.772872,0.31129, 2.296134,0.90624,0.296333, 2.273018,0.98016,0.388937, + 2.244947,1.06992,0.444499, 2.01677,0.958686,0.466934, 2.033743,0.856788,0.408568, + 2.033743,0.856788,0.408568, 2.273018,0.98016,0.388937, 2.244947,1.06992,0.444499, + 2.2144,1.1676,0.46302, 1.9983,1.069575,0.48639, 2.01677,0.958686,0.466934, + 2.01677,0.958686,0.466934, 2.244947,1.06992,0.444499, 2.2144,1.1676,0.46302, + 2.183853,1.26528,0.444499, 1.97983,1.180464,0.466934, 1.9983,1.069575,0.48639, + 1.9983,1.069575,0.48639, 2.2144,1.1676,0.46302, 2.183853,1.26528,0.444499, + 2.155782,1.35504,0.388937, 1.962857,1.282362,0.408568, 1.97983,1.180464,0.466934, + 1.97983,1.180464,0.466934, 2.183853,1.26528,0.444499, 2.155782,1.35504,0.388937, + 2.132666,1.42896,0.296333, 1.948879,1.366278,0.31129, 1.962857,1.282362,0.408568, + 1.962857,1.282362,0.408568, 2.155782,1.35504,0.388937, 2.132666,1.42896,0.296333, + 2.116979,1.47912,0.166687, 1.939394,1.423221,0.1751, 1.948879,1.366278,0.31129, + 1.948879,1.366278,0.31129, 2.132666,1.42896,0.296333, 2.116979,1.47912,0.166687, + 2.1112,1.4976,0, 1.9359,1.4442,0, 1.939394,1.423221,0.1751, + 1.939394,1.423221,0.1751, 2.116979,1.47912,0.166687, 2.1112,1.4976,0, + 2.485743,1.032879,0.154289, 2.311821,0.85608,0.166687, 2.3176,0.8376,0, + 2.3176,0.8376,0, 2.4929,1.01715,0, 2.485743,1.032879,0.154289, + 2.466318,1.075572,0.274291, 2.296134,0.90624,0.296333, 2.311821,0.85608,0.166687, + 2.311821,0.85608,0.166687, 2.485743,1.032879,0.154289, 2.466318,1.075572,0.274291, + 2.43769,1.138488,0.360007, 2.273018,0.98016,0.388937, 2.296134,0.90624,0.296333, + 2.296134,0.90624,0.296333, 2.466318,1.075572,0.274291, 2.43769,1.138488,0.360007, + 2.402929,1.214886,0.411437, 2.244947,1.06992,0.444499, 2.273018,0.98016,0.388937, + 2.273018,0.98016,0.388937, 2.43769,1.138488,0.360007, 2.402929,1.214886,0.411437, + 2.3651,1.298025,0.42858, 2.2144,1.1676,0.46302, 2.244947,1.06992,0.444499, + 2.244947,1.06992,0.444499, 2.402929,1.214886,0.411437, 2.3651,1.298025,0.42858, + 2.327271,1.381164,0.411437, 2.183853,1.26528,0.444499, 2.2144,1.1676,0.46302, + 2.2144,1.1676,0.46302, 2.3651,1.298025,0.42858, 2.327271,1.381164,0.411437, + 2.29251,1.457562,0.360007, 2.155782,1.35504,0.388937, 2.183853,1.26528,0.444499, + 2.183853,1.26528,0.444499, 2.327271,1.381164,0.411437, 2.29251,1.457562,0.360007, + 2.263882,1.520478,0.274291, 2.132666,1.42896,0.296333, 2.155782,1.35504,0.388937, + 2.155782,1.35504,0.388937, 2.29251,1.457562,0.360007, 2.263882,1.520478,0.274291, + 2.244457,1.563171,0.154289, 2.116979,1.47912,0.166687, 2.132666,1.42896,0.296333, + 2.132666,1.42896,0.296333, 2.263882,1.520478,0.274291, 2.244457,1.563171,0.154289, + 2.2373,1.5789,0, 2.1112,1.4976,0, 2.116979,1.47912,0.166687, + 2.116979,1.47912,0.166687, 2.244457,1.563171,0.154289, 2.2373,1.5789,0, + 2.60087,1.235652,0.139234, 2.485743,1.032879,0.154289, 2.4929,1.01715,0, + 2.4929,1.01715,0, 2.6088,1.2228,0, 2.60087,1.235652,0.139234, + 2.579347,1.270536,0.247526, 2.466318,1.075572,0.274291, 2.485743,1.032879,0.154289, + 2.485743,1.032879,0.154289, 2.60087,1.235652,0.139234, 2.579347,1.270536,0.247526, + 2.547629,1.321944,0.324878, 2.43769,1.138488,0.360007, 2.466318,1.075572,0.274291, + 2.466318,1.075572,0.274291, 2.579347,1.270536,0.247526, 2.547629,1.321944,0.324878, + 2.509114,1.384368,0.37129, 2.402929,1.214886,0.411437, 2.43769,1.138488,0.360007, + 2.43769,1.138488,0.360007, 2.547629,1.321944,0.324878, 2.509114,1.384368,0.37129, + 2.4672,1.4523,0.38676, 2.3651,1.298025,0.42858, 2.402929,1.214886,0.411437, + 2.402929,1.214886,0.411437, 2.509114,1.384368,0.37129, 2.4672,1.4523,0.38676, + 2.425286,1.520232,0.37129, 2.327271,1.381164,0.411437, 2.3651,1.298025,0.42858, + 2.3651,1.298025,0.42858, 2.4672,1.4523,0.38676, 2.425286,1.520232,0.37129, + 2.386771,1.582656,0.324878, 2.29251,1.457562,0.360007, 2.327271,1.381164,0.411437, + 2.327271,1.381164,0.411437, 2.425286,1.520232,0.37129, 2.386771,1.582656,0.324878, + 2.355053,1.634064,0.247526, 2.263882,1.520478,0.274291, 2.29251,1.457562,0.360007, + 2.29251,1.457562,0.360007, 2.386771,1.582656,0.324878, 2.355053,1.634064,0.247526, + 2.33353,1.668948,0.139234, 2.244457,1.563171,0.154289, 2.263882,1.520478,0.274291, + 2.263882,1.520478,0.274291, 2.355053,1.634064,0.247526, 2.33353,1.668948,0.139234, + 2.3256,1.6818,0, 2.2373,1.5789,0, 2.244457,1.563171,0.154289, + 2.244457,1.563171,0.154289, 2.33353,1.668948,0.139234, 2.3256,1.6818,0, + 2.6791,1.453725,0.12285, 2.60087,1.235652,0.139234, 2.6088,1.2228,0, + 2.6088,1.2228,0, 2.6875,1.44375,0, 2.6791,1.453725,0.12285, + 2.6563,1.4808,0.2184, 2.579347,1.270536,0.247526, 2.60087,1.235652,0.139234, + 2.60087,1.235652,0.139234, 2.6791,1.453725,0.12285, 2.6563,1.4808,0.2184, + 2.6227,1.5207,0.28665, 2.547629,1.321944,0.324878, 2.579347,1.270536,0.247526, + 2.579347,1.270536,0.247526, 2.6563,1.4808,0.2184, 2.6227,1.5207,0.28665, + 2.5819,1.56915,0.3276, 2.509114,1.384368,0.37129, 2.547629,1.321944,0.324878, + 2.547629,1.321944,0.324878, 2.6227,1.5207,0.28665, 2.5819,1.56915,0.3276, + 2.5375,1.621875,0.34125, 2.4672,1.4523,0.38676, 2.509114,1.384368,0.37129, + 2.509114,1.384368,0.37129, 2.5819,1.56915,0.3276, 2.5375,1.621875,0.34125, + 2.4931,1.6746,0.3276, 2.425286,1.520232,0.37129, 2.4672,1.4523,0.38676, + 2.4672,1.4523,0.38676, 2.5375,1.621875,0.34125, 2.4931,1.6746,0.3276, + 2.4523,1.72305,0.28665, 2.386771,1.582656,0.324878, 2.425286,1.520232,0.37129, + 2.425286,1.520232,0.37129, 2.4931,1.6746,0.3276, 2.4523,1.72305,0.28665, + 2.4187,1.76295,0.2184, 2.355053,1.634064,0.247526, 2.386771,1.582656,0.324878, + 2.386771,1.582656,0.324878, 2.4523,1.72305,0.28665, 2.4187,1.76295,0.2184, + 2.3959,1.790025,0.12285, 2.33353,1.668948,0.139234, 2.355053,1.634064,0.247526, + 2.355053,1.634064,0.247526, 2.4187,1.76295,0.2184, 2.3959,1.790025,0.12285, + 2.3875,1.8,0, 2.3256,1.6818,0, 2.33353,1.668948,0.139234, + 2.33353,1.668948,0.139234, 2.3959,1.790025,0.12285, 2.3875,1.8,0, + 2.74233,1.676424,0.106466, 2.6791,1.453725,0.12285, 2.6875,1.44375,0, + 2.6875,1.44375,0, 2.7512,1.6692,0, 2.74233,1.676424,0.106466, + 2.718253,1.696032,0.189274, 2.6563,1.4808,0.2184, 2.6791,1.453725,0.12285, + 2.6791,1.453725,0.12285, 2.74233,1.676424,0.106466, 2.718253,1.696032,0.189274, + 2.682771,1.724928,0.248422, 2.6227,1.5207,0.28665, 2.6563,1.4808,0.2184, + 2.6563,1.4808,0.2184, 2.718253,1.696032,0.189274, 2.682771,1.724928,0.248422, + 2.639686,1.760016,0.28391, 2.5819,1.56915,0.3276, 2.6227,1.5207,0.28665, + 2.6227,1.5207,0.28665, 2.682771,1.724928,0.248422, 2.639686,1.760016,0.28391, + 2.5928,1.7982,0.29574, 2.5375,1.621875,0.34125, 2.5819,1.56915,0.3276, + 2.5819,1.56915,0.3276, 2.639686,1.760016,0.28391, 2.5928,1.7982,0.29574, + 2.545914,1.836384,0.28391, 2.4931,1.6746,0.3276, 2.5375,1.621875,0.34125, + 2.5375,1.621875,0.34125, 2.5928,1.7982,0.29574, 2.545914,1.836384,0.28391, + 2.502829,1.871472,0.248422, 2.4523,1.72305,0.28665, 2.4931,1.6746,0.3276, + 2.4931,1.6746,0.3276, 2.545914,1.836384,0.28391, 2.502829,1.871472,0.248422, + 2.467347,1.900368,0.189274, 2.4187,1.76295,0.2184, 2.4523,1.72305,0.28665, + 2.4523,1.72305,0.28665, 2.502829,1.871472,0.248422, 2.467347,1.900368,0.189274, + 2.44327,1.919976,0.106466, 2.3959,1.790025,0.12285, 2.4187,1.76295,0.2184, + 2.4187,1.76295,0.2184, 2.467347,1.900368,0.189274, 2.44327,1.919976,0.106466, + 2.4344,1.9272,0, 2.3875,1.8,0, 2.3959,1.790025,0.12285, + 2.3959,1.790025,0.12285, 2.44327,1.919976,0.106466, 2.4344,1.9272,0, + 2.812457,1.893075,0.091411, 2.74233,1.676424,0.106466, 2.7512,1.6692,0, + 2.7512,1.6692,0, 2.8221,1.88835,0, 2.812457,1.893075,0.091411, + 2.786282,1.9059,0.162509, 2.718253,1.696032,0.189274, 2.74233,1.676424,0.106466, + 2.74233,1.676424,0.106466, 2.812457,1.893075,0.091411, 2.786282,1.9059,0.162509, + 2.74771,1.9248,0.213293, 2.682771,1.724928,0.248422, 2.718253,1.696032,0.189274, + 2.718253,1.696032,0.189274, 2.786282,1.9059,0.162509, 2.74771,1.9248,0.213293, + 2.700871,1.94775,0.243763, 2.639686,1.760016,0.28391, 2.682771,1.724928,0.248422, + 2.682771,1.724928,0.248422, 2.74771,1.9248,0.213293, 2.700871,1.94775,0.243763, + 2.6499,1.972725,0.25392, 2.5928,1.7982,0.29574, 2.639686,1.760016,0.28391, + 2.639686,1.760016,0.28391, 2.700871,1.94775,0.243763, 2.6499,1.972725,0.25392, + 2.598929,1.9977,0.243763, 2.545914,1.836384,0.28391, 2.5928,1.7982,0.29574, + 2.5928,1.7982,0.29574, 2.6499,1.972725,0.25392, 2.598929,1.9977,0.243763, + 2.55209,2.02065,0.213293, 2.502829,1.871472,0.248422, 2.545914,1.836384,0.28391, + 2.545914,1.836384,0.28391, 2.598929,1.9977,0.243763, 2.55209,2.02065,0.213293, + 2.513518,2.03955,0.162509, 2.467347,1.900368,0.189274, 2.502829,1.871472,0.248422, + 2.502829,1.871472,0.248422, 2.55209,2.02065,0.213293, 2.513518,2.03955,0.162509, + 2.487343,2.052375,0.091411, 2.44327,1.919976,0.106466, 2.467347,1.900368,0.189274, + 2.467347,1.900368,0.189274, 2.513518,2.03955,0.162509, 2.487343,2.052375,0.091411, + 2.4777,2.0571,0, 2.4344,1.9272,0, 2.44327,1.919976,0.106466, + 2.44327,1.919976,0.106466, 2.487343,2.052375,0.091411, 2.4777,2.0571,0, + 2.911379,2.093004,0.079013, 2.812457,1.893075,0.091411, 2.8221,1.88835,0, + 2.8221,1.88835,0, 2.9224,2.0904,0, 2.911379,2.093004,0.079013, + 2.881466,2.100072,0.140467, 2.786282,1.9059,0.162509, 2.812457,1.893075,0.091411, + 2.812457,1.893075,0.091411, 2.911379,2.093004,0.079013, 2.881466,2.100072,0.140467, + 2.837382,2.110488,0.184363, 2.74771,1.9248,0.213293, 2.786282,1.9059,0.162509, + 2.786282,1.9059,0.162509, 2.881466,2.100072,0.140467, 2.837382,2.110488,0.184363, + 2.783853,2.123136,0.210701, 2.700871,1.94775,0.243763, 2.74771,1.9248,0.213293, + 2.74771,1.9248,0.213293, 2.837382,2.110488,0.184363, 2.783853,2.123136,0.210701, + 2.7256,2.1369,0.21948, 2.6499,1.972725,0.25392, 2.700871,1.94775,0.243763, + 2.700871,1.94775,0.243763, 2.783853,2.123136,0.210701, 2.7256,2.1369,0.21948, + 2.667347,2.150664,0.210701, 2.598929,1.9977,0.243763, 2.6499,1.972725,0.25392, + 2.6499,1.972725,0.25392, 2.7256,2.1369,0.21948, 2.667347,2.150664,0.210701, + 2.613818,2.163312,0.184363, 2.55209,2.02065,0.213293, 2.598929,1.9977,0.243763, + 2.598929,1.9977,0.243763, 2.667347,2.150664,0.210701, 2.613818,2.163312,0.184363, + 2.569734,2.173728,0.140467, 2.513518,2.03955,0.162509, 2.55209,2.02065,0.213293, + 2.55209,2.02065,0.213293, 2.613818,2.163312,0.184363, 2.569734,2.173728,0.140467, + 2.539821,2.180796,0.079013, 2.487343,2.052375,0.091411, 2.513518,2.03955,0.162509, + 2.513518,2.03955,0.162509, 2.569734,2.173728,0.140467, 2.539821,2.180796,0.079013, + 2.5288,2.1834,0, 2.4777,2.0571,0, 2.487343,2.052375,0.091411, + 2.487343,2.052375,0.091411, 2.539821,2.180796,0.079013, 2.5288,2.1834,0, + 3.060994,2.265537,0.0706, 2.911379,2.093004,0.079013, 2.9224,2.0904,0, + 2.9224,2.0904,0, 3.0743,2.26455,0, 3.060994,2.265537,0.0706, + 3.024879,2.268216,0.12551, 2.881466,2.100072,0.140467, 2.911379,2.093004,0.079013, + 2.911379,2.093004,0.079013, 3.060994,2.265537,0.0706, 3.024879,2.268216,0.12551, + 2.971657,2.272164,0.164732, 2.837382,2.110488,0.184363, 2.881466,2.100072,0.140467, + 2.881466,2.100072,0.140467, 3.024879,2.268216,0.12551, 2.971657,2.272164,0.164732, + 2.90703,2.276958,0.188266, 2.783853,2.123136,0.210701, 2.837382,2.110488,0.184363, + 2.837382,2.110488,0.184363, 2.971657,2.272164,0.164732, 2.90703,2.276958,0.188266, + 2.8367,2.282175,0.19611, 2.7256,2.1369,0.21948, 2.783853,2.123136,0.210701, + 2.783853,2.123136,0.210701, 2.90703,2.276958,0.188266, 2.8367,2.282175,0.19611, + 2.76637,2.287392,0.188266, 2.667347,2.150664,0.210701, 2.7256,2.1369,0.21948, + 2.7256,2.1369,0.21948, 2.8367,2.282175,0.19611, 2.76637,2.287392,0.188266, + 2.701743,2.292186,0.164732, 2.613818,2.163312,0.184363, 2.667347,2.150664,0.210701, + 2.667347,2.150664,0.210701, 2.76637,2.287392,0.188266, 2.701743,2.292186,0.164732, + 2.648521,2.296134,0.12551, 2.569734,2.173728,0.140467, 2.613818,2.163312,0.184363, + 2.613818,2.163312,0.184363, 2.701743,2.292186,0.164732, 2.648521,2.296134,0.12551, + 2.612406,2.298813,0.0706, 2.539821,2.180796,0.079013, 2.569734,2.173728,0.140467, + 2.569734,2.173728,0.140467, 2.648521,2.296134,0.12551, 2.612406,2.298813,0.0706, + 2.5991,2.2998,0, 2.5288,2.1834,0, 2.539821,2.180796,0.079013, + 2.539821,2.180796,0.079013, 2.612406,2.298813,0.0706, 2.5991,2.2998,0, + 3.2832,2.4,0.0675, 3.060994,2.265537,0.0706, 3.0743,2.26455,0, + 3.0743,2.26455,0, 3.3,2.4,0, 3.2832,2.4,0.0675, + 3.2376,2.4,0.12, 3.024879,2.268216,0.12551, 3.060994,2.265537,0.0706, + 3.060994,2.265537,0.0706, 3.2832,2.4,0.0675, 3.2376,2.4,0.12, + 3.1704,2.4,0.1575, 2.971657,2.272164,0.164732, 3.024879,2.268216,0.12551, + 3.024879,2.268216,0.12551, 3.2376,2.4,0.12, 3.1704,2.4,0.1575, + 3.0888,2.4,0.18, 2.90703,2.276958,0.188266, 2.971657,2.272164,0.164732, + 2.971657,2.272164,0.164732, 3.1704,2.4,0.1575, 3.0888,2.4,0.18, + 3,2.4,0.1875, 2.8367,2.282175,0.19611, 2.90703,2.276958,0.188266, + 2.90703,2.276958,0.188266, 3.0888,2.4,0.18, 3,2.4,0.1875, + 2.9112,2.4,0.18, 2.76637,2.287392,0.188266, 2.8367,2.282175,0.19611, + 2.8367,2.282175,0.19611, 3,2.4,0.1875, 2.9112,2.4,0.18, + 2.8296,2.4,0.1575, 2.701743,2.292186,0.164732, 2.76637,2.287392,0.188266, + 2.76637,2.287392,0.188266, 2.9112,2.4,0.18, 2.8296,2.4,0.1575, + 2.7624,2.4,0.12, 2.648521,2.296134,0.12551, 2.701743,2.292186,0.164732, + 2.701743,2.292186,0.164732, 2.8296,2.4,0.1575, 2.7624,2.4,0.12, + 2.7168,2.4,0.0675, 2.612406,2.298813,0.0706, 2.648521,2.296134,0.12551, + 2.648521,2.296134,0.12551, 2.7624,2.4,0.12, 2.7168,2.4,0.0675, + 2.7,2.4,0, 2.5991,2.2998,0, 2.612406,2.298813,0.0706, + 2.612406,2.298813,0.0706, 2.7168,2.4,0.0675, 2.7,2.4,0, + 2.747407,2.420406,-0.066744, 2.7168,2.4,-0.0675, 2.7,2.4,0, + 2.7,2.4,0, 2.7298,2.42025,0, 2.747407,2.420406,-0.066744, + 2.795198,2.420829,-0.118656, 2.7624,2.4,-0.12, 2.7168,2.4,-0.0675, + 2.7168,2.4,-0.0675, 2.747407,2.420406,-0.066744, 2.795198,2.420829,-0.118656, + 2.865626,2.421453,-0.155736, 2.8296,2.4,-0.1575, 2.7624,2.4,-0.12, + 2.7624,2.4,-0.12, 2.795198,2.420829,-0.118656, 2.865626,2.421453,-0.155736, + 2.951146,2.42221,-0.177984, 2.9112,2.4,-0.18, 2.8296,2.4,-0.1575, + 2.8296,2.4,-0.1575, 2.865626,2.421453,-0.155736, 2.951146,2.42221,-0.177984, + 3.044212,2.423034,-0.1854, 3,2.4,-0.1875, 2.9112,2.4,-0.18, + 2.9112,2.4,-0.18, 2.951146,2.42221,-0.177984, 3.044212,2.423034,-0.1854, + 3.137279,2.423859,-0.177984, 3.0888,2.4,-0.18, 3,2.4,-0.1875, + 3,2.4,-0.1875, 3.044212,2.423034,-0.1854, 3.137279,2.423859,-0.177984, + 3.222799,2.424616,-0.155736, 3.1704,2.4,-0.1575, 3.0888,2.4,-0.18, + 3.0888,2.4,-0.18, 3.137279,2.423859,-0.177984, 3.222799,2.424616,-0.155736, + 3.293227,2.42524,-0.118656, 3.2376,2.4,-0.12, 3.1704,2.4,-0.1575, + 3.1704,2.4,-0.1575, 3.222799,2.424616,-0.155736, 3.293227,2.42524,-0.118656, + 3.341018,2.425663,-0.066744, 3.2832,2.4,-0.0675, 3.2376,2.4,-0.12, + 3.2376,2.4,-0.12, 3.293227,2.42524,-0.118656, 3.341018,2.425663,-0.066744, + 3.358625,2.425819,0, 3.3,2.4,0, 3.2832,2.4,-0.0675, + 3.2832,2.4,-0.0675, 3.341018,2.425663,-0.066744, 3.358625,2.425819,0, + 2.776365,2.436302,-0.064692, 2.747407,2.420406,-0.066744, 2.7298,2.42025,0, + 2.7298,2.42025,0, 2.7584,2.436,0, 2.776365,2.436302,-0.064692, + 2.825126,2.437123,-0.115008, 2.795198,2.420829,-0.118656, 2.747407,2.420406,-0.066744, + 2.747407,2.420406,-0.066744, 2.776365,2.436302,-0.064692, 2.825126,2.437123,-0.115008, + 2.896986,2.438333,-0.150948, 2.865626,2.421453,-0.155736, 2.795198,2.420829,-0.118656, + 2.795198,2.420829,-0.118656, 2.825126,2.437123,-0.115008, 2.896986,2.438333,-0.150948, + 2.984243,2.439802,-0.172512, 2.951146,2.42221,-0.177984, 2.865626,2.421453,-0.155736, + 2.865626,2.421453,-0.155736, 2.896986,2.438333,-0.150948, 2.984243,2.439802,-0.172512, + 3.0792,2.4414,-0.1797, 3.044212,2.423034,-0.1854, 2.951146,2.42221,-0.177984, + 2.951146,2.42221,-0.177984, 2.984243,2.439802,-0.172512, 3.0792,2.4414,-0.1797, + 3.174157,2.442998,-0.172512, 3.137279,2.423859,-0.177984, 3.044212,2.423034,-0.1854, + 3.044212,2.423034,-0.1854, 3.0792,2.4414,-0.1797, 3.174157,2.442998,-0.172512, + 3.261414,2.444467,-0.150948, 3.222799,2.424616,-0.155736, 3.137279,2.423859,-0.177984, + 3.137279,2.423859,-0.177984, 3.174157,2.442998,-0.172512, 3.261414,2.444467,-0.150948, + 3.333274,2.445677,-0.115008, 3.293227,2.42524,-0.118656, 3.222799,2.424616,-0.155736, + 3.222799,2.424616,-0.155736, 3.261414,2.444467,-0.150948, 3.333274,2.445677,-0.115008, + 3.382035,2.446498,-0.064692, 3.341018,2.425663,-0.066744, 3.293227,2.42524,-0.118656, + 3.293227,2.42524,-0.118656, 3.333274,2.445677,-0.115008, 3.382035,2.446498,-0.064692, + 3.4,2.4468,0, 3.358625,2.425819,0, 3.341018,2.425663,-0.066744, + 3.341018,2.425663,-0.066744, 3.382035,2.446498,-0.064692, 3.4,2.4468,0, + 2.802528,2.44768,-0.061668, 2.776365,2.436302,-0.064692, 2.7584,2.436,0, + 2.7584,2.436,0, 2.7846,2.44725,0, 2.802528,2.44768,-0.061668, + 2.851189,2.448847,-0.109632, 2.825126,2.437123,-0.115008, 2.776365,2.436302,-0.064692, + 2.776365,2.436302,-0.064692, 2.802528,2.44768,-0.061668, 2.851189,2.448847,-0.109632, + 2.922899,2.450567,-0.143892, 2.896986,2.438333,-0.150948, 2.825126,2.437123,-0.115008, + 2.825126,2.437123,-0.115008, 2.851189,2.448847,-0.109632, 2.922899,2.450567,-0.143892, + 3.009977,2.452655,-0.164448, 2.984243,2.439802,-0.172512, 2.896986,2.438333,-0.150948, + 2.896986,2.438333,-0.150948, 2.922899,2.450567,-0.143892, 3.009977,2.452655,-0.164448, + 3.104737,2.454928,-0.1713, 3.0792,2.4414,-0.1797, 2.984243,2.439802,-0.172512, + 2.984243,2.439802,-0.172512, 3.009977,2.452655,-0.164448, 3.104737,2.454928,-0.1713, + 3.199498,2.457201,-0.164448, 3.174157,2.442998,-0.172512, 3.0792,2.4414,-0.1797, + 3.0792,2.4414,-0.1797, 3.104737,2.454928,-0.1713, 3.199498,2.457201,-0.164448, + 3.286576,2.459289,-0.143892, 3.261414,2.444467,-0.150948, 3.174157,2.442998,-0.172512, + 3.174157,2.442998,-0.172512, 3.199498,2.457201,-0.164448, 3.286576,2.459289,-0.143892, + 3.358286,2.461009,-0.109632, 3.333274,2.445677,-0.115008, 3.261414,2.444467,-0.150948, + 3.261414,2.444467,-0.150948, 3.286576,2.459289,-0.143892, 3.358286,2.461009,-0.109632, + 3.406947,2.462176,-0.061668, 3.382035,2.446498,-0.064692, 3.333274,2.445677,-0.115008, + 3.333274,2.445677,-0.115008, 3.358286,2.461009,-0.109632, 3.406947,2.462176,-0.061668, + 3.424875,2.462606,0, 3.4,2.4468,0, 3.382035,2.446498,-0.064692, + 3.382035,2.446498,-0.064692, 3.406947,2.462176,-0.061668, 3.424875,2.462606,0, + 2.82475,2.454529,-0.057996, 2.802528,2.44768,-0.061668, 2.7846,2.44725,0, + 2.7846,2.44725,0, 2.8072,2.454,0, 2.82475,2.454529,-0.057996, + 2.872387,2.455966,-0.103104, 2.851189,2.448847,-0.109632, 2.802528,2.44768,-0.061668, + 2.802528,2.44768,-0.061668, 2.82475,2.454529,-0.057996, 2.872387,2.455966,-0.103104, + 2.942589,2.458082,-0.135324, 2.922899,2.450567,-0.143892, 2.851189,2.448847,-0.109632, + 2.851189,2.448847,-0.109632, 2.872387,2.455966,-0.103104, 2.942589,2.458082,-0.135324, + 3.027834,2.460653,-0.154656, 3.009977,2.452655,-0.164448, 2.922899,2.450567,-0.143892, + 2.922899,2.450567,-0.143892, 2.942589,2.458082,-0.135324, 3.027834,2.460653,-0.154656, + 3.1206,2.46345,-0.1611, 3.104737,2.454928,-0.1713, 3.009977,2.452655,-0.164448, + 3.009977,2.452655,-0.164448, 3.027834,2.460653,-0.154656, 3.1206,2.46345,-0.1611, + 3.213366,2.466247,-0.154656, 3.199498,2.457201,-0.164448, 3.104737,2.454928,-0.1713, + 3.104737,2.454928,-0.1713, 3.1206,2.46345,-0.1611, 3.213366,2.466247,-0.154656, + 3.298611,2.468818,-0.135324, 3.286576,2.459289,-0.143892, 3.199498,2.457201,-0.164448, + 3.199498,2.457201,-0.164448, 3.213366,2.466247,-0.154656, 3.298611,2.468818,-0.135324, + 3.368813,2.470934,-0.103104, 3.358286,2.461009,-0.109632, 3.286576,2.459289,-0.143892, + 3.286576,2.459289,-0.143892, 3.298611,2.468818,-0.135324, 3.368813,2.470934,-0.103104, + 3.41645,2.472371,-0.057996, 3.406947,2.462176,-0.061668, 3.358286,2.461009,-0.109632, + 3.358286,2.461009,-0.109632, 3.368813,2.470934,-0.103104, 3.41645,2.472371,-0.057996, + 3.434,2.4729,0, 3.424875,2.462606,0, 3.406947,2.462176,-0.061668, + 3.406947,2.462176,-0.061668, 3.41645,2.472371,-0.057996, 3.434,2.4729,0, + 2.841887,2.456841,-0.054, 2.82475,2.454529,-0.057996, 2.8072,2.454,0, + 2.8072,2.454,0, 2.825,2.45625,0, 2.841887,2.456841,-0.054, + 2.887725,2.458444,-0.096, 2.872387,2.455966,-0.103104, 2.82475,2.454529,-0.057996, + 2.82475,2.454529,-0.057996, 2.841887,2.456841,-0.054, 2.887725,2.458444,-0.096, + 2.955275,2.460806,-0.126, 2.942589,2.458082,-0.135324, 2.872387,2.455966,-0.103104, + 2.872387,2.455966,-0.103104, 2.887725,2.458444,-0.096, 2.955275,2.460806,-0.126, + 3.0373,2.463675,-0.144, 3.027834,2.460653,-0.154656, 2.942589,2.458082,-0.135324, + 2.942589,2.458082,-0.135324, 2.955275,2.460806,-0.126, 3.0373,2.463675,-0.144, + 3.126562,2.466797,-0.15, 3.1206,2.46345,-0.1611, 3.027834,2.460653,-0.154656, + 3.027834,2.460653,-0.154656, 3.0373,2.463675,-0.144, 3.126562,2.466797,-0.15, + 3.215825,2.469919,-0.144, 3.213366,2.466247,-0.154656, 3.1206,2.46345,-0.1611, + 3.1206,2.46345,-0.1611, 3.126562,2.466797,-0.15, 3.215825,2.469919,-0.144, + 3.29785,2.472787,-0.126, 3.298611,2.468818,-0.135324, 3.213366,2.466247,-0.154656, + 3.213366,2.466247,-0.154656, 3.215825,2.469919,-0.144, 3.29785,2.472787,-0.126, + 3.3654,2.47515,-0.096, 3.368813,2.470934,-0.103104, 3.298611,2.468818,-0.135324, + 3.298611,2.468818,-0.135324, 3.29785,2.472787,-0.126, 3.3654,2.47515,-0.096, + 3.411237,2.476753,-0.054, 3.41645,2.472371,-0.057996, 3.368813,2.470934,-0.103104, + 3.368813,2.470934,-0.103104, 3.3654,2.47515,-0.096, 3.411237,2.476753,-0.054, + 3.428125,2.477344,0, 3.434,2.4729,0, 3.41645,2.472371,-0.057996, + 3.41645,2.472371,-0.057996, 3.411237,2.476753,-0.054, 3.428125,2.477344,0, + 2.852794,2.454605,-0.050004, 2.841887,2.456841,-0.054, 2.825,2.45625,0, + 2.825,2.45625,0, 2.8368,2.454,0, 2.852794,2.454605,-0.050004, + 2.896205,2.456246,-0.088896, 2.887725,2.458444,-0.096, 2.841887,2.456841,-0.054, + 2.841887,2.456841,-0.054, 2.852794,2.454605,-0.050004, 2.896205,2.456246,-0.088896, + 2.960179,2.458666,-0.116676, 2.955275,2.460806,-0.126, 2.887725,2.458444,-0.096, + 2.887725,2.458444,-0.096, 2.896205,2.456246,-0.088896, 2.960179,2.458666,-0.116676, + 3.037862,2.461603,-0.133344, 3.0373,2.463675,-0.144, 2.955275,2.460806,-0.126, + 2.955275,2.460806,-0.126, 2.960179,2.458666,-0.116676, 3.037862,2.461603,-0.133344, + 3.1224,2.4648,-0.1389, 3.126562,2.466797,-0.15, 3.0373,2.463675,-0.144, + 3.0373,2.463675,-0.144, 3.037862,2.461603,-0.133344, 3.1224,2.4648,-0.1389, + 3.206938,2.467997,-0.133344, 3.215825,2.469919,-0.144, 3.126562,2.466797,-0.15, + 3.126562,2.466797,-0.15, 3.1224,2.4648,-0.1389, 3.206938,2.467997,-0.133344, + 3.284621,2.470934,-0.116676, 3.29785,2.472787,-0.126, 3.215825,2.469919,-0.144, + 3.215825,2.469919,-0.144, 3.206938,2.467997,-0.133344, 3.284621,2.470934,-0.116676, + 3.348595,2.473354,-0.088896, 3.3654,2.47515,-0.096, 3.29785,2.472787,-0.126, + 3.29785,2.472787,-0.126, 3.284621,2.470934,-0.116676, 3.348595,2.473354,-0.088896, + 3.392006,2.474995,-0.050004, 3.411237,2.476753,-0.054, 3.3654,2.47515,-0.096, + 3.3654,2.47515,-0.096, 3.348595,2.473354,-0.088896, 3.392006,2.474995,-0.050004, + 3.408,2.4756,0, 3.428125,2.477344,0, 3.411237,2.476753,-0.054, + 3.411237,2.476753,-0.054, 3.392006,2.474995,-0.050004, 3.408,2.4756,0, + 2.856323,2.447812,-0.046332, 2.852794,2.454605,-0.050004, 2.8368,2.454,0, + 2.8368,2.454,0, 2.8414,2.44725,0, 2.856323,2.447812,-0.046332, + 2.896829,2.449338,-0.082368, 2.896205,2.456246,-0.088896, 2.852794,2.454605,-0.050004, + 2.852794,2.454605,-0.050004, 2.856323,2.447812,-0.046332, 2.896829,2.449338,-0.082368, + 2.956523,2.451588,-0.108108, 2.960179,2.458666,-0.116676, 2.896205,2.456246,-0.088896, + 2.896205,2.456246,-0.088896, 2.896829,2.449338,-0.082368, 2.956523,2.451588,-0.108108, + 3.029007,2.454319,-0.123552, 3.037862,2.461603,-0.133344, 2.960179,2.458666,-0.116676, + 2.960179,2.458666,-0.116676, 2.956523,2.451588,-0.108108, 3.029007,2.454319,-0.123552, + 3.107887,2.457291,-0.1287, 3.1224,2.4648,-0.1389, 3.037862,2.461603,-0.133344, + 3.037862,2.461603,-0.133344, 3.029007,2.454319,-0.123552, 3.107887,2.457291,-0.1287, + 3.186768,2.460263,-0.123552, 3.206938,2.467997,-0.133344, 3.1224,2.4648,-0.1389, + 3.1224,2.4648,-0.1389, 3.107887,2.457291,-0.1287, 3.186768,2.460263,-0.123552, + 3.259252,2.462994,-0.108108, 3.284621,2.470934,-0.116676, 3.206938,2.467997,-0.133344, + 3.206938,2.467997,-0.133344, 3.186768,2.460263,-0.123552, 3.259252,2.462994,-0.108108, + 3.318946,2.465243,-0.082368, 3.348595,2.473354,-0.088896, 3.284621,2.470934,-0.116676, + 3.284621,2.470934,-0.116676, 3.259252,2.462994,-0.108108, 3.318946,2.465243,-0.082368, + 3.359452,2.466769,-0.046332, 3.392006,2.474995,-0.050004, 3.348595,2.473354,-0.088896, + 3.348595,2.473354,-0.088896, 3.318946,2.465243,-0.082368, 3.359452,2.466769,-0.046332, + 3.374375,2.467331,0, 3.408,2.4756,0, 3.392006,2.474995,-0.050004, + 3.392006,2.474995,-0.050004, 3.359452,2.466769,-0.046332, 3.374375,2.467331,0, + 2.851331,2.436454,-0.043308, 2.856323,2.447812,-0.046332, 2.8414,2.44725,0, + 2.8414,2.44725,0, 2.8376,2.436,0, 2.851331,2.436454,-0.043308, + 2.888602,2.437685,-0.076992, 2.896829,2.449338,-0.082368, 2.856323,2.447812,-0.046332, + 2.856323,2.447812,-0.046332, 2.851331,2.436454,-0.043308, 2.888602,2.437685,-0.076992, + 2.943526,2.439499,-0.101052, 2.956523,2.451588,-0.108108, 2.896829,2.449338,-0.082368, + 2.896829,2.449338,-0.082368, 2.888602,2.437685,-0.076992, 2.943526,2.439499,-0.101052, + 3.010221,2.441702,-0.115488, 3.029007,2.454319,-0.123552, 2.956523,2.451588,-0.108108, + 2.956523,2.451588,-0.108108, 2.943526,2.439499,-0.101052, 3.010221,2.441702,-0.115488, + 3.0828,2.4441,-0.1203, 3.107887,2.457291,-0.1287, 3.029007,2.454319,-0.123552, + 3.029007,2.454319,-0.123552, 3.010221,2.441702,-0.115488, 3.0828,2.4441,-0.1203, + 3.155379,2.446498,-0.115488, 3.186768,2.460263,-0.123552, 3.107887,2.457291,-0.1287, + 3.107887,2.457291,-0.1287, 3.0828,2.4441,-0.1203, 3.155379,2.446498,-0.115488, + 3.222074,2.448701,-0.101052, 3.259252,2.462994,-0.108108, 3.186768,2.460263,-0.123552, + 3.186768,2.460263,-0.123552, 3.155379,2.446498,-0.115488, 3.222074,2.448701,-0.101052, + 3.276998,2.450515,-0.076992, 3.318946,2.465243,-0.082368, 3.259252,2.462994,-0.108108, + 3.259252,2.462994,-0.108108, 3.222074,2.448701,-0.101052, 3.276998,2.450515,-0.076992, + 3.314269,2.451746,-0.043308, 3.359452,2.466769,-0.046332, 3.318946,2.465243,-0.082368, + 3.318946,2.465243,-0.082368, 3.276998,2.450515,-0.076992, 3.314269,2.451746,-0.043308, + 3.328,2.4522,0, 3.374375,2.467331,0, 3.359452,2.466769,-0.046332, + 3.359452,2.466769,-0.046332, 3.314269,2.451746,-0.043308, 3.328,2.4522,0, + 2.836672,2.420519,-0.041256, 2.851331,2.436454,-0.043308, 2.8376,2.436,0, + 2.8376,2.436,0, 2.8242,2.42025,0, 2.836672,2.420519,-0.041256, + 2.870524,2.42125,-0.073344, 2.888602,2.437685,-0.076992, 2.851331,2.436454,-0.043308, + 2.851331,2.436454,-0.043308, 2.836672,2.420519,-0.041256, 2.870524,2.42125,-0.073344, + 2.920412,2.422328,-0.096264, 2.943526,2.439499,-0.101052, 2.888602,2.437685,-0.076992, + 2.888602,2.437685,-0.076992, 2.870524,2.42125,-0.073344, 2.920412,2.422328,-0.096264, + 2.98099,2.423636,-0.110016, 3.010221,2.441702,-0.115488, 2.943526,2.439499,-0.101052, + 2.943526,2.439499,-0.101052, 2.920412,2.422328,-0.096264, 2.98099,2.423636,-0.110016, + 3.046912,2.425059,-0.1146, 3.0828,2.4441,-0.1203, 3.010221,2.441702,-0.115488, + 3.010221,2.441702,-0.115488, 2.98099,2.423636,-0.110016, 3.046912,2.425059,-0.1146, + 3.112835,2.426483,-0.110016, 3.155379,2.446498,-0.115488, 3.0828,2.4441,-0.1203, + 3.0828,2.4441,-0.1203, 3.046912,2.425059,-0.1146, 3.112835,2.426483,-0.110016, + 3.173413,2.427791,-0.096264, 3.222074,2.448701,-0.101052, 3.155379,2.446498,-0.115488, + 3.155379,2.446498,-0.115488, 3.112835,2.426483,-0.110016, 3.173413,2.427791,-0.096264, + 3.223301,2.428868,-0.073344, 3.276998,2.450515,-0.076992, 3.222074,2.448701,-0.101052, + 3.222074,2.448701,-0.101052, 3.173413,2.427791,-0.096264, 3.223301,2.428868,-0.073344, + 3.257153,2.429599,-0.041256, 3.314269,2.451746,-0.043308, 3.276998,2.450515,-0.076992, + 3.276998,2.450515,-0.076992, 3.223301,2.428868,-0.073344, 3.257153,2.429599,-0.041256, + 3.269625,2.429869,0, 3.328,2.4522,0, 3.314269,2.451746,-0.043308, + 3.314269,2.451746,-0.043308, 3.257153,2.429599,-0.041256, 3.269625,2.429869,0, + 2.8112,2.4,-0.0405, 2.836672,2.420519,-0.041256, 2.8242,2.42025,0, + 2.8242,2.42025,0, 2.8,2.4,0, 2.8112,2.4,-0.0405, + 2.8416,2.4,-0.072, 2.870524,2.42125,-0.073344, 2.836672,2.420519,-0.041256, + 2.836672,2.420519,-0.041256, 2.8112,2.4,-0.0405, 2.8416,2.4,-0.072, + 2.8864,2.4,-0.0945, 2.920412,2.422328,-0.096264, 2.870524,2.42125,-0.073344, + 2.870524,2.42125,-0.073344, 2.8416,2.4,-0.072, 2.8864,2.4,-0.0945, + 2.9408,2.4,-0.108, 2.98099,2.423636,-0.110016, 2.920412,2.422328,-0.096264, + 2.920412,2.422328,-0.096264, 2.8864,2.4,-0.0945, 2.9408,2.4,-0.108, + 3,2.4,-0.1125, 3.046912,2.425059,-0.1146, 2.98099,2.423636,-0.110016, + 2.98099,2.423636,-0.110016, 2.9408,2.4,-0.108, 3,2.4,-0.1125, + 3.0592,2.4,-0.108, 3.112835,2.426483,-0.110016, 3.046912,2.425059,-0.1146, + 3.046912,2.425059,-0.1146, 3,2.4,-0.1125, 3.0592,2.4,-0.108, + 3.1136,2.4,-0.0945, 3.173413,2.427791,-0.096264, 3.112835,2.426483,-0.110016, + 3.112835,2.426483,-0.110016, 3.0592,2.4,-0.108, 3.1136,2.4,-0.0945, + 3.1584,2.4,-0.072, 3.223301,2.428868,-0.073344, 3.173413,2.427791,-0.096264, + 3.173413,2.427791,-0.096264, 3.1136,2.4,-0.0945, 3.1584,2.4,-0.072, + 3.1888,2.4,-0.0405, 3.257153,2.429599,-0.041256, 3.223301,2.428868,-0.073344, + 3.223301,2.428868,-0.073344, 3.1584,2.4,-0.072, 3.1888,2.4,-0.0405, + 3.2,2.4,0, 3.269625,2.429869,0, 3.257153,2.429599,-0.041256, + 3.257153,2.429599,-0.041256, 3.1888,2.4,-0.0405, 3.2,2.4,0, + 3.341018,2.425663,0.066744, 3.2832,2.4,0.0675, 3.3,2.4,0, + 3.3,2.4,0, 3.358625,2.425819,0, 3.341018,2.425663,0.066744, + 3.293227,2.42524,0.118656, 3.2376,2.4,0.12, 3.2832,2.4,0.0675, + 3.2832,2.4,0.0675, 3.341018,2.425663,0.066744, 3.293227,2.42524,0.118656, + 3.222799,2.424616,0.155736, 3.1704,2.4,0.1575, 3.2376,2.4,0.12, + 3.2376,2.4,0.12, 3.293227,2.42524,0.118656, 3.222799,2.424616,0.155736, + 3.137279,2.423859,0.177984, 3.0888,2.4,0.18, 3.1704,2.4,0.1575, + 3.1704,2.4,0.1575, 3.222799,2.424616,0.155736, 3.137279,2.423859,0.177984, + 3.044212,2.423034,0.1854, 3,2.4,0.1875, 3.0888,2.4,0.18, + 3.0888,2.4,0.18, 3.137279,2.423859,0.177984, 3.044212,2.423034,0.1854, + 2.951146,2.42221,0.177984, 2.9112,2.4,0.18, 3,2.4,0.1875, + 3,2.4,0.1875, 3.044212,2.423034,0.1854, 2.951146,2.42221,0.177984, + 2.865626,2.421453,0.155736, 2.8296,2.4,0.1575, 2.9112,2.4,0.18, + 2.9112,2.4,0.18, 2.951146,2.42221,0.177984, 2.865626,2.421453,0.155736, + 2.795198,2.420829,0.118656, 2.7624,2.4,0.12, 2.8296,2.4,0.1575, + 2.8296,2.4,0.1575, 2.865626,2.421453,0.155736, 2.795198,2.420829,0.118656, + 2.747407,2.420406,0.066744, 2.7168,2.4,0.0675, 2.7624,2.4,0.12, + 2.7624,2.4,0.12, 2.795198,2.420829,0.118656, 2.747407,2.420406,0.066744, + 2.7298,2.42025,0, 2.7,2.4,0, 2.7168,2.4,0.0675, + 2.7168,2.4,0.0675, 2.747407,2.420406,0.066744, 2.7298,2.42025,0, + 3.382035,2.446498,0.064692, 3.341018,2.425663,0.066744, 3.358625,2.425819,0, + 3.358625,2.425819,0, 3.4,2.4468,0, 3.382035,2.446498,0.064692, + 3.333274,2.445677,0.115008, 3.293227,2.42524,0.118656, 3.341018,2.425663,0.066744, + 3.341018,2.425663,0.066744, 3.382035,2.446498,0.064692, 3.333274,2.445677,0.115008, + 3.261414,2.444467,0.150948, 3.222799,2.424616,0.155736, 3.293227,2.42524,0.118656, + 3.293227,2.42524,0.118656, 3.333274,2.445677,0.115008, 3.261414,2.444467,0.150948, + 3.174157,2.442998,0.172512, 3.137279,2.423859,0.177984, 3.222799,2.424616,0.155736, + 3.222799,2.424616,0.155736, 3.261414,2.444467,0.150948, 3.174157,2.442998,0.172512, + 3.0792,2.4414,0.1797, 3.044212,2.423034,0.1854, 3.137279,2.423859,0.177984, + 3.137279,2.423859,0.177984, 3.174157,2.442998,0.172512, 3.0792,2.4414,0.1797, + 2.984243,2.439802,0.172512, 2.951146,2.42221,0.177984, 3.044212,2.423034,0.1854, + 3.044212,2.423034,0.1854, 3.0792,2.4414,0.1797, 2.984243,2.439802,0.172512, + 2.896986,2.438333,0.150948, 2.865626,2.421453,0.155736, 2.951146,2.42221,0.177984, + 2.951146,2.42221,0.177984, 2.984243,2.439802,0.172512, 2.896986,2.438333,0.150948, + 2.825126,2.437123,0.115008, 2.795198,2.420829,0.118656, 2.865626,2.421453,0.155736, + 2.865626,2.421453,0.155736, 2.896986,2.438333,0.150948, 2.825126,2.437123,0.115008, + 2.776365,2.436302,0.064692, 2.747407,2.420406,0.066744, 2.795198,2.420829,0.118656, + 2.795198,2.420829,0.118656, 2.825126,2.437123,0.115008, 2.776365,2.436302,0.064692, + 2.7584,2.436,0, 2.7298,2.42025,0, 2.747407,2.420406,0.066744, + 2.747407,2.420406,0.066744, 2.776365,2.436302,0.064692, 2.7584,2.436,0, + 3.406947,2.462176,0.061668, 3.382035,2.446498,0.064692, 3.4,2.4468,0, + 3.4,2.4468,0, 3.424875,2.462606,0, 3.406947,2.462176,0.061668, + 3.358286,2.461009,0.109632, 3.333274,2.445677,0.115008, 3.382035,2.446498,0.064692, + 3.382035,2.446498,0.064692, 3.406947,2.462176,0.061668, 3.358286,2.461009,0.109632, + 3.286576,2.459289,0.143892, 3.261414,2.444467,0.150948, 3.333274,2.445677,0.115008, + 3.333274,2.445677,0.115008, 3.358286,2.461009,0.109632, 3.286576,2.459289,0.143892, + 3.199498,2.457201,0.164448, 3.174157,2.442998,0.172512, 3.261414,2.444467,0.150948, + 3.261414,2.444467,0.150948, 3.286576,2.459289,0.143892, 3.199498,2.457201,0.164448, + 3.104738,2.454928,0.1713, 3.0792,2.4414,0.1797, 3.174157,2.442998,0.172512, + 3.174157,2.442998,0.172512, 3.199498,2.457201,0.164448, 3.104738,2.454928,0.1713, + 3.009977,2.452655,0.164448, 2.984243,2.439802,0.172512, 3.0792,2.4414,0.1797, + 3.0792,2.4414,0.1797, 3.104738,2.454928,0.1713, 3.009977,2.452655,0.164448, + 2.922899,2.450567,0.143892, 2.896986,2.438333,0.150948, 2.984243,2.439802,0.172512, + 2.984243,2.439802,0.172512, 3.009977,2.452655,0.164448, 2.922899,2.450567,0.143892, + 2.851189,2.448847,0.109632, 2.825126,2.437123,0.115008, 2.896986,2.438333,0.150948, + 2.896986,2.438333,0.150948, 2.922899,2.450567,0.143892, 2.851189,2.448847,0.109632, + 2.802528,2.44768,0.061668, 2.776365,2.436302,0.064692, 2.825126,2.437123,0.115008, + 2.825126,2.437123,0.115008, 2.851189,2.448847,0.109632, 2.802528,2.44768,0.061668, + 2.7846,2.44725,0, 2.7584,2.436,0, 2.776365,2.436302,0.064692, + 2.776365,2.436302,0.064692, 2.802528,2.44768,0.061668, 2.7846,2.44725,0, + 3.41645,2.472371,0.057996, 3.406947,2.462176,0.061668, 3.424875,2.462606,0, + 3.424875,2.462606,0, 3.434,2.4729,0, 3.41645,2.472371,0.057996, + 3.368813,2.470934,0.103104, 3.358286,2.461009,0.109632, 3.406947,2.462176,0.061668, + 3.406947,2.462176,0.061668, 3.41645,2.472371,0.057996, 3.368813,2.470934,0.103104, + 3.298611,2.468818,0.135324, 3.286576,2.459289,0.143892, 3.358286,2.461009,0.109632, + 3.358286,2.461009,0.109632, 3.368813,2.470934,0.103104, 3.298611,2.468818,0.135324, + 3.213366,2.466247,0.154656, 3.199498,2.457201,0.164448, 3.286576,2.459289,0.143892, + 3.286576,2.459289,0.143892, 3.298611,2.468818,0.135324, 3.213366,2.466247,0.154656, + 3.1206,2.46345,0.1611, 3.104738,2.454928,0.1713, 3.199498,2.457201,0.164448, + 3.199498,2.457201,0.164448, 3.213366,2.466247,0.154656, 3.1206,2.46345,0.1611, + 3.027834,2.460653,0.154656, 3.009977,2.452655,0.164448, 3.104738,2.454928,0.1713, + 3.104738,2.454928,0.1713, 3.1206,2.46345,0.1611, 3.027834,2.460653,0.154656, + 2.942589,2.458082,0.135324, 2.922899,2.450567,0.143892, 3.009977,2.452655,0.164448, + 3.009977,2.452655,0.164448, 3.027834,2.460653,0.154656, 2.942589,2.458082,0.135324, + 2.872387,2.455966,0.103104, 2.851189,2.448847,0.109632, 2.922899,2.450567,0.143892, + 2.922899,2.450567,0.143892, 2.942589,2.458082,0.135324, 2.872387,2.455966,0.103104, + 2.82475,2.454529,0.057996, 2.802528,2.44768,0.061668, 2.851189,2.448847,0.109632, + 2.851189,2.448847,0.109632, 2.872387,2.455966,0.103104, 2.82475,2.454529,0.057996, + 2.8072,2.454,0, 2.7846,2.44725,0, 2.802528,2.44768,0.061668, + 2.802528,2.44768,0.061668, 2.82475,2.454529,0.057996, 2.8072,2.454,0, + 3.411237,2.476753,0.054, 3.41645,2.472371,0.057996, 3.434,2.4729,0, + 3.434,2.4729,0, 3.428125,2.477344,0, 3.411237,2.476753,0.054, + 3.3654,2.47515,0.096, 3.368813,2.470934,0.103104, 3.41645,2.472371,0.057996, + 3.41645,2.472371,0.057996, 3.411237,2.476753,0.054, 3.3654,2.47515,0.096, + 3.29785,2.472788,0.126, 3.298611,2.468818,0.135324, 3.368813,2.470934,0.103104, + 3.368813,2.470934,0.103104, 3.3654,2.47515,0.096, 3.29785,2.472788,0.126, + 3.215825,2.469919,0.144, 3.213366,2.466247,0.154656, 3.298611,2.468818,0.135324, + 3.298611,2.468818,0.135324, 3.29785,2.472788,0.126, 3.215825,2.469919,0.144, + 3.126562,2.466797,0.15, 3.1206,2.46345,0.1611, 3.213366,2.466247,0.154656, + 3.213366,2.466247,0.154656, 3.215825,2.469919,0.144, 3.126562,2.466797,0.15, + 3.0373,2.463675,0.144, 3.027834,2.460653,0.154656, 3.1206,2.46345,0.1611, + 3.1206,2.46345,0.1611, 3.126562,2.466797,0.15, 3.0373,2.463675,0.144, + 2.955275,2.460806,0.126, 2.942589,2.458082,0.135324, 3.027834,2.460653,0.154656, + 3.027834,2.460653,0.154656, 3.0373,2.463675,0.144, 2.955275,2.460806,0.126, + 2.887725,2.458444,0.096, 2.872387,2.455966,0.103104, 2.942589,2.458082,0.135324, + 2.942589,2.458082,0.135324, 2.955275,2.460806,0.126, 2.887725,2.458444,0.096, + 2.841887,2.456841,0.054, 2.82475,2.454529,0.057996, 2.872387,2.455966,0.103104, + 2.872387,2.455966,0.103104, 2.887725,2.458444,0.096, 2.841887,2.456841,0.054, + 2.825,2.45625,0, 2.8072,2.454,0, 2.82475,2.454529,0.057996, + 2.82475,2.454529,0.057996, 2.841887,2.456841,0.054, 2.825,2.45625,0, + 3.392006,2.474995,0.050004, 3.411237,2.476753,0.054, 3.428125,2.477344,0, + 3.428125,2.477344,0, 3.408,2.4756,0, 3.392006,2.474995,0.050004, + 3.348595,2.473354,0.088896, 3.3654,2.47515,0.096, 3.411237,2.476753,0.054, + 3.411237,2.476753,0.054, 3.392006,2.474995,0.050004, 3.348595,2.473354,0.088896, + 3.284621,2.470934,0.116676, 3.29785,2.472788,0.126, 3.3654,2.47515,0.096, + 3.3654,2.47515,0.096, 3.348595,2.473354,0.088896, 3.284621,2.470934,0.116676, + 3.206938,2.467997,0.133344, 3.215825,2.469919,0.144, 3.29785,2.472788,0.126, + 3.29785,2.472788,0.126, 3.284621,2.470934,0.116676, 3.206938,2.467997,0.133344, + 3.1224,2.4648,0.1389, 3.126562,2.466797,0.15, 3.215825,2.469919,0.144, + 3.215825,2.469919,0.144, 3.206938,2.467997,0.133344, 3.1224,2.4648,0.1389, + 3.037862,2.461603,0.133344, 3.0373,2.463675,0.144, 3.126562,2.466797,0.15, + 3.126562,2.466797,0.15, 3.1224,2.4648,0.1389, 3.037862,2.461603,0.133344, + 2.960179,2.458666,0.116676, 2.955275,2.460806,0.126, 3.0373,2.463675,0.144, + 3.0373,2.463675,0.144, 3.037862,2.461603,0.133344, 2.960179,2.458666,0.116676, + 2.896205,2.456246,0.088896, 2.887725,2.458444,0.096, 2.955275,2.460806,0.126, + 2.955275,2.460806,0.126, 2.960179,2.458666,0.116676, 2.896205,2.456246,0.088896, + 2.852794,2.454605,0.050004, 2.841887,2.456841,0.054, 2.887725,2.458444,0.096, + 2.887725,2.458444,0.096, 2.896205,2.456246,0.088896, 2.852794,2.454605,0.050004, + 2.8368,2.454,0, 2.825,2.45625,0, 2.841887,2.456841,0.054, + 2.841887,2.456841,0.054, 2.852794,2.454605,0.050004, 2.8368,2.454,0, + 3.359452,2.466769,0.046332, 3.392006,2.474995,0.050004, 3.408,2.4756,0, + 3.408,2.4756,0, 3.374375,2.467331,0, 3.359452,2.466769,0.046332, + 3.318946,2.465243,0.082368, 3.348595,2.473354,0.088896, 3.392006,2.474995,0.050004, + 3.392006,2.474995,0.050004, 3.359452,2.466769,0.046332, 3.318946,2.465243,0.082368, + 3.259252,2.462994,0.108108, 3.284621,2.470934,0.116676, 3.348595,2.473354,0.088896, + 3.348595,2.473354,0.088896, 3.318946,2.465243,0.082368, 3.259252,2.462994,0.108108, + 3.186768,2.460263,0.123552, 3.206938,2.467997,0.133344, 3.284621,2.470934,0.116676, + 3.284621,2.470934,0.116676, 3.259252,2.462994,0.108108, 3.186768,2.460263,0.123552, + 3.107887,2.457291,0.1287, 3.1224,2.4648,0.1389, 3.206938,2.467997,0.133344, + 3.206938,2.467997,0.133344, 3.186768,2.460263,0.123552, 3.107887,2.457291,0.1287, + 3.029007,2.454319,0.123552, 3.037862,2.461603,0.133344, 3.1224,2.4648,0.1389, + 3.1224,2.4648,0.1389, 3.107887,2.457291,0.1287, 3.029007,2.454319,0.123552, + 2.956523,2.451588,0.108108, 2.960179,2.458666,0.116676, 3.037862,2.461603,0.133344, + 3.037862,2.461603,0.133344, 3.029007,2.454319,0.123552, 2.956523,2.451588,0.108108, + 2.896829,2.449338,0.082368, 2.896205,2.456246,0.088896, 2.960179,2.458666,0.116676, + 2.960179,2.458666,0.116676, 2.956523,2.451588,0.108108, 2.896829,2.449338,0.082368, + 2.856323,2.447812,0.046332, 2.852794,2.454605,0.050004, 2.896205,2.456246,0.088896, + 2.896205,2.456246,0.088896, 2.896829,2.449338,0.082368, 2.856323,2.447812,0.046332, + 2.8414,2.44725,0, 2.8368,2.454,0, 2.852794,2.454605,0.050004, + 2.852794,2.454605,0.050004, 2.856323,2.447812,0.046332, 2.8414,2.44725,0, + 3.314269,2.451746,0.043308, 3.359452,2.466769,0.046332, 3.374375,2.467331,0, + 3.374375,2.467331,0, 3.328,2.4522,0, 3.314269,2.451746,0.043308, + 3.276998,2.450515,0.076992, 3.318946,2.465243,0.082368, 3.359452,2.466769,0.046332, + 3.359452,2.466769,0.046332, 3.314269,2.451746,0.043308, 3.276998,2.450515,0.076992, + 3.222074,2.448701,0.101052, 3.259252,2.462994,0.108108, 3.318946,2.465243,0.082368, + 3.318946,2.465243,0.082368, 3.276998,2.450515,0.076992, 3.222074,2.448701,0.101052, + 3.155379,2.446498,0.115488, 3.186768,2.460263,0.123552, 3.259252,2.462994,0.108108, + 3.259252,2.462994,0.108108, 3.222074,2.448701,0.101052, 3.155379,2.446498,0.115488, + 3.0828,2.4441,0.1203, 3.107887,2.457291,0.1287, 3.186768,2.460263,0.123552, + 3.186768,2.460263,0.123552, 3.155379,2.446498,0.115488, 3.0828,2.4441,0.1203, + 3.010221,2.441702,0.115488, 3.029007,2.454319,0.123552, 3.107887,2.457291,0.1287, + 3.107887,2.457291,0.1287, 3.0828,2.4441,0.1203, 3.010221,2.441702,0.115488, + 2.943526,2.439499,0.101052, 2.956523,2.451588,0.108108, 3.029007,2.454319,0.123552, + 3.029007,2.454319,0.123552, 3.010221,2.441702,0.115488, 2.943526,2.439499,0.101052, + 2.888602,2.437685,0.076992, 2.896829,2.449338,0.082368, 2.956523,2.451588,0.108108, + 2.956523,2.451588,0.108108, 2.943526,2.439499,0.101052, 2.888602,2.437685,0.076992, + 2.851331,2.436454,0.043308, 2.856323,2.447812,0.046332, 2.896829,2.449338,0.082368, + 2.896829,2.449338,0.082368, 2.888602,2.437685,0.076992, 2.851331,2.436454,0.043308, + 2.8376,2.436,0, 2.8414,2.44725,0, 2.856323,2.447812,0.046332, + 2.856323,2.447812,0.046332, 2.851331,2.436454,0.043308, 2.8376,2.436,0, + 3.257153,2.429599,0.041256, 3.314269,2.451746,0.043308, 3.328,2.4522,0, + 3.328,2.4522,0, 3.269625,2.429869,0, 3.257153,2.429599,0.041256, + 3.223301,2.428868,0.073344, 3.276998,2.450515,0.076992, 3.314269,2.451746,0.043308, + 3.314269,2.451746,0.043308, 3.257153,2.429599,0.041256, 3.223301,2.428868,0.073344, + 3.173413,2.427791,0.096264, 3.222074,2.448701,0.101052, 3.276998,2.450515,0.076992, + 3.276998,2.450515,0.076992, 3.223301,2.428868,0.073344, 3.173413,2.427791,0.096264, + 3.112835,2.426483,0.110016, 3.155379,2.446498,0.115488, 3.222074,2.448701,0.101052, + 3.222074,2.448701,0.101052, 3.173413,2.427791,0.096264, 3.112835,2.426483,0.110016, + 3.046912,2.425059,0.1146, 3.0828,2.4441,0.1203, 3.155379,2.446498,0.115488, + 3.155379,2.446498,0.115488, 3.112835,2.426483,0.110016, 3.046912,2.425059,0.1146, + 2.98099,2.423636,0.110016, 3.010221,2.441702,0.115488, 3.0828,2.4441,0.1203, + 3.0828,2.4441,0.1203, 3.046912,2.425059,0.1146, 2.98099,2.423636,0.110016, + 2.920412,2.422328,0.096264, 2.943526,2.439499,0.101052, 3.010221,2.441702,0.115488, + 3.010221,2.441702,0.115488, 2.98099,2.423636,0.110016, 2.920412,2.422328,0.096264, + 2.870524,2.42125,0.073344, 2.888602,2.437685,0.076992, 2.943526,2.439499,0.101052, + 2.943526,2.439499,0.101052, 2.920412,2.422328,0.096264, 2.870524,2.42125,0.073344, + 2.836672,2.420519,0.041256, 2.851331,2.436454,0.043308, 2.888602,2.437685,0.076992, + 2.888602,2.437685,0.076992, 2.870524,2.42125,0.073344, 2.836672,2.420519,0.041256, + 2.8242,2.42025,0, 2.8376,2.436,0, 2.851331,2.436454,0.043308, + 2.851331,2.436454,0.043308, 2.836672,2.420519,0.041256, 2.8242,2.42025,0, + 3.1888,2.4,0.0405, 3.257153,2.429599,0.041256, 3.269625,2.429869,0, + 3.269625,2.429869,0, 3.2,2.4,0, 3.1888,2.4,0.0405, + 3.1584,2.4,0.072, 3.223301,2.428868,0.073344, 3.257153,2.429599,0.041256, + 3.257153,2.429599,0.041256, 3.1888,2.4,0.0405, 3.1584,2.4,0.072, + 3.1136,2.4,0.0945, 3.173413,2.427791,0.096264, 3.223301,2.428868,0.073344, + 3.223301,2.428868,0.073344, 3.1584,2.4,0.072, 3.1136,2.4,0.0945, + 3.0592,2.4,0.108, 3.112835,2.426483,0.110016, 3.173413,2.427791,0.096264, + 3.173413,2.427791,0.096264, 3.1136,2.4,0.0945, 3.0592,2.4,0.108, + 3,2.4,0.1125, 3.046912,2.425059,0.1146, 3.112835,2.426483,0.110016, + 3.112835,2.426483,0.110016, 3.0592,2.4,0.108, 3,2.4,0.1125, + 2.9408,2.4,0.108, 2.98099,2.423636,0.110016, 3.046912,2.425059,0.1146, + 3.046912,2.425059,0.1146, 3,2.4,0.1125, 2.9408,2.4,0.108, + 2.8864,2.4,0.0945, 2.920412,2.422328,0.096264, 2.98099,2.423636,0.110016, + 2.98099,2.423636,0.110016, 2.9408,2.4,0.108, 2.8864,2.4,0.0945, + 2.8416,2.4,0.072, 2.870524,2.42125,0.073344, 2.920412,2.422328,0.096264, + 2.920412,2.422328,0.096264, 2.8864,2.4,0.0945, 2.8416,2.4,0.072, + 2.8112,2.4,0.0405, 2.836672,2.420519,0.041256, 2.870524,2.42125,0.073344, + 2.870524,2.42125,0.073344, 2.8416,2.4,0.072, 2.8112,2.4,0.0405, + 2.8,2.4,0, 2.8242,2.42025,0, 2.836672,2.420519,0.041256, + 2.836672,2.420519,0.041256, 2.8112,2.4,0.0405, 2.8,2.4,0, + 0,3.15,0, 0.1946,3.14145,0, 0.192107,3.14145,-0.032048, + 0,3.15,0, 0.192107,3.14145,-0.032048, 0.18487,3.14145,-0.062272, + 0,3.15,0, 0.18487,3.14145,-0.062272, 0.173255,3.14145,-0.090306, + 0,3.15,0, 0.173255,3.14145,-0.090306, 0.157626,3.14145,-0.115787, + 0,3.15,0, 0.157626,3.14145,-0.115787, 0.138348,3.14145,-0.138348, + 0,3.15,0, 0.138348,3.14145,-0.138348, 0.115787,3.14145,-0.157626, + 0,3.15,0, 0.115787,3.14145,-0.157626, 0.090306,3.14145,-0.173255, + 0,3.15,0, 0.090306,3.14145,-0.173255, 0.062272,3.14145,-0.18487, + 0,3.15,0, 0.062272,3.14145,-0.18487, 0.032048,3.14145,-0.192107, + 0,3.15,0, 0.032048,3.14145,-0.192107, 0,3.14145,-0.1946, + 0.304843,3.1176,-0.050855, 0.192107,3.14145,-0.032048, 0.1946,3.14145,0, + 0.1946,3.14145,0, 0.3088,3.1176,0, 0.304843,3.1176,-0.050855, + 0.29336,3.1176,-0.098814, 0.18487,3.14145,-0.062272, 0.192107,3.14145,-0.032048, + 0.192107,3.14145,-0.032048, 0.304843,3.1176,-0.050855, 0.29336,3.1176,-0.098814, + 0.274928,3.1176,-0.143301, 0.173255,3.14145,-0.090306, 0.18487,3.14145,-0.062272, + 0.18487,3.14145,-0.062272, 0.29336,3.1176,-0.098814, 0.274928,3.1176,-0.143301, + 0.250127,3.1176,-0.183734, 0.157626,3.14145,-0.115787, 0.173255,3.14145,-0.090306, + 0.173255,3.14145,-0.090306, 0.274928,3.1176,-0.143301, 0.250127,3.1176,-0.183734, + 0.219536,3.1176,-0.219536, 0.138348,3.14145,-0.138348, 0.157626,3.14145,-0.115787, + 0.157626,3.14145,-0.115787, 0.250127,3.1176,-0.183734, 0.219536,3.1176,-0.219536, + 0.183734,3.1176,-0.250127, 0.115787,3.14145,-0.157626, 0.138348,3.14145,-0.138348, + 0.138348,3.14145,-0.138348, 0.219536,3.1176,-0.219536, 0.183734,3.1176,-0.250127, + 0.143301,3.1176,-0.274928, 0.090306,3.14145,-0.173255, 0.115787,3.14145,-0.157626, + 0.115787,3.14145,-0.157626, 0.183734,3.1176,-0.250127, 0.143301,3.1176,-0.274928, + 0.098814,3.1176,-0.29336, 0.062272,3.14145,-0.18487, 0.090306,3.14145,-0.173255, + 0.090306,3.14145,-0.173255, 0.143301,3.1176,-0.274928, 0.098814,3.1176,-0.29336, + 0.050855,3.1176,-0.304843, 0.032048,3.14145,-0.192107, 0.062272,3.14145,-0.18487, + 0.062272,3.14145,-0.18487, 0.098814,3.1176,-0.29336, 0.050855,3.1176,-0.304843, + 0,3.1176,-0.3088, 0,3.14145,-0.1946, 0.032048,3.14145,-0.192107, + 0.032048,3.14145,-0.192107, 0.050855,3.1176,-0.304843, 0,3.1176,-0.3088, + 0.35361,3.08115,-0.058988, 0.304843,3.1176,-0.050855, 0.3088,3.1176,0, + 0.3088,3.1176,0, 0.3582,3.08115,0, 0.35361,3.08115,-0.058988, + 0.340289,3.08115,-0.114619, 0.29336,3.1176,-0.098814, 0.304843,3.1176,-0.050855, + 0.304843,3.1176,-0.050855, 0.35361,3.08115,-0.058988, 0.340289,3.08115,-0.114619, + 0.318907,3.08115,-0.166221, 0.274928,3.1176,-0.143301, 0.29336,3.1176,-0.098814, + 0.29336,3.1176,-0.098814, 0.340289,3.08115,-0.114619, 0.318907,3.08115,-0.166221, + 0.290138,3.08115,-0.213123, 0.250127,3.1176,-0.183734, 0.274928,3.1176,-0.143301, + 0.274928,3.1176,-0.143301, 0.318907,3.08115,-0.166221, 0.290138,3.08115,-0.213123, + 0.254653,3.08115,-0.254653, 0.219536,3.1176,-0.219536, 0.250127,3.1176,-0.183734, + 0.250127,3.1176,-0.183734, 0.290138,3.08115,-0.213123, 0.254653,3.08115,-0.254653, + 0.213123,3.08115,-0.290138, 0.183734,3.1176,-0.250127, 0.219536,3.1176,-0.219536, + 0.219536,3.1176,-0.219536, 0.254653,3.08115,-0.254653, 0.213123,3.08115,-0.290138, + 0.166221,3.08115,-0.318907, 0.143301,3.1176,-0.274928, 0.183734,3.1176,-0.250127, + 0.183734,3.1176,-0.250127, 0.213123,3.08115,-0.290138, 0.166221,3.08115,-0.318907, + 0.114619,3.08115,-0.340289, 0.098814,3.1176,-0.29336, 0.143301,3.1176,-0.274928, + 0.143301,3.1176,-0.274928, 0.166221,3.08115,-0.318907, 0.114619,3.08115,-0.340289, + 0.058988,3.08115,-0.35361, 0.050855,3.1176,-0.304843, 0.098814,3.1176,-0.29336, + 0.098814,3.1176,-0.29336, 0.114619,3.08115,-0.340289, 0.058988,3.08115,-0.35361, + 0,3.08115,-0.3582, 0,3.1176,-0.3088, 0.050855,3.1176,-0.304843, + 0.050855,3.1176,-0.304843, 0.058988,3.08115,-0.35361, 0,3.08115,-0.3582, + 0.353807,3.0348,-0.059016, 0.35361,3.08115,-0.058988, 0.3582,3.08115,0, + 0.3582,3.08115,0, 0.3584,3.0348,0, 0.353807,3.0348,-0.059016, + 0.340477,3.0348,-0.114676, 0.340289,3.08115,-0.114619, 0.35361,3.08115,-0.058988, + 0.35361,3.08115,-0.058988, 0.353807,3.0348,-0.059016, 0.340477,3.0348,-0.114676, + 0.319082,3.0348,-0.166306, 0.318907,3.08115,-0.166221, 0.340289,3.08115,-0.114619, + 0.340289,3.08115,-0.114619, 0.340477,3.0348,-0.114676, 0.319082,3.0348,-0.166306, + 0.290295,3.0348,-0.213234, 0.290138,3.08115,-0.213123, 0.318907,3.08115,-0.166221, + 0.318907,3.08115,-0.166221, 0.319082,3.0348,-0.166306, 0.290295,3.0348,-0.213234, + 0.254788,3.0348,-0.254788, 0.254653,3.08115,-0.254653, 0.290138,3.08115,-0.213123, + 0.290138,3.08115,-0.213123, 0.290295,3.0348,-0.213234, 0.254788,3.0348,-0.254788, + 0.213234,3.0348,-0.290295, 0.213123,3.08115,-0.290138, 0.254653,3.08115,-0.254653, + 0.254653,3.08115,-0.254653, 0.254788,3.0348,-0.254788, 0.213234,3.0348,-0.290295, + 0.166306,3.0348,-0.319082, 0.166221,3.08115,-0.318907, 0.213123,3.08115,-0.290138, + 0.213123,3.08115,-0.290138, 0.213234,3.0348,-0.290295, 0.166306,3.0348,-0.319082, + 0.114676,3.0348,-0.340477, 0.114619,3.08115,-0.340289, 0.166221,3.08115,-0.318907, + 0.166221,3.08115,-0.318907, 0.166306,3.0348,-0.319082, 0.114676,3.0348,-0.340477, + 0.059016,3.0348,-0.353807, 0.058988,3.08115,-0.35361, 0.114619,3.08115,-0.340289, + 0.114619,3.08115,-0.340289, 0.114676,3.0348,-0.340477, 0.059016,3.0348,-0.353807, + 0,3.0348,-0.3584, 0,3.08115,-0.3582, 0.058988,3.08115,-0.35361, + 0.058988,3.08115,-0.35361, 0.059016,3.0348,-0.353807, 0,3.0348,-0.3584, + 0.320834,2.98125,-0.053508, 0.353807,3.0348,-0.059016, 0.3584,3.0348,0, + 0.3584,3.0348,0, 0.325,2.98125,0, 0.320834,2.98125,-0.053508, + 0.308744,2.98125,-0.103976, 0.340477,3.0348,-0.114676, 0.353807,3.0348,-0.059016, + 0.353807,3.0348,-0.059016, 0.320834,2.98125,-0.053508, 0.308744,2.98125,-0.103976, + 0.28934,2.98125,-0.150793, 0.319082,3.0348,-0.166306, 0.340477,3.0348,-0.114676, + 0.340477,3.0348,-0.114676, 0.308744,2.98125,-0.103976, 0.28934,2.98125,-0.150793, + 0.263232,2.98125,-0.193348, 0.290295,3.0348,-0.213234, 0.319082,3.0348,-0.166306, + 0.319082,3.0348,-0.166306, 0.28934,2.98125,-0.150793, 0.263232,2.98125,-0.193348, + 0.231031,2.98125,-0.231031, 0.254788,3.0348,-0.254788, 0.290295,3.0348,-0.213234, + 0.290295,3.0348,-0.213234, 0.263232,2.98125,-0.193348, 0.231031,2.98125,-0.231031, + 0.193348,2.98125,-0.263232, 0.213234,3.0348,-0.290295, 0.254788,3.0348,-0.254788, + 0.254788,3.0348,-0.254788, 0.231031,2.98125,-0.231031, 0.193348,2.98125,-0.263232, + 0.150793,2.98125,-0.28934, 0.166306,3.0348,-0.319082, 0.213234,3.0348,-0.290295, + 0.213234,3.0348,-0.290295, 0.193348,2.98125,-0.263232, 0.150793,2.98125,-0.28934, + 0.103976,2.98125,-0.308744, 0.114676,3.0348,-0.340477, 0.166306,3.0348,-0.319082, + 0.166306,3.0348,-0.319082, 0.150793,2.98125,-0.28934, 0.103976,2.98125,-0.308744, + 0.053508,2.98125,-0.320834, 0.059016,3.0348,-0.353807, 0.114676,3.0348,-0.340477, + 0.114676,3.0348,-0.340477, 0.103976,2.98125,-0.308744, 0.053508,2.98125,-0.320834, + 0,2.98125,-0.325, 0,3.0348,-0.3584, 0.059016,3.0348,-0.353807, + 0.059016,3.0348,-0.353807, 0.053508,2.98125,-0.320834, 0,2.98125,-0.325, + 0.270092,2.9232,-0.045032, 0.320834,2.98125,-0.053508, 0.325,2.98125,0, + 0.325,2.98125,0, 0.2736,2.9232,0, 0.270092,2.9232,-0.045032, + 0.25991,2.9232,-0.087511, 0.308744,2.98125,-0.103976, 0.320834,2.98125,-0.053508, + 0.320834,2.98125,-0.053508, 0.270092,2.9232,-0.045032, 0.25991,2.9232,-0.087511, + 0.243569,2.9232,-0.12692, 0.28934,2.98125,-0.150793, 0.308744,2.98125,-0.103976, + 0.308744,2.98125,-0.103976, 0.25991,2.9232,-0.087511, 0.243569,2.9232,-0.12692, + 0.221585,2.9232,-0.162745, 0.263232,2.98125,-0.193348, 0.28934,2.98125,-0.150793, + 0.28934,2.98125,-0.150793, 0.243569,2.9232,-0.12692, 0.221585,2.9232,-0.162745, + 0.194472,2.9232,-0.194472, 0.231031,2.98125,-0.231031, 0.263232,2.98125,-0.193348, + 0.263232,2.98125,-0.193348, 0.221585,2.9232,-0.162745, 0.194472,2.9232,-0.194472, + 0.162745,2.9232,-0.221585, 0.193348,2.98125,-0.263232, 0.231031,2.98125,-0.231031, + 0.231031,2.98125,-0.231031, 0.194472,2.9232,-0.194472, 0.162745,2.9232,-0.221585, + 0.12692,2.9232,-0.243569, 0.150793,2.98125,-0.28934, 0.193348,2.98125,-0.263232, + 0.193348,2.98125,-0.263232, 0.162745,2.9232,-0.221585, 0.12692,2.9232,-0.243569, + 0.087511,2.9232,-0.25991, 0.103976,2.98125,-0.308744, 0.150793,2.98125,-0.28934, + 0.150793,2.98125,-0.28934, 0.12692,2.9232,-0.243569, 0.087511,2.9232,-0.25991, + 0.045032,2.9232,-0.270092, 0.053508,2.98125,-0.320834, 0.103976,2.98125,-0.308744, + 0.103976,2.98125,-0.308744, 0.087511,2.9232,-0.25991, 0.045032,2.9232,-0.270092, + 0,2.9232,-0.2736, 0,2.98125,-0.325, 0.053508,2.98125,-0.320834, + 0.053508,2.98125,-0.320834, 0.045032,2.9232,-0.270092, 0,2.9232,-0.2736, + 0.216979,2.86335,-0.036157, 0.270092,2.9232,-0.045032, 0.2736,2.9232,0, + 0.2736,2.9232,0, 0.2198,2.86335,0, 0.216979,2.86335,-0.036157, + 0.208794,2.86335,-0.07027, 0.25991,2.9232,-0.087511, 0.270092,2.9232,-0.045032, + 0.270092,2.9232,-0.045032, 0.216979,2.86335,-0.036157, 0.208794,2.86335,-0.07027, + 0.195658,2.86335,-0.101925, 0.243569,2.9232,-0.12692, 0.25991,2.9232,-0.087511, + 0.25991,2.9232,-0.087511, 0.208794,2.86335,-0.07027, 0.195658,2.86335,-0.101925, + 0.177989,2.86335,-0.130707, 0.221585,2.9232,-0.162745, 0.243569,2.9232,-0.12692, + 0.243569,2.9232,-0.12692, 0.195658,2.86335,-0.101925, 0.177989,2.86335,-0.130707, + 0.1562,2.86335,-0.1562, 0.194472,2.9232,-0.194472, 0.221585,2.9232,-0.162745, + 0.221585,2.9232,-0.162745, 0.177989,2.86335,-0.130707, 0.1562,2.86335,-0.1562, + 0.130707,2.86335,-0.177989, 0.162745,2.9232,-0.221585, 0.194472,2.9232,-0.194472, + 0.194472,2.9232,-0.194472, 0.1562,2.86335,-0.1562, 0.130707,2.86335,-0.177989, + 0.101925,2.86335,-0.195658, 0.12692,2.9232,-0.243569, 0.162745,2.9232,-0.221585, + 0.162745,2.9232,-0.221585, 0.130707,2.86335,-0.177989, 0.101925,2.86335,-0.195658, + 0.07027,2.86335,-0.208794, 0.087511,2.9232,-0.25991, 0.12692,2.9232,-0.243569, + 0.12692,2.9232,-0.243569, 0.101925,2.86335,-0.195658, 0.07027,2.86335,-0.208794, + 0.036157,2.86335,-0.216979, 0.045032,2.9232,-0.270092, 0.087511,2.9232,-0.25991, + 0.087511,2.9232,-0.25991, 0.07027,2.86335,-0.208794, 0.036157,2.86335,-0.216979, + 0,2.86335,-0.2198, 0,2.9232,-0.2736, 0.045032,2.9232,-0.270092, + 0.045032,2.9232,-0.270092, 0.036157,2.86335,-0.216979, 0,2.86335,-0.2198, + 0.176897,2.8044,-0.02945, 0.216979,2.86335,-0.036157, 0.2198,2.86335,0, + 0.2198,2.86335,0, 0.1792,2.8044,0, 0.176897,2.8044,-0.02945, + 0.170215,2.8044,-0.057246, 0.208794,2.86335,-0.07027, 0.216979,2.86335,-0.036157, + 0.216979,2.86335,-0.036157, 0.176897,2.8044,-0.02945, 0.170215,2.8044,-0.057246, + 0.159496,2.8044,-0.083047, 0.195658,2.86335,-0.101925, 0.208794,2.86335,-0.07027, + 0.208794,2.86335,-0.07027, 0.170215,2.8044,-0.057246, 0.159496,2.8044,-0.083047, + 0.145078,2.8044,-0.106513, 0.177989,2.86335,-0.130707, 0.195658,2.86335,-0.101925, + 0.195658,2.86335,-0.101925, 0.159496,2.8044,-0.083047, 0.145078,2.8044,-0.106513, + 0.127304,2.8044,-0.127304, 0.1562,2.86335,-0.1562, 0.177989,2.86335,-0.130707, + 0.177989,2.86335,-0.130707, 0.145078,2.8044,-0.106513, 0.127304,2.8044,-0.127304, + 0.106513,2.8044,-0.145078, 0.130707,2.86335,-0.177989, 0.1562,2.86335,-0.1562, + 0.1562,2.86335,-0.1562, 0.127304,2.8044,-0.127304, 0.106513,2.8044,-0.145078, + 0.083047,2.8044,-0.159496, 0.101925,2.86335,-0.195658, 0.130707,2.86335,-0.177989, + 0.130707,2.86335,-0.177989, 0.106513,2.8044,-0.145078, 0.083047,2.8044,-0.159496, + 0.057246,2.8044,-0.170215, 0.07027,2.86335,-0.208794, 0.101925,2.86335,-0.195658, + 0.101925,2.86335,-0.195658, 0.083047,2.8044,-0.159496, 0.057246,2.8044,-0.170215, + 0.02945,2.8044,-0.176897, 0.036157,2.86335,-0.216979, 0.07027,2.86335,-0.208794, + 0.07027,2.86335,-0.208794, 0.057246,2.8044,-0.170215, 0.02945,2.8044,-0.176897, + 0,2.8044,-0.1792, 0,2.86335,-0.2198, 0.036157,2.86335,-0.216979, + 0.036157,2.86335,-0.216979, 0.02945,2.8044,-0.176897, 0,2.8044,-0.1792, + 0.165245,2.74905,-0.02748, 0.176897,2.8044,-0.02945, 0.1792,2.8044,0, + 0.1792,2.8044,0, 0.1674,2.74905,0, 0.165245,2.74905,-0.02748, + 0.158995,2.74905,-0.053428, 0.170215,2.8044,-0.057246, 0.176897,2.8044,-0.02945, + 0.176897,2.8044,-0.02945, 0.165245,2.74905,-0.02748, 0.158995,2.74905,-0.053428, + 0.148969,2.74905,-0.077523, 0.159496,2.8044,-0.083047, 0.170215,2.8044,-0.057246, + 0.170215,2.8044,-0.057246, 0.158995,2.74905,-0.053428, 0.148969,2.74905,-0.077523, + 0.135489,2.74905,-0.099446, 0.145078,2.8044,-0.106513, 0.159496,2.8044,-0.083047, + 0.159496,2.8044,-0.083047, 0.148969,2.74905,-0.077523, 0.135489,2.74905,-0.099446, + 0.118874,2.74905,-0.118874, 0.127304,2.8044,-0.127304, 0.145078,2.8044,-0.106513, + 0.145078,2.8044,-0.106513, 0.135489,2.74905,-0.099446, 0.118874,2.74905,-0.118874, + 0.099446,2.74905,-0.135489, 0.106513,2.8044,-0.145078, 0.127304,2.8044,-0.127304, + 0.127304,2.8044,-0.127304, 0.118874,2.74905,-0.118874, 0.099446,2.74905,-0.135489, + 0.077523,2.74905,-0.148969, 0.083047,2.8044,-0.159496, 0.106513,2.8044,-0.145078, + 0.106513,2.8044,-0.145078, 0.099446,2.74905,-0.135489, 0.077523,2.74905,-0.148969, + 0.053428,2.74905,-0.158995, 0.057246,2.8044,-0.170215, 0.083047,2.8044,-0.159496, + 0.083047,2.8044,-0.159496, 0.077523,2.74905,-0.148969, 0.053428,2.74905,-0.158995, + 0.02748,2.74905,-0.165245, 0.02945,2.8044,-0.176897, 0.057246,2.8044,-0.170215, + 0.057246,2.8044,-0.170215, 0.053428,2.74905,-0.158995, 0.02748,2.74905,-0.165245, + 0,2.74905,-0.1674, 0,2.8044,-0.1792, 0.02945,2.8044,-0.176897, + 0.02945,2.8044,-0.176897, 0.02748,2.74905,-0.165245, 0,2.74905,-0.1674, + 0.197424,2.7,-0.032816, 0.165245,2.74905,-0.02748, 0.1674,2.74905,0, + 0.1674,2.74905,0, 0.2,2.7,0, 0.197424,2.7,-0.032816, + 0.189952,2.7,-0.063808, 0.158995,2.74905,-0.053428, 0.165245,2.74905,-0.02748, + 0.165245,2.74905,-0.02748, 0.197424,2.7,-0.032816, 0.189952,2.7,-0.063808, + 0.177968,2.7,-0.092592, 0.148969,2.74905,-0.077523, 0.158995,2.74905,-0.053428, + 0.158995,2.74905,-0.053428, 0.189952,2.7,-0.063808, 0.177968,2.7,-0.092592, + 0.161856,2.7,-0.118784, 0.135489,2.74905,-0.099446, 0.148969,2.74905,-0.077523, + 0.148969,2.74905,-0.077523, 0.177968,2.7,-0.092592, 0.161856,2.7,-0.118784, + 0.142,2.7,-0.142, 0.118874,2.74905,-0.118874, 0.135489,2.74905,-0.099446, + 0.135489,2.74905,-0.099446, 0.161856,2.7,-0.118784, 0.142,2.7,-0.142, + 0.118784,2.7,-0.161856, 0.099446,2.74905,-0.135489, 0.118874,2.74905,-0.118874, + 0.118874,2.74905,-0.118874, 0.142,2.7,-0.142, 0.118784,2.7,-0.161856, + 0.092592,2.7,-0.177968, 0.077523,2.74905,-0.148969, 0.099446,2.74905,-0.135489, + 0.099446,2.74905,-0.135489, 0.118784,2.7,-0.161856, 0.092592,2.7,-0.177968, + 0.063808,2.7,-0.189952, 0.053428,2.74905,-0.158995, 0.077523,2.74905,-0.148969, + 0.077523,2.74905,-0.148969, 0.092592,2.7,-0.177968, 0.063808,2.7,-0.189952, + 0.032816,2.7,-0.197424, 0.02748,2.74905,-0.165245, 0.053428,2.74905,-0.158995, + 0.053428,2.74905,-0.158995, 0.063808,2.7,-0.189952, 0.032816,2.7,-0.197424, + 0,2.7,-0.2, 0,2.74905,-0.1674, 0.02748,2.74905,-0.165245, + 0.02748,2.74905,-0.165245, 0.032816,2.7,-0.197424, 0,2.7,-0.2, + 0,3.15,0, 0,3.14145,-0.1946, -0.032048,3.14145,-0.192107, + 0,3.15,0, -0.032048,3.14145,-0.192107, -0.062272,3.14145,-0.18487, + 0,3.15,0, -0.062272,3.14145,-0.18487, -0.090306,3.14145,-0.173255, + 0,3.15,0, -0.090306,3.14145,-0.173255, -0.115787,3.14145,-0.157626, + 0,3.15,0, -0.115787,3.14145,-0.157626, -0.138348,3.14145,-0.138348, + 0,3.15,0, -0.138348,3.14145,-0.138348, -0.157626,3.14145,-0.115787, + 0,3.15,0, -0.157626,3.14145,-0.115787, -0.173255,3.14145,-0.090306, + 0,3.15,0, -0.173255,3.14145,-0.090306, -0.18487,3.14145,-0.062272, + 0,3.15,0, -0.18487,3.14145,-0.062272, -0.192107,3.14145,-0.032048, + 0,3.15,0, -0.192107,3.14145,-0.032048, -0.1946,3.14145,0, + -0.050855,3.1176,-0.304843, -0.032048,3.14145,-0.192107, 0,3.14145,-0.1946, + 0,3.14145,-0.1946, 0,3.1176,-0.3088, -0.050855,3.1176,-0.304843, + -0.098814,3.1176,-0.29336, -0.062272,3.14145,-0.18487, -0.032048,3.14145,-0.192107, + -0.032048,3.14145,-0.192107, -0.050855,3.1176,-0.304843, -0.098814,3.1176,-0.29336, + -0.143301,3.1176,-0.274928, -0.090306,3.14145,-0.173255, -0.062272,3.14145,-0.18487, + -0.062272,3.14145,-0.18487, -0.098814,3.1176,-0.29336, -0.143301,3.1176,-0.274928, + -0.183734,3.1176,-0.250127, -0.115787,3.14145,-0.157626, -0.090306,3.14145,-0.173255, + -0.090306,3.14145,-0.173255, -0.143301,3.1176,-0.274928, -0.183734,3.1176,-0.250127, + -0.219536,3.1176,-0.219536, -0.138348,3.14145,-0.138348, -0.115787,3.14145,-0.157626, + -0.115787,3.14145,-0.157626, -0.183734,3.1176,-0.250127, -0.219536,3.1176,-0.219536, + -0.250127,3.1176,-0.183734, -0.157626,3.14145,-0.115787, -0.138348,3.14145,-0.138348, + -0.138348,3.14145,-0.138348, -0.219536,3.1176,-0.219536, -0.250127,3.1176,-0.183734, + -0.274928,3.1176,-0.143301, -0.173255,3.14145,-0.090306, -0.157626,3.14145,-0.115787, + -0.157626,3.14145,-0.115787, -0.250127,3.1176,-0.183734, -0.274928,3.1176,-0.143301, + -0.29336,3.1176,-0.098814, -0.18487,3.14145,-0.062272, -0.173255,3.14145,-0.090306, + -0.173255,3.14145,-0.090306, -0.274928,3.1176,-0.143301, -0.29336,3.1176,-0.098814, + -0.304843,3.1176,-0.050855, -0.192107,3.14145,-0.032048, -0.18487,3.14145,-0.062272, + -0.18487,3.14145,-0.062272, -0.29336,3.1176,-0.098814, -0.304843,3.1176,-0.050855, + -0.3088,3.1176,0, -0.1946,3.14145,0, -0.192107,3.14145,-0.032048, + -0.192107,3.14145,-0.032048, -0.304843,3.1176,-0.050855, -0.3088,3.1176,0, + -0.058988,3.08115,-0.35361, -0.050855,3.1176,-0.304843, 0,3.1176,-0.3088, + 0,3.1176,-0.3088, 0,3.08115,-0.3582, -0.058988,3.08115,-0.35361, + -0.114619,3.08115,-0.340289, -0.098814,3.1176,-0.29336, -0.050855,3.1176,-0.304843, + -0.050855,3.1176,-0.304843, -0.058988,3.08115,-0.35361, -0.114619,3.08115,-0.340289, + -0.166221,3.08115,-0.318907, -0.143301,3.1176,-0.274928, -0.098814,3.1176,-0.29336, + -0.098814,3.1176,-0.29336, -0.114619,3.08115,-0.340289, -0.166221,3.08115,-0.318907, + -0.213123,3.08115,-0.290138, -0.183734,3.1176,-0.250127, -0.143301,3.1176,-0.274928, + -0.143301,3.1176,-0.274928, -0.166221,3.08115,-0.318907, -0.213123,3.08115,-0.290138, + -0.254653,3.08115,-0.254653, -0.219536,3.1176,-0.219536, -0.183734,3.1176,-0.250127, + -0.183734,3.1176,-0.250127, -0.213123,3.08115,-0.290138, -0.254653,3.08115,-0.254653, + -0.290138,3.08115,-0.213123, -0.250127,3.1176,-0.183734, -0.219536,3.1176,-0.219536, + -0.219536,3.1176,-0.219536, -0.254653,3.08115,-0.254653, -0.290138,3.08115,-0.213123, + -0.318907,3.08115,-0.166221, -0.274928,3.1176,-0.143301, -0.250127,3.1176,-0.183734, + -0.250127,3.1176,-0.183734, -0.290138,3.08115,-0.213123, -0.318907,3.08115,-0.166221, + -0.340289,3.08115,-0.114619, -0.29336,3.1176,-0.098814, -0.274928,3.1176,-0.143301, + -0.274928,3.1176,-0.143301, -0.318907,3.08115,-0.166221, -0.340289,3.08115,-0.114619, + -0.35361,3.08115,-0.058988, -0.304843,3.1176,-0.050855, -0.29336,3.1176,-0.098814, + -0.29336,3.1176,-0.098814, -0.340289,3.08115,-0.114619, -0.35361,3.08115,-0.058988, + -0.3582,3.08115,0, -0.3088,3.1176,0, -0.304843,3.1176,-0.050855, + -0.304843,3.1176,-0.050855, -0.35361,3.08115,-0.058988, -0.3582,3.08115,0, + -0.059016,3.0348,-0.353807, -0.058988,3.08115,-0.35361, 0,3.08115,-0.3582, + 0,3.08115,-0.3582, 0,3.0348,-0.3584, -0.059016,3.0348,-0.353807, + -0.114676,3.0348,-0.340477, -0.114619,3.08115,-0.340289, -0.058988,3.08115,-0.35361, + -0.058988,3.08115,-0.35361, -0.059016,3.0348,-0.353807, -0.114676,3.0348,-0.340477, + -0.166306,3.0348,-0.319082, -0.166221,3.08115,-0.318907, -0.114619,3.08115,-0.340289, + -0.114619,3.08115,-0.340289, -0.114676,3.0348,-0.340477, -0.166306,3.0348,-0.319082, + -0.213234,3.0348,-0.290295, -0.213123,3.08115,-0.290138, -0.166221,3.08115,-0.318907, + -0.166221,3.08115,-0.318907, -0.166306,3.0348,-0.319082, -0.213234,3.0348,-0.290295, + -0.254788,3.0348,-0.254788, -0.254653,3.08115,-0.254653, -0.213123,3.08115,-0.290138, + -0.213123,3.08115,-0.290138, -0.213234,3.0348,-0.290295, -0.254788,3.0348,-0.254788, + -0.290295,3.0348,-0.213234, -0.290138,3.08115,-0.213123, -0.254653,3.08115,-0.254653, + -0.254653,3.08115,-0.254653, -0.254788,3.0348,-0.254788, -0.290295,3.0348,-0.213234, + -0.319082,3.0348,-0.166306, -0.318907,3.08115,-0.166221, -0.290138,3.08115,-0.213123, + -0.290138,3.08115,-0.213123, -0.290295,3.0348,-0.213234, -0.319082,3.0348,-0.166306, + -0.340477,3.0348,-0.114676, -0.340289,3.08115,-0.114619, -0.318907,3.08115,-0.166221, + -0.318907,3.08115,-0.166221, -0.319082,3.0348,-0.166306, -0.340477,3.0348,-0.114676, + -0.353807,3.0348,-0.059016, -0.35361,3.08115,-0.058988, -0.340289,3.08115,-0.114619, + -0.340289,3.08115,-0.114619, -0.340477,3.0348,-0.114676, -0.353807,3.0348,-0.059016, + -0.3584,3.0348,0, -0.3582,3.08115,0, -0.35361,3.08115,-0.058988, + -0.35361,3.08115,-0.058988, -0.353807,3.0348,-0.059016, -0.3584,3.0348,0, + -0.053508,2.98125,-0.320834, -0.059016,3.0348,-0.353807, 0,3.0348,-0.3584, + 0,3.0348,-0.3584, 0,2.98125,-0.325, -0.053508,2.98125,-0.320834, + -0.103976,2.98125,-0.308744, -0.114676,3.0348,-0.340477, -0.059016,3.0348,-0.353807, + -0.059016,3.0348,-0.353807, -0.053508,2.98125,-0.320834, -0.103976,2.98125,-0.308744, + -0.150793,2.98125,-0.28934, -0.166306,3.0348,-0.319082, -0.114676,3.0348,-0.340477, + -0.114676,3.0348,-0.340477, -0.103976,2.98125,-0.308744, -0.150793,2.98125,-0.28934, + -0.193348,2.98125,-0.263232, -0.213234,3.0348,-0.290295, -0.166306,3.0348,-0.319082, + -0.166306,3.0348,-0.319082, -0.150793,2.98125,-0.28934, -0.193348,2.98125,-0.263232, + -0.231031,2.98125,-0.231031, -0.254788,3.0348,-0.254788, -0.213234,3.0348,-0.290295, + -0.213234,3.0348,-0.290295, -0.193348,2.98125,-0.263232, -0.231031,2.98125,-0.231031, + -0.263232,2.98125,-0.193348, -0.290295,3.0348,-0.213234, -0.254788,3.0348,-0.254788, + -0.254788,3.0348,-0.254788, -0.231031,2.98125,-0.231031, -0.263232,2.98125,-0.193348, + -0.28934,2.98125,-0.150793, -0.319082,3.0348,-0.166306, -0.290295,3.0348,-0.213234, + -0.290295,3.0348,-0.213234, -0.263232,2.98125,-0.193348, -0.28934,2.98125,-0.150793, + -0.308744,2.98125,-0.103976, -0.340477,3.0348,-0.114676, -0.319082,3.0348,-0.166306, + -0.319082,3.0348,-0.166306, -0.28934,2.98125,-0.150793, -0.308744,2.98125,-0.103976, + -0.320834,2.98125,-0.053508, -0.353807,3.0348,-0.059016, -0.340477,3.0348,-0.114676, + -0.340477,3.0348,-0.114676, -0.308744,2.98125,-0.103976, -0.320834,2.98125,-0.053508, + -0.325,2.98125,0, -0.3584,3.0348,0, -0.353807,3.0348,-0.059016, + -0.353807,3.0348,-0.059016, -0.320834,2.98125,-0.053508, -0.325,2.98125,0, + -0.045032,2.9232,-0.270092, -0.053508,2.98125,-0.320834, 0,2.98125,-0.325, + 0,2.98125,-0.325, 0,2.9232,-0.2736, -0.045032,2.9232,-0.270092, + -0.087511,2.9232,-0.25991, -0.103976,2.98125,-0.308744, -0.053508,2.98125,-0.320834, + -0.053508,2.98125,-0.320834, -0.045032,2.9232,-0.270092, -0.087511,2.9232,-0.25991, + -0.12692,2.9232,-0.243569, -0.150793,2.98125,-0.28934, -0.103976,2.98125,-0.308744, + -0.103976,2.98125,-0.308744, -0.087511,2.9232,-0.25991, -0.12692,2.9232,-0.243569, + -0.162745,2.9232,-0.221585, -0.193348,2.98125,-0.263232, -0.150793,2.98125,-0.28934, + -0.150793,2.98125,-0.28934, -0.12692,2.9232,-0.243569, -0.162745,2.9232,-0.221585, + -0.194472,2.9232,-0.194472, -0.231031,2.98125,-0.231031, -0.193348,2.98125,-0.263232, + -0.193348,2.98125,-0.263232, -0.162745,2.9232,-0.221585, -0.194472,2.9232,-0.194472, + -0.221585,2.9232,-0.162745, -0.263232,2.98125,-0.193348, -0.231031,2.98125,-0.231031, + -0.231031,2.98125,-0.231031, -0.194472,2.9232,-0.194472, -0.221585,2.9232,-0.162745, + -0.243569,2.9232,-0.12692, -0.28934,2.98125,-0.150793, -0.263232,2.98125,-0.193348, + -0.263232,2.98125,-0.193348, -0.221585,2.9232,-0.162745, -0.243569,2.9232,-0.12692, + -0.25991,2.9232,-0.087511, -0.308744,2.98125,-0.103976, -0.28934,2.98125,-0.150793, + -0.28934,2.98125,-0.150793, -0.243569,2.9232,-0.12692, -0.25991,2.9232,-0.087511, + -0.270092,2.9232,-0.045032, -0.320834,2.98125,-0.053508, -0.308744,2.98125,-0.103976, + -0.308744,2.98125,-0.103976, -0.25991,2.9232,-0.087511, -0.270092,2.9232,-0.045032, + -0.2736,2.9232,0, -0.325,2.98125,0, -0.320834,2.98125,-0.053508, + -0.320834,2.98125,-0.053508, -0.270092,2.9232,-0.045032, -0.2736,2.9232,0, + -0.036157,2.86335,-0.216979, -0.045032,2.9232,-0.270092, 0,2.9232,-0.2736, + 0,2.9232,-0.2736, 0,2.86335,-0.2198, -0.036157,2.86335,-0.216979, + -0.07027,2.86335,-0.208794, -0.087511,2.9232,-0.25991, -0.045032,2.9232,-0.270092, + -0.045032,2.9232,-0.270092, -0.036157,2.86335,-0.216979, -0.07027,2.86335,-0.208794, + -0.101925,2.86335,-0.195658, -0.12692,2.9232,-0.243569, -0.087511,2.9232,-0.25991, + -0.087511,2.9232,-0.25991, -0.07027,2.86335,-0.208794, -0.101925,2.86335,-0.195658, + -0.130707,2.86335,-0.177989, -0.162745,2.9232,-0.221585, -0.12692,2.9232,-0.243569, + -0.12692,2.9232,-0.243569, -0.101925,2.86335,-0.195658, -0.130707,2.86335,-0.177989, + -0.1562,2.86335,-0.1562, -0.194472,2.9232,-0.194472, -0.162745,2.9232,-0.221585, + -0.162745,2.9232,-0.221585, -0.130707,2.86335,-0.177989, -0.1562,2.86335,-0.1562, + -0.177989,2.86335,-0.130707, -0.221585,2.9232,-0.162745, -0.194472,2.9232,-0.194472, + -0.194472,2.9232,-0.194472, -0.1562,2.86335,-0.1562, -0.177989,2.86335,-0.130707, + -0.195658,2.86335,-0.101925, -0.243569,2.9232,-0.12692, -0.221585,2.9232,-0.162745, + -0.221585,2.9232,-0.162745, -0.177989,2.86335,-0.130707, -0.195658,2.86335,-0.101925, + -0.208794,2.86335,-0.07027, -0.25991,2.9232,-0.087511, -0.243569,2.9232,-0.12692, + -0.243569,2.9232,-0.12692, -0.195658,2.86335,-0.101925, -0.208794,2.86335,-0.07027, + -0.216979,2.86335,-0.036157, -0.270092,2.9232,-0.045032, -0.25991,2.9232,-0.087511, + -0.25991,2.9232,-0.087511, -0.208794,2.86335,-0.07027, -0.216979,2.86335,-0.036157, + -0.2198,2.86335,0, -0.2736,2.9232,0, -0.270092,2.9232,-0.045032, + -0.270092,2.9232,-0.045032, -0.216979,2.86335,-0.036157, -0.2198,2.86335,0, + -0.02945,2.8044,-0.176897, -0.036157,2.86335,-0.216979, 0,2.86335,-0.2198, + 0,2.86335,-0.2198, 0,2.8044,-0.1792, -0.02945,2.8044,-0.176897, + -0.057246,2.8044,-0.170215, -0.07027,2.86335,-0.208794, -0.036157,2.86335,-0.216979, + -0.036157,2.86335,-0.216979, -0.02945,2.8044,-0.176897, -0.057246,2.8044,-0.170215, + -0.083047,2.8044,-0.159496, -0.101925,2.86335,-0.195658, -0.07027,2.86335,-0.208794, + -0.07027,2.86335,-0.208794, -0.057246,2.8044,-0.170215, -0.083047,2.8044,-0.159496, + -0.106513,2.8044,-0.145078, -0.130707,2.86335,-0.177989, -0.101925,2.86335,-0.195658, + -0.101925,2.86335,-0.195658, -0.083047,2.8044,-0.159496, -0.106513,2.8044,-0.145078, + -0.127304,2.8044,-0.127304, -0.1562,2.86335,-0.1562, -0.130707,2.86335,-0.177989, + -0.130707,2.86335,-0.177989, -0.106513,2.8044,-0.145078, -0.127304,2.8044,-0.127304, + -0.145078,2.8044,-0.106513, -0.177989,2.86335,-0.130707, -0.1562,2.86335,-0.1562, + -0.1562,2.86335,-0.1562, -0.127304,2.8044,-0.127304, -0.145078,2.8044,-0.106513, + -0.159496,2.8044,-0.083047, -0.195658,2.86335,-0.101925, -0.177989,2.86335,-0.130707, + -0.177989,2.86335,-0.130707, -0.145078,2.8044,-0.106513, -0.159496,2.8044,-0.083047, + -0.170215,2.8044,-0.057246, -0.208794,2.86335,-0.07027, -0.195658,2.86335,-0.101925, + -0.195658,2.86335,-0.101925, -0.159496,2.8044,-0.083047, -0.170215,2.8044,-0.057246, + -0.176897,2.8044,-0.02945, -0.216979,2.86335,-0.036157, -0.208794,2.86335,-0.07027, + -0.208794,2.86335,-0.07027, -0.170215,2.8044,-0.057246, -0.176897,2.8044,-0.02945, + -0.1792,2.8044,0, -0.2198,2.86335,0, -0.216979,2.86335,-0.036157, + -0.216979,2.86335,-0.036157, -0.176897,2.8044,-0.02945, -0.1792,2.8044,0, + -0.02748,2.74905,-0.165245, -0.02945,2.8044,-0.176897, 0,2.8044,-0.1792, + 0,2.8044,-0.1792, 0,2.74905,-0.1674, -0.02748,2.74905,-0.165245, + -0.053428,2.74905,-0.158995, -0.057246,2.8044,-0.170215, -0.02945,2.8044,-0.176897, + -0.02945,2.8044,-0.176897, -0.02748,2.74905,-0.165245, -0.053428,2.74905,-0.158995, + -0.077523,2.74905,-0.148969, -0.083047,2.8044,-0.159496, -0.057246,2.8044,-0.170215, + -0.057246,2.8044,-0.170215, -0.053428,2.74905,-0.158995, -0.077523,2.74905,-0.148969, + -0.099446,2.74905,-0.135489, -0.106513,2.8044,-0.145078, -0.083047,2.8044,-0.159496, + -0.083047,2.8044,-0.159496, -0.077523,2.74905,-0.148969, -0.099446,2.74905,-0.135489, + -0.118874,2.74905,-0.118874, -0.127304,2.8044,-0.127304, -0.106513,2.8044,-0.145078, + -0.106513,2.8044,-0.145078, -0.099446,2.74905,-0.135489, -0.118874,2.74905,-0.118874, + -0.135489,2.74905,-0.099446, -0.145078,2.8044,-0.106513, -0.127304,2.8044,-0.127304, + -0.127304,2.8044,-0.127304, -0.118874,2.74905,-0.118874, -0.135489,2.74905,-0.099446, + -0.148969,2.74905,-0.077523, -0.159496,2.8044,-0.083047, -0.145078,2.8044,-0.106513, + -0.145078,2.8044,-0.106513, -0.135489,2.74905,-0.099446, -0.148969,2.74905,-0.077523, + -0.158995,2.74905,-0.053428, -0.170215,2.8044,-0.057246, -0.159496,2.8044,-0.083047, + -0.159496,2.8044,-0.083047, -0.148969,2.74905,-0.077523, -0.158995,2.74905,-0.053428, + -0.165245,2.74905,-0.02748, -0.176897,2.8044,-0.02945, -0.170215,2.8044,-0.057246, + -0.170215,2.8044,-0.057246, -0.158995,2.74905,-0.053428, -0.165245,2.74905,-0.02748, + -0.1674,2.74905,0, -0.1792,2.8044,0, -0.176897,2.8044,-0.02945, + -0.176897,2.8044,-0.02945, -0.165245,2.74905,-0.02748, -0.1674,2.74905,0, + -0.032816,2.7,-0.197424, -0.02748,2.74905,-0.165245, 0,2.74905,-0.1674, + 0,2.74905,-0.1674, 0,2.7,-0.2, -0.032816,2.7,-0.197424, + -0.063808,2.7,-0.189952, -0.053428,2.74905,-0.158995, -0.02748,2.74905,-0.165245, + -0.02748,2.74905,-0.165245, -0.032816,2.7,-0.197424, -0.063808,2.7,-0.189952, + -0.092592,2.7,-0.177968, -0.077523,2.74905,-0.148969, -0.053428,2.74905,-0.158995, + -0.053428,2.74905,-0.158995, -0.063808,2.7,-0.189952, -0.092592,2.7,-0.177968, + -0.118784,2.7,-0.161856, -0.099446,2.74905,-0.135489, -0.077523,2.74905,-0.148969, + -0.077523,2.74905,-0.148969, -0.092592,2.7,-0.177968, -0.118784,2.7,-0.161856, + -0.142,2.7,-0.142, -0.118874,2.74905,-0.118874, -0.099446,2.74905,-0.135489, + -0.099446,2.74905,-0.135489, -0.118784,2.7,-0.161856, -0.142,2.7,-0.142, + -0.161856,2.7,-0.118784, -0.135489,2.74905,-0.099446, -0.118874,2.74905,-0.118874, + -0.118874,2.74905,-0.118874, -0.142,2.7,-0.142, -0.161856,2.7,-0.118784, + -0.177968,2.7,-0.092592, -0.148969,2.74905,-0.077523, -0.135489,2.74905,-0.099446, + -0.135489,2.74905,-0.099446, -0.161856,2.7,-0.118784, -0.177968,2.7,-0.092592, + -0.189952,2.7,-0.063808, -0.158995,2.74905,-0.053428, -0.148969,2.74905,-0.077523, + -0.148969,2.74905,-0.077523, -0.177968,2.7,-0.092592, -0.189952,2.7,-0.063808, + -0.197424,2.7,-0.032816, -0.165245,2.74905,-0.02748, -0.158995,2.74905,-0.053428, + -0.158995,2.74905,-0.053428, -0.189952,2.7,-0.063808, -0.197424,2.7,-0.032816, + -0.2,2.7,0, -0.1674,2.74905,0, -0.165245,2.74905,-0.02748, + -0.165245,2.74905,-0.02748, -0.197424,2.7,-0.032816, -0.2,2.7,0, + 0,3.15,0, -0.1946,3.14145,0, -0.192107,3.14145,0.032048, + 0,3.15,0, -0.192107,3.14145,0.032048, -0.18487,3.14145,0.062272, + 0,3.15,0, -0.18487,3.14145,0.062272, -0.173255,3.14145,0.090306, + 0,3.15,0, -0.173255,3.14145,0.090306, -0.157626,3.14145,0.115787, + 0,3.15,0, -0.157626,3.14145,0.115787, -0.138348,3.14145,0.138348, + 0,3.15,0, -0.138348,3.14145,0.138348, -0.115787,3.14145,0.157626, + 0,3.15,0, -0.115787,3.14145,0.157626, -0.090306,3.14145,0.173255, + 0,3.15,0, -0.090306,3.14145,0.173255, -0.062272,3.14145,0.18487, + 0,3.15,0, -0.062272,3.14145,0.18487, -0.032048,3.14145,0.192107, + 0,3.15,0, -0.032048,3.14145,0.192107, 0,3.14145,0.1946, + -0.304843,3.1176,0.050855, -0.192107,3.14145,0.032048, -0.1946,3.14145,0, + -0.1946,3.14145,0, -0.3088,3.1176,0, -0.304843,3.1176,0.050855, + -0.29336,3.1176,0.098814, -0.18487,3.14145,0.062272, -0.192107,3.14145,0.032048, + -0.192107,3.14145,0.032048, -0.304843,3.1176,0.050855, -0.29336,3.1176,0.098814, + -0.274928,3.1176,0.143301, -0.173255,3.14145,0.090306, -0.18487,3.14145,0.062272, + -0.18487,3.14145,0.062272, -0.29336,3.1176,0.098814, -0.274928,3.1176,0.143301, + -0.250127,3.1176,0.183734, -0.157626,3.14145,0.115787, -0.173255,3.14145,0.090306, + -0.173255,3.14145,0.090306, -0.274928,3.1176,0.143301, -0.250127,3.1176,0.183734, + -0.219536,3.1176,0.219536, -0.138348,3.14145,0.138348, -0.157626,3.14145,0.115787, + -0.157626,3.14145,0.115787, -0.250127,3.1176,0.183734, -0.219536,3.1176,0.219536, + -0.183734,3.1176,0.250127, -0.115787,3.14145,0.157626, -0.138348,3.14145,0.138348, + -0.138348,3.14145,0.138348, -0.219536,3.1176,0.219536, -0.183734,3.1176,0.250127, + -0.143301,3.1176,0.274928, -0.090306,3.14145,0.173255, -0.115787,3.14145,0.157626, + -0.115787,3.14145,0.157626, -0.183734,3.1176,0.250127, -0.143301,3.1176,0.274928, + -0.098814,3.1176,0.29336, -0.062272,3.14145,0.18487, -0.090306,3.14145,0.173255, + -0.090306,3.14145,0.173255, -0.143301,3.1176,0.274928, -0.098814,3.1176,0.29336, + -0.050855,3.1176,0.304843, -0.032048,3.14145,0.192107, -0.062272,3.14145,0.18487, + -0.062272,3.14145,0.18487, -0.098814,3.1176,0.29336, -0.050855,3.1176,0.304843, + 0,3.1176,0.3088, 0,3.14145,0.1946, -0.032048,3.14145,0.192107, + -0.032048,3.14145,0.192107, -0.050855,3.1176,0.304843, 0,3.1176,0.3088, + -0.35361,3.08115,0.058988, -0.304843,3.1176,0.050855, -0.3088,3.1176,0, + -0.3088,3.1176,0, -0.3582,3.08115,0, -0.35361,3.08115,0.058988, + -0.340289,3.08115,0.114619, -0.29336,3.1176,0.098814, -0.304843,3.1176,0.050855, + -0.304843,3.1176,0.050855, -0.35361,3.08115,0.058988, -0.340289,3.08115,0.114619, + -0.318907,3.08115,0.166221, -0.274928,3.1176,0.143301, -0.29336,3.1176,0.098814, + -0.29336,3.1176,0.098814, -0.340289,3.08115,0.114619, -0.318907,3.08115,0.166221, + -0.290138,3.08115,0.213123, -0.250127,3.1176,0.183734, -0.274928,3.1176,0.143301, + -0.274928,3.1176,0.143301, -0.318907,3.08115,0.166221, -0.290138,3.08115,0.213123, + -0.254653,3.08115,0.254653, -0.219536,3.1176,0.219536, -0.250127,3.1176,0.183734, + -0.250127,3.1176,0.183734, -0.290138,3.08115,0.213123, -0.254653,3.08115,0.254653, + -0.213123,3.08115,0.290138, -0.183734,3.1176,0.250127, -0.219536,3.1176,0.219536, + -0.219536,3.1176,0.219536, -0.254653,3.08115,0.254653, -0.213123,3.08115,0.290138, + -0.166221,3.08115,0.318907, -0.143301,3.1176,0.274928, -0.183734,3.1176,0.250127, + -0.183734,3.1176,0.250127, -0.213123,3.08115,0.290138, -0.166221,3.08115,0.318907, + -0.114619,3.08115,0.340289, -0.098814,3.1176,0.29336, -0.143301,3.1176,0.274928, + -0.143301,3.1176,0.274928, -0.166221,3.08115,0.318907, -0.114619,3.08115,0.340289, + -0.058988,3.08115,0.35361, -0.050855,3.1176,0.304843, -0.098814,3.1176,0.29336, + -0.098814,3.1176,0.29336, -0.114619,3.08115,0.340289, -0.058988,3.08115,0.35361, + 0,3.08115,0.3582, 0,3.1176,0.3088, -0.050855,3.1176,0.304843, + -0.050855,3.1176,0.304843, -0.058988,3.08115,0.35361, 0,3.08115,0.3582, + -0.353807,3.0348,0.059016, -0.35361,3.08115,0.058988, -0.3582,3.08115,0, + -0.3582,3.08115,0, -0.3584,3.0348,0, -0.353807,3.0348,0.059016, + -0.340477,3.0348,0.114676, -0.340289,3.08115,0.114619, -0.35361,3.08115,0.058988, + -0.35361,3.08115,0.058988, -0.353807,3.0348,0.059016, -0.340477,3.0348,0.114676, + -0.319082,3.0348,0.166306, -0.318907,3.08115,0.166221, -0.340289,3.08115,0.114619, + -0.340289,3.08115,0.114619, -0.340477,3.0348,0.114676, -0.319082,3.0348,0.166306, + -0.290295,3.0348,0.213234, -0.290138,3.08115,0.213123, -0.318907,3.08115,0.166221, + -0.318907,3.08115,0.166221, -0.319082,3.0348,0.166306, -0.290295,3.0348,0.213234, + -0.254788,3.0348,0.254788, -0.254653,3.08115,0.254653, -0.290138,3.08115,0.213123, + -0.290138,3.08115,0.213123, -0.290295,3.0348,0.213234, -0.254788,3.0348,0.254788, + -0.213234,3.0348,0.290295, -0.213123,3.08115,0.290138, -0.254653,3.08115,0.254653, + -0.254653,3.08115,0.254653, -0.254788,3.0348,0.254788, -0.213234,3.0348,0.290295, + -0.166306,3.0348,0.319082, -0.166221,3.08115,0.318907, -0.213123,3.08115,0.290138, + -0.213123,3.08115,0.290138, -0.213234,3.0348,0.290295, -0.166306,3.0348,0.319082, + -0.114676,3.0348,0.340477, -0.114619,3.08115,0.340289, -0.166221,3.08115,0.318907, + -0.166221,3.08115,0.318907, -0.166306,3.0348,0.319082, -0.114676,3.0348,0.340477, + -0.059016,3.0348,0.353807, -0.058988,3.08115,0.35361, -0.114619,3.08115,0.340289, + -0.114619,3.08115,0.340289, -0.114676,3.0348,0.340477, -0.059016,3.0348,0.353807, + 0,3.0348,0.3584, 0,3.08115,0.3582, -0.058988,3.08115,0.35361, + -0.058988,3.08115,0.35361, -0.059016,3.0348,0.353807, 0,3.0348,0.3584, + -0.320834,2.98125,0.053508, -0.353807,3.0348,0.059016, -0.3584,3.0348,0, + -0.3584,3.0348,0, -0.325,2.98125,0, -0.320834,2.98125,0.053508, + -0.308744,2.98125,0.103976, -0.340477,3.0348,0.114676, -0.353807,3.0348,0.059016, + -0.353807,3.0348,0.059016, -0.320834,2.98125,0.053508, -0.308744,2.98125,0.103976, + -0.28934,2.98125,0.150793, -0.319082,3.0348,0.166306, -0.340477,3.0348,0.114676, + -0.340477,3.0348,0.114676, -0.308744,2.98125,0.103976, -0.28934,2.98125,0.150793, + -0.263232,2.98125,0.193348, -0.290295,3.0348,0.213234, -0.319082,3.0348,0.166306, + -0.319082,3.0348,0.166306, -0.28934,2.98125,0.150793, -0.263232,2.98125,0.193348, + -0.231031,2.98125,0.231031, -0.254788,3.0348,0.254788, -0.290295,3.0348,0.213234, + -0.290295,3.0348,0.213234, -0.263232,2.98125,0.193348, -0.231031,2.98125,0.231031, + -0.193348,2.98125,0.263232, -0.213234,3.0348,0.290295, -0.254788,3.0348,0.254788, + -0.254788,3.0348,0.254788, -0.231031,2.98125,0.231031, -0.193348,2.98125,0.263232, + -0.150793,2.98125,0.28934, -0.166306,3.0348,0.319082, -0.213234,3.0348,0.290295, + -0.213234,3.0348,0.290295, -0.193348,2.98125,0.263232, -0.150793,2.98125,0.28934, + -0.103976,2.98125,0.308744, -0.114676,3.0348,0.340477, -0.166306,3.0348,0.319082, + -0.166306,3.0348,0.319082, -0.150793,2.98125,0.28934, -0.103976,2.98125,0.308744, + -0.053508,2.98125,0.320834, -0.059016,3.0348,0.353807, -0.114676,3.0348,0.340477, + -0.114676,3.0348,0.340477, -0.103976,2.98125,0.308744, -0.053508,2.98125,0.320834, + 0,2.98125,0.325, 0,3.0348,0.3584, -0.059016,3.0348,0.353807, + -0.059016,3.0348,0.353807, -0.053508,2.98125,0.320834, 0,2.98125,0.325, + -0.270092,2.9232,0.045032, -0.320834,2.98125,0.053508, -0.325,2.98125,0, + -0.325,2.98125,0, -0.2736,2.9232,0, -0.270092,2.9232,0.045032, + -0.25991,2.9232,0.087511, -0.308744,2.98125,0.103976, -0.320834,2.98125,0.053508, + -0.320834,2.98125,0.053508, -0.270092,2.9232,0.045032, -0.25991,2.9232,0.087511, + -0.243569,2.9232,0.12692, -0.28934,2.98125,0.150793, -0.308744,2.98125,0.103976, + -0.308744,2.98125,0.103976, -0.25991,2.9232,0.087511, -0.243569,2.9232,0.12692, + -0.221585,2.9232,0.162745, -0.263232,2.98125,0.193348, -0.28934,2.98125,0.150793, + -0.28934,2.98125,0.150793, -0.243569,2.9232,0.12692, -0.221585,2.9232,0.162745, + -0.194472,2.9232,0.194472, -0.231031,2.98125,0.231031, -0.263232,2.98125,0.193348, + -0.263232,2.98125,0.193348, -0.221585,2.9232,0.162745, -0.194472,2.9232,0.194472, + -0.162745,2.9232,0.221585, -0.193348,2.98125,0.263232, -0.231031,2.98125,0.231031, + -0.231031,2.98125,0.231031, -0.194472,2.9232,0.194472, -0.162745,2.9232,0.221585, + -0.12692,2.9232,0.243569, -0.150793,2.98125,0.28934, -0.193348,2.98125,0.263232, + -0.193348,2.98125,0.263232, -0.162745,2.9232,0.221585, -0.12692,2.9232,0.243569, + -0.087511,2.9232,0.25991, -0.103976,2.98125,0.308744, -0.150793,2.98125,0.28934, + -0.150793,2.98125,0.28934, -0.12692,2.9232,0.243569, -0.087511,2.9232,0.25991, + -0.045032,2.9232,0.270092, -0.053508,2.98125,0.320834, -0.103976,2.98125,0.308744, + -0.103976,2.98125,0.308744, -0.087511,2.9232,0.25991, -0.045032,2.9232,0.270092, + 0,2.9232,0.2736, 0,2.98125,0.325, -0.053508,2.98125,0.320834, + -0.053508,2.98125,0.320834, -0.045032,2.9232,0.270092, 0,2.9232,0.2736, + -0.216979,2.86335,0.036157, -0.270092,2.9232,0.045032, -0.2736,2.9232,0, + -0.2736,2.9232,0, -0.2198,2.86335,0, -0.216979,2.86335,0.036157, + -0.208794,2.86335,0.07027, -0.25991,2.9232,0.087511, -0.270092,2.9232,0.045032, + -0.270092,2.9232,0.045032, -0.216979,2.86335,0.036157, -0.208794,2.86335,0.07027, + -0.195658,2.86335,0.101925, -0.243569,2.9232,0.12692, -0.25991,2.9232,0.087511, + -0.25991,2.9232,0.087511, -0.208794,2.86335,0.07027, -0.195658,2.86335,0.101925, + -0.177989,2.86335,0.130707, -0.221585,2.9232,0.162745, -0.243569,2.9232,0.12692, + -0.243569,2.9232,0.12692, -0.195658,2.86335,0.101925, -0.177989,2.86335,0.130707, + -0.1562,2.86335,0.1562, -0.194472,2.9232,0.194472, -0.221585,2.9232,0.162745, + -0.221585,2.9232,0.162745, -0.177989,2.86335,0.130707, -0.1562,2.86335,0.1562, + -0.130707,2.86335,0.177989, -0.162745,2.9232,0.221585, -0.194472,2.9232,0.194472, + -0.194472,2.9232,0.194472, -0.1562,2.86335,0.1562, -0.130707,2.86335,0.177989, + -0.101925,2.86335,0.195658, -0.12692,2.9232,0.243569, -0.162745,2.9232,0.221585, + -0.162745,2.9232,0.221585, -0.130707,2.86335,0.177989, -0.101925,2.86335,0.195658, + -0.07027,2.86335,0.208794, -0.087511,2.9232,0.25991, -0.12692,2.9232,0.243569, + -0.12692,2.9232,0.243569, -0.101925,2.86335,0.195658, -0.07027,2.86335,0.208794, + -0.036157,2.86335,0.216979, -0.045032,2.9232,0.270092, -0.087511,2.9232,0.25991, + -0.087511,2.9232,0.25991, -0.07027,2.86335,0.208794, -0.036157,2.86335,0.216979, + 0,2.86335,0.2198, 0,2.9232,0.2736, -0.045032,2.9232,0.270092, + -0.045032,2.9232,0.270092, -0.036157,2.86335,0.216979, 0,2.86335,0.2198, + -0.176897,2.8044,0.02945, -0.216979,2.86335,0.036157, -0.2198,2.86335,0, + -0.2198,2.86335,0, -0.1792,2.8044,0, -0.176897,2.8044,0.02945, + -0.170215,2.8044,0.057246, -0.208794,2.86335,0.07027, -0.216979,2.86335,0.036157, + -0.216979,2.86335,0.036157, -0.176897,2.8044,0.02945, -0.170215,2.8044,0.057246, + -0.159496,2.8044,0.083047, -0.195658,2.86335,0.101925, -0.208794,2.86335,0.07027, + -0.208794,2.86335,0.07027, -0.170215,2.8044,0.057246, -0.159496,2.8044,0.083047, + -0.145078,2.8044,0.106513, -0.177989,2.86335,0.130707, -0.195658,2.86335,0.101925, + -0.195658,2.86335,0.101925, -0.159496,2.8044,0.083047, -0.145078,2.8044,0.106513, + -0.127304,2.8044,0.127304, -0.1562,2.86335,0.1562, -0.177989,2.86335,0.130707, + -0.177989,2.86335,0.130707, -0.145078,2.8044,0.106513, -0.127304,2.8044,0.127304, + -0.106513,2.8044,0.145078, -0.130707,2.86335,0.177989, -0.1562,2.86335,0.1562, + -0.1562,2.86335,0.1562, -0.127304,2.8044,0.127304, -0.106513,2.8044,0.145078, + -0.083047,2.8044,0.159496, -0.101925,2.86335,0.195658, -0.130707,2.86335,0.177989, + -0.130707,2.86335,0.177989, -0.106513,2.8044,0.145078, -0.083047,2.8044,0.159496, + -0.057246,2.8044,0.170215, -0.07027,2.86335,0.208794, -0.101925,2.86335,0.195658, + -0.101925,2.86335,0.195658, -0.083047,2.8044,0.159496, -0.057246,2.8044,0.170215, + -0.02945,2.8044,0.176897, -0.036157,2.86335,0.216979, -0.07027,2.86335,0.208794, + -0.07027,2.86335,0.208794, -0.057246,2.8044,0.170215, -0.02945,2.8044,0.176897, + 0,2.8044,0.1792, 0,2.86335,0.2198, -0.036157,2.86335,0.216979, + -0.036157,2.86335,0.216979, -0.02945,2.8044,0.176897, 0,2.8044,0.1792, + -0.165245,2.74905,0.02748, -0.176897,2.8044,0.02945, -0.1792,2.8044,0, + -0.1792,2.8044,0, -0.1674,2.74905,0, -0.165245,2.74905,0.02748, + -0.158995,2.74905,0.053428, -0.170215,2.8044,0.057246, -0.176897,2.8044,0.02945, + -0.176897,2.8044,0.02945, -0.165245,2.74905,0.02748, -0.158995,2.74905,0.053428, + -0.148969,2.74905,0.077523, -0.159496,2.8044,0.083047, -0.170215,2.8044,0.057246, + -0.170215,2.8044,0.057246, -0.158995,2.74905,0.053428, -0.148969,2.74905,0.077523, + -0.135489,2.74905,0.099446, -0.145078,2.8044,0.106513, -0.159496,2.8044,0.083047, + -0.159496,2.8044,0.083047, -0.148969,2.74905,0.077523, -0.135489,2.74905,0.099446, + -0.118874,2.74905,0.118874, -0.127304,2.8044,0.127304, -0.145078,2.8044,0.106513, + -0.145078,2.8044,0.106513, -0.135489,2.74905,0.099446, -0.118874,2.74905,0.118874, + -0.099446,2.74905,0.135489, -0.106513,2.8044,0.145078, -0.127304,2.8044,0.127304, + -0.127304,2.8044,0.127304, -0.118874,2.74905,0.118874, -0.099446,2.74905,0.135489, + -0.077523,2.74905,0.148969, -0.083047,2.8044,0.159496, -0.106513,2.8044,0.145078, + -0.106513,2.8044,0.145078, -0.099446,2.74905,0.135489, -0.077523,2.74905,0.148969, + -0.053428,2.74905,0.158995, -0.057246,2.8044,0.170215, -0.083047,2.8044,0.159496, + -0.083047,2.8044,0.159496, -0.077523,2.74905,0.148969, -0.053428,2.74905,0.158995, + -0.02748,2.74905,0.165245, -0.02945,2.8044,0.176897, -0.057246,2.8044,0.170215, + -0.057246,2.8044,0.170215, -0.053428,2.74905,0.158995, -0.02748,2.74905,0.165245, + 0,2.74905,0.1674, 0,2.8044,0.1792, -0.02945,2.8044,0.176897, + -0.02945,2.8044,0.176897, -0.02748,2.74905,0.165245, 0,2.74905,0.1674, + -0.197424,2.7,0.032816, -0.165245,2.74905,0.02748, -0.1674,2.74905,0, + -0.1674,2.74905,0, -0.2,2.7,0, -0.197424,2.7,0.032816, + -0.189952,2.7,0.063808, -0.158995,2.74905,0.053428, -0.165245,2.74905,0.02748, + -0.165245,2.74905,0.02748, -0.197424,2.7,0.032816, -0.189952,2.7,0.063808, + -0.177968,2.7,0.092592, -0.148969,2.74905,0.077523, -0.158995,2.74905,0.053428, + -0.158995,2.74905,0.053428, -0.189952,2.7,0.063808, -0.177968,2.7,0.092592, + -0.161856,2.7,0.118784, -0.135489,2.74905,0.099446, -0.148969,2.74905,0.077523, + -0.148969,2.74905,0.077523, -0.177968,2.7,0.092592, -0.161856,2.7,0.118784, + -0.142,2.7,0.142, -0.118874,2.74905,0.118874, -0.135489,2.74905,0.099446, + -0.135489,2.74905,0.099446, -0.161856,2.7,0.118784, -0.142,2.7,0.142, + -0.118784,2.7,0.161856, -0.099446,2.74905,0.135489, -0.118874,2.74905,0.118874, + -0.118874,2.74905,0.118874, -0.142,2.7,0.142, -0.118784,2.7,0.161856, + -0.092592,2.7,0.177968, -0.077523,2.74905,0.148969, -0.099446,2.74905,0.135489, + -0.099446,2.74905,0.135489, -0.118784,2.7,0.161856, -0.092592,2.7,0.177968, + -0.063808,2.7,0.189952, -0.053428,2.74905,0.158995, -0.077523,2.74905,0.148969, + -0.077523,2.74905,0.148969, -0.092592,2.7,0.177968, -0.063808,2.7,0.189952, + -0.032816,2.7,0.197424, -0.02748,2.74905,0.165245, -0.053428,2.74905,0.158995, + -0.053428,2.74905,0.158995, -0.063808,2.7,0.189952, -0.032816,2.7,0.197424, + 0,2.7,0.2, 0,2.74905,0.1674, -0.02748,2.74905,0.165245, + -0.02748,2.74905,0.165245, -0.032816,2.7,0.197424, 0,2.7,0.2, + 0,3.15,0, 0,3.14145,0.1946, 0.032048,3.14145,0.192107, + 0,3.15,0, 0.032048,3.14145,0.192107, 0.062272,3.14145,0.18487, + 0,3.15,0, 0.062272,3.14145,0.18487, 0.090306,3.14145,0.173255, + 0,3.15,0, 0.090306,3.14145,0.173255, 0.115787,3.14145,0.157626, + 0,3.15,0, 0.115787,3.14145,0.157626, 0.138348,3.14145,0.138348, + 0,3.15,0, 0.138348,3.14145,0.138348, 0.157626,3.14145,0.115787, + 0,3.15,0, 0.157626,3.14145,0.115787, 0.173255,3.14145,0.090306, + 0,3.15,0, 0.173255,3.14145,0.090306, 0.18487,3.14145,0.062272, + 0,3.15,0, 0.18487,3.14145,0.062272, 0.192107,3.14145,0.032048, + 0,3.15,0, 0.192107,3.14145,0.032048, 0.1946,3.14145,0, + 0.050855,3.1176,0.304843, 0.032048,3.14145,0.192107, 0,3.14145,0.1946, + 0,3.14145,0.1946, 0,3.1176,0.3088, 0.050855,3.1176,0.304843, + 0.098814,3.1176,0.29336, 0.062272,3.14145,0.18487, 0.032048,3.14145,0.192107, + 0.032048,3.14145,0.192107, 0.050855,3.1176,0.304843, 0.098814,3.1176,0.29336, + 0.143301,3.1176,0.274928, 0.090306,3.14145,0.173255, 0.062272,3.14145,0.18487, + 0.062272,3.14145,0.18487, 0.098814,3.1176,0.29336, 0.143301,3.1176,0.274928, + 0.183734,3.1176,0.250127, 0.115787,3.14145,0.157626, 0.090306,3.14145,0.173255, + 0.090306,3.14145,0.173255, 0.143301,3.1176,0.274928, 0.183734,3.1176,0.250127, + 0.219536,3.1176,0.219536, 0.138348,3.14145,0.138348, 0.115787,3.14145,0.157626, + 0.115787,3.14145,0.157626, 0.183734,3.1176,0.250127, 0.219536,3.1176,0.219536, + 0.250127,3.1176,0.183734, 0.157626,3.14145,0.115787, 0.138348,3.14145,0.138348, + 0.138348,3.14145,0.138348, 0.219536,3.1176,0.219536, 0.250127,3.1176,0.183734, + 0.274928,3.1176,0.143301, 0.173255,3.14145,0.090306, 0.157626,3.14145,0.115787, + 0.157626,3.14145,0.115787, 0.250127,3.1176,0.183734, 0.274928,3.1176,0.143301, + 0.29336,3.1176,0.098814, 0.18487,3.14145,0.062272, 0.173255,3.14145,0.090306, + 0.173255,3.14145,0.090306, 0.274928,3.1176,0.143301, 0.29336,3.1176,0.098814, + 0.304843,3.1176,0.050855, 0.192107,3.14145,0.032048, 0.18487,3.14145,0.062272, + 0.18487,3.14145,0.062272, 0.29336,3.1176,0.098814, 0.304843,3.1176,0.050855, + 0.3088,3.1176,0, 0.1946,3.14145,0, 0.192107,3.14145,0.032048, + 0.192107,3.14145,0.032048, 0.304843,3.1176,0.050855, 0.3088,3.1176,0, + 0.058988,3.08115,0.35361, 0.050855,3.1176,0.304843, 0,3.1176,0.3088, + 0,3.1176,0.3088, 0,3.08115,0.3582, 0.058988,3.08115,0.35361, + 0.114619,3.08115,0.340289, 0.098814,3.1176,0.29336, 0.050855,3.1176,0.304843, + 0.050855,3.1176,0.304843, 0.058988,3.08115,0.35361, 0.114619,3.08115,0.340289, + 0.166221,3.08115,0.318907, 0.143301,3.1176,0.274928, 0.098814,3.1176,0.29336, + 0.098814,3.1176,0.29336, 0.114619,3.08115,0.340289, 0.166221,3.08115,0.318907, + 0.213123,3.08115,0.290138, 0.183734,3.1176,0.250127, 0.143301,3.1176,0.274928, + 0.143301,3.1176,0.274928, 0.166221,3.08115,0.318907, 0.213123,3.08115,0.290138, + 0.254653,3.08115,0.254653, 0.219536,3.1176,0.219536, 0.183734,3.1176,0.250127, + 0.183734,3.1176,0.250127, 0.213123,3.08115,0.290138, 0.254653,3.08115,0.254653, + 0.290138,3.08115,0.213123, 0.250127,3.1176,0.183734, 0.219536,3.1176,0.219536, + 0.219536,3.1176,0.219536, 0.254653,3.08115,0.254653, 0.290138,3.08115,0.213123, + 0.318907,3.08115,0.166221, 0.274928,3.1176,0.143301, 0.250127,3.1176,0.183734, + 0.250127,3.1176,0.183734, 0.290138,3.08115,0.213123, 0.318907,3.08115,0.166221, + 0.340289,3.08115,0.114619, 0.29336,3.1176,0.098814, 0.274928,3.1176,0.143301, + 0.274928,3.1176,0.143301, 0.318907,3.08115,0.166221, 0.340289,3.08115,0.114619, + 0.35361,3.08115,0.058988, 0.304843,3.1176,0.050855, 0.29336,3.1176,0.098814, + 0.29336,3.1176,0.098814, 0.340289,3.08115,0.114619, 0.35361,3.08115,0.058988, + 0.3582,3.08115,0, 0.3088,3.1176,0, 0.304843,3.1176,0.050855, + 0.304843,3.1176,0.050855, 0.35361,3.08115,0.058988, 0.3582,3.08115,0, + 0.059016,3.0348,0.353807, 0.058988,3.08115,0.35361, 0,3.08115,0.3582, + 0,3.08115,0.3582, 0,3.0348,0.3584, 0.059016,3.0348,0.353807, + 0.114676,3.0348,0.340477, 0.114619,3.08115,0.340289, 0.058988,3.08115,0.35361, + 0.058988,3.08115,0.35361, 0.059016,3.0348,0.353807, 0.114676,3.0348,0.340477, + 0.166306,3.0348,0.319082, 0.166221,3.08115,0.318907, 0.114619,3.08115,0.340289, + 0.114619,3.08115,0.340289, 0.114676,3.0348,0.340477, 0.166306,3.0348,0.319082, + 0.213234,3.0348,0.290295, 0.213123,3.08115,0.290138, 0.166221,3.08115,0.318907, + 0.166221,3.08115,0.318907, 0.166306,3.0348,0.319082, 0.213234,3.0348,0.290295, + 0.254788,3.0348,0.254788, 0.254653,3.08115,0.254653, 0.213123,3.08115,0.290138, + 0.213123,3.08115,0.290138, 0.213234,3.0348,0.290295, 0.254788,3.0348,0.254788, + 0.290295,3.0348,0.213234, 0.290138,3.08115,0.213123, 0.254653,3.08115,0.254653, + 0.254653,3.08115,0.254653, 0.254788,3.0348,0.254788, 0.290295,3.0348,0.213234, + 0.319082,3.0348,0.166306, 0.318907,3.08115,0.166221, 0.290138,3.08115,0.213123, + 0.290138,3.08115,0.213123, 0.290295,3.0348,0.213234, 0.319082,3.0348,0.166306, + 0.340477,3.0348,0.114676, 0.340289,3.08115,0.114619, 0.318907,3.08115,0.166221, + 0.318907,3.08115,0.166221, 0.319082,3.0348,0.166306, 0.340477,3.0348,0.114676, + 0.353807,3.0348,0.059016, 0.35361,3.08115,0.058988, 0.340289,3.08115,0.114619, + 0.340289,3.08115,0.114619, 0.340477,3.0348,0.114676, 0.353807,3.0348,0.059016, + 0.3584,3.0348,0, 0.3582,3.08115,0, 0.35361,3.08115,0.058988, + 0.35361,3.08115,0.058988, 0.353807,3.0348,0.059016, 0.3584,3.0348,0, + 0.053508,2.98125,0.320834, 0.059016,3.0348,0.353807, 0,3.0348,0.3584, + 0,3.0348,0.3584, 0,2.98125,0.325, 0.053508,2.98125,0.320834, + 0.103976,2.98125,0.308744, 0.114676,3.0348,0.340477, 0.059016,3.0348,0.353807, + 0.059016,3.0348,0.353807, 0.053508,2.98125,0.320834, 0.103976,2.98125,0.308744, + 0.150793,2.98125,0.28934, 0.166306,3.0348,0.319082, 0.114676,3.0348,0.340477, + 0.114676,3.0348,0.340477, 0.103976,2.98125,0.308744, 0.150793,2.98125,0.28934, + 0.193348,2.98125,0.263232, 0.213234,3.0348,0.290295, 0.166306,3.0348,0.319082, + 0.166306,3.0348,0.319082, 0.150793,2.98125,0.28934, 0.193348,2.98125,0.263232, + 0.231031,2.98125,0.231031, 0.254788,3.0348,0.254788, 0.213234,3.0348,0.290295, + 0.213234,3.0348,0.290295, 0.193348,2.98125,0.263232, 0.231031,2.98125,0.231031, + 0.263232,2.98125,0.193348, 0.290295,3.0348,0.213234, 0.254788,3.0348,0.254788, + 0.254788,3.0348,0.254788, 0.231031,2.98125,0.231031, 0.263232,2.98125,0.193348, + 0.28934,2.98125,0.150793, 0.319082,3.0348,0.166306, 0.290295,3.0348,0.213234, + 0.290295,3.0348,0.213234, 0.263232,2.98125,0.193348, 0.28934,2.98125,0.150793, + 0.308744,2.98125,0.103976, 0.340477,3.0348,0.114676, 0.319082,3.0348,0.166306, + 0.319082,3.0348,0.166306, 0.28934,2.98125,0.150793, 0.308744,2.98125,0.103976, + 0.320834,2.98125,0.053508, 0.353807,3.0348,0.059016, 0.340477,3.0348,0.114676, + 0.340477,3.0348,0.114676, 0.308744,2.98125,0.103976, 0.320834,2.98125,0.053508, + 0.325,2.98125,0, 0.3584,3.0348,0, 0.353807,3.0348,0.059016, + 0.353807,3.0348,0.059016, 0.320834,2.98125,0.053508, 0.325,2.98125,0, + 0.045032,2.9232,0.270092, 0.053508,2.98125,0.320834, 0,2.98125,0.325, + 0,2.98125,0.325, 0,2.9232,0.2736, 0.045032,2.9232,0.270092, + 0.087511,2.9232,0.25991, 0.103976,2.98125,0.308744, 0.053508,2.98125,0.320834, + 0.053508,2.98125,0.320834, 0.045032,2.9232,0.270092, 0.087511,2.9232,0.25991, + 0.12692,2.9232,0.243569, 0.150793,2.98125,0.28934, 0.103976,2.98125,0.308744, + 0.103976,2.98125,0.308744, 0.087511,2.9232,0.25991, 0.12692,2.9232,0.243569, + 0.162745,2.9232,0.221585, 0.193348,2.98125,0.263232, 0.150793,2.98125,0.28934, + 0.150793,2.98125,0.28934, 0.12692,2.9232,0.243569, 0.162745,2.9232,0.221585, + 0.194472,2.9232,0.194472, 0.231031,2.98125,0.231031, 0.193348,2.98125,0.263232, + 0.193348,2.98125,0.263232, 0.162745,2.9232,0.221585, 0.194472,2.9232,0.194472, + 0.221585,2.9232,0.162745, 0.263232,2.98125,0.193348, 0.231031,2.98125,0.231031, + 0.231031,2.98125,0.231031, 0.194472,2.9232,0.194472, 0.221585,2.9232,0.162745, + 0.243569,2.9232,0.12692, 0.28934,2.98125,0.150793, 0.263232,2.98125,0.193348, + 0.263232,2.98125,0.193348, 0.221585,2.9232,0.162745, 0.243569,2.9232,0.12692, + 0.25991,2.9232,0.087511, 0.308744,2.98125,0.103976, 0.28934,2.98125,0.150793, + 0.28934,2.98125,0.150793, 0.243569,2.9232,0.12692, 0.25991,2.9232,0.087511, + 0.270092,2.9232,0.045032, 0.320834,2.98125,0.053508, 0.308744,2.98125,0.103976, + 0.308744,2.98125,0.103976, 0.25991,2.9232,0.087511, 0.270092,2.9232,0.045032, + 0.2736,2.9232,0, 0.325,2.98125,0, 0.320834,2.98125,0.053508, + 0.320834,2.98125,0.053508, 0.270092,2.9232,0.045032, 0.2736,2.9232,0, + 0.036157,2.86335,0.216979, 0.045032,2.9232,0.270092, 0,2.9232,0.2736, + 0,2.9232,0.2736, 0,2.86335,0.2198, 0.036157,2.86335,0.216979, + 0.07027,2.86335,0.208794, 0.087511,2.9232,0.25991, 0.045032,2.9232,0.270092, + 0.045032,2.9232,0.270092, 0.036157,2.86335,0.216979, 0.07027,2.86335,0.208794, + 0.101925,2.86335,0.195658, 0.12692,2.9232,0.243569, 0.087511,2.9232,0.25991, + 0.087511,2.9232,0.25991, 0.07027,2.86335,0.208794, 0.101925,2.86335,0.195658, + 0.130707,2.86335,0.177989, 0.162745,2.9232,0.221585, 0.12692,2.9232,0.243569, + 0.12692,2.9232,0.243569, 0.101925,2.86335,0.195658, 0.130707,2.86335,0.177989, + 0.1562,2.86335,0.1562, 0.194472,2.9232,0.194472, 0.162745,2.9232,0.221585, + 0.162745,2.9232,0.221585, 0.130707,2.86335,0.177989, 0.1562,2.86335,0.1562, + 0.177989,2.86335,0.130707, 0.221585,2.9232,0.162745, 0.194472,2.9232,0.194472, + 0.194472,2.9232,0.194472, 0.1562,2.86335,0.1562, 0.177989,2.86335,0.130707, + 0.195658,2.86335,0.101925, 0.243569,2.9232,0.12692, 0.221585,2.9232,0.162745, + 0.221585,2.9232,0.162745, 0.177989,2.86335,0.130707, 0.195658,2.86335,0.101925, + 0.208794,2.86335,0.07027, 0.25991,2.9232,0.087511, 0.243569,2.9232,0.12692, + 0.243569,2.9232,0.12692, 0.195658,2.86335,0.101925, 0.208794,2.86335,0.07027, + 0.216979,2.86335,0.036157, 0.270092,2.9232,0.045032, 0.25991,2.9232,0.087511, + 0.25991,2.9232,0.087511, 0.208794,2.86335,0.07027, 0.216979,2.86335,0.036157, + 0.2198,2.86335,0, 0.2736,2.9232,0, 0.270092,2.9232,0.045032, + 0.270092,2.9232,0.045032, 0.216979,2.86335,0.036157, 0.2198,2.86335,0, + 0.02945,2.8044,0.176897, 0.036157,2.86335,0.216979, 0,2.86335,0.2198, + 0,2.86335,0.2198, 0,2.8044,0.1792, 0.02945,2.8044,0.176897, + 0.057246,2.8044,0.170215, 0.07027,2.86335,0.208794, 0.036157,2.86335,0.216979, + 0.036157,2.86335,0.216979, 0.02945,2.8044,0.176897, 0.057246,2.8044,0.170215, + 0.083047,2.8044,0.159496, 0.101925,2.86335,0.195658, 0.07027,2.86335,0.208794, + 0.07027,2.86335,0.208794, 0.057246,2.8044,0.170215, 0.083047,2.8044,0.159496, + 0.106513,2.8044,0.145078, 0.130707,2.86335,0.177989, 0.101925,2.86335,0.195658, + 0.101925,2.86335,0.195658, 0.083047,2.8044,0.159496, 0.106513,2.8044,0.145078, + 0.127304,2.8044,0.127304, 0.1562,2.86335,0.1562, 0.130707,2.86335,0.177989, + 0.130707,2.86335,0.177989, 0.106513,2.8044,0.145078, 0.127304,2.8044,0.127304, + 0.145078,2.8044,0.106513, 0.177989,2.86335,0.130707, 0.1562,2.86335,0.1562, + 0.1562,2.86335,0.1562, 0.127304,2.8044,0.127304, 0.145078,2.8044,0.106513, + 0.159496,2.8044,0.083047, 0.195658,2.86335,0.101925, 0.177989,2.86335,0.130707, + 0.177989,2.86335,0.130707, 0.145078,2.8044,0.106513, 0.159496,2.8044,0.083047, + 0.170215,2.8044,0.057246, 0.208794,2.86335,0.07027, 0.195658,2.86335,0.101925, + 0.195658,2.86335,0.101925, 0.159496,2.8044,0.083047, 0.170215,2.8044,0.057246, + 0.176897,2.8044,0.02945, 0.216979,2.86335,0.036157, 0.208794,2.86335,0.07027, + 0.208794,2.86335,0.07027, 0.170215,2.8044,0.057246, 0.176897,2.8044,0.02945, + 0.1792,2.8044,0, 0.2198,2.86335,0, 0.216979,2.86335,0.036157, + 0.216979,2.86335,0.036157, 0.176897,2.8044,0.02945, 0.1792,2.8044,0, + 0.02748,2.74905,0.165245, 0.02945,2.8044,0.176897, 0,2.8044,0.1792, + 0,2.8044,0.1792, 0,2.74905,0.1674, 0.02748,2.74905,0.165245, + 0.053428,2.74905,0.158995, 0.057246,2.8044,0.170215, 0.02945,2.8044,0.176897, + 0.02945,2.8044,0.176897, 0.02748,2.74905,0.165245, 0.053428,2.74905,0.158995, + 0.077523,2.74905,0.148969, 0.083047,2.8044,0.159496, 0.057246,2.8044,0.170215, + 0.057246,2.8044,0.170215, 0.053428,2.74905,0.158995, 0.077523,2.74905,0.148969, + 0.099446,2.74905,0.135489, 0.106513,2.8044,0.145078, 0.083047,2.8044,0.159496, + 0.083047,2.8044,0.159496, 0.077523,2.74905,0.148969, 0.099446,2.74905,0.135489, + 0.118874,2.74905,0.118874, 0.127304,2.8044,0.127304, 0.106513,2.8044,0.145078, + 0.106513,2.8044,0.145078, 0.099446,2.74905,0.135489, 0.118874,2.74905,0.118874, + 0.135489,2.74905,0.099446, 0.145078,2.8044,0.106513, 0.127304,2.8044,0.127304, + 0.127304,2.8044,0.127304, 0.118874,2.74905,0.118874, 0.135489,2.74905,0.099446, + 0.148969,2.74905,0.077523, 0.159496,2.8044,0.083047, 0.145078,2.8044,0.106513, + 0.145078,2.8044,0.106513, 0.135489,2.74905,0.099446, 0.148969,2.74905,0.077523, + 0.158995,2.74905,0.053428, 0.170215,2.8044,0.057246, 0.159496,2.8044,0.083047, + 0.159496,2.8044,0.083047, 0.148969,2.74905,0.077523, 0.158995,2.74905,0.053428, + 0.165245,2.74905,0.02748, 0.176897,2.8044,0.02945, 0.170215,2.8044,0.057246, + 0.170215,2.8044,0.057246, 0.158995,2.74905,0.053428, 0.165245,2.74905,0.02748, + 0.1674,2.74905,0, 0.1792,2.8044,0, 0.176897,2.8044,0.02945, + 0.176897,2.8044,0.02945, 0.165245,2.74905,0.02748, 0.1674,2.74905,0, + 0.032816,2.7,0.197424, 0.02748,2.74905,0.165245, 0,2.74905,0.1674, + 0,2.74905,0.1674, 0,2.7,0.2, 0.032816,2.7,0.197424, + 0.063808,2.7,0.189952, 0.053428,2.74905,0.158995, 0.02748,2.74905,0.165245, + 0.02748,2.74905,0.165245, 0.032816,2.7,0.197424, 0.063808,2.7,0.189952, + 0.092592,2.7,0.177968, 0.077523,2.74905,0.148969, 0.053428,2.74905,0.158995, + 0.053428,2.74905,0.158995, 0.063808,2.7,0.189952, 0.092592,2.7,0.177968, + 0.118784,2.7,0.161856, 0.099446,2.74905,0.135489, 0.077523,2.74905,0.148969, + 0.077523,2.74905,0.148969, 0.092592,2.7,0.177968, 0.118784,2.7,0.161856, + 0.142,2.7,0.142, 0.118874,2.74905,0.118874, 0.099446,2.74905,0.135489, + 0.099446,2.74905,0.135489, 0.118784,2.7,0.161856, 0.142,2.7,0.142, + 0.161856,2.7,0.118784, 0.135489,2.74905,0.099446, 0.118874,2.74905,0.118874, + 0.118874,2.74905,0.118874, 0.142,2.7,0.142, 0.161856,2.7,0.118784, + 0.177968,2.7,0.092592, 0.148969,2.74905,0.077523, 0.135489,2.74905,0.099446, + 0.135489,2.74905,0.099446, 0.161856,2.7,0.118784, 0.177968,2.7,0.092592, + 0.189952,2.7,0.063808, 0.158995,2.74905,0.053428, 0.148969,2.74905,0.077523, + 0.148969,2.74905,0.077523, 0.177968,2.7,0.092592, 0.189952,2.7,0.063808, + 0.197424,2.7,0.032816, 0.165245,2.74905,0.02748, 0.158995,2.74905,0.053428, + 0.158995,2.74905,0.053428, 0.189952,2.7,0.063808, 0.197424,2.7,0.032816, + 0.2,2.7,0, 0.1674,2.74905,0, 0.165245,2.74905,0.02748, + 0.165245,2.74905,0.02748, 0.197424,2.7,0.032816, 0.2,2.7,0, + 0.275801,2.6592,-0.045844, 0.197424,2.7,-0.032816, 0.2,2.7,0, + 0.2,2.7,0, 0.2794,2.6592,0, 0.275801,2.6592,-0.045844, + 0.265363,2.6592,-0.08914, 0.189952,2.7,-0.063808, 0.197424,2.7,-0.032816, + 0.197424,2.7,-0.032816, 0.275801,2.6592,-0.045844, 0.265363,2.6592,-0.08914, + 0.248621,2.6592,-0.129351, 0.177968,2.7,-0.092592, 0.189952,2.7,-0.063808, + 0.189952,2.7,-0.063808, 0.265363,2.6592,-0.08914, 0.248621,2.6592,-0.129351, + 0.226113,2.6592,-0.165941, 0.161856,2.7,-0.118784, 0.177968,2.7,-0.092592, + 0.177968,2.7,-0.092592, 0.248621,2.6592,-0.129351, 0.226113,2.6592,-0.165941, + 0.198374,2.6592,-0.198374, 0.142,2.7,-0.142, 0.161856,2.7,-0.118784, + 0.161856,2.7,-0.118784, 0.226113,2.6592,-0.165941, 0.198374,2.6592,-0.198374, + 0.165941,2.6592,-0.226113, 0.118784,2.7,-0.161856, 0.142,2.7,-0.142, + 0.142,2.7,-0.142, 0.198374,2.6592,-0.198374, 0.165941,2.6592,-0.226113, + 0.129351,2.6592,-0.248621, 0.092592,2.7,-0.177968, 0.118784,2.7,-0.161856, + 0.118784,2.7,-0.161856, 0.165941,2.6592,-0.226113, 0.129351,2.6592,-0.248621, + 0.08914,2.6592,-0.265363, 0.063808,2.7,-0.189952, 0.092592,2.7,-0.177968, + 0.092592,2.7,-0.177968, 0.129351,2.6592,-0.248621, 0.08914,2.6592,-0.265363, + 0.045844,2.6592,-0.275801, 0.032816,2.7,-0.197424, 0.063808,2.7,-0.189952, + 0.063808,2.7,-0.189952, 0.08914,2.6592,-0.265363, 0.045844,2.6592,-0.275801, + 0,2.6592,-0.2794, 0,2.7,-0.2, 0.032816,2.7,-0.197424, + 0.032816,2.7,-0.197424, 0.045844,2.6592,-0.275801, 0,2.6592,-0.2794, + 0.386161,2.6256,-0.064188, 0.275801,2.6592,-0.045844, 0.2794,2.6592,0, + 0.2794,2.6592,0, 0.3912,2.6256,0, 0.386161,2.6256,-0.064188, + 0.371546,2.6256,-0.124808, 0.265363,2.6592,-0.08914, 0.275801,2.6592,-0.045844, + 0.275801,2.6592,-0.045844, 0.386161,2.6256,-0.064188, 0.371546,2.6256,-0.124808, + 0.348105,2.6256,-0.18111, 0.248621,2.6592,-0.129351, 0.265363,2.6592,-0.08914, + 0.265363,2.6592,-0.08914, 0.371546,2.6256,-0.124808, 0.348105,2.6256,-0.18111, + 0.31659,2.6256,-0.232342, 0.226113,2.6592,-0.165941, 0.248621,2.6592,-0.129351, + 0.248621,2.6592,-0.129351, 0.348105,2.6256,-0.18111, 0.31659,2.6256,-0.232342, + 0.277752,2.6256,-0.277752, 0.198374,2.6592,-0.198374, 0.226113,2.6592,-0.165941, + 0.226113,2.6592,-0.165941, 0.31659,2.6256,-0.232342, 0.277752,2.6256,-0.277752, + 0.232342,2.6256,-0.31659, 0.165941,2.6592,-0.226113, 0.198374,2.6592,-0.198374, + 0.198374,2.6592,-0.198374, 0.277752,2.6256,-0.277752, 0.232342,2.6256,-0.31659, + 0.18111,2.6256,-0.348105, 0.129351,2.6592,-0.248621, 0.165941,2.6592,-0.226113, + 0.165941,2.6592,-0.226113, 0.232342,2.6256,-0.31659, 0.18111,2.6256,-0.348105, + 0.124808,2.6256,-0.371546, 0.08914,2.6592,-0.265363, 0.129351,2.6592,-0.248621, + 0.129351,2.6592,-0.248621, 0.18111,2.6256,-0.348105, 0.124808,2.6256,-0.371546, + 0.064188,2.6256,-0.386161, 0.045844,2.6592,-0.275801, 0.08914,2.6592,-0.265363, + 0.08914,2.6592,-0.265363, 0.124808,2.6256,-0.371546, 0.064188,2.6256,-0.386161, + 0,2.6256,-0.3912, 0,2.6592,-0.2794, 0.045844,2.6592,-0.275801, + 0.045844,2.6592,-0.275801, 0.064188,2.6256,-0.386161, 0,2.6256,-0.3912, + 0.519028,2.5974,-0.086273, 0.386161,2.6256,-0.064188, 0.3912,2.6256,0, + 0.3912,2.6256,0, 0.5258,2.5974,0, 0.519028,2.5974,-0.086273, + 0.499384,2.5974,-0.167751, 0.371546,2.6256,-0.124808, 0.386161,2.6256,-0.064188, + 0.386161,2.6256,-0.064188, 0.519028,2.5974,-0.086273, 0.499384,2.5974,-0.167751, + 0.467878,2.5974,-0.243424, 0.348105,2.6256,-0.18111, 0.371546,2.6256,-0.124808, + 0.371546,2.6256,-0.124808, 0.499384,2.5974,-0.167751, 0.467878,2.5974,-0.243424, + 0.425519,2.5974,-0.312283, 0.31659,2.6256,-0.232342, 0.348105,2.6256,-0.18111, + 0.348105,2.6256,-0.18111, 0.467878,2.5974,-0.243424, 0.425519,2.5974,-0.312283, + 0.373318,2.5974,-0.373318, 0.277752,2.6256,-0.277752, 0.31659,2.6256,-0.232342, + 0.31659,2.6256,-0.232342, 0.425519,2.5974,-0.312283, 0.373318,2.5974,-0.373318, + 0.312283,2.5974,-0.425519, 0.232342,2.6256,-0.31659, 0.277752,2.6256,-0.277752, + 0.277752,2.6256,-0.277752, 0.373318,2.5974,-0.373318, 0.312283,2.5974,-0.425519, + 0.243424,2.5974,-0.467878, 0.18111,2.6256,-0.348105, 0.232342,2.6256,-0.31659, + 0.232342,2.6256,-0.31659, 0.312283,2.5974,-0.425519, 0.243424,2.5974,-0.467878, + 0.167751,2.5974,-0.499384, 0.124808,2.6256,-0.371546, 0.18111,2.6256,-0.348105, + 0.18111,2.6256,-0.348105, 0.243424,2.5974,-0.467878, 0.167751,2.5974,-0.499384, + 0.086273,2.5974,-0.519028, 0.064188,2.6256,-0.386161, 0.124808,2.6256,-0.371546, + 0.124808,2.6256,-0.371546, 0.167751,2.5974,-0.499384, 0.086273,2.5974,-0.519028, + 0,2.5974,-0.5258, 0,2.6256,-0.3912, 0.064188,2.6256,-0.386161, + 0.064188,2.6256,-0.386161, 0.086273,2.5974,-0.519028, 0,2.5974,-0.5258, + 0.664924,2.5728,-0.110524, 0.519028,2.5974,-0.086273, 0.5258,2.5974,0, + 0.5258,2.5974,0, 0.6736,2.5728,0, 0.664924,2.5728,-0.110524, + 0.639758,2.5728,-0.214905, 0.499384,2.5974,-0.167751, 0.519028,2.5974,-0.086273, + 0.519028,2.5974,-0.086273, 0.664924,2.5728,-0.110524, 0.639758,2.5728,-0.214905, + 0.599396,2.5728,-0.31185, 0.467878,2.5974,-0.243424, 0.499384,2.5974,-0.167751, + 0.499384,2.5974,-0.167751, 0.639758,2.5728,-0.214905, 0.599396,2.5728,-0.31185, + 0.545131,2.5728,-0.400065, 0.425519,2.5974,-0.312283, 0.467878,2.5974,-0.243424, + 0.467878,2.5974,-0.243424, 0.599396,2.5728,-0.31185, 0.545131,2.5728,-0.400065, + 0.478256,2.5728,-0.478256, 0.373318,2.5974,-0.373318, 0.425519,2.5974,-0.312283, + 0.425519,2.5974,-0.312283, 0.545131,2.5728,-0.400065, 0.478256,2.5728,-0.478256, + 0.400065,2.5728,-0.545131, 0.312283,2.5974,-0.425519, 0.373318,2.5974,-0.373318, + 0.373318,2.5974,-0.373318, 0.478256,2.5728,-0.478256, 0.400065,2.5728,-0.545131, + 0.31185,2.5728,-0.599396, 0.243424,2.5974,-0.467878, 0.312283,2.5974,-0.425519, + 0.312283,2.5974,-0.425519, 0.400065,2.5728,-0.545131, 0.31185,2.5728,-0.599396, + 0.214905,2.5728,-0.639758, 0.167751,2.5974,-0.499384, 0.243424,2.5974,-0.467878, + 0.243424,2.5974,-0.467878, 0.31185,2.5728,-0.599396, 0.214905,2.5728,-0.639758, + 0.110524,2.5728,-0.664924, 0.086273,2.5974,-0.519028, 0.167751,2.5974,-0.499384, + 0.167751,2.5974,-0.499384, 0.214905,2.5728,-0.639758, 0.110524,2.5728,-0.664924, + 0,2.5728,-0.6736, 0,2.5974,-0.5258, 0.086273,2.5974,-0.519028, + 0.086273,2.5974,-0.519028, 0.110524,2.5728,-0.664924, 0,2.5728,-0.6736, + 0.814374,2.55,-0.135366, 0.664924,2.5728,-0.110524, 0.6736,2.5728,0, + 0.6736,2.5728,0, 0.825,2.55,0, 0.814374,2.55,-0.135366, + 0.783552,2.55,-0.263208, 0.639758,2.5728,-0.214905, 0.664924,2.5728,-0.110524, + 0.664924,2.5728,-0.110524, 0.814374,2.55,-0.135366, 0.783552,2.55,-0.263208, + 0.734118,2.55,-0.381942, 0.599396,2.5728,-0.31185, 0.639758,2.5728,-0.214905, + 0.639758,2.5728,-0.214905, 0.783552,2.55,-0.263208, 0.734118,2.55,-0.381942, + 0.667656,2.55,-0.489984, 0.545131,2.5728,-0.400065, 0.599396,2.5728,-0.31185, + 0.599396,2.5728,-0.31185, 0.734118,2.55,-0.381942, 0.667656,2.55,-0.489984, + 0.58575,2.55,-0.58575, 0.478256,2.5728,-0.478256, 0.545131,2.5728,-0.400065, + 0.545131,2.5728,-0.400065, 0.667656,2.55,-0.489984, 0.58575,2.55,-0.58575, + 0.489984,2.55,-0.667656, 0.400065,2.5728,-0.545131, 0.478256,2.5728,-0.478256, + 0.478256,2.5728,-0.478256, 0.58575,2.55,-0.58575, 0.489984,2.55,-0.667656, + 0.381942,2.55,-0.734118, 0.31185,2.5728,-0.599396, 0.400065,2.5728,-0.545131, + 0.400065,2.5728,-0.545131, 0.489984,2.55,-0.667656, 0.381942,2.55,-0.734118, + 0.263208,2.55,-0.783552, 0.214905,2.5728,-0.639758, 0.31185,2.5728,-0.599396, + 0.31185,2.5728,-0.599396, 0.381942,2.55,-0.734118, 0.263208,2.55,-0.783552, + 0.135366,2.55,-0.814374, 0.110524,2.5728,-0.664924, 0.214905,2.5728,-0.639758, + 0.214905,2.5728,-0.639758, 0.263208,2.55,-0.783552, 0.135366,2.55,-0.814374, + 0,2.55,-0.825, 0,2.5728,-0.6736, 0.110524,2.5728,-0.664924, + 0.110524,2.5728,-0.664924, 0.135366,2.55,-0.814374, 0,2.55,-0.825, + 0.957901,2.5272,-0.159223, 0.814374,2.55,-0.135366, 0.825,2.55,0, + 0.825,2.55,0, 0.9704,2.5272,0, 0.957901,2.5272,-0.159223, + 0.921647,2.5272,-0.309596, 0.783552,2.55,-0.263208, 0.814374,2.55,-0.135366, + 0.814374,2.55,-0.135366, 0.957901,2.5272,-0.159223, 0.921647,2.5272,-0.309596, + 0.863501,2.5272,-0.449256, 0.734118,2.55,-0.381942, 0.783552,2.55,-0.263208, + 0.783552,2.55,-0.263208, 0.921647,2.5272,-0.309596, 0.863501,2.5272,-0.449256, + 0.785325,2.5272,-0.57634, 0.667656,2.55,-0.489984, 0.734118,2.55,-0.381942, + 0.734118,2.55,-0.381942, 0.863501,2.5272,-0.449256, 0.785325,2.5272,-0.57634, + 0.688984,2.5272,-0.688984, 0.58575,2.55,-0.58575, 0.667656,2.55,-0.489984, + 0.667656,2.55,-0.489984, 0.785325,2.5272,-0.57634, 0.688984,2.5272,-0.688984, + 0.57634,2.5272,-0.785325, 0.489984,2.55,-0.667656, 0.58575,2.55,-0.58575, + 0.58575,2.55,-0.58575, 0.688984,2.5272,-0.688984, 0.57634,2.5272,-0.785325, + 0.449256,2.5272,-0.863501, 0.381942,2.55,-0.734118, 0.489984,2.55,-0.667656, + 0.489984,2.55,-0.667656, 0.57634,2.5272,-0.785325, 0.449256,2.5272,-0.863501, + 0.309596,2.5272,-0.921647, 0.263208,2.55,-0.783552, 0.381942,2.55,-0.734118, + 0.381942,2.55,-0.734118, 0.449256,2.5272,-0.863501, 0.309596,2.5272,-0.921647, + 0.159223,2.5272,-0.957901, 0.135366,2.55,-0.814374, 0.263208,2.55,-0.783552, + 0.263208,2.55,-0.783552, 0.309596,2.5272,-0.921647, 0.159223,2.5272,-0.957901, + 0,2.5272,-0.9704, 0,2.55,-0.825, 0.135366,2.55,-0.814374, + 0.135366,2.55,-0.814374, 0.159223,2.5272,-0.957901, 0,2.5272,-0.9704, + 1.086029,2.5026,-0.180521, 0.957901,2.5272,-0.159223, 0.9704,2.5272,0, + 0.9704,2.5272,0, 1.1002,2.5026,0, 1.086029,2.5026,-0.180521, + 1.044926,2.5026,-0.351008, 0.921647,2.5272,-0.309596, 0.957901,2.5272,-0.159223, + 0.957901,2.5272,-0.159223, 1.086029,2.5026,-0.180521, 1.044926,2.5026,-0.351008, + 0.979002,2.5026,-0.509349, 0.863501,2.5272,-0.449256, 0.921647,2.5272,-0.309596, + 0.921647,2.5272,-0.309596, 1.044926,2.5026,-0.351008, 0.979002,2.5026,-0.509349, + 0.89037,2.5026,-0.653431, 0.785325,2.5272,-0.57634, 0.863501,2.5272,-0.449256, + 0.863501,2.5272,-0.449256, 0.979002,2.5026,-0.509349, 0.89037,2.5026,-0.653431, + 0.781142,2.5026,-0.781142, 0.688984,2.5272,-0.688984, 0.785325,2.5272,-0.57634, + 0.785325,2.5272,-0.57634, 0.89037,2.5026,-0.653431, 0.781142,2.5026,-0.781142, + 0.653431,2.5026,-0.89037, 0.57634,2.5272,-0.785325, 0.688984,2.5272,-0.688984, + 0.688984,2.5272,-0.688984, 0.781142,2.5026,-0.781142, 0.653431,2.5026,-0.89037, + 0.509349,2.5026,-0.979002, 0.449256,2.5272,-0.863501, 0.57634,2.5272,-0.785325, + 0.57634,2.5272,-0.785325, 0.653431,2.5026,-0.89037, 0.509349,2.5026,-0.979002, + 0.351008,2.5026,-1.044926, 0.309596,2.5272,-0.921647, 0.449256,2.5272,-0.863501, + 0.449256,2.5272,-0.863501, 0.509349,2.5026,-0.979002, 0.351008,2.5026,-1.044926, + 0.180521,2.5026,-1.086029, 0.159223,2.5272,-0.957901, 0.309596,2.5272,-0.921647, + 0.309596,2.5272,-0.921647, 0.351008,2.5026,-1.044926, 0.180521,2.5026,-1.086029, + 0,2.5026,-1.1002, 0,2.5272,-0.9704, 0.159223,2.5272,-0.957901, + 0.159223,2.5272,-0.957901, 0.180521,2.5026,-1.086029, 0,2.5026,-1.1002, + 1.189282,2.4744,-0.197684, 1.086029,2.5026,-0.180521, 1.1002,2.5026,0, + 1.1002,2.5026,0, 1.2048,2.4744,0, 1.189282,2.4744,-0.197684, + 1.144271,2.4744,-0.384379, 1.044926,2.5026,-0.351008, 1.086029,2.5026,-0.180521, + 1.086029,2.5026,-0.180521, 1.189282,2.4744,-0.197684, 1.144271,2.4744,-0.384379, + 1.072079,2.4744,-0.557774, 0.979002,2.5026,-0.509349, 1.044926,2.5026,-0.351008, + 1.044926,2.5026,-0.351008, 1.144271,2.4744,-0.384379, 1.072079,2.4744,-0.557774, + 0.975021,2.4744,-0.715555, 0.89037,2.5026,-0.653431, 0.979002,2.5026,-0.509349, + 0.979002,2.5026,-0.509349, 1.072079,2.4744,-0.557774, 0.975021,2.4744,-0.715555, + 0.855408,2.4744,-0.855408, 0.781142,2.5026,-0.781142, 0.89037,2.5026,-0.653431, + 0.89037,2.5026,-0.653431, 0.975021,2.4744,-0.715555, 0.855408,2.4744,-0.855408, + 0.715555,2.4744,-0.975021, 0.653431,2.5026,-0.89037, 0.781142,2.5026,-0.781142, + 0.781142,2.5026,-0.781142, 0.855408,2.4744,-0.855408, 0.715555,2.4744,-0.975021, + 0.557774,2.4744,-1.072079, 0.509349,2.5026,-0.979002, 0.653431,2.5026,-0.89037, + 0.653431,2.5026,-0.89037, 0.715555,2.4744,-0.975021, 0.557774,2.4744,-1.072079, + 0.384379,2.4744,-1.144271, 0.351008,2.5026,-1.044926, 0.509349,2.5026,-0.979002, + 0.509349,2.5026,-0.979002, 0.557774,2.4744,-1.072079, 0.384379,2.4744,-1.144271, + 0.197684,2.4744,-1.189282, 0.180521,2.5026,-1.086029, 0.351008,2.5026,-1.044926, + 0.351008,2.5026,-1.044926, 0.384379,2.4744,-1.144271, 0.197684,2.4744,-1.189282, + 0,2.4744,-1.2048, 0,2.5026,-1.1002, 0.180521,2.5026,-1.086029, + 0.180521,2.5026,-1.086029, 0.197684,2.4744,-1.189282, 0,2.4744,-1.2048, + 1.258183,2.4408,-0.209136, 1.189282,2.4744,-0.197684, 1.2048,2.4744,0, + 1.2048,2.4744,0, 1.2746,2.4408,0, 1.258183,2.4408,-0.209136, + 1.210564,2.4408,-0.406648, 1.144271,2.4744,-0.384379, 1.189282,2.4744,-0.197684, + 1.189282,2.4744,-0.197684, 1.258183,2.4408,-0.209136, 1.210564,2.4408,-0.406648, + 1.13419,2.4408,-0.590089, 1.072079,2.4744,-0.557774, 1.144271,2.4744,-0.384379, + 1.144271,2.4744,-0.384379, 1.210564,2.4408,-0.406648, 1.13419,2.4408,-0.590089, + 1.031508,2.4408,-0.75701, 0.975021,2.4744,-0.715555, 1.072079,2.4744,-0.557774, + 1.072079,2.4744,-0.557774, 1.13419,2.4408,-0.590089, 1.031508,2.4408,-0.75701, + 0.904966,2.4408,-0.904966, 0.855408,2.4744,-0.855408, 0.975021,2.4744,-0.715555, + 0.975021,2.4744,-0.715555, 1.031508,2.4408,-0.75701, 0.904966,2.4408,-0.904966, + 0.75701,2.4408,-1.031508, 0.715555,2.4744,-0.975021, 0.855408,2.4744,-0.855408, + 0.855408,2.4744,-0.855408, 0.904966,2.4408,-0.904966, 0.75701,2.4408,-1.031508, + 0.590089,2.4408,-1.13419, 0.557774,2.4744,-1.072079, 0.715555,2.4744,-0.975021, + 0.715555,2.4744,-0.975021, 0.75701,2.4408,-1.031508, 0.590089,2.4408,-1.13419, + 0.406648,2.4408,-1.210564, 0.384379,2.4744,-1.144271, 0.557774,2.4744,-1.072079, + 0.557774,2.4744,-1.072079, 0.590089,2.4408,-1.13419, 0.406648,2.4408,-1.210564, + 0.209136,2.4408,-1.258183, 0.197684,2.4744,-1.189282, 0.384379,2.4744,-1.144271, + 0.384379,2.4744,-1.144271, 0.406648,2.4408,-1.210564, 0.209136,2.4408,-1.258183, + 0,2.4408,-1.2746, 0,2.4744,-1.2048, 0.197684,2.4744,-1.189282, + 0.197684,2.4744,-1.189282, 0.209136,2.4408,-1.258183, 0,2.4408,-1.2746, + 1.283256,2.4,-0.213304, 1.258183,2.4408,-0.209136, 1.2746,2.4408,0, + 1.2746,2.4408,0, 1.3,2.4,0, 1.283256,2.4,-0.213304, + 1.234688,2.4,-0.414752, 1.210564,2.4408,-0.406648, 1.258183,2.4408,-0.209136, + 1.258183,2.4408,-0.209136, 1.283256,2.4,-0.213304, 1.234688,2.4,-0.414752, + 1.156792,2.4,-0.601848, 1.13419,2.4408,-0.590089, 1.210564,2.4408,-0.406648, + 1.210564,2.4408,-0.406648, 1.234688,2.4,-0.414752, 1.156792,2.4,-0.601848, + 1.052064,2.4,-0.772096, 1.031508,2.4408,-0.75701, 1.13419,2.4408,-0.590089, + 1.13419,2.4408,-0.590089, 1.156792,2.4,-0.601848, 1.052064,2.4,-0.772096, + 0.923,2.4,-0.923, 0.904966,2.4408,-0.904966, 1.031508,2.4408,-0.75701, + 1.031508,2.4408,-0.75701, 1.052064,2.4,-0.772096, 0.923,2.4,-0.923, + 0.772096,2.4,-1.052064, 0.75701,2.4408,-1.031508, 0.904966,2.4408,-0.904966, + 0.904966,2.4408,-0.904966, 0.923,2.4,-0.923, 0.772096,2.4,-1.052064, + 0.601848,2.4,-1.156792, 0.590089,2.4408,-1.13419, 0.75701,2.4408,-1.031508, + 0.75701,2.4408,-1.031508, 0.772096,2.4,-1.052064, 0.601848,2.4,-1.156792, + 0.414752,2.4,-1.234688, 0.406648,2.4408,-1.210564, 0.590089,2.4408,-1.13419, + 0.590089,2.4408,-1.13419, 0.601848,2.4,-1.156792, 0.414752,2.4,-1.234688, + 0.213304,2.4,-1.283256, 0.209136,2.4408,-1.258183, 0.406648,2.4408,-1.210564, + 0.406648,2.4408,-1.210564, 0.414752,2.4,-1.234688, 0.213304,2.4,-1.283256, + 0,2.4,-1.3, 0,2.4408,-1.2746, 0.209136,2.4408,-1.258183, + 0.209136,2.4408,-1.258183, 0.213304,2.4,-1.283256, 0,2.4,-1.3, + -0.045844,2.6592,-0.275801, -0.032816,2.7,-0.197424, 0,2.7,-0.2, + 0,2.7,-0.2, 0,2.6592,-0.2794, -0.045844,2.6592,-0.275801, + -0.08914,2.6592,-0.265363, -0.063808,2.7,-0.189952, -0.032816,2.7,-0.197424, + -0.032816,2.7,-0.197424, -0.045844,2.6592,-0.275801, -0.08914,2.6592,-0.265363, + -0.129351,2.6592,-0.248621, -0.092592,2.7,-0.177968, -0.063808,2.7,-0.189952, + -0.063808,2.7,-0.189952, -0.08914,2.6592,-0.265363, -0.129351,2.6592,-0.248621, + -0.165941,2.6592,-0.226113, -0.118784,2.7,-0.161856, -0.092592,2.7,-0.177968, + -0.092592,2.7,-0.177968, -0.129351,2.6592,-0.248621, -0.165941,2.6592,-0.226113, + -0.198374,2.6592,-0.198374, -0.142,2.7,-0.142, -0.118784,2.7,-0.161856, + -0.118784,2.7,-0.161856, -0.165941,2.6592,-0.226113, -0.198374,2.6592,-0.198374, + -0.226113,2.6592,-0.165941, -0.161856,2.7,-0.118784, -0.142,2.7,-0.142, + -0.142,2.7,-0.142, -0.198374,2.6592,-0.198374, -0.226113,2.6592,-0.165941, + -0.248621,2.6592,-0.129351, -0.177968,2.7,-0.092592, -0.161856,2.7,-0.118784, + -0.161856,2.7,-0.118784, -0.226113,2.6592,-0.165941, -0.248621,2.6592,-0.129351, + -0.265363,2.6592,-0.08914, -0.189952,2.7,-0.063808, -0.177968,2.7,-0.092592, + -0.177968,2.7,-0.092592, -0.248621,2.6592,-0.129351, -0.265363,2.6592,-0.08914, + -0.275801,2.6592,-0.045844, -0.197424,2.7,-0.032816, -0.189952,2.7,-0.063808, + -0.189952,2.7,-0.063808, -0.265363,2.6592,-0.08914, -0.275801,2.6592,-0.045844, + -0.2794,2.6592,0, -0.2,2.7,0, -0.197424,2.7,-0.032816, + -0.197424,2.7,-0.032816, -0.275801,2.6592,-0.045844, -0.2794,2.6592,0, + -0.064188,2.6256,-0.386161, -0.045844,2.6592,-0.275801, 0,2.6592,-0.2794, + 0,2.6592,-0.2794, 0,2.6256,-0.3912, -0.064188,2.6256,-0.386161, + -0.124808,2.6256,-0.371546, -0.08914,2.6592,-0.265363, -0.045844,2.6592,-0.275801, + -0.045844,2.6592,-0.275801, -0.064188,2.6256,-0.386161, -0.124808,2.6256,-0.371546, + -0.18111,2.6256,-0.348105, -0.129351,2.6592,-0.248621, -0.08914,2.6592,-0.265363, + -0.08914,2.6592,-0.265363, -0.124808,2.6256,-0.371546, -0.18111,2.6256,-0.348105, + -0.232342,2.6256,-0.31659, -0.165941,2.6592,-0.226113, -0.129351,2.6592,-0.248621, + -0.129351,2.6592,-0.248621, -0.18111,2.6256,-0.348105, -0.232342,2.6256,-0.31659, + -0.277752,2.6256,-0.277752, -0.198374,2.6592,-0.198374, -0.165941,2.6592,-0.226113, + -0.165941,2.6592,-0.226113, -0.232342,2.6256,-0.31659, -0.277752,2.6256,-0.277752, + -0.31659,2.6256,-0.232342, -0.226113,2.6592,-0.165941, -0.198374,2.6592,-0.198374, + -0.198374,2.6592,-0.198374, -0.277752,2.6256,-0.277752, -0.31659,2.6256,-0.232342, + -0.348105,2.6256,-0.18111, -0.248621,2.6592,-0.129351, -0.226113,2.6592,-0.165941, + -0.226113,2.6592,-0.165941, -0.31659,2.6256,-0.232342, -0.348105,2.6256,-0.18111, + -0.371546,2.6256,-0.124808, -0.265363,2.6592,-0.08914, -0.248621,2.6592,-0.129351, + -0.248621,2.6592,-0.129351, -0.348105,2.6256,-0.18111, -0.371546,2.6256,-0.124808, + -0.386161,2.6256,-0.064188, -0.275801,2.6592,-0.045844, -0.265363,2.6592,-0.08914, + -0.265363,2.6592,-0.08914, -0.371546,2.6256,-0.124808, -0.386161,2.6256,-0.064188, + -0.3912,2.6256,0, -0.2794,2.6592,0, -0.275801,2.6592,-0.045844, + -0.275801,2.6592,-0.045844, -0.386161,2.6256,-0.064188, -0.3912,2.6256,0, + -0.086273,2.5974,-0.519028, -0.064188,2.6256,-0.386161, 0,2.6256,-0.3912, + 0,2.6256,-0.3912, 0,2.5974,-0.5258, -0.086273,2.5974,-0.519028, + -0.167751,2.5974,-0.499384, -0.124808,2.6256,-0.371546, -0.064188,2.6256,-0.386161, + -0.064188,2.6256,-0.386161, -0.086273,2.5974,-0.519028, -0.167751,2.5974,-0.499384, + -0.243424,2.5974,-0.467878, -0.18111,2.6256,-0.348105, -0.124808,2.6256,-0.371546, + -0.124808,2.6256,-0.371546, -0.167751,2.5974,-0.499384, -0.243424,2.5974,-0.467878, + -0.312283,2.5974,-0.425519, -0.232342,2.6256,-0.31659, -0.18111,2.6256,-0.348105, + -0.18111,2.6256,-0.348105, -0.243424,2.5974,-0.467878, -0.312283,2.5974,-0.425519, + -0.373318,2.5974,-0.373318, -0.277752,2.6256,-0.277752, -0.232342,2.6256,-0.31659, + -0.232342,2.6256,-0.31659, -0.312283,2.5974,-0.425519, -0.373318,2.5974,-0.373318, + -0.425519,2.5974,-0.312283, -0.31659,2.6256,-0.232342, -0.277752,2.6256,-0.277752, + -0.277752,2.6256,-0.277752, -0.373318,2.5974,-0.373318, -0.425519,2.5974,-0.312283, + -0.467878,2.5974,-0.243424, -0.348105,2.6256,-0.18111, -0.31659,2.6256,-0.232342, + -0.31659,2.6256,-0.232342, -0.425519,2.5974,-0.312283, -0.467878,2.5974,-0.243424, + -0.499384,2.5974,-0.167751, -0.371546,2.6256,-0.124808, -0.348105,2.6256,-0.18111, + -0.348105,2.6256,-0.18111, -0.467878,2.5974,-0.243424, -0.499384,2.5974,-0.167751, + -0.519028,2.5974,-0.086273, -0.386161,2.6256,-0.064188, -0.371546,2.6256,-0.124808, + -0.371546,2.6256,-0.124808, -0.499384,2.5974,-0.167751, -0.519028,2.5974,-0.086273, + -0.5258,2.5974,0, -0.3912,2.6256,0, -0.386161,2.6256,-0.064188, + -0.386161,2.6256,-0.064188, -0.519028,2.5974,-0.086273, -0.5258,2.5974,0, + -0.110524,2.5728,-0.664924, -0.086273,2.5974,-0.519028, 0,2.5974,-0.5258, + 0,2.5974,-0.5258, 0,2.5728,-0.6736, -0.110524,2.5728,-0.664924, + -0.214905,2.5728,-0.639758, -0.167751,2.5974,-0.499384, -0.086273,2.5974,-0.519028, + -0.086273,2.5974,-0.519028, -0.110524,2.5728,-0.664924, -0.214905,2.5728,-0.639758, + -0.31185,2.5728,-0.599396, -0.243424,2.5974,-0.467878, -0.167751,2.5974,-0.499384, + -0.167751,2.5974,-0.499384, -0.214905,2.5728,-0.639758, -0.31185,2.5728,-0.599396, + -0.400065,2.5728,-0.545131, -0.312283,2.5974,-0.425519, -0.243424,2.5974,-0.467878, + -0.243424,2.5974,-0.467878, -0.31185,2.5728,-0.599396, -0.400065,2.5728,-0.545131, + -0.478256,2.5728,-0.478256, -0.373318,2.5974,-0.373318, -0.312283,2.5974,-0.425519, + -0.312283,2.5974,-0.425519, -0.400065,2.5728,-0.545131, -0.478256,2.5728,-0.478256, + -0.545131,2.5728,-0.400065, -0.425519,2.5974,-0.312283, -0.373318,2.5974,-0.373318, + -0.373318,2.5974,-0.373318, -0.478256,2.5728,-0.478256, -0.545131,2.5728,-0.400065, + -0.599396,2.5728,-0.31185, -0.467878,2.5974,-0.243424, -0.425519,2.5974,-0.312283, + -0.425519,2.5974,-0.312283, -0.545131,2.5728,-0.400065, -0.599396,2.5728,-0.31185, + -0.639758,2.5728,-0.214905, -0.499384,2.5974,-0.167751, -0.467878,2.5974,-0.243424, + -0.467878,2.5974,-0.243424, -0.599396,2.5728,-0.31185, -0.639758,2.5728,-0.214905, + -0.664924,2.5728,-0.110524, -0.519028,2.5974,-0.086273, -0.499384,2.5974,-0.167751, + -0.499384,2.5974,-0.167751, -0.639758,2.5728,-0.214905, -0.664924,2.5728,-0.110524, + -0.6736,2.5728,0, -0.5258,2.5974,0, -0.519028,2.5974,-0.086273, + -0.519028,2.5974,-0.086273, -0.664924,2.5728,-0.110524, -0.6736,2.5728,0, + -0.135366,2.55,-0.814374, -0.110524,2.5728,-0.664924, 0,2.5728,-0.6736, + 0,2.5728,-0.6736, 0,2.55,-0.825, -0.135366,2.55,-0.814374, + -0.263208,2.55,-0.783552, -0.214905,2.5728,-0.639758, -0.110524,2.5728,-0.664924, + -0.110524,2.5728,-0.664924, -0.135366,2.55,-0.814374, -0.263208,2.55,-0.783552, + -0.381942,2.55,-0.734118, -0.31185,2.5728,-0.599396, -0.214905,2.5728,-0.639758, + -0.214905,2.5728,-0.639758, -0.263208,2.55,-0.783552, -0.381942,2.55,-0.734118, + -0.489984,2.55,-0.667656, -0.400065,2.5728,-0.545131, -0.31185,2.5728,-0.599396, + -0.31185,2.5728,-0.599396, -0.381942,2.55,-0.734118, -0.489984,2.55,-0.667656, + -0.58575,2.55,-0.58575, -0.478256,2.5728,-0.478256, -0.400065,2.5728,-0.545131, + -0.400065,2.5728,-0.545131, -0.489984,2.55,-0.667656, -0.58575,2.55,-0.58575, + -0.667656,2.55,-0.489984, -0.545131,2.5728,-0.400065, -0.478256,2.5728,-0.478256, + -0.478256,2.5728,-0.478256, -0.58575,2.55,-0.58575, -0.667656,2.55,-0.489984, + -0.734118,2.55,-0.381942, -0.599396,2.5728,-0.31185, -0.545131,2.5728,-0.400065, + -0.545131,2.5728,-0.400065, -0.667656,2.55,-0.489984, -0.734118,2.55,-0.381942, + -0.783552,2.55,-0.263208, -0.639758,2.5728,-0.214905, -0.599396,2.5728,-0.31185, + -0.599396,2.5728,-0.31185, -0.734118,2.55,-0.381942, -0.783552,2.55,-0.263208, + -0.814374,2.55,-0.135366, -0.664924,2.5728,-0.110524, -0.639758,2.5728,-0.214905, + -0.639758,2.5728,-0.214905, -0.783552,2.55,-0.263208, -0.814374,2.55,-0.135366, + -0.825,2.55,0, -0.6736,2.5728,0, -0.664924,2.5728,-0.110524, + -0.664924,2.5728,-0.110524, -0.814374,2.55,-0.135366, -0.825,2.55,0, + -0.159223,2.5272,-0.957901, -0.135366,2.55,-0.814374, 0,2.55,-0.825, + 0,2.55,-0.825, 0,2.5272,-0.9704, -0.159223,2.5272,-0.957901, + -0.309596,2.5272,-0.921647, -0.263208,2.55,-0.783552, -0.135366,2.55,-0.814374, + -0.135366,2.55,-0.814374, -0.159223,2.5272,-0.957901, -0.309596,2.5272,-0.921647, + -0.449256,2.5272,-0.863501, -0.381942,2.55,-0.734118, -0.263208,2.55,-0.783552, + -0.263208,2.55,-0.783552, -0.309596,2.5272,-0.921647, -0.449256,2.5272,-0.863501, + -0.57634,2.5272,-0.785325, -0.489984,2.55,-0.667656, -0.381942,2.55,-0.734118, + -0.381942,2.55,-0.734118, -0.449256,2.5272,-0.863501, -0.57634,2.5272,-0.785325, + -0.688984,2.5272,-0.688984, -0.58575,2.55,-0.58575, -0.489984,2.55,-0.667656, + -0.489984,2.55,-0.667656, -0.57634,2.5272,-0.785325, -0.688984,2.5272,-0.688984, + -0.785325,2.5272,-0.57634, -0.667656,2.55,-0.489984, -0.58575,2.55,-0.58575, + -0.58575,2.55,-0.58575, -0.688984,2.5272,-0.688984, -0.785325,2.5272,-0.57634, + -0.863501,2.5272,-0.449256, -0.734118,2.55,-0.381942, -0.667656,2.55,-0.489984, + -0.667656,2.55,-0.489984, -0.785325,2.5272,-0.57634, -0.863501,2.5272,-0.449256, + -0.921647,2.5272,-0.309596, -0.783552,2.55,-0.263208, -0.734118,2.55,-0.381942, + -0.734118,2.55,-0.381942, -0.863501,2.5272,-0.449256, -0.921647,2.5272,-0.309596, + -0.957901,2.5272,-0.159223, -0.814374,2.55,-0.135366, -0.783552,2.55,-0.263208, + -0.783552,2.55,-0.263208, -0.921647,2.5272,-0.309596, -0.957901,2.5272,-0.159223, + -0.9704,2.5272,0, -0.825,2.55,0, -0.814374,2.55,-0.135366, + -0.814374,2.55,-0.135366, -0.957901,2.5272,-0.159223, -0.9704,2.5272,0, + -0.180521,2.5026,-1.086029, -0.159223,2.5272,-0.957901, 0,2.5272,-0.9704, + 0,2.5272,-0.9704, 0,2.5026,-1.1002, -0.180521,2.5026,-1.086029, + -0.351008,2.5026,-1.044926, -0.309596,2.5272,-0.921647, -0.159223,2.5272,-0.957901, + -0.159223,2.5272,-0.957901, -0.180521,2.5026,-1.086029, -0.351008,2.5026,-1.044926, + -0.509349,2.5026,-0.979002, -0.449256,2.5272,-0.863501, -0.309596,2.5272,-0.921647, + -0.309596,2.5272,-0.921647, -0.351008,2.5026,-1.044926, -0.509349,2.5026,-0.979002, + -0.653431,2.5026,-0.89037, -0.57634,2.5272,-0.785325, -0.449256,2.5272,-0.863501, + -0.449256,2.5272,-0.863501, -0.509349,2.5026,-0.979002, -0.653431,2.5026,-0.89037, + -0.781142,2.5026,-0.781142, -0.688984,2.5272,-0.688984, -0.57634,2.5272,-0.785325, + -0.57634,2.5272,-0.785325, -0.653431,2.5026,-0.89037, -0.781142,2.5026,-0.781142, + -0.89037,2.5026,-0.653431, -0.785325,2.5272,-0.57634, -0.688984,2.5272,-0.688984, + -0.688984,2.5272,-0.688984, -0.781142,2.5026,-0.781142, -0.89037,2.5026,-0.653431, + -0.979002,2.5026,-0.509349, -0.863501,2.5272,-0.449256, -0.785325,2.5272,-0.57634, + -0.785325,2.5272,-0.57634, -0.89037,2.5026,-0.653431, -0.979002,2.5026,-0.509349, + -1.044926,2.5026,-0.351008, -0.921647,2.5272,-0.309596, -0.863501,2.5272,-0.449256, + -0.863501,2.5272,-0.449256, -0.979002,2.5026,-0.509349, -1.044926,2.5026,-0.351008, + -1.086029,2.5026,-0.180521, -0.957901,2.5272,-0.159223, -0.921647,2.5272,-0.309596, + -0.921647,2.5272,-0.309596, -1.044926,2.5026,-0.351008, -1.086029,2.5026,-0.180521, + -1.1002,2.5026,0, -0.9704,2.5272,0, -0.957901,2.5272,-0.159223, + -0.957901,2.5272,-0.159223, -1.086029,2.5026,-0.180521, -1.1002,2.5026,0, + -0.197684,2.4744,-1.189282, -0.180521,2.5026,-1.086029, 0,2.5026,-1.1002, + 0,2.5026,-1.1002, 0,2.4744,-1.2048, -0.197684,2.4744,-1.189282, + -0.384379,2.4744,-1.144271, -0.351008,2.5026,-1.044926, -0.180521,2.5026,-1.086029, + -0.180521,2.5026,-1.086029, -0.197684,2.4744,-1.189282, -0.384379,2.4744,-1.144271, + -0.557774,2.4744,-1.072079, -0.509349,2.5026,-0.979002, -0.351008,2.5026,-1.044926, + -0.351008,2.5026,-1.044926, -0.384379,2.4744,-1.144271, -0.557774,2.4744,-1.072079, + -0.715555,2.4744,-0.975021, -0.653431,2.5026,-0.89037, -0.509349,2.5026,-0.979002, + -0.509349,2.5026,-0.979002, -0.557774,2.4744,-1.072079, -0.715555,2.4744,-0.975021, + -0.855408,2.4744,-0.855408, -0.781142,2.5026,-0.781142, -0.653431,2.5026,-0.89037, + -0.653431,2.5026,-0.89037, -0.715555,2.4744,-0.975021, -0.855408,2.4744,-0.855408, + -0.975021,2.4744,-0.715555, -0.89037,2.5026,-0.653431, -0.781142,2.5026,-0.781142, + -0.781142,2.5026,-0.781142, -0.855408,2.4744,-0.855408, -0.975021,2.4744,-0.715555, + -1.072079,2.4744,-0.557774, -0.979002,2.5026,-0.509349, -0.89037,2.5026,-0.653431, + -0.89037,2.5026,-0.653431, -0.975021,2.4744,-0.715555, -1.072079,2.4744,-0.557774, + -1.144271,2.4744,-0.384379, -1.044926,2.5026,-0.351008, -0.979002,2.5026,-0.509349, + -0.979002,2.5026,-0.509349, -1.072079,2.4744,-0.557774, -1.144271,2.4744,-0.384379, + -1.189282,2.4744,-0.197684, -1.086029,2.5026,-0.180521, -1.044926,2.5026,-0.351008, + -1.044926,2.5026,-0.351008, -1.144271,2.4744,-0.384379, -1.189282,2.4744,-0.197684, + -1.2048,2.4744,0, -1.1002,2.5026,0, -1.086029,2.5026,-0.180521, + -1.086029,2.5026,-0.180521, -1.189282,2.4744,-0.197684, -1.2048,2.4744,0, + -0.209136,2.4408,-1.258183, -0.197684,2.4744,-1.189282, 0,2.4744,-1.2048, + 0,2.4744,-1.2048, 0,2.4408,-1.2746, -0.209136,2.4408,-1.258183, + -0.406648,2.4408,-1.210564, -0.384379,2.4744,-1.144271, -0.197684,2.4744,-1.189282, + -0.197684,2.4744,-1.189282, -0.209136,2.4408,-1.258183, -0.406648,2.4408,-1.210564, + -0.590089,2.4408,-1.13419, -0.557774,2.4744,-1.072079, -0.384379,2.4744,-1.144271, + -0.384379,2.4744,-1.144271, -0.406648,2.4408,-1.210564, -0.590089,2.4408,-1.13419, + -0.75701,2.4408,-1.031508, -0.715555,2.4744,-0.975021, -0.557774,2.4744,-1.072079, + -0.557774,2.4744,-1.072079, -0.590089,2.4408,-1.13419, -0.75701,2.4408,-1.031508, + -0.904966,2.4408,-0.904966, -0.855408,2.4744,-0.855408, -0.715555,2.4744,-0.975021, + -0.715555,2.4744,-0.975021, -0.75701,2.4408,-1.031508, -0.904966,2.4408,-0.904966, + -1.031508,2.4408,-0.75701, -0.975021,2.4744,-0.715555, -0.855408,2.4744,-0.855408, + -0.855408,2.4744,-0.855408, -0.904966,2.4408,-0.904966, -1.031508,2.4408,-0.75701, + -1.13419,2.4408,-0.590089, -1.072079,2.4744,-0.557774, -0.975021,2.4744,-0.715555, + -0.975021,2.4744,-0.715555, -1.031508,2.4408,-0.75701, -1.13419,2.4408,-0.590089, + -1.210564,2.4408,-0.406648, -1.144271,2.4744,-0.384379, -1.072079,2.4744,-0.557774, + -1.072079,2.4744,-0.557774, -1.13419,2.4408,-0.590089, -1.210564,2.4408,-0.406648, + -1.258183,2.4408,-0.209136, -1.189282,2.4744,-0.197684, -1.144271,2.4744,-0.384379, + -1.144271,2.4744,-0.384379, -1.210564,2.4408,-0.406648, -1.258183,2.4408,-0.209136, + -1.2746,2.4408,0, -1.2048,2.4744,0, -1.189282,2.4744,-0.197684, + -1.189282,2.4744,-0.197684, -1.258183,2.4408,-0.209136, -1.2746,2.4408,0, + -0.213304,2.4,-1.283256, -0.209136,2.4408,-1.258183, 0,2.4408,-1.2746, + 0,2.4408,-1.2746, 0,2.4,-1.3, -0.213304,2.4,-1.283256, + -0.414752,2.4,-1.234688, -0.406648,2.4408,-1.210564, -0.209136,2.4408,-1.258183, + -0.209136,2.4408,-1.258183, -0.213304,2.4,-1.283256, -0.414752,2.4,-1.234688, + -0.601848,2.4,-1.156792, -0.590089,2.4408,-1.13419, -0.406648,2.4408,-1.210564, + -0.406648,2.4408,-1.210564, -0.414752,2.4,-1.234688, -0.601848,2.4,-1.156792, + -0.772096,2.4,-1.052064, -0.75701,2.4408,-1.031508, -0.590089,2.4408,-1.13419, + -0.590089,2.4408,-1.13419, -0.601848,2.4,-1.156792, -0.772096,2.4,-1.052064, + -0.923,2.4,-0.923, -0.904966,2.4408,-0.904966, -0.75701,2.4408,-1.031508, + -0.75701,2.4408,-1.031508, -0.772096,2.4,-1.052064, -0.923,2.4,-0.923, + -1.052064,2.4,-0.772096, -1.031508,2.4408,-0.75701, -0.904966,2.4408,-0.904966, + -0.904966,2.4408,-0.904966, -0.923,2.4,-0.923, -1.052064,2.4,-0.772096, + -1.156792,2.4,-0.601848, -1.13419,2.4408,-0.590089, -1.031508,2.4408,-0.75701, + -1.031508,2.4408,-0.75701, -1.052064,2.4,-0.772096, -1.156792,2.4,-0.601848, + -1.234688,2.4,-0.414752, -1.210564,2.4408,-0.406648, -1.13419,2.4408,-0.590089, + -1.13419,2.4408,-0.590089, -1.156792,2.4,-0.601848, -1.234688,2.4,-0.414752, + -1.283256,2.4,-0.213304, -1.258183,2.4408,-0.209136, -1.210564,2.4408,-0.406648, + -1.210564,2.4408,-0.406648, -1.234688,2.4,-0.414752, -1.283256,2.4,-0.213304, + -1.3,2.4,0, -1.2746,2.4408,0, -1.258183,2.4408,-0.209136, + -1.258183,2.4408,-0.209136, -1.283256,2.4,-0.213304, -1.3,2.4,0, + -0.275801,2.6592,0.045844, -0.197424,2.7,0.032816, -0.2,2.7,0, + -0.2,2.7,0, -0.2794,2.6592,0, -0.275801,2.6592,0.045844, + -0.265363,2.6592,0.08914, -0.189952,2.7,0.063808, -0.197424,2.7,0.032816, + -0.197424,2.7,0.032816, -0.275801,2.6592,0.045844, -0.265363,2.6592,0.08914, + -0.248621,2.6592,0.129351, -0.177968,2.7,0.092592, -0.189952,2.7,0.063808, + -0.189952,2.7,0.063808, -0.265363,2.6592,0.08914, -0.248621,2.6592,0.129351, + -0.226113,2.6592,0.165941, -0.161856,2.7,0.118784, -0.177968,2.7,0.092592, + -0.177968,2.7,0.092592, -0.248621,2.6592,0.129351, -0.226113,2.6592,0.165941, + -0.198374,2.6592,0.198374, -0.142,2.7,0.142, -0.161856,2.7,0.118784, + -0.161856,2.7,0.118784, -0.226113,2.6592,0.165941, -0.198374,2.6592,0.198374, + -0.165941,2.6592,0.226113, -0.118784,2.7,0.161856, -0.142,2.7,0.142, + -0.142,2.7,0.142, -0.198374,2.6592,0.198374, -0.165941,2.6592,0.226113, + -0.129351,2.6592,0.248621, -0.092592,2.7,0.177968, -0.118784,2.7,0.161856, + -0.118784,2.7,0.161856, -0.165941,2.6592,0.226113, -0.129351,2.6592,0.248621, + -0.08914,2.6592,0.265363, -0.063808,2.7,0.189952, -0.092592,2.7,0.177968, + -0.092592,2.7,0.177968, -0.129351,2.6592,0.248621, -0.08914,2.6592,0.265363, + -0.045844,2.6592,0.275801, -0.032816,2.7,0.197424, -0.063808,2.7,0.189952, + -0.063808,2.7,0.189952, -0.08914,2.6592,0.265363, -0.045844,2.6592,0.275801, + 0,2.6592,0.2794, 0,2.7,0.2, -0.032816,2.7,0.197424, + -0.032816,2.7,0.197424, -0.045844,2.6592,0.275801, 0,2.6592,0.2794, + -0.386161,2.6256,0.064188, -0.275801,2.6592,0.045844, -0.2794,2.6592,0, + -0.2794,2.6592,0, -0.3912,2.6256,0, -0.386161,2.6256,0.064188, + -0.371546,2.6256,0.124808, -0.265363,2.6592,0.08914, -0.275801,2.6592,0.045844, + -0.275801,2.6592,0.045844, -0.386161,2.6256,0.064188, -0.371546,2.6256,0.124808, + -0.348105,2.6256,0.18111, -0.248621,2.6592,0.129351, -0.265363,2.6592,0.08914, + -0.265363,2.6592,0.08914, -0.371546,2.6256,0.124808, -0.348105,2.6256,0.18111, + -0.31659,2.6256,0.232342, -0.226113,2.6592,0.165941, -0.248621,2.6592,0.129351, + -0.248621,2.6592,0.129351, -0.348105,2.6256,0.18111, -0.31659,2.6256,0.232342, + -0.277752,2.6256,0.277752, -0.198374,2.6592,0.198374, -0.226113,2.6592,0.165941, + -0.226113,2.6592,0.165941, -0.31659,2.6256,0.232342, -0.277752,2.6256,0.277752, + -0.232342,2.6256,0.31659, -0.165941,2.6592,0.226113, -0.198374,2.6592,0.198374, + -0.198374,2.6592,0.198374, -0.277752,2.6256,0.277752, -0.232342,2.6256,0.31659, + -0.18111,2.6256,0.348105, -0.129351,2.6592,0.248621, -0.165941,2.6592,0.226113, + -0.165941,2.6592,0.226113, -0.232342,2.6256,0.31659, -0.18111,2.6256,0.348105, + -0.124808,2.6256,0.371546, -0.08914,2.6592,0.265363, -0.129351,2.6592,0.248621, + -0.129351,2.6592,0.248621, -0.18111,2.6256,0.348105, -0.124808,2.6256,0.371546, + -0.064188,2.6256,0.386161, -0.045844,2.6592,0.275801, -0.08914,2.6592,0.265363, + -0.08914,2.6592,0.265363, -0.124808,2.6256,0.371546, -0.064188,2.6256,0.386161, + 0,2.6256,0.3912, 0,2.6592,0.2794, -0.045844,2.6592,0.275801, + -0.045844,2.6592,0.275801, -0.064188,2.6256,0.386161, 0,2.6256,0.3912, + -0.519028,2.5974,0.086273, -0.386161,2.6256,0.064188, -0.3912,2.6256,0, + -0.3912,2.6256,0, -0.5258,2.5974,0, -0.519028,2.5974,0.086273, + -0.499384,2.5974,0.167751, -0.371546,2.6256,0.124808, -0.386161,2.6256,0.064188, + -0.386161,2.6256,0.064188, -0.519028,2.5974,0.086273, -0.499384,2.5974,0.167751, + -0.467878,2.5974,0.243424, -0.348105,2.6256,0.18111, -0.371546,2.6256,0.124808, + -0.371546,2.6256,0.124808, -0.499384,2.5974,0.167751, -0.467878,2.5974,0.243424, + -0.425519,2.5974,0.312283, -0.31659,2.6256,0.232342, -0.348105,2.6256,0.18111, + -0.348105,2.6256,0.18111, -0.467878,2.5974,0.243424, -0.425519,2.5974,0.312283, + -0.373318,2.5974,0.373318, -0.277752,2.6256,0.277752, -0.31659,2.6256,0.232342, + -0.31659,2.6256,0.232342, -0.425519,2.5974,0.312283, -0.373318,2.5974,0.373318, + -0.312283,2.5974,0.425519, -0.232342,2.6256,0.31659, -0.277752,2.6256,0.277752, + -0.277752,2.6256,0.277752, -0.373318,2.5974,0.373318, -0.312283,2.5974,0.425519, + -0.243424,2.5974,0.467878, -0.18111,2.6256,0.348105, -0.232342,2.6256,0.31659, + -0.232342,2.6256,0.31659, -0.312283,2.5974,0.425519, -0.243424,2.5974,0.467878, + -0.167751,2.5974,0.499384, -0.124808,2.6256,0.371546, -0.18111,2.6256,0.348105, + -0.18111,2.6256,0.348105, -0.243424,2.5974,0.467878, -0.167751,2.5974,0.499384, + -0.086273,2.5974,0.519028, -0.064188,2.6256,0.386161, -0.124808,2.6256,0.371546, + -0.124808,2.6256,0.371546, -0.167751,2.5974,0.499384, -0.086273,2.5974,0.519028, + 0,2.5974,0.5258, 0,2.6256,0.3912, -0.064188,2.6256,0.386161, + -0.064188,2.6256,0.386161, -0.086273,2.5974,0.519028, 0,2.5974,0.5258, + -0.664924,2.5728,0.110524, -0.519028,2.5974,0.086273, -0.5258,2.5974,0, + -0.5258,2.5974,0, -0.6736,2.5728,0, -0.664924,2.5728,0.110524, + -0.639758,2.5728,0.214905, -0.499384,2.5974,0.167751, -0.519028,2.5974,0.086273, + -0.519028,2.5974,0.086273, -0.664924,2.5728,0.110524, -0.639758,2.5728,0.214905, + -0.599396,2.5728,0.31185, -0.467878,2.5974,0.243424, -0.499384,2.5974,0.167751, + -0.499384,2.5974,0.167751, -0.639758,2.5728,0.214905, -0.599396,2.5728,0.31185, + -0.545131,2.5728,0.400065, -0.425519,2.5974,0.312283, -0.467878,2.5974,0.243424, + -0.467878,2.5974,0.243424, -0.599396,2.5728,0.31185, -0.545131,2.5728,0.400065, + -0.478256,2.5728,0.478256, -0.373318,2.5974,0.373318, -0.425519,2.5974,0.312283, + -0.425519,2.5974,0.312283, -0.545131,2.5728,0.400065, -0.478256,2.5728,0.478256, + -0.400065,2.5728,0.545131, -0.312283,2.5974,0.425519, -0.373318,2.5974,0.373318, + -0.373318,2.5974,0.373318, -0.478256,2.5728,0.478256, -0.400065,2.5728,0.545131, + -0.31185,2.5728,0.599396, -0.243424,2.5974,0.467878, -0.312283,2.5974,0.425519, + -0.312283,2.5974,0.425519, -0.400065,2.5728,0.545131, -0.31185,2.5728,0.599396, + -0.214905,2.5728,0.639758, -0.167751,2.5974,0.499384, -0.243424,2.5974,0.467878, + -0.243424,2.5974,0.467878, -0.31185,2.5728,0.599396, -0.214905,2.5728,0.639758, + -0.110524,2.5728,0.664924, -0.086273,2.5974,0.519028, -0.167751,2.5974,0.499384, + -0.167751,2.5974,0.499384, -0.214905,2.5728,0.639758, -0.110524,2.5728,0.664924, + 0,2.5728,0.6736, 0,2.5974,0.5258, -0.086273,2.5974,0.519028, + -0.086273,2.5974,0.519028, -0.110524,2.5728,0.664924, 0,2.5728,0.6736, + -0.814374,2.55,0.135366, -0.664924,2.5728,0.110524, -0.6736,2.5728,0, + -0.6736,2.5728,0, -0.825,2.55,0, -0.814374,2.55,0.135366, + -0.783552,2.55,0.263208, -0.639758,2.5728,0.214905, -0.664924,2.5728,0.110524, + -0.664924,2.5728,0.110524, -0.814374,2.55,0.135366, -0.783552,2.55,0.263208, + -0.734118,2.55,0.381942, -0.599396,2.5728,0.31185, -0.639758,2.5728,0.214905, + -0.639758,2.5728,0.214905, -0.783552,2.55,0.263208, -0.734118,2.55,0.381942, + -0.667656,2.55,0.489984, -0.545131,2.5728,0.400065, -0.599396,2.5728,0.31185, + -0.599396,2.5728,0.31185, -0.734118,2.55,0.381942, -0.667656,2.55,0.489984, + -0.58575,2.55,0.58575, -0.478256,2.5728,0.478256, -0.545131,2.5728,0.400065, + -0.545131,2.5728,0.400065, -0.667656,2.55,0.489984, -0.58575,2.55,0.58575, + -0.489984,2.55,0.667656, -0.400065,2.5728,0.545131, -0.478256,2.5728,0.478256, + -0.478256,2.5728,0.478256, -0.58575,2.55,0.58575, -0.489984,2.55,0.667656, + -0.381942,2.55,0.734118, -0.31185,2.5728,0.599396, -0.400065,2.5728,0.545131, + -0.400065,2.5728,0.545131, -0.489984,2.55,0.667656, -0.381942,2.55,0.734118, + -0.263208,2.55,0.783552, -0.214905,2.5728,0.639758, -0.31185,2.5728,0.599396, + -0.31185,2.5728,0.599396, -0.381942,2.55,0.734118, -0.263208,2.55,0.783552, + -0.135366,2.55,0.814374, -0.110524,2.5728,0.664924, -0.214905,2.5728,0.639758, + -0.214905,2.5728,0.639758, -0.263208,2.55,0.783552, -0.135366,2.55,0.814374, + 0,2.55,0.825, 0,2.5728,0.6736, -0.110524,2.5728,0.664924, + -0.110524,2.5728,0.664924, -0.135366,2.55,0.814374, 0,2.55,0.825, + -0.957901,2.5272,0.159223, -0.814374,2.55,0.135366, -0.825,2.55,0, + -0.825,2.55,0, -0.9704,2.5272,0, -0.957901,2.5272,0.159223, + -0.921647,2.5272,0.309596, -0.783552,2.55,0.263208, -0.814374,2.55,0.135366, + -0.814374,2.55,0.135366, -0.957901,2.5272,0.159223, -0.921647,2.5272,0.309596, + -0.863501,2.5272,0.449256, -0.734118,2.55,0.381942, -0.783552,2.55,0.263208, + -0.783552,2.55,0.263208, -0.921647,2.5272,0.309596, -0.863501,2.5272,0.449256, + -0.785325,2.5272,0.57634, -0.667656,2.55,0.489984, -0.734118,2.55,0.381942, + -0.734118,2.55,0.381942, -0.863501,2.5272,0.449256, -0.785325,2.5272,0.57634, + -0.688984,2.5272,0.688984, -0.58575,2.55,0.58575, -0.667656,2.55,0.489984, + -0.667656,2.55,0.489984, -0.785325,2.5272,0.57634, -0.688984,2.5272,0.688984, + -0.57634,2.5272,0.785325, -0.489984,2.55,0.667656, -0.58575,2.55,0.58575, + -0.58575,2.55,0.58575, -0.688984,2.5272,0.688984, -0.57634,2.5272,0.785325, + -0.449256,2.5272,0.863501, -0.381942,2.55,0.734118, -0.489984,2.55,0.667656, + -0.489984,2.55,0.667656, -0.57634,2.5272,0.785325, -0.449256,2.5272,0.863501, + -0.309596,2.5272,0.921647, -0.263208,2.55,0.783552, -0.381942,2.55,0.734118, + -0.381942,2.55,0.734118, -0.449256,2.5272,0.863501, -0.309596,2.5272,0.921647, + -0.159223,2.5272,0.957901, -0.135366,2.55,0.814374, -0.263208,2.55,0.783552, + -0.263208,2.55,0.783552, -0.309596,2.5272,0.921647, -0.159223,2.5272,0.957901, + 0,2.5272,0.9704, 0,2.55,0.825, -0.135366,2.55,0.814374, + -0.135366,2.55,0.814374, -0.159223,2.5272,0.957901, 0,2.5272,0.9704, + -1.086029,2.5026,0.180521, -0.957901,2.5272,0.159223, -0.9704,2.5272,0, + -0.9704,2.5272,0, -1.1002,2.5026,0, -1.086029,2.5026,0.180521, + -1.044926,2.5026,0.351008, -0.921647,2.5272,0.309596, -0.957901,2.5272,0.159223, + -0.957901,2.5272,0.159223, -1.086029,2.5026,0.180521, -1.044926,2.5026,0.351008, + -0.979002,2.5026,0.509349, -0.863501,2.5272,0.449256, -0.921647,2.5272,0.309596, + -0.921647,2.5272,0.309596, -1.044926,2.5026,0.351008, -0.979002,2.5026,0.509349, + -0.89037,2.5026,0.653431, -0.785325,2.5272,0.57634, -0.863501,2.5272,0.449256, + -0.863501,2.5272,0.449256, -0.979002,2.5026,0.509349, -0.89037,2.5026,0.653431, + -0.781142,2.5026,0.781142, -0.688984,2.5272,0.688984, -0.785325,2.5272,0.57634, + -0.785325,2.5272,0.57634, -0.89037,2.5026,0.653431, -0.781142,2.5026,0.781142, + -0.653431,2.5026,0.89037, -0.57634,2.5272,0.785325, -0.688984,2.5272,0.688984, + -0.688984,2.5272,0.688984, -0.781142,2.5026,0.781142, -0.653431,2.5026,0.89037, + -0.509349,2.5026,0.979002, -0.449256,2.5272,0.863501, -0.57634,2.5272,0.785325, + -0.57634,2.5272,0.785325, -0.653431,2.5026,0.89037, -0.509349,2.5026,0.979002, + -0.351008,2.5026,1.044926, -0.309596,2.5272,0.921647, -0.449256,2.5272,0.863501, + -0.449256,2.5272,0.863501, -0.509349,2.5026,0.979002, -0.351008,2.5026,1.044926, + -0.180521,2.5026,1.086029, -0.159223,2.5272,0.957901, -0.309596,2.5272,0.921647, + -0.309596,2.5272,0.921647, -0.351008,2.5026,1.044926, -0.180521,2.5026,1.086029, + 0,2.5026,1.1002, 0,2.5272,0.9704, -0.159223,2.5272,0.957901, + -0.159223,2.5272,0.957901, -0.180521,2.5026,1.086029, 0,2.5026,1.1002, + -1.189282,2.4744,0.197684, -1.086029,2.5026,0.180521, -1.1002,2.5026,0, + -1.1002,2.5026,0, -1.2048,2.4744,0, -1.189282,2.4744,0.197684, + -1.144271,2.4744,0.384379, -1.044926,2.5026,0.351008, -1.086029,2.5026,0.180521, + -1.086029,2.5026,0.180521, -1.189282,2.4744,0.197684, -1.144271,2.4744,0.384379, + -1.072079,2.4744,0.557774, -0.979002,2.5026,0.509349, -1.044926,2.5026,0.351008, + -1.044926,2.5026,0.351008, -1.144271,2.4744,0.384379, -1.072079,2.4744,0.557774, + -0.975021,2.4744,0.715555, -0.89037,2.5026,0.653431, -0.979002,2.5026,0.509349, + -0.979002,2.5026,0.509349, -1.072079,2.4744,0.557774, -0.975021,2.4744,0.715555, + -0.855408,2.4744,0.855408, -0.781142,2.5026,0.781142, -0.89037,2.5026,0.653431, + -0.89037,2.5026,0.653431, -0.975021,2.4744,0.715555, -0.855408,2.4744,0.855408, + -0.715555,2.4744,0.975021, -0.653431,2.5026,0.89037, -0.781142,2.5026,0.781142, + -0.781142,2.5026,0.781142, -0.855408,2.4744,0.855408, -0.715555,2.4744,0.975021, + -0.557774,2.4744,1.072079, -0.509349,2.5026,0.979002, -0.653431,2.5026,0.89037, + -0.653431,2.5026,0.89037, -0.715555,2.4744,0.975021, -0.557774,2.4744,1.072079, + -0.384379,2.4744,1.144271, -0.351008,2.5026,1.044926, -0.509349,2.5026,0.979002, + -0.509349,2.5026,0.979002, -0.557774,2.4744,1.072079, -0.384379,2.4744,1.144271, + -0.197684,2.4744,1.189282, -0.180521,2.5026,1.086029, -0.351008,2.5026,1.044926, + -0.351008,2.5026,1.044926, -0.384379,2.4744,1.144271, -0.197684,2.4744,1.189282, + 0,2.4744,1.2048, 0,2.5026,1.1002, -0.180521,2.5026,1.086029, + -0.180521,2.5026,1.086029, -0.197684,2.4744,1.189282, 0,2.4744,1.2048, + -1.258183,2.4408,0.209136, -1.189282,2.4744,0.197684, -1.2048,2.4744,0, + -1.2048,2.4744,0, -1.2746,2.4408,0, -1.258183,2.4408,0.209136, + -1.210564,2.4408,0.406648, -1.144271,2.4744,0.384379, -1.189282,2.4744,0.197684, + -1.189282,2.4744,0.197684, -1.258183,2.4408,0.209136, -1.210564,2.4408,0.406648, + -1.13419,2.4408,0.590089, -1.072079,2.4744,0.557774, -1.144271,2.4744,0.384379, + -1.144271,2.4744,0.384379, -1.210564,2.4408,0.406648, -1.13419,2.4408,0.590089, + -1.031508,2.4408,0.75701, -0.975021,2.4744,0.715555, -1.072079,2.4744,0.557774, + -1.072079,2.4744,0.557774, -1.13419,2.4408,0.590089, -1.031508,2.4408,0.75701, + -0.904966,2.4408,0.904966, -0.855408,2.4744,0.855408, -0.975021,2.4744,0.715555, + -0.975021,2.4744,0.715555, -1.031508,2.4408,0.75701, -0.904966,2.4408,0.904966, + -0.75701,2.4408,1.031508, -0.715555,2.4744,0.975021, -0.855408,2.4744,0.855408, + -0.855408,2.4744,0.855408, -0.904966,2.4408,0.904966, -0.75701,2.4408,1.031508, + -0.590089,2.4408,1.13419, -0.557774,2.4744,1.072079, -0.715555,2.4744,0.975021, + -0.715555,2.4744,0.975021, -0.75701,2.4408,1.031508, -0.590089,2.4408,1.13419, + -0.406648,2.4408,1.210564, -0.384379,2.4744,1.144271, -0.557774,2.4744,1.072079, + -0.557774,2.4744,1.072079, -0.590089,2.4408,1.13419, -0.406648,2.4408,1.210564, + -0.209136,2.4408,1.258183, -0.197684,2.4744,1.189282, -0.384379,2.4744,1.144271, + -0.384379,2.4744,1.144271, -0.406648,2.4408,1.210564, -0.209136,2.4408,1.258183, + 0,2.4408,1.2746, 0,2.4744,1.2048, -0.197684,2.4744,1.189282, + -0.197684,2.4744,1.189282, -0.209136,2.4408,1.258183, 0,2.4408,1.2746, + -1.283256,2.4,0.213304, -1.258183,2.4408,0.209136, -1.2746,2.4408,0, + -1.2746,2.4408,0, -1.3,2.4,0, -1.283256,2.4,0.213304, + -1.234688,2.4,0.414752, -1.210564,2.4408,0.406648, -1.258183,2.4408,0.209136, + -1.258183,2.4408,0.209136, -1.283256,2.4,0.213304, -1.234688,2.4,0.414752, + -1.156792,2.4,0.601848, -1.13419,2.4408,0.590089, -1.210564,2.4408,0.406648, + -1.210564,2.4408,0.406648, -1.234688,2.4,0.414752, -1.156792,2.4,0.601848, + -1.052064,2.4,0.772096, -1.031508,2.4408,0.75701, -1.13419,2.4408,0.590089, + -1.13419,2.4408,0.590089, -1.156792,2.4,0.601848, -1.052064,2.4,0.772096, + -0.923,2.4,0.923, -0.904966,2.4408,0.904966, -1.031508,2.4408,0.75701, + -1.031508,2.4408,0.75701, -1.052064,2.4,0.772096, -0.923,2.4,0.923, + -0.772096,2.4,1.052064, -0.75701,2.4408,1.031508, -0.904966,2.4408,0.904966, + -0.904966,2.4408,0.904966, -0.923,2.4,0.923, -0.772096,2.4,1.052064, + -0.601848,2.4,1.156792, -0.590089,2.4408,1.13419, -0.75701,2.4408,1.031508, + -0.75701,2.4408,1.031508, -0.772096,2.4,1.052064, -0.601848,2.4,1.156792, + -0.414752,2.4,1.234688, -0.406648,2.4408,1.210564, -0.590089,2.4408,1.13419, + -0.590089,2.4408,1.13419, -0.601848,2.4,1.156792, -0.414752,2.4,1.234688, + -0.213304,2.4,1.283256, -0.209136,2.4408,1.258183, -0.406648,2.4408,1.210564, + -0.406648,2.4408,1.210564, -0.414752,2.4,1.234688, -0.213304,2.4,1.283256, + 0,2.4,1.3, 0,2.4408,1.2746, -0.209136,2.4408,1.258183, + -0.209136,2.4408,1.258183, -0.213304,2.4,1.283256, 0,2.4,1.3, + 0.045844,2.6592,0.275801, 0.032816,2.7,0.197424, 0,2.7,0.2, + 0,2.7,0.2, 0,2.6592,0.2794, 0.045844,2.6592,0.275801, + 0.08914,2.6592,0.265363, 0.063808,2.7,0.189952, 0.032816,2.7,0.197424, + 0.032816,2.7,0.197424, 0.045844,2.6592,0.275801, 0.08914,2.6592,0.265363, + 0.129351,2.6592,0.248621, 0.092592,2.7,0.177968, 0.063808,2.7,0.189952, + 0.063808,2.7,0.189952, 0.08914,2.6592,0.265363, 0.129351,2.6592,0.248621, + 0.165941,2.6592,0.226113, 0.118784,2.7,0.161856, 0.092592,2.7,0.177968, + 0.092592,2.7,0.177968, 0.129351,2.6592,0.248621, 0.165941,2.6592,0.226113, + 0.198374,2.6592,0.198374, 0.142,2.7,0.142, 0.118784,2.7,0.161856, + 0.118784,2.7,0.161856, 0.165941,2.6592,0.226113, 0.198374,2.6592,0.198374, + 0.226113,2.6592,0.165941, 0.161856,2.7,0.118784, 0.142,2.7,0.142, + 0.142,2.7,0.142, 0.198374,2.6592,0.198374, 0.226113,2.6592,0.165941, + 0.248621,2.6592,0.129351, 0.177968,2.7,0.092592, 0.161856,2.7,0.118784, + 0.161856,2.7,0.118784, 0.226113,2.6592,0.165941, 0.248621,2.6592,0.129351, + 0.265363,2.6592,0.08914, 0.189952,2.7,0.063808, 0.177968,2.7,0.092592, + 0.177968,2.7,0.092592, 0.248621,2.6592,0.129351, 0.265363,2.6592,0.08914, + 0.275801,2.6592,0.045844, 0.197424,2.7,0.032816, 0.189952,2.7,0.063808, + 0.189952,2.7,0.063808, 0.265363,2.6592,0.08914, 0.275801,2.6592,0.045844, + 0.2794,2.6592,0, 0.2,2.7,0, 0.197424,2.7,0.032816, + 0.197424,2.7,0.032816, 0.275801,2.6592,0.045844, 0.2794,2.6592,0, + 0.064188,2.6256,0.386161, 0.045844,2.6592,0.275801, 0,2.6592,0.2794, + 0,2.6592,0.2794, 0,2.6256,0.3912, 0.064188,2.6256,0.386161, + 0.124808,2.6256,0.371546, 0.08914,2.6592,0.265363, 0.045844,2.6592,0.275801, + 0.045844,2.6592,0.275801, 0.064188,2.6256,0.386161, 0.124808,2.6256,0.371546, + 0.18111,2.6256,0.348105, 0.129351,2.6592,0.248621, 0.08914,2.6592,0.265363, + 0.08914,2.6592,0.265363, 0.124808,2.6256,0.371546, 0.18111,2.6256,0.348105, + 0.232342,2.6256,0.31659, 0.165941,2.6592,0.226113, 0.129351,2.6592,0.248621, + 0.129351,2.6592,0.248621, 0.18111,2.6256,0.348105, 0.232342,2.6256,0.31659, + 0.277752,2.6256,0.277752, 0.198374,2.6592,0.198374, 0.165941,2.6592,0.226113, + 0.165941,2.6592,0.226113, 0.232342,2.6256,0.31659, 0.277752,2.6256,0.277752, + 0.31659,2.6256,0.232342, 0.226113,2.6592,0.165941, 0.198374,2.6592,0.198374, + 0.198374,2.6592,0.198374, 0.277752,2.6256,0.277752, 0.31659,2.6256,0.232342, + 0.348105,2.6256,0.18111, 0.248621,2.6592,0.129351, 0.226113,2.6592,0.165941, + 0.226113,2.6592,0.165941, 0.31659,2.6256,0.232342, 0.348105,2.6256,0.18111, + 0.371546,2.6256,0.124808, 0.265363,2.6592,0.08914, 0.248621,2.6592,0.129351, + 0.248621,2.6592,0.129351, 0.348105,2.6256,0.18111, 0.371546,2.6256,0.124808, + 0.386161,2.6256,0.064188, 0.275801,2.6592,0.045844, 0.265363,2.6592,0.08914, + 0.265363,2.6592,0.08914, 0.371546,2.6256,0.124808, 0.386161,2.6256,0.064188, + 0.3912,2.6256,0, 0.2794,2.6592,0, 0.275801,2.6592,0.045844, + 0.275801,2.6592,0.045844, 0.386161,2.6256,0.064188, 0.3912,2.6256,0, + 0.086273,2.5974,0.519028, 0.064188,2.6256,0.386161, 0,2.6256,0.3912, + 0,2.6256,0.3912, 0,2.5974,0.5258, 0.086273,2.5974,0.519028, + 0.167751,2.5974,0.499384, 0.124808,2.6256,0.371546, 0.064188,2.6256,0.386161, + 0.064188,2.6256,0.386161, 0.086273,2.5974,0.519028, 0.167751,2.5974,0.499384, + 0.243424,2.5974,0.467878, 0.18111,2.6256,0.348105, 0.124808,2.6256,0.371546, + 0.124808,2.6256,0.371546, 0.167751,2.5974,0.499384, 0.243424,2.5974,0.467878, + 0.312283,2.5974,0.425519, 0.232342,2.6256,0.31659, 0.18111,2.6256,0.348105, + 0.18111,2.6256,0.348105, 0.243424,2.5974,0.467878, 0.312283,2.5974,0.425519, + 0.373318,2.5974,0.373318, 0.277752,2.6256,0.277752, 0.232342,2.6256,0.31659, + 0.232342,2.6256,0.31659, 0.312283,2.5974,0.425519, 0.373318,2.5974,0.373318, + 0.425519,2.5974,0.312283, 0.31659,2.6256,0.232342, 0.277752,2.6256,0.277752, + 0.277752,2.6256,0.277752, 0.373318,2.5974,0.373318, 0.425519,2.5974,0.312283, + 0.467878,2.5974,0.243424, 0.348105,2.6256,0.18111, 0.31659,2.6256,0.232342, + 0.31659,2.6256,0.232342, 0.425519,2.5974,0.312283, 0.467878,2.5974,0.243424, + 0.499384,2.5974,0.167751, 0.371546,2.6256,0.124808, 0.348105,2.6256,0.18111, + 0.348105,2.6256,0.18111, 0.467878,2.5974,0.243424, 0.499384,2.5974,0.167751, + 0.519028,2.5974,0.086273, 0.386161,2.6256,0.064188, 0.371546,2.6256,0.124808, + 0.371546,2.6256,0.124808, 0.499384,2.5974,0.167751, 0.519028,2.5974,0.086273, + 0.5258,2.5974,0, 0.3912,2.6256,0, 0.386161,2.6256,0.064188, + 0.386161,2.6256,0.064188, 0.519028,2.5974,0.086273, 0.5258,2.5974,0, + 0.110524,2.5728,0.664924, 0.086273,2.5974,0.519028, 0,2.5974,0.5258, + 0,2.5974,0.5258, 0,2.5728,0.6736, 0.110524,2.5728,0.664924, + 0.214905,2.5728,0.639758, 0.167751,2.5974,0.499384, 0.086273,2.5974,0.519028, + 0.086273,2.5974,0.519028, 0.110524,2.5728,0.664924, 0.214905,2.5728,0.639758, + 0.31185,2.5728,0.599396, 0.243424,2.5974,0.467878, 0.167751,2.5974,0.499384, + 0.167751,2.5974,0.499384, 0.214905,2.5728,0.639758, 0.31185,2.5728,0.599396, + 0.400065,2.5728,0.545131, 0.312283,2.5974,0.425519, 0.243424,2.5974,0.467878, + 0.243424,2.5974,0.467878, 0.31185,2.5728,0.599396, 0.400065,2.5728,0.545131, + 0.478256,2.5728,0.478256, 0.373318,2.5974,0.373318, 0.312283,2.5974,0.425519, + 0.312283,2.5974,0.425519, 0.400065,2.5728,0.545131, 0.478256,2.5728,0.478256, + 0.545131,2.5728,0.400065, 0.425519,2.5974,0.312283, 0.373318,2.5974,0.373318, + 0.373318,2.5974,0.373318, 0.478256,2.5728,0.478256, 0.545131,2.5728,0.400065, + 0.599396,2.5728,0.31185, 0.467878,2.5974,0.243424, 0.425519,2.5974,0.312283, + 0.425519,2.5974,0.312283, 0.545131,2.5728,0.400065, 0.599396,2.5728,0.31185, + 0.639758,2.5728,0.214905, 0.499384,2.5974,0.167751, 0.467878,2.5974,0.243424, + 0.467878,2.5974,0.243424, 0.599396,2.5728,0.31185, 0.639758,2.5728,0.214905, + 0.664924,2.5728,0.110524, 0.519028,2.5974,0.086273, 0.499384,2.5974,0.167751, + 0.499384,2.5974,0.167751, 0.639758,2.5728,0.214905, 0.664924,2.5728,0.110524, + 0.6736,2.5728,0, 0.5258,2.5974,0, 0.519028,2.5974,0.086273, + 0.519028,2.5974,0.086273, 0.664924,2.5728,0.110524, 0.6736,2.5728,0, + 0.135366,2.55,0.814374, 0.110524,2.5728,0.664924, 0,2.5728,0.6736, + 0,2.5728,0.6736, 0,2.55,0.825, 0.135366,2.55,0.814374, + 0.263208,2.55,0.783552, 0.214905,2.5728,0.639758, 0.110524,2.5728,0.664924, + 0.110524,2.5728,0.664924, 0.135366,2.55,0.814374, 0.263208,2.55,0.783552, + 0.381942,2.55,0.734118, 0.31185,2.5728,0.599396, 0.214905,2.5728,0.639758, + 0.214905,2.5728,0.639758, 0.263208,2.55,0.783552, 0.381942,2.55,0.734118, + 0.489984,2.55,0.667656, 0.400065,2.5728,0.545131, 0.31185,2.5728,0.599396, + 0.31185,2.5728,0.599396, 0.381942,2.55,0.734118, 0.489984,2.55,0.667656, + 0.58575,2.55,0.58575, 0.478256,2.5728,0.478256, 0.400065,2.5728,0.545131, + 0.400065,2.5728,0.545131, 0.489984,2.55,0.667656, 0.58575,2.55,0.58575, + 0.667656,2.55,0.489984, 0.545131,2.5728,0.400065, 0.478256,2.5728,0.478256, + 0.478256,2.5728,0.478256, 0.58575,2.55,0.58575, 0.667656,2.55,0.489984, + 0.734118,2.55,0.381942, 0.599396,2.5728,0.31185, 0.545131,2.5728,0.400065, + 0.545131,2.5728,0.400065, 0.667656,2.55,0.489984, 0.734118,2.55,0.381942, + 0.783552,2.55,0.263208, 0.639758,2.5728,0.214905, 0.599396,2.5728,0.31185, + 0.599396,2.5728,0.31185, 0.734118,2.55,0.381942, 0.783552,2.55,0.263208, + 0.814374,2.55,0.135366, 0.664924,2.5728,0.110524, 0.639758,2.5728,0.214905, + 0.639758,2.5728,0.214905, 0.783552,2.55,0.263208, 0.814374,2.55,0.135366, + 0.825,2.55,0, 0.6736,2.5728,0, 0.664924,2.5728,0.110524, + 0.664924,2.5728,0.110524, 0.814374,2.55,0.135366, 0.825,2.55,0, + 0.159223,2.5272,0.957901, 0.135366,2.55,0.814374, 0,2.55,0.825, + 0,2.55,0.825, 0,2.5272,0.9704, 0.159223,2.5272,0.957901, + 0.309596,2.5272,0.921647, 0.263208,2.55,0.783552, 0.135366,2.55,0.814374, + 0.135366,2.55,0.814374, 0.159223,2.5272,0.957901, 0.309596,2.5272,0.921647, + 0.449256,2.5272,0.863501, 0.381942,2.55,0.734118, 0.263208,2.55,0.783552, + 0.263208,2.55,0.783552, 0.309596,2.5272,0.921647, 0.449256,2.5272,0.863501, + 0.57634,2.5272,0.785325, 0.489984,2.55,0.667656, 0.381942,2.55,0.734118, + 0.381942,2.55,0.734118, 0.449256,2.5272,0.863501, 0.57634,2.5272,0.785325, + 0.688984,2.5272,0.688984, 0.58575,2.55,0.58575, 0.489984,2.55,0.667656, + 0.489984,2.55,0.667656, 0.57634,2.5272,0.785325, 0.688984,2.5272,0.688984, + 0.785325,2.5272,0.57634, 0.667656,2.55,0.489984, 0.58575,2.55,0.58575, + 0.58575,2.55,0.58575, 0.688984,2.5272,0.688984, 0.785325,2.5272,0.57634, + 0.863501,2.5272,0.449256, 0.734118,2.55,0.381942, 0.667656,2.55,0.489984, + 0.667656,2.55,0.489984, 0.785325,2.5272,0.57634, 0.863501,2.5272,0.449256, + 0.921647,2.5272,0.309596, 0.783552,2.55,0.263208, 0.734118,2.55,0.381942, + 0.734118,2.55,0.381942, 0.863501,2.5272,0.449256, 0.921647,2.5272,0.309596, + 0.957901,2.5272,0.159223, 0.814374,2.55,0.135366, 0.783552,2.55,0.263208, + 0.783552,2.55,0.263208, 0.921647,2.5272,0.309596, 0.957901,2.5272,0.159223, + 0.9704,2.5272,0, 0.825,2.55,0, 0.814374,2.55,0.135366, + 0.814374,2.55,0.135366, 0.957901,2.5272,0.159223, 0.9704,2.5272,0, + 0.180521,2.5026,1.086029, 0.159223,2.5272,0.957901, 0,2.5272,0.9704, + 0,2.5272,0.9704, 0,2.5026,1.1002, 0.180521,2.5026,1.086029, + 0.351008,2.5026,1.044926, 0.309596,2.5272,0.921647, 0.159223,2.5272,0.957901, + 0.159223,2.5272,0.957901, 0.180521,2.5026,1.086029, 0.351008,2.5026,1.044926, + 0.509349,2.5026,0.979002, 0.449256,2.5272,0.863501, 0.309596,2.5272,0.921647, + 0.309596,2.5272,0.921647, 0.351008,2.5026,1.044926, 0.509349,2.5026,0.979002, + 0.653431,2.5026,0.89037, 0.57634,2.5272,0.785325, 0.449256,2.5272,0.863501, + 0.449256,2.5272,0.863501, 0.509349,2.5026,0.979002, 0.653431,2.5026,0.89037, + 0.781142,2.5026,0.781142, 0.688984,2.5272,0.688984, 0.57634,2.5272,0.785325, + 0.57634,2.5272,0.785325, 0.653431,2.5026,0.89037, 0.781142,2.5026,0.781142, + 0.89037,2.5026,0.653431, 0.785325,2.5272,0.57634, 0.688984,2.5272,0.688984, + 0.688984,2.5272,0.688984, 0.781142,2.5026,0.781142, 0.89037,2.5026,0.653431, + 0.979002,2.5026,0.509349, 0.863501,2.5272,0.449256, 0.785325,2.5272,0.57634, + 0.785325,2.5272,0.57634, 0.89037,2.5026,0.653431, 0.979002,2.5026,0.509349, + 1.044926,2.5026,0.351008, 0.921647,2.5272,0.309596, 0.863501,2.5272,0.449256, + 0.863501,2.5272,0.449256, 0.979002,2.5026,0.509349, 1.044926,2.5026,0.351008, + 1.086029,2.5026,0.180521, 0.957901,2.5272,0.159223, 0.921647,2.5272,0.309596, + 0.921647,2.5272,0.309596, 1.044926,2.5026,0.351008, 1.086029,2.5026,0.180521, + 1.1002,2.5026,0, 0.9704,2.5272,0, 0.957901,2.5272,0.159223, + 0.957901,2.5272,0.159223, 1.086029,2.5026,0.180521, 1.1002,2.5026,0, + 0.197684,2.4744,1.189282, 0.180521,2.5026,1.086029, 0,2.5026,1.1002, + 0,2.5026,1.1002, 0,2.4744,1.2048, 0.197684,2.4744,1.189282, + 0.384379,2.4744,1.144271, 0.351008,2.5026,1.044926, 0.180521,2.5026,1.086029, + 0.180521,2.5026,1.086029, 0.197684,2.4744,1.189282, 0.384379,2.4744,1.144271, + 0.557774,2.4744,1.072079, 0.509349,2.5026,0.979002, 0.351008,2.5026,1.044926, + 0.351008,2.5026,1.044926, 0.384379,2.4744,1.144271, 0.557774,2.4744,1.072079, + 0.715555,2.4744,0.975021, 0.653431,2.5026,0.89037, 0.509349,2.5026,0.979002, + 0.509349,2.5026,0.979002, 0.557774,2.4744,1.072079, 0.715555,2.4744,0.975021, + 0.855408,2.4744,0.855408, 0.781142,2.5026,0.781142, 0.653431,2.5026,0.89037, + 0.653431,2.5026,0.89037, 0.715555,2.4744,0.975021, 0.855408,2.4744,0.855408, + 0.975021,2.4744,0.715555, 0.89037,2.5026,0.653431, 0.781142,2.5026,0.781142, + 0.781142,2.5026,0.781142, 0.855408,2.4744,0.855408, 0.975021,2.4744,0.715555, + 1.072079,2.4744,0.557774, 0.979002,2.5026,0.509349, 0.89037,2.5026,0.653431, + 0.89037,2.5026,0.653431, 0.975021,2.4744,0.715555, 1.072079,2.4744,0.557774, + 1.144271,2.4744,0.384379, 1.044926,2.5026,0.351008, 0.979002,2.5026,0.509349, + 0.979002,2.5026,0.509349, 1.072079,2.4744,0.557774, 1.144271,2.4744,0.384379, + 1.189282,2.4744,0.197684, 1.086029,2.5026,0.180521, 1.044926,2.5026,0.351008, + 1.044926,2.5026,0.351008, 1.144271,2.4744,0.384379, 1.189282,2.4744,0.197684, + 1.2048,2.4744,0, 1.1002,2.5026,0, 1.086029,2.5026,0.180521, + 1.086029,2.5026,0.180521, 1.189282,2.4744,0.197684, 1.2048,2.4744,0, + 0.209136,2.4408,1.258183, 0.197684,2.4744,1.189282, 0,2.4744,1.2048, + 0,2.4744,1.2048, 0,2.4408,1.2746, 0.209136,2.4408,1.258183, + 0.406648,2.4408,1.210564, 0.384379,2.4744,1.144271, 0.197684,2.4744,1.189282, + 0.197684,2.4744,1.189282, 0.209136,2.4408,1.258183, 0.406648,2.4408,1.210564, + 0.590089,2.4408,1.13419, 0.557774,2.4744,1.072079, 0.384379,2.4744,1.144271, + 0.384379,2.4744,1.144271, 0.406648,2.4408,1.210564, 0.590089,2.4408,1.13419, + 0.75701,2.4408,1.031508, 0.715555,2.4744,0.975021, 0.557774,2.4744,1.072079, + 0.557774,2.4744,1.072079, 0.590089,2.4408,1.13419, 0.75701,2.4408,1.031508, + 0.904966,2.4408,0.904966, 0.855408,2.4744,0.855408, 0.715555,2.4744,0.975021, + 0.715555,2.4744,0.975021, 0.75701,2.4408,1.031508, 0.904966,2.4408,0.904966, + 1.031508,2.4408,0.75701, 0.975021,2.4744,0.715555, 0.855408,2.4744,0.855408, + 0.855408,2.4744,0.855408, 0.904966,2.4408,0.904966, 1.031508,2.4408,0.75701, + 1.13419,2.4408,0.590089, 1.072079,2.4744,0.557774, 0.975021,2.4744,0.715555, + 0.975021,2.4744,0.715555, 1.031508,2.4408,0.75701, 1.13419,2.4408,0.590089, + 1.210564,2.4408,0.406648, 1.144271,2.4744,0.384379, 1.072079,2.4744,0.557774, + 1.072079,2.4744,0.557774, 1.13419,2.4408,0.590089, 1.210564,2.4408,0.406648, + 1.258183,2.4408,0.209136, 1.189282,2.4744,0.197684, 1.144271,2.4744,0.384379, + 1.144271,2.4744,0.384379, 1.210564,2.4408,0.406648, 1.258183,2.4408,0.209136, + 1.2746,2.4408,0, 1.2048,2.4744,0, 1.189282,2.4744,0.197684, + 1.189282,2.4744,0.197684, 1.258183,2.4408,0.209136, 1.2746,2.4408,0, + 0.213304,2.4,1.283256, 0.209136,2.4408,1.258183, 0,2.4408,1.2746, + 0,2.4408,1.2746, 0,2.4,1.3, 0.213304,2.4,1.283256, + 0.414752,2.4,1.234688, 0.406648,2.4408,1.210564, 0.209136,2.4408,1.258183, + 0.209136,2.4408,1.258183, 0.213304,2.4,1.283256, 0.414752,2.4,1.234688, + 0.601848,2.4,1.156792, 0.590089,2.4408,1.13419, 0.406648,2.4408,1.210564, + 0.406648,2.4408,1.210564, 0.414752,2.4,1.234688, 0.601848,2.4,1.156792, + 0.772096,2.4,1.052064, 0.75701,2.4408,1.031508, 0.590089,2.4408,1.13419, + 0.590089,2.4408,1.13419, 0.601848,2.4,1.156792, 0.772096,2.4,1.052064, + 0.923,2.4,0.923, 0.904966,2.4408,0.904966, 0.75701,2.4408,1.031508, + 0.75701,2.4408,1.031508, 0.772096,2.4,1.052064, 0.923,2.4,0.923, + 1.052064,2.4,0.772096, 1.031508,2.4408,0.75701, 0.904966,2.4408,0.904966, + 0.904966,2.4408,0.904966, 0.923,2.4,0.923, 1.052064,2.4,0.772096, + 1.156792,2.4,0.601848, 1.13419,2.4408,0.590089, 1.031508,2.4408,0.75701, + 1.031508,2.4408,0.75701, 1.052064,2.4,0.772096, 1.156792,2.4,0.601848, + 1.234688,2.4,0.414752, 1.210564,2.4408,0.406648, 1.13419,2.4408,0.590089, + 1.13419,2.4408,0.590089, 1.156792,2.4,0.601848, 1.234688,2.4,0.414752, + 1.283256,2.4,0.213304, 1.258183,2.4408,0.209136, 1.210564,2.4408,0.406648, + 1.210564,2.4408,0.406648, 1.234688,2.4,0.414752, 1.283256,2.4,0.213304, + 1.3,2.4,0, 1.2746,2.4408,0, 1.258183,2.4408,0.209136, + 1.258183,2.4408,0.209136, 1.283256,2.4,0.213304, 1.3,2.4,0, + 0,0,0, 0.388275,0.002175,0, 0.383274,0.002175,0.063708, + 0,0,0, 0.383274,0.002175,0.063708, 0.368768,0.002175,0.123875, + 0,0,0, 0.368768,0.002175,0.123875, 0.345503,0.002175,0.179756, + 0,0,0, 0.345503,0.002175,0.179756, 0.314223,0.002175,0.230604, + 0,0,0, 0.314223,0.002175,0.230604, 0.275675,0.002175,0.275675, + 0,0,0, 0.275675,0.002175,0.275675, 0.230604,0.002175,0.314223, + 0,0,0, 0.230604,0.002175,0.314223, 0.179756,0.002175,0.345503, + 0,0,0, 0.179756,0.002175,0.345503, 0.123875,0.002175,0.368768, + 0,0,0, 0.123875,0.002175,0.368768, 0.063708,0.002175,0.383274, + 0,0,0, 0.063708,0.002175,0.383274, 0,0.002175,0.388275, + 0.694143,0.0084,0.115381, 0.383274,0.002175,0.063708, 0.388275,0.002175,0, + 0.388275,0.002175,0, 0.7032,0.0084,0, 0.694143,0.0084,0.115381, + 0.667871,0.0084,0.224349, 0.368768,0.002175,0.123875, 0.383274,0.002175,0.063708, + 0.383274,0.002175,0.063708, 0.694143,0.0084,0.115381, 0.667871,0.0084,0.224349, + 0.625735,0.0084,0.325553, 0.345503,0.002175,0.179756, 0.368768,0.002175,0.123875, + 0.368768,0.002175,0.123875, 0.667871,0.0084,0.224349, 0.625735,0.0084,0.325553, + 0.569086,0.0084,0.417645, 0.314223,0.002175,0.230604, 0.345503,0.002175,0.179756, + 0.345503,0.002175,0.179756, 0.625735,0.0084,0.325553, 0.569086,0.0084,0.417645, + 0.499272,0.0084,0.499272, 0.275675,0.002175,0.275675, 0.314223,0.002175,0.230604, + 0.314223,0.002175,0.230604, 0.569086,0.0084,0.417645, 0.499272,0.0084,0.499272, + 0.417645,0.0084,0.569086, 0.230604,0.002175,0.314223, 0.275675,0.002175,0.275675, + 0.275675,0.002175,0.275675, 0.499272,0.0084,0.499272, 0.417645,0.0084,0.569086, + 0.325553,0.0084,0.625735, 0.179756,0.002175,0.345503, 0.230604,0.002175,0.314223, + 0.230604,0.002175,0.314223, 0.417645,0.0084,0.569086, 0.325553,0.0084,0.625735, + 0.224349,0.0084,0.667871, 0.123875,0.002175,0.368768, 0.179756,0.002175,0.345503, + 0.179756,0.002175,0.345503, 0.325553,0.0084,0.625735, 0.224349,0.0084,0.667871, + 0.115381,0.0084,0.694143, 0.063708,0.002175,0.383274, 0.123875,0.002175,0.368768, + 0.123875,0.002175,0.368768, 0.224349,0.0084,0.667871, 0.115381,0.0084,0.694143, + 0,0.0084,0.7032, 0,0.002175,0.388275, 0.063708,0.002175,0.383274, + 0.063708,0.002175,0.383274, 0.115381,0.0084,0.694143, 0,0.0084,0.7032, + 0.940158,0.018225,0.156274, 0.694143,0.0084,0.115381, 0.7032,0.0084,0, + 0.7032,0.0084,0, 0.952425,0.018225,0, 0.940158,0.018225,0.156274, + 0.904575,0.018225,0.303862, 0.667871,0.0084,0.224349, 0.694143,0.0084,0.115381, + 0.694143,0.0084,0.115381, 0.940158,0.018225,0.156274, 0.904575,0.018225,0.303862, + 0.847506,0.018225,0.440935, 0.625735,0.0084,0.325553, 0.667871,0.0084,0.224349, + 0.667871,0.0084,0.224349, 0.904575,0.018225,0.303862, 0.847506,0.018225,0.440935, + 0.770779,0.018225,0.565664, 0.569086,0.0084,0.417645, 0.625735,0.0084,0.325553, + 0.625735,0.0084,0.325553, 0.847506,0.018225,0.440935, 0.770779,0.018225,0.565664, + 0.676222,0.018225,0.676222, 0.499272,0.0084,0.499272, 0.569086,0.0084,0.417645, + 0.569086,0.0084,0.417645, 0.770779,0.018225,0.565664, 0.676222,0.018225,0.676222, + 0.565664,0.018225,0.770779, 0.417645,0.0084,0.569086, 0.499272,0.0084,0.499272, + 0.499272,0.0084,0.499272, 0.676222,0.018225,0.676222, 0.565664,0.018225,0.770779, + 0.440935,0.018225,0.847506, 0.325553,0.0084,0.625735, 0.417645,0.0084,0.569086, + 0.417645,0.0084,0.569086, 0.565664,0.018225,0.770779, 0.440935,0.018225,0.847506, + 0.303862,0.018225,0.904575, 0.224349,0.0084,0.667871, 0.325553,0.0084,0.625735, + 0.325553,0.0084,0.625735, 0.440935,0.018225,0.847506, 0.303862,0.018225,0.904575, + 0.156274,0.018225,0.940158, 0.115381,0.0084,0.694143, 0.224349,0.0084,0.667871, + 0.224349,0.0084,0.667871, 0.303862,0.018225,0.904575, 0.156274,0.018225,0.940158, + 0,0.018225,0.952425, 0,0.0084,0.7032, 0.115381,0.0084,0.694143, + 0.115381,0.0084,0.694143, 0.156274,0.018225,0.940158, 0,0.018225,0.952425, + 1.12887,0.0312,0.187642, 0.940158,0.018225,0.156274, 0.952425,0.018225,0, + 0.952425,0.018225,0, 1.1436,0.0312,0, 1.12887,0.0312,0.187642, + 1.086146,0.0312,0.364854, 0.904575,0.018225,0.303862, 0.940158,0.018225,0.156274, + 0.940158,0.018225,0.156274, 1.12887,0.0312,0.187642, 1.086146,0.0312,0.364854, + 1.017621,0.0312,0.529441, 0.847506,0.018225,0.440935, 0.904575,0.018225,0.303862, + 0.904575,0.018225,0.303862, 1.086146,0.0312,0.364854, 1.017621,0.0312,0.529441, + 0.925493,0.0312,0.679207, 0.770779,0.018225,0.565664, 0.847506,0.018225,0.440935, + 0.847506,0.018225,0.440935, 1.017621,0.0312,0.529441, 0.925493,0.0312,0.679207, + 0.811956,0.0312,0.811956, 0.676222,0.018225,0.676222, 0.770779,0.018225,0.565664, + 0.770779,0.018225,0.565664, 0.925493,0.0312,0.679207, 0.811956,0.0312,0.811956, + 0.679207,0.0312,0.925493, 0.565664,0.018225,0.770779, 0.676222,0.018225,0.676222, + 0.676222,0.018225,0.676222, 0.811956,0.0312,0.811956, 0.679207,0.0312,0.925493, + 0.529441,0.0312,1.017621, 0.440935,0.018225,0.847506, 0.565664,0.018225,0.770779, + 0.565664,0.018225,0.770779, 0.679207,0.0312,0.925493, 0.529441,0.0312,1.017621, + 0.364854,0.0312,1.086146, 0.303862,0.018225,0.904575, 0.440935,0.018225,0.847506, + 0.440935,0.018225,0.847506, 0.529441,0.0312,1.017621, 0.364854,0.0312,1.086146, + 0.187642,0.0312,1.12887, 0.156274,0.018225,0.940158, 0.303862,0.018225,0.904575, + 0.303862,0.018225,0.904575, 0.364854,0.0312,1.086146, 0.187642,0.0312,1.12887, + 0,0.0312,1.1436, 0,0.018225,0.952425, 0.156274,0.018225,0.940158, + 0.156274,0.018225,0.940158, 0.187642,0.0312,1.12887, 0,0.0312,1.1436, + 1.267832,0.046875,0.21074, 1.12887,0.0312,0.187642, 1.1436,0.0312,0, + 1.1436,0.0312,0, 1.284375,0.046875,0, 1.267832,0.046875,0.21074, + 1.219848,0.046875,0.409767, 1.086146,0.0312,0.364854, 1.12887,0.0312,0.187642, + 1.12887,0.0312,0.187642, 1.267832,0.046875,0.21074, 1.219848,0.046875,0.409767, + 1.142888,0.046875,0.594614, 1.017621,0.0312,0.529441, 1.086146,0.0312,0.364854, + 1.086146,0.0312,0.364854, 1.219848,0.046875,0.409767, 1.142888,0.046875,0.594614, + 1.039419,0.046875,0.762816, 0.925493,0.0312,0.679207, 1.017621,0.0312,0.529441, + 1.017621,0.0312,0.529441, 1.142888,0.046875,0.594614, 1.039419,0.046875,0.762816, + 0.911906,0.046875,0.911906, 0.811956,0.0312,0.811956, 0.925493,0.0312,0.679207, + 0.925493,0.0312,0.679207, 1.039419,0.046875,0.762816, 0.911906,0.046875,0.911906, + 0.762816,0.046875,1.039419, 0.679207,0.0312,0.925493, 0.811956,0.0312,0.811956, + 0.811956,0.0312,0.811956, 0.911906,0.046875,0.911906, 0.762816,0.046875,1.039419, + 0.594614,0.046875,1.142888, 0.529441,0.0312,1.017621, 0.679207,0.0312,0.925493, + 0.679207,0.0312,0.925493, 0.762816,0.046875,1.039419, 0.594614,0.046875,1.142888, + 0.409767,0.046875,1.219848, 0.364854,0.0312,1.086146, 0.529441,0.0312,1.017621, + 0.529441,0.0312,1.017621, 0.594614,0.046875,1.142888, 0.409767,0.046875,1.219848, + 0.21074,0.046875,1.267832, 0.187642,0.0312,1.12887, 0.364854,0.0312,1.086146, + 0.364854,0.0312,1.086146, 0.409767,0.046875,1.219848, 0.21074,0.046875,1.267832, + 0,0.046875,1.284375, 0,0.0312,1.1436, 0.187642,0.0312,1.12887, + 0.187642,0.0312,1.12887, 0.21074,0.046875,1.267832, 0,0.046875,1.284375, + 1.364595,0.0648,0.226824, 1.267832,0.046875,0.21074, 1.284375,0.046875,0, + 1.284375,0.046875,0, 1.3824,0.0648,0, 1.364595,0.0648,0.226824, + 1.312948,0.0648,0.441041, 1.219848,0.046875,0.409767, 1.267832,0.046875,0.21074, + 1.267832,0.046875,0.21074, 1.364595,0.0648,0.226824, 1.312948,0.0648,0.441041, + 1.230115,0.0648,0.639996, 1.142888,0.046875,0.594614, 1.219848,0.046875,0.409767, + 1.219848,0.046875,0.409767, 1.312948,0.0648,0.441041, 1.230115,0.0648,0.639996, + 1.118749,0.0648,0.821035, 1.039419,0.046875,0.762816, 1.142888,0.046875,0.594614, + 1.142888,0.046875,0.594614, 1.230115,0.0648,0.639996, 1.118749,0.0648,0.821035, + 0.981504,0.0648,0.981504, 0.911906,0.046875,0.911906, 1.039419,0.046875,0.762816, + 1.039419,0.046875,0.762816, 1.118749,0.0648,0.821035, 0.981504,0.0648,0.981504, + 0.821035,0.0648,1.118749, 0.762816,0.046875,1.039419, 0.911906,0.046875,0.911906, + 0.911906,0.046875,0.911906, 0.981504,0.0648,0.981504, 0.821035,0.0648,1.118749, + 0.639996,0.0648,1.230115, 0.594614,0.046875,1.142888, 0.762816,0.046875,1.039419, + 0.762816,0.046875,1.039419, 0.821035,0.0648,1.118749, 0.639996,0.0648,1.230115, + 0.441041,0.0648,1.312948, 0.409767,0.046875,1.219848, 0.594614,0.046875,1.142888, + 0.594614,0.046875,1.142888, 0.639996,0.0648,1.230115, 0.441041,0.0648,1.312948, + 0.226824,0.0648,1.364595, 0.21074,0.046875,1.267832, 0.409767,0.046875,1.219848, + 0.409767,0.046875,1.219848, 0.441041,0.0648,1.312948, 0.226824,0.0648,1.364595, + 0,0.0648,1.3824, 0,0.046875,1.284375, 0.21074,0.046875,1.267832, + 0.21074,0.046875,1.267832, 0.226824,0.0648,1.364595, 0,0.0648,1.3824, + 1.426709,0.084525,0.237149, 1.364595,0.0648,0.226824, 1.3824,0.0648,0, + 1.3824,0.0648,0, 1.445325,0.084525,0, 1.426709,0.084525,0.237149, + 1.372712,0.084525,0.461116, 1.312948,0.0648,0.441041, 1.364595,0.0648,0.226824, + 1.364595,0.0648,0.226824, 1.426709,0.084525,0.237149, 1.372712,0.084525,0.461116, + 1.286108,0.084525,0.669128, 1.230115,0.0648,0.639996, 1.312948,0.0648,0.441041, + 1.312948,0.0648,0.441041, 1.372712,0.084525,0.461116, 1.286108,0.084525,0.669128, + 1.169673,0.084525,0.858407, 1.118749,0.0648,0.821035, 1.230115,0.0648,0.639996, + 1.230115,0.0648,0.639996, 1.286108,0.084525,0.669128, 1.169673,0.084525,0.858407, + 1.026181,0.084525,1.026181, 0.981504,0.0648,0.981504, 1.118749,0.0648,0.821035, + 1.118749,0.0648,0.821035, 1.169673,0.084525,0.858407, 1.026181,0.084525,1.026181, + 0.858407,0.084525,1.169673, 0.821035,0.0648,1.118749, 0.981504,0.0648,0.981504, + 0.981504,0.0648,0.981504, 1.026181,0.084525,1.026181, 0.858407,0.084525,1.169673, + 0.669128,0.084525,1.286108, 0.639996,0.0648,1.230115, 0.821035,0.0648,1.118749, + 0.821035,0.0648,1.118749, 0.858407,0.084525,1.169673, 0.669128,0.084525,1.286108, + 0.461116,0.084525,1.372712, 0.441041,0.0648,1.312948, 0.639996,0.0648,1.230115, + 0.639996,0.0648,1.230115, 0.669128,0.084525,1.286108, 0.461116,0.084525,1.372712, + 0.237149,0.084525,1.426709, 0.226824,0.0648,1.364595, 0.441041,0.0648,1.312948, + 0.441041,0.0648,1.312948, 0.461116,0.084525,1.372712, 0.237149,0.084525,1.426709, + 0,0.084525,1.445325, 0,0.0648,1.3824, 0.226824,0.0648,1.364595, + 0.226824,0.0648,1.364595, 0.237149,0.084525,1.426709, 0,0.084525,1.445325, + 1.461727,0.1056,0.24297, 1.426709,0.084525,0.237149, 1.445325,0.084525,0, + 1.445325,0.084525,0, 1.4808,0.1056,0, 1.461727,0.1056,0.24297, + 1.406405,0.1056,0.472434, 1.372712,0.084525,0.461116, 1.426709,0.084525,0.237149, + 1.426709,0.084525,0.237149, 1.461727,0.1056,0.24297, 1.406405,0.1056,0.472434, + 1.317675,0.1056,0.685551, 1.286108,0.084525,0.669128, 1.372712,0.084525,0.461116, + 1.372712,0.084525,0.461116, 1.406405,0.1056,0.472434, 1.317675,0.1056,0.685551, + 1.198382,0.1056,0.879477, 1.169673,0.084525,0.858407, 1.286108,0.084525,0.669128, + 1.286108,0.084525,0.669128, 1.317675,0.1056,0.685551, 1.198382,0.1056,0.879477, + 1.051368,0.1056,1.051368, 1.026181,0.084525,1.026181, 1.169673,0.084525,0.858407, + 1.169673,0.084525,0.858407, 1.198382,0.1056,0.879477, 1.051368,0.1056,1.051368, + 0.879477,0.1056,1.198382, 0.858407,0.084525,1.169673, 1.026181,0.084525,1.026181, + 1.026181,0.084525,1.026181, 1.051368,0.1056,1.051368, 0.879477,0.1056,1.198382, + 0.685551,0.1056,1.317675, 0.669128,0.084525,1.286108, 0.858407,0.084525,1.169673, + 0.858407,0.084525,1.169673, 0.879477,0.1056,1.198382, 0.685551,0.1056,1.317675, + 0.472434,0.1056,1.406405, 0.461116,0.084525,1.372712, 0.669128,0.084525,1.286108, + 0.669128,0.084525,1.286108, 0.685551,0.1056,1.317675, 0.472434,0.1056,1.406405, + 0.24297,0.1056,1.461727, 0.237149,0.084525,1.426709, 0.461116,0.084525,1.372712, + 0.461116,0.084525,1.372712, 0.472434,0.1056,1.406405, 0.24297,0.1056,1.461727, + 0,0.1056,1.4808, 0,0.084525,1.445325, 0.237149,0.084525,1.426709, + 0.237149,0.084525,1.426709, 0.24297,0.1056,1.461727, 0,0.1056,1.4808, + 1.4772,0.127575,0.245542, 1.461727,0.1056,0.24297, 1.4808,0.1056,0, + 1.4808,0.1056,0, 1.496475,0.127575,0, 1.4772,0.127575,0.245542, + 1.421292,0.127575,0.477435, 1.406405,0.1056,0.472434, 1.461727,0.1056,0.24297, + 1.461727,0.1056,0.24297, 1.4772,0.127575,0.245542, 1.421292,0.127575,0.477435, + 1.331623,0.127575,0.692808, 1.317675,0.1056,0.685551, 1.406405,0.1056,0.472434, + 1.406405,0.1056,0.472434, 1.421292,0.127575,0.477435, 1.331623,0.127575,0.692808, + 1.211067,0.127575,0.888786, 1.198382,0.1056,0.879477, 1.317675,0.1056,0.685551, + 1.317675,0.1056,0.685551, 1.331623,0.127575,0.692808, 1.211067,0.127575,0.888786, + 1.062497,0.127575,1.062497, 1.051368,0.1056,1.051368, 1.198382,0.1056,0.879477, + 1.198382,0.1056,0.879477, 1.211067,0.127575,0.888786, 1.062497,0.127575,1.062497, + 0.888786,0.127575,1.211067, 0.879477,0.1056,1.198382, 1.051368,0.1056,1.051368, + 1.051368,0.1056,1.051368, 1.062497,0.127575,1.062497, 0.888786,0.127575,1.211067, + 0.692808,0.127575,1.331623, 0.685551,0.1056,1.317675, 0.879477,0.1056,1.198382, + 0.879477,0.1056,1.198382, 0.888786,0.127575,1.211067, 0.692808,0.127575,1.331623, + 0.477435,0.127575,1.421292, 0.472434,0.1056,1.406405, 0.685551,0.1056,1.317675, + 0.685551,0.1056,1.317675, 0.692808,0.127575,1.331623, 0.477435,0.127575,1.421292, + 0.245542,0.127575,1.4772, 0.24297,0.1056,1.461727, 0.472434,0.1056,1.406405, + 0.472434,0.1056,1.406405, 0.477435,0.127575,1.421292, 0.245542,0.127575,1.4772, + 0,0.127575,1.496475, 0,0.1056,1.4808, 0.24297,0.1056,1.461727, + 0.24297,0.1056,1.461727, 0.245542,0.127575,1.4772, 0,0.127575,1.496475, + 1.48068,0.15,0.24612, 1.4772,0.127575,0.245542, 1.496475,0.127575,0, + 1.496475,0.127575,0, 1.5,0.15,0, 1.48068,0.15,0.24612, + 1.42464,0.15,0.47856, 1.421292,0.127575,0.477435, 1.4772,0.127575,0.245542, + 1.4772,0.127575,0.245542, 1.48068,0.15,0.24612, 1.42464,0.15,0.47856, + 1.33476,0.15,0.69444, 1.331623,0.127575,0.692808, 1.421292,0.127575,0.477435, + 1.421292,0.127575,0.477435, 1.42464,0.15,0.47856, 1.33476,0.15,0.69444, + 1.21392,0.15,0.89088, 1.211067,0.127575,0.888786, 1.331623,0.127575,0.692808, + 1.331623,0.127575,0.692808, 1.33476,0.15,0.69444, 1.21392,0.15,0.89088, + 1.065,0.15,1.065, 1.062497,0.127575,1.062497, 1.211067,0.127575,0.888786, + 1.211067,0.127575,0.888786, 1.21392,0.15,0.89088, 1.065,0.15,1.065, + 0.89088,0.15,1.21392, 0.888786,0.127575,1.211067, 1.062497,0.127575,1.062497, + 1.062497,0.127575,1.062497, 1.065,0.15,1.065, 0.89088,0.15,1.21392, + 0.69444,0.15,1.33476, 0.692808,0.127575,1.331623, 0.888786,0.127575,1.211067, + 0.888786,0.127575,1.211067, 0.89088,0.15,1.21392, 0.69444,0.15,1.33476, + 0.47856,0.15,1.42464, 0.477435,0.127575,1.421292, 0.692808,0.127575,1.331623, + 0.692808,0.127575,1.331623, 0.69444,0.15,1.33476, 0.47856,0.15,1.42464, + 0.24612,0.15,1.48068, 0.245542,0.127575,1.4772, 0.477435,0.127575,1.421292, + 0.477435,0.127575,1.421292, 0.47856,0.15,1.42464, 0.24612,0.15,1.48068, + 0,0.15,1.5, 0,0.127575,1.496475, 0.245542,0.127575,1.4772, + 0.245542,0.127575,1.4772, 0.24612,0.15,1.48068, 0,0.15,1.5, + 0,0,0, 0,0.002175,0.388275, -0.063708,0.002175,0.383274, + 0,0,0, -0.063708,0.002175,0.383274, -0.123875,0.002175,0.368768, + 0,0,0, -0.123875,0.002175,0.368768, -0.179756,0.002175,0.345503, + 0,0,0, -0.179756,0.002175,0.345503, -0.230604,0.002175,0.314223, + 0,0,0, -0.230604,0.002175,0.314223, -0.275675,0.002175,0.275675, + 0,0,0, -0.275675,0.002175,0.275675, -0.314223,0.002175,0.230604, + 0,0,0, -0.314223,0.002175,0.230604, -0.345503,0.002175,0.179756, + 0,0,0, -0.345503,0.002175,0.179756, -0.368768,0.002175,0.123875, + 0,0,0, -0.368768,0.002175,0.123875, -0.383274,0.002175,0.063708, + 0,0,0, -0.383274,0.002175,0.063708, -0.388275,0.002175,0, + -0.115381,0.0084,0.694143, -0.063708,0.002175,0.383274, 0,0.002175,0.388275, + 0,0.002175,0.388275, 0,0.0084,0.7032, -0.115381,0.0084,0.694143, + -0.224349,0.0084,0.667871, -0.123875,0.002175,0.368768, -0.063708,0.002175,0.383274, + -0.063708,0.002175,0.383274, -0.115381,0.0084,0.694143, -0.224349,0.0084,0.667871, + -0.325553,0.0084,0.625735, -0.179756,0.002175,0.345503, -0.123875,0.002175,0.368768, + -0.123875,0.002175,0.368768, -0.224349,0.0084,0.667871, -0.325553,0.0084,0.625735, + -0.417645,0.0084,0.569086, -0.230604,0.002175,0.314223, -0.179756,0.002175,0.345503, + -0.179756,0.002175,0.345503, -0.325553,0.0084,0.625735, -0.417645,0.0084,0.569086, + -0.499272,0.0084,0.499272, -0.275675,0.002175,0.275675, -0.230604,0.002175,0.314223, + -0.230604,0.002175,0.314223, -0.417645,0.0084,0.569086, -0.499272,0.0084,0.499272, + -0.569086,0.0084,0.417645, -0.314223,0.002175,0.230604, -0.275675,0.002175,0.275675, + -0.275675,0.002175,0.275675, -0.499272,0.0084,0.499272, -0.569086,0.0084,0.417645, + -0.625735,0.0084,0.325553, -0.345503,0.002175,0.179756, -0.314223,0.002175,0.230604, + -0.314223,0.002175,0.230604, -0.569086,0.0084,0.417645, -0.625735,0.0084,0.325553, + -0.667871,0.0084,0.224349, -0.368768,0.002175,0.123875, -0.345503,0.002175,0.179756, + -0.345503,0.002175,0.179756, -0.625735,0.0084,0.325553, -0.667871,0.0084,0.224349, + -0.694143,0.0084,0.115381, -0.383274,0.002175,0.063708, -0.368768,0.002175,0.123875, + -0.368768,0.002175,0.123875, -0.667871,0.0084,0.224349, -0.694143,0.0084,0.115381, + -0.7032,0.0084,0, -0.388275,0.002175,0, -0.383274,0.002175,0.063708, + -0.383274,0.002175,0.063708, -0.694143,0.0084,0.115381, -0.7032,0.0084,0, + -0.156274,0.018225,0.940158, -0.115381,0.0084,0.694143, 0,0.0084,0.7032, + 0,0.0084,0.7032, 0,0.018225,0.952425, -0.156274,0.018225,0.940158, + -0.303862,0.018225,0.904575, -0.224349,0.0084,0.667871, -0.115381,0.0084,0.694143, + -0.115381,0.0084,0.694143, -0.156274,0.018225,0.940158, -0.303862,0.018225,0.904575, + -0.440935,0.018225,0.847506, -0.325553,0.0084,0.625735, -0.224349,0.0084,0.667871, + -0.224349,0.0084,0.667871, -0.303862,0.018225,0.904575, -0.440935,0.018225,0.847506, + -0.565664,0.018225,0.770779, -0.417645,0.0084,0.569086, -0.325553,0.0084,0.625735, + -0.325553,0.0084,0.625735, -0.440935,0.018225,0.847506, -0.565664,0.018225,0.770779, + -0.676222,0.018225,0.676222, -0.499272,0.0084,0.499272, -0.417645,0.0084,0.569086, + -0.417645,0.0084,0.569086, -0.565664,0.018225,0.770779, -0.676222,0.018225,0.676222, + -0.770779,0.018225,0.565664, -0.569086,0.0084,0.417645, -0.499272,0.0084,0.499272, + -0.499272,0.0084,0.499272, -0.676222,0.018225,0.676222, -0.770779,0.018225,0.565664, + -0.847506,0.018225,0.440935, -0.625735,0.0084,0.325553, -0.569086,0.0084,0.417645, + -0.569086,0.0084,0.417645, -0.770779,0.018225,0.565664, -0.847506,0.018225,0.440935, + -0.904575,0.018225,0.303862, -0.667871,0.0084,0.224349, -0.625735,0.0084,0.325553, + -0.625735,0.0084,0.325553, -0.847506,0.018225,0.440935, -0.904575,0.018225,0.303862, + -0.940158,0.018225,0.156274, -0.694143,0.0084,0.115381, -0.667871,0.0084,0.224349, + -0.667871,0.0084,0.224349, -0.904575,0.018225,0.303862, -0.940158,0.018225,0.156274, + -0.952425,0.018225,0, -0.7032,0.0084,0, -0.694143,0.0084,0.115381, + -0.694143,0.0084,0.115381, -0.940158,0.018225,0.156274, -0.952425,0.018225,0, + -0.187642,0.0312,1.12887, -0.156274,0.018225,0.940158, 0,0.018225,0.952425, + 0,0.018225,0.952425, 0,0.0312,1.1436, -0.187642,0.0312,1.12887, + -0.364854,0.0312,1.086146, -0.303862,0.018225,0.904575, -0.156274,0.018225,0.940158, + -0.156274,0.018225,0.940158, -0.187642,0.0312,1.12887, -0.364854,0.0312,1.086146, + -0.529441,0.0312,1.017621, -0.440935,0.018225,0.847506, -0.303862,0.018225,0.904575, + -0.303862,0.018225,0.904575, -0.364854,0.0312,1.086146, -0.529441,0.0312,1.017621, + -0.679207,0.0312,0.925493, -0.565664,0.018225,0.770779, -0.440935,0.018225,0.847506, + -0.440935,0.018225,0.847506, -0.529441,0.0312,1.017621, -0.679207,0.0312,0.925493, + -0.811956,0.0312,0.811956, -0.676222,0.018225,0.676222, -0.565664,0.018225,0.770779, + -0.565664,0.018225,0.770779, -0.679207,0.0312,0.925493, -0.811956,0.0312,0.811956, + -0.925493,0.0312,0.679207, -0.770779,0.018225,0.565664, -0.676222,0.018225,0.676222, + -0.676222,0.018225,0.676222, -0.811956,0.0312,0.811956, -0.925493,0.0312,0.679207, + -1.017621,0.0312,0.529441, -0.847506,0.018225,0.440935, -0.770779,0.018225,0.565664, + -0.770779,0.018225,0.565664, -0.925493,0.0312,0.679207, -1.017621,0.0312,0.529441, + -1.086146,0.0312,0.364854, -0.904575,0.018225,0.303862, -0.847506,0.018225,0.440935, + -0.847506,0.018225,0.440935, -1.017621,0.0312,0.529441, -1.086146,0.0312,0.364854, + -1.12887,0.0312,0.187642, -0.940158,0.018225,0.156274, -0.904575,0.018225,0.303862, + -0.904575,0.018225,0.303862, -1.086146,0.0312,0.364854, -1.12887,0.0312,0.187642, + -1.1436,0.0312,0, -0.952425,0.018225,0, -0.940158,0.018225,0.156274, + -0.940158,0.018225,0.156274, -1.12887,0.0312,0.187642, -1.1436,0.0312,0, + -0.21074,0.046875,1.267832, -0.187642,0.0312,1.12887, 0,0.0312,1.1436, + 0,0.0312,1.1436, 0,0.046875,1.284375, -0.21074,0.046875,1.267832, + -0.409767,0.046875,1.219848, -0.364854,0.0312,1.086146, -0.187642,0.0312,1.12887, + -0.187642,0.0312,1.12887, -0.21074,0.046875,1.267832, -0.409767,0.046875,1.219848, + -0.594614,0.046875,1.142888, -0.529441,0.0312,1.017621, -0.364854,0.0312,1.086146, + -0.364854,0.0312,1.086146, -0.409767,0.046875,1.219848, -0.594614,0.046875,1.142888, + -0.762816,0.046875,1.039419, -0.679207,0.0312,0.925493, -0.529441,0.0312,1.017621, + -0.529441,0.0312,1.017621, -0.594614,0.046875,1.142888, -0.762816,0.046875,1.039419, + -0.911906,0.046875,0.911906, -0.811956,0.0312,0.811956, -0.679207,0.0312,0.925493, + -0.679207,0.0312,0.925493, -0.762816,0.046875,1.039419, -0.911906,0.046875,0.911906, + -1.039419,0.046875,0.762816, -0.925493,0.0312,0.679207, -0.811956,0.0312,0.811956, + -0.811956,0.0312,0.811956, -0.911906,0.046875,0.911906, -1.039419,0.046875,0.762816, + -1.142888,0.046875,0.594614, -1.017621,0.0312,0.529441, -0.925493,0.0312,0.679207, + -0.925493,0.0312,0.679207, -1.039419,0.046875,0.762816, -1.142888,0.046875,0.594614, + -1.219848,0.046875,0.409767, -1.086146,0.0312,0.364854, -1.017621,0.0312,0.529441, + -1.017621,0.0312,0.529441, -1.142888,0.046875,0.594614, -1.219848,0.046875,0.409767, + -1.267832,0.046875,0.21074, -1.12887,0.0312,0.187642, -1.086146,0.0312,0.364854, + -1.086146,0.0312,0.364854, -1.219848,0.046875,0.409767, -1.267832,0.046875,0.21074, + -1.284375,0.046875,0, -1.1436,0.0312,0, -1.12887,0.0312,0.187642, + -1.12887,0.0312,0.187642, -1.267832,0.046875,0.21074, -1.284375,0.046875,0, + -0.226824,0.0648,1.364595, -0.21074,0.046875,1.267832, 0,0.046875,1.284375, + 0,0.046875,1.284375, 0,0.0648,1.3824, -0.226824,0.0648,1.364595, + -0.441041,0.0648,1.312948, -0.409767,0.046875,1.219848, -0.21074,0.046875,1.267832, + -0.21074,0.046875,1.267832, -0.226824,0.0648,1.364595, -0.441041,0.0648,1.312948, + -0.639996,0.0648,1.230115, -0.594614,0.046875,1.142888, -0.409767,0.046875,1.219848, + -0.409767,0.046875,1.219848, -0.441041,0.0648,1.312948, -0.639996,0.0648,1.230115, + -0.821035,0.0648,1.118749, -0.762816,0.046875,1.039419, -0.594614,0.046875,1.142888, + -0.594614,0.046875,1.142888, -0.639996,0.0648,1.230115, -0.821035,0.0648,1.118749, + -0.981504,0.0648,0.981504, -0.911906,0.046875,0.911906, -0.762816,0.046875,1.039419, + -0.762816,0.046875,1.039419, -0.821035,0.0648,1.118749, -0.981504,0.0648,0.981504, + -1.118749,0.0648,0.821035, -1.039419,0.046875,0.762816, -0.911906,0.046875,0.911906, + -0.911906,0.046875,0.911906, -0.981504,0.0648,0.981504, -1.118749,0.0648,0.821035, + -1.230115,0.0648,0.639996, -1.142888,0.046875,0.594614, -1.039419,0.046875,0.762816, + -1.039419,0.046875,0.762816, -1.118749,0.0648,0.821035, -1.230115,0.0648,0.639996, + -1.312948,0.0648,0.441041, -1.219848,0.046875,0.409767, -1.142888,0.046875,0.594614, + -1.142888,0.046875,0.594614, -1.230115,0.0648,0.639996, -1.312948,0.0648,0.441041, + -1.364595,0.0648,0.226824, -1.267832,0.046875,0.21074, -1.219848,0.046875,0.409767, + -1.219848,0.046875,0.409767, -1.312948,0.0648,0.441041, -1.364595,0.0648,0.226824, + -1.3824,0.0648,0, -1.284375,0.046875,0, -1.267832,0.046875,0.21074, + -1.267832,0.046875,0.21074, -1.364595,0.0648,0.226824, -1.3824,0.0648,0, + -0.237149,0.084525,1.426709, -0.226824,0.0648,1.364595, 0,0.0648,1.3824, + 0,0.0648,1.3824, 0,0.084525,1.445325, -0.237149,0.084525,1.426709, + -0.461116,0.084525,1.372712, -0.441041,0.0648,1.312948, -0.226824,0.0648,1.364595, + -0.226824,0.0648,1.364595, -0.237149,0.084525,1.426709, -0.461116,0.084525,1.372712, + -0.669128,0.084525,1.286108, -0.639996,0.0648,1.230115, -0.441041,0.0648,1.312948, + -0.441041,0.0648,1.312948, -0.461116,0.084525,1.372712, -0.669128,0.084525,1.286108, + -0.858407,0.084525,1.169673, -0.821035,0.0648,1.118749, -0.639996,0.0648,1.230115, + -0.639996,0.0648,1.230115, -0.669128,0.084525,1.286108, -0.858407,0.084525,1.169673, + -1.026181,0.084525,1.026181, -0.981504,0.0648,0.981504, -0.821035,0.0648,1.118749, + -0.821035,0.0648,1.118749, -0.858407,0.084525,1.169673, -1.026181,0.084525,1.026181, + -1.169673,0.084525,0.858407, -1.118749,0.0648,0.821035, -0.981504,0.0648,0.981504, + -0.981504,0.0648,0.981504, -1.026181,0.084525,1.026181, -1.169673,0.084525,0.858407, + -1.286108,0.084525,0.669128, -1.230115,0.0648,0.639996, -1.118749,0.0648,0.821035, + -1.118749,0.0648,0.821035, -1.169673,0.084525,0.858407, -1.286108,0.084525,0.669128, + -1.372712,0.084525,0.461116, -1.312948,0.0648,0.441041, -1.230115,0.0648,0.639996, + -1.230115,0.0648,0.639996, -1.286108,0.084525,0.669128, -1.372712,0.084525,0.461116, + -1.426709,0.084525,0.237149, -1.364595,0.0648,0.226824, -1.312948,0.0648,0.441041, + -1.312948,0.0648,0.441041, -1.372712,0.084525,0.461116, -1.426709,0.084525,0.237149, + -1.445325,0.084525,0, -1.3824,0.0648,0, -1.364595,0.0648,0.226824, + -1.364595,0.0648,0.226824, -1.426709,0.084525,0.237149, -1.445325,0.084525,0, + -0.24297,0.1056,1.461727, -0.237149,0.084525,1.426709, 0,0.084525,1.445325, + 0,0.084525,1.445325, 0,0.1056,1.4808, -0.24297,0.1056,1.461727, + -0.472434,0.1056,1.406405, -0.461116,0.084525,1.372712, -0.237149,0.084525,1.426709, + -0.237149,0.084525,1.426709, -0.24297,0.1056,1.461727, -0.472434,0.1056,1.406405, + -0.685551,0.1056,1.317675, -0.669128,0.084525,1.286108, -0.461116,0.084525,1.372712, + -0.461116,0.084525,1.372712, -0.472434,0.1056,1.406405, -0.685551,0.1056,1.317675, + -0.879477,0.1056,1.198382, -0.858407,0.084525,1.169673, -0.669128,0.084525,1.286108, + -0.669128,0.084525,1.286108, -0.685551,0.1056,1.317675, -0.879477,0.1056,1.198382, + -1.051368,0.1056,1.051368, -1.026181,0.084525,1.026181, -0.858407,0.084525,1.169673, + -0.858407,0.084525,1.169673, -0.879477,0.1056,1.198382, -1.051368,0.1056,1.051368, + -1.198382,0.1056,0.879477, -1.169673,0.084525,0.858407, -1.026181,0.084525,1.026181, + -1.026181,0.084525,1.026181, -1.051368,0.1056,1.051368, -1.198382,0.1056,0.879477, + -1.317675,0.1056,0.685551, -1.286108,0.084525,0.669128, -1.169673,0.084525,0.858407, + -1.169673,0.084525,0.858407, -1.198382,0.1056,0.879477, -1.317675,0.1056,0.685551, + -1.406405,0.1056,0.472434, -1.372712,0.084525,0.461116, -1.286108,0.084525,0.669128, + -1.286108,0.084525,0.669128, -1.317675,0.1056,0.685551, -1.406405,0.1056,0.472434, + -1.461727,0.1056,0.24297, -1.426709,0.084525,0.237149, -1.372712,0.084525,0.461116, + -1.372712,0.084525,0.461116, -1.406405,0.1056,0.472434, -1.461727,0.1056,0.24297, + -1.4808,0.1056,0, -1.445325,0.084525,0, -1.426709,0.084525,0.237149, + -1.426709,0.084525,0.237149, -1.461727,0.1056,0.24297, -1.4808,0.1056,0, + -0.245542,0.127575,1.4772, -0.24297,0.1056,1.461727, 0,0.1056,1.4808, + 0,0.1056,1.4808, 0,0.127575,1.496475, -0.245542,0.127575,1.4772, + -0.477435,0.127575,1.421292, -0.472434,0.1056,1.406405, -0.24297,0.1056,1.461727, + -0.24297,0.1056,1.461727, -0.245542,0.127575,1.4772, -0.477435,0.127575,1.421292, + -0.692808,0.127575,1.331623, -0.685551,0.1056,1.317675, -0.472434,0.1056,1.406405, + -0.472434,0.1056,1.406405, -0.477435,0.127575,1.421292, -0.692808,0.127575,1.331623, + -0.888786,0.127575,1.211067, -0.879477,0.1056,1.198382, -0.685551,0.1056,1.317675, + -0.685551,0.1056,1.317675, -0.692808,0.127575,1.331623, -0.888786,0.127575,1.211067, + -1.062497,0.127575,1.062497, -1.051368,0.1056,1.051368, -0.879477,0.1056,1.198382, + -0.879477,0.1056,1.198382, -0.888786,0.127575,1.211067, -1.062497,0.127575,1.062497, + -1.211067,0.127575,0.888786, -1.198382,0.1056,0.879477, -1.051368,0.1056,1.051368, + -1.051368,0.1056,1.051368, -1.062497,0.127575,1.062497, -1.211067,0.127575,0.888786, + -1.331623,0.127575,0.692808, -1.317675,0.1056,0.685551, -1.198382,0.1056,0.879477, + -1.198382,0.1056,0.879477, -1.211067,0.127575,0.888786, -1.331623,0.127575,0.692808, + -1.421292,0.127575,0.477435, -1.406405,0.1056,0.472434, -1.317675,0.1056,0.685551, + -1.317675,0.1056,0.685551, -1.331623,0.127575,0.692808, -1.421292,0.127575,0.477435, + -1.4772,0.127575,0.245542, -1.461727,0.1056,0.24297, -1.406405,0.1056,0.472434, + -1.406405,0.1056,0.472434, -1.421292,0.127575,0.477435, -1.4772,0.127575,0.245542, + -1.496475,0.127575,0, -1.4808,0.1056,0, -1.461727,0.1056,0.24297, + -1.461727,0.1056,0.24297, -1.4772,0.127575,0.245542, -1.496475,0.127575,0, + -0.24612,0.15,1.48068, -0.245542,0.127575,1.4772, 0,0.127575,1.496475, + 0,0.127575,1.496475, 0,0.15,1.5, -0.24612,0.15,1.48068, + -0.47856,0.15,1.42464, -0.477435,0.127575,1.421292, -0.245542,0.127575,1.4772, + -0.245542,0.127575,1.4772, -0.24612,0.15,1.48068, -0.47856,0.15,1.42464, + -0.69444,0.15,1.33476, -0.692808,0.127575,1.331623, -0.477435,0.127575,1.421292, + -0.477435,0.127575,1.421292, -0.47856,0.15,1.42464, -0.69444,0.15,1.33476, + -0.89088,0.15,1.21392, -0.888786,0.127575,1.211067, -0.692808,0.127575,1.331623, + -0.692808,0.127575,1.331623, -0.69444,0.15,1.33476, -0.89088,0.15,1.21392, + -1.065,0.15,1.065, -1.062497,0.127575,1.062497, -0.888786,0.127575,1.211067, + -0.888786,0.127575,1.211067, -0.89088,0.15,1.21392, -1.065,0.15,1.065, + -1.21392,0.15,0.89088, -1.211067,0.127575,0.888786, -1.062497,0.127575,1.062497, + -1.062497,0.127575,1.062497, -1.065,0.15,1.065, -1.21392,0.15,0.89088, + -1.33476,0.15,0.69444, -1.331623,0.127575,0.692808, -1.211067,0.127575,0.888786, + -1.211067,0.127575,0.888786, -1.21392,0.15,0.89088, -1.33476,0.15,0.69444, + -1.42464,0.15,0.47856, -1.421292,0.127575,0.477435, -1.331623,0.127575,0.692808, + -1.331623,0.127575,0.692808, -1.33476,0.15,0.69444, -1.42464,0.15,0.47856, + -1.48068,0.15,0.24612, -1.4772,0.127575,0.245542, -1.421292,0.127575,0.477435, + -1.421292,0.127575,0.477435, -1.42464,0.15,0.47856, -1.48068,0.15,0.24612, + -1.5,0.15,0, -1.496475,0.127575,0, -1.4772,0.127575,0.245542, + -1.4772,0.127575,0.245542, -1.48068,0.15,0.24612, -1.5,0.15,0, + 0,0,0, -0.388275,0.002175,0, -0.383274,0.002175,-0.063708, + 0,0,0, -0.383274,0.002175,-0.063708, -0.368768,0.002175,-0.123875, + 0,0,0, -0.368768,0.002175,-0.123875, -0.345503,0.002175,-0.179756, + 0,0,0, -0.345503,0.002175,-0.179756, -0.314223,0.002175,-0.230604, + 0,0,0, -0.314223,0.002175,-0.230604, -0.275675,0.002175,-0.275675, + 0,0,0, -0.275675,0.002175,-0.275675, -0.230604,0.002175,-0.314223, + 0,0,0, -0.230604,0.002175,-0.314223, -0.179756,0.002175,-0.345503, + 0,0,0, -0.179756,0.002175,-0.345503, -0.123875,0.002175,-0.368768, + 0,0,0, -0.123875,0.002175,-0.368768, -0.063708,0.002175,-0.383274, + 0,0,0, -0.063708,0.002175,-0.383274, 0,0.002175,-0.388275, + -0.694143,0.0084,-0.115381, -0.383274,0.002175,-0.063708, -0.388275,0.002175,0, + -0.388275,0.002175,0, -0.7032,0.0084,0, -0.694143,0.0084,-0.115381, + -0.667871,0.0084,-0.224349, -0.368768,0.002175,-0.123875, -0.383274,0.002175,-0.063708, + -0.383274,0.002175,-0.063708, -0.694143,0.0084,-0.115381, -0.667871,0.0084,-0.224349, + -0.625735,0.0084,-0.325553, -0.345503,0.002175,-0.179756, -0.368768,0.002175,-0.123875, + -0.368768,0.002175,-0.123875, -0.667871,0.0084,-0.224349, -0.625735,0.0084,-0.325553, + -0.569086,0.0084,-0.417645, -0.314223,0.002175,-0.230604, -0.345503,0.002175,-0.179756, + -0.345503,0.002175,-0.179756, -0.625735,0.0084,-0.325553, -0.569086,0.0084,-0.417645, + -0.499272,0.0084,-0.499272, -0.275675,0.002175,-0.275675, -0.314223,0.002175,-0.230604, + -0.314223,0.002175,-0.230604, -0.569086,0.0084,-0.417645, -0.499272,0.0084,-0.499272, + -0.417645,0.0084,-0.569086, -0.230604,0.002175,-0.314223, -0.275675,0.002175,-0.275675, + -0.275675,0.002175,-0.275675, -0.499272,0.0084,-0.499272, -0.417645,0.0084,-0.569086, + -0.325553,0.0084,-0.625735, -0.179756,0.002175,-0.345503, -0.230604,0.002175,-0.314223, + -0.230604,0.002175,-0.314223, -0.417645,0.0084,-0.569086, -0.325553,0.0084,-0.625735, + -0.224349,0.0084,-0.667871, -0.123875,0.002175,-0.368768, -0.179756,0.002175,-0.345503, + -0.179756,0.002175,-0.345503, -0.325553,0.0084,-0.625735, -0.224349,0.0084,-0.667871, + -0.115381,0.0084,-0.694143, -0.063708,0.002175,-0.383274, -0.123875,0.002175,-0.368768, + -0.123875,0.002175,-0.368768, -0.224349,0.0084,-0.667871, -0.115381,0.0084,-0.694143, + 0,0.0084,-0.7032, 0,0.002175,-0.388275, -0.063708,0.002175,-0.383274, + -0.063708,0.002175,-0.383274, -0.115381,0.0084,-0.694143, 0,0.0084,-0.7032, + -0.940158,0.018225,-0.156274, -0.694143,0.0084,-0.115381, -0.7032,0.0084,0, + -0.7032,0.0084,0, -0.952425,0.018225,0, -0.940158,0.018225,-0.156274, + -0.904575,0.018225,-0.303862, -0.667871,0.0084,-0.224349, -0.694143,0.0084,-0.115381, + -0.694143,0.0084,-0.115381, -0.940158,0.018225,-0.156274, -0.904575,0.018225,-0.303862, + -0.847506,0.018225,-0.440935, -0.625735,0.0084,-0.325553, -0.667871,0.0084,-0.224349, + -0.667871,0.0084,-0.224349, -0.904575,0.018225,-0.303862, -0.847506,0.018225,-0.440935, + -0.770779,0.018225,-0.565664, -0.569086,0.0084,-0.417645, -0.625735,0.0084,-0.325553, + -0.625735,0.0084,-0.325553, -0.847506,0.018225,-0.440935, -0.770779,0.018225,-0.565664, + -0.676222,0.018225,-0.676222, -0.499272,0.0084,-0.499272, -0.569086,0.0084,-0.417645, + -0.569086,0.0084,-0.417645, -0.770779,0.018225,-0.565664, -0.676222,0.018225,-0.676222, + -0.565664,0.018225,-0.770779, -0.417645,0.0084,-0.569086, -0.499272,0.0084,-0.499272, + -0.499272,0.0084,-0.499272, -0.676222,0.018225,-0.676222, -0.565664,0.018225,-0.770779, + -0.440935,0.018225,-0.847506, -0.325553,0.0084,-0.625735, -0.417645,0.0084,-0.569086, + -0.417645,0.0084,-0.569086, -0.565664,0.018225,-0.770779, -0.440935,0.018225,-0.847506, + -0.303862,0.018225,-0.904575, -0.224349,0.0084,-0.667871, -0.325553,0.0084,-0.625735, + -0.325553,0.0084,-0.625735, -0.440935,0.018225,-0.847506, -0.303862,0.018225,-0.904575, + -0.156274,0.018225,-0.940158, -0.115381,0.0084,-0.694143, -0.224349,0.0084,-0.667871, + -0.224349,0.0084,-0.667871, -0.303862,0.018225,-0.904575, -0.156274,0.018225,-0.940158, + 0,0.018225,-0.952425, 0,0.0084,-0.7032, -0.115381,0.0084,-0.694143, + -0.115381,0.0084,-0.694143, -0.156274,0.018225,-0.940158, 0,0.018225,-0.952425, + -1.12887,0.0312,-0.187642, -0.940158,0.018225,-0.156274, -0.952425,0.018225,0, + -0.952425,0.018225,0, -1.1436,0.0312,0, -1.12887,0.0312,-0.187642, + -1.086146,0.0312,-0.364854, -0.904575,0.018225,-0.303862, -0.940158,0.018225,-0.156274, + -0.940158,0.018225,-0.156274, -1.12887,0.0312,-0.187642, -1.086146,0.0312,-0.364854, + -1.017621,0.0312,-0.529441, -0.847506,0.018225,-0.440935, -0.904575,0.018225,-0.303862, + -0.904575,0.018225,-0.303862, -1.086146,0.0312,-0.364854, -1.017621,0.0312,-0.529441, + -0.925493,0.0312,-0.679207, -0.770779,0.018225,-0.565664, -0.847506,0.018225,-0.440935, + -0.847506,0.018225,-0.440935, -1.017621,0.0312,-0.529441, -0.925493,0.0312,-0.679207, + -0.811956,0.0312,-0.811956, -0.676222,0.018225,-0.676222, -0.770779,0.018225,-0.565664, + -0.770779,0.018225,-0.565664, -0.925493,0.0312,-0.679207, -0.811956,0.0312,-0.811956, + -0.679207,0.0312,-0.925493, -0.565664,0.018225,-0.770779, -0.676222,0.018225,-0.676222, + -0.676222,0.018225,-0.676222, -0.811956,0.0312,-0.811956, -0.679207,0.0312,-0.925493, + -0.529441,0.0312,-1.017621, -0.440935,0.018225,-0.847506, -0.565664,0.018225,-0.770779, + -0.565664,0.018225,-0.770779, -0.679207,0.0312,-0.925493, -0.529441,0.0312,-1.017621, + -0.364854,0.0312,-1.086146, -0.303862,0.018225,-0.904575, -0.440935,0.018225,-0.847506, + -0.440935,0.018225,-0.847506, -0.529441,0.0312,-1.017621, -0.364854,0.0312,-1.086146, + -0.187642,0.0312,-1.12887, -0.156274,0.018225,-0.940158, -0.303862,0.018225,-0.904575, + -0.303862,0.018225,-0.904575, -0.364854,0.0312,-1.086146, -0.187642,0.0312,-1.12887, + 0,0.0312,-1.1436, 0,0.018225,-0.952425, -0.156274,0.018225,-0.940158, + -0.156274,0.018225,-0.940158, -0.187642,0.0312,-1.12887, 0,0.0312,-1.1436, + -1.267832,0.046875,-0.21074, -1.12887,0.0312,-0.187642, -1.1436,0.0312,0, + -1.1436,0.0312,0, -1.284375,0.046875,0, -1.267832,0.046875,-0.21074, + -1.219848,0.046875,-0.409767, -1.086146,0.0312,-0.364854, -1.12887,0.0312,-0.187642, + -1.12887,0.0312,-0.187642, -1.267832,0.046875,-0.21074, -1.219848,0.046875,-0.409767, + -1.142888,0.046875,-0.594614, -1.017621,0.0312,-0.529441, -1.086146,0.0312,-0.364854, + -1.086146,0.0312,-0.364854, -1.219848,0.046875,-0.409767, -1.142888,0.046875,-0.594614, + -1.039419,0.046875,-0.762816, -0.925493,0.0312,-0.679207, -1.017621,0.0312,-0.529441, + -1.017621,0.0312,-0.529441, -1.142888,0.046875,-0.594614, -1.039419,0.046875,-0.762816, + -0.911906,0.046875,-0.911906, -0.811956,0.0312,-0.811956, -0.925493,0.0312,-0.679207, + -0.925493,0.0312,-0.679207, -1.039419,0.046875,-0.762816, -0.911906,0.046875,-0.911906, + -0.762816,0.046875,-1.039419, -0.679207,0.0312,-0.925493, -0.811956,0.0312,-0.811956, + -0.811956,0.0312,-0.811956, -0.911906,0.046875,-0.911906, -0.762816,0.046875,-1.039419, + -0.594614,0.046875,-1.142888, -0.529441,0.0312,-1.017621, -0.679207,0.0312,-0.925493, + -0.679207,0.0312,-0.925493, -0.762816,0.046875,-1.039419, -0.594614,0.046875,-1.142888, + -0.409767,0.046875,-1.219848, -0.364854,0.0312,-1.086146, -0.529441,0.0312,-1.017621, + -0.529441,0.0312,-1.017621, -0.594614,0.046875,-1.142888, -0.409767,0.046875,-1.219848, + -0.21074,0.046875,-1.267832, -0.187642,0.0312,-1.12887, -0.364854,0.0312,-1.086146, + -0.364854,0.0312,-1.086146, -0.409767,0.046875,-1.219848, -0.21074,0.046875,-1.267832, + 0,0.046875,-1.284375, 0,0.0312,-1.1436, -0.187642,0.0312,-1.12887, + -0.187642,0.0312,-1.12887, -0.21074,0.046875,-1.267832, 0,0.046875,-1.284375, + -1.364595,0.0648,-0.226824, -1.267832,0.046875,-0.21074, -1.284375,0.046875,0, + -1.284375,0.046875,0, -1.3824,0.0648,0, -1.364595,0.0648,-0.226824, + -1.312948,0.0648,-0.441041, -1.219848,0.046875,-0.409767, -1.267832,0.046875,-0.21074, + -1.267832,0.046875,-0.21074, -1.364595,0.0648,-0.226824, -1.312948,0.0648,-0.441041, + -1.230115,0.0648,-0.639996, -1.142888,0.046875,-0.594614, -1.219848,0.046875,-0.409767, + -1.219848,0.046875,-0.409767, -1.312948,0.0648,-0.441041, -1.230115,0.0648,-0.639996, + -1.118749,0.0648,-0.821035, -1.039419,0.046875,-0.762816, -1.142888,0.046875,-0.594614, + -1.142888,0.046875,-0.594614, -1.230115,0.0648,-0.639996, -1.118749,0.0648,-0.821035, + -0.981504,0.0648,-0.981504, -0.911906,0.046875,-0.911906, -1.039419,0.046875,-0.762816, + -1.039419,0.046875,-0.762816, -1.118749,0.0648,-0.821035, -0.981504,0.0648,-0.981504, + -0.821035,0.0648,-1.118749, -0.762816,0.046875,-1.039419, -0.911906,0.046875,-0.911906, + -0.911906,0.046875,-0.911906, -0.981504,0.0648,-0.981504, -0.821035,0.0648,-1.118749, + -0.639996,0.0648,-1.230115, -0.594614,0.046875,-1.142888, -0.762816,0.046875,-1.039419, + -0.762816,0.046875,-1.039419, -0.821035,0.0648,-1.118749, -0.639996,0.0648,-1.230115, + -0.441041,0.0648,-1.312948, -0.409767,0.046875,-1.219848, -0.594614,0.046875,-1.142888, + -0.594614,0.046875,-1.142888, -0.639996,0.0648,-1.230115, -0.441041,0.0648,-1.312948, + -0.226824,0.0648,-1.364595, -0.21074,0.046875,-1.267832, -0.409767,0.046875,-1.219848, + -0.409767,0.046875,-1.219848, -0.441041,0.0648,-1.312948, -0.226824,0.0648,-1.364595, + 0,0.0648,-1.3824, 0,0.046875,-1.284375, -0.21074,0.046875,-1.267832, + -0.21074,0.046875,-1.267832, -0.226824,0.0648,-1.364595, 0,0.0648,-1.3824, + -1.426709,0.084525,-0.237149, -1.364595,0.0648,-0.226824, -1.3824,0.0648,0, + -1.3824,0.0648,0, -1.445325,0.084525,0, -1.426709,0.084525,-0.237149, + -1.372712,0.084525,-0.461116, -1.312948,0.0648,-0.441041, -1.364595,0.0648,-0.226824, + -1.364595,0.0648,-0.226824, -1.426709,0.084525,-0.237149, -1.372712,0.084525,-0.461116, + -1.286108,0.084525,-0.669128, -1.230115,0.0648,-0.639996, -1.312948,0.0648,-0.441041, + -1.312948,0.0648,-0.441041, -1.372712,0.084525,-0.461116, -1.286108,0.084525,-0.669128, + -1.169673,0.084525,-0.858407, -1.118749,0.0648,-0.821035, -1.230115,0.0648,-0.639996, + -1.230115,0.0648,-0.639996, -1.286108,0.084525,-0.669128, -1.169673,0.084525,-0.858407, + -1.026181,0.084525,-1.026181, -0.981504,0.0648,-0.981504, -1.118749,0.0648,-0.821035, + -1.118749,0.0648,-0.821035, -1.169673,0.084525,-0.858407, -1.026181,0.084525,-1.026181, + -0.858407,0.084525,-1.169673, -0.821035,0.0648,-1.118749, -0.981504,0.0648,-0.981504, + -0.981504,0.0648,-0.981504, -1.026181,0.084525,-1.026181, -0.858407,0.084525,-1.169673, + -0.669128,0.084525,-1.286108, -0.639996,0.0648,-1.230115, -0.821035,0.0648,-1.118749, + -0.821035,0.0648,-1.118749, -0.858407,0.084525,-1.169673, -0.669128,0.084525,-1.286108, + -0.461116,0.084525,-1.372712, -0.441041,0.0648,-1.312948, -0.639996,0.0648,-1.230115, + -0.639996,0.0648,-1.230115, -0.669128,0.084525,-1.286108, -0.461116,0.084525,-1.372712, + -0.237149,0.084525,-1.426709, -0.226824,0.0648,-1.364595, -0.441041,0.0648,-1.312948, + -0.441041,0.0648,-1.312948, -0.461116,0.084525,-1.372712, -0.237149,0.084525,-1.426709, + 0,0.084525,-1.445325, 0,0.0648,-1.3824, -0.226824,0.0648,-1.364595, + -0.226824,0.0648,-1.364595, -0.237149,0.084525,-1.426709, 0,0.084525,-1.445325, + -1.461727,0.1056,-0.24297, -1.426709,0.084525,-0.237149, -1.445325,0.084525,0, + -1.445325,0.084525,0, -1.4808,0.1056,0, -1.461727,0.1056,-0.24297, + -1.406405,0.1056,-0.472434, -1.372712,0.084525,-0.461116, -1.426709,0.084525,-0.237149, + -1.426709,0.084525,-0.237149, -1.461727,0.1056,-0.24297, -1.406405,0.1056,-0.472434, + -1.317675,0.1056,-0.685551, -1.286108,0.084525,-0.669128, -1.372712,0.084525,-0.461116, + -1.372712,0.084525,-0.461116, -1.406405,0.1056,-0.472434, -1.317675,0.1056,-0.685551, + -1.198382,0.1056,-0.879477, -1.169673,0.084525,-0.858407, -1.286108,0.084525,-0.669128, + -1.286108,0.084525,-0.669128, -1.317675,0.1056,-0.685551, -1.198382,0.1056,-0.879477, + -1.051368,0.1056,-1.051368, -1.026181,0.084525,-1.026181, -1.169673,0.084525,-0.858407, + -1.169673,0.084525,-0.858407, -1.198382,0.1056,-0.879477, -1.051368,0.1056,-1.051368, + -0.879477,0.1056,-1.198382, -0.858407,0.084525,-1.169673, -1.026181,0.084525,-1.026181, + -1.026181,0.084525,-1.026181, -1.051368,0.1056,-1.051368, -0.879477,0.1056,-1.198382, + -0.685551,0.1056,-1.317675, -0.669128,0.084525,-1.286108, -0.858407,0.084525,-1.169673, + -0.858407,0.084525,-1.169673, -0.879477,0.1056,-1.198382, -0.685551,0.1056,-1.317675, + -0.472434,0.1056,-1.406405, -0.461116,0.084525,-1.372712, -0.669128,0.084525,-1.286108, + -0.669128,0.084525,-1.286108, -0.685551,0.1056,-1.317675, -0.472434,0.1056,-1.406405, + -0.24297,0.1056,-1.461727, -0.237149,0.084525,-1.426709, -0.461116,0.084525,-1.372712, + -0.461116,0.084525,-1.372712, -0.472434,0.1056,-1.406405, -0.24297,0.1056,-1.461727, + 0,0.1056,-1.4808, 0,0.084525,-1.445325, -0.237149,0.084525,-1.426709, + -0.237149,0.084525,-1.426709, -0.24297,0.1056,-1.461727, 0,0.1056,-1.4808, + -1.4772,0.127575,-0.245542, -1.461727,0.1056,-0.24297, -1.4808,0.1056,0, + -1.4808,0.1056,0, -1.496475,0.127575,0, -1.4772,0.127575,-0.245542, + -1.421292,0.127575,-0.477435, -1.406405,0.1056,-0.472434, -1.461727,0.1056,-0.24297, + -1.461727,0.1056,-0.24297, -1.4772,0.127575,-0.245542, -1.421292,0.127575,-0.477435, + -1.331623,0.127575,-0.692808, -1.317675,0.1056,-0.685551, -1.406405,0.1056,-0.472434, + -1.406405,0.1056,-0.472434, -1.421292,0.127575,-0.477435, -1.331623,0.127575,-0.692808, + -1.211067,0.127575,-0.888786, -1.198382,0.1056,-0.879477, -1.317675,0.1056,-0.685551, + -1.317675,0.1056,-0.685551, -1.331623,0.127575,-0.692808, -1.211067,0.127575,-0.888786, + -1.062497,0.127575,-1.062497, -1.051368,0.1056,-1.051368, -1.198382,0.1056,-0.879477, + -1.198382,0.1056,-0.879477, -1.211067,0.127575,-0.888786, -1.062497,0.127575,-1.062497, + -0.888786,0.127575,-1.211067, -0.879477,0.1056,-1.198382, -1.051368,0.1056,-1.051368, + -1.051368,0.1056,-1.051368, -1.062497,0.127575,-1.062497, -0.888786,0.127575,-1.211067, + -0.692808,0.127575,-1.331623, -0.685551,0.1056,-1.317675, -0.879477,0.1056,-1.198382, + -0.879477,0.1056,-1.198382, -0.888786,0.127575,-1.211067, -0.692808,0.127575,-1.331623, + -0.477435,0.127575,-1.421292, -0.472434,0.1056,-1.406405, -0.685551,0.1056,-1.317675, + -0.685551,0.1056,-1.317675, -0.692808,0.127575,-1.331623, -0.477435,0.127575,-1.421292, + -0.245542,0.127575,-1.4772, -0.24297,0.1056,-1.461727, -0.472434,0.1056,-1.406405, + -0.472434,0.1056,-1.406405, -0.477435,0.127575,-1.421292, -0.245542,0.127575,-1.4772, + 0,0.127575,-1.496475, 0,0.1056,-1.4808, -0.24297,0.1056,-1.461727, + -0.24297,0.1056,-1.461727, -0.245542,0.127575,-1.4772, 0,0.127575,-1.496475, + -1.48068,0.15,-0.24612, -1.4772,0.127575,-0.245542, -1.496475,0.127575,0, + -1.496475,0.127575,0, -1.5,0.15,0, -1.48068,0.15,-0.24612, + -1.42464,0.15,-0.47856, -1.421292,0.127575,-0.477435, -1.4772,0.127575,-0.245542, + -1.4772,0.127575,-0.245542, -1.48068,0.15,-0.24612, -1.42464,0.15,-0.47856, + -1.33476,0.15,-0.69444, -1.331623,0.127575,-0.692808, -1.421292,0.127575,-0.477435, + -1.421292,0.127575,-0.477435, -1.42464,0.15,-0.47856, -1.33476,0.15,-0.69444, + -1.21392,0.15,-0.89088, -1.211067,0.127575,-0.888786, -1.331623,0.127575,-0.692808, + -1.331623,0.127575,-0.692808, -1.33476,0.15,-0.69444, -1.21392,0.15,-0.89088, + -1.065,0.15,-1.065, -1.062497,0.127575,-1.062497, -1.211067,0.127575,-0.888786, + -1.211067,0.127575,-0.888786, -1.21392,0.15,-0.89088, -1.065,0.15,-1.065, + -0.89088,0.15,-1.21392, -0.888786,0.127575,-1.211067, -1.062497,0.127575,-1.062497, + -1.062497,0.127575,-1.062497, -1.065,0.15,-1.065, -0.89088,0.15,-1.21392, + -0.69444,0.15,-1.33476, -0.692808,0.127575,-1.331623, -0.888786,0.127575,-1.211067, + -0.888786,0.127575,-1.211067, -0.89088,0.15,-1.21392, -0.69444,0.15,-1.33476, + -0.47856,0.15,-1.42464, -0.477435,0.127575,-1.421292, -0.692808,0.127575,-1.331623, + -0.692808,0.127575,-1.331623, -0.69444,0.15,-1.33476, -0.47856,0.15,-1.42464, + -0.24612,0.15,-1.48068, -0.245542,0.127575,-1.4772, -0.477435,0.127575,-1.421292, + -0.477435,0.127575,-1.421292, -0.47856,0.15,-1.42464, -0.24612,0.15,-1.48068, + 0,0.15,-1.5, 0,0.127575,-1.496475, -0.245542,0.127575,-1.4772, + -0.245542,0.127575,-1.4772, -0.24612,0.15,-1.48068, 0,0.15,-1.5, + 0,0,0, 0,0.002175,-0.388275, 0.063708,0.002175,-0.383274, + 0,0,0, 0.063708,0.002175,-0.383274, 0.123875,0.002175,-0.368768, + 0,0,0, 0.123875,0.002175,-0.368768, 0.179756,0.002175,-0.345503, + 0,0,0, 0.179756,0.002175,-0.345503, 0.230604,0.002175,-0.314223, + 0,0,0, 0.230604,0.002175,-0.314223, 0.275675,0.002175,-0.275675, + 0,0,0, 0.275675,0.002175,-0.275675, 0.314223,0.002175,-0.230604, + 0,0,0, 0.314223,0.002175,-0.230604, 0.345503,0.002175,-0.179756, + 0,0,0, 0.345503,0.002175,-0.179756, 0.368768,0.002175,-0.123875, + 0,0,0, 0.368768,0.002175,-0.123875, 0.383274,0.002175,-0.063708, + 0,0,0, 0.383274,0.002175,-0.063708, 0.388275,0.002175,0, + 0.115381,0.0084,-0.694143, 0.063708,0.002175,-0.383274, 0,0.002175,-0.388275, + 0,0.002175,-0.388275, 0,0.0084,-0.7032, 0.115381,0.0084,-0.694143, + 0.224349,0.0084,-0.667871, 0.123875,0.002175,-0.368768, 0.063708,0.002175,-0.383274, + 0.063708,0.002175,-0.383274, 0.115381,0.0084,-0.694143, 0.224349,0.0084,-0.667871, + 0.325553,0.0084,-0.625735, 0.179756,0.002175,-0.345503, 0.123875,0.002175,-0.368768, + 0.123875,0.002175,-0.368768, 0.224349,0.0084,-0.667871, 0.325553,0.0084,-0.625735, + 0.417645,0.0084,-0.569086, 0.230604,0.002175,-0.314223, 0.179756,0.002175,-0.345503, + 0.179756,0.002175,-0.345503, 0.325553,0.0084,-0.625735, 0.417645,0.0084,-0.569086, + 0.499272,0.0084,-0.499272, 0.275675,0.002175,-0.275675, 0.230604,0.002175,-0.314223, + 0.230604,0.002175,-0.314223, 0.417645,0.0084,-0.569086, 0.499272,0.0084,-0.499272, + 0.569086,0.0084,-0.417645, 0.314223,0.002175,-0.230604, 0.275675,0.002175,-0.275675, + 0.275675,0.002175,-0.275675, 0.499272,0.0084,-0.499272, 0.569086,0.0084,-0.417645, + 0.625735,0.0084,-0.325553, 0.345503,0.002175,-0.179756, 0.314223,0.002175,-0.230604, + 0.314223,0.002175,-0.230604, 0.569086,0.0084,-0.417645, 0.625735,0.0084,-0.325553, + 0.667871,0.0084,-0.224349, 0.368768,0.002175,-0.123875, 0.345503,0.002175,-0.179756, + 0.345503,0.002175,-0.179756, 0.625735,0.0084,-0.325553, 0.667871,0.0084,-0.224349, + 0.694143,0.0084,-0.115381, 0.383274,0.002175,-0.063708, 0.368768,0.002175,-0.123875, + 0.368768,0.002175,-0.123875, 0.667871,0.0084,-0.224349, 0.694143,0.0084,-0.115381, + 0.7032,0.0084,0, 0.388275,0.002175,0, 0.383274,0.002175,-0.063708, + 0.383274,0.002175,-0.063708, 0.694143,0.0084,-0.115381, 0.7032,0.0084,0, + 0.156274,0.018225,-0.940158, 0.115381,0.0084,-0.694143, 0,0.0084,-0.7032, + 0,0.0084,-0.7032, 0,0.018225,-0.952425, 0.156274,0.018225,-0.940158, + 0.303862,0.018225,-0.904575, 0.224349,0.0084,-0.667871, 0.115381,0.0084,-0.694143, + 0.115381,0.0084,-0.694143, 0.156274,0.018225,-0.940158, 0.303862,0.018225,-0.904575, + 0.440935,0.018225,-0.847506, 0.325553,0.0084,-0.625735, 0.224349,0.0084,-0.667871, + 0.224349,0.0084,-0.667871, 0.303862,0.018225,-0.904575, 0.440935,0.018225,-0.847506, + 0.565664,0.018225,-0.770779, 0.417645,0.0084,-0.569086, 0.325553,0.0084,-0.625735, + 0.325553,0.0084,-0.625735, 0.440935,0.018225,-0.847506, 0.565664,0.018225,-0.770779, + 0.676222,0.018225,-0.676222, 0.499272,0.0084,-0.499272, 0.417645,0.0084,-0.569086, + 0.417645,0.0084,-0.569086, 0.565664,0.018225,-0.770779, 0.676222,0.018225,-0.676222, + 0.770779,0.018225,-0.565664, 0.569086,0.0084,-0.417645, 0.499272,0.0084,-0.499272, + 0.499272,0.0084,-0.499272, 0.676222,0.018225,-0.676222, 0.770779,0.018225,-0.565664, + 0.847506,0.018225,-0.440935, 0.625735,0.0084,-0.325553, 0.569086,0.0084,-0.417645, + 0.569086,0.0084,-0.417645, 0.770779,0.018225,-0.565664, 0.847506,0.018225,-0.440935, + 0.904575,0.018225,-0.303862, 0.667871,0.0084,-0.224349, 0.625735,0.0084,-0.325553, + 0.625735,0.0084,-0.325553, 0.847506,0.018225,-0.440935, 0.904575,0.018225,-0.303862, + 0.940158,0.018225,-0.156274, 0.694143,0.0084,-0.115381, 0.667871,0.0084,-0.224349, + 0.667871,0.0084,-0.224349, 0.904575,0.018225,-0.303862, 0.940158,0.018225,-0.156274, + 0.952425,0.018225,0, 0.7032,0.0084,0, 0.694143,0.0084,-0.115381, + 0.694143,0.0084,-0.115381, 0.940158,0.018225,-0.156274, 0.952425,0.018225,0, + 0.187642,0.0312,-1.12887, 0.156274,0.018225,-0.940158, 0,0.018225,-0.952425, + 0,0.018225,-0.952425, 0,0.0312,-1.1436, 0.187642,0.0312,-1.12887, + 0.364854,0.0312,-1.086146, 0.303862,0.018225,-0.904575, 0.156274,0.018225,-0.940158, + 0.156274,0.018225,-0.940158, 0.187642,0.0312,-1.12887, 0.364854,0.0312,-1.086146, + 0.529441,0.0312,-1.017621, 0.440935,0.018225,-0.847506, 0.303862,0.018225,-0.904575, + 0.303862,0.018225,-0.904575, 0.364854,0.0312,-1.086146, 0.529441,0.0312,-1.017621, + 0.679207,0.0312,-0.925493, 0.565664,0.018225,-0.770779, 0.440935,0.018225,-0.847506, + 0.440935,0.018225,-0.847506, 0.529441,0.0312,-1.017621, 0.679207,0.0312,-0.925493, + 0.811956,0.0312,-0.811956, 0.676222,0.018225,-0.676222, 0.565664,0.018225,-0.770779, + 0.565664,0.018225,-0.770779, 0.679207,0.0312,-0.925493, 0.811956,0.0312,-0.811956, + 0.925493,0.0312,-0.679207, 0.770779,0.018225,-0.565664, 0.676222,0.018225,-0.676222, + 0.676222,0.018225,-0.676222, 0.811956,0.0312,-0.811956, 0.925493,0.0312,-0.679207, + 1.017621,0.0312,-0.529441, 0.847506,0.018225,-0.440935, 0.770779,0.018225,-0.565664, + 0.770779,0.018225,-0.565664, 0.925493,0.0312,-0.679207, 1.017621,0.0312,-0.529441, + 1.086146,0.0312,-0.364854, 0.904575,0.018225,-0.303862, 0.847506,0.018225,-0.440935, + 0.847506,0.018225,-0.440935, 1.017621,0.0312,-0.529441, 1.086146,0.0312,-0.364854, + 1.12887,0.0312,-0.187642, 0.940158,0.018225,-0.156274, 0.904575,0.018225,-0.303862, + 0.904575,0.018225,-0.303862, 1.086146,0.0312,-0.364854, 1.12887,0.0312,-0.187642, + 1.1436,0.0312,0, 0.952425,0.018225,0, 0.940158,0.018225,-0.156274, + 0.940158,0.018225,-0.156274, 1.12887,0.0312,-0.187642, 1.1436,0.0312,0, + 0.21074,0.046875,-1.267832, 0.187642,0.0312,-1.12887, 0,0.0312,-1.1436, + 0,0.0312,-1.1436, 0,0.046875,-1.284375, 0.21074,0.046875,-1.267832, + 0.409767,0.046875,-1.219848, 0.364854,0.0312,-1.086146, 0.187642,0.0312,-1.12887, + 0.187642,0.0312,-1.12887, 0.21074,0.046875,-1.267832, 0.409767,0.046875,-1.219848, + 0.594614,0.046875,-1.142888, 0.529441,0.0312,-1.017621, 0.364854,0.0312,-1.086146, + 0.364854,0.0312,-1.086146, 0.409767,0.046875,-1.219848, 0.594614,0.046875,-1.142888, + 0.762816,0.046875,-1.039419, 0.679207,0.0312,-0.925493, 0.529441,0.0312,-1.017621, + 0.529441,0.0312,-1.017621, 0.594614,0.046875,-1.142888, 0.762816,0.046875,-1.039419, + 0.911906,0.046875,-0.911906, 0.811956,0.0312,-0.811956, 0.679207,0.0312,-0.925493, + 0.679207,0.0312,-0.925493, 0.762816,0.046875,-1.039419, 0.911906,0.046875,-0.911906, + 1.039419,0.046875,-0.762816, 0.925493,0.0312,-0.679207, 0.811956,0.0312,-0.811956, + 0.811956,0.0312,-0.811956, 0.911906,0.046875,-0.911906, 1.039419,0.046875,-0.762816, + 1.142888,0.046875,-0.594614, 1.017621,0.0312,-0.529441, 0.925493,0.0312,-0.679207, + 0.925493,0.0312,-0.679207, 1.039419,0.046875,-0.762816, 1.142888,0.046875,-0.594614, + 1.219848,0.046875,-0.409767, 1.086146,0.0312,-0.364854, 1.017621,0.0312,-0.529441, + 1.017621,0.0312,-0.529441, 1.142888,0.046875,-0.594614, 1.219848,0.046875,-0.409767, + 1.267832,0.046875,-0.21074, 1.12887,0.0312,-0.187642, 1.086146,0.0312,-0.364854, + 1.086146,0.0312,-0.364854, 1.219848,0.046875,-0.409767, 1.267832,0.046875,-0.21074, + 1.284375,0.046875,0, 1.1436,0.0312,0, 1.12887,0.0312,-0.187642, + 1.12887,0.0312,-0.187642, 1.267832,0.046875,-0.21074, 1.284375,0.046875,0, + 0.226824,0.0648,-1.364595, 0.21074,0.046875,-1.267832, 0,0.046875,-1.284375, + 0,0.046875,-1.284375, 0,0.0648,-1.3824, 0.226824,0.0648,-1.364595, + 0.441041,0.0648,-1.312948, 0.409767,0.046875,-1.219848, 0.21074,0.046875,-1.267832, + 0.21074,0.046875,-1.267832, 0.226824,0.0648,-1.364595, 0.441041,0.0648,-1.312948, + 0.639996,0.0648,-1.230115, 0.594614,0.046875,-1.142888, 0.409767,0.046875,-1.219848, + 0.409767,0.046875,-1.219848, 0.441041,0.0648,-1.312948, 0.639996,0.0648,-1.230115, + 0.821035,0.0648,-1.118749, 0.762816,0.046875,-1.039419, 0.594614,0.046875,-1.142888, + 0.594614,0.046875,-1.142888, 0.639996,0.0648,-1.230115, 0.821035,0.0648,-1.118749, + 0.981504,0.0648,-0.981504, 0.911906,0.046875,-0.911906, 0.762816,0.046875,-1.039419, + 0.762816,0.046875,-1.039419, 0.821035,0.0648,-1.118749, 0.981504,0.0648,-0.981504, + 1.118749,0.0648,-0.821035, 1.039419,0.046875,-0.762816, 0.911906,0.046875,-0.911906, + 0.911906,0.046875,-0.911906, 0.981504,0.0648,-0.981504, 1.118749,0.0648,-0.821035, + 1.230115,0.0648,-0.639996, 1.142888,0.046875,-0.594614, 1.039419,0.046875,-0.762816, + 1.039419,0.046875,-0.762816, 1.118749,0.0648,-0.821035, 1.230115,0.0648,-0.639996, + 1.312948,0.0648,-0.441041, 1.219848,0.046875,-0.409767, 1.142888,0.046875,-0.594614, + 1.142888,0.046875,-0.594614, 1.230115,0.0648,-0.639996, 1.312948,0.0648,-0.441041, + 1.364595,0.0648,-0.226824, 1.267832,0.046875,-0.21074, 1.219848,0.046875,-0.409767, + 1.219848,0.046875,-0.409767, 1.312948,0.0648,-0.441041, 1.364595,0.0648,-0.226824, + 1.3824,0.0648,0, 1.284375,0.046875,0, 1.267832,0.046875,-0.21074, + 1.267832,0.046875,-0.21074, 1.364595,0.0648,-0.226824, 1.3824,0.0648,0, + 0.237149,0.084525,-1.426709, 0.226824,0.0648,-1.364595, 0,0.0648,-1.3824, + 0,0.0648,-1.3824, 0,0.084525,-1.445325, 0.237149,0.084525,-1.426709, + 0.461116,0.084525,-1.372712, 0.441041,0.0648,-1.312948, 0.226824,0.0648,-1.364595, + 0.226824,0.0648,-1.364595, 0.237149,0.084525,-1.426709, 0.461116,0.084525,-1.372712, + 0.669128,0.084525,-1.286108, 0.639996,0.0648,-1.230115, 0.441041,0.0648,-1.312948, + 0.441041,0.0648,-1.312948, 0.461116,0.084525,-1.372712, 0.669128,0.084525,-1.286108, + 0.858407,0.084525,-1.169673, 0.821035,0.0648,-1.118749, 0.639996,0.0648,-1.230115, + 0.639996,0.0648,-1.230115, 0.669128,0.084525,-1.286108, 0.858407,0.084525,-1.169673, + 1.026181,0.084525,-1.026181, 0.981504,0.0648,-0.981504, 0.821035,0.0648,-1.118749, + 0.821035,0.0648,-1.118749, 0.858407,0.084525,-1.169673, 1.026181,0.084525,-1.026181, + 1.169673,0.084525,-0.858407, 1.118749,0.0648,-0.821035, 0.981504,0.0648,-0.981504, + 0.981504,0.0648,-0.981504, 1.026181,0.084525,-1.026181, 1.169673,0.084525,-0.858407, + 1.286108,0.084525,-0.669128, 1.230115,0.0648,-0.639996, 1.118749,0.0648,-0.821035, + 1.118749,0.0648,-0.821035, 1.169673,0.084525,-0.858407, 1.286108,0.084525,-0.669128, + 1.372712,0.084525,-0.461116, 1.312948,0.0648,-0.441041, 1.230115,0.0648,-0.639996, + 1.230115,0.0648,-0.639996, 1.286108,0.084525,-0.669128, 1.372712,0.084525,-0.461116, + 1.426709,0.084525,-0.237149, 1.364595,0.0648,-0.226824, 1.312948,0.0648,-0.441041, + 1.312948,0.0648,-0.441041, 1.372712,0.084525,-0.461116, 1.426709,0.084525,-0.237149, + 1.445325,0.084525,0, 1.3824,0.0648,0, 1.364595,0.0648,-0.226824, + 1.364595,0.0648,-0.226824, 1.426709,0.084525,-0.237149, 1.445325,0.084525,0, + 0.24297,0.1056,-1.461727, 0.237149,0.084525,-1.426709, 0,0.084525,-1.445325, + 0,0.084525,-1.445325, 0,0.1056,-1.4808, 0.24297,0.1056,-1.461727, + 0.472434,0.1056,-1.406405, 0.461116,0.084525,-1.372712, 0.237149,0.084525,-1.426709, + 0.237149,0.084525,-1.426709, 0.24297,0.1056,-1.461727, 0.472434,0.1056,-1.406405, + 0.685551,0.1056,-1.317675, 0.669128,0.084525,-1.286108, 0.461116,0.084525,-1.372712, + 0.461116,0.084525,-1.372712, 0.472434,0.1056,-1.406405, 0.685551,0.1056,-1.317675, + 0.879477,0.1056,-1.198382, 0.858407,0.084525,-1.169673, 0.669128,0.084525,-1.286108, + 0.669128,0.084525,-1.286108, 0.685551,0.1056,-1.317675, 0.879477,0.1056,-1.198382, + 1.051368,0.1056,-1.051368, 1.026181,0.084525,-1.026181, 0.858407,0.084525,-1.169673, + 0.858407,0.084525,-1.169673, 0.879477,0.1056,-1.198382, 1.051368,0.1056,-1.051368, + 1.198382,0.1056,-0.879477, 1.169673,0.084525,-0.858407, 1.026181,0.084525,-1.026181, + 1.026181,0.084525,-1.026181, 1.051368,0.1056,-1.051368, 1.198382,0.1056,-0.879477, + 1.317675,0.1056,-0.685551, 1.286108,0.084525,-0.669128, 1.169673,0.084525,-0.858407, + 1.169673,0.084525,-0.858407, 1.198382,0.1056,-0.879477, 1.317675,0.1056,-0.685551, + 1.406405,0.1056,-0.472434, 1.372712,0.084525,-0.461116, 1.286108,0.084525,-0.669128, + 1.286108,0.084525,-0.669128, 1.317675,0.1056,-0.685551, 1.406405,0.1056,-0.472434, + 1.461727,0.1056,-0.24297, 1.426709,0.084525,-0.237149, 1.372712,0.084525,-0.461116, + 1.372712,0.084525,-0.461116, 1.406405,0.1056,-0.472434, 1.461727,0.1056,-0.24297, + 1.4808,0.1056,0, 1.445325,0.084525,0, 1.426709,0.084525,-0.237149, + 1.426709,0.084525,-0.237149, 1.461727,0.1056,-0.24297, 1.4808,0.1056,0, + 0.245542,0.127575,-1.4772, 0.24297,0.1056,-1.461727, 0,0.1056,-1.4808, + 0,0.1056,-1.4808, 0,0.127575,-1.496475, 0.245542,0.127575,-1.4772, + 0.477435,0.127575,-1.421292, 0.472434,0.1056,-1.406405, 0.24297,0.1056,-1.461727, + 0.24297,0.1056,-1.461727, 0.245542,0.127575,-1.4772, 0.477435,0.127575,-1.421292, + 0.692808,0.127575,-1.331623, 0.685551,0.1056,-1.317675, 0.472434,0.1056,-1.406405, + 0.472434,0.1056,-1.406405, 0.477435,0.127575,-1.421292, 0.692808,0.127575,-1.331623, + 0.888786,0.127575,-1.211067, 0.879477,0.1056,-1.198382, 0.685551,0.1056,-1.317675, + 0.685551,0.1056,-1.317675, 0.692808,0.127575,-1.331623, 0.888786,0.127575,-1.211067, + 1.062497,0.127575,-1.062497, 1.051368,0.1056,-1.051368, 0.879477,0.1056,-1.198382, + 0.879477,0.1056,-1.198382, 0.888786,0.127575,-1.211067, 1.062497,0.127575,-1.062497, + 1.211067,0.127575,-0.888786, 1.198382,0.1056,-0.879477, 1.051368,0.1056,-1.051368, + 1.051368,0.1056,-1.051368, 1.062497,0.127575,-1.062497, 1.211067,0.127575,-0.888786, + 1.331623,0.127575,-0.692808, 1.317675,0.1056,-0.685551, 1.198382,0.1056,-0.879477, + 1.198382,0.1056,-0.879477, 1.211067,0.127575,-0.888786, 1.331623,0.127575,-0.692808, + 1.421292,0.127575,-0.477435, 1.406405,0.1056,-0.472434, 1.317675,0.1056,-0.685551, + 1.317675,0.1056,-0.685551, 1.331623,0.127575,-0.692808, 1.421292,0.127575,-0.477435, + 1.4772,0.127575,-0.245542, 1.461727,0.1056,-0.24297, 1.406405,0.1056,-0.472434, + 1.406405,0.1056,-0.472434, 1.421292,0.127575,-0.477435, 1.4772,0.127575,-0.245542, + 1.496475,0.127575,0, 1.4808,0.1056,0, 1.461727,0.1056,-0.24297, + 1.461727,0.1056,-0.24297, 1.4772,0.127575,-0.245542, 1.496475,0.127575,0, + 0.24612,0.15,-1.48068, 0.245542,0.127575,-1.4772, 0,0.127575,-1.496475, + 0,0.127575,-1.496475, 0,0.15,-1.5, 0.24612,0.15,-1.48068, + 0.47856,0.15,-1.42464, 0.477435,0.127575,-1.421292, 0.245542,0.127575,-1.4772, + 0.245542,0.127575,-1.4772, 0.24612,0.15,-1.48068, 0.47856,0.15,-1.42464, + 0.69444,0.15,-1.33476, 0.692808,0.127575,-1.331623, 0.477435,0.127575,-1.421292, + 0.477435,0.127575,-1.421292, 0.47856,0.15,-1.42464, 0.69444,0.15,-1.33476, + 0.89088,0.15,-1.21392, 0.888786,0.127575,-1.211067, 0.692808,0.127575,-1.331623, + 0.692808,0.127575,-1.331623, 0.69444,0.15,-1.33476, 0.89088,0.15,-1.21392, + 1.065,0.15,-1.065, 1.062497,0.127575,-1.062497, 0.888786,0.127575,-1.211067, + 0.888786,0.127575,-1.211067, 0.89088,0.15,-1.21392, 1.065,0.15,-1.065, + 1.21392,0.15,-0.89088, 1.211067,0.127575,-0.888786, 1.062497,0.127575,-1.062497, + 1.062497,0.127575,-1.062497, 1.065,0.15,-1.065, 1.21392,0.15,-0.89088, + 1.33476,0.15,-0.69444, 1.331623,0.127575,-0.692808, 1.211067,0.127575,-0.888786, + 1.211067,0.127575,-0.888786, 1.21392,0.15,-0.89088, 1.33476,0.15,-0.69444, + 1.42464,0.15,-0.47856, 1.421292,0.127575,-0.477435, 1.331623,0.127575,-0.692808, + 1.331623,0.127575,-0.692808, 1.33476,0.15,-0.69444, 1.42464,0.15,-0.47856, + 1.48068,0.15,-0.24612, 1.4772,0.127575,-0.245542, 1.421292,0.127575,-0.477435, + 1.421292,0.127575,-0.477435, 1.42464,0.15,-0.47856, 1.48068,0.15,-0.24612, + 1.5,0.15,0, 1.496475,0.127575,0, 1.4772,0.127575,-0.245542, + 1.4772,0.127575,-0.245542, 1.48068,0.15,-0.24612, 1.5,0.15,0 +}; diff --git a/hacks/glx/texfont.c b/hacks/glx/texfont.c new file mode 100644 index 0000000..540db9f --- /dev/null +++ b/hacks/glx/texfont.c @@ -0,0 +1,961 @@ +/* texfonts, Copyright (c) 2005-2017 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Renders X11 fonts into textures for use with OpenGL. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include + +#ifdef HAVE_COCOA +# ifdef USE_IPHONE +# include "jwzgles.h" +# else +# include +# endif +#elif defined(HAVE_ANDROID) +# include +# include "jwzgles.h" +#else +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#ifdef HAVE_XSHM_EXTENSION +# include "xshm.h" +#endif /* HAVE_XSHM_EXTENSION */ + +#include "xft.h" +#include "pow2.h" +#include "resources.h" +#include "texfont.h" +#include "fps.h" /* for current_device_rotation() */ + +#undef HAVE_XSHM_EXTENSION /* doesn't actually do any good here */ + + +/* These are in xlock-gl.c */ +extern void clear_gl_error (void); +extern void check_gl_error (const char *type); + +/* screenhack.h */ +extern char *progname; + +/* LRU cache of textures, to optimize the case where we're drawing the + same strings repeatedly. + */ +typedef struct texfont_cache texfont_cache; +struct texfont_cache { + char *string; + GLuint texid; + XCharStruct extents; + int tex_width, tex_height; + texfont_cache *next; +}; + +struct texture_font_data { + Display *dpy; + XftFont *xftfont; + int cache_size; + texfont_cache *cache; +}; + + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + + +/* Given a Pixmap (of screen depth), converts it to an OpenGL luminance mipmap. + RGB are averaged to grayscale, and the resulting value is treated as alpha. + Pass in the size of the pixmap; the size of the texture is returned + (it may be larger, since GL like powers of 2.) + + We use a screen-depth pixmap instead of a 1bpp bitmap so that if the fonts + were drawn with antialiasing, that is preserved. + */ +static void +bitmap_to_texture (Display *dpy, Pixmap p, Visual *visual, int depth, + int *wP, int *hP) +{ + Bool mipmap_p = True; + int ow = *wP; + int oh = *hP; + GLsizei w2 = (GLsizei) to_pow2 (ow); + GLsizei h2 = (GLsizei) to_pow2 (oh); + int x, y, max, scale; + XImage *image = 0; + unsigned char *data = (unsigned char *) calloc (w2 * 2, (h2 + 1)); + unsigned char *out = data; + + /* OpenGLES doesn't support GL_INTENSITY, so instead of using a + texture with 1 byte per pixel, the intensity value, we have + to use 2 bytes per pixel: solid white, and an alpha value. + */ +# ifdef HAVE_JWZGLES +# undef GL_INTENSITY +# endif + +# ifdef HAVE_XSHM_EXTENSION + Bool use_shm = get_boolean_resource (dpy, "useSHM", "Boolean"); + XShmSegmentInfo shm_info; +# endif /* HAVE_XSHM_EXTENSION */ + + /* If either dimension is larger than the supported size, reduce. + We still return the old size to keep the caller's math working, + but the texture itself will have fewer pixels in it. + */ + glGetIntegerv (GL_MAX_TEXTURE_SIZE, &max); + scale = 1; + while (w2 > max || h2 > max) + { + w2 /= 2; + h2 /= 2; + scale *= 2; + } + +# ifdef HAVE_XSHM_EXTENSION + if (use_shm) + { + image = create_xshm_image (dpy, visual, depth, ZPixmap, 0, &shm_info, + ow, oh); + if (image) + XShmGetImage (dpy, p, image, 0, 0, ~0L); + else + use_shm = False; + } +# endif /* HAVE_XSHM_EXTENSION */ + + if (!image) { + /* XCreateImage fills in (red|green_blue)_mask. XGetImage only does that + when reading from a Window, not when it's a Pixmap. + */ + image = XCreateImage (dpy, visual, depth, ZPixmap, 0, NULL, ow, oh, + BitmapPad (dpy), 0); + image->data = malloc (image->height * image->bytes_per_line); + XGetSubImage (dpy, p, 0, 0, ow, oh, ~0L, ZPixmap, image, 0, 0); + } + +# ifdef HAVE_JWZGLES + /* This would work, but it's wasteful for no benefit. */ + mipmap_p = False; +# endif + +# ifdef DUMP_BITMAPS + fprintf (stderr, "\n"); +# endif + for (y = 0; y < h2; y++) { + for (x = 0; x < w2; x++) { + /* Might be better to average a scale x scale square of source pixels, + but at the resolutions we're dealing with, this is probably good + enough. */ + int sx = x * scale; + int sy = y * scale; + unsigned long pixel = (sx >= ow || sy >= oh ? 0 : + XGetPixel (image, sx, sy)); + /* instead of averaging all three channels, let's just use red, + and assume it was already grayscale. */ + unsigned long r = pixel & image->red_mask; + /* This goofy trick is to make any of RGBA/ABGR/ARGB work. */ + pixel = ((r >> 24) | (r >> 16) | (r >> 8) | r) & 0xFF; + +# ifdef DUMP_BITMAPS + if (sx < ow && sy < oh) +# ifdef HAVE_JWXYZ + fprintf (stderr, "%c", + r >= 0xFF000000 ? '#' : + r >= 0x88000000 ? '%' : + r ? '.' : ' '); +# else + fprintf (stderr, "%c", + r >= 0xFF0000 ? '#' : + r >= 0x880000 ? '%' : + r ? '.' : ' '); +# endif +# endif + +# if 0 /* Debugging checkerboard */ + if (sx < ow && sy < oh && (((sx / 4) & 1) ^ ((sy / 4) & 1))) + pixel = 0x3F; +# endif + +# ifndef GL_INTENSITY + *out++ = 0xFF; /* 2 bytes per pixel (luminance, alpha) */ +# endif + *out++ = pixel; + } +# ifdef DUMP_BITMAPS + fprintf (stderr, "\n"); +# endif + } + +# ifdef HAVE_XSHM_EXTENSION + if (use_shm) + destroy_xshm_image (dpy, image, &shm_info); + else +# endif /* HAVE_XSHM_EXTENSION */ + { + /* We malloc'd image->data, so we free it. */ + free (image->data); + image->data = NULL; + XDestroyImage (image); + } + + image = 0; + + { +# ifdef GL_INTENSITY + GLuint iformat = GL_INTENSITY; + GLuint format = GL_LUMINANCE; +# else + GLuint iformat = GL_LUMINANCE_ALPHA; + GLuint format = GL_LUMINANCE_ALPHA; +# endif + GLuint type = GL_UNSIGNED_BYTE; + + if (mipmap_p) + gluBuild2DMipmaps (GL_TEXTURE_2D, iformat, w2, h2, format, type, data); + else + glTexImage2D (GL_TEXTURE_2D, 0, iformat, w2, h2, 0, format, type, data); + } + + { + char msg[100]; + sprintf (msg, "texture font %s (%d x %d)", + mipmap_p ? "gluBuild2DMipmaps" : "glTexImage2D", + w2, h2); + check_gl_error (msg); + } + + free (data); + + *wP = w2 * scale; + *hP = h2 * scale; +} + + +/* Loads the font named by the X resource "res" and returns + a texture-font object. +*/ +texture_font_data * +load_texture_font (Display *dpy, char *res) +{ + int screen = DefaultScreen (dpy); + char *font = get_string_resource (dpy, res, "Font"); + const char *def1 = "-*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*"; + const char *def2 = "-*-helvetica-medium-r-normal-*-*-140-*-*-*-*-*-*"; + const char *def3 = "fixed"; + XftFont *f = 0; + texture_font_data *data; + int cache_size = get_integer_resource (dpy, "texFontCacheSize", "Integer"); + + /* Hacks that draw a lot of different strings on the screen simultaneously, + like Star Wars, should set this to a larger value for performance. */ + if (cache_size <= 0) + cache_size = 30; + + if (!res || !*res) abort(); + + if (!strcmp (res, "fpsFont")) { /* Kludge. */ + def1 = "-*-courier-bold-r-normal-*-*-180-*-*-*-*-*-*"; /* also fps.c */ + cache_size = 0; /* No need for a cache on FPS: already throttled. */ + } + + if (!font) font = strdup(def1); + + f = XftFontOpenXlfd (dpy, screen, font); + if (!f && !!strcmp (font, def1)) + { + fprintf (stderr, "%s: unable to load font \"%s\", using \"%s\"\n", + progname, font, def1); + free (font); + font = strdup (def1); + f = XftFontOpenXlfd (dpy, screen, font); + } + + if (!f && !!strcmp (font, def2)) + { + fprintf (stderr, "%s: unable to load font \"%s\", using \"%s\"\n", + progname, font, def2); + free (font); + font = strdup (def2); + f = XftFontOpenXlfd (dpy, screen, font); + } + + if (!f && !!strcmp (font, def3)) + { + fprintf (stderr, "%s: unable to load font \"%s\", using \"%s\"\n", + progname, font, def3); + free (font); + font = strdup (def3); + f = XftFontOpenXlfd (dpy, screen, font); + } + + if (!f) + { + fprintf (stderr, "%s: unable to load fallback font \"%s\" either!\n", + progname, font); + abort(); + } + + free (font); + font = 0; + + data = (texture_font_data *) calloc (1, sizeof(*data)); + data->dpy = dpy; + data->xftfont = f; + data->cache_size = cache_size; + + return data; +} + + +/* Measure the string, returning the overall metrics. + Newlines and tab stops are honored. + Any numbers inside [] will be rendered as a subscript. + + The origin is at the origin of the first character, so subsequent + lines of a multi-line string look like descenders (below baseline). + + If an XftDraw is supplied, render the string as well, at X,Y. + Positive Y is down (X11 style, not OpenGL style). + */ +static void +iterate_texture_string (texture_font_data *data, + const char *s, + int draw_x, int draw_y, + XftDraw *xftdraw, XftColor *xftcolor, + XCharStruct *metrics_ret) +{ + int line_height = data->xftfont->ascent + data->xftfont->descent; + int subscript_offset = line_height * 0.3; + const char *os = s; + Bool sub_p = False, osub_p = False; + int cw = 0, tabs = 0; + XCharStruct overall = { 0, }; + int x = 0, y = 0; + int ox = x, oy = y; + + while (1) + { + if (*s == 0 || + *s == '\n' || + *s == '\t' || + (*s == '[' && isdigit(s[1])) || + (*s == ']' && sub_p)) + { + if (s != os) + { + XGlyphInfo e; + XCharStruct c; + int y2 = y; + if (sub_p) y2 += subscript_offset; + + XftTextExtentsUtf8 (data->dpy, data->xftfont, + (FcChar8 *) os, (int) (s - os), + &e); + c.lbearing = -e.x; /* XGlyphInfo to XCharStruct */ + c.rbearing = e.width - e.x; + c.ascent = e.y; + c.descent = e.height - e.y; + c.width = e.xOff; + +# undef MAX +# undef MIN +# define MAX(A,B) ((A)>(B)?(A):(B)) +# define MIN(A,B) ((A)<(B)?(A):(B)) + overall.ascent = MAX (overall.ascent, -y2 + c.ascent); + overall.descent = MAX (overall.descent, y2 + c.descent); + overall.lbearing = MIN (overall.lbearing, (x + c.lbearing)); + overall.rbearing = MAX (overall.rbearing, x + c.rbearing); + overall.width = MAX (overall.width, x + c.width); + x += c.width; +# undef MAX +# undef MIN + } + + if (*s == '\n') + { + x = 0; + y += line_height; + sub_p = False; + } + else if (*s == '\t') + { + if (! cw) + { + /* Measure "m" to determine tab width. */ + XGlyphInfo e; + XftTextExtentsUtf8 (data->dpy, data->xftfont, + (FcChar8 *) "m", 1, &e); + cw = e.xOff; + if (cw <= 0) cw = 1; + tabs = cw * 7; + } + x = ((x + tabs) / tabs) * tabs; + } + else if (*s == '[' && isdigit(s[1])) + sub_p = True; + else if (*s == ']' && sub_p) + sub_p = False; + + if (xftdraw && s != os) + XftDrawStringUtf8 (xftdraw, xftcolor, data->xftfont, + draw_x + ox, + draw_y + + oy + (osub_p ? subscript_offset : 0), + (FcChar8 *) os, (int) (s - os)); + if (!*s) break; + os = s+1; + ox = x; + oy = y; + osub_p = sub_p; + } + s++; + } + + if (metrics_ret) + *metrics_ret = overall; +} + + +/* Bounding box of the multi-line string, in pixels, + and overall ascent/descent of the font. + */ +void +texture_string_metrics (texture_font_data *data, const char *s, + XCharStruct *metrics_ret, + int *ascent_ret, int *descent_ret) +{ + if (metrics_ret) + iterate_texture_string (data, s, 0, 0, 0, 0, metrics_ret); + if (ascent_ret) *ascent_ret = data->xftfont->ascent; + if (descent_ret) *descent_ret = data->xftfont->descent; +} + + +/* Returns a cache entry for this string, with a valid texid. + If the returned entry has a string in it, the texture is valid. + Otherwise it is an empty entry waiting to be rendered. + */ +static struct texfont_cache * +get_cache (texture_font_data *data, const char *string) +{ + int count = 0; + texfont_cache *prev = 0, *prev2 = 0, *curr = 0, *next = 0; + + if (data->cache) + for (prev2 = 0, prev = 0, curr = data->cache, next = curr->next; + curr; + prev2 = prev, prev = curr, curr = next, + next = (curr ? curr->next : 0), count++) + { + if (!strcmp (string, curr->string)) + { + if (prev) + prev->next = next; /* Unlink from list */ + if (curr != data->cache) + { + curr->next = data->cache; /* Move to front */ + data->cache = curr; + } + return curr; + } + } + + /* Made it to the end of the list without a hit. + If the cache is full, empty out the last one on the list, + and move it to the front. Keep the texid. + */ + if (count > data->cache_size) + { + if (!prev) abort(); + free (prev->string); + prev->string = 0; + prev->tex_width = 0; + prev->tex_height = 0; + memset (&prev->extents, 0, sizeof(prev->extents)); + if (prev2) + prev2->next = 0; + if (prev != data->cache) + prev->next = data->cache; + data->cache = prev; + return prev; + } + + /* Not cached, and cache not full. Add a new entry at the front, + and allocate a new texture for it. + */ + curr = (struct texfont_cache *) calloc (1, sizeof(*prev)); + glGenTextures (1, &curr->texid); + curr->string = 0; + curr->next = data->cache; + data->cache = curr; + + return curr; +} + + +/* Renders the given string into the prevailing texture. + Returns the metrics of the text, and size of the texture. + */ +void +string_to_texture (texture_font_data *data, const char *string, + XCharStruct *extents_ret, + int *tex_width_ret, int *tex_height_ret) +{ + Window window = RootWindow (data->dpy, 0); + Pixmap p; + XGCValues gcv; + GC gc; + XWindowAttributes xgwa; + XRenderColor rcolor; + XftColor xftcolor; + XftDraw *xftdraw; + int width, height; + XCharStruct overall; + + /* Measure the string and create a Pixmap of the proper size. + */ + XGetWindowAttributes (data->dpy, window, &xgwa); + iterate_texture_string (data, string, 0, 0, 0, 0, &overall); + width = overall.rbearing - overall.lbearing; + height = overall.ascent + overall.descent; + if (width <= 0) width = 1; + if (height <= 0) height = 1; + p = XCreatePixmap (data->dpy, window, width, height, xgwa.depth); + + gcv.foreground = BlackPixelOfScreen (xgwa.screen); + gc = XCreateGC (data->dpy, p, GCForeground, &gcv); + XFillRectangle (data->dpy, p, gc, 0, 0, width, height); + XFreeGC (data->dpy, gc); + + /* Render the string into the pixmap. + */ + rcolor.red = rcolor.green = rcolor.blue = rcolor.alpha = 0xFFFF; + XftColorAllocValue (data->dpy, xgwa.visual, xgwa.colormap, + &rcolor, &xftcolor); + xftdraw = XftDrawCreate (data->dpy, p, xgwa.visual, xgwa.colormap); + iterate_texture_string (data, string, + -overall.lbearing, overall.ascent, + xftdraw, &xftcolor, 0); + XftDrawDestroy (xftdraw); + XftColorFree (data->dpy, xgwa.visual, xgwa.colormap, &xftcolor); + + /* Copy the bits from the Pixmap into a texture, unless it's cached. + */ + bitmap_to_texture (data->dpy, p, xgwa.visual, xgwa.depth, + &width, &height); + XFreePixmap (data->dpy, p); + + if (extents_ret) *extents_ret = overall; + if (tex_width_ret) *tex_width_ret = width; + if (tex_height_ret) *tex_height_ret = height; +} + + +/* Set the various OpenGL parameters for properly rendering things + with a texture generated by string_to_texture(). + */ +void +enable_texture_string_parameters (void) +{ + glEnable (GL_TEXTURE_2D); + + /* Texture-rendering parameters to make font pixmaps tolerable to look at. + */ + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + GL_LINEAR_MIPMAP_LINEAR); + + /* LOD bias is part of OpenGL 1.4. + GL_EXT_texture_lod_bias has been present since the original iPhone. + */ +# if !defined(GL_TEXTURE_LOD_BIAS) && defined(GL_TEXTURE_LOD_BIAS_EXT) +# define GL_TEXTURE_LOD_BIAS GL_TEXTURE_LOD_BIAS_EXT +# endif +# ifdef GL_TEXTURE_LOD_BIAS + glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, 0.25); +# endif + clear_gl_error(); /* invalid enum on iPad 3 */ + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + /* Don't write the transparent parts of the quad into the depth buffer. */ + glAlphaFunc (GL_GREATER, 0.01); + glEnable (GL_ALPHA_TEST); + glEnable (GL_BLEND); + glDisable (GL_LIGHTING); + glDisable (GL_TEXTURE_GEN_S); + glDisable (GL_TEXTURE_GEN_T); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +} + + +/* Draws the string in the scene at the origin. + Newlines and tab stops are honored. + Any numbers inside [] will be rendered as a subscript. + Assumes the font has been loaded as with load_texture_font(). + + The origin is at the origin of the first character, so subsequent + lines of a multi-line string are below that. + */ +void +print_texture_string (texture_font_data *data, const char *string) +{ + XCharStruct overall; + int tex_width, tex_height; + texfont_cache *cache; + GLint old_texture; + + if (!*string) return; + + clear_gl_error (); + + /* Save the prevailing texture ID, and bind ours. Restored at the end. */ + glGetIntegerv (GL_TEXTURE_BINDING_2D, &old_texture); + + cache = get_cache (data, string); + + glBindTexture (GL_TEXTURE_2D, cache->texid); + check_gl_error ("texture font binding"); + + /* Measure the string and make a pixmap that will fit it, + unless it's cached. + */ + if (cache->string) + { + overall = data->cache->extents; + tex_width = data->cache->tex_width; + tex_height = data->cache->tex_height; + } + else + { +# if defined HAVE_JWXYZ && defined JWXYZ_GL + /* TODO, JWXYZ_GL: Mixing Xlib and GL has issues. */ + memset (&overall, 0, sizeof(overall)); + tex_width = 8; + tex_height = 8; +# else + string_to_texture (data, string, &overall, &tex_width, &tex_height); +# endif + } + + { + int ofront, oblend; + Bool alpha_p, blend_p, light_p, gen_s_p, gen_t_p; + GLfloat omatrix[16]; + GLfloat qx0, qy0, qx1, qy1; + GLfloat tx0, ty0, tx1, ty1; + + /* If face culling is not enabled, draw front and back. */ + Bool draw_back_face_p = !glIsEnabled (GL_CULL_FACE); + + /* Save the prevailing texture environment, and set up ours. + */ + glGetIntegerv (GL_FRONT_FACE, &ofront); + glGetIntegerv (GL_BLEND_DST, &oblend); + glGetFloatv (GL_TEXTURE_MATRIX, omatrix); + blend_p = glIsEnabled (GL_BLEND); + alpha_p = glIsEnabled (GL_ALPHA_TEST); + light_p = glIsEnabled (GL_LIGHTING); + gen_s_p = glIsEnabled (GL_TEXTURE_GEN_S); + gen_t_p = glIsEnabled (GL_TEXTURE_GEN_T); + + glPushMatrix(); + + glNormal3f (0, 0, 1); + glFrontFace (GL_CW); + + glMatrixMode (GL_TEXTURE); + glLoadIdentity (); + glMatrixMode (GL_MODELVIEW); + + enable_texture_string_parameters(); + + /* Draw a quad with that texture on it, possibly using a cached texture. + Position the XCharStruct origin at 0,0 in the scene. + */ + qx0 = overall.lbearing; + qy0 = -overall.descent; + qx1 = overall.rbearing; + qy1 = overall.ascent; + + tx0 = 0; + ty1 = 0; + tx1 = (overall.rbearing - overall.lbearing) / (GLfloat) tex_width; + ty0 = (overall.ascent + overall.descent) / (GLfloat) tex_height; + + glEnable (GL_CULL_FACE); + glFrontFace (GL_CCW); + glBegin (GL_QUADS); + glTexCoord2f (tx0, ty0); glVertex3f (qx0, qy0, 0); + glTexCoord2f (tx1, ty0); glVertex3f (qx1, qy0, 0); + glTexCoord2f (tx1, ty1); glVertex3f (qx1, qy1, 0); + glTexCoord2f (tx0, ty1); glVertex3f (qx0, qy1, 0); + glEnd(); + + if (draw_back_face_p) + { + glFrontFace (GL_CW); + glBegin (GL_QUADS); + glTexCoord2f (tx0, ty0); glVertex3f (qx0, qy0, 0); + glTexCoord2f (tx1, ty0); glVertex3f (qx1, qy0, 0); + glTexCoord2f (tx1, ty1); glVertex3f (qx1, qy1, 0); + glTexCoord2f (tx0, ty1); glVertex3f (qx0, qy1, 0); + glEnd(); + glDisable (GL_CULL_FACE); + } + + glPopMatrix(); + + /* Reset to the caller's texture environment. + */ + glBindTexture (GL_TEXTURE_2D, old_texture); + glFrontFace (ofront); + if (!alpha_p) glDisable (GL_ALPHA_TEST); + if (!blend_p) glDisable (GL_BLEND); + if (light_p) glEnable (GL_LIGHTING); + if (gen_s_p) glEnable (GL_TEXTURE_GEN_S); + if (gen_t_p) glEnable (GL_TEXTURE_GEN_T); + + glBlendFunc (GL_SRC_ALPHA, oblend); + + glMatrixMode (GL_TEXTURE); + glMultMatrixf (omatrix); + glMatrixMode (GL_MODELVIEW); + + check_gl_error ("texture font print"); + + /* Store this string into the cache, unless that's where it came from. + */ + if (!cache->string) + { + cache->string = strdup (string); + cache->extents = overall; + cache->tex_width = tex_width; + cache->tex_height = tex_height; + } + } +} + + +/* Draws the string on the window at the given pixel position. + Newlines and tab stops are honored. + Any numbers inside [] will be rendered as a subscript. + Assumes the font has been loaded as with load_texture_font(). + + Position is 0 for center, 1 for top left, 2 for bottom left. + */ +void +print_texture_label (Display *dpy, + texture_font_data *data, + int window_width, int window_height, + int position, + const char *string) +{ + GLfloat color[4]; + + Bool tex_p = glIsEnabled (GL_TEXTURE_2D); + Bool texs_p = glIsEnabled (GL_TEXTURE_GEN_S); + Bool text_p = glIsEnabled (GL_TEXTURE_GEN_T); + Bool depth_p = glIsEnabled (GL_DEPTH_TEST); + Bool cull_p = glIsEnabled (GL_CULL_FACE); + Bool fog_p = glIsEnabled (GL_FOG); + GLint ovp[4]; + +# ifndef HAVE_JWZGLES + GLint opoly[2]; + glGetIntegerv (GL_POLYGON_MODE, opoly); +# endif + + glGetIntegerv (GL_VIEWPORT, ovp); + + glGetFloatv (GL_CURRENT_COLOR, color); + + glEnable (GL_TEXTURE_2D); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glPolygonMode (GL_FRONT, GL_FILL); + + glDisable (GL_TEXTURE_GEN_S); + glDisable (GL_TEXTURE_GEN_T); + glDisable (GL_CULL_FACE); + glDisable (GL_FOG); + + glDisable (GL_DEPTH_TEST); + + /* Each matrix mode has its own stack, so we need to push/pop + them separately. + */ + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + { + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + { + XCharStruct cs; + int ascent, descent; + int x, y, w, h, swap; + /* int rot = (int) current_device_rotation(); */ + int rot = 0; /* Since GL hacks rotate now */ + + glLoadIdentity(); + glViewport (0, 0, window_width, window_height); + glOrtho (0, window_width, 0, window_height, -1, 1); + + while (rot <= -180) rot += 360; + while (rot > 180) rot -= 360; + + texture_string_metrics (data, string, &cs, &ascent, &descent); + h = cs.ascent + cs.descent; + w = cs.width; + +# ifdef USE_IPHONE + { + /* Size of the font is in points, so scale iOS pixels to points. */ + GLfloat scale = ((window_width > window_height + ? window_width : window_height) + / 768.0); + if (scale < 1) scale = 1; + + /* jwxyz-XLoadFont has already doubled the font size, to compensate + for physically smaller screens. Undo that, since OpenGL hacks + use full-resolution framebuffers, unlike X11 hacks. */ + scale /= 2; + + window_width /= scale; + window_height /= scale; + glScalef (scale, scale, scale); + } +# endif /* USE_IPHONE */ + + if (rot > 135 || rot < -135) /* 180 */ + { + glTranslatef (window_width, window_height, 0); + glRotatef (180, 0, 0, 1); + } + else if (rot > 45) /* 90 */ + { + glTranslatef (window_width, 0, 0); + glRotatef (90, 0, 0, 1); + swap = window_width; + window_width = window_height; + window_height = swap; + } + else if (rot < -45) /* 270 */ + { + glTranslatef(0, window_height, 0); + glRotatef (-90, 0, 0, 1); + swap = window_width; + window_width = window_height; + window_height = swap; + } + + switch (position) { + case 0: /* center */ + x = (window_width - w) / 2; + y = (window_height + h) / 2 - ascent; + break; + case 1: /* top */ + x = ascent; + y = window_height - ascent*2; + break; + case 2: /* bottom */ + x = ascent; + y = h; + break; + default: + abort(); + } + + glTranslatef (x, y, 0); + + /* draw the text five times, to give it a border. */ + { + const XPoint offsets[] = {{ -1, -1 }, + { -1, 1 }, + { 1, 1 }, + { 1, -1 }, + { 0, 0 }}; + int i; + + glColor3f (0, 0, 0); + for (i = 0; i < countof(offsets); i++) + { + if (offsets[i].x == 0) + glColor4fv (color); + glPushMatrix(); + glTranslatef (offsets[i].x, offsets[i].y, 0); + print_texture_string (data, string); + glPopMatrix(); + } + } + } + glPopMatrix(); + } + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + if (tex_p) glEnable (GL_TEXTURE_2D); else glDisable (GL_TEXTURE_2D); + if (texs_p) glEnable (GL_TEXTURE_GEN_S);/*else glDisable(GL_TEXTURE_GEN_S);*/ + if (text_p) glEnable (GL_TEXTURE_GEN_T);/*else glDisable(GL_TEXTURE_GEN_T);*/ + if (depth_p) glEnable (GL_DEPTH_TEST); else glDisable (GL_DEPTH_TEST); + if (cull_p) glEnable (GL_CULL_FACE); /*else glDisable (GL_CULL_FACE);*/ + if (fog_p) glEnable (GL_FOG); /*else glDisable (GL_FOG);*/ + + glViewport (ovp[0], ovp[1], ovp[2], ovp[3]); + +# ifndef HAVE_JWZGLES + glPolygonMode (GL_FRONT, opoly[0]); +# endif + + glMatrixMode(GL_MODELVIEW); +} + + +#ifdef HAVE_JWXYZ +char * +texfont_unicode_character_name (texture_font_data *data, unsigned long uc) +{ + Font fid = data->xftfont->xfont->fid; + return jwxyz_unicode_character_name (data->dpy, fid, uc); +} +#endif /* HAVE_JWXYZ */ + + + +/* Releases the font and texture. + */ +void +free_texture_font (texture_font_data *data) +{ + while (data->cache) + { + texfont_cache *next = data->cache->next; + glDeleteTextures (1, &data->cache->texid); + free (data->cache); + data->cache = next; + } + if (data->xftfont) + XftFontClose (data->dpy, data->xftfont); + free (data); +} diff --git a/hacks/glx/texfont.h b/hacks/glx/texfont.h new file mode 100644 index 0000000..8f86dab --- /dev/null +++ b/hacks/glx/texfont.h @@ -0,0 +1,72 @@ +/* texfonts, Copyright (c) 2005-2016 Jamie Zawinski + * Loads X11 fonts into textures for use with OpenGL. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __TEXTURE_FONT_H__ +#define __TEXTURE_FONT_H__ + +typedef struct texture_font_data texture_font_data; + +/* Loads the font named by the X resource "res" and returns + a texture-font object. +*/ +extern texture_font_data *load_texture_font (Display *, char *res); + +/* Bounding box of the multi-line string, in pixels, + and overall ascent/descent of the font. + */ +extern void texture_string_metrics (texture_font_data *, const char *, + XCharStruct *metrics_ret, + int *ascent_ret, int *descent_ret); + +/* Draws the string in the scene at the origin. + Newlines and tab stops are honored. + Any numbers inside [] will be rendered as a subscript. + Assumes the font has been loaded as with load_texture_font(). + */ +extern void print_texture_string (texture_font_data *, const char *); + +/* Draws the string on the window at the given pixel position. + Newlines and tab stops are honored. + Any numbers inside [] will be rendered as a subscript. + Assumes the font has been loaded as with load_texture_font(). + + Position is 0 for center, 1 for top left, 2 for bottom left. + */ +void print_texture_label (Display *, texture_font_data *, + int window_width, int window_height, + int position, const char *string); + +/* Renders the given string into the prevailing texture. + Returns the metrics of the text, and size of the texture. + */ +void string_to_texture (texture_font_data *, const char *, + XCharStruct *extents_ret, + int *tex_width_ret, int *tex_height_ret); + +/* Set the various OpenGL parameters for properly rendering things + with a texture generated by string_to_texture(). + */ +void enable_texture_string_parameters (void); + + +/* Releases the texture font. + */ +extern void free_texture_font (texture_font_data *); + + +#ifdef HAVE_JWXYZ +extern char *texfont_unicode_character_name (texture_font_data *, + unsigned long uc); +#endif + + +#endif /* __TEXTURE_FONT_H__ */ diff --git a/hacks/glx/timetunnel.c b/hacks/glx/timetunnel.c new file mode 100644 index 0000000..723d04d --- /dev/null +++ b/hacks/glx/timetunnel.c @@ -0,0 +1,1240 @@ +/* timetunnel. Based on dangerball.c, hack by Sean Brennan */ +/* dangerball, Copyright (c) 2001-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define GL_GLEXT_PROTOTYPES 1 + +#include /* for log2 */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 30 \n" \ + "*showFPS: False \n" \ + "*timeStart: 0.0 \n" \ + "*timeEnd: 27.79 \n" \ + "*wireframe: False \n" \ + + + +# define free_tunnel 0 +# define release_tunnel 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "rotator.h" +#include "gltrackball.h" + +#define DEF_START "0.00" +#define DEF_DILATE "1.00" +#define DEF_END "27.79" +#define DEF_LOCKLOGO "False" +#define DEF_DRAWLOGO "True" +#define DEF_REVERSE "False" +#define DEF_FOG "True" +#define DEF_TEXTURE "True" +#define MAX_TEXTURE 10 +#define CYL_LEN 14.0 +#define DIAMOND_LEN 10.0 + +static float start, end, dilate; +static Bool do_texture, drawlogo, wire, reverse, do_fog; +static const char *do_tx1, *do_tx2, *do_tx3, *do_tun1, *do_tun2, *do_tun3; + +static XrmOptionDescRec opts[] = { + {"-texture" , ".texture", XrmoptionNoArg, "true" }, + {"+texture" , ".texture", XrmoptionNoArg, "false" }, + {"-start" , ".start", XrmoptionSepArg, 0 }, + {"-end" , ".end", XrmoptionSepArg, 0 }, + {"-dilate" , ".dilate", XrmoptionSepArg, 0 }, + {"+logo" , ".drawlogo", XrmoptionNoArg, "false" }, + {"-reverse" , ".reverse", XrmoptionNoArg, "true" }, + {"+fog" , ".fog", XrmoptionNoArg, "false" }, + {"-marquee" , ".marquee", XrmoptionSepArg, 0}, + /* {"+marquee" , ".marquee", XrmoptionNoArg, "(none)"}, */ + {"-tardis" , ".tardis", XrmoptionSepArg, 0}, + /* {"+tardis" , ".tardis", XrmoptionNoArg, "(none)"}, */ + {"-head" , ".head", XrmoptionSepArg, 0}, + /* {"+head" , ".head", XrmoptionNoArg, "(none)"}, */ + {"-tun1" , ".tun1", XrmoptionSepArg, 0}, + /* {"+tun1" , ".tun1", XrmoptionNoArg, "(none)"}, */ + {"-tun2" , ".tun2", XrmoptionSepArg, 0}, + /* {"+tun2" , ".tun2", XrmoptionNoArg, "(none)"}, */ + {"-tun3" , ".tun3", XrmoptionSepArg, 0}, + /* {"+tun3" , ".tun3", XrmoptionNoArg, "(none)"}, */ +}; + +static argtype vars[] = { + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&start, "start", "Start", DEF_START, t_Float}, + {&end, "end", "End", DEF_END , t_Float}, + {&dilate, "dilate", "Dilate", DEF_DILATE , t_Float}, + {&drawlogo, "drawlogo", "DrawLogo", DEF_DRAWLOGO , t_Bool}, + {&reverse, "reverse", "Reverse", DEF_REVERSE , t_Bool}, + {&do_fog, "fog", "Fog", DEF_FOG , t_Bool}, + {&do_tx1, "marquee", "Marquee", "(none)", t_String}, + {&do_tx2, "tardis", "Tardis", "(none)", t_String}, + {&do_tx3, "head", "Head", "(none)", t_String}, + {&do_tun1, "tun1", "Tunnel 1", "(none)", t_String}, + {&do_tun2, "tun2", "Tunnel 2", "(none)", t_String}, + {&do_tun3, "tun3", "Tunnel 3", "(none)", t_String}, +}; + +ENTRYPOINT ModeSpecOpt tunnel_opts = {countof(opts), opts, countof(vars), vars, NULL}; +#include "ximage-loader.h" +#include "images/gen/logo-180_png.h" +#include "images/gen/tunnelstar_png.h" +#include "images/gen/timetunnel0_png.h" +#include "images/gen/timetunnel1_png.h" +#include "images/gen/timetunnel2_png.h" + + +#ifdef USE_GL /* whole file */ + +/* ANIMATION CONTROLS */ +/* an effect is a collection of floating point variables that vary with time. +A knot is a timestamp with an array of floats. State is the current values of the floats. +State is set by linearly interpolating between knots */ +typedef struct { + float *knots, *state; + int numknots, knotwidth; + float direction; +} effect_t; + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + int time_oldusec, time_oldsec; + + int num_texshifts; /* animates tunnels. Not an effect. */ + GLfloat pos, *texshift; + + GLuint texture_binds[MAX_TEXTURE], cyllist, diamondlist; + + float effect_time, effect_maxsecs; /* global time controls */ + float start_time, end_time; + + int num_effects; + effect_t *effects; /* array of all effects */ + +} tunnel_configuration; + +static tunnel_configuration *tconf = NULL; + +/* allocate memory and populate effect with knot data */ +static void init_effect(effect_t *e, int numk, int kwidth, + float dir, float *data ) +{ + int i, j; + + e->numknots = numk; + e->knotwidth = kwidth; + e->direction = dir; + e->knots = calloc(numk * kwidth, sizeof(float)); + e->state = calloc(numk, sizeof(float)); + for ( i = 0 ; i < e->numknots ; i++) + for ( j = 0 ; j < e->knotwidth; j++) + e->knots[i * kwidth + j] = data[i * kwidth + j]; +} + +/* static knot data. each effect is listed and knot data is hard coded. + Knots are linerally interpolated to yield float values, depending on + knot width. knot format is [time, data, data, data...]. + Data can be alpha, zvalue, etc. */ +static void init_effects(effect_t *e, int effectnum) +{ + /* effect 1: wall tunnel. percent closed */ + float e1d[6][2] = + {{0.0, 0.055}, + {2.77, 0.055}, + {3.07,1.0}, + {8.08, 1.0}, + {8.08, 0.0}, + {10.0, 0.0}}; + /* effect 2: tardis. distance and alpha */ + float e2d[8][3] = + { {0.0, 0.0 , 0.0}, + {3.44, 0.0 , 0.0}, + {3.36, 5.4 , 0.0}, + {4.24, 3.66, 1.0}, + {6.51, 2.4, 0.94}, + {8.08, 0.75 , 0.0}, + {8.08, 0.0 , 0.0}, + {10.0, 0.0, 0.0}}; + /* effect 3: cylinder. alpha */ + float e3d[5][2] = + {{0.0, 0.0}, + {6.41, 0.00}, + {8.08, 1.0}, + {14.81, 1.0}, + {15.65, 0.0}}; + + /* effect 4: fog. color, density, start, end */ + float e4d[9][5] = + {{0.0 , 1.0, 0.45, 3.0, 15.0}, + {6.40, 1.0, 0.45, 3.0, 14.0}, + {8.08, 1.0, 0.95, 1.0, 14.0}, + {15.17, 1.0, 0.95, 1.0, 6.0}, + {15.51, 1.0, 0.95, 3.0, 8.0}, + {23.35, 1.0, 0.95, 3.0, 8.0}, + {24.02, 0.0, 0.95, 2.3, 5.0}, + {26.02, 0.0, 0.95, 2.3, 5.0}, + {27.72, 0.0, 1.00, 0.3, 0.9} + }; + + /* effect 5: logo. dist, alpha */ + float e5d[7][3] = + {{0.0, 0.0, 0.0}, + {16.52, 0.00, 0.0}, + {16.52, 0.80, 0.01}, + {17.18, 1.15, 1.0}, + {22.36, 5.3, 1.0}, + {22.69, 5.7, 0.0}, + {22.69, 0.0, 0.0} + }; + /* effect 6: diamond tunnel. alpha */ + float e6d[3][2] = + {{0.0, 0.00}, + {15.17, 0.00}, + {15.51,1.0}}; + + /* effect 7: tardis cap draw . positive draws cap*/ + float e7d[3][2] = + {{0.0, -1.00}, + {4.24, -1.00}, + {4.24, 1.00}}; + + /* effect 8: star/asterisk: alpha */ + float e8d[5][2] = + {{0.0, .00}, + {10.77, .00}, + {11.48, 1.00}, + {15.35, 1.00}, + {16.12, 0.00}}; + + /* effect 9: whohead 1 alpha */ + float e9d[5][2] = + {{0.0, .00}, + {13.35, .00}, + {14.48, 1.00}, + {15.17, 1.00}, + {15.97, 0.00}}; + /* {14.87, 1.00}, + {15.17, 0.00}}; */ + + /* effect 10: whohead-brite alpha */ + float e10d[5][2] = + {{0.0, .00}, + {11.34, .00}, + {12.34, .20}, + {13.35, 0.60}, + {14.48, 0.00}}; + /* {13.95, 0.00}}; */ + + /* effect 11: whohead-psy alpha */ + float e11d[5][2] = + {{0.0, .00}, + {14.87, .00}, + {15.17, 1.00}, + {15.91, 0.00}, + {16.12, 0.00}}; + + /* effect 12: whohead-silhouette pos-z, alpha */ + float e12d[6][3] = + {{0.0, 1.0, .00}, + {15.07, 1.0, 0.00}, + {15.07, 1.0, 1.00}, + {16.01, 1.0, 1.00}, + {16.78, 0.5, 1.00}, + {16.78, 0.1, 0.00} }; + + /* effect 1: wall tunnel */ + if (effectnum == 1) + init_effect(e, 6, 2, -0.2, (float *) e1d); + + /* effect 2: tardisl */ + if (effectnum == 2) + init_effect(e, 8, 3, 1.0, (float *) e2d); + + /* effect 3: cylinder tunnel */ + if (effectnum == 3) + init_effect(e, 5, 2, 0.889 , (float *) e3d); + + /* effect 4: fog color */ + if (effectnum == 4) + init_effect(e, 9, 5, 1.0, (float *) e4d); + /* effect 5: logo distance, alpha*/ + if (effectnum == 5) + init_effect(e, 7, 3, 1.0, (float *) e5d); + /* effect 6: diamond tunnel, alpha*/ + if (effectnum == 6) + init_effect(e, 3, 2, 0.24 , (float *) e6d); + + /* effect 7: cap wall tunnel*/ + if (effectnum == 7) + init_effect(e, 3, 2, 1.0, (float *) e7d); + + /* effect 8: asterisk */ + if (effectnum == 8) + init_effect(e, 5, 2, 1.0, (float *) e8d); + + /* effect 9, 10, 11, 12: whoheads */ + if (effectnum == 9 ) + init_effect(e, 5, 2, 1.0, (float *) e9d); + if (effectnum == 10 ) + init_effect(e, 5, 2, 1.0, (float *) e10d); + if (effectnum == 11 ) + init_effect(e, 5, 2, 1.0, (float *) e11d); + if (effectnum == 12 ) + init_effect(e, 6, 3, 1.0, (float *) e12d); +} + + +/* set fog parameters, controlled by effect */ +static void update_fog(float color, float density, float start, float end) +{ + GLfloat col[4]; + + col[0] = col[1] = col[2] = color; + col[3] = 1.0; + + glFogi(GL_FOG_MODE, GL_LINEAR); + glFogfv(GL_FOG_COLOR, col); + glFogf(GL_FOG_DENSITY, density); + glFogf(GL_FOG_START, start); + glFogf(GL_FOG_END, end); +} + +/* set effect's floating point data values by linearally interpolating +between two knots whose times bound the current time: eff_time */ + +static void update_knots(effect_t *e, float eff_time) +{ + int i, j; + float timedelta, lowknot, highknot, *curknot, *nextknot; + + for ( i = 0 ; i < e->numknots ; i++) + if (e->knots[i * e->knotwidth] <= eff_time) { + if ( i < e->numknots - 1) + nextknot = e->knots + (i + 1) * e->knotwidth; + else + /*repeat last knot to carry knot data forward*/ + nextknot = e->knots + (i) * e->knotwidth; + curknot = e->knots + i * e->knotwidth; + if (*nextknot - *curknot <= 0.0) timedelta = 1.0; + else + timedelta = (eff_time-*curknot)/(*nextknot-*curknot); + if (timedelta > 1.0) timedelta = 1.0; + for (j = 1 ; j < e->knotwidth ; j++) { + highknot = (float) *(nextknot + j); + lowknot = (float) *(curknot + j); + e->state[j - 1 ] = lowknot+(highknot-lowknot)*timedelta; + } + } + +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_tunnel (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (90.0, 1/h, 0.2, 50.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 0.3, + 0.0, 0.0, 1.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + + + +ENTRYPOINT Bool +tunnel_handle_event (ModeInfo *mi, XEvent *event) +{ + tunnel_configuration *tc = &tconf[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, tc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &tc->button_down_p)) + return True; + + return False; +} + +static void setTexParams(void) +{ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); +} + +static void update_animation(tunnel_configuration *tc) { + + /* time based, of course*/ + /* shift texture based on elapsed time since previous call*/ + struct timeval tv; + struct timezone tz; + int elapsed_usecs, elapsed_secs, i; + float computed_timeshift; + + /* get new animation time */ + gettimeofday(&tv, &tz); + elapsed_secs = tv.tv_sec - tc->time_oldsec; + elapsed_usecs = tv.tv_usec - tc->time_oldusec; + /* store current time */ + tc->time_oldsec = tv.tv_sec ; + tc->time_oldusec = tv.tv_usec; + /* elaped time. computed timeshift is tenths of a second */ + computed_timeshift = (float) (elapsed_secs * 1000000. + elapsed_usecs)/ + 100000.0; + + /* calibrate effect time to lie between start and end times */ + /* loop if time exceeds end time */ + if (reverse) + tc->effect_time -= computed_timeshift / 10.0 * dilate; + else + tc->effect_time += computed_timeshift / 10.0 * dilate; + if ( tc->effect_time >= tc->end_time) + tc->effect_time = tc->start_time; + if ( tc->effect_time < tc->start_time) + tc->effect_time = tc->end_time;; + + /* move texture shifters in effect's direction, e.g. tardis + tunnel moves backward, effect 1's direction */ + if (reverse) { + tc->texshift[0] -= tc->effects[1].direction * computed_timeshift/ 10.0; + tc->texshift[1] -= tc->effects[3].direction * computed_timeshift/ 10.0; + tc->texshift[2] -= tc->effects[6].direction * computed_timeshift/ 10.0; + + } else { + tc->texshift[0] += tc->effects[1].direction * computed_timeshift/ 10.0; + tc->texshift[1] += tc->effects[3].direction * computed_timeshift/ 10.0; + tc->texshift[2] += tc->effects[6].direction * computed_timeshift/ 10.0; + } + + /* loop texture shifters if necessary */ + for ( i = 0 ; i < tc->num_texshifts; i++) { + if (tc->texshift[i] > 1.0) + tc->texshift[i] -= (int) tc->texshift[i]; + if (tc->texshift[i]< -1.0) + tc->texshift[i] -= (int) tc->texshift[i]; + } + + /* update effect data with current time. Uses linear interpolation */ + for ( i = 1 ; i <= tc->num_effects ; i++) + update_knots(&tc->effects[i], tc->effect_time); + +} /*update_animation*/ + +/* draw a textured(tex) quad at a certain depth (z), and certain alpha (alpha), +with aspect ratio (aspect), and blending mode (blend_mode) of either adding +or subtracting. if alpha is zero or less, nothing happens */ +static void draw_sign(ModeInfo *mi, tunnel_configuration *tc, float z, float alpha, float aspect, + GLuint tex, int blend_mode) +{ + +#ifndef HAVE_JWZGLES + if (alpha > 0.0) { + mi->polygon_count ++; + /* glEnable(GL_BLEND); */ + glBlendColor(0.0, 0.0, 0.0, alpha); + /*glBlendColor(0.0, 0.0, 0.0, 0.0); */ + if (blend_mode == 1) { + glBlendFunc(GL_CONSTANT_ALPHA, + GL_ONE); + glBlendEquation(GL_FUNC_REVERSE_SUBTRACT); + } else if (blend_mode == 2) { + glBlendFunc(GL_CONSTANT_ALPHA, + GL_ONE); + glBlendEquation(GL_FUNC_ADD); + } else { + glBlendFunc(GL_CONSTANT_ALPHA, + GL_ONE_MINUS_CONSTANT_ALPHA); + glBlendEquation(GL_FUNC_ADD); + } /* blend mode switch */ + +#ifdef HAVE_GLBINDTEXTURE + if (do_texture) + glBindTexture(GL_TEXTURE_2D, tc->texture_binds[tex]); +#endif + glBegin(GL_QUADS); + glTexCoord2f(1.0, 0.0); + glVertex3f(-1.0 , -1.0 * aspect , z); + glTexCoord2f(1.0, 1.0); + glVertex3f(-1.0 , 1.0 * aspect , z); + glTexCoord2f(0.0, 1.0); + glVertex3f(1.0 , 1.0 * aspect , z); + glTexCoord2f(0.0, 0.0); + glVertex3f(1.0 , -1.0 * aspect , z); + glEnd(); + if (blend_mode != 0) { + glBlendFunc(GL_CONSTANT_ALPHA, + GL_ONE_MINUS_CONSTANT_ALPHA); + glBlendEquation(GL_FUNC_ADD); + } + /* glDisable(GL_BLEND); */ + + } +#endif /* !HAVE_JWZGLES */ +} /* draw sign */ + + +/* draw a time tunnel. used for both cylinder and diamond tunnels. + uses texture shifter (indexed by shiftnum) to simulate motion. + tunnel does not move, and is acutally a display list. if alpha = 0, skip */ +static void draw_cyl(ModeInfo *mi, tunnel_configuration *tc, float alpha, int texnum, int listnum, int shiftnum) +{ +#ifndef HAVE_JWZGLES + if (alpha > 0.0) { + if (listnum == tc->diamondlist) + mi->polygon_count += 4; + if (listnum == tc->cyllist) + mi->polygon_count += 30; + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glTranslatef(tc->texshift[shiftnum], 0.0, 0.0); + glMatrixMode(GL_MODELVIEW); + /* glEnable(GL_BLEND); */ + glBlendColor(0.0, 0.0, 0.0, alpha); + glBlendFunc(GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA); + +#ifdef HAVE_GLBINDTEXTURE + if (do_texture) + glBindTexture(GL_TEXTURE_2D, tc->texture_binds[texnum]); +#endif + glCallList(listnum); + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + /* glDisable(GL_BLEND); */ + } +#endif /* HAVE_JWZGLES */ +} + + +/* make tardis type tunnel. Starts as walls and then +grows to outline of tardis. percent is how complete +tardis outline is. cap is to draw cap for nice fog effects */ + +static void make_wall_tunnel(ModeInfo *mi, tunnel_configuration *tc, float percent, float cap) +{ + /* tardis is about 2x1, so wrap tex around, starting at the base*/ + /* tex coords are: + + _tl__tr_ + | | +l| |r + | | + -bl__br_ + that's br=bottom right, etc. ttr is top-top-right */ + + float half_floor= 0.08333333333333333, + full_wall = 0.33333333333333333; + float br1, + r0 , r1 , + tr0, tr1, + tl0, tl1, + l0 , l1 , + depth=0.3, zdepth=15.0; + /* zdepth is how far back tunnel goes */ + /* depth is tex coord scale. low number = fast texture shifting */ + + float textop, texbot; + float height; + + br1 = half_floor; + r0 = br1 ; + r1 = r0 + full_wall; + tr0 = r1; + tr1 = r1 + half_floor; + tl0 = tr1; + tl1 = tl0 + half_floor; + l0 = tr1; + l1 = l0 + full_wall; + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glRotatef(90.0, 0.0, 0.0, 1.0); + glTranslatef(tc->texshift[0], 0.0, 0.0); + glMatrixMode(GL_MODELVIEW); + +#ifdef HAVE_GLBINDTEXTURE + if (do_texture) + glBindTexture(GL_TEXTURE_2D, tc->texture_binds[0]); +#endif + glColor3f(1.0, 1.0, 0.0); + if (cap > 0.0 && percent > 0.0 && drawlogo && do_fog) { + mi->polygon_count += 6; + glBegin(GL_TRIANGLE_FAN); + glVertex3f(0.0, 0.0, zdepth); + glVertex3f(-1.0, -2.0, zdepth); + glVertex3f(1.0, -2.0, zdepth); + glVertex3f(1.0, 2.0, zdepth); + glVertex3f(0.2, 2.0, zdepth); + glVertex3f(0.2, 2.2, zdepth); + glVertex3f(-0.2, 2.2, zdepth); + glVertex3f(-0.2, 2.0, zdepth); + glVertex3f(-1.0, 2.0, zdepth); + glVertex3f(-1.0, -2.0, zdepth); + glEnd(); + } + if (percent > ( full_wall * 2.0)) { + glBegin(GL_QUADS); + + height = (percent - full_wall * 2.0) /( 1.0 - full_wall * 2.0); + if (height > 1.0) height = 1.0; + + + if ( height > 0.8) { + mi->polygon_count += 2; + if ( height > 0.90) { + mi->polygon_count += 2; + /* TTTR */ + texbot = tr0; + textop = tr0 + half_floor * height; + glTexCoord2f(0.0, texbot); + glVertex3f(0.2, 2.2, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(2.0 - height * 2.0, 2.2, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(2.0 - height * 2.0, 2.2, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(0.2, 2.2, zdepth); + + /* TTTL */ + texbot = tl1 - half_floor * height; + textop = tl1; + glTexCoord2f(0.0, texbot); + glVertex3f(-2.0 + height * 2.0, 2.2, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(-0.2, 2.2, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(-0.2, 2.2, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(-2.0 + height * 2.0, 2.2, zdepth); + } + if (height > 0.90) height = 0.90; + + /* TTR */ + texbot = tr0; + textop = tr0 + half_floor * height; + glTexCoord2f(0.0, texbot); + glVertex3f(0.2, 2.0, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(0.2, 0.4 + height * 2.0, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(0.2, 0.4 + height * 2.0, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(0.2, 2.0, zdepth); + + /* TTL */ + texbot = tl1 - half_floor * height; + textop = tl1; + glTexCoord2f(0.0, texbot); + /*glVertex3f(-.2, 2.0 + (0.9 - height) * 2.0, 0.0); */ + glVertex3f(-.2, 0.4 + height * 2.0, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(-.2, 2.0, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(-.2, 2.0, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(-.2, 0.4 + height * 2.0, zdepth); + } + + height = (percent - full_wall * 2.0) /( 1.0 - full_wall * 2.0); + if (height > 0.8) height = 0.8; + + + mi->polygon_count += 2; + /* TR */ + texbot = tr0; + textop = tr0 + half_floor * height; + glTexCoord2f(0.0, texbot); + glVertex3f(1.0, 2.0, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(1.0 - height, 2.0, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(1.0 - height, 2.0, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(1.0, 2.0, zdepth); + + /* TL */ + texbot = tl1 - half_floor * height; + textop = tl1; + glTexCoord2f(0.0, texbot); + glVertex3f(-1.0 + height, 2.0, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(-1.0, 2.0, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(-1.0, 2.0, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(-1.0 + height, 2.0, zdepth); + + height = (percent - full_wall * 2.0) /( 1.0 - full_wall * 2.0); + + if (height > 1.0) height = 1.0; + + + mi->polygon_count += 2; + /* BR */ + texbot = tr0; + textop = tr0 + half_floor * height; + glTexCoord2f(0.0, texbot); + glVertex3f(1.0, -2.0, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(1.0 - height, -2.0, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(1.0 - height, -2.0, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(1.0, -2.0, zdepth); + + /* BL */ + texbot = tl1 - half_floor * height; + textop = tl1; + glTexCoord2f(0.0, texbot); + glVertex3f(-1.0 + height, -2.0, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(-1.0, -2.0, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(-1.0, -2.0, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(-1.0 + height, -2.0, zdepth); + + + glEnd(); + } + + if (percent > 0.0) { + mi->polygon_count += 2; + glBegin(GL_QUADS); + height = percent / ( full_wall * 2.0); + if (height > 1.0) height = 1.0; + textop = (l0 + l1) / 2.0 - full_wall * 0.5 * height; + texbot = (l0 + l1) / 2.0 + full_wall * 0.5 * height; + + glTexCoord2f(0.0, textop); + glVertex3f(-1.0, height * 2, 0.0); + + glTexCoord2f(0.0, texbot); + glVertex3f(-1.0, -height * 2, 0.0); + + glTexCoord2f(depth, texbot); + glVertex3f(-1.0, -height * 2, zdepth); + + glTexCoord2f(depth, textop); + glVertex3f(-1.0, height * 2, zdepth); + + textop = (r0 + r1) / 2.0 - full_wall * 0.5 * height; + texbot = (r0 + r1) / 2.0 + full_wall * 0.5 * height; + + glTexCoord2f(0.0, texbot); + glVertex3f(1.0, height * 2, 0.0); + + glTexCoord2f(0.0, textop); + glVertex3f(1.0, -height * 2, 0.0); + + glTexCoord2f(depth, textop); + glVertex3f(1.0, -height * 2, zdepth); + + glTexCoord2f(depth, texbot); + glVertex3f(1.0, height * 2, zdepth); + glEnd(); + } + + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); +} /* make_wall_tunnel */ + +/* wraps an int to between min and max. + Kind of like the remainder when devided by (max - min). + Used to create torus mapping on square array */ +static int wrapVal(int val, int min, int max) +{ + int ret; + + ret = val; + if (val >= max) + ret = min + (val - max ) % (max - min); + if (val < min) + ret = max - (min - val) % (max - min); + return(ret); +} + +/*=================== Load Texture =========================================*/ +/* ripped from atunnel.c, Copyright (c) E. Lassauge, 2003-2004. */ +/* modified like so by Sean Brennan: + take texture object for glbind + removed xlock stuff + Added filters: + blur color / alpha channel [3x3 box filter, done [blur] times + anegative : create b/w image from zero alpha. zero alpha gets bw_color, + nonzero alpha gets 1.0 - bwcolor, then alpha flipped to 1-alpha. + + Inputs: xpm structure, or filename of xmp image. if filename == NULL, use structure. + Outputs: texture bound to texutre Id texbind. + +*/ + +static float mylog2(float x) { return ( log(x) / log(2));} + +static void LoadTexture(ModeInfo * mi, const unsigned char *fn, unsigned long size, const char *filename, GLuint texbind, int blur, float bw_color, Bool anegative, Bool onealpha) +{ + /* looping and temporary array index variables */ + int ix, iy, bx, by, indx, indy, boxsize, cchan, tmpidx, dtaidx; + + float boxdiv, tmpfa, blursum ; + unsigned char *tmpbuf, tmpa; + Bool rescale; + + + XImage *teximage; /* Texture data */ + + rescale = False; + + boxsize = 2; + boxdiv = 1.0 / ( boxsize * 2.0 + 1.0) / ( boxsize * 2.0 + 1.0); + + + if (filename) + teximage = file_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi), + filename); + else + teximage = image_data_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi), + fn, size); + if (teximage == NULL) { + fprintf(stderr, "%s: error reading the texture.\n", progname); + glDeleteTextures(1, &texbind); + do_texture = False; + exit(0); + } + + /* check if image is 2^kumquat, where kumquat is an integer between 1 and 10. Recale to + nearest power of 2. */ + tmpfa = mylog2((float) teximage->width); + bx = 2 << (int) (tmpfa -1); + if (bx != teximage->width) { + rescale = True; + if ((tmpfa - (int) tmpfa) > 0.5849) + bx = bx * 2; + } + tmpfa = mylog2((float) teximage->height); + by = 2 << (int) (tmpfa - 1); + if (by != teximage->height) { + rescale = True; + if ((tmpfa - (int) tmpfa) > 0.5849) + by = by * 2; + } + + if (rescale) { +#ifndef HAVE_JWZGLES + tmpbuf = calloc(bx * by * 4, sizeof(unsigned char)); + if (gluScaleImage(GL_RGBA, teximage->width, teximage->height, GL_UNSIGNED_BYTE, teximage->data, + bx, by, GL_UNSIGNED_BYTE, tmpbuf)) + check_gl_error("scale image"); + + free(teximage->data); + teximage->data = (char *) tmpbuf; + teximage->width = bx; + teximage->height= by; +#endif /* !HAVE_JWZGLES */ + } + /* end rescale code */ + + if (anegative ) { + for (ix = 0 ; ix < teximage->height * teximage->width; ix++) + { + if (!teximage->data[ ix * 4 + 3]) { + teximage->data[ ix * 4 + 3] = (unsigned char) 0xff; + tmpa = (unsigned char) (bw_color * 0xff); + } else { + if (onealpha) + teximage->data[ ix * 4 + 3] = (unsigned char) 0xff; + else + teximage->data[ ix * 4 + 3] = (unsigned char) 0xff - + teximage->data[ ix * 4 + 3]; + tmpa = (unsigned char) ((1.0 - bw_color) * 0xff); + } + /* make texture uniform b/w color */ + teximage->data[ ix * 4 + 0] = + (unsigned char) ( tmpa); + teximage->data[ ix * 4 + 1] = + (unsigned char) ( tmpa); + teximage->data[ ix * 4 + 2] = + (unsigned char) ( tmpa); + /* negate alpha */ + } + } + + if (blur > 0) { + if (! anegative ) /* anegative alread b/w's the whole image */ + for (ix = 0 ; ix < teximage->height * teximage->width; ix++) + if (!teximage->data[ ix * 4 + 3]) + { + teximage->data[ ix * 4 + 0] = + (unsigned char) ( 255.0 * bw_color); + teximage->data[ ix * 4 + 1] = + (unsigned char) ( 255.0 * bw_color); + teximage->data[ ix * 4 + 2] = + (unsigned char) ( 255.0 * bw_color); + } + ; + tmpbuf = calloc(teximage->height * teximage->width * 4, sizeof(unsigned char) ) ; + while (blur--) { + /* zero out tmp alpha buffer */ + for (iy = 0 ; iy height * teximage->width * 4 ; iy++) + tmpbuf[iy] = 0; + for (cchan = 0; cchan < 4 ; cchan++) { + for (iy = 0 ; iy < teximage->height ; iy++) { + for (ix = 0 ; ix < teximage->width ; ix++) { + dtaidx = (teximage->width * iy + ix) * 4; + tmpa = teximage->data[dtaidx + cchan]; + tmpfa = (float) tmpa * boxdiv; + /* box filter */ + for (by = -boxsize ; by <= boxsize; by++) { + for (bx = -boxsize ; bx <= boxsize; bx++) { + indx = wrapVal(ix + bx, 0, teximage->width); + indy = wrapVal(iy + by, 0, teximage->height); + tmpidx = (teximage->width * indy + indx) * 4; + blursum = tmpfa; + tmpbuf[tmpidx + cchan] += (unsigned char) blursum; + } /* for bx */ + } /* for by */ + } /* for ix */ + } /* for iy */ + } /* for cchan */ + /* copy back buffer */ + for (ix = 0 ; ix < teximage->height * teximage->width * 4; ix++) + teximage->data[ix] = tmpbuf[ix]; + } /*while blur */ + free(tmpbuf); /*tidy*/ + } /* if blur */ + + + + + clear_gl_error(); +#ifdef HAVE_GLBINDTEXTURE + glBindTexture(GL_TEXTURE_2D, texbind); + clear_gl_error(); /* WTF? sometimes "invalid op" from glBindTexture! */ +#endif + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, teximage->width, teximage->height, + 0, GL_RGBA, GL_UNSIGNED_BYTE, teximage->data); + check_gl_error("texture"); + setTexParams(); + XDestroyImage(teximage); +} + +/* creates cylinder for time tunnel. sides, zmin, zmax, rad(ius) obvious. + stretch scales texture coords; makes tunnel go slower the larger it is. + not drawn, but put into display list. */ +static void makecyl(int sides, float zmin, float zmax, float rad, float stretch) +{ + int i; + float theta; + + /* cap */ + if (do_fog) { + glBegin(GL_TRIANGLE_FAN); + glTexCoord2f(1.0, 0.0); + glVertex3f(0.0 , 0.0 , zmax); + for (i = 0 ; i <= sides; i++) { + theta = 2.0 * M_PI * ((float) i / (float) sides); + glVertex3f(cos(theta) * rad, sin(theta) * rad, zmax); + } + glVertex3f(cos(0.0) * rad, sin(0.0) * rad, zmax); + glEnd(); + } + + glBegin(GL_QUAD_STRIP); + for (i = 0 ; i <= sides; i++) + { + if ( i != sides) { + theta = 2.0 * M_PI * ((float) i / (float) sides); + glTexCoord2f(0.0, 1.0 * (float) i / (float) sides); + glVertex3f(cos(theta) * rad, sin(theta) * rad, zmin); + glTexCoord2f(stretch, 1.0 * (float) i / (float) sides); + glVertex3f(cos(theta) * rad, sin(theta) * rad, zmax); + } else { + theta = 0.0; + glTexCoord2f(0.0, 1.0); + glVertex3f(cos(theta) * rad, sin(theta) * rad, zmin); + glTexCoord2f(stretch, 1.0); + glVertex3f(cos(theta) * rad, sin(theta) * rad, zmax); + } + } + glEnd(); +} + +ENTRYPOINT void +init_tunnel (ModeInfo *mi) +{ + int i; + + tunnel_configuration *tc; + + wire = MI_IS_WIREFRAME(mi); + +# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ + wire = 0; +# endif + + MI_INIT (mi, tconf); + + tc = &tconf[MI_SCREEN(mi)]; + + tc->glx_context = init_GL(mi); + + tc->cyllist = glGenLists(1); + tc->diamondlist = glGenLists(1); + tc->num_effects = 12; + tc->num_texshifts = 3; + tc->effect_time = 0.0; + tc->effect_maxsecs = 30.00; + /* check bounds on cmd line opts */ + if (start > tc->effect_maxsecs) start = tc->effect_maxsecs; + if (end > tc->effect_maxsecs) end = tc->effect_maxsecs; + if (start < tc->effect_time) start = tc->effect_time; + if (end < tc->effect_time) end = tc->effect_time; + + /* set loop times, in seconds */ + tc->start_time = start; + tc->end_time = end; + + /* reset animation knots, effect 0 not defined. */ + tc->effects = malloc(sizeof(effect_t) * ( tc->num_effects + 1)); + for ( i = 1; i <= tc->num_effects ; i++) + init_effects(&tc->effects[i], i); + + if (wire) { + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + do_texture = False; + } + + if (do_texture) + { + /* the following textures are loaded, and possible overridden: + tunnel 1, tunnel 2, tunnel 3, marquee, tardis, head */ + glGenTextures(MAX_TEXTURE, tc->texture_binds); + + /*LoadTexture(*mi, *data, size, *filename, texbind, bluralpha, bw_color, anegative, onealpha)*/ + if (strcasecmp (do_tun1, "(none)")) /* tunnel 1 */ + LoadTexture(mi, NULL, 0, do_tun1, tc->texture_binds[0], 0,0.0, False, False); + else + LoadTexture(mi, timetunnel0_png, sizeof(timetunnel0_png), NULL, tc->texture_binds[0], 0, 0.0, False, False); + if (strcasecmp (do_tun2, "(none)")) /* tunnel 2 */ + LoadTexture(mi, NULL, 0, do_tun2, tc->texture_binds[2], 0,0.0, False, False); + else + LoadTexture(mi, timetunnel1_png, sizeof(timetunnel1_png), NULL, tc->texture_binds[2], 0, 0.0, False, False); + if (strcasecmp (do_tun3, "(none)")) /* tunnel 3 */ + LoadTexture(mi, NULL, 0, do_tun3, tc->texture_binds[5], 0,0.0, False, False); + else + LoadTexture(mi, timetunnel2_png, sizeof(timetunnel2_png), NULL, tc->texture_binds[5], 0, 0.0, False, False); + LoadTexture(mi, tunnelstar_png, sizeof(tunnelstar_png), NULL, tc->texture_binds[4], 0, 0.0, False, False); + if (strcasecmp (do_tx1, "(none)")) /* marquee */ + LoadTexture(mi, NULL, 0, do_tx1, tc->texture_binds[3], 0,0.0, False, False); +#ifndef HAVE_JWZGLES /* logo_180_png is 180px which is not a power of 2! */ + else + LoadTexture(mi, logo_180_png, sizeof(logo_180_png), NULL, tc->texture_binds[3], 0,0.0, False, False); +#endif + if (strcasecmp (do_tx2, "(none)")) /* tardis */ + LoadTexture(mi, NULL, 0, do_tx2, tc->texture_binds[1], 0, 0.0 ,False, False); +#ifndef HAVE_JWZGLES /* logo_180_png is 180px which is not a power of 2! */ + else + LoadTexture(mi, logo_180_png, sizeof(logo_180_png), NULL, tc->texture_binds[1], 0,0.0, False, False); +#endif + if (strcasecmp (do_tx3, "(none)")) { /* head */ + LoadTexture(mi, NULL, 0, do_tx3, tc->texture_binds[6], 0, 0.0 ,False, False); + /* negative */ + LoadTexture(mi, NULL, 0, do_tx3, tc->texture_binds[9], 2,1.0, True, True); +#ifndef HAVE_JWZGLES /* logo_180_png is 180px which is not a power of 2! */ + } else { + LoadTexture(mi, logo_180_png, sizeof(logo_180_png), NULL, tc->texture_binds[6], 0,0.0, False, False); + /* negative */ + LoadTexture(mi, logo_180_png, sizeof(logo_180_png), NULL, tc->texture_binds[9], 2,1.0, True, True); +#endif + } + glEnable(GL_TEXTURE_2D); + check_gl_error("tex"); + } + + reshape_tunnel (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glDisable(GL_DEPTH_TEST); /* who needs it? ;-) */ + + if (do_fog) + glEnable(GL_FOG); + + if (!wire) + { + glEnable(GL_ALPHA_TEST); + glAlphaFunc(GL_GREATER, 0.5); + } + + tc->trackball = gltrackball_init (True); + + + tc->texshift = calloc(tc->num_texshifts, sizeof(GLfloat)); + for ( i = 0 ; i < tc->num_texshifts; i++) + tc->texshift[i] = 0.0; + + glNewList(tc->cyllist, GL_COMPILE); + makecyl(30, -0.1, CYL_LEN, 1., 10. / 40.0 * CYL_LEN); + /*makecyl(30, -0.5, DIAMOND_LEN, 1., 4. / 40 * DIAMOND_LEN); */ + glEndList(); + + glNewList(tc->diamondlist, GL_COMPILE); + makecyl(4, -0.5, DIAMOND_LEN, 1., 4. / 40 * DIAMOND_LEN); + glEndList(); +} + + +ENTRYPOINT void +draw_tunnel (ModeInfo *mi) +{ + tunnel_configuration *tc = &tconf[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + + if (!tc->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tc->glx_context)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_NORMALIZE); + /* glEnable(GL_CULL_FACE); */ + + glClear(GL_COLOR_BUFFER_BIT ); + + update_animation(tc); + + + glPushMatrix (); + + glRotatef(180., 0., 1., 0.); + gltrackball_rotate (tc->trackball); + glRotatef(180., 0., 1., 0.); + + + + mi->polygon_count = 0; + + update_fog(tc->effects[4].state[0], /*color*/ + tc->effects[4].state[1], /*density*/ + tc->effects[4].state[2], /*start*/ + tc->effects[4].state[3]); /*end*/ + + /* --- begin composite image assembly --- */ + + /* head mask and draw diamond tunnel */ + + glEnable(GL_BLEND); + draw_cyl(mi, tc, tc->effects[6].state[0], 5, tc->diamondlist, 2); + if (drawlogo) + draw_sign(mi, tc,tc->effects[12].state[0], tc->effects[12].state[1], 1.0 / 1.33, 9, 1); + glDisable(GL_BLEND); + /* then tardis tunnel */ + make_wall_tunnel(mi, tc, tc->effects[1].state[0], tc->effects[7].state[0]); + + /* then cylinder tunnel */ + glEnable(GL_BLEND); + draw_cyl(mi, tc, tc->effects[3].state[0], 2, tc->cyllist, 1); + + /*void draw_sign(mi, tc,z,alpha,aspect,tex,blendmode)*/ + /* tardis */ + if (drawlogo) + draw_sign(mi, tc, tc->effects[2].state[0], tc->effects[2].state[1], 2.0, 1, 0); + /* marquee */ + if (drawlogo) + draw_sign(mi, tc, tc->effects[5].state[0], tc->effects[5].state[1], 1.0, 3, 0); + /*who head brite*/ + if (drawlogo) + draw_sign(mi, tc,1.0, tc->effects[10].state[0], 1.0 / 1.33, 6, 2); + /*who head psychadelic REMOVED*/ + /* draw_sign(mi, tc,1.0, tc->effects[11].state[0], 1.0 / 1.33, 8, 0); */ + + /* star */ + /* draw_sign(mi, tc, tc->effects[8].state[0]tc->effects[8].state[0], 1.0 , 1.0, 4, 1); */ + draw_sign(mi, tc, tc->effects[8].state[0], tc->effects[8].state[0], 1.0, 4, 1); + + /* normal head */ + if (drawlogo) + draw_sign(mi, tc,1.0, tc->effects[9].state[0], 1.0 / 1.33, 6, 0); + + /* --- end composite image assembly --- */ + + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + check_gl_error("drawing done, calling swap buffers"); + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("TimeTunnel", timetunnel, tunnel) + +#endif /* USE_GL */ diff --git a/hacks/glx/timetunnel.man b/hacks/glx/timetunnel.man new file mode 100644 index 0000000..cdd6af5 --- /dev/null +++ b/hacks/glx/timetunnel.man @@ -0,0 +1,105 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +timetunnel - Plasma tunnels fade in and out +.SH SYNOPSIS +.B timetunnel +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-start \fInumber\fP] +[\-end \fInumber\fP] +[\-dilate \fInumber\fP] +[\-no-logo] +[\-reverse] +[\-no-fog] +[\-no-texture] +[\-wireframe] +[\-fps] +[\-tardis \fItexture\fP] +[\-head \fItexture\fP] +[\-marquee \fItexture\fP] +[\-tun1 \fItexture\fP] +[\-tun2 \fItexture\fP] +[\-tun3 \fItexture\fP] +.SH DESCRIPTION +Draws an animation similar to the opening and closing effects on the +Dr. Who television show. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-start \fInumber\fP +Start time of loop, 0.0 - 30.00. Default 0.0. May be identical to end time. +.TP 8 +.B \-end \fInumber\fP +End time of loop, 0.0 - 30.00. Default 27.79. May be identical to start time. +.TP 8 +.B \-dilate \fInumber\fP +Scale time to speed or slow simulation. Numbers less than one slow it down. +.TP 8 +.B \-no-logo +Show only tunnels, no logos, etc. +.TP 8 +.B \-reverse +Play in reverse, including tunnels. +.TP 8 +.B \-no-fog +Turn off fog. +.TP 8 +.B \-no-texture +Turn off textures. +.TP 8 +.B \-wireframe +Show as wire frame. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.TP 8 +.B \-tardis \fItexture\fP +Specify an xpm file to override default tardis texture. +.TP 8 +.B \-head \fItexture\fP +Specify an xpm file to override default Dr. Who head texture. +.TP 8 +.B \-marquee \fItexture\fP +Specify an xpm file to override default show marquee texture. +.TP 8 +.B \-tun1 \fItexture\fP +Specify an xpm file to override default tardis tunnel texture. +.TP 8 +.B \-tun2 \fItexture\fP +Specify an xpm file to override default middle tunnel texture. +.TP 8 +.B \-tun3 \fItexture\fP +Specify an xpm file to override default final tunnel texture. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2005 by Sean Brennan. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Sean Brennan diff --git a/hacks/glx/toast.c b/hacks/glx/toast.c new file mode 100644 index 0000000..eb84601 --- /dev/null +++ b/hacks/glx/toast.c @@ -0,0 +1,190 @@ +/* Generated from "toast.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toast_data[] = { + 0,-1,0,0.391859,-0.5,0.047937, + 0,-1,0,-0.3866,-0.5,-0.047937, + 0,-1,0,0.391859,-0.5,-0.047937, + 0,-1,0,-0.3866,-0.5,-0.047937, + 0,-1,0,0.391859,-0.5,0.047937, + 0,-1,0,-0.3866,-0.5,0.047937, + 0.794299,-0.607527,0,0.448134,-0.426425,-0.047937, + 0.794299,-0.607527,0,0.391859,-0.5,0.047937, + 0.794299,-0.607527,0,0.391859,-0.5,-0.047937, + 0.794299,-0.607527,0,0.391859,-0.5,0.047937, + 0.794299,-0.607527,0,0.448134,-0.426425,-0.047937, + 0.794299,-0.607527,0,0.448134,-0.426425,0.047937, + 1,0,0,0.448134,0.061584,-0.047937, + 1,0,0,0.448134,-0.426425,0.047937, + 1,0,0,0.448134,-0.426425,-0.047937, + 1,0,0,0.448134,-0.426425,0.047937, + 1,0,0,0.448134,0.061584,-0.047937, + 1,0,0,0.448134,0.061584,0.047937, + -0.951883,0.306462,0,-0.3866,0.438467,0.047937, + -0.978441,0.206528,0,-0.448134,0.247342,-0.047937, + -0.994654,0.103264,0,-0.448134,0.247342,0.047937, + -0.978441,0.206528,0,-0.448134,0.247342,-0.047937, + -0.951883,0.306462,0,-0.3866,0.438467,0.047937, + -0.951883,0.306462,0,-0.3866,0.438467,-0.047937, + -0.994654,0.103264,0,-0.448134,0.247342,0.047937, + -1,0,0,-0.448134,0.184705,-0.047937, + -1,0,0,-0.448134,0.184705,0.047937, + -1,0,0,-0.448134,0.184705,-0.047937, + -0.994654,0.103264,0,-0.448134,0.247342,0.047937, + -0.978441,0.206528,0,-0.448134,0.247342,-0.047937, + -0.306512,0.951867,0,-0.3866,0.438467,0.047937, + -0.206563,0.978433,0,-0.195512,0.5,-0.047937, + -0.306512,0.951867,0,-0.3866,0.438467,-0.047937, + -0.206563,0.978433,0,-0.195512,0.5,-0.047937, + -0.306512,0.951867,0,-0.3866,0.438467,0.047937, + -0.103281,0.994652,0,-0.195512,0.5,0.047937, + 0.994378,0.105891,0,0.448134,0.247342,-0.047937, + 1,0,0,0.448134,0.184705,0.047937, + 1,0,0,0.448134,0.184705,-0.047937, + 1,0,0,0.448134,0.184705,0.047937, + 0.994378,0.105891,0,0.448134,0.247342,-0.047937, + 0.977317,0.211783,0,0.448134,0.247342,0.047937, + 0.949396,0.314082,0,0.384905,0.438467,-0.047937, + 0.977317,0.211783,0,0.448134,0.247342,0.047937, + 0.994378,0.105891,0,0.448134,0.247342,-0.047937, + 0.977317,0.211783,0,0.448134,0.247342,0.047937, + 0.949396,0.314082,0,0.384905,0.438467,-0.047937, + 0.949396,0.314082,0,0.384905,0.438467,0.047937, + 0,0,-1,-0.3866,0.438467,-0.047937, + 0,0,-1,-0.448134,0.184705,-0.047937, + 0,0,-1,-0.448134,0.247342,-0.047937, + 0,0,-1,-0.448134,0.184705,-0.047937, + 0,0,-1,-0.3866,0.438467,-0.047937, + 0,0,-1,-0.394142,0.122068,-0.047937, + 0,0,-1,0.448134,0.247342,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.384905,0.438467,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.448134,0.247342,-0.047937, + 0,0,-1,0.448134,0.184705,-0.047937, + 0,0,-1,-0.394142,0.122068,-0.047937, + 0,0,-1,-0.448134,-0.426425,-0.047937, + 0,0,-1,-0.448134,0.061584,-0.047937, + 0,0,-1,-0.448134,-0.426425,-0.047937, + 0,0,-1,-0.394142,0.122068,-0.047937, + 0,0,-1,-0.3866,-0.5,-0.047937, + 0,0,-1,-0.3866,-0.5,-0.047937, + 0,0,-1,-0.394142,0.122068,-0.047937, + 0,0,-1,-0.3866,0.438467,-0.047937, + 0,0,-1,-0.3866,-0.5,-0.047937, + 0,0,-1,-0.3866,0.438467,-0.047937, + 0,0,-1,-0.195512,0.5,-0.047937, + 0,0,-1,-0.3866,-0.5,-0.047937, + 0,0,-1,-0.195512,0.5,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,-0.195512,0.5,-0.047937, + 0,0,-1,0.193226,0.5,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.193226,0.5,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.193226,0.5,-0.047937, + 0,0,-1,0.384905,0.438467,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.448134,0.061584,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.448134,0.061584,-0.047937, + 0,0,-1,0.448134,-0.426425,-0.047937, + 0.205973,0.978558,0,0.193226,0.5,0.047937, + 0.305656,0.952142,0,0.384905,0.438467,-0.047937, + 0.102986,0.994683,0,0.193226,0.5,-0.047937, + 0.305656,0.952142,0,0.384905,0.438467,-0.047937, + 0.205973,0.978558,0,0.193226,0.5,0.047937, + 0.305656,0.952142,0,0.384905,0.438467,0.047937, + -0.103281,0.994652,0,-0.195512,0.5,0.047937, + 0.102986,0.994683,0,0.193226,0.5,-0.047937, + -0.206563,0.978433,0,-0.195512,0.5,-0.047937, + 0.102986,0.994683,0,0.193226,0.5,-0.047937, + -0.103281,0.994652,0,-0.195512,0.5,0.047937, + 0.205973,0.978558,0,0.193226,0.5,0.047937, + 0.691249,0.722617,0,0.384905,0.122068,0.047937, + 0.691249,0.722617,0,0.448134,0.061584,-0.047937, + 0.691249,0.722617,0,0.384905,0.122068,-0.047937, + 0.691249,0.722617,0,0.448134,0.061584,-0.047937, + 0.691249,0.722617,0,0.384905,0.122068,0.047937, + 0.691249,0.722617,0,0.448134,0.061584,0.047937, + -1,0,0,-0.448134,0.061584,0.047937, + -1,0,0,-0.448134,-0.426425,-0.047937, + -1,0,0,-0.448134,-0.426425,0.047937, + -1,0,0,-0.448134,-0.426425,-0.047937, + -1,0,0,-0.448134,0.061584,0.047937, + -1,0,0,-0.448134,0.061584,-0.047937, + -0.767086,-0.641544,0,-0.448134,-0.426425,0.047937, + -0.767086,-0.641544,0,-0.3866,-0.5,-0.047937, + -0.767086,-0.641544,0,-0.3866,-0.5,0.047937, + -0.767086,-0.641544,0,-0.3866,-0.5,-0.047937, + -0.767086,-0.641544,0,-0.448134,-0.426425,0.047937, + -0.767086,-0.641544,0,-0.448134,-0.426425,-0.047937, + 0.703773,-0.710425,0,0.448134,0.184705,0.047937, + 0.703773,-0.710425,0,0.384905,0.122068,-0.047937, + 0.703773,-0.710425,0,0.448134,0.184705,-0.047937, + 0.703773,-0.710425,0,0.384905,0.122068,-0.047937, + 0.703773,-0.710425,0,0.448134,0.184705,0.047937, + 0.703773,-0.710425,0,0.384905,0.122068,0.047937, + -0.746008,0.665937,0,-0.394142,0.122068,0.047937, + -0.746008,0.665937,0,-0.448134,0.061584,-0.047937, + -0.746008,0.665937,0,-0.448134,0.061584,0.047937, + -0.746008,0.665937,0,-0.448134,0.061584,-0.047937, + -0.746008,0.665937,0,-0.394142,0.122068,0.047937, + -0.746008,0.665937,0,-0.394142,0.122068,-0.047937, + -0.757441,-0.652904,0,-0.448134,0.184705,0.047937, + -0.757441,-0.652904,0,-0.394142,0.122068,-0.047937, + -0.757441,-0.652904,0,-0.394142,0.122068,0.047937, + -0.757441,-0.652904,0,-0.394142,0.122068,-0.047937, + -0.757441,-0.652904,0,-0.448134,0.184705,0.047937, + -0.757441,-0.652904,0,-0.448134,0.184705,-0.047937, + 0,0,1,-0.3866,-0.5,0.047937, + 0,0,1,-0.448134,0.061584,0.047937, + 0,0,1,-0.448134,-0.426425,0.047937, + 0,0,1,-0.448134,0.061584,0.047937, + 0,0,1,-0.3866,-0.5,0.047937, + 0,0,1,-0.394142,0.122068,0.047937, + 0,0,1,-0.394142,0.122068,0.047937, + 0,0,1,-0.448134,0.247342,0.047937, + 0,0,1,-0.448134,0.184705,0.047937, + 0,0,1,-0.448134,0.247342,0.047937, + 0,0,1,-0.394142,0.122068,0.047937, + 0,0,1,-0.3866,0.438467,0.047937, + 0,0,1,-0.3866,0.438467,0.047937, + 0,0,1,-0.394142,0.122068,0.047937, + 0,0,1,-0.3866,-0.5,0.047937, + 0,0,1,-0.3866,0.438467,0.047937, + 0,0,1,-0.3866,-0.5,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,-0.3866,0.438467,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,-0.195512,0.5,0.047937, + 0,0,1,-0.195512,0.5,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.193226,0.5,0.047937, + 0,0,1,0.193226,0.5,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.193226,0.5,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.384905,0.438467,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.448134,0.061584,0.047937, + 0,0,1,0.448134,0.061584,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.448134,-0.426425,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.448134,0.247342,0.047937, + 0,0,1,0.384905,0.438467,0.047937, + 0,0,1,0.448134,0.247342,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.448134,0.184705,0.047937 +}; +static const struct gllist toast_frame = { GL_N3F_V3F, GL_TRIANGLES, 180, toast_data, 0 }; +const struct gllist *toast = &toast_frame; diff --git a/hacks/glx/toast.dxf b/hacks/glx/toast.dxf new file mode 100644 index 0000000..dbee027 --- /dev/null +++ b/hacks/glx/toast.dxf @@ -0,0 +1,1814 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +37.623432 +11 +-303.422838 +21 +-392.424732 +31 +-37.623432 +12 +307.550490 +22 +-392.424732 +32 +-37.623432 +13 +307.550490 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +-37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +-303.422838 +22 +-392.424732 +32 +37.623432 +13 +-303.422838 +23 +-392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +-334.679514 +30 +-37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +307.550490 +22 +-392.424732 +32 +-37.623432 +13 +307.550490 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +37.623432 +11 +351.717412 +21 +-334.679514 +31 +-37.623432 +12 +351.717412 +22 +-334.679514 +32 +37.623432 +13 +351.717412 +23 +-334.679514 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +48.334405 +30 +-37.623432 +11 +351.717412 +21 +-334.679514 +31 +37.623432 +12 +351.717412 +22 +-334.679514 +32 +-37.623432 +13 +351.717412 +23 +-334.679514 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +-334.679514 +30 +37.623432 +11 +351.717412 +21 +48.334405 +31 +-37.623432 +12 +351.717412 +22 +48.334405 +32 +37.623432 +13 +351.717412 +23 +48.334405 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +344.130963 +30 +37.623432 +11 +-351.717412 +21 +194.126040 +31 +-37.623432 +12 +-351.717412 +22 +194.126040 +32 +37.623432 +13 +-351.717412 +23 +194.126040 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +194.126040 +30 +-37.623432 +11 +-303.422838 +21 +344.130963 +31 +37.623432 +12 +-303.422838 +22 +344.130963 +32 +-37.623432 +13 +-303.422838 +23 +344.130963 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +194.126040 +30 +37.623432 +11 +-351.717412 +21 +144.965619 +31 +-37.623432 +12 +-351.717412 +22 +144.965619 +32 +37.623432 +13 +-351.717412 +23 +144.965619 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +144.965619 +30 +-37.623432 +11 +-351.717412 +21 +194.126040 +31 +37.623432 +12 +-351.717412 +22 +194.126040 +32 +-37.623432 +13 +-351.717412 +23 +194.126040 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +344.130963 +30 +37.623432 +11 +-153.447717 +21 +392.424732 +31 +-37.623432 +12 +-303.422838 +22 +344.130963 +32 +-37.623432 +13 +-303.422838 +23 +344.130963 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-153.447717 +20 +392.424732 +30 +-37.623432 +11 +-303.422838 +21 +344.130963 +31 +37.623432 +12 +-153.447717 +22 +392.424732 +32 +37.623432 +13 +-153.447717 +23 +392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +194.126040 +30 +-37.623432 +11 +351.717412 +21 +144.965619 +31 +37.623432 +12 +351.717412 +22 +144.965619 +32 +-37.623432 +13 +351.717412 +23 +144.965619 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +144.965619 +30 +37.623432 +11 +351.717412 +21 +194.126040 +31 +-37.623432 +12 +351.717412 +22 +194.126040 +32 +37.623432 +13 +351.717412 +23 +194.126040 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +344.130963 +30 +-37.623432 +11 +351.717412 +21 +194.126040 +31 +37.623432 +12 +351.717412 +22 +194.126040 +32 +-37.623432 +13 +351.717412 +23 +194.126040 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +194.126040 +30 +37.623432 +11 +302.092403 +21 +344.130963 +31 +-37.623432 +12 +302.092403 +22 +344.130963 +32 +37.623432 +13 +302.092403 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +344.130963 +30 +-37.623432 +11 +-351.717412 +21 +144.965619 +31 +-37.623432 +12 +-351.717412 +22 +194.126040 +32 +-37.623432 +13 +-351.717412 +23 +194.126040 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +144.965619 +30 +-37.623432 +11 +-303.422838 +21 +344.130963 +31 +-37.623432 +12 +-309.341788 +22 +95.805228 +32 +-37.623432 +13 +-309.341788 +23 +95.805228 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +194.126040 +30 +-37.623432 +11 +302.092403 +21 +95.805228 +31 +-37.623432 +12 +302.092403 +22 +344.130963 +32 +-37.623432 +13 +302.092403 +23 +344.130963 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +-37.623432 +11 +351.717412 +21 +194.126040 +31 +-37.623432 +12 +351.717412 +22 +144.965619 +32 +-37.623432 +13 +351.717412 +23 +144.965619 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +-37.623432 +11 +-351.717412 +21 +-334.679514 +31 +-37.623432 +12 +-351.717412 +22 +48.334405 +32 +-37.623432 +13 +-351.717412 +23 +48.334405 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +-334.679514 +30 +-37.623432 +11 +-309.341788 +21 +95.805228 +31 +-37.623432 +12 +-303.422838 +22 +-392.424732 +32 +-37.623432 +13 +-303.422838 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +-37.623432 +11 +-309.341788 +21 +95.805228 +31 +-37.623432 +12 +-303.422838 +22 +344.130963 +32 +-37.623432 +13 +-303.422838 +23 +344.130963 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +-37.623432 +11 +-303.422838 +21 +344.130963 +31 +-37.623432 +12 +-153.447717 +22 +392.424732 +32 +-37.623432 +13 +-153.447717 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +-37.623432 +11 +-153.447717 +21 +392.424732 +31 +-37.623432 +12 +307.550490 +22 +-392.424732 +32 +-37.623432 +13 +307.550490 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +-153.447717 +21 +392.424732 +31 +-37.623432 +12 +151.653573 +22 +392.424732 +32 +-37.623432 +13 +151.653573 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +151.653573 +21 +392.424732 +31 +-37.623432 +12 +302.092403 +22 +95.805228 +32 +-37.623432 +13 +302.092403 +23 +95.805228 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +-37.623432 +11 +151.653573 +21 +392.424732 +31 +-37.623432 +12 +302.092403 +22 +344.130963 +32 +-37.623432 +13 +302.092403 +23 +344.130963 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +302.092403 +21 +95.805228 +31 +-37.623432 +12 +351.717412 +22 +48.334405 +32 +-37.623432 +13 +351.717412 +23 +48.334405 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +351.717412 +21 +48.334405 +31 +-37.623432 +12 +351.717412 +22 +-334.679514 +32 +-37.623432 +13 +351.717412 +23 +-334.679514 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +151.653573 +20 +392.424732 +30 +37.623432 +11 +302.092403 +21 +344.130963 +31 +-37.623432 +12 +151.653573 +22 +392.424732 +32 +-37.623432 +13 +151.653573 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +344.130963 +30 +-37.623432 +11 +151.653573 +21 +392.424732 +31 +37.623432 +12 +302.092403 +22 +344.130963 +32 +37.623432 +13 +302.092403 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-153.447717 +20 +392.424732 +30 +37.623432 +11 +151.653573 +21 +392.424732 +31 +-37.623432 +12 +-153.447717 +22 +392.424732 +32 +-37.623432 +13 +-153.447717 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +151.653573 +20 +392.424732 +30 +-37.623432 +11 +-153.447717 +21 +392.424732 +31 +37.623432 +12 +151.653573 +22 +392.424732 +32 +37.623432 +13 +151.653573 +23 +392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +37.623432 +11 +351.717412 +21 +48.334405 +31 +-37.623432 +12 +302.092403 +22 +95.805228 +32 +-37.623432 +13 +302.092403 +23 +95.805228 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +48.334405 +30 +-37.623432 +11 +302.092403 +21 +95.805228 +31 +37.623432 +12 +351.717412 +22 +48.334405 +32 +37.623432 +13 +351.717412 +23 +48.334405 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +48.334405 +30 +37.623432 +11 +-351.717412 +21 +-334.679514 +31 +-37.623432 +12 +-351.717412 +22 +-334.679514 +32 +37.623432 +13 +-351.717412 +23 +-334.679514 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +-334.679514 +30 +-37.623432 +11 +-351.717412 +21 +48.334405 +31 +37.623432 +12 +-351.717412 +22 +48.334405 +32 +-37.623432 +13 +-351.717412 +23 +48.334405 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +-334.679514 +30 +37.623432 +11 +-303.422838 +21 +-392.424732 +31 +-37.623432 +12 +-303.422838 +22 +-392.424732 +32 +37.623432 +13 +-303.422838 +23 +-392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +-37.623432 +11 +-351.717412 +21 +-334.679514 +31 +37.623432 +12 +-351.717412 +22 +-334.679514 +32 +-37.623432 +13 +-351.717412 +23 +-334.679514 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +144.965619 +30 +37.623432 +11 +302.092403 +21 +95.805228 +31 +-37.623432 +12 +351.717412 +22 +144.965619 +32 +-37.623432 +13 +351.717412 +23 +144.965619 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +-37.623432 +11 +351.717412 +21 +144.965619 +31 +37.623432 +12 +302.092403 +22 +95.805228 +32 +37.623432 +13 +302.092403 +23 +95.805228 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +37.623432 +11 +-351.717412 +21 +48.334405 +31 +-37.623432 +12 +-351.717412 +22 +48.334405 +32 +37.623432 +13 +-351.717412 +23 +48.334405 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +48.334405 +30 +-37.623432 +11 +-309.341788 +21 +95.805228 +31 +37.623432 +12 +-309.341788 +22 +95.805228 +32 +-37.623432 +13 +-309.341788 +23 +95.805228 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +144.965619 +30 +37.623432 +11 +-309.341788 +21 +95.805228 +31 +-37.623432 +12 +-309.341788 +22 +95.805228 +32 +37.623432 +13 +-309.341788 +23 +95.805228 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +-37.623432 +11 +-351.717412 +21 +144.965619 +31 +37.623432 +12 +-351.717412 +22 +144.965619 +32 +-37.623432 +13 +-351.717412 +23 +144.965619 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +37.623432 +11 +-351.717412 +21 +48.334405 +31 +37.623432 +12 +-351.717412 +22 +-334.679514 +32 +37.623432 +13 +-351.717412 +23 +-334.679514 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +48.334405 +30 +37.623432 +11 +-303.422838 +21 +-392.424732 +31 +37.623432 +12 +-309.341788 +22 +95.805228 +32 +37.623432 +13 +-309.341788 +23 +95.805228 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +37.623432 +11 +-351.717412 +21 +194.126040 +31 +37.623432 +12 +-351.717412 +22 +144.965619 +32 +37.623432 +13 +-351.717412 +23 +144.965619 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +194.126040 +30 +37.623432 +11 +-309.341788 +21 +95.805228 +31 +37.623432 +12 +-303.422838 +22 +344.130963 +32 +37.623432 +13 +-303.422838 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +344.130963 +30 +37.623432 +11 +-309.341788 +21 +95.805228 +31 +37.623432 +12 +-303.422838 +22 +-392.424732 +32 +37.623432 +13 +-303.422838 +23 +-392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +344.130963 +30 +37.623432 +11 +-303.422838 +21 +-392.424732 +31 +37.623432 +12 +307.550490 +22 +-392.424732 +32 +37.623432 +13 +307.550490 +23 +-392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +344.130963 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +-153.447717 +22 +392.424732 +32 +37.623432 +13 +-153.447717 +23 +392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-153.447717 +20 +392.424732 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +151.653573 +22 +392.424732 +32 +37.623432 +13 +151.653573 +23 +392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +151.653573 +20 +392.424732 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +302.092403 +22 +95.805228 +32 +37.623432 +13 +302.092403 +23 +95.805228 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +151.653573 +20 +392.424732 +30 +37.623432 +11 +302.092403 +21 +95.805228 +31 +37.623432 +12 +302.092403 +22 +344.130963 +32 +37.623432 +13 +302.092403 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +351.717412 +22 +48.334405 +32 +37.623432 +13 +351.717412 +23 +48.334405 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +48.334405 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +351.717412 +22 +-334.679514 +32 +37.623432 +13 +351.717412 +23 +-334.679514 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +37.623432 +11 +351.717412 +21 +194.126040 +31 +37.623432 +12 +302.092403 +22 +344.130963 +32 +37.623432 +13 +302.092403 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +194.126040 +30 +37.623432 +11 +302.092403 +21 +95.805228 +31 +37.623432 +12 +351.717412 +22 +144.965619 +32 +37.623432 +13 +351.717412 +23 +144.965619 +33 +37.623432 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toast2.c b/hacks/glx/toast2.c new file mode 100644 index 0000000..3d653ee --- /dev/null +++ b/hacks/glx/toast2.c @@ -0,0 +1,214 @@ +/* Generated from "toast2.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toast2_data[] = { + -0.746008,0.665937,0,-0.394142,0.122068,0.047937, + -0.746008,0.665937,0,-0.448134,0.061584,-0.047937, + -0.746008,0.665937,0,-0.448134,0.061584,0.047937, + -0.746008,0.665937,0,-0.448134,0.061584,-0.047937, + -0.746008,0.665937,0,-0.394142,0.122068,0.047937, + -0.746008,0.665937,0,-0.394142,0.122068,-0.047937, + -0.757441,-0.652904,0,-0.448134,0.184705,0.047937, + -0.757441,-0.652904,0,-0.394142,0.122068,-0.047937, + -0.757441,-0.652904,0,-0.394142,0.122068,0.047937, + -0.757441,-0.652904,0,-0.394142,0.122068,-0.047937, + -0.757441,-0.652904,0,-0.448134,0.184705,0.047937, + -0.757441,-0.652904,0,-0.448134,0.184705,-0.047937, + 0,0,-1,0.448134,0.247342,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.384905,0.438467,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.448134,0.247342,-0.047937, + 0,0,-1,0.448134,0.184705,-0.047937, + 0,0,-1,-0.233894,0.20122,-0.047937, + 0,0,-1,-0.448134,0.184705,-0.047937, + 0,0,-1,-0.448134,0.247342,-0.047937, + 0,0,-1,-0.448134,0.184705,-0.047937, + 0,0,-1,-0.233894,0.20122,-0.047937, + 0,0,-1,-0.394142,0.122068,-0.047937, + 0,0,-1,-0.394142,0.122068,-0.047937, + 0,0,-1,-0.233894,0.20122,-0.047937, + 0,0,-1,-0.3866,-0.5,-0.047937, + 0,0,-1,-0.3866,-0.5,-0.047937, + 0,0,-1,-0.233894,0.20122,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,-0.233894,0.20122,-0.047937, + 0,0,-1,-0.092355,0.236111,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,-0.092355,0.236111,-0.047937, + 0,0,-1,-0.001143,0.324361,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,-0.001143,0.324361,-0.047937, + 0,0,-1,0.039021,0.5,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.039021,0.5,-0.047937, + 0,0,-1,0.193226,0.5,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.193226,0.5,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.193226,0.5,-0.047937, + 0,0,-1,0.384905,0.438467,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.384905,0.122068,-0.047937, + 0,0,-1,0.448134,0.061584,-0.047937, + 0,0,-1,0.391859,-0.5,-0.047937, + 0,0,-1,0.448134,0.061584,-0.047937, + 0,0,-1,0.448134,-0.426425,-0.047937, + 0,0,-1,-0.394142,0.122068,-0.047937, + 0,0,-1,-0.448134,-0.426425,-0.047937, + 0,0,-1,-0.448134,0.061584,-0.047937, + 0,0,-1,-0.448134,-0.426425,-0.047937, + 0,0,-1,-0.394142,0.122068,-0.047937, + 0,0,-1,-0.3866,-0.5,-0.047937, + 0,0,1,-0.3866,-0.5,0.047937, + 0,0,1,-0.448134,0.061584,0.047937, + 0,0,1,-0.448134,-0.426425,0.047937, + 0,0,1,-0.448134,0.061584,0.047937, + 0,0,1,-0.3866,-0.5,0.047937, + 0,0,1,-0.394142,0.122068,0.047937, + 0,0,1,-0.394142,0.122068,0.047937, + 0,0,1,-0.448134,0.247342,0.047937, + 0,0,1,-0.448134,0.184705,0.047937, + 0,0,1,-0.448134,0.247342,0.047937, + 0,0,1,-0.394142,0.122068,0.047937, + 0,0,1,-0.233894,0.20122,0.047937, + 0,0,1,-0.233894,0.20122,0.047937, + 0,0,1,-0.394142,0.122068,0.047937, + 0,0,1,-0.3866,-0.5,0.047937, + 0,0,1,-0.233894,0.20122,0.047937, + 0,0,1,-0.3866,-0.5,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,-0.233894,0.20122,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,-0.092355,0.236111,0.047937, + 0,0,1,-0.092355,0.236111,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,-0.001143,0.324361,0.047937, + 0,0,1,-0.001143,0.324361,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.039021,0.5,0.047937, + 0,0,1,0.039021,0.5,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.193226,0.5,0.047937, + 0,0,1,0.193226,0.5,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.193226,0.5,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.384905,0.438467,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.448134,0.061584,0.047937, + 0,0,1,0.448134,0.061584,0.047937, + 0,0,1,0.391859,-0.5,0.047937, + 0,0,1,0.448134,-0.426425,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.448134,0.247342,0.047937, + 0,0,1,0.384905,0.438467,0.047937, + 0,0,1,0.448134,0.247342,0.047937, + 0,0,1,0.384905,0.122068,0.047937, + 0,0,1,0.448134,0.184705,0.047937, + 0.210457,0.977603,0,-0.448134,0.247342,0.047937, + 0.061931,0.99808,0,-0.233894,0.20122,-0.047937, + 0.210457,0.977603,0,-0.448134,0.247342,-0.047937, + 0.061931,0.99808,0,-0.233894,0.20122,-0.047937, + 0.210457,0.977603,0,-0.448134,0.247342,0.047937, + -0.091493,0.995806,0,-0.233894,0.20122,0.047937, + -0.974837,0.222918,0,0.039021,0.5,0.047937, + -0.974837,0.222918,0,-0.001143,0.324361,-0.047937, + -0.974837,0.222918,0,-0.001143,0.324361,0.047937, + -0.974837,0.222918,0,-0.001143,0.324361,-0.047937, + -0.974837,0.222918,0,0.039021,0.5,0.047937, + -0.974837,0.222918,0,0.039021,0.5,-0.047937, + -0.091493,0.995806,0,-0.233894,0.20122,0.047937, + -0.239346,0.970934,0,-0.092355,0.236111,-0.047937, + 0.061931,0.99808,0,-0.233894,0.20122,-0.047937, + -0.239346,0.970934,0,-0.092355,0.236111,-0.047937, + -0.091493,0.995806,0,-0.233894,0.20122,0.047937, + -0.239346,0.970934,0,-0.092355,0.236111,0.047937, + -0.695338,0.718683,0,-0.092355,0.236111,0.047937, + -0.695338,0.718683,0,-0.001143,0.324361,-0.047937, + -0.695338,0.718683,0,-0.092355,0.236111,-0.047937, + -0.695338,0.718683,0,-0.001143,0.324361,-0.047937, + -0.695338,0.718683,0,-0.092355,0.236111,0.047937, + -0.695338,0.718683,0,-0.001143,0.324361,0.047937, + -1,0,0,-0.448134,0.247342,0.047937, + -1,0,0,-0.448134,0.184705,-0.047937, + -1,0,0,-0.448134,0.184705,0.047937, + -1,0,0,-0.448134,0.184705,-0.047937, + -1,0,0,-0.448134,0.247342,0.047937, + -1,0,0,-0.448134,0.247342,-0.047937, + 0,1,0,0.039021,0.5,0.047937, + 0.102986,0.994683,0,0.193226,0.5,-0.047937, + 0,1,0,0.039021,0.5,-0.047937, + 0.102986,0.994683,0,0.193226,0.5,-0.047937, + 0,1,0,0.039021,0.5,0.047937, + 0.205973,0.978558,0,0.193226,0.5,0.047937, + 0.205973,0.978558,0,0.193226,0.5,0.047937, + 0.305656,0.952142,0,0.384905,0.438467,-0.047937, + 0.102986,0.994683,0,0.193226,0.5,-0.047937, + 0.305656,0.952142,0,0.384905,0.438467,-0.047937, + 0.205973,0.978558,0,0.193226,0.5,0.047937, + 0.305656,0.952142,0,0.384905,0.438467,0.047937, + 0.949396,0.314082,0,0.384905,0.438467,-0.047937, + 0.977317,0.211783,0,0.448134,0.247342,0.047937, + 0.994378,0.105891,0,0.448134,0.247342,-0.047937, + 0.977317,0.211783,0,0.448134,0.247342,0.047937, + 0.949396,0.314082,0,0.384905,0.438467,-0.047937, + 0.949396,0.314082,0,0.384905,0.438467,0.047937, + 0.994378,0.105891,0,0.448134,0.247342,-0.047937, + 1,0,0,0.448134,0.184705,0.047937, + 1,0,0,0.448134,0.184705,-0.047937, + 1,0,0,0.448134,0.184705,0.047937, + 0.994378,0.105891,0,0.448134,0.247342,-0.047937, + 0.977317,0.211783,0,0.448134,0.247342,0.047937, + 0.703773,-0.710425,0,0.448134,0.184705,0.047937, + 0.703773,-0.710425,0,0.384905,0.122068,-0.047937, + 0.703773,-0.710425,0,0.448134,0.184705,-0.047937, + 0.703773,-0.710425,0,0.384905,0.122068,-0.047937, + 0.703773,-0.710425,0,0.448134,0.184705,0.047937, + 0.703773,-0.710425,0,0.384905,0.122068,0.047937, + 0.691249,0.722617,0,0.384905,0.122068,0.047937, + 0.691249,0.722617,0,0.448134,0.061584,-0.047937, + 0.691249,0.722617,0,0.384905,0.122068,-0.047937, + 0.691249,0.722617,0,0.448134,0.061584,-0.047937, + 0.691249,0.722617,0,0.384905,0.122068,0.047937, + 0.691249,0.722617,0,0.448134,0.061584,0.047937, + 1,0,0,0.448134,0.061584,-0.047937, + 1,0,0,0.448134,-0.426425,0.047937, + 1,0,0,0.448134,-0.426425,-0.047937, + 1,0,0,0.448134,-0.426425,0.047937, + 1,0,0,0.448134,0.061584,-0.047937, + 1,0,0,0.448134,0.061584,0.047937, + 0.794299,-0.607527,0,0.448134,-0.426425,-0.047937, + 0.794299,-0.607527,0,0.391859,-0.5,0.047937, + 0.794299,-0.607527,0,0.391859,-0.5,-0.047937, + 0.794299,-0.607527,0,0.391859,-0.5,0.047937, + 0.794299,-0.607527,0,0.448134,-0.426425,-0.047937, + 0.794299,-0.607527,0,0.448134,-0.426425,0.047937, + 0,-1,0,0.391859,-0.5,0.047937, + 0,-1,0,-0.3866,-0.5,-0.047937, + 0,-1,0,0.391859,-0.5,-0.047937, + 0,-1,0,-0.3866,-0.5,-0.047937, + 0,-1,0,0.391859,-0.5,0.047937, + 0,-1,0,-0.3866,-0.5,0.047937, + -0.767086,-0.641544,0,-0.448134,-0.426425,0.047937, + -0.767086,-0.641544,0,-0.3866,-0.5,-0.047937, + -0.767086,-0.641544,0,-0.3866,-0.5,0.047937, + -0.767086,-0.641544,0,-0.3866,-0.5,-0.047937, + -0.767086,-0.641544,0,-0.448134,-0.426425,0.047937, + -0.767086,-0.641544,0,-0.448134,-0.426425,-0.047937, + -1,0,0,-0.448134,0.061584,0.047937, + -1,0,0,-0.448134,-0.426425,-0.047937, + -1,0,0,-0.448134,-0.426425,0.047937, + -1,0,0,-0.448134,-0.426425,-0.047937, + -1,0,0,-0.448134,0.061584,0.047937, + -1,0,0,-0.448134,0.061584,-0.047937 +}; +static const struct gllist toast2_frame = { GL_N3F_V3F, GL_TRIANGLES, 204, toast2_data, 0 }; +const struct gllist *toast2 = &toast2_frame; diff --git a/hacks/glx/toast2.dxf b/hacks/glx/toast2.dxf new file mode 100644 index 0000000..6cb545a --- /dev/null +++ b/hacks/glx/toast2.dxf @@ -0,0 +1,2054 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +37.623432 +11 +-351.717412 +21 +48.334405 +31 +-37.623432 +12 +-351.717412 +22 +48.334405 +32 +37.623432 +13 +-351.717412 +23 +48.334405 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +48.334405 +30 +-37.623432 +11 +-309.341788 +21 +95.805228 +31 +37.623432 +12 +-309.341788 +22 +95.805228 +32 +-37.623432 +13 +-309.341788 +23 +95.805228 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +144.965619 +30 +37.623432 +11 +-309.341788 +21 +95.805228 +31 +-37.623432 +12 +-309.341788 +22 +95.805228 +32 +37.623432 +13 +-309.341788 +23 +95.805228 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +-37.623432 +11 +-351.717412 +21 +144.965619 +31 +37.623432 +12 +-351.717412 +22 +144.965619 +32 +-37.623432 +13 +-351.717412 +23 +144.965619 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +194.126040 +30 +-37.623432 +11 +302.092403 +21 +95.805228 +31 +-37.623432 +12 +302.092403 +22 +344.130963 +32 +-37.623432 +13 +302.092403 +23 +344.130963 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +-37.623432 +11 +351.717412 +21 +194.126040 +31 +-37.623432 +12 +351.717412 +22 +144.965619 +32 +-37.623432 +13 +351.717412 +23 +144.965619 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-183.571503 +20 +157.927796 +30 +-37.623432 +11 +-351.717412 +21 +144.965619 +31 +-37.623432 +12 +-351.717412 +22 +194.126040 +32 +-37.623432 +13 +-351.717412 +23 +194.126040 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +144.965619 +30 +-37.623432 +11 +-183.571503 +21 +157.927796 +31 +-37.623432 +12 +-309.341788 +22 +95.805228 +32 +-37.623432 +13 +-309.341788 +23 +95.805228 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +-37.623432 +11 +-183.571503 +21 +157.927796 +31 +-37.623432 +12 +-303.422838 +22 +-392.424732 +32 +-37.623432 +13 +-303.422838 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +-37.623432 +11 +-183.571503 +21 +157.927796 +31 +-37.623432 +12 +307.550490 +22 +-392.424732 +32 +-37.623432 +13 +307.550490 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +-183.571503 +21 +157.927796 +31 +-37.623432 +12 +-72.484739 +22 +185.311958 +32 +-37.623432 +13 +-72.484739 +23 +185.311958 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +-72.484739 +21 +185.311958 +31 +-37.623432 +12 +-0.897070 +22 +254.574299 +32 +-37.623432 +13 +-0.897070 +23 +254.574299 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +-0.897070 +21 +254.574299 +31 +-37.623432 +12 +30.625457 +22 +392.424732 +32 +-37.623432 +13 +30.625457 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +30.625457 +21 +392.424732 +31 +-37.623432 +12 +151.653573 +22 +392.424732 +32 +-37.623432 +13 +151.653573 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +151.653573 +21 +392.424732 +31 +-37.623432 +12 +302.092403 +22 +95.805228 +32 +-37.623432 +13 +302.092403 +23 +95.805228 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +-37.623432 +11 +151.653573 +21 +392.424732 +31 +-37.623432 +12 +302.092403 +22 +344.130963 +32 +-37.623432 +13 +302.092403 +23 +344.130963 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +302.092403 +21 +95.805228 +31 +-37.623432 +12 +351.717412 +22 +48.334405 +32 +-37.623432 +13 +351.717412 +23 +48.334405 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +-37.623432 +11 +351.717412 +21 +48.334405 +31 +-37.623432 +12 +351.717412 +22 +-334.679514 +32 +-37.623432 +13 +351.717412 +23 +-334.679514 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +-37.623432 +11 +-351.717412 +21 +-334.679514 +31 +-37.623432 +12 +-351.717412 +22 +48.334405 +32 +-37.623432 +13 +-351.717412 +23 +48.334405 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +-334.679514 +30 +-37.623432 +11 +-309.341788 +21 +95.805228 +31 +-37.623432 +12 +-303.422838 +22 +-392.424732 +32 +-37.623432 +13 +-303.422838 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +37.623432 +11 +-351.717412 +21 +48.334405 +31 +37.623432 +12 +-351.717412 +22 +-334.679514 +32 +37.623432 +13 +-351.717412 +23 +-334.679514 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +48.334405 +30 +37.623432 +11 +-303.422838 +21 +-392.424732 +31 +37.623432 +12 +-309.341788 +22 +95.805228 +32 +37.623432 +13 +-309.341788 +23 +95.805228 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-309.341788 +20 +95.805228 +30 +37.623432 +11 +-351.717412 +21 +194.126040 +31 +37.623432 +12 +-351.717412 +22 +144.965619 +32 +37.623432 +13 +-351.717412 +23 +144.965619 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +194.126040 +30 +37.623432 +11 +-309.341788 +21 +95.805228 +31 +37.623432 +12 +-183.571503 +22 +157.927796 +32 +37.623432 +13 +-183.571503 +23 +157.927796 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-183.571503 +20 +157.927796 +30 +37.623432 +11 +-309.341788 +21 +95.805228 +31 +37.623432 +12 +-303.422838 +22 +-392.424732 +32 +37.623432 +13 +-303.422838 +23 +-392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-183.571503 +20 +157.927796 +30 +37.623432 +11 +-303.422838 +21 +-392.424732 +31 +37.623432 +12 +307.550490 +22 +-392.424732 +32 +37.623432 +13 +307.550490 +23 +-392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-183.571503 +20 +157.927796 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +-72.484739 +22 +185.311958 +32 +37.623432 +13 +-72.484739 +23 +185.311958 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-72.484739 +20 +185.311958 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +-0.897070 +22 +254.574299 +32 +37.623432 +13 +-0.897070 +23 +254.574299 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-0.897070 +20 +254.574299 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +30.625457 +22 +392.424732 +32 +37.623432 +13 +30.625457 +23 +392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +30.625457 +20 +392.424732 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +151.653573 +22 +392.424732 +32 +37.623432 +13 +151.653573 +23 +392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +151.653573 +20 +392.424732 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +302.092403 +22 +95.805228 +32 +37.623432 +13 +302.092403 +23 +95.805228 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +151.653573 +20 +392.424732 +30 +37.623432 +11 +302.092403 +21 +95.805228 +31 +37.623432 +12 +302.092403 +22 +344.130963 +32 +37.623432 +13 +302.092403 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +351.717412 +22 +48.334405 +32 +37.623432 +13 +351.717412 +23 +48.334405 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +48.334405 +30 +37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +351.717412 +22 +-334.679514 +32 +37.623432 +13 +351.717412 +23 +-334.679514 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +37.623432 +11 +351.717412 +21 +194.126040 +31 +37.623432 +12 +302.092403 +22 +344.130963 +32 +37.623432 +13 +302.092403 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +194.126040 +30 +37.623432 +11 +302.092403 +21 +95.805228 +31 +37.623432 +12 +351.717412 +22 +144.965619 +32 +37.623432 +13 +351.717412 +23 +144.965619 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +194.126040 +30 +37.623432 +11 +-183.571503 +21 +157.927796 +31 +-37.623432 +12 +-351.717412 +22 +194.126040 +32 +-37.623432 +13 +-351.717412 +23 +194.126040 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-183.571503 +20 +157.927796 +30 +-37.623432 +11 +-351.717412 +21 +194.126040 +31 +37.623432 +12 +-183.571503 +22 +157.927796 +32 +37.623432 +13 +-183.571503 +23 +157.927796 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +30.625457 +20 +392.424732 +30 +37.623432 +11 +-0.897070 +21 +254.574299 +31 +-37.623432 +12 +-0.897070 +22 +254.574299 +32 +37.623432 +13 +-0.897070 +23 +254.574299 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-0.897070 +20 +254.574299 +30 +-37.623432 +11 +30.625457 +21 +392.424732 +31 +37.623432 +12 +30.625457 +22 +392.424732 +32 +-37.623432 +13 +30.625457 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-183.571503 +20 +157.927796 +30 +37.623432 +11 +-72.484739 +21 +185.311958 +31 +-37.623432 +12 +-183.571503 +22 +157.927796 +32 +-37.623432 +13 +-183.571503 +23 +157.927796 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-72.484739 +20 +185.311958 +30 +-37.623432 +11 +-183.571503 +21 +157.927796 +31 +37.623432 +12 +-72.484739 +22 +185.311958 +32 +37.623432 +13 +-72.484739 +23 +185.311958 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-72.484739 +20 +185.311958 +30 +37.623432 +11 +-0.897070 +21 +254.574299 +31 +-37.623432 +12 +-72.484739 +22 +185.311958 +32 +-37.623432 +13 +-72.484739 +23 +185.311958 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-0.897070 +20 +254.574299 +30 +-37.623432 +11 +-72.484739 +21 +185.311958 +31 +37.623432 +12 +-0.897070 +22 +254.574299 +32 +37.623432 +13 +-0.897070 +23 +254.574299 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +194.126040 +30 +37.623432 +11 +-351.717412 +21 +144.965619 +31 +-37.623432 +12 +-351.717412 +22 +144.965619 +32 +37.623432 +13 +-351.717412 +23 +144.965619 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +144.965619 +30 +-37.623432 +11 +-351.717412 +21 +194.126040 +31 +37.623432 +12 +-351.717412 +22 +194.126040 +32 +-37.623432 +13 +-351.717412 +23 +194.126040 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +30.625457 +20 +392.424732 +30 +37.623432 +11 +151.653573 +21 +392.424732 +31 +-37.623432 +12 +30.625457 +22 +392.424732 +32 +-37.623432 +13 +30.625457 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +151.653573 +20 +392.424732 +30 +-37.623432 +11 +30.625457 +21 +392.424732 +31 +37.623432 +12 +151.653573 +22 +392.424732 +32 +37.623432 +13 +151.653573 +23 +392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +151.653573 +20 +392.424732 +30 +37.623432 +11 +302.092403 +21 +344.130963 +31 +-37.623432 +12 +151.653573 +22 +392.424732 +32 +-37.623432 +13 +151.653573 +23 +392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +344.130963 +30 +-37.623432 +11 +151.653573 +21 +392.424732 +31 +37.623432 +12 +302.092403 +22 +344.130963 +32 +37.623432 +13 +302.092403 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +344.130963 +30 +-37.623432 +11 +351.717412 +21 +194.126040 +31 +37.623432 +12 +351.717412 +22 +194.126040 +32 +-37.623432 +13 +351.717412 +23 +194.126040 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +194.126040 +30 +37.623432 +11 +302.092403 +21 +344.130963 +31 +-37.623432 +12 +302.092403 +22 +344.130963 +32 +37.623432 +13 +302.092403 +23 +344.130963 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +194.126040 +30 +-37.623432 +11 +351.717412 +21 +144.965619 +31 +37.623432 +12 +351.717412 +22 +144.965619 +32 +-37.623432 +13 +351.717412 +23 +144.965619 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +144.965619 +30 +37.623432 +11 +351.717412 +21 +194.126040 +31 +-37.623432 +12 +351.717412 +22 +194.126040 +32 +37.623432 +13 +351.717412 +23 +194.126040 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +144.965619 +30 +37.623432 +11 +302.092403 +21 +95.805228 +31 +-37.623432 +12 +351.717412 +22 +144.965619 +32 +-37.623432 +13 +351.717412 +23 +144.965619 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +-37.623432 +11 +351.717412 +21 +144.965619 +31 +37.623432 +12 +302.092403 +22 +95.805228 +32 +37.623432 +13 +302.092403 +23 +95.805228 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +302.092403 +20 +95.805228 +30 +37.623432 +11 +351.717412 +21 +48.334405 +31 +-37.623432 +12 +302.092403 +22 +95.805228 +32 +-37.623432 +13 +302.092403 +23 +95.805228 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +48.334405 +30 +-37.623432 +11 +302.092403 +21 +95.805228 +31 +37.623432 +12 +351.717412 +22 +48.334405 +32 +37.623432 +13 +351.717412 +23 +48.334405 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +48.334405 +30 +-37.623432 +11 +351.717412 +21 +-334.679514 +31 +37.623432 +12 +351.717412 +22 +-334.679514 +32 +-37.623432 +13 +351.717412 +23 +-334.679514 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +-334.679514 +30 +37.623432 +11 +351.717412 +21 +48.334405 +31 +-37.623432 +12 +351.717412 +22 +48.334405 +32 +37.623432 +13 +351.717412 +23 +48.334405 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +351.717412 +20 +-334.679514 +30 +-37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +307.550490 +22 +-392.424732 +32 +-37.623432 +13 +307.550490 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +37.623432 +11 +351.717412 +21 +-334.679514 +31 +-37.623432 +12 +351.717412 +22 +-334.679514 +32 +37.623432 +13 +351.717412 +23 +-334.679514 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +307.550490 +20 +-392.424732 +30 +37.623432 +11 +-303.422838 +21 +-392.424732 +31 +-37.623432 +12 +307.550490 +22 +-392.424732 +32 +-37.623432 +13 +307.550490 +23 +-392.424732 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +-37.623432 +11 +307.550490 +21 +-392.424732 +31 +37.623432 +12 +-303.422838 +22 +-392.424732 +32 +37.623432 +13 +-303.422838 +23 +-392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +-334.679514 +30 +37.623432 +11 +-303.422838 +21 +-392.424732 +31 +-37.623432 +12 +-303.422838 +22 +-392.424732 +32 +37.623432 +13 +-303.422838 +23 +-392.424732 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-303.422838 +20 +-392.424732 +30 +-37.623432 +11 +-351.717412 +21 +-334.679514 +31 +37.623432 +12 +-351.717412 +22 +-334.679514 +32 +-37.623432 +13 +-351.717412 +23 +-334.679514 +33 +-37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +48.334405 +30 +37.623432 +11 +-351.717412 +21 +-334.679514 +31 +-37.623432 +12 +-351.717412 +22 +-334.679514 +32 +37.623432 +13 +-351.717412 +23 +-334.679514 +33 +37.623432 +0 +3DFACE +8 +0 + 62 +55 +10 +-351.717412 +20 +-334.679514 +30 +-37.623432 +11 +-351.717412 +21 +48.334405 +31 +37.623432 +12 +-351.717412 +22 +48.334405 +32 +-37.623432 +13 +-351.717412 +23 +48.334405 +33 +-37.623432 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toaster.c b/hacks/glx/toaster.c new file mode 100644 index 0000000..1feca5d --- /dev/null +++ b/hacks/glx/toaster.c @@ -0,0 +1,376 @@ +/* Generated from "toaster.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toaster_data[] = { + -0.316307,-0.948657,0,-0.283103,-0.467335,0.222248, + -0.101389,-0.994724,-0.015639,-0.234168,-0.483652,-0.380912, + -0.194699,-0.980863,0,-0.234168,-0.483652,0.222248, + -0.015849,0.992717,0.119421,-0.001224,0.5,0.222248, + -0.130021,0.991469,-0.009119,-0.234168,0.483652,-0.380912, + -0.197233,0.97209,0.127042,-0.234168,0.483652,0.222248, + -0.104394,-0.808168,0.579627,-0.17891,-0.455225,0.279296, + -0.132836,-0.912766,0.386282,-0.234168,-0.483652,0.222248, + -0.012111,-0.87373,0.486261,-0.001224,-0.5,0.222248, + -0.999999,0,-0.001399,-0.345926,0,-0.380912, + -0.974495,-0.224383,-0.003566,-0.299415,-0.418387,-0.380912, + -0.996185,-0.087205,0.003347,-0.331315,-0.208938,0.222248, + 0.996185,0.087205,0.003347,0.331315,0.208938,0.222248, + 0.996185,-0.087205,0.003347,0.331315,-0.208938,0.222248, + 0.999999,0,-0.001399,0.345926,0,-0.380912, + -0.000242,0.999959,-0.009047,-0.001224,0.5,0.222248, + 0.129779,0.991501,-0.009119,0.234168,0.483652,-0.380912, + -0.130021,0.991469,-0.009119,-0.234168,0.483652,-0.380912, + -0.154648,-0.973224,0.170058,-0.234168,-0.483652,0.222248, + -0.101389,-0.994724,-0.015639,-0.234168,-0.483652,-0.380912, + -0.010495,-0.997502,0.069855,-0.001224,-0.5,0.222248, + 0.967433,0.253065,0.005626,0.292931,0.437844,-0.141156, + 0.965122,0.261801,0,0.299415,0.418387,0.222248, + 0.979828,0.199828,-0.002375,0.299415,0.418387,-0.380912, + 0.965122,0.261801,0,0.299415,0.418387,0.222248, + 0.967433,0.253065,0.005626,0.292931,0.437844,-0.141156, + 0.977686,0.209863,0.009409,0.283103,0.467335,0.222248, + 0.977686,0.209863,0.009409,0.283103,0.467335,0.222248, + 0.967433,0.253065,0.005626,0.292931,0.437844,-0.141156, + 0.977686,0.209863,0.009409,0.288017,0.45259,0.040546, + 0.316307,0.948657,0,0.283103,0.467335,0.222248, + 0.316307,0.948657,0,0.283103,0.467335,-0.380912, + 0.235633,0.971842,0,0.234168,0.483652,0.222248, + 0.94871,0.316149,-0,0.283103,0.467335,-0.380912, + 0.967433,0.253065,0.005626,0.292931,0.437844,-0.141156, + 0.979828,0.199828,-0.002375,0.299415,0.418387,-0.380912, + 0.967433,0.253065,0.005626,0.292931,0.437844,-0.141156, + 0.94871,0.316149,-0,0.283103,0.467335,-0.380912, + 0.977686,0.209863,0.009409,0.288017,0.45259,0.040546, + 0.977686,0.209863,0.009409,0.288017,0.45259,0.040546, + 0.94871,0.316149,-0,0.283103,0.467335,-0.380912, + 0.977686,0.209863,0.009409,0.283103,0.467335,0.222248, + 0,0.227898,0.973685,0.054097,0.251982,0.357142, + 0,0.227898,0.973685,-0.054097,0.251982,0.357142, + 0,-0,1,0.05339,0,0.380912, + -0.743012,0.091749,0.66296,-0.257344,0.251982,0.320299, + -0.817604,0.124528,0.562153,-0.31207,0.335293,0.222248, + -0.809725,0.0624,0.583482,-0.331315,0.208938,0.222248, + -0.817604,0.124528,0.562153,-0.31207,0.335293,0.222248, + -0.743012,0.091749,0.66296,-0.257344,0.251982,0.320299, + -0.680969,0.208836,0.701903,-0.299415,0.418387,0.222248, + 0,0,1,-0.31207,0.335293,0.222248, + 0,0,1,-0.299415,0.418387,0.222248, + 0,0,1,-0.305628,0.377591,0.222248, + 0.490312,-0.197001,0.84899,0.257344,-0.251982,0.320299, + 0.439235,-0,0.898372,0.166895,0,0.380912, + 0.369417,-0.202622,0.906904,0.166895,-0.251982,0.357142, + 0.479243,0.170617,0.860939,0.257344,0.251982,0.320299, + 0.344013,0.237244,0.908499,0.166895,0.251982,0.357142, + 0.439235,-0,0.898372,0.166895,0,0.380912, + 0.806304,-0.04159,0.590037,0.331315,-0.208938,0.222248, + 0.743012,0.091749,0.66296,0.257344,0.251982,0.320299, + 0.726863,-0.090005,0.680859,0.257344,-0.251982,0.320299, + 0.743012,0.091749,0.66296,0.257344,0.251982,0.320299, + 0.806304,-0.04159,0.590037,0.331315,-0.208938,0.222248, + 0.809725,0.062401,0.583482,0.331315,0.208938,0.222248, + 0,-0,1,0.05339,0,0.380912, + 0,0.227898,0.973685,-0.054097,0.251982,0.357142, + 0,-0,1,-0.05339,0,0.380912, + -0.988599,0.150571,-0,-0.31207,0.335293,0.222248, + -0.979828,0.199828,-0.002375,-0.299415,0.418387,-0.380912, + -0.996185,0.087204,0.003347,-0.331315,0.208938,0.222248, + -0.979828,0.199828,-0.002375,-0.299415,0.418387,-0.380912, + -0.988599,0.150571,-0,-0.31207,0.335293,0.222248, + -0.988599,0.150572,-0,-0.305628,0.377591,0.222248, + -0.979828,0.199828,-0.002375,-0.299415,0.418387,-0.380912, + -0.988599,0.150572,-0,-0.305628,0.377591,0.222248, + -0.965122,0.261802,0,-0.299415,0.418387,0.222248, + -0.594501,-0.161247,0.787761,-0.257344,-0.251982,0.320299, + -0.757873,-0.17819,0.627596,-0.299415,-0.418387,0.222248, + -0.563931,-0.285379,0.774946,-0.283103,-0.467335,0.222248, + -0.191789,-0.715866,0.671382,-0.17891,-0.455225,0.279296, + -0.34735,-0.55882,0.753039,-0.283103,-0.467335,0.222248, + -0.156515,-0.815104,0.55777,-0.234168,-0.483652,0.222248, + -0.353973,-0.479978,0.802698,-0.17891,-0.455225,0.279296, + -0.490312,-0.197001,0.84899,-0.257344,-0.251982,0.320299, + -0.476561,-0.458788,0.749935,-0.283103,-0.467335,0.222248, + -0.965122,0.261802,0,-0.299415,0.418387,0.222248, + -0.94871,0.316149,0,-0.286127,0.45826,0.110422, + -0.979828,0.199828,-0.002375,-0.299415,0.418387,-0.380912, + -0.94871,0.316149,0,-0.286127,0.45826,0.110422, + -0.965122,0.261802,0,-0.299415,0.418387,0.222248, + -0.948709,0.316149,0,-0.283103,0.467335,0.222248, + 0.812952,-0.581784,0.025229,-0.286127,0.45826,0.110422, + 0.812952,-0.581784,0.025229,-0.283103,0.467335,0.222248, + 0.812952,-0.581784,0.025229,-0.285423,0.460375,0.136473, + -0.94871,0.316149,0,-0.286127,0.45826,0.110422, + -0.94871,0.316149,-0,-0.283103,0.467335,-0.380912, + -0.979828,0.199828,-0.002375,-0.299415,0.418387,-0.380912, + -0.94871,0.316149,-0,-0.283103,0.467335,-0.380912, + -0.94871,0.316149,0,-0.286127,0.45826,0.110422, + -0.94871,0.316149,-0,-0.285423,0.460375,0.136473, + -0.94871,0.316149,-0,-0.283103,0.467335,-0.380912, + -0.94871,0.316149,-0,-0.285423,0.460375,0.136473, + -0.948709,0.316149,0,-0.283103,0.467335,0.222248, + -0.38567,0.427053,0.817853,-0.231791,0.418387,0.27573, + -0.241461,0.701279,0.670749,-0.234168,0.483652,0.222248, + -0.205338,0.615841,0.760642,-0.283103,0.467335,0.222248, + 0,0.78664,0.617411,0.054097,0.455225,0.279296, + -0.000123,0.822299,0.569056,-0.001224,0.5,0.222248, + 0,0.78664,0.617411,-0.054097,0.455225,0.279296, + 0,-0.78664,0.617411,0.054097,-0.455225,0.279296, + 0,-0.78664,0.617411,-0.054097,-0.455225,0.279296, + -0.000123,-0.822299,0.569056,-0.001224,-0.5,0.222248, + 0,-0.664991,0.746852,-0.054097,-0.455225,0.279296, + 0,-0.593633,0.804736,0.054097,-0.455225,0.279296, + 0,-0.357681,0.933844,0,-0.455225,0.279296, + 0,-0.357681,0.933844,0,-0.455225,0.279296, + 0,-0.254425,0.967093,-0.054097,-0.251982,0.357142, + 0,-0.357681,0.933844,-0.054097,-0.455225,0.279296, + 0,-0.254425,0.967093,-0.054097,-0.251982,0.357142, + 0,-0.357681,0.933844,0,-0.455225,0.279296, + 0,-0.357681,0.933844,0.054097,-0.455225,0.279296, + -0.369417,-0.202622,0.906904,-0.166895,-0.251982,0.357142, + -0.490312,-0.197001,0.84899,-0.257344,-0.251982,0.320299, + -0.390635,-0.324541,0.861439,-0.17891,-0.455225,0.279296, + 0,0.78664,0.617411,-0.054097,0.455225,0.279296, + -0.000123,0.822299,0.569056,-0.001224,0.5,0.222248, + -0.171632,0.762512,0.623793,-0.17891,0.455225,0.279296, + -0.42641,0.391747,0.815297,-0.231791,0.418387,0.27573, + -0.680969,0.208836,0.701903,-0.299415,0.418387,0.222248, + -0.662215,0.119119,0.739785,-0.257344,0.251982,0.320299, + 0.476561,-0.458788,0.749935,0.283103,-0.467335,0.222248, + 0.490312,-0.197001,0.84899,0.257344,-0.251982,0.320299, + 0.353972,-0.479978,0.802698,0.17891,-0.455225,0.279296, + 0.979828,0.199828,-0.002375,0.299415,0.418387,-0.380912, + 0.988599,0.150572,0,0.318731,0.29156,0.222248, + 0.996185,0.087205,0.003347,0.331315,0.208938,0.222248, + 0.988599,0.150572,0,0.318731,0.29156,0.222248, + 0.979828,0.199828,-0.002375,0.299415,0.418387,-0.380912, + 0.988599,0.150571,0,0.310276,0.347076,0.222248, + 0.988599,0.150571,0,0.310276,0.347076,0.222248, + 0.979828,0.199828,-0.002375,0.299415,0.418387,-0.380912, + 0.965122,0.261801,0,0.299415,0.418387,0.222248, + -0.252774,0.582577,0.77247,-0.17891,0.455225,0.279296, + -0.323984,0.592558,0.737502,-0.234168,0.483652,0.222248, + -0.42641,0.391747,0.815297,-0.231791,0.418387,0.27573, + 0,-0.227898,0.973685,0.054097,-0.251982,0.357142, + 0,-0,1,0.05339,0,0.380912, + 0,-0.254425,0.967093,-0.054097,-0.251982,0.357142, + 0.979828,0.199828,-0.002375,0.299415,0.418387,-0.380912, + 0.996185,0.087205,0.003347,0.331315,0.208938,0.222248, + 0.999999,0,-0.001399,0.345926,0,-0.380912, + 0.141954,-0.989813,-0.010959,0.234168,-0.483652,-0.380912, + 0,-0.999633,-0.027095,0.008103,-0.487773,-0.228855, + -0.101389,-0.994724,-0.015639,-0.234168,-0.483652,-0.380912, + 0,-0.999633,-0.027095,0.008103,-0.487773,-0.228855, + 0.141954,-0.989813,-0.010959,0.234168,-0.483652,-0.380912, + 0.027733,-0.999483,-0.016268,0.054066,-0.49616,0.080576, + 0,-0.999633,-0.027095,0.008103,-0.487773,-0.228855, + 0.027733,-0.999483,-0.016268,0.054066,-0.49616,0.080576, + 0,-0.999633,-0.027095,0.008103,-0.49662,0.097563, + 0,-0.999633,-0.027095,0.008103,-0.49662,0.097563, + 0.027733,-0.999483,-0.016268,0.054066,-0.49616,0.080576, + -0.000145,-0.999868,-0.016274,-0.001224,-0.5,0.222248, + 0,-0.999633,-0.027095,0.008103,-0.49662,0.097563, + -0.000145,-0.999868,-0.016274,-0.001224,-0.5,0.222248, + -0,-0.999633,-0.027095,-0.017747,-0.49662,0.097563, + -0.101389,-0.994724,-0.015639,-0.234168,-0.483652,-0.380912, + -0,-0.999633,-0.027095,-0.017747,-0.49662,0.097563, + -0.000145,-0.999868,-0.016274,-0.001224,-0.5,0.222248, + -0,-0.999633,-0.027095,-0.017747,-0.49662,0.097563, + -0.101389,-0.994724,-0.015639,-0.234168,-0.483652,-0.380912, + 0,-0.999633,-0.027095,-0.017747,-0.487773,-0.228855, + 0,-0.999633,-0.027095,-0.017747,-0.487773,-0.228855, + -0.101389,-0.994724,-0.015639,-0.234168,-0.483652,-0.380912, + 0,-0.999633,-0.027095,0.008103,-0.487773,-0.228855, + -0.806304,-0.04159,0.590037,-0.331315,-0.208938,0.222248, + -0.757873,-0.17819,0.627596,-0.299415,-0.418387,0.222248, + -0.726863,-0.090005,0.680859,-0.257344,-0.251982,0.320299, + -0.104394,-0.808168,0.579627,-0.17891,-0.455225,0.279296, + -0.000123,-0.822299,0.569056,-0.001224,-0.5,0.222248, + 0,-0.78664,0.617411,-0.054097,-0.455225,0.279296, + 0,0.357681,0.933844,0.054097,0.455225,0.279296, + 0,0.357681,0.933844,-0.054097,0.455225,0.279296, + 0,0.227898,0.973685,-0.054097,0.251982,0.357142, + -0.344013,0.237244,0.908499,-0.166895,0.251982,0.357142, + -0.42641,0.391747,0.815297,-0.231791,0.418387,0.27573, + -0.479243,0.170617,0.860939,-0.257344,0.251982,0.320299, + -0.344013,0.237244,0.908499,-0.166895,0.251982,0.357142, + -0.368596,0.450419,0.813179,-0.17891,0.455225,0.279296, + -0.42641,0.391747,0.815297,-0.231791,0.418387,0.27573, + 0.132836,-0.983007,0.126693,0.234168,-0.483652,0.222248, + 0.027733,-0.999483,-0.016268,0.054066,-0.49616,0.080576, + 0.141954,-0.989813,-0.010959,0.234168,-0.483652,-0.380912, + 0.027733,-0.999483,-0.016268,0.054066,-0.49616,0.080576, + 0.132836,-0.983007,0.126693,0.234168,-0.483652,0.222248, + 0.010143,-0.997511,0.069776,-0.001224,-0.5,0.222248, + 0,0,-1,-0.299415,0.418387,-0.380912, + 0,0,-1,-0.299415,-0.418387,-0.380912, + 0,0,-1,-0.345926,0,-0.380912, + 0,0,-1,-0.299415,-0.418387,-0.380912, + 0,0,-1,-0.299415,0.418387,-0.380912, + 0,0,-1,-0.283103,0.467335,-0.380912, + 0,0,-1,-0.299415,-0.418387,-0.380912, + 0,0,-1,-0.283103,0.467335,-0.380912, + 0,0,-1,-0.283103,-0.467335,-0.380912, + 0,0,-1,-0.283103,-0.467335,-0.380912, + 0,0,-1,-0.283103,0.467335,-0.380912, + 0,0,-1,-0.234168,0.483652,-0.380912, + 0,0,-1,-0.283103,-0.467335,-0.380912, + 0,0,-1,-0.234168,0.483652,-0.380912, + 0,0,-1,-0.234168,-0.483652,-0.380912, + 0,0,-1,-0.234168,-0.483652,-0.380912, + 0,0,-1,-0.234168,0.483652,-0.380912, + 0,0,-1,0.234168,0.483652,-0.380912, + 0,0,-1,-0.234168,-0.483652,-0.380912, + 0,0,-1,0.234168,0.483652,-0.380912, + 0,0,-1,0.234168,-0.483652,-0.380912, + 0,0,-1,0.234168,-0.483652,-0.380912, + 0,0,-1,0.234168,0.483652,-0.380912, + 0,0,-1,0.283103,-0.467335,-0.380912, + 0,0,-1,0.283103,-0.467335,-0.380912, + 0,0,-1,0.234168,0.483652,-0.380912, + 0,0,-1,0.283103,0.467335,-0.380912, + 0,0,-1,0.283103,-0.467335,-0.380912, + 0,0,-1,0.283103,0.467335,-0.380912, + 0,0,-1,0.299415,-0.418387,-0.380912, + 0,0,-1,0.299415,-0.418387,-0.380912, + 0,0,-1,0.283103,0.467335,-0.380912, + 0,0,-1,0.299415,0.418387,-0.380912, + 0,0,-1,0.299415,-0.418387,-0.380912, + 0,0,-1,0.299415,0.418387,-0.380912, + 0,0,-1,0.345926,0,-0.380912, + -0.466133,0.34121,0.816269,-0.231791,0.418387,0.27573, + -0.60748,0.202437,0.768106,-0.283103,0.467335,0.222248, + -0.680969,0.208836,0.701903,-0.299415,0.418387,0.222248, + 0.490312,-0.197001,0.84899,0.257344,-0.251982,0.320299, + 0.369417,-0.202622,0.906904,0.166895,-0.251982,0.357142, + 0.390635,-0.324541,0.861439,0.17891,-0.455225,0.279296, + 0.191639,-0.715981,0.671301,0.17891,-0.455225,0.279296, + 0.156214,-0.815296,0.557574,0.234168,-0.483652,0.222248, + 0.34735,-0.55882,0.753039,0.283103,-0.467335,0.222248, + 0.594501,-0.161247,0.787761,0.257344,-0.251982,0.320299, + 0.563931,-0.285379,0.774946,0.283103,-0.467335,0.222248, + 0.757873,-0.17819,0.627596,0.299415,-0.418387,0.222248, + 0,0.357681,0.933844,0.054097,0.455225,0.279296, + 0,0.227898,0.973685,-0.054097,0.251982,0.357142, + 0,0.227898,0.973685,0.054097,0.251982,0.357142, + -0.974495,-0.224383,-0.003566,-0.299415,-0.418387,-0.380912, + -0.94871,-0.316149,0,-0.283103,-0.467335,0.222248, + -0.972186,-0.234211,0,-0.299415,-0.418387,0.222248, + -0.996185,-0.087205,0.003347,-0.331315,-0.208938,0.222248, + -0.974495,-0.224383,-0.003566,-0.299415,-0.418387,-0.380912, + -0.972186,-0.234211,0,-0.299415,-0.418387,0.222248, + 0,-0,1,0.05339,0,0.380912, + 0,-0,1,-0.05339,0,0.380912, + 0,-0.254425,0.967093,-0.054097,-0.251982,0.357142, + 0,-0.227898,0.973685,0.054097,-0.251982,0.357142, + 0,-0.254425,0.967093,-0.054097,-0.251982,0.357142, + 0,-0.357681,0.933844,0.054097,-0.455225,0.279296, + -0.235866,0.971786,0,-0.234168,0.483652,0.222248, + -0.316307,0.948657,0,-0.283103,0.467335,-0.380912, + -0.316307,0.948657,0,-0.283103,0.467335,0.222248, + 0.974495,-0.224383,-0.003566,0.299415,-0.418387,-0.380912, + 0.94871,-0.316149,0,0.283103,-0.467335,0.222248, + 0.94871,-0.316149,0,0.283103,-0.467335,-0.380912, + 0.196887,0.972176,0.126926,0.234168,0.483652,0.222248, + 0.129779,0.991501,-0.009119,0.234168,0.483652,-0.380912, + 0.015319,0.99274,0.119299,-0.001224,0.5,0.222248, + -0.030578,0.830318,0.55645,-0.17891,0.455225,0.279296, + -0.012111,0.87373,0.486261,-0.001224,0.5,0.222248, + -0.120094,0.886303,0.447263,-0.234168,0.483652,0.222248, + -0.235866,0.971786,0,-0.234168,0.483652,0.222248, + -0.130021,0.991469,-0.009119,-0.234168,0.483652,-0.380912, + -0.316307,0.948657,0,-0.283103,0.467335,-0.380912, + 0.323984,0.592558,0.737502,0.234168,0.483652,0.222248, + 0.252774,0.582577,0.77247,0.17891,0.455225,0.279296, + 0.42641,0.391747,0.815297,0.231791,0.418387,0.27573, + -0.974495,-0.224383,-0.003566,-0.299415,-0.418387,-0.380912, + -0.94871,-0.316149,0,-0.283103,-0.467335,-0.380912, + -0.94871,-0.316149,0,-0.283103,-0.467335,0.222248, + -0.316307,-0.948657,0,-0.283103,-0.467335,0.222248, + -0.316307,-0.948657,0,-0.283103,-0.467335,-0.380912, + -0.101389,-0.994724,-0.015639,-0.234168,-0.483652,-0.380912, + 0,-0.78664,0.617411,0.054097,-0.455225,0.279296, + -0.000123,-0.822299,0.569056,-0.001224,-0.5,0.222248, + 0.104191,-0.80829,0.579493,0.17891,-0.455225,0.279296, + 0.680969,0.208836,0.701903,0.299415,0.418387,0.222248, + 0.42641,0.391747,0.815297,0.231791,0.418387,0.27573, + 0.662215,0.119119,0.739785,0.257344,0.251982,0.320299, + 0.680969,0.208836,0.701903,0.299415,0.418387,0.222248, + 0.60748,0.202437,0.768106,0.283103,0.467335,0.222248, + 0.466133,0.34121,0.816269,0.231791,0.418387,0.27573, + 0.479243,0.170617,0.860939,0.257344,0.251982,0.320299, + 0.42641,0.391747,0.815297,0.231791,0.418387,0.27573, + 0.344013,0.237244,0.908499,0.166895,0.251982,0.357142, + 0.662215,0.119119,0.739785,0.257344,0.251982,0.320299, + 0.439235,-0,0.898372,0.166895,0,0.380912, + 0.594501,-0.161247,0.787761,0.257344,-0.251982,0.320299, + 0.999999,0,-0.001399,0.345926,0,-0.380912, + 0.996185,-0.087205,0.003347,0.331315,-0.208938,0.222248, + 0.974495,-0.224383,-0.003566,0.299415,-0.418387,-0.380912, + 0.42641,0.391747,0.815297,0.231791,0.418387,0.27573, + 0.368596,0.450419,0.813179,0.17891,0.455225,0.279296, + 0.344013,0.237244,0.908499,0.166895,0.251982,0.357142, + 0.972186,-0.234211,0,0.299415,-0.418387,0.222248, + 0.94871,-0.316149,0,0.283103,-0.467335,0.222248, + 0.974495,-0.224383,-0.003566,0.299415,-0.418387,-0.380912, + 0.104191,-0.80829,0.579493,0.17891,-0.455225,0.279296, + 0.011777,-0.873735,0.486259,-0.001224,-0.5,0.222248, + 0.117871,-0.949523,0.29071,0.234168,-0.483652,0.222248, + 0.806304,-0.04159,0.590037,0.331315,-0.208938,0.222248, + 0.726863,-0.090005,0.680859,0.257344,-0.251982,0.320299, + 0.757873,-0.17819,0.627596,0.299415,-0.418387,0.222248, + 0.17143,0.762655,0.623674,0.17891,0.455225,0.279296, + -0.000123,0.822299,0.569056,-0.001224,0.5,0.222248, + 0,0.78664,0.617411,0.054097,0.455225,0.279296, + 0.235633,0.971842,0,0.234168,0.483652,0.222248, + 0.316307,0.948657,0,0.283103,0.467335,-0.380912, + 0.129779,0.991501,-0.009119,0.234168,0.483652,-0.380912, + 0.817604,0.124528,0.562153,0.318731,0.29156,0.222248, + 0.743012,0.091749,0.66296,0.257344,0.251982,0.320299, + 0.809725,0.062401,0.583482,0.331315,0.208938,0.222248, + 0.743012,0.091749,0.66296,0.257344,0.251982,0.320299, + 0.817604,0.124528,0.562153,0.318731,0.29156,0.222248, + 0.680969,0.208836,0.701903,0.299415,0.418387,0.222248, + 0,0,-1,0.299415,0.418387,0.222248, + 0,0,-1,0.318731,0.29156,0.222248, + 0,0,-1,0.310276,0.347076,0.222248, + 0.152705,-0.988272,-0,0.234168,-0.483652,0.222248, + 0.141954,-0.989813,-0.010959,0.234168,-0.483652,-0.380912, + 0.316307,-0.948657,0,0.283103,-0.467335,0.222248, + 0.316307,-0.948657,0,0.283103,-0.467335,0.222248, + 0.141954,-0.989813,-0.010959,0.234168,-0.483652,-0.380912, + 0.316307,-0.948657,0,0.283103,-0.467335,-0.380912, + 0.996185,-0.087205,0.003347,0.331315,-0.208938,0.222248, + 0.972186,-0.234211,0,0.299415,-0.418387,0.222248, + 0.974495,-0.224383,-0.003566,0.299415,-0.418387,-0.380912, + 0.205338,0.615841,0.760642,0.283103,0.467335,0.222248, + 0.24127,0.701439,0.670651,0.234168,0.483652,0.222248, + 0.38567,0.427053,0.817853,0.231791,0.418387,0.27573, + -0.439235,-0,0.898372,-0.166895,0,0.380912, + -0.490312,-0.197001,0.84899,-0.257344,-0.251982,0.320299, + -0.369417,-0.202622,0.906904,-0.166895,-0.251982,0.357142, + -0.439235,-0,0.898372,-0.166895,0,0.380912, + -0.344013,0.237244,0.908499,-0.166895,0.251982,0.357142, + -0.479243,0.170617,0.860939,-0.257344,0.251982,0.320299, + 0.030271,0.830475,0.556232,0.17891,0.455225,0.279296, + 0.119619,0.886444,0.447112,0.234168,0.483652,0.222248, + 0.011777,0.873735,0.486259,-0.001224,0.5,0.222248, + -0.979828,0.199828,-0.002375,-0.299415,0.418387,-0.380912, + -0.999999,0,-0.001399,-0.345926,0,-0.380912, + -0.996185,0.087204,0.003347,-0.331315,0.208938,0.222248, + -0.439235,-0,0.898372,-0.166895,0,0.380912, + -0.662215,0.119119,0.739785,-0.257344,0.251982,0.320299, + -0.594501,-0.161247,0.787761,-0.257344,-0.251982,0.320299, + -0.996185,0.087204,0.003347,-0.331315,0.208938,0.222248, + -0.999999,0,-0.001399,-0.345926,0,-0.380912, + -0.996185,-0.087205,0.003347,-0.331315,-0.208938,0.222248, + -0.743012,0.091749,0.66296,-0.257344,0.251982,0.320299, + -0.806304,-0.04159,0.590037,-0.331315,-0.208938,0.222248, + -0.726863,-0.090005,0.680859,-0.257344,-0.251982,0.320299, + -0.806304,-0.04159,0.590037,-0.331315,-0.208938,0.222248, + -0.743012,0.091749,0.66296,-0.257344,0.251982,0.320299, + -0.809725,0.0624,0.583482,-0.331315,0.208938,0.222248 +}; +static const struct gllist toaster_frame = { GL_N3F_V3F, GL_TRIANGLES, 366, toaster_data, 0 }; +const struct gllist *toaster = &toaster_frame; diff --git a/hacks/glx/toaster.dxf b/hacks/glx/toaster.dxf new file mode 100644 index 0000000..c1cedfa --- /dev/null +++ b/hacks/glx/toaster.dxf @@ -0,0 +1,3674 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +-59.550893 +20 +-98.304297 +30 +46.749999 +11 +-49.257401 +21 +-101.736418 +31 +-80.124995 +12 +-49.257401 +22 +-101.736418 +32 +46.749999 +13 +-49.257401 +23 +-101.736418 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-0.257406 +20 +105.175312 +30 +46.749999 +11 +-49.257401 +21 +101.736418 +31 +-80.124995 +12 +-49.257401 +22 +101.736418 +32 +46.749999 +13 +-49.257401 +23 +101.736418 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-37.633746 +20 +-95.756860 +30 +58.749998 +11 +-49.257401 +21 +-101.736418 +31 +46.749999 +12 +-0.257406 +22 +-105.175312 +32 +46.749999 +13 +-0.257406 +23 +-105.175312 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-72.765693 +20 +0.000000 +30 +-80.124995 +11 +-62.982058 +21 +-88.007949 +31 +-80.124995 +12 +-69.692379 +22 +-43.950311 +32 +46.749999 +13 +-69.692379 +23 +-43.950311 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +69.692395 +20 +43.950311 +30 +46.749999 +11 +69.692395 +21 +-43.950311 +31 +46.749999 +12 +72.765693 +22 +0.000000 +32 +-80.124995 +13 +72.765693 +23 +0.000000 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-0.257406 +20 +105.175312 +30 +46.749999 +11 +49.257405 +21 +101.736418 +31 +-80.124995 +12 +-49.257401 +22 +101.736418 +32 +-80.124995 +13 +-49.257401 +23 +101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.257401 +20 +-101.736418 +30 +46.749999 +11 +-49.257401 +21 +-101.736418 +31 +-80.124995 +12 +-0.257406 +22 +-105.175312 +32 +46.749999 +13 +-0.257406 +23 +-105.175312 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +61.618173 +20 +92.100747 +30 +-29.692172 +11 +62.982058 +21 +88.007949 +31 +46.749999 +12 +62.982058 +22 +88.007949 +32 +-80.124995 +13 +62.982058 +23 +88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +88.007949 +30 +46.749999 +11 +61.618173 +21 +92.100747 +31 +-29.692172 +12 +59.550897 +22 +98.304297 +32 +46.749999 +13 +59.550897 +23 +98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +59.550897 +20 +98.304297 +30 +46.749999 +11 +61.618173 +21 +92.100747 +31 +-29.692172 +12 +60.584535 +22 +95.202526 +32 +8.528915 +13 +60.584535 +23 +95.202526 +33 +8.528915 +0 +3DFACE +8 +0 + 62 +55 +10 +59.550897 +20 +98.304297 +30 +46.749999 +11 +59.550897 +21 +98.304297 +31 +-80.124995 +12 +49.257405 +22 +101.736418 +32 +46.749999 +13 +49.257405 +23 +101.736418 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +59.550897 +20 +98.304297 +30 +-80.124995 +11 +61.618173 +21 +92.100747 +31 +-29.692172 +12 +62.982058 +22 +88.007949 +32 +-80.124995 +13 +62.982058 +23 +88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +61.618173 +20 +92.100747 +30 +-29.692172 +11 +59.550897 +21 +98.304297 +31 +-80.124995 +12 +60.584535 +22 +95.202526 +32 +8.528915 +13 +60.584535 +23 +95.202526 +33 +8.528915 +0 +3DFACE +8 +0 + 62 +55 +10 +60.584535 +20 +95.202526 +30 +8.528915 +11 +59.550897 +21 +98.304297 +31 +-80.124995 +12 +59.550897 +22 +98.304297 +32 +46.749999 +13 +59.550897 +23 +98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +11.379375 +20 +53.004574 +30 +75.124998 +11 +-11.379373 +21 +53.004574 +31 +75.124998 +12 +11.230625 +22 +0.000000 +32 +80.124995 +13 +11.230625 +23 +0.000000 +33 +80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-54.132399 +20 +53.004574 +30 +67.374997 +11 +-65.644221 +21 +70.529158 +31 +46.749999 +12 +-69.692379 +22 +43.950311 +32 +46.749999 +13 +-69.692379 +23 +43.950311 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-65.644221 +20 +70.529158 +30 +46.749999 +11 +-54.132399 +21 +53.004574 +31 +67.374997 +12 +-62.982058 +22 +88.007949 +32 +46.749999 +13 +-62.982058 +23 +88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-65.644221 +20 +70.529158 +30 +46.749999 +11 +-62.982058 +21 +88.007949 +31 +46.749999 +12 +-64.289076 +22 +79.426547 +32 +46.749999 +13 +-64.289076 +23 +79.426547 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +54.132404 +20 +-53.004570 +30 +67.374997 +11 +35.106469 +21 +0.000000 +31 +80.124995 +12 +35.106469 +22 +-53.004570 +32 +75.124998 +13 +35.106469 +23 +-53.004570 +33 +75.124998 +0 +3DFACE +8 +0 + 62 +55 +10 +54.132404 +20 +53.004574 +30 +67.374997 +11 +35.106469 +21 +53.004574 +31 +75.124998 +12 +35.106469 +22 +0.000000 +32 +80.124995 +13 +35.106469 +23 +0.000000 +33 +80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +69.692395 +20 +-43.950311 +30 +46.749999 +11 +54.132404 +21 +53.004574 +31 +67.374997 +12 +54.132404 +22 +-53.004570 +32 +67.374997 +13 +54.132404 +23 +-53.004570 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +54.132404 +20 +53.004574 +30 +67.374997 +11 +69.692395 +21 +-43.950311 +31 +46.749999 +12 +69.692395 +22 +43.950311 +32 +46.749999 +13 +69.692395 +23 +43.950311 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +11.230625 +20 +0.000000 +30 +80.124995 +11 +-11.379373 +21 +53.004574 +31 +75.124998 +12 +-11.230623 +22 +0.000000 +32 +80.124995 +13 +-11.230623 +23 +0.000000 +33 +80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-65.644221 +20 +70.529158 +30 +46.749999 +11 +-62.982058 +21 +88.007949 +31 +-80.124995 +12 +-69.692379 +22 +43.950311 +32 +46.749999 +13 +-69.692379 +23 +43.950311 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +88.007949 +30 +-80.124995 +11 +-65.644221 +21 +70.529158 +31 +46.749999 +12 +-64.289076 +22 +79.426547 +32 +46.749999 +13 +-64.289076 +23 +79.426547 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +88.007949 +30 +-80.124995 +11 +-64.289076 +21 +79.426547 +31 +46.749999 +12 +-62.982058 +22 +88.007949 +32 +46.749999 +13 +-62.982058 +23 +88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-54.132399 +20 +-53.004570 +30 +67.374997 +11 +-62.982058 +21 +-88.007949 +31 +46.749999 +12 +-59.550893 +22 +-98.304297 +32 +46.749999 +13 +-59.550893 +23 +-98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-37.633746 +20 +-95.756860 +30 +58.749998 +11 +-59.550893 +21 +-98.304297 +31 +46.749999 +12 +-49.257401 +22 +-101.736418 +32 +46.749999 +13 +-49.257401 +23 +-101.736418 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-37.633746 +20 +-95.756860 +30 +58.749998 +11 +-54.132399 +21 +-53.004570 +31 +67.374997 +12 +-59.550893 +22 +-98.304297 +32 +46.749999 +13 +-59.550893 +23 +-98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +88.007949 +30 +46.749999 +11 +-60.187034 +21 +96.395348 +31 +23.227255 +12 +-62.982058 +22 +88.007949 +32 +-80.124995 +13 +-62.982058 +23 +88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-60.187034 +20 +96.395348 +30 +23.227255 +11 +-62.982058 +21 +88.007949 +31 +46.749999 +12 +-59.550893 +22 +98.304297 +32 +46.749999 +13 +-59.550893 +23 +98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-60.187034 +20 +96.395348 +30 +23.227255 +11 +-59.550893 +21 +98.304297 +31 +46.749999 +12 +-60.038836 +22 +96.840066 +32 +28.707243 +13 +-60.038836 +23 +96.840066 +33 +28.707243 +0 +3DFACE +8 +0 + 62 +55 +10 +-60.187034 +20 +96.395348 +30 +23.227255 +11 +-59.550893 +21 +98.304297 +31 +-80.124995 +12 +-62.982058 +22 +88.007949 +32 +-80.124995 +13 +-62.982058 +23 +88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-59.550893 +20 +98.304297 +30 +-80.124995 +11 +-60.187034 +21 +96.395348 +31 +23.227255 +12 +-60.038836 +22 +96.840066 +32 +28.707243 +13 +-60.038836 +23 +96.840066 +33 +28.707243 +0 +3DFACE +8 +0 + 62 +55 +10 +-59.550893 +20 +98.304297 +30 +-80.124995 +11 +-60.038836 +21 +96.840066 +31 +28.707243 +12 +-59.550893 +22 +98.304297 +32 +46.749999 +13 +-59.550893 +23 +98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-48.757403 +20 +88.007949 +30 +57.999999 +11 +-49.257401 +21 +101.736418 +31 +46.749999 +12 +-59.550893 +22 +98.304297 +32 +46.749999 +13 +-59.550893 +23 +98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +11.379375 +20 +95.756860 +30 +58.749998 +11 +-0.257406 +21 +105.175312 +31 +46.749999 +12 +-11.379373 +22 +95.756860 +32 +58.749998 +13 +-11.379373 +23 +95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +11.379375 +20 +-95.756860 +30 +58.749998 +11 +-11.379373 +21 +-95.756860 +31 +58.749998 +12 +-0.257406 +22 +-105.175312 +32 +46.749999 +13 +-0.257406 +23 +-105.175312 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-11.379373 +20 +-95.756860 +30 +58.749998 +11 +11.379375 +21 +-95.756860 +31 +58.749998 +12 +0.000001 +22 +-95.756860 +32 +58.749998 +13 +0.000001 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +0.000001 +20 +-95.756860 +30 +58.749998 +11 +-11.379373 +21 +-53.004570 +31 +75.124998 +12 +-11.379373 +22 +-95.756860 +32 +58.749998 +13 +-11.379373 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +-11.379373 +20 +-53.004570 +30 +75.124998 +11 +0.000001 +21 +-95.756860 +31 +58.749998 +12 +11.379375 +22 +-95.756860 +32 +58.749998 +13 +11.379375 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +-35.106469 +20 +-53.004570 +30 +75.124998 +11 +-54.132399 +21 +-53.004570 +31 +67.374997 +12 +-37.633746 +22 +-95.756860 +32 +58.749998 +13 +-37.633746 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +-11.379373 +20 +95.756860 +30 +58.749998 +11 +-0.257406 +21 +105.175312 +31 +46.749999 +12 +-37.633746 +22 +95.756860 +32 +58.749998 +13 +-37.633746 +23 +95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +-48.757403 +20 +88.007949 +30 +57.999999 +11 +-62.982058 +21 +88.007949 +31 +46.749999 +12 +-54.132399 +22 +53.004574 +32 +67.374997 +13 +-54.132399 +23 +53.004574 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +59.550897 +20 +-98.304297 +30 +46.749999 +11 +54.132404 +21 +-53.004570 +31 +67.374997 +12 +37.633750 +22 +-95.756860 +32 +58.749998 +13 +37.633750 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +88.007949 +30 +-80.124995 +11 +67.045331 +21 +61.329929 +31 +46.749999 +12 +69.692395 +22 +43.950311 +32 +46.749999 +13 +69.692395 +23 +43.950311 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +67.045331 +20 +61.329929 +30 +46.749999 +11 +62.982058 +21 +88.007949 +31 +-80.124995 +12 +65.266704 +22 +73.007757 +32 +46.749999 +13 +65.266704 +23 +73.007757 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +65.266704 +20 +73.007757 +30 +46.749999 +11 +62.982058 +21 +88.007949 +31 +-80.124995 +12 +62.982058 +22 +88.007949 +32 +46.749999 +13 +62.982058 +23 +88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-37.633746 +20 +95.756860 +30 +58.749998 +11 +-49.257401 +21 +101.736418 +31 +46.749999 +12 +-48.757403 +22 +88.007949 +32 +57.999999 +13 +-48.757403 +23 +88.007949 +33 +57.999999 +0 +3DFACE +8 +0 + 62 +55 +10 +11.379375 +20 +-53.004570 +30 +75.124998 +11 +11.230625 +21 +0.000000 +31 +80.124995 +12 +-11.379373 +22 +-53.004570 +32 +75.124998 +13 +-11.379373 +23 +-53.004570 +33 +75.124998 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +88.007949 +30 +-80.124995 +11 +69.692395 +21 +43.950311 +31 +46.749999 +12 +72.765693 +22 +0.000000 +32 +-80.124995 +13 +72.765693 +23 +0.000000 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +49.257405 +20 +-101.736418 +30 +-80.124995 +11 +1.704490 +21 +-102.603365 +31 +-48.139738 +12 +-49.257401 +22 +-101.736418 +32 +-80.124995 +13 +-49.257401 +23 +-101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +1.704490 +20 +-102.603365 +30 +-48.139738 +11 +49.257405 +21 +-101.736418 +31 +-80.124995 +12 +11.372780 +22 +-104.367574 +32 +16.949225 +13 +11.372780 +23 +-104.367574 +33 +16.949225 +0 +3DFACE +8 +0 + 62 +55 +10 +1.704490 +20 +-102.603365 +30 +-48.139738 +11 +11.372780 +21 +-104.367574 +31 +16.949225 +12 +1.704490 +22 +-104.464430 +32 +20.522543 +13 +1.704490 +23 +-104.464430 +33 +20.522543 +0 +3DFACE +8 +0 + 62 +55 +10 +1.704490 +20 +-104.464430 +30 +20.522543 +11 +11.372780 +21 +-104.367574 +31 +16.949225 +12 +-0.257406 +22 +-105.175312 +32 +46.749999 +13 +-0.257406 +23 +-105.175312 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +1.704490 +20 +-104.464430 +30 +20.522543 +11 +-0.257406 +21 +-105.175312 +31 +46.749999 +12 +-3.733010 +22 +-104.464430 +32 +20.522543 +13 +-3.733010 +23 +-104.464430 +33 +20.522543 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.257401 +20 +-101.736418 +30 +-80.124995 +11 +-3.733010 +21 +-104.464430 +31 +20.522543 +12 +-0.257406 +22 +-105.175312 +32 +46.749999 +13 +-0.257406 +23 +-105.175312 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-3.733010 +20 +-104.464430 +30 +20.522543 +11 +-49.257401 +21 +-101.736418 +31 +-80.124995 +12 +-3.733010 +22 +-102.603365 +32 +-48.139738 +13 +-3.733010 +23 +-102.603365 +33 +-48.139738 +0 +3DFACE +8 +0 + 62 +55 +10 +-3.733010 +20 +-102.603365 +30 +-48.139738 +11 +-49.257401 +21 +-101.736418 +31 +-80.124995 +12 +1.704490 +22 +-102.603365 +32 +-48.139738 +13 +1.704490 +23 +-102.603365 +33 +-48.139738 +0 +3DFACE +8 +0 + 62 +55 +10 +-69.692379 +20 +-43.950311 +30 +46.749999 +11 +-62.982058 +21 +-88.007949 +31 +46.749999 +12 +-54.132399 +22 +-53.004570 +32 +67.374997 +13 +-54.132399 +23 +-53.004570 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +-37.633746 +20 +-95.756860 +30 +58.749998 +11 +-0.257406 +21 +-105.175312 +31 +46.749999 +12 +-11.379373 +22 +-95.756860 +32 +58.749998 +13 +-11.379373 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +11.379375 +20 +95.756860 +30 +58.749998 +11 +-11.379373 +21 +95.756860 +31 +58.749998 +12 +-11.379373 +22 +53.004574 +32 +75.124998 +13 +-11.379373 +23 +53.004574 +33 +75.124998 +0 +3DFACE +8 +0 + 62 +55 +10 +-35.106469 +20 +53.004574 +30 +75.124998 +11 +-48.757403 +21 +88.007949 +31 +57.999999 +12 +-54.132399 +22 +53.004574 +32 +67.374997 +13 +-54.132399 +23 +53.004574 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +-35.106469 +20 +53.004574 +30 +75.124998 +11 +-37.633746 +21 +95.756860 +31 +58.749998 +12 +-48.757403 +22 +88.007949 +32 +57.999999 +13 +-48.757403 +23 +88.007949 +33 +57.999999 +0 +3DFACE +8 +0 + 62 +55 +10 +49.257405 +20 +-101.736418 +30 +46.749999 +11 +11.372780 +21 +-104.367574 +31 +16.949225 +12 +49.257405 +22 +-101.736418 +32 +-80.124995 +13 +49.257405 +23 +-101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +11.372780 +20 +-104.367574 +30 +16.949225 +11 +49.257405 +21 +-101.736418 +31 +46.749999 +12 +-0.257406 +22 +-105.175312 +32 +46.749999 +13 +-0.257406 +23 +-105.175312 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +88.007949 +30 +-80.124995 +11 +-62.982058 +21 +-88.007949 +31 +-80.124995 +12 +-72.765693 +22 +0.000000 +32 +-80.124995 +13 +-72.765693 +23 +0.000000 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +-88.007949 +30 +-80.124995 +11 +-62.982058 +21 +88.007949 +31 +-80.124995 +12 +-59.550893 +22 +98.304297 +32 +-80.124995 +13 +-59.550893 +23 +98.304297 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +-88.007949 +30 +-80.124995 +11 +-59.550893 +21 +98.304297 +31 +-80.124995 +12 +-59.550893 +22 +-98.304297 +32 +-80.124995 +13 +-59.550893 +23 +-98.304297 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-59.550893 +20 +-98.304297 +30 +-80.124995 +11 +-59.550893 +21 +98.304297 +31 +-80.124995 +12 +-49.257401 +22 +101.736418 +32 +-80.124995 +13 +-49.257401 +23 +101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-59.550893 +20 +-98.304297 +30 +-80.124995 +11 +-49.257401 +21 +101.736418 +31 +-80.124995 +12 +-49.257401 +22 +-101.736418 +32 +-80.124995 +13 +-49.257401 +23 +-101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.257401 +20 +-101.736418 +30 +-80.124995 +11 +-49.257401 +21 +101.736418 +31 +-80.124995 +12 +49.257405 +22 +101.736418 +32 +-80.124995 +13 +49.257405 +23 +101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.257401 +20 +-101.736418 +30 +-80.124995 +11 +49.257405 +21 +101.736418 +31 +-80.124995 +12 +49.257405 +22 +-101.736418 +32 +-80.124995 +13 +49.257405 +23 +-101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +49.257405 +20 +-101.736418 +30 +-80.124995 +11 +49.257405 +21 +101.736418 +31 +-80.124995 +12 +59.550897 +22 +-98.304297 +32 +-80.124995 +13 +59.550897 +23 +-98.304297 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +59.550897 +20 +-98.304297 +30 +-80.124995 +11 +49.257405 +21 +101.736418 +31 +-80.124995 +12 +59.550897 +22 +98.304297 +32 +-80.124995 +13 +59.550897 +23 +98.304297 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +59.550897 +20 +-98.304297 +30 +-80.124995 +11 +59.550897 +21 +98.304297 +31 +-80.124995 +12 +62.982058 +22 +-88.007949 +32 +-80.124995 +13 +62.982058 +23 +-88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +-88.007949 +30 +-80.124995 +11 +59.550897 +21 +98.304297 +31 +-80.124995 +12 +62.982058 +22 +88.007949 +32 +-80.124995 +13 +62.982058 +23 +88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +-88.007949 +30 +-80.124995 +11 +62.982058 +21 +88.007949 +31 +-80.124995 +12 +72.765693 +22 +0.000000 +32 +-80.124995 +13 +72.765693 +23 +0.000000 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +-48.757403 +20 +88.007949 +30 +57.999999 +11 +-59.550893 +21 +98.304297 +31 +46.749999 +12 +-62.982058 +22 +88.007949 +32 +46.749999 +13 +-62.982058 +23 +88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +54.132404 +20 +-53.004570 +30 +67.374997 +11 +35.106469 +21 +-53.004570 +31 +75.124998 +12 +37.633750 +22 +-95.756860 +32 +58.749998 +13 +37.633750 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +37.633750 +20 +-95.756860 +30 +58.749998 +11 +49.257405 +21 +-101.736418 +31 +46.749999 +12 +59.550897 +22 +-98.304297 +32 +46.749999 +13 +59.550897 +23 +-98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +54.132404 +20 +-53.004570 +30 +67.374997 +11 +59.550897 +21 +-98.304297 +31 +46.749999 +12 +62.982058 +22 +-88.007949 +32 +46.749999 +13 +62.982058 +23 +-88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +11.379375 +20 +95.756860 +30 +58.749998 +11 +-11.379373 +21 +53.004574 +31 +75.124998 +12 +11.379375 +22 +53.004574 +32 +75.124998 +13 +11.379375 +23 +53.004574 +33 +75.124998 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +-88.007949 +30 +-80.124995 +11 +-59.550893 +21 +-98.304297 +31 +46.749999 +12 +-62.982058 +22 +-88.007949 +32 +46.749999 +13 +-62.982058 +23 +-88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-69.692379 +20 +-43.950311 +30 +46.749999 +11 +-62.982058 +21 +-88.007949 +31 +-80.124995 +12 +-62.982058 +22 +-88.007949 +32 +46.749999 +13 +-62.982058 +23 +-88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +11.230625 +20 +0.000000 +30 +80.124995 +11 +-11.230623 +21 +0.000000 +31 +80.124995 +12 +-11.379373 +22 +-53.004570 +32 +75.124998 +13 +-11.379373 +23 +-53.004570 +33 +75.124998 +0 +3DFACE +8 +0 + 62 +55 +10 +11.379375 +20 +-53.004570 +30 +75.124998 +11 +-11.379373 +21 +-53.004570 +31 +75.124998 +12 +11.379375 +22 +-95.756860 +32 +58.749998 +13 +11.379375 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.257401 +20 +101.736418 +30 +46.749999 +11 +-59.550893 +21 +98.304297 +31 +-80.124995 +12 +-59.550893 +22 +98.304297 +32 +46.749999 +13 +-59.550893 +23 +98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +-88.007949 +30 +-80.124995 +11 +59.550897 +21 +-98.304297 +31 +46.749999 +12 +59.550897 +22 +-98.304297 +32 +-80.124995 +13 +59.550897 +23 +-98.304297 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +49.257405 +20 +101.736418 +30 +46.749999 +11 +49.257405 +21 +101.736418 +31 +-80.124995 +12 +-0.257406 +22 +105.175312 +32 +46.749999 +13 +-0.257406 +23 +105.175312 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-37.633746 +20 +95.756860 +30 +58.749998 +11 +-0.257406 +21 +105.175312 +31 +46.749999 +12 +-49.257401 +22 +101.736418 +32 +46.749999 +13 +-49.257401 +23 +101.736418 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.257401 +20 +101.736418 +30 +46.749999 +11 +-49.257401 +21 +101.736418 +31 +-80.124995 +12 +-59.550893 +22 +98.304297 +32 +-80.124995 +13 +-59.550893 +23 +98.304297 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +49.257405 +20 +101.736418 +30 +46.749999 +11 +37.633750 +21 +95.756860 +31 +58.749998 +12 +48.757407 +22 +88.007949 +32 +57.999999 +13 +48.757407 +23 +88.007949 +33 +57.999999 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +-88.007949 +30 +-80.124995 +11 +-59.550893 +21 +-98.304297 +31 +-80.124995 +12 +-59.550893 +22 +-98.304297 +32 +46.749999 +13 +-59.550893 +23 +-98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-59.550893 +20 +-98.304297 +30 +46.749999 +11 +-59.550893 +21 +-98.304297 +31 +-80.124995 +12 +-49.257401 +22 +-101.736418 +32 +-80.124995 +13 +-49.257401 +23 +-101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +11.379375 +20 +-95.756860 +30 +58.749998 +11 +-0.257406 +21 +-105.175312 +31 +46.749999 +12 +37.633750 +22 +-95.756860 +32 +58.749998 +13 +37.633750 +23 +-95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +88.007949 +30 +46.749999 +11 +48.757407 +21 +88.007949 +31 +57.999999 +12 +54.132404 +22 +53.004574 +32 +67.374997 +13 +54.132404 +23 +53.004574 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +88.007949 +30 +46.749999 +11 +59.550897 +21 +98.304297 +31 +46.749999 +12 +48.757407 +22 +88.007949 +32 +57.999999 +13 +48.757407 +23 +88.007949 +33 +57.999999 +0 +3DFACE +8 +0 + 62 +55 +10 +54.132404 +20 +53.004574 +30 +67.374997 +11 +48.757407 +21 +88.007949 +31 +57.999999 +12 +35.106469 +22 +53.004574 +32 +75.124998 +13 +35.106469 +23 +53.004574 +33 +75.124998 +0 +3DFACE +8 +0 + 62 +55 +10 +54.132404 +20 +53.004574 +30 +67.374997 +11 +35.106469 +21 +0.000000 +31 +80.124995 +12 +54.132404 +22 +-53.004570 +32 +67.374997 +13 +54.132404 +23 +-53.004570 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +72.765693 +20 +0.000000 +30 +-80.124995 +11 +69.692395 +21 +-43.950311 +31 +46.749999 +12 +62.982058 +22 +-88.007949 +32 +-80.124995 +13 +62.982058 +23 +-88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +48.757407 +20 +88.007949 +30 +57.999999 +11 +37.633750 +21 +95.756860 +31 +58.749998 +12 +35.106469 +22 +53.004574 +32 +75.124998 +13 +35.106469 +23 +53.004574 +33 +75.124998 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +-88.007949 +30 +46.749999 +11 +59.550897 +21 +-98.304297 +31 +46.749999 +12 +62.982058 +22 +-88.007949 +32 +-80.124995 +13 +62.982058 +23 +-88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +37.633750 +20 +-95.756860 +30 +58.749998 +11 +-0.257406 +21 +-105.175312 +31 +46.749999 +12 +49.257405 +22 +-101.736418 +32 +46.749999 +13 +49.257405 +23 +-101.736418 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +69.692395 +20 +-43.950311 +30 +46.749999 +11 +54.132404 +21 +-53.004570 +31 +67.374997 +12 +62.982058 +22 +-88.007949 +32 +46.749999 +13 +62.982058 +23 +-88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +37.633750 +20 +95.756860 +30 +58.749998 +11 +-0.257406 +21 +105.175312 +31 +46.749999 +12 +11.379375 +22 +95.756860 +32 +58.749998 +13 +11.379375 +23 +95.756860 +33 +58.749998 +0 +3DFACE +8 +0 + 62 +55 +10 +49.257405 +20 +101.736418 +30 +46.749999 +11 +59.550897 +21 +98.304297 +31 +-80.124995 +12 +49.257405 +22 +101.736418 +32 +-80.124995 +13 +49.257405 +23 +101.736418 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +67.045331 +20 +61.329929 +30 +46.749999 +11 +54.132404 +21 +53.004574 +31 +67.374997 +12 +69.692395 +22 +43.950311 +32 +46.749999 +13 +69.692395 +23 +43.950311 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +54.132404 +20 +53.004574 +30 +67.374997 +11 +67.045331 +21 +61.329929 +31 +46.749999 +12 +62.982058 +22 +88.007949 +32 +46.749999 +13 +62.982058 +23 +88.007949 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +62.982058 +20 +88.007949 +30 +46.749999 +11 +67.045331 +21 +61.329929 +31 +46.749999 +12 +65.266704 +22 +73.007757 +32 +46.749999 +13 +65.266704 +23 +73.007757 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +49.257405 +20 +-101.736418 +30 +46.749999 +11 +49.257405 +21 +-101.736418 +31 +-80.124995 +12 +59.550897 +22 +-98.304297 +32 +46.749999 +13 +59.550897 +23 +-98.304297 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +59.550897 +20 +-98.304297 +30 +46.749999 +11 +49.257405 +21 +-101.736418 +31 +-80.124995 +12 +59.550897 +22 +-98.304297 +32 +-80.124995 +13 +59.550897 +23 +-98.304297 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +69.692395 +20 +-43.950311 +30 +46.749999 +11 +62.982058 +21 +-88.007949 +31 +46.749999 +12 +62.982058 +22 +-88.007949 +32 +-80.124995 +13 +62.982058 +23 +-88.007949 +33 +-80.124995 +0 +3DFACE +8 +0 + 62 +55 +10 +59.550897 +20 +98.304297 +30 +46.749999 +11 +49.257405 +21 +101.736418 +31 +46.749999 +12 +48.757407 +22 +88.007949 +32 +57.999999 +13 +48.757407 +23 +88.007949 +33 +57.999999 +0 +3DFACE +8 +0 + 62 +55 +10 +-35.106469 +20 +0.000000 +30 +80.124995 +11 +-54.132399 +21 +-53.004570 +31 +67.374997 +12 +-35.106469 +22 +-53.004570 +32 +75.124998 +13 +-35.106469 +23 +-53.004570 +33 +75.124998 +0 +3DFACE +8 +0 + 62 +55 +10 +-35.106469 +20 +0.000000 +30 +80.124995 +11 +-35.106469 +21 +53.004574 +31 +75.124998 +12 +-54.132399 +22 +53.004574 +32 +67.374997 +13 +-54.132399 +23 +53.004574 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +37.633750 +20 +95.756860 +30 +58.749998 +11 +49.257405 +21 +101.736418 +31 +46.749999 +12 +-0.257406 +22 +105.175312 +32 +46.749999 +13 +-0.257406 +23 +105.175312 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-62.982058 +20 +88.007949 +30 +-80.124995 +11 +-72.765693 +21 +0.000000 +31 +-80.124995 +12 +-69.692379 +22 +43.950311 +32 +46.749999 +13 +-69.692379 +23 +43.950311 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-35.106469 +20 +0.000000 +30 +80.124995 +11 +-54.132399 +21 +53.004574 +31 +67.374997 +12 +-54.132399 +22 +-53.004570 +32 +67.374997 +13 +-54.132399 +23 +-53.004570 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +-69.692379 +20 +43.950311 +30 +46.749999 +11 +-72.765693 +21 +0.000000 +31 +-80.124995 +12 +-69.692379 +22 +-43.950311 +32 +46.749999 +13 +-69.692379 +23 +-43.950311 +33 +46.749999 +0 +3DFACE +8 +0 + 62 +55 +10 +-54.132399 +20 +53.004574 +30 +67.374997 +11 +-69.692379 +21 +-43.950311 +31 +46.749999 +12 +-54.132399 +22 +-53.004570 +32 +67.374997 +13 +-54.132399 +23 +-53.004570 +33 +67.374997 +0 +3DFACE +8 +0 + 62 +55 +10 +-69.692379 +20 +-43.950311 +30 +46.749999 +11 +-54.132399 +21 +53.004574 +31 +67.374997 +12 +-69.692379 +22 +43.950311 +32 +46.749999 +13 +-69.692379 +23 +43.950311 +33 +46.749999 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toaster_base.c b/hacks/glx/toaster_base.c new file mode 100644 index 0000000..a444ad5 --- /dev/null +++ b/hacks/glx/toaster_base.c @@ -0,0 +1,130 @@ +/* Generated from "toaster_base.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toaster_base_data[] = { + -0.10666,0.994296,0,-0.242083,0.5,0.052679, + 0.10666,0.994296,0,0.242083,0.5,-0.052679, + -0.21332,0.976982,0,-0.242083,0.5,-0.052679, + 0.10666,0.994296,0,0.242083,0.5,-0.052679, + -0.10666,0.994296,0,-0.242083,0.5,0.052679, + 0.213319,0.976983,0,0.242083,0.5,0.052679, + 0.983679,0.17993,0,0.309535,0.432529,-0.052679, + 0.999314,0.03703,0,0.357619,0,0.052679, + 0.999314,-0.03703,0,0.357619,0,-0.052679, + 0.999314,0.03703,0,0.357619,0,0.052679, + 0.983679,0.17993,0,0.309535,0.432529,-0.052679, + 0.968549,0.248824,0,0.309535,0.432529,0.052679, + 0.10666,-0.994296,0,0.242083,-0.5,0.052679, + -0.10666,-0.994296,0,-0.242083,-0.5,-0.052679, + 0.213319,-0.976983,0,0.242083,-0.5,-0.052679, + -0.10666,-0.994296,0,-0.242083,-0.5,-0.052679, + 0.10666,-0.994296,0,0.242083,-0.5,0.052679, + -0.21332,-0.976982,0,-0.242083,-0.5,0.052679, + -0.983679,0.17993,0,-0.309535,0.432529,0.052679, + -0.999314,0.03703,0,-0.357619,0,-0.052679, + -0.999314,-0.03703,0,-0.357619,0,0.052679, + -0.999314,0.03703,0,-0.357619,0,-0.052679, + -0.983679,0.17993,0,-0.309535,0.432529,0.052679, + -0.968549,0.248824,0,-0.309535,0.432529,-0.052679, + 0,0,-1,-0.309535,0.432529,-0.052679, + 0,0,-1,-0.309535,-0.432529,-0.052679, + 0,0,-1,-0.357619,0,-0.052679, + 0,0,-1,-0.309535,-0.432529,-0.052679, + 0,0,-1,-0.309535,0.432529,-0.052679, + 0,0,-1,-0.292672,0.483132,-0.052679, + 0,0,-1,-0.309535,-0.432529,-0.052679, + 0,0,-1,-0.292672,0.483132,-0.052679, + 0,0,-1,-0.292672,-0.483132,-0.052679, + 0,0,-1,-0.292672,-0.483132,-0.052679, + 0,0,-1,-0.292672,0.483132,-0.052679, + 0,0,-1,-0.242083,0.5,-0.052679, + 0,0,-1,-0.292672,-0.483132,-0.052679, + 0,0,-1,-0.242083,0.5,-0.052679, + 0,0,-1,-0.242083,-0.5,-0.052679, + 0,0,-1,-0.242083,-0.5,-0.052679, + 0,0,-1,-0.242083,0.5,-0.052679, + 0,0,-1,0.242083,0.5,-0.052679, + 0,0,-1,-0.242083,-0.5,-0.052679, + 0,0,-1,0.242083,0.5,-0.052679, + 0,0,-1,0.242083,-0.5,-0.052679, + 0,0,-1,0.242083,-0.5,-0.052679, + 0,0,-1,0.242083,0.5,-0.052679, + 0,0,-1,0.292672,-0.483132,-0.052679, + 0,0,-1,0.292672,-0.483132,-0.052679, + 0,0,-1,0.242083,0.5,-0.052679, + 0,0,-1,0.292672,0.483132,-0.052679, + 0,0,-1,0.292672,-0.483132,-0.052679, + 0,0,-1,0.292672,0.483132,-0.052679, + 0,0,-1,0.309535,-0.432529,-0.052679, + 0,0,-1,0.309535,-0.432529,-0.052679, + 0,0,-1,0.292672,0.483132,-0.052679, + 0,0,-1,0.309535,0.432529,-0.052679, + 0,0,-1,0.309535,-0.432529,-0.052679, + 0,0,-1,0.309535,0.432529,-0.052679, + 0,0,-1,0.357619,0,-0.052679, + 0.999314,-0.03703,0,0.357619,0,-0.052679, + 0.983679,-0.17993,0,0.309535,-0.432529,0.052679, + 0.968549,-0.248824,0,0.309535,-0.432529,-0.052679, + 0.983679,-0.17993,0,0.309535,-0.432529,0.052679, + 0.999314,-0.03703,0,0.357619,0,-0.052679, + 0.999314,0.03703,0,0.357619,0,0.052679, + -0.999314,-0.03703,0,-0.357619,0,0.052679, + -0.983679,-0.17993,0,-0.309535,-0.432529,-0.052679, + -0.968549,-0.248824,0,-0.309535,-0.432529,0.052679, + -0.983679,-0.17993,0,-0.309535,-0.432529,-0.052679, + -0.999314,-0.03703,0,-0.357619,0,0.052679, + -0.999314,0.03703,0,-0.357619,0,-0.052679, + -0.968549,-0.248824,0,-0.309535,-0.432529,0.052679, + -0.948709,-0.316149,0,-0.292672,-0.483132,-0.052679, + -0.948709,-0.316149,0,-0.292672,-0.483132,0.052679, + -0.948709,-0.316149,0,-0.292672,-0.483132,-0.052679, + -0.968549,-0.248824,0,-0.309535,-0.432529,0.052679, + -0.983679,-0.17993,0,-0.309535,-0.432529,-0.052679, + -0.21332,-0.976982,0,-0.242083,-0.5,0.052679, + -0.316307,-0.948657,0,-0.292672,-0.483132,-0.052679, + -0.10666,-0.994296,0,-0.242083,-0.5,-0.052679, + -0.316307,-0.948657,0,-0.292672,-0.483132,-0.052679, + -0.21332,-0.976982,0,-0.242083,-0.5,0.052679, + -0.316307,-0.948657,0,-0.292672,-0.483132,0.052679, + 0.316307,-0.948657,0,0.292672,-0.483132,0.052679, + 0.213319,-0.976983,0,0.242083,-0.5,-0.052679, + 0.316307,-0.948657,0,0.292672,-0.483132,-0.052679, + 0.213319,-0.976983,0,0.242083,-0.5,-0.052679, + 0.316307,-0.948657,0,0.292672,-0.483132,0.052679, + 0.10666,-0.994296,0,0.242083,-0.5,0.052679, + 0.968549,-0.248824,0,0.309535,-0.432529,-0.052679, + 0.948709,-0.316149,0,0.292672,-0.483132,0.052679, + 0.948709,-0.316149,0,0.292672,-0.483132,-0.052679, + 0.948709,-0.316149,0,0.292672,-0.483132,0.052679, + 0.968549,-0.248824,0,0.309535,-0.432529,-0.052679, + 0.983679,-0.17993,0,0.309535,-0.432529,0.052679, + 0.213319,0.976983,0,0.242083,0.5,0.052679, + 0.316307,0.948657,0,0.292672,0.483132,-0.052679, + 0.10666,0.994296,0,0.242083,0.5,-0.052679, + 0.316307,0.948657,0,0.292672,0.483132,-0.052679, + 0.213319,0.976983,0,0.242083,0.5,0.052679, + 0.316307,0.948657,0,0.292672,0.483132,0.052679, + 0.948709,0.316149,0,0.292672,0.483132,-0.052679, + 0.968549,0.248824,0,0.309535,0.432529,0.052679, + 0.983679,0.17993,0,0.309535,0.432529,-0.052679, + 0.968549,0.248824,0,0.309535,0.432529,0.052679, + 0.948709,0.316149,0,0.292672,0.483132,-0.052679, + 0.948709,0.316149,0,0.292672,0.483132,0.052679, + -0.948709,0.316149,0,-0.292672,0.483132,0.052679, + -0.968549,0.248824,0,-0.309535,0.432529,-0.052679, + -0.983679,0.17993,0,-0.309535,0.432529,0.052679, + -0.968549,0.248824,0,-0.309535,0.432529,-0.052679, + -0.948709,0.316149,0,-0.292672,0.483132,0.052679, + -0.948709,0.316149,0,-0.292672,0.483132,-0.052679, + -0.316307,0.948657,0,-0.292672,0.483132,0.052679, + -0.21332,0.976982,0,-0.242083,0.5,-0.052679, + -0.316307,0.948657,0,-0.292672,0.483132,-0.052679, + -0.21332,0.976982,0,-0.242083,0.5,-0.052679, + -0.316307,0.948657,0,-0.292672,0.483132,0.052679, + -0.10666,0.994296,0,-0.242083,0.5,0.052679 +}; +static const struct gllist toaster_base_frame = { GL_N3F_V3F, GL_TRIANGLES, 120, toaster_base_data, 0 }; +const struct gllist *toaster_base = &toaster_base_frame; diff --git a/hacks/glx/toaster_base.dxf b/hacks/glx/toaster_base.dxf new file mode 100644 index 0000000..d1cb7c5 --- /dev/null +++ b/hacks/glx/toaster_base.dxf @@ -0,0 +1,1214 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +-213.358000 +20 +440.670401 +30 +46.428166 +11 +213.358015 +21 +440.670401 +31 +-46.428166 +12 +-213.358000 +22 +440.670401 +32 +-46.428166 +13 +-213.358000 +23 +440.670401 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +213.358015 +20 +440.670401 +30 +-46.428166 +11 +-213.358000 +21 +440.670401 +31 +46.428166 +12 +213.358015 +22 +440.670401 +32 +46.428166 +13 +213.358015 +23 +440.670401 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +272.806257 +20 +381.205648 +30 +-46.428166 +11 +315.183967 +21 +0.000001 +31 +46.428166 +12 +315.183967 +22 +0.000001 +32 +-46.428166 +13 +315.183967 +23 +0.000001 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +315.183967 +20 +0.000001 +30 +46.428166 +11 +272.806257 +21 +381.205648 +31 +-46.428166 +12 +272.806257 +22 +381.205648 +32 +46.428166 +13 +272.806257 +23 +381.205648 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +213.358015 +20 +-440.670401 +30 +46.428166 +11 +-213.358000 +21 +-440.670401 +31 +-46.428166 +12 +213.358015 +22 +-440.670401 +32 +-46.428166 +13 +213.358015 +23 +-440.670401 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-213.358000 +20 +-440.670401 +30 +-46.428166 +11 +213.358015 +21 +-440.670401 +31 +46.428166 +12 +-213.358000 +22 +-440.670401 +32 +46.428166 +13 +-213.358000 +23 +-440.670401 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-272.806227 +20 +381.205648 +30 +46.428166 +11 +-315.183967 +21 +0.000001 +31 +-46.428166 +12 +-315.183967 +22 +0.000001 +32 +46.428166 +13 +-315.183967 +23 +0.000001 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-315.183967 +20 +0.000001 +30 +-46.428166 +11 +-272.806227 +21 +381.205648 +31 +46.428166 +12 +-272.806227 +22 +381.205648 +32 +-46.428166 +13 +-272.806227 +23 +381.205648 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-272.806227 +20 +381.205648 +30 +-46.428166 +11 +-272.806227 +21 +-381.205648 +31 +-46.428166 +12 +-315.183967 +22 +0.000001 +32 +-46.428166 +13 +-315.183967 +23 +0.000001 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-272.806227 +20 +-381.205648 +30 +-46.428166 +11 +-272.806227 +21 +381.205648 +31 +-46.428166 +12 +-257.944137 +22 +425.804198 +32 +-46.428166 +13 +-257.944137 +23 +425.804198 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-272.806227 +20 +-381.205648 +30 +-46.428166 +11 +-257.944137 +21 +425.804198 +31 +-46.428166 +12 +-257.944137 +22 +-425.804198 +32 +-46.428166 +13 +-257.944137 +23 +-425.804198 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-257.944137 +20 +-425.804198 +30 +-46.428166 +11 +-257.944137 +21 +425.804198 +31 +-46.428166 +12 +-213.358000 +22 +440.670401 +32 +-46.428166 +13 +-213.358000 +23 +440.670401 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-257.944137 +20 +-425.804198 +30 +-46.428166 +11 +-213.358000 +21 +440.670401 +31 +-46.428166 +12 +-213.358000 +22 +-440.670401 +32 +-46.428166 +13 +-213.358000 +23 +-440.670401 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-213.358000 +20 +-440.670401 +30 +-46.428166 +11 +-213.358000 +21 +440.670401 +31 +-46.428166 +12 +213.358015 +22 +440.670401 +32 +-46.428166 +13 +213.358015 +23 +440.670401 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-213.358000 +20 +-440.670401 +30 +-46.428166 +11 +213.358015 +21 +440.670401 +31 +-46.428166 +12 +213.358015 +22 +-440.670401 +32 +-46.428166 +13 +213.358015 +23 +-440.670401 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +213.358015 +20 +-440.670401 +30 +-46.428166 +11 +213.358015 +21 +440.670401 +31 +-46.428166 +12 +257.944167 +22 +-425.804198 +32 +-46.428166 +13 +257.944167 +23 +-425.804198 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +257.944167 +20 +-425.804198 +30 +-46.428166 +11 +213.358015 +21 +440.670401 +31 +-46.428166 +12 +257.944167 +22 +425.804198 +32 +-46.428166 +13 +257.944167 +23 +425.804198 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +257.944167 +20 +-425.804198 +30 +-46.428166 +11 +257.944167 +21 +425.804198 +31 +-46.428166 +12 +272.806257 +22 +-381.205648 +32 +-46.428166 +13 +272.806257 +23 +-381.205648 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +272.806257 +20 +-381.205648 +30 +-46.428166 +11 +257.944167 +21 +425.804198 +31 +-46.428166 +12 +272.806257 +22 +381.205648 +32 +-46.428166 +13 +272.806257 +23 +381.205648 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +272.806257 +20 +-381.205648 +30 +-46.428166 +11 +272.806257 +21 +381.205648 +31 +-46.428166 +12 +315.183967 +22 +0.000001 +32 +-46.428166 +13 +315.183967 +23 +0.000001 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +315.183967 +20 +0.000001 +30 +-46.428166 +11 +272.806257 +21 +-381.205648 +31 +46.428166 +12 +272.806257 +22 +-381.205648 +32 +-46.428166 +13 +272.806257 +23 +-381.205648 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +272.806257 +20 +-381.205648 +30 +46.428166 +11 +315.183967 +21 +0.000001 +31 +-46.428166 +12 +315.183967 +22 +0.000001 +32 +46.428166 +13 +315.183967 +23 +0.000001 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-315.183967 +20 +0.000001 +30 +46.428166 +11 +-272.806227 +21 +-381.205648 +31 +-46.428166 +12 +-272.806227 +22 +-381.205648 +32 +46.428166 +13 +-272.806227 +23 +-381.205648 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-272.806227 +20 +-381.205648 +30 +-46.428166 +11 +-315.183967 +21 +0.000001 +31 +46.428166 +12 +-315.183967 +22 +0.000001 +32 +-46.428166 +13 +-315.183967 +23 +0.000001 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-272.806227 +20 +-381.205648 +30 +46.428166 +11 +-257.944137 +21 +-425.804198 +31 +-46.428166 +12 +-257.944137 +22 +-425.804198 +32 +46.428166 +13 +-257.944137 +23 +-425.804198 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-257.944137 +20 +-425.804198 +30 +-46.428166 +11 +-272.806227 +21 +-381.205648 +31 +46.428166 +12 +-272.806227 +22 +-381.205648 +32 +-46.428166 +13 +-272.806227 +23 +-381.205648 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-213.358000 +20 +-440.670401 +30 +46.428166 +11 +-257.944137 +21 +-425.804198 +31 +-46.428166 +12 +-213.358000 +22 +-440.670401 +32 +-46.428166 +13 +-213.358000 +23 +-440.670401 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-257.944137 +20 +-425.804198 +30 +-46.428166 +11 +-213.358000 +21 +-440.670401 +31 +46.428166 +12 +-257.944137 +22 +-425.804198 +32 +46.428166 +13 +-257.944137 +23 +-425.804198 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +257.944167 +20 +-425.804198 +30 +46.428166 +11 +213.358015 +21 +-440.670401 +31 +-46.428166 +12 +257.944167 +22 +-425.804198 +32 +-46.428166 +13 +257.944167 +23 +-425.804198 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +213.358015 +20 +-440.670401 +30 +-46.428166 +11 +257.944167 +21 +-425.804198 +31 +46.428166 +12 +213.358015 +22 +-440.670401 +32 +46.428166 +13 +213.358015 +23 +-440.670401 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +272.806257 +20 +-381.205648 +30 +-46.428166 +11 +257.944167 +21 +-425.804198 +31 +46.428166 +12 +257.944167 +22 +-425.804198 +32 +-46.428166 +13 +257.944167 +23 +-425.804198 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +257.944167 +20 +-425.804198 +30 +46.428166 +11 +272.806257 +21 +-381.205648 +31 +-46.428166 +12 +272.806257 +22 +-381.205648 +32 +46.428166 +13 +272.806257 +23 +-381.205648 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +213.358015 +20 +440.670401 +30 +46.428166 +11 +257.944167 +21 +425.804198 +31 +-46.428166 +12 +213.358015 +22 +440.670401 +32 +-46.428166 +13 +213.358015 +23 +440.670401 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +257.944167 +20 +425.804198 +30 +-46.428166 +11 +213.358015 +21 +440.670401 +31 +46.428166 +12 +257.944167 +22 +425.804198 +32 +46.428166 +13 +257.944167 +23 +425.804198 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +257.944167 +20 +425.804198 +30 +-46.428166 +11 +272.806257 +21 +381.205648 +31 +46.428166 +12 +272.806257 +22 +381.205648 +32 +-46.428166 +13 +272.806257 +23 +381.205648 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +272.806257 +20 +381.205648 +30 +46.428166 +11 +257.944167 +21 +425.804198 +31 +-46.428166 +12 +257.944167 +22 +425.804198 +32 +46.428166 +13 +257.944167 +23 +425.804198 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-257.944137 +20 +425.804198 +30 +46.428166 +11 +-272.806227 +21 +381.205648 +31 +-46.428166 +12 +-272.806227 +22 +381.205648 +32 +46.428166 +13 +-272.806227 +23 +381.205648 +33 +46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-272.806227 +20 +381.205648 +30 +-46.428166 +11 +-257.944137 +21 +425.804198 +31 +46.428166 +12 +-257.944137 +22 +425.804198 +32 +-46.428166 +13 +-257.944137 +23 +425.804198 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-257.944137 +20 +425.804198 +30 +46.428166 +11 +-213.358000 +21 +440.670401 +31 +-46.428166 +12 +-257.944137 +22 +425.804198 +32 +-46.428166 +13 +-257.944137 +23 +425.804198 +33 +-46.428166 +0 +3DFACE +8 +0 + 62 +55 +10 +-213.358000 +20 +440.670401 +30 +-46.428166 +11 +-257.944137 +21 +425.804198 +31 +46.428166 +12 +-213.358000 +22 +440.670401 +32 +46.428166 +13 +-213.358000 +23 +440.670401 +33 +46.428166 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toaster_handle.c b/hacks/glx/toaster_handle.c new file mode 100644 index 0000000..f7c7c6b --- /dev/null +++ b/hacks/glx/toaster_handle.c @@ -0,0 +1,64 @@ +/* Generated from "toaster_handle.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toaster_handle_data[] = { + 0,0,1,0.5,-0.094169,0.035224, + 0,0,1,-0.356403,0.038624,0.035224, + 0,0,1,-0.5,-0.094169,0.035224, + 0,0,1,-0.356403,0.038624,0.035224, + 0,0,1,0.5,-0.094169,0.035224, + 0,0,1,-0.210084,0.094169,0.035224, + 0,0,1,-0.210084,0.094169,0.035224, + 0,0,1,0.5,-0.094169,0.035224, + 0,0,1,0.210084,0.094169,0.035224, + 0,0,1,0.210084,0.094169,0.035224, + 0,0,1,0.5,-0.094169,0.035224, + 0,0,1,0.356403,0.038624,0.035224, + -0.678947,0.734187,0,-0.5,-0.094169,0.035224, + -0.58038,0.814346,0,-0.356403,0.038624,-0.035224, + -0.678947,0.734187,0,-0.5,-0.094169,-0.035224, + -0.58038,0.814346,0,-0.356403,0.038624,-0.035224, + -0.678947,0.734187,0,-0.5,-0.094169,0.035224, + -0.47058,0.882357,0,-0.356403,0.038624,0.035224, + 0,0,-1,-0.356403,0.038624,-0.035224, + 0,0,-1,0.5,-0.094169,-0.035224, + 0,0,-1,-0.5,-0.094169,-0.035224, + 0,0,-1,0.5,-0.094169,-0.035224, + 0,0,-1,-0.356403,0.038624,-0.035224, + 0,0,-1,-0.210084,0.094169,-0.035224, + 0,0,-1,0.5,-0.094169,-0.035224, + 0,0,-1,-0.210084,0.094169,-0.035224, + 0,0,-1,0.210084,0.094169,-0.035224, + 0,0,-1,0.5,-0.094169,-0.035224, + 0,0,-1,0.210084,0.094169,-0.035224, + 0,0,-1,0.356403,0.038624,-0.035224, + 0.58038,0.814346,0,0.356403,0.038624,0.035224, + 0.678947,0.734187,0,0.5,-0.094169,-0.035224, + 0.47058,0.882357,0,0.356403,0.038624,-0.035224, + 0.678947,0.734187,0,0.5,-0.094169,-0.035224, + 0.58038,0.814346,0,0.356403,0.038624,0.035224, + 0.678947,0.734187,0,0.5,-0.094169,0.035224, + -0.120052,0.992768,0,-0.210084,0.094169,0.035224, + 0.120052,0.992768,0,0.210084,0.094169,-0.035224, + -0.240104,0.970747,0,-0.210084,0.094169,-0.035224, + 0.120052,0.992768,0,0.210084,0.094169,-0.035224, + -0.120052,0.992768,0,-0.210084,0.094169,0.035224, + 0.240104,0.970747,0,0.210084,0.094169,0.035224, + 0.240104,0.970747,0,0.210084,0.094169,0.035224, + 0.47058,0.882357,0,0.356403,0.038624,-0.035224, + 0.120052,0.992768,0,0.210084,0.094169,-0.035224, + 0.47058,0.882357,0,0.356403,0.038624,-0.035224, + 0.240104,0.970747,0,0.210084,0.094169,0.035224, + 0.58038,0.814346,0,0.356403,0.038624,0.035224, + -0.47058,0.882357,0,-0.356403,0.038624,0.035224, + -0.240104,0.970747,0,-0.210084,0.094169,-0.035224, + -0.58038,0.814346,0,-0.356403,0.038624,-0.035224, + -0.240104,0.970747,0,-0.210084,0.094169,-0.035224, + -0.47058,0.882357,0,-0.356403,0.038624,0.035224, + -0.120052,0.992768,0,-0.210084,0.094169,0.035224 +}; +static const struct gllist toaster_handle_frame = { GL_N3F_V3F, GL_TRIANGLES, 54, toaster_handle_data, 0 }; +const struct gllist *toaster_handle = &toaster_handle_frame; diff --git a/hacks/glx/toaster_handle.dxf b/hacks/glx/toaster_handle.dxf new file mode 100644 index 0000000..1c153d8 --- /dev/null +++ b/hacks/glx/toaster_handle.dxf @@ -0,0 +1,554 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +490.188003 +20 +-92.321426 +30 +34.532439 +11 +-349.408537 +21 +37.865948 +31 +34.532439 +12 +-490.188003 +22 +-92.321426 +32 +34.532439 +13 +-490.188003 +23 +-92.321426 +33 +34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +-349.408537 +20 +37.865948 +30 +34.532439 +11 +490.188003 +21 +-92.321426 +31 +34.532439 +12 +-205.961362 +22 +92.321426 +32 +34.532439 +13 +-205.961362 +23 +92.321426 +33 +34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +-205.961362 +20 +92.321426 +30 +34.532439 +11 +490.188003 +21 +-92.321426 +31 +34.532439 +12 +205.961317 +22 +92.321426 +32 +34.532439 +13 +205.961317 +23 +92.321426 +33 +34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +205.961317 +20 +92.321426 +30 +34.532439 +11 +490.188003 +21 +-92.321426 +31 +34.532439 +12 +349.408507 +22 +37.865948 +32 +34.532439 +13 +349.408507 +23 +37.865948 +33 +34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +-490.188003 +20 +-92.321426 +30 +34.532439 +11 +-349.408537 +21 +37.865948 +31 +-34.532439 +12 +-490.188003 +22 +-92.321426 +32 +-34.532439 +13 +-490.188003 +23 +-92.321426 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +-349.408537 +20 +37.865948 +30 +-34.532439 +11 +-490.188003 +21 +-92.321426 +31 +34.532439 +12 +-349.408537 +22 +37.865948 +32 +34.532439 +13 +-349.408537 +23 +37.865948 +33 +34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +-349.408537 +20 +37.865948 +30 +-34.532439 +11 +490.188003 +21 +-92.321426 +31 +-34.532439 +12 +-490.188003 +22 +-92.321426 +32 +-34.532439 +13 +-490.188003 +23 +-92.321426 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +490.188003 +20 +-92.321426 +30 +-34.532439 +11 +-349.408537 +21 +37.865948 +31 +-34.532439 +12 +-205.961362 +22 +92.321426 +32 +-34.532439 +13 +-205.961362 +23 +92.321426 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +490.188003 +20 +-92.321426 +30 +-34.532439 +11 +-205.961362 +21 +92.321426 +31 +-34.532439 +12 +205.961317 +22 +92.321426 +32 +-34.532439 +13 +205.961317 +23 +92.321426 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +490.188003 +20 +-92.321426 +30 +-34.532439 +11 +205.961317 +21 +92.321426 +31 +-34.532439 +12 +349.408507 +22 +37.865948 +32 +-34.532439 +13 +349.408507 +23 +37.865948 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +349.408507 +20 +37.865948 +30 +34.532439 +11 +490.188003 +21 +-92.321426 +31 +-34.532439 +12 +349.408507 +22 +37.865948 +32 +-34.532439 +13 +349.408507 +23 +37.865948 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +490.188003 +20 +-92.321426 +30 +-34.532439 +11 +349.408507 +21 +37.865948 +31 +34.532439 +12 +490.188003 +22 +-92.321426 +32 +34.532439 +13 +490.188003 +23 +-92.321426 +33 +34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +-205.961362 +20 +92.321426 +30 +34.532439 +11 +205.961317 +21 +92.321426 +31 +-34.532439 +12 +-205.961362 +22 +92.321426 +32 +-34.532439 +13 +-205.961362 +23 +92.321426 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +205.961317 +20 +92.321426 +30 +-34.532439 +11 +-205.961362 +21 +92.321426 +31 +34.532439 +12 +205.961317 +22 +92.321426 +32 +34.532439 +13 +205.961317 +23 +92.321426 +33 +34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +205.961317 +20 +92.321426 +30 +34.532439 +11 +349.408507 +21 +37.865948 +31 +-34.532439 +12 +205.961317 +22 +92.321426 +32 +-34.532439 +13 +205.961317 +23 +92.321426 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +349.408507 +20 +37.865948 +30 +-34.532439 +11 +205.961317 +21 +92.321426 +31 +34.532439 +12 +349.408507 +22 +37.865948 +32 +34.532439 +13 +349.408507 +23 +37.865948 +33 +34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +-349.408537 +20 +37.865948 +30 +34.532439 +11 +-205.961362 +21 +92.321426 +31 +-34.532439 +12 +-349.408537 +22 +37.865948 +32 +-34.532439 +13 +-349.408537 +23 +37.865948 +33 +-34.532439 +0 +3DFACE +8 +0 + 62 +55 +10 +-205.961362 +20 +92.321426 +30 +-34.532439 +11 +-349.408537 +21 +37.865948 +31 +34.532439 +12 +-205.961362 +22 +92.321426 +32 +34.532439 +13 +-205.961362 +23 +92.321426 +33 +34.532439 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toaster_handle2.c b/hacks/glx/toaster_handle2.c new file mode 100644 index 0000000..d73003e --- /dev/null +++ b/hacks/glx/toaster_handle2.c @@ -0,0 +1,40 @@ +/* Generated from "toaster_handle2.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toaster_handle2_data[] = { + 0,-0.027094,0.999633,0.038934,-0.294903,-0.5, + 0,-0.027094,0.999633,-0.038934,0.321555,-0.483291, + 0,-0.027094,0.999633,-0.038934,-0.294903,-0.5, + 0,-0.027094,0.999633,-0.038934,0.321555,-0.483291, + 0,-0.027094,0.999633,0.038934,-0.294903,-0.5, + 0,-0.027094,0.999633,0.038934,0.321555,-0.483291, + -1,0,0,0.038934,0.294903,0.5, + -1,0,0,0.038934,-0.294903,-0.5, + -1,0,0,0.038934,-0.321555,0.483291, + -1,0,0,0.038934,-0.294903,-0.5, + -1,0,0,0.038934,0.294903,0.5, + -1,0,0,0.038934,0.321555,-0.483291, + 0,0.027094,-0.999633,0.038934,0.294903,0.5, + 0,0.027094,-0.999633,-0.038934,-0.321555,0.483291, + 0,0.027094,-0.999633,-0.038934,0.294903,0.5, + 0,0.027094,-0.999633,-0.038934,-0.321555,0.483291, + 0,0.027094,-0.999633,0.038934,0.294903,0.5, + 0,0.027094,-0.999633,0.038934,-0.321555,0.483291, + 1,0,0,-0.038934,-0.294903,-0.5, + 1,0,0,-0.038934,0.294903,0.5, + 1,0,0,-0.038934,-0.321555,0.483291, + 1,0,0,-0.038934,0.294903,0.5, + 1,0,0,-0.038934,-0.294903,-0.5, + 1,0,0,-0.038934,0.321555,-0.483291, + 0,-0.999633,-0.027095,0.038934,0.294903,0.5, + 0,-0.999633,-0.027095,-0.038934,0.321555,-0.483291, + 0,-0.999633,-0.027095,0.038934,0.321555,-0.483291, + 0,-0.999633,-0.027095,-0.038934,0.321555,-0.483291, + 0,-0.999633,-0.027095,0.038934,0.294903,0.5, + 0,-0.999633,-0.027095,-0.038934,0.294903,0.5 +}; +static const struct gllist toaster_handle2_frame = { GL_N3F_V3F, GL_TRIANGLES, 30, toaster_handle2_data, 0 }; +const struct gllist *toaster_handle2 = &toaster_handle2_frame; diff --git a/hacks/glx/toaster_handle2.dxf b/hacks/glx/toaster_handle2.dxf new file mode 100644 index 0000000..d8eb850 --- /dev/null +++ b/hacks/glx/toaster_handle2.dxf @@ -0,0 +1,314 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +33.460636 +20 +-253.443152 +30 +-429.705501 +11 +-33.460632 +21 +276.347905 +31 +-415.345818 +12 +-33.460632 +22 +-253.443152 +32 +-429.705501 +13 +-33.460632 +23 +-253.443152 +33 +-429.705501 +0 +3DFACE +8 +0 + 62 +55 +10 +-33.460632 +20 +276.347905 +30 +-415.345818 +11 +33.460636 +21 +-253.443152 +31 +-429.705501 +12 +33.460636 +22 +276.347905 +32 +-415.345818 +13 +33.460636 +23 +276.347905 +33 +-415.345818 +0 +3DFACE +8 +0 + 62 +55 +10 +33.460636 +20 +253.443152 +30 +429.705560 +11 +33.460636 +21 +-253.443152 +31 +-429.705501 +12 +33.460636 +22 +-276.347905 +32 +415.345907 +13 +33.460636 +23 +-276.347905 +33 +415.345907 +0 +3DFACE +8 +0 + 62 +55 +10 +33.460636 +20 +-253.443152 +30 +-429.705501 +11 +33.460636 +21 +253.443152 +31 +429.705560 +12 +33.460636 +22 +276.347905 +32 +-415.345818 +13 +33.460636 +23 +276.347905 +33 +-415.345818 +0 +3DFACE +8 +0 + 62 +55 +10 +33.460636 +20 +253.443152 +30 +429.705560 +11 +-33.460632 +21 +-276.347905 +31 +415.345907 +12 +-33.460632 +22 +253.443152 +32 +429.705560 +13 +-33.460632 +23 +253.443152 +33 +429.705560 +0 +3DFACE +8 +0 + 62 +55 +10 +-33.460632 +20 +-276.347905 +30 +415.345907 +11 +33.460636 +21 +253.443152 +31 +429.705560 +12 +33.460636 +22 +-276.347905 +32 +415.345907 +13 +33.460636 +23 +-276.347905 +33 +415.345907 +0 +3DFACE +8 +0 + 62 +55 +10 +-33.460632 +20 +-253.443152 +30 +-429.705501 +11 +-33.460632 +21 +253.443152 +31 +429.705560 +12 +-33.460632 +22 +-276.347905 +32 +415.345907 +13 +-33.460632 +23 +-276.347905 +33 +415.345907 +0 +3DFACE +8 +0 + 62 +55 +10 +-33.460632 +20 +253.443152 +30 +429.705560 +11 +-33.460632 +21 +-253.443152 +31 +-429.705501 +12 +-33.460632 +22 +276.347905 +32 +-415.345818 +13 +-33.460632 +23 +276.347905 +33 +-415.345818 +0 +3DFACE +8 +0 + 62 +55 +10 +33.460636 +20 +253.443152 +30 +429.705560 +11 +-33.460632 +21 +276.347905 +31 +-415.345818 +12 +33.460636 +22 +276.347905 +32 +-415.345818 +13 +33.460636 +23 +276.347905 +33 +-415.345818 +0 +3DFACE +8 +0 + 62 +55 +10 +-33.460632 +20 +276.347905 +30 +-415.345818 +11 +33.460636 +21 +253.443152 +31 +429.705560 +12 +-33.460632 +22 +253.443152 +32 +429.705560 +13 +-33.460632 +23 +253.443152 +33 +429.705560 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toaster_jet.c b/hacks/glx/toaster_jet.c new file mode 100644 index 0000000..4d44a3c --- /dev/null +++ b/hacks/glx/toaster_jet.c @@ -0,0 +1,178 @@ +/* Generated from "toaster_jet.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toaster_jet_data[] = { + 0.813787,-0.208368,0.542526,-0.002117,-0.240071,0.000396, + 0.813787,-0.208368,0.542526,-0.061503,-0.5,-0.010357, + 0.813787,-0.208368,0.542526,-0.031551,-0.5,-0.055285, + -0.351369,0.154576,0.923388,0.012946,0.394969,0.120155, + -0.354839,-0.067247,0.932506,-0.087986,-0.240071,0.081748, + -0.352413,-0.134494,0.92613,0.012946,-0.240071,0.120155, + -0.707849,-0.221865,0.670616,-0.002117,-0.240071,0.000396, + -0.707849,-0.221865,0.670616,0.022249,-0.5,-0.059879, + -0.707849,-0.221865,0.670616,0.059386,-0.5,-0.020681, + -0.905798,0.309152,0.289748,-0.120888,0.394969,-0.02111, + -0.950301,-0.067247,0.303983,-0.120888,-0.240071,-0.02111, + -0.941009,0.154576,0.301011,-0.087986,0.394969,0.081748, + -0.083052,-0.217721,-0.972471,0.022249,-0.5,-0.059879, + -0.083052,-0.217721,-0.972471,-0.031551,-0.5,-0.055285, + -0.084182,-0.145927,-0.985707,-0.060985,-0.240071,-0.110965, + -0.084866,-0.072964,-0.993717,0.046616,-0.240071,-0.120155, + -0.083916,0.165753,-0.98259,-0.060985,0.394969,-0.110965, + -0.080281,0.331506,-0.940031,0.046616,0.394969,-0.120155, + -0.080281,0.331506,-0.940031,0.046616,0.394969,-0.120155, + -0.074495,0.483301,-0.872279,-0.031551,0.5,-0.055285, + -0.074495,0.483301,-0.872279,0.022249,0.5,-0.059879, + 0.987687,-0.072964,0.138384,0.105904,-0.240071,0.065189, + 0.96657,-0.217721,0.135426,0.051893,-0.5,0.032792, + 0.979726,-0.145927,0.137269,0.120888,-0.240071,-0.041759, + -0.084866,-0.072964,-0.993717,0.046616,-0.240071,-0.120155, + -0.084182,-0.145927,-0.985707,-0.060985,-0.240071,-0.110965, + -0.083916,0.165753,-0.98259,-0.060985,0.394969,-0.110965, + 0.63255,0.49066,-0.599278,0.059386,0.5,-0.020681, + 0.683508,0.336879,-0.647556,0.120888,0.394969,-0.041759, + 0.63255,0.49066,-0.599278,0.022249,0.5,-0.059879, + 0.933052,-0.200826,-0.298468,-0.002117,-0.240071,0.000396, + 0.933052,-0.200826,-0.298468,-0.045051,-0.5,0.041072, + 0.933052,-0.200826,-0.298468,-0.061503,-0.5,-0.010357, + -0.084866,-0.072964,-0.993717,0.046616,-0.240071,-0.120155, + -0.083052,-0.217721,-0.972471,0.022249,-0.5,-0.059879, + -0.084182,-0.145927,-0.985707,-0.060985,-0.240071,-0.110965, + 0.502451,0.15961,0.849746,0.105904,0.394969,0.065189, + 0.450231,0.466386,0.76143,0.051893,0.5,0.032792, + 0.482347,0.31922,0.815745,0.012946,0.394969,0.120155, + 0.934327,0.331506,0.130908,0.105904,0.394969,0.065189, + 0.987687,-0.072964,0.138384,0.105904,-0.240071,0.065189, + 0.976628,0.165753,0.136835,0.120888,0.394969,-0.041759, + 0.083052,-0.217721,0.972471,0.022249,-0.5,-0.059879, + 0.083052,-0.217721,0.972471,-0.002117,-0.240071,0.000396, + 0.083052,-0.217721,0.972471,-0.031551,-0.5,-0.055285, + -0.950301,-0.067247,0.303983,-0.120888,-0.240071,-0.02111, + -0.933052,-0.200826,0.298467,-0.061503,-0.5,-0.010357, + -0.943803,-0.134494,0.301905,-0.087986,-0.240071,0.081748, + -0.788518,0.319219,-0.525679,-0.060985,0.394969,-0.110965, + -0.830021,-0.069797,-0.553347,-0.060985,-0.240071,-0.110965, + -0.821384,0.15961,-0.547589,-0.120888,0.394969,-0.02111, + 0.503992,-0.139595,0.852353,0.105904,-0.240071,0.065189, + 0.507735,-0.069797,0.858681,0.012946,-0.240071,0.120155, + 0.497804,-0.208368,0.841887,0.005415,-0.5,0.060275, + 0.074495,0.483301,0.872279,0.022249,0.5,-0.059879, + 0.074495,0.483301,0.872279,-0.031551,0.5,-0.055285, + 0.074495,0.483301,0.872279,-0.002117,0.394969,0.000396, + -0.497804,-0.208368,-0.841887,0.051893,-0.5,0.032792, + -0.497804,-0.208368,-0.841887,0.005415,-0.5,0.060275, + -0.497804,-0.208368,-0.841887,-0.002117,-0.240071,0.000396, + -0.943803,-0.134494,0.301905,-0.087986,-0.240071,0.081748, + -0.933052,-0.200826,0.298467,-0.061503,-0.5,-0.010357, + -0.933052,-0.200826,0.298468,-0.045051,-0.5,0.041072, + -0.96657,-0.217721,-0.135426,-0.002117,-0.240071,0.000396, + -0.96657,-0.217721,-0.135426,0.059386,-0.5,-0.020681, + -0.96657,-0.217721,-0.135426,0.051893,-0.5,0.032792, + 0.736015,0.466386,0.490678,-0.031551,0.5,-0.055285, + 0.736015,0.466386,0.490678,-0.061503,0.5,-0.010357, + 0.736015,0.466386,0.490678,-0.002117,0.394969,0.000396, + 0.979726,-0.145927,0.137269,0.120888,-0.240071,-0.041759, + 0.96657,-0.217721,0.135426,0.051893,-0.5,0.032792, + 0.96657,-0.217721,0.135426,0.059386,-0.5,-0.020681, + 0.63255,0.49066,-0.599278,0.022249,0.5,-0.059879, + 0.683508,0.336879,-0.647556,0.120888,0.394969,-0.041759, + 0.715569,0.16844,-0.67793,0.046616,0.394969,-0.120155, + -0.736016,0.466386,-0.490678,-0.061503,0.5,-0.010357, + -0.788518,0.319219,-0.525679,-0.060985,0.394969,-0.110965, + -0.821384,0.15961,-0.547589,-0.120888,0.394969,-0.02111, + -0.788518,0.319219,-0.525679,-0.060985,0.394969,-0.110965, + -0.736016,0.466386,-0.490678,-0.061503,0.5,-0.010357, + -0.736015,0.466386,-0.490678,-0.031551,0.5,-0.055285, + -0.849396,0.452441,0.271706,-0.045051,0.5,0.041072, + -0.849396,0.45244,0.271707,-0.061503,0.5,-0.010357, + -0.905798,0.309152,0.289748,-0.120888,0.394969,-0.02111, + -0.45023,0.466386,-0.76143,0.051893,0.5,0.032792, + -0.45023,0.466386,-0.76143,-0.002117,0.394969,0.000396, + -0.45023,0.466386,-0.76143,0.005415,0.5,0.060275, + 0.723931,-0.074368,-0.685852,0.120888,-0.240071,-0.041759, + 0.707849,-0.221865,-0.670616,0.059386,-0.5,-0.020681, + 0.717867,-0.148736,-0.680107,0.046616,-0.240071,-0.120155, + -0.63255,0.49066,0.599278,0.022249,0.5,-0.059879, + -0.63255,0.49066,0.599278,-0.002117,0.394969,0.000396, + -0.63255,0.49066,0.599278,0.059386,0.5,-0.020681, + -0.351369,0.154576,0.923388,0.012946,0.394969,0.120155, + -0.338222,0.309153,0.888837,-0.087986,0.394969,0.081748, + -0.354839,-0.067247,0.932506,-0.087986,-0.240071,0.081748, + 0.849395,0.452441,-0.271707,-0.045051,0.5,0.041072, + 0.849395,0.452441,-0.271707,-0.002117,0.394969,0.000396, + 0.849395,0.452441,-0.271707,-0.061503,0.5,-0.010357, + 0.502451,0.15961,0.849746,0.105904,0.394969,0.065189, + 0.507735,-0.069797,0.858681,0.012946,-0.240071,0.120155, + 0.503992,-0.139595,0.852353,0.105904,-0.240071,0.065189, + -0.317161,0.452441,0.83349,0.005415,0.5,0.060275, + -0.317162,0.452441,0.83349,-0.045051,0.5,0.041072, + -0.338222,0.309153,0.888837,-0.087986,0.394969,0.081748, + -0.080281,0.331506,-0.940031,0.046616,0.394969,-0.120155, + -0.083916,0.165753,-0.98259,-0.060985,0.394969,-0.110965, + -0.074495,0.483301,-0.872279,-0.031551,0.5,-0.055285, + 0.715569,0.16844,-0.67793,0.046616,0.394969,-0.120155, + 0.723931,-0.074368,-0.685852,0.120888,-0.240071,-0.041759, + 0.717867,-0.148736,-0.680107,0.046616,-0.240071,-0.120155, + 0.866986,0.483301,0.121473,0.059386,0.5,-0.020681, + 0.934327,0.331506,0.130908,0.105904,0.394969,0.065189, + 0.976628,0.165753,0.136835,0.120888,0.394969,-0.041759, + -0.866986,0.483301,-0.121473,0.059386,0.5,-0.020681, + -0.866986,0.483301,-0.121473,-0.002117,0.394969,0.000396, + -0.866986,0.483301,-0.121473,0.051893,0.5,0.032792, + -0.352413,-0.134494,0.92613,0.012946,-0.240071,0.120155, + -0.348399,-0.200826,0.91558,-0.045051,-0.5,0.041072, + -0.348399,-0.200826,0.91558,0.005415,-0.5,0.060275, + -0.821384,0.15961,-0.547589,-0.120888,0.394969,-0.02111, + -0.830021,-0.069797,-0.553347,-0.060985,-0.240071,-0.110965, + -0.823903,-0.139594,-0.549269,-0.120888,-0.240071,-0.02111, + -0.941009,0.154576,0.301011,-0.087986,0.394969,0.081748, + -0.950301,-0.067247,0.303983,-0.120888,-0.240071,-0.02111, + -0.943803,-0.134494,0.301905,-0.087986,-0.240071,0.081748, + -0.849396,0.452441,0.271706,-0.045051,0.5,0.041072, + -0.905798,0.309152,0.289748,-0.120888,0.394969,-0.02111, + -0.941009,0.154576,0.301011,-0.087986,0.394969,0.081748, + 0.317162,0.452441,-0.83349,0.005415,0.5,0.060275, + 0.317162,0.452441,-0.83349,-0.002117,0.394969,0.000396, + 0.317162,0.452441,-0.83349,-0.045051,0.5,0.041072, + -0.823903,-0.139594,-0.549269,-0.120888,-0.240071,-0.02111, + -0.813787,-0.208368,-0.542525,-0.031551,-0.5,-0.055285, + -0.813787,-0.208368,-0.542526,-0.061503,-0.5,-0.010357, + -0.813787,-0.208368,-0.542525,-0.031551,-0.5,-0.055285, + -0.823903,-0.139594,-0.549269,-0.120888,-0.240071,-0.02111, + -0.830021,-0.069797,-0.553347,-0.060985,-0.240071,-0.110965, + 0.348399,-0.200826,-0.91558,0.005415,-0.5,0.060275, + 0.348399,-0.200826,-0.91558,-0.045051,-0.5,0.041072, + 0.348399,-0.200826,-0.91558,-0.002117,-0.240071,0.000396, + -0.352413,-0.134494,0.92613,0.012946,-0.240071,0.120155, + -0.354839,-0.067247,0.932506,-0.087986,-0.240071,0.081748, + -0.348399,-0.200826,0.91558,-0.045051,-0.5,0.041072, + -0.351369,0.154576,0.923388,0.012946,0.394969,0.120155, + -0.317161,0.452441,0.83349,0.005415,0.5,0.060275, + -0.338222,0.309153,0.888837,-0.087986,0.394969,0.081748, + 0.503992,-0.139595,0.852353,0.105904,-0.240071,0.065189, + 0.497804,-0.208368,0.841887,0.005415,-0.5,0.060275, + 0.497804,-0.208368,0.841887,0.051893,-0.5,0.032792, + 0.683508,0.336879,-0.647556,0.120888,0.394969,-0.041759, + 0.723931,-0.074368,-0.685852,0.120888,-0.240071,-0.041759, + 0.715569,0.16844,-0.67793,0.046616,0.394969,-0.120155, + 0.976628,0.165753,0.136835,0.120888,0.394969,-0.041759, + 0.987687,-0.072964,0.138384,0.105904,-0.240071,0.065189, + 0.979726,-0.145927,0.137269,0.120888,-0.240071,-0.041759, + 0.502451,0.15961,0.849746,0.105904,0.394969,0.065189, + 0.482347,0.31922,0.815745,0.012946,0.394969,0.120155, + 0.507735,-0.069797,0.858681,0.012946,-0.240071,0.120155, + 0.866986,0.483301,0.121473,0.051893,0.5,0.032792, + 0.934327,0.331506,0.130908,0.105904,0.394969,0.065189, + 0.866986,0.483301,0.121473,0.059386,0.5,-0.020681, + 0.450231,0.466386,0.76143,0.051893,0.5,0.032792, + 0.45023,0.466386,0.76143,0.005415,0.5,0.060275, + 0.482347,0.31922,0.815745,0.012946,0.394969,0.120155, + 0.717867,-0.148736,-0.680107,0.046616,-0.240071,-0.120155, + 0.707849,-0.221865,-0.670616,0.059386,-0.5,-0.020681, + 0.707849,-0.221865,-0.670616,0.022249,-0.5,-0.059879 +}; +static const struct gllist toaster_jet_frame = { GL_N3F_V3F, GL_TRIANGLES, 168, toaster_jet_data, 0 }; +const struct gllist *toaster_jet = &toaster_jet_frame; diff --git a/hacks/glx/toaster_jet.dxf b/hacks/glx/toaster_jet.dxf new file mode 100644 index 0000000..2b4a2d3 --- /dev/null +++ b/hacks/glx/toaster_jet.dxf @@ -0,0 +1,1694 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +-2.099907 +20 +-238.135010 +30 +0.392425 +11 +-61.006751 +21 +-495.968699 +31 +-10.273786 +12 +-31.296514 +22 +-495.968699 +32 +-54.839045 +13 +-31.296514 +23 +-495.968699 +33 +-54.839045 +0 +3DFACE +8 +0 + 62 +55 +10 +12.841670 +20 +391.784638 +30 +119.185813 +11 +-87.276451 +21 +-238.135010 +31 +81.088670 +12 +12.841670 +22 +-238.135010 +32 +119.185813 +13 +12.841670 +23 +-238.135010 +33 +119.185813 +0 +3DFACE +8 +0 + 62 +55 +10 +-2.099907 +20 +-238.135010 +30 +0.392425 +11 +22.069970 +21 +-495.968699 +31 +-59.396684 +12 +58.906760 +22 +-495.968699 +32 +-20.514699 +13 +58.906760 +23 +-495.968699 +33 +-20.514699 +0 +3DFACE +8 +0 + 62 +55 +10 +-119.913481 +20 +391.784638 +30 +-20.939998 +11 +-119.913481 +21 +-238.135010 +31 +-20.939998 +12 +-87.276451 +22 +391.784638 +32 +81.088670 +13 +-87.276451 +23 +391.784638 +33 +81.088670 +0 +3DFACE +8 +0 + 62 +55 +10 +22.069970 +20 +-495.968699 +30 +-59.396684 +11 +-31.296514 +21 +-495.968699 +31 +-54.839045 +12 +-60.493119 +22 +-238.135010 +32 +-110.070519 +13 +-60.493119 +23 +-238.135010 +33 +-110.070519 +0 +3DFACE +8 +0 + 62 +55 +10 +46.239849 +20 +-238.135010 +30 +-119.185783 +11 +-60.493119 +21 +391.784638 +31 +-110.070519 +12 +46.239849 +22 +391.784638 +32 +-119.185783 +13 +46.239849 +23 +391.784638 +33 +-119.185783 +0 +3DFACE +8 +0 + 62 +55 +10 +46.239849 +20 +391.784638 +30 +-119.185783 +11 +-31.296514 +21 +495.968699 +31 +-54.839045 +12 +22.069970 +22 +495.968699 +32 +-59.396684 +13 +22.069970 +23 +495.968699 +33 +-59.396684 +0 +3DFACE +8 +0 + 62 +55 +10 +105.049863 +20 +-238.135010 +30 +64.663500 +11 +51.474977 +21 +-495.968699 +31 +32.527965 +12 +119.913429 +22 +-238.135010 +32 +-41.421823 +13 +119.913429 +23 +-238.135010 +33 +-41.421823 +0 +3DFACE +8 +0 + 62 +55 +10 +46.239849 +20 +-238.135010 +30 +-119.185783 +11 +-60.493119 +21 +-238.135010 +31 +-110.070519 +12 +-60.493119 +22 +391.784638 +32 +-110.070519 +13 +-60.493119 +23 +391.784638 +33 +-110.070519 +0 +3DFACE +8 +0 + 62 +55 +10 +58.906760 +20 +495.968699 +30 +-20.514699 +11 +119.913429 +21 +391.784638 +31 +-41.421823 +12 +22.069970 +22 +495.968699 +32 +-59.396684 +13 +22.069970 +23 +495.968699 +33 +-59.396684 +0 +3DFACE +8 +0 + 62 +55 +10 +-2.099907 +20 +-238.135010 +30 +0.392425 +11 +-44.688124 +21 +-495.968699 +31 +40.740550 +12 +-61.006751 +22 +-495.968699 +32 +-10.273786 +13 +-61.006751 +23 +-495.968699 +33 +-10.273786 +0 +3DFACE +8 +0 + 62 +55 +10 +46.239849 +20 +-238.135010 +30 +-119.185783 +11 +22.069970 +21 +-495.968699 +31 +-59.396684 +12 +-60.493119 +22 +-238.135010 +32 +-110.070519 +13 +-60.493119 +23 +-238.135010 +33 +-110.070519 +0 +3DFACE +8 +0 + 62 +55 +10 +105.049863 +20 +391.784638 +30 +64.663500 +11 +51.474977 +21 +495.968699 +31 +32.527965 +12 +12.841670 +22 +391.784638 +32 +119.185813 +13 +12.841670 +23 +391.784638 +33 +119.185813 +0 +3DFACE +8 +0 + 62 +55 +10 +105.049863 +20 +391.784638 +30 +64.663500 +11 +105.049863 +21 +-238.135010 +31 +64.663500 +12 +119.913429 +22 +391.784638 +32 +-41.421823 +13 +119.913429 +23 +391.784638 +33 +-41.421823 +0 +3DFACE +8 +0 + 62 +55 +10 +22.069970 +20 +-495.968699 +30 +-59.396684 +11 +-2.099907 +21 +-238.135010 +31 +0.392425 +12 +-31.296514 +22 +-495.968699 +32 +-54.839045 +13 +-31.296514 +23 +-495.968699 +33 +-54.839045 +0 +3DFACE +8 +0 + 62 +55 +10 +-119.913481 +20 +-238.135010 +30 +-20.939998 +11 +-61.006751 +21 +-495.968699 +31 +-10.273786 +12 +-87.276451 +22 +-238.135010 +32 +81.088670 +13 +-87.276451 +23 +-238.135010 +33 +81.088670 +0 +3DFACE +8 +0 + 62 +55 +10 +-60.493119 +20 +391.784638 +30 +-110.070519 +11 +-60.493119 +21 +-238.135010 +31 +-110.070519 +12 +-119.913481 +22 +391.784638 +32 +-20.939998 +13 +-119.913481 +23 +391.784638 +33 +-20.939998 +0 +3DFACE +8 +0 + 62 +55 +10 +105.049863 +20 +-238.135010 +30 +64.663500 +11 +12.841670 +21 +-238.135010 +31 +119.185813 +12 +5.370881 +22 +-495.968699 +32 +59.789117 +13 +5.370881 +23 +-495.968699 +33 +59.789117 +0 +3DFACE +8 +0 + 62 +55 +10 +22.069970 +20 +495.968699 +30 +-59.396684 +11 +-31.296514 +21 +495.968699 +31 +-54.839045 +12 +-2.099907 +22 +391.784638 +32 +0.392425 +13 +-2.099907 +23 +391.784638 +33 +0.392425 +0 +3DFACE +8 +0 + 62 +55 +10 +51.474977 +20 +-495.968699 +30 +32.527965 +11 +5.370881 +21 +-495.968699 +31 +59.789117 +12 +-2.099907 +22 +-238.135010 +32 +0.392425 +13 +-2.099907 +23 +-238.135010 +33 +0.392425 +0 +3DFACE +8 +0 + 62 +55 +10 +-87.276451 +20 +-238.135010 +30 +81.088670 +11 +-61.006751 +21 +-495.968699 +31 +-10.273786 +12 +-44.688124 +22 +-495.968699 +32 +40.740550 +13 +-44.688124 +23 +-495.968699 +33 +40.740550 +0 +3DFACE +8 +0 + 62 +55 +10 +-2.099907 +20 +-238.135010 +30 +0.392425 +11 +58.906760 +21 +-495.968699 +31 +-20.514699 +12 +51.474977 +22 +-495.968699 +32 +32.527965 +13 +51.474977 +23 +-495.968699 +33 +32.527965 +0 +3DFACE +8 +0 + 62 +55 +10 +-31.296514 +20 +495.968699 +30 +-54.839045 +11 +-61.006751 +21 +495.968699 +31 +-10.273786 +12 +-2.099907 +22 +391.784638 +32 +0.392425 +13 +-2.099907 +23 +391.784638 +33 +0.392425 +0 +3DFACE +8 +0 + 62 +55 +10 +119.913429 +20 +-238.135010 +30 +-41.421823 +11 +51.474977 +21 +-495.968699 +31 +32.527965 +12 +58.906760 +22 +-495.968699 +32 +-20.514699 +13 +58.906760 +23 +-495.968699 +33 +-20.514699 +0 +3DFACE +8 +0 + 62 +55 +10 +22.069970 +20 +495.968699 +30 +-59.396684 +11 +119.913429 +21 +391.784638 +31 +-41.421823 +12 +46.239849 +22 +391.784638 +32 +-119.185783 +13 +46.239849 +23 +391.784638 +33 +-119.185783 +0 +3DFACE +8 +0 + 62 +55 +10 +-61.006751 +20 +495.968699 +30 +-10.273786 +11 +-60.493119 +21 +391.784638 +31 +-110.070519 +12 +-119.913481 +22 +391.784638 +32 +-20.939998 +13 +-119.913481 +23 +391.784638 +33 +-20.939998 +0 +3DFACE +8 +0 + 62 +55 +10 +-60.493119 +20 +391.784638 +30 +-110.070519 +11 +-61.006751 +21 +495.968699 +31 +-10.273786 +12 +-31.296514 +22 +495.968699 +32 +-54.839045 +13 +-31.296514 +23 +495.968699 +33 +-54.839045 +0 +3DFACE +8 +0 + 62 +55 +10 +-44.688124 +20 +495.968699 +30 +40.740550 +11 +-61.006751 +21 +495.968699 +31 +-10.273786 +12 +-119.913481 +22 +391.784638 +32 +-20.939998 +13 +-119.913481 +23 +391.784638 +33 +-20.939998 +0 +3DFACE +8 +0 + 62 +55 +10 +51.474977 +20 +495.968699 +30 +32.527965 +11 +-2.099907 +21 +391.784638 +31 +0.392425 +12 +5.370881 +22 +495.968699 +32 +59.789117 +13 +5.370881 +23 +495.968699 +33 +59.789117 +0 +3DFACE +8 +0 + 62 +55 +10 +119.913429 +20 +-238.135010 +30 +-41.421823 +11 +58.906760 +21 +-495.968699 +31 +-20.514699 +12 +46.239849 +22 +-238.135010 +32 +-119.185783 +13 +46.239849 +23 +-238.135010 +33 +-119.185783 +0 +3DFACE +8 +0 + 62 +55 +10 +22.069970 +20 +495.968699 +30 +-59.396684 +11 +-2.099907 +21 +391.784638 +31 +0.392425 +12 +58.906760 +22 +495.968699 +32 +-20.514699 +13 +58.906760 +23 +495.968699 +33 +-20.514699 +0 +3DFACE +8 +0 + 62 +55 +10 +12.841670 +20 +391.784638 +30 +119.185813 +11 +-87.276451 +21 +391.784638 +31 +81.088670 +12 +-87.276451 +22 +-238.135010 +32 +81.088670 +13 +-87.276451 +23 +-238.135010 +33 +81.088670 +0 +3DFACE +8 +0 + 62 +55 +10 +-44.688124 +20 +495.968699 +30 +40.740550 +11 +-2.099907 +21 +391.784638 +31 +0.392425 +12 +-61.006751 +22 +495.968699 +32 +-10.273786 +13 +-61.006751 +23 +495.968699 +33 +-10.273786 +0 +3DFACE +8 +0 + 62 +55 +10 +105.049863 +20 +391.784638 +30 +64.663500 +11 +12.841670 +21 +-238.135010 +31 +119.185813 +12 +105.049863 +22 +-238.135010 +32 +64.663500 +13 +105.049863 +23 +-238.135010 +33 +64.663500 +0 +3DFACE +8 +0 + 62 +55 +10 +5.370881 +20 +495.968699 +30 +59.789117 +11 +-44.688124 +21 +495.968699 +31 +40.740550 +12 +-87.276451 +22 +391.784638 +32 +81.088670 +13 +-87.276451 +23 +391.784638 +33 +81.088670 +0 +3DFACE +8 +0 + 62 +55 +10 +46.239849 +20 +391.784638 +30 +-119.185783 +11 +-60.493119 +21 +391.784638 +31 +-110.070519 +12 +-31.296514 +22 +495.968699 +32 +-54.839045 +13 +-31.296514 +23 +495.968699 +33 +-54.839045 +0 +3DFACE +8 +0 + 62 +55 +10 +46.239849 +20 +391.784638 +30 +-119.185783 +11 +119.913429 +21 +-238.135010 +31 +-41.421823 +12 +46.239849 +22 +-238.135010 +32 +-119.185783 +13 +46.239849 +23 +-238.135010 +33 +-119.185783 +0 +3DFACE +8 +0 + 62 +55 +10 +58.906760 +20 +495.968699 +30 +-20.514699 +11 +105.049863 +21 +391.784638 +31 +64.663500 +12 +119.913429 +22 +391.784638 +32 +-41.421823 +13 +119.913429 +23 +391.784638 +33 +-41.421823 +0 +3DFACE +8 +0 + 62 +55 +10 +58.906760 +20 +495.968699 +30 +-20.514699 +11 +-2.099907 +21 +391.784638 +31 +0.392425 +12 +51.474977 +22 +495.968699 +32 +32.527965 +13 +51.474977 +23 +495.968699 +33 +32.527965 +0 +3DFACE +8 +0 + 62 +55 +10 +12.841670 +20 +-238.135010 +30 +119.185813 +11 +-44.688124 +21 +-495.968699 +31 +40.740550 +12 +5.370881 +22 +-495.968699 +32 +59.789117 +13 +5.370881 +23 +-495.968699 +33 +59.789117 +0 +3DFACE +8 +0 + 62 +55 +10 +-119.913481 +20 +391.784638 +30 +-20.939998 +11 +-60.493119 +21 +-238.135010 +31 +-110.070519 +12 +-119.913481 +22 +-238.135010 +32 +-20.939998 +13 +-119.913481 +23 +-238.135010 +33 +-20.939998 +0 +3DFACE +8 +0 + 62 +55 +10 +-87.276451 +20 +391.784638 +30 +81.088670 +11 +-119.913481 +21 +-238.135010 +31 +-20.939998 +12 +-87.276451 +22 +-238.135010 +32 +81.088670 +13 +-87.276451 +23 +-238.135010 +33 +81.088670 +0 +3DFACE +8 +0 + 62 +55 +10 +-44.688124 +20 +495.968699 +30 +40.740550 +11 +-119.913481 +21 +391.784638 +31 +-20.939998 +12 +-87.276451 +22 +391.784638 +32 +81.088670 +13 +-87.276451 +23 +391.784638 +33 +81.088670 +0 +3DFACE +8 +0 + 62 +55 +10 +5.370881 +20 +495.968699 +30 +59.789117 +11 +-2.099907 +21 +391.784638 +31 +0.392425 +12 +-44.688124 +22 +495.968699 +32 +40.740550 +13 +-44.688124 +23 +495.968699 +33 +40.740550 +0 +3DFACE +8 +0 + 62 +55 +10 +-119.913481 +20 +-238.135010 +30 +-20.939998 +11 +-31.296514 +21 +-495.968699 +31 +-54.839045 +12 +-61.006751 +22 +-495.968699 +32 +-10.273786 +13 +-61.006751 +23 +-495.968699 +33 +-10.273786 +0 +3DFACE +8 +0 + 62 +55 +10 +-31.296514 +20 +-495.968699 +30 +-54.839045 +11 +-119.913481 +21 +-238.135010 +31 +-20.939998 +12 +-60.493119 +22 +-238.135010 +32 +-110.070519 +13 +-60.493119 +23 +-238.135010 +33 +-110.070519 +0 +3DFACE +8 +0 + 62 +55 +10 +5.370881 +20 +-495.968699 +30 +59.789117 +11 +-44.688124 +21 +-495.968699 +31 +40.740550 +12 +-2.099907 +22 +-238.135010 +32 +0.392425 +13 +-2.099907 +23 +-238.135010 +33 +0.392425 +0 +3DFACE +8 +0 + 62 +55 +10 +12.841670 +20 +-238.135010 +30 +119.185813 +11 +-87.276451 +21 +-238.135010 +31 +81.088670 +12 +-44.688124 +22 +-495.968699 +32 +40.740550 +13 +-44.688124 +23 +-495.968699 +33 +40.740550 +0 +3DFACE +8 +0 + 62 +55 +10 +12.841670 +20 +391.784638 +30 +119.185813 +11 +5.370881 +21 +495.968699 +31 +59.789117 +12 +-87.276451 +22 +391.784638 +32 +81.088670 +13 +-87.276451 +23 +391.784638 +33 +81.088670 +0 +3DFACE +8 +0 + 62 +55 +10 +105.049863 +20 +-238.135010 +30 +64.663500 +11 +5.370881 +21 +-495.968699 +31 +59.789117 +12 +51.474977 +22 +-495.968699 +32 +32.527965 +13 +51.474977 +23 +-495.968699 +33 +32.527965 +0 +3DFACE +8 +0 + 62 +55 +10 +119.913429 +20 +391.784638 +30 +-41.421823 +11 +119.913429 +21 +-238.135010 +31 +-41.421823 +12 +46.239849 +22 +391.784638 +32 +-119.185783 +13 +46.239849 +23 +391.784638 +33 +-119.185783 +0 +3DFACE +8 +0 + 62 +55 +10 +119.913429 +20 +391.784638 +30 +-41.421823 +11 +105.049863 +21 +-238.135010 +31 +64.663500 +12 +119.913429 +22 +-238.135010 +32 +-41.421823 +13 +119.913429 +23 +-238.135010 +33 +-41.421823 +0 +3DFACE +8 +0 + 62 +55 +10 +105.049863 +20 +391.784638 +30 +64.663500 +11 +12.841670 +21 +391.784638 +31 +119.185813 +12 +12.841670 +22 +-238.135010 +32 +119.185813 +13 +12.841670 +23 +-238.135010 +33 +119.185813 +0 +3DFACE +8 +0 + 62 +55 +10 +51.474977 +20 +495.968699 +30 +32.527965 +11 +105.049863 +21 +391.784638 +31 +64.663500 +12 +58.906760 +22 +495.968699 +32 +-20.514699 +13 +58.906760 +23 +495.968699 +33 +-20.514699 +0 +3DFACE +8 +0 + 62 +55 +10 +51.474977 +20 +495.968699 +30 +32.527965 +11 +5.370881 +21 +495.968699 +31 +59.789117 +12 +12.841670 +22 +391.784638 +32 +119.185813 +13 +12.841670 +23 +391.784638 +33 +119.185813 +0 +3DFACE +8 +0 + 62 +55 +10 +46.239849 +20 +-238.135010 +30 +-119.185783 +11 +58.906760 +21 +-495.968699 +31 +-20.514699 +12 +22.069970 +22 +-495.968699 +32 +-59.396684 +13 +22.069970 +23 +-495.968699 +33 +-59.396684 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toaster_knob.c b/hacks/glx/toaster_knob.c new file mode 100644 index 0000000..d48b6ba --- /dev/null +++ b/hacks/glx/toaster_knob.c @@ -0,0 +1,76 @@ +/* Generated from "toaster_knob.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toaster_knob_data[] = { + 0.894098,0.012135,-0.447706,0.220972,-0.2059,-0.429683, + 0.894098,0.012135,-0.447706,0.372946,0.214524,-0.114788, + 0.894098,0.012135,-0.447706,0.372946,-0.21412,-0.126406, + 0.894098,0.012135,-0.447706,0.372946,0.214524,-0.114788, + 0.894098,0.012135,-0.447706,0.220972,-0.2059,-0.429683, + 0.894098,0.012135,-0.447706,0.220972,0.222744,-0.418065, + -0.999879,-0.000422,0.015577,-0.367658,0.209613,0.06637, + -0.999879,-0.000422,0.015577,-0.372946,-0.209838,-0.284406, + -0.999879,-0.000422,0.015577,-0.367658,-0.21903,0.054752, + -0.999879,-0.000422,0.015577,-0.372946,-0.209838,-0.284406, + -0.999879,-0.000422,0.015577,-0.367658,0.209613,0.06637, + -0.999879,-0.000422,0.015577,-0.372946,0.218806,-0.272788, + 0.907621,-0.011374,0.419637,0.372946,-0.21412,-0.126406, + 0.911978,-0.115261,0.393715,0.2305,0.206179,0.193077, + 0.907621,-0.011374,0.419637,0.2305,-0.222464,0.181458, + 0.911978,-0.115261,0.393715,0.2305,0.206179,0.193077, + 0.907621,-0.011374,0.419637,0.372946,-0.21412,-0.126406, + 0.907621,-0.011374,0.419637,0.372946,0.214524,-0.114788, + -0.611231,-0.021444,0.791162,-0.099099,-0.22465,0.262081, + -0.611231,-0.021444,0.791162,-0.367658,0.209613,0.06637, + -0.611231,-0.021444,0.791162,-0.367658,-0.21903,0.054752, + -0.611231,-0.021444,0.791162,-0.367658,0.209613,0.06637, + -0.611231,-0.021444,0.791162,-0.099099,-0.22465,0.262081, + -0.655778,-0.184059,0.732173,-0.099099,0.203994,0.2737, + -0,-0.999633,-0.027095,0.220972,-0.2059,-0.429683, + -0,-0.999633,-0.027095,-0.372946,-0.209838,-0.284406, + -0,-0.999633,-0.027096,-0.11098,-0.203994,-0.5, + -0,-0.999633,-0.027095,-0.372946,-0.209838,-0.284406, + -0,-0.999633,-0.027095,0.220972,-0.2059,-0.429683, + 0,-0.999633,-0.027094,0.372946,-0.21412,-0.126406, + -0,-0.999633,-0.027095,-0.372946,-0.209838,-0.284406, + 0,-0.999633,-0.027094,0.372946,-0.21412,-0.126406, + 0,-0.999633,-0.027095,-0.367658,-0.21903,0.054752, + 0,-0.999633,-0.027095,-0.367658,-0.21903,0.054752, + 0,-0.999633,-0.027094,0.372946,-0.21412,-0.126406, + 0,-0.999633,-0.027095,0.2305,-0.222464,0.181458, + 0,-0.999633,-0.027095,-0.367658,-0.21903,0.054752, + 0,-0.999633,-0.027095,0.2305,-0.222464,0.181458, + 0,-0.999633,-0.027095,0.065701,-0.223557,0.22177, + 0,-0.999633,-0.027095,-0.367658,-0.21903,0.054752, + 0,-0.999633,-0.027095,0.065701,-0.223557,0.22177, + 0,-0.999633,-0.027095,-0.099099,-0.22465,0.262081, + -0.635597,0.020918,-0.771737,-0.11098,0.22465,-0.488382, + -0.635597,0.020918,-0.771737,-0.372946,-0.209838,-0.284406, + -0.635597,0.020918,-0.771737,-0.372946,0.218806,-0.272788, + -0.635597,0.020918,-0.771737,-0.372946,-0.209838,-0.284406, + -0.635597,0.020918,-0.771737,-0.11098,0.22465,-0.488382, + -0.635597,0.020918,-0.771737,-0.11098,-0.203994,-0.5, + 0.207302,0.026506,-0.977918,0.220972,0.222744,-0.418065, + 0.207302,0.026506,-0.977918,-0.11098,-0.203994,-0.5, + 0.207302,0.026506,-0.977918,-0.11098,0.22465,-0.488382, + 0.207302,0.026506,-0.977918,-0.11098,-0.203994,-0.5, + 0.207302,0.026506,-0.977918,0.220972,0.222744,-0.418065, + 0.207302,0.026506,-0.977918,0.220972,-0.2059,-0.429683, + 0.237686,-0.026318,0.970985,0.065701,-0.223557,0.22177, + 0.237686,-0.026318,0.970985,-0.099099,0.203994,0.2737, + 0.237686,-0.026318,0.970985,-0.099099,-0.22465,0.262081, + -0.6794,-0.340802,0.649823,0.116801,0.205086,0.5, + -0.655778,-0.184059,0.732173,-0.099099,0.203994,0.2737, + -0.6794,-0.340802,0.649823,0.065701,-0.223557,0.22177, + 0.237686,-0.026318,0.970985,0.2305,0.206179,0.193077, + 0.237686,-0.026318,0.970985,0.065701,-0.223557,0.22177, + 0.237686,-0.026318,0.970985,0.2305,-0.222464,0.181458, + 0.911978,-0.115261,0.393715,0.2305,0.206179,0.193077, + 0.88909,-0.319042,0.328226,0.116801,0.205086,0.5, + 0.88909,-0.319042,0.328226,0.065701,-0.223557,0.22177 +}; +static const struct gllist toaster_knob_frame = { GL_N3F_V3F, GL_TRIANGLES, 66, toaster_knob_data, 0 }; +const struct gllist *toaster_knob = &toaster_knob_frame; diff --git a/hacks/glx/toaster_knob.dxf b/hacks/glx/toaster_knob.dxf new file mode 100644 index 0000000..b0053e1 --- /dev/null +++ b/hacks/glx/toaster_knob.dxf @@ -0,0 +1,674 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +6.216122 +20 +-5.792122 +30 +-12.087326 +11 +10.491247 +21 +6.034714 +31 +-3.229065 +12 +10.491247 +22 +-6.023361 +32 +-3.555895 +13 +10.491247 +23 +-6.023361 +33 +-3.555895 +0 +3DFACE +8 +0 + 62 +55 +10 +10.491247 +20 +6.034714 +30 +-3.229065 +11 +6.216122 +21 +-5.792122 +31 +-12.087326 +12 +6.216122 +22 +6.265953 +32 +-11.760496 +13 +6.216122 +23 +6.265953 +33 +-11.760496 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.342501 +20 +5.896584 +30 +1.867052 +11 +-10.491246 +21 +-5.902893 +31 +-8.000555 +12 +-10.342501 +22 +-6.161491 +32 +1.540224 +13 +-10.342501 +23 +-6.161491 +33 +1.540224 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.491246 +20 +-5.902893 +30 +-8.000555 +11 +-10.342501 +21 +5.896584 +31 +1.867052 +12 +-10.491246 +22 +6.155182 +32 +-7.673727 +13 +-10.491246 +23 +6.155182 +33 +-7.673727 +0 +3DFACE +8 +0 + 62 +55 +10 +10.491247 +20 +-6.023361 +30 +-3.555895 +11 +6.484152 +21 +5.799973 +31 +5.431395 +12 +6.484152 +22 +-6.258095 +32 +5.104565 +13 +6.484152 +23 +-6.258095 +33 +5.104565 +0 +3DFACE +8 +0 + 62 +55 +10 +6.484152 +20 +5.799973 +30 +5.431395 +11 +10.491247 +21 +-6.023361 +31 +-3.555895 +12 +10.491247 +22 +6.034714 +32 +-3.229065 +13 +10.491247 +23 +6.034714 +33 +-3.229065 +0 +3DFACE +8 +0 + 62 +55 +10 +-2.787737 +20 +-6.319573 +30 +7.372553 +11 +-10.342501 +21 +5.896584 +31 +1.867052 +12 +-10.342501 +22 +-6.161491 +32 +1.540224 +13 +-10.342501 +23 +-6.161491 +33 +1.540224 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.342501 +20 +5.896584 +30 +1.867052 +11 +-2.787737 +21 +-6.319573 +31 +7.372553 +12 +-2.787737 +22 +5.738503 +32 +7.699381 +13 +-2.787737 +23 +5.738503 +33 +7.699381 +0 +3DFACE +8 +0 + 62 +55 +10 +6.216122 +20 +-5.792122 +30 +-12.087326 +11 +-10.491246 +21 +-5.902893 +31 +-8.000555 +12 +-3.121965 +22 +-5.738503 +32 +-14.065386 +13 +-3.121965 +23 +-5.738503 +33 +-14.065386 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.491246 +20 +-5.902893 +30 +-8.000555 +11 +6.216122 +21 +-5.792122 +31 +-12.087326 +12 +10.491247 +22 +-6.023361 +32 +-3.555895 +13 +10.491247 +23 +-6.023361 +33 +-3.555895 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.491246 +20 +-5.902893 +30 +-8.000555 +11 +10.491247 +21 +-6.023361 +31 +-3.555895 +12 +-10.342501 +22 +-6.161491 +32 +1.540224 +13 +-10.342501 +23 +-6.161491 +33 +1.540224 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.342501 +20 +-6.161491 +30 +1.540224 +11 +10.491247 +21 +-6.023361 +31 +-3.555895 +12 +6.484152 +22 +-6.258095 +32 +5.104565 +13 +6.484152 +23 +-6.258095 +33 +5.104565 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.342501 +20 +-6.161491 +30 +1.540224 +11 +6.484152 +21 +-6.258095 +31 +5.104565 +12 +1.848208 +22 +-6.288834 +32 +6.238558 +13 +1.848208 +23 +-6.288834 +33 +6.238558 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.342501 +20 +-6.161491 +30 +1.540224 +11 +1.848208 +21 +-6.288834 +31 +6.238558 +12 +-2.787737 +22 +-6.319573 +32 +7.372553 +13 +-2.787737 +23 +-6.319573 +33 +7.372553 +0 +3DFACE +8 +0 + 62 +55 +10 +-3.121965 +20 +6.319565 +30 +-13.738557 +11 +-10.491246 +21 +-5.902893 +31 +-8.000555 +12 +-10.491246 +22 +6.155182 +32 +-7.673727 +13 +-10.491246 +23 +6.155182 +33 +-7.673727 +0 +3DFACE +8 +0 + 62 +55 +10 +-10.491246 +20 +-5.902893 +30 +-8.000555 +11 +-3.121965 +21 +6.319565 +31 +-13.738557 +12 +-3.121965 +22 +-5.738503 +32 +-14.065386 +13 +-3.121965 +23 +-5.738503 +33 +-14.065386 +0 +3DFACE +8 +0 + 62 +55 +10 +6.216122 +20 +6.265953 +30 +-11.760496 +11 +-3.121965 +21 +-5.738503 +31 +-14.065386 +12 +-3.121965 +22 +6.319565 +32 +-13.738557 +13 +-3.121965 +23 +6.319565 +33 +-13.738557 +0 +3DFACE +8 +0 + 62 +55 +10 +-3.121965 +20 +-5.738503 +30 +-14.065386 +11 +6.216122 +21 +6.265953 +31 +-11.760496 +12 +6.216122 +22 +-5.792122 +32 +-12.087326 +13 +6.216122 +23 +-5.792122 +33 +-12.087326 +0 +3DFACE +8 +0 + 62 +55 +10 +1.848208 +20 +-6.288834 +30 +6.238558 +11 +-2.787737 +21 +5.738503 +31 +7.699381 +12 +-2.787737 +22 +-6.319573 +32 +7.372553 +13 +-2.787737 +23 +-6.319573 +33 +7.372553 +0 +3DFACE +8 +0 + 62 +55 +10 +3.285708 +20 +5.769234 +30 +14.065386 +11 +-2.787737 +21 +5.738503 +31 +7.699381 +12 +1.848208 +22 +-6.288834 +32 +6.238558 +13 +1.848208 +23 +-6.288834 +33 +6.238558 +0 +3DFACE +8 +0 + 62 +55 +10 +6.484152 +20 +5.799973 +30 +5.431395 +11 +1.848208 +21 +-6.288834 +31 +6.238558 +12 +6.484152 +22 +-6.258095 +32 +5.104565 +13 +6.484152 +23 +-6.258095 +33 +5.104565 +0 +3DFACE +8 +0 + 62 +55 +10 +6.484152 +20 +5.799973 +30 +5.431395 +11 +3.285708 +21 +5.769234 +31 +14.065386 +12 +1.848208 +22 +-6.288834 +32 +6.238558 +13 +1.848208 +23 +-6.288834 +33 +6.238558 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toaster_slots.c b/hacks/glx/toaster_slots.c new file mode 100644 index 0000000..aaf7b23 --- /dev/null +++ b/hacks/glx/toaster_slots.c @@ -0,0 +1,106 @@ +/* Generated from "toaster_slots.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toaster_slots_data[] = { + 0.999485,-0.028052,-0.015598,-0.18331,-0.276766,0.209005, + 0.998257,-0.059011,0,-0.196507,-0.5,0.123502, + 0.99963,-0.0187,-0.019753,-0.196507,-0.5,-0.235113, + 0.999546,0,-0.030136,-0.18331,0,0.235113, + 0.999485,-0.028052,-0.015598,-0.18331,-0.276766,0.209005, + 0.99963,-0.0187,-0.019753,-0.196507,-0.5,-0.235113, + 0,1,0,-0.059418,-0.5,0.123502, + 0,1,0,-0.058641,-0.5,-0.235113, + 0,1,0,-0.196507,-0.5,-0.235113, + 0,1,0,-0.059418,-0.5,0.123502, + 0,1,0,-0.196507,-0.5,-0.235113, + 0,1,0,-0.196507,-0.5,0.123502, + 0.998257,0.059011,0,-0.196507,0.5,0.123502, + 0.999485,0.028052,-0.015598,-0.18331,0.276766,0.209005, + 0.99963,0.0187,-0.019753,-0.196507,0.5,-0.235113, + 0.99963,0.0187,-0.019753,-0.196507,0.5,-0.235113, + 0.999485,0.028052,-0.015598,-0.18331,0.276766,0.209005, + 0.999546,0,-0.030136,-0.18331,0,0.235113, + 0,-1,0,-0.196507,0.5,0.123502, + 0,-1,0,-0.196507,0.5,-0.235113, + 0,-1,0,-0.059418,0.5,0.123502, + 0.99963,0.0187,-0.019753,-0.196507,0.5,-0.235113, + 0.999546,0,-0.030136,-0.18331,0,0.235113, + 0.99963,-0.0187,-0.019753,-0.196507,-0.5,-0.235113, + -0.999997,-0.001316,-0.001828,-0.058641,0.5,-0.235113, + -0.999998,0,-0.002211,-0.058641,0,0.235113, + -0.999994,-0.001974,-0.002741,-0.059418,0.276766,0.209005, + -0.999994,0.001974,-0.002741,-0.059418,-0.276766,0.209005, + -0.999997,0.001316,-0.001828,-0.058641,-0.5,-0.235113, + -0.999997,0.00083,-0.002166,-0.059418,-0.5,0.123502, + -0.999998,0,-0.002211,-0.058641,0,0.235113, + -0.999997,0.001316,-0.001828,-0.058641,-0.5,-0.235113, + -0.999994,0.001974,-0.002741,-0.059418,-0.276766,0.209005, + -0.999997,-0.001316,-0.001828,-0.058641,0.5,-0.235113, + -0.999997,0.001316,-0.001828,-0.058641,-0.5,-0.235113, + -0.999998,0,-0.002211,-0.058641,0,0.235113, + 0,0,1,-0.058641,-0.5,-0.235113, + 0,0,1,-0.058641,0.5,-0.235113, + 0,0,1,-0.196507,0.5,-0.235113, + 0,0,1,-0.058641,-0.5,-0.235113, + 0,0,1,-0.196507,0.5,-0.235113, + 0,0,1,-0.196507,-0.5,-0.235113, + 0,-1,0,-0.059418,0.5,0.123502, + 0,-1,0,-0.196507,0.5,-0.235113, + 0,-1,0,-0.058641,0.5,-0.235113, + -0.999997,-0.001316,-0.001828,-0.058641,0.5,-0.235113, + -0.999994,-0.001974,-0.002741,-0.059418,0.276766,0.209005, + -0.999997,-0.00083,-0.002166,-0.059418,0.5,0.123502, + 0.999997,-0.001316,-0.001828,0.058641,0.5,-0.235113, + 0.999998,0,-0.002211,0.058641,0,0.235113, + 0.999997,0.001316,-0.001828,0.058641,-0.5,-0.235113, + 0.999994,0.001974,-0.002741,0.059418,-0.276766,0.209005, + 0.999997,0.00083,-0.002166,0.059418,-0.5,0.123502, + 0.999997,0.001316,-0.001828,0.058641,-0.5,-0.235113, + 0.999997,-0.001316,-0.001828,0.058641,0.5,-0.235113, + 0.999994,-0.001974,-0.002741,0.059418,0.276766,0.209005, + 0.999998,0,-0.002211,0.058641,0,0.235113, + 0.999998,0,-0.002211,0.058641,0,0.235113, + 0.999994,0.001974,-0.002741,0.059418,-0.276766,0.209005, + 0.999997,0.001316,-0.001828,0.058641,-0.5,-0.235113, + -0.99963,0.0187,-0.019753,0.196507,0.5,-0.235113, + -0.999485,0.028052,-0.015598,0.18331,0.276766,0.209005, + -0.998257,0.059011,0,0.196507,0.5,0.123502, + -0.999546,0,-0.030136,0.18331,0,0.235113, + -0.99963,-0.0187,-0.019753,0.196507,-0.5,-0.235113, + -0.999485,-0.028052,-0.015598,0.18331,-0.276766,0.209005, + 0,1,0,0.059418,-0.5,0.123502, + 0,1,0,0.196507,-0.5,-0.235113, + 0,1,0,0.058641,-0.5,-0.235113, + -0.999485,-0.028052,-0.015598,0.18331,-0.276766,0.209005, + -0.99963,-0.0187,-0.019753,0.196507,-0.5,-0.235113, + -0.998257,-0.059011,0,0.196507,-0.5,0.123502, + 0,-1,0,0.059418,0.5,0.123502, + 0,-1,0,0.196507,0.5,-0.235113, + 0,-1,0,0.196507,0.5,0.123502, + 0,1,0,0.196507,-0.5,0.123502, + 0,1,0,0.196507,-0.5,-0.235113, + 0,1,0,0.059418,-0.5,0.123502, + -0.99963,0.0187,-0.019753,0.196507,0.5,-0.235113, + -0.999546,0,-0.030136,0.18331,0,0.235113, + -0.999485,0.028052,-0.015598,0.18331,0.276766,0.209005, + -0.99963,0.0187,-0.019753,0.196507,0.5,-0.235113, + -0.99963,-0.0187,-0.019753,0.196507,-0.5,-0.235113, + -0.999546,0,-0.030136,0.18331,0,0.235113, + 0,0,1,0.196507,0.5,-0.235113, + 0,0,1,0.058641,-0.5,-0.235113, + 0,0,1,0.196507,-0.5,-0.235113, + 0,0,1,0.196507,0.5,-0.235113, + 0,0,1,0.058641,0.5,-0.235113, + 0,0,1,0.058641,-0.5,-0.235113, + 0.999997,-0.00083,-0.002166,0.059418,0.5,0.123502, + 0.999994,-0.001974,-0.002741,0.059418,0.276766,0.209005, + 0.999997,-0.001316,-0.001828,0.058641,0.5,-0.235113, + 0,-1,0,0.059418,0.5,0.123502, + 0,-1,0,0.058641,0.5,-0.235113, + 0,-1,0,0.196507,0.5,-0.235113 +}; +static const struct gllist toaster_slots_frame = { GL_N3F_V3F, GL_TRIANGLES, 96, toaster_slots_data, 0 }; +const struct gllist *toaster_slots = &toaster_slots_frame; diff --git a/hacks/glx/toaster_slots.dxf b/hacks/glx/toaster_slots.dxf new file mode 100644 index 0000000..3f17b58 --- /dev/null +++ b/hacks/glx/toaster_slots.dxf @@ -0,0 +1,974 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +-156.295180 +20 +-235.978112 +30 +178.203195 +11 +-167.546690 +21 +-426.312745 +31 +105.301157 +12 +-167.546690 +22 +-426.312745 +32 +-200.463355 +13 +-167.546690 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-156.295180 +20 +0.000001 +30 +200.463355 +11 +-156.295180 +21 +-235.978112 +31 +178.203195 +12 +-167.546690 +22 +-426.312745 +32 +-200.463355 +13 +-167.546690 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-50.661352 +20 +-426.312745 +30 +105.301157 +11 +-49.999118 +21 +-426.312745 +31 +-200.463355 +12 +-167.546690 +22 +-426.312745 +32 +-200.463355 +13 +-167.546690 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-50.661352 +20 +-426.312745 +30 +105.301157 +11 +-167.546690 +21 +-426.312745 +31 +-200.463355 +12 +-167.546690 +22 +-426.312745 +32 +105.301157 +13 +-167.546690 +23 +-426.312745 +33 +105.301157 +0 +3DFACE +8 +0 + 62 +55 +10 +-167.546690 +20 +426.312745 +30 +105.301157 +11 +-156.295180 +21 +235.978127 +31 +178.203195 +12 +-167.546690 +22 +426.312745 +32 +-200.463355 +13 +-167.546690 +23 +426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-167.546690 +20 +426.312745 +30 +-200.463355 +11 +-156.295180 +21 +235.978127 +31 +178.203195 +12 +-156.295180 +22 +0.000001 +32 +200.463355 +13 +-156.295180 +23 +0.000001 +33 +200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-167.546690 +20 +426.312745 +30 +105.301157 +11 +-167.546690 +21 +426.312745 +31 +-200.463355 +12 +-50.661352 +22 +426.312745 +32 +105.301157 +13 +-50.661352 +23 +426.312745 +33 +105.301157 +0 +3DFACE +8 +0 + 62 +55 +10 +-167.546690 +20 +426.312745 +30 +-200.463355 +11 +-156.295180 +21 +0.000001 +31 +200.463355 +12 +-167.546690 +22 +-426.312745 +32 +-200.463355 +13 +-167.546690 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.999118 +20 +426.312745 +30 +-200.463355 +11 +-49.999118 +21 +0.000001 +31 +200.463355 +12 +-50.661352 +22 +235.978127 +32 +178.203195 +13 +-50.661352 +23 +235.978127 +33 +178.203195 +0 +3DFACE +8 +0 + 62 +55 +10 +-50.661352 +20 +-235.978112 +30 +178.203195 +11 +-49.999118 +21 +-426.312745 +31 +-200.463355 +12 +-50.661352 +22 +-426.312745 +32 +105.301157 +13 +-50.661352 +23 +-426.312745 +33 +105.301157 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.999118 +20 +0.000001 +30 +200.463355 +11 +-49.999118 +21 +-426.312745 +31 +-200.463355 +12 +-50.661352 +22 +-235.978112 +32 +178.203195 +13 +-50.661352 +23 +-235.978112 +33 +178.203195 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.999118 +20 +426.312745 +30 +-200.463355 +11 +-49.999118 +21 +-426.312745 +31 +-200.463355 +12 +-49.999118 +22 +0.000001 +32 +200.463355 +13 +-49.999118 +23 +0.000001 +33 +200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.999118 +20 +-426.312745 +30 +-200.463355 +11 +-49.999118 +21 +426.312745 +31 +-200.463355 +12 +-167.546690 +22 +426.312745 +32 +-200.463355 +13 +-167.546690 +23 +426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.999118 +20 +-426.312745 +30 +-200.463355 +11 +-167.546690 +21 +426.312745 +31 +-200.463355 +12 +-167.546690 +22 +-426.312745 +32 +-200.463355 +13 +-167.546690 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-50.661352 +20 +426.312745 +30 +105.301157 +11 +-167.546690 +21 +426.312745 +31 +-200.463355 +12 +-49.999118 +22 +426.312745 +32 +-200.463355 +13 +-49.999118 +23 +426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +-49.999118 +20 +426.312745 +30 +-200.463355 +11 +-50.661352 +21 +235.978127 +31 +178.203195 +12 +-50.661352 +22 +426.312745 +32 +105.301157 +13 +-50.661352 +23 +426.312745 +33 +105.301157 +0 +3DFACE +8 +0 + 62 +55 +10 +49.999110 +20 +426.312745 +30 +-200.463355 +11 +49.999110 +21 +0.000001 +31 +200.463355 +12 +49.999110 +22 +-426.312745 +32 +-200.463355 +13 +49.999110 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +50.661348 +20 +-235.978112 +30 +178.203195 +11 +50.661348 +21 +-426.312745 +31 +105.301157 +12 +49.999110 +22 +-426.312745 +32 +-200.463355 +13 +49.999110 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +49.999110 +20 +426.312745 +30 +-200.463355 +11 +50.661348 +21 +235.978127 +31 +178.203195 +12 +49.999110 +22 +0.000001 +32 +200.463355 +13 +49.999110 +23 +0.000001 +33 +200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +49.999110 +20 +0.000001 +30 +200.463355 +11 +50.661348 +21 +-235.978112 +31 +178.203195 +12 +49.999110 +22 +-426.312745 +32 +-200.463355 +13 +49.999110 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +167.546690 +20 +426.312745 +30 +-200.463355 +11 +156.295151 +21 +235.978127 +31 +178.203195 +12 +167.546690 +22 +426.312745 +32 +105.301157 +13 +167.546690 +23 +426.312745 +33 +105.301157 +0 +3DFACE +8 +0 + 62 +55 +10 +156.295151 +20 +0.000001 +30 +200.463355 +11 +167.546690 +21 +-426.312745 +31 +-200.463355 +12 +156.295151 +22 +-235.978112 +32 +178.203195 +13 +156.295151 +23 +-235.978112 +33 +178.203195 +0 +3DFACE +8 +0 + 62 +55 +10 +50.661348 +20 +-426.312745 +30 +105.301157 +11 +167.546690 +21 +-426.312745 +31 +-200.463355 +12 +49.999110 +22 +-426.312745 +32 +-200.463355 +13 +49.999110 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +156.295151 +20 +-235.978112 +30 +178.203195 +11 +167.546690 +21 +-426.312745 +31 +-200.463355 +12 +167.546690 +22 +-426.312745 +32 +105.301157 +13 +167.546690 +23 +-426.312745 +33 +105.301157 +0 +3DFACE +8 +0 + 62 +55 +10 +50.661348 +20 +426.312745 +30 +105.301157 +11 +167.546690 +21 +426.312745 +31 +-200.463355 +12 +167.546690 +22 +426.312745 +32 +105.301157 +13 +167.546690 +23 +426.312745 +33 +105.301157 +0 +3DFACE +8 +0 + 62 +55 +10 +167.546690 +20 +-426.312745 +30 +105.301157 +11 +167.546690 +21 +-426.312745 +31 +-200.463355 +12 +50.661348 +22 +-426.312745 +32 +105.301157 +13 +50.661348 +23 +-426.312745 +33 +105.301157 +0 +3DFACE +8 +0 + 62 +55 +10 +167.546690 +20 +426.312745 +30 +-200.463355 +11 +156.295151 +21 +0.000001 +31 +200.463355 +12 +156.295151 +22 +235.978127 +32 +178.203195 +13 +156.295151 +23 +235.978127 +33 +178.203195 +0 +3DFACE +8 +0 + 62 +55 +10 +167.546690 +20 +426.312745 +30 +-200.463355 +11 +167.546690 +21 +-426.312745 +31 +-200.463355 +12 +156.295151 +22 +0.000001 +32 +200.463355 +13 +156.295151 +23 +0.000001 +33 +200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +167.546690 +20 +426.312745 +30 +-200.463355 +11 +49.999110 +21 +-426.312745 +31 +-200.463355 +12 +167.546690 +22 +-426.312745 +32 +-200.463355 +13 +167.546690 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +167.546690 +20 +426.312745 +30 +-200.463355 +11 +49.999110 +21 +426.312745 +31 +-200.463355 +12 +49.999110 +22 +-426.312745 +32 +-200.463355 +13 +49.999110 +23 +-426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +50.661348 +20 +426.312745 +30 +105.301157 +11 +50.661348 +21 +235.978127 +31 +178.203195 +12 +49.999110 +22 +426.312745 +32 +-200.463355 +13 +49.999110 +23 +426.312745 +33 +-200.463355 +0 +3DFACE +8 +0 + 62 +55 +10 +50.661348 +20 +426.312745 +30 +105.301157 +11 +49.999110 +21 +426.312745 +31 +-200.463355 +12 +167.546690 +22 +426.312745 +32 +-200.463355 +13 +167.546690 +23 +426.312745 +33 +-200.463355 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/toaster_wing.c b/hacks/glx/toaster_wing.c new file mode 100644 index 0000000..48ce601 --- /dev/null +++ b/hacks/glx/toaster_wing.c @@ -0,0 +1,43 @@ +/* Generated from "toaster_wing.dxf" on Aug-22-2014. + Smoothed vertex normals. Normalized to unit bounding box. + */ + +#include "gllist.h" + +static const float toaster_wing_data[] = { + -0.0018,-0.000471,-0.999998,0.5,-0.248054,-0.034832, + -0.002699,-0.000707,-0.999996,-0.5,0.248054,-0.032483, + -0.001465,-0.000586,-0.999999,0.399306,0.003521,-0.034832, + 0.301513,0.649532,0.697996,0.399306,0.003521,-0.034832, + 0.159005,0.609129,0.776968,-0.5,0.248054,-0.032483, + 0.244597,0.610231,0.753518,0.3827,-0.039065,0.01197, + 0.172439,-0.122105,0.977423,0.5,-0.248054,-0.034832, + 0.064485,-0.135273,0.988708,0.3827,-0.039065,0.01197, + -0.040003,-0.177228,0.983357,-0.466673,-0.094003,-0.032483, + -0.0018,-0.000471,-0.999998,0.5,-0.248054,-0.034832, + -0.002468,-0.00024,-0.999997,-0.466673,-0.094003,-0.032483, + -0.002699,-0.000707,-0.999996,-0.5,0.248054,-0.032483, + 0.064485,-0.135273,0.988708,0.3827,-0.039065,0.01197, + -0.051938,-0.00506,0.998637,-0.5,0.248054,-0.032483, + -0.040003,-0.177228,0.983357,-0.466673,-0.094003,-0.032483, + 0.064485,-0.135273,0.988708,0.3827,-0.039065,0.01197, + -0.031687,-0.285224,0.957937,-0.482606,0.13385,0.034832, + -0.040003,-0.177228,0.983357,-0.466673,-0.094003,-0.032483, + 0.370589,0,0.928797,0.5,-0.065307,-0.034832, + 0.064485,-0.135273,0.988708,0.3827,-0.039065,0.01197, + 0.172439,-0.122105,0.977423,0.5,-0.248054,-0.034832, + 0.244597,0.610231,0.753518,0.3827,-0.039065,0.01197, + 0.159005,0.609129,0.776968,-0.5,0.248054,-0.032483, + 0.125848,0.517903,0.846131,-0.482606,0.13385,0.034832, + -0.772167,-0.309062,-0.555193,0.399306,0.003521,-0.034832, + -0.772167,-0.309062,-0.555193,0.5,-0.248054,-0.034832, + -0.772167,-0.309062,-0.555193,0.3827,-0.039065,0.01197, + 0.408832,0.598113,0.689287,0.5,-0.065307,-0.034832, + 0.301513,0.649532,0.697996,0.399306,0.003521,-0.034832, + 0.244597,0.610231,0.753518,0.3827,-0.039065,0.01197, + -0.0018,-0.000471,-0.999998,0.5,-0.248054,-0.034832, + -0.001465,-0.000586,-0.999999,0.399306,0.003521,-0.034832, + 0,0,-1,0.5,-0.065307,-0.034832 +}; +static const struct gllist toaster_wing_frame = { GL_N3F_V3F, GL_TRIANGLES, 33, toaster_wing_data, 0 }; +const struct gllist *toaster_wing = &toaster_wing_frame; diff --git a/hacks/glx/toaster_wing.dxf b/hacks/glx/toaster_wing.dxf new file mode 100644 index 0000000..c5166a3 --- /dev/null +++ b/hacks/glx/toaster_wing.dxf @@ -0,0 +1,344 @@ +0 +SECTION +2 +HEADER +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +3DFACE +8 +0 + 62 +55 +10 +447.039068 +20 +-221.779630 +30 +-31.142678 +11 +-447.039098 +21 +221.779630 +31 +-29.042747 +12 +357.011020 +22 +3.148119 +32 +-31.142678 +13 +357.011020 +23 +3.148119 +33 +-31.142678 +0 +3DFACE +8 +0 + 62 +55 +10 +357.011020 +20 +3.148119 +30 +-31.142678 +11 +-447.039098 +21 +221.779630 +31 +-29.042747 +12 +342.163920 +22 +-34.927092 +32 +10.702347 +13 +342.163920 +23 +-34.927092 +33 +10.702347 +0 +3DFACE +8 +0 + 62 +55 +10 +447.039068 +20 +-221.779630 +30 +-31.142678 +11 +342.163920 +21 +-34.927092 +31 +10.702347 +12 +-417.241931 +22 +-84.046043 +32 +-29.042747 +13 +-417.241931 +23 +-84.046043 +33 +-29.042747 +0 +3DFACE +8 +0 + 62 +55 +10 +447.039068 +20 +-221.779630 +30 +-31.142678 +11 +-417.241931 +21 +-84.046043 +31 +-29.042747 +12 +-447.039098 +22 +221.779630 +32 +-29.042747 +13 +-447.039098 +23 +221.779630 +33 +-29.042747 +0 +3DFACE +8 +0 + 62 +55 +10 +342.163920 +20 +-34.927092 +30 +10.702347 +11 +-447.039098 +21 +221.779630 +31 +-29.042747 +12 +-417.241931 +22 +-84.046043 +32 +-29.042747 +13 +-417.241931 +23 +-84.046043 +33 +-29.042747 +0 +3DFACE +8 +0 + 62 +55 +10 +342.163920 +20 +-34.927092 +30 +10.702347 +11 +-431.487292 +21 +119.671926 +31 +31.142659 +12 +-417.241931 +22 +-84.046043 +32 +-29.042747 +13 +-417.241931 +23 +-84.046043 +33 +-29.042747 +0 +3DFACE +8 +0 + 62 +55 +10 +447.039068 +20 +-58.389261 +30 +-31.142678 +11 +342.163920 +21 +-34.927092 +31 +10.702347 +12 +447.039068 +22 +-221.779630 +32 +-31.142678 +13 +447.039068 +23 +-221.779630 +33 +-31.142678 +0 +3DFACE +8 +0 + 62 +55 +10 +342.163920 +20 +-34.927092 +30 +10.702347 +11 +-447.039098 +21 +221.779630 +31 +-29.042747 +12 +-431.487292 +22 +119.671926 +32 +31.142659 +13 +-431.487292 +23 +119.671926 +33 +31.142659 +0 +3DFACE +8 +0 + 62 +55 +10 +357.011020 +20 +3.148119 +30 +-31.142678 +11 +447.039068 +21 +-221.779630 +31 +-31.142678 +12 +342.163920 +22 +-34.927092 +32 +10.702347 +13 +342.163920 +23 +-34.927092 +33 +10.702347 +0 +3DFACE +8 +0 + 62 +55 +10 +447.039068 +20 +-58.389261 +30 +-31.142678 +11 +357.011020 +21 +3.148119 +31 +-31.142678 +12 +342.163920 +22 +-34.927092 +32 +10.702347 +13 +342.163920 +23 +-34.927092 +33 +10.702347 +0 +3DFACE +8 +0 + 62 +55 +10 +447.039068 +20 +-221.779630 +30 +-31.142678 +11 +357.011020 +21 +3.148119 +31 +-31.142678 +12 +447.039068 +22 +-58.389261 +32 +-31.142678 +13 +447.039068 +23 +-58.389261 +33 +-31.142678 +0 +ENDSEC +0 +EOF diff --git a/hacks/glx/topblock.c b/hacks/glx/topblock.c new file mode 100644 index 0000000..9161d38 --- /dev/null +++ b/hacks/glx/topblock.c @@ -0,0 +1,883 @@ +/* topblock, Copyright (c) 2006-2012 rednuht + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * + * + +topBlock - a simple openGL 3D hack of falling blocks +based on jwz's dangerball hack + +The proporations of the blocks and their features is not even close to the commercial building block products offered by a variety companies. + +information on this hack might be found at +http://www.jumpstation.co.uk/xscreensaver/topblock/ + +History +25/02/2006 v1.0 release +29/04/2006 v1.11 updated to better fit with xscreensaver v5 + colors defaults to 7 (no black) +19/06/2006 v1.2 fixed dropSpeed = 7 bug, added gltrackball support and some code neatening, thanks to Valdis Kletnieks and JWZ for their input. +*/ + +#include + +# define release_topBlock 0 + +#define DEFAULTS "*delay: 10000 \n" \ + "*count: 30 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "topblock.h" +#include "sphere.h" +#include "tube.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#ifndef HAVE_JWXYZ +# include +#endif + +typedef struct +{ + GLXContext *glx_context; + trackball_state *trackball; + GLfloat rotateSpeed; + GLfloat dropSpeed; + int maxFalling; + int resolution; + Bool button_down_p; + int numFallingBlocks; + GLfloat highest,highestFalling; + GLfloat eyeLine,eyeX,eyeY,eyeZ; + int carpetWidth, carpetLength; + int followMode; + GLfloat followRadius,followAngle; + int plusheight; + GLuint carpet; + GLuint block; + int carpet_polys, block_polys; + NODE *blockNodeRoot; + NODE *blockNodeFollow; + GLfloat rotation; +} topBlockSTATE; + +/* parameter vars */ +static Bool override; +static Bool rotate; +static Bool follow; +static Bool drawCarpet; +static Bool drawBlob; +static Bool drawNipples; +static GLfloat rotateSpeed; +static GLfloat camX; +static GLfloat camY; +static GLfloat camZ; +static GLfloat dropSpeed; +static int maxFalling; +static int maxColors; +static int size; +static int spawn; +static int resolution; + +static XrmOptionDescRec opts[] = { + { "-size", ".size", XrmoptionSepArg, 0 }, + { "-spawn", ".spawn", XrmoptionSepArg, 0 }, + { "-camX", ".camX", XrmoptionSepArg, 0 }, + { "-camY", ".camY", XrmoptionSepArg, 0 }, + { "-camZ", ".camZ", XrmoptionSepArg, 0 }, + { "+rotate", ".rotate", XrmoptionNoArg, "False" }, + { "-rotate", ".rotate", XrmoptionNoArg, "True" }, + { "+carpet", ".carpet", XrmoptionNoArg, "False" }, + { "+nipples", ".nipples", XrmoptionNoArg, "False" }, + { "-blob", ".blob", XrmoptionNoArg, "True" }, + { "-rotateSpeed", ".rotateSpeed", XrmoptionSepArg, 0 }, + { "-follow", ".follow", XrmoptionNoArg, "True" }, + { "-maxFalling", ".maxFalling", XrmoptionSepArg, 0 }, + { "-resolution", ".resolution", XrmoptionSepArg, 0 }, + { "-maxColors", ".maxColors", XrmoptionSepArg, 0 }, + { "-dropSpeed", ".dropSpeed", XrmoptionSepArg, 0 }, + { "-override", ".override", XrmoptionNoArg, "True" }, +}; + +#define DEF_OVERRIDE "False" +#define DEF_ROTATE "True" +#define DEF_FOLLOW "False" +#define DEF_CARPET "True" +#define DEF_BLOB "False" +#define DEF_NIPPLES "True" +#define DEF_ROTATE_SPEED "10" +#define DEF_MAX_FALLING "500" +#define DEF_MAX_COLORS "7" +#define DEF_SIZE "2" +#define DEF_SPAWN "50" +#define DEF_RESOLUTION "4" +#define DEF_CAM_X "1" +#define DEF_CAM_Y "20" +#define DEF_CAM_Z "25" +#define DEF_DROP_SPEED "4" + +static argtype vars[] = { + {&override, "override", "Override", DEF_OVERRIDE, t_Bool}, + {&rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool}, + {&drawCarpet, "carpet", "Carpet", DEF_CARPET, t_Bool}, + {&drawNipples, "nipples", "Nipples", DEF_NIPPLES, t_Bool}, + {&drawBlob, "blob", "Blob", DEF_BLOB, t_Bool}, + {&rotateSpeed, "rotateSpeed", "RotateSpeed", DEF_ROTATE_SPEED, t_Float}, + {&follow, "follow", "Follow", DEF_FOLLOW, t_Bool}, + {&camX, "camX", "camX", DEF_CAM_X, t_Float}, + {&camY, "camY", "camY", DEF_CAM_Y, t_Float}, + {&camZ, "camZ", "camZ", DEF_CAM_Z, t_Float}, + {&size, "size", "size", DEF_SIZE, t_Int}, + {&spawn, "spawn", "spawn", DEF_SPAWN, t_Int}, + {&maxFalling, "maxFalling", "maxFalling", DEF_MAX_FALLING, t_Int}, + {&resolution, "resolution", "resolution", DEF_RESOLUTION, t_Int}, + {&maxColors, "maxColors", "maxColors", DEF_MAX_COLORS, t_Int}, + {&dropSpeed, "dropSpeed", "DropSpeed", DEF_DROP_SPEED, t_Float}, +}; + +static topBlockSTATE *tbs = NULL; + +static ModeSpecOpt topBlock_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +/* Window management, etc */ +ENTRYPOINT void +reshape_topBlock (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width*1.5; + y = -height*0.2; + h = height / (GLfloat) width; + } + glViewport (0, y, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (60.0, 1/h, 1.0, 1000.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glClear(GL_COLOR_BUFFER_BIT); +} + +/* clean up on exit, not required ... */ +ENTRYPOINT void +free_topBlock(ModeInfo *mi) +{ + topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; + NODE *llCurrent, *llOld; + llCurrent = tb->blockNodeRoot; + while (llCurrent != NULL) { + llOld = llCurrent; + llCurrent = llCurrent->next; + free(llOld); + } +} + +/* setup */ +ENTRYPOINT void +init_topBlock (ModeInfo *mi) +{ + topBlockSTATE *tb; + int wire = MI_IS_WIREFRAME(mi); + + MI_INIT (mi, tbs); + + tb = &tbs[MI_SCREEN(mi)]; + + tb->glx_context = init_GL(mi); + + reshape_topBlock (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + +/* if (wire) { drawNipples=False; }*/ + tb->numFallingBlocks=0; + + if (size>10) { size = 10; } + if (size<1) { size = 2; } + tb->carpetWidth = 8 * size; + tb->carpetLength = tb->carpetWidth; + + tb->maxFalling = maxFalling; + tb->maxFalling*=size; + + if (spawn<4) { spawn=4; } + if (spawn>1000) { spawn=1000; } + + tb->rotateSpeed = rotateSpeed; + if (tb->rotateSpeed<1) {tb->rotateSpeed=1; } + if (tb->rotateSpeed>1000) {tb->rotateSpeed=1000;} + tb->rotateSpeed /= 100; + + tb->resolution = resolution; + if (tb->resolution<4) {tb->resolution=4;} + if (tb->resolution>20) {tb->resolution=20;} + tb->resolution*=2; + + if (maxColors<1) {maxColors=1;} + if (maxColors>8) {maxColors=8;} + + tb->dropSpeed = dropSpeed; + if (tb->dropSpeed<1) {tb->dropSpeed=1;} + if (tb->dropSpeed>9) {tb->dropSpeed=9;} /* 10+ produces blocks that can pass through each other */ + + tb->dropSpeed = 80/tb->dropSpeed; + tb->dropSpeed = (blockHeight/tb->dropSpeed); + + reshape_topBlock (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + glClearDepth(1.0f); + if (!wire) { + GLfloat pos[4] = {10.0, 10.0, 1.0, 0.0}; + GLfloat amb[4] = {0.1, 0.1, 0.1, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + glDepthFunc(GL_LEQUAL); + glEnable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); /* all objects exhibit a reverse side */ + glCullFace(GL_BACK); + + if (drawBlob) { + buildBlobBlock(mi); + } else { + buildBlock(mi); /* build the display list holding the simple block */ + } + buildCarpet(mi); /* build the base */ + tb->highest=0; + tb->highestFalling=0; + tb->eyeLine=tb->highest; + tb->eyeX=0; + tb->eyeY=0; + tb->eyeZ=0; + tb->followMode=0; + if (follow) { + tb->plusheight=100; + camZ=camZ-60; + } else { + tb->rotation=random() % 360; + tb->eyeY=10; + tb->plusheight=30; + } + tb->followRadius=0; + /* override camera settings */ + if (override) { + tb->plusheight=100; + drawCarpet=False; + camX=0; + camY=1; + camZ=0; + tb->eyeX=-1; + tb->eyeY=20; + tb->eyeZ=0; + } + tb->trackball = gltrackball_init (False); +} + +/* provides the per frame entertainment */ +ENTRYPOINT void +draw_topBlock (ModeInfo *mi) +{ + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + NODE *llCurrent; + NODE *llNode; + topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; + GLfloat spcN1x,spcN1y,spcN2x,spcN2y; + GLfloat spcC1x,spcC1y,spcC2x,spcC2y; + int wire = MI_IS_WIREFRAME(mi); + GLfloat color[4]; + + if (!tb->glx_context) + return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tb->glx_context)); + mi->polygon_count = 0; + + generateNewBlock(mi); + + if (rotate && (!tb->button_down_p)) { tb->rotation += tb->rotateSpeed; } + if (tb->rotation>=360) { tb->rotation=tb->rotation-360; } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); /* clear current */ + glLoadIdentity(); /* resets directions, do it every time ! */ + glRotatef(current_device_rotation(), 0, 0, 1); + + if (!follow) { + if (tb->highest>tb->eyeLine) { tb->eyeLine+=((tb->highest-tb->eyeLine)/100); } /* creates a smooth camera transition */ + gluLookAt(camX, camY+tb->eyeLine, camZ, tb->eyeX, tb->eyeY+tb->eyeLine, tb->eyeZ, 0.0, 1.0, 0.0); /* setup viewer, xyz cam, xyz looking at and where is up normaly 0,1,0 */ + glRotatef(90, 1.0, 0.0, 0.0); /* x axis */ + } else { + glRotatef(90, 0.0, 0.0, 1.0); /* z axis */ + followBlock(mi); + } + + /* Rotate the scene around a point that's a little higher up. */ + glTranslatef (0, 0, -5); + gltrackball_rotate (tb->trackball); + glTranslatef (0, 0, 5); + + /* rotate the world */ + glRotatef(tb->rotation, 0.0, 0.0, 1.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + llCurrent = tb->blockNodeRoot; + if (drawCarpet) { + /* center carpet */ + glTranslatef(0.0-(tb->carpetWidth/2),0.0-(tb->carpetLength/2),0.0); + glCallList(tb->carpet); + mi->polygon_count += tb->carpet_polys; + glTranslatef(0.0+(tb->carpetWidth/2),0.0+(tb->carpetLength/2),0.0); + glTranslatef(0.0,0.0,-0.55); + } + tb->highestFalling=0; + while (llCurrent != NULL) { /* for each block */ + glPushMatrix(); /* save state */ + /* set color */ + switch (llCurrent->color) { + case 0: + color[0] = 1.0f; + color[1] = 0.0f; + color[2] = 0.0f; + color[3] = 1.0f; + break; + case 1: + color[0] = 0.0f; + color[1] = 1.0f; + color[2] = 0.0f; + color[3] = 1.0f; + break; + case 2: + color[0] = 0.0f; + color[1] = 0.0f; + color[2] = 1.0f; + color[3] = 1.0f; + break; + case 3: + color[0] = 0.95f; + color[1] = 0.95f; + color[2] = 0.95f; + color[3] = 1.0f; + break; + case 4: + color[0] = 1.0f; + color[1] = 0.5f; + color[2] = 0.0f; + color[3] = 1.0f; + break; + case 5: + color[0] = 1.0f; + color[1] = 1.0f; + color[2] = 0.0f; + color[3] = 1.0f; + break; + case 6: + color[0] = 0.5f; + color[1] = 0.5f; + color[2] = 0.5f; + color[3] = 1.0f; + break; + case 7: + color[0] = 0.05f; + color[1] = 0.05f; + color[2] = 0.05f; + color[3] = 1.0f; + break; + } + if (wire) { glColor3fv(color); } + else { glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); } + + if (llCurrent->falling==1) { + spcC2x = 0; + spcC2y = 0; + spcN2x = 0; + spcN2y = 0; + if (llCurrent->height>tb->highestFalling) {tb->highestFalling=llCurrent->height;} + /* all blocks fall at the same rate to avoid mid air collisions */ + llCurrent->height-=tb->dropSpeed; + if (llCurrent->height<=0) { + llCurrent->falling=0; + if (tb->highest==0) { + tb->highest+=blockHeight; + } + } + if ( (llCurrent->height<=tb->highest+1) && (llCurrent->falling==1) ) { + /* check for collision */ + llNode = tb->blockNodeRoot; + spcC1x = llCurrent->x; + spcC1y = llCurrent->y; + switch(llCurrent->rotation) { + case getOrientation(0): + spcC2x = spcC1x; + spcC2y = spcC1y-2; + break; + case getOrientation(1): + spcC2x = spcC1x+2; + spcC2y = spcC1y; + break; + case getOrientation(2): + spcC2x = spcC1x; + spcC2y = spcC1y+2; + break; + case getOrientation(3): + spcC2x = spcC1x-2; + spcC2y = spcC1y; + break; + } + while (llNode != NULL) { + if ( (llNode->falling==0) && (llCurrent->falling==1) ) { + spcN1x = llNode->x; + spcN1y = llNode->y; + switch(llNode->rotation) { + case getOrientation(0): + spcN2x = spcN1x; + spcN2y = spcN1y-2; + break; + case getOrientation(1): + spcN2x = spcN1x+2; + spcN2y = spcN1y; + break; + case getOrientation(2): + spcN2x = spcN1x; + spcN2y = spcN1y+2; + break; + case getOrientation(3): + spcN2x = spcN1x-2; + spcN2y = spcN1y; + break; + } + if ( + ( (spcC1x==spcN1x) && (spcC1y==spcN1y) ) || + ( (spcC1x==spcN2x) && (spcC1y==spcN2y) ) || + ( (spcC2x==spcN2x) && (spcC2y==spcN2y) ) || + ( (spcC2x==spcN1x) && (spcC2y==spcN1y) ) + ){ + if ( fabs(llCurrent->height-(llNode->height+blockHeight)) <= TOLERANCE) { + + llCurrent->falling=0; + llCurrent->height=llNode->height+blockHeight; /* if this is missing then small errors build up until the model fails */ + if ( fabs(llCurrent->height-tb->highest) <= TOLERANCE+blockHeight ) { + tb->highest+=blockHeight; + } + } + } + } + llNode=llNode->next; + } + } + } + /* set location in space */ + glTranslatef(llCurrent->x,llCurrent->y,-llCurrent->height); + /* rotate */ + glRotatef(llCurrent->rotation, 0.0f, 0.0f, 1.0f); + if ((tb->followMode==0) && (llCurrent->next==NULL)) { + tb->blockNodeFollow = llCurrent; + tb->followMode=1; + } + llCurrent = llCurrent->next; + /* draw */ + glCallList(tb->block); + mi->polygon_count += tb->block_polys; + glPopMatrix(); /* restore state */ + } + if (mi->fps_p) do_fps (mi); + glFinish(); + + if (tb->highest>(5*tb->maxFalling)) { drawCarpet=False; } + glXSwapBuffers(dpy, window); +} + + + +/* camera is in follow mode, work out where we should be looking */ +static void followBlock(ModeInfo *mi) +{ + GLfloat xLen,yLen,cx,cy,rangle,xTarget,yTarget; + topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; + cx=0;cy=0; + if ((tb->blockNodeFollow!=NULL) && (tb->followMode==1)){ + + if (tb->highest>tb->eyeLine) { tb->eyeLine+= ((tb->highest-tb->eyeLine)/100); } + /*tb->blockNodeFollow->color=1; only noticable if you set the colors to 1 */ + + if (tb->blockNodeFollow->height > tb->eyeZ) { tb->eyeZ+= ((tb->blockNodeFollow->height - tb->eyeZ)/100); } + if (tb->blockNodeFollow->height < tb->eyeZ) { tb->eyeZ-= ((tb->eyeZ - tb->blockNodeFollow->height)/100); } + + + /* when the scene is rotated we need to know where the block is in the 2 dimensional coordinates of the carpet area + (see http://www.jumpstation.co.uk/rotation/) + */ + + if (tb->followRadius==0) { + xLen = tb->blockNodeFollow->x-cx; + yLen = tb->blockNodeFollow->y-cy; + tb->followRadius=sqrt( (xLen*xLen) + (yLen*yLen) ); + tb->followAngle = (180/M_PI) * asin(xLen/tb->followRadius); + tb->followAngle = quadrantCorrection(tb->followAngle,(int)cx,(int)cy,(int)tb->blockNodeFollow->x,(int)tb->blockNodeFollow->y); + } + rangle = (tb->followAngle+tb->rotation) * M_PI /180; + xTarget = cos(rangle) * tb->followRadius + cx; + yTarget = sin(rangle) * tb->followRadius + cy; + if (tb->followAngle>360) { tb->followAngle=tb->followAngle-360; } + + if (xTarget < tb->eyeX) { tb->eyeX-= ((tb->eyeX - xTarget)/100); } + if (xTarget > tb->eyeX) { tb->eyeX+= ((xTarget - tb->eyeX)/100); } + + if (yTarget < tb->eyeY) { tb->eyeY-= ((tb->eyeY - yTarget)/100); } + if (yTarget > tb->eyeY) { tb->eyeY+= ((yTarget - tb->eyeY)/100); } + if (!tb->blockNodeFollow->falling) { + tb->followMode=0; + /*tb->blockNodeFollow->color=2; only noticable if you set the colors to 1 */ + tb->followRadius=0; + } + } + gluLookAt(camX, camY, camZ-tb->eyeLine, tb->eyeX, tb->eyeY, -tb->eyeZ,-1.0,0.0,0.0); +} + +/* each quater of the circle has to be adjusted for */ +static double quadrantCorrection(double angle,int cx,int cy,int x,int y) +{ + if ((x>=cx) && (y>=cy)) { + angle += (90-(angle-90) * 2); + } else if ((x>=cx) && (y<=cy)) { + angle += 90; + } else if ((x<=cx) && (y<=cy)) { + angle += 90; + } else if ((x<=cx) && (y>=cy)) { + angle += (90-(angle-90) * 2); + } + return(angle-180); +} + +/* if random chance then create a new falling block */ +static void generateNewBlock(ModeInfo *mi) +{ + NODE *llCurrent, *llTail; + GLfloat startOffx, startOffy; + int endOffx, endOffy; + topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; + if ( ((random() % spawn) == 1) && (tb->highestFallingplusheight-blockHeight)+tb->highest)) ) { + startOffx=0; + endOffx=0; + startOffy=0; + endOffy=0; + tb->numFallingBlocks++; + llTail = tb->blockNodeRoot; + if (llTail == NULL) { + llCurrent = ((NODE*) malloc(sizeof(NODE))); + if (!llCurrent) abort(); + llTail = llCurrent; + tb->blockNodeRoot = llCurrent; + } else { + if (tb->numFallingBlocks>=tb->maxFalling) { + /* recycle */ + llCurrent=llTail->next; + tb->blockNodeRoot=llCurrent->next; + } else { + llCurrent = ((NODE*) malloc(sizeof(NODE))); + if (!llCurrent) abort(); + } + while (llTail->next != NULL) { llTail = llTail->next; } /* find last item in list */ + } + llCurrent->falling=1; + llCurrent->rotation=getOrientation(random() % 4); + if (llCurrent->rotation==getOrientation(0)) { + startOffx=1.0; + endOffx=0; + startOffy=3.0; + endOffy=-1; + } else if (llCurrent->rotation==getOrientation(1)) { + startOffx=1.0; + endOffx=-1; + startOffy=1.0; + endOffy=0; + } else if (llCurrent->rotation==getOrientation(2)) { + startOffx=1.0; + endOffx=0; + startOffy=3.0; + endOffy=-1; + } else if (llCurrent->rotation==getOrientation(3)) { + startOffx=5.0; + endOffx=-1; + startOffy=1.0; + endOffy=0; + } + + llCurrent->x=(startOffx-(tb->carpetLength/2)) + getLocation(random() % ((tb->carpetLength/2)+endOffx) ); + llCurrent->y=(startOffy-(tb->carpetLength/2)) + getLocation(random() % ((tb->carpetLength/2)+endOffy) ); + llCurrent->color=(random() % maxColors); + llCurrent->height=getHeight(tb->plusheight+tb->highest); + if (tb->numFallingBlocks>=tb->maxFalling) { + tb->numFallingBlocks--; + tb->numFallingBlocks--; + } + llTail->next = llCurrent; + llTail = llCurrent; + llTail->next = NULL; + + } +} + +/* called at init this creates the 'carpet' display list item */ +static void buildCarpet(ModeInfo *mi) +{ + int i,c,x,y; + GLfloat color[4]; + int wire = MI_IS_WIREFRAME(mi); + topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; + color[0] = 0.0f; + color[1] = 1.0f; + color[2] = 0.0f; + color[3] = 1.0f; + tb->carpet=glGenLists(1); /* only one */ + glNewList(tb->carpet,GL_COMPILE); + tb->carpet_polys=0; + glPushMatrix(); /* save state */ + x=tb->carpetWidth; + y=tb->carpetLength; + if (wire) { glColor3fv(color); } + else { glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); } + /* draw carpet plane */ + glBegin( wire ? GL_LINE_LOOP : GL_QUADS ); + /* draw top */ + glNormal3f( 0, 0, -1 ); + glVertex3f(0.0,0.0,0.0); + glVertex3f(x,0.0,0.0); + glVertex3f(x,y,0.0); + glVertex3f(0.0,y,0.0); + tb->carpet_polys++; + if (!wire) { + /* add edge pieces */ + /* side 1 */ + glNormal3f( 0, -1, 0 ); + glVertex3f(0.0,0.0,0.0); + glVertex3f(x,0.0,0.0); + glVertex3f(x,0,singleThick); + glVertex3f(0.0,0,singleThick); + tb->carpet_polys++; + /* side 2 */ + glNormal3f( -1, 0, 0 ); + glVertex3f(0.0,0.0,0.0); + glVertex3f(0,y,0.0); + glVertex3f(0,y,singleThick); + glVertex3f(0.0,0,singleThick); + tb->carpet_polys++; + /* side 3 */ + glNormal3f( 1, 0, 0 ); + glVertex3f(x,0.0,0.0); + glVertex3f(x,y,0.0); + glVertex3f(x,y,singleThick); + glVertex3f(x,0,singleThick); + tb->carpet_polys++; + /* side 4 */ + glNormal3f( 0, 1, 0 ); + glVertex3f(0,y,0.0); + glVertex3f(x,y,0.0); + glVertex3f(x,y,singleThick); + glVertex3f(0,y,singleThick); + tb->carpet_polys++; + } + glEnd(); + /* nipples */ + if (drawNipples) { + glTranslatef(0.5f,0.5f,-.25); /* move to the cylinder center */ + for (c=0;ccarpet_polys += tube(0, 0, -0.1, + 0, 0, 0.26, + cylSize, 0, + tb->resolution, True, True, + wire); + glRotatef(180, 0.0f, 1.0f, 0.0f); /* they are upside down */ + glRotatef(180, 0.0f, 1.0f, 0.0f); /* recover */ + glTranslatef(0.0f,1.0f,0.0f); /* move to the next cylinder center (backward) */ + } + glPopMatrix(); /* save state */ + glTranslatef(1.0f,0.0f,0.0f); /* reset */ + } + } + glPopMatrix(); /* restore state */ + glEndList(); +} + +/* using the verticies arrays builds the plane, now with normals */ +static void polygonPlane(int wire, int a, int b, int c , int d, int i) +{ + GLfloat topBlockNormals[5][3] = { {0,0,-1}, {0,1,0}, {1,0,0}, {0,0,1}, {0,-1,0} }; + GLfloat topBlockVertices[8][3] = { {-0.49,-2.97,-0.99}, {0.99,-2.97,-0.99}, {0.99,0.99,-0.99} , {-0.49,0.99,-0.99}, {-0.49,-2.97,0.99} , {0.99,-2.97,0.99}, {0.99,0.99,0.99} , {-0.49,0.99,0.99} }; + glBegin( wire ? GL_LINE_LOOP : GL_POLYGON); + glNormal3fv(topBlockNormals[i] ); + glVertex3fv(topBlockVertices[a]); + glVertex3fv(topBlockVertices[b]); + glVertex3fv(topBlockVertices[c]); + glVertex3fv(topBlockVertices[d]); + glEnd(); +} + +/* called at init this creates the 'block' display list item */ +/* the spheres came about originaly as quick way to test the directional lighting/normals */ +static void buildBlock(ModeInfo *mi) +{ + int i,c; + int wire = MI_IS_WIREFRAME(mi); + topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; + tb->block=glGenLists(1); /* only one */ + glNewList(tb->block,GL_COMPILE); + tb->block_polys=0; + glPushMatrix(); /* save state */ + glRotatef(90, 0.0f, 1.0f, 0.0f); + /* base */ + polygonPlane(wire, 0,3,2,1,0); tb->block_polys++; + polygonPlane(wire, 2,3,7,6,1); tb->block_polys++; + polygonPlane(wire, 1,2,6,5,2); tb->block_polys++; + polygonPlane(wire, 4,5,6,7,3); tb->block_polys++; + polygonPlane(wire, 0,1,5,4,4); tb->block_polys++; + if (drawNipples) { + /* nipples */ + /* draw 8 cylinders each with a disk cap */ + glRotatef(90, 0.0f, 1.0f, 0.0f); /* 'aim' the pointer ready for the cylinder */ + glTranslatef(0.5f,0.5f,0.99f); /* move to the cylinder center */ + for (c=0;c<2;c++) { + for (i=0;i<4;i++) { + tb->block_polys += tube(0, 0, 0, + 0, 0, 0.25, + cylSize, 0, + tb->resolution, True, True, + wire); + glTranslatef(0.0f,0.0f,0.25f); /* move to the cylinder cap */ + glTranslatef(0.0f,0.0f,-0.25f); /* move back from the cylinder cap */ + if (c==0) { + glTranslatef(0.0f,-1.0f,0.0f); /* move to the next cylinder center (forward) */ + } else { + glTranslatef(0.0f,1.0f,0.0f); /* move to the next cylinder center (backward) */ + } + } + glTranslatef(-1.0f,1.0f,0.0f); /* move to the cylinder center */ + } + /* udders */ + /* 3 cylinders on the underside */ + glTranslatef(1.5f,-2.5f,-1.5f); /* move to the center, under the top of the brick */ + if (! wire) + for (c=0;c<3;c++) { + tb->block_polys += tube(0, 0, 0.1, + 0, 0, 1.4, + uddSize, 0, + tb->resolution, True, True, wire); + glTranslatef(0.0f,-1.0f,0.0f); /* move to the center */ + } + } + glPopMatrix(); /* restore state */ + glEndList(); +} + +/* + rip off of the builBlock() function creating the GL compilied pointer "block" but only creates two spheres. + spheres are created with unit_sphere from spheres.h to allow wire frame +*/ +static void buildBlobBlock(ModeInfo *mi) +{ + int wire = MI_IS_WIREFRAME(mi); + topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; + tb->block=glGenLists(1); /* only one */ + glNewList(tb->block,GL_COMPILE); + glPushMatrix(); + glScalef(1.4,1.4,1.4); + unit_sphere (tb->resolution/2,tb->resolution, wire); + glPopMatrix(); + glTranslatef(0.0f,-2.0f,0.0f); + glScalef(1.4,1.4,1.4); + unit_sphere (tb->resolution/2,tb->resolution, wire); + glEndList(); +} + + +/* handle input events or not if daemon running the show */ +ENTRYPOINT Bool +topBlock_handle_event (ModeInfo *mi, XEvent *event) +{ + topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, tb->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &tb->button_down_p)) + return True; + else if (event->xany.type == KeyPress) { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == 'a') { + tb->eyeX++; + return True; + } else if (c == 'z') { + tb->eyeX--; + return True; + } else if (c == 's') { + tb->eyeY--; + return True; + } else if (c == 'x') { + tb->eyeY++; + return True; + } else if (c == 'd') { + tb->eyeZ++; + return True; + } else if (c == 'c') { + tb->eyeZ--; + return True; + } else if (c == 'f') { + camX++; + return True; + } else if (c == 'v') { + camX--; + return True; + } else if (c == 'g') { + camY++; + return True; + } else if (c == 'b') { + camY--; + return True; + } else if (c == 'h') { + camZ++; + return True; + } else if (c == 'n') { + camZ--; + return True; + } else if (c == 'r') { + tb->rotation++; + return True; + } + } + + return False; +} + +/* this is tha main change for v5 compatability and acompanying ENTRYPOINTS */ +XSCREENSAVER_MODULE_2 ("TopBlock", topblock, topBlock) + +#endif /* USE_GL */ diff --git a/hacks/glx/topblock.h b/hacks/glx/topblock.h new file mode 100644 index 0000000..1a66c5d --- /dev/null +++ b/hacks/glx/topblock.h @@ -0,0 +1,45 @@ +/* topblock - openGL based hack */ + +static void buildCarpet(ModeInfo *); +static void polygonPlane(int, int, int, int, int ,int); +static void buildBlock(ModeInfo *); +static void generateNewBlock(ModeInfo *); +static void followBlock(ModeInfo *); +static void buildBlobBlock(ModeInfo *); +static double quadrantCorrection(double,int,int,int,int); + +/* this structure holds all the attributes about a block */ +typedef struct blockNode { + int color; /* indexed */ + int rotation; /* indexed: 0=S-N, 1=W-E, 2=N-S, 3=E-W */ + GLfloat height; + GLfloat x; + GLfloat y; + int falling; + struct blockNode *next; +} NODE; + + +/* some handy macros and definitions */ +#define blockHeight 1.49f +#define getHeight(a) (a * blockHeight) + +#define getOrientation(a) (a * 90) + +#define blockWidth 2.0f +#define getLocation(a) (a * blockWidth) + +#define TOLERANCE 0.1f + +#define cylSize 0.333334f +#define uddSize 0.4f +#define singleThick 0.29 /* defines the thickness of the carpet */ + + + + + + + + + diff --git a/hacks/glx/topblock.man b/hacks/glx/topblock.man new file mode 100644 index 0000000..bbe4965 --- /dev/null +++ b/hacks/glx/topblock.man @@ -0,0 +1,170 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +topblock - a 3D world of falling blocks that build up and up. +.SH SYNOPSIS +.B topblock +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-wireframe] +[\-fps] +[\-size \fInumber\fP] +[\-spawn \fInumber\fP] +[\-camX \fInumber\fP] +[\-camY \fInumber\fP] +[\-camZ \fInumber\fP] +[\-rotate] +[\-no-carpet] +[\-no-nipples] +[\-blob] +[\-rotateSpeed \fInumber\fP] +[\-follow] +[\-maxFalling \fInumber\fP] +[\-resolution \fInumber\fP] +[\-maxColors \fInumber\fP] +[\-dropSpeed \fInumber\fP] +[\-override] +.SH DESCRIPTION +Creates a world of falling blocks that build up and up. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.). +.TP 8 +.B \-wireframe | \-no-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.TP 8 +.B \-size \fInumber\fP +Size of the base/carpet. +.TP 8 +.B \-spawn \fInumber\fP +Likeyhood of a new block being created per frame : 1 high, 1000 very low. +.TP 8 +.B \-camX \fInumber\fP +Initial camera X location in the world. +.TP 8 +.B \-camY \fInumber\fP +Initial camera Y location in the world. +.TP 8 +.B \-camZ \fInumber\fP +Initial camera Z location in the world. +.TP 8 +.B \-rotate | -no-rotate +Add/Remove rotation to/from the animation. +.TP 8 +.B \-no-carpet +Remove the base/carpet. +.TP 8 +.B \-no-nipples +Remove nipples on the blocks (also applies to udders) (has no effect in blob mode). +.TP 8 +.B \-blob +Run in blob mode, blocks become over sized spheres. +.TP 8 +.B \-rotateSpeed \fInumber\fP +Varries speed of world rotation. +.TP 8 +.B \-follow +Camera follows blocks as they fall instead of camera being semi static (stays with top block). +.TP 8 +.B \-maxFalling \fInumber\fP +Maximum number of objects created before recycling occurs. +.TP 8 +.B \-resolution \fInumber\fP +Resolution of tubes, disks and spheres. +.TP 8 +.B \-maxColors \fInumber\fP +Number of different colors available to falling objects. +.TP 8 +.B \-dropSpeed \fInumber\fP +Varries speed of falling objects. +.TP 8 +.B \-override +Overrides camera settings and provides a tunnel view. + +.SH KEYS +.PP +.TP 8 +.B a +Increases viewing X coordinate. +.TP 8 +.B z +Decreases viewing X coordinate. +.TP 8 +.B s +Increases viewing Y coordinate. +.TP 8 +.B x +Decreases viewing Y coordinate. +.TP 8 +.B d +Increases viewing Z coordinate. +.TP 8 +.B c +Decreases viewing Z coordinate. +.TP 8 +.B f +Increases camera location X coordinate. +.TP 8 +.B v +Decreases camera location X coordinate. +.TP 8 +.B g +Increases camera location Y coordinate. +.TP 8 +.B b +Decreases camera location Y coordinate. +.TP 8 +.B h +Increases camera location Z coordinate. +.TP 8 +.B n +Decreases camera location Z coordinate. +.TP 8 +.B r +Increases world rotation. +.TP 8 +.B q +quit. +.SH EXAMPLES +To see which block follow-mode is tracking, set the number of block colors to 1. +.TP 8 +.B topblock -follow -maxColors 1 +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2006 by rednuht. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +rednuht + diff --git a/hacks/glx/trackball.c b/hacks/glx/trackball.c new file mode 100644 index 0000000..429ade9 --- /dev/null +++ b/hacks/glx/trackball.c @@ -0,0 +1,331 @@ +/* + * (c) Copyright 1993, 1994, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(TM) is a trademark of Silicon Graphics, Inc. + */ +/* + * Trackball code: + * + * Implementation of a virtual trackball. + * Implemented by Gavin Bell, lots of ideas from Thant Tessman and + * the August '88 issue of Siggraph's "Computer Graphics," pp. 121-129. + * + * Vector manip code: + * + * Original code from: + * David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli + * + * Much mucking with by: + * Gavin Bell + */ + +#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "trackball.h" + +/* + * This size should really be based on the distance from the center of + * rotation to the point on the object underneath the mouse. That + * point would then track the mouse as closely as possible. This is a + * simple example, though, so that is left as an Exercise for the + * Programmer. + */ +#define TRACKBALLSIZE (0.8) + +/* + * Local function prototypes (not defined in trackball.h) + */ +static float tb_project_to_sphere(float, float, float); +static void normalize_quat(float [4]); +static void axis_to_quat(float a[3], float phi, float q[4]); + +static void +vzero(float *v) +{ + v[0] = 0.0; + v[1] = 0.0; + v[2] = 0.0; +} + +static void +vset(float *v, float x, float y, float z) +{ + v[0] = x; + v[1] = y; + v[2] = z; +} + +static void +vsub(const float *src1, const float *src2, float *dst) +{ + dst[0] = src1[0] - src2[0]; + dst[1] = src1[1] - src2[1]; + dst[2] = src1[2] - src2[2]; +} + +static void +vcopy(const float *v1, float *v2) +{ + register int i; + for (i = 0 ; i < 3 ; i++) + v2[i] = v1[i]; +} + +static void +vcross(const float *v1, const float *v2, float *cross) +{ + float temp[3]; + + temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); + temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); + temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); + vcopy(temp, cross); +} + +static float +vlength(const float *v) +{ + return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); +} + +static void +vscale(float *v, float div) +{ + v[0] *= div; + v[1] *= div; + v[2] *= div; +} + +static void +vnormal(float *v) +{ + vscale(v,1.0/vlength(v)); +} + +static float +vdot(const float *v1, const float *v2) +{ + return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; +} + +static void +vadd(const float *src1, const float *src2, float *dst) +{ + dst[0] = src1[0] + src2[0]; + dst[1] = src1[1] + src2[1]; + dst[2] = src1[2] + src2[2]; +} + +/* + * Ok, simulate a track-ball. Project the points onto the virtual + * trackball, then figure out the axis of rotation, which is the cross + * product of P1 P2 and O P1 (O is the center of the ball, 0,0,0) + * Note: This is a deformed trackball-- is a trackball in the center, + * but is deformed into a hyperbolic sheet of rotation away from the + * center. This particular function was chosen after trying out + * several variations. + * + * It is assumed that the arguments to this routine are in the range + * (-1.0 ... 1.0) + */ +void +trackball(float q[4], float p1x, float p1y, float p2x, float p2y) +{ + float a[3]; /* Axis of rotation */ + float phi; /* how much to rotate about axis */ + float p1[3], p2[3], d[3]; + float t; + + if (p1x == p2x && p1y == p2y) { + /* Zero rotation */ + vzero(q); + q[3] = 1.0; + return; + } + + /* + * First, figure out z-coordinates for projection of P1 and P2 to + * deformed sphere + */ + vset(p1,p1x,p1y,tb_project_to_sphere(TRACKBALLSIZE,p1x,p1y)); + vset(p2,p2x,p2y,tb_project_to_sphere(TRACKBALLSIZE,p2x,p2y)); + + /* + * Now, we want the cross product of P1 and P2 + */ + vcross(p2,p1,a); + + /* + * Figure out how much to rotate around that axis. + */ + vsub(p1,p2,d); + t = vlength(d) / (2.0*TRACKBALLSIZE); + + /* + * Avoid problems with out-of-control values... + */ + if (t > 1.0) t = 1.0; + if (t < -1.0) t = -1.0; + phi = 2.0 * asin(t); + + axis_to_quat(a,phi,q); +} + +/* + * Given an axis and angle, compute quaternion. + */ +void +axis_to_quat(float a[3], float phi, float q[4]) +{ + vnormal(a); + vcopy(a,q); + vscale(q,sin(phi/2.0)); + q[3] = cos(phi/2.0); +} + +/* + * Project an x,y pair onto a sphere of radius r OR a hyperbolic sheet + * if we are away from the center of the sphere. + */ +static float +tb_project_to_sphere(float r, float x, float y) +{ + float d, t, z; + + d = sqrt(x*x + y*y); + if (d < r * 0.70710678118654752440) { /* Inside sphere */ + z = sqrt(r*r - d*d); + } else { /* On hyperbola */ + t = r / 1.41421356237309504880; + z = t*t / d; + } + return z; +} + +/* + * Given two rotations, e1 and e2, expressed as quaternion rotations, + * figure out the equivalent single rotation and stuff it into dest. + * + * This routine also normalizes the result every RENORMCOUNT times it is + * called, to keep error from creeping in. + * + * NOTE: This routine is written so that q1 or q2 may be the same + * as dest (or each other). + */ + +#define RENORMCOUNT 97 + +void +add_quats(float q1[4], float q2[4], float dest[4]) +{ + static int count=0; + float t1[4], t2[4], t3[4]; + float tf[4]; + + vcopy(q1,t1); + vscale(t1,q2[3]); + + vcopy(q2,t2); + vscale(t2,q1[3]); + + vcross(q2,q1,t3); + vadd(t1,t2,tf); + vadd(t3,tf,tf); + tf[3] = q1[3] * q2[3] - vdot(q1,q2); + + dest[0] = tf[0]; + dest[1] = tf[1]; + dest[2] = tf[2]; + dest[3] = tf[3]; + + if (++count > RENORMCOUNT) { + count = 0; + normalize_quat(dest); + } +} + +/* + * Quaternions always obey: a^2 + b^2 + c^2 + d^2 = 1.0 + * If they don't add up to 1.0, dividing by their magnitued will + * renormalize them. + * + * Note: See the following for more information on quaternions: + * + * - Shoemake, K., Animating rotation with quaternion curves, Computer + * Graphics 19, No 3 (Proc. SIGGRAPH'85), 245-254, 1985. + * - Pletinckx, D., Quaternion calculus as a basic tool in computer + * graphics, The Visual Computer 5, 2-13, 1989. + */ +static void +normalize_quat(float q[4]) +{ + int i; + float mag; + + mag = (q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); + for (i = 0; i < 4; i++) q[i] /= mag; +} + +/* + * Build a rotation matrix, given a quaternion rotation. + * + */ +void +build_rotmatrix(float m[4][4], float q[4]) +{ + m[0][0] = 1.0 - 2.0 * (q[1] * q[1] + q[2] * q[2]); + m[0][1] = 2.0 * (q[0] * q[1] - q[2] * q[3]); + m[0][2] = 2.0 * (q[2] * q[0] + q[1] * q[3]); + m[0][3] = 0.0; + + m[1][0] = 2.0 * (q[0] * q[1] + q[2] * q[3]); + m[1][1]= 1.0 - 2.0 * (q[2] * q[2] + q[0] * q[0]); + m[1][2] = 2.0 * (q[1] * q[2] - q[0] * q[3]); + m[1][3] = 0.0; + + m[2][0] = 2.0 * (q[2] * q[0] - q[1] * q[3]); + m[2][1] = 2.0 * (q[1] * q[2] + q[0] * q[3]); + m[2][2] = 1.0 - 2.0 * (q[1] * q[1] + q[0] * q[0]); + m[2][3] = 0.0; + + m[3][0] = 0.0; + m[3][1] = 0.0; + m[3][2] = 0.0; + m[3][3] = 1.0; +} + diff --git a/hacks/glx/trackball.h b/hacks/glx/trackball.h new file mode 100644 index 0000000..4b84ab7 --- /dev/null +++ b/hacks/glx/trackball.h @@ -0,0 +1,82 @@ +/* + * (c) Copyright 1993, 1994, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(TM) is a trademark of Silicon Graphics, Inc. + */ +/* + * trackball.h + * A virtual trackball implementation + * Written by Gavin Bell for Silicon Graphics, November 1988. + */ + +#ifndef __TRACKBALL_H__ +#define __TRACKBALL_H__ + +/* + * Pass the x and y coordinates of the last and current positions of + * the mouse, scaled so they are from (-1.0 ... 1.0). + * + * The resulting rotation is returned as a quaternion rotation in the + * first paramater. + */ +void +trackball(float q[4], float p1x, float p1y, float p2x, float p2y); + +/* + * Given two quaternions, add them together to get a third quaternion. + * Adding quaternions to get a compound rotation is analagous to adding + * translations to get a compound translation. When incrementally + * adding rotations, the first argument here should be the new + * rotation, the second and third the total rotation (which will be + * over-written with the resulting new total rotation). + */ +void +add_quats(float *q1, float *q2, float *dest); + +/* + * A useful function, builds a rotation matrix in Matrix based on + * given quaternion. + */ +void +build_rotmatrix(float m[4][4], float q[4]); + +/* + * This function computes a quaternion based on an axis (defined by + * the given vector) and an angle about which to rotate. The angle is + * expressed in radians. The result is put into the third argument. + */ +/* void +axis_to_quat(float a[3], float phi, float q[4]); */ + +#endif /* __TRACKBALL_H__ */ diff --git a/hacks/glx/tronbit.c b/hacks/glx/tronbit.c new file mode 100644 index 0000000..b79309c --- /dev/null +++ b/hacks/glx/tronbit.c @@ -0,0 +1,536 @@ +/* tronbit, Copyright (c) 2011-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 30 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" + +# define free_bit 0 +# define release_bit 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "sphere.h" +#include "rotator.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#include "gllist.h" + +extern const struct gllist *tronbit_idle1, *tronbit_idle2, + *tronbit_no, *tronbit_yes; +static const struct gllist * const *all_objs[] = { + &tronbit_idle1, &tronbit_idle2, &tronbit_no, &tronbit_yes }; + + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" + +#define HISTORY_LENGTH 512 +typedef enum { BIT_IDLE1, BIT_IDLE2, BIT_NO, BIT_YES } bit_state; +#define MODELS 4 + + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + double frequency; + double confidence; + + double last_time; + unsigned char history [HISTORY_LENGTH]; + unsigned char histogram [HISTORY_LENGTH]; + int history_fp, histogram_fp; + + GLuint dlists[MODELS], polys[MODELS]; + char kbd; + +} bit_configuration; + +static bit_configuration *bps = NULL; + +static const GLfloat colors[][4] = { + { 0.66, 0.85, 1.00, 1.00 }, + { 0.66, 0.85, 1.00, 1.00 }, + { 1.00, 0.12, 0.12, 1.00 }, + { 0.98, 0.85, 0.30, 1.00 } +}; + + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" } +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt bit_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Returns the current time in seconds as a double. + */ +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + + +static int +make_bit (ModeInfo *mi, bit_state which) +{ + static const GLfloat spec[4] = {1.0, 1.0, 1.0, 1.0}; + static const GLfloat shiny = 128.0; + const GLfloat *color = colors[which]; + int wire = MI_IS_WIREFRAME(mi); + int polys = 0; + GLfloat s; + const struct gllist *gll; + + glMaterialfv (GL_FRONT, GL_SPECULAR, spec); + glMateriali (GL_FRONT, GL_SHININESS, shiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glColor4f (color[0], color[1], color[2], color[3]); + + glPushMatrix(); + switch (which) + { + case BIT_IDLE1: + glRotatef (-44, 0, 1, 0); /* line up the models with each other */ + glRotatef (-11, 1, 0, 0); + glRotatef ( 8, 0, 0, 1); + s = 1.0; + break; + case BIT_IDLE2: + glRotatef ( 16.0, 0, 0, 1); + glRotatef (-28.0, 1, 0, 0); + s = 1.0; + break; + case BIT_NO: + glRotatef ( 16.0, 0, 0, 1); + glRotatef (-28.0, 1, 0, 0); + s = 1.6; + break; + case BIT_YES: + glRotatef (-44.0, 0, 1, 0); + glRotatef (-32.0, 1, 0, 0); + s = 1.53; + break; + default: + abort(); + break; + } + glScalef (s, s, s); + gll = *all_objs[which]; + renderList (gll, wire); + polys += gll->points / 3; + glPopMatrix(); + + return polys; +} + + +static void +tick_bit (ModeInfo *mi, double now) +{ + bit_configuration *bp = &bps[MI_SCREEN(mi)]; + double freq = bp->frequency; + int n = bp->history[bp->history_fp]; + int histogram_speed = 3 * speed; + int i; + + if (histogram_speed < 1) histogram_speed = 1; + + if (n == BIT_YES || n == BIT_NO) + freq *= 2; + + if (bp->button_down_p) return; + + for (i = 0; i < histogram_speed; i++) + { + int nn = (n == BIT_YES ? 240 : n == BIT_NO ? 17 : 128); + int on = bp->histogram[(bp->histogram_fp-1) % countof(bp->histogram)]; + + /* smooth out the square wave a little bit */ + + if (!(nn > 100 && nn < 200) != + !(on > 100 && on < 200)) + nn += (((random() % 48) - 32) * + ((on > 100 && on < 200) ? 1 : -1)); + + nn += (random() % 16) - 8; + + bp->histogram_fp++; + if (bp->histogram_fp >= countof(bp->history)) + bp->histogram_fp = 0; + bp->histogram [bp->histogram_fp] = nn; + } + + + if (bp->last_time + freq > now && !bp->kbd) return; + + bp->last_time = now; + + bp->history_fp++; + if (bp->history_fp >= countof(bp->history)) + bp->history_fp = 0; + + if (bp->kbd) + { + n = (bp->kbd == '1' ? BIT_YES : + bp->kbd == '0' ? BIT_NO : + (random() & 1) ? BIT_YES : BIT_NO); + bp->kbd = 0; + } + else if (n == BIT_YES || + n == BIT_NO || + frand(1.0) >= bp->confidence) + n = (n == BIT_IDLE1 ? BIT_IDLE2 : BIT_IDLE1); + else + n = (random() & 1) ? BIT_YES : BIT_NO; + + bp->history [bp->history_fp] = n; +} + + +static int +animate_bits (ModeInfo *mi, bit_state omodel, bit_state nmodel, GLfloat ratio) +{ + bit_configuration *bp = &bps[MI_SCREEN(mi)]; + int polys = 0; + GLfloat scale = sin (ratio * M_PI / 2); + GLfloat osize, nsize, small; + int wire = MI_IS_WIREFRAME(mi); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (!wire) + { + glEnable(GL_LIGHTING); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + } + + if ((omodel == BIT_IDLE1 || omodel == BIT_IDLE2) && + (nmodel == BIT_IDLE1 || nmodel == BIT_IDLE2)) + small = 0.9; + else + small = 0.5; + + nsize = small + (1 - small) * scale; + osize = small + (1 - small) * (1 - scale); + + glPushMatrix(); + glScalef (osize, osize, osize); + glCallList (bp->dlists [omodel]); + polys += bp->polys [omodel]; + glPopMatrix(); + + glPushMatrix(); + glScalef (nsize, nsize, nsize); + glCallList (bp->dlists [nmodel]); + polys += bp->polys [nmodel]; + glPopMatrix(); + + return polys; +} + + +static int +draw_histogram (ModeInfo *mi, GLfloat ratio) +{ + bit_configuration *bp = &bps[MI_SCREEN(mi)]; + int samples = countof (bp->histogram); + GLfloat scalex = (GLfloat) mi->xgwa.width / samples; + GLfloat scaley = mi->xgwa.height / 255.0 / 4; /* about 1/4th of screen */ + int polys = 0; + int overlays = 5; + int k; + + glDisable (GL_TEXTURE_2D); + glDisable (GL_LIGHTING); + glDisable (GL_BLEND); + glDisable (GL_DEPTH_TEST); + glDisable (GL_CULL_FACE); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + { + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + glLoadIdentity(); + /* glRotatef(current_device_rotation(), 0, 0, 1); */ + glOrtho (0, mi->xgwa.width, 0, mi->xgwa.height, -1, 1); + + for (k = 0; k < overlays; k++) + { + int i, j; + GLfloat a = (GLfloat) k / overlays; + + glColor3f (0.3 * a, 0.7 * a, 1.0 * a); + + glBegin (GL_LINE_STRIP); + + j = bp->histogram_fp + 1; + for (i = 0; i < samples; i++) + { + GLfloat x, y, z; + if (j >= samples) j = 0; + x = i; + y = bp->histogram[j]; + z = 0; + + y += (int) ((random() % 16) - 8); + y += 16; /* margin at bottom of screen */ + + x *= scalex; + y *= scaley; + + glVertex3f (x, y, z); + ++j; + polys++; + } + glEnd(); + } + + glPopMatrix(); + } + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + + return polys; +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_bit (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + + +ENTRYPOINT Bool +bit_handle_event (ModeInfo *mi, XEvent *event) +{ + bit_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + + if (keysym == XK_Up || keysym == XK_Left || keysym == XK_Prior) + c = '1'; + else if (keysym == XK_Down || keysym == XK_Right || keysym == XK_Next) + c = '0'; + + if (c == ' ' || c == '\t' || c == '\n' || c == '1' || c == '0') + { + bp->kbd = c; + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_bit (ModeInfo *mi) +{ + bit_configuration *bp; + int i; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_bit (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + { + double spin_speed = 3.0; + double wander_speed = 0.03 * speed; + double spin_accel = 4.0; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False); + bp->trackball = gltrackball_init (False); + } + + for (i = 0; i < countof(bp->dlists); i++) + { + bp->dlists[i] = glGenLists (1); + glNewList (bp->dlists[i], GL_COMPILE); + bp->polys [i] = make_bit (mi, i); + glEndList (); + } + + bp->frequency = 0.30 / speed; /* parity around 3x/second */ + bp->confidence = 0.06; /* provide answer 1/15 or so */ + + for (i = 0; i < countof(bp->histogram); i++) + bp->histogram[i] = 128 + (random() % 16) - 8; +} + + +ENTRYPOINT void +draw_bit (ModeInfo *mi) +{ + bit_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + glPushMatrix (); + glScalef(1.1, 1.1, 1.1); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + glRotatef(o, 0, 0, 1); + } +# endif + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 11, + (y - 0.5) * 5, + (z - 0.5) * 3); + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + + mi->polygon_count = 0; + + glScalef (6, 6, 6); + + { + int nmodel = bp->history [bp->history_fp]; + int omodel = bp->history [bp->history_fp > 0 + ? bp->history_fp-1 + : countof(bp->history)-1]; + double now = double_time(); + double ratio = 1 - ((bp->last_time + bp->frequency) - now) / bp->frequency; + if (ratio > 1) ratio = 1; + mi->polygon_count += draw_histogram (mi, ratio); + + if (MI_WIDTH(mi) > MI_HEIGHT(mi) * 5) { /* wide window: scale up */ + glScalef (8, 8, 8); + } + + mi->polygon_count += animate_bits (mi, omodel, nmodel, ratio); + tick_bit (mi, now); + } + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("TronBit", tronbit, bit) + +#endif /* USE_GL */ diff --git a/hacks/glx/tronbit.man b/hacks/glx/tronbit.man new file mode 100644 index 0000000..9001f0e --- /dev/null +++ b/hacks/glx/tronbit.man @@ -0,0 +1,79 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +tronbit - Yes. Yes. No. Yes. Yes. No. Yes. Yes yes yes yes yes. +.SH SYNOPSIS +.B tronbit +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fIratio\fP] +[\-spin] +[\-wander] +[\-wireframe] +[\-fps] +.SH DESCRIPTION +Draws an animation of the character "Bit" from the film, \fITron\fP. + +The "yes" state is a tetrahedron; the "no" state is the second +stellation of an icosahedron; and the idle state oscillates between +a small triambic icosahedron and the compound of an icosahedron and +a dodecahedron. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +How fast the animation should run. +Less than 1 for slower, greater than 1 for faster. +.TP 8 +.B \-no\-spin +Don't rotate. +.TP 8 +.B \-no\-wander +Don't wander around. +.TP 8 +.B \-wireframe +Render in wireframe instead of solid. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR polyhedra (1), +.BR dangerball (1), +.BR companioncube (1), +.BR xscreensaver (1), +.BR TRON. +.SH COPYRIGHT +Copyright \(co 2011 by Jamie Zawinski. Permission to use, copy, +modify, distribute, and sell this software and its documentation for +any purpose is hereby granted without fee, provided that the above +copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Jamie Zawinski, who fights for the users. diff --git a/hacks/glx/tronbit_idle1.c b/hacks/glx/tronbit_idle1.c new file mode 100644 index 0000000..f053259 --- /dev/null +++ b/hacks/glx/tronbit_idle1.c @@ -0,0 +1,247 @@ +/* odd parity = small triambic icosahedron */ + +#include "gllist.h" +static const float data[]={ + 0,0,1,0.263523,-0.204124,0.372678, + 0,0,1,0.263523,0.10775,0.372678, + 0,0,1,0.045015,0.33028,0.372678, + 0,0,1,0.263523,-0.204124,0.372678, + 0,0,1,0.045015,0.33028,0.372678, + 0,0,1,-0.225076,0.174343,0.372678, + 0,0,1,0.263523,-0.204124,0.372678, + 0,0,1,-0.225076,0.174343,0.372678, + 0,0,1,-0.308538,-0.126156,0.372678, + 0,0,1,0.263523,-0.204124,0.372678, + 0,0,1,-0.308538,-0.126156,0.372678, + 0,0,1,-0.038448,-0.282093,0.372678, + 0.942809,0,0.333333,0.263523,-0.204124,0.372678, + 0.942809,0,0.333333,0.36418,-0.282093,0.087977, + 0.942809,0,0.333333,0.45421,-0.126156,-0.166667, + 0.942809,0,0.333333,0.263523,-0.204124,0.372678, + 0.942809,0,0.333333,0.45421,-0.126156,-0.166667, + 0.942809,0,0.333333,0.426389,0.174343,-0.087977, + 0.942809,0,0.333333,0.263523,-0.204124,0.372678, + 0.942809,0,0.333333,0.426389,0.174343,-0.087977, + 0.942809,0,0.333333,0.336359,0.33028,0.166667, + 0.942809,0,0.333333,0.263523,-0.204124,0.372678, + 0.942809,0,0.333333,0.336359,0.33028,0.166667, + 0.942809,0,0.333333,0.263523,0.10775,0.372678, + 0.672718,0.66056,0.333333,0.263523,0.10775,0.372678, + 0.672718,0.66056,0.333333,0.471405,0,0.166667, + 0.672718,0.66056,0.333333,0.426389,0.174343,-0.087977, + 0.672718,0.66056,0.333333,0.263523,0.10775,0.372678, + 0.672718,0.66056,0.333333,0.426389,0.174343,-0.087977, + 0.672718,0.66056,0.333333,0.235702,0.408248,-0.166667, + 0.672718,0.66056,0.333333,0.263523,0.10775,0.372678, + 0.672718,0.66056,0.333333,0.235702,0.408248,-0.166667, + 0.672718,0.66056,0.333333,0.062209,0.456436,0.087977, + 0.672718,0.66056,0.333333,0.263523,0.10775,0.372678, + 0.672718,0.66056,0.333333,0.062209,0.456436,0.087977, + 0.672718,0.66056,0.333333,0.045015,0.33028,0.372678, + -0.471405,0.816497,0.333333,0.045015,0.33028,0.372678, + -0.471405,0.816497,0.333333,0.062209,0.456436,0.087977, + -0.471405,0.816497,0.333333,-0.117851,0.456436,-0.166667, + -0.471405,0.816497,0.333333,0.045015,0.33028,0.372678, + -0.471405,0.816497,0.333333,-0.117851,0.456436,-0.166667, + -0.471405,0.816497,0.333333,-0.36418,0.282093,-0.087977, + -0.471405,0.816497,0.333333,0.045015,0.33028,0.372678, + -0.471405,0.816497,0.333333,-0.36418,0.282093,-0.087977, + -0.471405,0.816497,0.333333,-0.45421,0.126156,0.166667, + -0.471405,0.816497,0.333333,0.045015,0.33028,0.372678, + -0.471405,0.816497,0.333333,-0.45421,0.126156,0.166667, + -0.471405,0.816497,0.333333,-0.225076,0.174343,0.372678, + -0.908421,0.252311,0.333333,-0.225076,0.174343,0.372678, + -0.908421,0.252311,0.333333,-0.235702,0.408248,0.166667, + -0.908421,0.252311,0.333333,-0.36418,0.282093,-0.087977, + -0.90842,0.252312,0.333333,-0.225076,0.174343,0.372678, + -0.90842,0.252312,0.333333,-0.36418,0.282093,-0.087977, + -0.90842,0.252312,0.333333,-0.471405,0,-0.166667, + -0.90842,0.252311,0.333334,-0.225076,0.174343,0.372678, + -0.90842,0.252311,0.333334,-0.471405,0,-0.166667, + -0.90842,0.252311,0.333334,-0.426389,-0.174343,0.087977, + -0.908421,0.252311,0.333333,-0.225076,0.174343,0.372678, + -0.908421,0.252311,0.333333,-0.426389,-0.174343,0.087977, + -0.908421,0.252311,0.333333,-0.308538,-0.126156,0.372678, + -0.471405,-0.816497,0.333333,-0.308538,-0.126156,0.372678, + -0.471405,-0.816497,0.333333,-0.426389,-0.174343,0.087977, + -0.471405,-0.816497,0.333333,-0.336359,-0.33028,-0.166667, + -0.471404,-0.816497,0.333333,-0.308538,-0.126156,0.372678, + -0.471404,-0.816497,0.333333,-0.336359,-0.33028,-0.166667, + -0.471404,-0.816497,0.333333,-0.062209,-0.456436,-0.087977, + -0.471405,-0.816497,0.333333,-0.308538,-0.126156,0.372678, + -0.471405,-0.816497,0.333333,-0.062209,-0.456436,-0.087977, + -0.471405,-0.816497,0.333333,0.117851,-0.456436,0.166667, + -0.471405,-0.816497,0.333333,-0.308538,-0.126156,0.372678, + -0.471405,-0.816497,0.333333,0.117851,-0.456436,0.166667, + -0.471405,-0.816497,0.333333,-0.038448,-0.282093,0.372678, + 0.235702,-0.912871,0.333333,-0.038448,-0.282093,0.372678, + 0.235702,-0.912871,0.333333,-0.235702,-0.408248,0.166667, + 0.235702,-0.912871,0.333333,-0.062209,-0.456436,-0.087977, + 0.235702,-0.912871,0.333333,-0.038448,-0.282093,0.372678, + 0.235702,-0.912871,0.333333,-0.062209,-0.456436,-0.087977, + 0.235702,-0.912871,0.333333,0.235702,-0.408248,-0.166667, + 0.235702,-0.912871,0.333333,-0.038448,-0.282093,0.372678, + 0.235702,-0.912871,0.333333,0.235702,-0.408248,-0.166667, + 0.235702,-0.912871,0.333333,0.36418,-0.282093,0.087977, + 0.235702,-0.912871,0.333333,-0.038448,-0.282093,0.372678, + 0.235702,-0.912871,0.333333,0.36418,-0.282093,0.087977, + 0.235702,-0.912871,0.333333,0.263523,-0.204124,0.372678, + 0.09003,0.66056,0.745356,0.263523,0.10775,0.372678, + 0.09003,0.66056,0.745356,0.336359,0.33028,0.166667, + 0.09003,0.66056,0.745356,0.062209,0.456436,0.087977, + 0.09003,0.66056,0.745356,0.263523,0.10775,0.372678, + 0.09003,0.66056,0.745356,0.062209,0.456436,0.087977, + 0.09003,0.66056,0.745356,-0.235702,0.408248,0.166667, + 0.09003,0.66056,0.745356,0.263523,0.10775,0.372678, + 0.09003,0.66056,0.745356,-0.235702,0.408248,0.166667, + 0.09003,0.66056,0.745356,-0.225076,0.174343,0.372678, + 0.09003,0.660559,0.745356,0.263523,0.10775,0.372678, + 0.09003,0.660559,0.745356,-0.225076,0.174343,0.372678, + 0.09003,0.660559,0.745356,0,0,0.5, + 0.471405,0.816497,-0.333333,0.336359,0.33028,0.166667, + 0.471405,0.816497,-0.333333,0.426389,0.174343,-0.087977, + 0.471405,0.816497,-0.333333,0.308538,0.126156,-0.372678, + 0.471405,0.816497,-0.333333,0.336359,0.33028,0.166667, + 0.471405,0.816497,-0.333333,0.308538,0.126156,-0.372678, + 0.471405,0.816497,-0.333333,0.038448,0.282093,-0.372678, + 0.471405,0.816497,-0.333333,0.336359,0.33028,0.166667, + 0.471405,0.816497,-0.333333,0.038448,0.282093,-0.372678, + 0.471405,0.816497,-0.333333,-0.117851,0.456436,-0.166667, + 0.471404,0.816497,-0.333333,0.336359,0.33028,0.166667, + 0.471404,0.816497,-0.333333,-0.117851,0.456436,-0.166667, + 0.471404,0.816497,-0.333333,0.062209,0.456436,0.087977, + 0.617077,0.252311,-0.745356,0.426389,0.174343,-0.087977, + 0.617077,0.252311,-0.745356,0.45421,-0.126156,-0.166667, + 0.617077,0.252311,-0.745356,0.225076,-0.174343,-0.372678, + 0.617076,0.252311,-0.745356,0.426389,0.174343,-0.087977, + 0.617076,0.252311,-0.745356,0.225076,-0.174343,-0.372678, + 0.617076,0.252311,-0.745356,0,0,-0.5, + 0.617077,0.252311,-0.745356,0.426389,0.174343,-0.087977, + 0.617077,0.252311,-0.745356,0,0,-0.5, + 0.617077,0.252311,-0.745356,0.038448,0.282093,-0.372678, + 0.617077,0.252311,-0.745356,0.426389,0.174343,-0.087977, + 0.617077,0.252311,-0.745356,0.038448,0.282093,-0.372678, + 0.617077,0.252311,-0.745356,0.235702,0.408248,-0.166667, + 0.471405,-0.816497,-0.333333,0.45421,-0.126156,-0.166667, + 0.471405,-0.816497,-0.333333,0.36418,-0.282093,0.087977, + 0.471405,-0.816497,-0.333333,0.117851,-0.456436,0.166667, + 0.471405,-0.816497,-0.333333,0.45421,-0.126156,-0.166667, + 0.471405,-0.816497,-0.333333,0.117851,-0.456436,0.166667, + 0.471405,-0.816497,-0.333333,-0.062209,-0.456436,-0.087977, + 0.471405,-0.816497,-0.333333,0.45421,-0.126156,-0.166667, + 0.471405,-0.816497,-0.333333,-0.062209,-0.456436,-0.087977, + 0.471405,-0.816497,-0.333333,-0.045015,-0.33028,-0.372678, + 0.471405,-0.816497,-0.333333,0.45421,-0.126156,-0.166667, + 0.471405,-0.816497,-0.333333,-0.045015,-0.33028,-0.372678, + 0.471405,-0.816497,-0.333333,0.225076,-0.174343,-0.372678, + -0.235702,0.912871,-0.333333,0.062209,0.456436,0.087977, + -0.235702,0.912871,-0.333333,0.235702,0.408248,-0.166667, + -0.235702,0.912871,-0.333333,0.038448,0.282093,-0.372678, + -0.235702,0.912871,-0.333333,0.062209,0.456436,0.087977, + -0.235702,0.912871,-0.333333,0.038448,0.282093,-0.372678, + -0.235702,0.912871,-0.333333,-0.263523,0.204124,-0.372678, + -0.235702,0.912871,-0.333333,0.062209,0.456436,0.087977, + -0.235702,0.912871,-0.333333,-0.263523,0.204124,-0.372678, + -0.235702,0.912871,-0.333333,-0.36418,0.282093,-0.087977, + -0.235702,0.912871,-0.333333,0.062209,0.456436,0.087977, + -0.235702,0.912871,-0.333333,-0.36418,0.282093,-0.087977, + -0.235702,0.912871,-0.333333,-0.235702,0.408248,0.166667, + 0.90842,-0.252312,-0.333334,0.426389,0.174343,-0.087977, + 0.90842,-0.252312,-0.333334,0.471405,0,0.166667, + 0.90842,-0.252312,-0.333334,0.36418,-0.282093,0.087977, + 0.908421,-0.252311,-0.333333,0.426389,0.174343,-0.087977, + 0.908421,-0.252311,-0.333333,0.36418,-0.282093,0.087977, + 0.908421,-0.252311,-0.333333,0.235702,-0.408248,-0.166667, + 0.908421,-0.252311,-0.333333,0.426389,0.174343,-0.087977, + 0.908421,-0.252311,-0.333333,0.235702,-0.408248,-0.166667, + 0.908421,-0.252311,-0.333333,0.225076,-0.174343,-0.372678, + 0.908421,-0.252311,-0.333333,0.426389,0.174343,-0.087977, + 0.908421,-0.252311,-0.333333,0.225076,-0.174343,-0.372678, + 0.908421,-0.252311,-0.333333,0.308538,0.126156,-0.372678, + 0.527046,-0.408248,0.745356,0.471405,0,0.166667, + 0.527046,-0.408248,0.745356,0.263523,0.10775,0.372678, + 0.527046,-0.408248,0.745356,0,0,0.5, + 0.527046,-0.408248,0.745356,0.471405,0,0.166667, + 0.527046,-0.408248,0.745356,0,0,0.5, + 0.527046,-0.408248,0.745356,-0.038448,-0.282093,0.372678, + 0.527046,-0.408248,0.745356,0.471405,0,0.166667, + 0.527046,-0.408248,0.745356,-0.038448,-0.282093,0.372678, + 0.527046,-0.408248,0.745356,0.117851,-0.456436,0.166667, + 0.527047,-0.408249,0.745356,0.471405,0,0.166667, + 0.527047,-0.408249,0.745356,0.117851,-0.456436,0.166667, + 0.527047,-0.408249,0.745356,0.36418,-0.282093,0.087977, + -0.617077,-0.252311,0.745356,-0.225076,0.174343,0.372678, + -0.617077,-0.252311,0.745356,-0.45421,0.126156,0.166667, + -0.617077,-0.252311,0.745356,-0.426389,-0.174343,0.087977, + -0.617077,-0.252311,0.745356,-0.225076,0.174343,0.372678, + -0.617077,-0.252311,0.745356,-0.426389,-0.174343,0.087977, + -0.617077,-0.252311,0.745356,-0.235702,-0.408248,0.166667, + -0.617077,-0.252311,0.745356,-0.225076,0.174343,0.372678, + -0.617077,-0.252311,0.745356,-0.235702,-0.408248,0.166667, + -0.617077,-0.252311,0.745356,-0.038448,-0.282093,0.372678, + -0.617076,-0.252311,0.745356,-0.225076,0.174343,0.372678, + -0.617076,-0.252311,0.745356,-0.038448,-0.282093,0.372678, + -0.617076,-0.252311,0.745356,0,0,0.5, + -0.942809,0,-0.333333,-0.45421,0.126156,0.166667, + -0.942809,0,-0.333333,-0.36418,0.282093,-0.087977, + -0.942809,0,-0.333333,-0.263523,0.204124,-0.372678, + -0.942809,0,-0.333333,-0.45421,0.126156,0.166667, + -0.942809,0,-0.333333,-0.263523,0.204124,-0.372678, + -0.942809,0,-0.333333,-0.263523,-0.10775,-0.372678, + -0.942809,0,-0.333333,-0.45421,0.126156,0.166667, + -0.942809,0,-0.333333,-0.263523,-0.10775,-0.372678, + -0.942809,0,-0.333333,-0.336359,-0.33028,-0.166667, + -0.942809,0,-0.333333,-0.45421,0.126156,0.166667, + -0.942809,0,-0.333333,-0.336359,-0.33028,-0.166667, + -0.942809,0,-0.333333,-0.426389,-0.174343,0.087977, + -0.527046,0.408248,-0.745356,-0.36418,0.282093,-0.087977, + -0.527046,0.408248,-0.745356,-0.117851,0.456436,-0.166667, + -0.527046,0.408248,-0.745356,0.038448,0.282093,-0.372678, + -0.527046,0.408248,-0.745356,-0.36418,0.282093,-0.087977, + -0.527046,0.408248,-0.745356,0.038448,0.282093,-0.372678, + -0.527046,0.408248,-0.745356,0,0,-0.5, + -0.527046,0.408248,-0.745356,-0.36418,0.282093,-0.087977, + -0.527046,0.408248,-0.745356,0,0,-0.5, + -0.527046,0.408248,-0.745356,-0.263523,-0.10775,-0.372678, + -0.527046,0.408249,-0.745356,-0.36418,0.282093,-0.087977, + -0.527046,0.408249,-0.745356,-0.263523,-0.10775,-0.372678, + -0.527046,0.408249,-0.745356,-0.471405,0,-0.166667, + -0.672718,-0.66056,-0.333333,-0.426389,-0.174343,0.087977, + -0.672718,-0.66056,-0.333333,-0.471405,0,-0.166667, + -0.672718,-0.66056,-0.333333,-0.263523,-0.10775,-0.372678, + -0.672718,-0.66056,-0.333333,-0.426389,-0.174343,0.087977, + -0.672718,-0.66056,-0.333333,-0.263523,-0.10775,-0.372678, + -0.672718,-0.66056,-0.333333,-0.045015,-0.33028,-0.372678, + -0.672718,-0.66056,-0.333333,-0.426389,-0.174343,0.087977, + -0.672718,-0.66056,-0.333333,-0.045015,-0.33028,-0.372678, + -0.672718,-0.66056,-0.333333,-0.062209,-0.456436,-0.087977, + -0.672718,-0.66056,-0.333333,-0.426389,-0.174343,0.087977, + -0.672718,-0.66056,-0.333333,-0.062209,-0.456436,-0.087977, + -0.672718,-0.66056,-0.333333,-0.235702,-0.408248,0.166667, + -0.09003,-0.66056,-0.745356,-0.062209,-0.456436,-0.087977, + -0.09003,-0.66056,-0.745356,-0.336359,-0.33028,-0.166667, + -0.09003,-0.66056,-0.745356,-0.263523,-0.10775,-0.372678, + -0.09003,-0.66056,-0.745356,-0.062209,-0.456436,-0.087977, + -0.09003,-0.66056,-0.745356,-0.263523,-0.10775,-0.372678, + -0.09003,-0.66056,-0.745356,0,0,-0.5, + -0.09003,-0.66056,-0.745356,-0.062209,-0.456436,-0.087977, + -0.09003,-0.66056,-0.745356,0,0,-0.5, + -0.09003,-0.66056,-0.745356,0.225076,-0.174343,-0.372678, + -0.09003,-0.66056,-0.745356,-0.062209,-0.456436,-0.087977, + -0.09003,-0.66056,-0.745356,0.225076,-0.174343,-0.372678, + -0.09003,-0.66056,-0.745356,0.235702,-0.408248,-0.166667, + 0,0,-1,0.308538,0.126156,-0.372678, + 0,0,-1,0.225076,-0.174343,-0.372678, + 0,0,-1,-0.045015,-0.33028,-0.372678, + 0,0,-1,0.308538,0.126156,-0.372678, + 0,0,-1,-0.045015,-0.33028,-0.372678, + 0,0,-1,-0.263523,-0.10775,-0.372678, + 0,0,-1,0.308538,0.126156,-0.372678, + 0,0,-1,-0.263523,-0.10775,-0.372678, + 0,0,-1,-0.263523,0.204124,-0.372678, + 0,0,-1,0.308538,0.126156,-0.372678, + 0,0,-1,-0.263523,0.204124,-0.372678, + 0,0,-1,0.038448,0.282093,-0.372678 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,240,data,NULL}; +const struct gllist *tronbit_idle1=&frame; diff --git a/hacks/glx/tronbit_idle2.c b/hacks/glx/tronbit_idle2.c new file mode 100644 index 0000000..8ee0380 --- /dev/null +++ b/hacks/glx/tronbit_idle2.c @@ -0,0 +1,175 @@ +/* even parity = compound of icosahedron and dodecahedron */ + +#include "gllist.h" +static const float data[]={ + 0.491123,0.356822,0.794655,0.138196,0.425326,0.223607, + 0.491123,0.356822,0.794655,0,0,0.5, + 0.491123,0.356822,0.794655,0.447213,0,0.223607, + -0.187593,0.57735,0.794655,-0.361804,0.262865,0.223607, + -0.187593,0.57735,0.794655,0,0,0.5, + -0.187593,0.57735,0.794655,0.138196,0.425326,0.223607, + -0.607062,0,0.794655,-0.361804,-0.262865,0.223607, + -0.607062,0,0.794655,0,0,0.5, + -0.607062,0,0.794655,-0.361804,0.262865,0.223607, + -0.187593,-0.57735,0.794655,0.138196,-0.425326,0.223607, + -0.187593,-0.57735,0.794655,0,0,0.5, + -0.187593,-0.57735,0.794655,-0.361804,-0.262865,0.223607, + 0.491123,-0.356822,0.794655,0,0,0.5, + 0.491123,-0.356822,0.794655,0.138196,-0.425326,0.223607, + 0.491123,-0.356822,0.794655,0.447213,0,0.223607, + 0.794655,-0.57735,0.187593,0.361804,-0.262865,-0.223607, + 0.794655,-0.57735,0.187593,0.447213,0,0.223607, + 0.794655,-0.57735,0.187593,0.138196,-0.425326,0.223607, + 0.982247,0,-0.187592,0.447213,0,0.223607, + 0.982247,0,-0.187592,0.361804,-0.262865,-0.223607, + 0.982247,0,-0.187592,0.361804,0.262865,-0.223607, + 0.794655,0.57735,0.187593,0.447213,0,0.223607, + 0.794655,0.57735,0.187593,0.361804,0.262865,-0.223607, + 0.794655,0.57735,0.187593,0.138196,0.425326,0.223607, + 0.303531,0.934172,-0.187592,-0.138196,0.425326,-0.223607, + 0.303531,0.934172,-0.187592,0.138196,0.425326,0.223607, + 0.303531,0.934172,-0.187592,0.361804,0.262865,-0.223607, + -0.303531,0.934172,0.187592,0.138196,0.425326,0.223607, + -0.303531,0.934172,0.187592,-0.138196,0.425326,-0.223607, + -0.303531,0.934172,0.187592,-0.361804,0.262865,0.223607, + -0.794655,0.57735,-0.187593,-0.447213,0,-0.223607, + -0.794655,0.57735,-0.187593,-0.361804,0.262865,0.223607, + -0.794655,0.57735,-0.187593,-0.138196,0.425326,-0.223607, + -0.982247,0,0.187592,-0.361804,0.262865,0.223607, + -0.982247,0,0.187592,-0.447213,0,-0.223607, + -0.982247,0,0.187592,-0.361804,-0.262865,0.223607, + -0.794655,-0.57735,-0.187593,-0.138196,-0.425326,-0.223607, + -0.794655,-0.57735,-0.187593,-0.361804,-0.262865,0.223607, + -0.794655,-0.57735,-0.187593,-0.447213,0,-0.223607, + -0.303531,-0.934172,0.187592,-0.361804,-0.262865,0.223607, + -0.303531,-0.934172,0.187592,-0.138196,-0.425326,-0.223607, + -0.303531,-0.934172,0.187592,0.138196,-0.425326,0.223607, + 0.303531,-0.934172,-0.187592,0.138196,-0.425326,0.223607, + 0.303531,-0.934172,-0.187592,-0.138196,-0.425326,-0.223607, + 0.303531,-0.934172,-0.187592,0.361804,-0.262865,-0.223607, + 0.607062,0,-0.794655,0,0,-0.5, + 0.607062,0,-0.794655,0.361804,0.262865,-0.223607, + 0.607062,0,-0.794655,0.361804,-0.262865,-0.223607, + 0.187593,0.57735,-0.794655,0.361804,0.262865,-0.223607, + 0.187593,0.57735,-0.794655,0,0,-0.5, + 0.187593,0.57735,-0.794655,-0.138196,0.425326,-0.223607, + 0.187593,-0.57735,-0.794655,0,0,-0.5, + 0.187593,-0.57735,-0.794655,0.361804,-0.262865,-0.223607, + 0.187593,-0.57735,-0.794655,-0.138196,-0.425326,-0.223607, + -0.491123,0.356822,-0.794655,-0.138196,0.425326,-0.223607, + -0.491123,0.356822,-0.794655,0,0,-0.5, + -0.491123,0.356822,-0.794655,-0.447213,0,-0.223607, + -0.491123,-0.356822,-0.794655,-0.447213,0,-0.223607, + -0.491123,-0.356822,-0.794655,0,0,-0.5, + -0.491123,-0.356822,-0.794655,-0.138196,-0.425326,-0.223607, + 0,0,1,0.223607,0.16246,0.361804, + 0,0,1,-0.08541,0.262865,0.361804, + 0,0,1,-0.276393,0,0.361804, + 0,0,1,0.223607,0.16246,0.361804, + 0,0,1,-0.276393,0,0.361804, + 0,0,1,-0.08541,-0.262865,0.361804, + 0,0,1,0.223607,0.16246,0.361804, + 0,0,1,-0.08541,-0.262865,0.361804, + 0,0,1,0.223607,-0.16246,0.361804, + 0.894427,0,0.447214,0.361804,-0.262865,0.08541, + 0.894427,0,0.447214,0.447213,0,-0.08541, + 0.894427,0,0.447214,0.361804,0.262865,0.08541, + 0.894428,0,0.447213,0.361804,-0.262865,0.08541, + 0.894428,0,0.447213,0.361804,0.262865,0.08541, + 0.894428,0,0.447213,0.223607,0.16246,0.361804, + 0.894428,0,0.447213,0.361804,-0.262865,0.08541, + 0.894428,0,0.447213,0.223607,0.16246,0.361804, + 0.894428,0,0.447213,0.223607,-0.16246,0.361804, + 0.276393,0.85065,0.447214,0.361804,0.262865,0.08541, + 0.276393,0.85065,0.447214,0.138196,0.425326,-0.08541, + 0.276393,0.85065,0.447214,-0.138196,0.425326,0.08541, + 0.276393,0.850651,0.447213,0.361804,0.262865,0.08541, + 0.276393,0.850651,0.447213,-0.138196,0.425326,0.08541, + 0.276393,0.850651,0.447213,-0.08541,0.262865,0.361804, + 0.276393,0.850652,0.447212,0.361804,0.262865,0.08541, + 0.276393,0.850652,0.447212,-0.08541,0.262865,0.361804, + 0.276393,0.850652,0.447212,0.223607,0.16246,0.361804, + -0.723606,0.525731,0.447215,-0.138196,0.425326,0.08541, + -0.723606,0.525731,0.447215,-0.361804,0.262865,-0.08541, + -0.723606,0.525731,0.447215,-0.447213,0,0.08541, + -0.723607,0.525731,0.447213,-0.138196,0.425326,0.08541, + -0.723607,0.525731,0.447213,-0.447213,0,0.08541, + -0.723607,0.525731,0.447213,-0.276393,0,0.361804, + -0.723607,0.525731,0.447214,-0.138196,0.425326,0.08541, + -0.723607,0.525731,0.447214,-0.276393,0,0.361804, + -0.723607,0.525731,0.447214,-0.08541,0.262865,0.361804, + -0.723606,-0.525731,0.447215,-0.447213,0,0.08541, + -0.723606,-0.525731,0.447215,-0.361804,-0.262865,-0.08541, + -0.723606,-0.525731,0.447215,-0.138196,-0.425326,0.08541, + -0.723607,-0.525731,0.447214,-0.447213,0,0.08541, + -0.723607,-0.525731,0.447214,-0.138196,-0.425326,0.08541, + -0.723607,-0.525731,0.447214,-0.08541,-0.262865,0.361804, + -0.723607,-0.525731,0.447213,-0.447213,0,0.08541, + -0.723607,-0.525731,0.447213,-0.08541,-0.262865,0.361804, + -0.723607,-0.525731,0.447213,-0.276393,0,0.361804, + 0.276393,-0.85065,0.447214,-0.138196,-0.425326,0.08541, + 0.276393,-0.85065,0.447214,0.138196,-0.425326,-0.08541, + 0.276393,-0.85065,0.447214,0.361804,-0.262865,0.08541, + 0.276394,-0.850651,0.447213,-0.138196,-0.425326,0.08541, + 0.276394,-0.850651,0.447213,0.361804,-0.262865,0.08541, + 0.276394,-0.850651,0.447213,0.223607,-0.16246,0.361804, + 0.276393,-0.850651,0.447214,-0.138196,-0.425326,0.08541, + 0.276393,-0.850651,0.447214,0.223607,-0.16246,0.361804, + 0.276393,-0.850651,0.447214,-0.08541,-0.262865,0.361804, + 0.723607,0.525731,-0.447213,0.447213,0,-0.08541, + 0.723607,0.525731,-0.447213,0.276393,0,-0.361804, + 0.723607,0.525731,-0.447213,0.08541,0.262865,-0.361804, + 0.723607,0.525731,-0.447214,0.447213,0,-0.08541, + 0.723607,0.525731,-0.447214,0.08541,0.262865,-0.361804, + 0.723607,0.525731,-0.447214,0.138196,0.425326,-0.08541, + 0.723606,0.525731,-0.447215,0.447213,0,-0.08541, + 0.723606,0.525731,-0.447215,0.138196,0.425326,-0.08541, + 0.723606,0.525731,-0.447215,0.361804,0.262865,0.08541, + 0.723606,-0.525732,-0.447214,0.361804,-0.262865,0.08541, + 0.723606,-0.525732,-0.447214,0.138196,-0.425326,-0.08541, + 0.723606,-0.525732,-0.447214,0.08541,-0.262865,-0.361804, + 0.723607,-0.525731,-0.447214,0.361804,-0.262865,0.08541, + 0.723607,-0.525731,-0.447214,0.08541,-0.262865,-0.361804, + 0.723607,-0.525731,-0.447214,0.276393,0,-0.361804, + 0.723607,-0.52573,-0.447214,0.361804,-0.262865,0.08541, + 0.723607,-0.52573,-0.447214,0.276393,0,-0.361804, + 0.723607,-0.52573,-0.447214,0.447213,0,-0.08541, + -0.276393,0.850651,-0.447214,0.138196,0.425326,-0.08541, + -0.276393,0.850651,-0.447214,0.08541,0.262865,-0.361804, + -0.276393,0.850651,-0.447214,-0.223607,0.16246,-0.361804, + -0.276394,0.850651,-0.447213,0.138196,0.425326,-0.08541, + -0.276394,0.850651,-0.447213,-0.223607,0.16246,-0.361804, + -0.276394,0.850651,-0.447213,-0.361804,0.262865,-0.08541, + -0.276393,0.85065,-0.447214,0.138196,0.425326,-0.08541, + -0.276393,0.85065,-0.447214,-0.361804,0.262865,-0.08541, + -0.276393,0.85065,-0.447214,-0.138196,0.425326,0.08541, + -0.894428,0,-0.447213,-0.361804,0.262865,-0.08541, + -0.894428,0,-0.447213,-0.223607,0.16246,-0.361804, + -0.894428,0,-0.447213,-0.223607,-0.16246,-0.361804, + -0.894428,0,-0.447213,-0.361804,0.262865,-0.08541, + -0.894428,0,-0.447213,-0.223607,-0.16246,-0.361804, + -0.894428,0,-0.447213,-0.361804,-0.262865,-0.08541, + -0.894427,0,-0.447214,-0.361804,0.262865,-0.08541, + -0.894427,0,-0.447214,-0.361804,-0.262865,-0.08541, + -0.894427,0,-0.447214,-0.447213,0,0.08541, + -0.276393,-0.850652,-0.447212,-0.361804,-0.262865,-0.08541, + -0.276393,-0.850652,-0.447212,-0.223607,-0.16246,-0.361804, + -0.276393,-0.850652,-0.447212,0.08541,-0.262865,-0.361804, + -0.276393,-0.850651,-0.447213,-0.361804,-0.262865,-0.08541, + -0.276393,-0.850651,-0.447213,0.08541,-0.262865,-0.361804, + -0.276393,-0.850651,-0.447213,0.138196,-0.425326,-0.08541, + -0.276393,-0.85065,-0.447214,-0.361804,-0.262865,-0.08541, + -0.276393,-0.85065,-0.447214,0.138196,-0.425326,-0.08541, + -0.276393,-0.85065,-0.447214,-0.138196,-0.425326,0.08541, + 0,0,-1,0.08541,-0.262865,-0.361804, + 0,0,-1,-0.223607,-0.16246,-0.361804, + 0,0,-1,-0.223607,0.16246,-0.361804, + 0,0,-1,0.08541,-0.262865,-0.361804, + 0,0,-1,-0.223607,0.16246,-0.361804, + 0,0,-1,0.08541,0.262865,-0.361804, + 0,0,-1,0.08541,-0.262865,-0.361804, + 0,0,-1,0.08541,0.262865,-0.361804, + 0,0,-1,0.276393,0,-0.361804 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,168,data,NULL}; +const struct gllist *tronbit_idle2=&frame; diff --git a/hacks/glx/tronbit_no.c b/hacks/glx/tronbit_no.c new file mode 100644 index 0000000..305790d --- /dev/null +++ b/hacks/glx/tronbit_no.c @@ -0,0 +1,1087 @@ +/* no = second stellation of icosahedron */ + +#include "gllist.h" +static const float data[]={ + -0.491121,-0.356821,-0.794656,-0.072949,0.100406,-0.118034, + -0.491121,-0.356821,-0.794656,-0.11459,0.117557,-0.1, + -0.491121,-0.356821,-0.794656,-0.138196,0.425325,-0.223606, + -0.491129,-0.356821,-0.794652,-0.038197,0.117557,-0.147214, + -0.491129,-0.356821,-0.794652,-0.072949,0.100406,-0.118034, + -0.491129,-0.356821,-0.794652,-0.138196,0.425325,-0.223606, + -0.491121,-0.356826,-0.794654,-0.138196,-0.100406,0.012461, + -0.491121,-0.356826,-0.794654,-0.123606,-0.145308,0.023607, + -0.491121,-0.356826,-0.794654,-0.361803,-0.262865,0.223606, + -0.491119,-0.356829,-0.794654,-0.176394,-0.072654,0.023607, + -0.491119,-0.356829,-0.794654,-0.138196,-0.100406,0.012461, + -0.491119,-0.356829,-0.794654,-0.361803,-0.262865,0.223606, + -0.491125,-0.356827,-0.794651,0.072949,-0.100406,-0.118034, + -0.491125,-0.356827,-0.794651,0.1,-0.072654,-0.147214, + -0.491125,-0.356827,-0.794651,0.361803,-0.262865,-0.223606, + -0.491124,-0.356824,-0.794654,0.076393,-0.145308,-0.1, + -0.491124,-0.356824,-0.794654,0.072949,-0.100406,-0.118034, + -0.491124,-0.356824,-0.794654,0.361803,-0.262865,-0.223606, + -0.491124,-0.356822,-0.794654,-0.150658,0.062054,-0.052786, + -0.491124,-0.356822,-0.794654,-0.18541,0.044903,-0.023607, + -0.491124,-0.356822,-0.794654,-0.223606,0.162459,-0.052786, + -0.491128,-0.356819,-0.794653,-0.052786,-0.162459,-0.012461, + -0.491128,-0.356819,-0.794653,-0.01459,-0.190211,-0.023607, + -0.491128,-0.356819,-0.794653,-0.08541,-0.262865,0.052786, + -0.491122,-0.356835,-0.79465,0.065247,0,-0.158359, + -0.491122,-0.356835,-0.79465,0.061803,0.044903,-0.176394, + -0.491122,-0.356835,-0.79465,0.17082,0,-0.223606, + -0.491135,-0.356817,-0.79465,0.061803,0.044903,-0.176394, + -0.491135,-0.356817,-0.79465,0.020163,0.062054,-0.158359, + -0.491135,-0.356817,-0.79465,0.052786,0.162459,-0.223606, + -0.491124,-0.356824,-0.794654,-0.18541,0.044903,-0.023607, + -0.491124,-0.356824,-0.794654,-0.17082,0,-0.012461, + -0.491124,-0.356824,-0.794654,-0.276393,0,0.052786, + -0.49112,-0.35682,-0.794658,-0.01459,-0.190211,-0.023607, + -0.49112,-0.35682,-0.794658,0.012461,-0.162459,-0.052786, + -0.49112,-0.35682,-0.794658,0.08541,-0.262865,-0.052786, + -0.491124,-0.35682,-0.794655,-0.11459,0.117557,-0.1, + -0.491124,-0.35682,-0.794655,-0.111804,0.08123,-0.08541, + -0.491124,-0.35682,-0.794655,-0.223606,0.162459,-0.052786, + -0.491133,-0.356822,-0.794648,-0.123606,-0.145308,0.023607, + -0.491133,-0.356822,-0.794648,-0.095491,-0.131433,0, + -0.491133,-0.356822,-0.794648,-0.08541,-0.262865,0.052786, + -0.491129,-0.356813,-0.794655,0.1,-0.072654,-0.147214, + -0.491129,-0.356813,-0.794655,0.069098,-0.050203,-0.138196, + -0.491129,-0.356813,-0.794655,0.17082,0,-0.223606, + -0.491117,-0.35683,-0.794655,-0.026393,0.08123,-0.138196, + -0.491117,-0.35683,-0.794655,-0.038197,0.117557,-0.147214, + -0.491117,-0.35683,-0.794655,0.052786,0.162459,-0.223606, + -0.491122,-0.356812,-0.79466,-0.154508,-0.050203,0, + -0.491122,-0.356812,-0.79466,-0.176394,-0.072654,0.023607, + -0.491122,-0.356812,-0.79466,-0.276393,0,0.052786, + -0.491117,-0.356823,-0.794658,0.042705,-0.131433,-0.08541, + -0.491117,-0.356823,-0.794658,0.076393,-0.145308,-0.1, + -0.491117,-0.356823,-0.794658,0.08541,-0.262865,-0.052786, + -0.607065,0.000003,0.794652,0,0.124108,0.118034, + -0.607065,0.000003,0.794652,0.038197,0.117557,0.147214, + -0.607065,0.000003,0.794652,0.138196,0.425325,0.223606, + -0.607062,0,0.794655,-0.023607,0.162459,0.1, + -0.607062,0,0.794655,0,0.124108,0.118034, + -0.607062,0,0.794655,0.138196,0.425325,0.223606, + -0.607062,0,0.794655,0,-0.124108,0.118034, + -0.607062,0,0.794655,-0.023607,-0.162459,0.1, + -0.607062,0,0.794655,0.138196,-0.425325,0.223606, + -0.607065,-0.000003,0.794652,0.038197,-0.117557,0.147214, + -0.607065,-0.000003,0.794652,0,-0.124108,0.118034, + -0.607065,-0.000003,0.794652,0.138196,-0.425325,0.223606, + -0.607062,-0.000002,0.794654,-0.17082,0,-0.012461, + -0.607062,-0.000002,0.794654,-0.18541,0.044903,-0.023607, + -0.607062,-0.000002,0.794654,-0.447213,0,-0.223606, + -0.607062,0.000002,0.794654,-0.18541,-0.044903,-0.023607, + -0.607062,0.000002,0.794654,-0.17082,0,-0.012461, + -0.607062,0.000002,0.794654,-0.447213,0,-0.223606, + -0.607069,0.000012,0.794649,0.052786,0.038352,0.158359, + -0.607069,0.000012,0.794649,0.076393,0,0.176394, + -0.607069,0.000012,0.794649,0.138196,0.100406,0.223606, + -0.607066,0,0.794652,-0.08541,-0.138758,0.052786, + -0.607066,0,0.794652,-0.123606,-0.145308,0.023607, + -0.607066,0,0.794652,-0.08541,-0.262865,0.052786, + -0.607061,0.000001,0.794655,-0.138196,0.100406,0.012461, + -0.607061,0.000001,0.794655,-0.123606,0.145308,0.023607, + -0.607061,0.000001,0.794655,-0.223606,0.162459,-0.052786, + -0.607066,0,0.794652,-0.123606,0.145308,0.023607, + -0.607066,0,0.794652,-0.08541,0.138758,0.052786, + -0.607066,0,0.794652,-0.08541,0.262865,0.052786, + -0.607069,-0.000012,0.794649,0.076393,0,0.176394, + -0.607069,-0.000012,0.794649,0.052786,-0.038352,0.158359, + -0.607069,-0.000012,0.794649,0.138196,-0.100406,0.223606, + -0.607061,-0.000001,0.794655,-0.123606,-0.145308,0.023607, + -0.607061,-0.000001,0.794655,-0.138196,-0.100406,0.012461, + -0.607061,-0.000001,0.794655,-0.223606,-0.162459,-0.052786, + -0.607061,-0.00001,0.794655,0.038197,0.117557,0.147214, + -0.607061,-0.00001,0.794655,0.026393,0.08123,0.138196, + -0.607061,-0.00001,0.794655,0.138196,0.100406,0.223606, + -0.607061,0,0.794655,-0.023607,-0.162459,0.1, + -0.607061,0,0.794655,-0.042705,-0.131433,0.08541, + -0.607061,0,0.794655,-0.08541,-0.262865,0.052786, + -0.60706,0.000002,0.794656,-0.18541,0.044903,-0.023607, + -0.60706,0.000002,0.794656,-0.154508,0.050203,0, + -0.60706,0.000002,0.794656,-0.223606,0.162459,-0.052786, + -0.607061,0,0.794655,-0.042705,0.131433,0.08541, + -0.607061,0,0.794655,-0.023607,0.162459,0.1, + -0.607061,0,0.794655,-0.08541,0.262865,0.052786, + -0.607061,0.00001,0.794655,0.026393,-0.08123,0.138196, + -0.607061,0.00001,0.794655,0.038197,-0.117557,0.147214, + -0.607061,0.00001,0.794655,0.138196,-0.100406,0.223606, + -0.60706,-0.000002,0.794656,-0.154508,-0.050203,0, + -0.60706,-0.000002,0.794656,-0.18541,-0.044903,-0.023607, + -0.60706,-0.000002,0.794656,-0.223606,-0.162459,-0.052786, + 0.303526,0.934174,-0.187592,0.020163,0.062054,-0.158359, + 0.303526,0.934174,-0.187592,0.061803,0.044903,-0.176394, + 0.303526,0.934174,-0.187592,0,0,-0.5, + 0.303535,0.934171,-0.187592,-0.023607,0.072654,-0.176394, + 0.303535,0.934171,-0.187592,0.020163,0.062054,-0.158359, + 0.303535,0.934171,-0.187592,0,0,-0.5, + 0.303532,0.934172,-0.187594,0.150658,0.062054,0.052786, + 0.303532,0.934172,-0.187594,0.147214,0.072654,0.1, + 0.303532,0.934172,-0.187594,0.447213,0,0.223606, + 0.303531,0.934173,-0.187591,0.18541,0.044903,0.023607, + 0.303531,0.934173,-0.187591,0.150658,0.062054,0.052786, + 0.303531,0.934173,-0.187591,0.447213,0,0.223606, + 0.303523,0.934173,-0.187603,-0.08541,0.138758,0.052786, + 0.303523,0.934173,-0.187603,-0.123606,0.145308,0.023607, + 0.303523,0.934173,-0.187603,-0.361803,0.262865,0.223606, + 0.303538,0.934173,-0.187579,-0.076393,0.145308,0.1, + 0.303538,0.934173,-0.187579,-0.08541,0.138758,0.052786, + 0.303538,0.934173,-0.187579,-0.361803,0.262865,0.223606, + 0.303529,0.934173,-0.187594,0.118034,0.038352,-0.118034, + 0.303529,0.934173,-0.187594,0.161804,0.027751,-0.1, + 0.303529,0.934173,-0.187594,0.17082,0,-0.223606, + 0.30353,0.934173,-0.187591,0.072949,0.100406,0.118034, + 0.30353,0.934173,-0.187591,0.038197,0.117557,0.147214, + 0.30353,0.934173,-0.187591,0.138196,0.100406,0.223606, + 0.303526,0.934172,-0.187599,-0.105573,0.124108,-0.052786, + 0.303526,0.934172,-0.187599,-0.11459,0.117557,-0.1, + 0.303526,0.934172,-0.187599,-0.223606,0.162459,-0.052786, + 0.30353,0.934173,-0.187591,-0.11459,0.117557,-0.1, + 0.30353,0.934173,-0.187591,-0.072949,0.100406,-0.118034, + 0.30353,0.934173,-0.187591,-0.138196,0.100406,-0.223606, + 0.303531,0.934173,-0.187588,0.161804,0.027751,-0.1, + 0.303531,0.934173,-0.187588,0.158359,0.038352,-0.052786, + 0.303531,0.934173,-0.187588,0.276393,0,-0.052786, + 0.303534,0.934173,-0.187586,0.038197,0.117557,0.147214, + 0.303534,0.934173,-0.187586,0,0.124108,0.118034, + 0.303534,0.934173,-0.187586,-0.052786,0.162459,0.223606, + 0.303535,0.934172,-0.187588,0.061803,0.044903,-0.176394, + 0.303535,0.934172,-0.187588,0.069098,0.050203,-0.138196, + 0.303535,0.934172,-0.187588,0.17082,0,-0.223606, + 0.303531,0.934173,-0.187592,0.147214,0.072654,0.1, + 0.303531,0.934173,-0.187592,0.111804,0.08123,0.08541, + 0.303531,0.934173,-0.187592,0.138196,0.100406,0.223606, + 0.303524,0.934177,-0.187583,-0.123606,0.145308,0.023607, + 0.303524,0.934177,-0.187583,-0.095491,0.131433,0, + 0.303524,0.934177,-0.187583,-0.223606,0.162459,-0.052786, + 0.303529,0.934174,-0.187588,-0.026393,0.08123,-0.138196, + 0.303529,0.934174,-0.187588,-0.023607,0.072654,-0.176394, + 0.303529,0.934174,-0.187588,-0.138196,0.100406,-0.223606, + 0.30353,0.934172,-0.187595,0.154508,0.050203,0, + 0.30353,0.934172,-0.187595,0.18541,0.044903,0.023607, + 0.30353,0.934172,-0.187595,0.276393,0,-0.052786, + 0.303516,0.934178,-0.18759,-0.042705,0.131433,0.08541, + 0.303516,0.934178,-0.18759,-0.076393,0.145308,0.1, + 0.303516,0.934178,-0.18759,-0.052786,0.162459,0.223606, + 0.794658,-0.577347,0.187587,0.012461,-0.162459,-0.052786, + 0.794658,-0.577347,0.187587,-0.01459,-0.190211,-0.023607, + 0.794658,-0.577347,0.187587,-0.138196,-0.425325,-0.223606, + 0.794655,-0.577349,0.187593,0.023607,-0.162459,-0.1, + 0.794655,-0.577349,0.187593,0.012461,-0.162459,-0.052786, + 0.794655,-0.577349,0.187593,-0.138196,-0.425325,-0.223606, + 0.794653,-0.577353,0.187592,0.052786,-0.038352,0.158359, + 0.794653,-0.577353,0.187592,0.076393,0,0.176394, + 0.794653,-0.577353,0.187592,0,0,0.5, + 0.794657,-0.577347,0.187592,0.023607,-0.072654,0.176394, + 0.794657,-0.577347,0.187592,0.052786,-0.038352,0.158359, + 0.794657,-0.577347,0.187592,0,0,0.5, + 0.794656,-0.577344,0.187604,0.158359,0.038352,-0.052786, + 0.794656,-0.577344,0.187604,0.161804,0.027751,-0.1, + 0.794656,-0.577344,0.187604,0.361803,0.262865,-0.223606, + 0.794652,-0.577358,0.18758,0.176394,0.072654,-0.023607, + 0.794652,-0.577358,0.18758,0.158359,0.038352,-0.052786, + 0.794652,-0.577358,0.18758,0.361803,0.262865,-0.223606, + 0.794654,-0.57735,0.187593,-0.012461,-0.162459,0.052786, + 0.794654,-0.57735,0.187593,-0.023607,-0.162459,0.1, + 0.794654,-0.57735,0.187593,-0.08541,-0.262865,0.052786, + 0.794652,-0.577353,0.187596,0.118034,0.038352,0.118034, + 0.794652,-0.577353,0.187596,0.147214,0.072654,0.1, + 0.794652,-0.577353,0.187596,0.138196,0.100406,0.223606, + 0.794654,-0.577351,0.187592,0.118034,-0.038352,-0.118034, + 0.794654,-0.577351,0.187592,0.1,-0.072654,-0.147214, + 0.794654,-0.577351,0.187592,0.17082,0,-0.223606, + 0.794655,-0.57735,0.18759,0.1,-0.072654,-0.147214, + 0.794655,-0.57735,0.18759,0.072949,-0.100406,-0.118034, + 0.794655,-0.57735,0.18759,0.052786,-0.162459,-0.223606, + 0.79465,-0.577356,0.187592,-0.023607,-0.162459,0.1, + 0.79465,-0.577356,0.187592,0,-0.124108,0.118034, + 0.79465,-0.577356,0.187592,-0.052786,-0.162459,0.223606, + 0.794655,-0.577351,0.187588,0.147214,0.072654,0.1, + 0.794655,-0.577351,0.187588,0.150658,0.062054,0.052786, + 0.794655,-0.577351,0.187588,0.223606,0.162459,0.052786, + 0.794655,-0.577346,0.187602,-0.01459,-0.190211,-0.023607, + 0.794655,-0.577346,0.187602,0,-0.162459,0, + 0.794655,-0.577346,0.187602,-0.08541,-0.262865,0.052786, + 0.794657,-0.577348,0.18759,0.076393,0,0.176394, + 0.794657,-0.577348,0.18759,0.08541,0,0.138196, + 0.794657,-0.577348,0.18759,0.138196,0.100406,0.223606, + 0.794646,-0.577362,0.187591,0.161804,0.027751,-0.1, + 0.794646,-0.577362,0.187591,0.138196,0,-0.08541, + 0.794646,-0.577362,0.187591,0.17082,0,-0.223606, + 0.794649,-0.577358,0.187592,0.042705,-0.131433,-0.08541, + 0.794649,-0.577358,0.187592,0.023607,-0.162459,-0.1, + 0.794649,-0.577358,0.187592,0.052786,-0.162459,-0.223606, + 0.794652,-0.577354,0.18759,0.026393,-0.08123,0.138196, + 0.794652,-0.577354,0.18759,0.023607,-0.072654,0.176394, + 0.794652,-0.577354,0.18759,-0.052786,-0.162459,0.223606, + 0.794648,-0.577354,0.187607,0.154508,0.050203,0, + 0.794648,-0.577354,0.187607,0.176394,0.072654,-0.023607, + 0.794648,-0.577354,0.187607,0.223606,0.162459,0.052786, + -0.187591,0.577356,0.794651,0.118034,0.038352,0.118034, + -0.187591,0.577356,0.794651,0.123606,0,0.147214, + -0.187591,0.577356,0.794651,0.447213,0,0.223606, + -0.187592,0.577351,0.794654,0.147214,0.072654,0.1, + -0.187592,0.577351,0.794654,0.118034,0.038352,0.118034, + -0.187592,0.577351,0.794654,0.447213,0,0.223606, + -0.187591,0.577349,0.794656,-0.118034,-0.038352,0.118034, + -0.187591,0.577349,0.794656,-0.161804,-0.027751,0.1, + -0.187591,0.577349,0.794656,-0.361803,-0.262865,0.223606, + -0.187596,0.577353,0.794652,-0.1,-0.072654,0.147214, + -0.187596,0.577353,0.794652,-0.118034,-0.038352,0.118034, + -0.187596,0.577353,0.794652,-0.361803,-0.262865,0.223606, + -0.1876,0.577347,0.794655,-0.052786,0.162459,-0.012461, + -0.1876,0.577347,0.794655,-0.01459,0.190211,-0.023607, + -0.1876,0.577347,0.794655,-0.138196,0.425325,-0.223606, + -0.187593,0.577349,0.794655,-0.1,0.162459,-0.023607, + -0.187593,0.577349,0.794655,-0.052786,0.162459,-0.012461, + -0.187593,0.577349,0.794655,-0.138196,0.425325,-0.223606, + -0.187583,0.57736,0.79465,0.052786,-0.038352,0.158359, + -0.187583,0.57736,0.79465,0.023607,-0.072654,0.176394, + -0.187583,0.57736,0.79465,0.138196,-0.100406,0.223606, + -0.187592,0.577347,0.794657,-0.158359,0.038352,0.052786, + -0.187592,0.577347,0.794657,-0.176394,0.072654,0.023607, + -0.187592,0.577347,0.794657,-0.276393,0,0.052786, + -0.187593,0.57735,0.794654,0.052786,0.162459,0.012461, + -0.187593,0.57735,0.794654,0.1,0.162459,0.023607, + -0.187593,0.57735,0.794654,0.08541,0.262865,-0.052786, + -0.187592,0.577357,0.79465,0.1,0.162459,0.023607, + -0.187592,0.577357,0.79465,0.105573,0.124108,0.052786, + -0.187592,0.577357,0.79465,0.223606,0.162459,0.052786, + -0.187605,0.577354,0.794649,0.023607,-0.072654,0.176394, + -0.187605,0.577354,0.794649,-0.020163,-0.062054,0.158359, + -0.187605,0.577354,0.794649,-0.052786,-0.162459,0.223606, + -0.187591,0.577354,0.794652,-0.176394,0.072654,0.023607, + -0.187591,0.577354,0.794652,-0.138196,0.100406,0.012461, + -0.187591,0.577354,0.794652,-0.223606,0.162459,-0.052786, + -0.187604,0.577345,0.794656,0.123606,0,0.147214, + -0.187604,0.577345,0.794656,0.08541,0,0.138196, + -0.187604,0.577345,0.794656,0.138196,-0.100406,0.223606, + -0.187593,0.577352,0.794653,-0.161804,-0.027751,0.1, + -0.187593,0.577352,0.794653,-0.138196,0,0.08541, + -0.187593,0.577352,0.794653,-0.276393,0,0.052786, + -0.187583,0.577345,0.79466,-0.01459,0.190211,-0.023607, + -0.187583,0.577345,0.79466,0,0.162459,0, + -0.187583,0.577345,0.79466,0.08541,0.262865,-0.052786, + -0.187592,0.577351,0.794654,0.111804,0.08123,0.08541, + -0.187592,0.577351,0.794654,0.147214,0.072654,0.1, + -0.187592,0.577351,0.794654,0.223606,0.162459,0.052786, + -0.187584,0.577353,0.794655,-0.069098,-0.050203,0.138196, + -0.187584,0.577353,0.794655,-0.1,-0.072654,0.147214, + -0.187584,0.577353,0.794655,-0.052786,-0.162459,0.223606, + -0.187591,0.577359,0.794648,-0.095491,0.131433,0, + -0.187591,0.577359,0.794648,-0.1,0.162459,-0.023607, + -0.187591,0.577359,0.794648,-0.223606,0.162459,-0.052786, + -0.491124,0.356824,-0.794654,0.072949,0.100406,-0.118034, + -0.491124,0.356824,-0.794654,0.076393,0.145308,-0.1, + -0.491124,0.356824,-0.794654,0.361803,0.262865,-0.223606, + -0.491125,0.356827,-0.794651,0.1,0.072654,-0.147214, + -0.491125,0.356827,-0.794651,0.072949,0.100406,-0.118034, + -0.491125,0.356827,-0.794651,0.361803,0.262865,-0.223606, + -0.491119,0.356829,-0.794654,-0.138196,0.100406,0.012461, + -0.491119,0.356829,-0.794654,-0.176394,0.072654,0.023607, + -0.491119,0.356829,-0.794654,-0.361803,0.262865,0.223606, + -0.491121,0.356826,-0.794654,-0.123606,0.145308,0.023607, + -0.491121,0.356826,-0.794654,-0.138196,0.100406,0.012461, + -0.491121,0.356826,-0.794654,-0.361803,0.262865,0.223606, + -0.491129,0.356821,-0.794652,-0.072949,-0.100406,-0.118034, + -0.491129,0.356821,-0.794652,-0.038197,-0.117557,-0.147214, + -0.491129,0.356821,-0.794652,-0.138196,-0.425325,-0.223606, + -0.491121,0.356821,-0.794656,-0.11459,-0.117557,-0.1, + -0.491121,0.356821,-0.794656,-0.072949,-0.100406,-0.118034, + -0.491121,0.356821,-0.794656,-0.138196,-0.425325,-0.223606, + -0.49112,0.35682,-0.794658,0.012461,0.162459,-0.052786, + -0.49112,0.35682,-0.794658,-0.01459,0.190211,-0.023607, + -0.49112,0.35682,-0.794658,0.08541,0.262865,-0.052786, + -0.491124,0.356824,-0.794654,-0.17082,0,-0.012461, + -0.491124,0.356824,-0.794654,-0.18541,-0.044903,-0.023607, + -0.491124,0.356824,-0.794654,-0.276393,0,0.052786, + -0.491135,0.356817,-0.79465,0.020163,-0.062054,-0.158359, + -0.491135,0.356817,-0.79465,0.061803,-0.044903,-0.176394, + -0.491135,0.356817,-0.79465,0.052786,-0.162459,-0.223606, + -0.491122,0.356835,-0.79465,0.061803,-0.044903,-0.176394, + -0.491122,0.356835,-0.79465,0.065247,0,-0.158359, + -0.491122,0.356835,-0.79465,0.17082,0,-0.223606, + -0.491128,0.356819,-0.794653,-0.01459,0.190211,-0.023607, + -0.491128,0.356819,-0.794653,-0.052786,0.162459,-0.012461, + -0.491128,0.356819,-0.794653,-0.08541,0.262865,0.052786, + -0.491124,0.356822,-0.794654,-0.18541,-0.044903,-0.023607, + -0.491124,0.356822,-0.794654,-0.150658,-0.062054,-0.052786, + -0.491124,0.356822,-0.794654,-0.223606,-0.162459,-0.052786, + -0.491117,0.356823,-0.794658,0.076393,0.145308,-0.1, + -0.491117,0.356823,-0.794658,0.042705,0.131433,-0.08541, + -0.491117,0.356823,-0.794658,0.08541,0.262865,-0.052786, + -0.491122,0.356812,-0.79466,-0.176394,0.072654,0.023607, + -0.491122,0.356812,-0.79466,-0.154508,0.050203,0, + -0.491122,0.356812,-0.79466,-0.276393,0,0.052786, + -0.491117,0.35683,-0.794655,-0.038197,-0.117557,-0.147214, + -0.491117,0.35683,-0.794655,-0.026393,-0.08123,-0.138196, + -0.491117,0.35683,-0.794655,0.052786,-0.162459,-0.223606, + -0.491129,0.356813,-0.794655,0.069098,0.050203,-0.138196, + -0.491129,0.356813,-0.794655,0.1,0.072654,-0.147214, + -0.491129,0.356813,-0.794655,0.17082,0,-0.223606, + -0.491133,0.356822,-0.794648,-0.095491,0.131433,0, + -0.491133,0.356822,-0.794648,-0.123606,0.145308,0.023607, + -0.491133,0.356822,-0.794648,-0.08541,0.262865,0.052786, + -0.491124,0.35682,-0.794655,-0.111804,-0.08123,-0.08541, + -0.491124,0.35682,-0.794655,-0.11459,-0.117557,-0.1, + -0.491124,0.35682,-0.794655,-0.223606,-0.162459,-0.052786, + 0.982247,0.000005,-0.187592,0.065247,0,-0.158359, + 0.982247,0.000005,-0.187592,0.061803,-0.044903,-0.176394, + 0.982247,0.000005,-0.187592,0,0,-0.5, + 0.982247,-0.000005,-0.187592,0.061803,0.044903,-0.176394, + 0.982247,-0.000005,-0.187592,0.065247,0,-0.158359, + 0.982247,-0.000005,-0.187592,0,0,-0.5, + 0.982245,-0.000005,-0.187601,0.105573,-0.124108,0.052786, + 0.982245,-0.000005,-0.187601,0.11459,-0.117557,0.1, + 0.982245,-0.000005,-0.187601,0.138196,-0.425325,0.223606, + 0.982248,0.000002,-0.187589,0.1,-0.162459,0.023607, + 0.982248,0.000002,-0.187589,0.105573,-0.124108,0.052786, + 0.982248,0.000002,-0.187589,0.138196,-0.425325,0.223606, + 0.982248,-0.000002,-0.187589,0.105573,0.124108,0.052786, + 0.982248,-0.000002,-0.187589,0.1,0.162459,0.023607, + 0.982248,-0.000002,-0.187589,0.138196,0.425325,0.223606, + 0.982245,0.000005,-0.187601,0.11459,0.117557,0.1, + 0.982245,0.000005,-0.187601,0.105573,0.124108,0.052786, + 0.982245,0.000005,-0.187601,0.138196,0.425325,0.223606, + 0.982247,-0.000001,-0.187593,0.072949,-0.100406,-0.118034, + 0.982247,-0.000001,-0.187593,0.076393,-0.145308,-0.1, + 0.982247,-0.000001,-0.187593,0.052786,-0.162459,-0.223606, + 0.982248,0.000006,-0.187588,0.118034,-0.038352,0.118034, + 0.982248,0.000006,-0.187588,0.123606,0,0.147214, + 0.982248,0.000006,-0.187588,0.138196,-0.100406,0.223606, + 0.982247,0,-0.187593,0.08541,0.138758,-0.052786, + 0.982247,0,-0.187593,0.076393,0.145308,-0.1, + 0.982247,0,-0.187593,0.08541,0.262865,-0.052786, + 0.982247,0.000001,-0.187593,0.076393,0.145308,-0.1, + 0.982247,0.000001,-0.187593,0.072949,0.100406,-0.118034, + 0.982247,0.000001,-0.187593,0.052786,0.162459,-0.223606, + 0.982247,0,-0.187593,0.076393,-0.145308,-0.1, + 0.982247,0,-0.187593,0.08541,-0.138758,-0.052786, + 0.982247,0,-0.187593,0.08541,-0.262865,-0.052786, + 0.982248,-0.000006,-0.187588,0.123606,0,0.147214, + 0.982248,-0.000006,-0.187588,0.118034,0.038352,0.118034, + 0.982248,-0.000006,-0.187588,0.138196,0.100406,0.223606, + 0.982248,-0.000003,-0.187589,0.061803,-0.044903,-0.176394, + 0.982248,-0.000003,-0.187589,0.069098,-0.050203,-0.138196, + 0.982248,-0.000003,-0.187589,0.052786,-0.162459,-0.223606, + 0.982248,-0.000002,-0.187589,0.11459,-0.117557,0.1, + 0.982248,-0.000002,-0.187589,0.111804,-0.08123,0.08541, + 0.982248,-0.000002,-0.187589,0.138196,-0.100406,0.223606, + 0.982247,0.000001,-0.187591,0.1,0.162459,0.023607, + 0.982247,0.000001,-0.187591,0.095491,0.131433,0, + 0.982247,0.000001,-0.187591,0.08541,0.262865,-0.052786, + 0.982248,0.000003,-0.187589,0.069098,0.050203,-0.138196, + 0.982248,0.000003,-0.187589,0.061803,0.044903,-0.176394, + 0.982248,0.000003,-0.187589,0.052786,0.162459,-0.223606, + 0.982247,-0.000001,-0.187591,0.095491,-0.131433,0, + 0.982247,-0.000001,-0.187591,0.1,-0.162459,0.023607, + 0.982247,-0.000001,-0.187591,0.08541,-0.262865,-0.052786, + 0.982248,0.000002,-0.187589,0.111804,0.08123,0.08541, + 0.982248,0.000002,-0.187589,0.11459,0.117557,0.1, + 0.982248,0.000002,-0.187589,0.138196,0.100406,0.223606, + -0.303531,-0.934173,0.187591,-0.150658,-0.062054,-0.052786, + -0.303531,-0.934173,0.187591,-0.18541,-0.044903,-0.023607, + -0.303531,-0.934173,0.187591,-0.447213,0,-0.223606, + -0.303532,-0.934172,0.187594,-0.147214,-0.072654,-0.1, + -0.303532,-0.934172,0.187594,-0.150658,-0.062054,-0.052786, + -0.303532,-0.934172,0.187594,-0.447213,0,-0.223606, + -0.303535,-0.934171,0.187592,-0.020163,-0.062054,0.158359, + -0.303535,-0.934171,0.187592,0.023607,-0.072654,0.176394, + -0.303535,-0.934171,0.187592,0,0,0.5, + -0.303526,-0.934174,0.187592,-0.061803,-0.044903,0.176394, + -0.303526,-0.934174,0.187592,-0.020163,-0.062054,0.158359, + -0.303526,-0.934174,0.187592,0,0,0.5, + -0.303538,-0.934173,0.187579,0.08541,-0.138758,-0.052786, + -0.303538,-0.934173,0.187579,0.076393,-0.145308,-0.1, + -0.303538,-0.934173,0.187579,0.361803,-0.262865,-0.223606, + -0.303523,-0.934173,0.187603,0.123606,-0.145308,-0.023607, + -0.303523,-0.934173,0.187603,0.08541,-0.138758,-0.052786, + -0.303523,-0.934173,0.187603,0.361803,-0.262865,-0.223606, + -0.303531,-0.934173,0.187588,-0.158359,-0.038352,0.052786, + -0.303531,-0.934173,0.187588,-0.161804,-0.027751,0.1, + -0.303531,-0.934173,0.187588,-0.276393,0,0.052786, + -0.30353,-0.934173,0.187591,0.072949,-0.100406,0.118034, + -0.30353,-0.934173,0.187591,0.11459,-0.117557,0.1, + -0.30353,-0.934173,0.187591,0.138196,-0.100406,0.223606, + -0.303534,-0.934173,0.187586,0,-0.124108,-0.118034, + -0.303534,-0.934173,0.187586,-0.038197,-0.117557,-0.147214, + -0.303534,-0.934173,0.187586,0.052786,-0.162459,-0.223606, + -0.30353,-0.934173,0.187591,-0.038197,-0.117557,-0.147214, + -0.30353,-0.934173,0.187591,-0.072949,-0.100406,-0.118034, + -0.30353,-0.934173,0.187591,-0.138196,-0.100406,-0.223606, + -0.303529,-0.934173,0.187594,-0.161804,-0.027751,0.1, + -0.303529,-0.934173,0.187594,-0.118034,-0.038352,0.118034, + -0.303529,-0.934173,0.187594,-0.17082,0,0.223606, + -0.303526,-0.934172,0.187599,0.11459,-0.117557,0.1, + -0.303526,-0.934172,0.187599,0.105573,-0.124108,0.052786, + -0.303526,-0.934172,0.187599,0.223606,-0.162459,0.052786, + -0.30353,-0.934172,0.187595,-0.18541,-0.044903,-0.023607, + -0.30353,-0.934172,0.187595,-0.154508,-0.050203,0, + -0.30353,-0.934172,0.187595,-0.276393,0,0.052786, + -0.303529,-0.934174,0.187588,0.023607,-0.072654,0.176394, + -0.303529,-0.934174,0.187588,0.026393,-0.08123,0.138196, + -0.303529,-0.934174,0.187588,0.138196,-0.100406,0.223606, + -0.303516,-0.934178,0.18759,0.076393,-0.145308,-0.1, + -0.303516,-0.934178,0.18759,0.042705,-0.131433,-0.08541, + -0.303516,-0.934178,0.18759,0.052786,-0.162459,-0.223606, + -0.303531,-0.934173,0.187592,-0.111804,-0.08123,-0.08541, + -0.303531,-0.934173,0.187592,-0.147214,-0.072654,-0.1, + -0.303531,-0.934173,0.187592,-0.138196,-0.100406,-0.223606, + -0.303535,-0.934172,0.187588,-0.069098,-0.050203,0.138196, + -0.303535,-0.934172,0.187588,-0.061803,-0.044903,0.176394, + -0.303535,-0.934172,0.187588,-0.17082,0,0.223606, + -0.303524,-0.934177,0.187583,0.095491,-0.131433,0, + -0.303524,-0.934177,0.187583,0.123606,-0.145308,-0.023607, + -0.303524,-0.934177,0.187583,0.223606,-0.162459,0.052786, + 0.187592,-0.577351,-0.794654,-0.118034,-0.038352,-0.118034, + 0.187592,-0.577351,-0.794654,-0.147214,-0.072654,-0.1, + 0.187592,-0.577351,-0.794654,-0.447213,0,-0.223606, + 0.187591,-0.577356,-0.794651,-0.123606,0,-0.147214, + 0.187591,-0.577356,-0.794651,-0.118034,-0.038352,-0.118034, + 0.187591,-0.577356,-0.794651,-0.447213,0,-0.223606, + 0.187593,-0.577349,-0.794655,0.052786,-0.162459,0.012461, + 0.187593,-0.577349,-0.794655,0.1,-0.162459,0.023607, + 0.187593,-0.577349,-0.794655,0.138196,-0.425325,0.223606, + 0.1876,-0.577347,-0.794655,0.01459,-0.190211,0.023607, + 0.1876,-0.577347,-0.794655,0.052786,-0.162459,0.012461, + 0.1876,-0.577347,-0.794655,0.138196,-0.425325,0.223606, + 0.187596,-0.577353,-0.794652,0.118034,0.038352,-0.118034, + 0.187596,-0.577353,-0.794652,0.1,0.072654,-0.147214, + 0.187596,-0.577353,-0.794652,0.361803,0.262865,-0.223606, + 0.187591,-0.577349,-0.794656,0.161804,0.027751,-0.1, + 0.187591,-0.577349,-0.794656,0.118034,0.038352,-0.118034, + 0.187591,-0.577349,-0.794656,0.361803,0.262865,-0.223606, + 0.187592,-0.577357,-0.79465,-0.105573,-0.124108,-0.052786, + 0.187592,-0.577357,-0.79465,-0.1,-0.162459,-0.023607, + 0.187592,-0.577357,-0.79465,-0.223606,-0.162459,-0.052786, + 0.187591,-0.577354,-0.794652,0.138196,-0.100406,-0.012461, + 0.187591,-0.577354,-0.794652,0.176394,-0.072654,-0.023607, + 0.187591,-0.577354,-0.794652,0.223606,-0.162459,0.052786, + 0.187605,-0.577354,-0.794649,0.020163,0.062054,-0.158359, + 0.187605,-0.577354,-0.794649,-0.023607,0.072654,-0.176394, + 0.187605,-0.577354,-0.794649,0.052786,0.162459,-0.223606, + 0.187583,-0.57736,-0.79465,-0.023607,0.072654,-0.176394, + 0.187583,-0.57736,-0.79465,-0.052786,0.038352,-0.158359, + 0.187583,-0.57736,-0.79465,-0.138196,0.100406,-0.223606, + 0.187593,-0.57735,-0.794654,-0.1,-0.162459,-0.023607, + 0.187593,-0.57735,-0.794654,-0.052786,-0.162459,-0.012461, + 0.187593,-0.57735,-0.794654,-0.08541,-0.262865,0.052786, + 0.187592,-0.577347,-0.794657,0.176394,-0.072654,-0.023607, + 0.187592,-0.577347,-0.794657,0.158359,-0.038352,-0.052786, + 0.187592,-0.577347,-0.794657,0.276393,0,-0.052786, + 0.187592,-0.577351,-0.794654,-0.147214,-0.072654,-0.1, + 0.187592,-0.577351,-0.794654,-0.111804,-0.08123,-0.08541, + 0.187592,-0.577351,-0.794654,-0.223606,-0.162459,-0.052786, + 0.187591,-0.577359,-0.794648,0.1,-0.162459,0.023607, + 0.187591,-0.577359,-0.794648,0.095491,-0.131433,0, + 0.187591,-0.577359,-0.794648,0.223606,-0.162459,0.052786, + 0.187584,-0.577353,-0.794655,0.1,0.072654,-0.147214, + 0.187584,-0.577353,-0.794655,0.069098,0.050203,-0.138196, + 0.187584,-0.577353,-0.794655,0.052786,0.162459,-0.223606, + 0.187604,-0.577345,-0.794656,-0.08541,0,-0.138196, + 0.187604,-0.577345,-0.794656,-0.123606,0,-0.147214, + 0.187604,-0.577345,-0.794656,-0.138196,0.100406,-0.223606, + 0.187583,-0.577345,-0.79466,0,-0.162459,0, + 0.187583,-0.577345,-0.79466,0.01459,-0.190211,0.023607, + 0.187583,-0.577345,-0.79466,-0.08541,-0.262865,0.052786, + 0.187593,-0.577352,-0.794653,0.138196,0,-0.08541, + 0.187593,-0.577352,-0.794653,0.161804,0.027751,-0.1, + 0.187593,-0.577352,-0.794653,0.276393,0,-0.052786, + -0.187596,-0.577353,0.794652,-0.118034,0.038352,0.118034, + -0.187596,-0.577353,0.794652,-0.1,0.072654,0.147214, + -0.187596,-0.577353,0.794652,-0.361803,0.262865,0.223606, + -0.187591,-0.577349,0.794656,-0.161804,0.027751,0.1, + -0.187591,-0.577349,0.794656,-0.118034,0.038352,0.118034, + -0.187591,-0.577349,0.794656,-0.361803,0.262865,0.223606, + -0.187592,-0.577351,0.794654,0.118034,-0.038352,0.118034, + -0.187592,-0.577351,0.794654,0.147214,-0.072654,0.1, + -0.187592,-0.577351,0.794654,0.447213,0,0.223606, + -0.187591,-0.577356,0.794651,0.123606,0,0.147214, + -0.187591,-0.577356,0.794651,0.118034,-0.038352,0.118034, + -0.187591,-0.577356,0.794651,0.447213,0,0.223606, + -0.187593,-0.577349,0.794655,-0.052786,-0.162459,-0.012461, + -0.187593,-0.577349,0.794655,-0.1,-0.162459,-0.023607, + -0.187593,-0.577349,0.794655,-0.138196,-0.425325,-0.223606, + -0.1876,-0.577347,0.794655,-0.01459,-0.190211,-0.023607, + -0.1876,-0.577347,0.794655,-0.052786,-0.162459,-0.012461, + -0.1876,-0.577347,0.794655,-0.138196,-0.425325,-0.223606, + -0.187605,-0.577354,0.794649,-0.020163,0.062054,0.158359, + -0.187605,-0.577354,0.794649,0.023607,0.072654,0.176394, + -0.187605,-0.577354,0.794649,-0.052786,0.162459,0.223606, + -0.187592,-0.577357,0.79465,0.105573,-0.124108,0.052786, + -0.187592,-0.577357,0.79465,0.1,-0.162459,0.023607, + -0.187592,-0.577357,0.79465,0.223606,-0.162459,0.052786, + -0.187591,-0.577354,0.794652,-0.138196,-0.100406,0.012461, + -0.187591,-0.577354,0.794652,-0.176394,-0.072654,0.023607, + -0.187591,-0.577354,0.794652,-0.223606,-0.162459,-0.052786, + -0.187592,-0.577347,0.794657,-0.176394,-0.072654,0.023607, + -0.187592,-0.577347,0.794657,-0.158359,-0.038352,0.052786, + -0.187592,-0.577347,0.794657,-0.276393,0,0.052786, + -0.187583,-0.57736,0.79465,0.023607,0.072654,0.176394, + -0.187583,-0.57736,0.79465,0.052786,0.038352,0.158359, + -0.187583,-0.57736,0.79465,0.138196,0.100406,0.223606, + -0.187593,-0.57735,0.794654,0.1,-0.162459,0.023607, + -0.187593,-0.57735,0.794654,0.052786,-0.162459,0.012461, + -0.187593,-0.57735,0.794654,0.08541,-0.262865,-0.052786, + -0.187584,-0.577353,0.794655,-0.1,0.072654,0.147214, + -0.187584,-0.577353,0.794655,-0.069098,0.050203,0.138196, + -0.187584,-0.577353,0.794655,-0.052786,0.162459,0.223606, + -0.187592,-0.577351,0.794654,0.147214,-0.072654,0.1, + -0.187592,-0.577351,0.794654,0.111804,-0.08123,0.08541, + -0.187592,-0.577351,0.794654,0.223606,-0.162459,0.052786, + -0.187591,-0.577359,0.794648,-0.1,-0.162459,-0.023607, + -0.187591,-0.577359,0.794648,-0.095491,-0.131433,0, + -0.187591,-0.577359,0.794648,-0.223606,-0.162459,-0.052786, + -0.187593,-0.577352,0.794653,-0.138196,0,0.08541, + -0.187593,-0.577352,0.794653,-0.161804,0.027751,0.1, + -0.187593,-0.577352,0.794653,-0.276393,0,0.052786, + -0.187604,-0.577345,0.794656,0.08541,0,0.138196, + -0.187604,-0.577345,0.794656,0.123606,0,0.147214, + -0.187604,-0.577345,0.794656,0.138196,0.100406,0.223606, + -0.187583,-0.577345,0.79466,0,-0.162459,0, + -0.187583,-0.577345,0.79466,-0.01459,-0.190211,-0.023607, + -0.187583,-0.577345,0.79466,0.08541,-0.262865,-0.052786, + 0.794652,0.577358,0.18758,0.158359,-0.038352,-0.052786, + 0.794652,0.577358,0.18758,0.176394,-0.072654,-0.023607, + 0.794652,0.577358,0.18758,0.361803,-0.262865,-0.223606, + 0.794656,0.577344,0.187604,0.161804,-0.027751,-0.1, + 0.794656,0.577344,0.187604,0.158359,-0.038352,-0.052786, + 0.794656,0.577344,0.187604,0.361803,-0.262865,-0.223606, + 0.794657,0.577347,0.187592,0.052786,0.038352,0.158359, + 0.794657,0.577347,0.187592,0.023607,0.072654,0.176394, + 0.794657,0.577347,0.187592,0,0,0.5, + 0.794653,0.577353,0.187592,0.076393,0,0.176394, + 0.794653,0.577353,0.187592,0.052786,0.038352,0.158359, + 0.794653,0.577353,0.187592,0,0,0.5, + 0.794655,0.577349,0.187593,0.012461,0.162459,-0.052786, + 0.794655,0.577349,0.187593,0.023607,0.162459,-0.1, + 0.794655,0.577349,0.187593,-0.138196,0.425325,-0.223606, + 0.794658,0.577347,0.187587,-0.01459,0.190211,-0.023607, + 0.794658,0.577347,0.187587,0.012461,0.162459,-0.052786, + 0.794658,0.577347,0.187587,-0.138196,0.425325,-0.223606, + 0.794655,0.577351,0.187588,0.150658,-0.062054,0.052786, + 0.794655,0.577351,0.187588,0.147214,-0.072654,0.1, + 0.794655,0.577351,0.187588,0.223606,-0.162459,0.052786, + 0.79465,0.577356,0.187592,0,0.124108,0.118034, + 0.79465,0.577356,0.187592,-0.023607,0.162459,0.1, + 0.79465,0.577356,0.187592,-0.052786,0.162459,0.223606, + 0.794655,0.57735,0.18759,0.072949,0.100406,-0.118034, + 0.794655,0.57735,0.18759,0.1,0.072654,-0.147214, + 0.794655,0.57735,0.18759,0.052786,0.162459,-0.223606, + 0.794654,0.577351,0.187592,0.1,0.072654,-0.147214, + 0.794654,0.577351,0.187592,0.118034,0.038352,-0.118034, + 0.794654,0.577351,0.187592,0.17082,0,-0.223606, + 0.794652,0.577353,0.187596,0.147214,-0.072654,0.1, + 0.794652,0.577353,0.187596,0.118034,-0.038352,0.118034, + 0.794652,0.577353,0.187596,0.138196,-0.100406,0.223606, + 0.794654,0.57735,0.187593,-0.023607,0.162459,0.1, + 0.794654,0.57735,0.187593,-0.012461,0.162459,0.052786, + 0.794654,0.57735,0.187593,-0.08541,0.262865,0.052786, + 0.794648,0.577354,0.187607,0.176394,-0.072654,-0.023607, + 0.794648,0.577354,0.187607,0.154508,-0.050203,0, + 0.794648,0.577354,0.187607,0.223606,-0.162459,0.052786, + 0.794652,0.577354,0.18759,0.023607,0.072654,0.176394, + 0.794652,0.577354,0.18759,0.026393,0.08123,0.138196, + 0.794652,0.577354,0.18759,-0.052786,0.162459,0.223606, + 0.794649,0.577358,0.187592,0.023607,0.162459,-0.1, + 0.794649,0.577358,0.187592,0.042705,0.131433,-0.08541, + 0.794649,0.577358,0.187592,0.052786,0.162459,-0.223606, + 0.794646,0.577362,0.187591,0.138196,0,-0.08541, + 0.794646,0.577362,0.187591,0.161804,-0.027751,-0.1, + 0.794646,0.577362,0.187591,0.17082,0,-0.223606, + 0.794657,0.577348,0.18759,0.08541,0,0.138196, + 0.794657,0.577348,0.18759,0.076393,0,0.176394, + 0.794657,0.577348,0.18759,0.138196,-0.100406,0.223606, + 0.794655,0.577346,0.187602,0,0.162459,0, + 0.794655,0.577346,0.187602,-0.01459,0.190211,-0.023607, + 0.794655,0.577346,0.187602,-0.08541,0.262865,0.052786, + -0.794657,0.577347,-0.187592,-0.052786,0.038352,-0.158359, + -0.794657,0.577347,-0.187592,-0.023607,0.072654,-0.176394, + -0.794657,0.577347,-0.187592,0,0,-0.5, + -0.794653,0.577353,-0.187592,-0.076393,0,-0.176394, + -0.794653,0.577353,-0.187592,-0.052786,0.038352,-0.158359, + -0.794653,0.577353,-0.187592,0,0,-0.5, + -0.794655,0.577349,-0.187593,-0.012461,0.162459,0.052786, + -0.794655,0.577349,-0.187593,-0.023607,0.162459,0.1, + -0.794655,0.577349,-0.187593,0.138196,0.425325,0.223606, + -0.794658,0.577347,-0.187587,0.01459,0.190211,0.023607, + -0.794658,0.577347,-0.187587,-0.012461,0.162459,0.052786, + -0.794658,0.577347,-0.187587,0.138196,0.425325,0.223606, + -0.794652,0.577358,-0.18758,-0.158359,-0.038352,0.052786, + -0.794652,0.577358,-0.18758,-0.176394,-0.072654,0.023607, + -0.794652,0.577358,-0.18758,-0.361803,-0.262865,0.223606, + -0.794656,0.577344,-0.187604,-0.161804,-0.027751,0.1, + -0.794656,0.577344,-0.187604,-0.158359,-0.038352,0.052786, + -0.794656,0.577344,-0.187604,-0.361803,-0.262865,0.223606, + -0.79465,0.577356,-0.187592,0,0.124108,-0.118034, + -0.79465,0.577356,-0.187592,0.023607,0.162459,-0.1, + -0.79465,0.577356,-0.187592,0.052786,0.162459,-0.223606, + -0.794655,0.57735,-0.18759,-0.072949,0.100406,0.118034, + -0.794655,0.57735,-0.18759,-0.1,0.072654,0.147214, + -0.794655,0.57735,-0.18759,-0.052786,0.162459,0.223606, + -0.794655,0.577351,-0.187588,-0.150658,-0.062054,-0.052786, + -0.794655,0.577351,-0.187588,-0.147214,-0.072654,-0.1, + -0.794655,0.577351,-0.187588,-0.223606,-0.162459,-0.052786, + -0.794652,0.577353,-0.187596,-0.147214,-0.072654,-0.1, + -0.794652,0.577353,-0.187596,-0.118034,-0.038352,-0.118034, + -0.794652,0.577353,-0.187596,-0.138196,-0.100406,-0.223606, + -0.794654,0.57735,-0.187593,0.023607,0.162459,-0.1, + -0.794654,0.57735,-0.187593,0.012461,0.162459,-0.052786, + -0.794654,0.57735,-0.187593,0.08541,0.262865,-0.052786, + -0.794654,0.577351,-0.187592,-0.1,0.072654,0.147214, + -0.794654,0.577351,-0.187592,-0.118034,0.038352,0.118034, + -0.794654,0.577351,-0.187592,-0.17082,0,0.223606, + -0.794652,0.577354,-0.18759,-0.023607,0.072654,-0.176394, + -0.794652,0.577354,-0.18759,-0.026393,0.08123,-0.138196, + -0.794652,0.577354,-0.18759,0.052786,0.162459,-0.223606, + -0.794649,0.577358,-0.187592,-0.023607,0.162459,0.1, + -0.794649,0.577358,-0.187592,-0.042705,0.131433,0.08541, + -0.794649,0.577358,-0.187592,-0.052786,0.162459,0.223606, + -0.794648,0.577354,-0.187607,-0.176394,-0.072654,0.023607, + -0.794648,0.577354,-0.187607,-0.154508,-0.050203,0, + -0.794648,0.577354,-0.187607,-0.223606,-0.162459,-0.052786, + -0.794657,0.577348,-0.18759,-0.08541,0,-0.138196, + -0.794657,0.577348,-0.18759,-0.076393,0,-0.176394, + -0.794657,0.577348,-0.18759,-0.138196,-0.100406,-0.223606, + -0.794655,0.577346,-0.187602,0,0.162459,0, + -0.794655,0.577346,-0.187602,0.01459,0.190211,0.023607, + -0.794655,0.577346,-0.187602,0.08541,0.262865,-0.052786, + -0.794646,0.577362,-0.187591,-0.138196,0,0.08541, + -0.794646,0.577362,-0.187591,-0.161804,-0.027751,0.1, + -0.794646,0.577362,-0.187591,-0.17082,0,0.223606, + 0.491129,0.356821,0.794652,0.072949,-0.100406,0.118034, + 0.491129,0.356821,0.794652,0.038197,-0.117557,0.147214, + 0.491129,0.356821,0.794652,0.138196,-0.425325,0.223606, + 0.491121,0.356821,0.794656,0.11459,-0.117557,0.1, + 0.491121,0.356821,0.794656,0.072949,-0.100406,0.118034, + 0.491121,0.356821,0.794656,0.138196,-0.425325,0.223606, + 0.491124,0.356824,0.794654,-0.072949,0.100406,0.118034, + 0.491124,0.356824,0.794654,-0.076393,0.145308,0.1, + 0.491124,0.356824,0.794654,-0.361803,0.262865,0.223606, + 0.491125,0.356827,0.794651,-0.1,0.072654,0.147214, + 0.491125,0.356827,0.794651,-0.072949,0.100406,0.118034, + 0.491125,0.356827,0.794651,-0.361803,0.262865,0.223606, + 0.491119,0.356829,0.794654,0.138196,0.100406,-0.012461, + 0.491119,0.356829,0.794654,0.176394,0.072654,-0.023607, + 0.491119,0.356829,0.794654,0.361803,0.262865,-0.223606, + 0.491121,0.356826,0.794654,0.123606,0.145308,-0.023607, + 0.491121,0.356826,0.794654,0.138196,0.100406,-0.012461, + 0.491121,0.356826,0.794654,0.361803,0.262865,-0.223606, + 0.491135,0.356817,0.79465,-0.020163,-0.062054,0.158359, + 0.491135,0.356817,0.79465,-0.061803,-0.044903,0.176394, + 0.491135,0.356817,0.79465,-0.052786,-0.162459,0.223606, + 0.49112,0.35682,0.794658,-0.012461,0.162459,0.052786, + 0.49112,0.35682,0.794658,0.01459,0.190211,0.023607, + 0.49112,0.35682,0.794658,-0.08541,0.262865,0.052786, + 0.491124,0.356824,0.794654,0.17082,0,0.012461, + 0.491124,0.356824,0.794654,0.18541,-0.044903,0.023607, + 0.491124,0.356824,0.794654,0.276393,0,-0.052786, + 0.491124,0.356822,0.794654,0.18541,-0.044903,0.023607, + 0.491124,0.356822,0.794654,0.150658,-0.062054,0.052786, + 0.491124,0.356822,0.794654,0.223606,-0.162459,0.052786, + 0.491122,0.356835,0.79465,-0.061803,-0.044903,0.176394, + 0.491122,0.356835,0.79465,-0.065247,0,0.158359, + 0.491122,0.356835,0.79465,-0.17082,0,0.223606, + 0.491128,0.356819,0.794653,0.01459,0.190211,0.023607, + 0.491128,0.356819,0.794653,0.052786,0.162459,0.012461, + 0.491128,0.356819,0.794653,0.08541,0.262865,-0.052786, + 0.491117,0.35683,0.794655,0.038197,-0.117557,0.147214, + 0.491117,0.35683,0.794655,0.026393,-0.08123,0.138196, + 0.491117,0.35683,0.794655,-0.052786,-0.162459,0.223606, + 0.491117,0.356823,0.794658,-0.076393,0.145308,0.1, + 0.491117,0.356823,0.794658,-0.042705,0.131433,0.08541, + 0.491117,0.356823,0.794658,-0.08541,0.262865,0.052786, + 0.491122,0.356812,0.79466,0.176394,0.072654,-0.023607, + 0.491122,0.356812,0.79466,0.154508,0.050203,0, + 0.491122,0.356812,0.79466,0.276393,0,-0.052786, + 0.491124,0.35682,0.794655,0.111804,-0.08123,0.08541, + 0.491124,0.35682,0.794655,0.11459,-0.117557,0.1, + 0.491124,0.35682,0.794655,0.223606,-0.162459,0.052786, + 0.491129,0.356813,0.794655,-0.069098,0.050203,0.138196, + 0.491129,0.356813,0.794655,-0.1,0.072654,0.147214, + 0.491129,0.356813,0.794655,-0.17082,0,0.223606, + 0.491133,0.356822,0.794648,0.095491,0.131433,0, + 0.491133,0.356822,0.794648,0.123606,0.145308,-0.023607, + 0.491133,0.356822,0.794648,0.08541,0.262865,-0.052786, + 0.187591,0.577349,-0.794656,0.118034,-0.038352,-0.118034, + 0.187591,0.577349,-0.794656,0.161804,-0.027751,-0.1, + 0.187591,0.577349,-0.794656,0.361803,-0.262865,-0.223606, + 0.187596,0.577353,-0.794652,0.1,-0.072654,-0.147214, + 0.187596,0.577353,-0.794652,0.118034,-0.038352,-0.118034, + 0.187596,0.577353,-0.794652,0.361803,-0.262865,-0.223606, + 0.1876,0.577347,-0.794655,0.052786,0.162459,0.012461, + 0.1876,0.577347,-0.794655,0.01459,0.190211,0.023607, + 0.1876,0.577347,-0.794655,0.138196,0.425325,0.223606, + 0.187593,0.577349,-0.794655,0.1,0.162459,0.023607, + 0.187593,0.577349,-0.794655,0.052786,0.162459,0.012461, + 0.187593,0.577349,-0.794655,0.138196,0.425325,0.223606, + 0.187591,0.577356,-0.794651,-0.118034,0.038352,-0.118034, + 0.187591,0.577356,-0.794651,-0.123606,0,-0.147214, + 0.187591,0.577356,-0.794651,-0.447213,0,-0.223606, + 0.187592,0.577351,-0.794654,-0.147214,0.072654,-0.1, + 0.187592,0.577351,-0.794654,-0.118034,0.038352,-0.118034, + 0.187592,0.577351,-0.794654,-0.447213,0,-0.223606, + 0.187592,0.577347,-0.794657,0.158359,0.038352,-0.052786, + 0.187592,0.577347,-0.794657,0.176394,0.072654,-0.023607, + 0.187592,0.577347,-0.794657,0.276393,0,-0.052786, + 0.187593,0.57735,-0.794654,-0.052786,0.162459,-0.012461, + 0.187593,0.57735,-0.794654,-0.1,0.162459,-0.023607, + 0.187593,0.57735,-0.794654,-0.08541,0.262865,0.052786, + 0.187583,0.57736,-0.79465,-0.052786,-0.038352,-0.158359, + 0.187583,0.57736,-0.79465,-0.023607,-0.072654,-0.176394, + 0.187583,0.57736,-0.79465,-0.138196,-0.100406,-0.223606, + 0.187605,0.577354,-0.794649,-0.023607,-0.072654,-0.176394, + 0.187605,0.577354,-0.794649,0.020163,-0.062054,-0.158359, + 0.187605,0.577354,-0.794649,0.052786,-0.162459,-0.223606, + 0.187591,0.577354,-0.794652,0.176394,0.072654,-0.023607, + 0.187591,0.577354,-0.794652,0.138196,0.100406,-0.012461, + 0.187591,0.577354,-0.794652,0.223606,0.162459,0.052786, + 0.187592,0.577357,-0.79465,-0.1,0.162459,-0.023607, + 0.187592,0.577357,-0.79465,-0.105573,0.124108,-0.052786, + 0.187592,0.577357,-0.79465,-0.223606,0.162459,-0.052786, + 0.187593,0.577352,-0.794653,0.161804,-0.027751,-0.1, + 0.187593,0.577352,-0.794653,0.138196,0,-0.08541, + 0.187593,0.577352,-0.794653,0.276393,0,-0.052786, + 0.187583,0.577345,-0.79466,0.01459,0.190211,0.023607, + 0.187583,0.577345,-0.79466,0,0.162459,0, + 0.187583,0.577345,-0.79466,-0.08541,0.262865,0.052786, + 0.187604,0.577345,-0.794656,-0.123606,0,-0.147214, + 0.187604,0.577345,-0.794656,-0.08541,0,-0.138196, + 0.187604,0.577345,-0.794656,-0.138196,-0.100406,-0.223606, + 0.187584,0.577353,-0.794655,0.069098,-0.050203,-0.138196, + 0.187584,0.577353,-0.794655,0.1,-0.072654,-0.147214, + 0.187584,0.577353,-0.794655,0.052786,-0.162459,-0.223606, + 0.187591,0.577359,-0.794648,0.095491,0.131433,0, + 0.187591,0.577359,-0.794648,0.1,0.162459,0.023607, + 0.187591,0.577359,-0.794648,0.223606,0.162459,0.052786, + 0.187592,0.577351,-0.794654,-0.111804,0.08123,-0.08541, + 0.187592,0.577351,-0.794654,-0.147214,0.072654,-0.1, + 0.187592,0.577351,-0.794654,-0.223606,0.162459,-0.052786, + 0.303535,-0.934171,-0.187592,0.020163,-0.062054,-0.158359, + 0.303535,-0.934171,-0.187592,-0.023607,-0.072654,-0.176394, + 0.303535,-0.934171,-0.187592,0,0,-0.5, + 0.303526,-0.934174,-0.187592,0.061803,-0.044903,-0.176394, + 0.303526,-0.934174,-0.187592,0.020163,-0.062054,-0.158359, + 0.303526,-0.934174,-0.187592,0,0,-0.5, + 0.303538,-0.934173,-0.187579,-0.08541,-0.138758,0.052786, + 0.303538,-0.934173,-0.187579,-0.076393,-0.145308,0.1, + 0.303538,-0.934173,-0.187579,-0.361803,-0.262865,0.223606, + 0.303523,-0.934173,-0.187603,-0.123606,-0.145308,0.023607, + 0.303523,-0.934173,-0.187603,-0.08541,-0.138758,0.052786, + 0.303523,-0.934173,-0.187603,-0.361803,-0.262865,0.223606, + 0.303531,-0.934173,-0.187591,0.150658,-0.062054,0.052786, + 0.303531,-0.934173,-0.187591,0.18541,-0.044903,0.023607, + 0.303531,-0.934173,-0.187591,0.447213,0,0.223606, + 0.303532,-0.934172,-0.187594,0.147214,-0.072654,0.1, + 0.303532,-0.934172,-0.187594,0.150658,-0.062054,0.052786, + 0.303532,-0.934172,-0.187594,0.447213,0,0.223606, + 0.30353,-0.934173,-0.187591,-0.072949,-0.100406,-0.118034, + 0.30353,-0.934173,-0.187591,-0.11459,-0.117557,-0.1, + 0.30353,-0.934173,-0.187591,-0.138196,-0.100406,-0.223606, + 0.303534,-0.934173,-0.187586,0,-0.124108,0.118034, + 0.303534,-0.934173,-0.187586,0.038197,-0.117557,0.147214, + 0.303534,-0.934173,-0.187586,-0.052786,-0.162459,0.223606, + 0.303531,-0.934173,-0.187588,0.158359,-0.038352,-0.052786, + 0.303531,-0.934173,-0.187588,0.161804,-0.027751,-0.1, + 0.303531,-0.934173,-0.187588,0.276393,0,-0.052786, + 0.303529,-0.934173,-0.187594,0.161804,-0.027751,-0.1, + 0.303529,-0.934173,-0.187594,0.118034,-0.038352,-0.118034, + 0.303529,-0.934173,-0.187594,0.17082,0,-0.223606, + 0.303526,-0.934172,-0.187599,-0.11459,-0.117557,-0.1, + 0.303526,-0.934172,-0.187599,-0.105573,-0.124108,-0.052786, + 0.303526,-0.934172,-0.187599,-0.223606,-0.162459,-0.052786, + 0.30353,-0.934173,-0.187591,0.038197,-0.117557,0.147214, + 0.30353,-0.934173,-0.187591,0.072949,-0.100406,0.118034, + 0.30353,-0.934173,-0.187591,0.138196,-0.100406,0.223606, + 0.303529,-0.934174,-0.187588,-0.023607,-0.072654,-0.176394, + 0.303529,-0.934174,-0.187588,-0.026393,-0.08123,-0.138196, + 0.303529,-0.934174,-0.187588,-0.138196,-0.100406,-0.223606, + 0.303516,-0.934178,-0.18759,-0.076393,-0.145308,0.1, + 0.303516,-0.934178,-0.18759,-0.042705,-0.131433,0.08541, + 0.303516,-0.934178,-0.18759,-0.052786,-0.162459,0.223606, + 0.30353,-0.934172,-0.187595,0.18541,-0.044903,0.023607, + 0.30353,-0.934172,-0.187595,0.154508,-0.050203,0, + 0.30353,-0.934172,-0.187595,0.276393,0,-0.052786, + 0.303535,-0.934172,-0.187588,0.069098,-0.050203,-0.138196, + 0.303535,-0.934172,-0.187588,0.061803,-0.044903,-0.176394, + 0.303535,-0.934172,-0.187588,0.17082,0,-0.223606, + 0.303524,-0.934177,-0.187583,-0.095491,-0.131433,0, + 0.303524,-0.934177,-0.187583,-0.123606,-0.145308,0.023607, + 0.303524,-0.934177,-0.187583,-0.223606,-0.162459,-0.052786, + 0.303531,-0.934173,-0.187592,0.111804,-0.08123,0.08541, + 0.303531,-0.934173,-0.187592,0.147214,-0.072654,0.1, + 0.303531,-0.934173,-0.187592,0.138196,-0.100406,0.223606, + -0.982248,-0.000002,0.187589,-0.105573,0.124108,-0.052786, + -0.982248,-0.000002,0.187589,-0.1,0.162459,-0.023607, + -0.982248,-0.000002,0.187589,-0.138196,0.425325,-0.223606, + -0.982245,0.000005,0.187601,-0.11459,0.117557,-0.1, + -0.982245,0.000005,0.187601,-0.105573,0.124108,-0.052786, + -0.982245,0.000005,0.187601,-0.138196,0.425325,-0.223606, + -0.982247,0.000005,0.187592,-0.065247,0,0.158359, + -0.982247,0.000005,0.187592,-0.061803,-0.044903,0.176394, + -0.982247,0.000005,0.187592,0,0,0.5, + -0.982247,-0.000005,0.187592,-0.061803,0.044903,0.176394, + -0.982247,-0.000005,0.187592,-0.065247,0,0.158359, + -0.982247,-0.000005,0.187592,0,0,0.5, + -0.982245,-0.000005,0.187601,-0.105573,-0.124108,-0.052786, + -0.982245,-0.000005,0.187601,-0.11459,-0.117557,-0.1, + -0.982245,-0.000005,0.187601,-0.138196,-0.425325,-0.223606, + -0.982248,0.000002,0.187589,-0.1,-0.162459,-0.023607, + -0.982248,0.000002,0.187589,-0.105573,-0.124108,-0.052786, + -0.982248,0.000002,0.187589,-0.138196,-0.425325,-0.223606, + -0.982247,0,0.187593,-0.08541,0.138758,0.052786, + -0.982247,0,0.187593,-0.076393,0.145308,0.1, + -0.982247,0,0.187593,-0.08541,0.262865,0.052786, + -0.982247,-0.000001,0.187593,-0.072949,-0.100406,0.118034, + -0.982247,-0.000001,0.187593,-0.076393,-0.145308,0.1, + -0.982247,-0.000001,0.187593,-0.052786,-0.162459,0.223606, + -0.982248,0.000006,0.187588,-0.118034,-0.038352,-0.118034, + -0.982248,0.000006,0.187588,-0.123606,0,-0.147214, + -0.982248,0.000006,0.187588,-0.138196,-0.100406,-0.223606, + -0.982248,-0.000006,0.187588,-0.123606,0,-0.147214, + -0.982248,-0.000006,0.187588,-0.118034,0.038352,-0.118034, + -0.982248,-0.000006,0.187588,-0.138196,0.100406,-0.223606, + -0.982247,0.000001,0.187593,-0.076393,0.145308,0.1, + -0.982247,0.000001,0.187593,-0.072949,0.100406,0.118034, + -0.982247,0.000001,0.187593,-0.052786,0.162459,0.223606, + -0.982247,0,0.187593,-0.076393,-0.145308,0.1, + -0.982247,0,0.187593,-0.08541,-0.138758,0.052786, + -0.982247,0,0.187593,-0.08541,-0.262865,0.052786, + -0.982247,0.000001,0.187591,-0.1,0.162459,-0.023607, + -0.982247,0.000001,0.187591,-0.095491,0.131433,0, + -0.982247,0.000001,0.187591,-0.08541,0.262865,0.052786, + -0.982248,-0.000003,0.187589,-0.061803,-0.044903,0.176394, + -0.982248,-0.000003,0.187589,-0.069098,-0.050203,0.138196, + -0.982248,-0.000003,0.187589,-0.052786,-0.162459,0.223606, + -0.982248,-0.000002,0.187589,-0.11459,-0.117557,-0.1, + -0.982248,-0.000002,0.187589,-0.111804,-0.08123,-0.08541, + -0.982248,-0.000002,0.187589,-0.138196,-0.100406,-0.223606, + -0.982248,0.000002,0.187589,-0.111804,0.08123,-0.08541, + -0.982248,0.000002,0.187589,-0.11459,0.117557,-0.1, + -0.982248,0.000002,0.187589,-0.138196,0.100406,-0.223606, + -0.982248,0.000003,0.187589,-0.069098,0.050203,0.138196, + -0.982248,0.000003,0.187589,-0.061803,0.044903,0.176394, + -0.982248,0.000003,0.187589,-0.052786,0.162459,0.223606, + -0.982247,-0.000001,0.187591,-0.095491,-0.131433,0, + -0.982247,-0.000001,0.187591,-0.1,-0.162459,-0.023607, + -0.982247,-0.000001,0.187591,-0.08541,-0.262865,0.052786, + 0.607062,0,-0.794655,0,-0.124108,-0.118034, + 0.607062,0,-0.794655,0.023607,-0.162459,-0.1, + 0.607062,0,-0.794655,-0.138196,-0.425325,-0.223606, + 0.607065,-0.000003,-0.794652,-0.038197,-0.117557,-0.147214, + 0.607065,-0.000003,-0.794652,0,-0.124108,-0.118034, + 0.607065,-0.000003,-0.794652,-0.138196,-0.425325,-0.223606, + 0.607062,-0.000002,-0.794654,0.17082,0,0.012461, + 0.607062,-0.000002,-0.794654,0.18541,0.044903,0.023607, + 0.607062,-0.000002,-0.794654,0.447213,0,0.223606, + 0.607062,0.000002,-0.794654,0.18541,-0.044903,0.023607, + 0.607062,0.000002,-0.794654,0.17082,0,0.012461, + 0.607062,0.000002,-0.794654,0.447213,0,0.223606, + 0.607065,0.000003,-0.794652,0,0.124108,-0.118034, + 0.607065,0.000003,-0.794652,-0.038197,0.117557,-0.147214, + 0.607065,0.000003,-0.794652,-0.138196,0.425325,-0.223606, + 0.607062,0,-0.794655,0.023607,0.162459,-0.1, + 0.607062,0,-0.794655,0,0.124108,-0.118034, + 0.607062,0,-0.794655,-0.138196,0.425325,-0.223606, + 0.607066,0,-0.794652,0.08541,-0.138758,-0.052786, + 0.607066,0,-0.794652,0.123606,-0.145308,-0.023607, + 0.607066,0,-0.794652,0.08541,-0.262865,-0.052786, + 0.607061,0.000001,-0.794655,0.138196,0.100406,-0.012461, + 0.607061,0.000001,-0.794655,0.123606,0.145308,-0.023607, + 0.607061,0.000001,-0.794655,0.223606,0.162459,0.052786, + 0.607069,0.000012,-0.794649,-0.052786,0.038352,-0.158359, + 0.607069,0.000012,-0.794649,-0.076393,0,-0.176394, + 0.607069,0.000012,-0.794649,-0.138196,0.100406,-0.223606, + 0.607069,-0.000012,-0.794649,-0.076393,0,-0.176394, + 0.607069,-0.000012,-0.794649,-0.052786,-0.038352,-0.158359, + 0.607069,-0.000012,-0.794649,-0.138196,-0.100406,-0.223606, + 0.607061,-0.000001,-0.794655,0.123606,-0.145308,-0.023607, + 0.607061,-0.000001,-0.794655,0.138196,-0.100406,-0.012461, + 0.607061,-0.000001,-0.794655,0.223606,-0.162459,0.052786, + 0.607066,0,-0.794652,0.123606,0.145308,-0.023607, + 0.607066,0,-0.794652,0.08541,0.138758,-0.052786, + 0.607066,0,-0.794652,0.08541,0.262865,-0.052786, + 0.607061,0,-0.794655,0.023607,-0.162459,-0.1, + 0.607061,0,-0.794655,0.042705,-0.131433,-0.08541, + 0.607061,0,-0.794655,0.08541,-0.262865,-0.052786, + 0.60706,0.000002,-0.794656,0.18541,0.044903,0.023607, + 0.60706,0.000002,-0.794656,0.154508,0.050203,0, + 0.60706,0.000002,-0.794656,0.223606,0.162459,0.052786, + 0.607061,-0.00001,-0.794655,-0.038197,0.117557,-0.147214, + 0.607061,-0.00001,-0.794655,-0.026393,0.08123,-0.138196, + 0.607061,-0.00001,-0.794655,-0.138196,0.100406,-0.223606, + 0.607061,0.00001,-0.794655,-0.026393,-0.08123,-0.138196, + 0.607061,0.00001,-0.794655,-0.038197,-0.117557,-0.147214, + 0.607061,0.00001,-0.794655,-0.138196,-0.100406,-0.223606, + 0.60706,-0.000002,-0.794656,0.154508,-0.050203,0, + 0.60706,-0.000002,-0.794656,0.18541,-0.044903,0.023607, + 0.60706,-0.000002,-0.794656,0.223606,-0.162459,0.052786, + 0.607061,0,-0.794655,0.042705,0.131433,-0.08541, + 0.607061,0,-0.794655,0.023607,0.162459,-0.1, + 0.607061,0,-0.794655,0.08541,0.262865,-0.052786, + 0.491125,-0.356827,0.794651,-0.072949,-0.100406,0.118034, + 0.491125,-0.356827,0.794651,-0.1,-0.072654,0.147214, + 0.491125,-0.356827,0.794651,-0.361803,-0.262865,0.223606, + 0.491124,-0.356824,0.794654,-0.076393,-0.145308,0.1, + 0.491124,-0.356824,0.794654,-0.072949,-0.100406,0.118034, + 0.491124,-0.356824,0.794654,-0.361803,-0.262865,0.223606, + 0.491121,-0.356821,0.794656,0.072949,0.100406,0.118034, + 0.491121,-0.356821,0.794656,0.11459,0.117557,0.1, + 0.491121,-0.356821,0.794656,0.138196,0.425325,0.223606, + 0.491129,-0.356821,0.794652,0.038197,0.117557,0.147214, + 0.491129,-0.356821,0.794652,0.072949,0.100406,0.118034, + 0.491129,-0.356821,0.794652,0.138196,0.425325,0.223606, + 0.491121,-0.356826,0.794654,0.138196,-0.100406,-0.012461, + 0.491121,-0.356826,0.794654,0.123606,-0.145308,-0.023607, + 0.491121,-0.356826,0.794654,0.361803,-0.262865,-0.223606, + 0.491119,-0.356829,0.794654,0.176394,-0.072654,-0.023607, + 0.491119,-0.356829,0.794654,0.138196,-0.100406,-0.012461, + 0.491119,-0.356829,0.794654,0.361803,-0.262865,-0.223606, + 0.491122,-0.356835,0.79465,-0.065247,0,0.158359, + 0.491122,-0.356835,0.79465,-0.061803,0.044903,0.176394, + 0.491122,-0.356835,0.79465,-0.17082,0,0.223606, + 0.491124,-0.356822,0.794654,0.150658,0.062054,0.052786, + 0.491124,-0.356822,0.794654,0.18541,0.044903,0.023607, + 0.491124,-0.356822,0.794654,0.223606,0.162459,0.052786, + 0.491128,-0.356819,0.794653,0.052786,-0.162459,0.012461, + 0.491128,-0.356819,0.794653,0.01459,-0.190211,0.023607, + 0.491128,-0.356819,0.794653,0.08541,-0.262865,-0.052786, + 0.49112,-0.35682,0.794658,0.01459,-0.190211,0.023607, + 0.49112,-0.35682,0.794658,-0.012461,-0.162459,0.052786, + 0.49112,-0.35682,0.794658,-0.08541,-0.262865,0.052786, + 0.491135,-0.356817,0.79465,-0.061803,0.044903,0.176394, + 0.491135,-0.356817,0.79465,-0.020163,0.062054,0.158359, + 0.491135,-0.356817,0.79465,-0.052786,0.162459,0.223606, + 0.491124,-0.356824,0.794654,0.18541,0.044903,0.023607, + 0.491124,-0.356824,0.794654,0.17082,0,0.012461, + 0.491124,-0.356824,0.794654,0.276393,0,-0.052786, + 0.491129,-0.356813,0.794655,-0.1,-0.072654,0.147214, + 0.491129,-0.356813,0.794655,-0.069098,-0.050203,0.138196, + 0.491129,-0.356813,0.794655,-0.17082,0,0.223606, + 0.491124,-0.35682,0.794655,0.11459,0.117557,0.1, + 0.491124,-0.35682,0.794655,0.111804,0.08123,0.08541, + 0.491124,-0.35682,0.794655,0.223606,0.162459,0.052786, + 0.491133,-0.356822,0.794648,0.123606,-0.145308,-0.023607, + 0.491133,-0.356822,0.794648,0.095491,-0.131433,0, + 0.491133,-0.356822,0.794648,0.08541,-0.262865,-0.052786, + 0.491117,-0.356823,0.794658,-0.042705,-0.131433,0.08541, + 0.491117,-0.356823,0.794658,-0.076393,-0.145308,0.1, + 0.491117,-0.356823,0.794658,-0.08541,-0.262865,0.052786, + 0.491117,-0.35683,0.794655,0.026393,0.08123,0.138196, + 0.491117,-0.35683,0.794655,0.038197,0.117557,0.147214, + 0.491117,-0.35683,0.794655,-0.052786,0.162459,0.223606, + 0.491122,-0.356812,0.79466,0.154508,-0.050203,0, + 0.491122,-0.356812,0.79466,0.176394,-0.072654,-0.023607, + 0.491122,-0.356812,0.79466,0.276393,0,-0.052786, + -0.794653,-0.577353,-0.187592,-0.052786,-0.038352,-0.158359, + -0.794653,-0.577353,-0.187592,-0.076393,0,-0.176394, + -0.794653,-0.577353,-0.187592,0,0,-0.5, + -0.794657,-0.577347,-0.187592,-0.023607,-0.072654,-0.176394, + -0.794657,-0.577347,-0.187592,-0.052786,-0.038352,-0.158359, + -0.794657,-0.577347,-0.187592,0,0,-0.5, + -0.794656,-0.577344,-0.187604,-0.158359,0.038352,0.052786, + -0.794656,-0.577344,-0.187604,-0.161804,0.027751,0.1, + -0.794656,-0.577344,-0.187604,-0.361803,0.262865,0.223606, + -0.794652,-0.577358,-0.18758,-0.176394,0.072654,0.023607, + -0.794652,-0.577358,-0.18758,-0.158359,0.038352,0.052786, + -0.794652,-0.577358,-0.18758,-0.361803,0.262865,0.223606, + -0.794658,-0.577347,-0.187587,-0.012461,-0.162459,0.052786, + -0.794658,-0.577347,-0.187587,0.01459,-0.190211,0.023607, + -0.794658,-0.577347,-0.187587,0.138196,-0.425325,0.223606, + -0.794655,-0.577349,-0.187593,-0.023607,-0.162459,0.1, + -0.794655,-0.577349,-0.187593,-0.012461,-0.162459,0.052786, + -0.794655,-0.577349,-0.187593,0.138196,-0.425325,0.223606, + -0.794652,-0.577353,-0.187596,-0.118034,0.038352,-0.118034, + -0.794652,-0.577353,-0.187596,-0.147214,0.072654,-0.1, + -0.794652,-0.577353,-0.187596,-0.138196,0.100406,-0.223606, + -0.794654,-0.577351,-0.187592,-0.118034,-0.038352,0.118034, + -0.794654,-0.577351,-0.187592,-0.1,-0.072654,0.147214, + -0.794654,-0.577351,-0.187592,-0.17082,0,0.223606, + -0.794654,-0.57735,-0.187593,0.012461,-0.162459,-0.052786, + -0.794654,-0.57735,-0.187593,0.023607,-0.162459,-0.1, + -0.794654,-0.57735,-0.187593,0.08541,-0.262865,-0.052786, + -0.79465,-0.577356,-0.187592,0.023607,-0.162459,-0.1, + -0.79465,-0.577356,-0.187592,0,-0.124108,-0.118034, + -0.79465,-0.577356,-0.187592,0.052786,-0.162459,-0.223606, + -0.794655,-0.577351,-0.187588,-0.147214,0.072654,-0.1, + -0.794655,-0.577351,-0.187588,-0.150658,0.062054,-0.052786, + -0.794655,-0.577351,-0.187588,-0.223606,0.162459,-0.052786, + -0.794655,-0.57735,-0.18759,-0.1,-0.072654,0.147214, + -0.794655,-0.57735,-0.18759,-0.072949,-0.100406,0.118034, + -0.794655,-0.57735,-0.18759,-0.052786,-0.162459,0.223606, + -0.794657,-0.577348,-0.18759,-0.076393,0,-0.176394, + -0.794657,-0.577348,-0.18759,-0.08541,0,-0.138196, + -0.794657,-0.577348,-0.18759,-0.138196,0.100406,-0.223606, + -0.794646,-0.577362,-0.187591,-0.161804,0.027751,0.1, + -0.794646,-0.577362,-0.187591,-0.138196,0,0.08541, + -0.794646,-0.577362,-0.187591,-0.17082,0,0.223606, + -0.794655,-0.577346,-0.187602,0.01459,-0.190211,0.023607, + -0.794655,-0.577346,-0.187602,0,-0.162459,0, + -0.794655,-0.577346,-0.187602,0.08541,-0.262865,-0.052786, + -0.794652,-0.577354,-0.18759,-0.026393,-0.08123,-0.138196, + -0.794652,-0.577354,-0.18759,-0.023607,-0.072654,-0.176394, + -0.794652,-0.577354,-0.18759,0.052786,-0.162459,-0.223606, + -0.794648,-0.577354,-0.187607,-0.154508,0.050203,0, + -0.794648,-0.577354,-0.187607,-0.176394,0.072654,0.023607, + -0.794648,-0.577354,-0.187607,-0.223606,0.162459,-0.052786, + -0.794649,-0.577358,-0.187592,-0.042705,-0.131433,0.08541, + -0.794649,-0.577358,-0.187592,-0.023607,-0.162459,0.1, + -0.794649,-0.577358,-0.187592,-0.052786,-0.162459,0.223606, + -0.303523,0.934173,0.187603,0.08541,0.138758,-0.052786, + -0.303523,0.934173,0.187603,0.123606,0.145308,-0.023607, + -0.303523,0.934173,0.187603,0.361803,0.262865,-0.223606, + -0.303538,0.934173,0.187579,0.076393,0.145308,-0.1, + -0.303538,0.934173,0.187579,0.08541,0.138758,-0.052786, + -0.303538,0.934173,0.187579,0.361803,0.262865,-0.223606, + -0.303526,0.934174,0.187592,-0.020163,0.062054,0.158359, + -0.303526,0.934174,0.187592,-0.061803,0.044903,0.176394, + -0.303526,0.934174,0.187592,0,0,0.5, + -0.303535,0.934171,0.187592,0.023607,0.072654,0.176394, + -0.303535,0.934171,0.187592,-0.020163,0.062054,0.158359, + -0.303535,0.934171,0.187592,0,0,0.5, + -0.303532,0.934172,0.187594,-0.150658,0.062054,-0.052786, + -0.303532,0.934172,0.187594,-0.147214,0.072654,-0.1, + -0.303532,0.934172,0.187594,-0.447213,0,-0.223606, + -0.303531,0.934173,0.187591,-0.18541,0.044903,-0.023607, + -0.303531,0.934173,0.187591,-0.150658,0.062054,-0.052786, + -0.303531,0.934173,0.187591,-0.447213,0,-0.223606, + -0.303526,0.934172,0.187599,0.105573,0.124108,0.052786, + -0.303526,0.934172,0.187599,0.11459,0.117557,0.1, + -0.303526,0.934172,0.187599,0.223606,0.162459,0.052786, + -0.303529,0.934173,0.187594,-0.118034,0.038352,0.118034, + -0.303529,0.934173,0.187594,-0.161804,0.027751,0.1, + -0.303529,0.934173,0.187594,-0.17082,0,0.223606, + -0.30353,0.934173,0.187591,-0.072949,0.100406,-0.118034, + -0.30353,0.934173,0.187591,-0.038197,0.117557,-0.147214, + -0.30353,0.934173,0.187591,-0.138196,0.100406,-0.223606, + -0.303534,0.934173,0.187586,-0.038197,0.117557,-0.147214, + -0.303534,0.934173,0.187586,0,0.124108,-0.118034, + -0.303534,0.934173,0.187586,0.052786,0.162459,-0.223606, + -0.30353,0.934173,0.187591,0.11459,0.117557,0.1, + -0.30353,0.934173,0.187591,0.072949,0.100406,0.118034, + -0.30353,0.934173,0.187591,0.138196,0.100406,0.223606, + -0.303531,0.934173,0.187588,-0.161804,0.027751,0.1, + -0.303531,0.934173,0.187588,-0.158359,0.038352,0.052786, + -0.303531,0.934173,0.187588,-0.276393,0,0.052786, + -0.303524,0.934177,0.187583,0.123606,0.145308,-0.023607, + -0.303524,0.934177,0.187583,0.095491,0.131433,0, + -0.303524,0.934177,0.187583,0.223606,0.162459,0.052786, + -0.303535,0.934172,0.187588,-0.061803,0.044903,0.176394, + -0.303535,0.934172,0.187588,-0.069098,0.050203,0.138196, + -0.303535,0.934172,0.187588,-0.17082,0,0.223606, + -0.303531,0.934173,0.187592,-0.147214,0.072654,-0.1, + -0.303531,0.934173,0.187592,-0.111804,0.08123,-0.08541, + -0.303531,0.934173,0.187592,-0.138196,0.100406,-0.223606, + -0.303516,0.934178,0.18759,0.042705,0.131433,-0.08541, + -0.303516,0.934178,0.18759,0.076393,0.145308,-0.1, + -0.303516,0.934178,0.18759,0.052786,0.162459,-0.223606, + -0.303529,0.934174,0.187588,0.026393,0.08123,0.138196, + -0.303529,0.934174,0.187588,0.023607,0.072654,0.176394, + -0.303529,0.934174,0.187588,0.138196,0.100406,0.223606, + -0.30353,0.934172,0.187595,-0.154508,0.050203,0, + -0.30353,0.934172,0.187595,-0.18541,0.044903,-0.023607, + -0.30353,0.934172,0.187595,-0.276393,0,0.052786 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1080,data,NULL}; +const struct gllist *tronbit_no=&frame; diff --git a/hacks/glx/tronbit_yes.c b/hacks/glx/tronbit_yes.c new file mode 100644 index 0000000..376e96c --- /dev/null +++ b/hacks/glx/tronbit_yes.c @@ -0,0 +1,31 @@ +/* yes = tetrahedron */ + +#include "gllist.h" +static const float data[]={ + 0.57735,0.57735,0.57735,0,0,0.5, + 0.57735,0.57735,0.57735,0.5,0,0, + 0.57735,0.57735,0.57735,0,0.5,0, + -0.57735,0.57735,0.57735,0,0,0.5, + -0.57735,0.57735,0.57735,0,0.5,0, + -0.57735,0.57735,0.57735,-0.5,0,0, + -0.57735,-0.57735,0.57735,0,0,0.5, + -0.57735,-0.57735,0.57735,-0.5,0,0, + -0.57735,-0.57735,0.57735,0,-0.5,0, + 0.57735,-0.57735,0.57735,0,0,0.5, + 0.57735,-0.57735,0.57735,0,-0.5,0, + 0.57735,-0.57735,0.57735,0.5,0,0, + 0.57735,-0.57735,-0.57735,0.5,0,0, + 0.57735,-0.57735,-0.57735,0,-0.5,0, + 0.57735,-0.57735,-0.57735,0,0,-0.5, + 0.57735,0.57735,-0.57735,0.5,0,0, + 0.57735,0.57735,-0.57735,0,0,-0.5, + 0.57735,0.57735,-0.57735,0,0.5,0, + -0.57735,0.57735,-0.57735,0,0.5,0, + -0.57735,0.57735,-0.57735,0,0,-0.5, + -0.57735,0.57735,-0.57735,-0.5,0,0, + -0.57735,-0.57735,-0.57735,-0.5,0,0, + -0.57735,-0.57735,-0.57735,0,0,-0.5, + -0.57735,-0.57735,-0.57735,0,-0.5,0 +}; +static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,24,data,NULL}; +const struct gllist *tronbit_yes=&frame; diff --git a/hacks/glx/tube.c b/hacks/glx/tube.c new file mode 100644 index 0000000..a5c0c96 --- /dev/null +++ b/hacks/glx/tube.c @@ -0,0 +1,403 @@ +/* tube, Copyright (c) 2001-2012 Jamie Zawinski + * Utility functions to create tubes and cones in GL. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#ifdef HAVE_COCOA +#elif defined(HAVE_ANDROID) +# include +#else +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + +#include "tube.h" + +typedef struct { GLfloat x, y, z; } XYZ; + + +static int +unit_tube (int faces, int smooth, int caps_p, int wire_p) +{ + int i; + int polys = 0; + GLfloat step = M_PI * 2 / faces; + GLfloat s2 = step/2; + GLfloat th; + GLfloat x, y, x0=0, y0=0; + int z = 0; + + int arraysize, out; + struct { XYZ p; XYZ n; GLfloat s, t; } *array; + + arraysize = (faces+1) * 6; + array = (void *) calloc (arraysize, sizeof(*array)); + if (! array) abort(); + out = 0; + + + /* #### texture coords are currently not being computed */ + + + /* side walls + */ + th = 0; + x = 1; + y = 0; + + if (!smooth) + { + x0 = cos (s2); + y0 = sin (s2); + } + + if (smooth) faces++; + + for (i = 0; i < faces; i++) + { + array[out].p.x = x; /* bottom point A */ + array[out].p.y = 0; + array[out].p.z = y; + + if (smooth) + array[out].n = array[out].p; /* its own normal */ + else + { + array[out].n.x = x0; /* mid-plane normal */ + array[out].n.y = 0; + array[out].n.z = y0; + } + out++; + + + array[out].p.x = x; /* top point A */ + array[out].p.y = 1; + array[out].p.z = y; + array[out].n = array[out-1].n; /* same normal */ + out++; + + + th += step; + x = cos (th); + y = sin (th); + + if (!smooth) + { + x0 = cos (th + s2); + y0 = sin (th + s2); + + array[out].p.x = x; /* top point B */ + array[out].p.y = 1; + array[out].p.z = y; + array[out].n = array[out-1].n; /* same normal */ + out++; + + + array[out] = array[out-3]; /* bottom point A */ + out++; + + array[out] = array[out-2]; /* top point B */ + out++; + + array[out].p.x = x; /* bottom point B */ + array[out].p.y = 0; + array[out].p.z = y; + array[out].n = array[out-1].n; /* same normal */ + out++; + + polys++; + } + + polys++; + if (out >= arraysize) abort(); + } + + glEnableClientState (GL_VERTEX_ARRAY); + glEnableClientState (GL_NORMAL_ARRAY); + glEnableClientState (GL_TEXTURE_COORD_ARRAY); + + glVertexPointer (3, GL_FLOAT, sizeof(*array), &array[0].p); + glNormalPointer ( GL_FLOAT, sizeof(*array), &array[0].n); + glTexCoordPointer (2, GL_FLOAT, sizeof(*array), &array[0].s); + + glFrontFace(GL_CCW); + glDrawArrays ((wire_p ? GL_LINES : + (smooth ? GL_TRIANGLE_STRIP : GL_TRIANGLES)), + 0, out); + + + /* End caps + */ + if (caps_p) + for (z = 0; z <= 1; z++) + { + out = 0; + if (! wire_p) + { + array[out].p.x = 0; + array[out].p.y = z; + array[out].p.z = 0; + + array[out].n.x = 0; + array[out].n.y = (z == 0 ? -1 : 1); + array[out].n.z = 0; + out++; + } + + th = 0; + for (i = (z == 0 ? 0 : faces); + (z == 0 ? i <= faces : i >= 0); + i += (z == 0 ? 1 : -1)) { + GLfloat x = cos (th); + GLfloat y = sin (th); + + array[out] = array[0]; /* same normal and texture */ + array[out].p.x = x; + array[out].p.y = z; + array[out].p.z = y; + out++; + + th += (z == 0 ? step : -step); + + polys++; + if (out >= arraysize) abort(); + } + + glVertexPointer (3, GL_FLOAT, sizeof(*array), &array[0].p); + glNormalPointer ( GL_FLOAT, sizeof(*array), &array[0].n); + glTexCoordPointer (2, GL_FLOAT, sizeof(*array), &array[0].s); + + glFrontFace(GL_CCW); + glDrawArrays ((wire_p ? GL_LINE_LOOP : GL_TRIANGLE_FAN), 0, out); + } + + free(array); + + return polys; +} + + +static int +unit_cone (int faces, int smooth, int cap_p, int wire_p) +{ + int i; + int polys = 0; + GLfloat step = M_PI * 2 / faces; + GLfloat s2 = step/2; + GLfloat th; + GLfloat x, y, x0, y0; + + int arraysize, out; + struct { XYZ p; XYZ n; GLfloat s, t; } *array; + + arraysize = (faces+1) * 3; + array = (void *) calloc (arraysize, sizeof(*array)); + if (! array) abort(); + out = 0; + + + /* #### texture coords are currently not being computed */ + + + /* side walls + */ + + th = 0; + x = 1; + y = 0; + x0 = cos (s2); + y0 = sin (s2); + + for (i = 0; i < faces; i++) + { + array[out].p.x = x; /* bottom point A */ + array[out].p.y = 0; + array[out].p.z = y; + + if (smooth) + array[out].n = array[out].p; /* its own normal */ + else + { + array[out].n.x = x0; /* mid-plane normal */ + array[out].n.y = 0; + array[out].n.z = y0; + } + out++; + + + array[out].p.x = 0; /* tip point */ + array[out].p.y = 1; + array[out].p.z = 0; + + array[out].n.x = x0; /* mid-plane normal */ + array[out].n.y = 0; + array[out].n.z = y0; + out++; + + + th += step; + x0 = cos (th + s2); + y0 = sin (th + s2); + x = cos (th); + y = sin (th); + + array[out].p.x = x; /* bottom point B */ + array[out].p.y = 0; + array[out].p.z = y; + + if (smooth) + array[out].n = array[out].p; /* its own normal */ + else + array[out].n = array[out-1].n; /* same normal as other two */ + out++; + + + if (out >= arraysize) abort(); + polys++; + } + + glEnableClientState (GL_VERTEX_ARRAY); + glEnableClientState (GL_NORMAL_ARRAY); + glEnableClientState (GL_TEXTURE_COORD_ARRAY); + + glVertexPointer (3, GL_FLOAT, sizeof(*array), &array[0].p); + glNormalPointer ( GL_FLOAT, sizeof(*array), &array[0].n); + glTexCoordPointer (2, GL_FLOAT, sizeof(*array), &array[0].s); + + glFrontFace(GL_CCW); + glDrawArrays ((wire_p ? GL_LINES : GL_TRIANGLES), 0, out); + + + /* End cap + */ + if (cap_p) + { + out = 0; + + if (! wire_p) + { + array[out].p.x = 0; + array[out].p.y = 0; + array[out].p.z = 0; + + array[out].n.x = 0; + array[out].n.y = -1; + array[out].n.z = 0; + out++; + } + + for (i = 0, th = 0; i <= faces; i++) + { + GLfloat x = cos (th); + GLfloat y = sin (th); + + array[out] = array[0]; /* same normal and texture */ + array[out].p.x = x; + array[out].p.y = 0; + array[out].p.z = y; + out++; + th += step; + polys++; + if (out >= arraysize) abort(); + } + + glVertexPointer (3, GL_FLOAT, sizeof(*array), &array[0].p); + glNormalPointer ( GL_FLOAT, sizeof(*array), &array[0].n); + glTexCoordPointer (2, GL_FLOAT, sizeof(*array), &array[0].s); + + glFrontFace(GL_CCW); + glDrawArrays ((wire_p ? GL_LINE_LOOP : GL_TRIANGLE_FAN), 0, out); + } + + free (array); + + return polys; +} + + +static int +tube_1 (GLfloat x1, GLfloat y1, GLfloat z1, + GLfloat x2, GLfloat y2, GLfloat z2, + GLfloat diameter, GLfloat cap_size, + int faces, int smooth, int caps_p, int wire_p, + int cone_p) +{ + GLfloat length, X, Y, Z; + int polys = 0; + + if (diameter <= 0) abort(); + + X = (x2 - x1); + Y = (y2 - y1); + Z = (z2 - z1); + + if (X == 0 && Y == 0 && Z == 0) + return 0; + + length = sqrt (X*X + Y*Y + Z*Z); + + glPushMatrix(); + + glTranslatef(x1, y1, z1); + glRotatef (-atan2 (X, Y) * (180 / M_PI), 0, 0, 1); + glRotatef ( atan2 (Z, sqrt(X*X + Y*Y)) * (180 / M_PI), 1, 0, 0); + glScalef (diameter, length, diameter); + + /* extend the endpoints of the tube by the cap size in both directions */ + if (cap_size != 0) + { + GLfloat c = cap_size/length; + glTranslatef (0, -c, 0); + glScalef (1, 1+c+c, 1); + } + + if (cone_p) + polys = unit_cone (faces, smooth, caps_p, wire_p); + else + polys = unit_tube (faces, smooth, caps_p, wire_p); + + glPopMatrix(); + return polys; +} + + +int +tube (GLfloat x1, GLfloat y1, GLfloat z1, + GLfloat x2, GLfloat y2, GLfloat z2, + GLfloat diameter, GLfloat cap_size, + int faces, int smooth, int caps_p, int wire_p) +{ + return tube_1 (x1, y1, z1, x2, y2, z2, diameter, cap_size, + faces, smooth, caps_p, wire_p, + 0); +} + + +int +cone (GLfloat x1, GLfloat y1, GLfloat z1, + GLfloat x2, GLfloat y2, GLfloat z2, + GLfloat diameter, GLfloat cap_size, + int faces, int smooth, int cap_p, int wire_p) +{ + return tube_1 (x1, y1, z1, x2, y2, z2, diameter, cap_size, + faces, smooth, cap_p, wire_p, + 1); +} diff --git a/hacks/glx/tube.h b/hacks/glx/tube.h new file mode 100644 index 0000000..e3fff59 --- /dev/null +++ b/hacks/glx/tube.h @@ -0,0 +1,32 @@ +/* tube, Copyright (c) 2001, 2003, 2007 Jamie Zawinski + * Utility functions to create tubes and cones in GL. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifndef __TUBE_H__ +#define __TUBE_H__ + +/* Renders a tube along the line described by the two points. + Returns the number of polygons used. + */ +extern int tube (GLfloat x1, GLfloat y1, GLfloat z1, + GLfloat x2, GLfloat y2, GLfloat z2, + GLfloat diameter, GLfloat cap_size, + int faces, int smooth, int caps_p, int wire_p); + +/* Renders a cone along the line described by the two points. + Returns the number of polygons used. + */ +extern int cone (GLfloat x1, GLfloat y1, GLfloat z1, + GLfloat x2, GLfloat y2, GLfloat z2, + GLfloat diameter, GLfloat cap_size, + int faces, int smooth, int cap_p, int wire_p); + +#endif /* __TUBE_H__ */ diff --git a/hacks/glx/tunnel_draw.c b/hacks/glx/tunnel_draw.c new file mode 100644 index 0000000..8a87c76 --- /dev/null +++ b/hacks/glx/tunnel_draw.c @@ -0,0 +1,512 @@ +/* -*- Mode: C; tab-width: 4 -*- */ +/* atunnels --- OpenGL Advanced Tunnel Demo */ + +#if 0 +static const char sccsid[] = "@(#)tunnel_draw.c 5.13 2004/05/25 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 2002-2004. */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Roman Podobedov + * Email: romka@ut.ee + * WEB: http://romka.demonews.com + * + * Eric Lassauge (May-25-2004) + * http://lassauge.free.fr/linux.html + * + * REVISION HISTORY: + * E.Lassauge - 25-May-2004: + * - added more texture + * - random texture init + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef USE_GL /* whole file */ + +#include +#include +#include + +#ifdef STANDALONE +# ifndef HAVE_JWXYZ +# include +# include +# endif +#endif +#ifdef HAVE_ANDROID +#include +#endif + + +#include "tunnel_draw.h" + +#ifdef STANDALONE /* For NRAND() */ +#include "xlockmoreI.h" /* in xscreensaver distribution */ +#else /* STANDALONE */ +#include "xlock.h" /* in xlockmore distribution */ +#endif /* STANDALONE */ + +typedef struct +{ + float x, y, z; /* Point coordinates */ +} cvPoint; + +typedef struct _tnPath +{ + cvPoint p; + struct _tnPath *next; +} tnPath; + + +static const cvPoint initpath[]={ +{0.000000, 0.000000, 0.000000}, +{2.000000, 1.000000, 0.000000}, +{4.000000, 0.000000, 0.000000}, +{6.000000, 1.000000, 0.000000}, +{8.000000, 0.000000, 1.000000}, +{10.000000, 1.000000, 1.000000}, +{12.000000, 1.500000, 0.000000}, +{14.000000, 0.000000, 0.000000}, +{16.000000, 1.000000, 0.000000}, +{18.000000, 0.000000, 0.000000}, +{20.000000, 0.000000, 1.000000}, +{22.000000, 1.000000, 0.000000}, +{24.000000, 0.000000, 1.000000}, +{26.000000, 0.000000, 1.000000}, +{28.000000, 1.000000, 0.000000}, +{30.000000, 0.000000, 2.000000}, +{32.000000, 1.000000, 0.000000}, +{34.000000, 0.000000, 2.000000}, +{-1.000000, -1.000000, -1.000000} +}; + + +struct tunnel_state { + + tnPath *path; + + float cam_t; /* Camera variables */ + tnPath *cam_pos; + float alpha; + + int tFlag; /* Tunnel Drawing Variables */ + cvPoint prev_points[10]; + int current_texture; + + float ModeX; /* Modes */ + int ModeXFlag; +}; + +/*=================== Vector normalization ==================================*/ +static void +normalize(cvPoint *V) +{ + float d; + + /* Vector length */ + d = (float)sqrt(V->x*V->x + V->y*V->y + V->z*V->z); + + /* Normalization */ + V->x /= d; + V->y /= d; + V->z /= d; +} +/*=================== C = A x B (Vector multiply) ==========================*/ +#if 0 +static void +vect_mult(cvPoint *A, cvPoint *B, cvPoint *C) +{ + /* Vector multiply */ + C->x = A->y*B->z - A->z*B->y; + C->y = A->z*B->x - A->x*B->z; + C->z = A->x*B->y - A->y*B->x; +} +#endif + +/* Catmull-Rom Curve calculations */ +static void +cvCatmullRom(cvPoint *p, float t, cvPoint *outp) +{ + float t2, t3, t1; + + t2 = t*t; + t3 = t*t*t; + t1 = (1-t)*(1-t); + + outp->x = (-t*t1*p[0].x + (2-5*t2+3*t3)*p[1].x + t*(1+4*t-3*t2)*p[2].x - t2*(1-t)*p[3].x)/2; + outp->y = (-t*t1*p[0].y + (2-5*t2+3*t3)*p[1].y + t*(1+4*t-3*t2)*p[2].y - t2*(1-t)*p[3].y)/2; + outp->z = (-t*t1*p[0].z + (2-5*t2+3*t3)*p[1].z + t*(1+4*t-3*t2)*p[2].z - t2*(1-t)*p[3].z)/2; +} + +/*=================== Point Rotating Around Line =========================== +// p - original point +// pp - pivot point +// pl - pivot line (vector) +// a - angle to rotate in radians +// outp - output point +//========================================================================== +*/ +static void +RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp) +{ + cvPoint p1, p2; + float l, m, n, ca, sa; + + p1.x = p->x - pp->x; + p1.y = p->y - pp->y; + p1.z = p->z - pp->z; + + l = pl->x; + m = pl->y; + n = pl->z; + + ca = cos(a); + sa = sin(a); + + p2.x = p1.x*((l*l)+ca*(1-l*l)) + p1.y*(l*(1-ca)*m+n*sa) + p1.z*(l*(1-ca)*n-m*sa); + p2.y = p1.x*(l*(1-ca)*m-n*sa) + p1.y*(m*m+ca*(1-m*m)) + p1.z*(m*(1-ca)*n+l*sa); + p2.z = p1.x*(l*(1-ca)*n+m*sa) + p1.y*(m*(1-ca)*n-l*sa) + p1.z*(n*n+ca*(1-n*n)); + + outp->x = p2.x + pp->x; + outp->y = p2.y + pp->y; + outp->z = p2.z + pp->z; +} + + +/*=================== Load camera and tunnel path ==========================*/ +static void +LoadPath(struct tunnel_state *st) +{ + float x, y, z; + tnPath *path1=NULL, *path2=NULL; + + cvPoint *f = (cvPoint *)initpath; + + while (f->x != -1.0) + { + x = f->x; + y = f->y; + z = f->z; + f++; + + if (st->path == NULL) + { + st->path = (tnPath *)malloc(sizeof(tnPath)); + path1 = st->path; + } + else + { + if (!path1) path1 = st->path; + path2 = (tnPath *)malloc(sizeof(tnPath)); + path1->next = path2; + path1 = path2; + } + + path1->next = NULL; + path1->p.x = x; + path1->p.y = y; + path1->p.z = z; + } + + st->cam_pos = st->path; + st->cam_t = 0; +} + +/*=================== Tunnel Initialization ================================*/ +struct tunnel_state * +atunnel_InitTunnel(void) +{ + struct tunnel_state *st = (struct tunnel_state *) calloc (1, sizeof(*st)); + LoadPath(st); + st->current_texture = NRAND(MAX_TEXTURE); + return st; +} + +void +atunnel_DrawTunnel(struct tunnel_state *st, + int do_texture, int do_light, GLuint *textures) +{ + tnPath *p, *p1, *cmpos; + cvPoint op, p4[4], T, ppp, op1, op2; + float t; + int i, j, k, flag; + cvPoint points[10]; + GLfloat light_position[4]; + + + /* Select current tunnel texture */ + if (do_texture) + glBindTexture(GL_TEXTURE_2D, textures[st->current_texture]); + + cmpos = st->cam_pos; + /* Get current curve */ + if (st->cam_pos->next && + st->cam_pos->next->next && + st->cam_pos->next->next->next) + { + p1 = st->cam_pos; + for (i=0; i<4; i++) + { + p4[i].x = p1->p.x; + p4[i].y = p1->p.y; + p4[i].z = p1->p.z; + p1 = p1->next; + } + } + else + { + /* End of tunnel */ + st->ModeX = 1.0; + st->ModeXFlag = 0; + return; + }; + + /* Get current camera position */ + cvCatmullRom(p4, st->cam_t, &op); + + /* Next camera position */ + st->cam_t += 0.02f; + if (st->cam_t >= 1) + { + st->cam_t = st->cam_t - 1; + cmpos = st->cam_pos->next; + } + + /* Get curve for next camera position */ + if (cmpos->next->next->next) + { + p1 = cmpos; + for (i=0; i<4; i++) + { + p4[i].x = p1->p.x; + p4[i].y = p1->p.y; + p4[i].z = p1->p.z; + p1 = p1->next; + } + } + else + { + /* End of tunnel */ + st->ModeX = 1.0; + st->ModeXFlag = 0; + return; + } + + /* Get next camera position */ + cvCatmullRom(p4, st->cam_t, &op1); + + /* Rotate camera */ + glRotatef(st->alpha, 0, 0, -1); + st->alpha += 1; + /* Set camera position */ + gluLookAt(op.x, op.y, op.z, op1.x, op1.y, op1.z, 0, 1, 0); + + /* Set light position */ + if (do_light) + { + light_position[0] = op.x; + light_position[1] = op.y; + light_position[2] = op.z; + light_position[3] = 1; + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + } + + p = st->cam_pos; + flag = 0; + t = 0; + k = 0; + /* Draw tunnel from current curve and next 2 curves */ + glBegin(GL_QUADS); + while (k < 3) + { + if (p->next->next->next) + { + p1 = p; + for (i=0; i<4; i++) + { + p4[i].x = p1->p.x; + p4[i].y = p1->p.y; + p4[i].z = p1->p.z; + p1 = p1->next; + } + } + else + { + /* End of tunnel */ + st->ModeX = 1.0; + st->ModeXFlag = 0; + glEnd(); + return; + } + cvCatmullRom(p4, t, &op); + + ppp.x = op.x; + ppp.y = op.y; + ppp.z = op.z + 0.25; + + t += 0.1; + if (t >= 1.0) + { + t = t - 1; + k++; + p = p->next; + } + + if (p->next->next->next) + { + p1 = p; + for (i=0; i<4; i++) + { + p4[i].x = p1->p.x; + p4[i].y = p1->p.y; + p4[i].z = p1->p.z; + p1 = p1->next; + } + } + else + { + /* End of tunnel */ + st->ModeX = 1.0; + st->ModeXFlag = 0; + glEnd(); + return; + } + + cvCatmullRom(p4, t, &op1); + + T.x = op1.x - op.x; + T.y = op1.y - op.y; + T.z = op1.z - op.z; + + normalize(&T); + + for (i=0; i<10; i++) + { + RotateAroundLine(&ppp, &op, &T, ((float)i*36.0*M_PI/180.0), &op2); + points[i].x = op2.x; + points[i].y = op2.y; + points[i].z = op2.z; + if (!flag) + { + st->prev_points[i].x = op2.x; + st->prev_points[i].y = op2.y; + st->prev_points[i].z = op2.z; + } + } + + if (!flag) + { + flag = 1; + continue; + } + + /* Draw 10 polygons for current point */ + for (i=0; i<10; i++) + { + j = i+1; + if (j > 9) j = 0; + glNormal3f(0, 0, 1); /* Normal for lighting */ + glTexCoord2f(0, 0); glVertex3f(st->prev_points[i].x, st->prev_points[i].y, st->prev_points[i].z); + glNormal3f(0, 0, 1); + glTexCoord2f(1, 0); glVertex3f(points[i].x, points[i].y, points[i].z); + glNormal3f(0, 0, 1); + glTexCoord2f(1, 1); glVertex3f(points[j].x, points[j].y, points[j].z); + glNormal3f(0, 0, 1); + glTexCoord2f(0, 1); glVertex3f(st->prev_points[j].x, st->prev_points[j].y, st->prev_points[j].z); + } + /* Save current polygon coordinates for next position */ + for (i=0; i<10; i++) + { + st->prev_points[i].x = points[i].x; + st->prev_points[i].y = points[i].y; + st->prev_points[i].z = points[i].z; + } + } + glEnd(); + st->cam_pos = cmpos; +} + +/* =================== Show splash screen =================================== */ +void +atunnel_SplashScreen(struct tunnel_state *st, + int do_wire, int do_texture, int do_light) +{ + if (st->ModeX > 0) + { + /* Reset tunnel and camera position */ + if (!st->ModeXFlag) + { + st->cam_pos = st->path; + st->cam_t = 0; + st->tFlag = 0; + st->ModeXFlag = 1; + st->current_texture++; + if (st->current_texture >= MAX_TEXTURE) st->current_texture = 0; + } + /* Now we want to draw splash screen */ + glLoadIdentity(); + /* Disable all unused features */ + glDisable(GL_DEPTH_TEST); + glDisable(GL_LIGHTING); + glDisable(GL_FOG); + glDisable(GL_CULL_FACE); + + glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA); + glEnable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + glColor4f(1, 1, 1, st->ModeX); + + /* Draw splash screen (simply quad) */ + glBegin(GL_QUADS); + glVertex3f(-10, -10, -1); + glVertex3f(10, -10, -1); + glVertex3f(10, 10, -1); + glVertex3f(-10, 10, -1); + glEnd(); + + st->ModeX -= 0.05; + if (st->ModeX <= 0) st->ModeX = 0; + + if (!do_wire) + { + glEnable(GL_CULL_FACE); + glEnable(GL_DEPTH_TEST); + } + if (do_light) + { + glEnable(GL_LIGHTING); + glEnable(GL_FOG); + } + if (do_texture) + { + glEnable(GL_TEXTURE_2D); + } + glDisable(GL_BLEND); + glColor4f(1, 1, 1, 1); + } +} + +void +atunnel_FreeTunnel(struct tunnel_state *st) +{ + free (st); +} + +#endif diff --git a/hacks/glx/tunnel_draw.h b/hacks/glx/tunnel_draw.h new file mode 100644 index 0000000..643b958 --- /dev/null +++ b/hacks/glx/tunnel_draw.h @@ -0,0 +1,11 @@ +#define MAX_TEXTURE 10 + +struct tunnel_state; + +extern struct tunnel_state * atunnel_InitTunnel(void); +extern void atunnel_DrawTunnel(struct tunnel_state *, + int do_texture, int do_light, GLuint *textures); +extern void atunnel_SplashScreen(struct tunnel_state *, + int do_wire, int do_texture, int do_light); +extern void atunnel_FreeTunnel(struct tunnel_state *); + diff --git a/hacks/glx/unicrud.c b/hacks/glx/unicrud.c new file mode 100644 index 0000000..7942252 --- /dev/null +++ b/hacks/glx/unicrud.c @@ -0,0 +1,961 @@ +/* unicrud, Copyright (c) 2016-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + "*titleFont: -*-helvetica-bold-r-normal-*-*-180-*-*-*-*-*-*\n" \ + "*font: -*-helvetica-bold-r-normal-*-*-2400-*-*-*-*-iso10646-1\n" \ + +# define free_unicrud 0 +# define release_unicrud 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "rotator.h" +#include "gltrackball.h" +#include "texfont.h" +#include "utf8wc.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPIN "True" +#define DEF_WANDER "True" +#define DEF_SPEED "1.0" +#define DEF_BLOCK "ALL" +#define DEF_TITLES "True" + +typedef struct { + GLXContext *glx_context; + rotator *rot; + trackball_state *trackball; + Bool button_down_p; + + GLfloat color[4]; + texture_font_data *title_font, *char_font; + unsigned long unichar; + const char *charplane, *charblock, *charname; + enum { IN, LINGER, OUT } state; + int spin_direction; + GLfloat ratio; + +} unicrud_configuration; + +static unicrud_configuration *bps = NULL; + +static Bool do_spin; +static GLfloat speed; +static Bool do_wander; +static char *do_block = 0; +static Bool do_titles; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionNoArg, "True" }, + { "+spin", ".spin", XrmoptionNoArg, "False" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-block", ".block", XrmoptionSepArg, 0 }, + { "-titles", ".titles", XrmoptionNoArg, "True" }, + { "+titles", ".titles", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool}, + {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&do_block, "block", "Block", DEF_BLOCK, t_String}, + {&do_titles, "titles", "Titles", DEF_TITLES, t_Bool}, +}; + +ENTRYPOINT ModeSpecOpt unicrud_opts = {countof(opts), opts, countof(vars), vars, NULL}; + +static const struct { + unsigned long start; + const char * const name; +} unicode_block_names[] = { + + /* Through Unicode 8.0, early 2016. */ + + { 0x0000, "*Basic Multilingual" }, + { 0x0000, "Unassigned" }, + { 0x0021, "ASCII" }, + { 0x0080, "Unassigned" }, + { 0x00A1, "Latin1" }, + { 0x0100, "Latin Extended-A" }, + { 0x0180, "Latin Extended-B" }, + { 0x0250, "IPA Extensions" }, + { 0x02B0, "Spacing Modifier Letters" }, + { 0x0300, "Combining Diacritical Marks" }, + { 0x0370, "Greek and Coptic" }, + { 0x0400, "Cyrillic" }, + { 0x0500, "Cyrillic Supplement" }, + { 0x0530, "Armenian" }, + { 0x058B, "Unassigned" }, + { 0x0590, "Hebrew" }, + { 0x05F5, "Unassigned" }, + { 0x0600, "Arabic" }, + { 0x0700, "Syriac" }, + { 0x0750, "Arabic Supplement" }, + { 0x0780, "Thaana" }, + { 0x07C0, "N'Ko" }, + { 0x0800, "Samaritan" }, + { 0x0840, "Mandaic" }, + { 0x0860, "Unassigned" }, + { 0x08A0, "Arabic Extended-A" }, + { 0x0900, "Devanagari" }, + { 0x0980, "Bengali" }, + { 0x09FC, "Unassigned" }, + { 0x0A00, "Gurmukhi" }, + { 0x0A76, "Unassigned" }, + { 0x0A80, "Gujarati" }, + { 0x0AF2, "Unassigned" }, + { 0x0B00, "Oriya" }, + { 0x0B80, "Tamil" }, + { 0x0BFB, "Unassigned" }, + { 0x0C00, "Telugu" }, + { 0x0C80, "Kannada" }, + { 0x0CF0, "Unassigned" }, + { 0x0D00, "Malayalam" }, + { 0x0D80, "Sinhala" }, + { 0x0DF5, "Unassigned" }, + { 0x0E00, "Thai" }, + { 0x0E5C, "Unassigned" }, + { 0x0E80, "Lao" }, + { 0x0EE0, "Unassigned" }, + { 0x0F00, "Tibetan" }, + { 0x0FDB, "Unassigned" }, + { 0x1000, "Myanmar" }, + { 0x10A0, "Georgian" }, + { 0x1100, "Hangul Jamo" }, + { 0x1200, "Ethiopic" }, + { 0x1380, "Ethiopic Supplement" }, + { 0x13A0, "Cherokee" }, + { 0x1400, "Unified Canadian Aboriginal Syllabics" }, + { 0x1677, "Unassigned" }, + { 0x1680, "Ogham" }, + { 0x16A0, "Runic" }, + { 0x16F1, "Unassigned" }, + { 0x1700, "Tagalog" }, + { 0x1715, "Unassigned" }, + { 0x1720, "Hanunoo" }, + { 0x1737, "Unassigned" }, + { 0x1740, "Buhid" }, + { 0x1754, "Unassigned" }, + { 0x1760, "Tagbanwa" }, + { 0x1774, "Unassigned" }, + { 0x1780, "Khmer" }, + { 0x17FA, "Unassigned" }, + { 0x1800, "Mongolian" }, + { 0x18AB, "Unassigned" }, + { 0x18B0, "Unified Canadian Aboriginal Syllabics Extended" }, + { 0x18F6, "Unassigned" }, + { 0x1900, "Limbu" }, + { 0x1950, "Tai Le" }, + { 0x1975, "Unassigned" }, + { 0x1980, "Tai Lue" }, + { 0x19E0, "Khmer Symbols" }, + { 0x1A00, "Buginese" }, + { 0x1A20, "Tai Tham" }, + { 0x1AAE, "Unassigned" }, + { 0x1AB0, "Combining Diacritical Marks Extended" }, + { 0x1ABF, "Unassigned" }, + { 0x1B00, "Balinese" }, + { 0x1B80, "Sundanese" }, + { 0x1BC0, "Batak" }, + { 0x1C00, "Lepcha" }, + { 0x1C50, "Ol Chiki" }, + { 0x1C80, "Unassigned" }, + { 0x1CC0, "Sundanese Supplement" }, + { 0x1CC8, "Unassigned" }, + { 0x1CD0, "Vedic Extensions" }, + { 0x1CFA, "Unassigned" }, + { 0x1D00, "Phonetic Extensions" }, + { 0x1D80, "Phonetic Extensions Supplement" }, + { 0x1DC0, "Combining Diacritical Marks Supplement" }, + { 0x1E00, "Latin Extended Additional" }, + { 0x1F00, "Greek Extended" }, + { 0x2000, "General Punctuation" }, + { 0x2070, "Superscripts and Subscripts" }, + { 0x2095, "Unassigned" }, + { 0x20A0, "Currency Symbols" }, + { 0x20BE, "Unassigned" }, + { 0x20D0, "Combining Diacritical Marks for Symbols" }, + { 0x20F1, "Unassigned" }, + { 0x2100, "Letterlike Symbols" }, + { 0x2150, "Number Forms" }, + { 0x2190, "Arrows" }, + { 0x2200, "Mathematical Operators" }, + { 0x2300, "Miscellaneous Technical" }, + { 0x2400, "Control Pictures" }, + { 0x2437, "Unassigned" }, + { 0x2440, "Optical Character Recognition" }, + { 0x244B, "Unassigned" }, + { 0x2460, "Enclosed Alphanumerics" }, + { 0x2500, "Box Drawing" }, + { 0x2580, "Block Elements" }, + { 0x25A0, "Geometric Shapes" }, + { 0x2600, "Miscellaneous Symbols" }, + { 0x2700, "Dingbats" }, + { 0x27C0, "Miscellaneous Mathematical Symbols-A" }, + { 0x27F0, "Supplemental Arrows-A" }, + { 0x2800, "Braille Patterns" }, + { 0x2900, "Supplemental Arrows-B" }, + { 0x2980, "Miscellaneous Mathematical Symbols-B" }, + { 0x2A00, "Supplemental Mathematical Operators" }, + { 0x2B00, "Miscellaneous Symbols and Arrows" }, + { 0x2B56, "Unassigned" }, /* Unicode 5.1 */ + { 0x2BF0, "Unassigned" }, + { 0x2C00, "Glagolitic" }, + { 0x2C60, "Latin Extended-C" }, + { 0x2C80, "Coptic" }, + { 0x2D00, "Georgian Supplement" }, + { 0x2D26, "Unassigned" }, + { 0x2D30, "Tifinagh" }, + { 0x2D80, "Ethiopic Extended" }, + { 0x2DE0, "Cyrillic Extended-A" }, + { 0x2E00, "Supplemental Punctuation" }, + { 0x2E43, "Unassigned" }, + { 0x2E80, "CJK Radicals Supplement" }, + { 0x2EF5, "Unassigned" }, + { 0x2F00, "Kangxi Radicals" }, + { 0x2FD6, "Unassigned" }, + { 0x2FE0, "Unassigned" }, + { 0x2FF0, "Ideographic Description Characters" }, + { 0x2FFC, "Unassigned" }, + { 0x3000, "CJK Symbols and Punctuation" }, + { 0x3040, "Hiragana" }, + { 0x30A0, "Katakana" }, + { 0x3100, "Bopomofo" }, + { 0x3130, "Hangul Compatibility Jamo" }, + { 0x3190, "Kanbun" }, + { 0x31A0, "Bopomofo Extended" }, + { 0x31BB, "Unassigned" }, + { 0x31C0, "CJK Strokes" }, + { 0x31E4, "Unassigned" }, + { 0x31F0, "Katakana Phonetic Extensions" }, + { 0x3200, "Enclosed CJK Letters and Months" }, + { 0x3300, "CJK Compatibility" }, + { 0x3400, "CJK Unified Ideographs Extension A" }, + { 0x4DB6, "Unassigned" }, + { 0x4DC0, "Yijing Hexagram Symbols" }, + { 0x4E00, "CJK Unified Ideographs" }, + { 0x9FD6, "Unassigned" }, + { 0xA000, "Yi Syllables" }, + { 0xA48D, "Unassigned" }, + { 0xA490, "Yi Radicals" }, + { 0xA4C7, "Unassigned" }, + { 0xA4D0, "Lisu" }, + { 0xA500, "Vai" }, + { 0xA62C, "Unassigned" }, + { 0xA640, "Cyrillic Extended-B" }, + { 0xA6A0, "Bamum" }, + { 0xA700, "Modifier Tone Letters" }, + { 0xA720, "Latin Extended-D" }, + { 0xA800, "Syloti Nagri" }, + { 0xA82C, "Unassigned" }, + { 0xA830, "Common Indic Number Forms" }, + { 0xA83A, "Unassigned" }, + { 0xA840, "Phags-pa" }, + { 0xA878, "Unassigned" }, + { 0xA880, "Saurashtra" }, + { 0xA8DA, "Unassigned" }, + { 0xA8E0, "Devanagari Extended" }, + { 0xA8FE, "Unassigned" }, + { 0xA900, "Kayah Li" }, + { 0xA930, "Rejang" }, + { 0xA960, "Hangul Jamo Extended-A" }, + { 0xA97D, "Unassigned" }, + { 0xA980, "Javanese" }, + { 0xA9E0, "Myanmar Extended-B" }, + { 0xAA00, "Cham" }, + { 0xAA60, "Myanmar Extended-A" }, + { 0xAA80, "Tai Viet" }, + { 0xAAE0, "Meetei Mayek Extensions" }, + { 0xAB00, "Ethiopic Extended-A" }, + { 0xAB30, "Latin Extended-E" }, + { 0xAB66, "Unassigned" }, + { 0xAB70, "Cherokee Supplement" }, + { 0xABC0, "Meetei Mayek" }, + { 0xABFA, "Unassigned" }, + { 0xAC00, "Hangul Syllables" }, + { 0xD7B0, "Hangul Jamo Extended-B" }, + { 0xD7FC, "Unassigned" }, +/*{ 0xD800, "High Surrogates" }, */ /* UTF-16 compatibility */ +/*{ 0xDC00, "Low Surrogates" }, */ /* UTF-16 compatibility */ + { 0xE000, "Private Use Area" }, + { 0xF900, "CJK Compatibility Ideographs" }, + { 0xFAEA, "Unassigned" }, + { 0xFB00, "Alphabetic Presentation Forms" }, + { 0xFB50, "Arabic Presentation Forms-A" }, + { 0xFE00, "Variation Selectors" }, + { 0xFE10, "Vertical Forms" }, + { 0xFE1A, "Unassigned" }, + { 0xFE20, "Combining Half Marks" }, + { 0xFE30, "CJK Compatibility Forms" }, + { 0xFE50, "Small Form Variants" }, + { 0xFE6C, "Unassigned" }, + { 0xFE70, "Arabic Presentation Forms-B" }, + { 0xFF00, "Halfwidth and Fullwidth Forms" }, + { 0xFFF0, "Unassigned" }, + { 0xFFF9, "Specials" }, + { 0xFFFE, "Unassigned" }, + + { 0x10000, "*Supplementary Multilingual" }, + { 0x10000, "Linear B Syllabary" }, + { 0x1007E, "Unassigned" }, + { 0x10080, "Linear B Ideograms" }, + { 0x100FB, "Unassigned" }, + { 0x10100, "Aegean Numbers" }, + { 0x10140, "Ancient Greek Numbers" }, + { 0x1018D, "Unassigned" }, + { 0x10190, "Ancient Symbols" }, + { 0x1019C, "Unassigned" }, + { 0x101D0, "Phaistos Disc" }, + { 0x10200, "Unassigned" }, + { 0x10280, "Lycian" }, + { 0x1029D, "Unassigned" }, + { 0x102A0, "Carian" }, + { 0x102D1, "Unassigned" }, + { 0x102E0, "Coptic Epact Numbers" }, + { 0x102FC, "Unassigned" }, + { 0x10300, "Old Italic" }, + { 0x10324, "Unassigned" }, + { 0x10330, "Gothic" }, + { 0x1034B, "Unassigned" }, + { 0x10350, "Old Permic" }, + { 0x10380, "Ugaritic" }, + { 0x103A0, "Old Persian" }, + { 0x103D6, "Unassigned" }, + { 0x103E0, "Unassigned" }, + { 0x10400, "Deseret" }, + { 0x10450, "Shavian" }, + { 0x10480, "Osmanya" }, + { 0x104AA, "Unassigned" }, + { 0x104B0, "Unassigned" }, + { 0x10500, "Elbasan" }, + { 0x10528, "Unassigned" }, + { 0x10530, "Caucasian Albanian" }, + { 0x10570, "Unassigned" }, + { 0x10600, "Linear A" }, + { 0x10768, "Unassigned" }, + { 0x10780, "Unassigned" }, + { 0x10800, "Cypriot Syllabary" }, + { 0x10840, "Imperial Aramaic" }, + { 0x10860, "Palmyrene" }, + { 0x10880, "Nabataean" }, + { 0x108B0, "Unassigned" }, + { 0x108E0, "Hatran" }, + { 0x10900, "Phoenician" }, + { 0x10920, "Lydian" }, + { 0x10940, "Unassigned" }, + { 0x10980, "Meroitic Hieroglyphs" }, + { 0x109A0, "Meroitic Cursive" }, + { 0x10A00, "Kharoshthi" }, + { 0x10A59, "Unassigned" }, + { 0x10A60, "Old South Arabian" }, + { 0x10A80, "Old North Arabian" }, + { 0x10AA0, "Unassigned" }, + { 0x10AC0, "Manichaean" }, + { 0x10AF7, "Unassigned" }, + { 0x10B00, "Avestan" }, + { 0x10B40, "Inscriptional Parthian" }, + { 0x10B60, "Inscriptional Pahlavi" }, + { 0x10B80, "Psalter Pahlavi" }, + { 0x10BB0, "Unassigned" }, + { 0x10C00, "Old Turkic" }, + { 0x10C49, "Unassigned" }, + { 0x10C50, "Unassigned" }, + { 0x10C80, "Old Hungarian" }, + { 0x10D00, "Unassigned" }, + { 0x10E60, "Rumi Numeral Symbols" }, + { 0x10E80, "Unassigned" }, + { 0x11000, "Brahmi" }, + { 0x11070, "Unassigned" }, + { 0x11080, "Kaithi" }, + { 0x110C2, "Unassigned" }, + { 0x110D0, "Sora Sompeng" }, + { 0x110FA, "Unassigned" }, + { 0x11100, "Chakma" }, + { 0x11144, "Unassigned" }, + { 0x11150, "Mahajani" }, + { 0x11177, "Unassigned" }, + { 0x11180, "Sharada" }, + { 0x111E0, "Sinhala Archaic Numbers" }, + { 0x111F5, "Unassigned" }, + { 0x11200, "Khojki" }, + { 0x1123E, "Unassigned" }, + { 0x11250, "Unassigned" }, + { 0x11280, "Multani" }, + { 0x112AA, "Unassigned" }, + { 0x112B0, "Khudawadi" }, + { 0x112FA, "Unassigned" }, + { 0x11300, "Grantha" }, + { 0x11375, "Unassigned" }, + { 0x11380, "Unassigned" }, + { 0x11480, "Tirhuta" }, + { 0x114DA, "Unassigned" }, + { 0x114E0, "Unassigned" }, + { 0x11580, "Siddham" }, + { 0x115DE, "Unassigned" }, + { 0x11600, "Modi" }, + { 0x1165A, "Unassigned" }, + { 0x11660, "Unassigned" }, + { 0x11680, "Takri" }, + { 0x116CA, "Unassigned" }, + { 0x116D0, "Unassigned" }, + { 0x11700, "Ahom" }, + { 0x11740, "Unassigned" }, + { 0x118A0, "Warang Citi" }, + { 0x11900, "Unassigned" }, + { 0x11AC0, "Pau Cin Hau" }, + { 0x11AF9, "Unassigned" }, + { 0x11B00, "Unassigned" }, + { 0x12000, "Cuneiform" }, + { 0x1239A, "Unassigned" }, + { 0x12400, "Cuneiform Numbers and Punctuation" }, + { 0x12475, "Unassigned" }, + { 0x12480, "Early Dynastic Cuneiform" }, + { 0x12544, "Unassigned" }, + { 0x12550, "Unassigned" }, + { 0x13000, "Egyptian Hieroglyphs" }, + { 0x13430, "Unassigned" }, + { 0x14400, "Anatolian Hieroglyphs" }, + { 0x14647, "Unassigned" }, + { 0x14680, "Unassigned" }, + { 0x16800, "Bamum Supplement" }, + { 0x16A39, "Unassigned" }, + { 0x16A40, "Mro" }, + { 0x16A70, "Unassigned" }, + { 0x16AD0, "Bassa Vah" }, + { 0x16AF6, "Unassigned" }, + { 0x16B00, "Pahawh Hmong" }, + { 0x16B90, "Unassigned" }, + { 0x16F00, "Miao" }, + { 0x16FA0, "Unassigned" }, + { 0x1B000, "Kana Supplement" }, + { 0x1B002, "Unassigned" }, + { 0x1B100, "Unassigned" }, + { 0x1BC00, "Duployan Shorthand" }, + { 0x1BCA4, "Unassigned" }, + { 0x1BCB0, "Unassigned" }, + { 0x1D000, "Byzantine Musical Symbols" }, + { 0x1D0F5, "Unassigned" }, + { 0x1D100, "Musical Symbols" }, + { 0x1D1E9, "Unassigned" }, + { 0x1D200, "Ancient Greek Musical Notation" }, + { 0x1D246, "Unassigned" }, + { 0x1D250, "Unassigned" }, + { 0x1D300, "Tai Xuan Jing Symbols" }, + { 0x1D357, "Unassigned" }, + { 0x1D360, "Counting Rod Numerals" }, + { 0x1D372, "Unassigned" }, + { 0x1D380, "Unassigned" }, + { 0x1D400, "Mathematical Alphanumeric Symbols" }, + { 0x1D800, "Sutton SignWriting" }, + { 0x1DAB0, "Unassigned" }, + { 0x1E800, "Mende Kikakui" }, + { 0X1E8D7, "Unassigned" }, + { 0x1E8E0, "Unassigned" }, + { 0x1EE00, "Arabic Mathematical Alphabetic Symbols" }, + { 0X1EEFC, "Unassigned" }, + { 0x1EF00, "Unassigned" }, + { 0x1F000, "Mahjong Tiles" }, + { 0x1F02C, "Unassigned" }, + { 0x1F030, "Domino Tiles" }, + { 0x1F094, "Unassigned" }, + { 0x1F0A0, "Playing Cards" }, + { 0x1F0F6, "Unassigned" }, + { 0x1F100, "Enclosed Alphanumeric Supplement" }, + { 0x1F19B, "Unassigned" }, + { 0x1F1E6, "Enclosed Alphanumeric Supplement" }, + { 0x1F200, "Enclosed Ideographic Supplement" }, + { 0x1F252, "Unassigned" }, + { 0x1F300, "Miscellaneous Symbols and Pictographs" }, + { 0x1F600, "Emoticons" }, + { 0x1F650, "Ornamental Dingbats" }, + { 0x1F680, "Transport and Map Symbols" }, + { 0x1F6F4, "Unassigned" }, + { 0x1F700, "Alchemical Symbols" }, + { 0x1F774, "Unassigned" }, + { 0x1F780, "Geometric Shapes Extended" }, + { 0x1F7D5, "Unassigned" }, + { 0x1F800, "Supplemental Arrows-C" }, + { 0x1F8AD, "Unassigned" }, + { 0x1F910, "Supplemental Symbols and Pictographs" }, + { 0x1F9C1, "Unassigned" }, + { 0x1FA00, "Unassigned" }, + + { 0x20000, "*Supplementary Ideographic" }, + { 0x20000, "CJK Unified Ideographs Extension B" }, + { 0x2A6D7, "Unassigned" }, + { 0x2A6E0, "Unassigned" }, + { 0x2A700, "CJK Unified Ideographs Extension C" }, + { 0x2B740, "Unassigned" }, + { 0x2B740, "CJK Unified Ideographs Extension D" }, + { 0x2B820, "Unassigned" }, + { 0x2B820, "CJK Unified Ideographs Extension E" }, + { 0x2CEA2, "Unassigned" }, + { 0x2CEB0, "Unassigned" }, + { 0x2F800, "CJK Compatibility Ideographs Supplement" }, + { 0x2FA20, "Unassigned" }, + + { 0x30000, "*Unassigned Plane 3" }, + { 0x40000, "*Unassigned Plane 4" }, + { 0x50000, "*Unassigned Plane 5" }, + { 0x60000, "*Unassigned Plane 6" }, + { 0x70000, "*Unassigned Plane 7" }, + { 0x80000, "*Unassigned Plane 8" }, + { 0x90000, "*Unassigned Plane 9" }, + { 0xA0000, "*Unassigned Plane 10" }, + { 0xB0000, "*Unassigned Plane 11" }, + { 0xC0000, "*Unassigned Plane 12" }, + { 0xD0000, "*Unassigned Plane 13" }, + + { 0xE0000, "*Supplementary Special-Purpose" }, + { 0xE0080, "Unassigned" }, + { 0xE0020, "Tags" }, + { 0xE0080, "Unassigned" }, + { 0xE0100, "Variation Selectors Supplement" }, + { 0xE01F0, "Unassigned" }, + + { 0xF0000, "*Supplementary Private Use Area A" }, + { 0x100000, "*Supplementary Private Use Area B" }, +}; + + +static char * +strip (char *s) +{ + unsigned long L; + while (*s == ' ' || *s == '\t' || *s == '\n') + s++; + L = strlen (s); + while (s[L-1] == ' ' || s[L-1] == '\t' || s[L-1] == '\n') + s[--L] = 0; + return s; +} + + +/* matches ("AA, BB, CC", "CC") => True + matches ("AA, BB, CC", "CCx") => False + */ +static Bool +matches (const char *pattern, const char *string) +{ + char *token = strdup (pattern ? pattern : ""); + char *otoken = token; + char *name; + Bool match = False; + while ((name = strtok (token, ","))) { + token = 0; + name = strip (name); + if (*name && !strcasecmp (name, string)) + { + match = True; + break; + } + } + + free (otoken); + return match; +} + + +static void +pick_unichar (ModeInfo *mi) +{ + unicrud_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + unsigned long min = 0; + unsigned long max = 0x2F800; + unsigned long last = 0; + int retries = 0; + + AGAIN: + bp->unichar = min + (random() % (max - min)); + + if (++retries > 0xF0000 / 2) + { + fprintf (stderr, "%s: internal error: too many retries\n", progname); + exit (1); + } + + /* bp->unichar = 0x1F4A9; */ + + last = 0; + bp->charplane = "Unassigned"; + bp->charblock = "Unassigned"; + for (i = 0; i < countof(unicode_block_names); i++) + { + if (unicode_block_names[i].start < last) + { + fprintf (stderr, "%s: progname: internal error: misordered: 0x%lX\n", + progname, unicode_block_names[i].start); + exit (1); + } + last = unicode_block_names[i].start; + if (bp->unichar >= unicode_block_names[i].start) + { + if (unicode_block_names[i].name[0] == '*') + { + bp->charplane = unicode_block_names[i].name + 1; + bp->charblock = "Unassigned"; + } + else + bp->charblock = unicode_block_names[i].name; + } + else + break; + } + + if (!strncmp (bp->charblock, "Unassigned", 10) || + !strncmp (bp->charblock, "Combining", 9)) + goto AGAIN; + + if (*do_block && !matches (do_block, bp->charblock)) + goto AGAIN; + + /* Skip blank characters */ + { + XCharStruct e; + char text[10]; + i = utf8_encode (bp->unichar, text, sizeof(text) - 1); + text[i] = 0; + texture_string_metrics (bp->char_font, text, &e, 0, 0); + if (e.width < 2 || e.ascent + e.descent < 2) + goto AGAIN; + } + +# ifdef HAVE_JWXYZ + bp->charname = texfont_unicode_character_name (bp->char_font, bp->unichar); +# endif + + bp->color[0] = 0.5 + frand(0.5); + bp->color[1] = 0.5 + frand(0.5); + bp->color[2] = 0.5 + frand(0.5); + bp->color[3] = 1; +} + + +static void +draw_unichar (ModeInfo *mi) +{ + unicrud_configuration *bp = &bps[MI_SCREEN(mi)]; + + char text[10]; + char title[400]; + XCharStruct e; + int w, h, i, j; + GLfloat s; + + i = utf8_encode (bp->unichar, text, sizeof(text) - 1); + text[i] = 0; + + *title = 0; + sprintf (title + strlen(title), "Plane:\t%s\n", bp->charplane); + sprintf (title + strlen(title), "Block:\t%s\n", bp->charblock); +# ifdef HAVE_JWXYZ + sprintf (title + strlen(title), "Name:\t%s\n", + (bp->charname ? bp->charname : "")); +#endif + sprintf (title + strlen(title), "Unicode:\t%04lX\n", bp->unichar); + sprintf (title + strlen(title), "UTF-8:\t"); + for (j = 0; j < i; j++) + sprintf (title + strlen(title), "%02X ", ((unsigned char *)text)[j]); + + texture_string_metrics (bp->char_font, text, &e, 0, 0); + w = e.width; + h = e.ascent; + + s = 9; + glScalef (s, s, s); + + s = 1.0 / (h > w ? h : w); /* Scale to unit */ + glScalef (s, s, s); + + glTranslatef (-w/2, -h/2, 0); + glColor4fv (bp->color); + print_texture_string (bp->char_font, text); + + glColor3f (1, 1, 0); + if (do_titles) + print_texture_label (mi->dpy, bp->title_font, + mi->xgwa.width, mi->xgwa.height, + 1, title); +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_unicrud (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +unicrud_handle_event (ModeInfo *mi, XEvent *event) +{ + unicrud_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t' || c == '\r' || c == '\n') + { + if (bp->state == LINGER) bp->ratio = 1; + return True; + } + } + + return False; +} + + +ENTRYPOINT void +init_unicrud (ModeInfo *mi) +{ + unicrud_configuration *bp; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_unicrud (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + { + double spin_speed = 0.05; + double wander_speed = 0.01; + double spin_accel = 1.0; + + bp->rot = make_rotator (do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + do_spin ? spin_speed : 0, + spin_accel, + do_wander ? wander_speed : 0, + False); + bp->trackball = gltrackball_init (True); + } + + bp->title_font = load_texture_font (mi->dpy, "titleFont"); + bp->char_font = load_texture_font (mi->dpy, "font"); + bp->state = IN; + bp->ratio = 0; + bp->spin_direction = (random() & 1) ? 1 : -1; + + + + if (matches ("all", do_block)) + do_block = strdup(""); + + { + char *s; + for (s = do_block; *s; s++) + if (*s == '_') *s = ' '; + } + + if (matches ("help", do_block)) + { + int i; + fprintf (stderr, + "%s: --blocks must contain one or more of these," + " separated by commas:\n\n", progname); + for (i = 0; i < countof(unicode_block_names); i++) + { + const char *n = unicode_block_names[i].name; + if (*n == '*') + continue; + if (!strncmp (n, "Unassigned", 10) || + !strncmp (n, "Combining", 9)) + continue; + fprintf (stderr, "\t%s\n", n); + } + fprintf (stderr, "\n"); + exit (1); + } + + + /* Make sure all elements in --block are valid. + */ + if (*do_block) + { + char *token = strdup (do_block ? do_block : ""); + char *otoken = token; + char *name; + while ((name = strtok (token, ","))) { + token = 0; + name = strip (name); + if (*name) + { + Bool match = False; + int i; + for (i = 0; i < countof(unicode_block_names); i++) + { + const char *n = unicode_block_names[i].name; + if (*n == '*') + continue; + if (!strncmp (n, "Unassigned", 10) || + !strncmp (n, "Combining", 9)) + continue; + if (!strcasecmp (name, n)) + { + match = True; + break; + } + } + if (! match) + { + fprintf (stderr, "%s: unknown block name: \"%s\"\n", + progname, name); + fprintf (stderr, "%s: use '--block help' for a list\n", + progname); + exit (1); + } + } + } + free (otoken); + } + + pick_unichar (mi); +} + + +ENTRYPOINT void +draw_unicrud (ModeInfo *mi) +{ + unicrud_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glShadeModel (GL_FLAT); + glEnable (GL_NORMALIZE); + glDisable (GL_CULL_FACE); + glDisable (GL_LIGHTING); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (! bp->button_down_p) + switch (bp->state) { + case IN: bp->ratio += speed * 0.05; break; + case OUT: bp->ratio += speed * 0.05; break; + case LINGER: bp->ratio += speed * 0.005; break; + default: abort(); + } + + if (bp->ratio > 1.0) + { + bp->ratio = 0; + switch (bp->state) { + case IN: + bp->state = LINGER; + break; + case LINGER: + bp->state = OUT; + bp->spin_direction = (random() & 1) ? 1 : -1; + break; + case OUT: + bp->state = IN; + pick_unichar(mi); + break; + default: abort(); + } + } + + glPushMatrix (); + + { + double x, y, z; + get_position (bp->rot, &x, &y, &z, !bp->button_down_p); + glTranslatef((x - 0.5) * 6, + (y - 0.5) * 6, + (z - 0.5) * 6); + + gltrackball_rotate (bp->trackball); + + get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); + x = y = 0; + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } + +# define SINOID(N) (sin(M_PI - (N) / 2 * M_PI)) + { + GLfloat s; + switch (bp->state) { + case IN: s = SINOID (bp->ratio); break; + case OUT: s = SINOID (1-bp->ratio); break; + default: s = 1; break; + } + glScalef (s, s, s); + glRotatef (360 * s * bp->spin_direction * (bp->state == IN ? -1 : 1), + 0, 0, 1); + } + + draw_unichar (mi); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("Unicrud", unicrud, unicrud) + +#endif /* USE_GL */ diff --git a/hacks/glx/unicrud.man b/hacks/glx/unicrud.man new file mode 100644 index 0000000..694ea06 --- /dev/null +++ b/hacks/glx/unicrud.man @@ -0,0 +1,74 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +unicrud - Bounces a random Unicode character on the screen. +.SH SYNOPSIS +.B unicrud +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-block \fIstring\fP] +[\-no-titles] +[\-no-wander] +[\-no-roll] +[\-fps] +.SH DESCRIPTION +Chooses a random Unicode character and displays it full screen, along with +some information about it. https://en.wikipedia.org/wiki/Unicode +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-titles | \-no-titles +Whether to describe the character being shown. Default true. +.TP 8 +.B \-wander | \-no-wander +Whether the object should wander around the screen. +.TP 8 +.B \-roll | \-no-roll +Whether the object should rotate. Boolean. +.TP 8 +.B \-block \fIstring\fP +Which block or blocks of Unicode characters to display. Default: "all". +Use \fI\-block help\fP to see the full list. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/unknownpleasures.c b/hacks/glx/unknownpleasures.c new file mode 100644 index 0000000..9802566 --- /dev/null +++ b/hacks/glx/unknownpleasures.c @@ -0,0 +1,486 @@ +/* unknownpleasures, Copyright (c) 2013-2014 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Translated from Mathematica code by Archery: + * http://intothecontinuum.tumblr.com/post/27443100682/in-july-1967-astronomers-at-the-cavendish + * + * Interestingly, the original image is copyright-free: + * http://adamcap.com/2011/05/19/history-of-joy-division-unknown-pleasures-album-art/ + * https://en.wikipedia.org/wiki/Unknown_Pleasures + * + * TODO: + * + * - Performance is not great. Spending half our time in compute_line() + * and half our time in glEnd(). It's a vast number of cos/pow calls, + * and a vast number of polygons. I'm not sure how much could be cached. + * + * - There's too low periodicity vertically on the screen. + * + * - There's too low periodicity in time. + * + * - Could take advantage of time periodicity for caching: just save every + * poly for an N second loop. That would be a huge amount of RAM though. + * + * - At low resolutions, GL_POLYGON_OFFSET_FILL seems to work poorly + * and the lines get blocky. + */ + + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 80 \n" \ + "*resolution: 100 \n" \ + "*ortho: True \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*geometry: =800x800" "\n" \ + +# define free_unk 0 +# define release_unk 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include "gltrackball.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_SPEED "1.0" + + +typedef struct { + GLXContext *glx_context; + trackball_state *trackball; + Bool button_down_p; + Bool orthop; + GLfloat resolution; + int count; + GLfloat t; +} unk_configuration; + +static unk_configuration *bps = NULL; + +static GLfloat speed; + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-resolution", ".resolution", XrmoptionSepArg, 0 }, + { "-ortho", ".ortho", XrmoptionNoArg, "True" }, + { "-no-ortho", ".ortho", XrmoptionNoArg, "False" }, +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt unk_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_unk (ModeInfo *mi, int width, int height) +{ + unk_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width*1.5; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); + + if (bp->orthop) + { + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (1.0, 1/h, 690, 710); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0, 0, 700, + 0, 0, 0, + 0, 1, 0); + if (width < height) + glScalef (1/h, 1/h, 1); + glTranslatef (0, -0.5, 0); + } + else + { + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 20.0, 40.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0.0, 0.0, 30.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + if (width < height) + glScalef (1/h, 1/h, 1); + } + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +unk_handle_event (ModeInfo *mi, XEvent *event) +{ + unk_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + (event->xbutton.button == Button4 || + event->xbutton.button == Button5 || + event->xbutton.button == Button6 || + event->xbutton.button == Button7)) + { + int b = event->xbutton.button; + int speed = 1; + if (b == Button6 || b == Button7) + speed *= 3; + if (bp->orthop) + switch (b) { /* swap axes */ + case Button4: b = Button6; break; + case Button5: b = Button7; break; + case Button6: b = Button4; break; + case Button7: b = Button5; break; + } + gltrackball_mousewheel (bp->trackball, b, speed, !!event->xbutton.state); + return True; + } + else if (gltrackball_event_handler (event, bp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event)) + { + bp->orthop = !bp->orthop; + reshape_unk (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + return True; + } + + return False; +} + + + +ENTRYPOINT void +init_unk (ModeInfo *mi) +{ + unk_configuration *bp; + + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + bp->orthop = get_boolean_resource (MI_DISPLAY (mi), "ortho", "Ortho"); + bp->resolution = get_float_resource (MI_DISPLAY (mi), + "resolution", "Resolution"); + if (bp->resolution < 1) bp->resolution = 1; + if (bp->resolution > 300) bp->resolution = 300; + + reshape_unk (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + bp->count = MI_COUNT(mi); + if (bp->count < 1) bp->count = 1; + + bp->trackball = gltrackball_init (False); + + if (MI_COUNT(mi) < 1) MI_COUNT(mi) = 1; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + + + +static double +R (double f) +{ + /* A simple, fast, deterministic PRNG. + ya_rand_init() is too slow for this, and the stream of numbers here + doesn't have to be high quality. + */ +#if 1 + int seed0 = 1613287; + +# else + /* Kluge to let me pick a good seed factor by trial and error... */ + static int seed0 = 0; + static int count = 0; + if (count++ > 150000000) seed0 = 0, count=0; + if (! seed0) + { + seed0 = (random() & 0xFFFFF); + fprintf(stderr, "seed0 = %8x %d\n", seed0, seed0); + } +# endif + + long seed = seed0 * f; + seed = 48271 * (seed % 44488) - 3399 * (seed / 44488); + f = (double) seed / 0x7FFFFFFF; + + return f; +} + + +static void +compute_line (ModeInfo *mi, + int xmin, int xmax, GLfloat xinc, + GLfloat res_scale, + int y, + GLfloat *points) +{ + unk_configuration *bp = &bps[MI_SCREEN(mi)]; + + GLfloat fx; + int lastx = -999999; + + /* Compute the points on the line */ + + for (fx = xmin; fx < xmax; fx += xinc) + { + int x = fx; + int n; + GLfloat hsum = 0, vsum = 0; + + if (x == lastx) continue; + lastx = x; + + for (n = 1; n <= 30; n++) + { + /* This sum affects crinkliness of the lines */ + hsum += (10 * + sin (2 * M_PI + * R (4 * y) + + bp->t + + R (2 * n * y) + * 2 * M_PI) + * exp (-pow ((.3 * (x / res_scale) + 30 + - 1 * 100 * R (2 * n * y)), + 2) + / 20.0)); + } + + for (n = 1; n <= 4; n++) + { + /* This sum affects amplitude of the peaks */ + vsum += (3 * (1 + R (3 * n * y)) + * fabs (sin (bp->t + R (n * y) + * 2 * M_PI)) + * exp (-pow (((x / res_scale) - 1 * 100 * R (n * y)), + 2) + / 20.0)); + } + + /* Scale of this affects amplitude of the flat parts */ + points[x - xmin] = (0.2 * sin (2 * M_PI * R (6 * y) + hsum) + vsum); + } + +} + + +ENTRYPOINT void +draw_unk (ModeInfo *mi) +{ + unk_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); + GLfloat aspect = 1.5; + + GLfloat res_scale = 4; + int xmin = -50 * res_scale; + int xmax = 150 * res_scale; + GLfloat xinc = 100.0 / (bp->resolution / res_scale); + int ymin = 1; + int ytop = MI_COUNT(mi); + int yinc = 1; + int y; + GLfloat *points; + + if (xinc < 0.25) xinc = 0.25; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + mi->polygon_count = 0; + + glShadeModel (GL_FLAT); + glEnable (GL_DEPTH_TEST); + glDisable (GL_CULL_FACE); + + glPushMatrix (); + + glRotatef(current_device_rotation(), 0, 0, 1); + + gltrackball_rotate (bp->trackball); + glScalef (10, 10, 10); + + glRotatef (-45, 1, 0, 0); + glTranslatef (-0.5, -0.5, 0); + if (bp->orthop) + glTranslatef (0, 0.05, 0); + else + glTranslatef (0, 0.15, 0); + + points = (GLfloat *) malloc (sizeof(*points) * (xmax - xmin)); + + if (!bp->button_down_p) + { + double s = 6.3 / 19 / 3; +# if 1 + bp->t -= s * speed; + if (bp->t <= 0) + bp->t = s * 18 * 3; +# else + bp->t += s; +# endif + } + + glLineWidth (2); + + /* Lower the resolution to get a decent frame rate on iPhone 4s */ + if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640) + { + ytop *= 0.6; + xinc *= 3; + } + +# ifdef HAVE_MOBILE + /* Lower it even further for iPhone 3 */ + if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480) + { + ytop *= 0.8; + xinc *= 1.2; + } + + /* Performance just sucks on iPad 3, even with a very high xinc. WTF? */ +/* + if (mi->xgwa.width >= 2048 || mi->xgwa.height >= 2048) + xinc *= 2; +*/ + +# endif /* HAVE_MOBILE */ + + + /* Make the image fill the screen a little more fully */ + if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640) + { + glScalef (1.2, 1.2, 1.2); + glTranslatef (-0.08, 0, 0); + } + + if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480) + glLineWidth (1); + + + if (wire) + xinc *= 1.3; + + /* Draw back mask */ + { + GLfloat s = 0.99; + glDisable (GL_POLYGON_OFFSET_FILL); + glColor3f (0, 0, 0); + glPushMatrix(); + glTranslatef (0, (1-aspect)/2, -0.005); + glScalef (1, aspect, 1); + glTranslatef (0.5, 0.5, 0); + glScalef (s, s, 1); + glBegin (GL_QUADS); + glVertex3f (-0.5, -0.5, 0); + glVertex3f ( 0.5, -0.5, 0); + glVertex3f ( 0.5, 0.5, 0); + glVertex3f (-0.5, 0.5, 0); + glEnd(); + glPopMatrix(); + } + + if (! wire) + { + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_BLEND); + + /* So the masking quads don't interfere with the lines */ + glEnable (GL_POLYGON_OFFSET_FILL); + glPolygonOffset (1.0, 1.0); + } + + for (y = ymin; y <= ytop; y += yinc) + { + /* Compute all the verts on the line */ + compute_line (mi, xmin, xmax, xinc, res_scale, y, points); + + /* Draw the line segments; then draw the black shielding quads. */ + { + GLfloat yy = y / (GLfloat) ytop; + int linesp; + + yy = (yy * aspect) - ((aspect - 1) / 2); + + for (linesp = 0; linesp <= 1; linesp++) + { + GLfloat fx; + int lastx = -999999; + + GLfloat c = (linesp || wire ? 1 : 0); + glColor3f (c, c, c); + + glBegin (linesp + ? GL_LINE_STRIP + : wire ? GL_LINES : GL_QUAD_STRIP); + lastx = -999999; + for (fx = xmin; fx < xmax; fx += xinc) + { + int x = fx; + GLfloat xx = (x - xmin) / (GLfloat) (xmax - xmin); + GLfloat zz = points [x - xmin]; + + if (x == lastx) continue; + lastx = x; + + zz /= 80; + glVertex3f (xx, yy, zz); + if (! linesp) + glVertex3f (xx, yy, 0); + mi->polygon_count++; + } + glEnd (); + } + } + } + + free (points); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("UnknownPleasures", unknownpleasures, unk) + +#endif /* USE_GL */ diff --git a/hacks/glx/unknownpleasures.man b/hacks/glx/unknownpleasures.man new file mode 100644 index 0000000..422c81f --- /dev/null +++ b/hacks/glx/unknownpleasures.man @@ -0,0 +1,74 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +unknownpleasures - an animation of the signal from the pulsar PSR B1919+21. +.SH SYNOPSIS +.B unknownpleasures +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fIpercent\fP] +[\-count \fIinteger\fP] +[\-resolution \fIpercent\fP] +[\-no-ortho] +[\-fps] +.SH DESCRIPTION +PSR B1919+21 (AKA CP 1919) was the first pulsar ever discovered: a spinning +neutron star emitting a periodic lighthouse-like beacon. An illustration of +the signal received from it was published in Scientific American in 1971, +and later in The Cambridge Encyclopedia of Astronomy in 1977, where it was +seen by Stephen Morris, the drummer of Joy Division, and was consequently +appropriated by Peter Saville for the cover of the band's album "Unknown +Pleasures". +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2 for twice as fast, 0.5 for half as fast. +.TP 8 +.B \-count \fInumber\fP +Scanlines (vertical resolution). Default: 80. +.TP 8 +.B \-count \fInumber\fP +Horizontal Resolution, Default: 100%. +.TP 8 +.B \-ortho | \-no-ortho +Whether to use an orthographic projection. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2013 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/vigilance.c b/hacks/glx/vigilance.c new file mode 100644 index 0000000..05e19ed --- /dev/null +++ b/hacks/glx/vigilance.c @@ -0,0 +1,1150 @@ +/* vigilance, Copyright (c) 2017-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Draws surveillance cameras, taking an interest in their surroundings. + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*count: 5 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*bodyColor: #666666" "\n" \ + "*capColor: #FFFFFF" "\n" \ + "*hingeColor: #444444" "\n" \ + "*mountColor: #444444" "\n" \ + "*lensColor: #000000" "\n" \ + "*groundColor: #004400" "\n" \ + +# define free_camera 0 +# define release_camera 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define DEF_SPEED "1.0" +#define DEF_CAMERA_SIZE "1.0" + +#include "xlockmore.h" +#include "gltrackball.h" +#include "ximage-loader.h" +#include "normals.h" + +#include + +#ifdef USE_GL /* whole file */ + +#undef ABS +#define ABS(x) ((x)<0?-(x):(x)) +#undef MAX +#define MAX(A,B) ((A)>(B)?(A):(B)) +#undef MIN +#define MIN(A,B) ((A)<(B)?(A):(B)) +#undef BELLRAND +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + +#include "gllist.h" + +extern const struct gllist + *seccam_body, *seccam_cap, *seccam_hinge, *seccam_pipe, *seccam_lens; +static struct gllist *ground = 0; + +static const struct gllist * const *all_objs[] = { + &seccam_body, &seccam_cap, &seccam_hinge, &seccam_pipe, &seccam_lens, + (const struct gllist * const *) &ground +}; + +#define CAMERA_BODY 0 +#define CAMERA_CAP 1 +#define CAMERA_HINGE 2 +#define CAMERA_MOUNT 3 +#define CAMERA_LENS 4 +#define GROUND 5 + +#define BEAM_ZOFF 0.185 /* distance from origin to lens in model */ + +typedef enum { IDLE, WARM_UP, ZOT, COOL_DOWN } camera_state; + + +typedef struct { + XYZ pos; + GLfloat facing; /* rotation around vertical axis, degrees */ + GLfloat pitch; /* front/back tilt, degrees */ + GLfloat velocity; /* most recent angular velocity, degrees */ + long focus_id; /* pedestrian or camera of interest */ + XYZ focus; /* point of interest */ + camera_state state; + GLfloat tick; +} camera; + +typedef struct pedestrian pedestrian; +struct pedestrian { + long id; + XYZ pos; + GLfloat length; + GLfloat frequency, amplitude; + GLfloat ratio; + GLfloat speed; + pedestrian *next; +}; + +typedef struct { + GLXContext *glx_context; + trackball_state *user_trackball; + Bool button_down_p; + + GLuint *dlists; + GLfloat component_colors[countof(all_objs)][4]; + + int ncameras; + camera *cameras; + pedestrian *pedestrians; +} camera_configuration; + +static camera_configuration *bps = NULL; + +static GLfloat speed_arg; +#ifdef DEBUG +static int debug_p; +#endif + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, +#ifdef DEBUG + {"-debug", ".debug", XrmoptionNoArg, "True" }, + {"+debug", ".debug", XrmoptionNoArg, "False" }, +#endif +}; + +static argtype vars[] = { + {&speed_arg, "speed", "Speed", DEF_SPEED, t_Float}, +#ifdef DEBUG + {&debug_p, "debug", "Debug", "False", t_Bool}, +#endif +}; + +ENTRYPOINT ModeSpecOpt camera_opts = { + countof(opts), opts, countof(vars), vars, NULL}; + + +ENTRYPOINT void +reshape_camera (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (30.0, 1/h, 1.0, 200); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0, 0, 30, + 0, 0, 0, + 0, 1, 0); + +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + + glClear(GL_COLOR_BUFFER_BIT); +} + + +ENTRYPOINT Bool +camera_handle_event (ModeInfo *mi, XEvent *event) +{ + camera_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->user_trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; + else if (event->xany.type == KeyPress) + { + KeySym keysym; + char c = 0; + XLookupString (&event->xkey, &c, 1, &keysym, 0); + if (c == ' ' || c == '\t') + { + int i; + if (bp->cameras[0].state == IDLE && bp->pedestrians) + for (i = 0; i < bp->ncameras; i++) + { + bp->cameras[i].state = WARM_UP; + bp->cameras[i].tick = 1.0; + } + return True; + } + } + + return False; +} + + +static int draw_ground (ModeInfo *, GLfloat color[4]); + +static void +parse_color (ModeInfo *mi, char *key, GLfloat color[4]) +{ + XColor xcolor; + char *string = get_string_resource (mi->dpy, key, "CameraColor"); + if (!XParseColor (mi->dpy, mi->xgwa.colormap, string, &xcolor)) + { + fprintf (stderr, "%s: unparsable color in %s: %s\n", progname, + key, string); + exit (1); + } + + color[0] = xcolor.red / 65536.0; + color[1] = xcolor.green / 65536.0; + color[2] = xcolor.blue / 65536.0; + color[3] = 1; +} + + +ENTRYPOINT void +init_camera (ModeInfo *mi) +{ + camera_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_camera (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (!wire) + { + GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0}; + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } + + bp->user_trackball = gltrackball_init (False); + + bp->dlists = (GLuint *) calloc (countof(all_objs)+1, sizeof(GLuint)); + for (i = 0; i < countof(all_objs); i++) + bp->dlists[i] = glGenLists (1); + + for (i = 0; i < countof(all_objs); i++) + { + const struct gllist *gll = *all_objs[i]; + char *key = 0; + GLfloat spec1[4] = {1.00, 1.00, 1.00, 1.0}; + GLfloat spec2[4] = {0.40, 0.40, 0.70, 1.0}; + GLfloat *spec = spec1; + GLfloat shiny = 20; + + glNewList (bp->dlists[i], GL_COMPILE); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glMatrixMode(GL_MODELVIEW); + + glRotatef (-90, 1, 0, 0); + glRotatef (180, 0, 0, 1); + glScalef (6, 6, 6); + + glBindTexture (GL_TEXTURE_2D, 0); + + switch (i) { + case CAMERA_BODY: key = "bodyColor"; break; + case CAMERA_CAP: key = "capColor"; break; + case CAMERA_HINGE: key = "hingeColor"; break; + case CAMERA_MOUNT: key = "mountColor"; break; + case CAMERA_LENS: key = "lensColor"; spec = spec2; break; + case GROUND: key = "groundColor"; spec = spec2; shiny = 128; break; + default: abort(); break; + } + + parse_color (mi, key, bp->component_colors[i]); + + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + + switch (i) { + case GROUND: + if (! ground) + ground = (struct gllist *) calloc (1, sizeof(*ground)); + ground->points = draw_ground (mi, bp->component_colors[i]); + break; + default: + renderList (gll, wire); + /* glColor3f (1, 1, 1); renderListNormals (gll, 100, True); */ + /* glColor3f (1, 1, 0); renderListNormals (gll, 100, False); */ + break; + } + + glMatrixMode(GL_TEXTURE); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + + glEndList (); + } + + bp->ncameras = MI_COUNT(mi); + if (bp->ncameras <= 0) bp->ncameras = 1; + bp->cameras = (camera *) calloc (bp->ncameras, sizeof (camera)); + + { + GLfloat range = (MI_COUNT(mi) <= 2) ? 4 : 5.5; + GLfloat extent; + GLfloat spacing = range / bp->ncameras; + if (spacing < 0.7) spacing = 0.7; + extent = spacing * (bp->ncameras - 1); + for (i = 0; i < bp->ncameras; i++) + { + camera *c = &bp->cameras[i]; + c->state = IDLE; + c->pos.x = i*spacing - extent/2; + c->pos.z += 0.7; + if (spacing < 1.6) + c->pos.z = (i & 1 ? 1.1 : -0.3); + c->focus.x = c->pos.x; + c->focus.y = c->pos.y + 1; + c->focus.z = c->pos.z + BEAM_ZOFF; + c->pitch = -50; + } + } + + +# ifdef DEBUG + if (!debug_p) +# endif + /* Let's tilt the floor a little. */ + gltrackball_reset (bp->user_trackball, + -0.70 + frand(1.58), + -0.30 + frand(0.40)); +} + + +static XYZ +normalize (XYZ p) +{ + GLfloat d = sqrt(p.x*p.x + p.y*p.y * p.z*p.z); + if (d < 0.0000001) + p.x = p.y = p.z = 0; + else + { + p.x /= d; + p.y /= d; + p.z /= d; + } + + return p; +} + + +static GLfloat +vector_angle (XYZ a, XYZ b) +{ + double La = sqrt (a.x*a.x + a.y*a.y + a.z*a.z); + double Lb = sqrt (b.x*b.x + b.y*b.y + b.z*b.z); + double cc, angle; + + if (La == 0 || Lb == 0) return 0; + if (a.x == b.x && a.y == b.y && a.z == b.z) return 0; + + /* dot product of two vectors is defined as: + La * Lb * cos(angle between vectors) + and is also defined as: + ax*bx + ay*by + az*bz + so: + La * Lb * cos(angle) = ax*bx + ay*by + az*bz + cos(angle) = (ax*bx + ay*by + az*bz) / (La * Lb) + angle = acos ((ax*bx + ay*by + az*bz) / (La * Lb)); + */ + cc = (a.x*b.x + a.y*b.y + a.z*b.z) / (La * Lb); + if (cc > 1) cc = 1; /* avoid fp rounding error (1.000001 => sqrt error) */ + angle = acos (cc); + + return (angle); +} + + +static int +draw_component (ModeInfo *mi, int i, GLfloat color[4]) +{ + camera_configuration *bp = &bps[MI_SCREEN(mi)]; + if (! color) + color = bp->component_colors[i]; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + glCallList (bp->dlists[i]); + return (*all_objs[i])->points / 3; +} + + +static int +draw_double_component (ModeInfo *mi, int i) +{ + int count = draw_component (mi, i, 0); + + glFrontFace(GL_CCW); + glScalef (1, 1, -1); + count += draw_component (mi, i, 0); + glScalef (1, 1, -1); + glFrontFace(GL_CW); + return count; +} + + +static int +draw_ray (ModeInfo *mi, camera *c) +{ + int wire = MI_IS_WIREFRAME(mi); + int count = 0; + GLfloat length = 10000; + GLfloat thickness = 0.08; + int i; + + glPushMatrix(); + glTranslatef (c->pos.x, c->pos.y, c->pos.z + BEAM_ZOFF); + glRotatef (-c->facing, 0, 0, 1); + glRotatef ( c->pitch, 1, 0, 0); + glRotatef (frand(90), 0, 1, 0); + glScalef (thickness, length, thickness); + glDisable (GL_LIGHTING); + + for (i = 0; i < 5; i++) + { + glColor4f (1, 0, 0, 0.1 + (i * 0.18)); + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (0, 0, -0.5); glVertex3f (0, 0, 0.5); + glVertex3f (0, 1, 0.5); glVertex3f (0, 1, -0.5); + glEnd(); + count++; + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (-0.5, 0, 0); glVertex3f ( 0.5, 0, 0); + glVertex3f ( 0.5, 1, 0); glVertex3f (-0.5, 1, 0); + glEnd(); + count++; + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (0, 1, -0.5); glVertex3f (0, 1, 0.5); + glVertex3f (0, 0, 0.5); glVertex3f (0, 0, -0.5); + glEnd(); + count++; + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + glVertex3f (-0.5, 1, 0); glVertex3f ( 0.5, 1, 0); + glVertex3f ( 0.5, 0, 0); glVertex3f (-0.5, 0, 0); + glEnd(); + count++; + glScalef (0.7, 1, 0.7); + } + if (!MI_IS_WIREFRAME(mi)) + glEnable (GL_LIGHTING); + glPopMatrix(); + return count; +} + + +static int +draw_camera_1 (ModeInfo *mi, camera *c) +{ + int count = 0; + GLfloat scale = 0.01; + GLfloat color[4] = { 1, 0, 0, 1 }; + glPushMatrix(); + + glTranslatef (c->pos.x, c->pos.y, c->pos.z); + glScalef (scale, scale, scale); + + glRotatef (90, 1, 0, 0); + glRotatef (-90, 0, 1, 0); + + count += draw_double_component (mi, CAMERA_MOUNT); + + glRotatef (-c->facing, 0, 1, 0); + glRotatef (-c->pitch, 0, 0, 1); + + count += draw_double_component (mi, CAMERA_HINGE); + + if (c->state == WARM_UP) + { + if (c->tick < 0.2) + glTranslatef ((0.2 - c->tick) / (scale * 3), 0, 0); + } + + if (c->state == ZOT) + { + glTranslatef ((0.005 - frand(0.01)) / scale, + (0.005 - frand(0.01)) / scale, + (0.005 - frand(0.01)) / scale); + } + + count += draw_double_component (mi, CAMERA_BODY); + + if (c->state == ZOT) + { + glTranslatef ((0.005 - frand(0.01)) / scale, + (0.005 - frand(0.01)) / scale, + (0.005 - frand(0.01)) / scale); + } + + count += draw_double_component (mi, CAMERA_CAP); + + switch (c->state) { + case IDLE: break; + case WARM_UP: color[0] = 1.0 - c->tick; break; + case ZOT: color[0] = 1.0; break; + case COOL_DOWN: color[0] = c->tick; break; + default: abort(); break; + } + + count += draw_component (mi, CAMERA_LENS, + (c->state == IDLE ? 0 : color)); + +# ifdef DEBUG + if (debug_p && c->state != ZOT) + { + glDisable (GL_LIGHTING); + glColor3f (1, 1, 0); + glBegin (GL_LINES); + glVertex3f (0, BEAM_ZOFF / scale, 0); + glVertex3f (-100 / scale, BEAM_ZOFF / scale, 0); + glEnd(); + if (!MI_IS_WIREFRAME(mi)) + glEnable (GL_LIGHTING); + } +# endif + + glPopMatrix(); + + return count; +} + + +/* The position this pedestrian would appear at during the given ratio + through its life cycle. + */ +static XYZ +pedestrian_position (pedestrian *p, GLfloat ratio) +{ + XYZ pos = p->pos; + if (p->speed < 0) + ratio = 1-ratio; + pos.x += p->length * ratio; + pos.z += sin (M_PI * ratio * p->frequency * 2) * p->amplitude + + p->amplitude/2; + return pos; +} + + +static int +draw_pedestrian (ModeInfo *mi, pedestrian *p) +{ + int count = 0; +# ifdef DEBUG + if (debug_p) + { + GLfloat r; + GLfloat step = 0.001; + glDisable (GL_LIGHTING); + glColor3f (0, 0, 1); + + glBegin (GL_LINE_STRIP); + glVertex3f (p->pos.x, p->pos.y, p->pos.z + p->amplitude); + glVertex3f (p->pos.x, p->pos.y, 0); + glVertex3f (p->pos.x + p->length, p->pos.y, 0); + glVertex3f (p->pos.x + p->length, p->pos.y, p->pos.z + p->amplitude); + glEnd(); + + glBegin (GL_LINE_STRIP); + for (r = 0; r <= 1; r += step) + { + XYZ pos = pedestrian_position (p, r); + glVertex3f (pos.x, pos.y, pos.z); + count++; + if (p->ratio >= r && p->ratio < r + step) + { + glVertex3f (pos.x, pos.y, pos.z - p->amplitude); + glVertex3f (pos.x, pos.y, pos.z + p->amplitude); + glVertex3f (pos.x, pos.y, pos.z); + count++; + } + } + glEnd(); + if (!MI_IS_WIREFRAME(mi)) + glEnable (GL_LIGHTING); + } +# endif + return count; +} + + +/* Start someone walking through the scene. + */ +static void +add_pedestrian (ModeInfo *mi) +{ + camera_configuration *bp = &bps[MI_SCREEN(mi)]; + pedestrian *p = (pedestrian *) calloc (1, sizeof(*p)); + static int id = 100; + p->id = id++; + p->length = 35; + p->ratio = 0; + p->pos.x = -p->length/2; + p->pos.y = 3 + frand(10); + p->pos.z = -1.5 + frand(4) + ((random() % 10) ? 0 : frand(8)); + p->frequency = 4 + frand(4); + p->amplitude = 0.1 + ((random() % 10) ? BELLRAND(0.45) : BELLRAND(1.5)); + p->ratio = 0; + p->speed = ((4 + frand(4) + ((random() % 10) ? 0 : frand(10))) + * (random() & 1 ? 1 : -1) + * speed_arg); + + if (bp->pedestrians) + { + pedestrian *p2; /* add it to the end */ + for (p2 = bp->pedestrians; p2->next; p2 = p2->next) + ; + p2->next = p; + } + else + { + p->next = bp->pedestrians; + bp->pedestrians = p; + } +} + + +static void +free_pedestrian (ModeInfo *mi, pedestrian *p) +{ + camera_configuration *bp = &bps[MI_SCREEN(mi)]; + Bool ok = False; + if (!p) abort(); + if (p == bp->pedestrians) + { + bp->pedestrians = p->next; + ok = True; + } + else + { + pedestrian *p0; + for (p0 = bp->pedestrians; p0; p0 = p0->next) + if (p0->next == p) + { + p0->next = p0->next ? p0->next->next : 0; + ok = True; + break; + } + } + if (!ok) abort(); + p->next = 0; + free (p); +} + + +static void +tick_pedestrian (ModeInfo *mi, pedestrian *p) +{ + p->ratio += 0.001 * (p->speed > 0 ? p->speed : -p->speed); + if (p->ratio >= 1) + free_pedestrian (mi, p); +} + + +/* Extract the position of the thing this camera would like to look at. + */ +static void +set_camera_focus (ModeInfo *mi, camera *c) +{ + camera_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (c->focus_id > 0) /* Look at pedestrian with id N */ + { + long id = c->focus_id; + pedestrian *p; + for (p = bp->pedestrians; p; p = p->next) + if (p->id == id) + break; + if (p) + c->focus = pedestrian_position (p, p->ratio); + else + c->focus_id = 0; /* that pedestrian has escaped */ + } + else if (c->focus_id < 0) /* Look at camera -N-1 */ + { + long n = -c->focus_id - 1; + if (bp->ncameras > n) + c->focus = bp->cameras[n].pos; + } +} + + +static void +tick_camera (ModeInfo *mi, camera *c) +{ + camera_configuration *bp = &bps[MI_SCREEN(mi)]; + + GLfloat X, Y, Z; + set_camera_focus (mi, c); + + X = c->focus.x - c->pos.x; + Y = c->focus.y - c->pos.y; + Z = c->focus.z - c->pos.z - BEAM_ZOFF; + + if (X != 0 || Y != 0) + { + GLfloat ofacing = c->facing; + GLfloat opitch = c->pitch; + + GLfloat target_facing = atan2 (X, Y) * (180 / M_PI); + GLfloat target_pitch = atan2 (Z, sqrt(X*X + Y*Y)) * (180 / M_PI); + + /* Adjust the current velocity. + If we are nearing the target, slow down (but don't stop). + Otherwise, speed up (but don't break the speed limit). + */ + { + GLfloat accel = 0.5 * speed_arg; + GLfloat decel_range = 20; + GLfloat max_velocity = 5 * speed_arg; + GLfloat close_enough = 0.5 * speed_arg; + + GLfloat dx = target_facing - c->facing; + GLfloat dy = target_pitch - c->pitch; + GLfloat angular_distance = sqrt (dx*dx + dy*dy); + + /* Split the velocity into vx and vy components. This isn't + quite right since this treats them as Cartesian rather than + polar, but it's close enough. + */ + GLfloat r = (dx == 0) ? 1 : ABS(dy) / ABS(dx); + GLfloat vx = 1-r; + GLfloat vy = r; + + if (angular_distance < decel_range) /* Nearing target, slow down */ + { + c->velocity -= accel; + if (c->velocity <= 0) + c->velocity = accel; + } + else + { + c->velocity += accel; + if (c->velocity > max_velocity) + c->velocity = max_velocity; + } + + /* Don't overshoot */ + if (vx > ABS(dx)) vx = ABS(dx); + if (vy > ABS(dy)) vy = ABS(dy); + + + /* Rotate toward target by current angular velocity. */ + c->facing += vx * c->velocity * (target_facing > c->facing ? 1 : -1); + c->pitch += vy * c->velocity * (target_pitch > c->pitch ? 1 : -1); + + /* If we are pointed *really close* to the target, just lock on, + to avoid twitchy overshoot rounding errors. + */ + if (angular_distance < close_enough) + { + c->facing = target_facing; + c->pitch = target_pitch; + } + + /* Constrain to hinge's range of motion */ + c->facing = MAX (-90, MIN (90, c->facing)); + c->pitch = MAX (-90, MIN (55, c->pitch)); + + /* After this motion, our prevailing velocity (for next time) + is the angular distance we actually moved. + */ + dx = c->facing - ofacing; + dy = c->pitch - opitch; + c->velocity = sqrt (dx*dx + dy*dy); + } + } + +# ifdef DEBUG + if (debug_p && 1) + /* Mark the point on which this camera is focusing. */ + { + glPushMatrix(); + glDisable (GL_LIGHTING); + glColor3f(0.3, 0.3, 0.3); + glBegin (GL_LINES); + glVertex3f (c->pos.x, c->pos.y, c->pos.z + BEAM_ZOFF); + glVertex3f (c->focus.x, c->focus.y, c->focus.z); + glEnd(); + glColor3f(1,1,1); + glBegin (GL_LINES); + glVertex3f (c->focus.x-0.25, c->focus.y, c->focus.z); + glVertex3f (c->focus.x+0.25, c->focus.y, c->focus.z); + glVertex3f (c->focus.x, c->focus.y-0.25, c->focus.z); + glVertex3f (c->focus.x, c->focus.y+0.25, c->focus.z); + glVertex3f (c->focus.x, c->focus.y, c->focus.z-0.25); + glVertex3f (c->focus.x, c->focus.y, c->focus.z+0.25); + glEnd(); + if (!MI_IS_WIREFRAME(mi)) + glEnable (GL_LIGHTING); + glPopMatrix(); + } +# endif + + /* If this camera is looking at another camera, get shy and look away + if the target sees us looking. + */ + if (c->focus_id < 0) + { + camera *c2 = &bp->cameras[-1 - c->focus_id]; + XYZ a, b; + GLfloat aa = c->facing / (180 / M_PI); + GLfloat bb = c->pitch / (180 / M_PI); + GLfloat angle; + + a.y = cos(aa)* cos(bb); + a.x = sin(aa)* cos(bb); + a.z = sin(bb); + + aa = c2->facing / (180 / M_PI); + bb = c2->pitch / (180 / M_PI); + b.y = cos(aa)* cos(bb); + b.x = sin(aa)* cos(bb); + b.z = sin(bb); + + angle = vector_angle (normalize(a), normalize(b)) * (180 / M_PI); + + if (angle > 100) + { + c->focus_id = 0; + /* Look "away" which means in the same direction. */ + c->focus.x = c->pos.x + (c2->focus.x - c2->pos.x); + c->focus.y = c->pos.y + (c2->focus.y - c2->pos.y); + c->focus.z = c->pos.z + (c2->focus.z - c2->pos.z); + /* Look at either the sky or the ground.*/ + c->focus.z = c->focus.x * (random() & 1 ? 1 : -1) * 5; + c->velocity = c2->velocity * 3; + } + } + + + /* Randomly pick some other things to look at. + */ + + if (c->state == IDLE && + (c->focus_id <= 0 + ? !(random() % (int) MAX (1, (50 / speed_arg))) + : !(random() % (int) MAX (1, (1000 / speed_arg))))) + { + + /* Shiny! Start paying attention to something else. */ + + if ((bp->ncameras > 1 && !(random() % 20))) /* look at a camera */ + { + int which = random() % 4; + long i; + for (i = 0; i < bp->ncameras; i++) + if (c == &bp->cameras[i]) + break; + + /* Look at cameras 1 or 2 away in each direction, but not farther. + Since we arrange them in 2 staggered lines, those are the only + four that are in line of sight. + */ + if (i >= 2 && which == 0) + which = i-2; + else if (i >= 1 && which == 1) + which = i-1; + else if (i < bp->ncameras-2 && which == 2) + which = i+2; + else if (i == bp->ncameras-1) + which = i-1; + else /* (i < bp->ncameras-2 && which == 3) */ + which = i+1; + + c->focus_id = -1 - which; + } + else /* look at a pedestrian */ + { + int n = 0; + pedestrian *p; + for (p = bp->pedestrians; p; p = p->next) + n++; + if (n > 0) + { + n = random() % n; + p = bp->pedestrians; + while (n > 0 && p) + p = p->next; + if (p) + c->focus_id = p->id; + } + } + } + + /* Run the animation */ + + if (c->state != IDLE) + { + pedestrian *p = bp->pedestrians; /* first one */ + if (p) c->focus_id = p->id; + + switch (c->state) { + case WARM_UP: c->tick -= 0.01 * speed_arg; break; + case ZOT: c->tick -= 0.006 * speed_arg; + if (p) p->speed *= 0.995; /* target takes 1d6 HP damage */ + break; + case COOL_DOWN: c->tick -= 0.02 * speed_arg; break; + default: abort(); break; + } + + if (c->tick <= 0) + { + c->tick = 1.0; + switch (c->state) { + case WARM_UP: c->state = ZOT; break; + case ZOT: c->state = COOL_DOWN; + c->focus_id = 0; + if (p) p->ratio = 1.0; /* threat eliminated */ + break; + case COOL_DOWN: c->state = IDLE; break; + default: abort(); break; + } + } + } + + if (bp->cameras[0].state == IDLE && + bp->pedestrians && + bp->pedestrians[0].ratio < 0.3 && + !(random() % MAX (1, (int) (50000 / speed_arg)))) + { + /* CASE NIGHTMARE RED detected, engage SCORPION STARE by authority + of MAGINOT BLUE STARS. */ + int i; + for (i = 0; i < bp->ncameras; i++) + { + bp->cameras[i].state = WARM_UP; + bp->cameras[i].tick = 1.0; + } + } +} + + +static int +draw_ground (ModeInfo *mi, GLfloat color[4]) +{ + int wire = MI_IS_WIREFRAME(mi); + GLfloat i, j, k, h; + + /* When using fog, iOS apparently doesn't like lines or quads that are + really long, and extend very far outside of the scene. Maybe? If the + length of the line (cells * cell_size) is greater than 25 or so, lines + that are oriented steeply away from the viewer tend to disappear + (whether implemented as GL_LINES or as GL_QUADS). + + So we do a bunch of smaller grids instead of one big one. + */ + int cells = 20; + GLfloat cell_size = 0.4; + int points = 0; + int gridsw = 10; + int gridsh = 2; + + glPushMatrix(); + + if (!wire) + { + GLfloat fog_color[4] = { 0, 0, 0, 1 }; + + glLineWidth (2); + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_BLEND); + + glFogi (GL_FOG_MODE, GL_EXP2); + glFogfv (GL_FOG_COLOR, fog_color); + glFogf (GL_FOG_DENSITY, 0.017); + glFogf (GL_FOG_START, -cells/2 * cell_size * gridsh); + glEnable (GL_FOG); + } + + glColor4fv (color); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + + glTranslatef (-cells * gridsw * cell_size / 2, 0, 0); + for (h = 0; h < 2; h++) + { + glPushMatrix(); + glTranslatef (0, cells * cell_size / 2, 0); + for (j = 0; j < gridsh; j++) + { + glPushMatrix(); + for (k = 0; k < gridsw; k++) + { + glBegin (GL_LINES); + for (i = -cells/2; i < cells/2; i++) + { + GLfloat a = i * cell_size; + GLfloat b = cells/2 * cell_size; + glVertex3f (a, -b, 0); glVertex3f (a, b, 0); points++; + glVertex3f (-b, a, 0); glVertex3f (b, a, 0); points++; + } + glEnd(); + glTranslatef (cells * cell_size, 0, 0); + } + glPopMatrix(); + glTranslatef (0, cells * cell_size, 0); + } + glPopMatrix(); + glRotatef (90, 1, 0, 0); + } + + if (!wire) + glDisable (GL_LINE_SMOOTH); + + glPopMatrix(); + + return points; +} + + +ENTRYPOINT void +draw_camera (ModeInfo *mi) +{ + camera_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + GLfloat camera_size; + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + +# ifdef HAVE_MOBILE + glRotatef (current_device_rotation(), 0, 0, 1); /* right side up */ +# endif + + gltrackball_rotate (bp->user_trackball); + +# ifdef HAVE_MOBILE + { + GLfloat s = 0.6; + glScalef (s, s, s); + } +# endif + +# ifdef DEBUG + if (debug_p) + { + GLfloat s = 0.2; + glScalef (s, s, s); + glRotatef (30, 0, 1, 0); + glRotatef (15, 1, 0, 0); + glTranslatef (0, 0, -80); + } +# endif + + mi->polygon_count = 0; + + camera_size = 5; + + if (MI_COUNT(mi) <= 2) /* re-frame the scene a little bit */ + glTranslatef (0, -1, 7); + if (MI_COUNT(mi) >= 20) + glTranslatef (0, -1.5, -5); + if (MI_COUNT(mi) >= 40) + glTranslatef (0, 2, -15); + + glScalef (camera_size, camera_size, camera_size); + + /* +Z is toward sky; +X is toward the right along the back wall; + +Y is toward the viewer. */ + glRotatef (-90, 1, 0, 0); + glScalef (1, -1, 1); + + glPushMatrix(); + glScalef (1/camera_size, 1/camera_size, 1/camera_size); + glTranslatef (0, -2.38, -8); /* Move the ground down and back */ + glCallList (bp->dlists[GROUND]); + mi->polygon_count += ground->points; + + glPopMatrix(); + + { + pedestrian *p, *p2; + for (p = bp->pedestrians, p2 = p ? p->next : 0; + p; + p = p2, p2 = p2 ? p2->next : 0) + { + mi->polygon_count += draw_pedestrian (mi, p); + tick_pedestrian (mi, p); /* might free p */ + } + + if (!bp->pedestrians || !(random() % MAX (1, (int) (200 / speed_arg)))) + add_pedestrian (mi); + } + + for (i = 0; i < bp->ncameras; i++) + { + camera *c = &bp->cameras[i]; + mi->polygon_count += draw_camera_1 (mi, c); + tick_camera (mi, c); + } + + for (i = 0; i < bp->ncameras; i++) + { + camera *c = &bp->cameras[i]; + if (c->state == ZOT) /* Do this last, for alpha blending */ + mi->polygon_count += draw_ray (mi, c); + } + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE_2 ("Vigilance", vigilance, camera) + +#endif /* USE_GL */ diff --git a/hacks/glx/vigilance.man b/hacks/glx/vigilance.man new file mode 100644 index 0000000..306950d --- /dev/null +++ b/hacks/glx/vigilance.man @@ -0,0 +1,57 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +vigilance - screen saver. +.SH SYNOPSIS +.B vigilance +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-speed \fInumber\fP] +[\-count \fInumber\fP] +.SH DESCRIPTION +A set of security cameras keep very careful track of their surroundings. +You can trust them. Everything is completely under control. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-speed \fInumber\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-count \fInumber\fP +Number of cameras. 1 - 50. Default: 5. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2017 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/voronoi.c b/hacks/glx/voronoi.c new file mode 100644 index 0000000..895f967 --- /dev/null +++ b/hacks/glx/voronoi.c @@ -0,0 +1,543 @@ +/* voronoi, Copyright (c) 2007-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" \ + "*suppressRotationAnimation: True\n" \ + +# define free_voronoi 0 +# define release_voronoi 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) + + +#include "xlockmore.h" +#include + +#ifdef USE_GL /* whole file */ + +#define DEF_POINTS "25" +#define DEF_POINT_SIZE "9" +#define DEF_POINT_SPEED "1.0" +#define DEF_POINT_DELAY "0.05" +#define DEF_ZOOM_SPEED "1.0" +#define DEF_ZOOM_DELAY "15" + +typedef struct node { + GLfloat x, y; + GLfloat dx, dy; + GLfloat ddx, ddy; + struct node *next; + GLfloat color[4], color2[4]; + int rot; +} node; + +typedef struct { + GLXContext *glx_context; + node *nodes; + int nnodes; + node *dragging; + int ncolors; + XColor *colors; + int point_size; + + enum { MODE_WAITING, MODE_ADDING, MODE_ZOOMING } mode; + int adding; + double last_time; + + GLfloat zooming; /* 1.0 starting zoom, 0.0 no longer zooming. */ + GLfloat zoom_toward[2]; + +} voronoi_configuration; + +static voronoi_configuration *vps = NULL; + +/* command line arguments */ +static int npoints; +static GLfloat point_size, point_speed, point_delay; +static GLfloat zoom_speed, zoom_delay; + +static XrmOptionDescRec opts[] = { + { "-points", ".points", XrmoptionSepArg, 0 }, + { "-point-size", ".pointSize", XrmoptionSepArg, 0 }, + { "-point-speed", ".pointSpeed", XrmoptionSepArg, 0 }, + { "-point-delay", ".pointDelay", XrmoptionSepArg, 0 }, + { "-zoom-speed", ".zoomSpeed", XrmoptionSepArg, 0 }, + { "-zoom-delay", ".zoomDelay", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {&npoints, "points", "Points", DEF_POINTS, t_Int}, + {&point_size, "pointSize", "PointSize", DEF_POINT_SIZE, t_Float}, + {&point_speed, "pointSpeed", "PointSpeed", DEF_POINT_SPEED, t_Float}, + {&point_delay, "pointDelay", "PointDelay", DEF_POINT_DELAY, t_Float}, + {&zoom_speed, "zoomSpeed", "ZoomSpeed", DEF_ZOOM_SPEED, t_Float}, + {&zoom_delay, "zoomDelay", "ZoomDelay", DEF_ZOOM_DELAY, t_Float}, +}; + +ENTRYPOINT ModeSpecOpt voronoi_opts = + {countof(opts), opts, countof(vars), vars, NULL}; + + +/* Returns the current time in seconds as a double. + */ +static double +double_time (void) +{ + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + return (now.tv_sec + ((double) now.tv_usec * 0.000001)); +} + + +static node * +add_node (voronoi_configuration *vp, GLfloat x, GLfloat y) +{ + node *nn = (node *) calloc (1, sizeof (*nn)); + int i; + nn->x = x; + nn->y = y; + + i = random() % vp->ncolors; + nn->color[0] = vp->colors[i].red / 65536.0; + nn->color[1] = vp->colors[i].green / 65536.0; + nn->color[2] = vp->colors[i].blue / 65536.0; + nn->color[3] = 1.0; + + nn->color2[0] = nn->color[0] * 0.7; + nn->color2[1] = nn->color[1] * 0.7; + nn->color2[2] = nn->color[2] * 0.7; + nn->color2[3] = 1.0; + + nn->ddx = frand (0.000001 * point_speed) * (random() & 1 ? 1 : -1); + nn->ddy = frand (0.000001 * point_speed) * (random() & 1 ? 1 : -1); + + nn->rot = (random() % 360) * (random() & 1 ? 1 : -1); + + nn->next = vp->nodes; + vp->nodes = nn; + vp->nnodes++; + return nn; +} + + +static int +cone (void) +{ + int i; + int faces = 64; + GLfloat step = M_PI * 2 / faces; + GLfloat th = 0; + GLfloat x = 1; + GLfloat y = 0; + + glBegin(GL_TRIANGLE_FAN); + glVertex3f (0, 0, 1); + for (i = 0; i < faces; i++) + { + glVertex3f (x, y, 0); + th += step; + x = cos (th); + y = sin (th); + } + glVertex3f (1, 0, 0); + glEnd(); + return faces; +} + + +static void +move_points (voronoi_configuration *vp) +{ + node *nn; + for (nn = vp->nodes; nn; nn = nn->next) + { + if (nn == vp->dragging) continue; + nn->x += nn->dx; + nn->y += nn->dy; + + if (vp->mode == MODE_WAITING) + { + nn->dx += nn->ddx; + nn->dy += nn->ddy; + } + } +} + + +static void +prune_points (voronoi_configuration *vp) +{ + node *nn; + node *prev = 0; + int lim = 5; + + for (nn = vp->nodes; nn; prev = nn, nn = (nn ? nn->next : 0)) + if (nn->x < -lim || nn->x > lim || + nn->y < -lim || nn->y > lim) + { + if (prev) + prev->next = nn->next; + else + vp->nodes = nn->next; + free (nn); + vp->nnodes--; + nn = prev; + } +} + + +static void +zoom_points (voronoi_configuration *vp) +{ + node *nn; + + GLfloat tick = sin (vp->zooming * M_PI); + GLfloat scale = 1 + (tick * 0.02 * zoom_speed); + + vp->zooming -= (0.01 * zoom_speed); + if (vp->zooming < 0) vp->zooming = 0; + + if (vp->zooming <= 0) return; + + if (scale < 1) scale = 1; + + for (nn = vp->nodes; nn; nn = nn->next) + { + GLfloat x = nn->x - vp->zoom_toward[0]; + GLfloat y = nn->y - vp->zoom_toward[1]; + x *= scale; + y *= scale; + nn->x = x + vp->zoom_toward[0]; + nn->y = y + vp->zoom_toward[1]; + } +} + + + +static void +draw_cells (ModeInfo *mi) +{ + voronoi_configuration *vp = &vps[MI_SCREEN(mi)]; + node *nn; + int lim = 5; + + for (nn = vp->nodes; nn; nn = nn->next) + { + if (nn->x < -lim || nn->x > lim || + nn->y < -lim || nn->y > lim) + continue; + + glPushMatrix(); + glTranslatef (nn->x, nn->y, 0); + glScalef (lim*2, lim*2, 1); + glColor4fv (nn->color); + mi->polygon_count += cone (); + glPopMatrix(); + } + + glClear (GL_DEPTH_BUFFER_BIT); + + if (vp->point_size <= 0) + ; + else if (vp->point_size < 3) + { + glPointSize (vp->point_size); + for (nn = vp->nodes; nn; nn = nn->next) + { + glBegin (GL_POINTS); + glColor4fv (nn->color2); + glVertex2f (nn->x, nn->y); + glEnd(); + mi->polygon_count++; + } + } + else + { + for (nn = vp->nodes; nn; nn = nn->next) + { + int w = MI_WIDTH (mi); + int h = MI_HEIGHT (mi); + int s = vp->point_size; + int i; + + glColor4fv (nn->color2); + glPushMatrix(); + glTranslatef (nn->x, nn->y, 0); + glScalef (1.0 / w * s, 1.0 / h * s, 1); + + glLineWidth (vp->point_size / 10); + nn->rot += (nn->rot < 0 ? -1 : 1); + glRotatef (nn->rot, 0, 0, 1); + + glRotatef (180, 0, 0, 1); + for (i = 0; i < 5; i++) + { + glBegin (GL_TRIANGLES); + glVertex2f (0, 1); + glVertex2f (-0.2, 0); + glVertex2f ( 0.2, 0); + glEnd (); + glRotatef (360.0/5, 0, 0, 1); + mi->polygon_count++; + } + glPopMatrix(); + } + } + +#if 0 + glPushMatrix(); + glColor3f(1,1,1); + glBegin(GL_LINE_LOOP); + glVertex3f(0,0,0); + glVertex3f(1,0,0); + glVertex3f(1,1,0); + glVertex3f(0,1,0); + glEnd(); + glScalef(0.25, 0.25, 1); + glBegin(GL_LINE_LOOP); + glVertex3f(0,0,0); + glVertex3f(1,0,0); + glVertex3f(1,1,0); + glVertex3f(0,1,0); + glEnd(); + glPopMatrix(); +#endif +} + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_voronoi (ModeInfo *mi, int width, int height) +{ +/* voronoi_configuration *vp = &vps[MI_SCREEN(mi)];*/ + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho (0, 1, 1, 0, -1, 1); + +# ifdef HAVE_MOBILE /* So much WTF */ + { + int rot = current_device_rotation(); + + glTranslatef (0.5, 0.5, 0); + // glScalef(0.19, 0.19, 0.19); + + if (rot == 180 || rot == -180) { + glTranslatef (1, 1, 0); + } else if (rot == 90 || rot == -270) { + glRotatef (180, 0, 0, 1); + glTranslatef (0, 1, 0); + } else if (rot == -90 || rot == 270) { + glRotatef (180, 0, 0, 1); + glTranslatef (1, 0, 0); + } + + glTranslatef(-0.5, -0.5, 0); + } +# endif + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +static node * +find_node (ModeInfo *mi, GLfloat x, GLfloat y) +{ + voronoi_configuration *vp = &vps[MI_SCREEN(mi)]; + int ps = (vp->point_size < 5 ? 5 : vp->point_size); + GLfloat hysteresis = (1.0 / MI_WIDTH (mi)) * ps; + node *nn; + for (nn = vp->nodes; nn; nn = nn->next) + if (nn->x > x - hysteresis && nn->x < x + hysteresis && + nn->y > y - hysteresis && nn->y < y + hysteresis) + return nn; + return 0; +} + + +ENTRYPOINT Bool +voronoi_handle_event (ModeInfo *mi, XEvent *event) +{ + voronoi_configuration *vp = &vps[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress) + { + GLfloat x = (GLfloat) event->xbutton.x / MI_WIDTH (mi); + GLfloat y = (GLfloat) event->xbutton.y / MI_HEIGHT (mi); + node *nn = find_node (mi, x, y); + if (!nn) + nn = add_node (vp, x, y); + vp->dragging = nn; + + return True; + } + else if (event->xany.type == ButtonRelease && vp->dragging) + { + vp->dragging = 0; + return True; + } + else if (event->xany.type == MotionNotify && vp->dragging) + { + vp->dragging->x = (GLfloat) event->xmotion.x / MI_WIDTH (mi); + vp->dragging->y = (GLfloat) event->xmotion.y / MI_HEIGHT (mi); + return True; + } + + return False; +} + +static void +state_change (ModeInfo *mi) +{ + voronoi_configuration *vp = &vps[MI_SCREEN(mi)]; + double now = double_time(); + + if (vp->dragging) + { + vp->last_time = now; + vp->adding = 0; + vp->zooming = 0; + return; + } + + switch (vp->mode) + { + case MODE_WAITING: + if (vp->last_time + zoom_delay <= now) + { + node *tn = vp->nodes; + vp->zoom_toward[0] = (tn ? tn->x : 0.5); + vp->zoom_toward[1] = (tn ? tn->y : 0.5); + + vp->mode = MODE_ZOOMING; + vp->zooming = 1; + + vp->last_time = now; + } + break; + + case MODE_ADDING: + if (vp->last_time + point_delay <= now) + { + add_node (vp, + BELLRAND(0.5) + 0.25, + BELLRAND(0.5) + 0.25); + vp->last_time = now; + vp->adding--; + if (vp->adding <= 0) + { + vp->adding = 0; + vp->mode = MODE_WAITING; + vp->last_time = now; + } + } + break; + + case MODE_ZOOMING: + { + zoom_points (vp); + if (vp->zooming <= 0) + { + vp->mode = MODE_ADDING; + vp->adding = npoints; + vp->last_time = now; + } + } + break; + + default: + abort(); + } +} + + +ENTRYPOINT void +init_voronoi (ModeInfo *mi) +{ + voronoi_configuration *vp; + + MI_INIT (mi, vps); + + vp = &vps[MI_SCREEN(mi)]; + + vp->glx_context = init_GL(mi); + + vp->point_size = point_size; + if (vp->point_size < 0) vp->point_size = 10; + + if (MI_WIDTH(mi) > 2560) vp->point_size *= 2; /* Retina displays */ + + vp->ncolors = 128; + vp->colors = (XColor *) calloc (vp->ncolors, sizeof(XColor)); + make_smooth_colormap (0, 0, 0, + vp->colors, &vp->ncolors, + False, False, False); + + reshape_voronoi (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + vp->mode = MODE_ADDING; + vp->adding = npoints * 2; + vp->last_time = 0; +} + + +ENTRYPOINT void +draw_voronoi (ModeInfo *mi) +{ + voronoi_configuration *vp = &vps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + + if (!vp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(vp->glx_context)); + + glShadeModel(GL_FLAT); + glEnable(GL_POINT_SMOOTH); +/* glEnable(GL_LINE_SMOOTH);*/ +/* glEnable(GL_POLYGON_SMOOTH);*/ + + glEnable (GL_DEPTH_TEST); + glDepthFunc (GL_LEQUAL); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + mi->polygon_count = 0; + draw_cells (mi); + move_points (vp); + prune_points (vp); + state_change (mi); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +XSCREENSAVER_MODULE ("Voronoi", voronoi) + +#endif /* USE_GL */ diff --git a/hacks/glx/voronoi.man b/hacks/glx/voronoi.man new file mode 100644 index 0000000..713f08c --- /dev/null +++ b/hacks/glx/voronoi.man @@ -0,0 +1,88 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +voronoi - draws a randomly-colored Voronoi tessellation +.SH SYNOPSIS +.B voronoi +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-points \fIint\fP] +[\-point\-size \fIint\fP] +[\-point\-speed \fIratio\fP] +[\-point\-delay \fIseconds\fP] +[\-zoom\-speed \fIratio\fP] +[\-zoom\-delay \fIseconds\fP] +[\-fps] +.SH DESCRIPTION +Draws a randomly-colored Voronoi tessellation, and periodically zooms +in and adds new points. The existing points also wander around. + +There are a set of control points on the plane, each at the center of +a colored cell. Every pixel within that cell is closer to that cell's +control point than to any other control point. That is what +determines the cell's shapes. + +When running in a window, you can click to insert a new point at +the mouse position. Clicking on an existing point lets you drag +it around. + +This implementation takes advantage of the OpenGL depth buffer to +compute the cells for us, by rendering the intersection of overlapping +cones in an orthographic plane. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-points \fIint\fP +How many points to add each time we zoom in. +.TP 8 +.B \-point\-size \fIint\fP +How big to draw the stars, in pixels. 0 for no stars. +.TP 8 +.B \-point\-speed \fIratio\fP +How fast the points should wander. +Less than 1 for slower, greater than 1 for faster. +.TP 8 +.B \-point\-delay \fIseconds\fP +How quickly to insert new points, when adding. +.TP 8 +.B \-zoom\-speed \fIratio\fP +How fast to zoom in. +Less than 1 for slower, greater than 1 for faster. +.TP 8 +.B \-zoom\-delay \fIseconds\fP +Zoom in every this-many seconds. +.TP 8 +.B \-fps +Display the current frame rate, CPU load, and polygon count. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.SH COPYRIGHT +Copyright \(co 2007 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/vrml2gl.pl b/hacks/glx/vrml2gl.pl new file mode 100755 index 0000000..f0f42ba --- /dev/null +++ b/hacks/glx/vrml2gl.pl @@ -0,0 +1,361 @@ +#!/usr/bin/perl -w +# Copyright © 2003-2011 Jamie Zawinski +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation. No representations are made about the suitability of this +# software for any purpose. It is provided "as is" without express or +# implied warranty. +# +# Reads a VRML WRL file, and emits C data suitable for use with OpenGL's +# glInterleavedArrays() and glDrawArrays() routines. +# +# Face normals are computed. +# +# Options: +# +# --normalize Compute the bounding box of the object, and scale all +# coordinates so that the object fits inside a unit cube. +# +# Created: 8-Mar-2003 for Wavefront OBJ, converted to VRML 27-Sep-2011. + +require 5; +use diagnostics; +use strict; + +my $progname = $0; $progname =~ s@.*/@@g; +my ($version) = ('$Revision: 1.2 $' =~ m/\s(\d[.\d]+)\s/s); + +my $verbose = 0; + + +# convert a vector to a unit vector +sub normalize($$$) { + my ($x, $y, $z) = @_; + my $L = sqrt (($x * $x) + ($y * $y) + ($z * $z)); + if ($L != 0) { + $x /= $L; + $y /= $L; + $z /= $L; + } else { + $x = $y = $z = 0; + } + return ($x, $y, $z); +} + + +# Calculate the unit normal at p0 given two other points p1,p2 on the +# surface. The normal points in the direction of p1 crossproduct p2. +# +sub face_normal($$$$$$$$$) { + my ($p0x, $p0y, $p0z, + $p1x, $p1y, $p1z, + $p2x, $p2y, $p2z) = @_; + + my ($nx, $ny, $nz); + my ($pax, $pay, $paz); + my ($pbx, $pby, $pbz); + + $pax = $p1x - $p0x; + $pay = $p1y - $p0y; + $paz = $p1z - $p0z; + $pbx = $p2x - $p0x; + $pby = $p2y - $p0y; + $pbz = $p2z - $p0z; + $nx = $pay * $pbz - $paz * $pby; + $ny = $paz * $pbx - $pax * $pbz; + $nz = $pax * $pby - $pay * $pbx; + + return (normalize ($nx, $ny, $nz)); +} + + +sub parse_vrml_1($$$) { + my ($filename, $body, $normalize_p) = @_; + + my @verts = (); # list of refs of coords, [x, y, z] + my @faces = (); # list of refs of [ point, point, point, ... ] + # where 'point' is a list of indexes into 'verts'. + + $body =~ s% \b point \s* \[ (.*?) \] %{ + foreach my $point (split (/,/, $1)) { + $point =~ s/^\s+|\s+$//gsi; + next unless $point; + my @p = split(/\s+/, $point); + push @verts, \@p; + } + }%gsexi; + + $body =~ s% \b coordIndex \s* \[ (.*?) \] %{ + foreach my $face (split (/\s*,-1,?\s*/, $1)) { + $face =~ s/^\s+|\s+$//gsi; + next unless $face; + my @p = split(/\s*,\s*/, $face); + push @faces, \@p; + } + }%gsexi; + + return () if ($#verts < 0); + + # generate interleaved list of triangle coordinates and normals + # + my @triangles = (); + my $nfaces = $#faces+1; + + foreach my $f (@faces) { + # $f is [ p1, p2, p3, ... ] + + my @f = @$f; + + error ("too few points in face") if ($#f < 2); + my $p1 = shift @f; + + # If there are more than 3 points, do a triangle fan from the first one: + # [1 2 3] [1 3 4] [1 4 5] etc. Doesn't always work with convex shapes. + + while ($#f) { + my $p2 = shift @f; + my $p3 = $f[0]; + + my ($pp1, $pp2, $pp3) = ($p1, $p2, $p3); + # Reverse the winding order. +# ($pp1, $pp2, $pp3) = ($pp3, $pp2, $pp1); + + my $x1 = $verts[$pp1]->[0]; + my $y1 = $verts[$pp1]->[1]; + my $z1 = $verts[$pp1]->[2]; + + my $x2 = $verts[$pp2]->[0]; + my $y2 = $verts[$pp2]->[1]; + my $z2 = $verts[$pp2]->[2]; + + my $x3 = $verts[$pp3]->[0]; + my $y3 = $verts[$pp3]->[1]; + my $z3 = $verts[$pp3]->[2]; + + error ("missing points in face") unless defined($z3); + + my ($nx, $ny, $nz) = face_normal ($x1, $y1, $z1, + $x2, $y2, $z2, + $x3, $y3, $z3); + + push @triangles, [$nx, $ny, $nz, $x1, $y1, $z1, + $nx, $ny, $nz, $x2, $y2, $z2, + $nx, $ny, $nz, $x3, $y3, $z3]; + } + } + + return (@triangles); +} + + +sub parse_vrml($$$) { + my ($filename, $body, $normalize_p) = @_; + + my @triangles = (); + + $body =~ s/\s*\#.*$//gmi; # comments + + # Lose 2D imagery + $body =~ s/\bIndexedLineSet \s* { \s* coordIndex \s* \[ .*? \] \s* }//gsix; + + $body =~ s/(\bSeparator\b)/\001$1/g; + + foreach my $sec (split (m/\001/, $body)) { + push @triangles, parse_vrml_1 ($filename, $sec, $normalize_p); + } + + + # find bounding box, and normalize + # + if ($normalize_p || $verbose) { + my $minx = 999999999; + my $miny = 999999999; + my $minz = 999999999; + my $maxx = -999999999; + my $maxy = -999999999; + my $maxz = -999999999; + my $i = 0; + + foreach my $t (@triangles) { + my ($nx1, $ny1, $nz1, $x1, $y1, $z1, + $nx2, $ny2, $nz2, $x2, $y2, $z2, + $nx3, $ny3, $nz3, $x3, $y3, $z3) = @$t; + + foreach my $x ($x1, $x2, $x3) { + $minx = $x if ($x < $minx); + $maxx = $x if ($x > $maxx); + } + foreach my $y ($y1, $y2, $y3) { + $miny = $y if ($y < $miny); + $maxy = $y if ($y > $maxy); + } + foreach my $z ($z1, $z2, $z3) { + $minz = $z if ($z < $minz); + $maxz = $z if ($z > $maxz); + } + } + + my $w = ($maxx - $minx); + my $h = ($maxy - $miny); + my $d = ($maxz - $minz); + my $sizea = ($w > $h ? $w : $h); + my $sizeb = ($w > $d ? $w : $d); + my $size = ($sizea > $sizeb ? $sizea : $sizeb); + + print STDERR "$progname: bbox is " . + sprintf("%.2f x %.2f x %.2f\n", $w, $h, $d) + if ($verbose); + + if ($normalize_p) { + $w /= $size; + $h /= $size; + $d /= $size; + print STDERR "$progname: dividing by $size for bbox of " . + sprintf("%.2f x %.2f x %.2f\n", $w, $h, $d) + if ($verbose); + + foreach my $t (@triangles) { + my @t = @$t; + $t[3] /= $size; $t[4] /= $size; $t[5] /= $size; + $t[9] /= $size; $t[10] /= $size; $t[11] /= $size; + $t[15] /= $size; $t[16] /= $size; $t[17] /= $size; + $t = \@t; + } + } + } + + return @triangles; +} + + +sub generate_c($@) { + my ($filename, @triangles) = @_; + + my $code = ''; + + $code .= "#include \"gllist.h\"\n"; + $code .= "static const float data[]={\n"; + + my $nfaces = $#triangles + 1; + my $npoints = $nfaces * 3; + + foreach my $t (@triangles) { + my ($nx1, $ny1, $nz1, $x1, $y1, $z1, + $nx2, $ny2, $nz2, $x2, $y2, $z2, + $nx3, $ny3, $nz3, $x3, $y3, $z3) = @$t; + my $lines = sprintf("\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n" . + "\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n" . + "\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n", + $nx1, $ny1, $nz1, $x1, $y1, $z1, + $nx2, $ny2, $nz2, $x2, $y2, $z2, + $nx3, $ny3, $nz3, $x3, $y3, $z3); + $lines =~ s/([.\d])0+,/$1,/g; # lose trailing insignificant zeroes + $lines =~ s/\.,/,/g; + $lines =~ s/-0,/0,/g; + + $code .= $lines; + } + + my $token = $filename; # guess at a C token from the filename + $token =~ s/\<[^<>]*\>//; + $token =~ s@^.*/@@; + $token =~ s/\.[^.]*$//; + $token =~ s/[^a-z\d]/_/gi; + $token =~ s/__+/_/g; + $token =~ s/^_//g; + $token =~ s/_$//g; + $token =~ tr [A-Z] [a-z]; + $token = 'foo' if ($token eq ''); + + my $format = 'GL_N3F_V3F'; + my $primitive = 'GL_TRIANGLES'; + + $code =~ s/,\n$//s; + $code .= "\n};\n"; + $code .= "static const struct gllist frame={"; + $code .= "$format,$primitive,$npoints,data,NULL};\n"; + $code .= "const struct gllist *$token=&frame;\n"; + + print STDERR "$filename: " . + (($#triangles+1)*3) . " points, " . + (($#triangles+1)) . " faces.\n" + if ($verbose); + + return $code; +} + + +sub vrml_to_gl($$$) { + my ($infile, $outfile, $normalize_p) = @_; + my $body = ''; + + my $in; + if ($infile eq '-') { + $in = *STDIN; + } else { + open ($in, '<', $infile) || error ("$infile: $!"); + } + my $filename = ($infile eq '-' ? "" : $infile); + print STDERR "$progname: reading $filename...\n" + if ($verbose); + while (<$in>) { $body .= $_; } + close $in; + + $body =~ s/\r\n/\n/g; # CRLF -> LF + $body =~ s/\r/\n/g; # CR -> LF + + my @triangles = parse_vrml ($filename, $body, $normalize_p); + + $filename = ($outfile eq '-' ? "" : $outfile); + my $code = generate_c ($filename, @triangles); + + my $out; + if ($outfile eq '-') { + $out = *STDOUT; + } else { + open ($out, '>', $outfile) || error ("$outfile: $!"); + } + (print $out $code) || error ("$filename: $!"); + (close $out) || error ("$filename: $!"); + + print STDERR "$progname: wrote $filename\n" + if ($verbose || $outfile ne '-'); +} + + +sub error { + ($_) = @_; + print STDERR "$progname: $_\n"; + exit 1; +} + +sub usage { + print STDERR "usage: $progname [--verbose] [infile [outfile]]\n"; + exit 1; +} + +sub main { + my ($infile, $outfile); + my $normalize_p = 0; + while ($_ = $ARGV[0]) { + shift @ARGV; + if ($_ eq "--verbose") { $verbose++; } + elsif (m/^-v+$/) { $verbose += length($_)-1; } + elsif ($_ eq "--normalize") { $normalize_p = 1; } + elsif (m/^-./) { usage; } + elsif (!defined($infile)) { $infile = $_; } + elsif (!defined($outfile)) { $outfile = $_; } + else { usage; } + } + + $infile = "-" unless defined ($infile); + $outfile = "-" unless defined ($outfile); + + vrml_to_gl ($infile, $outfile, $normalize_p); +} + +main; +exit 0; diff --git a/hacks/glx/wfront2gl.pl b/hacks/glx/wfront2gl.pl new file mode 100755 index 0000000..c78974e --- /dev/null +++ b/hacks/glx/wfront2gl.pl @@ -0,0 +1,361 @@ +#!/usr/bin/perl -w +# Copyright © 2003-2012 Jamie Zawinski +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation. No representations are made about the suitability of this +# software for any purpose. It is provided "as is" without express or +# implied warranty. +# +# Reads a Wavefront OBJ file, and emits C data suitable for use with OpenGL's +# glInterleavedArrays() and glDrawArrays() routines. +# +# If the OBJ file does not contain face normals, they are computed. +# Texture coordinates are ignored. +# +# Options: +# +# --normalize Compute the bounding box of the object, and scale all +# coordinates so that the object fits inside a unit cube. +# +# Created: 8-Mar-2003. + +require 5; +use diagnostics; +use strict; + +my $progname = $0; $progname =~ s@.*/@@g; +my ($version) = ('$Revision: 1.6 $' =~ m/\s(\d[.\d]+)\s/s); + +my $verbose = 0; + + +# convert a vector to a unit vector +sub normalize($$$) { + my ($x, $y, $z) = @_; + my $L = sqrt (($x * $x) + ($y * $y) + ($z * $z)); + if ($L != 0) { + $x /= $L; + $y /= $L; + $z /= $L; + } else { + $x = $y = $z = 0; + } + return ($x, $y, $z); +} + + +# Calculate the unit normal at p0 given two other points p1,p2 on the +# surface. The normal points in the direction of p1 crossproduct p2. +# +sub face_normal($$$$$$$$$) { + my ($p0x, $p0y, $p0z, + $p1x, $p1y, $p1z, + $p2x, $p2y, $p2z) = @_; + + my ($nx, $ny, $nz); + my ($pax, $pay, $paz); + my ($pbx, $pby, $pbz); + + $pax = $p1x - $p0x; + $pay = $p1y - $p0y; + $paz = $p1z - $p0z; + $pbx = $p2x - $p0x; + $pby = $p2y - $p0y; + $pbz = $p2z - $p0z; + $nx = $pay * $pbz - $paz * $pby; + $ny = $paz * $pbx - $pax * $pbz; + $nz = $pax * $pby - $pay * $pbx; + + return (normalize ($nx, $ny, $nz)); +} + + +sub parse_obj($$$) { + my ($filename, $obj, $normalize_p) = @_; + + $_ = $obj; + my @verts = (); # list of refs of coords, [x, y, z] + my @norms = (); # list of refs of coords, [x, y, z] + my @texts = (); # list of refs of coords, [u, v] + my @faces = (); # list of refs of [ point, point, point, ... ] + # where 'point' is a ref of indexes into the + # above lists, [ vert, text, norm ] + + my $lineno = 0; + foreach (split (/\n/, $obj)) { + $lineno++; + next if (m/^\s*$|^\s*\#/); + + if (m/^v\s/) { + my ($x, $y, $z) = m/^v\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s*$/; + error ("line $lineno: unparsable V line: $_") unless defined($z); + push @verts, [$x+0, $y+0, $z+0]; + + } elsif (m/^vn\s/) { + my ($x, $y, $z) = m/^vn\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s*$/; + error ("line $lineno: unparsable VN line: $_") unless defined($z); + push @norms, [$x+0, $y+0, $z+0]; + + } elsif (m/^vt\s/) { + my ($u, $v) = m/^vt\s+([^\s]+)\s+([^\s]+)\s*$/; + error ("line $lineno: unparsable VT line: $_") unless defined($v); + push @texts, [$u+0, $v+0]; + + } elsif (m/^g\b/) { + # group name + + } elsif (m/f\s/) { + my @f = split(/\s+/, $_); + shift @f; + my @vs = (); + foreach my $f (@f) { + my ($v, $t, $n); + if ($f =~ m@^(\d+)$@s) { $v = $1; } + elsif ($f =~ m@^(\d+)/(\d+)$@s) { $v = $1, $t = $2; } + elsif ($f =~ m@^(\d+)/(\d+)/(\d+)$@s) { $v = $1, $t = $2; $n = $3; } + elsif ($f =~ m@^(\d+)///?(\d+)$@s) { $v = $1; $n = $3; } + else { + error ("line $lineno: unparsable F line: $_") unless defined($v); + } + $t = -1 unless defined($t); + $n = -1 unless defined($n); + push @vs, [$v+0, $t+0, $n+0]; + } + push @faces, \@vs; + + } elsif (m/^s\b/) { + # turn on smooth shading + } elsif (m/^(mtllib|usemtl)\b/) { + # reference to external materials file (textures, etc.) + } else { + error ("line $lineno: unknown line: $_"); + } + } + + + # find bounding box, and normalize + # + if ($normalize_p || $verbose) { + my $minx = 999999999; + my $miny = 999999999; + my $minz = 999999999; + my $maxx = -999999999; + my $maxy = -999999999; + my $maxz = -999999999; + my $i = 0; + foreach my $v (@verts) { + my ($x, $y, $z) = @$v; + $minx = $x if ($x < $minx); + $maxx = $x if ($x > $maxx); + $miny = $y if ($y < $miny); + $maxy = $y if ($y > $maxy); + $minz = $z if ($z < $minz); + $maxz = $z if ($z > $maxz); + } + + my $w = ($maxx - $minx); + my $h = ($maxy - $miny); + my $d = ($maxz - $minz); + my $sizea = ($w > $h ? $w : $h); + my $sizeb = ($w > $d ? $w : $d); + my $size = ($sizea > $sizeb ? $sizea : $sizeb); + + print STDERR "$progname: bbox is " . + sprintf("%.2f x %.2f x %.2f\n", $w, $h, $d) + if ($verbose); + + if ($normalize_p) { + $w /= $size; + $h /= $size; + $d /= $size; + print STDERR "$progname: dividing by $size for bbox of " . + sprintf("%.2f x %.2f x %.2f\n", $w, $h, $d) + if ($verbose); + foreach my $n (@verts) { + my @n = @$n; + foreach (@n) { $_ /= $size; } + $n = \@n; + } + } + } + + # generate interleaved list of triangle coordinates and normals + # + my @triangles = (); + my $nfaces = $#faces+1; + + foreach my $f (@faces) { + # $f is [ [v, t, n], [v, t, n], ... ] + + my @f = @$f; + +# # (Kludge for the companion cube model) +# if ($#f > 15) { +# my $i = 12; +# @f = (@f[$i-1 .. $#f], @f[0 .. $i]); +# } + + error ("too few points in face") if ($#f < 2); + my $p1 = shift @f; + + # If there are more than 3 points, do a triangle fan from the first one: + # [1 2 3] [1 3 4] [1 4 5] etc. Doesn't always work with convex shapes. + + while ($#f) { + my $p2 = shift @f; + my $p3 = $f[0]; + + my $x1 = $verts[$p1->[0]-1]->[0]; my $nx1 = $norms[$p1->[2]-1]->[0]; + my $y1 = $verts[$p1->[0]-1]->[1]; my $ny1 = $norms[$p1->[2]-1]->[1]; + my $z1 = $verts[$p1->[0]-1]->[2]; my $nz1 = $norms[$p1->[2]-1]->[2]; + + my $x2 = $verts[$p2->[0]-1]->[0]; my $nx2 = $norms[$p2->[2]-1]->[0]; + my $y2 = $verts[$p2->[0]-1]->[1]; my $ny2 = $norms[$p2->[2]-1]->[1]; + my $z2 = $verts[$p2->[0]-1]->[2]; my $nz2 = $norms[$p2->[2]-1]->[2]; + + my $x3 = $verts[$p3->[0]-1]->[0]; my $nx3 = $norms[$p3->[2]-1]->[0]; + my $y3 = $verts[$p3->[0]-1]->[1]; my $ny3 = $norms[$p3->[2]-1]->[1]; + my $z3 = $verts[$p3->[0]-1]->[2]; my $nz3 = $norms[$p3->[2]-1]->[2]; + + error ("missing points in face") unless defined($z3); + + if (!defined($nz3)) { + my ($nx, $ny, $nz) = face_normal ($x1, $y1, $z1, + $x2, $y2, $z2, + $x3, $y3, $z3); + $nx1 = $nx2 = $nx3 = $nx; + $ny1 = $ny2 = $ny3 = $ny; + $nz1 = $nz2 = $nz3 = $nz; + } + + + push @triangles, [$nx1, $ny1, $nz1, $x1, $y1, $z1, + $nx2, $ny2, $nz2, $x2, $y2, $z2, + $nx3, $ny3, $nz3, $x3, $y3, $z3]; + } + } + + return (@triangles); +} + + +sub generate_c($@) { + my ($filename, @triangles) = @_; + + my $code = ''; + + $code .= "#include \"gllist.h\"\n"; + $code .= "static const float data[]={\n"; + + my $nfaces = $#triangles + 1; + my $npoints = $nfaces * 3; + + foreach my $t (@triangles) { + my ($nx1, $ny1, $nz1, $x1, $y1, $z1, + $nx2, $ny2, $nz2, $x2, $y2, $z2, + $nx3, $ny3, $nz3, $x3, $y3, $z3) = @$t; + my $lines = sprintf("\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n" . + "\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n" . + "\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n", + $nx1, $ny1, $nz1, $x1, $y1, $z1, + $nx2, $ny2, $nz2, $x2, $y2, $z2, + $nx3, $ny3, $nz3, $x3, $y3, $z3); + $lines =~ s/([.\d])0+,/$1,/g; # lose trailing insignificant zeroes + $lines =~ s/\.,/,/g; + $lines =~ s/-0,/0,/g; + + $code .= $lines; + } + + my $token = $filename; # guess at a C token from the filename + $token =~ s/\<[^<>]*\>//; + $token =~ s@^.*/@@; + $token =~ s/\.[^.]*$//; + $token =~ s/[^a-z\d]/_/gi; + $token =~ s/__+/_/g; + $token =~ s/^_//g; + $token =~ s/_$//g; + $token =~ tr [A-Z] [a-z]; + $token = 'foo' if ($token eq ''); + + my $format = 'GL_N3F_V3F'; + my $primitive = 'GL_TRIANGLES'; + + $code =~ s/,\n$//s; + $code .= "\n};\n"; + $code .= "static const struct gllist frame={"; + $code .= "$format,$primitive,$npoints,data,NULL};\n"; + $code .= "const struct gllist *$token=&frame;\n"; + + print STDERR "$filename: " . + (($#triangles+1)*3) . " points, " . + (($#triangles+1)) . " faces.\n" + if ($verbose); + + return $code; +} + + +sub obj_to_gl($$$) { + my ($infile, $outfile, $normalize_p) = @_; + my $obj = ''; + open (my $in, '<', $infile) || error ("$infile: $!"); + my $filename = ($infile eq '-' ? "" : $infile); + print STDERR "$progname: reading $filename...\n" + if ($verbose); + while (<$in>) { $obj .= $_; } + close $in; + + $obj =~ s/\r\n/\n/g; # CRLF -> LF + $obj =~ s/\r/\n/g; # CR -> LF + + my @triangles = parse_obj ($filename, $obj, $normalize_p); + + $filename = ($outfile eq '-' ? "" : $outfile); + my $code = generate_c ($filename, @triangles); + + open (my $out, '>', $outfile) || error ("$outfile: $!"); + (print $out $code) || error ("$filename: $!"); + (close $out) || error ("$filename: $!"); + + print STDERR "$progname: wrote $filename\n" + if ($verbose || $outfile ne '-'); +} + + +sub error { + ($_) = @_; + print STDERR "$progname: $_\n"; + exit 1; +} + +sub usage { + print STDERR "usage: $progname [--verbose] [infile [outfile]]\n"; + exit 1; +} + +sub main { + my ($infile, $outfile); + my $normalize_p = 0; + while ($_ = $ARGV[0]) { + shift @ARGV; + if ($_ eq "--verbose") { $verbose++; } + elsif (m/^-v+$/) { $verbose += length($_)-1; } + elsif ($_ eq "--normalize") { $normalize_p = 1; } + elsif (m/^-./) { usage; } + elsif (!defined($infile)) { $infile = $_; } + elsif (!defined($outfile)) { $outfile = $_; } + else { usage; } + } + + $infile = "-" unless defined ($infile); + $outfile = "-" unless defined ($outfile); + + obj_to_gl ($infile, $outfile, $normalize_p); +} + +main; +exit 0; diff --git a/hacks/glx/whale.c b/hacks/glx/whale.c new file mode 100644 index 0000000..638f642 --- /dev/null +++ b/hacks/glx/whale.c @@ -0,0 +1,1887 @@ +/* atlantis --- Shows moving 3D sea animals */ + +#if 0 +static const char sccsid[] = "@(#)whale.c 1.3 98/06/18 xlockmore"; +#endif + +/* Copyright (c) E. Lassauge, 1998. */ + +/*- + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * The original code for this mode was written by Mark J. Kilgard + * as a demo for openGL programming. + * + * Porting it to xlock was possible by comparing the original Mesa's morph3d + * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna + * (look at morph3d.c) for his indirect help. + * + * Thanks goes also to Brian Paul for making it possible and inexpensive + * to use OpenGL at home. + * + * My e-mail address is lassauge@users.sourceforge.net + * + * Eric Lassauge (May-13-1998) + * + */ + +/*- + * (c) Copyright 1993, 1994, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(TM) is a trademark of Silicon Graphics, Inc. + */ + +#ifdef USE_GL + +#include "atlantis.h" + +/* *INDENT-OFF* */ +static const float N001[3] = {0.019249, 0.01134, -0.99975}; +static const float N002[3] = {-0.132579, 0.954547, 0.266952}; +static const float N003[3] = {-0.196061, 0.980392, -0.019778}; +static const float N004[3] = {0.695461, 0.604704, 0.388158}; +static const float N005[3] = {0.8706, 0.425754, 0.246557}; +static const float N006[3] = {-0.881191, 0.392012, 0.264251}; +#if 0 +static const float N007[3] = {0, 1, 0}; +#endif +static const float N008[3] = {-0.341437, 0.887477, 0.309523}; +static const float N009[3] = {0.124035, -0.992278, 0}; +static const float N010[3] = {0.242536, 0, -0.970143}; +static const float N011[3] = {0.588172, 0, 0.808736}; +static const float N012[3] = {0.929824, -0.340623, -0.139298}; +static const float N013[3] = {0.954183, 0.267108, -0.134865}; +static const float N014[3] = {0.495127, 0.855436, -0.151914}; +static const float N015[3] = {-0.390199, 0.906569, -0.160867}; +static const float N016[3] = {-0.923605, 0.354581, -0.145692}; +static const float N017[3] = {-0.955796, -0.260667, -0.136036}; +static const float N018[3] = {-0.501283, -0.853462, -0.14254}; +static const float N019[3] = {0.4053, -0.901974, -0.148913}; +static const float N020[3] = {0.909913, -0.392746, -0.133451}; +static const float N021[3] = {0.936494, 0.331147, -0.115414}; +static const float N022[3] = {0.600131, 0.793724, -0.099222}; +static const float N023[3] = {-0.231556, 0.968361, -0.093053}; +static const float N024[3] = {-0.844369, 0.52533, -0.105211}; +static const float N025[3] = {-0.982725, -0.136329, -0.125164}; +static const float N026[3] = {-0.560844, -0.822654, -0.093241}; +static const float N027[3] = {0.263884, -0.959981, -0.093817}; +static const float N028[3] = {0.842057, -0.525192, -0.122938}; +static const float N029[3] = {0.92162, 0.367565, -0.124546}; +static const float N030[3] = {0.613927, 0.784109, -0.090918}; +static const float N031[3] = {-0.448754, 0.888261, -0.098037}; +static const float N032[3] = {-0.891865, 0.434376, -0.126077}; +static const float N033[3] = {-0.881447, -0.448017, -0.149437}; +static const float N034[3] = {-0.345647, -0.922057, -0.174183}; +static const float N035[3] = {0.307998, -0.941371, -0.137688}; +static const float N036[3] = {0.806316, -0.574647, -0.140124}; +static const float N037[3] = {0.961346, 0.233646, -0.145681}; +static const float N038[3] = {0.488451, 0.865586, -0.110351}; +static const float N039[3] = {-0.37429, 0.921953, -0.099553}; +static const float N040[3] = {-0.928504, 0.344533, -0.138485}; +static const float N041[3] = {-0.918419, -0.371792, -0.135189}; +static const float N042[3] = {-0.520666, -0.833704, -0.183968}; +static const float N043[3] = {0.339204, -0.920273, -0.195036}; +static const float N044[3] = {0.921475, -0.387382, -0.028636}; +static const float N045[3] = {0.842465, 0.533335, -0.076204}; +static const float N046[3] = {0.38011, 0.924939, 0.002073}; +static const float N047[3] = {-0.276128, 0.961073, -0.009579}; +static const float N048[3] = {-0.879684, 0.473001, -0.04925}; +static const float N049[3] = {-0.947184, -0.317614, -0.044321}; +static const float N050[3] = {-0.642059, -0.764933, -0.051363}; +static const float N051[3] = {0.466794, -0.880921, -0.07799}; +static const float N052[3] = {0.898509, -0.432277, 0.076279}; +static const float N053[3] = {0.938985, 0.328141, 0.103109}; +static const float N054[3] = {0.44242, 0.895745, 0.043647}; +static const float N055[3] = {-0.255163, 0.966723, 0.018407}; +static const float N056[3] = {-0.833769, 0.54065, 0.111924}; +static const float N057[3] = {-0.953653, -0.289939, 0.080507}; +static const float N058[3] = {-0.672357, -0.730524, 0.119461}; +static const float N059[3] = {0.522249, -0.846652, 0.102157}; +static const float N060[3] = {0.885868, -0.427631, 0.179914}; +#if 0 +static const float N061[3] = {0, 1, 0}; +#endif +static const float N062[3] = {0.648942, 0.743116, 0.163255}; +static const float N063[3] = {-0.578967, 0.80773, 0.111219}; +#if 0 +static const float N064[3] = {0, 1, 0}; +#endif +static const float N065[3] = {-0.909864, -0.352202, 0.219321}; +static const float N066[3] = {-0.502541, -0.81809, 0.27961}; +static const float N067[3] = {0.322919, -0.915358, 0.240504}; +static const float N068[3] = {0.242536, 0, -0.970143}; +static const float N069[3] = {0, 1, 0}; +static const float N070[3] = {0, 1, 0}; +static const float N071[3] = {0, 1, 0}; +static const float N072[3] = {0, 1, 0}; +static const float N073[3] = {0, 1, 0}; +static const float N074[3] = {0, 1, 0}; +static const float N075[3] = {0.03122, 0.999025, -0.03122}; +static const float N076[3] = {0, 1, 0}; +static const float N077[3] = {0.446821, 0.893642, 0.041889}; +static const float N078[3] = {0.863035, -0.10098, 0.494949}; +static const float N079[3] = {0.585597, -0.808215, 0.062174}; +static const float N080[3] = {0, 1, 0}; +static const float N081[3] = {1, 0, 0}; +static const float N082[3] = {0, 1, 0}; +static const float N083[3] = {-1, 0, 0}; +static const float N084[3] = {-0.478893, 0.837129, -0.264343}; +static const float N085[3] = {0, 1, 0}; +static const float N086[3] = {0.763909, 0.539455, -0.354163}; +static const float N087[3] = {0.446821, 0.893642, 0.041889}; +static const float N088[3] = {0.385134, -0.908288, 0.163352}; +static const float N089[3] = {-0.605952, 0.779253, -0.159961}; +static const float N090[3] = {0, 1, 0}; +static const float N091[3] = {0, 1, 0}; +static const float N092[3] = {0, 1, 0}; +static const float N093[3] = {0, 1, 0}; +static const float N094[3] = {1, 0, 0}; +static const float N095[3] = {-1, 0, 0}; +static const float N096[3] = {0.644444, -0.621516, 0.445433}; +static const float N097[3] = {-0.760896, -0.474416, 0.442681}; +static const float N098[3] = {0.636888, -0.464314, 0.615456}; +static const float N099[3] = {-0.710295, 0.647038, 0.277168}; +static const float N100[3] = {0.009604, 0.993655, 0.112063}; +#if 0 +static const float N101[3] = {0, 1, 0}; +static const float N102[3] = {0, 1, 0}; +static const float N103[3] = {0, 1, 0}; +static const float N104[3] = {0.031837, 0.999285, 0.020415}; +static const float N105[3] = {0.031837, 0.999285, 0.020415}; +static const float N106[3] = {0.031837, 0.999285, 0.020415}; +static const float N107[3] = {0.014647, 0.999648, 0.022115}; +static const float N108[3] = {0.014647, 0.999648, 0.022115}; +static const float N109[3] = {0.014647, 0.999648, 0.022115}; +static const float N110[3] = {-0.985141, 0.039475, 0.167149}; +static const float N111[3] = {-0.985141, 0.039475, 0.167149}; +static const float N112[3] = {-0.985141, 0.039475, 0.167149}; +static const float N113[3] = {0, 1, 0}; +static const float N114[3] = {0, 1, 0}; +static const float N115[3] = {0, 1, 0}; +static const float N116[3] = {0, 1, 0}; +static const float N117[3] = {0, 1, 0}; +static const float N118[3] = {0, 1, 0}; +static const float N119[3] = {0, 1, 0}; +static const float N120[3] = {0, 1, 0}; +static const float N121[3] = {0, 1, 0}; +#endif +static const float iP001[3] = {18.74, 13.19, 3.76}; +static float P001[3] = {18.74, 13.19, 3.76}; +static const float P002[3] = {0, 390.42, 10292.57}; +static const float P003[3] = {55.8, 622.31, 8254.35}; +static const float P004[3] = {20.8, 247.66, 10652.13}; +static const float P005[3] = {487.51, 198.05, 9350.78}; +static const float P006[3] = {-457.61, 199.04, 9353.01}; +#if 0 +static const float P007[3] = {0, 259, 10276.27}; +#endif +static const float P008[3] = {-34.67, 247.64, 10663.71}; +static const float iP009[3] = {97.46, 67.63, 593.82}; +static const float iP010[3] = {-84.33, 67.63, 588.18}; +static const float iP011[3] = {118.69, 8.98, -66.91}; +static float P009[3] = {97.46, 67.63, 593.82}; +static float P010[3] = {-84.33, 67.63, 588.18}; +static float P011[3] = {118.69, 8.98, -66.91}; +static const float iP012[3] = {156.48, -31.95, 924.54}; +static const float iP013[3] = {162, 110.22, 924.54}; +static const float iP014[3] = {88.16, 221.65, 924.54}; +static const float iP015[3] = {-65.21, 231.16, 924.54}; +static const float iP016[3] = {-156.48, 121.97, 924.54}; +static const float iP017[3] = {-162, -23.93, 924.54}; +static const float iP018[3] = {-88.16, -139.1, 924.54}; +static const float iP019[3] = {65.21, -148.61, 924.54}; +static const float iP020[3] = {246.87, -98.73, 1783.04}; +static const float iP021[3] = {253.17, 127.76, 1783.04}; +static const float iP022[3] = {132.34, 270.77, 1783.04}; +static const float iP023[3] = {-97.88, 285.04, 1783.04}; +static const float iP024[3] = {-222.97, 139.8, 1783.04}; +static const float iP025[3] = {-225.29, -86.68, 1783.04}; +static const float iP026[3] = {-108.44, -224.15, 1783.04}; +static const float iP027[3] = {97.88, -221.56, 1783.04}; +static const float iP028[3] = {410.55, -200.66, 3213.87}; +static const float iP029[3] = {432.19, 148.42, 3213.87}; +static const float iP030[3] = {200.66, 410.55, 3213.87}; +static const float iP031[3] = {-148.42, 432.19, 3213.87}; +static const float iP032[3] = {-407.48, 171.88, 3213.87}; +static const float iP033[3] = {-432.19, -148.42, 3213.87}; +static const float iP034[3] = {-148.88, -309.74, 3213.87}; +static const float iP035[3] = {156.38, -320.17, 3213.87}; +static const float iP036[3] = {523.39, -303.81, 4424.57}; +static const float iP037[3] = {574.66, 276.84, 4424.57}; +static const float iP038[3] = {243.05, 492.5, 4424.57}; +static const float iP039[3] = {-191.23, 520.13, 4424.57}; +static const float iP040[3] = {-523.39, 304.01, 4424.57}; +static const float iP041[3] = {-574.66, -231.83, 4424.57}; +static const float iP042[3] = {-266.95, -578.17, 4424.57}; +static const float iP043[3] = {211.14, -579.67, 4424.57}; +static const float iP044[3] = {680.57, -370.27, 5943.46}; +static const float iP045[3] = {834.01, 363.09, 5943.46}; +static const float iP046[3] = {371.29, 614.13, 5943.46}; +static const float iP047[3] = {-291.43, 621.86, 5943.46}; +static const float iP048[3] = {-784.13, 362.6, 5943.46}; +static const float iP049[3] = {-743.29, -325.82, 5943.46}; +static const float iP050[3] = {-383.24, -804.77, 5943.46}; +static const float iP051[3] = {283.47, -846.09, 5943.46}; +static float P012[3] = {156.48, -31.95, 924.54}; +static float P013[3] = {162, 110.22, 924.54}; +static float P014[3] = {88.16, 221.65, 924.54}; +static float P015[3] = {-65.21, 231.16, 924.54}; +static float P016[3] = {-156.48, 121.97, 924.54}; +static float P017[3] = {-162, -23.93, 924.54}; +static float P018[3] = {-88.16, -139.1, 924.54}; +static float P019[3] = {65.21, -148.61, 924.54}; +static float P020[3] = {246.87, -98.73, 1783.04}; +static float P021[3] = {253.17, 127.76, 1783.04}; +static float P022[3] = {132.34, 270.77, 1783.04}; +static float P023[3] = {-97.88, 285.04, 1783.04}; +static float P024[3] = {-222.97, 139.8, 1783.04}; +static float P025[3] = {-225.29, -86.68, 1783.04}; +static float P026[3] = {-108.44, -224.15, 1783.04}; +static float P027[3] = {97.88, -221.56, 1783.04}; +static float P028[3] = {410.55, -200.66, 3213.87}; +static float P029[3] = {432.19, 148.42, 3213.87}; +static float P030[3] = {200.66, 410.55, 3213.87}; +static float P031[3] = {-148.42, 432.19, 3213.87}; +static float P032[3] = {-407.48, 171.88, 3213.87}; +static float P033[3] = {-432.19, -148.42, 3213.87}; +static float P034[3] = {-148.88, -309.74, 3213.87}; +static float P035[3] = {156.38, -320.17, 3213.87}; +static float P036[3] = {523.39, -303.81, 4424.57}; +static float P037[3] = {574.66, 276.84, 4424.57}; +static float P038[3] = {243.05, 492.5, 4424.57}; +static float P039[3] = {-191.23, 520.13, 4424.57}; +static float P040[3] = {-523.39, 304.01, 4424.57}; +static float P041[3] = {-574.66, -231.83, 4424.57}; +static float P042[3] = {-266.95, -578.17, 4424.57}; +static float P043[3] = {211.14, -579.67, 4424.57}; +static float P044[3] = {680.57, -370.27, 5943.46}; +static float P045[3] = {834.01, 363.09, 5943.46}; +static float P046[3] = {371.29, 614.13, 5943.46}; +static float P047[3] = {-291.43, 621.86, 5943.46}; +static float P048[3] = {-784.13, 362.6, 5943.46}; +static float P049[3] = {-743.29, -325.82, 5943.46}; +static float P050[3] = {-383.24, -804.77, 5943.46}; +static float P051[3] = {283.47, -846.09, 5943.46}; +static const float P052[3] = {599.09, -332.24, 7902.59}; +static const float P053[3] = {735.48, 306.26, 7911.92}; +static const float P054[3] = {321.55, 558.53, 7902.59}; +static const float P055[3] = {-260.54, 559.84, 7902.59}; +static const float P056[3] = {-698.66, 320.83, 7902.59}; +static const float P057[3] = {-643.29, -299.16, 7902.59}; +static const float P058[3] = {-341.47, -719.3, 7902.59}; +static const float P059[3] = {252.57, -756.12, 7902.59}; +static const float P060[3] = {458.39, -265.31, 9355.44}; +static const float iP061[3] = {353.63, 138.7, 10214.2}; +static float P061[3] = {353.63, 138.7, 10214.2}; +static const float P062[3] = {224.04, 438.98, 9364.77}; +static const float P063[3] = {-165.71, 441.27, 9355.44}; +static const float iP064[3] = {-326.4, 162.04, 10209.54}; +static float P064[3] = {-326.4, 162.04, 10209.54}; +static const float P065[3] = {-473.99, -219.71, 9355.44}; +static const float P066[3] = {-211.97, -479.87, 9355.44}; +static const float P067[3] = {192.86, -504.03, 9355.44}; +static const float iP068[3] = {-112.44, 9.25, -64.42}; +static const float iP069[3] = {1155.63, 0, -182.46}; +static const float iP070[3] = {-1143.13, 0, -181.54}; +static const float iP071[3] = {1424.23, 0, -322.09}; +static const float iP072[3] = {-1368.01, 0, -310.38}; +static const float iP073[3] = {1255.57, 2.31, 114.05}; +static const float iP074[3] = {-1149.38, 0, 117.12}; +static const float iP075[3] = {718.36, 0, 433.36}; +static const float iP076[3] = {-655.9, 0, 433.36}; +static float P068[3] = {-112.44, 9.25, -64.42}; +static float P069[3] = {1155.63, 0, -182.46}; +static float P070[3] = {-1143.13, 0, -181.54}; +static float P071[3] = {1424.23, 0, -322.09}; +static float P072[3] = {-1368.01, 0, -310.38}; +static float P073[3] = {1255.57, 2.31, 114.05}; +static float P074[3] = {-1149.38, 0, 117.12}; +static float P075[3] = {718.36, 0, 433.36}; +static float P076[3] = {-655.9, 0, 433.36}; +static const float P077[3] = {1058, -2.66, 7923.51}; +static const float P078[3] = {-1016.51, -15.47, 7902.87}; +static const float P079[3] = {-1363.99, -484.5, 7593.38}; +static const float P080[3] = {1478.09, -861.47, 7098.12}; +static const float P081[3] = {1338.06, -284.68, 7024.15}; +static const float P082[3] = {-1545.51, -860.64, 7106.6}; +static const float P083[3] = {1063.19, -70.46, 7466.6}; +static const float P084[3] = {-1369.18, -288.11, 7015.34}; +static const float P085[3] = {1348.44, -482.5, 7591.41}; +static const float P086[3] = {-1015.45, -96.8, 7474.86}; +static const float P087[3] = {731.04, 148.38, 7682.58}; +static const float P088[3] = {-697.03, 151.82, 7668.81}; +static const float P089[3] = {-686.82, 157.09, 7922.29}; +static const float P090[3] = {724.73, 147.75, 7931.39}; +static const float iP091[3] = {0, 327.1, 2346.55}; +static const float iP092[3] = {0, 552.28, 2311.31}; +static const float iP093[3] = {0, 721.16, 2166.41}; +static const float iP094[3] = {0, 693.42, 2388.8}; +static const float iP095[3] = {0, 389.44, 2859.97}; +static float P091[3] = {0, 327.1, 2346.55}; +static float P092[3] = {0, 552.28, 2311.31}; +static float P093[3] = {0, 721.16, 2166.41}; +static float P094[3] = {0, 693.42, 2388.8}; +static float P095[3] = {0, 389.44, 2859.97}; +static const float iP096[3] = {222.02, -183.67, 10266.89}; +static const float iP097[3] = {-128.9, -182.7, 10266.89}; +static const float iP098[3] = {41.04, 88.31, 10659.36}; +static const float iP099[3] = {-48.73, 88.3, 10659.36}; +static float P096[3] = {222.02, -183.67, 10266.89}; +static float P097[3] = {-128.9, -182.7, 10266.89}; +static float P098[3] = {41.04, 88.31, 10659.36}; +static float P099[3] = {-48.73, 88.3, 10659.36}; +static const float P100[3] = {0, 603.42, 9340.68}; +#if 0 +static const float P101[3] = {5.7, 567, 7862.98}; +static const float P102[3] = {521.61, 156.61, 9162.34}; +static const float P103[3] = {83.68, 566.67, 7861.26}; +#endif +static const float P104[3] = {-9.86, 567.62, 7858.65}; +static const float P105[3] = {31.96, 565.27, 7908.46}; +static const float P106[3] = {22.75, 568.13, 7782.83}; +static const float P107[3] = {58.93, 568.42, 7775.94}; +static const float P108[3] = {55.91, 565.59, 7905.86}; +static const float P109[3] = {99.21, 566, 7858.65}; +static const float P110[3] = {-498.83, 148.14, 9135.1}; +static const float P111[3] = {-495.46, 133.24, 9158.48}; +static const float P112[3] = {-490.82, 146.23, 9182.76}; +static const float P113[3] = {-489.55, 174.11, 9183.66}; +static const float P114[3] = {-492.92, 189, 9160.28}; +static const float P115[3] = {-497.56, 176.02, 9136}; +static const float P116[3] = {526.54, 169.68, 9137.7}; +static const float P117[3] = {523.49, 184.85, 9161.42}; +static const float P118[3] = {518.56, 171.78, 9186.06}; +static const float P119[3] = {516.68, 143.53, 9186.98}; +static const float P120[3] = {519.73, 128.36, 9163.26}; +static const float P121[3] = {524.66, 141.43, 9138.62}; +/* *INDENT-ON* */ + + + +static void +Whale001(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N068); + glVertex3fv(P068); + glNormal3fv(N010); + glVertex3fv(P010); + glEnd(); + glBegin(cap); + glNormal3fv(N068); + glVertex3fv(P068); + glNormal3fv(N076); + glVertex3fv(P076); + glNormal3fv(N010); + glVertex3fv(P010); + glEnd(); + glBegin(cap); + glNormal3fv(N068); + glVertex3fv(P068); + glNormal3fv(N070); + glVertex3fv(P070); + glNormal3fv(N076); + glVertex3fv(P076); + glEnd(); + glBegin(cap); + glNormal3fv(N076); + glVertex3fv(P076); + glNormal3fv(N070); + glVertex3fv(P070); + glNormal3fv(N074); + glVertex3fv(P074); + glEnd(); + glBegin(cap); + glNormal3fv(N070); + glVertex3fv(P070); + glNormal3fv(N072); + glVertex3fv(P072); + glNormal3fv(N074); + glVertex3fv(P074); + glEnd(); + glBegin(cap); + glNormal3fv(N072); + glVertex3fv(P072); + glNormal3fv(N070); + glVertex3fv(P070); + glNormal3fv(N074); + glVertex3fv(P074); + glEnd(); + glBegin(cap); + glNormal3fv(N074); + glVertex3fv(P074); + glNormal3fv(N070); + glVertex3fv(P070); + glNormal3fv(N076); + glVertex3fv(P076); + glEnd(); + glBegin(cap); + glNormal3fv(N070); + glVertex3fv(P070); + glNormal3fv(N068); + glVertex3fv(P068); + glNormal3fv(N076); + glVertex3fv(P076); + glEnd(); + glBegin(cap); + glNormal3fv(N076); + glVertex3fv(P076); + glNormal3fv(N068); + glVertex3fv(P068); + glNormal3fv(N010); + glVertex3fv(P010); + glEnd(); + glBegin(cap); + glNormal3fv(N068); + glVertex3fv(P068); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N010); + glVertex3fv(P010); + glEnd(); +} + +static void +Whale002(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N009); + glVertex3fv(P009); + glEnd(); + glBegin(cap); + glNormal3fv(N075); + glVertex3fv(P075); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N009); + glVertex3fv(P009); + glEnd(); + glBegin(cap); + glNormal3fv(N069); + glVertex3fv(P069); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N075); + glVertex3fv(P075); + glEnd(); + glBegin(cap); + glNormal3fv(N069); + glVertex3fv(P069); + glNormal3fv(N075); + glVertex3fv(P075); + glNormal3fv(N073); + glVertex3fv(P073); + glEnd(); + glBegin(cap); + glNormal3fv(N071); + glVertex3fv(P071); + glNormal3fv(N069); + glVertex3fv(P069); + glNormal3fv(N073); + glVertex3fv(P073); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N009); + glVertex3fv(P009); + glEnd(); + glBegin(cap); + glNormal3fv(N009); + glVertex3fv(P009); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N075); + glVertex3fv(P075); + glEnd(); + glBegin(cap); + glNormal3fv(N011); + glVertex3fv(P011); + glNormal3fv(N069); + glVertex3fv(P069); + glNormal3fv(N075); + glVertex3fv(P075); + glEnd(); + glBegin(cap); + glNormal3fv(N069); + glVertex3fv(P069); + glNormal3fv(N073); + glVertex3fv(P073); + glNormal3fv(N075); + glVertex3fv(P075); + glEnd(); + glBegin(cap); + glNormal3fv(N069); + glVertex3fv(P069); + glNormal3fv(N071); + glVertex3fv(P071); + glNormal3fv(N073); + glVertex3fv(P073); + glEnd(); +} + +static void +Whale003(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N019); + glVertex3fv(P019); + glEnd(); + glBegin(cap); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N012); + glVertex3fv(P012); + glEnd(); + glBegin(cap); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N018); + glVertex3fv(P018); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N016); + glVertex3fv(P016); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N012); + glVertex3fv(P012); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N015); + glVertex3fv(P015); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N013); + glVertex3fv(P013); + glEnd(); + glBegin(cap); + glNormal3fv(N001); + glVertex3fv(P001); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N014); + glVertex3fv(P014); + glEnd(); +} + +static void +Whale004(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N022); + glVertex3fv(P022); + glEnd(); + glBegin(cap); + glNormal3fv(N015); + glVertex3fv(P015); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N023); + glVertex3fv(P023); + glEnd(); + glBegin(cap); + glNormal3fv(N016); + glVertex3fv(P016); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N024); + glVertex3fv(P024); + glEnd(); + glBegin(cap); + glNormal3fv(N017); + glVertex3fv(P017); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N025); + glVertex3fv(P025); + glEnd(); + glBegin(cap); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N014); + glVertex3fv(P014); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N021); + glVertex3fv(P021); + glEnd(); + glBegin(cap); + glNormal3fv(N012); + glVertex3fv(P012); + glNormal3fv(N013); + glVertex3fv(P013); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N020); + glVertex3fv(P020); + glEnd(); + glBegin(cap); + glNormal3fv(N018); + glVertex3fv(P018); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N026); + glVertex3fv(P026); + glEnd(); + glBegin(cap); + glNormal3fv(N019); + glVertex3fv(P019); + glNormal3fv(N012); + glVertex3fv(P012); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N027); + glVertex3fv(P027); + glEnd(); +} + +static void +Whale005(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N030); + glVertex3fv(P030); + glEnd(); + glBegin(cap); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N022); + glVertex3fv(P022); + glNormal3fv(N030); + glVertex3fv(P030); + glEnd(); + glBegin(cap); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); + glBegin(cap); + glNormal3fv(N023); + glVertex3fv(P023); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N031); + glVertex3fv(P031); + glEnd(); + glBegin(cap); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N031); + glVertex3fv(P031); + glEnd(); + glBegin(cap); + glNormal3fv(N024); + glVertex3fv(P024); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N032); + glVertex3fv(P032); + glEnd(); + glBegin(cap); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N032); + glVertex3fv(P032); + glEnd(); + glBegin(cap); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N021); + glVertex3fv(P021); + glNormal3fv(N029); + glVertex3fv(P029); + glEnd(); + glBegin(cap); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N028); + glVertex3fv(P028); + glEnd(); + glBegin(cap); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N020); + glVertex3fv(P020); + glNormal3fv(N028); + glVertex3fv(P028); + glEnd(); + glBegin(cap); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N035); + glVertex3fv(P035); + glEnd(); + glBegin(cap); + glNormal3fv(N025); + glVertex3fv(P025); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N033); + glVertex3fv(P033); + glEnd(); + glBegin(cap); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N034); + glVertex3fv(P034); + glEnd(); + glBegin(cap); + glNormal3fv(N026); + glVertex3fv(P026); + glNormal3fv(N027); + glVertex3fv(P027); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N034); + glVertex3fv(P034); + glEnd(); +} + +static void +Whale006(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N092); + glVertex3fv(P092); + glNormal3fv(N093); + glVertex3fv(P093); + glNormal3fv(N094); + glVertex3fv(P094); + glEnd(); + glBegin(cap); + glNormal3fv(N093); + glVertex3fv(P093); + glNormal3fv(N092); + glVertex3fv(P092); + glNormal3fv(N094); + glVertex3fv(P094); + glEnd(); + glBegin(cap); + glNormal3fv(N092); + glVertex3fv(P092); + glNormal3fv(N091); + glVertex3fv(P091); + glNormal3fv(N095); + glVertex3fv(P095); + glNormal3fv(N094); + glVertex3fv(P094); + glEnd(); + glBegin(cap); + glNormal3fv(N091); + glVertex3fv(P091); + glNormal3fv(N092); + glVertex3fv(P092); + glNormal3fv(N094); + glVertex3fv(P094); + glNormal3fv(N095); + glVertex3fv(P095); + glEnd(); +} + +static void +Whale007(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N038); + glVertex3fv(P038); + glEnd(); + glBegin(cap); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N030); + glVertex3fv(P030); + glNormal3fv(N038); + glVertex3fv(P038); + glEnd(); + glBegin(cap); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N037); + glVertex3fv(P037); + glEnd(); + glBegin(cap); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N029); + glVertex3fv(P029); + glNormal3fv(N037); + glVertex3fv(P037); + glEnd(); + glBegin(cap); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N036); + glVertex3fv(P036); + glEnd(); + glBegin(cap); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N028); + glVertex3fv(P028); + glNormal3fv(N036); + glVertex3fv(P036); + glEnd(); + glBegin(cap); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N043); + glVertex3fv(P043); + glEnd(); + glBegin(cap); + glNormal3fv(N034); + glVertex3fv(P034); + glNormal3fv(N035); + glVertex3fv(P035); + glNormal3fv(N043); + glVertex3fv(P043); + glNormal3fv(N042); + glVertex3fv(P042); + glEnd(); + glBegin(cap); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N034); + glVertex3fv(P034); + glNormal3fv(N042); + glVertex3fv(P042); + glEnd(); + glBegin(cap); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N041); + glVertex3fv(P041); + glEnd(); + glBegin(cap); + glNormal3fv(N031); + glVertex3fv(P031); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N039); + glVertex3fv(P039); + glEnd(); + glBegin(cap); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N040); + glVertex3fv(P040); + glEnd(); + glBegin(cap); + glNormal3fv(N032); + glVertex3fv(P032); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N040); + glVertex3fv(P040); + glEnd(); + glBegin(cap); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N033); + glVertex3fv(P033); + glNormal3fv(N041); + glVertex3fv(P041); + glEnd(); +} + +static void +Whale008(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N043); + glVertex3fv(P043); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N050); + glVertex3fv(P050); + glEnd(); + glBegin(cap); + glNormal3fv(N043); + glVertex3fv(P043); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N051); + glVertex3fv(P051); + glEnd(); + glBegin(cap); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N044); + glVertex3fv(P044); + glEnd(); + glBegin(cap); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N042); + glVertex3fv(P042); + glNormal3fv(N050); + glVertex3fv(P050); + glEnd(); + glBegin(cap); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N049); + glVertex3fv(P049); + glEnd(); + glBegin(cap); + glNormal3fv(N036); + glVertex3fv(P036); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N044); + glVertex3fv(P044); + glEnd(); + glBegin(cap); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N045); + glVertex3fv(P045); + glEnd(); + glBegin(cap); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N041); + glVertex3fv(P041); + glNormal3fv(N049); + glVertex3fv(P049); + glEnd(); + glBegin(cap); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N048); + glVertex3fv(P048); + glEnd(); + glBegin(cap); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N040); + glVertex3fv(P040); + glNormal3fv(N048); + glVertex3fv(P048); + glEnd(); + glBegin(cap); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N047); + glVertex3fv(P047); + glEnd(); + glBegin(cap); + glNormal3fv(N037); + glVertex3fv(P037); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N045); + glVertex3fv(P045); + glEnd(); + glBegin(cap); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N045); + glVertex3fv(P045); + glEnd(); + glBegin(cap); + glNormal3fv(N038); + glVertex3fv(P038); + glNormal3fv(N039); + glVertex3fv(P039); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N046); + glVertex3fv(P046); + glEnd(); +} + +static void +Whale009(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N058); + glVertex3fv(P058); + glEnd(); + glBegin(cap); + glNormal3fv(N051); + glVertex3fv(P051); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N059); + glVertex3fv(P059); + glEnd(); + glBegin(cap); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N052); + glVertex3fv(P052); + glEnd(); + glBegin(cap); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N045); + glVertex3fv(P045); + glNormal3fv(N053); + glVertex3fv(P053); + glEnd(); + glBegin(cap); + glNormal3fv(N044); + glVertex3fv(P044); + glNormal3fv(N053); + glVertex3fv(P053); + glNormal3fv(N052); + glVertex3fv(P052); + glEnd(); + glBegin(cap); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N050); + glVertex3fv(P050); + glNormal3fv(N058); + glVertex3fv(P058); + glEnd(); + glBegin(cap); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N057); + glVertex3fv(P057); + glEnd(); + glBegin(cap); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N049); + glVertex3fv(P049); + glNormal3fv(N057); + glVertex3fv(P057); + glEnd(); + glBegin(cap); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N057); + glVertex3fv(P057); + glNormal3fv(N056); + glVertex3fv(P056); + glEnd(); + glBegin(cap); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N048); + glVertex3fv(P048); + glNormal3fv(N056); + glVertex3fv(P056); + glEnd(); + glBegin(cap); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N055); + glVertex3fv(P055); + glEnd(); + glBegin(cap); + glNormal3fv(N045); + glVertex3fv(P045); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N053); + glVertex3fv(P053); + glEnd(); + glBegin(cap); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N054); + glVertex3fv(P054); + glNormal3fv(N053); + glVertex3fv(P053); + glEnd(); + glBegin(cap); + glNormal3fv(N046); + glVertex3fv(P046); + glNormal3fv(N047); + glVertex3fv(P047); + glNormal3fv(N055); + glVertex3fv(P055); + glNormal3fv(N054); + glVertex3fv(P054); + glEnd(); +} + +static void +Whale010(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N080); + glVertex3fv(P080); + glNormal3fv(N081); + glVertex3fv(P081); + glNormal3fv(N085); + glVertex3fv(P085); + glEnd(); + glBegin(cap); + glNormal3fv(N081); + glVertex3fv(P081); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N085); + glVertex3fv(P085); + glEnd(); + glBegin(cap); + glNormal3fv(N085); + glVertex3fv(P085); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N077); + glVertex3fv(P077); + glEnd(); + glBegin(cap); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N087); + glVertex3fv(P087); + glNormal3fv(N077); + glVertex3fv(P077); + glEnd(); + glBegin(cap); + glNormal3fv(N077); + glVertex3fv(P077); + glNormal3fv(N087); + glVertex3fv(P087); + glNormal3fv(N090); + glVertex3fv(P090); + glEnd(); + glBegin(cap); + glNormal3fv(N081); + glVertex3fv(P081); + glNormal3fv(N080); + glVertex3fv(P080); + glNormal3fv(N085); + glVertex3fv(P085); + glEnd(); + glBegin(cap); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N081); + glVertex3fv(P081); + glNormal3fv(N085); + glVertex3fv(P085); + glEnd(); + glBegin(cap); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N085); + glVertex3fv(P085); + glNormal3fv(N077); + glVertex3fv(P077); + glEnd(); + glBegin(cap); + glNormal3fv(N087); + glVertex3fv(P087); + glNormal3fv(N083); + glVertex3fv(P083); + glNormal3fv(N077); + glVertex3fv(P077); + glEnd(); + glBegin(cap); + glNormal3fv(N087); + glVertex3fv(P087); + glNormal3fv(N077); + glVertex3fv(P077); + glNormal3fv(N090); + glVertex3fv(P090); + glEnd(); +} + +static void +Whale011(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N082); + glVertex3fv(P082); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N079); + glVertex3fv(P079); + glEnd(); + glBegin(cap); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N079); + glVertex3fv(P079); + glEnd(); + glBegin(cap); + glNormal3fv(N079); + glVertex3fv(P079); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N078); + glVertex3fv(P078); + glEnd(); + glBegin(cap); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N088); + glVertex3fv(P088); + glNormal3fv(N078); + glVertex3fv(P078); + glEnd(); + glBegin(cap); + glNormal3fv(N078); + glVertex3fv(P078); + glNormal3fv(N088); + glVertex3fv(P088); + glNormal3fv(N089); + glVertex3fv(P089); + glEnd(); + glBegin(cap); + glNormal3fv(N088); + glVertex3fv(P088); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N089); + glVertex3fv(P089); + glEnd(); + glBegin(cap); + glNormal3fv(N089); + glVertex3fv(P089); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N078); + glVertex3fv(P078); + glEnd(); + glBegin(cap); + glNormal3fv(N086); + glVertex3fv(P086); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N078); + glVertex3fv(P078); + glEnd(); + glBegin(cap); + glNormal3fv(N078); + glVertex3fv(P078); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N079); + glVertex3fv(P079); + glEnd(); + glBegin(cap); + glNormal3fv(N084); + glVertex3fv(P084); + glNormal3fv(N082); + glVertex3fv(P082); + glNormal3fv(N079); + glVertex3fv(P079); + glEnd(); +} + +static void +Whale012(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N067); + glVertex3fv(P067); + glNormal3fv(N066); + glVertex3fv(P066); + glEnd(); + glBegin(cap); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N052); + glVertex3fv(P052); + glNormal3fv(N060); + glVertex3fv(P060); + glEnd(); + glBegin(cap); + glNormal3fv(N059); + glVertex3fv(P059); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N067); + glVertex3fv(P067); + glEnd(); + glBegin(cap); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N065); + glVertex3fv(P065); + glEnd(); + glBegin(cap); + glNormal3fv(N058); + glVertex3fv(P058); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N057); + glVertex3fv(P057); + glEnd(); + glBegin(cap); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N057); + glVertex3fv(P057); + glNormal3fv(N065); + glVertex3fv(P065); + glEnd(); + glBegin(cap); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N006); + glVertex3fv(P006); + glEnd(); + glBegin(cap); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N063); + glVertex3fv(P063); + glEnd(); + glBegin(cap); + glNormal3fv(N056); + glVertex3fv(P056); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N055); + glVertex3fv(P055); + glEnd(); + glBegin(cap); + glNormal3fv(N054); + glVertex3fv(P054); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N005); + glVertex3fv(P005); + glEnd(); + glBegin(cap); + glNormal3fv(N054); + glVertex3fv(P054); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N053); + glVertex3fv(P053); + glEnd(); + glBegin(cap); + glNormal3fv(N053); + glVertex3fv(P053); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N060); + glVertex3fv(P060); + glEnd(); + glBegin(cap); + glNormal3fv(N053); + glVertex3fv(P053); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N052); + glVertex3fv(P052); + glEnd(); +} + +static void +Whale013(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N067); + glVertex3fv(P067); + glNormal3fv(N096); + glVertex3fv(P096); + glNormal3fv(N097); + glVertex3fv(P097); + glEnd(); + glBegin(cap); + glNormal3fv(N097); + glVertex3fv(P097); + glNormal3fv(N096); + glVertex3fv(P096); + glNormal3fv(N098); + glVertex3fv(P098); + glNormal3fv(N099); + glVertex3fv(P099); + glEnd(); + glBegin(cap); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N066); + glVertex3fv(P066); + glNormal3fv(N097); + glVertex3fv(P097); + glEnd(); + glBegin(cap); + glNormal3fv(N067); + glVertex3fv(P067); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N096); + glVertex3fv(P096); + glEnd(); + glBegin(cap); + glNormal3fv(N060); + glVertex3fv(P060); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N096); + glVertex3fv(P096); + glEnd(); + glBegin(cap); + glNormal3fv(N096); + glVertex3fv(P096); + glNormal3fv(N005); + glVertex3fv(P005); + glNormal3fv(N098); + glVertex3fv(P098); + glEnd(); + glBegin(cap); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N065); + glVertex3fv(P065); + glNormal3fv(N097); + glVertex3fv(P097); + glEnd(); + glBegin(cap); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N097); + glVertex3fv(P097); + glNormal3fv(N099); + glVertex3fv(P099); + glEnd(); + glBegin(cap); + glVertex3fv(P005); + glVertex3fv(P006); + glVertex3fv(P099); + glVertex3fv(P098); + glEnd(); +} + +static void +Whale014(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N004); + glVertex3fv(P004); + glNormal3fv(N005); + glVertex3fv(P005); + glEnd(); + glBegin(cap); + glVertex3fv(P006); + glVertex3fv(P005); + glVertex3fv(P004); + glVertex3fv(P008); + glEnd(); + glBegin(cap); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N002); + glVertex3fv(P002); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N006); + glVertex3fv(P006); + glNormal3fv(N008); + glVertex3fv(P008); + glEnd(); + glBegin(cap); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N008); + glVertex3fv(P008); + glNormal3fv(N004); + glVertex3fv(P004); + glEnd(); + glBegin(cap); + glNormal3fv(N062); + glVertex3fv(P062); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N004); + glVertex3fv(P004); + glEnd(); +} + +static void +Whale015(GLenum cap) +{ + glBegin(cap); + glNormal3fv(N055); + glVertex3fv(P055); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N054); + glVertex3fv(P054); + glEnd(); + glBegin(cap); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N055); + glVertex3fv(P055); + glNormal3fv(N063); + glVertex3fv(P063); + glEnd(); + glBegin(cap); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N100); + glVertex3fv(P100); + glEnd(); + glBegin(cap); + glNormal3fv(N003); + glVertex3fv(P003); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N054); + glVertex3fv(P054); + glEnd(); + glBegin(cap); + glNormal3fv(N054); + glVertex3fv(P054); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N062); + glVertex3fv(P062); + glEnd(); + glBegin(cap); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N063); + glVertex3fv(P063); + glNormal3fv(N002); + glVertex3fv(P002); + glEnd(); + glBegin(cap); + glNormal3fv(N100); + glVertex3fv(P100); + glNormal3fv(N002); + glVertex3fv(P002); + glNormal3fv(N062); + glVertex3fv(P062); + glEnd(); +} + +static void +Whale016(GLenum cap) +{ + glBegin(cap); + glVertex3fv(P104); + glVertex3fv(P105); + glVertex3fv(P106); + glEnd(); + glBegin(cap); + glVertex3fv(P107); + glVertex3fv(P108); + glVertex3fv(P109); + glEnd(); + glBegin(cap); + glVertex3fv(P110); + glVertex3fv(P111); + glVertex3fv(P112); + glVertex3fv(P113); + glVertex3fv(P114); + glVertex3fv(P115); + glEnd(); + glBegin(cap); + glVertex3fv(P116); + glVertex3fv(P117); + glVertex3fv(P118); + glVertex3fv(P119); + glVertex3fv(P120); + glVertex3fv(P121); + glEnd(); +} + +void +DrawWhale(fishRec * fish, int wire) +{ + float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7; + float pitch, thrash, chomp; + GLenum cap; + + fish->htail = (int) (fish->htail - (int) (5 * fish->v)) % 360; + + thrash = 70 * fish->v; + + seg0 = 1.5 * thrash * sin((fish->htail) * RRAD); + seg1 = 2.5 * thrash * sin((fish->htail + 10) * RRAD); + seg2 = 3.7 * thrash * sin((fish->htail + 15) * RRAD); + seg3 = 4.8 * thrash * sin((fish->htail + 23) * RRAD); + seg4 = 6 * thrash * sin((fish->htail + 28) * RRAD); + seg5 = 6.5 * thrash * sin((fish->htail + 35) * RRAD); + seg6 = 6.5 * thrash * sin((fish->htail + 40) * RRAD); + seg7 = 6.5 * thrash * sin((fish->htail + 55) * RRAD); + + pitch = fish->v * sin((fish->htail - 160) * RRAD); + + chomp = 0; + if (fish->v > 2) { + chomp = -(fish->v - 2) * 200; + } + P012[1] = iP012[1] + seg5; + P013[1] = iP013[1] + seg5; + P014[1] = iP014[1] + seg5; + P015[1] = iP015[1] + seg5; + P016[1] = iP016[1] + seg5; + P017[1] = iP017[1] + seg5; + P018[1] = iP018[1] + seg5; + P019[1] = iP019[1] + seg5; + + P020[1] = iP020[1] + seg4; + P021[1] = iP021[1] + seg4; + P022[1] = iP022[1] + seg4; + P023[1] = iP023[1] + seg4; + P024[1] = iP024[1] + seg4; + P025[1] = iP025[1] + seg4; + P026[1] = iP026[1] + seg4; + P027[1] = iP027[1] + seg4; + + P028[1] = iP028[1] + seg2; + P029[1] = iP029[1] + seg2; + P030[1] = iP030[1] + seg2; + P031[1] = iP031[1] + seg2; + P032[1] = iP032[1] + seg2; + P033[1] = iP033[1] + seg2; + P034[1] = iP034[1] + seg2; + P035[1] = iP035[1] + seg2; + + P036[1] = iP036[1] + seg1; + P037[1] = iP037[1] + seg1; + P038[1] = iP038[1] + seg1; + P039[1] = iP039[1] + seg1; + P040[1] = iP040[1] + seg1; + P041[1] = iP041[1] + seg1; + P042[1] = iP042[1] + seg1; + P043[1] = iP043[1] + seg1; + + P044[1] = iP044[1] + seg0; + P045[1] = iP045[1] + seg0; + P046[1] = iP046[1] + seg0; + P047[1] = iP047[1] + seg0; + P048[1] = iP048[1] + seg0; + P049[1] = iP049[1] + seg0; + P050[1] = iP050[1] + seg0; + P051[1] = iP051[1] + seg0; + + P009[1] = iP009[1] + seg6; + P010[1] = iP010[1] + seg6; + P075[1] = iP075[1] + seg6; + P076[1] = iP076[1] + seg6; + + P001[1] = iP001[1] + seg7; + P011[1] = iP011[1] + seg7; + P068[1] = iP068[1] + seg7; + P069[1] = iP069[1] + seg7; + P070[1] = iP070[1] + seg7; + P071[1] = iP071[1] + seg7; + P072[1] = iP072[1] + seg7; + P073[1] = iP073[1] + seg7; + P074[1] = iP074[1] + seg7; + + P091[1] = iP091[1] + seg3 * 1.1; + P092[1] = iP092[1] + seg3; + P093[1] = iP093[1] + seg3; + P094[1] = iP094[1] + seg3; + P095[1] = iP095[1] + seg3 * 0.9; + + P099[1] = iP099[1] + chomp; + P098[1] = iP098[1] + chomp; + P064[1] = iP064[1] + chomp; + P061[1] = iP061[1] + chomp; + P097[1] = iP097[1] + chomp; + P096[1] = iP096[1] + chomp; + + glPushMatrix(); + + glRotatef(pitch, 1, 0, 0); + + glTranslatef(0, 0, 8000); + + glRotatef(180, 0, 1, 0); + + glScalef(3, 3, 3); + + glEnable(GL_CULL_FACE); + + cap = wire ? GL_LINE_LOOP : GL_POLYGON; + Whale001(cap); + Whale002(cap); + Whale003(cap); + Whale004(cap); + Whale005(cap); + Whale006(cap); + Whale007(cap); + Whale008(cap); + Whale009(cap); + Whale010(cap); + Whale011(cap); + Whale012(cap); + Whale013(cap); + Whale014(cap); + Whale015(cap); + Whale016(cap); + + glDisable(GL_CULL_FACE); + + glPopMatrix(); +} +#endif diff --git a/hacks/glx/winduprobot.c b/hacks/glx/winduprobot.c new file mode 100644 index 0000000..61091cf --- /dev/null +++ b/hacks/glx/winduprobot.c @@ -0,0 +1,2483 @@ +/* winduprobot, Copyright (c) 2014-2018 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Draws a robot wind-up toy. + * + * I've had this little robot since I was about six years old! When the time + * came for us to throw the Cocktail Robotics Grand Challenge at DNA Lounge, I + * photographed this robot (holding a tiny martini glass) to make a flyer for + * the event. You can see that photo here: + * https://www.dnalounge.com/flyers/2014/09/14.html + * + * Then I decided to try and make award statues for the contest by modeling + * this robot and 3D-printing it (a robot on a post, with the DNA Lounge + * grommet around it.) So I learned Maya and built a model. + * + * Well, that 3D printing idea didn't work out, but since I had the model + * already, I exported it and turned it into a screen saver. + * + * The DXF files that Maya exports aren't simple enough for my dxf2gl.pl + * script to process, so the exporting process went: + * + * - Save from Maya to OBJ; + * - Import OBJ into SketchUp using + * http://www.scriptspot.com/sketchup/scripts/obj-importer + * - Clean up the model a little bit more; + * - Export to DXF with "Millimeters", "Triangles", using + * http://www.guitar-list.com/download-software/convert-sketchup-skp-files-dxf-or-stl + * + * We did eventually end up with robotic award statues, but we constructed + * them out of mass-produced wind-up robots, rather than 3D printing them: + * https://www.dnalounge.com/gallery/2014/09-14/045.html + * https://www.youtube.com/watch?v=EZF4ZAAy49g + */ + +#define LABEL_FONT "-*-helvetica-bold-r-normal-*-*-240-*-*-*-*-*-*" + +#define DEFAULTS "*delay: 20000 \n" \ + "*count: 25 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*labelFont: " LABEL_FONT "\n" \ + "*legColor: #AA2222" "\n" \ + "*armColor: #AA2222" "\n" \ + "*handColor: #AA2222" "\n" \ + "*crankColor: #444444" "\n" \ + "*bodyColor: #7777AA" "\n" \ + "*domeColor: #7777AA" "\n" \ + "*insideColor: #DDDDDD" "\n" \ + "*gearboxColor: #444488" "\n" \ + "*gearColor: #008877" "\n" \ + "*wheelColor: #007788" "\n" \ + "*wireColor: #006600" "\n" \ + "*groundColor: #0000FF" "\n" \ + "*textColor: #FFFFFF""\n" \ + "*textBackground: #444444""\n" \ + "*textBorderColor: #FFFF88""\n" \ + "*textLines: 10 \n" \ + "*program: xscreensaver-text\n" \ + "*usePty: False\n" + +#undef DEBUG +#define WORDBUBBLES + +# define release_robot 0 +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#define DEF_SPEED "1.0" +#define DEF_ROBOT_SIZE "1.0" +#define DEF_TEXTURE "True" +#define DEF_FADE "True" +#define DEF_OPACITY "1.0" +#define DEF_TALK "0.2" + +#include "xlockmore.h" +#include "gltrackball.h" +#include "ximage-loader.h" +#include "involute.h" +#include "sphere.h" + +#ifdef WORDBUBBLES +# include "textclient.h" +# include "texfont.h" +#endif + +#include + +#ifndef HAVE_JWZGLES /* No SPHERE_MAP on iPhone */ +# define HAVE_TEXTURE +#endif + +#ifdef HAVE_TEXTURE +# include "images/gen/chromesphere_png.h" +#endif + +#ifdef USE_GL /* whole file */ + +#include "gllist.h" + +extern const struct gllist + *robot_arm_half, *robot_body_half_outside, *robot_body_half_inside, + *robot_crank_full, *robot_gearbox_half, *robot_hand_half, + *robot_leg_half, *robot_rotator_half, *robot_wireframe; + +static struct gllist *robot_dome = 0, *robot_gear = 0, *ground = 0; + +static const struct gllist * const *all_objs[] = { + &robot_arm_half, &robot_body_half_outside, &robot_body_half_inside, + &robot_crank_full, &robot_gearbox_half, &robot_hand_half, + &robot_leg_half, &robot_rotator_half, &robot_wireframe, + (const struct gllist * const *) &robot_dome, + (const struct gllist * const *) &robot_gear, + (const struct gllist * const *) &ground +}; + +#define ROBOT_ARM 0 +#define ROBOT_BODY_1 1 +#define ROBOT_BODY_2 2 +#define ROBOT_CRANK 3 +#define ROBOT_GEARBOX 4 +#define ROBOT_HAND 5 +#define ROBOT_LEG 6 +#define ROBOT_ROTATOR 7 +#define ROBOT_WIREFRAME 8 +#define ROBOT_DOME 9 +#define ROBOT_GEAR 10 +#define GROUND 11 + +typedef struct { + GLfloat x, y, z; /* position */ + GLfloat facing; /* direction of front of robot, degrees */ + GLfloat pitch; /* front/back tilt angle, degrees */ + GLfloat roll; /* left/right tilt angle, degrees */ + GLfloat speed; /* some robots are faster */ + GLfloat crank_rot; /* gear state, degrees */ + GLfloat hand_rot[2]; /* rotation of the hands, degrees */ + GLfloat hand_pos[2]; /* openness of the hands, ratio */ + GLfloat balance; /* how off-true does it walk? degrees */ + GLfloat body_transparency; /* ratio */ + int fading_p; /* -1, 0, 1 */ + +} walker; + +typedef struct { + GLXContext *glx_context; + trackball_state *user_trackball; + Bool button_down_p; + + GLuint *dlists; + GLfloat component_colors[countof(all_objs)][4]; + + int nwalkers; + walker *walkers; + + GLfloat looking_x, looking_y, looking_z; /* Where camera is aimed */ + GLfloat olooking_x, olooking_y, olooking_z; /* Where camera was aimed */ + Bool camera_tracking_p; /* Whether camera in motion */ + GLfloat tracking_ratio; + +# ifdef HAVE_TEXTURE + GLuint chrome_texture; +# endif + +# ifdef WORDBUBBLES + texture_font_data *font_data; + int bubble_tick; + text_data *tc; + char words[10240]; + int lines, max_lines; + + GLfloat text_color[4], text_bg[4], text_bd[4]; + +# endif /* WORDBUBBLES */ + + +# ifdef DEBUG + GLfloat debug_x, debug_y, debug_z; +# endif + +} robot_configuration; + +static robot_configuration *bps = NULL; + +static GLfloat speed, size, opacity; +static int do_texture, do_fade; +#ifdef WORDBUBBLES +static GLfloat talk_chance; +#endif +#ifdef DEBUG +static int debug_p; +#endif + +static XrmOptionDescRec opts[] = { + { "-speed", ".speed", XrmoptionSepArg, 0 }, + { "-size", ".robotSize", XrmoptionSepArg, 0 }, + { "-opacity", ".opacity", XrmoptionSepArg, 0 }, + { "-talk", ".talk", XrmoptionSepArg, 0 }, + {"-texture", ".texture", XrmoptionNoArg, "True" }, + {"+texture", ".texture", XrmoptionNoArg, "False" }, + {"-fade", ".fade", XrmoptionNoArg, "True" }, + {"+fade", ".fade", XrmoptionNoArg, "False" }, +#ifdef DEBUG + {"-debug", ".debug", XrmoptionNoArg, "True" }, + {"+debug", ".debug", XrmoptionNoArg, "False" }, +#endif +}; + +static argtype vars[] = { + {&speed, "speed", "Speed", DEF_SPEED, t_Float}, + {&size, "robotSize", "RobotSize", DEF_ROBOT_SIZE, t_Float}, + {&opacity, "opacity", "Opacity", DEF_OPACITY, t_Float}, + {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {&do_fade, "fade", "Fade", DEF_FADE, t_Bool}, +#ifdef WORDBUBBLES + {&talk_chance, "talk", "Talk", DEF_TALK, t_Float}, +#endif +#ifdef DEBUG + {&debug_p, "debug", "Debug", "False", t_Bool}, +#endif +}; + +ENTRYPOINT ModeSpecOpt robot_opts = { + countof(opts), opts, countof(vars), vars, NULL}; + + +/* Window management, etc + */ +ENTRYPOINT void +reshape_robot (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, width, height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective (40.0, 1/h, 1.0, 250); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt( 0, 0, 30, + 0, 0, 0, + 0, 1, 0); + + glClear(GL_COLOR_BUFFER_BIT); + +# ifdef WORDBUBBLES + { + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + int w = (width < 800 ? 25 : 40); + int h = 1000; + if (bp->tc) + textclient_reshape (bp->tc, w, h, w, h, + /* Passing bp->max_lines isn't actually necessary */ + 0); + } +# endif + +} + + +ENTRYPOINT Bool +robot_handle_event (ModeInfo *mi, XEvent *event) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + + if (gltrackball_event_handler (event, bp->user_trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &bp->button_down_p)) + return True; +#ifdef DEBUG + else if (event->xany.type == KeyPress && debug_p) + { + KeySym keysym; + char c = 0; + double n[3] = { 1.0, 0.1, 0.1 }; + int s = (event->xkey.state & ShiftMask ? 10 : 1); + + XLookupString (&event->xkey, &c, 1, &keysym, 0); + + if (keysym == XK_Right) bp->debug_x += n[0] * s; + else if (keysym == XK_Left) bp->debug_x -= n[0] * s; + else if (keysym == XK_Up) bp->debug_y += n[1] * s; + else if (keysym == XK_Down) bp->debug_y -= n[1] * s; + else if (c == '=' || c == '+') bp->debug_z += n[2] * s; + else if (c == '-' || c == '_') bp->debug_z -= n[2] * s; + else if (c == ' ') bp->debug_x = bp->debug_y = bp->debug_z = 0; + else if (c == '\n' || c == '\r') + fprintf (stderr, "%.4f %.4f %.4f\n", + bp->debug_x, bp->debug_y, bp->debug_z); + else return False; + return True; + } +#endif /* DEBUG */ + + return False; +} + + +#ifdef HAVE_TEXTURE + +static void +load_textures (ModeInfo *mi) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + XImage *xi; + + xi = image_data_to_ximage (mi->dpy, mi->xgwa.visual, + chromesphere_png, sizeof(chromesphere_png)); + clear_gl_error(); + + glGenTextures (1, &bp->chrome_texture); + glBindTexture (GL_TEXTURE_2D, bp->chrome_texture); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + xi->width, xi->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, xi->data); + check_gl_error("texture"); + + glEnable(GL_TEXTURE_GEN_S); + glEnable(GL_TEXTURE_GEN_T); + glEnable(GL_TEXTURE_2D); +} + +#endif /* HAVE_TEXTURE */ + + +static int unit_gear (ModeInfo *, GLfloat color[4]); +static int draw_ground (ModeInfo *, GLfloat color[4]); +static void init_walker (ModeInfo *, walker *); + +static void +parse_color (ModeInfo *mi, char *key, GLfloat color[4]) +{ + XColor xcolor; + char *string = get_string_resource (mi->dpy, key, "RobotColor"); + if (!XParseColor (mi->dpy, mi->xgwa.colormap, string, &xcolor)) + { + fprintf (stderr, "%s: unparsable color in %s: %s\n", progname, + key, string); + exit (1); + } + + color[0] = xcolor.red / 65536.0; + color[1] = xcolor.green / 65536.0; + color[2] = xcolor.blue / 65536.0; + color[3] = 1; +} + + +ENTRYPOINT void +init_robot (ModeInfo *mi) +{ + robot_configuration *bp; + int wire = MI_IS_WIREFRAME(mi); + int i; + MI_INIT (mi, bps); + + bp = &bps[MI_SCREEN(mi)]; + + bp->glx_context = init_GL(mi); + + reshape_robot (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (!wire) + { + GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0}; +/* GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};*/ + GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + +# ifdef HAVE_TEXTURE + if (!wire && do_texture) + load_textures (mi); +# endif + + bp->user_trackball = gltrackball_init (False); + + bp->dlists = (GLuint *) calloc (countof(all_objs)+1, sizeof(GLuint)); + for (i = 0; i < countof(all_objs); i++) + bp->dlists[i] = glGenLists (1); + + for (i = 0; i < countof(all_objs); i++) + { + const struct gllist *gll = *all_objs[i]; + char *key = 0; + GLfloat spec1[4] = {1.00, 1.00, 1.00, 1.0}; + GLfloat spec2[4] = {0.40, 0.40, 0.70, 1.0}; + GLfloat *spec = 0; + GLfloat shiny = 20; + + glNewList (bp->dlists[i], GL_COMPILE); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glMatrixMode(GL_MODELVIEW); + + glRotatef (-90, 1, 0, 0); + glRotatef (180, 0, 0, 1); + glScalef (6, 6, 6); + + glBindTexture (GL_TEXTURE_2D, 0); + + switch (i) { + case ROBOT_BODY_1: + key = "bodyColor"; + spec = spec1; + shiny = 128; +# ifdef HAVE_TEXTURE + if (do_texture) + { + glBindTexture (GL_TEXTURE_2D, bp->chrome_texture); + glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); + glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); + } +# endif + break; + case ROBOT_DOME: + key = "domeColor"; + spec = spec1; + shiny = 128; +# ifdef HAVE_TEXTURE + if (do_texture) + { + glBindTexture (GL_TEXTURE_2D, bp->chrome_texture); + glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); + glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); + } +# endif + break; + case ROBOT_BODY_2: + key = "insideColor"; + spec = spec2; + shiny = 128; + break; + case ROBOT_ARM: + key = "armColor"; + spec = spec2; + shiny = 20; + break; + case ROBOT_HAND: + key = "handColor"; + spec = spec2; + shiny = 20; + break; + case ROBOT_LEG: + key = "legColor"; + spec = spec2; + shiny = 20; + break; + case ROBOT_CRANK: + key = "crankColor"; + spec = spec2; + shiny = 20; + break; + case ROBOT_ROTATOR: + key = "wheelColor"; + spec = spec2; + shiny = 20; + break; + case ROBOT_GEAR: + key = "gearColor"; + spec = spec2; + shiny = 20; + break; + case ROBOT_GEARBOX: + key = "gearboxColor"; + spec = spec2; + shiny = 20; + break; + case ROBOT_WIREFRAME: + key = "wireColor"; + spec = spec2; + shiny = 20; + break; + case GROUND: + key = "groundColor"; + spec = spec2; + shiny = 20; + break; + default: + abort(); + } + + parse_color (mi, key, bp->component_colors[i]); + + glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); + glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny); + + switch (i) { + case ROBOT_DOME: + if (! robot_dome) + robot_dome = (struct gllist *) calloc (1, sizeof(*robot_dome)); + robot_dome->points = unit_dome (32, 32, MI_IS_WIREFRAME(mi)); + break; + case ROBOT_GEAR: + if (! robot_gear) + robot_gear = (struct gllist *) calloc (1, sizeof(*robot_gear)); + robot_gear->points = unit_gear (mi, bp->component_colors[i]); + break; + case GROUND: + if (! ground) + ground = (struct gllist *) calloc (1, sizeof(*ground)); + ground->points = draw_ground (mi, bp->component_colors[i]); + break; + case ROBOT_WIREFRAME: + glLineWidth (0.3); + renderList (gll, True); + break; + default: + renderList (gll, wire); + /* glColor3f (1, 1, 1); renderListNormals (gll, 100, True); */ + /* glColor3f (1, 1, 0); renderListNormals (gll, 100, False); */ + break; + } + + glMatrixMode(GL_TEXTURE); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + + glEndList (); + } + +# ifdef DEBUG + if (debug_p) MI_COUNT(mi) = 1; +# endif + + bp->nwalkers = MI_COUNT(mi); + bp->walkers = (walker *) calloc (bp->nwalkers, sizeof (walker)); + + for (i = 0; i < bp->nwalkers; i++) + init_walker (mi, &bp->walkers[i]); + + /* Since #0 is the one we track, make sure it doesn't walk too straight. + */ + bp->walkers[0].balance *= 1.5; + +# ifdef WORDBUBBLES + bp->font_data = load_texture_font (mi->dpy, "labelFont"); + bp->max_lines = get_integer_resource (mi->dpy, "textLines", "TextLines"); + bp->tc = textclient_open (MI_DISPLAY (mi)); + + parse_color (mi, "textColor", bp->text_color); + parse_color (mi, "textBackground", bp->text_bg); + parse_color (mi, "textBorderColor", bp->text_bd); + + reshape_robot (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + +# endif /* WORDBUBBLES */ + +# ifdef DEBUG + if (!debug_p) +# endif + /* Let's tilt the floor a little. */ + gltrackball_reset (bp->user_trackball, + -0.6 + frand(1.2), + -0.6 + frand(0.2)); +} + + +static int +draw_component (ModeInfo *mi, int i) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, + bp->component_colors[i]); + glCallList (bp->dlists[i]); + return (*all_objs[i])->points / 3; +} + +static int +draw_transparent_component (ModeInfo *mi, int i, GLfloat alpha) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int count = 0; + + if (alpha < 0) return 0; + if (alpha > 1) alpha = 1; + bp->component_colors[i][3] = alpha; + + if (wire || alpha >= 1) + return draw_component (mi, i); + + /* Draw into the depth buffer but not the frame buffer */ + glColorMask (GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + count += draw_component (mi, i); + + /* Now draw into the frame buffer only where there's already depth */ + glColorMask (GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glDepthFunc (GL_EQUAL); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + count += draw_component (mi, i); + glDepthFunc (GL_LESS); + glDisable (GL_BLEND); + return count; +} + + + +static int +draw_arm_half (ModeInfo *mi, walker *f) +{ + int count = 0; + glPushMatrix(); + count += draw_transparent_component (mi, ROBOT_ARM, f->body_transparency); + glPopMatrix(); + return count; +} + +static int +draw_hand_half (ModeInfo *mi, walker *f) +{ + int count = 0; + glPushMatrix(); + count += draw_transparent_component (mi, ROBOT_HAND, f->body_transparency); + glPopMatrix(); + return count; +} + + +/* rotation of arm: 0-360. + openness of fingers: 0.0 - 1.0. + */ +static int +draw_arm (ModeInfo *mi, walker *f, GLfloat left_p, GLfloat rot, GLfloat open) +{ + int count = 0; + GLfloat arm_x = 4766; /* distance from origin to arm axis */ + GLfloat arm_y = 12212; + + open *= 5.5; /* scale of finger range */ + +# ifdef DEBUG + if (debug_p) rot = 0; +# endif + + glPushMatrix(); + + if (! left_p) + glTranslatef (0, 0, arm_x * 2); + + glTranslatef (0, arm_y, -arm_x); /* move to origin */ + glRotatef (rot, 1, 0, 0); + glTranslatef (0, -arm_y, arm_x); /* move back */ + + glFrontFace(GL_CCW); + count += draw_arm_half (mi, f); + + glScalef (1, -1, 1); + glTranslatef (0, -arm_y * 2, 0); + glFrontFace(GL_CW); + count += draw_arm_half (mi, f); + + glPushMatrix(); + glTranslatef (0, 0, -arm_x * 2); + glScalef (1, 1, -1); + glFrontFace(GL_CCW); + count += draw_arm_half (mi, f); + + glScalef (1, -1, 1); + glTranslatef (0, -arm_y * 2, 0); + glFrontFace(GL_CW); + count += draw_arm_half (mi, f); + glPopMatrix(); + + glTranslatef (0, 0, open); + glFrontFace(GL_CW); + count += draw_hand_half (mi, f); + + glTranslatef (0, 0, -open); + glScalef (1, 1, -1); + glTranslatef (0, 0, arm_x * 2); + glFrontFace(GL_CCW); + glTranslatef (0, 0, open); + count += draw_hand_half (mi, f); + + glPopMatrix(); + return count; +} + + +static int +draw_body_half (ModeInfo *mi, walker *f, Bool inside_p) +{ + int count = 0; + int which = (inside_p ? ROBOT_BODY_2 : ROBOT_BODY_1); + glPushMatrix(); + count += draw_transparent_component (mi, which, f->body_transparency); + glPopMatrix(); + return count; +} + + +static int +draw_body (ModeInfo *mi, walker *f, Bool inside_p) +{ + int count = 0; + glPushMatrix(); + + glFrontFace(GL_CCW); + count += draw_body_half (mi, f, inside_p); + + glScalef (1, 1, -1); + glFrontFace(GL_CW); + count += draw_body_half (mi, f, inside_p); + + glPopMatrix(); + + return count; +} + + +static int +draw_gearbox_half (ModeInfo *mi) +{ + int count = 0; + glPushMatrix(); + count += draw_component (mi, ROBOT_GEARBOX); + glPopMatrix(); + return count; +} + + +static int +draw_gearbox (ModeInfo *mi) +{ + int count = 0; + glPushMatrix(); + + glFrontFace(GL_CCW); + count += draw_gearbox_half (mi); + + glScalef (1, 1, -1); + glFrontFace(GL_CW); + count += draw_gearbox_half (mi); + + glPopMatrix(); + return count; +} + + +static int +unit_gear (ModeInfo *mi, GLfloat color[4]) +{ + int wire = MI_IS_WIREFRAME(mi); + gear G = { 0, }; + gear *g = &G; + + g->r = 0.5; + g->nteeth = 16; + g->tooth_h = 0.12; + g->thickness = 0.32; + g->thickness2 = g->thickness * 0.5; + g->thickness3 = g->thickness; + g->inner_r = g->r * 0.7; + g->inner_r2 = g->r * 0.4; + g->inner_r3 = g->r * 0.1; + g->size = INVOLUTE_LARGE; + + g->color[0] = g->color2[0] = color[0]; + g->color[1] = g->color2[1] = color[1]; + g->color[2] = g->color2[2] = color[2]; + g->color[3] = g->color2[3] = color[3]; + + return draw_involute_gear (g, wire); +} + + +static int +draw_gear (ModeInfo *mi) +{ + int count = 0; + GLfloat n = 350; + glScalef (n, n, n); + count += draw_component (mi, ROBOT_GEAR); + return count; +} + + +static int +draw_crank (ModeInfo *mi, walker *f, GLfloat rot) +{ + int count = 0; + GLfloat origin = 12210.0; + + rot = -rot; + + glPushMatrix(); + + glTranslatef (0, origin, 0); /* position at origin */ + glRotatef (rot, 0, 0, 1); + + glPushMatrix(); + glRotatef (90, 1, 0, 0); + count += draw_gear (mi); + glPopMatrix(); + + glTranslatef (0, -origin, 0); /* move back */ + + glFrontFace(GL_CCW); + count += draw_component (mi, ROBOT_CRANK); + + glPopMatrix(); + + return count; +} + + +static int +draw_rotator_half (ModeInfo *mi) +{ + int count = 0; + glPushMatrix(); + count += draw_component (mi, ROBOT_ROTATOR); + glPopMatrix(); + return count; +} + + +static int +draw_rotator (ModeInfo *mi, walker *f, GLfloat rot) +{ + int count = 0; + GLfloat origin = 10093.0; + + glPushMatrix(); + + glTranslatef (0, origin, 0); /* position at origin */ + glRotatef (rot, 0, 0, 1); + + glPushMatrix(); + glRotatef (90, 1, 0, 0); + count += draw_gear (mi); + glPopMatrix(); + +# ifdef DEBUG + if (debug_p) + { + glDisable(GL_LIGHTING); + glBegin(GL_LINES); + glVertex3f(0, 0, -3000); + glVertex3f(0, 0, 3000); + glEnd(); + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); + } +# endif + + glTranslatef (0, -origin, 0); /* move back */ + + glFrontFace(GL_CCW); + count += draw_rotator_half (mi); + + glScalef (1, 1, -1); + glFrontFace(GL_CW); + glRotatef (180, 0, 0, 1); + glTranslatef (0, -origin * 2, 0); /* move back */ + count += draw_rotator_half (mi); + + glPopMatrix(); + return count; +} + + +static int +draw_leg_half (ModeInfo *mi) +{ + int count = 0; + glPushMatrix(); + count += draw_component (mi, ROBOT_LEG); + glPopMatrix(); + return count; +} + + +static int +draw_wireframe (ModeInfo *mi, walker *f) +{ + int wire = MI_IS_WIREFRAME(mi); + int count = 0; + GLfloat alpha = 0.6 - f->body_transparency; + if (alpha < 0) return 0; + alpha *= 0.3; + if (!wire) glDisable (GL_LIGHTING); + glPushMatrix(); + count += draw_transparent_component (mi, ROBOT_WIREFRAME, alpha); + glPopMatrix(); + if (!wire) glEnable (GL_LIGHTING); + return count; +} + + +static int +draw_leg (ModeInfo *mi, GLfloat rot, Bool left_p) +{ + int count = 0; + GLfloat x, y; + GLfloat leg_distance = 9401; /* distance from ground to leg axis */ + GLfloat rot_distance = 10110; /* distance from ground to rotator axis */ + GLfloat pin_distance = 14541; /* distance from ground to stop pin */ + GLfloat orbit_r = rot_distance - leg_distance; /* radius of rotation */ + + /* Actually it's the bottom of the pin minus its diameter, or something. */ + pin_distance -= 590; + + glPushMatrix(); + + if (left_p) + glRotatef (180, 0, 1, 0); + + if (!left_p) rot = -(rot + 180); + + rot -= 90; + + x = orbit_r * cos (-rot * M_PI / 180); + y = orbit_r * sin (-rot * M_PI / 180); + + { + /* Rotate the leg by angle B of the right A + triangle ABC, where: /: + / : + A = position of stop pin / : + D = position of rotator wheel's axis , - ~ ~ ~ - , + C = D + y , ' / : ' , + B = D + xy (leg's axis) , / : , + , / : , + So: , / : , + H = dist(A,B) , / D , + O = dist(A,C) , / : , + sin(th) = O/H , / : , + th = asin(O/H) B ~ ~ ~ ~ ~ C . + , , ' + ' - , _ _ _ , ' + */ + GLfloat Ay = pin_distance - leg_distance; + GLfloat Cx = 0, Cy = y; + GLfloat Bx = x; + GLfloat dBC = Cx - Bx; + GLfloat dAC = Cy - Ay; + GLfloat dAB = sqrt (dBC*dBC + dAC*dAC); + GLfloat th = asin (dAC / dAB); + rot = th / (M_PI / 180.0); + rot += 90; + if (dBC > 0) rot = 360-rot; + } + + glTranslatef (0, orbit_r, 0); /* position on rotator axis */ + glTranslatef (x, y, 0); + + glTranslatef (0, leg_distance, 0); /* position on leg axis */ + glRotatef(rot, 0, 0, 1); + glTranslatef (0, -leg_distance, 0); /* move back */ + + glFrontFace(GL_CCW); + count += draw_leg_half (mi); + + glScalef (-1, 1, 1); + glFrontFace(GL_CW); + count += draw_leg_half (mi); + + glPopMatrix(); + return count; +} + + +static int +draw_dome (ModeInfo *mi, walker *f) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int which = ROBOT_DOME; + int count = 0; + GLfloat n = 8.3; + GLfloat trans = f->body_transparency; + GLfloat max = 0.7; + GLfloat dome_y = 15290; + + if (trans < 0) trans = 0; + if (trans > max) trans = max; + + if (!wire) glEnable (GL_BLEND); + + glPushMatrix(); + glTranslatef (0, dome_y, 0); + glScalef (100, 100, 100); + glRotatef (90, 1, 0, 0); + glTranslatef (0.35, 0, 0); + glScalef (n, n, n); + glFrontFace(GL_CCW); + bp->component_colors[which][3] = trans; + count += draw_component (mi, which); + glPopMatrix(); + + if (!wire) glDisable (GL_BLEND); + + return count; +} + + +/* Is this robot overlapping any other? + */ +static Bool +collision_p (ModeInfo *mi, walker *w, GLfloat extra_space) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + int i; + if (MI_COUNT(mi) <= 1) return False; + + for (i = 0; i < MI_COUNT(mi); i++) + { + walker *w2 = &bp->walkers[i]; + GLfloat min = 0.75 + extra_space; + GLfloat d, dx, dy; + if (w == w2) continue; + dx = w->x - w2->x; + dy = w->y - w2->y; + d = (dx*dx + dy*dy); + if (d <= min*min) return True; + } + return False; +} + + +/* I couldn't figure out a straightforward trig solution to the + forward/backward tilting that happens as weight passes from one + foot to another, so I just built a tool to eyeball it manually. + { vertical_translation, rotation, forward_translation } + */ +static const struct { GLfloat up, rot, fwd; } wobble_profile[360] = { + { 0.0000, 0.00, 0.0000 }, /* 0 */ + { 0.0000, -0.01, 0.0025 }, + { 0.0000, -0.25, 0.0040 }, + { 0.0000, -0.41, 0.0060 }, + { 0.0000, -0.62, 0.0080 }, + { 0.0000, -0.80, 0.0095 }, + { 0.0000, -0.90, 0.0120 }, + { 0.0000, -1.10, 0.0135 }, + { 0.0000, -1.25, 0.0150 }, + { 0.0000, -1.40, 0.0175 }, + { 0.0000, -1.50, 0.0195 }, /* 10 */ + { 0.0000, -1.70, 0.0215 }, + { 0.0000, -1.80, 0.0230 }, + { 0.0000, -2.00, 0.0250 }, + { 0.0000, -2.10, 0.0270 }, + { -0.0005, -2.30, 0.0290 }, + { -0.0005, -2.50, 0.0305 }, + { -0.0005, -2.60, 0.0330 }, + { -0.0005, -2.70, 0.0330 }, + { -0.0005, -2.90, 0.0350 }, + { -0.0005, -3.00, 0.0365 }, /* 20 */ + { -0.0010, -3.20, 0.0380 }, + { -0.0005, -3.30, 0.0400 }, + { -0.0010, -3.50, 0.0420 }, + { -0.0010, -3.70, 0.0440 }, + { -0.0010, -3.80, 0.0460 }, + { -0.0010, -3.90, 0.0470 }, + { -0.0015, -4.10, 0.0500 }, + { -0.0015, -4.20, 0.0515 }, + { -0.0015, -4.40, 0.0535 }, + { -0.0015, -4.50, 0.0550 }, /* 30 */ + { -0.0015, -4.60, 0.0565 }, + { -0.0020, -4.80, 0.0585 }, + { -0.0020, -5.00, 0.0600 }, + { -0.0020, -5.10, 0.0620 }, + { -0.0025, -5.20, 0.0635 }, + { -0.0025, -5.40, 0.0655 }, + { -0.0025, -5.50, 0.0675 }, + { -0.0025, -5.60, 0.0690 }, + { -0.0030, -5.80, 0.0710 }, + { -0.0030, -5.90, 0.0720 }, /* 40 */ + { -0.0030, -6.00, 0.0740 }, + { -0.0035, -6.10, 0.0760 }, + { -0.0035, -6.30, 0.0790 }, + { -0.0040, -6.40, 0.0805 }, + { -0.0040, -6.50, 0.0820 }, + { -0.0040, -6.60, 0.0835 }, + { -0.0045, -6.80, 0.0855 }, + { -0.0045, -6.90, 0.0870 }, + { -0.0050, -7.00, 0.0885 }, + { -0.0050, -7.20, 0.0900 }, /* 50 */ + { -0.0050, -7.20, 0.0915 }, + { -0.0055, -7.40, 0.0930 }, + { -0.0055, -7.50, 0.0945 }, + { -0.0060, -7.60, 0.0960 }, + { -0.0060, -7.70, 0.0970 }, + { -0.0065, -7.80, 0.0985 }, + { -0.0060, -7.70, 0.0995 }, + { -0.0060, -7.60, 0.1010 }, + { -0.0060, -7.50, 0.1020 }, + { -0.0055, -7.30, 0.1030 }, /* 60 */ + { -0.0050, -7.10, 0.1040 }, + { -0.0050, -6.90, 0.1050 }, + { -0.0045, -6.80, 0.1065 }, + { -0.0045, -6.50, 0.1075 }, + { -0.0040, -6.40, 0.1085 }, + { -0.0040, -6.20, 0.1095 }, + { -0.0040, -6.00, 0.1105 }, + { -0.0035, -5.80, 0.1115 }, + { -0.0030, -5.50, 0.1125 }, + { -0.0030, -5.40, 0.1135 }, /* 70 */ + { -0.0030, -5.10, 0.1145 }, + { -0.0030, -4.90, 0.1150 }, + { -0.0025, -4.70, 0.1160 }, + { -0.0025, -4.40, 0.1165 }, + { -0.0025, -4.20, 0.1175 }, + { -0.0020, -3.90, 0.1180 }, + { -0.0020, -3.70, 0.1185 }, + { -0.0020, -3.40, 0.1190 }, + { -0.0020, -3.10, 0.1195 }, + { -0.0020, -2.90, 0.1200 }, /* 80 */ + { -0.0015, -2.60, 0.1200 }, + { -0.0015, -2.30, 0.1205 }, + { -0.0015, -2.00, 0.1210 }, + { -0.0015, -1.80, 0.1215 }, + { -0.0015, -1.50, 0.1215 }, + { -0.0015, -1.20, 0.1215 }, + { -0.0015, -0.90, 0.1215 }, + { -0.0015, -0.60, 0.1215 }, + { -0.0015, -0.30, 0.1215 }, + { -0.0010, 0.00, 0.1215 }, /* 90 */ + { -0.0010, 0.30, 0.1215 }, + { -0.0010, 0.60, 0.1215 }, + { -0.0010, 0.90, 0.1215 }, + { -0.0010, 1.20, 0.1215 }, + { -0.0015, 1.40, 0.1215 }, + { -0.0015, 1.70, 0.1215 }, + { -0.0015, 2.00, 0.1215 }, + { -0.0015, 2.30, 0.1215 }, + { -0.0015, 2.60, 0.1215 }, + { -0.0015, 2.80, 0.1220 }, /* 100 */ + { -0.0020, 3.10, 0.1225 }, + { -0.0020, 3.30, 0.1230 }, + { -0.0020, 3.60, 0.1235 }, + { -0.0020, 3.90, 0.1240 }, + { -0.0025, 4.10, 0.1245 }, + { -0.0025, 4.40, 0.1250 }, + { -0.0025, 4.60, 0.1260 }, + { -0.0025, 4.90, 0.1265 }, + { -0.0030, 5.10, 0.1275 }, + { -0.0030, 5.30, 0.1285 }, /* 110 */ + { -0.0035, 5.60, 0.1290 }, + { -0.0035, 5.80, 0.1300 }, + { -0.0035, 6.00, 0.1310 }, + { -0.0040, 6.20, 0.1325 }, + { -0.0040, 6.40, 0.1335 }, + { -0.0045, 6.60, 0.1345 }, + { -0.0045, 6.70, 0.1355 }, + { -0.0050, 6.90, 0.1365 }, + { -0.0050, 7.10, 0.1375 }, + { -0.0055, 7.30, 0.1390 }, /* 120 */ + { -0.0055, 7.40, 0.1400 }, + { -0.0060, 7.50, 0.1415 }, + { -0.0065, 8.00, 0.1425 }, + { -0.0065, 7.80, 0.1440 }, + { -0.0060, 7.80, 0.1455 }, + { -0.0060, 7.60, 0.1470 }, + { -0.0055, 7.50, 0.1485 }, + { -0.0055, 7.40, 0.1500 }, + { -0.0050, 7.30, 0.1515 }, + { -0.0050, 7.20, 0.1530 }, /* 130 */ + { -0.0050, 7.00, 0.1545 }, + { -0.0045, 6.90, 0.1560 }, + { -0.0045, 6.80, 0.1575 }, + { -0.0040, 6.70, 0.1590 }, + { -0.0040, 6.50, 0.1605 }, + { -0.0040, 6.40, 0.1625 }, + { -0.0035, 6.30, 0.1640 }, + { -0.0035, 6.10, 0.1655 }, + { -0.0030, 6.10, 0.1670 }, + { -0.0030, 5.90, 0.1690 }, /* 140 */ + { -0.0030, 5.70, 0.1705 }, + { -0.0025, 5.70, 0.1720 }, + { -0.0025, 5.50, 0.1740 }, + { -0.0025, 5.40, 0.1755 }, + { -0.0025, 5.20, 0.1775 }, + { -0.0020, 5.10, 0.1790 }, + { -0.0020, 5.00, 0.1810 }, + { -0.0020, 4.80, 0.1825 }, + { -0.0015, 4.70, 0.1840 }, + { -0.0015, 4.60, 0.1860 }, /* 150 */ + { -0.0015, 4.40, 0.1880 }, + { -0.0015, 4.20, 0.1900 }, + { -0.0015, 4.10, 0.1915 }, + { -0.0010, 4.00, 0.1935 }, + { -0.0010, 3.80, 0.1955 }, + { -0.0010, 3.70, 0.1970 }, + { -0.0010, 3.50, 0.1990 }, + { -0.0005, 3.40, 0.2010 }, + { -0.0010, 3.20, 0.2025 }, + { -0.0005, 3.10, 0.2045 }, /* 160 */ + { -0.0005, 2.90, 0.2065 }, + { -0.0005, 2.80, 0.2085 }, + { -0.0005, 2.60, 0.2105 }, + { -0.0005, 2.50, 0.2120 }, + { -0.0005, 2.30, 0.2140 }, + { -0.0005, 2.20, 0.2160 }, + { -0.0005, 2.00, 0.2180 }, + { 0.0000, 1.90, 0.2200 }, + { 0.0000, 1.70, 0.2220 }, + { 0.0000, 1.60, 0.2235 }, /* 170 */ + { 0.0000, 1.40, 0.2255 }, + { 0.0000, 1.30, 0.2275 }, + { 0.0000, 1.10, 0.2295 }, + { 0.0000, 0.90, 0.2315 }, + { 0.0000, 0.80, 0.2335 }, + { 0.0000, 0.60, 0.2355 }, + { 0.0000, 0.50, 0.2375 }, + { 0.0000, 0.30, 0.2395 }, + { 0.0000, 0.10, 0.2415 }, + { 0.0000, 0.00, 0.2430 }, /* 180 */ + { 0.0000, -0.10, 0.2450 }, + { 0.0000, -0.30, 0.2470 }, + { 0.0000, -0.40, 0.2490 }, + { 0.0000, -0.60, 0.2510 }, + { 0.0000, -0.80, 0.2530 }, + { 0.0000, -0.90, 0.2550 }, + { 0.0000, -1.10, 0.2570 }, + { 0.0000, -1.20, 0.2590 }, + { 0.0000, -1.40, 0.2610 }, + { 0.0000, -1.50, 0.2625 }, /* 190 */ + { 0.0000, -1.70, 0.2645 }, + { 0.0000, -1.80, 0.2665 }, + { -0.0005, -2.00, 0.2685 }, + { -0.0005, -2.10, 0.2705 }, + { -0.0005, -2.30, 0.2725 }, + { -0.0005, -2.40, 0.2740 }, + { -0.0005, -2.60, 0.2760 }, + { -0.0005, -2.80, 0.2780 }, + { -0.0005, -2.90, 0.2800 }, + { -0.0005, -3.00, 0.2820 }, /* 200 */ + { -0.0010, -3.20, 0.2835 }, + { -0.0005, -3.30, 0.2855 }, + { -0.0010, -3.50, 0.2875 }, + { -0.0010, -3.70, 0.2895 }, + { -0.0010, -3.80, 0.2910 }, + { -0.0010, -3.90, 0.2930 }, + { -0.0010, -4.00, 0.2950 }, + { -0.0015, -4.20, 0.2965 }, + { -0.0015, -4.40, 0.2985 }, + { -0.0015, -4.50, 0.3000 }, /* 210 */ + { -0.0015, -4.60, 0.3020 }, + { -0.0020, -4.80, 0.3040 }, + { -0.0020, -5.00, 0.3055 }, + { -0.0020, -5.00, 0.3075 }, + { -0.0025, -5.20, 0.3090 }, + { -0.0025, -5.30, 0.3110 }, + { -0.0025, -5.50, 0.3125 }, + { -0.0025, -5.60, 0.3140 }, + { -0.0030, -5.70, 0.3160 }, + { -0.0030, -5.90, 0.3175 }, /* 220 */ + { -0.0030, -6.00, 0.3190 }, + { -0.0035, -6.10, 0.3210 }, + { -0.0035, -6.30, 0.3225 }, + { -0.0040, -6.40, 0.3240 }, + { -0.0040, -6.50, 0.3255 }, + { -0.0040, -6.60, 0.3270 }, + { -0.0045, -6.80, 0.3290 }, + { -0.0045, -6.90, 0.3305 }, + { -0.0050, -7.00, 0.3320 }, + { -0.0050, -7.20, 0.3335 }, /* 230 */ + { -0.0050, -7.20, 0.3350 }, + { -0.0055, -7.40, 0.3365 }, + { -0.0055, -7.50, 0.3380 }, + { -0.0060, -7.60, 0.3390 }, + { -0.0060, -7.70, 0.3405 }, + { -0.0065, -7.80, 0.3420 }, + { -0.0060, -7.60, 0.3425 }, + { -0.0060, -7.50, 0.3440 }, + { -0.0055, -7.40, 0.3455 }, + { -0.0055, -7.20, 0.3470 }, /* 240 */ + { -0.0050, -7.10, 0.3480 }, + { -0.0050, -6.90, 0.3490 }, + { -0.0045, -6.80, 0.3500 }, + { -0.0045, -6.50, 0.3510 }, + { -0.0040, -6.40, 0.3520 }, + { -0.0040, -6.10, 0.3535 }, + { -0.0035, -6.00, 0.3545 }, + { -0.0035, -5.80, 0.3550 }, + { -0.0030, -5.50, 0.3560 }, + { -0.0030, -5.30, 0.3570 }, /* 250 */ + { -0.0030, -5.10, 0.3580 }, + { -0.0030, -4.90, 0.3585 }, + { -0.0025, -4.70, 0.3595 }, + { -0.0025, -4.40, 0.3600 }, + { -0.0020, -4.10, 0.3610 }, + { -0.0020, -3.90, 0.3615 }, + { -0.0020, -3.70, 0.3620 }, + { -0.0020, -3.30, 0.3625 }, + { -0.0020, -3.10, 0.3630 }, + { -0.0015, -2.80, 0.3635 }, /* 260 */ + { -0.0015, -2.60, 0.3640 }, + { -0.0015, -2.40, 0.3645 }, + { -0.0015, -2.00, 0.3645 }, + { -0.0015, -1.80, 0.3650 }, + { -0.0015, -1.40, 0.3650 }, + { -0.0015, -1.20, 0.3655 }, + { -0.0010, -0.90, 0.3655 }, + { -0.0010, -0.60, 0.3655 }, + { -0.0010, -0.30, 0.3655 }, + { -0.0010, 0.00, 0.3655 }, /* 270 */ + { -0.0010, 0.30, 0.3655 }, + { -0.0010, 0.60, 0.3655 }, + { -0.0010, 0.90, 0.3655 }, + { -0.0015, 1.10, 0.3655 }, + { -0.0015, 1.40, 0.3655 }, + { -0.0015, 1.70, 0.3655 }, + { -0.0015, 1.90, 0.3660 }, + { -0.0015, 2.20, 0.3660 }, + { -0.0015, 2.50, 0.3665 }, + { -0.0015, 2.80, 0.3670 }, /* 280 */ + { -0.0015, 3.10, 0.3675 }, + { -0.0020, 3.40, 0.3680 }, + { -0.0020, 3.70, 0.3685 }, + { -0.0020, 3.90, 0.3690 }, + { -0.0025, 4.10, 0.3695 }, + { -0.0025, 4.40, 0.3700 }, + { -0.0025, 4.60, 0.3710 }, + { -0.0025, 4.80, 0.3715 }, + { -0.0025, 5.00, 0.3730 }, + { -0.0030, 5.40, 0.3735 }, /* 290 */ + { -0.0035, 5.60, 0.3745 }, + { -0.0035, 5.80, 0.3755 }, + { -0.0035, 6.00, 0.3765 }, + { -0.0040, 6.20, 0.3775 }, + { -0.0045, 6.50, 0.3785 }, + { -0.0045, 6.60, 0.3795 }, + { -0.0045, 6.80, 0.3805 }, + { -0.0050, 7.00, 0.3815 }, + { -0.0050, 7.10, 0.3825 }, + { -0.0055, 7.20, 0.3840 }, /* 300 */ + { -0.0055, 7.40, 0.3850 }, + { -0.0060, 7.50, 0.3865 }, + { -0.0060, 7.70, 0.3875 }, + { -0.0065, 7.80, 0.3890 }, + { -0.0060, 7.80, 0.3900 }, + { -0.0060, 7.60, 0.3915 }, + { -0.0055, 7.60, 0.3930 }, + { -0.0055, 7.40, 0.3945 }, + { -0.0050, 7.30, 0.3960 }, + { -0.0050, 7.20, 0.3975 }, /* 310 */ + { -0.0050, 7.00, 0.3990 }, + { -0.0045, 6.90, 0.4005 }, + { -0.0045, 6.80, 0.4020 }, + { -0.0040, 6.70, 0.4035 }, + { -0.0040, 6.60, 0.4050 }, + { -0.0040, 6.40, 0.4065 }, + { -0.0035, 6.30, 0.4085 }, + { -0.0035, 6.20, 0.4100 }, + { -0.0030, 6.10, 0.4115 }, + { -0.0030, 5.90, 0.4130 }, /* 320 */ + { -0.0030, 5.80, 0.4150 }, + { -0.0025, 5.70, 0.4165 }, + { -0.0025, 5.50, 0.4180 }, + { -0.0025, 5.40, 0.4200 }, + { -0.0025, 5.20, 0.4215 }, + { -0.0020, 5.10, 0.4235 }, + { -0.0020, 5.00, 0.4250 }, + { -0.0020, 4.80, 0.4270 }, + { -0.0015, 4.70, 0.4285 }, + { -0.0015, 4.60, 0.4305 }, /* 330 */ + { -0.0015, 4.40, 0.4325 }, + { -0.0015, 4.20, 0.4340 }, + { -0.0015, 4.10, 0.4360 }, + { -0.0010, 4.00, 0.4375 }, + { -0.0010, 3.80, 0.4395 }, + { -0.0010, 3.70, 0.4415 }, + { -0.0010, 3.50, 0.4435 }, + { -0.0005, 3.40, 0.4450 }, + { -0.0010, 3.20, 0.4470 }, + { -0.0005, 3.10, 0.4490 }, /* 340 */ + { -0.0005, 2.90, 0.4510 }, + { -0.0005, 2.80, 0.4525 }, + { -0.0005, 2.60, 0.4545 }, + { -0.0005, 2.40, 0.4565 }, + { -0.0005, 2.30, 0.4585 }, + { -0.0005, 2.20, 0.4605 }, + { -0.0005, 2.00, 0.4620 }, + { 0.0000, 1.90, 0.4640 }, + { 0.0000, 1.70, 0.4660 }, + { 0.0000, 1.60, 0.4680 }, /* 350 */ + { 0.0000, 1.40, 0.4700 }, + { 0.0000, 1.20, 0.4720 }, + { 0.0000, 1.10, 0.4740 }, + { 0.0000, 0.90, 0.4760 }, + { 0.0000, 0.80, 0.4780 }, + { 0.0000, 0.60, 0.4795 }, + { 0.0000, 0.50, 0.4815 }, + { 0.0000, 0.30, 0.4835 }, + { 0.0000, 0.20, 0.4855 }, /* 359 */ +}; + + +/* Turn the crank by 1 degree, which moves the legs and displaces the robot. + */ +static void +tick_walker (ModeInfo *mi, walker *f) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + int deg; + GLfloat th, fwd; + + if (bp->button_down_p) return; + + f->crank_rot++; + deg = ((int) (f->crank_rot + 0.5)) % 360; + +# ifdef DEBUG + if (debug_p) + { + f->crank_rot = bp->debug_x; + f->pitch = wobble_profile[deg].rot; + f->z = wobble_profile[deg].up; + } + else +# endif /* DEBUG */ + + if (deg == 0) + { + fwd = wobble_profile[deg].fwd; + f->pitch = wobble_profile[deg].rot; + f->z = wobble_profile[deg].up; + } + else + { + fwd = (wobble_profile[deg].fwd - wobble_profile[deg-1].fwd); + f->pitch += (wobble_profile[deg].rot - wobble_profile[deg-1].rot); + f->z += (wobble_profile[deg].up - wobble_profile[deg-1].up); + } + + /* Lean slightly toward the foot that is raised off the ground. */ + f->roll = -2.5 * sin ((deg - 90) * M_PI / 180); + + if (!(random() % 10)) + { + GLfloat b = f->balance / 10.0; + int s = (f->balance > 0 ? 1 : -1); + if (s < 0) b = -b; + f->facing += s * frand (b); + } + +# ifdef DEBUG + if (debug_p) fwd = 0; +# endif + + { + GLfloat ox = f->x; + GLfloat oy = f->y; + th = f->facing * M_PI / 180.0; + f->x += fwd * cos (th); + f->y += fwd * sin (th); + + /* If moving this robot would collide with another, undo the move, + recoil, and randomly turn. + */ + if (collision_p (mi, f, 0)) + { + fwd *= -1.5; + f->x = ox + fwd * cos (th); + f->y = oy + fwd * sin (th); + f->facing += frand(10) - 5; + if (! random() % 30) + f->facing += frand(90) - 45; + } + } + + + if (!do_fade || + opacity > 0.5) /* Don't bother fading if it's already transparent. */ + { + GLfloat tick = 0.002; + GLfloat linger = 3; + + /* If we're not fading, maybe start fading out. */ + if (f->fading_p == 0 && ! (random() % 40000)) + f->fading_p = -1; + +# ifdef DEBUG + if (debug_p) f->fading_p = 0; +# endif + + if (f->fading_p < 0) + { + f->body_transparency -= tick; + if (f->body_transparency <= -linger) + { + f->body_transparency = -linger; + f->fading_p = 1; + } + } + else if (f->fading_p > 0) + { + f->body_transparency += tick; + if (f->body_transparency >= opacity) + { + f->body_transparency = opacity; + f->fading_p = 0; + } + } + } +} + + +static void +init_walker (ModeInfo *mi, walker *f) +{ + int i, start_tick = random() % 360; + + f->crank_rot = 0; + f->pitch = wobble_profile[0].rot; + f->z = wobble_profile[0].up; + + f->body_transparency = opacity; + + f->hand_rot[0] = frand(180); + f->hand_pos[0] = 0.6 + frand(0.4); + f->hand_rot[1] = 180 - f->hand_rot[0]; + f->hand_pos[1] = f->hand_pos[0]; + + if (! (random() % 30)) f->hand_rot[1] += frand(10); + if (! (random() % 30)) f->hand_pos[1] = 0.6 + frand(0.4); + + f->facing = frand(360); + f->balance = frand(10) - 5; + + if (MI_COUNT(mi) == 1) + f->speed = 1.0; + else + f->speed = 0.6 + frand(0.8); + +# ifdef DEBUG + if (debug_p) + { + start_tick = 0; + f->facing = 0; + f->balance = 0; + } +# endif + + for (i = 0; i < start_tick; i++) + tick_walker (mi, f); + + /* Place them randomly, but non-overlapping. */ + for (i = 0; i < 1000; i++) + { + GLfloat range = 10; + if (MI_COUNT(mi) > 10) range += MI_COUNT(mi) / 10.0; + f->x = frand(range) - range/2; + f->y = frand(range) - range/2; + if (! collision_p (mi, f, 1.5)) + break; + } + +# ifdef DEBUG + if (debug_p) f->x = f->y = 0; +# endif + +} + + +/* Draw a robot standing in the right place, 1 unit tall. + */ +static int +draw_walker (ModeInfo *mi, walker *f, const char *tag) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + int count = 0; + glPushMatrix(); + + glTranslatef (f->y, f->z, f->x); + + { + GLfloat n = 0.01; + glScalef (n, n, n); + } + + glRotatef (90, 0, 1, 0); + glRotatef (f->facing, 0, 1, 0); + glRotatef (f->pitch, 0, 0, 1); + glRotatef (f->roll, 1, 0, 0); + + { + GLfloat n = 0.00484; /* make it 1 unit tall */ + glScalef (n, n, n); + } + + count += draw_gearbox (mi); + count += draw_crank (mi, f, f->crank_rot); + count += draw_rotator (mi, f, f->crank_rot); + count += draw_leg (mi, f->crank_rot, False); + count += draw_leg (mi, f->crank_rot, True); + count += draw_wireframe (mi, f); + + /* Draw these last, and outer shell first, to make transparency work. + The order in which things hit the depth buffer matters. + */ + if (f->body_transparency >= 0.001) + { + count += draw_arm (mi, f, True, f->hand_rot[0], f->hand_pos[0]); + count += draw_arm (mi, f, False, f->hand_rot[1], f->hand_pos[1]); + count += draw_body (mi, f, False); + count += draw_body (mi, f, True); + count += draw_dome (mi, f); + } + + if (tag) /* For debugging depth sorting: label each robot */ + { + GLfloat m[4][4]; + if (! wire) glDisable (GL_DEPTH_TEST); + glColor3f (1, 1, 1); + glPushMatrix(); + + /* Billboard rotation */ + glGetFloatv (GL_MODELVIEW_MATRIX, &m[0][0]); + m[0][0] = 1; m[1][0] = 0; m[2][0] = 0; + m[0][1] = 0; m[1][1] = 1; m[2][1] = 0; + m[0][2] = 0; m[1][2] = 0; m[2][2] = 1; + glLoadIdentity(); + glMultMatrixf (&m[0][0]); + glScalef (0.04, 0.04, 0.04); + + print_texture_string (bp->font_data, tag); + glPopMatrix(); + if (! wire) glEnable (GL_DEPTH_TEST); + } + + glPopMatrix(); + return count; +} + + +static int +draw_ground (ModeInfo *mi, GLfloat color[4]) +{ + int wire = MI_IS_WIREFRAME(mi); + GLfloat i, j, k; + + /* When using fog, iOS apparently doesn't like lines or quads that are + really long, and extend very far outside of the scene. Maybe? If the + length of the line (cells * cell_size) is greater than 25 or so, lines + that are oriented steeply away from the viewer tend to disappear + (whether implemented as GL_LINES or as GL_QUADS). + + So we do a bunch of smaller grids instead of one big one. + */ + int cells = 30; + GLfloat cell_size = 0.8; + int points = 0; + int grids = 12; + +# ifdef DEBUG + if (debug_p) return 0; +# endif + + glPushMatrix(); + + glRotatef (frand(90), 0, 0, 1); + + if (!wire) + { + GLfloat fog_color[4] = { 0, 0, 0, 1 }; + + glLineWidth (4); + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable (GL_BLEND); + + glFogi (GL_FOG_MODE, GL_EXP2); + glFogfv (GL_FOG_COLOR, fog_color); + glFogf (GL_FOG_DENSITY, 0.015); + glFogf (GL_FOG_START, -cells/2 * cell_size * grids); + glEnable (GL_FOG); + } + + glColor4fv (color); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); + + glTranslatef (-cells * grids * cell_size / 2, + -cells * grids * cell_size / 2, 0); + + for (j = 0; j < grids; j++) + { + glPushMatrix(); + for (k = 0; k < grids; k++) + { + glBegin (GL_LINES); + for (i = -cells/2; i < cells/2; i++) + { + GLfloat a = i * cell_size; + GLfloat b = cells/2 * cell_size; + glVertex3f (a, -b, 0); glVertex3f (a, b, 0); points++; + glVertex3f (-b, a, 0); glVertex3f (b, a, 0); points++; + } + glEnd(); + glTranslatef (cells * cell_size, 0, 0); + } + glPopMatrix(); + glTranslatef (0, cells * cell_size, 0); + } + + if (!wire) + { + glDisable (GL_LINE_SMOOTH); + glDisable (GL_BLEND); + glDisable (GL_FOG); + } + + glPopMatrix(); + + return points; +} + + +/* If the target robot (robot #0) has moved too far from the point at which + the camera is aimed, then initiate an animation to move the observer to + the new spot. + + Because of the jerky forward motion of the robots, just always focusing + on the center of the robot looks terrible, so instead we let them walk + a little out of the center of the frame, and then catch up. + */ +static void +look_at_center (ModeInfo *mi) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + GLfloat target_x = bp->walkers[0].x; + GLfloat target_y = bp->walkers[0].y; + GLfloat target_z = 0.8; /* Look a little bit above his head */ + GLfloat max_dist = 2.5 / size; + +# ifdef DEBUG + if (debug_p) return; +# endif + + if (max_dist < 1) max_dist = 1; + if (max_dist > 10) max_dist = 10; + + if (bp->camera_tracking_p) + { + GLfloat r = (1 - cos (bp->tracking_ratio * M_PI)) / 2; + bp->looking_x = bp->olooking_x + r * (target_x - bp->olooking_x); + bp->looking_y = bp->olooking_y + r * (target_y - bp->olooking_y); + bp->looking_z = bp->olooking_z + r * (target_z - bp->olooking_z); + + bp->tracking_ratio += 0.02; + if (bp->tracking_ratio >= 1) + { + bp->camera_tracking_p = False; + bp->olooking_x = bp->looking_x; + bp->olooking_y = bp->looking_y; + bp->olooking_z = bp->looking_z; + } + } + + if (! bp->camera_tracking_p) + { + GLfloat dist = + sqrt ((target_x - bp->looking_x) * (target_x - bp->looking_x) + + (target_y - bp->looking_y) * (target_y - bp->looking_y) + + (target_z - bp->looking_z) * (target_z - bp->looking_z)); + + if (dist > max_dist) + { + bp->camera_tracking_p = True; + bp->tracking_ratio = 0; + bp->olooking_x = bp->looking_x; + bp->olooking_y = bp->looking_y; + bp->olooking_z = bp->looking_z; + } + } + + glTranslatef (-bp->looking_y, -bp->looking_z, -bp->looking_x); + +# if 0 /* DEBUG */ + { + GLfloat th; + glPushMatrix(); + glColor3f(1, 0, 0); + glTranslatef (target_y, target_z, target_x); + glBegin(GL_LINES); + glVertex3f(0, -target_z, 0); + glVertex3f(0, 1, 0); + glVertex3f(-0.1, 0, -0.1); + glVertex3f( 0.1, 0, 0.1); + glVertex3f(-0.1, 0, 0.1); + glVertex3f( 0.1, 0, -0.1); + glEnd(); + glPopMatrix(); + + glPushMatrix(); + glColor3f(0, 1, 0); + glTranslatef (bp->looking_y, bp->looking_z, bp->looking_x); + glRotatef (30, 0, 1, 0); + glBegin(GL_LINES); + glVertex3f(0, -bp->looking_z, 0); + glVertex3f(0, 1, 0); + glVertex3f(-0.1, 0, -0.1); + glVertex3f( 0.1, 0, 0.1); + glVertex3f(-0.1, 0, 0.1); + glVertex3f( 0.1, 0, -0.1); + glEnd(); + glPopMatrix(); + + glPushMatrix(); + glColor3f(0, 0, 1); + glTranslatef (bp->olooking_y, bp->olooking_z, bp->olooking_x); + glRotatef (60, 0, 1, 0); + glBegin(GL_LINES); + glVertex3f(0, -bp->olooking_z, 0); + glVertex3f(0, 1, 0); + glVertex3f(-0.1, 0, -0.1); + glVertex3f( 0.1, 0, 0.1); + glVertex3f(-0.1, 0, 0.1); + glVertex3f( 0.1, 0, -0.1); + glEnd(); + + glTranslatef (0, -bp->olooking_z, 0); + glBegin (GL_LINE_LOOP); + for (th = 0; th < M_PI * 2; th += 0.1) + glVertex3f (bp->olooking_y + max_dist * cos(th), 0, + bp->olooking_x + max_dist * sin(th)); + glEnd(); + glPopMatrix(); + } +# endif /* DEBUG */ +} + + +#ifdef WORDBUBBLES + +/* Draw a cartoony word bubble. + W and H are the inside size, for text. + Origin is at bottom left. + The bubble frame and arrow are outside that. + */ +static void +draw_bubble_box (ModeInfo *mi, + GLfloat width, GLfloat height, + GLfloat corner_radius, + GLfloat arrow_h, GLfloat arrow_x, + GLfloat fg[4], GLfloat bg[4]) +{ + +# define CORNER_POINTS 16 + GLfloat outline_points[ (CORNER_POINTS + 2) * 4 + 8 ][3]; + int i = 0; + GLfloat th; + GLfloat tick = M_PI / 2 / CORNER_POINTS; + + GLfloat arrow_w = arrow_h / 2; + GLfloat arrow_x2 = MAX(0, MIN(width - arrow_w, arrow_x)); + + GLfloat w2 = MAX(arrow_w, width - corner_radius * 1.10); + GLfloat h2 = MAX(0, height - corner_radius * 1.28); + GLfloat x2 = (width - w2) / 2; + GLfloat y2 = (height - h2) / 2; + /* A B C D */ + GLfloat xa = x2 -corner_radius; /* E _------------_ */ + GLfloat xb = x2; /* D /__| |__\ */ + GLfloat xc = xb + w2; /* | | | | */ + GLfloat xd = xc + corner_radius; /* C |__| EF |__| */ + GLfloat xe = xb + arrow_x2; /* B \_|_________|_/ */ + GLfloat xf = xe + arrow_w; /* A \| */ + + GLfloat ya = y2 - (corner_radius + arrow_h); + GLfloat yb = y2 - corner_radius; + GLfloat yc = y2; + GLfloat yd = yc + h2; + GLfloat ye = yd + corner_radius; + + GLfloat z = 0; + + /* Let the lines take precedence over the fills. */ + glEnable (GL_POLYGON_OFFSET_FILL); + glPolygonOffset (1.0, 1.0); + + glColor4fv (bg); + glFrontFace(GL_CW); + + /* top left corner */ + + glBegin (GL_TRIANGLE_FAN); + glVertex3f (xb, yd, 0); + for (th = 0; th < M_PI/2 + tick; th += tick) + { + GLfloat x = xb - corner_radius * cos(th); + GLfloat y = yd + corner_radius * sin(th); + glVertex3f (x, y, z); + outline_points[i][0] = x; + outline_points[i][1] = y; + outline_points[i][2] = z; + i++; + } + glEnd(); + + /* top edge */ + outline_points[i][0] = xc; + outline_points[i][1] = ye; + outline_points[i][2] = z; + i++; + + /* top right corner */ + + glBegin (GL_TRIANGLE_FAN); + glVertex3f (xc, yd, 0); + for (th = M_PI/2; th > -tick; th -= tick) + { + GLfloat x = xc + corner_radius * cos(th); + GLfloat y = yd + corner_radius * sin(th); + glVertex3f (x, y, z); + outline_points[i][0] = x; + outline_points[i][1] = y; + outline_points[i][2] = z; + i++; + } + glEnd(); + + /* right edge */ + outline_points[i][0] = xd; + outline_points[i][1] = yc; + outline_points[i][2] = z; + i++; + + /* bottom right corner */ + + glBegin (GL_TRIANGLE_FAN); + glVertex3f (xc, yc, 0); + for (th = 0; th < M_PI/2 + tick; th += tick) + { + GLfloat x = xc + corner_radius * cos(th); + GLfloat y = yc - corner_radius * sin(th); + glVertex3f (x, y, z); + outline_points[i][0] = x; + outline_points[i][1] = y; + outline_points[i][2] = z; + i++; + } + glEnd(); + + /* bottom right edge */ + outline_points[i][0] = xf; + outline_points[i][1] = yb; + outline_points[i][2] = z; + i++; + + /* arrow triangle */ + glFrontFace(GL_CW); + glBegin (GL_TRIANGLES); + + /* bottom arrow point */ + outline_points[i][0] = xf; + outline_points[i][1] = yb; + outline_points[i][2] = z; + glVertex3f (outline_points[i][0], + outline_points[i][1], + outline_points[i][2]); + i++; + + /* bottom right edge */ + outline_points[i][0] = xf; + outline_points[i][1] = ya; + outline_points[i][2] = z; + glVertex3f (outline_points[i][0], + outline_points[i][1], + outline_points[i][2]); + i++; + + outline_points[i][0] = xe; + outline_points[i][1] = yb; + outline_points[i][2] = z; + glVertex3f (outline_points[i][0], + outline_points[i][1], + outline_points[i][2]); + i++; + glEnd(); + + + /* bottom left corner */ + + glBegin (GL_TRIANGLE_FAN); + glVertex3f (xb, yc, 0); + for (th = M_PI/2; th > -tick; th -= tick) + { + GLfloat x = xb - corner_radius * cos(th); + GLfloat y = yc - corner_radius * sin(th); + glVertex3f (x, y, z); + outline_points[i][0] = x; + outline_points[i][1] = y; + outline_points[i][2] = z; + i++; + } + glEnd(); + + glFrontFace(GL_CCW); + + /* left edge */ + outline_points[i][0] = xa; + outline_points[i][1] = yd; + outline_points[i][2] = z; + i++; + + glFrontFace(GL_CW); + glBegin (GL_QUADS); + /* left box */ + glVertex3f (xa, yd, z); + glVertex3f (xb, yd, z); + glVertex3f (xb, yc, z); + glVertex3f (xa, yc, z); + + /* center box */ + glVertex3f (xb, ye, z); + glVertex3f (xc, ye, z); + glVertex3f (xc, yb, z); + glVertex3f (xb, yb, z); + + /* right box */ + glVertex3f (xc, yd, z); + glVertex3f (xd, yd, z); + glVertex3f (xd, yc, z); + glVertex3f (xc, yc, z); + + glEnd(); + + glLineWidth (2.8); + glColor4fv (fg); + + glBegin (GL_LINE_LOOP); + while (i > 0) + glVertex3fv (outline_points[--i]); + glEnd(); + + glDisable (GL_POLYGON_OFFSET_FILL); +} + + +static void +draw_label (ModeInfo *mi, walker *f, GLfloat y_off, GLfloat scale, + const char *label) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + GLfloat m[4][4]; + + if (scale == 0) return; + + if (!wire) + glDisable (GL_LIGHTING); /* don't light fonts */ + + glPushMatrix(); + + /* First, we translate the origin to the center of the robot. + + Then we retrieve the prevailing modelview matrix, which + includes any rotation, wandering, and user-trackball-rolling + of the scene. + + We set the top 3x3 cells of that matrix to be the identity + matrix. This removes all rotation from the matrix, while + leaving the translation alone. This has the effect of + leaving the prevailing coordinate system perpendicular to + the camera view: were we to draw a square face, it would + be in the plane of the screen. + + Now we translate by `size' toward the viewer -- so that the + origin is *just in front* of the ball. + + Then we draw the label text, allowing the depth buffer to + do its work: that way, labels on atoms will be occluded + properly when other atoms move in front of them. + + This technique (of neutralizing rotation relative to the + observer, after both rotations and translations have been + applied) is known as "billboarding". + */ + + if (f) + glTranslatef(f->y, 0, f->x); /* get matrix */ + + glTranslatef (0, y_off, 0); + + glGetFloatv (GL_MODELVIEW_MATRIX, &m[0][0]); /* load rot. identity */ + m[0][0] = 1; m[1][0] = 0; m[2][0] = 0; + m[0][1] = 0; m[1][1] = 1; m[2][1] = 0; + m[0][2] = 0; m[1][2] = 0; m[2][2] = 1; + glLoadIdentity(); /* reset modelview */ + glMultMatrixf (&m[0][0]); /* replace with ours */ + + glTranslatef (0, 0, 0.1); /* move toward camera */ + + glRotatef (current_device_rotation(), 0, 0, 1); /* right side up */ + + { + XCharStruct e; + int cw, ch, w, h, ascent, descent; + GLfloat s; + GLfloat max = 24; /* max point size to avoid pixellated text */ + + /* Let the font be much larger on iPhone */ + if (mi->xgwa.height <= 640 || mi->xgwa.width <= 640) + max *= 3; + + texture_string_metrics (bp->font_data, "X", &e, &ascent, &descent); + cw = e.width; + ch = ascent + descent; + s = 1.0 / ch; + if (ch > max) s *= max/ch; + + s *= scale; + + texture_string_metrics (bp->font_data, label, &e, 0, 0); + w = e.width; + h = e.ascent + e.descent; + + glScalef (s, s, 1); + glTranslatef (-w/2, h*2/3 + (cw * 7), 0); + + glPushMatrix(); + glTranslatef (0, -h + (ch * 1.2), -0.1); + draw_bubble_box (mi, w, h, + ch * 2, /* corner radius */ + ch * 2.5, /* arrow height */ + w / 2 - cw * 8, /* arrow x */ + bp->text_bd, bp->text_bg); + glPopMatrix(); + + glColor4fv (bp->text_color); + glTranslatef (0, ch/2, 0); + print_texture_string (bp->font_data, label); + } + + glPopMatrix(); + + /* More efficient to always call glEnable() with correct values + than to call glPushAttrib()/glPopAttrib(), since reading + attributes from GL does a round-trip and stalls the pipeline. + */ + if (!wire) + glEnable (GL_LIGHTING); +} + + +static void +fill_words (ModeInfo *mi) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + char *p = bp->words + strlen(bp->words); + char *c; + int lines = 0; + int max = bp->max_lines; + + /* Fewer lines on iPhone */ + if ((mi->xgwa.height <= 640 || mi->xgwa.width <= 640) && + max > 4) + max = 4; + + for (c = bp->words; c < p; c++) + if (*c == '\n') + lines++; + + while (p < bp->words + sizeof(bp->words) - 1 && + lines < max) + { + int c = textclient_getc (bp->tc); + if (c == '\n') + lines++; + if (c > 0) + *p++ = (char) c; + else + break; + } + *p = 0; + + bp->lines = lines; +} + + +static void +bubble (ModeInfo *mi) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + int duration = 200; + GLfloat fade = 0.015; + int chance = (talk_chance <= 0.0 ? 0 : + talk_chance >= 0.99 ? 1 : + (1-talk_chance) * 1000); + GLfloat scale; + char *s0 = strdup (bp->words); + char *s = s0; + int L; + + while (*s == '\n') s++; + L = strlen(s); + while (L > 0 && (s[L-1] == '\n' || s[L-1] == ' ' || s[L-1] == '\t')) + s[--L] = 0; + if (! *s) goto DONE; + +# ifdef DEBUG + if (debug_p) goto DONE; +# endif + + if (chance <= 0) goto DONE; + + if (bp->bubble_tick > 0) + { + bp->bubble_tick--; + if (! bp->bubble_tick) + *bp->words = 0; + } + + if (! bp->bubble_tick) + { + if (!(random() % chance)) + bp->bubble_tick = duration; + else + goto DONE; + } + + scale = (bp->bubble_tick < duration * fade + ? bp->bubble_tick / (duration * fade) + : (bp->bubble_tick > duration * (1 - fade) + ? 1 - ((bp->bubble_tick - duration * (1 - fade)) + / (duration * fade)) + : 1)); + + draw_label (mi, &bp->walkers[0], 1.5, scale, s); + + DONE: + free (s0); +} +#endif /* WORDBUBBLES */ + + + +typedef struct { + int i; + GLdouble d; +} depth_sorter; + +static int +cmp_depth_sorter (const void *aa, const void *bb) +{ + const depth_sorter *a = (depth_sorter *) aa; + const depth_sorter *b = (depth_sorter *) bb; + return (a->d == b->d ? 0 : a->d < b->d ? -1 : 1); +} + + +ENTRYPOINT void +draw_robot (ModeInfo *mi) +{ + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + GLfloat robot_size; + depth_sorter *sorted; + int i; + + if (!bp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + +# ifdef HAVE_MOBILE + glRotatef (current_device_rotation(), 0, 0, 1); /* right side up */ +# endif + + gltrackball_rotate (bp->user_trackball); + + glTranslatef (0, -20, 0); /* Move the horizon down the screen */ + + robot_size = size * 7; + glScalef (robot_size, robot_size, robot_size); + look_at_center (mi); + + glPushMatrix(); + glScalef (1/robot_size, 1/robot_size, 1/robot_size); + glCallList (bp->dlists[GROUND]); + glPopMatrix(); + +# ifdef WORDBUBBLES + fill_words (mi); + bubble (mi); +# endif + +#ifdef DEBUG + if (debug_p) + { + glTranslatef (0, -1.2, 0); + glScalef (3, 3, 3); + glRotatef (-43.5, 0, 0, 1); + glRotatef (-90, 0, 1, 0); + + /* glTranslatef (bp->debug_z, bp->debug_y, 0); */ + + glPushMatrix(); + if (!MI_IS_WIREFRAME(mi)) glDisable(GL_LIGHTING); + if (!MI_IS_WIREFRAME(mi) && do_texture) glDisable(GL_TEXTURE_2D); + + glBegin(GL_LINES); + glVertex3f(-10, 0, 0); glVertex3f(10, 0, 0); + glVertex3f(0, -10, 0); glVertex3f(0, 10, 0); + glVertex3f(0, 0, -10); glVertex3f(0, 0, 10); + glEnd(); + + glTranslatef (-0.5, 0, -0.5); + + glColor3f (1, 0, 0); + glBegin (GL_LINE_LOOP); + glVertex3f (0, 0, 0); glVertex3f (0, 0, 1); + glVertex3f (0, 1, 1); glVertex3f (0, 1, 0); + glEnd(); + + glBegin (GL_LINE_LOOP); + glVertex3f (1, 0, 0); glVertex3f (1, 0, 1); + glVertex3f (1, 1, 1); glVertex3f (1, 1, 0); + glEnd(); + +# if 1 + glColor3f (0.5, 0.5, 0.5); + glFrontFace (GL_CCW); + glBegin (GL_QUADS); + /* glVertex3f (0, 1, 0); glVertex3f (0, 1, 1); */ + /* glVertex3f (1, 1, 1); glVertex3f (1, 1, 0); */ + glVertex3f (0, 0, 0); glVertex3f (0, 0, 1); + glVertex3f (1, 0, 1); glVertex3f (1, 0, 0); + glEnd(); + + glFrontFace (GL_CW); + glBegin (GL_QUADS); + glVertex3f (0, 1, 0); glVertex3f (0, 1, 1); + glVertex3f (1, 1, 1); glVertex3f (1, 1, 0); + glVertex3f (0, 0, 0); glVertex3f (0, 0, 1); + glVertex3f (1, 0, 1); glVertex3f (1, 0, 0); + glEnd(); +# endif + + glColor3f (1, 0, 0); + glBegin (GL_LINES); + glVertex3f (0, 0, 0); glVertex3f (1, 0, 0); + glVertex3f (0, 0, 1); glVertex3f (1, 0, 1); + glVertex3f (0, 1, 0); glVertex3f (1, 1, 0); + glVertex3f (0, 1, 1); glVertex3f (1, 1, 1); + + glVertex3f (0, 0, 0); glVertex3f (1, 0, 1); + glVertex3f (0, 0, 1); glVertex3f (1, 0, 0); + glVertex3f (0, 1, 0); glVertex3f (1, 1, 1); + glVertex3f (0, 1, 1); glVertex3f (1, 1, 0); + glEnd(); + + if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING); + if (!MI_IS_WIREFRAME(mi) && do_texture) glEnable(GL_TEXTURE_2D); + + glPopMatrix(); + } + +# endif /* DEBUG */ + + /* For transparency to work right, we have to draw the robots from + back to front, from the perspective of the observer. So project + the origin of the robot to screen coordinates, and sort that by Z. + */ + sorted = (depth_sorter *) calloc (bp->nwalkers, sizeof (*sorted)); + { + GLdouble m[16], p[16]; + GLint v[4]; + glGetDoublev (GL_MODELVIEW_MATRIX, m); + glGetDoublev (GL_PROJECTION_MATRIX, p); + glGetIntegerv (GL_VIEWPORT, v); + + for (i = 0; i < bp->nwalkers; i++) + { + GLdouble x, y, z; + walker *f = &bp->walkers[i]; + gluProject (f->y, f->z, f->x, m, p, v, &x, &y, &z); + sorted[i].i = i; + sorted[i].d = -z; + } + qsort (sorted, i, sizeof(*sorted), cmp_depth_sorter); + } + + + mi->polygon_count = 0; + for (i = 0; i < bp->nwalkers; i++) + { + int ii = sorted[i].i; + walker *f = &bp->walkers[ii]; + int ticks = 22 * speed * f->speed; + int max = 180; + char tag[1024]; + *tag = 0; + + if (ticks < 1) ticks = 1; + if (ticks > max) ticks = max; + +# ifdef DEBUG + if (debug_p) + sprintf (tag, "%.4f, %.4f, %.4f", + bp->debug_x, bp->debug_y, bp->debug_z); + else + { +# if 1 + /* sprintf (tag + strlen(tag), " %d\n", ii); */ + sprintf (tag + strlen(tag), " %d\n", bp->nwalkers - i - 1); + /* sprintf (tag + strlen(tag), "%.03f\n", sorted[i].d); */ +# endif + } + +# endif /* DEBUG */ + + mi->polygon_count += draw_walker (mi, f, tag); + + for (ii = 0; ii < ticks; ii++) + tick_walker (mi, f); + } + free (sorted); + + glPopMatrix (); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +ENTRYPOINT void +free_robot (ModeInfo *mi) +{ +# ifdef WORDBUBBLES + robot_configuration *bp = &bps[MI_SCREEN(mi)]; + if (bp->tc) + textclient_close (bp->tc); +# endif +} + +XSCREENSAVER_MODULE_2 ("WindupRobot", winduprobot, robot) + +#endif /* USE_GL */ diff --git a/hacks/glx/winduprobot.man b/hacks/glx/winduprobot.man new file mode 100644 index 0000000..5e7f801 --- /dev/null +++ b/hacks/glx/winduprobot.man @@ -0,0 +1,85 @@ +.TH XScreenSaver 1 "" "X Version 11" +.SH NAME +winduprobot - screen saver. +.SH SYNOPSIS +.B winduprobot +[\-display \fIhost:display.screen\fP] +[\-visual \fIvisual\fP] +[\-window] +[\-root] +[\-delay \fInumber\fP] +[\-count \fInumber\fP] +[\-speed \fIratio\fP] +[\-size \fIratio\fP] +[\-opacity \fIratio\fP] +[\-talk \fIratio\fP] +[\-no-texture] +[\-no-fade] +[\-fps] +.SH DESCRIPTION +A swarm of wind-up toy robots wander around the table-top, bumping into +each other. Each robot contains a mechanically accurate gear system inside, +which you can see when the robot's shell occasionally fades to +transparency. +.SH OPTIONS +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-delay \fInumber\fP +Per-frame delay, in microseconds. Default: 20000 (0.02 seconds). +.TP 8 +.B \-count \fInumber\fP +Number of robots. 1 - 100. Default: 25. +.TP 8 +.B \-speed \fIratio\fP +Animation speed. 2.0 means twice as fast, 0.5 means half as fast. +.TP 8 +.B \-size \fIratio\fP +Robot size. 2.0 means twice as big, 0.5 means half as big. +.TP 8 +.B \-opacity \fIratio\fP +Robot skin transparency. 0.0 - 1.0. Default: 1.0. +.TP 8 +.B \-talk \fIratio\fP +How often to occasionally pop up a word bubble with random text in it. +0.0 means never. 1.0 means often. +.TP 8 +.B \-texture | \-no-texture +Whether the robot's surface should be reflective chrome. +.TP 8 +.B \-fade | \-no-fade +Whether to sometimes fade the robot's opacity to show the inner mechanism. +.TP 8 +.B \-fps | \-no-fps +Whether to show a frames-per-second display at the bottom of the screen. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver-text (1) +.SH COPYRIGHT +Copyright \(co 2014 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH AUTHOR +Jamie Zawinski. diff --git a/hacks/glx/xlock-gl-utils.c b/hacks/glx/xlock-gl-utils.c new file mode 100644 index 0000000..36d724c --- /dev/null +++ b/hacks/glx/xlock-gl-utils.c @@ -0,0 +1,230 @@ +/* xlock-gl.c --- xscreensaver compatibility layer for xlockmore GL modules. + * xscreensaver, Copyright (c) 1997-2015 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * This file, along with xlockmore.h, make it possible to compile an xlockmore + * GL module into a standalone program, and thus use it with xscreensaver. + * By Jamie Zawinski on 31-May-97. + */ + +#include +#include "xlockmoreI.h" +#include "texfont.h" + +#ifndef isupper +# define isupper(c) ((c) >= 'A' && (c) <= 'Z') +#endif +#ifndef _tolower +# define _tolower(c) ((c) - 'A' + 'a') +#endif + + +/* Gag -- we use this to turn X errors from glXCreateContext() into + something that will actually make sense to the user. + */ +static XErrorHandler orig_ehandler = 0; +static Bool got_error = 0; + +static int +BadValue_ehandler (Display *dpy, XErrorEvent *error) +{ + if (error->error_code == BadValue) + { + got_error = True; + return 0; + } + else + return orig_ehandler (dpy, error); +} + + +GLXContext * +init_GL(ModeInfo * mi) +{ + Display *dpy = mi->dpy; + Window window = mi->window; + Screen *screen = mi->xgwa.screen; + Visual *visual = mi->xgwa.visual; + XVisualInfo vi_in, *vi_out; + int out_count; + + if (mi->glx_context) { + glXMakeCurrent (dpy, window, mi->glx_context); + return &mi->glx_context; + } + +# ifdef HAVE_JWZGLES + jwzgles_make_current(jwzgles_make_state(state)); +# endif + + vi_in.screen = screen_number (screen); + vi_in.visualid = XVisualIDFromVisual (visual); + vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask, + &vi_in, &out_count); + if (! vi_out) abort (); + + { + XSync (dpy, False); + orig_ehandler = XSetErrorHandler (BadValue_ehandler); + mi->glx_context = glXCreateContext (dpy, vi_out, 0, GL_TRUE); + XSync (dpy, False); + XSetErrorHandler (orig_ehandler); + if (got_error) + mi->glx_context = 0; + } + + XFree((char *) vi_out); + + if (!mi->glx_context) + { + fprintf(stderr, "%s: couldn't create GL context for visual 0x%x.\n", + progname, (unsigned int) XVisualIDFromVisual (visual)); + exit(1); + } + + glXMakeCurrent (dpy, window, mi->glx_context); + + { + GLboolean rgba_mode = 0; + glGetBooleanv(GL_RGBA_MODE, &rgba_mode); + if (!rgba_mode) + { + glIndexi (WhitePixelOfScreen (screen)); + glClearIndex (BlackPixelOfScreen (screen)); + } + } + + + /* jwz: the doc for glDrawBuffer says "The initial value is GL_FRONT + for single-buffered contexts, and GL_BACK for double-buffered + contexts." However, I find that this is not always the case, + at least with Mesa 3.4.2 -- sometimes the default seems to be + GL_FRONT even when glGet(GL_DOUBLEBUFFER) is true. So, let's + make sure. + + Oh, hmm -- maybe this only happens when we are re-using the + xscreensaver window, and the previous GL hack happened to die with + the other buffer selected? I'm not sure. Anyway, this fixes it. + */ + { + GLboolean d = False; + glGetBooleanv (GL_DOUBLEBUFFER, &d); + if (d) + glDrawBuffer (GL_BACK); + else + glDrawBuffer (GL_FRONT); + } + + /* Sometimes glDrawBuffer() throws "invalid op". Dunno why. Ignore. */ + clear_gl_error (); + + /* Process the -background argument. */ + { + char *s = get_string_resource(mi->dpy, "background", "Background"); + XColor c = { 0, }; + if (! XParseColor (dpy, mi->xgwa.colormap, s, &c)) + fprintf (stderr, "%s: can't parse color %s; using black.\n", + progname, s); + glClearColor (c.red / 65535.0, + c.green / 65535.0, + c.blue / 65535.0, + 1.0); + } + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + /* GLXContext is already a pointer type. + Why this function returns a pointer to a pointer, I have no idea... + */ + return &mi->glx_context; +} + + + +/* clear away any lingering error codes */ +void +clear_gl_error (void) +{ + while (glGetError() != GL_NO_ERROR) + ; +} + +/* report a GL error. */ +void +check_gl_error (const char *type) +{ + char buf[100]; + GLenum i; + const char *e; + switch ((i = glGetError())) { + case GL_NO_ERROR: return; + case GL_INVALID_ENUM: e = "invalid enum"; break; + case GL_INVALID_VALUE: e = "invalid value"; break; + case GL_INVALID_OPERATION: e = "invalid operation"; break; + case GL_STACK_OVERFLOW: e = "stack overflow"; break; + case GL_STACK_UNDERFLOW: e = "stack underflow"; break; + case GL_OUT_OF_MEMORY: e = "out of memory"; break; +#ifdef GL_INVALID_FRAMEBUFFER_OPERATION + case GL_INVALID_FRAMEBUFFER_OPERATION: + e = "invalid framebuffer operation"; + break; +#endif +#ifdef GL_TABLE_TOO_LARGE_EXT + case GL_TABLE_TOO_LARGE_EXT: e = "table too large"; break; +#endif +#ifdef GL_TEXTURE_TOO_LARGE_EXT + case GL_TEXTURE_TOO_LARGE_EXT: e = "texture too large"; break; +#endif + default: + e = buf; sprintf (buf, "unknown error %d", (int) i); break; + } + fprintf (stderr, "%s: %s error: %s\n", progname, type, e); + exit (1); +} + + +/* Callback in xscreensaver_function_table, via xlockmore.c. + */ +Visual * +xlockmore_pick_gl_visual (Screen *screen) +{ + /* pick the "best" visual by interrogating the GL library instead of + by asking Xlib. GL knows better. + */ + Visual *v = 0; + Display *dpy = DisplayOfScreen (screen); + char *string = get_string_resource (dpy, "visualID", "VisualID"); + char *s; + + if (string) + for (s = string; *s; s++) + if (isupper (*s)) *s = _tolower (*s); + + if (!string || !*string || + !strcmp (string, "gl") || + !strcmp (string, "best") || + !strcmp (string, "color") || + !strcmp (string, "default")) + v = get_gl_visual (screen); /* from ../utils/visual-gl.c */ + + if (string) + free (string); + + return v; +} + + +/* Callback in xscreensaver_function_table, via xlockmore.c. + */ +Bool +xlockmore_validate_gl_visual (Screen *screen, const char *name, Visual *visual) +{ + return validate_gl_visual (stderr, screen, name, visual); +} diff --git a/hacks/glx/xscreensaver-gl-helper.c b/hacks/glx/xscreensaver-gl-helper.c new file mode 100644 index 0000000..6da8a7f --- /dev/null +++ b/hacks/glx/xscreensaver-gl-helper.c @@ -0,0 +1,74 @@ +/* xscreensaver, Copyright (c) 2000, 2002 by Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* xscreensaver-gl-helper -- prints the ID of the best visual to use + for GL programs on stdout. + */ + +#include "utils.h" +#include "visual.h" + +#include +#include + +char *progname = 0; +char *progclass = "XScreenSaver"; + +int +main (int argc, char **argv) +{ + Display *dpy; + Screen *screen; + Visual *visual; + char *d = getenv ("DISPLAY"); + int i; + + progname = argv[0]; + for (i = 1; i < argc; i++) + { + if (argv[i][0] == '-' && argv[i][1] == '-') argv[i]++; + if (strlen(argv[i]) >= 2 && + !strncmp ("-display", argv[i], strlen(argv[i]))) + { + if (i == argc-1) goto LOSE; + d = argv[i+1]; + i++; + } + else + { + LOSE: + fprintf (stderr, "usage: %s [ -display host:dpy.screen ]\n", + progname); + fprintf (stderr, + "This program prints out the ID of the best " + "X visual for GL programs to use.\n"); + exit (1); + } + } + + dpy = XOpenDisplay (d); + if (!dpy) + { + fprintf (stderr, "%s: couldn't open display %s\n", progname, + (d ? d : "(null)")); + exit (1); + } + + screen = DefaultScreenOfDisplay (dpy); + visual = get_gl_visual (screen); + + if (visual) + printf ("0x%x\n", (unsigned int) XVisualIDFromVisual (visual)); + else + printf ("none\n"); + + exit (0); +} diff --git a/hacks/glx/xscreensaver-gl-helper.man b/hacks/glx/xscreensaver-gl-helper.man new file mode 100644 index 0000000..7c40eb3 --- /dev/null +++ b/hacks/glx/xscreensaver-gl-helper.man @@ -0,0 +1,33 @@ +.TH XScreenSaver 1 "5-Nov-00" "X Version 11" +.SH NAME +xscreensaver-gl-helper - figure out which X visual to use for GL programs +.SH SYNOPSIS +.B xscreensaver-gl-helper +[\-display \fIhost:display.screen\fP] +.SH DESCRIPTION +This program prints the ID of the visual that should be used for proper +operation of OpenGL programs. This program only exists so that the +.BR xscreensaver (1) +daemon does not need to link against the OpenGL library. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host, display, and screen number. +.SH SEE ALSO +.BR X (1), +.BR xdpyinfo (1), +.BR xglinfo (1), +.BR glxinfo (1), +.BR glxdpyinfo (1), +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-command (1) +.SH COPYRIGHT +Copyright \(co 2000 by Jamie Zawinski. Permission to use, copy, modify, +distribute, and sell this software and its documentation for any purpose is +hereby granted without fee, provided that the above copyright notice appear +in all copies and that both that copyright notice and this permission notice +appear in supporting documentation. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. diff --git a/hacks/glx/zalgo.txt b/hacks/glx/zalgo.txt new file mode 100644 index 0000000..ac6780b --- /dev/null +++ b/hacks/glx/zalgo.txt @@ -0,0 +1,30 @@ + + +Man 👨 +Blackula 🧛🏿 +Black male teacher 👨🏿‍🏫 +Female runner 🏃‍♀ +Woman astronaut 🏃‍🚀 +Multi-person group 👩🏿‍👨🏻‍👦🏽‍👧🏿 + + +͠P +͠P͠P͠P͠ +P͠ +P͠ + +💩💩💩💩💩💩💩💩💩💩💩💩💩💩 + +y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆ +←Deleted Page +H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ + + + +Rege̿̔̉x-based HTML parsers are the cancer that is killing StackOverflow it is too late it is too late we cannot be saved the trangession of a chi͡ld ensures regex will consume all living tissue (except for HTML which it cannot, as previously prophesied) dear lord help us how can anyone survive this scourge using regex to parse HTML has doomed humanity to an eternity of dread torture and security holes using regex as a tool to process HTML establishes a breach between this world and the dread realm of c͒ͪo͛ͫrrupt entities (like SGML entities, but more corrupt) a mere glimpse of the world of reg​ex parsers for HTML will ins​tantly transport a programmer's consciousness into a world of ceaseless screaming, he comes, the pestilent slithy regex-infection wil​l devour your HT​ML parser, application and existence for all time like Visual Basic only worse he comes he comes do not fi​ght he com̡e̶s, ̕h̵i​s un̨ho͞ly radiańcé destro҉ying all enli̍̈́̂̈́ghtenment, HTML tags lea͠ki̧n͘g fr̶ǫm ̡yo​͟ur eye͢s̸ ̛l̕ik͏e liq​uid pain, the song of re̸gular exp​ression parsing will exti​nguish the voices of mor​tal man from the sp​here I can see it can you see ̲͚̖͔̙î̩́t̲͎̩̱͔́̋̀ it is beautiful t​he final snuffing of the lie​s of Man ALL IS LOŚ͖̩͇̗̪̏̈́T ALL I​S LOST the pon̷y he comes he c̶̮omes he comes the ich​or permeates all MY FACE MY FACE ᵒh god no NO NOO̼O​O NΘ stop the an​*̶͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨe̠̅s ͎a̧͈͖r̽̾̈́͒͑e n​ot rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ + + + + + + -- cgit v1.2.3-55-g7522